From ea3cc4ea0bab001e52c5504ba19a5a347c5106a5 Mon Sep 17 00:00:00 2001 From: Szabolcs Nagy Date: Tue, 23 Apr 2024 09:21:08 -0700 Subject: [PATCH 001/123] math: fix fma(x,y,0) when x*y rounds to -0 if x!=0, y!=0, z==0 then fma(x,y,z) == x*y in all rounding modes, while adding z can ruin the sign of 0 if x*y rounds to -0. --- libc/tinymath/fma.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libc/tinymath/fma.c b/libc/tinymath/fma.c index 308e31a77..7ea37c6d6 100644 --- a/libc/tinymath/fma.c +++ b/libc/tinymath/fma.c @@ -145,7 +145,7 @@ double fma(double x, double y, double z) return x*y + z; if (nz.e >= ZEROINFNAN) { if (nz.e > ZEROINFNAN) /* z==0 */ - return x*y + z; + return x*y; return z; } From 223eb358c45fde85d1c8a3bd1584aa36c4f71dce Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Tue, 23 Apr 2024 09:29:28 -0700 Subject: [PATCH 002/123] Import compiler warning fix from Musl --- libc/tinymath/sqrtl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libc/tinymath/sqrtl.c b/libc/tinymath/sqrtl.c index fa3c2c41c..36384adbb 100644 --- a/libc/tinymath/sqrtl.c +++ b/libc/tinymath/sqrtl.c @@ -233,7 +233,7 @@ long double sqrtl(long double x) top = (top + 0x3fff) >> 1; /* r ~ 1/sqrt(m) */ - static const uint64_t three = 0xc0000000; + const uint64_t three = 0xc0000000; uint64_t r, s, d, u, i; i = (ix.hi >> 42) % 128; r = (uint32_t)__rsqrt_tab[i] << 16; @@ -255,7 +255,7 @@ long double sqrtl(long double x) r = mul64(u, r) << 1; /* |r sqrt(m) - 1| < 0x1.c001p-59, switch to 128bit */ - static const u128 threel = {.hi=three<<32, .lo=0}; + const u128 threel = {.hi=three<<32, .lo=0}; u128 rl, sl, dl, ul; rl.hi = r; rl.lo = 0; From 9e848abad9bba92e653bc6d7ac56661c236354a0 Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Tue, 23 Apr 2024 09:29:46 -0700 Subject: [PATCH 003/123] Add missing Musl license headers --- third_party/musl/catclose.c | 27 +++++++++++++++++++++++++++ third_party/musl/catgets.c | 27 +++++++++++++++++++++++++++ third_party/musl/catopen.c | 27 +++++++++++++++++++++++++++ 3 files changed, 81 insertions(+) diff --git a/third_party/musl/catclose.c b/third_party/musl/catclose.c index 54e24dd21..f3f3b73f1 100644 --- a/third_party/musl/catclose.c +++ b/third_party/musl/catclose.c @@ -1,3 +1,30 @@ +/*-*- mode:c;indent-tabs-mode:t;c-basic-offset:8;tab-width:8;coding:utf-8 -*-│ +│ vi: set noet ft=c ts=8 sw=8 fenc=utf-8 :vi │ +╚──────────────────────────────────────────────────────────────────────────────╝ +│ │ +│ Musl Libc │ +│ Copyright © 2005-2014 Rich Felker, et al. │ +│ │ +│ Permission is hereby granted, free of charge, to any person obtaining │ +│ a copy of this software and associated documentation files (the │ +│ "Software"), to deal in the Software without restriction, including │ +│ without limitation the rights to use, copy, modify, merge, publish, │ +│ distribute, sublicense, and/or sell copies of the Software, and to │ +│ permit persons to whom the Software is furnished to do so, subject to │ +│ the following conditions: │ +│ │ +│ The above copyright notice and this permission notice shall be │ +│ included in all copies or substantial portions of the Software. │ +│ │ +│ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, │ +│ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF │ +│ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. │ +│ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY │ +│ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, │ +│ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE │ +│ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. │ +│ │ +╚─────────────────────────────────────────────────────────────────────────────*/ #define _BSD_SOURCE #include #include diff --git a/third_party/musl/catgets.c b/third_party/musl/catgets.c index 71c31c1d6..8921ffc4c 100644 --- a/third_party/musl/catgets.c +++ b/third_party/musl/catgets.c @@ -1,3 +1,30 @@ +/*-*- mode:c;indent-tabs-mode:t;c-basic-offset:8;tab-width:8;coding:utf-8 -*-│ +│ vi: set noet ft=c ts=8 sw=8 fenc=utf-8 :vi │ +╚──────────────────────────────────────────────────────────────────────────────╝ +│ │ +│ Musl Libc │ +│ Copyright © 2005-2014 Rich Felker, et al. │ +│ │ +│ Permission is hereby granted, free of charge, to any person obtaining │ +│ a copy of this software and associated documentation files (the │ +│ "Software"), to deal in the Software without restriction, including │ +│ without limitation the rights to use, copy, modify, merge, publish, │ +│ distribute, sublicense, and/or sell copies of the Software, and to │ +│ permit persons to whom the Software is furnished to do so, subject to │ +│ the following conditions: │ +│ │ +│ The above copyright notice and this permission notice shall be │ +│ included in all copies or substantial portions of the Software. │ +│ │ +│ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, │ +│ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF │ +│ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. │ +│ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY │ +│ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, │ +│ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE │ +│ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. │ +│ │ +╚─────────────────────────────────────────────────────────────────────────────*/ #define _BSD_SOURCE #include #include diff --git a/third_party/musl/catopen.c b/third_party/musl/catopen.c index fc73e95ed..8bcaff432 100644 --- a/third_party/musl/catopen.c +++ b/third_party/musl/catopen.c @@ -1,3 +1,30 @@ +/*-*- mode:c;indent-tabs-mode:t;c-basic-offset:8;tab-width:8;coding:utf-8 -*-│ +│ vi: set noet ft=c ts=8 sw=8 fenc=utf-8 :vi │ +╚──────────────────────────────────────────────────────────────────────────────╝ +│ │ +│ Musl Libc │ +│ Copyright © 2005-2014 Rich Felker, et al. │ +│ │ +│ Permission is hereby granted, free of charge, to any person obtaining │ +│ a copy of this software and associated documentation files (the │ +│ "Software"), to deal in the Software without restriction, including │ +│ without limitation the rights to use, copy, modify, merge, publish, │ +│ distribute, sublicense, and/or sell copies of the Software, and to │ +│ permit persons to whom the Software is furnished to do so, subject to │ +│ the following conditions: │ +│ │ +│ The above copyright notice and this permission notice shall be │ +│ included in all copies or substantial portions of the Software. │ +│ │ +│ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, │ +│ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF │ +│ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. │ +│ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY │ +│ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, │ +│ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE │ +│ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. │ +│ │ +╚─────────────────────────────────────────────────────────────────────────────*/ #define _BSD_SOURCE #include #include From 1a6b4ab62713e0d1ff87db448ed052dcfb35d9a5 Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Tue, 23 Apr 2024 09:29:56 -0700 Subject: [PATCH 004/123] Import mntent bug fixes from Musl Libc f314e133929b6379eccc632bef32eaebb66a7335 Author: Rich Felker Date: Thu Nov 16 12:55:21 2023 -0500 mntent: fields are delimited only by tabs or spaces, not general whitespace this matters because the kernel-provided mtab only escapes tabs, spaces, newlines, and backslashes. it leaves carriage returns, form feeds, and vertical tabs literal. commit ee1d39bc1573c1ae49ee6b658938b56bbef95a6c Author: q66 Date: Thu Nov 9 20:48:44 2023 +0100 mntent: unescape octal sequences As entries in mtab are delimited by spaces, whitespace characters are escaped as octal sequences. When reading them out, we have to unescape these sequences to get the proper string. --- third_party/musl/mntent.c | 46 ++++++++++++++++++++++++++++++++++----- 1 file changed, 41 insertions(+), 5 deletions(-) diff --git a/third_party/musl/mntent.c b/third_party/musl/mntent.c index 275ba586d..0062076be 100644 --- a/third_party/musl/mntent.c +++ b/third_party/musl/mntent.c @@ -49,6 +49,42 @@ int endmntent(FILE *f) return 1; } +static char *unescape_ent(char *beg) +{ + char *dest = beg; + const char *src = beg; + while (*src) { + const char *val; + unsigned char cval = 0; + if (*src != '\\') { + *dest++ = *src++; + continue; + } + if (src[1] == '\\') { + ++src; + *dest++ = *src++; + continue; + } + val = src + 1; + for (int i = 0; i < 3; ++i) { + if (*val >= '0' && *val <= '7') { + cval <<= 3; + cval += *val++ - '0'; + } else { + break; + } + } + if (cval) { + *dest++ = cval; + src = val; + } else { + *dest++ = *src++; + } + } + *dest = 0; + return beg; +} + struct mntent *getmntent_r(FILE *f, struct mntent *mnt, char *linebuf, int buflen) { int n[8], use_internal = (linebuf == SENTINEL); @@ -74,7 +110,7 @@ struct mntent *getmntent_r(FILE *f, struct mntent *mnt, char *linebuf, int bufle len = strlen(linebuf); if (len > INT_MAX) continue; for (i = 0; i < sizeof n / sizeof *n; i++) n[i] = len; - sscanf(linebuf, " %n%*s%n %n%*s%n %n%*s%n %n%*s%n %d %d", + sscanf(linebuf, " %n%*[^ \t]%n %n%*[^ \t]%n %n%*[^ \t]%n %n%*[^ \t]%n %d %d", n, n+1, n+2, n+3, n+4, n+5, n+6, n+7, &mnt->mnt_freq, &mnt->mnt_passno); } while (linebuf[n[0]] == '#' || n[1]==len); @@ -84,10 +120,10 @@ struct mntent *getmntent_r(FILE *f, struct mntent *mnt, char *linebuf, int bufle linebuf[n[5]] = 0; linebuf[n[7]] = 0; - mnt->mnt_fsname = linebuf+n[0]; - mnt->mnt_dir = linebuf+n[2]; - mnt->mnt_type = linebuf+n[4]; - mnt->mnt_opts = linebuf+n[6]; + mnt->mnt_fsname = unescape_ent(linebuf+n[0]); + mnt->mnt_dir = unescape_ent(linebuf+n[2]); + mnt->mnt_type = unescape_ent(linebuf+n[4]); + mnt->mnt_opts = unescape_ent(linebuf+n[6]); return mnt; } From 6992d8c19554d3e960aceacd626c238ab5fadedc Mon Sep 17 00:00:00 2001 From: Quentin Rameau Date: Tue, 23 Apr 2024 09:32:47 -0700 Subject: [PATCH 005/123] Remove arbitrary limit from DNS result parsing The name resolution would abort when getting more than 63 records per request, due to what seems to be a left-over from the original code. This check was non-breaking but spurious prior to TCP fallback support, since any 512-byte packet with more than 63 records was necessarily malformed. But now, it wrongly rejects valid results. Reported by Daniel Stefanik in Alpine Linux aports issue 15320. --- third_party/musl/dns_parse.c | 1 - 1 file changed, 1 deletion(-) diff --git a/third_party/musl/dns_parse.c b/third_party/musl/dns_parse.c index 5dc3e1f1d..924d85a2d 100644 --- a/third_party/musl/dns_parse.c +++ b/third_party/musl/dns_parse.c @@ -40,7 +40,6 @@ int __dns_parse(const unsigned char *r, int rlen, p = r+12; qdcount = r[4]*256 + r[5]; ancount = r[6]*256 + r[7]; - if (qdcount+ancount > 64) return -1; while (qdcount--) { while (p-r < rlen && *p-1U < 127) p++; if (p>r+rlen-6) From f8c01862214fcf1475000d11128991e29cb3ba98 Mon Sep 17 00:00:00 2001 From: Alexey Izbyshev Date: Tue, 23 Apr 2024 09:35:30 -0700 Subject: [PATCH 006/123] Fix calling __dns_parse with potentially too large rlen __res_send returns the full answer length even if it didn't fit the buffer, but __dns_parse expects the length of the filled part of the buffer. Analogous to Musl commit 77327ed064bd57b0e1865cd0e0364057ff4a53b4 which fixed the only other __dns_parse call site. --- third_party/musl/getnameinfo.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/third_party/musl/getnameinfo.c b/third_party/musl/getnameinfo.c index ffced1dd3..173822278 100644 --- a/third_party/musl/getnameinfo.c +++ b/third_party/musl/getnameinfo.c @@ -206,8 +206,10 @@ int getnameinfo(const struct sockaddr *restrict sa, socklen_t sl, query[3] = 0; /* don't need AD flag */ int rlen = __res_send(query, qlen, reply, sizeof reply); buf[0] = 0; - if (rlen > 0) + if (rlen > 0) { + if (rlen > sizeof reply) rlen = sizeof reply; __dns_parse(reply, rlen, dns_parse_callback, buf); + } } if (!*buf) { if (flags & NI_NAMEREQD) return EAI_NONAME; From cec4c04aa1292a672c78c0235983824f68f470aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C5=8Dshin?= Date: Tue, 23 Apr 2024 19:07:19 -0700 Subject: [PATCH 007/123] Remove .com logic from GetProgramExecutableName (#1134) The `com` parameter to `TryPath` was always 1, so there was no reason to have it. This patch changes the logic to be as though `com` was 0, which provides a possible answer to the TODO question -- the answer is no. If we never care about appending `.com`, then `CopyWithCwd` doesn't need to return anything beyond a boolean success value. --- libc/calls/getprogramexecutablename.greg.c | 30 ++++++++-------------- 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/libc/calls/getprogramexecutablename.greg.c b/libc/calls/getprogramexecutablename.greg.c index 96fe671d8..02bf1472f 100644 --- a/libc/calls/getprogramexecutablename.greg.c +++ b/libc/calls/getprogramexecutablename.greg.c @@ -93,7 +93,7 @@ static int OldApeLoader(char *s) { (!strncmp((b = basename(s)), ".ape-", 5) && AllNumDot(b + 5)); } -static char *CopyWithCwd(const char *q, char *p, char *e) { +static int CopyWithCwd(const char *q, char *p, char *e) { char c; if (*q != '/') { if (q[0] == '.' && q[1] == '/') { @@ -109,29 +109,19 @@ static char *CopyWithCwd(const char *q, char *p, char *e) { if (p + 1 /* nul */ < e) { *p++ = c; } else { - return NULL; + return 0; } } *p = 0; - return p; + return 1; } -// if q exists then turn it into an absolute path. we also try adding -// a .com suffix since the ape auto-appends it when resolving -// -// TODO(jart): is this still relevant? -static int TryPath(const char *q, int com) { - char *p; - if (!(p = CopyWithCwd(q, g_prog.u.buf, - g_prog.u.buf + sizeof(g_prog.u.buf) - com * 4))) { +// if q exists then turn it into an absolute path. +static int TryPath(const char *q) { + if (!CopyWithCwd(q, g_prog.u.buf, g_prog.u.buf + sizeof(g_prog.u.buf))) { return 0; } - if (!sys_faccessat(AT_FDCWD, g_prog.u.buf, F_OK, 0)) return 1; - if (!com) return 0; - p = WRITE32LE(p, READ32LE(".com")); - *p = 0; - if (!sys_faccessat(AT_FDCWD, g_prog.u.buf, F_OK, 0)) return 1; - return 0; + return !sys_faccessat(AT_FDCWD, g_prog.u.buf, F_OK, 0); } // if the loader passed a relative path, prepend cwd to it. @@ -221,13 +211,13 @@ static inline void InitProgramExecutableNameImpl(void) { } } - // don't trust argument parsing if set-id. + // don't trust argv or envp if set-id. if (issetugid()) { goto UseEmpty; } - // try argv[0], then argv[0].com, then $_, then $_.com. - if (TryPath(__argv[0], 1) || TryPath(__getenv(__envp, "_").s, 1)) { + // try argv[0], then then $_. + if (TryPath(__argv[0]) || TryPath(__getenv(__envp, "_").s)) { goto UseBuf; } From 342d0c81e5c16e6a4a01e9ce3c8fa6759e7148da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C5=8Dshin?= Date: Wed, 24 Apr 2024 13:56:37 -0700 Subject: [PATCH 008/123] vim spells the c++ filetype 'cpp' --- test/libc/thread/tls_dtor_test.cc | 2 +- test/libcxx/openmp_test.cc | 2 +- test/libcxx/trivial_test.cc | 2 +- third_party/double-conversion/wrapper.cc | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/test/libc/thread/tls_dtor_test.cc b/test/libc/thread/tls_dtor_test.cc index d27a38936..c78486051 100644 --- a/test/libc/thread/tls_dtor_test.cc +++ b/test/libc/thread/tls_dtor_test.cc @@ -1,5 +1,5 @@ /*-*-mode:c++;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8-*-│ -│ vi: set et ft=c++ ts=2 sts=2 sw=2 fenc=utf-8 :vi │ +│ vi: set et ft=cpp ts=2 sts=2 sw=2 fenc=utf-8 :vi │ ╞══════════════════════════════════════════════════════════════════════════════╡ │ Copyright 2024 Justine Alexandra Roberts Tunney │ │ │ diff --git a/test/libcxx/openmp_test.cc b/test/libcxx/openmp_test.cc index ecea814ea..160b63629 100644 --- a/test/libcxx/openmp_test.cc +++ b/test/libcxx/openmp_test.cc @@ -1,5 +1,5 @@ /*-*-mode:c++;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8-*-│ -│ vi: set et ft=c++ ts=2 sts=2 sw=2 fenc=utf-8 :vi │ +│ vi: set et ft=cpp ts=2 sts=2 sw=2 fenc=utf-8 :vi │ ╞══════════════════════════════════════════════════════════════════════════════╡ │ Copyright 2024 Justine Alexandra Roberts Tunney │ │ │ diff --git a/test/libcxx/trivial_test.cc b/test/libcxx/trivial_test.cc index 35958df42..b34299548 100644 --- a/test/libcxx/trivial_test.cc +++ b/test/libcxx/trivial_test.cc @@ -1,5 +1,5 @@ /*-*-mode:c++;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8-*-│ -│ vi: set et ft=c++ ts=2 sts=2 sw=2 fenc=utf-8 :vi │ +│ vi: set et ft=cpp ts=2 sts=2 sw=2 fenc=utf-8 :vi │ ╞══════════════════════════════════════════════════════════════════════════════╡ │ Copyright 2024 Justine Alexandra Roberts Tunney │ │ │ diff --git a/third_party/double-conversion/wrapper.cc b/third_party/double-conversion/wrapper.cc index be64a747b..8e737d3f5 100644 --- a/third_party/double-conversion/wrapper.cc +++ b/third_party/double-conversion/wrapper.cc @@ -1,5 +1,5 @@ /*-*-mode:c++;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8-*-│ -│ vi: set et ft=c++ ts=2 sts=2 sw=2 fenc=utf-8 :vi │ +│ vi: set et ft=cpp ts=2 sts=2 sw=2 fenc=utf-8 :vi │ ╞══════════════════════════════════════════════════════════════════════════════╡ │ Copyright 2022 Justine Alexandra Roberts Tunney │ │ │ From 6e6fc38935054db0534d5af4fb99c6193305b946 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C5=8Dshin?= Date: Thu, 25 Apr 2024 10:38:00 -0700 Subject: [PATCH 009/123] Apply clang-format update to repo (#1154) Commit bc6c183 introduced a bunch of discrepancies between what files look like in the repo and what clang-format says they should look like. However, there were already a few discrepancies prior to that. Most of these discrepancies seemed to be unintentional, but a few of them were load-bearing (e.g., a #include that violated header ordering needing something to have been #defined by a 'later' #include.) I opted to take what I hope is a relatively smooth-brained approach: I reverted the .clang-format change, ran clang-format on the whole repo, reapplied the .clang-format change, reran clang-format again, and then reverted the commit that contained the first run. Thus the full effect of this PR should only be to apply the changed formatting rules to the repo, and from skimming the results, this seems to be the case. My work can be checked by applying the short, manual commits, and then rerunning the command listed in the autogenerated commits (those whose messages I have prefixed auto:) and seeing if your results agree. It might be that the other diffs should be fixed at some point but I'm leaving that aside for now. fd '\.c(c|pp)?$' --print0| xargs -0 clang-format -i --- ape/ape-m1.c | 69 +- ape/loader.c | 90 +- build/sha256sum.c | 36 +- dsp/core/alaw.c | 6 +- dsp/core/mulaw.c | 6 +- dsp/core/scalevolume.c | 6 +- dsp/core/unalaw.c | 6 +- dsp/mpeg/macroblock.c | 3 +- dsp/scale/gyarados.c | 15 +- dsp/tty/hidecursor.c | 6 +- dsp/tty/setbgfg16.c | 12 +- dsp/tty/ttyraster.c | 6 +- dsp/tty/ttyraw.c | 12 +- examples/greenbean.c | 21 +- examples/kilo.c | 138 +- examples/nesemu1.cc | 194 ++- examples/picol.c | 93 +- examples/rusage.c | 3 +- examples/spawn_bench.c | 6 +- examples/stackexplorer.c | 15 +- examples/ttyinfo.c | 3 +- examples/uname.c | 3 +- examples/unbourne.c | 1469 +++++++++++------ examples/walk.c | 6 +- examples/wall.c | 12 +- libc/calls/_ptsname.c | 3 +- libc/calls/cfspeed.c | 6 +- libc/calls/chdir-nt.c | 9 +- libc/calls/checksignal.c | 15 +- libc/calls/clktck.c | 3 +- libc/calls/clock_gettime-mono.c | 3 +- libc/calls/clock_gettime-xnu.c | 9 +- libc/calls/clock_nanosleep-cosmo.c | 3 +- libc/calls/clock_nanosleep-nt.c | 12 +- libc/calls/clock_nanosleep-xnu.c | 3 +- libc/calls/close-nt.c | 3 +- libc/calls/close.c | 6 +- libc/calls/copy.c | 9 +- libc/calls/createfileflags.c | 21 +- libc/calls/createpipename.c | 3 +- libc/calls/dup2.c | 6 +- libc/calls/dup3.c | 3 +- libc/calls/faccessat-nt.c | 3 +- libc/calls/faccessat.c | 3 +- libc/calls/fadvise-nt.c | 6 +- libc/calls/fchdir-nt.c | 3 +- libc/calls/fchmod-nt.c | 6 +- libc/calls/fchmodat-nt.c | 3 +- libc/calls/fcntl-nt.c | 12 +- libc/calls/fdatasync-nt.c | 18 +- libc/calls/flock-nt.c | 3 +- libc/calls/fstat-metal.c | 3 +- libc/calls/fstat-nt.c | 6 +- libc/calls/fstatat-nt.c | 3 +- libc/calls/fstatat.c | 3 +- libc/calls/fstatfs-nt.c | 3 +- libc/calls/ftok.c | 3 +- libc/calls/getcpu.c | 3 +- libc/calls/getcwd.greg.c | 9 +- libc/calls/getloadavg.c | 3 +- libc/calls/getrandom-metal.c | 3 +- libc/calls/getrandom.c | 12 +- libc/calls/getresgid.c | 15 +- libc/calls/getresuid.c | 15 +- libc/calls/getsystemdirectorypath.c | 3 +- libc/calls/getuid-nt.c | 3 +- libc/calls/ioctl.c | 45 +- libc/calls/isdirectory-nt.c | 3 +- libc/calls/isexecutable.c | 3 +- libc/calls/islinux.c | 3 +- libc/calls/isregularfile-nt.c | 3 +- libc/calls/issymlink-nt.c | 3 +- libc/calls/makedirs.c | 39 +- libc/calls/mkdirat-nt.c | 6 +- libc/calls/mknod.c | 12 +- libc/calls/mkntcmdline.c | 9 +- libc/calls/mkntenvblock.c | 24 +- libc/calls/mkntpath.c | 9 +- libc/calls/mkntpathat.c | 15 +- libc/calls/mount.c | 3 +- libc/calls/mremap-sysv.greg.c | 6 +- libc/calls/ntaccesscheck.c | 3 +- libc/calls/ntspawn.c | 3 +- libc/calls/open-nt.c | 6 +- libc/calls/openat-metal.c | 18 +- libc/calls/openpty.c | 12 +- libc/calls/park.c | 6 +- libc/calls/pause-nt.c | 3 +- libc/calls/perror.c | 3 +- libc/calls/pipe2-sysv.c | 3 +- libc/calls/pledge-linux.c | 18 +- libc/calls/pledge.c | 21 +- libc/calls/poll-metal.c | 3 +- libc/calls/poll-nt.c | 3 +- libc/calls/posix_openpt.c | 3 +- libc/calls/ppoll.c | 6 +- libc/calls/preadv.c | 3 +- libc/calls/printfds.c | 9 +- libc/calls/program_invocation_short_name.c | 3 +- libc/calls/ptrace.c | 6 +- libc/calls/pwritev.c | 3 +- libc/calls/rdrand.c | 3 +- libc/calls/read-nt.c | 63 +- libc/calls/readansi.c | 6 +- libc/calls/readlinkat-nt.c | 6 +- libc/calls/readv-metal.c | 6 +- libc/calls/readwrite-nt.c | 6 +- libc/calls/releasefd.c | 3 +- libc/calls/remove.c | 6 +- libc/calls/restoretty.c | 3 +- libc/calls/sched_getcpu.c | 3 +- libc/calls/sedebug.c | 3 +- libc/calls/select-nt.c | 21 +- libc/calls/sig.c | 15 +- libc/calls/sigaction.c | 15 +- libc/calls/sigaltstack.c | 18 +- libc/calls/sigsuspend.c | 3 +- libc/calls/sigwait.c | 3 +- libc/calls/sleep.c | 3 +- libc/calls/statfs-nt.c | 3 +- libc/calls/symlinkat-nt.c | 15 +- libc/calls/sync-nt.c | 3 +- libc/calls/sysinfo.c | 9 +- libc/calls/tcdrain.c | 3 +- libc/calls/tcflow.c | 15 +- libc/calls/tcflush.c | 9 +- libc/calls/tcgetattr-nt.c | 6 +- libc/calls/tcgetwinsize-nt.c | 3 +- libc/calls/tcsendbreak.c | 12 +- libc/calls/tcsetattr-nt.c | 9 +- libc/calls/tcsetattr.c | 9 +- libc/calls/tcsetwinsize-nt.c | 3 +- libc/calls/tmpfd.c | 6 +- libc/calls/touch.c | 3 +- libc/calls/truncate-nt.c | 3 +- libc/calls/ttyname_r.c | 24 +- libc/calls/unveil.c | 24 +- libc/calls/usleep.c | 3 +- libc/calls/utimensat-nt.c | 3 +- libc/calls/vdsofunc.greg.c | 3 +- libc/calls/winexec.c | 9 +- libc/calls/write-nt.c | 18 +- libc/calls/writev-metal.c | 3 +- libc/dlopen/dlopen.c | 57 +- libc/elf/getelfprogramheaderaddress.c | 15 +- libc/elf/getelfsectionaddress.c | 15 +- libc/elf/getelfsectionheaderaddress.c | 18 +- libc/elf/getelfsectionname.c | 3 +- libc/elf/getelfsegmentaddress.c | 12 +- libc/elf/getelfstring.c | 15 +- libc/elf/iself64binary.c | 6 +- libc/fmt/atoi.c | 6 +- libc/fmt/atol.c | 6 +- libc/fmt/dirname.c | 9 +- libc/fmt/formatbinary64.c | 9 +- libc/fmt/formatint64thousands.c | 9 +- libc/fmt/formatoctal64.c | 3 +- libc/fmt/itoa64fixed16.greg.c | 3 +- libc/fmt/sizetol.c | 3 +- libc/fmt/unbing.c | 3 +- libc/fmt/unzleb64.c | 6 +- libc/intrin/__getenv.c | 6 +- libc/intrin/asan.c | 102 +- libc/intrin/createdirectory.c | 3 +- libc/intrin/createfile.c | 6 +- libc/intrin/createfilemapping.c | 3 +- libc/intrin/createfilemappingnuma.c | 3 +- libc/intrin/createnamedpipe.c | 9 +- libc/intrin/createpipe.c | 3 +- libc/intrin/createprocess.c | 3 +- libc/intrin/createsymboliclink.c | 3 +- libc/intrin/cxaatexit.c | 3 +- libc/intrin/deletefile.c | 3 +- libc/intrin/describearchprctlcode.c | 12 +- libc/intrin/describecancelstate.c | 15 +- libc/intrin/describedirfd.c | 3 +- libc/intrin/describefdset.c | 3 +- libc/intrin/describeflags.c | 27 +- libc/intrin/describeflock.c | 3 +- libc/intrin/describeflocktype.c | 9 +- libc/intrin/describegidlist.c | 15 +- libc/intrin/describehow.c | 9 +- libc/intrin/describeinoutint64.c | 9 +- libc/intrin/describeiovec.c | 9 +- libc/intrin/describeitimer.c | 9 +- libc/intrin/describeitimerval.c | 6 +- libc/intrin/describemagnums.c | 3 +- libc/intrin/describentfileflagattr.c | 3 +- libc/intrin/describentoverlapped.c | 3 +- libc/intrin/describeopenflags.c | 6 +- libc/intrin/describepollfds.c | 6 +- libc/intrin/describeptrace.c | 96 +- libc/intrin/describeptraceevent.c | 24 +- libc/intrin/describerlimit.c | 6 +- libc/intrin/describerlimitname.c | 3 +- libc/intrin/describeschedparam.c | 3 +- libc/intrin/describesigaction.c | 15 +- libc/intrin/describesigaltstack.c | 6 +- libc/intrin/describesiginfo.c | 6 +- libc/intrin/describesigset.c | 6 +- libc/intrin/describesocketfamily.c | 9 +- libc/intrin/describesocketprotocol.c | 21 +- libc/intrin/describesockettype.c | 6 +- libc/intrin/describesocklevel.c | 24 +- libc/intrin/describestat.c | 6 +- libc/intrin/describestatfs.c | 6 +- libc/intrin/describestdiostate.c | 9 +- libc/intrin/describestringlist.c | 6 +- libc/intrin/describetermios.c | 3 +- libc/intrin/describetimespec.c | 6 +- libc/intrin/describetimeval.c | 6 +- libc/intrin/describewhence.c | 9 +- libc/intrin/describewhichprio.c | 9 +- libc/intrin/describewinsize.c | 6 +- libc/intrin/deviceiocontrol.c | 3 +- libc/intrin/directmap-metal.c | 24 +- libc/intrin/divmodti4.c | 3 +- libc/intrin/exit.c | 3 +- libc/intrin/extend.c | 15 +- libc/intrin/findclose.c | 3 +- libc/intrin/findnextfile.c | 3 +- libc/intrin/flushviewoffile.c | 3 +- libc/intrin/fmax.c | 6 +- libc/intrin/fmaxf.c | 6 +- libc/intrin/fmaxl.c | 6 +- libc/intrin/formathex64.c | 6 +- libc/intrin/formatint32.c | 3 +- libc/intrin/formatint64.c | 3 +- libc/intrin/formatoctal32.c | 3 +- libc/intrin/g_fds.c | 30 +- libc/intrin/generateconsolectrlevent.c | 3 +- libc/intrin/getenv.c | 3 +- libc/intrin/getexitcodeprocess.c | 3 +- libc/intrin/getmainstack.c | 9 +- libc/intrin/getsafesize.greg.c | 6 +- libc/intrin/isdebuggerpresent.c | 15 +- libc/intrin/iswsl.c | 6 +- libc/intrin/kprintf.greg.c | 144 +- libc/intrin/lockfileex.c | 3 +- libc/intrin/mapviewoffileex.c | 3 +- libc/intrin/mapviewoffileexnuma.c | 3 +- libc/intrin/memcmp.c | 6 +- libc/intrin/memmove.c | 3 +- libc/intrin/memtrack.greg.c | 39 +- libc/intrin/mman.greg.c | 30 +- libc/intrin/movefileex.c | 3 +- libc/intrin/mulvti3.c | 3 +- libc/intrin/ntcontext2linux.c | 6 +- libc/intrin/openprocess.c | 3 +- libc/intrin/packsswb.c | 6 +- libc/intrin/packuswb.c | 6 +- libc/intrin/pcmpgtb.c | 3 +- libc/intrin/pcmpgtw.c | 3 +- libc/intrin/pmovmskb.c | 3 +- libc/intrin/pmulhrsw.c | 3 +- libc/intrin/printmemoryintervals.c | 6 +- libc/intrin/psraw.c | 3 +- libc/intrin/pthread_syshand.c | 3 +- libc/intrin/rand64.c | 3 +- libc/intrin/reservefd.c | 3 +- libc/intrin/setcurrentdirectory.c | 3 +- libc/intrin/sigcountset.c | 3 +- libc/intrin/sigfillset.c | 14 +- libc/intrin/sizefmt.c | 3 +- libc/intrin/stracef.greg.c | 3 +- libc/intrin/strchr.c | 15 +- libc/intrin/strchrnul.c | 12 +- libc/intrin/strcmp.c | 9 +- libc/intrin/strlen.c | 3 +- libc/intrin/strncmp.c | 6 +- libc/intrin/strnlen.c | 6 +- libc/intrin/strsignal_r.c | 6 +- libc/intrin/tpenc.c | 3 +- libc/intrin/ubsan.c | 9 +- libc/intrin/udivmodti4.c | 15 +- libc/intrin/unlockfileex.c | 3 +- libc/intrin/unmapviewoffile.c | 3 +- libc/intrin/unsetenv.c | 3 +- libc/intrin/virtualprotect.c | 3 +- libc/intrin/wsagetoverlappedresult.c | 3 +- libc/intrin/x86.c | 135 +- libc/irq/acpi-xsdt.c | 39 +- libc/log/attachdebugger.c | 3 +- libc/log/backtrace2.c | 12 +- libc/log/backtrace3.c | 3 +- libc/log/checkaligned.c | 3 +- libc/log/checkfail_ndebug.c | 3 +- libc/log/commandvenv.c | 6 +- libc/log/countbranch_report.c | 15 +- libc/log/countexpr_report.c | 6 +- libc/log/gdbexec.c | 3 +- libc/log/getcallername.c | 6 +- libc/log/leaks.c | 3 +- libc/log/memlog.c | 15 +- libc/log/oncrash_amd64.c | 9 +- libc/log/oncrash_arm64.c | 30 +- libc/log/printwindowsmemory.c | 3 +- libc/log/vflogf.c | 12 +- libc/log/watch.c | 21 +- libc/mem/critbit0_allprefixed.c | 12 +- libc/mem/critbit0_contains.c | 6 +- libc/mem/critbit0_delete.c | 9 +- libc/mem/critbit0_emplace.c | 15 +- libc/mem/critbit0_get.c | 6 +- libc/mem/gc.c | 6 +- libc/mem/putenv.c | 6 +- libc/mem/setenv.c | 3 +- libc/mem/strndup.c | 3 +- libc/proc/cocmd.c | 165 +- libc/proc/describefds.c | 30 +- libc/proc/execl.c | 9 +- libc/proc/execle.c | 9 +- libc/proc/execlp.c | 9 +- libc/proc/execve-sysv.c | 6 +- libc/proc/execvpe.c | 6 +- libc/proc/fexecve.c | 3 +- libc/proc/fork-nt.c | 36 +- libc/proc/fork.c | 6 +- libc/proc/kill-nt.c | 6 +- libc/proc/killpg.c | 6 +- libc/proc/nice.c | 6 +- libc/proc/posix_spawn.c | 48 +- libc/proc/posix_spawn_add_file_action.c | 6 +- .../posix_spawn_file_actions_addchdir_np.c | 3 +- libc/proc/posix_spawn_file_actions_addclose.c | 3 +- libc/proc/posix_spawn_file_actions_adddup2.c | 3 +- .../posix_spawn_file_actions_addfchdir_np.c | 3 +- libc/proc/posix_spawn_file_actions_addopen.c | 6 +- libc/proc/posix_spawnp.c | 3 +- libc/proc/proc.c | 9 +- libc/proc/setpriority-nt.c | 3 +- libc/proc/system.c | 3 +- libc/proc/times.c | 9 +- libc/proc/wait4-nt.c | 12 +- libc/runtime/clone.c | 12 +- libc/runtime/closesymboltable.c | 3 +- libc/runtime/cosmo2.c | 3 +- libc/runtime/efimain.greg.c | 12 +- libc/runtime/fpathconf.c | 63 +- libc/runtime/ftracer.c | 9 +- libc/runtime/getavphyspages.c | 3 +- libc/runtime/getdosargv.c | 21 +- libc/runtime/getdosenviron.c | 6 +- libc/runtime/getphyspages.c | 3 +- libc/runtime/getresourcelimit.c | 6 +- libc/runtime/getsymbolbyaddr.c | 3 +- libc/runtime/getsymboltable.c | 3 +- libc/runtime/grow.c | 3 +- libc/runtime/hook.greg.c | 33 +- libc/runtime/ismemtracked.greg.c | 15 +- libc/runtime/isstackoverflow.c | 6 +- libc/runtime/mmap.c | 15 +- libc/runtime/morph.c | 3 +- libc/runtime/opensymboltable.greg.c | 33 +- libc/runtime/warnifpowersave.c | 3 +- libc/runtime/winmain.greg.c | 21 +- libc/runtime/zipos-fcntl.c | 3 +- libc/runtime/zipos-fstat.c | 3 +- libc/runtime/zipos-get.c | 12 +- libc/runtime/zipos-inode.c | 3 +- libc/runtime/zipos-normpath.c | 6 +- libc/runtime/zipos-notat.c | 3 +- libc/runtime/zipos-open.c | 21 +- libc/runtime/zipos-read.c | 3 +- libc/runtime/zipos-stat.c | 9 +- libc/sock/accept-nt.c | 6 +- libc/sock/accept4-sysv.c | 3 +- libc/sock/asanmsghdr.c | 9 +- libc/sock/basesocket.c | 6 +- libc/sock/connect-nt.c | 12 +- libc/sock/epoll.c | 204 ++- libc/sock/gethostips.c | 18 +- libc/sock/goodsocket.c | 3 +- libc/sock/inet_aton.c | 12 +- libc/sock/inet_ntop.c | 12 +- libc/sock/inet_pton.c | 12 +- libc/sock/recvfrom-nt.c | 3 +- libc/sock/recvmsg.c | 3 +- libc/sock/send-nt.c | 3 +- libc/sock/sendfile.c | 12 +- libc/sock/sendmsg.c | 3 +- libc/sock/sendto-nt.c | 3 +- libc/sock/setsockopt-nt.c | 12 +- libc/sock/sockaddr.c | 12 +- libc/sock/sockaddr2linux.c | 3 +- libc/sock/sockatmark.c | 6 +- libc/sock/sockdebug.c | 3 +- libc/sock/socket-nt.c | 9 +- libc/sock/socketpair-nt.c | 9 +- libc/sock/socketpair-sysv.c | 3 +- libc/sock/socketpair.c | 3 +- libc/sock/syslog.c | 24 +- libc/sock/winsockblock.c | 9 +- libc/stdio/__freadptr.c | 3 +- libc/stdio/appendd.c | 9 +- libc/stdio/appendstrlist.c | 3 +- libc/stdio/appendw.c | 9 +- libc/stdio/dirstream.c | 24 +- libc/stdio/dumphexc.c | 9 +- libc/stdio/fclose.c | 3 +- libc/stdio/fflush.c | 6 +- libc/stdio/fgetc_unlocked.c | 3 +- libc/stdio/fgetln.c | 3 +- libc/stdio/fgets_unlocked.c | 9 +- libc/stdio/fgetwc_unlocked.c | 6 +- libc/stdio/fgetws_unlocked.c | 6 +- libc/stdio/fmemopen.c | 3 +- libc/stdio/fmt.c | 273 ++- libc/stdio/fputc_unlocked.c | 3 +- libc/stdio/fputs_unlocked.c | 3 +- libc/stdio/fread_unlocked.c | 3 +- libc/stdio/fseek_unlocked.c | 3 +- libc/stdio/ftell.c | 6 +- libc/stdio/getcwd.c | 3 +- libc/stdio/getdelim_unlocked.c | 6 +- libc/stdio/getentropy.c | 6 +- libc/stdio/kvappendf.c | 9 +- libc/stdio/mt19937.c | 12 +- libc/stdio/pclose.c | 3 +- libc/stdio/popen.c | 9 +- libc/stdio/printargs.c | 204 ++- libc/stdio/puts_unlocked.c | 9 +- libc/stdio/random.c | 12 +- libc/stdio/rdseed.c | 3 +- libc/stdio/rngset.c | 3 +- libc/stdio/setvbuf.c | 3 +- libc/stdio/sortstrlist.c | 3 +- libc/stdio/ungetc_unlocked.c | 3 +- libc/stdio/ungetwc_unlocked.c | 3 +- libc/stdio/vappendf.c | 9 +- libc/stdio/vcscanf.c | 23 +- libc/stdio/vdprintf.c | 3 +- libc/stdio/vsnprintf.c | 6 +- libc/str/a64l.c | 3 +- libc/str/blake2.c | 6 +- libc/str/c16rtomb.c | 6 +- libc/str/compareslices.c | 9 +- libc/str/compareslicescase.c | 9 +- libc/str/endswith.c | 3 +- libc/str/endswith16.c | 3 +- libc/str/getzipcfiletimestamps.c | 15 +- libc/str/getzipeocd.c | 3 +- libc/str/highwayhash64.c | 6 +- libc/str/intsort.c | 9 +- libc/str/isutf8.c | 9 +- libc/str/iswlower.c | 3 +- libc/str/iswupper.c | 3 +- libc/str/joinpaths.c | 6 +- libc/str/longsort.c | 9 +- libc/str/lz4cpy.c | 3 +- libc/str/lz4len.c | 3 +- libc/str/mbrlen.c | 3 +- libc/str/mbrtoc16.c | 12 +- libc/str/mbrtoc32.c | 9 +- libc/str/mbrtowc.c | 24 +- libc/str/mbsnrtowcs.c | 6 +- libc/str/mbsrtowcs.c | 15 +- libc/str/mbtowc.c | 30 +- libc/str/memmem.c | 33 +- libc/str/rawmemchr.c | 3 +- libc/str/smoothsort.c | 3 +- libc/str/startswith.c | 9 +- libc/str/startswith16.c | 9 +- libc/str/startswithi.c | 9 +- libc/str/stpncpy.c | 6 +- libc/str/strcasecmp.c | 6 +- libc/str/strcasecmp16.c | 3 +- libc/str/strcasestr.c | 30 +- libc/str/strchr16.c | 6 +- libc/str/strchrnul16.c | 6 +- libc/str/strcmp16.c | 3 +- libc/str/strlen16.c | 6 +- libc/str/strncasecmp.c | 3 +- libc/str/strncasecmp16.c | 6 +- libc/str/strncat16.c | 3 +- libc/str/strncmp16.c | 6 +- libc/str/strncpy.c | 6 +- libc/str/strnlen16.c | 3 +- libc/str/strnlen_s.c | 9 +- libc/str/strnwidth.c | 3 +- libc/str/strstr.c | 30 +- libc/str/strstr16.c | 12 +- libc/str/towctrans.c | 6 +- libc/str/tprecode16to8.c | 12 +- libc/str/tprecode8to16.c | 12 +- libc/str/wcrtomb.c | 3 +- libc/str/wcscasecmp.c | 6 +- libc/str/wcschr.c | 6 +- libc/str/wcschrnul.c | 6 +- libc/str/wcscmp.c | 6 +- libc/str/wcsendswith.c | 3 +- libc/str/wcslen.c | 6 +- libc/str/wcsncasecmp.c | 6 +- libc/str/wcsncat.c | 3 +- libc/str/wcsncmp.c | 6 +- libc/str/wcsnlen_s.c | 3 +- libc/str/wcsnrtombs.c | 9 +- libc/str/wcsrtombs.c | 12 +- libc/str/wcsstartswith.c | 9 +- libc/str/wcsstr.c | 12 +- libc/str/wctob.c | 6 +- libc/str/wctomb.c | 3 +- libc/str/wctrans.c | 6 +- libc/str/wcwidth.c | 12 +- libc/str/wmemcpy.c | 3 +- libc/str/wmemmove.c | 3 +- libc/str/wmempcpy.c | 3 +- libc/testlib/almostequallongdouble.c | 3 +- libc/testlib/benchrunner.c | 3 +- libc/testlib/binequals.c | 12 +- libc/testlib/contains.c | 6 +- libc/testlib/endswith.c | 6 +- libc/testlib/formatbinaryasglyphs.c | 3 +- libc/testlib/formatbinaryashex.c | 3 +- libc/testlib/formatstr.c | 15 +- libc/testlib/hexequals.c | 9 +- libc/testlib/startswith.c | 6 +- libc/testlib/strcaseequals.c | 6 +- libc/testlib/strequals.c | 6 +- libc/testlib/testmain.c | 3 +- libc/testlib/testrunner.c | 21 +- libc/thread/__cxa_thread_atexit_impl.c | 3 +- libc/thread/mktls.c | 3 +- libc/thread/pthread_atfork.c | 15 +- libc/thread/pthread_attr_getsigmask_np.c | 6 +- libc/thread/pthread_attr_setguardsize.c | 3 +- libc/thread/pthread_attr_setstacksize.c | 3 +- libc/thread/pthread_barrier_init.c | 6 +- libc/thread/pthread_cancel.c | 36 +- libc/thread/pthread_create.c | 12 +- libc/thread/pthread_getname_np.c | 3 +- libc/thread/pthread_key_create.c | 3 +- libc/thread/pthread_setcanceltype.c | 12 +- libc/thread/pthread_timedjoin_np.c | 6 +- libc/thread/sem_destroy.c | 6 +- libc/thread/sem_init.c | 3 +- libc/thread/sem_timedwait.c | 3 +- libc/thread/sem_trywait.c | 6 +- libc/time/strptime.c | 48 +- libc/vga/readv-vga.c | 9 +- libc/vga/tty.greg.c | 78 +- libc/vga/vga-init.greg.c | 3 +- libc/vga/writev-vga.c | 9 +- libc/x/unbingbuf.c | 3 +- libc/x/utf16to32.c | 12 +- libc/x/utf16to8.c | 15 +- libc/x/utf32to8.c | 12 +- libc/x/utf8to16.c | 18 +- libc/x/utf8to32.c | 18 +- libc/x/xbarf.c | 3 +- libc/x/xcalloc.c | 3 +- libc/x/xdie.c | 3 +- libc/x/xfixpath.c | 6 +- libc/x/xload.c | 9 +- libc/x/xmalloc.c | 3 +- libc/x/xmemalign.c | 3 +- libc/x/xmemalignzero.c | 3 +- libc/x/xrealloc.c | 3 +- libc/x/xstrdup.c | 3 +- libc/x/xstrmul.c | 3 +- libc/x/xstrndup.c | 3 +- libc/x/xvalloc.c | 3 +- libc/x/xvasprintf.c | 3 +- net/http/base32.c | 24 +- net/http/categorizeip.c | 57 +- net/http/decodebase64.c | 30 +- net/http/decodelatin1.c | 15 +- net/http/encodebase64.c | 12 +- net/http/encodehttpheadervalue.c | 9 +- net/http/encodelatin1.c | 18 +- net/http/encodeurl.c | 15 +- net/http/escapehtml.c | 12 +- net/http/escapejsstringliteral.c | 12 +- net/http/escapeurl.c | 12 +- net/http/findcontenttype.c | 3 +- net/http/hascontrolcodes.c | 12 +- net/http/headerhassubstring.c | 3 +- net/http/indentlines.c | 9 +- net/http/isacceptablehost.c | 6 +- net/http/isacceptablepath.c | 14 +- net/http/isacceptableport.c | 3 +- net/http/ismimetype.c | 9 +- net/http/isnocompressext.c | 9 +- net/http/isreasonablepath.c | 18 +- net/http/isvalidcookievalue.c | 3 +- net/http/isvalidhttptoken.c | 6 +- net/http/parsecidr.c | 3 +- net/http/parsecontentlength.c | 15 +- net/http/parseforwarded.c | 12 +- net/http/parsehttpdatetime.c | 6 +- net/http/parsehttpmessage.c | 42 +- net/http/parsehttpmethod.c | 9 +- net/http/parsehttprange.c | 48 +- net/http/parseip.c | 9 +- net/http/parseurl.c | 24 +- net/http/tokenbucket.c | 6 +- net/http/unchunk.c | 27 +- net/http/underlong.c | 18 +- net/http/visualizecontrolcodes.c | 9 +- net/https/describesslverifyfailure.c | 3 +- net/https/finishcertificate.c | 6 +- net/turfwar/blackholed.c | 21 +- net/turfwar/turfwar.c | 90 +- test/libc/calls/access_test.c | 6 +- test/libc/calls/cachestat_test.c | 3 +- test/libc/calls/chdir_test.c | 3 +- test/libc/calls/clock_getres_test.c | 12 +- test/libc/calls/closefrom_test.c | 3 +- test/libc/calls/commandv_test.c | 3 +- test/libc/calls/copy_file_range_test.c | 21 +- test/libc/calls/devfd_test.c | 6 +- test/libc/calls/fchmodat_test.c | 3 +- test/libc/calls/fcntl_test.c | 6 +- test/libc/calls/ftruncate_test.c | 3 +- test/libc/calls/getcwd_test.c | 6 +- test/libc/calls/getgroups_test.c | 6 +- .../calls/getprogramexecutablename_test.c | 9 +- test/libc/calls/getrandom_test.c | 30 +- test/libc/calls/ioctl_test.c | 6 +- test/libc/calls/lock_ofd_test.c | 3 +- test/libc/calls/madvise_test.c | 15 +- test/libc/calls/makedirs_test.c | 6 +- test/libc/calls/mkdir_test.c | 6 +- test/libc/calls/open_test.c | 24 +- test/libc/calls/openatemp_test.c | 3 +- test/libc/calls/openbsd_test.c | 6 +- test/libc/calls/pipe_test.c | 12 +- test/libc/calls/pledge2_test.c | 6 +- test/libc/calls/pledge_test.c | 84 +- test/libc/calls/poll_test.c | 6 +- test/libc/calls/posix_fadvise_test.c | 3 +- test/libc/calls/read_test.c | 6 +- test/libc/calls/readlinkat_test.c | 6 +- test/libc/calls/renameat_test.c | 12 +- test/libc/calls/sched_setscheduler_test.c | 3 +- test/libc/calls/setrlimit_test.c | 51 +- test/libc/calls/shm_open_test.c | 3 +- test/libc/calls/sig_test.c | 6 +- test/libc/calls/sigaction_test.c | 27 +- test/libc/calls/sigtimedwait_test.c | 12 +- test/libc/calls/stackoverflow1_test.c | 3 +- test/libc/calls/timespec_test.c | 3 +- test/libc/calls/unlinkat_test.c | 3 +- test/libc/calls/unveil_test.c | 18 +- test/libc/calls/utimensat_test.c | 6 +- test/libc/calls/write_test.c | 6 +- test/libc/calls/writev_test.c | 6 +- test/libc/intrin/kprintf_test.c | 15 +- test/libc/intrin/lock_test.c | 9 +- test/libc/intrin/memcmp_test.c | 6 +- test/libc/intrin/memset_test.c | 6 +- test/libc/intrin/pthread_mutex_lock2_test.c | 21 +- test/libc/intrin/rand64_test.c | 6 +- test/libc/intrin/strchr_test.c | 18 +- test/libc/intrin/strcmp_test.c | 3 +- test/libc/intrin/strlen_test.c | 9 +- test/libc/intrin/strsignal_r_test.c | 3 +- test/libc/mem/critbit0_test.c | 15 +- test/libc/mem/djbsort_test.c | 6 +- test/libc/mem/malloc_test.c | 42 +- test/libc/mem/qsort_test.c | 39 +- test/libc/nexgen32e/gclongjmp_test.c | 21 +- test/libc/nexgen32e/lz4decode_test.c | 3 +- test/libc/proc/execve_test.c | 21 +- test/libc/proc/fork_test.c | 6 +- test/libc/proc/getpriority_test.c | 3 +- test/libc/proc/handkill_test.c | 24 +- test/libc/proc/posix_spawn_test.c | 27 +- test/libc/proc/sched_getaffinity_test.c | 6 +- test/libc/proc/system_test.c | 3 +- test/libc/runtime/exit_test.c | 9 +- test/libc/runtime/grow_test.c | 6 +- test/libc/runtime/memtrack_test.c | 21 +- test/libc/runtime/mmap_test.c | 6 +- test/libc/runtime/mprotect_test.c | 9 +- test/libc/runtime/msync_test.c | 6 +- test/libc/runtime/munmap_test.c | 6 +- test/libc/sock/connect_test.c | 9 +- test/libc/sock/nonblock_test.c | 3 +- test/libc/sock/recvfrom_test.c | 3 +- test/libc/sock/sendfile_test.c | 9 +- test/libc/sock/socket_test.c | 3 +- test/libc/sock/unix_test.c | 24 +- test/libc/stdio/dirstream_test.c | 9 +- test/libc/stdio/fds_torture_test.c | 3 +- test/libc/stdio/fgets_test.c | 3 +- test/libc/stdio/fprintf_test.c | 3 +- test/libc/stdio/fwrite_test.c | 6 +- test/libc/stdio/getdelim_test.c | 3 +- test/libc/stdio/getentropy_test.c | 18 +- test/libc/stdio/mt19937_test.c | 6 +- test/libc/stdio/popen_test.c | 9 +- test/libc/stdio/tmpfile_test.c | 9 +- test/libc/str/highwayhash64_test.c | 3 +- test/libc/str/longsort_test.c | 30 +- test/libc/str/memccpy_test.c | 3 +- test/libc/str/memmem_test.c | 15 +- test/libc/str/strcasestr_test.c | 15 +- test/libc/str/strstr_test.c | 15 +- test/libc/thread/makecontext_test.c | 6 +- test/libc/thread/nsync_test.c | 9 +- test/libc/thread/pthread_cancel_test.c | 12 +- test/libc/thread/pthread_cond_signal_test.c | 9 +- test/libc/thread/pthread_kill_test.c | 15 +- test/libc/thread/pthread_setname_np_test.c | 12 +- test/libc/thread/sem_timedwait_test.c | 33 +- test/libc/tinymath/magicu_test.c | 3 +- test/libc/x/utf8to32_test.c | 3 +- test/libcxx/openmp_test.cc | 30 +- test/math/float16_test.c | 21 +- test/math/hypot_test.c | 6 +- test/math/hypotf_test.c | 6 +- test/math/powf_test.c | 6 +- test/net/http/decodelatin1_test.c | 3 +- test/net/http/tokenbucket_test.c | 6 +- test/net/https/mbedtls_test.c | 45 +- test/posix/atoi_test.c | 3 +- test/posix/reentrant_signal_test.c | 3 +- test/posix/sa_resethand_test.c | 21 +- test/posix/sigchld_test.c | 3 +- test/posix/strtol_test.c | 3 +- test/tool/build/lib/getargs_test.c | 3 +- test/tool/net/redbean_test.c | 18 +- test/tool/net/sqlite_test.c | 27 +- test/tool/plinko/plinko_test.c | 6 +- test/tool/viz/lib/fun_test.c | 18 +- tool/build/apelink.c | 78 +- tool/build/ar.c | 84 +- tool/build/assimilate.c | 54 +- tool/build/bigmul.c | 6 +- tool/build/chmod.c | 3 +- tool/build/compile.c | 231 ++- tool/build/cp.c | 9 +- tool/build/dd.c | 9 +- tool/build/echo.c | 3 +- tool/build/elf2pe.c | 54 +- tool/build/fastdiff.c | 6 +- tool/build/fixupobj.c | 90 +- tool/build/gzip.c | 18 +- tool/build/killall.c | 6 +- tool/build/lib/asmdown.c | 6 +- tool/build/lib/buffer.c | 3 +- tool/build/lib/demangle.c | 24 +- tool/build/lib/elfwriter.c | 3 +- tool/build/lib/elfwriter_zip.c | 3 +- tool/build/lib/eztls.c | 24 +- tool/build/lib/getargs.c | 9 +- tool/build/lib/interner.c | 21 +- tool/build/lib/javadown.c | 27 +- tool/build/lib/panel.c | 18 +- tool/build/lz4toasm.c | 3 +- tool/build/march-native.c | 84 +- tool/build/mkdeps.c | 66 +- tool/build/mkdir.c | 3 +- tool/build/mktemper.c | 12 +- tool/build/mv.c | 15 +- tool/build/objbincopy.c | 30 +- tool/build/package.c | 45 +- tool/build/pecheck.c | 18 +- tool/build/pledge.c | 48 +- tool/build/rm.c | 12 +- tool/build/rollup.c | 48 +- tool/build/runit.c | 39 +- tool/build/runitd.c | 21 +- tool/build/sha256sum.c | 33 +- tool/build/summy.c | 6 +- tool/build/touch.c | 3 +- tool/build/unveil.c | 9 +- tool/build/verynice.c | 3 +- tool/build/zipcopy.c | 9 +- tool/build/zipobj.c | 12 +- tool/curl/curl.c | 6 +- tool/decode/ar.c | 6 +- tool/decode/base64.c | 21 +- tool/decode/elf.c | 39 +- tool/decode/lib/asmcodegen.c | 3 +- tool/decode/lib/disassemblehex.c | 12 +- tool/decode/lib/flagger.c | 3 +- tool/decode/lib/titlegen.c | 9 +- tool/decode/macho.c | 6 +- tool/decode/pe2.c | 6 +- tool/lambda/blcdump.c | 3 +- tool/lambda/bru2bin.c | 27 +- tool/lambda/lam2bin.c | 33 +- tool/lambda/lambda.c | 27 +- tool/lambda/lib/debug.c | 6 +- tool/lambda/lib/dump.c | 3 +- tool/lambda/lib/getbit.c | 6 +- tool/lambda/lib/needbit.c | 3 +- tool/lambda/lib/parse.c | 9 +- tool/lambda/lib/parserom.c | 9 +- tool/lambda/lib/print.c | 21 +- tool/net/dig.c | 3 +- tool/net/echo.c | 6 +- tool/net/getadaptersaddresses.c | 42 +- tool/net/lfuncs.c | 12 +- tool/net/libresolv_query.c | 18 +- tool/net/ljson.c | 36 +- tool/net/lmaxmind.c | 6 +- tool/net/lpath.c | 18 +- tool/net/redbean.c | 408 +++-- tool/plinko/lib/char.c | 9 +- tool/plinko/lib/cmp.c | 36 +- tool/plinko/lib/cons.c | 6 +- tool/plinko/lib/countatoms.c | 6 +- tool/plinko/lib/define.c | 6 +- tool/plinko/lib/dispatchycombine.c | 3 +- tool/plinko/lib/error.c | 3 +- tool/plinko/lib/evlis.c | 6 +- tool/plinko/lib/expand.c | 27 +- tool/plinko/lib/gc.c | 12 +- tool/plinko/lib/hasatom.c | 6 +- tool/plinko/lib/histo.c | 6 +- tool/plinko/lib/iscar.c | 12 +- tool/plinko/lib/iscdr.c | 12 +- tool/plinko/lib/isconstant.c | 12 +- tool/plinko/lib/isdelegate.c | 21 +- tool/plinko/lib/isif.c | 30 +- tool/plinko/lib/isycombinator.c | 156 +- tool/plinko/lib/makesclosures.c | 12 +- tool/plinko/lib/pairlis.c | 6 +- tool/plinko/lib/plan.c | 300 ++-- tool/plinko/lib/plinko.c | 81 +- tool/plinko/lib/preplan.c | 12 +- tool/plinko/lib/prettyprint.c | 9 +- tool/plinko/lib/printchar.c | 9 +- tool/plinko/lib/printf.c | 21 +- tool/plinko/lib/printheap.c | 3 +- tool/plinko/lib/printint.c | 9 +- tool/plinko/lib/printvars.c | 6 +- tool/plinko/lib/read.c | 33 +- tool/plinko/lib/symbolize.c | 141 +- tool/plinko/lib/tree.c | 24 +- tool/viz/ascii2utf8.c | 15 +- tool/viz/basicidea.c | 7 +- tool/viz/bd.c | 9 +- tool/viz/bin2asm.c | 3 +- tool/viz/cpuid.c | 9 +- tool/viz/datauri.c | 3 +- tool/viz/derasterize.c | 95 +- tool/viz/getglyph.c | 12 +- tool/viz/hwcap.c | 153 +- tool/viz/img.c | 9 +- tool/viz/lib/convoindex.c | 9 +- tool/viz/lib/formatstringtable-assembly.c | 3 +- tool/viz/lib/formatstringtable.c | 6 +- tool/viz/lib/sharpen.c | 6 +- tool/viz/lib/sobel.c | 6 +- tool/viz/lib/stringbuilder.c | 6 +- tool/viz/lib/unsharp.c | 6 +- tool/viz/lib/writetoframebuffer.c | 15 +- tool/viz/lib/ycbcr2rgb3.c | 9 +- tool/viz/life.c | 102 +- tool/viz/maxmind.c | 3 +- tool/viz/memzoom.c | 36 +- tool/viz/printansi.c | 6 +- tool/viz/printimage.c | 18 +- tool/viz/printpeb.c | 18 +- tool/viz/printvideo.c | 111 +- tool/viz/rlimit.c | 3 +- tool/viz/setitimer_accuracy.c | 3 +- tool/viz/tailf.c | 27 +- tool/viz/virtualquery.c | 3 +- 863 files changed, 9201 insertions(+), 4627 deletions(-) diff --git a/ape/ape-m1.c b/ape/ape-m1.c index 1afd1edb0..d31ca0b27 100644 --- a/ape/ape-m1.c +++ b/ape/ape-m1.c @@ -221,13 +221,15 @@ struct ApeLoader { static unsigned long StrLen(const char *s) { unsigned long n = 0; - while (*s++) ++n; + while (*s++) + ++n; return n; } static int StrCmp(const char *l, const char *r) { unsigned long i = 0; - while (l[i] == r[i] && r[i]) ++i; + while (l[i] == r[i] && r[i]) + ++i; return (l[i] & 255) - (r[i] & 255); } @@ -276,7 +278,8 @@ static char *Utoa(char p[21], unsigned long x) { } static char *Itoa(char p[21], long x) { - if (x < 0) *p++ = '-', x = -(unsigned long)x; + if (x < 0) + *p++ = '-', x = -(unsigned long)x; return Utoa(p, x); } @@ -312,7 +315,8 @@ static int GetIndirectOffset(const char *arg0) { static void Perror(const char *thing, long rc, const char *reason) { char ibuf[21]; ibuf[0] = 0; - if (rc) Itoa(ibuf, -rc); + if (rc) + Itoa(ibuf, -rc); Print(2, "ape error: ", thing, ": ", reason, rc ? " failed w/ errno " : "", ibuf, "\n", 0l); } @@ -327,7 +331,8 @@ static char AccessCommand(struct PathSearcher *ps, unsigned long pathlen) { if (pathlen + 1 + ps->namelen + 1 > sizeof(ps->path)) { return 0; } - if (pathlen && ps->path[pathlen - 1] != '/') ps->path[pathlen++] = '/'; + if (pathlen && ps->path[pathlen - 1] != '/') + ps->path[pathlen++] = '/'; memmove(ps->path + pathlen, ps->name, ps->namelen); ps->path[pathlen + ps->namelen] = 0; return !access(ps->path, X_OK); @@ -377,8 +382,10 @@ static char *Commandv(struct PathSearcher *ps, const char *name, const char *syspath) { ps->syspath = syspath ? syspath : "/bin:/usr/local/bin:/usr/bin"; ps->name = name; - if (!(ps->namelen = ps->indirect ? ps->indirect : StrLen(ps->name))) return 0; - if (ps->namelen + 1 > sizeof(ps->path)) return 0; + if (!(ps->namelen = ps->indirect ? ps->indirect : StrLen(ps->name))) + return 0; + if (ps->namelen + 1 > sizeof(ps->path)) + return 0; if (FindCommand(ps)) { return ps->path; } else { @@ -585,7 +592,8 @@ __attribute__((__noreturn__)) static void Spawn(const char *exe, int fd, a = p[i].p_vaddr & -pagesz; b = (p[i].p_vaddr + p[i].p_memsz + (pagesz - 1)) & -pagesz; for (j = i + 1; j < e->e_phnum; ++j) { - if (p[j].p_type != PT_LOAD) continue; + if (p[j].p_type != PT_LOAD) + continue; c = p[j].p_vaddr & -pagesz; d = (p[j].p_vaddr + p[j].p_memsz + (pagesz - 1)) & -pagesz; if (MAX(a, c) < MIN(b, d)) { @@ -614,7 +622,8 @@ __attribute__((__noreturn__)) static void Spawn(const char *exe, int fd, if (e->e_type == ET_DYN) { rc = sys_mmap(0, virtmax - virtmin, PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); - if (rc < 0) Pexit(exe, rc, "pie mmap"); + if (rc < 0) + Pexit(exe, rc, "pie mmap"); dynbase = rc; if (dynbase & (pagesz - 1)) { Pexit(exe, 0, "OS mmap incongruent w/ AT_PAGESZ"); @@ -630,14 +639,18 @@ __attribute__((__noreturn__)) static void Spawn(const char *exe, int fd, for (i = 0; i < e->e_phnum; ++i) { void *addr; unsigned long size; - if (p[i].p_type != PT_LOAD) continue; + if (p[i].p_type != PT_LOAD) + continue; /* configure mapping */ prot = 0; flags = MAP_FIXED | MAP_PRIVATE; - if (p[i].p_flags & PF_R) prot |= PROT_READ; - if (p[i].p_flags & PF_W) prot |= PROT_WRITE; - if (p[i].p_flags & PF_X) prot |= PROT_EXEC; + if (p[i].p_flags & PF_R) + prot |= PROT_READ; + if (p[i].p_flags & PF_W) + prot |= PROT_WRITE; + if (p[i].p_flags & PF_X) + prot |= PROT_EXEC; /* load from file */ if (p[i].p_filesz) { @@ -687,24 +700,30 @@ __attribute__((__noreturn__)) static void Spawn(const char *exe, int fd, as the default strategy which is slow but it works for both */ rc = sys_mmap(addr, size, (prot1 = PROT_READ | PROT_WRITE), MAP_PRIVATE | MAP_FIXED | MAP_ANONYMOUS, -1, 0); - if (rc < 0) Pexit(exe, rc, "prog mmap anon"); + if (rc < 0) + Pexit(exe, rc, "prog mmap anon"); rc = pread(fd, addr, p[i].p_filesz, p[i].p_offset & -pagesz); - if (rc != p[i].p_filesz) Pexit(exe, -errno, "prog pread"); + if (rc != p[i].p_filesz) + Pexit(exe, -errno, "prog pread"); #endif } else { rc = sys_mmap(addr, size, prot1, flags, fd, p[i].p_offset & -pagesz); - if (rc < 0) Pexit(exe, rc, "prog mmap"); + if (rc < 0) + Pexit(exe, rc, "prog mmap"); } - if (wipe) memset((void *)(dynbase + a), 0, wipe); + if (wipe) + memset((void *)(dynbase + a), 0, wipe); if (prot2 != prot1) { rc = sys_mprotect(addr, size, prot2); - if (rc < 0) Pexit(exe, rc, "prog mprotect"); + if (rc < 0) + Pexit(exe, rc, "prog mprotect"); } /* allocate extra bss */ if (c > b) { flags |= MAP_ANONYMOUS; rc = sys_mmap((void *)(dynbase + b), c - b, prot, flags, -1, 0); - if (rc < 0) Pexit(exe, rc, "extra bss mmap"); + if (rc < 0) + Pexit(exe, rc, "extra bss mmap"); } } else { /* allocate pure bss */ @@ -712,7 +731,8 @@ __attribute__((__noreturn__)) static void Spawn(const char *exe, int fd, size = (p[i].p_vaddr & (pagesz - 1)) + p[i].p_memsz; flags |= MAP_ANONYMOUS; rc = sys_mmap(addr, size, prot, flags, -1, 0); - if (rc < 0) Pexit(exe, rc, "bss mmap"); + if (rc < 0) + Pexit(exe, rc, "bss mmap"); } } @@ -790,8 +810,10 @@ static const char *TryElf(struct ApeLoader *M, union ElfEhdrBuf *ebuf, /* read program headers */ rc = pread(fd, M->phdr.buf, size, ebuf->ehdr.e_phoff); - if (rc < 0) return "failed to read ELF program headers"; - if (rc != size) return "truncated read of ELF program headers"; + if (rc < 0) + return "failed to read ELF program headers"; + if (rc != size) + return "truncated read of ELF program headers"; /* bail on recoverable program header errors */ p = &M->phdr.phdr; @@ -970,7 +992,8 @@ int main(int argc, char **argv, char **envp) { grows down the alloc by poking the guard pages */ n = (auxv - sp + AUXV_WORDS + 1) * sizeof(long); sp2 = (long *)__builtin_alloca(n); - if ((long)sp2 & 15) ++sp2; + if ((long)sp2 & 15) + ++sp2; for (; n > 0; n -= pagesz) { ((char *)sp2)[n - 1] = 0; } diff --git a/ape/loader.c b/ape/loader.c index 752d5ef6e..8b35e3a30 100644 --- a/ape/loader.c +++ b/ape/loader.c @@ -228,13 +228,15 @@ extern char _end[]; static unsigned long StrLen(const char *s) { unsigned long n = 0; - while (*s++) ++n; + while (*s++) + ++n; return n; } static int StrCmp(const char *l, const char *r) { unsigned long i = 0; - while (l[i] == r[i] && r[i]) ++i; + while (l[i] == r[i] && r[i]) + ++i; return (l[i] & 255) - (r[i] & 255); } @@ -353,7 +355,8 @@ static char *Utoa(char p[20], unsigned long x) { } static char *Itoa(char p[21], long x) { - if (x < 0) *p++ = '-', x = -(unsigned long)x; + if (x < 0) + *p++ = '-', x = -(unsigned long)x; return Utoa(p, x); } @@ -362,7 +365,8 @@ __attribute__((__noinline__)) static long CallSystem(long arg1, long arg2, long arg5, long arg6, long arg7, int numba, char os) { - if (IsXnu()) numba |= 0x2000000; + if (IsXnu()) + numba |= 0x2000000; return SystemCall(arg1, arg2, arg3, arg4, arg5, arg6, arg7, numba); } @@ -529,7 +533,8 @@ static long Printf(int os, int fd, const char *fmt, ...) { switch ((c = *fmt++)) { case 's': for (s = __builtin_va_arg(va, const char *); s && *s; ++s) { - if (k < 512) b[k++] = *s; + if (k < 512) + b[k++] = *s; } break; case 'd': @@ -542,16 +547,19 @@ static long Printf(int os, int fd, const char *fmt, ...) { u -= 10; c = 'a' + u; } - if (k < 512) b[k++] = c; + if (k < 512) + b[k++] = c; } break; default: - if (k < 512) b[k++] = c; + if (k < 512) + b[k++] = c; break; } break; default: - if (k < 512) b[k++] = c; + if (k < 512) + b[k++] = c; break; } } @@ -560,7 +568,8 @@ static long Printf(int os, int fd, const char *fmt, ...) { static void Perror(int os, const char *thing, long rc, const char *reason) { char ibuf[21]; ibuf[0] = 0; - if (rc) Itoa(ibuf, -rc); + if (rc) + Itoa(ibuf, -rc); Print(os, 2, "ape error: ", thing, ": ", reason, rc ? " failed w/ errno " : "", ibuf, "\n", 0l); } @@ -572,8 +581,10 @@ __attribute__((__noreturn__)) static void Pexit(int os, const char *c, int rc, } static char AccessCommand(struct PathSearcher *ps, unsigned long pathlen) { - if (pathlen + 1 + ps->namelen + 1 > sizeof(ps->path)) return 0; - if (pathlen && ps->path[pathlen - 1] != '/') ps->path[pathlen++] = '/'; + if (pathlen + 1 + ps->namelen + 1 > sizeof(ps->path)) + return 0; + if (pathlen && ps->path[pathlen - 1] != '/') + ps->path[pathlen++] = '/'; MemMove(ps->path + pathlen, ps->name, ps->namelen); ps->path[pathlen + ps->namelen] = 0; return !Access(ps->path, X_OK, ps->os); @@ -600,11 +611,14 @@ static char SearchPath(struct PathSearcher *ps) { static char *Commandv(struct PathSearcher *ps, int os, char *name, const char *syspath) { - if (!(ps->namelen = StrLen((ps->name = name)))) return 0; - if (ps->literally || MemChr(ps->name, '/', ps->namelen)) return name; + if (!(ps->namelen = StrLen((ps->name = name)))) + return 0; + if (ps->literally || MemChr(ps->name, '/', ps->namelen)) + return name; ps->os = os; ps->syspath = syspath ? syspath : "/bin:/usr/local/bin:/usr/bin"; - if (ps->namelen + 1 > sizeof(ps->path)) return 0; + if (ps->namelen + 1 > sizeof(ps->path)) + return 0; ps->path[0] = 0; if (SearchPath(ps)) { return ps->path; @@ -661,7 +675,8 @@ __attribute__((__noreturn__)) static void Spawn(int os, char *exe, int fd, Pexit(os, exe, 0, "ELF segments overlap your APE loader"); } for (j = i + 1; j < e->e_phnum; ++j) { - if (p[j].p_type != PT_LOAD) continue; + if (p[j].p_type != PT_LOAD) + continue; c = p[j].p_vaddr & -pagesz; d = (p[j].p_vaddr + p[j].p_memsz + (pagesz - 1)) & -pagesz; if (MAX(a, c) < MIN(b, d)) { @@ -694,7 +709,8 @@ __attribute__((__noreturn__)) static void Spawn(int os, char *exe, int fd, if (e->e_type == ET_DYN) { rc = Mmap(0, virtmax - virtmin, PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_NORESERVE, -1, 0, os); - if (rc < 0) Pexit(os, exe, rc, "pie mmap"); + if (rc < 0) + Pexit(os, exe, rc, "pie mmap"); dynbase = rc; if (dynbase & (pagesz - 1)) { Pexit(os, exe, 0, "OS mmap incongruent w/ AT_PAGESZ"); @@ -710,14 +726,18 @@ __attribute__((__noreturn__)) static void Spawn(int os, char *exe, int fd, for (i = 0; i < e->e_phnum; ++i) { void *addr; unsigned long size; - if (p[i].p_type != PT_LOAD) continue; + if (p[i].p_type != PT_LOAD) + continue; /* configure mapping */ prot = 0; flags = MAP_FIXED | MAP_PRIVATE; - if (p[i].p_flags & PF_R) prot |= PROT_READ; - if (p[i].p_flags & PF_W) prot |= PROT_WRITE; - if (p[i].p_flags & PF_X) prot |= PROT_EXEC; + if (p[i].p_flags & PF_R) + prot |= PROT_READ; + if (p[i].p_flags & PF_W) + prot |= PROT_WRITE; + if (p[i].p_flags & PF_X) + prot |= PROT_EXEC; if (p[i].p_filesz) { /* load from file */ @@ -744,17 +764,21 @@ __attribute__((__noreturn__)) static void Spawn(int os, char *exe, int fd, addr = (void *)(dynbase + (p[i].p_vaddr & -pagesz)); size = (p[i].p_vaddr & (pagesz - 1)) + p[i].p_filesz; rc = Mmap(addr, size, prot1, flags, fd, p[i].p_offset & -pagesz, os); - if (rc < 0) Pexit(os, exe, rc, "prog mmap"); - if (wipe) Bzero((void *)(dynbase + a), wipe); + if (rc < 0) + Pexit(os, exe, rc, "prog mmap"); + if (wipe) + Bzero((void *)(dynbase + a), wipe); if (prot2 != prot1) { rc = Mprotect(addr, size, prot2, os); - if (rc < 0) Pexit(os, exe, rc, "prog mprotect"); + if (rc < 0) + Pexit(os, exe, rc, "prog mprotect"); } /* allocate extra bss */ if (c > b) { flags |= MAP_ANONYMOUS; rc = Mmap((void *)(dynbase + b), c - b, prot, flags, -1, 0, os); - if (rc < 0) Pexit(os, exe, rc, "extra bss mmap"); + if (rc < 0) + Pexit(os, exe, rc, "extra bss mmap"); } } else { /* allocate pure bss */ @@ -762,7 +786,8 @@ __attribute__((__noreturn__)) static void Spawn(int os, char *exe, int fd, size = (p[i].p_vaddr & (pagesz - 1)) + p[i].p_memsz; flags |= MAP_ANONYMOUS; rc = Mmap(addr, size, prot, flags, -1, 0, os); - if (rc < 0) Pexit(os, exe, rc, "bss mmap"); + if (rc < 0) + Pexit(os, exe, rc, "bss mmap"); } } @@ -783,7 +808,8 @@ static const char *TryElf(struct ApeLoader *M, union ElfEhdrBuf *ebuf, struct ElfPhdr *p; /* validate page size */ - if (!pagesz) pagesz = 4096; + if (!pagesz) + pagesz = 4096; if (pagesz & (pagesz - 1)) { Pexit(os, exe, 0, "AT_PAGESZ isn't two power"); } @@ -818,8 +844,10 @@ static const char *TryElf(struct ApeLoader *M, union ElfEhdrBuf *ebuf, /* read program headers */ rc = Pread(fd, M->phdr.buf, size, e->e_phoff, os); - if (rc < 0) return "failed to read ELF program headers"; - if (rc != size) return "truncated read of ELF program headers"; + if (rc < 0) + return "failed to read ELF program headers"; + if (rc != size) + return "truncated read of ELF program headers"; /* bail on recoverable program header errors */ p = &M->phdr.phdr; @@ -949,7 +977,8 @@ EXTERN_C __attribute__((__noreturn__)) void ApeLoader(long di, long *sp, /* determine ape loader program name */ ape = argv[0]; - if (!ape) ape = "ape"; + if (!ape) + ape = "ape"; /* detect openbsd */ if (SupportsOpenbsd() && !os && !auxv[0]) { @@ -1021,7 +1050,8 @@ EXTERN_C __attribute__((__noreturn__)) void ApeLoader(long di, long *sp, grows down the alloc by poking the guard pages */ n = (endp - sp + 1) * sizeof(long); sp2 = (long *)__builtin_alloca(n); - if ((long)sp2 & 15) ++sp2; + if ((long)sp2 & 15) + ++sp2; for (; n > 0; n -= pagesz) { ((char *)sp2)[n - 1] = 0; } diff --git a/build/sha256sum.c b/build/sha256sum.c index 15aa45cf0..10d61850f 100644 --- a/build/sha256sum.c +++ b/build/sha256sum.c @@ -197,7 +197,8 @@ static char *FormatUint32(char *p, uint32_t x) { } static char *FormatInt32(char *p, int32_t x) { - if (x < 0) *p++ = '-', x = -(uint32_t)x; + if (x < 0) + *p++ = '-', x = -(uint32_t)x; return FormatUint32(p, x); } @@ -205,7 +206,8 @@ static size_t StrCat(char *dst, const char *src, size_t dsize) { size_t m, n = dsize; const char *p = dst; const char *q = src; - while (n-- != 0 && *dst != '\0') dst++; + while (n-- != 0 && *dst != '\0') + dst++; m = dst - p; n = dsize - m; if (n-- == 0) { @@ -277,7 +279,8 @@ static bool IsSupportedPath(const char *path) { for (i = 0;; ++i) { switch (path[i]) { case 0: - if (i) return true; + if (i) + return true; // fallthrough case '\r': case '\n': @@ -320,8 +323,10 @@ static bool ProduceDigest(const char *path, FILE *f) { char hexdigest[65]; char mode[2] = {g_mode}; unsigned char digest[32]; - if (!IsSupportedPath(path)) return false; - if (!GetDigest(path, f, digest)) return false; + if (!IsSupportedPath(path)) + return false; + if (!GetDigest(path, f, digest)) + return false; CopyHex(hexdigest, digest, 32); Write(1, hexdigest, " ", mode, path, "\n", NULL); return true; @@ -361,17 +366,24 @@ static bool CheckDigests(const char *path, FILE *f) { uint8_t wantdigest[32], gotdigest[32]; char buf[64 + 2 + PATH_MAX + 1 + 1], *p; for (line = 0; fgets(buf, sizeof(buf), f); ++line) { - if (!*Chomp(buf)) continue; + if (!*Chomp(buf)) + continue; for (p = buf, i = 0; i < 32; ++i) { - if ((a = HexToInt(*p++ & 255)) == -1) goto InvalidLine; - if ((b = HexToInt(*p++ & 255)) == -1) goto InvalidLine; + if ((a = HexToInt(*p++ & 255)) == -1) + goto InvalidLine; + if ((b = HexToInt(*p++ & 255)) == -1) + goto InvalidLine; wantdigest[i] = a << 4 | b; } - if (*p++ != ' ') goto InvalidLine; - if (!IsModeCharacter(*p++)) goto InvalidLine; + if (*p++ != ' ') + goto InvalidLine; + if (!IsModeCharacter(*p++)) + goto InvalidLine; path2 = p; - if (!*path2) goto InvalidLine; - if (!IsSupportedPath(path2)) continue; + if (!*path2) + goto InvalidLine; + if (!IsSupportedPath(path2)) + continue; if ((f2 = fopen(path2, "rb"))) { if (GetDigest(path2, f2, gotdigest)) { if (!memcmp(wantdigest, gotdigest, 32)) { diff --git a/dsp/core/alaw.c b/dsp/core/alaw.c index 3c236cdfd..584530b2d 100644 --- a/dsp/core/alaw.c +++ b/dsp/core/alaw.c @@ -27,7 +27,8 @@ */ int alaw(int x) { int a, b, i; - if ((a = x) < 0) a = ~a; + if ((a = x) < 0) + a = ~a; a >>= 4; if (a > 15) { if ((i = a >> 5)) { @@ -40,6 +41,7 @@ int alaw(int x) { a += 16; } } - if (x >= 0) a |= 128; + if (x >= 0) + a |= 128; return a ^ 85; } diff --git a/dsp/core/mulaw.c b/dsp/core/mulaw.c index 510ac29f1..e9aef8dfa 100644 --- a/dsp/core/mulaw.c +++ b/dsp/core/mulaw.c @@ -28,13 +28,15 @@ int mulaw(int x) { int b, i, a, s, l, h; a = x < 0 ? (~x >> 2) + 33 : (x >> 2) + 33; - if (a > 8191) a = 8191; + if (a > 8191) + a = 8191; i = a >> 6; s = i ? (__builtin_clz(i) ^ 31) + 2 : 1; h = 8 - s; l = (a >> s) & 15; l = 15 - l; b = (h << 4) | l; - if (x >= 0) b |= 128; + if (x >= 0) + b |= 128; return b; } diff --git a/dsp/core/scalevolume.c b/dsp/core/scalevolume.c index 3b89b2f6d..4586aeb22 100644 --- a/dsp/core/scalevolume.c +++ b/dsp/core/scalevolume.c @@ -29,7 +29,8 @@ void scalevolume(size_t n, int16_t pcm[n][8], int p) { /* TODO(jart): This isn't acceptable. */ size_t i, j; if (p > 0) { - if (p > 15) p = 15; + if (p > 15) + p = 15; for (i = 0; i < n; ++i) { for (j = 0; j < 8; ++j) { pcm[i][j] = @@ -38,7 +39,8 @@ void scalevolume(size_t n, int16_t pcm[n][8], int p) { } } else if (p < 0) { p = -p; - if (p > 15) p = 15; + if (p > 15) + p = 15; for (i = 0; i < n; ++i) { for (j = 0; j < 8; ++j) { pcm[i][j] = pcm[i][j] >> p; diff --git a/dsp/core/unalaw.c b/dsp/core/unalaw.c index bb0929bcf..dcb854a62 100644 --- a/dsp/core/unalaw.c +++ b/dsp/core/unalaw.c @@ -31,8 +31,10 @@ int unalaw(int x) { i = (x ^ 85) & 127; e = i >> 4; m = i & 15; - if (e > 0) m += 16; + if (e > 0) + m += 16; m = (m << 4) + 8; - if (e > 1) m = m << (e - 1); + if (e > 1) + m = m << (e - 1); return x & 128 ? m : -m; } diff --git a/dsp/mpeg/macroblock.c b/dsp/mpeg/macroblock.c index 10dee49ee..3639011c3 100644 --- a/dsp/mpeg/macroblock.c +++ b/dsp/mpeg/macroblock.c @@ -46,7 +46,8 @@ forceinline void plm_video_process_macroblock(plm_video_t *self, si = ((self->mb_row * BW) + vp) * dw + (self->mb_col * BW) + hp; di = (self->mb_row * dw + self->mb_col) * BW; max_address = (dw * (self->mb_height * BW - BW + 1) - BW); - if (si > max_address || di > max_address) return; + if (si > max_address || di > max_address) + return; d += di; s += si; switch (((interpolate << 2) | (odd_h << 1) | (odd_v)) & 7) { diff --git a/dsp/scale/gyarados.c b/dsp/scale/gyarados.c index b28abde83..4487b3d79 100644 --- a/dsp/scale/gyarados.c +++ b/dsp/scale/gyarados.c @@ -77,7 +77,8 @@ static struct SamplingSolution *NewSamplingSolution(long n, long s) { static bool IsNormalized(int n, double A[n]) { int i; double x; - for (x = i = 0; i < n; ++i) x += A[i]; + for (x = i = 0; i < n; ++i) + x += A[i]; return fabs(x - 1) < 1e-4; } @@ -96,8 +97,10 @@ struct SamplingSolution *ComputeSamplingSolution(long dn, long sn, double dar, short *weights, *indices; struct SamplingSolution *res; long j, i, k, n, min, max, s, N[6]; - if (!dar) dar = sn, dar /= dn; - if (!off) off = (dar - 1) / 2; + if (!dar) + dar = sn, dar /= dn; + if (!off) + off = (dar - 1) / 2; f = dar < 1 ? 1 / dar : dar; s = 3 * f + 4; fweights = gc(xcalloc(s + /*xxx*/ 2, sizeof(double))); @@ -114,8 +117,10 @@ struct SamplingSolution *ComputeSamplingSolution(long dn, long sn, double dar, for (k = 0, j = min; j <= max; ++j) { fweights[k++] = ComputeWeight((j - x) / (f / par)); } - for (sum = k = 0; k < n; ++k) sum += fweights[k]; - for (j = 0; j < n; ++j) fweights[j] *= 1 / sum; + for (sum = k = 0; k < n; ++k) + sum += fweights[k]; + for (j = 0; j < n; ++j) + fweights[j] *= 1 / sum; DCHECK(IsNormalized(n, fweights)); for (j = 0; j < n; ++j) { indices[i * s + j] = MIN(sn - 1, MAX(0, min + j)); diff --git a/dsp/tty/hidecursor.c b/dsp/tty/hidecursor.c index 3a2e7d572..9747165ae 100644 --- a/dsp/tty/hidecursor.c +++ b/dsp/tty/hidecursor.c @@ -30,8 +30,10 @@ static int ttysetcursor(int fd, bool visible) { struct NtConsoleCursorInfo ntcursor; char code[8] = "\e[?25l"; - if (__nocolor) return 0; - if (visible) code[5] = 'h'; + if (__nocolor) + return 0; + if (visible) + code[5] = 'h'; if (IsWindows()) { GetConsoleCursorInfo(GetStdHandle(kNtStdOutputHandle), &ntcursor); ntcursor.bVisible = visible; diff --git a/dsp/tty/setbgfg16.c b/dsp/tty/setbgfg16.c index 32834130c..c0ef4e34f 100644 --- a/dsp/tty/setbgfg16.c +++ b/dsp/tty/setbgfg16.c @@ -21,16 +21,20 @@ #include "libc/limits.h" static char *ansitoa(char *p, unsigned xt, unsigned base) { - if (xt >= 8) xt -= 8, base += 60; + if (xt >= 8) + xt -= 8, base += 60; return itoa8(p, xt + base); } static char *setansibgfg(char *p, unsigned bg, unsigned fg) { *p++ = '\e'; *p++ = '['; - if (bg != -1u) p = ansitoa(p, bg, 40); - if (bg != -1u && fg != -1u) *p++ = ';'; - if (fg != -1u) p = ansitoa(p, fg, 30); + if (bg != -1u) + p = ansitoa(p, bg, 40); + if (bg != -1u && fg != -1u) + *p++ = ';'; + if (fg != -1u) + p = ansitoa(p, fg, 30); *p++ = 'm'; return p; } diff --git a/dsp/tty/ttyraster.c b/dsp/tty/ttyraster.c index c439ee44c..1ced9e374 100644 --- a/dsp/tty/ttyraster.c +++ b/dsp/tty/ttyraster.c @@ -666,7 +666,8 @@ static char *CopyBlock(char *v, const struct TtyRgb chunk[hasatleast 4], struct Glyph *glyph) { unsigned i; CHECK_LT(pick.bg, 4); - if (pick.fg != 0xff) CHECK_LT(pick.fg, 4); + if (pick.fg != 0xff) + CHECK_LT(pick.fg, 4); i = 0; if (pick.fg == 0xff) { if (!ttyeq(*bg, chunk[pick.bg])) { @@ -744,7 +745,8 @@ static dontinline char *CopyRun(char *v, size_t n, v = CopyGlyph(v, *glyph); *x += 2; *c += 2; - if (*x >= n) break; + if (*x >= n) + break; CopyChunk(chunk, *c, n); } while (ChunkEq(chunk, lastchunk)); *x -= 2; diff --git a/dsp/tty/ttyraw.c b/dsp/tty/ttyraw.c index 60ebeea8d..b2b8812ef 100644 --- a/dsp/tty/ttyraw.c +++ b/dsp/tty/ttyraw.c @@ -69,13 +69,16 @@ static textstartup int ttyraw_enable(void) { } static textstartup void ttyraw_hidecursor(void) { - if (!g_ttyraw.setup) return; - if (g_ttyraw.flags & kTtyCursor) return; + if (!g_ttyraw.setup) + return; + if (g_ttyraw.flags & kTtyCursor) + return; ttyhidecursor(FD); } static textexit int ttyraw_disable(void) { - if (!g_ttyraw.setup) return 0; + if (!g_ttyraw.setup) + return 0; ttyshowcursor(FD); return ttyrestore(FD, &g_ttyraw.old); } @@ -87,7 +90,8 @@ static textexit void ttyraw_onexit(void) { static relegated void ttyraw_onsig(int sig, struct siginfo *info, struct ucontext *ctx) { size_t i; - if (g_ttyraw.noreentry) _Exit(128 + sig); + if (g_ttyraw.noreentry) + _Exit(128 + sig); g_ttyraw.noreentry = true; if (g_ttyraw.flags != -1) { if (sig == SIGCONT) { diff --git a/examples/greenbean.c b/examples/greenbean.c index 166b6e532..7d8174d90 100644 --- a/examples/greenbean.c +++ b/examples/greenbean.c @@ -104,8 +104,10 @@ void *Worker(void *id) { if (client == -1) { // accept() errors are generally ephemeral or recoverable // it'd potentially be a good idea to exponential backoff here - if (errno == ECANCELED) continue; // pthread_cancel() was called - if (errno == EMFILE) ExplainPrlimit(); + if (errno == ECANCELED) + continue; // pthread_cancel() was called + if (errno == EMFILE) + ExplainPrlimit(); LOG("accept() returned %m"); SomethingHappened(); continue; @@ -346,8 +348,10 @@ int main(int argc, char *argv[]) { if ((rc = pthread_create(th + i, &attr, Worker, (void *)(intptr_t)i))) { --a_workers; kprintf("pthread_create failed: %s\n", strerror(rc)); - if (rc == EAGAIN) ExplainPrlimit(); - if (!i) exit(1); + if (rc == EAGAIN) + ExplainPrlimit(); + if (!i) + exit(1); threads = i; break; } @@ -364,7 +368,8 @@ int main(int argc, char *argv[]) { PrintEphemeralStatusLine(); unassert(!pthread_cond_wait(&statuscond, &statuslock)); // limit status line updates to sixty frames per second - do tick = timespec_add(tick, (struct timespec){0, 1e9 / 60}); + do + tick = timespec_add(tick, (struct timespec){0, 1e9 / 60}); while (timespec_cmp(tick, timespec_real()) < 0); clock_nanosleep(CLOCK_REALTIME, TIMER_ABSTIME, &tick, 0); } @@ -378,7 +383,8 @@ int main(int argc, char *argv[]) { } // on windows this is the only way accept() can be canceled - if (IsWindows()) close(server); + if (IsWindows()) + close(server); // print status in terminal as the shutdown progresses unassert(!pthread_mutex_lock(&statuslock)); @@ -394,7 +400,8 @@ int main(int argc, char *argv[]) { } // close the server socket - if (!IsWindows()) close(server); + if (!IsWindows()) + close(server); // clean up terminal line LOG("thank you for choosing \e[32mgreenbean\e[0m"); diff --git a/examples/kilo.c b/examples/kilo.c index 9645634e1..dfc5aeb46 100644 --- a/examples/kilo.c +++ b/examples/kilo.c @@ -212,10 +212,13 @@ void editorAtExit(void) { int enableRawMode(int64_t fd) { struct termios raw; - if (E.rawmode) return 0; /* Already enabled. */ - if (!isatty(STDIN_FILENO)) goto fatal; + if (E.rawmode) + return 0; /* Already enabled. */ + if (!isatty(STDIN_FILENO)) + goto fatal; atexit(editorAtExit); - if (tcgetattr(fd, &orig_termios) == -1) goto fatal; + if (tcgetattr(fd, &orig_termios) == -1) + goto fatal; raw = orig_termios; /* modify the original mode */ /* input modes: no break, no CR to NL, no parity check, no strip char, @@ -233,7 +236,8 @@ int enableRawMode(int64_t fd) { raw.c_cc[VTIME] = 1; /* 100 ms timeout (unit is tens of second). */ /* put terminal in raw mode after flushing */ - if (tcsetattr(fd, TCSAFLUSH, &raw) < 0) goto fatal; + if (tcsetattr(fd, TCSAFLUSH, &raw) < 0) + goto fatal; E.rawmode = 1; return 0; @@ -249,7 +253,8 @@ int editorReadKey(int64_t fd) { char c, seq[3]; do { nread = read(fd, &c, 1); - if (nread == -1) exit(1); + if (nread == -1) + exit(1); } while (!nread); while (1) { @@ -260,12 +265,15 @@ int editorReadKey(int64_t fd) { return PAGE_DOWN; case '\e': /* escape sequence */ /* If this is just an ESC, we'll timeout here. */ - if (read(fd, seq, 1) == 0) return CTRL('['); + if (read(fd, seq, 1) == 0) + return CTRL('['); if (seq[0] == '[') { - if (read(fd, seq + 1, 1) == 0) return CTRL('['); + if (read(fd, seq + 1, 1) == 0) + return CTRL('['); if (seq[1] >= '0' && seq[1] <= '9') { /* Extended escape, read additional byte. */ - if (read(fd, seq + 2, 1) == 0) return CTRL('['); + if (read(fd, seq + 2, 1) == 0) + return CTRL('['); if (seq[2] == '~') { switch (seq[1]) { case '1': @@ -308,7 +316,8 @@ int editorReadKey(int64_t fd) { } else if (seq[0] == 'v') { return PAGE_UP; } else if (seq[0] == 'O') { - if (read(fd, seq + 1, 1) == 0) return CTRL('['); + if (read(fd, seq + 1, 1) == 0) + return CTRL('['); /* ESC O sequences. */ switch (seq[1]) { case 'H': @@ -332,19 +341,24 @@ int getCursorPosition(int64_t ifd, int64_t ofd, int *rows, int *cols) { unsigned i = 0; /* Report cursor location */ - if (write(ofd, "\e[6n", 4) != 4) return -1; + if (write(ofd, "\e[6n", 4) != 4) + return -1; /* Read the response: ESC [ rows ; cols R */ while (i < sizeof(buf) - 1) { - if (read(ifd, buf + i, 1) != 1) break; - if (buf[i] == 'R') break; + if (read(ifd, buf + i, 1) != 1) + break; + if (buf[i] == 'R') + break; i++; } buf[i] = '\0'; /* Parse it. */ - if (buf[0] != CTRL('[') || buf[1] != '[') return -1; - if (sscanf(buf + 2, "%d;%d", rows, cols) != 2) return -1; + if (buf[0] != CTRL('[') || buf[1] != '[') + return -1; + if (sscanf(buf + 2, "%d;%d", rows, cols) != 2) + return -1; return 0; } @@ -359,12 +373,15 @@ int getWindowSize(int64_t ifd, int64_t ofd, int *rows, int *cols) { /* Get the initial position so we can restore it later. */ retval = getCursorPosition(ifd, ofd, &orig_row, &orig_col); - if (retval == -1) goto failed; + if (retval == -1) + goto failed; /* Go to right/bottom margin and get position. */ - if (write(ofd, "\e[999C\e[999B", 12) != 12) goto failed; + if (write(ofd, "\e[999C\e[999B", 12) != 12) + goto failed; retval = getCursorPosition(ifd, ofd, rows, cols); - if (retval == -1) goto failed; + if (retval == -1) + goto failed; /* Restore position. */ char seq[32]; @@ -406,7 +423,8 @@ void editorUpdateSyntax(erow *row) { row->hl = realloc(row->hl, row->rsize); memset(row->hl, HL_NORMAL, row->rsize); - if (E.syntax == NULL) return; /* No syntax, everything is HL_NORMAL. */ + if (E.syntax == NULL) + return; /* No syntax, everything is HL_NORMAL. */ int i, prev_sep, in_string, in_comment; char *p; @@ -475,7 +493,8 @@ void editorUpdateSyntax(erow *row) { prev_sep = 0; continue; } - if (*p == in_string) in_string = 0; + if (*p == in_string) + in_string = 0; p++; i++; continue; @@ -515,7 +534,8 @@ void editorUpdateSyntax(erow *row) { for (j = 0; keywords[j]; j++) { int klen = strlen(keywords[j]); int kw2 = keywords[j][klen - 1] == '|'; - if (kw2) klen--; + if (kw2) + klen--; if (!memcmp(p, keywords[j], klen) && is_separator(*(p + klen))) { /* Keyword */ @@ -599,7 +619,8 @@ void editorUpdateRow(erow *row) { * respecting tabs, substituting non printable characters with '?'. */ free(row->render); for (j = 0; j < row->size; j++) { - if (row->chars[j] == '\t') tabs++; + if (row->chars[j] == '\t') + tabs++; } row->render = malloc(row->size + tabs * 8 + nonprint * 9 + 1); @@ -626,11 +647,13 @@ void editorUpdateRow(erow *row) { /* Insert a row at the specified position, shifting the other rows on the bottom * if required. */ void editorInsertRow(int at, char *s, size_t len) { - if (at > E.numrows) return; + if (at > E.numrows) + return; E.row = realloc(E.row, sizeof(erow) * (E.numrows + 1)); if (at != E.numrows) { memmove(E.row + at + 1, E.row + at, sizeof(E.row[0]) * (E.numrows - at)); - for (int j = at + 1; j <= E.numrows; j++) E.row[j].idx++; + for (int j = at + 1; j <= E.numrows; j++) + E.row[j].idx++; } E.row[at].size = len; E.row[at].chars = malloc(len + 1); @@ -657,11 +680,13 @@ void editorFreeRow(erow *row) { void editorDelRow(int at) { erow *row; - if (at >= E.numrows) return; + if (at >= E.numrows) + return; row = E.row + at; editorFreeRow(row); memmove(E.row + at, E.row + at + 1, sizeof(E.row[0]) * (E.numrows - at - 1)); - for (int j = at; j < E.numrows - 1; j++) E.row[j].idx++; + for (int j = at; j < E.numrows - 1; j++) + E.row[j].idx++; E.numrows--; E.dirty++; } @@ -729,7 +754,8 @@ void editorRowAppendString(erow *row, char *s, size_t len) { /* Delete the character at offset 'at' from the specified row. */ void editorRowDelChar(erow *row, int at) { - if (row->size <= at) return; + if (row->size <= at) + return; memmove(row->chars + at, row->chars + at + 1, row->size - at); editorUpdateRow(row); row->size--; @@ -745,7 +771,8 @@ void editorInsertChar(int c) { /* If the row where the cursor is currently located does not exist in our * logical representation of the file, add enough empty rows as needed. */ if (!row) { - while (E.numrows <= filerow) editorInsertRow(E.numrows, "", 0); + while (E.numrows <= filerow) + editorInsertRow(E.numrows, "", 0); } row = &E.row[filerow]; editorRowInsertChar(row, filecol, c); @@ -773,7 +800,8 @@ void editorInsertNewline(void) { } /* If the cursor is over the current line size, we want to conceptually * think it's just over the last character. */ - if (filecol >= row->size) filecol = row->size; + if (filecol >= row->size) + filecol = row->size; if (filecol == 0) { editorInsertRow(filerow, "", 0); } else { @@ -800,7 +828,8 @@ void editorDelChar(void) { int filecol = E.coloff + E.cx; erow *row = (filerow >= E.numrows) ? NULL : &E.row[filerow]; - if (!row || (filecol == 0 && filerow == 0)) return; + if (!row || (filecol == 0 && filerow == 0)) + return; if (filecol == 0) { /* Handle the case of column 0, we need to move the current line * on the right of the previous one. */ @@ -825,7 +854,8 @@ void editorDelChar(void) { else E.cx--; } - if (row) editorUpdateRow(row); + if (row) + editorUpdateRow(row); E.dirty++; } @@ -868,12 +898,15 @@ int editorSave(void) { int len; char *buf = editorRowsToString(&len); int64_t fd = open(E.filename, O_RDWR | O_CREAT, 0644); - if (fd == -1) goto writeerr; + if (fd == -1) + goto writeerr; /* Use truncate + a single write(2) call in order to make saving * a bit safer, under the limits of what we can do in a small editor. */ - if (ftruncate(fd, len) == -1) goto writeerr; - if (write(fd, buf, len) != len) goto writeerr; + if (ftruncate(fd, len) == -1) + goto writeerr; + if (write(fd, buf, len) != len) + goto writeerr; close(fd); free(buf); @@ -883,7 +916,8 @@ int editorSave(void) { writeerr: free(buf); - if (fd != -1) close(fd); + if (fd != -1) + close(fd); editorSetStatusMessage("Can't save! I/O error: %s", strerror(errno)); return 1; } @@ -924,7 +958,8 @@ void editorRefreshScreen(void) { abAppend(&ab, "~", 1); padding--; } - while (padding--) abAppend(&ab, " ", 1); + while (padding--) + abAppend(&ab, " ", 1); abAppend(&ab, welcome, welcomelen); } else { abAppend(&ab, "~\e[0K\r\n", 7); @@ -939,7 +974,8 @@ void editorRefreshScreen(void) { int current_color = -1; #endif if (len > 0) { - if (len > E.screencols) len = E.screencols; + if (len > E.screencols) + len = E.screencols; char *c = r->render + E.coloff; #if SYNTAX unsigned char *hl = r->hl + E.coloff; @@ -990,7 +1026,8 @@ void editorRefreshScreen(void) { E.numrows, E.dirty ? "(modified)" : ""); int rlen = snprintf(rstatus, sizeof(rstatus), "%d/%d", E.rowoff + E.cy + 1, E.numrows); - if (len > E.screencols) len = E.screencols; + if (len > E.screencols) + len = E.screencols; abAppend(&ab, status, len); while (len < E.screencols) { if (E.screencols - len == rlen) { @@ -1018,7 +1055,8 @@ void editorRefreshScreen(void) { erow *row = (filerow >= E.numrows) ? NULL : &E.row[filerow]; if (row) { for (j = E.coloff; j < (E.cx + E.coloff); j++) { - if (j < row->size && row->chars[j] == CTRL('I')) cx += 7 - ((cx) % 8); + if (j < row->size && row->chars[j] == CTRL('I')) + cx += 7 - ((cx) % 8); cx++; } } @@ -1069,7 +1107,8 @@ void editorFind(int64_t fd) { int c = editorReadKey(fd); if (c == DEL_KEY || c == CTRL('H') || c == CTRL('?')) { - if (qlen != 0) query[--qlen] = '\0'; + if (qlen != 0) + query[--qlen] = '\0'; last_match = -1; } else if (c == CTRL('G')) { break; @@ -1096,7 +1135,8 @@ void editorFind(int64_t fd) { } /* Search occurrence. */ - if (last_match == -1) find_next = 1; + if (last_match == -1) + find_next = 1; if (find_next) { char *match = NULL; int match_offset = 0; @@ -1190,7 +1230,8 @@ void editorMoveCursor(int key) { break; case ARROW_UP: if (E.cy == 0) { - if (E.rowoff) E.rowoff--; + if (E.rowoff) + E.rowoff--; } else { E.cy -= 1; } @@ -1299,9 +1340,11 @@ void editorProcessKeypress(int64_t fd) { case CTRL('L'): times = E.screenrows / 2; - while (times--) editorMoveCursor(c == PAGE_UP ? ARROW_UP : ARROW_DOWN); + while (times--) + editorMoveCursor(c == PAGE_UP ? ARROW_UP : ARROW_DOWN); times = E.screenrows / 2; - while (times--) editorMoveCursor(c == PAGE_UP ? ARROW_DOWN : ARROW_UP); + while (times--) + editorMoveCursor(c == PAGE_UP ? ARROW_DOWN : ARROW_UP); break; case PAGE_UP: @@ -1312,14 +1355,17 @@ void editorProcessKeypress(int64_t fd) { E.cy = E.screenrows - 1; } times = E.screenrows; - while (times--) editorMoveCursor(c == PAGE_UP ? ARROW_UP : ARROW_DOWN); + while (times--) + editorMoveCursor(c == PAGE_UP ? ARROW_UP : ARROW_DOWN); times = E.screenrows / 2; - while (times--) editorMoveCursor(c == PAGE_UP ? ARROW_DOWN : ARROW_UP); + while (times--) + editorMoveCursor(c == PAGE_UP ? ARROW_DOWN : ARROW_UP); break; case HOME_KEY: case CTRL('A'): - while (E.cx || E.coloff) editorMoveCursor(ARROW_LEFT); + while (E.cx || E.coloff) + editorMoveCursor(ARROW_LEFT); break; case END_KEY: case CTRL('E'): diff --git a/examples/nesemu1.cc b/examples/nesemu1.cc index 0f5db41cd..296980186 100644 --- a/examples/nesemu1.cc +++ b/examples/nesemu1.cc @@ -492,7 +492,8 @@ void TransmitVideo(void) { ssize_t rc; struct Frame* f; f = &vf_[frame_]; - if (!HasVideo(f)) f = FlipFrameBuffer(); + if (!HasVideo(f)) + f = FlipFrameBuffer(); if ((rc = Write(STDOUT_FILENO, f->w, f->p - f->w)) != -1) { f->w += rc; } else if (errno == EAGAIN) { @@ -504,9 +505,12 @@ void TransmitVideo(void) { void TransmitAudio(void) { ssize_t rc; - if (!playpid_) return; - if (!audio_.i) return; - if (playfd_ == -1) return; + if (!playpid_) + return; + if (!audio_.i) + return; + if (playfd_ == -1) + return; if ((rc = Write(playfd_, audio_.p, audio_.i * sizeof(short))) != -1) { rc /= sizeof(short); memmove(audio_.p, audio_.p + rc, (audio_.i - rc) * sizeof(short)); @@ -561,9 +565,12 @@ void KeyCountdown(struct Action* a) { void PollAndSynchronize(void) { do { if (ReadKeyboard() == -1) { - if (errno != EINTR) Exit(1); - if (exited_) Exit(0); - if (resized_) GetTermSize(); + if (errno != EINTR) + Exit(1); + if (exited_) + Exit(0); + if (resized_) + GetTermSize(); } } while (!timeout_); TransmitVideo(); @@ -734,7 +741,8 @@ u8 Access(unsigned addr, u8 value, bool write) { } } } - if ((addr >> 13) == 3) return PRAM[addr & 0x1FFF]; + if ((addr >> 13) == 3) + return PRAM[addr & 0x1FFF]; return banks[(addr / RomGranularity) % RomPages][addr % RomGranularity]; } @@ -828,7 +836,8 @@ bool offset_toggle = false; u8& NesMmap(int i) { i &= 0x3FFF; if (i >= 0x3F00) { - if (i % 4 == 0) i &= 0x0F; + if (i % 4 == 0) + i &= 0x0F; return palette[i & 0x1F]; } if (i < 0x2000) { @@ -844,7 +853,8 @@ u8 PpuAccess(u16 index, u8 v, bool write) { return open_bus_decay_timer = 77777, open_bus = v; }; u8 res = open_bus; - if (write) RefreshOpenBus(v); + if (write) + RefreshOpenBus(v); switch (index) { // Which port from $200x? case 0: if (write) { @@ -858,7 +868,8 @@ u8 PpuAccess(u16 index, u8 v, bool write) { } break; case 2: - if (write) break; + if (write) + break; res = reg.status | (open_bus & 0x1F); reg.InVBlank = false; // Reading $2002 clears the vblank flag. offset_toggle = false; // Also resets the toggle for address updates. @@ -867,7 +878,8 @@ u8 PpuAccess(u16 index, u8 v, bool write) { } break; case 3: - if (write) reg.OAMaddr = v; + if (write) + reg.OAMaddr = v; break; // Index into Object Attribute Memory case 4: if (write) { @@ -878,7 +890,8 @@ u8 PpuAccess(u16 index, u8 v, bool write) { } break; case 5: - if (!write) break; // Set background scrolling offset + if (!write) + break; // Set background scrolling offset if (offset_toggle) { scroll.yfine = v & 7; scroll.ycoarse = v >> 3; @@ -888,7 +901,8 @@ u8 PpuAccess(u16 index, u8 v, bool write) { offset_toggle = !offset_toggle; break; case 6: - if (!write) break; // Set video memory position for reads/writes + if (!write) + break; // Set video memory position for reads/writes if (offset_toggle) { scroll.vaddrlo = v; vaddr.raw = (unsigned)scroll.raw; @@ -926,17 +940,21 @@ void RenderingTick() { case 2: // Point to attribute table ioaddr = 0x23C0 + 0x400 * vaddr.basenta + 8 * (vaddr.ycoarse / 4) + (vaddr.xcoarse / 4); - if (tile_decode_mode) break; // Or nametable, with sprites. - case 0: // Point to nametable + if (tile_decode_mode) + break; // Or nametable, with sprites. + case 0: // Point to nametable ioaddr = 0x2000 + (vaddr.raw & 0xFFF); // Reset sprite data if (x_ == 0) { sprinpos = sproutpos = 0; - if (reg.ShowSP) reg.OAMaddr = 0; + if (reg.ShowSP) + reg.OAMaddr = 0; } - if (!reg.ShowBG) break; + if (!reg.ShowBG) + break; // Reset scrolling (vertical once, horizontal each scanline) - if (x_ == 304 && scanline == -1) vaddr.raw = (unsigned)scroll.raw; + if (x_ == 304 && scanline == -1) + vaddr.raw = (unsigned)scroll.raw; if (x_ == 256) { vaddr.xcoarse = (unsigned)scroll.xcoarse; vaddr.basenta_h = (unsigned)scroll.basenta_h; @@ -949,7 +967,8 @@ void RenderingTick() { } // Name table access pat_addr = 0x1000 * reg.BGaddr + 16 * NesMmap(ioaddr) + vaddr.yfine; - if (!tile_decode_mode) break; + if (!tile_decode_mode) + break; // Push the current tile into shift registers. // The bitmap pattern is 16 bits, while the attribute is 2 bits, repeated // 8 times. @@ -976,7 +995,8 @@ void RenderingTick() { auto& o = OAM3[sprrenpos]; // Sprite to render on next scanline memcpy(&o, &OAM2[sprrenpos], sizeof(o)); unsigned y = (scanline)-o.y; - if (o.attr & 0x80) y ^= (reg.SPsize ? 15 : 7); + if (o.attr & 0x80) + y ^= (reg.SPsize ? 15 : 7); pat_addr = 0x1000 * (reg.SPsize ? (o.index & 0x01) : reg.SPaddr); pat_addr += 0x10 * (reg.SPsize ? (o.index & 0xFE) : (o.index & 0xFF)); pat_addr += (y & 7) + (y & 8) * 2; @@ -1011,8 +1031,10 @@ void RenderingTick() { break; } ++sprinpos; // next sprite - if (sproutpos < 8) OAM2[sproutpos].y = sprtmp; - if (sproutpos < 8) OAM2[sproutpos].sprindex = reg.OAMindex; + if (sproutpos < 8) + OAM2[sproutpos].y = sprtmp; + if (sproutpos < 8) + OAM2[sproutpos].sprindex = reg.OAMindex; y1 = sprtmp; y2 = sprtmp + (reg.SPsize ? 16 : 8); if (!(scanline >= y1 && scanline < y2)) { @@ -1020,19 +1042,23 @@ void RenderingTick() { } break; case 1: - if (sproutpos < 8) OAM2[sproutpos].index = sprtmp; + if (sproutpos < 8) + OAM2[sproutpos].index = sprtmp; break; case 2: - if (sproutpos < 8) OAM2[sproutpos].attr = sprtmp; + if (sproutpos < 8) + OAM2[sproutpos].attr = sprtmp; break; case 3: - if (sproutpos < 8) OAM2[sproutpos].x_ = sprtmp; + if (sproutpos < 8) + OAM2[sproutpos].x_ = sprtmp; if (sproutpos < 8) { ++sproutpos; } else { reg.SPoverflow = true; } - if (sprinpos == 2) reg.OAMaddr = 8; + if (sprinpos == 2) + reg.OAMaddr = 8; break; } } @@ -1060,13 +1086,17 @@ void RenderPixel() { auto& s = OAM3[sno]; // Check if this sprite is horizontally in range unsigned xdiff = x_ - s.x_; - if (xdiff >= 8) continue; // Also matches negative values + if (xdiff >= 8) + continue; // Also matches negative values // Determine which pixel to display; skip transparent pixels - if (!(s.attr & 0x40)) xdiff = 7 - xdiff; + if (!(s.attr & 0x40)) + xdiff = 7 - xdiff; u8 spritepixel = (s.pattern >> (xdiff * 2)) & 3; - if (!spritepixel) continue; + if (!spritepixel) + continue; // Register sprite-0 hit if applicable - if (x_ < 255 && pixel && s.sprindex == 0) reg.SP0hit = true; + if (x_ < 255 && pixel && s.sprindex == 0) + reg.SP0hit = true; // Render the pixel unless behind-background placement wanted if (!(s.attr & 0x20) || !pixel) { attr = (s.attr & 3) + 4; @@ -1095,11 +1125,13 @@ void ReadToolAssistedSpeedrunRobotKeys() { } if (ctrlmask & 0x80) { joy_next_[0] = fgetc(fp); - if (feof(fp)) joy_next_[0] = 0; + if (feof(fp)) + joy_next_[0] = 0; } if (ctrlmask & 0x40) { joy_next_[1] = fgetc(fp); - if (feof(fp)) joy_next_[1] = 0; + if (feof(fp)) + joy_next_[1] = 0; } } } @@ -1144,18 +1176,23 @@ void Tick() { CPU::nmi = reg.InVBlank && reg.NMIenabled; break; } - if (VBlankState != 0) VBlankState += (VBlankState < 0 ? 1 : -1); - if (open_bus_decay_timer && !--open_bus_decay_timer) open_bus = 0; + if (VBlankState != 0) + VBlankState += (VBlankState < 0 ? 1 : -1); + if (open_bus_decay_timer && !--open_bus_decay_timer) + open_bus = 0; // Graphics processing scanline? if (scanline < DYN) { /* Process graphics for this cycle */ - if (reg.ShowBGSP) RenderingTick(); - if (scanline >= 0 && x_ < 256) RenderPixel(); + if (reg.ShowBGSP) + RenderingTick(); + if (scanline >= 0 && x_ < 256) + RenderPixel(); } // Done with the cycle. Check for end of scanline. - if (++cycle_counter == 3) cycle_counter = 0; // For NTSC pixel shifting + if (++cycle_counter == 3) + cycle_counter = 0; // For NTSC pixel shifting if (++x_ >= scanline_end) { // Begin new scanline FlushScanline(scanline); @@ -1242,30 +1279,36 @@ struct channel { template int Tick() { channel& ch = *this; - if (!ChannelsEnabled[c]) return c == 4 ? 64 : 8; + if (!ChannelsEnabled[c]) + return c == 4 ? 64 : 8; int wl = (ch.reg.WaveLength + 1) * (c >= 2 ? 1 : 2); - if (c == 3) wl = NoisePeriods[ch.reg.NoiseFreq]; + if (c == 3) + wl = NoisePeriods[ch.reg.NoiseFreq]; int volume = ch.length_counter ? ch.reg.EnvDecayDisable ? ch.reg.FixedVolume : ch.envelope : 0; // Sample may change at wavelen intervals. auto& S = ch.level; - if (!count(ch.wave_counter, wl)) return S; + if (!count(ch.wave_counter, wl)) + return S; switch (c) { default: // Square wave. With four different 8-step binary waveforms (32 // bits of data total). - if (wl < 8) return S = 8; + if (wl < 8) + return S = 8; return S = (0xF33C0C04u & (1u << (++ch.phase % 8 + ch.reg.DutyCycle * 8))) ? volume : 0; case 2: // Triangle wave - if (ch.length_counter && ch.linear_counter && wl >= 3) ++ch.phase; + if (ch.length_counter && ch.linear_counter && wl >= 3) + ++ch.phase; return S = (ch.phase & 15) ^ ((ch.phase & 16) ? 15 : 0); case 3: // Noise: Linear feedback shift register - if (!ch.hold) ch.hold = 1; + if (!ch.hold) + ch.hold = 1; ch.hold = (ch.hold >> 1) | (((ch.hold ^ (ch.hold >> (ch.reg.NoiseType ? 6 : 1))) & 1) << 14); @@ -1302,7 +1345,8 @@ struct channel { } else { v -= 2; } - if (v >= 0 && v <= 0x7F) ch.linear_counter = v; + if (v >= 0 && v <= 0x7F) + ch.linear_counter = v; } return S = ch.linear_counter; } @@ -1338,7 +1382,8 @@ void Write(u8 index, u8 value) { ch.linear_counter = ch.reg.LinearCounterInit; ch.env_delay = ch.reg.EnvDecayRate; ch.envelope = 15; - if (index < 8) ch.phase = 0; + if (index < 8) + ch.phase = 0; break; case 0x10: ch.reg.reg3 = value; @@ -1384,9 +1429,11 @@ u8 Read() { for (c = 0; c < 5; ++c) { res |= channels[c].length_counter ? 1 << c : 0; } - if (PeriodicIRQ) res |= 0x40; + if (PeriodicIRQ) + res |= 0x40; PeriodicIRQ = false; - if (DMC_IRQ) res |= 0x80; + if (DMC_IRQ) + res |= 0x80; DMC_IRQ = false; CPU::intr = false; return res; @@ -1396,7 +1443,8 @@ void Tick() { // Invoked at CPU's rate. // Divide CPU clock by 7457.5 to get a 240 Hz, which controls certain events. if ((hz240counter.lo += 2) >= 14915) { hz240counter.lo -= 14915; - if (++hz240counter.hi >= 4 + FiveCycleDivider) hz240counter.hi = 0; + if (++hz240counter.hi >= 4 + FiveCycleDivider) + hz240counter.hi = 0; // 60 Hz interval: IRQ. IRQ is not invoked in five-cycle mode (48 Hz). if (!IRQdisable && !FiveCycleDivider && hz240counter.hi == 0) { @@ -1422,7 +1470,8 @@ void Tick() { // Invoked at CPU's rate. if (wl >= 8 && ch.reg.SweepEnable && ch.reg.SweepShift) { int s = wl >> ch.reg.SweepShift, d[4] = {s, s, ~s, -s}; wl += d[ch.reg.SweepDecrease * 2 + c]; - if (wl < 0x800) ch.reg.WaveLength = wl; + if (wl < 0x800) + ch.reg.WaveLength = wl; } // Linear tick (triangle wave only) @@ -1464,20 +1513,24 @@ namespace CPU { void Tick() { // PPU clock: 3 times the CPU rate - for (unsigned n = 0; n < 3; ++n) PPU::Tick(); + for (unsigned n = 0; n < 3; ++n) + PPU::Tick(); // APU clock: 1 times the CPU rate - for (unsigned n = 0; n < 1; ++n) APU::Tick(); + for (unsigned n = 0; n < 1; ++n) + APU::Tick(); } template u8 MemAccess(u16 addr, u8 v) { // Memory writes are turned into reads while reset is being signalled - if (reset && write) return MemAccess<0>(addr); + if (reset && write) + return MemAccess<0>(addr); Tick(); // Map the memory from CPU's viewpoint. /**/ if (addr < 0x2000) { u8& r = RAM[addr & 0x7FF]; - if (!write) return r; + if (!write) + return r; r = v; } else if (addr < 0x4000) { return PPU::PpuAccess(addr & 7, v, write); @@ -1489,17 +1542,21 @@ u8 MemAccess(u16 addr, u8 v) { WB(0x2004, RB((v & 7) * 0x0100 + b)); return 0; case 0x15: - if (!write) return APU::Read(); + if (!write) + return APU::Read(); APU::Write(0x15, v); break; case 0x16: - if (!write) return JoyRead(0); + if (!write) + return JoyRead(0); JoyStrobe(v); break; case 0x17: - if (!write) return JoyRead(1); // write:passthru + if (!write) + return JoyRead(1); // write:passthru default: - if (!write) break; + if (!write) + break; APU::Write(addr & 0x1F, v); } } else { @@ -1527,7 +1584,8 @@ u16 wrap(u16 oldaddr, u16 newaddr) { } void Misfire(u16 old, u16 addr) { u16 q = wrap(old, addr); - if (q != addr) RB(q); + if (q != addr) + RB(q); } u8 Pop() { return RB(0x100 | u8(++S)); @@ -1655,7 +1713,8 @@ void Op() { } else if (intr && !P.I) { op = 0x102; } - if (!nmi_now) nmi_edge_detected = false; + if (!nmi_now) + nmi_edge_detected = false; // Define function pointers for each opcode (00..FF) and each interrupt // (100,101,102) @@ -1757,12 +1816,15 @@ Press enter to continue without sound: ", fgetc(fp); fgetc(fp); - if (mappernum >= 0x40) mappernum &= 15; + if (mappernum >= 0x40) + mappernum &= 15; GamePak::mappernum = mappernum; // Read the ROM data - if (rom16count) GamePak::ROM.resize(rom16count * 0x4000); - if (vrom8count) GamePak::VRAM.resize(vrom8count * 0x2000); + if (rom16count) + GamePak::ROM.resize(rom16count * 0x4000); + if (vrom8count) + GamePak::VRAM.resize(vrom8count * 0x2000); fread(&GamePak::ROM[0], rom16count, 0x4000, fp); fread(&GamePak::VRAM[0], vrom8count, 0x2000, fp); @@ -1776,10 +1838,12 @@ Press enter to continue without sound: ", PPU::reg.value = 0; // Pre-initialize RAM the same way as FCEUX does, to improve TAS sync. - for (unsigned a = 0; a < 0x800; ++a) CPU::RAM[a] = (a & 4) ? 0xFF : 0x00; + for (unsigned a = 0; a < 0x800; ++a) + CPU::RAM[a] = (a & 4) ? 0xFF : 0x00; // Run the CPU until the program is killed. - for (;;) CPU::Op(); + for (;;) + CPU::Op(); } wontreturn void PrintUsage(int rc, FILE* f) { diff --git a/examples/picol.c b/examples/picol.c index fe32ba9fd..fd54cca53 100644 --- a/examples/picol.c +++ b/examples/picol.c @@ -123,14 +123,16 @@ int picolParseCommand(struct picolParser *p) { } else if (*p->p == '[' && blevel == 0) { level++; } else if (*p->p == ']' && blevel == 0) { - if (!--level) break; + if (!--level) + break; } else if (*p->p == '\\') { p->p++; p->len--; } else if (*p->p == '{') { blevel++; } else if (*p->p == '}') { - if (blevel != 0) blevel--; + if (blevel != 0) + blevel--; } p->p++; p->len--; @@ -270,11 +272,13 @@ int picolGetToken(struct picolParser *p) { case ' ': case '\t': case '\r': - if (p->insidequote) return picolParseString(p); + if (p->insidequote) + return picolParseString(p); return picolParseSep(p); case '\n': case ';': - if (p->insidequote) return picolParseString(p); + if (p->insidequote) + return picolParseString(p); return picolParseEol(p); case '[': return picolParseCommand(p); @@ -310,7 +314,8 @@ void picolSetResult(struct picolInterp *i, char *s) { struct picolVar *picolGetVar(struct picolInterp *i, char *name) { struct picolVar *v = i->callframe->vars; while (v) { - if (strcmp(v->name, name) == 0) return v; + if (strcmp(v->name, name) == 0) + return v; v = v->next; } return NULL; @@ -334,7 +339,8 @@ int picolSetVar(struct picolInterp *i, char *name, char *val) { struct picolCmd *picolGetCommand(struct picolInterp *i, char *name) { struct picolCmd *c = i->commands; while (c) { - if (strcmp(c->name, name) == 0) return c; + if (strcmp(c->name, name) == 0) + return c; c = c->next; } return NULL; @@ -372,9 +378,11 @@ int picolEval(struct picolInterp *i, char *t) { int tlen; int prevtype = p.type; picolGetToken(&p); - if (p.type == PT_EOF) break; + if (p.type == PT_EOF) + break; tlen = p.end - p.start + 1; - if (tlen < 0) tlen = 0; + if (tlen < 0) + tlen = 0; t = malloc(tlen + 1); memcpy(t, p.start, tlen); t[tlen] = '\0'; @@ -392,7 +400,8 @@ int picolEval(struct picolInterp *i, char *t) { } else if (p.type == PT_CMD) { retcode = picolEval(i, t); free(t); - if (retcode != PICOL_OK) goto err; + if (retcode != PICOL_OK) + goto err; t = strdup(i->result); } else if (p.type == PT_ESC) { /* XXX: escape handling missing! */ @@ -414,10 +423,12 @@ int picolEval(struct picolInterp *i, char *t) { goto err; } retcode = c->func(i, argc, argv, c->privdata); - if (retcode != PICOL_OK) goto err; + if (retcode != PICOL_OK) + goto err; } /* Prepare for the next command */ - for (j = 0; j < argc; j++) free(argv[j]); + for (j = 0; j < argc; j++) + free(argv[j]); free(argv); argv = NULL; argc = 0; @@ -438,7 +449,8 @@ int picolEval(struct picolInterp *i, char *t) { prevtype = p.type; } err: - for (j = 0; j < argc; j++) free(argv[j]); + for (j = 0; j < argc; j++) + free(argv[j]); free(argv); return retcode; } @@ -454,7 +466,8 @@ int picolArityErr(struct picolInterp *i, char *name) { int picolCommandMath(struct picolInterp *i, int argc, char **argv, void *pd) { char buf[64]; int a, b, c; - if (argc != 3) return picolArityErr(i, argv[0]); + if (argc != 3) + return picolArityErr(i, argv[0]); a = atoi(argv[1]); b = atoi(argv[2]); if (argv[0][0] == '+') @@ -485,22 +498,26 @@ int picolCommandMath(struct picolInterp *i, int argc, char **argv, void *pd) { } int picolCommandSet(struct picolInterp *i, int argc, char **argv, void *pd) { - if (argc != 3) return picolArityErr(i, argv[0]); + if (argc != 3) + return picolArityErr(i, argv[0]); picolSetVar(i, argv[1], argv[2]); picolSetResult(i, argv[2]); return PICOL_OK; } int picolCommandPuts(struct picolInterp *i, int argc, char **argv, void *pd) { - if (argc != 2) return picolArityErr(i, argv[0]); + if (argc != 2) + return picolArityErr(i, argv[0]); printf("%s\n", argv[1]); return PICOL_OK; } int picolCommandIf(struct picolInterp *i, int argc, char **argv, void *pd) { int retcode; - if (argc != 3 && argc != 5) return picolArityErr(i, argv[0]); - if ((retcode = picolEval(i, argv[1])) != PICOL_OK) return retcode; + if (argc != 3 && argc != 5) + return picolArityErr(i, argv[0]); + if ((retcode = picolEval(i, argv[1])) != PICOL_OK) + return retcode; if (atoi(i->result)) return picolEval(i, argv[2]); else if (argc == 5) @@ -509,10 +526,12 @@ int picolCommandIf(struct picolInterp *i, int argc, char **argv, void *pd) { } int picolCommandWhile(struct picolInterp *i, int argc, char **argv, void *pd) { - if (argc != 3) return picolArityErr(i, argv[0]); + if (argc != 3) + return picolArityErr(i, argv[0]); while (1) { int retcode = picolEval(i, argv[1]); - if (retcode != PICOL_OK) return retcode; + if (retcode != PICOL_OK) + return retcode; if (atoi(i->result)) { if ((retcode = picolEval(i, argv[2])) == PICOL_CONTINUE) continue; @@ -530,7 +549,8 @@ int picolCommandWhile(struct picolInterp *i, int argc, char **argv, void *pd) { int picolCommandRetCodes(struct picolInterp *i, int argc, char **argv, void *pd) { - if (argc != 1) return picolArityErr(i, argv[0]); + if (argc != 1) + return picolArityErr(i, argv[0]); if (strcmp(argv[0], "break") == 0) return PICOL_BREAK; else if (strcmp(argv[0], "continue") == 0) @@ -564,25 +584,31 @@ int picolCommandCallProc(struct picolInterp *i, int argc, char **argv, tofree = p; while (1) { char *start = p; - while (*p != ' ' && *p != '\0') p++; + while (*p != ' ' && *p != '\0') + p++; if (*p != '\0' && p == start) { p++; continue; } - if (p == start) break; + if (p == start) + break; if (*p == '\0') done = 1; else *p = '\0'; - if (++arity > argc - 1) goto arityerr; + if (++arity > argc - 1) + goto arityerr; picolSetVar(i, start, argv[arity]); p++; - if (done) break; + if (done) + break; } free(tofree); - if (arity != argc - 1) goto arityerr; + if (arity != argc - 1) + goto arityerr; errcode = picolEval(i, body); - if (errcode == PICOL_RETURN) errcode = PICOL_OK; + if (errcode == PICOL_RETURN) + errcode = PICOL_OK; picolDropCallFrame(i); /* remove the called proc callframe */ return errcode; arityerr: @@ -594,14 +620,16 @@ arityerr: int picolCommandProc(struct picolInterp *i, int argc, char **argv, void *pd) { char **procdata = malloc(sizeof(char *) * 2); - if (argc != 4) return picolArityErr(i, argv[0]); + if (argc != 4) + return picolArityErr(i, argv[0]); procdata[0] = strdup(argv[2]); /* arguments list */ procdata[1] = strdup(argv[3]); /* procedure body */ return picolRegisterCommand(i, argv[1], picolCommandCallProc, procdata); } int picolCommandReturn(struct picolInterp *i, int argc, char **argv, void *pd) { - if (argc != 1 && argc != 2) return picolArityErr(i, argv[0]); + if (argc != 1 && argc != 2) + return picolArityErr(i, argv[0]); picolSetResult(i, (argc == 2) ? argv[1] : ""); return PICOL_RETURN; } @@ -631,9 +659,11 @@ int main(int argc, char **argv) { int retcode; printf("picol> "); fflush(stdout); - if (fgets(clibuf, 1024, stdin) == NULL) return 0; + if (fgets(clibuf, 1024, stdin) == NULL) + return 0; retcode = picolEval(&interp, clibuf); - if (interp.result[0] != '\0') printf("[%d] %s\n", retcode, interp.result); + if (interp.result[0] != '\0') + printf("[%d] %s\n", retcode, interp.result); } } else if (argc == 2) { char buf[1024 * 16]; @@ -644,7 +674,8 @@ int main(int argc, char **argv) { } buf[fread(buf, 1, 1024 * 16, fp)] = '\0'; fclose(fp); - if (picolEval(&interp, buf) != PICOL_OK) printf("%s\n", interp.result); + if (picolEval(&interp, buf) != PICOL_OK) + printf("%s\n", interp.result); } return 0; } diff --git a/examples/rusage.c b/examples/rusage.c index 7a965a162..d86160987 100644 --- a/examples/rusage.c +++ b/examples/rusage.c @@ -23,7 +23,8 @@ int main(int argc, char *argv[]) { const char *prog = argv[0]; - if (!prog) prog = "rusage"; + if (!prog) + prog = "rusage"; if (argc < 2) { tinyprint(2, prog, ": missing command\n", NULL); diff --git a/examples/spawn_bench.c b/examples/spawn_bench.c index b04f1bc2f..38423389d 100644 --- a/examples/spawn_bench.c +++ b/examples/spawn_bench.c @@ -50,8 +50,10 @@ static char *Ithoa(char p[27], unsigned long x) { } while (x); for (;;) { *p++ = m[--i]; - if (!i) break; - if (!(i % 3)) *p++ = ','; + if (!i) + break; + if (!(i % 3)) + *p++ = ','; } *p = '\0'; return p; diff --git a/examples/stackexplorer.c b/examples/stackexplorer.c index 13f60f134..5b5d9add9 100644 --- a/examples/stackexplorer.c +++ b/examples/stackexplorer.c @@ -36,8 +36,10 @@ void Append(intptr_t i, char *s) { int Compare(const void *a, const void *b) { struct Thing *x = (struct Thing *)a; struct Thing *y = (struct Thing *)b; - if (x->i < y->i) return +1; - if (x->i > y->i) return -1; + if (x->i < y->i) + return +1; + if (x->i > y->i) + return -1; return 0; } @@ -46,19 +48,22 @@ int main(int argc, char *argv[]) { Append((uintptr_t)__oldstack, "__oldstack"); for (int i = 0;; ++i) { Append((uintptr_t)&argv[i], xasprintf("&argv[%d] = %`'s", i, argv[i])); - if (!argv[i]) break; + if (!argv[i]) + break; Append((uintptr_t)argv[i], xasprintf("argv[%d] = %`'s", i, argv[i])); } for (int i = 0;; ++i) { Append((uintptr_t)&environ[i], xasprintf("&environ[%d] = %`'s", i, environ[i])); - if (!environ[i]) break; + if (!environ[i]) + break; Append((uintptr_t)environ[i], xasprintf("environ[%d] = %`'s", i, environ[i])); } for (int i = 0;; i += 2) { Append((uintptr_t)&__auxv[i], xasprintf("&auxv[%d] = %ld", i, __auxv[i])); - if (!__auxv[i]) break; + if (!__auxv[i]) + break; Append((uintptr_t)&__auxv[i + 1], xasprintf("&auxv[%d] = %#lx", i + 1, __auxv[i + 1])); } diff --git a/examples/ttyinfo.c b/examples/ttyinfo.c index 2febd7a1f..6f111acbe 100644 --- a/examples/ttyinfo.c +++ b/examples/ttyinfo.c @@ -198,7 +198,8 @@ int main(int argc, char *argv[]) { dprintf(outfd, "%`'.*s (got %d) ", n, code, n); if (iscntrl(code[0]) && !code[1]) { dprintf(outfd, "is CTRL-%c a.k.a. ^%c\r\n", CTRL(code[0]), CTRL(code[0])); - if (code[0] == CTRL('C') || code[0] == CTRL('D')) break; + if (code[0] == CTRL('C') || code[0] == CTRL('D')) + break; } else if (startswith(code, "\e[") && endswith(code, "R")) { yn = 1, xn = 1; sscanf(code, "\e[%d;%dR", &yn, &xn); diff --git a/examples/uname.c b/examples/uname.c index bdaa6cf6b..81ef6749a 100644 --- a/examples/uname.c +++ b/examples/uname.c @@ -13,7 +13,8 @@ int main(int argc, char *argv[]) { struct utsname names; - if (uname(&names)) return 1; + if (uname(&names)) + return 1; printf("%-10s %`'s\n", "sysname", names.sysname); printf("%-10s %`'s\n", "release", names.release); printf("%-10s %`'s\n", "version", names.version); diff --git a/examples/unbourne.c b/examples/unbourne.c index 536af38b5..034ad8aff 100644 --- a/examples/unbourne.c +++ b/examples/unbourne.c @@ -371,25 +371,28 @@ barrier(); \ 0; \ }) -#define INTON \ - ({ \ - barrier(); \ - if (--suppressint == 0 && intpending) onint(); \ - 0; \ +#define INTON \ + ({ \ + barrier(); \ + if (--suppressint == 0 && intpending) \ + onint(); \ + 0; \ }) -#define FORCEINTON \ - ({ \ - barrier(); \ - suppressint = 0; \ - if (intpending) onint(); \ - 0; \ +#define FORCEINTON \ + ({ \ + barrier(); \ + suppressint = 0; \ + if (intpending) \ + onint(); \ + 0; \ }) #define SAVEINT(v) ((v) = suppressint) -#define RESTOREINT(v) \ - ({ \ - barrier(); \ - if ((suppressint = (v)) == 0 && intpending) onint(); \ - 0; \ +#define RESTOREINT(v) \ + ({ \ + barrier(); \ + if ((suppressint = (v)) == 0 && intpending) \ + onint(); \ + 0; \ }) #define CLEAR_PENDING_INT intpending = 0 #define int_pending() intpending @@ -1577,7 +1580,8 @@ static inline int max_int_length(int bytes) { /* prefix -- see if pfx is a prefix of string. */ static char *prefix(const char *string, const char *pfx) { while (*pfx) { - if (*pfx++ != *string++) return 0; + if (*pfx++ != *string++) + return 0; } return (char *)string; } @@ -1606,7 +1610,8 @@ enum ShErrorAction { E_OPEN, E_CREAT, E_EXEC }; * Action describes the operation that got the error. */ static const char *errmsg(int e, enum ShErrorAction action) { - if (e != ENOENT && e != ENOTDIR) return strerror(e); + if (e != ENOENT && e != ENOTDIR) + return strerror(e); switch (action) { case E_OPEN: return "No such file"; @@ -1629,7 +1634,8 @@ static inline void sigclearmask(void) { * stored in the global variable "exception". */ wontreturn static void exraise(int e) { - if (vforked) _exit(exitstatus); + if (vforked) + _exit(exitstatus); INTOFF; exception = e; longjmp(handler->loc, 1); @@ -1655,12 +1661,14 @@ wontreturn static void onint(void) { static pointer ckmalloc(unsigned nbytes) { pointer p; - if (!(p = malloc(nbytes))) abort(); + if (!(p = malloc(nbytes))) + abort(); return p; } static pointer ckrealloc(pointer p, unsigned nbytes) { - if (!(p = realloc(p, nbytes))) abort(); + if (!(p = realloc(p, nbytes))) + abort(); return p; } @@ -1668,13 +1676,14 @@ static pointer ckrealloc(pointer p, unsigned nbytes) { #define stackblocksize() stacknleft #define STARTSTACKSTR(p) ((p) = stackblock()) #define STPUTC(c, p) ((p) = _STPUTC((c), (p))) -#define CHECKSTRSPACE(n, p) \ - ({ \ - char *q = (p); \ - unsigned l = (n); \ - unsigned m = sstrend - q; \ - if (l > m) (p) = makestrspace(l, q); \ - 0; \ +#define CHECKSTRSPACE(n, p) \ + ({ \ + char *q = (p); \ + unsigned l = (n); \ + unsigned m = sstrend - q; \ + if (l > m) \ + (p) = makestrspace(l, q); \ + 0; \ }) #define USTPUTC(c, p) (*p++ = (c)) #define STACKSTRNUL(p) \ @@ -1696,9 +1705,11 @@ static pointer stalloc(unsigned nbytes) { unsigned blocksize; struct stack_block *sp; blocksize = aligned; - if (blocksize < MINSIZE) blocksize = MINSIZE; + if (blocksize < MINSIZE) + blocksize = MINSIZE; len = sizeof(struct stack_block) - MINSIZE + blocksize; - if (len < blocksize) abort(); + if (len < blocksize) + abort(); INTOFF; sp = ckmalloc(len); sp->prev = stackp; @@ -1759,9 +1770,11 @@ int __xwrite(int, const void *, uint64_t); static void flushout(struct output *dest) { unsigned len; len = dest->nextc - dest->buf; - if (!len || dest->fd < 0) return; + if (!len || dest->fd < 0) + return; dest->nextc = dest->buf; - if ((__xwrite(dest->fd, dest->buf, len))) dest->flags |= OUTPUT_ERR; + if ((__xwrite(dest->fd, dest->buf, len))) + dest->flags |= OUTPUT_ERR; } static void flushall(void) { @@ -1794,8 +1807,10 @@ static int Xvasprintf(char **sp, unsigned size, const char *f, va_list ap) { va_copy(ap2, ap); len = xvsnprintf(*sp, size, f, ap2); va_end(ap2); - if (len < 0) abort(); - if (len < size) return len; + if (len < 0) + abort(); + if (len < size) + return len; s = stalloc((len >= stackblocksize() ? len : stackblocksize()) + 1); *sp = s; len = xvsnprintf(s, len + 1, f, ap); @@ -1827,7 +1842,8 @@ static void outmem(const char *p, unsigned len, struct output *dest) { flushout(dest); } nleft = dest->end - dest->nextc; - if (nleft > len) goto buffered; + if (nleft > len) + goto buffered; if ((__xwrite(dest->fd, p, len))) { dest->flags |= OUTPUT_ERR; } @@ -1982,7 +1998,8 @@ wontreturn static void varunset(const char *end, const char *var_, msg = "parameter not set"; if (umsg) { if (*end == (char)CTLENDVAR) { - if (varflags & VSNUL) tail = " or null"; + if (varflags & VSNUL) + tail = " or null"; } else msg = umsg; } @@ -1997,14 +2014,18 @@ static int64_t atomax(const char *s, int base) { int64_t r; errno = 0; r = strtoimax(s, &p, base); - if (errno == ERANGE) badnum(s); + if (errno == ERANGE) + badnum(s); /* * Disallow completely blank strings in non-arithmetic (base != 0) * contexts. */ - if (p == s && base) badnum(s); - while (isspace((unsigned char)*p)) p++; - if (*p) badnum(s); + if (p == s && base) + badnum(s); + while (isspace((unsigned char)*p)) + p++; + if (*p) + badnum(s); return r; } @@ -2018,7 +2039,8 @@ static int64_t atomax10(const char *s) { */ static int number(const char *s) { int64_t n = atomax10(s); - if (n < 0 || n > INT_MAX) badnum(s); + if (n < 0 || n > INT_MAX) + badnum(s); return n; } @@ -2038,9 +2060,11 @@ static inline int64_t getn(const char *s) { static void growstackblock(unsigned min) { unsigned newlen; newlen = stacknleft * 2; - if (newlen < stacknleft) sh_error("Out of space"); + if (newlen < stacknleft) + sh_error("Out of space"); min = SHELL_ALIGN(min | 128); - if (newlen < min) newlen += min; + if (newlen < min) + newlen += min; if (stacknxt == stackp->space && stackp != &stackbase) { struct stack_block *sp; struct stack_block *prevstackp; @@ -2090,7 +2114,8 @@ static void *growstackstr(void) { } static char *growstackto(unsigned len) { - if (stackblocksize() < len) growstackblock(len); + if (stackblocksize() < len) + growstackblock(len); return stackblock(); } @@ -2099,7 +2124,8 @@ static char *growstackto(unsigned len) { */ static char *savestr(const char *s) { char *p = strdup(s); - if (!p) sh_error("Out of space"); + if (!p) + sh_error("Out of space"); return p; } @@ -2293,13 +2319,15 @@ static unsigned cvtnum(int64_t num, int flags); static int getchr(void) { int val = 0; - if (*gargv) val = **gargv++; + if (*gargv) + val = **gargv++; return val; } static char *getstr(void) { char *val = nullstr; - if (*gargv) val = *gargv++; + if (*gargv) + val = *gargv++; return val; } @@ -2308,7 +2336,8 @@ static char *getstr(void) { */ static int is_number(const char *p) { do { - if (!is_digit(*p)) return 0; + if (!is_digit(*p)) + return 0; } while (*++p != '\0'); return 1; } @@ -2328,14 +2357,16 @@ static inline void outc(int ch, struct output *file) { } static inline char *_STPUTC(int c, char *p) { - if (p == sstrend) p = growstackstr(); + if (p == sstrend) + p = growstackstr(); *p++ = c; return p; } static void ifsfree(void) { struct ifsregion *p = ifsfirst.next; - if (!p) goto out; + if (!p) + goto out; INTOFF; do { struct ifsregion *ifsp; @@ -2402,7 +2433,8 @@ static void rmaliases(void) { struct alias *lookupalias(const char *name, int check) { struct alias *ap = *__lookupalias(name); - if (check && ap && (ap->flag & ALIASINUSE)) return (NULL); + if (check && ap && (ap->flag & ALIASINUSE)) + return (NULL); return (ap); } @@ -2579,7 +2611,8 @@ static int shlex() { checkeq: buf++; checkeqcur: - if (*buf != '=') goto out; + if (*buf != '=') + goto out; value += 11; break; case '>': @@ -2681,12 +2714,15 @@ out: static int varcmp(const char *p, const char *q) { int c, d; while ((c = *p) == (d = *q)) { - if (!c || c == '=') goto out; + if (!c || c == '=') + goto out; p++; q++; } - if (c == '=') c = 0; - if (d == '=') d = 0; + if (c == '=') + c = 0; + if (d == '=') + d = 0; out: return c - d; } @@ -2715,7 +2751,8 @@ static int64_t do_binop(int op, int64_t a, int64_t b) { default: case ARITH_REM: case ARITH_DIV: - if (!b) yyerror("division by zero"); + if (!b) + yyerror("division by zero"); return op == ARITH_REM ? a % b : a / b; case ARITH_MUL: return a * b; @@ -2754,7 +2791,8 @@ again: switch (token) { case ARITH_LPAREN: result = assignment(op, noeval); - if (last_token != ARITH_RPAREN) yyerror("expecting ')'"); + if (last_token != ARITH_RPAREN) + yyerror("expecting ')'"); last_token = shlex(); return result; case ARITH_NUM: @@ -2809,7 +2847,8 @@ static int64_t binop2(int64_t a, int op, int prec, int noeval) { static int64_t binop(int token, union yystype *val, int op, int noeval) { int64_t a = primary(token, val, op, noeval); op = last_token; - if (op < ARITH_BINOP_MIN || op >= ARITH_BINOP_MAX) return a; + if (op < ARITH_BINOP_MIN || op >= ARITH_BINOP_MAX) + return a; return binop2(a, op, ARITH_MAX_PREC, noeval); } @@ -2817,7 +2856,8 @@ static int64_t and (int token, union yystype *val, int op, int noeval) { int64_t a = binop(token, val, op, noeval); int64_t b; op = last_token; - if (op != ARITH_AND) return a; + if (op != ARITH_AND) + return a; token = shlex(); *val = yylval; b = and(token, val, shlex(), noeval | !a); @@ -2828,7 +2868,8 @@ static int64_t or (int token, union yystype *val, int op, int noeval) { int64_t a = and(token, val, op, noeval); int64_t b; op = last_token; - if (op != ARITH_OR) return a; + if (op != ARITH_OR) + return a; token = shlex(); *val = yylval; b = or (token, val, shlex(), noeval | !!a); @@ -2839,9 +2880,11 @@ static int64_t cond(int token, union yystype *val, int op, int noeval) { int64_t a = or (token, val, op, noeval); int64_t b; int64_t c; - if (last_token != ARITH_QMARK) return a; + if (last_token != ARITH_QMARK) + return a; b = assignment(shlex(), noeval | !a); - if (last_token != ARITH_COLON) yyerror("expecting ':'"); + if (last_token != ARITH_COLON) + yyerror("expecting ':'"); token = shlex(); *val = yylval; c = cond(token, val, shlex(), noeval | !!a); @@ -2852,12 +2895,14 @@ static int64_t assignment(int var_, int noeval) { union yystype val = yylval; int op = shlex(); int64_t result; - if (var_ != ARITH_VAR) return cond(var_, &val, op, noeval); + if (var_ != ARITH_VAR) + return cond(var_, &val, op, noeval); if (op != ARITH_ASS && (op < ARITH_ASS_MIN || op >= ARITH_ASS_MAX)) { return cond(var_, &val, op, noeval); } result = assignment(shlex(), noeval); - if (noeval) return result; + if (noeval) + return result; return setvarint( val.name, (op == ARITH_ASS ? result @@ -2869,7 +2914,8 @@ static int64_t arith(const char *s) { int64_t result; arith_buf = arith_startbuf = s; result = assignment(shlex(), 0); - if (last_token) yyerror("expecting EOF"); + if (last_token) + yyerror("expecting EOF"); return result; } @@ -2915,8 +2961,10 @@ static int cdcmd(int argc, char **argv) { dest = bltinlookup("OLDPWD"); flags |= CD_PRINT; } - if (!dest) dest = nullstr; - if (*dest == '/') goto step6; + if (!dest) + dest = nullstr; + if (*dest == '/') + goto step6; if (*dest == '.') { c = dest[1]; dotdot: @@ -2926,18 +2974,22 @@ static int cdcmd(int argc, char **argv) { goto step6; case '.': c = dest[2]; - if (c != '.') goto dotdot; + if (c != '.') + goto dotdot; } } - if (!*dest) dest = "."; + if (!*dest) + dest = "."; path = bltinlookup("CDPATH"); while (p = path, (len = padvance_magic(&path, dest, 0)) >= 0) { c = *p; p = stalloc(len); if (stat(p, &statb) >= 0 && S_ISDIR(statb.st_mode)) { - if (c && c != ':') flags |= CD_PRINT; + if (c && c != ':') + flags |= CD_PRINT; docd: - if (!docd(p, flags)) goto out; + if (!docd(p, flags)) + goto out; goto err; } } @@ -2948,7 +3000,8 @@ err: sh_error("can't cd to %s", dest); __builtin_unreachable(); out: - if (flags & CD_PRINT) out1fmt(snlfmt, curdir); + if (flags & CD_PRINT) + out1fmt(snlfmt, curdir); return 0; } @@ -2963,10 +3016,12 @@ static int docd(const char *dest, int flags) { INTOFF; if (!(flags & CD_PHYSICAL)) { dir = updatepwd(dest); - if (dir) dest = dir; + if (dir) + dest = dir; } err = chdir(dest); - if (err) goto out; + if (err) + goto out; setpwd(dir, 1); hashcd(); out: @@ -2986,14 +3041,17 @@ static const char *updatepwd(const char *dir) { cdcomppath = sstrdup(dir); STARTSTACKSTR(new); if (*dir != '/') { - if (curdir == nullstr) return 0; + if (curdir == nullstr) + return 0; new = stputs(curdir, new); } new = makestrspace(strlen(dir) + 2, new); lim = (char *)stackblock() + 1; if (*dir != '/') { - if (new[-1] != '/') USTPUTC('/', new); - if (new > lim && *lim == '/') lim++; + if (new[-1] != '/') + USTPUTC('/', new); + if (new > lim &&*lim == '/') + lim++; } else { USTPUTC('/', new); cdcomppath++; @@ -3010,7 +3068,8 @@ static const char *updatepwd(const char *dir) { if (p[1] == '.' && p[2] == '\0') { while (new > lim) { STUNPUTC(new); - if (new[-1] == '/') break; + if (new[-1] == '/') + break; } break; } else if (p[1] == '\0') @@ -3022,7 +3081,8 @@ static const char *updatepwd(const char *dir) { } p = strtok(0, "/"); } - if (new > lim) STUNPUTC(new); + if (new > lim) + STUNPUTC(new); *new = 0; return stackblock(); } @@ -3033,7 +3093,8 @@ static const char *updatepwd(const char *dir) { */ static inline char *getpwd() { char buf[PATH_MAX]; - if (getcwd(buf, sizeof(buf))) return savestr(buf); + if (getcwd(buf, sizeof(buf))) + return savestr(buf); sh_warnx("getcwd() failed: %s", strerror(errno)); return nullstr; } @@ -3043,7 +3104,8 @@ static int pwdcmd(int argc, char **argv) { const char *dir = curdir; flags = cdopt(); if (flags) { - if (physdir == nullstr) setpwd(dir, 0); + if (physdir == nullstr) + setpwd(dir, 0); dir = physdir; } out1fmt(snlfmt, dir); @@ -3058,13 +3120,15 @@ static void setpwd(const char *val, int setold) { } INTOFF; if (physdir != nullstr) { - if (physdir != oldcur) free(physdir); + if (physdir != oldcur) + free(physdir); physdir = nullstr; } if (oldcur == val || !val) { char *s = getpwd(); physdir = s; - if (!val) dir = s; + if (!val) + dir = s; } else dir = savestr(val); if (oldcur != dir && oldcur != nullstr) { @@ -3093,9 +3157,11 @@ static void setpwd(const char *val, int setold) { static char *endofname(const char *name) { char *p; p = (char *)name; - if (!is_name(*p)) return p; + if (!is_name(*p)) + return p; while (*++p) { - if (!is_in_name(*p)) break; + if (!is_in_name(*p)) + break; } return p; } @@ -3127,7 +3193,8 @@ static int evaltree(union node *n, int flags) { unsigned isor; int status = 0; setstackmark(&smark); - if (nflag) goto out; + if (nflag) + goto out; if (n == NULL) { TRACE(("evaltree(NULL) called\n")); goto out; @@ -3141,12 +3208,14 @@ static int evaltree(union node *n, int flags) { goto setstatus; case NREDIR: errlinno = lineno = n->nredir.linno; - if (funcline) lineno -= funcline - 1; + if (funcline) + lineno -= funcline - 1; expredir(n->nredir.redirect); pushredir(n->nredir.redirect); status = (redirectsafe(n->nredir.redirect, REDIR_PUSH) ?: evaltree(n->nredir.n, flags & EV_TESTED)); - if (n->nredir.redirect) popredir(0); + if (n->nredir.redirect) + popredir(0); goto setstatus; case NCMD: evalfn = evalcommand; @@ -3176,7 +3245,8 @@ static int evaltree(union node *n, int flags) { isor = n->type - NAND; status = evaltree(n->nbinary.ch1, (flags | ((isor >> 1) - 1)) & EV_TESTED); - if ((!status) == isor || evalskip) break; + if ((!status) == isor || evalskip) + break; n = n->nbinary.ch2; evaln: evalfn = evaltree; @@ -3185,7 +3255,8 @@ static int evaltree(union node *n, int flags) { goto setstatus; case NIF: status = evaltree(n->nif.test, EV_TESTED); - if (evalskip) break; + if (evalskip) + break; if (!status) { n = n->nif.ifpart; goto evaln; @@ -3203,7 +3274,8 @@ static int evaltree(union node *n, int flags) { } out: dotrap(); - if (eflag && checkexit & status) goto exexit; + if (eflag && checkexit & status) + goto exexit; if (flags & EV_EXIT) { exexit: exraise(EXEND); @@ -3231,8 +3303,10 @@ static int evalstring(char *s, int flags) { for (; (n = parsecmd(0)) != NEOF; popstackmark(&smark)) { int i; i = evaltree(n, flags & ~(parser_eof() ? 0 : EV_EXIT)); - if (n) status = i; - if (evalskip) break; + if (n) + status = i; + if (evalskip) + break; } popstackmark(&smark); popfile(); @@ -3251,7 +3325,8 @@ static int evalcmd(int argc, char **argv, int flags) { ap = argv + 2; for (;;) { concat = stputs(p, concat); - if ((p = *ap++) == NULL) break; + if ((p = *ap++) == NULL) + break; STPUTC(' ', concat); } STPUTC('\0', concat); @@ -3289,10 +3364,14 @@ static int evalloop(union node *n, int flags) { int i; i = evaltree(n->nbinary.ch1, EV_TESTED); skip = skiploop(); - if (skip == SKIPFUNC) status = i; - if (skip) continue; - if (n->type != NWHILE) i = !i; - if (i != 0) break; + if (skip == SKIPFUNC) + status = i; + if (skip) + continue; + if (n->type != NWHILE) + i = !i; + if (i != 0) + break; status = evaltree(n->nbinary.ch2, flags); skip = skiploop(); } while (!(skip & ~SKIPCONT)); @@ -3306,7 +3385,8 @@ static int evalfor(union node *n, int flags) { struct strlist *sp; int status; errlinno = lineno = n->nfor.linno; - if (funcline) lineno -= funcline - 1; + if (funcline) + lineno -= funcline - 1; arglist.lastp = &arglist.list; for (argp = n->nfor.args; argp; argp = argp->narg.next) { expandarg(argp, &arglist, EXP_FULL | EXP_TILDE); @@ -3318,7 +3398,8 @@ static int evalfor(union node *n, int flags) { for (sp = arglist.list; sp; sp = sp->next) { setvar(n->nfor.var_, sp->text, 0); status = evaltree(n->nfor.body, flags); - if (skiploop() & ~SKIPCONT) break; + if (skiploop() & ~SKIPCONT) + break; } loopnest--; return status; @@ -3346,7 +3427,8 @@ static int evalcase(union node *n, int flags) { struct arglist arglist; int status = 0; errlinno = lineno = n->ncase.linno; - if (funcline) lineno -= funcline - 1; + if (funcline) + lineno -= funcline - 1; arglist.lastp = &arglist.list; expandarg(n->ncase.expr, &arglist, EXP_TILDE); for (cp = n->ncase.cases; cp && evalskip == 0; cp = cp->nclist.next) { @@ -3375,7 +3457,8 @@ static int evalsubshell(union node *n, int flags) { int backgnd = (n->type == NBACKGND); int status; errlinno = lineno = n->nredir.linno; - if (funcline) lineno -= funcline - 1; + if (funcline) + lineno -= funcline - 1; expredir(n->nredir.redirect); INTOFF; if (!backgnd && flags & EV_EXIT && !have_traps()) { @@ -3385,7 +3468,8 @@ static int evalsubshell(union node *n, int flags) { jp = makejob(n, 1); if (forkshell(jp, n, backgnd) == 0) { flags |= EV_EXIT; - if (backgnd) flags &= ~EV_TESTED; + if (backgnd) + flags &= ~EV_TESTED; nofork: INTON; redirect(n->nredir.redirect, 0); @@ -3393,7 +3477,8 @@ static int evalsubshell(union node *n, int flags) { /* never returns */ } status = 0; - if (!backgnd) status = waitforjob(jp); + if (!backgnd) + status = waitforjob(jp); INTON; return status; } @@ -3441,7 +3526,8 @@ static int evalpipe(union node *n, int flags) { int status = 0; TRACE(("evalpipe(0x%lx) called\n", (long)n)); pipelen = 0; - for (lp = n->npipe.cmdlist; lp; lp = lp->next) pipelen++; + for (lp = n->npipe.cmdlist; lp; lp = lp->next) + pipelen++; flags |= EV_EXIT; INTOFF; jp = makejob(n, pipelen); @@ -3471,7 +3557,8 @@ static int evalpipe(union node *n, int flags) { evaltreenr(lp->n, flags); /* never returns */ } - if (prevfd >= 0) close(prevfd); + if (prevfd >= 0) + close(prevfd); prevfd = pip[0]; close(pip[1]); } @@ -3499,7 +3586,8 @@ static void evalbackcmd(union node *n, struct backcmd *result) { if (n == NULL) { goto out; } - if (pipe(pip) < 0) sh_error("Pipe call failed"); + if (pipe(pip) < 0) + sh_error("Pipe call failed"); jp = makejob(n, 1); if (forkshell(jp, n, FORK_NOJOB) == 0) { FORCEINTON; @@ -3527,7 +3615,8 @@ static struct strlist *fill_arglist(struct arglist *arglist, while ((argp = *argpp)) { expandarg(argp, arglist, EXP_FULL | EXP_TILDE); *argpp = argp->narg.next; - if (*lastp) break; + if (*lastp) + break; } return *lastp; } @@ -3538,12 +3627,16 @@ static int parse_command_args(struct arglist *arglist, union node **argpp, char *cp, c; for (;;) { sp = unlikely(sp->next != NULL) ? sp->next : fill_arglist(arglist, argpp); - if (!sp) return 0; + if (!sp) + return 0; cp = sp->text; - if (*cp++ != '-') break; - if (!(c = *cp++)) break; + if (*cp++ != '-') + break; + if (!(c = *cp++)) + break; if (c == '-' && !*cp) { - if (likely(!sp->next) && !fill_arglist(arglist, argpp)) return 0; + if (likely(!sp->next) && !fill_arglist(arglist, argpp)) + return 0; sp = sp->next; break; } @@ -3588,7 +3681,8 @@ static int evalcommand(union node *cmd, int flags) { int vflags; int vlocal; errlinno = lineno = cmd->ncmd.linno; - if (funcline) lineno -= funcline - 1; + if (funcline) + lineno -= funcline - 1; /* First expand the arguments. */ TRACE(("evalcommand(0x%lx, %d) called\n", (long)cmd, flags)); file_stop = parsefile; @@ -3614,16 +3708,19 @@ static int evalcommand(union node *cmd, int flags) { pathval()); vlocal++; /* implement bltin and command here */ - if (cmdentry.cmdtype != CMDBUILTIN) break; + if (cmdentry.cmdtype != CMDBUILTIN) + break; pseudovarflag = cmdentry.u.cmd->flags & BUILTIN_ASSIGN; if (likely(spclbltin < 0)) { spclbltin = cmdentry.u.cmd->flags & BUILTIN_SPECIAL; vlocal = spclbltin ^ BUILTIN_SPECIAL; } execcmd = cmdentry.u.cmd == EXECCMD; - if (likely(cmdentry.u.cmd != COMMANDCMD)) break; + if (likely(cmdentry.u.cmd != COMMANDCMD)) + break; cmd_flag = parse_command_args(&arglist, &argp, &path); - if (!cmd_flag) break; + if (!cmd_flag) + break; } for (; argp; argp = argp->narg.next) { expandarg(argp, &arglist, @@ -3631,8 +3728,10 @@ static int evalcommand(union node *cmd, int flags) { ? EXP_VARTILDE : EXP_FULL | EXP_TILDE); } - for (sp = arglist.list; sp; sp = sp->next) argc++; - if (execcmd && argc > 1) vflags = VEXPORT; + for (sp = arglist.list; sp; sp = sp->next) + argc++; + if (execcmd && argc > 1) + vflags = VEXPORT; } localvar_stop = pushlocalvars(vlocal); /* Reserve one extra spot at the front for shellexec. */ @@ -3644,7 +3743,8 @@ static int evalcommand(union node *cmd, int flags) { } *nargv = NULL; lastarg = NULL; - if (iflag && funcline == 0 && argc > 0) lastarg = nargv[-1]; + if (iflag && funcline == 0 && argc > 0) + lastarg = nargv[-1]; preverrout.fd = 2; expredir(cmd->ncmd.redirect); redir_stop = pushredir(cmd->ncmd.redirect); @@ -3653,7 +3753,8 @@ static int evalcommand(union node *cmd, int flags) { bail: exitstatus = status; /* We have a redirection error. */ - if (spclbltin > 0) exraise(EXERROR); + if (spclbltin > 0) + exraise(EXERROR); goto out; } for (argp = cmd->ncmd.assign; argp; argp = argp->narg.next) { @@ -3707,13 +3808,15 @@ static int evalcommand(union node *cmd, int flags) { } break; case CMDFUNCTION: - if (evalfun(cmdentry.u.func, argc, argv, flags)) goto raise; + if (evalfun(cmdentry.u.func, argc, argv, flags)) + goto raise; break; } status = waitforjob(jp); FORCEINTON; out: - if (cmd->ncmd.redirect) popredir(execcmd); + if (cmd->ncmd.redirect) + popredir(execcmd); unwindredir(redir_stop); unwindfiles(file_stop); unwindlocalvars(localvar_stop); @@ -3737,7 +3840,8 @@ static int evalbltin(const struct builtincmd *cmd, int argc, char **argv, savecmdname = commandname; savehandler = handler; - if ((i = setjmp(jmploc.loc))) goto cmddone; + if ((i = setjmp(jmploc.loc))) + goto cmddone; handler = &jmploc; commandname = argv[0]; argptr = argv + 1; @@ -3747,7 +3851,8 @@ static int evalbltin(const struct builtincmd *cmd, int argc, char **argv, else status = (*cmd->builtin)(argc, argv); flushall(); - if (out1->flags) sh_warnx("%s: I/O error", commandname); + if (out1->flags) + sh_warnx("%s: I/O error", commandname); status |= out1->flags; exitstatus = status; cmddone: @@ -3762,7 +3867,8 @@ cmddone: * Free a parse tree. */ static void freefunc(struct funcnode *f) { - if (f && --f->count < 0) ckfree(f); + if (f && --f->count < 0) + ckfree(f); } static int evalfun(struct funcnode *func, int argc, char **argv, int flags) { @@ -3854,8 +3960,10 @@ static int bltincmd(int argc, char **argv) { */ static int breakcmd(int argc, char **argv) { int n = argc > 1 ? number(argv[1]) : 1; - if (n <= 0) badnum(argv[1]); - if (n > loopnest) n = loopnest; + if (n <= 0) + badnum(argv[1]); + if (n > loopnest) + n = loopnest; if (n > 0) { evalskip = (**argv == 'c') ? SKIPCONT : SKIPBREAK; skipcount = n; @@ -3931,7 +4039,8 @@ wontreturn static void shellexec(char **argv, const char *path, int idx) { cmdname = stackblock(); if (--idx < 0 && pathopt == NULL) { tryexec(cmdname, argv, envp); - if (errno != ENOENT && errno != ENOTDIR) e = errno; + if (errno != ENOENT && errno != ENOTDIR) + e = errno; } } } @@ -3968,7 +4077,8 @@ static const char *legal_pathopt(const char *opt, const char *term, int magic) { opt += strcspn(opt, term); break; } - if (opt && *opt == '%') opt++; + if (opt && *opt == '%') + opt++; return opt; } @@ -3993,7 +4103,8 @@ static int padvance_magic(const char **path, const char *name, int magic) { const char *start; unsigned qlen; unsigned len; - if (*path == NULL) return -1; + if (*path == NULL) + return -1; lpathopt = NULL; start = *path; if (*start == '%' && (p = legal_pathopt(start + 1, term, magic))) { @@ -4054,7 +4165,8 @@ static int hashcmd(int argc, char **argv) { delete_cmd_entry(); } find_command(name, &entry, DO_ERR, pathval()); - if (entry.cmdtype == CMDUNKNOWN) c = 1; + if (entry.cmdtype == CMDUNKNOWN) + c = 1; argptr++; } return c; @@ -4118,7 +4230,8 @@ static void find_command(char *name, struct cmdentry *entry, int act, return; } updatetbl = (path == pathval()); - if (!updatetbl) act |= DO_ALTPATH; + if (!updatetbl) + act |= DO_ALTPATH; /* If name is in the table, check answer will be ok */ if ((cmdp = cmdlookup(name, 0)) != NULL) { switch (cmdp->cmdtype) { @@ -4134,7 +4247,8 @@ static void find_command(char *name, struct cmdentry *entry, int act, break; } if (act & bit) { - if (act & bit & DO_REGBLTIN) goto fail; + if (act & bit & DO_REGBLTIN) + goto fail; updatetbl = 0; cmdp = NULL; } else if (cmdp->rehash == 0) { @@ -4148,7 +4262,8 @@ static void find_command(char *name, struct cmdentry *entry, int act, (builtinloc <= 0))) { goto builtin_success; } - if (act & DO_REGBLTIN) goto fail; + if (act & DO_REGBLTIN) + goto fail; /* We have to search path. */ prev = -1; /* where to start */ if (cmdp && cmdp->rehash) { /* doing a rehash */ @@ -4166,7 +4281,8 @@ loop: idx++; if (lpathopt) { if (*lpathopt == 'b') { - if (bcmd) goto builtin_success; + if (bcmd) + goto builtin_success; continue; } else if (!(act & DO_NOFUNC)) { /* handled below */ @@ -4177,16 +4293,19 @@ loop: } /* if rehash, don't redo absolute path names */ if (fullname[0] == '/' && idx <= prev) { - if (idx < prev) continue; + if (idx < prev) + continue; TRACE(("searchexec \"%s\": no change\n", name)); goto success; } while (stat(fullname, &statb) < 0) { - if (errno != ENOENT && errno != ENOTDIR) e = errno; + if (errno != ENOENT && errno != ENOTDIR) + e = errno; goto loop; } e = EACCES; /* if we fail, this will be the error */ - if (!S_ISREG(statb.st_mode)) continue; + if (!S_ISREG(statb.st_mode)) + continue; if (lpathopt) { /* this is a %func directory */ stalloc(len); readcmdfile(fullname); @@ -4210,8 +4329,10 @@ loop: goto success; } /* We failed. If there was an entry for this command, delete it */ - if (cmdp && updatetbl) delete_cmd_entry(); - if (act & DO_ERR) sh_warnx("%s: %s", name, errmsg(e, E_EXEC)); + if (cmdp && updatetbl) + delete_cmd_entry(); + if (act & DO_ERR) + sh_warnx("%s: %s", name, errmsg(e, E_EXEC)); fail: entry->cmdtype = CMDUNKNOWN; return; @@ -4269,7 +4390,8 @@ static void changepath(const char *newval) { break; } neu = strchr(neu, ':'); - if (!neu) break; + if (!neu) + break; idx++; neu++; } @@ -4318,11 +4440,13 @@ static struct tblentry *cmdlookup(const char *name, int add) { struct tblentry **pp; p = name; hashval = (unsigned char)*p << 4; - while (*p) hashval += (unsigned char)*p++; + while (*p) + hashval += (unsigned char)*p++; hashval &= 0x7FFF; pp = &cmdtable[hashval % CMDTABLESIZE]; for (cmdp = *pp; cmdp; cmdp = cmdp->next) { - if (equal(cmdp->cmdname, name)) break; + if (equal(cmdp->cmdname, name)) + break; pp = &cmdp->next; } if (add && cmdp == NULL) { @@ -4343,7 +4467,8 @@ static void delete_cmd_entry(void) { INTOFF; cmdp = *lastcmdentry; *lastcmdentry = cmdp->next; - if (cmdp->cmdtype == CMDFUNCTION) freefunc(cmdp->param.func); + if (cmdp->cmdtype == CMDFUNCTION) + freefunc(cmdp->param.func); ckfree(cmdp); INTON; } @@ -4591,7 +4716,8 @@ static char *argstr(char *p, int flag) { if (flag & EXP_TILDE) { flag &= ~EXP_TILDE; tilde: - if (*p == '~') p = exptilde(p, flag); + if (*p == '~') + p = exptilde(p, flag); } start: startloc = expdest - (char *)stackblock(); @@ -4623,7 +4749,8 @@ start: } p += length + 1; length = 0; - if (end) break; + if (end) + break; switch (c) { case '=': flag |= EXP_VARTILDE2; @@ -4684,7 +4811,8 @@ static char *exptilde(char *startp, int flag) { case CTLQUOTEMARK: return (startp); case ':': - if (flag & EXP_VARTILDE) goto done; + if (flag & EXP_VARTILDE) + goto done; break; case '/': case CTLENDVAR: @@ -4692,7 +4820,8 @@ static char *exptilde(char *startp, int flag) { } } done: - if (flag & EXP_DISCARD) goto out; + if (flag & EXP_DISCARD) + goto out; *p = '\0'; if (*name == '\0') { home = lookupvar(homestr); @@ -4700,7 +4829,8 @@ done: home = getpwhome(name); } *p = c; - if (!home) goto lose; + if (!home) + goto lose; strtodest(home, flag | EXP_QUOTED); out: return (p); @@ -4709,7 +4839,8 @@ lose: } static void removerecordregions(int endoff) { - if (ifslastp == NULL) return; + if (ifslastp == NULL) + return; if (ifsfirst.endoff > endoff) { while (ifsfirst.next != NULL) { struct ifsregion *ifsp; @@ -4739,7 +4870,8 @@ static void removerecordregions(int endoff) { ifslastp->next = ifsp; INTON; } - if (ifslastp->endoff > endoff) ifslastp->endoff = endoff; + if (ifslastp->endoff > endoff) + ifslastp->endoff = endoff; } /* @@ -4756,18 +4888,21 @@ static char *expari(char *start, int flag) { p = stackblock(); begoff = expdest - p; p = argstr(start, flag & EXP_DISCARD); - if (flag & EXP_DISCARD) goto out; + if (flag & EXP_DISCARD) + goto out; start = stackblock(); endoff = expdest - start; start += begoff; STADJUST(start - expdest, expdest); removerecordregions(begoff); - if (likely(flag & QUOTES_ESC)) rmescapes(start, 0); + if (likely(flag & QUOTES_ESC)) + rmescapes(start, 0); pushstackmark(&sm, endoff); result = arith(start); popstackmark(&sm); len = cvtnum(result, flag); - if (likely(!(flag & EXP_QUOTED))) recordregion(begoff, begoff + len, 0); + if (likely(!(flag & EXP_QUOTED))) + recordregion(begoff, begoff + len, 0); out: return p; } @@ -4783,7 +4918,8 @@ static void expbackq(union node *cmd, int flag) { char *dest; int startloc; struct stackmark smark; - if (flag & EXP_DISCARD) goto out; + if (flag & EXP_DISCARD) + goto out; INTOFF; startloc = expdest - (char *)stackblock(); pushstackmark(&smark, startloc); @@ -4791,19 +4927,23 @@ static void expbackq(union node *cmd, int flag) { popstackmark(&smark); p = in.buf; i = in.nleft; - if (i == 0) goto read; + if (i == 0) + goto read; for (;;) { memtodest(p, i, flag); read: - if (in.fd < 0) break; + if (in.fd < 0) + break; do { i = read(in.fd, buf, sizeof buf); } while (i < 0 && errno == EINTR); TRACE(("expbackq: read returns %d\n", i)); - if (i <= 0) break; + if (i <= 0) + break; p = buf; } - if (in.buf) ckfree(in.buf); + if (in.buf) + ckfree(in.buf); if (in.fd >= 0) { close(in.fd); back_exitstatus = waitforjob(in.jp); @@ -4843,8 +4983,10 @@ static char *scanleft(char *startp, char *rmesc, char *rmescend, char *str, } match = pmatch(str, s); *loc2 = c; - if (match) return loc; - if (quotes && *loc == (char)CTLESC) loc++; + if (match) + return loc; + if (quotes && *loc == (char)CTLESC) + loc++; loc++; loc2++; } while (c); @@ -4866,7 +5008,8 @@ static char *scanright(char *startp, char *rmesc, char *rmescend, char *str, } match = pmatch(str, s); *loc2 = c; - if (match) return loc; + if (match) + return loc; loc--; if (quotes) { if (--esc < 0) { @@ -4893,7 +5036,8 @@ static char *subevalvar(char *start, char *str, int strloc, int startloc, char *(*scan)(char *, char *, char *, char *, int, int); char *p; p = argstr(start, (flag & EXP_DISCARD) | EXP_TILDE | (str ? 0 : EXP_CASE)); - if (flag & EXP_DISCARD) return p; + if (flag & EXP_DISCARD) + return p; startp = (char *)stackblock() + startloc; switch (subtype) { case VSASSIGN: @@ -4959,7 +5103,8 @@ static char *evalvar(char *p, int flag) { p = strchr(p, '=') + 1; again: varlen = varvalue(var_, varflags, flag, quoted); - if (varflags & VSNUL) varlen--; + if (varflags & VSNUL) + varlen--; discard = varlen < 0 ? EXP_DISCARD : 0; switch (subtype) { case VSPLUS: @@ -4973,19 +5118,23 @@ again: case VSQUESTION: p = subevalvar(p, var_, 0, startloc, varflags, (flag & ~QUOTES_ESC) | (discard ^ EXP_DISCARD)); - if ((flag | ~discard) & EXP_DISCARD) goto record; + if ((flag | ~discard) & EXP_DISCARD) + goto record; varflags &= ~VSNUL; subtype = VSNORMAL; goto again; } - if ((discard & ~flag) && uflag) varunset(p, var_, 0, 0); + if ((discard & ~flag) && uflag) + varunset(p, var_, 0, 0); if (subtype == VSLENGTH) { p++; - if (flag & EXP_DISCARD) return p; + if (flag & EXP_DISCARD) + return p; cvtnum(varlen > 0 ? varlen : 0, flag); goto really_record; } - if (subtype == VSNORMAL) goto record; + if (subtype == VSNORMAL) + goto record; flag |= discard; if (!(flag & EXP_DISCARD)) { /* @@ -4997,11 +5146,13 @@ again: patloc = expdest - (char *)stackblock(); p = subevalvar(p, NULL, patloc, startloc, varflags, flag); record: - if ((flag | discard) & EXP_DISCARD) return p; + if ((flag | discard) & EXP_DISCARD) + return p; really_record: if (quoted) { quoted = *var_ == '@' && shellparam.nparam; - if (!quoted) return p; + if (!quoted) + return p; } recordregion(startloc, expdest - (char *)stackblock(), quoted); return p; @@ -5014,7 +5165,8 @@ static unsigned memtodest(const char *p, unsigned len, int flags) { const char *syntax = flags & EXP_QUOTED ? DQSYNTAX : BASESYNTAX; char *q; char *s; - if (unlikely(!len)) return 0; + if (unlikely(!len)) + return 0; q = makestrspace(len * 2, expdest); s = q; do { @@ -5054,7 +5206,8 @@ static long varvalue(char *name, int varflags, int flags, int quoted) { long len = 0; char c; if (!subtype) { - if (discard) return -1; + if (discard) + return -1; sh_error("Bad substitution"); } flags |= EXP_KEEPNUL; @@ -5072,7 +5225,8 @@ static long varvalue(char *name, int varflags, int flags, int quoted) { goto numvar; case '!': num = backgndpid; - if (num == 0) return -1; + if (num == 0) + return -1; numvar: len = cvtnum(num, flags); break; @@ -5087,7 +5241,8 @@ static long varvalue(char *name, int varflags, int flags, int quoted) { expdest = p; break; case '@': - if (quoted && sep) goto param; + if (quoted && sep) + goto param; /* fall through */ case '*': /* We will set c to 0 or ~0 depending on whether @@ -5110,7 +5265,8 @@ static long varvalue(char *name, int varflags, int flags, int quoted) { sep |= ifsset() ? (unsigned char)(c & ifsval()[0]) : ' '; param: sepc = sep; - if (!(ap = shellparam.p)) return -1; + if (!(ap = shellparam.p)) + return -1; while ((p = *ap++)) { len += strtodest(p, flags); if (*ap && sep) { @@ -5130,17 +5286,20 @@ static long varvalue(char *name, int varflags, int flags, int quoted) { case '8': case '9': num = atoi(name); - if (num < 0 || num > shellparam.nparam) return -1; + if (num < 0 || num > shellparam.nparam) + return -1; p = num ? shellparam.p[num - 1] : arg0; goto value; default: p = lookupvar(name); value: - if (!p) return -1; + if (!p) + return -1; len = strtodest(p, flags); break; } - if (discard) STADJUST(-len, expdest); + if (discard) + STADJUST(-len, expdest); return len; } @@ -5201,10 +5360,12 @@ static void ifsbreakup(char *string, int maxargs, struct arglist *arglist) { bool isdefifs; q = p; c = *p++; - if (c == (char)CTLESC) c = *p++; + if (c == (char)CTLESC) + c = *p++; isifs = !!strchr(ifs, c); isdefifs = false; - if (isifs) isdefifs = !!strchr(defifs, c); + if (isifs) + isdefifs = !!strchr(defifs, c); /* If only reading one more argument: * If we have exactly one field, * read that field without its terminator. @@ -5226,21 +5387,26 @@ static void ifsbreakup(char *string, int maxargs, struct arglist *arglist) { */ if (!maxargs) { if (isdefifs) { - if (!r) r = q; + if (!r) + r = q; continue; } - if (!(isifs && ifsspc)) r = NULL; + if (!(isifs && ifsspc)) + r = NULL; ifsspc = 0; continue; } if (ifsspc) { - if (isifs) q = p; + if (isifs) + q = p; start = q; - if (isdefifs) continue; + if (isdefifs) + continue; isifs = false; } if (isifs) { - if (!(afternul || nulonly)) ifsspc = isdefifs; + if (!(afternul || nulonly)) + ifsspc = isdefifs; /* Ignore IFS whitespace at start */ if (q == start && ifsspc) { start = p; @@ -5262,10 +5428,13 @@ static void ifsbreakup(char *string, int maxargs, struct arglist *arglist) { ifsspc = 0; } } while ((ifsp = ifsp->next) != NULL); - if (nulonly) goto add; + if (nulonly) + goto add; } - if (r) *r = '\0'; - if (!*start) return; + if (r) + *r = '\0'; + if (!*start) + return; add: sp = (struct strlist *)stalloc(sizeof *sp); sp->text = start; @@ -5285,8 +5454,10 @@ static void expandmeta(struct strlist *str) { struct strlist *sp; char *p; unsigned len; - if (fflag) goto nometa; - if (!strpbrk(str->text, metachars)) goto nometa; + if (fflag) + goto nometa; + if (!strpbrk(str->text, metachars)) + goto nometa; savelastp = exparg.lastp; INTOFF; p = preglob(str->text, RMESCAPE_ALLOC | RMESCAPE_HEAP); @@ -5295,7 +5466,8 @@ static void expandmeta(struct strlist *str) { expdir = ckmalloc(expdir_max); expmeta(p, len, 0); ckfree(expdir); - if (p != str->text) ckfree(p); + if (p != str->text) + ckfree(p); INTON; if (exparg.lastp == savelastp) { /* @@ -5308,7 +5480,8 @@ static void expandmeta(struct strlist *str) { } else { *exparg.lastp = NULL; *savelastp = sp = expsort(*savelastp); - while (sp->next != NULL) sp = sp->next; + while (sp->next != NULL) + sp = sp->next; exparg.lastp = &sp->next; } str = str->next; @@ -5338,46 +5511,57 @@ static void expmeta(char *name, unsigned name_len, unsigned expdir_len) { metaflag = 1; else if (*p == '[') { char *q = p + 1; - if (*q == '!') q++; + if (*q == '!') + q++; for (;;) { - if (*q == '\\') q++; - if (*q == '/' || *q == '\0') break; + if (*q == '\\') + q++; + if (*q == '/' || *q == '\0') + break; if (*++q == ']') { metaflag = 1; break; } } } else { - if (*p == '\\' && p[1]) esc++; + if (*p == '\\' && p[1]) + esc++; if (p[esc] == '/') { - if (metaflag) break; + if (metaflag) + break; start = p + esc + 1; } } } if (metaflag == 0) { /* we've reached the end of the file name */ - if (!expdir_len) return; + if (!expdir_len) + return; p = name; do { - if (*p == '\\' && p[1]) p++; + if (*p == '\\' && p[1]) + p++; *enddir++ = *p; } while (*p++); - if (lstat(expdir, &statb) >= 0) addfname(expdir); + if (lstat(expdir, &statb) >= 0) + addfname(expdir); return; } endname = p; if (name < start) { p = name; do { - if (*p == '\\' && p[1]) p++; + if (*p == '\\' && p[1]) + p++; *enddir++ = *p++; } while (p < start); } *enddir = 0; cp = expdir; expdir_len = enddir - cp; - if (!expdir_len) cp = "."; - if ((dirp = opendir(cp)) == NULL) return; + if (!expdir_len) + cp = "."; + if ((dirp = opendir(cp)) == NULL) + return; if (*endname == 0) { atend = 1; } else { @@ -5388,10 +5572,13 @@ static void expmeta(char *name, unsigned name_len, unsigned expdir_len) { name_len -= endname - name; matchdot = 0; p = start; - if (*p == '\\') p++; - if (*p == '.') matchdot++; + if (*p == '\\') + p++; + if (*p == '.') + matchdot++; while (!int_pending() && (dp = readdir(dirp)) != NULL) { - if (dp->d_name[0] == '.' && !matchdot) continue; + if (dp->d_name[0] == '.' && !matchdot) + continue; if (pmatch(start, dp->d_name)) { if (atend) { scopy(dp->d_name, enddir); @@ -5414,7 +5601,8 @@ static void expmeta(char *name, unsigned name_len, unsigned expdir_len) { } } closedir(dirp); - if (!atend) endname[-esc - 1] = esc ? '\\' : '/'; + if (!atend) + endname[-esc - 1] = esc ? '\\' : '/'; } /* @@ -5437,7 +5625,8 @@ static struct strlist *expsort(struct strlist *str) { int len; struct strlist *sp; len = 0; - for (sp = str; sp; sp = sp->next) len++; + for (sp = str; sp; sp = sp->next) + len++; return msort(str, len); } @@ -5446,7 +5635,8 @@ static struct strlist *msort(struct strlist *list, int len) { struct strlist **lpp; int half; int n; - if (len <= 1) return list; + if (len <= 1) + return list; half = len >> 1; p = list; for (n = half; --n >= 0;) { @@ -5505,7 +5695,8 @@ static int ccmatch(const char *p, int chr, const char **r) { for (class = classes; class < end; class ++) { const char *q; q = prefix(p, class->name); - if (!q) continue; + if (!q) + continue; *r = q; return class->fn(chr); } @@ -5528,19 +5719,23 @@ static int pmatch(const char *pattern, const char *string) { } goto dft; case '?': - if (*q++ == '\0') return 0; + if (*q++ == '\0') + return 0; break; case '*': c = *p; - while (c == '*') c = *++p; + while (c == '*') + c = *++p; if (c != '\\' && c != '?' && c != '*' && c != '[') { while (*q != c) { - if (*q == '\0') return 0; + if (*q == '\0') + return 0; q++; } } do { - if (pmatch(p, q)) return 1; + if (pmatch(p, q)) + return 1; } while (*q++ != '\0'); return 0; case '[': { @@ -5555,7 +5750,8 @@ static int pmatch(const char *pattern, const char *string) { } found = 0; chr = *q; - if (chr == '\0') return 0; + if (chr == '\0') + return 0; c = *p++; do { if (!c) { @@ -5574,25 +5770,31 @@ static int pmatch(const char *pattern, const char *string) { c = *p++; if (*p == '-' && p[1] != ']') { p++; - if (*p == '\\') p++; - if (chr >= c && chr <= *p) found = 1; + if (*p == '\\') + p++; + if (chr >= c && chr <= *p) + found = 1; p++; } else { - if (chr == c) found = 1; + if (chr == c) + found = 1; } } while ((c = *p++) != ']'); - if (found == invert) return 0; + if (found == invert) + return 0; q++; break; } dft: default: - if (*q++ != c) return 0; + if (*q++ != c) + return 0; break; } } breakloop: - if (*q != '\0') return 0; + if (*q != '\0') + return 0; return 1; } @@ -5642,7 +5844,8 @@ static char *rmescapes(char *str, int flag) { } if (*p == (char)CTLESC) { p++; - if (notescaped) *q++ = '\\'; + if (notescaped) + *q++ = '\\'; } notescaped = globbing; copy: @@ -5672,11 +5875,13 @@ static void freestrings(struct strpush *sp) { struct strpush *psp; if (sp->ap) { sp->ap->flag &= ~ALIASINUSE; - if (sp->ap->flag & ALIASDEAD) unalias(sp->ap->name); + if (sp->ap->flag & ALIASDEAD) + unalias(sp->ap->name); } psp = sp; sp = sp->spfree; - if (psp != &(parsefile->basestrpush)) ckfree(psp); + if (psp != &(parsefile->basestrpush)) + ckfree(psp); } while (sp); parsefile->spfree = NULL; INTON; @@ -5684,7 +5889,8 @@ static void freestrings(struct strpush *sp) { static int pgetc_nofree(void) { int c; - if (parsefile->unget) return parsefile->lastc[--parsefile->unget]; + if (parsefile->unget) + return parsefile->lastc[--parsefile->unget]; if (--parsefile->nleft >= 0) c = (signed char)*parsefile->nextc++; else @@ -5700,13 +5906,15 @@ static int pgetc_nofree(void) { */ int pgetc(void) { struct strpush *sp = parsefile->spfree; - if (unlikely(sp)) freestrings(sp); + if (unlikely(sp)) + freestrings(sp); return pgetc_nofree(); } static void AddUniqueCompletion(linenoiseCompletions *c, char *s) { size_t i; - if (!s) return; + if (!s) + return; for (i = 0; i < c->len; ++i) { if (!strcmp(s, c->cvec[i])) { return; @@ -5765,8 +5973,10 @@ static void CompleteFilename(const char *p, const char *q, const char *b, } if ((d = opendir(buf))) { while ((e = readdir(d))) { - if (!strcmp(e->d_name, ".")) continue; - if (!strcmp(e->d_name, "..")) continue; + if (!strcmp(e->d_name, ".")) + continue; + if (!strcmp(e->d_name, "..")) + continue; if (!strncmp(e->d_name, p, q - p)) { snprintf(buf, 512, "%.*s%s%s", p - b, b, e->d_name, e->d_type == DT_DIR ? "/" : ""); @@ -5783,7 +5993,8 @@ static void ShellCompletion(const char *p, linenoiseCompletions *c) { bool slashed; const char *q, *b; for (slashed = false, b = p, q = (p += strlen(p)); p > b; --p) { - if (p[-1] == '/' && p[-1] == '\\') slashed = true; + if (p[-1] == '/' && p[-1] == '\\') + slashed = true; if (!isalnum(p[-1]) && (p[-1] != '.' && p[-1] != '_' && p[-1] != '-' && p[-1] != '+' && p[-1] != '[' && p[-1] != '/' && p[-1] != '\\')) { @@ -5835,7 +6046,8 @@ retry: nr = read(parsefile->fd, buf, IBUFSIZ - 1); } if (nr < 0) { - if (errno == EINTR) goto retry; + if (errno == EINTR) + goto retry; if (parsefile->fd == 0 && errno == EAGAIN) { int flags = fcntl(0, F_GETFL, 0); if (flags >= 0 && flags & O_NONBLOCK) { @@ -5895,7 +6107,8 @@ static int preadbuffer(void) { } if (more <= 0) { parsefile->nleft = q - parsefile->nextc - 1; - if (parsefile->nleft < 0) goto again; + if (parsefile->nleft < 0) + goto again; break; } } @@ -5979,8 +6192,10 @@ static int setinputfile(const char *fname, int flags) { int fd; INTOFF; fd = sh_open(fname, O_RDONLY, flags & INPUT_NOFILE_OK); - if (fd < 0) goto out; - if (fd < 10) fd = savefd(fd, fd); + if (fd < 0) + goto out; + if (fd < 10) + fd = savefd(fd, fd); setinputfd(fd, flags & INPUT_PUSH_FILE); out: INTON; @@ -5997,7 +6212,8 @@ static void setinputfd(int fd, int push) { parsefile->buf = 0; } parsefile->fd = fd; - if (parsefile->buf == NULL) parsefile->buf = ckmalloc(IBUFSIZ); + if (parsefile->buf == NULL) + parsefile->buf = ckmalloc(IBUFSIZ); parsefile->lleft = parsefile->nleft = 0; plinno = 1; } @@ -6034,9 +6250,12 @@ static void pushfile(void) { static void popfile(void) { struct parsefile *pf = parsefile; INTOFF; - if (pf->fd >= 0) close(pf->fd); - if (pf->buf) ckfree(pf->buf); - if (parsefile->spfree) freestrings(parsefile->spfree); + if (pf->fd >= 0) + close(pf->fd); + if (pf->buf) + ckfree(pf->buf); + if (parsefile->spfree) + freestrings(parsefile->spfree); while (pf->strpush) { popstring(); freestrings(parsefile->spfree); @@ -6047,7 +6266,8 @@ static void popfile(void) { } static void unwindfiles(struct parsefile *stop) { - while (parsefile != stop) popfile(); + while (parsefile != stop) + popfile(); } /* @@ -6083,7 +6303,8 @@ static void set_curjob(struct job *jp, unsigned mode) { jpp = curp = &curjob; do { jp1 = *jpp; - if (jp1 == jp) break; + if (jp1 == jp) + break; jpp = &jp1->prev_job; } while (1); *jpp = jp1->prev_job; @@ -6099,7 +6320,8 @@ static void set_curjob(struct job *jp, unsigned mode) { put after all stopped jobs. */ do { jp1 = *jpp; - if (!JOBS || !jp1 || jp1->state != JOBSTOPPED) break; + if (!JOBS || !jp1 || jp1->state != JOBSTOPPED) + break; jpp = &jp1->prev_job; } while (1); /* FALLTHROUGH */ @@ -6123,15 +6345,18 @@ static void set_curjob(struct job *jp, unsigned mode) { static void setjobctl(int on) { int fd; int pgrp; - if (IsWindows()) return; /* TODO(jart) */ - if (on == jobctl || rootshell == 0) return; + if (IsWindows()) + return; /* TODO(jart) */ + if (on == jobctl || rootshell == 0) + return; if (on) { int ofd; ofd = fd = sh_open(_PATH_TTY, O_RDWR, 1); if (fd < 0) { fd += 3; while (!isatty(fd)) - if (--fd < 0) goto out; + if (--fd < 0) + goto out; } fd = savefd(fd, ofd); do { /* while we are in the background */ @@ -6141,7 +6366,8 @@ static void setjobctl(int on) { mflag = on = 0; goto close; } - if (pgrp == getpgrp()) break; + if (pgrp == getpgrp()) + break; killpg(0, SIGTTIN); } while (1); initialpgrp = pgrp; @@ -6172,7 +6398,8 @@ static int decode_signum(const char *string) { int signo = -1; if (is_number(string)) { signo = atoi(string); - if (signo >= NSIG) signo = -1; + if (signo >= NSIG) + signo = -1; } return signo; } @@ -6195,7 +6422,8 @@ char **argv; signo = decode_signal(*argv + 1, 1); if (signo < 0) { int c; - while ((c = nextopt("ls:")) != '\0') switch (c) { + while ((c = nextopt("ls:")) != '\0') + switch (c) { default: case 'l': list = 1; @@ -6211,7 +6439,8 @@ char **argv; } else argv++; } - if (!list && signo < 0) signo = SIGTERM; + if (!list && signo < 0) + signo = SIGTERM; if ((signo < 0 || !*argv) ^ list) { goto usage; } @@ -6226,7 +6455,8 @@ char **argv; return 0; } signo = number(*argv); - if (signo > 128) signo -= 128; + if (signo > 128) + signo -= 128; if (0 < signo && signo < NSIG) outfmt(out, snlfmt, strsignal(signo)); else @@ -6282,10 +6512,12 @@ static int restartjob(struct job *jp, int mode) { int status; int pgid; INTOFF; - if (jp->state == JOBDONE) goto out; + if (jp->state == JOBDONE) + goto out; jp->state = JOBRUNNING; pgid = jp->ps->pid; - if (mode == FORK_FG) xtcsetpgrp(ttyfd, pgid); + if (mode == FORK_FG) + xtcsetpgrp(ttyfd, pgid); killpg(pgid, SIGCONT); ps = jp->ps; i = jp->nprocs; @@ -6306,10 +6538,13 @@ static int sprint_status(char *os, int status, int sigonly) { st = WEXITSTATUS(status); if (!WIFEXITED(status)) { st = WSTOPSIG(status); - if (!WIFSTOPPED(status)) st = WTERMSIG(status); + if (!WIFSTOPPED(status)) + st = WTERMSIG(status); if (sigonly) { - if (st == SIGINT || st == SIGPIPE) goto out; - if (WIFSTOPPED(status)) goto out; + if (st == SIGINT || st == SIGPIPE) + goto out; + if (WIFSTOPPED(status)) + goto out; } s = stpncpy(s, strsignal(st), 32); } else if (!sigonly) { @@ -6340,14 +6575,16 @@ static void showjob(struct output *out, struct job *jp, int mode) { s[col - 2] = '+'; else if (curjob && jp == curjob->prev_job) s[col - 2] = '-'; - if (mode & SHOW_PID) col += fmtstr(s + col, 16, "%d ", ps->pid); + if (mode & SHOW_PID) + col += fmtstr(s + col, 16, "%d ", ps->pid); psend = ps + jp->nprocs; if (jp->state == JOBRUNNING) { scopy("Running", s + col); col += strlen("Running"); } else { int status = psend[-1].status; - if (jp->state == JOBSTOPPED) status = jp->stopstatus; + if (jp->state == JOBSTOPPED) + status = jp->stopstatus; col += sprint_status(s + col, status, 0); } goto start; @@ -6383,7 +6620,8 @@ static int jobscmd(int argc, char **argv) { mode = SHOW_PGID; out = out1; argv = argptr; - if (*argv) do + if (*argv) + do showjob(out, getjob(*argv, 0), mode); while (*++argv); else @@ -6401,7 +6639,8 @@ static void showjobs(struct output *out, int mode) { /* If not even one job changed, there is nothing to do */ dowait(DOWAIT_NONBLOCK, NULL); for (jp = curjob; jp; jp = jp->prev_job) { - if (!(mode & SHOW_CHANGED) || jp->changed) showjob(out, jp, mode); + if (!(mode & SHOW_CHANGED) || jp->changed) + showjob(out, jp, mode); } } @@ -6413,9 +6652,11 @@ static void freejob(struct job *jp) { int i; INTOFF; for (i = jp->nprocs, ps = jp->ps; --i >= 0; ps++) { - if (ps->cmd != nullstr) ckfree(ps->cmd); + if (ps->cmd != nullstr) + ckfree(ps->cmd); } - if (jp->ps != &jp->ps0) ckfree(jp->ps); + if (jp->ps != &jp->ps0) + ckfree(jp->ps); jp->used = 0; set_curjob(jp, CUR_DELETE); INTON; @@ -6437,11 +6678,13 @@ static int waitcmd(int argc, char **argv) { /* no running procs */ goto out; } - if (jp->state == JOBRUNNING) break; + if (jp->state == JOBRUNNING) + break; jp->waited = 1; jp = jp->prev_job; } - if (!dowait(DOWAIT_WAITCMD_ALL, 0)) goto sigout; + if (!dowait(DOWAIT_WAITCMD_ALL, 0)) + goto sigout; } } retval = 127; @@ -6451,15 +6694,18 @@ static int waitcmd(int argc, char **argv) { job = curjob; goto start; do { - if (job->ps[job->nprocs - 1].pid == pid) break; + if (job->ps[job->nprocs - 1].pid == pid) + break; job = job->prev_job; start: - if (!job) goto repeat; + if (!job) + goto repeat; } while (1); } else job = getjob(*argv, 0); /* loop until process terminated or stopped */ - if (!dowait(DOWAIT_WAITCMD, job)) goto sigout; + if (!dowait(DOWAIT_WAITCMD, job)) + goto sigout; job->waited = 1; retval = getstatus(job); repeat:; @@ -6484,20 +6730,25 @@ static struct job *getjob(const char *name, int getctl) { char *(*match)(const char *, const char *); jp = curjob; p = name; - if (!p) goto currentjob; - if (*p != '%') goto err; + if (!p) + goto currentjob; + if (*p != '%') + goto err; c = *++p; - if (!c) goto currentjob; + if (!c) + goto currentjob; if (!p[1]) { if (c == '+' || c == '%') { currentjob: err_msg = "No current job"; goto check; } else if (c == '-') { - if (jp) jp = jp->prev_job; + if (jp) + jp = jp->prev_job; err_msg = "No previous job"; check: - if (!jp) goto err; + if (!jp) + goto err; goto gotit; } } @@ -6505,7 +6756,8 @@ static struct job *getjob(const char *name, int getctl) { num = atoi(p); if (num > 0 && num <= njobs) { jp = jobtab + num - 1; - if (jp->used) goto gotit; + if (jp->used) + goto gotit; goto err; } } @@ -6517,17 +6769,20 @@ static struct job *getjob(const char *name, int getctl) { found = 0; while (jp) { if (match(jp->ps[0].cmd, p)) { - if (found) goto err; + if (found) + goto err; found = jp; err_msg = "%s: ambiguous"; } jp = jp->prev_job; } - if (!found) goto err; + if (!found) + goto err; jp = found; gotit: err_msg = "job %s not created under job control"; - if (getctl && jp->jobctl == 0) goto err; + if (getctl && jp->jobctl == 0) + goto err; return jp; err: sh_error(err_msg, name); @@ -6545,14 +6800,18 @@ struct job *makejob(union node *node, int nprocs) { jp = growjobtab(); break; } - if (jp->used == 0) break; - if (jp->state != JOBDONE || !jp->waited) continue; - if (jobctl) continue; + if (jp->used == 0) + break; + if (jp->state != JOBDONE || !jp->waited) + continue; + if (jobctl) + continue; freejob(jp); break; } memset(jp, 0, sizeof(*jp)); - if (jobctl) jp->jobctl = 1; + if (jobctl) + jp->jobctl = 1; jp->prev_job = curjob; curjob = jp; jp->used = 1; @@ -6585,10 +6844,13 @@ static struct job *growjobtab(void) { jq--; #define joff(p) ((struct job *)((char *)(p) + l)) #define jmove(p) (p) = (void *)((char *)(p) + offset) - if (likely(joff(jp)->ps == &jq->ps0)) jmove(joff(jp)->ps); - if (joff(jp)->prev_job) jmove(joff(jp)->prev_job); + if (likely(joff(jp)->ps == &jq->ps0)) + jmove(joff(jp)->ps); + if (joff(jp)->prev_job) + jmove(joff(jp)->prev_job); } - if (curjob) jmove(curjob); + if (curjob) + jmove(curjob); #undef joff #undef jmove } @@ -6638,7 +6900,8 @@ static void forkchild(struct job *jp, union node *n, int mode) { pgrp = jp->ps[0].pid; /* This can fail because we are doing it in the parent also */ (void)setpgid(0, pgrp); - if (mode == FORK_FG) xtcsetpgrp(ttyfd, pgrp); + if (mode == FORK_FG) + xtcsetpgrp(ttyfd, pgrp); setsignal(SIGTSTP); setsignal(SIGTTOU); } else if (mode == FORK_BG) { @@ -6654,19 +6917,23 @@ static void forkchild(struct job *jp, union node *n, int mode) { setsignal(SIGQUIT); setsignal(SIGTERM); } - if (lvforked) return; - for (jp = curjob; jp; jp = jp->prev_job) freejob(jp); + if (lvforked) + return; + for (jp = curjob; jp; jp = jp->prev_job) + freejob(jp); } static void forkparent(struct job *jp, union node *n, int mode, int pid) { if (pid < 0) { TRACE(("Fork failed, errno=%d", errno)); - if (jp) freejob(jp); + if (jp) + freejob(jp); sh_error("Cannot fork"); __builtin_unreachable(); } TRACE(("In parent shell: child = %d\n", pid)); - if (!jp) return; + if (!jp) + return; if (mode != FORK_NOJOB && jp->jobctl) { int pgrp; if (jp->nprocs == 0) @@ -6685,7 +6952,8 @@ static void forkparent(struct job *jp, union node *n, int mode, int pid) { ps->pid = pid; ps->status = -1; ps->cmd = nullstr; - if (jobctl && n) ps->cmd = commandtext(n); + if (jobctl && n) + ps->cmd = commandtext(n); } } @@ -6745,7 +7013,8 @@ static int waitforjob(struct job *jp) { int st; TRACE(("waitforjob(%%%d) called\n", jp ? jobno(jp) : 0)); dowait(jp ? DOWAIT_BLOCK : DOWAIT_NONBLOCK, jp); - if (!jp) return exitstatus; + if (!jp) + return exitstatus; st = getstatus(jp); if (jp->jobctl) { xtcsetpgrp(ttyfd, rootpid); @@ -6757,9 +7026,11 @@ static int waitforjob(struct job *jp) { * intuit from the subprocess exit status whether a SIGINT * occurred, and if so interrupt ourselves. Yuck. - mycroft */ - if (jp->sigint) raise(SIGINT); + if (jp->sigint) + raise(SIGINT); } - if (!JOBS || jp->state == JOBDONE) freejob(jp); + if (!JOBS || jp->state == JOBDONE) + freejob(jp); return st; } @@ -6776,11 +7047,13 @@ static int waitone(int block, struct job *job) { TRACE(("dowait(%d) called\n", block)); pid = waitproc(block, &status); TRACE(("wait returns pid %d, status=%d\n", pid, status)); - if (pid <= 0) goto out; + if (pid <= 0) + goto out; for (jp = curjob; jp; jp = jp->prev_job) { struct procstat *sp; struct procstat *spend; - if (jp->state == JOBDONE) continue; + if (jp->state == JOBDONE) + continue; state = JOBDONE; spend = jp->ps + jp->nprocs; sp = jp->ps; @@ -6791,14 +7064,17 @@ static int waitone(int block, struct job *job) { sp->status = status; thisjob = jp; } - if (sp->status == -1) state = JOBRUNNING; - if (state == JOBRUNNING) continue; + if (sp->status == -1) + state = JOBRUNNING; + if (state == JOBRUNNING) + continue; if (WIFSTOPPED(sp->status)) { jp->stopstatus = sp->status; state = JOBSTOPPED; } } while (++sp < spend); - if (thisjob) goto gotjob; + if (thisjob) + goto gotjob; } goto out; gotjob: @@ -6832,14 +7108,17 @@ static int dowait(int block, struct job *jp) { int gotchld = *(volatile int *)&gotsigchld; int rpid; int pid; - if (jp && jp->state != JOBRUNNING) block = DOWAIT_NONBLOCK; - if (block == DOWAIT_NONBLOCK && !gotchld) return 1; + if (jp && jp->state != JOBRUNNING) + block = DOWAIT_NONBLOCK; + if (block == DOWAIT_NONBLOCK && !gotchld) + return 1; rpid = 1; do { pid = waitone(block, jp); rpid &= !!pid; block &= ~DOWAIT_WAITCMD_ALL; - if (!pid || (jp && jp->state != JOBRUNNING)) block = DOWAIT_NONBLOCK; + if (!pid || (jp && jp->state != JOBRUNNING)) + block = DOWAIT_NONBLOCK; } while (pid >= 0); return rpid; } @@ -6862,14 +7141,18 @@ static int waitproc(int block, int *status) { sigset_t oldmask; int flags = block == DOWAIT_BLOCK ? 0 : WNOHANG; int err; - if (jobctl) flags |= WUNTRACED; + if (jobctl) + flags |= WUNTRACED; do { gotsigchld = 0; - do err = wait3(status, flags, NULL); + do + err = wait3(status, flags, NULL); while (err < 0 && errno == EINTR); - if (err || (err = -!block)) break; + if (err || (err = -!block)) + break; sigblockall(&oldmask); - while (!gotsigchld && !pending_sig) sigsuspend(&oldmask); + while (!gotsigchld && !pending_sig) + sigsuspend(&oldmask); sigclearmask(); } while (gotsigchld); return err; @@ -6882,7 +7165,8 @@ static int stoppedjobs(void) { struct job *jp; int retval; retval = 0; - if (job_warning) goto out; + if (job_warning) + goto out; jp = curjob; if (jp && jp->state == JOBSTOPPED) { outstr("You have stopped jobs.\n", out2); @@ -6911,7 +7195,8 @@ static void cmdtxt(union node *n) { struct nodelist *lp; const char *p; char s[2]; - if (!n) return; + if (!n) + return; switch (n->type) { default: case NPIPE: @@ -6919,7 +7204,8 @@ static void cmdtxt(union node *n) { for (;;) { cmdtxt(lp->n); lp = lp->next; - if (!lp) break; + if (!lp) + break; cmdputs(" | "); } break; @@ -7054,9 +7340,11 @@ static void cmdtxt(union node *n) { static void cmdlist(union node *np, int sep) { for (; np; np = np->narg.next) { - if (!sep) cmdputs(spcstr); + if (!sep) + cmdputs(spcstr); cmdtxt(np); - if (sep && np->narg.next) cmdputs(spcstr); + if (sep && np->narg.next) + cmdputs(spcstr); } } @@ -7104,8 +7392,10 @@ static void cmdputs(const char *s) { c = '"'; break; case '=': - if (subtype == 0) break; - if ((subtype & VSTYPE) != VSNORMAL) quoted <<= 1; + if (subtype == 0) + break; + if ((subtype & VSTYPE) != VSNORMAL) + quoted <<= 1; str = vstype[subtype & VSTYPE]; if (subtype & VSNUL) c = ':'; @@ -7126,7 +7416,8 @@ static void cmdputs(const char *s) { } USTPUTC(c, nextc); checkstr: - if (!str) continue; + if (!str) + continue; dostr: while ((c = *str++)) { USTPUTC(c, nextc); @@ -7143,7 +7434,8 @@ static void showpipe(struct job *jp, struct output *out) { struct procstat *sp; struct procstat *spend; spend = jp->ps + jp->nprocs; - for (sp = jp->ps + 1; sp < spend; sp++) outfmt(out, " | %s", sp->cmd); + for (sp = jp->ps + 1; sp < spend; sp++) + outfmt(out, " | %s", sp->cmd); outcslow('\n', out); flushall(); } @@ -7153,7 +7445,8 @@ static void xtcsetpgrp(int fd, int pgrp) { sigblockall(NULL); err = tcsetpgrp(fd, pgrp); sigclearmask(); - if (err) sh_error("Cannot set tty process group (%s)", strerror(errno)); + if (err) + sh_error("Cannot set tty process group (%s)", strerror(errno)); } static int getstatus(struct job *job) { @@ -7166,7 +7459,8 @@ static int getstatus(struct job *job) { if (!WIFSTOPPED(status)) { /* XXX: limits number of signals */ retval = WTERMSIG(status); - if (retval == SIGINT) job->sigint = 1; + if (retval == SIGINT) + job->sigint = 1; } retval += 128; } @@ -7236,7 +7530,8 @@ static int readcmd(int argc, char **argv) { if (prompt && isatty(0)) { outstr(prompt, out2); } - if (!*(ap = argptr)) sh_error("arg count"); + if (!*(ap = argptr)) + sh_error("arg count"); status = 0; STARTSTACKSTR(p); goto start; @@ -7245,25 +7540,30 @@ static int readcmd(int argc, char **argv) { case 1: break; default: - if (errno == EINTR && !pending_sig) continue; + if (errno == EINTR && !pending_sig) + continue; /* fall through */ case 0: status = 1; goto out; } - if (!c) continue; + if (!c) + continue; if (newloc >= startloc) { - if (c == '\n') goto resetbs; + if (c == '\n') + goto resetbs; goto put; } if (!rflag && c == '\\') { newloc = p - (char *)stackblock(); continue; } - if (c == '\n') break; + if (c == '\n') + break; put: CHECKSTRSPACE(2, p); - if (strchr(qchars, c)) USTPUTC(CTLESC, p); + if (strchr(qchars, c)) + USTPUTC(CTLESC, p); USTPUTC(c, p); if (newloc >= startloc) { resetbs: @@ -7308,7 +7608,8 @@ static int umaskcmd(int argc, char **argv) { *ap++ = "ugo"[i]; *ap++ = '='; for (j = 0; j < 3; j++) - if (mask & (1u << (8 - (3 * i + j)))) *ap++ = "rwx"[j]; + if (mask & (1u << (8 - (3 * i + j)))) + *ap++ = "rwx"[j]; *ap++ = ','; } ap[-1] = '\0'; @@ -7321,7 +7622,8 @@ static int umaskcmd(int argc, char **argv) { if (isdigit((unsigned char)*ap)) { new_mask = 0; do { - if (*ap >= '8' || *ap < '0') sh_error(illnum, *argptr); + if (*ap >= '8' || *ap < '0') + sh_error(illnum, *argptr); new_mask = (new_mask << 3) + (*ap - '0'); } while (*++ap != '\0'); } else { @@ -7331,7 +7633,8 @@ static int umaskcmd(int argc, char **argv) { new_mask = mask; positions = 0; while (*ap) { - while (*ap && strchr("augo", *ap)) switch (*ap++) { + while (*ap && strchr("augo", *ap)) + switch (*ap++) { case 'a': positions |= 0111; break; @@ -7345,11 +7648,14 @@ static int umaskcmd(int argc, char **argv) { positions |= 0001; break; } - if (!positions) positions = 0111; /* default is a */ - if (!strchr("=+-", op = *ap)) break; + if (!positions) + positions = 0111; /* default is a */ + if (!strchr("=+-", op = *ap)) + break; ap++; new_val = 0; - while (*ap && strchr("rwxugoXs", *ap)) switch (*ap++) { + while (*ap && strchr("rwxugoXs", *ap)) + switch (*ap++) { case 'r': new_val |= 04; break; @@ -7369,7 +7675,8 @@ static int umaskcmd(int argc, char **argv) { new_val |= mask >> 0; break; case 'X': - if (mask & 0111) new_val |= 01; + if (mask & 0111) + new_val |= 01; break; case 's': /* ignored */ break; @@ -7415,7 +7722,8 @@ static void printlim(enum limtype how, const struct rlimit *limit, const struct limits *l) { uint64_t val; val = limit->rlim_max; - if (how & SOFT) val = limit->rlim_cur; + if (how & SOFT) + val = limit->rlim_cur; if (val == RLIM_INFINITY) out1fmt("unlimited\n"); else { @@ -7453,16 +7761,19 @@ static int ulimitcmd(int argc, char **argv) { set = *argptr ? 1 : 0; if (set) { char *p = *argptr; - if (all || argptr[1]) sh_error("too many arguments"); + if (all || argptr[1]) + sh_error("too many arguments"); if (strcmp(p, "unlimited") == 0) val = RLIM_INFINITY; else { val = (uint64_t)0; while ((c = *p++) >= '0' && c <= '9') { val = (val * 10) + (long)(c - '0'); - if (val < (uint64_t)0) break; + if (val < (uint64_t)0) + break; } - if (c) sh_error("bad number"); + if (c) + sh_error("bad number"); val *= l->factor; } } @@ -7476,8 +7787,10 @@ static int ulimitcmd(int argc, char **argv) { } getrlimit(l->cmd, &limit); if (set) { - if (how & HARD) limit.rlim_max = val; - if (how & SOFT) limit.rlim_cur = val; + if (how & HARD) + limit.rlim_max = val; + if (how & SOFT) + limit.rlim_cur = val; if (setrlimit(l->cmd, &limit) < 0) sh_error("error setting limit (%s)", strerror(errno)); } else { @@ -7504,7 +7817,8 @@ static char *single_quote(const char *s) { s += len; STADJUST(q - p, p); len = strspn(s, "'"); - if (!len) break; + if (!len) + break; q = p = makestrspace(len + 3, p); *q++ = '"'; q = mempcpy(q, s, len); @@ -7527,25 +7841,32 @@ static int procargs(int argc, char **argv) { xargv = argv; login = xargv[0] && xargv[0][0] == '-'; arg0 = xargv[0]; - if (argc > 0) xargv++; - for (i = 0; i < NOPTS; i++) optlist[i] = 2; + if (argc > 0) + xargv++; + for (i = 0; i < NOPTS; i++) + optlist[i] = 2; argptr = xargv; login |= options(1); xargv = argptr; xminusc = minusc; if (*xargv == NULL) { - if (xminusc) sh_error("-c requires an argument"); + if (xminusc) + sh_error("-c requires an argument"); sflag = 1; } /* JART: fuck tty check this is documented behavior w/ no args */ - if (iflag == 2 && sflag == 1 /* && isatty(0) && isatty(1) */) iflag = 1; - if (mflag == 2) mflag = iflag; + if (iflag == 2 && sflag == 1 /* && isatty(0) && isatty(1) */) + iflag = 1; + if (mflag == 2) + mflag = iflag; for (i = 0; i < NOPTS; i++) - if (optlist[i] == 2) optlist[i] = 0; + if (optlist[i] == 2) + optlist[i] = 0; /* POSIX 1003.2: first arg after -c cmd is $0, remainder $1... */ if (xminusc) { minusc = *xargv++; - if (*xargv) goto setarg0; + if (*xargv) + goto setarg0; } else if (!sflag) { setinputfile(*xargv, 0); setarg0: @@ -7595,7 +7916,8 @@ static int options(int cmdline) { int val; int c; int login = 0; - if (cmdline) minusc = NULL; + if (cmdline) + minusc = NULL; while ((p = *argptr) != NULL) { argptr++; if ((c = *p++) == '-') { @@ -7603,7 +7925,8 @@ static int options(int cmdline) { if (p[0] == '\0' || (p[0] == '-' && p[1] == '\0')) { if (!cmdline) { /* "-" means turn off -x and -v */ - if (p[0] == '\0') xflag = vflag = 0; + if (p[0] == '\0') + xflag = vflag = 0; /* "--" means reset params */ else if (*argptr == NULL) setparam(argptr); @@ -7623,7 +7946,8 @@ static int options(int cmdline) { login = 1; } else if (c == 'o') { minus_o(*argptr, val); - if (*argptr) argptr++; + if (*argptr) + argptr++; } else { setoption(c, val); } @@ -7682,7 +8006,8 @@ static void setparam(char **argv) { static void freeparam(volatile struct shparam *param) { char **ap; if (param->malloc) { - for (ap = param->p; *ap; ap++) ckfree(*ap); + for (ap = param->p; *ap; ap++) + ckfree(*ap); ckfree(param->p); } } @@ -7694,15 +8019,19 @@ static int shiftcmd(int argc, char **argv) { int n; char **ap1, **ap2; n = 1; - if (argc > 1) n = number(argv[1]); - if (n > shellparam.nparam) sh_error("can't shift that many"); + if (argc > 1) + n = number(argv[1]); + if (n > shellparam.nparam) + sh_error("can't shift that many"); INTOFF; shellparam.nparam -= n; for (ap1 = shellparam.p; --n >= 0; ap1++) { - if (shellparam.malloc) ckfree(*ap1); + if (shellparam.malloc) + ckfree(*ap1); } ap2 = shellparam.p; - while ((*ap2++ = *ap1++) != NULL); + while ((*ap2++ = *ap1++) != NULL) + ; shellparam.optind = 1; shellparam.optoff = -1; INTON; @@ -7713,7 +8042,8 @@ static int shiftcmd(int argc, char **argv) { * The set command builtin. */ static int setcmd(int argc, char **argv) { - if (argc == 1) return showvars(nullstr, 0, VUNSET); + if (argc == 1) + return showvars(nullstr, 0, VUNSET); INTOFF; options(0); optschanged(); @@ -7797,7 +8127,8 @@ static int getopts(char *optstr, char *optvar, char **optfirst) { c = '?'; goto out; } - if (*++q == ':') q++; + if (*++q == ':') + q++; } if (*++q == ':') { if (*p == '\0' && (p = *optnext) == NULL) { @@ -7813,7 +8144,8 @@ static int getopts(char *optstr, char *optvar, char **optfirst) { } goto out; } - if (p == *optnext) optnext++; + if (p == *optnext) + optnext++; setvar("OPTARG", p, 0); p = NULL; } else @@ -7845,15 +8177,18 @@ static int nextopt(const char *optstring) { char c; if ((p = optptr) == NULL || *p == '\0') { p = *argptr; - if (p == NULL || *p != '-' || *++p == '\0') return '\0'; + if (p == NULL || *p != '-' || *++p == '\0') + return '\0'; argptr++; if (p[0] == '-' && p[1] == '\0') /* check for "--" */ return '\0'; } c = *p++; for (q = optstring; *q != c;) { - if (*q == '\0') sh_error("Illegal option -%c", c); - if (*++q == ':') q++; + if (*q == '\0') + sh_error("Illegal option -%c", c); + if (*++q == ':') + q++; } if (*++q == ':') { if (*p == '\0' && (p = *argptr++) == NULL) { @@ -7869,7 +8204,8 @@ static int nextopt(const char *optstring) { /* values returned by readtoken */ static int isassignment(const char *p) { const char *q = endofname(p); - if (p == q) return 0; + if (p == q) + return 0; return *q == '='; } @@ -7886,7 +8222,8 @@ static union node *parsecmd(int interact) { checkkwd = 0; heredoclist = 0; doprompt = interact; - if (doprompt) setprompt(doprompt); + if (doprompt) + setprompt(doprompt); needprompt = 0; return list(1); } @@ -7904,7 +8241,8 @@ static union node *list(int nlflag) { parseheredoc(); return n1; case TEOF: - if (!n1 && !chknl) n1 = NEOF; + if (!n1 && !chknl) + n1 = NEOF; out_eof: parseheredoc(); tokpushback++; @@ -7912,7 +8250,8 @@ static union node *list(int nlflag) { return n1; } tokpushback++; - if (nlflag == 2 && tokendlist[tok]) return n1; + if (nlflag == 2 && tokendlist[tok]) + return n1; nlflag |= 2; n2 = andor(); tok = readtoken(); @@ -7948,7 +8287,8 @@ static union node *list(int nlflag) { case TSEMI: break; default: - if (!chknl) synexpect(-1); + if (!chknl) + synexpect(-1); tokpushback++; return n1; } @@ -8036,7 +8376,8 @@ static union node *command(void) { n1 = (union node *)stalloc(sizeof(struct nif)); n1->type = NIF; n1->nif.test = list(0); - if (readtoken() != TTHEN) synexpect(TTHEN); + if (readtoken() != TTHEN) + synexpect(TTHEN); n1->nif.ifpart = list(0); n2 = n1; while (readtoken() == TELIF) { @@ -8044,7 +8385,8 @@ static union node *command(void) { n2 = n2->nif.elsepart; n2->type = NIF; n2->nif.test = list(0); - if (readtoken() != TTHEN) synexpect(TTHEN); + if (readtoken() != TTHEN) + synexpect(TTHEN); n2->nif.ifpart = list(0); } if (lasttoken == TELSE) @@ -8090,7 +8432,8 @@ static union node *command(void) { } *app = NULL; n1->nfor.args = ap; - if (lasttoken != TNL && lasttoken != TSEMI) synexpect(-1); + if (lasttoken != TNL && lasttoken != TSEMI) + synexpect(-1); } else { n2 = (union node *)stalloc(sizeof(struct narg)); n2->type = NARG; @@ -8102,10 +8445,12 @@ static union node *command(void) { * Newline or semicolon here is optional (but note * that the original Bourne shell only allowed NL). */ - if (lasttoken != TSEMI) tokpushback++; + if (lasttoken != TSEMI) + tokpushback++; } checkkwd = CHKNL | CHKKWD | CHKALIAS; - if (readtoken() != TDO) synexpect(TDO); + if (readtoken() != TDO) + synexpect(TDO); n1->nfor.body = list(0); t = TDONE; break; @@ -8113,20 +8458,23 @@ static union node *command(void) { n1 = (union node *)stalloc(sizeof(struct ncase)); n1->type = NCASE; n1->ncase.linno = savelinno; - if (readtoken() != TWORD) synexpect(TWORD); + if (readtoken() != TWORD) + synexpect(TWORD); n1->ncase.expr = n2 = (union node *)stalloc(sizeof(struct narg)); n2->type = NARG; n2->narg.text = wordtext; n2->narg.backquote = backquotelist; n2->narg.next = NULL; checkkwd = CHKNL | CHKKWD | CHKALIAS; - if (readtoken() != TIN) synexpect(TIN); + if (readtoken() != TIN) + synexpect(TIN); cpp = &n1->ncase.cases; next_case: checkkwd = CHKNL | CHKKWD; t = readtoken(); while (t != TESAC) { - if (lasttoken == TLP) readtoken(); + if (lasttoken == TLP) + readtoken(); *cpp = cp = (union node *)stalloc(sizeof(struct nclist)); cp->type = NCLIST; app = &cp->nclist.pattern; @@ -8135,12 +8483,14 @@ static union node *command(void) { ap->type = NARG; ap->narg.text = wordtext; ap->narg.backquote = backquotelist; - if (readtoken() != TPIPE) break; + if (readtoken() != TPIPE) + break; app = &ap->narg.next; readtoken(); } ap->narg.next = NULL; - if (lasttoken != TRP) synexpect(TRP); + if (lasttoken != TRP) + synexpect(TRP); cp->nclist.body = list(2); cpp = &cp->nclist.next; checkkwd = CHKNL | CHKKWD; @@ -8170,7 +8520,8 @@ static union node *command(void) { tokpushback++; return simplecmd(); } - if (readtoken() != t) synexpect(t); + if (readtoken() != t) + synexpect(t); redir: /* Now check for redirection which may follow command */ checkkwd = CHKKWD | CHKALIAS; @@ -8237,7 +8588,8 @@ static union node *simplecmd(void) { struct builtincmd *bcmd; const char *name; /* We have a function */ - if (readtoken() != TRP) synexpect(TRP); + if (readtoken() != TRP) + synexpect(TRP); name = n->narg.text; if (!goodname(name) || ((bcmd = find_builtin(name)) && bcmd->flags & BUILTIN_SPECIAL)) @@ -8280,7 +8632,8 @@ static union node *makename(void) { static void fixredir(union node *n, const char *text, int err) { TRACE(("Fix redir %s %d\n", text, err)); - if (!err) n->ndup.vname = NULL; + if (!err) + n->ndup.vname = NULL; if (is_digit(text[0]) && text[1] == '\0') n->ndup.dupfd = digit_val(text[0]); else if (text[0] == '-' && text[1] == '\0') @@ -8295,12 +8648,15 @@ static void fixredir(union node *n, const char *text, int err) { static void parsefname(void) { union node *n = redirnode; - if (n->type == NHERE) checkkwd = CHKEOFMARK; - if (readtoken() != TWORD) synexpect(-1); + if (n->type == NHERE) + checkkwd = CHKEOFMARK; + if (readtoken() != TWORD) + synexpect(-1); if (n->type == NHERE) { struct heredoc *here = heredoc; struct heredoc *p; - if (quoteflag == 0) n->type = NXHERE; + if (quoteflag == 0) + n->type = NXHERE; TRACE(("Here document %d\n", n->type)); rmescapes(wordtext, 0); here->eofmark = wordtext; @@ -8391,7 +8747,8 @@ out: static void nlprompt(void) { plinno++; - if (doprompt) setprompt(2); + if (doprompt) + setprompt(2); } static void nlnoprompt(void) { @@ -8440,15 +8797,18 @@ static int xxreadtoken(void) { case PEOF: RETURN(TEOF); case '&': - if (pgetc_eatbnl() == '&') RETURN(TAND); + if (pgetc_eatbnl() == '&') + RETURN(TAND); pungetc(); RETURN(TBACKGND); case '|': - if (pgetc_eatbnl() == '|') RETURN(TOR); + if (pgetc_eatbnl() == '|') + RETURN(TOR); pungetc(); RETURN(TPIPE); case ';': - if (pgetc_eatbnl() == ';') RETURN(TENDCASE); + if (pgetc_eatbnl() == ';') + RETURN(TENDCASE); pungetc(); RETURN(TSEMI); case '(': @@ -8547,7 +8907,8 @@ static int readtoken1(int firstc, char const *syntax, char *eofmark, /* syntax stack */ struct synstack synbase = {.syntax = syntax}; struct synstack *synstack = &synbase; - if (syntax == DQSYNTAX) synstack->dblquote = 1; + if (syntax == DQSYNTAX) + synstack->dblquote = 1; quotef = 0; bqlist = NULL; STARTSTACKSTR(out); @@ -8601,7 +8962,8 @@ loop: { /* for each line, until end of word */ synstack->syntax = DQSYNTAX; synstack->dblquote = 1; toggledq: - if (synstack->varnest) synstack->innerdq ^= 1; + if (synstack->varnest) + synstack->innerdq ^= 1; goto quotemark; case CENDQUOTE: if (eofmark && !synstack->varnest) { @@ -8613,7 +8975,8 @@ loop: { /* for each line, until end of word */ synstack->dblquote = 0; } quotef++; - if (c == '"') goto toggledq; + if (c == '"') + goto toggledq; goto quotemark; case CVAR: /* '$' */ PARSESUB(); /* parse substitution */ @@ -8661,14 +9024,16 @@ loop: { /* for each line, until end of word */ case CEOF: goto endword; /* exit outer loop */ default: - if (synstack->varnest == 0) goto endword; /* exit outer loop */ + if (synstack->varnest == 0) + goto endword; /* exit outer loop */ USTPUTC(c, out); } c = pgetc_top(synstack); } } endword: - if (synstack->syntax == ARISYNTAX) synerror("Missing '))'"); + if (synstack->syntax == ARISYNTAX) + synerror("Missing '))'"); if (synstack->syntax != BASESYNTAX && eofmark == NULL) synerror("Unterminated quoted string"); if (synstack->varnest != 0) { @@ -8704,11 +9069,13 @@ checkend: { int markloc; char *p; if (striptabs) { - while (c == '\t') c = pgetc(); + while (c == '\t') + c = pgetc(); } markloc = out - (char *)stackblock(); for (p = eofmark; STPUTC(c, out), *p; p++) { - if (c != *p) goto more_heredoc; + if (c != *p) + goto more_heredoc; c = pgetc(); } if (c == '\n' || c == PEOF) { @@ -8787,7 +9154,8 @@ parseredir: { break; } } - if (fd != '\0') np->nfile.fd = digit_val(fd); + if (fd != '\0') + np->nfile.fd = digit_val(fd); redirnode = np; goto parseredir_return; } @@ -8839,7 +9207,8 @@ parsesub: { c = pgetc_eatbnl(); if (!subtype && cc == '#') { subtype = VSLENGTH; - if (c == '_' || isalnum(c)) goto varname; + if (c == '_' || isalnum(c)) + goto varname; cc = c; c = pgetc_eatbnl(); if (cc == '}' || c != '}') { @@ -8850,7 +9219,8 @@ parsesub: { } } if (!is_special(cc)) { - if (subtype == VSLENGTH) subtype = 0; + if (subtype == VSLENGTH) + subtype = 0; goto badsub; } USTPUTC(cc, out); @@ -8865,7 +9235,8 @@ parsesub: { /*FALLTHROUGH*/ default: p = strchr(types, c); - if (p == NULL) break; + if (p == NULL) + break; subtype |= p - types + VSNORMAL; break; case '%': @@ -8880,11 +9251,13 @@ parsesub: { break; } } else { - if (subtype == VSLENGTH && c != '}') subtype = 0; + if (subtype == VSLENGTH && c != '}') + subtype = 0; badsub: pungetc(); } - if (newsyn == ARISYNTAX) newsyn = DQSYNTAX; + if (newsyn == ARISYNTAX) + newsyn = DQSYNTAX; if ((newsyn != synstack->syntax || synstack->innerdq) && subtype != VSNORMAL) { synstack_push(&synstack, synstack->prev ?: alloca(sizeof(*synstack)), @@ -8895,7 +9268,8 @@ parsesub: { *((char *)stackblock() + typeloc) = subtype; if (subtype != VSNORMAL) { synstack->varnest++; - if (synstack->dblquote) synstack->dqvarnest++; + if (synstack->dblquote) + synstack->dqvarnest++; } STPUTC('=', out); } @@ -8962,7 +9336,8 @@ parsebackq: { } } nlpp = &bqlist; - while (*nlpp) nlpp = &(*nlpp)->next; + while (*nlpp) + nlpp = &(*nlpp)->next; *nlpp = (struct nodelist *)stalloc(sizeof(struct nodelist)); (*nlpp)->next = NULL; saveheredoclist = heredoclist; @@ -8975,7 +9350,8 @@ parsebackq: { if (oldstyle) doprompt = saveprompt; else { - if (readtoken() != TRP) synexpect(TRP); + if (readtoken() != TRP) + synexpect(TRP); setinputstring(nullstr); } parseheredoc(); @@ -8984,7 +9360,8 @@ parsebackq: { /* Start reading from old file again. */ popfile(); /* Ignore any pushed back tokens left from the backquote parsing. */ - if (oldstyle) tokpushback = 0; + if (oldstyle) + tokpushback = 0; out = growstackto(savelen + 1); if (str) { memcpy(out, str, savelen); @@ -9040,7 +9417,8 @@ static const char *expandstr(const char *ps) { doprompt = 0; result = ps; savehandler = handler; - if (unlikely(err = setjmp(jmploc.loc))) goto out; + if (unlikely(err = setjmp(jmploc.loc))) + goto out; handler = &jmploc; readtoken1(pgetc_eatbnl(), DQSYNTAX, FAKEEOFMARK, 0); n.narg.type = NARG; @@ -9051,7 +9429,8 @@ static const char *expandstr(const char *ps) { result = stackblock(); out: handler = savehandler; - if (err && exception != EXERROR) longjmp(handler->loc, 1); + if (err && exception != EXERROR) + longjmp(handler->loc, 1); doprompt = saveprompt; unwindfiles(file_stop); heredoclist = saveheredoclist; @@ -9106,14 +9485,17 @@ static void redirect(union node *redir, int flags) { int fd; int newfd; int *p; - if (!redir) return; + if (!redir) + return; sv = NULL; INTOFF; - if (likely(flags & REDIR_PUSH)) sv = redirlist; + if (likely(flags & REDIR_PUSH)) + sv = redirlist; n = redir; do { newfd = openredirect(n); - if (newfd < -1) continue; + if (newfd < -1) + continue; fd = n->nfile.fd; if (sv) { int closed; @@ -9129,7 +9511,8 @@ static void redirect(union node *redir, int flags) { } *p = i; } - if (fd == newfd) continue; + if (fd == newfd) + continue; dupredirect(n, newfd); } while ((n = n->nfile.next)); INTON; @@ -9156,7 +9539,8 @@ static int sh_open(const char *pathname, int flags, int mayfail) { fd = open(pathname, flags, 0666); e = errno; } while (fd < 0 && e == EINTR && !pending_sig); - if (mayfail || fd >= 0) return fd; + if (mayfail || fd >= 0) + return fd; sh_open_fail(pathname, flags, e); } @@ -9182,7 +9566,8 @@ static int openredirect(union node *redir) { flags = O_WRONLY | O_CREAT | O_EXCL; goto do_open; } - if (S_ISREG(sb.st_mode)) goto ecreate; + if (S_ISREG(sb.st_mode)) + goto ecreate; f = sh_open(fname, O_WRONLY, 0); if (!fstat(f, &sb) && S_ISREG(sb.st_mode)) { close(f); @@ -9200,7 +9585,8 @@ static int openredirect(union node *redir) { case NTOFD: case NFROMFD: f = redir->ndup.dupfd; - if (f == redir->nfile.fd) f = -2; + if (f == redir->nfile.fd) + f = -2; break; default: /* Fall through to eliminate warning. */ @@ -9231,7 +9617,8 @@ static void dupredirect(union node *redir, int f) { err = errno; } close(f); - if (err < 0) goto err; + if (err < 0) + goto err; return; err: sh_error("%ld: %s", f, strerror(err)); @@ -9246,7 +9633,8 @@ static int64_t openhere(union node *redir) { char *p; int pip[2]; unsigned len = 0; - if (pipe(pip) < 0) sh_error("Pipe call failed"); + if (pipe(pip) < 0) + sh_error("Pipe call failed"); p = redir->nhere.doc->narg.text; if (redir->type == NXHERE) { expandarg(redir->nhere.doc, NULL, EXP_QUOTED); @@ -9281,14 +9669,17 @@ static void popredir(int drop) { rp = redirlist; for (i = 0; i < 10; i++) { int closed; - if (rp->renamed[i] == EMPTY) continue; + if (rp->renamed[i] == EMPTY) + continue; closed = drop ? 1 : update_closed_redirs(i, rp->renamed[i]); switch (rp->renamed[i]) { case CLOSED: - if (!closed) close(i); + if (!closed) + close(i); break; default: - if (!drop) dup2(rp->renamed[i], i); + if (!drop) + dup2(rp->renamed[i], i); close(rp->renamed[i]); break; } @@ -9329,13 +9720,15 @@ static int redirectsafe(union node *redir, int flags) { redirect(redir, flags); } handler = savehandler; - if (err && exception != EXERROR) longjmp(handler->loc, 1); + if (err && exception != EXERROR) + longjmp(handler->loc, 1); RESTOREINT(saveint); return err; } static void unwindredir(struct redirtab *stop) { - while (redirlist != stop) popredir(0); + while (redirlist != stop) + popredir(0); } static struct redirtab *pushredir(union node *redir) { @@ -9343,11 +9736,13 @@ static struct redirtab *pushredir(union node *redir) { struct redirtab *q; int i; q = redirlist; - if (!redir) goto out; + if (!redir) + goto out; sv = ckmalloc(sizeof(struct redirtab)); sv->next = q; redirlist = sv; - for (i = 0; i < 10; i++) sv->renamed[i] = EMPTY; + for (i = 0; i < 10; i++) + sv->renamed[i] = EMPTY; out: return q; } @@ -9383,16 +9778,19 @@ static int trapcmd(int argc, char **argv) { if (action[0] == '-' && action[1] == '\0') action = NULL; else { - if (*action) trapcnt++; + if (*action) + trapcnt++; action = savestr(action); } } if (trap[signo]) { - if (*trap[signo]) trapcnt--; + if (*trap[signo]) + trapcnt--; ckfree(trap[signo]); } trap[signo] = action; - if (signo != 0) setsignal(signo); + if (signo != 0) + setsignal(signo); INTON; ap++; } @@ -9417,14 +9815,18 @@ static void setsignal(int signo) { action = S_IGN; if (rootshell && action == S_DFL && !lvforked) { if (signo == SIGINT) { - if (iflag || minusc || sflag == 0) action = S_CATCH; + if (iflag || minusc || sflag == 0) + action = S_CATCH; } else if (signo == SIGQUIT || signo == SIGTERM) { - if (iflag) action = S_IGN; + if (iflag) + action = S_IGN; } else if (signo == SIGTSTP || signo == SIGTTOU) { - if (mflag) action = S_IGN; + if (mflag) + action = S_IGN; } } - if (signo == SIGCHLD) action = S_CATCH; + if (signo == SIGCHLD) + action = S_CATCH; t = &sigmode[signo - 1]; tsig = *t; if (tsig == 0) { @@ -9448,7 +9850,8 @@ static void setsignal(int signo) { tsig = S_RESET; /* force to be set */ } } - if (tsig == S_HARD_IGN || tsig == action) return; + if (tsig == S_HARD_IGN || tsig == action) + return; switch (action) { case S_CATCH: act.sa_handler = onsig; @@ -9459,7 +9862,8 @@ static void setsignal(int signo) { default: act.sa_handler = SIG_DFL; } - if (!lvforked) *t = action; + if (!lvforked) + *t = action; act.sa_flags = 0; sigfillset(&act.sa_mask); sigaction(signo, &act, 0); @@ -9472,22 +9876,26 @@ static void ignoresig(int signo) { if (sigmode[signo - 1] != S_IGN && sigmode[signo - 1] != S_HARD_IGN) { signal(signo, SIG_IGN); } - if (!vforked) sigmode[signo - 1] = S_HARD_IGN; + if (!vforked) + sigmode[signo - 1] = S_HARD_IGN; } /* * Signal handler. */ static void onsig(int signo) { - if (vforked) return; + if (vforked) + return; if (signo == SIGCHLD) { gotsigchld = 1; - if (!trap[SIGCHLD]) return; + if (!trap[SIGCHLD]) + return; } gotsig[signo - 1] = 1; pending_sig = signo; if (signo == SIGINT && !trap[SIGINT]) { - if (!suppressint) onint(); + if (!suppressint) + onint(); intpending = 1; } } @@ -9501,7 +9909,8 @@ static void dotrap(void) { char *q; int i; int status, last_status; - if (!pending_sig) return; + if (!pending_sig) + return; status = savestatus; last_status = status; if (likely(status < 0)) { @@ -9511,16 +9920,19 @@ static void dotrap(void) { pending_sig = 0; barrier(); for (i = 0, q = gotsig; i < NSIG - 1; i++, q++) { - if (!*q) continue; + if (!*q) + continue; if (evalskip) { pending_sig = i + 1; break; } *q = 0; p = trap[i + 1]; - if (!p) continue; + if (!p) + continue; evalstring(p, 0); - if (evalskip != SKIPFUNC) exitstatus = status; + if (evalskip != SKIPFUNC) + exitstatus = status; } savestatus = last_status; } @@ -9530,7 +9942,8 @@ static void dotrap(void) { */ static void setinteractive(int on) { static int is_interactive; - if (++on == is_interactive) return; + if (++on == is_interactive) + return; is_interactive = on; setsignal(SIGINT); setsignal(SIGQUIT); @@ -9545,7 +9958,8 @@ wontreturn static void exitshell(void) { char *p; savestatus = exitstatus; TRACE(("pid %d, exitshell(%d)\n", getpid(), savestatus)); - if (setjmp(loc.loc)) goto out; + if (setjmp(loc.loc)) + goto out; handler = &loc; if ((p = trap[0])) { trap[0] = NULL; @@ -9559,7 +9973,8 @@ out: * Disable job control so that whoever had the foreground before we * started can get it back. */ - if (likely(!setjmp(loc.loc))) setjobctl(0); + if (likely(!setjmp(loc.loc))) + setjobctl(0); flushall(); _exit(exitstatus); } @@ -9567,7 +9982,8 @@ out: static int decode_signal(const char *string, int minsig) { int signo; signo = decode_signum(string); - if (signo >= 0) return signo; + if (signo >= 0) + return signo; for (signo = minsig; signo < NSIG; signo++) { if (!strcasecmp(string, strsignal(signo))) { return signo; @@ -9627,7 +10043,8 @@ static int print_escape_str(const char *f, int *param, int *array, char *s) { total = len - 1; q[-1] = (!!((f[1] - 's') | done) - 1) & f[2]; total += !!q[-1]; - if (f[1] == 's') goto easy; + if (f[1] == 's') + goto easy; p = makestrspace(len, q); memset(p, 'X', total); p[total] = 0; @@ -9651,7 +10068,8 @@ static int printfcmd(int argc, char *argv[]) { nextopt(nullstr); argv = argptr; format = *argv; - if (!format) sh_error("usage: printf format [arg ...]"); + if (!format) + sh_error("usage: printf format [arg ...]"); gargv = ++argv; do { /* @@ -9703,7 +10121,8 @@ static int printfcmd(int argc, char *argv[]) { fmt += strspn(fmt, kSkip2); } ch = *fmt; - if (!ch) sh_error("missing format character"); + if (!ch) + sh_error("missing format character"); /* null terminate format string to we can use it as an argument to printf. */ nextch = fmt[1]; @@ -9712,7 +10131,8 @@ static int printfcmd(int argc, char *argv[]) { case 'b': *fmt = 's'; /* escape if a \c was encountered */ - if (print_escape_str(start, param, array, getstr())) goto out; + if (print_escape_str(start, param, array, getstr())) + goto out; *fmt = 'b'; break; case 'c': { @@ -9775,7 +10195,8 @@ static int conv_escape_str(char *str, char **sp) { STARTSTACKSTR(cp); do { c = ch = *str++; - if (ch != '\\') continue; + if (ch != '\\') + continue; c = *str++; if (c == 'c') { /* \c as in SYSV echo - abort all processing.... */ @@ -9787,7 +10208,8 @@ static int conv_escape_str(char *str, char **sp) { * They start with a \0, and are followed by 0, 1, 2, * or 3 octal digits. */ - if (c == '0' && isodigit(*str)) str++; + if (c == '0' && isodigit(*str)) + str++; /* Finally test for sequences valid in the format string */ str = conv_escape(str - 1, &c); } while (STPUTC(c, cp), (char)ch); @@ -9875,10 +10297,12 @@ static uint64_t getuintmax(int sign) { uint64_t val = 0; char *cp, *ep; cp = *gargv; - if (cp == NULL) goto out; + if (cp == NULL) + goto out; gargv++; val = (unsigned char)cp[1]; - if (*cp == '\"' || *cp == '\'') goto out; + if (*cp == '\"' || *cp == '\'') + goto out; errno = 0; val = sign ? strtoimax(cp, &ep, 0) : strtoumax(cp, &ep, 0); check_conversion(cp, ep); @@ -9890,9 +10314,11 @@ static double getdouble(void) { double val; char *cp, *ep; cp = *gargv; - if (cp == NULL) return 0; + if (cp == NULL) + return 0; gargv++; - if (*cp == '\"' || *cp == '\'') return (unsigned char)cp[1]; + if (*cp == '\"' || *cp == '\'') + return (unsigned char)cp[1]; errno = 0; val = strtod(cp, &ep); check_conversion(cp, ep); @@ -9922,7 +10348,8 @@ static int echocmd(int argc, char **argv) { do { const char *fmt = "%s "; char *s = *argv; - if (!s || !*++argv) fmt = lastfmt; + if (!s || !*++argv) + fmt = lastfmt; nonl = print_escape_str(fmt, NULL, NULL, s ?: nullstr); } while (!nonl && *argv); return 0; @@ -9961,7 +10388,8 @@ static inline int faccessat_confused_about_superuser(void) { static const struct t_op *getop(const char *s) { const struct t_op *op; for (op = ops; op->op_text; op++) { - if (strcmp(s, op->op_text) == 0) return op; + if (strcmp(s, op->op_text) == 0) + return op; } return NULL; } @@ -9971,14 +10399,16 @@ static int testcmd(int argc, char **argv) { enum token n; int res = 1; if (*argv[0] == '[') { - if (*argv[--argc] != ']') sh_error("missing ]"); + if (*argv[--argc] != ']') + sh_error("missing ]"); argv[argc] = NULL; } t_wp_op = NULL; recheck: argv++; argc--; - if (argc < 1) return res; + if (argc < 1) + return res; /* * POSIX prescriptions: he who wrote this deserves the Nobel * peace prize. @@ -10024,7 +10454,8 @@ static int oexpr(enum token n) { for (;;) { res |= aexpr(n); n = t_lex(t_wp + 1); - if (n != BOR) break; + if (n != BOR) + break; n = t_lex(t_wp += 2); } return res; @@ -10033,34 +10464,42 @@ static int oexpr(enum token n) { static int aexpr(enum token n) { int res = 1; for (;;) { - if (!nexpr(n)) res = 0; + if (!nexpr(n)) + res = 0; n = t_lex(t_wp + 1); - if (n != BAND) break; + if (n != BAND) + break; n = t_lex(t_wp += 2); } return res; } static int nexpr(enum token n) { - if (n != UNOT) return primary1(n); + if (n != UNOT) + return primary1(n); n = t_lex(t_wp + 1); - if (n != EOI) t_wp++; + if (n != EOI) + t_wp++; return !nexpr(n); } static int primary1(enum token n) { enum token nn; int res; - if (n == EOI) return 0; /* missing expression */ + if (n == EOI) + return 0; /* missing expression */ if (n == LPAREN) { - if ((nn = t_lex(++t_wp)) == RPAREN) return 0; /* missing expression */ + if ((nn = t_lex(++t_wp)) == RPAREN) + return 0; /* missing expression */ res = oexpr(nn); - if (t_lex(++t_wp) != RPAREN) syntax(NULL, "closing paren expected"); + if (t_lex(++t_wp) != RPAREN) + syntax(NULL, "closing paren expected"); return res; } if (t_wp_op && t_wp_op->op_type == UNOP) { /* unary expression */ - if (*++t_wp == NULL) syntax(t_wp_op->op_text, "argument expected"); + if (*++t_wp == NULL) + syntax(t_wp_op->op_text, "argument expected"); switch (n) { case STREZ: return strlen(*t_wp) == 0; @@ -10090,7 +10529,8 @@ static int binop0(void) { opnd1 = *t_wp; (void)t_lex(++t_wp); op = t_wp_op; - if ((opnd2 = *++t_wp) == (char *)0) syntax(op->op_text, "argument expected"); + if ((opnd2 = *++t_wp) == (char *)0) + syntax(op->op_text, "argument expected"); switch (op->op_num) { default: case STREQ: @@ -10124,7 +10564,8 @@ static int binop0(void) { static int filstat(char *nm, enum token mode) { struct stat s; - if (mode == FILSYM ? lstat(nm, &s) : stat(nm, &s)) return 0; + if (mode == FILSYM ? lstat(nm, &s) : stat(nm, &s)) + return 0; switch (mode) { case FILEXIST: return 1; @@ -10179,8 +10620,10 @@ static enum token t_lex(char **tp) { static int isoperand(char **tp) { struct t_op const *op; char *s; - if (!(s = tp[1])) return 1; - if (!tp[2]) return 0; + if (!(s = tp[1])) + return 1; + if (!tp[2]) + return 0; op = getop(s); return op && op->op_type == BINOP; } @@ -10209,7 +10652,8 @@ static int equalf(const char *f1, const char *f2) { static int has_exec_bit_set(const char *path) { struct stat st; - if (stat(path, &st)) return 0; + if (stat(path, &st)) + return 0; return st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH); } @@ -10250,7 +10694,8 @@ static int timescmd() { static struct Var **hashvar(const char *p) { unsigned int hashval; hashval = ((unsigned char)*p) << 4; - while (*p && *p != '=') hashval += (unsigned char)*p++; + while (*p && *p != '=') + hashval += (unsigned char)*p++; return &vartab[hashval % VTABSIZE]; } @@ -10288,7 +10733,8 @@ static struct Var *setvar(const char *name, const char *val, int flags) { q = endofname(name); p = strchrnul(q, '='); namelen = p - name; - if (!namelen || p != q) sh_error("%.*s: bad variable name", namelen, name); + if (!namelen || p != q) + sh_error("%.*s: bad variable name", namelen, name); vallen = 0; if (val == NULL) { flags |= VUNSET; @@ -10344,24 +10790,30 @@ static struct Var *setvareq(char *s, int flags) { if (vp) { if (vp->flags & VREADONLY) { const char *n; - if (flags & VNOSAVE) free(s); + if (flags & VNOSAVE) + free(s); n = vp->text; sh_error("%.*s: is read only", strchrnul(n, '=') - n, n); } - if (flags & VNOSET) goto out; - if (vp->func && (flags & VNOFUNC) == 0) (*vp->func)(strchrnul(s, '=') + 1); - if ((vp->flags & (VTEXTFIXED | VSTACK)) == 0) ckfree(vp->text); + if (flags & VNOSET) + goto out; + if (vp->func && (flags & VNOFUNC) == 0) + (*vp->func)(strchrnul(s, '=') + 1); + if ((vp->flags & (VTEXTFIXED | VSTACK)) == 0) + ckfree(vp->text); if (((flags & (VEXPORT | VREADONLY | VSTRFIXED | VUNSET)) | (vp->flags & VSTRFIXED)) == VUNSET) { *vpp = vp->next; ckfree(vp); out_free: - if ((flags & (VTEXTFIXED | VSTACK | VNOSAVE)) == VNOSAVE) ckfree(s); + if ((flags & (VTEXTFIXED | VSTACK | VNOSAVE)) == VNOSAVE) + ckfree(s); goto out; } flags |= vp->flags & ~(VTEXTFIXED | VSTACK | VNOSAVE | VUNSET); } else { - if (flags & VNOSET) goto out; + if (flags & VNOSET) + goto out; if ((flags & (VEXPORT | VREADONLY | VSTRFIXED | VUNSET)) == VUNSET) goto out_free; /* not found */ @@ -10370,7 +10822,8 @@ static struct Var *setvareq(char *s, int flags) { vp->func = NULL; *vpp = vp; } - if (!(flags & (VTEXTFIXED | VSTACK | VNOSAVE))) s = savestr(s); + if (!(flags & (VTEXTFIXED | VSTACK | VNOSAVE))) + s = savestr(s); vp->text = s; vp->flags = flags; out: @@ -10409,12 +10862,15 @@ static char **listvars(int on, int off, char ***end) { do { for (vp = *vpp; vp; vp = vp->next) if ((vp->flags & mask) == on) { - if (ep == stackstrend()) ep = growstackstr(); + if (ep == stackstrend()) + ep = growstackstr(); *ep++ = (char *)vp->text; } } while (++vpp < vartab + VTABSIZE); - if (ep == stackstrend()) ep = growstackstr(); - if (end) *end = ep; + if (ep == stackstrend()) + ep = growstackstr(); + if (end) + *end = ep; *ep++ = NULL; return grabstackstr(ep); } @@ -10441,7 +10897,8 @@ static int showvars(const char *prefix, int on, int off) { const char *q; p = strchrnul(*ep, '='); q = nullstr; - if (*p) q = single_quote(++p); + if (*p) + q = single_quote(++p); out1fmt("%s%s%.*s%s\n", prefix, sep, (int)(p - *ep), *ep, q); } return 0; @@ -10481,7 +10938,8 @@ static int exportcmd(int argc, char **argv) { */ static int localcmd(int argc, char **argv) { char *name; - if (!localvar_stack) sh_error("not in a function"); + if (!localvar_stack) + sh_error("not in a function"); argv = argptr; while ((name = *argv++) != NULL) { mklocal(name, 0); @@ -10521,7 +10979,8 @@ static void mklocal(char *name, int flags) { lvp->text = vp->text; lvp->flags = vp->flags; vp->flags |= VSTRFIXED | VTEXTFIXED; - if (eq) setvareq(name, flags); + if (eq) + setvareq(name, flags); } } lvp->vp = vp; @@ -10555,8 +11014,10 @@ static void poplocalvars(void) { vp->flags &= ~(VSTRFIXED | VREADONLY); unsetvar(vp->text); } else { - if (vp->func) (*vp->func)(strchrnul(lvp->text, '=') + 1); - if ((vp->flags & (VTEXTFIXED | VSTACK)) == 0) ckfree(vp->text); + if (vp->func) + (*vp->func)(strchrnul(lvp->text, '=') + 1); + if ((vp->flags & (VTEXTFIXED | VSTACK)) == 0) + ckfree(vp->text); vp->flags = lvp->flags; vp->text = lvp->text; } @@ -10572,7 +11033,8 @@ static struct localvar_list *pushlocalvars(int push) { struct localvar_list *ll; struct localvar_list *top; top = localvar_stack; - if (!push) goto out; + if (!push) + goto out; INTOFF; ll = ckmalloc(sizeof(*ll)); ll->lv = NULL; @@ -10584,7 +11046,8 @@ out: } static void unwindlocalvars(struct localvar_list *stop) { - while (localvar_stack != stop) poplocalvars(); + while (localvar_stack != stop) + poplocalvars(); } /* @@ -10604,7 +11067,8 @@ static int unsetcmd(int argc, char **argv) { unsetvar(*ap); continue; } - if (flag != 'v') unsetfunc(*ap); + if (flag != 'v') + unsetfunc(*ap); } return 0; } @@ -10707,7 +11171,8 @@ static void forkreset() { if (*tp && **tp) { /* trap not NULL or SIG_IGN */ ckfree(*tp); *tp = NULL; - if (tp != &trap[0]) setsignal(tp - trap); + if (tp != &trap[0]) + setsignal(tp - trap); } } trapcnt = 0; @@ -10732,7 +11197,8 @@ static void reset() { } static void calcsize(union node *n) { - if (n == NULL) return; + if (n == NULL) + return; funcblocksize += nodesize[n->type]; switch (n->type) { case NCMD: @@ -10837,7 +11303,8 @@ static void sizenodelist(struct nodelist *lp) { static union node *copynode(union node *n) { union node *new; - if (n == NULL) return NULL; + if (n == NULL) + return NULL; new = funcblock; funcblock = (char *)funcblock + nodesize[n->type]; switch (n->type) { @@ -10956,7 +11423,8 @@ static int cmdloop(int top) { for (;;) { int skip; setstackmark(&smark); - if (jobctl) showjobs(out2, SHOW_CHANGED); + if (jobctl) + showjobs(out2, SHOW_CHANGED); inter = 0; if (iflag && top) { inter++; @@ -10965,10 +11433,12 @@ static int cmdloop(int top) { n = parsecmd(inter); /* showtree(n); DEBUG */ if (n == NEOF) { - if (!top || numeof >= 50) break; + if (!top || numeof >= 50) + break; if (!stoppedjobs()) { if (!Iflag) { - if (iflag) outcslow('\n', out2); + if (iflag) + outcslow('\n', out2); break; } outstr("\nUse \"exit\" to leave shell.\n", out2); @@ -10979,7 +11449,8 @@ static int cmdloop(int top) { job_warning = (job_warning == 2) ? 1 : 0; numeof = 0; i = evaltree(n, 0); - if (n) status = i; + if (n) + status = i; } popstackmark(&smark); skip = evalskip; @@ -10996,7 +11467,8 @@ static int cmdloop(int top) { */ static void read_profile(const char *name) { name = expandstr(name); - if (setinputfile(name, INPUT_PUSH_FILE | INPUT_NOFILE_OK) < 0) return; + if (setinputfile(name, INPUT_PUSH_FILE | INPUT_NOFILE_OK) < 0) + return; cmdloop(0); popfile(); } @@ -11011,7 +11483,8 @@ static char *find_dot_file(char *basename) { struct stat statb; int len; /* don't try this for absolute or relative paths */ - if (strchr(basename, '/')) return basename; + if (strchr(basename, '/')) + return basename; while ((len = padvance(&path, basename)) >= 0) { fullname = stackblock(); if ((!pathopt || *pathopt == 'f') && !stat(fullname, &statb) && @@ -11040,8 +11513,10 @@ static int dotcmd(int argc, char **argv) { } static int exitcmd(int argc, char **argv) { - if (stoppedjobs()) return 0; - if (argc > 1) savestatus = number(argv[1]); + if (stoppedjobs()) + return 0; + if (argc > 1) + savestatus = number(argv[1]); exraise(EXEXIT); } @@ -11064,7 +11539,8 @@ int main(int argc, char **argv) { exitreset(); e = exception; s = state; - if (e == EXEND || e == EXEXIT || s == 0 || iflag == 0 || shlvl) exitshell(); + if (e == EXEND || e == EXEXIT || s == 0 || iflag == 0 || shlvl) + exitshell(); reset(); if (e == EXINT) { outcslow('\n', out2); @@ -11103,7 +11579,8 @@ state2: popstackmark(&smark); state3: state = 4; - if (minusc) evalstring(minusc, sflag ? 0 : EV_EXIT); + if (minusc) + evalstring(minusc, sflag ? 0 : EV_EXIT); if (sflag || minusc == NULL) { state4: /* XXX ??? - why isn't this before the "if" statement */ cmdloop(1); diff --git a/examples/walk.c b/examples/walk.c index 09df2ddfd..b41f6d981 100644 --- a/examples/walk.c +++ b/examples/walk.c @@ -44,8 +44,10 @@ static int display_info(const char *fpath, const struct stat *sb, int tflag, int main(int argc, char *argv[]) { int flags = 0; const char *dir; - if (argc > 2 && strchr(argv[2], 'd') != NULL) flags |= FTW_DEPTH; - if (argc > 2 && strchr(argv[2], 'p') != NULL) flags |= FTW_PHYS; + if (argc > 2 && strchr(argv[2], 'd') != NULL) + flags |= FTW_DEPTH; + if (argc > 2 && strchr(argv[2], 'p') != NULL) + flags |= FTW_PHYS; dir = argc < 2 ? "." : argv[1]; if (nftw(dir, display_info, 20, flags) == -1) { fprintf(stderr, "nftw() failed: %s: %s\n", strerror(errno), dir); diff --git a/examples/wall.c b/examples/wall.c index 6b6eeddc2..e0fece754 100644 --- a/examples/wall.c +++ b/examples/wall.c @@ -96,7 +96,8 @@ int main(int argc, char *argv[]) { appends(&msg, "\e[1m"); // bold text appendf(&msg, "Broadcast message from %s@%s", getpwuid(getuid())->pw_name, GetHost()); - if (isatty(0) && (s = ttyname(0))) appendf(&msg, " (%s)", s); + if (isatty(0) && (s = ttyname(0))) + appendf(&msg, " (%s)", s); appendf(&msg, " (%s):\r\n", GetTime()); appends(&msg, "\e[K"); @@ -104,7 +105,8 @@ int main(int argc, char *argv[]) { if (optind < argc) { // use cli arguments as message if they exist for (int i = 0; optind + i < argc; ++i) { - if (i) appends(&msg, " "); + if (i) + appends(&msg, " "); for (s = argv[optind + i]; *s; ++s) { if (*s == '\n') { appends(&msg, "\r\n\e[K"); @@ -135,8 +137,10 @@ int main(int argc, char *argv[]) { char pts[32]; snprintf(pts, sizeof(pts), "/dev/pts/%d", i); if ((fd = open(pts, O_WRONLY | O_NOCTTY)) == -1) { - if (errno == ENOENT) continue; - if (g_verbose) perror(pts); + if (errno == ENOENT) + continue; + if (g_verbose) + perror(pts); } write(fd, msg, appendz(msg).i); close(fd); diff --git a/libc/calls/_ptsname.c b/libc/calls/_ptsname.c index a44cc6b54..d28b229ec 100644 --- a/libc/calls/_ptsname.c +++ b/libc/calls/_ptsname.c @@ -59,7 +59,8 @@ int _ptsname(int fd, char *buf, size_t size) { t.sn[5] = 0; if (IsLinux()) { - if (sys_ioctl(fd, TIOCGPTN, &pty)) return -1; + if (sys_ioctl(fd, TIOCGPTN, &pty)) + return -1; t.sn[5] = 'p'; t.sn[6] = 't'; t.sn[7] = 's'; diff --git a/libc/calls/cfspeed.c b/libc/calls/cfspeed.c index 4aaeee2bc..9ecbe2517 100644 --- a/libc/calls/cfspeed.c +++ b/libc/calls/cfspeed.c @@ -101,7 +101,9 @@ int cfsetispeed(struct termios *t, uint32_t speed) { * @asyncsignalsafe */ int cfsetspeed(struct termios *t, uint32_t speed) { - if (cfsetispeed(t, speed) == -1) return -1; - if (cfsetospeed(t, speed) == -1) return -1; + if (cfsetispeed(t, speed) == -1) + return -1; + if (cfsetospeed(t, speed) == -1) + return -1; return 0; } diff --git a/libc/calls/chdir-nt.c b/libc/calls/chdir-nt.c index 9982d36ca..ebc052c5a 100644 --- a/libc/calls/chdir-nt.c +++ b/libc/calls/chdir-nt.c @@ -33,7 +33,8 @@ textwindows int sys_chdir_nt_impl(char16_t path[hasatleast PATH_MAX], char16_t var[4]; if (len && path[len - 1] != u'\\') { - if (len + 2 > PATH_MAX) return enametoolong(); + if (len + 2 > PATH_MAX) + return enametoolong(); path[len + 0] = u'\\'; path[len + 1] = u'\0'; } @@ -84,7 +85,9 @@ textwindows int sys_chdir_nt_impl(char16_t path[hasatleast PATH_MAX], textwindows int sys_chdir_nt(const char *path) { int len; char16_t path16[PATH_MAX]; - if ((len = __mkntpath(path, path16)) == -1) return -1; - if (!len) return enoent(); + if ((len = __mkntpath(path, path16)) == -1) + return -1; + if (!len) + return enoent(); return sys_chdir_nt_impl(path16, len); } diff --git a/libc/calls/checksignal.c b/libc/calls/checksignal.c index 07f34d55f..be2221676 100644 --- a/libc/calls/checksignal.c +++ b/libc/calls/checksignal.c @@ -24,11 +24,16 @@ textwindows int _check_signal(bool restartable) { int status; - if (_check_cancel() == -1) return -1; - if (!_weaken(__sig_check)) return 0; - if (!(status = _weaken(__sig_check)())) return 0; - if (_check_cancel() == -1) return -1; - if (status == 2 && restartable) return 0; + if (_check_cancel() == -1) + return -1; + if (!_weaken(__sig_check)) + return 0; + if (!(status = _weaken(__sig_check)())) + return 0; + if (_check_cancel() == -1) + return -1; + if (status == 2 && restartable) + return 0; return eintr(); } diff --git a/libc/calls/clktck.c b/libc/calls/clktck.c index 1436a0ffa..ead1400e0 100644 --- a/libc/calls/clktck.c +++ b/libc/calls/clktck.c @@ -61,7 +61,8 @@ static dontinline int __clk_tck_init(void) { } else { x = __getauxval(AT_CLKTCK).value; } - if (x < 1) x = 100; + if (x < 1) + x = 100; clk_tck = x; return x; } diff --git a/libc/calls/clock_gettime-mono.c b/libc/calls/clock_gettime-mono.c index d65a288dd..3bc38f37f 100644 --- a/libc/calls/clock_gettime-mono.c +++ b/libc/calls/clock_gettime-mono.c @@ -44,7 +44,8 @@ int sys_clock_gettime_mono(struct timespec *time) { #ifdef __x86_64__ // intel architecture guarantees that a mapping exists between rdtsc & // nanoseconds only if the cpu advertises invariant timestamps support - if (!X86_HAVE(INVTSC)) return -EINVAL; + if (!X86_HAVE(INVTSC)) + return -EINVAL; #endif cosmo_once(&g_mono.once, sys_clock_gettime_mono_init); cycles = rdtsc() - g_mono.base_tick; diff --git a/libc/calls/clock_gettime-xnu.c b/libc/calls/clock_gettime-xnu.c index d0a7c9427..990f87331 100644 --- a/libc/calls/clock_gettime-xnu.c +++ b/libc/calls/clock_gettime-xnu.c @@ -60,14 +60,17 @@ int sys_clock_gettime_xnu(int clock, struct timespec *ts) { } return 0; } else if (clock == CLOCK_MONOTONIC) { - if (!ts) return 0; + if (!ts) + return 0; return sys_clock_gettime_mono(ts); } else if (clock == CLOCK_BOOTTIME) { struct timeval x; size_t n = sizeof(x); int mib[] = {CTL_KERN, KERN_BOOTTIME}; - if (sys_sysctl(mib, ARRAYLEN(mib), &x, &n, 0, 0) == -1) return -1; - if (ts) *ts = timeval_totimespec(timeval_sub(timeval_real(), x)); + if (sys_sysctl(mib, ARRAYLEN(mib), &x, &n, 0, 0) == -1) + return -1; + if (ts) + *ts = timeval_totimespec(timeval_sub(timeval_real(), x)); return 0; } else { return -EINVAL; diff --git a/libc/calls/clock_nanosleep-cosmo.c b/libc/calls/clock_nanosleep-cosmo.c index ca438eac4..f49c4c50f 100644 --- a/libc/calls/clock_nanosleep-cosmo.c +++ b/libc/calls/clock_nanosleep-cosmo.c @@ -57,7 +57,8 @@ int cosmo_clock_nanosleep(int clock, int flags, const struct timespec *req, struct timespec quantum = timespec_fromnanos(1000000000 / CLK_TCK); clock_gettime(time_clock, &start); deadline = flags & TIMER_ABSTIME ? *req : timespec_add(start, *req); - if (timespec_cmp(start, deadline) >= 0) return 0; + if (timespec_cmp(start, deadline) >= 0) + return 0; remain = timespec_sub(deadline, start); if (timespec_cmp(remain, quantum) > 0) { waitfor = timespec_sub(remain, quantum); diff --git a/libc/calls/clock_nanosleep-nt.c b/libc/calls/clock_nanosleep-nt.c index 3d17adddf..6d7adc5be 100644 --- a/libc/calls/clock_nanosleep-nt.c +++ b/libc/calls/clock_nanosleep-nt.c @@ -32,10 +32,13 @@ static textwindows int sys_clock_nanosleep_nt_impl(int clock, uint32_t msdelay; struct timespec now; for (;;) { - if (sys_clock_gettime_nt(clock, &now)) return -1; - if (timespec_cmp(now, abs) >= 0) return 0; + if (sys_clock_gettime_nt(clock, &now)) + return -1; + if (timespec_cmp(now, abs) >= 0) + return 0; msdelay = timespec_tomillis(timespec_sub(abs, now)); - if (_park_norestart(msdelay, waitmask)) return -1; + if (_park_norestart(msdelay, waitmask)) + return -1; } } @@ -48,7 +51,8 @@ textwindows int sys_clock_nanosleep_nt(int clock, int flags, if (flags & TIMER_ABSTIME) { abs = *req; } else { - if ((rc = sys_clock_gettime_nt(clock, &now))) goto BailOut; + if ((rc = sys_clock_gettime_nt(clock, &now))) + goto BailOut; abs = timespec_add(now, *req); } rc = sys_clock_nanosleep_nt_impl(clock, abs, m); diff --git a/libc/calls/clock_nanosleep-xnu.c b/libc/calls/clock_nanosleep-xnu.c index 249759272..23d0f2125 100644 --- a/libc/calls/clock_nanosleep-xnu.c +++ b/libc/calls/clock_nanosleep-xnu.c @@ -46,7 +46,8 @@ int sys_clock_nanosleep_xnu(int clock, int flags, const struct timespec *req, } else { int rc; struct timespec beg; - if (rem) sys_clock_gettime_xnu(CLOCK_REALTIME, &beg); + if (rem) + sys_clock_gettime_xnu(CLOCK_REALTIME, &beg); struct timeval rel = timespec_totimeval(*req); // rounds up rc = sys_select(0, 0, 0, 0, &rel); if (rc == -1 && rem && errno == EINTR) { diff --git a/libc/calls/close-nt.c b/libc/calls/close-nt.c index 79199b3e7..5d5b49645 100644 --- a/libc/calls/close-nt.c +++ b/libc/calls/close-nt.c @@ -30,7 +30,8 @@ #include "libc/sysv/errfuns.h" textwindows int sys_close_nt(int fd, int fildes) { - if (fd + 0u >= g_fds.n) return ebadf(); + if (fd + 0u >= g_fds.n) + return ebadf(); struct Fd *f = g_fds.p + fd; switch (f->kind) { case kFdZip: diff --git a/libc/calls/close.c b/libc/calls/close.c index 7c8a35f50..d054f8199 100644 --- a/libc/calls/close.c +++ b/libc/calls/close.c @@ -97,12 +97,14 @@ int close(int fd) { BLOCK_SIGNALS; __fds_lock(); rc = close_impl(fd); - if (!__vforked) __releasefd(fd); + if (!__vforked) + __releasefd(fd); __fds_unlock(); ALLOW_SIGNALS; } else { rc = close_impl(fd); - if (!__vforked) __releasefd(fd); + if (!__vforked) + __releasefd(fd); } STRACE("close(%d) → %d% m", fd, rc); return rc; diff --git a/libc/calls/copy.c b/libc/calls/copy.c index 5535e499d..8be9d5c36 100644 --- a/libc/calls/copy.c +++ b/libc/calls/copy.c @@ -37,10 +37,13 @@ ssize_t copyfd(int in, int out, size_t n) { ssize_t dr, dw; for (i = 0; i < n; i += dr) { dr = read(in, buf, MIN(n - i, sizeof(buf))); - if (dr == -1) return -1; - if (!dr) break; + if (dr == -1) + return -1; + if (!dr) + break; dw = write(out, buf, dr); - if (dw == -1) return -1; + if (dw == -1) + return -1; if (dw != dr) { // POSIX requires atomic IO up to PIPE_BUF // The minimum permissible PIPE_BUF is 512 diff --git a/libc/calls/createfileflags.c b/libc/calls/createfileflags.c index 17bd9f94c..5a7a08c26 100644 --- a/libc/calls/createfileflags.c +++ b/libc/calls/createfileflags.c @@ -156,9 +156,12 @@ textwindows int GetNtOpenFlags(int flags, int mode, uint32_t *out_perm, } // Not certain yet what benefit these flags offer. - if (flags & _O_SEQUENTIAL) attr |= kNtFileFlagSequentialScan; - if (flags & _O_RANDOM) attr |= kNtFileFlagRandomAccess; - if (flags & _O_DIRECT) attr |= kNtFileFlagNoBuffering; + if (flags & _O_SEQUENTIAL) + attr |= kNtFileFlagSequentialScan; + if (flags & _O_RANDOM) + attr |= kNtFileFlagRandomAccess; + if (flags & _O_DIRECT) + attr |= kNtFileFlagNoBuffering; // TODO(jart): Should we *always* open with write permission if the // kernel will give it to us? We'd then deny write access @@ -172,9 +175,13 @@ textwindows int GetNtOpenFlags(int flags, int mode, uint32_t *out_perm, // writing to a file across a network can occasionally return // kNtErrorAccessDenied." -Quoth MSDN - if (out_perm) *out_perm = perm; - if (out_share) *out_share = share; - if (out_disp) *out_disp = disp; - if (out_attr) *out_attr = attr; + if (out_perm) + *out_perm = perm; + if (out_share) + *out_share = share; + if (out_disp) + *out_disp = disp; + if (out_attr) + *out_attr = attr; return 0; } diff --git a/libc/calls/createpipename.c b/libc/calls/createpipename.c index 1a2550307..a5d518522 100644 --- a/libc/calls/createpipename.c +++ b/libc/calls/createpipename.c @@ -42,7 +42,8 @@ textwindows char16_t *__create_pipe_name(char16_t *a) { char16_t *p = a; const char *q = "\\\\?\\pipe\\cosmo\\"; static atomic_uint x; - while (*q) *p++ = *q++; + while (*q) + *p++ = *q++; p = itoa16(p, __pid); *p++ = '-'; p = itoa16(p, atomic_fetch_add(&x, 1)); diff --git a/libc/calls/dup2.c b/libc/calls/dup2.c index a1c370879..72d0f3e38 100644 --- a/libc/calls/dup2.c +++ b/libc/calls/dup2.c @@ -66,12 +66,14 @@ int dup2(int oldfd, int newfd) { int rc; // helps guarantee stderr log gets duplicated before user closes - if (_weaken(kloghandle)) _weaken(kloghandle)(); + if (_weaken(kloghandle)) + _weaken(kloghandle)(); #ifdef __aarch64__ if (oldfd == newfd) { // linux aarch64 defines dup3() but not dup2(), which wasn't such a // great decision, since the two syscalls don't behave the same way - if (!(rc = read(oldfd, 0, 0))) rc = oldfd; + if (!(rc = read(oldfd, 0, 0))) + rc = oldfd; } else #endif if (!IsWindows()) { diff --git a/libc/calls/dup3.c b/libc/calls/dup3.c index 571a6e2c2..368942c61 100644 --- a/libc/calls/dup3.c +++ b/libc/calls/dup3.c @@ -65,7 +65,8 @@ int dup3(int oldfd, int newfd, int flags) { int rc; // helps guarantee stderr log gets duplicated before user closes - if (_weaken(kloghandle)) _weaken(kloghandle)(); + if (_weaken(kloghandle)) + _weaken(kloghandle)(); if (oldfd == newfd || (flags & ~O_CLOEXEC)) { rc = einval(); // NetBSD doesn't do this } else if (oldfd < 0 || newfd < 0) { diff --git a/libc/calls/faccessat-nt.c b/libc/calls/faccessat-nt.c index 17ded7bfe..a51ce3d7a 100644 --- a/libc/calls/faccessat-nt.c +++ b/libc/calls/faccessat-nt.c @@ -24,6 +24,7 @@ textwindows int sys_faccessat_nt(int dirfd, const char *path, int mode, uint32_t flags) { char16_t path16[PATH_MAX]; - if (__mkntpathat(dirfd, path, 0, path16) == -1) return -1; + if (__mkntpathat(dirfd, path, 0, path16) == -1) + return -1; return __fix_enotdir(ntaccesscheck(path16, mode), path16); } diff --git a/libc/calls/faccessat.c b/libc/calls/faccessat.c index bcd940e35..c5f3066e0 100644 --- a/libc/calls/faccessat.c +++ b/libc/calls/faccessat.c @@ -64,7 +64,8 @@ int faccessat(int dirfd, const char *path, int amode, int flags) { rc = _weaken(__zipos_access)(&zipname, amode); } else if (!IsWindows()) { e = errno; - if (!flags) goto NoFlags; + if (!flags) + goto NoFlags; if ((rc = sys_faccessat2(dirfd, path, amode, flags)) == -1) { if (errno == ENOSYS) { errno = e; diff --git a/libc/calls/fadvise-nt.c b/libc/calls/fadvise-nt.c index 974e4d297..d57ff504f 100644 --- a/libc/calls/fadvise-nt.c +++ b/libc/calls/fadvise-nt.c @@ -37,8 +37,10 @@ static textwindows int sys_fadvise_nt_impl(int fd, uint64_t offset, int rc, flags, mode; uint32_t perm, share, attr; - if ((int64_t)len < 0) return einval(); - if (!__isfdkind(fd, kFdFile)) return ebadf(); + if ((int64_t)len < 0) + return einval(); + if (!__isfdkind(fd, kFdFile)) + return ebadf(); h1 = g_fds.p[fd].handle; mode = g_fds.p[fd].mode; flags = g_fds.p[fd].flags; diff --git a/libc/calls/fchdir-nt.c b/libc/calls/fchdir-nt.c index 60835ce06..561f6d838 100644 --- a/libc/calls/fchdir-nt.c +++ b/libc/calls/fchdir-nt.c @@ -27,7 +27,8 @@ int sys_chdir_nt_impl(char16_t[hasatleast PATH_MAX], uint32_t); textwindows int sys_fchdir_nt(int dirfd) { char16_t dir[PATH_MAX]; - if (!__isfdkind(dirfd, kFdFile)) return ebadf(); + if (!__isfdkind(dirfd, kFdFile)) + return ebadf(); return sys_chdir_nt_impl( dir, GetFinalPathNameByHandle(g_fds.p[dirfd].handle, dir, ARRAYLEN(dir), kNtFileNameNormalized | kNtVolumeNameDos)); diff --git a/libc/calls/fchmod-nt.c b/libc/calls/fchmod-nt.c index 85797486b..5b31226c0 100644 --- a/libc/calls/fchmod-nt.c +++ b/libc/calls/fchmod-nt.c @@ -29,8 +29,10 @@ textwindows int sys_fchmod_nt(int fd, uint32_t mode) { // validate file descriptor - if (fd + 0u >= g_fds.n) return ebadf(); - if (g_fds.p[fd].kind == kFdEmpty) return ebadf(); + if (fd + 0u >= g_fds.n) + return ebadf(); + if (g_fds.p[fd].kind == kFdEmpty) + return ebadf(); // get current information struct NtFileBasicInfo fbi; diff --git a/libc/calls/fchmodat-nt.c b/libc/calls/fchmodat-nt.c index 473c6c3ae..fe275e498 100644 --- a/libc/calls/fchmodat-nt.c +++ b/libc/calls/fchmodat-nt.c @@ -26,7 +26,8 @@ textwindows int sys_fchmodat_nt(int dirfd, const char *path, uint32_t mode, int flags) { uint32_t attr; uint16_t path16[PATH_MAX]; - if (__mkntpathat(dirfd, path, 0, path16) == -1) return -1; + if (__mkntpathat(dirfd, path, 0, path16) == -1) + return -1; if ((attr = GetFileAttributes(path16)) != -1u) { if (mode & 0222) { attr &= ~kNtFileAttributeReadonly; diff --git a/libc/calls/fcntl-nt.c b/libc/calls/fcntl-nt.c index dfa70b74f..09483e6e1 100644 --- a/libc/calls/fcntl-nt.c +++ b/libc/calls/fcntl-nt.c @@ -129,7 +129,8 @@ textwindows void sys_fcntl_nt_lock_cleanup(int fd) { static textwindows int64_t GetfileSize(int64_t handle) { struct NtByHandleFileInformation wst; - if (!GetFileInformationByHandle(handle, &wst)) return __winerr(); + if (!GetFileInformationByHandle(handle, &wst)) + return __winerr(); return (wst.nFileSizeHigh + 0ull) << 32 | wst.nFileSizeLow; } @@ -156,7 +157,8 @@ static textwindows int sys_fcntl_nt_lock(struct Fd *f, int fd, int cmd, break; case SEEK_END: { int64_t size; - if ((size = GetfileSize(f->handle)) == -1) return -1; + if ((size = GetfileSize(f->handle)) == -1) + return -1; off = size - off; break; } @@ -254,7 +256,8 @@ static textwindows int sys_fcntl_nt_lock(struct Fd *f, int fd, int cmd, } if (l->l_type == F_UNLCK) { - if (cmd == F_GETLK) return einval(); + if (cmd == F_GETLK) + return einval(); // allow a big range to unlock many small ranges for (flp = &g_locks.list, fl = *flp; fl;) { @@ -318,7 +321,8 @@ static textwindows int sys_fcntl_nt_lock(struct Fd *f, int fd, int cmd, } static textwindows int sys_fcntl_nt_dupfd(int fd, int cmd, int start) { - if (start < 0) return einval(); + if (start < 0) + return einval(); return sys_dup_nt(fd, -1, (cmd == F_DUPFD_CLOEXEC ? _O_CLOEXEC : 0), start); } diff --git a/libc/calls/fdatasync-nt.c b/libc/calls/fdatasync-nt.c index a39a8d685..ae48d9459 100644 --- a/libc/calls/fdatasync-nt.c +++ b/libc/calls/fdatasync-nt.c @@ -27,17 +27,23 @@ textwindows int sys_fdatasync_nt(int fd, bool fake) { struct NtByHandleFileInformation wst; - if (!__isfdopen(fd)) return ebadf(); - if (!__isfdkind(fd, kFdFile)) return einval(); - if (GetFileType(g_fds.p[fd].handle) != kNtFileTypeDisk) return einval(); - if (!GetFileInformationByHandle(g_fds.p[fd].handle, &wst)) return __winerr(); + if (!__isfdopen(fd)) + return ebadf(); + if (!__isfdkind(fd, kFdFile)) + return einval(); + if (GetFileType(g_fds.p[fd].handle) != kNtFileTypeDisk) + return einval(); + if (!GetFileInformationByHandle(g_fds.p[fd].handle, &wst)) + return __winerr(); if (wst.dwFileAttributes & kNtFileAttributeDirectory) { // Flushing a directory handle is possible, but it needs // kNtGenericWrite access, and MSDN doesn't document it. return 0; } - if (fake) return 0; - if (_check_signal(false) == -1) return -1; + if (fake) + return 0; + if (_check_signal(false) == -1) + return -1; return FlushFileBuffers(g_fds.p[fd].handle) ? 0 : __winerr(); } diff --git a/libc/calls/flock-nt.c b/libc/calls/flock-nt.c index 13c8814bc..734362ffa 100644 --- a/libc/calls/flock-nt.c +++ b/libc/calls/flock-nt.c @@ -34,7 +34,8 @@ textwindows int sys_flock_nt(int fd, int op) { int64_t h; struct NtByHandleFileInformation info; - if (!__isfdkind(fd, kFdFile)) return ebadf(); + if (!__isfdkind(fd, kFdFile)) + return ebadf(); h = g_fds.p[fd].handle; struct NtOverlapped ov = {.hEvent = h}; diff --git a/libc/calls/fstat-metal.c b/libc/calls/fstat-metal.c index 3c35c569b..1ca05ad79 100644 --- a/libc/calls/fstat-metal.c +++ b/libc/calls/fstat-metal.c @@ -23,7 +23,8 @@ #include "libc/sysv/errfuns.h" int sys_fstat_metal(int fd, struct stat *st) { - if (fd < 0) return einval(); + if (fd < 0) + return einval(); if (fd < g_fds.n && g_fds.p[fd].kind == kFdSerial) { bzero(st, sizeof(*st)); st->st_dev = g_fds.p[fd].handle; diff --git a/libc/calls/fstat-nt.c b/libc/calls/fstat-nt.c index c5b54def5..9fd4874cf 100644 --- a/libc/calls/fstat-nt.c +++ b/libc/calls/fstat-nt.c @@ -97,7 +97,8 @@ textwindows int sys_fstat_nt_special(int kind, struct stat *st) { } textwindows int sys_fstat_nt(int fd, struct stat *st) { - if (fd + 0u >= g_fds.n) return ebadf(); + if (fd + 0u >= g_fds.n) + return ebadf(); switch (g_fds.p[fd].kind) { case kFdEmpty: return ebadf(); @@ -174,7 +175,8 @@ textwindows int sys_fstat_nt_handle(int64_t handle, const char16_t *path, if (S_ISLNK(st.st_mode)) { if (!st.st_size) { long size = GetSizeOfReparsePoint(handle); - if (size == -1) return -1; + if (size == -1) + return -1; st.st_size = size; } } else { diff --git a/libc/calls/fstatat-nt.c b/libc/calls/fstatat-nt.c index 821b07e6e..63e24b9b4 100644 --- a/libc/calls/fstatat-nt.c +++ b/libc/calls/fstatat-nt.c @@ -36,7 +36,8 @@ static int Atoi(const char *str) { int c; unsigned x = 0; - if (!*str) return -1; + if (!*str) + return -1; while ((c = *str++)) { if ('0' <= c && c <= '9') { x *= 10; diff --git a/libc/calls/fstatat.c b/libc/calls/fstatat.c index 5c164df3e..ebb291cef 100644 --- a/libc/calls/fstatat.c +++ b/libc/calls/fstatat.c @@ -35,7 +35,8 @@ #include "libc/sysv/errfuns.h" static inline const char *__strace_fstatat_flags(char buf[12], int flags) { - if (flags == AT_SYMLINK_NOFOLLOW) return "AT_SYMLINK_NOFOLLOW"; + if (flags == AT_SYMLINK_NOFOLLOW) + return "AT_SYMLINK_NOFOLLOW"; FormatInt32(buf, flags); return buf; } diff --git a/libc/calls/fstatfs-nt.c b/libc/calls/fstatfs-nt.c index b58d708fa..06c0ce515 100644 --- a/libc/calls/fstatfs-nt.c +++ b/libc/calls/fstatfs-nt.c @@ -54,7 +54,8 @@ textwindows int sys_fstatfs_nt(int64_t handle, struct statfs *f) { st = NtQueryVolumeInformationFile(handle, &io, &fs, sizeof(fs), kNtFileFsFullSizeInformation); if (!NtSuccess(st)) { - if (st == kNtStatusDllNotFound) return enosys(); + if (st == kNtStatusDllNotFound) + return enosys(); return eio(); } for (h = j = i = 0; FileSystemNameBuffer[i]; i++) { diff --git a/libc/calls/ftok.c b/libc/calls/ftok.c index 641643729..012a048f2 100644 --- a/libc/calls/ftok.c +++ b/libc/calls/ftok.c @@ -26,6 +26,7 @@ */ int ftok(const char *path, int id) { struct stat st; - if (stat(path, &st) == -1) return -1; + if (stat(path, &st) == -1) + return -1; return (uint32_t)id << 24 | (st.st_dev & 0xff) << 16 | (st.st_ino & 0xffff); } diff --git a/libc/calls/getcpu.c b/libc/calls/getcpu.c index c25c52bad..900a04ec3 100644 --- a/libc/calls/getcpu.c +++ b/libc/calls/getcpu.c @@ -64,7 +64,8 @@ int getcpu(unsigned *out_opt_cpu, unsigned *out_opt_node) { } } else { int rc = sys_getcpu(&cpu, &node, 0); - if (rc == -1) return -1; + if (rc == -1) + return -1; } if (out_opt_cpu) { *out_opt_cpu = cpu; diff --git a/libc/calls/getcwd.greg.c b/libc/calls/getcwd.greg.c index ead09a218..edabb8af1 100644 --- a/libc/calls/getcwd.greg.c +++ b/libc/calls/getcwd.greg.c @@ -82,14 +82,17 @@ static dontinline textwindows int sys_getcwd_nt(char *buf, size_t size) { // get current directory from the system char16_t p16[PATH_MAX]; uint32_t n = GetCurrentDirectory(PATH_MAX, p16); - if (!n) return eacces(); // system call failed - if (n >= PATH_MAX) return erange(); // not enough room?!? + if (!n) + return eacces(); // system call failed + if (n >= PATH_MAX) + return erange(); // not enough room?!? // convert utf-16 to utf-8 // we can't modify `buf` until we're certain of success char p8[PATH_MAX], *p = p8; n = tprecode16to8(p, PATH_MAX, p16).ax; - if (n >= PATH_MAX) return erange(); // utf-8 explosion + if (n >= PATH_MAX) + return erange(); // utf-8 explosion // turn \\?\c:\... into c:\... if (p[0] == '\\' && // diff --git a/libc/calls/getloadavg.c b/libc/calls/getloadavg.c index b28291eff..818a63c67 100644 --- a/libc/calls/getloadavg.c +++ b/libc/calls/getloadavg.c @@ -43,7 +43,8 @@ struct loadavg { int getloadavg(double *a, int n) { // cat /proc/loadavg int i, rc; - if (n > 3) n = 3; + if (n > 3) + n = 3; if (!n) { rc = 0; } else if (n < 0) { diff --git a/libc/calls/getrandom-metal.c b/libc/calls/getrandom-metal.c index cc757981a..573470290 100644 --- a/libc/calls/getrandom-metal.c +++ b/libc/calls/getrandom-metal.c @@ -64,7 +64,8 @@ static ssize_t GetRandomCpu(char *p, size_t n, int f, bool impl(uint64_t *)) { for (i = 0; i < n; i += j) { TryAgain: if (!impl(&x)) { - if (f || i >= 256) break; + if (f || i >= 256) + break; goto TryAgain; } for (j = 0; j < 8 && i + j < n; ++j) { diff --git a/libc/calls/getrandom.c b/libc/calls/getrandom.c index cdc7b13e5..643801fac 100644 --- a/libc/calls/getrandom.c +++ b/libc/calls/getrandom.c @@ -60,7 +60,8 @@ static bool have_getrandom; static void GetRandomEntropy(char *p, size_t n) { unassert(n <= 256); - if (sys_getentropy(p, n)) notpossible; + if (sys_getentropy(p, n)) + notpossible; } static void GetRandomArnd(char *p, size_t n) { @@ -69,8 +70,10 @@ static void GetRandomArnd(char *p, size_t n) { cmd[0] = 1; // CTL_KERN cmd[1] = IsFreebsd() ? 37 : 81; // KERN_ARND unassert((m = n) <= 256); - if (sys_sysctl(cmd, 2, p, &n, 0, 0) == -1) notpossible; - if (m != n) notpossible; + if (sys_sysctl(cmd, 2, p, &n, 0, 0) == -1) + notpossible; + if (m != n) + notpossible; } static ssize_t GetRandomBsd(char *p, size_t n, void impl(char *, size_t)) { @@ -193,7 +196,8 @@ ssize_t getrandom(void *p, size_t n, unsigned f) { __attribute__((__constructor__(30))) static textstartup void getrandom_init( void) { int e, rc; - if (IsWindows() || IsMetal()) return; + if (IsWindows() || IsMetal()) + return; BLOCK_CANCELATION; e = errno; if (!(rc = sys_getrandom(0, 0, 0))) { diff --git a/libc/calls/getresgid.c b/libc/calls/getresgid.c index 3cdd4c31a..53edea9f1 100644 --- a/libc/calls/getresgid.c +++ b/libc/calls/getresgid.c @@ -34,15 +34,20 @@ int getresgid(uint32_t *real, uint32_t *effective, uint32_t *saved) { int rc, gid; if (IsWindows()) { gid = getgid(); - if (real) *real = gid; - if (effective) *effective = gid; - if (saved) *saved = gid; + if (real) + *real = gid; + if (effective) + *effective = gid; + if (saved) + *saved = gid; rc = 0; } else if (saved) { rc = sys_getresgid(real, effective, saved); } else { - if (real) *real = sys_getgid(); - if (effective) *effective = sys_getegid(); + if (real) + *real = sys_getgid(); + if (effective) + *effective = sys_getegid(); rc = 0; } STRACE("getresgid([%d], [%d], [%d]) → %d% m", real ? *real : 0, diff --git a/libc/calls/getresuid.c b/libc/calls/getresuid.c index 02959c9ab..7234882e1 100644 --- a/libc/calls/getresuid.c +++ b/libc/calls/getresuid.c @@ -34,15 +34,20 @@ int getresuid(uint32_t *real, uint32_t *effective, uint32_t *saved) { int rc, uid; if (IsWindows()) { uid = getuid(); - if (real) *real = uid; - if (effective) *effective = uid; - if (saved) *saved = uid; + if (real) + *real = uid; + if (effective) + *effective = uid; + if (saved) + *saved = uid; rc = 0; } else if (saved) { rc = sys_getresuid(real, effective, saved); } else { - if (real) *real = sys_getuid(); - if (effective) *effective = sys_geteuid(); + if (real) + *real = sys_getuid(); + if (effective) + *effective = sys_geteuid(); rc = 0; } STRACE("getresuid([%d], [%d], [%d]) → %d% m", real ? *real : 0, diff --git a/libc/calls/getsystemdirectorypath.c b/libc/calls/getsystemdirectorypath.c index 4030e3913..9d0b7f74e 100644 --- a/libc/calls/getsystemdirectorypath.c +++ b/libc/calls/getsystemdirectorypath.c @@ -25,7 +25,8 @@ textwindows char *GetSystemDirectoryPath(char *buf, const char *path, uint32_t syslen = GetSystemDirectoryA(buf, size); size_t pathlen = strlen(path); if (syslen && syslen + pathlen + 1 < size) { - if (buf[syslen] == '\\') --syslen; + if (buf[syslen] == '\\') + --syslen; memcpy(buf + syslen, path, pathlen + 1); return buf; } else { diff --git a/libc/calls/getuid-nt.c b/libc/calls/getuid-nt.c index 7a8896ee9..7f191db4e 100644 --- a/libc/calls/getuid-nt.c +++ b/libc/calls/getuid-nt.c @@ -29,7 +29,8 @@ textwindows uint32_t sys_getuid_nt(void) { if (!(tmp = atomic_load_explicit(&uid, memory_order_acquire))) { GetUserName(&buf, &size); tmp = __fnv(buf, size >> 1) & 32767; - if (!tmp) ++tmp; + if (!tmp) + ++tmp; atomic_store_explicit(&uid, tmp, memory_order_release); } return tmp; diff --git a/libc/calls/ioctl.c b/libc/calls/ioctl.c index 9416c03c7..4d96e6d61 100644 --- a/libc/calls/ioctl.c +++ b/libc/calls/ioctl.c @@ -244,11 +244,16 @@ static textwindows struct HostAdapterInfoNode *appendHostInfo( * IFF_PROMISC ** NOT SUPPORTED, unknown how to retrieve it */ flags = 0; - if (aa->OperStatus == kNtIfOperStatusUp) flags |= IFF_UP | IFF_RUNNING; - if (aa->IfType == kNtIfTypePpp) flags |= IFF_POINTOPOINT; - if (!(aa->Flags & kNtIpAdapterNoMulticast)) flags |= IFF_MULTICAST; - if (aa->IfType == kNtIfTypeSoftwareLoopback) flags |= IFF_LOOPBACK; - if (aa->FirstPrefix) flags |= IFF_BROADCAST; + if (aa->OperStatus == kNtIfOperStatusUp) + flags |= IFF_UP | IFF_RUNNING; + if (aa->IfType == kNtIfTypePpp) + flags |= IFF_POINTOPOINT; + if (!(aa->Flags & kNtIpAdapterNoMulticast)) + flags |= IFF_MULTICAST; + if (aa->IfType == kNtIfTypeSoftwareLoopback) + flags |= IFF_LOOPBACK; + if (aa->FirstPrefix) + flags |= IFF_BROADCAST; node->flags = flags; } else { /* Copy from previous node */ @@ -344,13 +349,16 @@ static textwindows int createHostInfo( baseName[IFNAMSIZ - 2] = '\0'; /* Replace any space with a '_' */ for (i = 0; i < IFNAMSIZ - 2; ++i) { - if (baseName[i] == ' ') baseName[i] = '_'; - if (!baseName[i]) break; + if (baseName[i] == ' ') + baseName[i] = '_'; + if (!baseName[i]) + break; } for (count = 0, ua = aa->FirstUnicastAddress, ap = aa->FirstPrefix; (ua != NULL) && (count < MAX_UNICAST_ADDR); ++count) { node = appendHostInfo(node, baseName, aa, &ua, &ap, count); - if (!node) goto err; + if (!node) + goto err; if (!__hostInfo) { __hostInfo = node; if (_cmpxchg(&once, false, true)) { @@ -444,7 +452,8 @@ static textwindows int ioctl_siocgifconf_nt(int fd, struct ifconf *ifc) { static textwindows int ioctl_siocgifaddr_nt(int fd, struct ifreq *ifr) { struct HostAdapterInfoNode *node; node = findAdapterByName(ifr->ifr_name); - if (!node) return ebadf(); + if (!node) + return ebadf(); memcpy(&ifr->ifr_addr, &node->unicast, sizeof(struct sockaddr)); return 0; } @@ -453,7 +462,8 @@ static textwindows int ioctl_siocgifaddr_nt(int fd, struct ifreq *ifr) { static textwindows int ioctl_siocgifflags_nt(int fd, struct ifreq *ifr) { struct HostAdapterInfoNode *node; node = findAdapterByName(ifr->ifr_name); - if (!node) return ebadf(); + if (!node) + return ebadf(); ifr->ifr_flags = node->flags; return 0; } @@ -462,7 +472,8 @@ static textwindows int ioctl_siocgifflags_nt(int fd, struct ifreq *ifr) { static textwindows int ioctl_siocgifnetmask_nt(int fd, struct ifreq *ifr) { struct HostAdapterInfoNode *node; node = findAdapterByName(ifr->ifr_name); - if (!node) return ebadf(); + if (!node) + return ebadf(); memcpy(&ifr->ifr_netmask, &node->netmask, sizeof(struct sockaddr)); return 0; } @@ -473,7 +484,8 @@ static textwindows int ioctl_siocgifnetmask_nt(int fd, struct ifreq *ifr) { static textwindows int ioctl_siocgifbrdaddr_nt(int fd, struct ifreq *ifr) { struct HostAdapterInfoNode *node; node = findAdapterByName(ifr->ifr_name); - if (!node) return ebadf(); + if (!node) + return ebadf(); memcpy(&ifr->ifr_broadaddr, &node->broadcast, sizeof(struct sockaddr)); return 0; } @@ -513,7 +525,8 @@ static int ioctl_siocgifconf_sysv(int fd, struct ifconf *ifc) { for (p = b, e = p + MIN(bufMax, READ32LE(ifcBsd)); p + 16 + 16 <= e; p += IsBsd() ? 16 + MAX(16, p[16] & 255) : 40) { fam = p[IsBsd() ? 17 : 16] & 255; - if (fam != AF_INET) continue; + if (fam != AF_INET) + continue; ip = READ32BE(p + 20); bzero(req, sizeof(*req)); memcpy(req->ifr_name, p, 16); @@ -541,8 +554,10 @@ static inline void ioctl_sockaddr2linux(void *saddr) { * requires adjustment between Linux and XNU */ static int ioctl_siocgifaddr_sysv(int fd, uint64_t op, struct ifreq *ifr) { - if (sys_ioctl(fd, op, ifr) == -1) return -1; - if (IsBsd()) ioctl_sockaddr2linux(&ifr->ifr_addr); + if (sys_ioctl(fd, op, ifr) == -1) + return -1; + if (IsBsd()) + ioctl_sockaddr2linux(&ifr->ifr_addr); return 0; } diff --git a/libc/calls/isdirectory-nt.c b/libc/calls/isdirectory-nt.c index 236b140c9..67a6cdcd8 100644 --- a/libc/calls/isdirectory-nt.c +++ b/libc/calls/isdirectory-nt.c @@ -28,7 +28,8 @@ bool isdirectory_nt(const char *path) { uint32_t x; char16_t path16[PATH_MAX]; - if (__mkntpath(path, path16) == -1) return -1; + if (__mkntpath(path, path16) == -1) + return -1; if ((x = GetFileAttributes(path16)) != -1u) { return !!(x & kNtFileAttributeDirectory); } else { diff --git a/libc/calls/isexecutable.c b/libc/calls/isexecutable.c index f09d0381c..8e33f9fad 100644 --- a/libc/calls/isexecutable.c +++ b/libc/calls/isexecutable.c @@ -30,6 +30,7 @@ */ bool32 isexecutable(const char *path) { struct stat st; - if (fstatat(AT_FDCWD, path, &st, 0)) return 0; + if (fstatat(AT_FDCWD, path, &st, 0)) + return 0; return !S_ISDIR(st.st_mode) && !!(st.st_mode & 0111); } diff --git a/libc/calls/islinux.c b/libc/calls/islinux.c index fe432298f..019016c70 100644 --- a/libc/calls/islinux.c +++ b/libc/calls/islinux.c @@ -33,7 +33,8 @@ static struct { static bool __is_linux_2_6_23_impl(void) { int rc; - if (IsGenuineBlink()) return true; + if (IsGenuineBlink()) + return true; asm volatile("syscall" : "=a"(rc) : "0"(157), "D"(PR_GET_SECCOMP) diff --git a/libc/calls/isregularfile-nt.c b/libc/calls/isregularfile-nt.c index 2b335b919..93df87776 100644 --- a/libc/calls/isregularfile-nt.c +++ b/libc/calls/isregularfile-nt.c @@ -28,7 +28,8 @@ bool isregularfile_nt(const char *path) { uint32_t x; char16_t path16[PATH_MAX]; - if (__mkntpath(path, path16) == -1) return -1; + if (__mkntpath(path, path16) == -1) + return -1; if ((x = GetFileAttributes(path16)) != -1u) { return !(x & (kNtFileAttributeDirectory | kNtFileAttributeReparsePoint)); } else { diff --git a/libc/calls/issymlink-nt.c b/libc/calls/issymlink-nt.c index 165473235..4d56f22cc 100644 --- a/libc/calls/issymlink-nt.c +++ b/libc/calls/issymlink-nt.c @@ -26,7 +26,8 @@ bool issymlink_nt(const char *path) { uint32_t x; char16_t path16[PATH_MAX]; - if (__mkntpath(path, path16) == -1) return -1; + if (__mkntpath(path, path16) == -1) + return -1; if ((x = GetFileAttributes(path16)) != -1u) { return !!(x & kNtFileAttributeReparsePoint); } else { diff --git a/libc/calls/makedirs.c b/libc/calls/makedirs.c index 8c5c77e72..6a319cbaf 100644 --- a/libc/calls/makedirs.c +++ b/libc/calls/makedirs.c @@ -52,31 +52,42 @@ int makedirs(const char *path, unsigned mode) { e = errno; n = strlen(path); - if (n >= PATH_MAX) return enametoolong(); + if (n >= PATH_MAX) + return enametoolong(); memcpy(buf, path, n + 1); i = n; // descend while (i) { - if (!mkdir(buf, mode)) break; + if (!mkdir(buf, mode)) + break; if (errno == EEXIST) { - if (i == n) goto CheckTop; + if (i == n) + goto CheckTop; break; } - if (errno != ENOENT) return -1; - while (i && buf[i - 1] == '/') buf[--i] = 0; - while (i && buf[i - 1] != '/') buf[--i] = 0; + if (errno != ENOENT) + return -1; + while (i && buf[i - 1] == '/') + buf[--i] = 0; + while (i && buf[i - 1] != '/') + buf[--i] = 0; } // ascend for (;;) { if (mkdir(buf, mode)) { - if (errno != EEXIST) return -1; - if (i == n) goto CheckTop; + if (errno != EEXIST) + return -1; + if (i == n) + goto CheckTop; } - if (i == n) break; - while (i < n && (c = path[i]) != '/') buf[i++] = c; - while (i < n && (c = path[i]) == '/') buf[i++] = c; + if (i == n) + break; + while (i < n && (c = path[i]) != '/') + buf[i++] = c; + while (i < n && (c = path[i]) == '/') + buf[i++] = c; } Finish: @@ -84,7 +95,9 @@ Finish: return 0; CheckTop: - if (stat(path, &st)) return -1; - if (S_ISDIR(st.st_mode)) goto Finish; + if (stat(path, &st)) + return -1; + if (S_ISDIR(st.st_mode)) + goto Finish; return eexist(); } diff --git a/libc/calls/mkdirat-nt.c b/libc/calls/mkdirat-nt.c index 5d1768740..efc9eabc8 100644 --- a/libc/calls/mkdirat-nt.c +++ b/libc/calls/mkdirat-nt.c @@ -23,7 +23,9 @@ textwindows int sys_mkdirat_nt(int dirfd, const char *path, uint32_t mode) { char16_t path16[PATH_MAX]; - if (__mkntpathat(dirfd, path, 0, path16) == -1) return -1; - if (CreateDirectory(path16, 0)) return 0; + if (__mkntpathat(dirfd, path, 0, path16) == -1) + return -1; + if (CreateDirectory(path16, 0)) + return 0; return __fix_enotdir(-1, path16); } diff --git a/libc/calls/mknod.c b/libc/calls/mknod.c index 172dd1017..75e7090ed 100644 --- a/libc/calls/mknod.c +++ b/libc/calls/mknod.c @@ -42,10 +42,14 @@ */ int mknod(const char *path, uint32_t mode, uint64_t dev) { int e, rc; - if (IsAsan() && !__asan_is_valid_str(path)) return efault(); - if (mode & S_IFREG) return creat(path, mode & ~S_IFREG); - if (mode & S_IFDIR) return mkdir(path, mode & ~S_IFDIR); - if (mode & S_IFIFO) return enosys(); // no named pipes! + if (IsAsan() && !__asan_is_valid_str(path)) + return efault(); + if (mode & S_IFREG) + return creat(path, mode & ~S_IFREG); + if (mode & S_IFDIR) + return mkdir(path, mode & ~S_IFDIR); + if (mode & S_IFIFO) + return enosys(); // no named pipes! if (!IsWindows()) { // TODO(jart): Whys there code out there w/ S_xxx passed via dev? e = errno; diff --git a/libc/calls/mkntcmdline.c b/libc/calls/mkntcmdline.c index 6f75dc75e..1ece520f4 100644 --- a/libc/calls/mkntcmdline.c +++ b/libc/calls/mkntcmdline.c @@ -86,7 +86,8 @@ textwindows int mkntcmdline(char16_t cmdline[32767], char *const argv[]) { size_t i, j, k, s; char argbuf[PATH_MAX]; for (k = i = 0; argv[i]; ++i) { - if (i) APPEND(u' '); + if (i) + APPEND(u' '); if (LooksLikeCosmoDrivePath(argv[i]) && strlcpy(argbuf, argv[i], PATH_MAX) < PATH_MAX) { mungentpath(argbuf); @@ -112,7 +113,8 @@ textwindows int mkntcmdline(char16_t cmdline[32767], char *const argv[]) { } } } - if (!x) break; + if (!x) + break; if (x == '\\') { ++slashes; } else if (x == '"') { @@ -125,7 +127,8 @@ textwindows int mkntcmdline(char16_t cmdline[32767], char *const argv[]) { } slashes = 0; uint32_t w = EncodeUtf16(x); - do APPEND(w); + do + APPEND(w); while ((w >>= 16)); } } diff --git a/libc/calls/mkntenvblock.c b/libc/calls/mkntenvblock.c index 827e213bb..9ea54b03e 100644 --- a/libc/calls/mkntenvblock.c +++ b/libc/calls/mkntenvblock.c @@ -44,9 +44,12 @@ static textwindows int Compare(const char *l, const char *r) { for (;;) { a = l[i] & 255; b = r[i] & 255; - if (a == '=') a = 0; - if (b == '=') b = 0; - if (a != b || !b) break; + if (a == '=') + a = 0; + if (b == '=') + b = 0; + if (a != b || !b) + break; ++i; } return a - b; @@ -56,13 +59,15 @@ static textwindows int InsertString(struct EnvBuilder *env, const char *str) { int c, i, cmp; char *var, *path = 0; - if (!str) return 0; + if (!str) + return 0; // copy key=val to buf var = env->buf + env->bufi; do { c = *str++; - if (env->bufi + 2 > 32767) return e2big(); + if (env->bufi + 2 > 32767) + return e2big(); env->buf[env->bufi++] = c; if (c == '=' && str[0] == '/' && IsAlpha(str[1]) && str[2] == '/') { path = env->buf + env->bufi; @@ -70,7 +75,8 @@ static textwindows int InsertString(struct EnvBuilder *env, const char *str) { } while (c); // fixup key=/c/... → key=c:\... - if (path) mungentpath(path); + if (path) + mungentpath(path); // append key=val to sorted list using insertion sort technique for (i = env->vari;; --i) { @@ -143,8 +149,10 @@ textwindows int mkntenvblock(char16_t envblock[32767], char *const envp[], #pragma GCC pop_options // load new environment into string pointer array and fix file paths - if (InsertStrings(&env, envp) == -1) return -1; - if (InsertStrings(&env, extravars) == -1) return -1; + if (InsertStrings(&env, envp) == -1) + return -1; + if (InsertStrings(&env, extravars) == -1) + return -1; if (environ) { // https://jpassing.com/2009/12/28/the-hidden-danger-of-forgetting-to-specify-systemroot-in-a-custom-environment-block/ e = __getenv(environ, "SYSTEMROOT"); diff --git a/libc/calls/mkntpath.c b/libc/calls/mkntpath.c index b0bad5f15..4b9f58641 100644 --- a/libc/calls/mkntpath.c +++ b/libc/calls/mkntpath.c @@ -54,8 +54,10 @@ textwindows size_t __normntpath(char16_t *p, size_t n) { (i + 1 < n && p[i + 1] == '.') && // (i + 2 == n || IsSlash(p[i + 2]))) { // matched "/../" or "/..$" - while (j && p[j - 1] == '\\') --j; - while (j && p[j - 1] != '\\') --j; + while (j && p[j - 1] == '\\') + --j; + while (j && p[j - 1] != '\\') + --j; } else { p[j++] = c; } @@ -156,7 +158,8 @@ textwindows int __mkntpath2(const char *path, if (!x && IsSlash(q[0]) && q[1] == 't' && q[2] == 'm' && q[3] == 'p' && (IsSlash(q[4]) || !q[4])) { m = GetTempPath(z, p); - if (!q[4]) return m; + if (!q[4]) + return m; q += 5; p += m; z -= m; diff --git a/libc/calls/mkntpathat.c b/libc/calls/mkntpathat.c index 8bddbf8d7..8eec12b4c 100644 --- a/libc/calls/mkntpathat.c +++ b/libc/calls/mkntpathat.c @@ -33,14 +33,19 @@ static textwindows int __mkntpathath_impl(int64_t dirhand, const char *path, size_t n; char16_t dir[PATH_MAX]; uint32_t dirlen, filelen; - if (!isutf8(path, -1)) return eilseq(); // thwart overlong nul in conversion - if ((filelen = __mkntpath2(path, file, flags)) == -1) return -1; - if (!filelen) return enoent(); + if (!isutf8(path, -1)) + return eilseq(); // thwart overlong nul in conversion + if ((filelen = __mkntpath2(path, file, flags)) == -1) + return -1; + if (!filelen) + return enoent(); if (file[0] != u'\\' && dirhand != AT_FDCWD) { // ProTip: \\?\C:\foo dirlen = GetFinalPathNameByHandle(dirhand, dir, ARRAYLEN(dir), kNtFileNameNormalized | kNtVolumeNameDos); - if (!dirlen) return __winerr(); - if (dirlen + 1 + filelen + 1 > ARRAYLEN(dir)) return enametoolong(); + if (!dirlen) + return __winerr(); + if (dirlen + 1 + filelen + 1 > ARRAYLEN(dir)) + return enametoolong(); dir[dirlen] = u'\\'; memcpy(dir + dirlen + 1, file, (filelen + 1) * sizeof(char16_t)); memcpy(file, dir, ((n = dirlen + 1 + filelen) + 1) * sizeof(char16_t)); diff --git a/libc/calls/mount.c b/libc/calls/mount.c index 1c1551f2c..ee383461c 100644 --- a/libc/calls/mount.c +++ b/libc/calls/mount.c @@ -84,7 +84,8 @@ int mount(const char *source, const char *target, const char *type, if (!IsBsd()) { return sys_mount_linux(source, target, type, flags, data); } else { - if (!strcmp(type, "iso9660")) type = "cd9660"; + if (!strcmp(type, "iso9660")) + type = "cd9660"; if (!strcmp(type, "vfat")) { if (IsOpenbsd() || IsNetbsd()) { type = "msdos"; diff --git a/libc/calls/mremap-sysv.greg.c b/libc/calls/mremap-sysv.greg.c index 9f66d45b8..e65d9af0a 100644 --- a/libc/calls/mremap-sysv.greg.c +++ b/libc/calls/mremap-sysv.greg.c @@ -47,7 +47,8 @@ void *sys_mremap(void *p, size_t n, size_t m, int f, void *q) { : "=a"(res) : "0"(0x019), "D"(p), "S"(n), "d"(m), "r"(r10), "r"(r8) : "rcx", "r11", "memory", "cc"); - if (res > -4096ul) errno = -res, res = -1; + if (res > -4096ul) + errno = -res, res = -1; } else if (IsNetbsd()) { if (f & MREMAP_MAYMOVE) { res = 0x19B; @@ -57,7 +58,8 @@ void *sys_mremap(void *p, size_t n, size_t m, int f, void *q) { : CFLAG_CONSTRAINT(cf), "+a"(res), "=d"(rdx) : "D"(p), "S"(n), "2"(q), "r"(r10), "r"(r8) : "rcx", "r9", "r11", "memory", "cc"); - if (cf) errno = res, res = -1; + if (cf) + errno = res, res = -1; } else { res = einval(); } diff --git a/libc/calls/ntaccesscheck.c b/libc/calls/ntaccesscheck.c index b3c2a3af0..708238736 100644 --- a/libc/calls/ntaccesscheck.c +++ b/libc/calls/ntaccesscheck.c @@ -69,7 +69,8 @@ textwindows int ntaccesscheck(const char16_t *pathname, uint32_t flags) { int64_t hToken, hImpersonatedToken, hFile; intptr_t buffer[1024 / sizeof(intptr_t)]; BLOCK_SIGNALS; - if (flags & X_OK) flags |= R_OK; + if (flags & X_OK) + flags |= R_OK; granted = 0; result = false; flagmask = flags; diff --git a/libc/calls/ntspawn.c b/libc/calls/ntspawn.c index e16eb439f..305950b25 100644 --- a/libc/calls/ntspawn.c +++ b/libc/calls/ntspawn.c @@ -157,7 +157,8 @@ textwindows int ntspawn( } } } - if (sb) ntspawn_free(sb); + if (sb) + ntspawn_free(sb); ALLOW_SIGNALS; return rc; } diff --git a/libc/calls/open-nt.c b/libc/calls/open-nt.c index 50b7954ba..663164c53 100644 --- a/libc/calls/open-nt.c +++ b/libc/calls/open-nt.c @@ -184,7 +184,8 @@ static textwindows int sys_open_nt_dup(int fd, int flags, int mode, int oldfd) { static int Atoi(const char *str) { int c; unsigned x = 0; - if (!*str) return -1; + if (!*str) + return -1; while ((c = *str++)) { if ('0' <= c && c <= '9') { x *= 10; @@ -202,7 +203,8 @@ textwindows int sys_open_nt(int dirfd, const char *file, uint32_t flags, int fd, oldfd; BLOCK_SIGNALS; __fds_lock(); - if (!(flags & _O_CREAT)) mode = 0; + if (!(flags & _O_CREAT)) + mode = 0; if ((rc = fd = __reservefd_unlocked(-1)) != -1) { if (startswith(file, "/dev/")) { if (!strcmp(file + 5, "tty")) { diff --git a/libc/calls/openat-metal.c b/libc/calls/openat-metal.c index fa2b45b82..92baca705 100644 --- a/libc/calls/openat-metal.c +++ b/libc/calls/openat-metal.c @@ -40,20 +40,26 @@ int sys_openat_metal(int dirfd, const char *file, int flags, unsigned mode) { int fd; struct MetalFile *state; - if (dirfd != AT_FDCWD || strcmp(file, APE_COM_NAME)) return enoent(); - if (flags != O_RDONLY) return eacces(); - if (!_weaken(__ape_com_base) || !_weaken(__ape_com_size)) return eopnotsupp(); - if ((fd = __reservefd(-1)) == -1) return -1; + if (dirfd != AT_FDCWD || strcmp(file, APE_COM_NAME)) + return enoent(); + if (flags != O_RDONLY) + return eacces(); + if (!_weaken(__ape_com_base) || !_weaken(__ape_com_size)) + return eopnotsupp(); + if ((fd = __reservefd(-1)) == -1) + return -1; if (!_weaken(calloc) || !_weaken(free)) { struct DirectMap dm; dm = sys_mmap_metal(NULL, ROUNDUP(sizeof(struct MetalFile), 4096), PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS, -1, 0); state = dm.addr; - if (state == (void *)-1) return -1; + if (state == (void *)-1) + return -1; } else { state = _weaken(calloc)(1, sizeof(struct MetalFile)); - if (!state) return -1; + if (!state) + return -1; } state->base = (char *)__ape_com_base; state->size = __ape_com_size; diff --git a/libc/calls/openpty.c b/libc/calls/openpty.c index 29f2a6cbb..fd9c26cf4 100644 --- a/libc/calls/openpty.c +++ b/libc/calls/openpty.c @@ -64,12 +64,16 @@ static int openpty_impl(int *mfd, int *sfd, char *name, } *mfd = m; *sfd = s; - if (name) strcpy(name, t.sname); - if (tio) npassert(!tcsetattr(s, TCSAFLUSH, tio)); - if (wsz) npassert(!tcsetwinsize(s, wsz)); + if (name) + strcpy(name, t.sname); + if (tio) + npassert(!tcsetattr(s, TCSAFLUSH, tio)); + if (wsz) + npassert(!tcsetwinsize(s, wsz)); return 0; OnError: - if (m != -1) sys_close(m); + if (m != -1) + sys_close(m); return -1; } diff --git a/libc/calls/park.c b/libc/calls/park.c index b3cc550c2..286c77555 100644 --- a/libc/calls/park.c +++ b/libc/calls/park.c @@ -32,7 +32,8 @@ static textwindows int _park_thread(uint32_t msdelay, sigset_t waitmask, bool restartable) { int sig, handler_was_called; - if (_check_cancel() == -1) return -1; + if (_check_cancel() == -1) + return -1; if (_weaken(__sig_get) && (sig = _weaken(__sig_get)(waitmask))) { goto HandleSignal; } @@ -46,7 +47,8 @@ static textwindows int _park_thread(uint32_t msdelay, sigset_t waitmask, if (ok && _weaken(__sig_get) && (sig = _weaken(__sig_get)(waitmask))) { HandleSignal: handler_was_called = _weaken(__sig_relay)(sig, SI_KERNEL, waitmask); - if (_check_cancel() == -1) return -1; + if (_check_cancel() == -1) + return -1; if (!restartable || (handler_was_called & SIG_HANDLED_NO_RESTART)) { return eintr(); } diff --git a/libc/calls/pause-nt.c b/libc/calls/pause-nt.c index 480031006..0a43e5089 100644 --- a/libc/calls/pause-nt.c +++ b/libc/calls/pause-nt.c @@ -22,7 +22,8 @@ textwindows int sys_pause_nt(void) { int rc; - while (!(rc = _park_norestart(-1u, 0))) donothing; + while (!(rc = _park_norestart(-1u, 0))) + donothing; return rc; } diff --git a/libc/calls/perror.c b/libc/calls/perror.c index 3097521e3..63d4f0be9 100644 --- a/libc/calls/perror.c +++ b/libc/calls/perror.c @@ -26,6 +26,7 @@ */ void perror(const char *thing) { const char *reason; - if (!(reason = _strerdoc(errno))) reason = "Unknown error"; + if (!(reason = _strerdoc(errno))) + reason = "Unknown error"; tinyprint(2, thing ? thing : "", thing ? ": " : "", reason, "\n", NULL); } diff --git a/libc/calls/pipe2-sysv.c b/libc/calls/pipe2-sysv.c index 1cbf98ee4..dbecc02cf 100644 --- a/libc/calls/pipe2-sysv.c +++ b/libc/calls/pipe2-sysv.c @@ -25,7 +25,8 @@ int32_t sys_pipe2(int pipefd[hasatleast 2], unsigned flags) { int e, rc; - if (!flags) goto OldSkool; + if (!flags) + goto OldSkool; e = errno; rc = __sys_pipe2(pipefd, flags); if (rc == -1 && errno == ENOSYS) { diff --git a/libc/calls/pledge-linux.c b/libc/calls/pledge-linux.c index b682af953..1a1dce028 100644 --- a/libc/calls/pledge-linux.c +++ b/libc/calls/pledge-linux.c @@ -1023,18 +1023,21 @@ static const struct sock_filter kFilterIgnoreExitGroup[] = { static privileged unsigned long StrLen(const char *s) { unsigned long n = 0; - while (*s++) ++n; + while (*s++) + ++n; return n; } static privileged void *MemCpy(void *d, const void *s, unsigned long n) { unsigned long i = 0; - for (; i < n; ++i) ((char *)d)[i] = ((char *)s)[i]; + for (; i < n; ++i) + ((char *)d)[i] = ((char *)s)[i]; return (char *)d + n; } static privileged char *FixCpy(char p[17], uint64_t x, int k) { - while (k > 0) *p++ = "0123456789abcdef"[(x >> (k -= 4)) & 15]; + while (k > 0) + *p++ = "0123456789abcdef"[(x >> (k -= 4)) & 15]; *p = '\0'; return p; } @@ -1305,7 +1308,8 @@ static privileged void MonitorSigSys(void) { static privileged void AppendFilter(struct Filter *f, const struct sock_filter *p, size_t n) { - if (UNLIKELY(f->n + n > ARRAYLEN(f->p))) notpossible; + if (UNLIKELY(f->n + n > ARRAYLEN(f->p))) + notpossible; MemCpy(f->p + f->n, p, n * sizeof(*f->p)); f->n += n; } @@ -2170,7 +2174,8 @@ static privileged void AppendPledge(struct Filter *f, // if ((count = CountUnspecial(p, len))) { if (count < 256) { for (j = i = 0; i < len; ++i) { - if (p[i] & SPECIAL) continue; + if (p[i] & SPECIAL) + continue; // jump to ALLOW rule below if accumulator equals ordinal struct sock_filter fragment[] = { BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, // instruction @@ -2192,7 +2197,8 @@ static privileged void AppendPledge(struct Filter *f, // // handle "special" ordinals which use hand-crafted bpf for (i = 0; i < len; ++i) { - if (!(p[i] & SPECIAL)) continue; + if (!(p[i] & SPECIAL)) + continue; switch (p[i]) { case __NR_linux_mmap | EXEC: AllowMmapExec(f); diff --git a/libc/calls/pledge.c b/libc/calls/pledge.c index 964b77fbd..3ce335cfd 100644 --- a/libc/calls/pledge.c +++ b/libc/calls/pledge.c @@ -249,12 +249,17 @@ int pledge(const char *promises, const char *execpromises) { // may use pledge(0,0) to perform a support check, to determine if // pledge() will be able to impose the restrictions it advertises // within the host environment. - if (execpromises) return einval(); - if (IsGenuineBlink()) return enosys(); - if (IsOpenbsd()) return sys_pledge(0, 0); - if (!IsLinux()) return enosys(); + if (execpromises) + return einval(); + if (IsGenuineBlink()) + return enosys(); + if (IsOpenbsd()) + return sys_pledge(0, 0); + if (!IsLinux()) + return enosys(); rc = sys_prctl(PR_GET_SECCOMP, 0, 0, 0, 0); - if (rc == 0 || rc == 2) return 0; // 2 means we're already filtered + if (rc == 0 || rc == 2) + return 0; // 2 means we're already filtered unassert(rc < 0); errno = -rc; return -1; @@ -274,9 +279,11 @@ int pledge(const char *promises, const char *execpromises) { STRACE("execpromises must be a subset of promises"); rc = einval(); } else { - if (notsubset) iexecpromises = ipromises; + if (notsubset) + iexecpromises = ipromises; rc = sys_pledge_linux(ipromises, __pledge_mode); - if (rc > -4096u) errno = -rc, rc = -1; + if (rc > -4096u) + errno = -rc, rc = -1; } } else { e = errno; diff --git a/libc/calls/poll-metal.c b/libc/calls/poll-metal.c index 918914cf0..613d4d415 100644 --- a/libc/calls/poll-metal.c +++ b/libc/calls/poll-metal.c @@ -71,7 +71,8 @@ int sys_poll_metal(struct pollfd *fds, size_t nfds, unsigned timeout_ms) { fds[i].revents = POLLNVAL; } } - if (fds[i].revents) ++rc; + if (fds[i].revents) + ++rc; } if (rc || !blocking || unsignedsubtract(rdtsc(), start) >= timeout) { break; diff --git a/libc/calls/poll-nt.c b/libc/calls/poll-nt.c index aa0cd2723..f2b16e91d 100644 --- a/libc/calls/poll-nt.c +++ b/libc/calls/poll-nt.c @@ -81,7 +81,8 @@ static textwindows int sys_poll_nt_impl(struct pollfd *fds, uint64_t nfds, // we might need to spawn threads and open pipes __fds_lock(); for (gotinvals = rc = sn = pn = i = 0; i < nfds; ++i) { - if (fds[i].fd < 0) continue; + if (fds[i].fd < 0) + continue; if (__isfdopen(fds[i].fd)) { if (__isfdkind(fds[i].fd, kFdSocket)) { if (sn < ARRAYLEN(sockfds)) { diff --git a/libc/calls/posix_openpt.c b/libc/calls/posix_openpt.c index 09de289c5..ae36362fb 100644 --- a/libc/calls/posix_openpt.c +++ b/libc/calls/posix_openpt.c @@ -43,7 +43,8 @@ int posix_openpt(int flags) { rc = sys_openat(AT_FDCWD, "/dev/ptm", flags, 0); } else if (IsFreebsd()) { rc = sys_posix_openpt(flags); - if (rc == -1 && errno == ENOSPC) errno = EAGAIN; + if (rc == -1 && errno == ENOSPC) + errno = EAGAIN; } else { rc = enosys(); } diff --git a/libc/calls/ppoll.c b/libc/calls/ppoll.c index 320f961a0..14d210f13 100644 --- a/libc/calls/ppoll.c +++ b/libc/calls/ppoll.c @@ -87,9 +87,11 @@ int ppoll(struct pollfd *fds, size_t nfds, const struct timespec *timeout, (timeout->tv_nsec + 999999) / 1000000)) { ms = -1; } - if (sigmask) sys_sigprocmask(SIG_SETMASK, sigmask, &oldmask); + if (sigmask) + sys_sigprocmask(SIG_SETMASK, sigmask, &oldmask); rc = poll(fds, nfds, ms); - if (sigmask) sys_sigprocmask(SIG_SETMASK, &oldmask, 0); + if (sigmask) + sys_sigprocmask(SIG_SETMASK, &oldmask, 0); } } else { uint32_t ms; diff --git a/libc/calls/preadv.c b/libc/calls/preadv.c index 9cba11979..b0fc220dd 100644 --- a/libc/calls/preadv.c +++ b/libc/calls/preadv.c @@ -84,7 +84,8 @@ static ssize_t Preadv(int fd, struct iovec *iov, int iovlen, int64_t off) { e = errno; rc = sys_preadv(fd, iov, iovlen, off, off); - if (rc != -1 || errno != ENOSYS) return rc; + if (rc != -1 || errno != ENOSYS) + return rc; errno = e; for (toto = i = 0; i < iovlen; ++i) { diff --git a/libc/calls/printfds.c b/libc/calls/printfds.c index 4f05e1680..9b81e1e00 100644 --- a/libc/calls/printfds.c +++ b/libc/calls/printfds.c @@ -49,13 +49,16 @@ void __printfds(struct Fd *fds, size_t fdslen) { int i; char buf[128]; for (i = 0; i < fdslen; ++i) { - if (!fds[i].kind) continue; + if (!fds[i].kind) + continue; kprintf("%3d %s", i, __fdkind2str(fds[i].kind)); if (fds[i].flags) { kprintf(" flags=%s", (DescribeOpenFlags)(buf, fds[i].flags)); } - if (fds[i].mode) kprintf(" mode=%#o", fds[i].mode); - if (fds[i].handle) kprintf(" handle=%ld", fds[i].handle); + if (fds[i].mode) + kprintf(" mode=%#o", fds[i].mode); + if (fds[i].handle) + kprintf(" handle=%ld", fds[i].handle); kprintf("\n"); } } diff --git a/libc/calls/program_invocation_short_name.c b/libc/calls/program_invocation_short_name.c index 396d55f47..06911e42d 100644 --- a/libc/calls/program_invocation_short_name.c +++ b/libc/calls/program_invocation_short_name.c @@ -24,7 +24,8 @@ char *program_invocation_short_name; __attribute__((__constructor__(10))) static textstartup void program_invocation_short_name_init(void) { char *p, *r; - if (!__argc) return; + if (!__argc) + return; if ((p = strrchr(__argv[0], '/'))) { r = p + 1; } else { diff --git a/libc/calls/ptrace.c b/libc/calls/ptrace.c index ae77a4a35..8acb3c8de 100644 --- a/libc/calls/ptrace.c +++ b/libc/calls/ptrace.c @@ -47,9 +47,11 @@ long ptrace(int request, ...) { rc = einval(); /* see consts.sh */ } else { ispeek = IsLinux() && request - 1u < 3; - if (ispeek) data = &peek; + if (ispeek) + data = &peek; rc = __sys_ptrace(request, pid, addr, data); - if (rc != -1 && ispeek) rc = peek; + if (rc != -1 && ispeek) + rc = peek; } STRACE("ptrace(%s, %d, %p, %p) → %p% m", DescribePtrace(request), pid, addr, data, rc); diff --git a/libc/calls/pwritev.c b/libc/calls/pwritev.c index 4f612a79e..fd70331fb 100644 --- a/libc/calls/pwritev.c +++ b/libc/calls/pwritev.c @@ -83,7 +83,8 @@ static ssize_t Pwritev(int fd, const struct iovec *iov, int iovlen, e = errno; rc = sys_pwritev(fd, iov, iovlen, off, off); - if (rc != -1 || errno != ENOSYS) return rc; + if (rc != -1 || errno != ENOSYS) + return rc; errno = e; for (toto = i = 0; i < iovlen; ++i) { diff --git a/libc/calls/rdrand.c b/libc/calls/rdrand.c index c499c3752..358a0795d 100644 --- a/libc/calls/rdrand.c +++ b/libc/calls/rdrand.c @@ -73,7 +73,8 @@ uint64_t rdrand(void) { : CFLAG_CONSTRAINT(cf), "=r"(x) : /* no inputs */ : "cc"); - if (cf) return x; + if (cf) + return x; asm volatile("pause"); } } diff --git a/libc/calls/read-nt.c b/libc/calls/read-nt.c index 2d76062da..699a7e2d8 100644 --- a/libc/calls/read-nt.c +++ b/libc/calls/read-nt.c @@ -276,7 +276,8 @@ static textwindows int ProcessKeyEvent(const struct NtInputRecord *r, char *p) { } else { v = -v; } - do p[n++] = v; + do + p[n++] = v; while ((v >>= 8)); return n; } @@ -360,7 +361,8 @@ static textwindows int ProcessKeyEvent(const struct NtInputRecord *r, char *p) { // finally apply thompson-pike varint encoding uint64_t w = tpenc(c); - do p[n++] = w; + do + p[n++] = w; while ((w >>= 8)); return n; } @@ -482,7 +484,8 @@ static textwindows bool EraseKeystroke(void) { struct Keystroke *k = KEYSTROKE_CONTAINER(e); FreeKeystroke(&__keystroke.line, e); for (int i = k->buflen; i--;) { - if ((k->buf[i] & 0300) == 0200) continue; // utf-8 cont + if ((k->buf[i] & 0300) == 0200) + continue; // utf-8 cont EraseCharacter(); if (!(__ttyconf.magic & kTtyEchoRaw) && IsCtl(k->buf[i])) { EraseCharacter(); @@ -552,12 +555,15 @@ static textwindows void IngestConsoleInput(void) { uint32_t i, n; struct NtInputRecord records[16]; for (;;) { - if (!__keystroke.freekeys) return; - if (__keystroke.end_of_file) return; + if (!__keystroke.freekeys) + return; + if (__keystroke.end_of_file) + return; if (!GetNumberOfConsoleInputEvents(__keystroke.cin, &n)) { goto UnexpectedEof; } - if (!n) return; + if (!n) + return; n = MIN(__keystroke.freekeys, MIN(ARRAYLEN(records), n)); if (!ReadConsoleInput(__keystroke.cin, records, n, &n)) { goto UnexpectedEof; @@ -722,8 +728,10 @@ static textwindows int WaitForConsole(struct Fd *f, sigset_t waitmask) { ms = __ttyconf.vtime * 100; } } - if (_check_cancel() == -1) return -1; - if (f->flags & _O_NONBLOCK) return eagain(); + if (_check_cancel() == -1) + return -1; + if (f->flags & _O_NONBLOCK) + return eagain(); if (_weaken(__sig_get) && (sig = _weaken(__sig_get)(waitmask))) { goto DeliverSignal; } @@ -734,15 +742,21 @@ static textwindows int WaitForConsole(struct Fd *f, sigset_t waitmask) { wi = WaitForMultipleObjects(2, (int64_t[2]){__keystroke.cin, sem}, 0, ms); atomic_store_explicit(&pt->pt_blocker, 0, memory_order_release); CloseHandle(sem); - if (wi == kNtWaitTimeout) return 0; // vtime elapsed - if (wi == 0) return -2; // console data - if (wi != 1) return __winerr(); // wait failed + if (wi == kNtWaitTimeout) + return 0; // vtime elapsed + if (wi == 0) + return -2; // console data + if (wi != 1) + return __winerr(); // wait failed if (_weaken(__sig_get)) { - if (!(sig = _weaken(__sig_get)(waitmask))) return eintr(); + if (!(sig = _weaken(__sig_get)(waitmask))) + return eintr(); DeliverSignal: int handler_was_called = _weaken(__sig_relay)(sig, SI_KERNEL, waitmask); - if (_check_cancel() == -1) return -1; - if (!(handler_was_called & SIG_HANDLED_NO_RESTART)) return -2; + if (_check_cancel() == -1) + return -1; + if (!(handler_was_called & SIG_HANDLED_NO_RESTART)) + return -2; } return eintr(); } @@ -756,7 +770,8 @@ static textwindows ssize_t ReadFromConsole(struct Fd *f, void *data, IngestConsoleInput(); bool done = DigestConsoleInput(data, size, &rc); UnlockKeystrokes(); - if (done) return rc; + if (done) + return rc; } while ((rc = WaitForConsole(f, waitmask)) == -2); return rc; } @@ -778,7 +793,8 @@ textwindows ssize_t ReadBuffer(int fd, void *data, size_t size, int64_t offset, // perform heavy lifting ssize_t rc; rc = sys_readwrite_nt(fd, data, size, offset, f->handle, waitmask, ReadFile); - if (rc != -2) return rc; + if (rc != -2) + return rc; // mops up win32 errors switch (GetLastError()) { @@ -798,11 +814,14 @@ static textwindows ssize_t ReadIovecs(int fd, const struct iovec *iov, sigset_t waitmask) { ssize_t rc; size_t i, total; - if (opt_offset < -1) return einval(); - while (iovlen && !iov[0].iov_len) iov++, iovlen--; + if (opt_offset < -1) + return einval(); + while (iovlen && !iov[0].iov_len) + iov++, iovlen--; if (iovlen) { for (total = i = 0; i < iovlen; ++i) { - if (!iov[i].iov_len) continue; + if (!iov[i].iov_len) + continue; rc = ReadBuffer(fd, iov[i].iov_base, iov[i].iov_len, opt_offset, waitmask); if (rc == -1) { @@ -813,8 +832,10 @@ static textwindows ssize_t ReadIovecs(int fd, const struct iovec *iov, } } total += rc; - if (opt_offset != -1) opt_offset += rc; - if (rc < iov[i].iov_len) break; + if (opt_offset != -1) + opt_offset += rc; + if (rc < iov[i].iov_len) + break; } return total; } else { diff --git a/libc/calls/readansi.c b/libc/calls/readansi.c index 8cd6afe67..315e4b364 100644 --- a/libc/calls/readansi.c +++ b/libc/calls/readansi.c @@ -68,7 +68,8 @@ ssize_t readansi(int fd, char *p, size_t n) { e = errno; t = kAscii; x = i = j = 0; - if (n) p[0] = 0; + if (n) + p[0] = 0; do { for (;;) { if (n) { @@ -102,7 +103,8 @@ ssize_t readansi(int fd, char *p, size_t n) { ++i; switch (t) { Whoopsie: - if (n) p[0] = c; + if (n) + p[0] = c; t = kAscii; i = 1; /* fallthrough */ diff --git a/libc/calls/readlinkat-nt.c b/libc/calls/readlinkat-nt.c index 5d5e855da..ff9a6eca2 100644 --- a/libc/calls/readlinkat-nt.c +++ b/libc/calls/readlinkat-nt.c @@ -40,10 +40,12 @@ static textwindows ssize_t sys_readlinkat_nt_impl(int dirfd, const char *path, char *buf, size_t bufsiz) { char16_t path16[PATH_MAX]; - if (__mkntpathat(dirfd, path, 0, path16) == -1) return -1; + if (__mkntpathat(dirfd, path, 0, path16) == -1) + return -1; size_t len = strlen16(path16); bool must_be_directory = len > 1 && path16[len - 1] == '\\'; - if (must_be_directory) path16[--len] = 0; + if (must_be_directory) + path16[--len] = 0; int64_t h; ssize_t rc; diff --git a/libc/calls/readv-metal.c b/libc/calls/readv-metal.c index a10fc88fe..6e43f431a 100644 --- a/libc/calls/readv-metal.c +++ b/libc/calls/readv-metal.c @@ -41,7 +41,8 @@ ssize_t sys_readv_metal(int fd, const struct iovec *iov, int iovlen) { */ if (_weaken(sys_readv_vga)) { ssize_t res = _weaken(sys_readv_vga)(g_fds.p + fd, iov, iovlen); - if (res > 0) return res; + if (res > 0) + return res; } /* fall through */ case kFdSerial: @@ -50,7 +51,8 @@ ssize_t sys_readv_metal(int fd, const struct iovec *iov, int iovlen) { file = (struct MetalFile *)g_fds.p[fd].handle; for (toto = i = 0; i < iovlen && file->pos < file->size; ++i) { got = MIN(iov[i].iov_len, file->size - file->pos); - if (got) memcpy(iov[i].iov_base, file->base, got); + if (got) + memcpy(iov[i].iov_base, file->base, got); toto += got; } return toto; diff --git a/libc/calls/readwrite-nt.c b/libc/calls/readwrite-nt.c index 8ae3baa0d..3643cd9dc 100644 --- a/libc/calls/readwrite-nt.c +++ b/libc/calls/readwrite-nt.c @@ -82,7 +82,8 @@ sys_readwrite_nt(int fd, void *data, size_t size, ssize_t offset, RestartOperation: bool eagained = false; // check for signals and cancelation - if (_check_cancel() == -1) return -1; // ECANCELED + if (_check_cancel() == -1) + return -1; // ECANCELED if (_weaken(__sig_get) && (sig = _weaken(__sig_get)(waitmask))) { goto HandleInterrupt; } @@ -136,7 +137,8 @@ RestartOperation: if (_weaken(__sig_relay) && (sig = _weaken(__sig_get)(waitmask))) { HandleInterrupt: int handler_was_called = _weaken(__sig_relay)(sig, SI_KERNEL, waitmask); - if (_check_cancel() == -1) return -1; // possible if we SIGTHR'd + if (_check_cancel() == -1) + return -1; // possible if we SIGTHR'd // read() is @restartable unless non-SA_RESTART hands were called if (!(handler_was_called & SIG_HANDLED_NO_RESTART)) { goto RestartOperation; diff --git a/libc/calls/releasefd.c b/libc/calls/releasefd.c index 6e98f5d09..f6947d22d 100644 --- a/libc/calls/releasefd.c +++ b/libc/calls/releasefd.c @@ -24,7 +24,8 @@ // really want to avoid locking here so close() needn't block signals void __releasefd(int fd) { int f1, f2; - if (!(0 <= fd && fd < g_fds.n)) return; + if (!(0 <= fd && fd < g_fds.n)) + return; g_fds.p[fd].kind = kFdEmpty; bzero(g_fds.p + fd, sizeof(*g_fds.p)); f1 = atomic_load_explicit(&g_fds.f, memory_order_relaxed); diff --git a/libc/calls/remove.c b/libc/calls/remove.c index 3db158bf8..f0197b932 100644 --- a/libc/calls/remove.c +++ b/libc/calls/remove.c @@ -28,8 +28,10 @@ */ int remove(const char *name) { int e = errno; - if (!unlinkat(AT_FDCWD, name, 0)) return 0; - if (errno != EISDIR) return -1; + if (!unlinkat(AT_FDCWD, name, 0)) + return 0; + if (errno != EISDIR) + return -1; errno = e; return unlinkat(AT_FDCWD, name, AT_REMOVEDIR); } diff --git a/libc/calls/restoretty.c b/libc/calls/restoretty.c index 1b92ce6e1..7b7269ff6 100644 --- a/libc/calls/restoretty.c +++ b/libc/calls/restoretty.c @@ -43,7 +43,8 @@ static struct termios __oldtermios; static size_t __strlen(const char *s) { size_t i = 0; - while (s[i]) ++i; + while (s[i]) + ++i; return i; } diff --git a/libc/calls/sched_getcpu.c b/libc/calls/sched_getcpu.c index ac80be47a..f738be649 100644 --- a/libc/calls/sched_getcpu.c +++ b/libc/calls/sched_getcpu.c @@ -58,7 +58,8 @@ int sched_getcpu(void) { } else { unsigned cpu = 0; int rc = sys_getcpu(&cpu, 0, 0); - if (rc == -1) return -1; + if (rc == -1) + return -1; return cpu; } } diff --git a/libc/calls/sedebug.c b/libc/calls/sedebug.c index fc6bf4ac8..64c4ac52d 100644 --- a/libc/calls/sedebug.c +++ b/libc/calls/sedebug.c @@ -84,7 +84,8 @@ static int64_t GetCurrentProcessSecurityToken(void) { bool32 ElevateSeDebugPrivilege(void) { int64_t hToken; - if (!(hToken = GetCurrentProcessSecurityToken())) return false; + if (!(hToken = GetCurrentProcessSecurityToken())) + return false; SetPrivilegeNt(hToken, u"SeDebugPrivilege", true); RevertToSelf(); CloseHandle(hToken); diff --git a/libc/calls/select-nt.c b/libc/calls/select-nt.c index bb895b135..8245f9f32 100644 --- a/libc/calls/select-nt.c +++ b/libc/calls/select-nt.c @@ -40,9 +40,12 @@ int sys_select_nt(int nfds, fd_set *readfds, fd_set *writefds, struct pollfd fds[64]; for (pfds = i = 0; i < nfds; ++i) { events = 0; - if (readfds && FD_ISSET(i, readfds)) events |= POLLIN; - if (writefds && FD_ISSET(i, writefds)) events |= POLLOUT; - if (exceptfds && FD_ISSET(i, exceptfds)) events |= POLLERR; + if (readfds && FD_ISSET(i, readfds)) + events |= POLLIN; + if (writefds && FD_ISSET(i, writefds)) + events |= POLLOUT; + if (exceptfds && FD_ISSET(i, exceptfds)) + events |= POLLERR; if (events) { if (pfds < ARRAYLEN(fds)) { fds[pfds].fd = i; @@ -71,12 +74,16 @@ int sys_select_nt(int nfds, fd_set *readfds, fd_set *writefds, // call our nt poll implementation fdcount = sys_poll_nt(fds, pfds, &millis, sigmask); unassert(fdcount < 64); - if (fdcount < 0) return -1; + if (fdcount < 0) + return -1; // convert pollfd back to bitsets - if (readfds) FD_ZERO(readfds); - if (writefds) FD_ZERO(writefds); - if (exceptfds) FD_ZERO(exceptfds); + if (readfds) + FD_ZERO(readfds); + if (writefds) + FD_ZERO(writefds); + if (exceptfds) + FD_ZERO(exceptfds); int bits = 0; for (i = 0; i < pfds; ++i) { if (fds[i].revents & POLLIN) { diff --git a/libc/calls/sig.c b/libc/calls/sig.c index b0011fdfe..12f116ccd 100644 --- a/libc/calls/sig.c +++ b/libc/calls/sig.c @@ -194,7 +194,8 @@ textwindows int __sig_raise(volatile int sig, int sic) { // update the signal mask in preparation for signal handller sigset_t blocksigs = __sighandmask[sig]; - if (!(flags & SA_NODEFER)) blocksigs |= 1ull << (sig - 1); + if (!(flags & SA_NODEFER)) + blocksigs |= 1ull << (sig - 1); ctx.uc_sigmask = atomic_fetch_or_explicit(&pt->tib->tib_sigmask, blocksigs, memory_order_acquire); @@ -265,7 +266,8 @@ static textwindows wontreturn void __sig_tramp(struct SignalFrame *sf) { // update the signal mask in preparation for signal handller sigset_t blocksigs = __sighandmask[sig]; - if (!(sf->flags & SA_NODEFER)) blocksigs |= 1ull << (sig - 1); + if (!(sf->flags & SA_NODEFER)) + blocksigs |= 1ull << (sig - 1); sf->ctx.uc_sigmask = atomic_fetch_or_explicit(&tib->tib_sigmask, blocksigs, memory_order_acquire); @@ -425,7 +427,8 @@ textwindows void __sig_generate(int sig, int sic) { for (e = dll_first(_pthread_list); e; e = dll_next(_pthread_list, e)) { pt = POSIXTHREAD_CONTAINER(e); // we don't want to signal ourself - if (pt == _pthread_self()) continue; + if (pt == _pthread_self()) + continue; // we don't want to signal a thread that isn't running if (atomic_load_explicit(&pt->pt_status, memory_order_acquire) >= kPosixThreadTerminated) { @@ -584,7 +587,8 @@ static void __sig_unmaskable(struct NtExceptionPointers *ep, int code, int sig, siginfo_t si = {.si_signo = sig, .si_code = code, .si_addr = si_addr}; _ntcontext2linux(&ctx, ep->ContextRecord); sigset_t blocksigs = __sighandmask[sig]; - if (!(flags & SA_NODEFER)) blocksigs |= 1ull << (sig - 1); + if (!(flags & SA_NODEFER)) + blocksigs |= 1ull << (sig - 1); ctx.uc_sigmask = atomic_fetch_or_explicit(&tib->tib_sigmask, blocksigs, memory_order_acquire); __sig_handler(rva)(sig, &si, &ctx); @@ -668,7 +672,8 @@ textwindows int __sig_check(void) { } __attribute__((__constructor__(10))) textstartup void __sig_init(void) { - if (!IsWindows()) return; + if (!IsWindows()) + return; AddVectoredExceptionHandler(true, (void *)__sig_crash); SetConsoleCtrlHandler((void *)__sig_console, true); } diff --git a/libc/calls/sigaction.c b/libc/calls/sigaction.c index 3d4edd901..1ee606403 100644 --- a/libc/calls/sigaction.c +++ b/libc/calls/sigaction.c @@ -58,7 +58,8 @@ static void sigaction_cosmo2native(union metasigaction *sa) { void *restorer; uint32_t masklo; uint32_t maskhi; - if (!sa) return; + if (!sa) + return; flags = sa->cosmo.sa_flags; handler = sa->cosmo.sa_handler; restorer = sa->cosmo.sa_restorer; @@ -106,7 +107,8 @@ static void sigaction_native2cosmo(union metasigaction *sa) { void *restorer = 0; uint32_t masklo; uint32_t maskhi = 0; - if (!sa) return; + if (!sa) + return; if (IsLinux()) { flags = sa->linux.sa_flags; handler = sa->linux.sa_handler; @@ -159,9 +161,12 @@ static int __sigaction(int sig, const struct sigaction *act, int rc, rva, oldrva; sigaction_f sigenter; struct sigaction *ap, copy; - if (IsMetal()) return enosys(); /* TODO: Signals on Metal */ - if (!(1 <= sig && sig <= _NSIG)) return einval(); - if (sig == SIGKILL || sig == SIGSTOP) return einval(); + if (IsMetal()) + return enosys(); /* TODO: Signals on Metal */ + if (!(1 <= sig && sig <= _NSIG)) + return einval(); + if (sig == SIGKILL || sig == SIGSTOP) + return einval(); if (IsAsan() && ((act && !__asan_is_valid(act, sizeof(*act))) || (oldact && !__asan_is_valid(oldact, sizeof(*oldact))))) { return efault(); diff --git a/libc/calls/sigaltstack.c b/libc/calls/sigaltstack.c index e2c93d74e..b6da79d0d 100644 --- a/libc/calls/sigaltstack.c +++ b/libc/calls/sigaltstack.c @@ -77,10 +77,12 @@ static textwindows int sigaltstack_cosmo(const struct sigaltstack *neu, sigaltstack_setnew(neu); if (tib->tib_sigstack_addr <= bp && bp <= tib->tib_sigstack_addr + tib->tib_sigstack_size) { - if (old) old->ss_flags |= SS_ONSTACK; + if (old) + old->ss_flags |= SS_ONSTACK; tib->tib_sigstack_flags = SS_ONSTACK; // can't disable if on it } else if (!tib->tib_sigstack_size) { - if (old) old->ss_flags = SS_DISABLE; + if (old) + old->ss_flags = SS_DISABLE; tib->tib_sigstack_flags = SS_DISABLE; } return 0; @@ -90,7 +92,8 @@ static int sigaltstack_bsd(const struct sigaltstack *neu, struct sigaltstack *old) { int rc; struct sigaltstack_bsd oldbsd, neubsd, *neup = 0; - if (neu) sigaltstack2bsd(&neubsd, neu), neup = &neubsd; + if (neu) + sigaltstack2bsd(&neubsd, neu), neup = &neubsd; if (IsXnuSilicon()) { rc = _sysret(__syslib->__sigaltstack(neup, &oldbsd)); } else { @@ -99,7 +102,8 @@ static int sigaltstack_bsd(const struct sigaltstack *neu, if (rc == -1) { return -1; } - if (old) sigaltstack2linux(old, &oldbsd); + if (old) + sigaltstack2linux(old, &oldbsd); return 0; } @@ -135,10 +139,12 @@ int sigaltstack(const struct sigaltstack *neu, struct sigaltstack *old) { rc = enomem(); } else if (IsLinux()) { rc = sys_sigaltstack(neu, old); - if (!rc) sigaltstack_setnew(neu); + if (!rc) + sigaltstack_setnew(neu); } else if (IsBsd()) { rc = sigaltstack_bsd(neu, old); - if (!rc) sigaltstack_setnew(neu); + if (!rc) + sigaltstack_setnew(neu); } else { rc = sigaltstack_cosmo(neu, old); } diff --git a/libc/calls/sigsuspend.c b/libc/calls/sigsuspend.c index 7d59a87e5..26a0a9d87 100644 --- a/libc/calls/sigsuspend.c +++ b/libc/calls/sigsuspend.c @@ -56,7 +56,8 @@ int sigsuspend(const sigset_t *ignore) { } else { sigset_t waitmask = ignore ? *ignore : 0; if (IsWindows() || IsMetal()) { - while (!(rc = _park_norestart(-1u, waitmask))) donothing; + while (!(rc = _park_norestart(-1u, waitmask))) + donothing; } else { rc = sys_sigsuspend((uint64_t[2]){waitmask}, 8); } diff --git a/libc/calls/sigwait.c b/libc/calls/sigwait.c index beabc1143..77dc014fa 100644 --- a/libc/calls/sigwait.c +++ b/libc/calls/sigwait.c @@ -20,7 +20,8 @@ int sigwait(const sigset_t *mask, int *sig) { siginfo_t si; - if (sigtimedwait(mask, &si, 0) < 0) return -1; + if (sigtimedwait(mask, &si, 0) < 0) + return -1; *sig = si.si_signo; return 0; } diff --git a/libc/calls/sleep.c b/libc/calls/sleep.c index c707b31ce..90debc667 100644 --- a/libc/calls/sleep.c +++ b/libc/calls/sleep.c @@ -54,7 +54,8 @@ unsigned sleep(unsigned seconds) { if (cs != -1) { _pthread_allow_cancelation(cs); } - if (!err) return 0; + if (!err) + return 0; unassert(err == EINTR); unslept = tv.tv_sec; if (tv.tv_nsec && unslept < UINT_MAX) { diff --git a/libc/calls/statfs-nt.c b/libc/calls/statfs-nt.c index 3f95cee99..1448c4a82 100644 --- a/libc/calls/statfs-nt.c +++ b/libc/calls/statfs-nt.c @@ -32,7 +32,8 @@ textwindows int sys_statfs_nt(const char *path, struct statfs *sf) { int rc; int64_t h; char16_t path16[PATH_MAX]; - if (__mkntpath(path, path16) == -1) return -1; + if (__mkntpath(path, path16) == -1) + return -1; BLOCK_SIGNALS; h = __fix_enotdir( CreateFile(path16, kNtFileGenericRead, diff --git a/libc/calls/symlinkat-nt.c b/libc/calls/symlinkat-nt.c index 94da0ea18..c1555848e 100644 --- a/libc/calls/symlinkat-nt.c +++ b/libc/calls/symlinkat-nt.c @@ -44,12 +44,15 @@ static textwindows void InitializeWinlink(void) { int64_t tok; struct NtLuid id; struct NtTokenPrivileges tp; - if (!OpenProcessToken(GetCurrentProcess(), kNtTokenAllAccess, &tok)) return; - if (!LookupPrivilegeValue(0, u"SeCreateSymbolicLinkPrivilege", &id)) return; + if (!OpenProcessToken(GetCurrentProcess(), kNtTokenAllAccess, &tok)) + return; + if (!LookupPrivilegeValue(0, u"SeCreateSymbolicLinkPrivilege", &id)) + return; tp.PrivilegeCount = 1; tp.Privileges[0].Luid = id; tp.Privileges[0].Attributes = kNtSePrivilegeEnabled; - if (!AdjustTokenPrivileges(tok, 0, &tp, sizeof(tp), 0, 0)) return; + if (!AdjustTokenPrivileges(tok, 0, &tp, sizeof(tp), 0, 0)) + return; g_winlink.allowed = GetLastError() != kNtErrorNotAllAssigned; } @@ -67,8 +70,10 @@ textwindows int sys_symlinkat_nt(const char *target, int newdirfd, uint32_t attrs, flags; // convert the paths - if (__mkntpathat(newdirfd, linkpath, 0, M.linkpath16) == -1) return -1; - if ((targetlen = __mkntpath(target, M.target16)) == -1) return -1; + if (__mkntpathat(newdirfd, linkpath, 0, M.linkpath16) == -1) + return -1; + if ((targetlen = __mkntpath(target, M.target16)) == -1) + return -1; // determine if we need directory flag if ((attrs = GetFileAttributes(M.target16)) != -1u) { diff --git a/libc/calls/sync-nt.c b/libc/calls/sync-nt.c index 881a505d5..6e98e8f45 100644 --- a/libc/calls/sync-nt.c +++ b/libc/calls/sync-nt.c @@ -41,7 +41,8 @@ textwindows int sys_sync_nt(void) { } } for (drives = GetLogicalDrives(), i = 0; i <= 'Z' - 'A'; ++i) { - if (!(drives & (1 << i))) continue; + if (!(drives & (1 << i))) + continue; path[4] = 'A' + i; if (ntaccesscheck(path, R_OK | W_OK) != -1) { BLOCK_SIGNALS; diff --git a/libc/calls/sysinfo.c b/libc/calls/sysinfo.c index aea937cc3..63661a7f1 100644 --- a/libc/calls/sysinfo.c +++ b/libc/calls/sysinfo.c @@ -41,11 +41,13 @@ struct loadavg { }; static int64_t GetUptime(void) { - if (IsNetbsd()) return 0; // TODO(jart): Why? + if (IsNetbsd()) + return 0; // TODO(jart): Why? struct timeval x; size_t n = sizeof(x); int mib[] = {CTL_KERN, KERN_BOOTTIME}; - if (sys_sysctl(mib, ARRAYLEN(mib), &x, &n, 0, 0) == -1) return 0; + if (sys_sysctl(mib, ARRAYLEN(mib), &x, &n, 0, 0) == -1) + return 0; return timespec_real().tv_sec - x.tv_sec; } @@ -53,7 +55,8 @@ static int64_t GetPhysmem(void) { uint64_t x = 0; size_t n = sizeof(x); int mib[] = {CTL_HW, HW_PHYSMEM}; - if (sys_sysctl(mib, ARRAYLEN(mib), &x, &n, 0, 0) == -1) return 0; + if (sys_sysctl(mib, ARRAYLEN(mib), &x, &n, 0, 0) == -1) + return 0; return x; } diff --git a/libc/calls/tcdrain.c b/libc/calls/tcdrain.c index 916abc3e7..c172d4027 100644 --- a/libc/calls/tcdrain.c +++ b/libc/calls/tcdrain.c @@ -33,7 +33,8 @@ #define TIOCDRAIN 0x2000745e // xnu, freebsd, openbsd, netbsd static dontinline textwindows int sys_tcdrain_nt(int fd) { - if (!sys_isatty(fd)) return -1; // ebadf, enotty + if (!sys_isatty(fd)) + return -1; // ebadf, enotty // Tried FlushFileBuffers but it made Emacs hang when run in cmd.exe // "Console output is not buffered." -Quoth MSDN on FlushFileBuffers return 0; diff --git a/libc/calls/tcflow.c b/libc/calls/tcflow.c index b50ac5c80..6543319c3 100644 --- a/libc/calls/tcflow.c +++ b/libc/calls/tcflow.c @@ -41,10 +41,14 @@ #define TIOCIXOFF 0x20007480 // xnu static const char *DescribeFlow(char buf[12], int action) { - if (action == TCOOFF) return "TCOOFF"; - if (action == TCOON) return "TCOON"; - if (action == TCIOFF) return "TCIOFF"; - if (action == TCION) return "TCION"; + if (action == TCOOFF) + return "TCOOFF"; + if (action == TCOON) + return "TCOON"; + if (action == TCIOFF) + return "TCIOFF"; + if (action == TCION) + return "TCION"; FormatInt32(buf, action); return buf; } @@ -89,7 +93,8 @@ static int sys_tcflow_bsd(int fd, int action) { static dontinline textwindows int sys_tcflow_nt(int fd, int action) { bool32 ok; int64_t h; - if (!__isfdopen(fd)) return ebadf(); + if (!__isfdopen(fd)) + return ebadf(); h = g_fds.p[fd].handle; switch (action) { case TCOON: diff --git a/libc/calls/tcflush.c b/libc/calls/tcflush.c index 1c7db3748..cfa4bd9a1 100644 --- a/libc/calls/tcflush.c +++ b/libc/calls/tcflush.c @@ -41,9 +41,12 @@ #define kNtPurgeRxclear 8 static const char *DescribeFlush(char buf[12], int action) { - if (action == TCIFLUSH) return "TCIFLUSH"; - if (action == TCOFLUSH) return "TCOFLUSH"; - if (action == TCIOFLUSH) return "TCIOFLUSH"; + if (action == TCIFLUSH) + return "TCIFLUSH"; + if (action == TCOFLUSH) + return "TCOFLUSH"; + if (action == TCIOFLUSH) + return "TCIOFLUSH"; FormatInt32(buf, action); return buf; } diff --git a/libc/calls/tcgetattr-nt.c b/libc/calls/tcgetattr-nt.c index 464ba9593..bf4262ebf 100644 --- a/libc/calls/tcgetattr-nt.c +++ b/libc/calls/tcgetattr-nt.c @@ -35,8 +35,10 @@ textwindows int tcgetattr_nt(int fd, struct termios *tio) { uint32_t inmode, outmode; // validate file descriptor - if (!__isfdopen(fd)) return ebadf(); - if (!__isfdkind(fd, kFdConsole)) return enotty(); + if (!__isfdopen(fd)) + return ebadf(); + if (!__isfdkind(fd, kFdConsole)) + return enotty(); // then completely ignore it hInput = GetConsoleInputHandle(); diff --git a/libc/calls/tcgetwinsize-nt.c b/libc/calls/tcgetwinsize-nt.c index f2956422c..3b9bfe4ed 100644 --- a/libc/calls/tcgetwinsize-nt.c +++ b/libc/calls/tcgetwinsize-nt.c @@ -28,7 +28,8 @@ textwindows int tcgetwinsize_nt(int fd, struct winsize *ws) { // The Linux man page doesn't list EBADF as an errno for this. - if (!sys_isatty(fd)) return enotty(); + if (!sys_isatty(fd)) + return enotty(); // Query the console which might fail if fd is a serial device. struct NtConsoleScreenBufferInfoEx sr = {.cbSize = sizeof(sr)}; diff --git a/libc/calls/tcsendbreak.c b/libc/calls/tcsendbreak.c index 3e75a706a..9e6e3b55b 100644 --- a/libc/calls/tcsendbreak.c +++ b/libc/calls/tcsendbreak.c @@ -30,15 +30,19 @@ #define TIOCCBRK 0x2000747a // bsd static int sys_tcsendbreak_bsd(int fd) { - if (sys_ioctl(fd, TIOCSBRK, 0) == -1) return -1; + if (sys_ioctl(fd, TIOCSBRK, 0) == -1) + return -1; usleep(400000); - if (sys_ioctl(fd, TIOCCBRK, 0) == -1) return -1; + if (sys_ioctl(fd, TIOCCBRK, 0) == -1) + return -1; return 0; } static textwindows int sys_tcsendbreak_nt(int fd) { - if (!__isfdopen(fd)) return ebadf(); - if (!TransmitCommChar(g_fds.p[fd].handle, '\0')) return __winerr(); + if (!__isfdopen(fd)) + return ebadf(); + if (!TransmitCommChar(g_fds.p[fd].handle, '\0')) + return __winerr(); return 0; } diff --git a/libc/calls/tcsetattr-nt.c b/libc/calls/tcsetattr-nt.c index eee5ccdf7..1eafdf66b 100644 --- a/libc/calls/tcsetattr-nt.c +++ b/libc/calls/tcsetattr-nt.c @@ -37,15 +37,18 @@ textwindows int tcsetattr_nt(int fd, int opt, const struct termios *tio) { uint32_t inmode, outmode; // validate file descriptor - if (!__isfdopen(fd)) return ebadf(); - if (!__isfdkind(fd, kFdConsole)) return enotty(); + if (!__isfdopen(fd)) + return ebadf(); + if (!__isfdkind(fd, kFdConsole)) + return enotty(); // then completely ignore it hInput = GetConsoleInputHandle(); hOutput = GetConsoleOutputHandle(); unassert(GetConsoleMode(hInput, &inmode)); unassert(GetConsoleMode(hOutput, &outmode)); - if (opt == TCSAFLUSH) FlushConsoleInputBytes(); + if (opt == TCSAFLUSH) + FlushConsoleInputBytes(); // now work on the configuration inmode &= ~(kNtEnableLineInput | kNtEnableEchoInput | diff --git a/libc/calls/tcsetattr.c b/libc/calls/tcsetattr.c index f820fc0e6..33f36f7d0 100644 --- a/libc/calls/tcsetattr.c +++ b/libc/calls/tcsetattr.c @@ -35,9 +35,12 @@ void __on_tcsetattr(int); int tcsetattr_nt(int, int, const struct termios *); static const char *DescribeTcsa(char buf[12], int opt) { - if (opt == TCSANOW) return "TCSANOW"; - if (opt == TCSADRAIN) return "TCSADRAIN"; - if (opt == TCSAFLUSH) return "TCSAFLUSH"; + if (opt == TCSANOW) + return "TCSANOW"; + if (opt == TCSADRAIN) + return "TCSADRAIN"; + if (opt == TCSAFLUSH) + return "TCSAFLUSH"; FormatInt32(buf, opt); return buf; } diff --git a/libc/calls/tcsetwinsize-nt.c b/libc/calls/tcsetwinsize-nt.c index 2fbd1479e..431a582af 100644 --- a/libc/calls/tcsetwinsize-nt.c +++ b/libc/calls/tcsetwinsize-nt.c @@ -24,7 +24,8 @@ textwindows int tcsetwinsize_nt(int fd, const struct winsize *ws) { struct NtCoord coord; - if (!sys_isatty(fd)) return -1; // ebadf, enotty + if (!sys_isatty(fd)) + return -1; // ebadf, enotty coord.X = ws->ws_col; coord.Y = ws->ws_row; if (SetConsoleScreenBufferSize(fd, coord)) { diff --git a/libc/calls/tmpfd.c b/libc/calls/tmpfd.c index b33b147df..d8ceffacd 100644 --- a/libc/calls/tmpfd.c +++ b/libc/calls/tmpfd.c @@ -87,9 +87,11 @@ int tmpfd(void) { } path[0] = 0; strlcat(path, __get_tmpdir(), sizeof(path)); - if (!(prog = program_invocation_short_name)) prog = "tmp"; + if (!(prog = program_invocation_short_name)) + prog = "tmp"; strlcat(path, prog, sizeof(path)); strlcat(path, ".XXXXXX", sizeof(path)); - if ((fd = openatemp(AT_FDCWD, path, 0, O_UNLINK, 0)) == -1) return -1; + if ((fd = openatemp(AT_FDCWD, path, 0, O_UNLINK, 0)) == -1) + return -1; return fd; } diff --git a/libc/calls/touch.c b/libc/calls/touch.c index 89a6e1ca7..69384f752 100644 --- a/libc/calls/touch.c +++ b/libc/calls/touch.c @@ -38,7 +38,8 @@ int touch(const char *file, uint32_t mode) { BLOCK_CANCELATION; fd = open(file, O_CREAT | O_WRONLY, mode); ALLOW_CANCELATION; - if (fd == -1) return -1; + if (fd == -1) + return -1; return close(fd); } return rc; diff --git a/libc/calls/truncate-nt.c b/libc/calls/truncate-nt.c index 576b8335f..2e2fdb089 100644 --- a/libc/calls/truncate-nt.c +++ b/libc/calls/truncate-nt.c @@ -30,7 +30,8 @@ textwindows int sys_truncate_nt(const char *path, uint64_t length) { int rc; int64_t fh; uint16_t path16[PATH_MAX]; - if (__mkntpath(path, path16) == -1) return -1; + if (__mkntpath(path, path16) == -1) + return -1; BLOCK_SIGNALS; if ((fh = CreateFile( path16, kNtGenericWrite, diff --git a/libc/calls/ttyname_r.c b/libc/calls/ttyname_r.c index fa84cfaa5..c87d4a99a 100644 --- a/libc/calls/ttyname_r.c +++ b/libc/calls/ttyname_r.c @@ -36,9 +36,12 @@ #define FIODGNAME 0x80106678 // freebsd static textwindows errno_t sys_ttyname_nt(int fd, char *buf, size_t size) { - if (fd + 0u >= g_fds.n) return EBADF; - if (g_fds.p[fd].kind != kFdConsole) return ENOTTY; - if (strlcpy(buf, "/dev/tty", size) >= size) return ERANGE; + if (fd + 0u >= g_fds.n) + return EBADF; + if (g_fds.p[fd].kind != kFdConsole) + return ENOTTY; + if (strlcpy(buf, "/dev/tty", size) >= size) + return ERANGE; return 0; } @@ -62,14 +65,19 @@ static errno_t ttyname_linux(int fd, char *buf, size_t size) { ssize_t got; struct stat st1, st2; char name[14 + 12 + 1]; - if (!isatty(fd)) return errno; + if (!isatty(fd)) + return errno; FormatInt32(stpcpy(name, "/proc/self/fd/"), fd); got = readlink(name, buf, size); - if (got == -1) return errno; - if (got >= size) return ERANGE; + if (got == -1) + return errno; + if (got >= size) + return ERANGE; buf[got] = 0; - if (stat(buf, &st1) || fstat(fd, &st2)) return errno; - if (st1.st_dev != st2.st_dev || st1.st_ino != st2.st_ino) return ENODEV; + if (stat(buf, &st1) || fstat(fd, &st2)) + return errno; + if (st1.st_dev != st2.st_dev || st1.st_ino != st2.st_ino) + return ENODEV; return 0; } diff --git a/libc/calls/unveil.c b/libc/calls/unveil.c index d47c84889..57f4cfc28 100644 --- a/libc/calls/unveil.c +++ b/libc/calls/unveil.c @@ -176,7 +176,8 @@ static int unveil_init(void) { }; // [undocumented] landlock_create_ruleset() always returns O_CLOEXEC // assert(__sys_fcntl(rc, F_GETFD) == FD_CLOEXEC); - if ((rc = landlock_create_ruleset(&attr, sizeof(attr), 0)) < 0) return -1; + if ((rc = landlock_create_ruleset(&attr, sizeof(attr), 0)) < 0) + return -1; // grant file descriptor a higher number that's less likely to interfere if ((fd = __sys_fcntl(rc, F_DUPFD_CLOEXEC, 100)) == -1) { return err_close(-1, rc); @@ -205,9 +206,12 @@ int sys_unveil_linux(const char *path, const char *permissions) { const char *last; const char *next; - if (!State.fd && (rc = unveil_init()) == -1) return rc; - if ((path && !permissions) || (!path && permissions)) return einval(); - if (!path && !permissions) return unveil_final(); + if (!State.fd && (rc = unveil_init()) == -1) + return rc; + if ((path && !permissions) || (!path && permissions)) + return einval(); + if (!path && !permissions) + return unveil_final(); struct landlock_path_beneath_attr pb = {0}; for (const char *c = permissions; *c != '\0'; c++) { switch (*c) { @@ -233,7 +237,8 @@ int sys_unveil_linux(const char *path, const char *permissions) { // realpath(path) to the ruleset. however a corner case exists where // it isn't valid, e.g. /dev/stdin -> /proc/2834/fd/pipe:[51032], so // we'll need to work around this, by adding the path which is valid - if (strlen(path) + 1 > PATH_MAX) return enametoolong(); + if (strlen(path) + 1 > PATH_MAX) + return enametoolong(); last = path; next = path; for (int i = 0;; ++i) { @@ -283,7 +288,8 @@ int sys_unveil_linux(const char *path, const char *permissions) { BLOCK_CANCELATION; rc = sys_openat(AT_FDCWD, path, O_PATH | O_NOFOLLOW | O_CLOEXEC, 0); ALLOW_CANCELATION; - if (rc == -1) return rc; + if (rc == -1) + return rc; pb.parent_fd = rc; struct stat st; @@ -421,8 +427,10 @@ int unveil(const char *path, const char *permissions) { // if the host environment enables unveil() to impose true security // restrictions because the default behavior is to silently succeed // so that programs will err on the side of working if distributed. - if (permissions) return einval(); - if (IsOpenbsd()) return 0; + if (permissions) + return einval(); + if (IsOpenbsd()) + return 0; if (landlock_abi_version != -1) { unassert(landlock_abi_version >= 1); return landlock_abi_version; diff --git a/libc/calls/usleep.c b/libc/calls/usleep.c index 2aefe53a4..6fafae9e8 100644 --- a/libc/calls/usleep.c +++ b/libc/calls/usleep.c @@ -37,6 +37,7 @@ int usleep(uint64_t micros) { errno_t err; struct timespec ts = timespec_frommicros(micros); err = clock_nanosleep(CLOCK_REALTIME, 0, &ts, 0); - if (err) return errno = err, -1; + if (err) + return errno = err, -1; return 0; } diff --git a/libc/calls/utimensat-nt.c b/libc/calls/utimensat-nt.c index b2c520a81..ce843388c 100644 --- a/libc/calls/utimensat-nt.c +++ b/libc/calls/utimensat-nt.c @@ -44,7 +44,8 @@ static textwindows int sys_utimensat_nt_impl(int dirfd, const char *path, struct NtFileTime ft[2], *ftp[2]; if (path) { - if (__mkntpathat(dirfd, path, 0, path16) == -1) return -1; + if (__mkntpathat(dirfd, path, 0, path16) == -1) + return -1; if ((fh = CreateFile( path16, kNtFileWriteAttributes, kNtFileShareRead | kNtFileShareWrite | kNtFileShareDelete, NULL, diff --git a/libc/calls/vdsofunc.greg.c b/libc/calls/vdsofunc.greg.c index cc4ca2431..69b2f774d 100644 --- a/libc/calls/vdsofunc.greg.c +++ b/libc/calls/vdsofunc.greg.c @@ -35,7 +35,8 @@ // needed to avoid asan restrictions on strcmp static int StrCmp(const char *l, const char *r) { size_t i = 0; - while (l[i] == r[i] && r[i]) ++i; + while (l[i] == r[i] && r[i]) + ++i; return (l[i] & 255) - (r[i] & 255); } diff --git a/libc/calls/winexec.c b/libc/calls/winexec.c index e61afeaa6..cdb41dd72 100644 --- a/libc/calls/winexec.c +++ b/libc/calls/winexec.c @@ -40,9 +40,12 @@ static uint32_t GetFileExtension(const char16_t *s) { n = s ? strlen16(s) : 0; for (i = w = 0; n--;) { wint_t c = s[n]; - if (!IsGraph(c)) return 0; - if (c == '.') break; - if (++i > 4) return 0; + if (!IsGraph(c)) + return 0; + if (c == '.') + break; + if (++i > 4) + return 0; w <<= 8; w |= kToLower[c]; } diff --git a/libc/calls/write-nt.c b/libc/calls/write-nt.c index f885adaa3..c5ae7cb02 100644 --- a/libc/calls/write-nt.c +++ b/libc/calls/write-nt.c @@ -67,7 +67,8 @@ static textwindows ssize_t sys_write_nt_impl(int fd, void *data, size_t size, ssize_t rc; rc = sys_readwrite_nt(fd, data, size, offset, handle, waitmask, (void *)WriteFile); - if (rc != -2) return rc; + if (rc != -2) + return rc; // mops up win32 errors switch (GetLastError()) { @@ -91,11 +92,14 @@ static textwindows ssize_t sys_write_nt2(int fd, const struct iovec *iov, uint64_t waitmask) { ssize_t rc; size_t i, total; - if (opt_offset < -1) return einval(); - while (iovlen && !iov[0].iov_len) iov++, iovlen--; + if (opt_offset < -1) + return einval(); + while (iovlen && !iov[0].iov_len) + iov++, iovlen--; if (iovlen) { for (total = i = 0; i < iovlen; ++i) { - if (!iov[i].iov_len) continue; + if (!iov[i].iov_len) + continue; rc = sys_write_nt_impl(fd, iov[i].iov_base, iov[i].iov_len, opt_offset, waitmask); if (rc == -1) { @@ -106,8 +110,10 @@ static textwindows ssize_t sys_write_nt2(int fd, const struct iovec *iov, } } total += rc; - if (opt_offset != -1) opt_offset += rc; - if (rc < iov[i].iov_len) break; + if (opt_offset != -1) + opt_offset += rc; + if (rc < iov[i].iov_len) + break; } return total; } else { diff --git a/libc/calls/writev-metal.c b/libc/calls/writev-metal.c index 6c83b4385..a3e87c6cd 100644 --- a/libc/calls/writev-metal.c +++ b/libc/calls/writev-metal.c @@ -28,7 +28,8 @@ ssize_t sys_writev_metal(struct Fd *fd, const struct iovec *iov, int iovlen) { switch (fd->kind) { case kFdConsole: - if (_weaken(sys_writev_vga)) _weaken(sys_writev_vga)(fd, iov, iovlen); + if (_weaken(sys_writev_vga)) + _weaken(sys_writev_vga)(fd, iov, iovlen); /* fallthrough */ case kFdSerial: return sys_writev_serial(fd, iov, iovlen); diff --git a/libc/dlopen/dlopen.c b/libc/dlopen/dlopen.c index ae5af3e40..c5cb457ba 100644 --- a/libc/dlopen/dlopen.c +++ b/libc/dlopen/dlopen.c @@ -161,9 +161,12 @@ static int is_file_newer_than(const char *path, const char *other) { static unsigned elf2prot(unsigned x) { unsigned r = 0; - if (x & PF_R) r += PROT_READ; - if (x & PF_W) r += PROT_WRITE; - if (x & PF_X) r += PROT_EXEC; + if (x & PF_R) + r += PROT_READ; + if (x & PF_W) + r += PROT_WRITE; + if (x & PF_X) + r += PROT_EXEC; return r; } @@ -284,7 +287,8 @@ static dontinline bool elf_load(struct Loaded *l, const char *file, long pagesz, static long *push_strs(long *sp, char **list, int count) { *--sp = 0; - while (count) *--sp = (long)list[--count]; + while (count) + *--sp = (long)list[--count]; return sp; } @@ -316,12 +320,14 @@ static dontinline void elf_exec(const char *file, char **envp) { // count environment variables int envc = 0; - while (envp[envc]) envc++; + while (envp[envc]) + envc++; // count auxiliary values int auxc = 0; Elf64_auxv_t *av; - for (av = (Elf64_auxv_t *)__auxv; av->a_type; ++av) auxc++; + for (av = (Elf64_auxv_t *)__auxv; av->a_type; ++av) + auxc++; // create environment block for embedded process // the platform libc will save its location for getenv(), etc. @@ -332,10 +338,12 @@ static dontinline void elf_exec(const char *file, char **envp) { size_t argsize = (1 + 2 + 1 + envc + 1 + auxc * 2 + 1 + 3) * 8; size_t mapsize = (stksize + argsize + (pagesz - 1)) & -pagesz; size_t skew = (mapsize - argsize) & (stkalign - 1); - if (IsFreebsd()) skew += 8; // FreeBSD calls _start() like a C function + if (IsFreebsd()) + skew += 8; // FreeBSD calls _start() like a C function map = __sys_mmap(0, mapsize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0, 0); - if (map == MAP_FAILED) return; + if (map == MAP_FAILED) + return; long *sp = (long *)(map + mapsize - skew); // push argument string @@ -348,14 +356,22 @@ static dontinline void elf_exec(const char *file, char **envp) { unsigned long key, val; for (av = (Elf64_auxv_t *)__auxv; (key = av->a_type); ++av) { val = av->a_un.a_val; - if (key == AT_PHDR) val = (long)(prog.base + prog.eh.e_phoff); - if (key == AT_PHENT) val = prog.eh.e_phentsize; - if (key == AT_PHNUM) val = prog.eh.e_phnum; - if (key == AT_PAGESZ) val = pagesz; - if (key == AT_BASE) val = (long)interp.base; - if (key == AT_FLAGS) val = 0; - if (key == AT_ENTRY) val = (long)prog.entry; - if (key == AT_EXECFN) val = (long)program_invocation_name; + if (key == AT_PHDR) + val = (long)(prog.base + prog.eh.e_phoff); + if (key == AT_PHENT) + val = prog.eh.e_phentsize; + if (key == AT_PHNUM) + val = prog.eh.e_phnum; + if (key == AT_PAGESZ) + val = pagesz; + if (key == AT_BASE) + val = (long)interp.base; + if (key == AT_FLAGS) + val = 0; + if (key == AT_ENTRY) + val = (long)prog.entry; + if (key == AT_EXECFN) + val = (long)program_invocation_name; *--sp = val; *--sp = key; } @@ -497,11 +513,13 @@ static void *foreign_thunk_sysv(void *func) { uint8_t *code, *p; #ifdef __x86_64__ // it is no longer needed - if (1) return func; + if (1) + return func; // movabs $func,%rax // movabs $foreign_tramp,%r10 // jmp *%r10 - if (!(p = code = foreign_alloc(23))) return 0; // 10 + 10 + 3 = 23 + if (!(p = code = foreign_alloc(23))) + return 0; // 10 + 10 + 3 = 23 p = movimm(p, 0, (uintptr_t)func); p = movimm(p, 10, (uintptr_t)foreign_tramp); *p++ = 0x41; @@ -524,7 +542,8 @@ static void *foreign_thunk_sysv(void *func) { static void *foreign_thunk_nt(void *func) { uint8_t *code; - if (!(code = foreign_alloc(27))) return 0; + if (!(code = foreign_alloc(27))) + return 0; // push %rbp code[0] = 0x55; // mov %rsp,%rbp diff --git a/libc/elf/getelfprogramheaderaddress.c b/libc/elf/getelfprogramheaderaddress.c index f2397ced0..10f42aff9 100644 --- a/libc/elf/getelfprogramheaderaddress.c +++ b/libc/elf/getelfprogramheaderaddress.c @@ -32,10 +32,15 @@ Elf64_Phdr *GetElfProgramHeaderAddress(const Elf64_Ehdr *elf, // size_t mapsize, // Elf64_Half i) { // Elf64_Off off; - if (i >= elf->e_phnum) return 0; - if (elf->e_phoff <= 0) return 0; - if (elf->e_phoff >= mapsize) return 0; - if (elf->e_phentsize < sizeof(Elf64_Phdr)) return 0; - if ((off = elf->e_phoff + (unsigned)i * elf->e_phentsize) > mapsize) return 0; + if (i >= elf->e_phnum) + return 0; + if (elf->e_phoff <= 0) + return 0; + if (elf->e_phoff >= mapsize) + return 0; + if (elf->e_phentsize < sizeof(Elf64_Phdr)) + return 0; + if ((off = elf->e_phoff + (unsigned)i * elf->e_phentsize) > mapsize) + return 0; return (Elf64_Phdr *)((char *)elf + off); } diff --git a/libc/elf/getelfsectionaddress.c b/libc/elf/getelfsectionaddress.c index 3d1fc4a61..b84e9c316 100644 --- a/libc/elf/getelfsectionaddress.c +++ b/libc/elf/getelfsectionaddress.c @@ -38,10 +38,15 @@ void *GetElfSectionAddress(const Elf64_Ehdr *elf, // validated size_t mapsize, // validated const Elf64_Shdr *shdr) { // foreign Elf64_Off last; - if (!shdr) return 0; - if (!shdr->sh_size) return (void *)elf; - if (shdr->sh_type == SHT_NOBITS) return 0; - if (ckd_add(&last, shdr->sh_offset, shdr->sh_size)) return 0; - if (last > mapsize) return 0; + if (!shdr) + return 0; + if (!shdr->sh_size) + return (void *)elf; + if (shdr->sh_type == SHT_NOBITS) + return 0; + if (ckd_add(&last, shdr->sh_offset, shdr->sh_size)) + return 0; + if (last > mapsize) + return 0; return (char *)elf + shdr->sh_offset; } diff --git a/libc/elf/getelfsectionheaderaddress.c b/libc/elf/getelfsectionheaderaddress.c index 2a2207e13..60b6034a2 100644 --- a/libc/elf/getelfsectionheaderaddress.c +++ b/libc/elf/getelfsectionheaderaddress.c @@ -38,11 +38,17 @@ Elf64_Shdr *GetElfSectionHeaderAddress(const Elf64_Ehdr *elf, // size_t mapsize, // Elf64_Half i) { // Elf64_Off off; - if (i >= SHN_LORESERVE) return 0; - if (i >= elf->e_shnum) return 0; - if (elf->e_shoff <= 0) return 0; - if (elf->e_shoff >= mapsize) return 0; - if (elf->e_shentsize < sizeof(Elf64_Shdr)) return 0; - if ((off = elf->e_shoff + (unsigned)i * elf->e_shentsize) > mapsize) return 0; + if (i >= SHN_LORESERVE) + return 0; + if (i >= elf->e_shnum) + return 0; + if (elf->e_shoff <= 0) + return 0; + if (elf->e_shoff >= mapsize) + return 0; + if (elf->e_shentsize < sizeof(Elf64_Shdr)) + return 0; + if ((off = elf->e_shoff + (unsigned)i * elf->e_shentsize) > mapsize) + return 0; return (Elf64_Shdr *)((char *)elf + off); } diff --git a/libc/elf/getelfsectionname.c b/libc/elf/getelfsectionname.c index ab1d201b8..dd9c06faf 100644 --- a/libc/elf/getelfsectionname.c +++ b/libc/elf/getelfsectionname.c @@ -20,7 +20,8 @@ char *GetElfSectionName(const Elf64_Ehdr *elf, size_t mapsize, const Elf64_Shdr *shdr) { - if (!shdr) return 0; + if (!shdr) + return 0; return GetElfString(elf, mapsize, GetElfSectionNameStringTable(elf, mapsize), shdr->sh_name); } diff --git a/libc/elf/getelfsegmentaddress.c b/libc/elf/getelfsegmentaddress.c index 210d29a4f..2d7944010 100644 --- a/libc/elf/getelfsegmentaddress.c +++ b/libc/elf/getelfsegmentaddress.c @@ -40,9 +40,13 @@ void *GetElfSegmentAddress(const Elf64_Ehdr *elf, // validated size_t mapsize, // validated const Elf64_Phdr *phdr) { // foreign Elf64_Off last; - if (!phdr) return 0; - if (phdr->p_filesz <= 0) return 0; - if (ckd_add(&last, phdr->p_offset, phdr->p_filesz)) return 0; - if (last > mapsize) return 0; + if (!phdr) + return 0; + if (phdr->p_filesz <= 0) + return 0; + if (ckd_add(&last, phdr->p_offset, phdr->p_filesz)) + return 0; + if (last > mapsize) + return 0; return (char *)elf + phdr->p_offset; } diff --git a/libc/elf/getelfstring.c b/libc/elf/getelfstring.c index 06c615988..78de4aec1 100644 --- a/libc/elf/getelfstring.c +++ b/libc/elf/getelfstring.c @@ -44,11 +44,16 @@ char *GetElfString(const Elf64_Ehdr *elf, // validated const char *strtab, // validated Elf64_Word i) { // foreign const char *e; - if (!i) return ""; + if (!i) + return ""; e = (const char *)elf; - if (!strtab) return 0; - if (i >= mapsize) return 0; - if (strtab + i >= e + mapsize) return 0; - if (!memchr(strtab + i, 0, (e + mapsize) - (strtab + i))) return 0; + if (!strtab) + return 0; + if (i >= mapsize) + return 0; + if (strtab + i >= e + mapsize) + return 0; + if (!memchr(strtab + i, 0, (e + mapsize) - (strtab + i))) + return 0; return (char *)strtab + i; } diff --git a/libc/elf/iself64binary.c b/libc/elf/iself64binary.c index ad5a77f38..6f896e119 100644 --- a/libc/elf/iself64binary.c +++ b/libc/elf/iself64binary.c @@ -29,7 +29,9 @@ * @return true if elf header looks legit */ bool32 IsElf64Binary(const Elf64_Ehdr *elf, size_t mapsize) { - if (mapsize < sizeof(Elf64_Ehdr)) return false; - if (READ32LE(elf->e_ident) != READ32LE(ELFMAG)) return false; + if (mapsize < sizeof(Elf64_Ehdr)) + return false; + if (READ32LE(elf->e_ident) != READ32LE(ELFMAG)) + return false; return elf->e_ident[EI_CLASS] != ELFCLASS32; } diff --git a/libc/fmt/atoi.c b/libc/fmt/atoi.c index 9030bf468..bca5be980 100644 --- a/libc/fmt/atoi.c +++ b/libc/fmt/atoi.c @@ -31,10 +31,12 @@ */ int atoi(const char *nptr) { int x, c, d; - do c = *nptr++; + do + c = *nptr++; while (isspace(c)); d = c == '-' ? -1 : 1; - if (c == '-' || c == '+') c = *nptr++; + if (c == '-' || c == '+') + c = *nptr++; for (x = 0; isdigit(c); c = *nptr++) { x *= 10; x += (c - '0') * d; diff --git a/libc/fmt/atol.c b/libc/fmt/atol.c index 8102c3228..5bce5bcac 100644 --- a/libc/fmt/atol.c +++ b/libc/fmt/atol.c @@ -32,10 +32,12 @@ long atol(const char *nptr) { long x; int c, d; - do c = *nptr++; + do + c = *nptr++; while (isspace(c)); d = c == '-' ? -1 : 1; - if (c == '-' || c == '+') c = *nptr++; + if (c == '-' || c == '+') + c = *nptr++; for (x = 0; isdigit(c); c = *nptr++) { x *= 10; x += (c - '0') * d; diff --git a/libc/fmt/dirname.c b/libc/fmt/dirname.c index d8d001320..8daf49c34 100644 --- a/libc/fmt/dirname.c +++ b/libc/fmt/dirname.c @@ -41,13 +41,16 @@ char *dirname(char *path) { if (path && *path) { i = strlen(path) - 1; for (; path[i] == '/'; i--) { - if (!i) return "/"; + if (!i) + return "/"; } for (; path[i] != '/'; i--) { - if (!i) return "."; + if (!i) + return "."; } for (; path[i] == '/'; i--) { - if (!i) return "/"; + if (!i) + return "/"; } path[i + 1] = 0; return path; diff --git a/libc/fmt/formatbinary64.c b/libc/fmt/formatbinary64.c index 70b316856..616383167 100644 --- a/libc/fmt/formatbinary64.c +++ b/libc/fmt/formatbinary64.c @@ -21,11 +21,14 @@ static inline int PickGoodWidth(unsigned x) { if (x < 16) { - if (x < 2) return 1; - if (x < 8) return 7; + if (x < 2) + return 1; + if (x < 8) + return 7; return 15; } else { - if (x < 32) return 31; + if (x < 32) + return 31; return 63; } } diff --git a/libc/fmt/formatint64thousands.c b/libc/fmt/formatint64thousands.c index 9b20451dd..86e9c9c93 100644 --- a/libc/fmt/formatint64thousands.c +++ b/libc/fmt/formatint64thousands.c @@ -34,8 +34,10 @@ dontinline char *FormatUint64Thousands(char p[static 27], uint64_t x) { } while (x); for (;;) { *p++ = m[--i]; - if (!i) break; - if (!(i % 3)) *p++ = ','; + if (!i) + break; + if (!(i % 3)) + *p++ = ','; } *p = '\0'; return p; @@ -48,6 +50,7 @@ dontinline char *FormatUint64Thousands(char p[static 27], uint64_t x) { * @return pointer to nul byte */ char *FormatInt64Thousands(char p[static 27], int64_t x) { - if (x < 0) *p++ = '-', x = -(uint64_t)x; + if (x < 0) + *p++ = '-', x = -(uint64_t)x; return FormatUint64Thousands(p, x); } diff --git a/libc/fmt/formatoctal64.c b/libc/fmt/formatoctal64.c index 53a513118..75627613a 100644 --- a/libc/fmt/formatoctal64.c +++ b/libc/fmt/formatoctal64.c @@ -34,7 +34,8 @@ char *FormatOctal64(char p[hasatleast 24], uint64_t x, bool32 z) { p[i++] = x % 8 + '0'; x = x / 8; } while (x > 0); - if (z) p[i++] = '0'; + if (z) + p[i++] = '0'; p[i] = '\0'; if (i) { for (a = 0, b = i - 1; a < b; ++a, --b) { diff --git a/libc/fmt/itoa64fixed16.greg.c b/libc/fmt/itoa64fixed16.greg.c index 4342d35a1..92988023b 100644 --- a/libc/fmt/itoa64fixed16.greg.c +++ b/libc/fmt/itoa64fixed16.greg.c @@ -22,7 +22,8 @@ size_t uint64toarray_fixed16(uint64_t x, char b[hasatleast 17], uint8_t k) { char *p; unassert(k <= 64 && !(k & 3)); - for (p = b; k > 0;) *p++ = "0123456789abcdef"[(x >> (k -= 4)) & 15]; + for (p = b; k > 0;) + *p++ = "0123456789abcdef"[(x >> (k -= 4)) & 15]; *p = '\0'; return p - b; } diff --git a/libc/fmt/sizetol.c b/libc/fmt/sizetol.c index 2f632ed38..e1828fc9d 100644 --- a/libc/fmt/sizetol.c +++ b/libc/fmt/sizetol.c @@ -83,7 +83,8 @@ long sizetol(const char *s, long b) { c = *s++; } while (c == ' ' || c == '\t'); d = c == '-' ? -1 : 1; - if (c == '-' || c == '+') c = *s++; + if (c == '-' || c == '+') + c = *s++; if (!isdigit(c)) { return einval(); } diff --git a/libc/fmt/unbing.c b/libc/fmt/unbing.c index 235d73411..ddee8e828 100644 --- a/libc/fmt/unbing.c +++ b/libc/fmt/unbing.c @@ -216,7 +216,8 @@ static const int kCp437i[] = { */ int unbing(int c) { int m, l, r; - if (32 <= c && c < 127) return c; + if (32 <= c && c < 127) + return c; l = 0; r = ARRAYLEN(kCp437i) - 1; while (l <= r) { diff --git a/libc/fmt/unzleb64.c b/libc/fmt/unzleb64.c index 1bb485b30..edc7c71c7 100644 --- a/libc/fmt/unzleb64.c +++ b/libc/fmt/unzleb64.c @@ -46,7 +46,8 @@ int unzleb64(const char *p, size_t n, int64_t *o) { i = 0; u = 0; do { - if (i == n) return -1; + if (i == n) + return -1; c = p[i] & 255; t = c & 127; if (i < 10) { @@ -55,6 +56,7 @@ int unzleb64(const char *p, size_t n, int64_t *o) { } ++i; } while (c & 128); - if (o) *o = (u >> 1) ^ -(u & 1); + if (o) + *o = (u >> 1) ^ -(u & 1); return i; } diff --git a/libc/intrin/__getenv.c b/libc/intrin/__getenv.c index 878213cbb..b94d09798 100644 --- a/libc/intrin/__getenv.c +++ b/libc/intrin/__getenv.c @@ -26,8 +26,10 @@ privileged struct Env __getenv(char **p, const char *k) { for (i = 0; (t = p[i]); ++i) { for (j = 0;; ++j) { if (!k[j] || k[j] == '=') { - if (!t[j]) return (struct Env){t + j, i}; - if (t[j] == '=') return (struct Env){t + j + 1, i}; + if (!t[j]) + return (struct Env){t + j, i}; + if (t[j] == '=') + return (struct Env){t + j + 1, i}; break; } if (k[j] != t[j]) { diff --git a/libc/intrin/asan.c b/libc/intrin/asan.c index dc28ff4aa..c472997b9 100644 --- a/libc/intrin/asan.c +++ b/libc/intrin/asan.c @@ -204,7 +204,8 @@ static uint64_t __asan_roundup2pow(uint64_t x) { static char *__asan_utf8cpy(char *p, unsigned c) { uint64_t z; z = tpenc(c); - do *p++ = z; + do + *p++ = z; while ((z >>= 8)); return p; } @@ -267,7 +268,8 @@ void __asan_memset(void *p, char c, size_t n) { asm volatile("" ::: "memory"); __builtin_memcpy(b + i + 8, &x, 8); } while ((i += 16) + 16 <= n); - for (; i < n; ++i) b[i] = x; + for (; i < n; ++i) + b[i] = x; break; } } @@ -331,7 +333,8 @@ static void *__asan_mempcpy(void *dst, const void *src, size_t n) { asm volatile("" ::: "memory"); __builtin_memcpy(d + i, &a, 8); } while ((i += 8) + 8 <= n); - for (; i < n; ++i) d[i] = s[i]; + for (; i < n; ++i) + d[i] = s[i]; return d + i; } } @@ -342,7 +345,8 @@ void *__asan_memcpy(void *dst, const void *src, size_t n) { } static char *__asan_hexcpy(char *p, uint64_t x, uint8_t k) { - while (k) *p++ = "0123456789abcdef"[(x >> (k -= 4)) & 15]; + while (k) + *p++ = "0123456789abcdef"[(x >> (k -= 4)) & 15]; return p; } @@ -371,14 +375,16 @@ void __asan_poison(void *p, long n, signed char t) { signed char k, *s; s = (signed char *)(((intptr_t)p >> 3) + 0x7fff8000); if ((k = (intptr_t)p & 7)) { - if ((!*s && n >= 8 - k) || *s > k) *s = k; + if ((!*s && n >= 8 - k) || *s > k) + *s = k; n -= MIN(8 - k, n); s += 1; } __asan_memset(s, t, n >> 3); if ((k = n & 7)) { s += n >> 3; - if (*s < 0 || (*s > 0 && *s <= k)) *s = t; + if (*s < 0 || (*s > 0 && *s <= k)) + *s = t; } } @@ -388,7 +394,8 @@ void __asan_unpoison(void *p, long n) { s = (signed char *)(((intptr_t)p >> 3) + 0x7fff8000); if (UNLIKELY(k)) { if (k + n < 8) { - if (n > 0) *s = MAX(*s, k + n); + if (n > 0) + *s = MAX(*s, k + n); return; } n -= MIN(8 - k, n); @@ -397,8 +404,10 @@ void __asan_unpoison(void *p, long n) { __asan_memset(s, 0, n >> 3); if ((k = n & 7)) { s += n >> 3; - if (*s < 0) *s = k; - if (*s > 0) *s = MAX(*s, k); + if (*s < 0) + *s = k; + if (*s > 0) + *s = MAX(*s, k); } } @@ -438,7 +447,8 @@ static struct AsanFault __asan_checka(const signed char *s, long ndiv8) { uint64_t w; const signed char *e = s + ndiv8; for (; ((intptr_t)s & 7) && s < e; ++s) { - if (*s) return __asan_fault(s - 1, kAsanHeapOverrun); + if (*s) + return __asan_fault(s - 1, kAsanHeapOverrun); } for (; s + 8 <= e; s += 8) { if (UNLIKELY(!((intptr_t)s & (FRAMESIZE - 1))) && kisdangerous(s)) { @@ -450,7 +460,8 @@ static struct AsanFault __asan_checka(const signed char *s, long ndiv8) { } } for (; s < e; ++s) { - if (*s) return __asan_fault(s - 1, kAsanHeapOverrun); + if (*s) + return __asan_fault(s - 1, kAsanHeapOverrun); } return (struct AsanFault){0}; } @@ -586,9 +597,12 @@ bool __asan_is_valid_str(const char *p) { */ bool __asan_is_valid_strlist(char *const *p) { for (;; ++p) { - if (!__asan_is_valid(p, sizeof(char *))) return false; - if (!*p) return true; - if (!__asan_is_valid_str(*p)) return false; + if (!__asan_is_valid(p, sizeof(char *))) + return false; + if (!*p) + return true; + if (!__asan_is_valid_str(*p)) + return false; } } @@ -877,7 +891,8 @@ static __wur __asan_die_f *__asan_report(const void *addr, int size, } *p++ = '\e', *p++ = '[', *p++ = '3', *p++ = '9', *p++ = 'm'; *p++ = '\n'; - for (i = 0; (intptr_t)(base + i) & 7; ++i) *p++ = ' '; + for (i = 0; (intptr_t)(base + i) & 7; ++i) + *p++ = ' '; for (; i + 8 <= 80; i += 8) { q = p + 8; *p++ = '|'; @@ -891,7 +906,8 @@ static __wur __asan_die_f *__asan_report(const void *addr, int size, *p++ = ' '; } } - for (; i < 80; ++i) *p++ = ' '; + for (; i < 80; ++i) + *p++ = ' '; *p++ = '\n'; for (i = 0; i < 80; ++i) { p = __asan_utf8cpy(p, __asan_exists(base + i) @@ -909,9 +925,11 @@ static __wur __asan_die_f *__asan_report(const void *addr, int size, y = m->p[i].y; p = __asan_format_interval(p, x << 16, (y << 16) + (FRAMESIZE - 1)); z = (intptr_t)addr >> 16; - if (x <= z && z <= y) p = __asan_stpcpy(p, " ←address"); + if (x <= z && z <= y) + p = __asan_stpcpy(p, " ←address"); z = (((intptr_t)addr >> 3) + 0x7fff8000) >> 16; - if (x <= z && z <= y) p = __asan_stpcpy(p, " ←shadow"); + if (x <= z && z <= y) + p = __asan_stpcpy(p, " ←shadow"); *p++ = '\n'; } __mmi_unlock(); @@ -937,13 +955,15 @@ static wontreturn void __asan_verify_failed(const void *p, size_t n, void __asan_verify(const void *p, size_t n) { struct AsanFault f; - if (!(f = __asan_check(p, n)).kind) return; + if (!(f = __asan_check(p, n)).kind) + return; __asan_verify_failed(p, n, f); } void __asan_verify_str(const char *p) { struct AsanFault f; - if (!(f = __asan_check_str(p)).kind) return; + if (!(f = __asan_check_str(p)).kind) + return; __asan_verify_failed(UNSHADOW(f.shadow), 8, f); } @@ -998,7 +1018,8 @@ static bool __asan_read48(uint64_t value, uint64_t *x) { static void __asan_rawtrace(struct AsanTrace *bt, const struct StackFrame *bp) { size_t i; for (i = 0; bp && i < ARRAYLEN(bt->p); ++i, bp = bp->next) { - if (kisdangerous(bp)) break; + if (kisdangerous(bp)) + break; bt->p[i] = bp->addr; } for (; i < ARRAYLEN(bt->p); ++i) { @@ -1015,14 +1036,16 @@ static void __asan_trace(struct AsanTrace *bt, const struct StackFrame *bp) { gi = garbage ? garbage->i : 0; for (f1 = -1, i = 0; bp && i < ARRAYLEN(bt->p); ++i, bp = bp->next) { if (f1 != (f2 = ((intptr_t)bp >> 16))) { - if (kisdangerous(bp)) break; + if (kisdangerous(bp)) + break; f1 = f2; } if (!__asan_checka(SHADOW(bp), sizeof(*bp) >> 3).kind) { addr = bp->addr; #ifdef __x86_64__ if (addr == (uintptr_t)_weaken(__gc) && (uintptr_t)_weaken(__gc)) { - do --gi; + do + --gi; while ((addr = garbage->p[gi].ret) == (uintptr_t)_weaken(__gc)); } #endif @@ -1129,13 +1152,19 @@ int __asan_is_leaky(void *p) { intptr_t f, *l; struct AsanExtra *e; struct SymbolTable *st; - if (!_weaken(GetSymbolTable)) notpossible; - if (!(e = __asan_get_extra(p, &c))) return 0; - if (!__asan_read48(e->size, &n)) return 0; - if (!__asan_is_mapped((((intptr_t)p >> 3) + 0x7fff8000) >> 16)) return 0; - if (!(st = GetSymbolTable())) return 0; + if (!_weaken(GetSymbolTable)) + notpossible; + if (!(e = __asan_get_extra(p, &c))) + return 0; + if (!__asan_read48(e->size, &n)) + return 0; + if (!__asan_is_mapped((((intptr_t)p >> 3) + 0x7fff8000) >> 16)) + return 0; + if (!(st = GetSymbolTable())) + return 0; for (i = 0; i < ARRAYLEN(e->bt.p) && e->bt.p[i]; ++i) { - if ((sym = _weaken(__get_symbol)(st, e->bt.p[i])) == -1) continue; + if ((sym = _weaken(__get_symbol)(st, e->bt.p[i])) == -1) + continue; f = st->addr_base + st->symbols[sym].x; for (l = _leaky_start; l < _leaky_end; ++l) { if (f == *l) { @@ -1167,7 +1196,8 @@ static void __asan_deallocate(char *p, long kind) { } void __asan_free(void *p) { - if (!p) return; + if (!p) + return; __asan_deallocate(p, kAsanHeapFree); } @@ -1236,7 +1266,8 @@ void *__asan_memalign(size_t align, size_t size) { void *__asan_calloc(size_t n, size_t m) { struct AsanTrace bt; __asan_trace(&bt, RBP); - if (ckd_mul(&n, n, m)) n = -1; + if (ckd_mul(&n, n, m)) + n = -1; return __asan_allocate(16, n, &bt, kAsanHeapUnderrun, kAsanHeapOverrun, 0x00); } @@ -1342,7 +1373,8 @@ void __asan_alloca_poison(char *addr, uintptr_t size) { void __asan_allocas_unpoison(uintptr_t x, uintptr_t y) { ASAN_LOG("__asan_allocas_unpoison(%p, %p)\n", x, y); - if (!x || x > y) return; + if (!x || x > y) + return; __asan_unpoison((char *)x, y - x); } @@ -1455,7 +1487,8 @@ static textstartup void __asan_shadow_existing_mappings(void) { static size_t __asan_strlen(const char *s) { size_t i = 0; - while (s[i]) ++i; + while (s[i]) + ++i; return i; } @@ -1465,7 +1498,8 @@ forceinline ssize_t __write_str(const char *s) { void __asan_init(int argc, char **argv, char **envp, unsigned long *auxv) { static bool once; - if (!_cmpxchg(&once, false, true)) return; + if (!_cmpxchg(&once, false, true)) + return; if (IsWindows() && NtGetVersion() < kNtVersionWindows10) { __write_str("error: asan binaries require windows10\r\n"); _Exit(0); /* So `make MODE=dbg test` passes w/ Windows7 */ diff --git a/libc/intrin/createdirectory.c b/libc/intrin/createdirectory.c index 2f3ab0273..e0e787859 100644 --- a/libc/intrin/createdirectory.c +++ b/libc/intrin/createdirectory.c @@ -34,7 +34,8 @@ textwindows bool32 CreateDirectory(const char16_t *lpPathName, const struct NtSecurityAttributes *lpSec) { bool32 ok; ok = __imp_CreateDirectoryW(lpPathName, lpSec); - if (!ok) __winerr(); + if (!ok) + __winerr(); NTTRACE("CreateDirectory(%#hs, %s) → %hhhd% m", lpPathName, DescribeNtSecurityAttributes(lpSec), ok); return ok; diff --git a/libc/intrin/createfile.c b/libc/intrin/createfile.c index d3ca94bc4..594329c64 100644 --- a/libc/intrin/createfile.c +++ b/libc/intrin/createfile.c @@ -66,8 +66,10 @@ TryAgain: if (hHandle == -1) { switch (__imp_GetLastError()) { case kNtErrorPipeBusy: - if (micros >= 1024) __imp_Sleep(micros / 1024); - if (micros < 1024 * 1024) micros <<= 1; + if (micros >= 1024) + __imp_Sleep(micros / 1024); + if (micros < 1024 * 1024) + micros <<= 1; goto TryAgain; case kNtErrorAccessDenied: // GetNtOpenFlags() always greedily requests execute permissions diff --git a/libc/intrin/createfilemapping.c b/libc/intrin/createfilemapping.c index 25713b707..147793ec7 100644 --- a/libc/intrin/createfilemapping.c +++ b/libc/intrin/createfilemapping.c @@ -42,7 +42,8 @@ textwindows int64_t CreateFileMapping( hHandle = __imp_CreateFileMappingW(opt_hFile, opt_lpFileMappingAttributes, flProtect, dwMaximumSizeHigh, dwMaximumSizeLow, opt_lpName); - if (!hHandle) __winerr(); + if (!hHandle) + __winerr(); NTTRACE("CreateFileMapping(%ld, %s, %s, %'zu, %#hs) → %ld% m", opt_hFile, DescribeNtSecurityAttributes(opt_lpFileMappingAttributes), DescribeNtPageFlags(flProtect), diff --git a/libc/intrin/createfilemappingnuma.c b/libc/intrin/createfilemappingnuma.c index d96235f84..a99653617 100644 --- a/libc/intrin/createfilemappingnuma.c +++ b/libc/intrin/createfilemappingnuma.c @@ -43,7 +43,8 @@ textwindows int64_t CreateFileMappingNuma( hHandle = __imp_CreateFileMappingNumaW( opt_hFile, opt_lpFileMappingAttributes, flProtect, dwMaximumSizeHigh, dwMaximumSizeLow, opt_lpName, nndDesiredNumaNode); - if (!hHandle) __winerr(); + if (!hHandle) + __winerr(); NTTRACE("CreateFileMappingNuma(%ld, %s, %s, %'zu, %#hs) → %ld% m", opt_hFile, DescribeNtSecurityAttributes(opt_lpFileMappingAttributes), DescribeNtPageFlags(flProtect), diff --git a/libc/intrin/createnamedpipe.c b/libc/intrin/createnamedpipe.c index 2133fe2f7..2bb67417a 100644 --- a/libc/intrin/createnamedpipe.c +++ b/libc/intrin/createnamedpipe.c @@ -49,11 +49,14 @@ TryAgain: nMaxInstances, nOutBufferSize, nInBufferSize, nDefaultTimeOutMs, opt_lpSecurityAttributes); if (hServer == -1 && __imp_GetLastError() == kNtErrorPipeBusy) { - if (micros >= 1024) __imp_Sleep(micros / 1024); - if (micros < 1024 * 1024) micros <<= 1; + if (micros >= 1024) + __imp_Sleep(micros / 1024); + if (micros < 1024 * 1024) + micros <<= 1; goto TryAgain; } - if (hServer == -1) __winerr(); + if (hServer == -1) + __winerr(); NTTRACE("CreateNamedPipe(%#hs, %s, %s, %u, %'u, %'u, %'u, %s) → %ld% m", lpName, DescribeNtPipeOpenFlags(dwOpenMode), DescribeNtPipeModeFlags(dwPipeMode), nMaxInstances, nOutBufferSize, diff --git a/libc/intrin/createpipe.c b/libc/intrin/createpipe.c index 71f992ec6..7d6e9df1e 100644 --- a/libc/intrin/createpipe.c +++ b/libc/intrin/createpipe.c @@ -35,7 +35,8 @@ textwindows bool32 CreatePipe( bool32 ok; ok = __imp_CreatePipe(out_hReadPipe, out_hWritePipe, opt_lpPipeAttributes, nSize); - if (!ok) __winerr(); + if (!ok) + __winerr(); NTTRACE("CreatePipe([%ld], [%ld], %s, %'zu) → %hhhd% m", *out_hReadPipe, *out_hWritePipe, DescribeNtSecurityAttributes(opt_lpPipeAttributes), nSize, ok); diff --git a/libc/intrin/createprocess.c b/libc/intrin/createprocess.c index 73b2a0de4..4205b5bcd 100644 --- a/libc/intrin/createprocess.c +++ b/libc/intrin/createprocess.c @@ -44,7 +44,8 @@ CreateProcess(const char16_t *opt_lpApplicationName, char16_t *lpCommandLine, bInheritHandles, dwCreationFlags, opt_lpEnvironment, opt_lpCurrentDirectory, lpStartupInfo, opt_out_lpProcessInformation); - if (!ok) __winerr(); + if (!ok) + __winerr(); NTTRACE("CreateProcess(%#!hs, %#!hs, %s, %s, %hhhd, %u, %p, %#!hs, %p, %p) → " "%hhhd% m", opt_lpApplicationName, lpCommandLine, diff --git a/libc/intrin/createsymboliclink.c b/libc/intrin/createsymboliclink.c index 59b317a1e..663753b13 100644 --- a/libc/intrin/createsymboliclink.c +++ b/libc/intrin/createsymboliclink.c @@ -32,7 +32,8 @@ bool32 CreateSymbolicLink(const char16_t *lpSymlinkFileName, const char16_t *lpTargetPathName, uint32_t dwFlags) { bool32 ok; ok = __imp_CreateSymbolicLinkW(lpSymlinkFileName, lpTargetPathName, dwFlags); - if (!ok) __winerr(); + if (!ok) + __winerr(); NTTRACE("CreateSymbolicLink(%#hs, %#hs, %s) → %hhhd% m", lpSymlinkFileName, lpTargetPathName, DescribeNtSymlinkFlags(dwFlags), ok); return ok; diff --git a/libc/intrin/cxaatexit.c b/libc/intrin/cxaatexit.c index 706e4af52..a5b001162 100644 --- a/libc/intrin/cxaatexit.c +++ b/libc/intrin/cxaatexit.c @@ -47,7 +47,8 @@ int __cxa_atexit(void *fp, void *arg, void *pred) { struct CxaAtexitBlock *b, *b2; __cxa_lock(); b = __cxa_blocks.p; - if (!b) b = __cxa_blocks.p = &__cxa_blocks.root; + if (!b) + b = __cxa_blocks.p = &__cxa_blocks.root; if (!~b->mask) { if (_weaken(calloc) && (b2 = _weaken(calloc)(1, sizeof(struct CxaAtexitBlock)))) { diff --git a/libc/intrin/deletefile.c b/libc/intrin/deletefile.c index 1b8aca8a2..1fd3b54ed 100644 --- a/libc/intrin/deletefile.c +++ b/libc/intrin/deletefile.c @@ -30,7 +30,8 @@ __msabi extern typeof(DeleteFile) *const __imp_DeleteFileW; textwindows bool32 DeleteFile(const char16_t *lpPathName) { bool32 ok; ok = __imp_DeleteFileW(lpPathName); - if (!ok) __winerr(); + if (!ok) + __winerr(); NTTRACE("DeleteFile(%#hs) → %hhhd% m", lpPathName, ok); return ok; } diff --git a/libc/intrin/describearchprctlcode.c b/libc/intrin/describearchprctlcode.c index a5c026321..57ad37830 100644 --- a/libc/intrin/describearchprctlcode.c +++ b/libc/intrin/describearchprctlcode.c @@ -22,10 +22,14 @@ #include "libc/sysv/consts/arch.h" const char *(DescribeArchPrctlCode)(char buf[12], int x) { - if (x == ARCH_SET_FS) return "ARCH_SET_FS"; - if (x == ARCH_GET_FS) return "ARCH_GET_FS"; - if (x == ARCH_SET_GS) return "ARCH_SET_GS"; - if (x == ARCH_GET_GS) return "ARCH_GET_GS"; + if (x == ARCH_SET_FS) + return "ARCH_SET_FS"; + if (x == ARCH_GET_FS) + return "ARCH_GET_FS"; + if (x == ARCH_SET_GS) + return "ARCH_SET_GS"; + if (x == ARCH_GET_GS) + return "ARCH_GET_GS"; FormatInt32(buf, x); return buf; } diff --git a/libc/intrin/describecancelstate.c b/libc/intrin/describecancelstate.c index 4750a9810..b6ef58702 100644 --- a/libc/intrin/describecancelstate.c +++ b/libc/intrin/describecancelstate.c @@ -21,11 +21,16 @@ #include "libc/thread/thread.h" const char *(DescribeCancelState)(char buf[12], int err, int *state) { - if (err) return "n/a"; - if (!state) return "NULL"; - if (*state == PTHREAD_CANCEL_ENABLE) return "PTHREAD_CANCEL_ENABLE"; - if (*state == PTHREAD_CANCEL_DISABLE) return "PTHREAD_CANCEL_DISABLE"; - if (*state == PTHREAD_CANCEL_MASKED) return "PTHREAD_CANCEL_MASKED"; + if (err) + return "n/a"; + if (!state) + return "NULL"; + if (*state == PTHREAD_CANCEL_ENABLE) + return "PTHREAD_CANCEL_ENABLE"; + if (*state == PTHREAD_CANCEL_DISABLE) + return "PTHREAD_CANCEL_DISABLE"; + if (*state == PTHREAD_CANCEL_MASKED) + return "PTHREAD_CANCEL_MASKED"; FormatInt32(buf, *state); return buf; } diff --git a/libc/intrin/describedirfd.c b/libc/intrin/describedirfd.c index 36f0c6991..a769f1225 100644 --- a/libc/intrin/describedirfd.c +++ b/libc/intrin/describedirfd.c @@ -21,7 +21,8 @@ #include "libc/sysv/consts/at.h" const char *(DescribeDirfd)(char buf[12], int dirfd) { - if (dirfd == AT_FDCWD) return "AT_FDCWD"; + if (dirfd == AT_FDCWD) + return "AT_FDCWD"; FormatInt32(buf, dirfd); return buf; } diff --git a/libc/intrin/describefdset.c b/libc/intrin/describefdset.c index 751652c1e..338121b2e 100644 --- a/libc/intrin/describefdset.c +++ b/libc/intrin/describefdset.c @@ -30,7 +30,8 @@ const char *(DescribeFdSet)(char buf[N], ssize_t rc, int nfds, fd_set *fds) { int o = 0; - if (!fds) return "NULL"; + if (!fds) + return "NULL"; if ((!IsAsan() && kisdangerous(fds)) || (IsAsan() && !__asan_is_valid(fds, sizeof(*fds) * nfds))) { ksnprintf(buf, N, "%p", fds); diff --git a/libc/intrin/describeflags.c b/libc/intrin/describeflags.c index f023a8f6e..cb316b244 100644 --- a/libc/intrin/describeflags.c +++ b/libc/intrin/describeflags.c @@ -27,32 +27,41 @@ const char *DescribeFlags(char *p, size_t n, const struct DescribeFlags *d, if (d[j].flag && d[j].flag != -1 && (x & d[j].flag) == d[j].flag) { x &= ~d[j].flag; if (t) { - if (i + 1 < n) p[i++] = '|'; + if (i + 1 < n) + p[i++] = '|'; } else { t = true; } for (k = 0; prefix && prefix[k]; ++k) { - if (i + 1 < n) p[i++] = prefix[k]; + if (i + 1 < n) + p[i++] = prefix[k]; } for (k = 0; d[j].name[k]; ++k) { - if (i + 1 < n) p[i++] = d[j].name[k]; + if (i + 1 < n) + p[i++] = d[j].name[k]; } } } if (x || !t) { - if (t && i + 1 < n) p[i++] = '|'; - if (i + 1 < n) p[i++] = '0'; + if (t && i + 1 < n) + p[i++] = '|'; + if (i + 1 < n) + p[i++] = '0'; if (x) { - if (i + 1 < n) p[i++] = 'x'; + if (i + 1 < n) + p[i++] = 'x'; k = 0; do { - if (i + 1 < n) b[k++] = "0123456789abcdef"[x % 16]; + if (i + 1 < n) + b[k++] = "0123456789abcdef"[x % 16]; } while ((x /= 16)); while (k--) { - if (i + 1 < n) p[i++] = b[k]; + if (i + 1 < n) + p[i++] = b[k]; } } } - if (i < n) p[i] = 0; + if (i < n) + p[i] = 0; return p; } diff --git a/libc/intrin/describeflock.c b/libc/intrin/describeflock.c index 9beee488b..83aea89bf 100644 --- a/libc/intrin/describeflock.c +++ b/libc/intrin/describeflock.c @@ -31,7 +31,8 @@ const char *(DescribeFlock)(char buf[N], int cmd, const struct flock *l) { int o = 0; - if (!l) return "NULL"; + if (!l) + return "NULL"; if ((!IsAsan() && kisdangerous(l)) || (IsAsan() && !__asan_is_valid(l, sizeof(*l)))) { ksnprintf(buf, N, "%p", l); diff --git a/libc/intrin/describeflocktype.c b/libc/intrin/describeflocktype.c index 22cb9cc70..67c13a024 100644 --- a/libc/intrin/describeflocktype.c +++ b/libc/intrin/describeflocktype.c @@ -20,9 +20,12 @@ #include "libc/sysv/consts/f.h" const char *(DescribeFlockType)(char buf[12], int x) { - if (x == F_RDLCK) return "F_RDLCK"; - if (x == F_WRLCK) return "F_WRLCK"; - if (x == F_UNLCK) return "F_UNLCK"; + if (x == F_RDLCK) + return "F_RDLCK"; + if (x == F_WRLCK) + return "F_WRLCK"; + if (x == F_UNLCK) + return "F_UNLCK"; FormatInt32(buf, x); return buf; } diff --git a/libc/intrin/describegidlist.c b/libc/intrin/describegidlist.c index 5c876ccd0..e6487986a 100644 --- a/libc/intrin/describegidlist.c +++ b/libc/intrin/describegidlist.c @@ -28,9 +28,12 @@ const char *(DescribeGidList)(char buf[N], int rc, int size, const uint32_t list[]) { - if ((rc == -1) || (size < 0)) return "n/a"; - if (!size) return "{}"; - if (!list) return "NULL"; + if ((rc == -1) || (size < 0)) + return "n/a"; + if (!size) + return "{}"; + if (!list) + return "NULL"; if ((!IsAsan() && kisdangerous(list)) || (IsAsan() && !__asan_is_valid(list, size * sizeof(list[0])))) { ksnprintf(buf, N, "%p", list); @@ -43,8 +46,10 @@ const char *(DescribeGidList)(char buf[N], int rc, int size, i += ksnprintf(buf + i, MAX(0, n - i), "%u, ", list[c]); } if (c == size) { - if (buf[i - 1] == ' ') i--; - if (buf[i - 1] == ',') i--; + if (buf[i - 1] == ' ') + i--; + if (buf[i - 1] == ',') + i--; i += ksnprintf(buf + i, MAX(0, n - i), "}"); } return buf; diff --git a/libc/intrin/describehow.c b/libc/intrin/describehow.c index ac898c27e..a4c447025 100644 --- a/libc/intrin/describehow.c +++ b/libc/intrin/describehow.c @@ -21,9 +21,12 @@ #include "libc/sysv/consts/sig.h" const char *(DescribeHow)(char buf[12], int how) { - if (how == SIG_BLOCK) return "SIG_BLOCK"; - if (how == SIG_UNBLOCK) return "SIG_UNBLOCK"; - if (how == SIG_SETMASK) return "SIG_SETMASK"; + if (how == SIG_BLOCK) + return "SIG_BLOCK"; + if (how == SIG_UNBLOCK) + return "SIG_UNBLOCK"; + if (how == SIG_SETMASK) + return "SIG_SETMASK"; FormatInt32(buf, how); return buf; } diff --git a/libc/intrin/describeinoutint64.c b/libc/intrin/describeinoutint64.c index c0c775669..977c32a15 100644 --- a/libc/intrin/describeinoutint64.c +++ b/libc/intrin/describeinoutint64.c @@ -21,9 +21,11 @@ #include "libc/intrin/describeflags.internal.h" const char *(DescribeInOutInt64)(char buf[23], ssize_t rc, int64_t *x) { - if (!x) return "NULL"; + if (!x) + return "NULL"; char *p = buf; - if (rc != -1) *p++ = '['; + if (rc != -1) + *p++ = '['; if (rc == -1 && errno == EFAULT) { *p++ = '!'; *p++ = '!'; @@ -31,7 +33,8 @@ const char *(DescribeInOutInt64)(char buf[23], ssize_t rc, int64_t *x) { } else { p = FormatInt64(p, *x); } - if (rc != -1) *p++ = ']'; + if (rc != -1) + *p++ = ']'; *p = 0; return buf; } diff --git a/libc/intrin/describeiovec.c b/libc/intrin/describeiovec.c index 5c2cdc036..c687f0d2f 100644 --- a/libc/intrin/describeiovec.c +++ b/libc/intrin/describeiovec.c @@ -33,9 +33,12 @@ const char *(DescribeIovec)(char buf[N], ssize_t rc, const struct iovec *iov, const char *d; int i, j, o = 0; - if (!iov) return "NULL"; - if (rc == -1) return "n/a"; - if (rc == -2) rc = SSIZE_MAX; + if (!iov) + return "NULL"; + if (rc == -1) + return "n/a"; + if (rc == -2) + rc = SSIZE_MAX; if ((!IsAsan() && kisdangerous(iov)) || (IsAsan() && !__asan_is_valid(iov, sizeof(*iov) * iovlen))) { ksnprintf(buf, N, "%p", iov); diff --git a/libc/intrin/describeitimer.c b/libc/intrin/describeitimer.c index 852c92a5c..d1e83a28d 100644 --- a/libc/intrin/describeitimer.c +++ b/libc/intrin/describeitimer.c @@ -21,9 +21,12 @@ #include "libc/sysv/consts/itimer.h" const char *(DescribeItimer)(char buf[12], int which) { - if (which == ITIMER_REAL) return "ITIMER_REAL"; - if (which == ITIMER_VIRTUAL) return "ITIMER_VIRTUAL"; - if (which == ITIMER_PROF) return "ITIMER_PROF"; + if (which == ITIMER_REAL) + return "ITIMER_REAL"; + if (which == ITIMER_VIRTUAL) + return "ITIMER_VIRTUAL"; + if (which == ITIMER_PROF) + return "ITIMER_PROF"; FormatInt32(buf, which); return buf; } diff --git a/libc/intrin/describeitimerval.c b/libc/intrin/describeitimerval.c index 04a9014f9..4088b4cf4 100644 --- a/libc/intrin/describeitimerval.c +++ b/libc/intrin/describeitimerval.c @@ -28,8 +28,10 @@ const char *(DescribeItimerval)(char buf[N], int rc, const struct itimerval *it) { - if (!it) return "NULL"; - if (rc == -1) return "n/a"; + if (!it) + return "NULL"; + if (rc == -1) + return "n/a"; if ((!IsAsan() && kisdangerous(it)) || (IsAsan() && !__asan_is_valid(it, sizeof(*it)))) { ksnprintf(buf, N, "%p", it); diff --git a/libc/intrin/describemagnums.c b/libc/intrin/describemagnums.c index 8570aaa73..fe76de780 100644 --- a/libc/intrin/describemagnums.c +++ b/libc/intrin/describemagnums.c @@ -23,7 +23,8 @@ const char *DescribeMagnum(char *b, const struct MagnumStr *m, const char *p, int x) { const char *s; - if (x == 127) return "CLOCK_INVALID"; + if (x == 127) + return "CLOCK_INVALID"; if ((s = GetMagnumStr(m, x))) { stpcpy(stpcpy(b, p), s); return b; diff --git a/libc/intrin/describentfileflagattr.c b/libc/intrin/describentfileflagattr.c index 94a7aa52e..36762db5a 100644 --- a/libc/intrin/describentfileflagattr.c +++ b/libc/intrin/describentfileflagattr.c @@ -51,7 +51,8 @@ static const struct DescribeFlags kFileFlags[] = { }; const char *(DescribeNtFileFlagAttr)(char buf[256], uint32_t x) { - if (x == -1u) return "-1u"; + if (x == -1u) + return "-1u"; return DescribeFlags(buf, 256, kFileFlags, ARRAYLEN(kFileFlags), "kNtFile", x); } diff --git a/libc/intrin/describentoverlapped.c b/libc/intrin/describentoverlapped.c index 71c588891..a4f3e1e07 100644 --- a/libc/intrin/describentoverlapped.c +++ b/libc/intrin/describentoverlapped.c @@ -23,7 +23,8 @@ const char *(DescribeNtOverlapped)(char b[128], const struct NtOverlapped *o) { int i = 0, n = 128; bool gotsome = false; - if (!o) return "NULL"; + if (!o) + return "NULL"; i += ksnprintf(b + i, MAX(0, n - i), "{"); if (o->hEvent) { diff --git a/libc/intrin/describeopenflags.c b/libc/intrin/describeopenflags.c index 735964084..b57fc9219 100644 --- a/libc/intrin/describeopenflags.c +++ b/libc/intrin/describeopenflags.c @@ -35,7 +35,8 @@ const char *(DescribeOpenFlags)(char buf[128], int x) { int i, n; const char *pipe; struct DescribeFlags d[N]; - if (x == -1) return "-1"; + if (x == -1) + return "-1"; p = buf; switch (x & O_ACCMODE) { case O_RDONLY: @@ -60,7 +61,8 @@ const char *(DescribeOpenFlags)(char buf[128], int x) { if (x) { p = stpcpy(p, pipe); for (n = 0; kOpenFlags[n].x != MAGNUM_TERMINATOR; ++n) { - if (n == N) notpossible; + if (n == N) + notpossible; } for (i = 0; i < n; ++i) { d[i].flag = MAGNUM_NUMBER(kOpenFlags, i); diff --git a/libc/intrin/describepollfds.c b/libc/intrin/describepollfds.c index f0c49b7f8..92be225c7 100644 --- a/libc/intrin/describepollfds.c +++ b/libc/intrin/describepollfds.c @@ -34,7 +34,8 @@ const char *(DescribePollFds)(char buf[N], ssize_t rc, struct pollfd *fds, char b64[64]; int i, o = 0; - if (!fds) return "NULL"; + if (!fds) + return "NULL"; if ((!IsAsan() && kisdangerous(fds)) || (IsAsan() && !__asan_is_valid(fds, sizeof(*fds) * nfds))) { ksnprintf(buf, N, "%p", fds); @@ -44,7 +45,8 @@ const char *(DescribePollFds)(char buf[N], ssize_t rc, struct pollfd *fds, append("{"); for (i = 0; i < nfds; ++i) { - if (i) append(", "); + if (i) + append(", "); append("{%d, %s", fds[i].fd, (DescribePollFlags)(b64, fds[i].events)); if (rc >= 0) { append(", [%s]", (DescribePollFlags)(b64, fds[i].revents)); diff --git a/libc/intrin/describeptrace.c b/libc/intrin/describeptrace.c index 847a49f09..7b9969fce 100644 --- a/libc/intrin/describeptrace.c +++ b/libc/intrin/describeptrace.c @@ -21,38 +21,70 @@ #include "libc/sysv/consts/ptrace.h" const char *(DescribePtrace)(char buf[12], int x) { - if (x == -1) return "-1"; - if (x == PTRACE_TRACEME) return "PTRACE_TRACEME"; - if (x == PTRACE_PEEKDATA) return "PTRACE_PEEKDATA"; - if (x == PTRACE_GETFPREGS) return "PTRACE_GETFPREGS"; - if (x == PTRACE_PEEKTEXT) return "PTRACE_PEEKTEXT"; - if (x == PTRACE_POKEDATA) return "PTRACE_POKEDATA"; - if (x == PTRACE_PEEKUSER) return "PTRACE_PEEKUSER"; - if (x == PTRACE_POKETEXT) return "PTRACE_POKETEXT"; - if (x == PTRACE_POKEUSER) return "PTRACE_POKEUSER"; - if (x == PTRACE_GETREGS) return "PTRACE_GETREGS"; - if (x == PTRACE_GETREGSET) return "PTRACE_GETREGSET"; - if (x == PTRACE_SETFPREGS) return "PTRACE_SETFPREGS"; - if (x == PTRACE_SETREGS) return "PTRACE_SETREGS"; - if (x == PTRACE_SETREGSET) return "PTRACE_SETREGSET"; - if (x == PTRACE_GETSIGINFO) return "PTRACE_GETSIGINFO"; - if (x == PTRACE_SETSIGINFO) return "PTRACE_SETSIGINFO"; - if (x == PTRACE_PEEKSIGINFO) return "PTRACE_PEEKSIGINFO"; - if (x == PTRACE_GETSIGMASK) return "PTRACE_GETSIGMASK"; - if (x == PTRACE_SETSIGMASK) return "PTRACE_SETSIGMASK"; - if (x == PTRACE_SETOPTIONS) return "PTRACE_SETOPTIONS"; - if (x == PTRACE_GETEVENTMSG) return "PTRACE_GETEVENTMSG"; - if (x == PTRACE_CONT) return "PTRACE_CONT"; - if (x == PTRACE_SINGLESTEP) return "PTRACE_SINGLESTEP"; - if (x == PTRACE_SYSCALL) return "PTRACE_SYSCALL"; - if (x == PTRACE_LISTEN) return "PTRACE_LISTEN"; - if (x == PTRACE_KILL) return "PTRACE_KILL"; - if (x == PTRACE_INTERRUPT) return "PTRACE_INTERRUPT"; - if (x == PTRACE_ATTACH) return "PTRACE_ATTACH"; - if (x == PTRACE_SEIZE) return "PTRACE_SEIZE"; - if (x == PTRACE_SECCOMP_GET_FILTER) return "PTRACE_SECCOMP_GET_FILTER"; - if (x == PTRACE_SECCOMP_GET_METADATA) return "PTRACE_SECCOMP_GET_METADATA"; - if (x == PTRACE_DETACH) return "PTRACE_DETACH"; + if (x == -1) + return "-1"; + if (x == PTRACE_TRACEME) + return "PTRACE_TRACEME"; + if (x == PTRACE_PEEKDATA) + return "PTRACE_PEEKDATA"; + if (x == PTRACE_GETFPREGS) + return "PTRACE_GETFPREGS"; + if (x == PTRACE_PEEKTEXT) + return "PTRACE_PEEKTEXT"; + if (x == PTRACE_POKEDATA) + return "PTRACE_POKEDATA"; + if (x == PTRACE_PEEKUSER) + return "PTRACE_PEEKUSER"; + if (x == PTRACE_POKETEXT) + return "PTRACE_POKETEXT"; + if (x == PTRACE_POKEUSER) + return "PTRACE_POKEUSER"; + if (x == PTRACE_GETREGS) + return "PTRACE_GETREGS"; + if (x == PTRACE_GETREGSET) + return "PTRACE_GETREGSET"; + if (x == PTRACE_SETFPREGS) + return "PTRACE_SETFPREGS"; + if (x == PTRACE_SETREGS) + return "PTRACE_SETREGS"; + if (x == PTRACE_SETREGSET) + return "PTRACE_SETREGSET"; + if (x == PTRACE_GETSIGINFO) + return "PTRACE_GETSIGINFO"; + if (x == PTRACE_SETSIGINFO) + return "PTRACE_SETSIGINFO"; + if (x == PTRACE_PEEKSIGINFO) + return "PTRACE_PEEKSIGINFO"; + if (x == PTRACE_GETSIGMASK) + return "PTRACE_GETSIGMASK"; + if (x == PTRACE_SETSIGMASK) + return "PTRACE_SETSIGMASK"; + if (x == PTRACE_SETOPTIONS) + return "PTRACE_SETOPTIONS"; + if (x == PTRACE_GETEVENTMSG) + return "PTRACE_GETEVENTMSG"; + if (x == PTRACE_CONT) + return "PTRACE_CONT"; + if (x == PTRACE_SINGLESTEP) + return "PTRACE_SINGLESTEP"; + if (x == PTRACE_SYSCALL) + return "PTRACE_SYSCALL"; + if (x == PTRACE_LISTEN) + return "PTRACE_LISTEN"; + if (x == PTRACE_KILL) + return "PTRACE_KILL"; + if (x == PTRACE_INTERRUPT) + return "PTRACE_INTERRUPT"; + if (x == PTRACE_ATTACH) + return "PTRACE_ATTACH"; + if (x == PTRACE_SEIZE) + return "PTRACE_SEIZE"; + if (x == PTRACE_SECCOMP_GET_FILTER) + return "PTRACE_SECCOMP_GET_FILTER"; + if (x == PTRACE_SECCOMP_GET_METADATA) + return "PTRACE_SECCOMP_GET_METADATA"; + if (x == PTRACE_DETACH) + return "PTRACE_DETACH"; FormatInt32(buf, x); return buf; } diff --git a/libc/intrin/describeptraceevent.c b/libc/intrin/describeptraceevent.c index 2c724d3e0..f8e8e49ed 100644 --- a/libc/intrin/describeptraceevent.c +++ b/libc/intrin/describeptraceevent.c @@ -21,14 +21,22 @@ #include "libc/sysv/consts/ptrace.h" const char *(DescribePtraceEvent)(char buf[32], int x) { - if (x == PTRACE_EVENT_FORK) return "PTRACE_EVENT_FORK"; - if (x == PTRACE_EVENT_VFORK) return "PTRACE_EVENT_VFORK"; - if (x == PTRACE_EVENT_CLONE) return "PTRACE_EVENT_CLONE"; - if (x == PTRACE_EVENT_EXEC) return "PTRACE_EVENT_EXEC"; - if (x == PTRACE_EVENT_VFORK_DONE) return "PTRACE_EVENT_VFORK_DONE"; - if (x == PTRACE_EVENT_EXIT) return "PTRACE_EVENT_EXIT"; - if (x == PTRACE_EVENT_SECCOMP) return "PTRACE_EVENT_SECCOMP"; - if (x == PTRACE_EVENT_STOP) return "PTRACE_EVENT_STOP"; + if (x == PTRACE_EVENT_FORK) + return "PTRACE_EVENT_FORK"; + if (x == PTRACE_EVENT_VFORK) + return "PTRACE_EVENT_VFORK"; + if (x == PTRACE_EVENT_CLONE) + return "PTRACE_EVENT_CLONE"; + if (x == PTRACE_EVENT_EXEC) + return "PTRACE_EVENT_EXEC"; + if (x == PTRACE_EVENT_VFORK_DONE) + return "PTRACE_EVENT_VFORK_DONE"; + if (x == PTRACE_EVENT_EXIT) + return "PTRACE_EVENT_EXIT"; + if (x == PTRACE_EVENT_SECCOMP) + return "PTRACE_EVENT_SECCOMP"; + if (x == PTRACE_EVENT_STOP) + return "PTRACE_EVENT_STOP"; FormatInt32(buf, x); return buf; } diff --git a/libc/intrin/describerlimit.c b/libc/intrin/describerlimit.c index 6e9568c81..ebc85feec 100644 --- a/libc/intrin/describerlimit.c +++ b/libc/intrin/describerlimit.c @@ -23,8 +23,10 @@ #include "libc/intrin/strace.internal.h" const char *DescribeRlimit(char buf[64], int rc, const struct rlimit *rlim) { - if (rc == -1) return "n/a"; - if (!rlim) return "NULL"; + if (rc == -1) + return "n/a"; + if (!rlim) + return "NULL"; if ((!IsAsan() && kisdangerous(rlim)) || (IsAsan() && !__asan_is_valid(rlim, sizeof(*rlim)))) { ksnprintf(buf, 64, "%p", rlim); diff --git a/libc/intrin/describerlimitname.c b/libc/intrin/describerlimitname.c index 7e329fb10..d7b578853 100644 --- a/libc/intrin/describerlimitname.c +++ b/libc/intrin/describerlimitname.c @@ -23,6 +23,7 @@ * Describes setrlimit() / getrlimit() argument. */ const char *(DescribeRlimitName)(char buf[20], int x) { - if (x == 127) return "n/a"; + if (x == 127) + return "n/a"; return DescribeMagnum(buf, kRlimitNames, "RLIMIT_", x); } diff --git a/libc/intrin/describeschedparam.c b/libc/intrin/describeschedparam.c index b68c74fa1..059d66088 100644 --- a/libc/intrin/describeschedparam.c +++ b/libc/intrin/describeschedparam.c @@ -26,7 +26,8 @@ */ const char *(DescribeSchedParam)(char buf[32], const struct sched_param *x) { char *p; - if (!x) return "0"; + if (!x) + return "0"; p = buf; *p++ = '{'; p = FormatInt32(p, x->sched_priority); diff --git a/libc/intrin/describesigaction.c b/libc/intrin/describesigaction.c index 01cddac03..4138457b4 100644 --- a/libc/intrin/describesigaction.c +++ b/libc/intrin/describesigaction.c @@ -28,9 +28,12 @@ #include "libc/sysv/consts/sa.h" static const char *DescribeSigHandler(char buf[64], void f(int)) { - if (f == SIG_ERR) return "SIG_ERR"; - if (f == SIG_DFL) return "SIG_DFL"; - if (f == SIG_IGN) return "SIG_IGN"; + if (f == SIG_ERR) + return "SIG_ERR"; + if (f == SIG_DFL) + return "SIG_DFL"; + if (f == SIG_IGN) + return "SIG_IGN"; ksnprintf(buf, 64, "%t", f); return buf; } @@ -60,8 +63,10 @@ const char *(DescribeSigaction)(char buf[N], int rc, int o = 0; char b64[64]; - if (rc == -1) return "n/a"; - if (!sa) return "NULL"; + if (rc == -1) + return "n/a"; + if (!sa) + return "NULL"; if ((!IsAsan() && kisdangerous(sa)) || (IsAsan() && !__asan_is_valid(sa, sizeof(*sa)))) { ksnprintf(buf, N, "%p", sa); diff --git a/libc/intrin/describesigaltstack.c b/libc/intrin/describesigaltstack.c index d137b2406..16d7f811e 100644 --- a/libc/intrin/describesigaltstack.c +++ b/libc/intrin/describesigaltstack.c @@ -24,8 +24,10 @@ const char *(DescribeSigaltstk)(char buf[128], int rc, const struct sigaltstack *ss) { - if (rc == -1) return "n/a"; - if (!ss) return "NULL"; + if (rc == -1) + return "n/a"; + if (!ss) + return "NULL"; if ((!IsAsan() && kisdangerous(ss)) || (IsAsan() && !__asan_is_valid(ss, sizeof(*ss)))) { ksnprintf(buf, 128, "%p", ss); diff --git a/libc/intrin/describesiginfo.c b/libc/intrin/describesiginfo.c index c16cdb3c3..9a3b4c1e0 100644 --- a/libc/intrin/describesiginfo.c +++ b/libc/intrin/describesiginfo.c @@ -33,8 +33,10 @@ const char *(DescribeSiginfo)(char buf[N], int rc, const siginfo_t *si) { int i = 0; - if (rc == -1) return "n/a"; - if (!si) return "NULL"; + if (rc == -1) + return "n/a"; + if (!si) + return "NULL"; if ((!IsAsan() && kisdangerous(si)) || (IsAsan() && !__asan_is_valid(si, sizeof(*si)))) { ksnprintf(buf, N, "%p", si); diff --git a/libc/intrin/describesigset.c b/libc/intrin/describesigset.c index 727217f8a..97822e50c 100644 --- a/libc/intrin/describesigset.c +++ b/libc/intrin/describesigset.c @@ -39,8 +39,10 @@ const char *(DescribeSigset)(char buf[N], int rc, const sigset_t *ss) { int sig, o = 0; sigset_t sigset; - if (rc == -1) return "n/a"; - if (!ss) return "NULL"; + if (rc == -1) + return "n/a"; + if (!ss) + return "NULL"; if ((!IsAsan() && kisdangerous(ss)) || (IsAsan() && !__asan_is_valid(ss, sizeof(*ss)))) { ksnprintf(buf, N, "%p", ss); diff --git a/libc/intrin/describesocketfamily.c b/libc/intrin/describesocketfamily.c index fa5f23ce6..7f1b32ade 100644 --- a/libc/intrin/describesocketfamily.c +++ b/libc/intrin/describesocketfamily.c @@ -21,9 +21,12 @@ #include "libc/sysv/consts/af.h" const char *(DescribeSocketFamily)(char buf[12], int family) { - if (family == AF_UNIX) return "AF_UNIX"; - if (family == AF_INET) return "AF_INET"; - if (family == AF_INET6) return "AF_INET6"; + if (family == AF_UNIX) + return "AF_UNIX"; + if (family == AF_INET) + return "AF_INET"; + if (family == AF_INET6) + return "AF_INET6"; FormatInt32(buf, family); return buf; } diff --git a/libc/intrin/describesocketprotocol.c b/libc/intrin/describesocketprotocol.c index ee4466302..933ce7b41 100644 --- a/libc/intrin/describesocketprotocol.c +++ b/libc/intrin/describesocketprotocol.c @@ -21,13 +21,20 @@ #include "libc/sysv/consts/ipproto.h" const char *(DescribeSocketProtocol)(char buf[12], int family) { - if (family == IPPROTO_IP) return "IPPROTO_IP"; - if (family == IPPROTO_ICMP) return "IPPROTO_ICMP"; - if (family == IPPROTO_TCP) return "IPPROTO_TCP"; - if (family == IPPROTO_UDP) return "IPPROTO_UDP"; - if (family == IPPROTO_RAW) return "IPPROTO_RAW"; - if (family == IPPROTO_IPV6) return "IPPROTO_IPv6"; - if (family == IPPROTO_ICMPV6) return "IPPROTO_ICMPV6"; + if (family == IPPROTO_IP) + return "IPPROTO_IP"; + if (family == IPPROTO_ICMP) + return "IPPROTO_ICMP"; + if (family == IPPROTO_TCP) + return "IPPROTO_TCP"; + if (family == IPPROTO_UDP) + return "IPPROTO_UDP"; + if (family == IPPROTO_RAW) + return "IPPROTO_RAW"; + if (family == IPPROTO_IPV6) + return "IPPROTO_IPv6"; + if (family == IPPROTO_ICMPV6) + return "IPPROTO_ICMPV6"; FormatInt32(buf, family); return buf; } diff --git a/libc/intrin/describesockettype.c b/libc/intrin/describesockettype.c index 34ba12d8a..69cf9d76e 100644 --- a/libc/intrin/describesockettype.c +++ b/libc/intrin/describesockettype.c @@ -39,7 +39,9 @@ const char *(DescribeSocketType)(char buf[64], int type) { } else { p = FormatInt32(p, x); } - if (type & SOCK_CLOEXEC) p = stpcpy(p, "|SOCK_CLOEXEC"); - if (type & SOCK_NONBLOCK) p = stpcpy(p, "|SOCK_NONBLOCK"); + if (type & SOCK_CLOEXEC) + p = stpcpy(p, "|SOCK_CLOEXEC"); + if (type & SOCK_NONBLOCK) + p = stpcpy(p, "|SOCK_NONBLOCK"); return buf; } diff --git a/libc/intrin/describesocklevel.c b/libc/intrin/describesocklevel.c index 536ce3015..dc1959ee1 100644 --- a/libc/intrin/describesocklevel.c +++ b/libc/intrin/describesocklevel.c @@ -24,14 +24,22 @@ * Describes setsockopt() level arguments. */ const char *(DescribeSockLevel)(char buf[12], int x) { - if (x == SOL_SOCKET) return "SOL_SOCKET"; - if (x == SOL_IP) return "SOL_IP"; - if (x == SOL_ICMP) return "SOL_ICMP"; - if (x == SOL_TCP) return "SOL_TCP"; - if (x == SOL_UDP) return "SOL_UDP"; - if (x == SOL_IPV6) return "SOL_IPV6"; - if (x == SOL_ICMPV6) return "SOL_ICMPV6"; - if (x == SOL_RAW) return "SOL_RAW"; + if (x == SOL_SOCKET) + return "SOL_SOCKET"; + if (x == SOL_IP) + return "SOL_IP"; + if (x == SOL_ICMP) + return "SOL_ICMP"; + if (x == SOL_TCP) + return "SOL_TCP"; + if (x == SOL_UDP) + return "SOL_UDP"; + if (x == SOL_IPV6) + return "SOL_IPV6"; + if (x == SOL_ICMPV6) + return "SOL_ICMPV6"; + if (x == SOL_RAW) + return "SOL_RAW"; FormatInt32(buf, x); return buf; } diff --git a/libc/intrin/describestat.c b/libc/intrin/describestat.c index 463373f3f..6c8d9dee4 100644 --- a/libc/intrin/describestat.c +++ b/libc/intrin/describestat.c @@ -29,8 +29,10 @@ const char *(DescribeStat)(char buf[N], int rc, const struct stat *st) { int o = 0; - if (rc == -1) return "n/a"; - if (!st) return "NULL"; + if (rc == -1) + return "n/a"; + if (!st) + return "NULL"; if ((!IsAsan() && kisdangerous(st)) || (IsAsan() && !__asan_is_valid(st, sizeof(*st)))) { ksnprintf(buf, N, "%p", st); diff --git a/libc/intrin/describestatfs.c b/libc/intrin/describestatfs.c index ea2ea12cb..0932b6c76 100644 --- a/libc/intrin/describestatfs.c +++ b/libc/intrin/describestatfs.c @@ -33,8 +33,10 @@ const char *(DescribeStatfs)(char buf[N], int rc, const struct statfs *f) { char ibuf[21]; int64_t flags; - if (rc == -1) return "n/a"; - if (!f) return "NULL"; + if (rc == -1) + return "n/a"; + if (!f) + return "NULL"; if ((!IsAsan() && kisdangerous(f)) || (IsAsan() && !__asan_is_valid(f, sizeof(*f)))) { ksnprintf(buf, N, "%p", f); diff --git a/libc/intrin/describestdiostate.c b/libc/intrin/describestdiostate.c index 81cbc8a8c..74a934cdc 100644 --- a/libc/intrin/describestdiostate.c +++ b/libc/intrin/describestdiostate.c @@ -22,9 +22,12 @@ #include "libc/str/str.h" const char *(DescribeStdioState)(char buf[12], int x) { - if (!x) return ""; - if (x == -1) return "EOF"; - if (x > 0) return _strerrno(x); + if (!x) + return ""; + if (x == -1) + return "EOF"; + if (x > 0) + return _strerrno(x); FormatInt32(buf, x); return buf; } diff --git a/libc/intrin/describestringlist.c b/libc/intrin/describestringlist.c index 75593f258..8f1594210 100644 --- a/libc/intrin/describestringlist.c +++ b/libc/intrin/describestringlist.c @@ -28,7 +28,8 @@ const char *(DescribeStringList)(char buf[N], char *const list[]) { int i, o = 0; - if (!list) return "NULL"; + if (!list) + return "NULL"; if (IsAsan() && !__asan_is_valid_strlist(list)) { ksnprintf(buf, N, "%p", list); return buf; @@ -37,7 +38,8 @@ const char *(DescribeStringList)(char buf[N], char *const list[]) { append("{"); i = 0; do { - if (i++) append(", "); + if (i++) + append(", "); append("%#s", *list); } while (*list++); append("}"); diff --git a/libc/intrin/describetermios.c b/libc/intrin/describetermios.c index 87d1ca2bf..8c0614f1b 100644 --- a/libc/intrin/describetermios.c +++ b/libc/intrin/describetermios.c @@ -35,7 +35,8 @@ const char *(DescribeTermios)(char buf[N], ssize_t rc, int o = 0; char b128[128]; - if (!tio) return "NULL"; + if (!tio) + return "NULL"; if ((!IsAsan() && kisdangerous(tio)) || (IsAsan() && !__asan_is_valid(tio, sizeof(*tio)))) { ksnprintf(buf, N, "%p", tio); diff --git a/libc/intrin/describetimespec.c b/libc/intrin/describetimespec.c index b3cf5db63..d5cc954ff 100644 --- a/libc/intrin/describetimespec.c +++ b/libc/intrin/describetimespec.c @@ -25,8 +25,10 @@ const char *(DescribeTimespec)(char buf[45], int rc, const struct timespec *ts) { - if (rc == -1) return "n/a"; - if (!ts) return "NULL"; + if (rc == -1) + return "n/a"; + if (!ts) + return "NULL"; if ((!IsAsan() && kisdangerous(ts)) || (IsAsan() && !__asan_is_valid(ts, sizeof(*ts)))) { ksnprintf(buf, 45, "%p", ts); diff --git a/libc/intrin/describetimeval.c b/libc/intrin/describetimeval.c index dc42e4f0f..4e504aaa8 100644 --- a/libc/intrin/describetimeval.c +++ b/libc/intrin/describetimeval.c @@ -23,8 +23,10 @@ #include "libc/intrin/kprintf.h" const char *(DescribeTimeval)(char buf[45], int rc, const struct timeval *tv) { - if (!tv) return "NULL"; - if (rc == -1) return "n/a"; + if (!tv) + return "NULL"; + if (rc == -1) + return "n/a"; if ((!IsAsan() && kisdangerous(tv)) || (IsAsan() && !__asan_is_valid(tv, sizeof(*tv)))) { ksnprintf(buf, 45, "%p", tv); diff --git a/libc/intrin/describewhence.c b/libc/intrin/describewhence.c index ceccb4a69..3de47df18 100644 --- a/libc/intrin/describewhence.c +++ b/libc/intrin/describewhence.c @@ -21,9 +21,12 @@ #include "libc/intrin/describeflags.internal.h" const char *(DescribeWhence)(char buf[12], int whence) { - if (whence == SEEK_SET) return "SEEK_SET"; - if (whence == SEEK_CUR) return "SEEK_CUR"; - if (whence == SEEK_END) return "SEEK_END"; + if (whence == SEEK_SET) + return "SEEK_SET"; + if (whence == SEEK_CUR) + return "SEEK_CUR"; + if (whence == SEEK_END) + return "SEEK_END"; FormatInt32(buf, whence); return buf; } diff --git a/libc/intrin/describewhichprio.c b/libc/intrin/describewhichprio.c index c49cee09c..3459dc17e 100644 --- a/libc/intrin/describewhichprio.c +++ b/libc/intrin/describewhichprio.c @@ -21,9 +21,12 @@ #include "libc/sysv/consts/prio.h" const char *(DescribeWhichPrio)(char buf[12], int x) { - if (x == PRIO_PROCESS) return "PRIO_PROCESS"; - if (x == PRIO_PGRP) return "PRIO_PGRP"; - if (x == PRIO_USER) return "PRIO_USER"; + if (x == PRIO_PROCESS) + return "PRIO_PROCESS"; + if (x == PRIO_PGRP) + return "PRIO_PGRP"; + if (x == PRIO_USER) + return "PRIO_USER"; FormatInt32(buf, x); return buf; } diff --git a/libc/intrin/describewinsize.c b/libc/intrin/describewinsize.c index b544065f4..61208a7b5 100644 --- a/libc/intrin/describewinsize.c +++ b/libc/intrin/describewinsize.c @@ -31,8 +31,10 @@ const char *(DescribeWinsize)(char buf[N], int rc, const struct winsize *ws) { int o = 0; - if (!ws) return "NULL"; - if (rc == -1) return "n/a"; + if (!ws) + return "NULL"; + if (rc == -1) + return "n/a"; if ((!IsAsan() && kisdangerous(ws)) || (IsAsan() && !__asan_is_valid(ws, sizeof(*ws)))) { ksnprintf(buf, N, "%p", ws); diff --git a/libc/intrin/deviceiocontrol.c b/libc/intrin/deviceiocontrol.c index ee1977950..bd164fe29 100644 --- a/libc/intrin/deviceiocontrol.c +++ b/libc/intrin/deviceiocontrol.c @@ -40,7 +40,8 @@ textwindows bool32 DeviceIoControl(int64_t hDevice, uint32_t dwIoControlCode, ok = __imp_DeviceIoControl(hDevice, dwIoControlCode, lpInBuffer, nInBufferSize, lpOutBuffer, nOutBufferSize, lpBytesReturned, lpOverlapped); - if (!ok) __winerr(); + if (!ok) + __winerr(); NTTRACE("DeviceIoControl(%ld, %#x, %p, %'zu, %p, %'zu, %p, %s) → %hhhd% m", hDevice, dwIoControlCode, lpInBuffer, nInBufferSize, lpOutBuffer, nOutBufferSize, lpBytesReturned, DescribeNtOverlapped(lpOverlapped), diff --git a/libc/intrin/directmap-metal.c b/libc/intrin/directmap-metal.c index cc0279677..af0e1889c 100644 --- a/libc/intrin/directmap-metal.c +++ b/libc/intrin/directmap-metal.c @@ -53,15 +53,19 @@ struct DirectMap sys_mmap_metal(void *vaddr, size_t size, int prot, int flags, if (!(flags & MAP_ANONYMOUS_linux)) { struct Fd *sfd; struct MetalFile *file; - if (off < 0 || fd < 0 || fd >= g_fds.n) return bad_mmap(); + if (off < 0 || fd < 0 || fd >= g_fds.n) + return bad_mmap(); sfd = &g_fds.p[fd]; - if (sfd->kind != kFdFile) return bad_mmap(); + if (sfd->kind != kFdFile) + return bad_mmap(); file = (struct MetalFile *)sfd->handle; /* TODO: allow mapping partial page at end of file, if file size not * multiple of page size */ - if (off > file->size || size > file->size - off) return bad_mmap(); + if (off > file->size || size > file->size - off) + return bad_mmap(); faddr = (uint64_t)file->base + off; - if (faddr % 4096 != 0) return bad_mmap(); + if (faddr % 4096 != 0) + return bad_mmap(); } if (!(flags & MAP_FIXED_linux)) { if (!addr) { @@ -83,20 +87,24 @@ struct DirectMap sys_mmap_metal(void *vaddr, size_t size, int prot, int flags, if (pte) { if ((flags & MAP_ANONYMOUS_linux)) { page = __new_page(mm); - if (!page) return bad_mmap(); + if (!page) + return bad_mmap(); __clear_page(BANE + page); e = page | PAGE_RSRV | PAGE_U; if ((prot & PROT_WRITE)) e |= PAGE_V | PAGE_RW; else if ((prot & (PROT_READ | PROT_EXEC))) e |= PAGE_V; - if (!(prot & PROT_EXEC)) e |= PAGE_XD; + if (!(prot & PROT_EXEC)) + e |= PAGE_XD; } else { fdpte = __get_virtual(mm, pml4t, faddr + i, false); e = *fdpte | PAGE_RSRV | PAGE_U; page = e & PAGE_TA; - if (!(prot & PROT_WRITE)) e &= ~PAGE_RW; - if (!(prot & PROT_EXEC)) e |= PAGE_XD; + if (!(prot & PROT_WRITE)) + e &= ~PAGE_RW; + if (!(prot & PROT_EXEC)) + e |= PAGE_XD; } __ref_page(mm, pml4t, page); *pte = e; diff --git a/libc/intrin/divmodti4.c b/libc/intrin/divmodti4.c index 465555c27..f47dc1f13 100644 --- a/libc/intrin/divmodti4.c +++ b/libc/intrin/divmodti4.c @@ -36,7 +36,8 @@ ti_int __divmodti4(ti_int a, ti_int b, tu_int *opt_out_rem) { q = __udivmodti4(x, y, &r); // unsigned divide q = (tu_int)(q ^ sq) - sq; // fix quotient sign r = (tu_int)(r ^ sr) - sr; // fix remainder sign - if (opt_out_rem) *opt_out_rem = r; + if (opt_out_rem) + *opt_out_rem = r; return q; } diff --git a/libc/intrin/exit.c b/libc/intrin/exit.c index 50f1a00d9..8d1a92f6c 100644 --- a/libc/intrin/exit.c +++ b/libc/intrin/exit.c @@ -109,7 +109,8 @@ wontreturn void _Exit(int exitcode) { "push\t$0\n\t" "cli\n\t" "lidt\t(%rsp)"); - for (;;) asm("ud2"); + for (;;) + asm("ud2"); #else __builtin_unreachable(); #endif diff --git a/libc/intrin/extend.c b/libc/intrin/extend.c index 0c0629899..d458b483f 100644 --- a/libc/intrin/extend.c +++ b/libc/intrin/extend.c @@ -85,19 +85,24 @@ static void *_mapframe(void *p, int f) { void *_extend(void *p, size_t n, void *e, int f, intptr_t h) { char *q; #ifndef NDEBUG - if ((uintptr_t)SHADOW(p) & (G - 1)) notpossible; - if ((uintptr_t)p + (G << kAsanScale) > h) notpossible; + if ((uintptr_t)SHADOW(p) & (G - 1)) + notpossible; + if ((uintptr_t)p + (G << kAsanScale) > h) + notpossible; #endif // TODO(jart): Make this spin less in non-ASAN mode. for (q = e; q < ((char *)p + n); q += 8) { if (!((uintptr_t)q & (G - 1))) { #ifndef NDEBUG - if (q + G > (char *)h) notpossible; + if (q + G > (char *)h) + notpossible; #endif - if (!_mapframe(q, f)) return 0; + if (!_mapframe(q, f)) + return 0; if (IsAsan()) { if (!((uintptr_t)SHADOW(q) & (G - 1))) { - if (!_mapframe(SHADOW(q), f)) return 0; + if (!_mapframe(SHADOW(q), f)) + return 0; __asan_poison(q, G << kAsanScale, kAsanProtected); } } diff --git a/libc/intrin/findclose.c b/libc/intrin/findclose.c index eda3f747d..eccb3dff0 100644 --- a/libc/intrin/findclose.c +++ b/libc/intrin/findclose.c @@ -30,7 +30,8 @@ __msabi extern typeof(FindClose) *const __imp_FindClose; textwindows bool32 FindClose(int64_t hFindFile) { bool32 ok; ok = __imp_FindClose(hFindFile); - if (!ok) __winerr(); + if (!ok) + __winerr(); NTTRACE("FindClose(%ld) → %hhhd% m", hFindFile, ok); return ok; } diff --git a/libc/intrin/findnextfile.c b/libc/intrin/findnextfile.c index 6769ab809..5bb42cc87 100644 --- a/libc/intrin/findnextfile.c +++ b/libc/intrin/findnextfile.c @@ -46,7 +46,8 @@ textwindows bool32 FindNextFile(int64_t hFindFile, DescribeNtFileFlagAttr(out_lpFindFileData->dwFileAttributes), DescribeNtFiletypeFlags(out_lpFindFileData->dwFileType), ok); } else { - if (GetLastError() != kNtErrorNoMoreFiles) __winerr(); + if (GetLastError() != kNtErrorNoMoreFiles) + __winerr(); NTTRACE("FindNextFile(%ld) → %hhhd% m", hFindFile, ok); } return ok; diff --git a/libc/intrin/flushviewoffile.c b/libc/intrin/flushviewoffile.c index 90e0bfd19..049a9c0e1 100644 --- a/libc/intrin/flushviewoffile.c +++ b/libc/intrin/flushviewoffile.c @@ -36,7 +36,8 @@ textwindows bool32 FlushViewOfFile(const void *lpBaseAddress, size_t dwNumberOfBytesToFlush) { bool32 ok; ok = __imp_FlushViewOfFile(lpBaseAddress, dwNumberOfBytesToFlush); - if (!ok) __winerr(); + if (!ok) + __winerr(); NTTRACE("FlushViewOfFile(%p, %'zu) → %hhhd% m", lpBaseAddress, dwNumberOfBytesToFlush, ok); return ok; diff --git a/libc/intrin/fmax.c b/libc/intrin/fmax.c index 310b8de95..44b9f69f3 100644 --- a/libc/intrin/fmax.c +++ b/libc/intrin/fmax.c @@ -26,8 +26,10 @@ * signed zeroes. */ double fmax(double x, double y) { - if (isnan(x)) return y; - if (isnan(y)) return x; + if (isnan(x)) + return y; + if (isnan(y)) + return x; if (signbit(x) != signbit(y)) { return signbit(x) ? y : x; /* C99 Annex F.9.9.2 */ } diff --git a/libc/intrin/fmaxf.c b/libc/intrin/fmaxf.c index 6949ea6b0..f77be8dfb 100644 --- a/libc/intrin/fmaxf.c +++ b/libc/intrin/fmaxf.c @@ -26,8 +26,10 @@ * signed zeroes. */ float fmaxf(float x, float y) { - if (isnan(x)) return y; - if (isnan(y)) return x; + if (isnan(x)) + return y; + if (isnan(y)) + return x; if (signbit(x) != signbit(y)) { return signbit(x) ? y : x; /* C99 Annex F.9.9.2 */ } diff --git a/libc/intrin/fmaxl.c b/libc/intrin/fmaxl.c index dbd15b27d..607d8024b 100644 --- a/libc/intrin/fmaxl.c +++ b/libc/intrin/fmaxl.c @@ -27,8 +27,10 @@ * signed zeroes. */ long double fmaxl(long double x, long double y) { - if (isnan(x)) return y; - if (isnan(y)) return x; + if (isnan(x)) + return y; + if (isnan(y)) + return x; if (signbit(x) != signbit(y)) { return signbit(x) ? y : x; /* C99 Annex F.9.9.2 */ } diff --git a/libc/intrin/formathex64.c b/libc/intrin/formathex64.c index 1324662d7..33ba78f8e 100644 --- a/libc/intrin/formathex64.c +++ b/libc/intrin/formathex64.c @@ -23,10 +23,12 @@ static inline int PickGoodWidth(unsigned x, char z) { if (z) { if (x < 16) { - if (x < 8) return 8; + if (x < 8) + return 8; return 16; } else { - if (x < 32) return 32; + if (x < 32) + return 32; return 64; } } else { diff --git a/libc/intrin/formatint32.c b/libc/intrin/formatint32.c index c5bc93b38..330de4818 100644 --- a/libc/intrin/formatint32.c +++ b/libc/intrin/formatint32.c @@ -50,6 +50,7 @@ dontinline char *FormatUint32(char p[hasatleast 12], uint32_t x) { * @return pointer to nul byte */ char *FormatInt32(char p[hasatleast 12], int32_t x) { - if (x < 0) *p++ = '-', x = -(uint32_t)x; + if (x < 0) + *p++ = '-', x = -(uint32_t)x; return FormatUint32(p, x); } diff --git a/libc/intrin/formatint64.c b/libc/intrin/formatint64.c index cc9d44849..7791b5406 100644 --- a/libc/intrin/formatint64.c +++ b/libc/intrin/formatint64.c @@ -50,6 +50,7 @@ dontinline char *FormatUint64(char p[static 21], uint64_t x) { * @return pointer to nul byte */ char *FormatInt64(char p[static 21], int64_t x) { - if (x < 0) *p++ = '-', x = -(uint64_t)x; + if (x < 0) + *p++ = '-', x = -(uint64_t)x; return FormatUint64(p, x); } diff --git a/libc/intrin/formatoctal32.c b/libc/intrin/formatoctal32.c index 8f4c6034b..967105a3d 100644 --- a/libc/intrin/formatoctal32.c +++ b/libc/intrin/formatoctal32.c @@ -34,7 +34,8 @@ char *FormatOctal32(char p[hasatleast 13], uint32_t x, bool32 z) { p[i++] = x % 8 + '0'; x = x / 8; } while (x > 0); - if (z) p[i++] = '0'; + if (z) + p[i++] = '0'; p[i] = '\0'; if (i) { for (a = 0, b = i - 1; a < b; ++a, --b) { diff --git a/libc/intrin/g_fds.c b/libc/intrin/g_fds.c index 3e12da55f..b9f54a491 100644 --- a/libc/intrin/g_fds.c +++ b/libc/intrin/g_fds.c @@ -71,7 +71,8 @@ static textwindows void SetupWinStd(struct Fds *fds, int i, uint32_t x) { int64_t h; uint32_t cm; h = GetStdHandle(x); - if (!h || h == -1) return; + if (!h || h == -1) + return; fds->p[i].kind = GetConsoleMode(h, &cm) ? kFdConsole : kFdFile; fds->p[i].handle = h; atomic_store_explicit(&fds->f, i + 1, memory_order_relaxed); @@ -124,15 +125,24 @@ textstartup void __init_fds(int argc, char **argv, char **envp) { unsetenv("_COSMO_FDS"); for (;;) { long fd, kind, flags, mode, handle, pointer, type, family, protocol; - if (!TokAtoi(&fdspec, &fd)) break; - if (!TokAtoi(&fdspec, &handle)) break; - if (!TokAtoi(&fdspec, &kind)) break; - if (!TokAtoi(&fdspec, &flags)) break; - if (!TokAtoi(&fdspec, &mode)) break; - if (!TokAtoi(&fdspec, &pointer)) break; - if (!TokAtoi(&fdspec, &type)) break; - if (!TokAtoi(&fdspec, &family)) break; - if (!TokAtoi(&fdspec, &protocol)) break; + if (!TokAtoi(&fdspec, &fd)) + break; + if (!TokAtoi(&fdspec, &handle)) + break; + if (!TokAtoi(&fdspec, &kind)) + break; + if (!TokAtoi(&fdspec, &flags)) + break; + if (!TokAtoi(&fdspec, &mode)) + break; + if (!TokAtoi(&fdspec, &pointer)) + break; + if (!TokAtoi(&fdspec, &type)) + break; + if (!TokAtoi(&fdspec, &family)) + break; + if (!TokAtoi(&fdspec, &protocol)) + break; __ensurefds_unlocked(fd); struct Fd *f = fds->p + fd; if (f->handle && f->handle != -1 && f->handle != handle) { diff --git a/libc/intrin/generateconsolectrlevent.c b/libc/intrin/generateconsolectrlevent.c index a84f1d918..a9b24dd0e 100644 --- a/libc/intrin/generateconsolectrlevent.c +++ b/libc/intrin/generateconsolectrlevent.c @@ -34,7 +34,8 @@ textwindows bool32 GenerateConsoleCtrlEvent(uint32_t dwCtrlEvent, uint32_t dwProcessGroupId) { bool32 ok; ok = __imp_GenerateConsoleCtrlEvent(dwCtrlEvent, dwProcessGroupId); - if (!ok) __winerr(); + if (!ok) + __winerr(); NTTRACE("GenerateConsoleCtrlEvent(%x, %d) → %hhhd% m", dwCtrlEvent, dwProcessGroupId, ok); return ok; diff --git a/libc/intrin/getenv.c b/libc/intrin/getenv.c index 3a8fe75d2..e272d3ed1 100644 --- a/libc/intrin/getenv.c +++ b/libc/intrin/getenv.c @@ -31,7 +31,8 @@ char *getenv(const char *s) { char **p; struct Env e; - if (!(p = environ)) return 0; + if (!(p = environ)) + return 0; e = __getenv(p, s); #if SYSDEBUG // if (!(s[0] == 'T' && s[1] == 'Z' && !s[2])) { diff --git a/libc/intrin/getexitcodeprocess.c b/libc/intrin/getexitcodeprocess.c index b1fb13b49..8f359803a 100644 --- a/libc/intrin/getexitcodeprocess.c +++ b/libc/intrin/getexitcodeprocess.c @@ -30,7 +30,8 @@ __msabi extern typeof(GetExitCodeProcess) *const __imp_GetExitCodeProcess; textwindows int32_t GetExitCodeProcess(int64_t hProcess, uint32_t *lpExitCode) { int32_t rc; rc = __imp_GetExitCodeProcess(hProcess, lpExitCode); - if (!rc) __winerr(); + if (!rc) + __winerr(); NTTRACE("GetExitCodeProcess(%ld, [%u]) → %u% m", hProcess, *lpExitCode, rc); return rc; } diff --git a/libc/intrin/getmainstack.c b/libc/intrin/getmainstack.c index 1a51d5f36..d1cade8a3 100644 --- a/libc/intrin/getmainstack.c +++ b/libc/intrin/getmainstack.c @@ -71,7 +71,8 @@ static char *__get_last(char **list) { static int __get_length(const char *s) { int n = 0; - while (*s++) ++n; + while (*s++) + ++n; return n; } @@ -82,7 +83,8 @@ static uintptr_t __get_main_top(int pagesz) { top = (uintptr_t)s + __get_length(s); } else { unsigned long *xp = __auxv; - while (*xp) xp += 2; + while (*xp) + xp += 2; top = (uintptr_t)xp; } return ROUNDUP(top, pagesz); @@ -92,7 +94,8 @@ static size_t __get_stack_size(int pagesz, uintptr_t start, uintptr_t top) { size_t size, max = 8 * 1024 * 1024; struct rlimit rlim = {RLIM_INFINITY}; sys_getrlimit(RLIMIT_STACK, &rlim); - if ((size = rlim.rlim_cur) > max) size = max; + if ((size = rlim.rlim_cur) > max) + size = max; return MAX(ROUNDUP(size, pagesz), ROUNDUP(top - start, pagesz)); } diff --git a/libc/intrin/getsafesize.greg.c b/libc/intrin/getsafesize.greg.c index 0148889a7..91e93d8d5 100644 --- a/libc/intrin/getsafesize.greg.c +++ b/libc/intrin/getsafesize.greg.c @@ -33,7 +33,8 @@ * allocation would likely cause a stack overflow */ privileged long __get_safe_size(long want, long extraspace) { - if (!__tls_enabled) return want; + if (!__tls_enabled) + return want; struct PosixThread *pt; struct CosmoTib *tib = __get_tls_privileged(); if (!IsAutoFrame((uintptr_t)tib >> 16) && @@ -52,6 +53,7 @@ privileged long __get_safe_size(long want, long extraspace) { return want; } long size = sp - bottom - extraspace; - if (size > want) size = want; + if (size > want) + size = want; return size; } diff --git a/libc/intrin/isdebuggerpresent.c b/libc/intrin/isdebuggerpresent.c index e682cc298..60fa89826 100644 --- a/libc/intrin/isdebuggerpresent.c +++ b/libc/intrin/isdebuggerpresent.c @@ -49,11 +49,16 @@ bool32 IsDebuggerPresent(bool32 force) { ssize_t got; int e, fd, res; char *p, buf[1024]; - if (!force && IsGenuineBlink()) return 0; - if (!force && environ && __getenv(environ, "HEISENDEBUG").s) return 0; - if (IsWindows()) return IsBeingDebugged(); - if (__isworker) return false; - if (!PLEDGED(RPATH)) return false; + if (!force && IsGenuineBlink()) + return 0; + if (!force && environ && __getenv(environ, "HEISENDEBUG").s) + return 0; + if (IsWindows()) + return IsBeingDebugged(); + if (__isworker) + return false; + if (!PLEDGED(RPATH)) + return false; res = 0; e = errno; BLOCK_CANCELATION; diff --git a/libc/intrin/iswsl.c b/libc/intrin/iswsl.c index f3d60431a..9bc77ac60 100644 --- a/libc/intrin/iswsl.c +++ b/libc/intrin/iswsl.c @@ -35,8 +35,10 @@ */ bool __iswsl1(void) { static char res; - if (res) return res & 1; - if (!IsLinux()) return res = 2, false; + if (res) + return res & 1; + if (!IsLinux()) + return res = 2, false; int e = errno; unassert(__sys_mmap((void *)1, 4096, PROT_READ | PROT_WRITE, MAP_FIXED | MAP_PRIVATE | ANONYMOUS | GROWSDOWN, -1, 0, diff --git a/libc/intrin/kprintf.greg.c b/libc/intrin/kprintf.greg.c index cb4c87659..420835f59 100644 --- a/libc/intrin/kprintf.greg.c +++ b/libc/intrin/kprintf.greg.c @@ -121,7 +121,8 @@ extern struct SymbolTable *__symtab; __funline char *kadvance(char *p, char *e, long n) { intptr_t t = (intptr_t)p; - if (ckd_add(&t, t, n)) t = (intptr_t)e; + if (ckd_add(&t, t, n)) + t = (intptr_t)e; return (char *)t; } @@ -154,8 +155,10 @@ __funline bool kisimagepointer(const void *p) { } __funline bool kischarmisaligned(const char *p, signed char t) { - if (t == -1) return (intptr_t)p & 1; - if (t >= 1) return !!((intptr_t)p & 3); + if (t == -1) + return (intptr_t)p & 1; + if (t >= 1) + return !!((intptr_t)p & 3); return false; } @@ -168,8 +171,10 @@ __funline bool kismemtrackhosed(void) { privileged static bool kismapped(int x) { // xxx: we can't lock because no reentrant locks yet size_t m, r, l = 0; - if (!_weaken(_mmi)) return true; - if (kismemtrackhosed()) return false; + if (!_weaken(_mmi)) + return true; + if (kismemtrackhosed()) + return false; r = _weaken(_mmi)->i; while (l < r) { m = (l & r) + ((l ^ r) >> 1); // floor((a+b)/2) @@ -188,13 +193,18 @@ privileged static bool kismapped(int x) { privileged bool32 kisdangerous(const void *p) { int frame; - if (kisimagepointer(p)) return false; - if (kiskernelpointer(p)) return false; - if (IsOldStack(p)) return false; + if (kisimagepointer(p)) + return false; + if (kiskernelpointer(p)) + return false; + if (IsOldStack(p)) + return false; if (IsLegalPointer(p)) { frame = (uintptr_t)p >> 16; - if (IsStackFrame(frame)) return false; - if (kismapped(frame)) return false; + if (IsStackFrame(frame)) + return false; + if (kismapped(frame)) + return false; } if (GetStackAddr() + GetGuardSize() <= (uintptr_t)p && (uintptr_t)p < GetStackAddr() + GetStackSize()) { @@ -228,7 +238,8 @@ privileged static long klogfcntl(long fd, long cmd, long arg) { : CFLAG_CONSTRAINT(cf), "+a"(ax), "+D"(fd), "+S"(cmd), "+d"(arg) : /* inputs already specified */ : "rcx", "r8", "r9", "r10", "r11", "memory"); - if (cf) ax = -ax; + if (cf) + ax = -ax; return ax; #elif defined(__aarch64__) register long x0 asm("x0") = fd; @@ -264,7 +275,8 @@ privileged static long klogopen(const char *path) { "+d"(flags), "+r"(r10) : /* inputs already specified */ : "rcx", "r8", "r9", "r11", "memory"); - if (cf) ax = -ax; + if (cf) + ax = -ax; return ax; #elif defined(__aarch64__) register long x0 asm("x0") = dirfd; @@ -376,7 +388,8 @@ privileged void _klog_serial(const char *b, size_t n) { for (;;) { dx = 0x3F8 + UART_LSR; asm("inb\t%1,%0" : "=a"(al) : "dN"(dx)); - if (al & UART_TTYTXR) break; + if (al & UART_TTYTXR) + break; asm("pause"); } dx = 0x3F8; @@ -448,19 +461,24 @@ privileged static size_t kformat(char *b, size_t n, const char *fmt, unsigned long long x; unsigned i, j, m, rem, sign, hash, cols, prec; char c, *p, *e, pdot, zero, flip, dang, base, quot, uppr, ansi, z[128]; - if (kistextpointer(b) || kisdangerous(b)) n = 0; - if (!kistextpointer(fmt)) fmt = "!!WONTFMT"; + if (kistextpointer(b) || kisdangerous(b)) + n = 0; + if (!kistextpointer(fmt)) + fmt = "!!WONTFMT"; p = b; f = fmt; e = p + n; // assume if n was negative e < p will be the case for (;;) { for (;;) { - if (!(c = *f++) || c == '%') break; + if (!(c = *f++) || c == '%') + break; EmitFormatByte: - if (p < e) *p = c; + if (p < e) + *p = c; ++p; } - if (!c) break; + if (!c) + break; pdot = 0; flip = 0; dang = 0; @@ -632,21 +650,26 @@ privileged static size_t kformat(char *b, size_t n, const char *fmt, sign = '-'; } FormatUnsigned: - if (x && hash) sign = hash; + if (x && hash) + sign = hash; for (i = j = 0;;) { x = __divmod10(x, &rem); z[i++ & 127] = '0' + rem; - if (pdot ? i >= prec : !x) break; + if (pdot ? i >= prec : !x) + break; if (quot && ++j == 3) { z[i++ & 127] = quot; j = 0; } } EmitNumber: - if (flip || pdot) zero = 0; + if (flip || pdot) + zero = 0; while (zero && sign) { - if (p < e) *p = sign; - if (cols) --cols; + if (p < e) + *p = sign; + if (cols) + --cols; sign >>= 8; ++p; } @@ -662,7 +685,8 @@ privileged static size_t kformat(char *b, size_t n, const char *fmt, } } while (sign) { - if (p < e) *p = sign; + if (p < e) + *p = sign; sign >>= 8; ++p; } @@ -686,14 +710,17 @@ privileged static size_t kformat(char *b, size_t n, const char *fmt, case 'b': base = 1; - if (hash) hash = '0' | 'b' << 8; + if (hash) + hash = '0' | 'b' << 8; BinaryNumber: KGETINT(x, va, type, false); FormatNumber: i = 0; m = (1 << base) - 1; - if (hash && x) sign = hash; - do z[i++ & 127] = abet[x & m]; + if (hash && x) + sign = hash; + do + z[i++ & 127] = abet[x & m]; while ((x >>= base) || (pdot && i < prec)); goto EmitNumber; @@ -702,7 +729,8 @@ privileged static size_t kformat(char *b, size_t n, const char *fmt, /* fallthrough */ case 'x': base = 4; - if (hash) hash = '0' | 'x' << 8; + if (hash) + hash = '0' | 'x' << 8; goto BinaryNumber; case 'o': @@ -711,7 +739,8 @@ privileged static size_t kformat(char *b, size_t n, const char *fmt, case 'p': x = va_arg(va, intptr_t); - if (!x && pdot) pdot = 0; + if (!x && pdot) + pdot = 0; if ((long)x == -1) { pdot = 0; goto FormatDecimal; @@ -730,14 +759,18 @@ privileged static size_t kformat(char *b, size_t n, const char *fmt, x = 0; s = (const char *)&x; t = va_arg(va, int); - if (!type) t &= 255; + if (!type) + t &= 255; if (hash) { quot = 1; hash = '\''; p = kemitquote(p, e, type, hash); - if (cols && type) --cols; // u/L - if (cols) --cols; // start quote - if (cols) --cols; // end quote + if (cols && type) + --cols; // u/L + if (cols) + --cols; // start quote + if (cols) + --cols; // end quote } goto EmitChar; @@ -771,7 +804,8 @@ privileged static size_t kformat(char *b, size_t n, const char *fmt, x = va_arg(va, intptr_t); if (_weaken(__symtab) && *_weaken(__symtab) && (idx = _weaken(__get_symbol)(0, x)) != -1) { - if (p + 1 <= e) *p++ = '&'; + if (p + 1 <= e) + *p++ = '&'; s = (*_weaken(__symtab))->name_base + (*_weaken(__symtab))->names[idx]; goto FormatString; @@ -783,7 +817,8 @@ privileged static size_t kformat(char *b, size_t n, const char *fmt, case 'n': // nonstandard %n specifier - if (p < e) *p = '\n'; + if (p < e) + *p = '\n'; ++p; break; @@ -806,7 +841,8 @@ privileged static size_t kformat(char *b, size_t n, const char *fmt, type = 0; } else if (!dang && (kisdangerous(s) || kischarmisaligned(s, type))) { if (sign == ' ') { - if (p < e) *p = ' '; + if (p < e) + *p = ' '; ++p; } x = (intptr_t)s; @@ -816,22 +852,29 @@ privileged static size_t kformat(char *b, size_t n, const char *fmt, } else if (hash) { quot = 1; hash = '"'; - if (cols && type) --cols; // u/L - if (cols) --cols; // start quote - if (cols) --cols; // end quote + if (cols && type) + --cols; // u/L + if (cols) + --cols; // start quote + if (cols) + --cols; // end quote p = kemitquote(p, e, type, hash); } if (sign == ' ' && (!pdot || prec) && s && *s) { - if (p < e) *p = ' '; + if (p < e) + *p = ' '; ++p; } for (i = j = 0; !pdot || j < prec; ++j) { if (UNLIKELY(!((intptr_t)s & 4095))) { - if (!dang && kisdangerous(s)) break; + if (!dang && kisdangerous(s)) + break; } if (!type) { - if (!(t = *s++ & 255)) break; - if ((t & 0300) == 0200) goto ActuallyEmitByte; + if (!(t = *s++ & 255)) + break; + if ((t & 0300) == 0200) + goto ActuallyEmitByte; ++i; EmitByte: if (uppr && 'a' <= t && t <= 'z') { @@ -851,7 +894,8 @@ privileged static size_t kformat(char *b, size_t n, const char *fmt, (t != 0x7F && (t >= 0x20 || (t == '\n' || t == '\t' || t == '\r' || t == '\e')))) { ActuallyEmitByte: - if (p < e) *p = t; + if (p < e) + *p = t; p += 1; continue; } else if (quot) { @@ -889,7 +933,8 @@ privileged static size_t kformat(char *b, size_t n, const char *fmt, if (IsHighSurrogate(t)) { if (!pdot || j + 1 < prec) { if (UNLIKELY(!((intptr_t)s & 4095))) { - if (!dang && kisdangerous(s)) break; + if (!dang && kisdangerous(s)) + break; } u = *(const char16_t *)s; if (IsLowSurrogate(u)) { @@ -907,10 +952,12 @@ privileged static size_t kformat(char *b, size_t n, const char *fmt, t = *(const wchar_t *)s; s += sizeof(wchar_t); } - if (!t) break; + if (!t) + break; ++i; EmitChar: - if (t <= 0x7f) goto EmitByte; + if (t <= 0x7f) + goto EmitByte; if (uppr) { if (_weaken(towupper)) { t = _weaken(towupper)(t); @@ -948,7 +995,8 @@ privileged static size_t kformat(char *b, size_t n, const char *fmt, } } if (hash) { - if (p < e) *p = hash; + if (p < e) + *p = hash; ++p; } while (cols > i) { diff --git a/libc/intrin/lockfileex.c b/libc/intrin/lockfileex.c index 1a41729b5..e156ebe54 100644 --- a/libc/intrin/lockfileex.c +++ b/libc/intrin/lockfileex.c @@ -44,7 +44,8 @@ bool32 LockFileEx(int64_t hFile, uint32_t dwFlags, uint32_t dwReserved, } ok = __imp_LockFileEx(hFile, dwFlags, dwReserved, nNumberOfBytesToLockLow, nNumberOfBytesToLockHigh, lpOverlapped); - if (!ok) __winerr(); + if (!ok) + __winerr(); NTTRACE("LockFileEx(%ld, %s, %#x, %'zu, [%s]) → %hhhd% m", hFile, DescribeNtLockFileFlags(dwFlags), dwReserved, (uint64_t)nNumberOfBytesToLockHigh << 32 | nNumberOfBytesToLockLow, diff --git a/libc/intrin/mapviewoffileex.c b/libc/intrin/mapviewoffileex.c index 9ea8d093a..3841269bf 100644 --- a/libc/intrin/mapviewoffileex.c +++ b/libc/intrin/mapviewoffileex.c @@ -44,7 +44,8 @@ textwindows void *MapViewOfFileEx(int64_t hFileMappingObject, pStartingAddress = __imp_MapViewOfFileEx( hFileMappingObject, dwDesiredAccess, dwFileOffsetHigh, dwFileOffsetLow, dwNumberOfBytesToMap, opt_lpDesiredBaseAddress); - if (!pStartingAddress) __winerr(); + if (!pStartingAddress) + __winerr(); NTTRACE("MapViewOfFileEx(%ld, %s, %'ld, %'zu, %p) → %p% m", hFileMappingObject, DescribeNtFileMapFlags(dwDesiredAccess), (uint64_t)dwFileOffsetHigh << 32 | dwFileOffsetLow, diff --git a/libc/intrin/mapviewoffileexnuma.c b/libc/intrin/mapviewoffileexnuma.c index 5f1b32aca..2ee4e40de 100644 --- a/libc/intrin/mapviewoffileexnuma.c +++ b/libc/intrin/mapviewoffileexnuma.c @@ -46,7 +46,8 @@ textwindows void *MapViewOfFileExNuma(int64_t hFileMappingObject, pStartingAddress = __imp_MapViewOfFileExNuma( hFileMappingObject, dwDesiredAccess, dwFileOffsetHigh, dwFileOffsetLow, dwNumberOfBytesToMap, opt_lpDesiredBaseAddress, nndDesiredNumaNode); - if (!pStartingAddress) __winerr(); + if (!pStartingAddress) + __winerr(); NTTRACE("MapViewOfFileExNuma(%ld, %s, %'ld, %'zu, %p) → %p% m", hFileMappingObject, DescribeNtFileMapFlags(dwDesiredAccess), (uint64_t)dwFileOffsetHigh << 32 | dwFileOffsetLow, diff --git a/libc/intrin/memcmp.c b/libc/intrin/memcmp.c index 8c1430c4e..ad8387166 100644 --- a/libc/intrin/memcmp.c +++ b/libc/intrin/memcmp.c @@ -143,8 +143,10 @@ int memcmp(const void *a, const void *b, size_t n) { uint64_t w, x, y; #endif const unsigned char *p, *q; - if ((p = a) == (q = b) || !n) return 0; - if ((c = *p - *q)) return c; + if ((p = a) == (q = b) || !n) + return 0; + if ((c = *p - *q)) + return c; #if defined(__x86_64__) && !defined(__chibicc__) if (!IsTiny()) { if (n <= 16) { diff --git a/libc/intrin/memmove.c b/libc/intrin/memmove.c index 493210aac..b67842c50 100644 --- a/libc/intrin/memmove.c +++ b/libc/intrin/memmove.c @@ -153,7 +153,8 @@ static __vex void *__memmove(void *dst, const void *src, size_t n) { *(xmm_t *)(d + n - 16) = Y; return d; default: - if (d == s) return d; + if (d == s) + return d; #if defined(__x86_64__) && !defined(__chibicc__) if (n < kHalfCache3 || !kHalfCache3) { diff --git a/libc/intrin/memtrack.greg.c b/libc/intrin/memtrack.greg.c index 368ab608a..3027e51d9 100644 --- a/libc/intrin/memtrack.greg.c +++ b/libc/intrin/memtrack.greg.c @@ -71,10 +71,12 @@ static bool __extend_memory(struct MemoryIntervals *mm) { if (1 || IsAsan()) { shad = (char *)(((intptr_t)base >> 3) + 0x7fff8000); dm = sys_mmap(shad, gran >> 3, prot, flags, -1, 0); - if (!dm.addr) return false; + if (!dm.addr) + return false; } dm = sys_mmap(base, gran, prot, flags, -1, 0); - if (!dm.addr) return false; + if (!dm.addr) + return false; __shove_memory(dm.addr, mm->p, mm->i); mm->p = dm.addr; mm->n = gran / sizeof(*mm->p); @@ -84,10 +86,12 @@ static bool __extend_memory(struct MemoryIntervals *mm) { if (IsAsan()) { shad = (char *)(((intptr_t)base >> 3) + 0x7fff8000); dm = sys_mmap(shad, gran >> 3, prot, flags, -1, 0); - if (!dm.addr) return false; + if (!dm.addr) + return false; } dm = sys_mmap(base, gran, prot, flags, -1, 0); - if (!dm.addr) return false; + if (!dm.addr) + return false; mm->n = (size + gran) / sizeof(*mm->p); } return true; @@ -97,13 +101,15 @@ static int __mint_memory(struct MemoryIntervals *mm, int i) { unassert(i >= 0); unassert(i <= mm->i); unassert(mm->n >= 0); - if (mm->i == mm->n && !__extend_memory(mm)) return enomem(); + if (mm->i == mm->n && !__extend_memory(mm)) + return enomem(); __shove_memory(mm->p + i + 1, mm->p + i, mm->i++ - i); return 0; } static int __punch_memory(struct MemoryIntervals *mm, int x, int y, int i) { - if (__mint_memory(mm, i) == -1) return -1; + if (__mint_memory(mm, i) == -1) + return -1; mm->p[i + 0].size -= (size_t)(mm->p[i + 0].y - (x - 1)) * FRAMESIZE; mm->p[i + 0].y = x - 1; mm->p[i + 1].size -= (size_t)((y + 1) - mm->p[i + 1].x) * FRAMESIZE; @@ -115,15 +121,19 @@ int __untrack_memory(struct MemoryIntervals *mm, int x, int y, void wf(struct MemoryIntervals *, int, int)) { unsigned l, r; unassert(y >= x); - if (!mm->i) return 0; + if (!mm->i) + return 0; // binary search for the lefthand side l = __find_memory(mm, x); - if (l == mm->i) return 0; - if (y < mm->p[l].x) return 0; + if (l == mm->i) + return 0; + if (y < mm->p[l].x) + return 0; // binary search for the righthand side r = __find_memory(mm, y); - if (r == mm->i || (r > l && y < mm->p[r].x)) --r; + if (r == mm->i || (r > l && y < mm->p[r].x)) + --r; unassert(r >= l); unassert(x <= mm->p[r].y); @@ -147,7 +157,8 @@ int __untrack_memory(struct MemoryIntervals *mm, int x, int y, // if (x > mm->p[l].x && x <= mm->p[l].y) { unassert(y >= mm->p[l].y); - if (IsWindows()) return einval(); + if (IsWindows()) + return einval(); mm->p[l].size -= (size_t)(mm->p[l].y - (x - 1)) * FRAMESIZE; mm->p[l].y = x - 1; unassert(mm->p[l].x <= mm->p[l].y); @@ -162,7 +173,8 @@ int __untrack_memory(struct MemoryIntervals *mm, int x, int y, // if (y >= mm->p[r].x && y < mm->p[r].y) { unassert(x <= mm->p[r].x); - if (IsWindows()) return einval(); + if (IsWindows()) + return einval(); mm->p[r].size -= (size_t)((y + 1) - mm->p[r].x) * FRAMESIZE; mm->p[r].x = y + 1; unassert(mm->p[r].x <= mm->p[r].y); @@ -214,7 +226,8 @@ int __track_memory(struct MemoryIntervals *mm, int x, int y, long h, int prot, // otherwise, create a new entry and memmove the items else { - if (__mint_memory(mm, i) == -1) return -1; + if (__mint_memory(mm, i) == -1) + return -1; mm->p[i].x = x; mm->p[i].y = y; mm->p[i].h = h; diff --git a/libc/intrin/mman.greg.c b/libc/intrin/mman.greg.c index 6c886df53..cb9274a1b 100644 --- a/libc/intrin/mman.greg.c +++ b/libc/intrin/mman.greg.c @@ -79,7 +79,8 @@ texthead uint64_t __new_page(struct mman *mm) { return 0; } while (mm->pdp >= mm->e820[mm->pdpi].addr + mm->e820[mm->pdpi].size) { - if (++mm->pdpi == mm->e820n) return 0; + if (++mm->pdpi == mm->e820n) + return 0; mm->pdp = MAX(mm->pdp, mm->e820[mm->pdpi].addr); } p = mm->pdp; @@ -98,10 +99,13 @@ textreal uint64_t *__get_virtual(struct mman *mm, uint64_t *t, int64_t vaddr, unsigned char h; for (h = 39;; h -= 9) { e = t + ((vaddr >> h) & 511); - if (h == 12) return e; + if (h == 12) + return e; if (!(*e & (PAGE_V | PAGE_RSRV))) { - if (!maketables) return NULL; - if (!(p = __new_page(mm))) return NULL; + if (!maketables) + return NULL; + if (!(p = __new_page(mm))) + return NULL; __clear_page(BANE + p); *e = p | PAGE_V | PAGE_RW; } @@ -215,7 +219,8 @@ void __unref_page(struct mman *mm, uint64_t *pml4t, uint64_t p) { if ((e & PAGE_REFC) != PAGE_REFC) { e -= PAGE_1REF; *m = e; - if ((e & PAGE_REFC) == 0) __reclaim_page(mm, p); + if ((e & PAGE_REFC) == 0) + __reclaim_page(mm, p); } } } @@ -229,7 +234,8 @@ static textreal void __invert_memory(struct mman *mm, uint64_t *pml4t) { for (i = 0; i < mm->e820n; ++i) { uint64_t ps = mm->e820[i].addr, size = mm->e820[i].size; /* ape/ape.S has already mapped the first 2 MiB of physical memory. */ - if (ps < 0x200000 && ps + size <= 0x200000) continue; + if (ps < 0x200000 && ps + size <= 0x200000) + continue; __invert_memory_area(mm, pml4t, ps, size, PAGE_RW | PAGE_XD); } } @@ -275,13 +281,15 @@ static textreal uint64_t __map_phdr(struct mman *mm, uint64_t *pml4t, uint64_t b, uint64_t m, struct Elf64_Phdr *p) { uint64_t i, f, v; - if (p->p_type != PT_LOAD) return m; + if (p->p_type != PT_LOAD) + return m; f = PAGE_RSRV | PAGE_U; if (p->p_flags & PF_W) f |= PAGE_V | PAGE_RW; else if (p->p_flags & (PF_R | PF_X)) f |= PAGE_V; - if (!(p->p_flags & PF_X)) f |= PAGE_XD; + if (!(p->p_flags & PF_X)) + f |= PAGE_XD; for (i = 0; i < p->p_memsz; i += 4096) { if (i < p->p_filesz) { v = b + p->p_offset + i; @@ -336,14 +344,16 @@ textreal void __reclaim_boot_pages(struct mman *mm, uint64_t skip_start, uint64_t p = mm->frp, q = IMAGE_BASE_REAL, i, n = mm->e820n, b, e; for (i = 0; i < n; ++i) { b = mm->e820[i].addr; - if (b >= IMAGE_BASE_PHYSICAL) break; + if (b >= IMAGE_BASE_PHYSICAL) + break; e = MIN(IMAGE_BASE_PHYSICAL, b + mm->e820[i].size); q = MAX(IMAGE_BASE_REAL, b); while (q < e) { struct ReclaimedPage *rp; if (q == skip_start) { q = skip_end; - if (q >= e) break; + if (q >= e) + break; } rp = (struct ReclaimedPage *)(BANE + q); rp->next = p; diff --git a/libc/intrin/movefileex.c b/libc/intrin/movefileex.c index 29d6b84cc..66e32fe02 100644 --- a/libc/intrin/movefileex.c +++ b/libc/intrin/movefileex.c @@ -33,7 +33,8 @@ textwindows bool32 MoveFileEx(const char16_t *lpExistingFileName, const char16_t *lpNewFileName, int dwFlags) { bool32 ok; ok = __imp_MoveFileExW(lpExistingFileName, lpNewFileName, dwFlags); - if (!ok) __winerr(); + if (!ok) + __winerr(); NTTRACE("MoveFileEx(%#hs, %#hs, %s) → %hhhd% m", lpExistingFileName, lpNewFileName, DescribeNtMovFileInpFlags(dwFlags), ok); return ok; diff --git a/libc/intrin/mulvti3.c b/libc/intrin/mulvti3.c index cf0e43eef..fe7f84b71 100644 --- a/libc/intrin/mulvti3.c +++ b/libc/intrin/mulvti3.c @@ -30,6 +30,7 @@ int128_t __mulvti3(int128_t x, int128_t y) { int o; int128_t z; z = __muloti4(x, y, &o); - if (o) __on_arithmetic_overflow(); + if (o) + __on_arithmetic_overflow(); return z; } diff --git a/libc/intrin/ntcontext2linux.c b/libc/intrin/ntcontext2linux.c index c5e68a8cb..a57caf33b 100644 --- a/libc/intrin/ntcontext2linux.c +++ b/libc/intrin/ntcontext2linux.c @@ -23,7 +23,8 @@ #ifdef __x86_64__ textwindows void _ntcontext2linux(ucontext_t *ctx, const struct NtContext *cr) { - if (!cr) return; + if (!cr) + return; ctx->uc_mcontext.eflags = cr->EFlags; ctx->uc_mcontext.rax = cr->Rax; ctx->uc_mcontext.rbx = cr->Rbx; @@ -50,7 +51,8 @@ textwindows void _ntcontext2linux(ucontext_t *ctx, const struct NtContext *cr) { } textwindows void _ntlinux2context(struct NtContext *cr, const ucontext_t *ctx) { - if (!cr) return; + if (!cr) + return; cr->EFlags = ctx->uc_mcontext.eflags; cr->Rax = ctx->uc_mcontext.rax; cr->Rbx = ctx->uc_mcontext.rbx; diff --git a/libc/intrin/openprocess.c b/libc/intrin/openprocess.c index 58a5254b9..338da91bf 100644 --- a/libc/intrin/openprocess.c +++ b/libc/intrin/openprocess.c @@ -38,7 +38,8 @@ textwindows int64_t OpenProcess(uint32_t dwDesiredAccess, bool32 bInheritHandle, uint32_t dwProcessId) { int64_t hHandle; hHandle = __imp_OpenProcess(dwDesiredAccess, bInheritHandle, dwProcessId); - if (!hHandle) __winerr(); + if (!hHandle) + __winerr(); NTTRACE("OpenProcess(%s, %hhhd, %u) → %ld% m", DescribeNtProcAccessFlags(dwDesiredAccess), bInheritHandle, dwProcessId, hHandle); diff --git a/libc/intrin/packsswb.c b/libc/intrin/packsswb.c index 1924569ba..da3fa67b9 100644 --- a/libc/intrin/packsswb.c +++ b/libc/intrin/packsswb.c @@ -32,7 +32,9 @@ void(packsswb)(int8_t a[16], const int16_t b[8], const int16_t c[8]) { unsigned i; int8_t r[16]; - for (i = 0; i < 8; ++i) r[i + 0] = MIN(INT8_MAX, MAX(INT8_MIN, b[i])); - for (i = 0; i < 8; ++i) r[i + 8] = MIN(INT8_MAX, MAX(INT8_MIN, c[i])); + for (i = 0; i < 8; ++i) + r[i + 0] = MIN(INT8_MAX, MAX(INT8_MIN, b[i])); + for (i = 0; i < 8; ++i) + r[i + 8] = MIN(INT8_MAX, MAX(INT8_MIN, c[i])); __builtin_memcpy(a, r, 16); } diff --git a/libc/intrin/packuswb.c b/libc/intrin/packuswb.c index 1a1586727..66d9c766f 100644 --- a/libc/intrin/packuswb.c +++ b/libc/intrin/packuswb.c @@ -32,7 +32,9 @@ void(packuswb)(uint8_t a[16], const int16_t b[8], const int16_t c[8]) { unsigned i; uint8_t r[16]; - for (i = 0; i < 8; ++i) r[i + 0] = MIN(UINT8_MAX, MAX(UINT8_MIN, b[i])); - for (i = 0; i < 8; ++i) r[i + 8] = MIN(UINT8_MAX, MAX(UINT8_MIN, c[i])); + for (i = 0; i < 8; ++i) + r[i + 0] = MIN(UINT8_MAX, MAX(UINT8_MIN, b[i])); + for (i = 0; i < 8; ++i) + r[i + 8] = MIN(UINT8_MAX, MAX(UINT8_MIN, c[i])); __builtin_memcpy(a, r, 16); } diff --git a/libc/intrin/pcmpgtb.c b/libc/intrin/pcmpgtb.c index 9ad51b59b..f1c895d72 100644 --- a/libc/intrin/pcmpgtb.c +++ b/libc/intrin/pcmpgtb.c @@ -32,6 +32,7 @@ void(pcmpgtb)(int8_t a[16], const int8_t b[16], const int8_t c[16]) { unsigned i; int8_t r[16]; - for (i = 0; i < 16; ++i) r[i] = -(b[i] > c[i]); + for (i = 0; i < 16; ++i) + r[i] = -(b[i] > c[i]); __builtin_memcpy(a, r, 16); } diff --git a/libc/intrin/pcmpgtw.c b/libc/intrin/pcmpgtw.c index 02d1f90c1..7bf94ef49 100644 --- a/libc/intrin/pcmpgtw.c +++ b/libc/intrin/pcmpgtw.c @@ -30,6 +30,7 @@ void(pcmpgtw)(int16_t a[8], const int16_t b[8], const int16_t c[8]) { unsigned i; int16_t r[8]; - for (i = 0; i < 8; ++i) r[i] = -(b[i] > c[i]); + for (i = 0; i < 8; ++i) + r[i] = -(b[i] > c[i]); __builtin_memcpy(a, r, 16); } diff --git a/libc/intrin/pmovmskb.c b/libc/intrin/pmovmskb.c index 4432d088d..0ff024d1d 100644 --- a/libc/intrin/pmovmskb.c +++ b/libc/intrin/pmovmskb.c @@ -27,7 +27,8 @@ uint32_t(pmovmskb)(const uint8_t p[16]) { uint32_t i, m; for (m = i = 0; i < 16; ++i) { - if (p[i] & 0x80) m |= 1 << i; + if (p[i] & 0x80) + m |= 1 << i; } return m; } diff --git a/libc/intrin/pmulhrsw.c b/libc/intrin/pmulhrsw.c index 00a97656f..4326542e0 100644 --- a/libc/intrin/pmulhrsw.c +++ b/libc/intrin/pmulhrsw.c @@ -30,6 +30,7 @@ void(pmulhrsw)(int16_t a[8], const int16_t b[8], const int16_t c[8]) { unsigned i; int16_t r[8]; - for (i = 0; i < 8; ++i) r[i] = (((b[i] * c[i]) >> 14) + 1) >> 1; + for (i = 0; i < 8; ++i) + r[i] = (((b[i] * c[i]) >> 14) + 1) >> 1; __builtin_memcpy(a, r, 16); } diff --git a/libc/intrin/printmemoryintervals.c b/libc/intrin/printmemoryintervals.c index 2cab88cf2..8961705ad 100644 --- a/libc/intrin/printmemoryintervals.c +++ b/libc/intrin/printmemoryintervals.c @@ -43,8 +43,10 @@ void PrintMemoryIntervals(int fd, const struct MemoryIntervals *mm) { kprintf("%08x-%08x %s %'*ldx %s", mm->p[i].x, mm->p[i].y, (DescribeMapping)(mappingbuf, mm->p[i].prot, mm->p[i].flags), w, frames, (DescribeFrame)(framebuf, mm->p[i].x)); - if (mm->p[i].iscow) kprintf(" cow"); - if (mm->p[i].readonlyfile) kprintf(" readonlyfile"); + if (mm->p[i].iscow) + kprintf(" cow"); + if (mm->p[i].readonlyfile) + kprintf(" readonlyfile"); sizefmt(sb, mm->p[i].size, 1024); kprintf(" %sB", sb); if (i + 1 < mm->i) { diff --git a/libc/intrin/psraw.c b/libc/intrin/psraw.c index 576cc34e3..0ea62c129 100644 --- a/libc/intrin/psraw.c +++ b/libc/intrin/psraw.c @@ -27,7 +27,8 @@ */ void(psraw)(int16_t a[8], const int16_t b[8], unsigned char k) { unsigned i; - if (k > 15) k = 15; + if (k > 15) + k = 15; for (i = 0; i < 8; ++i) { a[i] = b[i] >> k; } diff --git a/libc/intrin/pthread_syshand.c b/libc/intrin/pthread_syshand.c index 9557a0c2b..856ce3323 100644 --- a/libc/intrin/pthread_syshand.c +++ b/libc/intrin/pthread_syshand.c @@ -27,7 +27,8 @@ intptr_t _pthread_syshand(struct PosixThread *pt) { unassert(IsWindows() || IsXnuSilicon()); for (;;) { syshand = atomic_load_explicit(&pt->tib->tib_syshand, memory_order_acquire); - if (syshand) return syshand; + if (syshand) + return syshand; pthread_pause_np(); } } diff --git a/libc/intrin/rand64.c b/libc/intrin/rand64.c index 90732e64f..f631d109f 100644 --- a/libc/intrin/rand64.c +++ b/libc/intrin/rand64.c @@ -46,7 +46,8 @@ static struct { uint64_t _rand64(void) { void *p; uint128_t s; - if (__threaded) pthread_spin_lock(&g_rand64.lock); + if (__threaded) + pthread_spin_lock(&g_rand64.lock); if (__pid == g_rand64.thepid) { s = g_rand64.thepool; // normal path } else { diff --git a/libc/intrin/reservefd.c b/libc/intrin/reservefd.c index 447f7ff2e..1be7e4b4f 100644 --- a/libc/intrin/reservefd.c +++ b/libc/intrin/reservefd.c @@ -36,7 +36,8 @@ */ int __ensurefds_unlocked(int fd) { size_t n; - if (fd < g_fds.n) return fd; + if (fd < g_fds.n) + return fd; n = fd + 1; g_fds.e = _extend(g_fds.p, n * sizeof(*g_fds.p), g_fds.e, MAP_PRIVATE, kMemtrackFdsStart + kMemtrackFdsSize); diff --git a/libc/intrin/setcurrentdirectory.c b/libc/intrin/setcurrentdirectory.c index 9e8ed397e..ae8b70c43 100644 --- a/libc/intrin/setcurrentdirectory.c +++ b/libc/intrin/setcurrentdirectory.c @@ -31,7 +31,8 @@ __msabi extern typeof(SetCurrentDirectory) *const __imp_SetCurrentDirectoryW; textwindows bool32 SetCurrentDirectory(const char16_t *lpPathName) { bool32 ok; ok = __imp_SetCurrentDirectoryW(lpPathName); - if (!ok) __winerr(); + if (!ok) + __winerr(); NTTRACE("SetCurrentDirectory(%#hs) → %hhhd% m", lpPathName, ok); return ok; } diff --git a/libc/intrin/sigcountset.c b/libc/intrin/sigcountset.c index f300c9361..77cc4baf8 100644 --- a/libc/intrin/sigcountset.c +++ b/libc/intrin/sigcountset.c @@ -30,6 +30,7 @@ */ int sigcountset(const sigset_t *set) { uint64_t x = *set; - if (IsOpenbsd() || IsXnu()) x &= 0xffffffff; + if (IsOpenbsd() || IsXnu()) + x &= 0xffffffff; return popcnt(x); } diff --git a/libc/intrin/sigfillset.c b/libc/intrin/sigfillset.c index aa7d24912..506b72c8f 100644 --- a/libc/intrin/sigfillset.c +++ b/libc/intrin/sigfillset.c @@ -29,11 +29,13 @@ */ int sigfillset(sigset_t *set) { *set = -1; - *set &= ~(1ull << (SIGTHR - 1)); // only libc should mask - *set &= ~(1ull << (SIGABRT - 1)); // it's annoying to mask - *set &= ~(1ull << (SIGKILL - 1)); // it's impossible to mask - *set &= ~(1ull << (SIGSTOP - 1)); // it's impossible to mask - if (IsOpenbsd()) *set &= 0xffffffff; // it doesn't really exist - if (IsXnu()) *set &= 0xffffffff; // it doesn't really exist + *set &= ~(1ull << (SIGTHR - 1)); // only libc should mask + *set &= ~(1ull << (SIGABRT - 1)); // it's annoying to mask + *set &= ~(1ull << (SIGKILL - 1)); // it's impossible to mask + *set &= ~(1ull << (SIGSTOP - 1)); // it's impossible to mask + if (IsOpenbsd()) + *set &= 0xffffffff; // it doesn't really exist + if (IsXnu()) + *set &= 0xffffffff; // it doesn't really exist return 0; } diff --git a/libc/intrin/sizefmt.c b/libc/intrin/sizefmt.c index 680163ff9..a3cb8ea6b 100644 --- a/libc/intrin/sizefmt.c +++ b/libc/intrin/sizefmt.c @@ -47,7 +47,8 @@ char *sizefmt(char *p, uint64_t x, uint64_t b) { } } p = FormatUint64(p, x); - if (suffix) *p++ = suffix; + if (suffix) + *p++ = suffix; *p = 0; return p; } diff --git a/libc/intrin/stracef.greg.c b/libc/intrin/stracef.greg.c index abe36383c..3bbfe1166 100644 --- a/libc/intrin/stracef.greg.c +++ b/libc/intrin/stracef.greg.c @@ -24,7 +24,8 @@ dontinstrument void __stracef(const char *fmt, ...) { va_list v; - if (strace_enabled(0) <= 0) return; + if (strace_enabled(0) <= 0) + return; va_start(v, fmt); kvprintf(fmt, v); va_end(v); diff --git a/libc/intrin/strchr.c b/libc/intrin/strchr.c index 4d05ffb05..77c6ab0d5 100644 --- a/libc/intrin/strchr.c +++ b/libc/intrin/strchr.c @@ -24,8 +24,10 @@ static inline const char *strchr_pure(const char *s, int c) { for (;; ++s) { - if ((*s & 255) == (c & 255)) return s; - if (!*s) return 0; + if ((*s & 255) == (c & 255)) + return s; + if (!*s) + return 0; } } @@ -50,7 +52,8 @@ static __vex const char *strchr_sse(const char *s, unsigned char c) { } m = __builtin_ctzl(m); s = (const char *)p + m; - if (c && !*s) s = 0; + if (c && !*s) + s = 0; return s; } #endif @@ -106,8 +109,10 @@ char *strchr(const char *s, int c) { #else const char *r; for (c &= 255; (uintptr_t)s & 7; ++s) { - if ((*s & 255) == c) return (char *)s; - if (!*s) return NULL; + if ((*s & 255) == c) + return (char *)s; + if (!*s) + return NULL; } return (char *)strchr_x64(s, c); #endif diff --git a/libc/intrin/strchrnul.c b/libc/intrin/strchrnul.c index b61cebde7..2339e066c 100644 --- a/libc/intrin/strchrnul.c +++ b/libc/intrin/strchrnul.c @@ -24,8 +24,10 @@ static inline const char *strchrnul_pure(const char *s, int c) { for (;; ++s) { - if ((*s & 255) == (c & 255)) return s; - if (!*s) return s; + if ((*s & 255) == (c & 255)) + return s; + if (!*s) + return s; } } @@ -105,8 +107,10 @@ __vex char *strchrnul(const char *s, int c) { #else char *r; for (c &= 255; (uintptr_t)s & 7; ++s) { - if ((*s & 0xff) == c) return s; - if (!*s) return s; + if ((*s & 0xff) == c) + return s; + if (!*s) + return s; } r = strchrnul_x64(s, c); assert((*r & 255) == c || !*r); diff --git a/libc/intrin/strcmp.c b/libc/intrin/strcmp.c index e34dc7563..0b4d4e73f 100644 --- a/libc/intrin/strcmp.c +++ b/libc/intrin/strcmp.c @@ -32,8 +32,10 @@ int strcmp(const char *a, const char *b) { int c; size_t i = 0; uint64_t v, w; - if (a == b) return 0; - if ((c = (*a & 255) - (*b & 255))) return c; + if (a == b) + return 0; + if ((c = (*a & 255) - (*b & 255))) + return c; if (!IsTiny() && ((uintptr_t)a & 7) == ((uintptr_t)b & 7)) { for (; (uintptr_t)(a + i) & 7; ++i) { if (a[i] != b[i] || !b[i]) { @@ -50,7 +52,8 @@ int strcmp(const char *a, const char *b) { } } } else { - while (a[i] == b[i] && b[i]) ++i; + while (a[i] == b[i] && b[i]) + ++i; } return (a[i] & 255) - (b[i] & 255); } diff --git a/libc/intrin/strlen.c b/libc/intrin/strlen.c index 72a32c33d..aabf2bfe4 100644 --- a/libc/intrin/strlen.c +++ b/libc/intrin/strlen.c @@ -27,7 +27,8 @@ static __vex size_t __strlen(const char *s) { unsigned m, k = (uintptr_t)s & 15; const xmm_t *p = (const xmm_t *)((uintptr_t)s & -16); m = __builtin_ia32_pmovmskb128(*p == z) >> k << k; - while (!m) m = __builtin_ia32_pmovmskb128(*++p == z); + while (!m) + m = __builtin_ia32_pmovmskb128(*++p == z); return (const char *)p + __builtin_ctzl(m) - s; #else #define ONES ((word) - 1 / 255) diff --git a/libc/intrin/strncmp.c b/libc/intrin/strncmp.c index 9e44466e6..5688e6ca9 100644 --- a/libc/intrin/strncmp.c +++ b/libc/intrin/strncmp.c @@ -29,8 +29,10 @@ */ int strncmp(const char *a, const char *b, size_t n) { size_t i = 0; - if (!n-- || a == b) return 0; - while (i < n && a[i] == b[i] && b[i]) ++i; + if (!n-- || a == b) + return 0; + while (i < n && a[i] == b[i] && b[i]) + ++i; return (a[i] & 0xff) - (b[i] & 0xff); } diff --git a/libc/intrin/strnlen.c b/libc/intrin/strnlen.c index 0fa5b52c1..f6510f933 100644 --- a/libc/intrin/strnlen.c +++ b/libc/intrin/strnlen.c @@ -44,11 +44,13 @@ static size_t strnlen_x64(const char *s, size_t n, size_t i) { size_t strnlen(const char *s, size_t n) { size_t i; for (i = 0; (uintptr_t)(s + i) & 7; ++i) { - if (i == n || !s[i]) return i; + if (i == n || !s[i]) + return i; } i = strnlen_x64(s, n, i); for (;; ++i) { - if (i == n || !s[i]) break; + if (i == n || !s[i]) + break; } unassert(i == n || (i < n && !s[i])); return i; diff --git a/libc/intrin/strsignal_r.c b/libc/intrin/strsignal_r.c index bd3a6d8f9..325838bf8 100644 --- a/libc/intrin/strsignal_r.c +++ b/libc/intrin/strsignal_r.c @@ -57,8 +57,10 @@ privileged const char *strsignal_r(int sig, char buf[21]) { } else { p = buf; } - if (sig >= 100) *p++ = '0' + (unsigned char)sig / 100 % 10; - if (sig >= 10) *p++ = '0' + (unsigned char)sig / 10 % 10; + if (sig >= 100) + *p++ = '0' + (unsigned char)sig / 100 % 10; + if (sig >= 10) + *p++ = '0' + (unsigned char)sig / 10 % 10; *p++ = '0' + (unsigned char)sig % 10; *p = 0; return buf; diff --git a/libc/intrin/tpenc.c b/libc/intrin/tpenc.c index 571209dd6..3d131dbbe 100644 --- a/libc/intrin/tpenc.c +++ b/libc/intrin/tpenc.c @@ -33,7 +33,8 @@ static const uint16_t kTpEnc[32 - 7] = { uint64_t tpenc(uint32_t c) { int e, n; uint64_t w; - if (0 <= c && c <= 127) return c; + if (0 <= c && c <= 127) + return c; e = kTpEnc[bsr(c) - 7]; n = e & 0xff; w = 0; diff --git a/libc/intrin/ubsan.c b/libc/intrin/ubsan.c index 5b3051ac5..35d9799e5 100644 --- a/libc/intrin/ubsan.c +++ b/libc/intrin/ubsan.c @@ -177,7 +177,8 @@ static char *__ubsan_itpcpy(char *p, struct UbsanTypeDescriptor *t, static size_t __ubsan_strlen(const char *s) { size_t i = 0; - while (s[i]) ++i; + while (s[i]) + ++i; return i; } @@ -208,7 +209,8 @@ static uintptr_t __ubsan_extend(struct UbsanTypeDescriptor *t, uintptr_t x) { } static wontreturn void __ubsan_unreachable(void) { - for (;;) abort(); + for (;;) + abort(); } static void __ubsan_exit(void) { @@ -314,7 +316,8 @@ static __ubsan_die_f *__ubsan_type_mismatch_handler( struct UbsanTypeMismatchInfo *info, uintptr_t pointer) { const char *kind; char buf[512], *p = buf; - if (!pointer) return __ubsan_abort(&info->location, "null pointer access"); + if (!pointer) + return __ubsan_abort(&info->location, "null pointer access"); kind = __ubsan_dubnul(kUbsanTypeCheckKinds, info->type_check_kind); if (info->alignment && (pointer & (info->alignment - 1))) { p = __ubsan_stpcpy(p, "unaligned "); diff --git a/libc/intrin/udivmodti4.c b/libc/intrin/udivmodti4.c index 8dfc565c4..fb996a0b7 100644 --- a/libc/intrin/udivmodti4.c +++ b/libc/intrin/udivmodti4.c @@ -52,7 +52,8 @@ forceinline du_int udiv128by64to64default(du_int u1, du_int u0, du_int v, while (q1 >= b || q1 * vn0 > b * rhat + un1) { q1 = q1 - 1; rhat = rhat + vn1; - if (rhat >= b) break; + if (rhat >= b) + break; } un21 = un64 * b + un1 - q1 * v; // Compute the second quotient digit. @@ -62,7 +63,8 @@ forceinline du_int udiv128by64to64default(du_int u1, du_int u0, du_int v, while (q0 >= b || q0 * vn0 > b * rhat + un0) { q0 = q0 - 1; rhat = rhat + vn1; - if (rhat >= b) break; + if (rhat >= b) + break; } *r = (un21 * b + un0 - q0 * v) >> s; return q1 * b + q0; @@ -92,7 +94,8 @@ tu_int __udivmodti4(tu_int a, tu_int b, tu_int *rem) { dividend.all = a; divisor.all = b; if (divisor.all > dividend.all) { - if (rem) *rem = dividend.all; + if (rem) + *rem = dividend.all; return 0; } // When the divisor fits in 64 bits, we can use an optimized path. @@ -111,7 +114,8 @@ tu_int __udivmodti4(tu_int a, tu_int b, tu_int *rem) { quotient.s.low = udiv128by64to64(dividend.s.high, dividend.s.low, divisor.s.low, &remainder.s.low); } - if (rem) *rem = remainder.all; + if (rem) + *rem = remainder.all; return quotient.all; } // 0 <= shift <= 63. @@ -132,7 +136,8 @@ tu_int __udivmodti4(tu_int a, tu_int b, tu_int *rem) { dividend.all -= divisor.all & s; divisor.all >>= 1; } - if (rem) *rem = dividend.all; + if (rem) + *rem = dividend.all; return quotient.all; } diff --git a/libc/intrin/unlockfileex.c b/libc/intrin/unlockfileex.c index 64aab4cee..46cc29248 100644 --- a/libc/intrin/unlockfileex.c +++ b/libc/intrin/unlockfileex.c @@ -39,7 +39,8 @@ bool32 UnlockFileEx(int64_t hFile, uint32_t dwReserved, bool32 ok; ok = __imp_UnlockFileEx(hFile, dwReserved, nNumberOfBytesToUnlockLow, nNumberOfBytesToUnlockHigh, lpOverlapped); - if (!ok) __winerr(); + if (!ok) + __winerr(); NTTRACE( "UnlockFileEx(%ld, %#x, %'zu, [%s]) → %hhhd% m", hFile, dwReserved, (uint64_t)nNumberOfBytesToUnlockHigh << 32 | nNumberOfBytesToUnlockLow, diff --git a/libc/intrin/unmapviewoffile.c b/libc/intrin/unmapviewoffile.c index 2479ad0b8..853893895 100644 --- a/libc/intrin/unmapviewoffile.c +++ b/libc/intrin/unmapviewoffile.c @@ -29,7 +29,8 @@ __msabi extern typeof(UnmapViewOfFile) *const __imp_UnmapViewOfFile; textwindows bool32 UnmapViewOfFile(const void *lpBaseAddress) { bool32 ok; ok = __imp_UnmapViewOfFile(lpBaseAddress); - if (!ok) __winerr(); + if (!ok) + __winerr(); NTTRACE("UnmapViewOfFile(%p) → %hhhd% m", lpBaseAddress, ok); return ok; } diff --git a/libc/intrin/unsetenv.c b/libc/intrin/unsetenv.c index 372c4358f..d96e1e4f4 100644 --- a/libc/intrin/unsetenv.c +++ b/libc/intrin/unsetenv.c @@ -33,7 +33,8 @@ int unsetenv(const char *s) { char **p; struct Env e; - if (!s || !*s || strchr(s, '=')) return einval(); + if (!s || !*s || strchr(s, '=')) + return einval(); if ((p = environ)) { e = __getenv(p, s); while (p[e.i]) { diff --git a/libc/intrin/virtualprotect.c b/libc/intrin/virtualprotect.c index 54e753065..55c97470c 100644 --- a/libc/intrin/virtualprotect.c +++ b/libc/intrin/virtualprotect.c @@ -33,7 +33,8 @@ textwindows bool32 VirtualProtect(void *lpAddress, uint64_t dwSize, uint32_t *lpflOldProtect) { bool32 bOk; bOk = __imp_VirtualProtect(lpAddress, dwSize, flNewProtect, lpflOldProtect); - if (!bOk) __winerr(); + if (!bOk) + __winerr(); NTTRACE("VirtualProtect(%p, %'zu, %s, [%s]) → %hhhd% m", lpAddress, dwSize, DescribeNtPageFlags(flNewProtect), DescribeNtPageFlags(*lpflOldProtect), bOk); diff --git a/libc/intrin/wsagetoverlappedresult.c b/libc/intrin/wsagetoverlappedresult.c index 807c871ff..a9096ec8a 100644 --- a/libc/intrin/wsagetoverlappedresult.c +++ b/libc/intrin/wsagetoverlappedresult.c @@ -50,7 +50,8 @@ bool32 WSAGetOverlappedResult(uint64_t s, bool32 ok; ok = __imp_WSAGetOverlappedResult(s, lpOverlapped, out_lpcbTransfer, fWait, out_lpdwFlags); - if (!ok) __winsockerr(); + if (!ok) + __winsockerr(); NTTRACE("WSAGetOverlappedResult(%ld, %s, [%s], %hhhd, [%#x]) → %hhhd% lm", s, DescribeNtOverlapped(lpOverlapped), DescribeTransfer(alloca(16), ok, out_lpcbTransfer), fWait, diff --git a/libc/intrin/x86.c b/libc/intrin/x86.c index 7912d9de8..4328f9c82 100644 --- a/libc/intrin/x86.c +++ b/libc/intrin/x86.c @@ -630,22 +630,37 @@ static void getAvailableFeatures(unsigned ECX, unsigned EDX, unsigned MaxLeaf, #define hasFeature(F) ((Features[F / 32] >> (F % 32)) & 1) #define setFeature(F) Features[F / 32] |= 1U << (F % 32) - if ((EDX >> 15) & 1) setFeature(FEATURE_CMOV); - if ((EDX >> 23) & 1) setFeature(FEATURE_MMX); - if ((EDX >> 25) & 1) setFeature(FEATURE_SSE); - if ((EDX >> 26) & 1) setFeature(FEATURE_SSE2); + if ((EDX >> 15) & 1) + setFeature(FEATURE_CMOV); + if ((EDX >> 23) & 1) + setFeature(FEATURE_MMX); + if ((EDX >> 25) & 1) + setFeature(FEATURE_SSE); + if ((EDX >> 26) & 1) + setFeature(FEATURE_SSE2); - if ((ECX >> 0) & 1) setFeature(FEATURE_SSE3); - if ((ECX >> 1) & 1) setFeature(FEATURE_PCLMUL); - if ((ECX >> 9) & 1) setFeature(FEATURE_SSSE3); - if ((ECX >> 12) & 1) setFeature(FEATURE_FMA); - if ((ECX >> 13) & 1) setFeature(FEATURE_CMPXCHG16B); - if ((ECX >> 19) & 1) setFeature(FEATURE_SSE4_1); - if ((ECX >> 20) & 1) setFeature(FEATURE_SSE4_2); - if ((ECX >> 22) & 1) setFeature(FEATURE_MOVBE); - if ((ECX >> 23) & 1) setFeature(FEATURE_POPCNT); - if ((ECX >> 25) & 1) setFeature(FEATURE_AES); - if ((ECX >> 29) & 1) setFeature(FEATURE_F16C); + if ((ECX >> 0) & 1) + setFeature(FEATURE_SSE3); + if ((ECX >> 1) & 1) + setFeature(FEATURE_PCLMUL); + if ((ECX >> 9) & 1) + setFeature(FEATURE_SSSE3); + if ((ECX >> 12) & 1) + setFeature(FEATURE_FMA); + if ((ECX >> 13) & 1) + setFeature(FEATURE_CMPXCHG16B); + if ((ECX >> 19) & 1) + setFeature(FEATURE_SSE4_1); + if ((ECX >> 20) & 1) + setFeature(FEATURE_SSE4_2); + if ((ECX >> 22) & 1) + setFeature(FEATURE_MOVBE); + if ((ECX >> 23) & 1) + setFeature(FEATURE_POPCNT); + if ((ECX >> 25) & 1) + setFeature(FEATURE_AES); + if ((ECX >> 29) & 1) + setFeature(FEATURE_F16C); // If CPUID indicates support for XSAVE, XRESTORE and AVX, and XGETBV // indicates that the AVX registers will be saved and restored on context @@ -663,36 +678,59 @@ static void getAvailableFeatures(unsigned ECX, unsigned EDX, unsigned MaxLeaf, bool HasAVX512Save = HasAVX && ((EAX & 0xe0) == 0xe0); #endif - if (HasAVX) setFeature(FEATURE_AVX); + if (HasAVX) + setFeature(FEATURE_AVX); bool HasLeaf7 = MaxLeaf >= 0x7 && !getX86CpuIDAndInfoEx(0x7, 0x0, &EAX, &EBX, &ECX, &EDX); if (HasLeaf7) { - if ((EBX >> 3) & 1) setFeature(FEATURE_BMI); - if (((EBX >> 5) & 1) && HasAVX) setFeature(FEATURE_AVX2); - if ((EBX >> 8) & 1) setFeature(FEATURE_BMI2); + if ((EBX >> 3) & 1) + setFeature(FEATURE_BMI); + if (((EBX >> 5) & 1) && HasAVX) + setFeature(FEATURE_AVX2); + if ((EBX >> 8) & 1) + setFeature(FEATURE_BMI2); if (HasAVX512Save) { - if ((EBX >> 16) & 1) setFeature(FEATURE_AVX512F); - if ((EBX >> 17) & 1) setFeature(FEATURE_AVX512DQ); - if ((EBX >> 21) & 1) setFeature(FEATURE_AVX512IFMA); - if ((EBX >> 26) & 1) setFeature(FEATURE_AVX512PF); - if ((EBX >> 27) & 1) setFeature(FEATURE_AVX512ER); - if ((EBX >> 28) & 1) setFeature(FEATURE_AVX512CD); - if ((EBX >> 30) & 1) setFeature(FEATURE_AVX512BW); - if ((EBX >> 31) & 1) setFeature(FEATURE_AVX512VL); - if ((ECX >> 1) & 1) setFeature(FEATURE_AVX512VBMI); - if ((ECX >> 6) & 1) setFeature(FEATURE_AVX512VBMI2); - if ((ECX >> 11) & 1) setFeature(FEATURE_AVX512VNNI); - if ((ECX >> 12) & 1) setFeature(FEATURE_AVX512BITALG); - if ((ECX >> 14) & 1) setFeature(FEATURE_AVX512VPOPCNTDQ); - if ((EDX >> 2) & 1) setFeature(FEATURE_AVX5124VNNIW); - if ((EDX >> 3) & 1) setFeature(FEATURE_AVX5124FMAPS); - if ((EDX >> 8) & 1) setFeature(FEATURE_AVX512VP2INTERSECT); - if ((EDX >> 23) & 1) setFeature(FEATURE_AVX512FP16); + if ((EBX >> 16) & 1) + setFeature(FEATURE_AVX512F); + if ((EBX >> 17) & 1) + setFeature(FEATURE_AVX512DQ); + if ((EBX >> 21) & 1) + setFeature(FEATURE_AVX512IFMA); + if ((EBX >> 26) & 1) + setFeature(FEATURE_AVX512PF); + if ((EBX >> 27) & 1) + setFeature(FEATURE_AVX512ER); + if ((EBX >> 28) & 1) + setFeature(FEATURE_AVX512CD); + if ((EBX >> 30) & 1) + setFeature(FEATURE_AVX512BW); + if ((EBX >> 31) & 1) + setFeature(FEATURE_AVX512VL); + if ((ECX >> 1) & 1) + setFeature(FEATURE_AVX512VBMI); + if ((ECX >> 6) & 1) + setFeature(FEATURE_AVX512VBMI2); + if ((ECX >> 11) & 1) + setFeature(FEATURE_AVX512VNNI); + if ((ECX >> 12) & 1) + setFeature(FEATURE_AVX512BITALG); + if ((ECX >> 14) & 1) + setFeature(FEATURE_AVX512VPOPCNTDQ); + if ((EDX >> 2) & 1) + setFeature(FEATURE_AVX5124VNNIW); + if ((EDX >> 3) & 1) + setFeature(FEATURE_AVX5124FMAPS); + if ((EDX >> 8) & 1) + setFeature(FEATURE_AVX512VP2INTERSECT); + if ((EDX >> 23) & 1) + setFeature(FEATURE_AVX512FP16); } - if ((ECX >> 8) & 1) setFeature(FEATURE_GFNI); - if (((ECX >> 10) & 1) && HasAVX) setFeature(FEATURE_VPCLMULQDQ); + if ((ECX >> 8) & 1) + setFeature(FEATURE_GFNI); + if (((ECX >> 10) & 1) && HasAVX) + setFeature(FEATURE_VPCLMULQDQ); } // EAX from subleaf 0 is the maximum subleaf supported. Some CPUs don't @@ -709,12 +747,18 @@ static void getAvailableFeatures(unsigned ECX, unsigned EDX, unsigned MaxLeaf, bool HasExtLeaf1 = MaxExtLevel >= 0x80000001 && !getX86CpuIDAndInfo(0x80000001, &EAX, &EBX, &ECX, &EDX); if (HasExtLeaf1) { - if (ECX & 1) setFeature(FEATURE_LAHF_LM); - if ((ECX >> 5) & 1) setFeature(FEATURE_LZCNT); - if (((ECX >> 6) & 1)) setFeature(FEATURE_SSE4_A); - if (((ECX >> 11) & 1)) setFeature(FEATURE_XOP); - if (((ECX >> 16) & 1)) setFeature(FEATURE_FMA4); - if (((EDX >> 29) & 1)) setFeature(FEATURE_LM); + if (ECX & 1) + setFeature(FEATURE_LAHF_LM); + if ((ECX >> 5) & 1) + setFeature(FEATURE_LZCNT); + if (((ECX >> 6) & 1)) + setFeature(FEATURE_SSE4_A); + if (((ECX >> 11) & 1)) + setFeature(FEATURE_XOP); + if (((ECX >> 16) & 1)) + setFeature(FEATURE_FMA4); + if (((EDX >> 29) & 1)) + setFeature(FEATURE_LM); } if (hasFeature(FEATURE_LM) && hasFeature(FEATURE_SSE2)) { @@ -763,7 +807,8 @@ __attribute__((__constructor__(1))) textstartup int __cpu_indicator_init(void) { _Static_assert(sizeof(__cpu_features2) / sizeof(__cpu_features2[0]) == 3, ""); // This function needs to run just once. - if (__cpu_model.__cpu_vendor) return 0; + if (__cpu_model.__cpu_vendor) + return 0; if (!isCpuIdSupported() || getX86CpuIDAndInfo(0, &MaxLeaf, &Vendor, &ECX, &EDX) || MaxLeaf < 1) { diff --git a/libc/irq/acpi-xsdt.c b/libc/irq/acpi-xsdt.c index 14c6acecf..eb91724f2 100644 --- a/libc/irq/acpi-xsdt.c +++ b/libc/irq/acpi-xsdt.c @@ -61,7 +61,8 @@ textstartup static void *_AcpiOsAllocatePages(size_t n) { struct DirectMap dm = sys_mmap_metal(NULL, n, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); void *addr = dm.addr; - if (addr == (void *)-1) addr = NULL; + if (addr == (void *)-1) + addr = NULL; return addr; } @@ -69,17 +70,20 @@ textstartup void *_AcpiOsAllocate(size_t n) { static _Atomic(char *) slack = NULL; char *addr = NULL; size_t align = __BIGGEST_ALIGNMENT__, use; - if (n >= 4096) return _AcpiOsAllocatePages(n); + if (n >= 4096) + return _AcpiOsAllocatePages(n); n = ROUNDUP(n, align); for (;;) { addr = atomic_exchange(&slack, NULL); if (!addr) { addr = _AcpiOsAllocatePages(4096); - if (!addr) return NULL; + if (!addr) + return NULL; } use = (uintptr_t)addr % 4096 + n; if (use <= 4096) { - if (use < 4096) atomic_store(&slack, addr + n); + if (use < 4096) + atomic_store(&slack, addr + n); return addr; } } @@ -87,14 +91,16 @@ textstartup void *_AcpiOsAllocate(size_t n) { textstartup static uint8_t _AcpiTbChecksum(const uint8_t *p, size_t n) { uint8_t c = 0; - while (n-- != 0) c += *p++; + while (n-- != 0) + c += *p++; return c; } textstartup static AcpiStatus _AcpiTbVerifyChecksum(const uint8_t *p, size_t n) { uint8_t sum = _AcpiTbChecksum(p, n); - if (!sum) return kAcpiOk; + if (!sum) + return kAcpiOk; KWARNF("bad ACPI table cksum %#x != 0 @ %p,+%#zx", (unsigned)sum, p, n); return kAcpiExBadChecksum; } @@ -103,8 +109,10 @@ textstartup static AcpiStatus _AcpiRsdpVerifyChecksums(const uint8_t *p) { const AcpiTableRsdp *q = (const AcpiTableRsdp *)p; size_t length = offsetof(AcpiTableRsdp, Length); AcpiStatus sta = _AcpiTbVerifyChecksum(p, length); - if (!_AcpiSuccess(sta)) return sta; - if (q->Revision <= 1) return kAcpiOk; + if (!_AcpiSuccess(sta)) + return sta; + if (q->Revision <= 1) + return kAcpiOk; length = q->Length; if (length < offsetof(AcpiTableRsdp, Reserved)) { KWARNF("malformed ACPI 2+ RSDP, length %#zx < %#zx", length, @@ -120,9 +128,11 @@ textstartup static AcpiStatus _AcpiRsdpVerifyChecksums(const uint8_t *p) { textstartup static bool _AcpiTbIsValidRsdp(const uint8_t *p) { const AcpiTableRsdp *q = (const AcpiTableRsdp *)p; - if (READ64LE(q->Signature) != READ64LE("RSD PTR ")) return false; + if (READ64LE(q->Signature) != READ64LE("RSD PTR ")) + return false; KINFOF("\"RSD PTR \" @ %p, ACPI rev %u", q, (unsigned)q->Revision); - if (!_AcpiSuccess(_AcpiRsdpVerifyChecksums(p))) return false; + if (!_AcpiSuccess(_AcpiRsdpVerifyChecksums(p))) + return false; return true; } @@ -133,7 +143,8 @@ textstartup static const AcpiTableRsdp *_AcpiFindRsdp(void) { uint64_t rsdp_phy = mm->pc_acpi_rsdp; uint16_t ebda_para; const uint8_t *area; - if (rsdp_phy) return _AcpiOsMapRoMemory(rsdp_phy, sizeof(AcpiTableRsdp)); + if (rsdp_phy) + return _AcpiOsMapRoMemory(rsdp_phy, sizeof(AcpiTableRsdp)); /* * "OSPM finds the Root System Description Pointer (RSDP) structure by * searching physical memory ranges on 16-byte boundaries for a valid @@ -231,8 +242,10 @@ textstartup AcpiStatus _AcpiGetTableImpl(uint32_t sig, uint32_t inst, size_t n = _AcpiXsdtNumEntries; while (n-- != 0) { AcpiTableHeader *h = *p++; - if (READ32LE(h->Signature) != sig) continue; - if (inst-- != 0) continue; + if (READ32LE(h->Signature) != sig) + continue; + if (inst-- != 0) + continue; *phdr = h; return kAcpiOk; } diff --git a/libc/log/attachdebugger.c b/libc/log/attachdebugger.c index e28fd0961..337f6c4e8 100644 --- a/libc/log/attachdebugger.c +++ b/libc/log/attachdebugger.c @@ -72,7 +72,8 @@ relegated int(AttachDebugger)(intptr_t continuetoaddr) { layout = "layout asm"; if ((elf = FindDebugBinary())) { se = "-se"; - if (fileexists(__FILE__)) layout = "layout src"; + if (fileexists(__FILE__)) + layout = "layout src"; } else { se = "-q"; elf = "-q"; diff --git a/libc/log/backtrace2.c b/libc/log/backtrace2.c index 97823309d..5c2f7c015 100644 --- a/libc/log/backtrace2.c +++ b/libc/log/backtrace2.c @@ -135,7 +135,8 @@ static int PrintBacktraceUsingAddr2line(int fd, const struct StackFrame *bp) { sys_close(pipefds[1]); for (;;) { got = sys_read(pipefds[0], buf, kBacktraceBufSize); - if (!got) break; + if (!got) + break; if (got == -1 && errno == EINTR) { errno = 0; continue; @@ -150,7 +151,8 @@ static int PrintBacktraceUsingAddr2line(int fd, const struct StackFrame *bp) { if ((p2 = memmem(p1, got, " (discriminator ", strlen(" (discriminator ") - 1)) && (p3 = memchr(p2, '\n', got - (p2 - p1)))) { - if (p3 > p2 && p3[-1] == '\r') --p3; + if (p3 > p2 && p3[-1] == '\r') + --p3; klog(p1, p2 - p1); got -= p3 - p1; p1 += p3 - p1; @@ -162,7 +164,8 @@ static int PrintBacktraceUsingAddr2line(int fd, const struct StackFrame *bp) { } sys_close(pipefds[0]); while (sys_wait4(pid, &ws, 0, 0) == -1) { - if (errno == EINTR) continue; + if (errno == EINTR) + continue; return -1; } if (WIFEXITED(ws) && !WEXITSTATUS(ws)) { @@ -191,7 +194,8 @@ void ShowBacktrace(int fd, const struct StackFrame *bp) { /* asan runtime depends on this function */ ftrace_enabled(-1); strace_enabled(-1); - if (!bp) bp = __builtin_frame_address(0); + if (!bp) + bp = __builtin_frame_address(0); PrintBacktrace(fd, bp); strace_enabled(+1); ftrace_enabled(+1); diff --git a/libc/log/backtrace3.c b/libc/log/backtrace3.c index 1c0a4e5ea..6857d1d6f 100644 --- a/libc/log/backtrace3.c +++ b/libc/log/backtrace3.c @@ -51,7 +51,8 @@ dontinstrument dontasan int PrintBacktraceUsingSymbols( struct Garbages *garbage; const struct StackFrame *frame; (void)gi; - if (!bp) bp = __builtin_frame_address(0); + if (!bp) + bp = __builtin_frame_address(0); garbage = __tls_enabled ? __get_tls()->tib_garbages : 0; gi = garbage ? garbage->i : 0; for (i = 0, frame = bp; frame; frame = frame->next) { diff --git a/libc/log/checkaligned.c b/libc/log/checkaligned.c index 4dbbef7f2..f2750ed2a 100644 --- a/libc/log/checkaligned.c +++ b/libc/log/checkaligned.c @@ -26,7 +26,8 @@ void __check_fail_aligned(unsigned bytes, uint64_t ptr, const char *file, int line, const char *fmt, ...) { fflush(stderr); - if (!IsTiny()) _memsummary(fileno(stderr)); + if (!IsTiny()) + _memsummary(fileno(stderr)); kprintf("%s:%d: error: pointer not %d-byte aligned: %p\n", file, line, bytes, ptr); __die(); diff --git a/libc/log/checkfail_ndebug.c b/libc/log/checkfail_ndebug.c index a55fc29e4..a005b4198 100644 --- a/libc/log/checkfail_ndebug.c +++ b/libc/log/checkfail_ndebug.c @@ -48,7 +48,8 @@ static relegated wontreturn void __check_fail_ndebug(uint64_t want, // kvprintf(fmt, va); } kprintf("\n"); - if (_weaken(__die)) _weaken(__die)(); + if (_weaken(__die)) + _weaken(__die)(); _Exit(68); } diff --git a/libc/log/commandvenv.c b/libc/log/commandvenv.c index 6c25f8c9f..e028d89db 100644 --- a/libc/log/commandvenv.c +++ b/libc/log/commandvenv.c @@ -49,9 +49,11 @@ const char *commandvenv(const char *var, const char *cmd) { const char *exepath; static char pathbuf[PATH_MAX]; - if (*cmd == '/' || *cmd == '\\') return cmd; + if (*cmd == '/' || *cmd == '\\') + return cmd; if ((exepath = getenv(var))) { - if (isempty(exepath)) return NULL; + if (isempty(exepath)) + return NULL; if (access(exepath, X_OK) != -1) { return exepath; } else { diff --git a/libc/log/countbranch_report.c b/libc/log/countbranch_report.c index 7616c4e7a..a152dbc07 100644 --- a/libc/log/countbranch_report.c +++ b/libc/log/countbranch_report.c @@ -51,17 +51,22 @@ static int CompareCounters(const void *a, const void *b) { double x, y; x = RankCounter(a); y = RankCounter(b); - if (x > y) return +1; - if (x < y) return -1; - if (GetTotal(a) < GetTotal(b)) return +1; - if (GetTotal(a) > GetTotal(b)) return -1; + if (x > y) + return +1; + if (x < y) + return -1; + if (GetTotal(a) < GetTotal(b)) + return +1; + if (GetTotal(a) > GetTotal(b)) + return -1; return 0; } static size_t CountCounters(void) { size_t n; struct countbranch *p; - for (n = 0, p = countbranch_data; p->total >= 0; ++p) ++n; + for (n = 0, p = countbranch_data; p->total >= 0; ++p) + ++n; return n; } diff --git a/libc/log/countexpr_report.c b/libc/log/countexpr_report.c index 3d1c50025..75be60857 100644 --- a/libc/log/countexpr_report.c +++ b/libc/log/countexpr_report.c @@ -42,7 +42,8 @@ static long GetLongSum(const long *h, size_t n) { } static size_t GetRowCount(const long *h, size_t n) { - while (n && !h[n - 1]) --n; + while (n && !h[n - 1]) + --n; return n; } @@ -55,7 +56,8 @@ static void PrintHistogram(const long *h, size_t n, long t) { p = (h[i] * 10000 + (t >> 1)) / t; unassert(0 <= p && p <= 10000); if (p) { - for (j = 0; j < p / 100; ++j) s[j] = '#'; + for (j = 0; j < p / 100; ++j) + s[j] = '#'; s[j] = 0; logos = i ? 1ul << (i - 1) : 0; kprintf("%'12lu %'16ld %3d.%02d%% %s\n", logos, h[i], p / 100, p % 100, diff --git a/libc/log/gdbexec.c b/libc/log/gdbexec.c index f8d47f14e..0d63a9682 100644 --- a/libc/log/gdbexec.c +++ b/libc/log/gdbexec.c @@ -32,7 +32,8 @@ relegated int(gdbexec)(const char *cmd) { struct StackFrame *bp; const char *se, *elf, *gdb; char pidstr[11], breakcmd[40]; - if (!(gdb = GetGdbPath())) return -1; + if (!(gdb = GetGdbPath())) + return -1; snprintf(pidstr, sizeof(pidstr), "%u", getpid()); if ((elf = FindDebugBinary())) { se = "-se"; diff --git a/libc/log/getcallername.c b/libc/log/getcallername.c index fe1b3456f..7a4a719af 100644 --- a/libc/log/getcallername.c +++ b/libc/log/getcallername.c @@ -24,7 +24,9 @@ * Returns name of function that called caller function. */ const char *GetCallerName(const struct StackFrame *bp) { - if (!bp && (bp = __builtin_frame_address(0))) bp = bp->next; - if (bp) return GetSymbolByAddr(bp->addr); + if (!bp && (bp = __builtin_frame_address(0))) + bp = bp->next; + if (bp) + return GetSymbolByAddr(bp->addr); return 0; } diff --git a/libc/log/leaks.c b/libc/log/leaks.c index eadff7292..02a2305d5 100644 --- a/libc/log/leaks.c +++ b/libc/log/leaks.c @@ -85,7 +85,8 @@ static dontasan bool HasLeaks(void) { */ dontasan void CheckForMemoryLeaks(void) { struct mallinfo mi; - if (!IsAsan()) return; // we need traces to exclude leaky + if (!IsAsan()) + return; // we need traces to exclude leaky if (!GetSymbolTable()) { kprintf("CheckForMemoryLeaks() needs the symbol table\n"); return; diff --git a/libc/log/memlog.c b/libc/log/memlog.c index c12bc1aa6..b6ea93df8 100644 --- a/libc/log/memlog.c +++ b/libc/log/memlog.c @@ -88,13 +88,17 @@ static long __memlog_size(void *p) { static void __memlog_backtrace(struct StackFrame *frame, intptr_t *a, intptr_t *b, intptr_t *c, intptr_t *d) { *a = *b = *c = *d = 0; - if (!frame) return; + if (!frame) + return; *a = frame->addr; - if (!(frame = frame->next)) return; + if (!(frame = frame->next)) + return; *b = frame->addr; - if (!(frame = frame->next)) return; + if (!(frame = frame->next)) + return; *c = frame->addr; - if (!(frame = frame->next)) return; + if (!(frame = frame->next)) + return; *d = frame->addr; } @@ -163,7 +167,8 @@ static void __memlog_log(struct StackFrame *frame, const char *op, void *res, static void __memlog_free(void *p) { long i, n; - if (!p) return; + if (!p) + return; __memlog_lock(); if ((i = __memlog_find(p)) != -1) { n = __memlog.allocs.p[i].size; diff --git a/libc/log/oncrash_amd64.c b/libc/log/oncrash_amd64.c index 06e155a15..dccb03682 100644 --- a/libc/log/oncrash_amd64.c +++ b/libc/log/oncrash_amd64.c @@ -120,7 +120,8 @@ relegated static dontinline char *DescribeCpuFlags(char *p, int flags, } static char *HexCpy(char p[hasatleast 17], uint64_t x, uint8_t k) { - while (k > 0) *p++ = "0123456789abcdef"[(x >> (k -= 4)) & 15]; + while (k > 0) + *p++ = "0123456789abcdef"[(x >> (k -= 4)) & 15]; *p = '\0'; return p; } @@ -130,8 +131,10 @@ relegated static char *ShowGeneralRegisters(char *p, ucontext_t *ctx) { const char *s; *p++ = '\n'; for (i = 0, j = 0; i < ARRAYLEN(kGregNames); ++i) { - if (j > 0) *p++ = ' '; - if (!(s = kGregNames[(unsigned)kGregOrder[i]])[2]) *p++ = ' '; + if (j > 0) + *p++ = ' '; + if (!(s = kGregNames[(unsigned)kGregOrder[i]])[2]) + *p++ = ' '; p = stpcpy(p, s), *p++ = ' '; p = HexCpy(p, ctx->uc_mcontext.gregs[(unsigned)kGregOrder[i]], 64); if (++j == 3) { diff --git a/libc/log/oncrash_arm64.c b/libc/log/oncrash_arm64.c index eafc483fe..ba0ba4019 100644 --- a/libc/log/oncrash_arm64.c +++ b/libc/log/oncrash_arm64.c @@ -80,7 +80,8 @@ static relegated void Append(struct Buffer *b, const char *fmt, ...) { } static relegated const char *ColorRegister(int r) { - if (__nocolor) return ""; + if (__nocolor) + return ""; switch (r) { case 0: // arg / res case 1: // arg / res @@ -125,9 +126,12 @@ static relegated bool AppendFileLine(struct Buffer *b, const char *addr2line, ssize_t rc; char *p, *q, buf[128]; int j, k, ws, pid, pfd[2]; - if (!debugbin || !*debugbin) return false; - if (!addr2line || !*addr2line) return false; - if (sys_pipe(pfd)) return false; + if (!debugbin || !*debugbin) + return false; + if (!addr2line || !*addr2line) + return false; + if (sys_pipe(pfd)) + return false; ksnprintf(buf, sizeof(buf), "%lx", addr); if ((pid = vfork()) == -1) { sys_close(pfd[1]); @@ -261,7 +265,8 @@ static relegated void __oncrash_impl(int sig, struct siginfo *si, Append(b, " "); for (j = 0; j < 4; ++j) { int r = 8 * j + i; - if (j) Append(b, " "); + if (j) + Append(b, " "); Append(b, "%s%016lx%s x%d%s", ColorRegister(r), ctx->uc_mcontext.regs[r], reset, r, r == 8 || r == 9 ? " " : ""); } @@ -272,12 +277,14 @@ static relegated void __oncrash_impl(int sig, struct siginfo *si, vc = (struct fpsimd_context *)ctx->uc_mcontext.__reserved; if (vc->head.magic == FPSIMD_MAGIC) { int n = 16; - while (n && !vc->vregs[n - 1] && !vc->vregs[n - 2]) n -= 2; + while (n && !vc->vregs[n - 1] && !vc->vregs[n - 2]) + n -= 2; for (i = 0; i * 2 < n; ++i) { Append(b, " "); for (j = 0; j < 2; ++j) { int r = j + 2 * i; - if (j) Append(b, " "); + if (j) + Append(b, " "); Append(b, "%016lx ..%s %016lx v%d%s", (long)(vc->vregs[r] >> 64), !j ? "" : ".", (long)vc->vregs[r], r, r < 10 ? " " : ""); } @@ -297,7 +304,8 @@ static relegated void __oncrash_impl(int sig, struct siginfo *si, Append(b, " "); if (!AppendFileLine(b, addr2line, debugbin, pc)) { Append(b, "%s", GetSymbolName(st, symbol, &mem, &memsz)); - if (addend) Append(b, "%+d", addend); + if (addend) + Append(b, "%+d", addend); } } Append(b, "\n"); @@ -318,7 +326,8 @@ static relegated void __oncrash_impl(int sig, struct siginfo *si, Append(b, " "); if (!AppendFileLine(b, addr2line, debugbin, pc)) { Append(b, "%s", GetSymbolName(st, symbol, &mem, &memsz)); - if (addend) Append(b, "%+d", addend); + if (addend) + Append(b, "%+d", addend); } } Append(b, "\n"); @@ -357,7 +366,8 @@ static relegated void __oncrash_impl(int sig, struct siginfo *si, Append(b, " %016lx fp %lx lr ", fp, pc); if (!AppendFileLine(b, addr2line, debugbin, pc) && st) { Append(b, "%s", GetSymbolName(st, symbol, &mem, &memsz)); - if (addend) Append(b, "%+d", addend); + if (addend) + Append(b, "%+d", addend); } Append(b, "\n"); } diff --git a/libc/log/printwindowsmemory.c b/libc/log/printwindowsmemory.c index 18116fc75..9ec34dd57 100644 --- a/libc/log/printwindowsmemory.c +++ b/libc/log/printwindowsmemory.c @@ -62,7 +62,8 @@ void PrintWindowsMemory(const char *high, size_t size) { for (p = 0;; p = (char *)mi.BaseAddress + mi.RegionSize) { const char *start, *stop; bzero(&mi, sizeof(mi)); - if (!VirtualQuery(p, &mi, sizeof(mi))) break; + if (!VirtualQuery(p, &mi, sizeof(mi))) + break; sizefmt(b[0], mi.RegionSize, 1024); if (MAX(high, (char *)mi.BaseAddress) < MIN(high + size, (char *)mi.BaseAddress + mi.RegionSize)) { diff --git a/libc/log/vflogf.c b/libc/log/vflogf.c index c75bae727..9dedc9283 100644 --- a/libc/log/vflogf.c +++ b/libc/log/vflogf.c @@ -50,7 +50,8 @@ static struct timespec vflogf_ts; static void vflogf_onfail(FILE *f) { errno_t err; struct stat st; - if (IsTiny()) return; + if (IsTiny()) + return; err = ferror_unlocked(f); if (fileno_unlocked(f) != -1 && (err == ENOSPC || err == EDQUOT || err == EFBIG) && @@ -90,8 +91,10 @@ void(vflogf)(unsigned level, const char *file, int line, FILE *f, const char *prog; const char *sign; struct timespec t2; - if (!f) f = __log_file; - if (!f) return; + if (!f) + f = __log_file; + if (!f) + return; flockfile(f); strace_enabled(-1); BLOCK_SIGNALS; @@ -113,7 +116,8 @@ void(vflogf)(unsigned level, const char *file, int line, FILE *f, strcpy(iso8601(buf32, &tm), sign); prog = basename(firstnonnull(program_invocation_name, "unknown")); bufmode = f->bufmode; - if (bufmode == _IOLBF) f->bufmode = _IOFBF; + if (bufmode == _IOLBF) + f->bufmode = _IOFBF; if ((fprintf_unlocked)(f, "%r%c%s%06ld:%s:%d:%.*s:%d] ", "FEWIVDNT"[level & 7], buf32, dots / 1000, file, line, diff --git a/libc/log/watch.c b/libc/log/watch.c index b7048f608..a3d4105ef 100644 --- a/libc/log/watch.c +++ b/libc/log/watch.c @@ -41,8 +41,10 @@ static dontinstrument inline void Copy(char *p, char *q, size_t n) { } static dontinstrument inline int Cmp(char *p, char *q, size_t n) { - if (n == 8) return READ64LE(p) != READ64LE(q); - if (n == 4) return READ32LE(p) != READ32LE(q); + if (n == 8) + return READ64LE(p) != READ64LE(q); + if (n == 4) + return READ32LE(p) != READ32LE(q); for (; n; ++p, ++q, --n) { if (*p != *q) { return 1; @@ -52,7 +54,8 @@ static dontinstrument inline int Cmp(char *p, char *q, size_t n) { } dontinstrument void __watcher(void) { - if (__watch_busy) return; + if (__watch_busy) + return; __watch_busy = true; if (Cmp(__watch_last, __watch_addr, __watch_size)) { kprintf("watchpoint %p changed:\n" @@ -74,11 +77,15 @@ dontinstrument void __watcher(void) { */ int __watch(void *addr, size_t size) { static bool once; - if (__watch_busy) ebusy(); - if (size > sizeof(__watch_last)) return einval(); + if (__watch_busy) + ebusy(); + if (size > sizeof(__watch_last)) + return einval(); if (!once) { - if (!GetSymbolTable()) return -1; - if (__hook(__watch_hook, GetSymbolTable()) == -1) return -1; + if (!GetSymbolTable()) + return -1; + if (__hook(__watch_hook, GetSymbolTable()) == -1) + return -1; once = true; } __watch_addr = addr; diff --git a/libc/mem/critbit0_allprefixed.c b/libc/mem/critbit0_allprefixed.c index b032e4a09..e8cc832ee 100644 --- a/libc/mem/critbit0_allprefixed.c +++ b/libc/mem/critbit0_allprefixed.c @@ -27,7 +27,8 @@ static intptr_t allprefixed_traverse(unsigned char *top, struct CritbitNode *q = (void *)(top - 1); for (int direction = 0; direction < 2; ++direction) { intptr_t rc = allprefixed_traverse(q->child[direction], callback, arg); - if (rc) return rc; + if (rc) + return rc; } return 0; } @@ -48,14 +49,17 @@ intptr_t critbit0_allprefixed(struct critbit0 *t, const char *prefix, const size_t ulen = strlen(prefix); unsigned char *p = t->root; unsigned char *top = p; - if (!p) return 0; + if (!p) + return 0; while (1 & (intptr_t)p) { struct CritbitNode *q = (void *)(p - 1); unsigned char c = 0; - if (q->byte < ulen) c = ubytes[q->byte]; + if (q->byte < ulen) + c = ubytes[q->byte]; const int direction = (1 + (q->otherbits | c)) >> 8; p = q->child[direction]; - if (q->byte < ulen) top = p; + if (q->byte < ulen) + top = p; } for (size_t i = 0; i < ulen; ++i) { if (p[i] != ubytes[i]) { diff --git a/libc/mem/critbit0_contains.c b/libc/mem/critbit0_contains.c index 152561e14..e750d4252 100644 --- a/libc/mem/critbit0_contains.c +++ b/libc/mem/critbit0_contains.c @@ -30,11 +30,13 @@ bool critbit0_contains(struct critbit0 *t, const char *u) { const unsigned char *ubytes = (void *)u; const size_t ulen = strlen(u); unsigned char *p = t->root; - if (!p) return 0; + if (!p) + return 0; while (1 & (intptr_t)p) { struct CritbitNode *q = (void *)(p - 1); unsigned char c = 0; - if (q->byte < ulen) c = ubytes[q->byte]; + if (q->byte < ulen) + c = ubytes[q->byte]; const int direction = (1 + (q->otherbits | c)) >> 8; p = q->child[direction]; } diff --git a/libc/mem/critbit0_delete.c b/libc/mem/critbit0_delete.c index 3925c7fbb..ef3dd2c90 100644 --- a/libc/mem/critbit0_delete.c +++ b/libc/mem/critbit0_delete.c @@ -36,17 +36,20 @@ bool critbit0_delete(struct critbit0 *t, const char *u) { void **whereq = 0; struct CritbitNode *q = 0; int direction = 0; - if (!p) return false; + if (!p) + return false; while (1 & (intptr_t)p) { whereq = wherep; q = (void *)(p - 1); unsigned char c = 0; - if (q->byte < ulen) c = ubytes[q->byte]; + if (q->byte < ulen) + c = ubytes[q->byte]; direction = (1 + (q->otherbits | c)) >> 8; wherep = q->child + direction; p = *wherep; } - if (0 != strcmp(u, (const char *)p)) return false; + if (0 != strcmp(u, (const char *)p)) + return false; free(p), p = NULL; if (!whereq) { t->root = NULL; diff --git a/libc/mem/critbit0_emplace.c b/libc/mem/critbit0_emplace.c index 3b235262b..63b076e56 100644 --- a/libc/mem/critbit0_emplace.c +++ b/libc/mem/critbit0_emplace.c @@ -53,7 +53,8 @@ int critbit0_emplace(struct critbit0 *t, const void *u, size_t ulen) { while (1 & (intptr_t)p) { struct CritbitNode *q = (void *)(p - 1); unsigned char c = 0; - if (q->byte < ulen) c = ubytes[q->byte]; + if (q->byte < ulen) + c = ubytes[q->byte]; const int direction = (1 + (q->otherbits | c)) >> 8; p = q->child[direction]; } @@ -86,12 +87,16 @@ DifferentByteFound: void **wherep = &t->root; for (;;) { unsigned char *wp = *wherep; - if (!(1 & (intptr_t)wp)) break; + if (!(1 & (intptr_t)wp)) + break; struct CritbitNode *q = (void *)(wp - 1); - if (q->byte > newbyte) break; - if (q->byte == newbyte && q->otherbits > newotherbits) break; + if (q->byte > newbyte) + break; + if (q->byte == newbyte && q->otherbits > newotherbits) + break; unsigned char c2 = 0; - if (q->byte < ulen) c2 = ubytes[q->byte]; + if (q->byte < ulen) + c2 = ubytes[q->byte]; const int direction = (1 + (q->otherbits | c2)) >> 8; wherep = q->child + direction; } diff --git a/libc/mem/critbit0_get.c b/libc/mem/critbit0_get.c index 7a3b5a141..93f461471 100644 --- a/libc/mem/critbit0_get.c +++ b/libc/mem/critbit0_get.c @@ -31,11 +31,13 @@ char *critbit0_get(struct critbit0 *t, const char *u) { const unsigned char *ubytes = (void *)u; const size_t ulen = strlen(u); unsigned char *p = t->root; - if (!p) return 0; + if (!p) + return 0; while (1 & (intptr_t)p) { struct CritbitNode *q = (void *)(p - 1); unsigned char c = 0; - if (q->byte < ulen) c = ubytes[q->byte]; + if (q->byte < ulen) + c = ubytes[q->byte]; const int direction = (1 + (q->otherbits | c)) >> 8; p = q->child[direction]; } diff --git a/libc/mem/gc.c b/libc/mem/gc.c index 07957ba57..1ef55198c 100644 --- a/libc/mem/gc.c +++ b/libc/mem/gc.c @@ -65,10 +65,12 @@ static void DeferFunction(struct StackFrame *frame, void *fn, void *arg) { t = __get_tls(); g = t->tib_garbages; if (UNLIKELY(!g)) { - if (!(g = malloc(sizeof(struct Garbages)))) notpossible; + if (!(g = malloc(sizeof(struct Garbages)))) + notpossible; g->i = 0; g->n = 4; - if (!(g->p = malloc(g->n * sizeof(struct Garbage)))) notpossible; + if (!(g->p = malloc(g->n * sizeof(struct Garbage)))) + notpossible; t->tib_garbages = g; } else if (UNLIKELY(g->i == g->n)) { p2 = g->p; diff --git a/libc/mem/putenv.c b/libc/mem/putenv.c index 00a9553b7..d135a3f9a 100644 --- a/libc/mem/putenv.c +++ b/libc/mem/putenv.c @@ -30,14 +30,16 @@ static size_t capacity; static size_t __lenenv(char **env) { char **p = env; - while (*p) ++p; + while (*p) + ++p; return p - env; } static char **__growenv(char **a) { size_t n, c; char **b, **p; - if (!a) a = environ; + if (!a) + a = environ; n = a ? __lenenv(a) : 0; c = MAX(8ul, n) << 1; if ((b = malloc(c * sizeof(char *)))) { diff --git a/libc/mem/setenv.c b/libc/mem/setenv.c index ff198e945..64c7620ab 100644 --- a/libc/mem/setenv.c +++ b/libc/mem/setenv.c @@ -37,7 +37,8 @@ int setenv(const char *name, const char *value, int overwrite) { int rc; char *s; size_t n, m; - if (!name || !*name || !value || strchr(name, '=')) return einval(); + if (!name || !*name || !value || strchr(name, '=')) + return einval(); if ((s = malloc((n = strlen(name)) + 1 + (m = strlen(value)) + 1))) { memcpy(mempcpy(mempcpy(s, name, n), "=", 1), value, m + 1); rc = __putenv(s, overwrite); diff --git a/libc/mem/strndup.c b/libc/mem/strndup.c index b1ddc3383..45d0dee03 100644 --- a/libc/mem/strndup.c +++ b/libc/mem/strndup.c @@ -31,7 +31,8 @@ char *strndup(const char *s, size_t n) { char *s2; size_t len = strnlen(s, n); if ((s2 = malloc(len + 1))) { - if (len) memcpy(s2, s, len); + if (len) + memcpy(s2, s, len); s2[len] = '\0'; return s2; } diff --git a/libc/proc/cocmd.c b/libc/proc/cocmd.c index fe0297460..59aba86cc 100644 --- a/libc/proc/cocmd.c +++ b/libc/proc/cocmd.c @@ -130,7 +130,8 @@ static void PutEnv(char **p, char *kv) { struct Env e; e = __getenv(p, kv); p[e.i] = kv; - if (!e.s) p[e.i + 1] = 0; + if (!e.s) + p[e.i + 1] = 0; } static void UnsetEnv(char **p, const char *k) { @@ -330,7 +331,8 @@ static int CatDump(const char *path, int fd, bool dontclose) { } return 1; } - if (!rc) break; + if (!rc) + break; rc = write(1, buf, rc); if (rc == -1) { perror("write"); @@ -392,18 +394,21 @@ static int Read(void) { unsigned char c; int i, j, rc = 1; for (i = 1; i < n; ++i) { - if (args[i][0] != '-') break; + if (args[i][0] != '-') + break; if (args[i][1] == 'p' && !args[i][2] && i + 1 < n) { Write(1, args[++i]); } } - if (i >= n) return 1; + if (i >= n) + return 1; for (j = 0; args[i][j]; ++j) { Append(args[i][j]); } Append('='); while (read(0, &c, 1) > 0) { - if (c == '\n') break; + if (c == '\n') + break; Append(c); rc = 0; } @@ -469,7 +474,8 @@ static int Kill(void) { int sig, rc = 0, i = 1; if (i < n && args[i][0] == '-') { sig = GetSignalByName(args[i++] + 1); - if (!sig) return -1; // fallback to system kill command + if (!sig) + return -1; // fallback to system kill command } else { sig = SIGTERM; } @@ -510,20 +516,30 @@ static int Usleep(void) { static int Test(void) { int w, m = n; struct stat st; - if (m && READ16LE(args[m - 1]) == READ16LE("]")) --m; + if (m && READ16LE(args[m - 1]) == READ16LE("]")) + --m; if (m == 4) { w = READ32LE(args[2]) & 0x00ffffff; - if ((w & 65535) == READ16LE("=")) return !!strcmp(args[1], args[3]); - if (w == READ24("==")) return !!strcmp(args[1], args[3]); - if (w == READ24("!=")) return !strcmp(args[1], args[3]); + if ((w & 65535) == READ16LE("=")) + return !!strcmp(args[1], args[3]); + if (w == READ24("==")) + return !!strcmp(args[1], args[3]); + if (w == READ24("!=")) + return !strcmp(args[1], args[3]); } else if (m == 3) { w = READ32LE(args[1]) & 0x00ffffff; - if (w == READ24("-n")) return !(strlen(args[2]) > 0); - if (w == READ24("-z")) return !(strlen(args[2]) == 0); - if (w == READ24("-e")) return !!stat(args[2], &st); - if (w == READ24("-f")) return !(!stat(args[2], &st) && S_ISREG(st.st_mode)); - if (w == READ24("-d")) return !(!stat(args[2], &st) && S_ISDIR(st.st_mode)); - if (w == READ24("-h")) return !(!stat(args[2], &st) && S_ISLNK(st.st_mode)); + if (w == READ24("-n")) + return !(strlen(args[2]) > 0); + if (w == READ24("-z")) + return !(strlen(args[2]) == 0); + if (w == READ24("-e")) + return !!stat(args[2], &st); + if (w == READ24("-f")) + return !(!stat(args[2], &st) && S_ISREG(st.st_mode)); + if (w == READ24("-d")) + return !(!stat(args[2], &st) && S_ISDIR(st.st_mode)); + if (w == READ24("-h")) + return !(!stat(args[2], &st) && S_ISLNK(st.st_mode)); } return -1; // fall back to system test command } @@ -558,7 +574,8 @@ static int Rm(void) { if ((!force && (lstat(args[i], &st) || (!S_ISLNK(st.st_mode) && access(args[i], W_OK)))) || unlink(args[i])) { - if (force && errno == ENOENT) continue; + if (force && errno == ENOENT) + continue; perror(args[i]); return 1; } @@ -675,31 +692,56 @@ static wontreturn void Exec(void) { } static int TryBuiltin(bool wantexec) { - if (!n) return exitstatus; - if (!strcmp(args[0], "exit")) Exit(); - if (!strcmp(args[0], "exec")) Exec(); - if (!strcmp(args[0], "cd")) return Cd(); - if (!strcmp(args[0], "rm")) return Rm(); - if (!strcmp(args[0], "[")) return Test(); - if (!strcmp(args[0], "cat")) return Cat(); - if (!strcmp(args[0], "env")) return Env(); - if (!strcmp(args[0], "pwd")) return Pwd(); - if (!strcmp(args[0], "wait")) return Wait(); - if (!strcmp(args[0], "echo")) return Echo(); - if (!strcmp(args[0], "read")) return Read(); - if (!strcmp(args[0], "true")) return True(); - if (!strcmp(args[0], "test")) return Test(); - if (!strcmp(args[0], "kill")) return Kill(); - if (!strcmp(args[0], "pause")) return Pause(); - if (!strcmp(args[0], "flock")) return Flock(); - if (!strcmp(args[0], "chmod")) return Chmod(); - if (!strcmp(args[0], "touch")) return Touch(); - if (!strcmp(args[0], "rmdir")) return Rmdir(); - if (!strcmp(args[0], "mkdir")) return Mkdir(); - if (!strcmp(args[0], "false")) return False(); - if (!strcmp(args[0], "mktemp")) return Mktemp(); - if (!strcmp(args[0], "usleep")) return Usleep(); - if (!strcmp(args[0], "toupper")) return Toupper(); + if (!n) + return exitstatus; + if (!strcmp(args[0], "exit")) + Exit(); + if (!strcmp(args[0], "exec")) + Exec(); + if (!strcmp(args[0], "cd")) + return Cd(); + if (!strcmp(args[0], "rm")) + return Rm(); + if (!strcmp(args[0], "[")) + return Test(); + if (!strcmp(args[0], "cat")) + return Cat(); + if (!strcmp(args[0], "env")) + return Env(); + if (!strcmp(args[0], "pwd")) + return Pwd(); + if (!strcmp(args[0], "wait")) + return Wait(); + if (!strcmp(args[0], "echo")) + return Echo(); + if (!strcmp(args[0], "read")) + return Read(); + if (!strcmp(args[0], "true")) + return True(); + if (!strcmp(args[0], "test")) + return Test(); + if (!strcmp(args[0], "kill")) + return Kill(); + if (!strcmp(args[0], "pause")) + return Pause(); + if (!strcmp(args[0], "flock")) + return Flock(); + if (!strcmp(args[0], "chmod")) + return Chmod(); + if (!strcmp(args[0], "touch")) + return Touch(); + if (!strcmp(args[0], "rmdir")) + return Rmdir(); + if (!strcmp(args[0], "mkdir")) + return Mkdir(); + if (!strcmp(args[0], "false")) + return False(); + if (!strcmp(args[0], "mktemp")) + return Mktemp(); + if (!strcmp(args[0], "usleep")) + return Usleep(); + if (!strcmp(args[0], "toupper")) + return Toupper(); if (_weaken(_tr) && !strcmp(args[0], "tr")) { return Fake(_weaken(_tr), wantexec); } @@ -736,13 +778,17 @@ static void Pipe(void) { if (!pid) { unassert(dup2(pfds[1], 1) == 1); // we can't rely on cloexec because builtins - if (pfds[0] != 1) unassert(!close(pfds[0])); - if (pfds[1] != 1) unassert(!close(pfds[1])); + if (pfds[0] != 1) + unassert(!close(pfds[0])); + if (pfds[1] != 1) + unassert(!close(pfds[1])); _Exit(ShellExec()); } unassert(dup2(pfds[0], 0) == 0); - if (pfds[0] != 0) unassert(!close(pfds[0])); - if (pfds[1] != 0) unassert(!close(pfds[1])); + if (pfds[0] != 0) + unassert(!close(pfds[0])); + if (pfds[1] != 0) + unassert(!close(pfds[1])); n = 0; } @@ -837,7 +883,8 @@ static char *Tokenize(void) { switch (t) { case STATE_WHITESPACE: - if (!*p) return 0; + if (!*p) + return 0; if (*p == ' ' || *p == '\t' || *p == '\n' || (p[0] == '\\' && p[1] == '\n')) { continue; @@ -859,10 +906,12 @@ static char *Tokenize(void) { t = STATE_VAR; var[(vari = 0)] = 0; } else if (*p == '\\') { - if (!p[1]) UnsupportedSyntax(*p); + if (!p[1]) + UnsupportedSyntax(*p); Append(*++p); } else if (*p == '=') { - if (!n && q > r) assign = r; + if (!n && q > r) + assign = r; Append(*p); } else if (*p == '|') { if (q > r) { @@ -914,11 +963,13 @@ static char *Tokenize(void) { case STATE_VAR: // XXX: we need to find a simple elegant way to break up // unquoted variable expansions into multiple args. - if (CopyVar()) t = STATE_CMD, --p; + if (CopyVar()) + t = STATE_CMD, --p; break; case STATE_SINGLE: - if (!*p) goto UnterminatedString; + if (!*p) + goto UnterminatedString; if (*p == '\'') { t = STATE_CMD; } else { @@ -931,12 +982,15 @@ static char *Tokenize(void) { _Exit(6); case STATE_QUOTED_VAR: - if (!*p) goto UnterminatedString; - if (CopyVar()) t = STATE_QUOTED, --p; + if (!*p) + goto UnterminatedString; + if (CopyVar()) + t = STATE_QUOTED, --p; break; case STATE_QUOTED: - if (!*p) goto UnterminatedString; + if (!*p) + goto UnterminatedString; if (*p == '"') { t = STATE_CMD; } else if (p[0] == '$') { @@ -1044,7 +1098,8 @@ int _cocmd(int argc, char **argv, char **envp) { n = 0; r = q = argbuf; while ((arg = Tokenize())) { - if (arg == TOMBSTONE) continue; + if (arg == TOMBSTONE) + continue; if (n + 1 < ARRAYLEN(args)) { if (isdigit(arg[0]) && arg[1] == '>' && arg[2] == '&' && isdigit(arg[3])) { diff --git a/libc/proc/describefds.c b/libc/proc/describefds.c index 990ccc68a..71d36c17f 100644 --- a/libc/proc/describefds.c +++ b/libc/proc/describefds.c @@ -42,13 +42,20 @@ struct StringBuilder { // returns true if fd can't be inherited by anything textwindows bool __is_cloexec(const struct Fd *f) { - if (f->kind == kFdEmpty) return true; - if (f->kind == kFdReserved) return true; - if (f->kind == kFdZip) return true; - if (f->kind == kFdEpoll) return true; - if (f->flags & O_CLOEXEC) return true; - if (f->handle == -1) return true; - if (!f->handle) return true; + if (f->kind == kFdEmpty) + return true; + if (f->kind == kFdReserved) + return true; + if (f->kind == kFdZip) + return true; + if (f->kind == kFdEpoll) + return true; + if (f->flags & O_CLOEXEC) + return true; + if (f->handle == -1) + return true; + if (!f->handle) + return true; return false; } @@ -81,14 +88,16 @@ textwindows char *__describe_fds(const struct Fd *fds, size_t fdslen, uint32_t handlecount = 0; // setup memory for environment variable - if (!(sb.p = strdup(FDS_VAR))) return 0; + if (!(sb.p = strdup(FDS_VAR))) + return 0; sb.i = sizeof(FDS_VAR) - 1; sb.n = sizeof(FDS_VAR); // setup memory for explicitly inherited handle list for (int fd = 0; fd < fdslen; ++fd) { const struct Fd *f = fds + fd; - if (__is_cloexec(f)) continue; + if (__is_cloexec(f)) + continue; ++handlecount; } if (!(handles = calloc(handlecount, sizeof(*handles)))) { @@ -101,7 +110,8 @@ textwindows char *__describe_fds(const struct Fd *fds, size_t fdslen, // serialize file descriptors for (int fd = 0; fd < fdslen; ++fd) { const struct Fd *f = fds + fd; - if (__is_cloexec(f)) continue; + if (__is_cloexec(f)) + continue; // make inheritable version of handle exist in creator process if (!DuplicateHandle(GetCurrentProcess(), f->handle, hCreatorProcess, diff --git a/libc/proc/execl.c b/libc/proc/execl.c index b085fb0b6..3aba82c02 100644 --- a/libc/proc/execl.c +++ b/libc/proc/execl.c @@ -40,19 +40,22 @@ int execl(const char *exe, const char *arg, ... /*, NULL*/) { va_list va, vb; va_copy(vb, va); va_start(va, arg); - for (i = 0; va_arg(va, const char *); ++i) donothing; + for (i = 0; va_arg(va, const char *); ++i) + donothing; va_end(va); #pragma GCC push_options #pragma GCC diagnostic ignored "-Walloca-larger-than=" int nbytes = (i + 2) * sizeof(char *); - if (__get_safe_size(nbytes, 4096) < nbytes) return enomem(); + if (__get_safe_size(nbytes, 4096) < nbytes) + return enomem(); char **argv = alloca(nbytes); CheckLargeStackAllocation(argv, nbytes); #pragma GCC pop_options va_start(vb, arg); argv[0] = (char *)arg; for (i = 1;; ++i) { - if (!(argv[i] = va_arg(vb, char *))) break; + if (!(argv[i] = va_arg(vb, char *))) + break; } va_end(vb); return execv(exe, argv); diff --git a/libc/proc/execle.c b/libc/proc/execle.c index 804ad8c29..d197864f9 100644 --- a/libc/proc/execle.c +++ b/libc/proc/execle.c @@ -43,20 +43,23 @@ int execle(const char *exe, const char *arg, char **argv, **envp; va_copy(vb, va); va_start(va, arg); - for (i = 0; va_arg(va, const char *); ++i) donothing; + for (i = 0; va_arg(va, const char *); ++i) + donothing; envp = va_arg(va, char **); va_end(va); #pragma GCC push_options #pragma GCC diagnostic ignored "-Walloca-larger-than=" int nbytes = (i + 2) * sizeof(char *); - if (__get_safe_size(nbytes, 4096) < nbytes) return enomem(); + if (__get_safe_size(nbytes, 4096) < nbytes) + return enomem(); argv = alloca(nbytes); CheckLargeStackAllocation(argv, nbytes); #pragma GCC pop_options va_start(vb, arg); argv[0] = (char *)arg; for (i = 1;; ++i) { - if (!(argv[i] = va_arg(vb, char *))) break; + if (!(argv[i] = va_arg(vb, char *))) + break; } va_end(vb); return execve(exe, argv, envp); diff --git a/libc/proc/execlp.c b/libc/proc/execlp.c index 5d94555a6..d90b4afbd 100644 --- a/libc/proc/execlp.c +++ b/libc/proc/execlp.c @@ -47,19 +47,22 @@ int execlp(const char *prog, const char *arg, ... /*, NULL*/) { // turn varargs into array va_copy(vb, va); va_start(va, arg); - for (i = 0; va_arg(va, const char *); ++i) (void)0; + for (i = 0; va_arg(va, const char *); ++i) + (void)0; va_end(va); #pragma GCC push_options #pragma GCC diagnostic ignored "-Walloca-larger-than=" int nbytes = (i + 2) * sizeof(char *); - if (__get_safe_size(nbytes, 4096) < nbytes) return enomem(); + if (__get_safe_size(nbytes, 4096) < nbytes) + return enomem(); argv = alloca(nbytes); CheckLargeStackAllocation(argv, nbytes); #pragma GCC pop_options va_start(vb, arg); argv[0] = (char *)arg; for (i = 1;; ++i) { - if (!(argv[i] = va_arg(vb, char *))) break; + if (!(argv[i] = va_arg(vb, char *))) + break; } va_end(vb); diff --git a/libc/proc/execve-sysv.c b/libc/proc/execve-sysv.c index 618b5c295..93c22f8c0 100644 --- a/libc/proc/execve-sysv.c +++ b/libc/proc/execve-sysv.c @@ -109,12 +109,14 @@ int sys_execve(const char *prog, char *const argv[], char *const envp[]) { // allocate memory int argc; - for (argc = 0; argv[argc];) ++argc; + for (argc = 0; argv[argc];) + ++argc; #pragma GCC push_options #pragma GCC diagnostic ignored "-Walloca-larger-than=" int nbytes = (argc + 4) * sizeof(char *); int ntotal = nbytes + PATH_MAX; - if (__get_safe_size(ntotal, 4096) < ntotal) return enomem(); + if (__get_safe_size(ntotal, 4096) < ntotal) + return enomem(); char **shargs = alloca(nbytes); CheckLargeStackAllocation(shargs, nbytes); #pragma GCC pop_options diff --git a/libc/proc/execvpe.c b/libc/proc/execvpe.c index f87a595fe..d748e47f8 100644 --- a/libc/proc/execvpe.c +++ b/libc/proc/execvpe.c @@ -64,11 +64,13 @@ int execvpe(const char *prog, char *const argv[], char *const *envp) { // change argv[0] to resolved path if it's ambiguous // otherwise the program won't have much luck finding itself if (argv[0] && *prog != '/' && *exe == '/' && !strcmp(prog, argv[0])) { - for (i = 0; argv[i++];) (void)0; + for (i = 0; argv[i++];) + (void)0; #pragma GCC push_options #pragma GCC diagnostic ignored "-Walloca-larger-than=" int nbytes = i * sizeof(*argv); - if (__get_safe_size(nbytes, 4096) < nbytes) return enomem(); + if (__get_safe_size(nbytes, 4096) < nbytes) + return enomem(); argv2 = alloca(nbytes); CheckLargeStackAllocation(argv2, nbytes); #pragma GCC pop_options diff --git a/libc/proc/fexecve.c b/libc/proc/fexecve.c index 052027508..085d0c98a 100644 --- a/libc/proc/fexecve.c +++ b/libc/proc/fexecve.c @@ -232,7 +232,8 @@ int fexecve(int fd, char *const argv[], char *const envp[]) { break; } size_t numenvs; - for (numenvs = 0; envp[numenvs];) ++numenvs; + for (numenvs = 0; envp[numenvs];) + ++numenvs; // const size_t desenvs = min(500, max(numenvs + 1, 2)); static _Thread_local char *envs[500]; memcpy(envs, envp, numenvs * sizeof(char *)); diff --git a/libc/proc/fork-nt.c b/libc/proc/fork-nt.c index dac6300cb..4ef781c2c 100644 --- a/libc/proc/fork-nt.c +++ b/libc/proc/fork-nt.c @@ -69,7 +69,8 @@ static textwindows wontreturn void AbortFork(const char *func) { static textwindows char16_t *ParseInt(char16_t *p, int64_t *x) { *x = 0; - while (*p == ' ') p++; + while (*p == ' ') + p++; while ('0' <= *p && *p <= '9') { *x *= 10; *x += *p++ - '0'; @@ -97,7 +98,8 @@ static dontinline textwindows bool ForkIo2(int64_t h, void *buf, size_t n, struct NtOverlapped *), const char *sf, bool ischild) { ssize_t rc = ForkIo(h, buf, n, fn); - if (ischild) __tls_enabled_set(false); // prevent tls crash in kprintf + if (ischild) + __tls_enabled_set(false); // prevent tls crash in kprintf NTTRACE("%s(%ld, %p, %'zu) → %'zd% m", sf, h, buf, n, rc); return rc != -1; } @@ -106,7 +108,8 @@ static dontinline textwindows bool WriteAll(int64_t h, void *buf, size_t n) { bool ok; ok = ForkIo2(h, buf, n, (void *)WriteFile, "WriteFile", false); #ifndef NDEBUG - if (ok) ok = ForkIo2(h, &n, sizeof(n), (void *)WriteFile, "WriteFile", false); + if (ok) + ok = ForkIo2(h, &n, sizeof(n), (void *)WriteFile, "WriteFile", false); #endif #if SYSDEBUG if (!ok) { @@ -195,7 +198,8 @@ textwindows void WinMainForked(void) { // check to see if the process was actually forked // this variable should have the pipe handle numba varlen = GetEnvironmentVariable(u"_FORK", fvar, ARRAYLEN(fvar)); - if (!varlen || varlen >= ARRAYLEN(fvar)) return; + if (!varlen || varlen >= ARRAYLEN(fvar)) + return; NTTRACE("WinMainForked()"); SetEnvironmentVariable(u"_FORK", NULL); #if SYSDEBUG @@ -302,7 +306,8 @@ textwindows int sys_fork_nt(uint32_t dwCreationFlags) { tib = __get_tls(); ftrace_enabled(-1); strace_enabled(-1); - if (!(proc = __proc_new())) return -1; + if (!(proc = __proc_new())) + return -1; if (!setjmp(jb)) { reader = CreateNamedPipe(__create_pipe_name(pipename), kNtPipeAccessInbound, kNtPipeTypeByte | kNtPipeReadmodeByte, 1, PIPE_BUF, @@ -323,14 +328,16 @@ textwindows int sys_fork_nt(uint32_t dwCreationFlags) { // forked process since the flag was removed by __intercept_flag if (strace_enabled(0) > 0) { int n; - for (n = 0; args[n];) ++n; + for (n = 0; args[n];) + ++n; #pragma GCC push_options #pragma GCC diagnostic ignored "-Walloca-larger-than=" int nbytes = (n + 2) * sizeof(char *); char **args2 = alloca(nbytes); CheckLargeStackAllocation(args2, nbytes); #pragma GCC pop_options - for (i = 0; i < n; ++i) args2[i] = args[i]; + for (i = 0; i < n; ++i) + args2[i] = args[i]; args2[i++] = "--strace"; args2[i] = 0; args = args2; @@ -360,10 +367,13 @@ textwindows int sys_fork_nt(uint32_t dwCreationFlags) { ok = WriteAll(writer, p, _mmi.p[i].size); } } - if (ok) ok = WriteAll(writer, __data_start, __data_end - __data_start); - if (ok) ok = WriteAll(writer, __bss_start, __bss_end - __bss_start); + if (ok) + ok = WriteAll(writer, __data_start, __data_end - __data_start); + if (ok) + ok = WriteAll(writer, __bss_start, __bss_end - __bss_start); if (ok) { - if (!CloseHandle(writer)) ok = false; + if (!CloseHandle(writer)) + ok = false; writer = -1; } if (ok) { @@ -377,8 +387,10 @@ textwindows int sys_fork_nt(uint32_t dwCreationFlags) { } } } - if (reader != -1) CloseHandle(reader); - if (writer != -1) CloseHandle(writer); + if (reader != -1) + CloseHandle(reader); + if (writer != -1) + CloseHandle(writer); if (rc == -1 && errno != ENOMEM) { eagain(); // posix fork() only specifies two errors } diff --git a/libc/proc/fork.c b/libc/proc/fork.c index 196d5490c..6c4706963 100644 --- a/libc/proc/fork.c +++ b/libc/proc/fork.c @@ -45,7 +45,8 @@ int _fork(uint32_t dwCreationFlags) { int ax, dx, tid, parent; parent = __pid; BLOCK_SIGNALS; - if (IsWindows()) __proc_lock(); + if (IsWindows()) + __proc_lock(); if (__threaded && _weaken(_pthread_onfork_prepare)) { _weaken(_pthread_onfork_prepare)(); } @@ -107,7 +108,8 @@ int _fork(uint32_t dwCreationFlags) { if (__threaded && _weaken(_pthread_onfork_parent)) { _weaken(_pthread_onfork_parent)(); } - if (IsWindows()) __proc_unlock(); + if (IsWindows()) + __proc_unlock(); STRACE("fork() → %d% m", ax); } ALLOW_SIGNALS; diff --git a/libc/proc/kill-nt.c b/libc/proc/kill-nt.c index 8911014d3..0a60bf350 100644 --- a/libc/proc/kill-nt.c +++ b/libc/proc/kill-nt.c @@ -84,8 +84,10 @@ textwindows int sys_kill_nt(int pid, int sig) { // perform actual kill // process will report WIFSIGNALED with WTERMSIG(sig) bool32 ok = TerminateProcess(handle, sig); - if (closeme) CloseHandle(closeme); - if (ok) return 0; + if (closeme) + CloseHandle(closeme); + if (ok) + return 0; // handle error OnError: diff --git a/libc/proc/killpg.c b/libc/proc/killpg.c index 30ec2c3c2..7e8531497 100644 --- a/libc/proc/killpg.c +++ b/libc/proc/killpg.c @@ -24,7 +24,9 @@ * Sends signal to process group. */ int killpg(int pgrp, int sig) { - if (!(0 < sig && sig < NSIG)) return einval(); - if (pgrp == 1 || pgrp < 0) return esrch(); + if (!(0 < sig && sig < NSIG)) + return einval(); + if (pgrp == 1 || pgrp < 0) + return esrch(); return kill(IsWindows() ? pgrp : -pgrp, sig); } diff --git a/libc/proc/nice.c b/libc/proc/nice.c index c667f52df..783ed4936 100644 --- a/libc/proc/nice.c +++ b/libc/proc/nice.c @@ -39,10 +39,12 @@ int nice(int delta) { p = delta; } else { delta = clamp(delta); - if ((p = getpriority(PRIO_PROCESS, 0)) == -1) return -1; + if ((p = getpriority(PRIO_PROCESS, 0)) == -1) + return -1; p += delta; } p = clamp(p); - if (setpriority(PRIO_PROCESS, 0, p) == -1) return -1; + if (setpriority(PRIO_PROCESS, 0, p) == -1) + return -1; return p; } diff --git a/libc/proc/posix_spawn.c b/libc/proc/posix_spawn.c index 8390c5c52..a99ef8dc0 100644 --- a/libc/proc/posix_spawn.c +++ b/libc/proc/posix_spawn.c @@ -110,17 +110,21 @@ struct SpawnFds { static atomic_bool has_vfork; // i.e. not qemu/wsl/xnu/openbsd static textwindows int64_t spawnfds_handle(struct SpawnFds *fds, int fd) { - if (__is_cloexec(fds->p + fd)) return -1; + if (__is_cloexec(fds->p + fd)) + return -1; return fds->p[fd].handle; } static textwindows errno_t spawnfds_ensure(struct SpawnFds *fds, int fd) { int n2; struct Fd *p2; - if (fd < 0) return EBADF; - if (fd < fds->n) return 0; + if (fd < 0) + return EBADF; + if (fd < fds->n) + return 0; n2 = fd + 1; - if (!(p2 = realloc(fds->p, n2 * sizeof(*fds->p)))) return ENOMEM; + if (!(p2 = realloc(fds->p, n2 * sizeof(*fds->p)))) + return ENOMEM; bzero(p2 + fds->n, (n2 - fds->n) * sizeof(*fds->p)); fds->p = p2; fds->n = n2; @@ -141,7 +145,8 @@ static textwindows void spawnfds_destroy(struct SpawnFds *fds) { static textwindows int spawnfds_closelater(struct SpawnFds *fds, int64_t handle) { struct Closer *closer; - if (!(closer = malloc(sizeof(struct Closer)))) return ENOMEM; + if (!(closer = malloc(sizeof(struct Closer)))) + return ENOMEM; closer->handle = handle; dll_init(&closer->elem); dll_make_last(&fds->closers, &closer->elem); @@ -170,7 +175,8 @@ static textwindows errno_t spawnfds_dup2(struct SpawnFds *fds, int fildes, } else { return EBADF; } - if ((err = spawnfds_ensure(fds, newfildes))) return err; + if ((err = spawnfds_ensure(fds, newfildes))) + return err; struct Fd *neu = fds->p + newfildes; memcpy(neu, old, sizeof(struct Fd)); neu->flags &= ~O_CLOEXEC; @@ -189,7 +195,8 @@ static textwindows errno_t spawnfds_open(struct SpawnFds *fds, int64_t dirhand, errno_t err; char16_t path16[PATH_MAX]; uint32_t perm, share, disp, attr; - if ((err = spawnfds_ensure(fds, fildes))) return err; + if ((err = spawnfds_ensure(fds, fildes))) + return err; if (__mkntpathath(dirhand, path, 0, path16) != -1 && GetNtOpenFlags(oflag, mode, &perm, &share, &disp, &attr) != -1 && (h = CreateFile(path16, perm, share, &kNtIsInheritable, disp, attr, 0))) { @@ -277,8 +284,10 @@ static textwindows errno_t posix_spawn_nt_impl( // fork file descriptor table for (int fd = g_fds.n; fd--;) { - if (__is_cloexec(g_fds.p + fd)) continue; - if ((err = spawnfds_ensure(&fds, fd))) goto ReturnErr; + if (__is_cloexec(g_fds.p + fd)) + continue; + if ((err = spawnfds_ensure(&fds, fd))) + goto ReturnErr; fds.p[fd] = g_fds.p[fd]; } @@ -369,7 +378,8 @@ static textwindows errno_t posix_spawn_nt_impl( // launch process int rc = -1; struct NtProcessInformation procinfo; - if (!envp) envp = environ; + if (!envp) + envp = environ; if ((fdspec = __describe_fds(fds.p, fds.n, &startinfo, hCreatorProcess, &lpExplicitHandles, &dwExplicitHandleCount))) { rc = ntspawn(dirhand, path, argv, envp, (char *[]){fdspec, maskvar, 0}, @@ -385,7 +395,8 @@ static textwindows errno_t posix_spawn_nt_impl( CloseHandle(procinfo.hThread); proc->pid = procinfo.dwProcessId; proc->handle = procinfo.hProcess; - if (pid) *pid = proc->pid; + if (pid) + *pid = proc->pid; __proc_lock(); __proc_add(proc); __proc_unlock(); @@ -395,8 +406,10 @@ static textwindows errno_t posix_spawn_nt_impl( } static const char *DescribePid(char buf[12], int err, int *pid) { - if (err) return "n/a"; - if (!pid) return "NULL"; + if (err) + return "n/a"; + if (!pid) + return "NULL"; FormatInt32(buf, *pid); return buf; } @@ -496,7 +509,8 @@ errno_t posix_spawn(int *pid, const char *path, bool lost_cloexec = 0; struct sigaction dfl = {0}; short flags = attrp && *attrp ? (*attrp)->flags : 0; - if (use_pipe) close(pfds[0]); + if (use_pipe) + close(pfds[0]); for (int sig = 1; sig < _NSIG; sig++) { if (__sighandrvas[sig] != (long)SIG_DFL && (__sighandrvas[sig] != (long)SIG_IGN || @@ -606,7 +620,8 @@ errno_t posix_spawn(int *pid, const char *path, childmask = oldmask; } sigprocmask(SIG_SETMASK, &childmask, 0); - if (!envp) envp = environ; + if (!envp) + envp = environ; execve(path, argv, envp); ChildFailed: res = errno; @@ -631,7 +646,8 @@ errno_t posix_spawn(int *pid, const char *path, read(pfds[0], &res, sizeof(res)); } if (!res) { - if (pid) *pid = child; + if (pid) + *pid = child; } else { wait4(child, 0, 0, 0); } diff --git a/libc/proc/posix_spawn_add_file_action.c b/libc/proc/posix_spawn_add_file_action.c index 3b6aace1f..0a0df67d1 100644 --- a/libc/proc/posix_spawn_add_file_action.c +++ b/libc/proc/posix_spawn_add_file_action.c @@ -24,9 +24,11 @@ int __posix_spawn_add_file_action(posix_spawn_file_actions_t *l, struct _posix_faction a) { struct _posix_faction *ap; - if (!(ap = malloc(sizeof(*ap)))) return ENOMEM; + if (!(ap = malloc(sizeof(*ap)))) + return ENOMEM; *ap = a; - while (*l) l = &(*l)->next; + while (*l) + l = &(*l)->next; *l = ap; return 0; } diff --git a/libc/proc/posix_spawn_file_actions_addchdir_np.c b/libc/proc/posix_spawn_file_actions_addchdir_np.c index 4ab0dc4a3..61e6614f9 100644 --- a/libc/proc/posix_spawn_file_actions_addchdir_np.c +++ b/libc/proc/posix_spawn_file_actions_addchdir_np.c @@ -32,7 +32,8 @@ int posix_spawn_file_actions_addchdir_np( posix_spawn_file_actions_t *file_actions, const char *path) { char *path2; - if (!(path2 = strdup(path))) return ENOMEM; + if (!(path2 = strdup(path))) + return ENOMEM; return __posix_spawn_add_file_action(file_actions, (struct _posix_faction){ .action = _POSIX_SPAWN_CHDIR, diff --git a/libc/proc/posix_spawn_file_actions_addclose.c b/libc/proc/posix_spawn_file_actions_addclose.c index 1d9e41495..5a96b1fa1 100644 --- a/libc/proc/posix_spawn_file_actions_addclose.c +++ b/libc/proc/posix_spawn_file_actions_addclose.c @@ -31,7 +31,8 @@ */ int posix_spawn_file_actions_addclose(posix_spawn_file_actions_t *file_actions, int fildes) { - if (fildes < 0) return EBADF; + if (fildes < 0) + return EBADF; return __posix_spawn_add_file_action(file_actions, (struct _posix_faction){ .action = _POSIX_SPAWN_CLOSE, diff --git a/libc/proc/posix_spawn_file_actions_adddup2.c b/libc/proc/posix_spawn_file_actions_adddup2.c index ae3ec441f..ebe971450 100644 --- a/libc/proc/posix_spawn_file_actions_adddup2.c +++ b/libc/proc/posix_spawn_file_actions_adddup2.c @@ -31,7 +31,8 @@ */ int posix_spawn_file_actions_adddup2(posix_spawn_file_actions_t *file_actions, int fildes, int newfildes) { - if (fildes < 0 || newfildes < 0) return EBADF; + if (fildes < 0 || newfildes < 0) + return EBADF; return __posix_spawn_add_file_action(file_actions, (struct _posix_faction){ .action = _POSIX_SPAWN_DUP2, diff --git a/libc/proc/posix_spawn_file_actions_addfchdir_np.c b/libc/proc/posix_spawn_file_actions_addfchdir_np.c index 7404da09a..2cf57e6f0 100644 --- a/libc/proc/posix_spawn_file_actions_addfchdir_np.c +++ b/libc/proc/posix_spawn_file_actions_addfchdir_np.c @@ -30,7 +30,8 @@ */ int posix_spawn_file_actions_addfchdir_np( posix_spawn_file_actions_t *file_actions, int fildes) { - if (fildes < 0) return EBADF; + if (fildes < 0) + return EBADF; return __posix_spawn_add_file_action(file_actions, (struct _posix_faction){ .action = _POSIX_SPAWN_FCHDIR, diff --git a/libc/proc/posix_spawn_file_actions_addopen.c b/libc/proc/posix_spawn_file_actions_addopen.c index 413fdbafa..b45e7b21c 100644 --- a/libc/proc/posix_spawn_file_actions_addopen.c +++ b/libc/proc/posix_spawn_file_actions_addopen.c @@ -36,8 +36,10 @@ int posix_spawn_file_actions_addopen(posix_spawn_file_actions_t *file_actions, int fildes, const char *path, int oflag, unsigned mode) { char *path2; - if (fildes < 0) return EBADF; - if (!(path2 = strdup(path))) return ENOMEM; + if (fildes < 0) + return EBADF; + if (!(path2 = strdup(path))) + return ENOMEM; return __posix_spawn_add_file_action(file_actions, (struct _posix_faction){ .action = _POSIX_SPAWN_OPEN, diff --git a/libc/proc/posix_spawnp.c b/libc/proc/posix_spawnp.c index caabd0366..ce3ca54c9 100644 --- a/libc/proc/posix_spawnp.c +++ b/libc/proc/posix_spawnp.c @@ -33,6 +33,7 @@ int posix_spawnp(int *pid, const char *path, const posix_spawnattr_t *attrp, char *const argv[], char *const envp[]) { char pathbuf[PATH_MAX]; - if (!(path = commandv(path, pathbuf, sizeof(pathbuf)))) return errno; + if (!(path = commandv(path, pathbuf, sizeof(pathbuf)))) + return errno; return posix_spawn(pid, path, file_actions, attrp, argv, envp); } diff --git a/libc/proc/proc.c b/libc/proc/proc.c index 600bf206c..33aa5f15c 100644 --- a/libc/proc/proc.c +++ b/libc/proc/proc.c @@ -84,7 +84,8 @@ textwindows int __proc_harvest(struct Proc *pr, bool iswait4) { uint32_t status; struct rusage ru; GetExitCodeProcess(pr->handle, &status); - if (status == kNtStillActive) return 0; + if (status == kNtStillActive) + return 0; __proc_stats(pr->handle, &ru); rusage_add(&pr->ru, &ru); rusage_add(&__proc.ruchlds, &ru); @@ -176,8 +177,10 @@ static textwindows dontinstrument uint32_t __proc_worker(void *arg) { // release our waiter status for (int j = 0; j < n; ++j) { - if (handles[j] == __proc.onbirth) continue; - if (j == i) continue; + if (handles[j] == __proc.onbirth) + continue; + if (j == i) + continue; if (!--objects[j]->waiters && objects[j]->status == PROC_UNDEAD) { __proc_free(objects[j]); } diff --git a/libc/proc/setpriority-nt.c b/libc/proc/setpriority-nt.c index 30ee7a806..fc3f2fb09 100644 --- a/libc/proc/setpriority-nt.c +++ b/libc/proc/setpriority-nt.c @@ -53,7 +53,8 @@ textwindows int sys_setpriority_nt(int which, unsigned pid, int nice) { tier = kNtIdlePriorityClass; } - if (SetPriorityClass(handle, tier)) return 0; + if (SetPriorityClass(handle, tier)) + return 0; STRACE("SetPriorityClass() failed with %d", GetLastError()); switch (GetLastError()) { case kNtErrorInvalidHandle: diff --git a/libc/proc/system.c b/libc/proc/system.c index 75ea1061f..fddb4a0dd 100644 --- a/libc/proc/system.c +++ b/libc/proc/system.c @@ -64,7 +64,8 @@ int system(const char *cmdline) { int pid, wstatus; sigset_t chldmask, savemask; - if (!cmdline) return 1; + if (!cmdline) + return 1; sigemptyset(&chldmask); sigaddset(&chldmask, SIGINT); sigaddset(&chldmask, SIGQUIT); diff --git a/libc/proc/times.c b/libc/proc/times.c index 50f8d2fd1..640586c2a 100644 --- a/libc/proc/times.c +++ b/libc/proc/times.c @@ -38,10 +38,12 @@ static dontinline long times2(struct tms *out_times, struct rusage *ru) { struct timeval tv; struct NtFileTime CreationTime, ExitTime, KernelTime, UserTime; if (!IsWindows()) { - if (getrusage(RUSAGE_SELF, ru) == -1) return -1; + if (getrusage(RUSAGE_SELF, ru) == -1) + return -1; out_times->tms_utime = ConvertMicros(ru->ru_utime); out_times->tms_stime = ConvertMicros(ru->ru_stime); - if (getrusage(RUSAGE_CHILDREN, ru) == -1) return -1; + if (getrusage(RUSAGE_CHILDREN, ru) == -1) + return -1; out_times->tms_cutime = ConvertMicros(ru->ru_utime); out_times->tms_cstime = ConvertMicros(ru->ru_stime); } else { @@ -54,7 +56,8 @@ static dontinline long times2(struct tms *out_times, struct rusage *ru) { out_times->tms_cutime = 0; out_times->tms_cstime = 0; } - if (gettimeofday(&tv, NULL) == -1) return -1; + if (gettimeofday(&tv, NULL) == -1) + return -1; return ConvertMicros(tv); } diff --git a/libc/proc/wait4-nt.c b/libc/proc/wait4-nt.c index 3cbb5bc57..d1f2bc396 100644 --- a/libc/proc/wait4-nt.c +++ b/libc/proc/wait4-nt.c @@ -116,7 +116,8 @@ static textwindows int __proc_wait(int pid, int *wstatus, int options, for (struct Dll *e = dll_first(__proc.list); e; e = dll_next(__proc.list, e)) { pr = PROC_CONTAINER(e); - if (pid == pr->pid) break; + if (pid == pr->pid) + break; } if (pr) { // by making the waiter count non-zero, the proc daemon stops @@ -211,12 +212,15 @@ static textwindows int __proc_wait(int pid, int *wstatus, int options, textwindows int sys_wait4_nt(int pid, int *opt_out_wstatus, int options, struct rusage *opt_out_rusage) { // no support for WCONTINUED and WUNTRACED yet - if (options & ~WNOHANG) return einval(); + if (options & ~WNOHANG) + return einval(); // XXX: NT doesn't really have process groups. For instance the // CreateProcess() flag for starting a process group actually // just does an "ignore ctrl-c" internally. - if (pid == 0) pid = -1; - if (pid < -1) pid = -pid; + if (pid == 0) + pid = -1; + if (pid < -1) + pid = -pid; sigset_t m = __sig_block(); int rc = __proc_wait(pid, opt_out_wstatus, options, opt_out_rusage, m | 1ull << (SIGCHLD - 1)); diff --git a/libc/runtime/clone.c b/libc/runtime/clone.c index 7a9913ccb..16c07cf22 100644 --- a/libc/runtime/clone.c +++ b/libc/runtime/clone.c @@ -118,7 +118,8 @@ WinThreadEntry(int rdi, // rcx int rdx, // r8 struct CloneArgs *wt) { // r9 int rc; - if (wt->tls) __set_tls_win32(wt->tls); + if (wt->tls) + __set_tls_win32(wt->tls); *wt->ctid = wt->tid; rc = __stack_call(wt->arg, wt->tid, 0, 0, wt->func, wt); // we can now clear ctid directly since we're no longer using our own @@ -465,17 +466,20 @@ static errno_t CloneFreebsd(int (*func)(void *, int), char *stk, size_t stksz, : CFLAG_CONSTRAINT(failed), "=a"(ax) : "1"(__NR_thr_new), "D"(¶ms), "S"(sizeof(params)) : "rcx", "rdx", "r8", "r9", "r10", "r11", "memory"); - if (failed) return ax; + if (failed) + return ax; #elif defined(__aarch64__) register long x0 asm("x0") = (long)¶ms; register long x1 asm("x1") = sizeof(params); register int x8 asm("x8") = 0x1c7; // thr_new asm volatile("svc\t0" : "+r"(x0) : "r"(x1), "r"(x8) : "memory"); - if (x0) return x0; + if (x0) + return x0; #else #error "unsupported architecture" #endif - if (flags & CLONE_PARENT_SETTID) *ptid = tid; + if (flags & CLONE_PARENT_SETTID) + *ptid = tid; return 0; } diff --git a/libc/runtime/closesymboltable.c b/libc/runtime/closesymboltable.c index 1f825d3ee..ae13b7a3a 100644 --- a/libc/runtime/closesymboltable.c +++ b/libc/runtime/closesymboltable.c @@ -25,7 +25,8 @@ */ int CloseSymbolTable(struct SymbolTable **table) { struct SymbolTable *t; - if (!*table) return 0; + if (!*table) + return 0; t = *table; *table = 0; return munmap(t, t->mapsize); diff --git a/libc/runtime/cosmo2.c b/libc/runtime/cosmo2.c index 8181bb9b3..afdf39d8b 100644 --- a/libc/runtime/cosmo2.c +++ b/libc/runtime/cosmo2.c @@ -104,7 +104,8 @@ wontreturn textstartup void cosmo(long *sp, struct Syslib *m1, char *exename, char **argv = (char **)(sp + 1); char **envp = (char **)(sp + 1 + argc + 1); unsigned long *auxv = (unsigned long *)(sp + 1 + argc + 1); - while (*auxv++) donothing; + while (*auxv++) + donothing; // set helpful globals __argc = argc; diff --git a/libc/runtime/efimain.greg.c b/libc/runtime/efimain.greg.c index 5b15f73d6..4ecda0eca 100644 --- a/libc/runtime/efimain.greg.c +++ b/libc/runtime/efimain.greg.c @@ -109,7 +109,8 @@ static void EfiInitVga(struct mman *mm, EFI_SYSTEM_TABLE *SystemTable) { default: notpossible; } - if (!bytes_per_pix) notpossible; + if (!bytes_per_pix) + notpossible; mm->pc_video_type = vid_typ; mm->pc_video_stride = GraphMode->Info->PixelsPerScanLine * bytes_per_pix; mm->pc_video_width = GraphMode->Info->HorizontalResolution; @@ -217,7 +218,8 @@ __msabi EFI_STATUS EfiMain(EFI_HANDLE ImageHandle, SystemTable->BootServices->HandleProtocol(ImageHandle, &kEfiLoadedImageProtocol, &ImgInfo); CmdLine = (const char16_t *)ImgInfo->LoadOptions; - if (!CmdLine || !CmdLine[0]) CmdLine = u"BOOTX64.EFI"; + if (!CmdLine || !CmdLine[0]) + CmdLine = u"BOOTX64.EFI"; Args = GetDosArgv(CmdLine, ArgBlock->ArgBlock, sizeof(ArgBlock->ArgBlock), ArgBlock->Args, ARRAYLEN(ArgBlock->Args)); @@ -226,7 +228,8 @@ __msabi EFI_STATUS EfiMain(EFI_HANDLE ImageHandle, * TODO: if needed, switch to a video mode that has a linear frame buffer * type we support. */ - if (_weaken(vga_console)) EfiInitVga(mm, SystemTable); + if (_weaken(vga_console)) + EfiInitVga(mm, SystemTable); /* * Gets a pointer to the ACPI RSDP. @@ -250,7 +253,8 @@ __msabi EFI_STATUS EfiMain(EFI_HANDLE ImageHandle, case EfiLoaderData: case EfiBootServicesCode: case EfiBootServicesData: - if (Desc->PhysicalStart != 0) break; + if (Desc->PhysicalStart != 0) + break; /* fallthrough */ case EfiConventionalMemory: mm->e820[j].addr = Desc->PhysicalStart; diff --git a/libc/runtime/fpathconf.c b/libc/runtime/fpathconf.c index 183766fff..43623cc50 100644 --- a/libc/runtime/fpathconf.c +++ b/libc/runtime/fpathconf.c @@ -24,27 +24,48 @@ #include "libc/sysv/errfuns.h" long fpathconf(int fd, int name) { - if (name == _PC_LINK_MAX) return _POSIX_LINK_MAX; - if (name == _PC_MAX_CANON) return _POSIX_MAX_CANON; - if (name == _PC_MAX_INPUT) return _POSIX_MAX_INPUT; - if (name == _PC_NAME_MAX) return NAME_MAX; - if (name == _PC_PATH_MAX) return PATH_MAX; - if (name == _PC_PIPE_BUF) return PIPE_BUF; - if (name == _PC_CHOWN_RESTRICTED) return 1; - if (name == _PC_NO_TRUNC) return 1; - if (name == _PC_VDISABLE) return 0; - if (name == _PC_SYNC_IO) return 1; - if (name == _PC_ASYNC_IO) return -1; - if (name == _PC_PRIO_IO) return -1; - if (name == _PC_SOCK_MAXBUF) return -1; - if (name == _PC_FILESIZEBITS) return FILESIZEBITS; - if (name == _PC_REC_INCR_XFER_SIZE) return 4096; - if (name == _PC_REC_MAX_XFER_SIZE) return 4096; - if (name == _PC_REC_MIN_XFER_SIZE) return 4096; - if (name == _PC_REC_XFER_ALIGN) return 4096; - if (name == _PC_ALLOC_SIZE_MIN) return 4096; - if (name == _PC_SYMLINK_MAX) return -1; - if (name == _PC_2_SYMLINKS) return 1; + if (name == _PC_LINK_MAX) + return _POSIX_LINK_MAX; + if (name == _PC_MAX_CANON) + return _POSIX_MAX_CANON; + if (name == _PC_MAX_INPUT) + return _POSIX_MAX_INPUT; + if (name == _PC_NAME_MAX) + return NAME_MAX; + if (name == _PC_PATH_MAX) + return PATH_MAX; + if (name == _PC_PIPE_BUF) + return PIPE_BUF; + if (name == _PC_CHOWN_RESTRICTED) + return 1; + if (name == _PC_NO_TRUNC) + return 1; + if (name == _PC_VDISABLE) + return 0; + if (name == _PC_SYNC_IO) + return 1; + if (name == _PC_ASYNC_IO) + return -1; + if (name == _PC_PRIO_IO) + return -1; + if (name == _PC_SOCK_MAXBUF) + return -1; + if (name == _PC_FILESIZEBITS) + return FILESIZEBITS; + if (name == _PC_REC_INCR_XFER_SIZE) + return 4096; + if (name == _PC_REC_MAX_XFER_SIZE) + return 4096; + if (name == _PC_REC_MIN_XFER_SIZE) + return 4096; + if (name == _PC_REC_XFER_ALIGN) + return 4096; + if (name == _PC_ALLOC_SIZE_MIN) + return 4096; + if (name == _PC_SYMLINK_MAX) + return -1; + if (name == _PC_2_SYMLINKS) + return 1; return einval(); } diff --git a/libc/runtime/ftracer.c b/libc/runtime/ftracer.c index 2d54afe92..d2e686d3b 100644 --- a/libc/runtime/ftracer.c +++ b/libc/runtime/ftracer.c @@ -61,7 +61,8 @@ __funline int GetNestingLevelImpl(struct StackFrame *frame) { __funline int GetNestingLevel(struct CosmoFtrace *ft, struct StackFrame *sf) { int nesting; nesting = GetNestingLevelImpl(sf); - if (nesting < ft->ft_skew) ft->ft_skew = nesting; + if (nesting < ft->ft_skew) + ft->ft_skew = nesting; nesting -= ft->ft_skew; return MIN(MAX_NESTING, nesting); } @@ -84,10 +85,12 @@ privileged void ftracer(void) { struct PosixThread *pt; sf = __builtin_frame_address(0); st = (uintptr_t)__argv - sizeof(uintptr_t); - if (__ftrace <= 0) return; + if (__ftrace <= 0) + return; if (__tls_enabled) { tib = __get_tls_privileged(); - if (tib->tib_ftrace <= 0) return; + if (tib->tib_ftrace <= 0) + return; ft = &tib->tib_ftracer; if ((char *)sf >= tib->tib_sigstack_addr && (char *)sf <= tib->tib_sigstack_addr + tib->tib_sigstack_size) { diff --git a/libc/runtime/getavphyspages.c b/libc/runtime/getavphyspages.c index 70741f811..9dcd12ade 100644 --- a/libc/runtime/getavphyspages.c +++ b/libc/runtime/getavphyspages.c @@ -21,6 +21,7 @@ long __get_avphys_pages(void) { struct sysinfo si; - if (sysinfo(&si) == -1) return -1; + if (sysinfo(&si) == -1) + return -1; return (((int64_t)si.freeram + si.bufferram) * si.mem_unit) / FRAMESIZE; } diff --git a/libc/runtime/getdosargv.c b/libc/runtime/getdosargv.c index 76885d738..87ecd5a39 100644 --- a/libc/runtime/getdosargv.c +++ b/libc/runtime/getdosargv.c @@ -31,7 +31,8 @@ struct DosArgv { textwindows void DecodeDosArgv(int ignore, struct DosArgv *st) { wint_t x, y; for (;;) { - if (!(x = *st->s++)) break; + if (!(x = *st->s++)) + break; if (!IsUcs2(x)) { if ((y = *st->s++)) { x = MergeUtf16(x, y); @@ -48,7 +49,8 @@ static textwindows void AppendDosArgv(wint_t wc, struct DosArgv *st) { uint64_t w; w = tpenc(wc); do { - if (st->p >= st->pe) break; + if (st->p >= st->pe) + break; *st->p++ = w & 0xff; } while (w >>= 8); } @@ -97,13 +99,15 @@ textwindows int GetDosArgv(const char16_t *cmdline, char *buf, size_t size, while (st->wc && (st->wc == ' ' || st->wc == '\t')) { DecodeDosArgv(ignore, st); } - if (!st->wc) break; + if (!st->wc) + break; if (++argc < max) { argv[argc - 1] = st->p < st->pe ? st->p : NULL; } inquote = false; while (st->wc) { - if (!inquote && (st->wc == ' ' || st->wc == '\t')) break; + if (!inquote && (st->wc == ' ' || st->wc == '\t')) + break; if (st->wc == '"' || st->wc == '\\') { slashes = Count('\\', st); quotes = Count('"', st); @@ -121,7 +125,8 @@ textwindows int GetDosArgv(const char16_t *cmdline, char *buf, size_t size, quotes--; } if (quotes > 0) { - if (!inquote) quotes--; + if (!inquote) + quotes--; for (i = 3; i <= quotes + 1; i += 3) { AppendDosArgv('"', st); } @@ -136,7 +141,9 @@ textwindows int GetDosArgv(const char16_t *cmdline, char *buf, size_t size, AppendDosArgv('\0', st); } AppendDosArgv('\0', st); - if (size) buf[MIN(st->p - buf, size - 1)] = '\0'; - if (max) argv[MIN(argc, max - 1)] = NULL; + if (size) + buf[MIN(st->p - buf, size - 1)] = '\0'; + if (max) + argv[MIN(argc, max - 1)] = NULL; return argc; } diff --git a/libc/runtime/getdosenviron.c b/libc/runtime/getdosenviron.c index 286e93bb9..ba12636d6 100644 --- a/libc/runtime/getdosenviron.c +++ b/libc/runtime/getdosenviron.c @@ -43,7 +43,8 @@ static abi axdx_t Recode16to8(char *dst, size_t dstsize, const char16_t *src) { uint64_t w; wint_t x, y; for (v = false, r.ax = 0, r.dx = 0;;) { - if (!(x = src[r.dx++])) break; + if (!(x = src[r.dx++])) + break; if (!IsUcs2(x)) { y = src[r.dx++]; x = MergeUtf16(x, y); @@ -117,7 +118,8 @@ abi int GetDosEnviron(const char16_t *env, char *buf, size_t size, char **envp, i = 0; --size; while (*env) { - if (i + 1 < max) envp[i++] = buf; + if (i + 1 < max) + envp[i++] = buf; r = Recode16to8(buf, size, env); if ((p = MemChr(buf, '=', r.ax)) && IsAlpha(p[1]) && p[2] == ':' && (p[3] == '\\' || p[3] == '/')) { diff --git a/libc/runtime/getphyspages.c b/libc/runtime/getphyspages.c index ee932042e..8c9eabc26 100644 --- a/libc/runtime/getphyspages.c +++ b/libc/runtime/getphyspages.c @@ -21,6 +21,7 @@ long __get_phys_pages(void) { struct sysinfo si; - if (sysinfo(&si) == -1) return -1; + if (sysinfo(&si) == -1) + return -1; return ((int64_t)si.totalram * si.mem_unit) / FRAMESIZE; } diff --git a/libc/runtime/getresourcelimit.c b/libc/runtime/getresourcelimit.c index 7e01b81dc..d68b256b3 100644 --- a/libc/runtime/getresourcelimit.c +++ b/libc/runtime/getresourcelimit.c @@ -23,7 +23,9 @@ long __get_rlimit(int resource) { struct rlimit rl; - if (getrlimit(resource, &rl) == -1) return -1; - if (rl.rlim_cur == RLIM_INFINITY) return -1; + if (getrlimit(resource, &rl) == -1) + return -1; + if (rl.rlim_cur == RLIM_INFINITY) + return -1; return MIN(rl.rlim_cur, LONG_MAX); } diff --git a/libc/runtime/getsymbolbyaddr.c b/libc/runtime/getsymbolbyaddr.c index 58fe0b12a..623e02d82 100644 --- a/libc/runtime/getsymbolbyaddr.c +++ b/libc/runtime/getsymbolbyaddr.c @@ -29,6 +29,7 @@ char *GetSymbolByAddr(int64_t addr) { struct SymbolTable *st; st = GetSymbolTable(); i = __get_symbol(st, addr); - if (i == -1) i = __get_symbol(st, addr - 1); + if (i == -1) + i = __get_symbol(st, addr - 1); return __get_symbol_name(st, i); } diff --git a/libc/runtime/getsymboltable.c b/libc/runtime/getsymboltable.c index fff3282f9..b9f8ae2cb 100644 --- a/libc/runtime/getsymboltable.c +++ b/libc/runtime/getsymboltable.c @@ -122,7 +122,8 @@ static struct SymbolTable *GetSymbolTableFromElf(void) { */ struct SymbolTable *GetSymbolTable(void) { struct Zipos *z; - if (pthread_spin_trylock(&g_lock)) return 0; + if (pthread_spin_trylock(&g_lock)) + return 0; if (!__symtab && !__isworker) { if (_weaken(__zipos_get) && (z = _weaken(__zipos_get)())) { if ((__symtab = GetSymbolTableFromZip(z))) { diff --git a/libc/runtime/grow.c b/libc/runtime/grow.c index 1d5c32835..efee95fce 100644 --- a/libc/runtime/grow.c +++ b/libc/runtime/grow.c @@ -46,7 +46,8 @@ bool __grow(void *pp, size_t *capacity, size_t itemsize, size_t extra) { n2 = (*p ? n1 + (n1 >> 1) : MAX(4, INITIAL_CAPACITY / itemsize)) + extra; if (!ckd_mul(&t1, n1, itemsize) && !ckd_mul(&t2, n2, itemsize)) { if (_weaken(realloc) && (p2 = _weaken(realloc)(p1, ROUNDUP(t2, 32)))) { - if (!p1 && *p) memcpy(p2, *p, t1); + if (!p1 && *p) + memcpy(p2, *p, t1); bzero((char *)p2 + t1, t2 - t1); *capacity = n2; *p = p2; diff --git a/libc/runtime/hook.greg.c b/libc/runtime/hook.greg.c index 91e50fec6..16596bf6a 100644 --- a/libc/runtime/hook.greg.c +++ b/libc/runtime/hook.greg.c @@ -36,17 +36,21 @@ static privileged bool IsVirginFunction(const code_t *func) { long i; // function must be preceeded by 9 nops for (i = -9; i < 0; ++i) { - if (func[i] != 0x90) return false; + if (func[i] != 0x90) + return false; } // function must start with `nop nop` or `xchg %ax,%ax` - if (func[0] == 0x90 && func[1] == 0x90) return true; - if (func[0] == 0x66 && func[1] == 0x90) return true; + if (func[0] == 0x90 && func[1] == 0x90) + return true; + if (func[0] == 0x66 && func[1] == 0x90) + return true; return false; #elif defined(__aarch64__) long i; // function must be preceeded by 6 nops for (i = -6; i < 0; ++i) { - if (func[i] != 0xd503201f) return false; + if (func[i] != 0xd503201f) + return false; } // function must start with one nop return func[0] == 0xd503201f; @@ -57,7 +61,8 @@ static privileged void HookFunction(code_t *func, void *dest) { long dp; #ifdef __x86_64__ dp = (intptr_t)dest - (intptr_t)(func - 7 + 5); - if (!(INT32_MIN <= dp && dp <= INT32_MAX)) return; + if (!(INT32_MIN <= dp && dp <= INT32_MAX)) + return; // emit `ud2` signature for safety and checkability func[-9] = 0x0f; func[-8] = 0x0b; @@ -75,7 +80,8 @@ static privileged void HookFunction(code_t *func, void *dest) { func[+1] = -7 - 2; #elif defined(__aarch64__) dp = (code_t *)dest - (func - 3); - if (!(-33554432 <= dp && dp <= +33554431)) return; + if (!(-33554432 <= dp && dp <= +33554431)) + return; func[-6] = 0xd4200000 | (31337 << 5); // brk #31337 func[-5] = 0xa9bf7bfd; // stp x29,x30,[sp, #-16]! func[-4] = 0x910003fd; // mov x29,sp @@ -110,16 +116,21 @@ privileged int __hook(void *dest, struct SymbolTable *st) { long i; code_t *p, *pe; intptr_t lowest; - if (!st) return -1; + if (!st) + return -1; __morph_begin(); lowest = MAX((intptr_t)__executable_start, (intptr_t)_ereal); for (i = 0; i < st->count; ++i) { - if (st->symbols[i].x < 9) continue; - if (st->addr_base + st->symbols[i].x < lowest) continue; - if (st->addr_base + st->symbols[i].y >= (intptr_t)__privileged_start) break; + if (st->symbols[i].x < 9) + continue; + if (st->addr_base + st->symbols[i].x < lowest) + continue; + if (st->addr_base + st->symbols[i].y >= (intptr_t)__privileged_start) + break; p = (code_t *)((char *)st->addr_base + st->symbols[i].x); pe = (code_t *)((char *)st->addr_base + st->symbols[i].y); - if (pe - p < 2) continue; + if (pe - p < 2) + continue; if (IsVirginFunction(p)) { // kprintf("hooking %t\n", p); HookFunction(p, dest); diff --git a/libc/runtime/ismemtracked.greg.c b/libc/runtime/ismemtracked.greg.c index a613e91a7..da848a25d 100644 --- a/libc/runtime/ismemtracked.greg.c +++ b/libc/runtime/ismemtracked.greg.c @@ -21,12 +21,17 @@ static inline bool IsMemtrackedImpl(int x, int y) { unsigned i; i = __find_memory(&_mmi, x); - if (i == _mmi.i) return false; - if (x < _mmi.p[i].x) return false; + if (i == _mmi.i) + return false; + if (x < _mmi.p[i].x) + return false; for (;;) { - if (y <= _mmi.p[i].y) return true; - if (++i == _mmi.i) return false; - if (_mmi.p[i].x != _mmi.p[i - 1].y + 1) return false; + if (y <= _mmi.p[i].y) + return true; + if (++i == _mmi.i) + return false; + if (_mmi.p[i].x != _mmi.p[i - 1].y + 1) + return false; } } diff --git a/libc/runtime/isstackoverflow.c b/libc/runtime/isstackoverflow.c index ac2a1e091..efe0d0696 100644 --- a/libc/runtime/isstackoverflow.c +++ b/libc/runtime/isstackoverflow.c @@ -29,8 +29,10 @@ */ char __is_stack_overflow(siginfo_t *si, void *arg) { ucontext_t *uc = arg; - if (!si || !uc) return false; - if (si->si_signo != SIGSEGV && si->si_signo != SIGBUS) return false; + if (!si || !uc) + return false; + if (si->si_signo != SIGSEGV && si->si_signo != SIGBUS) + return false; intptr_t sp = uc->uc_mcontext.SP; intptr_t fp = (intptr_t)si->si_addr; return ABS(fp - sp) < getauxval(AT_PAGESZ); diff --git a/libc/runtime/mmap.c b/libc/runtime/mmap.c index 68bda1c2b..3a066c64e 100644 --- a/libc/runtime/mmap.c +++ b/libc/runtime/mmap.c @@ -77,7 +77,8 @@ static inline pureconst unsigned long __rounddown2pow(unsigned long x) { } static wontreturn void __mmap_die(const char *s) { - if (_weaken(__die)) _weaken(__die)(); + if (_weaken(__die)) + _weaken(__die)(); STRACE("%s %m", s); _Exit(199); } @@ -89,9 +90,12 @@ static inline bool __overlaps_existing_mapping(char *p, size_t n) { b = FRAME(p + (n - 1)); i = __find_memory(&_mmi, a); if (i < _mmi.i) { - if (a <= _mmi.p[i].x && _mmi.p[i].x <= b) return true; - if (a <= _mmi.p[i].y && _mmi.p[i].y <= b) return true; - if (_mmi.p[i].x <= a && b <= _mmi.p[i].y) return true; + if (a <= _mmi.p[i].x && _mmi.p[i].x <= b) + return true; + if (a <= _mmi.p[i].y && _mmi.p[i].y <= b) + return true; + if (_mmi.p[i].x <= a && b <= _mmi.p[i].y) + return true; } return false; } @@ -219,7 +223,8 @@ static textwindows dontinline void *__map_memories(char *addr, size_t size, oi = fd == -1 ? 0 : off + m; sz = size - m; dm = sys_mmap(addr + m, sz, prot, f, fd, oi); - if (dm.addr == MAP_FAILED) return MAP_FAILED; + if (dm.addr == MAP_FAILED) + return MAP_FAILED; iscow = (flags & MAP_TYPE) != MAP_SHARED && fd != -1; readonlyfile = (flags & MAP_TYPE) == MAP_SHARED && fd != -1 && (g_fds.p[fd].flags & O_ACCMODE) == O_RDONLY; diff --git a/libc/runtime/morph.c b/libc/runtime/morph.c index 4d35f50ef..08abcc410 100644 --- a/libc/runtime/morph.c +++ b/libc/runtime/morph.c @@ -43,7 +43,8 @@ __funline void __morph_mprotect(void *addr, size_t size, int prot, int ntprot) { : "1"(__NR_mprotect), "D"(addr), "S"(size), "2"(prot) : "rcx", "r8", "r9", "r10", "r11", "memory"); #ifndef NDEBUG - if (cf) ax = -ax; + if (cf) + ax = -ax; if (ax == -EPERM) { kprintf("error: need pledge(prot_exec) permission to code morph\n"); } diff --git a/libc/runtime/opensymboltable.greg.c b/libc/runtime/opensymboltable.greg.c index 95313ceda..3359e46bd 100644 --- a/libc/runtime/opensymboltable.greg.c +++ b/libc/runtime/opensymboltable.greg.c @@ -49,15 +49,23 @@ static struct SymbolTable *OpenSymbolTableImpl(const char *filename) { const Elf64_Sym *symtab, *sym; ptrdiff_t names_offset, name_base_offset, stp_offset; map = MAP_FAILED; - if ((fd = open(filename, O_RDONLY | O_CLOEXEC)) == -1) return 0; - if ((filesize = lseek(fd, 0, SEEK_END)) == -1) goto SystemError; - if (filesize > INT_MAX) goto RaiseE2big; - if (filesize < 64) goto RaiseEnoexec; + if ((fd = open(filename, O_RDONLY | O_CLOEXEC)) == -1) + return 0; + if ((filesize = lseek(fd, 0, SEEK_END)) == -1) + goto SystemError; + if (filesize > INT_MAX) + goto RaiseE2big; + if (filesize < 64) + goto RaiseEnoexec; elf = map = mmap(0, filesize, PROT_READ, MAP_PRIVATE, fd, 0); - if (map == MAP_FAILED) goto SystemError; - if (READ32LE((char *)map) != READ32LE("\177ELF")) goto RaiseEnoexec; - if (!(name_base = GetStrtab(map, &m))) goto RaiseEnobufs; - if (!(symtab = GetSymtab(map, &n))) goto RaiseEnobufs; + if (map == MAP_FAILED) + goto SystemError; + if (READ32LE((char *)map) != READ32LE("\177ELF")) + goto RaiseEnoexec; + if (!(name_base = GetStrtab(map, &m))) + goto RaiseEnobufs; + if (!(symtab = GetSymtab(map, &n))) + goto RaiseEnobufs; tsz = 0; tsz += sizeof(struct SymbolTable); tsz += sizeof(struct Symbol) * n; @@ -71,7 +79,8 @@ static struct SymbolTable *OpenSymbolTableImpl(const char *filename) { tsz += sizeof(const Elf64_Sym *) * n; tsz = ROUNDUP(tsz, FRAMESIZE); t = mmap(0, tsz, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); - if (t == MAP_FAILED) goto SystemError; + if (t == MAP_FAILED) + goto SystemError; t->magic = SYMBOLS_MAGIC; t->abi = SYMBOLS_ABI; t->size = size; @@ -90,8 +99,10 @@ static struct SymbolTable *OpenSymbolTableImpl(const char *filename) { ELF64_ST_TYPE(sym->st_info) == STT_OBJECT))) { continue; } - if (sym->st_value > t->addr_end) continue; - if (sym->st_value < t->addr_base) continue; + if (sym->st_value > t->addr_end) + continue; + if (sym->st_value < t->addr_base) + continue; x = sym->st_value - t->addr_base; stp[m++] = (unsigned long)x << 32 | i; } diff --git a/libc/runtime/warnifpowersave.c b/libc/runtime/warnifpowersave.c index 07afe8e89..1a01d81d3 100644 --- a/libc/runtime/warnifpowersave.c +++ b/libc/runtime/warnifpowersave.c @@ -44,7 +44,8 @@ void __warn_if_powersave(void) { if ((fd = __sys_openat(AT_FDCWD, FILE, O_RDONLY, 0)) != -1) { sys_read(fd, buf, 15); sys_close(fd); - if (!startswith(buf, "powersave")) return; + if (!startswith(buf, "powersave")) + return; sys_write(2, WARN, sizeof(WARN) - 1); } ALLOW_CANCELATION; diff --git a/libc/runtime/winmain.greg.c b/libc/runtime/winmain.greg.c index 3c0ae49ed..d24bc90c0 100644 --- a/libc/runtime/winmain.greg.c +++ b/libc/runtime/winmain.greg.c @@ -94,11 +94,15 @@ static abi char16_t *StrStr(const char16_t *haystack, const char16_t *needle) { size_t i; for (;;) { for (i = 0;; ++i) { - if (!needle[i]) return (/*unconst*/ char16_t *)haystack; - if (!haystack[i]) break; - if (needle[i] != haystack[i]) break; + if (!needle[i]) + return (/*unconst*/ char16_t *)haystack; + if (!haystack[i]) + break; + if (needle[i] != haystack[i]) + break; } - if (!*haystack++) break; + if (!*haystack++) + break; } return 0; } @@ -124,7 +128,8 @@ static abi bool32 WinFileExists(const char *path) { uint16_t path16[PATH_MAX]; size_t z = ARRAYLEN(path16); size_t n = tprecode8to16(path16, z, path).ax; - if (n >= z - 1) return false; + if (n >= z - 1) + return false; return __imp_GetFileAttributesW(path16) != -1u; } @@ -236,7 +241,8 @@ static abi wontreturn void WinInit(const char16_t *cmdline) { // normalize executable path if (wa->argv[0] && !WinFileExists(wa->argv[0])) { unsigned i, n = 0; - while (wa->argv[0][n]) ++n; + while (wa->argv[0][n]) + ++n; if (n + 4 < sizeof(wa->argv0buf)) { for (i = 0; i < n; ++i) { wa->argv0buf[i] = wa->argv[0][i]; @@ -302,7 +308,8 @@ abi int64_t WinMain(int64_t hInstance, int64_t hPrevInstance, cmdline = MyCommandLine(); #if SYSDEBUG // sloppy flag-only check for early initialization - if (StrStr(cmdline, u"--strace")) ++__strace; + if (StrStr(cmdline, u"--strace")) + ++__strace; #endif if (_weaken(WinSockInit)) { _weaken(WinSockInit)(); diff --git a/libc/runtime/zipos-fcntl.c b/libc/runtime/zipos-fcntl.c index 939ce56fa..0c1c799ad 100644 --- a/libc/runtime/zipos-fcntl.c +++ b/libc/runtime/zipos-fcntl.c @@ -28,7 +28,8 @@ static int __zipos_dupfd(int fd, int cmd, int start) { int rc; - if (start < 0) return einval(); + if (start < 0) + return einval(); if (IsWindows()) { return sys_dup_nt(fd, -1, (cmd == F_DUPFD_CLOEXEC ? _O_CLOEXEC : 0), start); diff --git a/libc/runtime/zipos-fstat.c b/libc/runtime/zipos-fstat.c index 4f0d4a40e..c1fd552fb 100644 --- a/libc/runtime/zipos-fstat.c +++ b/libc/runtime/zipos-fstat.c @@ -26,7 +26,8 @@ * @asyncsignalsafe */ int __zipos_fstat(struct ZiposHandle *h, struct stat *st) { - if (__zipos_stat_impl(h->zipos, h->cfile, st)) return -1; + if (__zipos_stat_impl(h->zipos, h->cfile, st)) + return -1; st->st_ino = __zipos_inode(h->zipos, h->cfile, h->data, h->size); return 0; } diff --git a/libc/runtime/zipos-get.c b/libc/runtime/zipos-get.c index b06e5f0e4..ba2506a05 100644 --- a/libc/runtime/zipos-get.c +++ b/libc/runtime/zipos-get.c @@ -54,14 +54,17 @@ static void __zipos_dismiss(uint8_t *map, const uint8_t *cdir, long pg) { n = GetZipCdirRecords(cdir); for (lo = c, hi = i = 0; i < n; ++i, c += ZIP_CFILE_HDRSIZE(map + c)) { lf = GetZipCfileOffset(map + c); - if (lf < lo) lo = lf; + if (lf < lo) + lo = lf; ef = lf + ZIP_LFILE_HDRSIZE(map + lf) + GetZipLfileCompressedSize(map + lf); - if (ef > hi) hi = ef; + if (ef > hi) + hi = ef; } // unmap the executable portion beneath the local files mo = ROUNDDOWN(lo, FRAMESIZE); - if (mo) munmap(map, mo); + if (mo) + munmap(map, mo); // this is supposed to reduce our rss usage but does it really? lo = ROUNDDOWN(lo, pg); @@ -81,7 +84,8 @@ static int __zipos_compare_names(const void *a, const void *b, void *c) { if (n) { int res = memcmp(ZIP_CFILE_NAME(z->map + *x), ZIP_CFILE_NAME(z->map + *y), n); - if (res) return res; + if (res) + return res; } return xn - yn; // xn and yn are 16-bit } diff --git a/libc/runtime/zipos-inode.c b/libc/runtime/zipos-inode.c index a406f496a..c4f26ae27 100644 --- a/libc/runtime/zipos-inode.c +++ b/libc/runtime/zipos-inode.c @@ -27,7 +27,8 @@ uint64_t __zipos_inode(struct Zipos *zipos, int64_t cfile, // const void *name, size_t namelen) { unassert(cfile >= 0); if (cfile == ZIPOS_SYNTHETIC_DIRECTORY) { - if (namelen && ((char *)name)[namelen - 1] == '/') --namelen; + if (namelen && ((char *)name)[namelen - 1] == '/') + --namelen; cfile = INT64_MIN | __fnv(name, namelen); } return cfile; diff --git a/libc/runtime/zipos-normpath.c b/libc/runtime/zipos-normpath.c index 2311c4110..81464671f 100644 --- a/libc/runtime/zipos-normpath.c +++ b/libc/runtime/zipos-normpath.c @@ -39,8 +39,10 @@ size_t __zipos_normpath(char *d, const char *s, size_t n) { s[1] == '.' && // (!s[2] || s[2] == '/')) { // matched "/../" or "^..$" or "^../" or "/..$" - while (p > d && p[-1] == '/') --p; - while (p > d && p[-1] != '/') --p; + while (p > d && p[-1] == '/') + --p; + while (p > d && p[-1] != '/') + --p; } else { *p++ = *s; } diff --git a/libc/runtime/zipos-notat.c b/libc/runtime/zipos-notat.c index 5c8e46e5a..2b27672e5 100644 --- a/libc/runtime/zipos-notat.c +++ b/libc/runtime/zipos-notat.c @@ -22,7 +22,8 @@ int __zipos_notat(int dirfd, const char *path) { struct ZiposUri zipname; - if (!path) return efault(); + if (!path) + return efault(); if (__isfdkind(dirfd, kFdZip) || __zipos_parseuri(path, &zipname) != -1) { return einval(); } diff --git a/libc/runtime/zipos-open.c b/libc/runtime/zipos-open.c index d3bb03555..25e89d48b 100644 --- a/libc/runtime/zipos-open.c +++ b/libc/runtime/zipos-open.c @@ -76,7 +76,8 @@ static void *__zipos_mmap_space(size_t mapsize) { offset = __zipos_maptotal; __zipos_maptotal += mapsize; start = (char *)kMemtrackZiposStart; - if (!__zipos_mapend) __zipos_mapend = start; + if (!__zipos_mapend) + __zipos_mapend = start; __zipos_mapend = _extend(start, __zipos_maptotal, __zipos_mapend, MAP_PRIVATE, kMemtrackZiposStart + kMemtrackZiposSize); return start + offset; @@ -98,7 +99,8 @@ void __zipos_drop(struct ZiposHandle *h) { h->mapsize - sizeof(struct ZiposHandle), kAsanHeapFree); } __zipos_lock(); - do h->next = h->zipos->freelist; + do + h->next = h->zipos->freelist; while (!_cmpxchg(&h->zipos->freelist, h->next, h)); __zipos_unlock(); } @@ -113,7 +115,8 @@ StartOver: ph = &zipos->freelist; while ((h = *ph)) { if (h->mapsize >= mapsize) { - if (!_cmpxchg(ph, h, h->next)) goto StartOver; + if (!_cmpxchg(ph, h, h->next)) + goto StartOver; break; } ph = &h->next; @@ -168,8 +171,10 @@ static int __zipos_load(struct Zipos *zipos, size_t cf, int flags, struct ZiposHandle *h; if (cf == ZIPOS_SYNTHETIC_DIRECTORY) { size = name->len; - if (!(h = __zipos_alloc(zipos, size + 1))) return -1; - if (size) memcpy(h->data, name->path, size); + if (!(h = __zipos_alloc(zipos, size + 1))) + return -1; + if (size) + memcpy(h->data, name->path, size); h->data[size] = 0; h->mem = h->data; } else { @@ -178,11 +183,13 @@ static int __zipos_load(struct Zipos *zipos, size_t cf, int flags, size = GetZipLfileUncompressedSize(zipos->map + lf); switch (ZIP_LFILE_COMPRESSIONMETHOD(zipos->map + lf)) { case kZipCompressionNone: - if (!(h = __zipos_alloc(zipos, 0))) return -1; + if (!(h = __zipos_alloc(zipos, 0))) + return -1; h->mem = ZIP_LFILE_CONTENT(zipos->map + lf); break; case kZipCompressionDeflate: - if (!(h = __zipos_alloc(zipos, size))) return -1; + if (!(h = __zipos_alloc(zipos, size))) + return -1; if (!__inflate(h->data, size, ZIP_LFILE_CONTENT(zipos->map + lf), GetZipLfileCompressedSize(zipos->map + lf))) { h->mem = h->data; diff --git a/libc/runtime/zipos-read.c b/libc/runtime/zipos-read.c index a7ca7c8be..7bb1ce215 100644 --- a/libc/runtime/zipos-read.c +++ b/libc/runtime/zipos-read.c @@ -53,7 +53,8 @@ static ssize_t __zipos_read_impl(struct ZiposHandle *h, const struct iovec *iov, } for (i = 0; i < iovlen && y < h->size; ++i, y += b) { b = MIN(iov[i].iov_len, h->size - y); - if (b) memcpy(iov[i].iov_base, h->mem + y, b); + if (b) + memcpy(iov[i].iov_base, h->mem + y, b); } if (opt_offset == -1) { unassert(y != SIZE_MAX); diff --git a/libc/runtime/zipos-stat.c b/libc/runtime/zipos-stat.c index 7f61e3bc7..30a20bc1b 100644 --- a/libc/runtime/zipos-stat.c +++ b/libc/runtime/zipos-stat.c @@ -29,9 +29,12 @@ int __zipos_stat(struct ZiposUri *name, struct stat *st) { ssize_t cf; struct Zipos *zipos; - if (!(zipos = __zipos_get())) return enoexec(); - if ((cf = __zipos_find(zipos, name)) == -1) return -1; - if (__zipos_stat_impl(zipos, cf, st)) return -1; + if (!(zipos = __zipos_get())) + return enoexec(); + if ((cf = __zipos_find(zipos, name)) == -1) + return -1; + if (__zipos_stat_impl(zipos, cf, st)) + return -1; st->st_ino = __zipos_inode(zipos, cf, name->path, name->len); return 0; } diff --git a/libc/sock/accept-nt.c b/libc/sock/accept-nt.c index 22e7cb549..b5dff0705 100644 --- a/libc/sock/accept-nt.c +++ b/libc/sock/accept-nt.c @@ -126,8 +126,10 @@ textwindows int sys_accept_nt(struct Fd *f, struct sockaddr_storage *addr, // create file descriptor for new socket // don't inherit the file open mode bits int oflags = 0; - if (accept4_flags & SOCK_CLOEXEC) oflags |= O_CLOEXEC; - if (accept4_flags & SOCK_NONBLOCK) oflags |= O_NONBLOCK; + if (accept4_flags & SOCK_CLOEXEC) + oflags |= O_CLOEXEC; + if (accept4_flags & SOCK_NONBLOCK) + oflags |= O_NONBLOCK; client = __reservefd(-1); g_fds.p[client].flags = oflags; g_fds.p[client].mode = 0140666; diff --git a/libc/sock/accept4-sysv.c b/libc/sock/accept4-sysv.c index 588f4ea85..20ed11c37 100644 --- a/libc/sock/accept4-sysv.c +++ b/libc/sock/accept4-sysv.c @@ -37,7 +37,8 @@ int sys_accept4(int server, struct sockaddr_storage *addr, int flags) { if (client == -1 && errno == ENOSYS) { // XNU/RHEL5/etc. don't support accept4(), but it's easilly polyfilled errno = olderr; - if (flags & ~(SOCK_CLOEXEC | SOCK_NONBLOCK)) return einval(); + if (flags & ~(SOCK_CLOEXEC | SOCK_NONBLOCK)) + return einval(); if ((client = __sys_accept(server, addr, &size, 0)) != -1) { // __sys_accept() has inconsistent flag inheritence across platforms // this is one of the issues that accept4() was invented for solving diff --git a/libc/sock/asanmsghdr.c b/libc/sock/asanmsghdr.c index 6c1ff3868..f9af26ab2 100644 --- a/libc/sock/asanmsghdr.c +++ b/libc/sock/asanmsghdr.c @@ -22,12 +22,15 @@ #if IsAsan() bool __asan_is_valid_msghdr(const struct msghdr *msg) { - if (!__asan_is_valid(msg, sizeof(struct msghdr))) return false; + if (!__asan_is_valid(msg, sizeof(struct msghdr))) + return false; if (msg->msg_name) { - if (!__asan_is_valid(msg->msg_name, msg->msg_namelen)) return false; + if (!__asan_is_valid(msg->msg_name, msg->msg_namelen)) + return false; } if (msg->msg_control) { - if (!__asan_is_valid(msg->msg_control, msg->msg_controllen)) return false; + if (!__asan_is_valid(msg->msg_control, msg->msg_controllen)) + return false; } return __asan_is_valid_iov(msg->msg_iov, msg->msg_iovlen); } diff --git a/libc/sock/basesocket.c b/libc/sock/basesocket.c index 570dbd87f..75ea4462e 100644 --- a/libc/sock/basesocket.c +++ b/libc/sock/basesocket.c @@ -37,8 +37,10 @@ textwindows int64_t GetNtBaseSocket(int64_t socket) { int64_t base_socket; for (;;) { base_socket = GetNtBspSocket(socket, kNtSioBaseHandle); - if (base_socket != -1) return base_socket; - if (WSAGetLastError() == WSAENOTSOCK) return __winsockerr(); + if (base_socket != -1) + return base_socket; + if (WSAGetLastError() == WSAENOTSOCK) + return __winsockerr(); /* * Even though Microsoft documentation clearly states that Layered * Spyware Providers must never ever intercept the SIO_BASE_HANDLE diff --git a/libc/sock/connect-nt.c b/libc/sock/connect-nt.c index 0615366d9..3065c51c4 100644 --- a/libc/sock/connect-nt.c +++ b/libc/sock/connect-nt.c @@ -63,7 +63,8 @@ void sys_connect_nt_cleanup(struct Fd *f, bool cancel) { struct NtOverlapped *overlap; if ((overlap = f->connect_op)) { uint32_t got, flags; - if (cancel) CancelIoEx(f->handle, overlap); + if (cancel) + CancelIoEx(f->handle, overlap); if (WSAGetOverlappedResult(f->handle, overlap, &got, cancel, &flags) || WSAGetLastError() != kNtErrorIoIncomplete) { WSACloseEvent(overlap->hEvent); @@ -92,13 +93,15 @@ static textwindows int sys_connect_nt_impl(struct Fd *f, const void *addr, cosmo_once(&g_connectex.once, connectex_init); // fail if previous connect() is still in progress - if (f->connect_op) return ealready(); + if (f->connect_op) + return ealready(); // ConnectEx() requires bind() be called beforehand if (!f->isbound) { struct sockaddr_storage ss = {0}; ss.ss_family = ((struct sockaddr *)addr)->sa_family; - if (sys_bind_nt(f, &ss, sizeof(ss)) == -1) return -1; + if (sys_bind_nt(f, &ss, sizeof(ss)) == -1) + return -1; } // perform normal connect @@ -119,7 +122,8 @@ static textwindows int sys_connect_nt_impl(struct Fd *f, const void *addr, // 2. poll(POLLOUT) bool32 ok; struct NtOverlapped *overlap = calloc(1, sizeof(struct NtOverlapped)); - if (!overlap) return -1; + if (!overlap) + return -1; overlap->hEvent = WSACreateEvent(); ok = g_connectex.lpConnectEx(f->handle, addr, addrsize, 0, 0, 0, overlap); if (ok) { diff --git a/libc/sock/epoll.c b/libc/sock/epoll.c index 4c86e35e1..1be06e4d5 100644 --- a/libc/sock/epoll.c +++ b/libc/sock/epoll.c @@ -144,7 +144,8 @@ https://github.com/piscisaureus/wepoll"); q->parent = parent; \ p->parent = q; \ p->trans = q->cis; \ - if (p->trans) p->trans->parent = p; \ + if (p->trans) \ + p->trans->parent = p; \ q->cis = p; #define TREE__INSERT_OR_DESCEND(side) \ @@ -402,7 +403,8 @@ static textwindows int afd_cancel_poll( struct NtIoStatusBlock cancel_iosb; /* If the poll operation has already completed or has been cancelled earlier, there's nothing left for us to do. */ - if (io_status_block->Status != kNtStatusPending) return 0; + if (io_status_block->Status != kNtStatusPending) + return 0; cancel_status = NtCancelIoFileEx(afd_device_handle, io_status_block, &cancel_iosb); /* NtCancelIoFileEx() may return STATUS_NOT_FOUND if the operation completed @@ -479,20 +481,23 @@ static textwindows void queue_remove(struct QueueNode *node) { static textwindows struct PortState *port__alloc(void) { struct PortState *port_state = malloc(sizeof *port_state); - if (!port_state) RETURN_SET_ERROR(NULL, kNtErrorNotEnoughMemory); + if (!port_state) + RETURN_SET_ERROR(NULL, kNtErrorNotEnoughMemory); return port_state; } static textwindows int64_t port__create_iocp(void) { int64_t iocp_handle = CreateIoCompletionPort(kNtInvalidHandleValue, 0, 0, 0); - if (!iocp_handle) RETURN_MAP_ERROR(0); + if (!iocp_handle) + RETURN_MAP_ERROR(0); return iocp_handle; } static textwindows int port__close_iocp(struct PortState *port_state) { int64_t iocp_handle = port_state->iocp_handle; port_state->iocp_handle = 0; - if (!CloseHandle(iocp_handle)) RETURN_MAP_ERROR(-1); + if (!CloseHandle(iocp_handle)) + RETURN_MAP_ERROR(-1); return 0; } @@ -569,9 +574,11 @@ static textwindows struct PortState *port_new(int64_t *iocp_handle_out) { struct PortState *port_state; int64_t iocp_handle; port_state = port__alloc(); - if (!port_state) goto err1; + if (!port_state) + goto err1; iocp_handle = port__create_iocp(); - if (!iocp_handle) goto err2; + if (!iocp_handle) + goto err2; bzero(port_state, sizeof *port_state); port_state->iocp_handle = iocp_handle; tree_init(&port_state->sock_tree); @@ -601,7 +608,8 @@ static textwindows int sock__cancel_poll(struct SockState *sock_state) { static textwindows void port_cancel_socket_update( struct PortState *port_state, struct SockState *sock_state) { - if (!queue_is_enqueued(sock_state_to_queue_node(sock_state))) return; + if (!queue_is_enqueued(sock_state_to_queue_node(sock_state))) + return; queue_remove(sock_state_to_queue_node(sock_state)); } @@ -623,7 +631,8 @@ static textwindows struct TreeNode *tree_find(const struct Tree *tree, static textwindows struct TsTreeNode *ts_tree__find_node(struct TsTree *ts_tree, uintptr_t key) { struct TreeNode *tree_node = tree_find(&ts_tree->tree, key); - if (!tree_node) return NULL; + if (!tree_node) + return NULL; return CONTAINOF(tree_node, struct TsTreeNode, tree_node); } @@ -639,7 +648,8 @@ static textwindows void tree_del(struct Tree *tree, struct TreeNode *node) { next = left; } else { next = right; - while (next->left) next = next->left; + while (next->left) + next = next->left; } if (parent) { if (parent->left == node) { @@ -671,14 +681,17 @@ static textwindows void tree_del(struct Tree *tree, struct TreeNode *node) { red = node->red; node = next; } - if (node) node->parent = parent; - if (red) return; + if (node) + node->parent = parent; + if (red) + return; if (node && node->red) { node->red = false; return; } do { - if (node == tree->root) break; + if (node == tree->root) + break; if (node == parent->left) { TREE__REBALANCE_AFTER_REMOVE(left, right) } else { @@ -687,19 +700,22 @@ static textwindows void tree_del(struct Tree *tree, struct TreeNode *node) { node = parent; parent = parent->parent; } while (!node->red); - if (node) node->red = false; + if (node) + node->red = false; } static textwindows void reflock__signal_event(void *address) { NtStatus status = NtReleaseKeyedEvent(reflock__keyed_event, address, false, NULL); - if (status != kNtStatusSuccess) abort(); + if (status != kNtStatusSuccess) + abort(); } static textwindows void reflock__await_event(void *address) { NtStatus status = NtWaitForKeyedEvent(reflock__keyed_event, address, false, NULL); - if (status != kNtStatusSuccess) abort(); + if (status != kNtStatusSuccess) + abort(); } static textwindows void reflock_ref(struct RefLock *reflock) { @@ -712,7 +728,8 @@ static textwindows void reflock_unref(struct RefLock *reflock) { long state = InterlockedAdd(&reflock->state, -REFLOCK__REF); /* Verify that the lock was referenced and not already destroyed.*/ npassert((state & REFLOCK__DESTROY_MASK & ~REFLOCK__DESTROY) == 0); - if (state == REFLOCK__DESTROY) reflock__signal_event(reflock); + if (state == REFLOCK__DESTROY) + reflock__signal_event(reflock); } static textwindows struct TsTreeNode *ts_tree_del_and_ref( @@ -733,7 +750,8 @@ static textwindows struct TsTreeNode *ts_tree_find_and_ref( struct TsTreeNode *ts_tree_node; AcquireSRWLockShared(&ts_tree->lock); ts_tree_node = ts_tree__find_node(ts_tree, key); - if (ts_tree_node != NULL) reflock_ref(&ts_tree_node->reflock); + if (ts_tree_node != NULL) + reflock_ref(&ts_tree_node->reflock); ReleaseSRWLockShared(&ts_tree->lock); return ts_tree_node; } @@ -748,7 +766,8 @@ static textwindows void reflock_unref_and_destroy(struct RefLock *reflock) { ref_count = state & REFLOCK__REF_MASK; /* Verify that the lock was referenced and not already destroyed. */ npassert((state & REFLOCK__DESTROY_MASK) == REFLOCK__DESTROY); - if (ref_count != 0) reflock__await_event(reflock); + if (ref_count != 0) + reflock__await_event(reflock); state = InterlockedExchange(&reflock->state, REFLOCK__POISON); npassert(state == REFLOCK__DESTROY); } @@ -765,7 +784,8 @@ static textwindows void port_unregister_socket(struct PortState *port_state, static textwindows void port_remove_deleted_socket( struct PortState *port_state, struct SockState *sock_state) { - if (!queue_is_enqueued(sock_state_to_queue_node(sock_state))) return; + if (!queue_is_enqueued(sock_state_to_queue_node(sock_state))) + return; queue_remove(sock_state_to_queue_node(sock_state)); } @@ -790,7 +810,8 @@ static textwindows void sock__free(struct SockState *sock_state) { static textwindows void port_add_deleted_socket(struct PortState *port_state, struct SockState *sock_state) { - if (queue_is_enqueued(sock_state_to_queue_node(sock_state))) return; + if (queue_is_enqueued(sock_state_to_queue_node(sock_state))) + return; queue_append(&port_state->sock_deleted_queue, sock_state_to_queue_node(sock_state)); } @@ -871,7 +892,8 @@ static textwindows struct PollGroup *poll_group__new( int64_t iocp_handle = port_get_iocp_handle(port_state); struct Queue *poll_group_queue = port_get_poll_group_queue(port_state); struct PollGroup *poll_group = malloc(sizeof *poll_group); - if (!poll_group) RETURN_SET_ERROR(NULL, kNtErrorNotEnoughMemory); + if (!poll_group) + RETURN_SET_ERROR(NULL, kNtErrorNotEnoughMemory); bzero(poll_group, sizeof *poll_group); queue_node_init(&poll_group->queue_node); poll_group->port_state = port_state; @@ -893,7 +915,8 @@ static textwindows struct PollGroup *poll_group_acquire( : NULL; if (!poll_group || poll_group->group_size >= MAX_GROUP_SIZE) poll_group = poll_group__new(port_state); - if (!poll_group) return NULL; + if (!poll_group) + return NULL; if (++poll_group->group_size == MAX_GROUP_SIZE) queue_move_to_start(poll_group_queue, &poll_group->queue_node); return poll_group; @@ -911,22 +934,33 @@ static textwindows uint32_t sock__epoll_events_to_afd_events(uint32_t e) { /* Always monitor for kNtAfdPollLocalClose, which is triggered when the socket is closed with closesocket() or CloseHandle(). */ uint32_t a = kNtAfdPollLocalClose; - if (e & (EPOLLIN | EPOLLRDNORM)) a |= kNtAfdPollReceive | kNtAfdPollAccept; - if (e & (EPOLLPRI | EPOLLRDBAND)) a |= kNtAfdPollReceiveExpedited; - if (e & (EPOLLOUT | EPOLLWRNORM | EPOLLWRBAND)) a |= kNtAfdPollSend; - if (e & (EPOLLIN | EPOLLRDNORM | EPOLLRDHUP)) a |= kNtAfdPollDisconnect; - if (e & EPOLLHUP) a |= kNtAfdPollAbort; - if (e & EPOLLERR) a |= kNtAfdPollConnectFail; + if (e & (EPOLLIN | EPOLLRDNORM)) + a |= kNtAfdPollReceive | kNtAfdPollAccept; + if (e & (EPOLLPRI | EPOLLRDBAND)) + a |= kNtAfdPollReceiveExpedited; + if (e & (EPOLLOUT | EPOLLWRNORM | EPOLLWRBAND)) + a |= kNtAfdPollSend; + if (e & (EPOLLIN | EPOLLRDNORM | EPOLLRDHUP)) + a |= kNtAfdPollDisconnect; + if (e & EPOLLHUP) + a |= kNtAfdPollAbort; + if (e & EPOLLERR) + a |= kNtAfdPollConnectFail; return a; } static textwindows uint32_t sock__afd_events_to_epoll_events(uint32_t a) { uint32_t e = 0; - if (a & (kNtAfdPollReceive | kNtAfdPollAccept)) e |= EPOLLIN | EPOLLRDNORM; - if (a & kNtAfdPollReceiveExpedited) e |= EPOLLPRI | EPOLLRDBAND; - if (a & kNtAfdPollSend) e |= EPOLLOUT | EPOLLWRNORM | EPOLLWRBAND; - if (a & kNtAfdPollDisconnect) e |= EPOLLIN | EPOLLRDNORM | EPOLLRDHUP; - if (a & kNtAfdPollAbort) e |= EPOLLHUP; + if (a & (kNtAfdPollReceive | kNtAfdPollAccept)) + e |= EPOLLIN | EPOLLRDNORM; + if (a & kNtAfdPollReceiveExpedited) + e |= EPOLLPRI | EPOLLRDBAND; + if (a & kNtAfdPollSend) + e |= EPOLLOUT | EPOLLWRNORM | EPOLLWRBAND; + if (a & kNtAfdPollDisconnect) + e |= EPOLLIN | EPOLLRDNORM | EPOLLRDHUP; + if (a & kNtAfdPollAbort) + e |= EPOLLHUP; if (a & kNtAfdPollConnectFail) { /* Linux reports all these events after connect() has failed. */ e |= EPOLLIN | EPOLLOUT | EPOLLERR | EPOLLRDNORM | EPOLLWRNORM | EPOLLRDHUP; @@ -950,7 +984,8 @@ static textwindows int sock_update(struct PortState *port_state, the pending *poll operation; when we receive it's completion package, a new poll *operation will be submitted with the correct event mask. */ - if (sock__cancel_poll(sock_state) < 0) return -1; + if (sock__cancel_poll(sock_state) < 0) + return -1; } else if (sock_state->poll_status == kPollCancelled) { /* The poll operation has already been cancelled, we're still waiting for it to return.For now, there' s nothing that needs to be done. */ @@ -995,7 +1030,8 @@ static textwindows int port__update_events(struct PortState *port_state) { while (!queue_is_empty(sock_update_queue)) { queue_node = queue_first(sock_update_queue); sock_state = sock_state_from_queue_node(queue_node); - if (sock_update(port_state, sock_state) < 0) return -1; + if (sock_update(port_state, sock_state) < 0) + return -1; /* sock_update() removes the socket from the update queue.*/ } return 0; @@ -1003,12 +1039,14 @@ static textwindows int port__update_events(struct PortState *port_state) { static textwindows void port__update_events_if_polling( struct PortState *port_state) { - if (port_state->active_poll_count > 0) port__update_events(port_state); + if (port_state->active_poll_count > 0) + port__update_events(port_state); } static textwindows void port_request_socket_update( struct PortState *port_state, struct SockState *sock_state) { - if (queue_is_enqueued(sock_state_to_queue_node(sock_state))) return; + if (queue_is_enqueued(sock_state_to_queue_node(sock_state))) + return; queue_append(&port_state->sock_update_queue, sock_state_to_queue_node(sock_state)); } @@ -1047,7 +1085,8 @@ static textwindows int sock_feed_event(struct PortState *port_state, /* Filter out events that the user didn't ask for. */ epoll_events &= sock_state->user_events; /* Return if there are no epoll events to report.*/ - if (epoll_events == 0) return 0; + if (epoll_events == 0) + return 0; /* If the the socket has the EPOLLONESHOT flag set, unmonitor all events, even EPOLLERR and EPOLLHUP. But always keep looking for closed sockets. */ @@ -1082,14 +1121,16 @@ static textwindows int port__poll(struct PortState *port_state, uint32_t maxevents, uint32_t timeout) { bool32 r; uint32_t completion_count; - if (port__update_events(port_state) < 0) return -1; + if (port__update_events(port_state) < 0) + return -1; port_state->active_poll_count++; LeaveCriticalSection(&port_state->lock); r = GetQueuedCompletionStatusEx(port_state->iocp_handle, iocp_events, maxevents, &completion_count, timeout, false); EnterCriticalSection(&port_state->lock); port_state->active_poll_count--; - if (!r) RETURN_MAP_ERROR(-1); + if (!r) + RETURN_MAP_ERROR(-1); return port__feed_events(port_state, epoll_events, iocp_events, completion_count); } @@ -1103,7 +1144,8 @@ static textwindows int port_wait(struct PortState *port_state, struct NtOverlappedEntry *iocp_events; struct NtOverlappedEntry stack_iocp_events[64]; /* Check whether `maxevents` is in range.*/ - if (maxevents <= 0) RETURN_SET_ERROR(-1, kNtErrorInvalidParameter); + if (maxevents <= 0) + RETURN_SET_ERROR(-1, kNtErrorInvalidParameter); /* Decide whether the IOCP completion list can live on the stack, or allocate memory for it on the heap. */ if ((size_t)maxevents <= ARRAYLEN(stack_iocp_events)) { @@ -1129,9 +1171,11 @@ static textwindows int port_wait(struct PortState *port_state, for (;;) { result = port__poll(port_state, events, iocp_events, (uint32_t)maxevents, gqcs_timeout); - if (result < 0 || result > 0) break; + if (result < 0 || result > 0) + break; /* Result, error, or time - out. */ - if (timeout < 0) continue; + if (timeout < 0) + continue; /* When timeout is negative, never time out. */ /* Update time. */ now = GetTickCount64(); @@ -1204,7 +1248,8 @@ static textwindows int64_t ws_get_base_socket(int64_t socket) { static textwindows struct SockState *sock__alloc(void) { struct SockState *sock_state = malloc(sizeof *sock_state); - if (!sock_state) RETURN_SET_ERROR(NULL, kNtErrorNotEnoughMemory); + if (!sock_state) + RETURN_SET_ERROR(NULL, kNtErrorNotEnoughMemory); return sock_state; } @@ -1223,19 +1268,24 @@ static textwindows struct SockState *sock_new(struct PortState *port_state, int64_t base_socket; struct PollGroup *poll_group; struct SockState *sock_state; - if (socket == 0 || socket == -1) RETURN_SET_ERROR(0, kNtErrorInvalidHandle); + if (socket == 0 || socket == -1) + RETURN_SET_ERROR(0, kNtErrorInvalidHandle); base_socket = ws_get_base_socket(socket); - if (base_socket == -1) return NULL; + if (base_socket == -1) + return NULL; poll_group = poll_group_acquire(port_state); - if (!poll_group) return NULL; + if (!poll_group) + return NULL; sock_state = sock__alloc(); - if (!sock_state) goto err1; + if (!sock_state) + goto err1; bzero(sock_state, sizeof *sock_state); sock_state->base_socket = base_socket; sock_state->poll_group = poll_group; tree_node_init(&sock_state->tree_node); queue_node_init(&sock_state->queue_node); - if (port_register_socket(port_state, sock_state, socket) < 0) goto err2; + if (port_register_socket(port_state, sock_state, socket) < 0) + goto err2; return sock_state; err2: sock__free(sock_state); @@ -1262,7 +1312,8 @@ static textwindows int sock_set_event(struct PortState *port_state, static textwindows int port__ctl_add(struct PortState *port_state, int64_t sock, struct epoll_event *ev) { struct SockState *sock_state = sock_new(port_state, sock); - if (!sock_state) return -1; + if (!sock_state) + return -1; if (sock_set_event(port_state, sock_state, ev) < 0) { sock_delete(port_state, sock_state); return -1; @@ -1274,15 +1325,18 @@ static textwindows int port__ctl_add(struct PortState *port_state, int64_t sock, static textwindows struct SockState *port_find_socket( struct PortState *port_state, int64_t socket) { struct TreeNode *tree_node = tree_find(&port_state->sock_tree, socket); - if (!tree_node) RETURN_SET_ERROR(NULL, kNtErrorNotFound); + if (!tree_node) + RETURN_SET_ERROR(NULL, kNtErrorNotFound); return sock_state_from_tree_node(tree_node); } static textwindows int port__ctl_mod(struct PortState *port_state, int64_t sock, struct epoll_event *ev) { struct SockState *sock_state = port_find_socket(port_state, sock); - if (!sock_state) return -1; - if (sock_set_event(port_state, sock_state, ev) < 0) return -1; + if (!sock_state) + return -1; + if (sock_set_event(port_state, sock_state, ev) < 0) + return -1; port__update_events_if_polling(port_state); return 0; } @@ -1290,7 +1344,8 @@ static textwindows int port__ctl_mod(struct PortState *port_state, int64_t sock, static textwindows int port__ctl_del(struct PortState *port_state, int64_t sock) { struct SockState *sock_state = port_find_socket(port_state, sock); - if (!sock_state) return -1; + if (!sock_state) + return -1; sock_delete(port_state, sock_state); return 0; } @@ -1328,9 +1383,11 @@ static textwindows dontinline int sys_epoll_create1_nt(uint32_t flags) { int64_t ephnd; struct PortState *port_state; struct TsTreeNode *tree_node; - if (wepoll_init() < 0) return -1; + if (wepoll_init() < 0) + return -1; fd = __reservefd(-1); - if (fd == -1) return -1; + if (fd == -1) + return -1; port_state = port_new(&ephnd); if (!port_state) { __releasefd(fd); @@ -1361,9 +1418,12 @@ static textwindows dontinline int sys_epoll_ctl_nt(int epfd, int op, int fd, if (!IsWindows()) { return sys_epoll_ctl(epfd, op, fd, ev); } else { - if (wepoll_init() < 0) return -1; - if (!__isfdopen(fd)) return ebadf(); - if (!__isfdkind(epfd, kFdEpoll)) return ebadf(); + if (wepoll_init() < 0) + return -1; + if (!__isfdopen(fd)) + return ebadf(); + if (!__isfdkind(epfd, kFdEpoll)) + return ebadf(); tree_node = ts_tree_find_and_ref(&epoll__handle_tree, g_fds.p[epfd].handle); if (!tree_node) { err_set_win_error(kNtErrorInvalidParameter); @@ -1372,7 +1432,8 @@ static textwindows dontinline int sys_epoll_ctl_nt(int epfd, int op, int fd, port_state = port_state_from_handle_tree_node(tree_node); r = port_ctl(port_state, op, g_fds.p[fd].handle, ev); ts_tree_node_unref(tree_node); - if (r < 0) goto err; + if (r < 0) + goto err; return 0; err: /* On Linux, in the case of epoll_ctl(), EBADF takes priority over @@ -1390,9 +1451,12 @@ static textwindows dontinline int sys_epoll_wait_nt(int epfd, int num_events; struct PortState *port_state; struct TsTreeNode *tree_node; - if (!__isfdkind(epfd, kFdEpoll)) return ebadf(); - if (maxevents <= 0) return einval(); - if (wepoll_init() < 0) return -1; + if (!__isfdkind(epfd, kFdEpoll)) + return ebadf(); + if (maxevents <= 0) + return einval(); + if (wepoll_init() < 0) + return -1; tree_node = ts_tree_find_and_ref(&epoll__handle_tree, g_fds.p[epfd].handle); if (!tree_node) { err_set_win_error(kNtErrorInvalidParameter); @@ -1401,7 +1465,8 @@ static textwindows dontinline int sys_epoll_wait_nt(int epfd, port_state = port_state_from_handle_tree_node(tree_node); num_events = port_wait(port_state, events, maxevents, timeoutms); ts_tree_node_unref(tree_node); - if (num_events < 0) goto err; + if (num_events < 0) + goto err; return num_events; err: err_check_handle(g_fds.p[epfd].handle); @@ -1412,7 +1477,8 @@ err: textwindows int sys_close_epoll_nt(int fd) { struct PortState *port_state; struct TsTreeNode *tree_node; - if (wepoll_init() < 0) return -1; + if (wepoll_init() < 0) + return -1; tree_node = ts_tree_del_and_ref(&epoll__handle_tree, g_fds.p[fd].handle); if (!tree_node) { err_set_win_error(kNtErrorInvalidParameter); @@ -1570,9 +1636,11 @@ int epoll_pwait(int epfd, struct epoll_event *events, int maxevents, sizeof(*sigmask)); if (rc == -1 && errno == ENOSYS) { errno = e; - if (sigmask) sys_sigprocmask(SIG_SETMASK, sigmask, &oldmask); + if (sigmask) + sys_sigprocmask(SIG_SETMASK, sigmask, &oldmask); rc = sys_epoll_wait(epfd, events, maxevents, timeoutms); - if (sigmask) sys_sigprocmask(SIG_SETMASK, &oldmask, 0); + if (sigmask) + sys_sigprocmask(SIG_SETMASK, &oldmask, 0); } } else { BLOCK_SIGNALS; diff --git a/libc/sock/gethostips.c b/libc/sock/gethostips.c index ee00e78c4..4a402ac1e 100644 --- a/libc/sock/gethostips.c +++ b/libc/sock/gethostips.c @@ -37,7 +37,8 @@ static uint32_t *GetUnixIps(void) { uint64_t z; uint32_t *a; char *b, *p, *e, c[16]; - if ((fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP)) == -1) return 0; + if ((fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP)) == -1) + return 0; a = 0; n = 0; z = 15000; @@ -47,7 +48,8 @@ static uint32_t *GetUnixIps(void) { if (sys_ioctl(fd, SIOCGIFCONF, &c) != -1) { for (p = b, e = p + MIN(z, READ32LE(c)); p + 16 + 16 <= e; p += IsBsd() ? 16 + MAX(16, p[16] & 255) : 40) { - if ((p[IsBsd() ? 17 : 16] & 255) != AF_INET) continue; + if ((p[IsBsd() ? 17 : 16] & 255) != AF_INET) + continue; a = realloc(a, ++n * sizeof(*a)); a[n - 1] = READ32BE(p + 20); } @@ -66,13 +68,15 @@ static textwindows uint32_t *GetWindowsIps(void) { i = 0; z = 15000; do { - if (!(ifaces = malloc(z))) return 0; + if (!(ifaces = malloc(z))) + return 0; rc = GetAdaptersAddresses(AF_INET, kNtGaaFlagSkipAnycast | kNtGaaFlagSkipMulticast | kNtGaaFlagSkipDnsServer | kNtGaaFlagSkipFriendlyName, 0, ifaces, &z); - if (rc != kNtErrorBufferOverflow) break; + if (rc != kNtErrorBufferOverflow) + break; free(ifaces); ifaces = 0; } while (++i < 3); @@ -80,9 +84,11 @@ static textwindows uint32_t *GetWindowsIps(void) { a = calloc(1, sizeof(*a)); } else if (rc == kNtNoError) { for (a = 0, n = 0, p = ifaces; p; p = p->Next) { - if (p->OperStatus != kNtIfOperStatusUp) continue; + if (p->OperStatus != kNtIfOperStatusUp) + continue; for (u = p->FirstUnicastAddress; u; u = u->Next) { - if (u->Address.lpSockaddr->sa_family != AF_INET) continue; + if (u->Address.lpSockaddr->sa_family != AF_INET) + continue; a = realloc(a, ++n * sizeof(*a)); a[n - 1] = ntohl( ((struct sockaddr_in *)u->Address.lpSockaddr)->sin_addr.s_addr); diff --git a/libc/sock/goodsocket.c b/libc/sock/goodsocket.c index 3b0de25ba..910ca47a8 100644 --- a/libc/sock/goodsocket.c +++ b/libc/sock/goodsocket.c @@ -25,7 +25,8 @@ #include "libc/sysv/consts/tcp.h" static bool Tune(int fd, int a, int b, int x) { - if (!b) return false; + if (!b) + return false; return setsockopt(fd, a, b, &x, sizeof(x)) != -1; } diff --git a/libc/sock/inet_aton.c b/libc/sock/inet_aton.c index c826cb955..d08e5c0d9 100644 --- a/libc/sock/inet_aton.c +++ b/libc/sock/inet_aton.c @@ -42,11 +42,14 @@ int inet_aton(const char *s0, struct in_addr *dest) { int i; for (i = 0; i < 4; i++) { a[i] = strtoul(s, &z, 0); - if (z == s || (*z && *z != '.') || !isdigit(*s)) return 0; - if (!*z) break; + if (z == s || (*z && *z != '.') || !isdigit(*s)) + return 0; + if (!*z) + break; s = z + 1; } - if (i == 4) return 0; + if (i == 4) + return 0; switch (i) { case 0: a[1] = a[0] & 0xffffff; @@ -59,7 +62,8 @@ int inet_aton(const char *s0, struct in_addr *dest) { a[2] >>= 8; } for (i = 0; i < 4; i++) { - if (a[i] > 255) return 0; + if (a[i] > 255) + return 0; d[i] = a[i]; } return 1; diff --git a/libc/sock/inet_ntop.c b/libc/sock/inet_ntop.c index 5018a0c89..578ebc26e 100644 --- a/libc/sock/inet_ntop.c +++ b/libc/sock/inet_ntop.c @@ -35,7 +35,8 @@ const char *inet_ntop(int af, const void *src, char *dst, uint32_t size) { int i, t, a, b, c, d; const unsigned char *ip; p = dst; - if (!size) return dst; + if (!size) + return dst; if ((ip = src)) { if (af == AF_INET) { if (size >= 16) { @@ -84,9 +85,12 @@ const char *inet_ntop(int af, const void *src, char *dst, uint32_t size) { b = (ip[i + 0] & 0x0F) >> 0; c = (ip[i + 1] & 0xF0) >> 4; d = (ip[i + 1] & 0x0F) >> 0; - if (a) *p++ = "0123456789abcdef"[a]; - if (a || b) *p++ = "0123456789abcdef"[b]; - if (a || b || c) *p++ = "0123456789abcdef"[c]; + if (a) + *p++ = "0123456789abcdef"[a]; + if (a || b) + *p++ = "0123456789abcdef"[b]; + if (a || b || c) + *p++ = "0123456789abcdef"[c]; *p++ = "0123456789abcdef"[d]; } *p = '\0'; diff --git a/libc/sock/inet_pton.c b/libc/sock/inet_pton.c index 332c59b18..5693977b9 100644 --- a/libc/sock/inet_pton.c +++ b/libc/sock/inet_pton.c @@ -159,8 +159,10 @@ static int inet_pton_inet6_impl(const char *src, uint8_t *dst) { int inet_pton(int af, const char *src, void *dst) { uint8_t *p; int b, c, j; - if (af == AF_INET6) return inet_pton_inet6_impl(src, dst); - if (af != AF_INET) return eafnosupport(); + if (af == AF_INET6) + return inet_pton_inet6_impl(src, dst); + if (af != AF_INET) + return eafnosupport(); j = 0; p = dst; p[0] = 0; @@ -168,9 +170,11 @@ int inet_pton(int af, const char *src, void *dst) { if (isdigit(c)) { b = c - '0' + p[j] * 10; p[j] = MIN(255, b); - if (b > 255) return 0; + if (b > 255) + return 0; } else if (c == '.') { - if (++j == 4) return 0; + if (++j == 4) + return 0; p[j] = 0; } else { return 0; diff --git a/libc/sock/recvfrom-nt.c b/libc/sock/recvfrom-nt.c index 101277262..25d571ad7 100644 --- a/libc/sock/recvfrom-nt.c +++ b/libc/sock/recvfrom-nt.c @@ -55,7 +55,8 @@ textwindows ssize_t sys_recvfrom_nt(int fd, const struct iovec *iov, size_t iovlen, uint32_t flags, void *opt_out_srcaddr, uint32_t *opt_inout_srcaddrsize) { - if (flags & ~(_MSG_DONTWAIT | _MSG_OOB | _MSG_PEEK)) return einval(); + if (flags & ~(_MSG_DONTWAIT | _MSG_OOB | _MSG_PEEK)) + return einval(); ssize_t rc; struct Fd *f = g_fds.p + fd; sigset_t m = __sig_block(); diff --git a/libc/sock/recvmsg.c b/libc/sock/recvmsg.c index caac4fc50..85c3fc761 100644 --- a/libc/sock/recvmsg.c +++ b/libc/sock/recvmsg.c @@ -113,7 +113,8 @@ ssize_t recvmsg(int fd, struct msghdr *msg, int flags) { kprintf(".name=%#.*hhs, ", msg->msg_namelen, msg->msg_name); if (msg->msg_controllen) kprintf(".control=%#.*hhs, ", msg->msg_controllen, msg->msg_control); - if (msg->msg_flags) kprintf(".flags=%#x, ", msg->msg_flags); + if (msg->msg_flags) + kprintf(".flags=%#x, ", msg->msg_flags); kprintf(".iov=%s", DescribeIovec(rc, msg->msg_iov, msg->msg_iovlen)); kprintf("], %#x) → %'ld% m\n", flags, rc); } diff --git a/libc/sock/send-nt.c b/libc/sock/send-nt.c index 667f1082e..a186159b2 100644 --- a/libc/sock/send-nt.c +++ b/libc/sock/send-nt.c @@ -49,7 +49,8 @@ static textwindows int sys_send_nt_start(int64_t handle, textwindows ssize_t sys_send_nt(int fd, const struct iovec *iov, size_t iovlen, uint32_t flags) { - if (flags & ~(_MSG_DONTWAIT | _MSG_OOB | _MSG_DONTROUTE)) return einval(); + if (flags & ~(_MSG_DONTWAIT | _MSG_OOB | _MSG_DONTROUTE)) + return einval(); ssize_t rc; struct Fd *f = g_fds.p + fd; sigset_t m = __sig_block(); diff --git a/libc/sock/sendfile.c b/libc/sock/sendfile.c index 9e0865233..633c81273 100644 --- a/libc/sock/sendfile.c +++ b/libc/sock/sendfile.c @@ -65,8 +65,10 @@ static dontinline textwindows ssize_t sys_sendfile_nt( uint32_t flags = 0; int64_t ih, oh, eof, offset; struct NtByHandleFileInformation wst; - if (!__isfdkind(infd, kFdFile)) return ebadf(); - if (!__isfdkind(outfd, kFdSocket)) return ebadf(); + if (!__isfdkind(infd, kFdFile)) + return ebadf(); + if (!__isfdkind(outfd, kFdSocket)) + return ebadf(); ih = g_fds.p[infd].handle; oh = g_fds.p[outfd].handle; if (opt_in_out_inoffset) { @@ -119,12 +121,14 @@ static ssize_t sys_sendfile_bsd(int outfd, int infd, } if (IsFreebsd()) { rc = sys_sendfile_freebsd(infd, outfd, offset, uptobytes, 0, &sbytes, 0); - if (rc == -1 && errno == ENOBUFS) errno = ENOMEM; + if (rc == -1 && errno == ENOBUFS) + errno = ENOMEM; } else { sbytes = uptobytes; rc = sys_sendfile_xnu(infd, outfd, offset, &sbytes, 0, 0); } - if (rc == -1 && errno == ENOTSOCK) errno = EBADF; + if (rc == -1 && errno == ENOTSOCK) + errno = EBADF; if (rc != -1) { if (opt_in_out_inoffset) { *opt_in_out_inoffset += sbytes; diff --git a/libc/sock/sendmsg.c b/libc/sock/sendmsg.c index 5fd2dae11..2eb0c7f5b 100644 --- a/libc/sock/sendmsg.c +++ b/libc/sock/sendmsg.c @@ -99,7 +99,8 @@ ssize_t sendmsg(int fd, const struct msghdr *msg, int flags) { kprintf(".name=%#.*hhs, ", msg->msg_namelen, msg->msg_name); if (msg->msg_controllen) kprintf(", .control=%#.*hhs, ", msg->msg_controllen, msg->msg_control); - if (msg->msg_flags) kprintf(".flags=%#x, ", msg->msg_flags); + if (msg->msg_flags) + kprintf(".flags=%#x, ", msg->msg_flags); kprintf(", .iov=%s", DescribeIovec(rc != -1 ? rc : -2, msg->msg_iov, msg->msg_iovlen)); } diff --git a/libc/sock/sendto-nt.c b/libc/sock/sendto-nt.c index b49e3559e..e6fdb1f17 100644 --- a/libc/sock/sendto-nt.c +++ b/libc/sock/sendto-nt.c @@ -52,7 +52,8 @@ static textwindows int sys_sendto_nt_start(int64_t handle, textwindows ssize_t sys_sendto_nt(int fd, const struct iovec *iov, size_t iovlen, uint32_t flags, void *opt_in_addr, uint32_t in_addrsize) { - if (flags & ~(_MSG_DONTWAIT | _MSG_OOB | _MSG_DONTROUTE)) return einval(); + if (flags & ~(_MSG_DONTWAIT | _MSG_OOB | _MSG_DONTROUTE)) + return einval(); ssize_t rc; struct Fd *f = g_fds.p + fd; sigset_t m = __sig_block(); diff --git a/libc/sock/setsockopt-nt.c b/libc/sock/setsockopt-nt.c index 0c2c6e522..c6a79b57a 100644 --- a/libc/sock/setsockopt-nt.c +++ b/libc/sock/setsockopt-nt.c @@ -38,12 +38,16 @@ textwindows int sys_setsockopt_nt(struct Fd *fd, int level, int optname, // socket read/write timeouts if (level == SOL_SOCKET && (optname == SO_RCVTIMEO || optname == SO_SNDTIMEO)) { - if (!(optval && optlen == sizeof(struct timeval))) return einval(); + if (!(optval && optlen == sizeof(struct timeval))) + return einval(); const struct timeval *tv = optval; int64_t ms = timeval_tomillis(*tv); - if (ms >= 0xffffffffu) ms = 0; // wait forever (default) - if (optname == SO_RCVTIMEO) fd->rcvtimeo = ms; - if (optname == SO_SNDTIMEO) fd->sndtimeo = ms; + if (ms >= 0xffffffffu) + ms = 0; // wait forever (default) + if (optname == SO_RCVTIMEO) + fd->rcvtimeo = ms; + if (optname == SO_SNDTIMEO) + fd->sndtimeo = ms; return 0; // we want to handle this on our own } diff --git a/libc/sock/sockaddr.c b/libc/sock/sockaddr.c index b038cc3ef..f72f664ac 100644 --- a/libc/sock/sockaddr.c +++ b/libc/sock/sockaddr.c @@ -64,12 +64,16 @@ void __convert_sockaddr_to_bsd(struct sockaddr_storage *addr) { // copies sockaddr from internal memory to user's buffer void __write_sockaddr(const struct sockaddr_storage *addr, void *out_addr, uint32_t *inout_addrsize) { - if (!out_addr) return; - if (!inout_addrsize) return; + if (!out_addr) + return; + if (!inout_addrsize) + return; uint32_t insize = *inout_addrsize; - if (insize) bzero(out_addr, insize); + if (insize) + bzero(out_addr, insize); uint32_t outsize = __get_sockaddr_len(addr); uint32_t copysize = MIN(insize, outsize); - if (copysize) memcpy(out_addr, addr, copysize); + if (copysize) + memcpy(out_addr, addr, copysize); *inout_addrsize = outsize; } diff --git a/libc/sock/sockaddr2linux.c b/libc/sock/sockaddr2linux.c index 7482b8847..69efdb9f1 100644 --- a/libc/sock/sockaddr2linux.c +++ b/libc/sock/sockaddr2linux.c @@ -64,7 +64,8 @@ void sockaddr2linux(const union sockaddr_storage_bsd *addr, uint32_t addrsize, sizeof(addr->sun.sun_family)), size - sizeof(out_addr->sun.sun_family))); out_addr->sun.sun_family = AF_UNIX; - if (len) memcpy(out_addr->sun.sun_path, addr->sun.sun_path, len); + if (len) + memcpy(out_addr->sun.sun_path, addr->sun.sun_path, len); *inout_addrsize = sizeof(out_addr->sun.sun_family) + len + 1; } } diff --git a/libc/sock/sockatmark.c b/libc/sock/sockatmark.c index 49dba8a1e..767305d7b 100644 --- a/libc/sock/sockatmark.c +++ b/libc/sock/sockatmark.c @@ -30,8 +30,10 @@ static textwindows int sockatmark_nt(int fd, unsigned long magnum) { bool32 res; int64_t hand; uint32_t bytes; - if (fd >= g_fds.n) return ebadf(); - if (g_fds.p[fd].kind != kFdSocket) return einval(); + if (fd >= g_fds.n) + return ebadf(); + if (g_fds.p[fd].kind != kFdSocket) + return einval(); hand = g_fds.p[fd].handle; if (WSAIoctl(hand, magnum, 0, 0, &res, sizeof(res), &bytes, 0, 0) == -1) { return __winsockerr(); diff --git a/libc/sock/sockdebug.c b/libc/sock/sockdebug.c index 97f5074ff..89e029fba 100644 --- a/libc/sock/sockdebug.c +++ b/libc/sock/sockdebug.c @@ -64,7 +64,8 @@ const char *(DescribeSockaddr)(char buf[128], const struct sockaddr *sa, unix = (const struct sockaddr_un *)sa; n = strnlen(unix->sun_path, sizeof(unix->sun_path)); n = MIN(n, 128 - 1); - if (n) memcpy(buf, unix->sun_path, n); + if (n) + memcpy(buf, unix->sun_path, n); buf[n] = 0; } } diff --git a/libc/sock/socket-nt.c b/libc/sock/socket-nt.c index c993401b8..31954a708 100644 --- a/libc/sock/socket-nt.c +++ b/libc/sock/socket-nt.c @@ -34,13 +34,16 @@ textwindows int sys_socket_nt(int family, int type, int protocol) { int64_t h; int fd, oflags, truetype; fd = __reservefd(-1); - if (fd == -1) return -1; + if (fd == -1) + return -1; truetype = type & ~(SOCK_CLOEXEC | SOCK_NONBLOCK); if ((h = WSASocket(family, truetype, protocol, NULL, 0, kNtWsaFlagOverlapped)) != -1) { oflags = O_RDWR; - if (type & SOCK_CLOEXEC) oflags |= O_CLOEXEC; - if (type & SOCK_NONBLOCK) oflags |= O_NONBLOCK; + if (type & SOCK_CLOEXEC) + oflags |= O_CLOEXEC; + if (type & SOCK_NONBLOCK) + oflags |= O_NONBLOCK; g_fds.p[fd].family = family; g_fds.p[fd].type = truetype; g_fds.p[fd].protocol = protocol; diff --git a/libc/sock/socketpair-nt.c b/libc/sock/socketpair-nt.c index d7f241f07..8a6bdb625 100644 --- a/libc/sock/socketpair-nt.c +++ b/libc/sock/socketpair-nt.c @@ -45,7 +45,8 @@ textwindows int sys_socketpair_nt(int family, int type, int proto, int sv[2]) { } oflags = 0; - if (type & SOCK_CLOEXEC) oflags |= O_CLOEXEC; + if (type & SOCK_CLOEXEC) + oflags |= O_CLOEXEC; type &= ~SOCK_CLOEXEC; if (type == SOCK_STREAM) { @@ -62,8 +63,10 @@ textwindows int sys_socketpair_nt(int family, int type, int proto, int sv[2]) { writer = __reservefd_unlocked(-1); __fds_unlock(); if (reader == -1 || writer == -1) { - if (reader != -1) __releasefd(reader); - if (writer != -1) __releasefd(writer); + if (reader != -1) + __releasefd(reader); + if (writer != -1) + __releasefd(writer); return -1; } if ((hpipe = CreateNamedPipe( diff --git a/libc/sock/socketpair-sysv.c b/libc/sock/socketpair-sysv.c index c3d7a647d..cbe1da77a 100644 --- a/libc/sock/socketpair-sysv.c +++ b/libc/sock/socketpair-sysv.c @@ -23,7 +23,8 @@ int sys_socketpair(int family, int type, int protocol, int sv[2]) { int e = errno; - if (__sys_socketpair(family, type, protocol, sv) != -1) return 0; + if (__sys_socketpair(family, type, protocol, sv) != -1) + return 0; if ((type & (SOCK_CLOEXEC | SOCK_NONBLOCK)) && (errno == EINVAL || errno == EPROTOTYPE || errno == EPROTONOSUPPORT)) { errno = e; diff --git a/libc/sock/socketpair.c b/libc/sock/socketpair.c index 22d2e3c77..d208910eb 100644 --- a/libc/sock/socketpair.c +++ b/libc/sock/socketpair.c @@ -37,7 +37,8 @@ * @asyncsignalsafe */ int socketpair(int family, int type, int protocol, int sv[2]) { - if (family == AF_UNSPEC) family = AF_UNIX; + if (family == AF_UNSPEC) + family = AF_UNIX; if (!IsWindows()) { return sys_socketpair(family, type, protocol, sv); } else { diff --git a/libc/sock/syslog.c b/libc/sock/syslog.c index 2a3ed5595..771394cbb 100644 --- a/libc/sock/syslog.c +++ b/libc/sock/syslog.c @@ -62,7 +62,8 @@ static struct sockaddr_un log_addr = {AF_UNIX, "/dev/log"}; static int64_t Time(int64_t *tp) { struct timespec ts; clock_gettime(CLOCK_REALTIME, &ts); - if (tp) *tp = ts.tv_sec; + if (tp) + *tp = ts.tv_sec; return ts.tv_sec; } @@ -125,8 +126,10 @@ void vsyslog(int priority, const char *message, va_list ap) { int hlen; /* If LOG_CONS is specified, use to store the point in * the header message after the timestamp */ BLOCK_CANCELATION; - if (log_fd < 0) __openlog(); - if (!(priority & LOG_FACMASK)) priority |= log_facility; + if (log_fd < 0) + __openlog(); + if (!(priority & LOG_FACMASK)) + priority |= log_facility; /* Build the time string */ now = Time(NULL); gmtime_r(&now, &tm); @@ -226,9 +229,11 @@ void vsyslog(int priority, const char *message, va_list ap) { */ int setlogmask(int maskpri) { int ret; - if (log_facility == -1) __initlog(); + if (log_facility == -1) + __initlog(); ret = log_mask; - if (maskpri) log_mask = LOG_PRI(maskpri); + if (maskpri) + log_mask = LOG_PRI(maskpri); return ret; } @@ -261,13 +266,16 @@ int setlogmask(int maskpri) { */ void openlog(const char *ident, int opt, int facility) { BLOCK_CANCELATION; - if (log_facility == -1) __initlog(); - if (!ident) ident = firstnonnull(program_invocation_short_name, "unknown"); + if (log_facility == -1) + __initlog(); + if (!ident) + ident = firstnonnull(program_invocation_short_name, "unknown"); tprecode8to16(log_ident, ARRAYLEN(log_ident), ident); log_opt = opt; log_facility = facility; log_id = 0; - if ((opt & LOG_NDELAY) && log_fd < 0) __openlog(); + if ((opt & LOG_NDELAY) && log_fd < 0) + __openlog(); ALLOW_CANCELATION; } diff --git a/libc/sock/winsockblock.c b/libc/sock/winsockblock.c index 8a21df234..e0d0b2848 100644 --- a/libc/sock/winsockblock.c +++ b/libc/sock/winsockblock.c @@ -42,7 +42,8 @@ __winsock_block(int64_t handle, uint32_t flags, bool nonblock, RestartOperation: int rc, sig, reason = 0; uint32_t status, exchanged; - if (_check_cancel() == -1) return -1; // ECANCELED + if (_check_cancel() == -1) + return -1; // ECANCELED if (_weaken(__sig_get) && (sig = _weaken(__sig_get)(waitmask))) { goto HandleInterrupt; } @@ -93,8 +94,10 @@ RestartOperation: if (_weaken(__sig_get) && (sig = _weaken(__sig_get)(waitmask))) { HandleInterrupt: int handler_was_called = _weaken(__sig_relay)(sig, SI_KERNEL, waitmask); - if (_check_cancel() == -1) return -1; - if (handler_was_called != 1) goto RestartOperation; + if (_check_cancel() == -1) + return -1; + if (handler_was_called != 1) + goto RestartOperation; } return eintr(); } diff --git a/libc/stdio/__freadptr.c b/libc/stdio/__freadptr.c index e90ff8b2e..11c454d6b 100644 --- a/libc/stdio/__freadptr.c +++ b/libc/stdio/__freadptr.c @@ -20,7 +20,8 @@ #include "libc/stdio/stdio_ext.h" const char *__freadptr(FILE *f, size_t *sizep) { - if (f->beg == f->end) return 0; + if (f->beg == f->end) + return 0; *sizep = f->end - f->beg; return (const char *)f->buf + f->beg; } diff --git a/libc/stdio/appendd.c b/libc/stdio/appendd.c index 62e44cc92..409f5d550 100644 --- a/libc/stdio/appendd.c +++ b/libc/stdio/appendd.c @@ -48,8 +48,10 @@ ssize_t appendd(char **b, const void *s, size_t l) { z = appendz((p = *b)); n = ROUNDUP(z.i + l + 1, 8) + W; if (n > z.n) { - if (!z.n) z.n = W * 2; - while (n > z.n) z.n += z.n >> 1; + if (!z.n) + z.n = W * 2; + while (n > z.n) + z.n += z.n >> 1; z.n = ROUNDUP(z.n, W); if ((p = realloc(p, z.n))) { z.n = malloc_usable_size(p); @@ -65,7 +67,8 @@ ssize_t appendd(char **b, const void *s, size_t l) { p[z.i] = 0; } z.i += l; - if (!IsTiny() && W == 8) z.i |= (size_t)APPEND_COOKIE << 48; + if (!IsTiny() && W == 8) + z.i |= (size_t)APPEND_COOKIE << 48; *(size_t *)(p + z.n - W) = z.i; return l; } diff --git a/libc/stdio/appendstrlist.c b/libc/stdio/appendstrlist.c index e9ec4f180..71e4b05a5 100644 --- a/libc/stdio/appendstrlist.c +++ b/libc/stdio/appendstrlist.c @@ -25,7 +25,8 @@ int AppendStrList(struct StrList *sl) { char **p2; if (sl->i == sl->n) { n2 = sl->n; - if (!n2) n2 = 2; + if (!n2) + n2 = 2; n2 += n2 >> 1; if ((p2 = realloc(sl->p, n2 * sizeof(*p2)))) { sl->p = p2; diff --git a/libc/stdio/appendw.c b/libc/stdio/appendw.c index c5848b70d..9c90ff6d0 100644 --- a/libc/stdio/appendw.c +++ b/libc/stdio/appendw.c @@ -62,8 +62,10 @@ ssize_t appendw(char **b, uint64_t w) { l = w ? (bsrl(w) >> 3) + 1 : 1; n = ROUNDUP(z.i + 8 + 1, 8) + W; if (n > z.n) { - if (!z.n) z.n = W * 2; - while (n > z.n) z.n += z.n >> 1; + if (!z.n) + z.n = W * 2; + while (n > z.n) + z.n += z.n >> 1; z.n = ROUNDUP(z.n, W); if ((p = realloc(p, z.n))) { z.n = malloc_usable_size(p); @@ -77,7 +79,8 @@ ssize_t appendw(char **b, uint64_t w) { WRITE64LE(q, w); q[8] = 0; z.i += l; - if (!IsTiny() && W == 8) z.i |= (size_t)APPEND_COOKIE << 48; + if (!IsTiny() && W == 8) + z.i |= (size_t)APPEND_COOKIE << 48; *(size_t *)(p + z.n - W) = z.i; return l; } diff --git a/libc/stdio/dirstream.c b/libc/stdio/dirstream.c index 0ba27eadb..2f080fabe 100644 --- a/libc/stdio/dirstream.c +++ b/libc/stdio/dirstream.c @@ -214,7 +214,8 @@ TryAgain: // e.g. \\?\C:\ stays the same } else { --i; // foo\bar\ -> foo\ (parent) - while (i && jp[i - 1] != '\\') --i; + while (i && jp[i - 1] != '\\') + --i; } } else { while (*p) { @@ -259,7 +260,8 @@ GiveUpOnGettingInode: dir->windata.cFileName); dir->ent.d_type = GetNtDirentType(&dir->windata); dir->isdone = !FindNextFile(dir->hand, &dir->windata); - if (pretend_this_file_doesnt_exist) goto TryAgain; + if (pretend_this_file_doesnt_exist) + goto TryAgain; return &dir->ent; } @@ -332,7 +334,8 @@ DIR *fdopendir(int fd) { enametoolong(); return 0; } - if (len) memcpy(dir->zip.prefix.path, name, len); + if (len) + memcpy(dir->zip.prefix.path, name, len); if (len && dir->zip.prefix.path[len - 1] != '/') { dir->zip.prefix.path[len++] = '/'; } @@ -379,7 +382,8 @@ DIR *opendir(const char *name) { return 0; } DIR *res = fdopendir(fd); - if (!res) close(fd); + if (!res) + close(fd); return res; } @@ -402,10 +406,14 @@ static struct dirent *readdir_zipos(DIR *dir) { ent->d_name[2] = 0; struct ZiposUri p; p.len = dir->zip.prefix.len; - if (p.len) memcpy(p.path, dir->zip.prefix.path, p.len); - while (p.len && p.path[p.len - 1] == '/') --p.len; - while (p.len && p.path[p.len - 1] != '/') --p.len; - while (p.len && p.path[p.len - 1] == '/') --p.len; + if (p.len) + memcpy(p.path, dir->zip.prefix.path, p.len); + while (p.len && p.path[p.len - 1] == '/') + --p.len; + while (p.len && p.path[p.len - 1] != '/') + --p.len; + while (p.len && p.path[p.len - 1] == '/') + --p.len; p.path[p.len] = 0; ent->d_ino = __zipos_inode( dir->zip.zipos, __zipos_scan(dir->zip.zipos, &p), p.path, p.len); diff --git a/libc/stdio/dumphexc.c b/libc/stdio/dumphexc.c index d096997f8..3bf900cb6 100644 --- a/libc/stdio/dumphexc.c +++ b/libc/stdio/dumphexc.c @@ -29,7 +29,8 @@ char *DumpHexc(const char *p, size_t n, size_t *z) { long o; int i, m; char A[128], *q, *s = 0; - if (n == -1) n = p ? strlen(p) : 0; + if (n == -1) + n = p ? strlen(p) : 0; appendw(&s, '"' | '\\' << 8 | '\n' << 16); for (o = 0; (m = MIN(16, n)); p += m, n -= m) { q = A; @@ -39,12 +40,14 @@ char *DumpHexc(const char *p, size_t n, size_t *z) { *q++ = "0123456789abcdef"[(p[i] & 0xF0) >> 4]; *q++ = "0123456789abcdef"[(p[i] & 0x0F) >> 0]; } - if (o) appendw(&s, '\\' | '\n' << 8); + if (o) + appendw(&s, '\\' | '\n' << 8); appendd(&s, A, q - A); o += m; } if (appendw(&s, '"') != -1) { - if (z) *z = appendz(s).i; + if (z) + *z = appendz(s).i; return s; } else { free(s); diff --git a/libc/stdio/fclose.c b/libc/stdio/fclose.c index da0b4521c..b02c8bf20 100644 --- a/libc/stdio/fclose.c +++ b/libc/stdio/fclose.c @@ -35,7 +35,8 @@ */ int fclose(FILE *f) { int rc; - if (!f) return 0; + if (!f) + return 0; __fflush_unregister(f); fflush(f); if (_weaken(free)) { diff --git a/libc/stdio/fflush.c b/libc/stdio/fflush.c index 7cf55d4d1..4a9ef6c8e 100644 --- a/libc/stdio/fflush.c +++ b/libc/stdio/fflush.c @@ -26,8 +26,10 @@ */ int fflush(FILE *f) { int rc; - if (f) flockfile(f); + if (f) + flockfile(f); rc = fflush_unlocked(f); - if (f) funlockfile(f); + if (f) + funlockfile(f); return rc; } diff --git a/libc/stdio/fgetc_unlocked.c b/libc/stdio/fgetc_unlocked.c index 33b4d55b1..9a1d784e6 100644 --- a/libc/stdio/fgetc_unlocked.c +++ b/libc/stdio/fgetc_unlocked.c @@ -31,7 +31,8 @@ int fgetc_unlocked(FILE *f) { if (f->beg < f->end) { return f->buf[f->beg++] & 255; } else { - if (!fread_unlocked(b, 1, 1, f)) return -1; + if (!fread_unlocked(b, 1, 1, f)) + return -1; return b[0]; } } diff --git a/libc/stdio/fgetln.c b/libc/stdio/fgetln.c index a6277eabb..74edcdcd8 100644 --- a/libc/stdio/fgetln.c +++ b/libc/stdio/fgetln.c @@ -46,7 +46,8 @@ char *fgetln(FILE *stream, size_t *len) { size_t n = 0; flockfile(stream); if ((rc = getdelim_unlocked(&stream->getln, &n, '\n', stream)) > 0) { - if (len) *len = rc; + if (len) + *len = rc; res = stream->getln; } else { res = 0; diff --git a/libc/stdio/fgets_unlocked.c b/libc/stdio/fgets_unlocked.c index b910fbc34..c01a3105e 100644 --- a/libc/stdio/fgets_unlocked.c +++ b/libc/stdio/fgets_unlocked.c @@ -48,11 +48,13 @@ char *fgets_unlocked(char *s, int size, FILE *f) { if ((t = memchr(b, '\n', n))) { n = t + 1 - b; } - if (n) memcpy(p, b, n); + if (n) + memcpy(p, b, n); f->beg += n; size -= n - 1; p += n; - if (t) break; + if (t) + break; } else { if ((c = fgetc_unlocked(f)) == -1) { if (ferror_unlocked(f) == EINTR) { @@ -62,7 +64,8 @@ char *fgets_unlocked(char *s, int size, FILE *f) { } } *p++ = c & 255; - if (c == '\n') break; + if (c == '\n') + break; } } if (p > s || f->state != -1) { diff --git a/libc/stdio/fgetwc_unlocked.c b/libc/stdio/fgetwc_unlocked.c index a90f86122..0f442fed6 100644 --- a/libc/stdio/fgetwc_unlocked.c +++ b/libc/stdio/fgetwc_unlocked.c @@ -35,11 +35,13 @@ wint_t fgetwc_unlocked(FILE *f) { } else { return -1; } - if (b < 0300) return b; + if (b < 0300) + return b; n = ThomPikeLen(b); x = ThomPikeByte(b); while (--n) { - if ((c = fgetc_unlocked(f)) == -1) return -1; + if ((c = fgetc_unlocked(f)) == -1) + return -1; y = c; if (ThomPikeCont(y)) { x = ThomPikeMerge(x, y); diff --git a/libc/stdio/fgetws_unlocked.c b/libc/stdio/fgetws_unlocked.c index c8108529b..3a7978327 100644 --- a/libc/stdio/fgetws_unlocked.c +++ b/libc/stdio/fgetws_unlocked.c @@ -38,11 +38,13 @@ wchar_t *fgetws_unlocked(wchar_t *s, int size, FILE *f) { if (size > 0) { while (--size > 0) { if ((c = fgetwc_unlocked(f)) == -1) { - if (ferror_unlocked(f) == EINTR) continue; + if (ferror_unlocked(f) == EINTR) + continue; break; } *p++ = c; - if (c == '\n') break; + if (c == '\n') + break; } *p = '\0'; } diff --git a/libc/stdio/fmemopen.c b/libc/stdio/fmemopen.c index 81e886ff7..21945de76 100644 --- a/libc/stdio/fmemopen.c +++ b/libc/stdio/fmemopen.c @@ -50,7 +50,8 @@ FILE *fmemopen(void *buf, size_t size, const char *mode) { if (buf) { f->nofree = true; } else { - if (!size) size = BUFSIZ; + if (!size) + size = BUFSIZ; // TODO(jart): Why do we need calloc()? if (!_weaken(calloc) || !(buf = _weaken(calloc)(1, size))) { __stdio_free(f); diff --git a/libc/stdio/fmt.c b/libc/stdio/fmt.c index b90f936c8..b8c31bc63 100644 --- a/libc/stdio/fmt.c +++ b/libc/stdio/fmt.c @@ -140,7 +140,8 @@ static int __fmt_atoi(const char **str) { static int __fmt_pad(int out(const char *, void *, size_t), void *arg, unsigned long n) { int i, rc; - for (rc = i = 0; i < n; ++i) rc |= out(" ", arg, 1); + for (rc = i = 0; i < n; ++i) + rc |= out(" ", arg, 1); return rc; } @@ -212,24 +213,30 @@ static int __fmt_ntoa_format(int out(const char *, void *, size_t), void *arg, /* pad spaces up to given width */ if (!(flags & FLAGS_LEFT) && !(flags & FLAGS_ZEROPAD)) { if (len < width) { - if (__fmt_pad(out, arg, width - len) == -1) return -1; + if (__fmt_pad(out, arg, width - len) == -1) + return -1; } } - if (sign_character != '\0' && out(&sign_character, arg, 1) == -1) return -1; + if (sign_character != '\0' && out(&sign_character, arg, 1) == -1) + return -1; if (flags & FLAGS_HASH) { - if (out("0", arg, 1) == -1) return -1; + if (out("0", arg, 1) == -1) + return -1; if (alternate_form_middle_char != '\0' && out(&alternate_form_middle_char, arg, 1) == -1) return -1; } for (i = 0; i < prec_width_zeros; ++i) - if (out("0", arg, 1) == -1) return -1; + if (out("0", arg, 1) == -1) + return -1; reverse(buf, actual_buf_len); - if (out(buf, arg, actual_buf_len) == -1) return -1; + if (out(buf, arg, actual_buf_len) == -1) + return -1; /* append pad spaces up to given width */ if (flags & FLAGS_LEFT) { if (len < width) { - if (__fmt_pad(out, arg, width - len) == -1) return -1; + if (__fmt_pad(out, arg, width - len) == -1) + return -1; } } return 0; @@ -245,7 +252,8 @@ static int __fmt_ntoa2(int out(const char *, void *, size_t), void *arg, len = 0; // we check for log2base!=3, since otherwise we'll print nothing for // a value of 0 with precision 0 when # mandates that one be printed - if (!value && log2base != 3) flags &= ~FLAGS_HASH; + if (!value && log2base != 3) + flags &= ~FLAGS_HASH; if (value || !(flags & FLAGS_PRECISION)) { count = 0; do { @@ -357,7 +365,8 @@ static int __fmt_stoa_byte(out_f out, void *a, uint64_t c) { static int __fmt_stoa_wide(out_f out, void *a, uint64_t w) { char buf[8]; - if (!isascii(w)) w = tpenc(w); + if (!isascii(w)) + w = tpenc(w); WRITE64LE(buf, w); return out(buf, a, w ? (bsr(w) >> 3) + 1 : 1); } @@ -431,7 +440,8 @@ static int __fmt_stoa(int out(const char *, void *, size_t), void *arg, emit = __fmt_stoa_byte; } - if (!(flags & FLAGS_PRECISION)) precision = -1; + if (!(flags & FLAGS_PRECISION)) + precision = -1; if (!(flags & FLAGS_PRECISION) || !ignorenul) { if (signbit == 63) { precision = wcsnlen((const wchar_t *)p, precision); @@ -461,30 +471,37 @@ static int __fmt_stoa(int out(const char *, void *, size_t), void *arg, } if (pad && !(flags & FLAGS_LEFT)) { - if (__fmt_pad(out, arg, pad) == -1) return -1; + if (__fmt_pad(out, arg, pad) == -1) + return -1; } if (!(flags & FLAGS_NOQUOTE) && (flags & FLAGS_REPR)) { if (signbit == 63) { - if (out("L", arg, 1) == -1) return -1; + if (out("L", arg, 1) == -1) + return -1; } else if (signbit == 15) { - if (out("u", arg, 1) == -1) return -1; + if (out("u", arg, 1) == -1) + return -1; } buf[0] = qchar; - if (out(buf, arg, 1) == -1) return -1; + if (out(buf, arg, 1) == -1) + return -1; } if (justdobytes) { while (precision--) { wc = *p++ & 0xff; - if (!wc && !ignorenul) break; - if (emit(out, arg, wc) == -1) return -1; + if (!wc && !ignorenul) + break; + if (emit(out, arg, wc) == -1) + return -1; } } else { while (precision--) { if (signbit == 15) { wc = *(const char16_t *)p; - if (!wc && !ignorenul) break; + if (!wc && !ignorenul) + break; if (IsUcs2(wc)) { p += sizeof(char16_t); } else if (IsUtf16Cont(wc)) { @@ -498,34 +515,42 @@ static int __fmt_stoa(int out(const char *, void *, size_t), void *arg, } } else if (signbit == 63) { wc = *(const wint_t *)p; - if (!wc && !ignorenul) break; + if (!wc && !ignorenul) + break; p += sizeof(wint_t); - if (!wc) break; + if (!wc) + break; } else { wc = *p++ & 0xff; - if (!wc && !ignorenul) break; + if (!wc && !ignorenul) + break; if (!isascii(wc)) { - if (ThomPikeCont(wc)) continue; + if (ThomPikeCont(wc)) + continue; n = ThomPikeLen(wc) - 1; wc = ThomPikeByte(wc); - if (n > precision) break; + if (n > precision) + break; precision -= n; while (n--) { wc = ThomPikeMerge(wc, *p++); } } } - if (emit(out, arg, wc) == -1) return -1; + if (emit(out, arg, wc) == -1) + return -1; } } if (!(flags & FLAGS_NOQUOTE) && (flags & FLAGS_REPR)) { buf[0] = qchar; - if (out(buf, arg, 1) == -1) return -1; + if (out(buf, arg, 1) == -1) + return -1; } if (pad && (flags & FLAGS_LEFT)) { - if (__fmt_pad(out, arg, pad) == -1) return -1; + if (__fmt_pad(out, arg, pad) == -1) + return -1; } return 0; @@ -606,7 +631,8 @@ static int __fmt_fpiprec(struct FPBits *b) { const FPI *fpi; int i, j, k, m; uint32_t *bits; - if (b->kind == STRTOG_Zero) return (b->ex = 0); + if (b->kind == STRTOG_Zero) + return (b->ex = 0); fpi = b->fpi; bits = b->bits; for (k = (fpi->nbits - 1) >> 2; k > 0; --k) { @@ -623,14 +649,16 @@ static int __fmt_fpiprec(struct FPBits *b) { } break; } - for (i = 0; i < 28 && !((bits[0] >> i) & 0xf); i += 4) donothing; + for (i = 0; i < 28 && !((bits[0] >> i) & 0xf); i += 4) + donothing; if (i) { b->ex += i; m = k >> 3; k -= (i >> 2); for (j = 0;; ++j) { bits[j] >>= i; - if (j == m) break; + if (j == m) + break; bits[j] |= bits[j + 1] << (32 - i); } } @@ -650,8 +678,10 @@ static int __fmt_bround(struct FPBits *b, int prec, int prec1) { inc = 0; k = m - 1; if ((t = bits[k >> 3] >> (j = (k & 7) * 4)) & 8) { - if (t & 7) goto inc1; - if (j && bits[k >> 3] << (32 - j)) goto inc1; + if (t & 7) + goto inc1; + if (j && bits[k >> 3] << (32 - j)) + goto inc1; while (k >= 8) { k -= 8; if (bits[k >> 3]) { @@ -669,26 +699,31 @@ haveinc: if ((n = 4 * (m & 7))) for (;; ++j) { bits[j - i] = bits[j] >> n; - if (j == k) break; + if (j == k) + break; bits[j - i] |= bits[j + 1] << (32 - n); } else for (;; ++j) { bits[j - i] = bits[j]; - if (j == k) break; + if (j == k) + break; } k = prec >> 3; if (inc) { - for (j = 0; !(++bits[j] & 0xffffffff); ++j) donothing; + for (j = 0; !(++bits[j] & 0xffffffff); ++j) + donothing; if (j > k) { onebit: bits[0] = 1; b->ex += 4 * prec; return 1; } - if ((j = prec & 7) < 7 && bits[k] >> (j + 1) * 4) goto onebit; + if ((j = prec & 7) < 7 && bits[k] >> (j + 1) * 4) + goto onebit; } - for (i = 0; !(bits[i >> 3] & (0xf << 4 * (i & 7))); ++i) donothing; + for (i = 0; !(bits[i >> 3] & (0xf << 4 * (i & 7))); ++i) + donothing; if (i) { b->ex += 4 * i; prec -= i; @@ -697,7 +732,8 @@ haveinc: i *= 4; for (m = j;; ++m) { bits[m - j] = bits[m] >> i; - if (m == k) break; + if (m == k) + break; bits[m - j] |= bits[m + 1] << (32 - i); } } @@ -805,9 +841,11 @@ int __fmt(void *fn, void *arg, const char *format, va_list va) { while (*format) { if (*format != '%') { for (n = 1; format[n]; ++n) { - if (format[n] == '%') break; + if (format[n] == '%') + break; } - if (out(format, arg, n) == -1) return -1; + if (out(format, arg, n) == -1) + return -1; format += n; continue; } @@ -815,38 +853,46 @@ int __fmt(void *fn, void *arg, const char *format, va_list va) { if (!IsTiny()) { if (format[1] == 's') { // FAST PATH: PLAIN STRING s = va_arg(va, char *); - if (!s) s = "(null)"; - if (out(s, arg, strlen(s)) == -1) return -1; + if (!s) + s = "(null)"; + if (out(s, arg, strlen(s)) == -1) + return -1; format += 2; continue; } else if (format[1] == 'd') { // FAST PATH: PLAIN INTEGER d = va_arg(va, int); - if (out(ibuf, arg, FormatInt32(ibuf, d) - ibuf) == -1) return -1; + if (out(ibuf, arg, FormatInt32(ibuf, d) - ibuf) == -1) + return -1; format += 2; continue; } else if (format[1] == 'u') { // FAST PATH: PLAIN UNSIGNED u = va_arg(va, unsigned); - if (out(ibuf, arg, FormatUint32(ibuf, u) - ibuf) == -1) return -1; + if (out(ibuf, arg, FormatUint32(ibuf, u) - ibuf) == -1) + return -1; format += 2; continue; } else if (format[1] == 'x') { // FAST PATH: PLAIN HEX u = va_arg(va, unsigned); - if (out(ibuf, arg, uint64toarray_radix16(u, ibuf)) == -1) return -1; + if (out(ibuf, arg, uint64toarray_radix16(u, ibuf)) == -1) + return -1; format += 2; continue; } else if (format[1] == 'l' && format[2] == 'x') { lu = va_arg(va, unsigned long); // FAST PATH: PLAIN LONG HEX - if (out(ibuf, arg, uint64toarray_radix16(lu, ibuf)) == -1) return -1; + if (out(ibuf, arg, uint64toarray_radix16(lu, ibuf)) == -1) + return -1; format += 3; continue; } else if (format[1] == 'l' && format[2] == 'd') { ld = va_arg(va, long); // FAST PATH: PLAIN LONG - if (out(ibuf, arg, FormatInt64(ibuf, ld) - ibuf) == -1) return -1; + if (out(ibuf, arg, FormatInt64(ibuf, ld) - ibuf) == -1) + return -1; format += 3; continue; } else if (format[1] == 'l' && format[2] == 'u') { lu = va_arg(va, unsigned long); // FAST PATH: PLAIN UNSIGNED LONG - if (out(ibuf, arg, FormatUint64(ibuf, lu) - ibuf) == -1) return -1; + if (out(ibuf, arg, FormatUint64(ibuf, lu) - ibuf) == -1) + return -1; format += 3; continue; } else if (format[1] == '.' && format[2] == '*' && format[3] == 's') { @@ -858,7 +904,8 @@ int __fmt(void *fn, void *arg, const char *format, va_list va) { s = "(null)"; n = MIN(6, n); } - if (out(s, arg, n) == -1) return -1; + if (out(s, arg, n) == -1) + return -1; format += 4; continue; } @@ -951,7 +998,8 @@ int __fmt(void *fn, void *arg, const char *format, va_list va) { format++; break; } - if (format[1] == 'l') format++; + if (format[1] == 'l') + format++; // fallthrough case 't': // ptrdiff_t case 'z': // size_t @@ -1074,7 +1122,8 @@ int __fmt(void *fn, void *arg, const char *format, va_list va) { case 'F': case 'f': - if (!(flags & FLAGS_PRECISION)) prec = 6; + if (!(flags & FLAGS_PRECISION)) + prec = 6; if (!longdouble) { x = va_arg(va, double); s = s0 = dtoa(x, 3, prec, &decpt, &fpb.sign, &se); @@ -1093,7 +1142,8 @@ int __fmt(void *fn, void *arg, const char *format, va_list va) { } if (decpt == 9999) { Format9999: - if (s0) freedtoa(s0); + if (s0) + freedtoa(s0); bzero(special, sizeof(special)); s = q = special; if (fpb.sign) { @@ -1107,37 +1157,49 @@ int __fmt(void *fn, void *arg, const char *format, va_list va) { flags &= ~(FLAGS_PRECISION | FLAGS_PLUS | FLAGS_HASH | FLAGS_SPACE); prec = 0; rc = __fmt_stoa(out, arg, s, flags, prec, width, signbit, qchar); - if (rc == -1) return -1; + if (rc == -1) + return -1; break; } FormatReal: - if (fpb.sign /* && (x || sign) */) sign = '-'; - if (prec > 0) width -= prec; + if (fpb.sign /* && (x || sign) */) + sign = '-'; + if (prec > 0) + width -= prec; if (width > 0) { - if (sign) --width; + if (sign) + --width; if (decpt <= 0) { --width; - if (prec > 0) --width; + if (prec > 0) + --width; } else { - if (s == se) decpt = 1; + if (s == se) + decpt = 1; width -= decpt; - if (prec > 0 || (flags & FLAGS_HASH)) --width; + if (prec > 0 || (flags & FLAGS_HASH)) + --width; } } if (width > 0 && !(flags & FLAGS_LEFT)) { if ((flags & FLAGS_ZEROPAD)) { - if (sign) __FMT_PUT(sign); + if (sign) + __FMT_PUT(sign); sign = 0; - do __FMT_PUT('0'); + do + __FMT_PUT('0'); while (--width > 0); } else - do __FMT_PUT(' '); + do + __FMT_PUT(' '); while (--width > 0); } - if (sign) __FMT_PUT(sign); + if (sign) + __FMT_PUT(sign); if (decpt <= 0) { __FMT_PUT('0'); - if (prec > 0 || (flags & FLAGS_HASH)) __FMT_PUT('.'); + if (prec > 0 || (flags & FLAGS_HASH)) + __FMT_PUT('.'); while (decpt < 0) { __FMT_PUT('0'); prec--; @@ -1152,7 +1214,8 @@ int __fmt(void *fn, void *arg, const char *format, va_list va) { } __FMT_PUT(c); } while (--decpt > 0); - if (prec > 0 || (flags & FLAGS_HASH)) __FMT_PUT('.'); + if (prec > 0 || (flags & FLAGS_HASH)) + __FMT_PUT('.'); } while (--prec >= 0) { if ((c = *s)) { @@ -1162,14 +1225,18 @@ int __fmt(void *fn, void *arg, const char *format, va_list va) { } __FMT_PUT(c); } - while (--width >= 0) __FMT_PUT(' '); - if (s0) freedtoa(s0); + while (--width >= 0) + __FMT_PUT(' '); + if (s0) + freedtoa(s0); break; case 'G': case 'g': - if (!(flags & FLAGS_PRECISION)) prec = 6; - if (prec < 1) prec = 1; + if (!(flags & FLAGS_PRECISION)) + prec = 6; + if (prec < 1) + prec = 1; if (!longdouble) { x = va_arg(va, double); s = s0 = dtoa(x, 2, prec, &decpt, &fpb.sign, &se); @@ -1186,7 +1253,8 @@ int __fmt(void *fn, void *arg, const char *format, va_list va) { s = s0 = gdtoa(fpb.fpi, fpb.ex, fpb.bits, &fpb.kind, prec ? 2 : 0, prec, &decpt, &se); } - if (decpt == 9999) goto Format9999; + if (decpt == 9999) + goto Format9999; c = se - s; prec1 = prec; if (!prec) { @@ -1199,18 +1267,22 @@ int __fmt(void *fn, void *arg, const char *format, va_list va) { prec -= decpt; else prec = c - decpt; - if (prec < 0) prec = 0; + if (prec < 0) + prec = 0; goto FormatReal; } d -= 2; - if (!(flags & FLAGS_HASH) && prec > c) prec = c; + if (!(flags & FLAGS_HASH) && prec > c) + prec = c; --prec; goto FormatExpo; case 'e': case 'E': - if (!(flags & FLAGS_PRECISION)) prec = 6; - if (prec < 0) prec = 0; + if (!(flags & FLAGS_PRECISION)) + prec = 6; + if (prec < 0) + prec = 0; if (!longdouble) { x = va_arg(va, double); s = s0 = dtoa(x, 2, prec + 1, &decpt, &fpb.sign, &se); @@ -1227,31 +1299,41 @@ int __fmt(void *fn, void *arg, const char *format, va_list va) { s = s0 = gdtoa(fpb.fpi, fpb.ex, fpb.bits, &fpb.kind, prec ? 2 : 0, prec, &decpt, &se); } - if (decpt == 9999) goto Format9999; + if (decpt == 9999) + goto Format9999; FormatExpo: - if (fpb.sign /* && (x || sign) */) sign = '-'; + if (fpb.sign /* && (x || sign) */) + sign = '-'; if ((width -= prec + 5) > 0) { - if (sign) --width; - if (prec || (flags & FLAGS_HASH)) --width; + if (sign) + --width; + if (prec || (flags & FLAGS_HASH)) + --width; } - if ((c = --decpt) < 0) c = -c; + if ((c = --decpt) < 0) + c = -c; while (c >= 100) { --width; c /= 10; } if (width > 0 && !(flags & FLAGS_LEFT)) { if ((flags & FLAGS_ZEROPAD)) { - if (sign) __FMT_PUT(sign); + if (sign) + __FMT_PUT(sign); sign = 0; - do __FMT_PUT('0'); + do + __FMT_PUT('0'); while (--width > 0); } else - do __FMT_PUT(' '); + do + __FMT_PUT(' '); while (--width > 0); } - if (sign) __FMT_PUT(sign); + if (sign) + __FMT_PUT(sign); __FMT_PUT(*s++); - if (prec || (flags & FLAGS_HASH)) __FMT_PUT('.'); + if (prec || (flags & FLAGS_HASH)) + __FMT_PUT('.'); while (--prec >= 0) { if ((c = *s)) { s++; @@ -1273,7 +1355,8 @@ int __fmt(void *fn, void *arg, const char *format, va_list va) { for (;;) { i1 = decpt / k; __FMT_PUT(i1 + '0'); - if (--c <= 0) break; + if (--c <= 0) + break; decpt -= i1 * k; decpt *= 10; } @@ -1307,7 +1390,8 @@ int __fmt(void *fn, void *arg, const char *format, va_list va) { bw = 1; bex = fpb.ex + 4 * prec1; if (bex) { - if ((i1 = bex) < 0) i1 = -i1; + if ((i1 = bex) < 0) + i1 = -i1; while (i1 >= 10) { ++bw; i1 /= 10; @@ -1317,19 +1401,24 @@ int __fmt(void *fn, void *arg, const char *format, va_list va) { sign = '-'; } if ((width -= bw + 5) > 0) { - if (sign) --width; - if (prec1 || (flags & FLAGS_HASH)) --width; + if (sign) + --width; + if (prec1 || (flags & FLAGS_HASH)) + --width; } if ((width -= MAX(prec, prec1)) > 0 && !(flags & FLAGS_LEFT) && !(flags & FLAGS_ZEROPAD)) { - do __FMT_PUT(' '); + do + __FMT_PUT(' '); while (--width > 0); } - if (sign) __FMT_PUT(sign); + if (sign) + __FMT_PUT(sign); __FMT_PUT('0'); __FMT_PUT(alphabet[17]); // x or X if ((flags & FLAGS_ZEROPAD) && width > 0 && !(flags & FLAGS_LEFT)) { - do __FMT_PUT('0'); + do + __FMT_PUT('0'); while (--width > 0); } i1 = prec1 & 7; @@ -1340,7 +1429,8 @@ int __fmt(void *fn, void *arg, const char *format, va_list va) { } while (prec1 > 0) { if (--i1 < 0) { - if (--k < 0) break; + if (--k < 0) + break; i1 = 7; } __FMT_PUT(alphabet[(fpb.bits[k] >> 4 * i1) & 0xf]); @@ -1363,7 +1453,8 @@ int __fmt(void *fn, void *arg, const char *format, va_list va) { for (;;) { i1 = bex / c; __FMT_PUT('0' + i1); - if (!--bw) break; + if (!--bw) + break; bex -= i1 * c; bex *= 10; } diff --git a/libc/stdio/fputc_unlocked.c b/libc/stdio/fputc_unlocked.c index d4c38f340..5a3923032 100644 --- a/libc/stdio/fputc_unlocked.c +++ b/libc/stdio/fputc_unlocked.c @@ -33,7 +33,8 @@ int fputc_unlocked(int c, FILE *f) { return c & 255; } else { b = c; - if (!fwrite_unlocked(&b, 1, 1, f)) return -1; + if (!fwrite_unlocked(&b, 1, 1, f)) + return -1; return b; } } diff --git a/libc/stdio/fputs_unlocked.c b/libc/stdio/fputs_unlocked.c index 39285789d..61dc0c31a 100644 --- a/libc/stdio/fputs_unlocked.c +++ b/libc/stdio/fputs_unlocked.c @@ -34,6 +34,7 @@ int fputs_unlocked(const char *s, FILE *f) { size_t n, r; n = strlen(s); r = fwrite_unlocked(s, 1, n, f); - if (!r && n) return -1; + if (!r && n) + return -1; return r; } diff --git a/libc/stdio/fread_unlocked.c b/libc/stdio/fread_unlocked.c index b71a19c1f..eac24b6e3 100644 --- a/libc/stdio/fread_unlocked.c +++ b/libc/stdio/fread_unlocked.c @@ -97,7 +97,8 @@ size_t fread_unlocked(void *buf, size_t stride, size_t count, FILE *f) { return count; } else { n = (m + n) / stride; - if (n < count) f->state = -1; + if (n < count) + f->state = -1; return n; } } diff --git a/libc/stdio/fseek_unlocked.c b/libc/stdio/fseek_unlocked.c index 4ec7bbcda..6703a59ec 100644 --- a/libc/stdio/fseek_unlocked.c +++ b/libc/stdio/fseek_unlocked.c @@ -40,7 +40,8 @@ int fseek_unlocked(FILE *f, int64_t offset, int whence) { int res; int64_t pos; if (f->fd != -1) { - if (__fflush_impl(f) == -1) return -1; + if (__fflush_impl(f) == -1) + return -1; if (whence == SEEK_CUR && f->beg < f->end) { offset -= f->end - f->beg; } diff --git a/libc/stdio/ftell.c b/libc/stdio/ftell.c index 003819b97..7330e35d6 100644 --- a/libc/stdio/ftell.c +++ b/libc/stdio/ftell.c @@ -26,9 +26,11 @@ static inline int64_t ftell_unlocked(FILE *f) { int64_t pos; if (f->fd != -1) { - if (__fflush_impl(f) == -1) return -1; + if (__fflush_impl(f) == -1) + return -1; if ((pos = lseek(f->fd, 0, SEEK_CUR)) != -1) { - if (f->beg < f->end) pos -= f->end - f->beg; + if (f->beg < f->end) + pos -= f->end - f->beg; return pos; } else { f->state = errno == ESPIPE ? EBADF : errno; diff --git a/libc/stdio/getcwd.c b/libc/stdio/getcwd.c index cd7ab2b7a..5a5c01809 100644 --- a/libc/stdio/getcwd.c +++ b/libc/stdio/getcwd.c @@ -49,7 +49,8 @@ char *getcwd(char *buf, size_t size) { return 0; } } else { - if (!size) size = 4096; + if (!size) + size = 4096; if (!(path = malloc(size))) { return 0; // enomem } diff --git a/libc/stdio/getdelim_unlocked.c b/libc/stdio/getdelim_unlocked.c index 11970dd0a..036017097 100644 --- a/libc/stdio/getdelim_unlocked.c +++ b/libc/stdio/getdelim_unlocked.c @@ -40,7 +40,8 @@ ssize_t getdelim_unlocked(char **s, size_t *n, int delim, FILE *f) { f->state = errno = EINVAL; return -1; } - if (!*s) *n = 0; + if (!*s) + *n = 0; for (i = 0;; i += m) { m = f->end - f->beg; if ((p = memchr(f->buf + f->beg, delim, m))) { @@ -67,7 +68,8 @@ ssize_t getdelim_unlocked(char **s, size_t *n, int delim, FILE *f) { } else if (f->fd == -1) { break; } else if ((rc = read(f->fd, f->buf, f->size)) != -1) { - if (!rc) break; + if (!rc) + break; f->end = rc; } else if (errno != EINTR) { f->state = errno; diff --git a/libc/stdio/getentropy.c b/libc/stdio/getentropy.c index a028053d4..ec2e68570 100644 --- a/libc/stdio/getentropy.c +++ b/libc/stdio/getentropy.c @@ -42,12 +42,14 @@ int getentropy(void *p, size_t n) { } else if ((!p && n) || (IsAsan() && !__asan_is_valid(p, n))) { rc = efault(); } else if (IsXnu() || IsOpenbsd()) { - if (sys_getentropy(p, n)) notpossible; + if (sys_getentropy(p, n)) + notpossible; rc = 0; } else { BLOCK_SIGNALS; BLOCK_CANCELATION; - if (__getrandom(p, n, 0) != n) notpossible; + if (__getrandom(p, n, 0) != n) + notpossible; ALLOW_CANCELATION; ALLOW_SIGNALS; rc = 0; diff --git a/libc/stdio/kvappendf.c b/libc/stdio/kvappendf.c index 9dfa79edd..5c171a1c4 100644 --- a/libc/stdio/kvappendf.c +++ b/libc/stdio/kvappendf.c @@ -46,8 +46,10 @@ ssize_t kvappendf(char **b, const char *f, va_list v) { if ((r = kvsnprintf(p + z.i, z.n ? z.n - W - z.i : 0, f, v)) >= 0) { n = ROUNDUP(z.i + r + 1, 8) + W; if (n > z.n) { - if (!z.n) z.n = W * 2; - while (n > z.n) z.n += z.n >> 1; + if (!z.n) + z.n = W * 2; + while (n > z.n) + z.n += z.n >> 1; z.n = ROUNDUP(z.n, W); if ((p = realloc(p, z.n))) { z.n = malloc_usable_size(p); @@ -61,7 +63,8 @@ ssize_t kvappendf(char **b, const char *f, va_list v) { } } z.i += r; - if (!IsTiny() && W == 8) z.i |= (size_t)APPEND_COOKIE << 48; + if (!IsTiny() && W == 8) + z.i |= (size_t)APPEND_COOKIE << 48; *(size_t *)(p + z.n - W) = z.i; } va_end(w); diff --git a/libc/stdio/mt19937.c b/libc/stdio/mt19937.c index 8a4b8b8d2..72fd5fce7 100644 --- a/libc/stdio/mt19937.c +++ b/libc/stdio/mt19937.c @@ -100,13 +100,16 @@ void _Smt19937(uint64_t K[], size_t n) { for (i = 1, j = 0, k = MAX(NN, n); k; k--) { mt[i] = (mt[i] ^ ((mt[i - 1] ^ (mt[i - 1] >> 62)) * 0x369dea0f31a53f85)) + K[j] + j; - if (++i >= NN) mt[0] = mt[NN - 1], i = 1; - if (++j >= n) j = 0; + if (++i >= NN) + mt[0] = mt[NN - 1], i = 1; + if (++j >= n) + j = 0; } for (k = NN - 1; k; k--) { mt[i] = (mt[i] ^ ((mt[i - 1] ^ (mt[i - 1] >> 62)) * 0x27bb2ee687b0b0fd)) - i; - if (++i >= NN) mt[0] = mt[NN - 1], i = 1; + if (++i >= NN) + mt[0] = mt[NN - 1], i = 1; } mt[0] = 0x8000000000000000; /* assures non-zero initial array */ } @@ -122,7 +125,8 @@ uint64_t _mt19937(void) { int i; uint64_t x; if (mti >= NN) { - if (mti == NN + 1) _smt19937(5489); + if (mti == NN + 1) + _smt19937(5489); for (i = 0; i < NN - MM; i++) { x = (mt[i] & UM) | (mt[i + 1] & LM); mt[i] = mt[i + MM] ^ (x >> 1) ^ mag01[x & 1]; diff --git a/libc/stdio/pclose.c b/libc/stdio/pclose.c index e83d7729a..2ed6ef434 100644 --- a/libc/stdio/pclose.c +++ b/libc/stdio/pclose.c @@ -42,7 +42,8 @@ int pclose(FILE *f) { bool iscancelled, wasinterrupted; pid = f->pid; fclose(f); - if (!pid) return 0; + if (!pid) + return 0; iscancelled = false; wasinterrupted = false; for (e = errno;;) { diff --git a/libc/stdio/popen.c b/libc/stdio/popen.c index 766ddcb00..d53d5a426 100644 --- a/libc/stdio/popen.c +++ b/libc/stdio/popen.c @@ -70,14 +70,17 @@ FILE *popen(const char *cmdline, const char *mode) { errno = rc; return 0; } - if (pipe2(pipefds, O_CLOEXEC) == -1) return NULL; + if (pipe2(pipefds, O_CLOEXEC) == -1) + return NULL; if ((f = fdopen(pipefds[dir], mode))) { switch ((pid = fork())) { case 0: unassert(dup2(pipefds[!dir], !dir) == !dir); // we can't rely on cloexec because cocmd builtins don't execve - if (pipefds[0] != !dir) unassert(!close(pipefds[0])); - if (pipefds[1] != !dir) unassert(!close(pipefds[1])); + if (pipefds[0] != !dir) + unassert(!close(pipefds[0])); + if (pipefds[1] != !dir) + unassert(!close(pipefds[1])); // "The popen() function shall ensure that any streams from // previous popen() calls that remain open in the parent // process are closed in the new child process." -POSIX diff --git a/libc/stdio/printargs.c b/libc/stdio/printargs.c index eb7dbac63..34b2c362f 100644 --- a/libc/stdio/printargs.c +++ b/libc/stdio/printargs.c @@ -187,7 +187,8 @@ textstartup void __printargs(const char *prologue) { (void)x; - if (!PLEDGED(STDIO)) return; + if (!PLEDGED(STDIO)) + return; ftrace_enabled(-1); strace_enabled(-1); @@ -263,25 +264,44 @@ textstartup void __printargs(const char *prologue) { }); kprintf(prologue); kprintf(" "); - if (X86_HAVE(SSE3)) kprintf(" SSE3"); - if (X86_HAVE(SSSE3)) kprintf(" SSSE3"); - if (X86_HAVE(SSE4_2)) kprintf(" SSE4_2"); - if (X86_HAVE(POPCNT)) kprintf(" POPCNT"); - if (X86_HAVE(AVX)) kprintf(" AVX"); - if (X86_HAVE(AVX2)) kprintf(" AVX2"); - if (X86_HAVE(FMA)) kprintf(" FMA"); - if (X86_HAVE(BMI)) kprintf(" BMI"); - if (X86_HAVE(BMI2)) kprintf(" BMI2"); - if (X86_HAVE(ADX)) kprintf(" ADX"); - if (X86_HAVE(F16C)) kprintf(" F16C"); - if (X86_HAVE(SHA)) kprintf(" SHA"); - if (X86_HAVE(AES)) kprintf(" AES"); - if (X86_HAVE(RDRND)) kprintf(" RDRND"); - if (X86_HAVE(RDSEED)) kprintf(" RDSEED"); - if (X86_HAVE(RDTSCP)) kprintf(" RDTSCP"); - if (X86_HAVE(RDPID)) kprintf(" RDPID"); - if (X86_HAVE(LA57)) kprintf(" LA57"); - if (X86_HAVE(FSGSBASE)) kprintf(" FSGSBASE"); + if (X86_HAVE(SSE3)) + kprintf(" SSE3"); + if (X86_HAVE(SSSE3)) + kprintf(" SSSE3"); + if (X86_HAVE(SSE4_2)) + kprintf(" SSE4_2"); + if (X86_HAVE(POPCNT)) + kprintf(" POPCNT"); + if (X86_HAVE(AVX)) + kprintf(" AVX"); + if (X86_HAVE(AVX2)) + kprintf(" AVX2"); + if (X86_HAVE(FMA)) + kprintf(" FMA"); + if (X86_HAVE(BMI)) + kprintf(" BMI"); + if (X86_HAVE(BMI2)) + kprintf(" BMI2"); + if (X86_HAVE(ADX)) + kprintf(" ADX"); + if (X86_HAVE(F16C)) + kprintf(" F16C"); + if (X86_HAVE(SHA)) + kprintf(" SHA"); + if (X86_HAVE(AES)) + kprintf(" AES"); + if (X86_HAVE(RDRND)) + kprintf(" RDRND"); + if (X86_HAVE(RDSEED)) + kprintf(" RDSEED"); + if (X86_HAVE(RDTSCP)) + kprintf(" RDTSCP"); + if (X86_HAVE(RDPID)) + kprintf(" RDPID"); + if (X86_HAVE(LA57)) + kprintf(" LA57"); + if (X86_HAVE(FSGSBASE)) + kprintf(" FSGSBASE"); #elif defined(__aarch64__) kprintf(" AARCH64\n"); #else @@ -297,7 +317,8 @@ textstartup void __printargs(const char *prologue) { if ((n = poll(u.pfds, ARRAYLEN(u.pfds), 0)) != -1) { for (i = 0; i < ARRAYLEN(u.pfds); ++i) { char oflagbuf[128]; - if (i && (u.pfds[i].revents & POLLNVAL)) continue; + if (i && (u.pfds[i].revents & POLLNVAL)) + continue; PRINT(" ☼ %d (revents=%#hx fcntl(F_GETFL)=%s isatty()=%hhhd)", i, u.pfds[i].revents, (DescribeOpenFlags)(oflagbuf, fcntl(i, F_GETFL)), isatty(i)); @@ -364,8 +385,10 @@ textstartup void __printargs(const char *prologue) { for (gotsome = false, i = 0; i < RLIM_NLIMITS; ++i) { if (!getrlimit(i, &rlim)) { char buf[20]; - if (rlim.rlim_cur == RLIM_INFINITY) rlim.rlim_cur = -1; - if (rlim.rlim_max == RLIM_INFINITY) rlim.rlim_max = -1; + if (rlim.rlim_cur == RLIM_INFINITY) + rlim.rlim_cur = -1; + if (rlim.rlim_max == RLIM_INFINITY) + rlim.rlim_max = -1; PRINT(" ☼ %-20s %,16ld %,16ld", (DescribeRlimitName)(buf, i), rlim.rlim_cur, rlim.rlim_max); gotsome = true; @@ -488,32 +511,55 @@ textstartup void __printargs(const char *prologue) { } kprintf(prologue); kprintf(" c_iflag ="); - if (termios.c_iflag & IGNBRK) kprintf(" IGNBRK"); - if (termios.c_iflag & BRKINT) kprintf(" BRKINT"); - if (termios.c_iflag & IGNPAR) kprintf(" IGNPAR"); - if (termios.c_iflag & PARMRK) kprintf(" PARMRK"); - if (termios.c_iflag & INPCK) kprintf(" INPCK"); - if (termios.c_iflag & ISTRIP) kprintf(" ISTRIP"); - if (termios.c_iflag & INLCR) kprintf(" INLCR"); - if (termios.c_iflag & IGNCR) kprintf(" IGNCR"); - if (termios.c_iflag & ICRNL) kprintf(" ICRNL"); - if (termios.c_iflag & IXON) kprintf(" IXON"); - if (termios.c_iflag & IXANY) kprintf(" IXANY"); - if (termios.c_iflag & IXOFF) kprintf(" IXOFF"); - if (termios.c_iflag & IMAXBEL) kprintf(" IMAXBEL"); - if (termios.c_iflag & IUTF8) kprintf(" IUTF8"); - if (termios.c_iflag & IUCLC) kprintf(" IUCLC"); + if (termios.c_iflag & IGNBRK) + kprintf(" IGNBRK"); + if (termios.c_iflag & BRKINT) + kprintf(" BRKINT"); + if (termios.c_iflag & IGNPAR) + kprintf(" IGNPAR"); + if (termios.c_iflag & PARMRK) + kprintf(" PARMRK"); + if (termios.c_iflag & INPCK) + kprintf(" INPCK"); + if (termios.c_iflag & ISTRIP) + kprintf(" ISTRIP"); + if (termios.c_iflag & INLCR) + kprintf(" INLCR"); + if (termios.c_iflag & IGNCR) + kprintf(" IGNCR"); + if (termios.c_iflag & ICRNL) + kprintf(" ICRNL"); + if (termios.c_iflag & IXON) + kprintf(" IXON"); + if (termios.c_iflag & IXANY) + kprintf(" IXANY"); + if (termios.c_iflag & IXOFF) + kprintf(" IXOFF"); + if (termios.c_iflag & IMAXBEL) + kprintf(" IMAXBEL"); + if (termios.c_iflag & IUTF8) + kprintf(" IUTF8"); + if (termios.c_iflag & IUCLC) + kprintf(" IUCLC"); kprintf("\n"); kprintf(prologue); kprintf(" c_oflag ="); - if (termios.c_oflag & OPOST) kprintf(" OPOST"); - if (termios.c_oflag & ONLCR) kprintf(" ONLCR"); - if (termios.c_oflag & OCRNL) kprintf(" OCRNL"); - if (termios.c_oflag & ONOCR) kprintf(" ONOCR"); - if (termios.c_oflag & ONLRET) kprintf(" ONLRET"); - if (termios.c_oflag & OFILL) kprintf(" OFILL"); - if (termios.c_oflag & OFDEL) kprintf(" OFDEL"); - if (termios.c_oflag & OLCUC) kprintf(" OLCUC"); + if (termios.c_oflag & OPOST) + kprintf(" OPOST"); + if (termios.c_oflag & ONLCR) + kprintf(" ONLCR"); + if (termios.c_oflag & OCRNL) + kprintf(" OCRNL"); + if (termios.c_oflag & ONOCR) + kprintf(" ONOCR"); + if (termios.c_oflag & ONLRET) + kprintf(" ONLRET"); + if (termios.c_oflag & OFILL) + kprintf(" OFILL"); + if (termios.c_oflag & OFDEL) + kprintf(" OFDEL"); + if (termios.c_oflag & OLCUC) + kprintf(" OLCUC"); if ((termios.c_oflag & NLDLY) == NL1) { kprintf(" NL1"); } else if ((termios.c_oflag & NLDLY) == NL2) { @@ -547,13 +593,20 @@ textstartup void __printargs(const char *prologue) { kprintf("\n"); kprintf(prologue); kprintf(" c_cflag ="); - if (termios.c_cflag & PARENB) kprintf(" PARENB"); - if (termios.c_cflag & PARODD) kprintf(" PARODD"); - if (termios.c_cflag & CSTOPB) kprintf(" CSTOPB"); - if (termios.c_cflag & PARODD) kprintf(" PARODD"); - if (termios.c_cflag & HUPCL) kprintf(" HUPCL"); - if (termios.c_cflag & CREAD) kprintf(" CREAD"); - if (termios.c_cflag & CLOCAL) kprintf(" CLOCAL"); + if (termios.c_cflag & PARENB) + kprintf(" PARENB"); + if (termios.c_cflag & PARODD) + kprintf(" PARODD"); + if (termios.c_cflag & CSTOPB) + kprintf(" CSTOPB"); + if (termios.c_cflag & PARODD) + kprintf(" PARODD"); + if (termios.c_cflag & HUPCL) + kprintf(" HUPCL"); + if (termios.c_cflag & CREAD) + kprintf(" CREAD"); + if (termios.c_cflag & CLOCAL) + kprintf(" CLOCAL"); if ((termios.c_cflag & CSIZE) == CS5) { kprintf(" CS5"); } else if ((termios.c_cflag & CSIZE) == CS6) { @@ -566,21 +619,36 @@ textstartup void __printargs(const char *prologue) { kprintf("\n"); kprintf(prologue); kprintf(" c_lflag ="); - if (termios.c_lflag & ISIG) kprintf(" ISIG"); - if (termios.c_lflag & ICANON) kprintf(" ICANON"); - if (termios.c_lflag & ECHO) kprintf(" ECHO"); - if (termios.c_lflag & ECHOE) kprintf(" ECHOE"); - if (termios.c_lflag & ECHOK) kprintf(" ECHOK"); - if (termios.c_lflag & ECHONL) kprintf(" ECHONL"); - if (termios.c_lflag & NOFLSH) kprintf(" NOFLSH"); - if (termios.c_lflag & TOSTOP) kprintf(" TOSTOP"); - if (termios.c_lflag & IEXTEN) kprintf(" IEXTEN"); - if (termios.c_lflag & ECHOCTL) kprintf(" ECHOCTL"); - if (termios.c_lflag & ECHOPRT) kprintf(" ECHOPRT"); - if (termios.c_lflag & ECHOKE) kprintf(" ECHOKE"); - if (termios.c_lflag & FLUSHO) kprintf(" FLUSHO"); - if (termios.c_lflag & PENDIN) kprintf(" PENDIN"); - if (termios.c_lflag & XCASE) kprintf(" XCASE"); + if (termios.c_lflag & ISIG) + kprintf(" ISIG"); + if (termios.c_lflag & ICANON) + kprintf(" ICANON"); + if (termios.c_lflag & ECHO) + kprintf(" ECHO"); + if (termios.c_lflag & ECHOE) + kprintf(" ECHOE"); + if (termios.c_lflag & ECHOK) + kprintf(" ECHOK"); + if (termios.c_lflag & ECHONL) + kprintf(" ECHONL"); + if (termios.c_lflag & NOFLSH) + kprintf(" NOFLSH"); + if (termios.c_lflag & TOSTOP) + kprintf(" TOSTOP"); + if (termios.c_lflag & IEXTEN) + kprintf(" IEXTEN"); + if (termios.c_lflag & ECHOCTL) + kprintf(" ECHOCTL"); + if (termios.c_lflag & ECHOPRT) + kprintf(" ECHOPRT"); + if (termios.c_lflag & ECHOKE) + kprintf(" ECHOKE"); + if (termios.c_lflag & FLUSHO) + kprintf(" FLUSHO"); + if (termios.c_lflag & PENDIN) + kprintf(" PENDIN"); + if (termios.c_lflag & XCASE) + kprintf(" XCASE"); kprintf("\n"); PRINT(" cfgetispeed() = %u", cfgetispeed(&termios)); PRINT(" cfgetospeed() = %u", cfgetospeed(&termios)); diff --git a/libc/stdio/puts_unlocked.c b/libc/stdio/puts_unlocked.c index 14752ccaa..5e5d2c38a 100644 --- a/libc/stdio/puts_unlocked.c +++ b/libc/stdio/puts_unlocked.c @@ -29,11 +29,14 @@ int puts_unlocked(const char *s) { size_t n, r; if ((n = strlen(s))) { r = fwrite_unlocked(s, 1, n, stdout); - if (!r) return -1; - if (r < n) return r; + if (!r) + return -1; + if (r < n) + return r; } if (fputc_unlocked('\n', stdout) == -1) { - if (feof_unlocked(stdout)) return n; + if (feof_unlocked(stdout)) + return n; return -1; } return n + 1; diff --git a/libc/stdio/random.c b/libc/stdio/random.c index aa78e31c9..7d1ef0bf8 100644 --- a/libc/stdio/random.c +++ b/libc/stdio/random.c @@ -87,7 +87,8 @@ void srandom(unsigned seed) { char *initstate(unsigned seed, char *state, size_t size) { void *old; - if (size < 8) return 0; + if (size < 8) + return 0; old = savestate(); if (size < 32) { n = 0; @@ -115,10 +116,13 @@ char *setstate(char *state) { long random(void) { long k; - if (!n) return (x[0] = lcg31(x[0])); + if (!n) + return (x[0] = lcg31(x[0])); x[i] += x[j]; k = x[i] >> 1; - if (++i == n) i = 0; - if (++j == n) j = 0; + if (++i == n) + i = 0; + if (++j == n) + j = 0; return k; } diff --git a/libc/stdio/rdseed.c b/libc/stdio/rdseed.c index 4cde60469..f5b2375a0 100644 --- a/libc/stdio/rdseed.c +++ b/libc/stdio/rdseed.c @@ -48,7 +48,8 @@ uint64_t rdseed(void) { : CFLAG_CONSTRAINT(cf), "=r"(x) : /* no inputs */ : "cc"); - if (cf) return x; + if (cf) + return x; asm volatile("pause"); } } diff --git a/libc/stdio/rngset.c b/libc/stdio/rngset.c index 881eb9fa1..ff0c6274d 100644 --- a/libc/stdio/rngset.c +++ b/libc/stdio/rngset.c @@ -52,7 +52,8 @@ dontasan void *rngset(void *b, size_t n, uint64_t seed(void), size_t reseed) { reseed = 8; } while (n) { - if (seed) t = seed(); + if (seed) + t = seed(); if (!seed || reseed > 8) { n -= (m = reseed < n ? reseed : n); while (m >= 8) { diff --git a/libc/stdio/setvbuf.c b/libc/stdio/setvbuf.c index 4dd749baf..6be7ca74b 100644 --- a/libc/stdio/setvbuf.c +++ b/libc/stdio/setvbuf.c @@ -36,7 +36,8 @@ int setvbuf(FILE *f, char *buf, int mode, size_t size) { flockfile(f); if (buf) { - if (!size) size = BUFSIZ; + if (!size) + size = BUFSIZ; if (!f->nofree && // f->buf != buf && // f->buf != f->mem && // diff --git a/libc/stdio/sortstrlist.c b/libc/stdio/sortstrlist.c index 0f6eede77..db80e5fc7 100644 --- a/libc/stdio/sortstrlist.c +++ b/libc/stdio/sortstrlist.c @@ -23,7 +23,8 @@ static int CompareStrings(const void *p1, const void *p2) { const char *a = *(const char **)p1; const char *b = *(const char **)p2; for (; *a == *b; a++, b++) { - if (!*a) break; + if (!*a) + break; } return (*a & 0xff) - (*b & 0xff); } diff --git a/libc/stdio/ungetc_unlocked.c b/libc/stdio/ungetc_unlocked.c index 853ff8d26..ce9f14920 100644 --- a/libc/stdio/ungetc_unlocked.c +++ b/libc/stdio/ungetc_unlocked.c @@ -24,7 +24,8 @@ * Pushes byte back to stream. */ int ungetc_unlocked(int c, FILE *f) { - if (c == -1) return -1; + if (c == -1) + return -1; if (f->beg) { if (c != f->buf[--f->beg]) { f->buf[f->beg] = c; diff --git a/libc/stdio/ungetwc_unlocked.c b/libc/stdio/ungetwc_unlocked.c index b802971f9..88e256366 100644 --- a/libc/stdio/ungetwc_unlocked.c +++ b/libc/stdio/ungetwc_unlocked.c @@ -27,7 +27,8 @@ wint_t ungetwc_unlocked(wint_t c, FILE *f) { char b[6]; unsigned n; uint64_t w; - if (c == -1) return -1; + if (c == -1) + return -1; n = 0; w = tpenc(c); do { diff --git a/libc/stdio/vappendf.c b/libc/stdio/vappendf.c index ca2b3ff86..726e59450 100644 --- a/libc/stdio/vappendf.c +++ b/libc/stdio/vappendf.c @@ -39,8 +39,10 @@ ssize_t(vappendf)(char **b, const char *f, va_list v) { if ((r = (vsnprintf)(p + z.i, z.n ? z.n - W - z.i : 0, f, v)) >= 0) { n = ROUNDUP(z.i + r + 1, 8) + W; if (n > z.n) { - if (!z.n) z.n = W * 2; - while (n > z.n) z.n += z.n >> 1; + if (!z.n) + z.n = W * 2; + while (n > z.n) + z.n += z.n >> 1; z.n = ROUNDUP(z.n, W); if ((p = realloc(p, z.n))) { z.n = malloc_usable_size(p); @@ -54,7 +56,8 @@ ssize_t(vappendf)(char **b, const char *f, va_list v) { } } z.i += r; - if (!IsTiny() && W == 8) z.i |= (size_t)APPEND_COOKIE << 48; + if (!IsTiny() && W == 8) + z.i |= (size_t)APPEND_COOKIE << 48; *(size_t *)(p + z.n - W) = z.i; } va_end(w); diff --git a/libc/stdio/vcscanf.c b/libc/stdio/vcscanf.c index f58f21e74..e37b374ed 100644 --- a/libc/stdio/vcscanf.c +++ b/libc/stdio/vcscanf.c @@ -29,11 +29,12 @@ #include "libc/sysv/errfuns.h" #include "third_party/gdtoa/gdtoa.h" -#define READ \ - ({ \ - int c = callback(arg); \ - if (c != -1) ++consumed; \ - c; \ +#define READ \ + ({ \ + int c = callback(arg); \ + if (c != -1) \ + ++consumed; \ + c; \ }) #define FP_BUFFER_GROW 48 @@ -150,7 +151,8 @@ int __vcscanf(int callback(void *), // break; case 'c': rawmode = true; - if (!width) width = 1; + if (!width) + width = 1; // fallthrough case 's': while (isspace(c)) { @@ -574,7 +576,8 @@ int __vcscanf(int callback(void *), // buf = NULL; } else { do { - if (isspace(c)) break; + if (isspace(c)) + break; } while ((c = READ) != -1); } break; @@ -589,9 +592,11 @@ Done: while (freeme) { struct FreeMe *entry = freeme; freeme = entry->next; - if (items == -1) free(entry->ptr); + if (items == -1) + free(entry->ptr); free(entry); } - if (fpbuf) free(fpbuf); + if (fpbuf) + free(fpbuf); return items; } diff --git a/libc/stdio/vdprintf.c b/libc/stdio/vdprintf.c index 39ac6873a..8dd53830d 100644 --- a/libc/stdio/vdprintf.c +++ b/libc/stdio/vdprintf.c @@ -63,7 +63,8 @@ int vdprintf(int fd, const char *fmt, va_list va) { t.n = 0; t.t = 0; t.fd = fd; - if (__fmt(vdprintf_putc, &t, fmt, va) == -1) return -1; + if (__fmt(vdprintf_putc, &t, fmt, va) == -1) + return -1; if (t.n) { iov[0].iov_base = t.b; iov[0].iov_len = t.n; diff --git a/libc/stdio/vsnprintf.c b/libc/stdio/vsnprintf.c index 4edffd902..cdc7d3521 100644 --- a/libc/stdio/vsnprintf.c +++ b/libc/stdio/vsnprintf.c @@ -59,7 +59,9 @@ static int vsnprintfputchar(const char *s, struct SprintfStr *t, size_t n) { int vsnprintf(char *buf, size_t size, const char *fmt, va_list va) { struct SprintfStr str = {buf, 0, size}; int rc = __fmt(vsnprintfputchar, &str, fmt, va); - if (rc < 0) return rc; - if (str.n) str.p[MIN(str.i, str.n - 1)] = '\0'; + if (rc < 0) + return rc; + if (str.n) + str.p[MIN(str.i, str.n - 1)] = '\0'; return str.i; } diff --git a/libc/str/a64l.c b/libc/str/a64l.c index 459221e1a..7b1b4f784 100644 --- a/libc/str/a64l.c +++ b/libc/str/a64l.c @@ -46,7 +46,8 @@ long a64l(const char *s) { uint32_t i, v, x; for (x = i = 0; i < 6; ++i) { v = kBase64i[s[i] & 0xff]; - if (v == -1) break; + if (v == -1) + break; x |= v << (i * 6); } return (int32_t)x; diff --git a/libc/str/blake2.c b/libc/str/blake2.c index 362a198da..acbeb1b70 100644 --- a/libc/str/blake2.c +++ b/libc/str/blake2.c @@ -117,7 +117,8 @@ int BLAKE2B256_Update(struct Blake2b *b2b, const void *in_data, size_t len) { if (todo > len) { todo = len; } - if (todo) memcpy(&b2b->block.bytes[b2b->block_used], data, todo); + if (todo) + memcpy(&b2b->block.bytes[b2b->block_used], data, todo); b2b->block_used += todo; data += todo; len -= todo; @@ -136,7 +137,8 @@ int BLAKE2B256_Update(struct Blake2b *b2b, const void *in_data, size_t len) { data += BLAKE2B_CBLOCK; len -= BLAKE2B_CBLOCK; } - if (len) memcpy(b2b->block.bytes, data, len); + if (len) + memcpy(b2b->block.bytes, data, len); b2b->block_used = len; return 0; } diff --git a/libc/str/c16rtomb.c b/libc/str/c16rtomb.c index 34406401e..546f40741 100644 --- a/libc/str/c16rtomb.c +++ b/libc/str/c16rtomb.c @@ -34,11 +34,13 @@ __static_yoink("musl_libc_notice"); size_t c16rtomb(char *restrict s, char16_t c16, mbstate_t *restrict ps) { static unsigned internal_state; - if (!ps) ps = (void *)&internal_state; + if (!ps) + ps = (void *)&internal_state; unsigned *x = (unsigned *)ps; wchar_t wc; if (!s) { - if (*x) goto ilseq; + if (*x) + goto ilseq; return 1; } if (!*x && c16 - 0xd800u < 0x400) { diff --git a/libc/str/compareslices.c b/libc/str/compareslices.c index 5bea6bf11..b57b902a6 100644 --- a/libc/str/compareslices.c +++ b/libc/str/compareslices.c @@ -21,8 +21,11 @@ int CompareSlices(const char *a, size_t n, const char *b, size_t m) { int c; - if ((c = memcmp(a, b, MIN(n, m)))) return c; - if (n < m) return -1; - if (n > m) return +1; + if ((c = memcmp(a, b, MIN(n, m)))) + return c; + if (n < m) + return -1; + if (n > m) + return +1; return 0; } diff --git a/libc/str/compareslicescase.c b/libc/str/compareslicescase.c index 49e436655..a4f881450 100644 --- a/libc/str/compareslicescase.c +++ b/libc/str/compareslicescase.c @@ -21,8 +21,11 @@ int CompareSlicesCase(const char *a, size_t n, const char *b, size_t m) { int c; - if ((c = memcasecmp(a, b, MIN(n, m)))) return c; - if (n < m) return -1; - if (n > m) return +1; + if ((c = memcasecmp(a, b, MIN(n, m)))) + return c; + if (n < m) + return -1; + if (n > m) + return +1; return 0; } diff --git a/libc/str/endswith.c b/libc/str/endswith.c index bb1eb813d..04d58ee1a 100644 --- a/libc/str/endswith.c +++ b/libc/str/endswith.c @@ -28,6 +28,7 @@ bool32 endswith(const char *s, const char *suffix) { size_t n, m; n = strlen(s); m = strlen(suffix); - if (m > n) return false; + if (m > n) + return false; return !memcmp(s + n - m, suffix, m); } diff --git a/libc/str/endswith16.c b/libc/str/endswith16.c index 9d26484a1..a12523050 100644 --- a/libc/str/endswith16.c +++ b/libc/str/endswith16.c @@ -28,6 +28,7 @@ bool32 endswith16(const char16_t *s, const char16_t *suffix) { size_t n, m; n = strlen16(s); m = strlen16(suffix); - if (m > n) return false; + if (m > n) + return false; return memcmp(s + n - m, suffix, m * sizeof(char16_t)) == 0; } diff --git a/libc/str/getzipcfiletimestamps.c b/libc/str/getzipcfiletimestamps.c index da058f9ab..0a06b6992 100644 --- a/libc/str/getzipcfiletimestamps.c +++ b/libc/str/getzipcfiletimestamps.c @@ -36,9 +36,12 @@ void GetZipCfileTimestamps(const uint8_t *cf, struct timespec *mtim, struct timespec *atim, struct timespec *ctim, int gmtoff) { const uint8_t *p, *pe; - if (mtim) *mtim = (struct timespec){0}; - if (atim) *atim = (struct timespec){0}; - if (ctim) *ctim = (struct timespec){0}; + if (mtim) + *mtim = (struct timespec){0}; + if (atim) + *atim = (struct timespec){0}; + if (ctim) + *ctim = (struct timespec){0}; for (p = ZIP_CFILE_EXTRA(cf), pe = p + ZIP_CFILE_EXTRASIZE(cf); p + 4 <= pe; p += ZIP_EXTRA_SIZE(p)) { if (ZIP_EXTRA_HEADERID(p) == kZipExtraNtfs && @@ -88,8 +91,10 @@ void GetZipCfileTimestamps(const uint8_t *cf, struct timespec *mtim, p += ZIP_EXTRA_SIZE(p)) { if (ZIP_EXTRA_HEADERID(p) == kZipExtraUnix && ZIP_EXTRA_CONTENTSIZE(p) >= 4 + 4) { - if (atim) atim->tv_sec = (int32_t)ZIP_READ32(ZIP_EXTRA_CONTENT(p) + 0); - if (mtim) mtim->tv_sec = (int32_t)ZIP_READ32(ZIP_EXTRA_CONTENT(p) + 4); + if (atim) + atim->tv_sec = (int32_t)ZIP_READ32(ZIP_EXTRA_CONTENT(p) + 0); + if (mtim) + mtim->tv_sec = (int32_t)ZIP_READ32(ZIP_EXTRA_CONTENT(p) + 4); return; } } diff --git a/libc/str/getzipeocd.c b/libc/str/getzipeocd.c index 3b9677c6c..ee862cc19 100644 --- a/libc/str/getzipeocd.c +++ b/libc/str/getzipeocd.c @@ -83,6 +83,7 @@ void *GetZipEocd(const void *f, size_t n, int *e) { return (void *)(p + i); } } while (i > 0 && i-- + 0x10000 + 0x1000 >= n); - if (e) *e = err; + if (e) + *e = err; return 0; } diff --git a/libc/str/highwayhash64.c b/libc/str/highwayhash64.c index 5cd7581a3..7041f7052 100644 --- a/libc/str/highwayhash64.c +++ b/libc/str/highwayhash64.c @@ -137,7 +137,8 @@ static void PermuteAndUpdate(HighwayHashState *state) { static uint64_t HighwayHashFinalize64(HighwayHashState *state) { int i; - for (i = 0; i < 4; i++) PermuteAndUpdate(state); + for (i = 0; i < 4; i++) + PermuteAndUpdate(state); return state->v0[0] + state->v1[0] + state->mul0[0] + state->mul1[0]; } @@ -148,7 +149,8 @@ static void ProcessAll(const uint8_t *data, size_t size, const uint64_t key[4], for (i = 0; i + 32 <= size; i += 32) { HighwayHashUpdatePacket(data + i, state); } - if ((size & 31) != 0) HighwayHashUpdateRemainder(data + i, size & 31, state); + if ((size & 31) != 0) + HighwayHashUpdateRemainder(data + i, size & 31, state); } /** diff --git a/libc/str/intsort.c b/libc/str/intsort.c index abfd12e79..335b7f98d 100644 --- a/libc/str/intsort.c +++ b/libc/str/intsort.c @@ -39,9 +39,12 @@ static void IntSort(int *A, long n) { InsertionSort(A, n); } else { for (p = A[n >> 1], i = 0, j = n - 1;; i++, j--) { - while (A[i] < p) i++; - while (A[j] > p) j--; - if (i >= j) break; + while (A[i] < p) + i++; + while (A[j] > p) + j--; + if (i >= j) + break; t = A[i]; A[i] = A[j]; A[j] = t; diff --git a/libc/str/isutf8.c b/libc/str/isutf8.c index ddca5e330..30f9600cd 100644 --- a/libc/str/isutf8.c +++ b/libc/str/isutf8.c @@ -51,7 +51,8 @@ static const char kUtf8Dispatch[] = { bool32 isutf8(const void *data, size_t size) { long c; const char *p, *e; - if (size == -1) size = data ? strlen(data) : 0; + if (size == -1) + size = data ? strlen(data) : 0; p = data; e = p + size; while (p < e) { @@ -74,8 +75,10 @@ bool32 isutf8(const void *data, size_t size) { } } #endif - if (LIKELY((c = *p++ & 255) < 0200)) continue; - if (UNLIKELY(c < 0300)) return false; + if (LIKELY((c = *p++ & 255) < 0200)) + continue; + if (UNLIKELY(c < 0300)) + return false; switch (kUtf8Dispatch[c - 0300]) { case 0: return false; diff --git a/libc/str/iswlower.c b/libc/str/iswlower.c index dece35ae2..aba9180c6 100644 --- a/libc/str/iswlower.c +++ b/libc/str/iswlower.c @@ -25,7 +25,8 @@ int iswlower(wint_t c) { if (c < 0200) { return 'a' <= c && c <= 'z'; } else { - if (towupper(c) != c) return 1; + if (towupper(c) != c) + return 1; switch (c) { case 0x00df: /* ß Watin */ case 0x0138: /* ĸ Watin-A */ diff --git a/libc/str/iswupper.c b/libc/str/iswupper.c index ee5af5624..f965d51a6 100644 --- a/libc/str/iswupper.c +++ b/libc/str/iswupper.c @@ -25,7 +25,8 @@ int iswupper(wint_t c) { if (c < 0200) { return 'A' <= c && c <= 'Z'; } else { - if (towlower(c) != c) return 1; + if (towlower(c) != c) + return 1; switch (c) { case 0x03d2: /* ϒ Greek */ case 0x03d3: /* ϓ Greek */ diff --git a/libc/str/joinpaths.c b/libc/str/joinpaths.c index 6ff69eb54..43ae66656 100644 --- a/libc/str/joinpaths.c +++ b/libc/str/joinpaths.c @@ -41,8 +41,10 @@ char *__join_paths(char *buf, size_t size, const char *path, const char *other) { size_t pathlen, otherlen; - if (!other) return (char *)path; - if (!path) return (char *)other; + if (!other) + return (char *)path; + if (!path) + return (char *)other; pathlen = strlen(path); if (!pathlen || *other == '/') { return (/*unconst*/ char *)other; diff --git a/libc/str/longsort.c b/libc/str/longsort.c index 0fad01898..5ed1911cf 100644 --- a/libc/str/longsort.c +++ b/libc/str/longsort.c @@ -38,9 +38,12 @@ static void LongSort(long *A, long n) { InsertionSort(A, n); } else { for (p = A[n >> 1], i = 0, j = n - 1;; i++, j--) { - while (A[i] < p) i++; - while (A[j] > p) j--; - if (i >= j) break; + while (A[i] < p) + i++; + while (A[j] > p) + j--; + if (i >= j) + break; t = A[i]; A[i] = A[j]; A[j] = t; diff --git a/libc/str/lz4cpy.c b/libc/str/lz4cpy.c index 8897518fd..827a5226d 100644 --- a/libc/str/lz4cpy.c +++ b/libc/str/lz4cpy.c @@ -45,7 +45,8 @@ textstartup void *lz4cpy(void *dest, const void *blockdata, size_t blocksize) { } while (*ip++ == 255); } repmovsb((void **)&op, (const void **)&ip, length); - if (ip >= ipe) break; + if (ip >= ipe) + break; offset = READ16LE(ip); matchlen = token & fifteen; ip += 2; diff --git a/libc/str/lz4len.c b/libc/str/lz4len.c index a58019515..8dd0fcf04 100644 --- a/libc/str/lz4len.c +++ b/libc/str/lz4len.c @@ -41,7 +41,8 @@ size_t lz4len(const void *blockdata, size_t blocksize) { } ip += length; unpacklen += length; - if (ip >= ipe) break; + if (ip >= ipe) + break; matchlen = token & fifteen; ip += 2; if (matchlen == fifteen) { diff --git a/libc/str/mbrlen.c b/libc/str/mbrlen.c index d4e9e3e49..4f20fe1a0 100644 --- a/libc/str/mbrlen.c +++ b/libc/str/mbrlen.c @@ -20,6 +20,7 @@ size_t mbrlen(const char *s, size_t n, mbstate_t *t) { static mbstate_t ss; - if (!t) t = &ss; + if (!t) + t = &ss; return mbrtowc(0, s, n, t); } diff --git a/libc/str/mbrtoc16.c b/libc/str/mbrtoc16.c index 40d366118..492ae68b6 100644 --- a/libc/str/mbrtoc16.c +++ b/libc/str/mbrtoc16.c @@ -33,13 +33,16 @@ __static_yoink("musl_libc_notice"); size_t mbrtoc16(char16_t *pc16, const char *s, size_t n, mbstate_t *ps) { static unsigned internal_state; - if (!ps) ps = (void *)&internal_state; + if (!ps) + ps = (void *)&internal_state; unsigned *pending = (unsigned *)ps; - if (!s) return mbrtoc16(0, "", 1, ps); + if (!s) + return mbrtoc16(0, "", 1, ps); /* mbrtowc states for partial UTF-8 characters have the high bit set; * we use nonzero states without high bit for pending surrogates. */ if ((int)*pending > 0) { - if (pc16) *pc16 = *pending; + if (pc16) + *pc16 = *pending; *pending = 0; return -3; } @@ -50,7 +53,8 @@ size_t mbrtoc16(char16_t *pc16, const char *s, size_t n, mbstate_t *ps) { *pending = (wc & 0x3ff) + 0xdc00; wc = 0xd7c0 + (wc >> 10); } - if (pc16) *pc16 = wc; + if (pc16) + *pc16 = wc; } return ret; } diff --git a/libc/str/mbrtoc32.c b/libc/str/mbrtoc32.c index 00cc13ba7..535cb4f2f 100644 --- a/libc/str/mbrtoc32.c +++ b/libc/str/mbrtoc32.c @@ -33,10 +33,13 @@ __static_yoink("musl_libc_notice"); size_t mbrtoc32(char32_t *pc32, const char *s, size_t n, mbstate_t *ps) { static unsigned internal_state; - if (!ps) ps = (void *)&internal_state; - if (!s) return mbrtoc32(0, "", 1, ps); + if (!ps) + ps = (void *)&internal_state; + if (!s) + return mbrtoc32(0, "", 1, ps); wchar_t wc; size_t ret = mbrtowc(&wc, s, n, ps); - if (ret <= 4 && pc32) *pc32 = wc; + if (ret <= 4 && pc32) + *pc32 = wc; return ret; } diff --git a/libc/str/mbrtowc.c b/libc/str/mbrtowc.c index 8a0f996ef..c62d98dfc 100644 --- a/libc/str/mbrtowc.c +++ b/libc/str/mbrtowc.c @@ -39,26 +39,33 @@ size_t mbrtowc(wchar_t *wc, const char *src, size_t n, mbstate_t *st) { const unsigned char *s = (const void *)src; const unsigned N = n; wchar_t dummy; - if (!st) st = (void *)&internal_state; + if (!st) + st = (void *)&internal_state; c = *(unsigned *)st; if (!s) { - if (c) goto ilseq; + if (c) + goto ilseq; return 0; } else if (!wc) { wc = &dummy; } - if (!n) return -2; + if (!n) + return -2; if (!c) { - if (*s < 0x80) return !!(*wc = *s); - if (MB_CUR_MAX == 1) return (*wc = CODEUNIT(*s)), 1; - if (*s - SA > SB - SA) goto ilseq; + if (*s < 0x80) + return !!(*wc = *s); + if (MB_CUR_MAX == 1) + return (*wc = CODEUNIT(*s)), 1; + if (*s - SA > SB - SA) + goto ilseq; wut = *s++ - SA; wut = MAX(0, MIN(ARRAYLEN(kMbBittab) - 1, wut)); c = kMbBittab[wut]; n--; } if (n) { - if (OOB(c, *s)) goto ilseq; + if (OOB(c, *s)) + goto ilseq; loop: c = c << 6 | (*s++ - 0x80); n--; @@ -68,7 +75,8 @@ size_t mbrtowc(wchar_t *wc, const char *src, size_t n, mbstate_t *st) { return N - n; } if (n) { - if (*s - 0x80u >= 0x40) goto ilseq; + if (*s - 0x80u >= 0x40) + goto ilseq; goto loop; } } diff --git a/libc/str/mbsnrtowcs.c b/libc/str/mbsnrtowcs.c index 504a81c45..9884cc3a9 100644 --- a/libc/str/mbsnrtowcs.c +++ b/libc/str/mbsnrtowcs.c @@ -47,7 +47,8 @@ size_t mbsnrtowcs(wchar_t *wcs, const char **src, size_t n, size_t wn, * that mbsrtowcs never reads more than n input bytes. thus * we can use mbsrtowcs as long as it's practical.. */ while (s && wn && ((n2 = n / 4) >= wn || n2 > 32)) { - if (n2 >= wn) n2 = wn; + if (n2 >= wn) + n2 = wn; tmp_s = s; l = mbsrtowcs(ws, &s, n2, st); if (!(l + 1)) { @@ -85,6 +86,7 @@ size_t mbsnrtowcs(wchar_t *wcs, const char **src, size_t n, size_t wn, wn--; cnt++; } - if (wcs) *src = s; + if (wcs) + *src = s; return cnt; } diff --git a/libc/str/mbsrtowcs.c b/libc/str/mbsrtowcs.c index 986172725..eaebe234c 100644 --- a/libc/str/mbsrtowcs.c +++ b/libc/str/mbsrtowcs.c @@ -45,13 +45,15 @@ size_t mbsrtowcs(wchar_t *ws, const char **src, size_t wn, mbstate_t *st) { } } if (MB_CUR_MAX == 1) { - if (!ws) return strlen((const char *)s); + if (!ws) + return strlen((const char *)s); for (;;) { if (!wn) { *src = (const void *)s; return wn0; } - if (!*s) break; + if (!*s) + break; c = *s++; *ws++ = CODEUNIT(c); wn--; @@ -67,7 +69,8 @@ size_t mbsrtowcs(wchar_t *ws, const char **src, size_t wn, mbstate_t *st) { wn--; continue; } - if (*s - SA > SB - SA) break; + if (*s - SA > SB - SA) + break; c = kMbBittab[*s++ - SA]; resume0: if (OOB(c, *s)) { @@ -103,7 +106,8 @@ size_t mbsrtowcs(wchar_t *ws, const char **src, size_t wn, mbstate_t *st) { wn--; continue; } - if (*s - SA > SB - SA) break; + if (*s - SA > SB - SA) + break; c = kMbBittab[*s++ - SA]; resume: if (OOB(c, *s)) { @@ -137,6 +141,7 @@ size_t mbsrtowcs(wchar_t *ws, const char **src, size_t wn, mbstate_t *st) { return wn0 - wn; } errno = EILSEQ; - if (ws) *src = (const void *)s; + if (ws) + *src = (const void *)s; return -1; } diff --git a/libc/str/mbtowc.c b/libc/str/mbtowc.c index 155270726..34b5f773d 100644 --- a/libc/str/mbtowc.c +++ b/libc/str/mbtowc.c @@ -35,30 +35,40 @@ int mbtowc(wchar_t *restrict wc, const char *restrict src, size_t n) { unsigned c; const unsigned char *s = (const void *)src; wchar_t dummy; - if (!s) return 0; - if (!n) goto ilseq; - if (!wc) wc = &dummy; - if (*s < 0x80) return !!(*wc = *s); - if (MB_CUR_MAX == 1) return (*wc = CODEUNIT(*s)), 1; - if (*s - SA > SB - SA) goto ilseq; + if (!s) + return 0; + if (!n) + goto ilseq; + if (!wc) + wc = &dummy; + if (*s < 0x80) + return !!(*wc = *s); + if (MB_CUR_MAX == 1) + return (*wc = CODEUNIT(*s)), 1; + if (*s - SA > SB - SA) + goto ilseq; c = kMbBittab[*s++ - SA]; /* Avoid excessive checks against n: If shifting the state n-1 * times does not clear the high bit, then the value of n is * insufficient to read a character */ - if (n < 4 && ((c << (6 * n - 6)) & (1U << 31))) goto ilseq; - if (OOB(c, *s)) goto ilseq; + if (n < 4 && ((c << (6 * n - 6)) & (1U << 31))) + goto ilseq; + if (OOB(c, *s)) + goto ilseq; c = c << 6 | (*s++ - 0x80); if (!(c & (1U << 31))) { *wc = c; return 2; } - if (*s - 0x80u >= 0x40) goto ilseq; + if (*s - 0x80u >= 0x40) + goto ilseq; c = c << 6 | (*s++ - 0x80); if (!(c & (1U << 31))) { *wc = c; return 3; } - if (*s - 0x80u >= 0x40) goto ilseq; + if (*s - 0x80u >= 0x40) + goto ilseq; *wc = c << 6 | (*s++ - 0x80); return 4; ilseq: diff --git a/libc/str/memmem.c b/libc/str/memmem.c index 51975a3ef..ef3f721f0 100644 --- a/libc/str/memmem.c +++ b/libc/str/memmem.c @@ -39,8 +39,10 @@ __vex void *memmem(const void *haystack, size_t haystacklen, const void *needle, const xmm_t *v; unsigned i, k, m; const char *p, *q, *e; - if (!needlelen) return (void *)haystack; - if (UNLIKELY(needlelen > haystacklen)) return 0; + if (!needlelen) + return (void *)haystack; + if (UNLIKELY(needlelen > haystacklen)) + return 0; q = needle; c = *q; n = (xmm_t){c, c, c, c, c, c, c, c, c, c, c, c, c, c, c, c}; @@ -54,29 +56,38 @@ __vex void *memmem(const void *haystack, size_t haystacklen, const void *needle, for (;;) { while (!m) { ++v; - if ((const char *)v >= e) return 0; + if ((const char *)v >= e) + return 0; m = __builtin_ia32_pmovmskb128(*v == n); } do { k = __builtin_ctzl(m); p = (const char *)v + k; - if (UNLIKELY(p + needlelen > e)) return 0; + if (UNLIKELY(p + needlelen > e)) + return 0; for (i = 1;; ++i) { - if (i == needlelen) return (/*unconst*/ char *)p; - if (p[i] != q[i]) break; + if (i == needlelen) + return (/*unconst*/ char *)p; + if (p[i] != q[i]) + break; } m &= ~(1 << k); } while (m); } #else size_t i, j; - if (!needlelen) return (void *)haystack; - if (needlelen > haystacklen) return 0; + if (!needlelen) + return (void *)haystack; + if (needlelen > haystacklen) + return 0; for (i = 0; i < haystacklen; ++i) { for (j = 0;; ++j) { - if (j == needlelen) return (/*unconst*/ char *)haystack + i; - if (i + j == haystacklen) break; - if (((char *)haystack)[i + j] != ((char *)needle)[j]) break; + if (j == needlelen) + return (/*unconst*/ char *)haystack + i; + if (i + j == haystacklen) + break; + if (((char *)haystack)[i + j] != ((char *)needle)[j]) + break; } } return 0; diff --git a/libc/str/rawmemchr.c b/libc/str/rawmemchr.c index d3b4a5523..dadf37160 100644 --- a/libc/str/rawmemchr.c +++ b/libc/str/rawmemchr.c @@ -81,7 +81,8 @@ __vex void *rawmemchr(const void *s, int c) { c &= 255; v = 0x0101010101010101ul * c; for (; (uintptr_t)p & 7; ++p) { - if (*p == c) return (void *)p; + if (*p == c) + return (void *)p; } for (;; p += 8) { w = UncheckedAlignedRead64(p); diff --git a/libc/str/smoothsort.c b/libc/str/smoothsort.c index ba84be2e4..fac8a9011 100644 --- a/libc/str/smoothsort.c +++ b/libc/str/smoothsort.c @@ -159,7 +159,8 @@ static void SmoothSort(struct SmoothSort *s, void *base, size_t nel, size_t p[2] = {1, 0}; int pshift = 1; int trail; - if (!size) return; + if (!size) + return; head = base; high = head + size - width; // precompute Leonardo numbers, scaled by element width diff --git a/libc/str/startswith.c b/libc/str/startswith.c index 822f372c4..008cd2e25 100644 --- a/libc/str/startswith.c +++ b/libc/str/startswith.c @@ -26,8 +26,11 @@ */ bool32 startswith(const char *s, const char *prefix) { for (;;) { - if (!*prefix) return true; - if (!*s) return false; - if (*s++ != *prefix++) return false; + if (!*prefix) + return true; + if (!*s) + return false; + if (*s++ != *prefix++) + return false; } } diff --git a/libc/str/startswith16.c b/libc/str/startswith16.c index 9de1b0730..8210dc3c1 100644 --- a/libc/str/startswith16.c +++ b/libc/str/startswith16.c @@ -26,8 +26,11 @@ */ bool32 startswith16(const char16_t *s, const char16_t *prefix) { for (;;) { - if (!*prefix) return true; - if (!*s) return false; - if (*s++ != *prefix++) return false; + if (!*prefix) + return true; + if (!*s) + return false; + if (*s++ != *prefix++) + return false; } } diff --git a/libc/str/startswithi.c b/libc/str/startswithi.c index dd5cb5707..974ece794 100644 --- a/libc/str/startswithi.c +++ b/libc/str/startswithi.c @@ -24,8 +24,11 @@ */ bool32 startswithi(const char *s, const char *prefix) { for (;;) { - if (!*prefix) return true; - if (!*s) return false; - if (kToLower[*s++ & 255] != kToLower[*prefix++ & 255]) return false; + if (!*prefix) + return true; + if (!*s) + return false; + if (kToLower[*s++ & 255] != kToLower[*prefix++ & 255]) + return false; } } diff --git a/libc/str/stpncpy.c b/libc/str/stpncpy.c index 6cae8f6bc..30b6f2bb9 100644 --- a/libc/str/stpncpy.c +++ b/libc/str/stpncpy.c @@ -38,8 +38,10 @@ char *stpncpy(char *dst, const char *src, size_t dstlen) { size_t srclen, cpylen, zerlen; srclen = strlen(src); cpylen = MIN(srclen, dstlen); - if (cpylen) memcpy(dst, src, cpylen); + if (cpylen) + memcpy(dst, src, cpylen); zerlen = dstlen - cpylen; - if (zerlen) bzero(dst + cpylen, zerlen); + if (zerlen) + bzero(dst + cpylen, zerlen); return dst + cpylen; } diff --git a/libc/str/strcasecmp.c b/libc/str/strcasecmp.c index edeb633fc..2443afd93 100644 --- a/libc/str/strcasecmp.c +++ b/libc/str/strcasecmp.c @@ -32,7 +32,8 @@ int strcasecmp(const char *a, const char *b) { int x, y; size_t i = 0; uint64_t v, w; - if (a == b) return 0; + if (a == b) + return 0; if (((uintptr_t)a & 7) == ((uintptr_t)b & 7)) { for (; (uintptr_t)(a + i) & 7; ++i) { CheckEm: @@ -50,7 +51,8 @@ int strcasecmp(const char *a, const char *b) { } } } else { - while ((x = kToLower[a[i] & 255]) == (y = kToLower[b[i] & 255]) && y) ++i; + while ((x = kToLower[a[i] & 255]) == (y = kToLower[b[i] & 255]) && y) + ++i; return x - y; } } diff --git a/libc/str/strcasecmp16.c b/libc/str/strcasecmp16.c index 948b81725..8420ba882 100644 --- a/libc/str/strcasecmp16.c +++ b/libc/str/strcasecmp16.c @@ -29,6 +29,7 @@ int strcasecmp16(const char16_t *l, const char16_t *r) { int x, y; size_t i = 0; - while ((x = towlower(l[i])) == (y = towlower(r[i])) && r[i]) ++i; + while ((x = towlower(l[i])) == (y = towlower(r[i])) && r[i]) + ++i; return x - y; } diff --git a/libc/str/strcasestr.c b/libc/str/strcasestr.c index cf46cb3f1..26f969c09 100644 --- a/libc/str/strcasestr.c +++ b/libc/str/strcasestr.c @@ -41,7 +41,8 @@ __vex char *strcasestr(const char *haystack, const char *needle) { unsigned k, m; const xmm_t *p; xmm_t v, n1, n2, z = {0}; - if (haystack == needle || !*needle) return (char *)haystack; + if (haystack == needle || !*needle) + return (char *)haystack; c = *needle; n1 = (xmm_t){c, c, c, c, c, c, c, c, c, c, c, c, c, c, c, c}; c = kToLower[c & 255]; @@ -59,23 +60,32 @@ __vex char *strcasestr(const char *haystack, const char *needle) { } haystack = (const char *)p + __builtin_ctzl(m); for (i = 0;; ++i) { - if (!needle[i]) return (/*unconst*/ char *)haystack; - if (!haystack[i]) break; - if (kToLower[needle[i] & 255] != kToLower[haystack[i] & 255]) break; + if (!needle[i]) + return (/*unconst*/ char *)haystack; + if (!haystack[i]) + break; + if (kToLower[needle[i] & 255] != kToLower[haystack[i] & 255]) + break; } - if (!*haystack++) break; + if (!*haystack++) + break; } return 0; #else size_t i; - if (haystack == needle || !*needle) return (void *)haystack; + if (haystack == needle || !*needle) + return (void *)haystack; for (;;) { for (i = 0;; ++i) { - if (!needle[i]) return (/*unconst*/ char *)haystack; - if (!haystack[i]) break; - if (kToLower[needle[i] & 255] != kToLower[haystack[i] & 255]) break; + if (!needle[i]) + return (/*unconst*/ char *)haystack; + if (!haystack[i]) + break; + if (kToLower[needle[i] & 255] != kToLower[haystack[i] & 255]) + break; } - if (!*haystack++) break; + if (!*haystack++) + break; } return 0; #endif diff --git a/libc/str/strchr16.c b/libc/str/strchr16.c index 2cd2c994c..15e9043de 100644 --- a/libc/str/strchr16.c +++ b/libc/str/strchr16.c @@ -23,7 +23,9 @@ */ char16_t *strchr16(const char16_t *s, int c) { for (;; ++s) { - if ((*s & 65535) == (c & 65535)) return (char16_t *)s; - if (!*s) return (char16_t *)0; + if ((*s & 65535) == (c & 65535)) + return (char16_t *)s; + if (!*s) + return (char16_t *)0; } } diff --git a/libc/str/strchrnul16.c b/libc/str/strchrnul16.c index 158b2d54d..34704d8c8 100644 --- a/libc/str/strchrnul16.c +++ b/libc/str/strchrnul16.c @@ -23,7 +23,9 @@ */ char16_t *strchrnul16(const char16_t *s, int c) { for (;; ++s) { - if ((*s & 65535) == (c & 65535)) return (char16_t *)s; - if (!*s) return (char16_t *)s; + if ((*s & 65535) == (c & 65535)) + return (char16_t *)s; + if (!*s) + return (char16_t *)s; } } diff --git a/libc/str/strcmp16.c b/libc/str/strcmp16.c index 2dcb145b4..7fd4ab7f3 100644 --- a/libc/str/strcmp16.c +++ b/libc/str/strcmp16.c @@ -28,6 +28,7 @@ */ int strcmp16(const char16_t *l, const char16_t *r) { size_t i = 0; - while (l[i] == r[i] && r[i]) ++i; + while (l[i] == r[i] && r[i]) + ++i; return l[i] - r[i]; } diff --git a/libc/str/strlen16.c b/libc/str/strlen16.c index cb9fe11c8..0d8ccacf7 100644 --- a/libc/str/strlen16.c +++ b/libc/str/strlen16.c @@ -35,12 +35,14 @@ __vex size_t strlen16(const char16_t *s) { unsigned m, k = (uintptr_t)s & 15; const xmm_t *p = (const xmm_t *)((uintptr_t)s & -16); m = __builtin_ia32_pmovmskb128(*p == z) >> k << k; - while (!m) m = __builtin_ia32_pmovmskb128(*++p == z); + while (!m) + m = __builtin_ia32_pmovmskb128(*++p == z); n = (const char16_t *)p + (__builtin_ctzl(m) >> 1) - s; return n; #else size_t n = 0; - while (*s++) ++n; + while (*s++) + ++n; return n; #endif } diff --git a/libc/str/strncasecmp.c b/libc/str/strncasecmp.c index ccdc0e2e0..419b7eec8 100644 --- a/libc/str/strncasecmp.c +++ b/libc/str/strncasecmp.c @@ -30,7 +30,8 @@ int strncasecmp(const char *a, const char *b, size_t n) { int x, y; size_t i = 0; - if (!n-- || a == b) return 0; + if (!n-- || a == b) + return 0; while ((x = kToLower[a[i] & 0xff]) == (y = kToLower[b[i] & 0xff]) && b[i] && i < n) { ++i; diff --git a/libc/str/strncasecmp16.c b/libc/str/strncasecmp16.c index 7b7657024..4d39f6bea 100644 --- a/libc/str/strncasecmp16.c +++ b/libc/str/strncasecmp16.c @@ -29,7 +29,9 @@ int strncasecmp16(const char16_t *a, const char16_t *b, size_t n) { int x, y; size_t i = 0; - if (!n-- || a == b) return 0; - while ((x = towlower(a[i])) == (y = towlower(b[i])) && b[i] && i < n) ++i; + if (!n-- || a == b) + return 0; + while ((x = towlower(a[i])) == (y = towlower(b[i])) && b[i] && i < n) + ++i; return x - y; } diff --git a/libc/str/strncat16.c b/libc/str/strncat16.c index 21867be5a..266b5fdf2 100644 --- a/libc/str/strncat16.c +++ b/libc/str/strncat16.c @@ -33,7 +33,8 @@ char16_t *strncat16(char16_t *d, const char16_t *s, size_t n) { size_t i; char16_t *r = d; d += strlen16(d); - for (i = 0; i < n && s[i]; ++i) d[i] = s[i]; + for (i = 0; i < n && s[i]; ++i) + d[i] = s[i]; d[i] = 0; return r; } diff --git a/libc/str/strncmp16.c b/libc/str/strncmp16.c index e14ea6063..d1cc1eb7c 100644 --- a/libc/str/strncmp16.c +++ b/libc/str/strncmp16.c @@ -28,7 +28,9 @@ */ int strncmp16(const char16_t *a, const char16_t *b, size_t n) { size_t i = 0; - if (!n-- || a == b) return 0; - while (i < n && a[i] == b[i] && b[i]) ++i; + if (!n-- || a == b) + return 0; + while (i < n && a[i] == b[i] && b[i]) + ++i; return a[i] - b[i]; } diff --git a/libc/str/strncpy.c b/libc/str/strncpy.c index 1cdf70d74..26ac33e02 100644 --- a/libc/str/strncpy.c +++ b/libc/str/strncpy.c @@ -38,8 +38,10 @@ char *strncpy(char *dst, const char *src, size_t dstlen) { size_t srclen, cpylen, zerlen; srclen = strlen(src); cpylen = MIN(srclen, dstlen); - if (cpylen) memcpy(dst, src, cpylen); + if (cpylen) + memcpy(dst, src, cpylen); zerlen = dstlen - cpylen; - if (zerlen) bzero(dst + cpylen, zerlen); + if (zerlen) + bzero(dst + cpylen, zerlen); return dst; } diff --git a/libc/str/strnlen16.c b/libc/str/strnlen16.c index cc422eb12..d55fc3f29 100644 --- a/libc/str/strnlen16.c +++ b/libc/str/strnlen16.c @@ -30,7 +30,8 @@ size_t strnlen16(const char16_t *s, size_t n) { size_t i; for (i = 0;; ++i) { - if (i == n || !s[i]) break; + if (i == n || !s[i]) + break; } unassert(i == n || (i < n && !s[i])); return i; diff --git a/libc/str/strnlen_s.c b/libc/str/strnlen_s.c index c95d88b41..b8d3e8a46 100644 --- a/libc/str/strnlen_s.c +++ b/libc/str/strnlen_s.c @@ -46,13 +46,16 @@ static size_t strnlen_s_x64(const char *s, size_t n, size_t i) { */ size_t strnlen_s(const char *s, size_t n) { size_t i; - if (!s) return 0; + if (!s) + return 0; for (i = 0; (uintptr_t)(s + i) & 7; ++i) { - if (i == n || !s[i]) return i; + if (i == n || !s[i]) + return i; } i = strnlen_s_x64(s, n, i); for (;; ++i) { - if (i == n || !s[i]) break; + if (i == n || !s[i]) + break; } unassert(i == n || (i < n && !s[i])); return i; diff --git a/libc/str/strnwidth.c b/libc/str/strnwidth.c index f95decb7f..0e39fc70a 100644 --- a/libc/str/strnwidth.c +++ b/libc/str/strnwidth.c @@ -64,7 +64,8 @@ int strnwidth(const char *s, size_t n, size_t o) { case kUtf8: if (ThomPikeCont(c)) { w = ThomPikeMerge(w, c); - if (--r) break; + if (--r) + break; } l += MAX(0, wcwidth(w)); t = kAscii; diff --git a/libc/str/strstr.c b/libc/str/strstr.c index b428851b0..6557ac91a 100644 --- a/libc/str/strstr.c +++ b/libc/str/strstr.c @@ -40,7 +40,8 @@ __vex char *strstr(const char *haystack, const char *needle) { unsigned k, m; const xmm_t *p; xmm_t v, n, z = {0}; - if (haystack == needle || !*needle) return (char *)haystack; + if (haystack == needle || !*needle) + return (char *)haystack; n = (xmm_t){*needle, *needle, *needle, *needle, *needle, *needle, *needle, *needle, *needle, *needle, *needle, *needle, *needle, *needle, *needle, *needle}; @@ -57,23 +58,32 @@ __vex char *strstr(const char *haystack, const char *needle) { } haystack = (const char *)p + __builtin_ctzl(m); for (i = 0;; ++i) { - if (!needle[i]) return (/*unconst*/ char *)haystack; - if (!haystack[i]) break; - if (needle[i] != haystack[i]) break; + if (!needle[i]) + return (/*unconst*/ char *)haystack; + if (!haystack[i]) + break; + if (needle[i] != haystack[i]) + break; } - if (!*haystack++) break; + if (!*haystack++) + break; } return 0; #else size_t i; - if (haystack == needle || !*needle) return (void *)haystack; + if (haystack == needle || !*needle) + return (void *)haystack; for (;;) { for (i = 0;; ++i) { - if (!needle[i]) return (/*unconst*/ char *)haystack; - if (!haystack[i]) break; - if (needle[i] != haystack[i]) break; + if (!needle[i]) + return (/*unconst*/ char *)haystack; + if (!haystack[i]) + break; + if (needle[i] != haystack[i]) + break; } - if (!*haystack++) break; + if (!*haystack++) + break; } return 0; #endif diff --git a/libc/str/strstr16.c b/libc/str/strstr16.c index b34598e2f..aac0f8e3e 100644 --- a/libc/str/strstr16.c +++ b/libc/str/strstr16.c @@ -31,12 +31,16 @@ char16_t *strstr16(const char16_t *haystack, const char16_t *needle) { size_t i; for (;;) { for (i = 0;;) { - if (!needle[i]) return (/*unconst*/ char16_t *)haystack; - if (!haystack[i]) break; - if (needle[i] != haystack[i]) break; + if (!needle[i]) + return (/*unconst*/ char16_t *)haystack; + if (!haystack[i]) + break; + if (needle[i] != haystack[i]) + break; ++i; } - if (!*haystack++) break; + if (!*haystack++) + break; } return NULL; } diff --git a/libc/str/towctrans.c b/libc/str/towctrans.c index 5d2d2483a..87f1a87bc 100644 --- a/libc/str/towctrans.c +++ b/libc/str/towctrans.c @@ -19,7 +19,9 @@ #include "libc/str/str.h" wint_t towctrans(wint_t c, wctrans_t t) { - if (t == (wctrans_t)1) return towupper(c); - if (t == (wctrans_t)2) return towlower(c); + if (t == (wctrans_t)1) + return towupper(c); + if (t == (wctrans_t)2) + return towlower(c); return c; } diff --git a/libc/str/tprecode16to8.c b/libc/str/tprecode16to8.c index fa1895f6b..9bea83682 100644 --- a/libc/str/tprecode16to8.c +++ b/libc/str/tprecode16to8.c @@ -37,7 +37,8 @@ static axdx_t tprecode16to8_sse2(char *dst, size_t dstsize, const char16_t *src, pcmpgtw(v2, v1, vz); pcmpgtw(v3, v1, kDel16); pandn((void *)v2, (void *)v3, (void *)v2); - if (pmovmskb((void *)v2) != 0xFFFF) break; + if (pmovmskb((void *)v2) != 0xFFFF) + break; packsswb((void *)v1, v1, v1); memcpy(dst + r.ax, v1, 8); r.ax += 8; @@ -70,10 +71,13 @@ axdx_t tprecode16to8(char *dst, size_t dstsize, const char16_t *src) { r = tprecode16to8_sse2(dst, dstsize, src, r); } #endif - if (!(x = src[r.dx++])) break; - if (IsUtf16Cont(x)) continue; + if (!(x = src[r.dx++])) + break; + if (IsUtf16Cont(x)) + continue; if (!IsUcs2(x)) { - if (!(y = src[r.dx++])) break; + if (!(y = src[r.dx++])) + break; x = MergeUtf16(x, y); } w = tpenc(x); diff --git a/libc/str/tprecode8to16.c b/libc/str/tprecode8to16.c index 6ece0f1b5..d823f3163 100644 --- a/libc/str/tprecode8to16.c +++ b/libc/str/tprecode8to16.c @@ -32,7 +32,8 @@ static inline axdx_t tprecode8to16_sse2(char16_t *dst, size_t dstsize, while (r.ax + 16 < dstsize) { memcpy(v1, src + r.dx, 16); pcmpgtb((int8_t *)v2, (int8_t *)v1, (int8_t *)vz); - if (pmovmskb(v2) != 0xFFFF) break; + if (pmovmskb(v2) != 0xFFFF) + break; punpcklbw(v2, v1, vz); punpckhbw(v1, v1, vz); memcpy(dst + r.ax + 0, v2, 16); @@ -73,8 +74,10 @@ axdx_t tprecode8to16(char16_t *dst, size_t dstsize, const char *src) { a = ThomPikeByte(x); n = ThomPikeLen(x) - 1; for (i = 0;;) { - if (!(b = src[r.dx + i] & 0377)) break; - if (!ThomPikeCont(b)) break; + if (!(b = src[r.dx + i] & 0377)) + break; + if (!ThomPikeCont(b)) + break; a = ThomPikeMerge(a, b); if (++i == n) { r.dx += i; @@ -83,7 +86,8 @@ axdx_t tprecode8to16(char16_t *dst, size_t dstsize, const char *src) { } } } - if (!x) break; + if (!x) + break; w = EncodeUtf16(x); while (w && r.ax + 1 < dstsize) { dst[r.ax++] = w; diff --git a/libc/str/wcrtomb.c b/libc/str/wcrtomb.c index 0a8f6b155..1596c63e6 100644 --- a/libc/str/wcrtomb.c +++ b/libc/str/wcrtomb.c @@ -32,7 +32,8 @@ __static_yoink("musl_libc_notice"); size_t wcrtomb(char *s, wchar_t wc, mbstate_t *st) { - if (!s) return 1; + if (!s) + return 1; if ((unsigned)wc < 0x80) { *s = wc; return 1; diff --git a/libc/str/wcscasecmp.c b/libc/str/wcscasecmp.c index d9c060759..8f32d77cc 100644 --- a/libc/str/wcscasecmp.c +++ b/libc/str/wcscasecmp.c @@ -29,7 +29,9 @@ int wcscasecmp(const wchar_t *a, const wchar_t *b) { size_t i = 0; unsigned x, y; - if (a == b) return 0; - while ((x = towlower(a[i])) == (y = towlower(b[i])) && b[i]) ++i; + if (a == b) + return 0; + while ((x = towlower(a[i])) == (y = towlower(b[i])) && b[i]) + ++i; return x - y; } diff --git a/libc/str/wcschr.c b/libc/str/wcschr.c index acb05c808..d63aa2a77 100644 --- a/libc/str/wcschr.c +++ b/libc/str/wcschr.c @@ -23,7 +23,9 @@ */ wchar_t *wcschr(const wchar_t *s, wchar_t c) { for (;; ++s) { - if (*s == c) return (wchar_t *)s; - if (!*s) return 0; + if (*s == c) + return (wchar_t *)s; + if (!*s) + return 0; } } diff --git a/libc/str/wcschrnul.c b/libc/str/wcschrnul.c index 19b553e59..4161a513d 100644 --- a/libc/str/wcschrnul.c +++ b/libc/str/wcschrnul.c @@ -20,7 +20,9 @@ wchar_t *wcschrnul(const wchar_t *s, wchar_t c) { for (;; ++s) { - if (*s == c) return (wchar_t *)s; - if (!*s) return (wchar_t *)s; + if (*s == c) + return (wchar_t *)s; + if (!*s) + return (wchar_t *)s; } } diff --git a/libc/str/wcscmp.c b/libc/str/wcscmp.c index 0661245ee..3a36e3f22 100644 --- a/libc/str/wcscmp.c +++ b/libc/str/wcscmp.c @@ -28,8 +28,10 @@ */ int wcscmp(const wchar_t *a, const wchar_t *b) { size_t i = 0; - if (a == b) return 0; - while (a[i] == b[i] && b[i]) ++i; + if (a == b) + return 0; + while (a[i] == b[i] && b[i]) + ++i; return (int)a[i] < (int)b[i] ? -1 : (int)a[i] > (int)b[i]; } diff --git a/libc/str/wcsendswith.c b/libc/str/wcsendswith.c index 2257c0b82..0dbba86ac 100644 --- a/libc/str/wcsendswith.c +++ b/libc/str/wcsendswith.c @@ -28,6 +28,7 @@ bool32 wcsendswith(const wchar_t *s, const wchar_t *suffix) { size_t n, m; n = wcslen(s); m = wcslen(suffix); - if (m > n) return false; + if (m > n) + return false; return memcmp(s + n - m, suffix, m * sizeof(wchar_t)) == 0; } diff --git a/libc/str/wcslen.c b/libc/str/wcslen.c index 9dbbfcbee..b1f86bd1c 100644 --- a/libc/str/wcslen.c +++ b/libc/str/wcslen.c @@ -35,12 +35,14 @@ __vex size_t wcslen(const wchar_t *s) { unsigned m, k = (uintptr_t)s & 15; const xmm_t *p = (const xmm_t *)((uintptr_t)s & -16); m = __builtin_ia32_pmovmskb128(*p == z) >> k << k; - while (!m) m = __builtin_ia32_pmovmskb128(*++p == z); + while (!m) + m = __builtin_ia32_pmovmskb128(*++p == z); n = (const wchar_t *)p + (__builtin_ctzl(m) >> 2) - s; return n; #else size_t n = 0; - while (*s++) ++n; + while (*s++) + ++n; return n; #endif } diff --git a/libc/str/wcsncasecmp.c b/libc/str/wcsncasecmp.c index 658492481..b98b4baaa 100644 --- a/libc/str/wcsncasecmp.c +++ b/libc/str/wcsncasecmp.c @@ -29,7 +29,9 @@ int wcsncasecmp(const wchar_t *a, const wchar_t *b, size_t n) { size_t i = 0; unsigned x, y; - if (!n-- || a == b) return 0; - while ((x = towlower(a[i])) == (y = towlower(b[i])) && b[i] && i < n) ++i; + if (!n-- || a == b) + return 0; + while ((x = towlower(a[i])) == (y = towlower(b[i])) && b[i] && i < n) + ++i; return x - y; } diff --git a/libc/str/wcsncat.c b/libc/str/wcsncat.c index e7a6ffd60..6e7c7ea92 100644 --- a/libc/str/wcsncat.c +++ b/libc/str/wcsncat.c @@ -33,7 +33,8 @@ wchar_t *wcsncat(wchar_t *d, const wchar_t *s, size_t n) { size_t i; wchar_t *r = d; d += wcslen(d); - for (i = 0; i < n && s[i]; ++i) d[i] = s[i]; + for (i = 0; i < n && s[i]; ++i) + d[i] = s[i]; d[i] = 0; return r; } diff --git a/libc/str/wcsncmp.c b/libc/str/wcsncmp.c index b41304727..b576af3ad 100644 --- a/libc/str/wcsncmp.c +++ b/libc/str/wcsncmp.c @@ -28,7 +28,9 @@ */ int wcsncmp(const wchar_t *a, const wchar_t *b, size_t n) { size_t i = 0; - if (!n-- || a == b) return 0; - while (i < n && a[i] == b[i] && b[i]) ++i; + if (!n-- || a == b) + return 0; + while (i < n && a[i] == b[i] && b[i]) + ++i; return (int)a[i] < (int)b[i] ? -1 : (int)a[i] > (int)b[i]; } diff --git a/libc/str/wcsnlen_s.c b/libc/str/wcsnlen_s.c index 75a8f60da..70e8f9f02 100644 --- a/libc/str/wcsnlen_s.c +++ b/libc/str/wcsnlen_s.c @@ -27,6 +27,7 @@ * @asyncsignalsafe */ size_t wcsnlen_s(const wchar_t *s, size_t n) { - if (!s) return 0; + if (!s) + return 0; return wcsnlen(s, n); } diff --git a/libc/str/wcsnrtombs.c b/libc/str/wcsnrtombs.c index 4486ce579..549a706f9 100644 --- a/libc/str/wcsnrtombs.c +++ b/libc/str/wcsnrtombs.c @@ -35,7 +35,8 @@ size_t wcsnrtombs(char *dst, const wchar_t **wcs, size_t wn, size_t n, mbstate_t *st) { const wchar_t *ws = *wcs; size_t cnt = 0; - if (!dst) n = 0; + if (!dst) + n = 0; while (ws && wn) { char tmp[MB_LEN_MAX]; size_t l = wcrtomb(n < MB_LEN_MAX ? tmp : dst, *ws, 0); @@ -45,7 +46,8 @@ size_t wcsnrtombs(char *dst, const wchar_t **wcs, size_t wn, size_t n, } if (dst) { if (n < MB_LEN_MAX) { - if (l > n) break; + if (l > n) + break; memcpy(dst, tmp, l); } dst += l; @@ -59,6 +61,7 @@ size_t wcsnrtombs(char *dst, const wchar_t **wcs, size_t wn, size_t n, wn--; cnt += l; } - if (dst) *wcs = ws; + if (dst) + *wcs = ws; return cnt; } diff --git a/libc/str/wcsrtombs.c b/libc/str/wcsrtombs.c index f1ad160e9..70d115684 100644 --- a/libc/str/wcsrtombs.c +++ b/libc/str/wcsrtombs.c @@ -39,7 +39,8 @@ size_t wcsrtombs(char *s, const wchar_t **ws, size_t n, mbstate_t *st) { for (n = 0, ws2 = *ws; *ws2; ws2++) { if (*ws2 >= 0x80u) { l = wcrtomb(buf, *ws2, 0); - if (!(l + 1)) return -1; + if (!(l + 1)) + return -1; n += l; } else n++; @@ -54,7 +55,8 @@ size_t wcsrtombs(char *s, const wchar_t **ws, size_t n, mbstate_t *st) { return N - n; } l = wcrtomb(s, **ws, 0); - if (!(l + 1)) return -1; + if (!(l + 1)) + return -1; s += l; n -= l; } else { @@ -71,8 +73,10 @@ size_t wcsrtombs(char *s, const wchar_t **ws, size_t n, mbstate_t *st) { return N - n; } l = wcrtomb(buf, **ws, 0); - if (!(l + 1)) return -1; - if (l > n) return N - n; + if (!(l + 1)) + return -1; + if (l > n) + return N - n; wcrtomb(s, **ws, 0); s += l; n -= l; diff --git a/libc/str/wcsstartswith.c b/libc/str/wcsstartswith.c index f85883a53..0aecfdff9 100644 --- a/libc/str/wcsstartswith.c +++ b/libc/str/wcsstartswith.c @@ -26,8 +26,11 @@ */ bool32 wcsstartswith(const wchar_t *s, const wchar_t *prefix) { for (;;) { - if (!*prefix) return true; - if (!*s) return false; - if (*s++ != *prefix++) return false; + if (!*prefix) + return true; + if (!*s) + return false; + if (*s++ != *prefix++) + return false; } } diff --git a/libc/str/wcsstr.c b/libc/str/wcsstr.c index 886b71d3e..1867ecd93 100644 --- a/libc/str/wcsstr.c +++ b/libc/str/wcsstr.c @@ -31,12 +31,16 @@ wchar_t *wcsstr(const wchar_t *haystack, const wchar_t *needle) { size_t i; for (;;) { for (i = 0;;) { - if (!needle[i]) return (/*unconst*/ wchar_t *)haystack; - if (!haystack[i]) break; - if (needle[i] != haystack[i]) break; + if (!needle[i]) + return (/*unconst*/ wchar_t *)haystack; + if (!haystack[i]) + break; + if (needle[i] != haystack[i]) + break; ++i; } - if (!*haystack++) break; + if (!*haystack++) + break; } return NULL; } diff --git a/libc/str/wctob.c b/libc/str/wctob.c index bd5ff66b6..4fba0c5fc 100644 --- a/libc/str/wctob.c +++ b/libc/str/wctob.c @@ -32,7 +32,9 @@ __static_yoink("musl_libc_notice"); int wctob(wint_t c) { - if (c < 128U) return c; - if (MB_CUR_MAX == 1 && IS_CODEUNIT(c)) return (unsigned char)c; + if (c < 128U) + return c; + if (MB_CUR_MAX == 1 && IS_CODEUNIT(c)) + return (unsigned char)c; return EOF; } diff --git a/libc/str/wctomb.c b/libc/str/wctomb.c index 2c00c3352..e2ca942d1 100644 --- a/libc/str/wctomb.c +++ b/libc/str/wctomb.c @@ -20,6 +20,7 @@ #include "libc/str/str.h" int wctomb(char *s, wchar_t wc) { - if (!s) return 0; + if (!s) + return 0; return wcrtomb(s, wc, 0); } diff --git a/libc/str/wctrans.c b/libc/str/wctrans.c index f2cff2c86..2fa75a817 100644 --- a/libc/str/wctrans.c +++ b/libc/str/wctrans.c @@ -19,7 +19,9 @@ #include "libc/str/str.h" wctrans_t wctrans(const char *s) { - if (!strcmp(s, "toupper")) return (wctrans_t)1; - if (!strcmp(s, "tolower")) return (wctrans_t)2; + if (!strcmp(s, "toupper")) + return (wctrans_t)1; + if (!strcmp(s, "tolower")) + return (wctrans_t)2; return 0; } diff --git a/libc/str/wcwidth.c b/libc/str/wcwidth.c index 1ce4dc2ce..093133c2e 100644 --- a/libc/str/wcwidth.c +++ b/libc/str/wcwidth.c @@ -26,15 +26,19 @@ */ int wcwidth(wchar_t c) { int res; - if (LIKELY(32 <= c && c < 127)) return 1; + if (LIKELY(32 <= c && c < 127)) + return 1; if (VERY_UNLIKELY((uint32_t)c >= 0x100000)) { - if ((uint32_t)c <= 0x10FFFD) return 1; + if ((uint32_t)c <= 0x10FFFD) + return 1; return -1; } res = _wcwidth_osx(c); if (VERY_UNLIKELY(!res)) { - if (!c) return 0; - if (iswcntrl(c)) return -1; + if (!c) + return 0; + if (iswcntrl(c)) + return -1; } return res; } diff --git a/libc/str/wmemcpy.c b/libc/str/wmemcpy.c index 5d376eb72..a9f265ddc 100644 --- a/libc/str/wmemcpy.c +++ b/libc/str/wmemcpy.c @@ -21,6 +21,7 @@ wchar_t *wmemcpy(wchar_t *dest, const wchar_t *src, size_t count) { size_t bytes; - if (ckd_mul(&bytes, count, sizeof(wchar_t))) bytes = -1; + if (ckd_mul(&bytes, count, sizeof(wchar_t))) + bytes = -1; return memcpy(dest, src, bytes); } diff --git a/libc/str/wmemmove.c b/libc/str/wmemmove.c index 58b95cd30..b59ac3008 100644 --- a/libc/str/wmemmove.c +++ b/libc/str/wmemmove.c @@ -21,6 +21,7 @@ wchar_t *wmemmove(wchar_t *dest, const wchar_t *src, size_t count) { size_t bytes; - if (ckd_mul(&bytes, count, sizeof(wchar_t))) bytes = -1; + if (ckd_mul(&bytes, count, sizeof(wchar_t))) + bytes = -1; return memmove(dest, src, bytes); } diff --git a/libc/str/wmempcpy.c b/libc/str/wmempcpy.c index 8b69d541a..a860ed60d 100644 --- a/libc/str/wmempcpy.c +++ b/libc/str/wmempcpy.c @@ -21,6 +21,7 @@ wchar_t *wmempcpy(wchar_t *dest, const wchar_t *src, size_t count) { size_t bytes; - if (ckd_mul(&bytes, count, sizeof(wchar_t))) bytes = -1; + if (ckd_mul(&bytes, count, sizeof(wchar_t))) + bytes = -1; return mempcpy(dest, src, bytes); } diff --git a/libc/testlib/almostequallongdouble.c b/libc/testlib/almostequallongdouble.c index dc53ad847..2db17007b 100644 --- a/libc/testlib/almostequallongdouble.c +++ b/libc/testlib/almostequallongdouble.c @@ -23,6 +23,7 @@ bool testlib_almostequallongdouble(long double x, long double y) { /* TODO(jart): This algorithm has to be binary. */ - if (isnan(x) || isnan(y)) return false; + if (isnan(x) || isnan(y)) + return false; return fabsl(x - y) <= EPSILON; } diff --git a/libc/testlib/benchrunner.c b/libc/testlib/benchrunner.c index cdb9a6b56..f99c1a80f 100644 --- a/libc/testlib/benchrunner.c +++ b/libc/testlib/benchrunner.c @@ -54,7 +54,8 @@ void testlib_benchwarmup(void) { void EnableCruiseControlForCool(void) { int fd, micros = 10; - if (!IsLinux()) return; + if (!IsLinux()) + return; BLOCK_CANCELATION; if ((fd = __sys_openat(AT_FDCWD, "/dev/cpu_dma_latency", O_WRONLY, 0)) != -1) { diff --git a/libc/testlib/binequals.c b/libc/testlib/binequals.c index 589015200..f56000a38 100644 --- a/libc/testlib/binequals.c +++ b/libc/testlib/binequals.c @@ -30,11 +30,15 @@ bool testlib_binequals(const char16_t *want, const void *got, size_t n) { size_t i; const unsigned char *p = (const unsigned char *)got; - if (!got) return false; + if (!got) + return false; for (i = 0; i < n; ++i) { - if (!want[i]) break; - if (i == n) break; - if (want[i] != kCp437[p[i]]) return false; + if (!want[i]) + break; + if (i == n) + break; + if (want[i] != kCp437[p[i]]) + return false; } return true; } diff --git a/libc/testlib/contains.c b/libc/testlib/contains.c index 155071309..ea7a00576 100644 --- a/libc/testlib/contains.c +++ b/libc/testlib/contains.c @@ -20,8 +20,10 @@ #include "libc/testlib/testlib.h" bool testlib_contains(size_t cw, const void *s, const void *needle) { - if (s == needle) return true; - if (!s || !needle) return false; + if (s == needle) + return true; + if (!s || !needle) + return false; return sizeof(cw) == sizeof(char16_t) ? !!strstr16(s, needle) : !!strstr(s, needle); } diff --git a/libc/testlib/endswith.c b/libc/testlib/endswith.c index b513116cf..7da23e47d 100644 --- a/libc/testlib/endswith.c +++ b/libc/testlib/endswith.c @@ -20,8 +20,10 @@ #include "libc/testlib/testlib.h" bool testlib_endswith(size_t cw, const void *s, const void *suffix) { - if (s == suffix) return true; - if (!s || !suffix) return false; + if (s == suffix) + return true; + if (!s || !suffix) + return false; return cw == sizeof(wchar_t) ? wcsendswith(s, suffix) : cw == sizeof(char16_t) ? endswith16(s, suffix) : endswith(s, suffix); diff --git a/libc/testlib/formatbinaryasglyphs.c b/libc/testlib/formatbinaryasglyphs.c index ed9e448db..a7e9fba39 100644 --- a/libc/testlib/formatbinaryasglyphs.c +++ b/libc/testlib/formatbinaryasglyphs.c @@ -22,7 +22,8 @@ void testlib_formatbinaryasglyphs(const char16_t *want, const void *got, size_t n, char **out_v1, char **out_v2) { - if (n == -1ul) n = strlen16(want); + if (n == -1ul) + n = strlen16(want); *out_v1 = xasprintf("%`#.*hs", n, want); *out_v2 = xasprintf(" %`'#.*s", n, got); } diff --git a/libc/testlib/formatbinaryashex.c b/libc/testlib/formatbinaryashex.c index b7fba1ee6..339be9c44 100644 --- a/libc/testlib/formatbinaryashex.c +++ b/libc/testlib/formatbinaryashex.c @@ -26,7 +26,8 @@ void testlib_formatbinaryashex(const char *want, const void *got, size_t n, size_t i; uint8_t b; char *gothex; - if (n == -1ul) n = strlen(want) / 2; + if (n == -1ul) + n = strlen(want) / 2; gothex = xmalloc(n * 2 + 1); gothex[n * 2] = '\0'; for (i = 0; i < n; ++i) { diff --git a/libc/testlib/formatstr.c b/libc/testlib/formatstr.c index 401bac739..be7ffc145 100644 --- a/libc/testlib/formatstr.c +++ b/libc/testlib/formatstr.c @@ -60,12 +60,14 @@ static int AppendWide(wint_t x, int i, int j) { */ char *testlib_formatstr(size_t cw, const void *p, int n) { int i, j = 0; - if (!p) return "NULL"; + if (!p) + return "NULL"; i = atomic_fetch_add(&bufi, 1) % STRS; switch (cw) { case 1: { const char *s = p; - if (n < 0) n = s ? strlen(s) : 0; + if (n < 0) + n = s ? strlen(s) : 0; const char *se = s + n; APPEND('"'); while (s < se) { @@ -75,13 +77,15 @@ char *testlib_formatstr(size_t cw, const void *p, int n) { } case 2: { const char16_t *s = p; - if (n < 0) n = s ? strlen16(s) : 0; + if (n < 0) + n = s ? strlen16(s) : 0; const char16_t *se = s + n; APPEND('u'); APPEND('"'); while (s < se) { wint_t x = *s++ & 0xffff; - if (IsUtf16Cont(x)) continue; + if (IsUtf16Cont(x)) + continue; if (!IsUcs2(x) && s < se) { wint_t y = *s++ & 0xffff; x = MergeUtf16(x, y); @@ -92,7 +96,8 @@ char *testlib_formatstr(size_t cw, const void *p, int n) { } case 4: { const wchar_t *s = p; - if (n < 0) n = s ? wcslen(s) : 0; + if (n < 0) + n = s ? wcslen(s) : 0; const wchar_t *se = s + n; APPEND('L'); APPEND('"'); diff --git a/libc/testlib/hexequals.c b/libc/testlib/hexequals.c index 39c5b8d07..a4f8b5cf9 100644 --- a/libc/testlib/hexequals.c +++ b/libc/testlib/hexequals.c @@ -29,10 +29,13 @@ bool testlib_hexequals(const char *want, const void *got, size_t n) { size_t i; const unsigned char *p = (const unsigned char *)got; - if (!got) return false; + if (!got) + return false; for (i = 0; i < n; ++i) { - if (!want[i * 2]) break; - if (i == n) break; + if (!want[i * 2]) + break; + if (i == n) + break; if (p[i] != (kHexToInt[want[i * 2 + 0] & 255] * 16 + kHexToInt[want[i * 2 + 1] & 255])) { return false; diff --git a/libc/testlib/startswith.c b/libc/testlib/startswith.c index c1a5c179b..b24fdcdfd 100644 --- a/libc/testlib/startswith.c +++ b/libc/testlib/startswith.c @@ -20,8 +20,10 @@ #include "libc/testlib/testlib.h" bool testlib_startswith(size_t cw, const void *s, const void *prefix) { - if (s == prefix) return true; - if (!s || !prefix) return false; + if (s == prefix) + return true; + if (!s || !prefix) + return false; return cw == sizeof(wchar_t) ? wcsstartswith(s, prefix) : cw == sizeof(char16_t) ? startswith16(s, prefix) : startswith(s, prefix); diff --git a/libc/testlib/strcaseequals.c b/libc/testlib/strcaseequals.c index 1a120365b..e273e0e22 100644 --- a/libc/testlib/strcaseequals.c +++ b/libc/testlib/strcaseequals.c @@ -26,8 +26,10 @@ bool testlib_strcaseequals(size_t cw, const void *s1, const void *s2) { bool testlib_strncaseequals(size_t cw, const void *s1, const void *s2, size_t n) { - if (s1 == s2) return true; - if (!s1 || !s2) return false; + if (s1 == s2) + return true; + if (!s1 || !s2) + return false; return (cw == sizeof(wchar_t) ? wcsncasecmp(s1, s2, n) : cw == sizeof(char16_t) ? strncasecmp16(s1, s2, n) : strncasecmp(s1, s2, n)) == 0; diff --git a/libc/testlib/strequals.c b/libc/testlib/strequals.c index 655750e75..ca8bb71af 100644 --- a/libc/testlib/strequals.c +++ b/libc/testlib/strequals.c @@ -25,8 +25,10 @@ bool testlib_strequals(size_t cw, const void *s1, const void *s2) { } bool testlib_strnequals(size_t cw, const void *s1, const void *s2, size_t n) { - if (s1 == s2) return true; - if (!s1 || !s2) return false; + if (s1 == s2) + return true; + if (!s1 || !s2) + return false; return (cw == sizeof(wchar_t) ? wcsncmp(s1, s2, n) : cw == sizeof(char16_t) ? strncmp16(s1, s2, n) : strncmp(s1, s2, n)) == 0; diff --git a/libc/testlib/testmain.c b/libc/testlib/testmain.c index da218f162..e4704bdae 100644 --- a/libc/testlib/testmain.c +++ b/libc/testlib/testmain.c @@ -110,7 +110,8 @@ dontasan int main(int argc, char *argv[]) { errno = 0; STRACE(""); STRACE("# setting up once"); - if (!IsWindows()) sys_getpid(); + if (!IsWindows()) + sys_getpid(); testlib_clearxmmregisters(); if (_weaken(SetUpOnce)) { _weaken(SetUpOnce)(); diff --git a/libc/testlib/testrunner.c b/libc/testlib/testrunner.c index 6f432253b..f77738c05 100644 --- a/libc/testlib/testrunner.c +++ b/libc/testlib/testrunner.c @@ -53,8 +53,10 @@ void testlib_error_enter(const char *file, const char *func) { ftrace_enabled(-1); strace_enabled(-1); pthread_mutex_lock(&testlib_error_lock); - if (!IsWindows()) sys_getpid(); /* make strace easier to read */ - if (!IsWindows()) sys_getpid(); + if (!IsWindows()) + sys_getpid(); /* make strace easier to read */ + if (!IsWindows()) + sys_getpid(); if (g_testlib_shoulddebugbreak) { DebugBreak(); } @@ -106,18 +108,23 @@ void testlib_runtestcases(const testfn_t *start, const testfn_t *end, a->setup(fn); } } - if (_weaken(SetUp)) _weaken(SetUp)(); + if (_weaken(SetUp)) + _weaken(SetUp)(); errno = 0; - if (IsWindows()) SetLastError(0); - if (!IsWindows()) sys_getpid(); - if (warmup) warmup(); + if (IsWindows()) + SetLastError(0); + if (!IsWindows()) + sys_getpid(); + if (warmup) + warmup(); testlib_clearxmmregisters(); STRACE(""); STRACE("# running test %t on %s@%s", fn, user, host); (*fn)(); STRACE(""); STRACE("# tearing down %t", fn); - if (!IsWindows()) sys_getpid(); + if (!IsWindows()) + sys_getpid(); if (_weaken(TearDown)) { _weaken(TearDown)(); } diff --git a/libc/thread/__cxa_thread_atexit_impl.c b/libc/thread/__cxa_thread_atexit_impl.c index 151adf59a..3c0326cfb 100644 --- a/libc/thread/__cxa_thread_atexit_impl.c +++ b/libc/thread/__cxa_thread_atexit_impl.c @@ -38,7 +38,8 @@ void __cxa_thread_finalize(void) { int __cxa_thread_atexit_impl(void *fun, void *arg, void *dso_symbol) { struct Dtor *dtor; - if (!(dtor = malloc(sizeof(struct Dtor)))) return -1; + if (!(dtor = malloc(sizeof(struct Dtor)))) + return -1; dtor->fun = fun; dtor->arg = arg; dtor->next = __cxa_thread_atexit_list; diff --git a/libc/thread/mktls.c b/libc/thread/mktls.c index 35d83b64c..93919f051 100644 --- a/libc/thread/mktls.c +++ b/libc/thread/mktls.c @@ -92,7 +92,8 @@ static char *_mktls_above(struct CosmoTib **out_tib) { hiz = ROUNDUP(sizeof(*tib) + 2 * sizeof(void *), I(_tls_align)); siz = hiz + I(_tls_size); mem = memalign(TLS_ALIGNMENT, siz); - if (!mem) return 0; + if (!mem) + return 0; // poison memory between tdata and tbss if (IsAsan()) { diff --git a/libc/thread/pthread_atfork.c b/libc/thread/pthread_atfork.c index 49b579020..71adf7339 100644 --- a/libc/thread/pthread_atfork.c +++ b/libc/thread/pthread_atfork.c @@ -52,12 +52,15 @@ extern pthread_spinlock_t _pthread_lock_obj; static void _pthread_onfork(int i) { struct AtFork *a; unassert(0 <= i && i <= 2); - if (!i) pthread_spin_lock(&_atforks.lock); + if (!i) + pthread_spin_lock(&_atforks.lock); for (a = _atforks.list; a; a = a->p[!i]) { - if (a->f[i]) a->f[i](); + if (a->f[i]) + a->f[i](); _atforks.list = a; } - if (i) pthread_spin_unlock(&_atforks.lock); + if (i) + pthread_spin_unlock(&_atforks.lock); } void _pthread_onfork_prepare(void) { @@ -99,14 +102,16 @@ static struct AtFork *_pthread_atfork_alloc(void) { int _pthread_atfork(atfork_f prepare, atfork_f parent, atfork_f child) { int rc; struct AtFork *a; - if (!(a = _pthread_atfork_alloc())) return ENOMEM; + if (!(a = _pthread_atfork_alloc())) + return ENOMEM; a->f[0] = prepare; a->f[1] = parent; a->f[2] = child; pthread_spin_lock(&_atforks.lock); a->p[0] = 0; a->p[1] = _atforks.list; - if (_atforks.list) _atforks.list->p[0] = a; + if (_atforks.list) + _atforks.list->p[0] = a; _atforks.list = a; pthread_spin_unlock(&_atforks.lock); rc = 0; diff --git a/libc/thread/pthread_attr_getsigmask_np.c b/libc/thread/pthread_attr_getsigmask_np.c index 35b87fd55..d8fef2126 100644 --- a/libc/thread/pthread_attr_getsigmask_np.c +++ b/libc/thread/pthread_attr_getsigmask_np.c @@ -31,7 +31,9 @@ errno_t pthread_attr_getsigmask_np(const pthread_attr_t *attr, sigset_t *sigmask) { _Static_assert(sizeof(attr->__sigmask) == sizeof(*sigmask), ""); - if (!attr->__havesigmask) return PTHREAD_ATTR_NO_SIGMASK_NP; - if (sigmask) *sigmask = attr->__sigmask; + if (!attr->__havesigmask) + return PTHREAD_ATTR_NO_SIGMASK_NP; + if (sigmask) + *sigmask = attr->__sigmask; return 0; } diff --git a/libc/thread/pthread_attr_setguardsize.c b/libc/thread/pthread_attr_setguardsize.c index 00f0a50d6..2905a7605 100644 --- a/libc/thread/pthread_attr_setguardsize.c +++ b/libc/thread/pthread_attr_setguardsize.c @@ -36,7 +36,8 @@ * @raise EINVAL if `guardsize` is zero */ errno_t pthread_attr_setguardsize(pthread_attr_t *attr, size_t guardsize) { - if (!guardsize) return EINVAL; + if (!guardsize) + return EINVAL; attr->__guardsize = guardsize; return 0; } diff --git a/libc/thread/pthread_attr_setstacksize.c b/libc/thread/pthread_attr_setstacksize.c index 4bc329cac..f2ccb0c99 100644 --- a/libc/thread/pthread_attr_setstacksize.c +++ b/libc/thread/pthread_attr_setstacksize.c @@ -27,7 +27,8 @@ * @raise EINVAL if `stacksize` is less than `PTHREAD_STACK_MIN` */ errno_t pthread_attr_setstacksize(pthread_attr_t *a, size_t stacksize) { - if (stacksize < PTHREAD_STACK_MIN) return EINVAL; + if (stacksize < PTHREAD_STACK_MIN) + return EINVAL; a->__stacksize = stacksize; return 0; } diff --git a/libc/thread/pthread_barrier_init.c b/libc/thread/pthread_barrier_init.c index 90ebf70cf..43770caa2 100644 --- a/libc/thread/pthread_barrier_init.c +++ b/libc/thread/pthread_barrier_init.c @@ -34,8 +34,10 @@ errno_t pthread_barrier_init(pthread_barrier_t *barrier, const pthread_barrierattr_t *attr, unsigned count) { nsync_counter c; - if (!count) return EINVAL; - if (!(c = nsync_counter_new(count))) return ENOMEM; + if (!count) + return EINVAL; + if (!(c = nsync_counter_new(count))) + return ENOMEM; *barrier = (pthread_barrier_t){._nsync = c}; return 0; } diff --git a/libc/thread/pthread_cancel.c b/libc/thread/pthread_cancel.c index 002d994bc..bc9dfd79e 100644 --- a/libc/thread/pthread_cancel.c +++ b/libc/thread/pthread_cancel.c @@ -66,10 +66,14 @@ static void _pthread_cancel_sig(int sig, siginfo_t *si, void *arg) { // check thread runtime state is initialized and cancelled struct PosixThread *pt; - if (!__tls_enabled) return; - if (!(pt = _pthread_self())) return; - if (pt->pt_flags & PT_NOCANCEL) return; - if (!atomic_load_explicit(&pt->pt_canceled, memory_order_acquire)) return; + if (!__tls_enabled) + return; + if (!(pt = _pthread_self())) + return; + if (pt->pt_flags & PT_NOCANCEL) + return; + if (!atomic_load_explicit(&pt->pt_canceled, memory_order_acquire)) + return; // in asynchronous mode the asynchronous signal calls exit if (pt->pt_flags & PT_ASYNC) { @@ -137,7 +141,8 @@ static errno_t _pthread_cancel_single(struct PosixThread *pt) { // send the cancelation signal errno_t err; err = pthread_kill((pthread_t)pt, SIGTHR); - if (err == ESRCH) err = 0; + if (err == ESRCH) + err = 0; return err; } @@ -369,9 +374,12 @@ errno_t pthread_cancel(pthread_t thread) { */ void pthread_testcancel(void) { struct PosixThread *pt; - if (!__tls_enabled) return; - if (!(pt = _pthread_self())) return; - if (pt->pt_flags & PT_NOCANCEL) return; + if (!__tls_enabled) + return; + if (!(pt = _pthread_self())) + return; + if (pt->pt_flags & PT_NOCANCEL) + return; if ((!(pt->pt_flags & PT_MASKED) || (pt->pt_flags & PT_ASYNC)) && atomic_load_explicit(&pt->pt_canceled, memory_order_acquire)) { pthread_exit(PTHREAD_CANCELED); @@ -396,10 +404,14 @@ void pthread_testcancel(void) { */ errno_t pthread_testcancel_np(void) { struct PosixThread *pt; - if (!__tls_enabled) return 0; - if (!(pt = _pthread_self())) return 0; - if (pt->pt_flags & PT_NOCANCEL) return 0; - if (!atomic_load_explicit(&pt->pt_canceled, memory_order_acquire)) return 0; + if (!__tls_enabled) + return 0; + if (!(pt = _pthread_self())) + return 0; + if (pt->pt_flags & PT_NOCANCEL) + return 0; + if (!atomic_load_explicit(&pt->pt_canceled, memory_order_acquire)) + return 0; if (!(pt->pt_flags & PT_MASKED) || (pt->pt_flags & PT_ASYNC)) { pthread_exit(PTHREAD_CANCELED); } else { diff --git a/libc/thread/pthread_create.c b/libc/thread/pthread_create.c index d259e8923..b59d74845 100644 --- a/libc/thread/pthread_create.c +++ b/libc/thread/pthread_create.c @@ -66,7 +66,8 @@ __static_yoink("_pthread_atfork"); void _pthread_free(struct PosixThread *pt, bool isfork) { unassert(dll_is_alone(&pt->list) && &pt->list != _pthread_list); - if (pt->pt_flags & PT_STATIC) return; + if (pt->pt_flags & PT_STATIC) + return; if (pt->pt_flags & PT_OWNSTACK) { unassert(!munmap(pt->pt_attr.__stackaddr, pt->pt_attr.__stacksize)); } @@ -94,7 +95,8 @@ StartOver: for (e = dll_last(_pthread_list); e; e = dll_prev(_pthread_list, e)) { pt = POSIXTHREAD_CONTAINER(e); status = atomic_load_explicit(&pt->pt_status, memory_order_acquire); - if (status != kPosixThreadZombie) break; + if (status != kPosixThreadZombie) + break; if (!atomic_load_explicit(&pt->tib->tib_tid, memory_order_acquire)) { dll_remove(&_pthread_list, e); _pthread_unlock(); @@ -316,8 +318,10 @@ static errno_t pthread_create_impl(pthread_t *thread, } static const char *DescribeHandle(char buf[12], errno_t err, pthread_t *th) { - if (err) return "n/a"; - if (!th) return "NULL"; + if (err) + return "n/a"; + if (!th) + return "NULL"; FormatInt32(buf, _pthread_tid((struct PosixThread *)*th)); return buf; } diff --git a/libc/thread/pthread_getname_np.c b/libc/thread/pthread_getname_np.c index eaa3d14bd..cca44d59d 100644 --- a/libc/thread/pthread_getname_np.c +++ b/libc/thread/pthread_getname_np.c @@ -36,7 +36,8 @@ static errno_t pthread_getname_impl(struct PosixThread *pt, char *name, int e, fd, rc, tid, len; tid = _pthread_tid(pt); - if (!size) return 0; + if (!size) + return 0; bzero(name, size); e = errno; diff --git a/libc/thread/pthread_key_create.c b/libc/thread/pthread_key_create.c index ae005b988..1f04da7a8 100644 --- a/libc/thread/pthread_key_create.c +++ b/libc/thread/pthread_key_create.c @@ -45,7 +45,8 @@ int pthread_key_create(pthread_key_t *key, pthread_key_dtor dtor) { int i; pthread_key_dtor expect; - if (!dtor) dtor = (pthread_key_dtor)-1; + if (!dtor) + dtor = (pthread_key_dtor)-1; for (i = 0; i < PTHREAD_KEYS_MAX; ++i) { if (!(expect = atomic_load_explicit(_pthread_key_dtor + i, memory_order_acquire)) && diff --git a/libc/thread/pthread_setcanceltype.c b/libc/thread/pthread_setcanceltype.c index 44c5d0a78..48290d5cf 100644 --- a/libc/thread/pthread_setcanceltype.c +++ b/libc/thread/pthread_setcanceltype.c @@ -27,10 +27,14 @@ #include "libc/thread/tls.h" static const char *DescribeCancelType(char buf[12], int err, int *t) { - if (err) return "n/a"; - if (!t) return "NULL"; - if (*t == PTHREAD_CANCEL_DEFERRED) return "PTHREAD_CANCEL_DEFERRED"; - if (*t == PTHREAD_CANCEL_ASYNCHRONOUS) return "PTHREAD_CANCEL_ASYNCHRONOUS"; + if (err) + return "n/a"; + if (!t) + return "NULL"; + if (*t == PTHREAD_CANCEL_DEFERRED) + return "PTHREAD_CANCEL_DEFERRED"; + if (*t == PTHREAD_CANCEL_ASYNCHRONOUS) + return "PTHREAD_CANCEL_ASYNCHRONOUS"; FormatInt32(buf, *t); return buf; } diff --git a/libc/thread/pthread_timedjoin_np.c b/libc/thread/pthread_timedjoin_np.c index f1a1e56a5..db5baae7a 100644 --- a/libc/thread/pthread_timedjoin_np.c +++ b/libc/thread/pthread_timedjoin_np.c @@ -33,8 +33,10 @@ static const char *DescribeReturnValue(char buf[30], int err, void **value) { char *p = buf; - if (!value) return "NULL"; - if (err) return "[n/a]"; + if (!value) + return "NULL"; + if (err) + return "[n/a]"; *p++ = '['; p = FormatHex64(p, (uintptr_t)*value, 1); *p++ = ']'; diff --git a/libc/thread/sem_destroy.c b/libc/thread/sem_destroy.c index 7c4b8e088..fb0e3c356 100644 --- a/libc/thread/sem_destroy.c +++ b/libc/thread/sem_destroy.c @@ -42,10 +42,12 @@ int sem_destroy(sem_t *sem) { int waiters; npassert(sem->sem_magic != SEM_MAGIC_NAMED); - if (sem->sem_magic != SEM_MAGIC_UNNAMED) return einval(); + if (sem->sem_magic != SEM_MAGIC_UNNAMED) + return einval(); waiters = atomic_load_explicit(&sem->sem_waiters, memory_order_relaxed); unassert(waiters >= 0); - if (waiters) return ebusy(); + if (waiters) + return ebusy(); atomic_store_explicit(&sem->sem_value, INT_MIN, memory_order_relaxed); return 0; } diff --git a/libc/thread/sem_init.c b/libc/thread/sem_init.c index 77c1dfac7..e86f18313 100644 --- a/libc/thread/sem_init.c +++ b/libc/thread/sem_init.c @@ -37,7 +37,8 @@ * @raise EINVAL if `value` exceeds `SEM_VALUE_MAX` */ int sem_init(sem_t *sem, int pshared, unsigned value) { - if (value > SEM_VALUE_MAX) return einval(); + if (value > SEM_VALUE_MAX) + return einval(); sem->sem_magic = SEM_MAGIC_UNNAMED; atomic_store_explicit(&sem->sem_value, value, memory_order_relaxed); sem->sem_pshared = !!pshared; diff --git a/libc/thread/sem_timedwait.c b/libc/thread/sem_timedwait.c index cde1ef2b0..2ffcbf5ee 100644 --- a/libc/thread/sem_timedwait.c +++ b/libc/thread/sem_timedwait.c @@ -35,7 +35,8 @@ static void sem_delay(int n) { volatile int i; - for (i = 0; i != 1 << n; i++) donothing; + for (i = 0; i != 1 << n; i++) + donothing; } static void sem_timedwait_cleanup(void *arg) { diff --git a/libc/thread/sem_trywait.c b/libc/thread/sem_trywait.c index 56584ac7c..96a07bf4d 100644 --- a/libc/thread/sem_trywait.c +++ b/libc/thread/sem_trywait.c @@ -47,8 +47,10 @@ int sem_trywait(sem_t *sem) { v = atomic_load_explicit(&sem->sem_value, memory_order_relaxed); do { unassert(v > INT_MIN); - if (!v) return eagain(); - if (v < 0) return einval(); + if (!v) + return eagain(); + if (v < 0) + return einval(); } while (!atomic_compare_exchange_weak_explicit( &sem->sem_value, &v, v - 1, memory_order_acquire, memory_order_relaxed)); return 0; diff --git a/libc/time/strptime.c b/libc/time/strptime.c index 63d9020ac..351c3d4d9 100644 --- a/libc/time/strptime.c +++ b/libc/time/strptime.c @@ -50,7 +50,8 @@ char *strptime(const char *s, const char *f, struct tm *tm) { continue; } f++; - if (*f == '+') f++; + if (*f == '+') + f++; if (isdigit(*f)) { char *new_f; w = strtoul(f, &new_f, 10); @@ -87,11 +88,13 @@ char *strptime(const char *s, const char *f, struct tm *tm) { goto symbolic_range; case 'c': s = strptime(s, "%a %b %e %T %Y", tm); - if (!s) return 0; + if (!s) + return 0; break; case 'C': dest = ¢ury; - if (w < 0) w = 2; + if (w < 0) + w = 2; want_century |= 2; goto numeric_digits; case 'd': @@ -102,7 +105,8 @@ char *strptime(const char *s, const char *f, struct tm *tm) { goto numeric_range; case 'D': s = strptime(s, "%m/%d/%y", tm); - if (!s) return 0; + if (!s) + return 0; break; case 'H': dest = &tm->tm_hour; @@ -154,11 +158,13 @@ char *strptime(const char *s, const char *f, struct tm *tm) { return 0; case 'r': s = strptime(s, "%I:%M:%S %p", tm); - if (!s) return 0; + if (!s) + return 0; break; case 'R': s = strptime(s, "%H:%M", tm); - if (!s) return 0; + if (!s) + return 0; break; case 'S': dest = &tm->tm_sec; @@ -167,7 +173,8 @@ char *strptime(const char *s, const char *f, struct tm *tm) { goto numeric_range; case 'T': s = strptime(s, "%H:%M:%S", tm); - if (!s) return 0; + if (!s) + return 0; break; case 'U': case 'W': @@ -183,11 +190,13 @@ char *strptime(const char *s, const char *f, struct tm *tm) { goto numeric_range; case 'x': s = strptime(s, "%y-%m-%d", tm); - if (!s) return 0; + if (!s) + return 0; break; case 'X': s = strptime(s, "%H:%M:%S", tm); - if (!s) return 0; + if (!s) + return 0; break; case 'y': dest = &relyear; @@ -196,22 +205,26 @@ char *strptime(const char *s, const char *f, struct tm *tm) { goto numeric_digits; case 'Y': dest = &tm->tm_year; - if (w < 0) w = 4; + if (w < 0) + w = 4; adj = 1900; want_century = 0; goto numeric_digits; case '%': - if (*s++ != '%') return 0; + if (*s++ != '%') + return 0; break; default: return 0; numeric_range: - if (!isdigit(*s)) return 0; + if (!isdigit(*s)) + return 0; *dest = 0; for (i = 1; i <= min + range && isdigit(*s); i *= 10) { *dest = *dest * 10 + *s++ - '0'; } - if (*dest - min >= (unsigned)range) return 0; + if (*dest - min >= (unsigned)range) + return 0; *dest -= adj; switch ((char *)dest - (char *)tm) { case offsetof(struct tm, tm_yday):; @@ -223,10 +236,12 @@ char *strptime(const char *s, const char *f, struct tm *tm) { s++; else if (*s == '-') neg = 1, s++; - if (!isdigit(*s)) return 0; + if (!isdigit(*s)) + return 0; for (*dest = i = 0; i < w && isdigit(*s); i++) *dest = *dest * 10 + *s++ - '0'; - if (neg) *dest = -*dest; + if (neg) + *dest = -*dest; *dest -= adj; goto update; symbolic_range: @@ -239,7 +254,8 @@ char *strptime(const char *s, const char *f, struct tm *tm) { break; } } - if (i == range) return 0; + if (i == range) + return 0; goto update; update: // FIXME diff --git a/libc/vga/readv-vga.c b/libc/vga/readv-vga.c index daf585641..3f746e729 100644 --- a/libc/vga/readv-vga.c +++ b/libc/vga/readv-vga.c @@ -47,11 +47,14 @@ ssize_t sys_readv_vga(struct Fd *fd, const struct iovec *iov, int iovlen) { void *input = iov[i].iov_base; size_t len = iov[i].iov_len; res = _TtyRead(&_vga_tty, input, len); - if (res < 0) break; + if (res < 0) + break; redd += res; - if (redd != len) return redd; + if (redd != len) + return redd; } - if (!redd) return res; + if (!redd) + return res; return redd; } diff --git a/libc/vga/tty.greg.c b/libc/vga/tty.greg.c index 85bef6bb1..4f84a240e 100644 --- a/libc/vga/tty.greg.c +++ b/libc/vga/tty.greg.c @@ -71,7 +71,8 @@ static void SetXsFb(struct Tty *tty, unsigned short xsfb) { static bool SetWcs(struct Tty *tty, unsigned init_flags) { #ifdef VGA_USE_WCS struct DirectMap dm; - if (!(init_flags & kTtyAllocWcs)) return false; + if (!(init_flags & kTtyAllocWcs)) + return false; dm = sys_mmap_metal(NULL, Yn(tty) * Xn(tty) * sizeof(wchar_t), PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); @@ -200,11 +201,14 @@ void _StartTty(struct Tty *tty, unsigned char type, unsigned short yp, tty->yc = yc; tty->xc = xc; tty->fb = fb; - if (starty >= yn) starty = yn - 1; - if (startx >= xn) startx = xn - 1; + if (starty >= yn) + starty = yn - 1; + if (startx >= xn) + startx = xn - 1; tty->y = starty; tty->x = startx; - if ((init_flags & kTtyKlog) != 0) init_flags &= ~kTtyAllocWcs; + if ((init_flags & kTtyKlog) != 0) + init_flags &= ~kTtyAllocWcs; tty->xs = xs; TtySetType(tty, type, init_flags); if (SetWcs(tty, init_flags)) { @@ -212,7 +216,8 @@ void _StartTty(struct Tty *tty, unsigned char type, unsigned short yp, size_t n = (size_t)yn * xn, i; if (type == PC_VIDEO_TEXT) { struct VgaTextCharCell *ccs = fb; - for (i = 0; i < n; ++i) wcs[i] = bing(ccs[i].ch, 0); + for (i = 0; i < n; ++i) + wcs[i] = bing(ccs[i].ch, 0); } else wmemset(wcs, L' ', n); } @@ -334,9 +339,12 @@ static void TtySetCodepage(struct Tty *tty, char id) { static uint8_t TtyGetTextColor(TtyCanvasColor color) { uint8_t r = color.bgr.r, g = color.bgr.g, b = color.bgr.b; uint8_t hue = 0, max = MAX(MAX(r, g), b); - if (r > max / 2) hue |= 4; - if (g > max / 2) hue |= 2; - if (b > max / 2) hue |= 1; + if (r > max / 2) + hue |= 4; + if (g > max / 2) + hue |= 2; + if (b > max / 2) + hue |= 1; if (hue == 7 && max <= 0x55) hue = 8; else if (max > 0xaa) @@ -367,9 +375,11 @@ static uint8_t TtyGetTextAttr(struct Tty *tty) { * simplistic than what Linux does, but should be enough. */ attr &= ~0x80; - if ((tty->pr & kTtyBlink) != 0) attr |= 0x80; + if ((tty->pr & kTtyBlink) != 0) + attr |= 0x80; #endif - if ((tty->pr & kTtyBold) != 0) attr |= 0x08; + if ((tty->pr & kTtyBold) != 0) + attr |= 0x08; return attr; } @@ -381,7 +391,8 @@ static void TtyTextDrawChar(struct Tty *tty, size_t y, size_t x, wchar_t wc) { struct VgaTextCharCell *ccs = (struct VgaTextCharCell *)tty->canvas; size_t i = tty->y * Xn(tty) + tty->x; int c = unbing(wc); - if (c == -1) c = 0xFE; + if (c == -1) + c = 0xFE; ccs[i] = (struct VgaTextCharCell){c, attr}; } @@ -390,7 +401,8 @@ static void TtyTextEraseLineCells(struct Tty *tty, size_t dsty, size_t dstx, uint8_t attr = TtyGetTextAttr(tty); struct VgaTextCharCell *ccs = (struct VgaTextCharCell *)tty->canvas; size_t dst = dsty * Xn(tty) + dstx, i; - for (i = 0; i < n; ++i) ccs[dst + i] = (struct VgaTextCharCell){' ', attr}; + for (i = 0; i < n; ++i) + ccs[dst + i] = (struct VgaTextCharCell){' ', attr}; } void _TtyEraseLineCells(struct Tty *tty, size_t dsty, size_t dstx, size_t n) { @@ -423,7 +435,8 @@ void _TtyMoveLineCells(struct Tty *tty, size_t dsty, size_t dstx, size_t srcy, size_t xn = Xn(tty); size_t dst = dsty * xn + dstx, src = srcy * xn + srcx; tty->movelinecells(tty, dsty, dstx, srcy, srcx, n); - if (Wcs(tty)) wmemmove(Wcs(tty) + dst, Wcs(tty) + src, n); + if (Wcs(tty)) + wmemmove(Wcs(tty) + dst, Wcs(tty) + src, n); } void _TtyMoveLines(struct Tty *tty, size_t dsty, size_t srcy, size_t n) { @@ -435,7 +448,8 @@ void _TtyMoveLines(struct Tty *tty, size_t dsty, size_t srcy, size_t n) { ++srcy; } } else if (dsty > srcy) { - while (n-- != 0) _TtyMoveLineCells(tty, dsty + n, 0, srcy + n, 0, xn); + while (n-- != 0) + _TtyMoveLineCells(tty, dsty + n, 0, srcy + n, 0, xn); } } @@ -520,12 +534,14 @@ static void TtyAdvance(struct Tty *tty) { } static void TtyWriteGlyph(struct Tty *tty, wint_t wc, int w) { - if (w < 1) wc = L' ', w = 1; + if (w < 1) + wc = L' ', w = 1; if ((tty->conf & kTtyRedzone) || tty->x + w > Xn(tty)) { TtyAdvance(tty); } tty->drawchar(tty, tty->y, tty->x, wc); - if (Wcs(tty)) Wcs(tty)[tty->y * Xn(tty) + tty->x] = wc; + if (Wcs(tty)) + Wcs(tty)[tty->y * Xn(tty) + tty->x] = wc; if ((tty->x += w) >= Xn(tty)) { tty->x = Xn(tty) - 1; tty->conf |= kTtyRedzone; @@ -556,14 +572,17 @@ static void TtyWriteTab(struct Tty *tty) { int TtyAtoi(const char *s, const char **e) { int i; - for (i = 0; isdigit(*s); ++s) i *= 10, i += *s - '0'; - if (e) *e = s; + for (i = 0; isdigit(*s); ++s) + i *= 10, i += *s - '0'; + if (e) + *e = s; return i; } static int TtyGetMoveParam(struct Tty *tty) { int x = TtyAtoi(tty->esc.s, NULL); - if (x < 1) x = 1; + if (x < 1) + x = 1; return x; } @@ -571,7 +590,8 @@ static void TtySetCursorPosition(struct Tty *tty) { int row, col; const char *s = tty->esc.s; row = max(1, TtyAtoi(s, &s)); - if (*s == ';') ++s; + if (*s == ';') + ++s; col = max(1, TtyAtoi(s, &s)); _TtySetY(tty, row - 1); _TtySetX(tty, col - 1); @@ -593,12 +613,14 @@ static void TtyMoveCursor(struct Tty *tty, int dy, int dx) { static void TtyScrollUp(struct Tty *tty) { int n = TtyGetMoveParam(tty); - while (n--) TtyScroll(tty); + while (n--) + TtyScroll(tty); } static void TtyScrollDown(struct Tty *tty) { int n = TtyGetMoveParam(tty); - while (n--) TtyReverse(tty); + while (n--) + TtyReverse(tty); } static void TtySetCursorStatus(struct Tty *tty, bool status) { @@ -1110,8 +1132,10 @@ static void TtyCsi(struct Tty *tty) { static void TtyScreenAlignmentDisplay(struct Tty *tty) { size_t yn = Yn(tty), xn = Xn(tty), y, x; for (y = 0; y < yn; ++y) - for (x = 0; x < xn; ++x) tty->drawchar(tty, y, x, 'E'); - if (Wcs(tty)) wmemset(Wcs(tty), L'E', yn * xn); + for (x = 0; x < xn; ++x) + tty->drawchar(tty, y, x, 'E'); + if (Wcs(tty)) + wmemset(Wcs(tty), L'E', yn * xn); } static void TtyEscHash(struct Tty *tty) { @@ -1212,7 +1236,8 @@ static void TtyUpdate(struct Tty *tty) { if (tty->type == PC_VIDEO_TEXT) { unsigned char start = tty->yc - 2, end = tty->yc - 1; unsigned short pos = tty->y * Xn(tty) + tty->x; - if ((tty->conf & kTtyNocursor)) start |= 1 << 5; + if ((tty->conf & kTtyNocursor)) + start |= 1 << 5; outb(CRTPORT, 0x0A); outb(CRTPORT + 1, start); outb(CRTPORT, 0x0B); @@ -1251,7 +1276,8 @@ ssize_t _TtyWrite(struct Tty *tty, const void *data, size_t n) { case kTtyUtf8: if (ThomPikeCont(p[i])) { tty->u8 = ThomPikeMerge(tty->u8, p[i]); - if (--tty->n8) break; + if (--tty->n8) + break; } wc = tty->u8; if ((0x00 <= wc && wc <= 0x1F) || (0x7F <= wc && wc <= 0x9F)) { diff --git a/libc/vga/vga-init.greg.c b/libc/vga/vga-init.greg.c index f147334d5..2c055e630 100644 --- a/libc/vga/vga-init.greg.c +++ b/libc/vga/vga-init.greg.c @@ -91,7 +91,8 @@ void uvprintf(const char *fmt, va_list v) { char *buf = alloca(size); CheckLargeStackAllocation(buf, size); size_t count = kvsnprintf(buf, size, fmt, v); - if (count >= size) count = size - 1; + if (count >= size) + count = size - 1; _TtyWrite(&_vga_tty, buf, count); _klog_serial(buf, count); } diff --git a/libc/vga/writev-vga.c b/libc/vga/writev-vga.c index 2cbbda83b..1c6d35e1e 100644 --- a/libc/vga/writev-vga.c +++ b/libc/vga/writev-vga.c @@ -39,11 +39,14 @@ ssize_t sys_writev_vga(struct Fd *fd, const struct iovec *iov, int iovlen) { void *output = iov[i].iov_base; size_t len = iov[i].iov_len; res = _TtyWrite(&_vga_tty, output, len); - if (res < 0) break; + if (res < 0) + break; wrote += res; - if (res != len) return wrote; + if (res != len) + return wrote; } - if (!wrote) return res; + if (!wrote) + return res; return wrote; } diff --git a/libc/x/unbingbuf.c b/libc/x/unbingbuf.c index d10b7f56c..e08874679 100644 --- a/libc/x/unbingbuf.c +++ b/libc/x/unbingbuf.c @@ -45,6 +45,7 @@ void *unbingbuf(void *buf, size_t size, const char16_t *glyphs, int fill) { *p = (b = unbing(*glyphs)) & 0xff; /* DCHECK_NE(-1, b, "%`'hc ∉ IBMCP437\n", *glyphs); */ } - if (fill != -1) memset(p, fill, pe - p); + if (fill != -1) + memset(p, fill, pe - p); return buf; } diff --git a/libc/x/utf16to32.c b/libc/x/utf16to32.c index d6ea02664..23784b367 100644 --- a/libc/x/utf16to32.c +++ b/libc/x/utf16to32.c @@ -32,8 +32,10 @@ wchar_t *utf16to32(const char16_t *p, size_t n, size_t *z) { wint_t x, y; wchar_t *r, *q; const char16_t *e; - if (z) *z = 0; - if (n == -1) n = p ? strlen16(p) : 0; + if (z) + *z = 0; + if (n == -1) + n = p ? strlen16(p) : 0; if ((q = r = malloc(n * 4 + 8 + 1))) { for (e = p + n; p < e;) { x = *p++ & 0xffff; @@ -47,9 +49,11 @@ wchar_t *utf16to32(const char16_t *p, size_t n, size_t *z) { } *q++ = x; } - if (z) *z = q - r; + if (z) + *z = q - r; *q++ = '\0'; - if ((q = realloc(r, (q - r) * sizeof(*r)))) r = q; + if ((q = realloc(r, (q - r) * sizeof(*r)))) + r = q; } return r; } diff --git a/libc/x/utf16to8.c b/libc/x/utf16to8.c index ba29cd1bd..219c2e2a9 100644 --- a/libc/x/utf16to8.c +++ b/libc/x/utf16to8.c @@ -46,8 +46,10 @@ char *utf16to8(const char16_t *p, size_t n, size_t *z) { wint_t x, y; const char16_t *e; int16_t v1[8], v2[8], v3[8], vz[8]; - if (z) *z = 0; - if (n == -1) n = p ? strlen16(p) : 0; + if (z) + *z = 0; + if (n == -1) + n = p ? strlen16(p) : 0; if ((q = r = malloc(n * 4 + 8 + 1))) { for (e = p + n; p < e;) { if (p + 8 < e) { /* 17x ascii */ @@ -57,7 +59,8 @@ char *utf16to8(const char16_t *p, size_t n, size_t *z) { pcmpgtw(v2, v1, vz); pcmpgtw(v3, v1, kDel16); pandn((void *)v2, (void *)v3, (void *)v2); - if (pmovmskb((void *)v2) != 0xFFFF) break; + if (pmovmskb((void *)v2) != 0xFFFF) + break; packsswb((void *)v1, v1, v1); memcpy(q, v1, 8); p += 8; @@ -82,9 +85,11 @@ char *utf16to8(const char16_t *p, size_t n, size_t *z) { q += 1; } } - if (z) *z = q - r; + if (z) + *z = q - r; *q++ = '\0'; - if ((q = realloc(r, (q - r) * 1))) r = q; + if ((q = realloc(r, (q - r) * 1))) + r = q; } return r; } diff --git a/libc/x/utf32to8.c b/libc/x/utf32to8.c index 9aabca571..d3089bff0 100644 --- a/libc/x/utf32to8.c +++ b/libc/x/utf32to8.c @@ -32,8 +32,10 @@ char *utf32to8(const wchar_t *p, size_t n, size_t *z) { wint_t x; uint64_t w; char *r, *q; - if (z) *z = 0; - if (n == -1) n = p ? wcslen(p) : 0; + if (z) + *z = 0; + if (n == -1) + n = p ? wcslen(p) : 0; if ((q = r = malloc(n * 6 + 1))) { for (i = 0; i < n; ++i) { x = p[i]; @@ -42,9 +44,11 @@ char *utf32to8(const wchar_t *p, size_t n, size_t *z) { *q++ = w; } while ((w >>= 8)); } - if (z) *z = q - r; + if (z) + *z = q - r; *q++ = '\0'; - if ((q = realloc(r, q - r))) r = q; + if ((q = realloc(r, q - r))) + r = q; } return r; } diff --git a/libc/x/utf8to16.c b/libc/x/utf8to16.c index 8626787a5..aea0aee62 100644 --- a/libc/x/utf8to16.c +++ b/libc/x/utf8to16.c @@ -34,8 +34,10 @@ char16_t *utf8to16(const char *p, size_t n, size_t *z) { wint_t x, a, b; char16_t *r, *q; unsigned m, j, w; - if (z) *z = 0; - if (n == -1) n = p ? strlen(p) : 0; + if (z) + *z = 0; + if (n == -1) + n = p ? strlen(p) : 0; if ((q = r = malloc((n + 16) * sizeof(char16_t) * 2 + sizeof(char16_t)))) { for (i = 0; i < n;) { #if defined(__SSE2__) && defined(__GNUC__) && !defined(__STRICT_ANSI__) && \ @@ -66,7 +68,8 @@ char16_t *utf8to16(const char *p, size_t n, size_t *z) { if (i + m <= n) { for (j = 0;;) { b = p[i + j] & 0xff; - if (!ThomPikeCont(b)) break; + if (!ThomPikeCont(b)) + break; a = ThomPikeMerge(a, b); if (++j == m) { x = a; @@ -78,11 +81,14 @@ char16_t *utf8to16(const char *p, size_t n, size_t *z) { } w = EncodeUtf16(x); *q++ = w; - if ((w >>= 16)) *q++ = w; + if ((w >>= 16)) + *q++ = w; } - if (z) *z = q - r; + if (z) + *z = q - r; *q++ = '\0'; - if ((q = realloc(r, (q - r) * sizeof(char16_t)))) r = q; + if ((q = realloc(r, (q - r) * sizeof(char16_t)))) + r = q; } return r; } diff --git a/libc/x/utf8to32.c b/libc/x/utf8to32.c index 0d8687f72..f1a8568cc 100644 --- a/libc/x/utf8to32.c +++ b/libc/x/utf8to32.c @@ -42,8 +42,10 @@ wchar_t *utf8to32(const char *p, size_t n, size_t *z) { wint_t x, a, b; wchar_t *r, *q; uint8_t v1[16], v2[16], v3[16], v4[16], vz[16]; - if (z) *z = 0; - if (n == -1) n = p ? strlen(p) : 0; + if (z) + *z = 0; + if (n == -1) + n = p ? strlen(p) : 0; if ((q = r = malloc(n * sizeof(wchar_t) + sizeof(wchar_t)))) { for (i = 0; i < n;) { if (!((uintptr_t)(p + i) & 15) && i + 16 < n) { @@ -52,7 +54,8 @@ wchar_t *utf8to32(const char *p, size_t n, size_t *z) { do { memcpy(v1, p + i, 16); pcmpgtb((int8_t *)v2, (int8_t *)v1, (int8_t *)vz); - if (pmovmskb(v2) != 0xFFFF) break; + if (pmovmskb(v2) != 0xFFFF) + break; punpcklbw(v3, v1, vz); punpckhbw(v1, v1, vz); punpcklwd((void *)v4, (void *)v3, (void *)vz); @@ -74,7 +77,8 @@ wchar_t *utf8to32(const char *p, size_t n, size_t *z) { if (i + m <= n) { for (j = 0;;) { b = p[i + j] & 0xff; - if (!ThomPikeCont(b)) break; + if (!ThomPikeCont(b)) + break; a = ThomPikeMerge(a, b); if (++j == m) { x = a; @@ -86,9 +90,11 @@ wchar_t *utf8to32(const char *p, size_t n, size_t *z) { } *q++ = x; } - if (z) *z = q - r; + if (z) + *z = q - r; *q++ = '\0'; - if ((q = realloc(r, (q - r) * sizeof(wchar_t)))) r = q; + if ((q = realloc(r, (q - r) * sizeof(wchar_t)))) + r = q; } return r; } diff --git a/libc/x/xbarf.c b/libc/x/xbarf.c index c3a44da4c..38d87f005 100644 --- a/libc/x/xbarf.c +++ b/libc/x/xbarf.c @@ -37,7 +37,8 @@ int xbarf(const char *path, const void *data, size_t size) { size_t i, wrote; res = 0; p = data; - if (size == -1) size = data ? strlen(data) : 0; + if (size == -1) + size = data ? strlen(data) : 0; if ((fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644)) != -1) { if (ftruncate(fd, size) != -1) { if (size > 2 * 1024 * 1024) { diff --git a/libc/x/xcalloc.c b/libc/x/xcalloc.c index 97c6a6599..31e1367fe 100644 --- a/libc/x/xcalloc.c +++ b/libc/x/xcalloc.c @@ -24,6 +24,7 @@ */ void *xcalloc(size_t count, size_t size) { void *res = calloc(count, size); - if (!res) xdie(); + if (!res) + xdie(); return res; } diff --git a/libc/x/xdie.c b/libc/x/xdie.c index f737ec5e8..9e6a9a3ba 100644 --- a/libc/x/xdie.c +++ b/libc/x/xdie.c @@ -22,6 +22,7 @@ #include "libc/x/x.h" void xdie(void) { - if (_weaken(__die)) __die(); + if (_weaken(__die)) + __die(); abort(); } diff --git a/libc/x/xfixpath.c b/libc/x/xfixpath.c index 25b15ed6a..da2a86584 100644 --- a/libc/x/xfixpath.c +++ b/libc/x/xfixpath.c @@ -36,7 +36,8 @@ void xfixpath(void) { // turn backslash into slash for (p = path; *p; ++p) { - if (*p == '\\') *p = '/'; + if (*p == '\\') + *p = '/'; } // turn c:/... into /c/... @@ -54,7 +55,8 @@ void xfixpath(void) { // turn semicolon into colon for (p = path; *p; ++p) { - if (*p == ';') *p = ':'; + if (*p == ';') + *p = ':'; } setenv("PATH", path, true); diff --git a/libc/x/xload.c b/libc/x/xload.c index 2b0f8b84a..334b73c95 100644 --- a/libc/x/xload.c +++ b/libc/x/xload.c @@ -42,9 +42,12 @@ */ void *xload(_Atomic(void *) *a, const void *p, size_t n, size_t m) { void *r, *z; - if ((r = atomic_load_explicit(a, memory_order_acquire))) return r; - if (!(r = malloc(m))) return 0; - if (__inflate(r, m, p, n)) return 0; + if ((r = atomic_load_explicit(a, memory_order_acquire))) + return r; + if (!(r = malloc(m))) + return 0; + if (__inflate(r, m, p, n)) + return 0; z = 0; if (!atomic_compare_exchange_strong_explicit(a, &z, r, memory_order_release, memory_order_relaxed)) { diff --git a/libc/x/xmalloc.c b/libc/x/xmalloc.c index cf55e4c5b..d4baed8e0 100644 --- a/libc/x/xmalloc.c +++ b/libc/x/xmalloc.c @@ -24,6 +24,7 @@ */ void *xmalloc(size_t bytes) { void *res = malloc(bytes); - if (!res) xdie(); + if (!res) + xdie(); return res; } diff --git a/libc/x/xmemalign.c b/libc/x/xmemalign.c index 9a27fae96..2bf2194cb 100644 --- a/libc/x/xmemalign.c +++ b/libc/x/xmemalign.c @@ -24,6 +24,7 @@ */ void *xmemalign(size_t alignment, size_t bytes) { void *res = memalign(alignment, bytes); - if (!res) xdie(); + if (!res) + xdie(); return res; } diff --git a/libc/x/xmemalignzero.c b/libc/x/xmemalignzero.c index ef7b3f224..2e6b38ce4 100644 --- a/libc/x/xmemalignzero.c +++ b/libc/x/xmemalignzero.c @@ -26,7 +26,8 @@ void *xmemalignzero(size_t alignment, size_t bytes) { void *p; p = memalign(alignment, bytes); - if (!p) xdie(); + if (!p) + xdie(); bzero(p, bytes); return p; } diff --git a/libc/x/xrealloc.c b/libc/x/xrealloc.c index 877d4df5e..e6f029594 100644 --- a/libc/x/xrealloc.c +++ b/libc/x/xrealloc.c @@ -37,6 +37,7 @@ void *xrealloc(void *p, size_t n) { void *q; q = realloc(p, n); - if (!q && !(p && !n)) xdie(); + if (!q && !(p && !n)) + xdie(); return q; } diff --git a/libc/x/xstrdup.c b/libc/x/xstrdup.c index d51468ca3..5564ddd68 100644 --- a/libc/x/xstrdup.c +++ b/libc/x/xstrdup.c @@ -27,6 +27,7 @@ char *xstrdup(const char *s) { size_t len = strlen(s); char *s2 = malloc(len + 1); - if (UNLIKELY(!s2)) xdie(); + if (UNLIKELY(!s2)) + xdie(); return memcpy(s2, s, len + 1); } diff --git a/libc/x/xstrmul.c b/libc/x/xstrmul.c index 50d87df95..7167c1e83 100644 --- a/libc/x/xstrmul.c +++ b/libc/x/xstrmul.c @@ -28,7 +28,8 @@ char *xstrmul(const char *s, size_t n) { size_t i, m; m = strlen(s); p = xcalloc(n + 1, m); - for (i = 0; i < n; ++i) memcpy(p + i * m, s, m); + for (i = 0; i < n; ++i) + memcpy(p + i * m, s, m); p[i * m] = '\0'; return p; } diff --git a/libc/x/xstrndup.c b/libc/x/xstrndup.c index 8f8ba5ab2..2def02294 100644 --- a/libc/x/xstrndup.c +++ b/libc/x/xstrndup.c @@ -29,6 +29,7 @@ */ char *xstrndup(const char *s, size_t n) { void *res = strndup(s, n); - if (!res) xdie(); + if (!res) + xdie(); return res; } diff --git a/libc/x/xvalloc.c b/libc/x/xvalloc.c index 8470a58f0..f84c64366 100644 --- a/libc/x/xvalloc.c +++ b/libc/x/xvalloc.c @@ -24,6 +24,7 @@ */ void *xvalloc(size_t size) { void *res = valloc(size); - if (!res) xdie(); + if (!res) + xdie(); return res; } diff --git a/libc/x/xvasprintf.c b/libc/x/xvasprintf.c index a24e31e42..786e0a676 100644 --- a/libc/x/xvasprintf.c +++ b/libc/x/xvasprintf.c @@ -28,6 +28,7 @@ */ char *xvasprintf(const char *fmt, va_list va) { char *buf; - if (vasprintf(&buf, fmt, va) == -1) xdie(); + if (vasprintf(&buf, fmt, va) == -1) + xdie(); return buf; } diff --git a/net/http/base32.c b/net/http/base32.c index 6e7963d38..c9a3af12f 100644 --- a/net/http/base32.c +++ b/net/http/base32.c @@ -25,7 +25,8 @@ const char base32def[] = "0123456789abcdefghjkmnpqrstvwxyz"; int tobits(int b) { int bits = 0; - while (b && (b >>= 1)) bits++; + while (b && (b >>= 1)) + bits++; return bits; } @@ -48,7 +49,8 @@ char *EncodeBase32(const char *s, size_t sl, const char *a, size_t al, size_t *ol) { size_t count = 0; char *r = NULL; - if (sl == -1) sl = s ? strlen(s) : 0; + if (sl == -1) + sl = s ? strlen(s) : 0; if (al == 0) { a = base32def; al = sizeof(base32def) / sizeof(a[0]); @@ -78,7 +80,8 @@ char *EncodeBase32(const char *s, size_t sl, const char *a, size_t al, } r[count] = '\0'; } - if (ol) *ol = r ? count : 0; + if (ol) + *ol = r ? count : 0; return r; } @@ -119,7 +122,8 @@ char *DecodeBase32(const char *s, size_t sl, const char *a, size_t al, size_t *ol) { size_t count = 0; char *r = NULL; - if (sl == -1) sl = s ? strlen(s) : 0; + if (sl == -1) + sl = s ? strlen(s) : 0; if (al == 0) { a = base32def; al = sizeof(base32def) / sizeof(a[0]); @@ -138,12 +142,15 @@ char *DecodeBase32(const char *s, size_t sl, const char *a, size_t al, map = kBase32cust; memset(map, -1, 256); // populate the map based on alphabet - for (int i = 0; i < al; i++) map[a[i] & 0xff] = i; + for (int i = 0; i < al; i++) + map[a[i] & 0xff] = i; } while (count < n && *s) { signed char m = map[*s++ & 0xff]; - if (m == -2) continue; - if (m == -1) break; + if (m == -2) + continue; + if (m == -1) + break; buffer <<= bl; buffer |= m; bitsLeft += bl; @@ -154,6 +161,7 @@ char *DecodeBase32(const char *s, size_t sl, const char *a, size_t al, } r[count] = '\0'; } - if (ol) *ol = r ? count : 0; + if (ol) + *ol = r ? count : 0; return r; } diff --git a/net/http/categorizeip.c b/net/http/categorizeip.c index b144346f2..d42235015 100644 --- a/net/http/categorizeip.c +++ b/net/http/categorizeip.c @@ -26,25 +26,44 @@ */ int CategorizeIp(uint32_t x) { int a; - if (IsLoopbackIp(x)) return kIpLoopback; - if (IsPrivateIp(x)) return kIpPrivate; - if (IsMulticastIp(x)) return kIpMulticast; - if (IsAnonymousIp(x)) return kIpAnonymous; /* order matters */ - if (IsTestnetIp(x)) return kIpTestnet; /* order matters */ - if (IsAfrinicIp(x)) return kIpAfrinic; - if (IsLacnicIp(x)) return kIpLacnic; - if (IsApnicIp(x)) return kIpApnic; - if (IsArinIp(x)) return kIpArin; - if (IsRipeIp(x)) return kIpRipe; - if (IsDodIp(x)) return kIpDod; + if (IsLoopbackIp(x)) + return kIpLoopback; + if (IsPrivateIp(x)) + return kIpPrivate; + if (IsMulticastIp(x)) + return kIpMulticast; + if (IsAnonymousIp(x)) + return kIpAnonymous; /* order matters */ + if (IsTestnetIp(x)) + return kIpTestnet; /* order matters */ + if (IsAfrinicIp(x)) + return kIpAfrinic; + if (IsLacnicIp(x)) + return kIpLacnic; + if (IsApnicIp(x)) + return kIpApnic; + if (IsArinIp(x)) + return kIpArin; + if (IsRipeIp(x)) + return kIpRipe; + if (IsDodIp(x)) + return kIpDod; a = (x & 0xff000000) >> 24; - if (a == 12) return kIpAtt; - if (a == 17) return kIpApple; - if (a == 19) return kIpFord; - if (a == 38) return kIpCogent; - if (a == 48) return kIpPrudential; - if (a == 56) return kIpUsps; - if (a == 73) return kIpComcast; - if (a >= 240) return kIpFuture; + if (a == 12) + return kIpAtt; + if (a == 17) + return kIpApple; + if (a == 19) + return kIpFord; + if (a == 38) + return kIpCogent; + if (a == 48) + return kIpPrudential; + if (a == 56) + return kIpUsps; + if (a == 73) + return kIpComcast; + if (a >= 240) + return kIpFuture; return kIpUnknown; } diff --git a/net/http/decodebase64.c b/net/http/decodebase64.c index c775f5924..a9b19288a 100644 --- a/net/http/decodebase64.c +++ b/net/http/decodebase64.c @@ -58,22 +58,27 @@ char *DecodeBase64(const char *data, size_t size, size_t *out_size) { char *r, *q; int a, b, c, d, w; const char *p, *pe; - if (size == -1) size = data ? strlen(data) : 0; + if (size == -1) + size = data ? strlen(data) : 0; if ((r = malloc(ROUNDUP(size, 4) / 4 * 3 + 1))) { q = r; p = data; pe = p + size; for (;;) { do { - if (p == pe) goto Done; + if (p == pe) + goto Done; a = kBase64[*p++ & 0xff]; } while (a == -1); - if (a == -2) continue; + if (a == -2) + continue; do { - if (p == pe) goto Done; + if (p == pe) + goto Done; b = kBase64[*p++ & 0xff]; } while (b == -1); - if (b == -2) continue; + if (b == -2) + continue; do { c = p < pe ? kBase64[*p++ & 0xff] : -2; } while (c == -1); @@ -81,16 +86,21 @@ char *DecodeBase64(const char *data, size_t size, size_t *out_size) { d = p < pe ? kBase64[*p++ & 0xff] : -2; } while (d == -1); w = a << 18 | b << 12; - if (c != -2) w |= c << 6; - if (d != -2) w |= d; + if (c != -2) + w |= c << 6; + if (d != -2) + w |= d; *q++ = (w & 0xFF0000) >> 020; - if (c != -2) *q++ = (w & 0x00FF00) >> 010; - if (d != -2) *q++ = (w & 0x0000FF) >> 000; + if (c != -2) + *q++ = (w & 0x00FF00) >> 010; + if (d != -2) + *q++ = (w & 0x0000FF) >> 000; } Done: n = q - r; *q++ = '\0'; - if ((q = realloc(r, q - r))) r = q; + if ((q = realloc(r, q - r))) + r = q; } else { n = 0; } diff --git a/net/http/decodelatin1.c b/net/http/decodelatin1.c index 7bc8daecd..4799d8a9d 100644 --- a/net/http/decodelatin1.c +++ b/net/http/decodelatin1.c @@ -35,15 +35,18 @@ char *DecodeLatin1(const char *p, size_t n, size_t *z) { size_t i; char *r, *q; int8_t v1[16], v2[16], vz[16]; - if (z) *z = 0; - if (n == -1) n = p ? strlen(p) : 0; + if (z) + *z = 0; + if (n == -1) + n = p ? strlen(p) : 0; if ((q = r = malloc(n * 2 + 1))) { for (i = 0; i < n;) { bzero(vz, 16); /* 3x speedup for ASCII */ while (i + 16 < n) { memcpy(v1, p + i, 16); pcmpgtb(v2, v1, vz); - if (pmovmskb((void *)v2) != 0xFFFF) break; + if (pmovmskb((void *)v2) != 0xFFFF) + break; memcpy(q, v1, 16); q += 16; i += 16; @@ -56,9 +59,11 @@ char *DecodeLatin1(const char *p, size_t n, size_t *z) { *q++ = 0200 | (c & 077); } } - if (z) *z = q - r; + if (z) + *z = q - r; *q++ = '\0'; - if ((q = realloc(r, q - r))) r = q; + if ((q = realloc(r, q - r))) + r = q; } return r; } diff --git a/net/http/encodebase64.c b/net/http/encodebase64.c index f8acf2d71..aac16e72b 100644 --- a/net/http/encodebase64.c +++ b/net/http/encodebase64.c @@ -35,14 +35,18 @@ char *EncodeBase64(const char *data, size_t size, size_t *out_size) { unsigned w; char *r, *q; const unsigned char *p, *pe; - if (size == -1) size = data ? strlen(data) : 0; - if ((n = size) % 3) n += 3 - size % 3; + if (size == -1) + size = data ? strlen(data) : 0; + if ((n = size) % 3) + n += 3 - size % 3; n /= 3, n *= 4; if ((r = malloc(n + 1))) { for (q = r, p = (void *)data, pe = p + size; p < pe; p += 3) { w = p[0] << 020; - if (p + 1 < pe) w |= p[1] << 010; - if (p + 2 < pe) w |= p[2] << 000; + if (p + 1 < pe) + w |= p[1] << 010; + if (p + 2 < pe) + w |= p[2] << 000; *q++ = CHARS[(w >> 18) & 077]; *q++ = CHARS[(w >> 12) & 077]; *q++ = p + 1 < pe ? CHARS[(w >> 6) & 077] : '='; diff --git a/net/http/encodehttpheadervalue.c b/net/http/encodehttpheadervalue.c index 37c5881ef..90f334926 100644 --- a/net/http/encodehttpheadervalue.c +++ b/net/http/encodehttpheadervalue.c @@ -45,7 +45,8 @@ char *EncodeHttpHeaderValue(const char *data, size_t size, size_t *out_size) { size_t n; char *r, *q; const char *p, *e; - if (size == -1) size = data ? strlen(data) : 0; + if (size == -1) + size = data ? strlen(data) : 0; if ((r = malloc(size + 1))) { t = 0; q = r; @@ -77,10 +78,12 @@ char *EncodeHttpHeaderValue(const char *data, size_t size, size_t *out_size) { return NULL; } } - while (q > r && (q[-1] == ' ' || q[-1] == '\t')) --q; + while (q > r && (q[-1] == ' ' || q[-1] == '\t')) + --q; n = q - r; *q++ = '\0'; - if ((q = realloc(r, q - r))) r = q; + if ((q = realloc(r, q - r))) + r = q; } else { n = 0; } diff --git a/net/http/encodelatin1.c b/net/http/encodelatin1.c index 4222de6b6..4d6798ec7 100644 --- a/net/http/encodelatin1.c +++ b/net/http/encodelatin1.c @@ -41,11 +41,15 @@ char *EncodeLatin1(const char *p, size_t n, size_t *z, int f) { char t[256]; char *r, *q; bzero(t, sizeof(t)); - if (f & kControlC0) memset(t + 0x00, 1, 0x20 - 0x00), t[0x7F] = 1; - if (f & kControlC1) memset(t + 0x80, 1, 0xA0 - 0x80); + if (f & kControlC0) + memset(t + 0x00, 1, 0x20 - 0x00), t[0x7F] = 1; + if (f & kControlC1) + memset(t + 0x80, 1, 0xA0 - 0x80); t['\t'] = t['\r'] = t['\n'] = t['\v'] = !!(f & kControlWs); - if (z) *z = 0; - if (n == -1) n = p ? strlen(p) : 0; + if (z) + *z = 0; + if (n == -1) + n = p ? strlen(p) : 0; if ((q = r = malloc(n + 1))) { for (i = 0; i < n;) { c = p[i++] & 0xff; @@ -61,9 +65,11 @@ char *EncodeLatin1(const char *p, size_t n, size_t *z, int f) { } *q++ = c; } - if (z) *z = q - r; + if (z) + *z = q - r; *q++ = '\0'; - if ((q = realloc(r, q - r))) r = q; + if ((q = realloc(r, q - r))) + r = q; } return r; Invalid: diff --git a/net/http/encodeurl.c b/net/http/encodeurl.c index 06ccb93e4..acb7e09d3 100644 --- a/net/http/encodeurl.c +++ b/net/http/encodeurl.c @@ -55,8 +55,10 @@ static size_t DimensionUrl(struct Url *h) { static bool NeedsSquareBrackets(struct Url *h) { int c; size_t i; - if (!memchr(h->host.p, ':', h->host.n)) return false; - if (h->pass.p) return true; + if (!memchr(h->host.p, ':', h->host.n)) + return false; + if (h->pass.p) + return true; if (h->host.n >= 4 && h->host.p[0] == 'v' && h->host.p[2] == '.' && kHexToInt[h->host.p[1] & 0xFF] != -1) { for (i = 3; i < h->host.n; ++i) { @@ -122,7 +124,8 @@ char *EncodeUrl(struct Url *h, size_t *z) { if (h->params.p) { *p++ = '?'; for (i = 0; i < h->params.n; ++i) { - if (i) *p++ = '&'; + if (i) + *p++ = '&'; p = EscapeUrlView(p, &h->params.p[i].key, kEscapeParam); if (h->params.p[i].val.p) { *p++ = '='; @@ -136,10 +139,12 @@ char *EncodeUrl(struct Url *h, size_t *z) { } n = p - m; *p++ = '\0'; - if ((p = realloc(m, p - m))) m = p; + if ((p = realloc(m, p - m))) + m = p; } else { n = 0; } - if (z) *z = n; + if (z) + *z = n; return m; } diff --git a/net/http/escapehtml.c b/net/http/escapehtml.c index d198e500b..a90acb995 100644 --- a/net/http/escapehtml.c +++ b/net/http/escapehtml.c @@ -33,8 +33,10 @@ char *EscapeHtml(const char *p, size_t n, size_t *z) { int c; size_t i; char *q, *r; - if (z) *z = 0; - if (n == -1) n = p ? strlen(p) : 0; + if (z) + *z = 0; + if (n == -1) + n = p ? strlen(p) : 0; if ((q = r = malloc(n * 6 + 1))) { for (i = 0; i < n; ++i) { switch ((c = p[i])) { @@ -82,9 +84,11 @@ char *EscapeHtml(const char *p, size_t n, size_t *z) { break; } } - if (z) *z = q - r; + if (z) + *z = q - r; *q++ = '\0'; - if ((q = realloc(r, q - r))) r = q; + if ((q = realloc(r, q - r))) + r = q; } return r; } diff --git a/net/http/escapejsstringliteral.c b/net/http/escapejsstringliteral.c index d768e2f42..ad7d4f558 100644 --- a/net/http/escapejsstringliteral.c +++ b/net/http/escapejsstringliteral.c @@ -64,8 +64,10 @@ char *EscapeJsStringLiteral(char **r, size_t *y, const char *p, size_t n, uint64_t w; size_t i, j, m; wint_t x, a, b; - if (z) *z = 0; // TODO(jart): why is this here? - if (n == -1) n = p ? strlen(p) : 0; + if (z) + *z = 0; // TODO(jart): why is this here? + if (n == -1) + n = p ? strlen(p) : 0; q = *r; i = n * 8 + 6 + 1; // only need *6 but *8 is faster if (i > *y) { @@ -83,7 +85,8 @@ char *EscapeJsStringLiteral(char **r, size_t *y, const char *p, size_t n, if (i + m <= n) { for (j = 0;;) { b = p[i + j] & 0xff; - if (!ThomPikeCont(b)) break; + if (!ThomPikeCont(b)) + break; a = ThomPikeMerge(a, b); if (++j == m) { x = a; @@ -148,7 +151,8 @@ char *EscapeJsStringLiteral(char **r, size_t *y, const char *p, size_t n, __builtin_unreachable(); } } - if (z) *z = q - *r; + if (z) + *z = q - *r; *q++ = '\0'; } return *r; diff --git a/net/http/escapeurl.c b/net/http/escapeurl.c index f0888085b..8833b08c2 100644 --- a/net/http/escapeurl.c +++ b/net/http/escapeurl.c @@ -42,14 +42,18 @@ char *EscapeUrl(const char *p, size_t n, size_t *z, const char T[256]) { char *r, *q; struct UrlView v; - if (n == -1) n = p ? strlen(p) : 0; - if (z) *z = 0; + if (n == -1) + n = p ? strlen(p) : 0; + if (z) + *z = 0; if ((q = r = malloc(n * 6 + 1))) { v.p = (char *)p, v.n = n; q = EscapeUrlView(r, &v, T); - if (z) *z = q - r; + if (z) + *z = q - r; *q++ = '\0'; - if ((q = realloc(r, q - r))) r = q; + if ((q = realloc(r, q - r))) + r = q; } return r; } diff --git a/net/http/findcontenttype.c b/net/http/findcontenttype.c index 8437a4b3f..fc4f826f7 100644 --- a/net/http/findcontenttype.c +++ b/net/http/findcontenttype.c @@ -138,7 +138,8 @@ static const char *BisectContentType(uint64_t ext) { const char *FindContentType(const char *p, size_t n) { int c; uint64_t w; - if (n == -1) n = p ? strlen(p) : 0; + if (n == -1) + n = p ? strlen(p) : 0; for (w = 0; n--;) { c = p[n] & 255; if (c == '.') { diff --git a/net/http/hascontrolcodes.c b/net/http/hascontrolcodes.c index 9bde21547..8e3741493 100644 --- a/net/http/hascontrolcodes.c +++ b/net/http/hascontrolcodes.c @@ -35,10 +35,13 @@ ssize_t HasControlCodes(const char *p, size_t n, int f) { wint_t x, a, b; size_t i, j, m, g; bzero(t, sizeof(t)); - if (f & kControlC0) memset(t + 0x00, 1, 0x20 - 0x00), t[0x7F] = 1; - if (f & kControlC1) memset(t + 0x80, 1, 0xA0 - 0x80); + if (f & kControlC0) + memset(t + 0x00, 1, 0x20 - 0x00), t[0x7F] = 1; + if (f & kControlC1) + memset(t + 0x80, 1, 0xA0 - 0x80); t['\t'] = t['\r'] = t['\n'] = t['\v'] = !!(f & kControlWs); - if (n == -1) n = p ? strlen(p) : 0; + if (n == -1) + n = p ? strlen(p) : 0; for (i = 0; i < n;) { g = i; x = p[i++] & 0xff; @@ -48,7 +51,8 @@ ssize_t HasControlCodes(const char *p, size_t n, int f) { if (i + m <= n) { for (j = 0;;) { b = p[i + j] & 0xff; - if (!ThomPikeCont(b)) break; + if (!ThomPikeCont(b)) + break; a = ThomPikeMerge(a, b); if (++j == m) { x = a; diff --git a/net/http/headerhassubstring.c b/net/http/headerhassubstring.c index 7af8ebbc6..3d96db17a 100644 --- a/net/http/headerhassubstring.c +++ b/net/http/headerhassubstring.c @@ -34,7 +34,8 @@ bool HeaderHas(struct HttpMessage *m, const char *b, int h, const char *s, size_t n) { size_t i; unassert(0 <= h && h < kHttpHeadersMax); - if (n == -1) n = s ? strlen(s) : 0; + if (n == -1) + n = s ? strlen(s) : 0; if (m->headers[h].a) { if (memmem(b + m->headers[h].a, m->headers[h].b - m->headers[h].a, s, n)) { return true; diff --git a/net/http/indentlines.c b/net/http/indentlines.c index 81d90ebdd..365816f7e 100644 --- a/net/http/indentlines.c +++ b/net/http/indentlines.c @@ -34,7 +34,8 @@ char *IndentLines(const char *p, size_t n, size_t *z, size_t j) { char *r, *q; const char *l; size_t t, m, a; - if (n == -1) n = p ? strlen(p) : 0; + if (n == -1) + n = p ? strlen(p) : 0; r = 0; t = 0; do { @@ -49,7 +50,8 @@ char *IndentLines(const char *p, size_t n, size_t *z, size_t j) { r = q; } else { free(r); - if (z) *z = 0; + if (z) + *z = 0; return 0; } memset(r + t, ' ', a); @@ -58,7 +60,8 @@ char *IndentLines(const char *p, size_t n, size_t *z, size_t j) { p += m; n -= m; } while (l); - if (z) *z = t; + if (z) + *z = t; r[t] = '\0'; return r; } diff --git a/net/http/isacceptablehost.c b/net/http/isacceptablehost.c index 9b7c13c6a..f8dc7feed 100644 --- a/net/http/isacceptablehost.c +++ b/net/http/isacceptablehost.c @@ -54,8 +54,10 @@ extern const char kHostChars[256]; // -_0-9A-Za-z bool IsAcceptableHost(const char *s, size_t n) { size_t i; int c, b, j; - if (n == -1) n = s ? strlen(s) : 0; - if (!n) return true; + if (n == -1) + n = s ? strlen(s) : 0; + if (!n) + return true; if (n > DNS_NAME_MAX) { return false; } diff --git a/net/http/isacceptablepath.c b/net/http/isacceptablepath.c index 2c1bef544..df9d6d578 100644 --- a/net/http/isacceptablepath.c +++ b/net/http/isacceptablepath.c @@ -40,7 +40,8 @@ bool IsAcceptablePath(const char *data, size_t size) { const char *p, *e; int x, y, a, b, t, i, n; - if (size == -1) size = data ? strlen(data) : 0; + if (size == -1) + size = data ? strlen(data) : 0; t = 0; y = '/'; p = data; @@ -53,7 +54,8 @@ bool IsAcceptablePath(const char *data, size_t size) { if (p + n <= e) { for (i = 0;;) { b = p[i] & 0xff; - if (!ThomPikeCont(b)) break; + if (!ThomPikeCont(b)) + break; a = ThomPikeMerge(a, b); if (++i == n) { x = a; @@ -68,10 +70,10 @@ bool IsAcceptablePath(const char *data, size_t size) { } if (y == '/') { if (x == '.' && // allow /.well-known/ in the first position - (p - data > 2 || - size < 13 || - memcmp(data, "/.well-known/", 13) != 0)) return false; - if (x == '/' && t) return false; + (p - data > 2 || size < 13 || memcmp(data, "/.well-known/", 13) != 0)) + return false; + if (x == '/' && t) + return false; } y = x; t = 1; diff --git a/net/http/isacceptableport.c b/net/http/isacceptableport.c index e7eac3539..f0028b2ca 100644 --- a/net/http/isacceptableport.c +++ b/net/http/isacceptableport.c @@ -39,7 +39,8 @@ bool IsAcceptablePort(const char *s, size_t n) { int p, c; size_t i; - if (n == -1) n = s ? strlen(s) : 0; + if (n == -1) + n = s ? strlen(s) : 0; for (p = i = 0; i < n; ++i) { c = s[i] & 255; if ('0' <= c && c <= '9') { diff --git a/net/http/ismimetype.c b/net/http/ismimetype.c index f8070976c..a810a0585 100644 --- a/net/http/ismimetype.c +++ b/net/http/ismimetype.c @@ -25,10 +25,13 @@ */ bool IsMimeType(const char *t, size_t n, const char *s) { size_t i; - if (n == -1) n = t ? strlen(t) : 0; + if (n == -1) + n = t ? strlen(t) : 0; for (i = 0; i < n; ++i) { - if (!s[i]) return !kHttpToken[t[i] & 0xFF]; - if (kToLower[s[i] & 0xFF] != kToLower[t[i] & 0xFF]) return false; + if (!s[i]) + return !kHttpToken[t[i] & 0xFF]; + if (kToLower[s[i] & 0xFF] != kToLower[t[i] & 0xFF]) + return false; } return !s[i]; } diff --git a/net/http/isnocompressext.c b/net/http/isnocompressext.c index e5670f83d..ac26542b9 100644 --- a/net/http/isnocompressext.c +++ b/net/http/isnocompressext.c @@ -58,12 +58,15 @@ static bool BisectNoCompressExts(uint64_t ext) { bool IsNoCompressExt(const char *p, size_t n) { int c, i; uint64_t w; - if (n == -1) n = p ? strlen(p) : 0; + if (n == -1) + n = p ? strlen(p) : 0; if (n) { for (i = w = 0; n--;) { c = p[n] & 255; - if (c == '.') break; - if (++i > 8) return false; + if (c == '.') + break; + if (++i > 8) + return false; w <<= 8; w |= kToLower[c]; } diff --git a/net/http/isreasonablepath.c b/net/http/isreasonablepath.c index 1a0d7e1d8..bbe7487b5 100644 --- a/net/http/isreasonablepath.c +++ b/net/http/isreasonablepath.c @@ -29,7 +29,8 @@ bool IsReasonablePath(const char *data, size_t size) { const char *p, *e; int x, y, z, a, b, i, n; - if (size == -1) size = data ? strlen(data) : 0; + if (size == -1) + size = data ? strlen(data) : 0; z = '/'; y = '/'; x = '/'; @@ -43,7 +44,8 @@ bool IsReasonablePath(const char *data, size_t size) { if (p + n <= e) { for (i = 0;;) { b = p[i] & 0xff; - if (!ThomPikeCont(b)) break; + if (!ThomPikeCont(b)) + break; a = ThomPikeMerge(a, b); if (++i == n) { x = a; @@ -56,12 +58,16 @@ bool IsReasonablePath(const char *data, size_t size) { if (x == '\\') { x = '/'; } - if (z == '/' && y == '.' && x == '/') return false; - if (z == '/' && y == '.' && x == '.') return false; + if (z == '/' && y == '.' && x == '/') + return false; + if (z == '/' && y == '.' && x == '.') + return false; z = y; y = x; } - if (y == '/' && x == '.') return false; - if (z == '/' && y == '.' && x == '.') return false; + if (y == '/' && x == '.') + return false; + if (z == '/' && y == '.' && x == '.') + return false; return true; } diff --git a/net/http/isvalidcookievalue.c b/net/http/isvalidcookievalue.c index 657e095cf..240c7895c 100644 --- a/net/http/isvalidcookievalue.c +++ b/net/http/isvalidcookievalue.c @@ -33,7 +33,8 @@ static inline bool IsCookieOctet(unsigned char i) { */ bool IsValidCookieValue(const char *s, size_t n) { size_t i; - if (n == -1) n = s ? strlen(s) : 0; + if (n == -1) + n = s ? strlen(s) : 0; for (i = 0; i < n; ++i) { if (!IsCookieOctet(s[i])) { return false; diff --git a/net/http/isvalidhttptoken.c b/net/http/isvalidhttptoken.c index 8dafd45a0..01ec456d0 100644 --- a/net/http/isvalidhttptoken.c +++ b/net/http/isvalidhttptoken.c @@ -26,8 +26,10 @@ */ bool IsValidHttpToken(const char *s, size_t n) { size_t i; - if (!n) return false; - if (n == -1) n = s ? strlen(s) : 0; + if (!n) + return false; + if (n == -1) + n = s ? strlen(s) : 0; for (i = 0; i < n; ++i) { if (!kHttpToken[s[i] & 0xff]) { return false; diff --git a/net/http/parsecidr.c b/net/http/parsecidr.c index 549edb528..01ede3523 100644 --- a/net/http/parsecidr.c +++ b/net/http/parsecidr.c @@ -38,7 +38,8 @@ struct Cidr ParseCidr(const char *s, size_t n) { size_t i; const char *p; struct Cidr c; - if (n == -1) n = s ? strlen(s) : 0; + if (n == -1) + n = s ? strlen(s) : 0; if ((p = strchr(s, '/'))) { if ((c.addr = ParseIp(s, (i = p - s))) != -1) { c.cidr = 0; diff --git a/net/http/parsecontentlength.c b/net/http/parsecontentlength.c index 9b7ed8300..47856e4cd 100644 --- a/net/http/parsecontentlength.c +++ b/net/http/parsecontentlength.c @@ -30,14 +30,19 @@ int64_t ParseContentLength(const char *s, size_t n) { size_t i; int64_t r; - if (n == -1) n = s ? strlen(s) : 0; - if (!n) return -1; + if (n == -1) + n = s ? strlen(s) : 0; + if (!n) + return -1; for (r = i = 0; i < n; ++i) { - if (s[i] == ',' && i > 0) break; - if (!isdigit(s[i])) return -1; + if (s[i] == ',' && i > 0) + break; + if (!isdigit(s[i])) + return -1; r *= 10; r += s[i] - '0'; - if (r >= MAXIMUM) return -1; + if (r >= MAXIMUM) + return -1; } return r; } diff --git a/net/http/parseforwarded.c b/net/http/parseforwarded.c index de826a5fe..0d3e746b3 100644 --- a/net/http/parseforwarded.c +++ b/net/http/parseforwarded.c @@ -40,12 +40,14 @@ int ParseForwarded(const char *s, size_t n, uint32_t *ip, uint16_t *port) { size_t i; char *r; uint32_t x; - if (n == -1) n = s ? strlen(s) : 0; + if (n == -1) + n = s ? strlen(s) : 0; if (n) { t = x = i = 0; if ((r = memrchr(s, ',', n))) { i = r - s; - if ((s[++i] & 255) == ' ') ++i; // skip optional space + if ((s[++i] & 255) == ' ') + ++i; // skip optional space } do { c = s[i++] & 255; @@ -82,8 +84,10 @@ int ParseForwarded(const char *s, size_t n, uint32_t *ip, uint16_t *port) { } } } - if (ip) *ip = x; - if (port) *port = t; + if (ip) + *ip = x; + if (port) + *port = t; return 0; } else { return -1; diff --git a/net/http/parsehttpdatetime.c b/net/http/parsehttpdatetime.c index d95395f80..7d5343466 100644 --- a/net/http/parsehttpdatetime.c +++ b/net/http/parsehttpdatetime.c @@ -42,8 +42,10 @@ static unsigned ParseMonth(const char *p) { */ int64_t ParseHttpDateTime(const char *p, size_t n) { unsigned year, month, day, hour, minute, second, yday, leap; - if (n == -1) n = p ? strlen(p) : 0; - if (n != 29) return 0; + if (n == -1) + n = p ? strlen(p) : 0; + if (n != 29) + return 0; day = (p[5] - '0') * 10 + (p[6] - '0') - 1; month = ParseMonth(p + 8); year = (p[12] - '0') * 1000 + (p[13] - '0') * 100 + (p[14] - '0') * 10 + diff --git a/net/http/parsehttpmessage.c b/net/http/parsehttpmessage.c index b95869d69..47f3483f4 100644 --- a/net/http/parsehttpmessage.c +++ b/net/http/parsehttpmessage.c @@ -91,8 +91,10 @@ int ParseHttpMessage(struct HttpMessage *r, const char *p, size_t n) { c = p[r->i] & 0xff; switch (r->t) { case kHttpStateStart: - if (c == '\r' || c == '\n') break; // RFC7230 § 3.5 - if (!kHttpToken[c]) return ebadmsg(); + if (c == '\r' || c == '\n') + break; // RFC7230 § 3.5 + if (!kHttpToken[c]) + return ebadmsg(); if (r->type == kHttpRequest) { r->t = kHttpStateMethod; r->method = kToUpper[c]; @@ -114,14 +116,16 @@ int ParseHttpMessage(struct HttpMessage *r, const char *p, size_t n) { c = kToUpper[c]; r->method |= (uint64_t)c << r->a; r->a += 8; - if (++r->i == n) break; + if (++r->i == n) + break; c = p[r->i] & 0xff; } break; case kHttpStateUri: for (;;) { if (c == ' ' || c == '\r' || c == '\n') { - if (r->i == r->a) return ebadmsg(); + if (r->i == r->a) + return ebadmsg(); r->uri.a = r->a; r->uri.b = r->i; if (c == ' ') { @@ -135,7 +139,8 @@ int ParseHttpMessage(struct HttpMessage *r, const char *p, size_t n) { } else if (c < 0x20 || (0x7F <= c && c < 0xA0)) { return ebadmsg(); } - if (++r->i == n) break; + if (++r->i == n) + break; c = p[r->i] & 0xff; } break; @@ -158,7 +163,8 @@ int ParseHttpMessage(struct HttpMessage *r, const char *p, size_t n) { case kHttpStateStatus: for (;;) { if (c == ' ' || c == '\r' || c == '\n') { - if (r->status < 100) return ebadmsg(); + if (r->status < 100) + return ebadmsg(); if (c == ' ') { r->a = r->i + 1; r->t = kHttpStateMessage; @@ -169,11 +175,13 @@ int ParseHttpMessage(struct HttpMessage *r, const char *p, size_t n) { } else if ('0' <= c && c <= '9') { r->status *= 10; r->status += c - '0'; - if (r->status > 999) return ebadmsg(); + if (r->status > 999) + return ebadmsg(); } else { return ebadmsg(); } - if (++r->i == n) break; + if (++r->i == n) + break; c = p[r->i] & 0xff; } break; @@ -187,12 +195,14 @@ int ParseHttpMessage(struct HttpMessage *r, const char *p, size_t n) { } else if (c < 0x20 || (0x7F <= c && c < 0xA0)) { return ebadmsg(); } - if (++r->i == n) break; + if (++r->i == n) + break; c = p[r->i] & 0xff; } break; case kHttpStateCr: - if (c != '\n') return ebadmsg(); + if (c != '\n') + return ebadmsg(); r->t = kHttpStateLf1; break; case kHttpStateLf1: @@ -218,12 +228,14 @@ int ParseHttpMessage(struct HttpMessage *r, const char *p, size_t n) { } else if (!kHttpToken[c]) { return ebadmsg(); } - if (++r->i == n) break; + if (++r->i == n) + break; c = p[r->i] & 0xff; } break; case kHttpStateColon: - if (c == ' ' || c == '\t') break; + if (c == ' ' || c == '\t') + break; r->a = r->i; r->t = kHttpStateValue; // fallthrough @@ -231,7 +243,8 @@ int ParseHttpMessage(struct HttpMessage *r, const char *p, size_t n) { for (;;) { if (c == '\r' || c == '\n') { i = r->i; - while (i > r->a && (p[i - 1] == ' ' || p[i - 1] == '\t')) --i; + while (i > r->a && (p[i - 1] == ' ' || p[i - 1] == '\t')) + --i; if ((h = GetHttpHeader(p + r->k.a, r->k.b - r->k.a)) != -1 && (!r->headers[h].a || !kHttpRepeatable[h])) { r->headers[h].a = r->a; @@ -265,7 +278,8 @@ int ParseHttpMessage(struct HttpMessage *r, const char *p, size_t n) { } else if ((c < 0x20 && c != '\t') || (0x7F <= c && c < 0xA0)) { return ebadmsg(); } - if (++r->i == n) break; + if (++r->i == n) + break; c = p[r->i] & 0xff; } break; diff --git a/net/http/parsehttpmethod.c b/net/http/parsehttpmethod.c index 6354eb397..bb71041d4 100644 --- a/net/http/parsehttpmethod.c +++ b/net/http/parsehttpmethod.c @@ -31,11 +31,14 @@ uint64_t ParseHttpMethod(const char *str, size_t len) { int s = 0; uint64_t w = 0; - if (len == -1) len = str ? strlen(str) : 0; + if (len == -1) + len = str ? strlen(str) : 0; for (size_t i = 0; i < len; ++i) { int c = kToUpper[str[i] & 255]; - if (!kHttpToken[c]) return 0; - if (s == 64) return 0; + if (!kHttpToken[c]) + return 0; + if (s == 64) + return 0; w |= (uint64_t)c << s; s += 8; } diff --git a/net/http/parsehttprange.c b/net/http/parsehttprange.c index 57d9a19c2..80aa738b7 100644 --- a/net/http/parsehttprange.c +++ b/net/http/parsehttprange.c @@ -38,23 +38,30 @@ bool ParseHttpRange(const char *p, size_t n, long resourcelength, long start, length, ending; *out_start = 0; *out_length = 0; - if (memchr(p, ',', n)) return false; - if (n < 7 || memcmp(p, "bytes=", 6) != 0) return false; + if (memchr(p, ',', n)) + return false; + if (n < 7 || memcmp(p, "bytes=", 6) != 0) + return false; p += 6, n -= 6; if (n && *p == '-') { ++p, --n; length = 0; while (n && '0' <= *p && *p <= '9') { - if (ckd_mul(&length, length, 10)) return false; - if (ckd_add(&length, length, *p - '0')) return false; + if (ckd_mul(&length, length, 10)) + return false; + if (ckd_add(&length, length, *p - '0')) + return false; ++p, --n; } - if (ckd_sub(&start, resourcelength, length)) return false; + if (ckd_sub(&start, resourcelength, length)) + return false; } else { start = 0; while (n && '0' <= *p && *p <= '9') { - if (ckd_mul(&start, start, 10)) return false; - if (ckd_add(&start, start, *p - '0')) return false; + if (ckd_mul(&start, start, 10)) + return false; + if (ckd_add(&start, start, *p - '0')) + return false; ++p, --n; } if (n && *p == '-') { @@ -64,22 +71,31 @@ bool ParseHttpRange(const char *p, size_t n, long resourcelength, } else { length = 0; while (n && '0' <= *p && *p <= '9') { - if (ckd_mul(&length, length, 10)) return false; - if (ckd_add(&length, length, *p - '0')) return false; + if (ckd_mul(&length, length, 10)) + return false; + if (ckd_add(&length, length, *p - '0')) + return false; ++p, --n; } - if (ckd_add(&length, length, 1)) return false; - if (ckd_sub(&length, length, start)) return false; + if (ckd_add(&length, length, 1)) + return false; + if (ckd_sub(&length, length, start)) + return false; } } else if (ckd_sub(&length, resourcelength, start)) { return false; } } - if (n) return false; - if (start < 0) return false; - if (length < 1) return false; - if (start > resourcelength) return false; - if (ckd_add(&ending, start, length)) return false; + if (n) + return false; + if (start < 0) + return false; + if (length < 1) + return false; + if (start > resourcelength) + return false; + if (ckd_add(&ending, start, length)) + return false; if (ending > resourcelength) { length = resourcelength - start; } diff --git a/net/http/parseip.c b/net/http/parseip.c index 136602998..700f49044 100644 --- a/net/http/parseip.c +++ b/net/http/parseip.c @@ -32,8 +32,10 @@ int64_t ParseIp(const char *s, size_t n) { size_t i; unsigned b, x; bool dotted = false; - if (n == -1) n = s ? strlen(s) : 0; - if (!n) return -1; + if (n == -1) + n = s ? strlen(s) : 0; + if (!n) + return -1; for (b = x = j = i = 0; i < n; ++i) { c = s[i] & 255; if (isdigit(c)) { @@ -43,7 +45,8 @@ int64_t ParseIp(const char *s, size_t n) { return -1; } } else if (c == '.') { - if (b > 255) return -1; + if (b > 255) + return -1; dotted = true; x <<= 8; x |= b; diff --git a/net/http/parseurl.c b/net/http/parseurl.c index dffa46e39..c967f4543 100644 --- a/net/http/parseurl.c +++ b/net/http/parseurl.c @@ -204,7 +204,8 @@ static void ParsePath(struct UrlParser *u, struct UrlView *h) { static void ParseQuery(struct UrlParser *u, struct UrlParams *h) { bool t = false; - if (!h->p) h->p = malloc(0); + if (!h->p) + h->p = malloc(0); while (u->i < u->n) { u->c = u->s[u->i++] & 255; if (u->c == '#') { @@ -285,7 +286,8 @@ static void ParseFragment(struct UrlParser *u, struct UrlView *h) { char *ParseUrl(const char *s, size_t n, struct Url *h, int f) { char *m; struct UrlParser u; - if (n == -1) n = s ? strlen(s) : 0; + if (n == -1) + n = s ? strlen(s) : 0; u.i = 0; u.c = 0; u.s = s; @@ -294,10 +296,14 @@ char *ParseUrl(const char *s, size_t n, struct Url *h, int f) { bzero(h, sizeof(*h)); if ((m = malloc((f & kUrlLatin1) ? u.n * 2 : u.n))) { u.q = u.p = m; - if (ParseScheme(&u, h)) ParseAuthority(&u, h); - if (u.c != '#' && u.c != '?') ParsePath(&u, &h->path); - if (u.c == '?') ParseQuery(&u, &h->params); - if (u.c == '#') ParseFragment(&u, &h->fragment); + if (ParseScheme(&u, h)) + ParseAuthority(&u, h); + if (u.c != '#' && u.c != '?') + ParsePath(&u, &h->path); + if (u.c == '?') + ParseQuery(&u, &h->params); + if (u.c == '#') + ParseFragment(&u, &h->fragment); } return m; } @@ -325,7 +331,8 @@ char *ParseUrl(const char *s, size_t n, struct Url *h, int f) { char *ParseParams(const char *s, size_t n, struct UrlParams *h) { char *m; struct UrlParser u; - if (n == -1) n = s ? strlen(s) : 0; + if (n == -1) + n = s ? strlen(s) : 0; u.i = 0; u.s = s; u.n = n; @@ -365,7 +372,8 @@ char *ParseParams(const char *s, size_t n, struct UrlParams *h) { char *ParseHost(const char *s, size_t n, struct Url *h) { char *m; struct UrlParser u; - if (n == -1) n = s ? strlen(s) : 0; + if (n == -1) + n = s ? strlen(s) : 0; u.i = 0; u.c = 0; u.s = s; diff --git a/net/http/tokenbucket.c b/net/http/tokenbucket.c index c3e71701a..f97675fdf 100644 --- a/net/http/tokenbucket.c +++ b/net/http/tokenbucket.c @@ -37,7 +37,8 @@ void ReplenishTokens(atomic_uint_fast64_t *w, size_t n) { for (size_t i = 0; i < n; ++i) { uint64_t a = atomic_load_explicit(w + i, memory_order_relaxed); - if (a == 0x7f7f7f7f7f7f7f7f) continue; + if (a == 0x7f7f7f7f7f7f7f7f) + continue; uint64_t b = 0x8080808080808080; uint64_t c = 0x7f7f7f7f7f7f7f7f ^ a; uint64_t d = ((((c >> 1 | b) - c) & b) ^ b) >> 7; @@ -75,7 +76,8 @@ void ReplenishTokens(atomic_uint_fast64_t *w, size_t n) { int AcquireToken(atomic_schar *b, uint32_t x, int c) { uint32_t i = x >> (32 - c); int t = atomic_load_explicit(b + i, memory_order_relaxed); - if (t <= 0) return t; + if (t <= 0) + return t; return atomic_fetch_add_explicit(b + i, -1, memory_order_relaxed); } diff --git a/net/http/unchunk.c b/net/http/unchunk.c index 95e068b68..d3fe94bfe 100644 --- a/net/http/unchunk.c +++ b/net/http/unchunk.c @@ -37,14 +37,16 @@ ssize_t Unchunk(struct HttpUnchunker *u, char *p, size_t n, size_t *l) { c = p[u->i++] & 255; switch (u->t) { case kHttpStateChunkStart: - if ((u->m = kHexToInt[c]) == -1) return ebadmsg(); + if ((u->m = kHexToInt[c]) == -1) + return ebadmsg(); u->t = kHttpStateChunkSize; break; case kHttpStateChunkSize: if ((h = kHexToInt[c]) != -1) { u->m *= 16; u->m += h; - if (u->m >= 0x0000010000000000) return ebadmsg(); + if (u->m >= 0x0000010000000000) + return ebadmsg(); break; } u->t = kHttpStateChunkExt; @@ -58,7 +60,8 @@ ssize_t Unchunk(struct HttpUnchunker *u, char *p, size_t n, size_t *l) { } /* fallthrough */ case kHttpStateChunkLf1: - if (c != '\n') return ebadmsg(); + if (c != '\n') + return ebadmsg(); u->t = u->m ? kHttpStateChunk : kHttpStateTrailerStart; break; case kHttpStateChunk: @@ -68,7 +71,8 @@ ssize_t Unchunk(struct HttpUnchunker *u, char *p, size_t n, size_t *l) { u->i += s; u->j += s; u->m -= s; - if (!u->m) u->t = kHttpStateChunkCr2; + if (!u->m) + u->t = kHttpStateChunkCr2; break; case kHttpStateChunkCr2: if (c == '\r') { @@ -77,7 +81,8 @@ ssize_t Unchunk(struct HttpUnchunker *u, char *p, size_t n, size_t *l) { } /* fallthrough */ case kHttpStateChunkLf2: - if (c != '\n') return ebadmsg(); + if (c != '\n') + return ebadmsg(); u->t = kHttpStateChunkStart; break; case kHttpStateTrailerStart: @@ -98,14 +103,18 @@ ssize_t Unchunk(struct HttpUnchunker *u, char *p, size_t n, size_t *l) { } /* fallthrough */ case kHttpStateTrailerLf1: - if (c != '\n') return ebadmsg(); + if (c != '\n') + return ebadmsg(); u->t = kHttpStateTrailerStart; break; case kHttpStateTrailerLf2: - if (c != '\n') return ebadmsg(); + if (c != '\n') + return ebadmsg(); Finished: - if (l) *l = u->j; - if (u->j < n) p[u->j] = 0; + if (l) + *l = u->j; + if (u->j < n) + p[u->j] = 0; return u->i; break; default: diff --git a/net/http/underlong.c b/net/http/underlong.c index 4edc53b79..a48e7f48c 100644 --- a/net/http/underlong.c +++ b/net/http/underlong.c @@ -41,15 +41,18 @@ char *Underlong(const char *p, size_t n, size_t *z) { size_t i, j, m; wint_t x, a, b; int8_t v1[16], v2[16], vz[16]; - if (z) *z = 0; - if (n == -1) n = p ? strlen(p) : 0; + if (z) + *z = 0; + if (n == -1) + n = p ? strlen(p) : 0; if ((q = r = malloc(n * 2 + 1))) { for (i = 0; i < n;) { bzero(vz, 16); /* 50x speedup for ASCII */ while (i + 16 < n) { memcpy(v1, p + i, 16); pcmpgtb(v2, v1, vz); - if (pmovmskb((void *)v2) != 0xFFFF) break; + if (pmovmskb((void *)v2) != 0xFFFF) + break; memcpy(q, v1, 16); q += 16; i += 16; @@ -61,7 +64,8 @@ char *Underlong(const char *p, size_t n, size_t *z) { if (i + m <= n) { for (j = 0;;) { b = p[i + j] & 0xff; - if (!ThomPikeCont(b)) break; + if (!ThomPikeCont(b)) + break; a = ThomPikeMerge(a, b); if (++j == m) { x = a; @@ -76,9 +80,11 @@ char *Underlong(const char *p, size_t n, size_t *z) { *q++ = w; } while ((w >>= 8)); } - if (z) *z = q - r; + if (z) + *z = q - r; *q++ = '\0'; - if ((q = realloc(r, q - r))) r = q; + if ((q = realloc(r, q - r))) + r = q; } return r; } diff --git a/net/http/visualizecontrolcodes.c b/net/http/visualizecontrolcodes.c index b8f93be7a..84ecaa681 100644 --- a/net/http/visualizecontrolcodes.c +++ b/net/http/visualizecontrolcodes.c @@ -43,7 +43,8 @@ char *VisualizeControlCodes(const char *data, size_t size, size_t *out_size) { unsigned i, n; wint_t x, a, b; const char *p, *e; - if (size == -1) size = data ? strlen(data) : 0; + if (size == -1) + size = data ? strlen(data) : 0; if ((r = malloc(size * 6 + 1))) { q = r; p = data; @@ -56,7 +57,8 @@ char *VisualizeControlCodes(const char *data, size_t size, size_t *out_size) { if (p + n <= e) { for (i = 0;;) { b = p[i] & 0xff; - if (!ThomPikeCont(b)) break; + if (!ThomPikeCont(b)) + break; a = ThomPikeMerge(a, b); if (++i == n) { x = a; @@ -116,7 +118,8 @@ char *VisualizeControlCodes(const char *data, size_t size, size_t *out_size) { } n = q - r; *q++ = '\0'; - if ((q = realloc(r, q - r))) r = q; + if ((q = realloc(r, q - r))) + r = q; } else { n = 0; } diff --git a/net/https/describesslverifyfailure.c b/net/https/describesslverifyfailure.c index d691e8284..46e0056ab 100644 --- a/net/https/describesslverifyfailure.c +++ b/net/https/describesslverifyfailure.c @@ -54,7 +54,8 @@ char *DescribeSslVerifyFailure(int flags) { p = malloc(1024); q = stpcpy(p, "verify failed"); for (i = 0; i < ARRAYLEN(kSslVerifyStrings); ++i) { - if (!(flags & kSslVerifyStrings[i].code)) continue; + if (!(flags & kSslVerifyStrings[i].code)) + continue; q = stpcpy(stpcpy(q, " "), kSslVerifyStrings[i].str); } return p; diff --git a/net/https/finishcertificate.c b/net/https/finishcertificate.c index 22949810b..0bf931a8b 100644 --- a/net/https/finishcertificate.c +++ b/net/https/finishcertificate.c @@ -28,10 +28,12 @@ struct Cert FinishCertificate(struct Cert *ca, mbedtls_x509write_cert *wcert, mbedtls_x509_crt *cert; p = malloc((n = FRAMESIZE)); i = mbedtls_x509write_crt_der(wcert, p, n, GenerateHardRandom, 0); - if (i < 0) FATALF("write key (grep -0x%04x)", -i); + if (i < 0) + FATALF("write key (grep -0x%04x)", -i); cert = calloc(1, sizeof(mbedtls_x509_crt)); mbedtls_x509_crt_parse(cert, p + n - i, i); - if (ca) cert->next = ca->cert; + if (ca) + cert->next = ca->cert; mbedtls_x509write_crt_free(wcert); free(p); if ((rc = mbedtls_pk_check_pair(&cert->pk, key))) { diff --git a/net/turfwar/blackholed.c b/net/turfwar/blackholed.c index 776267a02..eb30b8550 100644 --- a/net/turfwar/blackholed.c +++ b/net/turfwar/blackholed.c @@ -145,8 +145,10 @@ struct SortedInts g_whitelisted; static wontreturn void ShowUsage(int fd, int rc) { write(fd, USAGE, sizeof(USAGE) - 1); - if (IsLinux()) write(fd, LINUX_DOCS, sizeof(LINUX_DOCS) - 1); - if (IsBsd()) write(fd, BSD_DOCS, sizeof(BSD_DOCS) - 1); + if (IsLinux()) + write(fd, LINUX_DOCS, sizeof(LINUX_DOCS) - 1); + if (IsBsd()) + write(fd, BSD_DOCS, sizeof(BSD_DOCS) - 1); _Exit(rc); } @@ -288,8 +290,10 @@ void FindFirewall(void) { } void OpenLog(void) { - if (!g_logname) return; - if (!g_daemonize) return; + if (!g_logname) + return; + if (!g_daemonize) + return; if ((g_logfd = open(g_logname, O_WRONLY | O_APPEND | O_CREAT, 0644)) == -1) { kprintf("error: open(%#s) failed: %s\n", g_logname, strerror(errno)); ShowUsage(2, 5); @@ -314,11 +318,13 @@ void UseLog(void) { void UninterruptibleSleep(int ms) { struct timespec ts = timespec_add(timespec_real(), timespec_frommillis(ms)); - while (clock_nanosleep(CLOCK_REALTIME, TIMER_ABSTIME, &ts, 0)) errno = 0; + while (clock_nanosleep(CLOCK_REALTIME, TIMER_ABSTIME, &ts, 0)) + errno = 0; } void Unlink(const char *path) { - if (!path) return; + if (!path) + return; if (!unlink(path)) { LOG("deleted %s", path); } else { @@ -333,7 +339,8 @@ void WritePid(void) { ssize_t rc; int fd, pid; char buf[12] = {0}; - if (!g_pidname) return; + if (!g_pidname) + return; if ((fd = open(g_pidname, O_RDWR | O_CREAT, 0644)) == -1) { LOG("error: open(%#s) failed: %s", g_pidname, strerror(errno)); _Exit(4); diff --git a/net/turfwar/turfwar.c b/net/turfwar/turfwar.c index ff0b650c1..6f89d7212 100644 --- a/net/turfwar/turfwar.c +++ b/net/turfwar/turfwar.c @@ -388,22 +388,26 @@ struct timespec WaitFor(int millis) { // helper functions for check macro implementation bool CheckMem(const char *file, int line, void *ptr) { - if (ptr) return true; + if (ptr) + return true; kprintf("%s:%d: %P: out of memory: %s\n", file, line, strerror(errno)); return false; } bool CheckSys(const char *file, int line, long rc) { - if (rc != -1) return true; + if (rc != -1) + return true; kprintf("%s:%d: %P: %s\n", file, line, strerror(errno)); return false; } bool CheckSql(const char *file, int line, int rc) { - if (rc == SQLITE_OK) return true; + if (rc == SQLITE_OK) + return true; kprintf("%s:%d: %P: %s\n", file, line, sqlite3_errstr(rc)); return false; } bool CheckDb(const char *file, int line, int rc, sqlite3 *db) { - if (rc == SQLITE_OK) return true; + if (rc == SQLITE_OK) + return true; kprintf("%s:%d: %P: %s: %s\n", file, line, sqlite3_errstr(rc), sqlite3_errmsg(db)); return false; @@ -417,16 +421,20 @@ int DbOpen(const char *path, sqlite3 **db) { int i, rc; char sql[128]; rc = sqlite3_open(path, db); - if (rc != SQLITE_OK) return rc; + if (rc != SQLITE_OK) + return rc; if (!IsWindows() && !IsOpenbsd()) { ksnprintf(sql, sizeof(sql), "PRAGMA mmap_size=%ld", GetTotalRam()); rc = sqlite3_exec(*db, sql, 0, 0, 0); - if (rc != SQLITE_OK) return rc; + if (rc != SQLITE_OK) + return rc; } for (i = 0; i < 7; ++i) { rc = sqlite3_exec(*db, "PRAGMA journal_mode=WAL", 0, 0, 0); - if (rc == SQLITE_OK) break; - if (rc != SQLITE_BUSY) return rc; + if (rc == SQLITE_OK) + break; + if (rc != SQLITE_BUSY) + return rc; usleep(1000L << i); } return sqlite3_exec(*db, "PRAGMA synchronous=NORMAL", 0, 0, 0); @@ -436,9 +444,12 @@ int DbStep(sqlite3_stmt *stmt) { int i, rc; for (i = 0; i < 12; ++i) { rc = sqlite3_step(stmt); - if (rc == SQLITE_ROW) break; - if (rc == SQLITE_DONE) break; - if (rc != SQLITE_BUSY) return rc; + if (rc == SQLITE_ROW) + break; + if (rc == SQLITE_DONE) + break; + if (rc != SQLITE_BUSY) + return rc; usleep(1000L << i); } return rc; @@ -465,9 +476,12 @@ bool Blackhole(uint32_t ip) { // validates name registration validity bool IsValidNick(const char *s, size_t n) { size_t i; - if (n == -1) n = strlen(s); - if (!n) return false; - if (n > NICK_MAX) return false; + if (n == -1) + n = strlen(s); + if (!n) + return false; + if (n > NICK_MAX) + return false; for (i = 0; i < n; ++i) { if (!(isalnum(s[i]) || // s[i] == '@' || // @@ -533,9 +547,11 @@ bool AddClient(struct Clients *q, const struct Client *v, nsync_time dead) { } if (q->count != ARRAYLEN(q->data)) { int i = q->pos + q->count; - if (ARRAYLEN(q->data) <= i) i -= ARRAYLEN(q->data); + if (ARRAYLEN(q->data) <= i) + i -= ARRAYLEN(q->data); memcpy(q->data + i, v, sizeof(*v)); - if (!q->count) wake = true; + if (!q->count) + wake = true; q->count++; added = true; } @@ -587,9 +603,11 @@ bool AddClaim(struct Claims *q, const struct Claim *v, nsync_time dead) { } if (q->count != ARRAYLEN(q->data)) { int i = q->pos + q->count; - if (ARRAYLEN(q->data) <= i) i -= ARRAYLEN(q->data); + if (ARRAYLEN(q->data) <= i) + i -= ARRAYLEN(q->data); memcpy(q->data + i, v, sizeof(*v)); - if (!q->count) wake = true; + if (!q->count) + wake = true; q->count++; added = true; } @@ -1025,7 +1043,8 @@ void *HttpWorker(void *arg) { ksnprintf(cashbuf, sizeof(cashbuf), "max-age=%d, must-revalidate", a->cash); p = stpcpy(p, cashbuf); - if (comp) p = stpcpy(p, "\r\nContent-Encoding: gzip"); + if (comp) + p = stpcpy(p, "\r\nContent-Encoding: gzip"); p = stpcpy(p, "\r\nContent-Length: "); d = comp ? a->gzip : a->data; p = FormatInt32(p, d.n); @@ -1082,7 +1101,8 @@ void *HttpWorker(void *arg) { } else if (UrlStartsWith("/claim")) { // ip:name registration endpoint ++g_claimrequests; - if (ipv6) goto Ipv6Warning; + if (ipv6) + goto Ipv6Warning; struct Claim v = {.ip = ip, .created = g_nowish.ts.tv_sec}; if (GetNick(inbuf, msg, &v)) { if (AddClaim(&g_claims, &v, @@ -1308,7 +1328,8 @@ bool ReloadAsset(struct Asset *a) { CHECK_MEM((data.p = malloc(st.st_size))); CHECK_SYS((rc = read(fd, data.p, st.st_size))); data.n = st.st_size; - if (rc != st.st_size) goto OnError; + if (rc != st.st_size) + goto OnError; CHECK_MEM((gzip = Gzip(data)).p); //!//!//!//!//!//!//!//!//!//!//!//!//!/ nsync_mu_lock(&a->lock); @@ -1469,12 +1490,15 @@ bool GenerateScore(struct Asset *out, long secs, long cash) { // otherwise.. you can use --strace to see the fcntl bloodbath CHECK_SQL(sqlite3_exec(db, "BEGIN TRANSACTION", 0, 0, 0)); while ((rc = DbStep(stmt)) != SQLITE_DONE) { - if (rc != SQLITE_ROW) CHECK_DB(rc); + if (rc != SQLITE_ROW) + CHECK_DB(rc); strlcpy(name2, (void *)sqlite3_column_text(stmt, 0), sizeof(name2)); - if (!IsValidNick(name2, -1)) continue; + if (!IsValidNick(name2, -1)) + continue; if (strcmp(name1, name2)) { // name changed - if (namestate) CHECK_SYS(appends(&a.data.p, "],\n")); + if (namestate) + CHECK_SYS(appends(&a.data.p, "],\n")); namestate = true; CHECK_SYS(appendf( &a.data.p, "\"%s\":[\n", @@ -1487,7 +1511,8 @@ bool GenerateScore(struct Asset *out, long secs, long cash) { sqlite3_column_int64(stmt, 2))); } CHECK_SQL(sqlite3_exec(db, "END TRANSACTION", 0, 0, 0)); - if (namestate) CHECK_SYS(appends(&a.data.p, "]\n")); + if (namestate) + CHECK_SYS(appends(&a.data.p, "]\n")); CHECK_SYS(appends(&a.data.p, "}}\n")); CHECK_DB(sqlite3_finalize(stmt)); CHECK_SQL(sqlite3_close(db)); @@ -1540,7 +1565,8 @@ bool GeneratePlot(struct Asset *out, long block, long cash) { mask = area - 1; clump = 32 - bsr(area) - 8; while ((rc = DbStep(stmt)) != SQLITE_DONE) { - if (rc != SQLITE_ROW) CHECK_DB(rc); + if (rc != SQLITE_ROW) + CHECK_DB(rc); ip = sqlite3_column_int64(stmt, 0); i = (ip >> clump) & mask; y = g_hilbert[i][0]; @@ -1700,8 +1726,10 @@ StartOver: CHECK_SYS(appends(&t.data.p, "\"recent\":[\n")); CHECK_SQL(sqlite3_exec(db, "BEGIN TRANSACTION", 0, 0, 0)); for (once = false; (rc = DbStep(stmt)) != SQLITE_DONE; once = true) { - if (rc != SQLITE_ROW) CHECK_SQL(rc); - if (once) CHECK_SYS(appends(&t.data.p, ",\n")); + if (rc != SQLITE_ROW) + CHECK_SQL(rc); + if (once) + CHECK_SYS(appends(&t.data.p, ",\n")); CHECK_SYS( appendf(&t.data.p, "[%ld,\"%s\",%ld]", sqlite3_column_int64(stmt, 0), EscapeJsStringLiteral( @@ -1939,9 +1967,11 @@ int main(int argc, char *argv[]) { // the power to serve if (g_daemonize) { - if (fork() > 0) _Exit(0); + if (fork() > 0) + _Exit(0); setsid(); - if (fork() > 0) _Exit(0); + if (fork() > 0) + _Exit(0); umask(0); if (closefrom(0)) for (int i = 0; i < 256; ++i) // diff --git a/test/libc/calls/access_test.c b/test/libc/calls/access_test.c index 1766ff0d5..72bfbb3ea 100644 --- a/test/libc/calls/access_test.c +++ b/test/libc/calls/access_test.c @@ -34,7 +34,8 @@ void SetUpOnce(void) { } TEST(access, efault) { - if (IsWindows() || !IsAsan()) return; // not possible + if (IsWindows() || !IsAsan()) + return; // not possible ASSERT_SYS(EFAULT, -1, access((void *)77, F_OK)); } @@ -61,7 +62,8 @@ TEST(access, test) { } TEST(access, testRequestWriteOnReadOnly_returnsEaccess) { - if (1) return; // TODO(jart): maybe we need root to help? + if (1) + return; // TODO(jart): maybe we need root to help? ASSERT_SYS(ENOENT, -1, access("file", F_OK)); ASSERT_SYS(0, 0, close(creat("file", 0444))); ASSERT_SYS(0, 0, access("file", F_OK)); diff --git a/test/libc/calls/cachestat_test.c b/test/libc/calls/cachestat_test.c index 22316cdff..a24b6e490 100644 --- a/test/libc/calls/cachestat_test.c +++ b/test/libc/calls/cachestat_test.c @@ -93,7 +93,8 @@ TEST(cachestat, testCachestatSyncNoDirty) { "total number of evicted pages is off."); struct statfs statfs; ASSERT_SYS(0, 0, fstatfs(3, &statfs)); - if (statfs.f_type == TMPFS_MAGIC) goto done; + if (statfs.f_type == TMPFS_MAGIC) + goto done; ASSERT_SYS(0, 0, fsync(3)); ASSERT_SYS(0, 0, cachestat(3, &range, &cs, 0)); EXPECT_EQ(0, cs.nr_dirty, diff --git a/test/libc/calls/chdir_test.c b/test/libc/calls/chdir_test.c index f41db6354..93c5f359b 100644 --- a/test/libc/calls/chdir_test.c +++ b/test/libc/calls/chdir_test.c @@ -29,7 +29,8 @@ void SetUpOnce(void) { TEST(chdir, efault) { ASSERT_SYS(EFAULT, -1, chdir(0)); - if (IsWindows() || !IsAsan()) return; // not possible + if (IsWindows() || !IsAsan()) + return; // not possible ASSERT_SYS(EFAULT, -1, chdir((void *)77)); } diff --git a/test/libc/calls/clock_getres_test.c b/test/libc/calls/clock_getres_test.c index 2f7db7881..2497816be 100644 --- a/test/libc/calls/clock_getres_test.c +++ b/test/libc/calls/clock_getres_test.c @@ -40,14 +40,16 @@ TEST(clock_getres, realtimeFastHasMillisecondPrecisionOrBetter) { } TEST(clock_getres, realtimeCoarseHasMillisecondPrecisionOrBetter) { - if (clock_getres(CLOCK_REALTIME_COARSE, &ts)) return; + if (clock_getres(CLOCK_REALTIME_COARSE, &ts)) + return; EXPECT_EQ(0, ts.tv_sec); EXPECT_LT(ts.tv_nsec, 100000000); EXPECT_GT(ts.tv_nsec, 0); } TEST(clock_getres, realtimePreciseHasMillisecondPrecisionOrBetter) { - if (clock_getres(CLOCK_REALTIME_PRECISE, &ts)) return; + if (clock_getres(CLOCK_REALTIME_PRECISE, &ts)) + return; EXPECT_EQ(0, ts.tv_sec); EXPECT_LT(ts.tv_nsec, 100000000); EXPECT_GT(ts.tv_nsec, 0); @@ -68,14 +70,16 @@ TEST(clock_getres, monotonicFastHasMillisecondPrecisionOrBetter) { } TEST(clock_getres, monotonicCoarseHasMillisecondPrecisionOrBetter) { - if (clock_getres(CLOCK_MONOTONIC_COARSE, &ts)) return; + if (clock_getres(CLOCK_MONOTONIC_COARSE, &ts)) + return; EXPECT_EQ(0, ts.tv_sec); EXPECT_LT(ts.tv_nsec, 100000000); EXPECT_GT(ts.tv_nsec, 0); } TEST(clock_getres, monotonicPreciseHasMillisecondPrecisionOrBetter) { - if (clock_getres(CLOCK_MONOTONIC_PRECISE, &ts)) return; + if (clock_getres(CLOCK_MONOTONIC_PRECISE, &ts)) + return; EXPECT_EQ(0, ts.tv_sec); EXPECT_LT(ts.tv_nsec, 100000000); EXPECT_GT(ts.tv_nsec, 0); diff --git a/test/libc/calls/closefrom_test.c b/test/libc/calls/closefrom_test.c index 9991b22d9..fe77ba652 100644 --- a/test/libc/calls/closefrom_test.c +++ b/test/libc/calls/closefrom_test.c @@ -70,6 +70,7 @@ TEST(close_range, test) { } TEST(close_range, ignoresNonexistantRanges) { - if (!IsLinux() && !IsFreebsd()) return; + if (!IsLinux() && !IsFreebsd()) + return; EXPECT_SYS(0, 0, close_range(-2, -1, 0)); } diff --git a/test/libc/calls/commandv_test.c b/test/libc/calls/commandv_test.c index 0014315d3..a86aaa43c 100644 --- a/test/libc/calls/commandv_test.c +++ b/test/libc/calls/commandv_test.c @@ -100,7 +100,8 @@ TEST(commandv, test_DirPaths_wontConsiderDirectoriesExecutable2) { } TEST(commandv, test_nonExecutableFile_willEacces) { - if (IsWindows()) return; // TODO: fixme + if (IsWindows()) + return; // TODO: fixme setenv("PATH", "foo", true); EXPECT_SYS(0, 0, mkdir("foo", 0755)); EXPECT_SYS(0, 0, touch("foo/bar", 0400)); diff --git a/test/libc/calls/copy_file_range_test.c b/test/libc/calls/copy_file_range_test.c index cfca0f830..0d88450de 100644 --- a/test/libc/calls/copy_file_range_test.c +++ b/test/libc/calls/copy_file_range_test.c @@ -94,19 +94,23 @@ bool HasCopyFileRange(void) { } TEST(copy_file_range, badFd) { - if (!HasCopyFileRange()) return; + if (!HasCopyFileRange()) + return; ASSERT_SYS(EBADF, -1, copy_file_range(-1, 0, -1, 0, -1u, 0)); } TEST(copy_file_range, badFlags) { - if (!HasCopyFileRange()) return; + if (!HasCopyFileRange()) + return; ASSERT_SYS(EINVAL, -1, copy_file_range(0, 0, 1, 0, -1u, -1)); } TEST(copy_file_range, differentFileSystems) { return; // TODO(jart): Why does this flake on GitHub Actions? - if (!IsLinux()) return; - if (!HasCopyFileRange()) return; + if (!IsLinux()) + return; + if (!HasCopyFileRange()) + return; ASSERT_SYS(0, 3, open("/proc/stat", 0)); ASSERT_SYS(0, 4, creat("foo", 0644)); ASSERT_SYS(EXDEV, -1, copy_file_range(3, 0, 4, 0, -1u, 0)); @@ -117,7 +121,8 @@ TEST(copy_file_range, differentFileSystems) { TEST(copy_file_range, twoDifferentFiles) { char buf[16] = {0}; int64_t i = 1, o = 0; - if (!HasCopyFileRange()) return; + if (!HasCopyFileRange()) + return; ASSERT_SYS(0, 3, open("foo", O_RDWR | O_CREAT | O_TRUNC, 0644)); ASSERT_SYS(0, 4, open("bar", O_RDWR | O_CREAT | O_TRUNC, 0644)); ASSERT_SYS(0, 5, pwrite(3, "hello", 5, 0)); @@ -134,7 +139,8 @@ TEST(copy_file_range, twoDifferentFiles) { TEST(copy_file_range, sameFile_doesntChangeFilePointer) { char buf[16] = {0}; int64_t i = 1, o = 5; - if (!HasCopyFileRange()) return; + if (!HasCopyFileRange()) + return; ASSERT_SYS(0, 3, open("foo", O_RDWR | O_CREAT | O_TRUNC, 0644)); ASSERT_SYS(0, 5, pwrite(3, "hello", 5, 0)); ASSERT_SYS(0, 4, copy_file_range(3, &i, 3, &o, 4, 0)); @@ -148,7 +154,8 @@ TEST(copy_file_range, sameFile_doesntChangeFilePointer) { TEST(copy_file_range, overlappingRange) { int rc; int64_t i = 1, o = 2; - if (!HasCopyFileRange()) return; + if (!HasCopyFileRange()) + return; ASSERT_SYS(0, 3, open("foo", O_RDWR | O_CREAT | O_TRUNC, 0644)); ASSERT_SYS(0, 5, pwrite(3, "hello", 5, 0)); rc = copy_file_range(3, &i, 3, &o, 4, 0); diff --git a/test/libc/calls/devfd_test.c b/test/libc/calls/devfd_test.c index 68248c0b3..c5aec28a3 100644 --- a/test/libc/calls/devfd_test.c +++ b/test/libc/calls/devfd_test.c @@ -32,7 +32,8 @@ void SetUpOnce(void) { TEST(devfd, test) { // TODO: What is up with this mysterious ENOENT error? // The code appears like it should support this. - if (IsFreebsd()) return; + if (IsFreebsd()) + return; char buf[8] = {0}; struct stat st[2] = {0}; ASSERT_SYS(0, 0, xbarf("hello.txt", "bone", -1)); @@ -50,7 +51,8 @@ TEST(devfd, test) { TEST(devfd, not_DEV_FD_STAT_BROKEN) { // fstat() and stat() are inconsistent on bsd systems // with xnu it only appears to be st_dev that differs - if (IsBsd()) return; + if (IsBsd()) + return; char buf[8] = {0}; struct stat st[2] = {0}; ASSERT_SYS(0, 0, xbarf("hello.txt", "bone", -1)); diff --git a/test/libc/calls/fchmodat_test.c b/test/libc/calls/fchmodat_test.c index 02757563e..cb6d99d40 100644 --- a/test/libc/calls/fchmodat_test.c +++ b/test/libc/calls/fchmodat_test.c @@ -34,7 +34,8 @@ void SetUpOnce(void) { } TEST(fchmodat, testFchmodat) { - if (IsWindows()) return; // not advanced enough yet + if (IsWindows()) + return; // not advanced enough yet struct stat st; umask(022); ASSERT_SYS(0, 3, diff --git a/test/libc/calls/fcntl_test.c b/test/libc/calls/fcntl_test.c index a8f535624..84675e66a 100644 --- a/test/libc/calls/fcntl_test.c +++ b/test/libc/calls/fcntl_test.c @@ -139,8 +139,10 @@ void OnSig(int sig) { } TEST(posixAdvisoryLocks, twoProcesses) { - if (IsWindows()) return; // due to signals - if (IsNetbsd()) return; // TODO: why does sigusr1 kill runitd? + if (IsWindows()) + return; // due to signals + if (IsNetbsd()) + return; // TODO: why does sigusr1 kill runitd? int ws, pid; struct flock lock; diff --git a/test/libc/calls/ftruncate_test.c b/test/libc/calls/ftruncate_test.c index 70fc5e3bf..6d740f818 100644 --- a/test/libc/calls/ftruncate_test.c +++ b/test/libc/calls/ftruncate_test.c @@ -70,7 +70,8 @@ TEST(ftruncate, pipeFd_einval) { TEST(ftruncate, efbig) { // FreeBSD and RHEL7 return 0 (why??) - if (IsLinux() || IsFreebsd()) return; + if (IsLinux() || IsFreebsd()) + return; sighandler_t old = signal(SIGXFSZ, SIG_IGN); ASSERT_SYS(0, 3, creat("foo", 0755)); ASSERT_SYS(IsWindows() ? EINVAL : EFBIG, -1, ftruncate(3, INT64_MAX)); diff --git a/test/libc/calls/getcwd_test.c b/test/libc/calls/getcwd_test.c index 0c5a4194d..f9e8f22e3 100644 --- a/test/libc/calls/getcwd_test.c +++ b/test/libc/calls/getcwd_test.c @@ -33,7 +33,8 @@ void SetUpOnce(void) { } TEST(__getcwd, zero) { - if (IsQemuUser()) return; + if (IsQemuUser()) + return; ASSERT_SYS(ERANGE, -1, __getcwd(0, 0)); } @@ -83,7 +84,8 @@ TEST(getcwd, testNullBuf_allocatesResult) { } TEST(getcwd, testWindows_addsFunnyPrefix) { - if (!IsWindows()) return; + if (!IsWindows()) + return; char path[PATH_MAX]; ASSERT_NE(0, getcwd(path, sizeof(path))); path[1] = tolower(path[1]); diff --git a/test/libc/calls/getgroups_test.c b/test/libc/calls/getgroups_test.c index 6463ad5ab..7c221e899 100644 --- a/test/libc/calls/getgroups_test.c +++ b/test/libc/calls/getgroups_test.c @@ -23,9 +23,11 @@ TEST(getgroups, test) { int n; - if (IsWindows()) return; + if (IsWindows()) + return; uint32_t G[500]; EXPECT_GT((n = getgroups(ARRAYLEN(G), G)), 0); - if (getuid()) return; // this needs root + if (getuid()) + return; // this needs root EXPECT_SYS(0, 0, setgroups(n, G)); } diff --git a/test/libc/calls/getprogramexecutablename_test.c b/test/libc/calls/getprogramexecutablename_test.c index 671ca1add..cd5fb2a2b 100644 --- a/test/libc/calls/getprogramexecutablename_test.c +++ b/test/libc/calls/getprogramexecutablename_test.c @@ -103,7 +103,8 @@ TEST(GetProgramExecutableName, ofThisFile) { } TEST(GetProgramExecutableName, nullEnv) { - if (skiptests) return; + if (skiptests) + return; SPAWN(fork); execve(self, (char *[]){self, "Child", self, skiparg0 ? 0 : self, 0}, (char *[]){0}); @@ -112,7 +113,8 @@ TEST(GetProgramExecutableName, nullEnv) { } TEST(GetProramExecutableName, weirdArgv0NullEnv) { - if (skiptests) return; + if (skiptests) + return; SPAWN(fork); execve(self, (char *[]){"hello", "Child", self, skiparg0 ? 0 : "hello", 0}, (char *[]){0}); @@ -121,7 +123,8 @@ TEST(GetProramExecutableName, weirdArgv0NullEnv) { } TEST(GetProgramExecutableName, movedSelf) { - if (skiptests) return; + if (skiptests) + return; if (IsAarch64() && IsQemuUser()) { // clang-format off // TODO(mrdomino): fix: make -j8 m=aarch64 o/aarch64/test/libc/calls/getprogramexecutablename_test.ok diff --git a/test/libc/calls/getrandom_test.c b/test/libc/calls/getrandom_test.c index f3cfbc7ca..3e2386a7a 100644 --- a/test/libc/calls/getrandom_test.c +++ b/test/libc/calls/getrandom_test.c @@ -59,9 +59,11 @@ void *TortureWorker(void *arg) { ASSERT_SYS(0, 0, sigprocmask(SIG_SETMASK, &ss, 0)); ready = true; while (!done) { - if (!IsWindows()) pthread_kill(parent, SIGUSR1); + if (!IsWindows()) + pthread_kill(parent, SIGUSR1); usleep(1); - if (!IsWindows()) pthread_kill(parent, SIGUSR2); + if (!IsWindows()) + pthread_kill(parent, SIGUSR2); usleep(1); } return 0; @@ -78,9 +80,11 @@ TEST(getrandom, test) { if ((e = MeasureEntropy(buf, n)) < w) { fprintf(stderr, "error: entropy is suspect! got %g but want >=%g\n", e, w); for (i = 0; i < n;) { - if (!(i % 16)) fprintf(stderr, "%6x ", i); + if (!(i % 16)) + fprintf(stderr, "%6x ", i); fprintf(stderr, "%lc", kCp437[buf[i] & 255]); - if (!(++i % 16)) fprintf(stderr, "\n"); + if (!(++i % 16)) + fprintf(stderr, "\n"); } fprintf(stderr, "\n"); exit(1); @@ -100,7 +104,8 @@ TEST(getrandom, test2) { ASSERT_SYS(0, 0, sigaction(SIGUSR2, &sa, 0)); parent = pthread_self(); ASSERT_EQ(0, pthread_create(&child, 0, TortureWorker, 0)); - while (!ready) pthread_yield(); + while (!ready) + pthread_yield(); for (k = 0; k < 10; ++k) { ASSERT_SYS(0, 0, getrandom(0, 0, 0)); for (i = 0; i < n; i += m) { @@ -111,9 +116,11 @@ TEST(getrandom, test2) { if ((e = MeasureEntropy(buf, n)) < w) { fprintf(stderr, "error: entropy suspect! got %g but want >=%g\n", e, w); for (i = 0; i < n;) { - if (!(i % 16)) fprintf(stderr, "%6x ", i); + if (!(i % 16)) + fprintf(stderr, "%6x ", i); fprintf(stderr, "%lc", kCp437[buf[i] & 255]); - if (!(++i % 16)) fprintf(stderr, "\n"); + if (!(++i % 16)) + fprintf(stderr, "\n"); } fprintf(stderr, "\n"); done = true; @@ -123,7 +130,8 @@ TEST(getrandom, test2) { } done = true; ASSERT_EQ(0, pthread_join(child, 0)); - if (!IsWindows()) ASSERT_GT(gotsome, 0); + if (!IsWindows()) + ASSERT_GT(gotsome, 0); } /* JustReturnZero */ @@ -237,13 +245,15 @@ uint64_t SixthEditionLowByte(void) { uint64_t MobyDick(void) { static int i; - if ((i += 8) > kMobySize) i = 8; + if ((i += 8) > kMobySize) + i = 8; return READ64LE(kMoby + i); } uint64_t ExecutableImage(void) { static int i; - if ((i += 8) > _end - __executable_start) i = 8; + if ((i += 8) > _end - __executable_start) + i = 8; return READ64LE(__executable_start + i); } diff --git a/test/libc/calls/ioctl_test.c b/test/libc/calls/ioctl_test.c index 417be7519..0e3c38fd8 100644 --- a/test/libc/calls/ioctl_test.c +++ b/test/libc/calls/ioctl_test.c @@ -49,7 +49,8 @@ TEST(siocgifconf, test) { conf.ifc_len = n; ASSERT_NE(-1, ioctl(socketfd, SIOCGIFCONF, &conf)); for (ifr = (struct ifreq *)data; (char *)ifr < data + conf.ifc_len; ++ifr) { - if (ifr->ifr_addr.sa_family != AF_INET) continue; + if (ifr->ifr_addr.sa_family != AF_INET) + continue; ip = ntohl(((struct sockaddr_in *)&ifr->ifr_addr)->sin_addr.s_addr); EXPECT_NE(-1, ioctl(socketfd, SIOCGIFNETMASK, ifr)); netmask = ntohl(((struct sockaddr_in *)&ifr->ifr_addr)->sin_addr.s_addr); @@ -72,7 +73,8 @@ TEST(siocgifconf, test) { } TEST(siocgifconf, mkntenvblock_systemroot) { - if (__argc != 1) return; + if (__argc != 1) + return; SPAWN(fork); execve(GetProgramExecutableName(), (char *[]){GetProgramExecutableName(), "hi", NULL}, (char *[]){NULL}); diff --git a/test/libc/calls/lock_ofd_test.c b/test/libc/calls/lock_ofd_test.c index 1149fbeec..4b7081299 100644 --- a/test/libc/calls/lock_ofd_test.c +++ b/test/libc/calls/lock_ofd_test.c @@ -48,7 +48,8 @@ _Thread_local const char *kind; bool SupportsOfdLocks(void) { int e; bool r; - if (!IsLinux()) return false; + if (!IsLinux()) + return false; // F_OFD_* was introduced in linux 3.15 // getrandom() was introduced in linux 3.17 // testing for getrandom() should be a sure thing w/o creating an fd diff --git a/test/libc/calls/madvise_test.c b/test/libc/calls/madvise_test.c index d1eb03b5e..df18f103f 100644 --- a/test/libc/calls/madvise_test.c +++ b/test/libc/calls/madvise_test.c @@ -72,8 +72,10 @@ TEST(madvise, subPages) { TEST(madvise, misalign) { char *p; - if (!IsLinux()) return; // most platforms don't care - if (IsQemuUser()) return; // qemu claims to be linux but doesn't care + if (!IsLinux()) + return; // most platforms don't care + if (IsQemuUser()) + return; // qemu claims to be linux but doesn't care ASSERT_NE(MAP_FAILED, (p = mmap(0, FRAMESIZE, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0))); ASSERT_SYS(EINVAL, -1, madvise(p + 1, FRAMESIZE - 1, MADV_WILLNEED)); @@ -82,7 +84,8 @@ TEST(madvise, misalign) { TEST(madvise, badAdvice) { char *p; - if (IsAarch64() && IsQemuUser()) return; // qemu doesn't validate advice + if (IsAarch64() && IsQemuUser()) + return; // qemu doesn't validate advice ASSERT_NE(MAP_FAILED, (p = mmap(0, FRAMESIZE, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0))); ASSERT_SYS(EINVAL, -1, madvise(p, FRAMESIZE, 127)); @@ -90,8 +93,10 @@ TEST(madvise, badAdvice) { } TEST(madvise, missingMemory) { - if (!IsLinux()) return; // most platforms don't care - if (IsQemuUser()) return; // qemu claims to be linux but doesn't care + if (!IsLinux()) + return; // most platforms don't care + if (IsQemuUser()) + return; // qemu claims to be linux but doesn't care ASSERT_SYS(ENOMEM, -1, madvise((char *)0x83483838000, FRAMESIZE, MADV_WILLNEED)); } diff --git a/test/libc/calls/makedirs_test.c b/test/libc/calls/makedirs_test.c index 3c08e745f..1334be651 100644 --- a/test/libc/calls/makedirs_test.c +++ b/test/libc/calls/makedirs_test.c @@ -71,7 +71,9 @@ TEST(makedirs, test) { int i, n = 8; pthread_t *t = gc(malloc(sizeof(pthread_t) * n)); ASSERT_EQ(0, pthread_barrier_init(&barrier, 0, n)); - for (i = 0; i < n; ++i) ASSERT_EQ(0, pthread_create(t + i, 0, Worker, 0)); - for (i = 0; i < n; ++i) EXPECT_EQ(0, pthread_join(t[i], 0)); + for (i = 0; i < n; ++i) + ASSERT_EQ(0, pthread_create(t + i, 0, Worker, 0)); + for (i = 0; i < n; ++i) + EXPECT_EQ(0, pthread_join(t[i], 0)); ASSERT_EQ(0, pthread_barrier_destroy(&barrier)); } diff --git a/test/libc/calls/mkdir_test.c b/test/libc/calls/mkdir_test.c index 9e278c4fe..3711b26fa 100644 --- a/test/libc/calls/mkdir_test.c +++ b/test/libc/calls/mkdir_test.c @@ -71,7 +71,8 @@ TEST(mkdir, enametoolong) { int i; size_t n = 2048; char *s = gc(calloc(1, n)); - for (i = 0; i < n - 1; ++i) s[i] = 'x'; + for (i = 0; i < n - 1; ++i) + s[i] = 'x'; s[i] = 0; EXPECT_SYS(ENAMETOOLONG, -1, mkdir(s, 0644)); } @@ -96,7 +97,8 @@ TEST(mkdirat, testRelativePath_opensRelativeToDirFd) { TEST(mkdir, longname) { int i; char *d, s[270] = {0}; - for (i = 0; i < sizeof(s) - 1; ++i) s[i] = 'x'; + for (i = 0; i < sizeof(s) - 1; ++i) + s[i] = 'x'; s[i] = 0; ASSERT_NE(NULL, (d = gc(getcwd(0, 0)))); memcpy(s, d, strlen(d)); diff --git a/test/libc/calls/open_test.c b/test/libc/calls/open_test.c index dcdec159f..4f1013a7b 100644 --- a/test/libc/calls/open_test.c +++ b/test/libc/calls/open_test.c @@ -47,7 +47,8 @@ void SetUpOnce(void) { TEST(open, efault) { ASSERT_SYS(EFAULT, -1, open(0, O_RDONLY)); - if (IsWindows() || !IsAsan()) return; // not possible + if (IsWindows() || !IsAsan()) + return; // not possible ASSERT_SYS(EFAULT, -1, open((void *)77, O_RDONLY)); } @@ -231,7 +232,8 @@ TEST(open, norm) { } TEST(open, longNormDot) { - if (IsWindows()) return; // todo: why won't long paths work on windows + if (IsWindows()) + return; // todo: why won't long paths work on windows #define NAME \ "funfunfunfunfunfunfunfunfunfunfunfunfunfunfunfunfunfunfunfunfunfunfunfunfu" \ "nfunfunfunfunfunfunnfunfunfunfunfunfunnfunfunfunfunfunfununfunfunfunfunfun" @@ -243,7 +245,8 @@ TEST(open, longNormDot) { } TEST(open, longNormDotDot) { - if (IsWindows()) return; // todo: why won't long paths work on windows + if (IsWindows()) + return; // todo: why won't long paths work on windows #define NAME \ "funfunfunfunfunfunfunfunfunfunfunfunfunfunfunfunfunfunfunfunfunfunfunfunfu" \ "nfunfunfunfunfunfunnfunfunfunfunfunfunnfunfunfunfunfunfununfunfunfunfunfun" @@ -258,7 +261,8 @@ TEST(open, longNormDotDot) { TEST(open, creat_directory) { ASSERT_SYS(ENOENT, -1, open("fun", O_WRONLY | O_DIRECTORY)); ASSERT_FALSE(fileexists("fun")); - if (1) return; // linux 5.15.122-0-lts creates file and returns error D: + if (1) + return; // linux 5.15.122-0-lts creates file and returns error D: ASSERT_SYS(ENOTDIR, -1, open("fun", O_CREAT | O_WRONLY | O_DIRECTORY, 0644)); ASSERT_TRUE(fileexists("fun")); } @@ -312,7 +316,8 @@ int CountFds(void) { } TEST(open, lotsOfFds) { - if (!IsWindows()) return; + if (!IsWindows()) + return; int i, n = 200; ASSERT_SYS(0, 0, xbarf("hello.txt", "hello", -1)); for (i = 3; i < n; ++i) { @@ -331,7 +336,8 @@ static int64_t GetInode(const char *path) { } TEST(open, drive) { - if (!IsWindows()) return; + if (!IsWindows()) + return; ASSERT_NE(GetInode("/"), GetInode(".")); ASSERT_EQ(GetInode("/"), GetInode("/c")); // sorry you have to run on c:/ ASSERT_EQ(GetInode("/"), GetInode("/c/")); @@ -430,7 +436,8 @@ TEST(open, creatRdonly) { } TEST(open, sequentialRandom_EINVAL) { - if (!IsWindows()) return; + if (!IsWindows()) + return; ASSERT_SYS( EINVAL, -1, open("foo", O_CREAT | O_TRUNC | O_RDWR | O_SEQUENTIAL | O_RANDOM, 0700)); @@ -442,7 +449,8 @@ TEST(open, sequentialRandom_EINVAL) { // timestamps of the file and the last data modification and last // file status change timestamps of the parent directory." -POSIX TEST(open, creatFile_touchesDirectory) { - if (1) return; // TODO(jart): explain the rare flakes + if (1) + return; // TODO(jart): explain the rare flakes struct stat st; struct timespec birth; ASSERT_SYS(0, 0, mkdir("dir", 0755)); diff --git a/test/libc/calls/openatemp_test.c b/test/libc/calls/openatemp_test.c index 4ebf17b90..5269910b2 100644 --- a/test/libc/calls/openatemp_test.c +++ b/test/libc/calls/openatemp_test.c @@ -50,7 +50,8 @@ TEST(openatemp, unlink) { } TEST(openatemp, mode) { - if (IsWindows()) return; + if (IsWindows()) + return; unsigned omask = umask(0); char path[] = "foo.XXXXXX"; ASSERT_SYS(0, 3, openatemp(AT_FDCWD, path, 0, 0, 0764)); diff --git a/test/libc/calls/openbsd_test.c b/test/libc/calls/openbsd_test.c index 5ab15decc..512ccae79 100644 --- a/test/libc/calls/openbsd_test.c +++ b/test/libc/calls/openbsd_test.c @@ -26,8 +26,10 @@ #include "libc/testlib/testlib.h" void CheckPlatform(void) { - if (IsOpenbsd()) return; // openbsd is ok - if (IsLinux() && __is_linux_2_6_23()) return; // non-ancient linux is ok + if (IsOpenbsd()) + return; // openbsd is ok + if (IsLinux() && __is_linux_2_6_23()) + return; // non-ancient linux is ok kprintf("skipping openbsd_test\n"); exit(0); } diff --git a/test/libc/calls/pipe_test.c b/test/libc/calls/pipe_test.c index c11df66af..fd89433c6 100644 --- a/test/libc/calls/pipe_test.c +++ b/test/libc/calls/pipe_test.c @@ -38,8 +38,10 @@ TEST(pipe, einval) { } TEST(pipe, ebadf) { - if (IsFreebsd()) return; // somehow succeeds - if (IsOpenbsd()) return; // somehow succeeds + if (IsFreebsd()) + return; // somehow succeeds + if (IsOpenbsd()) + return; // somehow succeeds EXPECT_SYS(0, 0, pipe(f)); EXPECT_SYS(EBADF, -1, write(f[0], "h", 1)); EXPECT_SYS(EBADF, -1, read(f[1], buf, 1)); @@ -48,8 +50,10 @@ TEST(pipe, ebadf) { } TEST(pipe, emfile) { - if (IsWindows()) return; // TODO - if (IsCygwin()) return; + if (IsWindows()) + return; // TODO + if (IsCygwin()) + return; ASSERT_NE(-1, (pid = fork())); if (!pid) { ASSERT_EQ(0, setrlimit(RLIMIT_NOFILE, &rlim)); diff --git a/test/libc/calls/pledge2_test.c b/test/libc/calls/pledge2_test.c index 5bb0e1d52..e5d16dbea 100644 --- a/test/libc/calls/pledge2_test.c +++ b/test/libc/calls/pledge2_test.c @@ -41,7 +41,8 @@ void SetUp(void) { } TEST(pledge, testSoftError) { - if (IsOpenbsd()) return; + if (IsOpenbsd()) + return; SPAWN(fork); __pledge_mode = PLEDGE_PENALTY_RETURN_EPERM; ASSERT_SYS(0, 0, pledge("stdio", 0)); @@ -67,7 +68,8 @@ TEST(pledge, testKillProcessMode) { } TEST(pledge, testLogMessage_inSoftyMode) { - if (IsOpenbsd()) return; + if (IsOpenbsd()) + return; int fds[2]; char msg[256] = {0}; ASSERT_SYS(0, 0, pipe(fds)); diff --git a/test/libc/calls/pledge_test.c b/test/libc/calls/pledge_test.c index a9a160392..8bb59a845 100644 --- a/test/libc/calls/pledge_test.c +++ b/test/libc/calls/pledge_test.c @@ -103,7 +103,8 @@ TEST(pledge, default_allowsExit) { } TEST(pledge, execpromises_notok) { - if (IsOpenbsd()) return; // b/c testing linux bpf + if (IsOpenbsd()) + return; // b/c testing linux bpf int ws, pid; ASSERT_NE(-1, (pid = fork())); if (!pid) { @@ -134,7 +135,8 @@ TEST(pledge, tester) { } TEST(pledge, withThreadMemory) { - if (IsOpenbsd()) return; // openbsd doesn't allow it, wisely + if (IsOpenbsd()) + return; // openbsd doesn't allow it, wisely pthread_t worker; int job[2] = {2, 2}; // create workload ASSERT_EQ(0, pthread_create(&worker, 0, Enclave, job)); // create worker @@ -159,7 +161,8 @@ void *TgkillWorker(void *arg) { TEST(pledge, tgkill) { // https://github.com/jart/cosmopolitan/issues/628 - if (!IsLinux()) return; + if (!IsLinux()) + return; sigset_t mask; pthread_t worker; SPAWN(fork); @@ -176,7 +179,8 @@ TEST(pledge, tgkill) { } TEST(pledge, stdio_forbidsOpeningPasswd1) { - if (!IsLinux()) return; + if (!IsLinux()) + return; int ws, pid; ASSERT_NE(-1, (pid = fork())); if (!pid) { @@ -204,7 +208,8 @@ TEST(pledge, stdio_forbidsOpeningPasswd2) { } TEST(pledge, multipleCalls_canOnlyBecomeMoreRestrictive1) { - if (IsOpenbsd()) return; + if (IsOpenbsd()) + return; int ws, pid; ASSERT_NE(-1, (pid = fork())); if (!pid) { @@ -223,7 +228,8 @@ TEST(pledge, multipleCalls_canOnlyBecomeMoreRestrictive1) { } TEST(pledge, multipleCalls_canOnlyBecomeMoreRestrictive2) { - if (!IsOpenbsd()) return; + if (!IsOpenbsd()) + return; int ws, pid; ASSERT_NE(-1, (pid = fork())); if (!pid) { @@ -237,7 +243,8 @@ TEST(pledge, multipleCalls_canOnlyBecomeMoreRestrictive2) { } TEST(pledge, multipleCalls_canOnlyBecomeMoreRestrictive3) { - if (!IsOpenbsd()) return; + if (!IsOpenbsd()) + return; int ws, pid; ASSERT_NE(-1, (pid = fork())); if (!pid) { @@ -252,7 +259,8 @@ TEST(pledge, multipleCalls_canOnlyBecomeMoreRestrictive3) { } TEST(pledge, stdio_fcntl_allowsSomeFirstArgs) { - if (IsOpenbsd()) return; // b/c testing linux bpf + if (IsOpenbsd()) + return; // b/c testing linux bpf int ws, pid; struct flock lk; ASSERT_NE(-1, (pid = fork())); @@ -275,7 +283,8 @@ TEST(pledge, stdio_fcntl_allowsSomeFirstArgs) { } TEST(pledge, stdioTty_sendtoRestricted_requiresNullAddr) { - if (IsOpenbsd()) return; // b/c testing linux bpf + if (IsOpenbsd()) + return; // b/c testing linux bpf int ws, pid, sv[2]; ASSERT_SYS(0, 0, socketpair(AF_UNIX, SOCK_STREAM, 0, sv)); ASSERT_NE(-1, (pid = fork())); @@ -303,7 +312,8 @@ TEST(pledge, stdioTty_sendtoRestricted_requiresNullAddr) { } TEST(pledge, unix_forbidsInetSockets) { - if (IsOpenbsd()) return; // b/c testing linux bpf + if (IsOpenbsd()) + return; // b/c testing linux bpf int ws, pid; ASSERT_NE(-1, (pid = fork())); if (!pid) { @@ -345,7 +355,8 @@ TEST(pledge, wpath_doesNotImplyRpath) { } TEST(pledge, inet_forbidsOtherSockets) { - if (IsOpenbsd()) return; // b/c testing linux bpf + if (IsOpenbsd()) + return; // b/c testing linux bpf int ws, pid, yes = 1; ASSERT_NE(-1, (pid = fork())); if (!pid) { @@ -376,7 +387,8 @@ TEST(pledge, inet_forbidsOtherSockets) { } TEST(pledge, anet_forbidsUdpSocketsAndConnect) { - if (IsOpenbsd()) return; // b/c testing linux bpf + if (IsOpenbsd()) + return; // b/c testing linux bpf int ws, pid; ASSERT_NE(-1, (pid = fork())); if (!pid) { @@ -392,7 +404,8 @@ TEST(pledge, anet_forbidsUdpSocketsAndConnect) { } TEST(pledge, mmap) { - if (IsOpenbsd()) return; // b/c testing linux bpf + if (IsOpenbsd()) + return; // b/c testing linux bpf char *p; int ws, pid; ASSERT_NE(-1, (pid = fork())); @@ -413,7 +426,8 @@ TEST(pledge, mmap) { } TEST(pledge, mmapProtExec) { - if (IsOpenbsd()) return; // b/c testing linux bpf + if (IsOpenbsd()) + return; // b/c testing linux bpf char *p; int ws, pid; ASSERT_NE(-1, (pid = fork())); @@ -432,7 +446,8 @@ TEST(pledge, mmapProtExec) { } TEST(pledge, chmod_ignoresDangerBits) { - if (IsOpenbsd()) return; // b/c testing linux bpf + if (IsOpenbsd()) + return; // b/c testing linux bpf int ws, pid; ASSERT_SYS(0, 3, creat("foo", 0644)); ASSERT_NE(-1, (pid = fork())); @@ -452,7 +467,8 @@ TEST(pledge, chmod_ignoresDangerBits) { } TEST(pledge, open_rpath) { - if (IsOpenbsd()) return; // b/c testing linux bpf + if (IsOpenbsd()) + return; // b/c testing linux bpf int ws, pid; ASSERT_SYS(0, 0, touch("foo", 0644)); ASSERT_NE(-1, (pid = fork())); @@ -470,7 +486,8 @@ TEST(pledge, open_rpath) { } TEST(pledge, open_wpath) { - if (IsOpenbsd()) return; // b/c testing linux bpf + if (IsOpenbsd()) + return; // b/c testing linux bpf int ws, pid; ASSERT_SYS(0, 0, touch("foo", 0644)); ASSERT_NE(-1, (pid = fork())); @@ -487,7 +504,8 @@ TEST(pledge, open_wpath) { } TEST(pledge, open_cpath) { - if (IsOpenbsd()) return; // b/c testing linux bpf + if (IsOpenbsd()) + return; // b/c testing linux bpf int ws, pid; struct stat st; ASSERT_SYS(0, 0, touch("foo", 0644)); @@ -508,7 +526,8 @@ TEST(pledge, open_cpath) { } TEST(pledge, execpromises_ok) { - if (IsOpenbsd()) return; // b/c testing linux bpf + if (IsOpenbsd()) + return; // b/c testing linux bpf int ws, pid; ASSERT_NE(-1, (pid = fork())); if (!pid) { @@ -522,7 +541,8 @@ TEST(pledge, execpromises_ok) { } TEST(pledge, execpromises_notok1) { - if (IsOpenbsd()) return; // b/c testing linux bpf + if (IsOpenbsd()) + return; // b/c testing linux bpf int ws, pid; ASSERT_NE(-1, (pid = fork())); if (!pid) { @@ -536,7 +556,8 @@ TEST(pledge, execpromises_notok1) { } TEST(pledge, execpromises_reducesAtExecOnLinux) { - if (IsOpenbsd()) return; // b/c testing linux bpf + if (IsOpenbsd()) + return; // b/c testing linux bpf int ws, pid; ASSERT_NE(-1, (pid = fork())); if (!pid) { @@ -550,8 +571,10 @@ TEST(pledge, execpromises_reducesAtExecOnLinux) { } TEST(pledge_openbsd, execpromisesIsNull_letsItDoAnything) { - if (IsOpenbsd()) return; // mimmutable() ugh - if (!IsOpenbsd()) return; + if (IsOpenbsd()) + return; // mimmutable() ugh + if (!IsOpenbsd()) + return; int ws, pid; ASSERT_NE(-1, (pid = fork())); if (!pid) { @@ -567,8 +590,10 @@ TEST(pledge_openbsd, execpromisesIsNull_letsItDoAnything) { } TEST(pledge_openbsd, execpromisesIsSuperset_letsItDoAnything) { - if (IsOpenbsd()) return; // mimmutable() ugh - if (!IsOpenbsd()) return; + if (IsOpenbsd()) + return; // mimmutable() ugh + if (!IsOpenbsd()) + return; int ws, pid; ASSERT_NE(-1, (pid = fork())); if (!pid) { @@ -582,12 +607,14 @@ TEST(pledge_openbsd, execpromisesIsSuperset_letsItDoAnything) { } TEST(pledge_linux, execpromisesIsSuperset_notPossible) { - if (IsOpenbsd()) return; + if (IsOpenbsd()) + return; ASSERT_SYS(EINVAL, -1, pledge("stdio exec", "stdio inet exec")); } TEST(pledge_openbsd, execpromises_notok) { - if (IsOpenbsd()) return; // mimmutable() ugh + if (IsOpenbsd()) + return; // mimmutable() ugh int ws, pid; ASSERT_NE(-1, (pid = fork())); if (!pid) { @@ -608,7 +635,8 @@ TEST(pledge_openbsd, execpromises_notok) { } TEST(pledge_openbsd, bigSyscalls) { - if (IsOpenbsd()) return; // testing lunix + if (IsOpenbsd()) + return; // testing lunix int ws, pid; ASSERT_NE(-1, (pid = fork())); if (!pid) { diff --git a/test/libc/calls/poll_test.c b/test/libc/calls/poll_test.c index 97e7b2202..ee844762b 100644 --- a/test/libc/calls/poll_test.c +++ b/test/libc/calls/poll_test.c @@ -66,8 +66,10 @@ TEST(poll, allZero_doesNothingPrettyMuch) { } TEST(ppoll, weCanProveItChecksForSignals) { - if (IsXnu()) return; - if (IsNetbsd()) return; + if (IsXnu()) + return; + if (IsNetbsd()) + return; int pipefds[2]; sigset_t set, old; struct sigaction oldss; diff --git a/test/libc/calls/posix_fadvise_test.c b/test/libc/calls/posix_fadvise_test.c index 69e3c31ca..1da060333 100644 --- a/test/libc/calls/posix_fadvise_test.c +++ b/test/libc/calls/posix_fadvise_test.c @@ -31,7 +31,8 @@ void SetUpOnce(void) { } void SetUp(void) { - if (IsOpenbsd() || IsXnu()) exit(0); + if (IsOpenbsd() || IsXnu()) + exit(0); } TEST(fadvise, ebadf) { diff --git a/test/libc/calls/read_test.c b/test/libc/calls/read_test.c index 39e764d38..ce0a11bea 100644 --- a/test/libc/calls/read_test.c +++ b/test/libc/calls/read_test.c @@ -78,7 +78,8 @@ TEST(read_pipe, canBeInterruptedByAlarm) { TEST(read_directory, eisdir) { // TODO(jart): what - if (IsWindows() || IsFreebsd()) return; + if (IsWindows() || IsFreebsd()) + return; ASSERT_SYS(0, 0, mkdir("boop", 0755)); ASSERT_SYS(0, 3, open("boop", O_RDONLY | O_DIRECTORY)); ASSERT_SYS(EISDIR, -1, read(3, 0, 0)); @@ -102,7 +103,8 @@ void *GenerateData(void *arg) { for (;;) { usleep(223); int rc = write(fds[1], "hi", 2); - if (rc == -1 && errno == EPIPE) break; + if (rc == -1 && errno == EPIPE) + break; ASSERT_EQ(2, rc); } return 0; diff --git a/test/libc/calls/readlinkat_test.c b/test/libc/calls/readlinkat_test.c index 0d3d5a4a3..484db44b9 100644 --- a/test/libc/calls/readlinkat_test.c +++ b/test/libc/calls/readlinkat_test.c @@ -105,8 +105,10 @@ TEST(readlinkat, statReadsNameLength_countsUtf8Bytes) { TEST(readlinkat, realpathReturnsLongPath) { char buf[PATH_MAX]; - if (!IsWindows()) return; - if (!startswith(getcwd(buf, PATH_MAX), "/c/")) return; + if (!IsWindows()) + return; + if (!startswith(getcwd(buf, PATH_MAX), "/c/")) + return; ASSERT_SYS(0, 0, touch("froot", 0644)); ASSERT_STARTSWITH("/c/", realpath("froot", buf)); } diff --git a/test/libc/calls/renameat_test.c b/test/libc/calls/renameat_test.c index ba8e3f9e6..507c55adc 100644 --- a/test/libc/calls/renameat_test.c +++ b/test/libc/calls/renameat_test.c @@ -90,13 +90,17 @@ TEST(rename, enotempty) { TEST(rename, moveIntoNonWritableDirectory_raisesEacces) { // old versions of linux allow this // new versions of linux report exdev?! - if (IsLinux()) return; + if (IsLinux()) + return; // netbsd and openbsd allow this - if (IsNetbsd() || IsOpenbsd()) return; + if (IsNetbsd() || IsOpenbsd()) + return; // windows doesn't really have permissions - if (IsWindows()) return; + if (IsWindows()) + return; // looks like a freebsd kernel bug - if (IsAarch64() && IsFreebsd()) return; + if (IsAarch64() && IsFreebsd()) + return; // posix specifies this behavior ASSERT_SYS(0, 0, mkdir("foo", 0111)); ASSERT_SYS(0, 0, touch("lol", 0644)); diff --git a/test/libc/calls/sched_setscheduler_test.c b/test/libc/calls/sched_setscheduler_test.c index 91ce0e541..3cc1e9315 100644 --- a/test/libc/calls/sched_setscheduler_test.c +++ b/test/libc/calls/sched_setscheduler_test.c @@ -65,7 +65,8 @@ TEST(sched_setscheduler, test) { } TEST(sched_setscheduler, testMidpoint) { - if (!CanTuneRealtimeSchedulers()) return; + if (!CanTuneRealtimeSchedulers()) + return; struct sched_param p = {(sched_get_priority_min(SCHED_FIFO) + sched_get_priority_max(SCHED_FIFO)) / 2}; diff --git a/test/libc/calls/setrlimit_test.c b/test/libc/calls/setrlimit_test.c index 744f835b5..aa8749575 100644 --- a/test/libc/calls/setrlimit_test.c +++ b/test/libc/calls/setrlimit_test.c @@ -61,9 +61,12 @@ TEST(setrlimit, testCpuLimit) { struct rlimit rlim; struct timespec start; double matrices[3][3][3]; - if (IsWindows()) return; // of course it doesn't work on windows - if (IsXnu()) return; // TODO(jart): it worked before - if (IsOpenbsd()) return; // TODO(jart): fix flake + if (IsWindows()) + return; // of course it doesn't work on windows + if (IsXnu()) + return; // TODO(jart): it worked before + if (IsOpenbsd()) + return; // TODO(jart): fix flake ASSERT_NE(-1, (wstatus = xspawn(0))); if (wstatus == -2) { ASSERT_EQ(0, xsigaction(SIGXCPU, OnSigxcpu, 0, 0, 0)); @@ -89,7 +92,8 @@ TEST(setrlimit, testFileSizeLimit) { char junkdata[512]; int i, fd, wstatus; struct rlimit rlim; - if (IsWindows()) return; /* of course it doesn't work on windows */ + if (IsWindows()) + return; /* of course it doesn't work on windows */ ASSERT_NE(-1, (wstatus = xspawn(0))); if (wstatus == -2) { ASSERT_EQ(0, xsigaction(SIGXFSZ, OnSigxfsz, 0, 0, 0)); @@ -125,8 +129,10 @@ TEST(setrlimit, testMemoryLimit) { char *p; bool gotsome; int i, wstatus; - if (IsXnu()) return; - if (IsAsan()) return; /* b/c we use sys_mmap */ + if (IsXnu()) + return; + if (IsAsan()) + return; /* b/c we use sys_mmap */ ASSERT_NE(-1, (wstatus = xspawn(0))); if (wstatus == -2) { ASSERT_EQ(0, SetKernelEnforcedMemoryLimit(MEM)); @@ -156,10 +162,14 @@ TEST(setrlimit, testMemoryLimit) { TEST(setrlimit, testVirtualMemoryLimit) { char *p; int i, wstatus; - if (IsAsan()) return; - if (IsXnu()) return; /* doesn't work on darwin */ - if (IsOpenbsd()) return; /* unavailable on openbsd */ - if (IsWindows()) return; /* of course it doesn't work on windows */ + if (IsAsan()) + return; + if (IsXnu()) + return; /* doesn't work on darwin */ + if (IsOpenbsd()) + return; /* unavailable on openbsd */ + if (IsWindows()) + return; /* of course it doesn't work on windows */ ASSERT_NE(-1, (wstatus = xspawn(0))); if (wstatus == -2) { ASSERT_EQ(0, setrlimit(RLIMIT_AS, &(struct rlimit){MEM, MEM})); @@ -184,12 +194,18 @@ TEST(setrlimit, testVirtualMemoryLimit) { TEST(setrlimit, testDataMemoryLimit) { char *p; int i, wstatus; - if (IsAsan()) return; - if (IsXnu()) return; /* doesn't work on darwin */ - if (IsNetbsd()) return; /* doesn't work on netbsd */ - if (IsFreebsd()) return; /* doesn't work on freebsd */ - if (IsLinux()) return; /* doesn't work on gnu/systemd */ - if (IsWindows()) return; /* of course it doesn't work on windows */ + if (IsAsan()) + return; + if (IsXnu()) + return; /* doesn't work on darwin */ + if (IsNetbsd()) + return; /* doesn't work on netbsd */ + if (IsFreebsd()) + return; /* doesn't work on freebsd */ + if (IsLinux()) + return; /* doesn't work on gnu/systemd */ + if (IsWindows()) + return; /* of course it doesn't work on windows */ ASSERT_NE(-1, (wstatus = xspawn(0))); if (wstatus == -2) { ASSERT_EQ(0, setrlimit(RLIMIT_DATA, &(struct rlimit){MEM, MEM})); @@ -231,7 +247,8 @@ wontreturn void OnVfork(void *ctx) { TEST(setrlimit, isVforkSafe) { int ws; struct rlimit rlim[2]; - if (IsWindows()) return; /* of course it doesn't work on windows */ + if (IsWindows()) + return; /* of course it doesn't work on windows */ ASSERT_EQ(0, getrlimit(RLIMIT_CPU, rlim)); ASSERT_NE(-1, (ws = xvspawn(OnVfork, rlim, 0))); EXPECT_TRUE(WIFEXITED(ws)); diff --git a/test/libc/calls/shm_open_test.c b/test/libc/calls/shm_open_test.c index 255329df5..da7909fef 100644 --- a/test/libc/calls/shm_open_test.c +++ b/test/libc/calls/shm_open_test.c @@ -90,7 +90,8 @@ wontreturn void Bouncer(void) { wontreturn void Sender(void) { /* Wait for file to exist. */ - while (!*ready) donothing; + while (!*ready) + donothing; /* Open the existing shared memory object and map it into the caller's address space. */ diff --git a/test/libc/calls/sig_test.c b/test/libc/calls/sig_test.c index 1c33d87bf..080406d86 100644 --- a/test/libc/calls/sig_test.c +++ b/test/libc/calls/sig_test.c @@ -64,9 +64,11 @@ void *Worker(void *arg) { TEST(SetThreadContext, test) { pthread_t th; - if (!IsWindows()) return; + if (!IsWindows()) + return; ASSERT_EQ(0, pthread_create(&th, 0, Worker, 0)); - while (!ready) donothing; + while (!ready) + donothing; usleep(1000); int64_t hand = _pthread_syshand((struct PosixThread *)th); ASSERT_EQ(0, SuspendThread(hand)); diff --git a/test/libc/calls/sigaction_test.c b/test/libc/calls/sigaction_test.c index 33cfcdc3b..f093bd24b 100644 --- a/test/libc/calls/sigaction_test.c +++ b/test/libc/calls/sigaction_test.c @@ -124,7 +124,8 @@ TEST(sigaction, raise) { // test kill() TEST(sigaction, testPingPongParentChildWithSigint) { - if (IsNetbsd()) return; // TODO: what's up with runitd on netbsd? + if (IsNetbsd()) + return; // TODO: what's up with runitd on netbsd? int pid, status; sigset_t blockint, oldmask; struct sigaction oldint; @@ -244,8 +245,10 @@ TEST(sigaction, ignoringSignalDiscardsSignal) { } TEST(sigaction, autoZombieSlayer) { - if (IsWindows()) return; - if (IsCygwin()) return; + if (IsWindows()) + return; + if (IsCygwin()) + return; int pid; struct sigaction sa; // make sure we're starting in expected state @@ -253,7 +256,8 @@ TEST(sigaction, autoZombieSlayer) { ASSERT_EQ(SIG_DFL, sa.sa_handler); // verify child becomes zombie ASSERT_NE(-1, (pid = fork())); - if (!pid) _Exit(0); + if (!pid) + _Exit(0); ASSERT_SYS(0, pid, wait(0)); // enable automatic zombie slayer sa.sa_handler = SIG_IGN; @@ -262,17 +266,21 @@ TEST(sigaction, autoZombieSlayer) { ASSERT_SYS(0, 0, sigaction(SIGCHLD, &sa, &sa)); // verify it works ASSERT_NE(-1, (pid = fork())); - if (!pid) _Exit(0); + if (!pid) + _Exit(0); // XXX: WSL does the wrong thing here. - if (__iswsl1()) usleep(10); + if (__iswsl1()) + usleep(10); ASSERT_SYS(ECHILD, -1, wait(0)); // clean up ASSERT_SYS(0, 0, sigaction(SIGCHLD, &sa, 0)); } TEST(sigaction, enosys_returnsErrnoRatherThanSigsysByDefault) { - if (IsTiny()) return; // systemfive.S disables the fix w/ tiny - if (IsOpenbsd()) return; // TODO: Why does OpenBSD raise SIGABRT? + if (IsTiny()) + return; // systemfive.S disables the fix w/ tiny + if (IsOpenbsd()) + return; // TODO: Why does OpenBSD raise SIGABRT? ASSERT_SYS(ENOSYS, -1, sys_bogus()); } @@ -373,7 +381,8 @@ dontubsan dontasan int Segfault(char *p) { int (*pSegfault)(char *) = Segfault; TEST(sigaction, returnFromSegvHandler_loopsForever) { - if (IsXnu()) return; // seems busted + if (IsXnu()) + return; // seems busted segfaults = _mapshared(sizeof(*segfaults)); SPAWN(fork); signal(SIGSEGV, OnSegfault); diff --git a/test/libc/calls/sigtimedwait_test.c b/test/libc/calls/sigtimedwait_test.c index d6260f302..c45b735e3 100644 --- a/test/libc/calls/sigtimedwait_test.c +++ b/test/libc/calls/sigtimedwait_test.c @@ -30,10 +30,14 @@ #include "libc/testlib/testlib.h" void SetUp(void) { - if (IsXnu()) exit(0); - if (IsMetal()) exit(0); - if (IsWindows()) exit(0); - if (IsOpenbsd()) exit(0); + if (IsXnu()) + exit(0); + if (IsMetal()) + exit(0); + if (IsWindows()) + exit(0); + if (IsOpenbsd()) + exit(0); } TEST(sigtimedwait, nullSet_efault) { diff --git a/test/libc/calls/stackoverflow1_test.c b/test/libc/calls/stackoverflow1_test.c index 080e3b76d..88b6fff9d 100644 --- a/test/libc/calls/stackoverflow1_test.c +++ b/test/libc/calls/stackoverflow1_test.c @@ -91,7 +91,8 @@ int StackOverflow(int f(), int n) { int (*pStackOverflow)(int (*)(), int) = StackOverflow; TEST(stackoverflow, standardStack_altStack_process_longjmp) { - if (IsTiny()) return; // TODO(jart): why? + if (IsTiny()) + return; // TODO(jart): why? int jumpcode; if (!(jumpcode = setjmp(recover))) { diff --git a/test/libc/calls/timespec_test.c b/test/libc/calls/timespec_test.c index 0019d7c0c..930116d93 100644 --- a/test/libc/calls/timespec_test.c +++ b/test/libc/calls/timespec_test.c @@ -94,7 +94,8 @@ TEST(timeval_toseconds, test) { } static long mod(long x, long y) { - if (y == -1) return 0; + if (y == -1) + return 0; return x - y * (x / y - (x % y && (x ^ y) < 0)); } diff --git a/test/libc/calls/unlinkat_test.c b/test/libc/calls/unlinkat_test.c index eacf704d6..99511f48d 100644 --- a/test/libc/calls/unlinkat_test.c +++ b/test/libc/calls/unlinkat_test.c @@ -30,7 +30,8 @@ void SetUpOnce(void) { TEST(unlink, efault) { ASSERT_SYS(EFAULT, -1, unlink(0)); - if (IsWindows() || !IsAsan()) return; // not possible + if (IsWindows() || !IsAsan()) + return; // not possible ASSERT_SYS(EFAULT, -1, unlink((void *)77)); } diff --git a/test/libc/calls/unveil_test.c b/test/libc/calls/unveil_test.c index b252fd8ce..6681eec8d 100644 --- a/test/libc/calls/unveil_test.c +++ b/test/libc/calls/unveil_test.c @@ -94,7 +94,8 @@ TEST(unveil, api_differences) { } TEST(unveil, rx_readOnlyPreexistingExecutable_worksFine) { - if (IsOpenbsd()) return; // TOOD(jart): why pledge violation? + if (IsOpenbsd()) + return; // TOOD(jart): why pledge violation? SPAWN(fork); ASSERT_SYS(0, 0, mkdir("folder", 0755)); testlib_extract("/zip/life.elf", "folder/life.elf", 0755); @@ -151,7 +152,8 @@ TEST(unveil, rwc_createExecutableFile_isAllowedButCantBeRun) { } TEST(unveil, rwcx_createExecutableFile_canAlsoBeRun) { - if (IsOpenbsd()) return; // TOOD(jart): why pledge violation? + if (IsOpenbsd()) + return; // TOOD(jart): why pledge violation? SPAWN(fork); ASSERT_SYS(0, 0, mkdir("folder", 0755)); ASSERT_SYS(0, 0, unveil("folder", "rwcx")); @@ -179,7 +181,8 @@ TEST(unveil, dirfdHacking_doesntWork) { } TEST(unveil, mostRestrictivePolicy) { - if (IsOpenbsd()) return; // openbsd behaves oddly; see docs + if (IsOpenbsd()) + return; // openbsd behaves oddly; see docs SPAWN(fork); ASSERT_SYS(0, 0, mkdir("jail", 0755)); ASSERT_SYS(0, 0, mkdir("garden", 0755)); @@ -221,7 +224,8 @@ TEST(unveil, overlappingDirectories_inconsistentBehavior) { } TEST(unveil, usedTwice_allowedOnLinux) { - if (IsOpenbsd()) return; + if (IsOpenbsd()) + return; SPAWN(fork); ASSERT_SYS(0, 0, mkdir("jail", 0755)); ASSERT_SYS(0, 0, xbarf("jail/ok.txt", "hello", 5)); @@ -259,7 +263,8 @@ TEST(unveil, truncate_isForbiddenBySeccomp) { } TEST(unveil, ftruncate_isForbidden) { - if (IsOpenbsd()) return; // b/c O_PATH is a Linux thing + if (IsOpenbsd()) + return; // b/c O_PATH is a Linux thing SPAWN(fork); ASSERT_SYS(0, 0, mkdir("jail", 0755)); ASSERT_SYS(0, 0, mkdir("garden", 0755)); @@ -275,7 +280,8 @@ TEST(unveil, ftruncate_isForbidden) { } TEST(unveil, procfs_isForbiddenByDefault) { - if (IsOpenbsd()) return; + if (IsOpenbsd()) + return; SPAWN(fork); ASSERT_SYS(0, 0, mkdir("jail", 0755)); ASSERT_SYS(0, 0, unveil("jail", "rw")); diff --git a/test/libc/calls/utimensat_test.c b/test/libc/calls/utimensat_test.c index 8595700f7..583f2e67f 100644 --- a/test/libc/calls/utimensat_test.c +++ b/test/libc/calls/utimensat_test.c @@ -58,7 +58,8 @@ TEST(utimes, test) { } TEST(futimes, test) { - if (IsLinux() && !__is_linux_2_6_23()) return; + if (IsLinux() && !__is_linux_2_6_23()) + return; struct stat st; struct timeval tv[2] = {{1655455857, 1}, {827727928, 2}}; EXPECT_SYS(0, 3, creat("boop", 0644)); @@ -123,7 +124,8 @@ TEST(utimensat, testOmit) { TEST(futimens, test2) { struct timespec ts[2]; int fd = creat("foo", 0600); - if (fd < 0) exit(1); + if (fd < 0) + exit(1); struct stat st; int64_t birth; ASSERT_SYS(0, 0, fstat(fd, &st)); diff --git a/test/libc/calls/write_test.c b/test/libc/calls/write_test.c index df8567f98..77ddfd9a1 100644 --- a/test/libc/calls/write_test.c +++ b/test/libc/calls/write_test.c @@ -66,7 +66,8 @@ TEST(write, readOnlyFd_ebadf) { TEST(write, badMemory_efault) { ASSERT_SYS(EFAULT, -1, write(1, 0, 1)); - if (!IsAsan()) return; + if (!IsAsan()) + return; ASSERT_SYS(EFAULT, -1, write(1, (void *)1, 1)); } @@ -109,7 +110,8 @@ TEST(write, brokenPipe_sigpipeBlocked_returnsEpipe) { } TEST(write, rlimitFsizeExceeded_raisesEfbig) { - if (IsWindows()) return; // not supported + if (IsWindows()) + return; // not supported struct rlimit rl = {1, 10}; SPAWN(fork); signal(SIGXFSZ, SIG_IGN); diff --git a/test/libc/calls/writev_test.c b/test/libc/calls/writev_test.c index c045cd7ec..796d9ff59 100644 --- a/test/libc/calls/writev_test.c +++ b/test/libc/calls/writev_test.c @@ -52,7 +52,8 @@ TEST(writev, negative_einvalOrEfault) { } TEST(writev, exceedsIovMax_einval) { - if (IsWindows()) return; // it's complicated + if (IsWindows()) + return; // it's complicated int i, n = IOV_MAX + 1; struct iovec *v = gc(malloc(sizeof(struct iovec) * n)); for (i = 0; i < n; ++i) { @@ -96,7 +97,8 @@ TEST(writev, big_fullCompletion) { } TEST(writev, asanError_efaults) { - if (!IsAsan()) return; + if (!IsAsan()) + return; void *malloc_(size_t) asm("malloc"); void free_(void *) asm("free"); void *p; diff --git a/test/libc/intrin/kprintf_test.c b/test/libc/intrin/kprintf_test.c index f091d48b0..97e5ebdda 100644 --- a/test/libc/intrin/kprintf_test.c +++ b/test/libc/intrin/kprintf_test.c @@ -43,7 +43,8 @@ */ static uint64_t Rando(void) { uint64_t x; - do x = lemur64(); + do + x = lemur64(); while (((x ^ READ64LE("!!!!!!!!")) - 0x0101010101010101) & ~(x ^ READ64LE("!!!!!!!!")) & 0x8080808080808080); return x; @@ -247,11 +248,15 @@ TEST(kprintf, testFailure_wontClobberErrnoAndBypassesSystemCallSupport) { ASSERT_EQ(0, errno); EXPECT_SYS(0, 3, dup(2)); // - if (close(2)) _Exit(200); + if (close(2)) + _Exit(200); n = __syscount; - if (__syscount != n) _Exit(201); - if (errno != 0) _Exit(202); - if (dup2(3, 2) != 2) _Exit(203); + if (__syscount != n) + _Exit(201); + if (errno != 0) + _Exit(202); + if (dup2(3, 2) != 2) + _Exit(203); // EXPECT_SYS(0, 0, close(3)); } diff --git a/test/libc/intrin/lock_test.c b/test/libc/intrin/lock_test.c index e58a6aba6..491700d38 100644 --- a/test/libc/intrin/lock_test.c +++ b/test/libc/intrin/lock_test.c @@ -132,7 +132,8 @@ void TestContendedLock(const char *name, int kind) { kprintf("clone failed: %s\n", strerror(rc)); _Exit(1); } - while (!atomic_load(&ready)) donothing; + while (!atomic_load(&ready)) + donothing; t1 = timespec_real(); for (i = 0; i < n; ++i) { ASSERT_EQ(0, pthread_mutex_lock(&mu)); @@ -142,7 +143,8 @@ void TestContendedLock(const char *name, int kind) { ASSERT_EQ(0, pthread_mutex_unlock(&mu)); } t2 = timespec_real(); - while (tib.tib_tid) donothing; + while (tib.tib_tid) + donothing; ASSERT_EQ(1, atomic_load(&success)); ASSERT_EQ(0, atomic_load(&counter)); FreeCosmoStack(stk); @@ -178,7 +180,8 @@ int main(int argc, char *argv[]) { #ifdef __aarch64__ // our usage of raw clone() is probably broken in aarch64 // we should just get rid of clone() - if (1) return 0; + if (1) + return 0; #endif if (_weaken(nsync_mu_lock)) { diff --git a/test/libc/intrin/memcmp_test.c b/test/libc/intrin/memcmp_test.c index 1fed4eb29..10a9d7891 100644 --- a/test/libc/intrin/memcmp_test.c +++ b/test/libc/intrin/memcmp_test.c @@ -68,8 +68,10 @@ TEST(memcmp, hug) { static int coerce(int result) { #ifdef __aarch64__ // arm's strcmp assembly is nuts and unpredictable, but it's legal - if (result < 0) return -1; - if (result > 0) return +1; + if (result < 0) + return -1; + if (result > 0) + return +1; return 0; #else return result; diff --git a/test/libc/intrin/memset_test.c b/test/libc/intrin/memset_test.c index 5a2f5194d..056e05b34 100644 --- a/test/libc/intrin/memset_test.c +++ b/test/libc/intrin/memset_test.c @@ -27,8 +27,10 @@ static dontasan void *golden(void *p, int c, size_t n) { size_t i; - if (IsAsan()) __asan_verify(p, n); - for (i = 0; i < n; ++i) ((char *)p)[i] = c; + if (IsAsan()) + __asan_verify(p, n); + for (i = 0; i < n; ++i) + ((char *)p)[i] = c; return p; } diff --git a/test/libc/intrin/pthread_mutex_lock2_test.c b/test/libc/intrin/pthread_mutex_lock2_test.c index 1b0a3279a..93224da84 100644 --- a/test/libc/intrin/pthread_mutex_lock2_test.c +++ b/test/libc/intrin/pthread_mutex_lock2_test.c @@ -175,9 +175,11 @@ struct MutexContentionArgs { void *MutexContentionWorker(void *arg) { struct MutexContentionArgs *a = arg; while (!atomic_load_explicit(&a->done, memory_order_relaxed)) { - if (pthread_mutex_lock(a->mutex)) notpossible; + if (pthread_mutex_lock(a->mutex)) + notpossible; atomic_store_explicit(&a->ready, 1, memory_order_relaxed); - if (pthread_mutex_unlock(a->mutex)) notpossible; + if (pthread_mutex_unlock(a->mutex)) + notpossible; } return 0; } @@ -204,7 +206,8 @@ BENCH(pthread_mutex_lock, bench_contended) { pthread_spinlock_t s = {0}; struct SpinContentionArgs a = {&s}; pthread_create(&t, 0, SpinContentionWorker, &a); - while (!a.ready) sched_yield(); + while (!a.ready) + sched_yield(); EZBENCH2("spin 2x", donothing, BenchSpinUnspin(&s)); a.done = true; pthread_join(t, 0); @@ -213,7 +216,8 @@ BENCH(pthread_mutex_lock, bench_contended) { nsync_mu m = {0}; struct NsyncContentionArgs a = {&m}; pthread_create(&t, 0, NsyncContentionWorker, &a); - while (!a.ready) sched_yield(); + while (!a.ready) + sched_yield(); EZBENCH2("nsync 2x", donothing, BenchLockUnlockNsync(&m)); a.done = true; pthread_join(t, 0); @@ -226,7 +230,8 @@ BENCH(pthread_mutex_lock, bench_contended) { pthread_mutex_init(&m, &attr); struct MutexContentionArgs a = {&m}; pthread_create(&t, 0, MutexContentionWorker, &a); - while (!a.ready) sched_yield(); + while (!a.ready) + sched_yield(); EZBENCH2("normal 2x", donothing, BenchLockUnlock(&m)); a.done = true; pthread_join(t, 0); @@ -239,7 +244,8 @@ BENCH(pthread_mutex_lock, bench_contended) { pthread_mutex_init(&m, &attr); struct MutexContentionArgs a = {&m}; pthread_create(&t, 0, MutexContentionWorker, &a); - while (!a.ready) sched_yield(); + while (!a.ready) + sched_yield(); EZBENCH2("recursive 2x", donothing, BenchLockUnlock(&m)); a.done = true; pthread_join(t, 0); @@ -252,7 +258,8 @@ BENCH(pthread_mutex_lock, bench_contended) { pthread_mutex_init(&m, &attr); struct MutexContentionArgs a = {&m}; pthread_create(&t, 0, MutexContentionWorker, &a); - while (!a.ready) sched_yield(); + while (!a.ready) + sched_yield(); EZBENCH2("errorcheck 2x", donothing, BenchLockUnlock(&m)); a.done = true; pthread_join(t, 0); diff --git a/test/libc/intrin/rand64_test.c b/test/libc/intrin/rand64_test.c index ac763e895..dc0c19a4b 100644 --- a/test/libc/intrin/rand64_test.c +++ b/test/libc/intrin/rand64_test.c @@ -64,7 +64,8 @@ TEST(_rand64, testLcg_doesntProduceIdenticalValues) { for (i = 0; i < ARRAYLEN(A); ++i) { EXPECT_NE(0, A[i], "i=%d", i); for (j = 0; j < ARRAYLEN(A); ++j) { - if (i == j) continue; + if (i == j) + continue; EXPECT_NE(A[i], A[j], "i=%d j=%d", i, j); } } @@ -93,7 +94,8 @@ TEST(_rand64, testThreadSafety_doesntProduceIdenticalValues) { for (i = 0; i < ARRAYLEN(A); ++i) { EXPECT_NE(0, A[i], "i=%d", i); for (j = 0; j < ARRAYLEN(A); ++j) { - if (i == j) continue; + if (i == j) + continue; EXPECT_NE(A[i], A[j], "i=%d j=%d", i, j); } } diff --git a/test/libc/intrin/strchr_test.c b/test/libc/intrin/strchr_test.c index fbb4afaad..0943a83cf 100644 --- a/test/libc/intrin/strchr_test.c +++ b/test/libc/intrin/strchr_test.c @@ -72,8 +72,10 @@ TEST(strchrnul, notFound_returnsPointerToNulByte) { char *strchr_pure(const char *s, int c) { for (c &= 0xff;; ++s) { - if ((*s & 0xff) == c) return (char *)s; - if (!*s) return NULL; + if ((*s & 0xff) == c) + return (char *)s; + if (!*s) + return NULL; } } @@ -106,7 +108,8 @@ BENCH(strchr, bench) { char *memchr_pure(const char *m, int c, size_t n) { const unsigned char *p, *pe; for (c &= 0xff, p = (const unsigned char *)m, pe = p + n; p < pe; ++p) { - if (*p == c) return (void *)p; + if (*p == c) + return (void *)p; } return NULL; } @@ -126,8 +129,10 @@ TEST(memchr, fuzz) { char *strchrnul_pure(const char *s, int c) { for (c &= 0xff;; ++s) { - if ((*s & 0xff) == c) return (char *)s; - if (!*s) return (void *)s; + if ((*s & 0xff) == c) + return (char *)s; + if (!*s) + return (void *)s; } } @@ -147,7 +152,8 @@ TEST(strchrnul, fuzz) { void *rawmemchr_pure(const void *m, int c) { const unsigned char *s; for (c &= 255, s = m;; ++s) { - if (*s == c) return (void *)s; + if (*s == c) + return (void *)s; } } diff --git a/test/libc/intrin/strcmp_test.c b/test/libc/intrin/strcmp_test.c index fe7a4efac..a17153f58 100644 --- a/test/libc/intrin/strcmp_test.c +++ b/test/libc/intrin/strcmp_test.c @@ -491,7 +491,8 @@ TEST(wcsncmp, testTwosComplementBane) { dontinline int strcmp_pure(const char *a, const char *b) { for (; *a == *b; a++, b++) { - if (!*a) break; + if (!*a) + break; } return (*a & 0xff) - (*b & 0xff); } diff --git a/test/libc/intrin/strlen_test.c b/test/libc/intrin/strlen_test.c index 6ef0b70b1..87c316fa0 100644 --- a/test/libc/intrin/strlen_test.c +++ b/test/libc/intrin/strlen_test.c @@ -30,7 +30,8 @@ wchar_t u32[] = L"utf32 ☻"; size_t strlen_pure(const char *s) { size_t n = 0; - while (*s++) ++n; + while (*s++) + ++n; return n; } @@ -64,7 +65,8 @@ TEST(strlen, test_const) { TEST(strlen, test_nonconst) { char buf[256]; unsigned i; - for (i = 0; i < 255; ++i) buf[i] = i + 1; + for (i = 0; i < 255; ++i) + buf[i] = i + 1; buf[i] = '\0'; ASSERT_EQ(255, strlen(buf)); } @@ -85,7 +87,8 @@ TEST(strlen, testnonconst) { "m"(*StR) */ char buf[256]; unsigned i; - for (i = 0; i < 250; ++i) buf[i] = i + 1; + for (i = 0; i < 250; ++i) + buf[i] = i + 1; buf[i] = '\0'; ASSERT_EQ(250, strlen(buf)); } diff --git a/test/libc/intrin/strsignal_r_test.c b/test/libc/intrin/strsignal_r_test.c index c0cddbf16..e89b6603c 100644 --- a/test/libc/intrin/strsignal_r_test.c +++ b/test/libc/intrin/strsignal_r_test.c @@ -31,7 +31,8 @@ TEST(strsignal, test) { } TEST(strsignal, realtime) { - if (!SIGRTMIN) return; + if (!SIGRTMIN) + return; EXPECT_STREQ("SIGTHR", strsignal(SIGTHR)); ASSERT_STREQ("SIGRTMIN+1", strsignal(SIGRTMIN + 1)); } diff --git a/test/libc/mem/critbit0_test.c b/test/libc/mem/critbit0_test.c index 3e48b54c0..0fa7a206b 100644 --- a/test/libc/mem/critbit0_test.c +++ b/test/libc/mem/critbit0_test.c @@ -61,7 +61,8 @@ TEST(critbit0, testContains) { struct critbit0 tree[1]; MakeTree(tree); for (unsigned i = 0; elems[i]; ++i) { - if (!critbit0_contains(tree, elems[i])) abort(); + if (!critbit0_contains(tree, elems[i])) + abort(); } critbit0_clear(tree); } @@ -73,15 +74,19 @@ TEST(critbit0, testDelete) { struct critbit0 tree = {0}; for (unsigned i = 1; elems2[i]; ++i) { critbit0_clear(&tree); - for (unsigned j = 0; j < i; ++j) critbit0_insert(&tree, elems2[j]); + for (unsigned j = 0; j < i; ++j) + critbit0_insert(&tree, elems2[j]); for (unsigned j = 0; j < i; ++j) { - if (!critbit0_contains(&tree, elems2[j])) abort(); + if (!critbit0_contains(&tree, elems2[j])) + abort(); } for (unsigned j = 0; j < i; ++j) { - if (1 != critbit0_delete(&tree, elems2[j])) abort(); + if (1 != critbit0_delete(&tree, elems2[j])) + abort(); } for (unsigned j = 0; j < i; ++j) { - if (critbit0_contains(&tree, elems2[j])) abort(); + if (critbit0_contains(&tree, elems2[j])) + abort(); } } critbit0_clear(&tree); diff --git a/test/libc/mem/djbsort_test.c b/test/libc/mem/djbsort_test.c index e56195642..3f1f9db9b 100644 --- a/test/libc/mem/djbsort_test.c +++ b/test/libc/mem/djbsort_test.c @@ -97,8 +97,10 @@ TEST(djbsort, test64) { } static int CompareInt(const void *a, const void *b) { - if (*(const int *)a < *(const int *)b) return -1; - if (*(const int *)a > *(const int *)b) return +1; + if (*(const int *)a < *(const int *)b) + return -1; + if (*(const int *)a > *(const int *)b) + return +1; return 0; } diff --git a/test/libc/mem/malloc_test.c b/test/libc/mem/malloc_test.c index 327975b69..f27e1e3c3 100644 --- a/test/libc/mem/malloc_test.c +++ b/test/libc/mem/malloc_test.c @@ -50,36 +50,46 @@ TEST(malloc, zero) { char *p; ASSERT_NE(NULL, (p = malloc(0))); - if (IsAsan()) ASSERT_FALSE(__asan_is_valid(p, 1)); + if (IsAsan()) + ASSERT_FALSE(__asan_is_valid(p, 1)); free(p); } TEST(realloc, bothAreZero_createsMinimalAllocation) { char *p; ASSERT_NE(NULL, (p = realloc(0, 0))); - if (IsAsan()) ASSERT_FALSE(__asan_is_valid(p, 1)); + if (IsAsan()) + ASSERT_FALSE(__asan_is_valid(p, 1)); free(p); } TEST(realloc, ptrIsZero_createsAllocation) { char *p; ASSERT_NE(NULL, (p = realloc(0, 1))); - if (IsAsan()) ASSERT_TRUE(__asan_is_valid(p, 1)); - if (IsAsan()) ASSERT_FALSE(__asan_is_valid(p + 1, 1)); + if (IsAsan()) + ASSERT_TRUE(__asan_is_valid(p, 1)); + if (IsAsan()) + ASSERT_FALSE(__asan_is_valid(p + 1, 1)); ASSERT_EQ(p, realloc(p, 0)); - if (IsAsan()) ASSERT_FALSE(__asan_is_valid(p, 1)); - if (IsAsan()) ASSERT_FALSE(__asan_is_valid(p + 1, 1)); + if (IsAsan()) + ASSERT_FALSE(__asan_is_valid(p, 1)); + if (IsAsan()) + ASSERT_FALSE(__asan_is_valid(p + 1, 1)); free(p); } TEST(realloc, sizeIsZero_shrinksAllocation) { char *p; ASSERT_NE(NULL, (p = malloc(1))); - if (IsAsan()) ASSERT_TRUE(__asan_is_valid(p, 1)); - if (IsAsan()) ASSERT_FALSE(__asan_is_valid(p + 1, 1)); + if (IsAsan()) + ASSERT_TRUE(__asan_is_valid(p, 1)); + if (IsAsan()) + ASSERT_FALSE(__asan_is_valid(p + 1, 1)); ASSERT_EQ(p, realloc(p, 0)); - if (IsAsan()) ASSERT_FALSE(__asan_is_valid(p, 1)); - if (IsAsan()) ASSERT_FALSE(__asan_is_valid(p + 1, 1)); + if (IsAsan()) + ASSERT_FALSE(__asan_is_valid(p, 1)); + if (IsAsan()) + ASSERT_FALSE(__asan_is_valid(p + 1, 1)); free(p); } @@ -154,9 +164,12 @@ TEST(malloc, test) { } } free(big); - for (i = 0; i < ARRAYLEN(A); ++i) free(A[i]); - for (i = 0; i < ARRAYLEN(maps); ++i) munmap(maps[i], mapsizes[i]); - for (i = 0; i < ARRAYLEN(fds); ++i) close(fds[i]); + for (i = 0; i < ARRAYLEN(A); ++i) + free(A[i]); + for (i = 0; i < ARRAYLEN(maps); ++i) + munmap(maps[i], mapsizes[i]); + for (i = 0; i < ARRAYLEN(fds); ++i) + close(fds[i]); } TEST(memalign, roundsUpAlignmentToTwoPower) { @@ -211,7 +224,8 @@ void *Worker(void *arg) { BENCH(malloc, torture) { int i, n = __get_cpu_count() * 2; pthread_t *t = gc(malloc(sizeof(pthread_t) * n)); - if (!n) return; + if (!n) + return; printf("\nmalloc torture test w/ %d threads and %d iterations\n", n, ITERATIONS); SPAWN(fork); diff --git a/test/libc/mem/qsort_test.c b/test/libc/mem/qsort_test.c index 197653bdd..a30e3e32a 100644 --- a/test/libc/mem/qsort_test.c +++ b/test/libc/mem/qsort_test.c @@ -31,8 +31,10 @@ int CompareLow(const void *a, const void *b) { const int *x = a; const int *y = b; - if ((char)*x < (char)*y) return -1; - if ((char)*x > (char)*y) return +1; + if ((char)*x < (char)*y) + return -1; + if ((char)*x > (char)*y) + return +1; return 0; } @@ -72,16 +74,20 @@ TEST(sort, stability) { int CompareInt(const void *a, const void *b) { const int *x = a; const int *y = b; - if (*x < *y) return -1; - if (*x > *y) return +1; + if (*x < *y) + return -1; + if (*x > *y) + return +1; return 0; } int CompareLong(const void *a, const void *b) { const long *x = a; const long *y = b; - if (*x < *y) return -1; - if (*x > *y) return +1; + if (*x < *y) + return -1; + if (*x > *y) + return +1; return 0; } @@ -110,8 +116,10 @@ struct Record { int CompareRecord(const void *a, const void *b) { const struct Record *x = a; const struct Record *y = b; - if (x->z > y->z) return -1; - if (x->z < y->z) return +1; + if (x->z > y->z) + return -1; + if (x->z < y->z) + return +1; return 0; } @@ -119,7 +127,8 @@ TEST(qsort, records) { int i, n = 256; struct Record *A = gc(calloc(n, sizeof(struct Record))); struct Record *B = gc(calloc(n, sizeof(struct Record))); - for (i = 0; i < n; ++i) A[i].z = B[i].z = lemur64(); + for (i = 0; i < n; ++i) + A[i].z = B[i].z = lemur64(); qsort(A, n, sizeof(struct Record), CompareRecord); mergesort(B, n, sizeof(struct Record), CompareRecord); ASSERT_EQ(0, memcmp(A, B, n * sizeof(struct Record))); @@ -131,7 +140,8 @@ TEST(qsort, equivalence_random) { long *a = gc(malloc(n * sizeof(long))); long *b = gc(malloc(n * sizeof(long))); long *c = gc(malloc(n * sizeof(long))); - for (i = 0; i < n; ++i) a[i] = lemur64(); + for (i = 0; i < n; ++i) + a[i] = lemur64(); memcpy(b, a, n * sizeof(long)); memcpy(c, a, n * sizeof(long)); qsort(b, n, sizeof(long), CompareLong); @@ -154,7 +164,8 @@ TEST(qsort, equivalence_reverse) { long *a = gc(malloc(n * sizeof(long))); long *b = gc(malloc(n * sizeof(long))); long *c = gc(malloc(n * sizeof(long))); - for (i = 0; i < n; ++i) a[n - i - 1] = i; + for (i = 0; i < n; ++i) + a[n - i - 1] = i; memcpy(b, a, n * sizeof(long)); memcpy(c, a, n * sizeof(long)); qsort(b, n, sizeof(long), CompareLong); @@ -178,7 +189,8 @@ BENCH(qsort, bench) { long *p2 = gc(malloc(n * sizeof(long))); printf("\n"); - for (i = 0; i < n; ++i) p1[i] = i + ((lemur64() % 3) - 1); + for (i = 0; i < n; ++i) + p1[i] = i + ((lemur64() % 3) - 1); EZBENCH2("qsort nearly", memcpy(p2, p1, n * sizeof(long)), qsort(p2, n, sizeof(long), CompareLong)); EZBENCH2("qsort_r nearly", memcpy(p2, p1, n * sizeof(long)), @@ -193,7 +205,8 @@ BENCH(qsort, bench) { _longsort(p2, n)); printf("\n"); - for (i = 0; i < n; ++i) p1[i] = n - i; + for (i = 0; i < n; ++i) + p1[i] = n - i; EZBENCH2("qsort reverse", memcpy(p2, p1, n * sizeof(long)), qsort(p2, n, sizeof(long), CompareLong)); EZBENCH2("qsort_r reverse", memcpy(p2, p1, n * sizeof(long)), diff --git a/test/libc/nexgen32e/gclongjmp_test.c b/test/libc/nexgen32e/gclongjmp_test.c index c567dda51..a033e5186 100644 --- a/test/libc/nexgen32e/gclongjmp_test.c +++ b/test/libc/nexgen32e/gclongjmp_test.c @@ -43,7 +43,8 @@ void Free(char *p) { void C(void) { x = GC(strdup("abcd")); - if (0) PrintGarbage(); + if (0) + PrintGarbage(); gclongjmp(jb, 1); abort(); } @@ -65,12 +66,14 @@ void (*Bp)(void(void)) = B; void (*Cp)(void) = C; TEST(gclongjmp, test) { - if (0) PrintGarbage(); + if (0) + PrintGarbage(); if (!setjmp(jb)) { Ap(Cp, Bp); abort(); } - if (0) PrintGarbage(); + if (0) + PrintGarbage(); EXPECT_STREQ("FREE", x); EXPECT_STREQ("FREE", y); EXPECT_STREQ("FREE", z); @@ -80,7 +83,8 @@ TEST(gclongjmp, test) { } void crawl(const char *path) { - if (!strcmp(path, "/") || !strcmp(path, ".")) return; + if (!strcmp(path, "/") || !strcmp(path, ".")) + return; crawl(gc(xdirname(path))); } @@ -92,8 +96,10 @@ void *Worker(void *arg) { TEST(gc, torture) { int i, n = 32; pthread_t *t = gc(malloc(sizeof(pthread_t) * n)); - for (i = 0; i < n; ++i) ASSERT_SYS(0, 0, pthread_create(t + i, 0, Worker, 0)); - for (i = 0; i < n; ++i) EXPECT_SYS(0, 0, pthread_join(t[i], 0)); + for (i = 0; i < n; ++i) + ASSERT_SYS(0, 0, pthread_create(t + i, 0, Worker, 0)); + for (i = 0; i < n; ++i) + EXPECT_SYS(0, 0, pthread_join(t[i], 0)); } #if defined(__GNUC__) && __GNUC__ >= 12 @@ -101,7 +107,8 @@ TEST(gc, torture) { #endif void crawl2(jmp_buf jb, const char *path) { - if (!strcmp(path, "/") || !strcmp(path, ".")) gclongjmp(jb, 1); + if (!strcmp(path, "/") || !strcmp(path, ".")) + gclongjmp(jb, 1); crawl2(jb, gc(xdirname(path))); } diff --git a/test/libc/nexgen32e/lz4decode_test.c b/test/libc/nexgen32e/lz4decode_test.c index c652ad0e2..bb679a334 100644 --- a/test/libc/nexgen32e/lz4decode_test.c +++ b/test/libc/nexgen32e/lz4decode_test.c @@ -72,7 +72,8 @@ TEST(lz4, decompress_runLengthDecode) { } TEST(lz4, zoneFileGmt) { - if (!fileexists("usr/share/zoneinfo.dict.lz4")) return; + if (!fileexists("usr/share/zoneinfo.dict.lz4")) + return; char *dict = gc(xslurp("usr/share/zoneinfo.dict.lz4", 0)); char *gmt = gc(xslurp("usr/share/zoneinfo/GMT.lz4", 0)); size_t mapsize, gmtsize; diff --git a/test/libc/proc/execve_test.c b/test/libc/proc/execve_test.c index bd323958d..01573483e 100644 --- a/test/libc/proc/execve_test.c +++ b/test/libc/proc/execve_test.c @@ -65,9 +65,12 @@ TEST(execve, testArgPassing) { } TEST(execve, ziposELF) { - if (1) return; // TODO: rewrite - if (IsFreebsd()) return; // TODO: fixme on freebsd - if (IsLinux() && !__is_linux_2_6_23()) return; // TODO: fixme on old linux + if (1) + return; // TODO: rewrite + if (IsFreebsd()) + return; // TODO: fixme on freebsd + if (IsLinux() && !__is_linux_2_6_23()) + return; // TODO: fixme on old linux if (!IsLinux() && !IsFreebsd()) { EXPECT_SYS(ENOSYS, -1, execve("/zip/life.elf", (char *const[]){0}, (char *const[]){0})); @@ -80,9 +83,12 @@ TEST(execve, ziposELF) { } TEST(execve, ziposAPE) { - if (1) return; // TODO: rewrite - if (IsFreebsd()) return; // TODO: fixme on freebsd - if (IsLinux() && !__is_linux_2_6_23()) return; // TODO: fixme on old linux + if (1) + return; // TODO: rewrite + if (IsFreebsd()) + return; // TODO: fixme on freebsd + if (IsLinux() && !__is_linux_2_6_23()) + return; // TODO: fixme on old linux if (!IsLinux() && !IsFreebsd()) { EXPECT_EQ( -1, execve("/zip/life-nomod", (char *const[]){0}, (char *const[]){0})); @@ -137,7 +143,8 @@ void ExecveTinyElf(const char *path) { } BENCH(execve, bench) { - if (!IsLinux()) return; + if (!IsLinux()) + return; char path[128] = "/tmp/tinyelf.XXXXXX"; int fd = mkstemp(path); fchmod(fd, 0700); diff --git a/test/libc/proc/fork_test.c b/test/libc/proc/fork_test.c index dd7283ea4..8fb801ae6 100644 --- a/test/libc/proc/fork_test.c +++ b/test/libc/proc/fork_test.c @@ -103,7 +103,8 @@ static void OnSigusr2(int sig) { } TEST(fork, childToChild) { - if (IsWindows()) return; // :'( + if (IsWindows()) + return; // :'( sigset_t mask, oldmask; int ws, parent, child1, child2; gotsigusr1 = false; @@ -144,7 +145,8 @@ TEST(fork, preservesTlsMemory) { void ForkInSerial(void) { int pid, ws; ASSERT_NE(-1, (pid = fork())); - if (!pid) _Exit(0); + if (!pid) + _Exit(0); ASSERT_NE(-1, waitpid(pid, &ws, 0)); ASSERT_TRUE(WIFEXITED(ws)); ASSERT_EQ(0, WEXITSTATUS(ws)); diff --git a/test/libc/proc/getpriority_test.c b/test/libc/proc/getpriority_test.c index 024dcfd9f..274d52464 100644 --- a/test/libc/proc/getpriority_test.c +++ b/test/libc/proc/getpriority_test.c @@ -60,7 +60,8 @@ TEST(getpriority, higherPriorityOfSelf) { } TEST(getpriority, lowerAndRaiseItAgain_notAllowed) { - if (1) return; // this behavior seems limited to modern linux + if (1) + return; // this behavior seems limited to modern linux SPAWN(fork); ASSERT_SYS(0, 0, setpriority(PRIO_PROCESS, 0, 5)); ASSERT_SYS(EACCES, -1, setpriority(PRIO_PROCESS, 0, 4)); diff --git a/test/libc/proc/handkill_test.c b/test/libc/proc/handkill_test.c index 4d2872fcf..7e03f7a38 100644 --- a/test/libc/proc/handkill_test.c +++ b/test/libc/proc/handkill_test.c @@ -69,7 +69,8 @@ void *Killer(void *arg) { void *Killed(void *arg) { shm->ready = true; - while (!shm->got_signal) donothing; + while (!shm->got_signal) + donothing; shm->handler_returned = true; return 0; } @@ -88,7 +89,8 @@ TEST(handkill, main2thread_async) { pthread_t th; shm->target = pthread_self(); pthread_create(&th, 0, Killed, 0); - while (!shm->ready) donothing; + while (!shm->ready) + donothing; ASSERT_EQ(0, pthread_kill(th, SIGUSR1)); ASSERT_EQ(0, pthread_join(th, 0)); TERMS(SIGUSR1); @@ -101,7 +103,8 @@ TEST(handkill, thread2main_async) { pthread_t th; shm->target = pthread_self(); pthread_create(&th, 0, Killer, 0); - while (!shm->got_signal) donothing; + while (!shm->got_signal) + donothing; shm->handler_returned = true; pthread_join(th, 0); TERMS(SIGUSR1); @@ -122,13 +125,16 @@ TEST(handkill, thread2thread_async) { } TEST(handkill, process_async) { - if (IsWindows()) return; + if (IsWindows()) + return; SPAWN(fork); shm->ready = true; - while (!shm->got_signal) donothing; + while (!shm->got_signal) + donothing; shm->handler_returned = true; PARENT(); - while (!shm->ready) donothing; + while (!shm->ready) + donothing; ASSERT_SYS(0, 0, kill(child, SIGUSR1)); WAIT(term, SIGUSR1); EXPECT_TRUE(shm->got_signal); @@ -136,13 +142,15 @@ TEST(handkill, process_async) { } TEST(handkill, process_pause) { - if (IsWindows()) return; + if (IsWindows()) + return; SPAWN(fork); shm->ready = true; pause(); shm->handler_returned = true; PARENT(); - while (!shm->ready) donothing; + while (!shm->ready) + donothing; usleep(1e6 / CLK_TCK * 2); ASSERT_SYS(0, 0, kill(child, SIGUSR1)); WAIT(term, SIGUSR1); diff --git a/test/libc/proc/posix_spawn_test.c b/test/libc/proc/posix_spawn_test.c index 16294928e..e83abb2a8 100644 --- a/test/libc/proc/posix_spawn_test.c +++ b/test/libc/proc/posix_spawn_test.c @@ -129,8 +129,10 @@ TEST(posix_spawn, ape) { } TEST(posix_spawn, elf) { - if (IsOpenbsd()) return; // mimmutable() ugh - if (IsXnu() || IsWindows() || IsMetal()) return; + if (IsOpenbsd()) + return; // mimmutable() ugh + if (IsXnu() || IsWindows() || IsMetal()) + return; int ws, pid; char *prog = "./life.elf"; // assimilate -bcef char *args[] = {prog, 0}; @@ -193,7 +195,8 @@ void OhMyGoth(int sig) { // time for a vfork() clone() signal bloodbath TEST(posix_spawn, torture) { - if (1) return; + if (1) + return; int n = 10; int ws, pid; sigset_t allsig; @@ -259,10 +262,14 @@ void EmptySigHandler(int sig) { } TEST(posix_spawn, etxtbsy) { - if (IsWindows()) return; // can't deliver signals between processes - if (IsXnu()) return; // they don't appear impacted by this race condition - if (IsNetbsd()) return; // they don't appear impacted by this race condition - if (IsOpenbsd()) return; // they don't appear impacted by this race condition + if (IsWindows()) + return; // can't deliver signals between processes + if (IsXnu()) + return; // they don't appear impacted by this race condition + if (IsNetbsd()) + return; // they don't appear impacted by this race condition + if (IsOpenbsd()) + return; // they don't appear impacted by this race condition int ws, me, pid, thief; char *prog = "./life"; char *args[] = {prog, 0}; @@ -398,12 +405,14 @@ BENCH(posix_spawn, bench) { EZBENCH2("vfork life-pe", donothing, VforkExecveWait("./life-pe")); EZBENCH2("fork life-pe", donothing, ForkExecveWait("./life-pe")); } - if (IsXnu() || IsWindows() || IsMetal()) return; + if (IsXnu() || IsWindows() || IsMetal()) + return; EZBENCH2("posix_spawn life.elf", donothing, PosixSpawnWait("./life.elf")); EZBENCH2("vfork life.elf", donothing, VforkExecveWait("./life.elf")); EZBENCH2("fork life.elf", donothing, ForkExecveWait("./life.elf")); #ifdef __x86_64__ - if (!IsLinux()) return; + if (!IsLinux()) + return; EZBENCH2("posix_spawn tiny64", donothing, PosixSpawnWait("tiny64")); EZBENCH2("vfork tiny64", donothing, VforkExecveWait("tiny64")); EZBENCH2("fork tiny64", donothing, ForkExecveWait("tiny64")); diff --git a/test/libc/proc/sched_getaffinity_test.c b/test/libc/proc/sched_getaffinity_test.c index 23abc1fe9..d75680f95 100644 --- a/test/libc/proc/sched_getaffinity_test.c +++ b/test/libc/proc/sched_getaffinity_test.c @@ -51,7 +51,8 @@ TEST(sched_getaffinity, firstOnly) { } TEST(sched_getaffinity, secondOnly) { - if (__get_cpu_count() < 2) return; + if (__get_cpu_count() < 2) + return; cpu_set_t x, y; CPU_ZERO(&x); CPU_SET(1, &x); @@ -122,7 +123,8 @@ TEST(pthread_getaffinity, getpid) { CPU_ZERO(&x); CPU_SET(0, &x); ASSERT_SYS(0, 0, pthread_setaffinity_np(pthread_self(), sizeof(x), &x)); - if (IsWindows()) return; // win32 doesn't define GetThreadAffinityMask ;_; + if (IsWindows()) + return; // win32 doesn't define GetThreadAffinityMask ;_; ASSERT_SYS(0, 0, pthread_getaffinity_np(pthread_self(), sizeof(y), &y)); EXPECT_EQ(1, CPU_COUNT(&y)); EXPECT_TRUE(CPU_ISSET(0, &y)); diff --git a/test/libc/proc/system_test.c b/test/libc/proc/system_test.c index 9d719e6bb..b80873320 100644 --- a/test/libc/proc/system_test.c +++ b/test/libc/proc/system_test.c @@ -171,7 +171,8 @@ TEST(system, usleep) { TEST(system, kill) { int ws = system("kill -TERM $$; usleep"); - if (!IsWindows()) ASSERT_EQ(SIGTERM, WTERMSIG(ws)); + if (!IsWindows()) + ASSERT_EQ(SIGTERM, WTERMSIG(ws)); } TEST(system, exitStatusPreservedAfterSemiColon) { diff --git a/test/libc/runtime/exit_test.c b/test/libc/runtime/exit_test.c index cbdc1459a..3522f8de1 100644 --- a/test/libc/runtime/exit_test.c +++ b/test/libc/runtime/exit_test.c @@ -73,7 +73,8 @@ TEST(exit, narrowing) { } TEST(exit, exitCode259_wontCauseParentProcessToHangForever) { - if (!IsWindows()) return; + if (!IsWindows()) + return; SPAWN(vfork); _Exit(259); EXITS(259); @@ -88,7 +89,8 @@ TEST(exit, sigkill) { pause(); } } - while (!*ready) donothing; + while (!*ready) + donothing; ASSERT_EQ(0, kill(pid, SIGKILL)); ASSERT_SYS(0, pid, wait(&ws)); ASSERT_EQ(SIGKILL, ws); @@ -107,7 +109,8 @@ TEST(exit, sigalrm) { pause(); } } - while (!*ready) donothing; + while (!*ready) + donothing; ASSERT_EQ(0, kill(pid, SIGALRM)); ASSERT_SYS(0, pid, wait(&ws)); ASSERT_EQ(SIGALRM, ws); diff --git a/test/libc/runtime/grow_test.c b/test/libc/runtime/grow_test.c index 63be403af..071fa2f89 100644 --- a/test/libc/runtime/grow_test.c +++ b/test/libc/runtime/grow_test.c @@ -70,8 +70,10 @@ TEST(grow, testGrowth_clearsNewMemory) { memset(p, 'a', capacity); EXPECT_TRUE(__grow(&p, &capacity, 1, 0)); EXPECT_GT(capacity, 123); - for (i = 0; i < 123; ++i) ASSERT_EQ('a', p[i]); - for (i = 123; i < capacity; ++i) ASSERT_EQ(0, p[i]); + for (i = 0; i < 123; ++i) + ASSERT_EQ('a', p[i]); + for (i = 123; i < capacity; ++i) + ASSERT_EQ(0, p[i]); free(p); } diff --git a/test/libc/runtime/memtrack_test.c b/test/libc/runtime/memtrack_test.c index 41c19e2a2..0ccdeeb31 100644 --- a/test/libc/runtime/memtrack_test.c +++ b/test/libc/runtime/memtrack_test.c @@ -72,15 +72,18 @@ bool AreMemoryIntervalsOk(const struct MemoryIntervals *mm) { static bool AreMemoryIntervalsEqual(const struct MemoryIntervals *mm1, const struct MemoryIntervals *mm2) { - if (mm1->i != mm2->i) return false; - if (memcmp(mm1->p, mm2->p, mm1->i * sizeof(*mm2->p)) != 0) return false; + if (mm1->i != mm2->i) + return false; + if (memcmp(mm1->p, mm2->p, mm1->i * sizeof(*mm2->p)) != 0) + return false; return true; } static void PrintMemoryInterval(const struct MemoryIntervals *mm) { int i; for (i = 0; i < mm->i; ++i) { - if (i) fprintf(stderr, ","); + if (i) + fprintf(stderr, ","); fprintf(stderr, "{%d,%d}", mm->p[i].x, mm->p[i].y); } fprintf(stderr, "\n"); @@ -294,7 +297,8 @@ TEST(__untrack_memory, TestPunchHole) { } TEST(__untrack_memory, TestShortenLeft) { - if (IsWindows()) return; + if (IsWindows()) + return; static struct MemoryIntervals mm[2] = { {1, OPEN_MAX, 0, {I(0, 9)}}, {1, OPEN_MAX, 0, {I(0, 7)}}, @@ -305,7 +309,8 @@ TEST(__untrack_memory, TestShortenLeft) { } TEST(__untrack_memory, TestShortenRight) { - if (IsWindows()) return; + if (IsWindows()) + return; static struct MemoryIntervals mm[2] = { {1, OPEN_MAX, 0, {I(0, 9)}}, {1, OPEN_MAX, 0, {I(3, 9)}}, @@ -316,7 +321,8 @@ TEST(__untrack_memory, TestShortenRight) { } TEST(__untrack_memory, TestShortenLeft2) { - if (IsWindows()) return; + if (IsWindows()) + return; static struct MemoryIntervals mm[2] = { {1, OPEN_MAX, 0, {I(0, 9)}}, {1, OPEN_MAX, 0, {I(0, 7)}}, @@ -327,7 +333,8 @@ TEST(__untrack_memory, TestShortenLeft2) { } TEST(__untrack_memory, TestShortenRight2) { - if (IsWindows()) return; + if (IsWindows()) + return; static struct MemoryIntervals mm[2] = { {1, OPEN_MAX, 0, {I(0, 9)}}, {1, OPEN_MAX, 0, {I(3, 9)}}, diff --git a/test/libc/runtime/mmap_test.c b/test/libc/runtime/mmap_test.c index 1136a91c1..bf05855dd 100644 --- a/test/libc/runtime/mmap_test.c +++ b/test/libc/runtime/mmap_test.c @@ -104,7 +104,8 @@ TEST(mmap, smallerThanPage_mapsRemainder) { } TEST(mmap, smallerThanPage_remainderIsPoisoned) { - if (!IsAsan()) return; + if (!IsAsan()) + return; char *map; ASSERT_NE(MAP_FAILED, (map = mmap(0, 1, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0))); @@ -474,7 +475,8 @@ void BenchMmapPrivate(void) { void *p; p = mmap(0, FRAMESIZE, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); - if (p == MAP_FAILED) abort(); + if (p == MAP_FAILED) + abort(); ptrs[count++] = p; } diff --git a/test/libc/runtime/mprotect_test.c b/test/libc/runtime/mprotect_test.c index b4c8a82cc..c06eeb005 100644 --- a/test/libc/runtime/mprotect_test.c +++ b/test/libc/runtime/mprotect_test.c @@ -183,8 +183,10 @@ TEST(mprotect, testExecJit_actuallyWorks) { } TEST(mprotect, testRwxMap_vonNeumannRules) { - if (IsOpenbsd()) return; // boo - if (IsXnuSilicon()) return; // boo + if (IsOpenbsd()) + return; // boo + if (IsXnuSilicon()) + return; // boo int (*p)(void) = gc(memalign(getauxval(AT_PAGESZ), getauxval(AT_PAGESZ))); memcpy(p, kRet31337, sizeof(kRet31337)); EXPECT_NE(-1, mprotect(p, getauxval(AT_PAGESZ), @@ -196,7 +198,8 @@ TEST(mprotect, testRwxMap_vonNeumannRules) { } TEST(mprotect, testExecuteFlatFileMapOpenedAsReadonly) { - if (IsXnuSilicon()) return; // TODO(jart): Use APE Loader SIP workaround? + if (IsXnuSilicon()) + return; // TODO(jart): Use APE Loader SIP workaround? int (*p)(void); size_t n = sizeof(kRet31337); ASSERT_SYS(0, 3, creat("return31337", 0755)); diff --git a/test/libc/runtime/msync_test.c b/test/libc/runtime/msync_test.c index 0d374ecec..3fa7a1dbe 100644 --- a/test/libc/runtime/msync_test.c +++ b/test/libc/runtime/msync_test.c @@ -62,7 +62,8 @@ TEST(msync, changeFileMappingAndWakeSpinLockWaiter) { (map = mmap(0, 1, PROT_READ | PROT_WRITE, MAP_SHARED, 3, 0))); if (!fork()) { // wait for other process to enter spin sem - while (*sem == 0) donothing; + while (*sem == 0) + donothing; // change the file mapping map[0] = 1; // openbsd fails with this line commented out @@ -72,7 +73,8 @@ TEST(msync, changeFileMappingAndWakeSpinLockWaiter) { _Exit(123); } *sem = 1; - while (*sem == 1) donothing; + while (*sem == 1) + donothing; ASSERT_EQ(1, map[0]); ASSERT_SYS(0, 1, pread(3, &byte, 1, 0)); ASSERT_EQ(1, byte); diff --git a/test/libc/runtime/munmap_test.c b/test/libc/runtime/munmap_test.c index ea0ef0078..9483485cb 100644 --- a/test/libc/runtime/munmap_test.c +++ b/test/libc/runtime/munmap_test.c @@ -140,7 +140,8 @@ TEST(munmap, memoryGone) { } TEST(munmap, testTooSmallToUnmapAsan) { - if (!IsAsan()) return; + if (!IsAsan()) + return; char *p; ASSERT_NE(MAP_FAILED, (p = mmap(0, FRAMESIZE, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0))); @@ -150,7 +151,8 @@ TEST(munmap, testTooSmallToUnmapAsan) { } TEST(munmap, testLargeEnoughToUnmapAsan) { - if (!IsAsan()) return; + if (!IsAsan()) + return; if (IsWindows()) { // we're unfortunately never able to unmap asan pages on windows // because the memtrack array items always have to be 64kb so we diff --git a/test/libc/sock/connect_test.c b/test/libc/sock/connect_test.c index 5192cbd87..806961eb0 100644 --- a/test/libc/sock/connect_test.c +++ b/test/libc/sock/connect_test.c @@ -35,8 +35,10 @@ #include "libc/thread/thread.h" TEST(connect, nonblocking) { - if (IsFreebsd()) return; // TODO(jart): why did this start flaking? - if (IsOpenbsd()) return; // TODO(jart): why did this start freezing? + if (IsFreebsd()) + return; // TODO(jart): why did this start flaking? + if (IsOpenbsd()) + return; // TODO(jart): why did this start freezing? char buf[16] = {0}; atomic_uint *sem = _mapshared(sizeof(unsigned)); uint32_t addrsize = sizeof(struct sockaddr_in); @@ -49,7 +51,8 @@ TEST(connect, nonblocking) { ASSERT_SYS(0, 0, getsockname(3, (struct sockaddr *)&addr, &addrsize)); ASSERT_SYS(0, 0, listen(3, SOMAXCONN)); SPAWN(fork); - while (!*sem) pthread_yield(); + while (!*sem) + pthread_yield(); ASSERT_SYS(0, 4, accept(3, (struct sockaddr *)&addr, &addrsize)); ASSERT_SYS(0, 2, read(4, buf, 16)); // hi ASSERT_SYS(0, 5, write(4, "hello", 5)); diff --git a/test/libc/sock/nonblock_test.c b/test/libc/sock/nonblock_test.c index 8e639e624..baf7aa92e 100644 --- a/test/libc/sock/nonblock_test.c +++ b/test/libc/sock/nonblock_test.c @@ -37,7 +37,8 @@ TEST(O_NONBLOCK, canBeSetBySocket_toMakeListenNonBlocking) { // TODO(jart): this doesn't make any sense on windows - if (IsWindows()) return; + if (IsWindows()) + return; char buf[16] = {0}; uint32_t addrsize = sizeof(struct sockaddr_in); struct sockaddr_in addr = { diff --git a/test/libc/sock/recvfrom_test.c b/test/libc/sock/recvfrom_test.c index acb2cf9e1..8126a8f4e 100644 --- a/test/libc/sock/recvfrom_test.c +++ b/test/libc/sock/recvfrom_test.c @@ -33,7 +33,8 @@ // two clients send a udp packet containing their local address // server verifies content of packet matches the peer's address TEST(recvfrom, test) { - if (!IsWindows()) return; + if (!IsWindows()) + return; uint32_t addrsize = sizeof(struct sockaddr_in); struct sockaddr_in server = { .sin_family = AF_INET, diff --git a/test/libc/sock/sendfile_test.c b/test/libc/sock/sendfile_test.c index 95d65b1aa..c63e2cb1c 100644 --- a/test/libc/sock/sendfile_test.c +++ b/test/libc/sock/sendfile_test.c @@ -40,8 +40,10 @@ #include "libc/x/x.h" void SetUpOnce(void) { - if (IsNetbsd()) exit(0); - if (IsOpenbsd()) exit(0); + if (IsNetbsd()) + exit(0); + if (IsOpenbsd()) + exit(0); testlib_enable_tmp_setup_teardown(); ASSERT_SYS(0, 0, pledge("stdio rpath wpath cpath proc inet", 0)); } @@ -101,7 +103,8 @@ TEST(sendfile, testSeeking) { TEST(sendfile, testPositioning) { // TODO(jart): fix test regression on windows - if (IsWindows()) return; + if (IsWindows()) + return; char buf[1024]; uint32_t addrsize = sizeof(struct sockaddr_in); struct sockaddr_in addr = { diff --git a/test/libc/sock/socket_test.c b/test/libc/sock/socket_test.c index 0a529f2be..74983072d 100644 --- a/test/libc/sock/socket_test.c +++ b/test/libc/sock/socket_test.c @@ -152,7 +152,8 @@ __attribute__((__constructor__)) static void StdioPro(int argc, char *argv[]) { } TEST(socket, canBeUsedAsExecutedStdio) { - if (IsWindows()) return; // TODO(jart): What broke this? + if (IsWindows()) + return; // TODO(jart): What broke this? char buf[16] = {0}; const char *prog; uint32_t addrsize = sizeof(struct sockaddr_in); diff --git a/test/libc/sock/unix_test.c b/test/libc/sock/unix_test.c index 3c3c0821f..c1691234b 100644 --- a/test/libc/sock/unix_test.c +++ b/test/libc/sock/unix_test.c @@ -43,7 +43,8 @@ void SetUpOnce(void) { } TEST(unix, datagram) { - if (IsWindows()) return; // no unix datagram on windows :'( + if (IsWindows()) + return; // no unix datagram on windows :'( atomic_bool *ready = _mapshared(1); SPAWN(fork); char buf[256] = {0}; @@ -60,7 +61,8 @@ TEST(unix, datagram) { EXPECT_STREQ("hello", buf); ASSERT_SYS(0, 0, close(3)); PARENT(); - while (!*ready) sched_yield(); + while (!*ready) + sched_yield(); ASSERT_SYS(0, 3, socket(AF_UNIX, SOCK_DGRAM, 0)); uint32_t len = sizeof(struct sockaddr_un); struct sockaddr_un addr = {AF_UNIX, "foo.sock"}; @@ -95,7 +97,8 @@ void StreamServer(atomic_bool *ready) { TEST(unix, stream) { int ws; - if (IsWindows() && !IsAtLeastWindows10()) return; + if (IsWindows() && !IsAtLeastWindows10()) + return; atomic_bool *ready = _mapshared(1); // TODO(jart): move this line down when kFdProcess is gone ASSERT_SYS(0, 3, socket(AF_UNIX, SOCK_STREAM, 0)); @@ -104,7 +107,8 @@ TEST(unix, stream) { StreamServer(ready); _Exit(0); } - while (!*ready) sched_yield(); + while (!*ready) + sched_yield(); uint32_t len = sizeof(struct sockaddr_un); struct sockaddr_un addr = {AF_UNIX, "foo.sock"}; ASSERT_SYS(0, 0, connect(3, (void *)&addr, len)); @@ -117,8 +121,10 @@ TEST(unix, stream) { } TEST(unix, serverGoesDown_deletedSockFile) { // field of landmine - if (IsWindows()) return; - if (IsCygwin()) return; + if (IsWindows()) + return; + if (IsCygwin()) + return; char buf[8] = {0}; uint32_t len = sizeof(struct sockaddr_un); struct sockaddr_un addr = {AF_UNIX, "foo.sock"}; @@ -152,8 +158,10 @@ TEST(unix, serverGoesDown_deletedSockFile) { // field of landmine } TEST(unix, serverGoesDown_usingSendTo_unlink) { // much easier - if (IsWindows()) return; - if (IsCygwin()) return; + if (IsWindows()) + return; + if (IsCygwin()) + return; char buf[8] = {0}; uint32_t len = sizeof(struct sockaddr_un); struct sockaddr_un addr = {AF_UNIX, "foo.sock"}; diff --git a/test/libc/stdio/dirstream_test.c b/test/libc/stdio/dirstream_test.c index 392497840..447f0f433 100644 --- a/test/libc/stdio/dirstream_test.c +++ b/test/libc/stdio/dirstream_test.c @@ -61,7 +61,8 @@ void SetUp(void) { TEST(opendir, efault) { ASSERT_SYS(EFAULT, NULL, opendir(0)); - if (!IsAsan()) return; // not possible + if (!IsAsan()) + return; // not possible ASSERT_SYS(EFAULT, NULL, opendir((void *)77)); } @@ -180,8 +181,10 @@ TEST(rewinddir, test) { readdir(dir); rewinddir(dir); while ((ent = readdir(dir))) { - if (strcmp(ent->d_name, "foo")) hasfoo = true; - if (strcmp(ent->d_name, "bar")) hasbar = true; + if (strcmp(ent->d_name, "foo")) + hasfoo = true; + if (strcmp(ent->d_name, "bar")) + hasbar = true; } EXPECT_TRUE(hasfoo); EXPECT_TRUE(hasbar); diff --git a/test/libc/stdio/fds_torture_test.c b/test/libc/stdio/fds_torture_test.c index c43ad2e1e..18f446663 100644 --- a/test/libc/stdio/fds_torture_test.c +++ b/test/libc/stdio/fds_torture_test.c @@ -35,7 +35,8 @@ void *Torturer(void *arg) { } for (i = 0; i < FDS; ++i) { ASSERT_EQ(2, write(fd[i], "hi", 2)); - if (!vfork()) _Exit(0); + if (!vfork()) + _Exit(0); wait(0); } for (i = 0; i < FDS; ++i) { diff --git a/test/libc/stdio/fgets_test.c b/test/libc/stdio/fgets_test.c index ee248ee09..405df39f8 100644 --- a/test/libc/stdio/fgets_test.c +++ b/test/libc/stdio/fgets_test.c @@ -53,7 +53,8 @@ void Benchmark(void) { f = fmemopen(gc(strdup(kHyperion)), kHyperionSize, "r+"); for (;;) { line = fgets(buf, sizeof(buf), f); - if (!line) break; + if (!line) + break; } fclose(f); } diff --git a/test/libc/stdio/fprintf_test.c b/test/libc/stdio/fprintf_test.c index 55011e438..9fd12402f 100644 --- a/test/libc/stdio/fprintf_test.c +++ b/test/libc/stdio/fprintf_test.c @@ -24,7 +24,8 @@ TEST(fprintf, testWriteError) { // Only Linux, NetBSD and FreeBSD are known to have /dev/full - if (!IsLinux() && !IsNetbsd() && !IsFreebsd()) return; + if (!IsLinux() && !IsNetbsd() && !IsFreebsd()) + return; FILE *fp = fopen("/dev/full", "w"); ASSERT_NE(fp, NULL); diff --git a/test/libc/stdio/fwrite_test.c b/test/libc/stdio/fwrite_test.c index e06d10dca..270fb1411 100644 --- a/test/libc/stdio/fwrite_test.c +++ b/test/libc/stdio/fwrite_test.c @@ -162,7 +162,8 @@ void OnSigInt(int sig) { } TEST(fwrite, signalStorm) { - if (IsWindows()) return; + if (IsWindows()) + return; int pid; struct sigaction oldchld, oldint; struct sigaction sachld = {.sa_handler = SIG_IGN}; @@ -180,7 +181,8 @@ TEST(fwrite, signalStorm) { pause(); MeatyReadWriteTest(); EXPECT_NE(-1, kill(pid, SIGINT)); - while (wait(0) == -1 && errno == EINTR) donothing; + while (wait(0) == -1 && errno == EINTR) + donothing; EXPECT_NE(-1, sigaction(SIGCHLD, &oldchld, NULL)); EXPECT_NE(-1, sigaction(SIGINT, &oldint, NULL)); } diff --git a/test/libc/stdio/getdelim_test.c b/test/libc/stdio/getdelim_test.c index 2fb02ff1f..37f88bd18 100644 --- a/test/libc/stdio/getdelim_test.c +++ b/test/libc/stdio/getdelim_test.c @@ -99,7 +99,8 @@ void ReadHyperionLines(void) { ASSERT_NE(NULL, (f = fopen("hyperion.txt", "r"))); for (;;) { rc = getline(&line, &linesize, f); - if (rc == -1) break; + if (rc == -1) + break; data = xrealloc(data, size + rc); memcpy(data + size, line, rc); size += rc; diff --git a/test/libc/stdio/getentropy_test.c b/test/libc/stdio/getentropy_test.c index 73b860e39..532e6b098 100644 --- a/test/libc/stdio/getentropy_test.c +++ b/test/libc/stdio/getentropy_test.c @@ -51,9 +51,11 @@ void *TortureWorker(void *arg) { ASSERT_SYS(0, 0, sigprocmask(SIG_SETMASK, &ss, 0)); ready = true; while (!done) { - if (!IsWindows()) pthread_kill(parent, SIGUSR1); + if (!IsWindows()) + pthread_kill(parent, SIGUSR1); usleep(1); - if (!IsWindows()) pthread_kill(parent, SIGUSR2); + if (!IsWindows()) + pthread_kill(parent, SIGUSR2); usleep(1); } return 0; @@ -72,7 +74,8 @@ TEST(getentropy, test) { ASSERT_SYS(0, 0, sigaction(SIGUSR2, &sa, 0)); parent = pthread_self(); ASSERT_EQ(0, pthread_create(&child, 0, TortureWorker, 0)); - while (!ready) pthread_yield(); + while (!ready) + pthread_yield(); for (k = 0; k < 10; ++k) { ASSERT_SYS(0, 0, getentropy(0, 0)); for (i = 0; i < n; i += m) { @@ -83,9 +86,11 @@ TEST(getentropy, test) { if ((e = MeasureEntropy(buf, n)) < w) { fprintf(stderr, "error: entropy suspect! got %g but want >=%g\n", e, w); for (i = 0; i < n;) { - if (!(i % 16)) fprintf(stderr, "%6x ", i); + if (!(i % 16)) + fprintf(stderr, "%6x ", i); fprintf(stderr, "%lc", kCp437[buf[i] & 255]); - if (!(++i % 16)) fprintf(stderr, "\n"); + if (!(++i % 16)) + fprintf(stderr, "\n"); } fprintf(stderr, "\n"); done = true; @@ -95,7 +100,8 @@ TEST(getentropy, test) { } done = true; ASSERT_EQ(0, pthread_join(child, 0)); - if (!IsWindows()) ASSERT_GT(gotsome, 0); + if (!IsWindows()) + ASSERT_GT(gotsome, 0); } #endif /* __aarch64__ */ diff --git a/test/libc/stdio/mt19937_test.c b/test/libc/stdio/mt19937_test.c index 696685a74..1da2588a9 100644 --- a/test/libc/stdio/mt19937_test.c +++ b/test/libc/stdio/mt19937_test.c @@ -35,8 +35,10 @@ void GetRandom(void *p, size_t n) { for (i = 0; i < n; i += rc) { m = MIN(n - i, 256); rc = getrandom((char *)p + i, m, 0); - if (rc == -1 && errno == EINTR) continue; - if (rc <= 0) abort(); + if (rc == -1 && errno == EINTR) + continue; + if (rc <= 0) + abort(); } } diff --git a/test/libc/stdio/popen_test.c b/test/libc/stdio/popen_test.c index b60e7c085..ef4a2b973 100644 --- a/test/libc/stdio/popen_test.c +++ b/test/libc/stdio/popen_test.c @@ -120,7 +120,8 @@ void OnSig(int sig) { } TEST(popen, complicated) { - if (IsWindows()) return; // windows treats sigusr1 as terminate + if (IsWindows()) + return; // windows treats sigusr1 as terminate char cmd[64]; signal(SIGUSR1, OnSig); sprintf(cmd, "read a ; test \"x$a\" = xhello && kill -USR1 %d", getpid()); @@ -164,8 +165,10 @@ TEST(popen, torture) { int i, n = 4; pthread_t *t = gc(malloc(sizeof(pthread_t) * n)); testlib_extract("/zip/echo", "echo", 0755); - for (i = 0; i < n; ++i) ASSERT_EQ(0, pthread_create(t + i, 0, Worker, 0)); - for (i = 0; i < n; ++i) ASSERT_EQ(0, pthread_join(t[i], 0)); + for (i = 0; i < n; ++i) + ASSERT_EQ(0, pthread_create(t + i, 0, Worker, 0)); + for (i = 0; i < n; ++i) + ASSERT_EQ(0, pthread_join(t[i], 0)); CheckForFdLeaks(); } diff --git a/test/libc/stdio/tmpfile_test.c b/test/libc/stdio/tmpfile_test.c index 7b976ccc7..0e8079f46 100644 --- a/test/libc/stdio/tmpfile_test.c +++ b/test/libc/stdio/tmpfile_test.c @@ -39,8 +39,10 @@ bool IsDirectoryEmpty(const char *path) { struct dirent *e; ASSERT_NE(NULL, (d = opendir(path))); while ((e = readdir(d))) { - if (!strcmp(e->d_name, ".")) continue; - if (!strcmp(e->d_name, "..")) continue; + if (!strcmp(e->d_name, ".")) + continue; + if (!strcmp(e->d_name, "..")) + continue; res = false; } closedir(d); @@ -83,7 +85,8 @@ TEST(tmpfile, test) { #ifndef __aarch64__ // TODO(jart): Why does this apply to pi and qemu-aarch64? TEST(tmpfile, renameToRealFile) { - if (!(IsLinux() && __is_linux_2_6_23())) return; // need non-ancient linux + if (!(IsLinux() && __is_linux_2_6_23())) + return; // need non-ancient linux FILE *f; f = tmpfile(); ASSERT_EQ(2, fputs("hi", f)); diff --git a/test/libc/str/highwayhash64_test.c b/test/libc/str/highwayhash64_test.c index f73171630..6ba2f443a 100644 --- a/test/libc/str/highwayhash64_test.c +++ b/test/libc/str/highwayhash64_test.c @@ -68,7 +68,8 @@ uint32_t KnuthMultiplicativeHash32(const void *buf, size_t size) { uint32_t h; const uint32_t kPhiPrime = 0x9e3779b1; const unsigned char *p = (const unsigned char *)buf; - for (h = i = 0; i < size; i++) h = (p[i] + h) * kPhiPrime; + for (h = i = 0; i < size; i++) + h = (p[i] + h) * kPhiPrime; return h; } diff --git a/test/libc/str/longsort_test.c b/test/libc/str/longsort_test.c index bacb49301..3a92b0586 100644 --- a/test/libc/str/longsort_test.c +++ b/test/libc/str/longsort_test.c @@ -42,8 +42,10 @@ void InsertionSort(int *A, int n) { int CompareLong(const void *a, const void *b) { const long *x = a; const long *y = b; - if (*x < *y) return -1; - if (*x > *y) return +1; + if (*x < *y) + return -1; + if (*x > *y) + return +1; return 0; } @@ -61,7 +63,8 @@ TEST(_longsort, test) { #ifdef __x86_64__ TEST(vqsort_int64_avx2, test) { - if (!X86_HAVE(AVX2)) return; + if (!X86_HAVE(AVX2)) + return; size_t n = 5000; long *a = gc(calloc(n, sizeof(long))); long *b = gc(calloc(n, sizeof(long))); @@ -73,7 +76,8 @@ TEST(vqsort_int64_avx2, test) { } TEST(vqsort_int64_sse4, test) { - if (!X86_HAVE(SSE4_2)) return; + if (!X86_HAVE(SSE4_2)) + return; size_t n = 5000; long *a = gc(calloc(n, sizeof(long))); long *b = gc(calloc(n, sizeof(long))); @@ -85,7 +89,8 @@ TEST(vqsort_int64_sse4, test) { } TEST(vqsort_int64_ssse3, test) { - if (!X86_HAVE(SSSE3)) return; + if (!X86_HAVE(SSSE3)) + return; size_t n = 5000; long *a = gc(calloc(n, sizeof(long))); long *b = gc(calloc(n, sizeof(long))); @@ -152,8 +157,10 @@ BENCH(_longsort, bench) { int CompareInt(const void *a, const void *b) { const int *x = a; const int *y = b; - if (*x < *y) return -1; - if (*x > *y) return +1; + if (*x < *y) + return -1; + if (*x > *y) + return +1; return 0; } @@ -171,7 +178,8 @@ TEST(InsertionSort, test) { #ifdef __x86_64__ TEST(vqsort_int32_avx2, test) { - if (!X86_HAVE(AVX2)) return; + if (!X86_HAVE(AVX2)) + return; size_t n = 5000; int *a = gc(calloc(n, sizeof(int))); int *b = gc(calloc(n, sizeof(int))); @@ -183,7 +191,8 @@ TEST(vqsort_int32_avx2, test) { } TEST(vqsort_int32_sse4, test) { - if (!X86_HAVE(SSE4_2)) return; + if (!X86_HAVE(SSE4_2)) + return; size_t n = 5000; int *a = gc(calloc(n, sizeof(int))); int *b = gc(calloc(n, sizeof(int))); @@ -195,7 +204,8 @@ TEST(vqsort_int32_sse4, test) { } TEST(vqsort_int32_ssse3, test) { - if (!X86_HAVE(SSSE3)) return; + if (!X86_HAVE(SSSE3)) + return; size_t n = 5000; int *a = gc(calloc(n, sizeof(int))); int *b = gc(calloc(n, sizeof(int))); diff --git a/test/libc/str/memccpy_test.c b/test/libc/str/memccpy_test.c index 4b6267310..5b54c189f 100644 --- a/test/libc/str/memccpy_test.c +++ b/test/libc/str/memccpy_test.c @@ -28,7 +28,8 @@ void *memccpy_pure(void *d, const void *s, int c, size_t n) { unsigned char *x; const unsigned char *y; for (c &= 0xff, x = d, y = s, i = 0; i < n; ++i) { - if ((x[i] = y[i]) == c) return x + i + 1; + if ((x[i] = y[i]) == c) + return x + i + 1; } return NULL; } diff --git a/test/libc/str/memmem_test.c b/test/libc/str/memmem_test.c index 145282a7d..413397be8 100644 --- a/test/libc/str/memmem_test.c +++ b/test/libc/str/memmem_test.c @@ -30,13 +30,18 @@ void *memmem_naive(const void *haystk, size_t haystklen, // const void *needle, size_t needlelen) { size_t i, j; - if (!needlelen) return (void *)haystk; - if (needlelen > haystklen) return 0; + if (!needlelen) + return (void *)haystk; + if (needlelen > haystklen) + return 0; for (i = 0; i < haystklen; ++i) { for (j = 0;; ++j) { - if (j == needlelen) return (/*unconst*/ char *)haystk + i; - if (i + j == haystklen) break; - if (((char *)haystk)[i + j] != ((char *)needle)[j]) break; + if (j == needlelen) + return (/*unconst*/ char *)haystk + i; + if (i + j == haystklen) + break; + if (((char *)haystk)[i + j] != ((char *)needle)[j]) + break; } } return 0; diff --git a/test/libc/str/strcasestr_test.c b/test/libc/str/strcasestr_test.c index 32f9ae339..a4b29daff 100644 --- a/test/libc/str/strcasestr_test.c +++ b/test/libc/str/strcasestr_test.c @@ -32,14 +32,19 @@ char *strcasestr_naive(const char *haystack, const char *needle) { size_t i; - if (haystack == needle || !*needle) return (void *)haystack; + if (haystack == needle || !*needle) + return (void *)haystack; for (;;) { for (i = 0;; ++i) { - if (!needle[i]) return (/*unconst*/ char *)haystack; - if (!haystack[i]) break; - if (kToLower[needle[i] & 255] != kToLower[haystack[i] & 255]) break; + if (!needle[i]) + return (/*unconst*/ char *)haystack; + if (!haystack[i]) + break; + if (kToLower[needle[i] & 255] != kToLower[haystack[i] & 255]) + break; } - if (!*haystack++) break; + if (!*haystack++) + break; } return 0; } diff --git a/test/libc/str/strstr_test.c b/test/libc/str/strstr_test.c index 0d40cae36..929185e6f 100644 --- a/test/libc/str/strstr_test.c +++ b/test/libc/str/strstr_test.c @@ -31,14 +31,19 @@ char *strstr_naive(const char *haystack, const char *needle) { size_t i; - if (haystack == needle || !*needle) return (void *)haystack; + if (haystack == needle || !*needle) + return (void *)haystack; for (;;) { for (i = 0;; ++i) { - if (!needle[i]) return (/*unconst*/ char *)haystack; - if (!haystack[i]) break; - if (needle[i] != haystack[i]) break; + if (!needle[i]) + return (/*unconst*/ char *)haystack; + if (!haystack[i]) + break; + if (needle[i] != haystack[i]) + break; } - if (!*haystack++) break; + if (!*haystack++) + break; } return 0; } diff --git a/test/libc/thread/makecontext_test.c b/test/libc/thread/makecontext_test.c index 93bdee907..3f53241d6 100644 --- a/test/libc/thread/makecontext_test.c +++ b/test/libc/thread/makecontext_test.c @@ -92,7 +92,8 @@ TEST(makecontext, crash) { } TEST(makecontext, backtrace) { - if (IsTiny()) return; // doesn't print full crash report + if (IsTiny()) + return; // doesn't print full crash report SPAWN(fork); if (IsWindows()) { __klog_handle = @@ -109,7 +110,8 @@ TEST(makecontext, backtrace) { makecontext(&uc, itsatrap, 2, 123, 456); setcontext(&uc); TERMS(SIGSEGV); - if (!GetSymbolTable()) return; + if (!GetSymbolTable()) + return; char *log = gc(xslurp("log", 0)); EXPECT_NE(0, strstr(log, "itsatrap")); EXPECT_NE(0, strstr(log, "runcontext")); diff --git a/test/libc/thread/nsync_test.c b/test/libc/thread/nsync_test.c index 11c0e2c46..d781c5243 100644 --- a/test/libc/thread/nsync_test.c +++ b/test/libc/thread/nsync_test.c @@ -41,14 +41,17 @@ int Put(long v, nsync_time abs_deadline) { } if (count != limit) { int i = pos + count; - if (limit <= i) i -= limit; + if (limit <= i) + i -= limit; data[i] = v; - if (count == 0) wake = 1; + if (count == 0) + wake = 1; count++; added = 1; } nsync_mu_unlock(&mu); - if (wake) nsync_cv_broadcast(&non_empty); + if (wake) + nsync_cv_broadcast(&non_empty); return added; } diff --git a/test/libc/thread/pthread_cancel_test.c b/test/libc/thread/pthread_cancel_test.c index 62604d327..c43aacc04 100644 --- a/test/libc/thread/pthread_cancel_test.c +++ b/test/libc/thread/pthread_cancel_test.c @@ -97,10 +97,12 @@ TEST(pthread_cancel, synchronous) { TEST(pthread_cancel, synchronous_deferred) { void *rc; pthread_t th; - if (!IsWindows()) return; + if (!IsWindows()) + return; ASSERT_SYS(0, 0, pipe(pfds)); ASSERT_EQ(0, pthread_create(&th, 0, Worker, 0)); - while (!ready) pthread_yield(); + while (!ready) + pthread_yield(); ASSERT_SYS(0, 0, usleep(10)); EXPECT_EQ(0, pthread_cancel(th)); EXPECT_EQ(0, pthread_join(th, &rc)); @@ -257,7 +259,8 @@ TEST(pthread_cancel, async) { is_in_infinite_loop = false; key_destructor_was_run = false; ASSERT_EQ(0, pthread_create(&th, 0, CpuBoundWorker, 0)); - while (!is_in_infinite_loop) pthread_yield(); + while (!is_in_infinite_loop) + pthread_yield(); ASSERT_EQ(0, pthread_cancel(th)); ASSERT_EQ(0, pthread_join(th, &rc)); ASSERT_EQ(PTHREAD_CANCELED, rc); @@ -289,7 +292,8 @@ TEST(pthread_cancel, self_asynchronous_takesImmediateEffect) { atomic_bool was_completed; void WaitUntilReady(void) { - while (!ready) pthread_yield(); + while (!ready) + pthread_yield(); ASSERT_EQ(0, errno); ASSERT_SYS(0, 0, usleep(1000)); } diff --git a/test/libc/thread/pthread_cond_signal_test.c b/test/libc/thread/pthread_cond_signal_test.c index 8389ddd53..107562814 100644 --- a/test/libc/thread/pthread_cond_signal_test.c +++ b/test/libc/thread/pthread_cond_signal_test.c @@ -41,14 +41,17 @@ int Put(long v, struct timespec *abs_deadline) { } if (count != limit) { int i = pos + count; - if (limit <= i) i -= limit; + if (limit <= i) + i -= limit; data[i] = v; - if (count == 0) wake = 1; + if (count == 0) + wake = 1; count++; added = 1; } pthread_mutex_unlock(&mu); - if (wake) pthread_cond_broadcast(&non_empty); + if (wake) + pthread_cond_broadcast(&non_empty); return added; } diff --git a/test/libc/thread/pthread_kill_test.c b/test/libc/thread/pthread_kill_test.c index e4eaae1ac..25a8f0b3c 100644 --- a/test/libc/thread/pthread_kill_test.c +++ b/test/libc/thread/pthread_kill_test.c @@ -61,7 +61,8 @@ void OnSig(int sig) { } void WaitUntilReady(void) { - while (!ready) pthread_yield(); + while (!ready) + pthread_yield(); ASSERT_EQ(0, errno); ASSERT_SYS(0, 0, usleep(100000)); } @@ -192,7 +193,8 @@ void *SocketAcceptWorker(void *arg) { } TEST(pthread_kill, canInterruptSocketAcceptOperation) { - if (IsWindows()) return; // TODO(jart): BAH + if (IsWindows()) + return; // TODO(jart): BAH pthread_t t; struct sigaction oldsa; struct sigaction sa = {.sa_handler = OnSig}; @@ -265,7 +267,8 @@ TEST(pthread_kill, canAsynchronouslyRunHandlerInsideTargetThread) { struct sigaction sa = {.sa_handler = OnSigAsync}; ASSERT_SYS(0, 0, sigaction(SIGUSR1, &sa, &oldsa)); ASSERT_EQ(0, pthread_create(&t, 0, CpuWorker, 0)); - while (!is_wasting_cpu) donothing; + while (!is_wasting_cpu) + donothing; EXPECT_EQ(0, pthread_kill(t, SIGUSR1)); ASSERT_EQ(0, pthread_join(t, 0)); ASSERT_TRUE(got_sig_async); @@ -290,9 +293,11 @@ TEST(pthread_kill, defaultThreadSignalHandlerWillKillWholeProcess) { SPAWN(fork); pthread_t t; ASSERT_EQ(0, pthread_create(&t, 0, FunWorker, 0)); - while (!is_having_fun) sched_yield(); + while (!is_having_fun) + sched_yield(); ASSERT_SYS(0, 0, pthread_kill(t, SIGKILL)); - for (;;) sched_yield(); + for (;;) + sched_yield(); TERMS(SIGKILL); ASSERT_NE(0, __get_tls()->tib_tid); } diff --git a/test/libc/thread/pthread_setname_np_test.c b/test/libc/thread/pthread_setname_np_test.c index 0adb7681e..d7e9a4bb9 100644 --- a/test/libc/thread/pthread_setname_np_test.c +++ b/test/libc/thread/pthread_setname_np_test.c @@ -85,7 +85,8 @@ atomic_char sync1, sync2; static void *GetNameOfOtherThreadWorker(void *arg) { pthread_setname_np(pthread_self(), "justine"); atomic_store(&sync1, 1); - while (!atomic_load(&sync2)) pthread_yield(); + while (!atomic_load(&sync2)) + pthread_yield(); return 0; } @@ -97,10 +98,13 @@ TEST(pthread_setname_np, GetNameOfOtherThread) { return; } ASSERT_EQ(0, pthread_create(&id, 0, GetNameOfOtherThreadWorker, 0)); - while (!atomic_load(&sync1)) pthread_yield(); + while (!atomic_load(&sync1)) + pthread_yield(); errno_t e = pthread_getname_np(id, me, sizeof(me)); - if (IsLinux() && e == ENOENT) goto GiveUp; // bah old kernel - if (IsLinux() && e == EACCES) goto GiveUp; // meh landlock + if (IsLinux() && e == ENOENT) + goto GiveUp; // bah old kernel + if (IsLinux() && e == EACCES) + goto GiveUp; // meh landlock ASSERT_EQ(0, e); EXPECT_STREQ("justine", me); ASSERT_EQ(0, pthread_setname_np(id, "tunney")); diff --git a/test/libc/thread/sem_timedwait_test.c b/test/libc/thread/sem_timedwait_test.c index c8a5ef101..aac8514d7 100644 --- a/test/libc/thread/sem_timedwait_test.c +++ b/test/libc/thread/sem_timedwait_test.c @@ -44,7 +44,8 @@ TEST(sem_init, einval) { } TEST(sem_post, afterDestroyed_isUndefinedBehavior) { - if (!IsModeDbg()) return; + if (!IsModeDbg()) + return; sem_t sem; SPAWN(fork); signal(SIGILL, SIG_DFL); @@ -56,7 +57,8 @@ TEST(sem_post, afterDestroyed_isUndefinedBehavior) { } TEST(sem_trywait, afterDestroyed_isUndefinedBehavior) { - if (!IsModeDbg()) return; + if (!IsModeDbg()) + return; sem_t sem; SPAWN(fork); signal(SIGILL, SIG_DFL); @@ -68,7 +70,8 @@ TEST(sem_trywait, afterDestroyed_isUndefinedBehavior) { } TEST(sem_wait, afterDestroyed_isUndefinedBehavior) { - if (!IsModeDbg()) return; + if (!IsModeDbg()) + return; sem_t sem; SPAWN(fork); signal(SIGILL, SIG_DFL); @@ -80,7 +83,8 @@ TEST(sem_wait, afterDestroyed_isUndefinedBehavior) { } TEST(sem_timedwait, afterDestroyed_isUndefinedBehavior) { - if (!IsModeDbg()) return; + if (!IsModeDbg()) + return; sem_t sem; SPAWN(fork); signal(SIGILL, SIG_DFL); @@ -107,12 +111,16 @@ TEST(sem_timedwait, threads) { pthread_t *t = gc(malloc(sizeof(pthread_t) * n)); ASSERT_SYS(0, 0, sem_init(s[0], 0, 0)); ASSERT_SYS(0, 0, sem_init(s[1], 0, 0)); - for (i = 0; i < n; ++i) ASSERT_EQ(0, pthread_create(t + i, 0, Worker, s)); - for (i = 0; i < n; ++i) ASSERT_SYS(0, 0, sem_wait(s[0])); + for (i = 0; i < n; ++i) + ASSERT_EQ(0, pthread_create(t + i, 0, Worker, s)); + for (i = 0; i < n; ++i) + ASSERT_SYS(0, 0, sem_wait(s[0])); ASSERT_SYS(0, 0, sem_getvalue(s[0], &r)); ASSERT_EQ(0, r); - for (i = 0; i < n; ++i) ASSERT_SYS(0, 0, sem_post(s[1])); - for (i = 0; i < n; ++i) ASSERT_EQ(0, pthread_join(t[i], 0)); + for (i = 0; i < n; ++i) + ASSERT_SYS(0, 0, sem_post(s[1])); + for (i = 0; i < n; ++i) + ASSERT_EQ(0, pthread_join(t[i], 0)); ASSERT_SYS(0, 0, sem_getvalue(s[1], &r)); ASSERT_EQ(0, r); ASSERT_SYS(0, 0, sem_destroy(s[1])); @@ -126,12 +134,15 @@ TEST(sem_timedwait, processes) { ASSERT_SYS(0, 0, sem_init(s[1], pshared, 0)); for (i = 0; i < n; ++i) { ASSERT_NE(-1, (rc = fork())); - if (!rc) Worker(s), _Exit(0); + if (!rc) + Worker(s), _Exit(0); } - for (i = 0; i < n; ++i) ASSERT_SYS(0, 0, sem_wait(s[0])); + for (i = 0; i < n; ++i) + ASSERT_SYS(0, 0, sem_wait(s[0])); ASSERT_SYS(0, 0, sem_getvalue(s[0], &r)); ASSERT_EQ(0, r); - for (i = 0; i < n; ++i) ASSERT_SYS(0, 0, sem_post(s[1])); + for (i = 0; i < n; ++i) + ASSERT_SYS(0, 0, sem_post(s[1])); for (;;) { int ws, pid, e = errno; if ((pid = waitpid(0, &ws, 0)) != -1) { diff --git a/test/libc/tinymath/magicu_test.c b/test/libc/tinymath/magicu_test.c index 55ad461bd..cb3da8d6a 100644 --- a/test/libc/tinymath/magicu_test.c +++ b/test/libc/tinymath/magicu_test.c @@ -38,7 +38,8 @@ T V[] = {5, 4, 77, 4, 7, 0, TEST(magicu, test) { int i, j; for (i = 0; i < ARRAYLEN(V); ++i) { - if (!V[i]) continue; + if (!V[i]) + continue; struct magicu d = __magicu_get(V[i]); for (j = 0; j < ARRAYLEN(V); ++j) { EXPECT_EQ(V[j] / V[i], __magicu_div(V[j], d)); diff --git a/test/libc/x/utf8to32_test.c b/test/libc/x/utf8to32_test.c index 9cdfa2647..0935f7485 100644 --- a/test/libc/x/utf8to32_test.c +++ b/test/libc/x/utf8to32_test.c @@ -88,7 +88,8 @@ char *GenerateBranchyUtf8Text(size_t *out_n) { wchar_t *q = gc(utf8to32(kViewables, kViewablesSize, &n)); shuffle(lemur64, q, n); p = utf32to8(q, n, &n); - if (out_n) *out_n = n; + if (out_n) + *out_n = n; return p; } diff --git a/test/libcxx/openmp_test.cc b/test/libcxx/openmp_test.cc index 160b63629..927d0f854 100644 --- a/test/libcxx/openmp_test.cc +++ b/test/libcxx/openmp_test.cc @@ -99,12 +99,14 @@ struct Gemmlin { } void gemm(long m, long n, long k) { - if (!m || !n) return; + if (!m || !n) + return; for (long i = 0; i < m; ++i) for (long j = 0; j < n; ++j) { C[ldc * i + j] *= β; } - if (!k) return; + if (!k) + return; cub = sqrt(LV1DCACHE) / sqrt(sizeof(T) * 3); mnpack(0, m, 0, n, 0, k); } @@ -120,9 +122,12 @@ struct Gemmlin { long kc = rounddown(std::min(k - k0, cub), 4); long kp = k0 + (k - k0) / kc * kc; kpack(m0, mc, mp, n0, nc, np, k0, kc, k, kp); - if (m - mp) mnpack(mp, m, n0, np, k0, k); - if (n - np) mnpack(m0, mp, np, n, k0, k); - if (m - mp && n - np) mnpack(mp, m, np, n, k0, k); + if (m - mp) + mnpack(mp, m, n0, np, k0, k); + if (n - np) + mnpack(m0, mp, np, n, k0, k); + if (m - mp && n - np) + mnpack(mp, m, np, n, k0, k); } void kpack(long m0, long mc, long m, // @@ -130,7 +135,8 @@ struct Gemmlin { long k0, long kc, long k, // long kp) { rpack(m0, mc, m, n0, nc, n, k0, kc, kp); - if (k - kp) rpack(m0, mc, m, n0, nc, n, kp, k - kp, k); + if (k - kp) + rpack(m0, mc, m, n0, nc, n, kp, k - kp, k); } void rpack(long m0, long mc, long m, // @@ -267,9 +273,11 @@ void show(FILE *f, long max, long m, long n, const TA *A, long lda, const TB *B, sprintf(ba, "%13.7f", static_cast(A[lda * i + j])); sprintf(bb, "%13.7f", static_cast(B[ldb * i + j])); for (long k = 0; ba[k] && bb[k]; ++k) { - if (ba[k] != bb[k]) fputs_unlocked("\33[31m", f); + if (ba[k] != bb[k]) + fputs_unlocked("\33[31m", f); fputc_unlocked(ba[k], f); - if (ba[k] != bb[k]) fputs_unlocked("\33[0m", f); + if (ba[k] != bb[k]) + fputs_unlocked("\33[0m", f); } } fprintf(f, "\n"); @@ -303,8 +311,10 @@ double diff(long m, long n, const TA *Want, long lda, const TB *Got, long ldb) { ++got_nans; else s += std::fabs(Want[lda * i + j] - Got[ldb * i + j]); - if (got_nans) printf("WARNING: got %d NaNs!\n", got_nans); - if (want_nans) printf("WARNING: want array has %d NaNs!\n", want_nans); + if (got_nans) + printf("WARNING: got %d NaNs!\n", got_nans); + if (want_nans) + printf("WARNING: want array has %d NaNs!\n", want_nans); return s / (m * n); } diff --git a/test/math/float16_test.c b/test/math/float16_test.c index f550b1c27..174fe7753 100644 --- a/test/math/float16_test.c +++ b/test/math/float16_test.c @@ -19,16 +19,19 @@ #include "libc/math.h" #define CHECK(x) \ - if (!(x)) return __LINE__ -#define FALSE(x) \ - { \ - volatile bool x_ = x; \ - if (x_) return __LINE__; \ + if (!(x)) \ + return __LINE__ +#define FALSE(x) \ + { \ + volatile bool x_ = x; \ + if (x_) \ + return __LINE__; \ } -#define TRUE(x) \ - { \ - volatile bool x_ = x; \ - if (!x_) return __LINE__; \ +#define TRUE(x) \ + { \ + volatile bool x_ = x; \ + if (!x_) \ + return __LINE__; \ } _Float16 identity(_Float16 x) { diff --git a/test/math/hypot_test.c b/test/math/hypot_test.c index dbe345edc..6cdb62f69 100644 --- a/test/math/hypot_test.c +++ b/test/math/hypot_test.c @@ -25,7 +25,8 @@ #define MAX_ERROR_ULP 1 #define CHECK(x) \ - if (!(x)) return __LINE__ + if (!(x)) \ + return __LINE__ #define TEST(e, x) \ errno = 0; \ @@ -85,7 +86,8 @@ int main() { continue; } long e = b.i - a.i; - if (e < 0) e = -e; + if (e < 0) + e = -e; CHECK(e <= MAX_ERROR_ULP); } } diff --git a/test/math/hypotf_test.c b/test/math/hypotf_test.c index 961f3c6d6..0fcc53f5b 100644 --- a/test/math/hypotf_test.c +++ b/test/math/hypotf_test.c @@ -25,7 +25,8 @@ #define MAX_ERROR_ULP 1 #define CHECK(x) \ - if (!(x)) return __LINE__ + if (!(x)) \ + return __LINE__ #define TEST(e, x) \ errno = 0; \ @@ -87,7 +88,8 @@ int main() { continue; } long e = b.i - a.i; - if (e < 0) e = -e; + if (e < 0) + e = -e; CHECK(e <= MAX_ERROR_ULP); } } diff --git a/test/math/powf_test.c b/test/math/powf_test.c index 357299826..dfcde8dd7 100644 --- a/test/math/powf_test.c +++ b/test/math/powf_test.c @@ -25,7 +25,8 @@ #define MAX_ERROR_ULP 1 #define CHECK(x) \ - if (!(x)) return __LINE__ + if (!(x)) \ + return __LINE__ #define TEST(e, x) \ errno = 0; \ @@ -97,7 +98,8 @@ int main() { continue; } int e = b.i - a.i; - if (e < 0) e = -e; + if (e < 0) + e = -e; CHECK(e <= MAX_ERROR_ULP); } } diff --git a/test/net/http/decodelatin1_test.c b/test/net/http/decodelatin1_test.c index e2a40c909..be3d87503 100644 --- a/test/net/http/decodelatin1_test.c +++ b/test/net/http/decodelatin1_test.c @@ -49,7 +49,8 @@ TEST(DecodeLatin1, testAbleToImposeCharacterRestrictions) { TEST(EncodeLatin1, roundTrip) { int i; char b[256]; - for (i = 0; i < 256; ++i) b[i] = i; + for (i = 0; i < 256; ++i) + b[i] = i; char *utf8 = gc(DecodeLatin1(b, 256, &n)); EXPECT_EQ(384, n); char *lat1 = gc(EncodeLatin1(utf8, n, &n, 0)); diff --git a/test/net/http/tokenbucket_test.c b/test/net/http/tokenbucket_test.c index 749ccd5b9..94bd3ff43 100644 --- a/test/net/http/tokenbucket_test.c +++ b/test/net/http/tokenbucket_test.c @@ -63,14 +63,16 @@ TEST(tokenbucket, test) { ASSERT_EQ(1, AcquireToken(tok.b, 0x7f000001, TB_CIDR)); ASSERT_EQ(0, AcquireToken(tok.b, 0x7f000002, TB_CIDR)); ASSERT_EQ(3, AcquireToken(tok.b, 0x08080808, TB_CIDR)); - for (int i = 0; i < 130; ++i) ReplenishTokens(tok.w, TB_WORDS); + for (int i = 0; i < 130; ++i) + ReplenishTokens(tok.w, TB_WORDS); ASSERT_EQ(127, AcquireToken(tok.b, 0x08080808, TB_CIDR)); } void NaiveReplenishTokens(atomic_schar *b, size_t n) { for (size_t i = 0; i < n; ++i) { int x = atomic_load_explicit(b + i, memory_order_relaxed); - if (x == 127) continue; + if (x == 127) + continue; atomic_fetch_add_explicit(b + i, 1, memory_order_acq_rel); } } diff --git a/test/net/https/mbedtls_test.c b/test/net/https/mbedtls_test.c index 821e83eb4..34eea7401 100644 --- a/test/net/https/mbedtls_test.c +++ b/test/net/https/mbedtls_test.c @@ -702,7 +702,8 @@ BENCH(inv_mod, bench3) { } TEST(ShiftRightAvx, test1) { - if (!X86_HAVE(AVX)) return; + if (!X86_HAVE(AVX)) + return; int i; for (i = 0; i < 10; ++i) { uint64_t mem[1] = {_rand64()}; @@ -717,7 +718,8 @@ TEST(ShiftRightAvx, test1) { } TEST(ShiftRightAvx, test2) { - if (!X86_HAVE(AVX)) return; + if (!X86_HAVE(AVX)) + return; int i; for (i = 0; i < 10; ++i) { uint64_t mem[2] = {_rand64(), _rand64()}; @@ -733,7 +735,8 @@ TEST(ShiftRightAvx, test2) { } TEST(ShiftRightAvx, test3) { - if (!X86_HAVE(AVX)) return; + if (!X86_HAVE(AVX)) + return; int i; for (i = 0; i < 10; ++i) { uint64_t mem[3] = {_rand64(), _rand64(), _rand64()}; @@ -750,7 +753,8 @@ TEST(ShiftRightAvx, test3) { } TEST(ShiftRightAvx, test4) { - if (!X86_HAVE(AVX)) return; + if (!X86_HAVE(AVX)) + return; int i; for (i = 0; i < 10; ++i) { uint64_t mem[4] = {_rand64(), _rand64(), _rand64(), _rand64()}; @@ -768,7 +772,8 @@ TEST(ShiftRightAvx, test4) { } TEST(ShiftRightAvx, test8) { - if (!X86_HAVE(AVX)) return; + if (!X86_HAVE(AVX)) + return; int i; for (i = 0; i < 10; ++i) { uint64_t mem[8] = {_rand64(), _rand64(), _rand64(), _rand64(), @@ -791,7 +796,8 @@ TEST(ShiftRightAvx, test8) { } TEST(ShiftRightAvx, test9) { - if (!X86_HAVE(AVX)) return; + if (!X86_HAVE(AVX)) + return; int i; for (i = 0; i < 10; ++i) { uint64_t mem[9] = {_rand64(), _rand64(), _rand64(), _rand64(), _rand64(), @@ -810,7 +816,8 @@ TEST(ShiftRightAvx, test9) { } BENCH(ShiftRight, bench) { - if (!X86_HAVE(AVX)) return; + if (!X86_HAVE(AVX)) + return; uint64_t x[64]; rngset(x, sizeof(x), _rand64, -1); EZBENCH2("ShiftRight", donothing, ShiftRight(x, 64, 1)); @@ -895,7 +902,8 @@ TEST(endian, big4) { TEST(Mul4x4, test) { int N, M; mbedtls_mpi A, B, C, D; - if (!X86_HAVE(BMI2) || !X86_HAVE(ADX)) return; + if (!X86_HAVE(BMI2) || !X86_HAVE(ADX)) + return; N = 4; M = 4; mbedtls_mpi_init(&A); @@ -918,7 +926,8 @@ TEST(Mul4x4, test) { BENCH(Mul4x4, bench) { int i, N, M; mbedtls_mpi A, B, C, D, E; - if (!X86_HAVE(BMI2) || !X86_HAVE(ADX)) return; + if (!X86_HAVE(BMI2) || !X86_HAVE(ADX)) + return; N = 4; M = 4; mbedtls_mpi_init(&A); @@ -973,7 +982,8 @@ BENCH(Mul4x4, bench) { BENCH(Mul6x6, bench) { int i, N, M; mbedtls_mpi A, B, C, D; - if (!X86_HAVE(BMI2) || !X86_HAVE(ADX)) return; + if (!X86_HAVE(BMI2) || !X86_HAVE(ADX)) + return; N = 6; M = 6; mbedtls_mpi_init(&A); @@ -1010,7 +1020,8 @@ BENCH(Mul6x6, bench) { BENCH(Mul10x10, bench) { int N, M; mbedtls_mpi A, B, C; - if (!X86_HAVE(BMI2) || !X86_HAVE(ADX)) return; + if (!X86_HAVE(BMI2) || !X86_HAVE(ADX)) + return; N = 10; M = 10; mbedtls_mpi_init(&A); @@ -1029,7 +1040,8 @@ BENCH(Mul10x10, bench) { BENCH(Mul16x16, bench) { int N, M; mbedtls_mpi A, B, C; - if (!X86_HAVE(BMI2) || !X86_HAVE(ADX)) return; + if (!X86_HAVE(BMI2) || !X86_HAVE(ADX)) + return; N = 16; M = 16; mbedtls_mpi_init(&A); @@ -1048,7 +1060,8 @@ BENCH(Mul16x16, bench) { BENCH(Mul32x32, bench) { int i, N, M; mbedtls_mpi A, B, C, D, K; - if (!X86_HAVE(BMI2) || !X86_HAVE(ADX)) return; + if (!X86_HAVE(BMI2) || !X86_HAVE(ADX)) + return; N = 32; M = 32; mbedtls_mpi_init(&A); @@ -1089,7 +1102,8 @@ BENCH(Mul32x32, bench) { BENCH(Mul16x1, bench) { int N, M; mbedtls_mpi A, B, C; - if (!X86_HAVE(BMI2) || !X86_HAVE(ADX)) return; + if (!X86_HAVE(BMI2) || !X86_HAVE(ADX)) + return; N = 16; M = 1; mbedtls_mpi_init(&A); @@ -1108,7 +1122,8 @@ BENCH(Mul16x1, bench) { BENCH(Mul32x1, bench) { int N, M; mbedtls_mpi A, B, C; - if (!X86_HAVE(BMI2) || !X86_HAVE(ADX)) return; + if (!X86_HAVE(BMI2) || !X86_HAVE(ADX)) + return; N = 32; M = 1; mbedtls_mpi_init(&A); diff --git a/test/posix/atoi_test.c b/test/posix/atoi_test.c index afef98200..f6b1ebbda 100644 --- a/test/posix/atoi_test.c +++ b/test/posix/atoi_test.c @@ -21,7 +21,8 @@ #include #define TEST(x) \ - if (!(x)) return __LINE__ + if (!(x)) \ + return __LINE__ int main() { TEST(atoi("") == 0); diff --git a/test/posix/reentrant_signal_test.c b/test/posix/reentrant_signal_test.c index e8271df56..90e4befac 100644 --- a/test/posix/reentrant_signal_test.c +++ b/test/posix/reentrant_signal_test.c @@ -31,7 +31,8 @@ void reentrant_signal_handler(int signum) { burn_stack[0] = 3; // Increment the count to indicate the signal was handled - if (++signal_handled_count == 10000) return; + if (++signal_handled_count == 10000) + return; // Re-raise the signal to test reentrancy raise(signum | burn_stack[3000]); diff --git a/test/posix/sa_resethand_test.c b/test/posix/sa_resethand_test.c index 1db070d02..c582d90fe 100644 --- a/test/posix/sa_resethand_test.c +++ b/test/posix/sa_resethand_test.c @@ -29,11 +29,18 @@ int main() { sa.sa_handler = OnSig; sa.sa_flags = SA_RESETHAND; sigemptyset(&sa.sa_mask); - if (sigaction(SIGUSR1, &sa, 0)) return 1; - if (sigaction(SIGUSR1, 0, &sa)) return 2; - if (sa.sa_handler != OnSig) return 3; - if (raise(SIGUSR1)) return 4; - if (gotsig != SIGUSR1) return 5; - if (sigaction(SIGUSR1, 0, &sa)) return 6; - if (sa.sa_handler != SIG_DFL) return 7; + if (sigaction(SIGUSR1, &sa, 0)) + return 1; + if (sigaction(SIGUSR1, 0, &sa)) + return 2; + if (sa.sa_handler != OnSig) + return 3; + if (raise(SIGUSR1)) + return 4; + if (gotsig != SIGUSR1) + return 5; + if (sigaction(SIGUSR1, 0, &sa)) + return 6; + if (sa.sa_handler != SIG_DFL) + return 7; } diff --git a/test/posix/sigchld_test.c b/test/posix/sigchld_test.c index 2b9de5860..36cf1f032 100644 --- a/test/posix/sigchld_test.c +++ b/test/posix/sigchld_test.c @@ -83,7 +83,8 @@ void OnSigchld(int sig, siginfo_t *si, void *arg) { int main(int argc, char *argv[]) { const char *startup = getenv("EXITCODE"); - if (startup) exit(atoi(startup)); + if (startup) + exit(atoi(startup)); struct sigaction newsa, oldsa; sigset_t oldmask, blocksigchld, unblockall; char *prog = argv[0]; diff --git a/test/posix/strtol_test.c b/test/posix/strtol_test.c index 4a6da98be..7df3733d3 100644 --- a/test/posix/strtol_test.c +++ b/test/posix/strtol_test.c @@ -21,7 +21,8 @@ #include #define TEST(x) \ - if (!(x)) return __LINE__ + if (!(x)) \ + return __LINE__ int main() { char *end; diff --git a/test/tool/build/lib/getargs_test.c b/test/tool/build/lib/getargs_test.c index 464bbc7c2..b26146833 100644 --- a/test/tool/build/lib/getargs_test.c +++ b/test/tool/build/lib/getargs_test.c @@ -55,7 +55,8 @@ void GetAllArgs(char **args) { size_t i = 0; struct GetArgs ga; getargs_init(&ga, args); - while (getargs_next(&ga)) ++i; + while (getargs_next(&ga)) + ++i; getargs_destroy(&ga); ASSERT_EQ(2 + 13790, i); } diff --git a/test/tool/net/redbean_test.c b/test/tool/net/redbean_test.c index 39fcbb4e1..685db685f 100644 --- a/test/tool/net/redbean_test.c +++ b/test/tool/net/redbean_test.c @@ -50,7 +50,8 @@ void SetUpOnce(void) { ssize_t n; char buf[1024]; int fdin, fdout; - if (IsWindows()) return; + if (IsWindows()) + return; testlib_enable_tmp_setup_teardown_once(); ASSERT_NE(-1, mkdir("bin", 0755)); ASSERT_NE(-1, (fdin = open("/zip/o/" MODE "/test/tool/net/redbean-tester", @@ -58,7 +59,8 @@ void SetUpOnce(void) { ASSERT_NE(-1, (fdout = creat("bin/redbean-tester", 0755))); for (;;) { ASSERT_NE(-1, (n = read(fdin, buf, sizeof(buf)))); - if (!n) break; + if (!n) + break; ASSERT_EQ(n, write(fdout, buf, n)); } close(fdout); @@ -83,7 +85,8 @@ char *SendHttpRequest(const char *s) { for (p = 0, n = 0;; n += rc) { p = xrealloc(p, n + 512); EXPECT_NE(-1, (rc = read(fd, p + n, 512))); - if (rc <= 0) break; + if (rc <= 0) + break; } p = xrealloc(p, n + 1); p[n] = 0; @@ -102,7 +105,8 @@ bool Matches(const char *regex, const char *str) { } TEST(redbean, testOptions) { - if (IsWindows()) return; + if (IsWindows()) + return; char portbuf[16]; int pid, pipefds[2]; sigset_t chldmask, savemask; @@ -142,7 +146,8 @@ TEST(redbean, testOptions) { } TEST(redbean, testPipeline) { - if (IsWindows()) return; + if (IsWindows()) + return; char portbuf[16]; int pid, pipefds[2]; sigset_t chldmask, savemask; @@ -190,7 +195,8 @@ TEST(redbean, testPipeline) { } TEST(redbean, testContentRange) { - if (IsWindows()) return; + if (IsWindows()) + return; char portbuf[16]; int pid, pipefds[2]; sigset_t chldmask, savemask; diff --git a/test/tool/net/sqlite_test.c b/test/tool/net/sqlite_test.c index 803806b9d..96c5bacc3 100644 --- a/test/tool/net/sqlite_test.c +++ b/test/tool/net/sqlite_test.c @@ -39,11 +39,14 @@ void SetUpOnce(void) { int DbOpen(const char *path, sqlite3 **db) { int i, rc; rc = sqlite3_open(path, db); - if (rc != SQLITE_OK) return rc; + if (rc != SQLITE_OK) + return rc; for (i = 0; i < 16; ++i) { rc = sqlite3_exec(*db, "PRAGMA journal_mode=WAL", 0, 0, 0); - if (rc == SQLITE_OK) break; - if (rc != SQLITE_BUSY) return rc; + if (rc == SQLITE_OK) + break; + if (rc != SQLITE_BUSY) + return rc; usleep(1000L << i); } return sqlite3_exec(*db, "PRAGMA synchronous=NORMAL", 0, 0, 0); @@ -53,9 +56,12 @@ int DbStep(sqlite3_stmt *stmt) { int i, rc; for (i = 0; i < 16; ++i) { rc = sqlite3_step(stmt); - if (rc == SQLITE_ROW) break; - if (rc == SQLITE_DONE) break; - if (rc != SQLITE_BUSY) return rc; + if (rc == SQLITE_ROW) + break; + if (rc == SQLITE_DONE) + break; + if (rc != SQLITE_BUSY) + return rc; usleep(1000L << i); } return rc; @@ -65,8 +71,10 @@ int DbExec(sqlite3 *db, const char *sql) { int i, rc; for (i = 0; i < 16; ++i) { rc = sqlite3_exec(db, sql, 0, 0, 0); - if (rc == SQLITE_OK) break; - if (rc != SQLITE_BUSY) return rc; + if (rc == SQLITE_OK) + break; + if (rc != SQLITE_BUSY) + return rc; usleep(1000L << i); } return rc; @@ -100,7 +108,8 @@ void *Worker(void *arg) { ASSERT_EQ(SQLITE_OK, DbExec(db, "BEGIN TRANSACTION")); for (;;) { rc = DbStep(stmt[1]); - if (rc == SQLITE_DONE) break; + if (rc == SQLITE_DONE) + break; ASSERT_EQ(SQLITE_ROW, rc); } ASSERT_EQ(SQLITE_OK, sqlite3_reset(stmt[1])); diff --git a/test/tool/plinko/plinko_test.c b/test/tool/plinko/plinko_test.c index cefc2f192..087663223 100644 --- a/test/tool/plinko/plinko_test.c +++ b/test/tool/plinko/plinko_test.c @@ -97,14 +97,16 @@ TEST(plinko, worksOrPrintsNiceError) { for (i = 0; i < ARRAYLEN(kSauces); ++i) { EXPECT_NE(-1, (fdin = open(kSauces[i], O_RDONLY))); rc = copyfd(fdin, pfds[0][1], -1); - if (rc == -1) EXPECT_EQ(EPIPE, errno); + if (rc == -1) + EXPECT_EQ(EPIPE, errno); EXPECT_NE(-1, close(fdin)); } EXPECT_NE(-1, close(pfds[0][1])); bzero(buf, sizeof(buf)); ASSERT_NE(-1, (got = read(pfds[1][0], buf, sizeof(buf) - 1))); EXPECT_NE(0, got); - while (read(pfds[1][0], drain, sizeof(drain)) > 0) donothing; + while (read(pfds[1][0], drain, sizeof(drain)) > 0) + donothing; EXPECT_NE(-1, close(pfds[1][0])); EXPECT_NE(-1, waitpid(pid, &wstatus, 0)); EXPECT_TRUE(WIFEXITED(wstatus)); diff --git a/test/tool/viz/lib/fun_test.c b/test/tool/viz/lib/fun_test.c index 64fbcffb2..5cb0ac213 100644 --- a/test/tool/viz/lib/fun_test.c +++ b/test/tool/viz/lib/fun_test.c @@ -195,12 +195,18 @@ void ExpandLuminosityRange(unsigned n, unsigned char *Y) { CHECK_ALIGNED(16, Y); for (i = 0; i < n; i += 16) { memcpy(b, Y + i, 16); - for (j = 0; j < 16; ++j) b[j] = MAX(0, b[j] - 16); - for (j = 0; j < 16; ++j) s[j] = b[j]; - for (j = 0; j < 16; ++j) s[j] *= 150; - for (j = 0; j < 16; ++j) s[j] /= 128; - for (j = 0; j < 16; ++j) s[j] = MIN(255, s[j]); - for (j = 0; j < 16; ++j) b[j] = s[j]; + for (j = 0; j < 16; ++j) + b[j] = MAX(0, b[j] - 16); + for (j = 0; j < 16; ++j) + s[j] = b[j]; + for (j = 0; j < 16; ++j) + s[j] *= 150; + for (j = 0; j < 16; ++j) + s[j] /= 128; + for (j = 0; j < 16; ++j) + s[j] = MIN(255, s[j]); + for (j = 0; j < 16; ++j) + b[j] = s[j]; memcpy(Y + i, b, 16); } } diff --git a/tool/build/apelink.c b/tool/build/apelink.c index 7e5ae9aa5..25bbbd365 100644 --- a/tool/build/apelink.c +++ b/tool/build/apelink.c @@ -280,12 +280,14 @@ static wontreturn void DieOom(void) { static void *Malloc(size_t n) { void *p; - if (!(p = malloc(n))) DieOom(); + if (!(p = malloc(n))) + DieOom(); return p; } static void *Realloc(void *p, size_t n) { - if (!(p = realloc(p, n))) DieOom(); + if (!(p = realloc(p, n))) + DieOom(); return p; } @@ -369,8 +371,10 @@ static char *LoadSourceCode(const char *path) { size_t i; char *text; ssize_t rc, size; - if ((fd = open(path, O_RDONLY)) == -1) DieSys(path); - if ((size = lseek(fd, 0, SEEK_END)) == -1) DieSys(path); + if ((fd = open(path, O_RDONLY)) == -1) + DieSys(path); + if ((size = lseek(fd, 0, SEEK_END)) == -1) + DieSys(path); text = Malloc(size + 1); text[size] = 0; for (i = 0; i < size; i += rc) { @@ -381,7 +385,8 @@ static char *LoadSourceCode(const char *path) { Die(path, "source code contains binary data"); } } - if (close(fd)) DieSys(path); + if (close(fd)) + DieSys(path); HashInput(text, size); return text; } @@ -488,7 +493,8 @@ static void ValidateElfImage(Elf64_Ehdr *e, Elf64_Off esize, // int found_load = 0; Elf64_Addr last_vaddr = 0; for (i = 0; i < e->e_phnum; ++i) { - if (p[i].p_type != PT_LOAD) continue; + if (p[i].p_type != PT_LOAD) + continue; if (found_load && p[i].p_vaddr <= last_vaddr) { Die(epath, "ELF PT_LOAD segments must be ordered by p_vaddr"); } @@ -566,7 +572,8 @@ static void ValidateElfImage(Elf64_Ehdr *e, Elf64_Off esize, // Elf64_Off a = p[i].p_vaddr & -pagesz; Elf64_Off b = (p[i].p_vaddr + p[i].p_memsz + (pagesz - 1)) & -pagesz; for (j = i + 1; j < e->e_phnum; ++j) { - if (p[j].p_type != PT_LOAD) continue; + if (p[j].p_type != PT_LOAD) + continue; Elf64_Off c = p[j].p_vaddr & -pagesz; Elf64_Off d = (p[j].p_vaddr + p[j].p_memsz + (pagesz - 1)) & -pagesz; if (MAX(a, c) < MIN(b, d)) { @@ -627,7 +634,8 @@ static bool IsSymbolWorthyOfSymtab(Elf64_Sym *sym) { } static void AppendZipAsset(unsigned char *lfile, unsigned char *cfile) { - if (assets.n == 65534) Die(outpath, "fat binary has >65534 zip assets"); + if (assets.n == 65534) + Die(outpath, "fat binary has >65534 zip assets"); assets.p = Realloc(assets.p, (assets.n + 1) * sizeof(*assets.p)); assets.p[assets.n].cfile = cfile; assets.p[assets.n].lfile = lfile; @@ -666,7 +674,8 @@ static void LoadSymbols(Elf64_Ehdr *e, Elf64_Off size, const char *path) { const char *name = ConvertElfMachineToSymtabName(e); size_t name_size = strlen(name); struct SymbolTable *st = OpenSymbolTable(path); - if (!st) Die(path, "could not load elf symbol table"); + if (!st) + Die(path, "could not load elf symbol table"); size_t data_size; void *data = Deflate(st, st->size, &data_size); uint32_t crc = crc32_z(0, st, st->size); @@ -1086,9 +1095,12 @@ static void OpenLoader(struct Loader *ldr) { static int PhdrFlagsToProt(Elf64_Word flags) { int prot = PROT_NONE; - if (flags & PF_R) prot |= PROT_READ; - if (flags & PF_W) prot |= PROT_WRITE; - if (flags & PF_X) prot |= PROT_EXEC; + if (flags & PF_R) + prot |= PROT_READ; + if (flags & PF_W) + prot |= PROT_WRITE; + if (flags & PF_X) + prot |= PROT_EXEC; return prot; } @@ -1101,8 +1113,10 @@ static char *EncodeWordAsPrintf(char *p, uint64_t w, int bytes) { *p++ = c; } else { *p++ = '\\'; - if ((c & 0700)) *p++ = '0' + ((c & 0700) >> 6); - if ((c & 0770)) *p++ = '0' + ((c & 070) >> 3); + if ((c & 0700)) + *p++ = '0' + ((c & 0700) >> 6); + if ((c & 0770)) + *p++ = '0' + ((c & 070) >> 3); *p++ = '0' + (c & 7); } } @@ -1203,7 +1217,8 @@ static char *GenerateElf(char *p, struct Input *in) { static bool IsPhdrAllocated(struct Input *in, Elf64_Phdr *phdr) { int i; Elf64_Shdr *shdr; - if (1) return true; + if (1) + return true; for (i = 0; i < in->elf->e_shnum; ++i) { if (!(shdr = GetElfSectionHeaderAddress(in->elf, in->size, i))) { Die(in->path, "elf section header overflow"); @@ -1226,7 +1241,8 @@ static struct Elf64_Sym *GetElfSymbol(struct Input *in, const char *name) { ss = GetElfStringTable(in->elf, in->size, ".strtab"); sh = GetElfSymbolTable(in->elf, in->size, SHT_SYMTAB, &n); st = GetElfSectionAddress(in->elf, in->size, sh); - if (!st || !ss) Die(in->path, "missing elf symbol table"); + if (!st || !ss) + Die(in->path, "missing elf symbol table"); for (i = sh->sh_info; i < n; ++i) { if (st[i].st_name && !strcmp(ss + st[i].st_name, name)) { return st + i; @@ -1252,7 +1268,8 @@ static char *DefineMachoUuid(char *p) { ++macholoadcount; load->command = MAC_LC_UUID; load->size = sizeof(*load); - if (!hashes) Die(outpath, "won't generate macho uuid"); + if (!hashes) + Die(outpath, "won't generate macho uuid"); memcpy(load->uuid, hashpool, sizeof(load->uuid)); return p + sizeof(*load); } @@ -1411,7 +1428,8 @@ static char *SecondPass(char *p, struct Input *in) { FixupPrintf(in->printf_phoff, p - prologue); for (i = 0; i < in->elf->e_phnum; ++i) { phdr = GetElfProgramHeaderAddress(in->elf, in->size, i); - if (phdr->p_type == PT_LOAD && !IsPhdrAllocated(in, phdr)) continue; + if (phdr->p_type == PT_LOAD && !IsPhdrAllocated(in, phdr)) + continue; *(phdr2 = (Elf64_Phdr *)p) = *phdr; p += sizeof(Elf64_Phdr); if (phdr->p_filesz) { @@ -1580,14 +1598,19 @@ static Elf64_Off ThirdPass(Elf64_Off offset, struct Input *in) { static void OpenInput(const char *path) { int fd; struct Input *in; - if (inputs.n == ARRAYLEN(inputs.p)) Die(prog, "too many input files"); + if (inputs.n == ARRAYLEN(inputs.p)) + Die(prog, "too many input files"); in = inputs.p + inputs.n++; in->path = path; - if ((fd = open(path, O_RDONLY)) == -1) DieSys(path); - if ((in->size = lseek(fd, 0, SEEK_END)) == -1) DieSys(path); + if ((fd = open(path, O_RDONLY)) == -1) + DieSys(path); + if ((in->size = lseek(fd, 0, SEEK_END)) == -1) + DieSys(path); in->map = mmap(0, in->size, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0); - if (in->map == MAP_FAILED) DieSys(path); - if (!IsElf64Binary(in->elf, in->size)) Die(path, "not an elf64 binary"); + if (in->map == MAP_FAILED) + DieSys(path); + if (!IsElf64Binary(in->elf, in->size)) + Die(path, "not an elf64 binary"); HashInput(in->map, in->size); close(fd); } @@ -1820,7 +1843,8 @@ int main(int argc, char *argv[]) { #endif prog = argv[0]; - if (!prog) prog = "apelink"; + if (!prog) + prog = "apelink"; // process flags GetOpts(argc, argv); @@ -2042,7 +2066,8 @@ int main(int argc, char *argv[]) { // output native mach-o morph for (i = 0; i < inputs.n; ++i) { struct Input *in = inputs.p + i; - if (in->elf->e_machine != EM_NEXGEN32E) continue; + if (in->elf->e_machine != EM_NEXGEN32E) + continue; if (GetLoader(in->elf->e_machine, _HOSTXNU)) { p = stpcpy(p, "if [ x\"$1\" = x--assimilate ]; then\n"); } @@ -2197,7 +2222,8 @@ int main(int argc, char *argv[]) { size_t compressed_size; struct Loader *loader; loader = loaders.p + i; - if (!loader->used) continue; + if (!loader->used) + continue; compressed_data = Gzip(loader->map, loader->size, &compressed_size); if (loader->ddarg_skip1) { FixupWordAsDecimal(loader->ddarg_skip1, offset); diff --git a/tool/build/ar.c b/tool/build/ar.c index e89109b01..469d76582 100644 --- a/tool/build/ar.c +++ b/tool/build/ar.c @@ -102,7 +102,8 @@ static wontreturn void Die(const char *path, const char *reason) { static wontreturn void SysDie(const char *path, const char *func) { const char *errstr; - if (!(errstr = _strerdoc(errno))) errstr = "Unknown error"; + if (!(errstr = _strerdoc(errno))) + errstr = "Unknown error"; tinyprint(2, path, ": ", func, ": ", errstr, "\n", NULL); exit(1); } @@ -180,11 +181,14 @@ static void *reballoc(void *p, size_t n, size_t z) { size_t c; assert(n >= 0); assert(z >= 1 && !(z & (z - 1))); - if (ckd_mul(&n, n, z)) n = HEAP_SIZE; - if (!p) return balloc(~n, z); + if (ckd_mul(&n, n, z)) + n = HEAP_SIZE; + if (!p) + return balloc(~n, z); memcpy(&c, (char *)p - sizeof(c), sizeof(c)); assert(c >= z && c < HEAP_SIZE && !(c & (c - 1))); - if (n <= c) return p; + if (n <= c) + return p; return memcpy(balloc(~n, z), p, c); } @@ -264,7 +268,8 @@ static int64_t CopyFileOrDie(const char *inpath, int infd, // for (mode = CFR, toto = 0;; toto += exchanged) { if (mode == CFR) { got = copy_file_range(infd, 0, outfd, 0, 4194304, 0); - if (!got) break; + if (!got) + break; if (got != -1) { exchanged = got; } else if (errno == EXDEV || // different partitions @@ -278,11 +283,15 @@ static int64_t CopyFileOrDie(const char *inpath, int infd, // } } else { got = read(infd, buf, sizeof(buf)); - if (!got) break; - if (got == -1) SysDie(inpath, "read"); + if (!got) + break; + if (got == -1) + SysDie(inpath, "read"); wrote = write(outfd, buf, got); - if (wrote == -1) SysDie(outpath, "write"); - if (wrote != got) Die(outpath, "posix violated"); + if (wrote == -1) + SysDie(outpath, "write"); + if (wrote != got) + Die(outpath, "posix violated"); exchanged = wrote; } } @@ -326,7 +335,8 @@ int main(int argc, char *argv[]) { // on modern systems that it isn't worth supporting the byzantine // standard posix ar flags intended to improve cassette tape perf SortChars(flags, strlen(flags)); - if (*flags == 'D') ++flags; + if (*flags == 'D') + ++flags; if (!IsEqual(flags, "cr") && // !IsEqual(flags, "cru") && // !IsEqual(flags, "crsu") && // @@ -349,14 +359,22 @@ int main(int argc, char *argv[]) { for (objectid = 0;;) { struct stat st; const char *arg; - if (!(arg = getargs_next(&ga))) break; - if (endswith(arg, "/")) continue; - if (endswith(arg, ".pkg")) continue; - if (stat(arg, &st)) SysDie(arg, "stat"); - if (S_ISDIR(st.st_mode)) continue; - if (!st.st_size) Die(arg, "file is empty"); - if (st.st_size > 0x7ffff000) Die(arg, "file too large"); - if ((fd = open(arg, O_RDONLY)) == -1) SysDie(arg, "open"); + if (!(arg = getargs_next(&ga))) + break; + if (endswith(arg, "/")) + continue; + if (endswith(arg, ".pkg")) + continue; + if (stat(arg, &st)) + SysDie(arg, "stat"); + if (S_ISDIR(st.st_mode)) + continue; + if (!st.st_size) + Die(arg, "file is empty"); + if (st.st_size > 0x7ffff000) + Die(arg, "file too large"); + if ((fd = open(arg, O_RDONLY)) == -1) + SysDie(arg, "open"); AppendArg(&args, StrDup(arg)); AppendInt(&sizes, st.st_size); AppendInt(&modes, st.st_mode); @@ -374,25 +392,35 @@ int main(int argc, char *argv[]) { } size_t mapsize = st.st_size; void *elf = mmap(0, mapsize, PROT_READ, MAP_PRIVATE, fd, 0); - if (elf == MAP_FAILED) SysDie(arg, "mmap"); - if (!IsElf64Binary(elf, mapsize)) Die(arg, "not an elf64 binary"); + if (elf == MAP_FAILED) + SysDie(arg, "mmap"); + if (!IsElf64Binary(elf, mapsize)) + Die(arg, "not an elf64 binary"); char *strs = GetElfStringTable(elf, mapsize, ".strtab"); - if (!strs) Die(arg, "elf .strtab not found"); + if (!strs) + Die(arg, "elf .strtab not found"); Elf64_Xword symcount; Elf64_Shdr *symsec = GetElfSymbolTable(elf, mapsize, SHT_SYMTAB, &symcount); Elf64_Sym *syms = GetElfSectionAddress(elf, mapsize, symsec); - if (!syms) Die(arg, "elf symbol table not found"); + if (!syms) + Die(arg, "elf symbol table not found"); for (Elf64_Xword j = symsec->sh_info; j < symcount; ++j) { - if (!syms[j].st_name) continue; - if (syms[j].st_shndx == SHN_UNDEF) continue; - if (syms[j].st_shndx == SHN_COMMON) continue; + if (!syms[j].st_name) + continue; + if (syms[j].st_shndx == SHN_UNDEF) + continue; + if (syms[j].st_shndx == SHN_COMMON) + continue; const char *symname = GetElfString(elf, mapsize, strs, syms[j].st_name); - if (!symname) Die(arg, "elf symbol name corrupted"); + if (!symname) + Die(arg, "elf symbol name corrupted"); AppendBytes(&symbols, symname, strlen(symname) + 1); AppendInt(&symnames, objectid); } - if (munmap(elf, mapsize)) SysDie(arg, "munmap"); - if (close(fd)) SysDie(arg, "close"); + if (munmap(elf, mapsize)) + SysDie(arg, "munmap"); + if (close(fd)) + SysDie(arg, "close"); ++objectid; } getargs_destroy(&ga); diff --git a/tool/build/assimilate.c b/tool/build/assimilate.c index 3a4a63169..d294b8ec2 100644 --- a/tool/build/assimilate.c +++ b/tool/build/assimilate.c @@ -197,7 +197,8 @@ static void GetElfHeader(Elf64_Ehdr *ehdr, const char *image, size_t n) { const char *p, *e; for (p = image, e = p + MIN(n, 8192); p < e; ++p) { TryAgain: - if (READ64LE(p) != READ64LE("printf '")) continue; + if (READ64LE(p) != READ64LE("printf '")) + continue; for (i = 0, p += 8; p + 3 < e && (c = *p++) != '\'';) { if (c == '\\') { if ('0' <= *p && *p <= '7') { @@ -378,18 +379,24 @@ static ssize_t Pwrite(int fd, const void *data, size_t size, uint64_t offset) { static int GetMode(int fd) { struct stat st; - if (fstat(fd, &st)) DieSys(path); + if (fstat(fd, &st)) + DieSys(path); return st.st_mode & 0777; } static void CopyFile(int infd, const char *map, size_t size, // const void *hdr, size_t hdrsize) { int outfd; - if (!outpath) return; - if ((outfd = creat(outpath, GetMode(infd))) == -1) DieSys(outpath); - if (hdrsize && Write(outfd, hdr, hdrsize) == -1) DieSys(outpath); - if (Write(outfd, map + hdrsize, size - hdrsize) == -1) DieSys(outpath); - if (close(outfd)) DieSys(outpath); + if (!outpath) + return; + if ((outfd = creat(outpath, GetMode(infd))) == -1) + DieSys(outpath); + if (hdrsize && Write(outfd, hdr, hdrsize) == -1) + DieSys(outpath); + if (Write(outfd, map + hdrsize, size - hdrsize) == -1) + DieSys(outpath); + if (close(outfd)) + DieSys(outpath); } static void WriteOutput(int infd, const char *map, size_t size, // @@ -398,7 +405,8 @@ static void WriteOutput(int infd, const char *map, size_t size, // if (outpath) { CopyFile(infd, map, size, hdr, hdrsize); } else if (g_clobber) { - if (Pwrite(infd, hdr, hdrsize, 0) == -1) DieSys(path); + if (Pwrite(infd, hdr, hdrsize, 0) == -1) + DieSys(path); } else { omode = GetMode(infd); oflags = O_WRONLY | O_CREAT | (g_force ? O_TRUNC : O_EXCL); @@ -406,10 +414,14 @@ static void WriteOutput(int infd, const char *map, size_t size, // if (strlcat(bakpath, ".bak", sizeof(bakpath)) >= sizeof(bakpath)) { Die(path, "filename too long"); } - if ((outfd = open(bakpath, oflags, omode)) == -1) DieSys(bakpath); - if (Write(outfd, map, size) == -1) DieSys(bakpath); - if (close(outfd)) DieSys(bakpath); - if (Pwrite(infd, hdr, hdrsize, 0) == -1) DieSys(path); + if ((outfd = open(bakpath, oflags, omode)) == -1) + DieSys(bakpath); + if (Write(outfd, map, size) == -1) + DieSys(bakpath); + if (close(outfd)) + DieSys(bakpath); + if (Pwrite(infd, hdr, hdrsize, 0) == -1) + DieSys(path); } } @@ -438,11 +450,15 @@ static void Assimilate(void) { int oflags; ssize_t size; oflags = outpath ? O_RDONLY : O_RDWR; - if ((fd = open(path, oflags)) == -1) DieSys(path); - if ((size = lseek(fd, 0, SEEK_END)) == -1) DieSys(path); - if (size < 64) Die(path, "ape executables must be at least 64 bytes"); + if ((fd = open(path, oflags)) == -1) + DieSys(path); + if ((size = lseek(fd, 0, SEEK_END)) == -1) + DieSys(path); + if (size < 64) + Die(path, "ape executables must be at least 64 bytes"); p = mmap(0, size, PROT_READ, MAP_PRIVATE, fd, 0); - if (p == MAP_FAILED) DieSys(path); + if (p == MAP_FAILED) + DieSys(path); if (READ32LE(p) == READ32LE("\177ELF")) { Elf64_Ehdr *ehdr; @@ -604,8 +620,10 @@ static void Assimilate(void) { AssimilateMacho(fd, p, size); } - if (munmap(p, size)) DieSys(path); - if (close(fd)) DieSys(path); + if (munmap(p, size)) + DieSys(path); + if (close(fd)) + DieSys(path); } int main(int argc, char *argv[]) { diff --git a/tool/build/bigmul.c b/tool/build/bigmul.c index 36dd0a817..b731d9fc7 100644 --- a/tool/build/bigmul.c +++ b/tool/build/bigmul.c @@ -51,13 +51,15 @@ void Multiply%dx%d(uint64_t C[%d], const uint64_t A[%d], const uint64_t B[%d]) { Rs = gc(calloc(sizeof(*Rs), n + m + 1)); Ra = gc(calloc(sizeof(*Ra), n + m + 1)); for (j = 0; j < n; ++j) { - if (j) printf(", "); + if (j) + printf(", "); printf("H%d", j); } printf(";\n"); printf(" uint64_t "); for (j = 0; j < n + m; ++j) { - if (j) printf(", "); + if (j) + printf(", "); printf("R%d", j); } printf(";\n"); diff --git a/tool/build/chmod.c b/tool/build/chmod.c index 3786478a9..9014ee674 100644 --- a/tool/build/chmod.c +++ b/tool/build/chmod.c @@ -60,7 +60,8 @@ int main(int argc, char *argv[]) { int i, mode; char *endptr; prog = argv[0]; - if (!prog) prog = "chmod"; + if (!prog) + prog = "chmod"; GetOpts(argc, argv); if (argc - optind < 2) { tinyprint(2, prog, ": missing operand\n", NULL); diff --git a/tool/build/compile.c b/tool/build/compile.c index 6beb51581..6707351d3 100644 --- a/tool/build/compile.c +++ b/tool/build/compile.c @@ -364,8 +364,10 @@ char *Slurp(const char *path) { bool HasFlag(const char *flags, const char *s) { char buf[256]; size_t n = strlen(s); - if (!flags) return false; - if (n + 2 > sizeof(buf)) return false; + if (!flags) + return false; + if (n + 2 > sizeof(buf)) + return false; memcpy(buf, s, n); buf[n] = '\n'; buf[n + 1] = 0; @@ -375,18 +377,29 @@ bool HasFlag(const char *flags, const char *s) { bool IsGccOnlyFlag(const char *s) { if (s[0] == '-') { if (s[1] == 'f') { - if (startswith(s, "-ffixed-")) return true; - if (startswith(s, "-fcall-saved")) return true; - if (startswith(s, "-fcall-used")) return true; - if (startswith(s, "-fgcse-")) return true; - if (startswith(s, "-fvect-cost-model=")) return true; - if (startswith(s, "-fsimd-cost-model=")) return true; - if (startswith(s, "-fopt-info")) return true; + if (startswith(s, "-ffixed-")) + return true; + if (startswith(s, "-fcall-saved")) + return true; + if (startswith(s, "-fcall-used")) + return true; + if (startswith(s, "-fgcse-")) + return true; + if (startswith(s, "-fvect-cost-model=")) + return true; + if (startswith(s, "-fsimd-cost-model=")) + return true; + if (startswith(s, "-fopt-info")) + return true; } - if (startswith(s, "-mstringop-strategy=")) return true; - if (startswith(s, "-mpreferred-stack-boundary=")) return true; - if (startswith(s, "-Wframe-larger-than=")) return true; - if (startswith(s, "-Walloca-larger-than=")) return true; + if (startswith(s, "-mstringop-strategy=")) + return true; + if (startswith(s, "-mpreferred-stack-boundary=")) + return true; + if (startswith(s, "-Wframe-larger-than=")) + return true; + if (startswith(s, "-Walloca-larger-than=")) + return true; } static bool once; static char *gcc_only_flags; @@ -409,10 +422,14 @@ bool IsClangOnlyFlag(const char *s) { bool FileExistsAndIsNewerThan(const char *filepath, const char *thanpath) { struct stat st1, st2; - if (stat(filepath, &st1) == -1) return false; - if (stat(thanpath, &st2) == -1) return false; - if (st1.st_mtim.tv_sec < st2.st_mtim.tv_sec) return false; - if (st1.st_mtim.tv_sec > st2.st_mtim.tv_sec) return true; + if (stat(filepath, &st1) == -1) + return false; + if (stat(thanpath, &st2) == -1) + return false; + if (st1.st_mtim.tv_sec < st2.st_mtim.tv_sec) + return false; + if (st1.st_mtim.tv_sec > st2.st_mtim.tv_sec) + return true; return st1.st_mtim.tv_nsec >= st2.st_mtim.tv_nsec; } @@ -499,44 +516,55 @@ static int GetBaseCpuFreqMhz(void) { void PlanResource(int resource, struct rlimit rlim) { struct rlimit prior; - if (getrlimit(resource, &prior)) return; + if (getrlimit(resource, &prior)) + return; rlim.rlim_cur = MIN(rlim.rlim_cur, prior.rlim_max); rlim.rlim_max = MIN(rlim.rlim_max, prior.rlim_max); posix_spawnattr_setrlimit(&spawnattr, resource, &rlim); } void SetCpuLimit(int secs) { - if (secs <= 0) return; - if (IsWindows()) return; + if (secs <= 0) + return; + if (IsWindows()) + return; #ifdef __x86_64__ int mhz, lim; - if (!(mhz = GetBaseCpuFreqMhz())) return; + if (!(mhz = GetBaseCpuFreqMhz())) + return; lim = ceil(3100. / mhz * secs); PlanResource(RLIMIT_CPU, (struct rlimit){lim, lim + 1}); #endif } void SetFszLimit(long n) { - if (n <= 0) return; - if (IsWindows()) return; + if (n <= 0) + return; + if (IsWindows()) + return; PlanResource(RLIMIT_FSIZE, (struct rlimit){n, n + (n >> 1)}); } void SetMemLimit(long n) { - if (n <= 0) return; - if (IsWindows() || IsXnu()) return; + if (n <= 0) + return; + if (IsWindows() || IsXnu()) + return; PlanResource(RLIMIT_AS, (struct rlimit){n, n}); } void SetStkLimit(long n) { - if (IsWindows()) return; - if (n <= 0) return; + if (IsWindows()) + return; + if (n <= 0) + return; n = MAX(n, PTHREAD_STACK_MIN * 2); PlanResource(RLIMIT_STACK, (struct rlimit){n, n}); } void SetProLimit(long n) { - if (n <= 0) return; + if (n <= 0) + return; PlanResource(RLIMIT_NPROC, (struct rlimit){n, n}); } @@ -586,7 +614,8 @@ char *AddShellQuotes(const char *s) { } p[j++] = '\''; p[j] = 0; - if ((q = realloc(p, j + 1))) p = q; + if ((q = realloc(p, j + 1))) + p = q; return p; } @@ -659,7 +688,8 @@ int Launch(void) { break; } if ((rc = read(pipefds[0], buf, sizeof(buf))) != -1) { - if (!(got = rc)) break; + if (!(got = rc)) + break; appendd(&output, buf, got); if (outquota > 0 && appendz(output).i > outquota) { kill(pid, SIGXFSZ); @@ -789,7 +819,8 @@ char *MakeTmpOut(const char *path) { g_tmpout_original = path; p = stpcpy(p, __get_tmpdir()); while ((c = *path++)) { - if (c == '/') c = '_'; + if (c == '/') + c = '_'; if (p == e) { tinyprint(2, program_invocation_short_name, ": fatal error: MakeTmpOut() generated temporary filename " @@ -826,7 +857,8 @@ int main(int argc, char *argv[]) { stkquota = 8 * 1024 * 1024; // bytes fszquota = 256 * 1000 * 1000; // bytes memquota = 2048L * 1024 * 1024; // bytes - if ((s = getenv("V"))) verbose = atoi(s); + if ((s = getenv("V"))) + verbose = atoi(s); while ((opt = getopt(argc, argv, "hnstvwA:C:F:L:M:O:P:T:V:S:")) != -1) { switch (opt) { case 'n': @@ -897,7 +929,8 @@ int main(int argc, char *argv[]) { cmd = argv[optind]; if (!strchr(cmd, '/')) { - if (!(cmd = commandv(cmd, ccpath, sizeof(ccpath)))) exit(127); + if (!(cmd = commandv(cmd, ccpath, sizeof(ccpath)))) + exit(127); } s = basename(strdup(cmd)); @@ -1020,13 +1053,20 @@ int main(int argc, char *argv[]) { #ifdef __x86_64__ } else if (!strcmp(argv[i], "-march=native")) { const struct X86ProcessorModel *model; - if (X86_HAVE(XOP)) AddArg("-mxop"); - if (X86_HAVE(SSE4A)) AddArg("-msse4a"); - if (X86_HAVE(SSE3)) AddArg("-msse3"); - if (X86_HAVE(SSSE3)) AddArg("-mssse3"); - if (X86_HAVE(SSE4_1)) AddArg("-msse4.1"); - if (X86_HAVE(SSE4_2)) AddArg("-msse4.2"); - if (X86_HAVE(AVX)) AddArg("-mavx"); + if (X86_HAVE(XOP)) + AddArg("-mxop"); + if (X86_HAVE(SSE4A)) + AddArg("-msse4a"); + if (X86_HAVE(SSE3)) + AddArg("-msse3"); + if (X86_HAVE(SSSE3)) + AddArg("-mssse3"); + if (X86_HAVE(SSE4_1)) + AddArg("-msse4.1"); + if (X86_HAVE(SSE4_2)) + AddArg("-msse4.2"); + if (X86_HAVE(AVX)) + AddArg("-mavx"); if (X86_HAVE(AVX2)) { AddArg("-mavx2"); if (isgcc) { @@ -1034,27 +1074,48 @@ int main(int argc, char *argv[]) { AddArg("-Wa,-msse2avx"); } } - if (X86_HAVE(AVX512F)) AddArg("-mavx512f"); - if (X86_HAVE(AVX512PF)) AddArg("-mavx512pf"); - if (X86_HAVE(AVX512ER)) AddArg("-mavx512er"); - if (X86_HAVE(AVX512CD)) AddArg("-mavx512cd"); - if (X86_HAVE(AVX512VL)) AddArg("-mavx512vl"); - if (X86_HAVE(AVX512BW)) AddArg("-mavx512bw"); - if (X86_HAVE(AVX512DQ)) AddArg("-mavx512dq"); - if (X86_HAVE(AVX512IFMA)) AddArg("-mavx512ifma"); - if (X86_HAVE(AVX512VBMI)) AddArg("-mavx512vbmi"); - if (X86_HAVE(SHA)) AddArg("-msha"); - if (X86_HAVE(AES)) AddArg("-maes"); - if (X86_HAVE(VAES)) AddArg("-mvaes"); - if (X86_HAVE(PCLMUL)) AddArg("-mpclmul"); - if (X86_HAVE(FSGSBASE)) AddArg("-mfsgsbase"); - if (X86_HAVE(F16C)) AddArg("-mf16c"); - if (X86_HAVE(FMA)) AddArg("-mfma"); - if (X86_HAVE(POPCNT)) AddArg("-mpopcnt"); - if (X86_HAVE(BMI)) AddArg("-mbmi"); - if (X86_HAVE(BMI2)) AddArg("-mbmi2"); - if (X86_HAVE(ADX)) AddArg("-madx"); - if (X86_HAVE(FXSR)) AddArg("-mfxsr"); + if (X86_HAVE(AVX512F)) + AddArg("-mavx512f"); + if (X86_HAVE(AVX512PF)) + AddArg("-mavx512pf"); + if (X86_HAVE(AVX512ER)) + AddArg("-mavx512er"); + if (X86_HAVE(AVX512CD)) + AddArg("-mavx512cd"); + if (X86_HAVE(AVX512VL)) + AddArg("-mavx512vl"); + if (X86_HAVE(AVX512BW)) + AddArg("-mavx512bw"); + if (X86_HAVE(AVX512DQ)) + AddArg("-mavx512dq"); + if (X86_HAVE(AVX512IFMA)) + AddArg("-mavx512ifma"); + if (X86_HAVE(AVX512VBMI)) + AddArg("-mavx512vbmi"); + if (X86_HAVE(SHA)) + AddArg("-msha"); + if (X86_HAVE(AES)) + AddArg("-maes"); + if (X86_HAVE(VAES)) + AddArg("-mvaes"); + if (X86_HAVE(PCLMUL)) + AddArg("-mpclmul"); + if (X86_HAVE(FSGSBASE)) + AddArg("-mfsgsbase"); + if (X86_HAVE(F16C)) + AddArg("-mf16c"); + if (X86_HAVE(FMA)) + AddArg("-mfma"); + if (X86_HAVE(POPCNT)) + AddArg("-mpopcnt"); + if (X86_HAVE(BMI)) + AddArg("-mbmi"); + if (X86_HAVE(BMI2)) + AddArg("-mbmi2"); + if (X86_HAVE(ADX)) + AddArg("-madx"); + if (X86_HAVE(FXSR)) + AddArg("-mfxsr"); if ((model = getx86processormodel(kX86ProcessorModelKey))) { switch (model->march) { case X86_MARCH_CORE2: @@ -1123,9 +1184,11 @@ int main(int argc, char *argv[]) { #endif /* __x86_64__ */ } else if (!strcmp(argv[i], "-fsanitize=address")) { - if (isgcc && ccversion >= 6) wantasan = true; + if (isgcc && ccversion >= 6) + wantasan = true; } else if (!strcmp(argv[i], "-fsanitize=undefined")) { - if (isgcc && ccversion >= 6) wantubsan = true; + if (isgcc && ccversion >= 6) + wantubsan = true; } else if (!strcmp(argv[i], "-fno-sanitize=address")) { wantasan = false; } else if (!strcmp(argv[i], "-fno-sanitize=undefined")) { @@ -1134,14 +1197,18 @@ int main(int argc, char *argv[]) { wantasan = false; wantubsan = false; } else if (!strcmp(argv[i], "-fno-sanitize=null")) { - if (isgcc && ccversion >= 6) no_sanitize_null = true; + if (isgcc && ccversion >= 6) + no_sanitize_null = true; } else if (!strcmp(argv[i], "-fno-sanitize=alignment")) { - if (isgcc && ccversion >= 6) no_sanitize_alignment = true; + if (isgcc && ccversion >= 6) + no_sanitize_alignment = true; } else if (!strcmp(argv[i], "-fno-sanitize=pointer-overflow")) { - if (isgcc && ccversion >= 6) no_sanitize_pointer_overflow = true; + if (isgcc && ccversion >= 6) + no_sanitize_pointer_overflow = true; } else if (startswith(argv[i], "-fsanitize=implicit") && strstr(argv[i], "integer")) { - if (isgcc) AddArg(argv[i]); + if (isgcc) + AddArg(argv[i]); } else if (strstr(argv[i], "stack-protector")) { if (isclang || (isgcc && ccversion >= 6)) { AddArg(argv[i]); @@ -1158,7 +1225,8 @@ int main(int argc, char *argv[]) { colorflag = argv[i]; } else if (startswith(argv[i], "-R") || !strcmp(argv[i], "-fsave-optimization-record")) { - if (isclang) AddArg(argv[i]); + if (isclang) + AddArg(argv[i]); } else if (isclang && startswith(argv[i], "--debug-prefix-map")) { /* llvm doesn't provide a gas interface so simulate w/ clang */ AddArg(xstrcat("-f", argv[i] + 2)); @@ -1381,11 +1449,14 @@ int main(int argc, char *argv[]) { if (verbose < 1) { /* make silent mode, i.e. `V=0 make o//target` */ appendr(&command, 0); - if (!action) action = "BUILD"; - if (!outpath) outpath = shortened; + if (!action) + action = "BUILD"; + if (!outpath) + outpath = shortened; n = strlen(action); appends(&command, action); - do appendw(&command, ' '), ++n; + do + appendw(&command, ' '), ++n; while (n < 15); appends(&command, outpath); n += strlen(outpath); @@ -1395,7 +1466,8 @@ int main(int argc, char *argv[]) { appendw(&output, READ32LE("...")); } else { if (n < m && (__nocolor || !ischardev(2))) { - while (n < m) appendw(&command, ' '), ++n; + while (n < m) + appendw(&command, ' '), ++n; } appendd(&output, command, n); } @@ -1411,7 +1483,8 @@ int main(int argc, char *argv[]) { j += (j - 1) / 3; j += 1 + 3; j += 1 + 3; - while (i < j) appendw(&output, ' '), ++i; + while (i < j) + appendw(&output, ' '), ++i; if (us > timeout * 1000000ull / 2) { if (us > timeout * 1000000ull) { PrintRed(); @@ -1436,7 +1509,8 @@ int main(int argc, char *argv[]) { j += (j - 1) / 3; j += 1 + 3; j += 1 + 3; - while (i < j) appendw(&output, ' '), ++i; + while (i < j) + appendw(&output, ' '), ++i; if ((isproblematic = us > cpuquota * 1000000ull / 2)) { if (us > cpuquota * 1000000ull - (cpuquota * 1000000ull) / 5) { PrintRed(); @@ -1455,7 +1529,8 @@ int main(int argc, char *argv[]) { i = FormatUint64Thousands(buf, usage.ru_maxrss) - buf; j = ceil(log10(memquota / 1024)); j += (j - 1) / 3; - while (i < j) appendw(&output, ' '), ++i; + while (i < j) + appendw(&output, ' '), ++i; if ((isproblematic = usage.ru_maxrss * 1024 > memquota / 2)) { if (usage.ru_maxrss * 1024 > memquota - memquota / 5) { PrintRed(); @@ -1473,7 +1548,8 @@ int main(int argc, char *argv[]) { if (fszquota > 0) { us = usage.ru_inblock + usage.ru_oublock; i = FormatUint64Thousands(buf, us) - buf; - while (i < 7) appendw(&output, ' '), ++i; + while (i < 7) + appendw(&output, ' '), ++i; appends(&output, buf); appendw(&output, READ32LE("iop ")); n += i + 4; @@ -1516,7 +1592,8 @@ int main(int argc, char *argv[]) { if (errno == EINTR) { s = "notice: compile output truncated\n"; } else { - if (!exitcode) exitcode = 55; + if (!exitcode) + exitcode = 55; s = "error: compile failed to write result\n"; } write(2, s, strlen(s)); diff --git a/tool/build/cp.c b/tool/build/cp.c index 8915b8ee7..5aed44442 100644 --- a/tool/build/cp.c +++ b/tool/build/cp.c @@ -182,8 +182,10 @@ bool MovePreservingDestinationInode(const char *from, const char *to) { void Cp(char *src, char *dst) { ssize_t rc; const char *s; - if (strlen(src) + 1 > PATH_MAX) _Exit(2); - if (strlen(dst) + 1 > PATH_MAX) _Exit(2); + if (strlen(src) + 1 > PATH_MAX) + _Exit(2); + if (strlen(dst) + 1 > PATH_MAX) + _Exit(2); basename(src); basename(dst); if (IsDirectory(src)) { @@ -243,7 +245,8 @@ int main(int argc, char *argv[]) { int i; prog = argv[0]; - if (!prog) prog = "cp"; + if (!prog) + prog = "cp"; GetOpts(argc, argv); diff --git a/tool/build/dd.c b/tool/build/dd.c index 571680f86..77c7d6e26 100644 --- a/tool/build/dd.c +++ b/tool/build/dd.c @@ -48,7 +48,8 @@ int main(int argc, char *argv[]) { const char *oufile = "/dev/stdout"; prog = argv[0]; - if (!prog) prog = "dd"; + if (!prog) + prog = "dd"; for (i = 1; i < argc; ++i) { @@ -65,14 +66,16 @@ int main(int argc, char *argv[]) { argv[i][2] == '=') { infile = argv[i] + 3 + (argv[i][3] == '"'); p = strchr(infile, '"'); - if (p) *p = 0; + if (p) + *p = 0; } else if (argv[i][0] == 'o' && // argv[i][1] == 'f' && // argv[i][2] == '=') { oufile = argv[i] + 3 + (argv[i][3] == '"'); p = strchr(infile, '"'); - if (p) *p = 0; + if (p) + *p = 0; } else if (argv[i][0] == 's' && // argv[i][1] == 'k' && // diff --git a/tool/build/echo.c b/tool/build/echo.c index 7d652893d..d3adc0ee1 100644 --- a/tool/build/echo.c +++ b/tool/build/echo.c @@ -36,7 +36,8 @@ int main(int argc, char *argv[]) { } for (j = 0; i + j < argc; ++j) { - if (j) fputc(' ', stream); + if (j) + fputc(' ', stream); fputs(argv[i + j], stream); } if (wantnewline) { diff --git a/tool/build/elf2pe.c b/tool/build/elf2pe.c index 6e65bda36..bebbde1d1 100644 --- a/tool/build/elf2pe.c +++ b/tool/build/elf2pe.c @@ -179,12 +179,14 @@ static wontreturn void DieOom(void) { static void *Calloc(size_t n) { void *p; - if (!(p = calloc(1, n))) DieOom(); + if (!(p = calloc(1, n))) + DieOom(); return p; } static void *Realloc(void *p, size_t n) { - if (!(p = realloc(p, n))) DieOom(); + if (!(p = realloc(p, n))) + DieOom(); return p; } @@ -629,10 +631,12 @@ static bool ParseDllImportSymbol(const char *symbol_name, size_t n; char *dll_name; const char *dolla; - if (!startswith(symbol_name, "dll$")) return false; + if (!startswith(symbol_name, "dll$")) + return false; symbol_name += 4; dolla = strchr(symbol_name, '$'); - if (!dolla) return false; + if (!dolla) + return false; n = dolla - symbol_name; dll_name = memcpy(Calloc(n + 1), symbol_name, n); *out_dll_name = dll_name; @@ -682,19 +686,26 @@ static struct Elf *OpenElf(const char *path) { struct Elf *elf; elf = Calloc(sizeof(*elf)); elf->path = path; - if ((fd = open(path, O_RDONLY)) == -1) DieSys(path); - if ((elf->size = lseek(fd, 0, SEEK_END)) == -1) DieSys(path); + if ((fd = open(path, O_RDONLY)) == -1) + DieSys(path); + if ((elf->size = lseek(fd, 0, SEEK_END)) == -1) + DieSys(path); elf->map = mmap(0, elf->size, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0); - if (elf->map == MAP_FAILED) DieSys(path); - if (!IsElf64Binary(elf->ehdr, elf->size)) Die(path, "not an elf64 binary"); + if (elf->map == MAP_FAILED) + DieSys(path); + if (!IsElf64Binary(elf->ehdr, elf->size)) + Die(path, "not an elf64 binary"); elf->symhdr = GetElfSymbolTable(elf->ehdr, elf->size, SHT_SYMTAB, &elf->symcount); elf->symtab = GetElfSectionAddress(elf->ehdr, elf->size, elf->symhdr); - if (!elf->symtab) Die(path, "elf doesn't have symbol table"); + if (!elf->symtab) + Die(path, "elf doesn't have symbol table"); elf->strtab = GetElfStringTable(elf->ehdr, elf->size, ".strtab"); - if (!elf->strtab) Die(path, "elf doesn't have string table"); + if (!elf->strtab) + Die(path, "elf doesn't have string table"); elf->secstrs = GetElfSectionNameStringTable(elf->ehdr, elf->size); - if (!elf->strtab) Die(path, "elf doesn't have section string table"); + if (!elf->strtab) + Die(path, "elf doesn't have section string table"); LoadDllImports(elf); LoadSectionsIntoSegments(elf); close(fd); @@ -810,14 +821,18 @@ static struct ImagePointer GeneratePe(struct Elf *elf, char *fp, int64_t vp) { // embed the ms-dos stub and/or bios bootloader if (stubpath) { int fd = open(stubpath, O_RDONLY); - if (fd == -1) DieSys(stubpath); + if (fd == -1) + DieSys(stubpath); for (;;) { ssize_t got = read(fd, fp, 512); - if (got == -1) DieSys(stubpath); - if (!got) break; + if (got == -1) + DieSys(stubpath); + if (!got) + break; fp += got; } - if (close(fd)) DieSys(stubpath); + if (close(fd)) + DieSys(stubpath); } // output portable executable magic @@ -1083,15 +1098,18 @@ int main(int argc, char *argv[]) { #endif // get program name prog = argv[0]; - if (!prog) prog = "elf2pe"; + if (!prog) + prog = "elf2pe"; // process flags GetOpts(argc, argv); // translate executable struct Elf *elf = OpenElf(argv[optind]); char *buf = memalign(MAX_ALIGN, 134217728); struct ImagePointer ip = GeneratePe(elf, buf, 0x00400000); - if (creat(outpath, 0755) == -1) DieSys(elf->path); + if (creat(outpath, 0755) == -1) + DieSys(elf->path); Pwrite(3, buf, ip.fp - buf, 0); - if (close(3)) DieSys(elf->path); + if (close(3)) + DieSys(elf->path); // PrintElf(elf); } diff --git a/tool/build/fastdiff.c b/tool/build/fastdiff.c index 787fcd844..1cbea5757 100644 --- a/tool/build/fastdiff.c +++ b/tool/build/fastdiff.c @@ -53,8 +53,10 @@ int main(int argc, char *argv[]) { if (!l1 && !l2) { exit(0); } - if (l1) chomp(l1); - if (l2) chomp(l2); + if (l1) + chomp(l1); + if (l2) + chomp(l2); if (!l1 || !l2) { printf("> %s\n", l1 ? l1 : "EOF"); printf("< %s\n", l2 ? l2 : "EOF"); diff --git a/tool/build/fixupobj.c b/tool/build/fixupobj.c index fbe9fbc95..807ec0133 100644 --- a/tool/build/fixupobj.c +++ b/tool/build/fixupobj.c @@ -78,18 +78,21 @@ static wontreturn void DieOom(void) { static void *Malloc(size_t n) { void *p; - if (!(p = malloc(n))) DieOom(); + if (!(p = malloc(n))) + DieOom(); return p; } static void *Realloc(void *p, size_t n) { - if (!(p = realloc(p, n))) DieOom(); + if (!(p = realloc(p, n))) + DieOom(); return p; } static wontreturn void SysExit(const char *func) { const char *errstr; - if (!(errstr = _strerdoc(errno))) errstr = "EUNKNOWN"; + if (!(errstr = _strerdoc(errno))) + errstr = "EUNKNOWN"; tinyprint(2, epath, ": ", func, " failed with ", errstr, "\n", NULL); exit(1); } @@ -201,11 +204,15 @@ static const unsigned char kNops[10][10] = { static unsigned char *CoalesceNops(unsigned char *p, const unsigned char *e) { long n; for (; p + 1 < e; p += n) { - if (p[0] != 0x90) break; - if (p[1] != 0x90) break; + if (p[0] != 0x90) + break; + if (p[1] != 0x90) + break; for (n = 2; p + n < e; ++n) { - if (p[n] != 0x90) break; - if (n == ARRAYLEN(kNops) - 1) break; + if (p[n] != 0x90) + break; + if (n == ARRAYLEN(kNops) - 1) + break; } memcpy(p, kNops[n], n); } @@ -218,16 +225,23 @@ static void CheckPrivilegedCrossReferences(void) { const Elf64_Shdr *shdr; const Elf64_Rela *rela, *erela; shdr = FindElfSectionByName(elf, esize, secstrs, ".rela.privileged"); - if (!shdr || !(rela = GetElfSectionAddress(elf, esize, shdr))) return; + if (!shdr || !(rela = GetElfSectionAddress(elf, esize, shdr))) + return; erela = rela + shdr->sh_size / sizeof(*rela); for (; rela < erela; ++rela) { - if (!ELF64_R_TYPE(rela->r_info)) continue; - if (!(x = ELF64_R_SYM(rela->r_info))) continue; - if (x >= symcount) continue; - if (syms[x].st_shndx == SHN_ABS) continue; - if (!syms[x].st_shndx) continue; + if (!ELF64_R_TYPE(rela->r_info)) + continue; + if (!(x = ELF64_R_SYM(rela->r_info))) + continue; + if (x >= symcount) + continue; + if (syms[x].st_shndx == SHN_ABS) + continue; + if (!syms[x].st_shndx) + continue; if ((shdr = GetElfSectionHeaderAddress(elf, esize, syms[x].st_shndx))) { - if (~shdr->sh_flags & SHF_EXECINSTR) continue; // data reference + if (~shdr->sh_flags & SHF_EXECINSTR) + continue; // data reference if ((secname = GetElfString(elf, esize, secstrs, shdr->sh_name)) && strcmp(".privileged", secname)) { tinyprint(2, epath, @@ -334,12 +348,15 @@ static void OptimizePatchableFunctionEntries(void) { Elf64_Addr sym_rva; if (elf->e_machine == EM_NEXGEN32E) { for (i = 0; i < symcount; ++i) { - if (!syms[i].st_size) continue; - if (ELF64_ST_TYPE(syms[i].st_info) != STT_FUNC) continue; + if (!syms[i].st_size) + continue; + if (ELF64_ST_TYPE(syms[i].st_info) != STT_FUNC) + continue; if (!(shdr = GetElfSectionHeaderAddress(elf, esize, syms[i].st_shndx))) { Die("elf header overflow #3"); } - if (shdr->sh_type != SHT_PROGBITS) continue; + if (shdr->sh_type != SHT_PROGBITS) + continue; if (!(p = GetElfSectionAddress(elf, esize, shdr))) { Die("elf section overflow"); } @@ -371,7 +388,8 @@ static void RelinkZipFiles(void) { // scan backwards for zip eocd todo record // that was created by libc/nexgen32e/zip.S for (;;) { - if (eocd < stop) return; + if (eocd < stop) + return; if (READ32LE(eocd) == kZipCdirHdrMagicTodo && // ZIP_CDIR_SIZE(eocd) && // !ZIP_CDIR_OFFSET(eocd) && // @@ -446,13 +464,17 @@ static void GenerateIfuncInit(void) { static char code[16384]; static Elf64_Rela relas[1024]; Elf64_Shdr *symtab_shdr = GetElfSymbolTable(elf, esize, SHT_SYMTAB, 0); - if (!symtab_shdr) Die("symbol table section header not found"); + if (!symtab_shdr) + Die("symbol table section header not found"); Elf64_Word symtab_shdr_index = ((char *)symtab_shdr - ((char *)elf + elf->e_shoff)) / elf->e_shentsize; for (Elf64_Xword i = 0; i < symcount; ++i) { - if (syms[i].st_shndx == SHN_UNDEF) continue; - if (syms[i].st_shndx >= SHN_LORESERVE) continue; - if (ELF64_ST_TYPE(syms[i].st_info) != STT_GNU_IFUNC) continue; + if (syms[i].st_shndx == SHN_UNDEF) + continue; + if (syms[i].st_shndx >= SHN_LORESERVE) + continue; + if (ELF64_ST_TYPE(syms[i].st_info) != STT_GNU_IFUNC) + continue; if (!(name = GetElfString(elf, esize, symstrs, syms[i].st_name))) Die("could not get symbol name of ifunc"); static char resolver_name[65536]; @@ -463,11 +485,16 @@ static void GenerateIfuncInit(void) { Elf64_Xword function_sym_index = i; Elf64_Xword resolver_sym_index = -1; for (Elf64_Xword i = 0; i < symcount; ++i) { - if (syms[i].st_shndx == SHN_UNDEF) continue; - if (syms[i].st_shndx >= SHN_LORESERVE) continue; - if (ELF64_ST_TYPE(syms[i].st_info) != STT_FUNC) continue; - if (!(s = GetElfString(elf, esize, symstrs, syms[i].st_name))) continue; - if (strcmp(s, resolver_name)) continue; + if (syms[i].st_shndx == SHN_UNDEF) + continue; + if (syms[i].st_shndx >= SHN_LORESERVE) + continue; + if (ELF64_ST_TYPE(syms[i].st_info) != STT_FUNC) + continue; + if (!(s = GetElfString(elf, esize, symstrs, syms[i].st_name))) + continue; + if (strcmp(s, resolver_name)) + continue; resolver_sym_index = i; break; } @@ -521,15 +548,18 @@ static void GenerateIfuncInit(void) { 0x5e, // pop %rsi 0x5f, // pop %rdi }; - if (code_i + sizeof(chunk3) > sizeof(code)) Die("too many ifuncs"); + if (code_i + sizeof(chunk3) > sizeof(code)) + Die("too many ifuncs"); memcpy(code + code_i, chunk3, sizeof(chunk3)); code_i += sizeof(chunk3); } - if (!code_i) return; + if (!code_i) + return; // prepare to mutate elf // remap file so it has more space - if (elf->e_shnum + 2 > 65535) Die("too many sections"); + if (elf->e_shnum + 2 > 65535) + Die("too many sections"); size_t reserve_size = esize + 32 * 1024 * 1024; elf = Realloc(elf, reserve_size); diff --git a/tool/build/gzip.c b/tool/build/gzip.c index 2bc83e18b..9ebbfa5c1 100644 --- a/tool/build/gzip.c +++ b/tool/build/gzip.c @@ -157,15 +157,19 @@ void Compress(const char *inpath) { p = openflags; *p++ = opt_append ? 'a' : 'w'; *p++ = 'b'; - if (opt_exclusive) *p++ = 'x'; - if (opt_level) *p++ = opt_level; - if (opt_strategy) *p++ = opt_strategy; + if (opt_exclusive) + *p++ = 'x'; + if (opt_level) + *p++ = opt_level; + if (opt_strategy) + *p++ = opt_strategy; *p = 0; if (opt_usestdout) { outpath = "/dev/stdout"; output = gzdopen(1, openflags); } else { - if (strlen(inpath) + 3 + 1 > PATH_MAX) _Exit(2); + if (strlen(inpath) + 3 + 1 > PATH_MAX) + _Exit(2); stpcpy(stpcpy(pathbuf, inpath), ".gz"); outpath = pathbuf; output = gzopen(outpath, openflags); @@ -237,7 +241,8 @@ void Decompress(const char *inpath) { outpath = "/dev/stdout"; } else if (endswith(inpath, ".gz")) { n = strlen(inpath); - if (n - 3 + 1 > PATH_MAX) _Exit(2); + if (n - 3 + 1 > PATH_MAX) + _Exit(2); memcpy(pathbuf, inpath, n - 3); pathbuf[n - 3] = 0; outpath = pathbuf; @@ -291,7 +296,8 @@ void Decompress(const char *inpath) { int main(int argc, char *argv[]) { int i; prog = argv[0]; - if (!prog) prog = "gzip"; + if (!prog) + prog = "gzip"; GetOpts(argc, argv); if (opt_decompress) { if (optind == argc) { diff --git a/tool/build/killall.c b/tool/build/killall.c index fc954121a..5d347c825 100644 --- a/tool/build/killall.c +++ b/tool/build/killall.c @@ -69,7 +69,8 @@ static wontreturn void OutOfMemory(void) { static void *Calloc(size_t n, size_t z) { void *p; - if (!(p = calloc(n, z))) OutOfMemory(); + if (!(p = calloc(n, z))) + OutOfMemory(); return p; } @@ -186,7 +187,8 @@ int main(int argc, char *argv[]) { int64_t hProcess; char16_t name[PATH_MAX]; for (subcount = i = 0; i < n; i++) { - if (!pids[i]) continue; + if (!pids[i]) + continue; if ((hProcess = MyOpenProcess(pids[i]))) { if (GetProcessName(hProcess, name)) { ConvertStringToLowercase16(name); diff --git a/tool/build/lib/asmdown.c b/tool/build/lib/asmdown.c index a97b0b5a8..17aee2445 100644 --- a/tool/build/lib/asmdown.c +++ b/tool/build/lib/asmdown.c @@ -33,9 +33,11 @@ static bool IsSymbolChar2(char c) { } static bool IsSymbolString(const char *s) { - if (!IsSymbolChar1(*s++)) return false; + if (!IsSymbolChar1(*s++)) + return false; while (*s) { - if (!IsSymbolChar2(*s++)) return false; + if (!IsSymbolChar2(*s++)) + return false; } return true; } diff --git a/tool/build/lib/buffer.c b/tool/build/lib/buffer.c index 60c4b030e..037047f66 100644 --- a/tool/build/lib/buffer.c +++ b/tool/build/lib/buffer.c @@ -32,7 +32,8 @@ void AppendData(struct Buffer *b, const char *data, size_t len) { unsigned n; if (b->i + len + 1 > b->n) { n = MAX(b->i + len + 1, MAX(16, b->n + (b->n >> 1))); - if (!(p = realloc(b->p, n))) return; + if (!(p = realloc(b->p, n))) + return; b->p = p; b->n = n; } diff --git a/tool/build/lib/demangle.c b/tool/build/lib/demangle.c index f06410a6a..a2d11cd14 100644 --- a/tool/build/lib/demangle.c +++ b/tool/build/lib/demangle.c @@ -65,17 +65,21 @@ char *CopySymbol(char *p, size_t pn, const char *s, size_t sn) { assert(pn >= 1 + 3 + 1 + 1); iscomplicated = memchr(s, ' ', sn) || memchr(s, '(', sn); extra = 1; - if (iscomplicated) extra += 2; + if (iscomplicated) + extra += 2; if (sn + extra > pn) { sn = pn - extra - 3; showdots = true; } else { showdots = false; } - if (iscomplicated) *p++ = '"'; + if (iscomplicated) + *p++ = '"'; p = mempcpy(p, s, sn); - if (showdots) p = stpcpy(p, "..."); - if (iscomplicated) *p++ = '"'; + if (showdots) + p = stpcpy(p, "..."); + if (iscomplicated) + *p++ = '"'; *p = '\0'; return p; } @@ -85,8 +89,10 @@ char *DemangleCxxFilt(char *p, size_t pn, const char *s, size_t sn) { size_t got; struct iovec iov[2]; static char buf[4096]; - if (!g_cxxfilt.pid) SpawnCxxFilt(); - if (g_cxxfilt.pid == -1) return NULL; + if (!g_cxxfilt.pid) + SpawnCxxFilt(); + if (g_cxxfilt.pid == -1) + return NULL; buf[0] = '\n'; iov[0].iov_base = (void *)s; iov[0].iov_len = sn; @@ -96,7 +102,8 @@ char *DemangleCxxFilt(char *p, size_t pn, const char *s, size_t sn) { if ((rc = read(g_cxxfilt.reader, buf, sizeof(buf))) != -1) { got = rc; if (got >= 2 && buf[got - 1] == '\n') { - if (buf[got - 2] == '\r') --got; + if (buf[got - 2] == '\r') + --got; --got; return CopySymbol(p, pn, buf, got); } @@ -117,7 +124,8 @@ char *Demangle(char *p, const char *symbol, size_t n) { size_t sn; sn = strlen(symbol); if (startswith(symbol, "_Z")) { - if ((r = DemangleCxxFilt(p, n, symbol, sn))) return r; + if ((r = DemangleCxxFilt(p, n, symbol, sn))) + return r; } return CopySymbol(p, n, symbol, sn); } diff --git a/tool/build/lib/elfwriter.c b/tool/build/lib/elfwriter.c index e90bcfad5..3a99c2923 100644 --- a/tool/build/lib/elfwriter.c +++ b/tool/build/lib/elfwriter.c @@ -249,7 +249,8 @@ void elfwriter_commit(struct ElfWriter *elf, size_t size) { void elfwriter_finishsection(struct ElfWriter *elf) { size_t section = FinishSection(elf); - if (elf->relas->j < elf->relas->i) MakeRelaSection(elf, section); + if (elf->relas->j < elf->relas->i) + MakeRelaSection(elf, section); } /** diff --git a/tool/build/lib/elfwriter_zip.c b/tool/build/lib/elfwriter_zip.c index 9afa5a0f7..7264c8f83 100644 --- a/tool/build/lib/elfwriter_zip.c +++ b/tool/build/lib/elfwriter_zip.c @@ -164,7 +164,8 @@ void elfwriter_zip(struct ElfWriter *elf, const char *symbol, const char *cname, lfilehdrsize = kZipLfileHdrMinSize + namesize; crc = crc32_z(0, data, uncompsize); GetDosLocalTime(mtim.tv_sec, &mtime, &mdate); - if (isutf8(name, namesize)) gflags |= kZipGflagUtf8; + if (isutf8(name, namesize)) + gflags |= kZipGflagUtf8; if (S_ISREG(mode) && istext(data, size)) { iattrs |= kZipIattrText; } diff --git a/tool/build/lib/eztls.c b/tool/build/lib/eztls.c index ea95a53b0..5ae728387 100644 --- a/tool/build/lib/eztls.c +++ b/tool/build/lib/eztls.c @@ -65,8 +65,10 @@ static ssize_t EzWritevAll(int fd, struct iovec *iov, int iovlen) { total = 0; do { if (i) { - while (i < iovlen && !iov[i].iov_len) ++i; - if (i == iovlen) break; + while (i < iovlen && !iov[i].iov_len) + ++i; + if (i == iovlen) + break; } if ((rc = writev(fd, iov + i, iovlen - i)) != -1) { wrote = rc; @@ -99,7 +101,8 @@ int EzTlsFlush(struct EzTlsBio *bio, const unsigned char *buf, size_t len) { v[1].iov_base = (void *)buf; v[1].iov_len = len; if (EzWritevAll(bio->fd, v, 2) != -1) { - if (bio->c > 0) bio->c = 0; + if (bio->c > 0) + bio->c = 0; } else if (errno == EAGAIN) { return MBEDTLS_ERR_SSL_TIMEOUT; } else if (errno == EPIPE || errno == ECONNRESET || errno == ENETRESET) { @@ -121,7 +124,8 @@ static int EzTlsSend(void *ctx, const unsigned char *buf, size_t len) { bio->c += len; return len; } - if ((rc = EzTlsFlush(bio, buf, len)) < 0) return rc; + if ((rc = EzTlsFlush(bio, buf, len)) < 0) + return rc; return len; } @@ -130,11 +134,13 @@ static int EzTlsRecvImpl(void *ctx, unsigned char *p, size_t n, uint32_t o) { int r; struct iovec v[2]; struct EzTlsBio *bio = ctx; - if ((r = EzTlsFlush(bio, 0, 0)) < 0) return r; + if ((r = EzTlsFlush(bio, 0, 0)) < 0) + return r; if (bio->a < bio->b) { r = MIN(n, bio->b - bio->a); memcpy(p, bio->t + bio->a, r); - if ((bio->a += r) == bio->b) bio->a = bio->b = 0; + if ((bio->a += r) == bio->b) + bio->a = bio->b = 0; return r; } v[0].iov_base = p; @@ -153,7 +159,8 @@ static int EzTlsRecvImpl(void *ctx, unsigned char *p, size_t n, uint32_t o) { return MBEDTLS_ERR_NET_RECV_FAILED; } } - if (r > n) bio->b = r - n; + if (r > n) + bio->b = r - n; return MIN(n, r); } @@ -237,7 +244,8 @@ void EzSetup(char psk[32]) { } void EzDestroy(void) { - if (!mytid) return; + if (!mytid) + return; EzSanity(); mbedtls_ssl_free(&ezssl); mbedtls_ctr_drbg_free(&ezrng); diff --git a/tool/build/lib/getargs.c b/tool/build/lib/getargs.c index f500708ac..3e31da96b 100644 --- a/tool/build/lib/getargs.c +++ b/tool/build/lib/getargs.c @@ -77,7 +77,8 @@ static wontreturn void getargs_fail(const char *path, const char *reason) { const char *errstr; - if (!(errstr = _strerdoc(errno))) errstr = "Unknown error"; + if (!(errstr = _strerdoc(errno))) + errstr = "Unknown error"; tinyprint(2, path, ": ", reason, ": ", errstr, "\n", NULL); exit(1); } @@ -97,7 +98,8 @@ void getargs_init(struct GetArgs *ga, char **args) { */ void getargs_destroy(struct GetArgs *ga) { if (ga->map) { - if (munmap(ga->map, ga->mapsize)) notpossible; + if (munmap(ga->map, ga->mapsize)) + notpossible; } bzero(ga, sizeof(*ga)); } @@ -152,7 +154,8 @@ const char *getargs_next(struct GetArgs *ga) { ga->j += ++k; return p; } - if (munmap(ga->map, ga->mapsize)) notpossible; + if (munmap(ga->map, ga->mapsize)) + notpossible; ga->map = 0; ga->mapsize = 0; ga->j = 0; diff --git a/tool/build/lib/interner.c b/tool/build/lib/interner.c index 85a22d7d2..89d9d9488 100644 --- a/tool/build/lib/interner.c +++ b/tool/build/lib/interner.c @@ -43,7 +43,8 @@ static void rehash(struct InternerObject *it) { p = it->p; it->p = xcalloc((it->n <<= 1), sizeof(struct InternerHash)); for (i = 0; i < n; ++i) { - if (!p[i].hash) continue; + if (!p[i].hash) + continue; step = 0; do { j = (p[i].hash + step * ((step + 1) >> 1)) & (it->n - 1); @@ -120,15 +121,21 @@ size_t internobj(struct Interner *t, const void *data, size_t size) { } while (it->p[i].hash); } off = it->pool.i; - if (ckd_add(&need, off, size)) abort(); - if (ckd_add(&need, need, 1)) abort(); + if (ckd_add(&need, off, size)) + abort(); + if (ckd_add(&need, need, 1)) + abort(); if (need > it->pool.n) { - if (ckd_add(&n2, it->pool.n, 1)) abort(); + if (ckd_add(&n2, it->pool.n, 1)) + abort(); do { - if (ckd_add(&n2, n2, n2 >> 1)) abort(); + if (ckd_add(&n2, n2, n2 >> 1)) + abort(); } while (need > n2); - if (ckd_mul(&bytes, n2, sizeof(*it->pool.p))) abort(); - if (!(p2 = realloc(it->pool.p, bytes))) abort(); + if (ckd_mul(&bytes, n2, sizeof(*it->pool.p))) + abort(); + if (!(p2 = realloc(it->pool.p, bytes))) + abort(); it->pool.p = p2; it->pool.n = n2; } diff --git a/tool/build/lib/javadown.c b/tool/build/lib/javadown.c index 2c46c385e..40c73f738 100644 --- a/tool/build/lib/javadown.c +++ b/tool/build/lib/javadown.c @@ -32,13 +32,16 @@ struct Lines { static char *SkipEmptyFirstLine(char *p) { int i = 0; - while (p[i] == ' ' || p[i] == '\t') ++i; + while (p[i] == ' ' || p[i] == '\t') + ++i; return p[i] == '\n' ? p + i + 1 : p; } static void DeleteLastEmptyLine(char *p, size_t n) { - while (n && (p[n - 1] == ' ' || p[n - 1] == '\t')) --n; - if (n && p[n - 1] == '\n') p[n - 1] = '\0'; + while (n && (p[n - 1] == ' ' || p[n - 1] == '\t')) + --n; + if (n && p[n - 1] == '\n') + p[n - 1] = '\0'; } static void AppendLine(struct Lines *lines) { @@ -88,7 +91,8 @@ static unsigned GetMinPrefixLen(struct Lines *lines, for (m = -1, i = 0; i < lines->n; ++i) { if (lines->p[i].n) { n = GetPrefixLen(lines->p[i].p, lines->p[i].n); - if (n < m) m = n; + if (n < m) + m = n; } } return m == -1 ? 0 : m; @@ -112,7 +116,8 @@ static void SplitLines(struct Lines *lines, char *p) { AppendLine(lines); lines->p[lines->n - 1].p = p; lines->p[lines->n - 1].n = (q = strchr(p, '\n')) ? q - p : strlen(p); - if (!q) break; + if (!q) + break; p = q + 1; } RemovePrefixes(lines, GetMinPrefixLen(lines, GetSpaceStarPrefixLen)); @@ -175,7 +180,8 @@ static int ExtractText(struct Javadown *jd, struct Lines *lines, int i) { char *p; size_t n; for (p = NULL, n = j = 0; i + j < lines->n; ++j) { - if (lines->p[i + j].n && lines->p[i + j].p[0] == '@') break; + if (lines->p[i + j].n && lines->p[i + j].p[0] == '@') + break; if (j) { p = realloc(p, ++n); p[n - 1] = '\n'; @@ -194,11 +200,14 @@ static void ExtractTags(struct Javadown *jd, struct Lines *lines, int i) { char *tag, *text, *p2; unsigned taglen, textlen, n2; for (; i < lines->n; ++i) { - if (!lines->p[i].n) continue; - if (lines->p[i].p[0] != '@') continue; + if (!lines->p[i].n) + continue; + if (lines->p[i].p[0] != '@') + continue; tag = lines->p[i].p + 1; taglen = GetTagLen(tag, lines->p[i].n - 1); - if (!taglen) continue; + if (!taglen) + continue; text = tag + taglen; tag = strndup(tag, taglen); textlen = lines->p[i].n - 1 - taglen; diff --git a/tool/build/lib/panel.c b/tool/build/lib/panel.c index 162cf8a46..976d49aa5 100644 --- a/tool/build/lib/panel.c +++ b/tool/build/lib/panel.c @@ -27,25 +27,30 @@ static int tpdecode(const char *s, wint_t *out) { uint32_t wc, cb, need, msb, j, i = 0; - if ((wc = s[i++] & 255) == -1) return -1; + if ((wc = s[i++] & 255) == -1) + return -1; while ((wc & 0300) == 0200) { - if ((wc = s[i++] & 255) == -1) return -1; + if ((wc = s[i++] & 255) == -1) + return -1; } if (!(0 <= wc && wc <= 0x7F)) { msb = wc < 252 ? bsr(~wc & 0xff) : 1; need = 7 - msb; wc &= ((1u << msb) - 1) | 0003; for (j = 1; j < need; ++j) { - if ((cb = s[i++] & 255) == -1) return -1; + if ((cb = s[i++] & 255) == -1) + return -1; if ((cb & 0300) == 0200) { wc = wc << 6 | (cb & 077); } else { - if (out) *out = 0xFFFD; + if (out) + *out = 0xFFFD; return -1; } } } - if (out) *out = wc; + if (out) + *out = wc; return i; } @@ -71,7 +76,8 @@ ssize_t PrintPanels(int fd, long pn, struct Panel *p, long tyn, long txn) { bzero(&b, sizeof(b)); AppendStr(&b, "\e[H"); for (y = 0; y < tyn; ++y) { - if (y) AppendFmt(&b, "\e[%dH", y + 1); + if (y) + AppendFmt(&b, "\e[%dH", y + 1); for (x = i = 0; i < pn; ++i) { if (p[i].top <= y && y < p[i].bottom) { j = state = 0; diff --git a/tool/build/lz4toasm.c b/tool/build/lz4toasm.c index 7e548db5a..b13a16926 100644 --- a/tool/build/lz4toasm.c +++ b/tool/build/lz4toasm.c @@ -164,7 +164,8 @@ int main(int argc, char *argv[]) { } /* TODO(jart): Fix Emacs */ glyphs[col] = kCp437[ch == '"' || ch == '#' ? '.' : ch]; - if (col) fputc(',', fout); + if (col) + fputc(',', fout); fprintf(fout, "0x%02x", ch); if (++col == COLS) { col = 0; diff --git a/tool/build/march-native.c b/tool/build/march-native.c index 6b402a9fa..65f5845c4 100644 --- a/tool/build/march-native.c +++ b/tool/build/march-native.c @@ -76,13 +76,20 @@ int main(int argc, char *argv[]) { GetOpts(argc, argv); #ifdef __x86_64__ struct X86ProcessorModel *model; - if (X86_HAVE(XOP)) Puts("-mxop"); - if (X86_HAVE(SSE4A)) Puts("-msse4a"); - if (X86_HAVE(SSE3)) Puts("-msse3"); - if (X86_HAVE(SSSE3)) Puts("-mssse3"); - if (X86_HAVE(SSE4_1)) Puts("-msse4.1"); - if (X86_HAVE(SSE4_2)) Puts("-msse4.2"); - if (X86_HAVE(AVX)) Puts("-mavx"); + if (X86_HAVE(XOP)) + Puts("-mxop"); + if (X86_HAVE(SSE4A)) + Puts("-msse4a"); + if (X86_HAVE(SSE3)) + Puts("-msse3"); + if (X86_HAVE(SSSE3)) + Puts("-mssse3"); + if (X86_HAVE(SSE4_1)) + Puts("-msse4.1"); + if (X86_HAVE(SSE4_2)) + Puts("-msse4.2"); + if (X86_HAVE(AVX)) + Puts("-mavx"); if (X86_HAVE(AVX2)) { Puts("-mavx2"); if (!isclang) { @@ -90,27 +97,48 @@ int main(int argc, char *argv[]) { Puts("-Wa,-msse2avx"); } } - if (X86_HAVE(AVX512F)) Puts("-mavx512f"); - if (X86_HAVE(AVX512PF)) Puts("-mavx512pf"); - if (X86_HAVE(AVX512ER)) Puts("-mavx512er"); - if (X86_HAVE(AVX512CD)) Puts("-mavx512cd"); - if (X86_HAVE(AVX512VL)) Puts("-mavx512vl"); - if (X86_HAVE(AVX512BW)) Puts("-mavx512bw"); - if (X86_HAVE(AVX512DQ)) Puts("-mavx512dq"); - if (X86_HAVE(AVX512IFMA)) Puts("-mavx512ifma"); - if (X86_HAVE(AVX512VBMI)) Puts("-mavx512vbmi"); - if (X86_HAVE(SHA)) Puts("-msha"); - if (X86_HAVE(AES)) Puts("-maes"); - if (X86_HAVE(VAES)) Puts("-mvaes"); - if (X86_HAVE(PCLMUL)) Puts("-mpclmul"); - if (X86_HAVE(FSGSBASE)) Puts("-mfsgsbase"); - if (X86_HAVE(F16C)) Puts("-mf16c"); - if (X86_HAVE(FMA)) Puts("-mfma"); - if (X86_HAVE(POPCNT)) Puts("-mpopcnt"); - if (X86_HAVE(BMI)) Puts("-mbmi"); - if (X86_HAVE(BMI2)) Puts("-mbmi2"); - if (X86_HAVE(ADX)) Puts("-madx"); - if (X86_HAVE(FXSR)) Puts("-mfxsr"); + if (X86_HAVE(AVX512F)) + Puts("-mavx512f"); + if (X86_HAVE(AVX512PF)) + Puts("-mavx512pf"); + if (X86_HAVE(AVX512ER)) + Puts("-mavx512er"); + if (X86_HAVE(AVX512CD)) + Puts("-mavx512cd"); + if (X86_HAVE(AVX512VL)) + Puts("-mavx512vl"); + if (X86_HAVE(AVX512BW)) + Puts("-mavx512bw"); + if (X86_HAVE(AVX512DQ)) + Puts("-mavx512dq"); + if (X86_HAVE(AVX512IFMA)) + Puts("-mavx512ifma"); + if (X86_HAVE(AVX512VBMI)) + Puts("-mavx512vbmi"); + if (X86_HAVE(SHA)) + Puts("-msha"); + if (X86_HAVE(AES)) + Puts("-maes"); + if (X86_HAVE(VAES)) + Puts("-mvaes"); + if (X86_HAVE(PCLMUL)) + Puts("-mpclmul"); + if (X86_HAVE(FSGSBASE)) + Puts("-mfsgsbase"); + if (X86_HAVE(F16C)) + Puts("-mf16c"); + if (X86_HAVE(FMA)) + Puts("-mfma"); + if (X86_HAVE(POPCNT)) + Puts("-mpopcnt"); + if (X86_HAVE(BMI)) + Puts("-mbmi"); + if (X86_HAVE(BMI2)) + Puts("-mbmi2"); + if (X86_HAVE(ADX)) + Puts("-madx"); + if (X86_HAVE(FXSR)) + Puts("-mfxsr"); if ((model = (void *)getx86processormodel(kX86ProcessorModelKey))) { switch (model->march) { case X86_MARCH_CORE2: diff --git a/tool/build/mkdeps.c b/tool/build/mkdeps.c index 3aa2a2b69..8298ede11 100644 --- a/tool/build/mkdeps.c +++ b/tool/build/mkdeps.c @@ -176,37 +176,44 @@ static wontreturn void DieOom(void) { static unsigned Hash(const void *s, size_t l) { unsigned h; h = crc32c(0, s, l); - if (!h) h = 1; + if (!h) + h = 1; return h; } static void *Malloc(size_t n) { void *p; - if (!(p = malloc(n))) DieOom(); + if (!(p = malloc(n))) + DieOom(); return p; } static void *Calloc(size_t n, size_t z) { void *p; - if (!(p = calloc(n, z))) DieOom(); + if (!(p = calloc(n, z))) + DieOom(); return p; } static void *Realloc(void *p, size_t n) { - if (!(p = realloc(p, n))) DieOom(); + if (!(p = realloc(p, n))) + DieOom(); return p; } static void Appendw(char **b, uint64_t w) { - if (appendw(b, w) == -1) DieOom(); + if (appendw(b, w) == -1) + DieOom(); } static void Appends(char **b, const char *s) { - if (appends(b, s) == -1) DieOom(); + if (appends(b, s) == -1) + DieOom(); } static void Appendd(char **b, const void *p, size_t n) { - if (appendd(b, p, n) == -1) DieOom(); + if (appendd(b, p, n) == -1) + DieOom(); } static unsigned FindFirstFromEdge(unsigned id) { @@ -259,7 +266,8 @@ static void Rehash(void) { sources.n = sources.n ? sources.n << 1 : 16; sources.p = Calloc(sources.n, sizeof(struct Source)); for (i = 0; i < old.n; ++i) { - if (!old.p[i].hash) continue; + if (!old.p[i].hash) + continue; step = 0; do { j = (old.p[i].hash + step * (step + 1) / 2) & (sources.n - 1); @@ -286,7 +294,8 @@ static int HashSource(const char *name, size_t len, bool create) { step++; } while (sources.p[i].hash); } - if (!create) return -1; + if (!create) + return -1; if (++sources.i >= (sources.n >> 1)) { Rehash(); step = 0; @@ -439,17 +448,21 @@ static void LoadRelationships(int argc, char *argv[]) { DieSys(src); } for (p = map, pe = map + size; p < pe; ++p) { - if (!(p = memmem(p, pe - p, "include ", 8))) break; - if (!(path = FindIncludePath(map, size, p, is_assembly))) continue; + if (!(p = memmem(p, pe - p, "include ", 8))) + break; + if (!(path = FindIncludePath(map, size, p, is_assembly))) + continue; // copy the specified include path char right; if (path[-1] == '<') { - if (!systempaths.n) continue; + if (!systempaths.n) + continue; right = '>'; } else { right = '"'; } - if (!(pathend = memchr(path, right, pe - path))) continue; + if (!(pathend = memchr(path, right, pe - path))) + continue; if (pathend - path >= PATH_MAX) { tinyprint(2, src, ": uses really long include path\n", NULL); exit(1); @@ -620,7 +633,8 @@ static const char *StripExt(char pathbuf[hasatleast PATH_MAX], const char *s) { DiePathTooLong(s); } dot = strrchr(pathbuf, '.'); - if (dot) *dot = '\0'; + if (dot) + *dot = '\0'; return pathbuf; } @@ -630,9 +644,12 @@ static uint32_t GetFileExtension(const char *s) { n = s ? strlen(s) : 0; for (i = w = 0; n--;) { wint_t c = s[n]; - if (!IsGraph(c)) return 0; - if (c == '.') break; - if (++i > 4) return 0; + if (!IsGraph(c)) + return 0; + if (c == '.') + break; + if (++i > 4) + return 0; w <<= 8; w |= kToLower[c]; } @@ -655,7 +672,8 @@ static bool IsObjectSource(const char *name) { __funline bool Bts(uint32_t *p, size_t i) { uint32_t k; k = 1u << (i & 31); - if (p[i >> 5] & k) return true; + if (p[i >> 5] & k) + return true; p[i >> 5] |= k; return false; } @@ -663,7 +681,8 @@ __funline bool Bts(uint32_t *p, size_t i) { static void Dive(char **makefile, uint32_t *visited, unsigned id) { int i; for (i = FindFirstFromEdge(id); i < edges.i && edges.p[i].from == id; ++i) { - if (Bts(visited, edges.p[i].to)) continue; + if (Bts(visited, edges.p[i].to)) + continue; Appendw(makefile, READ32LE(" \\\n\t")); Appends(makefile, names + sauces[edges.p[i].to].name); Dive(makefile, visited, edges.p[i].to); @@ -681,8 +700,10 @@ static char *Explore(void) { visited = Malloc(visilen * sizeof(*visited)); for (i = 0; i < sources.i; ++i) { path = names + sauces[i].name; - if (!IsObjectSource(path)) continue; - if (startswith(path, genroot)) continue; + if (!IsObjectSource(path)) + continue; + if (startswith(path, genroot)) + continue; Appendw(&makefile, '\n'); Appends(&makefile, buildroot); Appends(&makefile, StripExt(buf, path)); @@ -707,7 +728,8 @@ int main(int argc, char *argv[]) { ShowCrashReports(); #endif prog = argv[0]; - if (!prog) prog = "mkdeps"; + if (!prog) + prog = "mkdeps"; GetOpts(argc, argv); LoadRelationships(argc, argv); Crunch(); diff --git a/tool/build/mkdir.c b/tool/build/mkdir.c index 28914e8e4..83175d254 100644 --- a/tool/build/mkdir.c +++ b/tool/build/mkdir.c @@ -35,7 +35,8 @@ int main(int argc, char *argv[]) { int (*mkdirp)(const char *, unsigned) = mkdir; prog = argv[0]; - if (!prog) prog = "mkdir"; + if (!prog) + prog = "mkdir"; while ((i = getopt(argc, argv, "hpm:")) != -1) { switch (i) { diff --git a/tool/build/mktemper.c b/tool/build/mktemper.c index 552eb47cb..9fdaf4395 100644 --- a/tool/build/mktemper.c +++ b/tool/build/mktemper.c @@ -45,13 +45,17 @@ static wontreturn void DieSys(const char *thing) { int main(int argc, char *argv[]) { const char *prog = program_invocation_short_name; - if (argc == 1) Die(prog, "missing argument"); - if (argc != 2) Die(prog, "too many arguments"); + if (argc == 1) + Die(prog, "missing argument"); + if (argc != 2) + Die(prog, "too many arguments"); char *template = argv[1]; char *substring = strstr(template, "XXXXXXXXXXXXX"); - if (!substring) Die(prog, "template missing XXXXXXXXXXXXX substring"); + if (!substring) + Die(prog, "template missing XXXXXXXXXXXXX substring"); uint64_t w; - if (getrandom(&w, 8, 0) != 8) DieSys("getrandom"); + if (getrandom(&w, 8, 0) != 8) + DieSys("getrandom"); for (int i = 0; i < 13; ++i) { substring[i] = "0123456789abcdefghijklmnopqrstuvwxyz"[w % 36]; w /= 36; diff --git a/tool/build/mv.c b/tool/build/mv.c index 89932dba6..d1cc31b13 100644 --- a/tool/build/mv.c +++ b/tool/build/mv.c @@ -69,7 +69,8 @@ wontreturn void Die(const char *path, const char *reason) { wontreturn void SysDie(const char *path, const char *func) { const char *errstr; - if (!(errstr = _strerdoc(errno))) errstr = "EUNKNOWN"; + if (!(errstr = _strerdoc(errno))) + errstr = "EUNKNOWN"; tinyprint(2, path, ": ", func, ": ", errstr, "\n", NULL); exit(1); } @@ -159,8 +160,10 @@ char *Join(const char *a, const char *b) { void Mv(char *src, char *dst) { ssize_t rc; const char *d; - if (strlen(src) + 1 > PATH_MAX) _Exit(2); - if (strlen(dst) + 1 > PATH_MAX) _Exit(2); + if (strlen(src) + 1 > PATH_MAX) + _Exit(2); + if (strlen(dst) + 1 > PATH_MAX) + _Exit(2); basename(src); basename(dst); if (IsDirectory(src)) { @@ -212,9 +215,11 @@ void Mv(char *src, char *dst) { int main(int argc, char *argv[]) { int i; prog = argv[0]; - if (!prog) prog = "mv"; + if (!prog) + prog = "mv"; GetOpts(argc, argv); - if (argc - optind < 2) PrintUsage(1, 2); + if (argc - optind < 2) + PrintUsage(1, 2); for (i = optind; i < argc - 1; ++i) { Mv(argv[i], argv[argc - 1]); } diff --git a/tool/build/objbincopy.c b/tool/build/objbincopy.c index ab3a906b5..ce08d0aed 100644 --- a/tool/build/objbincopy.c +++ b/tool/build/objbincopy.c @@ -130,9 +130,12 @@ static void GetOpts(int argc, char *argv[]) { static int PhdrFlagsToProt(Elf64_Word flags) { int prot = PROT_NONE; - if (flags & PF_R) prot |= PROT_READ; - if (flags & PF_W) prot |= PROT_WRITE; - if (flags & PF_X) prot |= PROT_EXEC; + if (flags & PF_R) + prot |= PROT_READ; + if (flags & PF_W) + prot |= PROT_WRITE; + if (flags & PF_X) + prot |= PROT_EXEC; return prot; } @@ -163,11 +166,13 @@ static void ValidateMachoSection(const char *inpath, // bool found_pagezero; bool found_unixthread; struct MachoLoadCommand *cmd; - if (!shdr) return; + if (!shdr) + return; if (elf->e_machine != EM_NEXGEN32E) { Die(inpath, ".macho section only supported for ELF x86_64"); } - if (!macho) Die(inpath, "corrupted .macho section content"); + if (!macho) + Die(inpath, "corrupted .macho section content"); if (shdr->sh_size < sizeof(struct MachoHeader)) { Die(inpath, ".macho section too small for mach-o header"); } @@ -349,10 +354,14 @@ static void HandleElf(const char *inpath, Elf64_Ehdr *elf, size_t esize) { elf->e_shentsize = 0; for (maxoff = i = 0; i < elf->e_phnum; ++i) { phdr = GetElfProgramHeaderAddress(elf, esize, i); - if (!phdr) Die(inpath, "corrupted elf header"); - if (phdr->p_type == PT_INTERP) Die(inpath, "PT_INTERP isn't supported"); - if (phdr->p_type == PT_DYNAMIC) Die(inpath, "PT_DYNAMIC isn't supported"); - if (!phdr->p_filesz) continue; + if (!phdr) + Die(inpath, "corrupted elf header"); + if (phdr->p_type == PT_INTERP) + Die(inpath, "PT_INTERP isn't supported"); + if (phdr->p_type == PT_DYNAMIC) + Die(inpath, "PT_DYNAMIC isn't supported"); + if (!phdr->p_filesz) + continue; maxoff = MAX(maxoff, phdr->p_offset + phdr->p_filesz); if (macho && phdr->p_type == PT_LOAD) { if (!(loadsegment = GetNextMachoLoadSegment(&loadcommand, &loadcount))) { @@ -417,7 +426,8 @@ static void HandleInput(const char *inpath) { int main(int argc, char *argv[]) { int i; prog = argv[0]; - if (!prog) prog = "objbincopy"; + if (!prog) + prog = "objbincopy"; GetOpts(argc, argv); if ((outfd = creat(outpath, 0755)) == -1) { DieSys(outpath); diff --git a/tool/build/package.c b/tool/build/package.c index dd74c66c4..c18b18248 100644 --- a/tool/build/package.c +++ b/tool/build/package.c @@ -160,7 +160,8 @@ static wontreturn void Die(const char *path, const char *reason) { static wontreturn void SysExit(const char *path, const char *func) { const char *errstr; - if (!(errstr = _strerrno(errno))) errstr = "EUNKNOWN"; + if (!(errstr = _strerrno(errno))) + errstr = "EUNKNOWN"; tinyprint(2, path, ": ", func, " failed with ", errstr, "\n", NULL); exit(1); } @@ -414,8 +415,10 @@ static void IndexSections(struct Package *pkg, struct Object *obj) { static enum SectionKind ClassifySection(struct Package *pkg, struct Object *obj, uint8_t type, Elf64_Section shndx) { - if (shndx == SHN_ABS) return kOther; - if (type == STT_COMMON) return kBss; + if (shndx == SHN_ABS) + return kOther; + if (type == STT_COMMON) + return kBss; return pkg->sections.p[obj->section_offset + shndx].kind; } @@ -476,10 +479,14 @@ static void LoadPriviligedRefsToUndefs(struct Package *pkg, } erela = rela + shdr->sh_size / sizeof(*rela); for (; rela < erela; ++rela) { - if (!ELF64_R_TYPE(rela->r_info)) continue; - if (!(x = ELF64_R_SYM(rela->r_info))) continue; - if (x > obj->symcount) Die("error", "elf overflow"); - if (obj->syms[x].st_shndx) continue; // symbol is defined + if (!ELF64_R_TYPE(rela->r_info)) + continue; + if (!(x = ELF64_R_SYM(rela->r_info))) + continue; + if (x > obj->symcount) + Die("error", "elf overflow"); + if (obj->syms[x].st_shndx) + continue; // symbol is defined if (ELF64_ST_BIND(obj->syms[x].st_info) != STB_WEAK && ELF64_ST_BIND(obj->syms[x].st_info) != STB_GLOBAL) { tinyprint(2, "warning: undefined symbol not global\n", NULL); @@ -526,7 +533,8 @@ static void OpenObject(struct Package *pkg, struct Object *obj, int oid) { } static void CloseObject(struct Object *obj) { - if (munmap(obj->elf, obj->size)) notpossible; + if (munmap(obj->elf, obj->size)) + notpossible; } static void LoadObjects(struct Package *pkg) { @@ -567,14 +575,18 @@ static bool FindSymbol(const char *name, struct Package *pkg, size_t i; struct Symbol *sym; if ((sym = BisectSymbol(pkg, name))) { - if (out_sym) *out_sym = sym; - if (out_pkg) *out_pkg = pkg; + if (out_sym) + *out_sym = sym; + if (out_pkg) + *out_pkg = pkg; return true; } for (i = 0; i < directdeps->i; ++i) { if ((sym = BisectSymbol(directdeps->p[i], name))) { - if (out_sym) *out_sym = sym; - if (out_pkg) *out_pkg = directdeps->p[i]; + if (out_sym) + *out_sym = sym; + if (out_pkg) + *out_pkg = directdeps->p[i]; return true; } } @@ -587,7 +599,8 @@ static void CheckStrictDeps(struct Package *pkg, struct Packages *deps) { struct Symbol *undef; for (i = 0; i < pkg->undefs.i; ++i) { undef = &pkg->undefs.p[i]; - if (undef->bind_ == STB_WEAK) continue; + if (undef->bind_ == STB_WEAK) + continue; if (!FindSymbol(pkg->strings.p + undef->name, pkg, deps, NULL, NULL)) { tinyprint(2, pkg->strings.p + pkg->path, ": undefined symbol '", pkg->strings.p + undef->name, "' (", @@ -621,7 +634,8 @@ static void CheckYourPrivilege(struct Package *pkg, struct Packages *deps) { ++f; } } - if (f) exit(1); + if (f) + exit(1); } static bool IsSymbolDirectlyReachable(struct Package *pkg, @@ -639,7 +653,8 @@ static void Package(int argc, char *argv[], struct Package *pkg, CheckYourPrivilege(pkg, deps); WritePackage(pkg); for (i = 0; i < deps->i; ++i) { - if (munmap(deps->p[i]->addr, deps->p[i]->size)) notpossible; + if (munmap(deps->p[i]->addr, deps->p[i]->size)) + notpossible; } } diff --git a/tool/build/pecheck.c b/tool/build/pecheck.c index e6284a360..f7586b88e 100644 --- a/tool/build/pecheck.c +++ b/tool/build/pecheck.c @@ -300,7 +300,8 @@ static void CheckPe(const char *path, char *map, size_t size) { Die(exe->path, "PE ImportLookupTable and ImportAddressTable should " "have identical content"); } - if (!*ilt) break; + if (!*ilt) + break; CheckPeImportByName(exe, *ilt); } } @@ -317,12 +318,17 @@ int main(int argc, char *argv[]) { #endif for (i = 1; i < argc; ++i) { path = argv[i]; - if ((fd = open(path, O_RDONLY)) == -1) DieSys(path); - if ((size = lseek(fd, 0, SEEK_END)) == -1) DieSys(path); + if ((fd = open(path, O_RDONLY)) == -1) + DieSys(path); + if ((size = lseek(fd, 0, SEEK_END)) == -1) + DieSys(path); map = mmap(0, size, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0); - if (map == MAP_FAILED) DieSys(path); + if (map == MAP_FAILED) + DieSys(path); CheckPe(path, map, size); - if (munmap(map, size)) DieSys(path); - if (close(fd)) DieSys(path); + if (munmap(map, size)) + DieSys(path); + if (close(fd)) + DieSys(path); } } diff --git a/tool/build/pledge.c b/tool/build/pledge.c index 26af168e7..874f76669 100644 --- a/tool/build/pledge.c +++ b/tool/build/pledge.c @@ -202,8 +202,10 @@ long ParseSiSize(const char *s, long b) { } void AddPromise(const char *s) { - while (isspace(*s)) ++s; - if (!*s) return; + while (isspace(*s)) + ++s; + if (!*s) + return; if (*g_promises) { strlcat(g_promises, " ", sizeof(g_promises)); } @@ -358,9 +360,12 @@ void NormalizeFileDescriptors(void) { int SetLimit(int r, long lo, long hi) { struct rlimit old; struct rlimit lim = {lo, hi}; - if (r < 0 || r >= RLIM_NLIMITS) return 0; - if (!setrlimit(r, &lim)) return 0; - if (getrlimit(r, &old)) return -1; + if (r < 0 || r >= RLIM_NLIMITS) + return 0; + if (!setrlimit(r, &lim)) + return 0; + if (getrlimit(r, &old)) + return -1; lim.rlim_cur = MIN(lim.rlim_cur, old.rlim_max); lim.rlim_max = MIN(lim.rlim_max, old.rlim_max); return setrlimit(r, &lim); @@ -373,8 +378,10 @@ static int GetBaseCpuFreqMhz(void) { int SetCpuLimit(int secs) { #ifdef __x86_64__ int mhz, lim; - if (secs <= 0) return 0; - if (!(mhz = GetBaseCpuFreqMhz())) return eopnotsupp(); + if (secs <= 0) + return 0; + if (!(mhz = GetBaseCpuFreqMhz())) + return eopnotsupp(); lim = ceil(3100. / mhz * secs); return SetLimit(RLIMIT_CPU, lim, lim); #else @@ -464,8 +471,10 @@ enum Strategy GetStrategy(void) { void ApplyFilesystemPolicy(unsigned long ipromises) { const char *p; - if (g_dontunveil) return; - if (!SupportsLandlock()) return; + if (g_dontunveil) + return; + if (!SupportsLandlock()) + return; Unveil(g_prog, "rx"); @@ -587,7 +596,8 @@ void ApplyFilesystemPolicy(unsigned long ipromises) { void DropCapabilities(void) { int e, i; - if (!IsLinux()) return; + if (!IsLinux()) + return; for (e = errno, i = 0;; ++i) { if (prctl(PR_CAPBSET_DROP, i) == -1) { if (errno == EINVAL || errno == EPERM) { @@ -603,16 +613,21 @@ void DropCapabilities(void) { bool FileExistsAndIsNewerThan(const char *filepath, const char *thanpath) { struct stat st1, st2; - if (stat(filepath, &st1) == -1) return false; - if (stat(thanpath, &st2) == -1) return false; - if (st1.st_mtim.tv_sec < st2.st_mtim.tv_sec) return false; - if (st1.st_mtim.tv_sec > st2.st_mtim.tv_sec) return true; + if (stat(filepath, &st1) == -1) + return false; + if (stat(thanpath, &st2) == -1) + return false; + if (st1.st_mtim.tv_sec < st2.st_mtim.tv_sec) + return false; + if (st1.st_mtim.tv_sec > st2.st_mtim.tv_sec) + return true; return st1.st_mtim.tv_nsec >= st2.st_mtim.tv_nsec; } int Extract(const char *from, const char *to, int mode) { int fdin, fdout; - if ((fdin = open(from, O_RDONLY)) == -1) return -1; + if ((fdin = open(from, O_RDONLY)) == -1) + return -1; if ((fdout = creat(to, mode)) == -1) { close(fdin); return -1; @@ -627,7 +642,8 @@ int Extract(const char *from, const char *to, int mode) { int CountEnviron(char **ep) { int res = 0; - while (*ep++) ++res; + while (*ep++) + ++res; return res; } diff --git a/tool/build/rm.c b/tool/build/rm.c index 4df40c8b6..c5a041dbc 100644 --- a/tool/build/rm.c +++ b/tool/build/rm.c @@ -92,7 +92,8 @@ static int OnFile(const char *fpath, const struct stat *st, int typeflag, rc = unlink(fpath); } if (rc == -1) { - if (force && errno == ENOENT) return 0; + if (force && errno == ENOENT) + return 0; perror(fpath); exit(1); } @@ -110,7 +111,8 @@ static void Remove(const char *path) { rc = nftw(path, OnFile, 128, FTW_PHYS | FTW_DEPTH); } else { if (lstat(path, &st)) { - if (force && errno == ENOENT) return; + if (force && errno == ENOENT) + return; perror(path); exit(1); } @@ -125,7 +127,8 @@ static void Remove(const char *path) { } } if (rc == -1) { - if (force && errno == ENOENT) return; + if (force && errno == ENOENT) + return; perror(path); exit(1); } @@ -134,7 +137,8 @@ static void Remove(const char *path) { int main(int argc, char *argv[]) { int i; prog = argv[0]; - if (!prog) prog = "rm"; + if (!prog) + prog = "rm"; GetOpts(argc, argv); if (optind == argc) { tinyprint(2, prog, ": missing operand\n", NULL); diff --git a/tool/build/rollup.c b/tool/build/rollup.c index c1e5fda78..2dcc61596 100644 --- a/tool/build/rollup.c +++ b/tool/build/rollup.c @@ -57,11 +57,13 @@ static wontreturn void DieOom(void) { } static void Appends(char **b, const char *s) { - if (appends(b, s) == -1) DieOom(); + if (appends(b, s) == -1) + DieOom(); } static void Appendd(char **b, const void *p, size_t n) { - if (appendd(b, p, n) == -1) DieOom(); + if (appendd(b, p, n) == -1) + DieOom(); } size_t GetFdSize(int fd) { @@ -84,10 +86,12 @@ void Process(const char *p, const char *pe, const char *path, bool isheader) { p2 = memchr(p, '\n', pe - p); p2 = p2 ? p2 + 1 : pe; if (LOOKINGAT(p, pe, "#if")) { - if (isheader && !level++) continue; + if (isheader && !level++) + continue; } if (LOOKINGAT(p, pe, "#endif")) { - if (isheader && !--level) continue; + if (isheader && !--level) + continue; } if (LOOKINGAT(p, pe, "/* clang-format off */")) { noformat = true; @@ -114,26 +118,37 @@ void Visit(const char *path) { char *map; size_t size; bool isheader; - if (!endswith(path, ".h") && !endswith(path, ".inc")) return; - if (endswith(path, ".internal.h")) return; - if (endswith(path, "/internal.h")) return; - if (endswith(path, ".internal.inc")) return; - if (endswith(path, "/internal.inc")) return; - if (startswith(path, "libc/isystem/")) return; + if (!endswith(path, ".h") && !endswith(path, ".inc")) + return; + if (endswith(path, ".internal.h")) + return; + if (endswith(path, "/internal.h")) + return; + if (endswith(path, ".internal.inc")) + return; + if (endswith(path, "/internal.inc")) + return; + if (startswith(path, "libc/isystem/")) + return; isheader = endswith(path, ".h"); - if (isheader && isinterned(visited, path)) return; + if (isheader && isinterned(visited, path)) + return; Appends(&output, "\n\f\n/*!BEGIN "); Appends(&output, path); Appends(&output, " */\n\n"); intern(visited, path); - if ((fd = open(path, O_RDONLY)) == -1) DieSys(path); + if ((fd = open(path, O_RDONLY)) == -1) + DieSys(path); if ((size = GetFdSize(fd))) { map = mmap(0, size, PROT_READ, MAP_PRIVATE, fd, 0); - if (map == MAP_FAILED) DieSys(path); + if (map == MAP_FAILED) + DieSys(path); Process(map, map + size, path, isheader); - if (munmap(map, size)) DieSys(path); + if (munmap(map, size)) + DieSys(path); } - if (close(fd)) DieSys(path); + if (close(fd)) + DieSys(path); } int main(int argc, char *argv[]) { @@ -141,7 +156,8 @@ int main(int argc, char *argv[]) { const char *src; struct GetArgs ga; prog = argv[0]; - if (!prog) prog = "rollup"; + if (!prog) + prog = "rollup"; visited = newinterner(); Appends(&output, "#ifndef COSMOPOLITAN_H_\n"); Appends(&output, "#define COSMOPOLITAN_H_\n"); diff --git a/tool/build/runit.c b/tool/build/runit.c index 503a0a79f..3c0a55681 100644 --- a/tool/build/runit.c +++ b/tool/build/runit.c @@ -268,7 +268,8 @@ void RelayRequest(void) { rc = read(13, buf, PIPE_BUF); CHECK_NE(-1, rc); have = rc; - if (!rc) break; + if (!rc) + break; transferred += have; for (i = 0; i < have; i += rc) { rc = mbedtls_ssl_write(&ezssl, buf + i, have - i); @@ -288,9 +289,11 @@ void RelayRequest(void) { bool Recv(char *p, int n) { int i, rc; for (i = 0; i < n; i += rc) { - do rc = mbedtls_ssl_read(&ezssl, p + i, n - i); + do + rc = mbedtls_ssl_read(&ezssl, p + i, n - i); while (rc == MBEDTLS_ERR_SSL_WANT_READ); - if (!rc) return false; + if (!rc) + return false; if (rc < 0) { if (rc == MBEDTLS_ERR_NET_CONN_RESET) { EzTlsDie("connection reset", rc); @@ -334,10 +337,12 @@ int ReadResponse(void) { mbedtls_ssl_close_notify(&ezssl); break; } else if (msg[4] == kRunitStdout || msg[4] == kRunitStderr) { - if (!Recv(msg, 4)) goto TruncatedMessage; + if (!Recv(msg, 4)) + goto TruncatedMessage; int n = READ32BE(msg); char *s = malloc(n); - if (!Recv(s, n)) goto TruncatedMessage; + if (!Recv(s, n)) + goto TruncatedMessage; write(2, s, n); free(s); } else { @@ -356,7 +361,8 @@ int RunOnHost(char *spec) { int err; char *p; for (p = spec; *p; ++p) { - if (*p == ':') *p = ' '; + if (*p == ':') + *p = ' '; } int got = sscanf(spec, "%100s %hu %hu", g_hostname, &g_runitdport, &g_sshport); @@ -365,7 +371,8 @@ int RunOnHost(char *spec) { fprintf(stderr, "what on earth %#s -> %d\n", spec, got); exit(1); } - if (!strchr(g_hostname, '.')) strcat(g_hostname, ".test."); + if (!strchr(g_hostname, '.')) + strcat(g_hostname, ".test."); DEBUGF("connecting to %s port %d", g_hostname, g_runitdport); for (;;) { Connect(); @@ -373,7 +380,8 @@ int RunOnHost(char *spec) { struct timespec start = timespec_real(); err = EzHandshake2(); handshake_latency = timespec_tomicros(timespec_sub(timespec_real(), start)); - if (!err) break; + if (!err) + break; WARNF("handshake with %s:%d failed -0x%04x (%s)", // g_hostname, g_runitdport, err, GetTlsError(err)); close(g_sock); @@ -446,22 +454,27 @@ int SpawnSubprocesses(int argc, char *argv[]) { // wait for children to terminate for (;;) { if ((pid = wait(&ws)) == -1) { - if (errno == EINTR) continue; - if (errno == ECHILD) break; + if (errno == EINTR) + continue; + if (errno == ECHILD) + break; FATALF("wait failed"); } for (i = 0; i < argc; ++i) { - if (pids[i] != pid) continue; + if (pids[i] != pid) + continue; if (WIFEXITED(ws)) { if (WEXITSTATUS(ws)) { INFOF("%s exited with %d", argv[i], WEXITSTATUS(ws)); } else { DEBUGF("%s exited with %d", argv[i], WEXITSTATUS(ws)); } - if (!exitcode) exitcode = WEXITSTATUS(ws); + if (!exitcode) + exitcode = WEXITSTATUS(ws); } else { INFOF("%s terminated with %s", argv[i], strsignal(WTERMSIG(ws))); - if (!exitcode) exitcode = 128 + WTERMSIG(ws); + if (!exitcode) + exitcode = 128 + WTERMSIG(ws); } break; } diff --git a/tool/build/runitd.c b/tool/build/runitd.c index 10a830e86..7c8023499 100644 --- a/tool/build/runitd.c +++ b/tool/build/runitd.c @@ -515,8 +515,10 @@ void *ClientWorker(void *arg) { int i = 0; char *args[8] = {0}; args[i++] = client->tmpexepath; - if (use_strace) args[i++] = "--strace"; - if (use_ftrace) args[i++] = "--ftrace"; + if (use_strace) + args[i++] = "--strace"; + if (use_ftrace) + args[i++] = "--ftrace"; // run program, tee'ing stderr to both log and client DEBUF("spawning %s", client->tmpexepath); @@ -776,11 +778,14 @@ int Serve(void) { } void Daemonize(void) { - if (fork() > 0) _exit(0); + if (fork() > 0) + _exit(0); setsid(); - if (fork() > 0) _exit(0); + if (fork() > 0) + _exit(0); dup2(g_bogusfd, 0); - if (!g_sendready) dup2(g_bogusfd, 1); + if (!g_sendready) + dup2(g_bogusfd, 1); close(2); open(kLogFile, O_CREAT | O_WRONLY | O_APPEND | O_CLOEXEC, 0644); extern long __klog_handle; @@ -796,7 +801,8 @@ int main(int argc, char *argv[]) { signal(SIGPIPE, SIG_IGN); setenv("TZ", "PST", true); gethostname(g_hostname, sizeof(g_hostname)); - for (int i = 3; i < 16; ++i) close(i); + for (int i = 3; i < 16; ++i) + close(i); errno = 0; // poll()'ing /dev/null stdin file descriptor on xnu returns POLLNVAL?! if (IsWindows()) { @@ -805,7 +811,8 @@ int main(int argc, char *argv[]) { g_bogusfd = open("/dev/zero", O_RDONLY | O_CLOEXEC); } mkdir("o", 0700); - if (g_daemonize) Daemonize(); + if (g_daemonize) + Daemonize(); Serve(); free(g_psk); #ifdef MODE_DBG diff --git a/tool/build/sha256sum.c b/tool/build/sha256sum.c index 58d258948..369676127 100644 --- a/tool/build/sha256sum.c +++ b/tool/build/sha256sum.c @@ -102,7 +102,8 @@ static bool IsSupportedPath(const char *path) { for (i = 0;; ++i) { switch (path[i]) { case 0: - if (i) return true; + if (i) + return true; // fallthrough case '\r': case '\n': @@ -137,8 +138,10 @@ static bool ProduceDigest(const char *path, FILE *f) { char hexdigest[65]; char mode[2] = {g_mode}; unsigned char digest[32]; - if (!IsSupportedPath(path)) return false; - if (!GetDigest(path, f, digest)) return false; + if (!IsSupportedPath(path)) + return false; + if (!GetDigest(path, f, digest)) + return false; hexpcpy(hexdigest, digest, 32); tinyprint(1, hexdigest, " ", mode, path, "\n", NULL); return true; @@ -152,17 +155,24 @@ static bool CheckDigests(const char *path, FILE *f) { unsigned char wantdigest[32], gotdigest[32]; char buf[64 + 2 + PATH_MAX + 1 + 1], *p; for (line = 0; fgets(buf, sizeof(buf), f); ++line) { - if (!*chomp(buf)) continue; + if (!*chomp(buf)) + continue; for (p = buf, i = 0; i < 32; ++i) { - if ((a = kHexToInt[*p++ & 255]) == -1) goto InvalidLine; - if ((b = kHexToInt[*p++ & 255]) == -1) goto InvalidLine; + if ((a = kHexToInt[*p++ & 255]) == -1) + goto InvalidLine; + if ((b = kHexToInt[*p++ & 255]) == -1) + goto InvalidLine; wantdigest[i] = a << 4 | b; } - if (*p++ != ' ') goto InvalidLine; - if (!IsModeCharacter(*p++)) goto InvalidLine; + if (*p++ != ' ') + goto InvalidLine; + if (!IsModeCharacter(*p++)) + goto InvalidLine; path2 = p; - if (!*path2) goto InvalidLine; - if (!IsSupportedPath(path2)) continue; + if (!*path2) + goto InvalidLine; + if (!IsSupportedPath(path2)) + continue; if ((f2 = fopen(path2, "rb"))) { if (GetDigest(path2, f2, gotdigest)) { if (!memcmp(wantdigest, gotdigest, 32)) { @@ -210,7 +220,8 @@ int main(int argc, char *argv[]) { FILE *f; bool k = true; prog = argv[0]; - if (!prog) prog = "sha256sum"; + if (!prog) + prog = "sha256sum"; GetOpts(argc, argv); if (optind == argc) { f = stdin; diff --git a/tool/build/summy.c b/tool/build/summy.c index b101c5c05..a98514663 100644 --- a/tool/build/summy.c +++ b/tool/build/summy.c @@ -26,9 +26,11 @@ int main(int argc, char *argv[]) { long x, sum = 0; if (argc == 2 && !strcmp(argv[1], "-x")) { - while (scanf("%lx", &x) > 0) sum += x; + while (scanf("%lx", &x) > 0) + sum += x; } else { - while (scanf("%ld", &x) > 0) sum += x; + while (scanf("%ld", &x) > 0) + sum += x; } printf("%,ld\n", sum); return 0; diff --git a/tool/build/touch.c b/tool/build/touch.c index 41acc5e50..5cc09dad2 100644 --- a/tool/build/touch.c +++ b/tool/build/touch.c @@ -29,7 +29,8 @@ int main(int argc, char *argv[]) { const char *prog; prog = argv[0]; - if (!prog) prog = "touch"; + if (!prog) + prog = "touch"; if (argc < 2) { tinyprint(2, prog, ": missing operand\n", NULL); diff --git a/tool/build/unveil.c b/tool/build/unveil.c index 97b6ee0f2..83020b9b6 100644 --- a/tool/build/unveil.c +++ b/tool/build/unveil.c @@ -91,10 +91,12 @@ int main(int argc, char *argv[]) { p++; continue; } - if (i > 1) errx(1, ":%zu - too many fields", count); + if (i > 1) + errx(1, ":%zu - too many fields", count); fields[i++] = p; } - if (i != 2) errx(1, ":%zu - malformed line", count); + if (i != 2) + errx(1, ":%zu - malformed line", count); if (unveil(fields[0], fields[1]) == -1) err(1, "unveil(%s, %s)", fields[0], fields[1]); @@ -104,7 +106,8 @@ int main(int argc, char *argv[]) { err(1, "getline"); } - if (unveil(NULL, NULL) == -1) err(1, "unveil(NULL, NULL)"); + if (unveil(NULL, NULL) == -1) + err(1, "unveil(NULL, NULL)"); __sys_execve(prog, argv + optind, environ); err(127, "execve"); diff --git a/tool/build/verynice.c b/tool/build/verynice.c index 0c142d866..68de92a4b 100644 --- a/tool/build/verynice.c +++ b/tool/build/verynice.c @@ -38,7 +38,8 @@ static wontreturn void PrintUsage(int rc, int fd) { int main(int argc, char *argv[]) { prog = argv[0]; - if (!prog) prog = "verynice"; + if (!prog) + prog = "verynice"; int opt; while ((opt = getopt(argc, argv, "h")) != -1) { diff --git a/tool/build/zipcopy.c b/tool/build/zipcopy.c index 0fa328896..125ab57ae 100644 --- a/tool/build/zipcopy.c +++ b/tool/build/zipcopy.c @@ -51,7 +51,8 @@ static wontreturn void Die(const char *path, const char *reason) { static wontreturn void SysDie(const char *path, const char *func) { const char *errstr; - if (!(errstr = _strerdoc(errno))) errstr = "EUNKNOWN"; + if (!(errstr = _strerdoc(errno))) + errstr = "EUNKNOWN"; tinyprint(2, path, ": ", func, " failed with ", errstr, "\n", NULL); exit(1); } @@ -133,7 +134,8 @@ static void CopyZip(void) { eocd = ineof - kZipCdirHdrMinSize; stop = MAX(eocd - 65536, inmap); for (;; --eocd) { - if (eocd < stop) return; + if (eocd < stop) + return; if (READ32LE(eocd) == kZipCdirHdrMagic) { if (IsZipEocd32(inmap, insize, eocd - inmap) != kZipOk) { Die(inpath, "found bad eocd record"); @@ -217,7 +219,8 @@ int main(int argc, char *argv[]) { ShowCrashReports(); #endif prog = argv[0]; - if (!prog) prog = "apelink"; + if (!prog) + prog = "apelink"; GetOpts(argc, argv); if ((infd = open(inpath, O_RDONLY)) == -1) { SysDie(inpath, "open"); diff --git a/tool/build/zipobj.c b/tool/build/zipobj.c index 063447c6c..f07193539 100644 --- a/tool/build/zipobj.c +++ b/tool/build/zipobj.c @@ -189,9 +189,11 @@ void ProcessFile(struct ElfWriter *elf, const char *path) { name = name_; } else { name = path; - if (basenamify_) name = basename(gc(xstrdup(name))); + if (basenamify_) + name = basename(gc(xstrdup(name))); name = StripComponents(name, strip_components_); - if (path_prefix_) name = gc(xjoinpaths(path_prefix_, name)); + if (path_prefix_) + name = gc(xjoinpaths(path_prefix_, name)); } if (S_ISDIR(st.st_mode)) { st.st_size = 0; @@ -225,10 +227,12 @@ void zipobj(int argc, char **argv) { struct ElfWriter *elf; unassert(argc < UINT16_MAX / 3 - 64); /* ELF 64k section limit */ GetOpts(&argc, &argv); - for (i = 0; i < argc; ++i) CheckFilenameKosher(argv[i]); + for (i = 0; i < argc; ++i) + CheckFilenameKosher(argv[i]); elf = elfwriter_open(outpath_, 0644, arch_); elfwriter_cargoculting(elf); - for (i = 0; i < argc; ++i) ProcessFile(elf, argv[i]); + for (i = 0; i < argc; ++i) + ProcessFile(elf, argv[i]); PullEndOfCentralDirectoryIntoLinkage(elf); elfwriter_close(elf); } diff --git a/tool/curl/curl.c b/tool/curl/curl.c index fd9935de8..dee042191 100644 --- a/tool/curl/curl.c +++ b/tool/curl/curl.c @@ -64,7 +64,8 @@ static wontreturn void PrintUsage(int fd, int rc) { static const char *DescribeErrno(void) { const char *reason; - if (!(reason = _strerdoc(errno))) reason = "Unknown error"; + if (!(reason = _strerdoc(errno))) + reason = "Unknown error"; return reason; } @@ -499,7 +500,8 @@ int _curl(int argc, char *argv[]) { break; case kHttpClientStateBody: WriteOutput(p + i - g, g); - if (!g) goto Finished; + if (!g) + goto Finished; break; case kHttpClientStateBodyLengthed: unassert(g); diff --git a/tool/decode/ar.c b/tool/decode/ar.c index cc3471277..b1bd1892c 100644 --- a/tool/decode/ar.c +++ b/tool/decode/ar.c @@ -60,7 +60,8 @@ static void Open(void) { exit(1); } CHECK_NE(-1, fstat(fd, &st)); - if (!(size = st.st_size)) exit(0); + if (!(size = st.st_size)) + exit(0); CHECK_NE(MAP_FAILED, (data = mmap(NULL, size, PROT_READ, MAP_PRIVATE, fd, 0))); LOGIFNEG1(close(fd)); @@ -136,7 +137,8 @@ static void Print(void) { } int main(int argc, char *argv[]) { - if (argc < 2) return 1; + if (argc < 2) + return 1; path = argv[1]; Open(); Check(); diff --git a/tool/decode/base64.c b/tool/decode/base64.c index d4a811369..1e6512c69 100644 --- a/tool/decode/base64.c +++ b/tool/decode/base64.c @@ -52,8 +52,10 @@ void Encode(void) { b = getchar(); c = getchar(); w = a << 020; - if (b != -1) w |= b << 010; - if (c != -1) w |= c; + if (b != -1) + w |= b << 010; + if (c != -1) + w |= c; putchar(CHARS[(w >> 18) & 077]); putchar(CHARS[(w >> 12) & 077]); putchar(b != -1 ? CHARS[(w >> 6) & 077] : '='); @@ -65,7 +67,8 @@ void Encode(void) { int Get(void) { int c; while ((c = getchar()) != -1) { - if ((c = kBase64[c]) != -1) break; + if ((c = kBase64[c]) != -1) + break; } return c; } @@ -76,11 +79,15 @@ void Decode(void) { c = Get(); d = Get(); w = a << 18 | b << 12; - if (c != -1) w |= c << 6; - if (d != -1) w |= d; + if (c != -1) + w |= c << 6; + if (d != -1) + w |= d; putchar((w & 0xFF0000) >> 020); - if (c != -1) putchar((w & 0x00FF00) >> 010); - if (d != -1) putchar((w & 0x0000FF) >> 000); + if (c != -1) + putchar((w & 0x00FF00) >> 010); + if (d != -1) + putchar((w & 0x0000FF) >> 000); } } diff --git a/tool/decode/elf.c b/tool/decode/elf.c index 2e59203d4..741ad381f 100644 --- a/tool/decode/elf.c +++ b/tool/decode/elf.c @@ -109,7 +109,8 @@ static void printelfehdr(void) { static void printelfsegmentheader(int i) { Elf64_Phdr *phdr = GetElfProgramHeaderAddress(elf, st->st_size, i); - if (!phdr) return; + if (!phdr) + return; printf("/\tElf64_Phdr *phdr = GetElfProgramHeaderAddress(elf, st->st_size, " "%d)\n", i); @@ -132,13 +133,15 @@ static void printelfsegmentheader(int i) { static void printelfsegmentheaders(void) { printf("\n"); printf("\t.org\t%#x\n", elf->e_phoff); - for (unsigned i = 0; i < elf->e_phnum; ++i) printelfsegmentheader(i); + for (unsigned i = 0; i < elf->e_phnum; ++i) + printelfsegmentheader(i); } static void printelfsectionheader(int i, char *shstrtab) { Elf64_Shdr *shdr; shdr = GetElfSectionHeaderAddress(elf, st->st_size, i); - if (!shdr) return; + if (!shdr) + return; printf("/\tElf64_Shdr *shdr = GetElfSectionHeaderAddress(elf, st->st_size, " "%d)\n", i); @@ -170,7 +173,8 @@ static void printelfsectionheaders(void) { Elf64_Shdr *shdr, *shshdr; shshdr = GetElfSectionHeaderAddress(elf, st->st_size, elf->e_shstrndx); shstrtab = GetElfSectionNameStringTable(elf, st->st_size); - if (!shshdr || !shstrtab) return; + if (!shshdr || !shstrtab) + return; if (shstrtab) { printf("\n"); printf("\t.org\t%#x\n", elf->e_shoff); @@ -181,7 +185,8 @@ static void printelfsectionheaders(void) { printf("\t.org\t%#x\n", shshdr->sh_offset); for (i = 0; i < elf->e_shnum; ++i) { shdr = GetElfSectionHeaderAddress(elf, st->st_size, i); - if (!shdr) break; + if (!shdr) + break; str = GetElfString(elf, st->st_size, shstrtab, shdr->sh_name); show(".asciz", format(b1, "%`'s", str), NULL); } @@ -191,18 +196,23 @@ static void printelfsectionheaders(void) { static void printelfgroups(void) { for (int i = 0; i < elf->e_shnum; ++i) { Elf64_Shdr *shdr = GetElfSectionHeaderAddress(elf, st->st_size, i); - if (!shdr) break; + if (!shdr) + break; if (shdr->sh_type == SHT_GROUP) { const Elf64_Shdr *symhdr = GetElfSectionHeaderAddress(elf, st->st_size, shdr->sh_link); - if (!symhdr) break; + if (!symhdr) + break; const Elf64_Shdr *strhdr = GetElfSectionHeaderAddress(elf, st->st_size, symhdr->sh_link); - if (!strhdr) break; + if (!strhdr) + break; Elf64_Sym *syms = GetElfSectionAddress(elf, st->st_size, symhdr); - if (!syms) break; + if (!syms) + break; char *strs = GetElfSectionAddress(elf, st->st_size, strhdr); - if (!strs) break; + if (!strs) + break; printf("\n"); printf("//\t%s group\n", GetElfString(elf, st->st_size, strs, syms[shdr->sh_info].st_name)); @@ -276,7 +286,8 @@ static void printelfsymbol(Elf64_Sym *sym, char *strtab, char *shstrtab) { static void printelfsymboltable(void) { size_t i, symcount = 0; Elf64_Sym *symtab = GetElfSymbols(elf, st->st_size, SHT_SYMTAB, &symcount); - if (!symtab) return; + if (!symtab) + return; char *strtab = GetElfStringTable(elf, st->st_size, ".strtab"); char *shstrtab = GetElfSectionNameStringTable(elf, st->st_size); printf("\n\n"); @@ -292,7 +303,8 @@ static void printelfsymboltable(void) { static void printelfdynsymboltable(void) { size_t i, symcount = 0; Elf64_Sym *symtab = GetElfSymbols(elf, st->st_size, SHT_DYNSYM, &symcount); - if (!symtab) return; + if (!symtab) + return; char *strtab = GetElfStringTable(elf, st->st_size, ".dynstr"); char *shstrtab = GetElfSectionNameStringTable(elf, st->st_size); printf("\n\n"); @@ -342,7 +354,8 @@ static void printelfrelocations(void) { (uintptr_t)elf + shdr->sh_offset + shdr->sh_size)); ++rela, ++j) { symtab = GetElfSectionHeaderAddress(elf, st->st_size, shdr->sh_link); - if (!symtab) continue; + if (!symtab) + continue; count = symtab->sh_size / symtab->sh_entsize; syms = GetElfSectionAddress(elf, st->st_size, symtab); sym = ELF64_R_SYM(rela->r_info); diff --git a/tool/decode/lib/asmcodegen.c b/tool/decode/lib/asmcodegen.c index c969a53b9..1e4520a3c 100644 --- a/tool/decode/lib/asmcodegen.c +++ b/tool/decode/lib/asmcodegen.c @@ -40,7 +40,8 @@ char *tabpad(const char *s, unsigned width) { l = strlen(s); need = width > l ? (roundup(width, 8) - l - 1) / 8 + 1 : 0; p = memcpy(malloc(l + need + 2), s, l); - for (i = 0; i < need; ++i) p[l + i] = '\t'; + for (i = 0; i < need; ++i) + p[l + i] = '\t'; if (!need) { p[l] = ' '; ++need; diff --git a/tool/decode/lib/disassemblehex.c b/tool/decode/lib/disassemblehex.c index 201cc96a8..77b1a20d1 100644 --- a/tool/decode/lib/disassemblehex.c +++ b/tool/decode/lib/disassemblehex.c @@ -24,7 +24,8 @@ static size_t countzeroes(const uint8_t *data, size_t size) { size_t i; for (i = 0; i < size; ++i) { - if (data[i] != '\0') break; + if (data[i] != '\0') + break; } return i; } @@ -42,19 +43,22 @@ void disassemblehex(uint8_t *data, size_t size, FILE *f) { if (z > 2) { fprintf(f, "\t.%s\t%zu*%d\n", "zero", z, kDisassembleHexColumns); i += z * kDisassembleHexColumns; - if (i == size) break; + if (i == size) + break; } fprintf(f, "\t.%s\t", "byte"); bzero(glyphs, sizeof(glyphs)); } /* TODO(jart): Fix Emacs */ glyphs[col] = kCp437[ch == '"' || ch == '\\' || ch == '#' ? '.' : ch]; - if (col) fputc(',', f); + if (col) + fputc(',', f); fprintf(f, "0x%02x", ch); if (++col == kDisassembleHexColumns) { col = 0; fprintf(f, "\t#%hs\n", glyphs); } } - if (col) fputc('\n', f); + if (col) + fputc('\n', f); } diff --git a/tool/decode/lib/flagger.c b/tool/decode/lib/flagger.c index 51dc8e797..ba22393b2 100644 --- a/tool/decode/lib/flagger.c +++ b/tool/decode/lib/flagger.c @@ -50,7 +50,8 @@ char *RecreateFlags(const struct IdName *names, unsigned long id) { } } if (id) { - if (bufi) APPEND(&bufp, &bufi, &bufn, "|"); + if (bufi) + APPEND(&bufp, &bufi, &bufn, "|"); CONCAT(&bufp, &bufi, &bufn, extrabuf, snprintf(extrabuf, sizeof(extrabuf), "%#x", id)); } else if (!bufi) { diff --git a/tool/decode/lib/titlegen.c b/tool/decode/lib/titlegen.c index d45e064ca..2d45ded1d 100644 --- a/tool/decode/lib/titlegen.c +++ b/tool/decode/lib/titlegen.c @@ -40,14 +40,17 @@ void showtitle(const char *brand, const char *tool, const char *title, printf("/*"); if (modeline) { printf("-*-%-71s-*-│\n│ vi:%-70s:vi │\n╞", modeline->emacs, modeline->vim); - for (unsigned i = 0; i < 78; ++i) printf("═"); + for (unsigned i = 0; i < 78; ++i) + printf("═"); printf("╡\n│ %-76s ", buf); } else { - for (unsigned i = 0; i < 75; ++i) printf("─"); + for (unsigned i = 0; i < 75; ++i) + printf("─"); printf("│─╗\n│ %-73s ─╬─", buf); } printf("│\n╚─"); - for (unsigned i = 0; i < 75; ++i) printf("─"); + for (unsigned i = 0; i < 75; ++i) + printf("─"); printf("%s", modeline ? "─" : "│"); if (description) { /* TODO(jart): paragraph fill */ diff --git a/tool/decode/macho.c b/tool/decode/macho.c index 519179ec0..736ad4078 100644 --- a/tool/decode/macho.c +++ b/tool/decode/macho.c @@ -187,7 +187,8 @@ static void showmacholoadgeneric(struct MachoLoadCommand *lc) { bzero(glyphs, sizeof(glyphs)); } glyphs[col] = kCp437[c]; - if (col) putchar(','); + if (col) + putchar(','); printf("0x%02x", c); if (++col == COLS) { col = 0; @@ -334,7 +335,8 @@ void showall(void) { int main(int argc, char *argv[]) { int64_t fd; struct stat st[1]; - if (argc != 2) fprintf(stderr, "usage: %s FILE\n", argv[0]), exit(1); + if (argc != 2) + fprintf(stderr, "usage: %s FILE\n", argv[0]), exit(1); if ((fd = open((path = argv[1]), O_RDONLY)) == -1 || fstat(fd, st) == -1 || (macho = mmap(NULL, (machosize = st->st_size), PROT_READ, MAP_SHARED, fd, 0)) == MAP_FAILED) { diff --git a/tool/decode/pe2.c b/tool/decode/pe2.c index f960f29b7..3d8ab4eb2 100644 --- a/tool/decode/pe2.c +++ b/tool/decode/pe2.c @@ -56,7 +56,8 @@ static struct NtImageSectionHeader *sections; static size_t section_count; static void *GetOff(uint32_t off) { - if (off < mzsize) return (char *)mz + off; + if (off < mzsize) + return (char *)mz + off; fprintf(stderr, "%s: off %#x not defined within image\n", path, off); exit(1); } @@ -377,7 +378,8 @@ int main(int argc, char *argv[]) { int64_t fd; struct stat st[1]; ShowCrashReports(); - if (argc != 2) fprintf(stderr, "usage: %s FILE\n", argv[0]), exit(1); + if (argc != 2) + fprintf(stderr, "usage: %s FILE\n", argv[0]), exit(1); if ((fd = open((path = argv[1]), O_RDONLY)) == -1 || fstat(fd, st) == -1 || (mz = mmap(NULL, (mzsize = st->st_size), PROT_READ, MAP_SHARED, fd, 0)) == MAP_FAILED) { diff --git a/tool/lambda/blcdump.c b/tool/lambda/blcdump.c index 3ece4ae4d..6cd2601ee 100644 --- a/tool/lambda/blcdump.c +++ b/tool/lambda/blcdump.c @@ -95,7 +95,8 @@ void LoadFlags(int argc, char *argv[]) { } void Expand(int c) { - if (end >= TERMS) Error(5, "OUT OF TERMS"); + if (end >= TERMS) + Error(5, "OUT OF TERMS"); mem[end++] = c; } diff --git a/tool/lambda/bru2bin.c b/tool/lambda/bru2bin.c index c45c65d9e..2516ff0f9 100644 --- a/tool/lambda/bru2bin.c +++ b/tool/lambda/bru2bin.c @@ -115,7 +115,8 @@ static int Greed(void) { } else { c = fgetwc(stdin); } - if (c == EOF) return c; + if (c == EOF) + return c; if (!t) { if (c == '#' || c == ';') { t = 1; @@ -218,7 +219,8 @@ static int Greed(void) { static int Need(void) { int c; - if ((c = Greed()) != EOF) return c; + if ((c = Greed()) != EOF) + return c; Error(1, "unfinished expression"); } @@ -227,7 +229,8 @@ static struct Node *Parse1(void) { int i, oldsp; struct Node *r, *p, *q; do { - if ((c = Greed()) == EOF) return 0; + if ((c = Greed()) == EOF) + return 0; } while (iswspace(c)); if (c == L'λ' || c == '\\') { oldsp = sp; @@ -245,7 +248,8 @@ static struct Node *Parse1(void) { } } q = Parse1(); - if (!q) Error(4, "lambda needs body"); + if (!q) + Error(4, "lambda needs body"); p->l = q; while ((q = Parse1())) { p->l = NewNode(2, 0, p->l, q); @@ -261,23 +265,27 @@ static struct Node *Parse1(void) { i *= 10; i += c - '0'; c = Greed(); - if (c == EOF) break; + if (c == EOF) + break; if (!iswdigit(c)) { unget = c; break; } } i -= indexing; - if (i < 0) Error(5, "undefined variable: %lc", c); + if (i < 0) + Error(5, "undefined variable: %lc", c); return NewNode(1, i, 0, 0); } else if (c == '(') { p = r = Parse1(); - if (!p) Error(6, "empty parenthesis"); + if (!p) + Error(6, "empty parenthesis"); while ((q = Parse1())) { r = NewNode(2, 0, r, q); } c = Need(); - if (c != ')') Error(7, "expected closing parenthesis"); + if (c != ')') + Error(7, "expected closing parenthesis"); return r; } else if (c == ')') { unget = c; @@ -290,7 +298,8 @@ static struct Node *Parse1(void) { static struct Node *Parse(void) { struct Node *r, *p, *q; p = r = Parse1(); - if (!p) Error(6, "empty expression"); + if (!p) + Error(6, "empty expression"); while ((q = Parse1())) { r = NewNode(2, 0, r, q); } diff --git a/tool/lambda/lam2bin.c b/tool/lambda/lam2bin.c index 94498e30a..9c8dd8fb5 100644 --- a/tool/lambda/lam2bin.c +++ b/tool/lambda/lam2bin.c @@ -107,7 +107,8 @@ static int Greed(void) { } else { c = fgetwc(stdin); } - if (c == EOF) return c; + if (c == EOF) + return c; if (!t) { if (c == '#' || c == ';') { t = 1; @@ -119,7 +120,8 @@ static int Greed(void) { } continue; } - if (iswspace(c)) continue; + if (iswspace(c)) + continue; if (!str) { switch (c) { case L'⊥': @@ -211,7 +213,8 @@ static int Greed(void) { static int Need(void) { int c; - if ((c = Greed()) != EOF) return c; + if ((c = Greed()) != EOF) + return c; Error(1, "unfinished expression"); } @@ -219,20 +222,24 @@ static struct Node *Parse1(void) { wint_t c; int i, oldsp; struct Node *r, *p, *q; - if ((c = Greed()) == EOF) return 0; + if ((c = Greed()) == EOF) + return 0; if (c == L'λ' || c == '\\') { oldsp = sp; c = Need(); - if (!(isalnum(c) || c == '_')) Error(2, "lambda needs argument"); + if (!(isalnum(c) || c == '_')) + Error(2, "lambda needs argument"); p = r = NewNode(0, 0, 0, 0); args[sp++] = c; while ((c = Need()) != '.') { - if (!(isalnum(c) || c == '_')) Error(3, "lambda needs argument"); + if (!(isalnum(c) || c == '_')) + Error(3, "lambda needs argument"); p = p->l = NewNode(0, 0, 0, 0); args[sp++] = c; } q = Parse1(); - if (!q) Error(4, "lambda needs body"); + if (!q) + Error(4, "lambda needs body"); p->l = q; while ((q = Parse1())) { p->l = NewNode(2, 0, p->l, q); @@ -249,16 +256,19 @@ static struct Node *Parse1(void) { break; } } - if (i < 0) Error(5, "undefined variable: %d %lc", c, c); + if (i < 0) + Error(5, "undefined variable: %d %lc", c, c); return NewNode(1, i, 0, 0); } else if (c == '(') { p = r = Parse1(); - if (!p) Error(6, "empty parenthesis"); + if (!p) + Error(6, "empty parenthesis"); while ((q = Parse1())) { r = NewNode(2, 0, r, q); } c = Need(); - if (c != ')') Error(7, "expected closing parenthesis"); + if (c != ')') + Error(7, "expected closing parenthesis"); return r; } else if (c == ')') { unget = c; @@ -271,7 +281,8 @@ static struct Node *Parse1(void) { static struct Node *Parse(void) { struct Node *r, *p, *q; p = r = Parse1(); - if (!p) Error(6, "empty expression"); + if (!p) + Error(6, "empty expression"); while ((q = Parse1())) { r = NewNode(2, 0, r, q); } diff --git a/tool/lambda/lambda.c b/tool/lambda/lambda.c index 4047c8019..1e0a18135 100644 --- a/tool/lambda/lambda.c +++ b/tool/lambda/lambda.c @@ -101,14 +101,16 @@ int Backref(int x) { } static inline void Expand(int c) { - if (end >= TERMS) Error(5, "OUT OF TERMS"); + if (end >= TERMS) + Error(5, "OUT OF TERMS"); mem[end++] = c; } void Gc(struct Closure *p) { struct Closure *t; while (p && p != &root) { - if (--p->refs) break; + if (--p->refs) + break; Gc(p->next); t = p->envp; p->envp = 0; @@ -123,8 +125,10 @@ void Var(void) { struct Closure *t, *e; e = t = envp; x = mem[ip + 1]; - for (i = 0; i < x && e != &root; ++i) e = e->next; - if (e == &root) Error(10 + x, "UNDEFINED VARIABLE %d", x); + for (i = 0; i < x && e != &root; ++i) + e = e->next; + if (e == &root) + Error(10 + x, "UNDEFINED VARIABLE %d", x); ip = e->term; envp = REF(e->envp); Gc(t); @@ -171,14 +175,17 @@ void Put(void) { void Bye(void) { int rc = mem[ip + 2]; // (λ 0) [exitcode] - if (rc) Error(rc, "CONTINUATIONS EXHAUSTED"); - if (postdump && !rc) Dump(0, end, stderr); + if (rc) + Error(rc, "CONTINUATIONS EXHAUSTED"); + if (postdump && !rc) + Dump(0, end, stderr); exit(0); } // pops continuation and pushes it to environment void Abs(void) { - if (!contp) Bye(); + if (!contp) + Bye(); struct Closure *t = contp; contp = t->next; t->next = envp; @@ -249,7 +256,8 @@ void Iop(void) { } static void Rex(void) { - if (slog) PrintMachineState(stderr); + if (slog) + PrintMachineState(stderr); if (rlog && (alog || mem[ip] != APP)) { PrintExpressions(stderr, alog, vlog); } @@ -288,7 +296,8 @@ void Krivine(void) { fputs("]\n", stderr); } } - for (;;) Rex(); + for (;;) + Rex(); } void LoadFlags(int argc, char *argv[]) { diff --git a/tool/lambda/lib/debug.c b/tool/lambda/lib/debug.c index 47fa93639..f841a1ac3 100644 --- a/tool/lambda/lib/debug.c +++ b/tool/lambda/lib/debug.c @@ -72,7 +72,8 @@ void PrintMachineState(FILE *f) { char buf[256]; static int op; fputc('\n', f); - for (i = 0; i < 80; ++i) fputwc(L'─', f); + for (i = 0; i < 80; ++i) + fputwc(L'─', f); ksnprintf(buf, sizeof(buf), "%d\n ip %ld | op %d %s | arg %d | end %ld\n", op++, ip, mem[ip], GetOpName(mem[ip]), mem[ip + 1], end); @@ -97,7 +98,8 @@ void PrintExpressions(FILE *f, char alog, char vlog) { ps.envp = envp; for (p = &ps; p; p = p->next) { Print(p->term, 1, GetDepth(p->envp), f); - if (p->next) fputc(' ', f); + if (p->next) + fputc(' ', f); } if (alog) { fputs(" ⟹ ", f); diff --git a/tool/lambda/lib/dump.c b/tool/lambda/lib/dump.c index a466303af..a3fd9ee18 100644 --- a/tool/lambda/lib/dump.c +++ b/tool/lambda/lib/dump.c @@ -21,7 +21,8 @@ void Dumper(int i, int j, FILE *f) { char buf[64]; - if (i) fputc('\n', f); + if (i) + fputc('\n', f); for (; i < j; ++i) { switch (mem[i]) { case VAR: diff --git a/tool/lambda/lib/getbit.c b/tool/lambda/lib/getbit.c index ef6d4ccc1..8c64eff0f 100644 --- a/tool/lambda/lib/getbit.c +++ b/tool/lambda/lib/getbit.c @@ -26,14 +26,16 @@ char GetBit(FILE* f) { if (!binary) { for (comment = 0;;) { c = fgetwc(f); - if (c == -1) break; + if (c == -1) + break; if (!comment) { fflush(stdout); if (c == ';') { comment = 1; } else if (!iswspace(c) && c != '(' && c != ')' && c != '[' && c != ']') { - if (c != -1) c &= 1; + if (c != -1) + c &= 1; break; } } else if (c == '\n') { diff --git a/tool/lambda/lib/needbit.c b/tool/lambda/lib/needbit.c index c82df08c9..491f24342 100644 --- a/tool/lambda/lib/needbit.c +++ b/tool/lambda/lib/needbit.c @@ -20,6 +20,7 @@ char NeedBit(FILE* f) { char b = GetBit(f); - if (b == -1) Error(9, "UNEXPECTED EOF"); + if (b == -1) + Error(9, "UNEXPECTED EOF"); return b; } diff --git a/tool/lambda/lib/parse.c b/tool/lambda/lib/parse.c index 968656cfc..f9df3d812 100644 --- a/tool/lambda/lib/parse.c +++ b/tool/lambda/lib/parse.c @@ -26,15 +26,18 @@ struct Parse Parse(int ignored, FILE* f) { char bit, need; struct Parse p; for (need = 0, start = end;;) { - if (end + 2 > TERMS) Error(5, "OUT OF TERMS"); + if (end + 2 > TERMS) + Error(5, "OUT OF TERMS"); if ((bit = GetBit(f)) == -1) { - if (!need) break; + if (!need) + break; fflush(stdout); fputs("---\n", stderr); Print(start, 0, 0, stderr); Error(9, "UNFINISHED EXPRESSION"); } else if (bit) { - for (t = 0; NeedBit(f);) ++t; + for (t = 0; NeedBit(f);) + ++t; mem[end++] = VAR; mem[end++] = t; break; diff --git a/tool/lambda/lib/parserom.c b/tool/lambda/lib/parserom.c index f03774690..4a51fbc1e 100644 --- a/tool/lambda/lib/parserom.c +++ b/tool/lambda/lib/parserom.c @@ -23,12 +23,15 @@ static struct Parse ParseImpl(int tail, int need, FILE *f) { struct Parse p, q; int b, i, j, t, start; for (start = end;;) { - if (end + 2 > TERMS) Error(5, "OUT OF TERMS"); + if (end + 2 > TERMS) + Error(5, "OUT OF TERMS"); if ((b = GetBit(f)) == -1) { - if (need) Error(9, "UNFINISHED EXPRESSION"); + if (need) + Error(9, "UNFINISHED EXPRESSION"); break; } else if (b) { - for (t = 0; NeedBit(f);) ++t; + for (t = 0; NeedBit(f);) + ++t; mem[end++] = VAR; mem[end++] = t; break; diff --git a/tool/lambda/lib/print.c b/tool/lambda/lib/print.c index 5edbb482c..6d314208e 100644 --- a/tool/lambda/lib/print.c +++ b/tool/lambda/lib/print.c @@ -873,11 +873,13 @@ void PrintDebruijn(int x, int head, int depth, FILE* f) { } else { fputwc(L'λ', f); } - if (!(0 <= x && x < TERMS)) goto Overflow; + if (!(0 <= x && x < TERMS)) + goto Overflow; } while (mem[x] == ABS); fputc(' ', f); } - if (!(0 <= (x + 1) && (x + 1) < TERMS)) goto Overflow; + if (!(0 <= (x + 1) && (x + 1) < TERMS)) + goto Overflow; if (mem[x] == APP) { fputc('[', f); PrintDebruijn(x + 2, 1, depth, f); @@ -1162,11 +1164,13 @@ void PrintLambda(int x, int head, int depth, int apps, FILE* f) { do { ++x; fputwc(ALPHABET[depth++], f); - if (!(0 <= x && x < TERMS)) goto Overflow; + if (!(0 <= x && x < TERMS)) + goto Overflow; } while (mem[x] == ABS); fputc('.', f); } - if (!(0 <= (x + 1) && (x + 1) < TERMS)) goto Overflow; + if (!(0 <= (x + 1) && (x + 1) < TERMS)) + goto Overflow; if (mem[x] == VAR) { if (0 <= x + 1 && x + 1 < TERMS) { PrintVar(depth - 1 - mem[x + 1], f); @@ -1182,7 +1186,8 @@ void PrintLambda(int x, int head, int depth, int apps, FILE* f) { } PrintLambda(x + 2, 1, depth, apps + 1, f); if (!(x + 2 + mem[x + 1] < TERMS && mem[x + 2 + mem[x + 1]] == APP)) { - if (safer || !noname) fputc(' ', f); + if (safer || !noname) + fputc(' ', f); } PrintLambda(x + 2 + mem[x + 1], 0, depth, apps + 1, f); } else if (mem[x] == IOP) { @@ -1230,10 +1235,12 @@ void PrintBinary(int x, int head, int depth, FILE* f) { ++depth; fputc('0', f); fputc('0', f); - if (!(0 <= x && x < TERMS)) goto Overflow; + if (!(0 <= x && x < TERMS)) + goto Overflow; } while (mem[x] == ABS); } - if (!(0 <= (x + 1) && (x + 1) < TERMS)) goto Overflow; + if (!(0 <= (x + 1) && (x + 1) < TERMS)) + goto Overflow; if (mem[x] == VAR) { if (0 <= x + 1 && x + 1 < TERMS) { PrintVar(mem[x + 1], f); diff --git a/tool/net/dig.c b/tool/net/dig.c index 6af2bed32..41a6c2d01 100644 --- a/tool/net/dig.c +++ b/tool/net/dig.c @@ -76,6 +76,7 @@ void lookup(const char *name) { int main(int argc, char *argv[]) { int i; ShowCrashReports(); - for (i = 1; i < argc; ++i) lookup(argv[i]); + for (i = 1; i < argc; ++i) + lookup(argv[i]); return 0; } diff --git a/tool/net/echo.c b/tool/net/echo.c index 4a0ffd762..c25452037 100644 --- a/tool/net/echo.c +++ b/tool/net/echo.c @@ -98,7 +98,8 @@ void TcpServer(void) { ip, ntohs(addr2.sin_port)); for (;;) { CHECK_NE(-1, (rc = read(client, buf, sizeof(buf)))); - if (!rc) break; + if (!rc) + break; CHECK_NE(-1, write(client, buf, rc)); } } @@ -117,7 +118,8 @@ void TcpClient(void) { int main(int argc, char *argv[]) { int port = 0; int64_t ip = 0; - if (argc < 3) PrintUsage(argv); + if (argc < 3) + PrintUsage(argv); if (argc >= 4) { if ((ip = ParseIp(argv[3], -1)) == -1) { PrintUsage(argv); diff --git a/tool/net/getadaptersaddresses.c b/tool/net/getadaptersaddresses.c index 7ddfd0f61..91ddbfa94 100644 --- a/tool/net/getadaptersaddresses.c +++ b/tool/net/getadaptersaddresses.c @@ -174,43 +174,53 @@ const char *DescribeIpAdapterFlags(int x) { static char buf[256]; p = buf; if (x & kNtIpAdapterDdnsEnabled) { - if (p > buf) *p++ = ' '; + if (p > buf) + *p++ = ' '; p = stpcpy(p, "DDNS"); } if (x & kNtIpAdapterDhcpv4Enabled) { - if (p > buf) *p++ = ' '; + if (p > buf) + *p++ = ' '; p = stpcpy(p, "DHCPv4"); } if (x & kNtIpAdapterReceiveOnly) { - if (p > buf) *p++ = ' '; + if (p > buf) + *p++ = ' '; p = stpcpy(p, "RECV_ONLY"); } if (x & kNtIpAdapterNoMulticast) { - if (p > buf) *p++ = ' '; + if (p > buf) + *p++ = ' '; p = stpcpy(p, "NO_MULTICAST"); } if (x & kNtIpAdapterIpv4Enabled) { - if (p > buf) *p++ = ' '; + if (p > buf) + *p++ = ' '; p = stpcpy(p, "IPv4"); } if (x & kNtIpAdapterIpv6Enabled) { - if (p > buf) *p++ = ' '; + if (p > buf) + *p++ = ' '; p = stpcpy(p, "IPv6"); } if (x & kNtIpAdapterIpv6Managed) { - if (p > buf) *p++ = ' '; + if (p > buf) + *p++ = ' '; p = stpcpy(p, "IPv6_MANAGED"); } if (x & kNtIpAdapterIpv6OtherStatefulConfig) { - if (p > buf) *p++ = ' '; + if (p > buf) + *p++ = ' '; p = stpcpy(p, "IPv6_OTHER_STATEFUL_CONFIG"); } if (x & kNtIpAdapterNetbiosOverTcpipEnabled) { - if (p > buf) *p++ = ' '; + if (p > buf) + *p++ = ' '; p = stpcpy(p, "NETBIOS_OVER_TCP"); } if (x & kNtIpAdapterRegisterAdapterSuffix) { - if (p > buf) *p++ = ' '; + if (p > buf) + *p++ = ' '; p = stpcpy(p, "REGISTER_ADAPTER_SUFFIX"); } return buf; @@ -252,9 +262,12 @@ char *ConvertIpv6ToStr(const struct in6_addr *addr) { b = (addr->s6_addr[i + 0] & 0x0F) >> 0; c = (addr->s6_addr[i + 1] & 0xF0) >> 4; d = (addr->s6_addr[i + 1] & 0x0F) >> 0; - if (a) *p++ = "0123456789abcdef"[a]; - if (a || b) *p++ = "0123456789abcdef"[b]; - if (a || b || c) *p++ = "0123456789abcdef"[c]; + if (a) + *p++ = "0123456789abcdef"[a]; + if (a || b) + *p++ = "0123456789abcdef"[b]; + if (a || b || c) + *p++ = "0123456789abcdef"[c]; *p++ = "0123456789abcdef"[d]; } *p = '\0'; @@ -406,7 +419,8 @@ void ShowWinNicCidrs(void) { (char16_t *)&lpMsgBuf, 0, NULL)) { printf("\tError: %s", lpMsgBuf); LocalFree(lpMsgBuf); - if (pAddresses) free(pAddresses); + if (pAddresses) + free(pAddresses); exit(1); } } diff --git a/tool/net/lfuncs.c b/tool/net/lfuncs.c index 79f0d1ca0..7629d9e9b 100644 --- a/tool/net/lfuncs.c +++ b/tool/net/lfuncs.c @@ -475,7 +475,8 @@ int LuaSlurp(lua_State *L) { } if (rc != -1) { got = rc; - if (!got) break; + if (!got) + break; luaL_addlstring(&b, tb, got); } else if (errno == EINTR) { errno = olderr; @@ -617,7 +618,8 @@ dontinline int LuaBase32Impl(lua_State *L, const char *a = luaL_optlstring(L, 2, "", &al); if (!IS2POW(al) || al > 128 || al == 1) return luaL_error(L, "alphabet length is not a power of 2 in range 2..128"); - if (!(p = B32(s, sl, a, al, &sl))) return luaL_error(L, "out of memory"); + if (!(p = B32(s, sl, a, al, &sl))) + return luaL_error(L, "out of memory"); lua_pushlstring(L, p, sl); free(p); return 1; @@ -693,10 +695,12 @@ int LuaGetCryptoHash(lua_State *L) { const void *p = luaL_checklstring(L, 2, &pl); const void *k = luaL_optlstring(L, 3, "", &kl); const mbedtls_md_info_t *digest = mbedtls_md_info_from_string(h); - if (!digest) return luaL_argerror(L, 1, "unknown hash type"); + if (!digest) + return luaL_argerror(L, 1, "unknown hash type"); if (kl == 0) { // no key provided, run generic hash function - if ((digest->f_md)(p, pl, d)) return luaL_error(L, "bad input data"); + if ((digest->f_md)(p, pl, d)) + return luaL_error(L, "bad input data"); } else if (mbedtls_md_hmac(digest, k, kl, p, pl, d)) { return luaL_error(L, "bad input data"); } diff --git a/tool/net/libresolv_query.c b/tool/net/libresolv_query.c index 956e0c250..693d64dc4 100644 --- a/tool/net/libresolv_query.c +++ b/tool/net/libresolv_query.c @@ -74,25 +74,30 @@ static void dump_dns_rr(ns_msg *msg, ns_rr *rr, ns_sect sect, FILE *trace) { class = ns_rr_class(*rr); type = ns_rr_type(*rr); fprintf(trace, "%s,%d,%d", ns_rr_name(*rr), class, type); - if (sect == ns_s_qd) return; + if (sect == ns_s_qd) + return; fprintf(trace, ",%lu", (u_long)ns_rr_ttl(*rr)); rd = ns_rr_rdata(*rr); switch (type) { case ns_t_soa: n = ns_name_uncompress(ns_msg_base(*msg), ns_msg_end(*msg), rd, buf, sizeof buf); - if (n < 0) goto error; + if (n < 0) + goto error; putc(',', trace); fputs(buf, trace); rd += n; n = ns_name_uncompress(ns_msg_base(*msg), ns_msg_end(*msg), rd, buf, sizeof buf); - if (n < 0) goto error; + if (n < 0) + goto error; putc(',', trace); fputs(buf, trace); rd += n; - if (ns_msg_end(*msg) - rd < 5 * NS_INT32SZ) goto error; - for (n = 0; n < 5; n++) MY_GET32(soa[n], rd); + if (ns_msg_end(*msg) - rd < 5 * NS_INT32SZ) + goto error; + for (n = 0; n < 5; n++) + MY_GET32(soa[n], rd); sprintf(buf, "%u,%u,%u,%u,%u", soa[0], soa[1], soa[2], soa[3], soa[4]); break; case ns_t_a: @@ -110,7 +115,8 @@ static void dump_dns_rr(ns_msg *msg, ns_rr *rr, ns_sect sect, FILE *trace) { case ns_t_cname: n = ns_name_uncompress(ns_msg_base(*msg), ns_msg_end(*msg), rd, buf, sizeof buf); - if (n < 0) goto error; + if (n < 0) + goto error; break; case ns_t_txt: snprintf(buf, (size_t)rd[0] + 1, "%s", rd + 1); diff --git a/tool/net/ljson.c b/tool/net/ljson.c index 8ac0b5d36..b78367081 100644 --- a/tool/net/ljson.c +++ b/tool/net/ljson.c @@ -132,7 +132,8 @@ static struct DecodeJson Parse(struct lua_State *L, const char *p, } case 'n': // null - if (context & (KEY | COLON | COMMA)) goto OnColonCommaKey; + if (context & (KEY | COLON | COMMA)) + goto OnColonCommaKey; if (p + 3 <= e && READ32LE(p - 1) == READ32LE("null")) { lua_pushnil(L); return (struct DecodeJson){1, p + 3}; @@ -141,7 +142,8 @@ static struct DecodeJson Parse(struct lua_State *L, const char *p, } case 'f': // false - if (context & (KEY | COLON | COMMA)) goto OnColonCommaKey; + if (context & (KEY | COLON | COMMA)) + goto OnColonCommaKey; if (p + 4 <= e && READ32LE(p) == READ32LE("alse")) { lua_pushboolean(L, false); return (struct DecodeJson){1, p + 4}; @@ -150,7 +152,8 @@ static struct DecodeJson Parse(struct lua_State *L, const char *p, } case 't': // true - if (context & (KEY | COLON | COMMA)) goto OnColonCommaKey; + if (context & (KEY | COLON | COMMA)) + goto OnColonCommaKey; if (p + 3 <= e && READ32LE(p - 1) == READ32LE("true")) { lua_pushboolean(L, true); return (struct DecodeJson){1, p + 3}; @@ -162,9 +165,11 @@ static struct DecodeJson Parse(struct lua_State *L, const char *p, IllegalCharacter: return (struct DecodeJson){-1, "illegal character"}; OnColonCommaKey: - if (context & KEY) goto BadObjectKey; + if (context & KEY) + goto BadObjectKey; OnColonComma: - if (context & COLON) goto MissingColon; + if (context & COLON) + goto MissingColon; return (struct DecodeJson){-1, "missing ','"}; MissingColon: return (struct DecodeJson){-1, "missing ':'"}; @@ -172,7 +177,8 @@ static struct DecodeJson Parse(struct lua_State *L, const char *p, return (struct DecodeJson){-1, "object key must be string"}; case '-': // negative - if (context & (COLON | COMMA | KEY)) goto OnColonCommaKey; + if (context & (COLON | COMMA | KEY)) + goto OnColonCommaKey; if (p < e && isdigit(*p)) { d = -1; break; @@ -181,7 +187,8 @@ static struct DecodeJson Parse(struct lua_State *L, const char *p, } case '0': // zero or number - if (context & (COLON | COMMA | KEY)) goto OnColonCommaKey; + if (context & (COLON | COMMA | KEY)) + goto OnColonCommaKey; if (p < e) { if (*p == '.') { if (p + 1 == e || !isdigit(p[1])) { @@ -198,7 +205,8 @@ static struct DecodeJson Parse(struct lua_State *L, const char *p, return (struct DecodeJson){1, p}; case '1' ... '9': // integer - if (context & (COLON | COMMA | KEY)) goto OnColonCommaKey; + if (context & (COLON | COMMA | KEY)) + goto OnColonCommaKey; for (x = (c - '0') * d; p < e; ++p) { c = *p & 255; if (isdigit(c)) { @@ -228,7 +236,8 @@ static struct DecodeJson Parse(struct lua_State *L, const char *p, return (struct DecodeJson){1, a + c}; case '[': // Array - if (context & (COLON | COMMA | KEY)) goto OnColonCommaKey; + if (context & (COLON | COMMA | KEY)) + goto OnColonCommaKey; lua_newtable(L); // +1 for (context = ARRAY, i = 0;;) { r = Parse(L, p, e, context, depth - 1); // +2 @@ -265,7 +274,8 @@ static struct DecodeJson Parse(struct lua_State *L, const char *p, } case '{': // Object - if (context & (COLON | COMMA | KEY)) goto OnColonCommaKey; + if (context & (COLON | COMMA | KEY)) + goto OnColonCommaKey; lua_newtable(L); // +1 context = KEY | OBJECT; for (;;) { @@ -293,7 +303,8 @@ static struct DecodeJson Parse(struct lua_State *L, const char *p, } case '"': // string - if (context & (COLON | COMMA)) goto OnColonComma; + if (context & (COLON | COMMA)) + goto OnColonComma; luaL_buffinit(L, &b); for (;;) { if (UNLIKELY(p >= e)) { @@ -586,7 +597,8 @@ static struct DecodeJson Parse(struct lua_State *L, const char *p, * @return r.p is string describing error if `rc < 0` */ struct DecodeJson DecodeJson(struct lua_State *L, const char *p, size_t n) { - if (n == -1) n = p ? strlen(p) : 0; + if (n == -1) + n = p ? strlen(p) : 0; if (lua_checkstack(L, DEPTH * 3 + LUA_MINSTACK)) { return Parse(L, p, p + n, 0, DEPTH); } else { diff --git a/tool/net/lmaxmind.c b/tool/net/lmaxmind.c index 2200bba93..b52df8b11 100644 --- a/tool/net/lmaxmind.c +++ b/tool/net/lmaxmind.c @@ -203,7 +203,8 @@ static int LuaMaxmindResultGet(lua_State *L) { ep = &(*ur)->mmlr.entry; } else { path = xcalloc(n + 1, sizeof(const char *)); - for (i = 0; i < n; ++i) path[i] = lua_tostring(L, 2 + i); + for (i = 0; i < n; ++i) + path[i] = lua_tostring(L, 2 + i); err = MMDB_aget_value(&(*ur)->mmlr.entry, &edata, path); free(path); if (err) { @@ -223,7 +224,8 @@ static int LuaMaxmindResultGet(lua_State *L) { ep = &entry; } err = MMDB_get_entry_data_list(ep, &dl); - if (err) LuaThrowMaxmindIpError(L, "getlist", (*ur)->ip, err); + if (err) + LuaThrowMaxmindIpError(L, "getlist", (*ur)->ip, err); LuaMaxmindDump(L, dl); MMDB_free_entry_data_list(dl); return 1; diff --git a/tool/net/lpath.c b/tool/net/lpath.c index 81eba4d73..fd146f2f6 100644 --- a/tool/net/lpath.c +++ b/tool/net/lpath.c @@ -32,9 +32,11 @@ static int LuaPathBasename(lua_State *L) { size_t i, n; const char *p; if ((p = luaL_optlstring(L, 1, 0, &n)) && n) { - while (n > 1 && p[n - 1] == '/') --n; + while (n > 1 && p[n - 1] == '/') + --n; i = n - 1; - while (i && p[i - 1] != '/') --i; + while (i && p[i - 1] != '/') + --i; lua_pushlstring(L, p + i, n - i); } else { lua_pushlstring(L, ".", 1); @@ -49,13 +51,16 @@ static int LuaPathDirname(lua_State *L) { const char *p; if ((p = luaL_optlstring(L, 1, 0, &n)) && n--) { for (; p[n] == '/'; n--) { - if (!n) goto ReturnSlash; + if (!n) + goto ReturnSlash; } for (; p[n] != '/'; n--) { - if (!n) goto ReturnDot; + if (!n) + goto ReturnDot; } for (; p[n] == '/'; n--) { - if (!n) goto ReturnSlash; + if (!n) + goto ReturnSlash; } lua_pushlstring(L, p, n + 1); return 1; @@ -82,7 +87,8 @@ static int LuaPathJoin(lua_State *L) { gotstr = false; needslash = false; for (i = 1; i <= n; ++i) { - if (lua_isnoneornil(L, i)) continue; + if (lua_isnoneornil(L, i)) + continue; gotstr = true; c = luaL_checklstring(L, i, &z); if (z) { diff --git a/tool/net/redbean.c b/tool/net/redbean.c index 144e0dcbd..fbfb8d12b 100644 --- a/tool/net/redbean.c +++ b/tool/net/redbean.c @@ -644,11 +644,14 @@ static bool ShouldAvoidGzip(void) { static char *MergePaths(const char *p, size_t n, const char *q, size_t m, size_t *z) { char *r; - if (n && p[n - 1] == '/') --n; - if (m && q[0] == '/') ++q, --m; + if (n && p[n - 1] == '/') + --n; + if (m && q[0] == '/') + ++q, --m; r = xmalloc(n + 1 + m + 1); mempcpy(mempcpy(mempcpy(mempcpy(r, p, n), "/", 1), q, m), "", 1); - if (z) *z = n + 1 + m; + if (z) + *z = n + 1 + m; return r; } @@ -698,7 +701,8 @@ static void AppendCert(mbedtls_x509_crt *cert, mbedtls_pk_context *key) { static void InternCertificate(mbedtls_x509_crt *cert, mbedtls_x509_crt *prev) { int r; size_t i; - if (cert->next) InternCertificate(cert->next, cert); + if (cert->next) + InternCertificate(cert->next, cert); if (prev) { if (mbedtls_x509_crt_check_parent(prev, cert, 1)) { DEBUGF("(ssl) unbundling %`'s from %`'s", @@ -728,18 +732,22 @@ static void InternCertificate(mbedtls_x509_crt *cert, mbedtls_x509_crt *prev) { LogCertificate("loaded certificate", cert); if (!cert->next && !IsSelfSigned(cert) && cert->max_pathlen) { for (i = 0; i < certs.n; ++i) { - if (!certs.p[i].cert) continue; + if (!certs.p[i].cert) + continue; if (mbedtls_pk_can_do(&cert->pk, certs.p[i].cert->sig_pk) && !mbedtls_x509_crt_check_parent(cert, certs.p[i].cert, 1) && !IsSelfSigned(certs.p[i].cert)) { - if (ChainCertificate(cert, certs.p[i].cert)) break; + if (ChainCertificate(cert, certs.p[i].cert)) + break; } } } if (!IsSelfSigned(cert)) { for (i = 0; i < certs.n; ++i) { - if (!certs.p[i].cert) continue; - if (certs.p[i].cert->next) continue; + if (!certs.p[i].cert) + continue; + if (certs.p[i].cert->next) + continue; if (certs.p[i].cert->max_pathlen && mbedtls_pk_can_do(&certs.p[i].cert->pk, cert->sig_pk) && !mbedtls_x509_crt_check_parent(certs.p[i].cert, cert, 1)) { @@ -782,7 +790,8 @@ static void ProgramPrivateKey(const char *p, size_t n) { rc = mbedtls_pk_parse_key(key, waqapi, n + 1, 0, 0); mbedtls_platform_zeroize(waqapi, n); free(waqapi); - if (rc != 0) FATALF("(ssl) error: load key (grep -0x%04x)", -rc); + if (rc != 0) + FATALF("(ssl) error: load key (grep -0x%04x)", -rc); for (i = 0; i < certs.n; ++i) { if (certs.p[i].cert && !certs.p[i].key && !mbedtls_pk_check_pair(&certs.p[i].cert->pk, key)) { @@ -811,7 +820,8 @@ static void ProgramPort(long port) { if (!(0 <= port && port <= 65535)) { FATALF("(cfg) error: bad port: %d", port); } - if (port == 443) listeningonport443 = true; + if (port == 443) + listeningonport443 = true; ports.p = realloc(ports.p, ++ports.n * sizeof(*ports.p)); ports.p[ports.n - 1] = port; } @@ -942,13 +952,15 @@ static void DescribeAddress(char buf[40], uint32_t addr, uint16_t port) { static inline int GetServerAddr(uint32_t *ip, uint16_t *port) { *ip = ntohl(serveraddr->sin_addr.s_addr); - if (port) *port = ntohs(serveraddr->sin_port); + if (port) + *port = ntohs(serveraddr->sin_port); return 0; } static inline int GetClientAddr(uint32_t *ip, uint16_t *port) { *ip = ntohl(clientaddr.sin_addr.s_addr); - if (port) *port = ntohs(clientaddr.sin_port); + if (port) + *port = ntohs(clientaddr.sin_port); return 0; } @@ -1038,7 +1050,8 @@ static void ProgramTimeout(long ms) { static void ProgramCache(long x, const char *s) { cacheseconds = x; - if (s) cachedirective = strdup(s); + if (s) + cachedirective = strdup(s); } static void SetDefaults(void) { @@ -1183,9 +1196,11 @@ static void ChangeUser(void) { } static void Daemonize(void) { - if (fork() > 0) exit(0); + if (fork() > 0) + exit(0); setsid(); - if (fork() > 0) _exit(0); + if (fork() > 0) + _exit(0); umask(0); } @@ -1209,7 +1224,8 @@ static void LuaEvalCode(const char *code) { // handle `-F PATH` arg static void LuaEvalFile(const char *path) { char *f = gc(xslurp(path, 0)); - if (!f) FATALF("(cfg) error: failed to read file %`'s", path); + if (!f) + FATALF("(cfg) error: failed to read file %`'s", path); LuaEvalCode(f); } @@ -1465,8 +1481,10 @@ static ssize_t WritevAll(int fd, struct iovec *iov, int iovlen) { total = 0; do { if (i) { - while (i < iovlen && !iov[i].iov_len) ++i; - if (i == iovlen) break; + while (i < iovlen && !iov[i].iov_len) + ++i; + if (i == iovlen) + break; } if ((rc = writev(fd, iov + i, iovlen - i)) != -1) { wrote = rc; @@ -1501,7 +1519,8 @@ static int TlsFlush(struct TlsBio *bio, const unsigned char *buf, size_t len) { v[1].iov_base = (void *)buf; v[1].iov_len = len; if (WritevAll(bio->fd, v, 2) != -1) { - if (bio->c > 0) bio->c = 0; + if (bio->c > 0) + bio->c = 0; } else if (errno == EINTR) { errno = 0; return MBEDTLS_ERR_NET_CONN_RESET; @@ -1526,7 +1545,8 @@ static int TlsSend(void *ctx, const unsigned char *buf, size_t len) { bio->c += len; return len; } - if ((rc = TlsFlush(bio, buf, len)) < 0) return rc; + if ((rc = TlsFlush(bio, buf, len)) < 0) + return rc; return len; } @@ -1534,11 +1554,13 @@ static int TlsRecvImpl(void *ctx, unsigned char *p, size_t n, uint32_t o) { int r; struct iovec v[2]; struct TlsBio *bio = ctx; - if ((r = TlsFlush(bio, 0, 0)) < 0) return r; + if ((r = TlsFlush(bio, 0, 0)) < 0) + return r; if (bio->a < bio->b) { r = MIN(n, bio->b - bio->a); memcpy(p, bio->t + bio->a, r); - if ((bio->a += r) == bio->b) bio->a = bio->b = 0; + if ((bio->a += r) == bio->b) + bio->a = bio->b = 0; return r; } v[0].iov_base = p; @@ -1559,7 +1581,8 @@ static int TlsRecvImpl(void *ctx, unsigned char *p, size_t n, uint32_t o) { return MBEDTLS_ERR_NET_RECV_FAILED; } } - if (r > n) bio->b = r - n; + if (r > n) + bio->b = r - n; return MIN(n, r); } @@ -1655,11 +1678,15 @@ static void NotifyClose(void) { static void WipeSigningKeys(void) { size_t i; - if (uniprocess) return; + if (uniprocess) + return; for (i = 0; i < certs.n; ++i) { - if (!certs.p[i].key) continue; - if (!certs.p[i].cert) continue; - if (!certs.p[i].cert->ca_istrue) continue; + if (!certs.p[i].key) + continue; + if (!certs.p[i].cert) + continue; + if (!certs.p[i].cert->ca_istrue) + continue; mbedtls_pk_free(certs.p[i].key); Free(&certs.p[i].key); } @@ -1695,7 +1722,8 @@ static void CertsDestroy(void) { } static void WipeServingKeys(void) { - if (uniprocess) return; + if (uniprocess) + return; mbedtls_ssl_ticket_free(&ssltick); mbedtls_ssl_key_cert_free(conf.key_cert), conf.key_cert = 0; CertsDestroy(); @@ -1897,13 +1925,15 @@ static void ConfigureCertificate(mbedtls_x509write_cert *cw, struct Cert *ca, // for (int i = 0; i < ips.n; ++i) { uint32_t ip = ips.p[i]; - if (IsLoopbackIp(ip)) continue; + if (IsLoopbackIp(ip)) + continue; char rname[NI_MAXHOST]; struct sockaddr_in addr4 = {AF_INET, 0, {htonl(ip)}}; if (getnameinfo((struct sockaddr *)&addr4, sizeof(addr4), rname, sizeof(rname), 0, 0, NI_NAMEREQD) == 0) { char *s = gc(strdup(rname)); - if (!name) name = s; + if (!name) + name = s; bool isduplicate = false; for (int j = 0; j < nsan; ++j) { if (san[j].tag == MBEDTLS_X509_SAN_DNS_NAME && @@ -1925,7 +1955,8 @@ static void ConfigureCertificate(mbedtls_x509write_cert *cw, struct Cert *ca, // add san entry to cert for each ip address owned by system for (int i = 0; i < ips.n; ++i) { uint32_t ip = ips.p[i]; - if (IsLoopbackIp(ip)) continue; + if (IsLoopbackIp(ip)) + continue; san = realloc(san, ++nsan * sizeof(*san)); san[nsan - 1].tag = MBEDTLS_X509_SAN_IP_ADDRESS; san[nsan - 1].ip4 = ip; @@ -1974,9 +2005,12 @@ static void ConfigureCertificate(mbedtls_x509write_cert *cw, struct Cert *ca, static struct Cert GetKeySigningKey(void) { size_t i; for (i = 0; i < certs.n; ++i) { - if (!certs.p[i].key) continue; - if (!certs.p[i].cert) continue; - if (!certs.p[i].cert->ca_istrue) continue; + if (!certs.p[i].key) + continue; + if (!certs.p[i].cert) + continue; + if (!certs.p[i].cert->ca_istrue) + continue; if (mbedtls_x509_crt_check_key_usage(certs.p[i].cert, MBEDTLS_X509_KU_KEY_CERT_SIGN)) { continue; @@ -2059,7 +2093,8 @@ static void LoadCertificates(void) { } #ifdef MBEDTLS_ECP_C ecp = GenerateEcpCertificate(ksk.key ? &ksk : 0); - if (!havecert) UseCertificate(&conf, &ecp, "server"); + if (!havecert) + UseCertificate(&conf, &ecp, "server"); if (!haveclientcert && ksk.key) { UseCertificate(&confcli, &ecp, "client"); } @@ -2068,7 +2103,8 @@ static void LoadCertificates(void) { #ifdef MBEDTLS_RSA_C if (!norsagen) { rsa = GenerateRsaCertificate(ksk.key ? &ksk : 0); - if (!havecert) UseCertificate(&conf, &rsa, "server"); + if (!havecert) + UseCertificate(&conf, &rsa, "server"); if (!haveclientcert && ksk.key) { UseCertificate(&confcli, &rsa, "client"); } @@ -2237,11 +2273,13 @@ static bool OpenZip(bool force) { static struct Asset *GetAssetZip(const char *path, size_t pathlen) { uint32_t i, step, hash; - if (pathlen > 1 && path[0] == '/') ++path, --pathlen; + if (pathlen > 1 && path[0] == '/') + ++path, --pathlen; hash = Hash(path, pathlen); for (step = 0;; ++step) { i = (hash + ((step * (step + 1)) >> 1)) & (assets.n - 1); - if (!assets.p[i].hash) return NULL; + if (!assets.p[i].hash) + return NULL; if (hash == assets.p[i].hash && pathlen == ZIP_CFILE_NAMESIZE(zmap + assets.p[i].cf) && memcmp(path, ZIP_CFILE_NAME(zmap + assets.p[i].cf), pathlen) == 0) { @@ -2288,7 +2326,8 @@ static struct Asset *GetAsset(const char *path, size_t pathlen) { } static char *AppendHeader(char *p, const char *k, const char *v) { - if (!v) return p; + if (!v) + return p; return AppendCrlf(stpcpy(stpcpy(stpcpy(p, k), ": "), v)); } @@ -2316,7 +2355,8 @@ static char *AppendExpires(char *p, int64_t t) { } static char *AppendCache(char *p, int64_t seconds, char *directive) { - if (seconds < 0) return p; + if (seconds < 0) + return p; p = stpcpy(p, "Cache-Control: max-age="); p = FormatUint64(p, seconds); if (!seconds) { @@ -2392,7 +2432,8 @@ static void *LoadAsset(struct Asset *a, size_t *out_size) { } if (!a->file) { size = GetZipLfileUncompressedSize(zmap + a->lf); - if (size == SIZE_MAX || !(data = malloc(size + 1))) return NULL; + if (size == SIZE_MAX || !(data = malloc(size + 1))) + return NULL; if (IsCompressed(a)) { if (!Inflate(data, size, ZIP_LFILE_CONTENT(zmap + a->lf), GetZipCfileCompressedSize(zmap + a->cf))) { @@ -2407,7 +2448,8 @@ static void *LoadAsset(struct Asset *a, size_t *out_size) { return NULL; } data[size] = '\0'; - if (out_size) *out_size = size; + if (out_size) + *out_size = size; return data; } else { LockInc(&shared->c.slurps); @@ -2622,7 +2664,8 @@ static ssize_t YieldGenerator(struct iovec v[3]) { int nresults, status; if (cpm.isyielding > 1) { do { - if (!YL || lua_status(YL) != LUA_YIELD) return 0; // done yielding + if (!YL || lua_status(YL) != LUA_YIELD) + return 0; // done yielding cpm.contentlength = 0; status = lua_resume(YL, NULL, 0, &nresults); if (status != LUA_OK && status != LUA_YIELD) { @@ -2631,7 +2674,8 @@ static ssize_t YieldGenerator(struct iovec v[3]) { return -1; } lua_pop(YL, nresults); - if (!cpm.contentlength) UseOutput(); + if (!cpm.contentlength) + UseOutput(); // continue yielding if nothing to return to keep generator running } while (!cpm.contentlength); } @@ -2667,7 +2711,8 @@ static int LuaCallWithYield(lua_State *L) { CHECK_GT(lua_gettop(L), 0); // make sure that coroutine is anchored YL = co; cpm.generator = YieldGenerator; - if (!cpm.isyielding) cpm.isyielding = 1; + if (!cpm.isyielding) + cpm.isyielding = 1; status = LUA_OK; } return status; @@ -2770,7 +2815,8 @@ static ssize_t InflateGenerator(struct iovec v[3]) { dg.s.next_out = dg.b; dg.s.avail_out = dg.z; rc = inflate(&dg.s, Z_NO_FLUSH); - if (rc != Z_OK && rc != Z_STREAM_END) DIEF("(zip) inflate()→%d", rc); + if (rc != Z_OK && rc != Z_STREAM_END) + DIEF("(zip) inflate()→%d", rc); no = dg.z - dg.s.avail_out; if (no) { v[i].iov_base = dg.b; @@ -2877,7 +2923,8 @@ static char *GetAssetPath(uint8_t *zcf, size_t *out_size) { p2[0] = '/'; memcpy(p2 + 1, p1, n1); p2[1 + n1] = '\0'; - if (out_size) *out_size = 1 + n1; + if (out_size) + *out_size = 1 + n1; return p2; } @@ -2928,8 +2975,10 @@ static void LaunchBrowser(const char *path) { port = ntohs(servers.p[0].addr.sin_port); } // assign a loopback address if no server or unknown server address - if (!servers.n || !addr.s_addr) addr.s_addr = htonl(INADDR_LOOPBACK); - if (*path != '/') path = gc(xasprintf("/%s", path)); + if (!servers.n || !addr.s_addr) + addr.s_addr = htonl(INADDR_LOOPBACK); + if (*path != '/') + path = gc(xasprintf("/%s", path)); launch_browser(gc(xasprintf("http://%s:%d%s", inet_ntoa(addr), port, path))); } @@ -3102,11 +3151,13 @@ static const char *MergeNames(const char *a, const char *b) { } static void AppendLong1(const char *a, long x) { - if (x) appendf(&cpm.outbuf, "%s: %ld\r\n", a, x); + if (x) + appendf(&cpm.outbuf, "%s: %ld\r\n", a, x); } static void AppendLong2(const char *a, const char *b, long x) { - if (x) appendf(&cpm.outbuf, "%s.%s: %ld\r\n", a, b, x); + if (x) + appendf(&cpm.outbuf, "%s.%s: %ld\r\n", a, b, x); } static void AppendTimeval(const char *a, struct timeval *tv) { @@ -3282,7 +3333,8 @@ static char *HandleRedirect(struct Redirect *r) { } else { LockInc(&shared->c.redirects); code = r->code; - if (!code) code = 307; + if (!code) + code = 307; DEBUGF("(rsp) %d redirect to %`'s", code, r->location.s); return AppendHeader( SetStatus(code, GetHttpReason(code)), "Location", @@ -3629,8 +3681,10 @@ static void StoreAsset(const char *path, size_t pathlen, const char *data, } INFOF("(srvr) storing asset %`'s", path); disk = gflags = iattrs = 0; - if (isutf8(path, pathlen)) gflags |= kZipGflagUtf8; - if (istext(data, datalen)) iattrs |= kZipIattrText; + if (isutf8(path, pathlen)) + gflags |= kZipGflagUtf8; + if (istext(data, datalen)) + iattrs |= kZipIattrText; crc = crc32_z(0, data, datalen); if (datalen < 100) { method = kZipCompressionNone; @@ -3661,9 +3715,12 @@ static void StoreAsset(const char *path, size_t pathlen, const char *data, OpenZip(false); now = timespec_real(); a = GetAssetZip(path, pathlen); - if (!mode) mode = a ? GetMode(a) : 0644; - if (!(mode & S_IFMT)) mode |= S_IFREG; - if (pathlen > 1 && path[0] == '/') ++path, --pathlen; + if (!mode) + mode = a ? GetMode(a) : 0644; + if (!(mode & S_IFMT)) + mode |= S_IFREG; + if (pathlen > 1 && path[0] == '/') + ++path, --pathlen; dosmode = !(mode & 0200) ? kNtFileAttributeReadonly : 0; ft = (now.tv_sec + MODERNITYSECONDS) * HECTONANOSECONDS; GetDosLocalTime(now.tv_sec, &mtime, &mdate); @@ -3812,12 +3869,14 @@ static void StoreFile(const char *path) { struct stat st; size_t plen, tlen; const char *target = path; - if (startswith(target, "./")) target += 2; + if (startswith(target, "./")) + target += 2; tlen = strlen(target); if (!IsReasonablePath(target, tlen)) FATALF("(cfg) error: can't store %`'s: contains '.' or '..' segments", target); - if (lstat(path, &st) == -1) FATALF("(cfg) error: can't stat %`'s: %m", path); + if (lstat(path, &st) == -1) + FATALF("(cfg) error: can't stat %`'s: %m", path); if (!(p = xslurp(path, &plen))) FATALF("(cfg) error: can't read %`'s: %m", path); StoreAsset(target, tlen, p, plen, st.st_mode & 0777); @@ -3831,10 +3890,13 @@ static void StorePath(const char *dirpath) { if (!isdirectory(dirpath) && !endswith(dirpath, "/")) { return StoreFile(dirpath); } - if (!(d = opendir(dirpath))) FATALF("(cfg) error: can't open %`'s", dirpath); + if (!(d = opendir(dirpath))) + FATALF("(cfg) error: can't open %`'s", dirpath); while ((e = readdir(d))) { - if (strcmp(e->d_name, ".") == 0) continue; - if (strcmp(e->d_name, "..") == 0) continue; + if (strcmp(e->d_name, ".") == 0) + continue; + if (strcmp(e->d_name, "..") == 0) + continue; path = gc(xjoinpaths(dirpath, e->d_name)); if (e->d_type == DT_DIR) { StorePath(path); @@ -3861,7 +3923,8 @@ static int LuaStoreAsset(lua_State *L) { static void ReseedRng(mbedtls_ctr_drbg_context *r, const char *s) { #ifndef UNSECURE - if (unsecure) return; + if (unsecure) + return; CHECK_EQ(0, mbedtls_ctr_drbg_reseed(r, (void *)s, strlen(s))); #endif } @@ -3869,8 +3932,10 @@ static void ReseedRng(mbedtls_ctr_drbg_context *r, const char *s) { static void LogMessage(const char *d, const char *s, size_t n) { size_t n2, n3; char *s2, *s3; - if (!LOGGABLE(kLogInfo)) return; - while (n && (s[n - 1] == '\r' || s[n - 1] == '\n')) --n; + if (!LOGGABLE(kLogInfo)) + return; + while (n && (s[n - 1] == '\r' || s[n - 1] == '\n')) + --n; if ((s2 = DecodeLatin1(s, n, &n2))) { if ((s3 = IndentLines(s2, n2, &n3, 1))) { INFOF("(stat) %s %,ld byte message\r\n%.*s", d, n, n3, s3); @@ -3883,9 +3948,12 @@ static void LogMessage(const char *d, const char *s, size_t n) { static void LogBody(const char *d, const char *s, size_t n) { char *s2, *s3; size_t n2, n3; - if (!n) return; - if (!LOGGABLE(kLogInfo)) return; - while (n && (s[n - 1] == '\r' || s[n - 1] == '\n')) --n; + if (!n) + return; + if (!LOGGABLE(kLogInfo)) + return; + while (n && (s[n - 1] == '\r' || s[n - 1] == '\n')) + --n; if ((s2 = VisualizeControlCodes(s, n, &n2))) { if ((s3 = IndentLines(s2, n2, &n3, 1))) { INFOF("(stat) %s %,ld byte payload\r\n%.*s", d, n, n3, s3); @@ -4107,7 +4175,8 @@ static int LuaGetUser(lua_State *L) { if (url.user.p) { LuaPushUrlView(L, &url.user); } else if ((p = gc(GetBasicAuthorization(&n)))) { - if (!(q = memchr(p, ':', n))) q = p + n; + if (!(q = memchr(p, ':', n))) + q = p + n; lua_pushlstring(L, p, q - p); } else { lua_pushnil(L); @@ -4148,8 +4217,10 @@ static int LuaGetHost(lua_State *L) { static int LuaGetPort(lua_State *L) { int i, x = 0; OnlyCallDuringRequest(L, "GetPort"); - for (i = 0; i < url.port.n; ++i) x = url.port.p[i] - '0' + x * 10; - if (!x) x = ntohs(serveraddr->sin_port); + for (i = 0; i < url.port.n; ++i) + x = url.port.p[i] - '0' + x * 10; + if (!x) + x = ntohs(serveraddr->sin_port); lua_pushinteger(L, x); return 1; } @@ -4219,7 +4290,8 @@ static int LuaSetHeader(lua_State *L) { OnlyCallDuringRequest(L, "SetHeader"); key = luaL_checklstring(L, 1, &keylen); val = luaL_optlstring(L, 2, 0, &vallen); - if (!val) return 0; + if (!val) + return 0; if ((h = GetHttpHeader(key, keylen)) == -1) { if (!IsValidHttpToken(key, keylen)) { luaL_argerror(L, 1, "invalid"); @@ -4283,7 +4355,8 @@ static int LuaGetCookie(lua_State *L) { } else { lua_pushnil(L); } - if (cookie) free(cookie); + if (cookie) + free(cookie); return 1; } @@ -4503,7 +4576,8 @@ static int LuaProgramUniprocess(lua_State *L) { return luaL_argerror(L, 1, "invalid uniprocess mode; boolean expected"); } lua_pushboolean(L, uniprocess); - if (lua_isboolean(L, 1)) uniprocess = lua_toboolean(L, 1); + if (lua_isboolean(L, 1)) + uniprocess = lua_toboolean(L, 1); return 1; } @@ -4525,7 +4599,8 @@ static int LuaProgramMaxWorkers(lua_State *L) { return luaL_argerror(L, 1, "invalid number of workers; integer expected"); } lua_pushinteger(L, maxworkers); - if (lua_isinteger(L, 1)) maxworkers = lua_tointeger(L, 1); + if (lua_isinteger(L, 1)) + maxworkers = lua_tointeger(L, 1); maxworkers = MAX(maxworkers, 1); return 1; } @@ -4803,7 +4878,8 @@ static int LuaIsAssetCompressed(lua_State *L) { static bool Blackhole(uint32_t ip) { char buf[4]; - if (blackhole.fd <= 0) return false; + if (blackhole.fd <= 0) + return false; WRITE32BE(buf, ip); if (sendto(blackhole.fd, &buf, 4, 0, (struct sockaddr *)&blackhole.addr, sizeof(blackhole.addr)) != -1) { @@ -4927,8 +5003,10 @@ static int LuaProgramTokenBucket(lua_State *L) { reject, // ignore, // ban); - if (ignore == -1) ignore = -128; - if (ban == -1) ban = -128; + if (ignore == -1) + ignore = -128; + if (ban == -1) + ban = -128; if (ban >= 0 && (IsLinux() || IsBsd())) { uint32_t testip = 0; blackhole.addr.sun_family = AF_UNIX; @@ -4955,14 +5033,16 @@ static int LuaProgramTokenBucket(lua_State *L) { tokenbucket.replenish = timespec_fromnanos(1 / replenish * 1e9); int pid = fork(); npassert(pid != -1); - if (!pid) Replenisher(); + if (!pid) + Replenisher(); ++shared->workers; return 0; } static const char *GetContentTypeExt(const char *path, size_t n) { const char *r = NULL, *e; - if ((r = FindContentType(path, n))) return r; + if ((r = FindContentType(path, n))) + return r; #ifndef STATIC int top; lua_State *L = GL; @@ -5053,7 +5133,8 @@ static bool LuaRunAsset(const char *path, bool mandatory) { if (status != LUA_OK || LuaCallWithTrace(L, 0, 0, NULL) != LUA_OK) { LogLuaError("lua code", lua_tostring(L, -1)); lua_pop(L, 1); // pop error - if (mandatory) exit(1); + if (mandatory) + exit(1); } } } @@ -5416,7 +5497,8 @@ static void LuaPrint(lua_State *L) { n = lua_gettop(L); if (n > 0) { for (i = 1; i <= n; i++) { - if (i > 1) appendw(&b, '\t'); + if (i > 1) + appendw(&b, '\t'); struct EncoderConfig conf = { .maxdepth = 64, .sorted = true, @@ -5450,12 +5532,14 @@ static int LuaInterpreter(lua_State *L) { const char *script; if (optind < __argc) { script = __argv[optind]; - if (!strcmp(script, "-")) script = 0; + if (!strcmp(script, "-")) + script = 0; if ((status = luaL_loadfile(L, script)) == LUA_OK) { lua_getglobal(L, "arg"); n = luaL_len(L, -1); luaL_checkstack(L, n + 3, "too many script args"); - for (i = 1; i <= n; i++) lua_rawgeti(L, -i, i); + for (i = 1; i <= n; i++) + lua_rawgeti(L, -i, i); lua_remove(L, -i); // remove arg table from stack TRACE_BEGIN; status = lua_runchunk(L, n, LUA_MULTRET); @@ -5469,7 +5553,8 @@ static int LuaInterpreter(lua_State *L) { EnableRawMode(); for (;;) { status = lua_loadline(L); - if (status == -1) break; // eof + if (status == -1) + break; // eof if (status == -2) { if (errno == EINTR) { if ((sig = linenoiseGetInterrupt())) { @@ -5579,10 +5664,14 @@ static void LuaOnServerReload(bool reindex) { } static const char *DescribeClose(void) { - if (killed) return "killed"; - if (meltdown) return "meltdown"; - if (terminated) return "terminated"; - if (connectionclose) return "connection closed"; + if (killed) + return "killed"; + if (meltdown) + return "meltdown"; + if (terminated) + return "terminated"; + if (connectionclose) + return "connection closed"; return "destroyed"; } @@ -5859,7 +5948,8 @@ static char *ReadMore(void) { ssize_t rc; LockInc(&shared->c.frags); if ((rc = reader(client, inbuf.p + amtread, inbuf.n - amtread)) != -1) { - if (!(got = rc)) return HandlePayloadDisconnect(); + if (!(got = rc)) + return HandlePayloadDisconnect(); amtread += got; } else if (errno == EINTR) { LockInc(&shared->c.readinterrupts); @@ -5877,10 +5967,12 @@ static char *ReadMore(void) { static char *SynchronizeLength(void) { char *p; if (hdrsize + payloadlength > amtread) { - if (hdrsize + payloadlength > inbuf.n) return HandleHugePayload(); + if (hdrsize + payloadlength > inbuf.n) + return HandleHugePayload(); SendContinueIfNeeded(); while (amtread < hdrsize + payloadlength) { - if ((p = ReadMore())) return p; + if ((p = ReadMore())) + return p; } } cpm.msgsize = hdrsize + payloadlength; @@ -5894,9 +5986,11 @@ static char *SynchronizeChunked(void) { SendContinueIfNeeded(); while (!(transferlength = Unchunk(&u, inbuf.p + hdrsize, amtread - hdrsize, &payloadlength))) { - if ((p = ReadMore())) return p; + if ((p = ReadMore())) + return p; } - if (transferlength == -1) return HandleHugePayload(); + if (transferlength == -1) + return HandleHugePayload(); cpm.msgsize = hdrsize + transferlength; return NULL; } @@ -5987,8 +6081,10 @@ static char *HandleRequest(void) { } else { return HandleVersionNotSupported(); } - if ((p = SynchronizeStream())) return p; - if (logbodies) LogBody("received", inbuf.p + hdrsize, payloadlength); + if ((p = SynchronizeStream())) + return p; + if (logbodies) + LogBody("received", inbuf.p + hdrsize, payloadlength); if (cpm.msg.version < 11 || HeaderEqualCase(kHttpConnection, "close")) { connectionclose = true; } @@ -6025,7 +6121,8 @@ static char *HandleRequest(void) { } FreeLater(url.params.p); #ifndef STATIC - if (hasonhttprequest) return LuaOnHttpRequest(); + if (hasonhttprequest) + return LuaOnHttpRequest(); #endif return Route(url.host.p, url.host.n, url.path.p, url.path.n); } @@ -6041,7 +6138,8 @@ static char *Route(const char *host, size_t hostlen, const char *path, return p; } if (SlicesEqual(path, pathlen, "/", 1)) { - if ((p = ServeIndex("/", 1))) return p; + if ((p = ServeIndex("/", 1))) + return p; return ServeListing(); } else if ((p = RoutePath(path, pathlen))) { return p; @@ -6090,16 +6188,19 @@ static char *RouteHost(const char *host, size_t hostlen, const char *path, hp = hm <= sizeof(b) ? b : FreeLater(xmalloc(hm)); hp[0] = '/'; mempcpy(mempcpy(hp + 1, host, hostlen), path, pathlen); - if ((p = RoutePath(hp, hn))) return p; + if ((p = RoutePath(hp, hn))) + return p; if (!isdigit(host[0])) { if (hostlen > 4 && READ32LE(host) == ('w' | 'w' << 8 | 'w' << 16 | '.' << 24)) { mempcpy(mempcpy(hp + 1, host + 4, hostlen - 4), path, pathlen); - if ((p = RoutePath(hp, hn - 4))) return p; + if ((p = RoutePath(hp, hn - 4))) + return p; } else { mempcpy(mempcpy(mempcpy(hp + 1, "www.", 4), host, hostlen), path, pathlen); - if ((p = RoutePath(hp, hn + 4))) return p; + if ((p = RoutePath(hp, hn + 4))) + return p; } } } @@ -6123,7 +6224,8 @@ static inline bool IsLua(struct Asset *a) { static char *HandleAsset(struct Asset *a, const char *path, size_t pathlen) { char *p; #ifndef STATIC - if (IsLua(a)) return ServeLua(a, path, pathlen); + if (IsLua(a)) + return ServeLua(a, path, pathlen); #endif if (cpm.msg.method == kHttpGet || cpm.msg.method == kHttpHead) { LockInc(&shared->c.staticrequests); @@ -6150,8 +6252,10 @@ static const char *GetContentType(struct Asset *a, const char *path, size_t n) { } static bool IsNotModified(struct Asset *a) { - if (cpm.msg.version < 10) return false; - if (!HasHeader(kHttpIfModifiedSince)) return false; + if (cpm.msg.version < 10) + return false; + if (!HasHeader(kHttpIfModifiedSince)) + return false; return a->lastmodified <= ParseHttpDateTime(HeaderData(kHttpIfModifiedSince), HeaderLength(kHttpIfModifiedSince)); @@ -6217,8 +6321,10 @@ static char *ServeAsset(struct Asset *a, const char *path, size_t pathlen) { static char *SetStatus(unsigned code, const char *reason) { if (cpm.msg.version == 10) { - if (code == 307) code = 302; - if (code == 308) code = 301; + if (code == 307) + code = 302; + if (code == 308) + code = 301; } cpm.statuscode = code; cpm.hascontenttype = false; @@ -6321,7 +6427,8 @@ static bool StreamResponse(char *p) { iov[3].iov_len = 0; iov[4].iov_base = 0; iov[4].iov_len = 0; - if ((rc = cpm.generator(iov + 2)) <= 0) break; + if ((rc = cpm.generator(iov + 2)) <= 0) + break; if (cpm.msg.version >= 11) { s = chunkbuf; s += uint64toarray_radix16(rc, s); @@ -6329,7 +6436,8 @@ static bool StreamResponse(char *p) { iov[1].iov_base = chunkbuf; iov[1].iov_len = s - chunkbuf; } - if (Send(iov, 6) == -1) break; + if (Send(iov, 6) == -1) + break; iov[0].iov_base = 0; iov[0].iov_len = 0; } @@ -6351,7 +6459,8 @@ static bool HandleMessageActual(void) { char *p; struct timespec now; if ((rc = ParseHttpMessage(&cpm.msg, inbuf.p, amtread)) != -1) { - if (!rc) return false; + if (!rc) + return false; hdrsize = rc; if (logmessages) { LogMessage("received", inbuf.p, hdrsize); @@ -6373,8 +6482,10 @@ static bool HandleMessageActual(void) { } if (cpm.msg.version >= 10) { p = AppendCrlf(stpcpy(stpcpy(p, "Date: "), shared->currentdate)); - if (!cpm.branded) p = stpcpy(p, serverheader); - if (extrahdrs) p = stpcpy(p, extrahdrs); + if (!cpm.branded) + p = stpcpy(p, serverheader); + if (extrahdrs) + p = stpcpy(p, extrahdrs); if (connectionclose) { p = stpcpy(p, "Connection: close\r\n"); } else if (timeout.tv_sec < 0 && cpm.msg.version >= 11) { @@ -6395,7 +6506,8 @@ static bool HandleMessageActual(void) { now = timespec_real(); reqtime = timespec_tomicros(timespec_sub(now, startrequest)); contime = timespec_tomicros(timespec_sub(now, startconnection)); - if (hasonloglatency) LuaOnLogLatency(reqtime, contime); + if (hasonloglatency) + LuaOnLogLatency(reqtime, contime); if (loglatency || LOGGABLE(kLogDebug)) LOGF(kLogDebug, "(stat) %`'.*s latency r: %,ldµs c: %,ldµs", cpm.msg.uri.b - cpm.msg.uri.a, inbuf.p + cpm.msg.uri.a, reqtime, @@ -6422,8 +6534,10 @@ static void InitRequest(void) { } static bool IsSsl(unsigned char c) { - if (c == 22) return true; - if (!(c & 128)) return false; + if (c == 22) + return true; + if (!(c & 128)) + return false; /* RHEL5 sends SSLv2 hello but supports TLS */ DEBUGF("(ssl) %s SSLv2 hello D:", DescribeClient()); return true; @@ -6440,7 +6554,8 @@ static void HandleMessages(void) { for (;;) { if (!cpm.msg.i && amtread) { startrequest = timespec_real(); - if (HandleMessage()) break; + if (HandleMessage()) + break; } if ((rc = reader(client, inbuf.p + amtread, inbuf.n - amtread)) != -1) { startrequest = timespec_real(); @@ -6483,7 +6598,8 @@ static void HandleMessages(void) { errno = 0; } else if (errno == EAGAIN) { LockInc(&shared->c.readtimeouts); - if (amtread) SendTimeout(); + if (amtread) + SendTimeout(); NotifyClose(); LogClose("read timeout"); return; @@ -6646,7 +6762,8 @@ static void *MemoryMonitor(void *arg) { if (tty != -1) { for (gen = 0, mi = 0, b = 0; !terminatemonitor;) { workers = atomic_load_explicit(&shared->workers, memory_order_relaxed); - if (id) id = MAX(1, MIN(id, workers)); + if (id) + id = MAX(1, MIN(id, workers)); if (!id && workers) { usleep(50000); continue; @@ -6931,11 +7048,16 @@ static int HandleConnection(size_t i) { static void MakeExecutableModifiable(void) { #ifdef __x86_64__ int ft; - if (!(SUPPORT_VECTOR & (_HOSTMETAL | _HOSTWINDOWS | _HOSTXNU))) return; - if (IsWindows()) return; // TODO - if (IsOpenbsd()) return; // TODO - if (IsNetbsd()) return; // TODO - if (endswith(zpath, ".dbg")) return; + if (!(SUPPORT_VECTOR & (_HOSTMETAL | _HOSTWINDOWS | _HOSTXNU))) + return; + if (IsWindows()) + return; // TODO + if (IsOpenbsd()) + return; // TODO + if (IsNetbsd()) + return; // TODO + if (endswith(zpath, ".dbg")) + return; close(zfd); ft = ftrace_enabled(0); if ((zfd = __open_executable()) == -1) { @@ -6999,8 +7121,10 @@ static int HandlePoll(int ms) { if (nfds) { // handle pollid/o events for (pollid = 0; pollid < 1 + servers.n; ++pollid) { - if (!polls[pollid].revents) continue; - if (polls[pollid].fd < 0) continue; + if (!polls[pollid].revents) + continue; + if (polls[pollid].fd < 0) + continue; if (polls[pollid].fd) { // handle listen socket lua_repl_lock(); @@ -7011,12 +7135,14 @@ static int HandlePoll(int ms) { rc = HandleConnection(serverid); ishandlingconnection = false; lua_repl_unlock(); - if (rc == -1) return -1; + if (rc == -1) + return -1; #ifndef STATIC } else { // handle standard input rc = HandleReadline(); - if (rc == -1) return rc; + if (rc == -1) + return rc; #endif } } @@ -7024,7 +7150,8 @@ static int HandlePoll(int ms) { } else if (__ttyconf.replmode) { // handle refresh repl line rc = HandleReadline(); - if (rc < 0) return rc; + if (rc < 0) + return rc; #endif } } else { @@ -7094,7 +7221,8 @@ static void Listen(void) { } port = ntohs(servers.p[n].addr.sin_port); ip = ntohl(servers.p[n].addr.sin_addr.s_addr); - if (ip == INADDR_ANY) ip = INADDR_LOOPBACK; + if (ip == INADDR_ANY) + ip = INADDR_LOOPBACK; INFOF("(srvr) listen http://%hhu.%hhu.%hhu.%hhu:%d", ip >> 24, ip >> 16, ip >> 8, ip, port); if (printport && !ports.p[j]) { @@ -7122,7 +7250,8 @@ static void HandleShutdown(void) { CloseServerFds(); INFOF("(srvr) received %s", strsignal(shutdownsig)); if (shutdownsig != SIGINT && shutdownsig != SIGQUIT) { - if (!killed) terminated = false; + if (!killed) + terminated = false; INFOF("(srvr) killing process group"); KillGroup(); } @@ -7193,7 +7322,8 @@ static void SigInit(void) { static void TlsInit(void) { #ifndef UNSECURE int suite; - if (unsecure) return; + if (unsecure) + return; if (suiteb && !mbedtls_aes_uses_hardware()) { WARNF("(srvr) requested suiteb crypto, but hardware aes not present"); @@ -7227,7 +7357,8 @@ static void TlsInit(void) { mbedtls_ssl_ticket_parse, &ssltick); } - if (sslinitialized) return; + if (sslinitialized) + return; sslinitialized = true; LoadCertificates(); @@ -7257,7 +7388,8 @@ static void TlsInit(void) { static void TlsDestroy(void) { #ifndef UNSECURE - if (unsecure) return; + if (unsecure) + return; mbedtls_ssl_free(&ssl); mbedtls_ssl_free(&sslcli); mbedtls_ctr_drbg_free(&rng); @@ -7352,9 +7484,11 @@ static void GetOpts(int argc, char *argv[]) { } } // if storing asset(s) is requested, don't need to continue - if (storeasset) exit(0); + if (storeasset) + exit(0); // we don't want to drop into a repl after using -e in -i mode - if (interpretermode && got_e_arg) exit(0); + if (interpretermode && got_e_arg) + exit(0); } void RedBean(int argc, char *argv[]) { @@ -7362,7 +7496,8 @@ void RedBean(int argc, char *argv[]) { int fd; // don't complain about --assimilate if it's the only parameter, // as it can only get here if it's already native or assimilated - if (argc == 2 && strcmp(argv[1], "--assimilate") == 0) return; + if (argc == 2 && strcmp(argv[1], "--assimilate") == 0) + return; if (IsLinux()) { // disable weird linux capabilities for (int e = errno, i = 0;; ++i) { @@ -7415,7 +7550,8 @@ void RedBean(int argc, char *argv[]) { shared->workers = 1; } if (daemonize) { - if (!logpath) ProgramLogPath("/dev/null"); + if (!logpath) + ProgramLogPath("/dev/null"); dup2(2, 1); } SigInit(); diff --git a/tool/plinko/lib/char.c b/tool/plinko/lib/char.c index 4a1dd48b5..fa746560e 100644 --- a/tool/plinko/lib/char.c +++ b/tool/plinko/lib/char.c @@ -24,9 +24,12 @@ pureconst bool IsHex(int c) { } pureconst int GetDiglet(int c) { - if (IsDigit(c)) return c - L'0'; - if (IsUpper(c)) return c - L'A' + 10; - if (IsLower(c)) return c - L'a' + 10; + if (IsDigit(c)) + return c - L'0'; + if (IsUpper(c)) + return c - L'A' + 10; + if (IsLower(c)) + return c - L'a' + 10; return -1; } diff --git a/tool/plinko/lib/cmp.c b/tool/plinko/lib/cmp.c index 790923521..5de4f466c 100644 --- a/tool/plinko/lib/cmp.c +++ b/tool/plinko/lib/cmp.c @@ -50,20 +50,29 @@ int Cmp(int x, int y) { int c; dword t, u; - if (x == y) return 0; + if (x == y) + return 0; if (x > 1 && y > 1) { - if (LO(Get(x)) < LO(Get(x))) return -1; - if (LO(Get(x)) > LO(Get(x))) return +1; + if (LO(Get(x)) < LO(Get(x))) + return -1; + if (LO(Get(x)) > LO(Get(x))) + return +1; } for (;; x = Cdr(x), y = Cdr(y)) { - if (x == y) return 0; - if (!x) return -1; - if (!y) return +1; + if (x == y) + return 0; + if (!x) + return -1; + if (!y) + return +1; if (x < 0) { - if (y >= 0) return +1; - if ((c = Cmp(Car(x), Car(y)))) return c; + if (y >= 0) + return +1; + if ((c = Cmp(Car(x), Car(y)))) + return c; } else { - if (y < 0) return -1; + if (y < 0) + return -1; for (;;) { t = x != 1 ? Get(x) : MAKE(L'T', TERM); u = y != 1 ? Get(y) : MAKE(L'T', TERM); @@ -72,9 +81,12 @@ int Cmp(int x, int y) { } x = HI(t); y = HI(u); - if (x == y) return 0; - if (x == TERM) return -1; - if (y == TERM) return +1; + if (x == y) + return 0; + if (x == TERM) + return -1; + if (y == TERM) + return +1; } if (Car(x) != Car(y)) { return Car(x) < Car(y) ? -1 : +1; diff --git a/tool/plinko/lib/cons.c b/tool/plinko/lib/cons.c index c42ea3980..6343d8a54 100644 --- a/tool/plinko/lib/cons.c +++ b/tool/plinko/lib/cons.c @@ -38,7 +38,8 @@ int Shadow(int p, int s) { int GetCommonCons(int x, int y) { if (!y) { - if (!x) return -1; + if (!x) + return -1; if (x > 0 && cFrost < -1 && IsUpper(LO(Get(x))) && HI(Get(x)) == TERM) { return kConsAlphabet[LO(Get(x)) - L'A']; } @@ -48,7 +49,8 @@ int GetCommonCons(int x, int y) { int ShareCons(int x, int y) { int i; - if ((i = GetCommonCons(x, y))) return i; + if ((i = GetCommonCons(x, y))) + return i; #if 0 t = MAKE(x, y); for (i = cx, n = MIN(0, i + 64); i < n; ++i) { diff --git a/tool/plinko/lib/countatoms.c b/tool/plinko/lib/countatoms.c index a05232a2e..4eb9132bd 100644 --- a/tool/plinko/lib/countatoms.c +++ b/tool/plinko/lib/countatoms.c @@ -19,7 +19,9 @@ #include "tool/plinko/lib/plinko.h" nosideeffect int CountAtoms(int x, int max, int res) { - if (!x || res >= max) return res; - if (x > 0) return res + 1; + if (!x || res >= max) + return res; + if (x > 0) + return res + 1; return CountAtoms(Cdr(x), max, CountAtoms(Car(x), max, res)); } diff --git a/tool/plinko/lib/define.c b/tool/plinko/lib/define.c index 7a1a0dfd0..837c102a7 100644 --- a/tool/plinko/lib/define.c +++ b/tool/plinko/lib/define.c @@ -36,8 +36,10 @@ int Define(int e, int a) { struct Gc *G; int k, v, x, r, o; DCHECK_EQ(kDefine, Car(e)); - if (Cdr(e) >= 0) Error("bad define: %S", e); - if (Cadr(e) <= 0) Error("scheme define: %S", e); + if (Cdr(e) >= 0) + Error("bad define: %S", e); + if (Cadr(e) <= 0) + Error("scheme define: %S", e); if (Cddr(e) >= 0 || Caddr(e) == kLambda) { /* * compatibility with sectorlisp friendly branch, e.g. diff --git a/tool/plinko/lib/dispatchycombine.c b/tool/plinko/lib/dispatchycombine.c index 4c2bea324..1c63170b2 100644 --- a/tool/plinko/lib/dispatchycombine.c +++ b/tool/plinko/lib/dispatchycombine.c @@ -55,7 +55,8 @@ struct T DispatchYcombine(dword ea, dword tm, dword r, dword p1, dword p2, lambda = recurse(MAKE(Cadr(ea), HI(ea)), p1, p2); closure = recurse(MAKE(Caddr(ycomb), Alist(Car(Cadr(ycomb)), lambda, 0)), 0, 0); - if (Car(lambda) == kClosure) lambda = Car(Cdr(lambda)); + if (Car(lambda) == kClosure) + lambda = Car(Cdr(lambda)); DCHECK_EQ(kClosure, Car(closure)); DCHECK_EQ(kLambda, Car(lambda)); DCHECK_EQ(kLambda, Car(Car(Cdr(closure)))); diff --git a/tool/plinko/lib/error.c b/tool/plinko/lib/error.c index 128122521..9f17201ca 100644 --- a/tool/plinko/lib/error.c +++ b/tool/plinko/lib/error.c @@ -51,7 +51,8 @@ relegated wontreturn void StackOverflow(void) { } relegated wontreturn void React(int e, int x, int k) { - if (!sp || e != LO(GetCurrentFrame())) Push(e); + if (!sp || e != LO(GetCurrentFrame())) + Push(e); Push(x); Raise(k); } diff --git a/tool/plinko/lib/evlis.c b/tool/plinko/lib/evlis.c index 6ec7734af..3c96bb7c0 100644 --- a/tool/plinko/lib/evlis.c +++ b/tool/plinko/lib/evlis.c @@ -20,8 +20,10 @@ #include "tool/plinko/lib/plinko.h" int Evlis(int x, int a, dword p1, dword p2) { - if (!x) return x; - if (x > 0) return FasterRecurse(x, a, p1, p2); + if (!x) + return x; + if (x > 0) + return FasterRecurse(x, a, p1, p2); int y = FasterRecurse(Car(x), a, p1, p2); return Cons(y, Evlis(Cdr(x), a, p1, p2)); } diff --git a/tool/plinko/lib/expand.c b/tool/plinko/lib/expand.c index a698aa5c6..c9916013e 100644 --- a/tool/plinko/lib/expand.c +++ b/tool/plinko/lib/expand.c @@ -26,8 +26,10 @@ int Exlis(int x, int a) { int y; - if (!x) return x; - if (x > 0) return expand(x, a); + if (!x) + return x; + if (x > 0) + return expand(x, a); y = expand(Car(x), a); return Keep(x, Cons(y, Exlis(Cdr(x), a))); } @@ -37,10 +39,13 @@ static int Expander(int e, int a) { for (s = 0;;) { DCHECK_LT(e, TERM); DCHECK_LE(a, 0); - if (e >= 0) return e; + if (e >= 0) + return e; if ((f = Car(e)) > 0) { - if (f == kQuote) return e; - if (f == kClosure) return e; + if (f == kQuote) + return e; + if (f == kClosure) + return e; if (f == kTrace) { START_TRACE; x = Cadr(e); @@ -49,14 +54,17 @@ static int Expander(int e, int a) { END_TRACE; return e; } - if (HasAtom(f, s)) return e; + if (HasAtom(f, s)) + return e; s = Cons(f, s); } e = Exlis(e, a); if (f >= 0) { - if (!(f = Assoc(f, a))) return e; + if (!(f = Assoc(f, a))) + return e; f = Cdr(f); - if (f >= 0) return e; + if (f >= 0) + return e; } if (Car(f) == kClosure) { u = Cddr(f); @@ -64,7 +72,8 @@ static int Expander(int e, int a) { } else { u = a; } - if (Head(f) != kMacro) return e; + if (Head(f) != kMacro) + return e; e = eval(Caddr(f), pairlis(Cadr(f), Cdr(e), u)); } } diff --git a/tool/plinko/lib/gc.c b/tool/plinko/lib/gc.c index 53bb04891..08ef948a8 100644 --- a/tool/plinko/lib/gc.c +++ b/tool/plinko/lib/gc.c @@ -48,7 +48,8 @@ struct Gc *NewGc(int A) { struct Gc *G; DCHECK_LE(B, A); DCHECK_LE(A, 0); - if (B < cHeap) cHeap = B; + if (B < cHeap) + cHeap = B; n = ROUNDUP(A - B, DWBITS) / DWBITS; G = Addr(BANE); bzero(G->M, n * sizeof(G->M[0])); @@ -65,7 +66,8 @@ void Marker(const dword M[], int A, int x) { dword t; do { i = ~(x - A); - if (HasBit(M, i)) return; + if (HasBit(M, i)) + return; SetBit((void *)M, i); if (HI(GetShadow(x)) < A) { Marker(M, A, HI(GetShadow(x))); @@ -118,7 +120,8 @@ int Relocater(const dword M[], const unsigned P[], int A, int x) { void Sweep(struct Gc *G) { dword m; int a, b, d, i, j; - if (G->noop) return; + if (G->noop) + return; i = 0; b = d = G->A; for (; i < G->n; ++i) { @@ -146,7 +149,8 @@ void Sweep(struct Gc *G) { int MarkSweep(int A, int x) { struct Gc *G; - if (x >= A) return cx = A, x; + if (x >= A) + return cx = A, x; G = NewGc(A); Mark(G, x); Census(G); diff --git a/tool/plinko/lib/hasatom.c b/tool/plinko/lib/hasatom.c index cdd776284..c070b8c4e 100644 --- a/tool/plinko/lib/hasatom.c +++ b/tool/plinko/lib/hasatom.c @@ -19,7 +19,9 @@ #include "tool/plinko/lib/plinko.h" nosideeffect bool HasAtom(int v, int x) { - if (!x) return false; - if (x > 0) return v == x; + if (!x) + return false; + if (x > 0) + return v == x; return HasAtom(v, Car(x)) || HasAtom(v, Cdr(x)); } diff --git a/tool/plinko/lib/histo.c b/tool/plinko/lib/histo.c index d8dc55fc6..48d62dcaf 100644 --- a/tool/plinko/lib/histo.c +++ b/tool/plinko/lib/histo.c @@ -27,10 +27,12 @@ void PrintHistogram(int fd, const char *s, const long *h, size_t n) { int j, p, m; char buf[101]; size_t i, logos; - if (!(t = GetLongSum(h, n))) return; + if (!(t = GetLongSum(h, n))) + return; Fprintf(fd, "%s%n", s); for (i = 0; i < n; ++i) { - if (!h[i]) continue; + if (!h[i]) + continue; p = h[i] * 1000000 / t; assert(0 <= p && p <= 1000000); for (j = 0, m = p / 10000; j < m; ++j) { diff --git a/tool/plinko/lib/iscar.c b/tool/plinko/lib/iscar.c index 1de478623..67861e8d1 100644 --- a/tool/plinko/lib/iscar.c +++ b/tool/plinko/lib/iscar.c @@ -28,16 +28,20 @@ */ int IsCar(int x_) { dword w_; - if (x_ >= 0) return 0; + if (x_ >= 0) + return 0; w_ = Get(x_); // (⍅ X) int ax_ = LO(w_); int dx_ = HI(w_); - if (ax_ != kCar) return 0; - if (dx_ >= 0) return 0; + if (ax_ != kCar) + return 0; + if (dx_ >= 0) + return 0; w_ = Get(dx_); // (X) int adx_ = LO(w_); int ddx_ = HI(w_); int X = adx_; - if (ddx_) return 0; + if (ddx_) + return 0; return X; } diff --git a/tool/plinko/lib/iscdr.c b/tool/plinko/lib/iscdr.c index 45f594b32..0b70cf68e 100644 --- a/tool/plinko/lib/iscdr.c +++ b/tool/plinko/lib/iscdr.c @@ -28,16 +28,20 @@ */ int IsCdr(int x_) { dword w_; - if (x_ >= 0) return 0; + if (x_ >= 0) + return 0; w_ = Get(x_); // (⍆ X) int ax_ = LO(w_); int dx_ = HI(w_); - if (ax_ != kCdr) return 0; - if (dx_ >= 0) return 0; + if (ax_ != kCdr) + return 0; + if (dx_ >= 0) + return 0; w_ = Get(dx_); // (X) int adx_ = LO(w_); int ddx_ = HI(w_); int X = adx_; - if (ddx_) return 0; + if (ddx_) + return 0; return X; } diff --git a/tool/plinko/lib/isconstant.c b/tool/plinko/lib/isconstant.c index e1d37a5c4..92fd0fd5f 100644 --- a/tool/plinko/lib/isconstant.c +++ b/tool/plinko/lib/isconstant.c @@ -20,9 +20,13 @@ pureconst bool IsConstant(int e) { unsigned f = LO(GetShadow(e)); - if (f == EncodeDispatchFn(DispatchNil)) return true; - if (f == EncodeDispatchFn(DispatchTrue)) return true; - if (f == EncodeDispatchFn(DispatchPrecious)) return true; - if (f == EncodeDispatchFn(DispatchQuote)) return true; + if (f == EncodeDispatchFn(DispatchNil)) + return true; + if (f == EncodeDispatchFn(DispatchTrue)) + return true; + if (f == EncodeDispatchFn(DispatchPrecious)) + return true; + if (f == EncodeDispatchFn(DispatchQuote)) + return true; return false; } diff --git a/tool/plinko/lib/isdelegate.c b/tool/plinko/lib/isdelegate.c index 06a7ae9c3..241429189 100644 --- a/tool/plinko/lib/isdelegate.c +++ b/tool/plinko/lib/isdelegate.c @@ -30,25 +30,32 @@ */ int IsDelegate(int x_) { dword w_; - if (x_ >= 0) return 0; + if (x_ >= 0) + return 0; w_ = Get(x_); // (λ V (F . V) . Q) int ax_ = LO(w_); int dx_ = HI(w_); - if (ax_ != kLambda) return 0; - if (dx_ >= 0) return 0; + if (ax_ != kLambda) + return 0; + if (dx_ >= 0) + return 0; w_ = Get(dx_); // (V (F . V) . Q) int adx_ = LO(w_); int ddx_ = HI(w_); int V = adx_; - if (V <= 0) return 0; - if (ddx_ >= 0) return 0; + if (V <= 0) + return 0; + if (ddx_ >= 0) + return 0; w_ = Get(ddx_); // ((F . V) . Q) int addx_ = LO(w_); - if (addx_ >= 0) return 0; + if (addx_ >= 0) + return 0; w_ = Get(addx_); // (F . V) int aaddx_ = LO(w_); int daddx_ = HI(w_); int F = aaddx_; - if (daddx_ != V) return 0; + if (daddx_ != V) + return 0; return F; } diff --git a/tool/plinko/lib/isif.c b/tool/plinko/lib/isif.c index e872ff7d7..0b141c68f 100644 --- a/tool/plinko/lib/isif.c +++ b/tool/plinko/lib/isif.c @@ -28,36 +28,46 @@ */ struct qword IsIf(int x_) { dword w_; - if (x_ >= 0) return ZERO4; + if (x_ >= 0) + return ZERO4; w_ = Get(x_); // (ζ (X Y) (Z)) int ax_ = LO(w_); int dx_ = HI(w_); - if (ax_ != kCond) return ZERO4; - if (dx_ >= 0) return ZERO4; + if (ax_ != kCond) + return ZERO4; + if (dx_ >= 0) + return ZERO4; w_ = Get(dx_); // ((X Y) (Z)) int adx_ = LO(w_); int ddx_ = HI(w_); - if (adx_ >= 0) return ZERO4; + if (adx_ >= 0) + return ZERO4; w_ = Get(adx_); // (X Y) int aadx_ = LO(w_); int dadx_ = HI(w_); - if (ddx_ >= 0) return ZERO4; + if (ddx_ >= 0) + return ZERO4; w_ = Get(ddx_); // ((Z)) int addx_ = LO(w_); int dddx_ = HI(w_); int X = aadx_; - if (addx_ >= 0) return ZERO4; + if (addx_ >= 0) + return ZERO4; w_ = Get(addx_); // (Z) int aaddx_ = LO(w_); int daddx_ = HI(w_); - if (dadx_ >= 0) return ZERO4; + if (dadx_ >= 0) + return ZERO4; w_ = Get(dadx_); // (Y) int adadx_ = LO(w_); int ddadx_ = HI(w_); - if (dddx_) return ZERO4; + if (dddx_) + return ZERO4; int Y = adadx_; int Z = aaddx_; - if (ddadx_) return ZERO4; - if (daddx_) return ZERO4; + if (ddadx_) + return ZERO4; + if (daddx_) + return ZERO4; return MAKE4(X, Y, Z, 0); } diff --git a/tool/plinko/lib/isycombinator.c b/tool/plinko/lib/isycombinator.c index 032b8714e..47b1849cb 100644 --- a/tool/plinko/lib/isycombinator.c +++ b/tool/plinko/lib/isycombinator.c @@ -34,138 +34,190 @@ */ bool IsYcombinator(int x_) { dword w_; - if (x_ >= 0) return false; + if (x_ >= 0) + return false; w_ = Get(x_); int ax_ = LO(w_); int dx_ = HI(w_); - if (ax_ != kClosure) return false; - if (dx_ >= 0) return false; + if (ax_ != kClosure) + return false; + if (dx_ >= 0) + return false; w_ = Get(dx_); // ((λ (N) ((λ (W) (W W)) (λ (V) (N (λ M ((V V) . M)))))) . Q) int adx_ = LO(w_); - if (adx_ >= 0) return false; + if (adx_ >= 0) + return false; w_ = Get(adx_); // (λ (N) ((λ (W) (W W)) (λ (V) (N (λ M ((V V) . M)))))) int aadx_ = LO(w_); int dadx_ = HI(w_); - if (aadx_ != kLambda) return false; - if (dadx_ >= 0) return false; + if (aadx_ != kLambda) + return false; + if (dadx_ >= 0) + return false; w_ = Get(dadx_); // ((N) ((λ (W) (W W)) (λ (V) (N (λ M ((V V) . M)))))) int adadx_ = LO(w_); int ddadx_ = HI(w_); - if (adadx_ >= 0) return false; + if (adadx_ >= 0) + return false; w_ = Get(adadx_); // (N) int aadadx_ = LO(w_); int dadadx_ = HI(w_); - if (ddadx_ >= 0) return false; + if (ddadx_ >= 0) + return false; w_ = Get(ddadx_); // (((λ (W) (W W)) (λ (V) (N (λ M ((V V) . M)))))) int addadx_ = LO(w_); int dddadx_ = HI(w_); int N = aadadx_; - if (N <= 0) return false; - if (addadx_ >= 0) return false; + if (N <= 0) + return false; + if (addadx_ >= 0) + return false; w_ = Get(addadx_); // ((λ (W) (W W)) (λ (V) (N (λ M ((V V) . M))))) int aaddadx_ = LO(w_); int daddadx_ = HI(w_); - if (dadadx_) return false; - if (dddadx_) return false; - if (aaddadx_ >= 0) return false; + if (dadadx_) + return false; + if (dddadx_) + return false; + if (aaddadx_ >= 0) + return false; w_ = Get(aaddadx_); // (λ (W) (W W)) int aaaddadx_ = LO(w_); int daaddadx_ = HI(w_); - if (daddadx_ >= 0) return false; + if (daddadx_ >= 0) + return false; w_ = Get(daddadx_); // ((λ (V) (N (λ M ((V V) . M))))) int adaddadx_ = LO(w_); int ddaddadx_ = HI(w_); - if (aaaddadx_ != kLambda) return false; - if (adaddadx_ >= 0) return false; + if (aaaddadx_ != kLambda) + return false; + if (adaddadx_ >= 0) + return false; w_ = Get(adaddadx_); // (λ (V) (N (λ M ((V V) . M)))) int aadaddadx_ = LO(w_); int dadaddadx_ = HI(w_); - if (daaddadx_ >= 0) return false; + if (daaddadx_ >= 0) + return false; w_ = Get(daaddadx_); // ((W) (W W)) int adaaddadx_ = LO(w_); int ddaaddadx_ = HI(w_); - if (ddaddadx_) return false; - if (adaaddadx_ >= 0) return false; + if (ddaddadx_) + return false; + if (adaaddadx_ >= 0) + return false; w_ = Get(adaaddadx_); // (W) int aadaaddadx_ = LO(w_); int dadaaddadx_ = HI(w_); - if (aadaddadx_ != kLambda) return false; - if (ddaaddadx_ >= 0) return false; + if (aadaddadx_ != kLambda) + return false; + if (ddaaddadx_ >= 0) + return false; w_ = Get(ddaaddadx_); // ((W W)) int addaaddadx_ = LO(w_); int dddaaddadx_ = HI(w_); - if (dadaddadx_ >= 0) return false; + if (dadaddadx_ >= 0) + return false; w_ = Get(dadaddadx_); // ((V) (N (λ M ((V V) . M)))) int adadaddadx_ = LO(w_); int ddadaddadx_ = HI(w_); int W = aadaaddadx_; - if (W <= 0) return false; - if (adadaddadx_ >= 0) return false; + if (W <= 0) + return false; + if (adadaddadx_ >= 0) + return false; w_ = Get(adadaddadx_); // (V) int aadadaddadx_ = LO(w_); int dadadaddadx_ = HI(w_); - if (addaaddadx_ >= 0) return false; + if (addaaddadx_ >= 0) + return false; w_ = Get(addaaddadx_); // (W W) int aaddaaddadx_ = LO(w_); int daddaaddadx_ = HI(w_); - if (ddadaddadx_ >= 0) return false; + if (ddadaddadx_ >= 0) + return false; w_ = Get(ddadaddadx_); // ((N (λ M ((V V) . M)))) int addadaddadx_ = LO(w_); int dddadaddadx_ = HI(w_); - if (dadaaddadx_) return false; + if (dadaaddadx_) + return false; int V = aadadaddadx_; - if (V <= 0) return false; - if (dddaaddadx_) return false; - if (addadaddadx_ >= 0) return false; + if (V <= 0) + return false; + if (dddaaddadx_) + return false; + if (addadaddadx_ >= 0) + return false; w_ = Get(addadaddadx_); // (N (λ M ((V V) . M))) int aaddadaddadx_ = LO(w_); int daddadaddadx_ = HI(w_); - if (aaddaaddadx_ != W) return false; - if (dadadaddadx_) return false; - if (daddaaddadx_ >= 0) return false; + if (aaddaaddadx_ != W) + return false; + if (dadadaddadx_) + return false; + if (daddaaddadx_ >= 0) + return false; w_ = Get(daddaaddadx_); // (W) int adaddaaddadx_ = LO(w_); int ddaddaaddadx_ = HI(w_); - if (dddadaddadx_) return false; - if (adaddaaddadx_ != W) return false; - if (aaddadaddadx_ != N) return false; - if (ddaddaaddadx_) return false; - if (daddadaddadx_ >= 0) return false; + if (dddadaddadx_) + return false; + if (adaddaaddadx_ != W) + return false; + if (aaddadaddadx_ != N) + return false; + if (ddaddaaddadx_) + return false; + if (daddadaddadx_ >= 0) + return false; w_ = Get(daddadaddadx_); // ((λ M ((V V) . M))) int adaddadaddadx_ = LO(w_); int ddaddadaddadx_ = HI(w_); - if (adaddadaddadx_ >= 0) return false; + if (adaddadaddadx_ >= 0) + return false; w_ = Get(adaddadaddadx_); // (λ M ((V V) . M)) int aadaddadaddadx_ = LO(w_); int dadaddadaddadx_ = HI(w_); - if (ddaddadaddadx_) return false; - if (aadaddadaddadx_ != kLambda) return false; - if (dadaddadaddadx_ >= 0) return false; + if (ddaddadaddadx_) + return false; + if (aadaddadaddadx_ != kLambda) + return false; + if (dadaddadaddadx_ >= 0) + return false; w_ = Get(dadaddadaddadx_); // (M ((V V) . M)) int adadaddadaddadx_ = LO(w_); int ddadaddadaddadx_ = HI(w_); int M = adadaddadaddadx_; - if (M <= 0) return false; - if (ddadaddadaddadx_ >= 0) return false; + if (M <= 0) + return false; + if (ddadaddadaddadx_ >= 0) + return false; w_ = Get(ddadaddadaddadx_); // (((V V) . M)) int addadaddadaddadx_ = LO(w_); int dddadaddadaddadx_ = HI(w_); - if (addadaddadaddadx_ >= 0) return false; + if (addadaddadaddadx_ >= 0) + return false; w_ = Get(addadaddadaddadx_); // ((V V) . M) int aaddadaddadaddadx_ = LO(w_); int daddadaddadaddadx_ = HI(w_); - if (dddadaddadaddadx_) return false; - if (aaddadaddadaddadx_ >= 0) return false; + if (dddadaddadaddadx_) + return false; + if (aaddadaddadaddadx_ >= 0) + return false; w_ = Get(aaddadaddadaddadx_); // (V V) int aaaddadaddadaddadx_ = LO(w_); int daaddadaddadaddadx_ = HI(w_); - if (daddadaddadaddadx_ != M) return false; - if (aaaddadaddadaddadx_ != V) return false; - if (daaddadaddadaddadx_ >= 0) return false; + if (daddadaddadaddadx_ != M) + return false; + if (aaaddadaddadaddadx_ != V) + return false; + if (daaddadaddadaddadx_ >= 0) + return false; w_ = Get(daaddadaddadaddadx_); // (V) int adaaddadaddadaddadx_ = LO(w_); int ddaaddadaddadaddadx_ = HI(w_); - if (adaaddadaddadaddadx_ != V) return false; - if (ddaaddadaddadaddadx_) return false; + if (adaaddadaddadaddadx_ != V) + return false; + if (ddaaddadaddadaddadx_) + return false; return true; } diff --git a/tool/plinko/lib/makesclosures.c b/tool/plinko/lib/makesclosures.c index 52da8133c..6fd33f0cb 100644 --- a/tool/plinko/lib/makesclosures.c +++ b/tool/plinko/lib/makesclosures.c @@ -21,14 +21,18 @@ bool MakesClosures(int x) { int h; if (x < 0 && (h = Car(x)) != kQuote && h != kClosure) { - if (h == kMacro) return true; - if (h == kLambda) return true; + if (h == kMacro) + return true; + if (h == kLambda) + return true; if (h == kCond) { while ((x = Cdr(x)) < 0) { if ((h = Car(x)) < 0) { - if (MakesClosures(Car(h))) return true; + if (MakesClosures(Car(h))) + return true; if ((h = Cdr(h)) < 0) { - if (MakesClosures(Car(h))) return true; + if (MakesClosures(Car(h))) + return true; } } } diff --git a/tool/plinko/lib/pairlis.c b/tool/plinko/lib/pairlis.c index 3dadd0c97..2384b252f 100644 --- a/tool/plinko/lib/pairlis.c +++ b/tool/plinko/lib/pairlis.c @@ -21,8 +21,10 @@ #include "tool/plinko/lib/plinko.h" int Pairlis(int x, int y, int a) { - if (!x) return a; - if (x > 0) return Alist(x, y, a); + if (!x) + return a; + if (x > 0) + return Alist(x, y, a); if (y <= 0) { a = pairlis(Cdr(x), Cdr(y), a); return Car(x) ? pairlis(Car(x), Car(y), a) : a; diff --git a/tool/plinko/lib/plan.c b/tool/plinko/lib/plan.c index 3c412007e..3a383c1a7 100644 --- a/tool/plinko/lib/plan.c +++ b/tool/plinko/lib/plan.c @@ -28,9 +28,12 @@ nosideeffect int CountSimpleParameters(int x) { int i; for (i = 0; x; ++i, x = Cdr(x)) { - if (x > 0) return -1; // variadic args aren't simple - if (!Car(x)) return -1; // nil parameters aren't simple - if (Car(x) < 0) return -1; // destructured parameters aren't simple + if (x > 0) + return -1; // variadic args aren't simple + if (!Car(x)) + return -1; // nil parameters aren't simple + if (Car(x) < 0) + return -1; // destructured parameters aren't simple } return i; } @@ -38,157 +41,201 @@ nosideeffect int CountSimpleParameters(int x) { nosideeffect int CountSimpleArguments(int x) { int i; for (i = 0; x; ++i, x = Cdr(x)) { - if (x > 0) return -1; // apply isn't simple + if (x > 0) + return -1; // apply isn't simple } return i; } static dword PlanQuote(int e, int a, int s) { - if (Cdr(e) >= 0) React(e, e, kQuote); // one normal parameter required + if (Cdr(e) >= 0) + React(e, e, kQuote); // one normal parameter required return MAKE(DF(DispatchQuote), Cadr(e)); // >1 prms is sectorlisp comment } static dword PlanCar(int e, int a, int s) { - if (!Cdr(e)) return DF(DispatchNil); // (⍅) ⟺ (⍅ ⊥) - if (Cddr(e)) React(e, e, kCar); // too many args - if (!Cadr(e)) return DF(DispatchNil); + if (!Cdr(e)) + return DF(DispatchNil); // (⍅) ⟺ (⍅ ⊥) + if (Cddr(e)) + React(e, e, kCar); // too many args + if (!Cadr(e)) + return DF(DispatchNil); return MAKE(DF(DispatchCar), Cadr(e)); } static dword PlanCdr(int e, int a, int s) { - if (!Cdr(e)) return DF(DispatchNil); // (⍆) ⟺ (⍆ ⊥) - if (Cddr(e)) React(e, e, kCdr); // too many args - if (!ARG1(e)) return DF(DispatchNil); + if (!Cdr(e)) + return DF(DispatchNil); // (⍆) ⟺ (⍆ ⊥) + if (Cddr(e)) + React(e, e, kCdr); // too many args + if (!ARG1(e)) + return DF(DispatchNil); return MAKE(DF(DispatchCdr), Cadr(e)); } static dword PlanAtom(int e, int a, int s) { - if (CountSimpleArguments(Cdr(e)) != 1) React(e, e, kAtom); + if (CountSimpleArguments(Cdr(e)) != 1) + React(e, e, kAtom); return MAKE(DF(DispatchAtom), Cadr(e)); } static dword PlanEq(int e, int a, int s) { int n = CountSimpleArguments(Cdr(e)); - if (n != 2 && n != 1) React(e, e, kAtom); // (≡ 𝑥) is our (null 𝑥) + if (n != 2 && n != 1) + React(e, e, kAtom); // (≡ 𝑥) is our (null 𝑥) return MAKE(DF(DispatchEq), Caddr(e)); } static dword PlanCmp(int e, int a, int s) { - if (CountSimpleArguments(Cdr(e)) != 2) React(e, e, kCmp); + if (CountSimpleArguments(Cdr(e)) != 2) + React(e, e, kCmp); return MAKE(DF(DispatchCmp), Caddr(e)); } static dword PlanOrder(int e, int a, int s) { - if (CountSimpleArguments(Cdr(e)) != 2) React(e, e, kOrder); + if (CountSimpleArguments(Cdr(e)) != 2) + React(e, e, kOrder); return MAKE(DF(DispatchOrder), Caddr(e)); } static dword PlanCons(int e, int a, int s) { int p = CountSimpleArguments(Cdr(e)); - if (p == -1) Error("cons dot arg"); - if (p > 2) Error("too many args"); + if (p == -1) + Error("cons dot arg"); + if (p > 2) + Error("too many args"); return MAKE(DF(DispatchCons), Caddr(e)); } static dword PlanLambda(int e, int a, int s) { - if (CountSimpleArguments(Cdr(e)) == -1) Error("bad lambda: %S", e); + if (CountSimpleArguments(Cdr(e)) == -1) + Error("bad lambda: %S", e); return DF(DispatchLambda); } static dword PlanCond(int e, int a, int s) { int x; - if (!Cdr(e)) return DF(DispatchNil); // (ζ) ⟺ ⊥ + if (!Cdr(e)) + return DF(DispatchNil); // (ζ) ⟺ ⊥ for (x = e; (x = Cdr(x));) { - if (x > 0) React(e, e, kCond); // (ζ . 𝑣) not allowed - if (Car(x) >= 0) React(e, e, kCond); // (ζ 𝑣) not allowed - if (Cdr(Car(x)) > 0) React(e, e, kCond); // (ζ (𝑥 . 𝑣)) not allowed + if (x > 0) + React(e, e, kCond); // (ζ . 𝑣) not allowed + if (Car(x) >= 0) + React(e, e, kCond); // (ζ 𝑣) not allowed + if (Cdr(Car(x)) > 0) + React(e, e, kCond); // (ζ (𝑥 . 𝑣)) not allowed } return MAKE(DF(DispatchCond), Cdr(e)); } static dword PlanProgn(int e, int a, int s) { - if (!Cdr(e)) return DF(DispatchNil); // (progn) ⟺ ⊥ - if (CountSimpleArguments(Cdr(e)) == -1) React(e, e, kProgn); + if (!Cdr(e)) + return DF(DispatchNil); // (progn) ⟺ ⊥ + if (CountSimpleArguments(Cdr(e)) == -1) + React(e, e, kProgn); return MAKE(DF(DispatchProgn), Cdr(e)); } static dword PlanQuiet(int e, int a, int s) { - if (Cdr(e) > 0) React(e, e, kQuiet); // apply not allowed - if (!Cdr(e)) React(e, e, kQuiet); // zero args not allowed - if (Cdr(Cdr(e))) React(e, e, kQuiet); // >1 args not allowed + if (Cdr(e) > 0) + React(e, e, kQuiet); // apply not allowed + if (!Cdr(e)) + React(e, e, kQuiet); // zero args not allowed + if (Cdr(Cdr(e))) + React(e, e, kQuiet); // >1 args not allowed return DF(DispatchQuiet); } static dword PlanTrace(int e, int a, int s) { - if (Cdr(e) > 0) React(e, e, kTrace); // apply not allowed - if (!Cdr(e)) React(e, e, kTrace); // zero args not allowed - if (Cdr(Cdr(e))) React(e, e, kTrace); // >1 args not allowed + if (Cdr(e) > 0) + React(e, e, kTrace); // apply not allowed + if (!Cdr(e)) + React(e, e, kTrace); // zero args not allowed + if (Cdr(Cdr(e))) + React(e, e, kTrace); // >1 args not allowed return DF(DispatchTrace); } static dword PlanFtrace(int e, int a, int s) { - if (Cdr(e) > 0) React(e, e, kFtrace); // apply not allowed - if (!Cdr(e)) React(e, e, kFtrace); // zero args not allowed - if (Cdr(Cdr(e))) React(e, e, kFtrace); // >1 args not allowed + if (Cdr(e) > 0) + React(e, e, kFtrace); // apply not allowed + if (!Cdr(e)) + React(e, e, kFtrace); // zero args not allowed + if (Cdr(Cdr(e))) + React(e, e, kFtrace); // >1 args not allowed return DF(DispatchFtrace); } static dword PlanFunction(int e, int a, int s) { - if (CountSimpleArguments(Cdr(e)) != 1) Raise(kFunction); + if (CountSimpleArguments(Cdr(e)) != 1) + Raise(kFunction); return MAKE(DF(DispatchFunction), Cadr(e)); } static dword PlanBeta(int e, int a, int s) { - if (CountSimpleArguments(Cdr(e)) != 1) Raise(kBeta); + if (CountSimpleArguments(Cdr(e)) != 1) + Raise(kBeta); return MAKE(DF(DispatchBeta), Cadr(e)); } static dword PlanIgnore(int e, int a, int s) { - if (!Cdr(e)) return DF(DispatchIgnore0); - if (Cdr(e) > 0) React(e, e, kIgnore); // apply not allowed - if (!Cdr(e)) React(e, e, kIgnore); // zero args not allowed - if (Cdr(Cdr(e))) React(e, e, kIgnore); // >1 args not allowed + if (!Cdr(e)) + return DF(DispatchIgnore0); + if (Cdr(e) > 0) + React(e, e, kIgnore); // apply not allowed + if (!Cdr(e)) + React(e, e, kIgnore); // zero args not allowed + if (Cdr(Cdr(e))) + React(e, e, kIgnore); // >1 args not allowed return DF(DispatchIgnore1); } static dword PlanExpand(int e, int a, int s) { - if (CountSimpleArguments(Cdr(e)) != 1) React(e, e, kExpand); + if (CountSimpleArguments(Cdr(e)) != 1) + React(e, e, kExpand); return MAKE(DF(DispatchExpand), Cadr(e)); } static dword PlanPrint(int e, int a, int s) { - if (CountSimpleArguments(Cdr(e)) == -1) React(e, e, kPrint); + if (CountSimpleArguments(Cdr(e)) == -1) + React(e, e, kPrint); return DF(DispatchPrint); } static dword PlanGensym(int e, int a, int s) { - if (CountSimpleArguments(Cdr(e))) React(e, e, kGensym); + if (CountSimpleArguments(Cdr(e))) + React(e, e, kGensym); return DF(DispatchGensym); } static dword PlanPprint(int e, int a, int s) { - if (CountSimpleArguments(Cdr(e)) == -1) React(e, e, kPprint); + if (CountSimpleArguments(Cdr(e)) == -1) + React(e, e, kPprint); return DF(DispatchPprint); } static dword PlanPrintheap(int e, int a, int s) { int p = CountSimpleArguments(Cdr(e)); - if (p != 0 && p != 1) React(e, e, kPrintheap); + if (p != 0 && p != 1) + React(e, e, kPrintheap); return DF(DispatchPrintheap); } static dword PlanGc(int e, int a, int s) { - if (CountSimpleArguments(Cdr(e)) != 1) React(e, e, kGc); + if (CountSimpleArguments(Cdr(e)) != 1) + React(e, e, kGc); return MAKE(DF(DispatchGc), Cadr(e)); } static dword PlanPrinc(int e, int a, int s) { - if (CountSimpleArguments(Cdr(e)) == -1) React(e, e, kPrinc); + if (CountSimpleArguments(Cdr(e)) == -1) + React(e, e, kPrinc); return DF(DispatchPrinc); } static dword PlanFlush(int e, int a, int s) { - if (CountSimpleArguments(Cdr(e)) == -1) React(e, e, kFlush); + if (CountSimpleArguments(Cdr(e)) == -1) + React(e, e, kFlush); return DF(DispatchFlush); } @@ -197,12 +244,14 @@ static dword PlanError(int e, int a, int s) { } static dword PlanExit(int e, int a, int s) { - if (Cdr(e)) React(e, e, kExit); + if (Cdr(e)) + React(e, e, kExit); return DF(DispatchExit); } static dword PlanRead(int e, int a, int s) { - if (Cdr(e)) React(e, e, kRead); + if (Cdr(e)) + React(e, e, kRead); return DF(DispatchRead); } @@ -216,16 +265,20 @@ static dword PlanClosure(int e, int a, int s) { static dword PlanLet(int e, int a, int s) { int n; - if ((n = CountSimpleArguments(Cdr(e))) == -1) return DF(DispatchFuncall); - if (CountSimpleArguments(Car(e)) < 3) React(e, e, kLambda); // need (λ 𝑥 𝑦) + if ((n = CountSimpleArguments(Cdr(e))) == -1) + return DF(DispatchFuncall); + if (CountSimpleArguments(Car(e)) < 3) + React(e, e, kLambda); // need (λ 𝑥 𝑦) switch (CountSimpleParameters(Cadr(Car(e)))) { case -1: return DF(DispatchFuncall); case 0: - if (n != 0) Error("let argument count mismatch: %S", e); + if (n != 0) + Error("let argument count mismatch: %S", e); return MAKE(DF(DispatchShortcut), Caddr(Car(e))); // ((λ ⊥ 𝑦)) becomes 𝑦 case 1: - if (n != 1) Error("let argument count mismatch: %S", e); + if (n != 1) + Error("let argument count mismatch: %S", e); return MAKE(DF(DispatchLet1), Cdar(e)); default: return MAKE(DF(DispatchFuncall), 0); @@ -234,37 +287,68 @@ static dword PlanLet(int e, int a, int s) { static dontinline dword PlanPrecious(int e, int a, int s, int f) { DCHECK_GT(f, 0); - if (f == kCar) return PlanCar(e, a, s); - if (f == kCdr) return PlanCdr(e, a, s); - if (f == kGc) return PlanGc(e, a, s); - if (f == kEq) return PlanEq(e, a, s); - if (f == kCmp) return PlanCmp(e, a, s); - if (f == kBeta) return PlanBeta(e, a, s); - if (f == kCond) return PlanCond(e, a, s); - if (f == kAtom) return PlanAtom(e, a, s); - if (f == kCons) return PlanCons(e, a, s); - if (f == kExit) return PlanExit(e, a, s); - if (f == kRead) return PlanRead(e, a, s); - if (f == kOrder) return PlanOrder(e, a, s); - if (f == kQuote) return PlanQuote(e, a, s); - if (f == kProgn) return PlanProgn(e, a, s); - if (f == kQuiet) return PlanQuiet(e, a, s); - if (f == kTrace) return PlanTrace(e, a, s); - if (f == kPrint) return PlanPrint(e, a, s); - if (f == kPrinc) return PlanPrinc(e, a, s); - if (f == kFlush) return PlanFlush(e, a, s); - if (f == kError) return PlanError(e, a, s); - if (f == kMacro) return PlanLambda(e, a, s); - if (f == kFtrace) return PlanFtrace(e, a, s); - if (f == kLambda) return PlanLambda(e, a, s); - if (f == kGensym) return PlanGensym(e, a, s); - if (f == kPprint) return PlanPprint(e, a, s); - if (f == kIgnore) return PlanIgnore(e, a, s); - if (f == kExpand) return PlanExpand(e, a, s); - if (f == kDefine) return PlanDefine(e, a, s); - if (f == kClosure) return PlanClosure(e, a, s); - if (f == kFunction) return PlanFunction(e, a, s); - if (f == kPrintheap) return PlanPrintheap(e, a, s); + if (f == kCar) + return PlanCar(e, a, s); + if (f == kCdr) + return PlanCdr(e, a, s); + if (f == kGc) + return PlanGc(e, a, s); + if (f == kEq) + return PlanEq(e, a, s); + if (f == kCmp) + return PlanCmp(e, a, s); + if (f == kBeta) + return PlanBeta(e, a, s); + if (f == kCond) + return PlanCond(e, a, s); + if (f == kAtom) + return PlanAtom(e, a, s); + if (f == kCons) + return PlanCons(e, a, s); + if (f == kExit) + return PlanExit(e, a, s); + if (f == kRead) + return PlanRead(e, a, s); + if (f == kOrder) + return PlanOrder(e, a, s); + if (f == kQuote) + return PlanQuote(e, a, s); + if (f == kProgn) + return PlanProgn(e, a, s); + if (f == kQuiet) + return PlanQuiet(e, a, s); + if (f == kTrace) + return PlanTrace(e, a, s); + if (f == kPrint) + return PlanPrint(e, a, s); + if (f == kPrinc) + return PlanPrinc(e, a, s); + if (f == kFlush) + return PlanFlush(e, a, s); + if (f == kError) + return PlanError(e, a, s); + if (f == kMacro) + return PlanLambda(e, a, s); + if (f == kFtrace) + return PlanFtrace(e, a, s); + if (f == kLambda) + return PlanLambda(e, a, s); + if (f == kGensym) + return PlanGensym(e, a, s); + if (f == kPprint) + return PlanPprint(e, a, s); + if (f == kIgnore) + return PlanIgnore(e, a, s); + if (f == kExpand) + return PlanExpand(e, a, s); + if (f == kDefine) + return PlanDefine(e, a, s); + if (f == kClosure) + return PlanClosure(e, a, s); + if (f == kFunction) + return PlanFunction(e, a, s); + if (f == kPrintheap) + return PlanPrintheap(e, a, s); if (!a) { Push(e); Push(f); @@ -280,26 +364,34 @@ dontinline dword Plan(int e, int a, int s) { if ((x1 = IsCar(e))) { if ((x2 = IsCar(x1))) { if ((x3 = IsCar(x2))) { - if ((x4 = IsCar(x3))) return MAKE(DF(DispatchCaaaar), x4); - if ((x4 = IsCdr(x3))) return MAKE(DF(DispatchCaaadr), x4); + if ((x4 = IsCar(x3))) + return MAKE(DF(DispatchCaaaar), x4); + if ((x4 = IsCdr(x3))) + return MAKE(DF(DispatchCaaadr), x4); return MAKE(DF(DispatchCaaar), x3); } if ((x3 = IsCdr(x2))) { - if ((x4 = IsCar(x3))) return MAKE(DF(DispatchCaadar), x4); - if ((x4 = IsCdr(x3))) return MAKE(DF(DispatchCaaddr), x4); + if ((x4 = IsCar(x3))) + return MAKE(DF(DispatchCaadar), x4); + if ((x4 = IsCdr(x3))) + return MAKE(DF(DispatchCaaddr), x4); return MAKE(DF(DispatchCaaar), x3); } return MAKE(DF(DispatchCaar), x2); } if ((x2 = IsCdr(x1))) { if ((x3 = IsCar(x2))) { - if ((x4 = IsCar(x3))) return MAKE(DF(DispatchCadaar), x4); - if ((x4 = IsCdr(x3))) return MAKE(DF(DispatchCadadr), x4); + if ((x4 = IsCar(x3))) + return MAKE(DF(DispatchCadaar), x4); + if ((x4 = IsCdr(x3))) + return MAKE(DF(DispatchCadadr), x4); return MAKE(DF(DispatchCadar), x3); } if ((x3 = IsCdr(x2))) { - if ((x4 = IsCar(x3))) return MAKE(DF(DispatchCaddar), x4); - if ((x4 = IsCdr(x3))) return MAKE(DF(DispatchCadddr), x4); + if ((x4 = IsCar(x3))) + return MAKE(DF(DispatchCaddar), x4); + if ((x4 = IsCdr(x3))) + return MAKE(DF(DispatchCadddr), x4); return MAKE(DF(DispatchCaddr), x3); } return MAKE(DF(DispatchCadr), x2); @@ -310,26 +402,34 @@ dontinline dword Plan(int e, int a, int s) { if ((x1 = IsCdr(e))) { if ((x2 = IsCar(x1))) { if ((x3 = IsCar(x2))) { - if ((x4 = IsCar(x3))) return MAKE(DF(DispatchCdaaar), x4); - if ((x4 = IsCdr(x3))) return MAKE(DF(DispatchCdaadr), x4); + if ((x4 = IsCar(x3))) + return MAKE(DF(DispatchCdaaar), x4); + if ((x4 = IsCdr(x3))) + return MAKE(DF(DispatchCdaadr), x4); return MAKE(DF(DispatchCdaar), x3); } if ((x3 = IsCdr(x2))) { - if ((x4 = IsCar(x3))) return MAKE(DF(DispatchCdadar), x4); - if ((x4 = IsCdr(x3))) return MAKE(DF(DispatchCdaddr), x4); + if ((x4 = IsCar(x3))) + return MAKE(DF(DispatchCdadar), x4); + if ((x4 = IsCdr(x3))) + return MAKE(DF(DispatchCdaddr), x4); return MAKE(DF(DispatchCdadr), x3); } return MAKE(DF(DispatchCdar), x2); } if ((x2 = IsCdr(x1))) { if ((x3 = IsCar(x2))) { - if ((x4 = IsCar(x3))) return MAKE(DF(DispatchCddaar), x4); - if ((x4 = IsCdr(x3))) return MAKE(DF(DispatchCddadr), x4); + if ((x4 = IsCar(x3))) + return MAKE(DF(DispatchCddaar), x4); + if ((x4 = IsCdr(x3))) + return MAKE(DF(DispatchCddadr), x4); return MAKE(DF(DispatchCddar), x3); } if ((x3 = IsCdr(x2))) { - if ((x4 = IsCar(x3))) return MAKE(DF(DispatchCdddar), x4); - if ((x4 = IsCdr(x3))) return MAKE(DF(DispatchCddddr), x4); + if ((x4 = IsCar(x3))) + return MAKE(DF(DispatchCdddar), x4); + if ((x4 = IsCdr(x3))) + return MAKE(DF(DispatchCddddr), x4); return MAKE(DF(DispatchCdddr), x3); } return MAKE(DF(DispatchCddr), x2); diff --git a/tool/plinko/lib/plinko.c b/tool/plinko/lib/plinko.c index a088e7736..9766469b8 100644 --- a/tool/plinko/lib/plinko.c +++ b/tool/plinko/lib/plinko.c @@ -83,8 +83,10 @@ static void Backtrace(int S) { forceinline bool ShouldIgnoreGarbage(int A) { static unsigned cadence; - if (DEBUG_GARBAGE) return false; - if (!(++cadence & AVERSIVENESS)) return false; + if (DEBUG_GARBAGE) + return false; + if (!(++cadence & AVERSIVENESS)) + return false; return true; } @@ -101,13 +103,16 @@ static relegated dontinline int ErrorExpr(void) { } static int Order(int x, int y) { - if (x < y) return -1; - if (x > y) return +1; + if (x < y) + return -1; + if (x > y) + return +1; return 0; } static int Append(int x, int y) { - if (!x) return y; + if (!x) + return y; return Cons(Car(x), Append(Cdr(x), y)); } @@ -129,21 +134,25 @@ static int ReconstructAlist(int a) { static bool AtomEquals(int x, const char *s) { dword t; do { - if (!*s) return false; + if (!*s) + return false; t = Get(x); - if (LO(t) != *s++) return false; // xxx: ascii + if (LO(t) != *s++) + return false; // xxx: ascii } while ((x = HI(t)) != TERM); return !*s; } static pureconst int LastCons(int x) { - while (Cdr(x)) x = Cdr(x); + while (Cdr(x)) + x = Cdr(x); return x; } static pureconst int LastChar(int x) { dword e; - do e = Get(x); + do + e = Get(x); while ((x = HI(e)) != TERM); return LO(e); } @@ -157,13 +166,16 @@ forceinline pureconst bool IsQuote(int x) { } static int Quote(int x) { - if (IsClosure(x)) return x; - if (IsPrecious(x)) return x; + if (IsClosure(x)) + return x; + if (IsPrecious(x)) + return x; return List(kQuote, x); } static int QuoteList(int x) { - if (!x) return x; + if (!x) + return x; return Cons(Quote(Car(x)), QuoteList(Cdr(x))); } @@ -171,7 +183,8 @@ static int GetAtom(const char *s) { int x, y; ax = y = TERM; x = *s++ & 255; - if (*s) y = GetAtom(s); + if (*s) + y = GetAtom(s); return Intern(x, y); } @@ -182,7 +195,8 @@ static int Gensym(void) { n = 0; x = g++; B[n++] = L'G'; - do B[n++] = L'0' + (x & 7); + do + B[n++] = L'0' + (x & 7); while ((x >>= 3)); B[n] = 0; for (a = 1, b = n - 1; a < b; ++a, --b) { @@ -195,8 +209,10 @@ static int Gensym(void) { static nosideeffect bool Member(int v, int x) { while (x) { - if (x > 0) return v == x; - if (v == Car(x)) return true; + if (x > 0) + return v == x; + if (v == Car(x)) + return true; x = Cdr(x); } return false; @@ -216,8 +232,10 @@ static int GetBindings(int x, int a) { static int Lambda(int e, int a, dword p1, dword p2) { int u; - if (p1) a = Alist(LO(p1), HI(p1), a); - if (p2) a = Alist(LO(p2), HI(p2), a); + if (p1) + a = Alist(LO(p1), HI(p1), a); + if (p2) + a = Alist(LO(p2), HI(p2), a); if (DEBUG_CLOSURE || logc) { u = FindFreeVariables(e, 0, 0); a = GetBindings(u, a); @@ -227,8 +245,10 @@ static int Lambda(int e, int a, dword p1, dword p2) { static int Function(int e, int a, dword p1, dword p2) { int u; - if (e < 0 && Car(e) == kLambda) e = Lambda(e, a, p1, p2); - if (e >= 0 || Car(e) != kClosure) Error("not a closure"); + if (e < 0 && Car(e) == kLambda) + e = Lambda(e, a, p1, p2); + if (e >= 0 || Car(e) != kClosure) + Error("not a closure"); a = Cddr(e); e = Cadr(e); u = FindFreeVariables(e, 0, 0); @@ -421,8 +441,10 @@ struct T DispatchLookup(dword ea, dword tm, dword r, dword p1, dword p2, DCHECK(!IsPrecious(e)); DCHECK_GT(e, 0); DCHECK_LE(a, 0); - if (LO(p1) == LO(ea)) return Ret(MAKE(HI(p1), 0), tm, r); - if (LO(p2) == LO(ea)) return Ret(MAKE(HI(p2), 0), tm, r); + if (LO(p1) == LO(ea)) + return Ret(MAKE(HI(p1), 0), tm, r); + if (LO(p2) == LO(ea)) + return Ret(MAKE(HI(p2), 0), tm, r); if ((kv = Assoc(e, a))) { return Ret(MAKE(Cdr(kv), 0), tm, r); // (eval 𝑘 (…(𝑘 𝑣)…)) ⟹ 𝑣 } else { @@ -473,10 +495,12 @@ struct T DispatchOrder(dword ea, dword tm, dword r, dword p1, dword p2, struct T DispatchCons(dword ea, dword tm, dword r, dword p1, dword p2, dword d) { int x; - if (cx < cHeap) cHeap = cx; + if (cx < cHeap) + cHeap = cx; x = Car(Cdr(LO(ea))); x = FasterRecurse(x, HI(ea), p1, p2); - if (!HI(d)) return Ret(MAKE(Cons(x, 0), 0), tm, r); + if (!HI(d)) + return Ret(MAKE(Cons(x, 0), 0), tm, r); if (~r & NEED_POP) { r |= NEED_POP; Push(LO(ea)); @@ -720,7 +744,8 @@ struct T DispatchExpand(dword ea, dword tm, dword r, dword p1, dword p2, } static int GrabArgs(int x, int a, dword p1, dword p2) { - if (x >= 0) return x; + if (x >= 0) + return x; return Cons(recurse(MAKE(Car(x), a), p1, p2), GrabArgs(Cdr(x), a, p1, p2)); } @@ -991,7 +1016,8 @@ int Plinko(int argc, char *argv[]) { kTail[5] = DispatchTailGc; kTail[6] = DispatchTailImpossible; kTail[7] = DispatchTailTmcGc; - if (trace) EnableTracing(); + if (trace) + EnableTracing(); cx = -1; cFrost = cx; @@ -1006,7 +1032,8 @@ int Plinko(int argc, char *argv[]) { if (!(x = setjmp(crash))) { x = Read(0); x = expand(x, globals); - if (stats) ResetStats(); + if (stats) + ResetStats(); if (x < 0 && Car(x) == kDefine) { globals = Define(x, globals); cFrost = cx; diff --git a/tool/plinko/lib/preplan.c b/tool/plinko/lib/preplan.c index 63318679b..e1715656a 100644 --- a/tool/plinko/lib/preplan.c +++ b/tool/plinko/lib/preplan.c @@ -25,7 +25,8 @@ static int CopyTree(int x) { int a, b; - if (x >= 0) return x; + if (x >= 0) + return x; b = CopyTree(Cdr(x)); a = CopyTree(Car(x)); return Cons(a, b); @@ -33,7 +34,8 @@ static int CopyTree(int x) { static int PreplanCond(int e, int a, int s) { int f, g; - if (!(e = Cdr(e))) return 0; + if (!(e = Cdr(e))) + return 0; if ((f = Car(e)) < 0) { if ((g = Cdr(f)) < 0) { f = List(Preplan(Car(f), a, s), Preplan(Car(g), a, s)); @@ -45,14 +47,16 @@ static int PreplanCond(int e, int a, int s) { } static int PreplanList(int e, int a, int s) { - if (e >= 0) return e; + if (e >= 0) + return e; return Cons(Preplan(Car(e), a, s), PreplanList(Cdr(e), a, s)); } int Preplan(int e, int a, int s) { int f, x; struct qword q; - if (e >= 0) return e; + if (e >= 0) + return e; f = Car(e); if (f != kQuote) { if (f == kClosure) { diff --git a/tool/plinko/lib/prettyprint.c b/tool/plinko/lib/prettyprint.c index 8c47441cf..32e8d48d6 100644 --- a/tool/plinko/lib/prettyprint.c +++ b/tool/plinko/lib/prettyprint.c @@ -85,15 +85,18 @@ static void PrettyPrintList(int fd, int x, int n) { if (y >= 0) { argwidth += PrintSpace(fd); argwidth += PrintAtom(fd, y); - if (!once) n += argwidth; + if (!once) + n += argwidth; } else { if (once && (y < 0 || mode)) { mode = 1; PrintNewline(fd); - if (depth >= 0) PrintDepth(fd, depth); + if (depth >= 0) + PrintDepth(fd, depth); PrintIndent(fd, n); } else { - if (y < 0) mode = 1; + if (y < 0) + mode = 1; PrintSpace(fd); } once = 1; diff --git a/tool/plinko/lib/printchar.c b/tool/plinko/lib/printchar.c index a396be4de..1d63aa007 100644 --- a/tool/plinko/lib/printchar.c +++ b/tool/plinko/lib/printchar.c @@ -25,15 +25,18 @@ int PrintChar(int fd, int s) { unsigned c; int d, e, i, n; c = s & 0xffffffff; - if (bp[fd] + 6 > sizeof(g_buffer[fd])) Flush(fd); + if (bp[fd] + 6 > sizeof(g_buffer[fd])) + Flush(fd); if (c < 0200) { g_buffer[fd][bp[fd]++] = c; - if (c == L'\n') Flush(fd); + if (c == L'\n') + Flush(fd); } else { d = c; e = kTpEnc[bsrl(d) - 7]; i = n = e & 255; - do g_buffer[fd][bp[fd] + i--] = 0200 | (d & 077); + do + g_buffer[fd][bp[fd] + i--] = 0200 | (d & 077); while (d >>= 6, i); g_buffer[fd][bp[fd]] = d | e >> 8; bp[fd] += n + 1; diff --git a/tool/plinko/lib/printf.c b/tool/plinko/lib/printf.c index 60720d3a2..ddc4c50be 100644 --- a/tool/plinko/lib/printf.c +++ b/tool/plinko/lib/printf.c @@ -27,7 +27,8 @@ #include "tool/plinko/lib/print.h" static inline long GetVarInt(va_list va, signed char t) { - if (t <= 0) return va_arg(va, int); + if (t <= 0) + return va_arg(va, int); return va_arg(va, long); } @@ -35,7 +36,8 @@ static int PrintStr(int fd, const char *s, int cols) { int n, k = 0, i = 0; n = strlen(s); k += PrintIndent(fd, +cols - n); - while (i < n) k += PrintChar(fd, s[i++]); + while (i < n) + k += PrintChar(fd, s[i++]); k += PrintIndent(fd, -cols - n); return k; } @@ -85,7 +87,8 @@ int Vfnprintf(const char *f, va_list va, int fd, int n) { ++recursive; for (ansi = 0;;) { for (;;) { - if (!(c = *f++ & 0377) || c == L'%') break; + if (!(c = *f++ & 0377) || c == L'%') + break; if (c >= 0300) { for (b = 0200; c & b; b >>= 1) { c ^= b; @@ -123,7 +126,8 @@ int Vfnprintf(const char *f, va_list va, int fd, int n) { EmitFormatByte: PrintChar(fd, c); } - if (!c) break; + if (!c) + break; prec = 0; pdot = 0; cols = 0; @@ -221,7 +225,8 @@ int Vfnprintf(const char *f, va_list va, int fd, int n) { } break; case L'p': - if (simpler) goto SimplePrint; + if (simpler) + goto SimplePrint; // fallthrough case L'P': n += PrettyPrint(fd, va_arg(va, int), @@ -251,7 +256,8 @@ int Vfnprintf(const char *f, va_list va, int fd, int n) { PrintChar(fd, L'('); for (;;) { n += Print(fd, Car(Car(b))); - if ((b = Cdr(b)) >= 0) break; + if ((b = Cdr(b)) >= 0) + break; PrintChar(fd, L' '); } PrintChar(fd, L')'); @@ -279,7 +285,8 @@ int Vfnprintf(const char *f, va_list va, int fd, int n) { break; case L's': s = va_arg(va, const char *); - if (!s) s = "NULL"; + if (!s) + s = "NULL"; n += PrintStr(fd, s, cols * sign); break; case L'c': diff --git a/tool/plinko/lib/printheap.c b/tool/plinko/lib/printheap.c index eaf2437e5..b6ca2c5f6 100644 --- a/tool/plinko/lib/printheap.c +++ b/tool/plinko/lib/printheap.c @@ -40,7 +40,8 @@ static const char *GetElfSymbol(uintptr_t funcaddr) { static const char *GetDispatchName(int x) { const char *s; s = GetElfSymbol(LO(GetShadow(x))); - if (startswith(s, "Dispatch")) s += 8; + if (startswith(s, "Dispatch")) + s += 8; return s; } diff --git a/tool/plinko/lib/printint.c b/tool/plinko/lib/printint.c index a11c34fe5..88f524059 100644 --- a/tool/plinko/lib/printint.c +++ b/tool/plinko/lib/printint.c @@ -29,7 +29,8 @@ int PrintInt(int fd, long x, int cols, char quot, char zero, int base, i = j = 0; y = x < 0 && issigned ? -x : x; do { - if (quot && j == 3) z[i++ & 31] = quot, j = 0; + if (quot && j == 3) + z[i++ & 31] = quot, j = 0; z[i++ & 31] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"[y % base]; } while (++j, (y /= base)); k = i + (x < 0 && issigned); @@ -38,8 +39,10 @@ int PrintInt(int fd, long x, int cols, char quot, char zero, int base, } else { n = PrintIndent(fd, +cols - k); } - if (x < 0 && issigned) n += PrintChar(fd, L'-'); - while (i) n += PrintChar(fd, z[--i & 31]); + if (x < 0 && issigned) + n += PrintChar(fd, L'-'); + while (i) + n += PrintChar(fd, z[--i & 31]); PrintIndent(fd, -cols - n); return n; } diff --git a/tool/plinko/lib/printvars.c b/tool/plinko/lib/printvars.c index 66b73aa22..ddcd1d220 100644 --- a/tool/plinko/lib/printvars.c +++ b/tool/plinko/lib/printvars.c @@ -20,7 +20,8 @@ #include "tool/plinko/lib/print.h" int PrintArgs(int fd, int keys, int vals, int n) { - if (!keys) return n; + if (!keys) + return n; if (keys > 0) { if (!(vals < 0 && Car(vals) == kClosure)) { if (n) { @@ -46,6 +47,7 @@ int PrintArgs(int fd, int keys, int vals, int n) { } else { n += PrintArgs(fd, Car(keys), Car(vals), n); } - if (!Cdr(keys)) return n; + if (!Cdr(keys)) + return n; return PrintArgs(fd, Cdr(keys), Cdr(vals), n); } diff --git a/tool/plinko/lib/read.c b/tool/plinko/lib/read.c index 18a09db9d..04dd889a0 100644 --- a/tool/plinko/lib/read.c +++ b/tool/plinko/lib/read.c @@ -66,7 +66,8 @@ dontinstrument int ReadSpaces(int fd) { dontinstrument int ReadByte(int fd) { int c; - if ((c = g_buffer[fd][bp[fd]++] & 255)) return c; + if ((c = g_buffer[fd][bp[fd]++] & 255)) + return c; return ReadSpaces(fd); } @@ -77,7 +78,8 @@ dontinstrument int ReadChar(int fd) { if (dx != ';') { break; } else { - do b = ReadByte(fd); + do + b = ReadByte(fd); while ((b != '\n')); } } @@ -100,7 +102,8 @@ dontinstrument int ReadChar(int fd) { static int ReadListItem(int fd, int closer, int f(int)) { int x, y; if ((x = f(fd)) > 0) { - if (Get(x) == MAKE(closer, TERM)) return -0; + if (Get(x) == MAKE(closer, TERM)) + return -0; if (Get(x) == MAKE(L'.', TERM)) { x = f(fd); if ((y = ReadListItem(fd, closer, Read1))) { @@ -138,16 +141,20 @@ static void ConsumeComment(int fd) { int c, t = 1; for (;;) { c = ReadChar(fd); - if (c == '#' && dx == '|') ++t; - if (!t) return; - if (c == '|' && dx == '#') --t; + if (c == '#' && dx == '|') + ++t; + if (!t) + return; + if (c == '|' && dx == '#') + --t; } } static int ReadAtomRest(int fd, int x) { int y; ax = y = TERM; - if (x == L'\\') x = ReadChar(fd); + if (x == L'\\') + x = ReadChar(fd); if (!IsSpace(dx) && !IsParen(dx) && !IsMathAlnum(x) && !IsMathAlnum(dx)) { y = ReadAtomRest(fd, ReadChar(fd)); } @@ -157,7 +164,8 @@ static int ReadAtomRest(int fd, int x) { static int ReadAtom(int fd) { int a, s, x; x = ReadChar(fd); - if ((s = Desymbolize(x)) != -1) return s; + if ((s = Desymbolize(x)) != -1) + return s; a = ReadAtomRest(fd, x); if (LO(Get(a)) == L'T' && HI(Get(a)) == TERM) { a = 1; @@ -194,7 +202,8 @@ static int TokenizeComplicated(int fd) { static int Read2(int fd) { int r, l; - while (IsSpace((l = dx))) ReadChar(fd); + while (IsSpace((l = dx))) + ReadChar(fd); switch (dx) { case L'#': r = TokenizeComplicated(fd); @@ -263,13 +272,15 @@ static int ReadLambda(int fd, int n) { } else { q = List(q, r); } - if (!n && dx == L')') break; + if (!n && dx == L')') + break; } while (!IsSpace(dx)); return q; } static int Read1(int fd) { - while (IsSpace(dx)) ReadChar(fd); + while (IsSpace(dx)) + ReadChar(fd); // todo: fix horrible i/o if (dx == 0xCE && (g_buffer[fd][bp[fd]] & 255) == 0xbb) { return ReadLambda(fd, 0); diff --git a/tool/plinko/lib/symbolize.c b/tool/plinko/lib/symbolize.c index 96eb58995..07b247357 100644 --- a/tool/plinko/lib/symbolize.c +++ b/tool/plinko/lib/symbolize.c @@ -19,92 +19,139 @@ #include "tool/plinko/lib/plinko.h" pureconst int Symbolize(int x) { - if (literally) return -1; - if (x == TERM) return -1; + if (literally) + return -1; + if (x == TERM) + return -1; DCHECK_LT(x, TERM); switch (LO(Get(x))) { case L'A': - if (x == kAtom) return L'α'; - if (x == kAnd) return L'∧'; - if (x == kAppend) return L'║'; + if (x == kAtom) + return L'α'; + if (x == kAnd) + return L'∧'; + if (x == kAppend) + return L'║'; return -1; case L'B': - if (x == kBeta) return L'β'; - if (x == kBecause) return L'∵'; + if (x == kBeta) + return L'β'; + if (x == kBecause) + return L'∵'; return -1; case L'C': - if (x == kCar) return L'⍅'; - if (x == kCdr) return L'⍆'; - if (x == kClosure) return L'⅄'; - if (x == kCond) return L'ζ'; - if (x == kCons) return L'ℶ'; - if (x == kCmp) return L'≷'; - if (x == kCycle) return L'⟳'; + if (x == kCar) + return L'⍅'; + if (x == kCdr) + return L'⍆'; + if (x == kClosure) + return L'⅄'; + if (x == kCond) + return L'ζ'; + if (x == kCons) + return L'ℶ'; + if (x == kCmp) + return L'≷'; + if (x == kCycle) + return L'⟳'; return -1; case L'D': - if (x == kDefine) return L'≝'; - if (x == kDefmacro) return L'Ψ'; - if (x == kDefun) return L'Λ'; + if (x == kDefine) + return L'≝'; + if (x == kDefmacro) + return L'Ψ'; + if (x == kDefun) + return L'Λ'; return -1; case L'E': - if (x == kEq) return L'≡'; - if (x == kExpand) return L'ə'; + if (x == kEq) + return L'≡'; + if (x == kExpand) + return L'ə'; return -1; case L'F': - if (x == kFunction) return L'𝑓'; - if (x == kFork) return L'⋔'; + if (x == kFunction) + return L'𝑓'; + if (x == kFork) + return L'⋔'; return -1; case L'P': - if (x == kPartial) return L'∂'; + if (x == kPartial) + return L'∂'; return -1; case L'I': - if (x == kIff) return L'⟺'; - if (x == kImplies) return L'⟶'; - if (x == kIntegrate) return L'∫'; - if (x == kIntersection) return L'∩'; + if (x == kIff) + return L'⟺'; + if (x == kImplies) + return L'⟶'; + if (x == kIntegrate) + return L'∫'; + if (x == kIntersection) + return L'∩'; return -1; case L'L': - if (x == kLambda) return L'λ'; - if (x == kList) return L'ℒ'; + if (x == kLambda) + return L'λ'; + if (x == kList) + return L'ℒ'; return -1; case L'M': - if (x == kMacro) return L'ψ'; - if (x == kMember) return L'∊'; + if (x == kMacro) + return L'ψ'; + if (x == kMember) + return L'∊'; return -1; case L'N': - if (!x) return L'⊥'; - if (x == kNand) return L'⊼'; - if (x == kNor) return L'⊽'; - if (x == kNot) return L'¬'; + if (!x) + return L'⊥'; + if (x == kNand) + return L'⊼'; + if (x == kNor) + return L'⊽'; + if (x == kNot) + return L'¬'; return -1; case L'O': - if (x == kOr) return L'∨'; - if (x == kOrder) return L'⊙'; + if (x == kOr) + return L'∨'; + if (x == kOrder) + return L'⊙'; return -1; case L'Q': - if (x == kQuote) return L'Ω'; + if (x == kQuote) + return L'Ω'; return -1; case L'R': - if (x == kReverse) return L'Я'; + if (x == kReverse) + return L'Я'; return -1; case L'S': - if (x == kSqrt) return L'√'; - if (x == kSubset) return L'⊂'; - if (x == kSuperset) return L'⊃'; + if (x == kSqrt) + return L'√'; + if (x == kSubset) + return L'⊂'; + if (x == kSuperset) + return L'⊃'; return -1; case L'T': - if (x == 1) return L'⊤'; - if (x == kTherefore) return L'∴'; + if (x == 1) + return L'⊤'; + if (x == kTherefore) + return L'∴'; return -1; case L'U': - if (x == kUnion) return L'∪'; - if (x == kImpossible) return L'∅'; + if (x == kUnion) + return L'∪'; + if (x == kImpossible) + return L'∅'; return -1; case L'X': - if (x == kXor) return L'⊻'; + if (x == kXor) + return L'⊻'; return -1; case L'Y': - if (x == kYcombinator) return L'𝕐'; + if (x == kYcombinator) + return L'𝕐'; return -1; default: return -1; diff --git a/tool/plinko/lib/tree.c b/tool/plinko/lib/tree.c index 9466f5869..2ca833699 100644 --- a/tool/plinko/lib/tree.c +++ b/tool/plinko/lib/tree.c @@ -31,9 +31,12 @@ int Nod(int E, int L, int R, int C) { static void CheckTreeImpl(int N) { int p, L, R; - if (N >= 0) Error("N is atom: %S", N); - if (Car(N) >= 0) Error("Car(N) is an atom: %S", N); - if (Cdr(N) & ~1) Error("Cdr(N) is non-bool: %S", N); + if (N >= 0) + Error("N is atom: %S", N); + if (Car(N) >= 0) + Error("Car(N) is an atom: %S", N); + if (Cdr(N) & ~1) + Error("Cdr(N) is non-bool: %S", N); if ((L = Lit(N))) { if ((p = Cmp(Key(Ent(L)), Key(Ent(N)))) != -1) { Error("Cmp(Key(L), Key(N)) != -1%n" @@ -65,7 +68,8 @@ static void CheckTreeImpl(int N) { static int CheckTree(int N) { #if DEBUG_TREE if (N) { - if (Red(N)) Error("tree root is red%n%T", N); + if (Red(N)) + Error("tree root is red%n%T", N); CheckTreeImpl(N); } #endif @@ -163,11 +167,15 @@ static int InsTree(int E, int N, int KEEP) { if (N) { P = Cmp(Key(E), Key(Ent(N))); if (P < 0) { - if ((L = InsTree(E, Lit(N), KEEP)) > 0) return L; // rethrow - if (L != Lit(N)) N = BalTree(Ent(N), L, Rit(N), Tail(N)); + if ((L = InsTree(E, Lit(N), KEEP)) > 0) + return L; // rethrow + if (L != Lit(N)) + N = BalTree(Ent(N), L, Rit(N), Tail(N)); } else if (P > 0) { - if ((R = InsTree(E, Rit(N), KEEP)) > 0) return R; // rethrow - if (R != Rit(N)) N = BalTree(Ent(N), Lit(N), R, Tail(N)); + if ((R = InsTree(E, Rit(N), KEEP)) > 0) + return R; // rethrow + if (R != Rit(N)) + N = BalTree(Ent(N), Lit(N), R, Tail(N)); } else if (KEEP < 0 || (!KEEP && !Equal(Val(E), Val(Ent(N))))) { N = Cons(Cons(E, Chl(N)), Red(N)); } else if (KEEP > 1) { diff --git a/tool/viz/ascii2utf8.c b/tool/viz/ascii2utf8.c index d895b7bf1..781aa5311 100644 --- a/tool/viz/ascii2utf8.c +++ b/tool/viz/ascii2utf8.c @@ -61,9 +61,11 @@ const wint_t kCombiningLowLine = L'\u0332'; const wint_t kCombiningDoubleMacronBelow = L'\u035f'; forceinline int PutChar(wint_t (*buf)[3], size_t *i, wint_t *cc, FILE *out) { - if (fputwc((*buf)[0], out) == -1) return -1; + if (fputwc((*buf)[0], out) == -1) + return -1; if (*cc != -1) { - if (fputwc(*cc, out) == -1) return -1; + if (fputwc(*cc, out) == -1) + return -1; *cc = -1; } (*buf)[0] = (*buf)[1]; @@ -77,7 +79,8 @@ int CombineAsciiMarks(FILE *in, FILE *out) { size_t i = 0; for (;;) { while (i < 3) { - if ((wc = fgetwc(in)) == -1) goto InputBreak; + if ((wc = fgetwc(in)) == -1) + goto InputBreak; buf[i++] = wc; } if (buf[1] == '\b' && cc == -1) { @@ -104,12 +107,14 @@ int CombineAsciiMarks(FILE *in, FILE *out) { } } if (i == 3) { - if (PutChar(&buf, &i, &cc, out) == -1) goto OutputBreak; + if (PutChar(&buf, &i, &cc, out) == -1) + goto OutputBreak; } } InputBreak: while (i) { - if (PutChar(&buf, &i, &cc, out) == -1) goto OutputBreak; + if (PutChar(&buf, &i, &cc, out) == -1) + goto OutputBreak; } OutputBreak: return (fclose(in) | fclose(out)) != -1 ? 0 : -1; diff --git a/tool/viz/basicidea.c b/tool/viz/basicidea.c index 9b0153f7b..053604a9f 100644 --- a/tool/viz/basicidea.c +++ b/tool/viz/basicidea.c @@ -37,9 +37,10 @@ #define SQR(X) ((X) * (X)) #define UNCUBE(x) x < 48 ? 0 : x < 115 ? 1 : (x - 35) / 40 -#define ORDIE(X) \ - do { \ - if (!(X)) perror(#X), exit(1); \ +#define ORDIE(X) \ + do { \ + if (!(X)) \ + perror(#X), exit(1); \ } while (0) int want24bit_; diff --git a/tool/viz/bd.c b/tool/viz/bd.c index bc5d21bbb..b37f506a4 100644 --- a/tool/viz/bd.c +++ b/tool/viz/bd.c @@ -58,10 +58,12 @@ int main(int argc, char *argv[]) { return 1; } for (b = o = 0;;) { - if (!(n = fread(R, 1, 16, f))) break; + if (!(n = fread(R, 1, 16, f))) + break; p = A, q = B; for (c = i = 0; i < n; ++i) { - if (i == 8) *p++ = ' '; + if (i == 8) + *p++ = ' '; *p++ = "0123456789abcdef"[(R[i] & 0xF0) >> 4]; *p++ = "0123456789abcdef"[(R[i] & 0x0F) >> 0]; *p++ = ' '; @@ -77,6 +79,7 @@ int main(int argc, char *argv[]) { } o += n; } - if (o) printf("%08x\n", o); + if (o) + printf("%08x\n", o); return !feof(f); } diff --git a/tool/viz/bin2asm.c b/tool/viz/bin2asm.c index f547c3821..37496fd93 100644 --- a/tool/viz/bin2asm.c +++ b/tool/viz/bin2asm.c @@ -33,7 +33,8 @@ int main(int argc, char *argv[]) { bzero(glyphs, sizeof(glyphs)); } glyphs[col] = kCp437[c]; - if (col) putchar(','); + if (col) + putchar(','); printf("0x%02x", c); if (++col == COLS) { col = 0; diff --git a/tool/viz/cpuid.c b/tool/viz/cpuid.c index e1eb63b4a..657296118 100644 --- a/tool/viz/cpuid.c +++ b/tool/viz/cpuid.c @@ -102,9 +102,12 @@ int main(int argc, char *argv[]) { if (KCPUIDS(16H, EAX)) { printf("\n"); - if ((x = KCPUIDS(16H, EAX) & 0x7fff)) decimal("frequency", x, "mhz"); - if ((x = KCPUIDS(16H, EBX) & 0x7fff)) decimal("turbo", x, "mhz"); - if ((x = KCPUIDS(16H, ECX) & 0x7fff)) decimal("bus", x, "mhz"); + if ((x = KCPUIDS(16H, EAX) & 0x7fff)) + decimal("frequency", x, "mhz"); + if ((x = KCPUIDS(16H, EBX) & 0x7fff)) + decimal("turbo", x, "mhz"); + if ((x = KCPUIDS(16H, ECX) & 0x7fff)) + decimal("bus", x, "mhz"); } if (X86_HAVE(HYPERVISOR)) { diff --git a/tool/viz/datauri.c b/tool/viz/datauri.c index 8f8c92d3f..38094da08 100644 --- a/tool/viz/datauri.c +++ b/tool/viz/datauri.c @@ -36,7 +36,8 @@ void PrintUsage(int rc, FILE *f) { void PrintUri(const char *path) { size_t n; void *img; - if (!(img = gc(xslurp(path, &n)))) exit(2); + if (!(img = gc(xslurp(path, &n)))) + exit(2); fputs("data:", stdout); fputs(FindContentType(path, -1), stdout); fputs(";base64,", stdout); diff --git a/tool/viz/derasterize.c b/tool/viz/derasterize.c index 8a0e1d829..484511c16 100644 --- a/tool/viz/derasterize.c +++ b/tool/viz/derasterize.c @@ -136,7 +136,8 @@ extern const char16_t kRunes[]; */ static char *tptoa(char *p, wchar_t x) { unsigned long w; - for (w = tpenc(x); w; w >>= 010) *p++ = w & 0xff; + for (w = tpenc(x); w; w >>= 010) + *p++ = w & 0xff; return p; } @@ -163,8 +164,10 @@ static float frgb2std(float x) { */ static void rgb2float(unsigned n, float *f, const unsigned char *u) { unsigned i; - for (i = 0; i < n; ++i) f[i] = u[i]; - for (i = 0; i < n; ++i) f[i] /= 255; + for (i = 0; i < n; ++i) + f[i] = u[i]; + for (i = 0; i < n; ++i) + f[i] /= 255; } /** @@ -172,9 +175,12 @@ static void rgb2float(unsigned n, float *f, const unsigned char *u) { */ static void float2rgb(unsigned n, unsigned char *u, float *f) { unsigned i; - for (i = 0; i < n; ++i) f[i] *= 256; - for (i = 0; i < n; ++i) f[i] = roundf(f[i]); - for (i = 0; i < n; ++i) u[i] = MAX(0, MIN(255, f[i])); + for (i = 0; i < n; ++i) + f[i] *= 256; + for (i = 0; i < n; ++i) + f[i] = roundf(f[i]); + for (i = 0; i < n; ++i) + u[i] = MAX(0, MIN(255, f[i])); } /** @@ -186,7 +192,8 @@ static void float2rgb(unsigned n, unsigned char *u, float *f) { static dontinline void rgb2lin(unsigned n, float *f, const unsigned char *u) { unsigned i; rgb2float(n, f, u); - for (i = 0; i < n; ++i) f[i] = frgb2lin(f[i]); + for (i = 0; i < n; ++i) + f[i] = frgb2lin(f[i]); } /** @@ -194,7 +201,8 @@ static dontinline void rgb2lin(unsigned n, float *f, const unsigned char *u) { */ static dontinline void rgb2std(unsigned n, unsigned char *u, float *f) { unsigned i; - for (i = 0; i < n; ++i) f[i] = frgb2std(f[i]); + for (i = 0; i < n; ++i) + f[i] = frgb2std(f[i]); float2rgb(n, u, f); } @@ -288,25 +296,31 @@ static unsigned combinecolors(unsigned char bf[1u << MC][2], /** * Computes distance between synthetic block and actual. */ -#define ADJUDICATE(SYMBOL, ARCH) \ - ARCH static float SYMBOL(unsigned b, unsigned f, unsigned g, \ - const float lb[CN][YS * XS]) { \ - unsigned i, k, gu; \ - float p[BN], q[BN], fu, bu, r; \ - bzero(q, sizeof(q)); \ - for (k = 0; k < CN; ++k) { \ - gu = kGlyphs[g]; \ - bu = lb[k][b]; \ - fu = lb[k][f]; \ - for (i = 0; i < BN; ++i) p[i] = (gu & (1u << i)) ? fu : bu; \ - for (i = 0; i < BN; ++i) p[i] -= lb[k][i]; \ - for (i = 0; i < BN; ++i) p[i] *= p[i]; \ - for (i = 0; i < BN; ++i) q[i] += p[i]; \ - } \ - r = 0; \ - for (i = 0; i < BN; ++i) q[i] = sqrtf(q[i]); \ - for (i = 0; i < BN; ++i) r += q[i]; \ - return r; \ +#define ADJUDICATE(SYMBOL, ARCH) \ + ARCH static float SYMBOL(unsigned b, unsigned f, unsigned g, \ + const float lb[CN][YS * XS]) { \ + unsigned i, k, gu; \ + float p[BN], q[BN], fu, bu, r; \ + bzero(q, sizeof(q)); \ + for (k = 0; k < CN; ++k) { \ + gu = kGlyphs[g]; \ + bu = lb[k][b]; \ + fu = lb[k][f]; \ + for (i = 0; i < BN; ++i) \ + p[i] = (gu & (1u << i)) ? fu : bu; \ + for (i = 0; i < BN; ++i) \ + p[i] -= lb[k][i]; \ + for (i = 0; i < BN; ++i) \ + p[i] *= p[i]; \ + for (i = 0; i < BN; ++i) \ + q[i] += p[i]; \ + } \ + r = 0; \ + for (i = 0; i < BN; ++i) \ + q[i] = sqrtf(q[i]); \ + for (i = 0; i < BN; ++i) \ + r += q[i]; \ + return r; \ } ADJUDICATE(adjudicate_avx2, _Microarchitecture("avx2,fma")) @@ -339,14 +353,20 @@ static float adjudicate(unsigned b, unsigned f, unsigned g, gu = kGlyphs[g]; bu = lb[k][b]; fu = lb[k][f]; - for (i = 0; i < BN; ++i) p[i] = (gu & (1u << i)) ? fu : bu; - for (i = 0; i < BN; ++i) p[i] -= lb[k][i]; - for (i = 0; i < BN; ++i) p[i] *= p[i]; - for (i = 0; i < BN; ++i) q[i] += p[i]; + for (i = 0; i < BN; ++i) + p[i] = (gu & (1u << i)) ? fu : bu; + for (i = 0; i < BN; ++i) + p[i] -= lb[k][i]; + for (i = 0; i < BN; ++i) + p[i] *= p[i]; + for (i = 0; i < BN; ++i) + q[i] += p[i]; } r = 0; - for (i = 0; i < BN; ++i) q[i] = sqrtf(q[i]); - for (i = 0; i < BN; ++i) r += q[i]; + for (i = 0; i < BN; ++i) + q[i] = sqrtf(q[i]); + for (i = 0; i < BN; ++i) + r += q[i]; return r; } @@ -376,7 +396,8 @@ static struct Cell derasterize(unsigned char block[CN][YS * XS]) { cell.fg[0] = block[0][f]; cell.fg[1] = block[1][f]; cell.fg[2] = block[2][f]; - if (!r) return cell; + if (!r) + return cell; } } } @@ -464,7 +485,8 @@ static int ReadAll(int fd, void *data, size_t size) { p = data; n = size; do { - if ((rc = read(fd, p, n)) == -1) return -1; + if ((rc = read(fd, p, n)) == -1) + return -1; got = rc; assert(got || !n); p += got; @@ -605,7 +627,8 @@ int main(int argc, char *argv[]) { size = y_ * YS * x_ * XS * CN; CHECK_NOTNULL((rgb = _mapanon(ROUNDUP(size, FRAMESIZE)))); for (i = optind; i < argc; ++i) { - if (!argv[i]) continue; + if (!argv[i]) + continue; if (m_) { LoadFileViaImageMagick(argv[i], y_, x_, rgb); } else { diff --git a/tool/viz/getglyph.c b/tool/viz/getglyph.c index 10dcad506..4a7d30f68 100644 --- a/tool/viz/getglyph.c +++ b/tool/viz/getglyph.c @@ -59,7 +59,8 @@ static char *Raster(int yn, int xn, unsigned char Y[yn][xn], int *dw) { int y, x, i, j, k, s, w, bi, bs; *dw = 0; for (y = 0; y < yn; y += 4) { - if (y) appendw(&r, '\n'); + if (y) + appendw(&r, '\n'); for (w = x = 0; x < xn; x += 4) { for (i = 0; i < 4; ++i) { for (j = 0; j < 4; ++j) { @@ -87,7 +88,8 @@ static char *Raster(int yn, int xn, unsigned char Y[yn][xn], int *dw) { appendw(&r, tpenc(kBlocks[bi].c)); ++w; } - if (w > *dw) *dw = w; + if (w > *dw) + *dw = w; } return r; } @@ -171,7 +173,8 @@ int main(int argc, char *argv[]) { strcmp(rasters[j], rasters[j - 1])) { isdifferent = true; } - if (dw > maxw) maxw = dw; + if (dw > maxw) + maxw = dw; } } free(bmap); @@ -189,7 +192,8 @@ int main(int argc, char *argv[]) { continue; } p = strchrnul(rasters[j], '\n'); - if (p - rasters[j]) gotsome = true; + if (p - rasters[j]) + gotsome = true; printf("%-*.*s ", maxw, p - rasters[j], rasters[j]); rasters[j] = *p ? p + 1 : p; } diff --git a/tool/viz/hwcap.c b/tool/viz/hwcap.c index b2123f07a..8885bc058 100644 --- a/tool/viz/hwcap.c +++ b/tool/viz/hwcap.c @@ -26,60 +26,111 @@ int main(int argc, char *argv[]) { long x = getauxval(AT_HWCAP); - if (x & HWCAP_FP) puts("HWCAP_FP"); - if (x & HWCAP_ASIMD) puts("HWCAP_ASIMD"); - if (x & HWCAP_EVTSTRM) puts("HWCAP_EVTSTRM"); - if (x & HWCAP_AES) puts("HWCAP_AES"); - if (x & HWCAP_PMULL) puts("HWCAP_PMULL"); - if (x & HWCAP_SHA1) puts("HWCAP_SHA1"); - if (x & HWCAP_SHA2) puts("HWCAP_SHA2"); - if (x & HWCAP_CRC32) puts("HWCAP_CRC32"); - if (x & HWCAP_ATOMICS) puts("HWCAP_ATOMICS"); - if (x & HWCAP_FPHP) puts("HWCAP_FPHP"); - if (x & HWCAP_ASIMDHP) puts("HWCAP_ASIMDHP"); - if (x & HWCAP_CPUID) puts("HWCAP_CPUID"); - if (x & HWCAP_ASIMDRDM) puts("HWCAP_ASIMDRDM"); - if (x & HWCAP_JSCVT) puts("HWCAP_JSCVT"); - if (x & HWCAP_FCMA) puts("HWCAP_FCMA"); - if (x & HWCAP_LRCPC) puts("HWCAP_LRCPC"); - if (x & HWCAP_DCPOP) puts("HWCAP_DCPOP"); - if (x & HWCAP_SHA3) puts("HWCAP_SHA3"); - if (x & HWCAP_SM3) puts("HWCAP_SM3"); - if (x & HWCAP_SM4) puts("HWCAP_SM4"); - if (x & HWCAP_ASIMDDP) puts("HWCAP_ASIMDDP"); - if (x & HWCAP_SHA512) puts("HWCAP_SHA512"); - if (x & HWCAP_SVE) puts("HWCAP_SVE"); - if (x & HWCAP_ASIMDFHM) puts("HWCAP_ASIMDFHM"); - if (x & HWCAP_DIT) puts("HWCAP_DIT"); - if (x & HWCAP_USCAT) puts("HWCAP_USCAT"); - if (x & HWCAP_ILRCPC) puts("HWCAP_ILRCPC"); - if (x & HWCAP_FLAGM) puts("HWCAP_FLAGM"); - if (x & HWCAP_SSBS) puts("HWCAP_SSBS"); - if (x & HWCAP_SB) puts("HWCAP_SB"); - if (x & HWCAP_PACA) puts("HWCAP_PACA"); - if (x & HWCAP_PACG) puts("HWCAP_PACG"); + if (x & HWCAP_FP) + puts("HWCAP_FP"); + if (x & HWCAP_ASIMD) + puts("HWCAP_ASIMD"); + if (x & HWCAP_EVTSTRM) + puts("HWCAP_EVTSTRM"); + if (x & HWCAP_AES) + puts("HWCAP_AES"); + if (x & HWCAP_PMULL) + puts("HWCAP_PMULL"); + if (x & HWCAP_SHA1) + puts("HWCAP_SHA1"); + if (x & HWCAP_SHA2) + puts("HWCAP_SHA2"); + if (x & HWCAP_CRC32) + puts("HWCAP_CRC32"); + if (x & HWCAP_ATOMICS) + puts("HWCAP_ATOMICS"); + if (x & HWCAP_FPHP) + puts("HWCAP_FPHP"); + if (x & HWCAP_ASIMDHP) + puts("HWCAP_ASIMDHP"); + if (x & HWCAP_CPUID) + puts("HWCAP_CPUID"); + if (x & HWCAP_ASIMDRDM) + puts("HWCAP_ASIMDRDM"); + if (x & HWCAP_JSCVT) + puts("HWCAP_JSCVT"); + if (x & HWCAP_FCMA) + puts("HWCAP_FCMA"); + if (x & HWCAP_LRCPC) + puts("HWCAP_LRCPC"); + if (x & HWCAP_DCPOP) + puts("HWCAP_DCPOP"); + if (x & HWCAP_SHA3) + puts("HWCAP_SHA3"); + if (x & HWCAP_SM3) + puts("HWCAP_SM3"); + if (x & HWCAP_SM4) + puts("HWCAP_SM4"); + if (x & HWCAP_ASIMDDP) + puts("HWCAP_ASIMDDP"); + if (x & HWCAP_SHA512) + puts("HWCAP_SHA512"); + if (x & HWCAP_SVE) + puts("HWCAP_SVE"); + if (x & HWCAP_ASIMDFHM) + puts("HWCAP_ASIMDFHM"); + if (x & HWCAP_DIT) + puts("HWCAP_DIT"); + if (x & HWCAP_USCAT) + puts("HWCAP_USCAT"); + if (x & HWCAP_ILRCPC) + puts("HWCAP_ILRCPC"); + if (x & HWCAP_FLAGM) + puts("HWCAP_FLAGM"); + if (x & HWCAP_SSBS) + puts("HWCAP_SSBS"); + if (x & HWCAP_SB) + puts("HWCAP_SB"); + if (x & HWCAP_PACA) + puts("HWCAP_PACA"); + if (x & HWCAP_PACG) + puts("HWCAP_PACG"); x = getauxval(AT_HWCAP2); - if (x & HWCAP2_DCPODP) puts("HWCAP2_DCPODP"); - if (x & HWCAP2_SVE2) puts("HWCAP2_SVE2"); - if (x & HWCAP2_SVEAES) puts("HWCAP2_SVEAES"); - if (x & HWCAP2_SVEPMULL) puts("HWCAP2_SVEPMULL"); - if (x & HWCAP2_SVEBITPERM) puts("HWCAP2_SVEBITPERM"); - if (x & HWCAP2_SVESHA3) puts("HWCAP2_SVESHA3"); - if (x & HWCAP2_SVESM4) puts("HWCAP2_SVESM4"); - if (x & HWCAP2_FLAGM2) puts("HWCAP2_FLAGM2"); - if (x & HWCAP2_FRINT) puts("HWCAP2_FRINT"); - if (x & HWCAP2_SVEI8MM) puts("HWCAP2_SVEI8MM"); - if (x & HWCAP2_SVEF32MM) puts("HWCAP2_SVEF32MM"); - if (x & HWCAP2_SVEF64MM) puts("HWCAP2_SVEF64MM"); - if (x & HWCAP2_SVEBF16) puts("HWCAP2_SVEBF16"); - if (x & HWCAP2_I8MM) puts("HWCAP2_I8MM"); - if (x & HWCAP2_BF16) puts("HWCAP2_BF16"); - if (x & HWCAP2_DGH) puts("HWCAP2_DGH"); - if (x & HWCAP2_RNG) puts("HWCAP2_RNG"); - if (x & HWCAP2_BTI) puts("HWCAP2_BTI"); - if (x & HWCAP2_MTE) puts("HWCAP2_MTE"); + if (x & HWCAP2_DCPODP) + puts("HWCAP2_DCPODP"); + if (x & HWCAP2_SVE2) + puts("HWCAP2_SVE2"); + if (x & HWCAP2_SVEAES) + puts("HWCAP2_SVEAES"); + if (x & HWCAP2_SVEPMULL) + puts("HWCAP2_SVEPMULL"); + if (x & HWCAP2_SVEBITPERM) + puts("HWCAP2_SVEBITPERM"); + if (x & HWCAP2_SVESHA3) + puts("HWCAP2_SVESHA3"); + if (x & HWCAP2_SVESM4) + puts("HWCAP2_SVESM4"); + if (x & HWCAP2_FLAGM2) + puts("HWCAP2_FLAGM2"); + if (x & HWCAP2_FRINT) + puts("HWCAP2_FRINT"); + if (x & HWCAP2_SVEI8MM) + puts("HWCAP2_SVEI8MM"); + if (x & HWCAP2_SVEF32MM) + puts("HWCAP2_SVEF32MM"); + if (x & HWCAP2_SVEF64MM) + puts("HWCAP2_SVEF64MM"); + if (x & HWCAP2_SVEBF16) + puts("HWCAP2_SVEBF16"); + if (x & HWCAP2_I8MM) + puts("HWCAP2_I8MM"); + if (x & HWCAP2_BF16) + puts("HWCAP2_BF16"); + if (x & HWCAP2_DGH) + puts("HWCAP2_DGH"); + if (x & HWCAP2_RNG) + puts("HWCAP2_RNG"); + if (x & HWCAP2_BTI) + puts("HWCAP2_BTI"); + if (x & HWCAP2_MTE) + puts("HWCAP2_MTE"); #endif /* __aarch64__ */ } diff --git a/tool/viz/img.c b/tool/viz/img.c index 99da68b44..888e622d8 100644 --- a/tool/viz/img.c +++ b/tool/viz/img.c @@ -46,8 +46,10 @@ void PrintImg(const char *path) { size_t n; int yn, xn, cn, w, h; void *img, *pix, *src; - if (!(img = gc(xslurp(path, &n)))) exit(2); - if (!(pix = gc(stbi_load_from_memory(img, n, &xn, &yn, &cn, 0)))) exit(3); + if (!(img = gc(xslurp(path, &n)))) + exit(2); + if (!(pix = gc(stbi_load_from_memory(img, n, &xn, &yn, &cn, 0)))) + exit(3); if (linktag) { printf("", path); } @@ -71,7 +73,8 @@ void PrintImg(const char *path) { } int main(int argc, char *argv[]) { - if (!NoDebug()) ShowCrashReports(); + if (!NoDebug()) + ShowCrashReports(); int i; while ((i = getopt(argc, argv, "?huas01234")) != -1) { switch (i) { diff --git a/tool/viz/lib/convoindex.c b/tool/viz/lib/convoindex.c index 97a8914e3..f21391f70 100644 --- a/tool/viz/lib/convoindex.c +++ b/tool/viz/lib/convoindex.c @@ -31,9 +31,12 @@ unsigned *convoindex(unsigned leftpad, unsigned n, unsigned rightpad) { unsigned i, j, *p; if ((p = malloc(sizeof(unsigned) * (leftpad + n + rightpad)))) { i = 0; - for (j = 0; j < leftpad; ++j) p[i++] = 0; - for (j = 0; j < n; ++j) p[i++] = j; - for (j = 0; j < rightpad; ++j) p[i++] = n - 1; + for (j = 0; j < leftpad; ++j) + p[i++] = 0; + for (j = 0; j < n; ++j) + p[i++] = j; + for (j = 0; j < rightpad; ++j) + p[i++] = n - 1; } return p; } diff --git a/tool/viz/lib/formatstringtable-assembly.c b/tool/viz/lib/formatstringtable-assembly.c index 267b50e3e..b126c60bc 100644 --- a/tool/viz/lib/formatstringtable-assembly.c +++ b/tool/viz/lib/formatstringtable-assembly.c @@ -112,7 +112,8 @@ void *FormatStringTableAsAssembly(long yn, long xn, const char *const T[yn][xn], EmitSection(yn, xn, w, GetArrayAlignment(yn, xn, w, align), emit, a); emit(name, a); emit(":", a); - if (strwidth(name, 0) >= 8) emit("\n", a); + if (strwidth(name, 0) >= 8) + emit("\n", a); FormatStringTable(yn, xn, T, emit, a, gc(xstrcat("\t.", storage, "\t")), ",", "\n"); emit("\t.endobj\t", a); diff --git a/tool/viz/lib/formatstringtable.c b/tool/viz/lib/formatstringtable.c index f3db79284..af74d3b3b 100644 --- a/tool/viz/lib/formatstringtable.c +++ b/tool/viz/lib/formatstringtable.c @@ -51,8 +51,10 @@ void *FormatStringTable(long yn, long xn, const char *const T[yn][xn], for (y = 0; y < yn; ++y) { emit(startrow, a); for (x = 0; x < xn; ++x) { - if (x) emit(comma, a); - for (n = w - strwidth(T[y][x], 0), i = 0; i < n; ++i) emit(" ", a); + if (x) + emit(comma, a); + for (n = w - strwidth(T[y][x], 0), i = 0; i < n; ++i) + emit(" ", a); emit(T[y][x], a); } emit(endrow, a); diff --git a/tool/viz/lib/sharpen.c b/tool/viz/lib/sharpen.c index 548298a37..55bd5cdd0 100644 --- a/tool/viz/lib/sharpen.c +++ b/tool/viz/lib/sharpen.c @@ -61,8 +61,10 @@ long sharpen(long cn, long yw, long xw, unsigned char p[cn][yw][xw], long yn, rc = enomem(); } free(ta); - if (ix) free(ix - 1); - if (iy) free(iy - 1); + if (ix) + free(ix - 1); + if (iy) + free(iy - 1); } else { rc = einval(); } diff --git a/tool/viz/lib/sobel.c b/tool/viz/lib/sobel.c index b3b43049f..bab9e5f71 100644 --- a/tool/viz/lib/sobel.c +++ b/tool/viz/lib/sobel.c @@ -40,8 +40,10 @@ forceinline void ConvolveGradient(unsigned yn, unsigned xn, tmp = _mapanon((size = ROUNDUP(sizeof(float) * 4 * xn * yn, FRAMESIZE))); for (y = 0; y < yn - KW + 1; ++y) { for (x = 0; x < xn - KW + 1; ++x) { - for (k = 0; k < 4; ++k) py[k] = 0; - for (k = 0; k < 4; ++k) px[k] = 0; + for (k = 0; k < 4; ++k) + py[k] = 0; + for (k = 0; k < 4; ++k) + px[k] = 0; for (i = 0; i < KW; ++i) { for (j = 0; j < KW; ++j) { for (k = 0; k < 4; ++k) { diff --git a/tool/viz/lib/stringbuilder.c b/tool/viz/lib/stringbuilder.c index 79c13c604..6f0771f52 100644 --- a/tool/viz/lib/stringbuilder.c +++ b/tool/viz/lib/stringbuilder.c @@ -26,7 +26,8 @@ static dontinline void StringBuilderGrow(size_t need, struct StringBuilder *sb) { size_t n2; n2 = MAX(16, sb->n); - while (sb->i + need > n2) n2 += n2 >> 1; + while (sb->i + need > n2) + n2 += n2 >> 1; sb->p = xrealloc(sb->p, n2); sb->n = n2; } @@ -39,7 +40,8 @@ int StringBuilderAppend(const char *s, struct StringBuilder *sb) { size_t size; CHECK_LE(sb->i, sb->n); size = strlen(s); - if (sb->i + size + 1 > sb->n) StringBuilderGrow(size + 1, sb); + if (sb->i + size + 1 > sb->n) + StringBuilderGrow(size + 1, sb); memcpy(sb->p + sb->i, s, size + 1); sb->i += size; return 0; diff --git a/tool/viz/lib/unsharp.c b/tool/viz/lib/unsharp.c index 2626f9b0b..1c1eb9cb4 100644 --- a/tool/viz/lib/unsharp.c +++ b/tool/viz/lib/unsharp.c @@ -66,7 +66,9 @@ long unsharp(long cn, long yw, long xw, unsigned char img[cn][yw][xw], long yn, rc = enomem(); } free(t); - if (ix) free(ix - 2); - if (iy) free(iy - 2); + if (ix) + free(ix - 2); + if (iy) + free(iy - 2); return rc; } diff --git a/tool/viz/lib/writetoframebuffer.c b/tool/viz/lib/writetoframebuffer.c index 6eb6c8cb2..f46d95387 100644 --- a/tool/viz/lib/writetoframebuffer.c +++ b/tool/viz/lib/writetoframebuffer.c @@ -27,11 +27,16 @@ void WriteToFrameBuffer(size_t dyn, size_t dxn, unsigned char dst[dyn][dxn][4], unsigned y, x, k, upix[4]; for (y = 0; y < yn; ++y) { for (x = 0; x < xn; ++x) { - for (k = 0; k < 4; ++k) fpix[k] = src[y][x][k]; - for (k = 0; k < 4; ++k) fpix[k] *= 255; - for (k = 0; k < 4; ++k) ipix[k] = fpix[k] + .5f; - for (k = 0; k < 4; ++k) upix[k] = MAX(0, ipix[k]); - for (k = 0; k < 4; ++k) upix[k] = MIN(255, upix[k]); + for (k = 0; k < 4; ++k) + fpix[k] = src[y][x][k]; + for (k = 0; k < 4; ++k) + fpix[k] *= 255; + for (k = 0; k < 4; ++k) + ipix[k] = fpix[k] + .5f; + for (k = 0; k < 4; ++k) + upix[k] = MAX(0, ipix[k]); + for (k = 0; k < 4; ++k) + upix[k] = MIN(255, upix[k]); dst[y][x][0] = upix[2]; dst[y][x][1] = upix[1]; dst[y][x][2] = upix[0]; diff --git a/tool/viz/lib/ycbcr2rgb3.c b/tool/viz/lib/ycbcr2rgb3.c index c038dd4a5..4e8e84b63 100644 --- a/tool/viz/lib/ycbcr2rgb3.c +++ b/tool/viz/lib/ycbcr2rgb3.c @@ -163,7 +163,8 @@ void YCbCrComputeCoefficients(int swing, double gamma, void YCbCrInit(struct YCbCr **ycbcr, bool yonly, int swing, double gamma, const double gamut[3], const double illuminant[3]) { int i; - if (!*ycbcr) *ycbcr = xcalloc(1, sizeof(struct YCbCr)); + if (!*ycbcr) + *ycbcr = xcalloc(1, sizeof(struct YCbCr)); (*ycbcr)->yonly = yonly; bzero((*ycbcr)->magnums, sizeof((*ycbcr)->magnums)); bzero((*ycbcr)->lighting, sizeof((*ycbcr)->lighting)); @@ -318,8 +319,10 @@ void YCbCr2RgbScaler(struct YCbCr *me, long dyn, long dxn, yox, pry, prx); YCbCrComputeSamplingSolution(&me->chroma, dyn, dxn, scyn, scxn, cry, crx, coy, cox, pry, prx); - if (pf8_) sharpen(1, yys, yxs, (void *)Y, yyn, yxn); - if (pf9_) unsharp(1, yys, yxs, (void *)Y, yyn, yxn); + if (pf8_) + sharpen(1, yys, yxs, (void *)Y, yyn, yxn); + if (pf9_) + unsharp(1, yys, yxs, (void *)Y, yyn, yxn); GyaradosUint8(yys, yxs, Y, yys, yxs, Y, dyn, dxn, syn, sxn, 0, 255, me->luma.cy, me->luma.cx, true); GyaradosUint8(cys, cxs, Cb, cys, cxs, Cb, dyn, dxn, scyn, scxn, 0, 255, diff --git a/tool/viz/life.c b/tool/viz/life.c index c01118719..a57ebbe6c 100644 --- a/tool/viz/life.c +++ b/tool/viz/life.c @@ -313,7 +313,8 @@ static void AppendData(char *data, unsigned len) { unsigned n; if (buffer.i + len + 1 > buffer.n) { n = MAX(buffer.i + len + 1, MAX(16, buffer.n + (buffer.n >> 1))); - if (!(p = realloc(buffer.p, n))) return; + if (!(p = realloc(buffer.p, n))) + return; buffer.p = p; buffer.n = n; } @@ -393,7 +394,8 @@ static void OnTurbo(void) { static void OnSlowmo(void) { --speed; - if (speed < 1) speed = 1; + if (speed < 1) + speed = 1; } static void SetZoom(long y, long x, int d) { @@ -417,15 +419,18 @@ static void OnUnzoom(long y, long x) { static void OnMouseLeftDrag(long y, long x) { int i; - if (y == save_y && x == save_x) return; + if (y == save_y && x == save_x) + return; save_y = y; save_x = x; y = top + (y << (zoom + !!zoom)); x = left + (x << zoom); y += _rand64() & ((1ul << (zoom + !!zoom)) - 1); x += _rand64() & ((1ul << zoom) - 1); - if (y < 0 || y >= byn) return; - if (x < 0 || x >= bxn) return; + if (y < 0 || y >= byn) + return; + if (x < 0 || x >= bxn) + return; if (erase) { Unset(y, x); } else { @@ -447,8 +452,10 @@ static void OnMouseLeftDown(long y, long x) { y = top + (y << (zoom + !!zoom)); x = left + (x << zoom); erase = false; - if (y < 0 || y >= byn) return; - if (x < 0 || x >= bxn) return; + if (y < 0 || y >= byn) + return; + if (x < 0 || x >= bxn) + return; if ((erase = Test(y, x))) { Unset(y, x); } else { @@ -472,7 +479,8 @@ static void OnMouseRightDrag(long y, long x) { long dy, dx, h, w; dy = (save_y - y) << zoom; dx = (save_x - x) << zoom; - if (zoom) dy <<= 1; + if (zoom) + dy <<= 1; if (natural) { dy = -dy; dx = -dx; @@ -494,7 +502,8 @@ static void *NewBoard(size_t *out_size) { p = _mapanon(n); mprotect(p, getauxval(AT_PAGESZ), 0); mprotect(p + k, n - k, 0); - if (out_size) *out_size = n; + if (out_size) + *out_size = n; return p + getauxval(AT_PAGESZ); } @@ -524,7 +533,8 @@ static void GenerateStatusLine(void) { static void OnHeader(void) { size_t n; - if (!buffer.i) return; + if (!buffer.i) + return; switch (buffer.p[0]) { case 'N': if (buffer.i > 2) { @@ -541,7 +551,8 @@ static void OnHeader(void) { static int ReadChar(FILE *f) { int c; ++column; - if ((c = fgetc(f)) == -1) return -1; + if ((c = fgetc(f)) == -1) + return -1; if (c == '\n') { ++line; column = 0; @@ -552,10 +563,12 @@ static int ReadChar(FILE *f) { static int GetChar(FILE *f) { int c; for (;;) { - if ((c = ReadChar(f)) == -1) return -1; + if ((c = ReadChar(f)) == -1) + return -1; if (c == '#' && column == 1) { for (;;) { - if ((c = ReadChar(f)) == -1) return -1; + if ((c = ReadChar(f)) == -1) + return -1; if (c == '\r') { continue; } else if (c == '\n') { @@ -575,30 +588,40 @@ static int LoadFile(const char *path) { long c, y, x, i, n, yn, xn, yo, xo; line = 0; f = fopen(path, "r"); - if (GetChar(f) != 'x') goto ReadError; - if (GetChar(f) != ' ') goto ReadError; - if (GetChar(f) != '=') goto ReadError; - if (GetChar(f) != ' ') goto ReadError; + if (GetChar(f) != 'x') + goto ReadError; + if (GetChar(f) != ' ') + goto ReadError; + if (GetChar(f) != '=') + goto ReadError; + if (GetChar(f) != ' ') + goto ReadError; xn = 0; for (;;) { - if ((c = GetChar(f)) == -1) goto ReadError; - if (!isdigit(c)) break; + if ((c = GetChar(f)) == -1) + goto ReadError; + if (!isdigit(c)) + break; xn *= 10; xn += c - '0'; } do { - if ((c = GetChar(f)) == -1) goto ReadError; + if ((c = GetChar(f)) == -1) + goto ReadError; } while (!isdigit(c)); yn = 0; do { yn *= 10; yn += c - '0'; - if ((c = GetChar(f)) == -1) goto ReadError; + if ((c = GetChar(f)) == -1) + goto ReadError; } while (isdigit(c)); while (c != '\n') { - if ((c = ReadChar(f)) == -1) goto ReadError; + if ((c = ReadChar(f)) == -1) + goto ReadError; } - if (yn > byn || xn > bxn) goto ReadError; + if (yn > byn || xn > bxn) + goto ReadError; SwapBoards(); bzero(board, (byn * bxn) >> 3); yo = byn / 2 - yn / 2; @@ -606,7 +629,8 @@ static int LoadFile(const char *path) { y = 0; x = 0; for (;;) { - if ((c = GetChar(f)) == -1) goto ReadError; + if ((c = GetChar(f)) == -1) + goto ReadError; if (c == '!') { break; } else if (isspace(c)) { @@ -615,8 +639,10 @@ static int LoadFile(const char *path) { if (isdigit(c)) { n = c - '0'; for (;;) { - if ((c = GetChar(f)) == -1) goto ReadError; - if (!isdigit(c)) break; + if ((c = GetChar(f)) == -1) + goto ReadError; + if (!isdigit(c)) + break; n *= 10; n += c - '0'; } @@ -624,12 +650,14 @@ static int LoadFile(const char *path) { n = 1; } if (c == '$') { - if (++y == yn) y = 0; + if (++y == yn) + y = 0; x = 0; } else if (c == 'b' || c == 'o') { for (i = 0; i < n; ++i) { if (x >= xn) { - if (++y == yn) y = 0; + if (++y == yn) + y = 0; x = 0; } if (c == 'o') { @@ -758,9 +786,11 @@ static void OnSigWinch(int sig) { static void OnMouse(char *p) { int e, x, y; e = strtol(p, &p, 10); - if (*p == ';') ++p; + if (*p == ';') + ++p; x = min(txn, max(1, strtol(p, &p, 10))) - 1; - if (*p == ';') ++p; + if (*p == ';') + ++p; y = min(tyn, max(1, strtol(p, &p, 10))) - 1; e |= (*p == 'm') << 2; switch (e) { @@ -847,7 +877,8 @@ static void ReadKeyboard(void) { char buf[32], *p = buf; bzero(buf, sizeof(buf)); if (readansi(0, buf, sizeof(buf)) == -1) { - if (errno == EINTR) return; + if (errno == EINTR) + return; exit(errno); } switch (*p++) { @@ -951,7 +982,8 @@ static int InvertXtermGreyscale(int x) { static int ByteToColor(int x) { uint8_t c; c = x / 256. * 24 + 232; - if (white) c = InvertXtermGreyscale(c); + if (white) + c = InvertXtermGreyscale(c); return c; } @@ -1095,7 +1127,8 @@ static bool HasPendingInput(void) { static bool ShouldDraw(void) { struct timespec now; static struct timespec next; - if (!isdragging) return true; + if (!isdragging) + return true; now = timespec_real(); if (timespec_cmp(now, next) > 0 && !HasPendingInput()) { next = timespec_add(now, timespec_frommicros(1. / 24 * 1e6)); @@ -1384,7 +1417,8 @@ static void Gui(void) { ╚────────────────────────────────────────────────────────────────────────────│*/ int main(int argc, char *argv[]) { - if (!NoDebug()) ShowCrashReports(); + if (!NoDebug()) + ShowCrashReports(); out = 1; speed = 1; tyn = right = 80; diff --git a/tool/viz/maxmind.c b/tool/viz/maxmind.c index e7e469b7a..823cf460a 100644 --- a/tool/viz/maxmind.c +++ b/tool/viz/maxmind.c @@ -123,7 +123,8 @@ int main(int argc, char *argv[]) { MMDB_open("/usr/local/share/maxmind/GeoLite2-ASN.mmdb", 0, asdb)); for (rc = 0, i = 1; i < argc; ++i) { if (PrintIpInfo(argv[i]) != -1) { - if (i + 1 < argc) printf("\n"); + if (i + 1 < argc) + printf("\n"); } else { fprintf(stderr, "NOT FOUND: %s\n", argv[i]); rc = 1; diff --git a/tool/viz/memzoom.c b/tool/viz/memzoom.c index 9ff4a2d3b..8c4eebf7c 100644 --- a/tool/viz/memzoom.c +++ b/tool/viz/memzoom.c @@ -343,7 +343,8 @@ static void PreventBufferbloat(void) { static bool HasPendingInput(void) { struct pollfd fds[1]; - if (IsWindows()) return true; /* XXX */ + if (IsWindows()) + return true; /* XXX */ fds[0].fd = 0; fds[0].events = POLLIN; fds[0].revents = 0; @@ -355,8 +356,10 @@ static int GetCurrentRange(void) { int i; if (ranges.i) { for (i = 0; i < ranges.i; ++i) { - if (offset < ranges.p[i].a) return MAX(0, i - 1); - if (offset < ranges.p[i].b) return i; + if (offset < ranges.p[i].a) + return MAX(0, i - 1); + if (offset < ranges.p[i].b) + return i; } return ranges.i - 1; } else { @@ -472,9 +475,11 @@ static void OnPrevEnd(void) { static void OnMouse(char *p) { int e, x, y; e = strtol(p, &p, 10); - if (*p == ';') ++p; + if (*p == ';') + ++p; x = min(txn, max(1, strtol(p, &p, 10))) - 1; - if (*p == ';') ++p; + if (*p == ';') + ++p; y = min(tyn, max(1, strtol(p, &p, 10))) - 1; e |= (*p == 'm') << 2; switch (e) { @@ -523,7 +528,8 @@ static void ReadKeyboard(void) { char buf[32], *p = buf; bzero(buf, sizeof(buf)); if (readansi(0, buf, sizeof(buf)) == -1) { - if (errno == EINTR) return; + if (errno == EINTR) + return; exit(errno); } switch (*p++) { @@ -698,8 +704,10 @@ static void LoadRanges(void) { range.b = 0; ranges.i = 0; for (;;) { - if ((n = read(fd, b, sizeof(b))) == -1) exit(1); - if (!n) break; + if ((n = read(fd, b, sizeof(b))) == -1) + exit(1); + if (!n) + break; for (i = 0; i < n; ++i) { switch (t) { case 0: @@ -807,7 +815,8 @@ static void Render(void) { for (i = 0, n = p - buffer; i < n; i += got) { got = 0; if ((rc = write(out, buffer + i, n - i)) == -1) { - if (errno == EINTR) continue; + if (errno == EINTR) + continue; exit(errno); } got = rc; @@ -828,7 +837,8 @@ static void Zoom(long have) { n = have >> zoom; i = n / txn; r = n % txn; - if (r) ++i; + if (r) + ++i; if (order == LINEAR) { for (; i < tyn; ++i) { canvas[txn * i] = '~'; @@ -877,7 +887,8 @@ static void MemZoom(void) { } if (ok && HasPendingInput()) { ReadKeyboard(); - if (!IsWindows()) continue; /* XXX */ + if (!IsWindows()) + continue; /* XXX */ } ok = true; if (pid) { @@ -953,7 +964,8 @@ static void GetOpts(int argc, char *argv[]) { } int main(int argc, char *argv[]) { - if (!NoDebug()) ShowCrashReports(); + if (!NoDebug()) + ShowCrashReports(); out = 1; GetOpts(argc, argv); Open(); diff --git a/tool/viz/printansi.c b/tool/viz/printansi.c index 733701d6b..dd9ebaf59 100644 --- a/tool/viz/printansi.c +++ b/tool/viz/printansi.c @@ -172,7 +172,8 @@ static void GetOpts(int *argc, char *argv[]) { } } if (optind == *argc) { - if (!g_flags.out) g_flags.out = "-"; + if (!g_flags.out) + g_flags.out = "-"; argv[(*argc)++] = "-"; } if (!g_flags.full && (!g_flags.width || !g_flags.width)) { @@ -269,7 +270,8 @@ struct Block { static void *Raster(long yn, long xn, unsigned char Y[yn][xn]) { long y, x, i, j, k, s, bi, bs; for (y = 0; y + 4 <= yn; y += 4) { - if (y) fputc('\n', stdout); + if (y) + fputc('\n', stdout); for (x = 0; x + 2 <= xn; x += 2) { bi = 0; bs = LONG_MAX; diff --git a/tool/viz/printimage.c b/tool/viz/printimage.c index fb2c5974a..8185fa120 100644 --- a/tool/viz/printimage.c +++ b/tool/viz/printimage.c @@ -228,7 +228,8 @@ static void PrintImageImpl(long syn, long sxn, unsigned char RGB[3][syn][sxn], unsigned char a[3], b[3]; didhalfy = false; for (y = y0; y < yn; y += dy) { - if (y) printf("\e[0m\n"); + if (y) + printf("\e[0m\n"); for (x = x0; x < xn; x += dx) { a[0] = RGB[0][y][x]; a[1] = RGB[1][y][x]; @@ -328,8 +329,10 @@ static void PrintImageSerious(long yn, long xn, unsigned char RGB[3][yn][xn], long y, x; struct TtyRgb bg = {0x12, 0x34, 0x56, 0}; struct TtyRgb fg = {0x12, 0x34, 0x56, 0}; - if (g_flags.unsharp) unsharp(3, yn, xn, RGB, yn, xn); - if (g_flags.dither) dither(yn, xn, RGB, yn, xn); + if (g_flags.unsharp) + unsharp(3, yn, xn, RGB, yn, xn); + if (g_flags.dither) + dither(yn, xn, RGB, yn, xn); if (yn && xn) { for (y = 0; y < tyn; ++y) { for (x = 0; x < txn; ++x) { @@ -396,8 +399,10 @@ void WithImageFile(const char *path, wyn = g_winsize.ws_row * 2; wxn = g_winsize.ws_col; if (g_flags.ignoreaspect) { - if (!dyn) dyn = wyn; - if (!dxn) dxn = wxn * (1 + !g_flags.half); + if (!dyn) + dyn = wyn; + if (!dxn) + dxn = wxn * (1 + !g_flags.half); } if (!dyn && !dxn) { if (sxn * wyn > syn * wxn) { @@ -439,7 +444,8 @@ int main(int argc, char *argv[]) { int i; ShowCrashReports(); GetOpts(&argc, argv); - if (optind == argc) PrintUsage(EXIT_SUCCESS, STDOUT_FILENO); + if (optind == argc) + PrintUsage(EXIT_SUCCESS, STDOUT_FILENO); stbi_set_unpremultiply_on_load(true); for (i = optind; i < argc; ++i) { WithImageFile(argv[i], ProcessImage); diff --git a/tool/viz/printpeb.c b/tool/viz/printpeb.c index 7d9abbc43..a92ab375d 100644 --- a/tool/viz/printpeb.c +++ b/tool/viz/printpeb.c @@ -58,7 +58,8 @@ int NextBestThing(void) { posix_fadvise(fd, 0, 0, MADV_SEQUENTIAL); ssize_t wrote; while ((wrote = copyfd(fd, 1, -1)) != -1) { - if (wrote == 0) break; + if (wrote == 0) + break; } close(fd); return 0; @@ -139,11 +140,16 @@ void PrintSystemInfo(void) { } const char *ft2str(int ft) { - if (ft == kNtFileTypeUnknown) return "kNtFileTypeUnknown"; - if (ft == kNtFileTypeDisk) return "kNtFileTypeDisk"; - if (ft == kNtFileTypeChar) return "kNtFileTypeChar"; - if (ft == kNtFileTypePipe) return "kNtFileTypePipe"; - if (ft == kNtFileTypeRemote) return "kNtFileTypeRemote"; + if (ft == kNtFileTypeUnknown) + return "kNtFileTypeUnknown"; + if (ft == kNtFileTypeDisk) + return "kNtFileTypeDisk"; + if (ft == kNtFileTypeChar) + return "kNtFileTypeChar"; + if (ft == kNtFileTypePipe) + return "kNtFileTypePipe"; + if (ft == kNtFileTypeRemote) + return "kNtFileTypeRemote"; return "wut?"; } diff --git a/tool/viz/printvideo.c b/tool/viz/printvideo.c index 19b2acd59..7d5c04127 100644 --- a/tool/viz/printvideo.c +++ b/tool/viz/printvideo.c @@ -529,8 +529,10 @@ static bool OpenSpeaker(void) { if (!once) { once = true; i = 0; - if (ffplay_) tryspeakerfns_[i++] = TryFfplay; - if (sox_) tryspeakerfns_[i++] = TrySox; + if (ffplay_) + tryspeakerfns_[i++] = TryFfplay; + if (sox_) + tryspeakerfns_[i++] = TrySox; } snprintf(fifopath_, sizeof(fifopath_), "%s%s.%d.%d.wav", __get_tmpdir(), firstnonnull(program_invocation_short_name, "unknown"), getpid(), @@ -589,7 +591,8 @@ static void DescribeAlgorithms(char *p) { break; case kTtyQuantAnsi: p = stpcpy(p, " aixterm ansi"); - if (istango_) p = stpcpy(p, " tango"); + if (istango_) + p = stpcpy(p, " tango"); break; default: break; @@ -609,7 +612,8 @@ static void DescribeAlgorithms(char *p) { } static char *StartRender(char *vt) { - if (!ttymode_) vt += sprintf(vt, "\r\n\r\n"); + if (!ttymode_) + vt += sprintf(vt, "\r\n\r\n"); if (fullclear_) { vt += sprintf(vt, "\e[0m\e[H\e[J"); fullclear_ = false; @@ -640,8 +644,10 @@ static bool HasAdjustments(void) { } static char *DescribeAdjustments(char *p) { - if (emboss_) p = stpcpy(p, " emboss"); - if (sobel_) p = stpcpy(p, " sobel"); + if (emboss_) + p = stpcpy(p, " emboss"); + if (sobel_) + p = stpcpy(p, " sobel"); switch (sharp_) { case kSharpSharp: p = stpcpy(p, " sharp"); @@ -662,21 +668,36 @@ static char *DescribeAdjustments(char *p) { default: break; } - if (IsNonZeroFloat(hue_)) p += sprintf(p, " hue%+.2f", hue_); - if (IsNonZeroFloat(sat_)) p += sprintf(p, " sat%+.2f", sat_); - if (IsNonZeroFloat(lit_)) p += sprintf(p, " lit%+.2f", lit_); - if (pf1_) p = stpcpy(p, " PF1"); - if (pf2_) p = stpcpy(p, " PF2"); - if (pf3_) p = stpcpy(p, " PF3"); - if (pf4_) p = stpcpy(p, " PF4"); - if (pf5_) p = stpcpy(p, " PF5"); - if (pf6_) p = stpcpy(p, " PF6"); - if (pf7_) p = stpcpy(p, " PF7"); - if (pf8_) p = stpcpy(p, " PF8"); - if (pf9_) p = stpcpy(p, " PF9"); - if (pf10_) p = stpcpy(p, " PF10"); - if (pf11_) p = stpcpy(p, " PF11"); - if (pf12_) p = stpcpy(p, " PF12"); + if (IsNonZeroFloat(hue_)) + p += sprintf(p, " hue%+.2f", hue_); + if (IsNonZeroFloat(sat_)) + p += sprintf(p, " sat%+.2f", sat_); + if (IsNonZeroFloat(lit_)) + p += sprintf(p, " lit%+.2f", lit_); + if (pf1_) + p = stpcpy(p, " PF1"); + if (pf2_) + p = stpcpy(p, " PF2"); + if (pf3_) + p = stpcpy(p, " PF3"); + if (pf4_) + p = stpcpy(p, " PF4"); + if (pf5_) + p = stpcpy(p, " PF5"); + if (pf6_) + p = stpcpy(p, " PF6"); + if (pf7_) + p = stpcpy(p, " PF7"); + if (pf8_) + p = stpcpy(p, " PF8"); + if (pf9_) + p = stpcpy(p, " PF9"); + if (pf10_) + p = stpcpy(p, " PF10"); + if (pf11_) + p = stpcpy(p, " PF11"); + if (pf12_) + p = stpcpy(p, " PF12"); *p++ = ' '; *p++ = '\0'; return p; @@ -782,8 +803,10 @@ static void TranscodeVideo(plm_frame_t *pf) { TIMEIT(t1, { pary_ = 2; - if (pf1_) pary_ = 1.; - if (pf2_) pary_ = (266 / 64.) * (900 / 1600.); + if (pf1_) + pary_ = 1.; + if (pf2_) + pary_ = (266 / 64.) * (900 / 1600.); pary_ *= plm_get_pixel_aspect_ratio(plm_); YCbCr2RgbScale(g2_->yn, g2_->xn, g2_->b, pf->y.height, pf->y.width, (void *)pf->y.data, pf->cr.height, pf->cr.width, @@ -805,8 +828,10 @@ static void TranscodeVideo(plm_frame_t *pf) { default: break; } - if (sobel_) sobel(g2_); - if (emboss_) emboss(g2_); + if (sobel_) + sobel(g2_); + if (emboss_) + emboss(g2_); switch (sharp_) { case kSharpSharp: sharpen(3, g2_->yn, g2_->xn, g2_->b, g2_->yn, g2_->xn); @@ -932,7 +957,8 @@ static void WriteVideo(void) { } static void RefreshDisplay(void) { - if (f1_ && f1_->n) f1_->i = 0; + if (f1_ && f1_->n) + f1_->i = 0; DimensionDisplay(); resized_ = false; historyclear_ = true; @@ -1287,8 +1313,10 @@ static void PerformBestEffortIo(void) { DEBUGF("poll() toto=%d [grace=%,ldns]", toto, timespec_tonanos(GetGraceTime())); if (toto) { - if (fds[0].revents & (POLLIN | POLLERR)) ReadKeyboard(); - if (fds[1].revents & (POLLOUT | POLLERR)) WriteVideo(); + if (fds[0].revents & (POLLIN | POLLERR)) + ReadKeyboard(); + if (fds[1].revents & (POLLOUT | POLLERR)) + WriteVideo(); } } else if (errno == EINTR) { DEBUGF("poll() → EINTR"); @@ -1300,7 +1328,8 @@ static void PerformBestEffortIo(void) { static void RestoreTty(void) { DrainVideo(); - if (ttymode_) ttysend(outfd_, "\r\n\e[J"); + if (ttymode_) + ttysend(outfd_, "\r\n\e[J"); ttymode_ = false; ttyraw(-1); } @@ -1352,7 +1381,8 @@ static void PrintVideo(void) { static bool AskUserYesOrNoQuestion(const char *prompt) { char c; - if (yes_ || !ttymode_) return true; + if (yes_ || !ttymode_) + return true; ttysend(outfd_, "\r\e[K"); ttysend(outfd_, prompt); ttysend(outfd_, " [yn] "); @@ -1411,8 +1441,10 @@ static void GetOpts(int argc, char *argv[]) { } static void OnExit(void) { - if (playpid_) kill(playpid_, SIGTERM), sched_yield(); - if (plm_) plm_destroy(plm_), plm_ = NULL; + if (playpid_) + kill(playpid_, SIGTERM), sched_yield(); + if (plm_) + plm_destroy(plm_), plm_ = NULL; YCbCrFree(&ycbcr_); RestoreTty(); ttyidentclear(&ti_); @@ -1561,8 +1593,10 @@ int main(int argc, char *argv[]) { ShowCrashReports(); fullclear_ = true; GetOpts(argc, argv); - if (!tuned_) PickDefaults(); - if (optind == argc) PrintUsage(EX_USAGE, STDERR_FILENO); + if (!tuned_) + PickDefaults(); + if (optind == argc) + PrintUsage(EX_USAGE, STDERR_FILENO); patharg_ = argv[optind]; s = commandvenv("SOX", "sox"); sox_ = s ? strdup(s) : 0; @@ -1584,7 +1618,8 @@ int main(int argc, char *argv[]) { xsigaction(SIGWINCH, OnResize, 0, 0, NULL); xsigaction(SIGCHLD, OnSigChld, 0, 0, NULL); xsigaction(SIGPIPE, OnSigPipe, 0, 0, NULL); - if (ttyraw(kTtyLfToCrLf) != -1) ttymode_ = true; + if (ttyraw(kTtyLfToCrLf) != -1) + ttymode_ = true; __cxa_atexit((void *)OnExit, NULL, NULL); __log_file = fopen(logpath_, "a"); if (ischardev(infd_) && ischardev(outfd_)) { @@ -1593,10 +1628,12 @@ int main(int argc, char *argv[]) { infd_ = -1; } /* CHECK_NE(-1, fcntl(outfd_, F_SETFL, O_NONBLOCK)); */ - if (CanPlayAudio()) MakeLatencyLittleLessBad(); + if (CanPlayAudio()) + MakeLatencyLittleLessBad(); TryToOpenFrameBuffer(); RenounceSpecialPrivileges(); - if (t2 > t1) longjmp(jb_, 1); + if (t2 > t1) + longjmp(jb_, 1); OpenVideo(); DimensionDisplay(); starttime_ = timespec_real(); diff --git a/tool/viz/rlimit.c b/tool/viz/rlimit.c index 0cedfe648..3d3b84eb5 100644 --- a/tool/viz/rlimit.c +++ b/tool/viz/rlimit.c @@ -31,7 +31,8 @@ static void SetLimit(int resource, uint64_t soft, uint64_t hard) { struct rlimit old; struct rlimit lim = {soft, hard}; - if (resource == 127) return; + if (resource == 127) + return; if (setrlimit(resource, &lim) == -1) { if (!getrlimit(resource, &old)) { lim.rlim_max = MIN(hard, old.rlim_max); diff --git a/tool/viz/setitimer_accuracy.c b/tool/viz/setitimer_accuracy.c index be88a7a2a..227413514 100644 --- a/tool/viz/setitimer_accuracy.c +++ b/tool/viz/setitimer_accuracy.c @@ -57,5 +57,6 @@ int main(int argc, char *argv[]) { expect = timeval_add(start, interval); signal(SIGALRM, OnTick); setitimer(ITIMER_REAL, &(struct itimerval){interval, interval}, 0); - for (;;) pause(); + for (;;) + pause(); } diff --git a/tool/viz/tailf.c b/tool/viz/tailf.c index 91a4ef46f..054feed29 100644 --- a/tool/viz/tailf.c +++ b/tool/viz/tailf.c @@ -63,28 +63,37 @@ int main(int argc, char *argv[]) { ssize_t n; size_t i, j; bool chopped; - if (argc < 2) return 1; - if ((fd = open(argv[1], O_RDONLY)) == -1) return 2; - if (fstat(fd, &st) == -1) return 3; + if (argc < 2) + return 1; + if ((fd = open(argv[1], O_RDONLY)) == -1) + return 2; + if (fstat(fd, &st) == -1) + return 3; n = st.st_size - MIN(st.st_size, sizeof(buf)); - if ((n = pread(fd, buf, sizeof(buf), n)) == -1) return 4; + if ((n = pread(fd, buf, sizeof(buf), n)) == -1) + return 4; for (p = buf + n, i = 0; i < 10; ++i) { p = firstnonnull(memrchr(buf, '\n', p - buf), buf); } chopped = false; - if (buf + n - p) ++p; + if (buf + n - p) + ++p; i = st.st_size - (buf + n - p); atexit(OnExit); HideCursor(); xsigaction(SIGINT, OnInt, 0, 0, 0); xsigaction(SIGTERM, OnInt, 0, 0, 0); while (!exited) { - if (fstat(fd, &st) == -1) return 5; - if (i > st.st_size) i = 0; + if (fstat(fd, &st) == -1) + return 5; + if (i > st.st_size) + i = 0; for (; i < st.st_size; i += n) { - if ((n = pread(fd, buf, sizeof(buf), i)) == -1) return 6; + if ((n = pread(fd, buf, sizeof(buf), i)) == -1) + return 6; j = n; - while (j && (buf[j - 1] == '\n' || buf[j - 1] == '\r')) --j; + while (j && (buf[j - 1] == '\n' || buf[j - 1] == '\r')) + --j; if (j) { if (chopped) { WriteString("\r\n"); diff --git a/tool/viz/virtualquery.c b/tool/viz/virtualquery.c index f17f9eb38..7168c7202 100644 --- a/tool/viz/virtualquery.c +++ b/tool/viz/virtualquery.c @@ -66,7 +66,8 @@ int main(int argc, char *argv[]) { "RegionSize", "State", "Type", "AllocationProtect", "Protect"); for (p = 0;; p = (char *)mi.BaseAddress + mi.RegionSize) { bzero(&mi, sizeof(mi)); - if (!VirtualQuery(p, &mi, sizeof(mi))) break; + if (!VirtualQuery(p, &mi, sizeof(mi))) + break; sizefmt(b[0], mi.RegionSize, 1024); printf("%.12lx %.12lx %10s %16s %16s %32s %32s\n", mi.AllocationBase, mi.BaseAddress, b[0], DescribeNtMemState(b[1], mi.State), From 69db501c68503fc57cf1590024ab92b4b9eee31f Mon Sep 17 00:00:00 2001 From: Gavin Hayes Date: Thu, 25 Apr 2024 23:01:27 -0400 Subject: [PATCH 010/123] Fix fork locking on win32 (#1141) * Fix fork locking on win32 - __enable_threads / set __threaded in __proc_setup as threads are required for win32 subprocess management - move mmi/fds locking out of pthread_atfork.c into fork.c so it's done anytime __threaded is set instead of being dependent of pthreads - explicitly yoink _pthread_onfork_prepare, _pthread_onfork_parent, and _pthread_onfork_child in pthread_create.c so they are linked in in-case they are separated from _pthread_atfork Big Thanks to @dfyz for help with locating the issue, testing, and devising a fix! * fix child processes not being able to open files, initialize all necessary locks on fork --- libc/intrin/pthreadlock.c | 4 +++ libc/proc/fork.c | 46 ++++++++++++++++++++++++++---- libc/proc/proc.c | 1 + libc/thread/posixthread.internal.h | 1 + libc/thread/pthread_atfork.c | 17 ----------- libc/thread/pthread_create.c | 3 ++ 6 files changed, 49 insertions(+), 23 deletions(-) diff --git a/libc/intrin/pthreadlock.c b/libc/intrin/pthreadlock.c index 68d55325a..3fd1d564a 100644 --- a/libc/intrin/pthreadlock.c +++ b/libc/intrin/pthreadlock.c @@ -20,6 +20,10 @@ pthread_spinlock_t _pthread_lock_obj; +void _pthread_init(void) { + (void)pthread_spin_init(&_pthread_lock_obj, 0); +} + void _pthread_lock(void) { pthread_spin_lock(&_pthread_lock_obj); } diff --git a/libc/proc/fork.c b/libc/proc/fork.c index 6c4706963..68f020fe1 100644 --- a/libc/proc/fork.c +++ b/libc/proc/fork.c @@ -18,6 +18,7 @@ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/assert.h" #include "libc/calls/calls.h" +#include "libc/calls/state.internal.h" #include "libc/calls/struct/sigset.h" #include "libc/calls/struct/sigset.internal.h" #include "libc/calls/syscall-nt.internal.h" @@ -34,12 +35,45 @@ #include "libc/nt/thread.h" #include "libc/proc/proc.internal.h" #include "libc/runtime/internal.h" +#include "libc/runtime/memtrack.internal.h" #include "libc/runtime/runtime.h" #include "libc/runtime/syslib.internal.h" #include "libc/sysv/consts/sig.h" #include "libc/thread/posixthread.internal.h" #include "libc/thread/tls.h" +static void _onfork_prepare(void) { + if (_weaken(_pthread_onfork_prepare)) { + _weaken(_pthread_onfork_prepare)(); + } + _pthread_lock(); + __fds_lock(); + __mmi_lock(); +} + +static void _onfork_parent(void) { + __mmi_unlock(); + __fds_unlock(); + _pthread_unlock(); + if (_weaken(_pthread_onfork_parent)) { + _weaken(_pthread_onfork_parent)(); + } +} + +static void _onfork_child(void) { + pthread_mutexattr_t attr; + pthread_mutexattr_init(&attr); + pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); + extern pthread_mutex_t __mmi_lock_obj; + pthread_mutex_init(&__mmi_lock_obj, &attr); + pthread_mutex_init(&__fds_lock_obj, &attr); + pthread_mutexattr_destroy(&attr); + _pthread_init(); + if (_weaken(_pthread_onfork_child)) { + _weaken(_pthread_onfork_child)(); + } +} + int _fork(uint32_t dwCreationFlags) { struct Dll *e; int ax, dx, tid, parent; @@ -47,8 +81,8 @@ int _fork(uint32_t dwCreationFlags) { BLOCK_SIGNALS; if (IsWindows()) __proc_lock(); - if (__threaded && _weaken(_pthread_onfork_prepare)) { - _weaken(_pthread_onfork_prepare)(); + if (__threaded) { + _onfork_prepare(); } if (!IsWindows()) { ax = sys_fork(); @@ -99,14 +133,14 @@ int _fork(uint32_t dwCreationFlags) { atomic_store_explicit(&pt->pt_canceled, false, memory_order_relaxed); // run user fork callbacks - if (__threaded && _weaken(_pthread_onfork_child)) { - _weaken(_pthread_onfork_child)(); + if (__threaded) { + _onfork_child(); } STRACE("fork() → 0 (child of %d)", parent); } else { // this is the parent process - if (__threaded && _weaken(_pthread_onfork_parent)) { - _weaken(_pthread_onfork_parent)(); + if (__threaded) { + _onfork_parent(); } if (IsWindows()) __proc_unlock(); diff --git a/libc/proc/proc.c b/libc/proc/proc.c index 33aa5f15c..837957482 100644 --- a/libc/proc/proc.c +++ b/libc/proc/proc.c @@ -233,6 +233,7 @@ static textwindows dontinstrument uint32_t __proc_worker(void *arg) { * Lazy initializes process tracker data structures and worker. */ static textwindows void __proc_setup(void) { + __enable_threads(); __proc.onbirth = CreateEvent(0, 0, 0, 0); // auto reset __proc.haszombies = CreateEvent(0, 1, 0, 0); // manual reset __proc.thread = CreateThread(0, 65536, __proc_worker, 0, diff --git a/libc/thread/posixthread.internal.h b/libc/thread/posixthread.internal.h index cacd9e344..b0d56e94c 100644 --- a/libc/thread/posixthread.internal.h +++ b/libc/thread/posixthread.internal.h @@ -105,6 +105,7 @@ intptr_t _pthread_syshand(struct PosixThread *) libcesque; long _pthread_cancel_ack(void) libcesque; void _pthread_decimate(void) libcesque; void _pthread_free(struct PosixThread *, bool) libcesque; +void _pthread_init(void) libcesque; void _pthread_lock(void) libcesque; void _pthread_onfork_child(void) libcesque; void _pthread_onfork_parent(void) libcesque; diff --git a/libc/thread/pthread_atfork.c b/libc/thread/pthread_atfork.c index 71adf7339..fd5cfa34a 100644 --- a/libc/thread/pthread_atfork.c +++ b/libc/thread/pthread_atfork.c @@ -28,7 +28,6 @@ #include "libc/macros.internal.h" #include "libc/mem/mem.h" #include "libc/proc/proc.internal.h" -#include "libc/runtime/memtrack.internal.h" #include "libc/runtime/runtime.h" #include "libc/str/str.h" #include "libc/thread/posixthread.internal.h" @@ -47,8 +46,6 @@ static struct AtForks { atomic_int allocated; } _atforks; -extern pthread_spinlock_t _pthread_lock_obj; - static void _pthread_onfork(int i) { struct AtFork *a; unassert(0 <= i && i <= 2); @@ -65,27 +62,13 @@ static void _pthread_onfork(int i) { void _pthread_onfork_prepare(void) { _pthread_onfork(0); - _pthread_lock(); - __fds_lock(); - __mmi_lock(); } void _pthread_onfork_parent(void) { - __mmi_unlock(); - __fds_unlock(); - _pthread_unlock(); _pthread_onfork(1); } void _pthread_onfork_child(void) { - pthread_mutexattr_t attr; - pthread_mutexattr_init(&attr); - pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); - extern pthread_mutex_t __mmi_lock_obj; - pthread_mutex_init(&__mmi_lock_obj, &attr); - pthread_mutex_init(&__fds_lock_obj, &attr); - pthread_mutexattr_destroy(&attr); - (void)pthread_spin_init(&_pthread_lock_obj, 0); _pthread_onfork(2); } diff --git a/libc/thread/pthread_create.c b/libc/thread/pthread_create.c index b59d74845..9a41a9a1f 100644 --- a/libc/thread/pthread_create.c +++ b/libc/thread/pthread_create.c @@ -60,6 +60,9 @@ __static_yoink("nsync_mu_trylock"); __static_yoink("nsync_mu_rlock"); __static_yoink("nsync_mu_runlock"); __static_yoink("_pthread_atfork"); +__static_yoink("_pthread_onfork_prepare"); +__static_yoink("_pthread_onfork_parent"); +__static_yoink("_pthread_onfork_child"); #define MAP_ANON_OPENBSD 0x1000 #define MAP_STACK_OPENBSD 0x4000 From 2bfd6b37c1ba65ae4947db2670a4195a2f7b64ca Mon Sep 17 00:00:00 2001 From: Gavin Hayes Date: Fri, 26 Apr 2024 23:12:25 -0400 Subject: [PATCH 011/123] Various paginate improvements (#1148) * start on improving __paginate * make __paginate more robust * add __paginate_file * cleanup __paginate unlinking --- libc/runtime/runtime.h | 1 + libc/{proc => x}/paginate.c | 83 ++++++++++++++++++++++++++++++------- 2 files changed, 68 insertions(+), 16 deletions(-) rename libc/{proc => x}/paginate.c (59%) diff --git a/libc/runtime/runtime.h b/libc/runtime/runtime.h index db0dfb253..76fb46983 100644 --- a/libc/runtime/runtime.h +++ b/libc/runtime/runtime.h @@ -103,6 +103,7 @@ int verynice(void); void __warn_if_powersave(void); void _Exit1(int) libcesque wontreturn; void __paginate(int, const char *); +void __paginate_file(int, const char *); /* memory management */ void _weakfree(void *); void *_mapanon(size_t) attributeallocsize((1)) mallocesque; diff --git a/libc/proc/paginate.c b/libc/x/paginate.c similarity index 59% rename from libc/proc/paginate.c rename to libc/x/paginate.c index f5d4b8355..5b86705d0 100644 --- a/libc/proc/paginate.c +++ b/libc/x/paginate.c @@ -17,42 +17,93 @@ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/calls/calls.h" +#include "libc/calls/syscall_support-nt.internal.h" +#include "libc/dce.h" #include "libc/intrin/safemacros.internal.h" #include "libc/limits.h" +#include "libc/mem/gc.h" #include "libc/runtime/runtime.h" #include "libc/str/str.h" +#include "libc/sysv/consts/o.h" #include "libc/temp.h" +#include "libc/x/x.h" + +static char *get_pagerpath(char *pathbuf, size_t pathbufsz) { + char *pagerpath; + if (strcmp(nulltoempty(getenv("TERM")), "dumb") && isatty(0) && isatty(1) && + ((pagerpath = commandv("less", pathbuf, pathbufsz)) || + (pagerpath = commandv("more", pathbuf, pathbufsz)) || + (pagerpath = commandv("more.exe", pathbuf, pathbufsz)) || + (pagerpath = commandv("more.com", pathbuf, pathbufsz)))) { + return pagerpath; + } + return 0; +} + +static bool run_pager(char *args[hasatleast 3]) { + char16_t widepath[PATH_MAX]; + int n, pid; + if (IsWindows() && !strcasecmp(args[0], "/C/Windows/System32/more.com") && + (((n = __mkntpath(args[1], widepath)) == -1) || + !(args[1] = gc(utf16to8(widepath, n, 0))))) { + return false; + } + if ((pid = fork()) != -1) { + putenv("LC_ALL=C.UTF-8"); + putenv("LESSCHARSET=utf-8"); + putenv("LESS=-RS"); + if (!pid) { + execv(args[0], args); + _Exit(127); + } + waitpid(pid, 0, 0); + return true; + } + return false; +} /** * Displays wall of text in terminal with pagination. */ void __paginate(int fd, const char *s) { - int tfd, pid; + int tfd; char *args[3] = {0}; char tmppath[] = "/tmp/paginate.XXXXXX"; char progpath[PATH_MAX]; - if (strcmp(nulltoempty(getenv("TERM")), "dumb") && isatty(0) && isatty(1) && - ((args[0] = commandv("less", progpath, sizeof(progpath))) || - (args[0] = commandv("more", progpath, sizeof(progpath))) || - (args[0] = commandv("more.exe", progpath, sizeof(progpath))))) { + bool done; + if ((args[0] = get_pagerpath(progpath, sizeof(progpath)))) { if ((tfd = mkstemp(tmppath)) != -1) { write(tfd, s, strlen(s)); close(tfd); args[1] = tmppath; - if ((pid = fork()) != -1) { - putenv("LC_ALL=C.UTF-8"); - putenv("LESSCHARSET=utf-8"); - putenv("LESS=-RS"); - if (!pid) { - execv(args[0], args); - _Exit(127); - } - waitpid(pid, 0, 0); - unlink(tmppath); + done = run_pager(args); + unlink(tmppath); + if (done) { return; } - unlink(tmppath); } } write(fd, s, strlen(s)); } + +/** + * Displays a file in terminal with pagination + */ +void __paginate_file(int fd, const char *path) { + char *args[3] = {0}; + char progpath[PATH_MAX]; + if ((args[0] = get_pagerpath(progpath, sizeof(progpath)))) { + args[1] = (char *)path; + if (run_pager(args)) { + return; + } + } + int sfd = open(path, O_RDONLY); + if (sfd != -1) { + ssize_t n; + while ((n = read(sfd, progpath, sizeof(progpath)) > 0)) { + write(fd, progpath, n); + } + } + close(sfd); +} From 0eef971494cb29971e1ced6436b1dffd621d6039 Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Sun, 28 Apr 2024 07:03:56 -0700 Subject: [PATCH 012/123] Add much of C11 threads.h API --- libc/BUILD.mk | 1 + libc/calls/pthread_yield_np.c | 1 + libc/intrin/cosmo_once.c | 2 ++ libc/isystem/threads.h | 4 ++++ libc/thread/pthread_equal.c | 2 ++ libc/thread/pthread_exit.c | 2 ++ libc/thread/pthread_self.c | 2 ++ libc/thread/thrd_create.c | 35 ++++++++++++++++++++++++++++++++++ libc/thread/thrd_detach.c | 26 +++++++++++++++++++++++++ libc/thread/thrd_join.c | 29 ++++++++++++++++++++++++++++ libc/thread/threads.h | 36 +++++++++++++++++++++++++++++++++++ third_party/BUILD.mk | 1 + 12 files changed, 141 insertions(+) create mode 100644 libc/isystem/threads.h create mode 100644 libc/thread/thrd_create.c create mode 100644 libc/thread/thrd_detach.c create mode 100644 libc/thread/thrd_join.c create mode 100644 libc/thread/threads.h diff --git a/libc/BUILD.mk b/libc/BUILD.mk index caff0ca1a..523020830 100644 --- a/libc/BUILD.mk +++ b/libc/BUILD.mk @@ -242,6 +242,7 @@ libc/isystem/system_error \ libc/isystem/termios.h \ libc/isystem/tgmath.h \ libc/isystem/thread \ +libc/isystem/threads.h \ libc/isystem/time.h \ libc/isystem/tmmintrin.h \ libc/isystem/tuple \ diff --git a/libc/calls/pthread_yield_np.c b/libc/calls/pthread_yield_np.c index 079387712..dd209e6be 100644 --- a/libc/calls/pthread_yield_np.c +++ b/libc/calls/pthread_yield_np.c @@ -38,4 +38,5 @@ int pthread_yield_np(void) { return 0; } +__weak_reference(pthread_yield_np, thrd_yield); __weak_reference(pthread_yield_np, pthread_yield); diff --git a/libc/intrin/cosmo_once.c b/libc/intrin/cosmo_once.c index a18edb2bb..a6658deb0 100644 --- a/libc/intrin/cosmo_once.c +++ b/libc/intrin/cosmo_once.c @@ -61,3 +61,5 @@ errno_t cosmo_once(atomic_uint *once, void init(void)) { return EINVAL; } } + +__weak_reference(cosmo_once, call_once); diff --git a/libc/isystem/threads.h b/libc/isystem/threads.h new file mode 100644 index 000000000..28df0eba9 --- /dev/null +++ b/libc/isystem/threads.h @@ -0,0 +1,4 @@ +#ifndef _THREADS_H +#define _THREADS_H +#include "libc/thread/threads.h" +#endif /* _THREADS_H */ diff --git a/libc/thread/pthread_equal.c b/libc/thread/pthread_equal.c index 30e1ff99a..4bef0a23e 100644 --- a/libc/thread/pthread_equal.c +++ b/libc/thread/pthread_equal.c @@ -26,3 +26,5 @@ int pthread_equal(pthread_t t1, pthread_t t2) { return t1 == t2; } + +__weak_reference(pthread_equal, thrd_equal); diff --git a/libc/thread/pthread_exit.c b/libc/thread/pthread_exit.c index 06e9a8943..75bef400b 100644 --- a/libc/thread/pthread_exit.c +++ b/libc/thread/pthread_exit.c @@ -171,3 +171,5 @@ wontreturn void pthread_exit(void *rc) { // this is a child thread longjmp(pt->pt_exiter, 1); } + +__weak_reference(pthread_exit, thr_exit); diff --git a/libc/thread/pthread_self.c b/libc/thread/pthread_self.c index efb924981..91703a873 100644 --- a/libc/thread/pthread_self.c +++ b/libc/thread/pthread_self.c @@ -27,3 +27,5 @@ pthread_t pthread_self(void) { return __get_tls()->tib_pthread; } + +__weak_reference(pthread_self, thrd_current); diff --git a/libc/thread/thrd_create.c b/libc/thread/thrd_create.c new file mode 100644 index 000000000..01101afe1 --- /dev/null +++ b/libc/thread/thrd_create.c @@ -0,0 +1,35 @@ +/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│ +│ vi: set et ft=c ts=2 sts=2 sw=2 fenc=utf-8 :vi │ +╞══════════════════════════════════════════════════════════════════════════════╡ +│ Copyright 2024 Justine Alexandra Roberts Tunney │ +│ │ +│ Permission to use, copy, modify, and/or distribute this software for │ +│ any purpose with or without fee is hereby granted, provided that the │ +│ above copyright notice and this permission notice appear in all copies. │ +│ │ +│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │ +│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │ +│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │ +│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │ +│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │ +│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │ +│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ +│ PERFORMANCE OF THIS SOFTWARE. │ +╚─────────────────────────────────────────────────────────────────────────────*/ +#include "libc/errno.h" +#include "libc/thread/thread.h" +#include "libc/thread/threads.h" + +int thrd_create(thrd_t *th, thrd_start_t func, void *arg) { + errno_t err; + err = pthread_create(th, 0, (void *(*)(void *))func, arg); + if (!err) + return thrd_success; + if (err == ENOMEM) + return thrd_nomem; + if (err == EAGAIN) + return thrd_busy; + if (err == EAGAIN) + return thrd_busy; + return thrd_error; +} diff --git a/libc/thread/thrd_detach.c b/libc/thread/thrd_detach.c new file mode 100644 index 000000000..a604fca3e --- /dev/null +++ b/libc/thread/thrd_detach.c @@ -0,0 +1,26 @@ +/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│ +│ vi: set et ft=c ts=2 sts=2 sw=2 fenc=utf-8 :vi │ +╞══════════════════════════════════════════════════════════════════════════════╡ +│ Copyright 2024 Justine Alexandra Roberts Tunney │ +│ │ +│ Permission to use, copy, modify, and/or distribute this software for │ +│ any purpose with or without fee is hereby granted, provided that the │ +│ above copyright notice and this permission notice appear in all copies. │ +│ │ +│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │ +│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │ +│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │ +│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │ +│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │ +│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │ +│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ +│ PERFORMANCE OF THIS SOFTWARE. │ +╚─────────────────────────────────────────────────────────────────────────────*/ +#include "libc/thread/thread.h" +#include "libc/thread/threads.h" + +int thrd_detach(thrd_t th) { + if (pthread_detach(th)) + return thrd_error; + return thrd_success; +} diff --git a/libc/thread/thrd_join.c b/libc/thread/thrd_join.c new file mode 100644 index 000000000..12a7ebdac --- /dev/null +++ b/libc/thread/thrd_join.c @@ -0,0 +1,29 @@ +/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│ +│ vi: set et ft=c ts=2 sts=2 sw=2 fenc=utf-8 :vi │ +╞══════════════════════════════════════════════════════════════════════════════╡ +│ Copyright 2024 Justine Alexandra Roberts Tunney │ +│ │ +│ Permission to use, copy, modify, and/or distribute this software for │ +│ any purpose with or without fee is hereby granted, provided that the │ +│ above copyright notice and this permission notice appear in all copies. │ +│ │ +│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │ +│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │ +│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │ +│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │ +│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │ +│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │ +│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ +│ PERFORMANCE OF THIS SOFTWARE. │ +╚─────────────────────────────────────────────────────────────────────────────*/ +#include "libc/thread/thread.h" +#include "libc/thread/threads.h" + +int thrd_join(thrd_t th, int *res) { + void *pres; + if (pthread_join(th, &pres)) + return thrd_error; + if (res) + *res = (uintptr_t)pres; + return thrd_success; +} diff --git a/libc/thread/threads.h b/libc/thread/threads.h new file mode 100644 index 000000000..89bbedab6 --- /dev/null +++ b/libc/thread/threads.h @@ -0,0 +1,36 @@ +#ifndef COSMOPOLITAN_LIBC_THREAD_THREADS_H_ +#define COSMOPOLITAN_LIBC_THREAD_THREADS_H_ +COSMOPOLITAN_C_START_ + +#define TSS_DTOR_ITERATIONS 4 + +enum { + thrd_success = 0, + thrd_busy = 1, + thrd_error = 2, + thrd_nomem = 3, + thrd_timedout = 4, +}; + +enum { + mtx_plain = 0, + mtx_recursive = 1, + mtx_timed = 2, +}; + +typedef uintptr_t thrd_t; +typedef void (*tss_dtor_t)(void *); +typedef int (*thrd_start_t)(void *); +typedef _Atomic(uint32_t) once_flag; + +void call_once(once_flag *, void (*)(void)); +int thrd_create(thrd_t *, thrd_start_t, void *); +void thrd_exit(int) wontreturn; +int thrd_join(thrd_t, int *); +int thrd_detach(thrd_t); +int thrd_equal(thrd_t, thrd_t); +thrd_t thrd_current(void); +void thrd_yield(void); + +COSMOPOLITAN_C_END_ +#endif /* COSMOPOLITAN_LIBC_THREAD_THREADS_H_ */ diff --git a/third_party/BUILD.mk b/third_party/BUILD.mk index 36eef50ad..a019e5847 100644 --- a/third_party/BUILD.mk +++ b/third_party/BUILD.mk @@ -20,6 +20,7 @@ o/$(MODE)/third_party: \ o/$(MODE)/third_party/libcxxabi \ o/$(MODE)/third_party/libunwind \ o/$(MODE)/third_party/linenoise \ + o/$(MODE)/third_party/llm \ o/$(MODE)/third_party/lua \ o/$(MODE)/third_party/lz4cli \ o/$(MODE)/third_party/make \ From ff2b6fc0b019fa74e2fa8864c65c49f3bc6c54e1 Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Sun, 28 Apr 2024 16:53:23 -0700 Subject: [PATCH 013/123] Add munlock() and mlock2() to pledge --- libc/calls/pledge-linux.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libc/calls/pledge-linux.c b/libc/calls/pledge-linux.c index 1a1dce028..2bb52c038 100644 --- a/libc/calls/pledge-linux.c +++ b/libc/calls/pledge-linux.c @@ -615,6 +615,8 @@ static const uint16_t kPledgeStdio[] = { __NR_linux_msync, // __NR_linux_mmap | NOEXEC, // __NR_linux_mlock, // + __NR_linux_mlock2, // + __NR_linux_munlock, // __NR_linux_mremap, // __NR_linux_munmap, // __NR_linux_mincore, // From 2b00ee8723edb79c6dc6be6bc3e5ce37c353a6be Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Sun, 28 Apr 2024 22:57:21 -0700 Subject: [PATCH 014/123] Fix errno.h documentation typos Closes #1156 --- libc/errno.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libc/errno.h b/libc/errno.h index ed0b39523..cc063599d 100644 --- a/libc/errno.h +++ b/libc/errno.h @@ -74,7 +74,7 @@ extern const errno_t EIO; extern const errno_t ENXIO; /** - * Argument list too errno_t. + * Argument list too long. */ extern const errno_t E2BIG; @@ -226,7 +226,7 @@ extern const errno_t ERANGE; extern const errno_t EDEADLK; /** - * Filename too errno_t. + * Filename too long. */ extern const errno_t ENAMETOOLONG; @@ -291,7 +291,7 @@ extern const errno_t ENOTSOCK; extern const errno_t EDESTADDRREQ; /** - * Message too errno_t. + * Message too long. */ extern const errno_t EMSGSIZE; From fcfdd26b7259dae4088e138497b57fbe4dc8a6df Mon Sep 17 00:00:00 2001 From: Paul Kulchenko Date: Mon, 29 Apr 2024 17:09:25 -0700 Subject: [PATCH 015/123] Fix wrong parameter type in redbean documentation (#1162) --- tool/net/help.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tool/net/help.txt b/tool/net/help.txt index 9ff1450a4..4ea0be1f8 100644 --- a/tool/net/help.txt +++ b/tool/net/help.txt @@ -1612,7 +1612,7 @@ FUNCTIONS called from `.init.lua`. This function is not available in unsecure mode. - ProgramSslRequired(mandatory:str) + ProgramSslRequired(mandatory:bool) Enables the blocking of HTTP so that all inbound clients and must use the TLS transport layer. This has the same effect as the `-J` flag. Fetch() is still allowed to make outbound HTTP From 3bcd40be1299a803ad8cdf20151b315535445925 Mon Sep 17 00:00:00 2001 From: Matt Colyer Date: Mon, 29 Apr 2024 20:40:38 -0700 Subject: [PATCH 016/123] Fix regression in apeinstall.sh (#1161) This should have been a part of a6baba1. --- ape/apeinstall.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ape/apeinstall.sh b/ape/apeinstall.sh index 37771820d..c1620f3fe 100755 --- a/ape/apeinstall.sh +++ b/ape/apeinstall.sh @@ -10,8 +10,8 @@ if [ ! -f ape/loader.c ]; then cd "$COSMO" || exit fi -if [ -x build/bootstrap/make.com ]; then - MAKE=build/bootstrap/make.com +if [ -x build/bootstrap/make ]; then + MAKE=build/bootstrap/make else MAKE=make fi From 403bc25412357fd14b4164ec5b0c0a8f189d176c Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Tue, 30 Apr 2024 13:17:22 -0700 Subject: [PATCH 017/123] Make MXCSR editable by signal handlers on Windows It's now possible to recover from floating point exception traps. --- libc/intrin/ntcontext2linux.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libc/intrin/ntcontext2linux.c b/libc/intrin/ntcontext2linux.c index a57caf33b..bf9d3df15 100644 --- a/libc/intrin/ntcontext2linux.c +++ b/libc/intrin/ntcontext2linux.c @@ -48,6 +48,7 @@ textwindows void _ntcontext2linux(ucontext_t *ctx, const struct NtContext *cr) { ctx->uc_mcontext.fs = cr->SegFs; ctx->uc_mcontext.fpregs = &ctx->__fpustate; __repmovsb(&ctx->__fpustate, &cr->FltSave, sizeof(ctx->__fpustate)); + ctx->__fpustate.mxcsr = cr->MxCsr; } textwindows void _ntlinux2context(struct NtContext *cr, const ucontext_t *ctx) { @@ -74,6 +75,7 @@ textwindows void _ntlinux2context(struct NtContext *cr, const ucontext_t *ctx) { cr->SegCs = ctx->uc_mcontext.cs; cr->SegGs = ctx->uc_mcontext.gs; cr->SegFs = ctx->uc_mcontext.fs; + cr->MxCsr = ctx->__fpustate.mxcsr; __repmovsb(&cr->FltSave, &ctx->__fpustate, sizeof(ctx->__fpustate)); } From 5c6877b02b63ea0068d352df112b9685353e345c Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Tue, 30 Apr 2024 13:32:23 -0700 Subject: [PATCH 018/123] Introduce support for trapping math The feenableexcept() and fedisableexcept() APIs are now provided which let you detect when NaNs appear the moment it happens from anywhere in your program. Tests have also been added for the mission critical math functions expf() and erff(), whose perfect operation has been assured. See examples/trapping.c to see how to use this powerful functionality. --- examples/trapping.c | 142 ++++++++++++++++++++++++++++++++++ libc/calls/ucontext.h | 41 ++++++++++ libc/cosmo.h | 1 + libc/intrin/fedisableexcept.c | 92 ++++++++++++++++++++++ libc/intrin/feenableexcept.c | 98 +++++++++++++++++++++++ libc/intrin/unleaf.c | 32 ++++++++ libc/runtime/cosmo.S | 13 ++++ libc/runtime/fenv.h | 2 + libc/thread/threads.h | 6 ++ libc/tinymath/math_errf.c | 4 + test/math/BUILD.mk | 5 +- test/math/erff_test.c | 55 +++++++++++++ test/math/expf_test.c | 87 +++++++++++++++++++++ 13 files changed, 576 insertions(+), 2 deletions(-) create mode 100644 examples/trapping.c create mode 100644 libc/intrin/fedisableexcept.c create mode 100644 libc/intrin/feenableexcept.c create mode 100644 libc/intrin/unleaf.c create mode 100644 test/math/erff_test.c create mode 100644 test/math/expf_test.c diff --git a/examples/trapping.c b/examples/trapping.c new file mode 100644 index 000000000..15a2c5e0c --- /dev/null +++ b/examples/trapping.c @@ -0,0 +1,142 @@ +#include +#include +#include +#include +#include +#include +#include +#include "libc/calls/struct/aarch64.internal.h" + +/* + Do you put lots of assert(!isnan(x)) in your code?? + Your microprocessor has a feature to automate this. + + Uncaught SIGFPE (FPE_FLTINV) + __math_invalidf at libc/tinymath/math_errf.c:88 + logf at libc/tinymath/logf.c:100 + main at examples/trapping.c:29 + cosmo at libc/runtime/cosmo.S:105 + _start at libc/crt/crt.S:116 + + This file shows how to use floating point exception + trapping with Cosmopolitan Libc. +*/ + +#define TRAPS (FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW) + +void spring_trap(int sig, siginfo_t *si, void *arg) { + + // print signal safely + const char *msg; + int sic = si->si_code; + if (sic == FPE_INTDIV) + msg = "FPE_INTDIV: "; // integer divide by zero + else if (sic == FPE_INTOVF) + msg = "FPE_INTOVF: "; // integer overflow + else if (sic == FPE_FLTDIV) + msg = "FPE_FLTDIV: "; // floating point divide by zero + else if (sic == FPE_FLTOVF) + msg = "FPE_FLTOVF: "; // floating point overflow + else if (sic == FPE_FLTUND) + msg = "FPE_FLTUND: "; // floating point underflow + else if (sic == FPE_FLTRES) + msg = "FPE_FLTRES: "; // floating point inexact + else if (sic == FPE_FLTINV) + msg = "FPE_FLTINV: "; // invalid floating point operation + else if (sic == FPE_FLTSUB) + msg = "FPE_FLTSUB: "; // subscript out of range + else + msg = "SIGFPE: "; + write(1, msg, strlen(msg)); + + // recover from trap so that execution may resume + // without this the same signal will just keep getting raised + ucontext_t *ctx = arg; +#ifdef __x86_64__ + if (ctx->uc_mcontext.fpregs) { + ctx->uc_mcontext.fpregs->mxcsr |= TRAPS << 7; // disable traps + ctx->uc_mcontext.fpregs->mxcsr &= ~TRAPS; // clear cages + return; + } +#elif defined(__aarch64__) + struct _aarch64_ctx *ac; + for (ac = (struct _aarch64_ctx *)ctx->uc_mcontext.__reserved; ac->magic; + ac = (struct _aarch64_ctx *)((char *)ac + ac->size)) { + if (ac->magic == FPSIMD_MAGIC) { + struct fpsimd_context *sm = (struct fpsimd_context *)ac; + sm->fpcr &= ~(TRAPS << 8); // disable traps + sm->fpsr &= ~TRAPS; // clear cages + return; + } + } +#endif + + // exit if we can't recover execution + msg = "cannot recover from signal\n"; + write(1, msg, strlen(msg)); + _exit(1); +} + +void setup_trap(void) { + struct sigaction sa; + sigemptyset(&sa.sa_mask); + sa.sa_flags = SA_SIGINFO; + sa.sa_sigaction = spring_trap; + sigaction(SIGFPE, &sa, 0); +} + +void activate_trap(void) { + feclearexcept(TRAPS); + if (feenableexcept(TRAPS)) { + static bool once; + if (!once) { + fprintf(stderr, "warning: trapping math isn't supported on this cpu\n"); + once = true; + } + } +} + +float ident(float x) { + return x; +} +float (*veil)(float) = ident; + +int main(int argc, char *argv[]) { + float x; + setup_trap(); + + // test illegal math + activate_trap(); + x = 0 / veil(0); + printf("0/0 = %g\n", x); + + // test divide by zero + activate_trap(); + x = 1 / veil(0); + printf("1/0 = %g\n", x); + + // test divide by zero again + activate_trap(); + x = -1 / veil(0); + printf("-1/0 = %g\n", x); + + // test domain error + activate_trap(); + x = logf(veil(-1)); + printf("log(-1) = %g\n", x); + + // test imaginary number + activate_trap(); + x = sqrtf(veil(-1)); + printf("sqrt(-1) = %g\n", x); + + // test overflow + activate_trap(); + x = expf(veil(88.8)); + printf("expf(88.8) = %g\n", x); + + // test underflow + activate_trap(); + x = expf(veil(-104)); + printf("expf(-104) = %g\n", x); +} diff --git a/libc/calls/ucontext.h b/libc/calls/ucontext.h index a869ab0ad..b820686bc 100644 --- a/libc/calls/ucontext.h +++ b/libc/calls/ucontext.h @@ -43,14 +43,55 @@ struct FpuStackEntry { }; struct thatispacked FpuState { + + /* 8087 FPU Control Word + IM: Invalid Operation ───────────────┐ + DM: Denormal Operand ───────────────┐│ + ZM: Zero Divide ───────────────────┐││ + OM: Overflow ─────────────────────┐│││ + UM: Underflow ───────────────────┐││││ + PM: Precision ──────────────────┐│││││ + PC: Precision Control ───────┐ ││││││ + {float,∅,double,long double}│ ││││││ + RC: Rounding Control ──────┐ │ ││││││ + {even, →-∞, →+∞, →0} │┌┤ ││││││ + ┌┤││ ││││││ + d││││rr││││││ + 0b0000001001111111 */ uint16_t cwd; + + /* 8087 FPU Status Word */ uint16_t swd; + uint16_t ftw; uint16_t fop; uint64_t rip; uint64_t rdp; + + /* SSE CONTROL AND STATUS REGISTER + IE: Invalid Operation Flag ──────────────┐ + DE: Denormal Flag ──────────────────────┐│ + ZE: Divide-by-Zero Flag ───────────────┐││ + OE: Overflow Flag ────────────────────┐│││ + UE: Underflow Flag ──────────────────┐││││ + PE: Precision Flag ─────────────────┐│││││ + DAZ: Denormals Are Zeros ──────────┐││││││ + IM: Invalid Operation Mask ───────┐│││││││ + DM: Denormal Operation Mask ─────┐││││││││ + ZM: Divide-by-Zero Mask ────────┐│││││││││ + OM: Overflow Mask ─────────────┐││││││││││ + UM: Underflow Mask ───────────┐│││││││││││ + PM: Precision Mask ──────────┐││││││││││││ + RC: Rounding Control ───────┐│││││││││││││ + {even, →-∞, →+∞, →0} ││││││││││││││ + FTZ: Flush To Zero ───────┐ ││││││││││││││ + │┌┤│││││││││││││ + ┌──────────────┐││││││││││││││││ + │ reserved │││││││││││││││││ + 0b00000000000000000001111110000000 */ uint32_t mxcsr; uint32_t mxcr_mask; + struct FpuStackEntry st[8]; struct XmmRegister xmm[16]; uint32_t __padding[24]; diff --git a/libc/cosmo.h b/libc/cosmo.h index c84b731eb..1bcadb4bc 100644 --- a/libc/cosmo.h +++ b/libc/cosmo.h @@ -5,6 +5,7 @@ COSMOPOLITAN_C_START_ errno_t cosmo_once(_Atomic(uint32_t) *, void (*)(void)); int systemvpe(const char *, char *const[], char *const[]) libcesque; char *GetProgramExecutableName(void); +void unleaf(void); COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_COSMO_H_ */ diff --git a/libc/intrin/fedisableexcept.c b/libc/intrin/fedisableexcept.c new file mode 100644 index 000000000..051d6d1cb --- /dev/null +++ b/libc/intrin/fedisableexcept.c @@ -0,0 +1,92 @@ +/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│ +│ vi: set et ft=c ts=2 sts=2 sw=2 fenc=utf-8 :vi │ +╞══════════════════════════════════════════════════════════════════════════════╡ +│ Copyright 2024 Justine Alexandra Roberts Tunney │ +│ │ +│ Permission to use, copy, modify, and/or distribute this software for │ +│ any purpose with or without fee is hereby granted, provided that the │ +│ above copyright notice and this permission notice appear in all copies. │ +│ │ +│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │ +│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │ +│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │ +│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │ +│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │ +│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │ +│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ +│ PERFORMANCE OF THIS SOFTWARE. │ +╚─────────────────────────────────────────────────────────────────────────────*/ +#include "libc/runtime/fenv.h" + +/** + * Disables floating point exception trapping, e.g. + * + * feenableexcept(FE_INVALID | FE_DIVBYZERO | + * FE_OVERFLOW | FE_UNDERFLOW); + * + * When trapping is enabled, something should handle SIGFPE. Calling + * ShowCrashReports() at startup will install a generic handler with + * backtraces and the symbol of the `si->si_code` which UNIX defines + * + * - `FPE_INTOVF`: integer overflow + * - `FPE_INTDIV`: integer divide by zero + * - `FPE_FLTDIV`: floating point divide by zero + * - `FPE_FLTOVF`: floating point overflow + * - `FPE_FLTUND`: floating point underflow + * - `FPE_FLTRES`: floating point inexact + * - `FPE_FLTINV`: invalid floating point operation + * - `FPE_FLTSUB`: subscript out of range + * + * It's important to not use the `-ffast-math` or `-Ofast` flags when + * compiling code that needs to be debugged. Using `-fsignaling-nans` + * will also help, since GCC doesn't enable that by default. + * + * @param excepts may bitwise-or the following: + * - `FE_INVALID` + * - `FE_DIVBYZERO` + * - `FE_OVERFLOW` + * - `FE_UNDERFLOW` + * - `FE_INEXACT` + * - `FE_ALL_EXCEPT` (all of the above) + * @see fetestexcept() if you don't want to deal with signals + * @see feenableexcept() to turn it on in the first place + */ +int fedisableexcept(int excepts) { + + // limit to what we know + excepts &= FE_ALL_EXCEPT; + +#ifdef __x86_64__ + +#ifndef NOX87 + // configure 8087 fpu control word + // setting the bits enables suppression + unsigned short x87cw; + asm("fstcw\t%0" : "=m"(x87cw)); + x87cw |= excepts; + asm("fldcw\t%0" : /* no inputs */ : "m"(x87cw)); +#endif + + // configure modern sse control word + // setting the bits enables suppression + unsigned mxcsr; + asm("stmxcsr\t%0" : "=m"(mxcsr)); + mxcsr |= excepts << 7; + asm("ldmxcsr\t%0" : /* no inputs */ : "m"(mxcsr)); + + return 0; + +#elif defined(__aarch64__) + + unsigned fpcr; + unsigned fpcr2; + fpcr = __builtin_aarch64_get_fpcr(); + fpcr2 = fpcr & ~(excepts << 8); + if (fpcr != fpcr2) + __builtin_aarch64_set_fpcr(fpcr2); + return (fpcr >> 8) & FE_ALL_EXCEPT; + +#else + return -1; +#endif +} diff --git a/libc/intrin/feenableexcept.c b/libc/intrin/feenableexcept.c new file mode 100644 index 000000000..503dee61a --- /dev/null +++ b/libc/intrin/feenableexcept.c @@ -0,0 +1,98 @@ +/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│ +│ vi: set et ft=c ts=2 sts=2 sw=2 fenc=utf-8 :vi │ +╞══════════════════════════════════════════════════════════════════════════════╡ +│ Copyright 2024 Justine Alexandra Roberts Tunney │ +│ │ +│ Permission to use, copy, modify, and/or distribute this software for │ +│ any purpose with or without fee is hereby granted, provided that the │ +│ above copyright notice and this permission notice appear in all copies. │ +│ │ +│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │ +│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │ +│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │ +│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │ +│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │ +│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │ +│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ +│ PERFORMANCE OF THIS SOFTWARE. │ +╚─────────────────────────────────────────────────────────────────────────────*/ +#include "libc/runtime/fenv.h" + +/** + * Enables floating point exception trapping, e.g. + * + * feenableexcept(FE_INVALID | FE_DIVBYZERO | + * FE_OVERFLOW | FE_UNDERFLOW); + * + * When trapping is enabled, something should handle SIGFPE. Calling + * ShowCrashReports() at startup will install a generic handler with + * backtraces and the symbol of the `si->si_code` which UNIX defines + * + * - `FPE_INTOVF`: integer overflow + * - `FPE_INTDIV`: integer divide by zero + * - `FPE_FLTDIV`: floating point divide by zero + * - `FPE_FLTOVF`: floating point overflow + * - `FPE_FLTUND`: floating point underflow + * - `FPE_FLTRES`: floating point inexact + * - `FPE_FLTINV`: invalid floating point operation + * - `FPE_FLTSUB`: subscript out of range + * + * It's important to not use the `-ffast-math` or `-Ofast` flags when + * compiling code that needs to be debugged. Using `-fsignaling-nans` + * will also help, since GCC doesn't enable that by default. + * + * @param excepts may bitwise-or the following: + * - `FE_INVALID` + * - `FE_DIVBYZERO` + * - `FE_OVERFLOW` + * - `FE_UNDERFLOW` + * - `FE_INEXACT` + * - `FE_ALL_EXCEPT` (all of the above) + * @see fetestexcept() if you don't want to deal with signals + * @see fedisableexcept() to turn it back off again + */ +int feenableexcept(int excepts) { + + // limit to what we know + excepts &= FE_ALL_EXCEPT; + +#ifdef __x86_64__ + +#ifndef NOX87 + // configure 8087 fpu control word + // celaring the bits disables suppression + unsigned short x87cw; + asm("fstcw\t%0" : "=m"(x87cw)); + x87cw &= ~excepts; + asm("fldcw\t%0" : /* no inputs */ : "m"(x87cw)); +#endif + + // configure modern sse control word + // clearing the bits disables suppression + unsigned mxcsr; + asm("stmxcsr\t%0" : "=m"(mxcsr)); + mxcsr &= ~(excepts << 7); + asm("ldmxcsr\t%0" : /* no inputs */ : "m"(mxcsr)); + + return 0; + +#elif defined(__aarch64__) + + unsigned fpcr; + unsigned fpcr2; + unsigned updated_fpcr; + fpcr = __builtin_aarch64_get_fpcr(); + fpcr2 = fpcr | (excepts << 8); + if (fpcr != fpcr2) { + __builtin_aarch64_set_fpcr(fpcr2); + // floating point exception trapping is optional in aarch64 + updated_fpcr = __builtin_aarch64_get_fpsr(); + if (fpcr2 & ~updated_fpcr) + return -1; + } + return (fpcr >> 8) & FE_ALL_EXCEPT; + +#else + return -1; +#endif +} diff --git a/libc/intrin/unleaf.c b/libc/intrin/unleaf.c new file mode 100644 index 000000000..5ac002fd3 --- /dev/null +++ b/libc/intrin/unleaf.c @@ -0,0 +1,32 @@ +/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│ +│ vi: set et ft=c ts=2 sts=2 sw=2 fenc=utf-8 :vi │ +╞══════════════════════════════════════════════════════════════════════════════╡ +│ Copyright 2024 Justine Alexandra Roberts Tunney │ +│ │ +│ Permission to use, copy, modify, and/or distribute this software for │ +│ any purpose with or without fee is hereby granted, provided that the │ +│ above copyright notice and this permission notice appear in all copies. │ +│ │ +│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │ +│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │ +│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │ +│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │ +│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │ +│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │ +│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ +│ PERFORMANCE OF THIS SOFTWARE. │ +╚─────────────────────────────────────────────────────────────────────────────*/ +#include "libc/cosmo.h" + +/** + * Does nothing. + * + * Calling this function will force the compiler to generate a stack + * frame. This ensures backtraces will work better in a few critical + * routines. + */ +void unleaf(void) { + // TODO: We should make ShowCrashReports() so __math_invalidf() + // doesn't have to call this in order for the actual math + // function to show up in the backtrace. +} diff --git a/libc/runtime/cosmo.S b/libc/runtime/cosmo.S index 31ee018a9..7d7c66755 100644 --- a/libc/runtime/cosmo.S +++ b/libc/runtime/cosmo.S @@ -75,6 +75,19 @@ cosmo: push %rbp #ifdef __FAST_MATH__ push %rax stmxcsr (%rsp) +// +// Enable hardware optimizations in violation of the IEEE standard. +// +// - 0x0040 enables "DAZ: Denormals Are Zeros" in MXCSR. This causes the +// processor to turn denormal inputs into zero, before computing them. +// See Intel Manual Vol. 1 §10.2.3.4 +// +// - 0x8000 enables "FTZ: Flush To Zero" in MXCSR. This means a floating +// point operation that results in underflow will be set to zero, with +// the same sign, rather than producing a denormalized output. It will +// happen only if underflow trapping hasnt been enabled. See the Intel +// Manual Vol. 1 §10.2.3.3. +// orl $0x8040,(%rsp) ldmxcsr (%rsp) pop %rax diff --git a/libc/runtime/fenv.h b/libc/runtime/fenv.h index 4f25de55a..059b3ad10 100644 --- a/libc/runtime/fenv.h +++ b/libc/runtime/fenv.h @@ -81,6 +81,8 @@ int fesetenv(const fenv_t *); int fesetexceptflag(const fexcept_t *, int); int fesetround(int); int fetestexcept(int); +int feenableexcept(int); +int fedisableexcept(int); int feupdateenv(const fenv_t *); int __flt_rounds(void); int __fesetround(int); diff --git a/libc/thread/threads.h b/libc/thread/threads.h index 89bbedab6..8fe01c89f 100644 --- a/libc/thread/threads.h +++ b/libc/thread/threads.h @@ -2,6 +2,12 @@ #define COSMOPOLITAN_LIBC_THREAD_THREADS_H_ COSMOPOLITAN_C_START_ +#if !defined(__cplusplus) && \ + (!(defined(__GNUC__) && __GNUC__ >= 13) || \ + !(defined(__STDC_VERSION__) && __STDC_VERSION__ > 201710L)) +#define thread_local _Thread_local +#endif + #define TSS_DTOR_ITERATIONS 4 enum { diff --git a/libc/tinymath/math_errf.c b/libc/tinymath/math_errf.c index 2927b565d..377e82408 100644 --- a/libc/tinymath/math_errf.c +++ b/libc/tinymath/math_errf.c @@ -26,6 +26,7 @@ │ │ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/errno.h" +#include "libc/cosmo.h" #include "libc/tinymath/arm.internal.h" #if WANT_ERRNO @@ -45,6 +46,7 @@ with_errnof (float y, int e) dontinline static float xflowf (uint32_t sign, float y) { + unleaf(); y = eval_as_float (opt_barrier_float (sign ? -y : y) * y); return with_errnof (y, ERANGE); } @@ -74,6 +76,7 @@ __math_oflowf (uint32_t sign) float __math_divzerof (uint32_t sign) { + unleaf(); float y = opt_barrier_float (sign ? -1.0f : 1.0f) / 0.0f; return with_errnof (y, ERANGE); } @@ -81,6 +84,7 @@ __math_divzerof (uint32_t sign) dontinstrument float __math_invalidf (float x) { + unleaf(); float y = (x - x) / (x - x); return isnan (x) ? y : with_errnof (y, EDOM); } diff --git a/test/math/BUILD.mk b/test/math/BUILD.mk index 188697014..32d9e93dc 100644 --- a/test/math/BUILD.mk +++ b/test/math/BUILD.mk @@ -16,7 +16,8 @@ TEST_MATH_DIRECTDEPS = \ LIBC_RUNTIME \ LIBC_SYSV \ LIBC_TINYMATH \ - THIRD_PARTY_COMPILER_RT + THIRD_PARTY_COMPILER_RT \ + THIRD_PARTY_OPENMP TEST_MATH_DEPS := \ $(call uniq,$(foreach x,$(TEST_MATH_DIRECTDEPS),$($(x)))) @@ -33,7 +34,7 @@ o/$(MODE)/test/math/%.dbg: \ $(APE_NO_MODIFY_SELF) @$(APELINK) -$(TEST_MATH_OBJS): private CFLAGS += -fno-builtin +$(TEST_MATH_OBJS): private CFLAGS += -fno-builtin -fopenmp .PHONY: o/$(MODE)/test/math o/$(MODE)/test/math: \ diff --git a/test/math/erff_test.c b/test/math/erff_test.c new file mode 100644 index 000000000..e298da7ce --- /dev/null +++ b/test/math/erff_test.c @@ -0,0 +1,55 @@ +// Copyright 2024 Justine Alexandra Roberts Tunney +// +// Permission to use, copy, modify, and/or distribute this software for +// any purpose with or without fee is hereby granted, provided that the +// above copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +// WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE +// AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL +// DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +// PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +// TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +// PERFORMANCE OF THIS SOFTWARE. + +#include +#include + +#define MAX_ERROR_ULP 1 +#define GOTTA_TEST_THEM_ALL 0 + +unsigned rand32(void) { + /* Knuth, D.E., "The Art of Computer Programming," Vol 2, + Seminumerical Algorithms, Third Edition, Addison-Wesley, 1998, + p. 106 (line 26) & p. 108 */ + static unsigned long long lcg = 1; + lcg *= 6364136223846793005; + lcg += 1442695040888963407; + return lcg >> 32; +} + +int main() { +#if GOTTA_TEST_THEM_ALL +#pragma omp parallel for + for (long i = 0; i < 4294967296; ++i) { +#else + for (long r = 0; r < 100000; ++r) { + unsigned i = rand32(); +#endif + union { + float f; + unsigned i; + } x, a, b; + x.i = i; + a.f = erf(x.f); + b.f = erff(x.f); + long ai = a.i; + long bi = b.i; + long e = bi - ai; + if (e < 0) + e = -e; + if (e > MAX_ERROR_ULP) + exit(99); + } +} diff --git a/test/math/expf_test.c b/test/math/expf_test.c new file mode 100644 index 000000000..6e060e61f --- /dev/null +++ b/test/math/expf_test.c @@ -0,0 +1,87 @@ +// Copyright 2024 Justine Alexandra Roberts Tunney +// +// Permission to use, copy, modify, and/or distribute this software for +// any purpose with or without fee is hereby granted, provided that the +// above copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +// WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE +// AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL +// DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +// PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +// TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +// PERFORMANCE OF THIS SOFTWARE. + +#include +#include +#include + +#define MAX_ERROR_ULP 1 +#define GOTTA_TEST_THEM_ALL 0 + +float ident(float x) { + return x; +} +float (*veil)(float) = ident; + +unsigned rand32(void) { + /* Knuth, D.E., "The Art of Computer Programming," Vol 2, + Seminumerical Algorithms, Third Edition, Addison-Wesley, 1998, + p. 106 (line 26) & p. 108 */ + static unsigned long long lcg = 1; + lcg *= 6364136223846793005; + lcg += 1442695040888963407; + return lcg >> 32; +} + +int main() { + + // specials + if (expf(veil(0.f)) != 1.f) + return 1; + if (!isnan(expf(veil(NAN)))) + return 2; + if (expf(veil(-INFINITY)) != 0.f) + return 3; + if (expf(veil(INFINITY)) != INFINITY) + return 4; + if (errno) + return 5; + + // overflow + if (expf(veil(88.8)) != HUGE_VALF) + return 6; + if (errno != ERANGE) + return 7; + errno = 0; + + // underflow + if (expf(veil(-104)) != 0.) + return 8; + if (errno != ERANGE) + return 9; + +#if GOTTA_TEST_THEM_ALL +#pragma omp parallel for + for (long i = 0; i < 4294967296; ++i) { +#else + for (long r = 0; r < 100000; ++r) { + unsigned i = rand32(); +#endif + union { + float f; + unsigned i; + } x, a, b; + x.i = i; + a.f = exp(x.f); + b.f = expf(x.f); + long ai = a.i; + long bi = b.i; + long e = bi - ai; + if (e < 0) + e = -e; + if (e > MAX_ERROR_ULP) + exit(99); + } +} From 181cd4cbe8c8c3824f53e32b6f740c024512b808 Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Thu, 2 May 2024 23:21:43 -0700 Subject: [PATCH 019/123] Add sysctlbyname() for MacOS --- ape/ape-m1.c | 33 +++++++++++++++++---- libc/calls/calls.h | 4 ++- libc/calls/clktck.c | 2 +- libc/calls/clock_gettime-xnu.c | 2 +- libc/calls/getcpucount.c | 2 +- libc/calls/gethostname-bsd.c | 2 +- libc/calls/getloadavg.c | 2 +- libc/calls/getprogramexecutablename.greg.c | 2 +- libc/calls/getrandom.c | 2 +- libc/calls/sysctl.c | 33 +++++++++++++++++++++ libc/calls/sysctlbyname.c | 31 +++++++++++++++++++ libc/calls/sysctlnametomib.c | 30 +++++++++++++++++++ libc/calls/sysinfo.c | 6 ++-- libc/calls/uname.c | 2 +- libc/log/oncrash_amd64.c | 18 +++++++++++ libc/log/oncrash_arm64.c | 21 +++++++++++-- libc/runtime/getinterpreterexecutablename.c | 6 ++-- libc/runtime/getsysctl.c | 2 +- libc/runtime/syslib.internal.h | 5 +++- third_party/awk/b.c | 1 + tool/emacs/cosmo-stuff.el | 22 +++++++------- 21 files changed, 193 insertions(+), 35 deletions(-) create mode 100644 libc/calls/sysctl.c create mode 100644 libc/calls/sysctlbyname.c create mode 100644 libc/calls/sysctlnametomib.c diff --git a/ape/ape-m1.c b/ape/ape-m1.c index d31ca0b27..b81bebb71 100644 --- a/ape/ape-m1.c +++ b/ape/ape-m1.c @@ -31,6 +31,8 @@ #include #include #include +#include +#include #include #include #include @@ -39,7 +41,7 @@ /* maximum path size that cosmo can take */ #define PATHSIZE (PATH_MAX < 1024 ? PATH_MAX : 1024) #define SYSLIB_MAGIC ('s' | 'l' << 8 | 'i' << 16 | 'b' << 24) -#define SYSLIB_VERSION 9 /* sync with libc/runtime/syslib.internal.h */ +#define SYSLIB_VERSION 10 /* sync with libc/runtime/syslib.internal.h */ struct Syslib { int magic; @@ -106,6 +108,10 @@ struct Syslib { OPTIONAL (cosmo lib should check __syslib->version) */ /* v9 (2024-01-31) */ int (*pthread_cpu_number_np)(size_t *); + /* v10 (2024-05-02) */ + long (*sysctl)(int *, u_int, void *, size_t *, void *, size_t); + long (*sysctlbyname)(const char *, void *, size_t *, void *, size_t); + long (*sysctlnametomib)(const char *, int *, size_t *); }; #define ELFCLASS32 1 @@ -148,8 +154,8 @@ struct Syslib { #define _COMM_PAGE_APRR_WRITE_ENABLE (_COMM_PAGE_START_ADDRESS + 0x110) #define _COMM_PAGE_APRR_WRITE_DISABLE (_COMM_PAGE_START_ADDRESS + 0x118) -#define MIN(X, Y) ((Y) > (X) ? (X) : (Y)) -#define MAX(X, Y) ((Y) < (X) ? (X) : (Y)) +#define Min(X, Y) ((Y) > (X) ? (X) : (Y)) +#define Max(X, Y) ((Y) < (X) ? (X) : (Y)) #define READ32(S) \ ((unsigned)(255 & (S)[3]) << 030 | (unsigned)(255 & (S)[2]) << 020 | \ @@ -552,6 +558,20 @@ static long sys_pselect(int nfds, fd_set *readfds, fd_set *writefds, return sysret(pselect(nfds, readfds, writefds, errorfds, timeout, sigmask)); } +static long sys_sysctl(int *name, u_int namelen, void *oldp, size_t *oldlenp, + void *newp, size_t newlen) { + return sysret(sysctl(name, namelen, oldp, oldlenp, newp, newlen)); +} + +static long sys_sysctlbyname(const char *name, void *oldp, size_t *oldlenp, + void *newp, size_t newlen) { + return sysret(sysctlbyname(name, oldp, oldlenp, newp, newlen)); +} + +static long sys_sysctlnametomib(const char *name, int *mibp, size_t *sizep) { + return sysret(sysctlnametomib(name, mibp, sizep)); +} + __attribute__((__noreturn__)) static void Spawn(const char *exe, int fd, long *sp, struct ElfEhdr *e, struct ElfPhdr *p, @@ -596,7 +616,7 @@ __attribute__((__noreturn__)) static void Spawn(const char *exe, int fd, continue; c = p[j].p_vaddr & -pagesz; d = (p[j].p_vaddr + p[j].p_memsz + (pagesz - 1)) & -pagesz; - if (MAX(a, c) < MIN(b, d)) { + if (Max(a, c) < Min(b, d)) { Pexit(exe, 0, "ELF segments overlap each others virtual memory"); } } @@ -670,7 +690,7 @@ __attribute__((__noreturn__)) static void Spawn(const char *exe, int fd, a = p[i].p_vaddr + p[i].p_filesz; /* end of file content */ b = (a + (pagesz - 1)) & -pagesz; /* first pure bss page */ c = p[i].p_vaddr + p[i].p_memsz; /* end of segment data */ - wipe = MIN(b - a, c - a); + wipe = Min(b - a, c - a); if (wipe && (~prot1 & PROT_WRITE)) { prot1 = PROT_READ | PROT_WRITE; } @@ -970,6 +990,9 @@ int main(int argc, char **argv, char **envp) { M->lib.dlclose = dlclose; M->lib.dlerror = dlerror; M->lib.pthread_cpu_number_np = pthread_cpu_number_np; + M->lib.sysctl = sys_sysctl; + M->lib.sysctlbyname = sys_sysctlbyname; + M->lib.sysctlnametomib = sys_sysctlnametomib; /* getenv("_") is close enough to at_execfn */ execfn = 0; diff --git a/libc/calls/calls.h b/libc/calls/calls.h index eab5592f4..f2b8985ca 100644 --- a/libc/calls/calls.h +++ b/libc/calls/calls.h @@ -237,7 +237,9 @@ int sys_munlock(const void *, size_t) libcesque; int sys_munlockall(void) libcesque; int sys_personality(uint64_t) libcesque; int sys_ptrace(int, ...) libcesque; -int sys_sysctl(const int *, unsigned, void *, size_t *, void *, size_t); +int sysctl(int *, unsigned, void *, size_t *, void *, size_t) libcesque; +int sysctlbyname(const char *, void *, size_t *, void *, size_t) libcesque; +int sysctlnametomib(const char *, int *, size_t *) libcesque; int tmpfd(void) libcesque; int touch(const char *, unsigned) libcesque; int unveil(const char *, const char *) libcesque; diff --git a/libc/calls/clktck.c b/libc/calls/clktck.c index ead1400e0..b59a73711 100644 --- a/libc/calls/clktck.c +++ b/libc/calls/clktck.c @@ -53,7 +53,7 @@ static dontinline int __clk_tck_init(void) { cmd[0] = 1; // CTL_KERN cmd[1] = 12; // KERN_CLOCKRATE len = sizeof(clock); - if (sys_sysctl(cmd, 2, &clock, &len, NULL, 0) != -1) { + if (sysctl(cmd, 2, &clock, &len, NULL, 0) != -1) { x = clock.hz; } else { x = -1; diff --git a/libc/calls/clock_gettime-xnu.c b/libc/calls/clock_gettime-xnu.c index 990f87331..e9548884e 100644 --- a/libc/calls/clock_gettime-xnu.c +++ b/libc/calls/clock_gettime-xnu.c @@ -67,7 +67,7 @@ int sys_clock_gettime_xnu(int clock, struct timespec *ts) { struct timeval x; size_t n = sizeof(x); int mib[] = {CTL_KERN, KERN_BOOTTIME}; - if (sys_sysctl(mib, ARRAYLEN(mib), &x, &n, 0, 0) == -1) + if (sysctl(mib, ARRAYLEN(mib), &x, &n, 0, 0) == -1) return -1; if (ts) *ts = timeval_totimespec(timeval_sub(timeval_real(), x)); diff --git a/libc/calls/getcpucount.c b/libc/calls/getcpucount.c index 0ca1a4152..73d362ac2 100644 --- a/libc/calls/getcpucount.c +++ b/libc/calls/getcpucount.c @@ -51,7 +51,7 @@ static int __get_cpu_count_bsd(void) { } else { cmd[1] = HW_NCPU; } - if (!sys_sysctl(cmd, 2, &c, &n, 0, 0)) { + if (!sysctl(cmd, 2, &c, &n, 0, 0)) { return c; } else { return -1; diff --git a/libc/calls/gethostname-bsd.c b/libc/calls/gethostname-bsd.c index c9080e460..37c2e2f63 100644 --- a/libc/calls/gethostname-bsd.c +++ b/libc/calls/gethostname-bsd.c @@ -24,7 +24,7 @@ int gethostname_bsd(char *name, size_t len, int kind) { int cmd[2] = {CTL_KERN, kind}; - if (sys_sysctl(cmd, 2, name, &len, 0, 0) != -1) { + if (sysctl(cmd, 2, name, &len, 0, 0) != -1) { return 0; } else { if (errno == ENOMEM) { diff --git a/libc/calls/getloadavg.c b/libc/calls/getloadavg.c index 818a63c67..eb28d34c4 100644 --- a/libc/calls/getloadavg.c +++ b/libc/calls/getloadavg.c @@ -64,7 +64,7 @@ int getloadavg(double *a, int n) { struct loadavg loadinfo; int mib[2] = {CTL_VM, VM_LOADAVG}; size = sizeof(loadinfo); - if ((rc = sys_sysctl(mib, 2, &loadinfo, &size, 0, 0)) != -1) { + if ((rc = sysctl(mib, 2, &loadinfo, &size, 0, 0)) != -1) { for (i = 0; i < n; i++) { a[i] = (double)loadinfo.ldavg[i] / loadinfo.fscale; } diff --git a/libc/calls/getprogramexecutablename.greg.c b/libc/calls/getprogramexecutablename.greg.c index 02bf1472f..067e7a0a3 100644 --- a/libc/calls/getprogramexecutablename.greg.c +++ b/libc/calls/getprogramexecutablename.greg.c @@ -195,7 +195,7 @@ static inline void InitProgramExecutableNameImpl(void) { cmd[2] = KERN_PROC_PATHNAME_NETBSD; } cmd[3] = -1; // current process - if (sys_sysctl(cmd, ARRAYLEN(cmd), b, &n, 0, 0) != -1) { + if (sysctl(cmd, ARRAYLEN(cmd), b, &n, 0, 0) != -1) { if (!OldApeLoader(b)) { goto UseBuf; } diff --git a/libc/calls/getrandom.c b/libc/calls/getrandom.c index 643801fac..1e5abd48a 100644 --- a/libc/calls/getrandom.c +++ b/libc/calls/getrandom.c @@ -70,7 +70,7 @@ static void GetRandomArnd(char *p, size_t n) { cmd[0] = 1; // CTL_KERN cmd[1] = IsFreebsd() ? 37 : 81; // KERN_ARND unassert((m = n) <= 256); - if (sys_sysctl(cmd, 2, p, &n, 0, 0) == -1) + if (sysctl(cmd, 2, p, &n, 0, 0) == -1) notpossible; if (m != n) notpossible; diff --git a/libc/calls/sysctl.c b/libc/calls/sysctl.c new file mode 100644 index 000000000..7597cc939 --- /dev/null +++ b/libc/calls/sysctl.c @@ -0,0 +1,33 @@ +/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│ +│ vi: set et ft=c ts=2 sts=2 sw=2 fenc=utf-8 :vi │ +╞══════════════════════════════════════════════════════════════════════════════╡ +│ Copyright 2024 Justine Alexandra Roberts Tunney │ +│ │ +│ Permission to use, copy, modify, and/or distribute this software for │ +│ any purpose with or without fee is hereby granted, provided that the │ +│ above copyright notice and this permission notice appear in all copies. │ +│ │ +│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │ +│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │ +│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │ +│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │ +│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │ +│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │ +│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ +│ PERFORMANCE OF THIS SOFTWARE. │ +╚─────────────────────────────────────────────────────────────────────────────*/ +#include "libc/calls/calls.h" +#include "libc/calls/syscall-sysv.internal.h" +#include "libc/runtime/syslib.internal.h" + +int sys_sysctl(int *, unsigned, void *, size_t *, void *, size_t) libcesque; + +int sysctl(int *name, unsigned namelen, void *oldp, size_t *oldlenp, void *newp, + size_t newlen) { + if (__syslib && __syslib->__version >= 10) { + return _sysret( + __syslib->__sysctl(name, namelen, oldp, oldlenp, newp, newlen)); + } else { + return sys_sysctl(name, namelen, oldp, oldlenp, newp, newlen); + } +} diff --git a/libc/calls/sysctlbyname.c b/libc/calls/sysctlbyname.c new file mode 100644 index 000000000..78d0de4b3 --- /dev/null +++ b/libc/calls/sysctlbyname.c @@ -0,0 +1,31 @@ +/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│ +│ vi: set et ft=c ts=2 sts=2 sw=2 fenc=utf-8 :vi │ +╞══════════════════════════════════════════════════════════════════════════════╡ +│ Copyright 2024 Justine Alexandra Roberts Tunney │ +│ │ +│ Permission to use, copy, modify, and/or distribute this software for │ +│ any purpose with or without fee is hereby granted, provided that the │ +│ above copyright notice and this permission notice appear in all copies. │ +│ │ +│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │ +│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │ +│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │ +│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │ +│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │ +│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │ +│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ +│ PERFORMANCE OF THIS SOFTWARE. │ +╚─────────────────────────────────────────────────────────────────────────────*/ +#include "libc/calls/calls.h" +#include "libc/calls/syscall-sysv.internal.h" +#include "libc/runtime/syslib.internal.h" +#include "libc/sysv/errfuns.h" + +int sysctlbyname(const char *name, void *oldp, size_t *oldlenp, void *newp, + size_t newlen) { + if (__syslib && __syslib->__version >= 10) { + return _sysret(__syslib->__sysctlbyname(name, oldp, oldlenp, newp, newlen)); + } else { + return enosys(); + } +} diff --git a/libc/calls/sysctlnametomib.c b/libc/calls/sysctlnametomib.c new file mode 100644 index 000000000..f8cceab97 --- /dev/null +++ b/libc/calls/sysctlnametomib.c @@ -0,0 +1,30 @@ +/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│ +│ vi: set et ft=c ts=2 sts=2 sw=2 fenc=utf-8 :vi │ +╞══════════════════════════════════════════════════════════════════════════════╡ +│ Copyright 2024 Justine Alexandra Roberts Tunney │ +│ │ +│ Permission to use, copy, modify, and/or distribute this software for │ +│ any purpose with or without fee is hereby granted, provided that the │ +│ above copyright notice and this permission notice appear in all copies. │ +│ │ +│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │ +│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │ +│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │ +│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │ +│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │ +│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │ +│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ +│ PERFORMANCE OF THIS SOFTWARE. │ +╚─────────────────────────────────────────────────────────────────────────────*/ +#include "libc/calls/calls.h" +#include "libc/calls/syscall-sysv.internal.h" +#include "libc/runtime/syslib.internal.h" +#include "libc/sysv/errfuns.h" + +int sysctlnametomib(const char *name, int *mibp, size_t *sizep) { + if (__syslib && __syslib->__version >= 10) { + return _sysret(__syslib->__sysctlnametomib(name, mibp, sizep)); + } else { + return enosys(); + } +} diff --git a/libc/calls/sysinfo.c b/libc/calls/sysinfo.c index 63661a7f1..dd18a7fee 100644 --- a/libc/calls/sysinfo.c +++ b/libc/calls/sysinfo.c @@ -46,7 +46,7 @@ static int64_t GetUptime(void) { struct timeval x; size_t n = sizeof(x); int mib[] = {CTL_KERN, KERN_BOOTTIME}; - if (sys_sysctl(mib, ARRAYLEN(mib), &x, &n, 0, 0) == -1) + if (sysctl(mib, ARRAYLEN(mib), &x, &n, 0, 0) == -1) return 0; return timespec_real().tv_sec - x.tv_sec; } @@ -55,7 +55,7 @@ static int64_t GetPhysmem(void) { uint64_t x = 0; size_t n = sizeof(x); int mib[] = {CTL_HW, HW_PHYSMEM}; - if (sys_sysctl(mib, ARRAYLEN(mib), &x, &n, 0, 0) == -1) + if (sysctl(mib, ARRAYLEN(mib), &x, &n, 0, 0) == -1) return 0; return x; } @@ -65,7 +65,7 @@ static void GetLoads(uint64_t loads[3]) { struct loadavg loadinfo; int mib[2] = {CTL_VM, VM_LOADAVG}; size = sizeof(loadinfo); - if (sys_sysctl(mib, 2, &loadinfo, &size, 0, 0) != -1) { + if (sysctl(mib, 2, &loadinfo, &size, 0, 0) != -1) { for (int i = 0; i < 3; i++) { loads[i] = (double)loadinfo.ldavg[i] / loadinfo.fscale * 65536; } diff --git a/libc/calls/uname.c b/libc/calls/uname.c index 2f03c15b4..6c139776b 100644 --- a/libc/calls/uname.c +++ b/libc/calls/uname.c @@ -62,7 +62,7 @@ static void GetBsdStr(int c0, int c1, char *s) { size_t n = SYS_NMLN; int cmd[2] = {c0, c1}; bzero(s, n), --n; - sys_sysctl(cmd, 2, s, &n, NULL, 0); + sysctl(cmd, 2, s, &n, NULL, 0); errno = e; // sysctl kern.version is too verbose for uname if ((p = strchr(s, '\n'))) { diff --git a/libc/log/oncrash_amd64.c b/libc/log/oncrash_amd64.c index dccb03682..0c965faec 100644 --- a/libc/log/oncrash_amd64.c +++ b/libc/log/oncrash_amd64.c @@ -254,10 +254,28 @@ static relegated void ShowCrashReport(int err, int sig, struct siginfo *si, kprintf("\n"); } +static inline void SpinLock(atomic_uint *lock) { + int x; + for (;;) { + x = atomic_exchange_explicit(lock, 1, memory_order_acquire); + if (!x) + break; + } +} + +static inline void SpinUnlock(atomic_uint *lock) { + atomic_store_explicit(lock, 0, memory_order_release); +} + relegated void __oncrash(int sig, struct siginfo *si, void *arg) { + static atomic_uint lock; + BLOCK_CANCELATION; + SpinLock(&lock); int err = errno; __restore_tty(); ShowCrashReport(err, sig, si, arg); + SpinUnlock(&lock); + ALLOW_CANCELATION; } #endif /* __x86_64__ */ diff --git a/libc/log/oncrash_arm64.c b/libc/log/oncrash_arm64.c index ba0ba4019..47106759f 100644 --- a/libc/log/oncrash_arm64.c +++ b/libc/log/oncrash_arm64.c @@ -18,6 +18,7 @@ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "ape/sections.internal.h" #include "libc/assert.h" +#include "libc/atomic.h" #include "libc/calls/blockcancel.internal.h" #include "libc/calls/calls.h" #include "libc/calls/struct/aarch64.internal.h" @@ -32,6 +33,7 @@ #include "libc/calls/ucontext.h" #include "libc/cxxabi.h" #include "libc/errno.h" +#include "libc/intrin/atomic.h" #include "libc/intrin/describebacktrace.internal.h" #include "libc/intrin/describeflags.internal.h" #include "libc/intrin/kprintf.h" @@ -377,10 +379,25 @@ static relegated void __oncrash_impl(int sig, struct siginfo *si, klog(b->p, MIN(b->i, b->n)); } +static inline void SpinLock(atomic_uint *lock) { + int x; + for (;;) { + x = atomic_exchange_explicit(lock, 1, memory_order_acquire); + if (!x) + break; + } +} + +static inline void SpinUnlock(atomic_uint *lock) { + atomic_store_explicit(lock, 0, memory_order_release); +} + relegated void __oncrash(int sig, struct siginfo *si, void *arg) { - ucontext_t *ctx = arg; + static atomic_uint lock; BLOCK_CANCELATION; - __oncrash_impl(sig, si, ctx); + SpinLock(&lock); + __oncrash_impl(sig, si, arg); + SpinUnlock(&lock); ALLOW_CANCELATION; } diff --git a/libc/runtime/getinterpreterexecutablename.c b/libc/runtime/getinterpreterexecutablename.c index 81fef93e0..a5857faa4 100644 --- a/libc/runtime/getinterpreterexecutablename.c +++ b/libc/runtime/getinterpreterexecutablename.c @@ -74,9 +74,9 @@ char *GetInterpreterExecutableName(char *p, size_t n) { cmd[2] = 12; // KERN_PROC_PATHNAME } else { // cmd[2] = 5; // KERN_PROC_PATHNAME - } // - cmd[3] = -1; // current process - if (sys_sysctl(cmd, ARRAYLEN(cmd), p, &n, 0, 0) != -1) { + } // + cmd[3] = -1; // current process + if (sysctl(cmd, ARRAYLEN(cmd), p, &n, 0, 0) != -1) { errno = e; return p; } diff --git a/libc/runtime/getsysctl.c b/libc/runtime/getsysctl.c index 16602eff2..fe97f57a8 100644 --- a/libc/runtime/getsysctl.c +++ b/libc/runtime/getsysctl.c @@ -23,7 +23,7 @@ long __get_sysctl(int x, int y) { int value; int mib[2] = {x, y}; size_t len = sizeof(value); - if (sys_sysctl(mib, 2, &value, &len, 0, 0) != -1) { + if (sysctl(mib, 2, &value, &len, 0, 0) != -1) { return value; } else { return -1; diff --git a/libc/runtime/syslib.internal.h b/libc/runtime/syslib.internal.h index ec6d87fe5..90ed2994f 100644 --- a/libc/runtime/syslib.internal.h +++ b/libc/runtime/syslib.internal.h @@ -12,7 +12,7 @@ COSMOPOLITAN_C_START_ #define SYSLIB_MAGIC ('s' | 'l' << 8 | 'i' << 16 | 'b' << 24) -#define SYSLIB_VERSION 9 /* sync with ape/ape-m1.c */ +#define SYSLIB_VERSION 10 /* sync with ape/ape-m1.c */ /* if this number increases, then everyone on macos arm will need to reinstall ape loader in order to run newer ape binaries so please @@ -82,6 +82,9 @@ struct Syslib { char *(*__dlerror)(void); /* v9 (2024-01-31) */ int (*__pthread_cpu_number_np)(size_t *); + long (*__sysctl)(int *, unsigned, void *, size_t *, void *, size_t); + long (*__sysctlbyname)(const char *, void *, size_t *, void *, size_t); + long (*__sysctlnametomib)(const char *, int *, size_t *); }; extern struct Syslib *__syslib; diff --git a/third_party/awk/b.c b/third_party/awk/b.c index 870eecf58..3559e83c4 100644 --- a/third_party/awk/b.c +++ b/third_party/awk/b.c @@ -1463,6 +1463,7 @@ rescan: } break; } + __builtin_unreachable(); } int cgoto(fa *f, int s, int c) diff --git a/tool/emacs/cosmo-stuff.el b/tool/emacs/cosmo-stuff.el index 771b45ea3..bfca961fe 100644 --- a/tool/emacs/cosmo-stuff.el +++ b/tool/emacs/cosmo-stuff.el @@ -215,7 +215,7 @@ (runs (format "o/$m/%s%s V=5 TESTARGS=-b" name runsuffix)) (buns (format "o/$m/test/%s_test%s V=5 TESTARGS=-b" name runsuffix))) (cond ((not (member ext '("c" "cc" "cpp" "s" "S" "rl" "f" "cu"))) - (format "m=%s; make -j32 MODE=$m o/$m/%s" + (format "m=%s; make -j96 MODE=$m o/$m/%s" mode (directory-file-name (or (file-name-directory @@ -226,7 +226,7 @@ (cosmo-join " && " `("m=%s; f=o/$m/%s" - ,(concat "make -j32 $f MODE=$m") + ,(concat "make -j96 $f MODE=$m") "scp $f $f.dbg win10:; ssh win10 ./%s")) mode name (file-name-nondirectory name))) ((eq kind 'run-xnu) @@ -234,19 +234,19 @@ (cosmo-join " && " `("m=%s; f=o/$m/%s" - ,(concat "make -j32 $f MODE=$m") + ,(concat "make -j96 $f MODE=$m") "scp $f $f.dbg xnu:" "ssh xnu ./%s")) mode name (file-name-nondirectory name))) ((and (equal suffix "") (cosmo-contains "_test." (buffer-file-name))) - (format "m=%s; make -j32 MODE=$m %s" + (format "m=%s; make -j96 MODE=$m %s" mode runs)) ((and (equal suffix "") (file-exists-p (format "%s" buddy))) (format (cosmo-join " && " - '("m=%s; n=%s; make -j32 o/$m/$n%s.o MODE=$m" + '("m=%s; n=%s; make -j96 o/$m/$n%s.o MODE=$m" ;; "bloat o/$m/%s.o | head" ;; "nm -C --size o/$m/%s.o | sort -r" "echo" @@ -258,11 +258,11 @@ (cosmo-join " && " `("m=%s; f=o/$m/%s" - ,(concat "make -j32 $f MODE=$m") + ,(concat "make -j96 $f MODE=$m") "build/run ./$f")) mode name)) ((eq kind 'test) - (format `"m=%s; f=o/$m/%s.ok && make -j32 $f MODE=$m" mode name)) + (format `"m=%s; f=o/$m/%s.ok && make -j96 $f MODE=$m" mode name)) ((and (file-regular-p this) (file-executable-p this)) (format "build/run ./%s" file)) @@ -271,7 +271,7 @@ (cosmo-join " && " `("m=%s; f=o/$m/%s%s.o" - ,(concat "make -j32 $f MODE=$m") + ,(concat "make -j96 $f MODE=$m") ;; "nm -C --size $f | sort -r" "echo" "size -A $f | grep '^[.T]' | grep -v 'debug\\|command.line\\|stack' | sort -rnk2" @@ -481,7 +481,7 @@ (error "don't know how to show assembly for non c/c++ source file")) (let* ((default-directory root) (compile-command - (format "make %s -j32 MODE=%s %s %s" + (format "make %s -j96 MODE=%s %s %s" (or extra-make-flags "") mode asm-gcc asm-clang))) (save-buffer) (set-visited-file-modtime (current-time)) @@ -641,11 +641,11 @@ (compile (format "sh -c %s" file))) ((eq major-mode 'lua-mode) (let* ((mode (cosmo--make-mode arg))) - (compile (format "make -j32 MODE=%s o/%s/tool/net/redbean && build/run o/%s/tool/net/redbean -i %s" mode mode mode file)))) + (compile (format "make -j96 MODE=%s o/%s/tool/net/redbean && build/run o/%s/tool/net/redbean -i %s" mode mode mode file)))) ((and (eq major-mode 'python-mode) (cosmo-startswith "third_party/python/Lib/test/" file)) (let ((mode (cosmo--make-mode arg))) - (compile (format "make -j32 MODE=%s PYHARNESSARGS=-vv PYTESTARGS=-v o/%s/%s.py.runs" + (compile (format "make -j96 MODE=%s PYHARNESSARGS=-vv PYTESTARGS=-v o/%s/%s.py.runs" mode mode (file-name-sans-extension file))))) ((eq major-mode 'python-mode) (compile (format "python %s" file))) From 8f6bc9dabc790659b830c654e53952059cf4b562 Mon Sep 17 00:00:00 2001 From: Cadence Ember Date: Sat, 4 May 2024 02:49:41 +1200 Subject: [PATCH 020/123] Let signals interrupt fgets unless SA_RESTART set (#1152) --- libc/stdio/fgets_unlocked.c | 6 +- test/libc/stdio/fgets_interrupt_test.c | 138 +++++++++++++++++++++++++ 2 files changed, 139 insertions(+), 5 deletions(-) create mode 100644 test/libc/stdio/fgets_interrupt_test.c diff --git a/libc/stdio/fgets_unlocked.c b/libc/stdio/fgets_unlocked.c index c01a3105e..9fb38e00c 100644 --- a/libc/stdio/fgets_unlocked.c +++ b/libc/stdio/fgets_unlocked.c @@ -57,11 +57,7 @@ char *fgets_unlocked(char *s, int size, FILE *f) { break; } else { if ((c = fgetc_unlocked(f)) == -1) { - if (ferror_unlocked(f) == EINTR) { - continue; - } else { - break; - } + break; } *p++ = c & 255; if (c == '\n') diff --git a/test/libc/stdio/fgets_interrupt_test.c b/test/libc/stdio/fgets_interrupt_test.c new file mode 100644 index 000000000..ec6876432 --- /dev/null +++ b/test/libc/stdio/fgets_interrupt_test.c @@ -0,0 +1,138 @@ +/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│ +│ vi: set et ft=c ts=2 sts=2 sw=2 fenc=utf-8 :vi │ +╞══════════════════════════════════════════════════════════════════════════════╡ +│ Copyright 2024 Cadence Ember │ +│ │ +│ Permission to use, copy, modify, and/or distribute this software for │ +│ any purpose with or without fee is hereby granted, provided that the │ +│ above copyright notice and this permission notice appear in all copies. │ +│ │ +│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │ +│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │ +│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │ +│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │ +│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │ +│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │ +│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ +│ PERFORMANCE OF THIS SOFTWARE. │ +╚─────────────────────────────────────────────────────────────────────────────*/ +#include "libc/isystem/errno.h" +#include "libc/isystem/sched.h" +#include "libc/isystem/signal.h" +#include "libc/isystem/stddef.h" +#include "libc/isystem/unistd.h" +#include "libc/stdio/stdio.h" +#include "libc/testlib/testlib.h" + +#define MY_TEST_STRING_1 "He" +#define MY_TEST_STRING_2 "llo world!" + +char buf[20] = {0}; +int pipes[2]; +int pid; +int got_sigusr1 = 0; + +// -=- these get called for each test ------------------------------------------ + +void sigusr1_handler(int) { + got_sigusr1 = 1; +} + +void write_pipe(int send_signal_before_end) { + // Set up pipe for writing + close(pipes[0]); + FILE *stream = fdopen(pipes[1], "w"); + + // Start writing the first part of the stream + fputs(MY_TEST_STRING_1, stream); + + // Send SIGUSR1 to parent (if we're currently testing that) + if (send_signal_before_end) { + kill(getppid(), SIGUSR1); + } + + // Send rest of stream + fputs(MY_TEST_STRING_2, stream); + // Close stream - this will cause the parent's fgets to end + fclose(stream); +} + +void read_pipe() { + // Set up pipe for reading + close(pipes[1]); + FILE *stream = fdopen(pipes[0], "r"); + + // Read with fgets + fgets(buf, 20, stream); + + // Tidy up + fclose(stream); +} + +// -=- these set up the tests -------------------------------------------------- + +void SetUpOnce(void) { + cpu_set_t set; + CPU_ZERO(&set); + CPU_SET(1, &set); + if (sched_setaffinity(0, sizeof set, &set) == -1) { + perror("sched_setaffinity"); + fprintf(stderr, "single core affinity is needed for test reliability\n"); + _exit(1); + } +} + +void setup_signal_and_pipe(uint64_t sa_flags) { + // Set up SIGUSR1 handler + struct sigaction sa = {.sa_handler = sigusr1_handler, .sa_flags = sa_flags}; + if (sigaction(SIGUSR1, &sa, NULL) == -1) { + perror("sigaction"); + _exit(1); + } + got_sigusr1 = 0; + + // Set up pipe between parent and child + if (pipe(pipes) == -1) { + perror("pipe"); + _exit(1); + } +} + +// -=- these are the tests ----------------------------------------------------- + +TEST(fgets_eintr, testThatFgetsReadsFromPipeNormally) { + setup_signal_and_pipe(0); // 0 = no SA_RESTART + ASSERT_NE(-1, (pid = fork())); + if (!pid) { + write_pipe(0); // 0 = no signal + _exit(0); + } + read_pipe(); + EXPECT_STREQ(MY_TEST_STRING_1 MY_TEST_STRING_2, buf); +} + +TEST(fgets_eintr, testThatTheSignalInterruptsFgets) { + setup_signal_and_pipe(0); // 0 = no SA_RESTART + ASSERT_NE(-1, (pid = fork())); + if (!pid) { + write_pipe(1); // 1 = signal + _exit(0); + } + read_pipe(); + EXPECT_STRNE(MY_TEST_STRING_1 MY_TEST_STRING_2, buf); + EXPECT_EQ(EINTR, errno); + EXPECT_EQ(1, got_sigusr1); +} + +TEST(fgets_eintr, testThatFgetsRestartsWhenSaRestartIsSet) { + setup_signal_and_pipe(SA_RESTART); // SA_RESTART + ASSERT_NE(-1, (pid = fork())); + if (!pid) { + write_pipe(1); // 1 = signal + _exit(0); + } + read_pipe(); + EXPECT_STREQ(MY_TEST_STRING_1 MY_TEST_STRING_2, buf); + EXPECT_NE(EINTR, errno); + EXPECT_EQ(1, got_sigusr1); +} From b6e40a3a586c80639e7bc2af272c82e481eb1b44 Mon Sep 17 00:00:00 2001 From: Gavin Hayes Date: Fri, 3 May 2024 10:59:51 -0400 Subject: [PATCH 021/123] Add /dev/(u)random on NT (#1163) --- libc/calls/fcntl-nt.c | 3 +- libc/calls/fstat-nt.c | 1 + libc/calls/fstatat-nt.c | 2 ++ libc/calls/ioctl.c | 9 +++--- libc/calls/ischardev.c | 1 + libc/calls/lseek-nt.c | 2 +- libc/calls/open-nt.c | 11 +++++++ libc/calls/pread.c | 3 +- libc/calls/printfds.c | 2 ++ libc/calls/pwrite.c | 3 +- libc/calls/read-nt.c | 4 +++ libc/calls/readv-nt.c | 1 + libc/calls/readwrite-nt.c | 2 +- libc/calls/struct/fd.internal.h | 19 ++++++------ libc/calls/write-nt.c | 5 +++ libc/calls/writev-nt.c | 1 + test/libc/calls/specialfile_test.c | 50 +++++++++++++++++++++++++++--- 17 files changed, 97 insertions(+), 22 deletions(-) diff --git a/libc/calls/fcntl-nt.c b/libc/calls/fcntl-nt.c index 09483e6e1..830a50830 100644 --- a/libc/calls/fcntl-nt.c +++ b/libc/calls/fcntl-nt.c @@ -332,7 +332,8 @@ textwindows int sys_fcntl_nt(int fd, int cmd, uintptr_t arg) { if (__isfdkind(fd, kFdFile) || // __isfdkind(fd, kFdSocket) || // __isfdkind(fd, kFdConsole) || // - __isfdkind(fd, kFdDevNull)) { + __isfdkind(fd, kFdDevNull) || // + __isfdkind(fd, kFdDevRandom)) { if (cmd == F_GETFL) { rc = g_fds.p[fd].flags & (O_ACCMODE | _O_APPEND | _O_DIRECT | _O_NONBLOCK | _O_RANDOM | _O_SEQUENTIAL); diff --git a/libc/calls/fstat-nt.c b/libc/calls/fstat-nt.c index 9fd4874cf..97a941b1c 100644 --- a/libc/calls/fstat-nt.c +++ b/libc/calls/fstat-nt.c @@ -104,6 +104,7 @@ textwindows int sys_fstat_nt(int fd, struct stat *st) { return ebadf(); case kFdConsole: case kFdDevNull: + case kFdDevRandom: return sys_fstat_nt_special(g_fds.p[fd].kind, st); case kFdSocket: return sys_fstat_nt_socket(g_fds.p[fd].kind, st); diff --git a/libc/calls/fstatat-nt.c b/libc/calls/fstatat-nt.c index 63e24b9b4..b8b75e8f8 100644 --- a/libc/calls/fstatat-nt.c +++ b/libc/calls/fstatat-nt.c @@ -59,6 +59,8 @@ textwindows int sys_fstatat_nt(int dirfd, const char *path, struct stat *st, return sys_fstat_nt_special(kFdConsole, st); } else if (!strcmp(path + 5, "null")) { return sys_fstat_nt_special(kFdDevNull, st); + } else if (!strcmp(path + 5, "random") || !strcmp(path + 5, "urandom")) { + return sys_fstat_nt_special(kFdDevRandom, st); } else if (!strcmp(path + 5, "stdin")) { return sys_fstat_nt(STDIN_FILENO, st); } else if (!strcmp(path + 5, "stdout")) { diff --git a/libc/calls/ioctl.c b/libc/calls/ioctl.c index 4d96e6d61..21434d00e 100644 --- a/libc/calls/ioctl.c +++ b/libc/calls/ioctl.c @@ -24,7 +24,6 @@ #include "libc/calls/termios.h" #include "libc/dce.h" #include "libc/errno.h" -#include "libc/serialize.h" #include "libc/intrin/cmpxchg.h" #include "libc/intrin/strace.internal.h" #include "libc/intrin/weaken.h" @@ -42,6 +41,7 @@ #include "libc/nt/winsock.h" #include "libc/runtime/runtime.h" #include "libc/runtime/stack.h" +#include "libc/serialize.h" #include "libc/sock/internal.h" #include "libc/sock/struct/ifconf.h" #include "libc/sock/struct/ifreq.h" @@ -66,7 +66,7 @@ static struct HostAdapterInfoNode { struct sockaddr netmask; struct sockaddr broadcast; short flags; -} *__hostInfo; +} * __hostInfo; static int ioctl_default(int fd, unsigned long request, void *arg) { int rc; @@ -107,8 +107,9 @@ static int ioctl_fionread(int fd, uint32_t *arg) { *arg = MAX(0, bytes); return 0; } else if (g_fds.p[fd].kind == kFdDevNull) { - *arg = 1; - return 0; + return enotty(); + } else if (g_fds.p[fd].kind == kFdDevRandom) { + return einval(); } else if (GetFileType(handle) == kNtFileTypePipe) { uint32_t avail; if (PeekNamedPipe(handle, 0, 0, 0, &avail, 0)) { diff --git a/libc/calls/ischardev.c b/libc/calls/ischardev.c index a323b908d..615c068c8 100644 --- a/libc/calls/ischardev.c +++ b/libc/calls/ischardev.c @@ -55,6 +55,7 @@ bool32 ischardev(int fd) { } } else { return __isfdkind(fd, kFdConsole) || __isfdkind(fd, kFdDevNull) || + __isfdkind(fd, kFdDevRandom) || (__isfdkind(fd, kFdFile) && GetFileType(g_fds.p[fd].handle) == kNtFileTypeChar); } diff --git a/libc/calls/lseek-nt.c b/libc/calls/lseek-nt.c index 28ec23daa..11ef3471f 100644 --- a/libc/calls/lseek-nt.c +++ b/libc/calls/lseek-nt.c @@ -62,7 +62,7 @@ static textwindows int64_t Seek(struct Fd *f, int64_t offset, int whence) { } textwindows int64_t sys_lseek_nt(int fd, int64_t offset, int whence) { - if (__isfdkind(fd, kFdDevNull)) { + if (__isfdkind(fd, kFdDevNull) || __isfdkind(fd, kFdDevRandom)) { return offset; } else if (__isfdkind(fd, kFdFile)) { struct Fd *f = g_fds.p + fd; diff --git a/libc/calls/open-nt.c b/libc/calls/open-nt.c index 663164c53..c7339171b 100644 --- a/libc/calls/open-nt.c +++ b/libc/calls/open-nt.c @@ -159,6 +159,15 @@ static textwindows int sys_open_nt_special(int fd, int flags, int mode, return fd; } +static textwindows int sys_open_nt_no_handle(int fd, int flags, int mode, + int kind) { + g_fds.p[fd].kind = kind; + g_fds.p[fd].mode = mode; + g_fds.p[fd].flags = flags; + g_fds.p[fd].handle = -1; + return fd; +} + static textwindows int sys_open_nt_dup(int fd, int flags, int mode, int oldfd) { int64_t handle; if (!__isfdopen(oldfd)) { @@ -211,6 +220,8 @@ textwindows int sys_open_nt(int dirfd, const char *file, uint32_t flags, rc = sys_open_nt_special(fd, flags, mode, kFdConsole, u"CONIN$"); } else if (!strcmp(file + 5, "null")) { rc = sys_open_nt_special(fd, flags, mode, kFdDevNull, u"NUL"); + } else if (!strcmp(file + 5, "urandom") || !strcmp(file + 5, "random")) { + rc = sys_open_nt_no_handle(fd, flags, mode, kFdDevRandom); } else if (!strcmp(file + 5, "stdin")) { rc = sys_open_nt_dup(fd, flags, mode, STDIN_FILENO); } else if (!strcmp(file + 5, "stdout")) { diff --git a/libc/calls/pread.c b/libc/calls/pread.c index c13dcab36..c90fe6108 100644 --- a/libc/calls/pread.c +++ b/libc/calls/pread.c @@ -72,7 +72,8 @@ ssize_t pread(int fd, void *buf, size_t size, int64_t offset) { rc = sys_pread(fd, buf, size, offset, offset); } else if (__isfdkind(fd, kFdSocket)) { rc = espipe(); - } else if (__isfdkind(fd, kFdFile) || __isfdkind(fd, kFdDevNull)) { + } else if (__isfdkind(fd, kFdFile) || __isfdkind(fd, kFdDevNull) || + __isfdkind(fd, kFdDevRandom)) { rc = sys_read_nt(fd, (struct iovec[]){{buf, size}}, 1, offset); } else { rc = ebadf(); diff --git a/libc/calls/printfds.c b/libc/calls/printfds.c index 9b81e1e00..9e3ad0e55 100644 --- a/libc/calls/printfds.c +++ b/libc/calls/printfds.c @@ -40,6 +40,8 @@ static const char *__fdkind2str(int x) { return "kFdZip"; case kFdEpoll: return "kFdEpoll"; + case kFdDevRandom: + return "kFdRandom"; default: return "kFdWut"; } diff --git a/libc/calls/pwrite.c b/libc/calls/pwrite.c index b777e06ff..472472c6d 100644 --- a/libc/calls/pwrite.c +++ b/libc/calls/pwrite.c @@ -65,7 +65,8 @@ ssize_t pwrite(int fd, const void *buf, size_t size, int64_t offset) { rc = sys_pwrite(fd, buf, size, offset, offset); } else if (__isfdkind(fd, kFdSocket)) { rc = espipe(); - } else if (__isfdkind(fd, kFdFile) || __isfdkind(fd, kFdDevNull)) { + } else if (__isfdkind(fd, kFdFile) || __isfdkind(fd, kFdDevNull) || + __isfdkind(fd, kFdDevRandom)) { rc = sys_write_nt(fd, (struct iovec[]){{(void *)buf, size}}, 1, offset); } else { return ebadf(); diff --git a/libc/calls/read-nt.c b/libc/calls/read-nt.c index 699a7e2d8..931e9b1f9 100644 --- a/libc/calls/read-nt.c +++ b/libc/calls/read-nt.c @@ -786,6 +786,10 @@ textwindows ssize_t ReadBuffer(int fd, void *data, size_t size, int64_t offset, return 0; } + if (f->kind == kFdDevRandom) { + return ProcessPrng(data, size) ? size : __winerr(); + } + if (f->kind == kFdConsole) { return ReadFromConsole(f, data, size, waitmask); } diff --git a/libc/calls/readv-nt.c b/libc/calls/readv-nt.c index 3bc2f57d4..af4de5323 100644 --- a/libc/calls/readv-nt.c +++ b/libc/calls/readv-nt.c @@ -29,6 +29,7 @@ textwindows ssize_t sys_readv_nt(int fd, const struct iovec *iov, int iovlen) { case kFdFile: case kFdConsole: case kFdDevNull: + case kFdDevRandom: return sys_read_nt(fd, iov, iovlen, -1); case kFdSocket: return _weaken(sys_recv_nt)(fd, iov, iovlen, 0); diff --git a/libc/calls/readwrite-nt.c b/libc/calls/readwrite-nt.c index 3643cd9dc..530880f4b 100644 --- a/libc/calls/readwrite-nt.c +++ b/libc/calls/readwrite-nt.c @@ -61,7 +61,7 @@ sys_readwrite_nt(int fd, void *data, size_t size, ssize_t offset, bool pwriting = offset != -1; bool seekable = (f->kind == kFdFile && GetFileType(handle) == kNtFileTypeDisk) || - f->kind == kFdDevNull; + f->kind == kFdDevNull || f->kind == kFdDevRandom; if (pwriting && !seekable) { return espipe(); } diff --git a/libc/calls/struct/fd.internal.h b/libc/calls/struct/fd.internal.h index 235ee7ff5..e3ff36fc5 100644 --- a/libc/calls/struct/fd.internal.h +++ b/libc/calls/struct/fd.internal.h @@ -2,15 +2,16 @@ #define COSMOPOLITAN_LIBC_CALLS_STRUCT_FD_INTERNAL_H_ COSMOPOLITAN_C_START_ -#define kFdEmpty 0 -#define kFdFile 1 -#define kFdSocket 2 -#define kFdConsole 4 -#define kFdSerial 5 -#define kFdZip 6 -#define kFdEpoll 7 -#define kFdReserved 8 -#define kFdDevNull 9 +#define kFdEmpty 0 +#define kFdFile 1 +#define kFdSocket 2 +#define kFdConsole 4 +#define kFdSerial 5 +#define kFdZip 6 +#define kFdEpoll 7 +#define kFdReserved 8 +#define kFdDevNull 9 +#define kFdDevRandom 10 struct Fd { char kind; diff --git a/libc/calls/write-nt.c b/libc/calls/write-nt.c index c5ae7cb02..edea79f9f 100644 --- a/libc/calls/write-nt.c +++ b/libc/calls/write-nt.c @@ -52,6 +52,11 @@ static textwindows ssize_t sys_write_nt_impl(int fd, void *data, size_t size, struct Fd *f = g_fds.p + fd; bool isconsole = f->kind == kFdConsole; + // not implemented, XNU returns eperm(); + if (f->kind == kFdDevRandom) { + return eperm(); + } + // determine win32 handle for writing int64_t handle = f->handle; if (isconsole && _weaken(GetConsoleOutputHandle)) { diff --git a/libc/calls/writev-nt.c b/libc/calls/writev-nt.c index 367b22d27..edf7cdd2f 100644 --- a/libc/calls/writev-nt.c +++ b/libc/calls/writev-nt.c @@ -28,6 +28,7 @@ textwindows ssize_t sys_writev_nt(int fd, const struct iovec *iov, int iovlen) { case kFdFile: case kFdConsole: case kFdDevNull: + case kFdDevRandom: return sys_write_nt(fd, iov, iovlen, -1); case kFdSocket: return _weaken(sys_send_nt)(fd, iov, iovlen, 0); diff --git a/test/libc/calls/specialfile_test.c b/test/libc/calls/specialfile_test.c index 169ac50ee..f96cea944 100644 --- a/test/libc/calls/specialfile_test.c +++ b/test/libc/calls/specialfile_test.c @@ -20,15 +20,19 @@ #include "libc/dce.h" #include "libc/errno.h" #include "libc/nt/files.h" +#include "libc/str/str.h" #include "libc/sysv/consts/f.h" #include "libc/sysv/consts/o.h" #include "libc/testlib/testlib.h" int pipefd[2]; int stdoutBack; +int allowMask; void SetUpOnce(void) { testlib_enable_tmp_setup_teardown(); + // qemu-aarch64 defines o_largefile wrong + allowMask = ~(O_LARGEFILE | 0x00008000); } void CaptureStdout(void) { @@ -46,8 +50,7 @@ void RestoreStdout(void) { TEST(specialfile, devNull) { ASSERT_SYS(0, 3, creat("/dev/null", 0644)); - // qemu-aarch64 defines o_largefile wrong - ASSERT_EQ(O_WRONLY, fcntl(3, F_GETFL) & ~(O_LARGEFILE | 0x00008000)); + ASSERT_EQ(O_WRONLY, fcntl(3, F_GETFL) & allowMask); ASSERT_SYS(0, 2, write(3, "hi", 2)); ASSERT_SYS(0, 2, pwrite(3, "hi", 2, 0)); ASSERT_SYS(0, 2, pwrite(3, "hi", 2, 2)); @@ -64,12 +67,51 @@ TEST(specialfile, devNull) { TEST(specialfile, devNullRead) { char buf[8] = {0}; ASSERT_SYS(0, 3, open("/dev/null", O_RDONLY)); - // qemu-aarch64 defines o_largefile wrong - ASSERT_EQ(O_RDONLY, fcntl(3, F_GETFL) & ~(O_LARGEFILE | 0x00008000)); + ASSERT_EQ(O_RDONLY, fcntl(3, F_GETFL) & allowMask); ASSERT_SYS(0, 0, read(3, buf, 8)); ASSERT_SYS(0, 0, close(3)); } +TEST(specialfile, devRandomRead) { + char buf[8] = {0}; + ASSERT_SYS(0, 3, open("/dev/random", O_RDONLY)); + ASSERT_EQ(O_RDONLY, fcntl(3, F_GETFL) & allowMask); + ASSERT_SYS(0, 8, read(3, buf, 8)); + ASSERT_NE(0, memcmp(buf, " ", 8)); + ASSERT_SYS(0, 0, close(3)); +} + +TEST(specialfile, devUrandomRead) { + char buf[8] = {0}; + ASSERT_SYS(0, 3, open("/dev/urandom", O_RDONLY)); + ASSERT_EQ(O_RDONLY, fcntl(3, F_GETFL) & allowMask); + ASSERT_SYS(0, 8, read(3, buf, 8)); + ASSERT_NE(0, memcmp(buf, " ", 8)); + ASSERT_SYS(0, 0, close(3)); +} + +TEST(specialfile, devRandomWrite_fails_on_nt) { + if (!IsWindows()) { + return; + } + char buf[8] = {0}; + ASSERT_SYS(0, 3, creat("/dev/random", 0644)); + ASSERT_EQ(O_WRONLY, fcntl(3, F_GETFL) & allowMask); + ASSERT_SYS(EPERM, -1, write(3, buf, 8)); + ASSERT_SYS(0, 0, close(3)); +} + +TEST(specialfile, devUrandomWrite_fails_on_nt) { + if (!IsWindows()) { + return; + } + char buf[8] = {0}; + ASSERT_SYS(0, 3, creat("/dev/urandom", 0644)); + ASSERT_EQ(O_WRONLY, fcntl(3, F_GETFL) & allowMask); + ASSERT_SYS(EPERM, -1, write(3, buf, 8)); + ASSERT_SYS(0, 0, close(3)); +} + TEST(specialfile, devStdout) { char buf[8] = {8}; CaptureStdout(); From deff138e7eb4b0f89ea390b26715a3e543e9bd12 Mon Sep 17 00:00:00 2001 From: Gavin Hayes Date: Fri, 3 May 2024 11:03:57 -0400 Subject: [PATCH 022/123] recvfrom: don't convert address if addrsize is 0 (#1153) --- libc/sock/recvfrom.c | 13 ++++++++--- test/libc/sock/recvfrom_test.c | 41 ++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 3 deletions(-) diff --git a/libc/sock/recvfrom.c b/libc/sock/recvfrom.c index 98cd7317e..d3e326f1b 100644 --- a/libc/sock/recvfrom.c +++ b/libc/sock/recvfrom.c @@ -70,6 +70,9 @@ ssize_t recvfrom(int fd, void *buf, size_t size, int flags, if (__isfdkind(fd, kFdSocket)) { rc = sys_recvfrom_nt(fd, (struct iovec[]){{buf, size}}, 1, flags, &addr, &addrsize); + if (rc != -1 && addrsize == sizeof(addr)) { + addrsize = 0; + } } else if (__isfdkind(fd, kFdFile) && !opt_out_srcaddr) { /* socketpair */ if (!flags) { rc = sys_read_nt(fd, (struct iovec[]){{buf, size}}, 1, -1); @@ -84,10 +87,14 @@ ssize_t recvfrom(int fd, void *buf, size_t size, int flags, } if (rc != -1) { - if (IsBsd()) { - __convert_bsd_to_sockaddr(&addr); + if (addrsize) { + if (IsBsd()) { + __convert_bsd_to_sockaddr(&addr); + } + __write_sockaddr(&addr, opt_out_srcaddr, opt_inout_srcaddrsize); + } else { + *opt_inout_srcaddrsize = 0; } - __write_sockaddr(&addr, opt_out_srcaddr, opt_inout_srcaddrsize); } END_CANCELATION_POINT; diff --git a/test/libc/sock/recvfrom_test.c b/test/libc/sock/recvfrom_test.c index 8126a8f4e..4ef3c7a11 100644 --- a/test/libc/sock/recvfrom_test.c +++ b/test/libc/sock/recvfrom_test.c @@ -93,3 +93,44 @@ TEST(recvfrom, test) { EXPECT_SYS(0, 0, close(client1)); WAIT(exit, 0); } + +// server listens for connections, accepts a connection, and sends data +// client connects to server recieves with recvfrom and verifies addrsize +// is 0 as the sender info isn't available on connection sockets. +TEST(recvfrom, tcp) { + uint32_t addrsize = sizeof(struct sockaddr_in); + struct sockaddr_in server = { + .sin_family = AF_INET, + .sin_addr.s_addr = htonl(0x7f000001), + }; + ASSERT_SYS(0, 3, socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)); + ASSERT_SYS(0, 0, bind(3, (struct sockaddr *)&server, sizeof(server))); + ASSERT_SYS(0, 0, getsockname(3, (struct sockaddr *)&server, &addrsize)); + ASSERT_SYS(0, 0, listen(3, 5)); + + //////////////////////////////////////////////////////////////////////////////// + SPAWN(fork); + struct sockaddr_in data, addr; + uint32_t addrsize = sizeof(struct sockaddr_in); + EXPECT_SYS(0, 0, close(3)); + ASSERT_SYS(0, 3, socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)); + ASSERT_SYS(0, 0, connect(3, (struct sockaddr *)&server, sizeof(server))); + ASSERT_SYS( + 0, sizeof(data), + recvfrom(3, &data, sizeof(data), 0, (struct sockaddr *)&addr, &addrsize)); + ASSERT_EQ(0, addrsize); + EXPECT_SYS(0, 0, close(3)); + + //////////////////////////////////////////////////////////////////////////////// + PARENT(); + int client; + struct sockaddr client_sockaddr; + uint32_t sockaddr_size = sizeof(client_sockaddr); + ASSERT_NE(-1, (client = accept(3, &client_sockaddr, &sockaddr_size))); + ASSERT_SYS(0, sizeof(client_sockaddr), + sendto(client, &client_sockaddr, sizeof(client_sockaddr), 0, + (struct sockaddr *)&server, sizeof(server))); + EXPECT_SYS(0, 0, close(client)); + WAIT(exit, 0); + EXPECT_SYS(0, 0, close(3)); +} From 5488f0b2caf7d080682a65001ae8c5d1732ab554 Mon Sep 17 00:00:00 2001 From: Gautham <41098605+ahgamut@users.noreply.github.com> Date: Fri, 3 May 2024 10:07:25 -0500 Subject: [PATCH 023/123] Remove zlib namespacing (#1142) We have an optimized version of zlib from the Chromium project. We need it for a lot of our libc services. It would be nice to export this to user applications if we can, since projects like llamafile are already depending on it under the private namespace, to avoid needing to link zlib twice. --- test/libc/runtime/zipos_test.c | 6 +++--- third_party/musl/pwd.c | 6 +++--- third_party/zip/crc32.h | 2 +- third_party/zip/zipfile.c | 10 +++++----- third_party/zlib/zconf.h | 4 ++++ 5 files changed, 16 insertions(+), 12 deletions(-) diff --git a/test/libc/runtime/zipos_test.c b/test/libc/runtime/zipos_test.c index 621c3bbea..a8bae2c23 100644 --- a/test/libc/runtime/zipos_test.c +++ b/test/libc/runtime/zipos_test.c @@ -33,9 +33,9 @@ __static_yoink("zipos"); __static_yoink("libc/testlib/hyperion.txt"); -__static_yoink("_Cz_inflate"); -__static_yoink("_Cz_inflateInit2"); -__static_yoink("_Cz_inflateEnd"); +__static_yoink("inflate"); +__static_yoink("inflateInit2"); +__static_yoink("inflateEnd"); void *Worker(void *arg) { int i, fd; diff --git a/third_party/musl/pwd.c b/third_party/musl/pwd.c index fc54b77cf..b43267e26 100644 --- a/third_party/musl/pwd.c +++ b/third_party/musl/pwd.c @@ -45,9 +45,9 @@ __static_yoink("musl_libc_notice"); // something as substantive as this library, then we shall assume the // application is meaty enough to benefit from the performance of the // chromium zlib library (costs ~40kb binary) versus just having puff -__static_yoink("_Cz_inflateInit2"); -__static_yoink("_Cz_inflate"); -__static_yoink("_Cz_inflateEnd"); +__static_yoink("inflateInit2"); +__static_yoink("inflate"); +__static_yoink("inflateEnd"); #endif static char * diff --git a/third_party/zip/crc32.h b/third_party/zip/crc32.h index 83af2404c..dbf31c19b 100644 --- a/third_party/zip/crc32.h +++ b/third_party/zip/crc32.h @@ -31,7 +31,7 @@ #ifndef USE_ZLIB ZCONST ulg near *get_crc_table OF((void)); #endif -#if (defined(USE_ZLIB) || defined(CRC_TABLE_ONLY)) +#if (1 || defined(USE_ZLIB) || defined(CRC_TABLE_ONLY)) # ifdef IZ_CRC_BE_OPTIMIZ # undef IZ_CRC_BE_OPTIMIZ # endif diff --git a/third_party/zip/zipfile.c b/third_party/zip/zipfile.c index 7b923b80e..1c2987971 100644 --- a/third_party/zip/zipfile.c +++ b/third_party/zip/zipfile.c @@ -72,7 +72,7 @@ #include "libc/nt/winsock.h" #endif -unsigned _Cz_crc32(unsigned crc, const unsigned char *buf, unsigned len); +unsigned crc32(unsigned crc, const unsigned char *buf, unsigned len); /* * XXX start of zipfile.h @@ -867,7 +867,7 @@ local void read_Unicode_Path_entry(pZipListEntry) } strcpy(iname, pZipListEntry->iname); - chksum = _Cz_crc32(chksum, (uch *)(iname), strlen(iname)); + chksum = crc32(chksum, (uch *)(iname), strlen(iname)); free(iname); @@ -972,7 +972,7 @@ local void read_Unicode_Path_local_entry(pZipListEntry) } strcpy(iname, pZipListEntry->iname); - chksum = _Cz_crc32(chksum, (uch *)(iname), strlen(iname)); + chksum = crc32(chksum, (uch *)(iname), strlen(iname)); free(iname); @@ -1558,7 +1558,7 @@ local int add_Unicode_Path_local_extra_field(pZEntry) # define inameLocal (pZEntry->iname) #endif - chksum = _Cz_crc32(chksum, (uch *)(inameLocal), strlen(inameLocal)); + chksum = crc32(chksum, (uch *)(inameLocal), strlen(inameLocal)); #ifdef WIN32_OEM free(inameLocal); @@ -1685,7 +1685,7 @@ local int add_Unicode_Path_cen_extra_field(pZEntry) # define inameLocal (pZEntry->iname) #endif - chksum = _Cz_crc32(chksum, (uch *)(inameLocal), strlen(inameLocal)); + chksum = crc32(chksum, (uch *)(inameLocal), strlen(inameLocal)); #ifdef WIN32_OEM free(inameLocal); diff --git a/third_party/zlib/zconf.h b/third_party/zlib/zconf.h index 3351fe91a..d8e097b2f 100644 --- a/third_party/zlib/zconf.h +++ b/third_party/zlib/zconf.h @@ -13,6 +13,7 @@ #define z_const const +#if 0 #define Z_COSMO_PREFIX_SET #define Bytef _Cz_Bytef @@ -162,6 +163,9 @@ #define zlibCompileFlags _Cz_zlibCompileFlags #define zlibVersion _Cz_zlibVersion +#pragma message "zconf is included, so zlibVersion should be renamed" + +#endif typedef unsigned char Byte; typedef unsigned int uInt; /* 16 bits or more */ From 8a44f913ae0f23d881e9dcb85ddfd12af7a37e63 Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Fri, 3 May 2024 09:11:04 -0700 Subject: [PATCH 024/123] Delete flaky tests Signals are extremely difficult to unit test reliably. This is why functions like sigsuspend() exist. When testing something else and portably it becomes impossible without access to kernel internals. OpenMP flakes in QEMU on one of my workstations. I don't think the support is production worthy, because there's been issues on MacOS additionally. It works great for every experiment I've used it for though. However a flaky test is worse than no test at all. So it's removed until someone takes an interest in productionizing it. --- test/libc/sock/nonblock_test.c | 3 +- test/libc/stdio/fgets_interrupt_test.c | 138 ------- test/libcxx/openmp_test.cc | 476 ------------------------- third_party/BUILD.mk | 1 - 4 files changed, 2 insertions(+), 616 deletions(-) delete mode 100644 test/libc/stdio/fgets_interrupt_test.c delete mode 100644 test/libcxx/openmp_test.cc diff --git a/test/libc/sock/nonblock_test.c b/test/libc/sock/nonblock_test.c index baf7aa92e..3d3259d47 100644 --- a/test/libc/sock/nonblock_test.c +++ b/test/libc/sock/nonblock_test.c @@ -25,6 +25,7 @@ #include "libc/runtime/syslib.internal.h" #include "libc/sock/sock.h" #include "libc/sock/struct/sockaddr.h" +#include "libc/stdio/stdio.h" #include "libc/sysv/consts/af.h" #include "libc/sysv/consts/f.h" #include "libc/sysv/consts/ipproto.h" @@ -107,7 +108,7 @@ TEST(O_NONBLOCK, canBeTunedWithFcntl_toMakeReadNonBlocking) { PARENT(); EXPECT_SYS(0, 0, close(3)); ASSERT_SYS(0, 3, socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)); - ASSERT_SYS(0, O_RDWR, fcntl(3, F_GETFL)); + ASSERT_SYS(0, O_RDWR, fcntl(3, F_GETFL) & O_ACCMODE); // QEMU O_LARGEFILE :( ASSERT_SYS(0, 0, connect(3, (struct sockaddr *)&addr, sizeof(addr))); ASSERT_SYS(0, 0, fcntl(3, F_SETFL, O_RDWR | O_NONBLOCK)); ASSERT_SYS(EAGAIN, -1, read(3, buf, 16)); diff --git a/test/libc/stdio/fgets_interrupt_test.c b/test/libc/stdio/fgets_interrupt_test.c deleted file mode 100644 index ec6876432..000000000 --- a/test/libc/stdio/fgets_interrupt_test.c +++ /dev/null @@ -1,138 +0,0 @@ -/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│ -│ vi: set et ft=c ts=2 sts=2 sw=2 fenc=utf-8 :vi │ -╞══════════════════════════════════════════════════════════════════════════════╡ -│ Copyright 2024 Cadence Ember │ -│ │ -│ Permission to use, copy, modify, and/or distribute this software for │ -│ any purpose with or without fee is hereby granted, provided that the │ -│ above copyright notice and this permission notice appear in all copies. │ -│ │ -│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │ -│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │ -│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │ -│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │ -│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │ -│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │ -│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ -│ PERFORMANCE OF THIS SOFTWARE. │ -╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/isystem/errno.h" -#include "libc/isystem/sched.h" -#include "libc/isystem/signal.h" -#include "libc/isystem/stddef.h" -#include "libc/isystem/unistd.h" -#include "libc/stdio/stdio.h" -#include "libc/testlib/testlib.h" - -#define MY_TEST_STRING_1 "He" -#define MY_TEST_STRING_2 "llo world!" - -char buf[20] = {0}; -int pipes[2]; -int pid; -int got_sigusr1 = 0; - -// -=- these get called for each test ------------------------------------------ - -void sigusr1_handler(int) { - got_sigusr1 = 1; -} - -void write_pipe(int send_signal_before_end) { - // Set up pipe for writing - close(pipes[0]); - FILE *stream = fdopen(pipes[1], "w"); - - // Start writing the first part of the stream - fputs(MY_TEST_STRING_1, stream); - - // Send SIGUSR1 to parent (if we're currently testing that) - if (send_signal_before_end) { - kill(getppid(), SIGUSR1); - } - - // Send rest of stream - fputs(MY_TEST_STRING_2, stream); - // Close stream - this will cause the parent's fgets to end - fclose(stream); -} - -void read_pipe() { - // Set up pipe for reading - close(pipes[1]); - FILE *stream = fdopen(pipes[0], "r"); - - // Read with fgets - fgets(buf, 20, stream); - - // Tidy up - fclose(stream); -} - -// -=- these set up the tests -------------------------------------------------- - -void SetUpOnce(void) { - cpu_set_t set; - CPU_ZERO(&set); - CPU_SET(1, &set); - if (sched_setaffinity(0, sizeof set, &set) == -1) { - perror("sched_setaffinity"); - fprintf(stderr, "single core affinity is needed for test reliability\n"); - _exit(1); - } -} - -void setup_signal_and_pipe(uint64_t sa_flags) { - // Set up SIGUSR1 handler - struct sigaction sa = {.sa_handler = sigusr1_handler, .sa_flags = sa_flags}; - if (sigaction(SIGUSR1, &sa, NULL) == -1) { - perror("sigaction"); - _exit(1); - } - got_sigusr1 = 0; - - // Set up pipe between parent and child - if (pipe(pipes) == -1) { - perror("pipe"); - _exit(1); - } -} - -// -=- these are the tests ----------------------------------------------------- - -TEST(fgets_eintr, testThatFgetsReadsFromPipeNormally) { - setup_signal_and_pipe(0); // 0 = no SA_RESTART - ASSERT_NE(-1, (pid = fork())); - if (!pid) { - write_pipe(0); // 0 = no signal - _exit(0); - } - read_pipe(); - EXPECT_STREQ(MY_TEST_STRING_1 MY_TEST_STRING_2, buf); -} - -TEST(fgets_eintr, testThatTheSignalInterruptsFgets) { - setup_signal_and_pipe(0); // 0 = no SA_RESTART - ASSERT_NE(-1, (pid = fork())); - if (!pid) { - write_pipe(1); // 1 = signal - _exit(0); - } - read_pipe(); - EXPECT_STRNE(MY_TEST_STRING_1 MY_TEST_STRING_2, buf); - EXPECT_EQ(EINTR, errno); - EXPECT_EQ(1, got_sigusr1); -} - -TEST(fgets_eintr, testThatFgetsRestartsWhenSaRestartIsSet) { - setup_signal_and_pipe(SA_RESTART); // SA_RESTART - ASSERT_NE(-1, (pid = fork())); - if (!pid) { - write_pipe(1); // 1 = signal - _exit(0); - } - read_pipe(); - EXPECT_STREQ(MY_TEST_STRING_1 MY_TEST_STRING_2, buf); - EXPECT_NE(EINTR, errno); - EXPECT_EQ(1, got_sigusr1); -} diff --git a/test/libcxx/openmp_test.cc b/test/libcxx/openmp_test.cc deleted file mode 100644 index 927d0f854..000000000 --- a/test/libcxx/openmp_test.cc +++ /dev/null @@ -1,476 +0,0 @@ -/*-*-mode:c++;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8-*-│ -│ vi: set et ft=cpp ts=2 sts=2 sw=2 fenc=utf-8 :vi │ -╞══════════════════════════════════════════════════════════════════════════════╡ -│ Copyright 2024 Justine Alexandra Roberts Tunney │ -│ │ -│ Permission to use, copy, modify, and/or distribute this software for │ -│ any purpose with or without fee is hereby granted, provided that the │ -│ above copyright notice and this permission notice appear in all copies. │ -│ │ -│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │ -│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │ -│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │ -│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │ -│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │ -│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │ -│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ -│ PERFORMANCE OF THIS SOFTWARE. │ -╚─────────────────────────────────────────────────────────────────────────────*/ -#include -#include -#include -#include -#include -#include -#include "libc/stdio/rand.h" - -#define PRECISION 2e-6 -#define LV1DCACHE 49152 -#define THRESHOLD 3000000 - -#if defined(__OPTIMIZE__) && !defined(__SANITIZE_ADDRESS__) -#define ITERATIONS 5 -#else -#define ITERATIONS 1 -#endif - -#define OPTIMIZED __attribute__((__optimize__("-O3,-ffast-math"))) -#define PORTABLE \ - __target_clones("arch=znver4," \ - "arch=znver3," \ - "arch=sapphirerapids," \ - "arch=alderlake," \ - "arch=rocketlake," \ - "arch=cooperlake," \ - "arch=tigerlake," \ - "arch=cascadelake," \ - "arch=skylake-avx512," \ - "arch=skylake," \ - "arch=znver1," \ - "arch=tremont," \ - "fma," \ - "avx") - -static bool is_self_testing; - -// m×n → n×m -template -void transpose(long m, long n, const TA *A, long lda, TB *B, long ldb) { -#pragma omp parallel for collapse(2) if (m * n > THRESHOLD) - for (long i = 0; i < m; ++i) - for (long j = 0; j < n; ++j) { - B[ldb * j + i] = A[lda * i + j]; - } -} - -// m×k * k×n → m×n -// k×m * k×n → m×n if aᵀ -// m×k * n×k → m×n if bᵀ -// k×m * n×k → m×n if aᵀ and bᵀ -template -void dgemm(bool aᵀ, bool bᵀ, long m, long n, long k, float α, const TA *A, - long lda, const TB *B, long ldb, float β, TC *C, long ldc) { -#pragma omp parallel for collapse(2) if (m * n * k > THRESHOLD) - for (long i = 0; i < m; ++i) - for (long j = 0; j < n; ++j) { - double sum = 0; - for (long l = 0; l < k; ++l) - sum = std::fma((aᵀ ? A[lda * l + i] : A[lda * i + l]) * α, - (bᵀ ? B[ldb * j + l] : B[ldb * l + j]), sum); - C[ldc * i + j] = C[ldc * i + j] * β + sum; - } -} - -template -struct Gemmlin { - public: - Gemmlin(bool aT, bool bT, float α, const TA *A, long lda, const TB *B, - long ldb, float β, TC *C, long ldc) - : aT(aT), - bT(bT), - α(α), - A(A), - lda(lda), - B(B), - ldb(ldb), - β(β), - C(C), - ldc(ldc) { - } - - void gemm(long m, long n, long k) { - if (!m || !n) - return; - for (long i = 0; i < m; ++i) - for (long j = 0; j < n; ++j) { - C[ldc * i + j] *= β; - } - if (!k) - return; - cub = sqrt(LV1DCACHE) / sqrt(sizeof(T) * 3); - mnpack(0, m, 0, n, 0, k); - } - - private: - void mnpack(long m0, long m, // - long n0, long n, // - long k0, long k) { - long mc = rounddown(std::min(m - m0, cub), 4); - long mp = m0 + (m - m0) / mc * mc; - long nc = rounddown(std::min(n - n0, cub), 4); - long np = n0 + (n - n0) / nc * nc; - long kc = rounddown(std::min(k - k0, cub), 4); - long kp = k0 + (k - k0) / kc * kc; - kpack(m0, mc, mp, n0, nc, np, k0, kc, k, kp); - if (m - mp) - mnpack(mp, m, n0, np, k0, k); - if (n - np) - mnpack(m0, mp, np, n, k0, k); - if (m - mp && n - np) - mnpack(mp, m, np, n, k0, k); - } - - void kpack(long m0, long mc, long m, // - long n0, long nc, long n, // - long k0, long kc, long k, // - long kp) { - rpack(m0, mc, m, n0, nc, n, k0, kc, kp); - if (k - kp) - rpack(m0, mc, m, n0, nc, n, kp, k - kp, k); - } - - void rpack(long m0, long mc, long m, // - long n0, long nc, long n, // - long k0, long kc, long k) { - if (!(mc % 4) && !(nc % 4)) - bgemm<4, 4>(m0, mc, m, n0, nc, n, k0, kc, k); - else - bgemm<1, 1>(m0, mc, m, n0, nc, n, k0, kc, k); - } - - template - void bgemm(long m0, long mc, long m, // - long n0, long nc, long n, // - long k0, long kc, long k) { - ops = (m - m0) * (n - n0) * (k - k0); - ml = (m - m0) / mc; - nl = (n - n0) / nc; - locks = new lock[ml * nl]; - there_will_be_blocks(m0, mc, m, n0, nc, n, k0, kc, k); - delete[] locks; - } - - template - void there_will_be_blocks(long m0, volatile long mc, long m, long n0, long nc, - long n, long k0, long kc, long k) { -#pragma omp parallel for collapse(2) if (ops > THRESHOLD && mc * kc > 16) - for (long ic = m0; ic < m; ic += mc) - for (long pc = k0; pc < k; pc += kc) - gizmo(m0, mc, ic, n0, nc, k0, kc, pc, n); - } - - template - PORTABLE OPTIMIZED void gizmo(long m0, long mc, long ic, long n0, long nc, - long k0, long kc, long pc, long n) { - T Ac[mc / mr][kc][mr]; - for (long i = 0; i < mc; ++i) - for (long j = 0; j < kc; ++j) - Ac[i / mr][j][i % mr] = α * (aT ? A[lda * (pc + j) + (ic + i)] - : A[lda * (ic + i) + (pc + j)]); - for (long jc = n0; jc < n; jc += nc) { - T Bc[nc / nr][nr][kc]; - for (long j = 0; j < nc; ++j) - for (long i = 0; i < kc; ++i) - Bc[j / nr][j % nr][i] = - bT ? B[ldb * (jc + j) + (pc + i)] : B[ldb * (pc + i) + (jc + j)]; - T Cc[nc / nr][mc / mr][nr][mr]; - memset(Cc, 0, nc * mc * sizeof(float)); - for (long jr = 0; jr < nc / nr; ++jr) - for (long ir = 0; ir < mc / mr; ++ir) - for (long pr = 0; pr < kc; ++pr) - for (long j = 0; j < nr; ++j) - for (long i = 0; i < mr; ++i) - Cc[jr][ir][j][i] += Ac[ir][pr][i] * Bc[jr][j][pr]; - const long lk = nl * ((ic - m0) / mc) + ((jc - n0) / nc); - locks[lk].acquire(); - for (long ir = 0; ir < mc; ir += mr) - for (long jr = 0; jr < nc; jr += nr) - for (long i = 0; i < mr; ++i) - for (long j = 0; j < nr; ++j) - C[ldc * (ic + ir + i) + (jc + jr + j)] += - Cc[jr / nr][ir / mr][j][i]; - locks[lk].release(); - } - } - - inline long rounddown(long x, long r) { - if (x < r) - return x; - else - return x & -r; - } - - class lock { - public: - lock() = default; - void acquire() { - while (lock_.exchange(true, std::memory_order_acquire)) { - } - } - void release() { - lock_.store(false, std::memory_order_release); - } - - private: - std::atomic_bool lock_ = false; - }; - - bool aT; - bool bT; - float α; - const TA *A; - long lda; - const TB *B; - long ldb; - float β; - TC *C; - long ldc; - long ops; - long nl; - long ml; - lock *locks; - long cub; -}; - -template -void sgemm(bool aT, bool bT, long m, long n, long k, float α, const TA *A, - long lda, const TB *B, long ldb, float β, TC *C, long ldc) { - Gemmlin g{aT, bT, α, A, lda, B, ldb, β, C, ldc}; - g.gemm(m, n, k); -} - -template -void show(FILE *f, long max, long m, long n, const TA *A, long lda, const TB *B, - long ldb) { - flockfile(f); - fprintf(f, " "); - for (long j = 0; j < n; ++j) { - fprintf(f, "%13ld", j); - } - fprintf(f, "\n"); - for (long i = 0; i < m; ++i) { - if (i == max) { - fprintf(f, "...\n"); - break; - } - fprintf(f, "%5ld ", i); - for (long j = 0; j < n; ++j) { - if (j == max) { - fprintf(f, " ..."); - break; - } - char ba[16], bb[16]; - sprintf(ba, "%13.7f", static_cast(A[lda * i + j])); - sprintf(bb, "%13.7f", static_cast(B[ldb * i + j])); - for (long k = 0; ba[k] && bb[k]; ++k) { - if (ba[k] != bb[k]) - fputs_unlocked("\33[31m", f); - fputc_unlocked(ba[k], f); - if (ba[k] != bb[k]) - fputs_unlocked("\33[0m", f); - } - } - fprintf(f, "\n"); - } - funlockfile(f); -} - -inline unsigned long GetDoubleBits(double f) { - union { - double f; - unsigned long i; - } u; - u.f = f; - return u.i; -} - -inline bool IsNan(double x) { - return (GetDoubleBits(x) & (-1ull >> 1)) > (0x7ffull << 52); -} - -template -double diff(long m, long n, const TA *Want, long lda, const TB *Got, long ldb) { - double s = 0; - int got_nans = 0; - int want_nans = 0; - for (long i = 0; i < m; ++i) - for (long j = 0; j < n; ++j) - if (IsNan(Want[ldb * i + j])) - ++want_nans; - else if (IsNan(Got[ldb * i + j])) - ++got_nans; - else - s += std::fabs(Want[lda * i + j] - Got[ldb * i + j]); - if (got_nans) - printf("WARNING: got %d NaNs!\n", got_nans); - if (want_nans) - printf("WARNING: want array has %d NaNs!\n", want_nans); - return s / (m * n); -} - -template -void show_error(FILE *f, long max, long m, long n, const TA *A, long lda, - const TB *B, long ldb, const char *file, int line, double sad, - double tol) { - fprintf(f, "%s:%d: sad %.17g exceeds %g\nwant\n", file, line, sad, tol); - show(f, max, m, n, A, lda, B, ldb); - fprintf(f, "got\n"); - show(f, max, m, n, B, ldb, A, lda); - fprintf(f, "\n"); -} - -template -void check(double tol, long m, long n, const TA *A, long lda, const TB *B, - long ldb, const char *file, int line) { - double sad = diff(m, n, A, lda, B, ldb); - if (sad <= tol) { - if (!is_self_testing) { - printf(" %g error\n", sad); - } - } else { - show_error(stderr, 16, m, n, A, lda, B, ldb, file, line, sad, tol); - const char *path = "/tmp/openmp_test.log"; - FILE *f = fopen(path, "w"); - if (f) { - show_error(f, 10000, m, n, A, lda, B, ldb, file, line, sad, tol); - printf("see also %s\n", path); - } - exit(1); - } -} - -#define check(tol, m, n, A, lda, B, ldb) \ - check(tol, m, n, A, lda, B, ldb, __FILE__, __LINE__) - -long micros(void) { - struct timespec ts; - clock_gettime(CLOCK_REALTIME, &ts); - return ts.tv_sec * 1000000 + (ts.tv_nsec + 999) / 1000; -} - -#define bench(x) \ - do { \ - long t1 = micros(); \ - for (long i = 0; i < ITERATIONS; ++i) { \ - asm volatile("" ::: "memory"); \ - x; \ - asm volatile("" ::: "memory"); \ - } \ - long t2 = micros(); \ - printf("%8" PRId64 " µs %s\n", (t2 - t1 + ITERATIONS - 1) / ITERATIONS, \ - #x); \ - } while (0) - -double real01(unsigned long x) { // (0,1) - return 1. / 4503599627370496. * ((x >> 12) + .5); -} - -double numba(void) { // (-1,1) - return real01(lemur64()) * 2 - 1; -} - -template -void fill(T *A, long n) { - for (long i = 0; i < n; ++i) { - A[i] = numba(); - } -} - -void test_gemm(long m, long n, long k) { - float *A = new float[m * k]; - float *At = new float[k * m]; - float *B = new float[k * n]; - float *Bt = new float[n * k]; - float *C = new float[m * n]; - float *GOLD = new float[m * n]; - float α = 1; - float β = 0; - fill(A, m * k); - fill(B, k * n); - dgemm(0, 0, m, n, k, 1, A, k, B, n, 0, GOLD, n); - transpose(m, k, A, k, At, m); - transpose(k, n, B, n, Bt, k); - sgemm(0, 0, m, n, k, α, A, k, B, n, β, C, n); - check(PRECISION, m, n, GOLD, n, C, n); - sgemm(1, 0, m, n, k, α, At, m, B, n, β, C, n); - check(PRECISION, m, n, GOLD, n, C, n); - sgemm(0, 1, m, n, k, α, A, k, Bt, k, β, C, n); - check(PRECISION, m, n, GOLD, n, C, n); - sgemm(1, 1, m, n, k, α, At, m, Bt, k, β, C, n); - check(PRECISION, m, n, GOLD, n, C, n); - delete[] GOLD; - delete[] C; - delete[] Bt; - delete[] B; - delete[] At; - delete[] A; -} - -void check_gemm_works(void) { - static long kSizes[] = {1, 2, 3, 4, 5, 6, 7, 17, 31, 33, 63, 128, 129}; - is_self_testing = true; - long c = 0; - long N = sizeof(kSizes) / sizeof(kSizes[0]); - for (long i = 0; i < N; ++i) { - long m = kSizes[i]; - for (long j = 0; j < N; ++j) { - long n = kSizes[N - 1 - i]; - for (long k = 0; k < N; ++k) { - long K = kSizes[i]; - if (c++ % 13 == 0) { - printf("testing %2ld %2ld %2ld\r", m, n, K); - } - test_gemm(m, n, K); - } - } - } - printf("\r"); - is_self_testing = false; -} - -long m = 2333 / 3; -long k = 577 / 3; -long n = 713 / 3; - -void check_sgemm(void) { - float *A = new float[m * k]; - float *At = new float[k * m]; - float *B = new float[k * n]; - float *Bt = new float[n * k]; - float *C = new float[m * n]; - double *GOLD = new double[m * n]; - fill(A, m * k); - fill(B, k * n); - transpose(m, k, A, k, At, m); - transpose(k, n, B, n, Bt, k); - bench(dgemm(0, 0, m, n, k, 1, A, k, B, n, 0, GOLD, n)); - bench(sgemm(0, 0, m, n, k, 1, A, k, B, n, 0, C, n)); - check(PRECISION, m, n, GOLD, n, C, n); - bench(sgemm(1, 0, m, n, k, 1, At, m, B, n, 0, C, n)); - check(PRECISION, m, n, GOLD, n, C, n); - bench(sgemm(0, 1, m, n, k, 1, A, k, Bt, k, 0, C, n)); - check(PRECISION, m, n, GOLD, n, C, n); - bench(sgemm(1, 1, m, n, k, 1, At, m, Bt, k, 0, C, n)); - check(PRECISION, m, n, GOLD, n, C, n); - delete[] GOLD; - delete[] C; - delete[] Bt; - delete[] B; - delete[] At; - delete[] A; -} - -int main(int argc, char *argv[]) { - check_gemm_works(); - check_sgemm(); -} diff --git a/third_party/BUILD.mk b/third_party/BUILD.mk index a019e5847..36eef50ad 100644 --- a/third_party/BUILD.mk +++ b/third_party/BUILD.mk @@ -20,7 +20,6 @@ o/$(MODE)/third_party: \ o/$(MODE)/third_party/libcxxabi \ o/$(MODE)/third_party/libunwind \ o/$(MODE)/third_party/linenoise \ - o/$(MODE)/third_party/llm \ o/$(MODE)/third_party/lua \ o/$(MODE)/third_party/lz4cli \ o/$(MODE)/third_party/make \ From 130fd66f9e3490e3982ed2084b5091c7f92bffb7 Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Fri, 3 May 2024 09:20:41 -0700 Subject: [PATCH 025/123] Release Cosmopolitan v3.3.4 --- libc/integral/normalize.inc | 2 +- tool/cosmocc/package.sh | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/libc/integral/normalize.inc b/libc/integral/normalize.inc index f844f6374..653d32dcc 100644 --- a/libc/integral/normalize.inc +++ b/libc/integral/normalize.inc @@ -4,7 +4,7 @@ #define __COSMOPOLITAN_MAJOR__ 3 #define __COSMOPOLITAN_MINOR__ 3 -#define __COSMOPOLITAN_PATCH__ 3 +#define __COSMOPOLITAN_PATCH__ 4 #define __COSMOPOLITAN__ \ (100000000 * __COSMOPOLITAN_MAJOR__ + 1000000 * __COSMOPOLITAN_MINOR__ + \ __COSMOPOLITAN_PATCH__) diff --git a/tool/cosmocc/package.sh b/tool/cosmocc/package.sh index b9c5b763a..5dcff6709 100755 --- a/tool/cosmocc/package.sh +++ b/tool/cosmocc/package.sh @@ -21,10 +21,10 @@ AMD64=${2:-x86_64} ARM64=${3:-aarch64} GCCVER=12.3.0 -make -j32 m= \ +make -j64 m= \ $APELINK -make -j32 m=$AMD64 \ +make -j64 m=$AMD64 \ o/cosmocc.h.txt \ o/$AMD64/ape/ape.lds \ o/$AMD64/libc/crt/crt.o \ @@ -47,7 +47,7 @@ make -j32 m=$AMD64 \ o/$AMD64/third_party/make/make.dbg \ o/$AMD64/third_party/ctags/ctags.dbg -make -j32 m=$ARM64 \ +make -j64 m=$ARM64 \ o/$ARM64/ape/ape.elf \ o/$ARM64/ape/aarch64.lds \ o/$ARM64/libc/crt/crt.o \ @@ -90,10 +90,10 @@ fetch() { OLD=$PWD cd "$OUTDIR/" if [ ! -x bin/x86_64-linux-cosmo-gcc ]; then - fetch https://github.com/ahgamut/superconfigure/releases/download/z0.0.35/aarch64-gcc.zip + fetch https://github.com/ahgamut/superconfigure/releases/download/z0.0.39/aarch64-gcc.zip unzip aarch64-gcc.zip rm -f aarch64-gcc.zip - fetch https://github.com/ahgamut/superconfigure/releases/download/z0.0.35/x86_64-gcc.zip + fetch https://github.com/ahgamut/superconfigure/releases/download/z0.0.39/x86_64-gcc.zip unzip x86_64-gcc.zip rm -f x86_64-gcc.zip fi From d5ebb1fa5bb26318bc2917b783d7a5693910872f Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Sat, 4 May 2024 12:25:07 -0700 Subject: [PATCH 026/123] Add MapViewOfFile3 WIN32 API --- libc/nt/enum/memflags.h | 3 +++ libc/nt/kernel32/MapViewOfFile3.S | 18 ++++++++++++++ libc/nt/master.sh | 1 + libc/nt/memory.h | 14 +++++++++++ libc/nt/struct/memextendedparameter.h | 34 +++++++++++++++++++++++++++ 5 files changed, 70 insertions(+) create mode 100644 libc/nt/kernel32/MapViewOfFile3.S create mode 100644 libc/nt/struct/memextendedparameter.h diff --git a/libc/nt/enum/memflags.h b/libc/nt/enum/memflags.h index 033d3fa3c..f2eb173f6 100644 --- a/libc/nt/enum/memflags.h +++ b/libc/nt/enum/memflags.h @@ -16,4 +16,7 @@ #define kNtMemLargePages 0x20000000 #define kNtMem4mbPages 0x80000000 +#define kNtMemReplacePlaceholder 0x00004000 +#define kNtMemLargePages 0x20000000 + #endif /* COSMOPOLITAN_LIBC_NT_ENUM_MEMFLAGS_H_ */ diff --git a/libc/nt/kernel32/MapViewOfFile3.S b/libc/nt/kernel32/MapViewOfFile3.S new file mode 100644 index 000000000..2b242dfd3 --- /dev/null +++ b/libc/nt/kernel32/MapViewOfFile3.S @@ -0,0 +1,18 @@ +#include "libc/nt/codegen.h" +.imp kernel32,__imp_MapViewOfFile3,MapViewOfFile3 + + .text.windows + .ftrace1 +MapViewOfFile3: + .ftrace2 +#ifdef __x86_64__ + push %rbp + mov %rsp,%rbp + mov __imp_MapViewOfFile3(%rip),%rax + jmp __sysv2nt10 +#elif defined(__aarch64__) + mov x0,#0 + ret +#endif + .endfn MapViewOfFile3,globl + .previous diff --git a/libc/nt/master.sh b/libc/nt/master.sh index 5529622ea..ace1dbf57 100755 --- a/libc/nt/master.sh +++ b/libc/nt/master.sh @@ -203,6 +203,7 @@ imp 'LoadResource' LoadResource kernel32 2 imp 'LocalFree' LocalFree kernel32 1 imp 'LockFile' LockFile kernel32 5 imp 'LockResource' LockResource kernel32 1 +imp 'MapViewOfFile3' MapViewOfFile3 kernel32 9 imp 'MoveFile' MoveFileW kernel32 2 imp 'MultiByteToWideChar' MultiByteToWideChar kernel32 6 imp 'OfferVirtualMemory' OfferVirtualMemory kernel32 3 diff --git a/libc/nt/memory.h b/libc/nt/memory.h index 68ac1ef83..4923ba1f0 100644 --- a/libc/nt/memory.h +++ b/libc/nt/memory.h @@ -1,5 +1,6 @@ #ifndef COSMOPOLITAN_LIBC_NT_MEMORY_H_ #define COSMOPOLITAN_LIBC_NT_MEMORY_H_ +#include "libc/nt/struct/memextendedparameter.h" #include "libc/nt/struct/memorybasicinformation.h" #include "libc/nt/struct/memoryrangeentry.h" #include "libc/nt/struct/securityattributes.h" @@ -82,6 +83,19 @@ void *HeapReAlloc(int64_t hHeap, uint32_t dwFlags, void *lpMem, void *GlobalAlloc(uint32_t uFlags, uint64_t dwBytes) __wur; void *GlobalFree(void *hMem); +/** + * @param AllocationType + * - kNtMemReserve + * - kNtMemReplacePlaceholder + * - kNtMemLargePages + */ +void *MapViewOfFile3( + intptr_t FileMapping, intptr_t Process, void *opt_BaseAddress, + uint64_t Offset, size_t ViewSize, unsigned AllocationType, + unsigned PageProtection, + struct NtMemExtendedParameter *in_out_opt_ExtendedParameters, + unsigned ParameterCount); + #if ShouldUseMsabiAttribute() #include "libc/nt/thunk/memory.inc" #endif /* ShouldUseMsabiAttribute() */ diff --git a/libc/nt/struct/memextendedparameter.h b/libc/nt/struct/memextendedparameter.h new file mode 100644 index 000000000..6cd4d0f5d --- /dev/null +++ b/libc/nt/struct/memextendedparameter.h @@ -0,0 +1,34 @@ +#ifndef COSMOPOLITAN_LIBC_NT_STRUCT_MEMEXTENDEDPARAMETER_H_ +#define COSMOPOLITAN_LIBC_NT_STRUCT_MEMEXTENDEDPARAMETER_H_ + +#define kNtMemExtendedParameterTypeBits 8 + +#define kNtMemExtendedParameterInvalidType 0 +#define kNtMemExtendedParameterAddressRequirements 1 +#define kNtMemExtendedParameterNumaNode 2 +#define kNtMemExtendedParameterPartitionHandle 3 +#define kNtMemExtendedParameterUserPhysicalHandle 4 +#define kNtMemExtendedParameterAttributeFlags 5 +#define kNtMemExtendedParameterMax 6 + +#define kNtMemExtendedParameterGraphics 0x00000001 +#define kNtMemExtendedParameterNonpaged 0x00000002 +#define kNtMemExtendedParameterZeroPagesOptional 0x00000004 +#define kNtMemExtendedParameterNonpagedLarge 0x00000008 +#define kNtMemExtendedParameterNonpagedHuge 0x00000010 + +struct NtMemExtendedParameter { + struct { + uint64_t Type : kNtMemExtendedParameterTypeBits; + uint64_t Reserved : 64 - kNtMemExtendedParameterTypeBits; + } DUMMYSTRUCTNAME; + union { + uint64_t ULong64; + void *Pointer; + size_t Size; + intptr_t Handle; + unsigned ULong; + } DUMMYUNIONNAME; +}; + +#endif /* COSMOPOLITAN_LIBC_NT_STRUCT_MEMEXTENDEDPARAMETER_H_ */ From b0df6c1fce30086bb2cefdd0079392fc2ad80edd Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Sat, 4 May 2024 23:05:36 -0700 Subject: [PATCH 027/123] Implement proper time zone support Cosmopolitan now supports 104 time zones. They're embedded inside any binary that links the localtime() function. Doing so adds about 100kb to the binary size. This change also gets time zones working properly on Windows for the first time. It's not needed to have /etc/localtime exist on Windows, since we can get this information from WIN32. We're also now updated to the latest version of Paul Eggert's TZ library. --- Makefile | 5 +- dsp/mpeg/BUILD.mk | 1 - dsp/mpeg/mpeg1.c | 2 +- dsp/scale/BUILD.mk | 1 - dsp/tty/BUILD.mk | 1 - examples/BUILD.mk | 2 +- examples/date.c | 29 +- examples/hangman.c | 2 +- examples/kilo.c | 2 +- examples/localtime.c | 15 + examples/nesemu1.cc | 2 +- examples/script.c | 2 +- examples/setitimer.c | 2 +- examples/stat.c | 41 +- examples/wall.c | 2 +- libc/BUILD.mk | 1 - libc/calls/clock_getres.c | 2 +- libc/{time => calls}/futimesat.c | 0 libc/calls/gettimeofday.c | 2 +- libc/calls/settimeofday.c | 2 +- libc/calls/sleep.c | 2 +- libc/calls/stime.c | 2 +- libc/calls/struct/timeval.h | 2 +- libc/calls/struct/timeval.internal.h | 2 +- libc/calls/time.c | 2 +- libc/calls/timespec_get.c | 2 +- libc/calls/timespec_getres.c | 2 +- libc/calls/usleep.c | 2 +- libc/calls/utime.c | 2 +- libc/calls/utimensat-nt.c | 2 +- libc/calls/utimensat-sysv.c | 2 +- libc/intrin/BUILD.mk | 8 + libc/{time => intrin}/kmonthname.S | 0 libc/{time => intrin}/kmonthnameshort.S | 0 libc/{time => intrin}/kweekdayname.S | 0 libc/{time => intrin}/kweekdaynameshort.S | 0 libc/intrin/ubsan.c | 3 + libc/intrin/ubsan.h | 8 + libc/{time/timezone.c => intrin/ubsanconf.c} | 10 +- libc/isystem/sys/stat.h | 2 +- libc/isystem/sys/time.h | 3 +- libc/isystem/time.h | 3 +- libc/isystem/unistd.h | 2 +- libc/isystem/utime.h | 3 +- libc/isystem/wchar.h | 2 +- libc/log/BUILD.mk | 4 +- libc/log/vflogf.c | 3 +- libc/nt/enum/timezoneid.h | 8 + .../kernel32/GetDynamicTimeZoneInformation.S | 20 + libc/nt/kernel32/GetTimeZoneInformation.S | 20 + libc/nt/master.sh | 2 + libc/nt/struct/dynamictimezoneinformation.h | 17 + libc/nt/struct/timezoneinformation.h | 15 + libc/nt/time.h | 37 + libc/proc/clock.c | 2 +- libc/proc/times.c | 2 +- libc/runtime/hog.py | 2 + libc/sock/BUILD.mk | 2 +- libc/sock/syslog.c | 2 +- libc/stdio/BUILD.mk | 6 + libc/stdio/vfprintf_unlocked.c | 1 + libc/str/BUILD.mk | 7 + libc/str/dosdatetimetounix.c | 2 +- libc/{time => str}/iso8601.c | 3 +- libc/{time => str}/iso8601us.c | 3 +- libc/str/kmonthyearday.c | 2 +- libc/str/locale.h | 4 +- libc/testlib/BUILD.mk | 4 +- libc/testlib/testmain.c | 2 + libc/thread/setitimer.c | 2 +- libc/{time/struct/tm.h => time.h} | 37 +- libc/time/BUILD.mk | 96 -- libc/time/clockstonanos.internal.h | 13 - libc/time/ctime.c | 18 - libc/time/ctime_r.c | 9 - libc/time/strptime.c | 274 ---- libc/time/struct/timezone.h | 11 - libc/time/struct/utimbuf.h | 13 - libc/time/struct/utimbuf.internal.h | 9 - libc/time/time.h | 29 - libc/time/tz.internal.h | 539 ------ libc/time/xiso8601.c | 76 - libc/utime.h | 17 + libc/x/xiso8601.h | 17 - net/http/BUILD.mk | 3 +- net/http/formathttpdatetime.c | 3 +- net/http/http.h | 2 +- net/http/parsehttpdatetime.c | 2 +- net/https/BUILD.mk | 4 +- net/https/choosecertificatelifetime.c | 2 +- net/https/https.h | 2 +- net/turfwar/BUILD.mk | 2 +- net/turfwar/blackholed.c | 4 +- net/turfwar/turfwar.c | 2 +- test/libc/calls/BUILD.mk | 4 +- test/libc/calls/clock_getres_test.c | 2 +- test/libc/calls/clock_gettime_test.c | 2 +- test/libc/calls/clock_nanosleep_test.c | 2 +- test/libc/calls/getitimer_test.c | 2 +- test/libc/calls/pledge_test.c | 2 +- test/libc/calls/readansi_test.c | 2 +- test/libc/calls/reservefd_test.c | 5 +- test/libc/calls/setrlimit_test.c | 2 +- test/libc/calls/utimensat_test.c | 2 +- test/libc/fmt/timevaltofiletime_test.c | 2 +- test/libc/intrin/lockscale_test.c | 2 +- test/libc/mem/malloc_test.c | 2 +- test/libc/release/smoke.c | 1 - test/libc/sock/select_test.c | 2 +- test/libc/sock/unix_test.c | 2 +- test/libc/stdio/BUILD.mk | 4 +- test/libc/stdio/dirstream_test.c | 9 +- test/libc/stdio/fwrite_test.c | 2 +- test/libc/stdio/zipdir_test.c | 2 +- test/libc/thread/BUILD.mk | 4 +- test/libc/thread/setitimer_test.c | 2 +- test/libc/time/BUILD.mk | 5 +- test/libc/time/iso8601_test.c | 3 +- test/libc/time/strftime_test.c | 17 +- test/net/http/BUILD.mk | 8 +- test/net/http/formathttpdatetime_test.c | 21 +- test/net/http/parsehttpdatetime_test.c | 3 +- test/net/https/BUILD.mk | 8 +- test/tool/net/lunix_test.lua | 2 +- test/tool/viz/lib/BUILD.mk | 4 +- test/tool/viz/lib/ycbcr2rgb2_test.c | 2 +- third_party/BUILD.mk | 1 + third_party/bash/BUILD.mk | 4 +- third_party/bzip2/bzip2.c | 4 +- third_party/chibicc/BUILD.mk | 6 +- third_party/chibicc/chibicc.h | 3 +- third_party/ctags/entry.c | 2 +- third_party/ctags/main.c | 2 +- third_party/finger/BUILD.mk | 4 +- third_party/finger/finger.c | 2 +- third_party/finger/lprint.c | 3 +- third_party/finger/sprint.c | 3 +- third_party/hiredis/BUILD.mk | 1 - third_party/hiredis/hiredis.h | 3 +- third_party/hiredis/read.c | 2 +- third_party/libcxx/BUILD.mk | 4 +- third_party/libcxx/__mutex_base | 3 +- third_party/libcxx/chrono.cc | 2 +- third_party/libcxx/cwchar | 3 +- third_party/lua/BUILD.mk | 8 +- third_party/lua/loslib.c | 3 +- third_party/lua/lstate.c | 2 +- third_party/lua/lunix.c | 3 +- third_party/lz4cli/BUILD.mk | 3 +- third_party/lz4cli/bench.c | 2 +- third_party/lz4cli/util.h | 6 +- third_party/make/BUILD.mk | 4 +- third_party/mbedtls/BUILD.mk | 2 +- third_party/mbedtls/ssl_cache.c | 2 +- third_party/mbedtls/ssl_cli.c | 2 +- third_party/mbedtls/ssl_srv.c | 2 +- third_party/mbedtls/ssl_ticket.c | 2 +- third_party/mbedtls/test/BUILD.mk | 2 +- third_party/mbedtls/test/everest_unravaged.c | 2 +- third_party/mbedtls/test/lib.c | 2 +- third_party/mbedtls/test/test_suite_ssl.c | 2 +- third_party/mbedtls/x509.c | 3 +- third_party/musl/strptime.c | 275 ++++ third_party/musl/tempnam.c | 2 +- third_party/python/BUILD.mk | 6 +- third_party/python/Include/pytime.h | 2 +- .../python/Lib/test/test_statistics.py | 2 +- third_party/python/Lib/test/test_time.py | 4 +- third_party/python/Modules/_datetimemodule.c | 2 +- third_party/python/Modules/_lsprof.c | 3 +- third_party/python/Modules/_testcapimodule.c | 2 +- third_party/python/Modules/_threadmodule.c | 3 +- third_party/python/Modules/expat/xmlparse.c | 2 +- third_party/python/Modules/posixmodule.c | 4 +- third_party/python/Modules/signalmodule.c | 2 +- third_party/python/Modules/timemodule.c | 3 +- third_party/python/Modules/xxsubtype.c | 2 +- third_party/python/Modules/zipimport.c | 3 +- third_party/python/Python/condvar.h | 2 +- third_party/python/Python/pytime.c | 2 +- third_party/python/pyobj.c | 2 +- third_party/python/runpythonmodule.c | 2 +- third_party/sed/compile.c | 4 +- third_party/smallz4/smallz4.cc | 2 +- third_party/sqlite3/BUILD.mk | 2 +- third_party/sqlite3/date.c | 3 +- third_party/sqlite3/fileio.c | 2 +- third_party/sqlite3/os_unix.c | 5 +- third_party/sqlite3/shell.c | 2 +- third_party/tidy/tidy-int.h | 2 +- third_party/tidy/tidylib.c | 2 +- third_party/tree/BUILD.mk | 4 +- third_party/tz/BUILD.mk | 434 +++++ third_party/tz/LICENSE | 5 + third_party/tz/README.cosmo | 25 + {libc/time => third_party/tz}/asctime.c | 91 +- third_party/tz/ctime.c | 22 + third_party/tz/ctime_r.c | 13 + third_party/tz/daylight.c | 6 + {libc/time => third_party/tz}/difftime.c | 30 +- {libc/time => third_party/tz}/localtime.c | 1450 ++++++++++++----- third_party/tz/private.h | 165 ++ {libc/time => third_party/tz}/strftime.c | 325 ++-- third_party/tz/timezone.c | 6 + third_party/tz/tzdir.h | 6 + .../tz/tzfile.h | 37 +- third_party/tz/tzname.c | 6 + third_party/tz/windows.py | 163 ++ third_party/unzip/BUILD.mk | 4 +- third_party/unzip/timezone.c | 2 +- third_party/unzip/unix.c | 4 +- third_party/unzip/unxcfg.h | 2 +- third_party/xxhash/BUILD.mk | 2 +- third_party/xxhash/cli/xsum_bench.c | 3 +- third_party/xxhash/cli/xsum_config.h | 4 +- third_party/xxhash/cli/xsum_os_specific.c | 6 +- third_party/xxhash/tests/bench/timefn.h | 6 +- third_party/xxhash/tests/collisions/main.c | 3 +- third_party/zip/BUILD.mk | 2 +- third_party/zip/crypt.c | 3 +- third_party/zip/fileio.c | 3 +- third_party/zip/osdep.h | 2 +- third_party/zip/tailor.h | 4 +- third_party/zip/unix.c | 6 +- third_party/zip/zip.c | 3 +- third_party/zstd/BUILD.mk | 1 - .../zstd/lib/compress/zstdmt_compress.c | 2 +- third_party/zstd/lib/dictBuilder/cover.c | 3 +- third_party/zstd/lib/dictBuilder/cover.h | 3 +- third_party/zstd/lib/dictBuilder/fastcover.c | 3 +- third_party/zstd/lib/dictBuilder/zdict.c | 3 +- third_party/zstd/programs/fileio.c | 5 +- third_party/zstd/programs/fileio_asyncio.c | 2 +- third_party/zstd/programs/platform.h | 8 +- third_party/zstd/programs/timefn.c | 3 +- third_party/zstd/programs/util.c | 11 +- third_party/zstd/programs/util.h | 4 +- tool/build/BUILD.mk | 2 +- tool/build/compile.c | 2 +- tool/build/lib/BUILD.mk | 4 +- tool/build/lib/elfwriter_zip.c | 3 +- tool/build/runitd.c | 3 +- tool/build/zipobj.c | 2 +- tool/curl/BUILD.mk | 4 +- tool/decode/BUILD.mk | 2 +- tool/decode/zip.c | 37 +- tool/emacs/cosmo-stuff.el | 2 +- tool/net/BUILD.mk | 2 +- tool/net/lfuncs.c | 2 +- tool/plinko/lib/plinko.c | 8 +- tool/plinko/lib/printf.c | 8 +- tool/viz/BUILD.mk | 2 +- tool/viz/cpuid.c | 2 +- tool/viz/lib/BUILD.mk | 4 +- tool/viz/lib/sharpen.c | 2 +- tool/viz/lib/unsharp.c | 2 +- tool/viz/lib/ycbcr2rgb3.c | 2 +- tool/viz/life.c | 2 +- tool/viz/memzoom.c | 2 +- tool/viz/printpeb.c | 2 +- tool/viz/printvideo.c | 2 +- tool/viz/tailf.c | 2 +- usr/share/zoneinfo/Africa/Abidjan | Bin 0 -> 130 bytes usr/share/zoneinfo/Africa/Algiers | Bin 0 -> 470 bytes usr/share/zoneinfo/Africa/Bissau | Bin 0 -> 149 bytes usr/share/zoneinfo/Africa/Cairo | Bin 0 -> 1309 bytes usr/share/zoneinfo/Africa/Casablanca | Bin 0 -> 1919 bytes usr/share/zoneinfo/Africa/Ceuta | Bin 0 -> 562 bytes usr/share/zoneinfo/Africa/El_Aaiun | Bin 0 -> 1830 bytes usr/share/zoneinfo/Africa/Johannesburg | Bin 0 -> 190 bytes usr/share/zoneinfo/Africa/Juba | Bin 0 -> 458 bytes usr/share/zoneinfo/Africa/Khartoum | Bin 0 -> 458 bytes usr/share/zoneinfo/Africa/Lagos | Bin 0 -> 180 bytes usr/share/zoneinfo/Africa/Maputo | Bin 0 -> 131 bytes usr/share/zoneinfo/Africa/Monrovia | Bin 0 -> 164 bytes usr/share/zoneinfo/Africa/Nairobi | Bin 0 -> 191 bytes usr/share/zoneinfo/Africa/Ndjamena | Bin 0 -> 160 bytes usr/share/zoneinfo/Africa/Sao_Tome | Bin 0 -> 173 bytes usr/share/zoneinfo/Africa/Tripoli | Bin 0 -> 431 bytes usr/share/zoneinfo/Africa/Tunis | Bin 0 -> 449 bytes usr/share/zoneinfo/Africa/Windhoek | Bin 0 -> 638 bytes .../zoneinfo/{US/Aleutian => America/Adak} | Bin .../zoneinfo/{US/Alaska => America/Anchorage} | Bin usr/share/zoneinfo/America/Araguaina | Bin 0 -> 592 bytes .../zoneinfo/America/Argentina/Buenos_Aires | Bin 0 -> 708 bytes .../zoneinfo/America/Argentina/Catamarca | Bin 0 -> 708 bytes usr/share/zoneinfo/America/Argentina/Cordoba | Bin 0 -> 708 bytes usr/share/zoneinfo/America/Argentina/Jujuy | Bin 0 -> 690 bytes usr/share/zoneinfo/America/Argentina/La_Rioja | Bin 0 -> 717 bytes usr/share/zoneinfo/America/Argentina/Mendoza | Bin 0 -> 708 bytes .../zoneinfo/America/Argentina/Rio_Gallegos | Bin 0 -> 708 bytes usr/share/zoneinfo/America/Argentina/Salta | Bin 0 -> 690 bytes usr/share/zoneinfo/America/Argentina/San_Juan | Bin 0 -> 717 bytes usr/share/zoneinfo/America/Argentina/San_Luis | Bin 0 -> 717 bytes usr/share/zoneinfo/America/Argentina/Tucuman | Bin 0 -> 726 bytes usr/share/zoneinfo/America/Argentina/Ushuaia | Bin 0 -> 708 bytes usr/share/zoneinfo/America/Asuncion | Bin 0 -> 884 bytes usr/share/zoneinfo/America/Bahia | Bin 0 -> 682 bytes usr/share/zoneinfo/America/Bahia_Banderas | Bin 0 -> 728 bytes usr/share/zoneinfo/America/Barbados | Bin 0 -> 278 bytes usr/share/zoneinfo/America/Belem | Bin 0 -> 394 bytes usr/share/zoneinfo/America/Belize | Bin 0 -> 1045 bytes usr/share/zoneinfo/America/Boa_Vista | Bin 0 -> 430 bytes usr/share/zoneinfo/America/Bogota | Bin 0 -> 179 bytes usr/share/zoneinfo/America/Boise | Bin 0 -> 999 bytes usr/share/zoneinfo/America/Cambridge_Bay | Bin 0 -> 883 bytes usr/share/zoneinfo/America/Campo_Grande | Bin 0 -> 952 bytes usr/share/zoneinfo/America/Cancun | Bin 0 -> 529 bytes usr/share/zoneinfo/America/Caracas | Bin 0 -> 190 bytes usr/share/zoneinfo/America/Cayenne | Bin 0 -> 151 bytes .../zoneinfo/{US/Central => America/Chicago} | Bin usr/share/zoneinfo/America/Chihuahua | Bin 0 -> 691 bytes usr/share/zoneinfo/America/Ciudad_Juarez | Bin 0 -> 718 bytes usr/share/zoneinfo/America/Costa_Rica | Bin 0 -> 232 bytes usr/share/zoneinfo/America/Cuiaba | Bin 0 -> 934 bytes usr/share/zoneinfo/America/Danmarkshavn | Bin 0 -> 447 bytes usr/share/zoneinfo/America/Dawson | Bin 0 -> 1029 bytes usr/share/zoneinfo/America/Dawson_Creek | Bin 0 -> 683 bytes .../zoneinfo/{US/Mountain => America/Denver} | Bin .../zoneinfo/{US/Michigan => America/Detroit} | Bin usr/share/zoneinfo/America/Edmonton | Bin 0 -> 970 bytes usr/share/zoneinfo/America/Eirunepe | Bin 0 -> 436 bytes usr/share/zoneinfo/America/El_Salvador | Bin 0 -> 176 bytes usr/share/zoneinfo/America/Fort_Nelson | Bin 0 -> 1448 bytes usr/share/zoneinfo/America/Fortaleza | Bin 0 -> 484 bytes usr/share/zoneinfo/America/Glace_Bay | Bin 0 -> 880 bytes usr/share/zoneinfo/America/Goose_Bay | Bin 0 -> 1580 bytes usr/share/zoneinfo/America/Grand_Turk | Bin 0 -> 853 bytes usr/share/zoneinfo/America/Guatemala | Bin 0 -> 212 bytes usr/share/zoneinfo/America/Guayaquil | Bin 0 -> 179 bytes usr/share/zoneinfo/America/Guyana | Bin 0 -> 181 bytes usr/share/zoneinfo/America/Halifax | Bin 0 -> 1672 bytes usr/share/zoneinfo/America/Havana | Bin 0 -> 1117 bytes usr/share/zoneinfo/America/Hermosillo | Bin 0 -> 286 bytes .../Indiana/Indianapolis} | Bin .../Indiana-Starke => America/Indiana/Knox} | Bin usr/share/zoneinfo/America/Indiana/Marengo | Bin 0 -> 567 bytes usr/share/zoneinfo/America/Indiana/Petersburg | Bin 0 -> 683 bytes usr/share/zoneinfo/America/Indiana/Tell_City | Bin 0 -> 522 bytes usr/share/zoneinfo/America/Indiana/Vevay | Bin 0 -> 369 bytes usr/share/zoneinfo/America/Indiana/Vincennes | Bin 0 -> 558 bytes usr/share/zoneinfo/America/Indiana/Winamac | Bin 0 -> 603 bytes usr/share/zoneinfo/America/Inuvik | Bin 0 -> 817 bytes usr/share/zoneinfo/America/Iqaluit | Bin 0 -> 855 bytes usr/share/zoneinfo/America/Jamaica | Bin 0 -> 339 bytes usr/share/zoneinfo/America/Juneau | Bin 0 -> 966 bytes .../zoneinfo/America/Kentucky/Louisville | Bin 0 -> 1242 bytes .../zoneinfo/America/Kentucky/Monticello | Bin 0 -> 972 bytes usr/share/zoneinfo/America/La_Paz | Bin 0 -> 170 bytes usr/share/zoneinfo/America/Lima | Bin 0 -> 283 bytes .../{US/Pacific => America/Los_Angeles} | Bin usr/share/zoneinfo/America/Maceio | Bin 0 -> 502 bytes usr/share/zoneinfo/America/Managua | Bin 0 -> 295 bytes usr/share/zoneinfo/America/Manaus | Bin 0 -> 412 bytes usr/share/zoneinfo/America/Martinique | Bin 0 -> 178 bytes usr/share/zoneinfo/America/Matamoros | Bin 0 -> 437 bytes usr/share/zoneinfo/America/Mazatlan | Bin 0 -> 718 bytes usr/share/zoneinfo/America/Menominee | Bin 0 -> 917 bytes usr/share/zoneinfo/America/Merida | Bin 0 -> 654 bytes usr/share/zoneinfo/America/Metlakatla | Bin 0 -> 586 bytes usr/share/zoneinfo/America/Mexico_City | Bin 0 -> 773 bytes usr/share/zoneinfo/America/Miquelon | Bin 0 -> 550 bytes usr/share/zoneinfo/America/Moncton | Bin 0 -> 1493 bytes usr/share/zoneinfo/America/Monterrey | Bin 0 -> 644 bytes usr/share/zoneinfo/America/Montevideo | Bin 0 -> 969 bytes .../zoneinfo/{US/Eastern => America/New_York} | Bin usr/share/zoneinfo/America/Nome | Bin 0 -> 975 bytes usr/share/zoneinfo/America/Noronha | Bin 0 -> 484 bytes .../zoneinfo/America/North_Dakota/Beulah | Bin 0 -> 1043 bytes .../zoneinfo/America/North_Dakota/Center | Bin 0 -> 990 bytes .../zoneinfo/America/North_Dakota/New_Salem | Bin 0 -> 990 bytes usr/share/zoneinfo/America/Nuuk | Bin 0 -> 965 bytes usr/share/zoneinfo/America/Ojinaga | Bin 0 -> 718 bytes usr/share/zoneinfo/America/Panama | Bin 0 -> 149 bytes usr/share/zoneinfo/America/Paramaribo | Bin 0 -> 187 bytes .../zoneinfo/{US/Arizona => America/Phoenix} | Bin usr/share/zoneinfo/America/Port-au-Prince | Bin 0 -> 565 bytes usr/share/zoneinfo/America/Porto_Velho | Bin 0 -> 394 bytes usr/share/zoneinfo/America/Puerto_Rico | Bin 0 -> 177 bytes usr/share/zoneinfo/America/Punta_Arenas | Bin 0 -> 1218 bytes usr/share/zoneinfo/America/Rankin_Inlet | Bin 0 -> 807 bytes usr/share/zoneinfo/America/Recife | Bin 0 -> 484 bytes usr/share/zoneinfo/America/Regina | Bin 0 -> 638 bytes usr/share/zoneinfo/America/Resolute | Bin 0 -> 807 bytes usr/share/zoneinfo/America/Rio_Branco | Bin 0 -> 418 bytes usr/share/zoneinfo/America/Santarem | Bin 0 -> 409 bytes usr/share/zoneinfo/America/Santiago | Bin 0 -> 1354 bytes usr/share/zoneinfo/America/Santo_Domingo | Bin 0 -> 317 bytes usr/share/zoneinfo/America/Sao_Paulo | Bin 0 -> 952 bytes usr/share/zoneinfo/America/Scoresbysund | Bin 0 -> 984 bytes usr/share/zoneinfo/America/Sitka | Bin 0 -> 956 bytes usr/share/zoneinfo/America/St_Johns | Bin 0 -> 1878 bytes usr/share/zoneinfo/America/Swift_Current | Bin 0 -> 368 bytes usr/share/zoneinfo/America/Tegucigalpa | Bin 0 -> 194 bytes usr/share/zoneinfo/America/Thule | Bin 0 -> 455 bytes usr/share/zoneinfo/America/Tijuana | Bin 0 -> 1025 bytes usr/share/zoneinfo/America/Toronto | Bin 0 -> 1717 bytes usr/share/zoneinfo/America/Vancouver | Bin 0 -> 1330 bytes usr/share/zoneinfo/America/Whitehorse | Bin 0 -> 1029 bytes usr/share/zoneinfo/America/Winnipeg | Bin 0 -> 1294 bytes usr/share/zoneinfo/America/Yakutat | Bin 0 -> 946 bytes usr/share/zoneinfo/Anchorage | 1 - usr/share/zoneinfo/Antarctica/Casey | Bin 0 -> 287 bytes usr/share/zoneinfo/Antarctica/Davis | Bin 0 -> 197 bytes usr/share/zoneinfo/Antarctica/Macquarie | Bin 0 -> 976 bytes usr/share/zoneinfo/Antarctica/Mawson | Bin 0 -> 152 bytes usr/share/zoneinfo/Antarctica/Palmer | Bin 0 -> 887 bytes usr/share/zoneinfo/Antarctica/Rothera | Bin 0 -> 132 bytes usr/share/zoneinfo/Antarctica/Troll | Bin 0 -> 158 bytes usr/share/zoneinfo/Antarctica/Vostok | Bin 0 -> 170 bytes usr/share/zoneinfo/Asia/Almaty | Bin 0 -> 618 bytes usr/share/zoneinfo/Asia/Amman | Bin 0 -> 928 bytes usr/share/zoneinfo/Asia/Anadyr | Bin 0 -> 743 bytes usr/share/zoneinfo/Asia/Aqtau | Bin 0 -> 606 bytes usr/share/zoneinfo/Asia/Aqtobe | Bin 0 -> 615 bytes usr/share/zoneinfo/Asia/Ashgabat | Bin 0 -> 375 bytes usr/share/zoneinfo/Asia/Atyrau | Bin 0 -> 616 bytes usr/share/zoneinfo/Asia/Baghdad | Bin 0 -> 630 bytes usr/share/zoneinfo/Asia/Baku | Bin 0 -> 744 bytes usr/share/zoneinfo/Asia/Bangkok | Bin 0 -> 152 bytes usr/share/zoneinfo/Asia/Barnaul | Bin 0 -> 753 bytes usr/share/zoneinfo/Asia/Beirut | Bin 0 -> 732 bytes usr/share/zoneinfo/Asia/Bishkek | Bin 0 -> 618 bytes usr/share/zoneinfo/Asia/Chita | Bin 0 -> 750 bytes usr/share/zoneinfo/Asia/Choibalsan | Bin 0 -> 619 bytes usr/share/zoneinfo/Asia/Colombo | Bin 0 -> 247 bytes usr/share/zoneinfo/Asia/Damascus | Bin 0 -> 1234 bytes usr/share/zoneinfo/Asia/Dhaka | Bin 0 -> 231 bytes usr/share/zoneinfo/Asia/Dili | Bin 0 -> 170 bytes usr/share/zoneinfo/Asia/Dubai | Bin 0 -> 133 bytes usr/share/zoneinfo/Asia/Dushanbe | Bin 0 -> 366 bytes usr/share/zoneinfo/Asia/Famagusta | Bin 0 -> 940 bytes usr/share/zoneinfo/Asia/Gaza | Bin 0 -> 2950 bytes usr/share/zoneinfo/Asia/Hebron | Bin 0 -> 2968 bytes usr/share/zoneinfo/Asia/Ho_Chi_Minh | Bin 0 -> 236 bytes usr/share/zoneinfo/Asia/Hong_Kong | Bin 0 -> 775 bytes usr/share/zoneinfo/Asia/Hovd | Bin 0 -> 594 bytes usr/share/zoneinfo/Asia/Irkutsk | Bin 0 -> 760 bytes usr/share/zoneinfo/Asia/Jakarta | Bin 0 -> 248 bytes usr/share/zoneinfo/Asia/Jayapura | Bin 0 -> 171 bytes usr/share/zoneinfo/{Israel => Asia/Jerusalem} | Bin usr/share/zoneinfo/Asia/Kabul | Bin 0 -> 159 bytes usr/share/zoneinfo/Asia/Kamchatka | Bin 0 -> 727 bytes usr/share/zoneinfo/Asia/Karachi | Bin 0 -> 266 bytes usr/share/zoneinfo/Asia/Kathmandu | Bin 0 -> 161 bytes usr/share/zoneinfo/Asia/Khandyga | Bin 0 -> 775 bytes usr/share/zoneinfo/Asia/Kolkata | Bin 0 -> 220 bytes usr/share/zoneinfo/Asia/Krasnoyarsk | Bin 0 -> 741 bytes usr/share/zoneinfo/Asia/Kuching | Bin 0 -> 320 bytes usr/share/zoneinfo/Asia/Macau | Bin 0 -> 791 bytes usr/share/zoneinfo/Asia/Magadan | Bin 0 -> 751 bytes usr/share/zoneinfo/Asia/Makassar | Bin 0 -> 190 bytes usr/share/zoneinfo/Asia/Manila | Bin 0 -> 238 bytes usr/share/zoneinfo/Asia/Nicosia | Bin 0 -> 597 bytes usr/share/zoneinfo/Asia/Novokuznetsk | Bin 0 -> 726 bytes usr/share/zoneinfo/Asia/Novosibirsk | Bin 0 -> 753 bytes usr/share/zoneinfo/Asia/Omsk | Bin 0 -> 741 bytes usr/share/zoneinfo/Asia/Oral | Bin 0 -> 625 bytes usr/share/zoneinfo/Asia/Pontianak | Bin 0 -> 247 bytes usr/share/zoneinfo/Asia/Pyongyang | Bin 0 -> 183 bytes usr/share/zoneinfo/Asia/Qatar | Bin 0 -> 152 bytes usr/share/zoneinfo/Asia/Qostanay | Bin 0 -> 624 bytes usr/share/zoneinfo/Asia/Qyzylorda | Bin 0 -> 624 bytes usr/share/zoneinfo/Asia/Riyadh | Bin 0 -> 133 bytes usr/share/zoneinfo/Asia/Sakhalin | Bin 0 -> 755 bytes usr/share/zoneinfo/Asia/Samarkand | Bin 0 -> 366 bytes usr/share/zoneinfo/Asia/Seoul | Bin 0 -> 415 bytes usr/share/zoneinfo/Asia/Shanghai | Bin 0 -> 393 bytes usr/share/zoneinfo/{ => Asia}/Singapore | Bin usr/share/zoneinfo/Asia/Srednekolymsk | Bin 0 -> 742 bytes usr/share/zoneinfo/Asia/Taipei | Bin 0 -> 511 bytes usr/share/zoneinfo/Asia/Tashkent | Bin 0 -> 366 bytes usr/share/zoneinfo/Asia/Tbilisi | Bin 0 -> 629 bytes usr/share/zoneinfo/Asia/Tehran | Bin 0 -> 812 bytes usr/share/zoneinfo/Asia/Thimphu | Bin 0 -> 154 bytes usr/share/zoneinfo/Asia/Tokyo | Bin 0 -> 213 bytes usr/share/zoneinfo/Asia/Tomsk | Bin 0 -> 753 bytes usr/share/zoneinfo/Asia/Ulaanbaatar | Bin 0 -> 594 bytes usr/share/zoneinfo/Asia/Urumqi | Bin 0 -> 133 bytes usr/share/zoneinfo/Asia/Ust-Nera | Bin 0 -> 771 bytes usr/share/zoneinfo/Asia/Vladivostok | Bin 0 -> 742 bytes usr/share/zoneinfo/Asia/Yakutsk | Bin 0 -> 741 bytes usr/share/zoneinfo/Asia/Yangon | Bin 0 -> 187 bytes usr/share/zoneinfo/Asia/Yekaterinburg | Bin 0 -> 760 bytes usr/share/zoneinfo/Asia/Yerevan | Bin 0 -> 708 bytes usr/share/zoneinfo/Atlantic/Azores | Bin 0 -> 1453 bytes usr/share/zoneinfo/Atlantic/Bermuda | Bin 0 -> 1024 bytes usr/share/zoneinfo/Atlantic/Canary | Bin 0 -> 478 bytes usr/share/zoneinfo/Atlantic/Cape_Verde | Bin 0 -> 175 bytes usr/share/zoneinfo/Atlantic/Faroe | Bin 0 -> 441 bytes usr/share/zoneinfo/Atlantic/Madeira | Bin 0 -> 1453 bytes usr/share/zoneinfo/Atlantic/South_Georgia | Bin 0 -> 132 bytes usr/share/zoneinfo/Atlantic/Stanley | Bin 0 -> 789 bytes usr/share/zoneinfo/Australia/Adelaide | Bin 0 -> 921 bytes usr/share/zoneinfo/Australia/Brisbane | Bin 0 -> 289 bytes usr/share/zoneinfo/Australia/Broken_Hill | Bin 0 -> 941 bytes usr/share/zoneinfo/Australia/Darwin | Bin 0 -> 234 bytes usr/share/zoneinfo/Australia/Eucla | Bin 0 -> 314 bytes usr/share/zoneinfo/Australia/Hobart | Bin 0 -> 1003 bytes usr/share/zoneinfo/Australia/Lindeman | Bin 0 -> 325 bytes usr/share/zoneinfo/Australia/Lord_Howe | Bin 0 -> 692 bytes usr/share/zoneinfo/Australia/Melbourne | Bin 0 -> 904 bytes usr/share/zoneinfo/Australia/Perth | Bin 0 -> 306 bytes usr/share/zoneinfo/Australia/Sydney | Bin 0 -> 904 bytes usr/share/zoneinfo/Beijing | Bin 582 -> 0 bytes usr/share/zoneinfo/Berlin | Bin 2335 -> 0 bytes usr/share/zoneinfo/Boulder | 1 - usr/share/zoneinfo/CET | Bin 0 -> 621 bytes usr/share/zoneinfo/CST6CDT | Bin 0 -> 951 bytes usr/share/zoneinfo/Chicago | 1 - usr/share/zoneinfo/EET | Bin 0 -> 497 bytes usr/share/zoneinfo/EST | Bin 0 -> 111 bytes usr/share/zoneinfo/EST5EDT | Bin 0 -> 951 bytes usr/share/zoneinfo/{UTC => Etc/GMT} | Bin usr/share/zoneinfo/Etc/GMT+1 | Bin 0 -> 113 bytes usr/share/zoneinfo/Etc/GMT+10 | Bin 0 -> 114 bytes usr/share/zoneinfo/Etc/GMT+11 | Bin 0 -> 114 bytes usr/share/zoneinfo/Etc/GMT+12 | Bin 0 -> 114 bytes usr/share/zoneinfo/Etc/GMT+2 | Bin 0 -> 113 bytes usr/share/zoneinfo/Etc/GMT+3 | Bin 0 -> 113 bytes usr/share/zoneinfo/Etc/GMT+4 | Bin 0 -> 113 bytes usr/share/zoneinfo/Etc/GMT+5 | Bin 0 -> 113 bytes usr/share/zoneinfo/Etc/GMT+6 | Bin 0 -> 113 bytes usr/share/zoneinfo/Etc/GMT+7 | Bin 0 -> 113 bytes usr/share/zoneinfo/Etc/GMT+8 | Bin 0 -> 113 bytes usr/share/zoneinfo/Etc/GMT+9 | Bin 0 -> 113 bytes usr/share/zoneinfo/Etc/GMT-1 | Bin 0 -> 114 bytes usr/share/zoneinfo/Etc/GMT-10 | Bin 0 -> 115 bytes usr/share/zoneinfo/Etc/GMT-11 | Bin 0 -> 115 bytes usr/share/zoneinfo/Etc/GMT-12 | Bin 0 -> 115 bytes usr/share/zoneinfo/Etc/GMT-13 | Bin 0 -> 115 bytes usr/share/zoneinfo/Etc/GMT-14 | Bin 0 -> 115 bytes usr/share/zoneinfo/Etc/GMT-2 | Bin 0 -> 114 bytes usr/share/zoneinfo/Etc/GMT-3 | Bin 0 -> 114 bytes usr/share/zoneinfo/Etc/GMT-4 | Bin 0 -> 114 bytes usr/share/zoneinfo/Etc/GMT-5 | Bin 0 -> 114 bytes usr/share/zoneinfo/Etc/GMT-6 | Bin 0 -> 114 bytes usr/share/zoneinfo/Etc/GMT-7 | Bin 0 -> 114 bytes usr/share/zoneinfo/Etc/GMT-8 | Bin 0 -> 114 bytes usr/share/zoneinfo/Etc/GMT-9 | Bin 0 -> 114 bytes usr/share/zoneinfo/Etc/UTC | Bin 0 -> 111 bytes usr/share/zoneinfo/Europe/Andorra | Bin 0 -> 389 bytes usr/share/zoneinfo/Europe/Astrakhan | Bin 0 -> 726 bytes usr/share/zoneinfo/Europe/Athens | Bin 0 -> 682 bytes usr/share/zoneinfo/Europe/Belgrade | Bin 0 -> 478 bytes usr/share/zoneinfo/Europe/Berlin | Bin 0 -> 705 bytes usr/share/zoneinfo/Europe/Brussels | Bin 0 -> 1103 bytes usr/share/zoneinfo/Europe/Bucharest | Bin 0 -> 661 bytes usr/share/zoneinfo/Europe/Budapest | Bin 0 -> 766 bytes usr/share/zoneinfo/Europe/Chisinau | Bin 0 -> 755 bytes usr/share/zoneinfo/Europe/Dublin | Bin 0 -> 1496 bytes usr/share/zoneinfo/Europe/Gibraltar | Bin 0 -> 1220 bytes usr/share/zoneinfo/Europe/Helsinki | Bin 0 -> 481 bytes usr/share/zoneinfo/Europe/Istanbul | Bin 0 -> 1200 bytes usr/share/zoneinfo/Europe/Kaliningrad | Bin 0 -> 904 bytes usr/share/zoneinfo/Europe/Kirov | Bin 0 -> 735 bytes usr/share/zoneinfo/Europe/Kyiv | Bin 0 -> 558 bytes usr/share/zoneinfo/Europe/Lisbon | Bin 0 -> 1454 bytes usr/share/zoneinfo/Europe/London | Bin 0 -> 1599 bytes usr/share/zoneinfo/Europe/Madrid | Bin 0 -> 897 bytes usr/share/zoneinfo/Europe/Malta | Bin 0 -> 928 bytes usr/share/zoneinfo/Europe/Minsk | Bin 0 -> 808 bytes usr/share/zoneinfo/Europe/Moscow | Bin 0 -> 908 bytes usr/share/zoneinfo/Europe/Paris | Bin 0 -> 1105 bytes usr/share/zoneinfo/Europe/Prague | Bin 0 -> 723 bytes usr/share/zoneinfo/Europe/Riga | Bin 0 -> 694 bytes usr/share/zoneinfo/Europe/Rome | Bin 0 -> 947 bytes usr/share/zoneinfo/Europe/Samara | Bin 0 -> 732 bytes usr/share/zoneinfo/Europe/Saratov | Bin 0 -> 726 bytes usr/share/zoneinfo/Europe/Simferopol | Bin 0 -> 865 bytes usr/share/zoneinfo/Europe/Sofia | Bin 0 -> 592 bytes usr/share/zoneinfo/Europe/Tallinn | Bin 0 -> 675 bytes usr/share/zoneinfo/Europe/Tirane | Bin 0 -> 604 bytes usr/share/zoneinfo/Europe/Ulyanovsk | Bin 0 -> 760 bytes usr/share/zoneinfo/Europe/Vienna | Bin 0 -> 658 bytes usr/share/zoneinfo/Europe/Vilnius | Bin 0 -> 676 bytes usr/share/zoneinfo/Europe/Volgograd | Bin 0 -> 753 bytes usr/share/zoneinfo/Europe/Warsaw | Bin 0 -> 923 bytes usr/share/zoneinfo/Europe/Zurich | Bin 0 -> 497 bytes usr/share/zoneinfo/GMT | Bin 3 -> 111 bytes usr/share/zoneinfo/GST | 1 - usr/share/zoneinfo/HST | Bin 0 -> 112 bytes usr/share/zoneinfo/Honolulu | 1 - usr/share/zoneinfo/India | Bin 285 -> 0 bytes usr/share/zoneinfo/Indian/Chagos | Bin 0 -> 152 bytes usr/share/zoneinfo/Indian/Maldives | Bin 0 -> 152 bytes usr/share/zoneinfo/Indian/Mauritius | Bin 0 -> 179 bytes usr/share/zoneinfo/Japan | Bin 318 -> 0 bytes usr/share/zoneinfo/London | Bin 3687 -> 0 bytes usr/share/zoneinfo/MET | Bin 0 -> 621 bytes usr/share/zoneinfo/MST | Bin 0 -> 111 bytes usr/share/zoneinfo/MST7MDT | Bin 0 -> 951 bytes usr/share/zoneinfo/Melbourne | Bin 2223 -> 0 bytes usr/share/zoneinfo/New_York | 1 - usr/share/zoneinfo/PST8PDT | Bin 0 -> 951 bytes usr/share/zoneinfo/Pacific/Apia | Bin 0 -> 407 bytes usr/share/zoneinfo/Pacific/Auckland | Bin 0 -> 1043 bytes usr/share/zoneinfo/Pacific/Bougainville | Bin 0 -> 201 bytes usr/share/zoneinfo/Pacific/Chatham | Bin 0 -> 808 bytes usr/share/zoneinfo/Pacific/Easter | Bin 0 -> 1174 bytes usr/share/zoneinfo/Pacific/Efate | Bin 0 -> 342 bytes usr/share/zoneinfo/Pacific/Fakaofo | Bin 0 -> 153 bytes usr/share/zoneinfo/Pacific/Fiji | Bin 0 -> 396 bytes usr/share/zoneinfo/Pacific/Galapagos | Bin 0 -> 175 bytes usr/share/zoneinfo/Pacific/Gambier | Bin 0 -> 132 bytes usr/share/zoneinfo/Pacific/Guadalcanal | Bin 0 -> 134 bytes usr/share/zoneinfo/Pacific/Guam | Bin 0 -> 350 bytes .../zoneinfo/{US/Hawaii => Pacific/Honolulu} | Bin usr/share/zoneinfo/Pacific/Kanton | Bin 0 -> 172 bytes usr/share/zoneinfo/Pacific/Kiritimati | Bin 0 -> 174 bytes usr/share/zoneinfo/Pacific/Kosrae | Bin 0 -> 242 bytes usr/share/zoneinfo/Pacific/Kwajalein | Bin 0 -> 219 bytes usr/share/zoneinfo/Pacific/Marquesas | Bin 0 -> 139 bytes usr/share/zoneinfo/Pacific/Nauru | Bin 0 -> 183 bytes usr/share/zoneinfo/Pacific/Niue | Bin 0 -> 154 bytes usr/share/zoneinfo/Pacific/Norfolk | Bin 0 -> 237 bytes usr/share/zoneinfo/Pacific/Noumea | Bin 0 -> 198 bytes .../zoneinfo/{US/Samoa => Pacific/Pago_Pago} | Bin usr/share/zoneinfo/Pacific/Palau | Bin 0 -> 148 bytes usr/share/zoneinfo/Pacific/Pitcairn | Bin 0 -> 153 bytes usr/share/zoneinfo/Pacific/Port_Moresby | Bin 0 -> 154 bytes usr/share/zoneinfo/Pacific/Rarotonga | Bin 0 -> 406 bytes usr/share/zoneinfo/Pacific/Tahiti | Bin 0 -> 133 bytes usr/share/zoneinfo/Pacific/Tarawa | Bin 0 -> 134 bytes usr/share/zoneinfo/Pacific/Tongatapu | Bin 0 -> 237 bytes usr/share/zoneinfo/Sydney | Bin 2221 -> 0 bytes usr/share/zoneinfo/WET | Bin 0 -> 494 bytes 627 files changed, 3052 insertions(+), 2077 deletions(-) create mode 100644 examples/localtime.c rename libc/{time => calls}/futimesat.c (100%) rename libc/{time => intrin}/kmonthname.S (100%) rename libc/{time => intrin}/kmonthnameshort.S (100%) rename libc/{time => intrin}/kweekdayname.S (100%) rename libc/{time => intrin}/kweekdaynameshort.S (100%) create mode 100644 libc/intrin/ubsan.h rename libc/{time/timezone.c => intrin/ubsanconf.c} (91%) create mode 100644 libc/nt/enum/timezoneid.h create mode 100644 libc/nt/kernel32/GetDynamicTimeZoneInformation.S create mode 100644 libc/nt/kernel32/GetTimeZoneInformation.S create mode 100644 libc/nt/struct/dynamictimezoneinformation.h create mode 100644 libc/nt/struct/timezoneinformation.h create mode 100644 libc/nt/time.h create mode 100644 libc/runtime/hog.py rename libc/{time => str}/iso8601.c (98%) rename libc/{time => str}/iso8601us.c (98%) rename libc/{time/struct/tm.h => time.h} (60%) delete mode 100644 libc/time/BUILD.mk delete mode 100644 libc/time/clockstonanos.internal.h delete mode 100644 libc/time/ctime.c delete mode 100644 libc/time/ctime_r.c delete mode 100644 libc/time/strptime.c delete mode 100644 libc/time/struct/timezone.h delete mode 100644 libc/time/struct/utimbuf.h delete mode 100644 libc/time/struct/utimbuf.internal.h delete mode 100644 libc/time/time.h delete mode 100644 libc/time/tz.internal.h delete mode 100644 libc/time/xiso8601.c create mode 100644 libc/utime.h delete mode 100644 libc/x/xiso8601.h create mode 100644 third_party/musl/strptime.c create mode 100644 third_party/tz/BUILD.mk create mode 100644 third_party/tz/LICENSE create mode 100644 third_party/tz/README.cosmo rename {libc/time => third_party/tz}/asctime.c (57%) create mode 100644 third_party/tz/ctime.c create mode 100644 third_party/tz/ctime_r.c create mode 100644 third_party/tz/daylight.c rename {libc/time => third_party/tz}/difftime.c (70%) rename {libc/time => third_party/tz}/localtime.c (50%) create mode 100644 third_party/tz/private.h rename {libc/time => third_party/tz}/strftime.c (64%) create mode 100644 third_party/tz/timezone.c create mode 100644 third_party/tz/tzdir.h rename libc/time/tzfile.internal.h => third_party/tz/tzfile.h (81%) create mode 100644 third_party/tz/tzname.c create mode 100644 third_party/tz/windows.py create mode 100644 usr/share/zoneinfo/Africa/Abidjan create mode 100644 usr/share/zoneinfo/Africa/Algiers create mode 100644 usr/share/zoneinfo/Africa/Bissau create mode 100644 usr/share/zoneinfo/Africa/Cairo create mode 100644 usr/share/zoneinfo/Africa/Casablanca create mode 100644 usr/share/zoneinfo/Africa/Ceuta create mode 100644 usr/share/zoneinfo/Africa/El_Aaiun create mode 100644 usr/share/zoneinfo/Africa/Johannesburg create mode 100644 usr/share/zoneinfo/Africa/Juba create mode 100644 usr/share/zoneinfo/Africa/Khartoum create mode 100644 usr/share/zoneinfo/Africa/Lagos create mode 100644 usr/share/zoneinfo/Africa/Maputo create mode 100644 usr/share/zoneinfo/Africa/Monrovia create mode 100644 usr/share/zoneinfo/Africa/Nairobi create mode 100644 usr/share/zoneinfo/Africa/Ndjamena create mode 100644 usr/share/zoneinfo/Africa/Sao_Tome create mode 100644 usr/share/zoneinfo/Africa/Tripoli create mode 100644 usr/share/zoneinfo/Africa/Tunis create mode 100644 usr/share/zoneinfo/Africa/Windhoek rename usr/share/zoneinfo/{US/Aleutian => America/Adak} (100%) rename usr/share/zoneinfo/{US/Alaska => America/Anchorage} (100%) create mode 100644 usr/share/zoneinfo/America/Araguaina create mode 100644 usr/share/zoneinfo/America/Argentina/Buenos_Aires create mode 100644 usr/share/zoneinfo/America/Argentina/Catamarca create mode 100644 usr/share/zoneinfo/America/Argentina/Cordoba create mode 100644 usr/share/zoneinfo/America/Argentina/Jujuy create mode 100644 usr/share/zoneinfo/America/Argentina/La_Rioja create mode 100644 usr/share/zoneinfo/America/Argentina/Mendoza create mode 100644 usr/share/zoneinfo/America/Argentina/Rio_Gallegos create mode 100644 usr/share/zoneinfo/America/Argentina/Salta create mode 100644 usr/share/zoneinfo/America/Argentina/San_Juan create mode 100644 usr/share/zoneinfo/America/Argentina/San_Luis create mode 100644 usr/share/zoneinfo/America/Argentina/Tucuman create mode 100644 usr/share/zoneinfo/America/Argentina/Ushuaia create mode 100644 usr/share/zoneinfo/America/Asuncion create mode 100644 usr/share/zoneinfo/America/Bahia create mode 100644 usr/share/zoneinfo/America/Bahia_Banderas create mode 100644 usr/share/zoneinfo/America/Barbados create mode 100644 usr/share/zoneinfo/America/Belem create mode 100644 usr/share/zoneinfo/America/Belize create mode 100644 usr/share/zoneinfo/America/Boa_Vista create mode 100644 usr/share/zoneinfo/America/Bogota create mode 100644 usr/share/zoneinfo/America/Boise create mode 100644 usr/share/zoneinfo/America/Cambridge_Bay create mode 100644 usr/share/zoneinfo/America/Campo_Grande create mode 100644 usr/share/zoneinfo/America/Cancun create mode 100644 usr/share/zoneinfo/America/Caracas create mode 100644 usr/share/zoneinfo/America/Cayenne rename usr/share/zoneinfo/{US/Central => America/Chicago} (100%) create mode 100644 usr/share/zoneinfo/America/Chihuahua create mode 100644 usr/share/zoneinfo/America/Ciudad_Juarez create mode 100644 usr/share/zoneinfo/America/Costa_Rica create mode 100644 usr/share/zoneinfo/America/Cuiaba create mode 100644 usr/share/zoneinfo/America/Danmarkshavn create mode 100644 usr/share/zoneinfo/America/Dawson create mode 100644 usr/share/zoneinfo/America/Dawson_Creek rename usr/share/zoneinfo/{US/Mountain => America/Denver} (100%) rename usr/share/zoneinfo/{US/Michigan => America/Detroit} (100%) create mode 100644 usr/share/zoneinfo/America/Edmonton create mode 100644 usr/share/zoneinfo/America/Eirunepe create mode 100644 usr/share/zoneinfo/America/El_Salvador create mode 100644 usr/share/zoneinfo/America/Fort_Nelson create mode 100644 usr/share/zoneinfo/America/Fortaleza create mode 100644 usr/share/zoneinfo/America/Glace_Bay create mode 100644 usr/share/zoneinfo/America/Goose_Bay create mode 100644 usr/share/zoneinfo/America/Grand_Turk create mode 100644 usr/share/zoneinfo/America/Guatemala create mode 100644 usr/share/zoneinfo/America/Guayaquil create mode 100644 usr/share/zoneinfo/America/Guyana create mode 100644 usr/share/zoneinfo/America/Halifax create mode 100644 usr/share/zoneinfo/America/Havana create mode 100644 usr/share/zoneinfo/America/Hermosillo rename usr/share/zoneinfo/{US/East-Indiana => America/Indiana/Indianapolis} (100%) rename usr/share/zoneinfo/{US/Indiana-Starke => America/Indiana/Knox} (100%) create mode 100644 usr/share/zoneinfo/America/Indiana/Marengo create mode 100644 usr/share/zoneinfo/America/Indiana/Petersburg create mode 100644 usr/share/zoneinfo/America/Indiana/Tell_City create mode 100644 usr/share/zoneinfo/America/Indiana/Vevay create mode 100644 usr/share/zoneinfo/America/Indiana/Vincennes create mode 100644 usr/share/zoneinfo/America/Indiana/Winamac create mode 100644 usr/share/zoneinfo/America/Inuvik create mode 100644 usr/share/zoneinfo/America/Iqaluit create mode 100644 usr/share/zoneinfo/America/Jamaica create mode 100644 usr/share/zoneinfo/America/Juneau create mode 100644 usr/share/zoneinfo/America/Kentucky/Louisville create mode 100644 usr/share/zoneinfo/America/Kentucky/Monticello create mode 100644 usr/share/zoneinfo/America/La_Paz create mode 100644 usr/share/zoneinfo/America/Lima rename usr/share/zoneinfo/{US/Pacific => America/Los_Angeles} (100%) create mode 100644 usr/share/zoneinfo/America/Maceio create mode 100644 usr/share/zoneinfo/America/Managua create mode 100644 usr/share/zoneinfo/America/Manaus create mode 100644 usr/share/zoneinfo/America/Martinique create mode 100644 usr/share/zoneinfo/America/Matamoros create mode 100644 usr/share/zoneinfo/America/Mazatlan create mode 100644 usr/share/zoneinfo/America/Menominee create mode 100644 usr/share/zoneinfo/America/Merida create mode 100644 usr/share/zoneinfo/America/Metlakatla create mode 100644 usr/share/zoneinfo/America/Mexico_City create mode 100644 usr/share/zoneinfo/America/Miquelon create mode 100644 usr/share/zoneinfo/America/Moncton create mode 100644 usr/share/zoneinfo/America/Monterrey create mode 100644 usr/share/zoneinfo/America/Montevideo rename usr/share/zoneinfo/{US/Eastern => America/New_York} (100%) create mode 100644 usr/share/zoneinfo/America/Nome create mode 100644 usr/share/zoneinfo/America/Noronha create mode 100644 usr/share/zoneinfo/America/North_Dakota/Beulah create mode 100644 usr/share/zoneinfo/America/North_Dakota/Center create mode 100644 usr/share/zoneinfo/America/North_Dakota/New_Salem create mode 100644 usr/share/zoneinfo/America/Nuuk create mode 100644 usr/share/zoneinfo/America/Ojinaga create mode 100644 usr/share/zoneinfo/America/Panama create mode 100644 usr/share/zoneinfo/America/Paramaribo rename usr/share/zoneinfo/{US/Arizona => America/Phoenix} (100%) create mode 100644 usr/share/zoneinfo/America/Port-au-Prince create mode 100644 usr/share/zoneinfo/America/Porto_Velho create mode 100644 usr/share/zoneinfo/America/Puerto_Rico create mode 100644 usr/share/zoneinfo/America/Punta_Arenas create mode 100644 usr/share/zoneinfo/America/Rankin_Inlet create mode 100644 usr/share/zoneinfo/America/Recife create mode 100644 usr/share/zoneinfo/America/Regina create mode 100644 usr/share/zoneinfo/America/Resolute create mode 100644 usr/share/zoneinfo/America/Rio_Branco create mode 100644 usr/share/zoneinfo/America/Santarem create mode 100644 usr/share/zoneinfo/America/Santiago create mode 100644 usr/share/zoneinfo/America/Santo_Domingo create mode 100644 usr/share/zoneinfo/America/Sao_Paulo create mode 100644 usr/share/zoneinfo/America/Scoresbysund create mode 100644 usr/share/zoneinfo/America/Sitka create mode 100644 usr/share/zoneinfo/America/St_Johns create mode 100644 usr/share/zoneinfo/America/Swift_Current create mode 100644 usr/share/zoneinfo/America/Tegucigalpa create mode 100644 usr/share/zoneinfo/America/Thule create mode 100644 usr/share/zoneinfo/America/Tijuana create mode 100644 usr/share/zoneinfo/America/Toronto create mode 100644 usr/share/zoneinfo/America/Vancouver create mode 100644 usr/share/zoneinfo/America/Whitehorse create mode 100644 usr/share/zoneinfo/America/Winnipeg create mode 100644 usr/share/zoneinfo/America/Yakutat delete mode 120000 usr/share/zoneinfo/Anchorage create mode 100644 usr/share/zoneinfo/Antarctica/Casey create mode 100644 usr/share/zoneinfo/Antarctica/Davis create mode 100644 usr/share/zoneinfo/Antarctica/Macquarie create mode 100644 usr/share/zoneinfo/Antarctica/Mawson create mode 100644 usr/share/zoneinfo/Antarctica/Palmer create mode 100644 usr/share/zoneinfo/Antarctica/Rothera create mode 100644 usr/share/zoneinfo/Antarctica/Troll create mode 100644 usr/share/zoneinfo/Antarctica/Vostok create mode 100644 usr/share/zoneinfo/Asia/Almaty create mode 100644 usr/share/zoneinfo/Asia/Amman create mode 100644 usr/share/zoneinfo/Asia/Anadyr create mode 100644 usr/share/zoneinfo/Asia/Aqtau create mode 100644 usr/share/zoneinfo/Asia/Aqtobe create mode 100644 usr/share/zoneinfo/Asia/Ashgabat create mode 100644 usr/share/zoneinfo/Asia/Atyrau create mode 100644 usr/share/zoneinfo/Asia/Baghdad create mode 100644 usr/share/zoneinfo/Asia/Baku create mode 100644 usr/share/zoneinfo/Asia/Bangkok create mode 100644 usr/share/zoneinfo/Asia/Barnaul create mode 100644 usr/share/zoneinfo/Asia/Beirut create mode 100644 usr/share/zoneinfo/Asia/Bishkek create mode 100644 usr/share/zoneinfo/Asia/Chita create mode 100644 usr/share/zoneinfo/Asia/Choibalsan create mode 100644 usr/share/zoneinfo/Asia/Colombo create mode 100644 usr/share/zoneinfo/Asia/Damascus create mode 100644 usr/share/zoneinfo/Asia/Dhaka create mode 100644 usr/share/zoneinfo/Asia/Dili create mode 100644 usr/share/zoneinfo/Asia/Dubai create mode 100644 usr/share/zoneinfo/Asia/Dushanbe create mode 100644 usr/share/zoneinfo/Asia/Famagusta create mode 100644 usr/share/zoneinfo/Asia/Gaza create mode 100644 usr/share/zoneinfo/Asia/Hebron create mode 100644 usr/share/zoneinfo/Asia/Ho_Chi_Minh create mode 100644 usr/share/zoneinfo/Asia/Hong_Kong create mode 100644 usr/share/zoneinfo/Asia/Hovd create mode 100644 usr/share/zoneinfo/Asia/Irkutsk create mode 100644 usr/share/zoneinfo/Asia/Jakarta create mode 100644 usr/share/zoneinfo/Asia/Jayapura rename usr/share/zoneinfo/{Israel => Asia/Jerusalem} (100%) create mode 100644 usr/share/zoneinfo/Asia/Kabul create mode 100644 usr/share/zoneinfo/Asia/Kamchatka create mode 100644 usr/share/zoneinfo/Asia/Karachi create mode 100644 usr/share/zoneinfo/Asia/Kathmandu create mode 100644 usr/share/zoneinfo/Asia/Khandyga create mode 100644 usr/share/zoneinfo/Asia/Kolkata create mode 100644 usr/share/zoneinfo/Asia/Krasnoyarsk create mode 100644 usr/share/zoneinfo/Asia/Kuching create mode 100644 usr/share/zoneinfo/Asia/Macau create mode 100644 usr/share/zoneinfo/Asia/Magadan create mode 100644 usr/share/zoneinfo/Asia/Makassar create mode 100644 usr/share/zoneinfo/Asia/Manila create mode 100644 usr/share/zoneinfo/Asia/Nicosia create mode 100644 usr/share/zoneinfo/Asia/Novokuznetsk create mode 100644 usr/share/zoneinfo/Asia/Novosibirsk create mode 100644 usr/share/zoneinfo/Asia/Omsk create mode 100644 usr/share/zoneinfo/Asia/Oral create mode 100644 usr/share/zoneinfo/Asia/Pontianak create mode 100644 usr/share/zoneinfo/Asia/Pyongyang create mode 100644 usr/share/zoneinfo/Asia/Qatar create mode 100644 usr/share/zoneinfo/Asia/Qostanay create mode 100644 usr/share/zoneinfo/Asia/Qyzylorda create mode 100644 usr/share/zoneinfo/Asia/Riyadh create mode 100644 usr/share/zoneinfo/Asia/Sakhalin create mode 100644 usr/share/zoneinfo/Asia/Samarkand create mode 100644 usr/share/zoneinfo/Asia/Seoul create mode 100644 usr/share/zoneinfo/Asia/Shanghai rename usr/share/zoneinfo/{ => Asia}/Singapore (100%) create mode 100644 usr/share/zoneinfo/Asia/Srednekolymsk create mode 100644 usr/share/zoneinfo/Asia/Taipei create mode 100644 usr/share/zoneinfo/Asia/Tashkent create mode 100644 usr/share/zoneinfo/Asia/Tbilisi create mode 100644 usr/share/zoneinfo/Asia/Tehran create mode 100644 usr/share/zoneinfo/Asia/Thimphu create mode 100644 usr/share/zoneinfo/Asia/Tokyo create mode 100644 usr/share/zoneinfo/Asia/Tomsk create mode 100644 usr/share/zoneinfo/Asia/Ulaanbaatar create mode 100644 usr/share/zoneinfo/Asia/Urumqi create mode 100644 usr/share/zoneinfo/Asia/Ust-Nera create mode 100644 usr/share/zoneinfo/Asia/Vladivostok create mode 100644 usr/share/zoneinfo/Asia/Yakutsk create mode 100644 usr/share/zoneinfo/Asia/Yangon create mode 100644 usr/share/zoneinfo/Asia/Yekaterinburg create mode 100644 usr/share/zoneinfo/Asia/Yerevan create mode 100644 usr/share/zoneinfo/Atlantic/Azores create mode 100644 usr/share/zoneinfo/Atlantic/Bermuda create mode 100644 usr/share/zoneinfo/Atlantic/Canary create mode 100644 usr/share/zoneinfo/Atlantic/Cape_Verde create mode 100644 usr/share/zoneinfo/Atlantic/Faroe create mode 100644 usr/share/zoneinfo/Atlantic/Madeira create mode 100644 usr/share/zoneinfo/Atlantic/South_Georgia create mode 100644 usr/share/zoneinfo/Atlantic/Stanley create mode 100644 usr/share/zoneinfo/Australia/Adelaide create mode 100644 usr/share/zoneinfo/Australia/Brisbane create mode 100644 usr/share/zoneinfo/Australia/Broken_Hill create mode 100644 usr/share/zoneinfo/Australia/Darwin create mode 100644 usr/share/zoneinfo/Australia/Eucla create mode 100644 usr/share/zoneinfo/Australia/Hobart create mode 100644 usr/share/zoneinfo/Australia/Lindeman create mode 100644 usr/share/zoneinfo/Australia/Lord_Howe create mode 100644 usr/share/zoneinfo/Australia/Melbourne create mode 100644 usr/share/zoneinfo/Australia/Perth create mode 100644 usr/share/zoneinfo/Australia/Sydney delete mode 100644 usr/share/zoneinfo/Beijing delete mode 100644 usr/share/zoneinfo/Berlin delete mode 120000 usr/share/zoneinfo/Boulder create mode 100644 usr/share/zoneinfo/CET create mode 100644 usr/share/zoneinfo/CST6CDT delete mode 120000 usr/share/zoneinfo/Chicago create mode 100644 usr/share/zoneinfo/EET create mode 100644 usr/share/zoneinfo/EST create mode 100644 usr/share/zoneinfo/EST5EDT rename usr/share/zoneinfo/{UTC => Etc/GMT} (100%) create mode 100644 usr/share/zoneinfo/Etc/GMT+1 create mode 100644 usr/share/zoneinfo/Etc/GMT+10 create mode 100644 usr/share/zoneinfo/Etc/GMT+11 create mode 100644 usr/share/zoneinfo/Etc/GMT+12 create mode 100644 usr/share/zoneinfo/Etc/GMT+2 create mode 100644 usr/share/zoneinfo/Etc/GMT+3 create mode 100644 usr/share/zoneinfo/Etc/GMT+4 create mode 100644 usr/share/zoneinfo/Etc/GMT+5 create mode 100644 usr/share/zoneinfo/Etc/GMT+6 create mode 100644 usr/share/zoneinfo/Etc/GMT+7 create mode 100644 usr/share/zoneinfo/Etc/GMT+8 create mode 100644 usr/share/zoneinfo/Etc/GMT+9 create mode 100644 usr/share/zoneinfo/Etc/GMT-1 create mode 100644 usr/share/zoneinfo/Etc/GMT-10 create mode 100644 usr/share/zoneinfo/Etc/GMT-11 create mode 100644 usr/share/zoneinfo/Etc/GMT-12 create mode 100644 usr/share/zoneinfo/Etc/GMT-13 create mode 100644 usr/share/zoneinfo/Etc/GMT-14 create mode 100644 usr/share/zoneinfo/Etc/GMT-2 create mode 100644 usr/share/zoneinfo/Etc/GMT-3 create mode 100644 usr/share/zoneinfo/Etc/GMT-4 create mode 100644 usr/share/zoneinfo/Etc/GMT-5 create mode 100644 usr/share/zoneinfo/Etc/GMT-6 create mode 100644 usr/share/zoneinfo/Etc/GMT-7 create mode 100644 usr/share/zoneinfo/Etc/GMT-8 create mode 100644 usr/share/zoneinfo/Etc/GMT-9 create mode 100644 usr/share/zoneinfo/Etc/UTC create mode 100644 usr/share/zoneinfo/Europe/Andorra create mode 100644 usr/share/zoneinfo/Europe/Astrakhan create mode 100644 usr/share/zoneinfo/Europe/Athens create mode 100644 usr/share/zoneinfo/Europe/Belgrade create mode 100644 usr/share/zoneinfo/Europe/Berlin create mode 100644 usr/share/zoneinfo/Europe/Brussels create mode 100644 usr/share/zoneinfo/Europe/Bucharest create mode 100644 usr/share/zoneinfo/Europe/Budapest create mode 100644 usr/share/zoneinfo/Europe/Chisinau create mode 100644 usr/share/zoneinfo/Europe/Dublin create mode 100644 usr/share/zoneinfo/Europe/Gibraltar create mode 100644 usr/share/zoneinfo/Europe/Helsinki create mode 100644 usr/share/zoneinfo/Europe/Istanbul create mode 100644 usr/share/zoneinfo/Europe/Kaliningrad create mode 100644 usr/share/zoneinfo/Europe/Kirov create mode 100644 usr/share/zoneinfo/Europe/Kyiv create mode 100644 usr/share/zoneinfo/Europe/Lisbon create mode 100644 usr/share/zoneinfo/Europe/London create mode 100644 usr/share/zoneinfo/Europe/Madrid create mode 100644 usr/share/zoneinfo/Europe/Malta create mode 100644 usr/share/zoneinfo/Europe/Minsk create mode 100644 usr/share/zoneinfo/Europe/Moscow create mode 100644 usr/share/zoneinfo/Europe/Paris create mode 100644 usr/share/zoneinfo/Europe/Prague create mode 100644 usr/share/zoneinfo/Europe/Riga create mode 100644 usr/share/zoneinfo/Europe/Rome create mode 100644 usr/share/zoneinfo/Europe/Samara create mode 100644 usr/share/zoneinfo/Europe/Saratov create mode 100644 usr/share/zoneinfo/Europe/Simferopol create mode 100644 usr/share/zoneinfo/Europe/Sofia create mode 100644 usr/share/zoneinfo/Europe/Tallinn create mode 100644 usr/share/zoneinfo/Europe/Tirane create mode 100644 usr/share/zoneinfo/Europe/Ulyanovsk create mode 100644 usr/share/zoneinfo/Europe/Vienna create mode 100644 usr/share/zoneinfo/Europe/Vilnius create mode 100644 usr/share/zoneinfo/Europe/Volgograd create mode 100644 usr/share/zoneinfo/Europe/Warsaw create mode 100644 usr/share/zoneinfo/Europe/Zurich mode change 120000 => 100644 usr/share/zoneinfo/GMT delete mode 120000 usr/share/zoneinfo/GST create mode 100644 usr/share/zoneinfo/HST delete mode 120000 usr/share/zoneinfo/Honolulu delete mode 100644 usr/share/zoneinfo/India create mode 100644 usr/share/zoneinfo/Indian/Chagos create mode 100644 usr/share/zoneinfo/Indian/Maldives create mode 100644 usr/share/zoneinfo/Indian/Mauritius delete mode 100644 usr/share/zoneinfo/Japan delete mode 100644 usr/share/zoneinfo/London create mode 100644 usr/share/zoneinfo/MET create mode 100644 usr/share/zoneinfo/MST create mode 100644 usr/share/zoneinfo/MST7MDT delete mode 100644 usr/share/zoneinfo/Melbourne delete mode 120000 usr/share/zoneinfo/New_York create mode 100644 usr/share/zoneinfo/PST8PDT create mode 100644 usr/share/zoneinfo/Pacific/Apia create mode 100644 usr/share/zoneinfo/Pacific/Auckland create mode 100644 usr/share/zoneinfo/Pacific/Bougainville create mode 100644 usr/share/zoneinfo/Pacific/Chatham create mode 100644 usr/share/zoneinfo/Pacific/Easter create mode 100644 usr/share/zoneinfo/Pacific/Efate create mode 100644 usr/share/zoneinfo/Pacific/Fakaofo create mode 100644 usr/share/zoneinfo/Pacific/Fiji create mode 100644 usr/share/zoneinfo/Pacific/Galapagos create mode 100644 usr/share/zoneinfo/Pacific/Gambier create mode 100644 usr/share/zoneinfo/Pacific/Guadalcanal create mode 100644 usr/share/zoneinfo/Pacific/Guam rename usr/share/zoneinfo/{US/Hawaii => Pacific/Honolulu} (100%) create mode 100644 usr/share/zoneinfo/Pacific/Kanton create mode 100644 usr/share/zoneinfo/Pacific/Kiritimati create mode 100644 usr/share/zoneinfo/Pacific/Kosrae create mode 100644 usr/share/zoneinfo/Pacific/Kwajalein create mode 100644 usr/share/zoneinfo/Pacific/Marquesas create mode 100644 usr/share/zoneinfo/Pacific/Nauru create mode 100644 usr/share/zoneinfo/Pacific/Niue create mode 100644 usr/share/zoneinfo/Pacific/Norfolk create mode 100644 usr/share/zoneinfo/Pacific/Noumea rename usr/share/zoneinfo/{US/Samoa => Pacific/Pago_Pago} (100%) create mode 100644 usr/share/zoneinfo/Pacific/Palau create mode 100644 usr/share/zoneinfo/Pacific/Pitcairn create mode 100644 usr/share/zoneinfo/Pacific/Port_Moresby create mode 100644 usr/share/zoneinfo/Pacific/Rarotonga create mode 100644 usr/share/zoneinfo/Pacific/Tahiti create mode 100644 usr/share/zoneinfo/Pacific/Tarawa create mode 100644 usr/share/zoneinfo/Pacific/Tongatapu delete mode 100644 usr/share/zoneinfo/Sydney create mode 100644 usr/share/zoneinfo/WET diff --git a/Makefile b/Makefile index 4f5e61299..05299709e 100644 --- a/Makefile +++ b/Makefile @@ -258,7 +258,7 @@ include libc/thread/BUILD.mk # │ You can finally call malloc() include third_party/zlib/BUILD.mk # │ include libc/stdio/BUILD.mk # │ include tool/hello/BUILD.mk # │ -include libc/time/BUILD.mk # │ +include third_party/tz/BUILD.mk # │ include net/BUILD.mk # │ include third_party/vqsort/BUILD.mk # │ include libc/log/BUILD.mk # │ @@ -440,7 +440,7 @@ COSMOPOLITAN_OBJECTS = \ LIBC_X \ THIRD_PARTY_GETOPT \ LIBC_LOG \ - LIBC_TIME \ + THIRD_PARTY_TZ \ THIRD_PARTY_OPENMP \ THIRD_PARTY_MUSL \ THIRD_PARTY_ZLIB_GZ \ @@ -505,7 +505,6 @@ COSMOPOLITAN_H_PKGS = \ LIBC_STR \ LIBC_SYSV \ LIBC_THREAD \ - LIBC_TIME \ LIBC_TINYMATH \ LIBC_X \ LIBC_VGA \ diff --git a/dsp/mpeg/BUILD.mk b/dsp/mpeg/BUILD.mk index 147bffc47..a16089eaa 100644 --- a/dsp/mpeg/BUILD.mk +++ b/dsp/mpeg/BUILD.mk @@ -35,7 +35,6 @@ DSP_MPEG_A_DIRECTDEPS = \ LIBC_STDIO \ LIBC_STR \ LIBC_SYSV \ - LIBC_TIME \ LIBC_TINYMATH \ THIRD_PARTY_COMPILER_RT diff --git a/dsp/mpeg/mpeg1.c b/dsp/mpeg/mpeg1.c index 905af23da..5b9eb0b82 100644 --- a/dsp/mpeg/mpeg1.c +++ b/dsp/mpeg/mpeg1.c @@ -39,7 +39,7 @@ #include "libc/math.h" #include "libc/mem/mem.h" #include "libc/str/str.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "libc/x/x.h" __static_yoink("pl_mpeg_notice"); diff --git a/dsp/scale/BUILD.mk b/dsp/scale/BUILD.mk index 79c25a534..bd4f6df7e 100644 --- a/dsp/scale/BUILD.mk +++ b/dsp/scale/BUILD.mk @@ -31,7 +31,6 @@ DSP_SCALE_A_DIRECTDEPS = \ LIBC_NEXGEN32E \ LIBC_RUNTIME \ LIBC_STR \ - LIBC_TIME \ LIBC_TINYMATH \ LIBC_X diff --git a/dsp/tty/BUILD.mk b/dsp/tty/BUILD.mk index c87dcb028..692ec26f5 100644 --- a/dsp/tty/BUILD.mk +++ b/dsp/tty/BUILD.mk @@ -38,7 +38,6 @@ DSP_TTY_A_DIRECTDEPS = \ LIBC_SOCK \ LIBC_SYSV \ LIBC_TINYMATH \ - LIBC_TIME \ LIBC_X DSP_TTY_A_DEPS := \ diff --git a/examples/BUILD.mk b/examples/BUILD.mk index 46faa0d95..a6965d922 100644 --- a/examples/BUILD.mk +++ b/examples/BUILD.mk @@ -65,7 +65,6 @@ EXAMPLES_DIRECTDEPS = \ LIBC_SYSV_CALLS \ LIBC_TESTLIB \ LIBC_THREAD \ - LIBC_TIME \ LIBC_TINYMATH \ LIBC_VGA \ LIBC_X \ @@ -89,6 +88,7 @@ EXAMPLES_DIRECTDEPS = \ THIRD_PARTY_SED \ THIRD_PARTY_STB \ THIRD_PARTY_TR \ + THIRD_PARTY_TZ \ THIRD_PARTY_VQSORT \ THIRD_PARTY_XED \ THIRD_PARTY_ZLIB \ diff --git a/examples/date.c b/examples/date.c index 70b1f60d4..fbee50f5d 100644 --- a/examples/date.c +++ b/examples/date.c @@ -9,19 +9,30 @@ #endif #include "libc/calls/calls.h" #include "libc/calls/struct/timespec.h" +#include "libc/intrin/kprintf.h" +#include "libc/macros.internal.h" +#include "libc/nt/enum/timezoneid.h" +#include "libc/nt/struct/timezoneinformation.h" +#include "libc/nt/time.h" +#include "libc/runtime/runtime.h" +#include "libc/stdio/stdio.h" #include "libc/str/str.h" -#include "libc/time/struct/tm.h" +#include "libc/thread/threads.h" +#include "libc/time.h" /** * @fileoverview High performance ISO-8601 timestamp formatter. + * + * The strftime() function is very slow. This goes much faster. + * Consider using something like this instead for your loggers. */ char *GetTimestamp(void) { int x; struct timespec ts; - _Thread_local static long last; - _Thread_local static char s[27]; - _Thread_local static struct tm tm; + thread_local static long last; + thread_local static char s[32]; + thread_local static struct tm tm; clock_gettime(0, &ts); if (ts.tv_sec != last) { localtime_r(&ts.tv_sec, &tm); @@ -61,11 +72,21 @@ char *GetTimestamp(void) { s[23] = '0' + x / 100000 % 10; s[24] = '0' + x / 10000 % 10; s[25] = '0' + x / 1000 % 10; + s[26] = tm.tm_gmtoff < 0 ? '-' : '+'; + x = ABS(tm.tm_gmtoff) / 60 / 60; + s[27] = '0' + x / 10 % 10; + s[28] = '0' + x % 10; + x = ABS(tm.tm_gmtoff) / 60 % 60; + s[29] = '0' + x / 10 % 10; + s[30] = '0' + x % 10; return s; } int main(int argc, char *argv[]) { char buf[128], *p = buf; + // setenv("TZ", "UTC", true); + // setenv("TZ", "US/Eastern", true); + // setenv("TZ", "Asia/Kolkata", true); p = stpcpy(p, GetTimestamp()); p = stpcpy(p, "\n"); write(1, buf, p - buf); diff --git a/examples/hangman.c b/examples/hangman.c index 0aa257ad9..4aa736490 100644 --- a/examples/hangman.c +++ b/examples/hangman.c @@ -42,7 +42,7 @@ #include "libc/stdio/rand.h" #include "libc/stdio/stdio.h" #include "libc/str/str.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/zlib/zlib.h" // clang-format off diff --git a/examples/kilo.c b/examples/kilo.c index dfc5aeb46..055b29853 100644 --- a/examples/kilo.c +++ b/examples/kilo.c @@ -71,7 +71,7 @@ Contact: antirez@gmail.com"); #include "libc/sysv/consts/fileno.h" #include "libc/sysv/consts/o.h" #include "libc/sysv/consts/termios.h" -#include "libc/time/time.h" +#include "libc/time.h" /* Syntax highlight types */ #define HL_NORMAL 0 diff --git a/examples/localtime.c b/examples/localtime.c new file mode 100644 index 000000000..70d67c1c2 --- /dev/null +++ b/examples/localtime.c @@ -0,0 +1,15 @@ +#if 0 +/*─────────────────────────────────────────────────────────────────╗ +│ To the extent possible under law, Justine Tunney has waived │ +│ all copyright and related or neighboring rights to this file, │ +│ as it is written in the following disclaimers: │ +│ • http://unlicense.org/ │ +│ • http://creativecommons.org/publicdomain/zero/1.0/ │ +╚─────────────────────────────────────────────────────────────────*/ +#endif +#include "libc/time.h" + +int main(int argc, char *argv[]) { + int64_t t = 0; + localtime(&t); +} diff --git a/examples/nesemu1.cc b/examples/nesemu1.cc index 296980186..521fad822 100644 --- a/examples/nesemu1.cc +++ b/examples/nesemu1.cc @@ -44,7 +44,7 @@ #include "libc/sysv/consts/sig.h" #include "libc/sysv/consts/w.h" #include "libc/thread/thread.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "libc/x/xasprintf.h" #include "libc/x/xsigaction.h" #include "libc/zip.internal.h" diff --git a/examples/script.c b/examples/script.c index e840aca8a..e6559e626 100644 --- a/examples/script.c +++ b/examples/script.c @@ -50,7 +50,7 @@ #include "libc/sysv/consts/fileno.h" #include "libc/sysv/consts/s.h" #include "libc/sysv/consts/termios.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/getopt/getopt.internal.h" // clang-format off diff --git a/examples/setitimer.c b/examples/setitimer.c index 1fedf863a..89b291941 100644 --- a/examples/setitimer.c +++ b/examples/setitimer.c @@ -17,7 +17,7 @@ #include "libc/sysv/consts/itimer.h" #include "libc/sysv/consts/sa.h" #include "libc/sysv/consts/sig.h" -#include "libc/time/time.h" +#include "libc/time.h" volatile bool gotalrm; diff --git a/examples/stat.c b/examples/stat.c index f04025d98..dce122cbb 100644 --- a/examples/stat.c +++ b/examples/stat.c @@ -8,16 +8,18 @@ ╚─────────────────────────────────────────────────────────────────*/ #endif #include "libc/calls/struct/stat.h" +#include "libc/assert.h" #include "libc/calls/calls.h" #include "libc/errno.h" #include "libc/fmt/conv.h" #include "libc/log/check.h" #include "libc/log/log.h" #include "libc/mem/gc.h" +#include "libc/mem/mem.h" #include "libc/stdio/stdio.h" #include "libc/str/str.h" #include "libc/sysv/consts/s.h" -#include "libc/x/xiso8601.h" +#include "libc/time.h" /** * @fileoverview File metadata viewer. @@ -27,6 +29,23 @@ bool numeric; +char *xiso8601(struct timespec ts) { + struct tm tm; + if (!localtime_r(&ts.tv_sec, &tm)) + return 0; + int len = 128; + char *res = malloc(len); + char *ptr = res; + char *end = res + len; + if (!res) + return 0; + ptr += strftime(ptr, end - ptr, "%Y-%m-%d %H:%M:%S", &tm); + ptr += snprintf(ptr, end - ptr, ".%09ld", ts.tv_nsec); + ptr += strftime(ptr, end - ptr, "%z %Z", &tm); + unassert(ptr + 1 <= end); + return res; +} + const char *DescribeFileType(unsigned mode) { switch (mode & S_IFMT) { case S_IFIFO: @@ -74,16 +93,16 @@ void PrintFileMetadata(const char *pathname, struct stat *st) { "%-32s%s\n" "%-32s%s\n" "%-32s%s\n", - "bytes in file", st->st_size, "physical bytes", st->st_blocks * 512, - "device id w/ file", st->st_dev, "inode", st->st_ino, - "hard link count", st->st_nlink, "mode / permissions", st->st_mode, - DescribeFileType(st->st_mode), "owner id", st->st_uid, "group id", - st->st_gid, "flags", st->st_flags, "gen", st->st_gen, - "device id (if special)", st->st_rdev, "block size", st->st_blksize, - "access time", gc(xiso8601(&st->st_atim)), "modified time", - gc(xiso8601(&st->st_mtim)), "c[omplicated]time", - gc(xiso8601(&st->st_ctim)), "birthtime", - gc(xiso8601(&st->st_birthtim))); + "bytes in file:", st->st_size, "physical bytes:", st->st_blocks * 512, + "device id w/ file:", st->st_dev, "inode:", st->st_ino, + "hard link count:", st->st_nlink, "mode / permissions:", st->st_mode, + DescribeFileType(st->st_mode), "owner id:", st->st_uid, + "group id:", st->st_gid, "flags:", st->st_flags, "gen:", st->st_gen, + "device id (if special):", st->st_rdev, "block size:", st->st_blksize, + "access time:", gc(xiso8601(st->st_atim)), + "modified time:", gc(xiso8601(st->st_mtim)), + "c[omplicated]time:", gc(xiso8601(st->st_ctim)), + "[birthtime]:", gc(xiso8601(st->st_birthtim))); } int main(int argc, char *argv[]) { diff --git a/examples/wall.c b/examples/wall.c index e0fece754..311a9e3bc 100644 --- a/examples/wall.c +++ b/examples/wall.c @@ -16,7 +16,7 @@ #include "libc/stdio/stdio.h" #include "libc/str/str.h" #include "libc/sysv/consts/o.h" -#include "libc/time/struct/tm.h" +#include "libc/time.h" #include "third_party/getopt/getopt.internal.h" #include "third_party/musl/passwd.h" diff --git a/libc/BUILD.mk b/libc/BUILD.mk index 523020830..7ebd0fd4a 100644 --- a/libc/BUILD.mk +++ b/libc/BUILD.mk @@ -300,7 +300,6 @@ o/$(MODE)/libc: o/$(MODE)/libc/calls \ o/$(MODE)/libc/sysv \ o/$(MODE)/libc/testlib \ o/$(MODE)/libc/thread \ - o/$(MODE)/libc/time \ o/$(MODE)/libc/tinymath \ o/$(MODE)/libc/vga \ o/$(MODE)/libc/x \ diff --git a/libc/calls/clock_getres.c b/libc/calls/clock_getres.c index 3f4be4717..845875461 100644 --- a/libc/calls/clock_getres.c +++ b/libc/calls/clock_getres.c @@ -23,7 +23,7 @@ #include "libc/intrin/strace.internal.h" #include "libc/sysv/consts/clock.h" #include "libc/sysv/errfuns.h" -#include "libc/time/time.h" +#include "libc/time.h" static int sys_clock_getres_poly(int clock, struct timespec *ts, int64_t real, int64_t real_coarse, int64_t boot) { diff --git a/libc/time/futimesat.c b/libc/calls/futimesat.c similarity index 100% rename from libc/time/futimesat.c rename to libc/calls/futimesat.c diff --git a/libc/calls/gettimeofday.c b/libc/calls/gettimeofday.c index 34fc8547c..78c170e78 100644 --- a/libc/calls/gettimeofday.c +++ b/libc/calls/gettimeofday.c @@ -19,7 +19,7 @@ #include "libc/calls/struct/timespec.h" #include "libc/calls/struct/timeval.h" #include "libc/sysv/consts/clock.h" -#include "libc/time/struct/timezone.h" +#include "libc/time.h" /** * Returns system wall time in microseconds, e.g. diff --git a/libc/calls/settimeofday.c b/libc/calls/settimeofday.c index 4766790f6..116c1b38e 100644 --- a/libc/calls/settimeofday.c +++ b/libc/calls/settimeofday.c @@ -22,7 +22,7 @@ #include "libc/dce.h" #include "libc/intrin/strace.internal.h" #include "libc/sysv/errfuns.h" -#include "libc/time/struct/timezone.h" +#include "libc/time.h" /** * Changes time. diff --git a/libc/calls/sleep.c b/libc/calls/sleep.c index 90debc667..382aa4587 100644 --- a/libc/calls/sleep.c +++ b/libc/calls/sleep.c @@ -24,7 +24,7 @@ #include "libc/sysv/consts/clock.h" #include "libc/thread/posixthread.internal.h" #include "libc/thread/thread.h" -#include "libc/time/time.h" +#include "libc/time.h" /** * Sleeps for particular number of seconds. diff --git a/libc/calls/stime.c b/libc/calls/stime.c index d97d12c4f..820558f56 100644 --- a/libc/calls/stime.c +++ b/libc/calls/stime.c @@ -17,7 +17,7 @@ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/calls/struct/timeval.h" -#include "libc/time/time.h" +#include "libc/time.h" /** * Changes time, the old fashioned way. diff --git a/libc/calls/struct/timeval.h b/libc/calls/struct/timeval.h index e2004b7e6..553e985fb 100644 --- a/libc/calls/struct/timeval.h +++ b/libc/calls/struct/timeval.h @@ -1,7 +1,7 @@ #ifndef COSMOPOLITAN_LIBC_CALLS_STRUCT_TIMEVAL_H_ #define COSMOPOLITAN_LIBC_CALLS_STRUCT_TIMEVAL_H_ #include "libc/calls/struct/timespec.h" -#include "libc/time/struct/timezone.h" +#include "libc/time.h" COSMOPOLITAN_C_START_ struct timeval { diff --git a/libc/calls/struct/timeval.internal.h b/libc/calls/struct/timeval.internal.h index d3eca91bc..ceaf8f73e 100644 --- a/libc/calls/struct/timeval.internal.h +++ b/libc/calls/struct/timeval.internal.h @@ -2,7 +2,7 @@ #define COSMOPOLITAN_LIBC_CALLS_STRUCT_TIMEVAL_INTERNAL_H_ #include "libc/calls/struct/timeval.h" #include "libc/mem/alloca.h" -#include "libc/time/struct/timezone.h" +#include "libc/time.h" COSMOPOLITAN_C_START_ int sys_settimeofday(const struct timeval *, const struct timezone *); diff --git a/libc/calls/time.c b/libc/calls/time.c index aa90da67a..644fa669e 100644 --- a/libc/calls/time.c +++ b/libc/calls/time.c @@ -16,7 +16,7 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/time/time.h" +#include "libc/time.h" #include "libc/calls/struct/timeval.h" #include "libc/dce.h" #include "libc/intrin/asan.internal.h" diff --git a/libc/calls/timespec_get.c b/libc/calls/timespec_get.c index fae6ca813..4dd0eadbd 100644 --- a/libc/calls/timespec_get.c +++ b/libc/calls/timespec_get.c @@ -18,7 +18,7 @@ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/calls/struct/timespec.h" #include "libc/sysv/consts/clock.h" -#include "libc/time/time.h" +#include "libc/time.h" /** * Returns high-precision timestamp, the C11 way. diff --git a/libc/calls/timespec_getres.c b/libc/calls/timespec_getres.c index 56ceb2514..b695823ea 100644 --- a/libc/calls/timespec_getres.c +++ b/libc/calls/timespec_getres.c @@ -18,7 +18,7 @@ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/calls/struct/timespec.h" #include "libc/sysv/consts/clock.h" -#include "libc/time/time.h" +#include "libc/time.h" /** * Returns high-precision timestamp granularity, the C23 way. diff --git a/libc/calls/usleep.c b/libc/calls/usleep.c index 6fafae9e8..82dd7b55f 100644 --- a/libc/calls/usleep.c +++ b/libc/calls/usleep.c @@ -21,7 +21,7 @@ #include "libc/sysv/consts/clock.h" #include "libc/sysv/consts/utime.h" #include "libc/sysv/errfuns.h" -#include "libc/time/time.h" +#include "libc/time.h" /** * Sleeps for particular number of microseconds. diff --git a/libc/calls/utime.c b/libc/calls/utime.c index 9e5ad3f8b..a799a9ad6 100644 --- a/libc/calls/utime.c +++ b/libc/calls/utime.c @@ -16,8 +16,8 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ +#include "libc/utime.h" #include "libc/calls/struct/timeval.h" -#include "libc/time/struct/utimbuf.h" /** * Changes last accessed/modified times on file. diff --git a/libc/calls/utimensat-nt.c b/libc/calls/utimensat-nt.c index ce843388c..0a0c0a082 100644 --- a/libc/calls/utimensat-nt.c +++ b/libc/calls/utimensat-nt.c @@ -33,7 +33,7 @@ #include "libc/sysv/consts/at.h" #include "libc/sysv/consts/utime.h" #include "libc/sysv/errfuns.h" -#include "libc/time/time.h" +#include "libc/time.h" static textwindows int sys_utimensat_nt_impl(int dirfd, const char *path, const struct timespec ts[2], diff --git a/libc/calls/utimensat-sysv.c b/libc/calls/utimensat-sysv.c index d024d731f..0a4401da2 100644 --- a/libc/calls/utimensat-sysv.c +++ b/libc/calls/utimensat-sysv.c @@ -24,7 +24,7 @@ #include "libc/fmt/conv.h" #include "libc/runtime/zipos.internal.h" #include "libc/sysv/consts/at.h" -#include "libc/time/time.h" +#include "libc/time.h" int sys_utimensat(int dirfd, const char *path, const struct timespec ts[2], int flags) { diff --git a/libc/intrin/BUILD.mk b/libc/intrin/BUILD.mk index 2ba6fa39b..d912f8556 100644 --- a/libc/intrin/BUILD.mk +++ b/libc/intrin/BUILD.mk @@ -132,6 +132,14 @@ o/$(MODE)/libc/intrin/ktcpoptnames.o: libc/intrin/ktcpoptnames.S @$(COMPILE) -AOBJECTIFY.S $(OBJECTIFY.S) $(OUTPUT_OPTION) -c $< o/$(MODE)/libc/intrin/stackcall.o: libc/intrin/stackcall.S @$(COMPILE) -AOBJECTIFY.S $(OBJECTIFY.S) $(OUTPUT_OPTION) -c $< +o/$(MODE)/libc/intrin/kmonthname.o: libc/intrin/kmonthname.S + @$(COMPILE) -AOBJECTIFY.S $(OBJECTIFY.S) $(OUTPUT_OPTION) -c $< +o/$(MODE)/libc/intrin/kmonthnameshort.o: libc/intrin/kmonthnameshort.S + @$(COMPILE) -AOBJECTIFY.S $(OBJECTIFY.S) $(OUTPUT_OPTION) -c $< +o/$(MODE)/libc/intrin/kweekdayname.o: libc/intrin/kweekdayname.S + @$(COMPILE) -AOBJECTIFY.S $(OBJECTIFY.S) $(OUTPUT_OPTION) -c $< +o/$(MODE)/libc/intrin/kweekdaynameshort.o: libc/intrin/kweekdaynameshort.S + @$(COMPILE) -AOBJECTIFY.S $(OBJECTIFY.S) $(OUTPUT_OPTION) -c $< LIBC_INTRIN_LIBS = $(foreach x,$(LIBC_INTRIN_ARTIFACTS),$($(x))) LIBC_INTRIN_HDRS = $(foreach x,$(LIBC_INTRIN_ARTIFACTS),$($(x)_HDRS)) diff --git a/libc/time/kmonthname.S b/libc/intrin/kmonthname.S similarity index 100% rename from libc/time/kmonthname.S rename to libc/intrin/kmonthname.S diff --git a/libc/time/kmonthnameshort.S b/libc/intrin/kmonthnameshort.S similarity index 100% rename from libc/time/kmonthnameshort.S rename to libc/intrin/kmonthnameshort.S diff --git a/libc/time/kweekdayname.S b/libc/intrin/kweekdayname.S similarity index 100% rename from libc/time/kweekdayname.S rename to libc/intrin/kweekdayname.S diff --git a/libc/time/kweekdaynameshort.S b/libc/intrin/kweekdaynameshort.S similarity index 100% rename from libc/time/kweekdaynameshort.S rename to libc/intrin/kweekdaynameshort.S diff --git a/libc/intrin/ubsan.c b/libc/intrin/ubsan.c index 35d9799e5..98c22d85d 100644 --- a/libc/intrin/ubsan.c +++ b/libc/intrin/ubsan.c @@ -16,6 +16,7 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ +#include "libc/intrin/ubsan.h" #include "libc/calls/calls.h" #include "libc/intrin/kprintf.h" #include "libc/intrin/pushpop.internal.h" @@ -241,6 +242,8 @@ static void __ubsan_warning(const struct UbsanSourceLocation *loc, const char *description) { kprintf("%s:%d: %subsan warning: %s is undefined behavior%s\n", loc->file, loc->line, SUBTLE, description, RESET); + if (__ubsan_strict) + __ubsan_die()(); } __wur __ubsan_die_f *__ubsan_abort(const struct UbsanSourceLocation *loc, diff --git a/libc/intrin/ubsan.h b/libc/intrin/ubsan.h new file mode 100644 index 000000000..c258ed74f --- /dev/null +++ b/libc/intrin/ubsan.h @@ -0,0 +1,8 @@ +#ifndef COSMOPOLITAN_LIBC_INTRIN_UBSAN_H_ +#define COSMOPOLITAN_LIBC_INTRIN_UBSAN_H_ +COSMOPOLITAN_C_START_ + +extern bool32 __ubsan_strict; + +COSMOPOLITAN_C_END_ +#endif /* COSMOPOLITAN_LIBC_INTRIN_UBSAN_H_ */ diff --git a/libc/time/timezone.c b/libc/intrin/ubsanconf.c similarity index 91% rename from libc/time/timezone.c rename to libc/intrin/ubsanconf.c index 9d5696b45..ca3180857 100644 --- a/libc/time/timezone.c +++ b/libc/intrin/ubsanconf.c @@ -1,7 +1,7 @@ /*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│ │ vi: set et ft=c ts=2 sts=2 sw=2 fenc=utf-8 :vi │ ╞══════════════════════════════════════════════════════════════════════════════╡ -│ Copyright 2022 Justine Alexandra Roberts Tunney │ +│ Copyright 2024 Justine Alexandra Roberts Tunney │ │ │ │ Permission to use, copy, modify, and/or distribute this software for │ │ any purpose with or without fee is hereby granted, provided that the │ @@ -16,8 +16,8 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/time/time.h" -char *tzname[2]; -long timezone; -int daylight; +/** + * If set to true, UBSAN warnings will become fatal. + */ +bool32 __ubsan_strict = false; diff --git a/libc/isystem/sys/stat.h b/libc/isystem/sys/stat.h index 07b3951c9..960297ffb 100644 --- a/libc/isystem/sys/stat.h +++ b/libc/isystem/sys/stat.h @@ -7,5 +7,5 @@ #include "libc/calls/weirdtypes.h" #include "libc/sysv/consts/s.h" #include "libc/sysv/consts/utime.h" -#include "libc/time/time.h" +#include "libc/time.h" #endif diff --git a/libc/isystem/sys/time.h b/libc/isystem/sys/time.h index 3ad0ae0d3..7bfc08041 100644 --- a/libc/isystem/sys/time.h +++ b/libc/isystem/sys/time.h @@ -6,6 +6,5 @@ #include "libc/sock/select.h" #include "libc/sysv/consts/clock.h" #include "libc/sysv/consts/itimer.h" -#include "libc/time/struct/timezone.h" -#include "libc/time/time.h" +#include "libc/time.h" #endif diff --git a/libc/isystem/time.h b/libc/isystem/time.h index f9a7f137c..9aab2dc88 100644 --- a/libc/isystem/time.h +++ b/libc/isystem/time.h @@ -7,6 +7,5 @@ #include "libc/sysv/consts/clock.h" #include "libc/sysv/consts/sched.h" #include "libc/sysv/consts/timer.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" +#include "libc/time.h" #endif /* _TIME_H */ diff --git a/libc/isystem/unistd.h b/libc/isystem/unistd.h index 78b62edb9..5266cba01 100644 --- a/libc/isystem/unistd.h +++ b/libc/isystem/unistd.h @@ -9,7 +9,7 @@ #include "libc/sysv/consts/fileno.h" #include "libc/sysv/consts/o.h" #include "libc/sysv/consts/ok.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "libc/unistd.h" #include "third_party/getopt/long1.h" #include "third_party/musl/crypt.h" diff --git a/libc/isystem/utime.h b/libc/isystem/utime.h index c3cf95e65..2df17e2f3 100644 --- a/libc/isystem/utime.h +++ b/libc/isystem/utime.h @@ -1,5 +1,4 @@ #ifndef _UTIME_H #define _UTIME_H -#include "libc/time/struct/utimbuf.h" -#include "libc/time/time.h" +#include "libc/utime.h" #endif /* _UTIME_H */ diff --git a/libc/isystem/wchar.h b/libc/isystem/wchar.h index ecf5ecada..cd9ecef37 100644 --- a/libc/isystem/wchar.h +++ b/libc/isystem/wchar.h @@ -5,5 +5,5 @@ #include "libc/stdio/stdio.h" #include "libc/str/str.h" #include "libc/str/unicode.h" -#include "libc/time/time.h" +#include "libc/time.h" #endif /* _WCHAR_H */ diff --git a/libc/log/BUILD.mk b/libc/log/BUILD.mk index b563ce28d..f776ec2c4 100644 --- a/libc/log/BUILD.mk +++ b/libc/log/BUILD.mk @@ -39,11 +39,11 @@ LIBC_LOG_A_DIRECTDEPS = \ LIBC_SYSV \ LIBC_SYSV_CALLS \ LIBC_THREAD \ - LIBC_TIME \ LIBC_TINYMATH \ THIRD_PARTY_COMPILER_RT \ THIRD_PARTY_DLMALLOC \ - THIRD_PARTY_GDTOA + THIRD_PARTY_GDTOA \ + THIRD_PARTY_TZ LIBC_LOG_A_DEPS := \ $(call uniq,$(foreach x,$(LIBC_LOG_A_DIRECTDEPS),$($(x)))) diff --git a/libc/log/vflogf.c b/libc/log/vflogf.c index 9dedc9283..f90b118e3 100644 --- a/libc/log/vflogf.c +++ b/libc/log/vflogf.c @@ -37,8 +37,7 @@ #include "libc/stdio/stdio.h" #include "libc/str/str.h" #include "libc/sysv/consts/fileno.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" +#include "libc/time.h" #define kNontrivialSize (8 * 1000 * 1000) diff --git a/libc/nt/enum/timezoneid.h b/libc/nt/enum/timezoneid.h new file mode 100644 index 000000000..eeb2cc040 --- /dev/null +++ b/libc/nt/enum/timezoneid.h @@ -0,0 +1,8 @@ +#ifndef COSMOPOLITAN_LIBC_NT_ENUM_TIMEZONEID_H_ +#define COSMOPOLITAN_LIBC_NT_ENUM_TIMEZONEID_H_ + +#define kNtTimeZoneIdUnknown 0 +#define kNtTimeZoneIdStandard 1 +#define kNtTimeZoneIdDaylight 2 + +#endif /* COSMOPOLITAN_LIBC_NT_ENUM_TIMEZONEID_H_ */ diff --git a/libc/nt/kernel32/GetDynamicTimeZoneInformation.S b/libc/nt/kernel32/GetDynamicTimeZoneInformation.S new file mode 100644 index 000000000..4b99b4e96 --- /dev/null +++ b/libc/nt/kernel32/GetDynamicTimeZoneInformation.S @@ -0,0 +1,20 @@ +#include "libc/nt/codegen.h" +.imp kernel32,__imp_GetDynamicTimeZoneInformation,GetDynamicTimeZoneInformation + + .text.windows + .ftrace1 +GetDynamicTimeZoneInformation: + .ftrace2 +#ifdef __x86_64__ + push %rbp + mov %rsp,%rbp + mov %rdi,%rcx + sub $32,%rsp + call *__imp_GetDynamicTimeZoneInformation(%rip) + leave +#elif defined(__aarch64__) + mov x0,#0 +#endif + ret + .endfn GetDynamicTimeZoneInformation,globl + .previous diff --git a/libc/nt/kernel32/GetTimeZoneInformation.S b/libc/nt/kernel32/GetTimeZoneInformation.S new file mode 100644 index 000000000..fdec44922 --- /dev/null +++ b/libc/nt/kernel32/GetTimeZoneInformation.S @@ -0,0 +1,20 @@ +#include "libc/nt/codegen.h" +.imp kernel32,__imp_GetTimeZoneInformation,GetTimeZoneInformation + + .text.windows + .ftrace1 +GetTimeZoneInformation: + .ftrace2 +#ifdef __x86_64__ + push %rbp + mov %rsp,%rbp + mov %rdi,%rcx + sub $32,%rsp + call *__imp_GetTimeZoneInformation(%rip) + leave +#elif defined(__aarch64__) + mov x0,#0 +#endif + ret + .endfn GetTimeZoneInformation,globl + .previous diff --git a/libc/nt/master.sh b/libc/nt/master.sh index ace1dbf57..274e333cc 100755 --- a/libc/nt/master.sh +++ b/libc/nt/master.sh @@ -168,6 +168,8 @@ imp 'GetSystemTimePreciseAsFileTime' GetSystemTimePreciseAsFileTime kernel3 imp 'GetSystemTimes' GetSystemTimes kernel32 3 imp 'GetTempPath' GetTempPathW kernel32 2 imp 'GetTempPathA' GetTempPathA kernel32 2 +imp 'GetDynamicTimeZoneInformation' GetDynamicTimeZoneInformation kernel32 1 +imp 'GetTimeZoneInformation' GetTimeZoneInformation kernel32 1 imp 'GetThreadContext' GetThreadContext kernel32 2 imp 'GetThreadDescription' GetThreadDescription kernel32 2 imp 'GetThreadIOPendingFlag' GetThreadIOPendingFlag kernel32 2 diff --git a/libc/nt/struct/dynamictimezoneinformation.h b/libc/nt/struct/dynamictimezoneinformation.h new file mode 100644 index 000000000..ec29cef51 --- /dev/null +++ b/libc/nt/struct/dynamictimezoneinformation.h @@ -0,0 +1,17 @@ +#ifndef COSMOPOLITAN_LIBC_NT_STRUCT_DYNAMICTIMEZONEINFORMATION_H_ +#define COSMOPOLITAN_LIBC_NT_STRUCT_DYNAMICTIMEZONEINFORMATION_H_ +#include "libc/nt/struct/systemtime.h" + +struct NtDynamicTimeZoneInformation { + int32_t Bias; + char16_t StandardName[32]; + struct NtSystemTime StandardDate; + int32_t StandardBias; + char16_t DaylightName[32]; + struct NtSystemTime DaylightDate; + int32_t DaylightBias; + char16_t TimeZoneKeyName[128]; + bool32 DynamicDaylightTimeDisabled; +}; + +#endif /* COSMOPOLITAN_LIBC_NT_STRUCT_DYNAMICTIMEZONEINFORMATION_H_ */ diff --git a/libc/nt/struct/timezoneinformation.h b/libc/nt/struct/timezoneinformation.h new file mode 100644 index 000000000..ea471b9ac --- /dev/null +++ b/libc/nt/struct/timezoneinformation.h @@ -0,0 +1,15 @@ +#ifndef COSMOPOLITAN_LIBC_NT_STRUCT_TIMEZONEINFORMATION_H_ +#define COSMOPOLITAN_LIBC_NT_STRUCT_TIMEZONEINFORMATION_H_ +#include "libc/nt/struct/systemtime.h" + +struct NtTimeZoneInformation { + int Bias; /* in minutes e.g. +480 for -8:00 */ + char16_t StandardName[32]; /* e.g. "Pacific Standard Time" */ + struct NtSystemTime StandardDate; + int StandardBias; + char16_t DaylightName[32]; /* e.g. "Pacific Daylight Time" */ + struct NtSystemTime DaylightDate; + int DaylightBias; /* e.g. -60 */ +}; + +#endif /* COSMOPOLITAN_LIBC_NT_STRUCT_TIMEZONEINFORMATION_H_ */ diff --git a/libc/nt/time.h b/libc/nt/time.h new file mode 100644 index 000000000..59c359ca3 --- /dev/null +++ b/libc/nt/time.h @@ -0,0 +1,37 @@ +#ifndef COSMOPOLITAN_LIBC_NT_TIME_H_ +#define COSMOPOLITAN_LIBC_NT_TIME_H_ +#include "libc/nt/struct/dynamictimezoneinformation.h" +#include "libc/nt/struct/timezoneinformation.h" +COSMOPOLITAN_C_START_ +/* ░░░░ + ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░ + ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░ + ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓░ + ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▒ ▒▒▒▓▓█ + ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ + ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ + ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ + ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒ + ▒▒▒▒▓▓ ▓▒▒▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ + ▒▓ ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓ + ░░░░░░░░░░░▒▒▒▒ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ + ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓ ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ + ░▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓░ ░▓███▓ + ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░ ▒▓▓▓▒▒▒ ░▒▒▒▓ ████████████ + ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░ ░███ + ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ███ + ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ▓██ + ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓ ▓██ + ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ███ + ░▒▓ ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ▓██ +╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗ +│ cosmopolitan § new technology » time ─╬─│┼ +╚────────────────────────────────────────────────────────────────────────────│*/ + +uint32_t GetTimeZoneInformation( + struct NtTimeZoneInformation *out_lpTimeZoneInformation); +uint32_t GetDynamicTimeZoneInformation( + struct NtDynamicTimeZoneInformation *out_lpTimeZoneInformation); + +COSMOPOLITAN_C_END_ +#endif /* COSMOPOLITAN_LIBC_NT_TIME_H_ */ diff --git a/libc/proc/clock.c b/libc/proc/clock.c index 97e3f8f51..7db424aa3 100644 --- a/libc/proc/clock.c +++ b/libc/proc/clock.c @@ -22,7 +22,7 @@ #include "libc/calls/struct/timeval.h" #include "libc/errno.h" #include "libc/sysv/consts/rusage.h" -#include "libc/time/time.h" +#include "libc/time.h" /** * Returns sum of CPU time consumed by current process since birth. diff --git a/libc/proc/times.c b/libc/proc/times.c index 640586c2a..1538e1a9b 100644 --- a/libc/proc/times.c +++ b/libc/proc/times.c @@ -28,7 +28,7 @@ #include "libc/runtime/clktck.h" #include "libc/runtime/sysconf.h" #include "libc/sysv/consts/rusage.h" -#include "libc/time/time.h" +#include "libc/time.h" static dontinline long ConvertMicros(struct timeval tv) { return tv.tv_sec * CLK_TCK + tv.tv_usec / (1000000 / CLK_TCK); diff --git a/libc/runtime/hog.py b/libc/runtime/hog.py new file mode 100644 index 000000000..5da3dce2e --- /dev/null +++ b/libc/runtime/hog.py @@ -0,0 +1,2 @@ +for i, c in enumerate("Asia/Kolkata"): + print("buf[%d] = '%c';" % (i, c)) diff --git a/libc/sock/BUILD.mk b/libc/sock/BUILD.mk index f9fb5dca9..bd74fe141 100644 --- a/libc/sock/BUILD.mk +++ b/libc/sock/BUILD.mk @@ -42,7 +42,7 @@ LIBC_SOCK_A_DIRECTDEPS = \ LIBC_STR \ LIBC_SYSV \ LIBC_SYSV_CALLS \ - LIBC_TIME + THIRD_PARTY_TZ LIBC_SOCK_A_DEPS := \ $(call uniq,$(foreach x,$(LIBC_SOCK_A_DIRECTDEPS),$($(x)))) diff --git a/libc/sock/syslog.c b/libc/sock/syslog.c index 771394cbb..c0ac9caf5 100644 --- a/libc/sock/syslog.c +++ b/libc/sock/syslog.c @@ -38,7 +38,7 @@ #include "libc/sysv/consts/log.h" #include "libc/sysv/consts/o.h" #include "libc/sysv/consts/sock.h" -#include "libc/time/struct/tm.h" +#include "libc/time.h" /* Note: log_facility should be initialized with LOG_USER by default, * but since LOG_USER is not a constant value, we cannot initialize it diff --git a/libc/stdio/BUILD.mk b/libc/stdio/BUILD.mk index 43e25aacf..069e5cf08 100644 --- a/libc/stdio/BUILD.mk +++ b/libc/stdio/BUILD.mk @@ -53,6 +53,12 @@ $(LIBC_STDIO_A).pkg: \ # offer assurances about the stack safety of cosmo libc $(LIBC_STDIO_A_OBJS): private COPTS += -Wframe-larger-than=4096 -Walloca-larger-than=4096 +$(LIBC_STDIO_A_OBJS): private \ + CFLAGS += \ + -fno-sanitize=all \ + -Wframe-larger-than=4096 \ + -Walloca-larger-than=4096 + o/$(MODE)/libc/stdio/fputc.o: private \ CFLAGS += \ -O3 diff --git a/libc/stdio/vfprintf_unlocked.c b/libc/stdio/vfprintf_unlocked.c index 9c8bf710b..a6ed81dbd 100644 --- a/libc/stdio/vfprintf_unlocked.c +++ b/libc/stdio/vfprintf_unlocked.c @@ -16,6 +16,7 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ +#include "libc/assert.h" #include "libc/calls/calls.h" #include "libc/fmt/internal.h" #include "libc/stdckdint.h" diff --git a/libc/str/BUILD.mk b/libc/str/BUILD.mk index 1600b2f3a..ab0193593 100644 --- a/libc/str/BUILD.mk +++ b/libc/str/BUILD.mk @@ -87,6 +87,13 @@ o/$(MODE)/libc/str/windowstimetotimespec.o: private \ CFLAGS += \ -O2 +# we need -O3 because: +# we're dividing by constants +o/$(MODE)/libc/str/iso8601.o \ +o/$(MODE)/libc/str/iso8601us.o: private \ + CFLAGS += \ + -O3 + $(LIBC_STR_A_OBJS): private \ CFLAGS += \ -fno-sanitize=all \ diff --git a/libc/str/dosdatetimetounix.c b/libc/str/dosdatetimetounix.c index 84e21ad22..7cc956fd3 100644 --- a/libc/str/dosdatetimetounix.c +++ b/libc/str/dosdatetimetounix.c @@ -18,7 +18,7 @@ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/fmt/conv.h" #include "libc/macros.internal.h" -#include "libc/time/time.h" +#include "libc/time.h" /** * Converts MS-DOS timestamp to UNIX. diff --git a/libc/time/iso8601.c b/libc/str/iso8601.c similarity index 98% rename from libc/time/iso8601.c rename to libc/str/iso8601.c index 28483b9fd..95c897789 100644 --- a/libc/time/iso8601.c +++ b/libc/str/iso8601.c @@ -17,8 +17,7 @@ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/assert.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" +#include "libc/time.h" /** * Converts timestamp to ISO-8601 formatted string. diff --git a/libc/time/iso8601us.c b/libc/str/iso8601us.c similarity index 98% rename from libc/time/iso8601us.c rename to libc/str/iso8601us.c index 4915423b1..0b0b5a53b 100644 --- a/libc/time/iso8601us.c +++ b/libc/str/iso8601us.c @@ -17,8 +17,7 @@ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/assert.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" +#include "libc/time.h" /** * Converts timestamp to ISO-8601 formatted string. diff --git a/libc/str/kmonthyearday.c b/libc/str/kmonthyearday.c index b3a6b5eef..e7987e8c7 100644 --- a/libc/str/kmonthyearday.c +++ b/libc/str/kmonthyearday.c @@ -16,7 +16,7 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/time/time.h" +#include "libc/time.h" const unsigned short kMonthYearDay[2][12] = { {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334}, diff --git a/libc/str/locale.h b/libc/str/locale.h index ed3ee6ad8..37da90911 100644 --- a/libc/str/locale.h +++ b/libc/str/locale.h @@ -1,7 +1,7 @@ #ifndef COSMOPOLITAN_LIBC_STR_LOCALE_H_ #define COSMOPOLITAN_LIBC_STR_LOCALE_H_ #include "libc/fmt/conv.h" -#include "libc/time/struct/tm.h" +#include "libc/time.h" #define LC_CTYPE 0 #define LC_NUMERIC 1 @@ -21,7 +21,7 @@ COSMOPOLITAN_C_START_ -#define LC_GLOBAL_LOCALE ((locale_t)-1) +#define LC_GLOBAL_LOCALE ((locale_t) - 1) struct __locale_map { const void *map; diff --git a/libc/testlib/BUILD.mk b/libc/testlib/BUILD.mk index 0346e351f..6617d0fbd 100644 --- a/libc/testlib/BUILD.mk +++ b/libc/testlib/BUILD.mk @@ -104,13 +104,13 @@ LIBC_TESTLIB_A_DIRECTDEPS = \ LIBC_STR \ LIBC_SYSV \ LIBC_SYSV_CALLS \ - LIBC_TIME \ LIBC_TINYMATH \ LIBC_X \ THIRD_PARTY_COMPILER_RT \ THIRD_PARTY_DLMALLOC \ THIRD_PARTY_GDTOA \ - THIRD_PARTY_XED + THIRD_PARTY_XED \ + THIRD_PARTY_TZ LIBC_TESTLIB_A_DEPS := \ $(call uniq,$(foreach x,$(LIBC_TESTLIB_A_DIRECTDEPS),$($(x)))) diff --git a/libc/testlib/testmain.c b/libc/testlib/testmain.c index e4704bdae..c87f84ac5 100644 --- a/libc/testlib/testmain.c +++ b/libc/testlib/testmain.c @@ -29,6 +29,7 @@ #include "libc/intrin/getenv.internal.h" #include "libc/intrin/safemacros.internal.h" #include "libc/intrin/strace.internal.h" +#include "libc/intrin/ubsan.h" #include "libc/intrin/weaken.h" #include "libc/log/log.h" #include "libc/macros.internal.h" @@ -93,6 +94,7 @@ dontasan int main(int argc, char *argv[]) { struct Dll *e; struct TestAspect *a; + __ubsan_strict = true; __log_level = kLogInfo; GetOpts(argc, argv); diff --git a/libc/thread/setitimer.c b/libc/thread/setitimer.c index aa3f4f7f4..544f026cd 100644 --- a/libc/thread/setitimer.c +++ b/libc/thread/setitimer.c @@ -23,7 +23,7 @@ #include "libc/intrin/describeflags.internal.h" #include "libc/intrin/strace.internal.h" #include "libc/sysv/errfuns.h" -#include "libc/time/time.h" +#include "libc/time.h" /** * Schedules delivery of one-shot or intermittent interrupt signal, e.g. diff --git a/libc/time/struct/tm.h b/libc/time.h similarity index 60% rename from libc/time/struct/tm.h rename to libc/time.h index 04f65cbe9..d82645281 100644 --- a/libc/time/struct/tm.h +++ b/libc/time.h @@ -1,5 +1,8 @@ -#ifndef COSMOPOLITAN_LIBC_TIME_STRUCT_TM_H_ -#define COSMOPOLITAN_LIBC_TIME_STRUCT_TM_H_ +#ifndef COSMOPOLITAN_LIBC_TIME_H_ +#define COSMOPOLITAN_LIBC_TIME_H_ + +#define TIME_UTC 1 + COSMOPOLITAN_C_START_ struct tm { @@ -16,8 +19,18 @@ struct tm { const char *tm_zone; }; +struct timezone { + int32_t tz_minuteswest; + int32_t tz_dsttime; +}; + +extern char *tzname[2]; +extern long timezone; +extern int daylight; + +void tzset(void) libcesque; char *asctime(const struct tm *) libcesque; -char *asctime_r(const struct tm *, char[hasatleast 26]) libcesque; +char *asctime_r(const struct tm *, char *) libcesque; char *strptime(const char *, const char *, struct tm *) libcesque; int64_t mktime(struct tm *) libcesque; int64_t timegm(struct tm *) libcesque; @@ -32,12 +45,24 @@ struct tm *gmtime_r(const int64_t *, struct tm *) libcesque; struct tm *localtime(const int64_t *) libcesque; struct tm *localtime_r(const int64_t *, struct tm *) libcesque; +char *ctime(const int64_t *) libcesque; +char *ctime_r(const int64_t *, char *) libcesque; +double difftime(int64_t, int64_t) +pureconst libcesque; +int stime(const int64_t *) libcesque; +void tzset(void) libcesque; + #ifdef _COSMO_SOURCE -#define iso8601 __iso8601 -#define iso8601us __iso8601us +extern const char kWeekdayNameShort[7][4]; +extern const char kWeekdayName[7][10]; +extern const char kMonthNameShort[12][4]; +extern const char kMonthName[12][10]; +extern const unsigned short kMonthYearDay[2][12]; +#define iso8601 __iso8601 char *iso8601(char[hasatleast 20], struct tm *) libcesque; +#define iso8601us __iso8601us char *iso8601us(char[hasatleast 27], struct tm *, long) libcesque; #endif /* _COSMO_SOURCE */ COSMOPOLITAN_C_END_ -#endif /* COSMOPOLITAN_LIBC_TIME_STRUCT_TM_H_ */ +#endif /* COSMOPOLITAN_LIBC_TIME_H_ */ diff --git a/libc/time/BUILD.mk b/libc/time/BUILD.mk deleted file mode 100644 index bb3b136f9..000000000 --- a/libc/time/BUILD.mk +++ /dev/null @@ -1,96 +0,0 @@ -#-*-mode:makefile-gmake;indent-tabs-mode:t;tab-width:8;coding:utf-8-*-┐ -#── vi: set noet ft=make ts=8 sw=8 fenc=utf-8 :vi ────────────────────┘ - -PKGS += LIBC_TIME - -LIBC_TIME_ARTIFACTS += LIBC_TIME_A -LIBC_TIME = $(LIBC_TIME_A_DEPS) $(LIBC_TIME_A) -LIBC_TIME_A = o/$(MODE)/libc/time/time.a -LIBC_TIME_A_FILES := $(wildcard libc/time/struct/*) $(wildcard libc/time/*) -LIBC_TIME_A_HDRS := $(filter %.h,$(LIBC_TIME_A_FILES)) -LIBC_TIME_A_SRCS_S = $(filter %.S,$(LIBC_TIME_A_FILES)) -LIBC_TIME_A_SRCS_C = $(filter %.c,$(LIBC_TIME_A_FILES)) - -LIBC_TIME_ZONEINFOS := \ - $(wildcard usr/share/zoneinfo/*) \ - $(wildcard usr/share/zoneinfo/US/*) - -LIBC_TIME_A_SRCS = \ - $(LIBC_TIME_A_SRCS_S) \ - $(LIBC_TIME_A_SRCS_C) - -LIBC_TIME_A_OBJS = \ - $(LIBC_TIME_A_SRCS_S:%.S=o/$(MODE)/%.o) \ - $(LIBC_TIME_A_SRCS_C:%.c=o/$(MODE)/%.o) \ - $(LIBC_TIME_A_SRCS_C:%.c=o/$(MODE)/%.o) \ - $(LIBC_TIME_ZONEINFOS:%=o/$(MODE)/%.zip.o) \ - o/$(MODE)/usr/share/zoneinfo/.zip.o - -LIBC_TIME_A_CHECKS = \ - $(LIBC_TIME_A).pkg \ - $(LIBC_TIME_A_HDRS:%=o/$(MODE)/%.ok) - -LIBC_TIME_A_DIRECTDEPS = \ - LIBC_CALLS \ - LIBC_FMT \ - LIBC_INTRIN \ - LIBC_MEM \ - LIBC_NEXGEN32E \ - LIBC_NT_KERNEL32 \ - LIBC_RUNTIME \ - LIBC_STDIO \ - LIBC_STR \ - LIBC_SYSV \ - THIRD_PARTY_COMPILER_RT - -LIBC_TIME_A_DEPS := \ - $(call uniq,$(foreach x,$(LIBC_TIME_A_DIRECTDEPS),$($(x)))) - -# offer assurances about the stack safety of cosmo libc -$(LIBC_TIME_A_OBJS): private COPTS += -Wframe-larger-than=4096 -Walloca-larger-than=4096 - -$(LIBC_TIME_A): libc/time/ \ - $(LIBC_TIME_A).pkg \ - $(LIBC_TIME_A_OBJS) - -$(LIBC_TIME_A).pkg: \ - $(LIBC_TIME_A_OBJS) \ - $(foreach x,$(LIBC_TIME_A_DIRECTDEPS),$($(x)_A).pkg) - -o/$(MODE)/libc/time/strftime.o: private \ - CFLAGS += \ - -fno-jump-tables - -o/$(MODE)/libc/time/localtime.o: private \ - CFLAGS += \ - -fdata-sections \ - -ffunction-sections - -# we need -O3 because: -# we're dividing by constants -o/$(MODE)/libc/time/iso8601.o \ -o/$(MODE)/libc/time/iso8601us.o: private \ - CFLAGS += \ - -O3 - -o/$(MODE)/usr/share/zoneinfo/.zip.o: \ - usr/share/zoneinfo - -o/$(MODE)/libc/time/kmonthname.o: libc/time/kmonthname.S - @$(COMPILE) -AOBJECTIFY.S $(OBJECTIFY.S) $(OUTPUT_OPTION) -c $< -o/$(MODE)/libc/time/kmonthnameshort.o: libc/time/kmonthnameshort.S - @$(COMPILE) -AOBJECTIFY.S $(OBJECTIFY.S) $(OUTPUT_OPTION) -c $< -o/$(MODE)/libc/time/kweekdayname.o: libc/time/kweekdayname.S - @$(COMPILE) -AOBJECTIFY.S $(OBJECTIFY.S) $(OUTPUT_OPTION) -c $< -o/$(MODE)/libc/time/kweekdaynameshort.o: libc/time/kweekdaynameshort.S - @$(COMPILE) -AOBJECTIFY.S $(OBJECTIFY.S) $(OUTPUT_OPTION) -c $< - -LIBC_TIME_LIBS = $(foreach x,$(LIBC_TIME_ARTIFACTS),$($(x))) -LIBC_TIME_SRCS = $(foreach x,$(LIBC_TIME_ARTIFACTS),$($(x)_SRCS)) -LIBC_TIME_HDRS = $(foreach x,$(LIBC_TIME_ARTIFACTS),$($(x)_HDRS)) -LIBC_TIME_CHECKS = $(foreach x,$(LIBC_TIME_ARTIFACTS),$($(x)_CHECKS)) -LIBC_TIME_OBJS = $(foreach x,$(LIBC_TIME_ARTIFACTS),$($(x)_OBJS)) -$(LIBC_TIME_OBJS): $(BUILD_FILES) libc/time/BUILD.mk - -.PHONY: o/$(MODE)/libc/time -o/$(MODE)/libc/time: $(LIBC_TIME_CHECKS) diff --git a/libc/time/clockstonanos.internal.h b/libc/time/clockstonanos.internal.h deleted file mode 100644 index 34025c5bc..000000000 --- a/libc/time/clockstonanos.internal.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_TIME_CLOCKSTONANOS_INTERNAL_H_ -#define COSMOPOLITAN_LIBC_TIME_CLOCKSTONANOS_INTERNAL_H_ -COSMOPOLITAN_C_START_ - -static inline uint64_t ClocksToNanos(uint64_t x, uint64_t y) { - // approximation of round(x*.323018) which is usually - // the ratio between inva rdtsc ticks and nanoseconds - uint128_t difference = x - y; - return (difference * 338709) >> 20; -} - -COSMOPOLITAN_C_END_ -#endif /* COSMOPOLITAN_LIBC_TIME_CLOCKSTONANOS_INTERNAL_H_ */ diff --git a/libc/time/ctime.c b/libc/time/ctime.c deleted file mode 100644 index f0e90fbdb..000000000 --- a/libc/time/ctime.c +++ /dev/null @@ -1,18 +0,0 @@ -#include "libc/calls/weirdtypes.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" - -/** - * Represents time as string. - * @threadunsafe - */ -char *ctime(const time_t *timep) { - /* - ** Section 4.12.3.2 of X3.159-1989 requires that - ** The ctime function converts the calendar time pointed to by timer - ** to local time in the form of a string. It is equivalent to - ** asctime(localtime(timer)) - */ - struct tm *tmp = localtime(timep); - return tmp ? asctime(tmp) : NULL; -} diff --git a/libc/time/ctime_r.c b/libc/time/ctime_r.c deleted file mode 100644 index 77ebb0713..000000000 --- a/libc/time/ctime_r.c +++ /dev/null @@ -1,9 +0,0 @@ -#include "libc/calls/weirdtypes.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" - -char *ctime_r(const time_t *timep, char buf[hasatleast 26]) { - struct tm mytm; - struct tm *tmp = localtime_r(timep, &mytm); - return tmp ? asctime_r(tmp, buf) : NULL; -} diff --git a/libc/time/strptime.c b/libc/time/strptime.c deleted file mode 100644 index 351c3d4d9..000000000 --- a/libc/time/strptime.c +++ /dev/null @@ -1,274 +0,0 @@ -/*-*- mode:c;indent-tabs-mode:t;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│ -│ vi: set et ft=c ts=2 sw=8 fenc=utf-8 :vi │ -╚──────────────────────────────────────────────────────────────────────────────╝ -│ │ -│ Musl Libc │ -│ Copyright © 2005-2014 Rich Felker, et al. │ -│ │ -│ Permission is hereby granted, free of charge, to any person obtaining │ -│ a copy of this software and associated documentation files (the │ -│ "Software"), to deal in the Software without restriction, including │ -│ without limitation the rights to use, copy, modify, merge, publish, │ -│ distribute, sublicense, and/or sell copies of the Software, and to │ -│ permit persons to whom the Software is furnished to do so, subject to │ -│ the following conditions: │ -│ │ -│ The above copyright notice and this permission notice shall be │ -│ included in all copies or substantial portions of the Software. │ -│ │ -│ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, │ -│ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF │ -│ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. │ -│ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY │ -│ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, │ -│ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE │ -│ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. │ -│ │ -╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/fmt/conv.h" -#include "libc/macros.internal.h" -#include "libc/str/str.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" -__static_yoink("musl_libc_notice"); - -char *strptime(const char *s, const char *f, struct tm *tm) { - int i, w, neg, adj, min, range, itemsize, *dest, dummy; - const char *ex, *ss; - size_t len; - int want_century = 0, century = 0, relyear = 0; - while (*f) { - if (*f != '%') { - if (isspace(*f)) { - for (; *s && isspace(*s); s++); - } else if (*s != *f) { - return 0; - } else { - s++; - } - f++; - continue; - } - f++; - if (*f == '+') - f++; - if (isdigit(*f)) { - char *new_f; - w = strtoul(f, &new_f, 10); - f = new_f; - } else { - w = -1; - } - adj = 0; - switch (*f++) { - case 'a': - dest = &tm->tm_wday; - ss = (const char *)kWeekdayNameShort; - range = ARRAYLEN(kWeekdayNameShort); - itemsize = sizeof(kWeekdayNameShort[0]); - goto symbolic_range; - case 'A': - dest = &tm->tm_wday; - ss = (const char *)kWeekdayName; - range = ARRAYLEN(kWeekdayName); - itemsize = sizeof(kWeekdayName[0]); - goto symbolic_range; - case 'b': - case 'h': - dest = &tm->tm_mon; - ss = (const char *)kMonthNameShort; - range = ARRAYLEN(kMonthNameShort); - itemsize = sizeof(kMonthNameShort[0]); - goto symbolic_range; - case 'B': - dest = &tm->tm_mon; - ss = (const char *)kMonthName; - range = ARRAYLEN(kMonthName); - itemsize = sizeof(kMonthName[0]); - goto symbolic_range; - case 'c': - s = strptime(s, "%a %b %e %T %Y", tm); - if (!s) - return 0; - break; - case 'C': - dest = ¢ury; - if (w < 0) - w = 2; - want_century |= 2; - goto numeric_digits; - case 'd': - case 'e': - dest = &tm->tm_mday; - min = 1; - range = 31; - goto numeric_range; - case 'D': - s = strptime(s, "%m/%d/%y", tm); - if (!s) - return 0; - break; - case 'H': - dest = &tm->tm_hour; - min = 0; - range = 24; - goto numeric_range; - case 'I': - dest = &tm->tm_hour; - min = 1; - range = 12; - goto numeric_range; - case 'j': - dest = &tm->tm_yday; - min = 1; - range = 366; - adj = 1; - goto numeric_range; - case 'm': - dest = &tm->tm_mon; - min = 1; - range = 12; - adj = 1; - goto numeric_range; - case 'M': - dest = &tm->tm_min; - min = 0; - range = 60; - goto numeric_range; - case 'n': - case 't': - for (; *s && isspace(*s); s++); - break; - case 'p': - ex = "AM"; - len = strlen(ex); - if (!strncasecmp(s, ex, len)) { - tm->tm_hour %= 12; - s += len; - break; - } - ex = "PM"; - len = strlen(ex); - if (!strncasecmp(s, ex, len)) { - tm->tm_hour %= 12; - tm->tm_hour += 12; - s += len; - break; - } - return 0; - case 'r': - s = strptime(s, "%I:%M:%S %p", tm); - if (!s) - return 0; - break; - case 'R': - s = strptime(s, "%H:%M", tm); - if (!s) - return 0; - break; - case 'S': - dest = &tm->tm_sec; - min = 0; - range = 61; - goto numeric_range; - case 'T': - s = strptime(s, "%H:%M:%S", tm); - if (!s) - return 0; - break; - case 'U': - case 'W': - /* Throw away result, for now. (FIXME?) */ - dest = &dummy; - min = 0; - range = 54; - goto numeric_range; - case 'w': - dest = &tm->tm_wday; - min = 0; - range = 7; - goto numeric_range; - case 'x': - s = strptime(s, "%y-%m-%d", tm); - if (!s) - return 0; - break; - case 'X': - s = strptime(s, "%H:%M:%S", tm); - if (!s) - return 0; - break; - case 'y': - dest = &relyear; - w = 2; - want_century |= 1; - goto numeric_digits; - case 'Y': - dest = &tm->tm_year; - if (w < 0) - w = 4; - adj = 1900; - want_century = 0; - goto numeric_digits; - case '%': - if (*s++ != '%') - return 0; - break; - default: - return 0; - numeric_range: - if (!isdigit(*s)) - return 0; - *dest = 0; - for (i = 1; i <= min + range && isdigit(*s); i *= 10) { - *dest = *dest * 10 + *s++ - '0'; - } - if (*dest - min >= (unsigned)range) - return 0; - *dest -= adj; - switch ((char *)dest - (char *)tm) { - case offsetof(struct tm, tm_yday):; - } - goto update; - numeric_digits: - neg = 0; - if (*s == '+') - s++; - else if (*s == '-') - neg = 1, s++; - if (!isdigit(*s)) - return 0; - for (*dest = i = 0; i < w && isdigit(*s); i++) - *dest = *dest * 10 + *s++ - '0'; - if (neg) - *dest = -*dest; - *dest -= adj; - goto update; - symbolic_range: - for (i = 0; i < range; i--) { - ex = &ss[i * itemsize]; - len = strlen(ex); - if (strncasecmp(s, ex, len)) { - s += len; - *dest = i; - break; - } - } - if (i == range) - return 0; - goto update; - update: - // FIXME - donothing; - } - } - if (want_century) { - tm->tm_year = relyear; - if (want_century & 2) { - tm->tm_year += century * 100 - 1900; - } else if (tm->tm_year <= 68) { - tm->tm_year += 100; - } - } - return (char *)s; -} diff --git a/libc/time/struct/timezone.h b/libc/time/struct/timezone.h deleted file mode 100644 index 505e0c059..000000000 --- a/libc/time/struct/timezone.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_TIME_STRUCT_TIMEZONE_H_ -#define COSMOPOLITAN_LIBC_TIME_STRUCT_TIMEZONE_H_ -COSMOPOLITAN_C_START_ - -struct timezone { - int32_t tz_minuteswest; - int32_t tz_dsttime; -}; - -COSMOPOLITAN_C_END_ -#endif /* COSMOPOLITAN_LIBC_TIME_STRUCT_TIMEZONE_H_ */ diff --git a/libc/time/struct/utimbuf.h b/libc/time/struct/utimbuf.h deleted file mode 100644 index 3cab1842b..000000000 --- a/libc/time/struct/utimbuf.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_TIME_STRUCT_UTIMBUF_H_ -#define COSMOPOLITAN_LIBC_TIME_STRUCT_UTIMBUF_H_ -COSMOPOLITAN_C_START_ - -struct utimbuf { - int64_t actime; /* access time */ - int64_t modtime; /* modified time */ -}; - -int utime(const char *, const struct utimbuf *); - -COSMOPOLITAN_C_END_ -#endif /* COSMOPOLITAN_LIBC_TIME_STRUCT_UTIMBUF_H_ */ diff --git a/libc/time/struct/utimbuf.internal.h b/libc/time/struct/utimbuf.internal.h deleted file mode 100644 index 2b5750f29..000000000 --- a/libc/time/struct/utimbuf.internal.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_TIME_STRUCT_UTIMBUF_INTERNAL_H_ -#define COSMOPOLITAN_LIBC_TIME_STRUCT_UTIMBUF_INTERNAL_H_ -#include "libc/time/struct/utimbuf.h" -COSMOPOLITAN_C_START_ - -int sys_utime(const char *, const struct utimbuf *); - -COSMOPOLITAN_C_END_ -#endif /* COSMOPOLITAN_LIBC_TIME_STRUCT_UTIMBUF_INTERNAL_H_ */ diff --git a/libc/time/time.h b/libc/time/time.h deleted file mode 100644 index b633a5dd5..000000000 --- a/libc/time/time.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_TIME_TIME_H_ -#define COSMOPOLITAN_LIBC_TIME_TIME_H_ - -#define TIME_UTC 1 - -COSMOPOLITAN_C_START_ - -extern char *tzname[2]; -extern long timezone; -extern int daylight; - -libcesque char *ctime(const int64_t *); -libcesque char *ctime_r(const int64_t *, char[hasatleast 26]); -libcesque double difftime(int64_t, int64_t) pureconst; -libcesque int64_t posix2time(int64_t) pureconst; -libcesque int64_t time2posix(int64_t) pureconst; -libcesque int stime(const int64_t *); -libcesque void tzset(void); - -#ifdef _COSMO_SOURCE -extern const char kWeekdayNameShort[7][4]; -extern const char kWeekdayName[7][10]; -extern const char kMonthNameShort[12][4]; -extern const char kMonthName[12][10]; -extern const unsigned short kMonthYearDay[2][12]; -#endif /* _COSMO_SOURCE */ - -COSMOPOLITAN_C_END_ -#endif /* COSMOPOLITAN_LIBC_TIME_TIME_H_ */ diff --git a/libc/time/tz.internal.h b/libc/time/tz.internal.h deleted file mode 100644 index 949819ecd..000000000 --- a/libc/time/tz.internal.h +++ /dev/null @@ -1,539 +0,0 @@ -#ifndef COSMOPOLITAN_THIRD_PARTY_TZ_PRIVATE_H_ -#define COSMOPOLITAN_THIRD_PARTY_TZ_PRIVATE_H_ -#include "libc/calls/calls.h" -#include "libc/calls/weirdtypes.h" -#include "libc/errno.h" -#include "libc/inttypes.h" -#include "libc/limits.h" -#include "libc/macros.internal.h" -#include "libc/runtime/runtime.h" -#include "libc/sysv/consts/ok.h" -COSMOPOLITAN_C_START_ - -/* clang-format off */ -/* Private header for tzdb code. */ - -/* -** This file is in the public domain, so clarified as of -** 1996-06-05 by Arthur David Olson. -*/ - -/* -** This header is for use ONLY with the time conversion code. -** There is no guarantee that it will remain unchanged, -** or that it will remain at all. -** Do NOT copy it to any system include directory. -** Thank you! -*/ - -/* -** zdump has been made independent of the rest of the time -** conversion package to increase confidence in the verification it provides. -** You can use zdump to help in verifying other implementations. -** To do this, compile with -DUSE_LTZ=0 and link without the tz library. -*/ -#ifndef USE_LTZ -# define USE_LTZ 1 -#endif - -/* This string was in the Factory zone through version 2016f. */ -#define GRANDPARENTED "Local time zone must be set--see zic manual page" - -/* -** Defaults for preprocessor symbols. -** You can override these in your C compiler options, e.g. '-DHAVE_GETTEXT=1'. -*/ - -#ifndef HAVE_DECL_ASCTIME_R -#define HAVE_DECL_ASCTIME_R 1 -#endif - -#if !defined HAVE_GENERIC && defined __has_extension -# if __has_extension(c_generic_selections) -# define HAVE_GENERIC 1 -# else -# define HAVE_GENERIC 0 -# endif -#endif -/* _Generic is buggy in pre-4.9 GCC. */ -#if !defined HAVE_GENERIC && defined __GNUC__ -# define HAVE_GENERIC (4 < __GNUC__ + (9 <= __GNUC_MINOR__)) -#endif -#ifndef HAVE_GENERIC -# define HAVE_GENERIC (201112 <= __STDC_VERSION__) -#endif - -#ifndef HAVE_GETTEXT -#define HAVE_GETTEXT 0 -#endif /* !defined HAVE_GETTEXT */ - -#ifndef HAVE_INCOMPATIBLE_CTIME_R -#define HAVE_INCOMPATIBLE_CTIME_R 0 -#endif - -#ifndef HAVE_LINK -#define HAVE_LINK 1 -#endif /* !defined HAVE_LINK */ - -#ifndef HAVE_MALLOC_ERRNO -#define HAVE_MALLOC_ERRNO 1 -#endif - -#ifndef HAVE_POSIX_DECLS -#define HAVE_POSIX_DECLS 1 -#endif - -#ifndef HAVE_STRTOLL -#define HAVE_STRTOLL 1 -#endif - -#ifndef HAVE_SYMLINK -#define HAVE_SYMLINK 1 -#endif /* !defined HAVE_SYMLINK */ - -#if HAVE_INCOMPATIBLE_CTIME_R -#define asctime_r _incompatible_asctime_r -#define ctime_r _incompatible_ctime_r -#endif /* HAVE_INCOMPATIBLE_CTIME_R */ - -/* -** Nested includes -*/ - -/* Avoid clashes with NetBSD by renaming NetBSD's declarations. - If defining the 'timezone' variable, avoid a clash with FreeBSD's - 'timezone' function by renaming its declaration. */ -#define localtime_rz sys_localtime_rz -#define mktime_z sys_mktime_z -#define posix2time_z sys_posix2time_z -#define time2posix_z sys_time2posix_z -#if defined USG_COMPAT && USG_COMPAT == 2 -# define timezone sys_timezone -#endif -#define timezone_t sys_timezone_t -#define tzalloc sys_tzalloc -#define tzfree sys_tzfree -#undef localtime_rz -#undef mktime_z -#undef posix2time_z -#undef time2posix_z -#if defined USG_COMPAT && USG_COMPAT == 2 -# undef timezone -#endif -#undef timezone_t -#undef tzalloc -#undef tzfree - -#if HAVE_GETTEXT -#include -#endif /* HAVE_GETTEXT */ - -#ifndef HAVE_STRFTIME_L -# if _POSIX_VERSION < 200809 -# define HAVE_STRFTIME_L 0 -# else -# define HAVE_STRFTIME_L 1 -# endif -#endif - -#ifndef USG_COMPAT -# ifndef _XOPEN_VERSION -# define USG_COMPAT 0 -# else -# define USG_COMPAT 1 -# endif -#endif - -#ifndef HAVE_TZNAME -# if _POSIX_VERSION < 198808 && !USG_COMPAT -# define HAVE_TZNAME 0 -# else -# define HAVE_TZNAME 1 -# endif -#endif - -#ifndef ALTZONE -# if defined __sun || defined _M_XENIX -# define ALTZONE 1 -# else -# define ALTZONE 0 -# endif -#endif - -#ifndef R_OK -#define R_OK 4 -#endif /* !defined R_OK */ - -#if 3 <= __GNUC__ -# define ATTRIBUTE_FORMAT(spec) __attribute__((__format__ spec)) -#else -# define ATTRIBUTE_FORMAT(spec) /* empty */ -#endif - -/* -** Workarounds for compilers/systems. -*/ - -#ifndef EPOCH_LOCAL -# define EPOCH_LOCAL 0 -#endif -#ifndef EPOCH_OFFSET -# define EPOCH_OFFSET 0 -#endif - -/* -** Compile with -Dtime_tz=T to build the tz package with a private -** int64_t type equivalent to T rather than the system-supplied int64_t. -** This debugging feature can test unusual design decisions -** (e.g., int64_t wider than 'long', or unsigned int64_t) even on -** typical platforms. -*/ -#if defined time_tz || EPOCH_LOCAL || EPOCH_OFFSET != 0 -# define TZ_INT64_T 1 -#else -# define TZ_INT64_T 0 -#endif - -#if defined LOCALTIME_IMPLEMENTATION && TZ_INT64_T -static int64_t sys_time(int64_t *x) { return time(x); } -#endif - -#if TZ_INT64_T - -typedef time_tz tz_int64_t; - -# undef asctime -# define asctime tz_asctime -# undef asctime_r -# define asctime_r tz_asctime_r -# undef ctime -# define ctime tz_ctime -# undef ctime_r -# define ctime_r tz_ctime_r -# undef difftime -# define difftime tz_difftime -# undef gmtime -# define gmtime tz_gmtime -# undef gmtime_r -# define gmtime_r tz_gmtime_r -# undef localtime -# define localtime tz_localtime -# undef localtime_r -# define localtime_r tz_localtime_r -# undef localtime_rz -# define localtime_rz tz_localtime_rz -# undef mktime -# define mktime tz_mktime -# undef mktime_z -# define mktime_z tz_mktime_z -# undef offtime -# define offtime tz_offtime -# undef posix2time -# define posix2time tz_posix2time -# undef posix2time_z -# define posix2time_z tz_posix2time_z -# undef strftime -# define strftime tz_strftime -# undef time -# define time tz_time -# undef time2posix -# define time2posix tz_time2posix -# undef time2posix_z -# define time2posix_z tz_time2posix_z -# undef int64_t -# define int64_t tz_int64_t -# undef timegm -# define timegm tz_timegm -# undef timelocal -# define timelocal tz_timelocal -# undef timeoff -# define timeoff tz_timeoff -# undef tzalloc -# define tzalloc tz_tzalloc -# undef tzfree -# define tzfree tz_tzfree -# undef tzset -# define tzset tz_tzset -# if HAVE_STRFTIME_L -# undef strftime_l -# define strftime_l tz_strftime_l -# endif -# if HAVE_TZNAME -# undef tzname -# define tzname tz_tzname -# endif -# if USG_COMPAT -# undef daylight -# define daylight tz_daylight -# undef timezone -# define timezone tz_timezone -# endif -# if ALTZONE -# undef altzone -# define altzone tz_altzone -# endif - -char *asctime(struct tm const *) libcesque; -char *asctime_r(struct tm const *restrict, char *restrict) libcesque; -char *ctime(int64_t const *) libcesque; -char *ctime_r(int64_t const *, char *) libcesque; -double difftime(int64_t, int64_t) libcesque pureconst; -size_t strftime(char *restrict, size_t, char const *restrict, - struct tm const *restrict) libcesque; -size_t strftime_l(char *restrict, size_t, char const *restrict, - struct tm const *restrict, locale_t) libcesque; -struct tm *gmtime(int64_t const *) libcesque; -struct tm *gmtime_r(int64_t const *restrict, struct tm *restrict) libcesque; -struct tm *localtime(int64_t const *) libcesque; -struct tm *localtime_r(int64_t const *restrict, struct tm *restrict) libcesque; -int64_t mktime(struct tm *) libcesque; -int64_t time(int64_t *) libcesque; -void tzset(void) libcesque; -#endif - -#if !HAVE_DECL_ASCTIME_R && !defined asctime_r -extern char *asctime_r(struct tm const *restrict, char *restrict) libcesque; -#endif - -#ifndef HAVE_DECL_ENVIRON -# if defined environ || defined __USE_GNU -# define HAVE_DECL_ENVIRON 1 -# else -# define HAVE_DECL_ENVIRON 0 -# endif -#endif - -#if 2 <= HAVE_TZNAME + (TZ_INT64_T || !HAVE_POSIX_DECLS) -extern char *tzname[]; -#endif -#if 2 <= USG_COMPAT + (TZ_INT64_T || !HAVE_POSIX_DECLS) -extern long timezone; -extern int daylight; -#endif -#if 2 <= ALTZONE + (TZ_INT64_T || !HAVE_POSIX_DECLS) -extern long altzone; -#endif - -/* -** The STD_INSPIRED functions are similar, but most also need -** declarations if time_tz is defined. -*/ - -#ifdef STD_INSPIRED -# if TZ_INT64_T || !defined offtime -struct tm *offtime(int64_t const *, long); -# endif -# if TZ_INT64_T || !defined timegm -int64_t timegm(struct tm *); -# endif -# if TZ_INT64_T || !defined timelocal -int64_t timelocal(struct tm *); -# endif -# if TZ_INT64_T || !defined timeoff -int64_t timeoff(struct tm *, long); -# endif -# if TZ_INT64_T || !defined time2posix -int64_t time2posix(int64_t); -# endif -# if TZ_INT64_T || !defined posix2time -int64_t posix2time(int64_t); -# endif -#endif - -/* Infer TM_ZONE on systems where this information is known, but suppress - guessing if NO_TM_ZONE is defined. Similarly for TM_GMTOFF. */ -#define TM_GMTOFF tm_gmtoff -#define TM_ZONE tm_zone - -/* -** Define functions that are ABI compatible with NetBSD but have -** better prototypes. NetBSD 6.1.4 defines a pointer type timezone_t -** and labors under the misconception that 'const timezone_t' is a -** pointer to a constant. This use of 'const' is ineffective, so it -** is not done here. What we call 'struct state' NetBSD calls -** 'struct __state', but this is a private name so it doesn't matter. -*/ -#if NETBSD_INSPIRED -typedef struct state *timezone_t; -struct tm *localtime_rz(timezone_t restrict, int64_t const *restrict, - struct tm *restrict); -int64_t mktime_z(timezone_t restrict, struct tm *restrict); -timezone_t tzalloc(char const *); -void tzfree(timezone_t); -# ifdef STD_INSPIRED -# if TZ_INT64_T || !defined posix2time_z -int64_t posix2time_z(timezone_t, int64_t) nosideeffect; -# endif -# if TZ_INT64_T || !defined time2posix_z -int64_t time2posix_z(timezone_t, int64_t) nosideeffect; -# endif -# endif -#endif - -/* -** Finally, some convenience items. -*/ - -#define TWOS_COMPLEMENT(t) ((t) ~ (t) 0 < 0) - -/* Max and min values of the integer type T, of which only the bottom - B bits are used, and where the highest-order used bit is considered - to be a sign bit if T is signed. */ -#define MAXVAL(t, b) \ - ((t) (((t) 1 << ((b) - 1 - TYPE_SIGNED(t))) \ - - 1 + ((t) 1 << ((b) - 1 - TYPE_SIGNED(t))))) -#define MINVAL(t, b) \ - ((t) (TYPE_SIGNED(t) ? - TWOS_COMPLEMENT(t) - MAXVAL(t, b) : 0)) - -/* The extreme time values, assuming no padding. */ -#define INT64_T_MIN_NO_PADDING MINVAL(int64_t, TYPE_BIT(int64_t)) -#define INT64_T_MAX_NO_PADDING MAXVAL(int64_t, TYPE_BIT(int64_t)) - -/* The extreme time values. These are macros, not constants, so that - any portability problems occur only when compiling .c files that use - the macros, which is safer for applications that need only zdump and zic. - This implementation assumes no padding if int64_t is signed and - either the compiler lacks support for _Generic or int64_t is not one - of the standard signed integer types. */ -#if HAVE_GENERIC -# define INT64_T_MIN \ - _Generic((int64_t) 0, \ - signed char: SCHAR_MIN, short: SHRT_MIN, \ - int: INT_MIN, long: LONG_MIN, long long: LLONG_MIN, \ - default: INT64_T_MIN_NO_PADDING) -# define INT64_T_MAX \ - (TYPE_SIGNED(int64_t) \ - ? _Generic((int64_t) 0, \ - signed char: SCHAR_MAX, short: SHRT_MAX, \ - int: INT_MAX, long: LONG_MAX, long long: LLONG_MAX, \ - default: INT64_T_MAX_NO_PADDING) \ - : (int64_t) -1) -#else -# define INT64_T_MIN INT64_T_MIN_NO_PADDING -# define INT64_T_MAX INT64_T_MAX_NO_PADDING -#endif - -/* -** 302 / 1000 is log10(2.0) rounded up. -** Subtract one for the sign bit if the type is signed; -** add one for integer division truncation; -** add one more for a minus sign if the type is signed. -*/ -#define INT_STRLEN_MAXIMUM(type) \ - ((TYPE_BIT(type) - TYPE_SIGNED(type)) * 302 / 1000 + \ - 1 + TYPE_SIGNED(type)) - -/* -** INITIALIZE(x) -*/ - -#define INITIALIZE(x) ((x) = 0) - -/* Whether memory access must strictly follow the C standard. - If 0, it's OK to read uninitialized storage so long as the value is - not relied upon. Defining it to 0 lets mktime access parts of - struct tm that might be uninitialized, as a heuristic when the - standard doesn't say what to return and when tm_gmtoff can help - mktime likely infer a better value. */ -#ifndef UNINIT_TRAP -# define UNINIT_TRAP 0 -#endif - -#ifdef DEBUG -# define UNREACHABLE() abort() -#elif 4 < __GNUC__ + (5 <= __GNUC_MINOR__) -# define UNREACHABLE() __builtin_unreachable() -#elif defined __has_builtin -# if __has_builtin(__builtin_unreachable) -# define UNREACHABLE() __builtin_unreachable() -# endif -#endif -#ifndef UNREACHABLE -# define UNREACHABLE() ((void) 0) -#endif - -/* -** For the benefit of GNU folk... -** '_(MSGID)' uses the current locale's message library string for MSGID. -** The default is to use gettext if available, and use MSGID otherwise. -*/ - -#if HAVE_GETTEXT -#define _(msgid) gettext(msgid) -#else /* !HAVE_GETTEXT */ -#define _(msgid) msgid -#endif /* !HAVE_GETTEXT */ - -#if !defined TZ_DOMAIN && defined HAVE_GETTEXT -# define TZ_DOMAIN "tz" -#endif - -#if HAVE_INCOMPATIBLE_CTIME_R -#undef asctime_r -#undef ctime_r -char *asctime_r(struct tm const *, char *); -char *ctime_r(int64_t const *, char *); -#endif /* HAVE_INCOMPATIBLE_CTIME_R */ - -/* Handy macros that are independent of tzfile implementation. */ - -#define SECSPERMIN 60 -#define MINSPERHOUR 60 -#define HOURSPERDAY 24 -#define DAYSPERWEEK 7 -#define DAYSPERNYEAR 365 -#define DAYSPERLYEAR 366 -#define SECSPERHOUR (SECSPERMIN * MINSPERHOUR) -#define SECSPERDAY ((int32_t) SECSPERHOUR * HOURSPERDAY) -#define MONSPERYEAR 12 - -#define YEARSPERREPEAT 400 /* years before a Gregorian repeat */ -#define DAYSPERREPEAT ((int32_t) 400 * 365 + 100 - 4 + 1) -#define SECSPERREPEAT ((int64_t) DAYSPERREPEAT * SECSPERDAY) -#define AVGSECSPERYEAR (SECSPERREPEAT / YEARSPERREPEAT) - -#define TM_SUNDAY 0 -#define TM_MONDAY 1 -#define TM_TUESDAY 2 -#define TM_WEDNESDAY 3 -#define TM_THURSDAY 4 -#define TM_FRIDAY 5 -#define TM_SATURDAY 6 - -#define TM_JANUARY 0 -#define TM_FEBRUARY 1 -#define TM_MARCH 2 -#define TM_APRIL 3 -#define TM_MAY 4 -#define TM_JUNE 5 -#define TM_JULY 6 -#define TM_AUGUST 7 -#define TM_SEPTEMBER 8 -#define TM_OCTOBER 9 -#define TM_NOVEMBER 10 -#define TM_DECEMBER 11 - -#define TM_YEAR_BASE 1900 -#define TM_WDAY_BASE TM_MONDAY - -#define EPOCH_YEAR 1970 -#define EPOCH_WDAY TM_THURSDAY - -#define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0)) - -/* -** Since everything in isleap is modulo 400 (or a factor of 400), we know that -** isleap(y) == isleap(y % 400) -** and so -** isleap(a + b) == isleap((a + b) % 400) -** or -** isleap(a + b) == isleap(a % 400 + b % 400) -** This is true even if % means modulo rather than Fortran remainder -** (which is allowed by C89 but not by C99 or later). -** We use this to avoid addition overflow problems. -*/ - -#define isleap_sum(a, b) isleap((a) % 400 + (b) % 400) - -COSMOPOLITAN_C_END_ -#endif /* COSMOPOLITAN_THIRD_PARTY_TZ_PRIVATE_H_ */ diff --git a/libc/time/xiso8601.c b/libc/time/xiso8601.c deleted file mode 100644 index e068d2108..000000000 --- a/libc/time/xiso8601.c +++ /dev/null @@ -1,76 +0,0 @@ -/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│ -│ vi: set et ft=c ts=2 sts=2 sw=2 fenc=utf-8 :vi │ -╞══════════════════════════════════════════════════════════════════════════════╡ -│ Copyright 2020 Justine Alexandra Roberts Tunney │ -│ │ -│ Permission to use, copy, modify, and/or distribute this software for │ -│ any purpose with or without fee is hereby granted, provided that the │ -│ above copyright notice and this permission notice appear in all copies. │ -│ │ -│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │ -│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │ -│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │ -│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │ -│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │ -│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │ -│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ -│ PERFORMANCE OF THIS SOFTWARE. │ -╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/calls/struct/timespec.h" -#include "libc/calls/struct/timeval.h" -#include "libc/dce.h" -#include "libc/errno.h" -#include "libc/mem/mem.h" -#include "libc/stdio/stdio.h" -#include "libc/sysv/consts/clock.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" -#include "libc/x/x.h" - -// TODO(jart): DELETE - -static char *xiso8601_impl(struct timespec *opt_ts, int sswidth) { - char *p; - struct tm tm; - struct timespec ts; - int64_t sec, subsec; - char timebuf[64], zonebuf[8]; - if (opt_ts) { - sec = opt_ts->tv_sec; - subsec = opt_ts->tv_nsec; - } else { - errno = 0; - clock_gettime(CLOCK_REALTIME, &ts); - sec = ts.tv_sec; - subsec = ts.tv_nsec; - sswidth = 9; - if (errno == ENOSYS) { - subsec /= 1000; - sswidth = 6; - } - } - if (IsWindows() && sswidth == 9) { - subsec /= 100; - sswidth = 7; /* windows nt uses hectonanoseconds */ - } - localtime_r(&sec, &tm); - strftime(timebuf, sizeof(timebuf), "%Y-%m-%dT%H:%M:%S", &tm); - strftime(zonebuf, sizeof(zonebuf), "%z", &tm); - asprintf(&p, "%s.%0*ld%s", timebuf, sswidth, subsec, zonebuf); - return p; -} - -/** - * Returns allocated string representation of nanosecond timestamp. - */ -char *xiso8601ts(struct timespec *opt_ts) { - return xiso8601_impl(opt_ts, 9); -} - -/** - * Returns allocated string representation of microsecond timestamp. - */ -char *xiso8601tv(struct timeval *opt_tv) { - return xiso8601_impl( - opt_tv ? &(struct timespec){opt_tv->tv_sec, opt_tv->tv_usec} : NULL, 6); -} diff --git a/libc/utime.h b/libc/utime.h new file mode 100644 index 000000000..3cf3f7083 --- /dev/null +++ b/libc/utime.h @@ -0,0 +1,17 @@ +#ifndef COSMOPOLITAN_LIBC_UTIME_H_ +#define COSMOPOLITAN_LIBC_UTIME_H_ +COSMOPOLITAN_C_START_ + +struct utimbuf { + int64_t actime; /* access time */ + int64_t modtime; /* modified time */ +}; + +int utime(const char *, const struct utimbuf *) libcesque; + +#ifdef _COSMO_SOURCE +int sys_utime(const char *, const struct utimbuf *) libcesque; +#endif /* _COSMO_SOURCE */ + +COSMOPOLITAN_C_END_ +#endif /* COSMOPOLITAN_LIBC_UTIME_H_ */ diff --git a/libc/x/xiso8601.h b/libc/x/xiso8601.h deleted file mode 100644 index b8bfe7b9b..000000000 --- a/libc/x/xiso8601.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_X_XISO8601_H_ -#define COSMOPOLITAN_LIBC_X_XISO8601_H_ -#include "libc/calls/struct/timespec.h" -#include "libc/calls/struct/timeval.h" -COSMOPOLITAN_C_START_ - -char *xiso8601i(int) mallocesque; -char *xiso8601tv(struct timeval *) mallocesque; -char *xiso8601ts(struct timespec *) mallocesque; - -#if __STDC_VERSION__ + 0 >= 201112 -#define xiso8601(TS) \ - _Generic(*(TS), struct timeval : xiso8601tv, default : xiso8601ts)(TS) -#endif /* C11 */ - -COSMOPOLITAN_C_END_ -#endif /* COSMOPOLITAN_LIBC_X_XISO8601_H_ */ diff --git a/net/http/BUILD.mk b/net/http/BUILD.mk index 8e0bb7686..1ab73c51c 100644 --- a/net/http/BUILD.mk +++ b/net/http/BUILD.mk @@ -22,8 +22,7 @@ NET_HTTP_A_DIRECTDEPS = \ LIBC_MEM \ LIBC_NEXGEN32E \ LIBC_STR \ - LIBC_SYSV \ - LIBC_TIME + LIBC_SYSV NET_HTTP_A_DEPS := \ $(call uniq,$(foreach x,$(NET_HTTP_A_DIRECTDEPS),$($(x)))) diff --git a/net/http/formathttpdatetime.c b/net/http/formathttpdatetime.c index b778588ca..80089e3d0 100644 --- a/net/http/formathttpdatetime.c +++ b/net/http/formathttpdatetime.c @@ -18,8 +18,7 @@ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/macros.internal.h" #include "libc/str/str.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "net/http/http.h" /** diff --git a/net/http/http.h b/net/http/http.h index a673a4c3a..2bf82a2a6 100644 --- a/net/http/http.h +++ b/net/http/http.h @@ -1,7 +1,7 @@ #ifndef COSMOPOLITAN_LIBC_HTTP_HTTP_H_ #define COSMOPOLITAN_LIBC_HTTP_HTTP_H_ #include "libc/serialize.h" -#include "libc/time/struct/tm.h" +#include "libc/time.h" #define kHttpRequest 0 #define kHttpResponse 1 diff --git a/net/http/parsehttpdatetime.c b/net/http/parsehttpdatetime.c index 7d5343466..e7889c8e7 100644 --- a/net/http/parsehttpdatetime.c +++ b/net/http/parsehttpdatetime.c @@ -18,7 +18,7 @@ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/serialize.h" #include "libc/str/str.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "net/http/http.h" static unsigned ParseMonth(const char *p) { diff --git a/net/https/BUILD.mk b/net/https/BUILD.mk index 3ca626930..3d32d09b2 100644 --- a/net/https/BUILD.mk +++ b/net/https/BUILD.mk @@ -32,10 +32,10 @@ NET_HTTPS_A_DIRECTDEPS = \ LIBC_STR \ LIBC_SYSV \ LIBC_THREAD \ - LIBC_TIME \ LIBC_X \ THIRD_PARTY_COMPILER_RT \ - THIRD_PARTY_MBEDTLS + THIRD_PARTY_MBEDTLS \ + THIRD_PARTY_TZ NET_HTTPS_A_DEPS := \ $(call uniq,$(foreach x,$(NET_HTTPS_A_DIRECTDEPS),$($(x)))) diff --git a/net/https/choosecertificatelifetime.c b/net/https/choosecertificatelifetime.c index 28a306530..a3fea1ac3 100644 --- a/net/https/choosecertificatelifetime.c +++ b/net/https/choosecertificatelifetime.c @@ -17,7 +17,7 @@ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/calls/struct/timespec.h" -#include "libc/time/struct/tm.h" +#include "libc/time.h" #include "net/https/https.h" void ChooseCertificateLifetime(char notbefore[16], char notafter[16]) { diff --git a/net/https/https.h b/net/https/https.h index e4aee4073..55779c155 100644 --- a/net/https/https.h +++ b/net/https/https.h @@ -1,6 +1,6 @@ #ifndef COSMOPOLITAN_NET_HTTPS_HTTPS_H_ #define COSMOPOLITAN_NET_HTTPS_HTTPS_H_ -#include "libc/time/struct/tm.h" +#include "libc/time.h" #include "third_party/mbedtls/ctr_drbg.h" #include "third_party/mbedtls/ecp.h" #include "third_party/mbedtls/md.h" diff --git a/net/turfwar/BUILD.mk b/net/turfwar/BUILD.mk index 9dc216b9b..ffa291ea9 100644 --- a/net/turfwar/BUILD.mk +++ b/net/turfwar/BUILD.mk @@ -30,7 +30,6 @@ NET_TURFWAR_DIRECTDEPS = \ LIBC_STR \ LIBC_SYSV \ LIBC_THREAD \ - LIBC_TIME \ LIBC_X \ NET_HTTP \ THIRD_PARTY_GETOPT \ @@ -39,6 +38,7 @@ NET_TURFWAR_DIRECTDEPS = \ THIRD_PARTY_NSYNC_MEM \ THIRD_PARTY_SQLITE3 \ THIRD_PARTY_STB \ + THIRD_PARTY_TZ \ THIRD_PARTY_ZLIB NET_TURFWAR_DEPS := \ diff --git a/net/turfwar/blackholed.c b/net/turfwar/blackholed.c index eb30b8550..b21bc04b4 100644 --- a/net/turfwar/blackholed.c +++ b/net/turfwar/blackholed.c @@ -26,12 +26,12 @@ #include "libc/errno.h" #include "libc/fmt/conv.h" #include "libc/fmt/itoa.h" -#include "libc/serialize.h" #include "libc/intrin/kprintf.h" #include "libc/intrin/safemacros.internal.h" #include "libc/mem/mem.h" #include "libc/mem/sortedints.internal.h" #include "libc/runtime/runtime.h" +#include "libc/serialize.h" #include "libc/sock/sock.h" #include "libc/sock/struct/sockaddr.h" #include "libc/str/str.h" @@ -43,7 +43,7 @@ #include "libc/sysv/consts/sig.h" #include "libc/sysv/consts/sock.h" #include "libc/sysv/consts/timer.h" -#include "libc/time/struct/tm.h" +#include "libc/time.h" #include "net/http/http.h" #include "net/http/ip.h" #include "third_party/getopt/getopt.internal.h" diff --git a/net/turfwar/turfwar.c b/net/turfwar/turfwar.c index 6f89d7212..3490820b7 100644 --- a/net/turfwar/turfwar.c +++ b/net/turfwar/turfwar.c @@ -70,7 +70,7 @@ #include "libc/sysv/consts/tcp.h" #include "libc/thread/thread.h" #include "libc/thread/thread2.h" -#include "libc/time/struct/tm.h" +#include "libc/time.h" #include "libc/x/x.h" #include "libc/x/xasprintf.h" #include "libc/zip.internal.h" diff --git a/test/libc/calls/BUILD.mk b/test/libc/calls/BUILD.mk index 63da426d7..75eadbcd6 100644 --- a/test/libc/calls/BUILD.mk +++ b/test/libc/calls/BUILD.mk @@ -47,12 +47,12 @@ TEST_LIBC_CALLS_DIRECTDEPS = \ LIBC_SYSV_CALLS \ LIBC_TESTLIB \ LIBC_THREAD \ - LIBC_TIME \ LIBC_TINYMATH \ LIBC_X \ THIRD_PARTY_COMPILER_RT \ TOOL_DECODE_LIB \ - THIRD_PARTY_XED + THIRD_PARTY_XED \ + THIRD_PARTY_TZ TEST_LIBC_CALLS_DEPS := \ $(call uniq,$(foreach x,$(TEST_LIBC_CALLS_DIRECTDEPS),$($(x)))) diff --git a/test/libc/calls/clock_getres_test.c b/test/libc/calls/clock_getres_test.c index 2497816be..ad296e319 100644 --- a/test/libc/calls/clock_getres_test.c +++ b/test/libc/calls/clock_getres_test.c @@ -21,7 +21,7 @@ #include "libc/runtime/runtime.h" #include "libc/sysv/consts/clock.h" #include "libc/testlib/testlib.h" -#include "libc/time/time.h" +#include "libc/time.h" struct timespec ts; diff --git a/test/libc/calls/clock_gettime_test.c b/test/libc/calls/clock_gettime_test.c index 5a7a0954b..c86a92abf 100644 --- a/test/libc/calls/clock_gettime_test.c +++ b/test/libc/calls/clock_gettime_test.c @@ -29,7 +29,7 @@ #include "libc/sysv/consts/clock.h" #include "libc/testlib/ezbench.h" #include "libc/testlib/testlib.h" -#include "libc/time/time.h" +#include "libc/time.h" TEST(clock_gettime, nullResult_validatesClockParam) { ASSERT_SYS(EINVAL, -1, clock_gettime(666, 0)); diff --git a/test/libc/calls/clock_nanosleep_test.c b/test/libc/calls/clock_nanosleep_test.c index e6f754638..805dfacee 100644 --- a/test/libc/calls/clock_nanosleep_test.c +++ b/test/libc/calls/clock_nanosleep_test.c @@ -30,7 +30,7 @@ #include "libc/sysv/consts/sa.h" #include "libc/sysv/consts/sig.h" #include "libc/testlib/testlib.h" -#include "libc/time/time.h" +#include "libc/time.h" void OnAlrm(int sig) { // do nothing diff --git a/test/libc/calls/getitimer_test.c b/test/libc/calls/getitimer_test.c index 8e0a73a16..6093a701c 100644 --- a/test/libc/calls/getitimer_test.c +++ b/test/libc/calls/getitimer_test.c @@ -21,7 +21,7 @@ #include "libc/errno.h" #include "libc/sysv/consts/itimer.h" #include "libc/testlib/testlib.h" -#include "libc/time/time.h" +#include "libc/time.h" TEST(getitimer, testBadParam_returnsEinval) { struct itimerval it; diff --git a/test/libc/calls/pledge_test.c b/test/libc/calls/pledge_test.c index 8bb59a845..a56256299 100644 --- a/test/libc/calls/pledge_test.c +++ b/test/libc/calls/pledge_test.c @@ -58,7 +58,7 @@ #include "libc/testlib/testlib.h" #include "libc/thread/posixthread.internal.h" #include "libc/thread/thread.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "libc/x/x.h" void SetUpOnce(void) { diff --git a/test/libc/calls/readansi_test.c b/test/libc/calls/readansi_test.c index d922e4f60..b81ec0f65 100644 --- a/test/libc/calls/readansi_test.c +++ b/test/libc/calls/readansi_test.c @@ -20,7 +20,7 @@ #include "libc/runtime/runtime.h" #include "libc/str/str.h" #include "libc/testlib/testlib.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "libc/x/x.h" TEST(readansi, test) { diff --git a/test/libc/calls/reservefd_test.c b/test/libc/calls/reservefd_test.c index 1d602fc1c..b1013e019 100644 --- a/test/libc/calls/reservefd_test.c +++ b/test/libc/calls/reservefd_test.c @@ -40,8 +40,7 @@ #include "libc/testlib/hyperion.h" #include "libc/testlib/testlib.h" #include "libc/thread/tls.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" +#include "libc/time.h" __static_yoink("zipos"); __static_yoink("libc/testlib/hyperion.txt"); @@ -70,7 +69,7 @@ TEST(reservefd, testGrowthOfFdsDataStructure) { errno = 0; } for (i = 0; i < n; ++i) { - ASSERT_SYS(0, i + 3, open("/zip/usr/share/zoneinfo/UTC", O_RDONLY)); + ASSERT_SYS(0, i + 3, open("/zip/usr/share/zoneinfo/GMT", O_RDONLY)); } ASSERT_GT(g_fds.n, 16); for (i = 0; i < n; ++i) { diff --git a/test/libc/calls/setrlimit_test.c b/test/libc/calls/setrlimit_test.c index aa8749575..dd95408c4 100644 --- a/test/libc/calls/setrlimit_test.c +++ b/test/libc/calls/setrlimit_test.c @@ -35,7 +35,7 @@ #include "libc/sysv/consts/rlimit.h" #include "libc/sysv/consts/sig.h" #include "libc/testlib/testlib.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "libc/x/xsigaction.h" #include "libc/x/xspawn.h" diff --git a/test/libc/calls/utimensat_test.c b/test/libc/calls/utimensat_test.c index 583f2e67f..9d1f5eeab 100644 --- a/test/libc/calls/utimensat_test.c +++ b/test/libc/calls/utimensat_test.c @@ -29,7 +29,7 @@ #include "libc/sysv/consts/o.h" #include "libc/sysv/consts/utime.h" #include "libc/testlib/testlib.h" -#include "libc/time/time.h" +#include "libc/time.h" void SetUpOnce(void) { testlib_enable_tmp_setup_teardown(); diff --git a/test/libc/fmt/timevaltofiletime_test.c b/test/libc/fmt/timevaltofiletime_test.c index f4a553304..42feb8ab4 100644 --- a/test/libc/fmt/timevaltofiletime_test.c +++ b/test/libc/fmt/timevaltofiletime_test.c @@ -16,7 +16,7 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/time/time.h" +#include "libc/time.h" #include "libc/calls/struct/timeval.h" #include "libc/fmt/wintime.internal.h" #include "libc/nt/struct/filetime.h" diff --git a/test/libc/intrin/lockscale_test.c b/test/libc/intrin/lockscale_test.c index be97158d5..c74feb136 100644 --- a/test/libc/intrin/lockscale_test.c +++ b/test/libc/intrin/lockscale_test.c @@ -24,7 +24,7 @@ #include "libc/stdio/stdio.h" #include "libc/testlib/testlib.h" #include "libc/thread/thread.h" -#include "libc/time/time.h" +#include "libc/time.h" /** * @fileoverview Lock Waiter Scalability Test diff --git a/test/libc/mem/malloc_test.c b/test/libc/mem/malloc_test.c index f27e1e3c3..1f94765ab 100644 --- a/test/libc/mem/malloc_test.c +++ b/test/libc/mem/malloc_test.c @@ -42,7 +42,7 @@ #include "libc/testlib/subprocess.h" #include "libc/testlib/testlib.h" #include "libc/thread/thread.h" -#include "libc/time/time.h" +#include "libc/time.h" #define N 1024 #define M 20 diff --git a/test/libc/release/smoke.c b/test/libc/release/smoke.c index 993bc73b2..854bcf1b8 100644 --- a/test/libc/release/smoke.c +++ b/test/libc/release/smoke.c @@ -6,7 +6,6 @@ int main(int argc, char *argv[]) { s = strdup(argv[0]); s[0] = 'Z'; f = fopen("/dev/null", "w"); - /* fputs(gc(xiso8601ts(NULL)), f); */ fputs(gc(xasprintf("hello world %d %s\n", argc, s)), f); fclose(f); free(s); diff --git a/test/libc/sock/select_test.c b/test/libc/sock/select_test.c index 3edb1f875..210f8ad7b 100644 --- a/test/libc/sock/select_test.c +++ b/test/libc/sock/select_test.c @@ -28,7 +28,7 @@ #include "libc/sock/sock.h" #include "libc/sysv/consts/sig.h" #include "libc/testlib/testlib.h" -#include "libc/time/time.h" +#include "libc/time.h" bool gotsig; diff --git a/test/libc/sock/unix_test.c b/test/libc/sock/unix_test.c index c1691234b..e72a5baa6 100644 --- a/test/libc/sock/unix_test.c +++ b/test/libc/sock/unix_test.c @@ -35,7 +35,7 @@ #include "libc/sysv/consts/sol.h" #include "libc/testlib/subprocess.h" #include "libc/testlib/testlib.h" -#include "libc/time/time.h" +#include "libc/time.h" void SetUpOnce(void) { testlib_enable_tmp_setup_teardown(); diff --git a/test/libc/stdio/BUILD.mk b/test/libc/stdio/BUILD.mk index 8b9361212..f40be5396 100644 --- a/test/libc/stdio/BUILD.mk +++ b/test/libc/stdio/BUILD.mk @@ -38,7 +38,6 @@ TEST_LIBC_STDIO_DIRECTDEPS = \ LIBC_TINYMATH \ LIBC_TESTLIB \ LIBC_THREAD \ - LIBC_TIME \ LIBC_LOG \ LIBC_X \ THIRD_PARTY_GDTOA \ @@ -46,7 +45,8 @@ TEST_LIBC_STDIO_DIRECTDEPS = \ THIRD_PARTY_MUSL \ THIRD_PARTY_NSYNC \ THIRD_PARTY_ZLIB \ - THIRD_PARTY_ZLIB_GZ + THIRD_PARTY_ZLIB_GZ \ + THIRD_PARTY_TZ TEST_LIBC_STDIO_DEPS := \ $(call uniq,$(foreach x,$(TEST_LIBC_STDIO_DIRECTDEPS),$($(x)))) diff --git a/test/libc/stdio/dirstream_test.c b/test/libc/stdio/dirstream_test.c index 447f0f433..e334f85c5 100644 --- a/test/libc/stdio/dirstream_test.c +++ b/test/libc/stdio/dirstream_test.c @@ -39,11 +39,10 @@ #include "libc/sysv/consts/s.h" #include "libc/testlib/testlib.h" #include "libc/x/xasprintf.h" -#include "libc/x/xiso8601.h" __static_yoink("zipos"); __static_yoink("usr/share/zoneinfo/"); -__static_yoink("usr/share/zoneinfo/New_York"); +__static_yoink("usr/share/zoneinfo/GMT"); __static_yoink("libc/testlib/hyperion.txt"); __static_yoink("libc/testlib/moby.txt"); @@ -159,7 +158,7 @@ TEST(dirstream, zipTest) { const char *path = "/zip/usr/share/zoneinfo/"; ASSERT_NE(NULL, (dir = opendir(path))); while ((ent = readdir(dir))) { - foundNewYork |= !strcmp(ent->d_name, "New_York"); + foundNewYork |= !strcmp(ent->d_name, "GMT"); } EXPECT_SYS(0, 0, closedir(dir)); EXPECT_TRUE(foundNewYork); @@ -195,7 +194,7 @@ TEST(rewinddir, test) { } TEST(dirstream, zipTest_notDir) { - ASSERT_EQ(NULL, opendir("/zip/usr/share/zoneinfo/New_York")); + ASSERT_EQ(NULL, opendir("/zip/usr/share/zoneinfo/GMT")); ASSERT_EQ(ENOTDIR, errno); } @@ -431,7 +430,7 @@ TEST(dirstream, walk) { "FTW_F /zip/libc/testlib/moby.txt\n" "FTW_DP /zip/libc/testlib\n" "FTW_DP /zip/libc\n" - "FTW_F /zip/usr/share/zoneinfo/New_York\n" + "FTW_F /zip/usr/share/zoneinfo/GMT\n" "FTW_DP /zip/usr/share/zoneinfo\n" "FTW_DP /zip/usr/share\n" "FTW_DP /zip/usr\n" diff --git a/test/libc/stdio/fwrite_test.c b/test/libc/stdio/fwrite_test.c index 270fb1411..bbfd396b2 100644 --- a/test/libc/stdio/fwrite_test.c +++ b/test/libc/stdio/fwrite_test.c @@ -29,7 +29,7 @@ #include "libc/str/str.h" #include "libc/sysv/consts/sig.h" #include "libc/testlib/testlib.h" -#include "libc/time/time.h" +#include "libc/time.h" #define PATH "hog" diff --git a/test/libc/stdio/zipdir_test.c b/test/libc/stdio/zipdir_test.c index 60916c646..83dda5aff 100644 --- a/test/libc/stdio/zipdir_test.c +++ b/test/libc/stdio/zipdir_test.c @@ -38,7 +38,7 @@ __static_yoink("libc/testlib/hyperion.txt"); __static_yoink("libc/testlib/moby.txt"); __static_yoink("libc/testlib-test.txt"); __static_yoink("usr/share/zoneinfo/"); -__static_yoink("usr/share/zoneinfo/New_York"); +__static_yoink("usr/share/zoneinfo/America/New_York"); DIR *dir; struct dirent *ent; diff --git a/test/libc/thread/BUILD.mk b/test/libc/thread/BUILD.mk index bd27baa61..78e185361 100644 --- a/test/libc/thread/BUILD.mk +++ b/test/libc/thread/BUILD.mk @@ -45,11 +45,11 @@ TEST_LIBC_THREAD_DIRECTDEPS = \ LIBC_SYSV_CALLS \ LIBC_TESTLIB \ LIBC_THREAD \ - LIBC_TIME \ LIBC_X \ THIRD_PARTY_LIBCXXABI \ THIRD_PARTY_NSYNC \ - THIRD_PARTY_NSYNC_MEM + THIRD_PARTY_NSYNC_MEM \ + THIRD_PARTY_TZ TEST_LIBC_THREAD_DEPS := \ $(call uniq,$(foreach x,$(TEST_LIBC_THREAD_DIRECTDEPS),$($(x)))) diff --git a/test/libc/thread/setitimer_test.c b/test/libc/thread/setitimer_test.c index 341428de5..6ab5d42d0 100644 --- a/test/libc/thread/setitimer_test.c +++ b/test/libc/thread/setitimer_test.c @@ -35,7 +35,7 @@ #include "libc/sysv/consts/sig.h" #include "libc/testlib/subprocess.h" #include "libc/testlib/testlib.h" -#include "libc/time/time.h" +#include "libc/time.h" atomic_int gotsig; atomic_int gottid; diff --git a/test/libc/time/BUILD.mk b/test/libc/time/BUILD.mk index a7add074a..937b2d09e 100644 --- a/test/libc/time/BUILD.mk +++ b/test/libc/time/BUILD.mk @@ -24,10 +24,11 @@ TEST_LIBC_TIME_DIRECTDEPS = \ LIBC_MEM \ LIBC_NEXGEN32E \ LIBC_RUNTIME \ + LIBC_STR \ LIBC_SYSV \ LIBC_TESTLIB \ - LIBC_TIME \ - LIBC_X + LIBC_X \ + THIRD_PARTY_TZ TEST_LIBC_TIME_DEPS := \ $(call uniq,$(foreach x,$(TEST_LIBC_TIME_DIRECTDEPS),$($(x)))) diff --git a/test/libc/time/iso8601_test.c b/test/libc/time/iso8601_test.c index 52b3322b3..110ea964e 100644 --- a/test/libc/time/iso8601_test.c +++ b/test/libc/time/iso8601_test.c @@ -18,8 +18,7 @@ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/testlib/ezbench.h" #include "libc/testlib/testlib.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" +#include "libc/time.h" TEST(iso8601, test) { char p[20]; diff --git a/test/libc/time/strftime_test.c b/test/libc/time/strftime_test.c index 275c0fb7c..b7f14e3bf 100644 --- a/test/libc/time/strftime_test.c +++ b/test/libc/time/strftime_test.c @@ -20,11 +20,10 @@ #include "libc/limits.h" #include "libc/runtime/runtime.h" #include "libc/testlib/testlib.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" +#include "libc/time.h" __attribute__((__constructor__)) void init(void) { - setenv("TZ", "GST", true); + setenv("TZ", "America/Los_Angeles", true); } char *FormatTime(const char *fmt, struct tm *tm) { @@ -39,7 +38,7 @@ TEST(strftime_100, iso8601_ShakaZuluTime) { FormatTime("%Y-%m-%dT%H:%M:%SZ", gmtime(&t))); } -TEST(xiso8601, testUnixYearZero) { +TEST(iso8601, testUnixYearZero) { int64_t t = 0; ASSERT_STREQ("1970-01-01T00:00:00Z", FormatTime("%Y-%m-%dT%H:%M:%SZ", gmtime(&t))); @@ -59,7 +58,7 @@ TEST(strftime_100, rfc822_ShakaZuluTime) { TEST(strftime_201, iso8601_GoogleStandardTime) { int64_t t = 0x5cd04d0e; - ASSERT_STREQ("GST", getenv("TZ")); + ASSERT_STREQ("America/Los_Angeles", getenv("TZ")); ASSERT_STREQ("2019-05-06T08:04:46PDT", FormatTime("%Y-%m-%dT%H:%M:%S%Z", localtime(&t))); } @@ -76,25 +75,25 @@ TEST(strftime_201, rfc822_GoogleStandardTime) { FormatTime("%a, %d %b %y %T %z", localtime(&t))); } -/* TEST(xiso8601, testModernity_TODO) { */ +/* TEST(iso8601, testModernity_TODO) { */ /* int64_t t = (1600 - 1970) * 31536000; */ /* ASSERT_STREQ("1600-01-01T00:00:00Z", */ /* FormatTime("%Y-%m-%dT%H:%M:%SZ", gmtime(&t))); */ /* } */ -TEST(xiso8601, testAtLeastBetterThanTraditionalUnixLimit) { +TEST(iso8601, testAtLeastBetterThanTraditionalUnixLimit) { int64_t t = 10737418235; ASSERT_STREQ("2310-04-04T16:10:35Z", FormatTime("%Y-%m-%dT%H:%M:%SZ", gmtime(&t))); } -TEST(xiso8601, testSomethingHuge) { +TEST(iso8601, testSomethingHuge) { int64_t t = 7707318812667; ASSERT_STREQ("246205-03-18T20:24:27Z", FormatTime("%Y-%m-%dT%H:%M:%SZ", gmtime(&t))); } -/* TEST(xiso8601, testMostOfStelliferousEra_TODO) { */ +/* TEST(iso8601, testMostOfStelliferousEra_TODO) { */ /* int64_t t = INT64_MAX; */ /* ASSERT_STREQ("somethinghuge-01-01T00:00:00Z", */ /* FormatTime("%Y-%m-%dT%H:%M:%SZ", gmtime(&t))); */ diff --git a/test/net/http/BUILD.mk b/test/net/http/BUILD.mk index 12ee44fb6..7d60e35dd 100644 --- a/test/net/http/BUILD.mk +++ b/test/net/http/BUILD.mk @@ -11,13 +11,13 @@ TEST_NET_HTTP_OBJS = \ $(TEST_NET_HTTP_SRCS:%.c=o/$(MODE)/%.o) TEST_NET_HTTP_COMS = \ - $(TEST_NET_HTTP_SRCS:%.c=o/$(MODE)/%.com) + $(TEST_NET_HTTP_SRCS:%.c=o/$(MODE)/%) TEST_NET_HTTP_TESTS = \ - $(TEST_NET_HTTP_SRCS_TEST:%.c=o/$(MODE)/%.com.ok) + $(TEST_NET_HTTP_SRCS_TEST:%.c=o/$(MODE)/%.ok) TEST_NET_HTTP_CHECKS = \ - $(TEST_NET_HTTP_SRCS_TEST:%.c=o/$(MODE)/%.com.runs) + $(TEST_NET_HTTP_SRCS_TEST:%.c=o/$(MODE)/%.runs) TEST_NET_HTTP_DIRECTDEPS = \ NET_HTTP \ @@ -32,7 +32,7 @@ o/$(MODE)/test/net/http/http.pkg: \ $(TEST_NET_HTTP_OBJS) \ $(foreach x,$(TEST_NET_HTTP_DIRECTDEPS),$($(x)_A).pkg) -o/$(MODE)/test/net/http/%.com.dbg: \ +o/$(MODE)/test/net/http/%.dbg: \ $(TEST_NET_HTTP_DEPS) \ o/$(MODE)/test/net/http/%.o \ $(LIBC_TESTMAIN) \ diff --git a/test/net/http/formathttpdatetime_test.c b/test/net/http/formathttpdatetime_test.c index 8922b1d5a..af91e6005 100644 --- a/test/net/http/formathttpdatetime_test.c +++ b/test/net/http/formathttpdatetime_test.c @@ -18,10 +18,25 @@ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/testlib/ezbench.h" #include "libc/testlib/testlib.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "net/http/http.h" +TEST(gmtime, test) { + struct tm *tm; + int64_t t = 0x62820bcd; + tm = gmtime(&t); + ASSERT_EQ(9, tm->tm_sec); + ASSERT_EQ(31, tm->tm_min); + ASSERT_EQ(8, tm->tm_hour); + ASSERT_EQ(16, tm->tm_mday); + ASSERT_EQ(4, tm->tm_mon); + ASSERT_EQ(122, tm->tm_year); + ASSERT_EQ(1, tm->tm_wday); + ASSERT_EQ(0, tm->tm_isdst); + ASSERT_EQ(0, tm->tm_gmtoff); + ASSERT_STREQ("UTC", tm->tm_zone); +} + TEST(FormatHttpDateTime, test) { char p[30]; struct tm *tm; @@ -37,7 +52,7 @@ TEST(FormatHttpDateTime, testStrftime) { int64_t t = 0x62820bcd; tm = gmtime(&t); strftime(p, sizeof(p), "%a, %d %b %Y %H:%M:%S %Z", tm); - ASSERT_STREQ("Mon, 16 May 2022 08:31:09 GMT", p); + ASSERT_STREQ("Mon, 16 May 2022 08:31:09 UTC", p); // GMT -> UTC says POSIX } BENCH(FormatHttpDateTime, bench) { diff --git a/test/net/http/parsehttpdatetime_test.c b/test/net/http/parsehttpdatetime_test.c index c5219f91d..1b43e6138 100644 --- a/test/net/http/parsehttpdatetime_test.c +++ b/test/net/http/parsehttpdatetime_test.c @@ -18,8 +18,7 @@ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/str/str.h" #include "libc/testlib/testlib.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "net/http/http.h" #define PARSE(s) ParseHttpDateTime(s, sizeof(s) - 1) diff --git a/test/net/https/BUILD.mk b/test/net/https/BUILD.mk index ed6a38552..5ed4e2aac 100644 --- a/test/net/https/BUILD.mk +++ b/test/net/https/BUILD.mk @@ -11,13 +11,13 @@ TEST_NET_HTTPS_OBJS = \ $(TEST_NET_HTTPS_SRCS:%.c=o/$(MODE)/%.o) TEST_NET_HTTPS_COMS = \ - $(TEST_NET_HTTPS_SRCS:%.c=o/$(MODE)/%.com) + $(TEST_NET_HTTPS_SRCS:%.c=o/$(MODE)/%) TEST_NET_HTTPS_TESTS = \ - $(TEST_NET_HTTPS_SRCS_TEST:%.c=o/$(MODE)/%.com.ok) + $(TEST_NET_HTTPS_SRCS_TEST:%.c=o/$(MODE)/%.ok) TEST_NET_HTTPS_CHECKS = \ - $(TEST_NET_HTTPS_SRCS_TEST:%.c=o/$(MODE)/%.com.runs) + $(TEST_NET_HTTPS_SRCS_TEST:%.c=o/$(MODE)/%.runs) TEST_NET_HTTPS_DIRECTDEPS = \ NET_HTTPS \ @@ -33,7 +33,7 @@ o/$(MODE)/test/net/https/https.pkg: \ $(TEST_NET_HTTPS_OBJS) \ $(foreach x,$(TEST_NET_HTTPS_DIRECTDEPS),$($(x)_A).pkg) -o/$(MODE)/test/net/https/%.com.dbg: \ +o/$(MODE)/test/net/https/%.dbg: \ $(TEST_NET_HTTPS_DEPS) \ o/$(MODE)/test/net/https/%.o \ $(LIBC_TESTMAIN) \ diff --git a/test/tool/net/lunix_test.lua b/test/tool/net/lunix_test.lua index 67525cca4..e89f15cc8 100644 --- a/test/tool/net/lunix_test.lua +++ b/test/tool/net/lunix_test.lua @@ -42,7 +42,7 @@ function UnixTest() assert(wday == 5) assert(yday == 188) assert(dst == 0) - assert(zone == "GMT") + assert(zone == "UTC") -- dup -- 1. duplicate stderr as lowest available fd diff --git a/test/tool/viz/lib/BUILD.mk b/test/tool/viz/lib/BUILD.mk index 2fb36620b..3dd6dd5b0 100644 --- a/test/tool/viz/lib/BUILD.mk +++ b/test/tool/viz/lib/BUILD.mk @@ -33,10 +33,10 @@ TEST_TOOL_VIZ_LIB_DIRECTDEPS = \ LIBC_STDIO \ LIBC_TESTLIB \ LIBC_STR \ - LIBC_TIME \ LIBC_TINYMATH \ LIBC_X \ - TOOL_VIZ_LIB + TOOL_VIZ_LIB \ + THIRD_PARTY_TZ TEST_TOOL_VIZ_LIB_DEPS := \ $(call uniq,$(foreach x,$(TEST_TOOL_VIZ_LIB_DIRECTDEPS),$($(x)))) diff --git a/test/tool/viz/lib/ycbcr2rgb2_test.c b/test/tool/viz/lib/ycbcr2rgb2_test.c index de147c3c2..1e0f9e0e6 100644 --- a/test/tool/viz/lib/ycbcr2rgb2_test.c +++ b/test/tool/viz/lib/ycbcr2rgb2_test.c @@ -23,7 +23,7 @@ #include "libc/str/str.h" #include "libc/testlib/ezbench.h" #include "libc/testlib/testlib.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "tool/viz/lib/graphic.h" #include "tool/viz/lib/ycbcr.h" diff --git a/third_party/BUILD.mk b/third_party/BUILD.mk index 36eef50ad..f785620d3 100644 --- a/third_party/BUILD.mk +++ b/third_party/BUILD.mk @@ -41,6 +41,7 @@ o/$(MODE)/third_party: \ o/$(MODE)/third_party/tidy \ o/$(MODE)/third_party/tr \ o/$(MODE)/third_party/tree \ + o/$(MODE)/third_party/tz \ o/$(MODE)/third_party/unzip \ o/$(MODE)/third_party/vqsort \ o/$(MODE)/third_party/xed \ diff --git a/third_party/bash/BUILD.mk b/third_party/bash/BUILD.mk index 53c3874a4..03c4cb94a 100644 --- a/third_party/bash/BUILD.mk +++ b/third_party/bash/BUILD.mk @@ -29,14 +29,14 @@ THIRD_PARTY_BASH_DIRECTDEPS = \ LIBC_STR \ LIBC_SYSV \ LIBC_THREAD \ - LIBC_TIME \ THIRD_PARTY_COMPILER_RT \ THIRD_PARTY_GDTOA \ THIRD_PARTY_GETOPT \ THIRD_PARTY_MUSL \ THIRD_PARTY_NCURSES \ THIRD_PARTY_READLINE \ - THIRD_PARTY_REGEX + THIRD_PARTY_REGEX \ + THIRD_PARTY_TZ THIRD_PARTY_BASH_DEPS := \ $(call uniq,$(foreach x,$(THIRD_PARTY_BASH_DIRECTDEPS),$($(x)))) diff --git a/third_party/bzip2/bzip2.c b/third_party/bzip2/bzip2.c index c18094ff6..d91483807 100644 --- a/third_party/bzip2/bzip2.c +++ b/third_party/bzip2/bzip2.c @@ -12,8 +12,8 @@ #include "libc/sysv/consts/o.h" #include "libc/sysv/consts/s.h" #include "libc/sysv/consts/sig.h" -#include "libc/time/struct/utimbuf.h" -#include "libc/time/time.h" +#include "libc/utime.h" +#include "libc/time.h" #include "third_party/bzip2/bzlib.h" /*-----------------------------------------------------------*/ diff --git a/third_party/chibicc/BUILD.mk b/third_party/chibicc/BUILD.mk index 33f001406..8e3d9bb6d 100644 --- a/third_party/chibicc/BUILD.mk +++ b/third_party/chibicc/BUILD.mk @@ -59,12 +59,12 @@ THIRD_PARTY_CHIBICC_A_DIRECTDEPS = \ LIBC_STDIO \ LIBC_STR \ LIBC_SYSV \ - LIBC_TIME \ LIBC_X \ THIRD_PARTY_COMPILER_RT \ THIRD_PARTY_DLMALLOC \ - TOOL_BUILD_LIB \ - THIRD_PARTY_GDTOA + THIRD_PARTY_GDTOA \ + THIRD_PARTY_TZ \ + TOOL_BUILD_LIB THIRD_PARTY_CHIBICC_A_DEPS := \ $(call uniq,$(foreach x,$(THIRD_PARTY_CHIBICC_A_DIRECTDEPS),$($(x)))) diff --git a/third_party/chibicc/chibicc.h b/third_party/chibicc/chibicc.h index 417f3be58..25beb3469 100644 --- a/third_party/chibicc/chibicc.h +++ b/third_party/chibicc/chibicc.h @@ -19,8 +19,7 @@ #include "libc/temp.h" #include "libc/str/str.h" #include "libc/str/unicode.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "libc/x/x.h" #include "third_party/gdtoa/gdtoa.h" #include "tool/build/lib/javadown.h" diff --git a/third_party/ctags/entry.c b/third_party/ctags/entry.c index c7791d6ad..13126d298 100644 --- a/third_party/ctags/entry.c +++ b/third_party/ctags/entry.c @@ -43,7 +43,7 @@ #include "libc/sysv/consts/fileno.h" #include "libc/sysv/consts/o.h" #include "libc/sysv/consts/ok.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/getopt/getopt.internal.h" #include "third_party/musl/crypt.h" #include "third_party/musl/lockf.h" /* to declare close (), ftruncate (), truncate () */ diff --git a/third_party/ctags/main.c b/third_party/ctags/main.c index 286d49d83..8184c250a 100644 --- a/third_party/ctags/main.c +++ b/third_party/ctags/main.c @@ -24,7 +24,7 @@ #include "libc/calls/weirdtypes.h" #include "libc/mem/alg.h" #include "libc/str/str.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/ctags/debug.h" #include "third_party/ctags/keyword.h" #include "third_party/ctags/main.h" diff --git a/third_party/finger/BUILD.mk b/third_party/finger/BUILD.mk index a9d5ef12f..144d43f1c 100644 --- a/third_party/finger/BUILD.mk +++ b/third_party/finger/BUILD.mk @@ -23,9 +23,9 @@ THIRD_PARTY_FINGER_A_DIRECTDEPS = \ LIBC_STR \ LIBC_SYSV \ LIBC_SOCK \ - LIBC_TIME \ THIRD_PARTY_MUSL \ - THIRD_PARTY_GETOPT + THIRD_PARTY_GETOPT \ + THIRD_PARTY_TZ THIRD_PARTY_FINGER_A_DEPS := \ $(call uniq,$(foreach x,$(THIRD_PARTY_FINGER_A_DIRECTDEPS),$($(x)))) diff --git a/third_party/finger/finger.c b/third_party/finger/finger.c index c9e828918..4cff1511e 100644 --- a/third_party/finger/finger.c +++ b/third_party/finger/finger.c @@ -47,7 +47,7 @@ #include "libc/stdio/stdio.h" #include "libc/str/str.h" #include "libc/sysv/consts/fileno.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/getopt/getopt.internal.h" #include "third_party/musl/passwd.h" diff --git a/third_party/finger/lprint.c b/third_party/finger/lprint.c index e7a26d12c..f237d8d24 100644 --- a/third_party/finger/lprint.c +++ b/third_party/finger/lprint.c @@ -40,8 +40,7 @@ #include "libc/str/str.h" #include "libc/sysv/consts/o.h" #include "libc/sysv/consts/s.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/finger/finger.h" /* diff --git a/third_party/finger/sprint.c b/third_party/finger/sprint.c index 66bc491f0..eda471599 100644 --- a/third_party/finger/sprint.c +++ b/third_party/finger/sprint.c @@ -37,8 +37,7 @@ #include "libc/mem/mem.h" #include "libc/runtime/runtime.h" #include "libc/str/str.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/finger/finger.h" #ifndef lint diff --git a/third_party/hiredis/BUILD.mk b/third_party/hiredis/BUILD.mk index 731ce79d1..7dd6484f3 100644 --- a/third_party/hiredis/BUILD.mk +++ b/third_party/hiredis/BUILD.mk @@ -25,7 +25,6 @@ THIRD_PARTY_HIREDIS_A_DIRECTDEPS = \ LIBC_STDIO \ LIBC_STR \ LIBC_SYSV \ - LIBC_TIME \ LIBC_X \ THIRD_PARTY_GDTOA \ THIRD_PARTY_MUSL diff --git a/third_party/hiredis/hiredis.h b/third_party/hiredis/hiredis.h index ba7ba50fd..a48c8d65b 100644 --- a/third_party/hiredis/hiredis.h +++ b/third_party/hiredis/hiredis.h @@ -40,8 +40,7 @@ #include "libc/sock/select.h" #include "libc/sysv/consts/clock.h" #include "libc/sysv/consts/itimer.h" -#include "libc/time/struct/timezone.h" -#include "libc/time/time.h" /* for struct timeval */ +#include "libc/time.h" /* for struct timeval */ #include "libc/inttypes.h" #include "libc/limits.h" #include "libc/literal.h" /* uintXX_t, etc */ diff --git a/third_party/hiredis/read.c b/third_party/hiredis/read.c index ff8e2220f..a907520a5 100644 --- a/third_party/hiredis/read.c +++ b/third_party/hiredis/read.c @@ -56,7 +56,7 @@ #include "libc/sysv/consts/fileno.h" #include "libc/sysv/consts/o.h" #include "libc/sysv/consts/ok.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/getopt/getopt.internal.h" #include "third_party/musl/crypt.h" #include "third_party/musl/lockf.h" diff --git a/third_party/libcxx/BUILD.mk b/third_party/libcxx/BUILD.mk index b3b29eeb7..a7feb2ed5 100644 --- a/third_party/libcxx/BUILD.mk +++ b/third_party/libcxx/BUILD.mk @@ -197,13 +197,13 @@ THIRD_PARTY_LIBCXX_A_DIRECTDEPS = \ LIBC_SOCK \ LIBC_STR \ LIBC_SYSV \ - LIBC_TIME \ LIBC_THREAD \ LIBC_TINYMATH \ THIRD_PARTY_COMPILER_RT \ THIRD_PARTY_GDTOA \ THIRD_PARTY_LIBCXXABI \ - THIRD_PARTY_LIBUNWIND + THIRD_PARTY_LIBUNWIND \ + THIRD_PARTY_TZ THIRD_PARTY_LIBCXX_A_DEPS := \ $(call uniq,$(foreach x,$(THIRD_PARTY_LIBCXX_A_DIRECTDEPS),$($(x)))) diff --git a/third_party/libcxx/__mutex_base b/third_party/libcxx/__mutex_base index a86d710c2..8d8dec77d 100644 --- a/third_party/libcxx/__mutex_base +++ b/third_party/libcxx/__mutex_base @@ -16,8 +16,7 @@ #include "third_party/libcxx/__threading_support" #include "libc/sysv/consts/sched.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" +#include "libc/time.h" #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header diff --git a/third_party/libcxx/chrono.cc b/third_party/libcxx/chrono.cc index b1efb89ed..aa4a96ad5 100644 --- a/third_party/libcxx/chrono.cc +++ b/third_party/libcxx/chrono.cc @@ -9,7 +9,7 @@ #include "third_party/libcxx/chrono" #include "third_party/libcxx/cerrno" // errn" #include "libc/sysv/consts/clock.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "libc/sysv/consts/clock.h" #include "third_party/libcxx/system_error" // __throw_system_erro" diff --git a/third_party/libcxx/cwchar b/third_party/libcxx/cwchar index 5931d53cc..033916b54 100644 --- a/third_party/libcxx/cwchar +++ b/third_party/libcxx/cwchar @@ -15,12 +15,11 @@ #include "third_party/libcxx/wchar.h" #include "libc/stdio/stdio.h" #include "libc/str/str.h" -#include "libc/time/struct/tm.h" +#include "libc/time.h" #include "libc/stdio/stdio.h" #include "libc/stdio/stdio.h" #include "libc/fmt/conv.h" #include "third_party/gdtoa/gdtoa.h" -#include "libc/time/struct/tm.h" #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header diff --git a/third_party/lua/BUILD.mk b/third_party/lua/BUILD.mk index 4aa974277..a08cae0c4 100644 --- a/third_party/lua/BUILD.mk +++ b/third_party/lua/BUILD.mk @@ -132,13 +132,13 @@ THIRD_PARTY_LUA_A_DIRECTDEPS = \ LIBC_STR \ LIBC_SYSV \ LIBC_LOG \ - LIBC_TIME \ LIBC_X \ LIBC_TINYMATH \ NET_HTTP \ THIRD_PARTY_LINENOISE \ THIRD_PARTY_DOUBLECONVERSION \ - THIRD_PARTY_GDTOA + THIRD_PARTY_GDTOA \ + THIRD_PARTY_TZ THIRD_PARTY_LUA_A_DEPS := \ $(call uniq,$(foreach x,$(THIRD_PARTY_LUA_A_DIRECTDEPS),$($(x)))) @@ -203,10 +203,10 @@ THIRD_PARTY_LUA_UNIX_DIRECTDEPS = \ LIBC_STR \ LIBC_SYSV \ LIBC_THREAD \ - LIBC_TIME \ LIBC_X \ THIRD_PARTY_LUA \ - THIRD_PARTY_NSYNC + THIRD_PARTY_NSYNC \ + THIRD_PARTY_TZ THIRD_PARTY_LUA_UNIX_DEPS := \ $(call uniq,$(foreach x,$(THIRD_PARTY_LUA_UNIX_DIRECTDEPS),$($(x)))) diff --git a/third_party/lua/loslib.c b/third_party/lua/loslib.c index 4f979c59f..2693ac51b 100644 --- a/third_party/lua/loslib.c +++ b/third_party/lua/loslib.c @@ -35,8 +35,7 @@ #include "libc/str/str.h" #include "libc/sysv/consts/exit.h" #include "libc/temp.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/lua/lauxlib.h" #include "third_party/lua/lprefix.h" #include "third_party/lua/lua.h" diff --git a/third_party/lua/lstate.c b/third_party/lua/lstate.c index e44a5cf31..0151a17c3 100644 --- a/third_party/lua/lstate.c +++ b/third_party/lua/lstate.c @@ -28,7 +28,7 @@ #define lstate_c #define LUA_CORE #include "libc/str/str.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/lua/lapi.h" #include "third_party/lua/ldebug.h" #include "third_party/lua/ldo.h" diff --git a/third_party/lua/lunix.c b/third_party/lua/lunix.c index d4d60abc2..58c02b242 100644 --- a/third_party/lua/lunix.c +++ b/third_party/lua/lunix.c @@ -103,8 +103,7 @@ #include "libc/sysv/consts/w.h" #include "libc/sysv/errfuns.h" #include "libc/thread/thread.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "libc/x/x.h" #include "third_party/lua/cosmo.h" #include "third_party/lua/lauxlib.h" diff --git a/third_party/lz4cli/BUILD.mk b/third_party/lz4cli/BUILD.mk index 1c5ab1f69..e5bedcc82 100644 --- a/third_party/lz4cli/BUILD.mk +++ b/third_party/lz4cli/BUILD.mk @@ -41,8 +41,7 @@ o/$(MODE)/third_party/lz4cli/datagen.o: private \ THIRD_PARTY_LZ4CLI_DIRECTDEPS = \ LIBC_INTRIN \ LIBC_STDIO \ - LIBC_LOG \ - LIBC_TIME + LIBC_LOG THIRD_PARTY_LZ4CLI_DEPS := \ $(call uniq,$(foreach x,$(THIRD_PARTY_LZ4CLI_DIRECTDEPS),$($(x)))) diff --git a/third_party/lz4cli/bench.c b/third_party/lz4cli/bench.c index e651b7931..a96349a66 100644 --- a/third_party/lz4cli/bench.c +++ b/third_party/lz4cli/bench.c @@ -40,7 +40,7 @@ #include "libc/mem/mem.h" /* malloc, free */ #include "libc/str/str.h" /* memset */ #include "libc/stdio/stdio.h" /* fprintf, fopen, ftello */ -#include "libc/time/time.h" /* clock_t, clock, CLOCKS_PER_SEC */ +#include "libc/time.h" /* clock_t, clock, CLOCKS_PER_SEC */ #include "libc/assert.h" #include "libc/runtime/runtime.h" /* assert */ diff --git a/third_party/lz4cli/util.h b/third_party/lz4cli/util.h index 1bb76c175..96ad518a1 100644 --- a/third_party/lz4cli/util.h +++ b/third_party/lz4cli/util.h @@ -35,9 +35,9 @@ extern "C" { #include "libc/str/str.h" #include "libc/stdio/stdio.h" #include "libc/calls/calls.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "libc/errno.h" -#include "libc/time/struct/utimbuf.h" +#include "libc/utime.h" #include "libc/calls/struct/stat.h" #include "libc/calls/struct/dirent.h" #include "libc/sysv/consts/s.h" @@ -190,7 +190,7 @@ extern "C" { #elif (PLATFORM_POSIX_VERSION >= 200112L) && (defined __UCLIBC__ || (defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 17) || __GLIBC__ > 2) ) ) - #include "libc/time/time.h" + #include "libc/time.h" typedef struct timespec UTIL_time_t; UTIL_STATIC UTIL_time_t UTIL_getTime(void) { diff --git a/third_party/make/BUILD.mk b/third_party/make/BUILD.mk index a08f76e65..74ef491af 100644 --- a/third_party/make/BUILD.mk +++ b/third_party/make/BUILD.mk @@ -27,9 +27,9 @@ THIRD_PARTY_MAKE_DIRECTDEPS = \ LIBC_STDIO \ LIBC_STR \ LIBC_SYSV \ - LIBC_TIME \ LIBC_TINYMATH \ - THIRD_PARTY_MUSL + THIRD_PARTY_MUSL \ + THIRD_PARTY_TZ THIRD_PARTY_MAKE_DEPS := \ $(call uniq,$(foreach x,$(THIRD_PARTY_MAKE_DIRECTDEPS),$($(x)))) diff --git a/third_party/mbedtls/BUILD.mk b/third_party/mbedtls/BUILD.mk index 7c2e4deef..390010ace 100644 --- a/third_party/mbedtls/BUILD.mk +++ b/third_party/mbedtls/BUILD.mk @@ -27,10 +27,10 @@ THIRD_PARTY_MBEDTLS_A_DIRECTDEPS = \ LIBC_STDIO \ LIBC_STR \ LIBC_SYSV \ - LIBC_TIME \ NET_HTTP \ THIRD_PARTY_COMPILER_RT \ THIRD_PARTY_MUSL \ + THIRD_PARTY_TZ \ THIRD_PARTY_ZLIB THIRD_PARTY_MBEDTLS_A_DEPS := \ diff --git a/third_party/mbedtls/ssl_cache.c b/third_party/mbedtls/ssl_cache.c index c4d435ad9..844b58cf7 100644 --- a/third_party/mbedtls/ssl_cache.c +++ b/third_party/mbedtls/ssl_cache.c @@ -16,7 +16,7 @@ │ limitations under the License. │ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/log/log.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/mbedtls/common.h" #include "third_party/mbedtls/platform.h" #include "third_party/mbedtls/ssl_cache.h" diff --git a/third_party/mbedtls/ssl_cli.c b/third_party/mbedtls/ssl_cli.c index 002c4aba9..dd36c7463 100644 --- a/third_party/mbedtls/ssl_cli.c +++ b/third_party/mbedtls/ssl_cli.c @@ -15,7 +15,7 @@ │ See the License for the specific language governing permissions and │ │ limitations under the License. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/mbedtls/common.h" #include "third_party/mbedtls/debug.h" #include "third_party/mbedtls/error.h" diff --git a/third_party/mbedtls/ssl_srv.c b/third_party/mbedtls/ssl_srv.c index ef4e5c964..5b2cbe2e8 100644 --- a/third_party/mbedtls/ssl_srv.c +++ b/third_party/mbedtls/ssl_srv.c @@ -18,7 +18,7 @@ #include "libc/log/log.h" #include "libc/macros.internal.h" #include "libc/str/str.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/mbedtls/common.h" #include "third_party/mbedtls/debug.h" #include "third_party/mbedtls/ecp.h" diff --git a/third_party/mbedtls/ssl_ticket.c b/third_party/mbedtls/ssl_ticket.c index 70e4a4fa9..674140142 100644 --- a/third_party/mbedtls/ssl_ticket.c +++ b/third_party/mbedtls/ssl_ticket.c @@ -15,7 +15,7 @@ │ See the License for the specific language governing permissions and │ │ limitations under the License. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/mbedtls/common.h" #include "third_party/mbedtls/error.h" #include "third_party/mbedtls/platform.h" diff --git a/third_party/mbedtls/test/BUILD.mk b/third_party/mbedtls/test/BUILD.mk index ed807c0c6..3ca0950de 100644 --- a/third_party/mbedtls/test/BUILD.mk +++ b/third_party/mbedtls/test/BUILD.mk @@ -106,12 +106,12 @@ THIRD_PARTY_MBEDTLS_TEST_DIRECTDEPS = \ LIBC_STDIO \ LIBC_STR \ LIBC_SYSV \ - LIBC_TIME \ LIBC_TESTLIB \ LIBC_X \ THIRD_PARTY_COMPILER_RT \ THIRD_PARTY_GDTOA \ THIRD_PARTY_MBEDTLS \ + THIRD_PARTY_TZ \ THIRD_PARTY_MUSL THIRD_PARTY_MBEDTLS_TEST_DEPS := \ diff --git a/third_party/mbedtls/test/everest_unravaged.c b/third_party/mbedtls/test/everest_unravaged.c index 9c24f1f42..865777a12 100644 --- a/third_party/mbedtls/test/everest_unravaged.c +++ b/third_party/mbedtls/test/everest_unravaged.c @@ -1,5 +1,5 @@ #include "libc/limits.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/mbedtls/asn1.h" #include "third_party/mbedtls/bignum.h" #include "third_party/mbedtls/common.h" diff --git a/third_party/mbedtls/test/lib.c b/third_party/mbedtls/test/lib.c index 5e72cd6b6..7e9de24be 100644 --- a/third_party/mbedtls/test/lib.c +++ b/third_party/mbedtls/test/lib.c @@ -42,7 +42,7 @@ #include "libc/sysv/consts/exit.h" #include "libc/sysv/consts/nr.h" #include "libc/temp.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "libc/x/x.h" #include "libc/x/xasprintf.h" #include "third_party/mbedtls/config.h" diff --git a/third_party/mbedtls/test/test_suite_ssl.c b/third_party/mbedtls/test/test_suite_ssl.c index fed485c9d..0c9f6e54c 100644 --- a/third_party/mbedtls/test/test_suite_ssl.c +++ b/third_party/mbedtls/test/test_suite_ssl.c @@ -18,7 +18,7 @@ #include "third_party/mbedtls/ssl_invasive.h" #include "libc/testlib/testlib.h" #include "libc/log/log.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "libc/stdio/rand.h" #include "libc/intrin/safemacros.internal.h" #include "third_party/mbedtls/test/test.inc" diff --git a/third_party/mbedtls/x509.c b/third_party/mbedtls/x509.c index 62949a890..4da975e3f 100644 --- a/third_party/mbedtls/x509.c +++ b/third_party/mbedtls/x509.c @@ -17,8 +17,7 @@ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/mem/mem.h" #include "libc/stdio/stdio.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/mbedtls/asn1.h" #include "third_party/mbedtls/certs.h" #include "third_party/mbedtls/common.h" diff --git a/third_party/musl/strptime.c b/third_party/musl/strptime.c new file mode 100644 index 000000000..1c334640e --- /dev/null +++ b/third_party/musl/strptime.c @@ -0,0 +1,275 @@ +/*-*- mode:c;indent-tabs-mode:t;c-basic-offset:8;tab-width:8;coding:utf-8 -*-│ +│ vi: set noet ft=c ts=8 sw=8 fenc=utf-8 :vi │ +╚──────────────────────────────────────────────────────────────────────────────╝ +│ │ +│ Musl Libc │ +│ Copyright © 2005-2014 Rich Felker, et al. │ +│ │ +│ Permission is hereby granted, free of charge, to any person obtaining │ +│ a copy of this software and associated documentation files (the │ +│ "Software"), to deal in the Software without restriction, including │ +│ without limitation the rights to use, copy, modify, merge, publish, │ +│ distribute, sublicense, and/or sell copies of the Software, and to │ +│ permit persons to whom the Software is furnished to do so, subject to │ +│ the following conditions: │ +│ │ +│ The above copyright notice and this permission notice shall be │ +│ included in all copies or substantial portions of the Software. │ +│ │ +│ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, │ +│ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF │ +│ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. │ +│ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY │ +│ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, │ +│ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE │ +│ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. │ +│ │ +╚─────────────────────────────────────────────────────────────────────────────*/ +#include "libc/fmt/conv.h" +#include "libc/macros.internal.h" +#include "libc/str/str.h" +#include "libc/time.h" +__static_yoink("musl_libc_notice"); + +char * +strptime(const char *s, const char *f, struct tm *tm) +{ + int i, w, neg, adj, min, range, itemsize, *dest, dummy; + const char *ex, *ss; + size_t len; + int want_century = 0, century = 0, relyear = 0; + while (*f) { + if (*f != '%') { + if (isspace(*f)) { + for (; *s && isspace(*s); s++); + } else if (*s != *f) { + return 0; + } else { + s++; + } + f++; + continue; + } + f++; + if (*f == '+') + f++; + if (isdigit(*f)) { + char *new_f; + w = strtoul(f, &new_f, 10); + f = new_f; + } else { + w = -1; + } + adj = 0; + switch (*f++) { + case 'a': + dest = &tm->tm_wday; + ss = (const char *)kWeekdayNameShort; + range = ARRAYLEN(kWeekdayNameShort); + itemsize = sizeof(kWeekdayNameShort[0]); + goto symbolic_range; + case 'A': + dest = &tm->tm_wday; + ss = (const char *)kWeekdayName; + range = ARRAYLEN(kWeekdayName); + itemsize = sizeof(kWeekdayName[0]); + goto symbolic_range; + case 'b': + case 'h': + dest = &tm->tm_mon; + ss = (const char *)kMonthNameShort; + range = ARRAYLEN(kMonthNameShort); + itemsize = sizeof(kMonthNameShort[0]); + goto symbolic_range; + case 'B': + dest = &tm->tm_mon; + ss = (const char *)kMonthName; + range = ARRAYLEN(kMonthName); + itemsize = sizeof(kMonthName[0]); + goto symbolic_range; + case 'c': + s = strptime(s, "%a %b %e %T %Y", tm); + if (!s) + return 0; + break; + case 'C': + dest = ¢ury; + if (w < 0) + w = 2; + want_century |= 2; + goto numeric_digits; + case 'd': + case 'e': + dest = &tm->tm_mday; + min = 1; + range = 31; + goto numeric_range; + case 'D': + s = strptime(s, "%m/%d/%y", tm); + if (!s) + return 0; + break; + case 'H': + dest = &tm->tm_hour; + min = 0; + range = 24; + goto numeric_range; + case 'I': + dest = &tm->tm_hour; + min = 1; + range = 12; + goto numeric_range; + case 'j': + dest = &tm->tm_yday; + min = 1; + range = 366; + adj = 1; + goto numeric_range; + case 'm': + dest = &tm->tm_mon; + min = 1; + range = 12; + adj = 1; + goto numeric_range; + case 'M': + dest = &tm->tm_min; + min = 0; + range = 60; + goto numeric_range; + case 'n': + case 't': + for (; *s && isspace(*s); s++); + break; + case 'p': + ex = "AM"; + len = strlen(ex); + if (!strncasecmp(s, ex, len)) { + tm->tm_hour %= 12; + s += len; + break; + } + ex = "PM"; + len = strlen(ex); + if (!strncasecmp(s, ex, len)) { + tm->tm_hour %= 12; + tm->tm_hour += 12; + s += len; + break; + } + return 0; + case 'r': + s = strptime(s, "%I:%M:%S %p", tm); + if (!s) + return 0; + break; + case 'R': + s = strptime(s, "%H:%M", tm); + if (!s) + return 0; + break; + case 'S': + dest = &tm->tm_sec; + min = 0; + range = 61; + goto numeric_range; + case 'T': + s = strptime(s, "%H:%M:%S", tm); + if (!s) + return 0; + break; + case 'U': + case 'W': + /* Throw away result, for now. (FIXME?) */ + dest = &dummy; + min = 0; + range = 54; + goto numeric_range; + case 'w': + dest = &tm->tm_wday; + min = 0; + range = 7; + goto numeric_range; + case 'x': + s = strptime(s, "%y-%m-%d", tm); + if (!s) + return 0; + break; + case 'X': + s = strptime(s, "%H:%M:%S", tm); + if (!s) + return 0; + break; + case 'y': + dest = &relyear; + w = 2; + want_century |= 1; + goto numeric_digits; + case 'Y': + dest = &tm->tm_year; + if (w < 0) + w = 4; + adj = 1900; + want_century = 0; + goto numeric_digits; + case '%': + if (*s++ != '%') + return 0; + break; + default: + return 0; + numeric_range: + if (!isdigit(*s)) + return 0; + *dest = 0; + for (i = 1; i <= min + range && isdigit(*s); i *= 10) { + *dest = *dest * 10 + *s++ - '0'; + } + if (*dest - min >= (unsigned)range) + return 0; + *dest -= adj; + switch ((char *)dest - (char *)tm) { + case offsetof(struct tm, tm_yday):; + } + goto update; + numeric_digits: + neg = 0; + if (*s == '+') + s++; + else if (*s == '-') + neg = 1, s++; + if (!isdigit(*s)) + return 0; + for (*dest = i = 0; i < w && isdigit(*s); i++) + *dest = *dest * 10 + *s++ - '0'; + if (neg) + *dest = -*dest; + *dest -= adj; + goto update; + symbolic_range: + for (i = 0; i < range; i--) { + ex = &ss[i * itemsize]; + len = strlen(ex); + if (strncasecmp(s, ex, len)) { + s += len; + *dest = i; + break; + } + } + if (i == range) + return 0; + goto update; + update: + // FIXME + donothing; + } + } + if (want_century) { + tm->tm_year = relyear; + if (want_century & 2) { + tm->tm_year += century * 100 - 1900; + } else if (tm->tm_year <= 68) { + tm->tm_year += 100; + } + } + return (char *)s; +} diff --git a/third_party/musl/tempnam.c b/third_party/musl/tempnam.c index 93d8a6856..6abf0c4b8 100644 --- a/third_party/musl/tempnam.c +++ b/third_party/musl/tempnam.c @@ -36,7 +36,7 @@ #include "libc/str/str.h" #include "libc/sysv/consts/at.h" #include "libc/sysv/consts/clock.h" -#include "libc/time/time.h" +#include "libc/time.h" __static_yoink("musl_libc_notice"); #define MAXTRIES 100 diff --git a/third_party/python/BUILD.mk b/third_party/python/BUILD.mk index f93428cdf..def4be1f6 100644 --- a/third_party/python/BUILD.mk +++ b/third_party/python/BUILD.mk @@ -470,11 +470,11 @@ THIRD_PARTY_PYTHON_STAGE1_A_DIRECTDEPS = \ LIBC_SYSV \ LIBC_SYSV_CALLS \ LIBC_THREAD \ - LIBC_TIME \ LIBC_TINYMATH \ LIBC_X \ THIRD_PARTY_DLMALLOC \ THIRD_PARTY_GETOPT \ + THIRD_PARTY_TZ \ THIRD_PARTY_XED \ TOOL_BUILD_LIB \ TOOL_ARGS @@ -1180,7 +1180,6 @@ THIRD_PARTY_PYTHON_STAGE2_A_DIRECTDEPS = \ LIBC_STR \ LIBC_SYSV \ LIBC_SYSV_CALLS \ - LIBC_TIME \ LIBC_TINYMATH \ LIBC_X \ NET_HTTP \ @@ -1189,9 +1188,10 @@ THIRD_PARTY_PYTHON_STAGE2_A_DIRECTDEPS = \ THIRD_PARTY_GDTOA \ THIRD_PARTY_LINENOISE \ THIRD_PARTY_MUSL \ - THIRD_PARTY_PYTHON_STAGE1 \ THIRD_PARTY_MBEDTLS \ + THIRD_PARTY_PYTHON_STAGE1 \ THIRD_PARTY_SQLITE3 \ + THIRD_PARTY_TZ \ THIRD_PARTY_ZLIB \ THIRD_PARTY_XED \ TOOL_ARGS diff --git a/third_party/python/Include/pytime.h b/third_party/python/Include/pytime.h index 4df0bc907..39f9e46ee 100644 --- a/third_party/python/Include/pytime.h +++ b/third_party/python/Include/pytime.h @@ -4,7 +4,7 @@ #include "libc/calls/struct/timespec.h" #include "libc/calls/struct/timeval.h" #include "libc/calls/weirdtypes.h" -#include "libc/time/struct/tm.h" +#include "libc/time.h" #include "third_party/python/Include/object.h" #include "third_party/python/pyconfig.h" COSMOPOLITAN_C_START_ diff --git a/third_party/python/Lib/test/test_statistics.py b/third_party/python/Lib/test/test_statistics.py index 4304a9f79..8bb856430 100644 --- a/third_party/python/Lib/test/test_statistics.py +++ b/third_party/python/Lib/test/test_statistics.py @@ -1985,7 +1985,7 @@ class TestStdev(VarianceStdevMixin, NumericTestCase): # === Run tests === -def load_tests(loader, tests, ignore): +def load_tests(loader, tests, ignore=None): """Used for doctest/unittest integration.""" tests.addTests(doctest.DocTestSuite()) return tests diff --git a/third_party/python/Lib/test/test_time.py b/third_party/python/Lib/test/test_time.py index 44e82ebd5..bc3e4efb6 100644 --- a/third_party/python/Lib/test/test_time.py +++ b/third_party/python/Lib/test/test_time.py @@ -300,8 +300,8 @@ class TimeTestCase(unittest.TestCase): # utc='UTC+0' utc = 'UTC' - eastern = 'New_York' - victoria = 'Melbourne' + eastern = 'America/New_York' + victoria = 'Australia/Melbourne' org_TZ = environ.get('TZ',None) try: diff --git a/third_party/python/Modules/_datetimemodule.c b/third_party/python/Modules/_datetimemodule.c index f97ef2d4d..7d161973d 100644 --- a/third_party/python/Modules/_datetimemodule.c +++ b/third_party/python/Modules/_datetimemodule.c @@ -7,7 +7,7 @@ #include "libc/assert.h" #include "libc/calls/weirdtypes.h" #include "libc/math.h" -#include "libc/time/struct/tm.h" +#include "libc/time.h" #include "third_party/python/Include/abstract.h" #include "third_party/python/Include/boolobject.h" #include "third_party/python/Include/descrobject.h" diff --git a/third_party/python/Modules/_lsprof.c b/third_party/python/Modules/_lsprof.c index e99cceaf1..807093314 100644 --- a/third_party/python/Modules/_lsprof.c +++ b/third_party/python/Modules/_lsprof.c @@ -5,8 +5,7 @@ │ https://docs.python.org/3/license.html │ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/calls/struct/timeval.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/python/Include/abstract.h" #include "third_party/python/Include/ceval.h" #include "third_party/python/Include/dictobject.h" diff --git a/third_party/python/Modules/_testcapimodule.c b/third_party/python/Modules/_testcapimodule.c index 92310be09..f7df55450 100644 --- a/third_party/python/Modules/_testcapimodule.c +++ b/third_party/python/Modules/_testcapimodule.c @@ -13,7 +13,7 @@ #include "libc/math.h" #include "libc/mem/mem.h" #include "libc/sysv/consts/sig.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/python/Include/abstract.h" #include "third_party/python/Include/boolobject.h" #include "third_party/python/Include/bytearrayobject.h" diff --git a/third_party/python/Modules/_threadmodule.c b/third_party/python/Modules/_threadmodule.c index 0ab3c2e04..a744aadcc 100644 --- a/third_party/python/Modules/_threadmodule.c +++ b/third_party/python/Modules/_threadmodule.c @@ -58,8 +58,7 @@ #include "libc/sysv/consts/w.h" #include "libc/sysv/consts/waitid.h" #include "libc/sysv/errfuns.h" -#include "libc/time/struct/utimbuf.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "libc/x/x.h" #include "third_party/musl/lockf.h" #include "third_party/musl/passwd.h" diff --git a/third_party/python/Modules/expat/xmlparse.c b/third_party/python/Modules/expat/xmlparse.c index a6ba69a5b..7c1720b9d 100644 --- a/third_party/python/Modules/expat/xmlparse.c +++ b/third_party/python/Modules/expat/xmlparse.c @@ -11,7 +11,7 @@ #include "libc/stdio/stdio.h" #include "libc/str/str.h" #include "libc/sysv/consts/grnd.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/python/Modules/expat/expat.h" #include "third_party/python/Modules/expat/expat_config.h" /* f2d0ab6d1d4422a08cf1cf3bbdfba96b49dea42fb5ff4615e03a2a25c306e769 (2.2.8+) diff --git a/third_party/python/Modules/posixmodule.c b/third_party/python/Modules/posixmodule.c index fee776524..30ee4d1db 100644 --- a/third_party/python/Modules/posixmodule.c +++ b/third_party/python/Modules/posixmodule.c @@ -61,8 +61,8 @@ #include "libc/sysv/consts/w.h" #include "libc/sysv/consts/waitid.h" #include "libc/sysv/errfuns.h" -#include "libc/time/struct/utimbuf.h" -#include "libc/time/time.h" +#include "libc/utime.h" +#include "libc/time.h" #include "libc/x/x.h" #include "third_party/musl/lockf.h" #include "third_party/musl/passwd.h" diff --git a/third_party/python/Modules/signalmodule.c b/third_party/python/Modules/signalmodule.c index 961bf80d4..7c3607ca7 100644 --- a/third_party/python/Modules/signalmodule.c +++ b/third_party/python/Modules/signalmodule.c @@ -13,7 +13,7 @@ #include "libc/sysv/consts/itimer.h" #include "libc/sysv/consts/sig.h" #include "libc/thread/thread.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/python/Include/abstract.h" #include "third_party/python/Include/ceval.h" #include "third_party/python/Include/dictobject.h" diff --git a/third_party/python/Modules/timemodule.c b/third_party/python/Modules/timemodule.c index 1ad658200..9dbabc98c 100644 --- a/third_party/python/Modules/timemodule.c +++ b/third_party/python/Modules/timemodule.c @@ -17,8 +17,7 @@ #include "libc/sock/select.h" #include "libc/sysv/consts/clock.h" #include "libc/sysv/consts/rusage.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/python/Include/abstract.h" #include "third_party/python/Include/boolobject.h" #include "third_party/python/Include/ceval.h" diff --git a/third_party/python/Modules/xxsubtype.c b/third_party/python/Modules/xxsubtype.c index 2f750c45e..4a0fdd145 100644 --- a/third_party/python/Modules/xxsubtype.c +++ b/third_party/python/Modules/xxsubtype.c @@ -5,7 +5,7 @@ │ https://docs.python.org/3/license.html │ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/calls/weirdtypes.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/python/Include/descrobject.h" #include "third_party/python/Include/dictobject.h" #include "third_party/python/Include/floatobject.h" diff --git a/third_party/python/Modules/zipimport.c b/third_party/python/Modules/zipimport.c index 9e2923acc..a5d07533f 100644 --- a/third_party/python/Modules/zipimport.c +++ b/third_party/python/Modules/zipimport.c @@ -7,8 +7,7 @@ #include "libc/calls/calls.h" #include "libc/calls/weirdtypes.h" #include "libc/sysv/consts/s.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/python/Include/abstract.h" #include "third_party/python/Include/boolobject.h" #include "third_party/python/Include/bytesobject.h" diff --git a/third_party/python/Python/condvar.h b/third_party/python/Python/condvar.h index b9a792585..50c8a2d8c 100644 --- a/third_party/python/Python/condvar.h +++ b/third_party/python/Python/condvar.h @@ -1,6 +1,6 @@ #ifndef _CONDVAR_H_ #define _CONDVAR_H_ -#include "libc/time/time.h" +#include "libc/time.h" /* * Portable condition variable support for windows and pthreads. diff --git a/third_party/python/Python/pytime.c b/third_party/python/Python/pytime.c index df6b14038..9b80278d8 100644 --- a/third_party/python/Python/pytime.c +++ b/third_party/python/Python/pytime.c @@ -9,7 +9,7 @@ #include "libc/math.h" #include "libc/nt/synchronization.h" #include "libc/sysv/consts/clock.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/python/Include/floatobject.h" #include "third_party/python/Include/longobject.h" #include "third_party/python/Include/object.h" diff --git a/third_party/python/pyobj.c b/third_party/python/pyobj.c index 24912cdf3..cb7cd7d28 100644 --- a/third_party/python/pyobj.c +++ b/third_party/python/pyobj.c @@ -33,7 +33,7 @@ #include "libc/stdio/stdio.h" #include "libc/sysv/consts/clock.h" #include "libc/sysv/consts/o.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "libc/x/x.h" #include "libc/zip.internal.h" #include "third_party/getopt/getopt.internal.h" diff --git a/third_party/python/runpythonmodule.c b/third_party/python/runpythonmodule.c index 8fcd2b589..84cdaf200 100644 --- a/third_party/python/runpythonmodule.c +++ b/third_party/python/runpythonmodule.c @@ -27,7 +27,7 @@ #include "libc/sysv/consts/fileno.h" #include "libc/sysv/consts/prot.h" #include "libc/sysv/consts/sig.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "libc/x/x.h" #include "libc/x/xasprintf.h" #include "third_party/linenoise/linenoise.h" diff --git a/third_party/sed/compile.c b/third_party/sed/compile.c index c497c332e..66758b242 100644 --- a/third_party/sed/compile.c +++ b/third_party/sed/compile.c @@ -47,7 +47,7 @@ #include "libc/sysv/consts/s.h" #include "libc/sysv/consts/utime.h" #include "libc/mem/gc.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "libc/str/str.h" #include "libc/log/bsd.h" @@ -74,7 +74,7 @@ #include "libc/mem/alg.h" #include "libc/str/str.h" #include "libc/str/str.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/sed/defs.h" #include "third_party/sed/extern.h" diff --git a/third_party/smallz4/smallz4.cc b/third_party/smallz4/smallz4.cc index 33a9dcaba..c071d7531 100644 --- a/third_party/smallz4/smallz4.cc +++ b/third_party/smallz4/smallz4.cc @@ -30,7 +30,7 @@ #include "libc/calls/weirdtypes.h" #include "libc/runtime/runtime.h" #include "libc/stdio/stdio.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/smallz4/smallz4.hh" /// error handler diff --git a/third_party/sqlite3/BUILD.mk b/third_party/sqlite3/BUILD.mk index 38f086950..3410c4975 100644 --- a/third_party/sqlite3/BUILD.mk +++ b/third_party/sqlite3/BUILD.mk @@ -55,12 +55,12 @@ THIRD_PARTY_SQLITE3_A_DIRECTDEPS = \ LIBC_SYSV \ LIBC_SYSV_CALLS \ LIBC_THREAD \ - LIBC_TIME \ LIBC_TINYMATH \ THIRD_PARTY_COMPILER_RT \ THIRD_PARTY_GDTOA \ THIRD_PARTY_LINENOISE \ THIRD_PARTY_MUSL \ + THIRD_PARTY_TZ \ THIRD_PARTY_ZLIB \ TOOL_ARGS diff --git a/third_party/sqlite3/date.c b/third_party/sqlite3/date.c index dbe59bc5e..82cd3f5ab 100644 --- a/third_party/sqlite3/date.c +++ b/third_party/sqlite3/date.c @@ -46,8 +46,7 @@ #include "libc/assert.h" #include "libc/calls/weirdtypes.h" #include "libc/mem/mem.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/sqlite3/sqliteInt.h" #ifndef SQLITE_OMIT_DATETIME_FUNCS diff --git a/third_party/sqlite3/fileio.c b/third_party/sqlite3/fileio.c index 2cfe76ee4..9aee6a887 100644 --- a/third_party/sqlite3/fileio.c +++ b/third_party/sqlite3/fileio.c @@ -85,7 +85,7 @@ #include "libc/str/str.h" #include "libc/sysv/consts/at.h" #include "libc/sysv/consts/s.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/sqlite3/sqlite3ext.h" SQLITE_EXTENSION_INIT1 diff --git a/third_party/sqlite3/os_unix.c b/third_party/sqlite3/os_unix.c index 2e8f9dd52..0f00496e9 100644 --- a/third_party/sqlite3/os_unix.c +++ b/third_party/sqlite3/os_unix.c @@ -106,8 +106,7 @@ #include "libc/sysv/consts/o.h" #include "libc/sysv/consts/ok.h" #include "libc/sysv/consts/prot.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "libc/mem/mem.h" #if !defined(SQLITE_OMIT_WAL) || SQLITE_MAX_MMAP_SIZE>0 @@ -164,7 +163,7 @@ #endif /* OS_VXWORKS */ #ifdef HAVE_UTIME -# include "libc/time/time.h" +# include "libc/time.h" #endif /* diff --git a/third_party/sqlite3/shell.c b/third_party/sqlite3/shell.c index b94dfc00e..1144c6e73 100644 --- a/third_party/sqlite3/shell.c +++ b/third_party/sqlite3/shell.c @@ -309,7 +309,7 @@ static sqlite3_int64 timeOfDay(void){ } #if !defined(_WIN32) && !defined(WIN32) && !defined(__minux) -#include "libc/time/time.h" +#include "libc/time.h" /* Saved resource information for the beginning of an operation */ static struct rusage sBegin; /* CPU time at start */ diff --git a/third_party/tidy/tidy-int.h b/third_party/tidy/tidy-int.h index be0ed84b3..beb61a2f5 100644 --- a/third_party/tidy/tidy-int.h +++ b/third_party/tidy/tidy-int.h @@ -16,7 +16,7 @@ #include "third_party/tidy/pprint.h" #include "third_party/tidy/access.h" #include "third_party/tidy/message.h" -#include "libc/time/struct/utimbuf.h" +#include "libc/utime.h" #include "third_party/tidy/parser.h" #ifndef MAX diff --git a/third_party/tidy/tidylib.c b/third_party/tidy/tidylib.c index db284519b..d866717f1 100644 --- a/third_party/tidy/tidylib.c +++ b/third_party/tidy/tidylib.c @@ -37,7 +37,7 @@ #include "libc/errno.h" #include "libc/calls/struct/stat.h" #include "libc/sysv/consts/s.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/tidy/sprtf.h" /* Create/Destroy a Tidy "document" object */ diff --git a/third_party/tree/BUILD.mk b/third_party/tree/BUILD.mk index abdbaf4ac..d17fbf8b0 100644 --- a/third_party/tree/BUILD.mk +++ b/third_party/tree/BUILD.mk @@ -21,8 +21,8 @@ THIRD_PARTY_TREE_A_DIRECTDEPS = \ LIBC_STDIO \ LIBC_STR \ LIBC_SYSV \ - LIBC_TIME \ - THIRD_PARTY_MUSL + THIRD_PARTY_MUSL \ + THIRD_PARTY_TZ THIRD_PARTY_TREE_A_DEPS := \ $(call uniq,$(foreach x,$(THIRD_PARTY_TREE_A_DIRECTDEPS),$($(x)))) diff --git a/third_party/tz/BUILD.mk b/third_party/tz/BUILD.mk new file mode 100644 index 000000000..e14cb2536 --- /dev/null +++ b/third_party/tz/BUILD.mk @@ -0,0 +1,434 @@ +#-*-mode:makefile-gmake;indent-tabs-mode:t;tab-width:8;coding:utf-8-*-┐ +#── vi: set noet ft=make ts=8 sw=8 fenc=utf-8 :vi ────────────────────┘ + +PKGS += THIRD_PARTY_TZ + +THIRD_PARTY_TZ_ARTIFACTS += THIRD_PARTY_TZ_A +THIRD_PARTY_TZ = $(THIRD_PARTY_TZ_A_DEPS) $(THIRD_PARTY_TZ_A) +THIRD_PARTY_TZ_A = o/$(MODE)/third_party/tz/tz.a +THIRD_PARTY_TZ_A_FILES := $(wildcard third_party/tz/*) +THIRD_PARTY_TZ_A_HDRS = $(filter %.h,$(THIRD_PARTY_TZ_A_FILES)) +THIRD_PARTY_TZ_A_SRCS = $(filter %.c,$(THIRD_PARTY_TZ_A_FILES)) + +LIBC_TIME_ZONEINFOS := \ + usr/share/zoneinfo/ \ + usr/share/zoneinfo/CET \ + usr/share/zoneinfo/CST6CDT \ + usr/share/zoneinfo/EET \ + usr/share/zoneinfo/EST \ + usr/share/zoneinfo/EST5EDT \ + usr/share/zoneinfo/Factory \ + usr/share/zoneinfo/GMT \ + usr/share/zoneinfo/HST \ + usr/share/zoneinfo/MET \ + usr/share/zoneinfo/MST \ + usr/share/zoneinfo/MST7MDT \ + usr/share/zoneinfo/PST8PDT \ + usr/share/zoneinfo/WET \ + usr/share/zoneinfo/Antarctica/ \ + usr/share/zoneinfo/Antarctica/Casey \ + usr/share/zoneinfo/Antarctica/Davis \ + usr/share/zoneinfo/Antarctica/Macquarie \ + usr/share/zoneinfo/Antarctica/Mawson \ + usr/share/zoneinfo/Antarctica/Palmer \ + usr/share/zoneinfo/Antarctica/Rothera \ + usr/share/zoneinfo/Antarctica/Troll \ + usr/share/zoneinfo/Antarctica/Vostok \ + usr/share/zoneinfo/Europe/ \ + usr/share/zoneinfo/Europe/Andorra \ + usr/share/zoneinfo/Europe/Astrakhan \ + usr/share/zoneinfo/Europe/Athens \ + usr/share/zoneinfo/Europe/Belgrade \ + usr/share/zoneinfo/Europe/Berlin \ + usr/share/zoneinfo/Europe/Brussels \ + usr/share/zoneinfo/Europe/Bucharest \ + usr/share/zoneinfo/Europe/Budapest \ + usr/share/zoneinfo/Europe/Chisinau \ + usr/share/zoneinfo/Europe/Dublin \ + usr/share/zoneinfo/Europe/Gibraltar \ + usr/share/zoneinfo/Europe/Helsinki \ + usr/share/zoneinfo/Europe/Istanbul \ + usr/share/zoneinfo/Europe/Kaliningrad \ + usr/share/zoneinfo/Europe/Kirov \ + usr/share/zoneinfo/Europe/Kyiv \ + usr/share/zoneinfo/Europe/Lisbon \ + usr/share/zoneinfo/Europe/London \ + usr/share/zoneinfo/Europe/Madrid \ + usr/share/zoneinfo/Europe/Malta \ + usr/share/zoneinfo/Europe/Minsk \ + usr/share/zoneinfo/Europe/Moscow \ + usr/share/zoneinfo/Europe/Paris \ + usr/share/zoneinfo/Europe/Prague \ + usr/share/zoneinfo/Europe/Riga \ + usr/share/zoneinfo/Europe/Rome \ + usr/share/zoneinfo/Europe/Samara \ + usr/share/zoneinfo/Europe/Saratov \ + usr/share/zoneinfo/Europe/Simferopol \ + usr/share/zoneinfo/Europe/Sofia \ + usr/share/zoneinfo/Europe/Tallinn \ + usr/share/zoneinfo/Europe/Tirane \ + usr/share/zoneinfo/Europe/Ulyanovsk \ + usr/share/zoneinfo/Europe/Vienna \ + usr/share/zoneinfo/Europe/Vilnius \ + usr/share/zoneinfo/Europe/Volgograd \ + usr/share/zoneinfo/Europe/Warsaw \ + usr/share/zoneinfo/Europe/Zurich \ + usr/share/zoneinfo/Asia/ \ + usr/share/zoneinfo/Asia/Almaty \ + usr/share/zoneinfo/Asia/Amman \ + usr/share/zoneinfo/Asia/Anadyr \ + usr/share/zoneinfo/Asia/Aqtau \ + usr/share/zoneinfo/Asia/Aqtobe \ + usr/share/zoneinfo/Asia/Ashgabat \ + usr/share/zoneinfo/Asia/Atyrau \ + usr/share/zoneinfo/Asia/Baghdad \ + usr/share/zoneinfo/Asia/Baku \ + usr/share/zoneinfo/Asia/Bangkok \ + usr/share/zoneinfo/Asia/Barnaul \ + usr/share/zoneinfo/Asia/Beirut \ + usr/share/zoneinfo/Asia/Bishkek \ + usr/share/zoneinfo/Asia/Chita \ + usr/share/zoneinfo/Asia/Choibalsan \ + usr/share/zoneinfo/Asia/Colombo \ + usr/share/zoneinfo/Asia/Damascus \ + usr/share/zoneinfo/Asia/Dhaka \ + usr/share/zoneinfo/Asia/Dili \ + usr/share/zoneinfo/Asia/Dubai \ + usr/share/zoneinfo/Asia/Dushanbe \ + usr/share/zoneinfo/Asia/Famagusta \ + usr/share/zoneinfo/Asia/Gaza \ + usr/share/zoneinfo/Asia/Hebron \ + usr/share/zoneinfo/Asia/Ho_Chi_Minh \ + usr/share/zoneinfo/Asia/Hong_Kong \ + usr/share/zoneinfo/Asia/Hovd \ + usr/share/zoneinfo/Asia/Irkutsk \ + usr/share/zoneinfo/Asia/Jakarta \ + usr/share/zoneinfo/Asia/Jayapura \ + usr/share/zoneinfo/Asia/Jerusalem \ + usr/share/zoneinfo/Asia/Kabul \ + usr/share/zoneinfo/Asia/Kamchatka \ + usr/share/zoneinfo/Asia/Karachi \ + usr/share/zoneinfo/Asia/Kathmandu \ + usr/share/zoneinfo/Asia/Khandyga \ + usr/share/zoneinfo/Asia/Kolkata \ + usr/share/zoneinfo/Asia/Krasnoyarsk \ + usr/share/zoneinfo/Asia/Kuching \ + usr/share/zoneinfo/Asia/Macau \ + usr/share/zoneinfo/Asia/Magadan \ + usr/share/zoneinfo/Asia/Makassar \ + usr/share/zoneinfo/Asia/Manila \ + usr/share/zoneinfo/Asia/Nicosia \ + usr/share/zoneinfo/Asia/Novokuznetsk \ + usr/share/zoneinfo/Asia/Novosibirsk \ + usr/share/zoneinfo/Asia/Omsk \ + usr/share/zoneinfo/Asia/Oral \ + usr/share/zoneinfo/Asia/Pontianak \ + usr/share/zoneinfo/Asia/Pyongyang \ + usr/share/zoneinfo/Asia/Qatar \ + usr/share/zoneinfo/Asia/Qostanay \ + usr/share/zoneinfo/Asia/Qyzylorda \ + usr/share/zoneinfo/Asia/Riyadh \ + usr/share/zoneinfo/Asia/Sakhalin \ + usr/share/zoneinfo/Asia/Samarkand \ + usr/share/zoneinfo/Asia/Seoul \ + usr/share/zoneinfo/Asia/Shanghai \ + usr/share/zoneinfo/Asia/Singapore \ + usr/share/zoneinfo/Asia/Srednekolymsk \ + usr/share/zoneinfo/Asia/Taipei \ + usr/share/zoneinfo/Asia/Tashkent \ + usr/share/zoneinfo/Asia/Tbilisi \ + usr/share/zoneinfo/Asia/Tehran \ + usr/share/zoneinfo/Asia/Thimphu \ + usr/share/zoneinfo/Asia/Tokyo \ + usr/share/zoneinfo/Asia/Tomsk \ + usr/share/zoneinfo/Asia/Ulaanbaatar \ + usr/share/zoneinfo/Asia/Urumqi \ + usr/share/zoneinfo/Asia/Ust-Nera \ + usr/share/zoneinfo/Asia/Vladivostok \ + usr/share/zoneinfo/Asia/Yakutsk \ + usr/share/zoneinfo/Asia/Yangon \ + usr/share/zoneinfo/Asia/Yekaterinburg \ + usr/share/zoneinfo/Asia/Yerevan \ + usr/share/zoneinfo/Pacific/ \ + usr/share/zoneinfo/Pacific/Apia \ + usr/share/zoneinfo/Pacific/Auckland \ + usr/share/zoneinfo/Pacific/Bougainville \ + usr/share/zoneinfo/Pacific/Chatham \ + usr/share/zoneinfo/Pacific/Easter \ + usr/share/zoneinfo/Pacific/Efate \ + usr/share/zoneinfo/Pacific/Fakaofo \ + usr/share/zoneinfo/Pacific/Fiji \ + usr/share/zoneinfo/Pacific/Galapagos \ + usr/share/zoneinfo/Pacific/Gambier \ + usr/share/zoneinfo/Pacific/Guadalcanal \ + usr/share/zoneinfo/Pacific/Guam \ + usr/share/zoneinfo/Pacific/Honolulu \ + usr/share/zoneinfo/Pacific/Kanton \ + usr/share/zoneinfo/Pacific/Kiritimati \ + usr/share/zoneinfo/Pacific/Kosrae \ + usr/share/zoneinfo/Pacific/Kwajalein \ + usr/share/zoneinfo/Pacific/Marquesas \ + usr/share/zoneinfo/Pacific/Nauru \ + usr/share/zoneinfo/Pacific/Niue \ + usr/share/zoneinfo/Pacific/Norfolk \ + usr/share/zoneinfo/Pacific/Noumea \ + usr/share/zoneinfo/Pacific/Pago_Pago \ + usr/share/zoneinfo/Pacific/Palau \ + usr/share/zoneinfo/Pacific/Pitcairn \ + usr/share/zoneinfo/Pacific/Port_Moresby \ + usr/share/zoneinfo/Pacific/Rarotonga \ + usr/share/zoneinfo/Pacific/Tahiti \ + usr/share/zoneinfo/Pacific/Tarawa \ + usr/share/zoneinfo/Pacific/Tongatapu \ + usr/share/zoneinfo/America/ \ + usr/share/zoneinfo/America/Adak \ + usr/share/zoneinfo/America/Anchorage \ + usr/share/zoneinfo/America/Araguaina \ + usr/share/zoneinfo/America/Argentina/ \ + usr/share/zoneinfo/America/Argentina/Buenos_Aires \ + usr/share/zoneinfo/America/Argentina/Catamarca \ + usr/share/zoneinfo/America/Argentina/Cordoba \ + usr/share/zoneinfo/America/Argentina/Jujuy \ + usr/share/zoneinfo/America/Argentina/La_Rioja \ + usr/share/zoneinfo/America/Argentina/Mendoza \ + usr/share/zoneinfo/America/Argentina/Rio_Gallegos \ + usr/share/zoneinfo/America/Argentina/Salta \ + usr/share/zoneinfo/America/Argentina/San_Juan \ + usr/share/zoneinfo/America/Argentina/San_Luis \ + usr/share/zoneinfo/America/Argentina/Tucuman \ + usr/share/zoneinfo/America/Argentina/Ushuaia \ + usr/share/zoneinfo/America/Asuncion \ + usr/share/zoneinfo/America/Bahia \ + usr/share/zoneinfo/America/Bahia_Banderas \ + usr/share/zoneinfo/America/Barbados \ + usr/share/zoneinfo/America/Belem \ + usr/share/zoneinfo/America/Belize \ + usr/share/zoneinfo/America/Boa_Vista \ + usr/share/zoneinfo/America/Bogota \ + usr/share/zoneinfo/America/Boise \ + usr/share/zoneinfo/America/Cambridge_Bay \ + usr/share/zoneinfo/America/Campo_Grande \ + usr/share/zoneinfo/America/Cancun \ + usr/share/zoneinfo/America/Caracas \ + usr/share/zoneinfo/America/Cayenne \ + usr/share/zoneinfo/America/Chicago \ + usr/share/zoneinfo/America/Chihuahua \ + usr/share/zoneinfo/America/Ciudad_Juarez \ + usr/share/zoneinfo/America/Costa_Rica \ + usr/share/zoneinfo/America/Cuiaba \ + usr/share/zoneinfo/America/Danmarkshavn \ + usr/share/zoneinfo/America/Dawson \ + usr/share/zoneinfo/America/Dawson_Creek \ + usr/share/zoneinfo/America/Denver \ + usr/share/zoneinfo/America/Detroit \ + usr/share/zoneinfo/America/Edmonton \ + usr/share/zoneinfo/America/Eirunepe \ + usr/share/zoneinfo/America/El_Salvador \ + usr/share/zoneinfo/America/Fort_Nelson \ + usr/share/zoneinfo/America/Fortaleza \ + usr/share/zoneinfo/America/Glace_Bay \ + usr/share/zoneinfo/America/Goose_Bay \ + usr/share/zoneinfo/America/Grand_Turk \ + usr/share/zoneinfo/America/Guatemala \ + usr/share/zoneinfo/America/Guayaquil \ + usr/share/zoneinfo/America/Guyana \ + usr/share/zoneinfo/America/Halifax \ + usr/share/zoneinfo/America/Havana \ + usr/share/zoneinfo/America/Hermosillo \ + usr/share/zoneinfo/America/Indiana/ \ + usr/share/zoneinfo/America/Indiana/Indianapolis \ + usr/share/zoneinfo/America/Indiana/Knox \ + usr/share/zoneinfo/America/Indiana/Marengo \ + usr/share/zoneinfo/America/Indiana/Petersburg \ + usr/share/zoneinfo/America/Indiana/Tell_City \ + usr/share/zoneinfo/America/Indiana/Vevay \ + usr/share/zoneinfo/America/Indiana/Vincennes \ + usr/share/zoneinfo/America/Indiana/Winamac \ + usr/share/zoneinfo/America/Inuvik \ + usr/share/zoneinfo/America/Iqaluit \ + usr/share/zoneinfo/America/Jamaica \ + usr/share/zoneinfo/America/Juneau \ + usr/share/zoneinfo/America/Kentucky/ \ + usr/share/zoneinfo/America/Kentucky/Louisville \ + usr/share/zoneinfo/America/Kentucky/Monticello \ + usr/share/zoneinfo/America/La_Paz \ + usr/share/zoneinfo/America/Lima \ + usr/share/zoneinfo/America/Los_Angeles \ + usr/share/zoneinfo/America/Maceio \ + usr/share/zoneinfo/America/Managua \ + usr/share/zoneinfo/America/Manaus \ + usr/share/zoneinfo/America/Martinique \ + usr/share/zoneinfo/America/Matamoros \ + usr/share/zoneinfo/America/Mazatlan \ + usr/share/zoneinfo/America/Menominee \ + usr/share/zoneinfo/America/Merida \ + usr/share/zoneinfo/America/Metlakatla \ + usr/share/zoneinfo/America/Mexico_City \ + usr/share/zoneinfo/America/Miquelon \ + usr/share/zoneinfo/America/Moncton \ + usr/share/zoneinfo/America/Monterrey \ + usr/share/zoneinfo/America/Montevideo \ + usr/share/zoneinfo/America/New_York \ + usr/share/zoneinfo/America/Nome \ + usr/share/zoneinfo/America/Noronha \ + usr/share/zoneinfo/America/North_Dakota/ \ + usr/share/zoneinfo/America/North_Dakota/Beulah \ + usr/share/zoneinfo/America/North_Dakota/Center \ + usr/share/zoneinfo/America/North_Dakota/New_Salem \ + usr/share/zoneinfo/America/Nuuk \ + usr/share/zoneinfo/America/Ojinaga \ + usr/share/zoneinfo/America/Panama \ + usr/share/zoneinfo/America/Paramaribo \ + usr/share/zoneinfo/America/Phoenix \ + usr/share/zoneinfo/America/Port-au-Prince \ + usr/share/zoneinfo/America/Porto_Velho \ + usr/share/zoneinfo/America/Puerto_Rico \ + usr/share/zoneinfo/America/Punta_Arenas \ + usr/share/zoneinfo/America/Rankin_Inlet \ + usr/share/zoneinfo/America/Recife \ + usr/share/zoneinfo/America/Regina \ + usr/share/zoneinfo/America/Resolute \ + usr/share/zoneinfo/America/Rio_Branco \ + usr/share/zoneinfo/America/Santarem \ + usr/share/zoneinfo/America/Santiago \ + usr/share/zoneinfo/America/Santo_Domingo \ + usr/share/zoneinfo/America/Sao_Paulo \ + usr/share/zoneinfo/America/Scoresbysund \ + usr/share/zoneinfo/America/Sitka \ + usr/share/zoneinfo/America/St_Johns \ + usr/share/zoneinfo/America/Swift_Current \ + usr/share/zoneinfo/America/Tegucigalpa \ + usr/share/zoneinfo/America/Thule \ + usr/share/zoneinfo/America/Tijuana \ + usr/share/zoneinfo/America/Toronto \ + usr/share/zoneinfo/America/Vancouver \ + usr/share/zoneinfo/America/Whitehorse \ + usr/share/zoneinfo/America/Winnipeg \ + usr/share/zoneinfo/America/Yakutat \ + usr/share/zoneinfo/Africa/ \ + usr/share/zoneinfo/Africa/Abidjan \ + usr/share/zoneinfo/Africa/Algiers \ + usr/share/zoneinfo/Africa/Bissau \ + usr/share/zoneinfo/Africa/Cairo \ + usr/share/zoneinfo/Africa/Casablanca \ + usr/share/zoneinfo/Africa/Ceuta \ + usr/share/zoneinfo/Africa/El_Aaiun \ + usr/share/zoneinfo/Africa/Johannesburg \ + usr/share/zoneinfo/Africa/Juba \ + usr/share/zoneinfo/Africa/Khartoum \ + usr/share/zoneinfo/Africa/Lagos \ + usr/share/zoneinfo/Africa/Maputo \ + usr/share/zoneinfo/Africa/Monrovia \ + usr/share/zoneinfo/Africa/Nairobi \ + usr/share/zoneinfo/Africa/Ndjamena \ + usr/share/zoneinfo/Africa/Sao_Tome \ + usr/share/zoneinfo/Africa/Tripoli \ + usr/share/zoneinfo/Africa/Tunis \ + usr/share/zoneinfo/Africa/Windhoek \ + usr/share/zoneinfo/Australia/ \ + usr/share/zoneinfo/Australia/Adelaide \ + usr/share/zoneinfo/Australia/Brisbane \ + usr/share/zoneinfo/Australia/Broken_Hill \ + usr/share/zoneinfo/Australia/Darwin \ + usr/share/zoneinfo/Australia/Eucla \ + usr/share/zoneinfo/Australia/Hobart \ + usr/share/zoneinfo/Australia/Lindeman \ + usr/share/zoneinfo/Australia/Lord_Howe \ + usr/share/zoneinfo/Australia/Melbourne \ + usr/share/zoneinfo/Australia/Perth \ + usr/share/zoneinfo/Australia/Sydney \ + usr/share/zoneinfo/Atlantic/ \ + usr/share/zoneinfo/Atlantic/Azores \ + usr/share/zoneinfo/Atlantic/Bermuda \ + usr/share/zoneinfo/Atlantic/Canary \ + usr/share/zoneinfo/Atlantic/Cape_Verde \ + usr/share/zoneinfo/Atlantic/Faroe \ + usr/share/zoneinfo/Atlantic/Madeira \ + usr/share/zoneinfo/Atlantic/South_Georgia \ + usr/share/zoneinfo/Atlantic/Stanley \ + usr/share/zoneinfo/Etc/ \ + usr/share/zoneinfo/Etc/UTC \ + usr/share/zoneinfo/Etc/GMT-14 \ + usr/share/zoneinfo/Etc/GMT-13 \ + usr/share/zoneinfo/Etc/GMT-12 \ + usr/share/zoneinfo/Etc/GMT-11 \ + usr/share/zoneinfo/Etc/GMT-10 \ + usr/share/zoneinfo/Etc/GMT-9 \ + usr/share/zoneinfo/Etc/GMT-8 \ + usr/share/zoneinfo/Etc/GMT-7 \ + usr/share/zoneinfo/Etc/GMT-6 \ + usr/share/zoneinfo/Etc/GMT-5 \ + usr/share/zoneinfo/Etc/GMT-4 \ + usr/share/zoneinfo/Etc/GMT-3 \ + usr/share/zoneinfo/Etc/GMT-2 \ + usr/share/zoneinfo/Etc/GMT-1 \ + usr/share/zoneinfo/Etc/GMT \ + usr/share/zoneinfo/Etc/GMT+1 \ + usr/share/zoneinfo/Etc/GMT+2 \ + usr/share/zoneinfo/Etc/GMT+3 \ + usr/share/zoneinfo/Etc/GMT+4 \ + usr/share/zoneinfo/Etc/GMT+5 \ + usr/share/zoneinfo/Etc/GMT+6 \ + usr/share/zoneinfo/Etc/GMT+7 \ + usr/share/zoneinfo/Etc/GMT+8 \ + usr/share/zoneinfo/Etc/GMT+9 \ + usr/share/zoneinfo/Etc/GMT+10 \ + usr/share/zoneinfo/Etc/GMT+11 \ + usr/share/zoneinfo/Etc/GMT+12 \ + usr/share/zoneinfo/Indian/ \ + usr/share/zoneinfo/Indian/Chagos \ + usr/share/zoneinfo/Indian/Maldives \ + usr/share/zoneinfo/Indian/Mauritius + +THIRD_PARTY_TZ_A_OBJS = \ + $(THIRD_PARTY_TZ_A_SRCS:%.c=o/$(MODE)/%.o) \ + $(LIBC_TIME_ZONEINFOS:%=o/$(MODE)/%.zip.o) + +THIRD_PARTY_TZ_A_CHECKS = \ + $(THIRD_PARTY_TZ_A).pkg \ + $(THIRD_PARTY_TZ_A_HDRS:%=o/$(MODE)/%.ok) + +THIRD_PARTY_TZ_A_DIRECTDEPS = \ + LIBC_INTRIN \ + LIBC_CALLS \ + LIBC_MEM \ + LIBC_NEXGEN32E \ + LIBC_NT_KERNEL32 \ + LIBC_RUNTIME \ + LIBC_STDIO \ + LIBC_STR \ + LIBC_SYSV + +THIRD_PARTY_TZ_A_DEPS := \ + $(call uniq,$(foreach x,$(THIRD_PARTY_TZ_A_DIRECTDEPS),$($(x)))) + +$(THIRD_PARTY_TZ_A): \ + third_party/tz/ \ + $(THIRD_PARTY_TZ_A).pkg \ + $(THIRD_PARTY_TZ_A_OBJS) + +$(THIRD_PARTY_TZ_A).pkg: \ + $(THIRD_PARTY_TZ_A_OBJS) \ + $(foreach x,$(THIRD_PARTY_TZ_A_DIRECTDEPS),$($(x)_A).pkg) + +# make this library tinier +o/$(MODE)/third_party/tz/strftime.o: private CFLAGS += -fno-jump-tables +o/$(MODE)/third_party/tz/localtime.o: private CFLAGS += -fdata-sections -ffunction-sections + +# offer same stack safety assurances as cosmo libc +$(THIRD_PARTY_TZ_A_OBJS): private COPTS += -Wframe-larger-than=4096 -Walloca-larger-than=4096 + +o/$(MODE)/usr/share/zoneinfo/.zip.o: usr/share/zoneinfo + +THIRD_PARTY_TZ_LIBS = $(foreach x,$(THIRD_PARTY_TZ_ARTIFACTS),$($(x))) +THIRD_PARTY_TZ_SRCS = $(foreach x,$(THIRD_PARTY_TZ_ARTIFACTS),$($(x)_SRCS)) +THIRD_PARTY_TZ_HDRS = $(foreach x,$(THIRD_PARTY_TZ_ARTIFACTS),$($(x)_HDRS)) +THIRD_PARTY_TZ_BINS = $(foreach x,$(THIRD_PARTY_TZ_ARTIFACTS),$($(x)_BINS)) +THIRD_PARTY_TZ_CHECKS = $(foreach x,$(THIRD_PARTY_TZ_ARTIFACTS),$($(x)_CHECKS)) +THIRD_PARTY_TZ_OBJS = $(foreach x,$(THIRD_PARTY_TZ_ARTIFACTS),$($(x)_OBJS)) +$(THIRD_PARTY_TZ_OBJS): $(BUILD_FILES) third_party/tz/BUILD.mk + +.PHONY: o/$(MODE)/third_party/tz +o/$(MODE)/third_party/tz: \ + $(THIRD_PARTY_TZ_A) \ + $(THIRD_PARTY_TZ_CHECKS) diff --git a/third_party/tz/LICENSE b/third_party/tz/LICENSE new file mode 100644 index 000000000..8ba4399c6 --- /dev/null +++ b/third_party/tz/LICENSE @@ -0,0 +1,5 @@ +Unless specified below, all files in the tz code and data (including +this LICENSE file) are in the public domain. + +If the files date.c, newstrftime.3, and strftime.c are present, they +contain material derived from BSD and use the BSD 3-clause license. diff --git a/third_party/tz/README.cosmo b/third_party/tz/README.cosmo new file mode 100644 index 000000000..7f209b0a5 --- /dev/null +++ b/third_party/tz/README.cosmo @@ -0,0 +1,25 @@ +DESCRIPTION + + tz is a library for handling time zones + +LICENSE + + See LICENSE file + +ORIGIN + + git@github.com:eggert/tz.git + a75a6251d30b28a7badc1763296205adf67a5081 + Paul Eggert + +BUILD PROCESS + + make -j8 install BACKWARD= DESTDIR=stage REDO=posix_only + +LOCAL CHANGES + + - Add aliases for legacy Cosmo timezone names. + - Add yoinks for embedding time zones in binary. + - Make localtime() posix thread cancelation safe. + - Improve readabiilty with "localtime_" prefixes. + - Automate the TZ environment variable on Windows. diff --git a/libc/time/asctime.c b/third_party/tz/asctime.c similarity index 57% rename from libc/time/asctime.c rename to third_party/tz/asctime.c index 1762165e7..eb257aa31 100644 --- a/libc/time/asctime.c +++ b/third_party/tz/asctime.c @@ -1,9 +1,10 @@ +/*-*- mode:c;indent-tabs-mode:t;c-basic-offset:8;tab-width:8;coding:utf-8 -*-│ +│ vi: set noet ft=c ts=8 sw=8 fenc=utf-8 :vi │ +╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/str/str.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" -#include "libc/time/tz.internal.h" -#include "third_party/python/Include/object.h" -// clang-format off +#include "libc/stdio/stdio.h" +#include "private.h" + /* asctime and asctime_r a la POSIX and ISO C, except pad years before 1000. */ /* @@ -17,12 +18,8 @@ ** whereas the output of asctime is supposed to be constant. */ -/* -** Some systems only handle "%.2d"; others only handle "%02d"; -** "%02.2d" makes (most) everybody happy. -** At least some versions of gcc warn about the %02.2d; -** we conditionalize below to avoid the warning. -*/ +/*LINTLIBRARY*/ + /* ** All years associated with 32-bit time_t values are exactly four digits long; ** some years associated with 64-bit time_t values are not. @@ -35,24 +32,16 @@ ** The ISO C and POSIX standards prohibit padding the year, ** but many implementations pad anyway; most likely the standards are buggy. */ -#ifdef __GNUC__ -#define ASCTIME_FMT "%s %s%3d %2.2d:%2.2d:%2.2d %-4s\n" -#else /* !defined __GNUC__ */ -#define ASCTIME_FMT "%s %s%3d %02.2d:%02.2d:%02.2d %-4s\n" -#endif /* !defined __GNUC__ */ +static char const ASCTIME_FMT[] = "%s %s%3d %.2d:%.2d:%.2d %-4s\n"; /* ** For years that are more than four digits we put extra spaces before the year ** so that code trying to overwrite the newline won't end up overwriting ** a digit within a year and truncating the year (operating on the assumption ** that no output is better than wrong output). */ -#ifdef __GNUC__ -#define ASCTIME_FMT_B "%s %s%3d %2.2d:%2.2d:%2.2d %s\n" -#else /* !defined __GNUC__ */ -#define ASCTIME_FMT_B "%s %s%3d %02.2d:%02.2d:%02.2d %s\n" -#endif /* !defined __GNUC__ */ +static char const ASCTIME_FMT_B[] = "%s %s%3d %.2d:%.2d:%.2d %s\n"; -#define STD_ASCTIME_BUF_SIZE 26 +enum { STD_ASCTIME_BUF_SIZE = 26 }; /* ** Big enough for something such as ** ??? ???-2147483648 -2147483648:-2147483648:-2147483648 -2147483648\n @@ -60,20 +49,35 @@ ** seven explicit spaces, two explicit colons, a newline, ** and a trailing NUL byte). ** The values above are for systems where an int is 32 bits and are provided -** as an example; the define below calculates the maximum for the system at +** as an example; the size expression below is a bound for the system at ** hand. */ -#define MAX_ASCTIME_BUF_SIZE (2*3+5*INT_STRLEN_MAXIMUM(int)+7+2+1+1) +static char buf_asctime[2*3 + 5*INT_STRLEN_MAXIMUM(int) + 7 + 2 + 1 + 1]; -static char buf_asctime[MAX_ASCTIME_BUF_SIZE]; +/* A similar buffer for ctime. + C89 requires that they be the same buffer. + This requirement was removed in C99, so support it only if requested, + as support is more likely to lead to bugs in badly written programs. */ +#if SUPPORT_C89 +# define buf_ctime buf_asctime +#else +static char buf_ctime[sizeof buf_asctime]; +#endif char * -asctime_r(register const struct tm *timeptr, char buf[hasatleast 26]) +asctime_r(struct tm const *restrict timeptr, char *restrict buf) { + static const char wday_name[][4] = { + "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" + }; + static const char mon_name[][4] = { + "Jan", "Feb", "Mar", "Apr", "May", "Jun", + "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" + }; register const char * wn; register const char * mn; char year[INT_STRLEN_MAXIMUM(int) + 2]; - char result[MAX_ASCTIME_BUF_SIZE]; + char result[sizeof buf_asctime]; if (timeptr == NULL) { errno = EINVAL; @@ -81,10 +85,10 @@ asctime_r(register const struct tm *timeptr, char buf[hasatleast 26]) } if (timeptr->tm_wday < 0 || timeptr->tm_wday >= DAYSPERWEEK) wn = "???"; - else wn = kWeekdayNameShort[timeptr->tm_wday]; + else wn = wday_name[timeptr->tm_wday]; if (timeptr->tm_mon < 0 || timeptr->tm_mon >= MONSPERYEAR) mn = "???"; - else mn = kMonthNameShort[timeptr->tm_mon]; + else mn = mon_name[timeptr->tm_mon]; /* ** Use strftime's %Y to generate the year, to avoid overflow problems ** when computing timeptr->tm_year + TM_YEAR_BASE. @@ -95,13 +99,14 @@ asctime_r(register const struct tm *timeptr, char buf[hasatleast 26]) /* ** We avoid using snprintf since it's not available on all systems. */ - (sprintf)(result, - ((strlen(year) <= 4) ? ASCTIME_FMT : ASCTIME_FMT_B), - wn, mn, - timeptr->tm_mday, timeptr->tm_hour, - timeptr->tm_min, timeptr->tm_sec, - year); - if (strlen(result) < STD_ASCTIME_BUF_SIZE || buf == buf_asctime) + sprintf(result, + ((strlen(year) <= 4) ? ASCTIME_FMT : ASCTIME_FMT_B), + wn, mn, + timeptr->tm_mday, timeptr->tm_hour, + timeptr->tm_min, timeptr->tm_sec, + year); + if (strlen(result) < STD_ASCTIME_BUF_SIZE + || buf == buf_ctime || buf == buf_asctime) return strcpy(buf, result); else { errno = EOVERFLOW; @@ -114,3 +119,17 @@ asctime(register const struct tm *timeptr) { return asctime_r(timeptr, buf_asctime); } + +char * +ctime_r(const time_t *timep, char *buf) +{ + struct tm mytm; + struct tm *tmp = localtime_r(timep, &mytm); + return tmp ? asctime_r(tmp, buf) : NULL; +} + +char * +ctime(const time_t *timep) +{ + return ctime_r(timep, buf_ctime); +} diff --git a/third_party/tz/ctime.c b/third_party/tz/ctime.c new file mode 100644 index 000000000..4e453c2d1 --- /dev/null +++ b/third_party/tz/ctime.c @@ -0,0 +1,22 @@ +/*-*- mode:c;indent-tabs-mode:t;c-basic-offset:8;tab-width:8;coding:utf-8 -*-│ +│ vi: set noet ft=c ts=8 sw=8 fenc=utf-8 :vi │ +╚─────────────────────────────────────────────────────────────────────────────*/ +#include "libc/calls/weirdtypes.h" +#include "libc/time.h" + +/** + * Represents time as string. + * @threadunsafe + */ +char * +ctime(const time_t *timep) +{ + /* + ** Section 4.12.3.2 of X3.159-1989 requires that + ** The ctime function converts the calendar time pointed to by timer + ** to local time in the form of a string. It is equivalent to + ** asctime(localtime(timer)) + */ + struct tm *tmp = localtime(timep); + return tmp ? asctime(tmp) : NULL; +} diff --git a/third_party/tz/ctime_r.c b/third_party/tz/ctime_r.c new file mode 100644 index 000000000..d850a4e7b --- /dev/null +++ b/third_party/tz/ctime_r.c @@ -0,0 +1,13 @@ +/*-*- mode:c;indent-tabs-mode:t;c-basic-offset:8;tab-width:8;coding:utf-8 -*-│ +│ vi: set noet ft=c ts=8 sw=8 fenc=utf-8 :vi │ +╚─────────────────────────────────────────────────────────────────────────────*/ +#include "libc/calls/weirdtypes.h" +#include "libc/time.h" + +char * +ctime_r(const time_t *timep, char *buf) +{ + struct tm mytm; + struct tm *tmp = localtime_r(timep, &mytm); + return tmp ? asctime_r(tmp, buf) : NULL; +} diff --git a/third_party/tz/daylight.c b/third_party/tz/daylight.c new file mode 100644 index 000000000..30d400598 --- /dev/null +++ b/third_party/tz/daylight.c @@ -0,0 +1,6 @@ +/*-*- mode:c;indent-tabs-mode:t;c-basic-offset:8;tab-width:8;coding:utf-8 -*-│ +│ vi: set noet ft=c ts=8 sw=8 fenc=utf-8 :vi │ +╚─────────────────────────────────────────────────────────────────────────────*/ +#include "libc/time.h" + +int daylight; diff --git a/libc/time/difftime.c b/third_party/tz/difftime.c similarity index 70% rename from libc/time/difftime.c rename to third_party/tz/difftime.c index 077db69da..929dd5b14 100644 --- a/libc/time/difftime.c +++ b/third_party/tz/difftime.c @@ -1,18 +1,14 @@ -/*-*- mode:c; indent-tabs-mode:t; tab-width:8; coding:utf-8 -*-│ +/*-*- mode:c;indent-tabs-mode:t;c-basic-offset:8;tab-width:8;coding:utf-8 -*-│ │ vi: set noet ft=c ts=8 sw=8 fenc=utf-8 :vi │ ╚─────────────────────────────────────────────────────────────────────────────*/ +#include "libc/calls/weirdtypes.h" #include "libc/macros.internal.h" -#include "libc/time/tz.internal.h" -// clang-format off +#include "libc/time.h" + /* Return the difference between two timestamps. */ -/* -** This file is in the public domain, so clarified as of -** 1996-06-05 by Arthur David Olson. -*/ - /* Return -X as a double. Using this avoids casting to 'double'. */ -static inline double +static double dminus(double x) { return -x; @@ -26,8 +22,8 @@ difftime(time_t time1, time_t time0) ** (assuming that the larger type has more precision). */ if (sizeof(time_t) < sizeof(double)) { - double t1 = time1, t0 = time0; - return t1 - t0; + double t1 = time1, t0 = time0; + return t1 - t0; } /* @@ -35,12 +31,12 @@ difftime(time_t time1, time_t time0) ** if the minuend is greater than or equal to the subtrahend. */ if (!TYPE_SIGNED(time_t)) - return time0 <= time1 ? time1 - time0 : dminus(time0 - time1); + return time0 <= time1 ? time1 - time0 : dminus(time0 - time1); /* Use uintmax_t if wide enough. */ if (sizeof(time_t) <= sizeof(uintmax_t)) { - uintmax_t t1 = time1, t0 = time0; - return time0 <= time1 ? t1 - t0 : dminus(t0 - t1); + uintmax_t t1 = time1, t0 = time0; + return time0 <= time1 ? t1 - t0 : dminus(t0 - t1); } /* @@ -48,7 +44,7 @@ difftime(time_t time1, time_t time0) ** (meaning that their difference cannot overflow). */ if ((time1 < 0) == (time0 < 0)) - return time1 - time0; + return time1 - time0; /* ** The values have opposite signs and uintmax_t is too narrow. @@ -56,7 +52,7 @@ difftime(time_t time1, time_t time0) ** by using long double temporaries. */ { - long double t1 = time1, t0 = time0; - return t1 - t0; + long double t1 = time1, t0 = time0; + return t1 - t0; } } diff --git a/libc/time/localtime.c b/third_party/tz/localtime.c similarity index 50% rename from libc/time/localtime.c rename to third_party/tz/localtime.c index 3c5c567c8..47975e3ed 100644 --- a/libc/time/localtime.c +++ b/third_party/tz/localtime.c @@ -1,4 +1,4 @@ -/*-*- mode:c; indent-tabs-mode:t; tab-width:8; coding:utf-8 -*-│ +/*-*- mode:c;indent-tabs-mode:t;c-basic-offset:8;tab-width:8;coding:utf-8 -*-│ │ vi: set noet ft=c ts=8 sw=8 fenc=utf-8 :vi │ ╚─────────────────────────────────────────────────────────────────────────────*/ #define LOCALTIME_IMPLEMENTATION @@ -12,30 +12,21 @@ #include "libc/sysv/consts/o.h" #include "libc/thread/thread.h" #include "libc/thread/tls.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" -#include "libc/time/tz.internal.h" -#include "libc/time/tzfile.internal.h" +#include "libc/time.h" +#include "libc/inttypes.h" +#include "libc/sysv/consts/ok.h" +#include "libc/runtime/runtime.h" +#include "libc/stdckdint.h" +#include "libc/time.h" +#include "tzdir.h" +#include "tzfile.h" +#include "libc/nt/struct/timezoneinformation.h" +#include "libc/nt/time.h" +#include "libc/dce.h" +#include "private.h" -__static_yoink("zipos"); -__static_yoink("usr/share/zoneinfo/"); -__static_yoink("usr/share/zoneinfo/Anchorage"); -__static_yoink("usr/share/zoneinfo/Beijing"); -__static_yoink("usr/share/zoneinfo/Berlin"); -__static_yoink("usr/share/zoneinfo/Boulder"); -__static_yoink("usr/share/zoneinfo/Chicago"); -__static_yoink("usr/share/zoneinfo/GMT"); -__static_yoink("usr/share/zoneinfo/GST"); -__static_yoink("usr/share/zoneinfo/Honolulu"); -__static_yoink("usr/share/zoneinfo/Israel"); -__static_yoink("usr/share/zoneinfo/Japan"); -__static_yoink("usr/share/zoneinfo/London"); -__static_yoink("usr/share/zoneinfo/Melbourne"); -__static_yoink("usr/share/zoneinfo/New_York"); -__static_yoink("usr/share/zoneinfo/UTC"); - -// clang-format off /* Convert timestamp from time_t to struct tm. */ + /* ** This file is in the public domain, so clarified as of ** 1996-06-05 by Arthur David Olson. @@ -43,44 +34,644 @@ __static_yoink("usr/share/zoneinfo/UTC"); /* ** Leap second handling from Bradley White. -** POSIX-style TZ environment variable handling from Guy Harris. +** POSIX.1-1988 style TZ environment variable handling from Guy Harris. */ -static pthread_mutex_t locallock; +/*LINTLIBRARY*/ -void localtime_wipe(void) { +__static_yoink("zipos"); + +__static_yoink("usr/share/zoneinfo/"); +__static_yoink("usr/share/zoneinfo/GMT"); // Greenwich Mean Time (UTC +0) +__static_yoink("usr/share/zoneinfo/EST5EDT"); // Eastern Standard Time (UTC -5) and Eastern Daylight Time (UTC -4) +__static_yoink("usr/share/zoneinfo/CST6CDT"); // Central Standard Time (UTC -6) and Central Daylight Time (UTC -5) +__static_yoink("usr/share/zoneinfo/MST7MDT"); // Mountain Standard Time (UTC -7) and Mountain Daylight Time (UTC -6) +__static_yoink("usr/share/zoneinfo/PST8PDT"); // Pacific Standard Time (UTC -8) and Pacific Daylight Time (UTC -7) +__static_yoink("usr/share/zoneinfo/EST"); // Eastern Standard Time (UTC -5) +__static_yoink("usr/share/zoneinfo/HST"); // Hawaii Standard Time (UTC -10) +__static_yoink("usr/share/zoneinfo/MST"); // Mountain Standard Time (UTC -7) +__static_yoink("usr/share/zoneinfo/EET"); // Eastern European Time (UTC +2) +__static_yoink("usr/share/zoneinfo/MET"); // Middle European Time (UTC +1), also known as Central European Time +__static_yoink("usr/share/zoneinfo/CET"); // Central European Time (UTC +1) +__static_yoink("usr/share/zoneinfo/WET"); // Western European Time (UTC +0) + +__static_yoink("usr/share/zoneinfo/Etc/"); +__static_yoink("usr/share/zoneinfo/Etc/UTC"); +__static_yoink("usr/share/zoneinfo/Etc/GMT-14"); +__static_yoink("usr/share/zoneinfo/Etc/GMT-13"); +__static_yoink("usr/share/zoneinfo/Etc/GMT-12"); +__static_yoink("usr/share/zoneinfo/Etc/GMT-11"); +__static_yoink("usr/share/zoneinfo/Etc/GMT-10"); +__static_yoink("usr/share/zoneinfo/Etc/GMT-9"); +__static_yoink("usr/share/zoneinfo/Etc/GMT-8"); +__static_yoink("usr/share/zoneinfo/Etc/GMT-7"); +__static_yoink("usr/share/zoneinfo/Etc/GMT-6"); +__static_yoink("usr/share/zoneinfo/Etc/GMT-5"); +__static_yoink("usr/share/zoneinfo/Etc/GMT-4"); +__static_yoink("usr/share/zoneinfo/Etc/GMT-3"); +__static_yoink("usr/share/zoneinfo/Etc/GMT-2"); +__static_yoink("usr/share/zoneinfo/Etc/GMT-1"); +__static_yoink("usr/share/zoneinfo/Etc/GMT"); +__static_yoink("usr/share/zoneinfo/Etc/GMT+1"); +__static_yoink("usr/share/zoneinfo/Etc/GMT+2"); +__static_yoink("usr/share/zoneinfo/Etc/GMT+3"); +__static_yoink("usr/share/zoneinfo/Etc/GMT+4"); +__static_yoink("usr/share/zoneinfo/Etc/GMT+5"); +__static_yoink("usr/share/zoneinfo/Etc/GMT+6"); +__static_yoink("usr/share/zoneinfo/Etc/GMT+7"); +__static_yoink("usr/share/zoneinfo/Etc/GMT+8"); +__static_yoink("usr/share/zoneinfo/Etc/GMT+9"); +__static_yoink("usr/share/zoneinfo/Etc/GMT+10"); +__static_yoink("usr/share/zoneinfo/Etc/GMT+11"); +__static_yoink("usr/share/zoneinfo/Etc/GMT+12"); + +__static_yoink("usr/share/zoneinfo/America/"); +__static_yoink("usr/share/zoneinfo/America/Los_Angeles"); // U.S. +__static_yoink("usr/share/zoneinfo/America/New_York"); // U.S. +__static_yoink("usr/share/zoneinfo/America/Chicago"); // U.S. +__static_yoink("usr/share/zoneinfo/America/Denver"); // U.S. +__static_yoink("usr/share/zoneinfo/America/Anchorage"); // U.S. +__static_yoink("usr/share/zoneinfo/America/Phoenix"); // U.S. +__static_yoink("usr/share/zoneinfo/America/Mexico_City"); // Mexico +__static_yoink("usr/share/zoneinfo/America/Sao_Paulo"); // Brazil +__static_yoink("usr/share/zoneinfo/America/Bogota"); // Columbia +__static_yoink("usr/share/zoneinfo/America/Lima"); // Peru +__static_yoink("usr/share/zoneinfo/America/Santiago"); // Chile +__static_yoink("usr/share/zoneinfo/America/Argentina/"); +__static_yoink("usr/share/zoneinfo/America/Argentina/Buenos_Aires"); +#ifdef EMBED_EVERY_TIME_ZONE +__static_yoink("usr/share/zoneinfo/America/Adak"); +__static_yoink("usr/share/zoneinfo/America/Araguaina"); +__static_yoink("usr/share/zoneinfo/America/Argentina/Catamarca"); +__static_yoink("usr/share/zoneinfo/America/Argentina/Cordoba"); +__static_yoink("usr/share/zoneinfo/America/Argentina/Jujuy"); +__static_yoink("usr/share/zoneinfo/America/Argentina/La_Rioja"); +__static_yoink("usr/share/zoneinfo/America/Argentina/Mendoza"); +__static_yoink("usr/share/zoneinfo/America/Argentina/Rio_Gallegos"); +__static_yoink("usr/share/zoneinfo/America/Argentina/Salta"); +__static_yoink("usr/share/zoneinfo/America/Argentina/San_Juan"); +__static_yoink("usr/share/zoneinfo/America/Argentina/San_Luis"); +__static_yoink("usr/share/zoneinfo/America/Argentina/Tucuman"); +__static_yoink("usr/share/zoneinfo/America/Argentina/Ushuaia"); +__static_yoink("usr/share/zoneinfo/America/Asuncion"); +__static_yoink("usr/share/zoneinfo/America/Bahia"); +__static_yoink("usr/share/zoneinfo/America/Bahia_Banderas"); +__static_yoink("usr/share/zoneinfo/America/Barbados"); +__static_yoink("usr/share/zoneinfo/America/Belem"); +__static_yoink("usr/share/zoneinfo/America/Belize"); +__static_yoink("usr/share/zoneinfo/America/Boa_Vista"); +__static_yoink("usr/share/zoneinfo/America/Boise"); +__static_yoink("usr/share/zoneinfo/America/Cambridge_Bay"); +__static_yoink("usr/share/zoneinfo/America/Campo_Grande"); +__static_yoink("usr/share/zoneinfo/America/Cancun"); +__static_yoink("usr/share/zoneinfo/America/Caracas"); +__static_yoink("usr/share/zoneinfo/America/Cayenne"); +__static_yoink("usr/share/zoneinfo/America/Chihuahua"); +__static_yoink("usr/share/zoneinfo/America/Ciudad_Juarez"); +__static_yoink("usr/share/zoneinfo/America/Costa_Rica"); +__static_yoink("usr/share/zoneinfo/America/Cuiaba"); +__static_yoink("usr/share/zoneinfo/America/Danmarkshavn"); +__static_yoink("usr/share/zoneinfo/America/Dawson"); +__static_yoink("usr/share/zoneinfo/America/Dawson_Creek"); +__static_yoink("usr/share/zoneinfo/America/Detroit"); +__static_yoink("usr/share/zoneinfo/America/Edmonton"); +__static_yoink("usr/share/zoneinfo/America/Eirunepe"); +__static_yoink("usr/share/zoneinfo/America/El_Salvador"); +__static_yoink("usr/share/zoneinfo/America/Fort_Nelson"); +__static_yoink("usr/share/zoneinfo/America/Fortaleza"); +__static_yoink("usr/share/zoneinfo/America/Glace_Bay"); +__static_yoink("usr/share/zoneinfo/America/Goose_Bay"); +__static_yoink("usr/share/zoneinfo/America/Grand_Turk"); +__static_yoink("usr/share/zoneinfo/America/Guatemala"); +__static_yoink("usr/share/zoneinfo/America/Guayaquil"); +__static_yoink("usr/share/zoneinfo/America/Guyana"); +__static_yoink("usr/share/zoneinfo/America/Halifax"); +__static_yoink("usr/share/zoneinfo/America/Havana"); +__static_yoink("usr/share/zoneinfo/America/Hermosillo"); +__static_yoink("usr/share/zoneinfo/America/Indiana/"); +__static_yoink("usr/share/zoneinfo/America/Indiana/Indianapolis"); +__static_yoink("usr/share/zoneinfo/America/Indiana/Knox"); +__static_yoink("usr/share/zoneinfo/America/Indiana/Marengo"); +__static_yoink("usr/share/zoneinfo/America/Indiana/Petersburg"); +__static_yoink("usr/share/zoneinfo/America/Indiana/Tell_City"); +__static_yoink("usr/share/zoneinfo/America/Indiana/Vevay"); +__static_yoink("usr/share/zoneinfo/America/Indiana/Vincennes"); +__static_yoink("usr/share/zoneinfo/America/Indiana/Winamac"); +__static_yoink("usr/share/zoneinfo/America/Inuvik"); +__static_yoink("usr/share/zoneinfo/America/Iqaluit"); +__static_yoink("usr/share/zoneinfo/America/Jamaica"); +__static_yoink("usr/share/zoneinfo/America/Juneau"); +__static_yoink("usr/share/zoneinfo/America/Kentucky/"); +__static_yoink("usr/share/zoneinfo/America/Kentucky/Louisville"); +__static_yoink("usr/share/zoneinfo/America/Kentucky/Monticello"); +__static_yoink("usr/share/zoneinfo/America/La_Paz"); +__static_yoink("usr/share/zoneinfo/America/Maceio"); +__static_yoink("usr/share/zoneinfo/America/Managua"); +__static_yoink("usr/share/zoneinfo/America/Manaus"); +__static_yoink("usr/share/zoneinfo/America/Martinique"); +__static_yoink("usr/share/zoneinfo/America/Matamoros"); +__static_yoink("usr/share/zoneinfo/America/Mazatlan"); +__static_yoink("usr/share/zoneinfo/America/Menominee"); +__static_yoink("usr/share/zoneinfo/America/Merida"); +__static_yoink("usr/share/zoneinfo/America/Metlakatla"); +__static_yoink("usr/share/zoneinfo/America/Miquelon"); +__static_yoink("usr/share/zoneinfo/America/Moncton"); +__static_yoink("usr/share/zoneinfo/America/Monterrey"); +__static_yoink("usr/share/zoneinfo/America/Montevideo"); +__static_yoink("usr/share/zoneinfo/America/Nome"); +__static_yoink("usr/share/zoneinfo/America/Noronha"); +__static_yoink("usr/share/zoneinfo/America/North_Dakota/"); +__static_yoink("usr/share/zoneinfo/America/North_Dakota/Beulah"); +__static_yoink("usr/share/zoneinfo/America/North_Dakota/Center"); +__static_yoink("usr/share/zoneinfo/America/North_Dakota/New_Salem"); +__static_yoink("usr/share/zoneinfo/America/Nuuk"); +__static_yoink("usr/share/zoneinfo/America/Ojinaga"); +__static_yoink("usr/share/zoneinfo/America/Panama"); +__static_yoink("usr/share/zoneinfo/America/Paramaribo"); +__static_yoink("usr/share/zoneinfo/America/Port-au-Prince"); +__static_yoink("usr/share/zoneinfo/America/Porto_Velho"); +__static_yoink("usr/share/zoneinfo/America/Puerto_Rico"); +__static_yoink("usr/share/zoneinfo/America/Punta_Arenas"); +__static_yoink("usr/share/zoneinfo/America/Rankin_Inlet"); +__static_yoink("usr/share/zoneinfo/America/Recife"); +__static_yoink("usr/share/zoneinfo/America/Regina"); +__static_yoink("usr/share/zoneinfo/America/Resolute"); +__static_yoink("usr/share/zoneinfo/America/Rio_Branco"); +__static_yoink("usr/share/zoneinfo/America/Santarem"); +__static_yoink("usr/share/zoneinfo/America/Santo_Domingo"); +__static_yoink("usr/share/zoneinfo/America/Scoresbysund"); +__static_yoink("usr/share/zoneinfo/America/Sitka"); +__static_yoink("usr/share/zoneinfo/America/St_Johns"); +__static_yoink("usr/share/zoneinfo/America/Swift_Current"); +__static_yoink("usr/share/zoneinfo/America/Tegucigalpa"); +__static_yoink("usr/share/zoneinfo/America/Thule"); +__static_yoink("usr/share/zoneinfo/America/Tijuana"); +__static_yoink("usr/share/zoneinfo/America/Toronto"); +__static_yoink("usr/share/zoneinfo/America/Vancouver"); +__static_yoink("usr/share/zoneinfo/America/Whitehorse"); +__static_yoink("usr/share/zoneinfo/America/Winnipeg"); +__static_yoink("usr/share/zoneinfo/America/Yakuatt"); +#endif + +__static_yoink("usr/share/zoneinfo/Europe/"); +__static_yoink("usr/share/zoneinfo/Europe/Zurich"); // Switzerland +__static_yoink("usr/share/zoneinfo/Europe/Dublin"); // Ireland +__static_yoink("usr/share/zoneinfo/Europe/London"); // UK +__static_yoink("usr/share/zoneinfo/Europe/Paris"); // France +__static_yoink("usr/share/zoneinfo/Europe/Berlin"); // Germany +__static_yoink("usr/share/zoneinfo/Europe/Rome"); // Italy +__static_yoink("usr/share/zoneinfo/Europe/Moscow"); // Moscow +__static_yoink("usr/share/zoneinfo/Europe/Madrid"); // Spain +__static_yoink("usr/share/zoneinfo/Europe/Warsaw"); // Poland +__static_yoink("usr/share/zoneinfo/Europe/Brussels"); // Belgium +__static_yoink("usr/share/zoneinfo/Europe/Budapest"); // Hungary +__static_yoink("usr/share/zoneinfo/Europe/Vienna"); // Austria +__static_yoink("usr/share/zoneinfo/Europe/Prague"); // Czech Republic +__static_yoink("usr/share/zoneinfo/Europe/Kyiv"); // Ukraine +__static_yoink("usr/share/zoneinfo/Europe/Istanbul"); // Turkey +#ifdef EMBED_EVERY_TIME_ZONE +__static_yoink("usr/share/zoneinfo/Europe/Lisbon"); +__static_yoink("usr/share/zoneinfo/Europe/Athens"); +__static_yoink("usr/share/zoneinfo/Europe/Andorra"); +__static_yoink("usr/share/zoneinfo/Europe/Astrakhan"); +__static_yoink("usr/share/zoneinfo/Europe/Belgrade"); +__static_yoink("usr/share/zoneinfo/Europe/Bucharest"); +__static_yoink("usr/share/zoneinfo/Europe/Chisinau"); +__static_yoink("usr/share/zoneinfo/Europe/Gibraltar"); +__static_yoink("usr/share/zoneinfo/Europe/Helsinki"); +__static_yoink("usr/share/zoneinfo/Europe/Kaliningrad"); +__static_yoink("usr/share/zoneinfo/Europe/Kirov"); +__static_yoink("usr/share/zoneinfo/Europe/Malta"); +__static_yoink("usr/share/zoneinfo/Europe/Minsk"); +__static_yoink("usr/share/zoneinfo/Europe/Riga"); +__static_yoink("usr/share/zoneinfo/Europe/Samara"); +__static_yoink("usr/share/zoneinfo/Europe/Saratov"); +__static_yoink("usr/share/zoneinfo/Europe/Simferopol"); +__static_yoink("usr/share/zoneinfo/Europe/Sofia"); +__static_yoink("usr/share/zoneinfo/Europe/Tallinn"); +__static_yoink("usr/share/zoneinfo/Europe/Tirane"); +__static_yoink("usr/share/zoneinfo/Europe/Ulyanovsk"); +__static_yoink("usr/share/zoneinfo/Europe/Vilnius"); +__static_yoink("usr/share/zoneinfo/Europe/Volgograd"); +#endif + +__static_yoink("usr/share/zoneinfo/Asia/"); +__static_yoink("usr/share/zoneinfo/Asia/Jerusalem"); // Israel +__static_yoink("usr/share/zoneinfo/Asia/Taipei"); // Taiwan +__static_yoink("usr/share/zoneinfo/Asia/Kolkata"); // India +__static_yoink("usr/share/zoneinfo/Asia/Tokyo"); // Japan +__static_yoink("usr/share/zoneinfo/Asia/Shanghai"); // China +__static_yoink("usr/share/zoneinfo/Asia/Dubai"); // U.A.E. +__static_yoink("usr/share/zoneinfo/Asia/Seoul"); // South Korea +__static_yoink("usr/share/zoneinfo/Asia/Singapore"); // Singapore +__static_yoink("usr/share/zoneinfo/Asia/Tehran"); // Iran +__static_yoink("usr/share/zoneinfo/Asia/Hong_Kong"); // Hong Kong +__static_yoink("usr/share/zoneinfo/Asia/Manila"); // Philippines +__static_yoink("usr/share/zoneinfo/Asia/Bangkok"); // Thailand +__static_yoink("usr/share/zoneinfo/Asia/Jakarta"); // Indonesia +__static_yoink("usr/share/zoneinfo/Asia/Karachi"); // Pakistan +__static_yoink("usr/share/zoneinfo/Asia/Kabul"); // Afghanistan +__static_yoink("usr/share/zoneinfo/Asia/Dhaka"); // Bangladesh +#ifdef EMBED_EVERY_TIME_ZONE +__static_yoink("usr/share/zoneinfo/Asia/Almaty"); +__static_yoink("usr/share/zoneinfo/Asia/Amman"); +__static_yoink("usr/share/zoneinfo/Asia/Anadyr"); +__static_yoink("usr/share/zoneinfo/Asia/Aqtau"); +__static_yoink("usr/share/zoneinfo/Asia/Aqtobe"); +__static_yoink("usr/share/zoneinfo/Asia/Ashgabat"); +__static_yoink("usr/share/zoneinfo/Asia/Atyrau"); +__static_yoink("usr/share/zoneinfo/Asia/Baghdad"); +__static_yoink("usr/share/zoneinfo/Asia/Baku"); +__static_yoink("usr/share/zoneinfo/Asia/Barnaul"); +__static_yoink("usr/share/zoneinfo/Asia/Beirut"); +__static_yoink("usr/share/zoneinfo/Asia/Bishkek"); +__static_yoink("usr/share/zoneinfo/Asia/Chita"); +__static_yoink("usr/share/zoneinfo/Asia/Choibalsan"); +__static_yoink("usr/share/zoneinfo/Asia/Colombo"); +__static_yoink("usr/share/zoneinfo/Asia/Damascus"); +__static_yoink("usr/share/zoneinfo/Asia/Dili"); +__static_yoink("usr/share/zoneinfo/Asia/Dushanbe"); +__static_yoink("usr/share/zoneinfo/Asia/Famagusta"); +__static_yoink("usr/share/zoneinfo/Asia/Gaza"); +__static_yoink("usr/share/zoneinfo/Asia/Hebron"); +__static_yoink("usr/share/zoneinfo/Asia/Ho_Chi_Minh"); +__static_yoink("usr/share/zoneinfo/Asia/Hovd"); +__static_yoink("usr/share/zoneinfo/Asia/Irkutsk"); +__static_yoink("usr/share/zoneinfo/Asia/Jayapura"); +__static_yoink("usr/share/zoneinfo/Asia/Kamchatka"); +__static_yoink("usr/share/zoneinfo/Asia/Kathmandu"); +__static_yoink("usr/share/zoneinfo/Asia/Khandyga"); +__static_yoink("usr/share/zoneinfo/Asia/Krasnoyarsk"); +__static_yoink("usr/share/zoneinfo/Asia/Kuching"); +__static_yoink("usr/share/zoneinfo/Asia/Macau"); +__static_yoink("usr/share/zoneinfo/Asia/Magadan"); +__static_yoink("usr/share/zoneinfo/Asia/Makassar"); +__static_yoink("usr/share/zoneinfo/Asia/Nicosia"); +__static_yoink("usr/share/zoneinfo/Asia/Novokuznetsk"); +__static_yoink("usr/share/zoneinfo/Asia/Novosibirsk"); +__static_yoink("usr/share/zoneinfo/Asia/Omsk"); +__static_yoink("usr/share/zoneinfo/Asia/Oral"); +__static_yoink("usr/share/zoneinfo/Asia/Pontianak"); +__static_yoink("usr/share/zoneinfo/Asia/Pyongyang"); +__static_yoink("usr/share/zoneinfo/Asia/Qatar"); +__static_yoink("usr/share/zoneinfo/Asia/Qostanay"); +__static_yoink("usr/share/zoneinfo/Asia/Qyzylorda"); +__static_yoink("usr/share/zoneinfo/Asia/Riyadh"); +__static_yoink("usr/share/zoneinfo/Asia/Sakhalin"); +__static_yoink("usr/share/zoneinfo/Asia/Samarkand"); +__static_yoink("usr/share/zoneinfo/Asia/Srednekolymsk"); +__static_yoink("usr/share/zoneinfo/Asia/Tashkent"); +__static_yoink("usr/share/zoneinfo/Asia/Tbilisi"); +__static_yoink("usr/share/zoneinfo/Asia/Thimphu"); +__static_yoink("usr/share/zoneinfo/Asia/Tomsk"); +__static_yoink("usr/share/zoneinfo/Asia/Ulaanbaatar"); +__static_yoink("usr/share/zoneinfo/Asia/Urumqi"); +__static_yoink("usr/share/zoneinfo/Asia/Ust-Nera"); +__static_yoink("usr/share/zoneinfo/Asia/Vladivostok"); +__static_yoink("usr/share/zoneinfo/Asia/Yakutsk"); +__static_yoink("usr/share/zoneinfo/Asia/Yangon"); +__static_yoink("usr/share/zoneinfo/Asia/Yekaterinburg"); +__static_yoink("usr/share/zoneinfo/Asia/Yerevan"); +#endif + +__static_yoink("usr/share/zoneinfo/Pacific/"); +__static_yoink("usr/share/zoneinfo/Pacific/Honolulu"); // U.S. +__static_yoink("usr/share/zoneinfo/Pacific/Guam"); // U.S. +__static_yoink("usr/share/zoneinfo/Pacific/Auckland"); // New Zealand +__static_yoink("usr/share/zoneinfo/Pacific/Fiji"); // Fiji +__static_yoink("usr/share/zoneinfo/Pacific/Port_Moresby"); // Papua New Guinea +#ifdef EMBED_EVERY_TIME_ZONE +__static_yoink("usr/share/zoneinfo/Pacific/Apia"); +__static_yoink("usr/share/zoneinfo/Pacific/Bougainville"); +__static_yoink("usr/share/zoneinfo/Pacific/Chatham"); +__static_yoink("usr/share/zoneinfo/Pacific/Easter"); +__static_yoink("usr/share/zoneinfo/Pacific/Efate"); +__static_yoink("usr/share/zoneinfo/Pacific/Fakaofo"); +__static_yoink("usr/share/zoneinfo/Pacific/Galapagos"); +__static_yoink("usr/share/zoneinfo/Pacific/Gambier"); +__static_yoink("usr/share/zoneinfo/Pacific/Guadalcanal"); +__static_yoink("usr/share/zoneinfo/Pacific/Kanton"); +__static_yoink("usr/share/zoneinfo/Pacific/Kiritimati"); +__static_yoink("usr/share/zoneinfo/Pacific/Kosrae"); +__static_yoink("usr/share/zoneinfo/Pacific/Kwajalein"); +__static_yoink("usr/share/zoneinfo/Pacific/Marquesas"); +__static_yoink("usr/share/zoneinfo/Pacific/Nauru"); +__static_yoink("usr/share/zoneinfo/Pacific/Niue"); +__static_yoink("usr/share/zoneinfo/Pacific/Norfolk"); +__static_yoink("usr/share/zoneinfo/Pacific/Noumea"); +__static_yoink("usr/share/zoneinfo/Pacific/Pago_Pago"); +__static_yoink("usr/share/zoneinfo/Pacific/Palau"); +__static_yoink("usr/share/zoneinfo/Pacific/Pitcairn"); +__static_yoink("usr/share/zoneinfo/Pacific/Rarotonga"); +__static_yoink("usr/share/zoneinfo/Pacific/Tahiti"); +__static_yoink("usr/share/zoneinfo/Pacific/Tarawa"); +__static_yoink("usr/share/zoneinfo/Pacific/Tongatapu"); +#endif + +__static_yoink("usr/share/zoneinfo/Africa/"); +__static_yoink("usr/share/zoneinfo/Africa/Lagos"); // Nigeria +__static_yoink("usr/share/zoneinfo/Africa/Cairo"); // Egypt +__static_yoink("usr/share/zoneinfo/Africa/Algiers"); // Algeria +__static_yoink("usr/share/zoneinfo/Africa/Johannesburg"); // South Africa +__static_yoink("usr/share/zoneinfo/Africa/Nairobi"); // Kenya +#ifdef EMBED_EVERY_TIME_ZONE +__static_yoink("usr/share/zoneinfo/Africa/Casablanca"); +__static_yoink("usr/share/zoneinfo/Africa/Abidjan"); +__static_yoink("usr/share/zoneinfo/Africa/Bissau"); +__static_yoink("usr/share/zoneinfo/Africa/Ceuta"); +__static_yoink("usr/share/zoneinfo/Africa/El_Aaiun"); +__static_yoink("usr/share/zoneinfo/Africa/Juba"); +__static_yoink("usr/share/zoneinfo/Africa/Khartoum"); +__static_yoink("usr/share/zoneinfo/Africa/Maputo"); +__static_yoink("usr/share/zoneinfo/Africa/Monrovia"); +__static_yoink("usr/share/zoneinfo/Africa/Ndjamena"); +__static_yoink("usr/share/zoneinfo/Africa/Sao_Tome"); +__static_yoink("usr/share/zoneinfo/Africa/Tripoli"); +__static_yoink("usr/share/zoneinfo/Africa/Tunis"); +__static_yoink("usr/share/zoneinfo/Africa/Windhoek"); +#endif + +__static_yoink("usr/share/zoneinfo/Australia/"); +__static_yoink("usr/share/zoneinfo/Australia/Sydney"); +__static_yoink("usr/share/zoneinfo/Australia/Melbourne"); +__static_yoink("usr/share/zoneinfo/Australia/Brisbane"); +__static_yoink("usr/share/zoneinfo/Australia/Perth"); +__static_yoink("usr/share/zoneinfo/Australia/Adelaide"); +#ifdef EMBED_EVERY_TIME_ZONE +__static_yoink("usr/share/zoneinfo/Australia/Broken_Hill"); +__static_yoink("usr/share/zoneinfo/Australia/Darwin"); +__static_yoink("usr/share/zoneinfo/Australia/Eucla"); +__static_yoink("usr/share/zoneinfo/Australia/Hobart"); +__static_yoink("usr/share/zoneinfo/Australia/Lindeman"); +__static_yoink("usr/share/zoneinfo/Australia/Lord_Howe"); +#endif + +#ifdef EMBED_EVERY_TIME_ZONE +__static_yoink("usr/share/zoneinfo/Atlantic/"); +__static_yoink("usr/share/zoneinfo/Atlantic/Canary"); +__static_yoink("usr/share/zoneinfo/Atlantic/Azores"); +__static_yoink("usr/share/zoneinfo/Atlantic/Bermuda"); +__static_yoink("usr/share/zoneinfo/Atlantic/Cape_Verde"); +__static_yoink("usr/share/zoneinfo/Atlantic/Faroe"); +__static_yoink("usr/share/zoneinfo/Atlantic/Madeira"); +__static_yoink("usr/share/zoneinfo/Atlantic/South_Georgia"); +__static_yoink("usr/share/zoneinfo/Atlantic/Stanley"); +#endif + +#ifdef EMBED_EVERY_TIME_ZONE +__static_yoink("usr/share/zoneinfo/Indian/"); +__static_yoink("usr/share/zoneinfo/Indian/Chagos"); +__static_yoink("usr/share/zoneinfo/Indian/Maldives"); +__static_yoink("usr/share/zoneinfo/Indian/Mauritius"); +#endif + +#ifdef EMBED_EVERY_TIME_ZONE +__static_yoink("usr/share/zoneinfo/Antarctica/"); +__static_yoink("usr/share/zoneinfo/Antarctica/Casey"); +__static_yoink("usr/share/zoneinfo/Antarctica/Davis"); +__static_yoink("usr/share/zoneinfo/Antarctica/Macquarie"); +__static_yoink("usr/share/zoneinfo/Antarctica/Mawson"); +__static_yoink("usr/share/zoneinfo/Antarctica/Palmer"); +__static_yoink("usr/share/zoneinfo/Antarctica/Rothera"); +__static_yoink("usr/share/zoneinfo/Antarctica/Troll"); +__static_yoink("usr/share/zoneinfo/Antarctica/Vostok"); +#endif + +#define ABS(X) ((X) >= 0 ? (X) : -(X)) + +static const struct { + const char *const wname; + const char *const zname; +} kWindowsZones[] = { + {"AUS Eastern Standard Time", "Australia/Sydney"}, // +1000 AEST + {"Afghanistan Standard Time", "Asia/Kabul"}, // +0430 +0430 + {"Alaskan Standard Time", "America/Anchorage"}, // -0800 AKDT + {"Arabian Standard Time", "Asia/Dubai"}, // +0400 +04 + {"Arabic Standard Time", "Asia/Baghdad"}, // +0300 +03 + {"Argentina Standard Time", "America/Argentina/Buenos_Aires"}, // -0300 -03 + {"Bangladesh Standard Time", "Asia/Dhaka"}, // +0600 +06 + {"Cen. Australia Standard Time", "Australia/Adelaide"}, // +0930 ACST + {"Central Europe Standard Time", "Europe/Budapest"}, // +0200 CEST + {"Central European Standard Time", "Europe/Warsaw"}, // +0200 CEST + {"Central Standard Time (Mexico)", "America/Mexico_City"}, // -0600 CST + {"Central Standard Time", "America/Chicago"}, // -0500 CDT + {"China Standard Time", "Asia/Shanghai"}, // +0800 CST + {"Dateline Standard Time", "Etc/GMT+12"}, // -1200 -12 + {"E. Africa Standard Time", "Africa/Nairobi"}, // +0300 EAT + {"E. Australia Standard Time", "Australia/Brisbane"}, // +1000 AEST + {"E. South America Standard Time", "America/Sao_Paulo"}, // -0300 -03 + {"Eastern Standard Time", "America/New_York"}, // -0400 EDT + {"Egypt Standard Time", "Africa/Cairo"}, // +0300 EEST + {"Fiji Standard Time", "Pacific/Fiji"}, // +1200 +12 + {"GMT Standard Time", "Europe/London"}, // +0100 BST + {"Hawaiian Standard Time", "Pacific/Honolulu"}, // -1000 HST + {"India Standard Time", "Asia/Kolkata"}, // +0530 IST + {"Iran Standard Time", "Asia/Tehran"}, // +0330 +0330 + {"Israel Standard Time", "Asia/Jerusalem"}, // +0300 IDT + {"Korea Standard Time", "Asia/Seoul"}, // +0900 KST + {"Mid-Atlantic Standard Time", "Etc/GMT+2"}, // -0200 -02 + {"Mountain Standard Time", "America/Denver"}, // -0600 MDT + {"New Zealand Standard Time", "Pacific/Auckland"}, // +1200 NZST + {"Pacific SA Standard Time", "America/Santiago"}, // -0400 -04 + {"Pacific Standard Time", "America/Los_Angeles"}, // -0700 PDT + {"Pakistan Standard Time", "Asia/Karachi"}, // +0500 PKT + {"Romance Standard Time", "Europe/Paris"}, // +0200 CEST + {"Russian Standard Time", "Europe/Moscow"}, // +0300 MSK + {"SA Pacific Standard Time", "America/Bogota"}, // -0500 -05 + {"SE Asia Standard Time", "Asia/Bangkok"}, // +0700 +07 + {"Singapore Standard Time", "Asia/Singapore"}, // +0800 +08 + {"South Africa Standard Time", "Africa/Johannesburg"}, // +0200 SAST + {"Taipei Standard Time", "Asia/Taipei"}, // +0800 CST + {"Tokyo Standard Time", "Asia/Tokyo"}, // +0900 JST + {"Turkey Standard Time", "Europe/Istanbul"}, // +0300 +03 + {"US Mountain Standard Time", "America/Phoenix"}, // -0700 MST + {"UTC", "Etc/UTC"}, // +0000 UTC + {"UTC+12", "Etc/GMT-12"}, // +1200 +12 + {"UTC-02", "Etc/GMT+2"}, // -0200 -02 + {"UTC-08", "Etc/GMT+8"}, // -0800 -08 + {"UTC-09", "Etc/GMT+9"}, // -0900 -09 + {"UTC-11", "Etc/GMT+11"}, // -1100 -11 + {"W. Australia Standard Time", "Australia/Perth"}, // +0800 AWST + {"W. Central Africa Standard Time", "Africa/Lagos"}, // +0100 WAT + {"W. Europe Standard Time", "Europe/Berlin"}, // +0200 CEST + {"West Pacific Standard Time", "Pacific/Port_Moresby"}, // +1000 +10 +#ifdef EMBED_EVERY_TIME_ZONE + {"AUS Central Standard Time", "Australia/Darwin"}, // +0930 ACST + {"Aleutian Standard Time", "America/Adak"}, // -0900 HDT + {"Altai Standard Time", "Asia/Barnaul"}, // +0700 +07 + {"Arab Standard Time", "Asia/Riyadh"}, // +0300 +03 + {"Astrakhan Standard Time", "Europe/Astrakhan"}, // +0400 +04 + {"Atlantic Standard Time", "America/Halifax"}, // -0300 ADT + {"Aus Central W. Standard Time", "Australia/Eucla"}, // +0845 +0845 + {"Azerbaijan Standard Time", "Asia/Baku"}, // +0400 +04 + {"Azores Standard Time", "Atlantic/Azores"}, // +0000 +00 + {"Bahia Standard Time", "America/Bahia"}, // -0300 -03 + {"Belarus Standard Time", "Europe/Minsk"}, // +0300 +03 + {"Bougainville Standard Time", "Pacific/Bougainville"}, // +1100 +11 + {"Canada Central Standard Time", "America/Regina"}, // -0600 CST + {"Cape Verde Standard Time", "Atlantic/Cape_Verde"}, // -0100 -01 + {"Caucasus Standard Time", "Asia/Yerevan"}, // +0400 +04 + {"Central America Standard Time", "America/Guatemala"}, // -0600 CST + {"Central Asia Standard Time", "Asia/Almaty"}, // +0500 +05 + {"Central Brazilian Standard Time", "America/Cuiaba"}, // -0400 -04 + {"Central Pacific Standard Time", "Pacific/Guadalcanal"}, // +1100 +11 + {"Chatham Islands Standard Time", "Pacific/Chatham"}, // +1245 +1245 + {"Cuba Standard Time", "America/Havana"}, // -0400 CDT + {"E. Europe Standard Time", "Europe/Chisinau"}, // +0300 EEST + {"Easter Island Standard Time", "Pacific/Easter"}, // -0600 -06 + {"Eastern Standard Time (Mexico)", "America/Cancun"}, // -0500 EST + {"Ekaterinburg Standard Time", "Asia/Yekaterinburg"}, // +0500 +05 + {"FLE Standard Time", "Europe/Helsinki"}, // +0300 EEST + {"GTB Standard Time", "Europe/Bucharest"}, // +0300 EEST + {"Georgian Standard Time", "Asia/Tbilisi"}, // +0400 +04 + {"Greenwich Standard Time", "Atlantic/St_Helena"}, // +0000 GMT + {"Haiti Standard Time", "America/Port-au-Prince"}, // -0400 EDT + {"Jordan Standard Time", "Asia/Amman"}, // +0300 +03 + {"Kaliningrad Standard Time", "Europe/Kaliningrad"}, // +0200 EET + {"Kamchatka Standard Time", "Asia/Kamchatka"}, // +1200 +12 + {"Libya Standard Time", "Africa/Tripoli"}, // +0200 EET + {"Line Islands Standard Time", "Pacific/Kiritimati"}, // +1400 +14 + {"Lord Howe Standard Time", "Australia/Lord_Howe"}, // +1030 +1030 + {"Magadan Standard Time", "Asia/Magadan"}, // +1100 +11 + {"Marquesas Standard Time", "Pacific/Marquesas"}, // -0930 -0930 + {"Mauritius Standard Time", "Indian/Mauritius"}, // +0400 +04 + {"Middle East Standard Time", "Asia/Beirut"}, // +0300 EEST + {"Montevideo Standard Time", "America/Montevideo"}, // -0300 -03 + {"Morocco Standard Time", "Africa/Casablanca"}, // +0100 +01 + {"Mountain Standard Time (Mexico)", "America/Chihuahua"}, // -0600 CST + {"Myanmar Standard Time", "Asia/Yangon"}, // +0630 +0630 + {"N. Central Asia Standard Time", "Asia/Novosibirsk"}, // +0700 +07 + {"Namibia Standard Time", "Africa/Windhoek"}, // +0200 CAT + {"Nepal Standard Time", "Asia/Kathmandu"}, // +0545 +0545 + {"Newfoundland Standard Time", "America/St_Johns"}, // -0230 NDT + {"Norfolk Standard Time", "Pacific/Norfolk"}, // +1100 +11 + {"North Asia East Standard Time", "Asia/Irkutsk"}, // +0800 +08 + {"North Asia Standard Time", "Asia/Krasnoyarsk"}, // +0700 +07 + {"North Korea Standard Time", "Asia/Pyongyang"}, // +0900 KST + {"Omsk Standard Time", "Asia/Omsk"}, // +0600 +06 + {"Pacific Standard Time (Mexico)", "America/Tijuana"}, // -0700 PDT + {"Paraguay Standard Time", "America/Asuncion"}, // -0400 -04 + {"Russia Time Zone 10", "Asia/Srednekolymsk"}, // +1100 +11 + {"Russia Time Zone 11", "Asia/Kamchatka"}, // +1200 +12 + {"Russia Time Zone 3", "Europe/Samara"}, // +0400 +04 + {"SA Eastern Standard Time", "America/Cayenne"}, // -0300 -03 + {"SA Western Standard Time", "America/La_Paz"}, // -0400 -04 + {"Saint Pierre Standard Time", "America/Miquelon"}, // -0200 -02 + {"Sakhalin Standard Time", "Asia/Sakhalin"}, // +1100 +11 + {"Samoa Standard Time", "Pacific/Apia"}, // +1300 +13 + {"Sri Lanka Standard Time", "Asia/Colombo"}, // +0530 +0530 + {"Syria Standard Time", "Asia/Damascus"}, // +0300 +03 + {"Tasmania Standard Time", "Australia/Hobart"}, // +1000 AEST + {"Tocantins Standard Time", "America/Araguaina"}, // -0300 -03 + {"Tomsk Standard Time", "Asia/Tomsk"}, // +0700 +07 + {"Tonga Standard Time", "Pacific/Tongatapu"}, // +1300 +13 + {"Transbaikal Standard Time", "Asia/Chita"}, // +0900 +09 + {"Turks And Caicos Standard Time", "America/Grand_Turk"}, // -0400 EDT + {"US Eastern Standard Time", "America/Indiana/Indianapolis"}, // -0400 EDT + {"Ulaanbaatar Standard Time", "Asia/Ulaanbaatar"}, // +0800 +08 + {"Venezuela Standard Time", "America/Caracas"}, // -0400 -04 + {"Vladivostok Standard Time", "Asia/Vladivostok"}, // +1000 +10 + {"W. Mongolia Standard Time", "Asia/Hovd"}, // +0700 +07 + {"West Asia Standard Time", "Asia/Tashkent"}, // +0500 +05 + {"West Bank Standard Time", "Asia/Hebron"}, // +0300 EEST + {"Yakutsk Standard Time", "Asia/Yakutsk"}, // +0900 +09 +#endif +}; + +static int +strcmp168(const char16_t *l, const char *r) +{ + int i = 0; + while (l[i] == r[i] && r[i]) + ++i; + return l[i] - r[i]; +} + +static textwindows dontinline void +localtime_windows_init(void) +{ + int i; + if (getenv("TZ")) + return; + struct NtTimeZoneInformation tzi; + GetTimeZoneInformation(&tzi); + if (!tzi.Bias) + return; + for (i = 0; i < sizeof(kWindowsZones) / sizeof(kWindowsZones[0]); ++i) { + if (!strcmp168(tzi.StandardName, kWindowsZones[i].wname)) { + setenv("TZ", kWindowsZones[i].zname, true); + return; + } + } + int hours = ABS(tzi.Bias) / 60 % 24; + int minutes = ABS(tzi.Bias) % 60; + char buf[16]; + buf[0] = '<'; + buf[1] = tzi.Bias > 0 ? '-' : '+'; + buf[2] = '0' + hours / 10; + buf[4] = '0' + hours % 10; + buf[5] = '0' + minutes / 10; + buf[6] = '0' + minutes % 10; + buf[7] = '>'; + buf[8] = tzi.Bias > 0 ? '+' : '-'; + buf[9] = '0' + hours / 10; + buf[10] = '0' + hours % 10; + buf[11] = ':'; + buf[12] = '0' + minutes / 10; + buf[13] = '0' + minutes % 10; + buf[14] = 0; + setenv("TZ", buf, true); +} + +static pthread_mutex_t locallock = PTHREAD_MUTEX_INITIALIZER; + +static dontinline void +localtime_wipe(void) +{ pthread_mutex_init(&locallock, 0); } -void localtime_lock(void) { +static dontinline void +localtime_lock(void) +{ pthread_mutex_lock(&locallock); } -void localtime_unlock(void) { +static dontinline void +localtime_unlock(void) +{ pthread_mutex_unlock(&locallock); } __attribute__((__constructor__(80))) -static textstartup void localtime_init(void) { +textstartup static void +localtime_init(void) +{ localtime_wipe(); pthread_atfork(localtime_lock, localtime_unlock, localtime_wipe); + if (IsWindows()) + localtime_windows_init(); } -#ifndef TZ_ABBR_MAX_LEN -#define TZ_ABBR_MAX_LEN 16 -#endif /* !defined TZ_ABBR_MAX_LEN */ - #ifndef TZ_ABBR_CHAR_SET -#define TZ_ABBR_CHAR_SET \ +# define TZ_ABBR_CHAR_SET \ "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 :+-._" #endif /* !defined TZ_ABBR_CHAR_SET */ #ifndef TZ_ABBR_ERR_CHAR -#define TZ_ABBR_ERR_CHAR '_' +# define TZ_ABBR_ERR_CHAR '_' #endif /* !defined TZ_ABBR_ERR_CHAR */ +/* +** Support non-POSIX platforms that distinguish between text and binary files. +*/ + +#ifndef O_BINARY +# define O_BINARY 0 +#endif + #ifndef WILDABBR /* ** Someone might make incorrect use of a time zone abbreviation: @@ -101,12 +692,13 @@ static textstartup void localtime_init(void) { ** manual page of what this "time zone abbreviation" means (doing this so ** that tzname[0] has the "normal" length of three characters). */ -#define WILDABBR " " +# define WILDABBR " " #endif /* !defined WILDABBR */ static const char wildabbr[] = WILDABBR; -static const char gmt[] = "GMT"; +static char const etc_utc[] = "Etc/UTC"; +static char const *utc = etc_utc + sizeof "Etc/" - 1; /* ** The DST rules to use if TZ has no rules and we can't load TZDEFRULES. @@ -115,11 +707,11 @@ static const char gmt[] = "GMT"; ** for historical reasons, US rules are a common default. */ #ifndef TZDEFRULESTRING -#define TZDEFRULESTRING ",M3.2.0,M11.1.0" +# define TZDEFRULESTRING ",M3.2.0,M11.1.0" #endif struct ttinfo { /* time type information */ - int32_t tt_utoff; /* UT offset in seconds */ + int_fast32_t tt_utoff; /* UT offset in seconds */ bool tt_isdst; /* used to set tm_isdst */ int tt_desigidx; /* abbreviation list index */ bool tt_ttisstd; /* transition is std time */ @@ -128,12 +720,9 @@ struct ttinfo { /* time type information */ struct lsinfo { /* leap second information */ time_t ls_trans; /* transition time */ - int32_t ls_corr; /* correction to apply */ + int_fast32_t ls_corr; /* correction to apply */ }; -#define SMALLEST(a, b) (((a) < (b)) ? (a) : (b)) -#define BIGGEST(a, b) (((a) > (b)) ? (a) : (b)) - /* This abbreviation means local time is unspecified. */ static char const UNSPEC[] = "-00"; @@ -141,15 +730,19 @@ static char const UNSPEC[] = "-00"; This needs to be at least 1 for null termination in case the input data isn't properly terminated, and it also needs to be big enough for ttunspecified to work without crashing. */ -enum { CHARS_EXTRA = BIGGEST(sizeof UNSPEC, 2) - 1 }; +enum { CHARS_EXTRA = max(sizeof UNSPEC, 2) - 1 }; -#ifdef TZNAME_MAX -#define MY_TZNAME_MAX TZNAME_MAX -#endif /* defined TZNAME_MAX */ -#ifndef TZNAME_MAX -#define MY_TZNAME_MAX 255 -#endif /* !defined TZNAME_MAX */ +/* Limit to time zone abbreviation length in POSIX.1-2017-style TZ strings. + This is distinct from TZ_MAX_CHARS, which limits TZif file contents. */ +#ifndef TZNAME_MAXIMUM +# define TZNAME_MAXIMUM 255 +#endif +/* A representation of the contents of a TZif file. Ideally this + would have no size limits; the following sizes should suffice for + practical use. This struct should not be too large, as instances + are put on the stack and stacks are relatively small on some platforms. + See tzfile.h for more about the sizes. */ struct state { int leapcnt; int timecnt; @@ -160,15 +753,9 @@ struct state { time_t ats[TZ_MAX_TIMES]; unsigned char types[TZ_MAX_TIMES]; struct ttinfo ttis[TZ_MAX_TYPES]; - char chars[BIGGEST(BIGGEST(TZ_MAX_CHARS + CHARS_EXTRA, - sizeof gmt), - (2 * (MY_TZNAME_MAX + 1)))]; + char chars[max(max(TZ_MAX_CHARS + CHARS_EXTRA, sizeof "UTC"), + 2 * (TZNAME_MAXIMUM + 1))]; struct lsinfo lsis[TZ_MAX_LEAPS]; - - /* The time type to use for early times or if no transitions. - It is always zero for recent tzdb releases. - It might be nonzero for data from tzdb 2018e or earlier. */ - int defaulttype; }; enum r_type { @@ -182,25 +769,33 @@ struct rule { int r_day; /* day number of rule */ int r_week; /* week number of rule */ int r_mon; /* month number of rule */ - int32_t r_time; /* transition time of rule */ + int_fast32_t r_time; /* transition time of rule */ }; -static struct tm *gmtsub(struct state const *, time_t const *, int32_t, +static struct tm *gmtsub(struct state const *, time_t const *, int_fast32_t, struct tm *); static bool increment_overflow(int *, int); -static bool increment_overflow_time(time_t *, int32_t); -static int32_t leapcorr(struct state const *, time_t); -static bool normalize_overflow32(int32_t *, int *, int); -static struct tm *localtime_timesub(time_t const *, int32_t, - struct state const *, struct tm *); -static bool localtime_typesequiv(struct state const *, int, int); -static bool localtime_tzparse(char const *, struct state *, struct state *); +static bool increment_overflow_time(time_t *, int_fast32_t); +static int_fast32_t leapcorr(struct state const *, time_t); +static bool normalize_overflow32(int_fast32_t *, int *, int); +static struct tm *timesub(time_t const *, int_fast32_t, struct state const *, + struct tm *); +static bool localtime_tzparse(char const *, struct state *, struct state const *); +#ifdef ALL_STATE static struct state * lclptr; static struct state * gmtptr; +#endif /* defined ALL_STATE */ + +#ifndef ALL_STATE +static struct state lclmem; +static struct state gmtmem; +static struct state *const lclptr = &lclmem; +static struct state *const gmtptr = &gmtmem; +#endif /* State Farm */ #ifndef TZ_STRLEN_MAX -#define TZ_STRLEN_MAX 255 +# define TZ_STRLEN_MAX 255 #endif /* !defined TZ_STRLEN_MAX */ static char lcl_TZname[TZ_STRLEN_MAX + 1]; @@ -212,9 +807,14 @@ static int lcl_is_set; ** ctime, gmtime, localtime] return values in one of two static ** objects: a broken-down time structure and an array of char. ** Thanks to Paul Eggert for noting this. +** +** This requirement was removed in C99, so support it only if requested, +** as support is more likely to lead to bugs in badly written programs. */ +#if SUPPORT_C89 static struct tm tm; +#endif #if 2 <= HAVE_TZNAME + TZ_TIME_T char * tzname[2] = { @@ -232,7 +832,7 @@ long altzone; /* Initialize *S to a value based on UTOFF, ISDST, and DESIGIDX. */ static void -init_ttinfo(struct ttinfo *s, int32_t utoff, bool isdst, int desigidx) +init_ttinfo(struct ttinfo *s, int_fast32_t utoff, bool isdst, int desigidx) { s->tt_utoff = utoff; s->tt_isdst = isdst; @@ -250,12 +850,50 @@ ttunspecified(struct state const *sp, int i) return memcmp(abbr, UNSPEC, sizeof UNSPEC) == 0; } -forceinline int32_t detzcode(const char *const codep) { - return READ32BE(codep); +static int_fast32_t +detzcode(const char *const codep) +{ + register int_fast32_t result; + register int i; + int_fast32_t one = 1; + int_fast32_t halfmaxval = one << (32 - 2); + int_fast32_t maxval = halfmaxval - 1 + halfmaxval; + int_fast32_t minval = -1 - maxval; + + result = codep[0] & 0x7f; + for (i = 1; i < 4; ++i) + result = (result << 8) | (codep[i] & 0xff); + + if (codep[0] & 0x80) { + /* Do two's-complement negation even on non-two's-complement machines. + If the result would be minval - 1, return minval. */ + result -= !TWOS_COMPLEMENT(int_fast32_t) && result != 0; + result += minval; + } + return result; } -forceinline int64_t detzcode64(const char *const codep) { - return READ64BE(codep); +static int_fast64_t +detzcode64(const char *const codep) +{ + register int_fast64_t result; + register int i; + int_fast64_t one = 1; + int_fast64_t halfmaxval = one << (64 - 2); + int_fast64_t maxval = halfmaxval - 1 + halfmaxval; + int_fast64_t minval = -TWOS_COMPLEMENT(int_fast64_t) - maxval; + + result = codep[0] & 0x7f; + for (i = 1; i < 8; ++i) + result = (result << 8) | (codep[i] & 0xff); + + if (codep[0] & 0x80) { + /* Do two's-complement negation even on non-two's-complement machines. + If the result would be minval - 1, return minval. */ + result -= !TWOS_COMPLEMENT(int_fast64_t) && result != 0; + result += minval; + } + return result; } static void @@ -264,69 +902,92 @@ update_tzname_etc(struct state const *sp, struct ttinfo const *ttisp) #if HAVE_TZNAME tzname[ttisp->tt_isdst] = (char *) &sp->chars[ttisp->tt_desigidx]; #endif +#if USG_COMPAT if (!ttisp->tt_isdst) timezone = - ttisp->tt_utoff; +#endif #if ALTZONE if (ttisp->tt_isdst) altzone = - ttisp->tt_utoff; #endif } +/* If STDDST_MASK indicates that SP's TYPE provides useful info, + update tzname, timezone, and/or altzone and return STDDST_MASK, + diminished by the provided info if it is a specified local time. + Otherwise, return STDDST_MASK. See settzname for STDDST_MASK. */ +static int +may_update_tzname_etc(int stddst_mask, struct state *sp, int type) +{ + struct ttinfo *ttisp = &sp->ttis[type]; + int this_bit = 1 << ttisp->tt_isdst; + if (stddst_mask & this_bit) { + update_tzname_etc(sp, ttisp); + if (!ttunspecified(sp, type)) + return stddst_mask & ~this_bit; + } + return stddst_mask; +} + static void settzname(void) { register struct state * const sp = lclptr; register int i; + /* If STDDST_MASK & 1 we need info about a standard time. + If STDDST_MASK & 2 we need info about a daylight saving time. + When STDDST_MASK becomes zero we can stop looking. */ + int stddst_mask = 0; + #if HAVE_TZNAME - tzname[0] = tzname[1] = (char *) (sp ? wildabbr : gmt); + tzname[0] = tzname[1] = (char *) (sp ? wildabbr : utc); + stddst_mask = 3; #endif - daylight = 0; +#if USG_COMPAT timezone = 0; + stddst_mask = 3; +#endif #if ALTZONE altzone = 0; + stddst_mask |= 2; #endif - if (sp == NULL) { - return; - } /* ** And to get the latest time zone abbreviations into tzname. . . */ - for (i = 0; i < sp->typecnt; ++i) { - register const struct ttinfo * const ttisp = &sp->ttis[i]; - update_tzname_etc(sp, ttisp); - } - for (i = 0; i < sp->timecnt; ++i) { - register const struct ttinfo * const ttisp = - &sp->ttis[ - sp->types[i]]; - update_tzname_etc(sp, ttisp); - if (ttisp->tt_isdst) - daylight = 1; + if (sp) { + for (i = sp->timecnt - 1; stddst_mask && 0 <= i; i--) + stddst_mask = may_update_tzname_etc(stddst_mask, sp, sp->types[i]); + for (i = sp->typecnt - 1; stddst_mask && 0 <= i; i--) + stddst_mask = may_update_tzname_etc(stddst_mask, sp, i); } +#if USG_COMPAT + daylight = stddst_mask >> 1 ^ 1; +#endif } -static void +/* Replace bogus characters in time zone abbreviations. + Return 0 on success, an errno value if a time zone abbreviation is + too long. */ +static int scrub_abbrs(struct state *sp) { int i; - /* - ** First, replace bogus characters. - */ + + /* Reject overlong abbreviations. */ + for (i = 0; i < sp->charcnt - (TZNAME_MAXIMUM + 1); ) { + int len = strlen(&sp->chars[i]); + if (TZNAME_MAXIMUM < len) + return EOVERFLOW; + i += len + 1; + } + + /* Replace bogus characters. */ for (i = 0; i < sp->charcnt; ++i) if (strchr(TZ_ABBR_CHAR_SET, sp->chars[i]) == NULL) sp->chars[i] = TZ_ABBR_ERR_CHAR; - /* - ** Second, truncate long abbreviations. - */ - for (i = 0; i < sp->typecnt; ++i) { - register const struct ttinfo * const ttisp = &sp->ttis[i]; - char *cp = &sp->chars[ttisp->tt_desigidx]; - if (strlen(cp) > TZ_ABBR_MAX_LEN && - strcmp(cp, GRANDPARENTED) != 0) - *(cp + TZ_ABBR_MAX_LEN) = '\0'; - } + return 0; } /* Input buffer for data read from a compiled tz file. */ @@ -334,7 +995,8 @@ union input_buffer { /* The first part of the buffer, interpreted as a header. */ struct tzhead tzhead; - /* The entire buffer. */ + /* The entire buffer. Ideally this would have no size limits; + the following should suffice for practical use. */ char buf[2 * sizeof(struct tzhead) + 2 * sizeof(struct state) + 4 * TZ_MAX_TIMES]; }; @@ -353,9 +1015,13 @@ union local_storage { struct state st; } u; - /* The file name to be opened. */ - char fullname[BIGGEST(sizeof(struct file_analysis), - sizeof tzdirslash + 1024)]; + /* The name of the file to be opened. Ideally this would have no + size limits, to support arbitrarily long Zone names. + Limiting Zone names to 1024 bytes should suffice for practical use. + However, there is no need for this to be smaller than struct + file_analysis as that struct is allocated anyway, as the other + union member. */ + char fullname[max(sizeof(struct file_analysis), sizeof tzdirslash + 1024)]; }; /* Load tz data from the file named NAME into *SP. Read extended @@ -373,6 +1039,52 @@ localtime_tzloadbody_(char const *name, struct state *sp, bool doextend, register union input_buffer *up = &lsp->u.u; register int tzheadsize = sizeof(struct tzhead); + // [jart] 1. polyfill common aliases + // 2. polyfill legacy cosmo timezone names + if (name) { + if (startswith(name, "US/")) { + if (!strcmp(name, "US/Eastern")) + name = "America/New_York"; + else if (!strcmp(name, "US/Pacific")) + name = "America/Los_Angeles"; + else if (!strcmp(name, "US/Alaska")) + name = "America/Anchorage"; + else if (!strcmp(name, "US/Central")) + name = "America/Chicago"; + else if (!strcmp(name, "US/Hawaii")) + name = "Pacific/Honolulu"; + else if (!strcmp(name, "US/Michigan")) + name = "America/Detroit"; + else if (!strcmp(name, "US/Mountain")) + name = "America/Denver"; + } else if (!strcmp(name, "UTC")) { + name = "Etc/UTC"; + } else if (!strcmp(name, "GST")) { + name = "America/Los_Angeles"; + } else if (!strcmp(name, "Boulder")) { + name = "America/Denver"; + } else if (!strcmp(name, "Chicago")) { + name = "America/Chicago"; + } else if (!strcmp(name, "Anchorage")) { + name = "America/Anchorage"; + } else if (!strcmp(name, "Honolulu")) { + name = "Pacific/Honolulu"; + } else if (!strcmp(name, "London")) { + name = "Europe/London"; + } else if (!strcmp(name, "Berlin")) { + name = "Europe/Berlin"; + } else if (!strcmp(name, "Israel")) { + name = "Asia/Jerusalem"; + } else if (!strcmp(name, "Beijing") || + !strcmp(name, "Asia/Beijing")) { + // "In China, there are only two time zone which + // are Asia/Beijing and Asia/Urumuqi, but no + // Asia/Shanghai or Asia/Chongqing" + // https://bugs.launchpad.net/ubuntu/+source/libgweather/+bug/228554 + name = "Asia/Shanghai"; + } + } + sp->goback = sp->goahead = false; if (! name) { @@ -392,8 +1104,7 @@ localtime_tzloadbody_(char const *name, struct state *sp, bool doextend, #endif if (!doaccess) { char const *dot; - size_t namelen = strlen(name); - if (sizeof lsp->fullname - sizeof tzdirslash <= namelen) + if (sizeof lsp->fullname - sizeof tzdirslash <= strlen(name)) return ENAMETOOLONG; /* Create a string "TZDIR/NAME". Using sprintf here @@ -431,15 +1142,15 @@ localtime_tzloadbody_(char const *name, struct state *sp, bool doextend, for (stored = 4; stored <= 8; stored *= 2) { char version = up->tzhead.tzh_version[0]; bool skip_datablock = stored == 4 && version; - int32_t datablock_size; - int32_t ttisstdcnt = detzcode(up->tzhead.tzh_ttisstdcnt); - int32_t ttisutcnt = detzcode(up->tzhead.tzh_ttisutcnt); - int64_t prevtr = -1; - int32_t prevcorr = 0; - int32_t leapcnt = detzcode(up->tzhead.tzh_leapcnt); - int32_t timecnt = detzcode(up->tzhead.tzh_timecnt); - int32_t typecnt = detzcode(up->tzhead.tzh_typecnt); - int32_t charcnt = detzcode(up->tzhead.tzh_charcnt); + int_fast32_t datablock_size; + int_fast32_t ttisstdcnt = detzcode(up->tzhead.tzh_ttisstdcnt); + int_fast32_t ttisutcnt = detzcode(up->tzhead.tzh_ttisutcnt); + int_fast64_t prevtr = -1; + int_fast32_t prevcorr = 0; + int_fast32_t leapcnt = detzcode(up->tzhead.tzh_leapcnt); + int_fast32_t timecnt = detzcode(up->tzhead.tzh_timecnt); + int_fast32_t typecnt = detzcode(up->tzhead.tzh_typecnt); + int_fast32_t charcnt = detzcode(up->tzhead.tzh_charcnt); char const *p = up->buf + tzheadsize; /* Although tzfile(5) currently requires typecnt to be nonzero, support future formats that may allow zero typecnt @@ -478,7 +1189,7 @@ localtime_tzloadbody_(char const *name, struct state *sp, bool doextend, occurred at TIME_T_MIN. */ timecnt = 0; for (i = 0; i < sp->timecnt; ++i) { - int64_t at + int_fast64_t at = stored == 4 ? detzcode(p) : detzcode64(p); sp->types[i] = at <= TIME_T_MAX; if (sp->types[i]) { @@ -530,8 +1241,8 @@ localtime_tzloadbody_(char const *name, struct state *sp, bool doextend, /* Read leap seconds, discarding those out of time_t range. */ leapcnt = 0; for (i = 0; i < sp->leapcnt; ++i) { - int64_t tr = stored == 4 ? detzcode(p) : detzcode64(p); - int32_t corr = detzcode(p + stored); + int_fast64_t tr = stored == 4 ? detzcode(p) : detzcode64(p); + int_fast32_t corr = detzcode(p + stored); p += stored + 4; /* Leap seconds cannot occur before the Epoch, @@ -641,14 +1352,18 @@ localtime_tzloadbody_(char const *name, struct state *sp, bool doextend, == sp->types[sp->timecnt - 2])) sp->timecnt--; - for (i = 0; - i < ts->timecnt && sp->timecnt < TZ_MAX_TIMES; - i++) { + sp->goahead = ts->goahead; + + for (i = 0; i < ts->timecnt; i++) { time_t t = ts->ats[i]; if (increment_overflow_time(&t, leapcorr(sp, t)) || (0 < sp->timecnt && t <= sp->ats[sp->timecnt - 1])) continue; + if (TZ_MAX_TIMES <= sp->timecnt) { + sp->goahead = false; + break; + } sp->ats[sp->timecnt] = t; sp->types[sp->timecnt] = (sp->typecnt + ts->types[i]); @@ -661,80 +1376,6 @@ localtime_tzloadbody_(char const *name, struct state *sp, bool doextend, } if (sp->typecnt == 0) return EINVAL; - if (sp->timecnt > 1) { - if (sp->ats[0] <= TIME_T_MAX - SECSPERREPEAT) { - time_t repeatat = sp->ats[0] + SECSPERREPEAT; - int repeattype = sp->types[0]; - for (i = 1; i < sp->timecnt; ++i) - if (sp->ats[i] == repeatat - && localtime_typesequiv(sp, sp->types[i], repeattype)) { - sp->goback = true; - break; - } - } - if (TIME_T_MIN + SECSPERREPEAT <= sp->ats[sp->timecnt - 1]) { - time_t repeatat = sp->ats[sp->timecnt - 1] - SECSPERREPEAT; - int repeattype = sp->types[sp->timecnt - 1]; - for (i = sp->timecnt - 2; i >= 0; --i) - if (sp->ats[i] == repeatat - && localtime_typesequiv(sp, sp->types[i], repeattype)) { - sp->goahead = true; - break; - } - } - } - - /* Infer sp->defaulttype from the data. Although this default - type is always zero for data from recent tzdb releases, - things are trickier for data from tzdb 2018e or earlier. - - The first set of heuristics work around bugs in 32-bit data - generated by tzdb 2013c or earlier. The workaround is for - zones like Australia/Macquarie where timestamps before the - first transition have a time type that is not the earliest - standard-time type. See: - https://mm.icann.org/pipermail/tz/2013-May/019368.html */ - /* - ** If type 0 does not specify local time, or is unused in transitions, - ** it's the type to use for early times. - */ - for (i = 0; i < sp->timecnt; ++i) - if (sp->types[i] == 0) - break; - i = i < sp->timecnt && ! ttunspecified(sp, 0) ? -1 : 0; - /* - ** Absent the above, - ** if there are transition times - ** and the first transition is to a daylight time - ** find the standard type less than and closest to - ** the type of the first transition. - */ - if (i < 0 && sp->timecnt > 0 && sp->ttis[sp->types[0]].tt_isdst) { - i = sp->types[0]; - while (--i >= 0) - if (!sp->ttis[i].tt_isdst) - break; - } - /* The next heuristics are for data generated by tzdb 2018e or - earlier, for zones like EST5EDT where the first transition - is to DST. */ - /* - ** If no result yet, find the first standard type. - ** If there is none, punt to type zero. - */ - if (i < 0) { - i = 0; - while (sp->ttis[i].tt_isdst) - if (++i >= sp->typecnt) { - i = 0; - break; - } - } - /* A simple 'sp->defaulttype = 0;' would suffice here if we - didn't have to worry about 2018e-or-earlier data. Even - simpler would be to remove the defaulttype member and just - use 0 in its place. */ - sp->defaulttype = i; return 0; } @@ -755,6 +1396,7 @@ localtime_tzloadbody(char const *name, struct state *sp, bool doextend, static int localtime_tzload(char const *name, struct state *sp, bool doextend) { +#ifdef ALL_STATE union local_storage *lsp = malloc(sizeof *lsp); if (!lsp) { return HAVE_MALLOC_ERRNO ? errno : ENOMEM; @@ -763,29 +1405,10 @@ localtime_tzload(char const *name, struct state *sp, bool doextend) free(lsp); return err; } -} - -static bool -localtime_typesequiv(const struct state *sp, int a, int b) -{ - register bool result; - - if (sp == NULL || - a < 0 || a >= sp->typecnt || - b < 0 || b >= sp->typecnt) - result = false; - else { - register const struct ttinfo * ap = &sp->ttis[a]; - register const struct ttinfo * bp = &sp->ttis[b]; - result = (ap->tt_utoff == bp->tt_utoff - && ap->tt_isdst == bp->tt_isdst - && ap->tt_ttisstd == bp->tt_ttisstd - && ap->tt_ttisut == bp->tt_ttisut - && (strcmp(&sp->chars[ap->tt_desigidx], - &sp->chars[bp->tt_desigidx]) - == 0)); - } - return result; +#else + union local_storage ls; + return localtime_tzloadbody(name, sp, doextend, &ls); +#endif } static const int mon_lengths[2][MONSPERYEAR] = { @@ -801,7 +1424,7 @@ static const int year_lengths[2] = { static inline bool is_digit(char c) { - return '0' <= c && c <= '9'; + return '0' <= c && c <= '9'; } /* @@ -878,14 +1501,14 @@ getnum(register const char *strp, int *const nump, const int min, const int max) */ static const char * -getsecs(register const char *strp, int32_t *const secsp) +getsecs(register const char *strp, int_fast32_t *const secsp) { int num; - int32_t secsperhour = SECSPERHOUR; + int_fast32_t secsperhour = SECSPERHOUR; /* - ** 'HOURSPERDAY * DAYSPERWEEK - 1' allows quasi-Posix rules like - ** "M10.4.6/26", which does not conform to Posix, + ** 'HOURSPERDAY * DAYSPERWEEK - 1' allows quasi-POSIX rules like + ** "M10.4.6/26", which does not conform to POSIX, ** but which specifies the equivalent of ** "02:00 on the first Sunday on or after 23 Oct". */ @@ -919,7 +1542,7 @@ getsecs(register const char *strp, int32_t *const secsp) */ static const char * -getoffset(register const char *strp, int32_t *const offsetp) +localtime_getoffset(register const char *strp, int_fast32_t *const offsetp) { register bool neg = false; @@ -938,13 +1561,14 @@ getoffset(register const char *strp, int32_t *const offsetp) /* ** Given a pointer into a timezone string, extract a rule in the form -** date[/time]. See POSIX section 8 for the format of "date" and "time". +** date[/time]. See POSIX Base Definitions section 8.3 variable TZ +** for the format of "date" and "time". ** If a valid rule is not found, return NULL. ** Otherwise, return a pointer to the first character not part of the rule. */ static const char * -getrule(const char *strp, register struct rule *const rulep) +localtime_getrule(const char *strp, register struct rule *const rulep) { if (*strp == 'J') { /* @@ -984,7 +1608,7 @@ getrule(const char *strp, register struct rule *const rulep) ** Time specified. */ ++strp; - strp = getoffset(strp, &rulep->r_time); + strp = localtime_getoffset(strp, &rulep->r_time); } else rulep->r_time = 2 * SECSPERHOUR; /* default = 2:00:00 */ return strp; } @@ -994,12 +1618,12 @@ getrule(const char *strp, register struct rule *const rulep) ** effect, calculate the year-relative time that rule takes effect. */ -static int32_t -transtime(const int year, register const struct rule *const rulep, - const int32_t offset) +static int_fast32_t +localtime_transtime(const int year, register const struct rule *const rulep, + const int_fast32_t offset) { register bool leapyear; - register int32_t value; + register int_fast32_t value; register int i; int d, m1, yy0, yy1, yy2, dow; @@ -1069,7 +1693,7 @@ transtime(const int year, register const struct rule *const rulep, value += mon_lengths[leapyear][i] * SECSPERDAY; break; - default: UNREACHABLE(); + default: unreachable(); } /* @@ -1082,22 +1706,20 @@ transtime(const int year, register const struct rule *const rulep, } /* -** Given a POSIX section 8-style TZ string, fill in the rule tables as +** Given a POSIX.1-2017-style TZ string, fill in the rule tables as ** appropriate. */ static bool -localtime_tzparse(const char *name, struct state *sp, struct state *basep) +localtime_tzparse(const char *name, struct state *sp, struct state const *basep) { const char * stdname; const char * dstname; - size_t stdlen; - size_t dstlen; - size_t charcnt; - int32_t stdoffset; - int32_t dstoffset; + int_fast32_t stdoffset; + int_fast32_t dstoffset; register char * cp; register bool load_ok; + ptrdiff_t stdlen, dstlen, charcnt; time_t atlo = TIME_T_MIN, leaplo = TIME_T_MIN; stdname = name; @@ -1113,14 +1735,12 @@ localtime_tzparse(const char *name, struct state *sp, struct state *basep) name = getzname(name); stdlen = name - stdname; } - if (!stdlen) + if (! (0 < stdlen && stdlen <= TZNAME_MAXIMUM)) return false; - name = getoffset(name, &stdoffset); + name = localtime_getoffset(name, &stdoffset); if (name == NULL) return false; charcnt = stdlen + 1; - if (sizeof sp->chars < charcnt) - return false; if (basep) { if (0 < basep->timecnt) atlo = basep->ats[basep->timecnt - 1]; @@ -1134,6 +1754,7 @@ localtime_tzparse(const char *name, struct state *sp, struct state *basep) } if (0 < sp->leapcnt) leaplo = sp->lsis[sp->leapcnt - 1].ls_trans; + sp->goback = sp->goahead = false; if (*name != '\0') { if (*name == '<') { dstname = ++name; @@ -1147,13 +1768,11 @@ localtime_tzparse(const char *name, struct state *sp, struct state *basep) name = getzname(name); dstlen = name - dstname; /* length of DST abbr. */ } - if (!dstlen) + if (! (0 < dstlen && dstlen <= TZNAME_MAXIMUM)) return false; charcnt += dstlen + 1; - if (sizeof sp->chars < charcnt) - return false; if (*name != '\0' && *name != ',' && *name != ';') { - name = getoffset(name, &dstoffset); + name = localtime_getoffset(name, &dstoffset); if (name == NULL) return false; } else dstoffset = stdoffset - SECSPERHOUR; @@ -1165,15 +1784,15 @@ localtime_tzparse(const char *name, struct state *sp, struct state *basep) register int year; register int timecnt; time_t janfirst; - int32_t janoffset = 0; + int_fast32_t janoffset = 0; int yearbeg, yearlim; ++name; - if ((name = getrule(name, &start)) == NULL) + if ((name = localtime_getrule(name, &start)) == NULL) return false; if (*name++ != ',') return false; - if ((name = getrule(name, &end)) == NULL) + if ((name = localtime_getrule(name, &end)) == NULL) return false; if (*name != '\0') return false; @@ -1183,24 +1802,25 @@ localtime_tzparse(const char *name, struct state *sp, struct state *basep) */ init_ttinfo(&sp->ttis[0], -stdoffset, false, 0); init_ttinfo(&sp->ttis[1], -dstoffset, true, stdlen + 1); - sp->defaulttype = 0; timecnt = 0; janfirst = 0; yearbeg = EPOCH_YEAR; do { - int32_t yearsecs + int_fast32_t yearsecs = year_lengths[isleap(yearbeg - 1)] * SECSPERDAY; + time_t janfirst1 = janfirst; yearbeg--; - if (increment_overflow_time(&janfirst, -yearsecs)) { + if (increment_overflow_time(&janfirst1, -yearsecs)) { janoffset = -yearsecs; break; } + janfirst = janfirst1; } while (atlo < janfirst && EPOCH_YEAR - YEARSPERREPEAT / 2 < yearbeg); while (true) { - int32_t yearsecs + int_fast32_t yearsecs = year_lengths[isleap(yearbeg)] * SECSPERDAY; int yearbeg1 = yearbeg; time_t janfirst1 = janfirst; @@ -1213,18 +1833,18 @@ localtime_tzparse(const char *name, struct state *sp, struct state *basep) } yearlim = yearbeg; - if (increment_overflow(&yearlim, YEARSPERREPEAT + 1)) + if (increment_overflow(&yearlim, years_of_observations)) yearlim = INT_MAX; for (year = yearbeg; year < yearlim; year++) { - int32_t - starttime = transtime(year, &start, stdoffset), - endtime = transtime(year, &end, dstoffset); - int32_t + int_fast32_t + starttime = localtime_transtime(year, &start, stdoffset), + endtime = localtime_transtime(year, &end, dstoffset); + int_fast32_t yearsecs = (year_lengths[isleap(year)] * SECSPERDAY); bool reversed = endtime < starttime; if (reversed) { - int32_t swap = starttime; + int_fast32_t swap = starttime; starttime = endtime; endtime = swap; } @@ -1250,7 +1870,7 @@ localtime_tzparse(const char *name, struct state *sp, struct state *basep) if (endtime < leaplo) { yearlim = year; if (increment_overflow(&yearlim, - YEARSPERREPEAT + 1)) + years_of_observations)) yearlim = INT_MAX; } if (increment_overflow_time @@ -1262,12 +1882,12 @@ localtime_tzparse(const char *name, struct state *sp, struct state *basep) if (! timecnt) { sp->ttis[0] = sp->ttis[1]; sp->typecnt = 1; /* Perpetual DST. */ - } else if (YEARSPERREPEAT < year - yearbeg) + } else if (years_of_observations <= year - yearbeg) sp->goback = sp->goahead = true; } else { - register int32_t theirstdoffset; - register int32_t theirdstoffset; - register int32_t theiroffset; + register int_fast32_t theirstdoffset; + register int_fast32_t theirdstoffset; + register int_fast32_t theiroffset; register bool isdst; register int i; register int j; @@ -1321,8 +1941,8 @@ localtime_tzparse(const char *name, struct state *sp, struct state *basep) /* ** Transitions from DST to DDST ** will effectively disappear since - ** POSIX provides for only one DST - ** offset. + ** POSIX.1-2017 provides for only one + ** DST offset. */ if (isdst && !sp->ttis[j].tt_ttisstd) { sp->ats[i] += dstoffset - @@ -1343,14 +1963,12 @@ localtime_tzparse(const char *name, struct state *sp, struct state *basep) init_ttinfo(&sp->ttis[0], -stdoffset, false, 0); init_ttinfo(&sp->ttis[1], -dstoffset, true, stdlen + 1); sp->typecnt = 2; - sp->defaulttype = 0; } } else { dstlen = 0; sp->typecnt = 1; /* only standard time */ sp->timecnt = 0; init_ttinfo(&sp->ttis[0], -stdoffset, false, 0); - sp->defaulttype = 0; } sp->charcnt = charcnt; cp = sp->chars; @@ -1365,16 +1983,16 @@ localtime_tzparse(const char *name, struct state *sp, struct state *basep) } static void -gmtload(struct state *const sp) +localtime_gmtload(struct state *const sp) { - if (localtime_tzload(gmt, sp, true) != 0) - localtime_tzparse("GMT0", sp, NULL); + if (localtime_tzload(etc_utc, sp, true) != 0) + localtime_tzparse("UTC0", sp, NULL); } /* Initialize *SP to a value appropriate for the TZ setting NAME. Return 0 on success, an errno value on failure. */ static int -zoneinit(struct state *sp, char const *name) +localtime_zoneinit(struct state *sp, char const *name) { if (name && ! name[0]) { /* @@ -1386,22 +2004,21 @@ zoneinit(struct state *sp, char const *name) sp->charcnt = 0; sp->goback = sp->goahead = false; init_ttinfo(&sp->ttis[0], 0, false, 0); - strcpy(sp->chars, gmt); - sp->defaulttype = 0; + strcpy(sp->chars, utc); return 0; } else { int err = localtime_tzload(name, sp, true); - if (err != 0 && name && name[0] != ':' && - localtime_tzparse(name, sp, NULL)) + if (err != 0 && name && name[0] != ':' && localtime_tzparse(name, sp, NULL)) err = 0; if (err == 0) - scrub_abbrs(sp); + err = scrub_abbrs(sp); return err; } } static void -FreeLocaltime(void *p) { +localtime_lclptr_free(void *p) +{ free(p); } @@ -1415,13 +2032,15 @@ localtime_tzset_unlocked(void) ? lcl_is_set < 0 : 0 < lcl_is_set && strcmp(lcl_TZname, name) == 0) return; - if (!sp) { +#ifdef ALL_STATE + if (! sp) { lclptr = sp = malloc(sizeof *lclptr); - __cxa_atexit(FreeLocaltime, sp, 0); + __cxa_atexit(localtime_lclptr_free, sp, 0); } +#endif /* defined ALL_STATE */ if (sp) { - if (zoneinit(sp, name) != 0) - zoneinit(sp, ""); + if (localtime_zoneinit(sp, name) != 0) + localtime_zoneinit(sp, ""); if (0 < lcl) strcpy(lcl_TZname, name); } @@ -1438,21 +2057,8 @@ tzset(void) } static void -gmtcheck(void) +localtime_gmtptr_free(void *p) { - static bool gmt_is_set; - localtime_lock(); - if (! gmt_is_set) { - gmtptr = malloc(sizeof *gmtptr); - if (gmtptr) - gmtload(gmtptr); - gmt_is_set = true; - } - localtime_unlock(); -} - -static void -FreeGmt(void *p) { free(p); } @@ -1462,10 +2068,12 @@ localtime_gmtcheck(void) static bool gmt_is_set; localtime_lock(); if (! gmt_is_set) { +#ifdef ALL_STATE gmtptr = malloc(sizeof *gmtptr); - __cxa_atexit(FreeGmt, gmtptr, 0); + __cxa_atexit(localtime_gmtptr_free, gmtptr, 0); +#endif if (gmtptr) - gmtload(gmtptr); + localtime_gmtload(gmtptr); gmt_is_set = true; } localtime_unlock(); @@ -1479,15 +2087,16 @@ localtime_gmtcheck(void) ** ** If successful and SETNAME is nonzero, ** set the applicable parts of tzname, timezone and altzone; -** however, it's OK to omit this step if the timezone is POSIX-compatible, +** however, it's OK to omit this step +** if the timezone is compatible with POSIX.1-2017 ** since in that case tzset should have already done this step correctly. -** SETNAME's type is int32_t for compatibility with gmtsub, +** SETNAME's type is int_fast32_t for compatibility with gmtsub, ** but it is actually a boolean and its value should be 0 or 1. */ /*ARGSUSED*/ static struct tm * -localsub(struct state const *sp, time_t const *timep, int32_t setname, +localsub(struct state const *sp, time_t const *timep, int_fast32_t setname, struct tm *const tmp) { register const struct ttinfo * ttisp; @@ -1525,7 +2134,15 @@ localsub(struct state const *sp, time_t const *timep, int32_t setname, return NULL; /* "cannot happen" */ result = localsub(sp, &newt, setname, tmp); if (result) { - register int64_t newy; +#if defined ckd_add && defined ckd_sub + if (t < sp->ats[0] + ? ckd_sub(&result->tm_year, + result->tm_year, years) + : ckd_add(&result->tm_year, + result->tm_year, years)) + return NULL; +#else + register int_fast64_t newy; newy = result->tm_year; if (t < sp->ats[0]) @@ -1534,11 +2151,12 @@ localsub(struct state const *sp, time_t const *timep, int32_t setname, if (! (INT_MIN <= newy && newy <= INT_MAX)) return NULL; result->tm_year = newy; +#endif } return result; } if (sp->timecnt == 0 || t < sp->ats[0]) { - i = sp->defaulttype; + i = 0; } else { register int lo = 1; register int hi = sp->timecnt; @@ -1559,12 +2177,14 @@ localsub(struct state const *sp, time_t const *timep, int32_t setname, ** t += ttisp->tt_utoff; ** timesub(&t, 0L, sp, tmp); */ - result = localtime_timesub(&t, ttisp->tt_utoff, sp, tmp); + result = timesub(&t, ttisp->tt_utoff, sp, tmp); if (result) { - result->tm_isdst = ttisp->tt_isdst; - result->tm_zone = (char *) &sp->chars[ttisp->tt_desigidx]; - if (setname) - update_tzname_etc(sp, ttisp); + result->tm_isdst = ttisp->tt_isdst; +#ifdef TM_ZONE + result->TM_ZONE = (char *) &sp->chars[ttisp->tt_desigidx]; +#endif /* defined TM_ZONE */ + if (setname) + update_tzname_etc(sp, ttisp); } return result; } @@ -1583,11 +2203,14 @@ localtime_tzset(time_t const *timep, struct tm *tmp, bool setname) struct tm * localtime(const time_t *timep) { +#if !SUPPORT_C89 + static struct tm tm; +#endif return localtime_tzset(timep, &tm, true); } struct tm * -localtime_r(const time_t *timep, struct tm *tmp) +localtime_r(const time_t *restrict timep, struct tm *restrict tmp) { return localtime_tzset(timep, tmp, false); } @@ -1597,43 +2220,41 @@ localtime_r(const time_t *timep, struct tm *tmp) */ static struct tm * -gmtsub(struct state const *sp, time_t const *timep, int32_t offset, - struct tm *tmp) +gmtsub(ATTRIBUTE_MAYBE_UNUSED struct state const *sp, time_t const *timep, + int_fast32_t offset, struct tm *tmp) { register struct tm * result; - result = localtime_timesub(timep, offset, gmtptr, tmp); + result = timesub(timep, offset, gmtptr, tmp); +#ifdef TM_ZONE /* ** Could get fancy here and deliver something such as ** "+xx" or "-xx" if offset is non-zero, ** but this is no time for a treasure hunt. */ - tmp->tm_zone = ((char *) - (offset ? wildabbr : gmtptr ? gmtptr->chars : gmt)); + tmp->TM_ZONE = ((char *) + (offset ? wildabbr : gmtptr ? gmtptr->chars : utc)); +#endif /* defined TM_ZONE */ return result; } /* -* Re-entrant version of gmtime. -*/ - -/** - * Converts UNIX timestamp to broken-down representation. + * Re-entrant version of gmtime. */ + struct tm * -gmtime_r(const time_t *timep, struct tm *tmp) +gmtime_r(time_t const *restrict timep, struct tm *restrict tmp) { localtime_gmtcheck(); return gmtsub(gmtptr, timep, 0, tmp); } -/** - * Converts UNIX timestamp to broken-down representation. - * @threadunsafe (see gmtime_r) - */ struct tm * gmtime(const time_t *timep) { +#if !SUPPORT_C89 + static struct tm tm; +#endif return gmtime_r(timep, &tm); } @@ -1657,15 +2278,15 @@ leaps_thru_end_of(time_t y) } static struct tm * -localtime_timesub(const time_t *timep, int32_t offset, - const struct state *sp, struct tm *tmp) +timesub(const time_t *timep, int_fast32_t offset, + const struct state *sp, struct tm *tmp) { register const struct lsinfo * lp; register time_t tdays; register const int * ip; - register int32_t corr; + register int_fast32_t corr; register int i; - int32_t idays, rem, dayoff, dayrem; + int_fast32_t idays, rem, dayoff, dayrem; time_t y; /* If less than SECSPERMIN, the number of seconds since the @@ -1711,7 +2332,7 @@ localtime_timesub(const time_t *timep, int32_t offset, /* Increase Y and decrease IDAYS until IDAYS is in range for Y. */ while (year_lengths[isleap(y)] <= idays) { int tdelta = idays / DAYSPERLYEAR; - int32_t ydelta = tdelta + !tdelta; + int_fast32_t ydelta = tdelta + !tdelta; time_t newy = y + ydelta; register int leapdays; leapdays = leaps_thru_end_of(newy - 1) - @@ -1721,6 +2342,12 @@ localtime_timesub(const time_t *timep, int32_t offset, y = newy; } +#ifdef ckd_add + if (ckd_add(&tmp->tm_year, y, -TM_YEAR_BASE)) { + errno = EOVERFLOW; + return NULL; + } +#else if (!TYPE_SIGNED(time_t) && y < TM_YEAR_BASE) { int signed_y = y; tmp->tm_year = signed_y - TM_YEAR_BASE; @@ -1731,6 +2358,7 @@ localtime_timesub(const time_t *timep, int32_t offset, errno = EOVERFLOW; return NULL; } +#endif tmp->tm_yday = idays; /* ** The "extra" mods below avoid overflow problems. @@ -1758,7 +2386,9 @@ localtime_timesub(const time_t *timep, int32_t offset, idays -= ip[tmp->tm_mon]; tmp->tm_mday = idays + 1; tmp->tm_isdst = 0; - tmp->tm_gmtoff = offset; +#ifdef TM_GMTOFF + tmp->TM_GMTOFF = offset; +#endif /* defined TM_GMTOFF */ return tmp; } @@ -1772,7 +2402,7 @@ localtime_timesub(const time_t *timep, int32_t offset, */ #ifndef WRONG -#define WRONG (-1) +# define WRONG (-1) #endif /* !defined WRONG */ /* @@ -1782,13 +2412,11 @@ localtime_timesub(const time_t *timep, int32_t offset, forceinline bool increment_overflow(int *ip, int j) { -#if defined(__GNUC__) && __GNUC__ >= 6 - int i = *ip; - if (__builtin_add_overflow(i, j, &i)) return true; - *ip = i; - return false; +#ifdef ckd_add + return ckd_add(ip, *ip, j); #else register int const i = *ip; + /* ** If i >= 0 there can only be overflow if i + j > INT_MAX ** or if j > INT_MAX - i; given i >= 0, INT_MAX - i cannot overflow. @@ -1803,16 +2431,14 @@ increment_overflow(int *ip, int j) } forceinline bool -increment_overflow32(int32_t *const lp, int const m) +increment_overflow32(int_fast32_t *const lp, int const m) { -#if defined(__GNUC__) && __GNUC__ >= 6 - int32_t i = *lp; - if (__builtin_add_overflow(i, m, &i)) return true; - *lp = i; - return false; +#ifdef ckd_add + return ckd_add(lp, *lp, m); #else - register int32_t const l = *lp; - if ((l >= 0) ? (m > INT32_MAX - l) : (m < INT32_MIN - l)) + register int_fast32_t const l = *lp; + + if ((l >= 0) ? (m > INT_FAST32_MAX - l) : (m < INT_FAST32_MIN - l)) return true; *lp += m; return false; @@ -1820,13 +2446,10 @@ increment_overflow32(int32_t *const lp, int const m) } forceinline bool -increment_overflow_time(time_t *tp, int32_t j) +increment_overflow_time(time_t *tp, int_fast32_t j) { -#if defined(__GNUC__) && __GNUC__ >= 6 - time_t i = *tp; - if (__builtin_add_overflow(i, j, &i)) return true; - *tp = i; - return false; +#ifdef ckd_add + return ckd_add(tp, *tp, j); #else /* ** This is like @@ -1855,7 +2478,7 @@ normalize_overflow(int *const tensptr, int *const unitsptr, const int base) } static bool -normalize_overflow32(int32_t *tensptr, int *unitsptr, int base) +normalize_overflow32(int_fast32_t *tensptr, int *unitsptr, int base) { register int tensdelta; @@ -1882,29 +2505,46 @@ tmcomp(register const struct tm *const atmp, return result; } +/* Copy to *DEST from *SRC. Copy only the members needed for mktime, + as other members might not be initialized. */ +static void +mktmcpy(struct tm *dest, struct tm const *src) +{ + dest->tm_sec = src->tm_sec; + dest->tm_min = src->tm_min; + dest->tm_hour = src->tm_hour; + dest->tm_mday = src->tm_mday; + dest->tm_mon = src->tm_mon; + dest->tm_year = src->tm_year; + dest->tm_isdst = src->tm_isdst; +#if defined TM_GMTOFF && ! UNINIT_TRAP + dest->TM_GMTOFF = src->TM_GMTOFF; +#endif +} + static time_t -localtime_time2sub( - struct tm *const tmp, - struct tm *(*funcp)(struct state const *, time_t const *, - int32_t, struct tm *), - struct state const *sp, - const int32_t offset, - bool *okayp, - bool do_norm_secs) +time2sub(struct tm *const tmp, + struct tm *(*funcp)(struct state const *, time_t const *, + int_fast32_t, struct tm *), + struct state const *sp, + const int_fast32_t offset, + bool *okayp, + bool do_norm_secs) { register int dir; register int i, j; register int saved_seconds; - register int32_t li; + register int_fast32_t li; register time_t lo; register time_t hi; - int32_t y; + int_fast32_t y; time_t newt; time_t t; struct tm yourtm, mytm; *okayp = false; - yourtm = *tmp; + mktmcpy(&yourtm, tmp); + if (do_norm_secs) { if (normalize_overflow(&yourtm.tm_min, &yourtm.tm_sec, SECSPERMIN)) @@ -1946,14 +2586,19 @@ localtime_time2sub( return WRONG; } } +#ifdef ckd_add + if (ckd_add(&yourtm.tm_year, y, -TM_YEAR_BASE)) + return WRONG; +#else if (increment_overflow32(&y, -TM_YEAR_BASE)) return WRONG; if (! (INT_MIN <= y && y <= INT_MAX)) return WRONG; yourtm.tm_year = y; +#endif if (yourtm.tm_sec >= 0 && yourtm.tm_sec < SECSPERMIN) saved_seconds = 0; - else if (y + TM_YEAR_BASE < EPOCH_YEAR) { + else if (yourtm.tm_year < EPOCH_YEAR - TM_YEAR_BASE) { /* ** We can't set tm_sec to 0, because that might push the ** time below the minimum representable time. @@ -2013,10 +2658,10 @@ localtime_time2sub( && (yourtm.TM_GMTOFF < 0 ? (-SECSPERDAY <= yourtm.TM_GMTOFF && (mytm.TM_GMTOFF <= - (SMALLEST(INT32_MAX, LONG_MAX) + (min(INT_FAST32_MAX, LONG_MAX) + yourtm.TM_GMTOFF))) : (yourtm.TM_GMTOFF <= SECSPERDAY - && ((BIGGEST(INT32_MIN, LONG_MIN) + && ((max(INT_FAST32_MIN, LONG_MIN) + yourtm.TM_GMTOFF) <= mytm.TM_GMTOFF)))) { /* MYTM matches YOURTM except with the wrong UT offset. @@ -2024,7 +2669,7 @@ localtime_time2sub( It's OK if YOURTM.TM_GMTOFF contains uninitialized data, since the guess gets checked. */ time_t altt = t; - int32_t diff = mytm.TM_GMTOFF - yourtm.TM_GMTOFF; + int_fast32_t diff = mytm.TM_GMTOFF - yourtm.TM_GMTOFF; if (!increment_overflow_time(&altt, diff)) { struct tm alttm; if (funcp(sp, &altt, offset, &alttm) @@ -2083,13 +2728,12 @@ label: } static time_t -localtime_time2( - struct tm * const tmp, - struct tm *(*funcp)(struct state const *, time_t const *, - int32_t, struct tm *), - struct state const *sp, - const int32_t offset, - bool *okayp) +time2(struct tm * const tmp, + struct tm *(*funcp)(struct state const *, time_t const *, + int_fast32_t, struct tm *), + struct state const *sp, + const int_fast32_t offset, + bool *okayp) { time_t t; @@ -2098,17 +2742,16 @@ localtime_time2( ** (in case tm_sec contains a value associated with a leap second). ** If that fails, try with normalization of seconds. */ - t = localtime_time2sub(tmp, funcp, sp, offset, okayp, false); - return *okayp ? t : localtime_time2sub(tmp,funcp,sp,offset,okayp,true); + t = time2sub(tmp, funcp, sp, offset, okayp, false); + return *okayp ? t : time2sub(tmp, funcp, sp, offset, okayp, true); } static time_t -localtime_time1( - struct tm *const tmp, - struct tm *(*funcp)(struct state const *, time_t const *, - int32_t, struct tm *), - struct state const *sp, - const int32_t offset) +time1(struct tm *const tmp, + struct tm *(*funcp)(struct state const *, time_t const *, + int_fast32_t, struct tm *), + struct state const *sp, + const int_fast32_t offset) { register time_t t; register int samei, otheri; @@ -2125,7 +2768,7 @@ localtime_time1( } if (tmp->tm_isdst > 1) tmp->tm_isdst = 1; - t = localtime_time2(tmp, funcp, sp, offset, &okay); + t = time2(tmp, funcp, sp, offset, &okay); if (okay) return t; if (tmp->tm_isdst < 0) @@ -2164,7 +2807,7 @@ localtime_time1( tmp->tm_sec += (sp->ttis[otheri].tt_utoff - sp->ttis[samei].tt_utoff); tmp->tm_isdst = !tmp->tm_isdst; - t = localtime_time2(tmp, funcp, sp, offset, &okay); + t = time2(tmp, funcp, sp, offset, &okay); if (okay) return t; tmp->tm_sec -= (sp->ttis[otheri].tt_utoff @@ -2179,10 +2822,10 @@ static time_t mktime_tzname(struct state *sp, struct tm *tmp, bool setname) { if (sp) - return localtime_time1(tmp, localsub, sp, setname); + return time1(tmp, localsub, sp, setname); else { localtime_gmtcheck(); - return localtime_time1(tmp, gmtsub, gmtptr, 0); + return time1(tmp, gmtsub, gmtptr, 0); } } @@ -2197,6 +2840,8 @@ mktime(struct tm *tmp) return t; } +/* This function is obsolescent and may disapper in future releases. + Callers can instead use mktime. */ time_t timelocal(struct tm *tmp) { @@ -2205,22 +2850,31 @@ timelocal(struct tm *tmp) return mktime(tmp); } -time_t -timegm(struct tm *tmp) -{ - return timeoff(tmp, 0); -} - +/* This function is obsolescent and may disapper in future releases. + Callers can instead use mktime_z with a fixed-offset zone. */ time_t timeoff(struct tm *tmp, long offset) { if (tmp) tmp->tm_isdst = 0; - gmtcheck(); - return localtime_time1(tmp, gmtsub, gmtptr, offset); + localtime_gmtcheck(); + return time1(tmp, gmtsub, gmtptr, offset); } -static int32_t +time_t +timegm(struct tm *tmp) +{ + time_t t; + struct tm tmcpy; + mktmcpy(&tmcpy, tmp); + tmcpy.tm_wday = -1; + t = timeoff(&tmcpy, 0); + if (0 <= tmcpy.tm_wday) + *tmp = tmcpy; + return t; +} + +static int_fast32_t leapcorr(struct state const *sp, time_t t) { register struct lsinfo const * lp; diff --git a/third_party/tz/private.h b/third_party/tz/private.h new file mode 100644 index 000000000..f2a79cdf8 --- /dev/null +++ b/third_party/tz/private.h @@ -0,0 +1,165 @@ +#ifndef TZ_PRIVATE_H +#define TZ_PRIVATE_H +#include "libc/errno.h" +#include "libc/calls/weirdtypes.h" +#include "libc/time.h" +#include "libc/limits.h" + +#define ALL_STATE +#define HAVE_TZNAME 1 +#define HAVE_MALLOC_ERRNO 1 +#define TM_ZONE tm_zone +#define TM_GMTOFF tm_gmtoff + +/* The maximum size of any created object, as a signed integer. + Although the C standard does not outright prohibit larger objects, + behavior is undefined if the result of pointer subtraction does not + fit into ptrdiff_t, and the code assumes in several places that + pointer subtraction works. As a practical matter it's OK to not + support objects larger than this. */ +#define INDEX_MAX ((ptrdiff_t)min(PTRDIFF_MAX, SIZE_MAX)) + +#define ATTRIBUTE_MALLOC __attribute__((__malloc__)) +#define ATTRIBUTE_FORMAT(spec) __attribute__((__format__ spec)) +#define ATTRIBUTE_FALLTHROUGH __attribute__((__fallthrough__)) +#define ATTRIBUTE_MAYBE_UNUSED __attribute__((__unused__)) +#define ATTRIBUTE_NORETURN __attribute__((__noreturn__)) +#define ATTRIBUTE_REPRODUCIBLE __attribute__((__pure__)) +#define ATTRIBUTE_UNSEQUENCED __attribute__((__const__)) + +#define unreachable() __builtin_unreachable() + +/* +** Finally, some convenience items. +*/ + +#define TYPE_BIT(type) (CHAR_BIT * (ptrdiff_t)sizeof(type)) +#define TYPE_SIGNED(type) (((type) - 1) < 0) +#define TWOS_COMPLEMENT(t) ((t) ~(t)0 < 0) + +/* Minimum and maximum of two values. Use lower case to avoid + naming clashes with standard include files. */ +#define max(a, b) ((a) > (b) ? (a) : (b)) +#define min(a, b) ((a) < (b) ? (a) : (b)) + +/* Max and min values of the integer type T, of which only the bottom + B bits are used, and where the highest-order used bit is considered + to be a sign bit if T is signed. */ +#define MAXVAL(t, b) \ + ((t)(((t)1 << ((b) - 1 - TYPE_SIGNED(t))) - 1 + \ + ((t)1 << ((b) - 1 - TYPE_SIGNED(t))))) +#define MINVAL(t, b) \ + ((t)(TYPE_SIGNED(t) ? -TWOS_COMPLEMENT(t) - MAXVAL(t, b) : 0)) + +/* The extreme time values, assuming no padding. */ +#define TIME_T_MIN_NO_PADDING MINVAL(time_t, TYPE_BIT(time_t)) +#define TIME_T_MAX_NO_PADDING MAXVAL(time_t, TYPE_BIT(time_t)) + +/* +** 302 / 1000 is log10(2.0) rounded up. +** Subtract one for the sign bit if the type is signed; +** add one for integer division truncation; +** add one more for a minus sign if the type is signed. +*/ +#define INT_STRLEN_MAXIMUM(type) \ + ((TYPE_BIT(type) - TYPE_SIGNED(type)) * 302 / 1000 + 1 + TYPE_SIGNED(type)) + +/* +** INITIALIZE(x) +*/ + +/* Whether memory access must strictly follow the C standard. + If 0, it's OK to read uninitialized storage so long as the value is + not relied upon. Defining it to 0 lets mktime access parts of + struct tm that might be uninitialized, as a heuristic when the + standard doesn't say what to return and when tm_gmtoff can help + mktime likely infer a better value. */ +#ifndef UNINIT_TRAP +#define UNINIT_TRAP 0 +#endif + +#if !defined TZ_DOMAIN && defined HAVE_GETTEXT +#define TZ_DOMAIN "tz" +#endif + +/* Handy macros that are independent of tzfile implementation. */ + +enum { + SECSPERMIN = 60, + MINSPERHOUR = 60, + SECSPERHOUR = SECSPERMIN * MINSPERHOUR, + HOURSPERDAY = 24, + DAYSPERWEEK = 7, + DAYSPERNYEAR = 365, + DAYSPERLYEAR = DAYSPERNYEAR + 1, + MONSPERYEAR = 12, + YEARSPERREPEAT = 400 /* years before a Gregorian repeat */ +}; + +#define SECSPERDAY ((int_fast32_t)SECSPERHOUR * HOURSPERDAY) + +#define DAYSPERREPEAT ((int_fast32_t)400 * 365 + 100 - 4 + 1) +#define SECSPERREPEAT ((int_fast64_t)DAYSPERREPEAT * SECSPERDAY) +#define AVGSECSPERYEAR (SECSPERREPEAT / YEARSPERREPEAT) + +/* How many years to generate (in zic.c) or search through (in localtime.c). + This is two years larger than the obvious 400, to avoid edge cases. + E.g., suppose a non-POSIX.1-2017 rule applies from 2012 on with transitions + in March and September, plus one-off transitions in November 2013. + If zic looked only at the last 400 years, it would set max_year=2413, + with the intent that the 400 years 2014 through 2413 will be repeated. + The last transition listed in the tzfile would be in 2413-09, + less than 400 years after the last one-off transition in 2013-11. + Two years is not overkill for localtime.c, as a one-year bump + would mishandle 2023d's America/Ciudad_Juarez for November 2422. */ +enum { years_of_observations = YEARSPERREPEAT + 2 }; + +enum { + TM_SUNDAY, + TM_MONDAY, + TM_TUESDAY, + TM_WEDNESDAY, + TM_THURSDAY, + TM_FRIDAY, + TM_SATURDAY +}; + +enum { + TM_JANUARY, + TM_FEBRUARY, + TM_MARCH, + TM_APRIL, + TM_MAY, + TM_JUNE, + TM_JULY, + TM_AUGUST, + TM_SEPTEMBER, + TM_OCTOBER, + TM_NOVEMBER, + TM_DECEMBER +}; + +enum { + TM_YEAR_BASE = 1900, + TM_WDAY_BASE = TM_MONDAY, + EPOCH_YEAR = 1970, + EPOCH_WDAY = TM_THURSDAY +}; + +#define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0)) + +/* +** Since everything in isleap is modulo 400 (or a factor of 400), we know that +** isleap(y) == isleap(y % 400) +** and so +** isleap(a + b) == isleap((a + b) % 400) +** or +** isleap(a + b) == isleap(a % 400 + b % 400) +** This is true even if % means modulo rather than Fortran remainder +** (which is allowed by C89 but not by C99 or later). +** We use this to avoid addition overflow problems. +*/ + +#define isleap_sum(a, b) isleap((a) % 400 + (b) % 400) + +#endif /* !defined TZ_PRIVATE_H */ diff --git a/libc/time/strftime.c b/third_party/tz/strftime.c similarity index 64% rename from libc/time/strftime.c rename to third_party/tz/strftime.c index 1a607b35e..372b98071 100644 --- a/libc/time/strftime.c +++ b/third_party/tz/strftime.c @@ -1,4 +1,4 @@ -/*-*- mode:c; indent-tabs-mode:t; tab-width:8; coding:utf-8 -*-│ +/*-*- mode:c;indent-tabs-mode:t;c-basic-offset:8;tab-width:8;coding:utf-8 -*-│ │ vi: set noet ft=c ts=8 sw=8 fenc=utf-8 :vi │ ╞══════════════════════════════════════════════════════════════════════════════╡ │ Copyright (c) 1989 The Regents of the University of California. │ @@ -16,24 +16,19 @@ │ IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED │ │ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/inttypes.h" -#include "libc/stdio/stdio.h" #include "libc/str/locale.h" -#include "libc/time/time.h" -#include "libc/time/tz.internal.h" -// clang-format off -// converts broken-down timestamp to string - -#define DIVISOR 100 +#include "libc/time.h" +#include "libc/runtime/runtime.h" +#include "libc/stdio/stdio.h" +#include "libc/inttypes.h" +#include "private.h" __notice(strftime_notice, "strftime (BSD-3)\n\ Copyright 1989 The Regents of the University of California"); -/* -** Based on the UCB version with the copyright notice appearing above. -** -** This is ANSIish only when "multibyte character == plain character". -*/ +#ifndef DEPRECATE_TWO_DIGIT_YEARS +# define DEPRECATE_TWO_DIGIT_YEARS false +#endif struct lc_time_T { const char * mon[MONSPERYEAR]; @@ -48,8 +43,6 @@ struct lc_time_T { const char * date_fmt; }; -#define Locale (&C_time_locale) - static const struct lc_time_T C_time_locale = { { "Jan", "Feb", "Mar", "Apr", "May", "Jun", @@ -99,11 +92,11 @@ static const struct lc_time_T C_time_locale = { enum warn { IN_NONE, IN_SOME, IN_THIS, IN_ALL }; #ifndef YEAR_2000_NAME -#define YEAR_2000_NAME "CHECK_STRFTIME_FORMATS_FOR_TWO_DIGIT_YEARS" +# define YEAR_2000_NAME "CHECK_STRFTIME_FORMATS_FOR_TWO_DIGIT_YEARS" #endif /* !defined YEAR_2000_NAME */ static char * -strftime_add(const char *str, char *pt, const char *ptlim) +_add(const char *str, char *pt, const char *ptlim) { while (pt < ptlim && (*pt = *str++) != '\0') ++pt; @@ -111,11 +104,12 @@ strftime_add(const char *str, char *pt, const char *ptlim) } static char * -strftime_conv(int n, const char *format, char *pt, const char *ptlim) +_conv(int n, const char *format, char *pt, const char *ptlim) { char buf[INT_STRLEN_MAXIMUM(int) + 1]; - (sprintf)(buf, format, n); - return strftime_add(buf, pt, ptlim); + + sprintf(buf, format, n); + return _add(buf, pt, ptlim); } /* @@ -127,17 +121,13 @@ strftime_conv(int n, const char *format, char *pt, const char *ptlim) */ static char * -strftime_yconv( - int a, - int b, - bool convert_top, - bool convert_yy, - char *pt, - const char *ptlim) +_yconv(int a, int b, bool convert_top, bool convert_yy, + char *pt, const char *ptlim) { register int lead; register int trail; + int DIVISOR = 100; trail = a % DIVISOR + b % DIVISOR; lead = a / DIVISOR + b / DIVISOR + trail / DIVISOR; trail %= DIVISOR; @@ -150,18 +140,20 @@ strftime_yconv( } if (convert_top) { if (lead == 0 && trail < 0) - pt = strftime_add("-0", pt, ptlim); - else pt = strftime_conv(lead, "%02d", pt, ptlim); + pt = _add("-0", pt, ptlim); + else pt = _conv(lead, "%02d", pt, ptlim); } if (convert_yy) - pt = strftime_conv(((trail < 0) ? -trail : trail), "%02d", pt, ptlim); + pt = _conv(((trail < 0) ? -trail : trail), "%02d", pt, ptlim); return pt; } static char * -strftime_fmt(const char *format, const struct tm *t, char *pt, - const char *ptlim, enum warn *warnp) +_fmt(const char *format, const struct tm *t, char *pt, + const char *ptlim, enum warn *warnp) { + struct lc_time_T const *Locale = &C_time_locale; + for ( ; *format; ++format) { if (*format == '%') { label: @@ -170,31 +162,27 @@ label: --format; break; case 'A': - pt = strftime_add( - (t->tm_wday < 0 || + pt = _add((t->tm_wday < 0 || t->tm_wday >= DAYSPERWEEK) ? "?" : Locale->weekday[t->tm_wday], pt, ptlim); continue; case 'a': - pt = strftime_add( - (t->tm_wday < 0 || - t->tm_wday >= DAYSPERWEEK) ? + pt = _add((t->tm_wday < 0 || + t->tm_wday >= DAYSPERWEEK) ? "?" : Locale->wday[t->tm_wday], pt, ptlim); continue; case 'B': - pt = strftime_add( - (t->tm_mon < 0 || - t->tm_mon >= MONSPERYEAR) ? + pt = _add((t->tm_mon < 0 || + t->tm_mon >= MONSPERYEAR) ? "?" : Locale->month[t->tm_mon], pt, ptlim); continue; case 'b': case 'h': - pt = strftime_add( - (t->tm_mon < 0 || - t->tm_mon >= MONSPERYEAR) ? + pt = _add((t->tm_mon < 0 || + t->tm_mon >= MONSPERYEAR) ? "?" : Locale->mon[t->tm_mon], pt, ptlim); continue; @@ -206,14 +194,14 @@ label: ** something completely different. ** (ado, 1993-05-24) */ - pt = strftime_yconv(t->tm_year, TM_YEAR_BASE, - true, false, pt, ptlim); + pt = _yconv(t->tm_year, TM_YEAR_BASE, + true, false, pt, ptlim); continue; case 'c': { enum warn warn2 = IN_SOME; - pt = strftime_fmt(Locale->c_fmt, t, pt, ptlim, &warn2); + pt = _fmt(Locale->c_fmt, t, pt, ptlim, &warn2); if (warn2 == IN_ALL) warn2 = IN_THIS; if (warn2 > *warnp) @@ -221,10 +209,10 @@ label: } continue; case 'D': - pt = strftime_fmt("%m/%d/%y", t, pt, ptlim, warnp); + pt = _fmt("%m/%d/%y", t, pt, ptlim, warnp); continue; case 'd': - pt = strftime_conv(t->tm_mday, "%02d", pt, ptlim); + pt = _conv(t->tm_mday, "%02d", pt, ptlim); continue; case 'E': case 'O': @@ -239,21 +227,21 @@ label: */ goto label; case 'e': - pt = strftime_conv(t->tm_mday, "%2d", pt, ptlim); + pt = _conv(t->tm_mday, "%2d", pt, ptlim); continue; case 'F': - pt = strftime_fmt("%Y-%m-%d", t, pt, ptlim, warnp); + pt = _fmt("%Y-%m-%d", t, pt, ptlim, warnp); continue; case 'H': - pt = strftime_conv(t->tm_hour, "%02d", pt, ptlim); + pt = _conv(t->tm_hour, "%02d", pt, ptlim); continue; case 'I': - pt = strftime_conv((t->tm_hour % 12) ? - (t->tm_hour % 12) : 12, - "%02d", pt, ptlim); + pt = _conv((t->tm_hour % 12) ? + (t->tm_hour % 12) : 12, + "%02d", pt, ptlim); continue; case 'j': - pt = strftime_conv(t->tm_yday + 1, "%03d", pt, ptlim); + pt = _conv(t->tm_yday + 1, "%03d", pt, ptlim); continue; case 'k': /* @@ -266,15 +254,14 @@ label: ** "%l" have been swapped. ** (ado, 1993-05-24) */ - pt = strftime_conv(t->tm_hour, "%2d", - pt, ptlim); + pt = _conv(t->tm_hour, "%2d", pt, ptlim); continue; #ifdef KITCHEN_SINK case 'K': /* ** After all this time, still unclaimed! */ - pt = strftime_add("kitchen sink", pt, ptlim); + pt = _add("kitchen sink", pt, ptlim); continue; #endif /* defined KITCHEN_SINK */ case 'l': @@ -287,38 +274,33 @@ label: ** "%l" have been swapped. ** (ado, 1993-05-24) */ - pt = strftime_conv((t->tm_hour % 12) ? - (t->tm_hour % 12) : 12, - "%2d", pt, ptlim); + pt = _conv((t->tm_hour % 12) ? + (t->tm_hour % 12) : 12, + "%2d", pt, ptlim); continue; case 'M': - pt = strftime_conv(t->tm_min, "%02d", - pt, ptlim); + pt = _conv(t->tm_min, "%02d", pt, ptlim); continue; case 'm': - pt = strftime_conv(t->tm_mon + 1, "%02d", - pt, ptlim); + pt = _conv(t->tm_mon + 1, "%02d", pt, ptlim); continue; case 'n': - pt = strftime_add("\n", pt, ptlim); + pt = _add("\n", pt, ptlim); continue; case 'p': - pt = strftime_add( - (t->tm_hour >= (HOURSPERDAY / 2)) ? + pt = _add((t->tm_hour >= (HOURSPERDAY / 2)) ? Locale->pm : Locale->am, pt, ptlim); continue; case 'R': - pt = strftime_fmt("%H:%M", t, pt, ptlim, warnp); + pt = _fmt("%H:%M", t, pt, ptlim, warnp); continue; case 'r': - pt = strftime_fmt("%I:%M:%S %p", t, pt, - ptlim, warnp); + pt = _fmt("%I:%M:%S %p", t, pt, ptlim, warnp); continue; case 'S': - pt = strftime_conv(t->tm_sec, "%02d", pt, - ptlim); + pt = _conv(t->tm_sec, "%02d", pt, ptlim); continue; case 's': { @@ -327,42 +309,42 @@ label: time_t) + 1]; time_t mkt; - tm = *t; - tm.tm_yday = -1; + tm.tm_sec = t->tm_sec; + tm.tm_min = t->tm_min; + tm.tm_hour = t->tm_hour; + tm.tm_mday = t->tm_mday; + tm.tm_mon = t->tm_mon; + tm.tm_year = t->tm_year; +#ifdef TM_GMTOFF + mkt = timeoff(&tm, t->TM_GMTOFF); +#else + tm.tm_isdst = t->tm_isdst; mkt = mktime(&tm); - if (mkt == (time_t) -1) { - /* Fail unless this -1 represents - a valid time. */ - struct tm tm_1; - if (!localtime_r(&mkt, &tm_1)) - return NULL; - if (!(tm.tm_year == tm_1.tm_year - && tm.tm_yday == tm_1.tm_yday - && tm.tm_hour == tm_1.tm_hour - && tm.tm_min == tm_1.tm_min - && tm.tm_sec == tm_1.tm_sec)) - return NULL; - } +#endif + /* If mktime fails, %s expands to the + value of (time_t) -1 as a failure + marker; this is better in practice + than strftime failing. */ if (TYPE_SIGNED(time_t)) { intmax_t n = mkt; - (sprintf)(buf, "%"PRIdMAX, n); + sprintf(buf, "%"PRIdMAX, n); } else { uintmax_t n = mkt; - (sprintf)(buf, "%"PRIuMAX, n); + sprintf(buf, "%"PRIuMAX, n); } - pt = strftime_add(buf, pt, ptlim); + pt = _add(buf, pt, ptlim); } continue; case 'T': - pt = strftime_fmt("%H:%M:%S", t, pt, ptlim, warnp); + pt = _fmt("%H:%M:%S", t, pt, ptlim, warnp); continue; case 't': - pt = strftime_add("\t", pt, ptlim); + pt = _add("\t", pt, ptlim); continue; case 'U': - pt = strftime_conv((t->tm_yday + DAYSPERWEEK - - t->tm_wday) / DAYSPERWEEK, - "%02d", pt, ptlim); + pt = _conv((t->tm_yday + DAYSPERWEEK - + t->tm_wday) / DAYSPERWEEK, + "%02d", pt, ptlim); continue; case 'u': /* @@ -371,9 +353,9 @@ label: ** [1 (Monday) - 7]" ** (ado, 1993-05-24) */ - pt = strftime_conv((t->tm_wday == 0) ? - DAYSPERWEEK : t->tm_wday, - "%d", pt, ptlim); + pt = _conv((t->tm_wday == 0) ? + DAYSPERWEEK : t->tm_wday, + "%d", pt, ptlim); continue; case 'V': /* ISO 8601 week number */ case 'G': /* ISO 8601 year (four digits) */ @@ -445,17 +427,24 @@ label: DAYSPERLYEAR : DAYSPERNYEAR; } +#ifdef XPG4_1994_04_09 + if ((w == 52 && + t->tm_mon == TM_JANUARY) || + (w == 1 && + t->tm_mon == TM_DECEMBER)) + w = 53; +#endif /* defined XPG4_1994_04_09 */ if (*format == 'V') - pt = strftime_conv(w, "%02d", - pt, ptlim); + pt = _conv(w, "%02d", + pt, ptlim); else if (*format == 'g') { *warnp = IN_ALL; - pt = strftime_yconv(year, base, - false, true, - pt, ptlim); - } else pt = strftime_yconv(year, base, - true, true, - pt, ptlim); + pt = _yconv(year, base, + false, true, + pt, ptlim); + } else pt = _yconv(year, base, + true, true, + pt, ptlim); } continue; case 'v': @@ -464,27 +453,26 @@ label: ** "date as dd-bbb-YYYY" ** (ado, 1993-05-24) */ - pt = strftime_fmt("%e-%b-%Y", t, pt, ptlim, warnp); + pt = _fmt("%e-%b-%Y", t, pt, ptlim, warnp); continue; case 'W': - pt = strftime_conv( - (t->tm_yday + DAYSPERWEEK - - (t->tm_wday ? - (t->tm_wday - 1) : - (DAYSPERWEEK - 1))) / DAYSPERWEEK, + pt = _conv((t->tm_yday + DAYSPERWEEK - + (t->tm_wday ? + (t->tm_wday - 1) : + (DAYSPERWEEK - 1))) / DAYSPERWEEK, "%02d", pt, ptlim); continue; case 'w': - pt = strftime_conv(t->tm_wday, "%d", pt, ptlim); + pt = _conv(t->tm_wday, "%d", pt, ptlim); continue; case 'X': - pt = strftime_fmt(Locale->X_fmt, t, pt, ptlim, warnp); + pt = _fmt(Locale->X_fmt, t, pt, ptlim, warnp); continue; case 'x': { enum warn warn2 = IN_SOME; - pt = strftime_fmt(Locale->x_fmt, t, pt, ptlim, &warn2); + pt = _fmt(Locale->x_fmt, t, pt, ptlim, &warn2); if (warn2 == IN_ALL) warn2 = IN_THIS; if (warn2 > *warnp) @@ -493,17 +481,23 @@ label: continue; case 'y': *warnp = IN_ALL; - pt = strftime_yconv(t->tm_year, TM_YEAR_BASE, - false, true, - pt, ptlim); + pt = _yconv(t->tm_year, TM_YEAR_BASE, + false, true, + pt, ptlim); continue; case 'Y': - pt = strftime_yconv(t->tm_year, TM_YEAR_BASE, - true, true, - pt, ptlim); + pt = _yconv(t->tm_year, TM_YEAR_BASE, + true, true, + pt, ptlim); continue; case 'Z': - pt = strftime_add(t->tm_zone, pt, ptlim); +#ifdef TM_ZONE + pt = _add(t->TM_ZONE, pt, ptlim); +#elif HAVE_TZNAME + if (t->tm_isdst >= 0) + pt = _add(tzname[t->tm_isdst != 0], + pt, ptlim); +#endif /* ** C99 and later say that %Z must be ** replaced by the empty string if the @@ -512,30 +506,76 @@ label: */ continue; case 'z': +#if defined TM_GMTOFF || USG_COMPAT || ALTZONE { long diff; char const * sign; bool negative; - diff = t->tm_gmtoff; +# ifdef TM_GMTOFF + diff = t->TM_GMTOFF; +# else + /* + ** C99 and later say that the UT offset must + ** be computed by looking only at + ** tm_isdst. This requirement is + ** incorrect, since it means the code + ** must rely on magic (in this case + ** altzone and timezone), and the + ** magic might not have the correct + ** offset. Doing things correctly is + ** tricky and requires disobeying the standard; + ** see GNU C strftime for details. + ** For now, punt and conform to the + ** standard, even though it's incorrect. + ** + ** C99 and later say that %z must be replaced by + ** the empty string if the time zone is not + ** determinable, so output nothing if the + ** appropriate variables are not available. + */ + if (t->tm_isdst < 0) + continue; + if (t->tm_isdst == 0) +# if USG_COMPAT + diff = -timezone; +# else + continue; +# endif + else +# if ALTZONE + diff = -altzone; +# else + continue; +# endif +# endif negative = diff < 0; if (diff == 0) { - negative = t->tm_zone[0] == '-'; +# ifdef TM_ZONE + negative = t->TM_ZONE[0] == '-'; +# else + negative = t->tm_isdst < 0; +# if HAVE_TZNAME + if (tzname[t->tm_isdst != 0][0] == '-') + negative = true; +# endif +# endif } if (negative) { sign = "-"; diff = -diff; } else sign = "+"; - pt = strftime_add(sign, pt, ptlim); + pt = _add(sign, pt, ptlim); diff /= SECSPERMIN; diff = (diff / MINSPERHOUR) * 100 + (diff % MINSPERHOUR); - pt = strftime_conv(diff, "%04d", pt, ptlim); + pt = _conv(diff, "%04d", pt, ptlim); } +#endif continue; case '+': - pt = strftime_fmt(Locale->date_fmt, t, pt, - ptlim, warnp); + pt = _fmt(Locale->date_fmt, t, pt, ptlim, + warnp); continue; case '%': /* @@ -569,18 +609,31 @@ label: * @see FormatHttpDateTime() */ size_t -strftime(char *s, size_t maxsize, const char *format, const struct tm *t) +strftime(char *restrict s, size_t maxsize, char const *restrict format, + struct tm const *restrict t) { char * p; int saved_errno = errno; enum warn warn = IN_NONE; tzset(); - p = strftime_fmt(format, t, s, s + maxsize, &warn); + p = _fmt(format, t, s, s + maxsize, &warn); if (!p) { errno = EOVERFLOW; return 0; } + if (DEPRECATE_TWO_DIGIT_YEARS + && warn != IN_NONE && getenv(YEAR_2000_NAME)) { + fprintf(stderr, "\n"); + fprintf(stderr, "strftime format \"%s\" ", format); + fprintf(stderr, "yields only two digits of years in "); + if (warn == IN_SOME) + fprintf(stderr, "some locales"); + else if (warn == IN_THIS) + fprintf(stderr, "the current locale"); + else fprintf(stderr, "all locales"); + fprintf(stderr, "\n"); + } if (p == s + maxsize) { errno = ERANGE; return 0; @@ -590,10 +643,4 @@ strftime(char *s, size_t maxsize, const char *format, const struct tm *t) return p - s; } -size_t -strftime_l(char *s, size_t maxsize, char const *format, struct tm const *t, - locale_t locale) -{ - /* Just call strftime, as only the C locale is supported. */ - return strftime(s, maxsize, format, t); -} +__weak_reference(strftime, strftime_l); diff --git a/third_party/tz/timezone.c b/third_party/tz/timezone.c new file mode 100644 index 000000000..64f726074 --- /dev/null +++ b/third_party/tz/timezone.c @@ -0,0 +1,6 @@ +/*-*- mode:c;indent-tabs-mode:t;c-basic-offset:8;tab-width:8;coding:utf-8 -*-│ +│ vi: set noet ft=c ts=8 sw=8 fenc=utf-8 :vi │ +╚─────────────────────────────────────────────────────────────────────────────*/ +#include "libc/time.h" + +long timezone; diff --git a/third_party/tz/tzdir.h b/third_party/tz/tzdir.h new file mode 100644 index 000000000..4d5a701f6 --- /dev/null +++ b/third_party/tz/tzdir.h @@ -0,0 +1,6 @@ +#ifndef TZDEFAULT +#define TZDEFAULT "/etc/localtime" /* default zone */ +#endif +#ifndef TZDIR +#define TZDIR "/zip/usr/share/zoneinfo" /* TZif directory */ +#endif diff --git a/libc/time/tzfile.internal.h b/third_party/tz/tzfile.h similarity index 81% rename from libc/time/tzfile.internal.h rename to third_party/tz/tzfile.h index abab9923d..3155010ed 100644 --- a/libc/time/tzfile.internal.h +++ b/third_party/tz/tzfile.h @@ -1,8 +1,9 @@ -#ifndef TZFILE_H -#define TZFILE_H -/* clang-format off */ /* Layout and location of TZif files. */ +#ifndef TZFILE_H + +#define TZFILE_H + /* ** This file is in the public domain, so clarified as of ** 1996-06-05 by Arthur David Olson. @@ -20,16 +21,8 @@ ** Information about time zone files. */ -#ifndef TZDIR -#define TZDIR "/zip/usr/share/zoneinfo" /* Time zone object file directory */ -#endif /* !defined TZDIR */ - -#ifndef TZDEFAULT -#define TZDEFAULT "/etc/localtime" -#endif /* !defined TZDEFAULT */ - #ifndef TZDEFRULES -#define TZDEFRULES "US/Pacific" +# define TZDEFRULES "posixrules" #endif /* !defined TZDEFRULES */ @@ -85,11 +78,11 @@ struct tzhead { ** time uses 8 rather than 4 chars, ** then a POSIX-TZ-environment-variable-style string for use in handling ** instants after the last transition time stored in the file -** (with nothing between the newlines if there is no POSIX representation for -** such instants). +** (with nothing between the newlines if there is no POSIX.1-2017 +** representation for such instants). ** ** If tz_version is '3' or greater, the above is extended as follows. -** First, the POSIX TZ string's hour offset may range from -167 +** First, the TZ string's hour offset may range from -167 ** through 167 as compared to the POSIX-required 0 through 24. ** Second, its DST start time may be January 1 at 00:00 and its stop ** time December 31 at 24:00 plus the difference between DST and @@ -102,21 +95,25 @@ struct tzhead { */ #ifndef TZ_MAX_TIMES -#define TZ_MAX_TIMES 2000 +/* This must be at least 242 for Europe/London with 'zic -b fat'. */ +# define TZ_MAX_TIMES 2000 #endif /* !defined TZ_MAX_TIMES */ #ifndef TZ_MAX_TYPES -/* This must be at least 17 for Europe/Samara and Europe/Vilnius. */ -#define TZ_MAX_TYPES 256 /* Limited by what (unsigned char)'s can hold */ +/* This must be at least 18 for Europe/Vilnius with 'zic -b fat'. */ +# define TZ_MAX_TYPES 256 /* Limited by what (unsigned char)'s can hold */ #endif /* !defined TZ_MAX_TYPES */ #ifndef TZ_MAX_CHARS -#define TZ_MAX_CHARS 50 /* Maximum number of abbreviation characters */ +/* This must be at least 40 for America/Anchorage. */ +# define TZ_MAX_CHARS 50 /* Maximum number of abbreviation characters */ /* (limited by what unsigned chars can hold) */ #endif /* !defined TZ_MAX_CHARS */ #ifndef TZ_MAX_LEAPS -#define TZ_MAX_LEAPS 50 /* Maximum number of leap second corrections */ +/* This must be at least 27 for leap seconds from 1972 through mid-2023. + There's a plan to discontinue leap seconds by 2035. */ +# define TZ_MAX_LEAPS 50 /* Maximum number of leap second corrections */ #endif /* !defined TZ_MAX_LEAPS */ #endif /* !defined TZFILE_H */ diff --git a/third_party/tz/tzname.c b/third_party/tz/tzname.c new file mode 100644 index 000000000..d21243a61 --- /dev/null +++ b/third_party/tz/tzname.c @@ -0,0 +1,6 @@ +/*-*- mode:c;indent-tabs-mode:t;c-basic-offset:8;tab-width:8;coding:utf-8 -*-│ +│ vi: set noet ft=c ts=8 sw=8 fenc=utf-8 :vi │ +╚─────────────────────────────────────────────────────────────────────────────*/ +#include "libc/time.h" + +char *tzname[2]; diff --git a/third_party/tz/windows.py b/third_party/tz/windows.py new file mode 100644 index 000000000..633c78093 --- /dev/null +++ b/third_party/tz/windows.py @@ -0,0 +1,163 @@ +# Thank you Alejandro Zeise for collecting this information +# https://gist.github.com/alejzeis/ad5827eb14b5c22109ba652a1a267af5 + +SUPPORTED = set(( + 'Africa/Algiers', + 'Africa/Cairo', + 'Africa/Johannesburg', + 'Africa/Lagos', + 'Africa/Nairobi', + 'America/Anchorage', + 'America/Argentina/Buenos_Aires', + 'America/Bogota', + 'America/Chicago', + 'America/Denver', + 'America/Lima', + 'America/Los_Angeles', + 'America/Mexico_City', + 'America/New_York', + 'America/Phoenix', + 'America/Santiago', + 'America/Sao_Paulo', + 'Asia/Bangkok', + 'Asia/Dhaka', + 'Asia/Dubai', + 'Asia/Hong_Kong', + 'Asia/Jakarta', + 'Asia/Jerusalem', + 'Asia/Kabul', + 'Asia/Karachi', + 'Asia/Kolkata', + 'Asia/Manila', + 'Asia/Seoul', + 'Asia/Shanghai', + 'Asia/Singapore', + 'Asia/Taipei', + 'Asia/Tehran', + 'Asia/Tokyo', + 'Australia/Adelaide', + 'Australia/Brisbane', + 'Australia/Melbourne', + 'Australia/Perth', + 'Australia/Sydney', + 'CET', + 'CST6CDT', + 'EET', + 'EST', + 'EST5EDT', + 'Etc/GMT', + 'Etc/GMT+1', + 'Etc/GMT+10', + 'Etc/GMT+11', + 'Etc/GMT+12', + 'Etc/GMT+2', + 'Etc/GMT+3', + 'Etc/GMT+4', + 'Etc/GMT+5', + 'Etc/GMT+6', + 'Etc/GMT+7', + 'Etc/GMT+8', + 'Etc/GMT+9', + 'Etc/GMT-1', + 'Etc/GMT-10', + 'Etc/GMT-11', + 'Etc/GMT-12', + 'Etc/GMT-13', + 'Etc/GMT-14', + 'Etc/GMT-2', + 'Etc/GMT-3', + 'Etc/GMT-4', + 'Etc/GMT-5', + 'Etc/GMT-6', + 'Etc/GMT-7', + 'Etc/GMT-8', + 'Etc/GMT-9', + 'Etc/UTC', + 'Europe/Berlin', + 'Europe/Brussels', + 'Europe/Budapest', + 'Europe/Dublin', + 'Europe/Istanbul', + 'Europe/Kyiv', + 'Europe/London', + 'Europe/Madrid', + 'Europe/Moscow', + 'Europe/Paris', + 'Europe/Prague', + 'Europe/Rome', + 'Europe/Vienna', + 'Europe/Warsaw', + 'Europe/Zurich', + 'GMT', + 'HST', + 'MET', + 'MST', + 'MST7MDT', + 'PST8PDT', + 'Pacific/Auckland', + 'Pacific/Fiji', + 'Pacific/Guam', + 'Pacific/Honolulu', + 'Pacific/Port_Moresby', + 'WET', +)) + +import re +import os +import subprocess + +NAMES = set() +ZONES = set() +SUPERFLUOUS = set() +TABLE1 = [] +TABLE2 = [] + +with open("/home/jart/scratch/windows-timezone-mappings.csv") as f: + for line in f: + line = line.strip() + if not line: + break + name, what, zone = line.split(',') + if name in NAMES: + continue + ZZ = zone.split() # has superfluous zones + ZZ = [z for z in ZZ if z in SUPPORTED] + [z for z in ZZ if z not in SUPPORTED] + zone = ZZ[0] + rest = ZZ[1:] + NAMES.add(name) + ZONES.add(ZZ[0]) + SUPERFLUOUS |= set(rest) + os.environ['TZ'] = zone + p = subprocess.Popen(['date', '+%z@%Z'], stdout=subprocess.PIPE) + z, Z = p.stdout.read().decode('utf-8').strip().split('@') + print("%-35s %-5s %-10s %-10s %-30s" % (name, what, z, Z, zone)) + if zone in SUPPORTED: + TABLE1.append((name, zone, z, Z)) + else: + TABLE2.append((name, zone, z, Z)) + +print() +TABLE1.sort() +TABLE2.sort() +for k, v, z, Z in TABLE1: + print('{"%s", "%s"}, // %s %s' % (k, v, z, Z)) +print('#ifdef EMBED_EVERY_TIME_ZONE') +for k, v, z, Z in TABLE2: + print('{"%s", "%s"}, // %s %s' % (k, v, z, Z)) +print('#endif') + +# print() +# TABLE.sort(key=lambda x: (int(x[2]), x[1])) +# for k, v, z, Z in TABLE: +# if re.search(r'[A-Z]', Z): +# Z = ' ' + Z +# else: +# Z = '' +# print('__static_yoink("usr/share/zoneinfo/%s"); // %s%s (%s)' % (v, z, Z, k)) +# print('#ifdef EMBED_EVERY_TIME_ZONE') +# print('#endif') + +# print() +# SUPERFLUOUS -= ZONES +# for z in SUPERFLUOUS: +# print(z) diff --git a/third_party/unzip/BUILD.mk b/third_party/unzip/BUILD.mk index 945aef41c..b1db75282 100644 --- a/third_party/unzip/BUILD.mk +++ b/third_party/unzip/BUILD.mk @@ -23,8 +23,8 @@ THIRD_PARTY_UNZIP_A_DIRECTDEPS = \ LIBC_STDIO \ LIBC_STR \ LIBC_SYSV \ - LIBC_TIME \ - THIRD_PARTY_BZIP2 + THIRD_PARTY_BZIP2 \ + THIRD_PARTY_TZ THIRD_PARTY_UNZIP_A_DEPS := \ $(call uniq,$(foreach x,$(THIRD_PARTY_UNZIP_A_DIRECTDEPS),$($(x)))) diff --git a/third_party/unzip/timezone.c b/third_party/unzip/timezone.c index 95cf80652..8edd5bcf5 100644 --- a/third_party/unzip/timezone.c +++ b/third_party/unzip/timezone.c @@ -36,7 +36,7 @@ #include "third_party/unzip/zip.h" -#include "libc/time/struct/tm.h" +#include "libc/time.h" #include "third_party/unzip/timezone.h" #ifdef IZTZ_DEFINESTDGLOBALS diff --git a/third_party/unzip/unix.c b/third_party/unzip/unix.c index 6e15a11e0..a5a35f32e 100644 --- a/third_party/unzip/unix.c +++ b/third_party/unzip/unix.c @@ -30,9 +30,9 @@ #define UNZIP_INTERNAL #include "libc/calls/struct/dirent.h" #include "libc/log/log.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/unzip/unzip.h" -#include "libc/time/struct/utimbuf.h" +#include "libc/utime.h" #include "third_party/unzip/globals.h" #ifdef USE_ICONV_MAPPING diff --git a/third_party/unzip/unxcfg.h b/third_party/unzip/unxcfg.h index a3ba26301..c4d13dbb8 100644 --- a/third_party/unzip/unxcfg.h +++ b/third_party/unzip/unxcfg.h @@ -15,7 +15,7 @@ #include "libc/calls/struct/stat.h" #include "libc/sysv/consts/o.h" #include "libc/str/str.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "libc/calls/weirdtypes.h" diff --git a/third_party/xxhash/BUILD.mk b/third_party/xxhash/BUILD.mk index 2cfc33615..01c13ca84 100644 --- a/third_party/xxhash/BUILD.mk +++ b/third_party/xxhash/BUILD.mk @@ -21,7 +21,7 @@ THIRD_PARTY_XXHASH_A_DIRECTDEPS = \ LIBC_STDIO \ LIBC_STR \ LIBC_SYSV \ - LIBC_TIME + THIRD_PARTY_TZ THIRD_PARTY_XXHASH_A_DEPS := \ $(call uniq,$(foreach x,$(THIRD_PARTY_XXHASH_A_DIRECTDEPS),$($(x)))) diff --git a/third_party/xxhash/cli/xsum_bench.c b/third_party/xxhash/cli/xsum_bench.c index 12f0e2c0b..8e56eea25 100644 --- a/third_party/xxhash/cli/xsum_bench.c +++ b/third_party/xxhash/cli/xsum_bench.c @@ -61,8 +61,7 @@ #include "libc/sysv/consts/clock.h" #include "libc/sysv/consts/sched.h" #include "libc/sysv/consts/timer.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" /* clock_t, clock, CLOCKS_PER_SEC */ +#include "libc/time.h" /* clock_t, clock, CLOCKS_PER_SEC */ #include "libc/errno.h" /* errno */ #define TIMELOOP_S 1 diff --git a/third_party/xxhash/cli/xsum_config.h b/third_party/xxhash/cli/xsum_config.h index a30cf28a4..f926284c5 100644 --- a/third_party/xxhash/cli/xsum_config.h +++ b/third_party/xxhash/cli/xsum_config.h @@ -87,7 +87,7 @@ #include "libc/sysv/consts/fileno.h" #include "libc/sysv/consts/o.h" #include "libc/sysv/consts/ok.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/musl/crypt.h" #include "third_party/musl/lockf.h" /* declares _POSIX_VERSION */ # if defined(_POSIX_VERSION) /* POSIX compliant */ @@ -138,7 +138,7 @@ #include "libc/stdio/stdio.h" #include "libc/str/str.h" #include "libc/str/unicode.h" -#include "libc/time/time.h" +#include "libc/time.h" # if WCHAR_MAX == 0xFFFFU /* UTF-16 wchar_t */ # define XSUM_WIN32_USE_WCHAR 1 # else diff --git a/third_party/xxhash/cli/xsum_os_specific.c b/third_party/xxhash/cli/xsum_os_specific.c index 1a767a16b..3b5fb88fe 100644 --- a/third_party/xxhash/cli/xsum_os_specific.c +++ b/third_party/xxhash/cli/xsum_os_specific.c @@ -31,7 +31,7 @@ #include "libc/calls/weirdtypes.h" #include "libc/sysv/consts/s.h" #include "libc/sysv/consts/utime.h" -#include "libc/time/time.h" /* stat() / _stat64() */ +#include "libc/time.h" /* stat() / _stat64() */ /* * This file contains all of the ugly boilerplate to make xxhsum work across @@ -60,7 +60,7 @@ #include "libc/sysv/consts/fileno.h" #include "libc/sysv/consts/o.h" #include "libc/sysv/consts/ok.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/musl/crypt.h" #include "third_party/musl/lockf.h" /* isatty */ # define XSUM_IS_CONSOLE(stdStream) isatty(fileno(stdStream)) @@ -207,7 +207,7 @@ int main(int argc, const char* argv[]) #include "libc/stdio/stdio.h" #include "libc/str/str.h" #include "libc/str/unicode.h" -#include "libc/time/time.h" +#include "libc/time.h" /***************************************************************************** * Unicode conversion tools diff --git a/third_party/xxhash/tests/bench/timefn.h b/third_party/xxhash/tests/bench/timefn.h index ce52d1265..2ab164ab9 100644 --- a/third_party/xxhash/tests/bench/timefn.h +++ b/third_party/xxhash/tests/bench/timefn.h @@ -30,8 +30,7 @@ extern "C" { #if defined(_MSC_VER) // MISSING #include /* utime */ #else -#include "libc/time/struct/utimbuf.h" -#include "libc/time/time.h" /* utime */ +#include "libc/time.h" /* utime */ #endif #include "libc/calls/calls.h" #include "libc/calls/struct/timespec.h" @@ -40,8 +39,7 @@ extern "C" { #include "libc/sysv/consts/clock.h" #include "libc/sysv/consts/sched.h" #include "libc/sysv/consts/timer.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" /* clock_t, clock, CLOCKS_PER_SEC */ +#include "libc/time.h" /* clock_t, clock, CLOCKS_PER_SEC */ diff --git a/third_party/xxhash/tests/collisions/main.c b/third_party/xxhash/tests/collisions/main.c index 8970021c2..bb6499d1d 100644 --- a/third_party/xxhash/tests/collisions/main.c +++ b/third_party/xxhash/tests/collisions/main.c @@ -506,8 +506,7 @@ static inline int Filter_check(const Filter* bf, int bflog, uint64_t hash) #include "libc/sysv/consts/clock.h" #include "libc/sysv/consts/sched.h" #include "libc/sysv/consts/timer.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" /* clock_t, clock, time_t, time, difftime */ +#include "libc/time.h" /* clock_t, clock, time_t, time, difftime */ void update_indicator(uint64_t v, uint64_t total) { diff --git a/third_party/zip/BUILD.mk b/third_party/zip/BUILD.mk index 3ca3d80c9..d0a163fc3 100644 --- a/third_party/zip/BUILD.mk +++ b/third_party/zip/BUILD.mk @@ -90,9 +90,9 @@ THIRD_PARTY_ZIP_DIRECTDEPS = \ LIBC_PROC \ LIBC_STR \ LIBC_SYSV \ - LIBC_TIME \ LIBC_X \ THIRD_PARTY_BZIP2 \ + THIRD_PARTY_TZ \ THIRD_PARTY_ZLIB THIRD_PARTY_ZIP_DEPS := \ diff --git a/third_party/zip/crypt.c b/third_party/zip/crypt.c index bfb702905..e1d9e89d5 100644 --- a/third_party/zip/crypt.c +++ b/third_party/zip/crypt.c @@ -80,8 +80,7 @@ #include "libc/sysv/consts/clock.h" #include "libc/sysv/consts/sched.h" #include "libc/sysv/consts/timer.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" /* time() function supplies first part of crypt seed */ +#include "libc/time.h" /* time() function supplies first part of crypt seed */ /* "last resort" source for second part of crypt seed pattern */ # ifndef ZCR_SEED2 # define ZCR_SEED2 (unsigned)3141592654L /* use PI as default pattern */ diff --git a/third_party/zip/fileio.c b/third_party/zip/fileio.c index 0e4ee237e..cb988b030 100644 --- a/third_party/zip/fileio.c +++ b/third_party/zip/fileio.c @@ -30,8 +30,7 @@ #include "libc/sysv/consts/clock.h" #include "libc/sysv/consts/sched.h" #include "libc/sysv/consts/timer.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" +#include "libc/time.h" #ifdef NO_MKTIME time_t mktime OF((struct tm *)); diff --git a/third_party/zip/osdep.h b/third_party/zip/osdep.h index c002669db..a7299afac 100644 --- a/third_party/zip/osdep.h +++ b/third_party/zip/osdep.h @@ -41,7 +41,7 @@ #include "libc/calls/weirdtypes.h" #include "libc/sysv/consts/s.h" #include "libc/sysv/consts/utime.h" -#include "libc/time/time.h" +#include "libc/time.h" /* printf format size prefix for zoff_t values */ #ifdef LARGE_FILE_SUPPORT diff --git a/third_party/zip/tailor.h b/third_party/zip/tailor.h index 34dc03491..248fbb12b 100644 --- a/third_party/zip/tailor.h +++ b/third_party/zip/tailor.h @@ -258,7 +258,7 @@ #include "libc/sysv/consts/fileno.h" #include "libc/sysv/consts/o.h" #include "libc/sysv/consts/ok.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/musl/crypt.h" #include "third_party/musl/lockf.h" /* usually defines _POSIX_VERSION */ #endif /* !NO_UNISTD_H */ @@ -382,7 +382,7 @@ IZ_IMP char *mktemp(); #include "libc/stdio/stdio.h" #include "libc/str/str.h" #include "libc/str/unicode.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "libc/calls/calls.h" #include "libc/fmt/conv.h" #include "libc/str/str.h" diff --git a/third_party/zip/unix.c b/third_party/zip/unix.c index ef9593e99..a1b08b5dc 100644 --- a/third_party/zip/unix.c +++ b/third_party/zip/unix.c @@ -19,8 +19,7 @@ #include "libc/sysv/consts/clock.h" #include "libc/sysv/consts/sched.h" #include "libc/sysv/consts/timer.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" +#include "libc/time.h" #if defined(MINIX) || defined(__mpexl) # ifdef S_IWRITE @@ -60,8 +59,7 @@ /* Library functions not in (most) header files */ #ifdef _POSIX_VERSION -#include "libc/time/struct/utimbuf.h" -#include "libc/time/time.h" +#include "libc/utime.h" #else int utime OF((char *, time_t *)); #endif diff --git a/third_party/zip/zip.c b/third_party/zip/zip.c index baf29593e..8b064dd9e 100644 --- a/third_party/zip/zip.c +++ b/third_party/zip/zip.c @@ -20,8 +20,7 @@ #include "libc/sysv/consts/clock.h" #include "libc/sysv/consts/sched.h" #include "libc/sysv/consts/timer.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" /* for tzset() declaration */ +#include "libc/time.h" /* for tzset() declaration */ #if defined(WIN32) || defined(WINDLL) # define WIN32_LEAN_AND_MEAN #include "libc/nt/accounting.h" diff --git a/third_party/zstd/BUILD.mk b/third_party/zstd/BUILD.mk index 2bf4f894d..1216ed9a4 100644 --- a/third_party/zstd/BUILD.mk +++ b/third_party/zstd/BUILD.mk @@ -124,7 +124,6 @@ THIRD_PARTY_ZSTD_A_DIRECTDEPS = \ LIBC_STDIO \ LIBC_STR \ LIBC_THREAD \ - LIBC_TIME \ LIBC_SYSV THIRD_PARTY_ZSTD_A_DEPS := \ diff --git a/third_party/zstd/lib/compress/zstdmt_compress.c b/third_party/zstd/lib/compress/zstdmt_compress.c index 6d15654f4..35fd48ad3 100644 --- a/third_party/zstd/lib/compress/zstdmt_compress.c +++ b/third_party/zstd/lib/compress/zstdmt_compress.c @@ -55,7 +55,7 @@ #include "libc/sysv/consts/fileno.h" #include "libc/sysv/consts/o.h" #include "libc/sysv/consts/ok.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/musl/crypt.h" #include "third_party/musl/lockf.h" #include "libc/calls/calls.h" diff --git a/third_party/zstd/lib/dictBuilder/cover.c b/third_party/zstd/lib/dictBuilder/cover.c index da4f1e2ba..46a4201e8 100644 --- a/third_party/zstd/lib/dictBuilder/cover.c +++ b/third_party/zstd/lib/dictBuilder/cover.c @@ -52,8 +52,7 @@ #include "libc/sysv/consts/clock.h" #include "libc/sysv/consts/sched.h" #include "libc/sysv/consts/timer.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" /* clock */ +#include "libc/time.h" /* clock */ #ifndef ZDICT_STATIC_LINKING_ONLY # define ZDICT_STATIC_LINKING_ONLY diff --git a/third_party/zstd/lib/dictBuilder/cover.h b/third_party/zstd/lib/dictBuilder/cover.h index a5148b0eb..ec5e7d1e8 100644 --- a/third_party/zstd/lib/dictBuilder/cover.h +++ b/third_party/zstd/lib/dictBuilder/cover.h @@ -43,8 +43,7 @@ #include "libc/sysv/consts/clock.h" #include "libc/sysv/consts/sched.h" #include "libc/sysv/consts/timer.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" /* clock */ +#include "libc/time.h" /* clock */ #include "third_party/zstd/lib/common/mem.h" /* read */ #include "third_party/zstd/lib/common/pool.h" #include "third_party/zstd/lib/common/threading.h" diff --git a/third_party/zstd/lib/dictBuilder/fastcover.c b/third_party/zstd/lib/dictBuilder/fastcover.c index 877ce5392..39bd0949d 100644 --- a/third_party/zstd/lib/dictBuilder/fastcover.c +++ b/third_party/zstd/lib/dictBuilder/fastcover.c @@ -42,8 +42,7 @@ #include "libc/sysv/consts/clock.h" #include "libc/sysv/consts/sched.h" #include "libc/sysv/consts/timer.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" /* clock */ +#include "libc/time.h" /* clock */ #ifndef ZDICT_STATIC_LINKING_ONLY # define ZDICT_STATIC_LINKING_ONLY diff --git a/third_party/zstd/lib/dictBuilder/zdict.c b/third_party/zstd/lib/dictBuilder/zdict.c index eafcb3578..479937ae5 100644 --- a/third_party/zstd/lib/dictBuilder/zdict.c +++ b/third_party/zstd/lib/dictBuilder/zdict.c @@ -67,8 +67,7 @@ #include "libc/sysv/consts/clock.h" #include "libc/sysv/consts/sched.h" #include "libc/sysv/consts/timer.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" /* clock */ +#include "libc/time.h" /* clock */ #ifndef ZDICT_STATIC_LINKING_ONLY # define ZDICT_STATIC_LINKING_ONLY diff --git a/third_party/zstd/programs/fileio.c b/third_party/zstd/programs/fileio.c index 22c264b8f..248893ae9 100644 --- a/third_party/zstd/programs/fileio.c +++ b/third_party/zstd/programs/fileio.c @@ -56,8 +56,7 @@ #include "libc/sysv/consts/clock.h" #include "libc/sysv/consts/sched.h" #include "libc/sysv/consts/timer.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" /* clock_t, to measure process time */ +#include "libc/time.h" /* clock_t, to measure process time */ #include "libc/calls/calls.h" #include "libc/calls/struct/flock.h" #include "libc/calls/weirdtypes.h" @@ -94,7 +93,7 @@ #include "libc/calls/weirdtypes.h" #include "libc/sysv/consts/s.h" #include "libc/sysv/consts/utime.h" -#include "libc/time/time.h" +#include "libc/time.h" // MISSING #include #endif diff --git a/third_party/zstd/programs/fileio_asyncio.c b/third_party/zstd/programs/fileio_asyncio.c index 7630b2f17..646477be3 100644 --- a/third_party/zstd/programs/fileio_asyncio.c +++ b/third_party/zstd/programs/fileio_asyncio.c @@ -41,7 +41,7 @@ #include "libc/calls/weirdtypes.h" #include "libc/sysv/consts/s.h" #include "libc/sysv/consts/utime.h" -#include "libc/time/time.h" +#include "libc/time.h" // MISSING #include #endif diff --git a/third_party/zstd/programs/platform.h b/third_party/zstd/programs/platform.h index 3e3c9f07a..ea93039d7 100644 --- a/third_party/zstd/programs/platform.h +++ b/third_party/zstd/programs/platform.h @@ -92,7 +92,7 @@ extern "C" { #include "libc/sysv/consts/fileno.h" #include "libc/sysv/consts/o.h" #include "libc/sysv/consts/ok.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/musl/crypt.h" #include "third_party/musl/lockf.h" whenever target OS is not unix-like * otherwise it will block preprocessing stage. @@ -105,7 +105,7 @@ extern "C" { #include "libc/sysv/consts/fileno.h" #include "libc/sysv/consts/o.h" #include "libc/sysv/consts/ok.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/getopt/getopt.internal.h" #include "third_party/musl/crypt.h" #include "third_party/musl/lockf.h" @@ -128,7 +128,7 @@ extern "C" { #include "libc/sysv/consts/fileno.h" #include "libc/sysv/consts/o.h" #include "libc/sysv/consts/ok.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/getopt/getopt.internal.h" #include "third_party/musl/crypt.h" #include "third_party/musl/lockf.h" /* declares _POSIX_VERSION */ @@ -179,7 +179,7 @@ extern "C" { #include "libc/sysv/consts/fileno.h" #include "libc/sysv/consts/o.h" #include "libc/sysv/consts/ok.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/getopt/getopt.internal.h" #include "third_party/musl/crypt.h" #include "third_party/musl/lockf.h" /* isatty */ diff --git a/third_party/zstd/programs/timefn.c b/third_party/zstd/programs/timefn.c index 7b4b47871..ee8a5bed7 100644 --- a/third_party/zstd/programs/timefn.c +++ b/third_party/zstd/programs/timefn.c @@ -20,8 +20,7 @@ #include "libc/sysv/consts/clock.h" #include "libc/sysv/consts/sched.h" #include "libc/sysv/consts/timer.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" /* CLOCK_MONOTONIC, TIME_UTC */ +#include "libc/time.h" /* CLOCK_MONOTONIC, TIME_UTC */ /*-**************************************** * Time functions diff --git a/third_party/zstd/programs/util.c b/third_party/zstd/programs/util.c index 2bf785640..1e53f23c2 100644 --- a/third_party/zstd/programs/util.c +++ b/third_party/zstd/programs/util.c @@ -45,8 +45,7 @@ extern "C" { #include "libc/sysv/consts/clock.h" #include "libc/sysv/consts/sched.h" #include "libc/sysv/consts/timer.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" /* clock_t, clock, CLOCKS_PER_SEC, nanosleep */ +#include "libc/time.h" /* clock_t, clock, CLOCKS_PER_SEC, nanosleep */ #include "libc/errno.h" #include "libc/assert.h" @@ -63,13 +62,13 @@ extern "C" { #include "libc/sysv/consts/fileno.h" #include "libc/sysv/consts/o.h" #include "libc/sysv/consts/ok.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/getopt/getopt.internal.h" #include "third_party/musl/crypt.h" #include "third_party/musl/lockf.h" /* chown, stat */ # if PLATFORM_POSIX_VERSION < 200809L || !defined(st_mtime) -#include "libc/time/struct/utimbuf.h" -#include "libc/time/time.h" /* utime */ +#include "libc/utime.h" +#include "libc/time.h" /* utime */ # else #include "libc/calls/calls.h" #include "libc/calls/struct/flock.h" @@ -88,7 +87,7 @@ extern "C" { #include "libc/calls/weirdtypes.h" #include "libc/sysv/consts/s.h" #include "libc/sysv/consts/utime.h" -#include "libc/time/time.h" /* utimensat */ +#include "libc/time.h" /* utimensat */ # endif #endif diff --git a/third_party/zstd/programs/util.h b/third_party/zstd/programs/util.h index d7a7a0ee8..bd39d78f6 100644 --- a/third_party/zstd/programs/util.h +++ b/third_party/zstd/programs/util.h @@ -36,7 +36,7 @@ extern "C" { #include "libc/calls/weirdtypes.h" #include "libc/sysv/consts/s.h" #include "libc/sysv/consts/utime.h" -#include "libc/time/time.h" /* stat, chmod */ +#include "libc/time.h" /* stat, chmod */ #include "third_party/zstd/lib/common/mem.h" /* U64 */ @@ -91,7 +91,7 @@ extern "C" { #include "libc/sysv/consts/fileno.h" #include "libc/sysv/consts/o.h" #include "libc/sysv/consts/ok.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/musl/crypt.h" #include "third_party/musl/lockf.h" /* sleep */ # define UTIL_sleep(s) sleep(s) diff --git a/tool/build/BUILD.mk b/tool/build/BUILD.mk index 1810aed74..844a0ab28 100644 --- a/tool/build/BUILD.mk +++ b/tool/build/BUILD.mk @@ -45,7 +45,6 @@ TOOL_BUILD_DIRECTDEPS = \ LIBC_SYSV \ LIBC_SYSV_CALLS \ LIBC_THREAD \ - LIBC_TIME \ LIBC_TINYMATH \ LIBC_X \ NET_HTTP \ @@ -57,6 +56,7 @@ TOOL_BUILD_DIRECTDEPS = \ THIRD_PARTY_MUSL \ THIRD_PARTY_REGEX \ THIRD_PARTY_STB \ + THIRD_PARTY_TZ \ THIRD_PARTY_XED \ THIRD_PARTY_ZLIB \ THIRD_PARTY_ZLIB_GZ \ diff --git a/tool/build/compile.c b/tool/build/compile.c index 6707351d3..3fbecc55c 100644 --- a/tool/build/compile.c +++ b/tool/build/compile.c @@ -61,7 +61,7 @@ #include "libc/sysv/consts/sig.h" #include "libc/sysv/consts/termios.h" #include "libc/thread/thread.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "libc/x/x.h" #include "third_party/getopt/getopt.internal.h" diff --git a/tool/build/lib/BUILD.mk b/tool/build/lib/BUILD.mk index 0d40181f2..9fe70e019 100644 --- a/tool/build/lib/BUILD.mk +++ b/tool/build/lib/BUILD.mk @@ -46,7 +46,6 @@ TOOL_BUILD_LIB_A_DIRECTDEPS = \ LIBC_SYSV_CALLS \ LIBC_PROC \ LIBC_THREAD \ - LIBC_TIME \ LIBC_TINYMATH \ LIBC_X \ NET_HTTP \ @@ -54,7 +53,8 @@ TOOL_BUILD_LIB_A_DIRECTDEPS = \ THIRD_PARTY_COMPILER_RT \ THIRD_PARTY_MBEDTLS \ THIRD_PARTY_XED \ - THIRD_PARTY_ZLIB + THIRD_PARTY_ZLIB \ + THIRD_PARTY_TZ TOOL_BUILD_LIB_A_DEPS := \ $(call uniq,$(foreach x,$(TOOL_BUILD_LIB_A_DIRECTDEPS),$($(x)))) diff --git a/tool/build/lib/elfwriter_zip.c b/tool/build/lib/elfwriter_zip.c index 7264c8f83..dbe1562d1 100644 --- a/tool/build/lib/elfwriter_zip.c +++ b/tool/build/lib/elfwriter_zip.c @@ -22,7 +22,6 @@ #include "libc/limits.h" #include "libc/log/check.h" #include "libc/mem/gc.h" -#include "libc/mem/gc.h" #include "libc/mem/mem.h" #include "libc/nexgen32e/crc32.h" #include "libc/nt/enum/fileflagandattributes.h" @@ -31,7 +30,7 @@ #include "libc/stdio/rand.h" #include "libc/str/str.h" #include "libc/sysv/consts/s.h" -#include "libc/time/struct/tm.h" +#include "libc/time.h" #include "libc/x/x.h" #include "libc/x/xasprintf.h" #include "libc/zip.internal.h" diff --git a/tool/build/runitd.c b/tool/build/runitd.c index 7c8023499..14b1a7e7e 100644 --- a/tool/build/runitd.c +++ b/tool/build/runitd.c @@ -71,8 +71,7 @@ #include "libc/temp.h" #include "libc/thread/thread.h" #include "libc/thread/thread2.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "libc/x/x.h" #include "libc/x/xsigaction.h" #include "net/http/escape.h" diff --git a/tool/build/zipobj.c b/tool/build/zipobj.c index f07193539..37cb3ef89 100644 --- a/tool/build/zipobj.c +++ b/tool/build/zipobj.c @@ -37,7 +37,7 @@ #include "libc/sysv/consts/o.h" #include "libc/sysv/consts/prot.h" #include "libc/sysv/consts/s.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "libc/x/x.h" #include "libc/zip.internal.h" #include "third_party/getopt/getopt.internal.h" diff --git a/tool/curl/BUILD.mk b/tool/curl/BUILD.mk index d020ec1df..93b739325 100644 --- a/tool/curl/BUILD.mk +++ b/tool/curl/BUILD.mk @@ -24,12 +24,12 @@ TOOL_CURL_DIRECTDEPS = \ LIBC_STDIO \ LIBC_STR \ LIBC_SYSV \ - LIBC_TIME \ NET_HTTP \ NET_HTTPS \ THIRD_PARTY_GETOPT \ THIRD_PARTY_MBEDTLS \ - THIRD_PARTY_MUSL + THIRD_PARTY_MUSL \ + THIRD_PARTY_TZ TOOL_CURL_DEPS := \ $(call uniq,$(foreach x,$(TOOL_CURL_DIRECTDEPS),$($(x)))) diff --git a/tool/decode/BUILD.mk b/tool/decode/BUILD.mk index e5d2e9eb2..00318107c 100644 --- a/tool/decode/BUILD.mk +++ b/tool/decode/BUILD.mk @@ -33,11 +33,11 @@ TOOL_DECODE_DIRECTDEPS = \ LIBC_STR \ LIBC_SYSV \ LIBC_SYSV_CALLS \ - LIBC_TIME \ LIBC_TINYMATH \ LIBC_X \ THIRD_PARTY_GDTOA \ THIRD_PARTY_GETOPT \ + THIRD_PARTY_TZ \ THIRD_PARTY_XED \ TOOL_DECODE_LIB diff --git a/tool/decode/zip.c b/tool/decode/zip.c index f83f99ff3..e0f8101f4 100644 --- a/tool/decode/zip.c +++ b/tool/decode/zip.c @@ -16,6 +16,7 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ +#include "libc/assert.h" #include "libc/calls/calls.h" #include "libc/calls/struct/stat.h" #include "libc/fmt/libgen.h" @@ -36,8 +37,8 @@ #include "libc/sysv/consts/map.h" #include "libc/sysv/consts/o.h" #include "libc/sysv/consts/prot.h" +#include "libc/time.h" #include "libc/x/xasprintf.h" -#include "libc/x/xiso8601.h" #include "libc/zip.internal.h" #include "tool/decode/lib/asmcodegen.h" #include "tool/decode/lib/disassemblehex.h" @@ -63,6 +64,24 @@ static __wur char *FormatDosTime(uint16_t dostime) { (dostime >> 5) & 0b111111, (dostime << 1) & 0b111110); } +char *xiso8601(struct timespec ts) { + struct tm tm; + if (!localtime_r(&ts.tv_sec, &tm)) + return 0; + int len = 128; + char *res = malloc(len); + char *ptr = res; + char *end = res + len; + if (!res) + return 0; + ptr += strftime(ptr, end - ptr, "%Y-%m-%dT%H:%M:%S", &tm); + ptr += snprintf(ptr, end - ptr, "%09ld", ts.tv_nsec); + ptr += strftime(ptr, end - ptr, "%z", &tm); + unassert(ptr + 1 <= end); + unassert(realloc_in_place(res, ptr - end) == res); + return res; +} + void AdvancePosition(uint8_t *map, size_t *pos, size_t off) { if (off > *pos) { /* printf("\n/\t<%s>\n", "LIMBO"); */ @@ -108,13 +127,13 @@ void ShowNtfs(uint8_t *ntfs, size_t n) { "ntfs attribute tag value #1"); show(".short", gc(xasprintf("%hu", READ16LE(ntfs + 6))), "ntfs attribute tag size"); - show(".quad", gc(xasprintf("%lu", READ64LE(ntfs + 8))), - gc(xasprintf("%s (%s)", "ntfs last modified time", - gc(xiso8601(&mtime))))); + show( + ".quad", gc(xasprintf("%lu", READ64LE(ntfs + 8))), + gc(xasprintf("%s (%s)", "ntfs last modified time", gc(xiso8601(mtime))))); show(".quad", gc(xasprintf("%lu", READ64LE(ntfs + 16))), - gc(xasprintf("%s (%s)", "ntfs last access time", gc(xiso8601(&atime))))); + gc(xasprintf("%s (%s)", "ntfs last access time", gc(xiso8601(atime))))); show(".quad", gc(xasprintf("%lu", READ64LE(ntfs + 24))), - gc(xasprintf("%s (%s)", "ntfs creation time", gc(xiso8601(&ctime))))); + gc(xasprintf("%s (%s)", "ntfs creation time", gc(xiso8601(ctime))))); } void ShowExtendedTimestamp(uint8_t *p, size_t n, bool islocal) { @@ -126,7 +145,7 @@ void ShowExtendedTimestamp(uint8_t *p, size_t n, bool islocal) { if ((flag & 1) && n >= 4) { show(".long", gc(xasprintf("%u", READ32LE(p))), gc(xasprintf("%s (%s)", "last modified", - gc(xiso8601(&(struct timespec){READ32LE(p)}))))); + gc(xiso8601((struct timespec){READ32LE(p)}))))); p += 4; n -= 4; } @@ -135,7 +154,7 @@ void ShowExtendedTimestamp(uint8_t *p, size_t n, bool islocal) { if ((flag & 1) && n >= 4) { show(".long", gc(xasprintf("%u", READ32LE(p))), gc(xasprintf("%s (%s)", "access time", - gc(xiso8601(&(struct timespec){READ32LE(p)}))))); + gc(xiso8601((struct timespec){READ32LE(p)}))))); p += 4; n -= 4; } @@ -143,7 +162,7 @@ void ShowExtendedTimestamp(uint8_t *p, size_t n, bool islocal) { if ((flag & 1) && n >= 4) { show(".long", gc(xasprintf("%u", READ32LE(p))), gc(xasprintf("%s (%s)", "creation time", - gc(xiso8601(&(struct timespec){READ32LE(p)}))))); + gc(xiso8601((struct timespec){READ32LE(p)}))))); p += 4; n -= 4; } diff --git a/tool/emacs/cosmo-stuff.el b/tool/emacs/cosmo-stuff.el index bfca961fe..d8dc17376 100644 --- a/tool/emacs/cosmo-stuff.el +++ b/tool/emacs/cosmo-stuff.el @@ -719,7 +719,7 @@ (default-directory root) (compile-command (cosmo--compile-command this root nil mode "" "" ".runs"))) (compile compile-command) - (gdb (format "gdb -q -nh -i=mi %s -ex run" exec)))))) + (gdb (format "gdb -q -i=mi %s -ex run" exec)))))) (progn (define-key asm-mode-map (kbd "C-c C-d") 'cosmo-debug) diff --git a/tool/net/BUILD.mk b/tool/net/BUILD.mk index 1c7219492..52d55f7ec 100644 --- a/tool/net/BUILD.mk +++ b/tool/net/BUILD.mk @@ -47,7 +47,6 @@ TOOL_NET_DIRECTDEPS = \ LIBC_STR \ LIBC_SYSV \ LIBC_SYSV_CALLS \ - LIBC_TIME \ LIBC_THREAD \ LIBC_TINYMATH \ LIBC_X \ @@ -66,6 +65,7 @@ TOOL_NET_DIRECTDEPS = \ THIRD_PARTY_MBEDTLS \ THIRD_PARTY_REGEX \ THIRD_PARTY_SQLITE3 \ + THIRD_PARTY_TZ \ THIRD_PARTY_ZLIB \ TOOL_ARGS \ TOOL_BUILD_LIB \ diff --git a/tool/net/lfuncs.c b/tool/net/lfuncs.c index 7629d9e9b..e8d566d94 100644 --- a/tool/net/lfuncs.c +++ b/tool/net/lfuncs.c @@ -52,7 +52,7 @@ #include "libc/sysv/consts/rusage.h" #include "libc/sysv/consts/sock.h" #include "libc/thread/thread.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "libc/x/x.h" #include "net/http/escape.h" #include "net/http/http.h" diff --git a/tool/plinko/lib/plinko.c b/tool/plinko/lib/plinko.c index 9766469b8..80417f1f6 100644 --- a/tool/plinko/lib/plinko.c +++ b/tool/plinko/lib/plinko.c @@ -38,7 +38,6 @@ #include "libc/sysv/consts/o.h" #include "libc/sysv/consts/prot.h" #include "libc/sysv/consts/sig.h" -#include "libc/time/clockstonanos.internal.h" #include "third_party/getopt/getopt.internal.h" #include "tool/build/lib/case.h" #include "tool/plinko/lib/char.h" @@ -59,6 +58,13 @@ STATIC_STACK_SIZE(0x100000); #define DISPATCH(ea, tm, r, p1, p2) \ GetDispatchFn(LO(ea))(ea, tm, r, p1, p2, GetShadow(LO(ea))) +static inline uint64_t ClocksToNanos(uint64_t x, uint64_t y) { + // approximation of round(x*.323018) which is usually + // the ratio between inva rdtsc ticks and nanoseconds + uint128_t difference = x - y; + return (difference * 338709) >> 20; +} + static void Unwind(int S) { int s; dword t; diff --git a/tool/plinko/lib/printf.c b/tool/plinko/lib/printf.c index ddc4c50be..09b7da750 100644 --- a/tool/plinko/lib/printf.c +++ b/tool/plinko/lib/printf.c @@ -21,11 +21,17 @@ #include "libc/nexgen32e/rdtsc.h" #include "libc/runtime/runtime.h" #include "libc/str/str.h" -#include "libc/time/clockstonanos.internal.h" #include "tool/plinko/lib/char.h" #include "tool/plinko/lib/plinko.h" #include "tool/plinko/lib/print.h" +static inline uint64_t ClocksToNanos(uint64_t x, uint64_t y) { + // approximation of round(x*.323018) which is usually + // the ratio between inva rdtsc ticks and nanoseconds + uint128_t difference = x - y; + return (difference * 338709) >> 20; +} + static inline long GetVarInt(va_list va, signed char t) { if (t <= 0) return va_arg(va, int); diff --git a/tool/viz/BUILD.mk b/tool/viz/BUILD.mk index 73473d3f3..a087fbf8e 100644 --- a/tool/viz/BUILD.mk +++ b/tool/viz/BUILD.mk @@ -38,7 +38,6 @@ TOOL_VIZ_DIRECTDEPS = \ LIBC_SYSV \ LIBC_SYSV_CALLS \ LIBC_THREAD \ - LIBC_TIME \ LIBC_TINYMATH \ LIBC_VGA \ LIBC_X \ @@ -50,6 +49,7 @@ TOOL_VIZ_DIRECTDEPS = \ THIRD_PARTY_MAXMIND \ THIRD_PARTY_MUSL \ THIRD_PARTY_STB \ + THIRD_PARTY_TZ \ THIRD_PARTY_XED \ THIRD_PARTY_ZLIB \ TOOL_DECODE_LIB \ diff --git a/tool/viz/cpuid.c b/tool/viz/cpuid.c index 657296118..0384d4f30 100644 --- a/tool/viz/cpuid.c +++ b/tool/viz/cpuid.c @@ -26,7 +26,7 @@ #include "libc/nexgen32e/x86info.h" #include "libc/runtime/runtime.h" #include "libc/stdio/stdio.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "libc/x/xasprintf.h" #include "tool/decode/lib/idname.h" #include "tool/decode/lib/x86idnames.h" diff --git a/tool/viz/lib/BUILD.mk b/tool/viz/lib/BUILD.mk index a26d88ed3..92512372c 100644 --- a/tool/viz/lib/BUILD.mk +++ b/tool/viz/lib/BUILD.mk @@ -38,12 +38,12 @@ TOOL_VIZ_LIB_A_DIRECTDEPS = \ LIBC_STR \ LIBC_SYSV \ LIBC_TESTLIB \ - LIBC_TIME \ LIBC_TINYMATH \ LIBC_X \ THIRD_PARTY_COMPILER_RT \ THIRD_PARTY_DLMALLOC \ - THIRD_PARTY_GDTOA + THIRD_PARTY_GDTOA \ + THIRD_PARTY_TZ TOOL_VIZ_LIB_A_DEPS := \ $(call uniq,$(foreach x,$(TOOL_VIZ_LIB_A_DIRECTDEPS),$($(x)))) diff --git a/tool/viz/lib/sharpen.c b/tool/viz/lib/sharpen.c index 55bd5cdd0..eec139e4d 100644 --- a/tool/viz/lib/sharpen.c +++ b/tool/viz/lib/sharpen.c @@ -21,7 +21,7 @@ #include "libc/mem/mem.h" #include "libc/str/str.h" #include "libc/sysv/errfuns.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "libc/x/x.h" #include "tool/viz/lib/convolution.h" #include "tool/viz/lib/graphic.h" diff --git a/tool/viz/lib/unsharp.c b/tool/viz/lib/unsharp.c index 1c1eb9cb4..e4a29ca01 100644 --- a/tool/viz/lib/unsharp.c +++ b/tool/viz/lib/unsharp.c @@ -20,7 +20,7 @@ #include "libc/mem/mem.h" #include "libc/str/str.h" #include "libc/sysv/errfuns.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "libc/x/x.h" #include "tool/viz/lib/convolution.h" #include "tool/viz/lib/graphic.h" diff --git a/tool/viz/lib/ycbcr2rgb3.c b/tool/viz/lib/ycbcr2rgb3.c index 4e8e84b63..96d7d52ff 100644 --- a/tool/viz/lib/ycbcr2rgb3.c +++ b/tool/viz/lib/ycbcr2rgb3.c @@ -44,7 +44,7 @@ #include "libc/str/str.h" #include "libc/sysv/consts/sig.h" #include "libc/sysv/errfuns.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "libc/x/x.h" #include "tool/viz/lib/graphic.h" #include "tool/viz/lib/knobs.h" diff --git a/tool/viz/life.c b/tool/viz/life.c index a57ebbe6c..896e19034 100644 --- a/tool/viz/life.c +++ b/tool/viz/life.c @@ -67,7 +67,7 @@ #include "libc/sysv/consts/poll.h" #include "libc/sysv/consts/sig.h" #include "libc/sysv/consts/termios.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/getopt/getopt.internal.h" /** diff --git a/tool/viz/memzoom.c b/tool/viz/memzoom.c index 8c4eebf7c..fc19e835e 100644 --- a/tool/viz/memzoom.c +++ b/tool/viz/memzoom.c @@ -52,7 +52,7 @@ #include "libc/sysv/consts/prot.h" #include "libc/sysv/consts/sig.h" #include "libc/sysv/consts/termios.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "third_party/getopt/getopt.internal.h" #define USAGE \ diff --git a/tool/viz/printpeb.c b/tool/viz/printpeb.c index a92ab375d..e311b4932 100644 --- a/tool/viz/printpeb.c +++ b/tool/viz/printpeb.c @@ -38,7 +38,7 @@ #include "libc/stdio/stdio.h" #include "libc/sysv/consts/madv.h" #include "libc/sysv/consts/o.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "tool/decode/lib/flagger.h" #include "tool/decode/lib/idname.h" #if defined(__x86_64__) && SupportsWindows() diff --git a/tool/viz/printvideo.c b/tool/viz/printvideo.c index 7d5c04127..6216174c8 100644 --- a/tool/viz/printvideo.c +++ b/tool/viz/printvideo.c @@ -89,7 +89,7 @@ #include "libc/sysv/consts/w.h" #include "libc/sysv/errfuns.h" #include "libc/thread/thread.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "libc/x/xsigaction.h" #include "third_party/getopt/getopt.internal.h" #include "third_party/stb/stb_image_resize.h" diff --git a/tool/viz/tailf.c b/tool/viz/tailf.c index 054feed29..f50a0f153 100644 --- a/tool/viz/tailf.c +++ b/tool/viz/tailf.c @@ -25,7 +25,7 @@ #include "libc/str/str.h" #include "libc/sysv/consts/o.h" #include "libc/sysv/consts/sig.h" -#include "libc/time/time.h" +#include "libc/time.h" #include "libc/x/xsigaction.h" /** diff --git a/usr/share/zoneinfo/Africa/Abidjan b/usr/share/zoneinfo/Africa/Abidjan new file mode 100644 index 0000000000000000000000000000000000000000..8906e88c819d9ad3b794eb6356a240a74a95ffae GIT binary patch literal 130 zcmWHE%1kq2AP5+NDnJ+nLI`UCDP;m;j{iU~>DeR?#{d8SSb#JG0gI1s2!lHia{&nh FE&z`x5Apy2 literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Africa/Algiers b/usr/share/zoneinfo/Africa/Algiers new file mode 100644 index 0000000000000000000000000000000000000000..56a4dd2a19fac5cc1bb1951dedf3ae93e0b9e321 GIT binary patch literal 470 zcmWHE%1kq2AP5+NDnJ+nLI`V70xDwzVyXW?kbQEt3W%PV5a17@XS-K?0MplX3PALn zJrlw7+yfq9@p+y9!2J0Ow7~oY2}{BB!Ui5Ny+}_8OfRnT0nXvkI2VBE^OH;jK=g$!1_ls)u}BQezvQO^)_2959ZWwxcNr}IIcCELkbjvf z4uWZB=M!L>_xyE`FazIO7cif{A_~kG$cPjGF@(yT3qZ7Rno|Ra7KyI`i;MclGcYnU zp+Hs^AY^6*iGdhQ%&b8B?tpYL88WZ{?GRw(0Pz@j85m>~7zIHh3}QaMAq)XP9PSzn TB0?CPK@4Xgg9}LL8gc;uxvi~T literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Africa/Bissau b/usr/share/zoneinfo/Africa/Bissau new file mode 100644 index 0000000000000000000000000000000000000000..0da1d1e211bc6b9b081959c1d510583cb9eb7102 GIT binary patch literal 149 zcmWHE%1kq2AP5+NDnJ+nLI`VN0xDw$VxIp%FzMNx2_Su(>4^f2O#lCXOkrREk{=jY YK%xvBKE5Fgx(0>}?m(IgNEmPd02-+k!vFvP literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Africa/Cairo b/usr/share/zoneinfo/Africa/Cairo new file mode 100644 index 0000000000000000000000000000000000000000..1e6d48d1ca4e5416913c41e8814dc045c57d5b58 GIT binary patch literal 1309 zcmc)I>r0bS00!_gZ|T%(YMJJ2mCH46+nSoWw9<*%M#eTu88u6kiej;Z)WRWASVq`B z7zHWasI-e&mZ3rh<)v~NCMeVvk;_b%PQ~T2_dNXpe(a3x+3!5h3qw@r9VnEL1rLi^ z&^JBmg&Gk50gKhK<#ZOVF@ou40|>*2QzR`l;) zIpE$4g|PWf3H<()4(>a9FNZ#7OW2R+ZH^dt#J2?=>DOWZW7KJAw3C)hLU z8tj$E!G4inzmZ;eN6688kNKcydmcy6?vV zE_h3Isf93StJYwqx$UUdLNiUKfzx-U!14eW_8DRxoMAZ#XL8)&%%>dev+Q5t?DH+? zw-2&(ggJ`*HuQ?h-RKoJoaj}>8(~#LC3@9htB#oybwmaFf^56ajrD(D%zu-H{wAS_ sIwNAO?v83vUeh=NXaYu)452`D0tw+@&^k4 zy7H8O{Cfd-Jk0c-!sD0z$yI)Cz|I3j$X??EB?JFZDcz%OJ zl9UHF26QqbkBi{UT5yv2OXl!T$dCN1nTF4i+SPlRjju7i?~8(bbn(gHkF^JxmeZmjAN^b%b4ZjF{zQDl)N7fKSBY{hq_j=}r}!M;&0!b7 zn+NBCQ(dv()Mr`Xw5n!sntL{Kn@Nv;n`8#3$Mk^H^Fxt4f(__*#M!`~js_t!UV0OK zW`_lw`H;U~wrwH$?5+g#J2P)E?esUUd>3pq&^IUW9`PK&$M$diDUFi3@?dS_l zx50(=^t7xiMsLZlN55ZO%1or^fl}6x%%J8?r zmFe_6rn-y%SQI^v50_$IHI1GQrw{D7MbBz8-}mbJ%jhL7-*3r6&y(VJ=uhhDS>sEQ z1o@l_D@5wde)hOF|U*8*$}fI+>l4lGr{55KNGhBedAvP$fgi_ zHh08;n;+8i?BNmYpX~}n-;&1fQH!0P=T?lPKWCt4TVM_L+oI^%?$LldH1zCjYQ=u% zEid{Xty`Hb^z71J19z3t^WtLuU%06M8vP~T9Z8VS$k!VgG7=7W!+i{>eG`kThKC?6`KP80#k5!0HzPUF95lVBfF&m zOdrer0HV2H@PH@=o-lrOzTd$1*Y{{PJ?Ovl09JBAZ0C>HjKR~z{rFJGP7WVz<^=_ zIRglQG@k$?2Z&_gWnhp|U=;N64Pgj(1>xWj24^6{8N}cMvUCkWOdVfiJySgc9bZEO J5Up>_1pwDUjA#G= literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Africa/El_Aaiun b/usr/share/zoneinfo/Africa/El_Aaiun new file mode 100644 index 0000000000000000000000000000000000000000..909c5f9682927c14e3e64e21da75559ad2e598f9 GIT binary patch literal 1830 zcmd6o`%hDM7{6W>4=RD6J;C|fOoId?L-?z!9 z=_we}^RizTFC2}sp&KZb1 zqUPMH>HTWX^Q0b8Q@5f4oVe*1aAMCg@Rrw>sK;WR)q zz4_70=nvZXeI4weXQ5#Z`oao&7O%d5{bJ)N`p^Dc20j#JMSkucKyL}6=V8|Y^oKnT z^d;s;;F4x~S~r)Xw-z;{KPp8sQ|S5S1n-y9FnZehHeug3osGRRdn>qXfS%>KJJ6S( zre|gBKRB<p2vTB3H#OaH=wt7buq{3dE(e|@QEv>NXKrsB$RPfOoMA8 z-U8QT(X&?b7=3LFJx`64ZdzopX=dgAacsQP(BaiQ4e^mDj{e!Mz<~TjQwkKfkl>|vMbH;yt1P1)C9)ADt w%BS@ErzS;!^1nu>2^Q*T)hCVeJXa@zladW0a&5GTz_nJ)ep`7J8yP+OU-J-s*8l(j literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Africa/Johannesburg b/usr/share/zoneinfo/Africa/Johannesburg new file mode 100644 index 0000000000000000000000000000000000000000..bada0638f8a2224a603f13afff16c0d8e986a591 GIT binary patch literal 190 zcmWHE%1kq2AP5+NDnJ+nLI`VN11e(yV$T0SkX!BO0HT}R&S!w=GwXU9K=j#p`2`^Q zTwflTf4(lTfRULA2pJfp9DuqRL?u9`Xc;g9Nf`wO79ZabhG56w5C$#~scXaq0I;$w A`Tzg` literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Africa/Juba b/usr/share/zoneinfo/Africa/Juba new file mode 100644 index 0000000000000000000000000000000000000000..0aba9ffd89dcbb47f1bf003dad75227f08d99679 GIT binary patch literal 458 zcmWHE%1kq2AP5+NDnJ+nLI`V71}b9#V!{7Fux;_JJ0N`w^TZ#3D8?$201(Yo`||;a zW{yt30HRqE>K=e-R@*mVKAS@Vn9nY+09MbT-~{G#G6aL=xfoQye6EM>V0rEbY+ydm z5gss~cmE48pKqx>SUvwr)&vG15NIm~%L{fq2lIu}mx1MlGfsl}B3{~HzNp7)FkehN z9;{wmqZiDV;F$!Lm*mI?^CjON1ItT&?0&!i1kxA0!F-vExnRER#yYTiiw0K(kbHu; yQ~(nr0m#h6z#zK>q+H8@5g3#*3JjbeHUqDZZwQ04V=#yaVQ>XvE+9kKhzkJma7J1H literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Africa/Khartoum b/usr/share/zoneinfo/Africa/Khartoum new file mode 100644 index 0000000000000000000000000000000000000000..3f8e44b8a6e171a0fde96736ed9d4fcde1bcd4a8 GIT binary patch literal 458 zcmWHE%1kq2AP5+NDnJ+nLI`V71}b9#V!{7Fux;@zkTwQ}dEyU16l0Z10ElL){rLby zGe@Ui0MRT7bq_!^tL+;wpUoiw%x9NZ0ITOva02r=8G^y`Tns8;KG(x`usrtzHZY&( z2oIRgyZ;54&$rYbte$@*YXSoh2(%T0c0XVM0_h9hV7|=7TrgjDV;xw%MT4sXNIvq% ylK>`00+5-BfkCbTq+H8@5g3#*3JjbeHUqDZZwQ04V=#yaVQ>XvE+9kKhzkHkp+^4z literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Africa/Lagos b/usr/share/zoneinfo/Africa/Lagos new file mode 100644 index 0000000000000000000000000000000000000000..3d7a71ba0e96de946446fc96add2f38a806a44a5 GIT binary patch literal 180 zcmWHE%1kq2AP5+NDnJ+nLI`VN0V)Gwq5nY8wz}XVi0%nUU;xq6Ryl+D3j^O*FfuSP uGcYjggUkg2pdNM(1`Y-WJ^=vXjYC?MAb(k!FEz~bW@!r<%}!oUS2 Hbd9(GSdtBU literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Africa/Monrovia b/usr/share/zoneinfo/Africa/Monrovia new file mode 100644 index 0000000000000000000000000000000000000000..837780922f23fc58ff7f73930954840e9c63c908 GIT binary patch literal 164 zcmWHE%1kq2AP5+NDnJ+nLI`VN1}b9#VxIp%5LLBo4v1b5pEC!fpZQc&9wQU;|Nmc~ fFff2g79cqZtbu`n!^by-!54_#ftU+O7;pgqyn`TC literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Africa/Nairobi b/usr/share/zoneinfo/Africa/Nairobi new file mode 100644 index 0000000000000000000000000000000000000000..5f4ebcb7f9789c4ecda13ac66c2e768851113004 GIT binary patch literal 191 zcmWHE%1kq2AP5+NDnJ+nLI`VN1uA0!Vv+wq(Eb179}vCq-K_`^z2*3W3n2R7+qGc+ znVhOCj7*HoObiT4Eg%b&H9(rR3>df=7}VA<@cHK%IO73>-ebAq?(79PSvxzy)L&Z~*|L=^B#& literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Africa/Tripoli b/usr/share/zoneinfo/Africa/Tripoli new file mode 100644 index 0000000000000000000000000000000000000000..e0c89971aabea2c87842a9276b043d0fd946e34e GIT binary patch literal 431 zcmWHE%1kq2AP5+NDnJ+nLI`V704ievV!{7Fu<+AC6%c)Q_eKE_eNTC90*HQCaS6mo0*F>~*be3!`F#ZQja|&Z>P<|u9)RQn=FS9B41pmx8$fhW=9UH~MlfWC y(hweq1d4zV0|QSCNUe+lBQU)91Q<9$YzAH*-w+08*I*D4!r%(TTtGtChzkG|lxEie literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Africa/Tunis b/usr/share/zoneinfo/Africa/Tunis new file mode 100644 index 0000000000000000000000000000000000000000..ca324cb4cd26cc29529faaee4c0465ae0cecc8f6 GIT binary patch literal 449 zcmWHE%1kq2AP5+NDnJ+nLI`V70xDwxV!{7F5a}lT1w>Cw2=E8d$E-RYfav29^Af=H zZ6z@O)T0nEeR^%?2ax!g=iUM!`s_;a31Iq=7z3C-vjHrAZjmXNe}0k)n17-3FFmeE0F2KO+;~T;d0L0F&!5|`pfeT3J8gc;ufb)m! literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Africa/Windhoek b/usr/share/zoneinfo/Africa/Windhoek new file mode 100644 index 0000000000000000000000000000000000000000..0edc52b9b783827a8ac1090fe350bfe13977f745 GIT binary patch literal 638 zcmWHE%1kq2AP5+NDnJ+nLI`Uy1uA0$V)6e#kX!9t0iv7S&S!w=GwXU9K=j#p`2`^J z)Yz6k0MWWV#}h!bUZ#uyh}N%t38EMbJpO_ChUu&gAij~t12Es%?KzllBKT(lNZeHI zB$#jd@gA6O&bAuNH@|oQ%(r;f3+7vHTm(2x8 z?W39nKn#cc05IRtDizFk@`nVRvy?lS@1idPmUsE33Ff=;eFO8|ZgGS8?mvVYKms0z z)hB>x&+A_rK(yClPB7nl`!z7%r|C7A?>l`5nD3W#7R>iAp9SUzIIRcs0~59bbu%yo zDNO|PgB@mq`61lv1VD^Xg=#QA^z{TVKb#>J%nv_Z1m;IPum|%aSBD5NGBGo;vXBTF z7z8*#CWuNfurM&lC@^p_FlZSt0!cmrMt-n}u#ayDgSLU8u>nJ{V{iyVxMK)|GZ1qD I30)&D0E>-r5C8xG literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/US/Aleutian b/usr/share/zoneinfo/America/Adak similarity index 100% rename from usr/share/zoneinfo/US/Aleutian rename to usr/share/zoneinfo/America/Adak diff --git a/usr/share/zoneinfo/US/Alaska b/usr/share/zoneinfo/America/Anchorage similarity index 100% rename from usr/share/zoneinfo/US/Alaska rename to usr/share/zoneinfo/America/Anchorage diff --git a/usr/share/zoneinfo/America/Araguaina b/usr/share/zoneinfo/America/Araguaina new file mode 100644 index 0000000000000000000000000000000000000000..f66c9f79d6cd4790c54d01286660f8ea0807f1c6 GIT binary patch literal 592 zcmWHE%1kq2AP5+NDnJ+nLI`Uy1}b9)VxIp%Fl|+d0f^qg@A&{s|8-aZqIZ5Y0gLat zSE2yo-?CT-=HGh#3rydUe7FH5erIPSSpM#BQLy;E+4sQw`*&x7`42*j!Tc}N|AWku>3EsOJMcCR{Q|V|9-;;mjBaTy8!5R2HBH+ z1|V9l;`#y*Ex*8Y1Bg~IKED7&D>i0=<(0TkfceT10$_RNM+FKXc~$dIV7}^=<6yo) zLnT`31TlMRJ<*iTr2g}>!^MU!cM<#;h?fgD~`2o$TV1A&2 f0VB)*|5q0kJUymkp4#Gv)#Sd3?{w literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Argentina/Buenos_Aires b/usr/share/zoneinfo/America/Argentina/Buenos_Aires new file mode 100644 index 0000000000000000000000000000000000000000..d6f999b8605c9f73653a16e2ddbd5a49b96c0f56 GIT binary patch literal 708 zcma)&O(?@*9LJwA%vxDdBx$mxO=`_%!ZhvRCA+X9CrU~waxf+2;-pquN?BvOI4E=Q z(l$1R;h@z>%3(!rgy!GO%j0>zE^a(ezrN4s|M@- z*%VN=MweFGd3xp@TAo`I9cG@}#iu@=JEacr&cz74zi=|lzxy}6@PX6@d~o3ke)swg zes5d~9|{z~hkG30eU}S-P#-}*G8IGrutb1A>J`HueQDsMO-A@=VjX-k73ro-j?Ke+k8AF%Hd_6<<3p8Qtkw+j4xo-(-^p-EKkdO z6|ruxnmmKmzB;fb5eHW;b}3km7=>fpuMKIC&Gy`%yqSh?NqfMp!9Im3BlDj-OZ;nR z;!NqOo)AhSF(Rfk8YU7-FJmGZrMC%@oS%uT-D)EiHdR_Zn`$;XB5h!&#%k#|fdER> literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Argentina/Catamarca b/usr/share/zoneinfo/America/Argentina/Catamarca new file mode 100644 index 0000000000000000000000000000000000000000..1dcc8d85434c9d016f170cb2f16811ebef327b77 GIT binary patch literal 708 zcma)&-7AAp9LLYzm|0m-B#CTkL#^3Nm>%t7CA(oou3ShdMJ`MUxpAddT1stsyH%SD zFWJ}_h6}AWNx4{&J3{j`ug5uGe*ow7d%oxM`~1$ub6mZH119q4lCTM0e7XL}P#r@(W&^eo78r`!YHNsYko7EeZbe|K{YK9t>n4=-H7?_J-) z?~kkCBcT%bXs-u+;P-JF!i*jd#X&8+HKnTV=|om%Tv EKU&60&j0`b literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Argentina/Cordoba b/usr/share/zoneinfo/America/Argentina/Cordoba new file mode 100644 index 0000000000000000000000000000000000000000..35a52e53d123b5ef5d293b3af19046630f02bb66 GIT binary patch literal 708 zcma)&-7AAp9LLXIFiTlcB#CUTO=`_%^47EqFWC(%+7%_G6uB@ZhCZpmC= zZDV5?F7(tUDHkhpN76ja>v7I^f54p6@A>{d=kq%k&v7`128|@+lCTM0d^s{-X<}p9 ztO_YxW6RrKo*N5p1JC`*E-TN2l1rTX%G_XId=%baG!^FFzqbh=NbSN07jNMY?;hcg zCY11@KrwvS=>{LKtbk7%BAAa%3z$DG72(hN0YPeo(!A4wPdXRH?f zD`JNK4tB%;Y^C4pci9Z4^Cl~MTavTc;pM4NkF4>m^z4DvDi2s=c>`-+$HCf)d;_1; z3cX+*p;pd1Z#`I_h{0Da^_25-i+GOvbs;^n)s>sh`x*GQ&kb;Uu)ka)mHl&P$h(HLwa!R9NqM-CfkmOPNkdUZ&Px3nL4q{_fZ7{K_VPz!BM%FdgDE|PnyG!l> literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Argentina/Jujuy b/usr/share/zoneinfo/America/Argentina/Jujuy new file mode 100644 index 0000000000000000000000000000000000000000..b275f27c0287415674d2ccc850c3d612f4a45b0f GIT binary patch literal 690 zcma)&-7AAp9LLYtn6--)MUoU6lUjQ*d28B*lHIUUu3ShdMJ`Z6Zd^#Mw3H%mw_+~F z@;aLtF4k%!aj}p)OPZ&7Jg# zqbm60{Q`JjmlJ%lv;_9o2ha~pM9@DilHh~ga`@n{4nEXufe*#Dz~@sg_)GgL`j_!( z_^_SBhutsWXr&qc%GLu;G%Dc}%M$oq(GQjk8Y}&e^t_CIGS>#53`OBT5+m@R(Hi)# zfEoV#pacGABlTXti)JvNHCe^mvh4L%H>I*{V1=^O|Js0OV+q=6g?9ZbT4H`Pmzh9{rwRkaU zT%7({xs-Bg%4McpA8wH-H!@FU%FS#Sc=NIkek*;%NBb?$GQ2ms2ERRh4Zm}955GI4 zhu`yN!28-=;QhHd@Ij3qeg9|>{lhE;{-{F(fAnL54>Z`|1L0Nh$+#Q-%(006+0z94 zg@eOi$dBNV(F%WQ?*vEcbnuaR1^lM%0V@`RMBk%4%%dMowZlgPA^7*mApA$D68_U~ zh5y=ah5ufO{jZ-{E0|AKNaEkJgyklgQkUPmK$++Efb$J*aDnX=T<|;qF3L?YQ?KaU z11>Hsl!%S&1$(1hjlC%x0+-CR<&d{2$1-Kro(U;=V}0o=$w&Lf!9?sEZ^v>}aq53w zttNKk5Na(Y=lf2^IQIvchVy`r={Ua%s**Xs3#$zD%#xcOPG%QVX08xZF2=(2wc@G1 GT>lG4153pK literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Argentina/Mendoza b/usr/share/zoneinfo/America/Argentina/Mendoza new file mode 100644 index 0000000000000000000000000000000000000000..691c56978a033586e3302db2ef600e4b0ffd6366 GIT binary patch literal 708 zcma))-7AAp9LLYtnB`(cc}Y?TlhS6Um>%tdWH&5oS1v?KkqeZ!+_+LJEv2^RlKEL0^b9x-k-fkoLbE#MdFTNaqk62k- z3ad=Y)}Uuy&2wqiRmpR6v{m4_m3uDo+|GA_x331^ce2JMe!sJ^48I#&gWsFGf#1J< zgg+S3!TWc!;U%XFeCYLpk7{M~%M&5=ALl9XC!K2elY{|2&|rZNL{`CPQ*QX6eG&b^ zmudJ*JB7a#pTXfWGyIjU3mmm-;iEnU{I2N(D@MJ*zejoUp+A;kgO3Hm@E_4(_;|P) z{!=!?f9dUMS3^5*zyK0ejNgr+3 zjbZGtRwF5g6}b_bxB2^cp6@PhJWs#A&*%MopTqlD`-cW~*r9e5Bn7A4zV2&t{$QQOhd&(Z@OX zn1#Z}ybs`n+5mrHwt-V7Ief}3f?s9BU{R+O`2UFaZuHYdX83d@0soe=!@nmQ;XlF# z_|HHO{MUNsy}p+XU^=fC*xQm^Pp6lsyn1AXXO+_ju2wq1HO3ck&C@uzwz5#md$sXC zu$nxB)!t^XCYb=&E%jEg8ZnBexZf1iAO(M>FI?t_xbLv%;d{r;Oob#X`=47T{k5}Y zS&S$RstBPp94AsrBOxNE^fE3fp!7B=QSvh>=(1RenN7V`&!&Nmjwo8$sjWfr1Hu4G Av;Y7A literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Argentina/Salta b/usr/share/zoneinfo/America/Argentina/Salta new file mode 100644 index 0000000000000000000000000000000000000000..58863e0436d16ef8ff8ba3d96b452086e4ae8ff5 GIT binary patch literal 690 zcma)&-7AAp9LLXN8?#nc6iFh}+N9QOCT~rkyA_WM zta%$V54%{aO;Rpa~iotD7_YW`pdmwe_{kaP&^gn-vfJ_@Q3ML_@l*J_~W}r z_>&0@{OMr{e9+?spRKHb&znN%ho)obUzEx4;XWmNIAemB+U)RBatC}h>w}ND*3pl= z%)v)p6h10GgX2aUe8SlePPM4vQ>!xgT{Q%jEjkDPANgq&{dA!dJ}t%JKT_lHpYeM5 zuaFJ?`=}fKXDj<&nPnT8&RZSqZAso{hsaZ{A70~G<=X@6bv|&l{S93GItDgW7MOX@ z5bFgS33YHbij81XG7ev})KkH~+vQ8#Z#Xp}+sE^>c|TJjG>8R tl!jtNNvRYhYD#Znf|k;Uq@d$xqV06KiIYvO*~+GljfH5M*{QWo^9#6+N67#H literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Argentina/San_Juan b/usr/share/zoneinfo/America/Argentina/San_Juan new file mode 100644 index 0000000000000000000000000000000000000000..7eba33c1c5b13cbd9b7566f450d524a45cf8b65e GIT binary patch literal 717 zcma)&-z$Sr7{||SW0ta_ND}$ENv$!HU%lFelHIUUu3ShdMJ`Z6Zd|FAmQpl7Zk5-? z(2R{?C|ZrAT&&0)p?RC1$9cZ~0G`v+_k5nu^Ip8i+1cA;VSkoNY*14<|Nf*=tR;)i z0EAkBT=75MGMI=p}O3V!GM4t{q; z4>uPR@P}O*_``1#e7MO5AC9eok0;&mr;a7;pFU2( zpF24Gx%>c*8m;gb_HJ;zK?fiADBxFZA6T&%B>Era-h=%_h8;c;j>5mihvDC&)$ku7 zEBvRw9sX0$gj!3Z$?T#l%vGW*MO&D@Ufdch F^*=7fOT_>H literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Argentina/San_Luis b/usr/share/zoneinfo/America/Argentina/San_Luis new file mode 100644 index 0000000000000000000000000000000000000000..0a81cbddfa2813041472b716baa91c35a8451379 GIT binary patch literal 717 zcma)&-7AAp9LLXW53_c$qP*tDG?ZGinZkOsi?Qs6UC5OSDW%8-N|YN{YQ=Iz8*-;i z-qtpZ#|)uqBzKD3Q8Z8UdYtq12k<-n`kv4E{LaNW?v9>r6Zx|gY=Sp0_up4+Y%G&? zE@d?^yRy!6Vaj9VxjE7*^4uys4)6??c)-ESe)v${Xq2CaHWuN-=~ej1%r*S>%{~0i zum*lNoDU!E@PPN`=D_=P66U3`1m+KlW%yX93O@E-2_J8?!pCn{z(?a=_!HMW=1-m` z;LlwY{ygvqPF7gpFYR66RD&8m<&(j$LN8c0=|uh>`N4hzSN!Fq>z*DX7^YbkAZh-YVFSyM50xtVn0vif`?-|Y{ zoR>R_qJ))IJ_Oh9RwBia580?RirhPfvcZn&Pd_->3T}EH6gfAqnZeGBc2SX`{O1x> ze6e9cDP#yLeodfs@01Wqr36t?8jlh+rB?}smeRXhg^uruw#DTpcGgu!GwW*BCZefl IJ6pBp2Vy!-;{X5v literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Argentina/Tucuman b/usr/share/zoneinfo/America/Argentina/Tucuman new file mode 100644 index 0000000000000000000000000000000000000000..10556d5d856a0f33afd8da2b07a2005e7be80fb0 GIT binary patch literal 726 zcmWHE%1kq2AP5+NDnJ+nLI`WI2P$I&Vv+wqP&8-V5)i#;QojL+-c}vt0HU``o!kJT zcgXdF`8%!@faQ0I*B$_g@7lT;EWi85MzH*zY1hH>dv87g%kQh;0?Y5;EdiE45Y-Rn zADlZE%s*s(7_9zq-374vBQoE>@<$U`!171`X@TXBJDP*#k3U!s=AUSs0+v7JyAZ7Y z)VnsY{5jwMVEJSmlVELb4%E9u#E}Mbne;+ml%m3LE43_`91`=NX=9q%{|9eavfMLtPzSwI6 zh~`kqUjU+&r)&lDRRpGh`Ksohz X!5N5k4NQR87>JD+xNLwdJ7X>YQUg#g literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Argentina/Ushuaia b/usr/share/zoneinfo/America/Argentina/Ushuaia new file mode 100644 index 0000000000000000000000000000000000000000..e0317502769271ad0c038493df2ad2b90ec402d4 GIT binary patch literal 708 zcma)&Pbh<79LJx{#*DI}ND|r7Cbc#*VS2U0O6I_doE)T-A_tU^iyYKSODP(5Rkj1> z@5V43v>Hh{tjLYfyv@Hop6Bc0HqX#7vE`ks1LgTiV3s~!|1?yr_aK(Ik39Avac!K*i0Uc7(hBNWqb~{lbk*57~%VmFd znq10=(m;X`N<$GMqcj{O3QDgcl59%vViFZUlk8@@gIL*A>Z{lo*%*kjo}C(u${*+O BOAY`4 literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Asuncion b/usr/share/zoneinfo/America/Asuncion new file mode 100644 index 0000000000000000000000000000000000000000..622503674225a20bb6fd3cc79d149bd7d354166f GIT binary patch literal 884 zcmb`D%TE(g6o+qlQwtOjYI%r&Se14lumAt6K> zHGv($jSEC7Bm@@9u;LM*B&Z8aOxPJo8iJ7kAzbhM@dvQ++?;dncfWHMGl5`dM-@3W zbZmkrkHG0Gem0iO(nwi!_GL$SpE3Q7@crb5%>$Cm++;JH{i?erGm>FAA&C`F3eYW zT;NN2UGSEaIk08#9sK2ZKln35)uk z2)ui67ck>JkzYlK$VJbZLhW)Fet5G?GT? rw{>FRRcG+}0>s18CMqmtqOW5&x5BFIw)!MdkOa{#T79yh@QeN*JnXU; literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Bahia b/usr/share/zoneinfo/America/Bahia new file mode 100644 index 0000000000000000000000000000000000000000..7969e3076687a35835653a348f0f3c8c0b2e1821 GIT binary patch literal 682 zcmWHE%1kq2AP5+NDnJ+nLI`WI1uA0(VxIp%Fl|+~42a&r@A&{s|8-aZqIZ5YF#yrK z?v*Hj=vx-+!2DaUe}U;ck`Fh4#P95k1k2z3EeaODH~Su#fB)_*F#kb_F_`~l`hT$c zudH!k{HqU9HuZUE5=#^)D+XvM}%u)GrY2{2zdLI5nU{HQmUT?v4Fkjzo8JKU- zPzmN6%KC!U8-*)?^&7Kgf#ppsLcsDSKMsQVW(x9PzS;QcC>=!E$=@D z%Ukv9faR@E{0Gb1 literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Bahia_Banderas b/usr/share/zoneinfo/America/Bahia_Banderas new file mode 100644 index 0000000000000000000000000000000000000000..48faea2ecefa7dca89c7b2f5e0bfec6b47becf69 GIT binary patch literal 728 zcmWHE%1kq2AP5+NDnJ+nLI`WI2P$I&Vu}Aiuyost0ua6aQ{Dp*y)7*)0Yq&uKy3^W57vYEkzZ@T{HOyH!Tji} zabSMT%5@-R46$1s!2Gz*31EKwR3$J!A+rd~Ppq^10AeJ0hJg9WaS9(8nHZUYm<34U zhOA7u;Q#+~fo1{82@EX%|F2%azyTr|dH(pNfsf(S128?M=K_f4pUwd03zX!6`GRGSzuj!5Hf>F5bOW{6VeO}|NmdTz{v9d|M3G19RL5HJHg1~;~T=@=mNySAq=_( N#>NH=TtKD?7XY7HQF#CW literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Belem b/usr/share/zoneinfo/America/Belem new file mode 100644 index 0000000000000000000000000000000000000000..e0d7653c64c1e3b3e546d4c5e7644865b237f128 GIT binary patch literal 394 zcmWHE%1kq2AP5+NDnJ+nLI`V-1uA0(VxIp%Fl|*y35edo@A&{s|8-aZqIZ5YF#yrK z?v*Hj=vx-+!2DaUe}U;ck`Fh4#P95k1k2z3EeaODH~Su#fB)_*F#kb_F_`~l`hT$c zudH!k{HqU9HuZUE5=#^)D+XvM}%u)GrYi3LoIc;Ns4mwFf&{{MgcfRW|@|Em`m XIDC9V7<3JcfY_LU%LYi=8FK*u>AtJ- literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Belize b/usr/share/zoneinfo/America/Belize new file mode 100644 index 0000000000000000000000000000000000000000..bfc19f4e587cadf6a2b05781860c21dccdf02961 GIT binary patch literal 1045 zcmb8u|4S2b7zgm(=31^8At91PEQwMo#v&_%EM^c=aMj2w$j${){ZMLDLV^7t1yN8+ zl>X4vlx1rS*z4lW0+dkJ@0=&e2(Yy@H*bl=YBf#iL+%! z#iGT?32G|y;wu(8woL9dl3aBqK_^YCb+<^fasOd~W>fWAxOwY&j{LYpf?ISf+`1j+s1!9cd=z~SLzzvZ8!jThwC}YxmV@E?*6N=C$SQKVLb`=1ao=H^;Q?aFFh;Z zzEgU*|KSuoP@sYbtKP#yo7M@m_loO)hnF+3cV`{!jYVOfzFnl8&*z2x%stp|v%zm7 z7vZ;ehdIiP>|GBBa+2lb!0QT@=4kF5j~Oh&o{&Bc3!cqzFy04`)$8C;U<~(+S0&(2 zu3mV83&7#pN3ghWhNF8UmDl0V`j2q*hz0(_bi$LyLU=NAAC6_0^0XHlyaIonH^K3y z3`v*$qy&vVK|jz zhf{$Cj`n6%ci>sq1pFs@0iLTJfagbU^ORetZ06|y&{#q|rso4oGpn=$&a&@dmCO5yEoedy!egs;9`9F?d2Fw5AdH`1cYb6_4{`VUZu>7Cy?hPP+%ATC# z0HWn8o`U)E3!D#t_zK2%!F|xB>&i|NmDnFtPyI2N*bfd_x#?4UB=Fw7UQR literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Bogota b/usr/share/zoneinfo/America/Bogota new file mode 100644 index 0000000000000000000000000000000000000000..85b903333eb6325aa8343f6e9aee38447495303f GIT binary patch literal 179 zcmWHE%1kq2AP5+NDnJ+nLI`VN0V)Gwf&V}dH^<}yh@KGI^|Hq*3RTWfAp)7dYpO)VS^J7IZI2&ULgR#bFRoze=g zJmgI!)2$$ksI+d1K~16v`f;&tvcP`a6c!N`C{1^IpYK25P4D5^_xU{MeP9$`q?DRJoyKECFG#4`zOnYJu&N^(B$-1@z zg;F1xl_|69(y+lh2^;Pe!A3C&8*h(cU-)?qUhpxF_oj)*e4DX_$sTyo!#JFKGlu)( zl^%F;-#K{6$pi4xu68(YZv$-JUJvI7obWQ|YS>Z|l4($26kw~?0b75SDKxizHp2E) z4qQ0?4PHJr1sBC%!Ntc5vA^Q%UASbo3YQ*y$>^-C`UJ1qaR)9lKY<-C1$JaUpm7RE zVCUpG?3$9`HIJ^t?l;{s4b~2whduY3;qud+uy>#m_I37(bkBb@AFgQVfGeA4;3`KW zyw3j)t~R*f8rwAAVyxzi2@a$u;M!+D;Pvkl@P<)Ap=M(u3UBKF4sRYj1J@mT4R7fk zlxeVa=P10b{S+K5zXXSZ`{B^{5y^+8l9^4%PdD#Z^bkw w{POQQs<1rtmZq@8B0*leBo=Pr72!oap9#FF=8ZdC;qiOC?y%42@p-($KY$7DK>z>% literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Cambridge_Bay b/usr/share/zoneinfo/America/Cambridge_Bay new file mode 100644 index 0000000000000000000000000000000000000000..1092f4b61a1b203f7feabb586b51085bb72602dc GIT binary patch literal 883 zcmbWwOGs2<6bJBcbezX^s+-U8m7|u^jN|pr`0k;WGil+_U^k*RBKSZzib3F_y1o{! zyyz;#aB3AnPP7ssmB@u=3tOe6(LN7`A<%=GTm!ndyViPKM!gZ^lJx#20<=`N3W|uDcnIZ)<`R9@fB# zw{O8o4neiP0NFT#!|8Mx2t znSitJ>u^r{7e;Zh_!oTX&O10a@e}NHYq0ZZ4UJ3af?cb#uzOR1^FF?YJ>NQ28sxtm zfTa)haKW=ySRN^Yy{-Ks?fD)j!G$#~a8dm}TzI1P|FYI zcc{5y{2fA_`-8o!D^qxWEh1>tT%Q_)D~7h=%F*X=RmWHOM*pZvgPV6FaCOsD*k3RV z2mB3i;O}QK+7K0OJl)R}V>TT-rEfB(>u<*mM*LfJeN1CE^rEg$MhpqmGduMxJztht m@PWdDA)fbm`W049$@>6Lfe%ah&=V|_e3I-5dcBfYl7;`ZnXHrm literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Campo_Grande b/usr/share/zoneinfo/America/Campo_Grande new file mode 100644 index 0000000000000000000000000000000000000000..6855e4e9fe021cbbc392c76e1effef86dd53510c GIT binary patch literal 952 zcmcJ~-%C?r7zgloT0@o=K@eiI*$7*?d2|O|%k1dTWx3VrG^gvLA7F`6P*KuFSP}+a z1Sb8477=7uyAV<-c%eWBl2Y2ma6b^dPzE(99b0yKpYK25mCxZl51;q@-QcJlU7giz z-O-5#9U680p9DoMUz|cs%;WdBW!hug+J0fLdBe2F(~S!4iTFKLGA zJ@Q;?2lBszgJJqkW8|emyR>%^-W_srvdJEU%kJJ%$a}W@fX#tYPBt&xk!bIAFpfPt z2bY%_6>|BfH2M~%!It4?$oDUoaLNyKE66MOXXMt-Z^&(-w{T_iC@l32z*WW|`qgbV z&cxXDy~t(91%)hUrr{cs6|R}SiGJjsCp%eL`ND=b7tGnRCUtS@v z_x^*A3>CtPEeSUa=;6klYZ4RV^3A}m)dbw+InU|7DVamxy?q$D`@$^PpK6XP?vk)OJF20qO!u7@^Wxs!~nN1#NdtxDL5Fv!kL(}m%mDRx($0YZEA`!O`Dt1ZPK(!&I(#RDzi#< Nab#ww6YqN2@E`026-EF6 literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Cancun b/usr/share/zoneinfo/America/Cancun new file mode 100644 index 0000000000000000000000000000000000000000..640b259fd0f87a34f03554cf34b4346cffd5ef22 GIT binary patch literal 529 zcmWHE%1kq2AP5+NDnJ+nLI`Wo0xDw#Vv+wquyot41R$G1tnDh8HcU_d0OA`J{Q~oi z-95p4lb}0bzNxx4m~VQ70n9fuI#U2t&S1_i1ELr#q+fvLEuQ@Y^DTd$0`slDvNV7M zthXHk^KI7u0rPEl_ksC#{rA9p``HCxzC->2FyFDIw*aV(!O4FSnD3mD59Yh*w}APs zE`eaa8-E&@@2+AD=DYuBW&isBx@ w{Qtjt0Rzkb|Hlt7a{T|la{~hph-4J-@eN^c4h~^(bpc`^?F^*3fDBVE07!Idr2qf` literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Caracas b/usr/share/zoneinfo/America/Caracas new file mode 100644 index 0000000000000000000000000000000000000000..8dbe6ff74127e02577fdccd694af5a61580369e5 GIT binary patch literal 190 zcmWHE%1kq2AP5+NDnJ+nLI`VN1uA0!Vxj*)kl8Nf0HP<$>DYkiZ!_L_fXs1^o>Ty$ z!&O%nFfuVSG5`O6(1C#gNV+hv{QrMo2Ls3d|Hlt7@cH36=r&*^t=SE=b})3ZO9Bqpe6DStmn7h~R{0=QT! zp2r@_t=FzwN>5v56XlNS9J#AC{O0%Q3w=MXy`O^VdwqK-<1KaymQeNtCr0M$$Oiqj zlQPLC3Qi7rC$i)REu8Xo1*g9GyQoR?oWbdC4V_==lS))mIxzk`Iyp)XUwV&hpm^raKW87T)0~S+fKr0jLEY}aM7k3 zE*=PmOD68&(&j`LHD#U0aJexER&48VMd&A789f14u^ZSPxay<}`|TlI{WcEQ94*1M z7oBk3+JTPd>bHyFhOtGsaV8dS>Ttr%Lo$sqht&bMG{i7TC3#6Iwb)*w`PWu)J}-Wl l^92`EbH1_6eCd?5obS0MolRDlT&^&aDA_Dhlt#dy`2n!Kl1u;q literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Ciudad_Juarez b/usr/share/zoneinfo/America/Ciudad_Juarez new file mode 100644 index 0000000000000000000000000000000000000000..f636ee643fe49a583fb2db3ff8408c341a06e8d3 GIT binary patch literal 718 zcmb8n%PYiD6bJD88zY(~CfSh`r8I^a#``_Pc>O$oromu5A}JJEky*%OWmwpFWI+}d zCTWneV<{|zg%l!LphS6G_k8^Ua&G7MJ)hgTKc%s!%f$XHNo-J4DSto75o>{>!?~yx z|NQ{v`b*yxrN7JWqTI5aAh)%tzxg%sME^H-4^uGHVDJECvduxkQfePyb6kmzoNBso zQ>F#Q!|4%kM3#Q1g)=_R;mp@CFAZ7#V>sKVfpc~j;M}Q4IB#wY&hI~j3&!W%bWvF4 zgDst-ur+Z8F0!`5#i2v6Ew%u*y-(}JGghjOflJQ@;j)`RxO{#E`xU27SRV1fmHu3~ z%Gm=~&ql*F+2wHUunMk=On{a88(8@ah3)18*nX?mF;R}FYYOJr4}lxL_u!>8o z=k<(nzTjnQ&exV$FnuL0=Q}=0S0O7*u2Yyrv}_eAS|cvf1oU#U!DL9%%SNNYXh_oh E0Js*Lo&W#< literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Costa_Rica b/usr/share/zoneinfo/America/Costa_Rica new file mode 100644 index 0000000000000000000000000000000000000000..08f0128ee681d8f7e1df186d93514f3f4cff2830 GIT binary patch literal 232 zcmWHE%1kq2AP5+NDnJ+nLI`W&0xDwxV!{7FklC)~3!)dl5c37;7c}!s0Mpy^0zkB| zm^PR%JUsx+SD*d>%-6`S$+u2*F1Fd0wXgM6#oCe(U^e&OtSp{zjFg4=l}n! a7clVp_=Ye9djSb&7a$G}Vc-H1W?TTV6)k)K literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Cuiaba b/usr/share/zoneinfo/America/Cuiaba new file mode 100644 index 0000000000000000000000000000000000000000..c09a87558d53b031fca84a4c92165b01b37da360 GIT binary patch literal 934 zcmcJ~-Ahwp90%}cW?_HzCj zr}xX#UC1LDBi=_x6L2i@9*!$@@ShiX=>Of_1F!RbVUzzQ@{(VNIOWH?W#py&Gjen1cjRS(cW`;*1S|~>!xj2=^ebD+ zI1^*h4j{MMuF7O`#04{qVU!!r*%Hezst>k95S#53qS_xq7MC*LAJoem;zdj1eT6Mh1p9ejg+ z^UN*Sb$JMOzw*N8ngZybAG#?sF&={x`Gsqj;ET)zD~@Vd`PqoR*O(7`L&soWRtENs z>)_Uv2;BB40k=ncITO=y{hO4f*`Y^OzxFVus*CfQY*n4*ET`F}FtcP4$I5gy;Vw?wg0Mk;3CxU6|J$nT}`eoLv1Jkl|=7VXuo(W)DzNQgO zE94Y`X~mdiFsJhA`+F7z42pgFBGT1tbi(02vZWm;e9( literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Dawson b/usr/share/zoneinfo/America/Dawson new file mode 100644 index 0000000000000000000000000000000000000000..07e4c5f4ac3852571b17cb33fe565a5ea2c49f0a GIT binary patch literal 1029 zcmb``-AmJ96bJBUOI;3yLB7nj*-xj6OCq?dJ5GC_ih zawO$NwSG!B(T%cje2On~;L)*UgnRmY1)S9X?Bh-z zun2tqGKHgjE>?`G`0p!fzeM?5)pK0nGcVYIeZI>N7u4I}LSr4QF7+W_l&yv}ax1J^ zu!xLm^@l=On=F8JkAK6(6N~Vg(HU3>R|ynnB?FJ((m*b(?|rM{`!efSxV-ftyf*(8 zY^aREhV;BhF=kXoVB_oyxbpKsxGFILuS@kud9FG(4A;c>!>0aIaP4q2y#DYNfnv;j zq72^PJPBKTS+La*fa}bkV4K1Y+qIc0ddBQ?8o2)N9Nh4132vNu4mXXfMT)VFQ+MG_ zLx14S*Dt|aj=h7o4&I6KTyuK@-qw8)c9=xC#c>pF`H>PR#+=m`@ZOo4gk8BuU{`zu zZk=y~x8I116ld-?y?F0Aa}{p8?}pn$r(y548hA%j5Z)P9!9Hyx?C)5B{YyGHV0{e- zJ~jx9YIpH>73Nbd989O+&f95t&+H@|8hj6TB}U-A-A~|svCucUjJ_2a@=SS_;(vcD z=`ZAFOp=BovJ6QY=wq~@dk#*OB;Ab4^7x$<;jZH+D{*`LEa;&2QSYMma?`>~3olI% JO(h*R36>8b2{hOQ;)gcYRO<>hrn-8(J+U9lE<$_ z@k)^SXeemUr5s;gu~SYsbQ0y3EfIDmzqgW|O(|N+z3LZ{a$oep2id#uA=`#sx+U1< znS+l)JLq$~Cc!7}Mfh}PR-!)c)e-p2HVAvhJK%F`D}2#a2Va&{!dDIX@O5eyd}FK? zsn2a(g_hE*&x5_MnXoT93HCX4@ZC)azF+u)A2vMjU|5p4#E&XrAiJ7uKsEGYyIh&Jn`j6jWEiiOmqpqmdH1$No29t?|!3JMIT@BE+kP3RlWobx;1IWP|+A82au zu{n={Pf*a2=U%DhW2rncbbihz#wRIv-5pdZUyGR(%G#9+uoiEFyU%@wdm?F!?t7b` zz13<-HQ2m!LJsYi`QkL|FY&2=3d#~(&sZ{UA9U& zweqh*IjwvKHhB`T+5Qf;h$FDThGF4*H#~nb3R@?J`8Hzdvo33$V!Z}7%9F?iFEpi;3p)(LMp{}tZaaSAR!JPvP*bSTu= zzHbQLQGWss7F~ox!Gmz<=R+~Yko3$mCL#IaKWbgStTFzZ-qH+4UGG$x8MPH}ac@{= g;UJG{9{YJz%1q!W;Z1kgFZm>oJM8sJUdbc;1G${^$p8QV literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Eirunepe b/usr/share/zoneinfo/America/Eirunepe new file mode 100644 index 0000000000000000000000000000000000000000..7da4b98fe3c70a1aecae8e0f4264324eaf9e1fb6 GIT binary patch literal 436 zcmWHE%1kq2AP5+NDnJ+nLI`V71S(?zVxIp%Fl|*w1Bl+ipT+>D|Hd2u(K|l|1c2yW z_a-=i=vx-2!2DZp#K80&$-fss;&*nIg5~f2HUx{`oBa#SzkhcdnExQeAI$$ULmI69 zD{B>)|Ls5nSpGYo)d7$>KLS0#{2#|3g5`g4y#uTNwNeBu|ND&+SpHA<%mYBTGsvD? z6#$~;Dn1_o(eeudFMwzToA$r~B=3<>59SBevm9Vz w#0#03{{P?Cz`*eT|M3HiEWn`Iz`y}wGqCvhhA`+Fm;kXU1D6euv@_)b0F&sY)e9Ine0)O~oLzu8ID~-q@K8FPQqle5E;~y1PLWw;WHnYqu~{-1x%I@{MtS5H zjdj^smZes|G)AnNbSgh^DGxv*NQCPuaOHZzsgs_EsohrPd5mxK9*h&kMDU1|B5Pse{VPkPk83RlP)EgpPHWnPn+k#)01a; zw&zcO3Ov((0RH=88$4UBfenvbIrcrtZ8gu5{^KzKJ6=tm_NmdC$t>`K4t%t8;e>;RX2uY;!Ub zUYL3mwoQzO<)K>GF3=ygSNp+=6>$QgvB*LJE2X}$a@0p;^~JsRutSR-yrf|YURpT` zFMH4l^I2{@Z70jm)WRzgtYOEr4vy8Ge1E_z!=A&=@@81&S`4dZheg^()UsSy-TfAJ z9oPrE)m6f)T5|-}=U#jr_R#HxJ#&u3tFLc{*BrdY(>CIj=>&Ugj=?^0rm(Ln0rvCi zhyBe0-~a~`j*gLlJ|!IZrwuMgu>kFpg4R^1=8`HbsO?jmP z>)RYv2XEPb2@dfT;jJNu;jLq>JZ&Qy_luaIQpgs9J4kNj?LoWIEP?Z8$SwbXO@UkiPXrLUjN5qVlZ5uBE(=Q r5+ue3LqRSv$Ga77`coDO#5O!aOQJ*QiKAx+J<(bcLEmNc@|XPs-b?Lq literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Fortaleza b/usr/share/zoneinfo/America/Fortaleza new file mode 100644 index 0000000000000000000000000000000000000000..092e40d70122f764fd2630957be1d3e32858f6f5 GIT binary patch literal 484 zcmWHE%1kq2AP5+NDnJ+nLI`V72P$I*VxIp%Fl|+~1c=_j@A&{s|8-aZqIZ5YF#yrK z?v*Hj=vx-+!2DaUe}U;ck`Fh4#P95k1k2z3EeaODH~Su#fB)_*F#kb_F_`~l`hT$c zudH!k{HqU9HuZUE5=#^)D+XvM}%u)GrY2{2zdLI5nU{HQ4AyV?$qUT4KJgzcZK`~3rKJd<= zpagGT^5#$KC>Bedq*L8q8F2F%8f#Pdd_J)t@%jG#S2&XO_ZoLZ`JwWuh03sx2E7vh zpHca#@EI#b;JETRINtFRHl>fkTg^SNz#hWFubc2T?FO9i<$=nm62k#_`}lQu$BPz? z@6Aun!aF+};9af7@a|v{oD@iflWQ#S9`8E5H)jprmuZn0)qc|woMKpmQ&v_LzPCh| z;MBQAIBj|wJ}?r75BB!K=`FuCinEM6ZE)t9PjJ?iUX|~&J+I+Ir|!aslOMy@+>5Yv z{gpy7W)rGm+u|cQ_nQqqGSv#(KUPURcQkY!7Dsd7yj!KPqg#NTmjW8an5+3aoL^l6 zyH9_BJ=Qe1z%>jP#_6!vGON-v=3S1$MgIoj;C^RhvyAEbXVqY&dzhJU lPrzxe^~C1_vec)(P8&HouX582pb*}&*=aF literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Goose_Bay b/usr/share/zoneinfo/America/Goose_Bay new file mode 100644 index 0000000000000000000000000000000000000000..e2cc3eefc273c206ab9d88f94660f587932991fc GIT binary patch literal 1580 zcmb8veN4=890%~EDvFo zG4xl+<}jz|;h5QVDVI`LktFIQ!qxeH-hZ|E!}|XAz4zz!`F_5?ziz+u4Ou%Qxc@Gm zP0*&5{{Jf%*_e=RUkh8CqnFL4EK%p3p)7satfJJED6%Q5)M5!`b?(3|%BL6I;Afc) za81rITpLvh*KKuC(_FpBIanJz1V6XB8%X^ZK27k8t|Is)cOTZz`F?=T^~xSCWn;d~ zK>0e!I+3zzw?Et*^Z|a8D1Z(2^>9l-AKdb(9By^7%b!!F8m%W@Tr9DozKHU?i?%}JPJ=X=D-duMLLcx z$Er+t%7Y`YQ~6;d^_`0|V3&gRuxsuT*expxo|@?mPm_DW(jtKa5l|_mc+oKN(VSB&le6q z`xO@NiZ;_+#6carAYnGVaP?g{GJuB{MHIn{ZM$KK*X@3~C+Vq$qyC(Qm(<;am$n{) zmsQlLXfFEEI(T{E4LIhq1diRG4@*z2&8E4y)IIQu9gAUESTY+^Z^c{NjC*V+jl=kZe`|r=1Rnbd z%(C~|v9I4oj&D~%X6IyHuscgQAbGKN!jl6fVBArWF p!?uj=G`82Lb5d4ISx+isg^*PXStmrXKolVg4^fE4BC#l3_!o8Gf8788 literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Grand_Turk b/usr/share/zoneinfo/America/Grand_Turk new file mode 100644 index 0000000000000000000000000000000000000000..9d90e745b04fae51493817b5ba1db5015a39bfda GIT binary patch literal 853 zcmb`;+e?#S90%}cbD~V8ELWZ~orm$x`R-uzP*zSi=G9@e-7_*!K$d|gO_ z)3t)1)k#KT6wXv8!I}TmLHl$2GKLQtN#$lbl3)Y>k26<0V`(WYVGpzqr4i_&C!iKQyXEjnX7J$XsGT8XW z4Vyygu(_in#(S2R|KU=n3%=F74_kG`aG7NZE>B2-E3$SYgiXcKU%2w*8+?0x8@{tQ z23Jk~3G&|EuYK^nw_EW2_w8`?iy7E9(CcS4QsW(kYac&??ZzJ1VXuW9#}hGDBhHex z2r@hjyHaehYxX%@AI*o|ABJ%6*{SyPzVx~iZkX4?-iH$0_)Y~kRT<&t?jyJ*I~A6F z-(mUW7;gO(jwzIJ7xby(C|ztMgwh2iQBnG3iX>9Hv8+huFS+cIWa4J)XklxYiH)V2 U!OCEeN=1ukGDv2#XckTCGwa!~+yDRo literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Guatemala b/usr/share/zoneinfo/America/Guatemala new file mode 100644 index 0000000000000000000000000000000000000000..8aa8e588e3cbf963193269ae01eecfafaeb02b50 GIT binary patch literal 212 zcmWHE%1kq2AP5+NDnJ+nLI`W&1S(?&VxIp%Fn{i=J0N}Rp=%Pr^x0__K(wSz1(+{+ z{z(9cum0-Y0}!ooA_gq)5)zaE;=9Uw2QV>0;s5`uRTvol|KGWRkp;+Jz`)_-8^Yl1 O0>r@~3|v6Mj0*q+L?#pf literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Guayaquil b/usr/share/zoneinfo/America/Guayaquil new file mode 100644 index 0000000000000000000000000000000000000000..381ae6c463260d85ce92d6585b6420fed0c096dd GIT binary patch literal 179 zcmWHE%1kq2AP5+NDnJ+nLI`VN0V)Gwf&V~|*{&7=qPHz^k^t$~7W;DnOcy?LU}R=u x{{Mfg1_J|7K7)bf|Nr9$7&-p`-?@Q-$HzB>ArOdl4NQR8l!40zNZOfl0RUr$BfbCt literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Guyana b/usr/share/zoneinfo/America/Guyana new file mode 100644 index 0000000000000000000000000000000000000000..bcc66881c17cebf8767b7a147b1fcf7ab29bbd9f GIT binary patch literal 181 zcmWHE%1kq2AP5+NDnJ+nLI`VN0V)Gwq5nWINtVAIM9;Wc?En;G;Hqcc1EMvrIvikR zVrKmR|70Zt!~g%s4=}L&|9{$rf#d)Gs}~sfe0)O~bPY^^*x1ArL^5#M0Qq(%TmZ0G BBpd($ literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Halifax b/usr/share/zoneinfo/America/Halifax new file mode 100644 index 0000000000000000000000000000000000000000..9fa850a7d4c36dea84149bc0ea2fcd3581d61a8c GIT binary patch literal 1672 zcmb8uYfw~W9LMpqinMJecma&XKqUdgWf#E^G0-5!3wlNtjT-Ar(+!)Hn8>UKb;^>N zQX4A^6R+W|a5vB(0vE50c3D6P3YUX6KxDm~DXg)sn+zKjO<-6}TzP ziGPYO!p+il+!F96Zc+1btLF_x>|Z(jiY(Govl6!zF2`zdGH%aFz*h?<<7*3oaYuTn zD)u_ZO>~RwiZI|VZ$Iw#y@tE%Tk-E5XYqAs4fbv=QN&*F`a)UcjWwI`&8J?(e=l8y z|4Gik|HdrFw<2@c@AI?Ze&ZtCe`}#Co^!iv1|DdR#)EZ!c&K6w)((2z;{PD+=ut%& z-fhGq);8dgxjnL|`zU`YB1g#$*f*sf-(@Yw#;`JcxBti3Bz=TUJ+I+=)U|kY%ZF}B zKli$_@tDe2vESi*Rn+}IeGHE+T!F`}OT^=IX5$IjAvj=x83!f|;h@MtJaLLymh^L< zu?+_s263==KoNCwdm9d^_uxsjwfKIg3y1FAkHhkNRefBVym1qrl647BUA5OO>f!Mx z@B<6q!qWmi!4cD+#Suft6@5&KGNt1v&kj7jI|@Hovkpf$J}Qg38O2XvOIak2DVU3` z+fCT^e735ONwIm?@yzr&IBwYwI6h($o)zoB5BX|1!TgIlOy zUn6~nxiH)>_}_U=JEQ+}O}p$i_-NXBmt^GgXx{x7XV|5Asrt>-?+X3OcFCk8PA^7h S%(TQ>tkD@Zo5g0an*IaqsOC)o literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Havana b/usr/share/zoneinfo/America/Havana new file mode 100644 index 0000000000000000000000000000000000000000..e06629d36841463326ff3350bc2f94d0417c3cdd GIT binary patch literal 1117 zcmciB?@Lor9LMpqO--himAY(MD@|AFbhCvue_Zg_N;j`;5NU!$Ej6TwU{M$m*yb{^ zRfmF~ph?5I`YrAJSR9`zG9PUo{TTJ(@mE)d5(KfjZsf3ZTITc*bIdXP$RR zwC>M7iSz#cdidQ$5@G;7Ch6?vKcw0^J`it%Rdt2loGjEbx-I3;Ta3 z2jOK;E4(tsVA&g%_-|mWcOgJgcqS#P(mesI&MpY#xRx&>HQt;mQ4@sM@S1e1Ku**R zz=@Gd5?ReWu=+>4Ku(%(gOfjYN#wOsExc~L6<$AbA5Q7)6KH=!!?yr+qsu2zHyQnK zYV}<>t?4S9o)deX#&QDQoY0K@3~e=>u~-goS<=JWx5os=$JUS<&KxR(w_S9Iw7$JZ z2kRQm@QyP|cxOce&S%-b!r56x@Gip?oRfAP&ebePjE~$EFYebzX0g8eb2q$aZWP}8 z;xwG+y94Lnv%!Ym3vj{Z0=UrK2pdn;qNXDyXi-f*x=%PN((}xjAJF}#;aHb_Xt6f- z-ijB40XlbJ=@EKx>M3do-9$@lua1`<$@gYC@|jWACNv=MA_fTZ3~o zp9axGs%WfFMC>09hv3@&4z$i6!Mg2QH)?-rN9*15sCfIgs8A{Y(}({*ry1i{iN(qC u8%dEU%j3f=xz6TfRz52#`E)p$nqSNudA1^h$xv8Om}fH@4MzUWsQw4Ss79v% literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Hermosillo b/usr/share/zoneinfo/America/Hermosillo new file mode 100644 index 0000000000000000000000000000000000000000..5c92e2967e7cc5a0e3567ed0321f15b8b3a6b6f8 GIT binary patch literal 286 zcmWHE%1kq2AP5+NDnJ+nLI`W&2P$I)Vv+wquyost0ua6aQ{Dp*y)7*)0Yq- z&bkfepYHev=3i3&0_I;zTJRM$DU?j{*yR)F#oBh1epKK z-G%|A@41i(SpN%kIWYglCowSp70_iM`BxWzfcdYVJp%LJY`g{Lzdd#Y%zrm=519Xc z{euRO`hPoQ!2JKq|33iwje%kMzYidavHjr#5Y1Hn0L*7D_?H0Uvn2d20MV=g4-!B$ zo5OuDpWWaPn9trT3FdPOY=Y2hr+fgZ- z&bkfepYHev=3i3&0_I;zI8DFGIL=5E6P;y)KM0n5Komjm-(d=dlm zU$HZQ`L8bi0P|lzdj#gc*?0@ge|zi*nE!6#9x(s?`Uedl^FGW!TmYg!_8$WCKh-Y< z^FQY=0rS7aw}bg#{oBC&Z}ypB{&)QhF#i`v`UjByUq8|rK=khyo?!l;8=heP-xJzk z{=XgCVE+FVydOZ}$uNT#Ofj~<2lJWA--G$gg**iy21_D$1Bhk~cn9XQIlKk)*$pm$ z`Ru*wU_Ph7CNQ6K?P8E}2CffNz- z&bkfepYHev=3i3&0_I;zI8DFGIL=5E6P;y)KM0n5Komjm-(d=dlm zUjc0f$-lbz1I&N@>=Bs%X5%d||Lw6OVE(&_d%*nn>mM|L)PI^}tNf2v;! z=6}v#0_J~-ZwK?g`nQ4kzh8KQ_5Zoy$pF&#_k=c>|8IvjnE!wI{|CS@U|^X3?*oWp zY=8IwM7!vh6@X}0mp};pc{>9WBM>sPfGH3Y0a<};HdZ!PpveFK>sEriwsQj`%m4qY z7cg*u**suU07No~{QrOa0HcJDZwQ043lIkbaX1hMgfO@Q*{(n_E})- z&bkfepYHev=3i3&0_I;z- z&bkfepYHev=3i3&0_I;z z_Sg|H|K0wF1t4|r*FR_g(H{!uf#pB;9|H3~)h`9hf6iY5=6{KA2lK!Bw}JWpcF2I$ z|6l(90WfSB7^eUG0HPS%A3gxlF8XB!AllU>5JG?64&pMn>*ju7Vgy2F7BB^3qC-|T zAOs4s{{O%BBgi{DH!!mN|G#- z&bkfepYHev=3i3&0_I;zBA74OIRVTUs!Rn5GYDsNNp7VhDmcMU;`Bul?f%(?AcZ2yh8zAv&yL&E}Z`TirSNqxZV7@~> zBwig`W;cKYoctm2>YP#w=DX-mng9}ab%_V_T|XZcU}8jpEX-s=khu&D|NqaOz{v9d ze}4l52Z+tU^Z)Bk;*(-Qd5Txk+N7PC8y{8-#iKZhi9Jm_ssJ$N>il8#}15% zHhA$U2VbeCH49a`L0P#o+QIwB>^~a1x~tPSW>)`dyvNq-D(`V+Utx><61HY8!SRkU zSYS_KA=(4m^lsR`{zPY#gvBs?c)klh@~kt;=Z>KkIPuXf_-I=td@ND{CtY{L$yFkJ zyu=Ql5N)tCOH>&p#kvWn#@OK0Z9(Jnv~Qbm`sy$E8xBYLp6}icoL^A|7hK(d{jMCi(6;~=SrXvlv`;#t6#v-cjg{;! zV}Ab4D*A=bBRZd7oZixSzx1L*=lycu2e@?jCR}!R4leI{pz`lm>IUIJ^9?wd*9wP% z0XXz~GHN!(9QwZ}Hg5kt`XR+I-Y%NVhA}_GtT@~8b{NLgW0u6{CTFfJvrxUlLJd?w es%r`h&^bV7frfq>dTR3}pCo%~y7fthJwzF=o6m@ic60p<&5 zx`X*5ky>EBsHY~FFJ{RD=8J1`gZUClnh6X*Aj$C-%$H)~PGDqW#sdHU-@(Md047=f i|KGWRf#d)G;|Cade0)O~yn)y?7>Hd$7`T88Q!W64fkAEn literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Juneau b/usr/share/zoneinfo/America/Juneau new file mode 100644 index 0000000000000000000000000000000000000000..e347b369f780629179a5ffd7a256054d901a1ad5 GIT binary patch literal 966 zcmb8tT}V@57zglobME7~>XftATy^}~++4@AV^i0cO=nUzT5J?{CrM!!wGyI`LMtet z@<=y{6vw-Q(oq*BL52{5R*+sqM4va6bP;{s3_ZQizuQ2156}C5f6x0I&do{h?>wlo zMVE+{z{6E3A}s;UkwxUFDOr6P@hmv_jz>6nX;c5WV=tKTzJqTQ5rXcB7KKl z3rG~Ei%!^lvH;FIR;f|n((czO^Y;j_HRgbA%2(KSxe0cN&tb=%afy#J;ae6ict47J z=c{KT^_M&zfR~Pq!pm-rNYobx2jJy>8oc6E7hKqR9Co!GKo;#tBUeW2aK9>03%g5G z8slrV!wq}P5!h4Z!kp)OW0vlVKUV0J-kEZE&4dkJd)ErD8~y@IC!z|?mGn--rF)Cv zvcsPx>X%36;fkG8u&?MH><`|C{R_D)%>{%jaNzA5I5?Mqs~(NRq1j71A7krp48!uh zBXISZbFgwX35O5q3eBlqDqPcY7T%C@!4ZE4T&wulTMdT*h`_^SU@2}g6k;Ej_4 zyy^8zcyrd5rMWE+$Kb7+9c~yJg0~%=gJb9K>wJtg?tTh4bqvDs>Jhj(-VHbZ_@J1~ zc@}g2KOgJguFYZpzlX8eZpI9wH%EJa53?A?b(rPY|Oxy`($W$9Q}meeFFkQt?{FAYV*FJ@$#AEH7* zGFTdFNyM@Uvcjyy!k|*2Oij;LS(%qZMbX8b-uG{b-=z2Op6B^J@BgqHGwd}LXvv~W zL=$YYWmx=?5*icJ9VXC~=j>=?)zYf0VD-Z7A7)k?t9;<5hGDq5_&Z_qmOwwa*Lyq8 zdk6LKlamg(Kk6&opYOr5{6NV|yv{(g2j)YLo5&4!72|wlv>txlb_VC8on`P?O%cpl z_Q5uj0k)T?!Edq>;J0}Z@H>SR9@nQ5_PXyAWjw1NJ?Cuj4CZ+7_8xE-E+ z(G5@abi>p4Y-X05v2qox^0K-2_j@n}x!K3z9Gg3Cg~7rlfur9kA@vTP6;ZW~W7X*h z2RoY`MrIe|teI8U9L~t9TlyF*RzHBnr-ES*-|KVrY8}sV621!Op4tEgYF^hocTzIYQUU_-=UBmb38c zfL2%@T@1?|56vv6kmSOO(H1y*A`y=1tcH~X1|yA;H5L=Bx{(0KmT!gCwNhA9Sje-S zw&*7ur_X}d?i_*RFI;l4O`$;>$I8W((Y8i z>rX$2H=N%OryrjCT{l)9HPRT_w4)B^83*#=%-B*`mze?UzFg*=M1L=5m-+VJXui6- zEx1Gr`i1lV=mo*r!2T*7*F-LYaHWyBqxZtym)(iKAUx_4Nw;MiNJb{zyXf9ccaDMR bXs@F)32owOqs)#|X;o@vwnn4UsML}_4kxPc1&!$JkF@bNJr9S<$8N2XrkuLwNmA~=|0_;8eX1DFTp5R7o>Ab@s-N&^ z%qUae%$sIL`OkAVtlV?M>YzoY?_rlLNW$qUSkpZPYY&^_ROn(wNy-H+U*W>0FRKz1#)QIok!#J=O}( z>uiNf+k^K2F1q+;4c{llSnV+wb7T znaA*wLqBg>fl3}ie-T@c=_gjxVr2v?5yd5ok}iA8!ppc*!5uuu9=iz z_oIujXRISmeJfJkus9TkYmc|X-o9$scOXG+%zwlH*KOJfuiQ2X2b_)YD*r3EUhjZ| z6`y4)f}a$)VfqE!_%w&SdOS5j2WxKS?{)2iB)sl?{$AH#?SPvO(pXfFH1wH5PCjbBd literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/La_Paz b/usr/share/zoneinfo/America/La_Paz new file mode 100644 index 0000000000000000000000000000000000000000..68ddaae768e665a8170ea1485aae51c686f5cfed GIT binary patch literal 170 zcmWHE%1kq2AP5+NDnJ+nLI`VN1}b9#VuAlakl8Ms0-|@wO?v{S-(9`J$i)2r{{a~W q1~AF;|Nl81Mvnjgj~`&*@$n5|a0X(h;1C8~0}}==8z5eoL>jbKmMQp0MHBuIf)|yV7fon0YuCH{C)vMD-=vP0HRgrJqGjD zL~Fo&T~%hVdfnM`92l9IP~iXn+mA3X0Le8V^7sKpmjC~EZeZZ>@eN_nH825UQwA;@ JAZcgH1pxMtQp*4U literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/US/Pacific b/usr/share/zoneinfo/America/Los_Angeles similarity index 100% rename from usr/share/zoneinfo/US/Pacific rename to usr/share/zoneinfo/America/Los_Angeles diff --git a/usr/share/zoneinfo/America/Maceio b/usr/share/zoneinfo/America/Maceio new file mode 100644 index 0000000000000000000000000000000000000000..dbb8d57d91d6640c1282fab3a063567d1f663f88 GIT binary patch literal 502 zcmWHE%1kq2AP5+NDnJ+nLI`Wo1S(?&VxIp%Fl|*v4T#>s@A&{s|8-aZqIZ5YF#yrK z?v*Hj=vx-+!2DaUe}U;ck`Fh4#P95k1k2z3EeaODH~Su#fB)_*F#kb_F_`~l`hT$c zudH!k{HqU9HuZUE5=#^)D+XvM}%u)GrY2{2zdLI5nU{HQB<+m30J!?WRR910 literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Managua b/usr/share/zoneinfo/America/Managua new file mode 100644 index 0000000000000000000000000000000000000000..86ef76bf2241b6abde0f4790d23b180db4b4b1cc GIT binary patch literal 295 zcmWHE%1kq2AP5+NDnJ+nLI`US04iezVv+wqklC)20;2codb|MXXLBw|0MVRF>;gcv zVBn7jVERfvm@jO23(ObZ5(wsNCQeiU$!i_-2J^L@?}FuxPQC~8ogxl^`Ofy4V7^O8 zUIS1$gR6XG0wWVM6AKVBL+Stj*UK<407(f3mjC}(FJR#K|9|HO1|AT}DB$B8!r%+U U&cPuJu0ZVU62ia*J=vx+h!2DZpIKcEB$@d39;&*nYgXQo3RtAgToBamNzkhcHnExQe5zPNGgBPs+ zD{Bsz|Ls5#SpGYo&IXV%Rx)+s`fl^BwXJfccIsy#+vR3{L)wz;d_l?>l01{Z{Ny-&21X`EW*}w(lH|bu z|L52+F#P{NcLD>;|NpBOFmQlKMxOuw`x_Vpe0)O~e1k(6oPpTaC4?aWNOJ)N%((yu C7@)rZ literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Menominee b/usr/share/zoneinfo/America/Menominee new file mode 100644 index 0000000000000000000000000000000000000000..28d2c56e1a991556b5aca45108e3415f3ebfe868 GIT binary patch literal 917 zcmbu-%TE(g6bA5HKxiw{iXf#RA{ClK9oiyLP@zH_LqnsKisBA265KF}Ji^8d2{F1r z6OaX(0F}hVAdyFmqEX9+1-h`*4dLm=7~G8FhDSQy^Z5s`@ZOyJo!^}^$t)&tt@WmZ z?YmTbf{IpP|5yBcES{G^;j5{urkQg1nN^}3dAluAj^0gzgO8WtPxqqmqUjI3*rbtZ zF4D2ZD8IUX!rMA8=62LAaP&<9eHM#%t&5ZiwlDv(&n%HO`e|4*F-Bxs`4N0@V?ZJ& zE=|gmhe90^WzuXvtb5*1Wcs0Y`0)L9IJvt4KGNC%r!+d@)EXyzw9E*nS&XnDr&OdS zUA+ezW71*cZ-Yb^8Q*r{%DGIhnv=y5 zIM+J@=cT@a&G|jBIU1Je!lG@4Eo(Dy{-y^m_%H}tBiBWmJ2l(|3o~xG@J=Ia8_0w0 zEuA#R9JkeQ(S@t^_5?TWgkVGP5;jIwLhOv1JNIDIXb?76MBo;)18&Xs z!(vGlEPgEz4~rrXwmgi%Z7-j2`RoD=78 zmoWpDtUGYG>I3d6pM!hp7Ix)rhu9gpo}+MIVitB^ZovI_9(ds3n6J^`sR8yZt;0i` z#jrOp3H#>tao!ADBzVN5iVG=1>c5^WA0~;|ze@^PK0l#!{tH=Fn?$BAiCS2i%n~UX GG|FFBrF|3t literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Metlakatla b/usr/share/zoneinfo/America/Metlakatla new file mode 100644 index 0000000000000000000000000000000000000000..71b0eab085dbbb48050d7b6a271ebb1a29fb1926 GIT binary patch literal 586 zcmWHE%1kq2AP5+NDnJ+nLI`Wo1}ftKV!8i7V1MZEMG#%vZXgAsPj^Z!0MVC}zZ8J! zL^S~r{cnf60*L;I*<_lF8gZaXlMPR;2WGI*~>KOv&i&>h3`Qn;pV7`P>@B{`RkmQsA z^QD+f!Td1OM+-pWVNX2_Ky-xMe+4joR13_H{Pz&dk6OwD=11Q<4CcqUxGi90VrF4t z#S7WkL6C`!f#I4O1H=FSEz3Y;e**){|NnC*FmixN9xw?E{>B0Z5s)mSq>pb1LqISP qhXZi{5W9phIC=vG9KC@oE)dfa#MJRM)-%#G(D5}i)HBpG-~s@c41tya literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Mexico_City b/usr/share/zoneinfo/America/Mexico_City new file mode 100644 index 0000000000000000000000000000000000000000..80a415c70ca3d94aa25bbc1e90f3ed169943a704 GIT binary patch literal 773 zcmWHE%1kq2AP5+NDnJ+nLI`Vd0V-nyVu}Aiuyost0ua6aQ{Dp*y)7*)0Yq!F&Gtd6o6=B_XrThU=s8S%r{lH0`tv`&Vc#m>@r}!h4hOLAcn=We_+1l?^9sD z)mN4Vkbw2JLtwtm`afX4?e0D>->&~2m~TJ30L*vDKLF-Cw)7SNwJ|vPF9P$OQ}V%l z7yTA6-_<1$%y;8Y1M}TgjKO^OAI%IP;K?Ei=6l{q1@pZge+ToucesQ3K4*nLfEd0r zG{JnoHDAGe{|as}KcMG2m>-y^-T)E^%Gn9#2Rm|t`5`{D!TeB#*I<5_PA!-p&TtmY zj}VPgMf*6Ecgy z{KPuD4|9H;Psk%^I+k%)21uW9Uh)ADtx)>p0*F>@EO!9W zN}wVD`I`4S!F;V((qO*! zzHBgG=dy(ZP#J^nJYO(hZ?hDbuV1GR<{M1<1Lhm1dtU&lGb*|V<{P`~g83#v2f%z& zb$&44%xDpqZ_f4+%(sxV7`lf6qxVoq7LS}e(t%z$iz%6{Qv)S z1OvnW|Hlt7u>Ajj^#TLO|NoC4F!K2LhA=n=hcM_G7z42p1D6euWoHZ|jqG%MjrEN5 O40L=A4fPE547dR2=xD(J literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Moncton b/usr/share/zoneinfo/America/Moncton new file mode 100644 index 0000000000000000000000000000000000000000..020e33d976179e8f61a6040caaef3c8eb7f348bc GIT binary patch literal 1493 zcmb`_YcNz{7zgmPxr{cq+;Yn$l}oI9mI%d2*=Z*$X@<^+E<7Z+HQJ%tr*5oKv@TdJd0tHF>hv5X@N3k=sz+1|>8cSZHUb_r!NQs3=e z1MfL{8{TVN2-`cIgYDN}(Oetl$Pa@Z z*e!1scE1pyB7Gj0WUyzLHSBfbIqYrEgZF#n!#%Rx)+s`fl^BwXJfccIsy#+vR3{L)wz?qI&pS>X>LhVKkbFyC*@ zS1{kdf*Z^a=(!H&2PUdFfCPeac7plAj+|hAh|g>=KUCp0m>;H73+9J2oCWhEL}wKM zwJ}6ISP$k$eysuXqYg|2^P{iEf%!2j*MXEV#BOx}^W!=vfcf!LmB9Rj%px#9vCi%T zh>_$O0_G>jDSTjLA`|}qzwiqK!~g%Q7cj8=|G#qsBZrS~2!nGl5W9phZ~+-+TmbPr Bc~t-a literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Montevideo b/usr/share/zoneinfo/America/Montevideo new file mode 100644 index 0000000000000000000000000000000000000000..4b2fb3e560f6ad26b30b2215d26b3d6176d076b2 GIT binary patch literal 969 zcma*jTS(JU90&0KYIB!da}FY!Z8NiJLzHNNX4eT7w`JT`D{m!2;pTD!+A}l*Z zyn_}E-||oP@-{hNn;0LxRUfRB!xutP$`Lker@Z<_6`{QL_CPh|^=A!c${X?CG0L0K z6R6+*J__F%ABFEeAAs+L2jKBr-Eb_}4d3r;gC7Li;P|PoYWm*8+U@Y8Lw-1+*TWNQ zy>L=yGgDt`y$()gb@1bJVR%xPfG01umr>vRsvf+b|GE`kXmr2}J<|rNFKLd#OFy*m zuRk?-|9eqgM*pMGf830m@fs+_`_4v?iETra(ta&0ee>!PS(XUno!sAwck#8w>hSFLiXl zr5PLQ#$pxvjp_ZUmn%%Dmq&8Hd-L2B>ZbEWsMom`;rg9hVgerx%~#TtJ2Zna%0|7@ zgZy?HZjyDN-ZXU>ZqByAEzx?|ku<^1!GK-h!!@FW-6!kd*3f5o*TE9lb0ptGeYCWU;) zUZh2Zvh9PnGOY>^dNI%O^Qrnx-1bQ8$-ep zZ;2brknWBIX-F_lXm%qp7gHCMc)ek}5b++%c09lDA7JsEJkR&{dCvD7c}K@?51VnR zc!M@AdFD@KUK9AXDSS1KOg*LSIoXn>9PJN}QD!T?Cy+5IK=~)THAOjnuS=p-uF3)a z55_J=B?{H4`T(W+pbyUL+L9q_Vy$D8`K@&sN^Q^!>)ge#?#w>eVEhdmZj4LR6TZBJ zXT8heeL?P5fbM5!((s(&96a~h3-pZxX?R}$eR%$%%Wz@GCD_z<1TNap3m5xi@B&9W zTvFbXVSFt#gkZCJCv2`U8R_2qHI$+({ZN&pv}7ycMI$Auo81y^l+4BLv{!uIOxuzh+mMLmab7IwUO4OdSj;F<>yVdt~cNnT^i zt_;Dh+nsQ2?{QeXAi?fENs)S(r;GNvf;&vfpRm_|{$+f{m;1-LO{HYrM9f|V%BxuYrz x=CVx@nQe~py`67KW+6U@!ZK^)8Eoc5u$fN+oqn=2;&pjkqBG)lyWB2O_zN7H-5me` literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Noronha b/usr/share/zoneinfo/America/Noronha new file mode 100644 index 0000000000000000000000000000000000000000..9e74745ca79137918281337fa270c5fec4bd7da1 GIT binary patch literal 484 zcmWHE%1kq2AP5+NDnJ+nLI`V72P$I*VxIp%Fl|+83W(mpZ+!tw|23KbqIZ5&QvlJs z?xhKU=vx*G!2DaU-+<{ml9v~N#P96%2Fu_5%?=j7H~RvZfB$X|nExO|70mxK{UccY zSJnV9|J#8uu>5yEfe9dUegw*a`9F?t2h0EBIs#VzYsD+D{O{L4!18~(^Cy7(DSNU( z0YuAHoCNdb7pN})@fC~@g87P#(F!2G68A1JUpazl0f?{sC`kZBtC~Mq0H&|(1oO?m z?Ev#Fc9etpmiMnJfaEP-GJ^G6pZExtx5;Oiz{E%t{Qv*q90rE}|37|UWcmO9@dE}9 VAKwrLT?0cPHe%qi0g`q`TmX|XySo4Y literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/North_Dakota/Beulah b/usr/share/zoneinfo/America/North_Dakota/Beulah new file mode 100644 index 0000000000000000000000000000000000000000..becf4383301e2d90db0c0c06659b588d25042ee5 GIT binary patch literal 1043 zcmb``?MqWp90%~TIi0&*>sD%Wn>}c`w&vWXGq;{r+gdY6VmGV^OEAUWWJN{L!!51Y zi|A4WmT6nj6H-llQw&OpBIx18gvbJWcvIN}Q9;sl>zwaD;G2GzbHC?v?(fHab;QlB z%?>hYDQE{)3iAAg6Jyotk0W1P%3%i`Ve^3z}862f!AKViuszCTO_4| zJ{c+m+y3V#lis3pgx-SQh(eW4cgrLjdme9kD|#a&wERIGi_>@Dd6Q|Jn?F3~uNj*^+66BdPQwfDr*PkLy$fE{ za~@uN<_Nr`traegH^3!3cfd=7Zg`n{Eo?21Dzs5*5@DO(1>1f&leBODVuBqRBV0E2 z9bP_^g;%8C!Yez<@P5^~0l55t3RfH-XVg{)KErEvJ%XJjFJMz-XzXyJKxI6=9-uT!Cv9!KD+vvJsa#R>b4bMpEAPL4bAX|eOWl*3c)r0 zad@Mk)wR|>HBAS#U$wdhbFbmh%Sqhd^zi|_c|fb{mXS;F*2`L5x7|#@b?sVR>$`gs z^l{`~;Xz$7t(kRqOlGkNAN%=e;-gV!VeT-u$fp_(Ppn$k;sZ*}P z3+X^Ny`XIcVMI0QqGV7?5J7dbZnD5$ZYp~rDoC1c{hsgs05AIec+T^Dp7VR)z&R(p zx4YBLW?dS7f`V3f_K`MzOyFV3^0iMVB`6Qx@TruqCIy9Z?5qWjU;Yd~>yzMA#qS8+ zPqiBv<-b!$43yKK_Q2DxTH%?eJ~;Eh3ulKc^mvS2G#e;s&SfYu?Xej+@1RK`>)K0I z%K6RH3gv=^G%PqLV4>dw>kXr@{`N5D#UIz;Iq%}QFO5Iq(~Qj>?SoZP z)C(`@I}I;9z8_xH-2oT1HNnMOH^U`f8@$-I3O1Gp6>5~~McAaZ!ls{kt!5-@t zxYqp|UMtw)I`bbs#aP`(3HGMPVc(PQ@VYliczr@tso0PlfH$813fEsb2{-iQ-fLsD zKSGU7J96*U-_ZjHs-g<@gMpoJ@Yj8&)$pCCL!$D(cR_w`^WWebBC45jdnn980Uo<}wDM>UGe5VVTjZBo4o9e3cFRsj$mNnRx1{66~wyy|!O{a)t{zu%W{y4l52 zhc20PgKV<+!=E%t*W#p|AWCaw;0Ad{C31Z=#1rgaftaNI1(Op$!xZ^q%$+wdHTn{s zTpfp}-amxu=@}JyubB+Nw9zqmIv~LGzPs>@zXxWtbihm(54Dy`c$O}NI*lHlOGt%! zgzfW{N0MRAhodkz{0GucH=!Z8291OBFt2wSGQJnk5C-~I78x^XWH z-Slb~-5gP(TgHz;Pk0Mn@85ym;1X>0Mqt~Wp8}cJUiKQ@;aNcY(udKV){r1O@?So= zTojiFC`uF~D^#2)M!(A9$w|e#IG!>vthCLP(juKUvvitlG{+hXj7*-vL~|wvzl`z# D+K#Hs literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Ojinaga b/usr/share/zoneinfo/America/Ojinaga new file mode 100644 index 0000000000000000000000000000000000000000..f7e40c08185080d9594d56add6a5c7c5874d0332 GIT binary patch literal 718 zcmWHE%1kq2AP5+NDnJ+nLI`WI1uA0&Vv+wquyost0ua6aQ{Dp*y)7*)0YqK+0hzM0Xj1`ut|t_9{>NPh=$ z87!XjfccicZ-V(&Uxg-s7}nb^g84QZxWIhd-E+ZwyZ$#|zWwZaFyA5n9GLIeGP?mJ z;N-sn%y&+y1@m3>CxQ8{F7aT#8-EFy@2=tq=DYuxC;-&P;K`y4=6l{K2J^k1u!8yC zbC!bD`&^3w^L=aD!F<1Mc3{4LOeUBgFiio>547LUm=7&Ai5nup<2)V}~iXq}CADAEc?<(}3Cxe(*9qpwrECH7 zpWzNh zCT5oZ|Ic_ZFaSv#1`yi^M4mgr!14e8)e8)KKE5Fg0YI#4U~FsvA{n@BfTW!<7XUfW BELZ>l literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/US/Arizona b/usr/share/zoneinfo/America/Phoenix similarity index 100% rename from usr/share/zoneinfo/US/Arizona rename to usr/share/zoneinfo/America/Phoenix diff --git a/usr/share/zoneinfo/America/Port-au-Prince b/usr/share/zoneinfo/America/Port-au-Prince new file mode 100644 index 0000000000000000000000000000000000000000..3e75731baa7c47f2a60ad07733d6f8467ccfbebf GIT binary patch literal 565 zcmWHE%1kq2AP5+NDnJ+nLI`Wo1uA0!V!{7Fkl8LD0HWvQ75)L~my~w90HUQB-#dWm zkM9CNwDiM^V7|=73t+zN!OdX4+{R5{zWl0V>y_w6nf{dgKEJATTQW1?C&OTZ8!~L3hA>C;tktd!18U9T*R749pLf5d`x?LQjDCA-_L^`C+E3!2F0KA3rcM zGZ7E}|KDT4zyKs&7+C)QKYoCb^Z);y8yI+fd_x!l0)T|83lIl~FmM40Qy@pj*I3U; P&p^l5&`{4%&wvX6G;?mv literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Porto_Velho b/usr/share/zoneinfo/America/Porto_Velho new file mode 100644 index 0000000000000000000000000000000000000000..7f8047d9396f92476873c9dbedb4598d9d238046 GIT binary patch literal 394 zcmWHE%1kq2AP5+NDnJ+nLI`V-1uA0(VxIp%Fl|-S3lP17Kl}rj{_D2^MDP6Q5yEoedy!egs;9`9F?d2Fw5AdH`1cYb6_4{`VUZu>7Cy?hPP+%ATC# z0HWn8o`U)E3!D#t_zK2%!F0wm`-?mfsvVs t@&Err>EOaI6Q=b3&=6y0ss#_Fq;4X literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Punta_Arenas b/usr/share/zoneinfo/America/Punta_Arenas new file mode 100644 index 0000000000000000000000000000000000000000..aa839ea7d42eb9822002e66322c4ae195f1644b5 GIT binary patch literal 1218 zcmcJ~ZAep57zglkx4D^fscELBwJgnA)^wWFbY5SUnr|y-O00+iQ;9T5{g6;esPrLA zln4tkA|yhuT1`pu5|vbo95j}Y1Z74MiAC?~?VLaK*-t%}^E~|S^FLg!bzenUELpNR znqY^Ob?Ga$G^U~_K%!OA95&Bpt3J!jW~c3)h0U&pHxJqDCdWlKg#-0)e|-wiJdj2v z*c>da#{PDA9PZsoypH`{`4Q~xA#UvL)1BB4E!g1UaV_i!J%+sF=zHW}ta=N(48_Q~ z>e}E1XENqu+i!t=S8_ZP=|2!s^GaZYtF?%1%J>{uUK|T6v^v(` z-bj34<5N%U6F=xgLM!R!M|j6$4V-+=0jKoL!luezIJLzI^F>btdX1!&55nn&TX05p z2b}4D9yZ4e@H9ruU#sCPzjiolR;Fj~v*+sIoRKPcm$MYk9U{o*^(Vpkk5t$fSQqK_?B64o$rUoW z$Nznlk~Dgj5Zdn%g(M9N#8Z;SMdHmmN4sl+^JSg*=H**S5k1lRczWXKF%Yk0+D!(p EzhvT4*#H0l literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Rankin_Inlet b/usr/share/zoneinfo/America/Rankin_Inlet new file mode 100644 index 0000000000000000000000000000000000000000..6d1d90dede9888571eb09299dbd0b3e7dcfb1cc9 GIT binary patch literal 807 zcmbWwODtSr6bJBc7-n3`R8hvGgEAQ%*PZbi>e-ozMSB&Pw9kd^zWL@;|wr*KI9!c4ujLf*zIU z?vrvJ)ADCfc^!Ufr!%H~6Rc1VczG&Q4=g!RsOzLnSZ~^ZgA6mUz`U^F`vwQ^55ggT zrhWX3Jy`hwhb|1jVLu0G%?v}G@Wb9tIQ&yR{HU!Sj%akikrfU&D$fW%wiw~)q+FSX z82vSD^oxOw=g|r+Vh^t1xUEY#esvd4@b17*#+PAJR~W@vV)rNlLfwhur5I|&y|T`ROG zTzRHw)QT+pUHg~|Tj2_tSs)5}X^UP0k-_QTnCI1~SRb80Y sXjOG$jOl4+A?cFDoGuS@zVa|Pe*zzJ_`+J1DcVKJT4l3|Hc=A(14>JgdH?_b literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Recife b/usr/share/zoneinfo/America/Recife new file mode 100644 index 0000000000000000000000000000000000000000..305abcb8a2217834e8333a2c486ccd389199a334 GIT binary patch literal 484 zcmWHE%1kq2AP5+NDnJ+nLI`V72P$I*VxIp%Fl|-(4iLSA-}3>O{_C&+MDP4)VgRCd z-78T5(YGwtf%&&y{{qu@Bp+@7iQm~736{V6TNEsQZ}vSf|Nh-sVE%&;V=({A^#5S> zUs>b8{BH+R!1CYuk?S~uN6PQ^1t7(f#v^n*De6Mok8|w zp8<%LtGK=ZM9VKQ-2kE$jL$Cs(Ta_kV0k6(6JWk_gaBAx`B8xaNM6R=a|KImuVEF(4@dHMd|NpOE YVBqla4PnqVFaly@1}+;QX=ls@031EO_y7O^ literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Regina b/usr/share/zoneinfo/America/Regina new file mode 100644 index 0000000000000000000000000000000000000000..a3f8217a544ebb0993473bbffaae8e2d723c4ec3 GIT binary patch literal 638 zcmWHE%1kq2AP5+NDnJ+nLI`Uy1uA0$Vu}Ai(Drw-42Yh$WBmjWJ%2ZQ1Bl+5>i+>m zZ!_?C0HU|M8iM&d1hl~XovOlM{>~3PVE%4Cg94Dc-RIwd`Fq|8f%$uPawmYq4;68M z)gMlL4VFI=_zKKFYB3osf6VX&T9aP-`m#?=HKsZ0P`Qr%LMZuW+s98kLtX^{KuXy zVE&UhT`>QtrW%<4%-u@>WX^LTX9f`cLR|;UfAL8b%zypt1DOBj+GQ~R?XgP&OpI6| zGYeK>h+@|N|K~no02;A+0V4~LJ%ND(%;o`;Kr2=+U=Z=~4Po$g0pegF4hQ0Z5C&%; Kn+r&oaRC5Dz-C|o literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Resolute b/usr/share/zoneinfo/America/Resolute new file mode 100644 index 0000000000000000000000000000000000000000..97eb8a9c1fbbf56b8e32a1bea34f68e263e2a9d7 GIT binary patch literal 807 zcmbW#Pb`~Z90%~H+G+PHim|GWV$;;>_4f6z$~Lr(k;u$Sa5F;e;!T*vMcTy0!Iso^ zSR^*PEtae%B8_aT%MKzz#6kQC7g;1*-f>g$dY*3_c5CAI=E?K@{PKNnudlPeS0ph< zMH}p}@x^}fnASA(7!*2N(SV<3qUlP&eWUrW#2jDq2i6Mfu+Fju-!y!KIWh-x@>@9J zU=r4Ehh#!0G4c{l3J2lj&q1~(hWA5o%J>kRI?@KG^|!&dI-GENgA>lEG{LuRCfJx) zA+eCDJBLkinXu`^=x2+p!zgUtID_vj@4?w~yKv6TPuMb?%<3dJFazhc{)6*he3x0c zTeb<`Yy1Egq%XkM!T@Z&*zmK3jq8SO`}1(&u@}Do;~i|@d@iwG(ex{rpZCDUqaCm? zSpYlwhFOh>gF3jRz8x-YIfl!uF1TD=g)6jX*qQZPX2E%M0ar#>VArn$xN7GMT>bUj z&lV4sUc(RH?8A?yB)DcE0@sdBNUT@)-W3bor6!xAjk~r0MKlOhv)mOi+ vqJ%>#jiStcBs!LfzDN*=+v6kdXFlSkhohmKF6>PuyvPgoCWnJ}@B()U;8v1r literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Rio_Branco b/usr/share/zoneinfo/America/Rio_Branco new file mode 100644 index 0000000000000000000000000000000000000000..fb5185ca60283bd56f795e9a956274c0b6e63325 GIT binary patch literal 418 zcmWHE%1kq2AP5+NDnJ+nLI`V-2P$I$VxIp%Fl|-a1Q5N0KaBxQ|BX2SqIZ4_2msN$ z?oDt2(YGv4f%&)Ih=J)ll7BCN#P94Z1H~SZufB)__F#kb_KbZezhBR3H zSJo;p|J#8Eu>5yEs{7CynFoMwXOKO) zDgZ>wReU}GqU9F^UI5Vw#;*^6XvM}>u)GrY6ENQ+p&rZ+s%JUC#E1tnGyVU6pn!ql l|Nr9$7+HV;v4MdD#Aaae@eN_nH825UQwA;@AZcgH1pwW1w6g#J literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Santarem b/usr/share/zoneinfo/America/Santarem new file mode 100644 index 0000000000000000000000000000000000000000..f81d144206ac5bd2029d59beac0bb82801ebe67a GIT binary patch literal 409 zcmWHE%1kq2AP5+NDnJ+nLI`V-11e(yVxIp%Fl|+p2Z-LmAN~PM|MlAdqIZ6Dasbi0 z?ll>J=vx+h!2DZpIKcEB$@d39;&*nYgXQo3RtAgToBamNzkhcHnExQe5zPNGgBPs+ zD{Bsz|Ls5#SpGYo&IXV{w_u1wUu^oxv)nZLRG`0wkg7?ZHPPX8fpsyL2um`9VX52~Hq)eWG^T%m z47RWyge_jr!j_8;@QPsrY&G>2wr>BVpvQ>K&^Rn>7=u?{9)N92dtkd0MuCnI`-EnA zRdFBe;8O!TZodexwr}FuoRjwv*lDgBb}`R`T@1Tn*O_S8ty>MRd9LROE%$S7ut%2$ zUR(JaUe_px9C>;aj%uHUHRYXfbb|rrG9L5v7>OzE zg=3XB;B5)#;W&pgur{cNqhmz-r4o*}Z-(P%#R~R3VXg*F9ISwM7_#A{euDYr?g%*L zfd%r^^m>8NO1spFJUw;--dT4R-sSs^V|j+Y3f5V_g0sSAa6YT+qrmbU=ZA1k<1;vS zz60Jhj@&vZe2TpNfME6PLdKB9Af=e?;dcN z6qp9)TmIhj0Hn`K^I-xbGZQll9I`UA{{O$Pf`I`@CNQx4|9|`dBj^ABJ2x=!{{Meq m2csZJghAZLH-sVB1xUEM0C8{#gRX&zu>pf4ki`WgOt=8q(o)<2 literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Sao_Paulo b/usr/share/zoneinfo/America/Sao_Paulo new file mode 100644 index 0000000000000000000000000000000000000000..a16da2c4d5a980cd944d86c34ea8a2f597e39b71 GIT binary patch literal 952 zcmcJ}-%C?r9LMozR#LOHE+Q(_$A-vi+G%I$EHi7^Ty56!U~@(Y)zG>qqNpwcqmn=< z?3Z9S4_$vgW7q3dYIPf`F{QZuX@JWm)GV zJT?TE6y;&R%PaZ(ta7>bTCra-`xg7&z8mP3lWFuFw_WHvhb{D~Gr91t!7lXb z`XBJ_uD@_i*(kiH!-V&)`_7p>zVK_J#-c2c1k=9Plx;p2X|fo+5}pA*(TdpY$+ zM-JRLvH^}{O~aAi1-NM{0Y`5daI?{(%h%Y^);Q0y{kM;0jRhIAtaQq@)UrOjW6Ogf Rjg=~H`KZiZCBLgx`#+zs5jOw; literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Scoresbysund b/usr/share/zoneinfo/America/Scoresbysund new file mode 100644 index 0000000000000000000000000000000000000000..fc1b11cbe876cabb53fc1d42db25b0aabd967fc0 GIT binary patch literal 984 zcmcJ}|4S2b9LMoH=V%OnxH5IMnblm=yv@69n%XwC8 zKg5U&Mi3S)ihc-NzpVN}?F$hkn!m(|$|x8WeIW{yijeC*ul)i3)aUrzi8+RHa-N`^$o!Ff&|U(4p_}LLW{`? zH*1WgC+FUu@_+%NZ%l?M!^-s{2dIjwx)3E-?1mvQ(ARm6okhzYb zEOdItp{wTtY^b~p8y&|AE)K&cV@f9Xn%?xIoBtj~w@mubn_maf?i&&48E=8!GwrZ- z)CAjNX4pQ`%#e9o{93dxYD90fd_;Hn7SVp~6gpsjiw=DI0Jmu#6`Xwvx96|H9hsX@ zn0X+R`Qo`Gx^wI*dS@bm?n<6Uckek1d*Xv|*QPj>gaGWV=!Co3+Je707%cNMWPb3) z3iRHE8g%IHPxQW=9^IE-4#U~6aR2Z;jHG7afk+PapZF}3c?VnXp$Eb<=xEhN^q?n$ zj_K~mbP-*w`5#Y_qI@|-QHqj(M-?l|kMFdOyeS>|GrB|&CCbJ*)Xh_M97pNhYIz;% VoATNtL@*F-n{XgVtt$P3f literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Sitka b/usr/share/zoneinfo/America/Sitka new file mode 100644 index 0000000000000000000000000000000000000000..36681ed78eaf0b46f8d142884cf7ae8903a18907 GIT binary patch literal 956 zcmb8t%TE(g6bA6yQaYWXYL%k3fQ|)PT56fL7N{>Q6p3PEO{)fXBt(M?t&$jx(O5N6 z5+6g{*bvRILKB6FE|i#vVPhg{VqF+xd~Q_Y!uZ+{81MQ10EuUE?zz8vzsYPSyQgn& zgw0zfo}i}6&i_h=$3)&9gIDY1>kC5P%&I=A%rG@7M5B-ok|VL|x@3m4mA(eWG>Z%@cP&ZO@;T=roM z_x9J%9CW_m(IC8Vd<sSp2psJ^4X?>K;h3)%Zi@VYn}yAAOI5kdc(r`4hvPH9;kAz? zc-@;<@Os^=Q*Oh9ad@L@gIkA&;7tdo;l$Z{8jrEI?N8zM-U6I#9ECfQ$Kj5j9~G0i z#9}V}*JHH_|MxIf9AV5b@;+KGpJEonxTczHSnXK(Z=TOFC*7J{*jH~$Wm!7IdpGYi i?_`#Bb0@m^Ceg)r60LD^Fcl3&LP{_d4u`@aMfwXhr^v7X literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/St_Johns b/usr/share/zoneinfo/America/St_Johns new file mode 100644 index 0000000000000000000000000000000000000000..94d790baaccb72298bb577041cf3c8400339a7da GIT binary patch literal 1878 zcmbW%e^AqP7zgl;A7duvm!mrvpsq3BxPM+Q2^!F4fX{}t+DbGN?phBZp!+T zdu^15WS(rw!v`a`QGQds05@pn;cwMr@R9Ay(0^3k1ve(&gY~h8;qO+A!c9KaaMOJg zd~CcJZoaI8zrV1jm%d{#Rlz?rtKpU-+HF)nUXu>De)s|WW2pc>QCtL{RPx}qbUAEH zn1tK;e7Iw&e>UCI8JKEAx^KciO~t~dp$o8Ct9+Zz&3&9k%2Ou{5tLmVN1#ke9r5*fa*QbLvYWv18^^^4IYSbmDBk^ zq1{3`xL0nayqM*!pd5OW4-dy*hc79(u+{%8JQC-GM<(>}Xt1A(=0*q3SSW2{8u+rl z6z5~+t?=*ra^Wjl8GN-w3}35^g8#@2g~wlAfUgVOustKfO84Ff3ARu=_;avhdIolK zY_PL`2)=1I!;>v-@SolF@L#9Q3YwoXm{gRvboKCbtq#8Z{vLRytO|C$riR_QJK)(( z>F}MzH2AKd$U^tr3yg#3xN>;z?q)01=N)`_!MX~*Z{flZjDE1^sMA8fGuG!5Rtok< zy|7osdDy#rLP2$(LWhddH}5>mN$G+8M9nZa`WWmVR15Q1pTfLb@4}Bfq>|eJ<*MvZ_c;x$>nJIOeVLi{#jK zpTVoL3dhO(@SSkn>Qp%H!F~gi61Wuc&a8X~z8X@L0 z1`FWKB|&gz>qa=ZvX%Q literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Swift_Current b/usr/share/zoneinfo/America/Swift_Current new file mode 100644 index 0000000000000000000000000000000000000000..bdbb494487de8aeb624c950e470ebba223d16961 GIT binary patch literal 368 zcmWHE%1kq2AP5+NDnJ+nLI`US2P$I&Vu}Ai(Drv4n4Y&|{R9wy{%-aL5PiCn2h6{u z{G|ZIzmzD!0HQCKF$#d_E5Z3-{?*XOVE#3QJ7E5G)1zSi4TgPS{!P*4VE)Yq3&8vr z>N;TlOL2ZM|MjyEVE&tHm%;qE$1Z{S?N={&6WMXCk z5~z^%|NmJp7=W5qFJNT(|9|cT1`aTr2TTGDUA=%o#K$*;!Pf6Bn2m!SMh8bv6tP|NrmYz{v9d|LO${96r7w49+e<92~;H1tiS4 E0FH_xivR!s literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Thule b/usr/share/zoneinfo/America/Thule new file mode 100644 index 0000000000000000000000000000000000000000..f38dc56bf20d9db68515ea7602c9edb39fabae8d GIT binary patch literal 455 zcmWHE%1kq2AP5+NDnJ+nLI`V70xDw$VxIp%FuS4r4@jT-*Qy5~TH|T#1rV)yHRb_` z);ekr=4`RRwrGJ>70AjS=o!N#-?M|PKI4bgct@*Jm+F+Y4Vf9DaX)T*>b%w6n6UnnIqdk6PEPZK-d7`rezN_U3^F3u6^XI9)5VKVA z9p}=}1LPZR8+y~>arEYbO(N@k^c+Ucw^t)S8SKafx0hq*iNZt3q~5raX&W+?lfROZ z3i)|q3Hc@d1GzXQA-{%aIQGBSe~3j`=FYr;^PYs^{QEJuAUevkb8aXMZ@4PLg+1MH zQP(-Rxa|n6@(6HAeH~nCsD;(#0g=$Pah)30$Q`gIZI7_IcCHjIlS<%CPk+LjS92gw}{b8G;S(U&58C z6L8gJ95%iVimX>XJP4b{j>9#<3$S^x5w@Hh;AxFmyLGV5eIB+4vSEk56|S`=;kq0r z>@3UT=wrm0(7^S-6Y!3yKk&}kXYj5&>IkiohKD2Y?*3o!p6h+^-ZSsueOIC)>oxi( z;r$)gU{_59KHxeHA1t^GyLEopy?m1=ba@mO*fZS=d*_SbriPJ_OfHkJkt?$3<^TWW znan^lq2Is_kti~m{t#Kq?q#{S(sz~K7dQI^;tL3*g>4tzN9k@6h>{MRbYS$^OjeWG M=(AW%7L!@|586{C1^@s6 literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Toronto b/usr/share/zoneinfo/America/Toronto new file mode 100644 index 0000000000000000000000000000000000000000..668e70d765dc3fb0eda16fb0f1932af607b53412 GIT binary patch literal 1717 zcmb`{|5Fro9LMnm5$Qky5i`X?O^-vkJ0Sc57Nj6yU05BHTItph4D|y$R){l(eIbcv z8YZEfvcXUkQ0oLegCM>r5lu6x;8#LijK~mh#jk-L?dRDa;5gI!=CiMReD?L(`{~xc zCNn)!y63p*4Y9=7?|o#yUK_8kDP#JqAIcdJSyEG^h}`kRWm)7m`Q|o}rC(LWi`-f4 zsfpZ`T8YcHyn=U!fJ!V)-mwF<`}egMLxO{@znI`upze!~2~U{B75# z_`A>jv7;I)Z%KeUadNt8M8Gjz1N^QlbgB$Ug=n8yRD#hmlKf#?* zTV-*s(^amB>Q}=Eh+P@IbZ^*}C z9d=o-N#P}#*nDsSw&XsItwqytL`H@tdXei#a8yz}Pdf|odk6w!OU?mhfO;c*6{=d6pW6okp(%)B2ZXWtu@_^*UcOR~P&)DozVuHS2 f(ASIlT4|RII->Q>Fk6&4(rgX0MMRh*%vQs{dz=-7 literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Vancouver b/usr/share/zoneinfo/America/Vancouver new file mode 100644 index 0000000000000000000000000000000000000000..c998491112ea5e4430b8266498cf7f23e1266bc5 GIT binary patch literal 1330 zcmc)H>oZhw7zgm<&LSsSB-II7i`K6DC5aemGRRVTp){q@OoNo_jhHl(>EcMu)HH1; zy~)(LjA=$AhBv0B)Y$D}(Iyo;i(Jb!r{C}U4|v&g<~h&#JoEki-W>Jeg8X1+%`zhi z+O*VbAE_WQE7C3^sodDoaXK}v?E;+-+oU|5Z>l_Ct@m6JwKmU}rBhex#L@X7-WL9t zH4T5_Oz`J09o)yfh4s?suzsik?qBT{==p(89v(Ebz+dX0@pNzKxC4K!x(N?y&cojd zis0e09Qb?60r*F54E$3b3Xdco;^;l2&KWG7Mp-m$oC$$VHlDCaD}~2KR^jpHd3d6G z2>w;0hbJ3X1bWX@aT`2cZGdMkb@6mRTi6ND9eE7@POF3e#9e{sgDT+#zdD>>bjpX9 zY%AfVh07ehXW5t!uk@XO|GwG_ueK(`;uC+C{$J*f)r8|64`%Z^oS(^uUs-CfI(c5q8k`unZ~3&Kh{#i$>U~zJa5A_FfIV zzKVyPFP6X?3eLbTIa#nYMGd<~MZj+IaM;}|lV?b6v~!0&%)?-hnNWf5Hx0YNo?2IU zbJrrgrFj9~`e*>=N&`3&XSP+e!(Q2ru=lBcmhOGRCgJV-Uc$c8URdU@fn}=`0*Ntl zNjWSxyodcw$KZgDW;jq+#?#ymO)acwISL1ror9IN39#zqEsn&P;1VA=B>5~HnrRJ( z$+F?_U?Uu16A4FpTCwC96FKSuM=g)S(cLR>%)o1SXOp`?VoYq?Q+QYP5*&B`2E4m) z5RR{`=V>k>tpnb3{2H7XB*00Dr{Sbo9cON4ZedAY|LqaQ>$e$36d&+rmZDf)&e-DH o0dIDHs+vhpB%Mk6An9~9BO!<+%fQqSMX*8{n5t4KR0^f!AM7IBd;kCd literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Whitehorse b/usr/share/zoneinfo/America/Whitehorse new file mode 100644 index 0000000000000000000000000000000000000000..40baa9aba2a879f7a38a5a0f67e16e7a2d677a5e GIT binary patch literal 1029 zcmb``+e?#S90%}c%R>%@K_2GX?Df=~rmMBNdFW)5G23*t*VSxxViZb|bXYef6Go5` zj-D^(Lp;cM)!Uz6v+Zzkr)3RT9t~)p2-Dls!d&2i4yw}nZhxZ1q!#0Bix7yCYtv`|i)tJ3@5by2DY1ol>8g|4+ z;I^f9c;9GDqB?WF?Ztc7mB?8Q>`Nu#u6rr?@WM3g4}XBW<0J5qz%%%0)c;K`qiGVK=v2=PUB+H<4AEO&O=VGV7#8^a@&(EwFXD#1ZsnaDgpN+;tbCAZ(O&4yua8tS{ J6|`9t{{Yyp^R)l~ literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Winnipeg b/usr/share/zoneinfo/America/Winnipeg new file mode 100644 index 0000000000000000000000000000000000000000..7e646d18e18851bfde743b379e52df4ec5b5a20f GIT binary patch literal 1294 zcmciBZ!FYt0LSs~`O}?4B&X{LQQZ!myYnZ1OJT+`;uO_dnv$NlRLleVwQTVyQY*W4 z(LBi7!mRn%q?p;t8W*|fx+IxDC2aZEUBB<=*K^PM-oC%r_x=6-dGg(rRSorZZ6vxUrEG!rn{qRH z$afj{hqCRkuP?ty=>7NUXVJqM!{`z30rZEER`e)oL>ojkXoIN=Jx2KGvHsKOapQf4 ze(zI5rG{$kDn@^5NvPk#h7xA{ZM6AyZPggkHryjx~yRrC{DUzRX*VUukSZBsYkmY8|SR~Vtd`yI4% z?uJ6r%(?Iw+MBAOgW)Bi!?F7sdTV^#BFR5cN@5z1}`BnQb= Oaz#M0QYlx;6~e!?Qp8jM literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/America/Yakutat b/usr/share/zoneinfo/America/Yakutat new file mode 100644 index 0000000000000000000000000000000000000000..773feba89d36ffab4baf105b8f0ae69584a74014 GIT binary patch literal 946 zcmb8u%TE(g6bA6yQabI3TBQgrh$D}dLLH_9rL8Y4v>L@mNJkCsszieetuZkgqoHb| zB)$?i5)v48n5dcPLWu%~jftp%2VeflxmQ-^SoYA4YLs z@OoNeycRzigqMtr!b@*F#JsC-5MI_h053n0gA2QRV0Y&}xM=HMcttD;7Y7n>Nkv9y zygW`H?6tPS-a5C7&b{AT49e0^)jDO_R295(LV(Nf*x^+}Ut#H3Org2exkmlt(D#?}lB!SdZh zaQ*4CuyU;(4js@Hnp2OeaKn}}aAVpHhy7h}llmKu2%F((S)s&uML*ZTvDshn+Q%Zi zZu%9x-tZYTx8cDEyz#07Ztm}gHyxgVEd3s93Cd zHf#Prmtg;>3e*xk7GY)@&dGtGN9?{?k^jm6ur a@l!G0meykAV5&h@WhIyjh2)T|h<^cFp~tQO literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Anchorage b/usr/share/zoneinfo/Anchorage deleted file mode 120000 index cafb24b4f..000000000 --- a/usr/share/zoneinfo/Anchorage +++ /dev/null @@ -1 +0,0 @@ -US/Alaska \ No newline at end of file diff --git a/usr/share/zoneinfo/Antarctica/Casey b/usr/share/zoneinfo/Antarctica/Casey new file mode 100644 index 0000000000000000000000000000000000000000..84f1c61e5c7c35090fd2e628e307cff72389fb02 GIT binary patch literal 287 zcmWHE%1kq2AP5+NDnJ+nLI`US1S(?&VxIp%@K5ec1CY(&b&E{_M0@w2`T(N+R?blX z(f-b7CxGY(F6#ym9kqmC07OUc6mbC2F}<=4AUbxMs{x3POFjys7~(4y*nsE+pX~u4 zIx(UN%umvp3FaqTq=5M;92*%Jnb06e0|*o}Ft9K%%-X=fp=)5kplx8mplxW#z-0qu J+38wv0RS#AC%FIs literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Antarctica/Davis b/usr/share/zoneinfo/Antarctica/Davis new file mode 100644 index 0000000000000000000000000000000000000000..3ec32224f2982db46a19d1a159f9017286fd1413 GIT binary patch literal 197 zcmWHE%1kq2AP5+NDnJ+nLI`VN2P$I*VxIp%@O+K~1Bm|SeqR7Y|8rjrGKRtHmWTm} z_MZOB0Yv+)Tm|O)JAXgG$iT=1gdkxMNGf1pVPJ3zVBpX-FksL&Fb85&1}+;Q%TCvv F3jndjA(sFE literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Antarctica/Macquarie b/usr/share/zoneinfo/Antarctica/Macquarie new file mode 100644 index 0000000000000000000000000000000000000000..99a8e60edffca85f5caf8eda9d05d85a4978e665 GIT binary patch literal 976 zcmcK1-Ahw(9LMqR*&O1W+7r{%t+aA#dpJjJ&eWOa%m+q6L(=jADsvY>7by}o4p^QW zy(uBdKr6W(_M4Q66TKlI7$<7pRqT$$?RUNLo}H|K}oRx||Ti!E@w zcT(naJCSmJJW=y~nGqBVL%OQxP=BLL=1oFMHrjA53vF2Uz(iME^J6AVO8chyatj*& z%)#WbgT!O{^cALrHeu@PS(w)T1@0Mn3ious zT#h!+5Wyl=l_byyeW7;f-YQIKp&sFg|<(G(T?FuXy=fEcHQ)%#p^+| z)Yb}%ng?*dxUvFW;_gPDuvpPbbv}bW>oBY{G~xR*i7zxawD(&7{Q}(1A=F}UH||9 literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Antarctica/Mawson b/usr/share/zoneinfo/Antarctica/Mawson new file mode 100644 index 0000000000000000000000000000000000000000..05e4c6c5867330a5af95cd6816ade311a0cac82d GIT binary patch literal 152 zcmWHE%1kq2AP5+NDnJ+nLI`VN0xDw$VxIp%@JPX^0mx?Xx~1g62$BJVkOT%61_rkP Y1`b^V0|spaGaxo);IaXdcDklq0BGzFF8}}l literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Antarctica/Palmer b/usr/share/zoneinfo/Antarctica/Palmer new file mode 100644 index 0000000000000000000000000000000000000000..32c1941634aec9e7721fcf8e9b323e7d99c7f337 GIT binary patch literal 887 zcmbWvOGs2<6bJA#B3}y!kpCI+ zBmdj)g!NvBBL7WsgS9G8b8hG^&+Q@%r^dEu?9|8!I4xQMr%$-xjCain=R0ns!#l^_ z@UD(EIP+Q-oOLlq@ZRo_5za1Ig>&k^z`1E3;XD^yE<8Ij6br~+W-3}i-bs83zt|}y}(Bp$`t!=Qqd{*$iL#czE36*eB z;v`%gJA-`}CBd#YX5=MbEgH!x9sUL%dX)&5^}L14AI!t<_A$7kI|3_#*Q$I*htEEO zJ@ygUTYU?zOzDGtg%1_EM!ugNaMiY(aMip~@O|}p9aNQ(f|HwoseDq}; z^7@7@jbt6`A4A^YnS+mCxDNX*OA6vx-&CjK*#u1{%X()F452D7ez{$$w7XEIxbAggf5w#&9re3?AC?eYHrq*~Sw literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Antarctica/Rothera b/usr/share/zoneinfo/Antarctica/Rothera new file mode 100644 index 0000000000000000000000000000000000000000..ea49c00b2240fbd608425793b225d6e10a58ddef GIT binary patch literal 132 zcmWHE%1kq2AP5+NDnJ+nLI`UCDP;m;4v>0YCS91`|NpOEU|`WTFksL%FlOMg0g`sc FTmZ^O3BCXT literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Antarctica/Troll b/usr/share/zoneinfo/Antarctica/Troll new file mode 100644 index 0000000000000000000000000000000000000000..2359c44bd00ed44d2cdbf4f0aa0d9cea507814ed GIT binary patch literal 158 zcmWHE%1kq2AP5+NDnJ+nLI`UCDP;m;4v=~$UU#@&5T8ZYz<@y;h`DTlq@4kfG_un* V((yIcGu1QDH`MVpGyt=Vxd40b3zz@^ literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Antarctica/Vostok b/usr/share/zoneinfo/Antarctica/Vostok new file mode 100644 index 0000000000000000000000000000000000000000..4ce8f74784e970731f5f44b84f73780087890fa5 GIT binary patch literal 170 zcmWHE%1kq2AP5+NDnJ+nLI`VN0V-n#VxIp%@G_#a0mx?1^|cfL(Ry23K@>x3y{iEu m10xfd10<3P7=ZfR0vI@S4Gb8x4a|Yql!40zNZRR|asdFaJQ3vp literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Almaty b/usr/share/zoneinfo/Asia/Almaty new file mode 100644 index 0000000000000000000000000000000000000000..02f047d70fc811f8cc17f2c08ddc1f328576fb94 GIT binary patch literal 618 zcmWHE%1kq2AP5+NDnJ+nLI`Uy0V-n!VuAlauu8J}4v5~m_`Ly0zo>fc0uU`Gu}J_# zi*syL0MkF8P5{voFP|&`(UP|%!SYgPGQoW5J!J<#;xcQ}!L;n02rwaOUl5sK}tH9HjJHgfB^`MigLlU zv26*MHVN_v)26avVA{;c5JLa80Mi!Iehv&kU~yLp%(wh)0Onim`2*%#-xdP%ZI(%b zY1>_2z_eZKZ!m2?>l&DLNWBZD9h*NLU;u*D2gei`nVGOa7VN?hrNCt1p#swH7Qn#5 oz>rkH$N@|f2@E_Sl99*9H-tgkz!Zqhf!K_J%Ld4^(>3J+0Kt`S8UO$Q literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Amman b/usr/share/zoneinfo/Asia/Amman new file mode 100644 index 0000000000000000000000000000000000000000..a3f9dff57148554c4207d71df64851aee2b28b19 GIT binary patch literal 928 zcmcK3-%C?r9LMozm6>O=HWBnf&E>4+)XmMD<+7H}pIaN-Y3kH@bW_L+gSEhZ5oPoT z%!oil^2dctLA1K*_wJS#g;p13_8@^EN#I4GAnSQP`vbi4JI;CSz3+KAR}+0#`;27I zk+CQE#Yf!xNDF)H5W7?fHZLc>edgy5hi+1Csv_#*9?_U3xVehGkkU_i3!gHum#_at zE56^rK0RI_u{Ajw`G`I?oq|?|X3#maU(vZ^Y3RJjF8cTb>SD)8e&`ok-4jEfaDPA- zG$-G$3BE=b>fYo0N%J-IDfu{BE5A+&8|_*X&Y%AM7W<;bKJ0a`da*B#HlRyJ>d~cx zFVOmjK|F70ox<;B!8)|j8iS@&Sf^R3~e8{?F)sa(4Q&n~}{c%O^; z(Nzo2(3Xh^JU=`HtB1ny!c!-_81O>tz&}dZT(XB?jU@nUi$!R&>S3Lt0@kZlN&jTS zMxj(9Y#JAL&`ldkbaQkCZI5rE9gnx+<>@cb8U6v?3w{@2<0&6Qi|*%?_m#~1Xs_`J z+PganTQdfe{=5g{|SzyO#4eXrHgZ{gPuxq4BB5b72RLbqXohxyBvJ#XV x@Fk=JviNxI!35}VD#Zz9ndOhmA-dv%FP_z%)`uonOT literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Anadyr b/usr/share/zoneinfo/Asia/Anadyr new file mode 100644 index 0000000000000000000000000000000000000000..551884d322bcd2201b4b9898ec765141277e6eee GIT binary patch literal 743 zcmWHE%1kq2AP5+NDnJ+nLI`Vd04ie#Vv+wquu4*P4v5~mxaR;+j6qag+5kk0N%$`S z(c&C_8^H9>iC}SwmlGU7e92o!z~WM8M8SONJxU26ahWy3U|Mz#3z(Mc{tBk$tDk{s zh3xBKS~2jRk{aEt8v$YX?2zr4;X+z{mV=+t?^{W2M}Mg z!T~~GsRoN{9mxUH+FN45w9XPgFs(bq9!%@C7=UU05=Ag=kRk-84P)&R7=Xa2ND@pN z+bV!*lfd6#+EkVaOq&_rh0uSVfN2Yz{tVCux)-U=Z-}4PnqWGy-B1AT|bK PLk2DzpopEWp%E7VnShFz literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Aqtau b/usr/share/zoneinfo/Asia/Aqtau new file mode 100644 index 0000000000000000000000000000000000000000..3a40d1175a7d81d8a307d0e546a1fe9a40888b29 GIT binary patch literal 606 zcmWHE%1kq2AP5+NDnJ+nLI`UCnaBpj0{?+vmE@EMAbRWKzYah#1~G|q1|V9TW1|9? z{`q+Uh?aQyX#;4yNU6JixRFW`X}y-oU|PRq5?G%>N;8-?j9vGD0SJtWI>EHD?F2Aw z5|j<5O=XL~w3(4Fg#H@>rY)qi5*UEM;;tE(Z~5B?%(vPr0p?rZ)&uixmYITS+uZ_S z+OAC;Oxw@;1g0HQe}ZYp7QP3JOw24y=#Z5WBE-mw37Hre^c5I@z`}ung@M5>fPn*; l0umT_KqMoObPHhQ@bL{{&^9muVpAYCW8ks@vg~wCxd8kpZUg`T literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Aqtobe b/usr/share/zoneinfo/Asia/Aqtobe new file mode 100644 index 0000000000000000000000000000000000000000..62c5840a83e29b4fcedba95e438581cec96b3cf6 GIT binary patch literal 615 zcmWHE%1kq2AP5+NDnJ+nLI`Uy1}b9%VuAlauu8Ho14M6K{MP{}#vrQRy#YjvNgPlB z(c&B%A@tAB3qX8{m!H7$lDE~t;!;4yNU6JixR< zjwP5@jL`zqNFW`X}y-oU|PSV1xy>Hl!9r)*aa6r<{1@LgK1;i zCNOOh6bq(JWmCYknUOt&{_6&&Eu>=tK>951YJmBczwN+$tG!%czV&SdFyCgGI+(WI z%><_H+Bm_q{j4Wo+9CBdn09PoxWLH7%)-os4q1W1I3WXr=?t(l92i&_7~BFFIDknZ kfsqG9G5|@p07ecU-w+0E0}~)N1!6M>E*l`rPS=zR0Ohl6^Z)<= literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Ashgabat b/usr/share/zoneinfo/Asia/Ashgabat new file mode 100644 index 0000000000000000000000000000000000000000..8482167269080ead3a6046ae5e64b56d48dac1dd GIT binary patch literal 375 zcmWHE%1kq2AP5+NDnJ+nLI`V-1S(?%VuAlauu8Jm1w?OM{MP{}#vrQRy#YjvNgPlB z(c&EY4Z!rz&kI1b#LG`$dCA-A3Lw7JnQ|~+dQZy*5MO3ZDVUa>lLn^cdcwi9e2oW~ zR>-jg(~2=#U|PvX8cZwO@PKI*?Z04JRr(#6R^z@8rqx-w13>1hfB6HZHJrBL9J4mE`0A5WRH?cK}Ggn8Y~)5G~HJQ2|W< z{Ja1}OT7HF0YppQR#yPgQfJD+eCa(c7eIWOHKkx$c1{|Ymg@-z)ABVQU|J!^5=<+` zXn|=ZA89bHY{LVlRkZ(tX;tZWU|Nm)KA2W#g}6)o%bx&{JsMAbCxB?pip3E6$~~~S z){*mIT6@a@Fs-v>Bbe5mvItD;wM+)n`Xw!3+90JAOdG~7xBxQGsHhrD8{0O4X_KH> zFl{QE0;bK3>>>1DH!y7>odvev;;z{PkbcYGK48ApUI{SY`nDdJZ?nu4Oxx}j0MmAD z;$Yf-)+aFSkopr$JGSsWU}R!uVM2$jY-mEPY;efLz+kX}0SL4V7+4q>+yWRlfGHq> qfd@n~0!g<3Mxcm=1A~B%ZwQ07fiV!902``6pQ1;;9XoZ+Wc_%(pt052mfRZvu}W9GF=if^@8r`Drk!msg2i2Q4}ob{c~-Ev8{aoD?apA)z{tc*1_XxL r5|9y^3qY~1Wx&9}z+mCP$m8Q1!r%nN+6KlzY{I~017z9h8gl^v?<_~*^Jkf1m?@zh5L!aqmRA1cAc`Es*+Gan z8Rg(OE9Kx%N=b@vlJX~hzmMz6_v!b%p7-zhJ(tJbG0>+c{|-k_u*Jsx|0gzjOh8xs z51kF!ay9eeO6+3aC#Y7AnTgV{jwy*gwZac>hbes|$4uF^3Gb6a(`fnO;w{@x-kgMr zwK147*9%kq9+>8{!}Lxw%y6oq(vk!-wIY}$|AN_~XQ&d$yo8SGO$c-DV}@C)&p%-9 z$rCK-x{PQ0`q6!8DBEI5j4iX!q*#E3`oTZHN1$0g6JQVKn^tu3XFs~+$b>GvcAzcm z&9E$}h2=8_Sg{%ht$hiwa!Nzk*lOOa0t2P1P&9RuDwnm1k)C%LT0C?fn@( zfR4LmSiijnouS9Jizgy zB3yiqA7MAr$tWHn`G;F@{+f?L0kr@Gtpqa^q!0jAim6+NH8rs#|uo$^;m;x`5GNC zt&k%NrWIrOz_gP0e=x0V{Q*p?Xg>tgs?wLhv>NweFs;t=-T-92`j-b_TI0!m2M}Mg zq8&nCIRqBhI?eA55FdhJk4_BSQ%N*8)siNc%Z30D;9_DKOviw*i=MwdW6*Z+%+` z%(q!438rm#eF4*Ut-ryv{j6(X+9CBWn09RbbbtW}oLu*V`Oe8#z19jT{J7&RoYEW^VX=*WQJTkE9sG%I8GKs%0X}{8qaQb{gX5oOa6*2E z{X~pI|23I}PX>MPsmL_=ZMOuRzB)qxebE&a-bN(H0~}4MaRHp&Cgv&UKxb)M)Q(yM92Uf<0;8p%8 z_RE9Y@D)BWeC19EzG}V!zWTrfukO7EYsLrRwT)@?YnpDrx>7Z~UKK}Q|J4I;AX8vN zI1g+LgwZ!0UZZdJU4boYTj07mFPIsb2V46uv2Sy4V&C4p0j@XCf*q7P$0fM|)APZoe^$=i}(d8sp*V7~O8vI8J-nKkKPT6RtZn3n7D1k>_0R$y8o zM;lBl#>jwaB_Ccet!(`dOsi^GRN*OCe5>$lwn^9@qG!FkH;vNQZiWLEFF-h|Pi6jDgDrNZRR|aRC5N?`;DB literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Chita b/usr/share/zoneinfo/Asia/Chita new file mode 100644 index 0000000000000000000000000000000000000000..9d49cd35cd5e52c5ff0f2c0cc6bd3f4f6e856915 GIT binary patch literal 750 zcmajXNhpM29LMqJHG>K1y;#RGmN6L17)vu4+h8&?A|^sgS+XUGP?EA9Ce4AA97eX1 zTr3CNP)N#h!ai<|e%S zx3K1KKJ4Vy!XaH}K8o^A($|0dj`Wj^y}*y%I@14f2mb@EpYEswPqWd|J+qBEXiW!$ z=MrFuH57&p@KDyy!LXWF7;bXFh>R;3sXT;o={Ah=T!9MlB~SAeZwD~?eqTl%)7R$o zY8l^S4`!fpa{|UK_QUw8R+unS0~5Q=P}QJ=Nwv*3ny2p4!(^Qirj*HHYH%D(Q@cC; z@`f5|Bv1D=w=ZbzryDwb?*g51{eaF~dWO246PPu64zp+1U{2!(%pE?m(Y(BZX|%q6 z6`e2dMHlF;=t9>jv>~DcZFuT|MWRxtXO+c$!~4DMedM$CRw%{Y=J* zT>f~(e}Ddc)Rhx4)>=o?I)|8;F{_=EFg9poUbJ(PPu>d literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Choibalsan b/usr/share/zoneinfo/Asia/Choibalsan new file mode 100644 index 0000000000000000000000000000000000000000..0a948c2eaca30cde2963c330144215ba52d67c5e GIT binary patch literal 619 zcma*fyGw#$6vy#nX+#QH6m+wzW@TPdD@*OB(NH$og(66iAZ&OCx1t;*s2m)eqQb$b zq|vc4$f2#KXmH5FrG#p(=luSGIuD2M`+?_q{VSUrR{C>f;s!5||L-R@ajimZ-H(|4 zhqoSnSFLdjQ;DQ#O--G%yWAm58%GrE!dC^!~N-b*qHRerkDjb zN6fG#R0|KR%}FH2>NBr%ZEh26H`c&|8Z|tm`h-V|=Lx>&%$`NLuJkGFPDbIe*d9C{ z3BnVh06gjU!c$%k?6G&lUabzE)_90#<|9+$F4P~VxQmK_gnsY9O9hW4E0dT1|CA}j xAqp?^Z-NrZiKHl16742PMHElT)ch?|&H4OfundcJh#eurfQ71DLSsfp)h})}XzBm} literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Colombo b/usr/share/zoneinfo/Asia/Colombo new file mode 100644 index 0000000000000000000000000000000000000000..3eeb1b72b68993e26a2452afe98a6420ac66bafb GIT binary patch literal 247 zcmWHE%1kq2AP5+NDnJ+nLI`W&04ie#Vu}Ai5Vmcm3W#o>yH^H8pN^8z0MTcrYA*oM zmr5HfK;{}QW6%K6MuiLtAlk+Ll?EddGYbNQNXZ@cHq}E%90%}cQ`6?Wjik(&D_xpvI_H{|b6UEVHfwE1@$Qz8nFyA?$kd!~yipX` zi^w#}bXr7YM39Ui%CHC}sGt!{NxINw&KtALp6B}y__E(P=XXBm`#o%fF|MfUxRR_n zJlbFf8*c4K8feXz9$~9=Zg}pTVf$ulqK)nTvff&@Z&}0O0c{IBm@x<2#a4Jo@)jQU zZ+5f(>_rn{+f#fE`CMHb^7+(r@Iu~Qcrl7Ye@Q)s{?e)%_6C1|y;Gy`viBhT`{^${ z|Ht_nUKyx||2l|`z29n^-Oau?=~H3xDxJ0Lg5OeUW7{V?7`dyw__Z?e($G@fo_H-f7R(GR&@hdk790r{r+=Wv9x z2HyNW2aa@jU~yhF9Mv@gOY~>qt(_5WcCk%U4@Xz`!7<7wHg-cQ)uF#VJPVHXi-lts zi(ND(ai1?4+1@c7X<*H{1XdbV zaI$t9RwbQ4f0y_ftQPekPvKv65jrVz6UcYZM8SLBaq!+TvxViUkJ{1K*xQh&T^U8L z?Rbnlz2PVFjOuiFUr8Oj-*6iJ%rratS@J>TI?)PzK&VEpkJrNb1vB#Oz*CciPWG#1 zB?$PYc-h}@Q&ksiR$YfV)8HhbleeK2&R2H8 z`STTUf#@V$@Ug{3=oESkaFN3b7r#k>OL{Zm(veWOtXT?|_sEU(F=8q8hpmkv@G;F- zxT0v*$mji^mk<4!2GGw&;uSplhq6UN*0XC8WXR=+PG@E(j>r_rM4+K(tvp%q4=F%M A`Tzg` literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Dhaka b/usr/share/zoneinfo/Asia/Dhaka new file mode 100644 index 0000000000000000000000000000000000000000..28136808b6d1029676448d8711265d8c55cb4bae GIT binary patch literal 231 zcmWHE%1kq2AP5+NDnJ+nLI`VN2P$I&VwwLyklEI@2SlH`-L?TlpJ6SO0Mk>AR)FZc zD=y6dnd@bJL;ys4+uWGI$i&RV!pZ`)>a|SLOps1a$85aQihB7n& literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Dili b/usr/share/zoneinfo/Asia/Dili new file mode 100644 index 0000000000000000000000000000000000000000..bb7be9f3a47112bffcb2f33f70810819b5c2b726 GIT binary patch literal 170 zcmWHE%1kq2AP5+NDnJ+nLI`VN0V-n#VxIp%FzK1Z5fFWPrqKtGe(qNW1t8k;@Jt3q oCPpR(hSEJCenA5RP+#2y1`Z$J5C&}n3m~>+;IaXdcDj~a0C~b1O#lD@ literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Dubai b/usr/share/zoneinfo/Asia/Dubai new file mode 100644 index 0000000000000000000000000000000000000000..58d75bc26eec90272e97696f40483eb56c2b8b45 GIT binary patch literal 133 zcmWHE%1kq2AP5+NDnJ+nLI`UCDP;m;j{iWg@YBo{Kmp?$Ak7vI3@kprAq?6ECJbCQ KK+;avgbM(ceGa|= literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Dushanbe b/usr/share/zoneinfo/Asia/Dushanbe new file mode 100644 index 0000000000000000000000000000000000000000..d83fb076a256817ca0a3ec4e43c7768e6680dc84 GIT binary patch literal 366 zcmWHE%1kq2AP5+NDnJ+nLI`V-04iezVuAlauu8JI0Yq)mroXeXvy1>V0o!CnP9&3p0WcVahWygU|M!g1eliV@dVTIHCA9+ zAx9fbE5^uxX(bFfb$)FmeFHC4qqlL^AUD_=YfO8<+yIIS`vMaM=KPcDklq00pK! AfdBvi literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Famagusta b/usr/share/zoneinfo/Asia/Famagusta new file mode 100644 index 0000000000000000000000000000000000000000..cc44179564afe36db0f1f7aab0a19cbc3e4fa4d0 GIT binary patch literal 940 zcmb``OHUI~7>DswY8SL1MbwH@E?N;@hjbY+a`V$uJW0>St`>?dzp(9{rBz z1qlJR4s^nW7qjq|h>rb5O0mwjv#s(Qc$;Gu&$kz)VViLhw*4M~cPtLW#a}MNJKtV{ zg%=5p@v%=2>C}?@F}O6@2bbMG0++{w@UF8icz4JNJ6iJKJ)#A!5SHP+mJD2JvV<9* z$`x}jwdzL(cFr%su6Li|>SuGXn0^YoC!WBb#9g@N`Zz2_2jJRsGdknrRqkk1xizIz z>)hAi`jV?~gZGw|?l)uy(MDk+MQ&WU0Q>&kfSX?W;pVTW;FgEy(bnfp=>Cy5^uRqk zdNAfd+Y&x2op-3+1pA``e7NEl9Pnr1cGE{V==cT)mw%#1jkD{W`+y!>oJ5b$JVHaC zUZ?1MWh@DIOh14-`}^T=atJ=rGm4&!_o0z}aa0Wj(JosD+ATWQ`$s~1v_Xx|KfO|A z%`yD{k1>a_vU&Oimt^4o3VS)rr8UbBDJlyDBJ`!QYDs2hzHoc#mZ->{dXH2ii%PA8 HRh@YavF)T6 literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Gaza b/usr/share/zoneinfo/Asia/Gaza new file mode 100644 index 0000000000000000000000000000000000000000..0d79662716b445f61e5577bdb09e7c91e4a40d28 GIT binary patch literal 2950 zcmdtjdpy-=90%~nbQwx(U1t)hq}+0ehENotBzhrnDwiqc7%L_9ODLC-+#_s6Dn%$= zNT*y99l4}v>)56ebxul++3fdxe*1g=-{Wd`>Zaa)Wb?(pasIG=K2n%)4B1kYk9-sn zhHQ=LWax8k-X+L(e>t4LTCtNy&tHAebfEcK?mGOsgV#dcKQJPpIZ&|&^KXPl;J0am zu(+g*PkYIMMGVb%i7(I(y1Al%AEbc(gK-@CA?FJq(?LfbepC5`9A^$3Ap(*q6HIJrjfgU`gZxo)XvK6T?QiuFHelJq7`VSFd z*S!6QFt5}!hV%Kn4BW3AUJ9$&RG?qrku74!iK_B8^b6f|&@Uop@M5_)=odeJfqAul zA-tqU8ohe^0Opq#%}2lNrZ;+xXen4Ta~-VZS%i7*P<2?xx)#08%gOL^ueChFE?o-& zQqOV;QePz>X|PZhxk4%mX*hd3(rA(;?ll?<6A^Z;6!UQJH_ts`W8rGpTzBXxeSBLT{fu3~w+H;J%H)-8|YmY)ur=+~icnqv>dwi+;0y z4(w#(4?E9l714f+x;xId3<)IEE;AZomyUec_5DTIts)BE+7=JHpIIX!?Alhg1NV6x z-j8$7Bu6CA!xgzbbRKetS)7QlYp1&h?(wqopd{WV=CF_IM26Z|aRKZ*Tue#69i0IC z)hocex?jM%3r1o8T4_Gr?1}mX-kaYG2l&*${D^uuaN{$E9(?Cj1P5tX!@-uZ@b}Yl z;eDEg5<0g}91e#}jfO*nUhsi8yWxYE*TSLA_VA(forJEiydgf#!y#5Q$dQ9t=ouF^ z_^7oE9Bw27A5$vDe8il7IATBvj?}1wBMk=OD5=Q|J%|$2;`yi%?howoS?%bLi~7)? z$k+p)XzAiSbQO-Sc>u@wbipx&;p}aM#B`*?vAMZJlxGx;D8N>&D zhJ`#s4>DfPLx1{;E_}LE9?p~xg){5M;H*@6fRw3#?XN)E>qw#RTa40@GV>+ zEe&5)k(JQ7tH1Wbm1F>}6x74lJCiYgVhv&`NFA=?9nLjKT%YpA2PGRW5U7H~Ip44+l_x==ao5oHPA{1~xKjH8@^eutin15vQ z4*jEyWt>|w;MPr5aGPQq+~$+cxzHTXw=d6u+ea(VcbJ;<>82x?`~7~ba0`C?EDe39 zY%$zv>&$s18-8-@0Q{uKNkTVIRYn@p_x!)d>-aqH=kxtNFE0-4o%edIB;zg#c7nd>vLE*m z2|adfBKw*(#;(A!jq_;MItdAKBn$b_Acdi>@9sl3T=^U4k82hng;A%FjX9afCxSp^ zQ&<~ApKIQek8JUh#rZ3}-8_2!>Vvv1&DXNG;Mc9ZM(V!)5i!mF;scm}BRm1WO&Ej+ z@(cO27av*7(0mvD68)gF6Z-eQa_B!8MxY;ZNP|BrOou<|HDUhKm^tQ$=Sra;?y7@F zhF78gOJ%Js{XTwqEL?>AoZm=O`r~UJO_{8f@QmJ3c&5^Jq})g~@|(zmNcr+VMTA}R z4m>9!LWZ$4)^7JL<~0LUVJ(X)^jbZW;1%xcd4yfsrj^K* zW=oMeN|{LAMKVY|i4dgz?43vhDKp$_Fcv5x>{>Oz!@b|WaDxqnYhk0irts=(i{LeB z%CK>i6l`*0B5dk%61mp32f5DlrkJqHOg)Q7)BNktwlvpIeJ(=2^5)ar&_5TpD3wBQ z`Dg^*m~O;lYhsn#30v~dk9h_Gu% z;V#_gdi*fX-D2#JJXa^=&Vc#IUB(e2!miyeuDHkD+Le;*F*1QYlqWLOp7IM}&*3~u z^4;hJcyEmyyszUWygzFc_NtQP)6Id9U*Ut9-LSVu1Xt05gCGIA41!fHKX&(1Cr$J5} zO+n8%s=y~Lq~Ra~Y50^v0pSImUC`Qf}6IK!Oil`aI;4u=WG)^-?AbNZW%2`-@4j_PdBZ8-0$~OxjXRF z&II&rGI?;Dl>_IIRQTDQBk;2>dokTSR~luI?F{<%i*a!K%~8$+d*P1TyZB#7jQ24? z@;^Vud;EXd6QbBdzr)M4Bqk6duSnQ`5bS;m_S3Cx?1{PgR{F`FSemgfb}z$1U7H@O V*{syi(a_P<)l#!rq4n=p<{umC8mj;R literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Ho_Chi_Minh b/usr/share/zoneinfo/Asia/Ho_Chi_Minh new file mode 100644 index 0000000000000000000000000000000000000000..86e21b0f524426287fb3b21a82369283c4040c0e GIT binary patch literal 236 zcmWHE%1kq2AP5+NDnJ+nLI`W&1S(?%V$uIV(9z@E1)?V|*5(4yXHB0qfar^n=L$gd zC2PA6Ao{A&ZUGSeWZS0+Ao{KT43KpUT(-v<7@3$^n3#c(fg$-DNDxS}Ffb$)FaWJ8 lXkg%FV5pnGAn4;8!Vmx=v<=LG*aC;TbMoi>Qv;@<)_(UM|O=&QF`|UR{ zeP_pCFn#yz4KRIgk(33UG30Oo&oxL^TN_a#FJ%>Sye3C#cI{sqkcu387?{}4?C z^MA4?fcZbaI)nMYo;rc~zwgDb0GadWT-**2{db=unE!8`1DOARp7IJ%yfXAD?Eq1X zb*x}MQyvSL&m8+4%xCd^2IjN6vuJ?Sv6(YlfM|BLXJ9^ivn`m<$#w$F=lpgY%;$Qx z3e4xewi3+eIo1Q_3(mF#^M&$rRxmO#voJDI2pJf%xj+soXkcJrV5pnG$icu+-oeNV dVlxQ&_=Yfec!O{-hzJj1@B%WpfI_+!TmUPfblU&` literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Hovd b/usr/share/zoneinfo/Asia/Hovd new file mode 100644 index 0000000000000000000000000000000000000000..6e08a261274e48f93eb5e221ba294e54ca671b94 GIT binary patch literal 594 zcmWHE%1kq2AP5+NDnJ+nLI`UCnaBdf0{?-a?ed=~AbtGYuNHu4iI>+VfN06v+#rfU z>P$44FTKaE0mPSCV+-cX&QSpK<$C17eEAwCFkc~u5zJSNegftzc|Qj8m939~`6}8+ z!F*Ne6=1#^_i`{_o#iM42&jKKA^@T_o-7AZ44PM#f%#fTI>CJHEgfLK&XQ~}Uw29t zn6KC33+C&W_<;EaDf(c(VQj_(5W~pVy8%QS+j@cdCc3&{zNxGZm~Y0*59V9FJh%a* z&U(wP1t8jH$xblecFG(u->zjgm~UTF2j)AZ)PnhrAqilp{0Sdu7dIpjuifeX1<4tH{e zBqim7T8artIo`MtB_+rAeRfHCzW(p;d*1K;UW>J>Lrecg#7^+xvHbr_89U~~Cit7B zZezHZyATw(!(Cr=N%%cdWwV_dBAa>QhWgHMDD>^X#+5zn+qq#EANU^bG^5M6tq#5) zu_D08c|DApP{ZiKD5&TTgfR^SV})lJS8xmCRW6ty--C(%>rg4aQ4ovrbnvstQw)o*{C2E^JFr*ML3g) zJj9-VJYIiq|32z1CTia0x3ZPJx7f&+XlP0lKxDI%gs&pD4oy*j$!wu2HY!ann>;o; M^3$`mNUihx0nK!Yq5uE@ literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Jakarta b/usr/share/zoneinfo/Asia/Jakarta new file mode 100644 index 0000000000000000000000000000000000000000..c9752d2f23ebbb8b1ca5b8ac604c6f24be5d0def GIT binary patch literal 248 zcmWHE%1kq2AP5+NDnJ+nLI`W&04ie#Vuk-eV4voh0HRk`v_1gQyTtB+`KR|ccYyep z!rm2t=<7DeI6(BR|7r{%`pedR9gIxOEX=ITYzz!33PAHfBntyWx&i~xhRg~EJ_d%m x2@E0(3LKOf2 literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Jayapura b/usr/share/zoneinfo/Asia/Jayapura new file mode 100644 index 0000000000000000000000000000000000000000..7c22f539d948e5757a0847892da344309b582473 GIT binary patch literal 171 zcmWHE%1kq2AP5+NDnJ+nLI`VN1}b9#Vxj*)uuJUV3=n-GV&?}C{blQ-3`QoPlI9m6 m+6fq{jA f!QO*`!^by-LEFFtgpCatxNN|*ovw+Mu>ltVLVFjF literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Kamchatka b/usr/share/zoneinfo/Asia/Kamchatka new file mode 100644 index 0000000000000000000000000000000000000000..c65155402db6a465c05a8cd71ec7a0fc0f792762 GIT binary patch literal 727 zcmajbODIHP7zW^P#;6HJL%Twx6>Z1*%dcZcvD2n;WcbJc94jT5ibGl*A3aa^Zd0X&`#IGtSEA5t{)p zazO#3#@}Fc|09g)yo9k0Cos;q594(kFhM;J6T>H9lJ@{qDI9miqI#W!$q%zHyr=X@ zZZG;VPjz)c^^OImt<*q`tq7)%XkkWgEY!C6L&2iA5{uXq3Ns61U{>uX%#M`99O2gO z*8|KAd%q)=+?!+cypL=2e5V6lcXfzfutx(18vLr`iRgT=#(R$?hB>p(AU z9z-`Jn$XKio6yTW)6py94d@lmMp)^Q|_xMZz@nzQ7f@#?~dSF_vM;=Ve*9d@V zg&amOtr-0YOe=Xm2Gh#cSHQH2_E9jcD!mO%t8p&})9Ngj1wiJje>noCHJ%(+0P!^| zvLW=9WngiwBh$gO_LdGXt+S*OOzTd`0@Hde(O_D?#0N|pq}YOK!`O@oAoGlhoWZoQ ztrwU!2~q{qrm{L<+RTU@LjUCh(-zVy0w8@BcRqmmmcQA+e5*Z|zRvAKwrLZ37DiZ9@YfZ3(0e8MthKEIVCGE&u>Lg9`uv literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Kolkata b/usr/share/zoneinfo/Asia/Kolkata new file mode 100644 index 0000000000000000000000000000000000000000..00bc80a65e9a7aa470d63fba1ce1b29ef173d922 GIT binary patch literal 220 zcmWHE%1kq2AP5+NDnJ+nLI`VN2P$I)VzK`~ptegw14KJNe{BGw+vo1t1)@*g?g5LR zVJ(yZ@y|>(S^=Ujl?csXWMXCkLI#GQ8z3u#E-C-|Z~>XRrdGxVTmbC&IB@^~ literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Krasnoyarsk b/usr/share/zoneinfo/Asia/Krasnoyarsk new file mode 100644 index 0000000000000000000000000000000000000000..e0d4fcb5c3d781943a65dc53cca9fab5d1905f9f GIT binary patch literal 741 zcmajXTPTBJ9LMozHd=<uk1%`m8Rje;K||XKG!Ea}*}U9>4Rl`1 zAv!;57G03HiY|2TM;9q3&_ypZutaEfdfW?3?<$~ay$Y5&x;Qq!d`gSvO%HN`(Cwd} z=>O}#Pu+!tRQs@@d=n87VzCOugfv@-7dr*?v{;F_tehumE{$#--CE+ANzd$ft>-T! C>VmQW literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Kuching b/usr/share/zoneinfo/Asia/Kuching new file mode 100644 index 0000000000000000000000000000000000000000..59bc6e40b7bb0b4eb199dd8c17f416ee00ca4158 GIT binary patch literal 320 zcmWHE%1kq2AP5+NDnJ+nLI`US0xDw#Vu}Aiu(peB0*Ky~?%n~S_gAYofa%ZD0U-Kd z>>4ot;ME0S{$aZZ3?T8t+b&-K(MJ`8!SY9Eu!H4~GrEK2k5^iO*zBf#>PJaRuUGBcq-7G?&9^a7BtGAkHZ7#KU}aNed$|31nF^aM=L)cDfc^0DJ^|K>z>% literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Macau b/usr/share/zoneinfo/Asia/Macau new file mode 100644 index 0000000000000000000000000000000000000000..c22f75e42db6b12db3c837056436cb77d176b83e GIT binary patch literal 791 zcmWHE%1kq2AP5+NDnJ+nLI`Vd2P$I)Vv+wq(3%R8aeg#PW&$+lAAo}kV80sc4@PJ500UzHG2It@q25mzF25kdN24|NL1}>n0t_2qWpKFVf literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Magadan b/usr/share/zoneinfo/Asia/Magadan new file mode 100644 index 0000000000000000000000000000000000000000..16bac8444656c393288dcc0209a96c7c3f487a19 GIT binary patch literal 751 zcmajXO(?^09LMqB--dZONO_opas?UtyoCSdw^v^3xN{X+ajbJv$9s~Y zaxoGnOiN(m=sQeuJi+Al8<=7_g(|}#Ox0|{G=&SMhfP7X^uR~+)$bcH<8gzMWezv` zy`IE<*2xIe>^WfeS_jn5+hESP3FZ#vLS0W16g#a>8l)do!@RN_nBN=%3zQMCP<-+G z^#+R-!9Mz~`0g5A^7)J|Jw8AiZqLxh^($C*v<*!Yd$8O!2P=9PVC9&{N%N}A!|3Yn zS#(WW8`@m$MArry(RHe3blqz!te52by)eLrhiGWoQ9|pv-beFoGv8>t#dA;HqF7{t zB;b#q^zZB6PXh%BV>4YeZF+@C8FPCD8Dp+p7EY(YPq&xJtTsE-h&sOYe2Xm9$WN12 H6hnUiiV=;I literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Makassar b/usr/share/zoneinfo/Asia/Makassar new file mode 100644 index 0000000000000000000000000000000000000000..5990010b649745369501c7641c401bcad4345b85 GIT binary patch literal 190 zcmWHE%1kq2AP5+NDnJ+nLI`VN0V-n!V$uIVu<%pt1Q5MT>?)W(-67im;$I4TSHQ@` z3{;!{0c0+a1hNYn7&sUh>LxJofY|~*z99_0K&)+G0mPOJ;hrIm3|t^m*MbWGa>yuM literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Manila b/usr/share/zoneinfo/Asia/Manila new file mode 100644 index 0000000000000000000000000000000000000000..3c3584e09ae47e9ab4e174fb375345679e06c95b GIT binary patch literal 238 zcmWHE%1kq2AP5+NDnJ+nLI`W&0xDw#VuAlaAoB1In68$$p8(TzUGxTV7}Io^I*RAmUCdf&XSE_zV4I_V7^|| eh!6%YAfamn;_CPs>zV2q=o{1flEe~U*aShKSK|AeDs0@^`d zTI&+Io4LDkFQ<1TSk*Pl43Rh)BviN(1V67wn3Cr!{15YpSR~=6waC)_b{ESL8xAO2 zE`^cPMi@1m1m&GF7+n_#W6HcxVSIU*e^UcflfAyo0-G;F`>;||6@-f}D_3{LvI zJivY8(Kb}?IAM}=5hgE8z?888nA+D4H7yR9RzK!q`?Ng`Fg>>oW>n?FOj$A1X%#-d z6QM!MY1li%jTkxWD+W1x{}tKj;Unj)ieT>E6Euy#z`Ugs$hDrs{Lx1j+gD)OLN+%a zBNr;?kuBymovQ;sKY<-=BCH|d0&w63$Lj^3`tcK;MLmb<0o3Xfg{(gUa{J*b% ukJ2$hD&1_Cy^-(<=^o(;32EvkVs`Sxh8H~pmuVFlfF~oS3zR0WOt%xKc3qm%Mu#l8Ala-`A z7Me0)Iax?7CLuO92pf6c`=70vb36Cf|K9W6#V0oObZW?D32cHlFVXcU1~%r-+V_{$ zhC>$3-8bKbvorEn_AhV)f-D>g^f3FvkE;o8(BmcUWezVMDcIhKEVp*=@Eo#L4;5?W zFmz4_!^RU~c&`FRH2J_t(=UwDy})SI9gLBm!&t8qsFXgd`TNTETNw9nqvtt(WY+1$ zG0qcCccE&};`FDAk5Qt#$5R=Jae5mftr)({>xIu#f7ARpq=9Sv0-j zf7LD7ZGyz@pC!eyRB*i{f`mP6< Ieo~g_AMfvp!vFvP literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Omsk b/usr/share/zoneinfo/Asia/Omsk new file mode 100644 index 0000000000000000000000000000000000000000..dc0ed422f6193fb5d7dcb59dd0eb3e06eec8d4de GIT binary patch literal 741 zcmajdTPVX(90%|-8!eZT!e;KwFyn8Sx&Oy5jSXo@qBOS@B}s?};Z2e#Ng?ti<+cZ{ zOnH(-$;(m-4<1b6MGWVB_ekyg?{_|Z&;OkN)8E$I)1@YUBcLbPu-N=x(a~c;bi#jV z*7tb_^Kj#ZWA`H!<7><)$zC`!TD+SGKOX0plBb6?rqnIP`{~w$8fRg{* zE!4_tc|xPTjX^K^fm1`sVKaXTOPwhP^QHH+TmZ?-tSJT4vUAeFv|LX(n3k{c0MiON zmS9>jMhi?U`ACClWg8wat)l%GOsh)&c>pp`jr%Q_R%ew=0P)qoa)D`$C%?h8X2oI% zedS&N0}yB(xeMlNZ#f61b(ZW0)4EeOfN8y!gQ6B3*uwXKk%^gwnF$%PvVkBIgu+5HF)$dYFaUv;0RsyI zgIfRt2QVolF!F#%1|aDczz7tva9|Md@eN_nHZTTaQy?}2ViN`~8z9e4*OUtYB|>k~ literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Pontianak b/usr/share/zoneinfo/Asia/Pontianak new file mode 100644 index 0000000000000000000000000000000000000000..285bed2c63a5debe034a661431d2a1c03dfb0dad GIT binary patch literal 247 zcmWHE%1kq2AP5+NDnJ+nLI`W&04ie#V)_3-(EY!U0YvW-yAP&MS1#cI@h^qFD*(~g zZH|HYxBjbv<-cs**8#Fe@m5I#BNHpSlhtd*Z@dc0m91uO}nb;2yeMvvD0Ax<+IVLb2 u^`^9dk%^g+nSr772}q*61Ejfb0s{w_WbyG0Vek$PVekTCE+9kKk_!NE&?7ql literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Qatar b/usr/share/zoneinfo/Asia/Qatar new file mode 100644 index 0000000000000000000000000000000000000000..7409d74983c8d0cd8347a663c3bfbc1c041124da GIT binary patch literal 152 zcmWHE%1kq2AP5+NDnJ+nLI`VN0xDw$VxIp%u<+Ad1CTzJu1N;4yNU6JixR< zjwP5@jL`zqNFW`X}y-oU|PSV1xy>Hl!9r)*aa6r<{1@LgK1;i zCNOOh6bq(JWmCYknUOt&{_6&&Eu>=tK>951YJmBczwN+$tG!%czV&SdFyCgGI+(WI z%><_H+Bm_q{j4Wo+9CBdn09PoxBxOQ^}#U(MkZz!W+rsV3KYf#S(q3Yte1e@_=YfO8<+sGDG-}6aM=J^cDklq07{*2Bme*a literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Qyzylorda b/usr/share/zoneinfo/Asia/Qyzylorda new file mode 100644 index 0000000000000000000000000000000000000000..fe4d6c6d6d44f0f6b7dd1f55702c4d640270a1fc GIT binary patch literal 624 zcmWHE%1kq2AP5+NDnJ+nLI`Uy0V-nyVuAlauu8IR0f^qZ_^$&{j6qbrdjp6TlQ^IN zqQyBjLg=5L7l8N@FF%3hC2y;P#ih=agZa{XS}uU(W!98}Y1uhxU|Oyx98AmCcz|hz z97`~*7^4NIm3*YZw6YBkm{!sL3#L`2-+^g0?)zX`os~NPWWM^BKVVwp$?pUZU$bH= zn6G)|f&+-Jb>uvluf62}nATac5lrh&Sp=r_S|)>O{gM_iZIDt5rVV2kTmb1eDyjz4 z#T59V*uroDWL}K)jRlNM%q+}I=#Z5Oiy%}H3ljr_Z30NY xg#!Z%1A|)t0|zioBrx)TNCqJ37Qo2i;~T=DZD0b#ra)}Qz-0qu+3A{c0RUQhZm$3U literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Riyadh b/usr/share/zoneinfo/Asia/Riyadh new file mode 100644 index 0000000000000000000000000000000000000000..01c47ccb86ccbde2bf9ad0803298e8df87178a34 GIT binary patch literal 133 zcmWHE%1kq2AP5+NDnJ+nLI`UCDP;m;j{iV#RoZL|P(b?(NVAp!1B;Ju2!pnPF$0$k KkhIe^<^lk6It`Bi literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Sakhalin b/usr/share/zoneinfo/Asia/Sakhalin new file mode 100644 index 0000000000000000000000000000000000000000..69f0faad1e7247882721bb81a7242ddd4b1d269f GIT binary patch literal 755 zcmWHE%1kq2AP5+NDnJ+nLI`Vd0xDwzVv+wq(Dvc%4iJ6GVABVXeo=Mv01z!Ek$nI} zi*saM0MkF`JAi13m-E2#lD94$0P&^HD1-UZdkhLde3>nw=@)4Ef9!L(kB9hlZH(FfB8DGFfPFxIC4WROvjI+!-L z)dSNeLE;S{aZ_12Fl}b|6GH!G0Mi!IVnA6228%n7zsz zRwO|dR@{)8m6?H|^#sWDx(N&{3=As{Fmf<3%-X=f10orLWX}Qy0UzHG25kdN25mzl TAT|VI0|qV|Aj?kI(2xrNZF7bJ literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Samarkand b/usr/share/zoneinfo/Asia/Samarkand new file mode 100644 index 0000000000000000000000000000000000000000..c43e27c5d4bd341649b3aa32de068d76618c81ed GIT binary patch literal 366 zcmWHE%1kq2AP5+NDnJ+nLI`V-04iezVuAlauu8Jk97Jzj{MP{}#vrQRy#YjvNgPlB z(c&B%A@tAB3qX8{m!H7$lDE~t;!;4yNU6JixR< zjwP5@jL`zqNW6Eh1l z6DDL}usaD-YvI7a!oc7bz`y|vmjp&05Xr#f;~T=DZD0b#ra)}Qz-0qu+3A{c0RW;& BJ`?}| literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Seoul b/usr/share/zoneinfo/Asia/Seoul new file mode 100644 index 0000000000000000000000000000000000000000..1755147fab44e07b7527ce1eaf3ae991473fb222 GIT binary patch literal 415 zcmWHE%1kq2AP5+NDnJ+nLI`V-1uA0$VuAla(0%$Nf%!Mj>OKJRZ(Z*KtGm6HAI!h=>=BrMx9206|Hxkx%zu)-9c=DXVTlZo zzGq3yVEdj6`n&+~U+5Qr`7fS-0n5MQ4+8UF9lr+VzkY85=D%6K1I&MWUJT5C*FFo( z|6p2J0rI!P;)DqxS}`vjOe-}zfoWww&k2l7EX+{I$chBPVhjxB93YM59SkfC40RJ2 mfV`dsj67gAP^5JRBae@72!nTU2!j_8d%J`%Z~-~GmRtaloVXbP literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Shanghai b/usr/share/zoneinfo/Asia/Shanghai new file mode 100644 index 0000000000000000000000000000000000000000..d6b66984a2f36ae36b35e174756707aa7286c292 GIT binary patch literal 393 zcmWHE%1kq2AP5+NDnJ+nLI`V-1uA0(VxIp%P-o_>38EKFU(^7i7gn--0MRERr?p`IRaYgj{57BbVE%QR{b2qL zwzL9}IX7iLfz{u1toZ$;V7>;sJD9I=$w7dL5f5ZwD7+3bpl$*q3j;$z0|SSTZwQ04 P3lIl~FmM40T?;M%d{}{0 literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Singapore b/usr/share/zoneinfo/Asia/Singapore similarity index 100% rename from usr/share/zoneinfo/Singapore rename to usr/share/zoneinfo/Asia/Singapore diff --git a/usr/share/zoneinfo/Asia/Srednekolymsk b/usr/share/zoneinfo/Asia/Srednekolymsk new file mode 100644 index 0000000000000000000000000000000000000000..7fdee5cbee2b1ba0904a672dde16240404466fb9 GIT binary patch literal 742 zcmajXPbkA-9LMozHq4)clo{Ln8-^MC&HUYr`M1~>X&1xEpJJCK2XVwf=FdS6ODJSC zau`WF?4TS-k{p(U!eJ>bxsc*{K08u-*7Ll2KYM;(n|)+hL!vGoeZe+cw&9aVx zQ-0{$&!~829&dRb=^aT^RCh5&Vn=|PE*!mqpBs%#acCX?X9RBptTV6VXo+9#WG(gP zLfKj>%yRKz_S6T=alF9X-g}s5zJPMwDa=>y!2*dJ7ADO@h2SL2<|{sSVbSw0OHw@1 z8S!oo_a*0(Q0a5P((OK|TCu{i83QaIFNf;E9LV)soNSP0OaUwE%b>P90anUVU={Zo z@%tUtNaDlnyPAhPbnRCNUFSbR>w=eP{mw0{KRbYiSs!e0FTuv4RcM^{I@!FY)(Ld; zz#_V(z>aQhcB0#2^=Om48*O^)f$e;4#A_YwcoISLp$uBCG+{R1y6}UxnZ1uZe#}2V z!T;BPpT_bDS(dV)u1z8!#1r5N32`5hWOnlC=?M^_#cCr;PEEIlZjL1C>1j}LT;eYf CU5tYO literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Taipei b/usr/share/zoneinfo/Asia/Taipei new file mode 100644 index 0000000000000000000000000000000000000000..35d89d036d07c3f28dec64092ab1b533c21ae2bc GIT binary patch literal 511 zcmWHE%1kq2AP5+NDnJ+nLI`Wo1S(?zVuAlaP;%~r1c*Ky>e&FIFNH*c>C4^KVET&F z+7BS{tFB56Ao`lmelY*K&3-Wd23uMINc^VkC$RdP&u4<=Z~a#T%ilh67A$|~0mR(9 zs~EuY_lk>Q6a&ZGE-;_-Zf66C&vkC^2M{fIdtn2J77Dprz{teNOcZ2bD0~6ZRL}s5 hfVv3`93YaB$HzB>!8tgD!3&6;T|yYRfE-;5E&yjg_Y?pC literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Tashkent b/usr/share/zoneinfo/Asia/Tashkent new file mode 100644 index 0000000000000000000000000000000000000000..65ee428ce1c5093a4b3dd29512d98a33b4c753a0 GIT binary patch literal 366 zcmWHE%1kq2AP5+NDnJ+nLI`V-04iezVuAlauu8I-6GU%a{N4bhUsSzz0f-ip*dzd= z#W^-Afa#x4CxB>)mroXeXvy1>V0o!CnP9&3p0WcVahWygU|M!g1eliV@dVTIHCA9+ zAx9fbE5^uxX(blVPk!oZMJz{mj%mjnhL5Xs2n;~T=DZD0z-=0I%5z-0sE+3A{c0RYJz BJ^26t literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Tbilisi b/usr/share/zoneinfo/Asia/Tbilisi new file mode 100644 index 0000000000000000000000000000000000000000..166e4341d6ce65728367641a467a925800044df6 GIT binary patch literal 629 zcmWHE%1kq2AP5+NDnJ+nLI`Uy0V-nyV$uIV5Vma>BZyulISWibzr_;(GDlQ><^d2b zCUMRHM2mBrbpX@97&m}uiB}8AaR*B&0tz~P6?Qn>q!OE z@-<;#S|P_BOe@A%fN3QkO)#x&BL${abhyE^s`MW)t;YQpOslg>CNKbj`d2P6t?`tz z0L0h4axVZxYaKc00HU?G902ommMjMIb*C%>^YvOIaGB9nB5@`Tb&R`fj=>Ui} zwoTgrqD_Jv!L+Gt*Z~mV%t#r`H~VV==37WR7=Xkr?n;6AmcNz2e5*Zwzh{j3vUzC-F=FyGfnFkeHV49wTKJr~T^JUs`@ z*V?B9=4-FH0M@TFKgVD-N3Tfy>vRn}m6|BM%4`GDv=uza9*E|?!=`x(p+)>#NvA0n>~Rv*fH z1uP%N5CxVGd(Q!u4}aJPmXEmD3+6{25eD<4HXQ(~k6!8qRv$C@3s^q3tqLq3SE>${ zk569lTg07m$dqyPW_ literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Thimphu b/usr/share/zoneinfo/Asia/Thimphu new file mode 100644 index 0000000000000000000000000000000000000000..0edc72cfe46b1976bff562929501f202a205d0cc GIT binary patch literal 154 zcmWHE%1kq2AP5+NDnJ+nLI`VN0xDw$V!r=CaP^sJ2}qw}qVEbupiBr4i02!@zyf3^ bFmUL@ZNizm68z58jufuR{>FhkD*MivH!x(N&%KE5FgUM@f!9Kyf_ IBy=sg04jJ!hyVZp literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Tomsk b/usr/share/zoneinfo/Asia/Tomsk new file mode 100644 index 0000000000000000000000000000000000000000..c3c307d7b99f39328cf289360526399c55984af6 GIT binary patch literal 753 zcmajZODIH97zglk%~g|`G#k$`UW37SjPV*~a2aDT9;I9IioBu}NqJ;3^4dril%ymR z8%cRAqzFsRLLx~B3!5PTmt!wBsyj8vY$DA^&@@J~ASzUJ))M&DlxEXVYX zyFER?Joab+3H$=MUnxx&LLQQR|{=xO|ay+Um&zfCoRaL z?G^u5S@gcoNj&~o{NG~_p8LHdoP?0_752Q?KzKsB?3|R4#x5dfJ0~wG6^T}tM%zF; Nop_n(o*kd=^#inkiIxBW literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Ulaanbaatar b/usr/share/zoneinfo/Asia/Ulaanbaatar new file mode 100644 index 0000000000000000000000000000000000000000..6f5d3a15abbe48b8a4dc72aadc88c416160a56a6 GIT binary patch literal 594 zcmWHE%1kq2AP5+NDnJ+nLI`UCnaBdf0{?-a?eaSxkUoCyI}<>(#LE*6AX@U)pAR5f z>Wps#h?d@CPynK3*625YXxTYJV7^?BAeb*-{RPZd$o>rGD@I=f^Od}>g89nUJHUJu z?d@Q`s`M-{UyXYvn6J*V?E?c4sDIf8q8K!u%mDK>ugn1RwT@JQ`Py5mz0jC zFyB=+P=EmlLPckR`C+Vy1t5Od*BUTC{Hb#RBQq0;kbxn^1Y}B50Vqc6CNOd^FcdT} a@c8(KFlZZ?1FGsnw=@)4Ef9!L(kB9hlZH(FfB8DGFfPFxIC4WROvjI+!-L z)dSNeL7ZUPR8{~?n;E`_(0@LGX$xug4mcL$t`BrP6N}9&1(uk<~g}mfcehJePF(eY8067>RbTkyRq7U`R>X= zV7~jiNHFcmYyzRrS%Yb>$6{dGdz~zp_Bmtp0c5^!?|(4gFZYWBh#%s;>jNVb3o|BU zWy2zfsf>l0otce+q0J3sT0sK?3j;&l1W-DgwSj?$fnmh~Mgb6;5yEexkxD*yw8(>Mh3YI3Pz%nrq z^owA*I*z!?Zy%5=K0lBveW%D(em}Bd>mF8neb6{_0&CoBu(odt)=ha`ys0K1y;uih8-uZou{49RjU_W9VoHdVC0mjRB`ND+(i}+1!LB41 z%YnI}kd)HEIV^EX#EH>%mcixW=JOUwNKm2Badi}3Q_ z!kWK%t|7M<59vDdQj~R&-o9gZq>p6u6@Kj1lD<#7`0saZzoYg)%|uIWCM$Kox()`; z#=#(q49fa>7~ICekg7KrYP^SGX;&~@c?jjw9T?%h3Kil@p5`mw4`AfOelT@ZZ>z(r z6?~6An1;%&aTv4I2V*B&VBByOjPEi*RlN=-R5w{^p1M;H6LkidR4RwbfiW;e?dtH$ z6KbU4Jl)gWzM{3CF6dO-1v>5e5uLvL0(HA5Fk|E#X3ng`tcFdPJ#=KHc{zDgXnoxp zI#=F<&eL1a`OX#Sg0OaUfxR0Rib@=wl|#e58X7mW&~#eN)BK_dDcWp2W}L|Bk4OCX z=if)2MU3?=(9n)SCT7es$4M9)urd$YIbpZVF^Q?j%#eh{(+H+ znTdfRN*`n{kOb<9&S2nRV5pnGz~|!|!Vm<++6HFE20+r1fy)NWw$nAUGB)4>0PImF AssI20 literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Asia/Yekaterinburg b/usr/share/zoneinfo/Asia/Yekaterinburg new file mode 100644 index 0000000000000000000000000000000000000000..a3bf7f29b6f14debfbd0f8ccb45f1ea338009ef7 GIT binary patch literal 760 zcmWHE%1kq2AP5+NDnJ+nLI`Vd0xDw%Vv+wqFgu=89Yik_+6bclZ(aP?0Vu~Hs@}Z; zM2krrPyo^59QzHx^v}-=K(xfmPhfe;+v*A+zSNm=FkgC4%LNc$W=$!WmYtIZrsaCV z!L)ph2bfmKu>{kKFl8s*~+NT0=B4KUyGw;h;owU-Obx4x|a z=G!b&2h+B@nZUGN8z-2ypY;SxJEXn_(~d0+7eMAYxt;~{os%Dd`7WyK!F*TeBVfK8 z>qIc$U3nRp@BVHrnD%7ufY9gq!L--oEHLf8t`JQ7oM{gLneW>d4CaUUFgh?Yu`pwS ztk{Jym9nt_{eKf=s>wkH5Zi%)1DGNc7{ zA;%p|E5=xWX(b;`Fs*DO1*TPWxWTll^dB&-#{CvdtFuZbFaUx2S1vHE@szUw#Miv? z3ruSrc@3tux7-2KI!n%iY27LNz_eb=dN8eDvH(mQq)Y_U#vPEFp z%*Yo){|y1t7SdS>3_xIU*9^?J{OtqgTkVwq^Q~{|f%!JeOu@A6ZUHcD*Cr08?Pq-g z(+;UW!L(xw-vb69aB{s3<~t{U0P|f`_k#JZ&X>S^H`e)JzPs`kFyH;%ZZPf1JPksh zn+vAB9#?>A?{)QH+ULyF1O_1R?Mnpn{nnHxFfub?fh>$rh(!)rJus|yfK1dfU|?Zj ma0_7M0EUJG0}qH~}Sr!gWb?JxHijlr}%V@B8Nuf8qPvcdy_3^Z9wM(v)tN9O;T+6VHwfr@ z)$VBIETuWjUNr)596SqiTs;MJUGBy*s5ZAkT|ImgIlsCB7UcQE+o~w^@0@Z$E=)NM zi=zEdzZ;ta?`?8|52TUs;gn8JrU@4JS3%9QMge_($-_!mnt2TMvMYJW+Vn~A@sSkx zB=RUM4~>EqE1gs6{>r6tB`KExLNdSwLaucRk9 zPjdfP!?t$x8`r;rP0K#})91YQY=v*^>)>0ymUFBS>U*2u=3>`7sB2?JNVJS zhkeg~z)z3*;AeFU{BpGh_Ma(*14nPe!Tl=ub&pO<&mRibz~R;TaKt+Ueset!zuP3j zQIi-v1KyrmIltgmJjDBGvM6g=b_VqMCiOD2D)qr zgRZh*=q6eN=gsng?$+*5Xtr5J*dZJVfF51m(6h-6&abqE3+|2LeMC9EaN(t9=#{L4 zi{dm;9G(v)JM{vd$%OyEOxd-6&i~wLX8QNb{CA&WdIkt#m@W@u$}ociJPU>~wh?Q> z4j%hu3=R+rdQYZrkSoYKb}kf4*eN9o#A32FP(dtZY{gF^W3!(~?(OB{C0-;J$t7ak HNi2T>?l{e1 literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Atlantic/Bermuda b/usr/share/zoneinfo/Atlantic/Bermuda new file mode 100644 index 0000000000000000000000000000000000000000..abc75ea7ef87f054cdcea06728b99e3540108860 GIT binary patch literal 1024 zcmcK2-%C?b00;0hwU{@v<&QGw%CwrZHMi+>POY@*$Qq5D)bycCq`62!VbxxOa254p z(C=RhNu*x1updSdv&DL7*t>>uk6vApXWgC7S~N#=J4heVd) z$(I7l_x=bx5z2-?c)UE@7e@3BmXX$W_+x(-Jk`?$f6lB$f4a?w^V4&4cpkNM!qGP& zI9A+;er)hQJd@f1&-gCD@h>(w(LE%v_a%>}e3Eaz3_ymHKO5cuqJ*DF8!u~H^1`2+Q}vd>uvG3!@AKD zxa?FNtiQy;hQltA)`+q9J6vw7fh+b-z$Uc{t~5S`tCmWzSs51SF=9^6!qtCpDyn_`NL z&a~A3H6Y1ujR!L(e@ z1TZaM(+H*&a*DvTVoWlaR`Lk})5l@ z|3{#5Ao&3tlne|U3=Dh%j66QRAq=_(h794ZAwV1)!oUS&8Gu+izQ%f{dItK2I=+Sm HAQl$@o9a^A literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Atlantic/Cape_Verde b/usr/share/zoneinfo/Atlantic/Cape_Verde new file mode 100644 index 0000000000000000000000000000000000000000..8f7de1c0a19a8d3e0e749626c76c8d4dbd3c4de7 GIT binary patch literal 175 zcmWHE%1kq2AP5+NDnJ+nLI`VN0V)Gwp8r5F>Dj6UAo|SIISL^9Qb~;f$Q*9*?+%Pi vjLiT4zx=|$@c;kg2MjF#|9||z$N?f5IDC9V7<3JcfY^|M%LYi=8FB#tdL1f2 literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Atlantic/Faroe b/usr/share/zoneinfo/Atlantic/Faroe new file mode 100644 index 0000000000000000000000000000000000000000..9558bf7180acab14d3b3f63c956f5224f680b2a3 GIT binary patch literal 441 zcmWHE%1kq2AP5+NDnJ+nLI`V704ie!V&4Bi(4D&^0?1|%Ren7IM2iXE0n_5lXCd_G zePCMR@p>>Vd3gbtmO4BUOiSjNmeXKbzhn=XHb_|urVV3n3NSL^hyVZoTmiBh2v`^x_yia^e0)O~ g!d*c)ID~-<$T9%2bbO8VO!W-(4Rw4C4L~d|08D2^!vFvP literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Atlantic/Madeira b/usr/share/zoneinfo/Atlantic/Madeira new file mode 100644 index 0000000000000000000000000000000000000000..cf965c3f9274923cc8410311741b0e30b06339bb GIT binary patch literal 1453 zcma*mc`%e=90%}sLkh83$vQf0vU0tlN=a~q$*yvJggpX!gg^0oouf;-``FoZ__ ziS#}!I-(DY#eT3vubWlX086JzVEM~>iafufq!?DFTtvR=!9&E)6I8JJY6N_7E*RGM z_`_Nko{a3Tb8>{v&@%}eInJyzcCcyiGDY?^KRv}dQ7}#7S2ADLKKB1; zx#x;{OO0;`skcg%sJGU&;GDKF3)I_k!jNzGRIp~{quy~;6ZMW*Z{%N#Ls_HQ_toj! ziTay^wXkc~08O6LZPgCn@~h#y)rG9TGGNbGJnZd>hVL7%z`oM6u)k2DBjdM_kk<#-tF^GsRzjnp zid3?X-P+wdbD29=YAo+ksiuV#^93-gI{CevRVvlYG{wA3T`q@<)qvzFzPpEn+RsdD nnx<@N5u=FmcJq=ji-gi*7Mesh9u9Up>}Y$DjfaRPcUu1d6@tXY literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Atlantic/South_Georgia b/usr/share/zoneinfo/Atlantic/South_Georgia new file mode 100644 index 0000000000000000000000000000000000000000..7fa5f4683538498b93d1e639c14256c1f033c354 GIT binary patch literal 132 zcmWHE%1kq2AP5+NDnJ+nLI`UCDP;m;j{iWA+4lDUtpt<)!qQLS@ReLJPbe`v=~LYgA~y!6i54=7kyd zpPa&h{bYD+WexuEjl_?$;xmvTvh%Vu5S4c*Cb59 z)~cVd^{NN9r7yy^!`HA~vmIoj?5o`>W$nMOu;XJr{4y{F*S*)PQfSDX6CNhc-ND1| w!#Vf+7{fJ;^Sz)HDgGuei{boKl^)ZCMb^D?vbUo1WuxdK(FUfm2vr(2x9gG87XSbN literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Australia/Adelaide b/usr/share/zoneinfo/Australia/Adelaide new file mode 100644 index 0000000000000000000000000000000000000000..3bfbbc563cf97dc2548ff8974ab23dcde28e8744 GIT binary patch literal 921 zcmWHE%1kq2AP5+NDnJ+nLI`UK0V-nwV!r=CP%PFh0-~#hm zeZaKrK|wGrSGgEW%TM3Q0WwD+vK7o%Y`6-hm7ErV#g#KZfoT<`7BH>qc?C?XF{OcN zbu(Zz ylXD`3UcZiki4hGlF!Wb|WM^$)WMN?FS-`;Q;~T=@=;{I@fN@HuYhizMQ z+6<~xl9$isYO!#f@J?|NLYVTo|c^ zZ-=`uzStwFbPs)71r(C)B4xvI8?xb7IZTuU?nf&$rhey6=%H!-HQaGON2K*hpT5E5 zYY8yrc^sym`U=ycV=%q!70d|Vf|-_4xU=CBck?F9@*RV_lKNHJf4B7lH?G1xx)68d zJj`Bo!M!~-&^(h4Etem{eRp4ov`@~-2(tD12WYE&fPQ=H2HbD!hPl=6x$8gSfxHRs z;yajUjB=lh!-H#G@KAI~rE?t1cVK?_8FW4kLs!FXC=E11chhO;X)l4^QW+N1S>R!F zE-dsg?%zb{%QlO2j&EfRx#-Upa`E&W@{!N0$R)8KuypDrEQ`#-@_R8@aqcnn-mH&D^$s(Ev8(;e$k^bh tE`_m3lo@M63iAi+wMIr0P?(8+^NWhTl3xxej*we&x}B0ER6w}ArhoaP!bkuB literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Australia/Darwin b/usr/share/zoneinfo/Australia/Darwin new file mode 100644 index 0000000000000000000000000000000000000000..a6a67300dd5ef87e421c9749702039a6bdbb928f GIT binary patch literal 234 zcmWHE%1kq2AP5+NDnJ+nLI`W&0xDwxV!r=CP%Jhn0z_8}F&BX7IesTQ!1Nw74iJ4h zWEX@!o&y#?vpp6}pIz<;rq3;?0?VIoH|StwW`aTnhN=}H*VIh_*)(|tBPRnx>kI}K ZAKwrLN9SM=;S$2Y1!C%2S{WN~0RXyMNZ0@X literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Australia/Eucla b/usr/share/zoneinfo/Australia/Eucla new file mode 100644 index 0000000000000000000000000000000000000000..9080f5cdb1216ef6397e7de6205173caa794c646 GIT binary patch literal 314 zcmWHE%1kq2AP5+NDnJ+nLI`US1}b9)VuAlaP_m3`1BjmEcSQtD?{Sy{qECk$fzZdx z!QyAOXMpLm%OgcV_HgolgwWggz_b)&1cY8*3Z^wxgCO+!{Zl~dT?@B>X*bpwFzv2f z1eSMyR|%#)nL{A-xo8n4MhwWnP;midOs5PZ3j;$n4+EEvZwQ07fu)HlkhB1jTsC0Z LPS?W9#FPsFy<IpSMAzT=$NdH;UD17l3?^!HTJ zsv{&%@Wmsq{)#VoOq;xNR+7^z(sy>~U7y0<9<>sC=c5aKS2+%YFUw%)SPPt%9}}OO zp6W)wdG3X=NE@69ox}cH)r?+z-H%?124G^U11_H*!Tw65j=w&U_lCjpPzIWJzpT;FH7 zX7D~->l}mY`Yyxu#(QwX;hvPsmtdY_56ssdfCVKd6@Dm~ml!G(S``>M0gK}0uvm3N z!?+$APnqDRn^EG~+z~*RC^N9Md5D*3i~lFwT6z&~+Z%&rnl5NEr+zon-)HFZUvY&W z%yWb2ir55t`;!Z3%Y!hwa^MJB>{rp&UMJdi#*dbccET#}RjgMx)T3+cr_nnMMzlR| zAKIQE^v(qf+VSZdx;F9y?i!thbz>ESc3xj8CBH~ZPplON0 zpFt`XLL(wI7^I`5G10-FK}?!1ItboP z9C?*|%VSnGmt=i~U%p3{Dw`vNd|e%9S*#tAknt&4&9%eoNI$H3(!!-n0$g^jfXnCC zMb=lbd6Z#U=@nsZAdY%f=UR&0SNmU3uc?}bb$vIm?)?F-)komk+bdX~y8`Qvcj3CX zN!YLz6WM>p#InS)UfO~A(+Rj?C;$r^E|`wEVABi_n_GF>O^nPoQo;NTk@i*2^f|wit!mx5KbwEDU!noT0zdDZyQ%A-J0l ziLBq*H3#?P*irAT_QJg%!4#*+`kmQ||4c$cHSF)TJ(5kx{sosyNbr#46S9566}j9V p(%~HR5Cf%VLEZ)Ilql^ux7Aaj*(}JQ@{t&V literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Australia/Melbourne b/usr/share/zoneinfo/Australia/Melbourne new file mode 100644 index 0000000000000000000000000000000000000000..d3f195ac2fac23afd46cc16650e0a2454f5a3923 GIT binary patch literal 904 zcmb`@%S%*I90%~iM0R@f%RMLR=G>;Asy4{+1(a?a;`f9KqL;mGxEt(kOY zY19)uxa6~6@v6r{)e-quEuUc^h8?}LsKB6&*j4$xaHR$Pwb^@cJ>Z6)$9>q}@S7F& zTNL^*4~9j=b0qCuBeM3;0ngb^gj;b?7xi5@^9SmGEx_|*vBVYr8h|@RI2jyjN8#0>Y2r$(>p@QHe2$!4`U0l39l+G&$1tsG9bOA*g4fMc!i_a();$wWy@faT zeK39alfnzj=2Mu_^#)p}+oA1|Q{5%94|@Pwel zXdo`f&JX0gz&^|mF2jQDZQ?4N+=WH+LFgPFzduC&J^s(gJ53nTlX24B_Q+J?D(A^7lb+`c$<7^% QN3vTbtKH(sW^7sde@9iYAOHXW literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Australia/Perth b/usr/share/zoneinfo/Australia/Perth new file mode 100644 index 0000000000000000000000000000000000000000..4f771828c9b54d9bcaef82639425df4b3559b5e1 GIT binary patch literal 306 zcmWHE%1kq2AP5+NDnJ+nLI`US1}b9)V!r=CP_j(y35cHKcW(ih-s7zRqECmMhtS6x z!QyAO7lG-s%aa!X^)hhs|Ax@pB*3&3V-kd3UJs@Aq-p~ IQrChD0G5hMm;e9( literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Australia/Sydney b/usr/share/zoneinfo/Australia/Sydney new file mode 100644 index 0000000000000000000000000000000000000000..1975a3a4bd0ed93db1d10a2c562eb5bc3baaa489 GIT binary patch literal 904 zcmb`@%S%*I90%~lC*b>sI}i6Fw%A={F(-JvHQXgzoGtg30@dUB~H}0Js92l3&zYX!r1$} zFm7-R#+NU^gs#Uh(exfBHMI%<3_ydU9wtXURd|t-^-#Fl57RVt!axf&9^}DvzYAt8 z>7l867+!o6Bu?htUesC22F$L0%WcYOKY^FBdtmO3b>ZnTylkEpZmvPI?v-$Q3g#dA z;FZD83NI{MFJVE~B(w%Qpsnczw7>R3>0UD|>@0yrWlmV!kPJ&QOz^7oQ+P(uVKflO zv2%#JG;jp3g;wD8?QP;XCk|lQdHh(4WwIUs literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Beijing b/usr/share/zoneinfo/Beijing deleted file mode 100644 index 763271bcbbd9cbfdbcf15b35bbf389617678a7c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 582 zcma*jzb^w}7{Kx8s(v+wi@kMrL4VVaQcwHNO!Yo= zYS;DI-ODh2+HmG_$KibO%2}B9?abndlNprl?0C`1cJg-28ghu7_4J>l7Fux;FOZ4S zo-2iI-3KlYbh&>In9|qGfS=|Ik#AkKl|l{~7#SKF92wrI0gwnr4S~c!f*?_lFi0FE x5E2OqWz<;w4#ALUNH`=O5)g@qghXN@L5&&}32W52GNi2)`%m43hF)4t`~cK4x{Ck+ diff --git a/usr/share/zoneinfo/Berlin b/usr/share/zoneinfo/Berlin deleted file mode 100644 index b4f2a2af6de4526f909f743425c0858d32cd14ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2335 zcmd_qZ%kEn9LMo<`IExPeZ}CKfKWF=>}F`LEmveU$7W8dvHHDFTebC|XFciMd(P|JGk9>f z`+57;Y^q7O{&9qvC!8F6&B=Y_4s+>>aIWtPT%0&C)~DS)$MuzWR1dax>R?!d4viPd z+1H#pe8elC?#q;OFD1%|KUzjkbXcQhr+17VULm8GGAGVg#pq{6E)C?2Bm`>5HE?u` z^?7o?TyW2kFTy%xEa;4mU2T%c;m(O!B}?VDj9)a$^@B#w`cj?2XVrQAw9dZrrrv)3 zkj{C3ug07_C9%i)B<{dLncJokzwJdysPoGm>#F3=VxPEj^W`pgwj{81b*e9Lox1YTmvvR$1}(j}PJP9N`iOJ6u68Hu>YE-diz<+^3z7QRjd`->#80|55H9Nu z&6M)~ALa3u>r&A^EbA)*Qn~$mePZ$3QdK^r)$#jfLtdZOOh2x*ajLc7b?U|`zit|A z)+aCf^r@q3weF(^d3txA*7ugm=8f_C%&shHSeYyS8mDYYn=4!Mf0k!wTGE&rrHvC` zOVf;-+H~#%X}&h5&%M_ocC$s)70HPf{<^F=0%%ov$6GG|*eX}%`2My8F-8<{vVb7bnaX70%3 zk=Y~DN9K>}w!@@s1njAYo>q!`IDl4K;yNScv6BZ)>bZT*ir9c~)FAdQ;4OEOZjQatXG KG!Ld`g#Qj|*MPME diff --git a/usr/share/zoneinfo/Boulder b/usr/share/zoneinfo/Boulder deleted file mode 120000 index 8b727a113..000000000 --- a/usr/share/zoneinfo/Boulder +++ /dev/null @@ -1 +0,0 @@ -US/Mountain \ No newline at end of file diff --git a/usr/share/zoneinfo/CET b/usr/share/zoneinfo/CET new file mode 100644 index 0000000000000000000000000000000000000000..546748d6eace6007bc1239dbe2bd5c324623ca56 GIT binary patch literal 621 zcmWHE%1kq2AP5+NDnJ+nLI`Uy1uA0#V$T0SFq=m_0Zd=L^#MfBxw&ovh@QJ-E0~_Q za{`#2-!dIcpWrM6(`TN03xL#}T`3OcpIhV%=AWNr0;VrCseR?(ZL;_3;`??5#)QK4X0`og0Mk;3CxU6|J$nT}=E$sB2c~7`%m>qQJrlsRd`%;mR>&y=(~2?4 zU|Pv11WYU2xPoaF9WyYkDx(gj)p#Vpv^uNv1d#daUroTY##2==t$9@pOluuw2h-YH zet>D6B`?9W?vz_#TCe3anAR`Z1Evj9)`Drn*qZ{3z}O`nGVlp7umU}-z{ue28XN*7 cLKwJ!gsvfotK(~|XR2qQ<7;RDqVH~#>qM$UTWoXN*;0tXVQW7F)L2-u~32Yc6LfDWYA*c&9 z0Zn`)Ks6y6F`~rqFd}Y@5f(f)8j#?|5E5m4ER@y`_k8~V8}8)ZbAD&ONoH|_=jtxG z*@jES6SQdsH~!=-k7@WeD}43zJ0z;TWB){|eI0Rd=>9xBc|8ixrvHIwYxFYZ*8bKq zs^R4T9QhQ0|9`N<(GfeWJT}SnU+k_4MRjczRyVK0F_(=ZHJX}OiRzZ}AMn=V@37W6 z4Qo5Cu-^O<)<1hhab}Qj!?8=^u*gsur=xu;g(JZll0@1BASv?;JB zd0D2$^DPP&hCjkZ@0Z|1^8@hV=MjkpM_%8AkKS5@k3A6K;)V(MczdTvxf3TJ!rqGw zurIqE_WLSe|LY1ujR!L(e@1TZaM(+H*&a*DvTVoWlaR`Lk})5!685*gnK*E#@09knm?f?J) literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/EST5EDT b/usr/share/zoneinfo/EST5EDT new file mode 100644 index 0000000000000000000000000000000000000000..50c95e0cb07692f2a177a505041a10f284cf0a60 GIT binary patch literal 951 zcmb`_+iwg}90%~T+hyC?t*%SyUA5TEc1?G;wpW+Z-Bd}VVH)LW2;Hm~6Ou|_il~+c z5or@avQ)J6p{eqsNK=;}5ts7f7EV2gpiJ-}UET3JUw=Sf{3hpo^EvZ9nU_(wMVkX` z+ObeWEHUczSDL71qvbMbVtskK$a6QoXd=&dFu3Q;WBAcg1Abok>tAYdE_#!{n+%ch zPgU@rmzD6;!(2FVJqI=~nVi1G*r|je!qPd;MOycBI7v@v!ZvM67dfMWYa(Y>zlZI< zJFxwDCY<8B2&W8meU7Tl+Prx~2U*X)_PvN|wC-B0a zAvnK<;r^mSU2s9;2e@$eAZIj-gZJPi>rcW<)B9kzXCLfN+|@--mKtICT`%nUTm~17 zbi&>jszx=oEEa{8Yo%~;+XmRzl>z%B5kvF>dne(N+B$gornhj=T?Cf~M&L4gDqNoZ znlqa6kKf^n_$|2d{uo^KCI+t<{HBZE%9{t_RVSXotIzI$tM^=m*R&tdsK(ZA?1pQ0 zZihp~EpRwg1BZWJHZ1hlTa#$}&yQ&iUtu=Wd@yQZ*psn4!y%Q0H`Cfet3hQFAxMYb R`Vu9e_`LOgzv5SX(qHJV`m_K5 literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/UTC b/usr/share/zoneinfo/Etc/GMT similarity index 100% rename from usr/share/zoneinfo/UTC rename to usr/share/zoneinfo/Etc/GMT diff --git a/usr/share/zoneinfo/Etc/GMT+1 b/usr/share/zoneinfo/Etc/GMT+1 new file mode 100644 index 0000000000000000000000000000000000000000..98d5dcf917c6f1d9bd0018db0dc4dd0590e6a8ca GIT binary patch literal 113 qcmWHE%1kq2AP5+NDnJ+nLWtMG^8f$G4-5>t28Ik=HbBzOkP859w+SEs literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Etc/GMT+10 b/usr/share/zoneinfo/Etc/GMT+10 new file mode 100644 index 0000000000000000000000000000000000000000..ecb287e667868e92d97cdf5fee601e09cded0ff2 GIT binary patch literal 114 rcmWHE%1kq2AP5+NDnJ+nLWtMG^8bHv0t17tp#cMz4Un`mG~faNWzh&i literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Etc/GMT+11 b/usr/share/zoneinfo/Etc/GMT+11 new file mode 100644 index 0000000000000000000000000000000000000000..e941412971a4d805e311e8e4e7eb37e10994e4be GIT binary patch literal 114 rcmWHE%1kq2AP5+NDnJ+nLWtMG^8bHo00V=rp&h_ literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Etc/GMT+5 b/usr/share/zoneinfo/Etc/GMT+5 new file mode 100644 index 0000000000000000000000000000000000000000..589990ae8966d1af67f1e05c21e14149adec2089 GIT binary patch literal 113 qcmWHE%1kq2AP5+NDnJ+nLWtMG^8f$N4Gavr2Br*LHbBzOlnVf6w+OTV literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Etc/GMT+6 b/usr/share/zoneinfo/Etc/GMT+6 new file mode 100644 index 0000000000000000000000000000000000000000..fcb60ca2465a3e0c4febd41ac1a05bbb39fd96ed GIT binary patch literal 113 qcmWHE%1kq2AP5+NDnJ+nLWtMG^8f$p1q=+j24)OgHbBzOj0*r{_XwE) literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Etc/GMT+7 b/usr/share/zoneinfo/Etc/GMT+7 new file mode 100644 index 0000000000000000000000000000000000000000..c0427a40eef929dcf25451be77c74af6e9111065 GIT binary patch literal 113 qcmWHE%1kq2AP5+NDnJ+nLWtMG^8f$b2@DLn2IdT0HbBzOoC^SBHwbd{4F!k* literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Etc/GMT-10 b/usr/share/zoneinfo/Etc/GMT-10 new file mode 100644 index 0000000000000000000000000000000000000000..11d988e10a3e318a7cba485d995872636d1acaf0 GIT binary patch literal 115 scmWHE%1kq2AP5+NDnJ+nLWtMG!obk8fPq2V(13x<21wfJ8X9l`08Lp2#sB~S literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Etc/GMT-11 b/usr/share/zoneinfo/Etc/GMT-11 new file mode 100644 index 0000000000000000000000000000000000000000..f4c5d5cc29b5c1687e9728b6b63cd2a5328c9dfb GIT binary patch literal 115 scmWHE%1kq2AP5+NDnJ+nLWtMG!oV10?Nqjko|e4F#zH literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Etc/GMT-3 b/usr/share/zoneinfo/Etc/GMT-3 new file mode 100644 index 0000000000000000000000000000000000000000..4eb17ff0057b8843a0b840c6fef4b77accfe43b5 GIT binary patch literal 114 qcmWHE%1kq2AP5+NDnJ+nLWtMG!oZ+qz`&qwV9dZ}10?Nqjky3h4F$>o literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Etc/GMT-4 b/usr/share/zoneinfo/Etc/GMT-4 new file mode 100644 index 0000000000000000000000000000000000000000..13aef80cbbcf0c938b8d11d92b0755e146a501d2 GIT binary patch literal 114 qcmWHE%1kq2AP5+NDnJ+nLWtMG!oXnRz`&qwV8Xy<10?NqO}GF%4F&4} literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Etc/GMT-5 b/usr/share/zoneinfo/Etc/GMT-5 new file mode 100644 index 0000000000000000000000000000000000000000..83a28169552f4fd39e9d0322398d787aad303e3c GIT binary patch literal 114 qcmWHE%1kq2AP5+NDnJ+nLWtMG!oc7bz`&qwV9LN{10?NqO}PL)4F(JV literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Etc/GMT-6 b/usr/share/zoneinfo/Etc/GMT-6 new file mode 100644 index 0000000000000000000000000000000000000000..79a983e5454a35f134cd4ad736ed912f3deae64f GIT binary patch literal 114 pcmWHE%1kq2AP5+NDnJ+nLWtMG0#u#Az@Tkl#=vC*B<*y~xBx#51}y*p literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Etc/GMT-7 b/usr/share/zoneinfo/Etc/GMT-7 new file mode 100644 index 0000000000000000000000000000000000000000..e136690e165a933fbad2fdc0aba8d97886714fe0 GIT binary patch literal 114 qcmWHE%1kq2AP5+NDnJ+nLWtMG!oZMJz`&qwV9vm010?Nq&A9+U4F*mC literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Etc/GMT-8 b/usr/share/zoneinfo/Etc/GMT-8 new file mode 100644 index 0000000000000000000000000000000000000000..bc70fe416fdbe3abb2c636a7bc1485b79e03af13 GIT binary patch literal 114 qcmWHE%1kq2AP5+NDnJ+nLWtMG!oX0_z`&qwV8Os;10?NqEw}(f4F+!j literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Etc/GMT-9 b/usr/share/zoneinfo/Etc/GMT-9 new file mode 100644 index 0000000000000000000000000000000000000000..d18cedd524f4cc132106d822fa8bb9bd3779edab GIT binary patch literal 114 rcmWHE%1kq2AP5+NDnJ+nLWtMG!oW~Bfq_BWz>21wfJT5^GWBn-F!C&C4S literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Europe/Andorra b/usr/share/zoneinfo/Europe/Andorra new file mode 100644 index 0000000000000000000000000000000000000000..38685d4219d244f56f665c8afb92eaa6737badb8 GIT binary patch literal 389 zcmWHE%1kq2AP5+NDnJ+nLI`V-1S(?zV!{7FP-nJz3W&bqcpIdhL1xW50T3-aXFiyg z>zM$i_1pp_iI+y?e literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Europe/Astrakhan b/usr/share/zoneinfo/Europe/Astrakhan new file mode 100644 index 0000000000000000000000000000000000000000..aff8d82d2a2de0857f78217cc9d04a112d1e1a08 GIT binary patch literal 726 zcmajbTPTBJ9LMqJ^={F&3l|P!oAWG(F|%nHUS<}iq~*e)_$%Haw{N+K!C zh4Teh4oPmrT)9IjR}N`6QsnUbf9~Aud3&Bu-{*aw=i>FW^m@%K>=5`DG--IkACdTH zaz3Mf_*hpv{p5Z?*~s@;tYP7Vj8k8k$oQzB1V4mbQvJkE$b=g!-X~s;qcw-K_q4Cw z9EG|iKTMkJfyu+oFs080Q`>AX&7B3)?TIiWR|)l6MTqf{sr-Znxxq(mcvHiy>z5Ad z?6YTd&fYD|4FsWa?il8c?ZABh3N&@kz=HO}5S=#<%)`R6WoT&{f>zxKEHbzL`PB(+ znn53(v)xsri$7b?B}bX)(i=P4zUF{s2T8DeLJunz8I-({uyRZrqWh|xk7!5NH@aGX zfp$9X(KYfdv@87-?Rq_jwPN7Us|{H9Fahhgr=a_C)kpU?O!uQbZe0g;^Lva>5F`FQ zGC?MYw1j^|L1fIRqPwz9OvYGEqY%aai^TYzO%hb@1`o?I74m82)4~*XzLpy;ieIJ! Bh!p?; literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Europe/Athens b/usr/share/zoneinfo/Europe/Athens new file mode 100644 index 0000000000000000000000000000000000000000..231bf9c3b713e3676dbd8f3ced867973c601e104 GIT binary patch literal 682 zcmWHE%1kq2AP5+NDnJ+nLI`Uy2P$I&VyXW?P+~vB1w_woP;3CvJ8ND(0Mp0TUjWf3 zKP7|trvz36fcR&gdkcW*v#WeQfar6JB*60LCubIb`1gh9C4lMeTmc~WaK4F40MXnM zUm*0^bs#PS&))f9ns-TP1Bk)b6APyKTg<_3w6toIV3%fNXfcPTD zhrs5GD!-lp;)@C20n_5lXCd_GePCMR@p>>Vd3gbtmO4BUOiSjNmeXKbzhn=XHb_|urVV3n3NSJ= zF*C8Uu(E(?;vq1QY(P!|k}M1iS_X_9K<_Is@B#y0fI$$%W)$`D4PkHuVprE-5D~)Q f48}kX7m%lG1QOTrHP$oLGtf8I@ijC6vrM=EZ;PKG literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Europe/Belgrade b/usr/share/zoneinfo/Europe/Belgrade new file mode 100644 index 0000000000000000000000000000000000000000..a1bf9281ed1bc2c9b82ee64efdca60b4af762ede GIT binary patch literal 478 zcmWHE%1kq2AP5+NDnJ+nLI`V70V-n#V&4Bi5NGqj14N%%p|-hMG`Exl*207zbD%{nkG zJ7+$amg|`SrsZoI!L&k75tvqtNe0tOJ|SRQ*~S%2tLT`4X;m3@Fs;TT0jAYiohN|I zSO01PrZt|bf@#gGVqjY9C_9+e-tq%X>nwQ*rgf*>0@Hder@^#-$sRCmkg^s`8^+!g zU}Pc;85o2uK=$(qFt7l9sldqL;~T=@>dvkd2lLM@at8CyPci}17n)ST^u;1E2)%6@ z14#X)hAgbsZ@%eS>ov zn7+w$5UlRz%L)NdI0*Z?fN2rqUlTxlQRUZQT1@y3m=T6)i30g!%~HS55%?40>vTCQgTn3k_;1k(yRMPOPnCK*gC`GkOJWgAy8t)gQF zrd4Is!L%BW1ejK5b)En+U;V2InAUiz3Z^x$ih*gZqwHW>d&>_nt+V7MnAV+g3ry>^ zoCeeSC40cMLCRV%Z5Vq~fQb-LhoqO>@p^wOVUsb1!a_h#+h32XiZ-QDS9*B1JEZAyHA0FetGf zW&{eewrsjAon_86r)6eal=d>U96^wjMNn1*(l2(O@BRSmT+aF2?{l7e;9jn^^iX9k zGwo2o*}QD?X!_hsubkwr_9i6sD{mDGVHg=4ah!)3*N})!PbN`F~8|; zbk5D`{m8f86vMXA7TEsO2mL-7?C|WcQUC4p0^~b2hheA9?4kNydnfEFR>44Fsg&y7 z8W#Cp?s3?Y{4?g<6zu&z2JcVQN~yo^?GG3Xe}Mfx5jfzk@zDN*h5+(IS0)@hQ4b#- zya0zvPQu5V)gI~}-mnMx$;Lq#Dw#k%6kPi!_7 z$-Y8S>N}VoKN9oT02EJkz>J6oN`~rSX0V^7bF$j}a9N`pF2Cr6D^6EK=@C0zxwjmy zGFzc+lL@X?=0SOu0H;aOZ*G`0?%at literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Europe/Bucharest b/usr/share/zoneinfo/Europe/Bucharest new file mode 100644 index 0000000000000000000000000000000000000000..c4a391e73b97e1342d352c5cc15a0bace202deef GIT binary patch literal 661 zcmWHE%1kq2AP5+NDnJ+nLI`Uy2P$I$V!{7FkaPY42Z-Lj;S!kMY4_ncVy03^S6$1E_tZ$&ql-an%TOdsgT1=9yB;=uHw41X|vIKlx;AMr2* z(?>0o!1OTr-FD8I!q2LDrAX?a$`vQm-F}{!hqD7VOHh^d`;d5YG zoOwTl{=5N9OFUi(rX?>=0@G55o58g7p7jhMAhTuxn3kP05lqYVG=XXPnqn}mkdp$Y z6=Oodw33e-m{zs{1sel{ijD@DR+W(i(`r0iU|OBkv;o9W|H_pBqBWlU2Gg2X-hgSX zBX_~H_Lg&CT4%|AFs(af1DMupnGE)?e#s;--yo$F%r}f(_kaNijEbtk;b3&K=K&)# z6B&@1fkC1IWE7ADM!%K;BL^@z6c~7Yd_x$VfY{YF7(|3HZ~+NjBM?`|*I3U~&p_W; M$JfvR%rfBu03YwVYXATM literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Europe/Budapest b/usr/share/zoneinfo/Europe/Budapest new file mode 100644 index 0000000000000000000000000000000000000000..940be4670a64ece1265dd28523d78a80f9008dd2 GIT binary patch literal 766 zcmbu*+be@%90%}sMj|w^1LkaI%xs2I?q*lKMcyk>ij=rm+6Co;wJW)J9U{zW&V^E3 zD9Z6d&WB+xv@nOeA?0ekzpp>Qh3D;gK7F6}_x#=iSJ_aX%ltV+LIq74+}}rvg)*@) z!@q^mDDQTV!(s9o=(_ch4)+pIj!dn>(KQ~9*$3eG(5{5;Pt>&{J1w!ulWafS|5!!8 z!{-v@qj@>%j-4jtlb$?yYE!|p!4?noJMY}LkQZe$Jb76nZ6{rYJE*(TtibD-X?PRz z`#g8R7V6!vE!e+z&iUxvL-{-2q{K9#VU*5KP`j1hp+DAqk z?<}M=^#sbIHlbX+{OgAkDjs@a%!M7s?sW5XE^d88LMj)QV7y}tCUo&Iv8@9pH8sQJ zs#=&*%E8nkGfdMKK$TJr)58={9c1FEzxp!|W_VRlvHTQ0uOyncJKS>nGFcA_aq?F|tlevNxjtLc(Yy(9tYt-fI^jg-S ICv%LUKPFBV)c^nh literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Europe/Chisinau b/usr/share/zoneinfo/Europe/Chisinau new file mode 100644 index 0000000000000000000000000000000000000000..9152e68594bb66cc756e0407654a203952fbd4e5 GIT binary patch literal 755 zcmWHE%1kq2AP5+NDnJ+nLI`WI0V?AJVzvK35Vq~a4-h>sdp-|{-oD`y2Z-Kj_c;Mf zzn=r9ciry=)4R{tf$2RbRz3j9@7*yAOz&IK4W{?cr~%UlIE!HPIAeJH~pOdpPL z0Mkc248inK3negpOhXtda&?UwY4i z4&W>45UsuCTmp#JS+Wt#*PXHf%-3s~ z4Cd>XOak)_QcA&m!`O8XfXW$+imESw>61MV7@1g@(IFcv5OT0%LR6J33=Gm7AakU? zFaX&S6%0V0mH{IVFoYBs1Q{6k1Q*0LSs)l?_R(6_xt_b-EO;|Jp6o=H?`&9 zFgwUehJ5Q=GMH@!%xSsFjIbV_hM4VElK}^e%!xT&5}KG>*b49F>-@t7WdCCcAN|BT5!Rb6!lxDr*7-iz zprQn1f8(GAHVuctXZ5}CdDR9@)?eJJLpNvJ!V6D-|tkR=Tpw17xFHlHIe@4#mf=s9|2MDXT)K+>!gd;j`g6IH>S`l%{A!NX&tzhTmsjXjj`l^q7&OLAaXqvP&c?3>KXb%eMuUt z$^jbkV^}*jAa6kijjHWviW$b;60}Li8rrnd0&NyIiss)IL-UYkXpzK++oc82Qn3iF zT-50lGpv2up^eU4Xlq-{I#B_4Xw#rwYX-C*FXEH?97@aK&X!c@cr6_| z34*%<<;LKBpvWm;0X&eZ7A^HaAzyCZB43bkvnbSX1P90&+W6U*=2~R0=B@qQlCE^2O#(e}YDen*dSF1_@ literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Europe/Gibraltar b/usr/share/zoneinfo/Europe/Gibraltar new file mode 100644 index 0000000000000000000000000000000000000000..017bb2e34746c8a11c6955d49cc492c974412801 GIT binary patch literal 1220 zcmb8tdq`7J90%~bragw(ikvoW&C0EbSm$uV`id!*>_53ujr_DI8a5m+gwIY)!bVd*Y}#RENq_UYJ;*KV z8=%wVMcwI}2U|rlhV-=-?uKnH32Z;M0d`bSurtFXBz;}XAaeJS{m^9=q3#;j!Je!s ze2zO)f%|(?{m33kEV3tQ66ZVve)M~dHtc(+_}K4LUqJ2~y9|BdIYCE0!~Q@dOTNde zwoc^NO=HM!sy@MiG7;+jf_CJ$=528Ba4zaYJC(@qXa)v!VetJXJN7?BE8xdPG|RoS zR3yKHfj{bD)KEEG>}H|3@gj__trL>I7+V=!Vkv==^9)>i>NJ#Qn_=wUOt?%>!{r-O z;0o1R7#Aalval#94^3vs{qmoy;mSZ9RCq*C**piXsv3nV>oANj@Im#NHkgoG3pEGq zP`mG?a2D@>C!hCcl9T+uoev59*PNdIH9>w(xR4h@q~>yeos<_wD%1k3BlHHEO4>zJ iTZvn^MRE#xxP^dQ#cRn@Wk^)7QEOBNt%jJ8DEJK=B2RJv literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Europe/Helsinki b/usr/share/zoneinfo/Europe/Helsinki new file mode 100644 index 0000000000000000000000000000000000000000..ff5e56530570974516d249927952c69da601b664 GIT binary patch literal 481 zcmWHE%1kq2AP5+NDnJ+nLI`V71}b9#V!{7F5WGumHi%wQoG%TcPoE1+0MTa-JWT+q zVGvcm+W?})gwKI#apwIH`tt@bE%A8$1fVp7S)C_<%vb+v z0;V;ds)A|Ft72eU>nJ;z*52|1OzSLp38re#ss%ZIH4SOdH1D6kud# zA_N&2#8W}m14&>|Y8fzc0KKZf!0Y21!r%eKuCBo#B7}hpNaz}YxH`VZdZu~?`o=oG Kh6Z4k2^RpC0aq3P literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Europe/Istanbul b/usr/share/zoneinfo/Europe/Istanbul new file mode 100644 index 0000000000000000000000000000000000000000..c89186687300068ac4e8505cc0012a1dbf6a9960 GIT binary patch literal 1200 zcmb8tYe-XZ7{~E5FSAXTNrVmOrEG3GwK*+k&CQxqv}sGHf@y>|j6@_03WZimUM>(6(qq%OZe?4YG+iU~q@#8%7`<^tk zL+gW{&{qJw{j7-*faZ4j>uX9k_rVRLpDDSEXC!_7&UM|3ozBb%#WR9z9=R+a^~>r-L0 zN(y(x3!zxVhcSU3DDjsx(ETOutx)=n2V)(7VBE_EC>xrA@s_tRp}oaL`x0C4qIaIW z4&_ysVN&@M%oQiPU~+mlOer`6cZHkaZpC4*D-}=~cDjM?tDMb5r+G@zd!ELi_fD(O zDytTzKaPOv3u34-Gccnj0PbrQx#)iTb@OO#@~ literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Europe/Kaliningrad b/usr/share/zoneinfo/Europe/Kaliningrad new file mode 100644 index 0000000000000000000000000000000000000000..0ec475647055bd235131c6620aa46da7f43209ac GIT binary patch literal 904 zcma*jT}V@57zgm@w5{f_C5byur!8&H+^n^^TBWr*9xbcLVy}mCaPYfu?lh^CuRF?y0IxIOm&(HJzOm70uo4z#M%6aDC<9YE;ROGxj#afEr z1zFjc<@Y7|$ExRS@q!uWtyv|=xg>o9x%AoHMb5Sd*I-$)3zlC#3)ghUp#9VVxb{dB ztO##`mG#wdo!bf>HY?wbs`5?HY4FFnael3W)gNWJe%1(UUVMkHkp<`;%);86X}BRV z4mX}lK~Jn7ZaVskxV#-h(AO{w>-JxS{<5oZv-f1qU+pkZ+8yU6@IH#X_2+TqZR39A z?b#OO`k{TWVayG8bo=1WJ~Irq6~SEz7jf-YzacBJmB@{bIb>D&g4|>nLvF6jAUA)0 z1NZ74<(zm5TR!x{P$~(->4$M{B3CXTYhl-!Wzye6uhTC#{4;c7@qfn(JyBtRZ*H?o zqBj>%9#M@)5+7o-(`xarf|7+-s07FIa6}_Tjq*Vwl^azwk!YisA#!yp`P(c#H|PHHzu!G~_`JUEE&~f$0>42`z-%G!4&%({7PrJQ~C zf}FE=2Xg~gFmLu4>PB~9e*X&8cTB^Amct;;8~Wy;v1}O@)(=9HdKeZNn*RK1gXY8m zKh2r%9mvI>KID?4OytsA3$kV14$BUbVEMQPS{E6#bw$96QB{!MtE_rLwzq#HJ2V%_ zRrUwuYHpPw#uCdXc?ub*mr=`?sW`RFu#b zdWDOO>E`LlY(0}QR$V8^`0uc>NZN%coJZp%+U@bO9KDgZiFYCMG&p#>n4E8UM)@zw C4T--1 literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Europe/Kyiv b/usr/share/zoneinfo/Europe/Kyiv new file mode 100644 index 0000000000000000000000000000000000000000..753a6c86f38586797589233f4528837f5b09151c GIT binary patch literal 558 zcmWHE%1kq2AP5+NDnJ+nLI`V72P)$LVx|8;5Vq}j3W#1Mxg1PyT_TwP;-5OJcL7A7 zdG0L$qR*}rp8%rIEpi6)&z)US0J2Y1efb3tEhcft0Yr;)+ztTKzxWS;Xo**RV0p>g z&JG~H)S1a(zVx02A3%JWH50+K?3^YrE!R^FrsZo=z_db6D414^aRbvzKIULr*+v6Q ztLR9AX;m36Fs;V@8$$OgJOG)m@l?D4L~CB<0MlAWeu8Q3Ew8||&XU_;T6fABFs;|J z7fkDytOL^qDf7X!VeDxJ5HOq;7{JKH%*w*b!pw#V*_q&w9q73^AT2pfnB2 zT8w7%$SX8ndE^z6R4XB(ys|=+O80#4KmEtObM|w-zu!6M&fc9B9zGFh%UJYcQY*+H zmvHedx2a{zsli#GuA{ryhQ#=xm~di}^XU-yw;nk;c^vsc<5l?ZvIwTgo+`*XiLVej zHEIM(_sC(|nX@pR$5xPa8E#T2V@;qgn~p)wZp?%^nLL;)aYO&f4Hk0Vty3^R#2EDg z(M?!*P#G56y1m&JPxHD}x{XSX} z?9p$jaXv=+ts*J6@>*d;#?KQsox?ow~~F<&ep=k!R!U~haN z?2GV(pG5m%zn=pfaJPV;_j2H%EgKFQ{efRN=3H{#S2cawc{MmZ@*9qHjlyP0m=TCV^;ItqP&e%o3AG~vLRyzRBDIKDn+9#p@ zD-8By3j#wui32sF*l?wITR53$hMK`u0eVnNs2fY_+JbrH)poy-*YHN6j&?U(tJFd} zRRMJe$|YoHT> zTcL@8Dcs1`g{CY)EIHqF#vYmtnn3eT9cWRv0&XgtgO=&TaP!?RXeDlj)}dvPACL`g zeB_#pWz41DO4Qo_#}aocFSbsZg`2ssFzZjgsD>s}naEI~UMiQVPAUv7%ynE`g$z$e j5As0Ols~w0Dk_2U`XboCMsYHe-F-0ts2>*ysB4!wN zXug`Im0Dh9YNcu3<~b3|vqR^RM_Kb)z0dEZzr$yY&-;CjcjIM~2Ze{ZQ~w=2b_aQr zA^-o840f9V`(FQt9imf)&BS|7`3&qa5EIkdXmomZ4ZNS04l`0kkhxkeCi^mDm(f{g z)6fs%8_?PQW$>Zb66POm3xPS#buiaO$~mEB$bFtrU7Tu5%sbIe`rF&3=&E}*u=-*ue0OOD)+pj&ZD2M-_P_TyiLUdkhV_ab z%-8oB!X}}UitKAjJpr3L>|o172EN_ET#fuF2Uf=H)qNfwip=UBKqh~{X&~sOU(LWA{!JonV;k<(> z)_-|9qJLA|IiL~pcizbSYNCvMlX$V&uuyWDSD;8LP`FYd}W=Os4r1KgMeJP z#?TY4rIR={w$M-z$=RTTMl=4@aDk(Wc4EXtU=QX!EE6wBU{mt`Dq&7I6Z& z!7U4JRLnt3#|ah14xvXKwBolyYwKLj&(Gi{Z4wmKBtx6w9056Jn^yogS0_Td>ndoU z83DzS(a<5m4{q_5L&s28xK+9bZaaKLMegThVvTlo*@1SR-vuQ`=A3FFbkWSh?Il_$ zZR~6l` literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Europe/Madrid b/usr/share/zoneinfo/Europe/Madrid new file mode 100644 index 0000000000000000000000000000000000000000..60bdf4d07e6ef544ff18013b272dfb851f1cc27c GIT binary patch literal 897 zcmbWzZ%7ky9LMoHb*angHBFbd{F^Roo13%2AW&F~K*xd(692#`2?C8JdsGpVgft|k z)Po@OBtg)0m4;yE1Ggb!EA!8TiNqixq#{EH5ykv{KRxS-&>eR#-uL_dj^m`pt5>SH zeGi^Z&_#!|{}vY;JHRe6!H(P3mmE1T6W%5VWgA-di|C=wHXl77Reblr&)2X%zBq#Q ziIFOFKz3pM+1(uU^PU^4;Et)^}Ie`%^n4DR-O$nJ)ZAy_XhGJb0lNY9a^{2MN0o(Xfl4 zixcG{I_0#w2sA-gqNo?@An+yK+)(L46p8Snfs~4-o!{3#z^k6aIUl~i@ADkSf$=ph z&DYtvOCj%|n-+imk!pFHQoc2(@)D*3P2}s+0|5pXHc81hA12?7v3m0DlN0oP9s_z$ z{Ri~@okQpc>TaTc=hP#AZ7o5+@S~EW^NSyKBDpkRNB$;mAur#*3s>5-nERdnFzpMJ zSutO&@M9iK+ZSja%6o}EwA+P#P31;^X#0%$;rbkY-;u#D(Eg)wFXqR`UgW>8+{h<8 z%kcEks6gM1`9{KoqOlh_LaKqv@`o_;aXb2`g6A+=Z^JxBoeeMOv}bMu0n-4n=M!zgk>yM&y0yB9ghQOhxTCFhS2>{8Y)dTr8o zs8cSUxi<|{wuj;6fCuVlpTX40DUQw?20y_xsSl<<6=6n4H_U8pgIDVA!K+RlX5DhY zY|{;xV=%(p*c51tvWxV7z#EjLh(N?`Hvvsi)1Py8H?kX%IV^n-BCpko~h+Wp_QV^WiywUEhd-MLKfN7{{Zl9 BGR6P^ literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Europe/Minsk b/usr/share/zoneinfo/Europe/Minsk new file mode 100644 index 0000000000000000000000000000000000000000..30d3a672bf64d0d787ac92bc75d9bc1cc62855c9 GIT binary patch literal 808 zcmWHE%1kq2AP5+NDnJ+nLI`Vd0V?AJVzvK35Vq}<28doIxyk}WZ(Smp0HROD6F zyy64POWt;N0P&^HOa}9%_bm7T;>)a=2&QG{G=XWko?>tsv|@}Km{#&J z2h++n8em#QM-oh{%5Z^c^{)~IAagaIiZ_60&8r+>TI#MKA1L)JzB literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Europe/Moscow b/usr/share/zoneinfo/Europe/Moscow new file mode 100644 index 0000000000000000000000000000000000000000..5e6b6de6451b4408fb71ef73950712a0827d49a6 GIT binary patch literal 908 zcmajdT}V@57zgm@xShFX^l`D=a$DNkW>agVF@uYTw)B#{Vp^Ff_g^s%Jj%UfhmShojppzDoJYKKzu?b64|_9x5IOUqcb4-l z3Z!6gRAIBLPUc|9Kf&HHpC}sAp+DwO6Wo88wRVcL$?O?>$F8x=C~UbgpMdi#bFAg- z3cR=G!wToM(^ruzrZNT2w!4GSe*FS;Tsi~So$rE`z58L+;V4`m+XkJ%YPg}+3SBl6 zbeAnakL*eE{+=HeSpB6u#d%}jv!d_k(f7Xi25Tl~U~Tpdth@FUZc0CZo6lyTuWJz2 zADJrfe*V)#upu-8x9sbOjrJ7W>OWNU_c7R1(U;_PO&=r3frSp_?N8juJMux~;Aj|z z9y?(3fD5(^6I8lO;m)+J!29h|XOY9l{~$+PuaVX8C*-Jn54qL(9JzJw72K`M7JWMo z_k13JZTBz3*!1lr?;pQ%3R#QUJ0)F-PG6#z4RWb$FdBr5u4VskFP>;J5IF;Ug1GC6 z>Mu%0@qCV-TZW|N;!7#gY9g?>D4-@p|eEYF&HYd(6+y)s6>Vq;E%U6wc@bvN7a^mq&J@ex>0La+5y~ z*cecGL!2%yqE!fJUJEu4~Q6ZJZCbm*%1#P#i}Nd@Vxmm@7x_oN>Zn zcpL1RXoKBt8rb7^2z2j_lXB#n4b||Lkc0Yd_bJ%xl)*c@4CvoAd_wLku)+Ss$b$0& zaNt`9y!WaiO7{=G9*3bw9~|m$hr>1-JdHeZDGDFdy5PgZWpK2#1U}j#7wG)h z1|#zLrVB7!8bm!jyVOtph>LqiKAGFil9Pcn5Bap&f;@Gu2u?fRw$UJX<1+gUodyzn=2s^$w+ zrM!h{F_R1a7>4Q(J#fVfKTIF>!i>-mOZQ|3yWz^lCb;UX2WB0sgV`=OT)n>%=Gb_s z*=&Vtbj47c$-!Ku8gg=rhwkTo7QwY2wQ$`_70eq`!1cYqpswXJ%s)R1_4SXTp(X^4 zRb9|j_J)n6S>(K|QN>!DsS}id!m568)i8~32&`2Z(8iT=r7z~E%5eAQn zSR@`x4U)2mMB@D@+So*-EE183h4cNpNEhekJHPw??l~v-NbP;SRouUWXDg^^NdIrC zXUh^vG^rc0hb!QuD z)uBa2nWjf#V>42rrMraPI zVA)X;EcbswaXkVn=EBf2aRMuc0?_K&g0{|(z{khMJP9#5_WPgAaf(U$F*YZ#>+AVs tj!PFf1@-t0ms{dmSvecqXp*=l7E;+ug^gOG+it10SVgzZN>jRu%j(UAnxsxp!w;~3O zq5f43Olv$92h*BYIl#2mk)L2%d&?^@t+V7dnAV+g22AU<>;=>MCF{VnLCSnEZ5Vr+ z0R)VE_kd|*+uZ^nhDp#gFl{P37fhQORY2&!^ z(I5viHpmPN;zb|>fFuh8gUTjG4q)IZFz_%iXc;g7t>6=25CMrWN-!{3I55hB#2FQR zd_x$5fY>KEgu&G{guyr1o52}KJG%k}e1lzpfW+Ipe1G3_#$hnA`C5Ag z+xJn(JLsiH-2aF}-j*!CnS1h6SG*~ZlCM`HN6&2~49~AocKHKQ^6?wiNEf9}#EhlEg+ z_AS<#G5^vK!aSV+N22*s$wTx@k=y9M9vnfxZF!CP_VNeZZ-);_w14NV7xP%miyVJ6 zg1o!20QdT4B>MfBe>zGit~@|aay3Kcg&vrE=LY(e(qVX@a~Si~^y|oJw(|)i4yZCZ z(5nJ9$ZAauvifBna>n;Hs2PaEL%}$Du3HB)J*)6=Qw(O=>p8mL5zAjEnOzux+N>3r zqYNhe^$zB)Pr;*$Zm4@d1oM2e9G&N1O~QQF7(6!UgvW38!h()2c%tPhJSm8O63_E>aNin6`Sa;oC9>%(-CZnUimS&0h{l}V9VYFbYE`a{X7f95f&Bw>ywzo z6o0pWUlUzoQADN};xWi1@fUDXEKy@CixX?c*9MtMZjYA=KsBJAWgN;!E+ySR{-=l9*oX}_o6^XdD%9sd2D9RqGX3tIv|K~3chf5pO&NqEQo z^4esj6XdZsriHJuc+JW=nIQA)$i(Pd3;YxgN!bfKC*=Vn_LFX=krlqhM_O0zPD0h% z2uz;shbiN2Fm=!l)4EJB-H`(`%-KQ4D>F|H)k-PMiur;XiN-_wnhzPwxqEX_&b@p^ z)*ju%Jnt>cUpj*YQwOkcWCQB@7GP1gFG%$)IB3xdw-B?)z`>% z)<CmH>7_DHayM1#{D_yxY_d1`%Uvh$WDjKMY-MD>=DF>epILGY(F#U`F0Em`& z#Rry`yzT4&;!B;G4CYJkS?~eGmsv9rOv}z`0@HFm#b8>#CIw6@j}4 zrj>0pz_f~vB$!r};R4fYy?S6;^D0LJ$b79MKf$#2mRDd}XUT0atvlrmgg$ia0s|1} zwX81y(fTC|z_dZiL@;d_y8tY2RJ05v&0uW1TL46x1Wg0erm}Ovw3$%_g#KF(rY)qW zOaQ5~xSI&(TmCKs^R4zegZb9CBfxx{W$|FzcDEInwrg_))AqAvz_de}GMIL3u@nHA z=j6r;<~yfIgZVD1&%u0G=f7aS8|z6h-(C4WnD74X8JPBDJ_w=DodDBbj~9b!?{%xd zw9lFS6F}zs_Vs}Ierpzj`Tlu%V17VPGngM3-UX(Ea#F!`uz6eqNMDGLYyu+_Gb;-a zGP7YoCUy{nh=Z9B0URU;GXsPC50J6)4;Wa0i9~^c0~nPC3_J`Bd;$zW2gxWfiU0%G vfl(49&L|6FGw}HMhA;#Jv8!tcgKw}mgENqJb`1t`T!4Z=1{Y9R*O&_c^%u8U literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Europe/Sofia b/usr/share/zoneinfo/Europe/Sofia new file mode 100644 index 0000000000000000000000000000000000000000..89450685cd149950dc6d65d1b4f076d96c3dc9a0 GIT binary patch literal 592 zcmWHE%1kq2AP5+NDnJ+nLI`Wo1uA0$VyXW?5Vq}{3WzQ`{8$1+pLy;r0HV*X6rTX1 z&neE~#^m?}O1(V{wU!F(~{ z0|g+yIL~=7U;Oii1`uE3@j@^yd3h3;mO9)Frlt3+2g))q$gEiare)_$1k-XoO<-ES zrWi~sohdrj>2X!L*8w2AEcrkp$CfJX~N}oz=7f#8Cgrl>nkOp1chJ z(VAD@B!FnGBj>?zV2q=o{nR4)@--=7S|KMCOe@B?foUZlb1bR@yFs*EJaI0iKyE-nynqrgf*B0n>Udd%?7R$vQA?kTM@k8^)ey00E<- zWnkLab}g7T3F-jTrn3ED+RUgz0K_o+TMwo!q^C>(@oh?E5*V48m>F4EnSc}%D;pYQ zXTb(pfFTQtUl0jo%P24cW13HZffvMP5M*G`GGGv8V6bpt1O|ha0i&#sZwNyO5IegD rgNP6YS0MHc_6A}XAR8#i1r*UW0x@-bjrC0R4D^k4d<_l2EE6sO`iG<- literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Europe/Tirane b/usr/share/zoneinfo/Europe/Tirane new file mode 100644 index 0000000000000000000000000000000000000000..743a7337ffd8c404d1da0d2d078ea1cd8459affe GIT binary patch literal 604 zcmWHE%1kq2AP5+NDnJ+nLI`UCnaB*py#Ik<+A5O_5Pc%Iy#Pd?dG0L$qR*}rp8%$J zyqo|smqWwy1DJkqmjI% zOWux80P&^HtOv_W@7XH=;>)aA2c~7`%m>qQJrlsRd`%;mR>&y=(~2?4U|Pv11WYU2 zxPoaF9WyYkDx(gj)p#Vpv^uNv1d#daUroTY##2==t$9@pOluuw2h-YHet>D6C6Msb zopKAz*K0Wqru9qqfN6u2wP4yX_ND+M6RD7aL1+fZHGBdLEI>aiFmm|#hA=q0f^cvM b0~e5`YY1ZM_!{e(>KW+x8XACTePb>FP|$Lw literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Europe/Ulyanovsk b/usr/share/zoneinfo/Europe/Ulyanovsk new file mode 100644 index 0000000000000000000000000000000000000000..bb842cb1f5087d422630f76f17c3a5eee6490a6b GIT binary patch literal 760 zcmWHE%1kq2AP5+NDnJ+nLI`Vd0xDw%Vv+wqu#myB0YqIERa`d0}st?^X60mRp= z*bkwv`~r(>9eE9=wYS^>(>hDef@$3;`@pnb%X%=aU$Ov98>CDG(}uBoK7hu)cS$4W6TmY;~jWYlM literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Europe/Vienna b/usr/share/zoneinfo/Europe/Vienna new file mode 100644 index 0000000000000000000000000000000000000000..75339e98d0a72f2792924294d7a9e560dba4648f GIT binary patch literal 658 zcmWHE%1kq2AP5+NDnJ+nLI`WI04ie!V&4BikiRHiA4JdQ5l;ZqS8sg)(Q|IDn*gHc zF4+pE=k1&Trsuaz2h)oRqy#|ni(R6@{1cpoVEW8+Z?O2;mEvIjxkb)k{`pBJVERIn zDww`lBnF}DUBUF_Wa$YY^R9R+gXyc5hr#04G`E21>pBqoZg5T$0QpncSN#Ks7BRk% z0HQ^eUrzwhV#0U8v^euw2>p2R(O3 zw8m3aFs*r23`}bsWe3yRTYi9Poh2{9wC;e*#o8xQr3cL!`PbwOpN3~ z1_u5>u%8teSr{1j1Qk literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Europe/Vilnius b/usr/share/zoneinfo/Europe/Vilnius new file mode 100644 index 0000000000000000000000000000000000000000..43c3d7f1089366e1c48297906c2693712ac6d99c GIT binary patch literal 676 zcmWHE%1kq2AP5+NDnJ+nLI`Uy1}ftOVzvK35Vq}%3y7ZMFCPG+7q)uM0MUy+8hilJ zi_>iMI;SCHxwpa!O2Ll7200R#&02LU37HAnTh=ACP5)2F$4vexO5k^HH-w=jy yAod1gXV(x0S0MHc_6D+pK@1n50Fc226xKBYF?D>6^-T2)^o@0V4Gq976D|N{`JSl& literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Europe/Volgograd b/usr/share/zoneinfo/Europe/Volgograd new file mode 100644 index 0000000000000000000000000000000000000000..0715d58bc1873c8bae589a08752cbbae562692c7 GIT binary patch literal 753 zcmWHE%1kq2AP5+NDnJ+nLI`Vd1S(?(Vu}Aiu<)zf9T2^B33mWUzo`1m10Y&V;+z49 z7UwwY0H%L2ZUE5|uNV%1Xvy2AV0o!Ctzf?No=Fct;xcQR!L;n05-=^-lM1HgYr?>^ zLXJC_R*bO#(@H*?U|QKm;{yW_sOU(7X;m36Fs;V@8%(RSsuzId)xS!BY0WEd5;W|9n#dBNHYrAt;OA#L^iTEMk$>@(!jN|a=ce0z*QtNz?kLXBUfw}I zS7nf?9Ob6pN5)<; zimVsCFuU^s%(>qRk2c?cx!2q$=wdk|XdB7!15jxJ?_a(A)+nK8`}y)B;; z_&3Q_9OQpQU`dRbEQ%DWFm1I{V(0m=J8Ec>n1dD$zEJV3*h+QLX)~WPTSTYTLYCN6 F{{iE`PO1O^ literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Europe/Zurich b/usr/share/zoneinfo/Europe/Zurich new file mode 100644 index 0000000000000000000000000000000000000000..388df2969f2dc56738183bd4f0d5755c4533a797 GIT binary patch literal 497 zcmWHE%1kq2AP5+NDnJ+nLI`V71uA0!V!{7Fpz`5W1BfoX!qx_&Pl;zSfayntVEXiT zA25C9P%y}N22thL6F{_>@EtHM&U_X^f8GbCB_6K_(~_4LfN8126T!6fp1lGfeKKp- zfoa(}^TD)S&jc_nU(*Pt6>^Hev|>y$m{#%$0n^Ghu3%b4#|%uX%BX{BH695tt)Bq&f=kD2c>UNLD8P-CHGgFOLTq+To!N|l6gbWNpH-HKl zyxl;meIpn+7#N~67^~5w?UK*{(az6b z8-Qq#8$dM39UvOy7BCHT4~T}kiG`Vk8Rn><3m``Uod$Fi&}lqirwM?Z=7HfnE}%hq1{R=M Z2@D)Qz99_S2Btu4#=vC*B<*y~xB&JZ61xBZ literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Indian/Maldives b/usr/share/zoneinfo/Indian/Maldives new file mode 100644 index 0000000000000000000000000000000000000000..58a82e4eb701ecb0413f908c57080646be392bba GIT binary patch literal 152 zcmWHE%1kq2AP5+NDnJ+nLI`VN0xDw$VxIp%5Vmc;1c-jCe|QEXP{!p2$P^&S!oc7b Zz`)_-8^YiV#M%a?3|uxq(oWZu3jmj)7K{J@ literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Indian/Mauritius b/usr/share/zoneinfo/Indian/Mauritius new file mode 100644 index 0000000000000000000000000000000000000000..7c1113488200c4d45ddb533bbebd899e2073f750 GIT binary patch literal 179 zcmWHE%1kq2AP5+NDnJ+nLI`VN1uA0(VxIp%&{@wq1Ef!a^{oS#zFlMhqCJ_XJpj|^ s`Y$js0wDu~=?jp6TL2>q1A~PF1BZ`q2!pnPDG-}5aM=J!J6#hl0MNJ<_W%F@ literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Japan b/usr/share/zoneinfo/Japan deleted file mode 100644 index 5ea81c5328f8eca3455adc230e3eeb267fdef290..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 318 zcmWHE%1kq2zyK^j5fBCeP9O%cc^ZJkbvvel>u)1J-1zaU;O1HD54YJFKHOd_`{B;B zM<4F?{Qtnr$OM5549(0y^$a}=7=fDWCNOY7NFU!21}_&N4h{iHGlFmkVMlNQ)qx%H z1EdQG{sTekp(O<%8ssQ24RjcY200EygB%E=L5>8|K!<{8kYhnK$iWO`xtI&+d|gW} E09+Vl=l}o! diff --git a/usr/share/zoneinfo/London b/usr/share/zoneinfo/London deleted file mode 100644 index 4527515ca3f249a44599be855b3e12800ebe480d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3687 zcmeI!dvwor9LMqBn$hO=nHU-N(OjC={5BD438AqqmtXotj4)(rmX?v0Q>h%sdF!Yp zo})#oKr`C_xqiB{Lb&^cR0@Re!e`th9*Y2 z?s+_D-{FVH75l^M!1wGg(;6)@)Asu5>D%3A#+-HLtLZb$%#7N`e7IWAO1))f51OvO z9<$NRiC<~HX;Y%-HteV8HO|wSO~Q5NnPM~FwcE@usG%1WUDOLVB!qLWFw2r-&GM9GCcA5d$%*NuzjG_IA}ZCata{n3s^>F6=R@i(EQ)-zEM1 z{+IL*D|hQ3mzJ5IzR1yQrUmP@qcZf*qf7NVZ<=1;ZI1b+WpAC=dad5z-D@@!`kT!` zjbwAi%d%x>J=yy9Q?hNTOY-}9)pj{5JBIg_ohd%wmNFScE z)f`EA-W(k^QXlKy#QfnAb3Ce&IT5``p9~Jur>c9*sgjDisC0xrU3gBPInYC&UAQ1Fzp+dQT#VNh zm(@0vcDQxr$+t|ECDnA*5eJQ$8esyvtufWolzAv}wyEyDY-)s_k)W1&Qqy;v)T)&! zwT>;8hl?jj?RAqS_{cm}XJMAAyY>@RZ=$G>S;Lf0N>TO4#i>VPJu0++Q`I26g=*Nj zi!`cKOEqrtxHP`@goFiDm9T;!X;O4a9?LG4@J+kr@hOE8@okPY9r?YuKgkgH$p)^- zKEJ7`lx)>3I#)f>{d3j4?hMr;YLseGnyy*~Pmz`f`m0tYsnYs~_UftqUU_J<~H`edI~ebcX~gem!|UqXTEKlZe|+Gd3s&}XX* z44JA1MQ2IkgE=y|uE^k188W0aMTTxnlh+P-WLRczNy;0cUjH~+hR^Mx-WU=h$>W== z5#63vDTy`Jo00X@$PPEuTY)Z>+O&qGUOcKsRk<#scC1%v=YNyYOXjLE`ML7W)SqQ+ z)(m+!ZH}Z*N|y(G?)T~IbN9(NeedJ@<;vgtoBhiF)3d@qefVELyM6n1j=f;6D$1uE za@6W*pGv&rvhV!;eLjti^SIje@VGkRbM}SH$H&M1INwFjzu(TQcm5bxVDX)Ax$Ix! zcI`g?Taa7oXzwXZ-+9n`fK-z%x0cix%38WQBFC1+%kZvIDK>C3+ z#L;%d(Y6HXiKA@_(iKPB7NjqZwlPR&kk%l*L7Ibf2Wbz|AEZG@hmaN_JwlpHG@ z8|_2-hcpoBAksod+e4&@j<$C?SSkDWJ4f30@)JCo;f$R=sdm#G**&xUcLAD68N03c|>=I;~Ao~Q_D9BE6v|9z)E68R+ zb_=pyko|&e7-YvFTL#%P$fiMd4YF;JeS>TqWal{At%K|xN4t5D-Ggi&Wd9%=2-!i% u7DD!r>wf1D6X@>q|3PH`740Ajuv5uxCsTM_vxw#q?xvC9aglCb1^fkK<6HXx diff --git a/usr/share/zoneinfo/MET b/usr/share/zoneinfo/MET new file mode 100644 index 0000000000000000000000000000000000000000..6f0558c3b6f4ab18385bc549894cc16098eade75 GIT binary patch literal 621 zcmWHE%1kq2AP5+NDnJ+nLI`Uy1uA0#V$T0SFq=m_0Zd=L^#MfBxw&ovh@QJ-E0~_Q za{`#2-!dIcpWrM6(`TN03xL#}T`3OcpIhV%=AWNr0;VrCseR?(ZL;_3;`??5#)QK4X0`og0Mk;3CxU6|J$nT}=E$sB2c~7`%m>qQJrlsRd`%;mR>&y=(~2?4 zU|Pv11WYU2xPoaF9WyYkDx(gj)p#Vpv^uNv1d#daUroTY##2==t$9@pOluuw2h-YH zet>D6B`?9W?vz_#TCe3anAR`Z1Evj9)`Drn*qZ{3z}O`nGVlp7umU}-z{ue18XN*7 cLKwJ!gsvfotK(~|XR2qQ<7;RDqVK*F3009MTi!~g&Q literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/MST7MDT b/usr/share/zoneinfo/MST7MDT new file mode 100644 index 0000000000000000000000000000000000000000..137867c8bf5b2df2e55e8c0c84ecc7deafc3ba79 GIT binary patch literal 951 zcmb`_%TE(g6bInjQY{^;jt>yp;scc0T86ezq4fc13u@9xa17|iG(iY%M2#93z#yn$ zVVvkjC19(G!59_72GT?!Mq}b*Q8%Iqq8k+rF=`^Q(BYonKhTYLa_+g`x#uLaxboqa zCNE37bi9LtmYja1fwviWh#Fu0cLOTrTXCa8IeO6s$8LUuU-p>cM8Tg{x=%!M80CMn zr$x%iuMP0ryLx#3MF38X_+f3pM!&__b*o58cPT}Q>Ceu?87C|X*$~N9DKDy>Qz$R4 zOu|O@By7CwgH7TXYp&B@AZ#A6lcfe~Lo8g@NkV1uAlK@-vcG&W(P^G%{vkA5(GU2@O@9^58 zX?R`iHN5^z9_BZ6K7#WPYH-1^SB%z1-zRv}zK3vO)>GK-RAGDSBMuJXB?h zyyfv7*!8wmp+Zsr1y~xcgNxgnVfVFC*wfrCQlIx!He6EE1eey$!an;Rc&qn4TxN8_ z<<`G^im~!9X4s#cfCJBG;B6n`@b*DLrNfSRAH4I*54fVY1Fk&&2CnMvRj9CQ{~)}( zu?-FuUxh=#BXH>VGf~H1y*`6)|M}CjK9w0X?S53p-!k7bv75s|nS~GVsOM2DGl8Rw T7hT~J$t$^CVUI`hNN!;PA*$7r literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Melbourne b/usr/share/zoneinfo/Melbourne deleted file mode 100644 index ec8dfe038c2d10aed29763ef8f664c8f0cd35c8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2223 zcmds%TTGU99LK+}!U#&qa>zjmwG<3Fs2G%z2S7+Ml$T?v1c+h>UqA&b>6eGmMM_$m z%$Oq0=%T`CO>-<_wXs5Ebj^bSvMs!v;XH=7j0d1+xk3v{-0;>p7*_azaM{j zZOsDxgJAawHym;|&y&p^?Q36eZ|{x!dC>o^1_w$4=g$<|P*+CaLPvv!TVete0~r=H zX}W?7Vl4RAbPGwoVIf~cTWI)Y3w`f*3%lBHx1Na7ZC`z>NzKbt zW}oh8+OIofPiksuji&ywPZ8<4inwyZB4<`xdm<~O}*Nj-IzydzU7M+z-fQc53yR8m;LnQU1|ft!>HB!;SM)5Gb;B6*;!P;65u{7H|HP zC@YE!v*PgUR($g(E4g~fN-tlqvf(}}?>lXeoV}<=-x$({why%Ng>G$X>QKej!+NZA zuPSpJRFz(>>i8mUj?7WblsenutF$e@6x!C&EUW!2&9?Q=vB%$;W>1{F#h!d=+@7)@ zY*>25yE9|-YbvD8G*EKQdKX6Gc-@8Auj-B=eNiTLN^zYAW^8H$#oyAe;=QW>? zQ~rP7NvnI!+sQTW8`4cjL&Skd%x*lp?O^uf*=-23Bg~dCd%|prpJP{;Z2|l8>^6qk znP;~(%-%e^&0%(j*&eVzV1vL8fh_`i1U3om64)lNPtR_nz)n58tz!1-*=-iHThDI0 znEhfljM*_}%a}a_o5t)K*fy|lVB^5ffvp33_v|(g?B286KCpkF0hkV8T7c;RrU^h7 zFm1r}0n-RfCorwR^un`i2BsUHT{|%Sz%&HY5uhbNPk^QXT>;tx^aaxxpfi}(V0wdT z4$vLXu0241fCd2_0$K$02xt<}C7?|}pD>NWbPCfdOs_D_!gR~CYZsUB*HECNKudw10!;R6rVgwKoep~M|`Y=C$t_ z!XO(Tu?`y|F$%9Z8DsB;)}@lS%GOdd*5?7$My+!x}&gj>8D09<`Pv|15FL>A4@?IpXeEI7L2eJg{9p$jFh4}?5SSk-{|?L# zV_O2|hyA|*=7&FP1M?&9Zvyipk7a=QQTwNW`O)iJ!F0@u4Pf!u{&X-uu459IAD{0D z<|ky7JYZyEVP;`wW5t9F3>z94fc}eT0FiMX3@rcu7bh@s{r{gDz`)1Au!h*^=&u`b^MgPM&pXdAVoCC+`C zvcm``=uOA5{41PrEJwHt{|M7CV(p{eibm4Z+xxqm)QESkgF4hS$5Ers1p1CDfgU!6 z(IZ)5bWGt#$39H)^!(i)9`xw55c*!K1$}=ujec-*F-^}soP3HN>rSEL!2$I6@lo_d zXE%D%eg*yL@JaL(>q9@b1~~eigp5NcH7C%?@25NH{>4hy{Puuypxu5#|lxYP!VOcfdDJ2@hZqGWf* z#1XifQD+S8f@|L9!Q!rRxHkR~D%*46x~tQ0ee(h=ITL{!bP}EjqjJB1rSkW1Bg=5Y zHrXUol0-UpWk5fl8X~DqO5;i+2a4d2nnW$ zFoQ`(Ovtqukr2`sr|aQqMn=~}Y_&Ov-F1LIu(CLal(trHu)8b{jjfigVRaf?HLGWJ Hl~vNe?I}r+ literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Pacific/Bougainville b/usr/share/zoneinfo/Pacific/Bougainville new file mode 100644 index 0000000000000000000000000000000000000000..7c667093c50d33ce9161662a732fcf6c5092a38b GIT binary patch literal 201 zcmWHE%1kq2AP5+NDnJ+nLI`VN1u6q!(f>dYwk=2lL>IkXG66)NaW+c;(U-JyK7h@e zcfEm;iJ6IofnnkekU-}L1|Yj<0RtxkL)`=hUIvC)8yEzAd_x!le1U|vp#g)ofhCYO OWZ<#^l6Ja=hFky?{3-7M literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Pacific/Chatham b/usr/share/zoneinfo/Pacific/Chatham new file mode 100644 index 0000000000000000000000000000000000000000..f06065ebd18315683f60cf87839d477a1d699f01 GIT binary patch literal 808 zcmbu-xl0^T90%|>Uf_7F7mGw)vmR0R7wQJAa>;eXql%c_?1YYrH2--=QZTZNiknW0<-&2Tk1@ zFm37!Ojl=N#y~I3w2Z*44{r@0dZ4+|Zg@JZF-o?z#c<~%d?DBj7n)(t?_`+!wG8HM zoI^`*63n03gD;!Tpmk^k7Pu01Mkx&M!XndOSS$$|ZL?P~_2?xjCmK~&@~24WmY!{E z+_J3%oooBKpmFVyLg-i?h0d{fD2?~Q@=vGG)gOfNyB|>L21S=25VAbIjtd91>n)OtTQT!9_=&z?Q(bdl~`kTRh^xCfXu&($x^FPKScZ{+W;6LAHmmo40ZDVO|!4R{{itMG??cuXR iv*?GaQ&y@yUMh5?I)YV_S8|o}El1EJ$+ULUT6_eHWtUF? literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Pacific/Easter b/usr/share/zoneinfo/Pacific/Easter new file mode 100644 index 0000000000000000000000000000000000000000..54dff005b876339f5c1ff3dc0aeae1519c29b368 GIT binary patch literal 1174 zcmb``Nla5w6b9himPtwl1QAda2M{eoCrUvm&q}2T1(Yg+6cG$k7M2hsCX%Quq`HtH z7(*g)SQtbD4_p8VgcoBRap-~|iNuW|(HI*viX+c^|GG77JTK>+`@M5cy1BKLJ8HFL z*^tl)mMm<`uNi4j0-YtK@iotiry5Uu|BXC$kGaSCV2VNc8#k0AH_)~DiLK7V6XNM!*2jHmr zY&d$z0Iz*f!4VqkI-}v3K_k4r;TOE2Jr<5VEmN_%jZP`NDg7tBx$rH#C29_iGZ2B$ zi2FVX$A9_;Z=JmkCoJBFx80lI+1&P-o3Qf6RXB0P1t+zhg_AGW!ztA@u{0@fVEjOD)wE+<-@7+99XXyh12||F>fHju;FO{`sweK0-=%7{~q4)SOI5Vn1ZwV zJg~8T0M2%~VXou}PuIxKy1TGRdk5ZSxdi8gU4+f*VUCUw^XCRQH?$kh^+;9hyJevn z&Kq~ad)x=%{857Wf}sr9`oJIk!s1qe&?vexfPS%Q7T(*^0q;|O`dr+jF*HISZ%~iGfAbV gnMN~}1ZGkh_4J);OthvatCRI98cm{A_xBX|2T4)%{r~^~ literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Pacific/Efate b/usr/share/zoneinfo/Pacific/Efate new file mode 100644 index 0000000000000000000000000000000000000000..bf7471dd3fc26b7fba883acf0e0bf0a69687b31e GIT binary patch literal 342 zcmWHE%1kq2AP5+NDnJ+nLI`US2P$I*VxIp%FzM@|Eg*gDl`|c{^sh5uTJqBO3n0GK zp<4$)wDhK%V7|~8@eak-{>V7`3y4KQCJd$$8fTrqkVn6KnL7tB|-o&)Bq zXxD@Js?v2}z8ZHTn6LIb0nAr_?F{B?JgK?B00f$ifndJYOAjz#JJHyIi4iMgV3>Ob kq-DhcMivH!SsNHQe0)O~v<;1b*pPwC21wfJ8X9r|0JO|FDgXcg literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Pacific/Fakaofo b/usr/share/zoneinfo/Pacific/Fakaofo new file mode 100644 index 0000000000000000000000000000000000000000..b7b30213e154012a5275c1384b41dbff29860644 GIT binary patch literal 153 zcmWHE%1kq2AP5+NDnJ+nLI`VN0xDw$VxIp%P-h<60n+F9cjg90rvLxrD;OC5|4$8I hU}0d`c7cJz$2WvQ*U*qb+t8SS%LYi==^7ey0RV5D7HR+h literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Pacific/Fiji b/usr/share/zoneinfo/Pacific/Fiji new file mode 100644 index 0000000000000000000000000000000000000000..610b850b1dec4966d570eb36f9a8b35fd6aacd68 GIT binary patch literal 396 zcmWHE%1kq2AP5+NDnJ+nLI`V-1uA0(VxIp%FiUvj0U(>f%v$^bn7;li0YqDj8)kGdY<6rf2y)0MQY$Pa$-b9+-~&dmKzhMG1iE=({Vybd2RE zFdcjBSONnO#7SNO^W*QagZT+e9}}1u@jwQK3@kprAq?7vh74Rb LK+;av(2xrNoShE_ literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Pacific/Guam b/usr/share/zoneinfo/Pacific/Guam new file mode 100644 index 0000000000000000000000000000000000000000..bf9a2d955fc23bb6c2043472e8292d4adc20d4ed GIT binary patch literal 350 zcmWHE%1kq2AP5+NDnJ+nLI`US1uA0$V$uIVAoB3&84z7(rt1TuPn%DD0HQDGb$$TR zZ_M{Gfav#TKfwIovl+nrfA;D>LxI7Ffh#8z{mp@5%BR1VQ>!)VbC_PWN>#0VQ|g>a=1XGuAu=J0D+8M A761SM literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/US/Hawaii b/usr/share/zoneinfo/Pacific/Honolulu similarity index 100% rename from usr/share/zoneinfo/US/Hawaii rename to usr/share/zoneinfo/Pacific/Honolulu diff --git a/usr/share/zoneinfo/Pacific/Kanton b/usr/share/zoneinfo/Pacific/Kanton new file mode 100644 index 0000000000000000000000000000000000000000..2b6a06088ef603f03fb482b628347ff72970fe3d GIT binary patch literal 172 zcmWHE%1kq2AP5+NDnJ+nLI`VN1}b9#VuAlaa9HPd1CY%i6vlD@MC-F!ZeU~rDFK52 t|HB;^SpNS{4PfA4VAytnfk)TCfI-*L2#5_Cv<;0JxNLx=ovxuV7XW_87Tf>; literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Pacific/Kiritimati b/usr/share/zoneinfo/Pacific/Kiritimati new file mode 100644 index 0000000000000000000000000000000000000000..2f676d3bf5c8599994bcabd402ca30efa4cde5dd GIT binary patch literal 174 zcmWHE%1kq2AP5+NDnJ+nLI`VN1}b9#Vxj*)P-pJZ0Aw==g?<824En6v3mBQ0|NqZv xU|{(FKMSbz|Nr6y1}+AMBM%t(e0)O~bPWwm3_v7%< z556@8^H09wN&xXM3G#u(|F=m8fb28tPIq8rVrF7tW@2Uf|KHsQBsk*?h@7>7frWvg uZUO@b14GXO1|9~66$cmue0)O~v<(dzv<)nQv;hzsF>u)cMeKA94Y>e{!9$S% literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Pacific/Kwajalein b/usr/share/zoneinfo/Pacific/Kwajalein new file mode 100644 index 0000000000000000000000000000000000000000..9416d522d0a3e19ab6b81317f5b94961c55e91fc GIT binary patch literal 219 zcmWHE%1kq2AP5+NDnJ+nLI`VN11bYyiT^-QXC|Qlq7S|`y#S(5zT!#%(dXS7KY-}} zZPEcCb9Ku292l9H8Ch5v80I_xiOkx-z{0@Lvw(qvfuU{!1JD2e;SLM}3=As{Fo^j0 fhA?Ow8UnEagSLSsgRY?wkZr`kWdkJbfIKb$c@{B1 literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Pacific/Marquesas b/usr/share/zoneinfo/Pacific/Marquesas new file mode 100644 index 0000000000000000000000000000000000000000..6ea24b72cd9552c973510d1c17ace66fd35e1cc5 GIT binary patch literal 139 zcmWHE%1kq2AP5+NDnJ+nLI`UCDP;m;uKz$VCBVmn@&Er?3kHV&|En?>SbTg#7<3IR RjSU#MY{0agrIoP(7XUx`61@Nb literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Pacific/Nauru b/usr/share/zoneinfo/Pacific/Nauru new file mode 100644 index 0000000000000000000000000000000000000000..ae13aac7792a04fe97b0a746f546e52d32f484c5 GIT binary patch literal 183 zcmWHE%1kq2AP5+NDnJ+nLI`VN0V)Gwq5nXz__;O z7?~Lu=G1`r3wMC@)Jvyq$^g?_pM&Wz z{%2r1R$@~CBNHV9bZEOJwrVM9bXd=rEkmy0OZOh*Z=?k literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Pacific/Noumea b/usr/share/zoneinfo/Pacific/Noumea new file mode 100644 index 0000000000000000000000000000000000000000..824f814160ee4a95cc6a6d5553b3c1aacc907895 GIT binary patch literal 198 zcmWHE%1kq2AP5+NDnJ+nLI`VN2P$I*VxIp%FzM@&5|BQ=XS)JGG=JFc10Y)9*c>ol z(EPmvh;OvO`vZtJmT)OxVgy45hB-VSp%n)hSr`~*ZD8Q=@eN_nHZ%faLk2DzAZe#- HXvhTsP@Wrk literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/US/Samoa b/usr/share/zoneinfo/Pacific/Pago_Pago similarity index 100% rename from usr/share/zoneinfo/US/Samoa rename to usr/share/zoneinfo/Pacific/Pago_Pago diff --git a/usr/share/zoneinfo/Pacific/Palau b/usr/share/zoneinfo/Pacific/Palau new file mode 100644 index 0000000000000000000000000000000000000000..bc8eb7a55b8a20a8c800507b620d0afef1d477a4 GIT binary patch literal 148 zcmWHE%1kq2AP5+NDnJ+nLI`VN0xDw$VvhenAoB2h4v4NZGke3x^#8xk6p$%(B4Ba? W1B;Ju2!pnPB?FfYkhIgaO%~b! literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Pacific/Pitcairn b/usr/share/zoneinfo/Pacific/Pitcairn new file mode 100644 index 0000000000000000000000000000000000000000..8a4ba4d30a6b7da8399f20a8b98c91169e04ae40 GIT binary patch literal 153 zcmWHE%1kq2AP5+NDnJ+nLI`VN0xDw$V!r=CP-m|91*Ff^#fgKF>Hq&W9tMX0|2rxe eSpNU-Z(!i^@eN_nHLx%?0Few_HbBzOf(rmy=N5|q literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Pacific/Port_Moresby b/usr/share/zoneinfo/Pacific/Port_Moresby new file mode 100644 index 0000000000000000000000000000000000000000..5d8fc3a1b253d1df3a0184013469c6e46f6f6f75 GIT binary patch literal 154 zcmWHE%1kq2AP5+NDnJ+nLI`VN0xDw$V&4Bi5VkFf14I|ST{3|YDAV}^WJ>1;1{MZ} do&^k?KE5Fg0lq*&+t7f4%LYi==^7ev0RZ8E7y$qP literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Pacific/Rarotonga b/usr/share/zoneinfo/Pacific/Rarotonga new file mode 100644 index 0000000000000000000000000000000000000000..7220bda0adb9f04d704cb893a5d1ee8bd9173b82 GIT binary patch literal 406 zcmWHE%1kq2AP5+NDnJ+nLI`V-0V-n!Vv+wqP~&sw1c<)BFyRD9zrY%44G=A8zf}T6 z3sp8MfM{X)>0rJ{WHOj9^1l+y7qfH)^Tl3FodHrOp_I4)OrIzR^QD-a!F;I|kzl^` zBULb8ro$S{mp#M|=F4Tsg8A|bUxN7x?*GAj#m3WMzLKGg1OpH#XT4AW(JBJ}zt-9Wiayj c_=Yg(8X6cIfJg>i14|%_%Ld4{Gc@1=03*mq1poj5 literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Pacific/Tahiti b/usr/share/zoneinfo/Pacific/Tahiti new file mode 100644 index 0000000000000000000000000000000000000000..50a064fa0166a0dc22f89cdadf957a545d3f6544 GIT binary patch literal 133 zcmWHE%1kq2AP5+NDnJ+nLI`UCDP;m;j{iU~B_MPM~sx{xd3&SC+7eF literal 0 HcmV?d00001 diff --git a/usr/share/zoneinfo/Sydney b/usr/share/zoneinfo/Sydney deleted file mode 100644 index f4343b326cbc2b40a073d7c450f0d32d75e962fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2221 zcmc(fTTGXA9EU&ulo6zoNYcp>`oN zW=J!-s4!a79E&J7RtT&vI*_Jx)37$yP07sc_q-N2U9_%z{(Il&-MjbwU%j6vuehpm zq5j20cZUO-+`;t}bElTIpIS>-oci)UP+xC_ojX-v{p}ex&|0U##%S|hdh61J>SUWZ zdAj^^BFyi%B=e8EX8vD?TR_l73;6I43momS+ujJ%q;G%F*9(k84_CrKbJ4Pr*r<3Yqk>h0ZFs(B2m;+?Q_Q?PV4*9A(oR(`-ghphfO# zvAd3RYGzS`&9VWTz4CR>%ZArqIEx9I3iU?NH`5!I0 zeZ=nXI%^LM4JqZsu$G?b(y|vn(}PEkX?ev7t=MU>*Ql5XpB?z7zGQI;1U zX8AJ%tsv;C6}k7f z+p52}>aG5&DY~NCtP#~E59yicK5Y-{(vE<4wPWmKz z`FuR2y#F4_LHC$9k}KXD(sf5&@SYURXgs^&V8-Lw4G1$L%#bi+!VHSPV^o-7Va5dv z%(ELAW@w(>*f4|h>_&$f9%g*N0D%z#Lj=YM3=$Y6Fic>az(75_kpe>n#)=uNXE$2R za6P;6Vg`&EF=oh^F=GY|j2bg+%(#Jp10x59?%9nU7`$gUdSLjT-S~k301?21022dD z5HL}|gaH!=Odv3kz=Q%53rsLPyJ%p-;n~Fl6A(;9Fd+eA0t5w!3J?|`E@*JiB;d0)~kg zCS;hHVS)xk4G0?$Hz068*n!L=Olb5I;-+J-Y~ELWqeWCWx3QV#0`tBPNiT zNMb?>#1aT55KSPQKs7LJGtb2r3X&Agq|UVgieaEGD!X5A68GO)2c(x%d6Q c(gxDq1qtyqI3_zGJ~kmXJ|=rHidz);7cV6OegFUf diff --git a/usr/share/zoneinfo/WET b/usr/share/zoneinfo/WET new file mode 100644 index 0000000000000000000000000000000000000000..423c6c203a508a162f86fbe44822b78213b575ff GIT binary patch literal 494 zcmWHE%1kq2AP5+NDnJ+nLI`V72P$I%Vos2H-X+NsKr~;slmLk4Z*c|l1xn1ov|x%l zm=+3=0Mo+0E&?ERBF4YKd{O1sU|LN04wx2aJ`15g?*r2kkJp1~$;%7CwAA5=U|M?5 zUICCfGHcd>Y1ujR!L(e@1TZaM(+H*&a*DvTVoWlaR`Lk})5 Date: Sat, 4 May 2024 23:20:12 -0700 Subject: [PATCH 028/123] Fix MODE=dbg build errors --- libc/tinymath/exp10.c | 2 +- third_party/chibicc/test/BUILD.mk | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/libc/tinymath/exp10.c b/libc/tinymath/exp10.c index f80d13963..f42d7d574 100644 --- a/libc/tinymath/exp10.c +++ b/libc/tinymath/exp10.c @@ -128,7 +128,7 @@ exp10 (double x) Approximate the two components separately. */ /* s = 2^(k/N), using lookup table. */ - uint64_t e = ki << (52 - EXP_TABLE_BITS); + uint64_t e = (uint64_t)ki << (52 - EXP_TABLE_BITS); uint64_t i = (ki & IndexMask) * 2; uint64_t u = __exp_data.tab[i + 1]; uint64_t sbits = u + e; diff --git a/third_party/chibicc/test/BUILD.mk b/third_party/chibicc/test/BUILD.mk index f5a47118f..602d5a6bc 100644 --- a/third_party/chibicc/test/BUILD.mk +++ b/third_party/chibicc/test/BUILD.mk @@ -11,6 +11,7 @@ # GCC-built chibicc, and a second time with chibicc-built chibicc ifeq ($(ARCH), x86_64) +ifneq ($(MODE), dbg) PKGS += THIRD_PARTY_CHIBICC_TEST @@ -75,6 +76,7 @@ o/$(MODE)/third_party/chibicc/test/%.o: \ @$(COMPILE) -wAOBJECTIFY.c $(CHIBICC) $(CHIBICC_FLAGS) $(OUTPUT_OPTION) -c $< endif +endif .PHONY: o/$(MODE)/third_party/chibicc/test o/$(MODE)/third_party/chibicc/test: \ From 9ea64725b6a2f59561171998bb4a9bf8a50d8b09 Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Sat, 4 May 2024 23:23:56 -0700 Subject: [PATCH 029/123] Fix build error --- third_party/tz/BUILD.mk | 1 - 1 file changed, 1 deletion(-) diff --git a/third_party/tz/BUILD.mk b/third_party/tz/BUILD.mk index e14cb2536..8baadd8ff 100644 --- a/third_party/tz/BUILD.mk +++ b/third_party/tz/BUILD.mk @@ -17,7 +17,6 @@ LIBC_TIME_ZONEINFOS := \ usr/share/zoneinfo/EET \ usr/share/zoneinfo/EST \ usr/share/zoneinfo/EST5EDT \ - usr/share/zoneinfo/Factory \ usr/share/zoneinfo/GMT \ usr/share/zoneinfo/HST \ usr/share/zoneinfo/MET \ From 06d916b449357bfb714ca41346dc762e7801dd5c Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Sat, 4 May 2024 23:26:40 -0700 Subject: [PATCH 030/123] Add VirtualAlloc2 WIN32 API --- libc/nt/kernel32/VirtualAlloc2.S | 18 ++++++++++++++++++ libc/nt/master.sh | 1 + libc/nt/memory.h | 6 ++++++ 3 files changed, 25 insertions(+) create mode 100644 libc/nt/kernel32/VirtualAlloc2.S diff --git a/libc/nt/kernel32/VirtualAlloc2.S b/libc/nt/kernel32/VirtualAlloc2.S new file mode 100644 index 000000000..77b2af26c --- /dev/null +++ b/libc/nt/kernel32/VirtualAlloc2.S @@ -0,0 +1,18 @@ +#include "libc/nt/codegen.h" +.imp kernel32,__imp_VirtualAlloc2,VirtualAlloc2 + + .text.windows + .ftrace1 +VirtualAlloc2: + .ftrace2 +#ifdef __x86_64__ + push %rbp + mov %rsp,%rbp + mov __imp_VirtualAlloc2(%rip),%rax + jmp __sysv2nt8 +#elif defined(__aarch64__) + mov x0,#0 + ret +#endif + .endfn VirtualAlloc2,globl + .previous diff --git a/libc/nt/master.sh b/libc/nt/master.sh index 274e333cc..21a07cdcd 100755 --- a/libc/nt/master.sh +++ b/libc/nt/master.sh @@ -296,6 +296,7 @@ imp 'UnmapViewOfFile2' UnmapViewOfFile2 kernel32 2 imp 'UnmapViewOfFileEx' UnmapViewOfFileEx kernel32 3 imp 'UpdateProcThreadAttribute' UpdateProcThreadAttribute kernel32 7 imp 'VirtualAlloc' VirtualAlloc kernel32 4 +imp 'VirtualAlloc2' VirtualAlloc2 kernel32 7 imp 'VirtualAllocEx' VirtualAllocEx kernel32 5 imp 'VirtualFree' VirtualFree kernel32 3 imp 'VirtualLock' VirtualLock kernel32 2 diff --git a/libc/nt/memory.h b/libc/nt/memory.h index 4923ba1f0..bfd662e2d 100644 --- a/libc/nt/memory.h +++ b/libc/nt/memory.h @@ -96,6 +96,12 @@ void *MapViewOfFile3( struct NtMemExtendedParameter *in_out_opt_ExtendedParameters, unsigned ParameterCount); +void *VirtualAlloc2( + intptr_t opt_Process, void *opt_BaseAddress, size_t Size, + unsigned AllocationType, unsigned PageProtection, + struct NtMemExtendedParameter *in_out_opt_ExtendedParameters, + unsigned ParameterCount); + #if ShouldUseMsabiAttribute() #include "libc/nt/thunk/memory.inc" #endif /* ShouldUseMsabiAttribute() */ From 2a1f3526222a60ea1fccd822a57aba012cced6e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C5=8Dshin?= Date: Mon, 6 May 2024 15:36:13 -0700 Subject: [PATCH 031/123] Tell vim not to mess with ape.S --- ape/ape.S | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ape/ape.S b/ape/ape.S index eaf0bfaab..b98f341c8 100644 --- a/ape/ape.S +++ b/ape/ape.S @@ -1,5 +1,5 @@ /*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8 -*-│ -│ vi: set noet ft=asm ts=8 sw=8 fenc=utf-8 :vi │ +│ vi: set noet ft=asm ts=8 sw=8 fenc=utf-8 nofixeol :vi │ ╞══════════════════════════════════════════════════════════════════════════════╡ │ Copyright 2020 Justine Alexandra Roberts Tunney │ │ │ From 317c8bc31292f177e44e09404d0f06cd73789448 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C5=8Dshin?= Date: Mon, 6 May 2024 16:48:49 -0700 Subject: [PATCH 032/123] Update MODE=tiny time zone list (#1167) I took one canonical IANA zone ID from each of the different colored regions in this article, except those that do not observe DST and do not have a Google office. See the "Time in Europe" Wikipedia article. As to which canonical ID to use, this was somewhat arbitrary. Brussels was obvious, as the de facto capital of the EU. For the rest, I mostly just went with lexicographic ordering of the most recognizable options. I've sorted the American zones. This Keeps the U.S. ones together but does everything alphabetically otherwise. I've added the remaining Canadian zones These have DST (and Newfoundland is off by a half- hour from a UTC interval) so they cannot use Etc/. The Pacific/ zones are sort of sorted. The Chathan Islands have been added. This is the last of the zones I believe with a non-integer hour offset from UTC. --- third_party/tz/localtime.c | 79 +++++++++++++++++++------------------- third_party/tz/windows.py | 13 +------ 2 files changed, 41 insertions(+), 51 deletions(-) diff --git a/third_party/tz/localtime.c b/third_party/tz/localtime.c index 47975e3ed..06139e49f 100644 --- a/third_party/tz/localtime.c +++ b/third_party/tz/localtime.c @@ -86,19 +86,21 @@ __static_yoink("usr/share/zoneinfo/Etc/GMT+11"); __static_yoink("usr/share/zoneinfo/Etc/GMT+12"); __static_yoink("usr/share/zoneinfo/America/"); -__static_yoink("usr/share/zoneinfo/America/Los_Angeles"); // U.S. -__static_yoink("usr/share/zoneinfo/America/New_York"); // U.S. +__static_yoink("usr/share/zoneinfo/America/Anchorage"); // U.S. __static_yoink("usr/share/zoneinfo/America/Chicago"); // U.S. __static_yoink("usr/share/zoneinfo/America/Denver"); // U.S. -__static_yoink("usr/share/zoneinfo/America/Anchorage"); // U.S. +__static_yoink("usr/share/zoneinfo/America/Los_Angeles"); // U.S. +__static_yoink("usr/share/zoneinfo/America/New_York"); // U.S. __static_yoink("usr/share/zoneinfo/America/Phoenix"); // U.S. -__static_yoink("usr/share/zoneinfo/America/Mexico_City"); // Mexico -__static_yoink("usr/share/zoneinfo/America/Sao_Paulo"); // Brazil -__static_yoink("usr/share/zoneinfo/America/Bogota"); // Columbia -__static_yoink("usr/share/zoneinfo/America/Lima"); // Peru -__static_yoink("usr/share/zoneinfo/America/Santiago"); // Chile __static_yoink("usr/share/zoneinfo/America/Argentina/"); __static_yoink("usr/share/zoneinfo/America/Argentina/Buenos_Aires"); +__static_yoink("usr/share/zoneinfo/America/Bogota"); // Columbia +__static_yoink("usr/share/zoneinfo/America/Halifax"); // Canada +__static_yoink("usr/share/zoneinfo/America/St_Johns"); // Canada +__static_yoink("usr/share/zoneinfo/America/Lima"); // Peru +__static_yoink("usr/share/zoneinfo/America/Mexico_City"); // Mexico +__static_yoink("usr/share/zoneinfo/America/Santiago"); // Chile +__static_yoink("usr/share/zoneinfo/America/Sao_Paulo"); // Brazil #ifdef EMBED_EVERY_TIME_ZONE __static_yoink("usr/share/zoneinfo/America/Adak"); __static_yoink("usr/share/zoneinfo/America/Araguaina"); @@ -145,7 +147,6 @@ __static_yoink("usr/share/zoneinfo/America/Grand_Turk"); __static_yoink("usr/share/zoneinfo/America/Guatemala"); __static_yoink("usr/share/zoneinfo/America/Guayaquil"); __static_yoink("usr/share/zoneinfo/America/Guyana"); -__static_yoink("usr/share/zoneinfo/America/Halifax"); __static_yoink("usr/share/zoneinfo/America/Havana"); __static_yoink("usr/share/zoneinfo/America/Hermosillo"); __static_yoink("usr/share/zoneinfo/America/Indiana/"); @@ -201,7 +202,6 @@ __static_yoink("usr/share/zoneinfo/America/Santarem"); __static_yoink("usr/share/zoneinfo/America/Santo_Domingo"); __static_yoink("usr/share/zoneinfo/America/Scoresbysund"); __static_yoink("usr/share/zoneinfo/America/Sitka"); -__static_yoink("usr/share/zoneinfo/America/St_Johns"); __static_yoink("usr/share/zoneinfo/America/Swift_Current"); __static_yoink("usr/share/zoneinfo/America/Tegucigalpa"); __static_yoink("usr/share/zoneinfo/America/Thule"); @@ -214,36 +214,33 @@ __static_yoink("usr/share/zoneinfo/America/Yakuatt"); #endif __static_yoink("usr/share/zoneinfo/Europe/"); -__static_yoink("usr/share/zoneinfo/Europe/Zurich"); // Switzerland -__static_yoink("usr/share/zoneinfo/Europe/Dublin"); // Ireland -__static_yoink("usr/share/zoneinfo/Europe/London"); // UK -__static_yoink("usr/share/zoneinfo/Europe/Paris"); // France -__static_yoink("usr/share/zoneinfo/Europe/Berlin"); // Germany -__static_yoink("usr/share/zoneinfo/Europe/Rome"); // Italy -__static_yoink("usr/share/zoneinfo/Europe/Moscow"); // Moscow -__static_yoink("usr/share/zoneinfo/Europe/Madrid"); // Spain -__static_yoink("usr/share/zoneinfo/Europe/Warsaw"); // Poland __static_yoink("usr/share/zoneinfo/Europe/Brussels"); // Belgium -__static_yoink("usr/share/zoneinfo/Europe/Budapest"); // Hungary -__static_yoink("usr/share/zoneinfo/Europe/Vienna"); // Austria -__static_yoink("usr/share/zoneinfo/Europe/Prague"); // Czech Republic -__static_yoink("usr/share/zoneinfo/Europe/Kyiv"); // Ukraine +__static_yoink("usr/share/zoneinfo/Europe/Bucharest"); // Romania +__static_yoink("usr/share/zoneinfo/Europe/Dublin"); // Ireland __static_yoink("usr/share/zoneinfo/Europe/Istanbul"); // Turkey #ifdef EMBED_EVERY_TIME_ZONE -__static_yoink("usr/share/zoneinfo/Europe/Lisbon"); -__static_yoink("usr/share/zoneinfo/Europe/Athens"); __static_yoink("usr/share/zoneinfo/Europe/Andorra"); __static_yoink("usr/share/zoneinfo/Europe/Astrakhan"); +__static_yoink("usr/share/zoneinfo/Europe/Athens"); __static_yoink("usr/share/zoneinfo/Europe/Belgrade"); -__static_yoink("usr/share/zoneinfo/Europe/Bucharest"); +__static_yoink("usr/share/zoneinfo/Europe/Berlin"); +__static_yoink("usr/share/zoneinfo/Europe/Budapest"); __static_yoink("usr/share/zoneinfo/Europe/Chisinau"); __static_yoink("usr/share/zoneinfo/Europe/Gibraltar"); __static_yoink("usr/share/zoneinfo/Europe/Helsinki"); __static_yoink("usr/share/zoneinfo/Europe/Kaliningrad"); __static_yoink("usr/share/zoneinfo/Europe/Kirov"); +__static_yoink("usr/share/zoneinfo/Europe/Kyiv"); +__static_yoink("usr/share/zoneinfo/Europe/Lisbon"); +__static_yoink("usr/share/zoneinfo/Europe/London"); +__static_yoink("usr/share/zoneinfo/Europe/Madrid"); __static_yoink("usr/share/zoneinfo/Europe/Malta"); __static_yoink("usr/share/zoneinfo/Europe/Minsk"); +__static_yoink("usr/share/zoneinfo/Europe/Moscow"); +__static_yoink("usr/share/zoneinfo/Europe/Paris"); +__static_yoink("usr/share/zoneinfo/Europe/Prague"); __static_yoink("usr/share/zoneinfo/Europe/Riga"); +__static_yoink("usr/share/zoneinfo/Europe/Rome"); __static_yoink("usr/share/zoneinfo/Europe/Samara"); __static_yoink("usr/share/zoneinfo/Europe/Saratov"); __static_yoink("usr/share/zoneinfo/Europe/Simferopol"); @@ -251,8 +248,11 @@ __static_yoink("usr/share/zoneinfo/Europe/Sofia"); __static_yoink("usr/share/zoneinfo/Europe/Tallinn"); __static_yoink("usr/share/zoneinfo/Europe/Tirane"); __static_yoink("usr/share/zoneinfo/Europe/Ulyanovsk"); +__static_yoink("usr/share/zoneinfo/Europe/Vienna"); __static_yoink("usr/share/zoneinfo/Europe/Vilnius"); __static_yoink("usr/share/zoneinfo/Europe/Volgograd"); +__static_yoink("usr/share/zoneinfo/Europe/Warsaw"); +__static_yoink("usr/share/zoneinfo/Europe/Zurich"); #endif __static_yoink("usr/share/zoneinfo/Asia/"); @@ -335,15 +335,15 @@ __static_yoink("usr/share/zoneinfo/Asia/Yerevan"); #endif __static_yoink("usr/share/zoneinfo/Pacific/"); -__static_yoink("usr/share/zoneinfo/Pacific/Honolulu"); // U.S. __static_yoink("usr/share/zoneinfo/Pacific/Guam"); // U.S. +__static_yoink("usr/share/zoneinfo/Pacific/Honolulu"); // U.S. __static_yoink("usr/share/zoneinfo/Pacific/Auckland"); // New Zealand +__static_yoink("usr/share/zoneinfo/Pacific/Chatham"); // New Zealand __static_yoink("usr/share/zoneinfo/Pacific/Fiji"); // Fiji __static_yoink("usr/share/zoneinfo/Pacific/Port_Moresby"); // Papua New Guinea #ifdef EMBED_EVERY_TIME_ZONE __static_yoink("usr/share/zoneinfo/Pacific/Apia"); __static_yoink("usr/share/zoneinfo/Pacific/Bougainville"); -__static_yoink("usr/share/zoneinfo/Pacific/Chatham"); __static_yoink("usr/share/zoneinfo/Pacific/Easter"); __static_yoink("usr/share/zoneinfo/Pacific/Efate"); __static_yoink("usr/share/zoneinfo/Pacific/Fakaofo"); @@ -447,14 +447,11 @@ static const struct { {"Afghanistan Standard Time", "Asia/Kabul"}, // +0430 +0430 {"Alaskan Standard Time", "America/Anchorage"}, // -0800 AKDT {"Arabian Standard Time", "Asia/Dubai"}, // +0400 +04 - {"Arabic Standard Time", "Asia/Baghdad"}, // +0300 +03 {"Argentina Standard Time", "America/Argentina/Buenos_Aires"}, // -0300 -03 {"Bangladesh Standard Time", "Asia/Dhaka"}, // +0600 +06 {"Cen. Australia Standard Time", "Australia/Adelaide"}, // +0930 ACST - {"Central Europe Standard Time", "Europe/Budapest"}, // +0200 CEST - {"Central European Standard Time", "Europe/Warsaw"}, // +0200 CEST - {"Central Standard Time (Mexico)", "America/Mexico_City"}, // -0600 CST {"Central Standard Time", "America/Chicago"}, // -0500 CDT + {"Central Standard Time (Mexico)", "America/Mexico_City"}, // -0600 CST {"China Standard Time", "Asia/Shanghai"}, // +0800 CST {"Dateline Standard Time", "Etc/GMT+12"}, // -1200 -12 {"E. Africa Standard Time", "Africa/Nairobi"}, // +0300 EAT @@ -463,7 +460,7 @@ static const struct { {"Eastern Standard Time", "America/New_York"}, // -0400 EDT {"Egypt Standard Time", "Africa/Cairo"}, // +0300 EEST {"Fiji Standard Time", "Pacific/Fiji"}, // +1200 +12 - {"GMT Standard Time", "Europe/London"}, // +0100 BST + {"GTB Standard Time", "Europe/Bucharest"}, // +0300 EEST {"Hawaiian Standard Time", "Pacific/Honolulu"}, // -1000 HST {"India Standard Time", "Asia/Kolkata"}, // +0530 IST {"Iran Standard Time", "Asia/Tehran"}, // +0330 +0330 @@ -475,8 +472,6 @@ static const struct { {"Pacific SA Standard Time", "America/Santiago"}, // -0400 -04 {"Pacific Standard Time", "America/Los_Angeles"}, // -0700 PDT {"Pakistan Standard Time", "Asia/Karachi"}, // +0500 PKT - {"Romance Standard Time", "Europe/Paris"}, // +0200 CEST - {"Russian Standard Time", "Europe/Moscow"}, // +0300 MSK {"SA Pacific Standard Time", "America/Bogota"}, // -0500 -05 {"SE Asia Standard Time", "Asia/Bangkok"}, // +0700 +07 {"Singapore Standard Time", "Asia/Singapore"}, // +0800 +08 @@ -493,13 +488,13 @@ static const struct { {"UTC-11", "Etc/GMT+11"}, // -1100 -11 {"W. Australia Standard Time", "Australia/Perth"}, // +0800 AWST {"W. Central Africa Standard Time", "Africa/Lagos"}, // +0100 WAT - {"W. Europe Standard Time", "Europe/Berlin"}, // +0200 CEST {"West Pacific Standard Time", "Pacific/Port_Moresby"}, // +1000 +10 #ifdef EMBED_EVERY_TIME_ZONE {"AUS Central Standard Time", "Australia/Darwin"}, // +0930 ACST {"Aleutian Standard Time", "America/Adak"}, // -0900 HDT {"Altai Standard Time", "Asia/Barnaul"}, // +0700 +07 {"Arab Standard Time", "Asia/Riyadh"}, // +0300 +03 + {"Arabic Standard Time", "Asia/Baghdad"}, // +0300 +03 {"Astrakhan Standard Time", "Europe/Astrakhan"}, // +0400 +04 {"Atlantic Standard Time", "America/Halifax"}, // -0300 ADT {"Aus Central W. Standard Time", "Australia/Eucla"}, // +0845 +0845 @@ -514,6 +509,8 @@ static const struct { {"Central America Standard Time", "America/Guatemala"}, // -0600 CST {"Central Asia Standard Time", "Asia/Almaty"}, // +0500 +05 {"Central Brazilian Standard Time", "America/Cuiaba"}, // -0400 -04 + {"Central Europe Standard Time", "Europe/Budapest"}, // +0200 CEST + {"Central European Standard Time", "Europe/Warsaw"}, // +0200 CEST {"Central Pacific Standard Time", "Pacific/Guadalcanal"}, // +1100 +11 {"Chatham Islands Standard Time", "Pacific/Chatham"}, // +1245 +1245 {"Cuba Standard Time", "America/Havana"}, // -0400 CDT @@ -521,10 +518,11 @@ static const struct { {"Easter Island Standard Time", "Pacific/Easter"}, // -0600 -06 {"Eastern Standard Time (Mexico)", "America/Cancun"}, // -0500 EST {"Ekaterinburg Standard Time", "Asia/Yekaterinburg"}, // +0500 +05 - {"FLE Standard Time", "Europe/Helsinki"}, // +0300 EEST - {"GTB Standard Time", "Europe/Bucharest"}, // +0300 EEST + {"FLE Standard Time", "Europe/Kiev"}, // +0300 EEST + {"GMT Standard Time", "Europe/London"}, // +0100 BST {"Georgian Standard Time", "Asia/Tbilisi"}, // +0400 +04 - {"Greenwich Standard Time", "Atlantic/St_Helena"}, // +0000 GMT + {"Greenland Standard Time", "America/Godthab"}, // -0100 -01 + {"Greenwich Standard Time", "Atlantic/Reykjavik"}, // +0000 GMT {"Haiti Standard Time", "America/Port-au-Prince"}, // -0400 EDT {"Jordan Standard Time", "Asia/Amman"}, // +0300 +03 {"Kaliningrad Standard Time", "Europe/Kaliningrad"}, // +0200 EET @@ -551,9 +549,11 @@ static const struct { {"Omsk Standard Time", "Asia/Omsk"}, // +0600 +06 {"Pacific Standard Time (Mexico)", "America/Tijuana"}, // -0700 PDT {"Paraguay Standard Time", "America/Asuncion"}, // -0400 -04 + {"Romance Standard Time", "Europe/Paris"}, // +0200 CEST {"Russia Time Zone 10", "Asia/Srednekolymsk"}, // +1100 +11 {"Russia Time Zone 11", "Asia/Kamchatka"}, // +1200 +12 {"Russia Time Zone 3", "Europe/Samara"}, // +0400 +04 + {"Russian Standard Time", "Europe/Moscow"}, // +0300 MSK {"SA Eastern Standard Time", "America/Cayenne"}, // -0300 -03 {"SA Western Standard Time", "America/La_Paz"}, // -0400 -04 {"Saint Pierre Standard Time", "America/Miquelon"}, // -0200 -02 @@ -571,6 +571,7 @@ static const struct { {"Ulaanbaatar Standard Time", "Asia/Ulaanbaatar"}, // +0800 +08 {"Venezuela Standard Time", "America/Caracas"}, // -0400 -04 {"Vladivostok Standard Time", "Asia/Vladivostok"}, // +1000 +10 + {"W. Europe Standard Time", "Europe/Berlin"}, // +0200 CEST {"W. Mongolia Standard Time", "Asia/Hovd"}, // +0700 +07 {"West Asia Standard Time", "Asia/Tashkent"}, // +0500 +05 {"West Bank Standard Time", "Asia/Hebron"}, // +0300 EEST diff --git a/third_party/tz/windows.py b/third_party/tz/windows.py index 633c78093..3ec38b6ce 100644 --- a/third_party/tz/windows.py +++ b/third_party/tz/windows.py @@ -73,21 +73,10 @@ SUPPORTED = set(( 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/UTC', - 'Europe/Berlin', 'Europe/Brussels', - 'Europe/Budapest', + 'Europe/Bucharest', 'Europe/Dublin', 'Europe/Istanbul', - 'Europe/Kyiv', - 'Europe/London', - 'Europe/Madrid', - 'Europe/Moscow', - 'Europe/Paris', - 'Europe/Prague', - 'Europe/Rome', - 'Europe/Vienna', - 'Europe/Warsaw', - 'Europe/Zurich', 'GMT', 'HST', 'MET', From 5fd7b07faca2bf9626bbe530ab9096ddbd39d9a0 Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Sun, 5 May 2024 05:45:52 -0700 Subject: [PATCH 033/123] Improve AVX512 feature detection --- examples/BUILD.mk | 3 +- examples/blas.cc | 221 +++++++++++++++++++++++++++++++++++++++ libc/intrin/x86.c | 137 +----------------------- libc/intrin/x86.h | 147 ++++++++++++++++++++++++++ libc/intrin/x86march.c | 94 +++++++++++++++++ libc/nexgen32e/kcpuids.S | 33 ++++-- libc/nt/enum/memflags.h | 1 - 7 files changed, 492 insertions(+), 144 deletions(-) create mode 100644 examples/blas.cc create mode 100644 libc/intrin/x86.h create mode 100644 libc/intrin/x86march.c diff --git a/examples/BUILD.mk b/examples/BUILD.mk index a6965d922..3b868d186 100644 --- a/examples/BUILD.mk +++ b/examples/BUILD.mk @@ -154,7 +154,8 @@ o/$(MODE)/examples/picol.dbg: \ @$(APELINK) o/$(MODE)/usr/share/dict/words.zip.o: private ZIPOBJ_FLAGS += -C2 -o/$(MODE)/examples/wut.o: private COPTS += -fopenmp + +o/$(MODE)/examples/blas.o: private COPTS += -O3 -fopenmp $(EXAMPLES_OBJS): examples/BUILD.mk diff --git a/examples/blas.cc b/examples/blas.cc new file mode 100644 index 000000000..5bcc4b2ba --- /dev/null +++ b/examples/blas.cc @@ -0,0 +1,221 @@ +// Copyright 2024 Justine Alexandra Roberts Tunney +// +// Permission to use, copy, modify, and/or distribute this software for +// any purpose with or without fee is hereby granted, provided that the +// above copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +// WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE +// AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL +// DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +// PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +// TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +// PERFORMANCE OF THIS SOFTWARE. + +#include +#include +#include +#include +#include +#include +#include "libc/assert.h" + +// high performance high accuracy matrix multiplication in ansi c + +#define MATH __target_clones("avx512f,fma") + +namespace { +namespace ansiBLAS { + +static constexpr int KN = 8; + +struct Vector { + double v[KN]; +}; + +Vector load(const float *p) { + Vector x; + for (int i = 0; i < KN; ++i) + x.v[i] = p[i]; + return x; +} + +Vector madd(Vector x, Vector y, Vector s) { + for (int i = 0; i < KN; ++i) + s.v[i] = fma(x.v[i], y.v[i], s.v[i]); + return s; +} + +float hsum(Vector x) { + double s = 0; + for (int i = 0; i < KN; ++i) + s += x.v[i]; + return s; +} + +struct ansiBLAS { + public: + ansiBLAS(int k, const float *A, int lda, const float *B, int ldb, float *C, + int ldc, int ith, int nth) + : k(k), + A(A), + lda(lda), + B(B), + ldb(ldb), + C(C), + ldc(ldc), + ith(ith), + nth(nth) { + } + + void matmul(int m, int n) { + mnpack(0, m, 0, n); + } + + private: + void mnpack(int m0, int m, int n0, int n) { + int mc, nc, mp, np; + if (m - m0 <= 0 || n - n0 <= 0) + return; + if (m - m0 >= 4 && n - n0 >= 3) { + mc = 4; + nc = 3; + gemm<4, 3>(m0, m, n0, n); + } else { + mc = 1; + nc = 1; + gemm<1, 1>(m0, m, n0, n); + } + mp = m0 + (m - m0) / mc * mc; + np = n0 + (n - n0) / nc * nc; + mnpack(mp, m, n0, np); + mnpack(m0, m, np, n); + } + + template + MATH void gemm(int m0, int m, int n0, int n) { + int ytiles = (m - m0) / RM; + int xtiles = (n - n0) / RN; + int tiles = xtiles * ytiles; + int duty = (tiles + nth - 1) / nth; + int start = duty * ith; + int end = start + duty; + if (end > tiles) + end = tiles; + for (int job = start; job < end; ++job) { + int ii = m0 + job / xtiles * RM; + int jj = n0 + job % xtiles * RN; + Vector Cv[RN][RM] = {}; + for (int l = 0; l < k; l += KN) + for (int j = 0; j < RN; ++j) + for (int i = 0; i < RM; ++i) + Cv[j][i] = madd(load(A + lda * (ii + i) + l), // + load(B + ldb * (jj + j) + l), // + Cv[j][i]); + for (int j = 0; j < RN; ++j) + for (int i = 0; i < RM; ++i) + C[ldc * (jj + j) + (ii + i)] = hsum(Cv[j][i]); + } + } + + const int k; + const float *const A; + const int lda; + const float *const B; + const int ldb; + float *const C; + const int ldc; + const int ith; + const int nth; +}; + +void sgemm(int m, int n, int k, // + const float *A, int lda, // + const float *B, int ldb, // + float *C, int ldc) { + int nth = sysconf(_SC_NPROCESSORS_ONLN); +#pragma omp parallel for + for (int ith = 0; ith < nth; ++ith) { + ansiBLAS tb{k, A, lda, B, ldb, C, ldc, ith, nth}; + tb.matmul(m, n); + } +} + +} // namespace ansiBLAS + +long micros(void) { + struct timespec ts; + clock_gettime(CLOCK_REALTIME, &ts); + return ts.tv_sec * 1000000 + (ts.tv_nsec + 999) / 1000; +} + +unsigned rand32(void) { + /* Knuth, D.E., "The Art of Computer Programming," Vol 2, + Seminumerical Algorithms, Third Edition, Addison-Wesley, 1998, + p. 106 (line 26) & p. 108 */ + static unsigned long long lcg = 1; + lcg *= 6364136223846793005; + lcg += 1442695040888963407; + return lcg >> 32; +} + +float float01(unsigned x) { // (0,1) + return 1.f / 8388608 * ((x >> 9) + .5f); +} + +float numba(void) { // (-1,1) + return float01(rand32()) * 2 - 1; +} + +void fill(int m, int n, float *A, int lda) { + for (int j = 0; j < n; ++j) + for (int i = 0; i < m; ++i) + A[lda * j + i] = numba(); +} + +float *new_matrix(int m, int n, int *lda) { + void *ptr = 0; + int b = 64 / sizeof(float); + *lda = (n + b - 1) & -b; + posix_memalign(&ptr, 4096, sizeof(float) * m * *lda); + return (float *)ptr; +} + +} // namespace + +void barrier(void) { +} +void (*pBarrier)(void) = barrier; + +#define BENCH(x) \ + do { \ + x; \ + int N = 10; \ + long t1 = micros(); \ + for (long i = 0; i < N; ++i) { \ + pBarrier(); \ + x; \ + } \ + long t2 = micros(); \ + printf("%8" PRId64 " µs %s %g gigaflops\n", (t2 - t1 + N - 1) / N, #x, \ + 1e6 / ((t2 - t1 + N - 1) / N) * m * n * k * 2 * 1e-9); \ + } while (0) + +int main() { + int m = 1024; + int n = 1024; + int k = 1024; + int lda, ldb, ldc; + float *A = new_matrix(m, k, &lda); + float *B = new_matrix(n, k, &ldb); + float *C = new_matrix(n, m, &ldc); + fill(k, n, A, lda); + fill(k, m, B, ldb); + BENCH(ansiBLAS::sgemm(m, n, k, A, lda, B, ldb, C, ldc)); + assert(C[0] == -0x1.20902ap+4); + assert(C[1] == -0x1.bf7726p+4); + free(C); + free(B); + free(A); +} diff --git a/libc/intrin/x86.c b/libc/intrin/x86.c index 4328f9c82..0ee34f136 100644 --- a/libc/intrin/x86.c +++ b/libc/intrin/x86.c @@ -12,135 +12,9 @@ // //===----------------------------------------------------------------------===// #if defined(__x86_64__) && (defined(__GNUC__) || defined(__clang__)) +#include "libc/intrin/x86.h" -enum VendorSignatures { - SIG_INTEL = 0x756e6547, // Genu - SIG_AMD = 0x68747541, // Auth -}; - -enum ProcessorVendors { - VENDOR_INTEL = 1, - VENDOR_AMD, - VENDOR_OTHER, - VENDOR_MAX -}; - -enum ProcessorTypes { - INTEL_BONNELL = 1, - INTEL_CORE2, - INTEL_COREI7, - AMDFAM10H, - AMDFAM15H, - INTEL_SILVERMONT, - INTEL_KNL, - AMD_BTVER1, - AMD_BTVER2, - AMDFAM17H, - INTEL_KNM, - INTEL_GOLDMONT, - INTEL_GOLDMONT_PLUS, - INTEL_TREMONT, - AMDFAM19H, - ZHAOXIN_FAM7H, - INTEL_SIERRAFOREST, - INTEL_GRANDRIDGE, - INTEL_CLEARWATERFOREST, - CPU_TYPE_MAX -}; - -enum ProcessorSubtypes { - INTEL_COREI7_NEHALEM = 1, - INTEL_COREI7_WESTMERE, - INTEL_COREI7_SANDYBRIDGE, - AMDFAM10H_BARCELONA, - AMDFAM10H_SHANGHAI, - AMDFAM10H_ISTANBUL, - AMDFAM15H_BDVER1, - AMDFAM15H_BDVER2, - AMDFAM15H_BDVER3, - AMDFAM15H_BDVER4, - AMDFAM17H_ZNVER1, - INTEL_COREI7_IVYBRIDGE, - INTEL_COREI7_HASWELL, - INTEL_COREI7_BROADWELL, - INTEL_COREI7_SKYLAKE, - INTEL_COREI7_SKYLAKE_AVX512, - INTEL_COREI7_CANNONLAKE, - INTEL_COREI7_ICELAKE_CLIENT, - INTEL_COREI7_ICELAKE_SERVER, - AMDFAM17H_ZNVER2, - INTEL_COREI7_CASCADELAKE, - INTEL_COREI7_TIGERLAKE, - INTEL_COREI7_COOPERLAKE, - INTEL_COREI7_SAPPHIRERAPIDS, - INTEL_COREI7_ALDERLAKE, - AMDFAM19H_ZNVER3, - INTEL_COREI7_ROCKETLAKE, - ZHAOXIN_FAM7H_LUJIAZUI, - AMDFAM19H_ZNVER4, - INTEL_COREI7_GRANITERAPIDS, - INTEL_COREI7_GRANITERAPIDS_D, - INTEL_COREI7_ARROWLAKE, - INTEL_COREI7_ARROWLAKE_S, - INTEL_COREI7_PANTHERLAKE, - CPU_SUBTYPE_MAX -}; - -enum ProcessorFeatures { - FEATURE_CMOV = 0, - FEATURE_MMX, - FEATURE_POPCNT, - FEATURE_SSE, - FEATURE_SSE2, - FEATURE_SSE3, - FEATURE_SSSE3, - FEATURE_SSE4_1, - FEATURE_SSE4_2, - FEATURE_AVX, - FEATURE_AVX2, - FEATURE_SSE4_A, - FEATURE_FMA4, - FEATURE_XOP, - FEATURE_FMA, - FEATURE_AVX512F, - FEATURE_BMI, - FEATURE_BMI2, - FEATURE_AES, - FEATURE_PCLMUL, - FEATURE_AVX512VL, - FEATURE_AVX512BW, - FEATURE_AVX512DQ, - FEATURE_AVX512CD, - FEATURE_AVX512ER, - FEATURE_AVX512PF, - FEATURE_AVX512VBMI, - FEATURE_AVX512IFMA, - FEATURE_AVX5124VNNIW, - FEATURE_AVX5124FMAPS, - FEATURE_AVX512VPOPCNTDQ, - FEATURE_AVX512VBMI2, - FEATURE_GFNI, - FEATURE_VPCLMULQDQ, - FEATURE_AVX512VNNI, - FEATURE_AVX512BITALG, - FEATURE_AVX512BF16, - FEATURE_AVX512VP2INTERSECT, - - FEATURE_CMPXCHG16B = 46, - FEATURE_F16C = 49, - FEATURE_LAHF_LM = 54, - FEATURE_LM, - FEATURE_WP, - FEATURE_LZCNT, - FEATURE_MOVBE, - - FEATURE_AVX512FP16 = 94, - FEATURE_X86_64_BASELINE, - FEATURE_X86_64_V2, - FEATURE_X86_64_V3, - FEATURE_X86_64_V4, - CPU_FEATURE_MAX -}; +struct __processor_model __cpu_model; // The check below for i386 was copied from clang's cpuid.h (__get_cpuid_max). // Check motivated by bug reports for OpenSSL crashing on CPUs without CPUID @@ -782,13 +656,6 @@ static void getAvailableFeatures(unsigned ECX, unsigned EDX, unsigned MaxLeaf, #undef setFeature } -struct __processor_model { - unsigned int __cpu_vendor; - unsigned int __cpu_type; - unsigned int __cpu_subtype; - unsigned int __cpu_features[1]; -} __cpu_model = {0, 0, 0, {0}}; - unsigned __cpu_features2[(CPU_FEATURE_MAX - 1) / 32]; // A constructor function that is sets __cpu_model and __cpu_features2 with diff --git a/libc/intrin/x86.h b/libc/intrin/x86.h new file mode 100644 index 000000000..26093109e --- /dev/null +++ b/libc/intrin/x86.h @@ -0,0 +1,147 @@ +#ifndef COSMOPOLITAN_LIBC_INTRIN_X86_H_ +#define COSMOPOLITAN_LIBC_INTRIN_X86_H_ +COSMOPOLITAN_C_START_ + +enum VendorSignatures { + SIG_INTEL = 0x756e6547, // Genu + SIG_AMD = 0x68747541, // Auth +}; + +enum ProcessorVendors { + VENDOR_INTEL = 1, + VENDOR_AMD, + VENDOR_OTHER, + VENDOR_MAX +}; + +enum ProcessorTypes { + INTEL_BONNELL = 1, + INTEL_CORE2, + INTEL_COREI7, + AMDFAM10H, + AMDFAM15H, + INTEL_SILVERMONT, + INTEL_KNL, + AMD_BTVER1, + AMD_BTVER2, + AMDFAM17H, + INTEL_KNM, + INTEL_GOLDMONT, + INTEL_GOLDMONT_PLUS, + INTEL_TREMONT, + AMDFAM19H, + ZHAOXIN_FAM7H, + INTEL_SIERRAFOREST, + INTEL_GRANDRIDGE, + INTEL_CLEARWATERFOREST, + CPU_TYPE_MAX +}; + +enum ProcessorSubtypes { + INTEL_COREI7_NEHALEM = 1, + INTEL_COREI7_WESTMERE, + INTEL_COREI7_SANDYBRIDGE, + AMDFAM10H_BARCELONA, + AMDFAM10H_SHANGHAI, + AMDFAM10H_ISTANBUL, + AMDFAM15H_BDVER1, + AMDFAM15H_BDVER2, + AMDFAM15H_BDVER3, + AMDFAM15H_BDVER4, + AMDFAM17H_ZNVER1, + INTEL_COREI7_IVYBRIDGE, + INTEL_COREI7_HASWELL, + INTEL_COREI7_BROADWELL, + INTEL_COREI7_SKYLAKE, + INTEL_COREI7_SKYLAKE_AVX512, + INTEL_COREI7_CANNONLAKE, + INTEL_COREI7_ICELAKE_CLIENT, + INTEL_COREI7_ICELAKE_SERVER, + AMDFAM17H_ZNVER2, + INTEL_COREI7_CASCADELAKE, + INTEL_COREI7_TIGERLAKE, + INTEL_COREI7_COOPERLAKE, + INTEL_COREI7_SAPPHIRERAPIDS, + INTEL_COREI7_ALDERLAKE, + AMDFAM19H_ZNVER3, + INTEL_COREI7_ROCKETLAKE, + ZHAOXIN_FAM7H_LUJIAZUI, + AMDFAM19H_ZNVER4, + INTEL_COREI7_GRANITERAPIDS, + INTEL_COREI7_GRANITERAPIDS_D, + INTEL_COREI7_ARROWLAKE, + INTEL_COREI7_ARROWLAKE_S, + INTEL_COREI7_PANTHERLAKE, + CPU_SUBTYPE_MAX +}; + +enum ProcessorFeatures { + FEATURE_CMOV = 0, + FEATURE_MMX, + FEATURE_POPCNT, + FEATURE_SSE, + FEATURE_SSE2, + FEATURE_SSE3, + FEATURE_SSSE3, + FEATURE_SSE4_1, + FEATURE_SSE4_2, + FEATURE_AVX, + FEATURE_AVX2, + FEATURE_SSE4_A, + FEATURE_FMA4, + FEATURE_XOP, + FEATURE_FMA, + FEATURE_AVX512F, + FEATURE_BMI, + FEATURE_BMI2, + FEATURE_AES, + FEATURE_PCLMUL, + FEATURE_AVX512VL, + FEATURE_AVX512BW, + FEATURE_AVX512DQ, + FEATURE_AVX512CD, + FEATURE_AVX512ER, + FEATURE_AVX512PF, + FEATURE_AVX512VBMI, + FEATURE_AVX512IFMA, + FEATURE_AVX5124VNNIW, + FEATURE_AVX5124FMAPS, + FEATURE_AVX512VPOPCNTDQ, + FEATURE_AVX512VBMI2, + FEATURE_GFNI, + FEATURE_VPCLMULQDQ, + FEATURE_AVX512VNNI, + FEATURE_AVX512BITALG, + FEATURE_AVX512BF16, + FEATURE_AVX512VP2INTERSECT, + + FEATURE_CMPXCHG16B = 46, + FEATURE_F16C = 49, + FEATURE_LAHF_LM = 54, + FEATURE_LM, + FEATURE_WP, + FEATURE_LZCNT, + FEATURE_MOVBE, + + FEATURE_AVX512FP16 = 94, + FEATURE_X86_64_BASELINE, + FEATURE_X86_64_V2, + FEATURE_X86_64_V3, + FEATURE_X86_64_V4, + CPU_FEATURE_MAX +}; + +struct __processor_model { + unsigned __cpu_vendor; + unsigned __cpu_type; + unsigned __cpu_subtype; + unsigned __cpu_features[1]; + const char *__cpu_march; +}; + +struct __processor_model __cpu_model; + +const char *__cpu_march(unsigned); + +COSMOPOLITAN_C_END_ +#endif /* COSMOPOLITAN_LIBC_INTRIN_X86_H_ */ diff --git a/libc/intrin/x86march.c b/libc/intrin/x86march.c new file mode 100644 index 000000000..cafc142fa --- /dev/null +++ b/libc/intrin/x86march.c @@ -0,0 +1,94 @@ +// Copyright 2024 Justine Alexandra Roberts Tunney +// +// Permission to use, copy, modify, and/or distribute this software for +// any purpose with or without fee is hereby granted, provided that the +// above copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +// WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE +// AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL +// DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +// PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +// TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +// PERFORMANCE OF THIS SOFTWARE. +#include "libc/intrin/x86.h" + +/** + * Returns microarchitecture name, e.g. + * + * puts(__cpu_march(__cpu_model.__cpu_subtype)); + * + */ +const char *__cpu_march(unsigned subtype) { + switch (subtype) { + case INTEL_COREI7_NEHALEM: + return "nehalem"; + case INTEL_COREI7_WESTMERE: + return "westmere"; + case INTEL_COREI7_SANDYBRIDGE: + return "sandybridge"; + case AMDFAM10H_BARCELONA: + return "amdfam10"; + case AMDFAM10H_SHANGHAI: + return "amdfam10"; + case AMDFAM10H_ISTANBUL: + return "amdfam10"; + case AMDFAM15H_BDVER1: + return "bdver2"; + case AMDFAM15H_BDVER2: + return "bdver2"; + case AMDFAM15H_BDVER3: + return "bdver3"; + case AMDFAM15H_BDVER4: + return "bdver4"; + case AMDFAM17H_ZNVER1: + return "znver2"; + case INTEL_COREI7_IVYBRIDGE: + return "ivybridge"; + case INTEL_COREI7_HASWELL: + return "haswell"; + case INTEL_COREI7_BROADWELL: + return "broadwell"; + case INTEL_COREI7_SKYLAKE: + return "skylake"; + case INTEL_COREI7_SKYLAKE_AVX512: + return "skylake-avx512"; + case INTEL_COREI7_CANNONLAKE: + return "cannonlake"; + case INTEL_COREI7_ICELAKE_CLIENT: + return "icelake-client"; + case INTEL_COREI7_ICELAKE_SERVER: + return "icelake-server"; + case AMDFAM17H_ZNVER2: + return "znver2"; + case INTEL_COREI7_CASCADELAKE: + return "cascadelake"; + case INTEL_COREI7_TIGERLAKE: + return "tigerlake"; + case INTEL_COREI7_COOPERLAKE: + return "cooperlake"; + case INTEL_COREI7_SAPPHIRERAPIDS: + return "sapphirerapids"; + case INTEL_COREI7_ALDERLAKE: + return "alderlake"; + case AMDFAM19H_ZNVER3: + return "znver3"; + case INTEL_COREI7_ROCKETLAKE: + return "rocketlake"; + case AMDFAM19H_ZNVER4: + return "znver4"; + case INTEL_COREI7_GRANITERAPIDS: + return "graniterapids"; + case INTEL_COREI7_GRANITERAPIDS_D: + return "graniterapids-d"; + case INTEL_COREI7_ARROWLAKE: + return "arrowlake"; + case INTEL_COREI7_ARROWLAKE_S: + return "arrowlake-s"; + case INTEL_COREI7_PANTHERLAKE: + return "pantherlake"; + default: + return 0; + } +} diff --git a/libc/nexgen32e/kcpuids.S b/libc/nexgen32e/kcpuids.S index 0c5fdea05..adc6ef5d1 100644 --- a/libc/nexgen32e/kcpuids.S +++ b/libc/nexgen32e/kcpuids.S @@ -93,18 +93,37 @@ kCpuids:.long 0,0,0,0 // EAX=0 (Basic Processor Info) add $4*4,%rdi jmp 2b 3: nop -#if !X86_NEED(AVX2) + +// test if cpu supports avx testb X86_HAVE(AVX)(%r8) - jz 5f + jz 7f testb X86_HAVE(OSXSAVE)(%r8) - jz 4f + jz 5f xor %ecx,%ecx xgetbv + mov %eax,%ecx + +// test if operating system saves avx registers and $XCR0_SSE|XCR0_AVX,%eax cmp $XCR0_SSE|XCR0_AVX,%eax - je 5f -4: btr $X86_BIT(AVX),X86_WORD(AVX)(%r8) + jne 5f + +// test if operating system saves avx512 registers + and $XCR0_OPMASK|XCR0_ZMM_HI256|XCR0_HI16_ZMM,%ecx + cmp $XCR0_OPMASK|XCR0_ZMM_HI256|XCR0_HI16_ZMM,%ecx + jne 6f + je 7f + +// operating system doesn't support avx +5: btr $X86_BIT(AVX),X86_WORD(AVX)(%r8) btr $X86_BIT(AVX2),X86_WORD(AVX2)(%r8) -#endif -5: pop %rbx + +// operating system supports avx but not avx512 +6: andl $~(1<<30|1<<28|1<<17|1<<27|1<<16|1<<21|1<<26|1<<31),KCPUIDS(7H, EBX)(%r8) + andl $~(1<<1|1<<12|1<<6|1<<11|1<<14),KCPUIDS(7H, ECX)(%r8) + andl $~(1<<2|1<<3|1<<8),KCPUIDS(7H, EDX)(%r8) + andl $~(1<<5),KCPUIDS(7H_1H, EAX)(%r8) + +// we're done +7: pop %rbx .init.end 201,_init_kCpuids diff --git a/libc/nt/enum/memflags.h b/libc/nt/enum/memflags.h index f2eb173f6..fffb09ef9 100644 --- a/libc/nt/enum/memflags.h +++ b/libc/nt/enum/memflags.h @@ -17,6 +17,5 @@ #define kNtMem4mbPages 0x80000000 #define kNtMemReplacePlaceholder 0x00004000 -#define kNtMemLargePages 0x20000000 #endif /* COSMOPOLITAN_LIBC_NT_ENUM_MEMFLAGS_H_ */ From 3bf95ae7ecec4df636c8e24054956c377dc89f58 Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Sun, 5 May 2024 16:14:43 -0700 Subject: [PATCH 034/123] Invent tool for renaming ELF object symbols --- tool/build/fixupobj.c | 87 ++++------- tool/build/resymbol.c | 341 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 370 insertions(+), 58 deletions(-) create mode 100644 tool/build/resymbol.c diff --git a/tool/build/fixupobj.c b/tool/build/fixupobj.c index 807ec0133..fd3cafdf8 100644 --- a/tool/build/fixupobj.c +++ b/tool/build/fixupobj.c @@ -289,15 +289,13 @@ static void RewriteTlsCodeAmd64(void) { uint8_t *p; Elf64_Shdr *shdr; for (i = 0; i < elf->e_shnum; ++i) { - if (!(shdr = GetElfSectionHeaderAddress(elf, esize, i))) { + if (!(shdr = GetElfSectionHeaderAddress(elf, esize, i))) Die("elf header overflow #1"); - } if (shdr->sh_type == SHT_PROGBITS && // (shdr->sh_flags & SHF_ALLOC) && // (shdr->sh_flags & SHF_EXECINSTR)) { - if (!(p = GetElfSectionAddress(elf, esize, shdr))) { + if (!(p = GetElfSectionAddress(elf, esize, shdr))) Die("elf header overflow #2"); - } ChangeTlsFsToGs(p, shdr->sh_size); } } @@ -309,20 +307,16 @@ static void RewriteTlsCodeArm64(void) { Elf64_Shdr *shdr; uint32_t *p, *pe; for (i = 0; i < elf->e_shnum; ++i) { - if (!(shdr = GetElfSectionHeaderAddress(elf, esize, i))) { + if (!(shdr = GetElfSectionHeaderAddress(elf, esize, i))) Die("elf header overflow #1"); - } if (shdr->sh_type == SHT_PROGBITS && // (shdr->sh_flags & SHF_ALLOC) && // (shdr->sh_flags & SHF_EXECINSTR)) { - if (!(p = GetElfSectionAddress(elf, esize, shdr))) { + if (!(p = GetElfSectionAddress(elf, esize, shdr))) Die("elf header overflow #2"); - } - for (pe = p + shdr->sh_size / 4; p <= pe; ++p) { - if ((*p & -32) == MRS_TPIDR_EL0) { + for (pe = p + shdr->sh_size / 4; p <= pe; ++p) + if ((*p & -32) == MRS_TPIDR_EL0) *p = MOV_REG(*p & 31, COSMO_TLS_REG); - } - } } } } @@ -352,17 +346,14 @@ static void OptimizePatchableFunctionEntries(void) { continue; if (ELF64_ST_TYPE(syms[i].st_info) != STT_FUNC) continue; - if (!(shdr = GetElfSectionHeaderAddress(elf, esize, syms[i].st_shndx))) { + if (!(shdr = GetElfSectionHeaderAddress(elf, esize, syms[i].st_shndx))) Die("elf header overflow #3"); - } if (shdr->sh_type != SHT_PROGBITS) continue; - if (!(p = GetElfSectionAddress(elf, esize, shdr))) { + if (!(p = GetElfSectionAddress(elf, esize, shdr))) Die("elf section overflow"); - } - if (ckd_sub(&sym_rva, syms[i].st_value, shdr->sh_addr)) { + if (ckd_sub(&sym_rva, syms[i].st_value, shdr->sh_addr)) Die("elf symbol beneath section"); - } if (sym_rva > esize - shdr->sh_offset || // (p += sym_rva) >= (unsigned char *)elf + esize || // syms[i].st_size >= esize - sym_rva) { @@ -403,17 +394,14 @@ static void RelinkZipFiles(void) { recs = 0; cdir = (stop = eocd) - (cdsize = ZIP_CDIR_SIZE(eocd)); for (cfile = cdir; cfile < stop; cfile += ZIP_CFILE_HDRSIZE(cfile)) { - if (++recs >= 65536) { + if (++recs >= 65536) Die("too many zip central directory records"); - } if (cfile < base || // cfile + kZipCfileHdrMinSize > xeof || // - cfile + ZIP_CFILE_HDRSIZE(cfile) > xeof) { + cfile + ZIP_CFILE_HDRSIZE(cfile) > xeof) Die("zip central directory entry overflows image"); - } - if (READ32LE(cfile) != kZipCfileHdrMagic) { + if (READ32LE(cfile) != kZipCfileHdrMagic) Die("bad __zip_cdir_size or zip central directory corrupted"); - } if ((rela = ZIP_CFILE_OFFSET(cfile)) < 0) { lfile = cfile + kZipCfileOffsetOffset + rela; } else { @@ -421,33 +409,27 @@ static void RelinkZipFiles(void) { } if (lfile < base || // lfile + kZipLfileHdrMinSize > xeof || // - lfile + ZIP_LFILE_SIZE(lfile) > xeof) { + lfile + ZIP_LFILE_SIZE(lfile) > xeof) Die("zip local file overflows image"); - } - if (READ32LE(lfile) != kZipLfileHdrMagic) { + if (READ32LE(lfile) != kZipLfileHdrMagic) Die("zip central directory offset to local file corrupted"); - } - if (rela < 0) { + if (rela < 0) WRITE32LE(cfile + kZipCfileOffsetOffset, lfile - base); - } } // append new eocd record to program image if (esize > INT_MAX - sizeof(foot) || - (cdoffset = esize) > INT_MAX - sizeof(foot)) { + (cdoffset = esize) > INT_MAX - sizeof(foot)) Die("the time has come to adopt zip64"); - } bzero(foot, sizeof(foot)); WRITE32LE(foot, kZipCdirHdrMagic); WRITE32LE(foot + kZipCdirSizeOffset, cdsize); WRITE16LE(foot + kZipCdirRecordsOffset, recs); WRITE32LE(foot + kZipCdirOffsetOffset, cdoffset); WRITE16LE(foot + kZipCdirRecordsOnDiskOffset, recs); - if (pwrite(fildes, cdir, cdsize, esize) != cdsize) { + if (pwrite(fildes, cdir, cdsize, esize) != cdsize) SysExit("cdir pwrite"); - } - if (pwrite(fildes, foot, sizeof(foot), esize + cdsize) != sizeof(foot)) { + if (pwrite(fildes, foot, sizeof(foot), esize + cdsize) != sizeof(foot)) SysExit("eocd pwrite"); - } eocd = foot; } @@ -656,29 +638,22 @@ static void PurgeIfuncSections(void) { } static void FixupObject(void) { - if ((fildes = open(epath, mode)) == -1) { + if ((fildes = open(epath, mode)) == -1) SysExit("open"); - } - if ((esize = lseek(fildes, 0, SEEK_END)) == -1) { + if ((esize = lseek(fildes, 0, SEEK_END)) == -1) SysExit("lseek"); - } if (esize) { elf = Malloc(esize); - if (pread(fildes, elf, esize, 0) != esize) { + if (pread(fildes, elf, esize, 0) != esize) SysExit("pread"); - } - if (!IsElf64Binary(elf, esize)) { + if (!IsElf64Binary(elf, esize)) Die("not an elf64 binary"); - } - if (!(syms = GetElfSymbols(elf, esize, SHT_SYMTAB, &symcount))) { + if (!(syms = GetElfSymbols(elf, esize, SHT_SYMTAB, &symcount))) Die("missing elf symbol table"); - } - if (!(secstrs = GetElfSectionNameStringTable(elf, esize))) { + if (!(secstrs = GetElfSectionNameStringTable(elf, esize))) Die("missing elf section string table"); - } - if (!(symstrs = GetElfStringTable(elf, esize, ".strtab"))) { + if (!(symstrs = GetElfStringTable(elf, esize, ".strtab"))) Die("missing elf symbol string table"); - } CheckPrivilegedCrossReferences(); if (mode == O_RDWR) { if (elf->e_machine == EM_NEXGEN32E) { @@ -687,29 +662,25 @@ static void FixupObject(void) { GenerateIfuncInit(); } else if (elf->e_machine == EM_AARCH64) { RewriteTlsCodeArm64(); - if (elf->e_type != ET_REL) { + if (elf->e_type != ET_REL) UseFreebsdOsAbi(); - } } if (elf->e_type != ET_REL) { PurgeIfuncSections(); RelinkZipFiles(); } - if (pwrite(fildes, elf, esize, 0) != esize) { + if (pwrite(fildes, elf, esize, 0) != esize) SysExit("pwrite"); - } } } - if (close(fildes)) { + if (close(fildes)) SysExit("close"); - } } int main(int argc, char *argv[]) { int i; - if (!IsOptimized()) { + if (!IsOptimized()) ShowCrashReports(); - } GetOpts(argc, argv); for (i = optind; i < argc; ++i) { epath = argv[i]; diff --git a/tool/build/resymbol.c b/tool/build/resymbol.c new file mode 100644 index 000000000..a913e3c61 --- /dev/null +++ b/tool/build/resymbol.c @@ -0,0 +1,341 @@ +// Copyright 2024 Justine Alexandra Roberts Tunney +// +// Permission to use, copy, modify, and/or distribute this software for +// any purpose with or without fee is hereby granted, provided that the +// above copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +// WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE +// AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL +// DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +// PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +// TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +// PERFORMANCE OF THIS SOFTWARE. + +#include "libc/calls/calls.h" +#include "libc/elf/def.h" +#include "libc/elf/scalar.h" +#include "libc/elf/struct/ehdr.h" +#include "libc/elf/struct/shdr.h" +#include "libc/elf/struct/sym.h" +#include "libc/errno.h" +#include "libc/runtime/runtime.h" +#include "libc/serialize.h" +#include "libc/stdio/sysparam.h" +#include "libc/str/str.h" +#include "libc/sysv/consts/o.h" +#include "third_party/getopt/getopt.internal.h" + +bool FLAG_quiet; +const char *FLAG_prefix; +const char *FLAG_suffix; +const char *path; + +wontreturn void PrintUsage(int fd, int exitcode) { + tinyprint(fd, "\n\ +NAME\n\ +\n\ + Cosmopolitan Symbol Renamer\n\ +\n\ +SYNOPSIS\n\ +\n\ + ", + path, " -s SUFFIX OBJECT...\n\ +\n\ +DESCRIPTION\n\ +\n\ + This program rewrites ELF objects (i.e. foo.o files) so that an\n\ + arbitrary string is appended to each public symbol's name.\n\ +\n\ +FLAGS\n\ +\n\ + -h show help\n\ + -q quiet mode\n\ + -p PREFIX specifies symbol prefix\n\ + -s SUFFIX specifies symbol suffix\n\ +\n\ +", + NULL); + exit(exitcode); +} + +wontreturn void Die(const char *reason) { + tinyprint(2, path, ": ", reason, "\n", NULL); + exit(1); +} + +wontreturn void DieSys(const char *func) { + tinyprint(2, path, ": ", func, " failed with ", strerror(errno), "\n", NULL); + exit(1); +} + +wontreturn void DieOom(void) { + Die("out of memory"); +} + +struct { + char *last; + size_t used; + union { + char memory[1024 * 1024 * 1024]; + size_t align; + }; +} heap; + +void *Malloc(size_t need) { + if (need <= sizeof(heap.memory)) { + int align = sizeof(size_t); + size_t base = heap.used; + base += align - 1; + base &= -align; + size_t toto = base + sizeof(size_t) + need; + if (toto >= heap.used && toto <= sizeof(heap.memory)) { + char *res = heap.memory + base; + *(size_t *)res = need; + heap.used = toto; + return res + sizeof(size_t); + } + } + DieOom(); +} + +void *Realloc(void *ptr, size_t need) { + if (ptr == heap.last) { + heap.used = (char *)ptr - heap.memory; + return Malloc(need); + } else { + void *res = Malloc(need); + size_t size = *(size_t *)((char *)ptr - sizeof(size_t)); + memcpy(res, ptr, MIN(need, size)); + return res; + } +} + +void ProcessFile(void) { + + // open file + int fildes; + if ((fildes = open(path, O_RDWR)) == -1) + DieSys("open"); + + // read elf header + ssize_t got; + Elf64_Ehdr ehdr; + if ((got = pread(fildes, &ehdr, sizeof(ehdr), 0)) == -1) + DieSys("pread"); + if (got != sizeof(ehdr)) + DieSys("file too small"); + if (READ32LE(ehdr.e_ident) != READ32LE(ELFMAG)) + DieSys("file doesn't have elf magic"); + if (ehdr.e_ident[EI_CLASS] == ELFCLASS32) + DieSys("32-bit elf isn't supported"); + if (ehdr.e_shentsize != sizeof(Elf64_Shdr)) + Die("unsupported e_shentsize"); + if (!ehdr.e_shnum) + Die("elf has no section headers"); + + // read elf section headers + ssize_t need = ehdr.e_shnum * sizeof(Elf64_Shdr); + Elf64_Shdr *shdrs = Malloc(need); + if ((got = pread(fildes, shdrs, need, ehdr.e_shoff)) == -1) + DieSys("pread"); + if (got != need) + Die("found truncated elf section headers"); + + // find elf symbol table + char *stab; + Elf64_Xword stablen; + Elf64_Sym *syms = 0; + Elf64_Xword sym0 = 0; + Elf64_Xword symcount = 0; + Elf64_Off fixoff_symtab_offset = 0; + Elf64_Off fixoff_strtab_offset = 0; + Elf64_Off fixoff_strtab_size = 0; + for (int i = 0; i < ehdr.e_shnum; ++i) { + if (shdrs[i].sh_type == SHT_SYMTAB) { + + // read elf symbol table + if (!shdrs[i].sh_size) + Die("elf symbol table empty"); + if (shdrs[i].sh_entsize != sizeof(Elf64_Sym)) + Die("unsupported sht_symtab sh_entsize"); + need = shdrs[i].sh_size; + syms = Malloc(need); + if ((got = pread(fildes, syms, need, shdrs[i].sh_offset)) == -1) + DieSys("pread"); + if (got != need) + Die("truncated elf symbol table"); + symcount = need / sizeof(Elf64_Sym); + sym0 = shdrs[i].sh_info; + + // read elf string table + if (!(0 <= shdrs[i].sh_link && shdrs[i].sh_link < ehdr.e_shnum)) + Die("out of range section index"); + int j = shdrs[i].sh_link; + if (shdrs[j].sh_type != SHT_STRTAB) + Die("invalid string table reference"); + stablen = shdrs[j].sh_size; + stab = Malloc(stablen + 1); + stab[stablen] = 0; + if ((got = pread(fildes, stab, stablen, shdrs[j].sh_offset)) == -1) + DieSys("pread"); + if (got != stablen) + Die("truncated elf symbol table"); + + // save file offsets of fields we're going to mutate later + fixoff_symtab_offset = ehdr.e_shoff + i * sizeof(Elf64_Shdr) + + offsetof(Elf64_Shdr, sh_offset); + fixoff_strtab_offset = ehdr.e_shoff + j * sizeof(Elf64_Shdr) + + offsetof(Elf64_Shdr, sh_offset); + fixoff_strtab_size = (ehdr.e_shoff + j * sizeof(Elf64_Shdr) + + offsetof(Elf64_Shdr, sh_size)); + break; + } + } + if (!syms) + Die("elf sht_symtab section not found"); + + // make better names for non-local symbols + int renamed = 0; + size_t prefixlen = strlen(FLAG_prefix); + size_t suffixlen = strlen(FLAG_suffix); + for (Elf64_Xword i = sym0; i < symcount; ++i) { + if (syms[i].st_shndx == SHN_ABS) + continue; + if (syms[i].st_shndx == SHN_UNDEF) + continue; + if (syms[i].st_name >= stablen) + Die("out of bounds symbol name"); + if (!strlen(stab + syms[i].st_name)) + Die("found function with empty string as its name"); + Elf64_Word name = syms[i].st_name; + size_t namelen = strlen(stab + name); + if (ELF64_ST_TYPE(syms[i].st_info) != STT_FUNC) { + // resymbol is intended for compiling mathematical objects + // multiple times, for all the cpu microarchitectures. any + // global variables should be moved to a different object. + const char *kind = "non-function symbol"; + if (ELF64_ST_TYPE(syms[i].st_info) == STT_OBJECT || + ELF64_ST_TYPE(syms[i].st_info) == STT_COMMON) + kind = "global variable"; + else if (ELF64_ST_TYPE(syms[i].st_info) == STT_TLS) + kind = "tls global variable"; + else if (ELF64_ST_TYPE(syms[i].st_info) == STT_GNU_IFUNC) + kind = "ifunc or target_clones"; + tinyprint(2, path, ": resymbol won't rewrite object with ", kind, ": ", + stab + name, "\n", NULL); + exit(2); + } + size_t len = prefixlen + namelen + suffixlen; + size_t newname = stablen; + if (newname + len > 0x7fffffff) + Die("elf string table too long"); + stablen += len + 1; + stab = Realloc(stab, stablen); + char *p = stab + newname; + if (prefixlen) + p = mempcpy(p, FLAG_prefix, prefixlen); + p = mempcpy(p, stab + name, namelen); + p = mempcpy(p, FLAG_suffix, suffixlen + 1); + syms[i].st_name = newname; + if (!FLAG_quiet) + tinyprint(1, stab + name, " ", stab + newname, "\n", NULL); + ++renamed; + } + if (!renamed) + Die("object doesn't have any non-local symbols"); + + // get size of object file + ssize_t filesize; + if ((filesize = lseek(fildes, 0, SEEK_END)) == -1) + DieSys("lseek"); + + // write out new symbol table + ssize_t wrote; + Elf64_Off symtaboff = (filesize + 63) & -64; + Elf64_Xword symtablen = symcount * sizeof(Elf64_Sym); + if ((wrote = pwrite(fildes, syms, symtablen, symtaboff)) == -1) + DieSys("pwrite"); + if (wrote != symtablen) + Die("write truncated"); + filesize = symtaboff + symtablen; + + // write out new string table + Elf64_Off staboff = (filesize + 63) & -64; + if ((wrote = pwrite(fildes, stab, stablen, staboff)) == -1) + DieSys("pwrite"); + if (wrote != stablen) + Die("write truncated"); + filesize = staboff + stablen; + + // write new symbol table offset to elf section header + if ((wrote = pwrite(fildes, &symtaboff, sizeof(symtaboff), + fixoff_symtab_offset)) == -1) + DieSys("pwrite"); + if (wrote != sizeof(symtaboff)) + Die("write truncated"); + + // write new string table offset to elf section header + if ((wrote = pwrite(fildes, &staboff, sizeof(staboff), + fixoff_strtab_offset)) == -1) + DieSys("pwrite"); + if (wrote != sizeof(staboff)) + Die("write truncated"); + + // write new string table size to elf section header + if ((wrote = pwrite(fildes, &stablen, sizeof(stablen), // + fixoff_strtab_size)) == -1) + DieSys("pwrite"); + if (wrote != sizeof(staboff)) + Die("write truncated"); + + // finish work + if (close(fildes)) + DieSys("close"); +} + +int main(int argc, char *argv[]) { + + // get program name + if (!(path = argv[0])) + path = "resymbol"; + + // parse flags + int opt; + while ((opt = getopt(argc, argv, "p:s:qh")) != -1) { + switch (opt) { + case 'q': + FLAG_quiet = true; + break; + case 'p': + if (strchr(optarg, ' ')) + Die("symbols with space character unsupported"); + FLAG_prefix = optarg; + break; + case 's': + if (strchr(optarg, ' ')) + Die("symbols with space character unsupported"); + FLAG_suffix = optarg; + break; + case 'h': + PrintUsage(1, 0); + default: + PrintUsage(2, 1); + } + } + if (optind == argc) + Die("missing operand"); + if (!FLAG_prefix && !FLAG_suffix) + Die("missing name mangling flag"); + if (!FLAG_prefix) + FLAG_prefix = ""; + if (!FLAG_suffix) + FLAG_suffix = ""; + + // process arguments + for (int i = optind; i < argc; ++i) { + path = argv[i]; + ProcessFile(); + } +} From a6ecbb747da311e38867884b35a1d440b9d8c913 Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Tue, 7 May 2024 00:37:41 -0700 Subject: [PATCH 035/123] Introduce libc/mem/tinymalloc.inc This allocator shaves ~20kb off single-threaded tool programs and is slightly faster than proper malloc for simple non-demanding programs --- libc/mem/BUILD.mk | 2 + libc/mem/tinymalloc.inc | 160 ++++++++++++++++++++++++++++++++++++++++ tool/build/apelink.c | 2 + tool/build/assimilate.c | 2 + tool/build/compile.c | 2 + tool/build/cp.c | 2 + tool/build/elf2pe.c | 2 + tool/build/fixupobj.c | 2 + tool/build/gzip.c | 2 + tool/build/killall.c | 2 + tool/build/mkdeps.c | 2 + tool/build/mv.c | 2 + tool/build/package.c | 4 +- tool/build/pecheck.c | 2 +- tool/build/resymbol.c | 46 +++--------- tool/build/rm.c | 2 + tool/build/symtab.c | 2 + 17 files changed, 201 insertions(+), 37 deletions(-) create mode 100644 libc/mem/tinymalloc.inc diff --git a/libc/mem/BUILD.mk b/libc/mem/BUILD.mk index 5f9bd5f97..bc9ab42cb 100644 --- a/libc/mem/BUILD.mk +++ b/libc/mem/BUILD.mk @@ -8,6 +8,7 @@ LIBC_MEM = $(LIBC_MEM_A_DEPS) $(LIBC_MEM_A) LIBC_MEM_A = o/$(MODE)/libc/mem/mem.a LIBC_MEM_A_FILES := $(wildcard libc/mem/*) LIBC_MEM_A_HDRS = $(filter %.h,$(LIBC_MEM_A_FILES)) +LIBC_MEM_A_INCS = $(filter %.inc,$(LIBC_MEM_A_FILES)) LIBC_MEM_A_SRCS = $(filter %.c,$(LIBC_MEM_A_FILES)) LIBC_MEM_A_OBJS = $(LIBC_MEM_A_SRCS:%.c=o/$(MODE)/%.o) @@ -46,6 +47,7 @@ $(LIBC_MEM_A_OBJS): private \ LIBC_MEM_LIBS = $(foreach x,$(LIBC_MEM_ARTIFACTS),$($(x))) LIBC_MEM_SRCS = $(foreach x,$(LIBC_MEM_ARTIFACTS),$($(x)_SRCS)) LIBC_MEM_HDRS = $(foreach x,$(LIBC_MEM_ARTIFACTS),$($(x)_HDRS)) +LIBC_MEM_INCS = $(foreach x,$(LIBC_MEM_ARTIFACTS),$($(x)_INCS)) LIBC_MEM_BINS = $(foreach x,$(LIBC_MEM_ARTIFACTS),$($(x)_BINS)) LIBC_MEM_CHECKS = $(foreach x,$(LIBC_MEM_ARTIFACTS),$($(x)_CHECKS)) LIBC_MEM_OBJS = $(foreach x,$(LIBC_MEM_ARTIFACTS),$($(x)_OBJS)) diff --git a/libc/mem/tinymalloc.inc b/libc/mem/tinymalloc.inc new file mode 100644 index 000000000..f214248aa --- /dev/null +++ b/libc/mem/tinymalloc.inc @@ -0,0 +1,160 @@ +// Copyright 2024 Justine Alexandra Roberts Tunney +// +// Permission to use, copy, modify, and/or distribute this software for +// any purpose with or without fee is hereby granted, provided that the +// above copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +// WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE +// AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL +// DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +// PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +// TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +// PERFORMANCE OF THIS SOFTWARE. + +#include "libc/assert.h" +#include "libc/errno.h" +#include "libc/mem/mem.h" +#include "libc/stdckdint.h" +#include "libc/str/str.h" + +#ifndef MODE_DBG /* don't interfere with asan dlmalloc hooking */ + +_Alignas(65536) static struct { + char memory[1024 * 1024 * 1024]; + unsigned used, last, free; +} heap; + +static inline bool isheap(char *mem) { + return heap.memory <= mem && mem < heap.memory + heap.used; +} + +void free(void *ptr) { + char *mem; + unsigned base; + if (ptr) { + mem = (char *)ptr; + unassert(isheap(mem)); + base = mem - heap.memory; + *(unsigned *)mem = heap.free; + heap.free = base; + } +} + +size_t malloc_usable_size(void *ptr) { + char *mem = (char *)ptr; + unassert(isheap(mem)); + return ((unsigned *)mem)[-1]; +} + +void *memalign(size_t align, size_t need) { + char *res; + unsigned next, next2, base, toto, *link, *link2; + + // normalize arguments + while (align & (align - 1)) + ++align; + if (need < sizeof(unsigned)) + need = sizeof(unsigned); + if (align < sizeof(unsigned)) + align = sizeof(unsigned); + if (align > 65536) + goto InvalidArgument; + if (ckd_add(&need, need, sizeof(unsigned) - 1)) + goto OutOfMemory; + need &= -sizeof(unsigned); + + // allocate from free list + next = heap.free; + link = &heap.free; + while (next) { + next2 = *(unsigned *)(heap.memory + next); + link2 = (unsigned *)(heap.memory + next); + if (need <= ((unsigned *)(heap.memory + next))[-1]) { + *link = next2; + return (void *)(heap.memory + next); + } + next = next2; + link = link2; + } + + // allocate new static memory + base = heap.used; + base += sizeof(unsigned); + base += align - 1; + base &= -align; + if (ckd_add(&toto, base, need)) + goto OutOfMemory; + if (toto > sizeof(heap.memory)) + goto OutOfMemory; + res = heap.memory + base; + ((unsigned *)res)[-1] = need; + heap.used = toto; + heap.last = base; + return res; + + // we require more vespene gas +OutOfMemory: + errno = ENOMEM; + return 0; +InvalidArgument: + errno = EINVAL; + return 0; +} + +void *malloc(size_t need) { + return memalign(sizeof(max_align_t), need); +} + +void *calloc(size_t count, size_t size) { + char *res; + unsigned need, used; + if (ckd_mul(&need, count, size)) + need = -1; + used = heap.used; + if ((res = (char *)malloc(need))) + if (res - heap.memory < used) + bzero(res, need); + return res; +} + +void *realloc(void *ptr, size_t need) { + char *res, *mem; + unsigned base, have, toto; + if (!ptr) { + res = (char *)malloc(need); + } else { + mem = (char *)ptr; + unassert(isheap(mem)); + have = ((unsigned *)mem)[-1]; + base = mem - heap.memory; + if (need < have) { + res = mem; + } else if (base == heap.last) { + if (need < sizeof(unsigned)) + need = sizeof(unsigned); + if (ckd_add(&need, need, sizeof(unsigned) - 1)) + goto OutOfMemory; + need &= -sizeof(unsigned); + if (ckd_add(&toto, base, need)) + goto OutOfMemory; + if (toto > sizeof(heap.memory)) + goto OutOfMemory; + ((unsigned *)mem)[-1] = need; + heap.used = toto; + res = mem; + } else if ((res = (char *)malloc(need))) { + if (have > need) + have = need; + memcpy(res, mem, have); + free(mem); + } + } + return res; +OutOfMemory: + errno = ENOMEM; + return 0; +} + +#endif /* MODE_DBG */ diff --git a/tool/build/apelink.c b/tool/build/apelink.c index 25bbbd365..cfdcaea61 100644 --- a/tool/build/apelink.c +++ b/tool/build/apelink.c @@ -259,6 +259,8 @@ static Elf64_Xword notesize; static char *r_off32_e_lfanew; +#include "libc/mem/tinymalloc.inc" + static wontreturn void Die(const char *thing, const char *reason) { tinyprint(2, thing, ": ", reason, "\n", NULL); exit(1); diff --git a/tool/build/assimilate.c b/tool/build/assimilate.c index d294b8ec2..8c6d4c1cf 100644 --- a/tool/build/assimilate.c +++ b/tool/build/assimilate.c @@ -67,6 +67,8 @@ #define FORMAT_MACHO 2 #define FORMAT_PE 3 +#include "libc/mem/tinymalloc.inc" + static int g_arch; static int g_format; static bool g_force; diff --git a/tool/build/compile.c b/tool/build/compile.c index 3fbecc55c..c493c396c 100644 --- a/tool/build/compile.c +++ b/tool/build/compile.c @@ -226,6 +226,8 @@ const char *const kSafeEnv[] = { "SYSTEMROOT", // needed by socket() }; +#include "libc/mem/tinymalloc.inc" + void OnAlrm(int sig) { ++gotalrm; } diff --git a/tool/build/cp.c b/tool/build/cp.c index 5aed44442..afd8e84cc 100644 --- a/tool/build/cp.c +++ b/tool/build/cp.c @@ -69,6 +69,8 @@ char linkbuf[PATH_MAX]; void Cp(char *, char *); +#include "libc/mem/tinymalloc.inc" + bool IsDirectory(const char *path) { int e; bool res; diff --git a/tool/build/elf2pe.c b/tool/build/elf2pe.c index bebbde1d1..9403b0bef 100644 --- a/tool/build/elf2pe.c +++ b/tool/build/elf2pe.c @@ -158,6 +158,8 @@ static const char *stubpath; static long FLAG_SizeOfStackCommit = 64 * 1024; static long FLAG_SizeOfStackReserve = 8 * 1024 * 1024; +#include "libc/mem/tinymalloc.inc" + static wontreturn void Die(const char *thing, const char *reason) { tinyprint(2, thing, ": ", reason, "\n", NULL); exit(1); diff --git a/tool/build/fixupobj.c b/tool/build/fixupobj.c index fd3cafdf8..fc2d53cf5 100644 --- a/tool/build/fixupobj.c +++ b/tool/build/fixupobj.c @@ -67,6 +67,8 @@ static Elf64_Ehdr *elf; static const char *epath; static Elf64_Xword symcount; +#include "libc/mem/tinymalloc.inc" + static wontreturn void Die(const char *reason) { tinyprint(2, epath, ": ", reason, "\n", NULL); exit(1); diff --git a/tool/build/gzip.c b/tool/build/gzip.c index 9ebbfa5c1..c26d65a73 100644 --- a/tool/build/gzip.c +++ b/tool/build/gzip.c @@ -71,6 +71,8 @@ const char *prog; char databuf[32768]; char pathbuf[PATH_MAX]; +#include "libc/mem/tinymalloc.inc" + wontreturn void PrintUsage(int rc, FILE *f) { fputs("usage: ", f); fputs(prog, f); diff --git a/tool/build/killall.c b/tool/build/killall.c index 5d347c825..7a250983b 100644 --- a/tool/build/killall.c +++ b/tool/build/killall.c @@ -50,6 +50,8 @@ static const char *prog; static char16_t **filters; static uint32_t pids[10000]; +#include "libc/mem/tinymalloc.inc" + static wontreturn void PrintUsage(int rc, FILE *f) { fprintf(f, "Usage: %s [-nshv] NAME...\n" diff --git a/tool/build/mkdeps.c b/tool/build/mkdeps.c index 8298ede11..baa6ba843 100644 --- a/tool/build/mkdeps.c +++ b/tool/build/mkdeps.c @@ -146,6 +146,8 @@ static const char *buildroot; static const char *genroot; static const char *outpath; +#include "libc/mem/tinymalloc.inc" + static inline bool IsBlank(int c) { return c == ' ' || c == '\t'; } diff --git a/tool/build/mv.c b/tool/build/mv.c index d1cc31b13..503a2855f 100644 --- a/tool/build/mv.c +++ b/tool/build/mv.c @@ -62,6 +62,8 @@ char linkbuf[PATH_MAX]; void Mv(char *, char *); +#include "libc/mem/tinymalloc.inc" + wontreturn void Die(const char *path, const char *reason) { tinyprint(2, path, ": ", reason, "\n", NULL); exit(1); diff --git a/tool/build/package.c b/tool/build/package.c index c18b18248..57b5de82a 100644 --- a/tool/build/package.c +++ b/tool/build/package.c @@ -43,8 +43,6 @@ #include "third_party/xed/x86.h" #include "tool/build/lib/getargs.h" -__static_yoink("realloc"); - /** * @fileoverview Build Package Script. * @@ -153,6 +151,8 @@ struct Relas { } *p; } prtu; +#include "libc/mem/tinymalloc.inc" + static wontreturn void Die(const char *path, const char *reason) { tinyprint(2, path, ": ", reason, "\n", NULL); exit(1); diff --git a/tool/build/pecheck.c b/tool/build/pecheck.c index f7586b88e..3585f26e3 100644 --- a/tool/build/pecheck.c +++ b/tool/build/pecheck.c @@ -17,7 +17,6 @@ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/calls/calls.h" -#include "libc/serialize.h" #include "libc/limits.h" #include "libc/nt/struct/imageimportbyname.internal.h" #include "libc/nt/struct/imageimportdescriptor.internal.h" @@ -25,6 +24,7 @@ #include "libc/nt/struct/imageoptionalheader.internal.h" #include "libc/nt/struct/imagesectionheader.internal.h" #include "libc/runtime/runtime.h" +#include "libc/serialize.h" #include "libc/stdckdint.h" #include "libc/stdio/stdio.h" #include "libc/str/str.h" diff --git a/tool/build/resymbol.c b/tool/build/resymbol.c index a913e3c61..f525324a2 100644 --- a/tool/build/resymbol.c +++ b/tool/build/resymbol.c @@ -20,6 +20,7 @@ #include "libc/elf/struct/shdr.h" #include "libc/elf/struct/sym.h" #include "libc/errno.h" +#include "libc/mem/mem.h" #include "libc/runtime/runtime.h" #include "libc/serialize.h" #include "libc/stdio/sysparam.h" @@ -32,6 +33,8 @@ const char *FLAG_prefix; const char *FLAG_suffix; const char *path; +#include "libc/mem/tinymalloc.inc" + wontreturn void PrintUsage(int fd, int exitcode) { tinyprint(fd, "\n\ NAME\n\ @@ -74,42 +77,17 @@ wontreturn void DieOom(void) { Die("out of memory"); } -struct { - char *last; - size_t used; - union { - char memory[1024 * 1024 * 1024]; - size_t align; - }; -} heap; - -void *Malloc(size_t need) { - if (need <= sizeof(heap.memory)) { - int align = sizeof(size_t); - size_t base = heap.used; - base += align - 1; - base &= -align; - size_t toto = base + sizeof(size_t) + need; - if (toto >= heap.used && toto <= sizeof(heap.memory)) { - char *res = heap.memory + base; - *(size_t *)res = need; - heap.used = toto; - return res + sizeof(size_t); - } - } - DieOom(); +static void *Malloc(size_t n) { + void *p; + if (!(p = malloc(n))) + DieOom(); + return p; } -void *Realloc(void *ptr, size_t need) { - if (ptr == heap.last) { - heap.used = (char *)ptr - heap.memory; - return Malloc(need); - } else { - void *res = Malloc(need); - size_t size = *(size_t *)((char *)ptr - sizeof(size_t)); - memcpy(res, ptr, MIN(need, size)); - return res; - } +static void *Realloc(void *p, size_t n) { + if (!(p = realloc(p, n))) + DieOom(); + return p; } void ProcessFile(void) { diff --git a/tool/build/rm.c b/tool/build/rm.c index c5a041dbc..e4a3a5077 100644 --- a/tool/build/rm.c +++ b/tool/build/rm.c @@ -48,6 +48,8 @@ static bool recursive; static bool doemptydirs; static const char *prog; +#include "libc/mem/tinymalloc.inc" + static wontreturn void PrintUsage(int rc, int fd) { tinyprint(fd, "USAGE\n\n ", prog, USAGE, NULL); exit(rc); diff --git a/tool/build/symtab.c b/tool/build/symtab.c index 3c3584be4..b372d6f4d 100644 --- a/tool/build/symtab.c +++ b/tool/build/symtab.c @@ -30,6 +30,8 @@ * @fileoverview elf to symbol table file dump tool */ +#include "libc/mem/tinymalloc.inc" + void PrintUsage(FILE *f) { fprintf(f, "%s%s%s\n", "usage: ", program_invocation_name, " [-?h] -o PATH COMDBG"); From 57c0b065c8ff44ef178688a774c6eeed9786ce5a Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Tue, 7 May 2024 03:06:12 -0700 Subject: [PATCH 036/123] Make old C++ demangler asynchronous signal safe It's now possible to safely print C++ backtraces from signal handlers. This symbol demangler doesn't need malloc, tls, or even static memory. Additionally, this change makes it 2x faster and adds test cases. It's almost as performant and accurate as the libcxxabi implementation now. --- libc/cosmo.h | 2 + libc/runtime/isheap.c | 2 +- libc/runtime/runtime.h | 2 +- libc/{stdio => str}/demangle.c | 3743 ++- libc/{fmt => str}/strtol.c | 0 libc/{fmt => str}/strtoul.c | 0 test/libc/str/BUILD.mk | 1 + test/libc/str/demangle_cases.inc | 40496 +++++++++++++++++++++++++++++ test/libc/str/demangle_test.c | 58 + test/posix/BUILD.mk | 1 + 10 files changed, 42326 insertions(+), 1979 deletions(-) rename libc/{stdio => str}/demangle.c (55%) rename libc/{fmt => str}/strtol.c (100%) rename libc/{fmt => str}/strtoul.c (100%) create mode 100644 test/libc/str/demangle_cases.inc create mode 100644 test/libc/str/demangle_test.c diff --git a/libc/cosmo.h b/libc/cosmo.h index 1bcadb4bc..9e16b999a 100644 --- a/libc/cosmo.h +++ b/libc/cosmo.h @@ -6,6 +6,8 @@ errno_t cosmo_once(_Atomic(uint32_t) *, void (*)(void)); int systemvpe(const char *, char *const[], char *const[]) libcesque; char *GetProgramExecutableName(void); void unleaf(void); +int __demangle(char *, const char *, size_t); +int __is_mangled(const char *); COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_COSMO_H_ */ diff --git a/libc/runtime/isheap.c b/libc/runtime/isheap.c index 2df631d88..139d05ebb 100644 --- a/libc/runtime/isheap.c +++ b/libc/runtime/isheap.c @@ -29,7 +29,7 @@ * @assume stack memory isn't stored beneath %rsp (-mno-red-zone) * @deprecated */ -optimizesize bool32 _isheap(void *p) { +optimizesize bool32 _isheap(const void *p) { intptr_t x, y; x = kAutomapStart; y = x + kAutomapSize; diff --git a/libc/runtime/runtime.h b/libc/runtime/runtime.h index 76fb46983..72a112936 100644 --- a/libc/runtime/runtime.h +++ b/libc/runtime/runtime.h @@ -110,9 +110,9 @@ void *_mapanon(size_t) attributeallocsize((1)) mallocesque; void *_mapshared(size_t) attributeallocsize((1)) mallocesque; void CheckForMemoryLeaks(void); void CheckForFileLeaks(void); +bool32 _isheap(const void *); void __enable_threads(void); void __oom_hook(size_t); -bool32 _isheap(void *); /* code morphing */ void __morph_begin(void); void __morph_end(void); diff --git a/libc/stdio/demangle.c b/libc/str/demangle.c similarity index 55% rename from libc/stdio/demangle.c rename to libc/str/demangle.c index 2950ad7ba..a290f5485 100644 --- a/libc/stdio/demangle.c +++ b/libc/str/demangle.c @@ -3,6 +3,7 @@ ╞══════════════════════════════════════════════════════════════════════════════╡ │ Copyright (c) 2007 Hyogeol Lee │ │ Copyright (c) 2015-2017 Kai Wang │ +│ Copyright (c) 2024 Justine Tunney │ │ All rights reserved. │ │ │ │ Redistribution and use in source and binary forms, with or without │ @@ -26,20 +27,23 @@ │ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF │ │ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/assert.h" -#include "libc/cxxabi.h" -#include "libc/errno.h" +#include "libc/cosmo.h" #include "libc/fmt/conv.h" -#include "libc/mem/mem.h" -#include "libc/stdio/stdio.h" +#include "libc/fmt/internal.h" +#include "libc/fmt/itoa.h" +#include "libc/limits.h" +#include "libc/stdalign.internal.h" +#include "libc/stdckdint.h" #include "libc/str/str.h" +#include "libc/str/tab.internal.h" -__notice(demangle_notice, "\ -FreeBSD C++ Demangle (BSD-2)\n\ +__notice(cpp_demangle_notice, "\ +Cosmopolitan FreeBSD libcxxrt C++ Demangle (BSD-2)\n\ Copyright (c) 2007 Hyogeol Lee \n\ -Copyright (c) 2015-2017 Kai Wang "); +Copyright (c) 2015-2017 Kai Wang \n\ +Copyright (c) 2024 Justine Tunney "); // https://github.com/freebsd/freebsd-src/blob/2176c9ab71c85efd90a6c7af4a9e04fe8e3d49ca/contrib/libcxxrt/libelftc_dem_gnu3.c -// clang-format off +// clang -format off /** * @file demangle.c @@ -51,28 +55,44 @@ Copyright (c) 2015-2017 Kai Wang "); * http://www.codesourcery.com/cxx-abi/abi-mangling.html */ -/** @brief Dynamic vector data for string. */ -struct vector_str { - /** Current size */ - size_t size; - /** Total capacity */ - size_t capacity; - /** String array */ - char **container; +#define DEMANGLE_DEMO +#define DEMANGLE_NO_FLOATING_POINT + +#define ASSERT(x) (void)0 + +#define BUFFER_GROWFACTOR 1.618 +#define BUFFER_GROW(x) (((x) + 0.5) * BUFFER_GROWFACTOR) + +#define ELFTC_FAILURE 0 +#define ELFTC_ISDIGIT(C) ('0' <= (C) && (C) <= '9') +#define ELFTC_SUCCESS 1 + +#define VECTOR_DEF_CAPACITY 8 + +struct stack_str { + char *str; + int len; + int cap; + char buf[128]; }; -#define BUFFER_GROWFACTOR 1.618 -#define BUFFER_GROW(x) (((x)+0.5)*BUFFER_GROWFACTOR) - -#define ELFTC_FAILURE 0 -#define ELFTC_ISDIGIT(C) (isdigit((C) & 0xFF)) -#define ELFTC_SUCCESS 1 - -#define VECTOR_DEF_CAPACITY 8 +struct vector_str { + size_t size; + size_t capacity; + char **container; +}; enum type_qualifier { - TYPE_PTR, TYPE_REF, TYPE_CMX, TYPE_IMG, TYPE_EXT, TYPE_RST, TYPE_VAT, - TYPE_CST, TYPE_VEC, TYPE_RREF + TYPE_PTR, + TYPE_REF, + TYPE_CMX, + TYPE_IMG, + TYPE_EXT, + TYPE_RST, + TYPE_VAT, + TYPE_CST, + TYPE_VEC, + TYPE_RREF }; struct vector_type_qualifier { @@ -82,8 +102,15 @@ struct vector_type_qualifier { }; enum read_cmd { - READ_FAIL, READ_NEST, READ_TMPL, READ_EXPR, READ_EXPL, READ_LOCAL, - READ_TYPE, READ_FUNC, READ_PTRMEM + READ_FAIL, + READ_NEST, + READ_TMPL, + READ_EXPR, + READ_EXPL, + READ_LOCAL, + READ_TYPE, + READ_FUNC, + READ_PTRMEM }; struct read_cmd_item { @@ -103,25 +130,27 @@ enum push_qualifier { }; struct cpp_demangle_data { - struct vector_str output; /* output string vector */ - struct vector_str subst; /* substitution string vector */ - struct vector_str tmpl; - struct vector_str class_type; - struct vector_str *cur_output; /* ptr to current output vec */ - struct vector_read_cmd cmd; - bool mem_rst; /* restrict member function */ - bool mem_vat; /* volatile member function */ - bool mem_cst; /* const member function */ - bool mem_ref; /* lvalue-ref member func */ - bool mem_rref; /* rvalue-ref member func */ - bool is_tmpl; /* template args */ - bool is_functype; /* function type */ - bool ref_qualifier; /* ref qualifier */ - enum type_qualifier ref_qualifier_type; /* ref qualifier type */ - enum push_qualifier push_qualifier; /* which qualifiers to push */ - int func_type; - const char *cur; /* current mangled name ptr */ - const char *last_sname; /* last source name */ + uintptr_t heap; + size_t hoff; + struct vector_str output; /* output string vector */ + struct vector_str subst; /* substitution string vector */ + struct vector_str tmpl; + struct vector_str class_type; + struct vector_str *cur_output; /* ptr to current output vec */ + struct vector_read_cmd cmd; + bool mem_rst; /* restrict member function */ + bool mem_vat; /* volatile member function */ + bool mem_cst; /* const member function */ + bool mem_ref; /* lvalue-ref member func */ + bool mem_rref; /* rvalue-ref member func */ + bool is_tmpl; /* template args */ + bool is_functype; /* function type */ + bool ref_qualifier; /* ref qualifier */ + enum type_qualifier ref_qualifier_type; /* ref qualifier type */ + enum push_qualifier push_qualifier; /* which qualifiers to push */ + int func_type; + const char *cur; /* current mangled name ptr */ + const char *last_sname; /* last source name */ }; struct type_delimit { @@ -129,49 +158,133 @@ struct type_delimit { bool firstp; }; -#define CPP_DEMANGLE_TRY_LIMIT 128 -#define FLOAT_SPRINTF_TRY_LIMIT 5 -#define FLOAT_QUADRUPLE_BYTES 16 -#define FLOAT_EXTENED_BYTES 10 +#define CPP_DEMANGLE_TRY_LIMIT 128 +#define FLOAT_SPRINTF_TRY_LIMIT 5 +#define FLOAT_QUADRUPLE_BYTES 16 +#define FLOAT_EXTENED_BYTES 10 -#define SIMPLE_HASH(x,y) (64 * x + y) -#define DEM_PUSH_STR(d,s) cpp_demangle_push_str((d), (s), strlen((s))) -#define VEC_PUSH_STR(d,s) vector_str_push((d), (s), strlen((s))) +#define SIMPLE_HASH(x, y) (64 * x + y) +#define DEM_PUSH_STR(d, s) cpp_demangle_push_str((d), (s), strlen(s)) +#define VEC_PUSH_STR(d, s) vector_str_push(ddata, (d), (s), strlen(s)) +static int cpp_demangle_read_encoding(struct cpp_demangle_data *); +static int cpp_demangle_read_expr_primary(struct cpp_demangle_data *); +static int cpp_demangle_read_expression(struct cpp_demangle_data *); +static int cpp_demangle_read_expression_flat(struct cpp_demangle_data *, + char **); +static int cpp_demangle_read_expression_binary(struct cpp_demangle_data *, + const char *, size_t); +static int cpp_demangle_read_expression_unary(struct cpp_demangle_data *, + const char *, size_t); +static int cpp_demangle_read_expression_trinary(struct cpp_demangle_data *, + const char *, size_t, const char *, size_t); +static int cpp_demangle_read_function(struct cpp_demangle_data *, int *, + struct vector_type_qualifier *); +static int cpp_demangle_local_source_name(struct cpp_demangle_data *ddata); +static int cpp_demangle_read_local_name(struct cpp_demangle_data *); +static int cpp_demangle_read_name(struct cpp_demangle_data *); +static int cpp_demangle_read_name_flat(struct cpp_demangle_data *, char **); +static int cpp_demangle_read_nested_name(struct cpp_demangle_data *); +static int cpp_demangle_read_number(struct cpp_demangle_data *, long *); +static int cpp_demangle_read_number_as_string(struct cpp_demangle_data *, + char **); +static int cpp_demangle_read_nv_offset(struct cpp_demangle_data *); +static int cpp_demangle_read_offset(struct cpp_demangle_data *); +static int cpp_demangle_read_offset_number(struct cpp_demangle_data *); +static int cpp_demangle_read_pointer_to_member(struct cpp_demangle_data *, + struct vector_type_qualifier *); +static int cpp_demangle_read_sname(struct cpp_demangle_data *); +static int cpp_demangle_read_subst(struct cpp_demangle_data *); +static int cpp_demangle_read_subst_std(struct cpp_demangle_data *); +static int cpp_demangle_read_subst_stdtmpl(struct cpp_demangle_data *, + const char *); +static int cpp_demangle_read_tmpl_arg(struct cpp_demangle_data *); +static int cpp_demangle_read_tmpl_args(struct cpp_demangle_data *); +static int cpp_demangle_read_tmpl_param(struct cpp_demangle_data *); +static int cpp_demangle_read_type(struct cpp_demangle_data *, + struct type_delimit *); +static int cpp_demangle_read_type_flat(struct cpp_demangle_data *, char **); +static int cpp_demangle_read_uqname(struct cpp_demangle_data *); +static int cpp_demangle_read_v_offset(struct cpp_demangle_data *); +static struct read_cmd_item *vector_read_cmd_find(struct vector_read_cmd *, + enum read_cmd); +static int vector_read_cmd_push(struct cpp_demangle_data *, + struct vector_read_cmd *, enum read_cmd, void *); +static int vector_type_qualifier_init(struct cpp_demangle_data *, + struct vector_type_qualifier *); +static int vector_type_qualifier_push(struct cpp_demangle_data *, + struct vector_type_qualifier *, enum type_qualifier); -static size_t get_strlen_sum(const struct vector_str *v); -static bool vector_str_grow(struct vector_str *v); +static void * +alloc(struct cpp_demangle_data *h, int a, size_t n) +{ + uintptr_t ptr; + if (n > h->hoff) + return 0; + ptr = h->heap + h->hoff - n; + while (ptr & (a - 1)) { + if (ptr == h->heap) + return 0; + --ptr; + } + h->hoff = ptr - h->heap; + return (void *)ptr; +} + +static char * +dupstr(struct cpp_demangle_data *h, const char *s) +{ + char *d = 0; + if (s) { + size_t n = strlen(s) + 1; + if ((d = (char *)alloc(h, 1, n))) + memcpy(d, s, n); + } + return d; +} + +static void +stack_str_init(struct stack_str *ss) +{ + ss->str = ss->buf; + ss->buf[0] = 0; + ss->len = 0; + ss->cap = sizeof(ss->buf); +} + +static bool +stack_str_append(struct cpp_demangle_data *h, struct stack_str *ss, + const char *str, size_t len) +{ + int len2 = ss->len + len; + int need = len2 + 1; + if (need > ss->cap) { + int cap2; + char *str2; + cap2 = need + (ss->cap >> 1); + if (!(str2 = (char *)alloc(h, 1, cap2))) + return false; + memcpy(str2, ss->str, ss->len); + ss->str = str2; + ss->cap = cap2; + } + memcpy(ss->str + ss->len, str, len); + ss->str[len2] = 0; + ss->len = len2; + return true; +} + +#define stack_str_append_str(h, ss, s) stack_str_append(h, ss, s, strlen(s)) static size_t get_strlen_sum(const struct vector_str *v) { size_t i, len = 0; - - if (v == NULL) - return (0); - - assert(v->size > 0); - + if (!v) + return 0; + ASSERT(v->size > 0); for (i = 0; i < v->size; ++i) len += strlen(v->container[i]); - - return (len); -} - -/** - * @brief Deallocate resource in vector_str. - */ -static void -vector_str_dest(struct vector_str *v) -{ - size_t i; - - if (v == NULL) - return; - - for (i = 0; i < v->size; ++i) - free(v->container[i]); - - free(v->container); + return len; } /** @@ -186,14 +299,14 @@ vector_str_find(const struct vector_str *v, const char *o, size_t l) { size_t i; - if (v == NULL || o == NULL) - return (-1); + if (!v || !o) + return -1; for (i = 0; i < v->size; ++i) - if (strncmp(v->container[i], o, l) == 0) - return (1); + if (!strncmp(v->container[i], o, l)) + return 1; - return (0); + return 0; } /** @@ -205,65 +318,63 @@ vector_str_find(const struct vector_str *v, const char *o, size_t l) * @return NULL at failed or NUL terminated new allocated string. */ static char * -vector_str_get_flat(const struct vector_str *v, size_t *l) +vector_str_get_flat(struct cpp_demangle_data *ddata, const struct vector_str *v, + size_t *l) { ssize_t elem_pos, elem_size, rtn_size; size_t i; char *rtn; - if (v == NULL || v->size == 0) - return (NULL); + if (!v || !v->size) + return 0; - if ((rtn_size = get_strlen_sum(v)) == 0) - return (NULL); + if (!(rtn_size = get_strlen_sum(v))) + return 0; - if ((rtn = malloc(sizeof(char) * (rtn_size + 1))) == NULL) - return (NULL); + if (!(rtn = (char *)alloc(ddata, 1, rtn_size + 1))) + return 0; elem_pos = 0; for (i = 0; i < v->size; ++i) { elem_size = strlen(v->container[i]); - memcpy(rtn + elem_pos, v->container[i], elem_size); - elem_pos += elem_size; } rtn[rtn_size] = '\0'; - if (l != NULL) + if (l) *l = rtn_size; - return (rtn); + return rtn; } static bool -vector_str_grow(struct vector_str *v) +vector_str_grow(struct cpp_demangle_data *ddata, struct vector_str *v) { size_t i, tmp_cap; char **tmp_ctn; - if (v == NULL) - return (false); + if (!v) + return false; - assert(v->capacity > 0); + ASSERT(v->capacity > 0); tmp_cap = BUFFER_GROW(v->capacity); - assert(tmp_cap > v->capacity); + ASSERT(tmp_cap > v->capacity); - if ((tmp_ctn = malloc(sizeof(char *) * tmp_cap)) == NULL) - return (false); + if (!(tmp_ctn = (char **)alloc(ddata, alignof(char *), + sizeof(char *) * tmp_cap))) + return false; for (i = 0; i < v->size; ++i) tmp_ctn[i] = v->container[i]; - free(v->container); - v->container = tmp_ctn; v->capacity = tmp_cap; - return (true); + return true; } /** @@ -271,23 +382,23 @@ vector_str_grow(struct vector_str *v) * @return false at failed, true at success. */ static bool -vector_str_init(struct vector_str *v) +vector_str_init(struct cpp_demangle_data *ddata, struct vector_str *v) { - - if (v == NULL) - return (false); + if (!v) + return false; v->size = 0; v->capacity = VECTOR_DEF_CAPACITY; - assert(v->capacity > 0); + ASSERT(v->capacity > 0); - if ((v->container = malloc(sizeof(char *) * v->capacity)) == NULL) - return (false); + if (!(v->container = (char **)alloc(ddata, alignof(char *), + sizeof(char *) * v->capacity))) + return false; - assert(v->container != NULL); + ASSERT(v->container); - return (true); + return true; } /** @@ -297,19 +408,17 @@ vector_str_init(struct vector_str *v) static bool vector_str_pop(struct vector_str *v) { + if (!v) + return false; - if (v == NULL) - return (false); - - if (v->size == 0) - return (true); + if (!v->size) + return true; --v->size; - free(v->container[v->size]); v->container[v->size] = NULL; - return (true); + return true; } /** @@ -317,23 +426,23 @@ vector_str_pop(struct vector_str *v) * @return false at failed, true at success. */ static bool -vector_str_push(struct vector_str *v, const char *str, size_t len) +vector_str_push(struct cpp_demangle_data *ddata, struct vector_str *v, + const char *str, size_t len) { + if (!v || !str) + return false; - if (v == NULL || str == NULL) - return (false); + if (v->size == v->capacity && !vector_str_grow(ddata, v)) + return false; - if (v->size == v->capacity && vector_str_grow(v) == false) - return (false); + if (!(v->container[v->size] = (char *)alloc(ddata, 1, len + 1))) + return false; - if ((v->container[v->size] = malloc(sizeof(char) * (len + 1))) == NULL) - return (false); - - snprintf(v->container[v->size], len + 1, "%s", str); + strlcpy(v->container[v->size], str, len + 1); ++v->size; - return (true); + return true; } /** @@ -341,39 +450,33 @@ vector_str_push(struct vector_str *v, const char *str, size_t len) * @return false at failed, true at success. */ static bool -vector_str_push_vector_head(struct vector_str *dst, struct vector_str *org) +vector_str_push_vector_head(struct cpp_demangle_data *ddata, + struct vector_str *dst, struct vector_str *org) { - size_t i, j, tmp_cap; + size_t i, tmp_cap; char **tmp_ctn; - if (dst == NULL || org == NULL) - return (false); + if (!dst || !org) + return false; tmp_cap = BUFFER_GROW(dst->size + org->size); - if ((tmp_ctn = malloc(sizeof(char *) * tmp_cap)) == NULL) - return (false); + if (!(tmp_ctn = (char **)alloc(ddata, alignof(char *), + sizeof(char *) * tmp_cap))) + return false; for (i = 0; i < org->size; ++i) - if ((tmp_ctn[i] = strdup(org->container[i])) == NULL) { - for (j = 0; j < i; ++j) - free(tmp_ctn[j]); - - free(tmp_ctn); - - return (false); - } + if (!(tmp_ctn[i] = dupstr(ddata, org->container[i]))) + return false; for (i = 0; i < dst->size; ++i) tmp_ctn[i + org->size] = dst->container[i]; - free(dst->container); - dst->container = tmp_ctn; dst->capacity = tmp_cap; dst->size += org->size; - return (true); + return true; } /** @@ -381,40 +484,34 @@ vector_str_push_vector_head(struct vector_str *dst, struct vector_str *org) * @return false at failed, true at success. */ static bool -vector_str_push_vector(struct vector_str *dst, struct vector_str *org) +vector_str_push_vector(struct cpp_demangle_data *ddata, struct vector_str *dst, + struct vector_str *org) { - size_t i, j, tmp_cap; + size_t i, tmp_cap; char **tmp_ctn; - if (dst == NULL || org == NULL) - return (false); + if (!dst || !org) + return false; tmp_cap = BUFFER_GROW(dst->size + org->size); - if ((tmp_ctn = malloc(sizeof(char *) * tmp_cap)) == NULL) - return (false); + if (!(tmp_ctn = (char **)alloc(ddata, alignof(char *), + sizeof(char *) * tmp_cap))) + return false; for (i = 0; i < dst->size; ++i) tmp_ctn[i] = dst->container[i]; for (i = 0; i < org->size; ++i) - if ((tmp_ctn[i + dst->size] = strdup(org->container[i])) == - NULL) { - for (j = 0; j < i + dst->size; ++j) - free(tmp_ctn[j]); - - free(tmp_ctn); - - return (false); - } - - free(dst->container); + if (!(tmp_ctn[i + dst->size] = dupstr(ddata, + org->container[i]))) + return false; dst->container = tmp_ctn; dst->capacity = tmp_cap; dst->size += org->size; - return (true); + return true; } /** @@ -424,280 +521,83 @@ vector_str_push_vector(struct vector_str *dst, struct vector_str *org) * @return NULL at failed or NUL terminated new allocated string. */ static char * -vector_str_substr(const struct vector_str *v, size_t begin, size_t end, - size_t *r_len) +vector_str_substr(struct cpp_demangle_data *ddata, const struct vector_str *v, + size_t begin, size_t end, size_t *r_len) { - size_t cur, i, len; - char *rtn; + char *rtn, *p; + size_t i, len; - if (v == NULL || begin > end) - return (NULL); + if (!v || begin > end) + return 0; len = 0; for (i = begin; i < end + 1; ++i) len += strlen(v->container[i]); - if ((rtn = malloc(sizeof(char) * (len + 1))) == NULL) - return (NULL); + if (!(rtn = (char *)alloc(ddata, 1, len + 1))) + return 0; - if (r_len != NULL) + if (r_len) *r_len = len; - cur = 0; - for (i = begin; i < end + 1; ++i) { - len = strlen(v->container[i]); - memcpy(rtn + cur, v->container[i], len); - cur += len; - } - rtn[cur] = '\0'; + p = rtn; + for (i = begin; i < end + 1; ++i) + p = stpcpy(p, v->container[i]); - return (rtn); + return rtn; } -static void cpp_demangle_data_dest(struct cpp_demangle_data *); -static int cpp_demangle_data_init(struct cpp_demangle_data *, - const char *); -static int cpp_demangle_get_subst(struct cpp_demangle_data *, size_t); -static int cpp_demangle_get_tmpl_param(struct cpp_demangle_data *, size_t); -static int cpp_demangle_push_fp(struct cpp_demangle_data *, - char *(*)(const char *, size_t)); -static int cpp_demangle_push_str(struct cpp_demangle_data *, const char *, - size_t); -static int cpp_demangle_pop_str(struct cpp_demangle_data *); -static int cpp_demangle_push_subst(struct cpp_demangle_data *, - const char *, size_t); -static int cpp_demangle_push_subst_v(struct cpp_demangle_data *, - struct vector_str *); -static int cpp_demangle_push_type_qualifier(struct cpp_demangle_data *, - struct vector_type_qualifier *, const char *); -static int cpp_demangle_read_array(struct cpp_demangle_data *); -static int cpp_demangle_read_encoding(struct cpp_demangle_data *); -static int cpp_demangle_read_expr_primary(struct cpp_demangle_data *); -static int cpp_demangle_read_expression(struct cpp_demangle_data *); -static int cpp_demangle_read_expression_flat(struct cpp_demangle_data *, - char **); -static int cpp_demangle_read_expression_binary(struct cpp_demangle_data *, - const char *, size_t); -static int cpp_demangle_read_expression_unary(struct cpp_demangle_data *, - const char *, size_t); -static int cpp_demangle_read_expression_trinary(struct cpp_demangle_data *, - const char *, size_t, const char *, size_t); -static int cpp_demangle_read_function(struct cpp_demangle_data *, int *, - struct vector_type_qualifier *); -static int cpp_demangle_local_source_name(struct cpp_demangle_data *ddata); -static int cpp_demangle_read_local_name(struct cpp_demangle_data *); -static int cpp_demangle_read_name(struct cpp_demangle_data *); -static int cpp_demangle_read_name_flat(struct cpp_demangle_data *, - char**); -static int cpp_demangle_read_nested_name(struct cpp_demangle_data *); -static int cpp_demangle_read_number(struct cpp_demangle_data *, long *); -static int cpp_demangle_read_number_as_string(struct cpp_demangle_data *, - char **); -static int cpp_demangle_read_nv_offset(struct cpp_demangle_data *); -static int cpp_demangle_read_offset(struct cpp_demangle_data *); -static int cpp_demangle_read_offset_number(struct cpp_demangle_data *); -static int cpp_demangle_read_pointer_to_member(struct cpp_demangle_data *, - struct vector_type_qualifier *); -static int cpp_demangle_read_sname(struct cpp_demangle_data *); -static int cpp_demangle_read_subst(struct cpp_demangle_data *); -static int cpp_demangle_read_subst_std(struct cpp_demangle_data *); -static int cpp_demangle_read_subst_stdtmpl(struct cpp_demangle_data *, - const char *); -static int cpp_demangle_read_tmpl_arg(struct cpp_demangle_data *); -static int cpp_demangle_read_tmpl_args(struct cpp_demangle_data *); -static int cpp_demangle_read_tmpl_param(struct cpp_demangle_data *); -static int cpp_demangle_read_type(struct cpp_demangle_data *, - struct type_delimit *); -static int cpp_demangle_read_type_flat(struct cpp_demangle_data *, - char **); -static int cpp_demangle_read_uqname(struct cpp_demangle_data *); -static int cpp_demangle_read_v_offset(struct cpp_demangle_data *); -static char *decode_fp_to_double(const char *, size_t); -static char *decode_fp_to_float(const char *, size_t); -static char *decode_fp_to_float128(const char *, size_t); -static char *decode_fp_to_float80(const char *, size_t); -static char *decode_fp_to_long_double(const char *, size_t); -static int hex_to_dec(char); -static void vector_read_cmd_dest(struct vector_read_cmd *); -static struct read_cmd_item *vector_read_cmd_find(struct vector_read_cmd *, - enum read_cmd); -static int vector_read_cmd_init(struct vector_read_cmd *); -static int vector_read_cmd_pop(struct vector_read_cmd *); -static int vector_read_cmd_push(struct vector_read_cmd *, enum read_cmd, - void *); -static void vector_type_qualifier_dest(struct vector_type_qualifier *); -static int vector_type_qualifier_init(struct vector_type_qualifier *); -static int vector_type_qualifier_push(struct vector_type_qualifier *, - enum type_qualifier); - -/** - * @brief Decode the input string by IA-64 C++ ABI style. - * - * GNU GCC v3 use IA-64 standard ABI. - * @return New allocated demangled string or NULL if failed. - * @todo 1. Testing and more test case. 2. Code cleaning. - */ -char * -__cxa_demangle_gnu3(const char *org) +static int +vector_read_cmd_pop(struct vector_read_cmd *v) { - struct cpp_demangle_data ddata; - struct vector_str ret_type; - struct type_delimit td; - ssize_t org_len; - unsigned int limit; - char *rtn = NULL; - bool has_ret = false, more_type = false; + if (!v || !v->size) + return 0; - if (org == NULL) - return (NULL); + --v->size; + v->r_container[v->size].cmd = READ_FAIL; + v->r_container[v->size].data = NULL; - org_len = strlen(org); - // Try demangling as a type for short encodings - if ((org_len < 2) || (org[0] != '_' || org[1] != 'Z' )) { - if (!cpp_demangle_data_init(&ddata, org)) - return (NULL); - if (!cpp_demangle_read_type(&ddata, 0)) - goto clean; - rtn = vector_str_get_flat(&ddata.output, (size_t *) NULL); - goto clean; - } - if (org_len > 11 && !strncmp(org, "_GLOBAL__I_", 11)) { - if ((rtn = malloc(org_len + 19)) == NULL) - return (NULL); - snprintf(rtn, org_len + 19, - "global constructors keyed to %s", org + 11); - return (rtn); - } - - if (!cpp_demangle_data_init(&ddata, org + 2)) - return (NULL); - - if (!cpp_demangle_read_encoding(&ddata)) - goto clean; - - /* - * Pop function name from substitution candidate list. - */ - if (*ddata.cur != 0 && ddata.subst.size >= 1) { - if (!vector_str_pop(&ddata.subst)) - goto clean; - } - - td.paren = false; - td.firstp = true; - limit = 0; - - /* - * The first type is a return type if we just demangled template - * args. (the template args is right next to the function name, - * which means it's a template function) - */ - if (ddata.is_tmpl) { - ddata.is_tmpl = false; - if (!vector_str_init(&ret_type)) - goto clean; - ddata.cur_output = &ret_type; - has_ret = true; - } - - while (*ddata.cur != '\0') { - /* - * Breaking at some gcc info at tail. e.g) @@GLIBCXX_3.4 - */ - if (*ddata.cur == '@' && *(ddata.cur + 1) == '@') - break; - - if (has_ret) { - /* Read return type */ - if (!cpp_demangle_read_type(&ddata, NULL)) - goto clean; - } else { - /* Read function arg type */ - if (!cpp_demangle_read_type(&ddata, &td)) - goto clean; - } - - if (has_ret) { - /* Push return type to the beginning */ - if (!VEC_PUSH_STR(&ret_type, " ")) - goto clean; - if (!vector_str_push_vector_head(&ddata.output, - &ret_type)) - goto clean; - ddata.cur_output = &ddata.output; - vector_str_dest(&ret_type); - has_ret = false; - more_type = true; - } else if (more_type) - more_type = false; - if (limit++ > CPP_DEMANGLE_TRY_LIMIT) - goto clean; - } - if (more_type) - goto clean; - - if (ddata.output.size == 0) - goto clean; - if (td.paren && !VEC_PUSH_STR(&ddata.output, ")")) - goto clean; - if (ddata.mem_vat && !VEC_PUSH_STR(&ddata.output, " volatile")) - goto clean; - if (ddata.mem_cst && !VEC_PUSH_STR(&ddata.output, " const")) - goto clean; - if (ddata.mem_rst && !VEC_PUSH_STR(&ddata.output, " restrict")) - goto clean; - if (ddata.mem_ref && !VEC_PUSH_STR(&ddata.output, " &")) - goto clean; - if (ddata.mem_rref && !VEC_PUSH_STR(&ddata.output, " &&")) - goto clean; - - rtn = vector_str_get_flat(&ddata.output, (size_t *) NULL); - -clean: - if (has_ret) - vector_str_dest(&ret_type); - - cpp_demangle_data_dest(&ddata); - - return (rtn); + return 1; } -static void -cpp_demangle_data_dest(struct cpp_demangle_data *d) +static int +vector_read_cmd_init(struct cpp_demangle_data *ddata, struct vector_read_cmd *v) { + if (!v) + return 0; - if (d == NULL) - return; + v->size = 0; + v->capacity = VECTOR_DEF_CAPACITY; - vector_read_cmd_dest(&d->cmd); - vector_str_dest(&d->class_type); - vector_str_dest(&d->tmpl); - vector_str_dest(&d->subst); - vector_str_dest(&d->output); + if (!(v->r_container = (struct read_cmd_item *)alloc(ddata, + alignof(*v->r_container), + sizeof(*v->r_container) * v->capacity))) + return 0; + + return 1; } static int cpp_demangle_data_init(struct cpp_demangle_data *d, const char *cur) { + if (!d || !cur) + return 0; - if (d == NULL || cur == NULL) - return (0); + if (!vector_str_init(d, &d->output)) + return 0; + if (!vector_str_init(d, &d->subst)) + return 0; + if (!vector_str_init(d, &d->tmpl)) + return 0; + if (!vector_str_init(d, &d->class_type)) + return 0; + if (!vector_read_cmd_init(d, &d->cmd)) + return 0; - if (!vector_str_init(&d->output)) - return (0); - if (!vector_str_init(&d->subst)) - goto clean1; - if (!vector_str_init(&d->tmpl)) - goto clean2; - if (!vector_str_init(&d->class_type)) - goto clean3; - if (!vector_read_cmd_init(&d->cmd)) - goto clean4; - - assert(d->output.container != NULL); - assert(d->subst.container != NULL); - assert(d->tmpl.container != NULL); - assert(d->class_type.container != NULL); + ASSERT(d->output.container); + ASSERT(d->subst.container); + ASSERT(d->tmpl.container); + ASSERT(d->class_type.container); d->mem_rst = false; d->mem_vat = false; @@ -713,57 +613,15 @@ cpp_demangle_data_init(struct cpp_demangle_data *d, const char *cur) d->cur_output = &d->output; d->last_sname = NULL; - return (1); - -clean4: - vector_str_dest(&d->class_type); -clean3: - vector_str_dest(&d->tmpl); -clean2: - vector_str_dest(&d->subst); -clean1: - vector_str_dest(&d->output); - - return (0); -} - -static int -cpp_demangle_push_fp(struct cpp_demangle_data *ddata, - char *(*decoder)(const char *, size_t)) -{ - size_t len; - int rtn; - const char *fp; - char *f; - - if (ddata == NULL || decoder == NULL) - return (0); - - fp = ddata->cur; - while (*ddata->cur != 'E') - ++ddata->cur; - - if ((f = decoder(fp, ddata->cur - fp)) == NULL) - return (0); - - rtn = 0; - if ((len = strlen(f)) > 0) - rtn = cpp_demangle_push_str(ddata, f, len); - - free(f); - - ++ddata->cur; - - return (rtn); + return 1; } static int cpp_demangle_push_str(struct cpp_demangle_data *ddata, const char *str, size_t len) { - - if (ddata == NULL || str == NULL || len == 0) - return (0); + if (!ddata || !str || !len) + return 0; /* * is_tmpl is used to check if the type (function arg) is right next @@ -772,76 +630,99 @@ cpp_demangle_push_str(struct cpp_demangle_data *ddata, const char *str, */ ddata->is_tmpl = false; - return (vector_str_push(ddata->cur_output, str, len)); + return vector_str_push(ddata, ddata->cur_output, str, len); } +#ifndef DEMANGLE_NO_FLOATING_POINT +static int +cpp_demangle_push_fp(struct cpp_demangle_data *ddata, + char *decoder(struct cpp_demangle_data *, const char *, size_t)) +{ + size_t len; + int rtn; + const char *fp; + char *f; + + if (!ddata || !decoder) + return 0; + + fp = ddata->cur; + while (*ddata->cur != 'E') + ++ddata->cur; + + if (!(f = decoder(ddata, fp, ddata->cur - fp))) + return 0; + + rtn = 0; + if ((len = strlen(f)) > 0) + rtn = cpp_demangle_push_str(ddata, f, len); + + ++ddata->cur; + + return rtn; +} +#endif // DEMANGLE_NO_FLOATING_POINT + static int cpp_demangle_pop_str(struct cpp_demangle_data *ddata) { + if (!ddata) + return 0; - if (ddata == NULL) - return (0); - - return (vector_str_pop(ddata->cur_output)); + return vector_str_pop(ddata->cur_output); } static int cpp_demangle_push_subst(struct cpp_demangle_data *ddata, const char *str, size_t len) { - - if (ddata == NULL || str == NULL || len == 0) - return (0); + if (!ddata || !str || !len) + return 0; if (!vector_str_find(&ddata->subst, str, len)) - return (vector_str_push(&ddata->subst, str, len)); + return vector_str_push(ddata, &ddata->subst, str, len); - return (1); + return 1; } static int cpp_demangle_push_subst_v(struct cpp_demangle_data *ddata, struct vector_str *v) { - size_t str_len; int rtn; char *str; + size_t str_len; - if (ddata == NULL || v == NULL) - return (0); + if (!ddata || !v) + return 0; - if ((str = vector_str_get_flat(v, &str_len)) == NULL) - return (0); + if (!(str = vector_str_get_flat(ddata, v, &str_len))) + return 0; rtn = cpp_demangle_push_subst(ddata, str, str_len); - free(str); - - return (rtn); + return rtn; } static int cpp_demangle_push_type_qualifier(struct cpp_demangle_data *ddata, struct vector_type_qualifier *v, const char *type_str) { - struct vector_str subst_v; + struct stack_str subst_v; enum type_qualifier t; size_t idx, e_idx, e_len; char *buf; - int rtn; bool cv; - if (ddata == NULL || v == NULL) - return (0); + if (!ddata || !v) + return 0; - if ((idx = v->size) == 0) - return (1); + if (!(idx = v->size)) + return 1; - rtn = 0; - if (type_str != NULL) { - if (!vector_str_init(&subst_v)) - return (0); - if (!VEC_PUSH_STR(&subst_v, type_str)) - goto clean; + if (type_str) { + stack_str_init(&subst_v); + if (!stack_str_append_str(ddata, &subst_v, type_str)) + return 0; } cv = true; @@ -853,13 +734,13 @@ cpp_demangle_push_type_qualifier(struct cpp_demangle_data *ddata, if (ddata->push_qualifier == PUSH_CV_QUALIFIER) break; if (!DEM_PUSH_STR(ddata, "*")) - goto clean; - if (type_str != NULL) { - if (!VEC_PUSH_STR(&subst_v, "*")) - goto clean; - if (!cpp_demangle_push_subst_v(ddata, - &subst_v)) - goto clean; + return 0; + if (type_str) { + if (!stack_str_append_str(ddata, &subst_v, "*")) + return 0; + if (!cpp_demangle_push_subst(ddata, subst_v.str, + subst_v.len)) + return 0; } break; @@ -868,13 +749,13 @@ cpp_demangle_push_type_qualifier(struct cpp_demangle_data *ddata, if (ddata->push_qualifier == PUSH_CV_QUALIFIER) break; if (!DEM_PUSH_STR(ddata, "&")) - goto clean; - if (type_str != NULL) { - if (!VEC_PUSH_STR(&subst_v, "&")) - goto clean; - if (!cpp_demangle_push_subst_v(ddata, - &subst_v)) - goto clean; + return 0; + if (type_str) { + if (!stack_str_append_str(ddata, &subst_v, "&")) + return 0; + if (!cpp_demangle_push_subst(ddata, subst_v.str, + subst_v.len)) + return 0; } break; @@ -883,13 +764,14 @@ cpp_demangle_push_type_qualifier(struct cpp_demangle_data *ddata, if (ddata->push_qualifier == PUSH_CV_QUALIFIER) break; if (!DEM_PUSH_STR(ddata, "&&")) - goto clean; - if (type_str != NULL) { - if (!VEC_PUSH_STR(&subst_v, "&&")) - goto clean; - if (!cpp_demangle_push_subst_v(ddata, - &subst_v)) - goto clean; + return 0; + if (type_str) { + if (!stack_str_append_str(ddata, &subst_v, + "&&")) + return 0; + if (!cpp_demangle_push_subst(ddata, subst_v.str, + subst_v.len)) + return 0; } break; @@ -898,13 +780,14 @@ cpp_demangle_push_type_qualifier(struct cpp_demangle_data *ddata, if (ddata->push_qualifier == PUSH_CV_QUALIFIER) break; if (!DEM_PUSH_STR(ddata, " complex")) - goto clean; - if (type_str != NULL) { - if (!VEC_PUSH_STR(&subst_v, " complex")) - goto clean; - if (!cpp_demangle_push_subst_v(ddata, - &subst_v)) - goto clean; + return 0; + if (type_str) { + if (!stack_str_append_str(ddata, &subst_v, + " complex")) + return 0; + if (!cpp_demangle_push_subst(ddata, subst_v.str, + subst_v.len)) + return 0; } break; @@ -913,13 +796,14 @@ cpp_demangle_push_type_qualifier(struct cpp_demangle_data *ddata, if (ddata->push_qualifier == PUSH_CV_QUALIFIER) break; if (!DEM_PUSH_STR(ddata, " imaginary")) - goto clean; - if (type_str != NULL) { - if (!VEC_PUSH_STR(&subst_v, " imaginary")) - goto clean; - if (!cpp_demangle_push_subst_v(ddata, - &subst_v)) - goto clean; + return 0; + if (type_str) { + if (!stack_str_append_str(ddata, &subst_v, + " imaginary")) + return 0; + if (!cpp_demangle_push_subst(ddata, subst_v.str, + subst_v.len)) + return 0; } break; @@ -927,34 +811,26 @@ cpp_demangle_push_type_qualifier(struct cpp_demangle_data *ddata, cv = false; if (ddata->push_qualifier == PUSH_CV_QUALIFIER) break; - if (v->ext_name.size == 0 || - e_idx > v->ext_name.size - 1) - goto clean; - if ((e_len = strlen(v->ext_name.container[e_idx])) == - 0) - goto clean; - if ((buf = malloc(e_len + 2)) == NULL) - goto clean; - snprintf(buf, e_len + 2, " %s", - v->ext_name.container[e_idx]); + if (!v->ext_name.size || e_idx > v->ext_name.size - 1) + return 0; + if (!(e_len = strlen(v->ext_name.container[e_idx]))) + return 0; + if (!(buf = (char *)alloc(ddata, 1, e_len + 2))) + return 0; + buf[0] = ' '; + memcpy(buf + 1, v->ext_name.container[e_idx], + e_len + 1); - if (!DEM_PUSH_STR(ddata, buf)) { - free(buf); - goto clean; - } + if (!DEM_PUSH_STR(ddata, buf)) + return 0; - if (type_str != NULL) { - if (!VEC_PUSH_STR(&subst_v, buf)) { - free(buf); - goto clean; - } - if (!cpp_demangle_push_subst_v(ddata, - &subst_v)) { - free(buf); - goto clean; - } + if (type_str) { + if (!stack_str_append_str(ddata, &subst_v, buf)) + return 0; + if (!cpp_demangle_push_subst(ddata, subst_v.str, + subst_v.len)) + return 0; } - free(buf); ++e_idx; break; @@ -965,19 +841,20 @@ cpp_demangle_push_type_qualifier(struct cpp_demangle_data *ddata, if (ddata->push_qualifier == PUSH_CV_QUALIFIER && !cv) break; if (!DEM_PUSH_STR(ddata, " restrict")) - goto clean; - if (type_str != NULL) { - if (!VEC_PUSH_STR(&subst_v, " restrict")) - goto clean; + return 0; + if (type_str) { + if (!stack_str_append_str(ddata, &subst_v, + " restrict")) + return 0; if (idx - 1 > 0) { t = v->q_container[idx - 2]; if (t == TYPE_RST || t == TYPE_VAT || t == TYPE_CST) break; } - if (!cpp_demangle_push_subst_v(ddata, - &subst_v)) - goto clean; + if (!cpp_demangle_push_subst(ddata, subst_v.str, + subst_v.len)) + return 0; } break; @@ -988,19 +865,20 @@ cpp_demangle_push_type_qualifier(struct cpp_demangle_data *ddata, if (ddata->push_qualifier == PUSH_CV_QUALIFIER && !cv) break; if (!DEM_PUSH_STR(ddata, " volatile")) - goto clean; - if (type_str != NULL) { - if (!VEC_PUSH_STR(&subst_v, " volatile")) - goto clean; + return 0; + if (type_str) { + if (!stack_str_append_str(ddata, &subst_v, + " volatile")) + return 0; if (idx - 1 > 0) { t = v->q_container[idx - 2]; if (t == TYPE_RST || t == TYPE_VAT || t == TYPE_CST) break; } - if (!cpp_demangle_push_subst_v(ddata, - &subst_v)) - goto clean; + if (!cpp_demangle_push_subst(ddata, subst_v.str, + subst_v.len)) + return 0; } break; @@ -1011,64 +889,56 @@ cpp_demangle_push_type_qualifier(struct cpp_demangle_data *ddata, if (ddata->push_qualifier == PUSH_CV_QUALIFIER && !cv) break; if (!DEM_PUSH_STR(ddata, " const")) - goto clean; - if (type_str != NULL) { - if (!VEC_PUSH_STR(&subst_v, " const")) - goto clean; + return 0; + if (type_str) { + if (!stack_str_append_str(ddata, &subst_v, + " const")) + return 0; if (idx - 1 > 0) { t = v->q_container[idx - 2]; if (t == TYPE_RST || t == TYPE_VAT || t == TYPE_CST) break; } - if (!cpp_demangle_push_subst_v(ddata, - &subst_v)) - goto clean; + if (!cpp_demangle_push_subst(ddata, subst_v.str, + subst_v.len)) + return 0; } break; - case TYPE_VEC: + case TYPE_VEC: { + char *p; cv = false; if (ddata->push_qualifier == PUSH_CV_QUALIFIER) break; - if (v->ext_name.size == 0 || - e_idx > v->ext_name.size - 1) - goto clean; - if ((e_len = strlen(v->ext_name.container[e_idx])) == - 0) - goto clean; - if ((buf = malloc(e_len + 12)) == NULL) - goto clean; - snprintf(buf, e_len + 12, " __vector(%s)", - v->ext_name.container[e_idx]); - if (!DEM_PUSH_STR(ddata, buf)) { - free(buf); - goto clean; + if (!v->ext_name.size || e_idx > v->ext_name.size - 1) + return 0; + if (!(e_len = strlen(v->ext_name.container[e_idx]))) + return 0; + if (!(buf = (char *)alloc(ddata, 1, e_len + 12))) + return 0; + p = buf; + p = stpcpy(p, " __vector("); + p = (char *)mempcpy(p, v->ext_name.container[e_idx], + e_len); + p = stpcpy(p, ")"); + if (!DEM_PUSH_STR(ddata, buf)) + return 0; + if (type_str) { + if (!stack_str_append_str(ddata, &subst_v, buf)) + return 0; + if (!cpp_demangle_push_subst(ddata, subst_v.str, + subst_v.len)) + return 0; } - if (type_str != NULL) { - if (!VEC_PUSH_STR(&subst_v, buf)) { - free(buf); - goto clean; - } - if (!cpp_demangle_push_subst_v(ddata, - &subst_v)) { - free(buf); - goto clean; - } - } - free(buf); ++e_idx; break; } + } --idx; } - rtn = 1; -clean: - if (type_str != NULL) - vector_str_dest(&subst_v); - - return (rtn); + return 1; } static int @@ -1076,17 +946,17 @@ cpp_demangle_get_subst(struct cpp_demangle_data *ddata, size_t idx) { size_t len; - if (ddata == NULL || ddata->subst.size <= idx) - return (0); - if ((len = strlen(ddata->subst.container[idx])) == 0) - return (0); + if (!ddata || ddata->subst.size <= idx) + return 0; + if (!(len = strlen(ddata->subst.container[idx]))) + return 0; if (!cpp_demangle_push_str(ddata, ddata->subst.container[idx], len)) - return (0); + return 0; /* skip '_' */ ++ddata->cur; - return (1); + return 1; } static int @@ -1094,16 +964,16 @@ cpp_demangle_get_tmpl_param(struct cpp_demangle_data *ddata, size_t idx) { size_t len; - if (ddata == NULL || ddata->tmpl.size <= idx) - return (0); - if ((len = strlen(ddata->tmpl.container[idx])) == 0) - return (0); + if (!ddata || ddata->tmpl.size <= idx) + return 0; + if (!(len = strlen(ddata->tmpl.container[idx]))) + return 0; if (!cpp_demangle_push_str(ddata, ddata->tmpl.container[idx], len)) - return (0); + return 0; ++ddata->cur; - return (1); + return 1; } static int @@ -1113,136 +983,430 @@ cpp_demangle_read_array(struct cpp_demangle_data *ddata) const char *num; char *exp; - if (ddata == NULL || *(++ddata->cur) == '\0') - return (0); + if (!ddata || *(++ddata->cur) == '\0') + return 0; if (*ddata->cur == '_') { if (*(++ddata->cur) == '\0') - return (0); + return 0; if (!cpp_demangle_read_type(ddata, NULL)) - return (0); + return 0; if (!DEM_PUSH_STR(ddata, " []")) - return (0); + return 0; } else { - if (ELFTC_ISDIGIT(*ddata->cur) != 0) { + if (ELFTC_ISDIGIT(*ddata->cur)) { num = ddata->cur; - while (ELFTC_ISDIGIT(*ddata->cur) != 0) + while (ELFTC_ISDIGIT(*ddata->cur)) ++ddata->cur; if (*ddata->cur != '_') - return (0); + return 0; num_len = ddata->cur - num; - assert(num_len > 0); + ASSERT(num_len > 0); if (*(++ddata->cur) == '\0') - return (0); + return 0; if (!cpp_demangle_read_type(ddata, NULL)) - return (0); + return 0; if (!DEM_PUSH_STR(ddata, " [")) - return (0); + return 0; if (!cpp_demangle_push_str(ddata, num, num_len)) - return (0); + return 0; if (!DEM_PUSH_STR(ddata, "]")) - return (0); + return 0; } else { p_idx = ddata->output.size; if (!cpp_demangle_read_expression(ddata)) - return (0); - if ((exp = vector_str_substr(&ddata->output, p_idx, - ddata->output.size - 1, &exp_len)) == NULL) - return (0); + return 0; + if (!(exp = vector_str_substr(ddata, &ddata->output, + p_idx, ddata->output.size - 1, &exp_len))) + return 0; idx = ddata->output.size; for (i = p_idx; i < idx; ++i) - if (!vector_str_pop(&ddata->output)) { - free(exp); - return (0); - } - if (*ddata->cur != '_') { - free(exp); - return (0); - } + if (!vector_str_pop(&ddata->output)) + return 0; + if (*ddata->cur != '_') + return 0; ++ddata->cur; - if (*ddata->cur == '\0') { - free(exp); - return (0); - } - if (!cpp_demangle_read_type(ddata, NULL)) { - free(exp); - return (0); - } - if (!DEM_PUSH_STR(ddata, " [")) { - free(exp); - return (0); - } - if (!cpp_demangle_push_str(ddata, exp, exp_len)) { - free(exp); - return (0); - } - if (!DEM_PUSH_STR(ddata, "]")) { - free(exp); - return (0); - } - free(exp); + if (*ddata->cur == '\0') + return 0; + if (!cpp_demangle_read_type(ddata, NULL)) + return 0; + if (!DEM_PUSH_STR(ddata, " [")) + return 0; + if (!cpp_demangle_push_str(ddata, exp, exp_len)) + return 0; + if (!DEM_PUSH_STR(ddata, "]")) + return 0; } } - return (1); + return 1; } +#ifndef DEMANGLE_NO_FLOATING_POINT + +/* Simple hex to integer function used by decode_to_* function. */ +static int +hex_to_dec(char c) +{ + switch (c) { + case '0': + return 0; + case '1': + return 1; + case '2': + return 2; + case '3': + return 3; + case '4': + return 4; + case '5': + return 5; + case '6': + return 6; + case '7': + return 7; + case '8': + return 8; + case '9': + return 9; + case 'a': + return 10; + case 'b': + return 11; + case 'c': + return 12; + case 'd': + return 13; + case 'e': + return 14; + case 'f': + return 15; + default: + return -1; + } +} + +/* + * Decode floating point representation to string + * Return new allocated string or NULL + * + * Todo + * Replace these functions to macro. + */ +static char * +decode_fp_to_double(struct cpp_demangle_data *ddata, const char *p, size_t len) +{ + double f; + size_t rtn_len, limit, i; + int byte; + char *rtn; + + if (!p || !len || len % 2 || len / 2 > sizeof(double)) + return 0; + + memset(&f, 0, sizeof(double)); + + for (i = 0; i < len / 2; ++i) { + byte = hex_to_dec(p[len - i * 2 - 1]) + + hex_to_dec(p[len - i * 2 - 2]) * 16; + + if (byte < 0 || byte > 255) + return 0; + +#if ELFTC_BYTE_ORDER == ELFTC_BYTE_ORDER_LITTLE_ENDIAN + ((unsigned char *)&f)[i] = (unsigned char)(byte); +#else /* ELFTC_BYTE_ORDER != ELFTC_BYTE_ORDER_LITTLE_ENDIAN */ + ((unsigned char *)&f)[sizeof(double) - i - 1] = + (unsigned char)(byte); +#endif /* ELFTC_BYTE_ORDER == ELFTC_BYTE_ORDER_LITTLE_ENDIAN */ + } + + rtn_len = 64; + limit = 0; +again: + if (!(rtn = (char *)alloc(ddata, alignof(char), + sizeof(char) * rtn_len))) + return 0; + + if (snprintf(rtn, rtn_len, "%fld", f) >= (int)rtn_len) { + if (limit++ > FLOAT_SPRINTF_TRY_LIMIT) + return 0; + rtn_len *= BUFFER_GROWFACTOR; + goto again; + } + + return rtn; +} + +static char * +decode_fp_to_float(struct cpp_demangle_data *ddata, const char *p, size_t len) +{ + size_t i, rtn_len, limit; + float f; + int byte; + char *rtn; + + if (!p || !len || len % 2 || len / 2 > sizeof(float)) + return 0; + + memset(&f, 0, sizeof(float)); + + for (i = 0; i < len / 2; ++i) { + byte = hex_to_dec(p[len - i * 2 - 1]) + + hex_to_dec(p[len - i * 2 - 2]) * 16; + if (byte < 0 || byte > 255) + return 0; +#if ELFTC_BYTE_ORDER == ELFTC_BYTE_ORDER_LITTLE_ENDIAN + ((unsigned char *)&f)[i] = (unsigned char)(byte); +#else /* ELFTC_BYTE_ORDER != ELFTC_BYTE_ORDER_LITTLE_ENDIAN */ + ((unsigned char *)&f)[sizeof(float) - i - 1] = + (unsigned char)(byte); +#endif /* ELFTC_BYTE_ORDER == ELFTC_BYTE_ORDER_LITTLE_ENDIAN */ + } + + rtn_len = 64; + limit = 0; +again: + if (!(rtn = (char *)alloc(ddata, alignof(char), + sizeof(char) * rtn_len))) + return 0; + + if (snprintf(rtn, rtn_len, "%ff", f) >= (int)rtn_len) { + if (limit++ > FLOAT_SPRINTF_TRY_LIMIT) + return 0; + rtn_len *= BUFFER_GROWFACTOR; + goto again; + } + + return rtn; +} + +static char * +decode_fp_to_long_double(struct cpp_demangle_data *ddata, const char *p, + size_t len) +{ + long double f; + size_t rtn_len, limit, i; + int byte; + char *rtn; + + if (!p || !len || len % 2 || len / 2 > sizeof(long double)) + return 0; + + memset(&f, 0, sizeof(long double)); + + for (i = 0; i < len / 2; ++i) { + byte = hex_to_dec(p[len - i * 2 - 1]) + + hex_to_dec(p[len - i * 2 - 2]) * 16; + + if (byte < 0 || byte > 255) + return 0; + +#if ELFTC_BYTE_ORDER == ELFTC_BYTE_ORDER_LITTLE_ENDIAN + ((unsigned char *)&f)[i] = (unsigned char)(byte); +#else /* ELFTC_BYTE_ORDER != ELFTC_BYTE_ORDER_LITTLE_ENDIAN */ + ((unsigned char *)&f)[sizeof(long double) - i - 1] = + (unsigned char)(byte); +#endif /* ELFTC_BYTE_ORDER == ELFTC_BYTE_ORDER_LITTLE_ENDIAN */ + } + + rtn_len = 256; + limit = 0; +again: + if (!(rtn = (char *)alloc(ddata, alignof(char), + sizeof(char) * rtn_len))) + return 0; + + if (snprintf(rtn, rtn_len, "%Lfd", f) >= (int)rtn_len) { + if (limit++ > FLOAT_SPRINTF_TRY_LIMIT) + return 0; + rtn_len *= BUFFER_GROWFACTOR; + goto again; + } + + return rtn; +} + +static char * +decode_fp_to_float128(struct cpp_demangle_data *ddata, const char *p, + size_t len) +{ + long double f; + size_t rtn_len, limit, i; + int byte; + unsigned char buf[FLOAT_QUADRUPLE_BYTES]; + char *rtn; + + switch (sizeof(long double)) { + case FLOAT_QUADRUPLE_BYTES: + return decode_fp_to_long_double(ddata, p, len); + case FLOAT_EXTENED_BYTES: + if (!p || !len || len % 2 || len / 2 > FLOAT_QUADRUPLE_BYTES) + return 0; + + memset(buf, 0, FLOAT_QUADRUPLE_BYTES); + + for (i = 0; i < len / 2; ++i) { + byte = hex_to_dec(p[len - i * 2 - 1]) + + hex_to_dec(p[len - i * 2 - 2]) * 16; + if (byte < 0 || byte > 255) + return 0; +#if ELFTC_BYTE_ORDER == ELFTC_BYTE_ORDER_LITTLE_ENDIAN + buf[i] = (unsigned char)(byte); +#else /* ELFTC_BYTE_ORDER != ELFTC_BYTE_ORDER_LITTLE_ENDIAN */ + buf[FLOAT_QUADRUPLE_BYTES - i - 1] = + (unsigned char)(byte); +#endif /* ELFTC_BYTE_ORDER == ELFTC_BYTE_ORDER_LITTLE_ENDIAN */ + } + memset(&f, 0, FLOAT_EXTENED_BYTES); + +#if ELFTC_BYTE_ORDER == ELFTC_BYTE_ORDER_LITTLE_ENDIAN + memcpy(&f, buf, FLOAT_EXTENED_BYTES); +#else /* ELFTC_BYTE_ORDER != ELFTC_BYTE_ORDER_LITTLE_ENDIAN */ + memcpy(&f, buf + 6, FLOAT_EXTENED_BYTES); +#endif /* ELFTC_BYTE_ORDER == ELFTC_BYTE_ORDER_LITTLE_ENDIAN */ + + rtn_len = 256; + limit = 0; + again: + if (!(rtn = (char *)alloc(ddata, alignof(char), + sizeof(char) * rtn_len))) + return 0; + + if (snprintf(rtn, rtn_len, "%Lfd", f) >= (int)rtn_len) { + if (limit++ > FLOAT_SPRINTF_TRY_LIMIT) + return 0; + rtn_len *= BUFFER_GROWFACTOR; + goto again; + } + + return rtn; + default: + return 0; + } +} + +static char * +decode_fp_to_float80(struct cpp_demangle_data *ddata, const char *p, size_t len) +{ + long double f; + size_t rtn_len, limit, i; + int byte; + unsigned char buf[FLOAT_EXTENED_BYTES]; + char *rtn; + + switch (sizeof(long double)) { + case FLOAT_QUADRUPLE_BYTES: + if (!p || !len || len % 2 || len / 2 > FLOAT_EXTENED_BYTES) + return 0; + + memset(buf, 0, FLOAT_EXTENED_BYTES); + + for (i = 0; i < len / 2; ++i) { + byte = hex_to_dec(p[len - i * 2 - 1]) + + hex_to_dec(p[len - i * 2 - 2]) * 16; + + if (byte < 0 || byte > 255) + return 0; + +#if ELFTC_BYTE_ORDER == ELFTC_BYTE_ORDER_LITTLE_ENDIAN + buf[i] = (unsigned char)(byte); +#else /* ELFTC_BYTE_ORDER != ELFTC_BYTE_ORDER_LITTLE_ENDIAN */ + buf[FLOAT_EXTENED_BYTES - i - 1] = + (unsigned char)(byte); +#endif /* ELFTC_BYTE_ORDER == ELFTC_BYTE_ORDER_LITTLE_ENDIAN */ + } + + memset(&f, 0, FLOAT_QUADRUPLE_BYTES); + +#if ELFTC_BYTE_ORDER == ELFTC_BYTE_ORDER_LITTLE_ENDIAN + memcpy(&f, buf, FLOAT_EXTENED_BYTES); +#else /* ELFTC_BYTE_ORDER != ELFTC_BYTE_ORDER_LITTLE_ENDIAN */ + memcpy((unsigned char *)(&f) + 6, buf, FLOAT_EXTENED_BYTES); +#endif /* ELFTC_BYTE_ORDER == ELFTC_BYTE_ORDER_LITTLE_ENDIAN */ + + rtn_len = 256; + limit = 0; + again: + if (!(rtn = (char *)alloc(ddata, alignof(char), + sizeof(char) * rtn_len))) + return 0; + + if (snprintf(rtn, rtn_len, "%Lfd", f) >= (int)rtn_len) { + if (limit++ > FLOAT_SPRINTF_TRY_LIMIT) + return 0; + rtn_len *= BUFFER_GROWFACTOR; + goto again; + } + + return rtn; + case FLOAT_EXTENED_BYTES: + return decode_fp_to_long_double(ddata, p, len); + default: + return 0; + } +} + +#endif // DEMANGLE_NO_FLOATING_POINT + static int cpp_demangle_read_expr_primary(struct cpp_demangle_data *ddata) { const char *num; - if (ddata == NULL || *(++ddata->cur) == '\0') - return (0); + if (!ddata || *(++ddata->cur) == '\0') + return 0; if (*ddata->cur == '_' && *(ddata->cur + 1) == 'Z') { ddata->cur += 2; if (*ddata->cur == '\0') - return (0); + return 0; if (!cpp_demangle_read_encoding(ddata)) - return (0); + return 0; ++ddata->cur; - return (1); + return 1; } switch (*ddata->cur) { case 'b': if (*(ddata->cur + 2) != 'E') - return (0); + return 0; switch (*(++ddata->cur)) { case '0': ddata->cur += 2; - return (DEM_PUSH_STR(ddata, "false")); + return DEM_PUSH_STR(ddata, "false"); case '1': ddata->cur += 2; - return (DEM_PUSH_STR(ddata, "true")); + return DEM_PUSH_STR(ddata, "true"); default: - return (0); + return 0; } +#ifndef DEMANGLE_NO_FLOATING_POINT + case 'd': ++ddata->cur; - return (cpp_demangle_push_fp(ddata, decode_fp_to_double)); + return cpp_demangle_push_fp(ddata, decode_fp_to_double); case 'e': ++ddata->cur; if (sizeof(long double) == 10) - return (cpp_demangle_push_fp(ddata, - decode_fp_to_double)); - return (cpp_demangle_push_fp(ddata, decode_fp_to_float80)); + return cpp_demangle_push_fp(ddata, decode_fp_to_double); + return cpp_demangle_push_fp(ddata, decode_fp_to_float80); case 'f': ++ddata->cur; - return (cpp_demangle_push_fp(ddata, decode_fp_to_float)); + return cpp_demangle_push_fp(ddata, decode_fp_to_float); case 'g': ++ddata->cur; if (sizeof(long double) == 16) - return (cpp_demangle_push_fp(ddata, - decode_fp_to_double)); - return (cpp_demangle_push_fp(ddata, decode_fp_to_float128)); + return cpp_demangle_push_fp(ddata, decode_fp_to_double); + return cpp_demangle_push_fp(ddata, decode_fp_to_float128); + +#endif // DEMANGLE_NO_FLOATING_POINT case 'i': case 'j': @@ -1255,306 +1419,305 @@ cpp_demangle_read_expr_primary(struct cpp_demangle_data *ddata) case 'y': if (*(++ddata->cur) == 'n') { if (!DEM_PUSH_STR(ddata, "-")) - return (0); + return 0; ++ddata->cur; } num = ddata->cur; while (*ddata->cur != 'E') { if (!ELFTC_ISDIGIT(*ddata->cur)) - return (0); + return 0; ++ddata->cur; } ++ddata->cur; - return (cpp_demangle_push_str(ddata, num, - ddata->cur - num - 1)); + return cpp_demangle_push_str(ddata, num, ddata->cur - num - 1); default: - return (0); + return 0; } } static int cpp_demangle_read_expression(struct cpp_demangle_data *ddata) { - - if (ddata == NULL || *ddata->cur == '\0') - return (0); + if (!ddata || *ddata->cur == '\0') + return 0; switch (SIMPLE_HASH(*ddata->cur, *(ddata->cur + 1))) { case SIMPLE_HASH('s', 't'): ddata->cur += 2; - return (cpp_demangle_read_type(ddata, NULL)); + return cpp_demangle_read_type(ddata, NULL); case SIMPLE_HASH('s', 'r'): ddata->cur += 2; if (!cpp_demangle_read_type(ddata, NULL)) - return (0); + return 0; if (!cpp_demangle_read_uqname(ddata)) - return (0); + return 0; if (*ddata->cur == 'I') - return (cpp_demangle_read_tmpl_args(ddata)); - return (1); + return cpp_demangle_read_tmpl_args(ddata); + return 1; case SIMPLE_HASH('a', 'a'): /* operator && */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, "&&", 2)); + return cpp_demangle_read_expression_binary(ddata, "&&", 2); case SIMPLE_HASH('a', 'd'): /* operator & (unary) */ ddata->cur += 2; - return (cpp_demangle_read_expression_unary(ddata, "&", 1)); + return cpp_demangle_read_expression_unary(ddata, "&", 1); case SIMPLE_HASH('a', 'n'): /* operator & */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, "&", 1)); + return cpp_demangle_read_expression_binary(ddata, "&", 1); case SIMPLE_HASH('a', 'N'): /* operator &= */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, "&=", 2)); + return cpp_demangle_read_expression_binary(ddata, "&=", 2); case SIMPLE_HASH('a', 'S'): /* operator = */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, "=", 1)); + return cpp_demangle_read_expression_binary(ddata, "=", 1); case SIMPLE_HASH('c', 'l'): /* operator () */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, "()", 2)); + return cpp_demangle_read_expression_binary(ddata, "()", 2); case SIMPLE_HASH('c', 'm'): /* operator , */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, ",", 1)); + return cpp_demangle_read_expression_binary(ddata, ",", 1); case SIMPLE_HASH('c', 'o'): /* operator ~ */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, "~", 1)); + return cpp_demangle_read_expression_binary(ddata, "~", 1); case SIMPLE_HASH('c', 'v'): /* operator (cast) */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, "(cast)", 6)); + return cpp_demangle_read_expression_binary(ddata, "(cast)", 6); case SIMPLE_HASH('d', 'a'): /* operator delete [] */ ddata->cur += 2; - return (cpp_demangle_read_expression_unary(ddata, "delete []", 9)); + return cpp_demangle_read_expression_unary(ddata, "delete []", + 9); case SIMPLE_HASH('d', 'e'): /* operator * (unary) */ ddata->cur += 2; - return (cpp_demangle_read_expression_unary(ddata, "*", 1)); + return cpp_demangle_read_expression_unary(ddata, "*", 1); case SIMPLE_HASH('d', 'l'): /* operator delete */ ddata->cur += 2; - return (cpp_demangle_read_expression_unary(ddata, "delete", 6)); + return cpp_demangle_read_expression_unary(ddata, "delete", 6); case SIMPLE_HASH('d', 'v'): /* operator / */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, "/", 1)); + return cpp_demangle_read_expression_binary(ddata, "/", 1); case SIMPLE_HASH('d', 'V'): /* operator /= */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, "/=", 2)); + return cpp_demangle_read_expression_binary(ddata, "/=", 2); case SIMPLE_HASH('e', 'o'): /* operator ^ */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, "^", 1)); + return cpp_demangle_read_expression_binary(ddata, "^", 1); case SIMPLE_HASH('e', 'O'): /* operator ^= */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, "^=", 2)); + return cpp_demangle_read_expression_binary(ddata, "^=", 2); case SIMPLE_HASH('e', 'q'): /* operator == */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, "==", 2)); + return cpp_demangle_read_expression_binary(ddata, "==", 2); case SIMPLE_HASH('g', 'e'): /* operator >= */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, ">=", 2)); + return cpp_demangle_read_expression_binary(ddata, ">=", 2); case SIMPLE_HASH('g', 't'): /* operator > */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, ">", 1)); + return cpp_demangle_read_expression_binary(ddata, ">", 1); case SIMPLE_HASH('i', 'x'): /* operator [] */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, "[]", 2)); + return cpp_demangle_read_expression_binary(ddata, "[]", 2); case SIMPLE_HASH('l', 'e'): /* operator <= */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, "<=", 2)); + return cpp_demangle_read_expression_binary(ddata, "<=", 2); case SIMPLE_HASH('l', 's'): /* operator << */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, "<<", 2)); + return cpp_demangle_read_expression_binary(ddata, "<<", 2); case SIMPLE_HASH('l', 'S'): /* operator <<= */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, "<<=", 3)); + return cpp_demangle_read_expression_binary(ddata, "<<=", 3); case SIMPLE_HASH('l', 't'): /* operator < */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, "<", 1)); + return cpp_demangle_read_expression_binary(ddata, "<", 1); case SIMPLE_HASH('m', 'i'): /* operator - */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, "-", 1)); + return cpp_demangle_read_expression_binary(ddata, "-", 1); case SIMPLE_HASH('m', 'I'): /* operator -= */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, "-=", 2)); + return cpp_demangle_read_expression_binary(ddata, "-=", 2); case SIMPLE_HASH('m', 'l'): /* operator * */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, "*", 1)); + return cpp_demangle_read_expression_binary(ddata, "*", 1); case SIMPLE_HASH('m', 'L'): /* operator *= */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, "*=", 2)); + return cpp_demangle_read_expression_binary(ddata, "*=", 2); case SIMPLE_HASH('m', 'm'): /* operator -- */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, "--", 2)); + return cpp_demangle_read_expression_binary(ddata, "--", 2); case SIMPLE_HASH('n', 'a'): /* operator new[] */ ddata->cur += 2; - return (cpp_demangle_read_expression_unary(ddata, "new []", 6)); + return cpp_demangle_read_expression_unary(ddata, "new []", 6); case SIMPLE_HASH('n', 'e'): /* operator != */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, "!=", 2)); + return cpp_demangle_read_expression_binary(ddata, "!=", 2); case SIMPLE_HASH('n', 'g'): /* operator - (unary) */ ddata->cur += 2; - return (cpp_demangle_read_expression_unary(ddata, "-", 1)); + return cpp_demangle_read_expression_unary(ddata, "-", 1); case SIMPLE_HASH('n', 't'): /* operator ! */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, "!", 1)); + return cpp_demangle_read_expression_binary(ddata, "!", 1); case SIMPLE_HASH('n', 'w'): /* operator new */ ddata->cur += 2; - return (cpp_demangle_read_expression_unary(ddata, "new", 3)); + return cpp_demangle_read_expression_unary(ddata, "new", 3); case SIMPLE_HASH('o', 'o'): /* operator || */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, "||", 2)); + return cpp_demangle_read_expression_binary(ddata, "||", 2); case SIMPLE_HASH('o', 'r'): /* operator | */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, "|", 1)); + return cpp_demangle_read_expression_binary(ddata, "|", 1); case SIMPLE_HASH('o', 'R'): /* operator |= */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, "|=", 2)); + return cpp_demangle_read_expression_binary(ddata, "|=", 2); case SIMPLE_HASH('p', 'l'): /* operator + */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, "+", 1)); + return cpp_demangle_read_expression_binary(ddata, "+", 1); case SIMPLE_HASH('p', 'L'): /* operator += */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, "+=", 2)); + return cpp_demangle_read_expression_binary(ddata, "+=", 2); case SIMPLE_HASH('p', 'm'): /* operator ->* */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, "->*", 3)); + return cpp_demangle_read_expression_binary(ddata, "->*", 3); case SIMPLE_HASH('p', 'p'): /* operator ++ */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, "++", 2)); + return cpp_demangle_read_expression_binary(ddata, "++", 2); case SIMPLE_HASH('p', 's'): /* operator + (unary) */ ddata->cur += 2; - return (cpp_demangle_read_expression_unary(ddata, "+", 1)); + return cpp_demangle_read_expression_unary(ddata, "+", 1); case SIMPLE_HASH('p', 't'): /* operator -> */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, "->", 2)); + return cpp_demangle_read_expression_binary(ddata, "->", 2); case SIMPLE_HASH('q', 'u'): /* operator ? */ ddata->cur += 2; - return (cpp_demangle_read_expression_trinary(ddata, "?", 1, - ":", 1)); + return cpp_demangle_read_expression_trinary(ddata, "?", 1, ":", + 1); case SIMPLE_HASH('r', 'm'): /* operator % */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, "%", 1)); + return cpp_demangle_read_expression_binary(ddata, "%", 1); case SIMPLE_HASH('r', 'M'): /* operator %= */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, "%=", 2)); + return cpp_demangle_read_expression_binary(ddata, "%=", 2); case SIMPLE_HASH('r', 's'): /* operator >> */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, ">>", 2)); + return cpp_demangle_read_expression_binary(ddata, ">>", 2); case SIMPLE_HASH('r', 'S'): /* operator >>= */ ddata->cur += 2; - return (cpp_demangle_read_expression_binary(ddata, ">>=", 3)); + return cpp_demangle_read_expression_binary(ddata, ">>=", 3); case SIMPLE_HASH('r', 'z'): /* operator sizeof */ ddata->cur += 2; - return (cpp_demangle_read_expression_unary(ddata, "sizeof", 6)); + return cpp_demangle_read_expression_unary(ddata, "sizeof", 6); case SIMPLE_HASH('s', 'v'): /* operator sizeof */ ddata->cur += 2; - return (cpp_demangle_read_expression_unary(ddata, "sizeof", 6)); + return cpp_demangle_read_expression_unary(ddata, "sizeof", 6); } switch (*ddata->cur) { case 'L': - return (cpp_demangle_read_expr_primary(ddata)); + return cpp_demangle_read_expr_primary(ddata); case 'T': - return (cpp_demangle_read_tmpl_param(ddata)); + return cpp_demangle_read_tmpl_param(ddata); } - return (0); + return 0; } static int @@ -1569,72 +1732,65 @@ cpp_demangle_read_expression_flat(struct cpp_demangle_data *ddata, char **str) p_idx = output->size; if (!cpp_demangle_read_expression(ddata)) - return (0); + return 0; - if ((exp = vector_str_substr(output, p_idx, output->size - 1, - &exp_len)) == NULL) - return (0); + if (!(exp = vector_str_substr(ddata, output, p_idx, output->size - 1, + &exp_len))) + return 0; idx = output->size; - for (i = p_idx; i < idx; ++i) { - if (!vector_str_pop(output)) { - free(exp); - return (0); - } - } + for (i = p_idx; i < idx; ++i) + if (!vector_str_pop(output)) + return 0; *str = exp; - return (1); + return 1; } static int cpp_demangle_read_expression_binary(struct cpp_demangle_data *ddata, const char *name, size_t len) { - - if (ddata == NULL || name == NULL || len == 0) - return (0); + if (!ddata || !name || !len) + return 0; if (!cpp_demangle_read_expression(ddata)) - return (0); + return 0; if (!cpp_demangle_push_str(ddata, name, len)) - return (0); + return 0; - return (cpp_demangle_read_expression(ddata)); + return cpp_demangle_read_expression(ddata); } static int cpp_demangle_read_expression_unary(struct cpp_demangle_data *ddata, const char *name, size_t len) { - - if (ddata == NULL || name == NULL || len == 0) - return (0); + if (!ddata || !name || !len) + return 0; if (!cpp_demangle_read_expression(ddata)) - return (0); + return 0; - return (cpp_demangle_push_str(ddata, name, len)); + return cpp_demangle_push_str(ddata, name, len); } static int cpp_demangle_read_expression_trinary(struct cpp_demangle_data *ddata, const char *name1, size_t len1, const char *name2, size_t len2) { - - if (ddata == NULL || name1 == NULL || len1 == 0 || name2 == NULL || - len2 == 0) - return (0); + if (!ddata || !name1 || !len1 || !name2 || !len2) + return 0; if (!cpp_demangle_read_expression(ddata)) - return (0); + return 0; if (!cpp_demangle_push_str(ddata, name1, len1)) - return (0); + return 0; if (!cpp_demangle_read_expression(ddata)) - return (0); + return 0; if (!cpp_demangle_push_str(ddata, name2, len2)) - return (0); + return 0; - return (cpp_demangle_read_expression(ddata)); + return cpp_demangle_read_expression(ddata); } static int @@ -1648,27 +1804,27 @@ cpp_demangle_read_function(struct cpp_demangle_data *ddata, int *ext_c, int i; bool paren, non_cv_qualifier; - if (ddata == NULL || *ddata->cur != 'F' || v == NULL) - return (0); + if (!ddata || *ddata->cur != 'F' || !v) + return 0; ++ddata->cur; if (*ddata->cur == 'Y') { - if (ext_c != NULL) + if (ext_c) *ext_c = 1; ++ddata->cur; } /* Return type */ if (!cpp_demangle_read_type(ddata, NULL)) - return (0); + return 0; if (*ddata->cur != 'E') { if (!DEM_PUSH_STR(ddata, " ")) - return (0); + return 0; non_cv_qualifier = false; if (v->size > 0) { - for (i = 0; (size_t) i < v->size; i++) { + for (i = 0; (size_t)i < v->size; i++) { if (v->q_container[i] != TYPE_RST && v->q_container[i] != TYPE_VAT && v->q_container[i] != TYPE_CST) { @@ -1682,42 +1838,42 @@ cpp_demangle_read_function(struct cpp_demangle_data *ddata, int *ext_c, rc = vector_read_cmd_find(&ddata->cmd, READ_PTRMEM); if (non_cv_qualifier || rc != NULL) { if (!DEM_PUSH_STR(ddata, "(")) - return (0); + return 0; paren = true; } /* Push non-cv qualifiers. */ ddata->push_qualifier = PUSH_NON_CV_QUALIFIER; if (!cpp_demangle_push_type_qualifier(ddata, v, NULL)) - return (0); + return 0; if (rc) { if (non_cv_qualifier && !DEM_PUSH_STR(ddata, " ")) - return (0); - if ((class_type_size = ddata->class_type.size) == 0) - return (0); + return 0; + if (!(class_type_size = ddata->class_type.size)) + return 0; class_type = ddata->class_type.container[class_type_size - 1]; - if (class_type == NULL) - return (0); - if ((class_type_len = strlen(class_type)) == 0) - return (0); + if (!class_type) + return 0; + if (!(class_type_len = strlen(class_type))) + return 0; if (!cpp_demangle_push_str(ddata, class_type, - class_type_len)) - return (0); + class_type_len)) + return 0; if (!DEM_PUSH_STR(ddata, "::*")) - return (0); + return 0; /* Push pointer-to-member qualifiers. */ ddata->push_qualifier = PUSH_ALL_QUALIFIER; - if (!cpp_demangle_push_type_qualifier(ddata, rc->data, - NULL)) - return (0); + if (!cpp_demangle_push_type_qualifier(ddata, + (struct vector_type_qualifier *)rc->data, NULL)) + return 0; ++ddata->func_type; } if (paren) { if (!DEM_PUSH_STR(ddata, ")")) - return (0); + return 0; paren = false; } @@ -1727,44 +1883,43 @@ cpp_demangle_read_function(struct cpp_demangle_data *ddata, int *ext_c, ddata->is_functype = true; for (;;) { if (!cpp_demangle_read_type(ddata, &td)) - return (0); + return 0; if (*ddata->cur == 'E') break; if (limit++ > CPP_DEMANGLE_TRY_LIMIT) - return (0); + return 0; } ddata->is_functype = false; if (td.paren) { if (!DEM_PUSH_STR(ddata, ")")) - return (0); + return 0; td.paren = false; } /* Push CV qualifiers. */ ddata->push_qualifier = PUSH_CV_QUALIFIER; if (!cpp_demangle_push_type_qualifier(ddata, v, NULL)) - return (0); + return 0; ddata->push_qualifier = PUSH_ALL_QUALIFIER; /* Release type qualifier vector. */ - vector_type_qualifier_dest(v); - if (!vector_type_qualifier_init(v)) - return (0); + if (!vector_type_qualifier_init(ddata, v)) + return 0; /* Push ref-qualifiers. */ if (ddata->ref_qualifier) { switch (ddata->ref_qualifier_type) { case TYPE_REF: if (!DEM_PUSH_STR(ddata, " &")) - return (0); + return 0; break; case TYPE_RREF: if (!DEM_PUSH_STR(ddata, " &&")) - return (0); + return 0; break; default: - return (0); + return 0; } ddata->ref_qualifier = false; } @@ -1772,7 +1927,7 @@ cpp_demangle_read_function(struct cpp_demangle_data *ddata, int *ext_c, ++ddata->cur; - return (1); + return 1; } /* read encoding, encoding are function name, data name, special-name */ @@ -1781,108 +1936,97 @@ cpp_demangle_read_encoding(struct cpp_demangle_data *ddata) { char *name, *type, *num_str; long offset; - int rtn; - if (ddata == NULL || *ddata->cur == '\0') - return (0); + if (!ddata || *ddata->cur == '\0') + return 0; /* special name */ switch (SIMPLE_HASH(*ddata->cur, *(ddata->cur + 1))) { case SIMPLE_HASH('G', 'A'): if (!DEM_PUSH_STR(ddata, "hidden alias for ")) - return (0); + return 0; ddata->cur += 2; if (*ddata->cur == '\0') - return (0); - return (cpp_demangle_read_encoding(ddata)); + return 0; + return cpp_demangle_read_encoding(ddata); case SIMPLE_HASH('G', 'R'): if (!DEM_PUSH_STR(ddata, "reference temporary #")) - return (0); + return 0; ddata->cur += 2; if (*ddata->cur == '\0') - return (0); + return 0; if (!cpp_demangle_read_name_flat(ddata, &name)) - return (0); - rtn = 0; + return 0; if (!cpp_demangle_read_number_as_string(ddata, &num_str)) - goto clean1; + return 0; if (!DEM_PUSH_STR(ddata, num_str)) - goto clean2; + return 0; if (!DEM_PUSH_STR(ddata, " for ")) - goto clean2; + return 0; if (!DEM_PUSH_STR(ddata, name)) - goto clean2; - rtn = 1; - clean2: - free(num_str); - clean1: - free(name); - return (rtn); + return 0; + return 1; case SIMPLE_HASH('G', 'T'): ddata->cur += 2; if (*ddata->cur == '\0') - return (0); + return 0; switch (*ddata->cur) { case 'n': if (!DEM_PUSH_STR(ddata, "non-transaction clone for ")) - return (0); + return 0; break; case 't': default: if (!DEM_PUSH_STR(ddata, "transaction clone for ")) - return (0); + return 0; break; } ++ddata->cur; - return (cpp_demangle_read_encoding(ddata)); + return cpp_demangle_read_encoding(ddata); case SIMPLE_HASH('G', 'V'): /* sentry object for 1 time init */ if (!DEM_PUSH_STR(ddata, "guard variable for ")) - return (0); + return 0; ddata->cur += 2; break; case SIMPLE_HASH('T', 'c'): /* virtual function covariant override thunk */ if (!DEM_PUSH_STR(ddata, - "virtual function covariant override ")) - return (0); + "virtual function covariant override ")) + return 0; ddata->cur += 2; if (*ddata->cur == '\0') - return (0); + return 0; if (!cpp_demangle_read_offset(ddata)) - return (0); + return 0; if (!cpp_demangle_read_offset(ddata)) - return (0); - return (cpp_demangle_read_encoding(ddata)); + return 0; + return cpp_demangle_read_encoding(ddata); case SIMPLE_HASH('T', 'C'): /* construction vtable */ if (!DEM_PUSH_STR(ddata, "construction vtable for ")) - return (0); + return 0; ddata->cur += 2; if (*ddata->cur == '\0') - return (0); + return 0; if (!cpp_demangle_read_type_flat(ddata, &type)) - return (0); - rtn = 0; + return 0; if (!cpp_demangle_read_number(ddata, &offset)) - goto clean3; + return 0; if (*ddata->cur++ != '_') - goto clean3; + return 0; if (!cpp_demangle_read_type(ddata, NULL)) - goto clean3; + return 0; if (!DEM_PUSH_STR(ddata, "-in-")) - goto clean3; + return 0; if (!DEM_PUSH_STR(ddata, type)) - goto clean3; - rtn = 1; - clean3: - free(type); - return (rtn); + return 0; + return 1; case SIMPLE_HASH('T', 'D'): /* typeinfo common proxy */ @@ -1891,100 +2035,100 @@ cpp_demangle_read_encoding(struct cpp_demangle_data *ddata) case SIMPLE_HASH('T', 'F'): /* typeinfo fn */ if (!DEM_PUSH_STR(ddata, "typeinfo fn for ")) - return (0); + return 0; ddata->cur += 2; if (*ddata->cur == '\0') - return (0); - return (cpp_demangle_read_type(ddata, NULL)); + return 0; + return cpp_demangle_read_type(ddata, NULL); case SIMPLE_HASH('T', 'h'): /* virtual function non-virtual override thunk */ if (!DEM_PUSH_STR(ddata, - "virtual function non-virtual override ")) - return (0); + "virtual function non-virtual override ")) + return 0; ddata->cur += 2; if (*ddata->cur == '\0') - return (0); + return 0; if (!cpp_demangle_read_nv_offset(ddata)) - return (0); - return (cpp_demangle_read_encoding(ddata)); + return 0; + return cpp_demangle_read_encoding(ddata); case SIMPLE_HASH('T', 'H'): /* TLS init function */ if (!DEM_PUSH_STR(ddata, "TLS init function for ")) - return (0); + return 0; ddata->cur += 2; if (*ddata->cur == '\0') - return (0); + return 0; break; case SIMPLE_HASH('T', 'I'): /* typeinfo structure */ if (!DEM_PUSH_STR(ddata, "typeinfo for ")) - return (0); + return 0; ddata->cur += 2; if (*ddata->cur == '\0') - return (0); - return (cpp_demangle_read_type(ddata, NULL)); + return 0; + return cpp_demangle_read_type(ddata, NULL); case SIMPLE_HASH('T', 'J'): /* java class */ if (!DEM_PUSH_STR(ddata, "java Class for ")) - return (0); + return 0; ddata->cur += 2; if (*ddata->cur == '\0') - return (0); - return (cpp_demangle_read_type(ddata, NULL)); + return 0; + return cpp_demangle_read_type(ddata, NULL); case SIMPLE_HASH('T', 'S'): /* RTTI name (NTBS) */ if (!DEM_PUSH_STR(ddata, "typeinfo name for ")) - return (0); + return 0; ddata->cur += 2; if (*ddata->cur == '\0') - return (0); - return (cpp_demangle_read_type(ddata, NULL)); + return 0; + return cpp_demangle_read_type(ddata, NULL); case SIMPLE_HASH('T', 'T'): /* VTT table */ if (!DEM_PUSH_STR(ddata, "VTT for ")) - return (0); + return 0; ddata->cur += 2; if (*ddata->cur == '\0') - return (0); - return (cpp_demangle_read_type(ddata, NULL)); + return 0; + return cpp_demangle_read_type(ddata, NULL); case SIMPLE_HASH('T', 'v'): /* virtual function virtual override thunk */ if (!DEM_PUSH_STR(ddata, "virtual function virtual override ")) - return (0); + return 0; ddata->cur += 2; if (*ddata->cur == '\0') - return (0); + return 0; if (!cpp_demangle_read_v_offset(ddata)) - return (0); - return (cpp_demangle_read_encoding(ddata)); + return 0; + return cpp_demangle_read_encoding(ddata); case SIMPLE_HASH('T', 'V'): /* virtual table */ if (!DEM_PUSH_STR(ddata, "vtable for ")) - return (0); + return 0; ddata->cur += 2; if (*ddata->cur == '\0') - return (0); - return (cpp_demangle_read_type(ddata, NULL)); + return 0; + return cpp_demangle_read_type(ddata, NULL); case SIMPLE_HASH('T', 'W'): /* TLS wrapper function */ if (!DEM_PUSH_STR(ddata, "TLS wrapper function for ")) - return (0); + return 0; ddata->cur += 2; if (*ddata->cur == '\0') - return (0); + return 0; break; } - return (cpp_demangle_read_name(ddata)); + return cpp_demangle_read_name(ddata); } static int @@ -1993,21 +2137,19 @@ cpp_demangle_read_local_name(struct cpp_demangle_data *ddata) struct vector_str local_name; struct type_delimit td; size_t limit; - bool more_type; + bool more_type; - if (ddata == NULL) - return (0); + if (!ddata) + return 0; if (*(++ddata->cur) == '\0') - return (0); + return 0; - if (!vector_str_init(&local_name)) - return (0); + if (!vector_str_init(ddata, &local_name)) + return 0; ddata->cur_output = &local_name; - if (!cpp_demangle_read_encoding(ddata)) { - vector_str_dest(&local_name); - return (0); - } + if (!cpp_demangle_read_encoding(ddata)) + return 0; ddata->cur_output = &ddata->output; @@ -2025,68 +2167,63 @@ cpp_demangle_read_local_name(struct cpp_demangle_data *ddata) ddata->is_tmpl = false; /* Read return type */ - if (!cpp_demangle_read_type(ddata, NULL)) { - vector_str_dest(&local_name); - return (0); - } + if (!cpp_demangle_read_type(ddata, NULL)) + return 0; more_type = true; } /* Now we can push the name after possible return type is handled. */ - if (!vector_str_push_vector(&ddata->output, &local_name)) { - vector_str_dest(&local_name); - return (0); - } - vector_str_dest(&local_name); + if (!vector_str_push_vector(ddata, &ddata->output, &local_name)) + return 0; while (*ddata->cur != '\0') { if (!cpp_demangle_read_type(ddata, &td)) - return (0); + return 0; if (more_type) more_type = false; if (*ddata->cur == 'E') break; if (limit++ > CPP_DEMANGLE_TRY_LIMIT) - return (0); + return 0; } if (more_type) - return (0); + return 0; if (*(++ddata->cur) == '\0') - return (0); - if (td.paren == true) { + return 0; + if (td.paren) { if (!DEM_PUSH_STR(ddata, ")")) - return (0); + return 0; td.paren = false; } if (*ddata->cur == 's') ++ddata->cur; else { if (!DEM_PUSH_STR(ddata, "::")) - return (0); + return 0; if (!cpp_demangle_read_name(ddata)) - return (0); + return 0; } if (*ddata->cur == '_') { ++ddata->cur; - while (ELFTC_ISDIGIT(*ddata->cur) != 0) + while (ELFTC_ISDIGIT(*ddata->cur)) ++ddata->cur; } - return (1); + return 1; } static int cpp_demangle_read_name(struct cpp_demangle_data *ddata) { - struct vector_str *output, v; + struct stack_str v; + struct vector_str *output; size_t p_idx, subst_str_len; - int rtn; char *subst_str; - if (ddata == NULL || *ddata->cur == '\0') - return (0); + if (!ddata || *ddata->cur == '\0') + return 0; output = ddata->cur_output; @@ -2094,53 +2231,70 @@ cpp_demangle_read_name(struct cpp_demangle_data *ddata) switch (*ddata->cur) { case 'S': - return (cpp_demangle_read_subst(ddata)); + return cpp_demangle_read_subst(ddata); case 'N': - return (cpp_demangle_read_nested_name(ddata)); + return cpp_demangle_read_nested_name(ddata); case 'Z': - return (cpp_demangle_read_local_name(ddata)); + return cpp_demangle_read_local_name(ddata); } - if (!vector_str_init(&v)) - return (0); + stack_str_init(&v); p_idx = output->size; - rtn = 0; if (!cpp_demangle_read_uqname(ddata)) - goto clean; - if ((subst_str = vector_str_substr(output, p_idx, output->size - 1, - &subst_str_len)) == NULL) - goto clean; - if (subst_str_len > 8 && strstr(subst_str, "operator") != NULL) { - rtn = 1; - goto clean; - } - if (!vector_str_push(&v, subst_str, subst_str_len)) - goto clean; - if (!cpp_demangle_push_subst_v(ddata, &v)) - goto clean; + return 0; + if (!(subst_str = vector_str_substr(ddata, output, p_idx, + output->size - 1, &subst_str_len))) + return 0; + if (subst_str_len > 8 && strstr(subst_str, "operator")) + return 1; + if (!stack_str_append(ddata, &v, subst_str, subst_str_len)) + return 0; + if (!cpp_demangle_push_subst(ddata, v.str, v.len)) + return 0; if (*ddata->cur == 'I') { p_idx = output->size; if (!cpp_demangle_read_tmpl_args(ddata)) - goto clean; - free(subst_str); - if ((subst_str = vector_str_substr(output, p_idx, - output->size - 1, &subst_str_len)) == NULL) - goto clean; - if (!vector_str_push(&v, subst_str, subst_str_len)) - goto clean; - if (!cpp_demangle_push_subst_v(ddata, &v)) - goto clean; + return 0; + if (!(subst_str = vector_str_substr(ddata, output, p_idx, + output->size - 1, &subst_str_len))) + return 0; + if (!stack_str_append(ddata, &v, subst_str, subst_str_len)) + return 0; + if (!cpp_demangle_push_subst(ddata, v.str, v.len)) + return 0; } - rtn = 1; + return 1; +} -clean: - free(subst_str); - vector_str_dest(&v); +static int +cpp_demangle_read_type_flat(struct cpp_demangle_data *ddata, char **str) +{ + struct vector_str *output; + size_t i, p_idx, idx, type_len; + char *type; - return (rtn); + output = ddata->cur_output; + + p_idx = output->size; + + if (!cpp_demangle_read_type(ddata, NULL)) + return 0; + + if (!(type = vector_str_substr(ddata, output, p_idx, output->size - 1, + &type_len))) + return 0; + + idx = output->size; + for (i = p_idx; i < idx; ++i) + if (!vector_str_pop(output)) + return 0; + + *str = type; + + return 1; } static int @@ -2155,37 +2309,34 @@ cpp_demangle_read_name_flat(struct cpp_demangle_data *ddata, char **str) p_idx = output->size; if (!cpp_demangle_read_name(ddata)) - return (0); + return 0; - if ((name = vector_str_substr(output, p_idx, output->size - 1, - &name_len)) == NULL) - return (0); + if (!(name = vector_str_substr(ddata, output, p_idx, output->size - 1, + &name_len))) + return 0; idx = output->size; - for (i = p_idx; i < idx; ++i) { - if (!vector_str_pop(output)) { - free(name); - return (0); - } - } + for (i = p_idx; i < idx; ++i) + if (!vector_str_pop(output)) + return 0; *str = name; - return (1); + return 1; } static int cpp_demangle_read_nested_name(struct cpp_demangle_data *ddata) { - struct vector_str *output, v; + struct stack_str v; + struct vector_str *output; size_t limit, p_idx, subst_str_len; - int rtn; char *subst_str; - if (ddata == NULL || *ddata->cur != 'N') - return (0); + if (!ddata || *ddata->cur != 'N') + return 0; if (*(++ddata->cur) == '\0') - return (0); + return 0; do { switch (*ddata->cur) { @@ -2211,44 +2362,39 @@ cpp_demangle_read_nested_name(struct cpp_demangle_data *ddata) next: output = ddata->cur_output; - if (!vector_str_init(&v)) - return (0); + stack_str_init(&v); - rtn = 0; limit = 0; for (;;) { p_idx = output->size; switch (*ddata->cur) { case 'I': if (!cpp_demangle_read_tmpl_args(ddata)) - goto clean; + return 0; break; case 'S': if (!cpp_demangle_read_subst(ddata)) - goto clean; + return 0; break; case 'T': if (!cpp_demangle_read_tmpl_param(ddata)) - goto clean; + return 0; break; default: if (!cpp_demangle_read_uqname(ddata)) - goto clean; + return 0; } if (p_idx == output->size) goto next_comp; - if ((subst_str = vector_str_substr(output, p_idx, - output->size - 1, &subst_str_len)) == NULL) - goto clean; - if (!vector_str_push(&v, subst_str, subst_str_len)) { - free(subst_str); - goto clean; - } - free(subst_str); + if (!(subst_str = vector_str_substr(ddata, output, p_idx, + output->size - 1, &subst_str_len))) + return 0; + if (!stack_str_append(ddata, &v, subst_str, subst_str_len)) + return 0; - if (!cpp_demangle_push_subst_v(ddata, &v)) - goto clean; + if (!cpp_demangle_push_subst(ddata, v.str, v.len)) + return 0; next_comp: if (*ddata->cur == 'E') @@ -2256,21 +2402,28 @@ next: else if (*ddata->cur != 'I' && *ddata->cur != 'C' && *ddata->cur != 'D' && p_idx != output->size) { if (!DEM_PUSH_STR(ddata, "::")) - goto clean; - if (!VEC_PUSH_STR(&v, "::")) - goto clean; + return 0; + if (!stack_str_append_str(ddata, &v, "::")) + return 0; } if (limit++ > CPP_DEMANGLE_TRY_LIMIT) - goto clean; + return 0; } ++ddata->cur; - rtn = 1; + return 1; +} -clean: - vector_str_dest(&v); - - return (rtn); +static bool +cpp_demangle_strtol(long *res, const char *s, int base) +{ + int c; + long x = 0; + while ((c = kBase36[*s++ & 255]) && --c < base) + if (ckd_mul(&x, x, base) || ckd_add(&x, x, c)) + return false; + *res = x; + return true; } /* @@ -2282,8 +2435,8 @@ cpp_demangle_read_number(struct cpp_demangle_data *ddata, long *rtn) { long len, negative_factor; - if (ddata == NULL || rtn == NULL) - return (0); + if (!ddata || !rtn) + return 0; negative_factor = 1; if (*ddata->cur == 'n') { @@ -2291,73 +2444,69 @@ cpp_demangle_read_number(struct cpp_demangle_data *ddata, long *rtn) ++ddata->cur; } - if (ELFTC_ISDIGIT(*ddata->cur) == 0) - return (0); + if (!ELFTC_ISDIGIT(*ddata->cur)) + return 0; - errno = 0; - if ((len = strtol(ddata->cur, (char **) NULL, 10)) == 0 && - errno != 0) - return (0); + if (!cpp_demangle_strtol(&len, ddata->cur, 10)) + return 0; - while (ELFTC_ISDIGIT(*ddata->cur) != 0) + while (ELFTC_ISDIGIT(*ddata->cur)) ++ddata->cur; - assert(len >= 0); - assert(negative_factor == 1 || negative_factor == -1); + ASSERT(len >= 0); + ASSERT(negative_factor == 1 || negative_factor == -1); *rtn = len * negative_factor; - return (1); + return 1; } static int cpp_demangle_read_number_as_string(struct cpp_demangle_data *ddata, char **str) { long n; + char buf[21]; if (!cpp_demangle_read_number(ddata, &n)) { *str = NULL; - return (0); + return 0; } - if (asprintf(str, "%ld", n) < 0) { - *str = NULL; - return (0); - } + FormatInt64(buf, n); + if (!(*str = dupstr(ddata, buf))) + return 0; - return (1); + return 1; } static int cpp_demangle_read_nv_offset(struct cpp_demangle_data *ddata) { - - if (ddata == NULL) - return (0); + if (!ddata) + return 0; if (!DEM_PUSH_STR(ddata, "offset : ")) - return (0); + return 0; - return (cpp_demangle_read_offset_number(ddata)); + return cpp_demangle_read_offset_number(ddata); } /* read offset, offset are nv-offset, v-offset */ static int cpp_demangle_read_offset(struct cpp_demangle_data *ddata) { - - if (ddata == NULL) - return (0); + if (!ddata) + return 0; if (*ddata->cur == 'h') { ++ddata->cur; - return (cpp_demangle_read_nv_offset(ddata)); + return cpp_demangle_read_nv_offset(ddata); } else if (*ddata->cur == 'v') { ++ddata->cur; - return (cpp_demangle_read_v_offset(ddata)); + return cpp_demangle_read_v_offset(ddata); } - return (0); + return 0; } static int @@ -2366,8 +2515,8 @@ cpp_demangle_read_offset_number(struct cpp_demangle_data *ddata) bool negative; const char *start; - if (ddata == NULL || *ddata->cur == '\0') - return (0); + if (!ddata || *ddata->cur == '\0') + return 0; /* offset could be negative */ if (*ddata->cur == 'n') { @@ -2382,18 +2531,18 @@ cpp_demangle_read_offset_number(struct cpp_demangle_data *ddata) ++ddata->cur; if (negative && !DEM_PUSH_STR(ddata, "-")) - return (0); + return 0; - assert(start != NULL); + ASSERT(start); if (!cpp_demangle_push_str(ddata, start, ddata->cur - start)) - return (0); + return 0; if (!DEM_PUSH_STR(ddata, " ")) - return (0); + return 0; ++ddata->cur; - return (1); + return 1; } static int @@ -2404,16 +2553,16 @@ cpp_demangle_read_pointer_to_member(struct cpp_demangle_data *ddata, int p_func_type, rtn; char *class_type; - if (ddata == NULL || *ddata->cur != 'M' || *(++ddata->cur) == '\0') - return (0); + if (!ddata || *ddata->cur != 'M' || *(++ddata->cur) == '\0') + return 0; p_idx = ddata->output.size; if (!cpp_demangle_read_type(ddata, NULL)) - return (0); + return 0; - if ((class_type = vector_str_substr(&ddata->output, p_idx, - ddata->output.size - 1, &class_type_len)) == NULL) - return (0); + if (!(class_type = vector_str_substr(ddata, &ddata->output, p_idx, + ddata->output.size - 1, &class_type_len))) + return 0; rtn = 0; idx = ddata->output.size; @@ -2421,10 +2570,11 @@ cpp_demangle_read_pointer_to_member(struct cpp_demangle_data *ddata, if (!vector_str_pop(&ddata->output)) goto clean1; - if (!vector_read_cmd_push(&ddata->cmd, READ_PTRMEM, v)) + if (!vector_read_cmd_push(ddata, &ddata->cmd, READ_PTRMEM, v)) goto clean1; - if (!vector_str_push(&ddata->class_type, class_type, class_type_len)) + if (!vector_str_push(ddata, &ddata->class_type, class_type, + class_type_len)) goto clean2; p_func_type = ddata->func_type; @@ -2448,13 +2598,11 @@ clean2: if (!vector_read_cmd_pop(&ddata->cmd)) rtn = 0; clean1: - free(class_type); - vector_type_qualifier_dest(v); - if (!vector_type_qualifier_init(v)) - return (0); + if (!vector_type_qualifier_init(ddata, v)) + return 0; - return (rtn); + return rtn; } /* read source-name, source-name is */ @@ -2464,26 +2612,25 @@ cpp_demangle_read_sname(struct cpp_demangle_data *ddata) long len; int err; - if (ddata == NULL || cpp_demangle_read_number(ddata, &len) == 0 || - len <= 0) - return (0); + if (!ddata || !cpp_demangle_read_number(ddata, &len) || len <= 0) + return 0; - if (len == 12 && (memcmp("_GLOBAL__N_1", ddata->cur, 12) == 0)) + if (len == 12 && !memcmp("_GLOBAL__N_1", ddata->cur, 12)) err = DEM_PUSH_STR(ddata, "(anonymous namespace)"); else err = cpp_demangle_push_str(ddata, ddata->cur, len); - if (err == 0) - return (0); + if (!err) + return 0; - assert(ddata->cur_output->size > 0); - if (vector_read_cmd_find(&ddata->cmd, READ_TMPL) == NULL) + ASSERT(ddata->cur_output->size > 0); + if (!vector_read_cmd_find(&ddata->cmd, READ_TMPL)) ddata->last_sname = - ddata->cur_output->container[ddata->output.size - 1]; + ddata->cur_output->container[ddata->cur_output->size - 1]; ddata->cur += len; - return (1); + return 1; } static int @@ -2491,113 +2638,113 @@ cpp_demangle_read_subst(struct cpp_demangle_data *ddata) { long nth; - if (ddata == NULL || *ddata->cur == '\0') - return (0); + if (!ddata || *ddata->cur == '\0') + return 0; /* abbreviations of the form Sx */ switch (SIMPLE_HASH(*ddata->cur, *(ddata->cur + 1))) { case SIMPLE_HASH('S', 'a'): /* std::allocator */ if (!DEM_PUSH_STR(ddata, "std::allocator")) - return (0); + return 0; ddata->cur += 2; if (*ddata->cur == 'I') - return (cpp_demangle_read_subst_stdtmpl(ddata, - "std::allocator")); - return (1); + return cpp_demangle_read_subst_stdtmpl(ddata, + "std::allocator"); + return 1; case SIMPLE_HASH('S', 'b'): /* std::basic_string */ if (!DEM_PUSH_STR(ddata, "std::basic_string")) - return (0); + return 0; ddata->cur += 2; if (*ddata->cur == 'I') - return (cpp_demangle_read_subst_stdtmpl(ddata, - "std::basic_string")); - return (1); + return cpp_demangle_read_subst_stdtmpl(ddata, + "std::basic_string"); + return 1; case SIMPLE_HASH('S', 'd'): - /* std::basic_iostream > */ - if (!DEM_PUSH_STR(ddata, "std::basic_iostream >")) - return (0); + /* std::basic_iostream> */ + if (!DEM_PUSH_STR(ddata, + "std::basic_iostream>")) + return 0; ddata->last_sname = "basic_iostream"; ddata->cur += 2; if (*ddata->cur == 'I') - return (cpp_demangle_read_subst_stdtmpl(ddata, + return cpp_demangle_read_subst_stdtmpl(ddata, "std::basic_iostream >")); - return (1); + ">"); + return 1; case SIMPLE_HASH('S', 'i'): - /* std::basic_istream > */ - if (!DEM_PUSH_STR(ddata, "std::basic_istream >")) - return (0); + /* std::basic_istream> */ + if (!DEM_PUSH_STR(ddata, + "std::basic_istream>")) + return 0; ddata->last_sname = "basic_istream"; ddata->cur += 2; if (*ddata->cur == 'I') - return (cpp_demangle_read_subst_stdtmpl(ddata, + return cpp_demangle_read_subst_stdtmpl(ddata, "std::basic_istream >")); - return (1); + ">"); + return 1; case SIMPLE_HASH('S', 'o'): - /* std::basic_ostream > */ - if (!DEM_PUSH_STR(ddata, "std::basic_ostream >")) - return (0); + /* std::basic_ostream> */ + if (!DEM_PUSH_STR(ddata, + "std::basic_ostream>")) + return 0; ddata->last_sname = "basic_ostream"; ddata->cur += 2; if (*ddata->cur == 'I') - return (cpp_demangle_read_subst_stdtmpl(ddata, + return cpp_demangle_read_subst_stdtmpl(ddata, "std::basic_ostream >")); - return (1); + ">"); + return 1; case SIMPLE_HASH('S', 's'): /* - * std::basic_string, - * std::allocator > + * std::string, + * std::allocator> * * a.k.a std::string + * + * [jart] made it std::string for consistency with libcxxabi */ - if (!DEM_PUSH_STR(ddata, "std::basic_string, std::allocator >")) - return (0); + if (!DEM_PUSH_STR(ddata, "std::string")) + return 0; ddata->last_sname = "string"; ddata->cur += 2; if (*ddata->cur == 'I') - return (cpp_demangle_read_subst_stdtmpl(ddata, - "std::basic_string," - " std::allocator >")); - return (1); + return cpp_demangle_read_subst_stdtmpl(ddata, + "std::string"); + return 1; case SIMPLE_HASH('S', 't'): /* std:: */ - return (cpp_demangle_read_subst_std(ddata)); + return cpp_demangle_read_subst_std(ddata); } if (*(++ddata->cur) == '\0') - return (0); + return 0; /* Skip unknown substitution abbreviations. */ if (!(*ddata->cur >= '0' && *ddata->cur <= '9') && - !(*ddata->cur >= 'A' && *ddata->cur <= 'Z') && - *ddata->cur != '_') { + !(*ddata->cur >= 'A' && *ddata->cur <= 'Z') && *ddata->cur != '_') { ++ddata->cur; - return (1); + return 1; } /* substitution */ if (*ddata->cur == '_') - return (cpp_demangle_get_subst(ddata, 0)); + return cpp_demangle_get_subst(ddata, 0); else { - errno = 0; /* substitution number is base 36 */ - if ((nth = strtol(ddata->cur, (char **) NULL, 36)) == 0 && - errno != 0) - return (0); + if (!cpp_demangle_strtol(&nth, ddata->cur, 36)) + return 0; /* first was '_', so increase one */ ++nth; @@ -2605,13 +2752,13 @@ cpp_demangle_read_subst(struct cpp_demangle_data *ddata) while (*ddata->cur != '_') ++ddata->cur; - assert(nth > 0); + ASSERT(nth > 0); - return (cpp_demangle_get_subst(ddata, nth)); + return cpp_demangle_get_subst(ddata, nth); } /* NOTREACHED */ - return (0); + return 0; } static int @@ -2619,22 +2766,20 @@ cpp_demangle_read_subst_std(struct cpp_demangle_data *ddata) { struct vector_str *output, v; size_t p_idx, subst_str_len; - int rtn; char *subst_str; - if (ddata == NULL) - return (0); + if (!ddata) + return 0; - if (!vector_str_init(&v)) - return (0); + if (!vector_str_init(ddata, &v)) + return 0; subst_str = NULL; - rtn = 0; if (!DEM_PUSH_STR(ddata, "std::")) - goto clean; + return 0; if (!VEC_PUSH_STR(&v, "std::")) - goto clean; + return 0; ddata->cur += 2; @@ -2642,38 +2787,32 @@ cpp_demangle_read_subst_std(struct cpp_demangle_data *ddata) p_idx = output->size; if (!cpp_demangle_read_uqname(ddata)) - goto clean; + return 0; - if ((subst_str = vector_str_substr(output, p_idx, output->size - 1, - &subst_str_len)) == NULL) - goto clean; + if (!(subst_str = vector_str_substr(ddata, output, p_idx, + output->size - 1, &subst_str_len))) + return 0; - if (!vector_str_push(&v, subst_str, subst_str_len)) - goto clean; + if (!vector_str_push(ddata, &v, subst_str, subst_str_len)) + return 0; if (!cpp_demangle_push_subst_v(ddata, &v)) - goto clean; + return 0; if (*ddata->cur == 'I') { p_idx = output->size; if (!cpp_demangle_read_tmpl_args(ddata)) - goto clean; - free(subst_str); - if ((subst_str = vector_str_substr(output, p_idx, - output->size - 1, &subst_str_len)) == NULL) - goto clean; - if (!vector_str_push(&v, subst_str, subst_str_len)) - goto clean; + return 0; + if (!(subst_str = vector_str_substr(ddata, output, p_idx, + output->size - 1, &subst_str_len))) + return 0; + if (!vector_str_push(ddata, &v, subst_str, subst_str_len)) + return 0; if (!cpp_demangle_push_subst_v(ddata, &v)) - goto clean; + return 0; } - rtn = 1; -clean: - free(subst_str); - vector_str_dest(&v); - - return (rtn); + return 1; } static int @@ -2682,14 +2821,13 @@ cpp_demangle_read_subst_stdtmpl(struct cpp_demangle_data *ddata, { struct vector_str *output; size_t p_idx, substr_len, len; - int rtn; char *subst_str, *substr; - if (ddata == NULL || str == NULL) - return (0); + if (!ddata || !str) + return 0; - if ((len = strlen(str)) == 0) - return (0); + if (!(len = strlen(str))) + return 0; output = ddata->cur_output; @@ -2698,49 +2836,42 @@ cpp_demangle_read_subst_stdtmpl(struct cpp_demangle_data *ddata, subst_str = NULL; if (!cpp_demangle_read_tmpl_args(ddata)) - return (0); - if ((substr = vector_str_substr(output, p_idx, output->size - 1, - &substr_len)) == NULL) - return (0); + return 0; + if (!(substr = vector_str_substr(ddata, output, p_idx, output->size - 1, + &substr_len))) + return 0; - rtn = 0; - if ((subst_str = malloc(sizeof(char) * (substr_len + len + 1))) == - NULL) - goto clean; + if (!(subst_str = (char *)alloc(ddata, alignof(char), + sizeof(char) * (substr_len + len + 1)))) + return 0; memcpy(subst_str, str, len); memcpy(subst_str + len, substr, substr_len); subst_str[substr_len + len] = '\0'; if (!cpp_demangle_push_subst(ddata, subst_str, substr_len + len)) - goto clean; + return 0; - rtn = 1; -clean: - free(subst_str); - free(substr); - - return (rtn); + return 1; } static int cpp_demangle_read_tmpl_arg(struct cpp_demangle_data *ddata) { - - if (ddata == NULL || *ddata->cur == '\0') - return (0); + if (!ddata || *ddata->cur == '\0') + return 0; switch (*ddata->cur) { case 'L': - return (cpp_demangle_read_expr_primary(ddata)); + return cpp_demangle_read_expr_primary(ddata); case 'X': ++ddata->cur; if (!cpp_demangle_read_expression(ddata)) - return (0); - return (*ddata->cur++ == 'E'); + return 0; + return *ddata->cur++ == 'E'; } - return (cpp_demangle_read_type(ddata, NULL)); + return cpp_demangle_read_type(ddata, NULL); } static int @@ -2750,54 +2881,49 @@ cpp_demangle_read_tmpl_args(struct cpp_demangle_data *ddata) size_t arg_len, idx, limit, size; char *arg; - if (ddata == NULL || *ddata->cur == '\0') - return (0); + if (!ddata || *ddata->cur == '\0') + return 0; ++ddata->cur; - if (!vector_read_cmd_push(&ddata->cmd, READ_TMPL, NULL)) - return (0); + if (!vector_read_cmd_push(ddata, &ddata->cmd, READ_TMPL, NULL)) + return 0; if (!DEM_PUSH_STR(ddata, "<")) - return (0); + return 0; limit = 0; v = ddata->cur_output; for (;;) { idx = v->size; if (!cpp_demangle_read_tmpl_arg(ddata)) - return (0); - if ((arg = vector_str_substr(v, idx, v->size - 1, &arg_len)) == - NULL) - return (0); + return 0; + if (!(arg = vector_str_substr(ddata, v, idx, v->size - 1, + &arg_len))) + return 0; if (!vector_str_find(&ddata->tmpl, arg, arg_len) && - !vector_str_push(&ddata->tmpl, arg, arg_len)) { - free(arg); - return (0); - } - - free(arg); + !vector_str_push(ddata, &ddata->tmpl, arg, arg_len)) + return 0; if (*ddata->cur == 'E') { ++ddata->cur; size = v->size; - assert(size > 0); + ASSERT(size > 0); if (!strncmp(v->container[size - 1], ">", 1)) { - if (!DEM_PUSH_STR(ddata, " >")) - return (0); + if (!DEM_PUSH_STR(ddata, ">")) + return 0; } else if (!DEM_PUSH_STR(ddata, ">")) - return (0); + return 0; ddata->is_tmpl = true; break; - } else if (*ddata->cur != 'I' && - !DEM_PUSH_STR(ddata, ", ")) - return (0); + } else if (*ddata->cur != 'I' && !DEM_PUSH_STR(ddata, ", ")) + return 0; if (limit++ > CPP_DEMANGLE_TRY_LIMIT) - return (0); + return 0; } - return (vector_read_cmd_pop(&ddata->cmd)); + return vector_read_cmd_pop(&ddata->cmd); } /* @@ -2809,19 +2935,16 @@ cpp_demangle_read_tmpl_param(struct cpp_demangle_data *ddata) { long nth; - if (ddata == NULL || *ddata->cur != 'T') - return (0); + if (!ddata || *ddata->cur != 'T') + return 0; ++ddata->cur; - if (*ddata->cur == '_') - return (cpp_demangle_get_tmpl_param(ddata, 0)); - else { - - errno = 0; - if ((nth = strtol(ddata->cur, (char **) NULL, 36)) == 0 && - errno != 0) - return (0); + if (*ddata->cur == '_') { + return cpp_demangle_get_tmpl_param(ddata, 0); + } else { + if (!cpp_demangle_strtol(&nth, ddata->cur, 36)) + return 0; /* T_ is first */ ++nth; @@ -2829,21 +2952,20 @@ cpp_demangle_read_tmpl_param(struct cpp_demangle_data *ddata) while (*ddata->cur != '_') ++ddata->cur; - assert(nth > 0); + ASSERT(nth > 0); - return (cpp_demangle_get_tmpl_param(ddata, nth)); + return cpp_demangle_get_tmpl_param(ddata, nth); } /* NOTREACHED */ - return (0); + return 0; } static int -cpp_demangle_read_type(struct cpp_demangle_data *ddata, - struct type_delimit *td) +cpp_demangle_read_type(struct cpp_demangle_data *ddata, struct type_delimit *td) { struct vector_type_qualifier v; - struct vector_str *output, sv; + struct vector_str *output; size_t p_idx, type_str_len, subst_str_len; int extern_c, is_builtin; long len; @@ -2851,35 +2973,35 @@ cpp_demangle_read_type(struct cpp_demangle_data *ddata, char *type_str, *exp_str, *num_str, *subst_str; bool skip_ref_qualifier, omit_void; - if (ddata == NULL) - return (0); + if (!ddata) + return 0; output = ddata->cur_output; if (td) { if (td->paren == false) { if (!DEM_PUSH_STR(ddata, "(")) - return (0); + return 0; if (ddata->output.size < 2) - return (0); + return 0; td->paren = true; } if (!td->firstp) { if (*ddata->cur != 'I') { if (!DEM_PUSH_STR(ddata, ", ")) - return (0); + return 0; } } } - assert(output != NULL); + ASSERT(output); /* * [r, V, K] [P, R, O, C, G, U] builtin, function, class-enum, array * pointer-to-member, template-param, template-template-param, subst */ - if (!vector_type_qualifier_init(&v)) - return (0); + if (!vector_type_qualifier_init(ddata, &v)) + return 0; extern_c = 0; is_builtin = 1; @@ -2898,28 +3020,28 @@ again: case 'a': /* signed char */ if (!DEM_PUSH_STR(ddata, "signed char")) - goto clean; + return 0; ++ddata->cur; goto rtn; case 'A': /* array type */ if (!cpp_demangle_read_array(ddata)) - goto clean; + return 0; is_builtin = 0; goto rtn; case 'b': /* bool */ if (!DEM_PUSH_STR(ddata, "bool")) - goto clean; + return 0; ++ddata->cur; goto rtn; case 'C': /* complex pair */ - if (!vector_type_qualifier_push(&v, TYPE_CMX)) - goto clean; + if (!vector_type_qualifier_push(ddata, &v, TYPE_CMX)) + return 0; ++ddata->cur; if (td) td->firstp = false; @@ -2928,14 +3050,14 @@ again: case 'c': /* char */ if (!DEM_PUSH_STR(ddata, "char")) - goto clean; + return 0; ++ddata->cur; goto rtn; case 'd': /* double */ if (!DEM_PUSH_STR(ddata, "double")) - goto clean; + return 0; ++ddata->cur; goto rtn; @@ -2945,55 +3067,55 @@ again: case 'a': /* auto */ if (!DEM_PUSH_STR(ddata, "auto")) - goto clean; + return 0; ++ddata->cur; break; case 'c': /* decltype(auto) */ if (!DEM_PUSH_STR(ddata, "decltype(auto)")) - goto clean; + return 0; ++ddata->cur; break; case 'd': /* IEEE 754r decimal floating point (64 bits) */ if (!DEM_PUSH_STR(ddata, "decimal64")) - goto clean; + return 0; ++ddata->cur; break; case 'e': /* IEEE 754r decimal floating point (128 bits) */ if (!DEM_PUSH_STR(ddata, "decimal128")) - goto clean; + return 0; ++ddata->cur; break; case 'f': /* IEEE 754r decimal floating point (32 bits) */ if (!DEM_PUSH_STR(ddata, "decimal32")) - goto clean; + return 0; ++ddata->cur; break; case 'h': /* IEEE 754r half-precision floating point (16 bits) */ if (!DEM_PUSH_STR(ddata, "half")) - goto clean; + return 0; ++ddata->cur; break; case 'i': /* char32_t */ if (!DEM_PUSH_STR(ddata, "char32_t")) - goto clean; + return 0; ++ddata->cur; break; case 'n': /* std::nullptr_t (i.e., decltype(nullptr)) */ if (!DEM_PUSH_STR(ddata, "decltype(nullptr)")) - goto clean; + return 0; ++ddata->cur; break; case 's': /* char16_t */ if (!DEM_PUSH_STR(ddata, "char16_t")) - goto clean; + return 0; ++ddata->cur; break; case 'v': @@ -3002,34 +3124,34 @@ again: if (*ddata->cur == '_') { ++ddata->cur; if (!cpp_demangle_read_expression_flat(ddata, - &exp_str)) - goto clean; + &exp_str)) + return 0; if (!VEC_PUSH_STR(&v.ext_name, exp_str)) - goto clean; + return 0; } else { if (!cpp_demangle_read_number_as_string(ddata, - &num_str)) - goto clean; + &num_str)) + return 0; if (!VEC_PUSH_STR(&v.ext_name, num_str)) - goto clean; + return 0; } if (*ddata->cur != '_') - goto clean; + return 0; ++ddata->cur; - if (!vector_type_qualifier_push(&v, TYPE_VEC)) - goto clean; + if (!vector_type_qualifier_push(ddata, &v, TYPE_VEC)) + return 0; if (td) td->firstp = false; goto again; default: - goto clean; + return 0; } goto rtn; case 'e': /* long double */ if (!DEM_PUSH_STR(ddata, "long double")) - goto clean; + return 0; ++ddata->cur; goto rtn; @@ -3041,33 +3163,33 @@ again: cpp_demangle_pop_str(ddata); goto rtn; } - goto clean; + return 0; case 'f': /* float */ if (!DEM_PUSH_STR(ddata, "float")) - goto clean; + return 0; ++ddata->cur; goto rtn; case 'F': /* function */ if (!cpp_demangle_read_function(ddata, &extern_c, &v)) - goto clean; + return 0; is_builtin = 0; goto rtn; case 'g': /* __float128 */ if (!DEM_PUSH_STR(ddata, "__float128")) - goto clean; + return 0; ++ddata->cur; goto rtn; case 'G': /* imaginary */ - if (!vector_type_qualifier_push(&v, TYPE_IMG)) - goto clean; + if (!vector_type_qualifier_push(ddata, &v, TYPE_IMG)) + return 0; ++ddata->cur; if (td) td->firstp = false; @@ -3076,14 +3198,14 @@ again: case 'h': /* unsigned char */ if (!DEM_PUSH_STR(ddata, "unsigned char")) - goto clean; + return 0; ++ddata->cur; goto rtn; case 'i': /* int */ if (!DEM_PUSH_STR(ddata, "int")) - goto clean; + return 0; ++ddata->cur; goto rtn; @@ -3092,38 +3214,25 @@ again: /* handles */ p_idx = output->size; if (!cpp_demangle_read_tmpl_args(ddata)) - goto clean; - if ((subst_str = vector_str_substr(output, p_idx, - output->size - 1, &subst_str_len)) == NULL) - goto clean; - if (!vector_str_init(&sv)) { - free(subst_str); - goto clean; - } - if (!vector_str_push(&sv, subst_str, subst_str_len)) { - free(subst_str); - vector_str_dest(&sv); - goto clean; - } - free(subst_str); - if (!cpp_demangle_push_subst_v(ddata, &sv)) { - vector_str_dest(&sv); - goto clean; - } - vector_str_dest(&sv); + return 0; + if (!(subst_str = vector_str_substr(ddata, output, p_idx, + output->size - 1, &subst_str_len))) + return 0; + if (!cpp_demangle_push_subst(ddata, subst_str, subst_str_len)) + return 0; goto rtn; case 'j': /* unsigned int */ if (!DEM_PUSH_STR(ddata, "unsigned int")) - goto clean; + return 0; ++ddata->cur; goto rtn; case 'K': /* const */ - if (!vector_type_qualifier_push(&v, TYPE_CST)) - goto clean; + if (!vector_type_qualifier_push(ddata, &v, TYPE_CST)) + return 0; ++ddata->cur; if (td) td->firstp = false; @@ -3132,14 +3241,14 @@ again: case 'l': /* long */ if (!DEM_PUSH_STR(ddata, "long")) - goto clean; + return 0; ++ddata->cur; goto rtn; case 'm': /* unsigned long */ if (!DEM_PUSH_STR(ddata, "unsigned long")) - goto clean; + return 0; ++ddata->cur; @@ -3147,30 +3256,30 @@ again: case 'M': /* pointer to member */ if (!cpp_demangle_read_pointer_to_member(ddata, &v)) - goto clean; + return 0; is_builtin = 0; goto rtn; case 'n': /* __int128 */ if (!DEM_PUSH_STR(ddata, "__int128")) - goto clean; + return 0; ++ddata->cur; goto rtn; case 'o': /* unsigned __int128 */ if (!DEM_PUSH_STR(ddata, "unsigned __int128")) - goto clean; + return 0; ++ddata->cur; goto rtn; case 'O': /* rvalue reference */ if (ddata->ref_qualifier) - goto clean; - if (!vector_type_qualifier_push(&v, TYPE_RREF)) - goto clean; + return 0; + if (!vector_type_qualifier_push(ddata, &v, TYPE_RREF)) + return 0; ddata->ref_qualifier = true; ddata->ref_qualifier_type = TYPE_RREF; ++ddata->cur; @@ -3180,8 +3289,8 @@ again: case 'P': /* pointer */ - if (!vector_type_qualifier_push(&v, TYPE_PTR)) - goto clean; + if (!vector_type_qualifier_push(ddata, &v, TYPE_PTR)) + return 0; ++ddata->cur; if (td) td->firstp = false; @@ -3189,8 +3298,8 @@ again: case 'r': /* restrict */ - if (!vector_type_qualifier_push(&v, TYPE_RST)) - goto clean; + if (!vector_type_qualifier_push(ddata, &v, TYPE_RST)) + return 0; ++ddata->cur; if (td) td->firstp = false; @@ -3199,9 +3308,9 @@ again: case 'R': /* reference */ if (ddata->ref_qualifier) - goto clean; - if (!vector_type_qualifier_push(&v, TYPE_REF)) - goto clean; + return 0; + if (!vector_type_qualifier_push(ddata, &v, TYPE_REF)) + return 0; ddata->ref_qualifier = true; ddata->ref_qualifier_type = TYPE_REF; ++ddata->cur; @@ -3212,28 +3321,28 @@ again: case 's': /* short, local string */ if (!DEM_PUSH_STR(ddata, "short")) - goto clean; + return 0; ++ddata->cur; goto rtn; case 'S': /* substitution */ if (!cpp_demangle_read_subst(ddata)) - goto clean; + return 0; is_builtin = 0; goto rtn; case 't': /* unsigned short */ if (!DEM_PUSH_STR(ddata, "unsigned short")) - goto clean; + return 0; ++ddata->cur; goto rtn; case 'T': /* template parameter */ if (!cpp_demangle_read_tmpl_param(ddata)) - goto clean; + return 0; is_builtin = 0; goto rtn; @@ -3241,7 +3350,7 @@ again: /* vendor extended builtin */ ++ddata->cur; if (!cpp_demangle_read_sname(ddata)) - goto clean; + return 0; is_builtin = 0; goto rtn; @@ -3249,14 +3358,14 @@ again: /* vendor extended type qualifier */ ++ddata->cur; if (!cpp_demangle_read_number(ddata, &len)) - goto clean; + return 0; if (len <= 0) - goto clean; - if (!vector_str_push(&v.ext_name, ddata->cur, len)) - goto clean; + return 0; + if (!vector_str_push(ddata, &v.ext_name, ddata->cur, len)) + return 0; ddata->cur += len; - if (!vector_type_qualifier_push(&v, TYPE_EXT)) - goto clean; + if (!vector_type_qualifier_push(ddata, &v, TYPE_EXT)) + return 0; if (td) td->firstp = false; goto again; @@ -3280,14 +3389,14 @@ again: } } if (!omit_void && !DEM_PUSH_STR(ddata, "void")) - goto clean; + return 0; ++ddata->cur; goto rtn; case 'V': /* volatile */ - if (!vector_type_qualifier_push(&v, TYPE_VAT)) - goto clean; + if (!vector_type_qualifier_push(ddata, &v, TYPE_VAT)) + return 0; ++ddata->cur; if (td) td->firstp = false; @@ -3296,98 +3405,56 @@ again: case 'w': /* wchar_t */ if (!DEM_PUSH_STR(ddata, "wchar_t")) - goto clean; + return 0; ++ddata->cur; goto rtn; case 'x': /* long long */ if (!DEM_PUSH_STR(ddata, "long long")) - goto clean; + return 0; ++ddata->cur; goto rtn; case 'y': /* unsigned long long */ if (!DEM_PUSH_STR(ddata, "unsigned long long")) - goto clean; + return 0; ++ddata->cur; goto rtn; case 'z': /* ellipsis */ if (!DEM_PUSH_STR(ddata, "...")) - goto clean; + return 0; ++ddata->cur; goto rtn; } if (!cpp_demangle_read_name(ddata)) - goto clean; + return 0; is_builtin = 0; rtn: - type_str = vector_str_substr(output, p_idx, output->size - 1, + type_str = vector_str_substr(ddata, output, p_idx, output->size - 1, &type_str_len); - if (is_builtin == 0) { + if (!is_builtin) { if (!vector_str_find(&ddata->subst, type_str, type_str_len) && - !vector_str_push(&ddata->subst, type_str, type_str_len)) - goto clean; + !vector_str_push(ddata, &ddata->subst, type_str, + type_str_len)) + return 0; } if (!skip_ref_qualifier && !cpp_demangle_push_type_qualifier(ddata, &v, type_str)) - goto clean; + return 0; if (td) td->firstp = false; - free(type_str); - free(exp_str); - free(num_str); - vector_type_qualifier_dest(&v); - - return (1); -clean: - free(type_str); - free(exp_str); - free(num_str); - vector_type_qualifier_dest(&v); - - return (0); -} - -static int -cpp_demangle_read_type_flat(struct cpp_demangle_data *ddata, char **str) -{ - struct vector_str *output; - size_t i, p_idx, idx, type_len; - char *type; - - output = ddata->cur_output; - - p_idx = output->size; - - if (!cpp_demangle_read_type(ddata, NULL)) - return (0); - - if ((type = vector_str_substr(output, p_idx, output->size - 1, - &type_len)) == NULL) - return (0); - - idx = output->size; - for (i = p_idx; i < idx; ++i) { - if (!vector_str_pop(output)) { - free(type); - return (0); - } - } - - *str = type; - - return (1); + return 1; } /* @@ -3399,377 +3466,377 @@ cpp_demangle_read_uqname(struct cpp_demangle_data *ddata) { size_t len; - if (ddata == NULL || *ddata->cur == '\0') - return (0); + if (!ddata || *ddata->cur == '\0') + return 0; /* operator name */ switch (SIMPLE_HASH(*ddata->cur, *(ddata->cur + 1))) { case SIMPLE_HASH('a', 'a'): /* operator && */ if (!DEM_PUSH_STR(ddata, "operator&&")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('a', 'd'): /* operator & (unary) */ if (!DEM_PUSH_STR(ddata, "operator&")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('a', 'n'): /* operator & */ if (!DEM_PUSH_STR(ddata, "operator&")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('a', 'N'): /* operator &= */ if (!DEM_PUSH_STR(ddata, "operator&=")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('a', 'S'): /* operator = */ if (!DEM_PUSH_STR(ddata, "operator=")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('c', 'l'): /* operator () */ if (!DEM_PUSH_STR(ddata, "operator()")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('c', 'm'): /* operator , */ if (!DEM_PUSH_STR(ddata, "operator,")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('c', 'o'): /* operator ~ */ if (!DEM_PUSH_STR(ddata, "operator~")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('c', 'v'): /* operator (cast) */ if (!DEM_PUSH_STR(ddata, "operator(cast)")) - return (0); + return 0; ddata->cur += 2; - return (cpp_demangle_read_type(ddata, NULL)); + return cpp_demangle_read_type(ddata, NULL); case SIMPLE_HASH('d', 'a'): /* operator delete [] */ if (!DEM_PUSH_STR(ddata, "operator delete []")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('d', 'e'): /* operator * (unary) */ if (!DEM_PUSH_STR(ddata, "operator*")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('d', 'l'): /* operator delete */ if (!DEM_PUSH_STR(ddata, "operator delete")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('d', 'v'): /* operator / */ if (!DEM_PUSH_STR(ddata, "operator/")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('d', 'V'): /* operator /= */ if (!DEM_PUSH_STR(ddata, "operator/=")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('e', 'o'): /* operator ^ */ if (!DEM_PUSH_STR(ddata, "operator^")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('e', 'O'): /* operator ^= */ if (!DEM_PUSH_STR(ddata, "operator^=")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('e', 'q'): /* operator == */ if (!DEM_PUSH_STR(ddata, "operator==")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('g', 'e'): /* operator >= */ if (!DEM_PUSH_STR(ddata, "operator>=")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('g', 't'): /* operator > */ if (!DEM_PUSH_STR(ddata, "operator>")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('i', 'x'): /* operator [] */ if (!DEM_PUSH_STR(ddata, "operator[]")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('l', 'e'): /* operator <= */ if (!DEM_PUSH_STR(ddata, "operator<=")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('l', 's'): /* operator << */ if (!DEM_PUSH_STR(ddata, "operator<<")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('l', 'S'): /* operator <<= */ if (!DEM_PUSH_STR(ddata, "operator<<=")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('l', 't'): /* operator < */ if (!DEM_PUSH_STR(ddata, "operator<")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('m', 'i'): /* operator - */ if (!DEM_PUSH_STR(ddata, "operator-")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('m', 'I'): /* operator -= */ if (!DEM_PUSH_STR(ddata, "operator-=")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('m', 'l'): /* operator * */ if (!DEM_PUSH_STR(ddata, "operator*")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('m', 'L'): /* operator *= */ if (!DEM_PUSH_STR(ddata, "operator*=")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('m', 'm'): /* operator -- */ if (!DEM_PUSH_STR(ddata, "operator--")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('n', 'a'): /* operator new[] */ if (!DEM_PUSH_STR(ddata, "operator new []")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('n', 'e'): /* operator != */ if (!DEM_PUSH_STR(ddata, "operator!=")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('n', 'g'): /* operator - (unary) */ if (!DEM_PUSH_STR(ddata, "operator-")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('n', 't'): /* operator ! */ if (!DEM_PUSH_STR(ddata, "operator!")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('n', 'w'): /* operator new */ if (!DEM_PUSH_STR(ddata, "operator new")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('o', 'o'): /* operator || */ if (!DEM_PUSH_STR(ddata, "operator||")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('o', 'r'): /* operator | */ if (!DEM_PUSH_STR(ddata, "operator|")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('o', 'R'): /* operator |= */ if (!DEM_PUSH_STR(ddata, "operator|=")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('p', 'l'): /* operator + */ if (!DEM_PUSH_STR(ddata, "operator+")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('p', 'L'): /* operator += */ if (!DEM_PUSH_STR(ddata, "operator+=")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('p', 'm'): /* operator ->* */ if (!DEM_PUSH_STR(ddata, "operator->*")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('p', 'p'): /* operator ++ */ if (!DEM_PUSH_STR(ddata, "operator++")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('p', 's'): /* operator + (unary) */ if (!DEM_PUSH_STR(ddata, "operator+")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('p', 't'): /* operator -> */ if (!DEM_PUSH_STR(ddata, "operator->")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('q', 'u'): /* operator ? */ if (!DEM_PUSH_STR(ddata, "operator?")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('r', 'm'): /* operator % */ if (!DEM_PUSH_STR(ddata, "operator%")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('r', 'M'): /* operator %= */ if (!DEM_PUSH_STR(ddata, "operator%=")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('r', 's'): /* operator >> */ if (!DEM_PUSH_STR(ddata, "operator>>")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('r', 'S'): /* operator >>= */ if (!DEM_PUSH_STR(ddata, "operator>>=")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('r', 'z'): /* operator sizeof */ if (!DEM_PUSH_STR(ddata, "operator sizeof ")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('s', 'r'): /* scope resolution operator */ if (!DEM_PUSH_STR(ddata, "scope resolution operator ")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; case SIMPLE_HASH('s', 'v'): /* operator sizeof */ if (!DEM_PUSH_STR(ddata, "operator sizeof ")) - return (0); + return 0; ddata->cur += 2; - return (1); + return 1; } /* vendor extened operator */ if (*ddata->cur == 'v' && ELFTC_ISDIGIT(*(ddata->cur + 1))) { if (!DEM_PUSH_STR(ddata, "vendor extened operator ")) - return (0); + return 0; if (!cpp_demangle_push_str(ddata, ddata->cur + 1, 1)) - return (0); + return 0; ddata->cur += 2; - return (cpp_demangle_read_sname(ddata)); + return cpp_demangle_read_sname(ddata); } /* ctor-dtor-name */ @@ -3777,41 +3844,41 @@ cpp_demangle_read_uqname(struct cpp_demangle_data *ddata) case SIMPLE_HASH('C', '1'): case SIMPLE_HASH('C', '2'): case SIMPLE_HASH('C', '3'): - if (ddata->last_sname == NULL) - return (0); - if ((len = strlen(ddata->last_sname)) == 0) - return (0); + if (!ddata->last_sname) + return 0; + if (!(len = strlen(ddata->last_sname))) + return 0; if (!DEM_PUSH_STR(ddata, "::")) - return (0); + return 0; if (!cpp_demangle_push_str(ddata, ddata->last_sname, len)) - return (0); - ddata->cur +=2; - return (1); + return 0; + ddata->cur += 2; + return 1; case SIMPLE_HASH('D', '0'): case SIMPLE_HASH('D', '1'): case SIMPLE_HASH('D', '2'): - if (ddata->last_sname == NULL) - return (0); - if ((len = strlen(ddata->last_sname)) == 0) - return (0); + if (!ddata->last_sname) + return 0; + if (!(len = strlen(ddata->last_sname))) + return 0; if (!DEM_PUSH_STR(ddata, "::~")) - return (0); + return 0; if (!cpp_demangle_push_str(ddata, ddata->last_sname, len)) - return (0); - ddata->cur +=2; - return (1); + return 0; + ddata->cur += 2; + return 1; } /* source name */ - if (ELFTC_ISDIGIT(*ddata->cur) != 0) - return (cpp_demangle_read_sname(ddata)); + if (ELFTC_ISDIGIT(*ddata->cur)) + return cpp_demangle_read_sname(ddata); /* local source name */ if (*ddata->cur == 'L') - return (cpp_demangle_local_source_name(ddata)); + return cpp_demangle_local_source_name(ddata); - return (1); + return 1; } /* @@ -3825,372 +3892,40 @@ static int cpp_demangle_local_source_name(struct cpp_demangle_data *ddata) { /* L */ - if (ddata == NULL || *ddata->cur != 'L') - return (0); + if (!ddata || *ddata->cur != 'L') + return 0; ++ddata->cur; /* source name */ if (!cpp_demangle_read_sname(ddata)) - return (0); + return 0; /* discriminator */ if (*ddata->cur == '_') { ++ddata->cur; - while (ELFTC_ISDIGIT(*ddata->cur) != 0) + while (ELFTC_ISDIGIT(*ddata->cur)) ++ddata->cur; } - return (1); + return 1; } static int cpp_demangle_read_v_offset(struct cpp_demangle_data *ddata) { - - if (ddata == NULL) - return (0); + if (!ddata) + return 0; if (!DEM_PUSH_STR(ddata, "offset : ")) - return (0); + return 0; if (!cpp_demangle_read_offset_number(ddata)) - return (0); + return 0; if (!DEM_PUSH_STR(ddata, "virtual offset : ")) - return (0); + return 0; - return (!cpp_demangle_read_offset_number(ddata)); -} - -/* - * Decode floating point representation to string - * Return new allocated string or NULL - * - * Todo - * Replace these functions to macro. - */ -static char * -decode_fp_to_double(const char *p, size_t len) -{ - double f; - size_t rtn_len, limit, i; - int byte; - char *rtn; - - if (p == NULL || len == 0 || len % 2 != 0 || len / 2 > sizeof(double)) - return (NULL); - - memset(&f, 0, sizeof(double)); - - for (i = 0; i < len / 2; ++i) { - byte = hex_to_dec(p[len - i * 2 - 1]) + - hex_to_dec(p[len - i * 2 - 2]) * 16; - - if (byte < 0 || byte > 255) - return (NULL); - -#if ELFTC_BYTE_ORDER == ELFTC_BYTE_ORDER_LITTLE_ENDIAN - ((unsigned char *)&f)[i] = (unsigned char)(byte); -#else /* ELFTC_BYTE_ORDER != ELFTC_BYTE_ORDER_LITTLE_ENDIAN */ - ((unsigned char *)&f)[sizeof(double) - i - 1] = - (unsigned char)(byte); -#endif /* ELFTC_BYTE_ORDER == ELFTC_BYTE_ORDER_LITTLE_ENDIAN */ - } - - rtn_len = 64; - limit = 0; -again: - if ((rtn = malloc(sizeof(char) * rtn_len)) == NULL) - return (NULL); - - if (snprintf(rtn, rtn_len, "%fld", f) >= (int)rtn_len) { - free(rtn); - if (limit++ > FLOAT_SPRINTF_TRY_LIMIT) - return (NULL); - rtn_len *= BUFFER_GROWFACTOR; - goto again; - } - - return rtn; -} - -static char * -decode_fp_to_float(const char *p, size_t len) -{ - size_t i, rtn_len, limit; - float f; - int byte; - char *rtn; - - if (p == NULL || len == 0 || len % 2 != 0 || len / 2 > sizeof(float)) - return (NULL); - - memset(&f, 0, sizeof(float)); - - for (i = 0; i < len / 2; ++i) { - byte = hex_to_dec(p[len - i * 2 - 1]) + - hex_to_dec(p[len - i * 2 - 2]) * 16; - if (byte < 0 || byte > 255) - return (NULL); -#if ELFTC_BYTE_ORDER == ELFTC_BYTE_ORDER_LITTLE_ENDIAN - ((unsigned char *)&f)[i] = (unsigned char)(byte); -#else /* ELFTC_BYTE_ORDER != ELFTC_BYTE_ORDER_LITTLE_ENDIAN */ - ((unsigned char *)&f)[sizeof(float) - i - 1] = - (unsigned char)(byte); -#endif /* ELFTC_BYTE_ORDER == ELFTC_BYTE_ORDER_LITTLE_ENDIAN */ - } - - rtn_len = 64; - limit = 0; -again: - if ((rtn = malloc(sizeof(char) * rtn_len)) == NULL) - return (NULL); - - if (snprintf(rtn, rtn_len, "%ff", f) >= (int)rtn_len) { - free(rtn); - if (limit++ > FLOAT_SPRINTF_TRY_LIMIT) - return (NULL); - rtn_len *= BUFFER_GROWFACTOR; - goto again; - } - - return rtn; -} - -static char * -decode_fp_to_float128(const char *p, size_t len) -{ - long double f; - size_t rtn_len, limit, i; - int byte; - unsigned char buf[FLOAT_QUADRUPLE_BYTES]; - char *rtn; - - switch(sizeof(long double)) { - case FLOAT_QUADRUPLE_BYTES: - return (decode_fp_to_long_double(p, len)); - case FLOAT_EXTENED_BYTES: - if (p == NULL || len == 0 || len % 2 != 0 || - len / 2 > FLOAT_QUADRUPLE_BYTES) - return (NULL); - - memset(buf, 0, FLOAT_QUADRUPLE_BYTES); - - for (i = 0; i < len / 2; ++i) { - byte = hex_to_dec(p[len - i * 2 - 1]) + - hex_to_dec(p[len - i * 2 - 2]) * 16; - if (byte < 0 || byte > 255) - return (NULL); -#if ELFTC_BYTE_ORDER == ELFTC_BYTE_ORDER_LITTLE_ENDIAN - buf[i] = (unsigned char)(byte); -#else /* ELFTC_BYTE_ORDER != ELFTC_BYTE_ORDER_LITTLE_ENDIAN */ - buf[FLOAT_QUADRUPLE_BYTES - i -1] = - (unsigned char)(byte); -#endif /* ELFTC_BYTE_ORDER == ELFTC_BYTE_ORDER_LITTLE_ENDIAN */ - } - memset(&f, 0, FLOAT_EXTENED_BYTES); - -#if ELFTC_BYTE_ORDER == ELFTC_BYTE_ORDER_LITTLE_ENDIAN - memcpy(&f, buf, FLOAT_EXTENED_BYTES); -#else /* ELFTC_BYTE_ORDER != ELFTC_BYTE_ORDER_LITTLE_ENDIAN */ - memcpy(&f, buf + 6, FLOAT_EXTENED_BYTES); -#endif /* ELFTC_BYTE_ORDER == ELFTC_BYTE_ORDER_LITTLE_ENDIAN */ - - rtn_len = 256; - limit = 0; -again: - if ((rtn = malloc(sizeof(char) * rtn_len)) == NULL) - return (NULL); - - if (snprintf(rtn, rtn_len, "%Lfd", f) >= (int)rtn_len) { - free(rtn); - if (limit++ > FLOAT_SPRINTF_TRY_LIMIT) - return (NULL); - rtn_len *= BUFFER_GROWFACTOR; - goto again; - } - - return (rtn); - default: - return (NULL); - } -} - -static char * -decode_fp_to_float80(const char *p, size_t len) -{ - long double f; - size_t rtn_len, limit, i; - int byte; - unsigned char buf[FLOAT_EXTENED_BYTES]; - char *rtn; - - switch(sizeof(long double)) { - case FLOAT_QUADRUPLE_BYTES: - if (p == NULL || len == 0 || len % 2 != 0 || - len / 2 > FLOAT_EXTENED_BYTES) - return (NULL); - - memset(buf, 0, FLOAT_EXTENED_BYTES); - - for (i = 0; i < len / 2; ++i) { - byte = hex_to_dec(p[len - i * 2 - 1]) + - hex_to_dec(p[len - i * 2 - 2]) * 16; - - if (byte < 0 || byte > 255) - return (NULL); - -#if ELFTC_BYTE_ORDER == ELFTC_BYTE_ORDER_LITTLE_ENDIAN - buf[i] = (unsigned char)(byte); -#else /* ELFTC_BYTE_ORDER != ELFTC_BYTE_ORDER_LITTLE_ENDIAN */ - buf[FLOAT_EXTENED_BYTES - i -1] = - (unsigned char)(byte); -#endif /* ELFTC_BYTE_ORDER == ELFTC_BYTE_ORDER_LITTLE_ENDIAN */ - } - - memset(&f, 0, FLOAT_QUADRUPLE_BYTES); - -#if ELFTC_BYTE_ORDER == ELFTC_BYTE_ORDER_LITTLE_ENDIAN - memcpy(&f, buf, FLOAT_EXTENED_BYTES); -#else /* ELFTC_BYTE_ORDER != ELFTC_BYTE_ORDER_LITTLE_ENDIAN */ - memcpy((unsigned char *)(&f) + 6, buf, FLOAT_EXTENED_BYTES); -#endif /* ELFTC_BYTE_ORDER == ELFTC_BYTE_ORDER_LITTLE_ENDIAN */ - - rtn_len = 256; - limit = 0; -again: - if ((rtn = malloc(sizeof(char) * rtn_len)) == NULL) - return (NULL); - - if (snprintf(rtn, rtn_len, "%Lfd", f) >= (int)rtn_len) { - free(rtn); - if (limit++ > FLOAT_SPRINTF_TRY_LIMIT) - return (NULL); - rtn_len *= BUFFER_GROWFACTOR; - goto again; - } - - return (rtn); - case FLOAT_EXTENED_BYTES: - return (decode_fp_to_long_double(p, len)); - default: - return (NULL); - } -} - -static char * -decode_fp_to_long_double(const char *p, size_t len) -{ - long double f; - size_t rtn_len, limit, i; - int byte; - char *rtn; - - if (p == NULL || len == 0 || len % 2 != 0 || - len / 2 > sizeof(long double)) - return (NULL); - - memset(&f, 0, sizeof(long double)); - - for (i = 0; i < len / 2; ++i) { - byte = hex_to_dec(p[len - i * 2 - 1]) + - hex_to_dec(p[len - i * 2 - 2]) * 16; - - if (byte < 0 || byte > 255) - return (NULL); - -#if ELFTC_BYTE_ORDER == ELFTC_BYTE_ORDER_LITTLE_ENDIAN - ((unsigned char *)&f)[i] = (unsigned char)(byte); -#else /* ELFTC_BYTE_ORDER != ELFTC_BYTE_ORDER_LITTLE_ENDIAN */ - ((unsigned char *)&f)[sizeof(long double) - i - 1] = - (unsigned char)(byte); -#endif /* ELFTC_BYTE_ORDER == ELFTC_BYTE_ORDER_LITTLE_ENDIAN */ - } - - rtn_len = 256; - limit = 0; -again: - if ((rtn = malloc(sizeof(char) * rtn_len)) == NULL) - return (NULL); - - if (snprintf(rtn, rtn_len, "%Lfd", f) >= (int)rtn_len) { - free(rtn); - if (limit++ > FLOAT_SPRINTF_TRY_LIMIT) - return (NULL); - rtn_len *= BUFFER_GROWFACTOR; - goto again; - } - - return (rtn); -} - -/* Simple hex to integer function used by decode_to_* function. */ -static int -hex_to_dec(char c) -{ - - switch (c) { - case '0': - return (0); - case '1': - return (1); - case '2': - return (2); - case '3': - return (3); - case '4': - return (4); - case '5': - return (5); - case '6': - return (6); - case '7': - return (7); - case '8': - return (8); - case '9': - return (9); - case 'a': - return (10); - case 'b': - return (11); - case 'c': - return (12); - case 'd': - return (13); - case 'e': - return (14); - case 'f': - return (15); - default: - return (-1); - } -} - -/** - * @brief Test input string is mangled by IA-64 C++ ABI style. - * - * Test string heads with "_Z" or "_GLOBAL__I_". - * @return Return 0 at false. - */ -bool -is_cpp_mangled_gnu3(const char *org) -{ - size_t len; - - len = strlen(org); - return ((len > 2 && *org == '_' && *(org + 1) == 'Z') || - (len > 11 && !strncmp(org, "_GLOBAL__I_", 11))); -} - -static void -vector_read_cmd_dest(struct vector_read_cmd *v) -{ - - if (v == NULL) - return; - - free(v->r_container); + return !cpp_demangle_read_offset_number(ddata); } static struct read_cmd_item * @@ -4198,64 +3933,34 @@ vector_read_cmd_find(struct vector_read_cmd *v, enum read_cmd dst) { int i; - if (v == NULL || dst == READ_FAIL) - return (NULL); + if (!v || dst == READ_FAIL) + return 0; - for (i = (int) v->size - 1; i >= 0; i--) + for (i = (int)v->size - 1; i >= 0; i--) if (v->r_container[i].cmd == dst) - return (&v->r_container[i]); + return &v->r_container[i]; - return (NULL); + return 0; } static int -vector_read_cmd_init(struct vector_read_cmd *v) -{ - - if (v == NULL) - return (0); - - v->size = 0; - v->capacity = VECTOR_DEF_CAPACITY; - - if ((v->r_container = malloc(sizeof(*v->r_container) * v->capacity)) - == NULL) - return (0); - - return (1); -} - -static int -vector_read_cmd_pop(struct vector_read_cmd *v) -{ - - if (v == NULL || v->size == 0) - return (0); - - --v->size; - v->r_container[v->size].cmd = READ_FAIL; - v->r_container[v->size].data = NULL; - - return (1); -} - -static int -vector_read_cmd_push(struct vector_read_cmd *v, enum read_cmd cmd, void *data) +vector_read_cmd_push(struct cpp_demangle_data *ddata, struct vector_read_cmd *v, + enum read_cmd cmd, void *data) { struct read_cmd_item *tmp_r_ctn; size_t tmp_cap; size_t i; - if (v == NULL) - return (0); + if (!v) + return 0; if (v->size == v->capacity) { tmp_cap = BUFFER_GROW(v->capacity); - if ((tmp_r_ctn = malloc(sizeof(*tmp_r_ctn) * tmp_cap)) == NULL) - return (0); + if (!(tmp_r_ctn = (struct read_cmd_item *)alloc(ddata, + alignof(*tmp_r_ctn), sizeof(*tmp_r_ctn) * tmp_cap))) + return 0; for (i = 0; i < v->size; ++i) tmp_r_ctn[i] = v->r_container[i]; - free(v->r_container); v->r_container = tmp_r_ctn; v->capacity = tmp_cap; } @@ -4264,64 +3969,52 @@ vector_read_cmd_push(struct vector_read_cmd *v, enum read_cmd cmd, void *data) v->r_container[v->size].data = data; ++v->size; - return (1); -} - -static void -vector_type_qualifier_dest(struct vector_type_qualifier *v) -{ - - if (v == NULL) - return; - - free(v->q_container); - vector_str_dest(&v->ext_name); + return 1; } /* size, capacity, ext_name */ static int -vector_type_qualifier_init(struct vector_type_qualifier *v) +vector_type_qualifier_init(struct cpp_demangle_data *ddata, + struct vector_type_qualifier *v) { - - if (v == NULL) - return (0); + if (!v) + return 0; v->size = 0; v->capacity = VECTOR_DEF_CAPACITY; - if ((v->q_container = malloc(sizeof(enum type_qualifier) * v->capacity)) - == NULL) - return (0); + if (!(v->q_container = (enum type_qualifier *)alloc(ddata, + alignof(enum type_qualifier), + sizeof(enum type_qualifier) * v->capacity))) + return 0; - assert(v->q_container != NULL); + ASSERT(v->q_container); - if (!vector_str_init(&v->ext_name)) { - free(v->q_container); - return (0); - } + if (!vector_str_init(ddata, &v->ext_name)) + return 0; - return (1); + return 1; } static int -vector_type_qualifier_push(struct vector_type_qualifier *v, - enum type_qualifier t) +vector_type_qualifier_push(struct cpp_demangle_data *ddata, + struct vector_type_qualifier *v, enum type_qualifier t) { enum type_qualifier *tmp_ctn; size_t tmp_cap; size_t i; - if (v == NULL) - return (0); + if (!v) + return 0; if (v->size == v->capacity) { tmp_cap = BUFFER_GROW(v->capacity); - if ((tmp_ctn = malloc(sizeof(enum type_qualifier) * tmp_cap)) - == NULL) - return (0); + if (!(tmp_ctn = (enum type_qualifier *)alloc(ddata, + alignof(enum type_qualifier), + sizeof(enum type_qualifier) * tmp_cap))) + return 0; for (i = 0; i < v->size; ++i) tmp_ctn[i] = v->q_container[i]; - free(v->q_container); v->q_container = tmp_ctn; v->capacity = tmp_cap; } @@ -4329,98 +4022,194 @@ vector_type_qualifier_push(struct vector_type_qualifier *v, v->q_container[v->size] = t; ++v->size; - return (1); + return 1; +} + +static int +cpp_demangle_copy_output(char *buf, const struct vector_str *v, size_t buflen) +{ + size_t i, j, len = 0; + if (!v) + return -1; + for (i = 0; i < v->size; ++i) + for (j = 0; v->container[i][j]; ++j) { + if (len < buflen) + buf[len] = v->container[i][j]; + ++len; + } + if (buflen) { + i = len; + if (i >= buflen) + i = buflen - 1; + buf[i] = 0; + } + if (len < buflen) + return len; + else + return -1; +} + +static int +failure(char *buf, const char *org, size_t buflen) +{ + strlcpy(buf, org, buflen); + return -1; } /** - * @brief Demangling routine. - * ABI-mandated entry point in the C++ runtime library for demangling. + * Decodes IA-64 C++ ABI style symbol. * - * @param __mangled_name A NUL-terminated character string - * containing the name to be demangled. + * This function is designed to be safe to call from asynchronous signal + * handlers, since dynamic memory is allocated from the end of `buf`. As + * such it's important to provide a very generous amount of memory here. * - * @param __output_buffer A region of memory, allocated with - * malloc, of @a *__length bytes, into which the demangled name is - * stored. If @a __output_buffer is not long enough, it is - * expanded using realloc. @a __output_buffer may instead be null; - * in that case, the demangled name is placed in a region of memory - * allocated with malloc. + * If you expect your symbols to be 100 characters long, you should pass + * at least 3000 bytes of buffer. If this function runs out of memory it + * will still create a NUL-terminated string in buf. On complete failure + * this will simply be the original string copied. On truncation it will + * be a partially copied result. In both cases, -1 is returned. The size + * of the output is only returned if this routine is fully succesful. To + * successfully cover nearly all the test cases from libcxxabi use 65536 * - * @param __length If @a __length is non-null, the length of the - * buffer containing the demangled name is placed in @a *__length. + * It's important to call ismangled() before this, since non-c++ symbols + * have a special meaning; for example, "g" will return "__float128". It + * should be noted that this routine won't decode c++ symbols containing + * floating point numbers. * - * @param __status If @a __status is non-null, @a *__status is set to - * one of the following values: - * 0: The demangling operation succeeded. - * -1: A memory allocation failure occurred. - * -2: @a mangled_name is not a valid name under the C++ ABI mangling rules. - * -3: One of the arguments is invalid. + * **WARNING**: This implementation isn't as mature as __cxa_demangle(). + * It passes 27,124 out of the 29,798 libcxxabi test cases. * - * @return A pointer to the start of the NUL-terminated demangled - * name, or a null pointer if the demangling fails. The caller is - * responsible for deallocating this memory using @c free. - * - * The demangling is performed using the C++ ABI mangling rules, - * with GNU extensions. For example, this function is used in - * __gnu_cxx::__verbose_terminate_handler. - * - * See https://gcc.gnu.org/onlinedocs/libstdc++/manual/ext_demangling.html - * for other examples of use. - * - * @note The same demangling functionality is available via - * libiberty (@c and @c libiberty.a) in GCC - * 3.1 and later, but that requires explicit installation (@c - * --enable-install-libiberty) and uses a different API, although - * the ABI is unchanged. + * @param buf is where nul-terminated output string is stored + * @param buflen should have at least 8192 bytes of memory + * @return bytes of output name or -1 upon error or truncation + * @asyncsignalsafe */ -char * -__cxa_demangle(const char* mangled_name, - char* buf, - size_t* n, - int* status) +int +__demangle(char *buf, const char *org, size_t buflen) { - // TODO: We should probably just be linking against libelf-tc, rather than - // copying their code. This requires them to do an actual release, - // however, and for our changes to be pushed upstream. We also need to - // call a different demangling function here depending on the ABI (e.g. - // ARM). - char *demangled = __cxa_demangle_gnu3(mangled_name); - if (NULL != demangled) - { - size_t len = strlen(demangled); - if (!buf || (*n < len+1)) - { - buf = realloc(buf, len+1); - } - if (0 != buf) - { - memcpy(buf, demangled, len); - buf[len] = 0; - if (n) - { - *n = len; - } - if (status) - { - *status = 0; - } - } - else - { - if (status) - { - *status = -1; - } - } - free(demangled); + struct cpp_demangle_data ddata[1]; + struct vector_str ret_type; + struct type_delimit td; + ssize_t org_len; + unsigned int limit; + bool has_ret = false, more_type = false; + + ddata->heap = (uintptr_t)buf; + ddata->hoff = buflen; + + org_len = strlen(org); + + /* Try demangling as a type for short encodings. */ + if ((org_len < 2) || (org[0] != '_' || org[1] != 'Z')) { + if (!cpp_demangle_data_init(ddata, org)) + return failure(buf, org, buflen); + if (!cpp_demangle_read_type(ddata, 0)) + return failure(buf, org, buflen); + return cpp_demangle_copy_output(buf, &ddata->output, buflen); } - else - { - if (status) - { - *status = -2; - } - return NULL; + if (org_len > 11 && !strncmp(org, "_GLOBAL__I_", 11)) { + if (!vector_str_init(ddata, &ret_type)) + return failure(buf, org, buflen); + if (!VEC_PUSH_STR(&ret_type, "global constructors keyed to ")) + return failure(buf, org, buflen); + if (!VEC_PUSH_STR(&ret_type, org + 11)) + return failure(buf, org, buflen); + return cpp_demangle_copy_output(buf, &ddata->output, buflen); } - return buf; + + if (!cpp_demangle_data_init(ddata, org + 2)) + return failure(buf, org, buflen); + + if (!cpp_demangle_read_encoding(ddata)) + return failure(buf, org, buflen); + + /* + * Pop function name from substitution candidate list. + */ + if (*ddata->cur && ddata->subst.size >= 1) { + if (!vector_str_pop(&ddata->subst)) + return failure(buf, org, buflen); + } + + td.paren = false; + td.firstp = true; + limit = 0; + + /* + * The first type is a return type if we just demangled template + * args. (the template args is right next to the function name, + * which means it's a template function) + */ + if (ddata->is_tmpl) { + ddata->is_tmpl = false; + if (!vector_str_init(ddata, &ret_type)) + return failure(buf, org, buflen); + ddata->cur_output = &ret_type; + has_ret = true; + } + + while (*ddata->cur != '\0') { + /* + * Breaking at some gcc info at tail. e.g) @@GLIBCXX_3.4 + */ + if (*ddata->cur == '@' && *(ddata->cur + 1) == '@') + break; + + if (has_ret) { + /* Read return type */ + if (!cpp_demangle_read_type(ddata, NULL)) + return failure(buf, org, buflen); + } else { + /* Read function arg type */ + if (!cpp_demangle_read_type(ddata, &td)) + return failure(buf, org, buflen); + } + + if (has_ret) { + /* Push return type to the beginning */ + if (!VEC_PUSH_STR(&ret_type, " ")) + return failure(buf, org, buflen); + if (!vector_str_push_vector_head(ddata, &ddata->output, + &ret_type)) + return failure(buf, org, buflen); + ddata->cur_output = &ddata->output; + has_ret = false; + more_type = true; + } else if (more_type) { + more_type = false; + } + if (limit++ > CPP_DEMANGLE_TRY_LIMIT) + return failure(buf, org, buflen); + } + if (more_type) + return failure(buf, org, buflen); + + if (!ddata->output.size) + return failure(buf, org, buflen); + if (td.paren && !VEC_PUSH_STR(&ddata->output, ")")) + return failure(buf, org, buflen); + if (ddata->mem_vat && !VEC_PUSH_STR(&ddata->output, " volatile")) + return failure(buf, org, buflen); + if (ddata->mem_cst && !VEC_PUSH_STR(&ddata->output, " const")) + return failure(buf, org, buflen); + if (ddata->mem_rst && !VEC_PUSH_STR(&ddata->output, " restrict")) + return failure(buf, org, buflen); + if (ddata->mem_ref && !VEC_PUSH_STR(&ddata->output, " &")) + return failure(buf, org, buflen); + if (ddata->mem_rref && !VEC_PUSH_STR(&ddata->output, " &&")) + return failure(buf, org, buflen); + if (ddata->hoff < 32) + return failure(buf, org, buflen); + return cpp_demangle_copy_output(buf, &ddata->output, ddata->hoff); +} + +/** + * Returns true if string is mangled by IA-64 C++ ABI style. + * + * This means it starts with either "_Z" or "_GLOBAL__I_". + */ +int +__is_mangled(const char *org) +{ + return startswith(org, "_Z") || startswith(org, "_GLOBAL__I_"); } diff --git a/libc/fmt/strtol.c b/libc/str/strtol.c similarity index 100% rename from libc/fmt/strtol.c rename to libc/str/strtol.c diff --git a/libc/fmt/strtoul.c b/libc/str/strtoul.c similarity index 100% rename from libc/fmt/strtoul.c rename to libc/str/strtoul.c diff --git a/test/libc/str/BUILD.mk b/test/libc/str/BUILD.mk index 2f65289ea..cae03bb64 100644 --- a/test/libc/str/BUILD.mk +++ b/test/libc/str/BUILD.mk @@ -6,6 +6,7 @@ PKGS += TEST_LIBC_STR TEST_LIBC_STR_FILES := $(wildcard test/libc/str/*) TEST_LIBC_STR_SRCS_C = $(filter %.c,$(TEST_LIBC_STR_FILES)) TEST_LIBC_STR_SRCS_CC = $(filter %.cc,$(TEST_LIBC_STR_FILES)) +TEST_LIBC_STR_INCS = $(filter %.inc,$(TEST_LIBC_STR_FILES)) TEST_LIBC_STR_SRCS = $(TEST_LIBC_STR_SRCS_C) $(TEST_LIBC_STR_SRCS_CC) TEST_LIBC_STR_SRCS_TEST_C = $(filter %_test.c,$(TEST_LIBC_STR_FILES)) TEST_LIBC_STR_SRCS_TEST_CC = $(filter %_test.cc,$(TEST_LIBC_STR_FILES)) diff --git a/test/libc/str/demangle_cases.inc b/test/libc/str/demangle_cases.inc new file mode 100644 index 000000000..4d9991587 --- /dev/null +++ b/test/libc/str/demangle_cases.inc @@ -0,0 +1,40496 @@ +const char* demangle_cases[][2] = { + {"_Z1A", "A"}, + {"_Z1Av", "A()"}, + {"_Z1A1B1C", "A(B, C)"}, + {"_Z4testI1A1BE1Cv", "C test()"}, + + // {"_Z4testI1A1BET0_T_S3_", + // "B test(A, A)"}, + // got error + + {"_ZN1SgtEi", "S::operator>(int)"}, + + // {"_ZrsI1QEiT_i", + // "int operator>>(Q, int)"}, + // "operator>>(, int, Q, int)" was returned + + {"_ZN13dyldbootstrap5startEPK12macho_headeriPPKcl", "dyldbootstrap::start(macho_header const*, int, char const**, long)"}, + {"_ZN4dyld17getExecutablePathEv", "dyld::getExecutablePath()"}, + {"_ZN4dyld22mainExecutablePreboundEv", "dyld::mainExecutablePrebound()"}, + {"_ZN4dyld14mainExecutableEv", "dyld::mainExecutable()"}, + {"_ZN4dyld21findImageByMachHeaderEPK11mach_header", "dyld::findImageByMachHeader(mach_header const*)"}, + {"_ZN4dyld26findImageContainingAddressEPKv", "dyld::findImageContainingAddress(void const*)"}, + {"_ZN4dyld17clearErrorMessageEv", "dyld::clearErrorMessage()"}, + {"_ZN4dyld15getErrorMessageEv", "dyld::getErrorMessage()"}, + + // {"_ZN4dyld24registerUndefinedHandlerEPFvPKcE", + // "dyld::registerUndefinedHandler(void (*)(char const*))"}, + // "dyld::registerUndefinedHandler(void (*)(char*))" was returned + + {"_ZN4dyld19openSharedCacheFileEv", "dyld::openSharedCacheFile()"}, + {"_ZN4dyld15setErrorMessageEPKc", "dyld::setErrorMessage(char const*)"}, + + // {"_ZN4dyld22registerRemoveCallbackEPFvPK11mach_headerlE", + // "dyld::registerRemoveCallback(void (*)(mach_header const*, long))"}, + // "dyld::registerRemoveCallback(void (*)(mach_header*, long))" was returned + + {"_ZN4dyld13inSharedCacheEPKc", "dyld::inSharedCache(char const*)"}, + {"_ZN4dyld15runInitializersEP11ImageLoader", "dyld::runInitializers(ImageLoader*)"}, + {"_ZN4dyld27findCoalescedExportedSymbolEPKcPPKN11ImageLoader6SymbolEPPKS2_", "dyld::findCoalescedExportedSymbol(char const*, ImageLoader::Symbol const**, ImageLoader const**)"}, + {"_ZN4dyld22flatFindExportedSymbolEPKcPPKN11ImageLoader6SymbolEPPKS2_", "dyld::flatFindExportedSymbol(char const*, ImageLoader::Symbol const**, ImageLoader const**)"}, + {"_ZN4dyld15findLoadedImageERK4stat", "dyld::findLoadedImage(stat const&)"}, + {"_ZN4dyld24initializeMainExecutableEv", "dyld::initializeMainExecutable()"}, + {"_ZN4dyld4warnEPKcz", "dyld::warn(char const*, ...)"}, + {"_ZN4dyld29processDyldEnvironmentVaribleEPKcS1_", "dyld::processDyldEnvironmentVarible(char const*, char const*)"}, + {"_ZN4dyld3logEPKcz", "dyld::log(char const*, ...)"}, + {"_ZN4dyld6throwfEPKcz", "dyld::throwf(char const*, ...)"}, + {"_ZN4dyld9mkstringfEPKcz", "dyld::mkstringf(char const*, ...)"}, + {"_ZN4dyld14addMappedRangeEP11ImageLoadermm", "dyld::addMappedRange(ImageLoader*, unsigned long, unsigned long)"}, + {"_Z28coresymbolication_load_imageP25CSCppDyldSharedMemoryPagePK11ImageLoadery", "coresymbolication_load_image(CSCppDyldSharedMemoryPage*, ImageLoader const*, unsigned long long)"}, + {"_Z30coresymbolication_unload_imageP25CSCppDyldSharedMemoryPagePK11ImageLoader", "coresymbolication_unload_image(CSCppDyldSharedMemoryPage*, ImageLoader const*)"}, + {"_ZN4dyld18getCoalescedImagesEPP11ImageLoader", "dyld::getCoalescedImages(ImageLoader**)"}, + {"_ZN4dyld25findImageContainingSymbolEPKv", "dyld::findImageContainingSymbol(void const*)"}, + + // {"_ZN4dyld19registerAddCallbackEPFvPK11mach_headerlE", + // "dyld::registerAddCallback(void (*)(mach_header const*, long))"}, + // "dyld::registerAddCallback(void (*)(mach_header*, long))" was returned + + {"_ZN4dyld14forEachImageDoEPFvP11ImageLoaderPvES2_", "dyld::forEachImageDo(void (*)(ImageLoader*, void*), void*)"}, + {"_ZN4dyld15getIndexedImageEj", "dyld::getIndexedImage(unsigned int)"}, + {"_ZN4dyld13getImageCountEv", "dyld::getImageCount()"}, + {"_ZN4dyld10validImageEPK11ImageLoader", "dyld::validImage(ImageLoader const*)"}, + {"_ZN4dyld30flatFindExportedSymbolWithHintEPKcS1_PPKN11ImageLoader6SymbolEPPKS2_", "dyld::flatFindExportedSymbolWithHint(char const*, char const*, ImageLoader::Symbol const**, ImageLoader const**)"}, + {"_ZN4dyld14loadFromMemoryEPKhyPKc", "dyld::loadFromMemory(unsigned char const*, unsigned long long, char const*)"}, + + // {"_ZN4dyld36registerImageStateBatchChangeHandlerE17dyld_image_statesPFPKcS0_jPK15dyld_image_infoE", + // "dyld::registerImageStateBatchChangeHandler(dyld_image_states, char const* (*)(dyld_image_states, unsigned int, dyld_image_info const*))"}, + // "dyld::registerImageStateBatchChangeHandler(dyld_image_states, char const* (*)(dyld_image_states, unsigned int, dyld_image_info*))" was returned + + + // {"_ZN4dyld37registerImageStateSingleChangeHandlerE17dyld_image_statesPFPKcS0_jPK15dyld_image_infoE", + // "dyld::registerImageStateSingleChangeHandler(dyld_image_states, char const* (*)(dyld_image_states, unsigned int, dyld_image_info const*))"}, + // "dyld::registerImageStateSingleChangeHandler(dyld_image_states, char const* (*)(dyld_image_states, unsigned int, dyld_image_info*))" was returned + + {"_ZN4dyld4haltEPKc", "dyld::halt(char const*)"}, + {"_ZN4dyld18fastBindLazySymbolEPP11ImageLoaderm", "dyld::fastBindLazySymbol(ImageLoader**, unsigned long)"}, + {"_ZN4dyld14bindLazySymbolEPK11mach_headerPm", "dyld::bindLazySymbol(mach_header const*, unsigned long*)"}, + {"_ZN4dyld14runTerminatorsEPv", "dyld::runTerminators(void*)"}, + {"_ZN4dyld11removeImageEP11ImageLoader", "dyld::removeImage(ImageLoader*)"}, + {"_ZN4dyld20garbageCollectImagesEv", "dyld::garbageCollectImages()"}, + {"_ZN4dyld9preflightEP11ImageLoaderRKNS0_10RPathChainE", "dyld::preflight(ImageLoader*, ImageLoader::RPathChain const&)"}, + {"_ZN4dyld4linkEP11ImageLoaderbRKNS0_10RPathChainE", "dyld::link(ImageLoader*, bool, ImageLoader::RPathChain const&)"}, + {"_ZN4dyld10cloneImageEP11ImageLoader", "dyld::cloneImage(ImageLoader*)"}, + {"_ZN4dyld4loadEPKcRKNS_11LoadContextE", "dyld::load(char const*, dyld::LoadContext const&)"}, + {"_ZN4dyld5_mainEPK12macho_headermiPPKcS5_S5_", "dyld::_main(macho_header const*, unsigned long, int, char const**, char const**, char const**)"}, + {"_ZNSt6vectorIN4dyld13RegisteredDOFESaIS1_EE5eraseEN9__gnu_cxx17__normal_iteratorIPS1_S3_EE", "std::vector>::erase(__gnu_cxx::__normal_iterator>>)"}, + {"_ZNSt12_Vector_baseIPKcSaIS1_EED2Ev", "std::_Vector_base>::~_Vector_base()"}, + {"_ZNSt6vectorIPKcSaIS1_EED2Ev", "std::vector>::~vector()"}, + + // {"_ZNSt12_Vector_baseIPFPKc17dyld_image_statesjPK15dyld_image_infoESaIS7_EED2Ev", + // "std::_Vector_base>::~_Vector_base()"}, + // got error + + + // {"_ZNSt6vectorIPFPKc17dyld_image_statesjPK15dyld_image_infoESaIS7_EED2Ev", + // "std::vector>::~vector()"}, + // got error + + + // {"_ZNSt12_Vector_baseIPFvPK11mach_headerlESaIS4_EED2Ev", + // "std::_Vector_base>::~_Vector_base()"}, + // got error + + + // {"_ZNSt6vectorIPFvPK11mach_headerlESaIS4_EED2Ev", + // "std::vector>::~vector()"}, + // got error + + {"_ZNSt12_Vector_baseIN4dyld13RegisteredDOFESaIS1_EED2Ev", "std::_Vector_base>::~_Vector_base()"}, + {"_ZNSt6vectorIN4dyld13RegisteredDOFESaIS1_EED2Ev", "std::vector>::~vector()"}, + {"_ZNSt12_Vector_baseIP11ImageLoaderSaIS1_EED2Ev", "std::_Vector_base>::~_Vector_base()"}, + {"_ZNSt6vectorIP11ImageLoaderSaIS1_EED2Ev", "std::vector>::~vector()"}, + + // {"_ZN9__gnu_cxx13new_allocatorIPFPKc17dyld_image_statesjPK15dyld_image_infoEE8allocateEmPKv", + // "__gnu_cxx::new_allocator::allocate(unsigned long, void const*)"}, + // "__gnu_cxx::new_allocator::allocate(unsigned long, void const*)" was returned + + + // {"_ZN9__gnu_cxx13new_allocatorIPFvPK11mach_headerlEE8allocateEmPKv", + // "__gnu_cxx::new_allocator::allocate(unsigned long, void const*)"}, + // "__gnu_cxx::new_allocator::allocate(unsigned long, void const*)" was returned + + {"_ZN9__gnu_cxx13new_allocatorIPKcE8allocateEmPKv", "__gnu_cxx::new_allocator::allocate(unsigned long, void const*)"}, + {"_ZN9__gnu_cxx13new_allocatorIP11ImageLoaderE8allocateEmPKv", "__gnu_cxx::new_allocator::allocate(unsigned long, void const*)"}, + {"_ZN9__gnu_cxx13new_allocatorIN4dyld13RegisteredDOFEE8allocateEmPKv", "__gnu_cxx::new_allocator::allocate(unsigned long, void const*)"}, + {"_ZNSt6vectorIN4dyld13RegisteredDOFESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, dyld::RegisteredDOF const&)"}, + {"_ZNSt6vectorIN4dyld13RegisteredDOFESaIS1_EE9push_backERKS1_", "std::vector>::push_back(dyld::RegisteredDOF const&)"}, + + // {"_ZSt18uninitialized_copyIPPFPKc17dyld_image_statesjPK15dyld_image_infoES8_ET0_T_SA_S9_", + // "char const* (**std::uninitialized_copy(char const* (**)(dyld_image_states, unsigned int, dyld_image_info const*), char const* (**)(dyld_image_states, unsigned int, dyld_image_info const*), char const* (**)(dyld_image_states, unsigned int, dyld_image_info const*)))(dyld_image_states, unsigned int, dyld_image_info const*)"}, + // got error + + + // {"_ZSt18uninitialized_copyIPPFvPK11mach_headerlES5_ET0_T_S7_S6_", + // "void (**std::uninitialized_copy(void (**)(mach_header const*, long), void (**)(mach_header const*, long), void (**)(mach_header const*, long)))(mach_header const*, long)"}, + // got error + + + // {"_ZSt18uninitialized_copyIPPKcS2_ET0_T_S4_S3_", + // "char const** std::uninitialized_copy(char const**, char const**, char const**)"}, + // got error + + + // {"_ZNSt15__copy_backwardILb1ESt26random_access_iterator_tagE8__copy_bIPFPKc17dyld_image_statesjPK15dyld_image_infoEEEPT_PKSB_SE_SC_", + // "char const* (**std::__copy_backward::__copy_b(char const* (* const*)(dyld_image_states, unsigned int, dyld_image_info const*), char const* (* const*)(dyld_image_states, unsigned int, dyld_image_info const*), char const* (**)(dyld_image_states, unsigned int, dyld_image_info const*)))(dyld_image_states, unsigned int, dyld_image_info const*)"}, + // got error + + + // {"_ZNSt6vectorIPFPKc17dyld_image_statesjPK15dyld_image_infoESaIS7_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS7_S9_EERKS7_", + // "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, char const* (* const&)(dyld_image_states, unsigned int, dyld_image_info const*))"}, + // got error + + + // {"_ZNSt6vectorIPFPKc17dyld_image_statesjPK15dyld_image_infoESaIS7_EE6insertEN9__gnu_cxx17__normal_iteratorIPS7_S9_EERKS7_", + // "std::vector>::insert(__gnu_cxx::__normal_iterator>>, char const* (* const&)(dyld_image_states, unsigned int, dyld_image_info const*))"}, + // got error + + + // {"_ZNSt6vectorIPFPKc17dyld_image_statesjPK15dyld_image_infoESaIS7_EE9push_backERKS7_", + // "std::vector>::push_back(char const* (* const&)(dyld_image_states, unsigned int, dyld_image_info const*))"}, + // got error + + + // {"_ZNSt15__copy_backwardILb1ESt26random_access_iterator_tagE8__copy_bIPFvPK11mach_headerlEEEPT_PKS8_SB_S9_", + // "void (**std::__copy_backward::__copy_b(void (* const*)(mach_header const*, long), void (* const*)(mach_header const*, long), void (**)(mach_header const*, long)))(mach_header const*, long)"}, + // got error + + + // {"_ZNSt6vectorIPFvPK11mach_headerlESaIS4_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS4_S6_EERKS4_", + // "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, void (* const&)(mach_header const*, long))"}, + // got error + + + // {"_ZNSt6vectorIPFvPK11mach_headerlESaIS4_EE9push_backERKS4_", + // "std::vector>::push_back(void (* const&)(mach_header const*, long))"}, + // got error + + + // {"_ZNSt15__copy_backwardILb1ESt26random_access_iterator_tagE8__copy_bIPKcEEPT_PKS5_S8_S6_", + // "char const** std::__copy_backward::__copy_b(char const* const*, char const* const*, char const**)"}, + // "true* std::__copy_backward::__copy_b(true const*, true const*, true*)" was returned + + {"_ZNSt6vectorIPKcSaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, char const* const&)"}, + {"_ZNSt6vectorIPKcSaIS1_EE9push_backERKS1_", "std::vector>::push_back(char const* const&)"}, + + // {"_ZNSt15__copy_backwardILb1ESt26random_access_iterator_tagE8__copy_bIP11ImageLoaderEEPT_PKS5_S8_S6_", + // "ImageLoader** std::__copy_backward::__copy_b(ImageLoader* const*, ImageLoader* const*, ImageLoader**)"}, + // "true* std::__copy_backward::__copy_b(true const*, true const*, true*)" was returned + + + // {"_ZNSt6vectorIPFvPK11mach_headerlESaIS4_EE20_M_allocate_and_copyIPS4_EES8_mT_S9_", + // "void (**std::vector>::_M_allocate_and_copy(unsigned long, void (**)(mach_header const*, long), void (**)(mach_header const*, long)))(mach_header const*, long)"}, + // got error + + + // {"_ZNSt6vectorIPFvPK11mach_headerlESaIS4_EE7reserveEm", + // "std::vector>::reserve(unsigned long)"}, + // got error + + + // {"_ZNSt6vectorIN4dyld13RegisteredDOFESaIS1_EE20_M_allocate_and_copyIPS1_EES5_mT_S6_", + // "dyld::RegisteredDOF* std::vector>::_M_allocate_and_copy(unsigned long, dyld::RegisteredDOF*, dyld::RegisteredDOF*)"}, + // got error + + {"_ZNSt6vectorIN4dyld13RegisteredDOFESaIS1_EE7reserveEm", "std::vector>::reserve(unsigned long)"}, + + // {"_ZSt18uninitialized_copyIPP11ImageLoaderS2_ET0_T_S4_S3_", + // "ImageLoader** std::uninitialized_copy(ImageLoader**, ImageLoader**, ImageLoader**)"}, + // got error + + + // {"_ZNSt6vectorIP11ImageLoaderSaIS1_EE20_M_allocate_and_copyIPS1_EES5_mT_S6_", + // "ImageLoader** std::vector>::_M_allocate_and_copy(unsigned long, ImageLoader**, ImageLoader**)"}, + // got error + + {"_ZNSt6vectorIP11ImageLoaderSaIS1_EE7reserveEm", "std::vector>::reserve(unsigned long)"}, + {"_ZNSt6vectorIP11ImageLoaderSaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, ImageLoader* const&)"}, + {"_ZNSt6vectorIP11ImageLoaderSaIS1_EE9push_backERKS1_", "std::vector>::push_back(ImageLoader* const&)"}, + {"_ZNSt6vectorIP11ImageLoaderSaIS1_EE5eraseEN9__gnu_cxx17__normal_iteratorIPS1_S3_EE", "std::vector>::erase(__gnu_cxx::__normal_iterator>>)"}, + {"_Z18lookupDyldFunctionPKcPm", "lookupDyldFunction(char const*, unsigned long*)"}, + {"_ZNSt12_Vector_baseIP19__NSObjectFileImageSaIS1_EED2Ev", "std::_Vector_base<__NSObjectFileImage*, std::allocator<__NSObjectFileImage*>>::~_Vector_base()"}, + {"_ZNSt6vectorIP19__NSObjectFileImageSaIS1_EED2Ev", "std::vector<__NSObjectFileImage*, std::allocator<__NSObjectFileImage*>>::~vector()"}, + + // {"_ZNSt15__copy_backwardILb1ESt26random_access_iterator_tagE8__copy_bIP19__NSObjectFileImageEEPT_PKS5_S8_S6_", + // "__NSObjectFileImage** std::__copy_backward::__copy_b<__NSObjectFileImage*>(__NSObjectFileImage* const*, __NSObjectFileImage* const*, __NSObjectFileImage**)"}, + // "true* std::__copy_backward::__copy_b<__NSObjectFileImage*>(true const*, true const*, true*)" was returned + + {"_ZN9__gnu_cxx13new_allocatorIP19__NSObjectFileImageE8allocateEmPKv", "__gnu_cxx::new_allocator<__NSObjectFileImage*>::allocate(unsigned long, void const*)"}, + {"_ZNSt6vectorIP19__NSObjectFileImageSaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector<__NSObjectFileImage*, std::allocator<__NSObjectFileImage*>>::_M_insert_aux(__gnu_cxx::__normal_iterator<__NSObjectFileImage**, std::vector<__NSObjectFileImage*, std::allocator<__NSObjectFileImage*>>>, __NSObjectFileImage* const&)"}, + {"_ZNSt6vectorIP19__NSObjectFileImageSaIS1_EE9push_backERKS1_", "std::vector<__NSObjectFileImage*, std::allocator<__NSObjectFileImage*>>::push_back(__NSObjectFileImage* const&)"}, + {"_ZNSt6vectorIP19__NSObjectFileImageSaIS1_EE5eraseEN9__gnu_cxx17__normal_iteratorIPS1_S3_EE", "std::vector<__NSObjectFileImage*, std::allocator<__NSObjectFileImage*>>::erase(__gnu_cxx::__normal_iterator<__NSObjectFileImage**, std::vector<__NSObjectFileImage*, std::allocator<__NSObjectFileImage*>>>)"}, + {"_Z19setAlImageInfosHaltPKcm", "setAlImageInfosHalt(char const*, unsigned long)"}, + {"_Z24removeImageFromAllImagesPK11mach_header", "removeImageFromAllImages(mach_header const*)"}, + {"_Z20addImagesToAllImagesjPK15dyld_image_info", "addImagesToAllImages(unsigned int, dyld_image_info const*)"}, + {"_ZNSt6vectorI15dyld_image_infoSaIS0_EE5eraseEN9__gnu_cxx17__normal_iteratorIPS0_S2_EE", "std::vector>::erase(__gnu_cxx::__normal_iterator>>)"}, + {"_ZNSt12_Vector_baseI15dyld_image_infoSaIS0_EED2Ev", "std::_Vector_base>::~_Vector_base()"}, + {"_ZNSt6vectorI15dyld_image_infoSaIS0_EED2Ev", "std::vector>::~vector()"}, + {"_ZN9__gnu_cxx13new_allocatorI15dyld_image_infoE8allocateEmPKv", "__gnu_cxx::new_allocator::allocate(unsigned long, void const*)"}, + + // {"_ZNSt6vectorI15dyld_image_infoSaIS0_EE20_M_allocate_and_copyIPS0_EES4_mT_S5_", + // "dyld_image_info* std::vector>::_M_allocate_and_copy(unsigned long, dyld_image_info*, dyld_image_info*)"}, + // got error + + {"_ZNSt6vectorI15dyld_image_infoSaIS0_EE7reserveEm", "std::vector>::reserve(unsigned long)"}, + {"_ZNSt6vectorI15dyld_image_infoSaIS0_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS0_S2_EERKS0_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, dyld_image_info const&)"}, + {"_ZNSt6vectorI15dyld_image_infoSaIS0_EE9push_backERKS0_", "std::vector>::push_back(dyld_image_info const&)"}, + {"_ZN10__cxxabiv112__unexpectedEPFvvE", "__cxxabiv1::__unexpected(void (*)())"}, + {"_ZN10__cxxabiv111__terminateEPFvvE", "__cxxabiv1::__terminate(void (*)())"}, + {"_ZSt10unexpectedv", "std::unexpected()"}, + {"_ZSt9terminatev", "std::terminate()"}, + {"_ZN11ImageLoaderC2EPKcj", "ImageLoader::ImageLoader(char const*, unsigned int)"}, + {"_ZN11ImageLoader11deleteImageEPS_", "ImageLoader::deleteImage(ImageLoader*)"}, + {"_ZN11ImageLoader11setFileInfoEiyl", "ImageLoader::setFileInfo(int, unsigned long long, long)"}, + {"_ZN11ImageLoader9setMappedERKNS_11LinkContextE", "ImageLoader::setMapped(ImageLoader::LinkContext const&)"}, + {"_ZNK11ImageLoader7compareEPKS_", "ImageLoader::compare(ImageLoader const*) const"}, + {"_ZN11ImageLoader4hashEPKc", "ImageLoader::hash(char const*)"}, + {"_ZNK11ImageLoader16matchInstallPathEv", "ImageLoader::matchInstallPath() const"}, + {"_ZN11ImageLoader19setMatchInstallPathEb", "ImageLoader::setMatchInstallPath(bool)"}, + {"_ZNK11ImageLoader9statMatchERK4stat", "ImageLoader::statMatch(stat const&) const"}, + {"_ZN11ImageLoader14setLeaveMappedEv", "ImageLoader::setLeaveMapped()"}, + {"_ZN11ImageLoader14setHideExportsEb", "ImageLoader::setHideExports(bool)"}, + {"_ZNK11ImageLoader16hasHiddenExportsEv", "ImageLoader::hasHiddenExports() const"}, + {"_ZNK11ImageLoader8isLinkedEv", "ImageLoader::isLinked() const"}, + {"_ZNK11ImageLoader12lastModifiedEv", "ImageLoader::lastModified() const"}, + {"_ZNK11ImageLoader24overlapsWithAddressRangeEPKvS1_", "ImageLoader::overlapsWithAddressRange(void const*, void const*) const"}, + {"_ZNK11ImageLoader16getMappedRegionsERPNS_12MappedRegionE", "ImageLoader::getMappedRegions(ImageLoader::MappedRegion*&) const"}, + {"_ZNK11ImageLoader41findExportedSymbolInDependentImagesExceptEPKcPPKS_RS4_S4_S4_", "ImageLoader::findExportedSymbolInDependentImagesExcept(char const*, ImageLoader const**, ImageLoader const**&, ImageLoader const**, ImageLoader const**) const"}, + {"_ZN11ImageLoader29decrementDlopenReferenceCountEv", "ImageLoader::decrementDlopenReferenceCount()"}, + {"_ZN11ImageLoader19bindAllLazyPointersERKNS_11LinkContextEb", "ImageLoader::bindAllLazyPointers(ImageLoader::LinkContext const&, bool)"}, + {"_ZNK11ImageLoader35allDependentLibrariesAsWhenPreBoundEv", "ImageLoader::allDependentLibrariesAsWhenPreBound() const"}, + {"_ZN11ImageLoader20recursiveUpdateDepthEj", "ImageLoader::recursiveUpdateDepth(unsigned int)"}, + {"_ZN11ImageLoader23recursiveGetDOFSectionsERKNS_11LinkContextERSt6vectorINS_7DOFInfoESaIS4_EE", "ImageLoader::recursiveGetDOFSections(ImageLoader::LinkContext const&, std::vector>&)"}, + {"_ZNK11ImageLoader12getShortNameEv", "ImageLoader::getShortName() const"}, + {"_ZN11ImageLoader9addSuffixEPKcS1_Pc", "ImageLoader::addSuffix(char const*, char const*, char*)"}, + {"_ZN11ImageLoader15printStatisticsEj", "ImageLoader::printStatistics(unsigned int)"}, + {"_ZN11ImageLoader13recursiveBindERKNS_11LinkContextEb", "ImageLoader::recursiveBind(ImageLoader::LinkContext const&, bool)"}, + {"_ZN11ImageLoader25recursiveApplyInterposingERKNS_11LinkContextE", "ImageLoader::recursiveApplyInterposing(ImageLoader::LinkContext const&)"}, + {"_ZN11ImageLoader16applyInterposingERKNS_11LinkContextE", "ImageLoader::applyInterposing(ImageLoader::LinkContext const&)"}, + {"_ZN11ImageLoader15recursiveRebaseERKNS_11LinkContextE", "ImageLoader::recursiveRebase(ImageLoader::LinkContext const&)"}, + {"_ZNK11ImageLoader42findExportedSymbolInImageOrDependentImagesEPKcRKNS_11LinkContextEPPKS_", "ImageLoader::findExportedSymbolInImageOrDependentImages(char const*, ImageLoader::LinkContext const&, ImageLoader const**) const"}, + {"_ZNK11ImageLoader35findExportedSymbolInDependentImagesEPKcRKNS_11LinkContextEPPKS_", "ImageLoader::findExportedSymbolInDependentImages(char const*, ImageLoader::LinkContext const&, ImageLoader const**) const"}, + {"_ZN11ImageLoader8reExportEPS_", "ImageLoader::reExport(ImageLoader*)"}, + {"_ZN11ImageLoader19addDynamicReferenceEPKS_", "ImageLoader::addDynamicReference(ImageLoader const*)"}, + {"_ZN11ImageLoader14setPathUnownedEPKc", "ImageLoader::setPathUnowned(char const*)"}, + {"_ZN11ImageLoader7setPathEPKc", "ImageLoader::setPath(char const*)"}, + {"_ZN11ImageLoaderD0Ev", "ImageLoader::~ImageLoader()"}, + {"_ZNK11ImageLoader15containsAddressEPKv", "ImageLoader::containsAddress(void const*) const"}, + {"_ZN11ImageLoaderD2Ev", "ImageLoader::~ImageLoader()"}, + {"_ZN11ImageLoaderD1Ev", "ImageLoader::~ImageLoader()"}, + {"_ZN11ImageLoader23recursiveInitializationERKNS_11LinkContextEj", "ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&, unsigned int)"}, + {"_ZN11ImageLoader15runInitializersERKNS_11LinkContextE", "ImageLoader::runInitializers(ImageLoader::LinkContext const&)"}, + {"_ZN11ImageLoader8weakBindERKNS_11LinkContextE", "ImageLoader::weakBind(ImageLoader::LinkContext const&)"}, + {"_ZN11ImageLoader22recursiveLoadLibrariesERKNS_11LinkContextEbRKNS_10RPathChainE", "ImageLoader::recursiveLoadLibraries(ImageLoader::LinkContext const&, bool, ImageLoader::RPathChain const&)"}, + {"_ZN11ImageLoader4linkERKNS_11LinkContextEbbRKNS_10RPathChainE", "ImageLoader::link(ImageLoader::LinkContext const&, bool, bool, ImageLoader::RPathChain const&)"}, + {"_ZNSt12_Vector_baseIN11ImageLoader7DOFInfoESaIS1_EED2Ev", "std::_Vector_base>::~_Vector_base()"}, + {"_ZNSt6vectorIN11ImageLoader7DOFInfoESaIS1_EED2Ev", "std::vector>::~vector()"}, + {"_ZNSt8_Rb_treeIPK11ImageLoaderS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE8_M_eraseEPSt13_Rb_tree_nodeIS2_E", "std::_Rb_tree, std::less, std::allocator>::_M_erase(std::_Rb_tree_node*)"}, + {"_ZNSt12_Vector_baseIN11ImageLoader14InterposeTupleESaIS1_EED2Ev", "std::_Vector_base>::~_Vector_base()"}, + {"_ZNSt6vectorIN11ImageLoader14InterposeTupleESaIS1_EED2Ev", "std::vector>::~vector()"}, + {"_ZNSt12_Vector_baseISt4pairIP11ImageLoaderS2_ESaIS3_EED2Ev", "std::_Vector_base, std::allocator>>::~_Vector_base()"}, + {"_ZNSt6vectorISt4pairIP11ImageLoaderS2_ESaIS3_EED2Ev", "std::vector, std::allocator>>::~vector()"}, + {"_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeIPK11ImageLoaderEE8allocateEmPKv", "__gnu_cxx::new_allocator>::allocate(unsigned long, void const*)"}, + {"_ZNSt8_Rb_treeIPK11ImageLoaderS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE14_M_create_nodeERKS2_", "std::_Rb_tree, std::less, std::allocator>::_M_create_node(ImageLoader const* const&)"}, + {"_ZN9__gnu_cxx13new_allocatorISt4pairIP11ImageLoaderS3_EE8allocateEmPKv", "__gnu_cxx::new_allocator>::allocate(unsigned long, void const*)"}, + {"_ZNSt6vectorISt4pairIP11ImageLoaderS2_ESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + {"_ZNSt6vectorISt4pairIP11ImageLoaderS2_ESaIS3_EE9push_backERKS3_", "std::vector, std::allocator>>::push_back(std::pair const&)"}, + {"_ZNSt8_Rb_treeIPK11ImageLoaderS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE9_M_insertEPSt18_Rb_tree_node_baseSA_RKS2_", "std::_Rb_tree, std::less, std::allocator>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, ImageLoader const* const&)"}, + {"_ZNSt8_Rb_treeIPK11ImageLoaderS2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE16_M_insert_uniqueERKS2_", "std::_Rb_tree, std::less, std::allocator>::_M_insert_unique(ImageLoader const* const&)"}, + {"_ZNK16ImageLoaderMachO12segmentCountEv", "ImageLoaderMachO::segmentCount() const"}, + {"_ZN16ImageLoaderMachO22segHasTrailingZeroFillEj", "ImageLoaderMachO::segHasTrailingZeroFill(unsigned int)"}, + {"_ZNK16ImageLoaderMachO19segActualEndAddressEj", "ImageLoaderMachO::segActualEndAddress(unsigned int) const"}, + {"_ZNK16ImageLoaderMachO25segmentsMustSlideTogetherEv", "ImageLoaderMachO::segmentsMustSlideTogether() const"}, + {"_ZNK16ImageLoaderMachO16segmentsCanSlideEv", "ImageLoaderMachO::segmentsCanSlide() const"}, + {"_ZNK16ImageLoaderMachO8isBundleEv", "ImageLoaderMachO::isBundle() const"}, + {"_ZNK16ImageLoaderMachO7isDylibEv", "ImageLoaderMachO::isDylib() const"}, + {"_ZNK16ImageLoaderMachO12isExecutableEv", "ImageLoaderMachO::isExecutable() const"}, + {"_ZNK16ImageLoaderMachO31isPositionIndependentExecutableEv", "ImageLoaderMachO::isPositionIndependentExecutable() const"}, + {"_ZNK16ImageLoaderMachO9forceFlatEv", "ImageLoaderMachO::forceFlat() const"}, + {"_ZNK16ImageLoaderMachO21usesTwoLevelNameSpaceEv", "ImageLoaderMachO::usesTwoLevelNameSpace() const"}, + {"_ZNK16ImageLoaderMachO13isPrebindableEv", "ImageLoaderMachO::isPrebindable() const"}, + {"_ZNK16ImageLoaderMachO19hasCoalescedExportsEv", "ImageLoaderMachO::hasCoalescedExports() const"}, + {"_ZN16ImageLoaderMachO8setSlideEl", "ImageLoaderMachO::setSlide(long)"}, + {"_ZNK16ImageLoaderMachO14getInstallPathEv", "ImageLoaderMachO::getInstallPath() const"}, + {"_ZNK16ImageLoaderMachO7getMainEv", "ImageLoaderMachO::getMain() const"}, + {"_ZN16ImageLoaderMachO16doGetLibraryInfoEv", "ImageLoaderMachO::doGetLibraryInfo()"}, + {"_ZNK16ImageLoaderMachO21getExportedSymbolInfoEPKN11ImageLoader6SymbolE", "ImageLoaderMachO::getExportedSymbolInfo(ImageLoader::Symbol const*) const"}, + {"_ZNK16ImageLoaderMachO21getExportedSymbolNameEPKN11ImageLoader6SymbolE", "ImageLoaderMachO::getExportedSymbolName(ImageLoader::Symbol const*) const"}, + {"_ZNK16ImageLoaderMachO22getExportedSymbolCountEv", "ImageLoaderMachO::getExportedSymbolCount() const"}, + {"_ZNK16ImageLoaderMachO24getIndexedExportedSymbolEj", "ImageLoaderMachO::getIndexedExportedSymbol(unsigned int) const"}, + {"_ZNK16ImageLoaderMachO22getImportedSymbolCountEv", "ImageLoaderMachO::getImportedSymbolCount() const"}, + {"_ZNK16ImageLoaderMachO24getIndexedImportedSymbolEj", "ImageLoaderMachO::getIndexedImportedSymbol(unsigned int) const"}, + {"_ZNK16ImageLoaderMachO21getImportedSymbolInfoEPKN11ImageLoader6SymbolE", "ImageLoaderMachO::getImportedSymbolInfo(ImageLoader::Symbol const*) const"}, + {"_ZNK16ImageLoaderMachO21getImportedSymbolNameEPKN11ImageLoader6SymbolE", "ImageLoaderMachO::getImportedSymbolName(ImageLoader::Symbol const*) const"}, + {"_ZN16ImageLoaderMachO13getUnwindInfoEP20dyld_unwind_sections", "ImageLoaderMachO::getUnwindInfo(dyld_unwind_sections*)"}, + {"_ZN16ImageLoaderMachO11findSectionEPKvPPKcS4_Pm", "ImageLoaderMachO::findSection(void const*, char const**, char const**, unsigned long*)"}, + {"_ZNK16ImageLoaderMachO10machHeaderEv", "ImageLoaderMachO::machHeader() const"}, + {"_ZNK16ImageLoaderMachO8getSlideEv", "ImageLoaderMachO::getSlide() const"}, + {"_ZNK16ImageLoaderMachO17lookupProgramVarsERKN11ImageLoader11LinkContextE", "ImageLoaderMachO::lookupProgramVars(ImageLoader::LinkContext const&) const"}, + {"_ZN16ImageLoaderMachO19needsInitializationEv", "ImageLoaderMachO::needsInitialization()"}, + {"_ZN16ImageLoaderMachO16needsTerminationEv", "ImageLoaderMachO::needsTermination()"}, + {"_ZN16ImageLoaderMachO10segProtectEjRKN11ImageLoader11LinkContextE", "ImageLoaderMachO::segProtect(unsigned int, ImageLoader::LinkContext const&)"}, + {"_ZN16ImageLoaderMachO18doModInitFunctionsERKN11ImageLoader11LinkContextE", "ImageLoaderMachO::doModInitFunctions(ImageLoader::LinkContext const&)"}, + {"_ZN16ImageLoaderMachO11doImageInitERKN11ImageLoader11LinkContextE", "ImageLoaderMachO::doImageInit(ImageLoader::LinkContext const&)"}, + {"_ZN16ImageLoaderMachO16doInitializationERKN11ImageLoader11LinkContextE", "ImageLoaderMachO::doInitialization(ImageLoader::LinkContext const&)"}, + + // {"_ZNK16ImageLoaderMachO16getSymbolAddressEPKN11ImageLoader6SymbolEPKS0_RKNS0_11LinkContextE", + // "ImageLoaderMachO::getSymbolAddress(ImageLoader::Symbol const*, ImageLoader const*, ImageLoader::LinkContext const&) const"}, + // "ImageLoaderMachO::getSymbolAddress(ImageLoader::Symbol const*, ImageLoader::Symbol const*, ImageLoader::Symbol::LinkContext const&) const" was returned + + + // {"_ZNK16ImageLoaderMachO24getExportedSymbolAddressEPKN11ImageLoader6SymbolERKNS0_11LinkContextEPKS0_", + // "ImageLoaderMachO::getExportedSymbolAddress(ImageLoader::Symbol const*, ImageLoader::LinkContext const&, ImageLoader const*) const"}, + // "ImageLoaderMachO::getExportedSymbolAddress(ImageLoader::Symbol const*, ImageLoader::Symbol::LinkContext const&, ImageLoader::Symbol const*) const" was returned + + {"_ZN16ImageLoaderMachO19throwSymbolNotFoundEPKcS1_S1_", "ImageLoaderMachO::throwSymbolNotFound(char const*, char const*, char const*)"}, + {"_ZN16ImageLoaderMachO21reserveAnAddressRangeEmRKN11ImageLoader11LinkContextE", "ImageLoaderMachO::reserveAnAddressRange(unsigned long, ImageLoader::LinkContext const&)"}, + {"_ZN16ImageLoaderMachO23setupLazyPointerHandlerERKN11ImageLoader11LinkContextE", "ImageLoaderMachO::setupLazyPointerHandler(ImageLoader::LinkContext const&)"}, + {"_ZNK16ImageLoaderMachO6getEndEv", "ImageLoaderMachO::getEnd() const"}, + {"_ZN16ImageLoaderMachO17getSectionContentEPKcS1_PPvPm", "ImageLoaderMachO::getSectionContent(char const*, char const*, void**, unsigned long*)"}, + {"_ZN16ImageLoaderMachO13parseLoadCmdsEv", "ImageLoaderMachO::parseLoadCmds()"}, + {"_ZN16ImageLoaderMachO15printStatisticsEj", "ImageLoaderMachO::printStatistics(unsigned int)"}, + + // {"_ZN16ImageLoaderMachO12bindLocationERKN11ImageLoader11LinkContextEmmPKS0_hPKclS7_", + // "ImageLoaderMachO::bindLocation(ImageLoader::LinkContext const&, unsigned long, unsigned long, ImageLoader const*, unsigned char, char const*, long, char const*)"}, + // got error + + + // {"_ZN16ImageLoaderMachO16doGetDOFSectionsERKN11ImageLoader11LinkContextERSt6vectorINS0_7DOFInfoESaIS5_EE", + // "ImageLoaderMachO::doGetDOFSections(ImageLoader::LinkContext const&, std::vector>&)"}, + // got error + + {"_ZNK16ImageLoaderMachO16usablePrebindingERKN11ImageLoader11LinkContextE", "ImageLoaderMachO::usablePrebinding(ImageLoader::LinkContext const&) const"}, + {"_ZNK16ImageLoaderMachO7getUUIDEPh", "ImageLoaderMachO::getUUID(unsigned char*) const"}, + {"_ZN16ImageLoaderMachO26needsAddedLibSystemDepencyEjPK12macho_header", "ImageLoaderMachO::needsAddedLibSystemDepency(unsigned int, macho_header const*)"}, + {"_ZN16ImageLoaderMachO23doGetDependentLibrariesEPN11ImageLoader20DependentLibraryInfoE", "ImageLoaderMachO::doGetDependentLibraries(ImageLoader::DependentLibraryInfo*)"}, + {"_ZN16ImageLoaderMachO17sniffLoadCommandsEPK12macho_headerPKcPbPjS6_", "ImageLoaderMachO::sniffLoadCommands(macho_header const*, char const*, bool*, unsigned int*, unsigned int*)"}, + {"_ZNK16ImageLoaderMachO24participatesInCoalescingEv", "ImageLoaderMachO::participatesInCoalescing() const"}, + {"_ZN16ImageLoaderMachO12preFetchDATAEiyRKN11ImageLoader11LinkContextE", "ImageLoaderMachO::preFetchDATA(int, unsigned long long, ImageLoader::LinkContext const&)"}, + {"_ZN16ImageLoaderMachO13UnmapSegmentsEv", "ImageLoaderMachO::UnmapSegments()"}, + {"_ZN16ImageLoaderMachO7destroyEv", "ImageLoaderMachO::destroy()"}, + {"_ZN16ImageLoaderMachO21instantiateFromMemoryEPKcPK12macho_headeryRKN11ImageLoader11LinkContextE", "ImageLoaderMachO::instantiateFromMemory(char const*, macho_header const*, unsigned long long, ImageLoader::LinkContext const&)"}, + {"_ZN16ImageLoaderMachO20instantiateFromCacheEPK12macho_headerPKcRK4statRKN11ImageLoader11LinkContextE", "ImageLoaderMachO::instantiateFromCache(macho_header const*, char const*, stat const&, ImageLoader::LinkContext const&)"}, + {"_ZN16ImageLoaderMachO19instantiateFromFileEPKciPKhyyRK4statRKN11ImageLoader11LinkContextE", "ImageLoaderMachO::instantiateFromFile(char const*, int, unsigned char const*, unsigned long long, unsigned long long, stat const&, ImageLoader::LinkContext const&)"}, + {"_ZN16ImageLoaderMachO25instantiateMainExecutableEPK12macho_headermPKcRKN11ImageLoader11LinkContextE", "ImageLoaderMachO::instantiateMainExecutable(macho_header const*, unsigned long, char const*, ImageLoader::LinkContext const&)"}, + {"_ZN16ImageLoaderMachOC2EPK12macho_headerPKcjPjj", "ImageLoaderMachO::ImageLoaderMachO(macho_header const*, char const*, unsigned int, unsigned int*, unsigned int)"}, + {"_ZN16ImageLoaderMachO13doTerminationERKN11ImageLoader11LinkContextE", "ImageLoaderMachO::doTermination(ImageLoader::LinkContext const&)"}, + {"_ZN16ImageLoaderMachO8doRebaseERKN11ImageLoader11LinkContextE", "ImageLoaderMachO::doRebase(ImageLoader::LinkContext const&)"}, + + // {"_ZNK16ImageLoaderMachO9getRPathsERKN11ImageLoader11LinkContextERSt6vectorIPKcSaIS6_EE", + // "ImageLoaderMachO::getRPaths(ImageLoader::LinkContext const&, std::vector>&) const"}, + // got error + + {"_ZN16ImageLoaderMachO19registerInterposingEv", "ImageLoaderMachO::registerInterposing()"}, + {"_ZNK16ImageLoaderMachO18findExportedSymbolEPKcbPPK11ImageLoader", "ImageLoaderMachO::findExportedSymbol(char const*, bool, ImageLoader const**) const"}, + {"_ZN16ImageLoaderMachO22assignSegmentAddressesERKN11ImageLoader11LinkContextE", "ImageLoaderMachO::assignSegmentAddresses(ImageLoader::LinkContext const&)"}, + {"_ZN16ImageLoaderMachO11mapSegmentsEPKvyRKN11ImageLoader11LinkContextE", "ImageLoaderMachO::mapSegments(void const*, unsigned long long, ImageLoader::LinkContext const&)"}, + {"_ZN16ImageLoaderMachO11mapSegmentsEiyyyRKN11ImageLoader11LinkContextE", "ImageLoaderMachO::mapSegments(int, unsigned long long, unsigned long long, unsigned long long, ImageLoader::LinkContext const&)"}, + {"_ZNK16ImageLoaderMachO23segPreferredLoadAddressEj", "ImageLoaderMachO::segPreferredLoadAddress(unsigned int) const"}, + {"_ZNK16ImageLoaderMachO26segHasPreferredLoadAddressEj", "ImageLoaderMachO::segHasPreferredLoadAddress(unsigned int) const"}, + {"_ZNK16ImageLoaderMachO15segUnaccessibleEj", "ImageLoaderMachO::segUnaccessible(unsigned int) const"}, + {"_ZNK16ImageLoaderMachO13segExecutableEj", "ImageLoaderMachO::segExecutable(unsigned int) const"}, + {"_ZNK16ImageLoaderMachO20segActualLoadAddressEj", "ImageLoaderMachO::segActualLoadAddress(unsigned int) const"}, + {"_ZNK16ImageLoaderMachO7segSizeEj", "ImageLoaderMachO::segSize(unsigned int) const"}, + {"_ZNK16ImageLoaderMachO7segNameEj", "ImageLoaderMachO::segName(unsigned int) const"}, + {"_ZNK16ImageLoaderMachO12segWriteableEj", "ImageLoaderMachO::segWriteable(unsigned int) const"}, + {"_ZNK16ImageLoaderMachO11segReadableEj", "ImageLoaderMachO::segReadable(unsigned int) const"}, + {"_ZNK16ImageLoaderMachO13segFileOffsetEj", "ImageLoaderMachO::segFileOffset(unsigned int) const"}, + {"_ZNK16ImageLoaderMachO11segFileSizeEj", "ImageLoaderMachO::segFileSize(unsigned int) const"}, + {"_ZN16ImageLoaderMachOD2Ev", "ImageLoaderMachO::~ImageLoaderMachO()"}, + {"_ZN16ImageLoaderMachOD1Ev", "ImageLoaderMachO::~ImageLoaderMachO()"}, + {"_ZN16ImageLoaderMachOD0Ev", "ImageLoaderMachO::~ImageLoaderMachO()"}, + {"_ZN9__gnu_cxx13new_allocatorIN11ImageLoader7DOFInfoEE8allocateEmPKv", "__gnu_cxx::new_allocator::allocate(unsigned long, void const*)"}, + {"_ZN9__gnu_cxx13new_allocatorIN11ImageLoader14InterposeTupleEE8allocateEmPKv", "__gnu_cxx::new_allocator::allocate(unsigned long, void const*)"}, + {"_ZNSt6vectorIN11ImageLoader7DOFInfoESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, ImageLoader::DOFInfo const&)"}, + {"_ZNSt6vectorIN11ImageLoader7DOFInfoESaIS1_EE9push_backERKS1_", "std::vector>::push_back(ImageLoader::DOFInfo const&)"}, + {"_ZNSt6vectorIN11ImageLoader14InterposeTupleESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, ImageLoader::InterposeTuple const&)"}, + {"_ZNSt6vectorIN11ImageLoader14InterposeTupleESaIS1_EE9push_backERKS1_", "std::vector>::push_back(ImageLoader::InterposeTuple const&)"}, + {"_ZNK23ImageLoaderMachOClassic21segmentCommandOffsetsEv", "ImageLoaderMachOClassic::segmentCommandOffsets() const"}, + {"_ZNK23ImageLoaderMachOClassic8libImageEj", "ImageLoaderMachOClassic::libImage(unsigned int) const"}, + {"_ZNK23ImageLoaderMachOClassic13libReExportedEj", "ImageLoaderMachOClassic::libReExported(unsigned int) const"}, + {"_ZN23ImageLoaderMachOClassic11setLibImageEjP11ImageLoaderb", "ImageLoaderMachOClassic::setLibImage(unsigned int, ImageLoader*, bool)"}, + {"_ZN23ImageLoaderMachOClassic18setSymbolTableInfoEPK11macho_nlistPKcPK16dysymtab_command", "ImageLoaderMachOClassic::setSymbolTableInfo(macho_nlist const*, char const*, dysymtab_command const*)"}, + {"_ZNK23ImageLoaderMachOClassic14containsSymbolEPKv", "ImageLoaderMachOClassic::containsSymbol(void const*) const"}, + {"_ZNK23ImageLoaderMachOClassic21exportedSymbolAddressEPKN11ImageLoader6SymbolE", "ImageLoaderMachOClassic::exportedSymbolAddress(ImageLoader::Symbol const*) const"}, + {"_ZNK23ImageLoaderMachOClassic29exportedSymbolIsWeakDefintionEPKN11ImageLoader6SymbolE", "ImageLoaderMachOClassic::exportedSymbolIsWeakDefintion(ImageLoader::Symbol const*) const"}, + {"_ZNK23ImageLoaderMachOClassic18exportedSymbolNameEPKN11ImageLoader6SymbolE", "ImageLoaderMachOClassic::exportedSymbolName(ImageLoader::Symbol const*) const"}, + {"_ZNK23ImageLoaderMachOClassic19exportedSymbolCountEv", "ImageLoaderMachOClassic::exportedSymbolCount() const"}, + {"_ZNK23ImageLoaderMachOClassic21exportedSymbolIndexedEj", "ImageLoaderMachOClassic::exportedSymbolIndexed(unsigned int) const"}, + {"_ZNK23ImageLoaderMachOClassic19importedSymbolCountEv", "ImageLoaderMachOClassic::importedSymbolCount() const"}, + {"_ZNK23ImageLoaderMachOClassic21importedSymbolIndexedEj", "ImageLoaderMachOClassic::importedSymbolIndexed(unsigned int) const"}, + {"_ZNK23ImageLoaderMachOClassic18importedSymbolNameEPKN11ImageLoader6SymbolE", "ImageLoaderMachOClassic::importedSymbolName(ImageLoader::Symbol const*) const"}, + {"_ZN23ImageLoaderMachOClassic22initializeCoalIteratorERN11ImageLoader12CoalIteratorEj", "ImageLoaderMachOClassic::initializeCoalIterator(ImageLoader::CoalIterator&, unsigned int)"}, + {"_ZN23ImageLoaderMachOClassic21incrementCoalIteratorERN11ImageLoader12CoalIteratorE", "ImageLoaderMachOClassic::incrementCoalIterator(ImageLoader::CoalIterator&)"}, + + // {"_ZN23ImageLoaderMachOClassic22getAddressCoalIteratorERN11ImageLoader12CoalIteratorERKNS0_11LinkContextE", + // "ImageLoaderMachOClassic::getAddressCoalIterator(ImageLoader::CoalIterator&, ImageLoader::LinkContext const&)"}, + // "ImageLoaderMachOClassic::getAddressCoalIterator(ImageLoader::CoalIterator&, ImageLoader::CoalIterator::LinkContext const&)" was returned + + {"_ZNK23ImageLoaderMachOClassic17findClosestSymbolEPKvPS1_", "ImageLoaderMachOClassic::findClosestSymbol(void const*, void const**) const"}, + {"_ZN23ImageLoaderMachOClassic20doBindFastLazySymbolEjRKN11ImageLoader11LinkContextE", "ImageLoaderMachOClassic::doBindFastLazySymbol(unsigned int, ImageLoader::LinkContext const&)"}, + {"_ZN23ImageLoaderMachOClassic30getFirstWritableSegmentAddressEv", "ImageLoaderMachOClassic::getFirstWritableSegmentAddress()"}, + + // {"_ZN23ImageLoaderMachOClassic18bindIndirectSymbolEPmPK13macho_sectionPKcmPK11ImageLoaderRKNS6_11LinkContextE", + // "ImageLoaderMachOClassic::bindIndirectSymbol(unsigned long*, macho_section const*, char const*, unsigned long, ImageLoader const*, ImageLoader::LinkContext const&)"}, + // "ImageLoaderMachOClassic::bindIndirectSymbol(unsigned long*, macho_section const*, char const*, unsigned long, ImageLoader const*, ImageLoader const::LinkContext const&)" was returned + + {"_ZNK23ImageLoaderMachOClassic12binarySearchEPKcS1_PK11macho_nlistj", "ImageLoaderMachOClassic::binarySearch(char const*, char const*, macho_nlist const*, unsigned int) const"}, + {"_ZNK23ImageLoaderMachOClassic19binarySearchWithTocEPKcS1_PK11macho_nlistPK23dylib_table_of_contentsjj", "ImageLoaderMachOClassic::binarySearchWithToc(char const*, char const*, macho_nlist const*, dylib_table_of_contents const*, unsigned int, unsigned int) const"}, + {"_ZNK23ImageLoaderMachOClassic18findExportedSymbolEPKcPPK11ImageLoader", "ImageLoaderMachOClassic::findExportedSymbol(char const*, ImageLoader const**) const"}, + + // {"_ZNK23ImageLoaderMachOClassic13hasSubLibraryERKN11ImageLoader11LinkContextEPKS0_", + // "ImageLoaderMachOClassic::hasSubLibrary(ImageLoader::LinkContext const&, ImageLoader const*) const"}, + // "ImageLoaderMachOClassic::hasSubLibrary(ImageLoader::LinkContext const&, ImageLoader::LinkContext const*) const" was returned + + + // {"_ZNK23ImageLoaderMachOClassic16isSubframeworkOfERKN11ImageLoader11LinkContextEPKS0_", + // "ImageLoaderMachOClassic::isSubframeworkOf(ImageLoader::LinkContext const&, ImageLoader const*) const"}, + // "ImageLoaderMachOClassic::isSubframeworkOf(ImageLoader::LinkContext const&, ImageLoader::LinkContext const*) const" was returned + + {"_ZN23ImageLoaderMachOClassic18mapSegmentsClassicEiyyyRKN11ImageLoader11LinkContextE", "ImageLoaderMachOClassic::mapSegmentsClassic(int, unsigned long long, unsigned long long, unsigned long long, ImageLoader::LinkContext const&)"}, + {"_ZN23ImageLoaderMachOClassic16prefetchLINKEDITERKN11ImageLoader11LinkContextE", "ImageLoaderMachOClassic::prefetchLINKEDIT(ImageLoader::LinkContext const&)"}, + {"_ZN23ImageLoaderMachOClassicD2Ev", "ImageLoaderMachOClassic::~ImageLoaderMachOClassic()"}, + {"_ZN23ImageLoaderMachOClassicD1Ev", "ImageLoaderMachOClassic::~ImageLoaderMachOClassic()"}, + {"_ZN23ImageLoaderMachOClassicD0Ev", "ImageLoaderMachOClassic::~ImageLoaderMachOClassic()"}, + {"_ZN23ImageLoaderMachOClassic17instantiateFinishERKN11ImageLoader11LinkContextE", "ImageLoaderMachOClassic::instantiateFinish(ImageLoader::LinkContext const&)"}, + {"_ZN23ImageLoaderMachOClassic6rebaseERKN11ImageLoader11LinkContextE", "ImageLoaderMachOClassic::rebase(ImageLoader::LinkContext const&)"}, + {"_ZN23ImageLoaderMachOClassic11doInterposeERKN11ImageLoader11LinkContextE", "ImageLoaderMachOClassic::doInterpose(ImageLoader::LinkContext const&)"}, + + // {"_ZN23ImageLoaderMachOClassic16resolveUndefinedERKN11ImageLoader11LinkContextEPK11macho_nlistbbPPKS0_", + // "ImageLoaderMachOClassic::resolveUndefined(ImageLoader::LinkContext const&, macho_nlist const*, bool, bool, ImageLoader const**)"}, + // "ImageLoaderMachOClassic::resolveUndefined(ImageLoader::LinkContext const&, macho_nlist const*, bool, bool, ImageLoader::LinkContext const**)" was returned + + {"_ZN23ImageLoaderMachOClassic26bindIndirectSymbolPointersERKN11ImageLoader11LinkContextEbb", "ImageLoaderMachOClassic::bindIndirectSymbolPointers(ImageLoader::LinkContext const&, bool, bool)"}, + {"_ZN23ImageLoaderMachOClassic16doBindJustLaziesERKN11ImageLoader11LinkContextE", "ImageLoaderMachOClassic::doBindJustLazies(ImageLoader::LinkContext const&)"}, + {"_ZN23ImageLoaderMachOClassic16doBindLazySymbolEPmRKN11ImageLoader11LinkContextE", "ImageLoaderMachOClassic::doBindLazySymbol(unsigned long*, ImageLoader::LinkContext const&)"}, + {"_ZN23ImageLoaderMachOClassic16instantiateStartEPK12macho_headerPKcjj", "ImageLoaderMachOClassic::instantiateStart(macho_header const*, char const*, unsigned int, unsigned int)"}, + {"_ZN23ImageLoaderMachOClassic21instantiateFromMemoryEPKcPK12macho_headeryjjRKN11ImageLoader11LinkContextE", "ImageLoaderMachOClassic::instantiateFromMemory(char const*, macho_header const*, unsigned long long, unsigned int, unsigned int, ImageLoader::LinkContext const&)"}, + {"_ZN23ImageLoaderMachOClassic20instantiateFromCacheEPK12macho_headerPKcRK4statjjRKN11ImageLoader11LinkContextE", "ImageLoaderMachOClassic::instantiateFromCache(macho_header const*, char const*, stat const&, unsigned int, unsigned int, ImageLoader::LinkContext const&)"}, + {"_ZN23ImageLoaderMachOClassic19instantiateFromFileEPKciPKhyyRK4statjjRKN11ImageLoader11LinkContextE", "ImageLoaderMachOClassic::instantiateFromFile(char const*, int, unsigned char const*, unsigned long long, unsigned long long, stat const&, unsigned int, unsigned int, ImageLoader::LinkContext const&)"}, + {"_ZN23ImageLoaderMachOClassic25instantiateMainExecutableEPK12macho_headermPKcjjRKN11ImageLoader11LinkContextE", "ImageLoaderMachOClassic::instantiateMainExecutable(macho_header const*, unsigned long, char const*, unsigned int, unsigned int, ImageLoader::LinkContext const&)"}, + + // {"_ZN23ImageLoaderMachOClassic22updateUsesCoalIteratorERN11ImageLoader12CoalIteratorEmPS0_RKNS0_11LinkContextE", + // "ImageLoaderMachOClassic::updateUsesCoalIterator(ImageLoader::CoalIterator&, unsigned long, ImageLoader*, ImageLoader::LinkContext const&)"}, + // "ImageLoaderMachOClassic::updateUsesCoalIterator(ImageLoader::CoalIterator&, unsigned long, ImageLoader::CoalIterator*, ImageLoader::CoalIterator::LinkContext const&)" was returned + + {"_ZN23ImageLoaderMachOClassic25doBindExternalRelocationsERKN11ImageLoader11LinkContextE", "ImageLoaderMachOClassic::doBindExternalRelocations(ImageLoader::LinkContext const&)"}, + {"_ZN23ImageLoaderMachOClassic6doBindERKN11ImageLoader11LinkContextEb", "ImageLoaderMachOClassic::doBind(ImageLoader::LinkContext const&, bool)"}, + {"_ZN23ImageLoaderMachOClassic11setDyldInfoEPK17dyld_info_command", "ImageLoaderMachOClassic::setDyldInfo(dyld_info_command const*)"}, + {"_ZNK26ImageLoaderMachOCompressed21segmentCommandOffsetsEv", "ImageLoaderMachOCompressed::segmentCommandOffsets() const"}, + {"_ZNK26ImageLoaderMachOCompressed8libImageEj", "ImageLoaderMachOCompressed::libImage(unsigned int) const"}, + {"_ZNK26ImageLoaderMachOCompressed13libReExportedEj", "ImageLoaderMachOCompressed::libReExported(unsigned int) const"}, + {"_ZN26ImageLoaderMachOCompressed11setLibImageEjP11ImageLoaderb", "ImageLoaderMachOCompressed::setLibImage(unsigned int, ImageLoader*, bool)"}, + {"_ZNK26ImageLoaderMachOCompressed14containsSymbolEPKv", "ImageLoaderMachOCompressed::containsSymbol(void const*) const"}, + {"_ZN26ImageLoaderMachOCompressed22initializeCoalIteratorERN11ImageLoader12CoalIteratorEj", "ImageLoaderMachOCompressed::initializeCoalIterator(ImageLoader::CoalIterator&, unsigned int)"}, + + // {"_ZN26ImageLoaderMachOCompressed22getAddressCoalIteratorERN11ImageLoader12CoalIteratorERKNS0_11LinkContextE", + // "ImageLoaderMachOCompressed::getAddressCoalIterator(ImageLoader::CoalIterator&, ImageLoader::LinkContext const&)"}, + // "ImageLoaderMachOCompressed::getAddressCoalIterator(ImageLoader::CoalIterator&, ImageLoader::CoalIterator::LinkContext const&)" was returned + + {"_ZNK26ImageLoaderMachOCompressed17findClosestSymbolEPKvPS1_", "ImageLoaderMachOCompressed::findClosestSymbol(void const*, void const**) const"}, + {"_ZNK26ImageLoaderMachOCompressed18importedSymbolNameEPKN11ImageLoader6SymbolE", "ImageLoaderMachOCompressed::importedSymbolName(ImageLoader::Symbol const*) const"}, + {"_ZNK26ImageLoaderMachOCompressed21importedSymbolIndexedEj", "ImageLoaderMachOCompressed::importedSymbolIndexed(unsigned int) const"}, + {"_ZNK26ImageLoaderMachOCompressed19importedSymbolCountEv", "ImageLoaderMachOCompressed::importedSymbolCount() const"}, + {"_ZNK26ImageLoaderMachOCompressed21exportedSymbolIndexedEj", "ImageLoaderMachOCompressed::exportedSymbolIndexed(unsigned int) const"}, + {"_ZNK26ImageLoaderMachOCompressed19exportedSymbolCountEv", "ImageLoaderMachOCompressed::exportedSymbolCount() const"}, + {"_ZNK26ImageLoaderMachOCompressed18exportedSymbolNameEPKN11ImageLoader6SymbolE", "ImageLoaderMachOCompressed::exportedSymbolName(ImageLoader::Symbol const*) const"}, + + // {"_ZN26ImageLoaderMachOCompressed15resolveTwolevelERKN11ImageLoader11LinkContextEPKS0_bPKcPS5_", + // "ImageLoaderMachOCompressed::resolveTwolevel(ImageLoader::LinkContext const&, ImageLoader const*, bool, char const*, ImageLoader const**)"}, + // "ImageLoaderMachOCompressed::resolveTwolevel(ImageLoader::LinkContext const&, ImageLoader::LinkContext const*, bool, char const*, char const**)" was returned + + + // {"_ZN26ImageLoaderMachOCompressed11resolveFlatERKN11ImageLoader11LinkContextEPKcbPPKS0_", + // "ImageLoaderMachOCompressed::resolveFlat(ImageLoader::LinkContext const&, char const*, bool, ImageLoader const**)"}, + // "ImageLoaderMachOCompressed::resolveFlat(ImageLoader::LinkContext const&, char const*, bool, ImageLoader::LinkContext const**)" was returned + + + // {"_ZN26ImageLoaderMachOCompressed7resolveERKN11ImageLoader11LinkContextEPKchiPPKS0_PNS_10LastLookupE", + // "ImageLoaderMachOCompressed::resolve(ImageLoader::LinkContext const&, char const*, unsigned char, int, ImageLoader const**, ImageLoaderMachOCompressed::LastLookup*)"}, + // "ImageLoaderMachOCompressed::resolve(ImageLoader::LinkContext const&, char const*, unsigned char, int, ImageLoader::LinkContext const**, ImageLoaderMachOCompressed::LastLookup*)" was returned + + + // {"_ZN26ImageLoaderMachOCompressed6bindAtERKN11ImageLoader11LinkContextEmhPKchliS5_PNS_10LastLookupE", + // "ImageLoaderMachOCompressed::bindAt(ImageLoader::LinkContext const&, unsigned long, unsigned char, char const*, unsigned char, long, int, char const*, ImageLoaderMachOCompressed::LastLookup*)"}, + // got error + + + // {"_ZN26ImageLoaderMachOCompressed11interposeAtERKN11ImageLoader11LinkContextEmhPKchliS5_PNS_10LastLookupE", + // "ImageLoaderMachOCompressed::interposeAt(ImageLoader::LinkContext const&, unsigned long, unsigned char, char const*, unsigned char, long, int, char const*, ImageLoaderMachOCompressed::LastLookup*)"}, + // got error + + {"_ZN26ImageLoaderMachOCompressed16instantiateStartEPK12macho_headerPKcjj", "ImageLoaderMachOCompressed::instantiateStart(macho_header const*, char const*, unsigned int, unsigned int)"}, + {"_ZN26ImageLoaderMachOCompressed16doBindLazySymbolEPmRKN11ImageLoader11LinkContextE", "ImageLoaderMachOCompressed::doBindLazySymbol(unsigned long*, ImageLoader::LinkContext const&)"}, + {"_ZN26ImageLoaderMachOCompressed20instantiateFromCacheEPK12macho_headerPKcRK4statjjRKN11ImageLoader11LinkContextE", "ImageLoaderMachOCompressed::instantiateFromCache(macho_header const*, char const*, stat const&, unsigned int, unsigned int, ImageLoader::LinkContext const&)"}, + {"_ZN26ImageLoaderMachOCompressed21instantiateFromMemoryEPKcPK12macho_headeryjjRKN11ImageLoader11LinkContextE", "ImageLoaderMachOCompressed::instantiateFromMemory(char const*, macho_header const*, unsigned long long, unsigned int, unsigned int, ImageLoader::LinkContext const&)"}, + {"_ZN26ImageLoaderMachOCompressed25instantiateMainExecutableEPK12macho_headermPKcjjRKN11ImageLoader11LinkContextE", "ImageLoaderMachOCompressed::instantiateMainExecutable(macho_header const*, unsigned long, char const*, unsigned int, unsigned int, ImageLoader::LinkContext const&)"}, + {"_ZN26ImageLoaderMachOCompressedD0Ev", "ImageLoaderMachOCompressed::~ImageLoaderMachOCompressed()"}, + {"_ZN26ImageLoaderMachOCompressedD1Ev", "ImageLoaderMachOCompressed::~ImageLoaderMachOCompressed()"}, + {"_ZN26ImageLoaderMachOCompressed19instantiateFromFileEPKciPKhyyRK4statjjRKN11ImageLoader11LinkContextE", "ImageLoaderMachOCompressed::instantiateFromFile(char const*, int, unsigned char const*, unsigned long long, unsigned long long, stat const&, unsigned int, unsigned int, ImageLoader::LinkContext const&)"}, + {"_ZNK26ImageLoaderMachOCompressed29exportedSymbolIsWeakDefintionEPKN11ImageLoader6SymbolE", "ImageLoaderMachOCompressed::exportedSymbolIsWeakDefintion(ImageLoader::Symbol const*) const"}, + {"_ZNK26ImageLoaderMachOCompressed21exportedSymbolAddressEPKN11ImageLoader6SymbolE", "ImageLoaderMachOCompressed::exportedSymbolAddress(ImageLoader::Symbol const*) const"}, + {"_ZNK26ImageLoaderMachOCompressed18findExportedSymbolEPKcPPK11ImageLoader", "ImageLoaderMachOCompressed::findExportedSymbol(char const*, ImageLoader const**) const"}, + {"_ZN26ImageLoaderMachOCompressed6rebaseERKN11ImageLoader11LinkContextE", "ImageLoaderMachOCompressed::rebase(ImageLoader::LinkContext const&)"}, + + // {"_ZN26ImageLoaderMachOCompressed22updateUsesCoalIteratorERN11ImageLoader12CoalIteratorEmPS0_RKNS0_11LinkContextE", + // "ImageLoaderMachOCompressed::updateUsesCoalIterator(ImageLoader::CoalIterator&, unsigned long, ImageLoader*, ImageLoader::LinkContext const&)"}, + // "ImageLoaderMachOCompressed::updateUsesCoalIterator(ImageLoader::CoalIterator&, unsigned long, ImageLoader::CoalIterator*, ImageLoader::CoalIterator::LinkContext const&)" was returned + + {"_ZN26ImageLoaderMachOCompressed21incrementCoalIteratorERN11ImageLoader12CoalIteratorE", "ImageLoaderMachOCompressed::incrementCoalIterator(ImageLoader::CoalIterator&)"}, + {"_ZN26ImageLoaderMachOCompressed20doBindFastLazySymbolEjRKN11ImageLoader11LinkContextE", "ImageLoaderMachOCompressed::doBindFastLazySymbol(unsigned int, ImageLoader::LinkContext const&)"}, + + // {"_ZN26ImageLoaderMachOCompressed12eachLazyBindERKN11ImageLoader11LinkContextEMS_FmS3_mhPKchliS5_PNS_10LastLookupEE", + // "ImageLoaderMachOCompressed::eachLazyBind(ImageLoader::LinkContext const&, unsigned long (ImageLoaderMachOCompressed::*)(ImageLoader::LinkContext const&, unsigned long, unsigned char, char const*, unsigned char, long, int, char const*, ImageLoaderMachOCompressed::LastLookup*))"}, + // got error + + {"_ZN26ImageLoaderMachOCompressed16doBindJustLaziesERKN11ImageLoader11LinkContextE", "ImageLoaderMachOCompressed::doBindJustLazies(ImageLoader::LinkContext const&)"}, + + // {"_ZN26ImageLoaderMachOCompressed8eachBindERKN11ImageLoader11LinkContextEMS_FmS3_mhPKchliS5_PNS_10LastLookupEE", + // "ImageLoaderMachOCompressed::eachBind(ImageLoader::LinkContext const&, unsigned long (ImageLoaderMachOCompressed::*)(ImageLoader::LinkContext const&, unsigned long, unsigned char, char const*, unsigned char, long, int, char const*, ImageLoaderMachOCompressed::LastLookup*))"}, + // got error + + {"_ZN26ImageLoaderMachOCompressed11doInterposeERKN11ImageLoader11LinkContextE", "ImageLoaderMachOCompressed::doInterpose(ImageLoader::LinkContext const&)"}, + {"_ZN26ImageLoaderMachOCompressed6doBindERKN11ImageLoader11LinkContextEb", "ImageLoaderMachOCompressed::doBind(ImageLoader::LinkContext const&, bool)"}, + {"_ZN26ImageLoaderMachOCompressed11setDyldInfoEPK17dyld_info_command", "ImageLoaderMachOCompressed::setDyldInfo(dyld_info_command const*)"}, + {"_ZN26ImageLoaderMachOCompressed18setSymbolTableInfoEPK11macho_nlistPKcPK16dysymtab_command", "ImageLoaderMachOCompressed::setSymbolTableInfo(macho_nlist const*, char const*, dysymtab_command const*)"}, + + // {"_ZNK26ImageLoaderMachOCompressed16isSubframeworkOfERKN11ImageLoader11LinkContextEPKS0_", + // "ImageLoaderMachOCompressed::isSubframeworkOf(ImageLoader::LinkContext const&, ImageLoader const*) const"}, + // "ImageLoaderMachOCompressed::isSubframeworkOf(ImageLoader::LinkContext const&, ImageLoader::LinkContext const*) const" was returned + + + // {"_ZNK26ImageLoaderMachOCompressed13hasSubLibraryERKN11ImageLoader11LinkContextEPKS0_", + // "ImageLoaderMachOCompressed::hasSubLibrary(ImageLoader::LinkContext const&, ImageLoader const*) const"}, + // "ImageLoaderMachOCompressed::hasSubLibrary(ImageLoader::LinkContext const&, ImageLoader::LinkContext const*) const" was returned + + {"_ZSt17__throw_bad_allocv", "std::__throw_bad_alloc()"}, + {"_ZSt20__throw_length_errorPKc", "std::__throw_length_error(char const*)"}, + {"_ZSt19__throw_logic_errorPKc", "std::__throw_logic_error(char const*)"}, + {"_ZNSt12length_errorD0Ev", "std::length_error::~length_error()"}, + {"_ZNSt12length_errorD2Ev", "std::length_error::~length_error()"}, + {"_ZNSt12length_errorD1Ev", "std::length_error::~length_error()"}, + {"_ZNKSt11logic_error4whatEv", "std::logic_error::what() const"}, + {"_ZNSt11logic_errorC2ERKSs", "std::logic_error::logic_error(std::string const&)"}, + {"_ZNSt11logic_errorC1ERKSs", "std::logic_error::logic_error(std::string const&)"}, + {"_ZNSt12length_errorC1ERKSs", "std::length_error::length_error(std::string const&)"}, + {"_ZNSt11logic_errorD0Ev", "std::logic_error::~logic_error()"}, + {"_ZNSt11logic_errorD2Ev", "std::logic_error::~logic_error()"}, + {"_ZNSt11logic_errorD1Ev", "std::logic_error::~logic_error()"}, + {"_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base", "std::_Rb_tree_decrement(std::_Rb_tree_node_base*)"}, + {"_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_", "std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)"}, + {"_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base", "std::_Rb_tree_increment(std::_Rb_tree_node_base const*)"}, + {"_ZNSs4_Rep10_M_disposeERKSaIcE", "std::string::_Rep::_M_dispose(std::allocator const&)"}, + {"_ZNSs4_Rep9_S_createEmmRKSaIcE", "std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator const&)"}, + {"_ZNSs4_Rep8_M_cloneERKSaIcEm", "std::string::_Rep::_M_clone(std::allocator const&, unsigned long)"}, + + // {"_ZNSs4_Rep7_M_grabERKSaIcES2_", + // "std::string::_Rep::_M_grab(std::allocator const&, std::allocator const&)"}, + // "std::string::_Rep::_M_grab(std::allocator const&, std::allocator const)" was returned + + + // {"_ZNSsC2ERKSs", + // "std::basic_string, std::allocator>::basic_string(std::string const&)"}, + // "std::string::string(std::string const&)" was returned + + + // {"_ZNSsC1ERKSs", + // "std::basic_string, std::allocator>::basic_string(std::string const&)"}, + // "std::string::string(std::string const&)" was returned + + + // {"_ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag", + // "char* std::string::_S_construct(char const*, char const*, std::allocator const&, std::forward_iterator_tag)"}, + // "char* std::string::_S_construct(char const*, char*, std::allocator const&, std::forward_iterator_tag)" was returned + + + // {"_ZNSsC2EPKcRKSaIcE", + // "std::basic_string, std::allocator>::basic_string(char const*, std::allocator const&)"}, + // "std::string::string(char const*, std::allocator const&)" was returned + + + // {"_ZNSsC1EPKcRKSaIcE", + // "std::basic_string, std::allocator>::basic_string(char const*, std::allocator const&)"}, + // "std::string::string(char const*, std::allocator const&)" was returned + + {"_ZN9__gnu_cxx13new_allocatorIcE8allocateEmPKv", "__gnu_cxx::new_allocator::allocate(unsigned long, void const*)"}, + {"_ZdlPv", "operator delete(void*)"}, + + // {"_ZdaPv", + // "operator delete[](void*)"}, + // "operator delete [](void*)" was returned + + {"_ZNK9__gnu_cxx24__concurrence_lock_error4whatEv", "__gnu_cxx::__concurrence_lock_error::what() const"}, + {"_ZNK9__gnu_cxx26__concurrence_unlock_error4whatEv", "__gnu_cxx::__concurrence_unlock_error::what() const"}, + {"_ZN9__gnu_cxx32__throw_concurrence_unlock_errorEv", "__gnu_cxx::__throw_concurrence_unlock_error()"}, + {"_ZN9__gnu_cxx30__throw_concurrence_lock_errorEv", "__gnu_cxx::__throw_concurrence_lock_error()"}, + {"_ZN9__gnu_cxx7__mutex4lockEv", "__gnu_cxx::__mutex::lock()"}, + {"_ZN9__gnu_cxx26__concurrence_unlock_errorD0Ev", "__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error()"}, + {"_ZN9__gnu_cxx26__concurrence_unlock_errorD2Ev", "__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error()"}, + {"_ZN9__gnu_cxx26__concurrence_unlock_errorD1Ev", "__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error()"}, + {"_ZN9__gnu_cxx24__concurrence_lock_errorD0Ev", "__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error()"}, + {"_ZN9__gnu_cxx24__concurrence_lock_errorD2Ev", "__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error()"}, + {"_ZN9__gnu_cxx24__concurrence_lock_errorD1Ev", "__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error()"}, + {"_ZN9__gnu_cxx7__mutex6unlockEv", "__gnu_cxx::__mutex::unlock()"}, + {"_ZN9__gnu_cxx13__scoped_lockD2Ev", "__gnu_cxx::__scoped_lock::~__scoped_lock()"}, + {"_ZNKSt9exception4whatEv", "std::exception::what() const"}, + {"_ZNKSt13bad_exception4whatEv", "std::bad_exception::what() const"}, + {"_ZNSt13bad_exceptionD0Ev", "std::bad_exception::~bad_exception()"}, + {"_ZNSt9exceptionD0Ev", "std::exception::~exception()"}, + {"_ZNSt9exceptionD2Ev", "std::exception::~exception()"}, + {"_ZNSt13bad_exceptionD1Ev", "std::bad_exception::~bad_exception()"}, + {"_ZNSt9exceptionD1Ev", "std::exception::~exception()"}, + {"_ZNKSt9bad_alloc4whatEv", "std::bad_alloc::what() const"}, + {"_ZNSt9bad_allocD0Ev", "std::bad_alloc::~bad_alloc()"}, + {"_ZNSt9bad_allocD2Ev", "std::bad_alloc::~bad_alloc()"}, + {"_ZNSt9bad_allocD1Ev", "std::bad_alloc::~bad_alloc()"}, + {"_Znwm", "operator new(unsigned long)"}, + + // {"_Znam", + // "operator new[](unsigned long)"}, + // "operator new [](unsigned long)" was returned + + {"_ZNKSt9type_info14__is_pointer_pEv", "std::type_info::__is_pointer_p() const"}, + {"_ZNKSt9type_info15__is_function_pEv", "std::type_info::__is_function_p() const"}, + {"_ZNKSt9type_info11__do_upcastEPKN10__cxxabiv117__class_type_infoEPPv", "std::type_info::__do_upcast(__cxxabiv1::__class_type_info const*, void**) const"}, + {"_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj", "__cxxabiv1::__class_type_info::__do_catch(std::type_info const*, void**, unsigned int) const"}, + {"_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv", "__cxxabiv1::__class_type_info::__do_upcast(__cxxabiv1::__class_type_info const*, void**) const"}, + {"_ZNK10__cxxabiv117__class_type_info20__do_find_public_srcElPKvPKS0_S2_", "__cxxabiv1::__class_type_info::__do_find_public_src(long, void const*, __cxxabiv1::__class_type_info const*, void const*) const"}, + {"_ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE", "__cxxabiv1::__class_type_info::__do_upcast(__cxxabiv1::__class_type_info const*, void const*, __cxxabiv1::__class_type_info::__upcast_result&) const"}, + {"_ZN10__cxxabiv117__class_type_infoD0Ev", "__cxxabiv1::__class_type_info::~__class_type_info()"}, + {"_ZN10__cxxabiv117__class_type_infoD1Ev", "__cxxabiv1::__class_type_info::~__class_type_info()"}, + {"_ZNSt9type_infoD0Ev", "std::type_info::~type_info()"}, + {"_ZNSt9type_infoD1Ev", "std::type_info::~type_info()"}, + {"_ZNSt9type_infoD2Ev", "std::type_info::~type_info()"}, + {"_ZNKSt9type_info10__do_catchEPKS_PPvj", "std::type_info::__do_catch(std::type_info const*, void**, unsigned int) const"}, + {"_ZNK10__cxxabiv117__class_type_info12__do_dyncastElNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE", "__cxxabiv1::__class_type_info::__do_dyncast(long, __cxxabiv1::__class_type_info::__sub_kind, __cxxabiv1::__class_type_info const*, void const*, __cxxabiv1::__class_type_info const*, void const*, __cxxabiv1::__class_type_info::__dyncast_result&) const"}, + {"_ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_", "__cxxabiv1::__si_class_type_info::__do_find_public_src(long, void const*, __cxxabiv1::__class_type_info const*, void const*) const"}, + {"_ZNK10__cxxabiv120__si_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE", "__cxxabiv1::__si_class_type_info::__do_dyncast(long, __cxxabiv1::__class_type_info::__sub_kind, __cxxabiv1::__class_type_info const*, void const*, __cxxabiv1::__class_type_info const*, void const*, __cxxabiv1::__class_type_info::__dyncast_result&) const"}, + {"_ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE", "__cxxabiv1::__si_class_type_info::__do_upcast(__cxxabiv1::__class_type_info const*, void const*, __cxxabiv1::__class_type_info::__upcast_result&) const"}, + {"_ZN10__cxxabiv120__si_class_type_infoD0Ev", "__cxxabiv1::__si_class_type_info::~__si_class_type_info()"}, + {"_ZN10__cxxabiv120__si_class_type_infoD2Ev", "__cxxabiv1::__si_class_type_info::~__si_class_type_info()"}, + {"_ZN10__cxxabiv120__si_class_type_infoD1Ev", "__cxxabiv1::__si_class_type_info::~__si_class_type_info()"}, + {"_ZNK10__cxxabiv119__pointer_type_info14__is_pointer_pEv", "__cxxabiv1::__pointer_type_info::__is_pointer_p() const"}, + {"_ZN10__cxxabiv117__pbase_type_infoD0Ev", "__cxxabiv1::__pbase_type_info::~__pbase_type_info()"}, + {"_ZN10__cxxabiv117__pbase_type_infoD2Ev", "__cxxabiv1::__pbase_type_info::~__pbase_type_info()"}, + {"_ZN10__cxxabiv119__pointer_type_infoD0Ev", "__cxxabiv1::__pointer_type_info::~__pointer_type_info()"}, + {"_ZN10__cxxabiv119__pointer_type_infoD2Ev", "__cxxabiv1::__pointer_type_info::~__pointer_type_info()"}, + {"_ZN10__cxxabiv119__pointer_type_infoD1Ev", "__cxxabiv1::__pointer_type_info::~__pointer_type_info()"}, + {"_ZN10__cxxabiv117__pbase_type_infoD1Ev", "__cxxabiv1::__pbase_type_info::~__pbase_type_info()"}, + {"_ZN10__cxxabiv123__fundamental_type_infoD0Ev", "__cxxabiv1::__fundamental_type_info::~__fundamental_type_info()"}, + {"_ZN10__cxxabiv123__fundamental_type_infoD2Ev", "__cxxabiv1::__fundamental_type_info::~__fundamental_type_info()"}, + {"_ZN10__cxxabiv123__fundamental_type_infoD1Ev", "__cxxabiv1::__fundamental_type_info::~__fundamental_type_info()"}, + {"_ZNK10__cxxabiv117__pbase_type_info10__do_catchEPKSt9type_infoPPvj", "__cxxabiv1::__pbase_type_info::__do_catch(std::type_info const*, void**, unsigned int) const"}, + {"_ZNK10__cxxabiv119__pointer_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj", "__cxxabiv1::__pointer_type_info::__pointer_catch(__cxxabiv1::__pbase_type_info const*, void**, unsigned int) const"}, + {"_ZNK10__cxxabiv117__pbase_type_info15__pointer_catchEPKS0_PPvj", "__cxxabiv1::__pbase_type_info::__pointer_catch(__cxxabiv1::__pbase_type_info const*, void**, unsigned int) const"}, + {"_ZN16CSCppTimeoutLockD1Ev", "CSCppTimeoutLock::~CSCppTimeoutLock()"}, + {"_ZN16CSCppTimeoutLockC2EPjj", "CSCppTimeoutLock::CSCppTimeoutLock(unsigned int*, unsigned int)"}, + {"_ZN16CSCppTimeoutLockC1EPjj", "CSCppTimeoutLock::CSCppTimeoutLock(unsigned int*, unsigned int)"}, + {"_ZN25CSCppDyldSharedMemoryPage11send_noticeEjRjS0_", "CSCppDyldSharedMemoryPage::send_notice(unsigned int, unsigned int&, unsigned int&)"}, + {"_ZN9libunwind12UnwindCursorINS_17LocalAddressSpaceENS_16Registers_x86_64EE8validRegEi", "libunwind::UnwindCursor::validReg(int)"}, + {"_ZN9libunwind12UnwindCursorINS_17LocalAddressSpaceENS_16Registers_x86_64EE13validFloatRegEi", "libunwind::UnwindCursor::validFloatReg(int)"}, + {"_ZN9libunwind12UnwindCursorINS_17LocalAddressSpaceENS_16Registers_x86_64EE7getInfoEP15unw_proc_info_t", "libunwind::UnwindCursor::getInfo(unw_proc_info_t*)"}, + {"_ZN9libunwind12UnwindCursorINS_17LocalAddressSpaceENS_16Registers_x86_64EE15getRegisterNameEi", "libunwind::UnwindCursor::getRegisterName(int)"}, + {"_ZN9libunwind12UnwindCursorINS_17LocalAddressSpaceENS_16Registers_x86_64EE13isSignalFrameEv", "libunwind::UnwindCursor::isSignalFrame()"}, + {"_ZN9libunwind12UnwindCursorINS_17LocalAddressSpaceENS_16Registers_x86_64EED0Ev", "libunwind::UnwindCursor::~UnwindCursor()"}, + {"_ZN9libunwind12UnwindCursorINS_17LocalAddressSpaceENS_16Registers_x86_64EE33getInfoFromCompactEncodingSectionEyyy", "libunwind::UnwindCursor::getInfoFromCompactEncodingSection(unsigned long long, unsigned long long, unsigned long long)"}, + {"_ZN9libunwind12UnwindCursorINS_17LocalAddressSpaceENS_16Registers_x86_64EE24setInfoBasedOnIPRegisterEb", "libunwind::UnwindCursor::setInfoBasedOnIPRegister(bool)"}, + {"_ZN9libunwind17LocalAddressSpace16findFunctionNameEyPcmPy", "libunwind::LocalAddressSpace::findFunctionName(unsigned long long, char*, unsigned long, unsigned long long*)"}, + {"_ZN9libunwind12UnwindCursorINS_17LocalAddressSpaceENS_16Registers_x86_64EE15getFunctionNameEPcmPy", "libunwind::UnwindCursor::getFunctionName(char*, unsigned long, unsigned long long*)"}, + {"_ZN9libunwind12UnwindCursorINS_17LocalAddressSpaceENS_16Registers_x86_64EE6jumptoEv", "libunwind::UnwindCursor::jumpto()"}, + {"_ZN9libunwind22CompactUnwinder_x86_64INS_17LocalAddressSpaceEE32stepWithCompactEncodingFramelessEjyRS1_RNS_16Registers_x86_64Eb", "libunwind::CompactUnwinder_x86_64::stepWithCompactEncodingFrameless(unsigned int, unsigned long long, libunwind::LocalAddressSpace&, libunwind::Registers_x86_64&, bool)"}, + {"_ZN9libunwind22CompactUnwinder_x86_64INS_17LocalAddressSpaceEE31stepWithCompactEncodingRBPFrameEjyRS1_RNS_16Registers_x86_64E", "libunwind::CompactUnwinder_x86_64::stepWithCompactEncodingRBPFrame(unsigned int, unsigned long long, libunwind::LocalAddressSpace&, libunwind::Registers_x86_64&)"}, + {"_ZN9libunwind22CompactUnwinder_x86_64INS_17LocalAddressSpaceEE23stepWithCompactEncodingEjyRS1_RNS_16Registers_x86_64E", "libunwind::CompactUnwinder_x86_64::stepWithCompactEncoding(unsigned int, unsigned long long, libunwind::LocalAddressSpace&, libunwind::Registers_x86_64&)"}, + {"_ZN9libunwind12UnwindCursorINS_17LocalAddressSpaceENS_16Registers_x86_64EE23stepWithCompactEncodingEv", "libunwind::UnwindCursor::stepWithCompactEncoding()"}, + {"_ZN9libunwind16Registers_x86_6411setRegisterEiy", "libunwind::Registers_x86_64::setRegister(int, unsigned long long)"}, + {"_ZN9libunwind12UnwindCursorINS_17LocalAddressSpaceENS_16Registers_x86_64EE6setRegEiy", "libunwind::UnwindCursor::setReg(int, unsigned long long)"}, + {"_ZN9libunwind12UnwindCursorINS_17LocalAddressSpaceENS_16Registers_x86_64EE6getRegEi", "libunwind::UnwindCursor::getReg(int)"}, + {"_ZN9libunwind12UnwindCursorINS_17LocalAddressSpaceENS_16Registers_x86_64EED1Ev", "libunwind::UnwindCursor::~UnwindCursor()"}, + {"_ZN9libunwind12UnwindCursorINS_17LocalAddressSpaceENS_16Registers_x86_64EE4stepEv", "libunwind::UnwindCursor::step()"}, + {"_ZN9libunwind12UnwindCursorINS_17LocalAddressSpaceENS_16Registers_x86_64EE11setFloatRegEid", "libunwind::UnwindCursor::setFloatReg(int, double)"}, + {"_ZN9libunwind12UnwindCursorINS_17LocalAddressSpaceENS_16Registers_x86_64EE11getFloatRegEi", "libunwind::UnwindCursor::getFloatReg(int)"}, + {"_ZN9libunwind16Registers_x86_646jumptoEv", "libunwind::Registers_x86_64::jumpto()"}, + {"_Z41__static_initialization_and_destruction_0ii", "__static_initialization_and_destruction_0(int, int)"}, + {"_Z41__static_initialization_and_destruction_0ii", "__static_initialization_and_destruction_0(int, int)"}, + {"_Z41__static_initialization_and_destruction_0ii", "__static_initialization_and_destruction_0(int, int)"}, + {"_Z41__static_initialization_and_destruction_0ii", "__static_initialization_and_destruction_0(int, int)"}, + {"_Z41__static_initialization_and_destruction_0ii", "__static_initialization_and_destruction_0(int, int)"}, + + // {"_ZZ34dyld_image_path_containing_addressE8__func__", + // "dyld_image_path_containing_address::__func__"}, + // got error + + + // {"_ZZ40dyld_register_image_state_change_handlerE8__func__", + // "dyld_register_image_state_change_handler::__func__"}, + // got error + + + // {"_ZZ5dlsymE8__func__", + // "dlsym::__func__"}, + // got error + + + // {"_ZZ7dlerrorE8__func__", + // "dlerror::__func__"}, + // got error + + + // {"_ZZ6dladdrE8__func__", + // "dladdr::__func__"}, + // got error + + + // {"_ZZ7dlcloseE8__func__", + // "dlclose::__func__"}, + // got error + + + // {"_ZZ6dlopenE8__func__", + // "dlopen::__func__"}, + // got error + + + // {"_ZZ16dlopen_preflightE8__func__", + // "dlopen_preflight::__func__"}, + // got error + + + // {"_ZZ23_dyld_launched_preboundE8__func__", + // "_dyld_launched_prebound::__func__"}, + // got error + + + // {"_ZZ14NSUnLinkModuleE8__func__", + // "NSUnLinkModule::__func__"}, + // got error + + + // {"_ZZ22NSLibraryNameForModuleE8__func__", + // "NSLibraryNameForModule::__func__"}, + // got error + + + // {"_ZZ14NSNameOfModuleE8__func__", + // "NSNameOfModule::__func__"}, + // got error + + + // {"_ZZ22NSLookupSymbolInModuleE8__func__", + // "NSLookupSymbolInModule::__func__"}, + // got error + + + // {"_ZZ12NSLinkModuleE8__func__", + // "NSLinkModule::__func__"}, + // got error + + + // {"_ZZ34NSIsSymbolDefinedInObjectFileImageE8__func__", + // "NSIsSymbolDefinedInObjectFileImage::__func__"}, + // got error + + + // {"_ZZ33NSGetSectionDataInObjectFileImageE8__func__", + // "NSGetSectionDataInObjectFileImage::__func__"}, + // got error + + + // {"_ZZ38NSSymbolReferenceNameInObjectFileImageE8__func__", + // "NSSymbolReferenceNameInObjectFileImage::__func__"}, + // got error + + + // {"_ZZ39NSSymbolReferenceCountInObjectFileImageE8__func__", + // "NSSymbolReferenceCountInObjectFileImage::__func__"}, + // got error + + + // {"_ZZ39NSSymbolDefinitionNameInObjectFileImageE8__func__", + // "NSSymbolDefinitionNameInObjectFileImage::__func__"}, + // got error + + + // {"_ZZ40NSSymbolDefinitionCountInObjectFileImageE8__func__", + // "NSSymbolDefinitionCountInObjectFileImage::__func__"}, + // got error + + + // {"_ZZ27NSHasModInitObjectFileImageE8__func__", + // "NSHasModInitObjectFileImage::__func__"}, + // got error + + + // {"_ZZ24NSDestroyObjectFileImageE8__func__", + // "NSDestroyObjectFileImage::__func__"}, + // got error + + + // {"_ZZ33NSCreateObjectFileImageFromMemoryE8__func__", + // "NSCreateObjectFileImageFromMemory::__func__"}, + // got error + + + // {"_ZZ31NSCreateObjectFileImageFromFileE8__func__", + // "NSCreateObjectFileImageFromFile::__func__"}, + // got error + + + // {"_ZZ30_dyld_image_containing_addressE8__func__", + // "_dyld_image_containing_address::__func__"}, + // got error + + + // {"_ZZ41_dyld_bind_fully_image_containing_addressE8__func__", + // "_dyld_bind_fully_image_containing_address::__func__"}, + // got error + + + // {"_ZZ22_dyld_bind_objc_moduleE8__func__", + // "_dyld_bind_objc_module::__func__"}, + // got error + + + // {"_ZZ35_dyld_all_twolevel_modules_preboundE8__func__", + // "_dyld_all_twolevel_modules_prebound::__func__"}, + // got error + + + // {"_ZZ17NSModuleForSymbolE8__func__", + // "NSModuleForSymbol::__func__"}, + // got error + + + // {"_ZZ17NSAddressOfSymbolE8__func__", + // "NSAddressOfSymbol::__func__"}, + // got error + + + // {"_ZZ14NSNameOfSymbolE8__func__", + // "NSNameOfSymbol::__func__"}, + // got error + + + // {"_ZZ29NSIsSymbolNameDefinedWithHintE8__func__", + // "NSIsSymbolNameDefinedWithHint::__func__"}, + // got error + + + // {"_ZZ21NSLookupSymbolInImageE8__func__", + // "NSLookupSymbolInImage::__func__"}, + // got error + + + // {"_ZZ28NSIsSymbolNameDefinedInImageE8__func__", + // "NSIsSymbolNameDefinedInImage::__func__"}, + // got error + + + // {"_ZZ25NSAddLibraryWithSearchingE8__func__", + // "NSAddLibraryWithSearching::__func__"}, + // got error + + + // {"_ZZ12NSAddLibraryE8__func__", + // "NSAddLibrary::__func__"}, + // got error + + + // {"_ZZ10NSAddImageE8__func__", + // "NSAddImage::__func__"}, + // got error + + + // {"_ZZ29NSLookupAndBindSymbolWithHintE8__func__", + // "NSLookupAndBindSymbolWithHint::__func__"}, + // got error + + + // {"_ZZ21NSLookupAndBindSymbolE8__func__", + // "NSLookupAndBindSymbol::__func__"}, + // got error + + + // {"_ZZ31_dyld_lookup_and_bind_with_hintE8__func__", + // "_dyld_lookup_and_bind_with_hint::__func__"}, + // got error + + + // {"_ZZ27_dyld_lookup_and_bind_fullyE8__func__", + // "_dyld_lookup_and_bind_fully::__func__"}, + // got error + + + // {"_ZZ36_dyld_register_func_for_remove_imageE8__func__", + // "_dyld_register_func_for_remove_image::__func__"}, + // got error + + + // {"_ZZ33_dyld_register_func_for_add_imageE8__func__", + // "_dyld_register_func_for_add_image::__func__"}, + // got error + + + // {"_ZZ41_dyld_get_image_header_containing_addressE8__func__", + // "_dyld_get_image_header_containing_address::__func__"}, + // got error + + + // {"_ZZ20_dyld_get_image_nameE8__func__", + // "_dyld_get_image_name::__func__"}, + // got error + + + // {"_ZZ21_dyld_get_image_slideE8__func__", + // "_dyld_get_image_slide::__func__"}, + // got error + + + // {"_ZZ28_dyld_get_image_vmaddr_slideE8__func__", + // "_dyld_get_image_vmaddr_slide::__func__"}, + // got error + + + // {"_ZZ22_dyld_get_image_headerE8__func__", + // "_dyld_get_image_header::__func__"}, + // got error + + + // {"_ZZ17_dyld_image_countE8__func__", + // "_dyld_image_count::__func__"}, + // got error + + + // {"_ZZ20_NSGetExecutablePathE8__func__", + // "_NSGetExecutablePath::__func__"}, + // got error + + {"_ZTSSt11logic_error", "typeinfo name for std::logic_error"}, + {"_ZTSSt13bad_exception", "typeinfo name for std::bad_exception"}, + {"_ZTSSt9exception", "typeinfo name for std::exception"}, + {"_ZTSSt9bad_alloc", "typeinfo name for std::bad_alloc"}, + {"_ZTSN10__cxxabiv120__si_class_type_infoE", "typeinfo name for __cxxabiv1::__si_class_type_info"}, + {"_ZTSN10__cxxabiv117__class_type_infoE", "typeinfo name for __cxxabiv1::__class_type_info"}, + {"_ZTSSt9type_info", "typeinfo name for std::type_info"}, + {"_ZTSPKc", "typeinfo name for char const*"}, + {"_ZTSPc", "typeinfo name for char*"}, + {"_ZTSc", "typeinfo name for char"}, + {"_ZTSv", "typeinfo name for void"}, + {"_ZTSN10__cxxabiv119__pointer_type_infoE", "typeinfo name for __cxxabiv1::__pointer_type_info"}, + {"_ZTSN10__cxxabiv117__pbase_type_infoE", "typeinfo name for __cxxabiv1::__pbase_type_info"}, + {"_ZTSN10__cxxabiv123__fundamental_type_infoE", "typeinfo name for __cxxabiv1::__fundamental_type_info"}, + {"_ZTSSt12length_error", "typeinfo name for std::length_error"}, + {"_ZTSN9__gnu_cxx24__concurrence_lock_errorE", "typeinfo name for __gnu_cxx::__concurrence_lock_error"}, + {"_ZTSN9__gnu_cxx26__concurrence_unlock_errorE", "typeinfo name for __gnu_cxx::__concurrence_unlock_error"}, + {"_ZTV11ImageLoader", "vtable for ImageLoader"}, + {"_ZTV16ImageLoaderMachO", "vtable for ImageLoaderMachO"}, + {"_ZTV23ImageLoaderMachOClassic", "vtable for ImageLoaderMachOClassic"}, + {"_ZTV26ImageLoaderMachOCompressed", "vtable for ImageLoaderMachOCompressed"}, + {"_ZTISt12length_error", "typeinfo for std::length_error"}, + {"_ZTVSt12length_error", "vtable for std::length_error"}, + {"_ZTVSt11logic_error", "vtable for std::logic_error"}, + {"_ZTISt11logic_error", "typeinfo for std::logic_error"}, + {"_ZTIN9__gnu_cxx24__concurrence_lock_errorE", "typeinfo for __gnu_cxx::__concurrence_lock_error"}, + {"_ZTVN9__gnu_cxx24__concurrence_lock_errorE", "vtable for __gnu_cxx::__concurrence_lock_error"}, + {"_ZTIN9__gnu_cxx26__concurrence_unlock_errorE", "typeinfo for __gnu_cxx::__concurrence_unlock_error"}, + {"_ZTVN9__gnu_cxx26__concurrence_unlock_errorE", "vtable for __gnu_cxx::__concurrence_unlock_error"}, + {"_ZTVSt13bad_exception", "vtable for std::bad_exception"}, + {"_ZTVSt9exception", "vtable for std::exception"}, + {"_ZTISt13bad_exception", "typeinfo for std::bad_exception"}, + {"_ZTISt9exception", "typeinfo for std::exception"}, + {"_ZTVSt9bad_alloc", "vtable for std::bad_alloc"}, + {"_ZTISt9bad_alloc", "typeinfo for std::bad_alloc"}, + {"_ZTVN10__cxxabiv120__si_class_type_infoE", "vtable for __cxxabiv1::__si_class_type_info"}, + {"_ZTVN10__cxxabiv117__class_type_infoE", "vtable for __cxxabiv1::__class_type_info"}, + {"_ZTVSt9type_info", "vtable for std::type_info"}, + {"_ZTIN10__cxxabiv120__si_class_type_infoE", "typeinfo for __cxxabiv1::__si_class_type_info"}, + {"_ZTIN10__cxxabiv117__class_type_infoE", "typeinfo for __cxxabiv1::__class_type_info"}, + {"_ZTISt9type_info", "typeinfo for std::type_info"}, + {"_ZTVN10__cxxabiv119__pointer_type_infoE", "vtable for __cxxabiv1::__pointer_type_info"}, + {"_ZTVN10__cxxabiv117__pbase_type_infoE", "vtable for __cxxabiv1::__pbase_type_info"}, + {"_ZTVN10__cxxabiv123__fundamental_type_infoE", "vtable for __cxxabiv1::__fundamental_type_info"}, + {"_ZTIPKc", "typeinfo for char const*"}, + {"_ZTIPc", "typeinfo for char*"}, + {"_ZTIc", "typeinfo for char"}, + {"_ZTIv", "typeinfo for void"}, + {"_ZTIN10__cxxabiv119__pointer_type_infoE", "typeinfo for __cxxabiv1::__pointer_type_info"}, + {"_ZTIN10__cxxabiv117__pbase_type_infoE", "typeinfo for __cxxabiv1::__pbase_type_info"}, + {"_ZTIN10__cxxabiv123__fundamental_type_infoE", "typeinfo for __cxxabiv1::__fundamental_type_info"}, + {"_ZTVN9libunwind12UnwindCursorINS_17LocalAddressSpaceENS_16Registers_x86_64EEE", "vtable for libunwind::UnwindCursor"}, + {"_ZN4dyld8gLogAPIsE", "dyld::gLogAPIs"}, + {"_ZN4dyld17gLibSystemHelpersE", "dyld::gLibSystemHelpers"}, + {"_ZN10__cxxabiv119__terminate_handlerE", "__cxxabiv1::__terminate_handler"}, + {"_ZN10__cxxabiv120__unexpected_handlerE", "__cxxabiv1::__unexpected_handler"}, + {"_ZN11ImageLoader27fgImagesUsedFromSharedCacheE", "ImageLoader::fgImagesUsedFromSharedCache"}, + {"_ZN11ImageLoader26fgImagesWithUsedPrebindingE", "ImageLoader::fgImagesWithUsedPrebinding"}, + {"_ZN11ImageLoader25fgImagesRequiringNoFixupsE", "ImageLoader::fgImagesRequiringNoFixups"}, + {"_ZN11ImageLoader27fgImagesRequiringCoalescingE", "ImageLoader::fgImagesRequiringCoalescing"}, + {"_ZN11ImageLoader26fgImagesHasWeakDefinitionsE", "ImageLoader::fgImagesHasWeakDefinitions"}, + {"_ZN11ImageLoader19fgTotalRebaseFixupsE", "ImageLoader::fgTotalRebaseFixups"}, + {"_ZN11ImageLoader17fgTotalBindFixupsE", "ImageLoader::fgTotalBindFixups"}, + {"_ZN11ImageLoader26fgTotalBindSymbolsResolvedE", "ImageLoader::fgTotalBindSymbolsResolved"}, + {"_ZN11ImageLoader24fgTotalBindImageSearchesE", "ImageLoader::fgTotalBindImageSearches"}, + {"_ZN11ImageLoader21fgTotalLazyBindFixupsE", "ImageLoader::fgTotalLazyBindFixups"}, + {"_ZN11ImageLoader29fgTotalPossibleLazyBindFixupsE", "ImageLoader::fgTotalPossibleLazyBindFixups"}, + {"_ZN11ImageLoader21fgTotalSegmentsMappedE", "ImageLoader::fgTotalSegmentsMapped"}, + {"_ZN11ImageLoader18fgTotalBytesMappedE", "ImageLoader::fgTotalBytesMapped"}, + {"_ZN11ImageLoader22fgTotalBytesPreFetchedE", "ImageLoader::fgTotalBytesPreFetched"}, + {"_ZN11ImageLoader21fgNextPIEDylibAddressE", "ImageLoader::fgNextPIEDylibAddress"}, + {"_ZN16ImageLoaderMachO26fgSymbolTableBinarySearchsE", "ImageLoaderMachO::fgSymbolTableBinarySearchs"}, + {"_ZN16ImageLoaderMachO19fgSymbolTrieSearchsE", "ImageLoaderMachO::fgSymbolTrieSearchs"}, + {"_ZN4dyld12gLinkContextE", "dyld::gLinkContext"}, + {"_ZN11ImageLoader24fgTotalLoadLibrariesTimeE", "ImageLoader::fgTotalLoadLibrariesTime"}, + {"_ZN11ImageLoader17fgTotalRebaseTimeE", "ImageLoader::fgTotalRebaseTime"}, + {"_ZN11ImageLoader15fgTotalBindTimeE", "ImageLoader::fgTotalBindTime"}, + {"_ZN11ImageLoader19fgTotalWeakBindTimeE", "ImageLoader::fgTotalWeakBindTime"}, + {"_ZN11ImageLoader10fgTotalDOFE", "ImageLoader::fgTotalDOF"}, + {"_ZN11ImageLoader15fgTotalInitTimeE", "ImageLoader::fgTotalInitTime"}, + {"_ZN11ImageLoader23fgDynamicImageReExportsE", "ImageLoader::fgDynamicImageReExports"}, + {"_ZN11ImageLoader19fgInterposingTuplesE", "ImageLoader::fgInterposingTuples"}, + {"_ZNSs4_Rep20_S_empty_rep_storageE", "std::string::_Rep::_S_empty_rep_storage"}, + {"_ZZN23ImageLoaderMachOClassic26bindIndirectSymbolPointersERKN11ImageLoader11LinkContextEbbE13alreadyWarned", "ImageLoaderMachOClassic::bindIndirectSymbolPointers(ImageLoader::LinkContext const&, bool, bool)::alreadyWarned"}, + {"_ZN12_GLOBAL__N_115emergency_mutexE", "(anonymous namespace)::emergency_mutex"}, + + // {"_Z1fIDnLDn0EEvv", + // "void f()"}, + // got error + + {"_ZN4llvm8DenseMapIjcNS_12DenseMapInfoIjEENS1_IcEEE6insertERKSt4pairIjcE", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIjcNS_12DenseMapInfoIjEENS1_IcEEE16InsertIntoBucketERKjRKcPSt4pairIjcE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(unsigned int const&, char const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIjcNS_12DenseMapInfoIjEENS1_IcEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm19MachinePassRegistry3AddEPNS_23MachinePassRegistryNodeE", "llvm::MachinePassRegistry::Add(llvm::MachinePassRegistryNode*)"}, + {"_ZN4llvm2cl6valuesIiEENS0_11ValuesClassIT_EEPKcS3_S6_z", "llvm::cl::ValuesClass llvm::cl::values(char const*, int, char const*, ...)"}, + {"_ZN4llvm2cl11ValuesClassIiEC2EPKciS4_P13__va_list_tag", "llvm::cl::ValuesClass::ValuesClass(char const*, int, char const*, __va_list_tag*)"}, + {"_ZN4llvm24PassRegistrationListenerC2Ev", "llvm::PassRegistrationListener::PassRegistrationListener()"}, + {"_ZN4llvm24PassRegistrationListener15enumeratePassesEv", "llvm::PassRegistrationListener::enumeratePasses()"}, + {"_ZN4llvm12PassRegistry15getPassRegistryEv", "llvm::PassRegistry::getPassRegistry()"}, + {"_ZNK4llvm12PassRegistry7getImplEv", "llvm::PassRegistry::getImpl() const"}, + {"_ZN4llvm12PassRegistry13enumerateWithEPNS_24PassRegistrationListenerE", "llvm::PassRegistry::enumerateWith(llvm::PassRegistrationListener*)"}, + {"_ZN4llvm12PassRegistry23addRegistrationListenerEPNS_24PassRegistrationListenerE", "llvm::PassRegistry::addRegistrationListener(llvm::PassRegistrationListener*)"}, + {"_ZNSt6vectorIPN4llvm24PassRegistrationListenerESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::PassRegistrationListener* const&)"}, + {"_ZN4llvm3sys11MemoryFenceEv", "llvm::sys::MemoryFence()"}, + {"_ZN4llvm2cl6Option11addArgumentEv", "llvm::cl::Option::addArgument()"}, + {"_ZN4llvm2cl18MarkOptionsChangedEv", "llvm::cl::MarkOptionsChanged()"}, + {"_ZNK4llvm17ManagedStaticBase21RegisterManagedStaticEPFPvvEPFvS1_E", "llvm::ManagedStaticBase::RegisterManagedStatic(void* (*)(), void (*)(void*)) const"}, + {"_ZN4llvm3sys9MutexImplC2Eb", "llvm::sys::MutexImpl::MutexImpl(bool)"}, + {"_ZN4llvm3sys9MutexImpl7acquireEv", "llvm::sys::MutexImpl::acquire()"}, + {"_ZN4llvm3sys9MutexImpl7releaseEv", "llvm::sys::MutexImpl::release()"}, + {"_ZN4llvm15SmallVectorBase8grow_podEmm", "llvm::SmallVectorBase::grow_pod(unsigned long, unsigned long)"}, + {"_ZN4llvm3sys15ThreadLocalImplC2Ev", "llvm::sys::ThreadLocalImpl::ThreadLocalImpl()"}, + {"_ZN4llvm21llvm_is_multithreadedEv", "llvm::llvm_is_multithreaded()"}, + {"_ZN4llvm24llvm_acquire_global_lockEv", "llvm::llvm_acquire_global_lock()"}, + {"_ZN4llvm24llvm_release_global_lockEv", "llvm::llvm_release_global_lock()"}, + {"_ZN4llvm15system_categoryEv", "llvm::system_category()"}, + {"_Z8cc1_mainPPKcS1_S0_Pv", "cc1_main(char const**, char const**, char const*, void*)"}, + {"_Z16LLVMErrorHandlerPvRKSs", "LLVMErrorHandler(void*, std::string const&)"}, + {"_ZNK5clang17DiagnosticBuilder9AddStringEN4llvm9StringRefE", "clang::DiagnosticBuilder::AddString(llvm::StringRef) const"}, + {"_ZNK4llvm18IntrusiveRefCntPtrIN5clang10DiagnosticEE6getPtrEv", "llvm::IntrusiveRefCntPtr::getPtr() const"}, + {"_ZN5clang16DiagnosticClient15BeginSourceFileERKNS_11LangOptionsEPKNS_12PreprocessorE", "clang::DiagnosticClient::BeginSourceFile(clang::LangOptions const&, clang::Preprocessor const*)"}, + {"_ZN5clang16DiagnosticClient13EndSourceFileEv", "clang::DiagnosticClient::EndSourceFile()"}, + {"_ZN5clang18CompilerInvocationD2Ev", "clang::CompilerInvocation::~CompilerInvocation()"}, + {"_ZN5clang14CodeGenOptionsD2Ev", "clang::CodeGenOptions::~CodeGenOptions()"}, + {"_ZN5clang23DependencyOutputOptionsD2Ev", "clang::DependencyOutputOptions::~DependencyOutputOptions()"}, + {"_ZN5clang15FrontendOptionsD2Ev", "clang::FrontendOptions::~FrontendOptions()"}, + + // {"_ZNSt6vectorIS_ISsSaISsEESaIS1_EED2Ev", + // "std::vector>, std::allocator>>>::~vector()"}, + // "std::vector>, std::allocator>>::~string()" was returned + + {"_ZN5clang19HeaderSearchOptionsD2Ev", "clang::HeaderSearchOptions::~HeaderSearchOptions()"}, + {"_ZN5clang19PreprocessorOptionsD2Ev", "clang::PreprocessorOptions::~PreprocessorOptions()"}, + {"_ZNSt8_Rb_treeISsSsSt9_IdentityISsESt4lessISsESaISsEE8_M_eraseEPSt13_Rb_tree_nodeISsE", "std::_Rb_tree, std::less, std::allocator>::_M_erase(std::_Rb_tree_node*)"}, + + // {"_ZNSt6vectorISt4pairISsSsESaIS1_EED2Ev", + // "std::vector, std::allocator>>::~vector()"}, + // "std::vector, std::allocator>::~string()" was returned + + {"_ZN5clang13TargetOptionsD2Ev", "clang::TargetOptions::~TargetOptions()"}, + {"_ZN5clang18CompilerInvocationC2Ev", "clang::CompilerInvocation::CompilerInvocation()"}, + {"_Z10cc1as_mainPPKcS1_S0_Pv", "cc1as_main(char const**, char const**, char const*, void*)"}, + {"_Z16LLVMErrorHandlerPvRKSs", "LLVMErrorHandler(void*, std::string const&)"}, + {"_ZN4llvm23PrettyStackTraceProgramD1Ev", "llvm::PrettyStackTraceProgram::~PrettyStackTraceProgram()"}, + {"_ZN4llvm23PrettyStackTraceProgramD0Ev", "llvm::PrettyStackTraceProgram::~PrettyStackTraceProgram()"}, + {"_ZN4llvm21formatted_raw_ostream9setStreamERNS_11raw_ostreamEb", "llvm::formatted_raw_ostream::setStream(llvm::raw_ostream&, bool)"}, + {"_ZN4llvm21formatted_raw_ostreamD1Ev", "llvm::formatted_raw_ostream::~formatted_raw_ostream()"}, + {"_ZN4llvm21formatted_raw_ostreamD0Ev", "llvm::formatted_raw_ostream::~formatted_raw_ostream()"}, + {"_ZN4llvm11raw_ostream11changeColorENS0_6ColorsEbb", "llvm::raw_ostream::changeColor(llvm::raw_ostream::Colors, bool, bool)"}, + {"_ZN4llvm11raw_ostream10resetColorEv", "llvm::raw_ostream::resetColor()"}, + {"_ZNK4llvm11raw_ostream12is_displayedEv", "llvm::raw_ostream::is_displayed() const"}, + {"_ZNK4llvm21formatted_raw_ostream11current_posEv", "llvm::formatted_raw_ostream::current_pos() const"}, + {"_ZN4llvm21formatted_raw_ostream13releaseStreamEv", "llvm::formatted_raw_ostream::releaseStream()"}, + + // {"_ZNSt6vectorISsSaISsEEaSERKS1_", + // "std::vector>::operator=(std::vector> const&)"}, + // "std::vector>::operator=(std::allocator const&)" was returned + + {"_ZNSt6vectorIN4llvm9SourceMgr9SrcBufferESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::SourceMgr::SrcBuffer const&)"}, + {"_ZN4llvm10error_code21unspecified_bool_trueEv", "llvm::error_code::unspecified_bool_true()"}, + {"_Z17GetExecutablePathPKcb", "GetExecutablePath(char const*, bool)"}, + {"_Z17ExpandArgsFromBufPKcRN4llvm15SmallVectorImplIS0_EERSt3setISsSt4lessISsESaISsEE", "ExpandArgsFromBuf(char const*, llvm::SmallVectorImpl&, std::set, std::allocator>&)"}, + + // {"_ZN4llvm15SmallVectorImplIPKcE6insertIN9__gnu_cxx17__normal_iteratorIPS2_St6vectorIS2_SaIS2_EEEEEES7_S7_T_SC_", + // "char const** llvm::SmallVectorImpl::insert<__gnu_cxx::__normal_iterator>>>(char const**, __gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>)"}, + // got error + + {"_ZNSt6vectorIPKcSaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, char const* const&)"}, + {"_ZNSt8_Rb_treeISsSsSt9_IdentityISsESt4lessISsESaISsEE16_M_insert_uniqueERKSs", "std::_Rb_tree, std::less, std::allocator>::_M_insert_unique(std::string const&)"}, + + // {"_ZNSt8_Rb_treeISsSsSt9_IdentityISsESt4lessISsESaISsEE9_M_insertEPSt18_Rb_tree_node_baseS7_RKSs", + // "std::_Rb_tree, std::less, std::allocator>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::string const&)"}, + // "std::_Rb_tree, std::less, std::allocator>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base, std::string const&)" was returned + + {"_ZN4llvm15SmallVectorImplIPKcE6insertEPS2_RKS2_", "llvm::SmallVectorImpl::insert(char const**, char const* const&)"}, + {"_ZN5clang25ExecuteCompilerInvocationEPNS_16CompilerInstanceE", "clang::ExecuteCompilerInvocation(clang::CompilerInstance*)"}, + {"_ZN5clang14FrontendAction21BeginSourceFileActionERNS_16CompilerInstanceEN4llvm9StringRefE", "clang::FrontendAction::BeginSourceFileAction(clang::CompilerInstance&, llvm::StringRef)"}, + {"_ZN5clang14FrontendAction19EndSourceFileActionEv", "clang::FrontendAction::EndSourceFileAction()"}, + {"_ZNK5clang26PreprocessorFrontendAction20usesPreprocessorOnlyEv", "clang::PreprocessorFrontendAction::usesPreprocessorOnly() const"}, + {"_ZN5clang14FrontendAction27usesCompleteTranslationUnitEv", "clang::FrontendAction::usesCompleteTranslationUnit()"}, + {"_ZNK5clang14FrontendAction13hasPCHSupportEv", "clang::FrontendAction::hasPCHSupport() const"}, + {"_ZNK5clang14FrontendAction17hasASTFileSupportEv", "clang::FrontendAction::hasASTFileSupport() const"}, + {"_ZNK5clang14FrontendAction12hasIRSupportEv", "clang::FrontendAction::hasIRSupport() const"}, + {"_ZNK5clang14FrontendAction24hasCodeCompletionSupportEv", "clang::FrontendAction::hasCodeCompletionSupport() const"}, + {"_ZN5clang26PreprocessorFrontendActionD1Ev", "clang::PreprocessorFrontendAction::~PreprocessorFrontendAction()"}, + {"_ZN5clang26PreprocessorFrontendActionD0Ev", "clang::PreprocessorFrontendAction::~PreprocessorFrontendAction()"}, + {"_ZNK5clang17ASTFrontendAction20usesPreprocessorOnlyEv", "clang::ASTFrontendAction::usesPreprocessorOnly() const"}, + {"_ZN5clang17ASTFrontendActionD1Ev", "clang::ASTFrontendAction::~ASTFrontendAction()"}, + {"_ZN5clang17ASTFrontendActionD0Ev", "clang::ASTFrontendAction::~ASTFrontendAction()"}, + {"_ZNK5clang23PrintPreprocessedAction13hasPCHSupportEv", "clang::PrintPreprocessedAction::hasPCHSupport() const"}, + {"_ZN5clang19PrintPreambleAction17CreateASTConsumerERNS_16CompilerInstanceEN4llvm9StringRefE", "clang::PrintPreambleAction::CreateASTConsumer(clang::CompilerInstance&, llvm::StringRef)"}, + {"_ZNK5clang19PrintPreambleAction20usesPreprocessorOnlyEv", "clang::PrintPreambleAction::usesPreprocessorOnly() const"}, + {"_ZN5clang16SyntaxOnlyActionD1Ev", "clang::SyntaxOnlyAction::~SyntaxOnlyAction()"}, + {"_ZN5clang16SyntaxOnlyActionD0Ev", "clang::SyntaxOnlyAction::~SyntaxOnlyAction()"}, + {"_ZNK5clang16SyntaxOnlyAction24hasCodeCompletionSupportEv", "clang::SyntaxOnlyAction::hasCodeCompletionSupport() const"}, + {"_ZNK5clang14InitOnlyAction20usesPreprocessorOnlyEv", "clang::InitOnlyAction::usesPreprocessorOnly() const"}, + {"_ZN5clang17GeneratePCHAction27usesCompleteTranslationUnitEv", "clang::GeneratePCHAction::usesCompleteTranslationUnit()"}, + {"_ZNK5clang17GeneratePCHAction17hasASTFileSupportEv", "clang::GeneratePCHAction::hasASTFileSupport() const"}, + {"_ZN5clang16CreateASTPrinterEPN4llvm11raw_ostreamE", "clang::CreateASTPrinter(llvm::raw_ostream*)"}, + {"_ZN5clang19CreateASTPrinterXMLEPN4llvm11raw_ostreamE", "clang::CreateASTPrinterXML(llvm::raw_ostream*)"}, + {"_ZN5clang15CreateASTDumperEv", "clang::CreateASTDumper()"}, + {"_ZN5clang15CreateASTViewerEv", "clang::CreateASTViewer()"}, + {"_ZN5clang24CreateDeclContextPrinterEv", "clang::CreateDeclContextPrinter()"}, + {"_ZN5clang23CreateInheritanceViewerERKSs", "clang::CreateInheritanceViewer(std::string const&)"}, + {"_ZN5clang18CreateASTDumperXMLERN4llvm11raw_ostreamE", "clang::CreateASTDumperXML(llvm::raw_ostream&)"}, + {"_ZN12_GLOBAL__N_110ASTDumpXMLD1Ev", "(anonymous namespace)::ASTDumpXML::~ASTDumpXML()"}, + {"_ZN12_GLOBAL__N_110ASTDumpXMLD0Ev", "(anonymous namespace)::ASTDumpXML::~ASTDumpXML()"}, + {"_ZN12_GLOBAL__N_110ASTDumpXML21HandleTranslationUnitERN5clang10ASTContextE", "(anonymous namespace)::ASTDumpXML::HandleTranslationUnit(clang::ASTContext&)"}, + {"_ZN12_GLOBAL__N_117InheritanceViewerD1Ev", "(anonymous namespace)::InheritanceViewer::~InheritanceViewer()"}, + {"_ZN12_GLOBAL__N_117InheritanceViewerD0Ev", "(anonymous namespace)::InheritanceViewer::~InheritanceViewer()"}, + {"_ZN12_GLOBAL__N_117InheritanceViewer21HandleTranslationUnitERN5clang10ASTContextE", "(anonymous namespace)::InheritanceViewer::HandleTranslationUnit(clang::ASTContext&)"}, + {"_ZN12_GLOBAL__N_118DeclContextPrinterD1Ev", "(anonymous namespace)::DeclContextPrinter::~DeclContextPrinter()"}, + {"_ZN12_GLOBAL__N_118DeclContextPrinterD0Ev", "(anonymous namespace)::DeclContextPrinter::~DeclContextPrinter()"}, + {"_ZN12_GLOBAL__N_118DeclContextPrinter21HandleTranslationUnitERN5clang10ASTContextE", "(anonymous namespace)::DeclContextPrinter::HandleTranslationUnit(clang::ASTContext&)"}, + {"_ZN12_GLOBAL__N_118DeclContextPrinter16PrintDeclContextEPKN5clang11DeclContextEj", "(anonymous namespace)::DeclContextPrinter::PrintDeclContext(clang::DeclContext const*, unsigned int)"}, + {"_ZN12_GLOBAL__N_19ASTViewerD1Ev", "(anonymous namespace)::ASTViewer::~ASTViewer()"}, + {"_ZN12_GLOBAL__N_19ASTViewerD0Ev", "(anonymous namespace)::ASTViewer::~ASTViewer()"}, + {"_ZN12_GLOBAL__N_19ASTViewer10InitializeERN5clang10ASTContextE", "(anonymous namespace)::ASTViewer::Initialize(clang::ASTContext&)"}, + {"_ZN12_GLOBAL__N_19ASTViewer18HandleTopLevelDeclEN5clang12DeclGroupRefE", "(anonymous namespace)::ASTViewer::HandleTopLevelDecl(clang::DeclGroupRef)"}, + {"_ZN12_GLOBAL__N_113ASTPrinterXMLD1Ev", "(anonymous namespace)::ASTPrinterXML::~ASTPrinterXML()"}, + {"_ZN12_GLOBAL__N_113ASTPrinterXMLD0Ev", "(anonymous namespace)::ASTPrinterXML::~ASTPrinterXML()"}, + {"_ZN12_GLOBAL__N_113ASTPrinterXML10InitializeERN5clang10ASTContextE", "(anonymous namespace)::ASTPrinterXML::Initialize(clang::ASTContext&)"}, + {"_ZN12_GLOBAL__N_113ASTPrinterXML21HandleTranslationUnitERN5clang10ASTContextE", "(anonymous namespace)::ASTPrinterXML::HandleTranslationUnit(clang::ASTContext&)"}, + {"_ZN12_GLOBAL__N_110ASTPrinterD1Ev", "(anonymous namespace)::ASTPrinter::~ASTPrinter()"}, + {"_ZN12_GLOBAL__N_110ASTPrinterD0Ev", "(anonymous namespace)::ASTPrinter::~ASTPrinter()"}, + {"_ZN12_GLOBAL__N_110ASTPrinter21HandleTranslationUnitERN5clang10ASTContextE", "(anonymous namespace)::ASTPrinter::HandleTranslationUnit(clang::ASTContext&)"}, + + // {"_ZNSt5dequeISsSaISsEED2Ev", + // "std::deque>::~deque()"}, + // "std::deque>::~string()" was returned + + + // {"_ZNSt5dequeISsSaISsEE19_M_destroy_data_auxESt15_Deque_iteratorISsRSsPSsES5_", + // "std::deque>::_M_destroy_data_aux(std::_Deque_iterator, std::_Deque_iterator)"}, + // "std::deque>::_M_destroy_data_aux(std::_Deque_iterator, std::string*)" was returned + + {"_ZNSt8_Rb_treeIN5clang8QualTypeESt4pairIKS1_jESt10_Select1stIS4_ENS0_16QualTypeOrderingESaIS4_EE8_M_eraseEPSt13_Rb_tree_nodeIS4_E", "std::_Rb_tree, std::_Select1st>, clang::QualTypeOrdering, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZN5clang14ASTMergeAction17CreateASTConsumerERNS_16CompilerInstanceEN4llvm9StringRefE", "clang::ASTMergeAction::CreateASTConsumer(clang::CompilerInstance&, llvm::StringRef)"}, + {"_ZN5clang14ASTMergeAction21BeginSourceFileActionERNS_16CompilerInstanceEN4llvm9StringRefE", "clang::ASTMergeAction::BeginSourceFileAction(clang::CompilerInstance&, llvm::StringRef)"}, + {"_ZN5clang14ASTMergeAction13ExecuteActionEv", "clang::ASTMergeAction::ExecuteAction()"}, + {"_ZN5clang14ASTMergeAction19EndSourceFileActionEv", "clang::ASTMergeAction::EndSourceFileAction()"}, + {"_ZN5clang14ASTMergeActionC1EPNS_14FrontendActionEPSsj", "clang::ASTMergeAction::ASTMergeAction(clang::FrontendAction*, std::string*, unsigned int)"}, + {"_ZN5clang14ASTMergeActionC2EPNS_14FrontendActionEPSsj", "clang::ASTMergeAction::ASTMergeAction(clang::FrontendAction*, std::string*, unsigned int)"}, + {"_ZN5clang14ASTMergeActionD0Ev", "clang::ASTMergeAction::~ASTMergeAction()"}, + {"_ZN5clang14ASTMergeActionD1Ev", "clang::ASTMergeAction::~ASTMergeAction()"}, + {"_ZN5clang14ASTMergeActionD2Ev", "clang::ASTMergeAction::~ASTMergeAction()"}, + {"_ZNK5clang14ASTMergeAction20usesPreprocessorOnlyEv", "clang::ASTMergeAction::usesPreprocessorOnly() const"}, + {"_ZN5clang14ASTMergeAction27usesCompleteTranslationUnitEv", "clang::ASTMergeAction::usesCompleteTranslationUnit()"}, + {"_ZNK5clang14ASTMergeAction13hasPCHSupportEv", "clang::ASTMergeAction::hasPCHSupport() const"}, + {"_ZNK5clang14ASTMergeAction17hasASTFileSupportEv", "clang::ASTMergeAction::hasASTFileSupport() const"}, + {"_ZNK5clang14ASTMergeAction24hasCodeCompletionSupportEv", "clang::ASTMergeAction::hasCodeCompletionSupport() const"}, + {"_ZN5clang7ASTUnitC1Eb", "clang::ASTUnit::ASTUnit(bool)"}, + {"_ZN5clang7ASTUnitC2Eb", "clang::ASTUnit::ASTUnit(bool)"}, + {"_ZN5clang7ASTUnitC3Eb", "clang::ASTUnit::ASTUnit(bool)"}, + + // {"_ZN5clang7ASTUnitC4Eb", + // "clang::ASTUnit::ASTUnit(bool)"}, + // got error + + + // {"_ZN5clang7ASTUnitC5Eb", + // "clang::ASTUnit::ASTUnit(bool)"}, + // got error + + {"_ZN5clang7ASTUnitD0Ev", "clang::ASTUnit::~ASTUnit()"}, + {"_ZN5clang7ASTUnitD1Ev", "clang::ASTUnit::~ASTUnit()"}, + {"_ZN5clang7ASTUnitD2Ev", "clang::ASTUnit::~ASTUnit()"}, + + // {"_ZN5clang7ASTUnitD4Ev", + // "clang::ASTUnit::~ASTUnit()"}, + // got error + + + // {"_ZN5clang7ASTUnitD5Ev", + // "clang::ASTUnit::~ASTUnit()"}, + // got error + + {"_ZN5clang7ASTUnit19CleanTemporaryFilesEv", "clang::ASTUnit::CleanTemporaryFiles()"}, + {"_ZN5clang7ASTUnit28ClearCachedCompletionResultsEv", "clang::ASTUnit::ClearCachedCompletionResults()"}, + {"_ZN5clang7ASTUnit26CacheCodeCompletionResultsEv", "clang::ASTUnit::CacheCodeCompletionResults()"}, + {"_ZNK5clang7ASTUnit15getMainFileNameEv", "clang::ASTUnit::getMainFileName() const"}, + {"_ZN12_GLOBAL__N_111SimpleTimerD1Ev", "(anonymous namespace)::SimpleTimer::~SimpleTimer()"}, + {"_ZN5clang7ASTUnit25getOriginalSourceFileNameEv", "clang::ASTUnit::getOriginalSourceFileName()"}, + {"_ZN5clang7ASTUnit14getASTFileNameEv", "clang::ASTUnit::getASTFileName()"}, + {"_ZN5clang7ASTUnit16getBufferForFileEN4llvm9StringRefEPSs", "clang::ASTUnit::getBufferForFile(llvm::StringRef, std::string*)"}, + {"_ZN5clang7ASTUnit14ConfigureDiagsERN4llvm18IntrusiveRefCntPtrINS_10DiagnosticEEEPPKcS8_RS0_b", "clang::ASTUnit::ConfigureDiags(llvm::IntrusiveRefCntPtr&, char const**, char const**, clang::ASTUnit&, bool)"}, + + // {"_ZN5clang7ASTUnit15LoadFromASTFileERKSsN4llvm18IntrusiveRefCntPtrINS_10DiagnosticEEERKNS_17FileSystemOptionsEbPSt4pairISsPKNS3_12MemoryBufferEEjb", + // "clang::ASTUnit::LoadFromASTFile(std::string const&, llvm::IntrusiveRefCntPtr, clang::FileSystemOptions const&, bool, std::pair*, unsigned int, bool)"}, + // "clang::ASTUnit::LoadFromASTFile(std::string const&, llvm::IntrusiveRefCntPtr, clang::FileSystemOptions const&, bool, std::pair*, unsigned int, bool)" was returned + + {"_ZN5clang7ASTUnit5ParseEPN4llvm12MemoryBufferE", "clang::ASTUnit::Parse(llvm::MemoryBuffer*)"}, + {"_ZN5clang7ASTUnit15ComputePreambleERNS_18CompilerInvocationEjRb", "clang::ASTUnit::ComputePreamble(clang::CompilerInvocation&, unsigned int, bool&)"}, + {"_ZN5clang7ASTUnit36getMainBufferWithPrecompiledPreambleENS_18CompilerInvocationEbj", "clang::ASTUnit::getMainBufferWithPrecompiledPreamble(clang::CompilerInvocation, bool, unsigned int)"}, + {"_ZN5clang7ASTUnit32RealizeTopLevelDeclsFromPreambleEv", "clang::ASTUnit::RealizeTopLevelDeclsFromPreamble()"}, + {"_ZN5clang7ASTUnit39RealizePreprocessedEntitiesFromPreambleEv", "clang::ASTUnit::RealizePreprocessedEntitiesFromPreamble()"}, + {"_ZN5clang7ASTUnit15pp_entity_beginEv", "clang::ASTUnit::pp_entity_begin()"}, + {"_ZN5clang7ASTUnit13pp_entity_endEv", "clang::ASTUnit::pp_entity_end()"}, + {"_ZNK5clang7ASTUnit14getMaxPCHLevelEv", "clang::ASTUnit::getMaxPCHLevel() const"}, + {"_ZN5clang7ASTUnit26LoadFromCompilerInvocationEb", "clang::ASTUnit::LoadFromCompilerInvocation(bool)"}, + {"_ZN5clang7ASTUnit26LoadFromCompilerInvocationEPNS_18CompilerInvocationEN4llvm18IntrusiveRefCntPtrINS_10DiagnosticEEEbbbbb", "clang::ASTUnit::LoadFromCompilerInvocation(clang::CompilerInvocation*, llvm::IntrusiveRefCntPtr, bool, bool, bool, bool, bool)"}, + {"_ZN5clang7ASTUnit19LoadFromCommandLineEPPKcS3_N4llvm18IntrusiveRefCntPtrINS_10DiagnosticEEENS4_9StringRefEbbPSt4pairISsPKNS4_12MemoryBufferEEjbbbbb", "clang::ASTUnit::LoadFromCommandLine(char const**, char const**, llvm::IntrusiveRefCntPtr, llvm::StringRef, bool, bool, std::pair*, unsigned int, bool, bool, bool, bool, bool)"}, + {"_ZN5clang7ASTUnit7ReparseEPSt4pairISsPKN4llvm12MemoryBufferEEj", "clang::ASTUnit::Reparse(std::pair*, unsigned int)"}, + + // {"_ZN5clang7ASTUnit12CodeCompleteEN4llvm9StringRefEjjPSt4pairISsPKNS1_12MemoryBufferEEjbbRNS_20CodeCompleteConsumerERNS_10DiagnosticERNS_11LangOptionsERNS_13SourceManagerERNS_11FileManagerERNS1_15SmallVectorImplINS_16StoredDiagnosticEEERNSJ_IS6_EE", + // "clang::ASTUnit::CodeComplete(llvm::StringRef, unsigned int, unsigned int, std::pair*, unsigned int, bool, bool, clang::CodeCompleteConsumer&, clang::Diagnostic&, clang::LangOptions&, clang::SourceManager&, clang::FileManager&, llvm::SmallVectorImpl&, llvm::SmallVectorImpl&)"}, + // "clang::ASTUnit::CodeComplete(llvm::StringRef, unsigned int, unsigned int, std::pair*, unsigned int, bool, bool, clang::CodeCompleteConsumer&, clang::Diagnostic&, clang::LangOptions&, clang::SourceManager&, clang::FileManager&, llvm::SmallVectorImpl&, clang::FileManager&&)" was returned + + {"_ZN5clang7ASTUnit4SaveEN4llvm9StringRefE", "clang::ASTUnit::Save(llvm::StringRef)"}, + {"_ZN12_GLOBAL__N_129AugmentedCodeCompleteConsumerD1Ev", "(anonymous namespace)::AugmentedCodeCompleteConsumer::~AugmentedCodeCompleteConsumer()"}, + {"_ZN12_GLOBAL__N_129AugmentedCodeCompleteConsumerD0Ev", "(anonymous namespace)::AugmentedCodeCompleteConsumer::~AugmentedCodeCompleteConsumer()"}, + {"_ZN12_GLOBAL__N_129AugmentedCodeCompleteConsumer26ProcessCodeCompleteResultsERN5clang4SemaENS1_21CodeCompletionContextEPNS1_20CodeCompletionResultEj", "(anonymous namespace)::AugmentedCodeCompleteConsumer::ProcessCodeCompleteResults(clang::Sema&, clang::CodeCompletionContext, clang::CodeCompletionResult*, unsigned int)"}, + {"_ZN12_GLOBAL__N_129AugmentedCodeCompleteConsumer25ProcessOverloadCandidatesERN5clang4SemaEjPNS1_20CodeCompleteConsumer17OverloadCandidateEj", "(anonymous namespace)::AugmentedCodeCompleteConsumer::ProcessOverloadCandidates(clang::Sema&, unsigned int, clang::CodeCompleteConsumer::OverloadCandidate*, unsigned int)"}, + {"_ZN12_GLOBAL__N_129AugmentedCodeCompleteConsumer12getAllocatorEv", "(anonymous namespace)::AugmentedCodeCompleteConsumer::getAllocator()"}, + {"_ZN12_GLOBAL__N_122StoredDiagnosticClientD1Ev", "(anonymous namespace)::StoredDiagnosticClient::~StoredDiagnosticClient()"}, + {"_ZN12_GLOBAL__N_122StoredDiagnosticClientD0Ev", "(anonymous namespace)::StoredDiagnosticClient::~StoredDiagnosticClient()"}, + {"_ZN12_GLOBAL__N_122StoredDiagnosticClient16HandleDiagnosticEN5clang10Diagnostic5LevelERKNS1_14DiagnosticInfoE", "(anonymous namespace)::StoredDiagnosticClient::HandleDiagnostic(clang::Diagnostic::Level, clang::DiagnosticInfo const&)"}, + {"_ZN12_GLOBAL__N_124PrecompilePreambleAction17CreateASTConsumerERN5clang16CompilerInstanceEN4llvm9StringRefE", "(anonymous namespace)::PrecompilePreambleAction::CreateASTConsumer(clang::CompilerInstance&, llvm::StringRef)"}, + {"_ZN12_GLOBAL__N_124PrecompilePreambleActionD1Ev", "(anonymous namespace)::PrecompilePreambleAction::~PrecompilePreambleAction()"}, + {"_ZN12_GLOBAL__N_124PrecompilePreambleActionD0Ev", "(anonymous namespace)::PrecompilePreambleAction::~PrecompilePreambleAction()"}, + {"_ZN12_GLOBAL__N_124PrecompilePreambleAction27usesCompleteTranslationUnitEv", "(anonymous namespace)::PrecompilePreambleAction::usesCompleteTranslationUnit()"}, + {"_ZNK12_GLOBAL__N_124PrecompilePreambleAction17hasASTFileSupportEv", "(anonymous namespace)::PrecompilePreambleAction::hasASTFileSupport() const"}, + {"_ZNK12_GLOBAL__N_124PrecompilePreambleAction24hasCodeCompletionSupportEv", "(anonymous namespace)::PrecompilePreambleAction::hasCodeCompletionSupport() const"}, + {"_ZN12_GLOBAL__N_126PrecompilePreambleConsumerD1Ev", "(anonymous namespace)::PrecompilePreambleConsumer::~PrecompilePreambleConsumer()"}, + {"_ZN12_GLOBAL__N_126PrecompilePreambleConsumerD0Ev", "(anonymous namespace)::PrecompilePreambleConsumer::~PrecompilePreambleConsumer()"}, + {"_ZN12_GLOBAL__N_126PrecompilePreambleConsumer18HandleTopLevelDeclEN5clang12DeclGroupRefE", "(anonymous namespace)::PrecompilePreambleConsumer::HandleTopLevelDecl(clang::DeclGroupRef)"}, + {"_ZN12_GLOBAL__N_126PrecompilePreambleConsumer21HandleTranslationUnitERN5clang10ASTContextE", "(anonymous namespace)::PrecompilePreambleConsumer::HandleTranslationUnit(clang::ASTContext&)"}, + {"_ZN12_GLOBAL__N_126PrecompilePreambleConsumer27GetASTSerializationListenerEv", "(anonymous namespace)::PrecompilePreambleConsumer::GetASTSerializationListener()"}, + {"_ZN12_GLOBAL__N_126PrecompilePreambleConsumer28SerializedPreprocessedEntityEPN5clang18PreprocessedEntityEy", "(anonymous namespace)::PrecompilePreambleConsumer::SerializedPreprocessedEntity(clang::PreprocessedEntity*, unsigned long long)"}, + + // {"_ZThn1912_N12_GLOBAL__N_126PrecompilePreambleConsumerD1Ev", + // "non-virtual thunk to (anonymous namespace)::PrecompilePreambleConsumer::~PrecompilePreambleConsumer()"}, + // "virtual function non-virtual override offset : -1912 (anonymous namespace)::PrecompilePreambleConsumer::~PrecompilePreambleConsumer()" was returned + + + // {"_ZThn1912_N12_GLOBAL__N_126PrecompilePreambleConsumerD0Ev", + // "non-virtual thunk to (anonymous namespace)::PrecompilePreambleConsumer::~PrecompilePreambleConsumer()"}, + // "virtual function non-virtual override offset : -1912 (anonymous namespace)::PrecompilePreambleConsumer::~PrecompilePreambleConsumer()" was returned + + + // {"_ZThn1912_N12_GLOBAL__N_126PrecompilePreambleConsumer28SerializedPreprocessedEntityEPN5clang18PreprocessedEntityEy", + // "non-virtual thunk to (anonymous namespace)::PrecompilePreambleConsumer::SerializedPreprocessedEntity(clang::PreprocessedEntity*, unsigned long long)"}, + // "virtual function non-virtual override offset : -1912 (anonymous namespace)::PrecompilePreambleConsumer::SerializedPreprocessedEntity(clang::PreprocessedEntity*, unsigned long long)" was returned + + {"_ZN12_GLOBAL__N_125TopLevelDeclTrackerAction17CreateASTConsumerERN5clang16CompilerInstanceEN4llvm9StringRefE", "(anonymous namespace)::TopLevelDeclTrackerAction::CreateASTConsumer(clang::CompilerInstance&, llvm::StringRef)"}, + {"_ZN12_GLOBAL__N_125TopLevelDeclTrackerActionD1Ev", "(anonymous namespace)::TopLevelDeclTrackerAction::~TopLevelDeclTrackerAction()"}, + {"_ZN12_GLOBAL__N_125TopLevelDeclTrackerActionD0Ev", "(anonymous namespace)::TopLevelDeclTrackerAction::~TopLevelDeclTrackerAction()"}, + {"_ZN12_GLOBAL__N_125TopLevelDeclTrackerAction27usesCompleteTranslationUnitEv", "(anonymous namespace)::TopLevelDeclTrackerAction::usesCompleteTranslationUnit()"}, + {"_ZNK12_GLOBAL__N_125TopLevelDeclTrackerAction24hasCodeCompletionSupportEv", "(anonymous namespace)::TopLevelDeclTrackerAction::hasCodeCompletionSupport() const"}, + {"_ZN12_GLOBAL__N_127TopLevelDeclTrackerConsumerD1Ev", "(anonymous namespace)::TopLevelDeclTrackerConsumer::~TopLevelDeclTrackerConsumer()"}, + {"_ZN12_GLOBAL__N_127TopLevelDeclTrackerConsumerD0Ev", "(anonymous namespace)::TopLevelDeclTrackerConsumer::~TopLevelDeclTrackerConsumer()"}, + {"_ZN12_GLOBAL__N_127TopLevelDeclTrackerConsumer18HandleTopLevelDeclEN5clang12DeclGroupRefE", "(anonymous namespace)::TopLevelDeclTrackerConsumer::HandleTopLevelDecl(clang::DeclGroupRef)"}, + {"_ZN12_GLOBAL__N_127TopLevelDeclTrackerConsumer21HandleInterestingDeclEN5clang12DeclGroupRefE", "(anonymous namespace)::TopLevelDeclTrackerConsumer::HandleInterestingDecl(clang::DeclGroupRef)"}, + {"_ZN12_GLOBAL__N_116ASTInfoCollectorD1Ev", "(anonymous namespace)::ASTInfoCollector::~ASTInfoCollector()"}, + {"_ZN12_GLOBAL__N_116ASTInfoCollectorD0Ev", "(anonymous namespace)::ASTInfoCollector::~ASTInfoCollector()"}, + {"_ZN12_GLOBAL__N_116ASTInfoCollector19ReadLanguageOptionsERKN5clang11LangOptionsE", "(anonymous namespace)::ASTInfoCollector::ReadLanguageOptions(clang::LangOptions const&)"}, + {"_ZN12_GLOBAL__N_116ASTInfoCollector16ReadTargetTripleEN4llvm9StringRefE", "(anonymous namespace)::ASTInfoCollector::ReadTargetTriple(llvm::StringRef)"}, + + // {"_ZN12_GLOBAL__N_116ASTInfoCollector20ReadPredefinesBufferERKN4llvm11SmallVectorIN5clang18PCHPredefinesBlockELj2EEENS1_9StringRefERSs", + // "(anonymous namespace)::ASTInfoCollector::ReadPredefinesBuffer(llvm::SmallVector const&, llvm::StringRef, std::string&)"}, + // "(anonymous namespace)::ASTInfoCollector::ReadPredefinesBuffer(llvm::SmallVector const&, llvm::StringRef, std::string&)" was returned + + {"_ZN12_GLOBAL__N_116ASTInfoCollector18ReadHeaderFileInfoERKN5clang14HeaderFileInfoEj", "(anonymous namespace)::ASTInfoCollector::ReadHeaderFileInfo(clang::HeaderFileInfo const&, unsigned int)"}, + {"_ZN12_GLOBAL__N_116ASTInfoCollector11ReadCounterEj", "(anonymous namespace)::ASTInfoCollector::ReadCounter(unsigned int)"}, + {"_ZN5clang19PreprocessorOptions15addRemappedFileEN4llvm9StringRefEPKNS1_12MemoryBufferE", "clang::PreprocessorOptions::addRemappedFile(llvm::StringRef, llvm::MemoryBuffer const*)"}, + + // {"_ZN4llvm15SmallVectorImplIPKcE6insertIPS2_EES5_S5_T_S6_", + // "char const** llvm::SmallVectorImpl::insert(char const**, char const**, char const**)"}, + // got error + + {"_ZN4llvm15SmallVectorImplIN5clang16StoredDiagnosticEE4swapERS3_", "llvm::SmallVectorImpl::swap(llvm::SmallVectorImpl&)"}, + {"_ZN5clang11LangOptionsaSERKS0_", "clang::LangOptions::operator=(clang::LangOptions const&)"}, + + // {"_ZN4llvm15SmallVectorImplIN5clang16StoredDiagnosticEE6insertIPS2_EES5_S5_T_S6_", + // "clang::StoredDiagnostic* llvm::SmallVectorImpl::insert(clang::StoredDiagnostic*, clang::StoredDiagnostic*, clang::StoredDiagnostic*)"}, + // got error + + {"_ZN4llvm15SmallVectorImplIN5clang16StoredDiagnosticEE9push_backERKS2_", "llvm::SmallVectorImpl::push_back(clang::StoredDiagnostic const&)"}, + {"_ZN5clang9ASTWriterD1Ev", "clang::ASTWriter::~ASTWriter()"}, + + // {"_ZN4llvm15SmallVectorImplIN5clang16StoredDiagnosticEE6appendIPS2_EEvT_S6_", + // "void llvm::SmallVectorImpl::append(clang::StoredDiagnostic*, clang::StoredDiagnostic*)"}, + // got error + + + // {"_ZN4llvm23SmallVectorTemplateBaseIN5clang16StoredDiagnosticELb0EE18uninitialized_copyIPS2_S5_EEvT_S6_T0_", + // "void llvm::SmallVectorTemplateBase::uninitialized_copy(clang::StoredDiagnostic*, clang::StoredDiagnostic*, clang::StoredDiagnostic*)"}, + // got error + + {"_ZNSt6vectorIN5clang15CharSourceRangeESaIS1_EEaSERKS3_", "std::vector>::operator=(std::vector> const&)"}, + {"_ZNSt6vectorIN5clang9FixItHintESaIS1_EEaSERKS3_", "std::vector>::operator=(std::vector> const&)"}, + {"_ZNSt6vectorIN5clang9FixItHintESaIS1_EEC2ERKS3_", "std::vector>::vector(std::vector> const&)"}, + {"_ZNSt6vectorIN5clang15CharSourceRangeESaIS1_EEC2ERKS3_", "std::vector>::vector(std::vector> const&)"}, + + // {"_ZNSt6__copyILb0ESt26random_access_iterator_tagE4copyIPN5clang16StoredDiagnosticES5_EET0_T_S7_S6_", + // "clang::StoredDiagnostic* std::__copy::copy(clang::StoredDiagnostic*, clang::StoredDiagnostic*, clang::StoredDiagnostic*)"}, + // got error + + + // {"_ZNSt15__copy_backwardILb0ESt26random_access_iterator_tagE8__copy_bIPN5clang16StoredDiagnosticES5_EET0_T_S7_S6_", + // "clang::StoredDiagnostic* std::__copy_backward::__copy_b(clang::StoredDiagnostic*, clang::StoredDiagnostic*, clang::StoredDiagnostic*)"}, + // got error + + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang16StoredDiagnosticELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + + // {"_ZNSt6vectorIPN5clang18PreprocessedEntityESaIS2_EE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPS2_S4_EEEEvS9_T_SA_St20forward_iterator_tag", + // "void std::vector>::_M_range_insert<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, std::forward_iterator_tag)"}, + // got error + + {"_ZNSt6vectorIPN5clang18PreprocessedEntityESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, clang::PreprocessedEntity* const&)"}, + + // {"_ZNSt6vectorIPN5clang4DeclESaIS2_EE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPS2_S4_EEEEvS9_T_SA_St20forward_iterator_tag", + // "void std::vector>::_M_range_insert<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, std::forward_iterator_tag)"}, + // got error + + + // {"_ZN4llvm9StringMapISt4pairIxlENS_15MallocAllocatorEE16GetOrCreateValueIS2_EERNS_14StringMapEntryIS2_EENS_9StringRefET_", + // "llvm::StringMapEntry>& llvm::StringMap, llvm::MallocAllocator>::GetOrCreateValue>(llvm::StringRef, std::pair)"}, + // "llvm::StringMapEntry>& llvm::StringMap, llvm::MallocAllocator>::GetOrCreateValue>(llvm::StringRef, long long)" was returned + + {"_ZNSt8_Rb_treeIN5clang6FileIDESt4pairIKS1_St6vectorIPNS0_18PreprocessedEntityESaIS6_EEESt10_Select1stIS9_ESt4lessIS1_ESaIS9_EE8_M_eraseEPSt13_Rb_tree_nodeIS9_E", "std::_Rb_tree>>, std::_Select1st>>>, std::less, std::allocator>>>>::_M_erase(std::_Rb_tree_node>>>*)"}, + {"_ZNSt6vectorIN5clang7ASTUnit26CachedCodeCompletionResultESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, clang::ASTUnit::CachedCodeCompletionResult const&)"}, + {"_ZN4llvm8DenseMapIN5clang7CanQualINS1_4TypeEEEjNS_12DenseMapInfoIS4_EENS5_IjEEE16InsertIntoBucketERKS4_RKjPSt4pairIS4_jE", "llvm::DenseMap, unsigned int, llvm::DenseMapInfo>, llvm::DenseMapInfo>::InsertIntoBucket(clang::CanQual const&, unsigned int const&, std::pair, unsigned int>*)"}, + {"_ZN4llvm8DenseMapIN5clang7CanQualINS1_4TypeEEEjNS_12DenseMapInfoIS4_EENS5_IjEEE4growEj", "llvm::DenseMap, unsigned int, llvm::DenseMapInfo>, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNSt6vectorIPN5clang4DeclESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, clang::Decl* const&)"}, + {"_ZN4llvm15BitstreamWriterD2Ev", "llvm::BitstreamWriter::~BitstreamWriter()"}, + + // {"_ZThn8_N5clang9ASTWriterD1Ev", + // "non-virtual thunk to clang::ASTWriter::~ASTWriter()"}, + // "virtual function non-virtual override offset : -8 clang::ASTWriter::~ASTWriter()" was returned + + {"_ZN5clang9ASTWriterD2Ev", "clang::ASTWriter::~ASTWriter()"}, + {"_ZN5clang9ASTWriterD0Ev", "clang::ASTWriter::~ASTWriter()"}, + + // {"_ZThn8_N5clang9ASTWriterD0Ev", + // "non-virtual thunk to clang::ASTWriter::~ASTWriter()"}, + // "virtual function non-virtual override offset : -8 clang::ASTWriter::~ASTWriter()" was returned + + {"_ZNSt8_Rb_treeIPN5clang10SwitchCaseESt4pairIKS2_jESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZNSt8_Rb_treeIPN5clang9LabelStmtESt4pairIKS2_jESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + + // {"_ZN4llvm15SmallVectorImplIN5clang20CodeCompletionResultEE6insertIPS2_EES5_S5_T_S6_", + // "clang::CodeCompletionResult* llvm::SmallVectorImpl::insert(clang::CodeCompletionResult*, clang::CodeCompletionResult*, clang::CodeCompletionResult*)"}, + // got error + + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang20CodeCompletionResultELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang20CodeCompletionString5ChunkELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN4llvm9StringSetINS_16BumpPtrAllocatorEE6insertENS_9StringRefE", "llvm::StringSet::insert(llvm::StringRef)"}, + + // {"_ZNSt6vectorISt4pairISsSsESaIS1_EE5clearEv", + // "std::vector, std::allocator>>::clear()"}, + // "std::vector, std::allocator>::clear()" was returned + + {"_ZN5clang18CompilerInvocationC2ERKS0_", "clang::CompilerInvocation::CompilerInvocation(clang::CompilerInvocation const&)"}, + {"_ZN5clang19PreprocessorOptionsC2ERKS0_", "clang::PreprocessorOptions::PreprocessorOptions(clang::PreprocessorOptions const&)"}, + + // {"_ZNSt6vectorISt4pairISsPKN4llvm12MemoryBufferEESaIS5_EEC2ERKS7_", + // "std::vector, std::allocator>>::vector(std::vector, std::allocator>> const&)"}, + // "std::vector, std::allocator>::string(std::allocator const&)" was returned + + + // {"_ZNSt6vectorISt4pairISsSsESaIS1_EEC2ERKS3_", + // "std::vector, std::allocator>>::vector(std::vector, std::allocator>> const&)"}, + // "std::vector, std::allocator>::string(std::allocator const&)" was returned + + + // {"_ZNSt6vectorISt4pairISsbESaIS1_EEC2ERKS3_", + // "std::vector, std::allocator>>::vector(std::vector, std::allocator>> const&)"}, + // "std::vector, std::allocator>::string(std::allocator const&)" was returned + + {"_ZNSt6vectorIN5clang19HeaderSearchOptions5EntryESaIS2_EEC2ERKS4_", "std::vector>::vector(std::vector> const&)"}, + {"_ZN5clang15FrontendOptionsC2ERKS0_", "clang::FrontendOptions::FrontendOptions(clang::FrontendOptions const&)"}, + + // {"_ZNSt6vectorIS_ISsSaISsEESaIS1_EEC2ERKS3_", + // "std::vector>, std::allocator>>>::vector(std::vector>, std::allocator>>> const&)"}, + // "std::vector>, std::allocator>>::string(std::allocator> const&)" was returned + + + // {"_ZNSt6vectorISt4pairIN5clang9InputKindESsESaIS3_EEC2ERKS5_", + // "std::vector, std::allocator>>::vector(std::vector, std::allocator>> const&)"}, + // "std::vector, std::allocator>::string(std::allocator const&)" was returned + + {"_ZN5clang17DiagnosticOptionsC2ERKS0_", "clang::DiagnosticOptions::DiagnosticOptions(clang::DiagnosticOptions const&)"}, + {"_ZN5clang14CodeGenOptionsC2ERKS0_", "clang::CodeGenOptions::CodeGenOptions(clang::CodeGenOptions const&)"}, + {"_ZN5clang15AnalyzerOptionsC2ERKS0_", "clang::AnalyzerOptions::AnalyzerOptions(clang::AnalyzerOptions const&)"}, + {"_ZNSt6vectorIN5clang8AnalysesESaIS1_EEC2ERKS3_", "std::vector>::vector(std::vector> const&)"}, + {"_ZN5clang12PCHGenerator14InitializeSemaERNS_4SemaE", "clang::PCHGenerator::InitializeSema(clang::Sema&)"}, + {"_ZNSt6vectorIySaIyEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPyS1_EERKy", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, unsigned long long const&)"}, + {"_ZN5clang12PCHGeneratorD1Ev", "clang::PCHGenerator::~PCHGenerator()"}, + {"_ZN5clang12PCHGeneratorD0Ev", "clang::PCHGenerator::~PCHGenerator()"}, + + // {"_ZNSt6vectorISt4pairISsPKN4llvm12MemoryBufferEESaIS5_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS5_S7_EERKS5_", + // "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + // "std::vector, std::allocator>::_M_insert_aux(__gnu_cxx::__normal_iterator>, llvm::MemoryBuffer const* const&)" was returned + + {"_ZN5clang14BoostConAction17CreateASTConsumerERNS_16CompilerInstanceEN4llvm9StringRefE", "clang::BoostConAction::CreateASTConsumer(clang::CompilerInstance&, llvm::StringRef)"}, + {"_ZN12_GLOBAL__N_119BoostConASTConsumerD1Ev", "(anonymous namespace)::BoostConASTConsumer::~BoostConASTConsumer()"}, + {"_ZN12_GLOBAL__N_119BoostConASTConsumerD0Ev", "(anonymous namespace)::BoostConASTConsumer::~BoostConASTConsumer()"}, + {"_ZN12_GLOBAL__N_119BoostConASTConsumer21HandleTranslationUnitERN5clang10ASTContextE", "(anonymous namespace)::BoostConASTConsumer::HandleTranslationUnit(clang::ASTContext&)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_119BoostConASTConsumerEE12TraverseDeclEPNS_4DeclE", "clang::RecursiveASTVisitor<(anonymous namespace)::BoostConASTConsumer>::TraverseDecl(clang::Decl*)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_119BoostConASTConsumerEE12TraverseStmtEPNS_4StmtE", "clang::RecursiveASTVisitor<(anonymous namespace)::BoostConASTConsumer>::TraverseStmt(clang::Stmt*)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_119BoostConASTConsumerEE15TraverseTypeLocENS_7TypeLocE", "clang::RecursiveASTVisitor<(anonymous namespace)::BoostConASTConsumer>::TraverseTypeLoc(clang::TypeLoc)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_119BoostConASTConsumerEE27TraverseNestedNameSpecifierEPNS_19NestedNameSpecifierE", "clang::RecursiveASTVisitor<(anonymous namespace)::BoostConASTConsumer>::TraverseNestedNameSpecifier(clang::NestedNameSpecifier*)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_119BoostConASTConsumerEE27TraverseTemplateArgumentLocERKNS_19TemplateArgumentLocE", "clang::RecursiveASTVisitor<(anonymous namespace)::BoostConASTConsumer>::TraverseTemplateArgumentLoc(clang::TemplateArgumentLoc const&)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_119BoostConASTConsumerEE24TraverseTemplateArgumentERKNS_16TemplateArgumentE", "clang::RecursiveASTVisitor<(anonymous namespace)::BoostConASTConsumer>::TraverseTemplateArgument(clang::TemplateArgument const&)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_119BoostConASTConsumerEE12TraverseTypeENS_8QualTypeE", "clang::RecursiveASTVisitor<(anonymous namespace)::BoostConASTConsumer>::TraverseType(clang::QualType)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_119BoostConASTConsumerEE24TraverseDeclaratorHelperEPNS_14DeclaratorDeclE", "clang::RecursiveASTVisitor<(anonymous namespace)::BoostConASTConsumer>::TraverseDeclaratorHelper(clang::DeclaratorDecl*)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_119BoostConASTConsumerEE22TraverseFunctionHelperEPNS_12FunctionDeclE", "clang::RecursiveASTVisitor<(anonymous namespace)::BoostConASTConsumer>::TraverseFunctionHelper(clang::FunctionDecl*)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_119BoostConASTConsumerEE23TraverseCXXRecordHelperEPNS_13CXXRecordDeclE", "clang::RecursiveASTVisitor<(anonymous namespace)::BoostConASTConsumer>::TraverseCXXRecordHelper(clang::CXXRecordDecl*)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_119BoostConASTConsumerEE23WalkUpFromCXXRecordDeclEPNS_13CXXRecordDeclE", "clang::RecursiveASTVisitor<(anonymous namespace)::BoostConASTConsumer>::WalkUpFromCXXRecordDecl(clang::CXXRecordDecl*)"}, + {"_ZN5clang14BoostConActionD1Ev", "clang::BoostConAction::~BoostConAction()"}, + {"_ZN5clang14BoostConActionD0Ev", "clang::BoostConAction::~BoostConAction()"}, + {"_ZNK5clang38DependentTemplateSpecializationTypeLoc9getArgLocEj", "clang::DependentTemplateSpecializationTypeLoc::getArgLoc(unsigned int) const"}, + {"_ZNK5clang29TemplateSpecializationTypeLoc9getArgLocEj", "clang::TemplateSpecializationTypeLoc::getArgLoc(unsigned int) const"}, + {"_ZN5clang11CacheTokensERNS_12PreprocessorEPN4llvm14raw_fd_ostreamE", "clang::CacheTokens(clang::Preprocessor&, llvm::raw_fd_ostream*)"}, + {"_ZN5clang31OnDiskChainedHashTableGeneratorIN12_GLOBAL__N_121FileEntryPTHEntryInfoEE6insertENS1_18PTHEntryKeyVariantERKNS1_8PTHEntryE", "clang::OnDiskChainedHashTableGenerator<(anonymous namespace)::FileEntryPTHEntryInfo>::insert((anonymous namespace)::PTHEntryKeyVariant, (anonymous namespace)::PTHEntry const&)"}, + {"_ZN12_GLOBAL__N_19PTHWriter9EmitTokenERKN5clang5TokenE", "(anonymous namespace)::PTHWriter::EmitToken(clang::Token const&)"}, + {"_ZN12_GLOBAL__N_112StatListenerD1Ev", "(anonymous namespace)::StatListener::~StatListener()"}, + {"_ZN12_GLOBAL__N_112StatListenerD0Ev", "(anonymous namespace)::StatListener::~StatListener()"}, + {"_ZN12_GLOBAL__N_112StatListener7getStatEPKcR4statPi", "(anonymous namespace)::StatListener::getStat(char const*, stat&, int*)"}, + {"_ZN5clang2io6Emit32ERN4llvm11raw_ostreamEj", "clang::io::Emit32(llvm::raw_ostream&, unsigned int)"}, + {"_ZN5clang2io6Emit64ERN4llvm11raw_ostreamEy", "clang::io::Emit64(llvm::raw_ostream&, unsigned long long)"}, + {"_ZN4llvm8DenseMapIPKN5clang14IdentifierInfoEjNS_12DenseMapInfoIS4_EENS5_IjEEE16InsertIntoBucketERKS4_RKjPSt4pairIS4_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::IdentifierInfo const* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang14IdentifierInfoEjNS_12DenseMapInfoIS4_EENS5_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang16CompilerInstanceC1Ev", "clang::CompilerInstance::CompilerInstance()"}, + {"_ZN5clang16CompilerInstanceC2Ev", "clang::CompilerInstance::CompilerInstance()"}, + {"_ZN5clang16CompilerInstanceD1Ev", "clang::CompilerInstance::~CompilerInstance()"}, + {"_ZN5clang16CompilerInstanceD2Ev", "clang::CompilerInstance::~CompilerInstance()"}, + {"_ZN5clang16CompilerInstance14setLLVMContextEPN4llvm11LLVMContextE", "clang::CompilerInstance::setLLVMContext(llvm::LLVMContext*)"}, + {"_ZN5clang16CompilerInstance13setInvocationEPNS_18CompilerInvocationE", "clang::CompilerInstance::setInvocation(clang::CompilerInvocation*)"}, + {"_ZN5clang16CompilerInstance14setDiagnosticsEPNS_10DiagnosticE", "clang::CompilerInstance::setDiagnostics(clang::Diagnostic*)"}, + {"_ZN5clang16CompilerInstance9setTargetEPNS_10TargetInfoE", "clang::CompilerInstance::setTarget(clang::TargetInfo*)"}, + {"_ZN5clang16CompilerInstance14setFileManagerEPNS_11FileManagerE", "clang::CompilerInstance::setFileManager(clang::FileManager*)"}, + {"_ZN5clang16CompilerInstance16setSourceManagerEPNS_13SourceManagerE", "clang::CompilerInstance::setSourceManager(clang::SourceManager*)"}, + {"_ZN5clang16CompilerInstance15setPreprocessorEPNS_12PreprocessorE", "clang::CompilerInstance::setPreprocessor(clang::Preprocessor*)"}, + {"_ZN5clang16CompilerInstance13setASTContextEPNS_10ASTContextE", "clang::CompilerInstance::setASTContext(clang::ASTContext*)"}, + {"_ZN5clang16CompilerInstance7setSemaEPNS_4SemaE", "clang::CompilerInstance::setSema(clang::Sema*)"}, + {"_ZN5clang16CompilerInstance14setASTConsumerEPNS_11ASTConsumerE", "clang::CompilerInstance::setASTConsumer(clang::ASTConsumer*)"}, + {"_ZN5clang16CompilerInstance25setCodeCompletionConsumerEPNS_20CodeCompleteConsumerE", "clang::CompilerInstance::setCodeCompletionConsumer(clang::CodeCompleteConsumer*)"}, + {"_ZN5clang16CompilerInstance17createDiagnosticsEiPKPKcPNS_16DiagnosticClientE", "clang::CompilerInstance::createDiagnostics(int, char const* const*, clang::DiagnosticClient*)"}, + {"_ZN5clang16CompilerInstance17createDiagnosticsERKNS_17DiagnosticOptionsEiPKPKcPNS_16DiagnosticClientE", "clang::CompilerInstance::createDiagnostics(clang::DiagnosticOptions const&, int, char const* const*, clang::DiagnosticClient*)"}, + {"_ZN5clang16CompilerInstance17createFileManagerEv", "clang::CompilerInstance::createFileManager()"}, + {"_ZN5clang16CompilerInstance19createSourceManagerERNS_11FileManagerE", "clang::CompilerInstance::createSourceManager(clang::FileManager&)"}, + {"_ZN5clang16CompilerInstance18createPreprocessorEv", "clang::CompilerInstance::createPreprocessor()"}, + {"_ZN5clang16CompilerInstance18createPreprocessorERNS_10DiagnosticERKNS_11LangOptionsERKNS_19PreprocessorOptionsERKNS_19HeaderSearchOptionsERKNS_23DependencyOutputOptionsERKNS_10TargetInfoERKNS_15FrontendOptionsERNS_13SourceManagerERNS_11FileManagerE", "clang::CompilerInstance::createPreprocessor(clang::Diagnostic&, clang::LangOptions const&, clang::PreprocessorOptions const&, clang::HeaderSearchOptions const&, clang::DependencyOutputOptions const&, clang::TargetInfo const&, clang::FrontendOptions const&, clang::SourceManager&, clang::FileManager&)"}, + {"_ZN5clang16CompilerInstance16createASTContextEv", "clang::CompilerInstance::createASTContext()"}, + {"_ZN5clang16CompilerInstance26createPCHExternalASTSourceEN4llvm9StringRefEbbPv", "clang::CompilerInstance::createPCHExternalASTSource(llvm::StringRef, bool, bool, void*)"}, + {"_ZN5clang16CompilerInstance26createPCHExternalASTSourceEN4llvm9StringRefERKSsbbRNS_12PreprocessorERNS_10ASTContextEPvb", "clang::CompilerInstance::createPCHExternalASTSource(llvm::StringRef, std::string const&, bool, bool, clang::Preprocessor&, clang::ASTContext&, void*, bool)"}, + {"_ZN5clang16CompilerInstance28createCodeCompletionConsumerEv", "clang::CompilerInstance::createCodeCompletionConsumer()"}, + {"_ZN5clang16CompilerInstance28createCodeCompletionConsumerERNS_12PreprocessorERKSsjjbbbRN4llvm11raw_ostreamE", "clang::CompilerInstance::createCodeCompletionConsumer(clang::Preprocessor&, std::string const&, unsigned int, unsigned int, bool, bool, bool, llvm::raw_ostream&)"}, + {"_Z20EnableCodeCompletionRN5clang12PreprocessorERKSsjj", "EnableCodeCompletion(clang::Preprocessor&, std::string const&, unsigned int, unsigned int)"}, + {"_ZN5clang16CompilerInstance19createFrontendTimerEv", "clang::CompilerInstance::createFrontendTimer()"}, + {"_ZN5clang16CompilerInstance10createSemaEbPNS_20CodeCompleteConsumerE", "clang::CompilerInstance::createSema(bool, clang::CodeCompleteConsumer*)"}, + {"_ZN5clang16CompilerInstance13addOutputFileERKNS0_10OutputFileE", "clang::CompilerInstance::addOutputFile(clang::CompilerInstance::OutputFile const&)"}, + {"_ZN5clang16CompilerInstance16clearOutputFilesEb", "clang::CompilerInstance::clearOutputFiles(bool)"}, + {"_ZN5clang16CompilerInstance23createDefaultOutputFileEbN4llvm9StringRefES2_", "clang::CompilerInstance::createDefaultOutputFile(bool, llvm::StringRef, llvm::StringRef)"}, + {"_ZN5clang16CompilerInstance16createOutputFileEN4llvm9StringRefEbbS2_S2_", "clang::CompilerInstance::createOutputFile(llvm::StringRef, bool, bool, llvm::StringRef, llvm::StringRef)"}, + + // {"_ZN5clang16CompilerInstance16createOutputFileEN4llvm9StringRefERSsbbS2_S2_PSsS4_", + // "clang::CompilerInstance::createOutputFile(llvm::StringRef, std::string&, bool, bool, llvm::StringRef, llvm::StringRef, std::string*, std::string*)"}, + // "clang::CompilerInstance::createOutputFile(llvm::StringRef, std::string&, bool, bool, llvm::StringRef, llvm::StringRef, std::string*, std::string&)" was returned + + {"_ZN5clang16CompilerInstance23InitializeSourceManagerEN4llvm9StringRefE", "clang::CompilerInstance::InitializeSourceManager(llvm::StringRef)"}, + {"_ZN5clang16CompilerInstance23InitializeSourceManagerEN4llvm9StringRefERNS_10DiagnosticERNS_11FileManagerERNS_13SourceManagerERKNS_15FrontendOptionsE", "clang::CompilerInstance::InitializeSourceManager(llvm::StringRef, clang::Diagnostic&, clang::FileManager&, clang::SourceManager&, clang::FrontendOptions const&)"}, + {"_ZN5clang16CompilerInstance13ExecuteActionERNS_14FrontendActionE", "clang::CompilerInstance::ExecuteAction(clang::FrontendAction&)"}, + {"_ZNSt10_List_baseIN5clang16CompilerInstance10OutputFileESaIS2_EE8_M_clearEv", "std::_List_base>::_M_clear()"}, + {"_ZN5clang28PrintingCodeCompleteConsumer12getAllocatorEv", "clang::PrintingCodeCompleteConsumer::getAllocator()"}, + {"_ZN5clang20CodeCompleteConsumer26ProcessCodeCompleteResultsERNS_4SemaENS_21CodeCompletionContextEPNS_20CodeCompletionResultEj", "clang::CodeCompleteConsumer::ProcessCodeCompleteResults(clang::Sema&, clang::CodeCompletionContext, clang::CodeCompletionResult*, unsigned int)"}, + {"_ZN5clang20CodeCompleteConsumer25ProcessOverloadCandidatesERNS_4SemaEjPNS0_17OverloadCandidateEj", "clang::CodeCompleteConsumer::ProcessOverloadCandidates(clang::Sema&, unsigned int, clang::CodeCompleteConsumer::OverloadCandidate*, unsigned int)"}, + {"_ZN5clang23ChainedDiagnosticClientD1Ev", "clang::ChainedDiagnosticClient::~ChainedDiagnosticClient()"}, + {"_ZN5clang23ChainedDiagnosticClientD0Ev", "clang::ChainedDiagnosticClient::~ChainedDiagnosticClient()"}, + {"_ZN5clang23ChainedDiagnosticClient15BeginSourceFileERKNS_11LangOptionsEPKNS_12PreprocessorE", "clang::ChainedDiagnosticClient::BeginSourceFile(clang::LangOptions const&, clang::Preprocessor const*)"}, + {"_ZN5clang23ChainedDiagnosticClient13EndSourceFileEv", "clang::ChainedDiagnosticClient::EndSourceFile()"}, + {"_ZNK5clang23ChainedDiagnosticClient25IncludeInDiagnosticCountsEv", "clang::ChainedDiagnosticClient::IncludeInDiagnosticCounts() const"}, + {"_ZN5clang23ChainedDiagnosticClient16HandleDiagnosticENS_10Diagnostic5LevelERKNS_14DiagnosticInfoE", "clang::ChainedDiagnosticClient::HandleDiagnostic(clang::Diagnostic::Level, clang::DiagnosticInfo const&)"}, + {"_ZN5clang18CompilerInvocation6toArgsERSt6vectorISsSaISsEE", "clang::CompilerInvocation::toArgs(std::vector>&)"}, + {"_ZN5clang18CompilerInvocation16GetResourcesPathEPKcPv", "clang::CompilerInvocation::GetResourcesPath(char const*, void*)"}, + {"_ZN5clang18CompilerInvocation15setLangDefaultsERNS_11LangOptionsENS_9InputKindENS_12LangStandard4KindE", "clang::CompilerInvocation::setLangDefaults(clang::LangOptions&, clang::InputKind, clang::LangStandard::Kind)"}, + {"_ZN5clang18CompilerInvocation14CreateFromArgsERS0_PKPKcS5_RNS_10DiagnosticE", "clang::CompilerInvocation::CreateFromArgs(clang::CompilerInvocation&, char const* const*, char const* const*, clang::Diagnostic&)"}, + {"_ZN5clang19PreprocessorOptions11addMacroDefEN4llvm9StringRefE", "clang::PreprocessorOptions::addMacroDef(llvm::StringRef)"}, + {"_ZN5clang19PreprocessorOptions13addMacroUndefEN4llvm9StringRefE", "clang::PreprocessorOptions::addMacroUndef(llvm::StringRef)"}, + {"_ZN5clang19PreprocessorOptions15addRemappedFileEN4llvm9StringRefES2_", "clang::PreprocessorOptions::addRemappedFile(llvm::StringRef, llvm::StringRef)"}, + + // {"_ZNSt6vectorISt4pairISsSsESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", + // "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + // "std::vector, std::allocator>::_M_insert_aux(__gnu_cxx::__normal_iterator>, std::string const&)" was returned + + + // {"_ZNSt6vectorISsSaISsEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPSsS1_EERKSs", + // "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, std::string const&)"}, + // "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>, std::string const&)" was returned + + + // {"_ZNSt6vectorISt4pairISsbESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", + // "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + // "std::vector, std::allocator>::_M_insert_aux(__gnu_cxx::__normal_iterator>, std::string const&)" was returned + + {"_ZN5clang19HeaderSearchOptions7AddPathEN4llvm9StringRefENS_8frontend15IncludeDirGroupEbbb", "clang::HeaderSearchOptions::AddPath(llvm::StringRef, clang::frontend::IncludeDirGroup, bool, bool, bool)"}, + {"_ZNSt6vectorIN5clang19HeaderSearchOptions5EntryESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, clang::HeaderSearchOptions::Entry const&)"}, + {"_ZN5clang20ParsedSourceLocation10FromStringEN4llvm9StringRefE", "clang::ParsedSourceLocation::FromString(llvm::StringRef)"}, + + // {"_ZNSt6vectorISt4pairIN5clang9InputKindESsESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_", + // "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + // "std::vector, std::allocator>::_M_insert_aux(__gnu_cxx::__normal_iterator>, std::string const&)" was returned + + + // {"_ZNSt6vectorIS_ISsSaISsEESaIS1_EE15_M_erase_at_endEPS1_", + // "std::vector>, std::allocator>>>::_M_erase_at_end(std::vector>*)"}, + // "std::vector>, std::allocator>>::_M_erase_at_end(std::allocator*)" was returned + + + // {"_ZNSt6vectorIS_ISsSaISsEESaIS1_EE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPS1_S3_EEmRKS1_", + // "std::vector>, std::allocator>>>::_M_fill_insert(__gnu_cxx::__normal_iterator>*, std::vector>, std::allocator>>>>, unsigned long, std::vector> const&)"}, + // "std::vector>, std::allocator>>::_M_fill_insert(__gnu_cxx::__normal_iterator*, std::allocator>>, unsigned long, std::allocator const&)" was returned + + + // {"_ZNSt6vectorISsSaISsEEC2ERKS1_", + // "std::vector>::vector(std::vector> const&)"}, + // "std::vector>::string(std::allocator const&)" was returned + + {"_ZNSt6vectorIN5clang8AnalysesESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, clang::Analyses const&)"}, + {"_ZN5clang11DocumentXML14writeDeclToXMLEPNS_4DeclE", "clang::DocumentXML::writeDeclToXML(clang::Decl*)"}, + {"_ZN5clang11DeclVisitorINS_11DocumentXML11DeclPrinterEvE5VisitEPNS_4DeclE", "clang::DeclVisitor::Visit(clang::Decl*)"}, + {"_ZN5clang11DocumentXML11DeclPrinter20VisitLinkageSpecDeclEPNS_15LinkageSpecDeclE", "clang::DocumentXML::DeclPrinter::VisitLinkageSpecDecl(clang::LinkageSpecDecl*)"}, + {"_ZN5clang11DocumentXML11DeclPrinter18VisitNamespaceDeclEPNS_13NamespaceDeclE", "clang::DocumentXML::DeclPrinter::VisitNamespaceDecl(clang::NamespaceDecl*)"}, + {"_ZN5clang11DocumentXML11DeclPrinter23VisitNamespaceAliasDeclEPNS_18NamespaceAliasDeclE", "clang::DocumentXML::DeclPrinter::VisitNamespaceAliasDecl(clang::NamespaceAliasDecl*)"}, + {"_ZN5clang11DocumentXML11DeclPrinter13VisitEnumDeclEPNS_8EnumDeclE", "clang::DocumentXML::DeclPrinter::VisitEnumDecl(clang::EnumDecl*)"}, + {"_ZN5clang11DocumentXML11DeclPrinter15VisitRecordDeclEPNS_10RecordDeclE", "clang::DocumentXML::DeclPrinter::VisitRecordDecl(clang::RecordDecl*)"}, + {"_ZN5clang11DocumentXML11DeclPrinter18VisitCXXRecordDeclEPNS_13CXXRecordDeclE", "clang::DocumentXML::DeclPrinter::VisitCXXRecordDecl(clang::CXXRecordDecl*)"}, + {"_ZN5clang11DocumentXML11DeclPrinter25VisitTemplateTypeParmDeclEPNS_20TemplateTypeParmDeclE", "clang::DocumentXML::DeclPrinter::VisitTemplateTypeParmDecl(clang::TemplateTypeParmDecl*)"}, + {"_ZN5clang11DocumentXML11DeclPrinter16VisitTypedefDeclEPNS_11TypedefDeclE", "clang::DocumentXML::DeclPrinter::VisitTypedefDecl(clang::TypedefDecl*)"}, + {"_ZN5clang11DocumentXML11DeclPrinter14VisitUsingDeclEPNS_9UsingDeclE", "clang::DocumentXML::DeclPrinter::VisitUsingDecl(clang::UsingDecl*)"}, + {"_ZN5clang11DocumentXML11DeclPrinter23VisitUsingDirectiveDeclEPNS_18UsingDirectiveDeclE", "clang::DocumentXML::DeclPrinter::VisitUsingDirectiveDecl(clang::UsingDirectiveDecl*)"}, + {"_ZN5clang11DocumentXML11DeclPrinter20VisitUsingShadowDeclEPNS_15UsingShadowDeclE", "clang::DocumentXML::DeclPrinter::VisitUsingShadowDecl(clang::UsingShadowDecl*)"}, + {"_ZN5clang11DocumentXML11DeclPrinter14VisitFieldDeclEPNS_9FieldDeclE", "clang::DocumentXML::DeclPrinter::VisitFieldDecl(clang::FieldDecl*)"}, + {"_ZN5clang11DocumentXML11DeclPrinter17VisitFunctionDeclEPNS_12FunctionDeclE", "clang::DocumentXML::DeclPrinter::VisitFunctionDecl(clang::FunctionDecl*)"}, + {"_ZN5clang11DocumentXML11DeclPrinter18VisitCXXMethodDeclEPNS_13CXXMethodDeclE", "clang::DocumentXML::DeclPrinter::VisitCXXMethodDecl(clang::CXXMethodDecl*)"}, + {"_ZN5clang11DocumentXML11DeclPrinter23VisitCXXConstructorDeclEPNS_18CXXConstructorDeclE", "clang::DocumentXML::DeclPrinter::VisitCXXConstructorDecl(clang::CXXConstructorDecl*)"}, + {"_ZN5clang11DocumentXML11DeclPrinter22VisitCXXConversionDeclEPNS_17CXXConversionDeclE", "clang::DocumentXML::DeclPrinter::VisitCXXConversionDecl(clang::CXXConversionDecl*)"}, + {"_ZN5clang11DocumentXML11DeclPrinter22VisitCXXDestructorDeclEPNS_17CXXDestructorDeclE", "clang::DocumentXML::DeclPrinter::VisitCXXDestructorDecl(clang::CXXDestructorDecl*)"}, + {"_ZN5clang11DocumentXML11DeclPrinter12VisitVarDeclEPNS_7VarDeclE", "clang::DocumentXML::DeclPrinter::VisitVarDecl(clang::VarDecl*)"}, + {"_ZN5clang11DocumentXML11DeclPrinter16VisitParmVarDeclEPNS_11ParmVarDeclE", "clang::DocumentXML::DeclPrinter::VisitParmVarDecl(clang::ParmVarDecl*)"}, + {"_ZN5clang11DocumentXML11DeclPrinter21VisitEnumConstantDeclEPNS_16EnumConstantDeclE", "clang::DocumentXML::DeclPrinter::VisitEnumConstantDecl(clang::EnumConstantDecl*)"}, + {"_ZN5clang11DocumentXML11DeclPrinter9VisitDeclEPNS_4DeclE", "clang::DocumentXML::DeclPrinter::VisitDecl(clang::Decl*)"}, + {"_ZN5clang11DocumentXML11DeclPrinter15addFunctionBodyEPNS_12FunctionDeclE", "clang::DocumentXML::DeclPrinter::addFunctionBody(clang::FunctionDecl*)"}, + {"_ZN5clang11DocumentXML11DeclPrinter11addSubNodesEPNS_13CXXRecordDeclE", "clang::DocumentXML::DeclPrinter::addSubNodes(clang::CXXRecordDecl*)"}, + {"_ZN5clang11DocumentXML11DeclPrinter11addSubNodesEPNS_10RecordDeclE", "clang::DocumentXML::DeclPrinter::addSubNodes(clang::RecordDecl*)"}, + {"_ZN5clang11DocumentXML11DeclPrinter11addSubNodesEPNS_8EnumDeclE", "clang::DocumentXML::DeclPrinter::addSubNodes(clang::EnumDecl*)"}, + {"_ZN5clang11DocumentXML11DeclPrinter17VisitTemplateDeclEPNS_12TemplateDeclE", "clang::DocumentXML::DeclPrinter::VisitTemplateDecl(clang::TemplateDecl*)"}, + {"_ZN5clang23AttachDependencyFileGenERNS_12PreprocessorERKNS_23DependencyOutputOptionsE", "clang::AttachDependencyFileGen(clang::Preprocessor&, clang::DependencyOutputOptions const&)"}, + {"_ZN12_GLOBAL__N_122DependencyFileCallbackD1Ev", "(anonymous namespace)::DependencyFileCallback::~DependencyFileCallback()"}, + {"_ZN12_GLOBAL__N_122DependencyFileCallbackD0Ev", "(anonymous namespace)::DependencyFileCallback::~DependencyFileCallback()"}, + {"_ZN12_GLOBAL__N_122DependencyFileCallback11FileChangedEN5clang14SourceLocationENS1_11PPCallbacks16FileChangeReasonENS1_6SrcMgr18CharacteristicKindE", "(anonymous namespace)::DependencyFileCallback::FileChanged(clang::SourceLocation, clang::PPCallbacks::FileChangeReason, clang::SrcMgr::CharacteristicKind)"}, + {"_ZN12_GLOBAL__N_122DependencyFileCallback13EndOfMainFileEv", "(anonymous namespace)::DependencyFileCallback::EndOfMainFile()"}, + {"_ZN5clang11DocumentXMLC1ERKSsRN4llvm11raw_ostreamE", "clang::DocumentXML::DocumentXML(std::string const&, llvm::raw_ostream&)"}, + {"_ZN5clang11DocumentXMLC2ERKSsRN4llvm11raw_ostreamE", "clang::DocumentXML::DocumentXML(std::string const&, llvm::raw_ostream&)"}, + {"_ZN5clang11DocumentXML10addSubNodeERKSs", "clang::DocumentXML::addSubNode(std::string const&)"}, + {"_ZN5clang11DocumentXML6IndentEv", "clang::DocumentXML::Indent()"}, + {"_ZN5clang11DocumentXML8toParentEv", "clang::DocumentXML::toParent()"}, + {"_ZN5clang11DocumentXML12escapeStringEPKcm", "clang::DocumentXML::escapeString(char const*, unsigned long)"}, + {"_ZN5clang11DocumentXML8finalizeEv", "clang::DocumentXML::finalize()"}, + {"_ZN5clang11DocumentXML12addAttributeEPKcRKNS_8QualTypeE", "clang::DocumentXML::addAttribute(char const*, clang::QualType const&)"}, + {"_ZN5clang11DocumentXML18addTypeRecursivelyERKNS_8QualTypeE", "clang::DocumentXML::addTypeRecursively(clang::QualType const&)"}, + {"_ZN5clang11DocumentXML15addPtrAttributeEPKcPKNS_4TypeE", "clang::DocumentXML::addPtrAttribute(char const*, clang::Type const*)"}, + {"_ZN5clang11DocumentXML18addTypeRecursivelyEPKNS_4TypeE", "clang::DocumentXML::addTypeRecursively(clang::Type const*)"}, + {"_ZN5clang11DocumentXML15addPtrAttributeEPKcPKNS_19NestedNameSpecifierE", "clang::DocumentXML::addPtrAttribute(char const*, clang::NestedNameSpecifier const*)"}, + {"_ZN5clang11DocumentXML15addPtrAttributeEPKcPKNS_13NamespaceDeclE", "clang::DocumentXML::addPtrAttribute(char const*, clang::NamespaceDecl const*)"}, + {"_ZN5clang11DocumentXML15addPtrAttributeEPKcPKNS_11DeclContextE", "clang::DocumentXML::addPtrAttribute(char const*, clang::DeclContext const*)"}, + {"_ZN5clang11DocumentXML22addContextsRecursivelyEPKNS_11DeclContextE", "clang::DocumentXML::addContextsRecursively(clang::DeclContext const*)"}, + {"_ZN5clang11DocumentXML15addPtrAttributeEPKcPKNS_9NamedDeclE", "clang::DocumentXML::addPtrAttribute(char const*, clang::NamedDecl const*)"}, + {"_ZN5clang11DocumentXML22addSourceFileAttributeERKSs", "clang::DocumentXML::addSourceFileAttribute(std::string const&)"}, + {"_ZN5clang11DocumentXML15addPtrAttributeEPKcPKNS_9LabelStmtE", "clang::DocumentXML::addPtrAttribute(char const*, clang::LabelStmt const*)"}, + {"_ZN5clang11DocumentXML11addLocationERKNS_14SourceLocationE", "clang::DocumentXML::addLocation(clang::SourceLocation const&)"}, + {"_ZN5clang11DocumentXML16addLocationRangeERKNS_11SourceRangeE", "clang::DocumentXML::addLocationRange(clang::SourceRange const&)"}, + {"_ZN5clang11DocumentXML9PrintDeclEPNS_4DeclE", "clang::DocumentXML::PrintDecl(clang::Decl*)"}, + {"_ZN5clang11DocumentXML12addAttributeISsEEvPKcRKT_", "void clang::DocumentXML::addAttribute(char const*, std::string const&)"}, + {"_ZN5clang11DocumentXML15addPtrAttributeEPKcS2_", "clang::DocumentXML::addPtrAttribute(char const*, char const*)"}, + {"_ZN5clang11DocumentXML12addAttributeIjEEvPKcRKT_", "void clang::DocumentXML::addAttribute(char const*, unsigned int const&)"}, + {"_ZN4llvm8DenseMapIPKN5clang9LabelStmtEjNS_12DenseMapInfoIS4_EENS5_IjEEE16InsertIntoBucketERKS4_RKjPSt4pairIS4_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::LabelStmt const* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang9LabelStmtEjNS_12DenseMapInfoIS4_EENS5_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKN5clang9LabelStmtEjNS_12DenseMapInfoIS4_EENS5_IjEEE6insertERKSt4pairIS4_jE", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPKN5clang11DeclContextEjNS_12DenseMapInfoIS4_EENS5_IjEEE6insertERKSt4pairIS4_jE", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPKN5clang11DeclContextEjNS_12DenseMapInfoIS4_EENS5_IjEEE16InsertIntoBucketERKS4_RKjPSt4pairIS4_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::DeclContext const* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang11DeclContextEjNS_12DenseMapInfoIS4_EENS5_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKN5clang9NamedDeclEjNS_12DenseMapInfoIS4_EENS5_IjEEE6insertERKSt4pairIS4_jE", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPKN5clang4TypeEjNS_12DenseMapInfoIS4_EENS5_IjEEE6insertERKSt4pairIS4_jE", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPKN5clang4TypeEjNS_12DenseMapInfoIS4_EENS5_IjEEE16InsertIntoBucketERKS4_RKjPSt4pairIS4_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::Type const* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang4TypeEjNS_12DenseMapInfoIS4_EENS5_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNSt8_Rb_treeIN5clang8QualTypeESt4pairIKS1_jESt10_Select1stIS4_ENS0_16QualTypeOrderingESaIS4_EE16_M_insert_uniqueERKS4_", "std::_Rb_tree, std::_Select1st>, clang::QualTypeOrdering, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZNSt8_Rb_treeIN5clang8QualTypeESt4pairIKS1_jESt10_Select1stIS4_ENS0_16QualTypeOrderingESaIS4_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS4_ERKS4_", "std::_Rb_tree, std::_Select1st>, clang::QualTypeOrdering, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt5dequeISsSaISsEE8pop_backEv", "std::deque>::pop_back()"}, + {"_ZNSt11_Deque_baseISsSaISsEE17_M_initialize_mapEm", "std::_Deque_base>::_M_initialize_map(unsigned long)"}, + + // {"_ZNSt5dequeISsSaISsEEC2ERKS1_", + // "std::deque>::deque(std::deque> const&)"}, + // "std::deque>::string(std::allocator const&)" was returned + + {"_ZN5clang14FrontendActionC1Ev", "clang::FrontendAction::FrontendAction()"}, + {"_ZN5clang14FrontendActionC2Ev", "clang::FrontendAction::FrontendAction()"}, + {"_ZN5clang14FrontendActionD0Ev", "clang::FrontendAction::~FrontendAction()"}, + {"_ZN5clang14FrontendActionD1Ev", "clang::FrontendAction::~FrontendAction()"}, + {"_ZN5clang14FrontendActionD2Ev", "clang::FrontendAction::~FrontendAction()"}, + {"_ZN5clang14FrontendAction14setCurrentFileEN4llvm9StringRefENS_9InputKindEPNS_7ASTUnitE", "clang::FrontendAction::setCurrentFile(llvm::StringRef, clang::InputKind, clang::ASTUnit*)"}, + {"_ZN5clang14FrontendAction24CreateWrappedASTConsumerERNS_16CompilerInstanceEN4llvm9StringRefE", "clang::FrontendAction::CreateWrappedASTConsumer(clang::CompilerInstance&, llvm::StringRef)"}, + {"_ZN5clang14FrontendAction15BeginSourceFileERNS_16CompilerInstanceEN4llvm9StringRefENS_9InputKindE", "clang::FrontendAction::BeginSourceFile(clang::CompilerInstance&, llvm::StringRef, clang::InputKind)"}, + {"_ZN5clang14FrontendAction7ExecuteEv", "clang::FrontendAction::Execute()"}, + {"_ZN5clang14FrontendAction13EndSourceFileEv", "clang::FrontendAction::EndSourceFile()"}, + {"_ZN5clang17ASTFrontendAction13ExecuteActionEv", "clang::ASTFrontendAction::ExecuteAction()"}, + {"_ZN5clang26PreprocessorFrontendAction17CreateASTConsumerERNS_16CompilerInstanceEN4llvm9StringRefE", "clang::PreprocessorFrontendAction::CreateASTConsumer(clang::CompilerInstance&, llvm::StringRef)"}, + {"_ZN12_GLOBAL__N_124DeserializedDeclsCheckerD1Ev", "(anonymous namespace)::DeserializedDeclsChecker::~DeserializedDeclsChecker()"}, + {"_ZN12_GLOBAL__N_124DeserializedDeclsCheckerD0Ev", "(anonymous namespace)::DeserializedDeclsChecker::~DeserializedDeclsChecker()"}, + {"_ZN12_GLOBAL__N_124DeserializedDeclsChecker8DeclReadEjPKN5clang4DeclE", "(anonymous namespace)::DeserializedDeclsChecker::DeclRead(unsigned int, clang::Decl const*)"}, + {"_ZN12_GLOBAL__N_123DeserializedDeclsDumperD1Ev", "(anonymous namespace)::DeserializedDeclsDumper::~DeserializedDeclsDumper()"}, + {"_ZN12_GLOBAL__N_123DeserializedDeclsDumperD0Ev", "(anonymous namespace)::DeserializedDeclsDumper::~DeserializedDeclsDumper()"}, + {"_ZN12_GLOBAL__N_123DeserializedDeclsDumper8DeclReadEjPKN5clang4DeclE", "(anonymous namespace)::DeserializedDeclsDumper::DeclRead(unsigned int, clang::Decl const*)"}, + {"_ZNSt6vectorIPN5clang11ASTConsumerESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, clang::ASTConsumer* const&)"}, + {"_ZN5clang26ASTDeserializationListener17ReaderInitializedEPNS_9ASTReaderE", "clang::ASTDeserializationListener::ReaderInitialized(clang::ASTReader*)"}, + {"_ZN5clang26ASTDeserializationListener14IdentifierReadEjPNS_14IdentifierInfoE", "clang::ASTDeserializationListener::IdentifierRead(unsigned int, clang::IdentifierInfo*)"}, + {"_ZN5clang26ASTDeserializationListener8TypeReadENS_13serialization7TypeIdxENS_8QualTypeE", "clang::ASTDeserializationListener::TypeRead(clang::serialization::TypeIdx, clang::QualType)"}, + {"_ZN5clang26ASTDeserializationListener12SelectorReadEjNS_8SelectorE", "clang::ASTDeserializationListener::SelectorRead(unsigned int, clang::Selector)"}, + {"_ZN5clang26ASTDeserializationListener19MacroDefinitionReadEjPNS_15MacroDefinitionE", "clang::ASTDeserializationListener::MacroDefinitionRead(unsigned int, clang::MacroDefinition*)"}, + {"_ZNSt8_Rb_treeISsSsSt9_IdentityISsESt4lessISsESaISsEE4findERKSs", "std::_Rb_tree, std::less, std::allocator>::find(std::string const&)"}, + + // {"_ZNSt8_Rb_treeISsSsSt9_IdentityISsESt4lessISsESaISsEE7_M_copyEPKSt13_Rb_tree_nodeISsEPS7_", + // "std::_Rb_tree, std::less, std::allocator>::_M_copy(std::_Rb_tree_node const*, std::_Rb_tree_node*)"}, + // "std::_Rb_tree, std::less, std::allocator>::_M_copy(std::_Rb_tree_node const*, std::_Rb_tree_node*)" was returned + + {"_ZN5clang26ASTDeserializationListener8DeclReadEjPKNS_4DeclE", "clang::ASTDeserializationListener::DeclRead(unsigned int, clang::Decl const*)"}, + {"_ZN5clang14InitOnlyAction17CreateASTConsumerERNS_16CompilerInstanceEN4llvm9StringRefE", "clang::InitOnlyAction::CreateASTConsumer(clang::CompilerInstance&, llvm::StringRef)"}, + {"_ZN5clang14InitOnlyAction13ExecuteActionEv", "clang::InitOnlyAction::ExecuteAction()"}, + {"_ZN5clang14ASTPrintAction17CreateASTConsumerERNS_16CompilerInstanceEN4llvm9StringRefE", "clang::ASTPrintAction::CreateASTConsumer(clang::CompilerInstance&, llvm::StringRef)"}, + {"_ZN5clang17ASTPrintXMLAction17CreateASTConsumerERNS_16CompilerInstanceEN4llvm9StringRefE", "clang::ASTPrintXMLAction::CreateASTConsumer(clang::CompilerInstance&, llvm::StringRef)"}, + {"_ZN5clang13ASTDumpAction17CreateASTConsumerERNS_16CompilerInstanceEN4llvm9StringRefE", "clang::ASTDumpAction::CreateASTConsumer(clang::CompilerInstance&, llvm::StringRef)"}, + {"_ZN5clang16ASTDumpXMLAction17CreateASTConsumerERNS_16CompilerInstanceEN4llvm9StringRefE", "clang::ASTDumpXMLAction::CreateASTConsumer(clang::CompilerInstance&, llvm::StringRef)"}, + {"_ZN5clang13ASTViewAction17CreateASTConsumerERNS_16CompilerInstanceEN4llvm9StringRefE", "clang::ASTViewAction::CreateASTConsumer(clang::CompilerInstance&, llvm::StringRef)"}, + {"_ZN5clang22DeclContextPrintAction17CreateASTConsumerERNS_16CompilerInstanceEN4llvm9StringRefE", "clang::DeclContextPrintAction::CreateASTConsumer(clang::CompilerInstance&, llvm::StringRef)"}, + {"_ZN5clang17GeneratePCHAction17CreateASTConsumerERNS_16CompilerInstanceEN4llvm9StringRefE", "clang::GeneratePCHAction::CreateASTConsumer(clang::CompilerInstance&, llvm::StringRef)"}, + {"_ZN5clang17GeneratePCHAction27ComputeASTConsumerArgumentsERNS_16CompilerInstanceEN4llvm9StringRefERSsRPNS3_11raw_ostreamERb", "clang::GeneratePCHAction::ComputeASTConsumerArguments(clang::CompilerInstance&, llvm::StringRef, std::string&, llvm::raw_ostream*&, bool&)"}, + {"_ZN5clang21InheritanceViewAction17CreateASTConsumerERNS_16CompilerInstanceEN4llvm9StringRefE", "clang::InheritanceViewAction::CreateASTConsumer(clang::CompilerInstance&, llvm::StringRef)"}, + {"_ZN5clang16SyntaxOnlyAction17CreateASTConsumerERNS_16CompilerInstanceEN4llvm9StringRefE", "clang::SyntaxOnlyAction::CreateASTConsumer(clang::CompilerInstance&, llvm::StringRef)"}, + {"_ZN5clang19DumpRawTokensAction13ExecuteActionEv", "clang::DumpRawTokensAction::ExecuteAction()"}, + {"_ZN5clang16DumpTokensAction13ExecuteActionEv", "clang::DumpTokensAction::ExecuteAction()"}, + {"_ZN5clang17GeneratePTHAction13ExecuteActionEv", "clang::GeneratePTHAction::ExecuteAction()"}, + {"_ZN5clang20PreprocessOnlyAction13ExecuteActionEv", "clang::PreprocessOnlyAction::ExecuteAction()"}, + {"_ZN5clang23PrintPreprocessedAction13ExecuteActionEv", "clang::PrintPreprocessedAction::ExecuteAction()"}, + {"_ZN5clang19PrintPreambleAction13ExecuteActionEv", "clang::PrintPreambleAction::ExecuteAction()"}, + {"_ZN5clang5LexerD1Ev", "clang::Lexer::~Lexer()"}, + {"_ZN5clang12Preprocessor3LexERNS_5TokenE", "clang::Preprocessor::Lex(clang::Token&)"}, + {"_ZN5clang14InitOnlyActionD1Ev", "clang::InitOnlyAction::~InitOnlyAction()"}, + {"_ZN5clang14InitOnlyActionD0Ev", "clang::InitOnlyAction::~InitOnlyAction()"}, + {"_ZN5clang14ASTPrintActionD1Ev", "clang::ASTPrintAction::~ASTPrintAction()"}, + {"_ZN5clang14ASTPrintActionD0Ev", "clang::ASTPrintAction::~ASTPrintAction()"}, + {"_ZN5clang17ASTPrintXMLActionD1Ev", "clang::ASTPrintXMLAction::~ASTPrintXMLAction()"}, + {"_ZN5clang17ASTPrintXMLActionD0Ev", "clang::ASTPrintXMLAction::~ASTPrintXMLAction()"}, + {"_ZN5clang13ASTDumpActionD1Ev", "clang::ASTDumpAction::~ASTDumpAction()"}, + {"_ZN5clang13ASTDumpActionD0Ev", "clang::ASTDumpAction::~ASTDumpAction()"}, + {"_ZN5clang16ASTDumpXMLActionD1Ev", "clang::ASTDumpXMLAction::~ASTDumpXMLAction()"}, + {"_ZN5clang16ASTDumpXMLActionD0Ev", "clang::ASTDumpXMLAction::~ASTDumpXMLAction()"}, + {"_ZN5clang13ASTViewActionD1Ev", "clang::ASTViewAction::~ASTViewAction()"}, + {"_ZN5clang13ASTViewActionD0Ev", "clang::ASTViewAction::~ASTViewAction()"}, + {"_ZN5clang22DeclContextPrintActionD1Ev", "clang::DeclContextPrintAction::~DeclContextPrintAction()"}, + {"_ZN5clang22DeclContextPrintActionD0Ev", "clang::DeclContextPrintAction::~DeclContextPrintAction()"}, + {"_ZN5clang17GeneratePCHActionD1Ev", "clang::GeneratePCHAction::~GeneratePCHAction()"}, + {"_ZN5clang17GeneratePCHActionD0Ev", "clang::GeneratePCHAction::~GeneratePCHAction()"}, + {"_ZN5clang21InheritanceViewActionD1Ev", "clang::InheritanceViewAction::~InheritanceViewAction()"}, + {"_ZN5clang21InheritanceViewActionD0Ev", "clang::InheritanceViewAction::~InheritanceViewAction()"}, + {"_ZN5clang19PrintPreambleActionD1Ev", "clang::PrintPreambleAction::~PrintPreambleAction()"}, + {"_ZN5clang19PrintPreambleActionD0Ev", "clang::PrintPreambleAction::~PrintPreambleAction()"}, + {"_ZN5clang19DumpRawTokensActionD1Ev", "clang::DumpRawTokensAction::~DumpRawTokensAction()"}, + {"_ZN5clang19DumpRawTokensActionD0Ev", "clang::DumpRawTokensAction::~DumpRawTokensAction()"}, + {"_ZN5clang16DumpTokensActionD1Ev", "clang::DumpTokensAction::~DumpTokensAction()"}, + {"_ZN5clang16DumpTokensActionD0Ev", "clang::DumpTokensAction::~DumpTokensAction()"}, + {"_ZN5clang17GeneratePTHActionD1Ev", "clang::GeneratePTHAction::~GeneratePTHAction()"}, + {"_ZN5clang17GeneratePTHActionD0Ev", "clang::GeneratePTHAction::~GeneratePTHAction()"}, + {"_ZN5clang20PreprocessOnlyActionD1Ev", "clang::PreprocessOnlyAction::~PreprocessOnlyAction()"}, + {"_ZN5clang20PreprocessOnlyActionD0Ev", "clang::PreprocessOnlyAction::~PreprocessOnlyAction()"}, + {"_ZN5clang23PrintPreprocessedActionD1Ev", "clang::PrintPreprocessedAction::~PrintPreprocessedAction()"}, + {"_ZN5clang23PrintPreprocessedActionD0Ev", "clang::PrintPreprocessedAction::~PrintPreprocessedAction()"}, + {"_ZN5clang5LexerD0Ev", "clang::Lexer::~Lexer()"}, + {"_ZN5clang5Lexer11IndirectLexERNS_5TokenE", "clang::Lexer::IndirectLex(clang::Token&)"}, + {"_ZN5clang5Lexer17getSourceLocationEv", "clang::Lexer::getSourceLocation()"}, + {"_ZN5clang17PreprocessorLexerD1Ev", "clang::PreprocessorLexer::~PreprocessorLexer()"}, + {"_ZN5clang17PreprocessorLexerD0Ev", "clang::PreprocessorLexer::~PreprocessorLexer()"}, + {"_ZN5clang11ASTConsumerD1Ev", "clang::ASTConsumer::~ASTConsumer()"}, + {"_ZN5clang11ASTConsumerD0Ev", "clang::ASTConsumer::~ASTConsumer()"}, + {"_ZN5clang11ASTConsumer10InitializeERNS_10ASTContextE", "clang::ASTConsumer::Initialize(clang::ASTContext&)"}, + {"_ZN5clang11ASTConsumer21HandleTranslationUnitERNS_10ASTContextE", "clang::ASTConsumer::HandleTranslationUnit(clang::ASTContext&)"}, + {"_ZN5clang11ASTConsumer23HandleTagDeclDefinitionEPNS_7TagDeclE", "clang::ASTConsumer::HandleTagDeclDefinition(clang::TagDecl*)"}, + {"_ZN5clang11ASTConsumer27CompleteTentativeDefinitionEPNS_7VarDeclE", "clang::ASTConsumer::CompleteTentativeDefinition(clang::VarDecl*)"}, + {"_ZN5clang11ASTConsumer12HandleVTableEPNS_13CXXRecordDeclEb", "clang::ASTConsumer::HandleVTable(clang::CXXRecordDecl*, bool)"}, + {"_ZN5clang11ASTConsumer22GetASTMutationListenerEv", "clang::ASTConsumer::GetASTMutationListener()"}, + {"_ZN5clang11ASTConsumer29GetASTDeserializationListenerEv", "clang::ASTConsumer::GetASTDeserializationListener()"}, + {"_ZN5clang11ASTConsumer10PrintStatsEv", "clang::ASTConsumer::PrintStats()"}, + {"_ZN5clang15FrontendOptions24getInputKindForExtensionEN4llvm9StringRefE", "clang::FrontendOptions::getInputKindForExtension(llvm::StringRef)"}, + + // {"_ZN4llvm12StringSwitchIN5clang9InputKindES2_E5CasesILj4ELj4ELj4ELj4ELj4EEERS3_RAT__KcRAT0__S6_RAT1__S6_RAT2__S6_RAT3__S6_RKS2_", + // "llvm::StringSwitch& llvm::StringSwitch::Cases<4u, 4u, 4u, 4u, 4u>(char const (&) [4u], char const (&) [4u], char const (&) [4u], char const (&) [4u], char const (&) [4u], clang::InputKind const&)"}, + // got error + + {"_ZN5clang22AttachHeaderIncludeGenERNS_12PreprocessorEbN4llvm9StringRefE", "clang::AttachHeaderIncludeGen(clang::Preprocessor&, bool, llvm::StringRef)"}, + {"_ZN12_GLOBAL__N_122HeaderIncludesCallbackD1Ev", "(anonymous namespace)::HeaderIncludesCallback::~HeaderIncludesCallback()"}, + {"_ZN12_GLOBAL__N_122HeaderIncludesCallbackD0Ev", "(anonymous namespace)::HeaderIncludesCallback::~HeaderIncludesCallback()"}, + {"_ZN12_GLOBAL__N_122HeaderIncludesCallback11FileChangedEN5clang14SourceLocationENS1_11PPCallbacks16FileChangeReasonENS1_6SrcMgr18CharacteristicKindE", "(anonymous namespace)::HeaderIncludesCallback::FileChanged(clang::SourceLocation, clang::PPCallbacks::FileChangeReason, clang::SrcMgr::CharacteristicKind)"}, + {"_ZN5clang24ApplyHeaderSearchOptionsERNS_12HeaderSearchERKNS_19HeaderSearchOptionsERKNS_11LangOptionsERKN4llvm6TripleE", "clang::ApplyHeaderSearchOptions(clang::HeaderSearch&, clang::HeaderSearchOptions const&, clang::LangOptions const&, llvm::Triple const&)"}, + {"_ZN12_GLOBAL__N_116InitHeaderSearch7AddPathERKN4llvm5TwineEN5clang8frontend15IncludeDirGroupEbbbb", "(anonymous namespace)::InitHeaderSearch::AddPath(llvm::Twine const&, clang::frontend::IncludeDirGroup, bool, bool, bool, bool)"}, + {"_ZN12_GLOBAL__N_116InitHeaderSearch17AddDelimitedPathsEN4llvm9StringRefE", "(anonymous namespace)::InitHeaderSearch::AddDelimitedPaths(llvm::StringRef)"}, + {"_Z16RemoveDuplicatesRSt6vectorIN5clang15DirectoryLookupESaIS1_EEb", "RemoveDuplicates(std::vector>&, bool)"}, + {"_ZN12_GLOBAL__N_116InitHeaderSearch27AddGnuCPlusPlusIncludePathsEN4llvm9StringRefES2_S2_S2_RKNS1_6TripleE", "(anonymous namespace)::InitHeaderSearch::AddGnuCPlusPlusIncludePaths(llvm::StringRef, llvm::StringRef, llvm::StringRef, llvm::StringRef, llvm::Triple const&)"}, + {"_ZN12_GLOBAL__N_116InitHeaderSearch29AddMinGWCPlusPlusIncludePathsEN4llvm9StringRefES2_S2_", "(anonymous namespace)::InitHeaderSearch::AddMinGWCPlusPlusIncludePaths(llvm::StringRef, llvm::StringRef, llvm::StringRef)"}, + {"_ZNSt6vectorIN5clang15DirectoryLookupESaIS1_EEaSERKS3_", "std::vector>::operator=(std::vector> const&)"}, + + // {"_ZNSt6vectorIN5clang15DirectoryLookupESaIS1_EE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPS1_S3_EEEEvS8_T_S9_St20forward_iterator_tag", + // "void std::vector>::_M_range_insert<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, std::forward_iterator_tag)"}, + // got error + + {"_ZNSt6vectorIN5clang15DirectoryLookupESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, clang::DirectoryLookup const&)"}, + {"_ZN5clang24NormalizeDashIncludePathEN4llvm9StringRefE", "clang::NormalizeDashIncludePath(llvm::StringRef)"}, + {"_ZN5clang22InitializePreprocessorERNS_12PreprocessorERKNS_19PreprocessorOptionsERKNS_19HeaderSearchOptionsERKNS_15FrontendOptionsE", "clang::InitializePreprocessor(clang::Preprocessor&, clang::PreprocessorOptions const&, clang::HeaderSearchOptions const&, clang::FrontendOptions const&)"}, + {"_Z18AddImplicitIncludeRN5clang12MacroBuilderEN4llvm9StringRefE", "AddImplicitInclude(clang::MacroBuilder&, llvm::StringRef)"}, + {"_Z17DefineFloatMacrosRN5clang12MacroBuilderEN4llvm9StringRefEPKNS2_12fltSemanticsE", "DefineFloatMacros(clang::MacroBuilder&, llvm::StringRef, llvm::fltSemantics const*)"}, + {"_Z23DefineExactWidthIntTypeN5clang10TargetInfo7IntTypeERKS0_RNS_12MacroBuilderE", "DefineExactWidthIntType(clang::TargetInfo::IntType, clang::TargetInfo const&, clang::MacroBuilder&)"}, + {"_ZN5clang12LangStandard22getLangStandardForKindENS0_4KindE", "clang::LangStandard::getLangStandardForKind(clang::LangStandard::Kind)"}, + {"_ZN5clang12LangStandard22getLangStandardForNameEN4llvm9StringRefE", "clang::LangStandard::getLangStandardForName(llvm::StringRef)"}, + {"_ZN5clang35MultiplexASTDeserializationListenerC1ERKSt6vectorIPNS_26ASTDeserializationListenerESaIS3_EE", "clang::MultiplexASTDeserializationListener::MultiplexASTDeserializationListener(std::vector> const&)"}, + {"_ZN5clang35MultiplexASTDeserializationListenerC2ERKSt6vectorIPNS_26ASTDeserializationListenerESaIS3_EE", "clang::MultiplexASTDeserializationListener::MultiplexASTDeserializationListener(std::vector> const&)"}, + {"_ZN5clang35MultiplexASTDeserializationListener17ReaderInitializedEPNS_9ASTReaderE", "clang::MultiplexASTDeserializationListener::ReaderInitialized(clang::ASTReader*)"}, + {"_ZN5clang35MultiplexASTDeserializationListener14IdentifierReadEjPNS_14IdentifierInfoE", "clang::MultiplexASTDeserializationListener::IdentifierRead(unsigned int, clang::IdentifierInfo*)"}, + {"_ZN5clang35MultiplexASTDeserializationListener8TypeReadENS_13serialization7TypeIdxENS_8QualTypeE", "clang::MultiplexASTDeserializationListener::TypeRead(clang::serialization::TypeIdx, clang::QualType)"}, + {"_ZN5clang35MultiplexASTDeserializationListener8DeclReadEjPKNS_4DeclE", "clang::MultiplexASTDeserializationListener::DeclRead(unsigned int, clang::Decl const*)"}, + {"_ZN5clang35MultiplexASTDeserializationListener12SelectorReadEjNS_8SelectorE", "clang::MultiplexASTDeserializationListener::SelectorRead(unsigned int, clang::Selector)"}, + {"_ZN5clang35MultiplexASTDeserializationListener19MacroDefinitionReadEjPNS_15MacroDefinitionE", "clang::MultiplexASTDeserializationListener::MacroDefinitionRead(unsigned int, clang::MacroDefinition*)"}, + {"_ZN5clang28MultiplexASTMutationListenerC1ERKSt6vectorIPNS_19ASTMutationListenerESaIS3_EE", "clang::MultiplexASTMutationListener::MultiplexASTMutationListener(std::vector> const&)"}, + {"_ZN5clang28MultiplexASTMutationListenerC2ERKSt6vectorIPNS_19ASTMutationListenerESaIS3_EE", "clang::MultiplexASTMutationListener::MultiplexASTMutationListener(std::vector> const&)"}, + {"_ZN5clang28MultiplexASTMutationListener22CompletedTagDefinitionEPKNS_7TagDeclE", "clang::MultiplexASTMutationListener::CompletedTagDefinition(clang::TagDecl const*)"}, + {"_ZN5clang28MultiplexASTMutationListener16AddedVisibleDeclEPKNS_11DeclContextEPKNS_4DeclE", "clang::MultiplexASTMutationListener::AddedVisibleDecl(clang::DeclContext const*, clang::Decl const*)"}, + {"_ZN5clang28MultiplexASTMutationListener22AddedCXXImplicitMemberEPKNS_13CXXRecordDeclEPKNS_4DeclE", "clang::MultiplexASTMutationListener::AddedCXXImplicitMember(clang::CXXRecordDecl const*, clang::Decl const*)"}, + {"_ZN5clang28MultiplexASTMutationListener30AddedCXXTemplateSpecializationEPKNS_17ClassTemplateDeclEPKNS_31ClassTemplateSpecializationDeclE", "clang::MultiplexASTMutationListener::AddedCXXTemplateSpecialization(clang::ClassTemplateDecl const*, clang::ClassTemplateSpecializationDecl const*)"}, + {"_ZN5clang17MultiplexConsumerC1ERKSt6vectorIPNS_11ASTConsumerESaIS3_EE", "clang::MultiplexConsumer::MultiplexConsumer(std::vector> const&)"}, + {"_ZN5clang17MultiplexConsumerC2ERKSt6vectorIPNS_11ASTConsumerESaIS3_EE", "clang::MultiplexConsumer::MultiplexConsumer(std::vector> const&)"}, + {"_ZN5clang17MultiplexConsumerD0Ev", "clang::MultiplexConsumer::~MultiplexConsumer()"}, + {"_ZN5clang17MultiplexConsumerD1Ev", "clang::MultiplexConsumer::~MultiplexConsumer()"}, + {"_ZN5clang17MultiplexConsumerD2Ev", "clang::MultiplexConsumer::~MultiplexConsumer()"}, + {"_ZN5clang17MultiplexConsumer10InitializeERNS_10ASTContextE", "clang::MultiplexConsumer::Initialize(clang::ASTContext&)"}, + {"_ZN5clang17MultiplexConsumer18HandleTopLevelDeclENS_12DeclGroupRefE", "clang::MultiplexConsumer::HandleTopLevelDecl(clang::DeclGroupRef)"}, + {"_ZN5clang17MultiplexConsumer21HandleInterestingDeclENS_12DeclGroupRefE", "clang::MultiplexConsumer::HandleInterestingDecl(clang::DeclGroupRef)"}, + {"_ZN5clang17MultiplexConsumer21HandleTranslationUnitERNS_10ASTContextE", "clang::MultiplexConsumer::HandleTranslationUnit(clang::ASTContext&)"}, + {"_ZN5clang17MultiplexConsumer23HandleTagDeclDefinitionEPNS_7TagDeclE", "clang::MultiplexConsumer::HandleTagDeclDefinition(clang::TagDecl*)"}, + {"_ZN5clang17MultiplexConsumer27CompleteTentativeDefinitionEPNS_7VarDeclE", "clang::MultiplexConsumer::CompleteTentativeDefinition(clang::VarDecl*)"}, + {"_ZN5clang17MultiplexConsumer12HandleVTableEPNS_13CXXRecordDeclEb", "clang::MultiplexConsumer::HandleVTable(clang::CXXRecordDecl*, bool)"}, + {"_ZN5clang17MultiplexConsumer22GetASTMutationListenerEv", "clang::MultiplexConsumer::GetASTMutationListener()"}, + {"_ZN5clang17MultiplexConsumer29GetASTDeserializationListenerEv", "clang::MultiplexConsumer::GetASTDeserializationListener()"}, + {"_ZN5clang17MultiplexConsumer10PrintStatsEv", "clang::MultiplexConsumer::PrintStats()"}, + {"_ZN5clang17MultiplexConsumer14InitializeSemaERNS_4SemaE", "clang::MultiplexConsumer::InitializeSema(clang::Sema&)"}, + {"_ZN5clang17MultiplexConsumer10ForgetSemaEv", "clang::MultiplexConsumer::ForgetSema()"}, + {"_ZN5clang35MultiplexASTDeserializationListenerD1Ev", "clang::MultiplexASTDeserializationListener::~MultiplexASTDeserializationListener()"}, + {"_ZN5clang35MultiplexASTDeserializationListenerD0Ev", "clang::MultiplexASTDeserializationListener::~MultiplexASTDeserializationListener()"}, + {"_ZN5clang28MultiplexASTMutationListenerD1Ev", "clang::MultiplexASTMutationListener::~MultiplexASTMutationListener()"}, + {"_ZN5clang28MultiplexASTMutationListenerD0Ev", "clang::MultiplexASTMutationListener::~MultiplexASTMutationListener()"}, + {"_ZNSt6vectorIPN5clang26ASTDeserializationListenerESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, clang::ASTDeserializationListener* const&)"}, + {"_ZNSt6vectorIPN5clang19ASTMutationListenerESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, clang::ASTMutationListener* const&)"}, + {"_ZN5clang12SemaConsumerD1Ev", "clang::SemaConsumer::~SemaConsumer()"}, + {"_ZN5clang12SemaConsumerD0Ev", "clang::SemaConsumer::~SemaConsumer()"}, + {"_ZN5clang12SemaConsumer14InitializeSemaERNS_4SemaE", "clang::SemaConsumer::InitializeSema(clang::Sema&)"}, + {"_ZN5clang12SemaConsumer10ForgetSemaEv", "clang::SemaConsumer::ForgetSema()"}, + {"_ZN5clang24DoPrintPreprocessedInputERNS_12PreprocessorEPN4llvm11raw_ostreamERKNS_25PreprocessorOutputOptionsE", "clang::DoPrintPreprocessedInput(clang::Preprocessor&, llvm::raw_ostream*, clang::PreprocessorOutputOptions const&)"}, + {"_ZN12_GLOBAL__N_124PrintPPOutputPPCallbacks10MoveToLineEj", "(anonymous namespace)::PrintPPOutputPPCallbacks::MoveToLine(unsigned int)"}, + {"_ZN12_GLOBAL__N_124PrintPPOutputPPCallbacks13WriteLineInfoEjPKcj", "(anonymous namespace)::PrintPPOutputPPCallbacks::WriteLineInfo(unsigned int, char const*, unsigned int)"}, + {"_ZN12_GLOBAL__N_120UnknownPragmaHandlerD1Ev", "(anonymous namespace)::UnknownPragmaHandler::~UnknownPragmaHandler()"}, + {"_ZN12_GLOBAL__N_120UnknownPragmaHandlerD0Ev", "(anonymous namespace)::UnknownPragmaHandler::~UnknownPragmaHandler()"}, + {"_ZN12_GLOBAL__N_120UnknownPragmaHandler12HandlePragmaERN5clang12PreprocessorENS1_20PragmaIntroducerKindERNS1_5TokenE", "(anonymous namespace)::UnknownPragmaHandler::HandlePragma(clang::Preprocessor&, clang::PragmaIntroducerKind, clang::Token&)"}, + {"_ZN12_GLOBAL__N_124PrintPPOutputPPCallbacksD1Ev", "(anonymous namespace)::PrintPPOutputPPCallbacks::~PrintPPOutputPPCallbacks()"}, + {"_ZN12_GLOBAL__N_124PrintPPOutputPPCallbacksD0Ev", "(anonymous namespace)::PrintPPOutputPPCallbacks::~PrintPPOutputPPCallbacks()"}, + {"_ZN12_GLOBAL__N_124PrintPPOutputPPCallbacks11FileChangedEN5clang14SourceLocationENS1_11PPCallbacks16FileChangeReasonENS1_6SrcMgr18CharacteristicKindE", "(anonymous namespace)::PrintPPOutputPPCallbacks::FileChanged(clang::SourceLocation, clang::PPCallbacks::FileChangeReason, clang::SrcMgr::CharacteristicKind)"}, + {"_ZN12_GLOBAL__N_124PrintPPOutputPPCallbacks5IdentEN5clang14SourceLocationERKSs", "(anonymous namespace)::PrintPPOutputPPCallbacks::Ident(clang::SourceLocation, std::string const&)"}, + {"_ZN12_GLOBAL__N_124PrintPPOutputPPCallbacks13PragmaCommentEN5clang14SourceLocationEPKNS1_14IdentifierInfoERKSs", "(anonymous namespace)::PrintPPOutputPPCallbacks::PragmaComment(clang::SourceLocation, clang::IdentifierInfo const*, std::string const&)"}, + {"_ZN12_GLOBAL__N_124PrintPPOutputPPCallbacks13PragmaMessageEN5clang14SourceLocationEN4llvm9StringRefE", "(anonymous namespace)::PrintPPOutputPPCallbacks::PragmaMessage(clang::SourceLocation, llvm::StringRef)"}, + {"_ZN12_GLOBAL__N_124PrintPPOutputPPCallbacks12MacroDefinedERKN5clang5TokenEPKNS1_9MacroInfoE", "(anonymous namespace)::PrintPPOutputPPCallbacks::MacroDefined(clang::Token const&, clang::MacroInfo const*)"}, + {"_ZN12_GLOBAL__N_124PrintPPOutputPPCallbacks14MacroUndefinedERKN5clang5TokenEPKNS1_9MacroInfoE", "(anonymous namespace)::PrintPPOutputPPCallbacks::MacroUndefined(clang::Token const&, clang::MacroInfo const*)"}, + {"_Z20PrintMacroDefinitionRKN5clang14IdentifierInfoERKNS_9MacroInfoERNS_12PreprocessorERN4llvm11raw_ostreamE", "PrintMacroDefinition(clang::IdentifierInfo const&, clang::MacroInfo const&, clang::Preprocessor&, llvm::raw_ostream&)"}, + {"_Z14MacroIDComparePKvS0_", "MacroIDCompare(void const*, void const*)"}, + + // {"_ZN4llvm15SmallVectorImplISt4pairIPN5clang14IdentifierInfoEPNS2_9MacroInfoEEE6appendINS_16DenseMapIteratorIS4_S6_NS_12DenseMapInfoIS4_EENSB_IS6_EELb1EEEEEvT_SF_", + // "void llvm::SmallVectorImpl>::append, llvm::DenseMapInfo, true>>(llvm::DenseMapIterator, llvm::DenseMapInfo, true>, llvm::DenseMapIterator, llvm::DenseMapInfo, true>)"}, + // got error + + {"_ZN5clang11DocumentXML9PrintStmtEPKNS_4StmtE", "clang::DocumentXML::PrintStmt(clang::Stmt const*)"}, + {"_ZN12_GLOBAL__N_17StmtXML11DumpSubTreeEPN5clang4StmtE", "(anonymous namespace)::StmtXML::DumpSubTree(clang::Stmt*)"}, + {"_ZN5clang11StmtVisitorIN12_GLOBAL__N_17StmtXMLEvE5VisitEPNS_4StmtE", "clang::StmtVisitor<(anonymous namespace)::StmtXML, void>::Visit(clang::Stmt*)"}, + {"_ZN12_GLOBAL__N_17StmtXML19VisitBinaryOperatorEPN5clang14BinaryOperatorE", "(anonymous namespace)::StmtXML::VisitBinaryOperator(clang::BinaryOperator*)"}, + {"_ZN12_GLOBAL__N_17StmtXML21VisitCXXConstructExprEPN5clang16CXXConstructExprE", "(anonymous namespace)::StmtXML::VisitCXXConstructExpr(clang::CXXConstructExpr*)"}, + {"_ZN12_GLOBAL__N_17StmtXML13VisitCallExprEPN5clang8CallExprE", "(anonymous namespace)::StmtXML::VisitCallExpr(clang::CallExpr*)"}, + {"_ZN12_GLOBAL__N_17StmtXML18VisitUnaryOperatorEPN5clang13UnaryOperatorE", "(anonymous namespace)::StmtXML::VisitUnaryOperator(clang::UnaryOperator*)"}, + {"_ZN12_GLOBAL__N_17StmtXML9VisitStmtEPN5clang4StmtE", "(anonymous namespace)::StmtXML::VisitStmt(clang::Stmt*)"}, + {"_ZN12_GLOBAL__N_17StmtXML21VisitCXXNamedCastExprEPN5clang16CXXNamedCastExprE", "(anonymous namespace)::StmtXML::VisitCXXNamedCastExpr(clang::CXXNamedCastExpr*)"}, + {"_ZN5clang20TextDiagnosticBuffer16HandleDiagnosticENS_10Diagnostic5LevelERKNS_14DiagnosticInfoE", "clang::TextDiagnosticBuffer::HandleDiagnostic(clang::Diagnostic::Level, clang::DiagnosticInfo const&)"}, + {"_ZNK5clang20TextDiagnosticBuffer16FlushDiagnosticsERNS_10DiagnosticE", "clang::TextDiagnosticBuffer::FlushDiagnostics(clang::Diagnostic&) const"}, + {"_ZN5clang20TextDiagnosticBufferD1Ev", "clang::TextDiagnosticBuffer::~TextDiagnosticBuffer()"}, + {"_ZN5clang20TextDiagnosticBufferD0Ev", "clang::TextDiagnosticBuffer::~TextDiagnosticBuffer()"}, + + // {"_ZNSt6vectorISt4pairIN5clang14SourceLocationESsESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_", + // "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + // "std::vector, std::allocator>::_M_insert_aux(__gnu_cxx::__normal_iterator>, std::string const&)" was returned + + {"_ZN5clang20TextDiagnosticBufferD2Ev", "clang::TextDiagnosticBuffer::~TextDiagnosticBuffer()"}, + {"_ZN5clang21TextDiagnosticPrinterC1ERN4llvm11raw_ostreamERKNS_17DiagnosticOptionsEb", "clang::TextDiagnosticPrinter::TextDiagnosticPrinter(llvm::raw_ostream&, clang::DiagnosticOptions const&, bool)"}, + {"_ZN5clang21TextDiagnosticPrinterC2ERN4llvm11raw_ostreamERKNS_17DiagnosticOptionsEb", "clang::TextDiagnosticPrinter::TextDiagnosticPrinter(llvm::raw_ostream&, clang::DiagnosticOptions const&, bool)"}, + {"_ZN5clang21TextDiagnosticPrinterD0Ev", "clang::TextDiagnosticPrinter::~TextDiagnosticPrinter()"}, + {"_ZN5clang21TextDiagnosticPrinterD1Ev", "clang::TextDiagnosticPrinter::~TextDiagnosticPrinter()"}, + {"_ZN5clang21TextDiagnosticPrinterD2Ev", "clang::TextDiagnosticPrinter::~TextDiagnosticPrinter()"}, + {"_ZN5clang21TextDiagnosticPrinter17PrintIncludeStackENS_14SourceLocationERKNS_13SourceManagerE", "clang::TextDiagnosticPrinter::PrintIncludeStack(clang::SourceLocation, clang::SourceManager const&)"}, + {"_ZN5clang21TextDiagnosticPrinter14HighlightRangeERKNS_15CharSourceRangeERKNS_13SourceManagerEjNS_6FileIDERSsRKSs", "clang::TextDiagnosticPrinter::HighlightRange(clang::CharSourceRange const&, clang::SourceManager const&, unsigned int, clang::FileID, std::string&, std::string const&)"}, + {"_ZN5clang21TextDiagnosticPrinter19EmitCaretDiagnosticENS_14SourceLocationEPNS_15CharSourceRangeEjRKNS_13SourceManagerEPKNS_9FixItHintEjjjjj", "clang::TextDiagnosticPrinter::EmitCaretDiagnostic(clang::SourceLocation, clang::CharSourceRange*, unsigned int, clang::SourceManager const&, clang::FixItHint const*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int)"}, + {"_ZN5clang21TextDiagnosticPrinter16HandleDiagnosticENS_10Diagnostic5LevelERKNS_14DiagnosticInfoE", "clang::TextDiagnosticPrinter::HandleDiagnostic(clang::Diagnostic::Level, clang::DiagnosticInfo const&)"}, + {"_Z13findEndOfWordjRKN4llvm15SmallVectorImplIcEEjjj", "findEndOfWord(unsigned int, llvm::SmallVectorImpl const&, unsigned int, unsigned int, unsigned int)"}, + {"_ZNK5clang13SourceManager16getDecomposedLocENS_14SourceLocationE", "clang::SourceManager::getDecomposedLoc(clang::SourceLocation) const"}, + {"_ZNK5clang13SourceManager29getDecomposedInstantiationLocENS_14SourceLocationE", "clang::SourceManager::getDecomposedInstantiationLoc(clang::SourceLocation) const"}, + {"_ZN5clang21TextDiagnosticPrinter15BeginSourceFileERKNS_11LangOptionsEPKNS_12PreprocessorE", "clang::TextDiagnosticPrinter::BeginSourceFile(clang::LangOptions const&, clang::Preprocessor const*)"}, + {"_ZN5clang21TextDiagnosticPrinter13EndSourceFileEv", "clang::TextDiagnosticPrinter::EndSourceFile()"}, + {"_ZNK5clang13SourceManager16isOffsetInFileIDENS_6FileIDEj", "clang::SourceManager::isOffsetInFileID(clang::FileID, unsigned int) const"}, + {"_ZN5clang11DocumentXML14addParentTypesEPKNS_4TypeE", "clang::DocumentXML::addParentTypes(clang::Type const*)"}, + {"_ZN5clang11DocumentXML14writeTypeToXMLEPKNS_4TypeE", "clang::DocumentXML::writeTypeToXML(clang::Type const*)"}, + {"_ZN5clang11DocumentXML14writeTypeToXMLERKNS_8QualTypeE", "clang::DocumentXML::writeTypeToXML(clang::QualType const&)"}, + {"_ZN5clang3XML12_GLOBAL__N_110TypeWriter9VisitTypeEPKNS_4TypeE", "clang::XML::(anonymous namespace)::TypeWriter::VisitType(clang::Type const*)"}, + {"_ZN5clang11TypeVisitorINS_11DocumentXML9TypeAdderEvE5VisitEPKNS_4TypeE", "clang::TypeVisitor::Visit(clang::Type const*)"}, + {"_ZN5clang11DocumentXML12addAttributeIN4llvm5APIntEEEvPKcRKT_", "void clang::DocumentXML::addAttribute(char const*, llvm::APInt const&)"}, + {"_ZN5clang11DocumentXML12addAttributeINS_10Qualifiers2GCEEEvPKcRKT_", "void clang::DocumentXML::addAttribute(char const*, clang::Qualifiers::GC const&)"}, + {"_ZN5clang23VerifyDiagnosticsClientC1ERNS_10DiagnosticEPNS_16DiagnosticClientE", "clang::VerifyDiagnosticsClient::VerifyDiagnosticsClient(clang::Diagnostic&, clang::DiagnosticClient*)"}, + {"_ZN5clang23VerifyDiagnosticsClientC2ERNS_10DiagnosticEPNS_16DiagnosticClientE", "clang::VerifyDiagnosticsClient::VerifyDiagnosticsClient(clang::Diagnostic&, clang::DiagnosticClient*)"}, + {"_ZN5clang23VerifyDiagnosticsClientD0Ev", "clang::VerifyDiagnosticsClient::~VerifyDiagnosticsClient()"}, + {"_ZN5clang23VerifyDiagnosticsClientD1Ev", "clang::VerifyDiagnosticsClient::~VerifyDiagnosticsClient()"}, + {"_ZN5clang23VerifyDiagnosticsClientD2Ev", "clang::VerifyDiagnosticsClient::~VerifyDiagnosticsClient()"}, + {"_ZN5clang23VerifyDiagnosticsClient16CheckDiagnosticsEv", "clang::VerifyDiagnosticsClient::CheckDiagnostics()"}, + {"_ZN5clang23VerifyDiagnosticsClient15BeginSourceFileERKNS_11LangOptionsEPKNS_12PreprocessorE", "clang::VerifyDiagnosticsClient::BeginSourceFile(clang::LangOptions const&, clang::Preprocessor const*)"}, + {"_ZN5clang23VerifyDiagnosticsClient13EndSourceFileEv", "clang::VerifyDiagnosticsClient::EndSourceFile()"}, + {"_ZN5clang23VerifyDiagnosticsClient16HandleDiagnosticENS_10Diagnostic5LevelERKNS_14DiagnosticInfoE", "clang::VerifyDiagnosticsClient::HandleDiagnostic(clang::Diagnostic::Level, clang::DiagnosticInfo const&)"}, + + // {"_Z12PrintProblemRN5clang10DiagnosticEPNS_13SourceManagerEN9__gnu_cxx17__normal_iteratorIPKSt4pairINS_14SourceLocationESsESt6vectorIS8_SaIS8_EEEESE_PKcb", + // "PrintProblem(clang::Diagnostic&, clang::SourceManager*, __gnu_cxx::__normal_iterator const*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator const*, std::vector, std::allocator>>>, char const*, bool)"}, + // "PrintProblem(clang::Diagnostic&, clang::SourceManager*, __gnu_cxx::__normal_iterator const*, std::vector>>, std::vector>, char const*, bool)" was returned + + + // {"_Z10CheckListsRN5clang10DiagnosticERNS_13SourceManagerEPKcRSt6vectorIPN12_GLOBAL__N_19DirectiveESaIS9_EEN9__gnu_cxx17__normal_iteratorIPKSt4pairINS_14SourceLocationESsES6_ISH_SaISH_EEEESM_", + // "CheckLists(clang::Diagnostic&, clang::SourceManager&, char const*, std::vector<(anonymous namespace)::Directive*, std::allocator<(anonymous namespace)::Directive*>>&, __gnu_cxx::__normal_iterator const*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator const*, std::vector, std::allocator>>>)"}, + // "CheckLists(clang::Diagnostic&, clang::SourceManager&, char const*, std::vector<(anonymous namespace)::Directive*, std::allocator<(anonymous namespace)::Directive*>>&, __gnu_cxx::__normal_iterator const*, std::vector>>, >)" was returned + + {"_ZNSt6vectorIPN12_GLOBAL__N_19DirectiveESaIS2_EE9push_backERKS2_", "std::vector<(anonymous namespace)::Directive*, std::allocator<(anonymous namespace)::Directive*>>::push_back((anonymous namespace)::Directive* const&)"}, + {"_ZN12_GLOBAL__N_117StandardDirectiveD1Ev", "(anonymous namespace)::StandardDirective::~StandardDirective()"}, + {"_ZN12_GLOBAL__N_117StandardDirectiveD0Ev", "(anonymous namespace)::StandardDirective::~StandardDirective()"}, + {"_ZN12_GLOBAL__N_117StandardDirective7isValidERSs", "(anonymous namespace)::StandardDirective::isValid(std::string&)"}, + {"_ZN12_GLOBAL__N_117StandardDirective5MatchERKSs", "(anonymous namespace)::StandardDirective::Match(std::string const&)"}, + {"_ZN12_GLOBAL__N_19DirectiveD1Ev", "(anonymous namespace)::Directive::~Directive()"}, + {"_ZN12_GLOBAL__N_19DirectiveD0Ev", "(anonymous namespace)::Directive::~Directive()"}, + {"_ZN12_GLOBAL__N_114RegexDirectiveD1Ev", "(anonymous namespace)::RegexDirective::~RegexDirective()"}, + {"_ZN12_GLOBAL__N_114RegexDirectiveD0Ev", "(anonymous namespace)::RegexDirective::~RegexDirective()"}, + {"_ZN12_GLOBAL__N_114RegexDirective7isValidERSs", "(anonymous namespace)::RegexDirective::isValid(std::string&)"}, + {"_ZN12_GLOBAL__N_114RegexDirective5MatchERKSs", "(anonymous namespace)::RegexDirective::Match(std::string const&)"}, + + // {"_ZNSt6vectorISt4pairIN5clang14SourceLocationESsESaIS3_EE19_M_range_initializeIN9__gnu_cxx17__normal_iteratorIPKS3_S5_EEEEvT_SC_St20forward_iterator_tag", + // "void std::vector, std::allocator>>::_M_range_initialize<__gnu_cxx::__normal_iterator const*, std::vector, std::allocator>>>>(__gnu_cxx::__normal_iterator const*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator const*, std::vector, std::allocator>>>, std::forward_iterator_tag)"}, + // "void std::vector, std::allocator>::_M_range_initialize<__gnu_cxx::__normal_iterator>>(clang::SourceLocation, __gnu_cxx::__normal_iterator>, std::forward_iterator_tag)" was returned + + + // {"_ZSt6searchIPKcS1_ET_S2_S2_T0_S3_", + // "char const* std::search(char const*, char const*, char const*, char const*)"}, + // got error + + {"_ZN5clang21ProcessWarningOptionsERNS_10DiagnosticERKNS_17DiagnosticOptionsE", "clang::ProcessWarningOptions(clang::Diagnostic&, clang::DiagnosticOptions const&)"}, + {"_ZN5clang6driver6ActionD0Ev", "clang::driver::Action::~Action()"}, + {"_ZN5clang6driver6ActionD1Ev", "clang::driver::Action::~Action()"}, + {"_ZN5clang6driver6ActionD2Ev", "clang::driver::Action::~Action()"}, + {"_ZN5clang6driver6Action12getClassNameENS1_11ActionClassE", "clang::driver::Action::getClassName(clang::driver::Action::ActionClass)"}, + {"_ZN5clang6driver11InputActionC1ERKNS0_3ArgENS0_5types2IDE", "clang::driver::InputAction::InputAction(clang::driver::Arg const&, clang::driver::types::ID)"}, + {"_ZN5clang6driver11InputActionC2ERKNS0_3ArgENS0_5types2IDE", "clang::driver::InputAction::InputAction(clang::driver::Arg const&, clang::driver::types::ID)"}, + {"_ZN5clang6driver14BindArchActionC1EPNS0_6ActionEPKc", "clang::driver::BindArchAction::BindArchAction(clang::driver::Action*, char const*)"}, + {"_ZN5clang6driver14BindArchActionC2EPNS0_6ActionEPKc", "clang::driver::BindArchAction::BindArchAction(clang::driver::Action*, char const*)"}, + {"_ZN5clang6driver9JobActionC1ENS0_6Action11ActionClassEPS2_NS0_5types2IDE", "clang::driver::JobAction::JobAction(clang::driver::Action::ActionClass, clang::driver::Action*, clang::driver::types::ID)"}, + {"_ZN5clang6driver9JobActionC2ENS0_6Action11ActionClassEPS2_NS0_5types2IDE", "clang::driver::JobAction::JobAction(clang::driver::Action::ActionClass, clang::driver::Action*, clang::driver::types::ID)"}, + + // {"_ZN5clang6driver9JobActionC1ENS0_6Action11ActionClassERKN4llvm11SmallVectorIPS2_Lj3EEENS0_5types2IDE", + // "clang::driver::JobAction::JobAction(clang::driver::Action::ActionClass, llvm::SmallVector const&, clang::driver::types::ID)"}, + // "clang::driver::JobAction::JobAction(clang::driver::Action::ActionClass, llvm::SmallVector const&, clang::driver::types::ID)" was returned + + + // {"_ZN5clang6driver9JobActionC2ENS0_6Action11ActionClassERKN4llvm11SmallVectorIPS2_Lj3EEENS0_5types2IDE", + // "clang::driver::JobAction::JobAction(clang::driver::Action::ActionClass, llvm::SmallVector const&, clang::driver::types::ID)"}, + // "clang::driver::JobAction::JobAction(clang::driver::Action::ActionClass, llvm::SmallVector const&, clang::driver::types::ID)" was returned + + {"_ZN5clang6driver19PreprocessJobActionC1EPNS0_6ActionENS0_5types2IDE", "clang::driver::PreprocessJobAction::PreprocessJobAction(clang::driver::Action*, clang::driver::types::ID)"}, + {"_ZN5clang6driver19PreprocessJobActionC2EPNS0_6ActionENS0_5types2IDE", "clang::driver::PreprocessJobAction::PreprocessJobAction(clang::driver::Action*, clang::driver::types::ID)"}, + {"_ZN5clang6driver19PrecompileJobActionC1EPNS0_6ActionENS0_5types2IDE", "clang::driver::PrecompileJobAction::PrecompileJobAction(clang::driver::Action*, clang::driver::types::ID)"}, + {"_ZN5clang6driver19PrecompileJobActionC2EPNS0_6ActionENS0_5types2IDE", "clang::driver::PrecompileJobAction::PrecompileJobAction(clang::driver::Action*, clang::driver::types::ID)"}, + {"_ZN5clang6driver16AnalyzeJobActionC1EPNS0_6ActionENS0_5types2IDE", "clang::driver::AnalyzeJobAction::AnalyzeJobAction(clang::driver::Action*, clang::driver::types::ID)"}, + {"_ZN5clang6driver16AnalyzeJobActionC2EPNS0_6ActionENS0_5types2IDE", "clang::driver::AnalyzeJobAction::AnalyzeJobAction(clang::driver::Action*, clang::driver::types::ID)"}, + {"_ZN5clang6driver16CompileJobActionC1EPNS0_6ActionENS0_5types2IDE", "clang::driver::CompileJobAction::CompileJobAction(clang::driver::Action*, clang::driver::types::ID)"}, + {"_ZN5clang6driver16CompileJobActionC2EPNS0_6ActionENS0_5types2IDE", "clang::driver::CompileJobAction::CompileJobAction(clang::driver::Action*, clang::driver::types::ID)"}, + {"_ZN5clang6driver17AssembleJobActionC1EPNS0_6ActionENS0_5types2IDE", "clang::driver::AssembleJobAction::AssembleJobAction(clang::driver::Action*, clang::driver::types::ID)"}, + {"_ZN5clang6driver17AssembleJobActionC2EPNS0_6ActionENS0_5types2IDE", "clang::driver::AssembleJobAction::AssembleJobAction(clang::driver::Action*, clang::driver::types::ID)"}, + + // {"_ZN5clang6driver13LinkJobActionC1ERN4llvm11SmallVectorIPNS0_6ActionELj3EEENS0_5types2IDE", + // "clang::driver::LinkJobAction::LinkJobAction(llvm::SmallVector&, clang::driver::types::ID)"}, + // "clang::driver::LinkJobAction::LinkJobAction(llvm::SmallVector&, clang::driver::types::ID)" was returned + + + // {"_ZN5clang6driver13LinkJobActionC2ERN4llvm11SmallVectorIPNS0_6ActionELj3EEENS0_5types2IDE", + // "clang::driver::LinkJobAction::LinkJobAction(llvm::SmallVector&, clang::driver::types::ID)"}, + // "clang::driver::LinkJobAction::LinkJobAction(llvm::SmallVector&, clang::driver::types::ID)" was returned + + + // {"_ZN5clang6driver13LipoJobActionC1ERN4llvm11SmallVectorIPNS0_6ActionELj3EEENS0_5types2IDE", + // "clang::driver::LipoJobAction::LipoJobAction(llvm::SmallVector&, clang::driver::types::ID)"}, + // "clang::driver::LipoJobAction::LipoJobAction(llvm::SmallVector&, clang::driver::types::ID)" was returned + + + // {"_ZN5clang6driver13LipoJobActionC2ERN4llvm11SmallVectorIPNS0_6ActionELj3EEENS0_5types2IDE", + // "clang::driver::LipoJobAction::LipoJobAction(llvm::SmallVector&, clang::driver::types::ID)"}, + // "clang::driver::LipoJobAction::LipoJobAction(llvm::SmallVector&, clang::driver::types::ID)" was returned + + + // {"_ZN5clang6driver17DsymutilJobActionC1ERN4llvm11SmallVectorIPNS0_6ActionELj3EEENS0_5types2IDE", + // "clang::driver::DsymutilJobAction::DsymutilJobAction(llvm::SmallVector&, clang::driver::types::ID)"}, + // "clang::driver::DsymutilJobAction::DsymutilJobAction(llvm::SmallVector&, clang::driver::types::ID)" was returned + + + // {"_ZN5clang6driver17DsymutilJobActionC2ERN4llvm11SmallVectorIPNS0_6ActionELj3EEENS0_5types2IDE", + // "clang::driver::DsymutilJobAction::DsymutilJobAction(llvm::SmallVector&, clang::driver::types::ID)"}, + // "clang::driver::DsymutilJobAction::DsymutilJobAction(llvm::SmallVector&, clang::driver::types::ID)" was returned + + {"_ZN5clang6driver17DsymutilJobActionD1Ev", "clang::driver::DsymutilJobAction::~DsymutilJobAction()"}, + {"_ZN5clang6driver17DsymutilJobActionD0Ev", "clang::driver::DsymutilJobAction::~DsymutilJobAction()"}, + {"_ZN5clang6driver13LipoJobActionD1Ev", "clang::driver::LipoJobAction::~LipoJobAction()"}, + {"_ZN5clang6driver13LipoJobActionD0Ev", "clang::driver::LipoJobAction::~LipoJobAction()"}, + {"_ZN5clang6driver13LinkJobActionD1Ev", "clang::driver::LinkJobAction::~LinkJobAction()"}, + {"_ZN5clang6driver13LinkJobActionD0Ev", "clang::driver::LinkJobAction::~LinkJobAction()"}, + {"_ZN5clang6driver17AssembleJobActionD1Ev", "clang::driver::AssembleJobAction::~AssembleJobAction()"}, + {"_ZN5clang6driver17AssembleJobActionD0Ev", "clang::driver::AssembleJobAction::~AssembleJobAction()"}, + {"_ZN5clang6driver16CompileJobActionD1Ev", "clang::driver::CompileJobAction::~CompileJobAction()"}, + {"_ZN5clang6driver16CompileJobActionD0Ev", "clang::driver::CompileJobAction::~CompileJobAction()"}, + {"_ZN5clang6driver16AnalyzeJobActionD1Ev", "clang::driver::AnalyzeJobAction::~AnalyzeJobAction()"}, + {"_ZN5clang6driver16AnalyzeJobActionD0Ev", "clang::driver::AnalyzeJobAction::~AnalyzeJobAction()"}, + {"_ZN5clang6driver19PrecompileJobActionD1Ev", "clang::driver::PrecompileJobAction::~PrecompileJobAction()"}, + {"_ZN5clang6driver19PrecompileJobActionD0Ev", "clang::driver::PrecompileJobAction::~PrecompileJobAction()"}, + {"_ZN5clang6driver19PreprocessJobActionD1Ev", "clang::driver::PreprocessJobAction::~PreprocessJobAction()"}, + {"_ZN5clang6driver19PreprocessJobActionD0Ev", "clang::driver::PreprocessJobAction::~PreprocessJobAction()"}, + {"_ZN5clang6driver9JobActionD1Ev", "clang::driver::JobAction::~JobAction()"}, + {"_ZN5clang6driver9JobActionD0Ev", "clang::driver::JobAction::~JobAction()"}, + {"_ZN5clang6driver14BindArchActionD1Ev", "clang::driver::BindArchAction::~BindArchAction()"}, + {"_ZN5clang6driver14BindArchActionD0Ev", "clang::driver::BindArchAction::~BindArchAction()"}, + {"_ZN5clang6driver11InputActionD1Ev", "clang::driver::InputAction::~InputAction()"}, + {"_ZN5clang6driver11InputActionD0Ev", "clang::driver::InputAction::~InputAction()"}, + {"_ZN4llvm15SmallVectorImplIPN5clang6driver6ActionEEaSERKS5_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + {"_ZN5clang6driver3ArgC1EPKNS0_6OptionEjPKS1_", "clang::driver::Arg::Arg(clang::driver::Option const*, unsigned int, clang::driver::Arg const*)"}, + {"_ZN5clang6driver3ArgC2EPKNS0_6OptionEjPKS1_", "clang::driver::Arg::Arg(clang::driver::Option const*, unsigned int, clang::driver::Arg const*)"}, + {"_ZN5clang6driver3ArgC1EPKNS0_6OptionEjPKcPKS1_", "clang::driver::Arg::Arg(clang::driver::Option const*, unsigned int, char const*, clang::driver::Arg const*)"}, + {"_ZN5clang6driver3ArgC2EPKNS0_6OptionEjPKcPKS1_", "clang::driver::Arg::Arg(clang::driver::Option const*, unsigned int, char const*, clang::driver::Arg const*)"}, + {"_ZN5clang6driver3ArgC1EPKNS0_6OptionEjPKcS6_PKS1_", "clang::driver::Arg::Arg(clang::driver::Option const*, unsigned int, char const*, char const*, clang::driver::Arg const*)"}, + {"_ZN5clang6driver3ArgC2EPKNS0_6OptionEjPKcS6_PKS1_", "clang::driver::Arg::Arg(clang::driver::Option const*, unsigned int, char const*, char const*, clang::driver::Arg const*)"}, + {"_ZN5clang6driver3ArgD1Ev", "clang::driver::Arg::~Arg()"}, + {"_ZN5clang6driver3ArgD2Ev", "clang::driver::Arg::~Arg()"}, + {"_ZNK5clang6driver3Arg4dumpEv", "clang::driver::Arg::dump() const"}, + {"_ZNK5clang6driver3Arg11getAsStringERKNS0_7ArgListE", "clang::driver::Arg::getAsString(clang::driver::ArgList const&) const"}, + + // {"_ZNK5clang6driver3Arg6renderERKNS0_7ArgListERN4llvm11SmallVectorIPKcLj16EEE", + // "clang::driver::Arg::render(clang::driver::ArgList const&, llvm::SmallVector&) const"}, + // "clang::driver::Arg::render(clang::driver::ArgList const&, llvm::SmallVector&) const" was returned + + + // {"_ZNK5clang6driver3Arg13renderAsInputERKNS0_7ArgListERN4llvm11SmallVectorIPKcLj16EEE", + // "clang::driver::Arg::renderAsInput(clang::driver::ArgList const&, llvm::SmallVector&) const"}, + // "clang::driver::Arg::renderAsInput(clang::driver::ArgList const&, llvm::SmallVector&) const" was returned + + {"_ZN5clang6driver12arg_iterator13SkipToNextArgEv", "clang::driver::arg_iterator::SkipToNextArg()"}, + {"_ZN5clang6driver7ArgListC1Ev", "clang::driver::ArgList::ArgList()"}, + {"_ZN5clang6driver7ArgListC2Ev", "clang::driver::ArgList::ArgList()"}, + {"_ZN5clang6driver7ArgListD0Ev", "clang::driver::ArgList::~ArgList()"}, + {"_ZN5clang6driver7ArgListD1Ev", "clang::driver::ArgList::~ArgList()"}, + {"_ZN5clang6driver7ArgListD2Ev", "clang::driver::ArgList::~ArgList()"}, + {"_ZN5clang6driver7ArgList6appendEPNS0_3ArgE", "clang::driver::ArgList::append(clang::driver::Arg*)"}, + {"_ZNK5clang6driver7ArgList17getLastArgNoClaimENS0_12OptSpecifierE", "clang::driver::ArgList::getLastArgNoClaim(clang::driver::OptSpecifier) const"}, + {"_ZNK5clang6driver7ArgList10getLastArgENS0_12OptSpecifierE", "clang::driver::ArgList::getLastArg(clang::driver::OptSpecifier) const"}, + {"_ZNK5clang6driver7ArgList10getLastArgENS0_12OptSpecifierES2_", "clang::driver::ArgList::getLastArg(clang::driver::OptSpecifier, clang::driver::OptSpecifier) const"}, + {"_ZNK5clang6driver7ArgList10getLastArgENS0_12OptSpecifierES2_S2_", "clang::driver::ArgList::getLastArg(clang::driver::OptSpecifier, clang::driver::OptSpecifier, clang::driver::OptSpecifier) const"}, + {"_ZNK5clang6driver7ArgList10getLastArgENS0_12OptSpecifierES2_S2_S2_", "clang::driver::ArgList::getLastArg(clang::driver::OptSpecifier, clang::driver::OptSpecifier, clang::driver::OptSpecifier, clang::driver::OptSpecifier) const"}, + {"_ZNK5clang6driver7ArgList7hasFlagENS0_12OptSpecifierES2_b", "clang::driver::ArgList::hasFlag(clang::driver::OptSpecifier, clang::driver::OptSpecifier, bool) const"}, + {"_ZNK5clang6driver7ArgList15getLastArgValueENS0_12OptSpecifierEN4llvm9StringRefE", "clang::driver::ArgList::getLastArgValue(clang::driver::OptSpecifier, llvm::StringRef) const"}, + {"_ZNK5clang6driver7ArgList18getLastArgIntValueENS0_12OptSpecifierEiRNS_10DiagnosticE", "clang::driver::ArgList::getLastArgIntValue(clang::driver::OptSpecifier, int, clang::Diagnostic&) const"}, + {"_ZNK5clang6driver7ArgList15getAllArgValuesENS0_12OptSpecifierE", "clang::driver::ArgList::getAllArgValues(clang::driver::OptSpecifier) const"}, + + // {"_ZNK5clang6driver7ArgList15AddAllArgValuesERN4llvm11SmallVectorIPKcLj16EEENS0_12OptSpecifierES8_S8_", + // "clang::driver::ArgList::AddAllArgValues(llvm::SmallVector&, clang::driver::OptSpecifier, clang::driver::OptSpecifier, clang::driver::OptSpecifier) const"}, + // "clang::driver::ArgList::AddAllArgValues(llvm::SmallVector&, clang::driver::OptSpecifier, clang::driver::OptSpecifier, clang::driver::OptSpecifier) const" was returned + + + // {"_ZNK5clang6driver7ArgList10AddLastArgERN4llvm11SmallVectorIPKcLj16EEENS0_12OptSpecifierE", + // "clang::driver::ArgList::AddLastArg(llvm::SmallVector&, clang::driver::OptSpecifier) const"}, + // "clang::driver::ArgList::AddLastArg(llvm::SmallVector&, clang::driver::OptSpecifier) const" was returned + + + // {"_ZNK5clang6driver7ArgList10AddAllArgsERN4llvm11SmallVectorIPKcLj16EEENS0_12OptSpecifierES8_S8_", + // "clang::driver::ArgList::AddAllArgs(llvm::SmallVector&, clang::driver::OptSpecifier, clang::driver::OptSpecifier, clang::driver::OptSpecifier) const"}, + // "clang::driver::ArgList::AddAllArgs(llvm::SmallVector&, clang::driver::OptSpecifier, clang::driver::OptSpecifier, clang::driver::OptSpecifier) const" was returned + + + // {"_ZNK5clang6driver7ArgList20AddAllArgsTranslatedERN4llvm11SmallVectorIPKcLj16EEENS0_12OptSpecifierES5_b", + // "clang::driver::ArgList::AddAllArgsTranslated(llvm::SmallVector&, clang::driver::OptSpecifier, char const*, bool) const"}, + // "clang::driver::ArgList::AddAllArgsTranslated(llvm::SmallVector&, clang::driver::OptSpecifier, char const*, bool) const" was returned + + {"_ZNK5clang6driver7ArgList13MakeArgStringERKN4llvm5TwineE", "clang::driver::ArgList::MakeArgString(llvm::Twine const&) const"}, + {"_ZNK5clang6driver7ArgList12ClaimAllArgsENS0_12OptSpecifierE", "clang::driver::ArgList::ClaimAllArgs(clang::driver::OptSpecifier) const"}, + {"_ZNK5clang6driver7ArgList24GetOrMakeJoinedArgStringEjN4llvm9StringRefES3_", "clang::driver::ArgList::GetOrMakeJoinedArgString(unsigned int, llvm::StringRef, llvm::StringRef) const"}, + {"_ZN5clang6driver12InputArgListC1EPKPKcS5_", "clang::driver::InputArgList::InputArgList(char const* const*, char const* const*)"}, + {"_ZN5clang6driver12InputArgListC2EPKPKcS5_", "clang::driver::InputArgList::InputArgList(char const* const*, char const* const*)"}, + {"_ZN5clang6driver12InputArgListD0Ev", "clang::driver::InputArgList::~InputArgList()"}, + {"_ZN5clang6driver12InputArgListD1Ev", "clang::driver::InputArgList::~InputArgList()"}, + {"_ZN5clang6driver12InputArgListD2Ev", "clang::driver::InputArgList::~InputArgList()"}, + {"_ZNK5clang6driver12InputArgList9MakeIndexEN4llvm9StringRefE", "clang::driver::InputArgList::MakeIndex(llvm::StringRef) const"}, + {"_ZNK5clang6driver12InputArgList9MakeIndexEN4llvm9StringRefES3_", "clang::driver::InputArgList::MakeIndex(llvm::StringRef, llvm::StringRef) const"}, + {"_ZNK5clang6driver12InputArgList13MakeArgStringEN4llvm9StringRefE", "clang::driver::InputArgList::MakeArgString(llvm::StringRef) const"}, + {"_ZN5clang6driver14DerivedArgListC1ERKNS0_12InputArgListE", "clang::driver::DerivedArgList::DerivedArgList(clang::driver::InputArgList const&)"}, + {"_ZN5clang6driver14DerivedArgListC2ERKNS0_12InputArgListE", "clang::driver::DerivedArgList::DerivedArgList(clang::driver::InputArgList const&)"}, + {"_ZN5clang6driver14DerivedArgListD0Ev", "clang::driver::DerivedArgList::~DerivedArgList()"}, + {"_ZN5clang6driver14DerivedArgListD1Ev", "clang::driver::DerivedArgList::~DerivedArgList()"}, + {"_ZN5clang6driver14DerivedArgListD2Ev", "clang::driver::DerivedArgList::~DerivedArgList()"}, + {"_ZNK5clang6driver14DerivedArgList13MakeArgStringEN4llvm9StringRefE", "clang::driver::DerivedArgList::MakeArgString(llvm::StringRef) const"}, + {"_ZNK5clang6driver14DerivedArgList11MakeFlagArgEPKNS0_3ArgEPKNS0_6OptionE", "clang::driver::DerivedArgList::MakeFlagArg(clang::driver::Arg const*, clang::driver::Option const*) const"}, + {"_ZNK5clang6driver14DerivedArgList17MakePositionalArgEPKNS0_3ArgEPKNS0_6OptionEN4llvm9StringRefE", "clang::driver::DerivedArgList::MakePositionalArg(clang::driver::Arg const*, clang::driver::Option const*, llvm::StringRef) const"}, + {"_ZNK5clang6driver14DerivedArgList15MakeSeparateArgEPKNS0_3ArgEPKNS0_6OptionEN4llvm9StringRefE", "clang::driver::DerivedArgList::MakeSeparateArg(clang::driver::Arg const*, clang::driver::Option const*, llvm::StringRef) const"}, + {"_ZNK5clang6driver14DerivedArgList13MakeJoinedArgEPKNS0_3ArgEPKNS0_6OptionEN4llvm9StringRefE", "clang::driver::DerivedArgList::MakeJoinedArg(clang::driver::Arg const*, clang::driver::Option const*, llvm::StringRef) const"}, + {"_ZNK5clang6driver12InputArgList12getArgStringEj", "clang::driver::InputArgList::getArgString(unsigned int) const"}, + {"_ZNK5clang6driver12InputArgList21getNumInputArgStringsEv", "clang::driver::InputArgList::getNumInputArgStrings() const"}, + {"_ZNK5clang6driver14DerivedArgList12getArgStringEj", "clang::driver::DerivedArgList::getArgString(unsigned int) const"}, + {"_ZNK5clang6driver14DerivedArgList21getNumInputArgStringsEv", "clang::driver::DerivedArgList::getNumInputArgStrings() const"}, + + // {"_ZNSt6vectorISsSaISsEE22_M_initialize_dispatchIPPKcEEvT_S6_St12__false_type", + // "void std::vector>::_M_initialize_dispatch(char const**, char const**, std::__false_type)"}, + // "void std::vector>::_M_initialize_dispatch(std::string, char const**, std::__false_type)" was returned + + {"_ZN5clang6driver19createCC1AsOptTableEv", "clang::driver::createCC1AsOptTable()"}, + {"_ZN5clang6driver17createCC1OptTableEv", "clang::driver::createCC1OptTable()"}, + {"_ZN5clang6driver11CompilationC1ERKNS0_6DriverERKNS0_9ToolChainEPNS0_12InputArgListEPNS0_14DerivedArgListE", "clang::driver::Compilation::Compilation(clang::driver::Driver const&, clang::driver::ToolChain const&, clang::driver::InputArgList*, clang::driver::DerivedArgList*)"}, + {"_ZN5clang6driver11CompilationC2ERKNS0_6DriverERKNS0_9ToolChainEPNS0_12InputArgListEPNS0_14DerivedArgListE", "clang::driver::Compilation::Compilation(clang::driver::Driver const&, clang::driver::ToolChain const&, clang::driver::InputArgList*, clang::driver::DerivedArgList*)"}, + {"_ZN5clang6driver11CompilationD1Ev", "clang::driver::Compilation::~Compilation()"}, + {"_ZN5clang6driver11CompilationD2Ev", "clang::driver::Compilation::~Compilation()"}, + {"_ZN5clang6driver11Compilation19getArgsForToolChainEPKNS0_9ToolChainEPKc", "clang::driver::Compilation::getArgsForToolChain(clang::driver::ToolChain const*, char const*)"}, + {"_ZNK5clang6driver11Compilation8PrintJobERN4llvm11raw_ostreamERKNS0_3JobEPKcb", "clang::driver::Compilation::PrintJob(llvm::raw_ostream&, clang::driver::Job const&, char const*, bool) const"}, + + // {"_ZNK5clang6driver11Compilation15CleanupFileListERKN4llvm11SmallVectorIPKcLj16EEEb", + // "clang::driver::Compilation::CleanupFileList(llvm::SmallVector const&, bool) const"}, + // "clang::driver::Compilation::CleanupFileList(llvm::SmallVector const&, bool) const" was returned + + {"_ZNK5clang6driver11Compilation14ExecuteCommandERKNS0_7CommandERPS3_", "clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&) const"}, + {"_ZNK5clang6driver11Compilation10ExecuteJobERKNS0_3JobERPKNS0_7CommandE", "clang::driver::Compilation::ExecuteJob(clang::driver::Job const&, clang::driver::Command const*&) const"}, + + // {"_ZNK4llvm8DenseMapISt4pairIPKN5clang6driver9ToolChainEPKcEPNS3_14DerivedArgListENS_12DenseMapInfoIS9_EENSC_ISB_EEE15LookupBucketForERKS9_RPS1_IS9_SB_E", + // "llvm::DenseMap, clang::driver::DerivedArgList*, llvm::DenseMapInfo>, llvm::DenseMapInfo>::LookupBucketFor(std::pair const&, std::pair, clang::driver::DerivedArgList*>*&) const"}, + // "llvm::DenseMap, clang::driver::DerivedArgList*, llvm::DenseMapInfo>, llvm::DenseMapInfo>::LookupBucketFor(std::pair const&, std::pair*&, clang::driver::DerivedArgList*>) const" was returned + + + // {"_ZN4llvm8DenseMapISt4pairIPKN5clang6driver9ToolChainEPKcEPNS3_14DerivedArgListENS_12DenseMapInfoIS9_EENSC_ISB_EEE16InsertIntoBucketERKS9_RKSB_PS1_IS9_SB_E", + // "llvm::DenseMap, clang::driver::DerivedArgList*, llvm::DenseMapInfo>, llvm::DenseMapInfo>::InsertIntoBucket(std::pair const&, clang::driver::DerivedArgList* const&, std::pair, clang::driver::DerivedArgList*>*)"}, + // "llvm::DenseMap, clang::driver::DerivedArgList*, llvm::DenseMapInfo>, llvm::DenseMapInfo>::InsertIntoBucket(std::pair const&, clang::driver::DerivedArgList* const&, std::pair*, clang::driver::DerivedArgList*>)" was returned + + {"_ZN4llvm8DenseMapISt4pairIPKN5clang6driver9ToolChainEPKcEPNS3_14DerivedArgListENS_12DenseMapInfoIS9_EENSC_ISB_EEE4growEj", "llvm::DenseMap, clang::driver::DerivedArgList*, llvm::DenseMapInfo>, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang6driver6DriverC1EN4llvm9StringRefES3_S3_bbRNS_10DiagnosticE", "clang::driver::Driver::Driver(llvm::StringRef, llvm::StringRef, llvm::StringRef, bool, bool, clang::Diagnostic&)"}, + {"_ZN5clang6driver6DriverC2EN4llvm9StringRefES3_S3_bbRNS_10DiagnosticE", "clang::driver::Driver::Driver(llvm::StringRef, llvm::StringRef, llvm::StringRef, bool, bool, clang::Diagnostic&)"}, + {"_ZN5clang6driver6DriverD1Ev", "clang::driver::Driver::~Driver()"}, + {"_ZN5clang6driver6DriverD2Ev", "clang::driver::Driver::~Driver()"}, + {"_ZN5clang6driver6Driver15ParseArgStringsEPPKcS4_", "clang::driver::Driver::ParseArgStrings(char const**, char const**)"}, + {"_ZNK5clang6driver6Driver18TranslateInputArgsERKNS0_12InputArgListE", "clang::driver::Driver::TranslateInputArgs(clang::driver::InputArgList const&) const"}, + {"_ZN5clang6driver6Driver16BuildCompilationEiPPKc", "clang::driver::Driver::BuildCompilation(int, char const**)"}, + {"_ZNK5clang6driver6Driver11GetHostInfoEPKc", "clang::driver::Driver::GetHostInfo(char const*) const"}, + {"_ZNK5clang6driver6Driver12PrintOptionsERKNS0_7ArgListE", "clang::driver::Driver::PrintOptions(clang::driver::ArgList const&) const"}, + {"_ZN5clang6driver6Driver19HandleImmediateArgsERKNS0_11CompilationE", "clang::driver::Driver::HandleImmediateArgs(clang::driver::Compilation const&)"}, + + // {"_ZNK5clang6driver6Driver21BuildUniversalActionsERKNS0_9ToolChainERKNS0_7ArgListERN4llvm11SmallVectorIPNS0_6ActionELj3EEE", + // "clang::driver::Driver::BuildUniversalActions(clang::driver::ToolChain const&, clang::driver::ArgList const&, llvm::SmallVector&) const"}, + // "clang::driver::Driver::BuildUniversalActions(clang::driver::ToolChain const&, clang::driver::ArgList const&, llvm::SmallVector&) const" was returned + + + // {"_ZNK5clang6driver6Driver12BuildActionsERKNS0_9ToolChainERKNS0_7ArgListERN4llvm11SmallVectorIPNS0_6ActionELj3EEE", + // "clang::driver::Driver::BuildActions(clang::driver::ToolChain const&, clang::driver::ArgList const&, llvm::SmallVector&) const"}, + // "clang::driver::Driver::BuildActions(clang::driver::ToolChain const&, clang::driver::ArgList const&, llvm::SmallVector&) const" was returned + + {"_ZNK5clang6driver6Driver12PrintActionsERKNS0_11CompilationE", "clang::driver::Driver::PrintActions(clang::driver::Compilation const&) const"}, + {"_ZNK5clang6driver6Driver9BuildJobsERNS0_11CompilationE", "clang::driver::Driver::BuildJobs(clang::driver::Compilation&) const"}, + {"_ZNK5clang6driver6Driver18ExecuteCompilationERKNS0_11CompilationE", "clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation const&) const"}, + {"_ZNK5clang6driver6Driver9PrintHelpEb", "clang::driver::Driver::PrintHelp(bool) const"}, + {"_ZNK5clang6driver6Driver12PrintVersionERKNS0_11CompilationERN4llvm11raw_ostreamE", "clang::driver::Driver::PrintVersion(clang::driver::Compilation const&, llvm::raw_ostream&) const"}, + {"_ZNK5clang6driver6Driver11GetFilePathEPKcRKNS0_9ToolChainE", "clang::driver::Driver::GetFilePath(char const*, clang::driver::ToolChain const&) const"}, + {"_ZNK5clang6driver6Driver14GetProgramPathEPKcRKNS0_9ToolChainEb", "clang::driver::Driver::GetProgramPath(char const*, clang::driver::ToolChain const&, bool) const"}, + {"_Z13PrintActions1RKN5clang6driver11CompilationEPNS0_6ActionERSt3mapIS5_jSt4lessIS5_ESaISt4pairIKS5_jEEE", "PrintActions1(clang::driver::Compilation const&, clang::driver::Action*, std::map, std::allocator>>&)"}, + {"_Z21ContainsCompileActionPKN5clang6driver6ActionE", "ContainsCompileAction(clang::driver::Action const*)"}, + {"_ZNK5clang6driver6Driver20ConstructPhaseActionERKNS0_7ArgListENS0_6phases2IDEPNS0_6ActionE", "clang::driver::Driver::ConstructPhaseAction(clang::driver::ArgList const&, clang::driver::phases::ID, clang::driver::Action*) const"}, + {"_ZNK5clang6driver6Driver18BuildJobsForActionERNS0_11CompilationEPKNS0_6ActionEPKNS0_9ToolChainEPKcbSB_RNS0_9InputInfoE", "clang::driver::Driver::BuildJobsForAction(clang::driver::Compilation&, clang::driver::Action const*, clang::driver::ToolChain const*, char const*, bool, char const*, clang::driver::InputInfo&) const"}, + {"_ZNK5clang6driver6Driver18GetNamedOutputPathERNS0_11CompilationERKNS0_9JobActionEPKcb", "clang::driver::Driver::GetNamedOutputPath(clang::driver::Compilation&, clang::driver::JobAction const&, char const*, bool) const"}, + {"_ZNK5clang6driver6Driver16GetTemporaryPathEPKc", "clang::driver::Driver::GetTemporaryPath(char const*) const"}, + {"_ZNK5clang6driver6Driver22ShouldUseClangCompilerERKNS0_11CompilationERKNS0_9JobActionERKN4llvm6TripleE", "clang::driver::Driver::ShouldUseClangCompiler(clang::driver::Compilation const&, clang::driver::JobAction const&, llvm::Triple const&) const"}, + {"_ZN5clang6driver6Driver17GetReleaseVersionEPKcRjS4_S4_Rb", "clang::driver::Driver::GetReleaseVersion(char const*, unsigned int&, unsigned int&, unsigned int&, bool&)"}, + {"_ZN4llvm22PrettyStackTraceStringD1Ev", "llvm::PrettyStackTraceString::~PrettyStackTraceString()"}, + {"_ZN4llvm9StringSetINS_15MallocAllocatorEE6insertENS_9StringRefE", "llvm::StringSet::insert(llvm::StringRef)"}, + {"_ZNK5clang6driver9InputInfo11getAsStringEv", "clang::driver::InputInfo::getAsString() const"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang6driver9InputInfoELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN4llvm23SmallVectorTemplateBaseISsLb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZNSt8_Rb_treeIN4llvm6Triple8ArchTypeES2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE8_M_eraseEPSt13_Rb_tree_nodeIS2_E", "std::_Rb_tree, std::less, std::allocator>::_M_erase(std::_Rb_tree_node*)"}, + {"_ZNSt8_Rb_treeIN4llvm6Triple8ArchTypeES2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE16_M_insert_uniqueERKS2_", "std::_Rb_tree, std::less, std::allocator>::_M_insert_unique(llvm::Triple::ArchType const&)"}, + {"_ZNSt8_Rb_treeIPN5clang6driver6ActionESt4pairIKS3_jESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE8_M_eraseEPSt13_Rb_tree_nodeIS6_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZNK4llvm18raw_string_ostream11current_posEv", "llvm::raw_string_ostream::current_pos() const"}, + {"_ZNSt8_Rb_treeIPN5clang6driver6ActionESt4pairIKS3_jESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS6_ERKS6_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIPN5clang6driver6ActionESt4pairIKS3_jESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE16_M_insert_uniqueERKS6_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZN4llvm6TripleC2ENS_9StringRefES1_S1_", "llvm::Triple::Triple(llvm::StringRef, llvm::StringRef, llvm::StringRef)"}, + {"_ZN4llvm22PrettyStackTraceStringD0Ev", "llvm::PrettyStackTraceString::~PrettyStackTraceString()"}, + {"_ZN5clang6driver20createDriverOptTableEv", "clang::driver::createDriverOptTable()"}, + {"_ZN5clang6driver8HostInfoC1ERKNS0_6DriverERKN4llvm6TripleE", "clang::driver::HostInfo::HostInfo(clang::driver::Driver const&, llvm::Triple const&)"}, + {"_ZN5clang6driver8HostInfoC2ERKNS0_6DriverERKN4llvm6TripleE", "clang::driver::HostInfo::HostInfo(clang::driver::Driver const&, llvm::Triple const&)"}, + {"_ZN5clang6driver8HostInfoD0Ev", "clang::driver::HostInfo::~HostInfo()"}, + {"_ZN5clang6driver8HostInfoD1Ev", "clang::driver::HostInfo::~HostInfo()"}, + {"_ZN5clang6driver8HostInfoD2Ev", "clang::driver::HostInfo::~HostInfo()"}, + {"_ZN5clang6driver22createAuroraUXHostInfoERKNS0_6DriverERKN4llvm6TripleE", "clang::driver::createAuroraUXHostInfo(clang::driver::Driver const&, llvm::Triple const&)"}, + {"_ZN5clang6driver20createDarwinHostInfoERKNS0_6DriverERKN4llvm6TripleE", "clang::driver::createDarwinHostInfo(clang::driver::Driver const&, llvm::Triple const&)"}, + {"_ZN5clang6driver21createOpenBSDHostInfoERKNS0_6DriverERKN4llvm6TripleE", "clang::driver::createOpenBSDHostInfo(clang::driver::Driver const&, llvm::Triple const&)"}, + {"_ZN5clang6driver21createFreeBSDHostInfoERKNS0_6DriverERKN4llvm6TripleE", "clang::driver::createFreeBSDHostInfo(clang::driver::Driver const&, llvm::Triple const&)"}, + {"_ZN5clang6driver20createNetBSDHostInfoERKNS0_6DriverERKN4llvm6TripleE", "clang::driver::createNetBSDHostInfo(clang::driver::Driver const&, llvm::Triple const&)"}, + {"_ZN5clang6driver19createMinixHostInfoERKNS0_6DriverERKN4llvm6TripleE", "clang::driver::createMinixHostInfo(clang::driver::Driver const&, llvm::Triple const&)"}, + {"_ZN5clang6driver23createDragonFlyHostInfoERKNS0_6DriverERKN4llvm6TripleE", "clang::driver::createDragonFlyHostInfo(clang::driver::Driver const&, llvm::Triple const&)"}, + {"_ZN5clang6driver19createLinuxHostInfoERKNS0_6DriverERKN4llvm6TripleE", "clang::driver::createLinuxHostInfo(clang::driver::Driver const&, llvm::Triple const&)"}, + {"_ZN5clang6driver17createTCEHostInfoERKNS0_6DriverERKN4llvm6TripleE", "clang::driver::createTCEHostInfo(clang::driver::Driver const&, llvm::Triple const&)"}, + {"_ZN5clang6driver21createWindowsHostInfoERKNS0_6DriverERKN4llvm6TripleE", "clang::driver::createWindowsHostInfo(clang::driver::Driver const&, llvm::Triple const&)"}, + {"_ZN5clang6driver19createMinGWHostInfoERKNS0_6DriverERKN4llvm6TripleE", "clang::driver::createMinGWHostInfo(clang::driver::Driver const&, llvm::Triple const&)"}, + {"_ZN5clang6driver21createUnknownHostInfoERKNS0_6DriverERKN4llvm6TripleE", "clang::driver::createUnknownHostInfo(clang::driver::Driver const&, llvm::Triple const&)"}, + {"_ZN12_GLOBAL__N_115UnknownHostInfoD1Ev", "(anonymous namespace)::UnknownHostInfo::~UnknownHostInfo()"}, + {"_ZN12_GLOBAL__N_115UnknownHostInfoD0Ev", "(anonymous namespace)::UnknownHostInfo::~UnknownHostInfo()"}, + {"_ZNK12_GLOBAL__N_115UnknownHostInfo15useDriverDriverEv", "(anonymous namespace)::UnknownHostInfo::useDriverDriver() const"}, + {"_ZNK12_GLOBAL__N_115UnknownHostInfo15CreateToolChainERKN5clang6driver7ArgListEPKc", "(anonymous namespace)::UnknownHostInfo::CreateToolChain(clang::driver::ArgList const&, char const*) const"}, + {"_ZN12_GLOBAL__N_115UnknownHostInfoD2Ev", "(anonymous namespace)::UnknownHostInfo::~UnknownHostInfo()"}, + {"_ZN12_GLOBAL__N_113MinGWHostInfoD1Ev", "(anonymous namespace)::MinGWHostInfo::~MinGWHostInfo()"}, + {"_ZN12_GLOBAL__N_113MinGWHostInfoD0Ev", "(anonymous namespace)::MinGWHostInfo::~MinGWHostInfo()"}, + {"_ZN12_GLOBAL__N_115WindowsHostInfoD1Ev", "(anonymous namespace)::WindowsHostInfo::~WindowsHostInfo()"}, + {"_ZN12_GLOBAL__N_115WindowsHostInfoD0Ev", "(anonymous namespace)::WindowsHostInfo::~WindowsHostInfo()"}, + {"_ZNK12_GLOBAL__N_115WindowsHostInfo15useDriverDriverEv", "(anonymous namespace)::WindowsHostInfo::useDriverDriver() const"}, + {"_ZNK12_GLOBAL__N_115WindowsHostInfo15CreateToolChainERKN5clang6driver7ArgListEPKc", "(anonymous namespace)::WindowsHostInfo::CreateToolChain(clang::driver::ArgList const&, char const*) const"}, + {"_ZNK12_GLOBAL__N_115WindowsHostInfo22lookupTypeForExtensionEPKc", "(anonymous namespace)::WindowsHostInfo::lookupTypeForExtension(char const*) const"}, + {"_ZN12_GLOBAL__N_111TCEHostInfoD1Ev", "(anonymous namespace)::TCEHostInfo::~TCEHostInfo()"}, + {"_ZN12_GLOBAL__N_111TCEHostInfoD0Ev", "(anonymous namespace)::TCEHostInfo::~TCEHostInfo()"}, + {"_ZNK12_GLOBAL__N_111TCEHostInfo15useDriverDriverEv", "(anonymous namespace)::TCEHostInfo::useDriverDriver() const"}, + {"_ZNK12_GLOBAL__N_111TCEHostInfo15CreateToolChainERKN5clang6driver7ArgListEPKc", "(anonymous namespace)::TCEHostInfo::CreateToolChain(clang::driver::ArgList const&, char const*) const"}, + {"_ZN12_GLOBAL__N_113LinuxHostInfoD1Ev", "(anonymous namespace)::LinuxHostInfo::~LinuxHostInfo()"}, + {"_ZN12_GLOBAL__N_113LinuxHostInfoD0Ev", "(anonymous namespace)::LinuxHostInfo::~LinuxHostInfo()"}, + {"_ZNK12_GLOBAL__N_113LinuxHostInfo15useDriverDriverEv", "(anonymous namespace)::LinuxHostInfo::useDriverDriver() const"}, + {"_ZNK12_GLOBAL__N_113LinuxHostInfo15CreateToolChainERKN5clang6driver7ArgListEPKc", "(anonymous namespace)::LinuxHostInfo::CreateToolChain(clang::driver::ArgList const&, char const*) const"}, + {"_ZN12_GLOBAL__N_117DragonFlyHostInfoD1Ev", "(anonymous namespace)::DragonFlyHostInfo::~DragonFlyHostInfo()"}, + {"_ZN12_GLOBAL__N_117DragonFlyHostInfoD0Ev", "(anonymous namespace)::DragonFlyHostInfo::~DragonFlyHostInfo()"}, + {"_ZNK12_GLOBAL__N_117DragonFlyHostInfo15useDriverDriverEv", "(anonymous namespace)::DragonFlyHostInfo::useDriverDriver() const"}, + {"_ZNK12_GLOBAL__N_117DragonFlyHostInfo15CreateToolChainERKN5clang6driver7ArgListEPKc", "(anonymous namespace)::DragonFlyHostInfo::CreateToolChain(clang::driver::ArgList const&, char const*) const"}, + {"_ZN12_GLOBAL__N_113MinixHostInfoD1Ev", "(anonymous namespace)::MinixHostInfo::~MinixHostInfo()"}, + {"_ZN12_GLOBAL__N_113MinixHostInfoD0Ev", "(anonymous namespace)::MinixHostInfo::~MinixHostInfo()"}, + {"_ZNK12_GLOBAL__N_113MinixHostInfo15useDriverDriverEv", "(anonymous namespace)::MinixHostInfo::useDriverDriver() const"}, + {"_ZNK12_GLOBAL__N_113MinixHostInfo15CreateToolChainERKN5clang6driver7ArgListEPKc", "(anonymous namespace)::MinixHostInfo::CreateToolChain(clang::driver::ArgList const&, char const*) const"}, + {"_ZN12_GLOBAL__N_114NetBSDHostInfoD1Ev", "(anonymous namespace)::NetBSDHostInfo::~NetBSDHostInfo()"}, + {"_ZN12_GLOBAL__N_114NetBSDHostInfoD0Ev", "(anonymous namespace)::NetBSDHostInfo::~NetBSDHostInfo()"}, + {"_ZNK12_GLOBAL__N_114NetBSDHostInfo15useDriverDriverEv", "(anonymous namespace)::NetBSDHostInfo::useDriverDriver() const"}, + {"_ZNK12_GLOBAL__N_114NetBSDHostInfo15CreateToolChainERKN5clang6driver7ArgListEPKc", "(anonymous namespace)::NetBSDHostInfo::CreateToolChain(clang::driver::ArgList const&, char const*) const"}, + {"_ZN12_GLOBAL__N_115FreeBSDHostInfoD1Ev", "(anonymous namespace)::FreeBSDHostInfo::~FreeBSDHostInfo()"}, + {"_ZN12_GLOBAL__N_115FreeBSDHostInfoD0Ev", "(anonymous namespace)::FreeBSDHostInfo::~FreeBSDHostInfo()"}, + {"_ZNK12_GLOBAL__N_115FreeBSDHostInfo15useDriverDriverEv", "(anonymous namespace)::FreeBSDHostInfo::useDriverDriver() const"}, + {"_ZNK12_GLOBAL__N_115FreeBSDHostInfo15CreateToolChainERKN5clang6driver7ArgListEPKc", "(anonymous namespace)::FreeBSDHostInfo::CreateToolChain(clang::driver::ArgList const&, char const*) const"}, + {"_ZN12_GLOBAL__N_115OpenBSDHostInfoD1Ev", "(anonymous namespace)::OpenBSDHostInfo::~OpenBSDHostInfo()"}, + {"_ZN12_GLOBAL__N_115OpenBSDHostInfoD0Ev", "(anonymous namespace)::OpenBSDHostInfo::~OpenBSDHostInfo()"}, + {"_ZNK12_GLOBAL__N_115OpenBSDHostInfo15useDriverDriverEv", "(anonymous namespace)::OpenBSDHostInfo::useDriverDriver() const"}, + {"_ZNK12_GLOBAL__N_115OpenBSDHostInfo15CreateToolChainERKN5clang6driver7ArgListEPKc", "(anonymous namespace)::OpenBSDHostInfo::CreateToolChain(clang::driver::ArgList const&, char const*) const"}, + {"_ZN12_GLOBAL__N_114DarwinHostInfoD1Ev", "(anonymous namespace)::DarwinHostInfo::~DarwinHostInfo()"}, + {"_ZN12_GLOBAL__N_114DarwinHostInfoD0Ev", "(anonymous namespace)::DarwinHostInfo::~DarwinHostInfo()"}, + {"_ZNK12_GLOBAL__N_114DarwinHostInfo15useDriverDriverEv", "(anonymous namespace)::DarwinHostInfo::useDriverDriver() const"}, + {"_ZNK12_GLOBAL__N_114DarwinHostInfo15CreateToolChainERKN5clang6driver7ArgListEPKc", "(anonymous namespace)::DarwinHostInfo::CreateToolChain(clang::driver::ArgList const&, char const*) const"}, + {"_ZN12_GLOBAL__N_116AuroraUXHostInfoD1Ev", "(anonymous namespace)::AuroraUXHostInfo::~AuroraUXHostInfo()"}, + {"_ZN12_GLOBAL__N_116AuroraUXHostInfoD0Ev", "(anonymous namespace)::AuroraUXHostInfo::~AuroraUXHostInfo()"}, + {"_ZNK12_GLOBAL__N_116AuroraUXHostInfo15useDriverDriverEv", "(anonymous namespace)::AuroraUXHostInfo::useDriverDriver() const"}, + {"_ZNK12_GLOBAL__N_116AuroraUXHostInfo15CreateToolChainERKN5clang6driver7ArgListEPKc", "(anonymous namespace)::AuroraUXHostInfo::CreateToolChain(clang::driver::ArgList const&, char const*) const"}, + {"_ZN4llvm9StringMapIPN5clang6driver9ToolChainENS_15MallocAllocatorEE16GetOrCreateValueIS4_EERNS_14StringMapEntryIS4_EENS_9StringRefET_", "llvm::StringMapEntry& llvm::StringMap::GetOrCreateValue(llvm::StringRef, clang::driver::ToolChain*)"}, + {"_ZNK5clang6driver9ToolChain13TranslateArgsERKNS0_14DerivedArgListEPKc", "clang::driver::ToolChain::TranslateArgs(clang::driver::DerivedArgList const&, char const*) const"}, + {"_ZNK5clang6driver9ToolChain15IsBlocksDefaultEv", "clang::driver::ToolChain::IsBlocksDefault() const"}, + {"_ZNK5clang6driver9ToolChain28IsIntegratedAssemblerDefaultEv", "clang::driver::ToolChain::IsIntegratedAssemblerDefault() const"}, + {"_ZNK5clang6driver9ToolChain23IsStrictAliasingDefaultEv", "clang::driver::ToolChain::IsStrictAliasingDefault() const"}, + {"_ZNK5clang6driver9ToolChain35IsObjCDefaultSynthPropertiesDefaultEv", "clang::driver::ToolChain::IsObjCDefaultSynthPropertiesDefault() const"}, + {"_ZNK5clang6driver9ToolChain26IsObjCNonFragileABIDefaultEv", "clang::driver::ToolChain::IsObjCNonFragileABIDefault() const"}, + {"_ZNK5clang6driver9ToolChain27IsObjCLegacyDispatchDefaultEv", "clang::driver::ToolChain::IsObjCLegacyDispatchDefault() const"}, + {"_ZNK5clang6driver9ToolChain20UseObjCMixedDispatchEv", "clang::driver::ToolChain::UseObjCMixedDispatch() const"}, + {"_ZNK5clang6driver9ToolChain29GetDefaultStackProtectorLevelEv", "clang::driver::ToolChain::GetDefaultStackProtectorLevel() const"}, + {"_ZNK5clang6driver10toolchains18Darwin_Generic_GCC25GetDefaultRelocationModelEv", "clang::driver::toolchains::Darwin_Generic_GCC::GetDefaultRelocationModel() const"}, + {"_ZNK5clang6driver9ToolChain14SupportsObjCGCEv", "clang::driver::ToolChain::SupportsObjCGC() const"}, + {"_ZNK5clang6driver9ToolChain18UseDwarfDebugFlagsEv", "clang::driver::ToolChain::UseDwarfDebugFlags() const"}, + {"_ZNK5clang6driver9ToolChain17UseSjLjExceptionsEv", "clang::driver::ToolChain::UseSjLjExceptions() const"}, + {"_ZN4llvm8DenseMapIjPN5clang6driver9ToolChainENS_12DenseMapInfoIjEENS5_IS4_EEE16InsertIntoBucketERKjRKS4_PSt4pairIjS4_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(unsigned int const&, clang::driver::ToolChain* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIjPN5clang6driver9ToolChainENS_12DenseMapInfoIjEENS5_IS4_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang6driver3JobD0Ev", "clang::driver::Job::~Job()"}, + {"_ZN5clang6driver3JobD1Ev", "clang::driver::Job::~Job()"}, + {"_ZN5clang6driver3JobD2Ev", "clang::driver::Job::~Job()"}, + + // {"_ZN5clang6driver7CommandC1ERKNS0_6ActionERKNS0_4ToolEPKcRKN4llvm11SmallVectorIS9_Lj16EEE", + // "clang::driver::Command::Command(clang::driver::Action const&, clang::driver::Tool const&, char const*, llvm::SmallVector const&)"}, + // "clang::driver::Command::Command(clang::driver::Action const&, clang::driver::Tool const&, char const*, llvm::SmallVector const&)" was returned + + + // {"_ZN5clang6driver7CommandC2ERKNS0_6ActionERKNS0_4ToolEPKcRKN4llvm11SmallVectorIS9_Lj16EEE", + // "clang::driver::Command::Command(clang::driver::Action const&, clang::driver::Tool const&, char const*, llvm::SmallVector const&)"}, + // "clang::driver::Command::Command(clang::driver::Action const&, clang::driver::Tool const&, char const*, llvm::SmallVector const&)" was returned + + {"_ZN5clang6driver7JobListC1Ev", "clang::driver::JobList::JobList()"}, + {"_ZN5clang6driver7JobListC2Ev", "clang::driver::JobList::JobList()"}, + {"_ZN5clang6driver7JobListD0Ev", "clang::driver::JobList::~JobList()"}, + {"_ZN5clang6driver7JobListD1Ev", "clang::driver::JobList::~JobList()"}, + {"_ZN5clang6driver7JobListD2Ev", "clang::driver::JobList::~JobList()"}, + {"_ZN5clang6driver3Job10addCommandEPNS0_7CommandE", "clang::driver::Job::addCommand(clang::driver::Command*)"}, + {"_ZN5clang6driver7CommandD1Ev", "clang::driver::Command::~Command()"}, + {"_ZN5clang6driver7CommandD0Ev", "clang::driver::Command::~Command()"}, + {"_ZN4llvm15SmallVectorImplIPKcEaSERKS3_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + {"_ZN5clang6driver12OptSpecifierC1EPKNS0_6OptionE", "clang::driver::OptSpecifier::OptSpecifier(clang::driver::Option const*)"}, + {"_ZN5clang6driver12OptSpecifierC2EPKNS0_6OptionE", "clang::driver::OptSpecifier::OptSpecifier(clang::driver::Option const*)"}, + {"_ZN5clang6driver8OptTableC1EPKNS1_4InfoEj", "clang::driver::OptTable::OptTable(clang::driver::OptTable::Info const*, unsigned int)"}, + {"_ZN5clang6driver8OptTableC2EPKNS1_4InfoEj", "clang::driver::OptTable::OptTable(clang::driver::OptTable::Info const*, unsigned int)"}, + {"_ZN5clang6driver8OptTableD1Ev", "clang::driver::OptTable::~OptTable()"}, + {"_ZN5clang6driver8OptTableD2Ev", "clang::driver::OptTable::~OptTable()"}, + {"_ZNK5clang6driver8OptTable12CreateOptionEj", "clang::driver::OptTable::CreateOption(unsigned int) const"}, + {"_ZNK5clang6driver8OptTable11ParseOneArgERKNS0_7ArgListERj", "clang::driver::OptTable::ParseOneArg(clang::driver::ArgList const&, unsigned int&) const"}, + {"_ZNK5clang6driver8OptTable9ParseArgsEPKPKcS5_RjS6_", "clang::driver::OptTable::ParseArgs(char const* const*, char const* const*, unsigned int&, unsigned int&) const"}, + {"_ZNK5clang6driver8OptTable9PrintHelpERN4llvm11raw_ostreamEPKcS6_b", "clang::driver::OptTable::PrintHelp(llvm::raw_ostream&, char const*, char const*, bool) const"}, + + // {"_ZNSt3mapISsSt6vectorISt4pairISsPKcESaIS4_EESt4lessISsESaIS1_IKSsS6_EEEixERS9_", + // "std::map, std::allocator>>, std::less, std::allocator, std::allocator>>>>>::operator[](std::string const&)"}, + // "std::map, std::allocator>, std::less, std::allocator>>>::operator[](std::less&)" was returned + + + // {"_ZNSt6vectorISt4pairISsPKcESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_", + // "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + // "std::vector, std::allocator>::_M_insert_aux(__gnu_cxx::__normal_iterator>, char const* const&)" was returned + + + // {"_ZNSt6vectorISt4pairISsPKcESaIS3_EEC2ERKS5_", + // "std::vector, std::allocator>>::vector(std::vector, std::allocator>> const&)"}, + // "std::vector, std::allocator>::string(std::allocator const&)" was returned + + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsSt6vectorIS0_ISsPKcESaIS5_EEESt10_Select1stIS8_ESt4lessISsESaIS8_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS8_ERKS8_", + // "std::_Rb_tree, std::allocator>>>, std::_Select1st, std::allocator>>>>, std::less, std::allocator, std::allocator>>>>>::_M_insert_unique(std::_Rb_tree_iterator, std::allocator>>>>, std::pair, std::allocator>>> const&)"}, + // "std::_Rb_tree, std::allocator>>, std::_Select1st, std::allocator>>, std::less, std::allocator, std::allocator>>>::_M_insert_unique(std::_Rb_tree_iterator, std::allocator>>, std::vector, std::allocator> const&)" was returned + + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsSt6vectorIS0_ISsPKcESaIS5_EEESt10_Select1stIS8_ESt4lessISsESaIS8_EE9_M_insertEPSt18_Rb_tree_node_baseSG_RKS8_", + // "std::_Rb_tree, std::allocator>>>, std::_Select1st, std::allocator>>>>, std::less, std::allocator, std::allocator>>>>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair, std::allocator>>> const&)"}, + // "std::_Rb_tree, std::allocator>>, std::_Select1st, std::allocator>>, std::less, std::allocator, std::allocator>>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base, std::vector, std::allocator> const&)" was returned + + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsSt6vectorIS0_ISsPKcESaIS5_EEESt10_Select1stIS8_ESt4lessISsESaIS8_EE16_M_insert_uniqueERKS8_", + // "std::_Rb_tree, std::allocator>>>, std::_Select1st, std::allocator>>>>, std::less, std::allocator, std::allocator>>>>>::_M_insert_unique(std::pair, std::allocator>>> const&)"}, + // "std::_Rb_tree, std::allocator>>, std::_Select1st, std::allocator>>, std::less, std::allocator, std::allocator>>>::_M_insert_unique(std::vector, std::allocator> const&)" was returned + + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsSt6vectorIS0_ISsPKcESaIS5_EEESt10_Select1stIS8_ESt4lessISsESaIS8_EE8_M_eraseEPSt13_Rb_tree_nodeIS8_E", + // "std::_Rb_tree, std::allocator>>>, std::_Select1st, std::allocator>>>>, std::less, std::allocator, std::allocator>>>>>::_M_erase(std::_Rb_tree_node, std::allocator>>>>*)"}, + // "std::_Rb_tree, std::allocator>>, std::_Select1st, std::allocator>>, std::less, std::allocator, std::allocator>>>::_M_erase(std::_Rb_tree_node, std::allocator>>*)" was returned + + + // {"_ZN9__gnu_cxx13new_allocatorISt4pairIKSsSt6vectorIS1_ISsPKcESaIS6_EEEE7destroyEPS9_", + // "__gnu_cxx::new_allocator, std::allocator>>>>::destroy(std::pair, std::allocator>>>*)"}, + // "__gnu_cxx::new_allocator, std::allocator>>>::destroy(std::vector, std::allocator>*)" was returned + + {"_ZN5clang6driver6OptionC1ENS1_11OptionClassENS0_12OptSpecifierEPKcPKNS0_11OptionGroupEPKS1_", "clang::driver::Option::Option(clang::driver::Option::OptionClass, clang::driver::OptSpecifier, char const*, clang::driver::OptionGroup const*, clang::driver::Option const*)"}, + {"_ZN5clang6driver6OptionC2ENS1_11OptionClassENS0_12OptSpecifierEPKcPKNS0_11OptionGroupEPKS1_", "clang::driver::Option::Option(clang::driver::Option::OptionClass, clang::driver::OptSpecifier, char const*, clang::driver::OptionGroup const*, clang::driver::Option const*)"}, + {"_ZN5clang6driver6OptionD0Ev", "clang::driver::Option::~Option()"}, + {"_ZN5clang6driver6OptionD1Ev", "clang::driver::Option::~Option()"}, + {"_ZN5clang6driver6OptionD2Ev", "clang::driver::Option::~Option()"}, + {"_ZNK5clang6driver6Option4dumpEv", "clang::driver::Option::dump() const"}, + {"_ZNK5clang6driver6Option7matchesENS0_12OptSpecifierE", "clang::driver::Option::matches(clang::driver::OptSpecifier) const"}, + {"_ZN5clang6driver11OptionGroupC1ENS0_12OptSpecifierEPKcPKS1_", "clang::driver::OptionGroup::OptionGroup(clang::driver::OptSpecifier, char const*, clang::driver::OptionGroup const*)"}, + {"_ZN5clang6driver11OptionGroupC2ENS0_12OptSpecifierEPKcPKS1_", "clang::driver::OptionGroup::OptionGroup(clang::driver::OptSpecifier, char const*, clang::driver::OptionGroup const*)"}, + {"_ZNK5clang6driver11OptionGroup6acceptERKNS0_7ArgListERj", "clang::driver::OptionGroup::accept(clang::driver::ArgList const&, unsigned int&) const"}, + {"_ZN5clang6driver11InputOptionC1ENS0_12OptSpecifierE", "clang::driver::InputOption::InputOption(clang::driver::OptSpecifier)"}, + {"_ZN5clang6driver11InputOptionC2ENS0_12OptSpecifierE", "clang::driver::InputOption::InputOption(clang::driver::OptSpecifier)"}, + {"_ZNK5clang6driver11InputOption6acceptERKNS0_7ArgListERj", "clang::driver::InputOption::accept(clang::driver::ArgList const&, unsigned int&) const"}, + {"_ZN5clang6driver13UnknownOptionC1ENS0_12OptSpecifierE", "clang::driver::UnknownOption::UnknownOption(clang::driver::OptSpecifier)"}, + {"_ZN5clang6driver13UnknownOptionC2ENS0_12OptSpecifierE", "clang::driver::UnknownOption::UnknownOption(clang::driver::OptSpecifier)"}, + {"_ZNK5clang6driver13UnknownOption6acceptERKNS0_7ArgListERj", "clang::driver::UnknownOption::accept(clang::driver::ArgList const&, unsigned int&) const"}, + {"_ZN5clang6driver10FlagOptionC1ENS0_12OptSpecifierEPKcPKNS0_11OptionGroupEPKNS0_6OptionE", "clang::driver::FlagOption::FlagOption(clang::driver::OptSpecifier, char const*, clang::driver::OptionGroup const*, clang::driver::Option const*)"}, + {"_ZN5clang6driver10FlagOptionC2ENS0_12OptSpecifierEPKcPKNS0_11OptionGroupEPKNS0_6OptionE", "clang::driver::FlagOption::FlagOption(clang::driver::OptSpecifier, char const*, clang::driver::OptionGroup const*, clang::driver::Option const*)"}, + {"_ZNK5clang6driver10FlagOption6acceptERKNS0_7ArgListERj", "clang::driver::FlagOption::accept(clang::driver::ArgList const&, unsigned int&) const"}, + {"_ZN5clang6driver12JoinedOptionC1ENS0_12OptSpecifierEPKcPKNS0_11OptionGroupEPKNS0_6OptionE", "clang::driver::JoinedOption::JoinedOption(clang::driver::OptSpecifier, char const*, clang::driver::OptionGroup const*, clang::driver::Option const*)"}, + {"_ZN5clang6driver12JoinedOptionC2ENS0_12OptSpecifierEPKcPKNS0_11OptionGroupEPKNS0_6OptionE", "clang::driver::JoinedOption::JoinedOption(clang::driver::OptSpecifier, char const*, clang::driver::OptionGroup const*, clang::driver::Option const*)"}, + {"_ZNK5clang6driver12JoinedOption6acceptERKNS0_7ArgListERj", "clang::driver::JoinedOption::accept(clang::driver::ArgList const&, unsigned int&) const"}, + {"_ZN5clang6driver17CommaJoinedOptionC1ENS0_12OptSpecifierEPKcPKNS0_11OptionGroupEPKNS0_6OptionE", "clang::driver::CommaJoinedOption::CommaJoinedOption(clang::driver::OptSpecifier, char const*, clang::driver::OptionGroup const*, clang::driver::Option const*)"}, + {"_ZN5clang6driver17CommaJoinedOptionC2ENS0_12OptSpecifierEPKcPKNS0_11OptionGroupEPKNS0_6OptionE", "clang::driver::CommaJoinedOption::CommaJoinedOption(clang::driver::OptSpecifier, char const*, clang::driver::OptionGroup const*, clang::driver::Option const*)"}, + {"_ZNK5clang6driver17CommaJoinedOption6acceptERKNS0_7ArgListERj", "clang::driver::CommaJoinedOption::accept(clang::driver::ArgList const&, unsigned int&) const"}, + {"_ZN5clang6driver14SeparateOptionC1ENS0_12OptSpecifierEPKcPKNS0_11OptionGroupEPKNS0_6OptionE", "clang::driver::SeparateOption::SeparateOption(clang::driver::OptSpecifier, char const*, clang::driver::OptionGroup const*, clang::driver::Option const*)"}, + {"_ZN5clang6driver14SeparateOptionC2ENS0_12OptSpecifierEPKcPKNS0_11OptionGroupEPKNS0_6OptionE", "clang::driver::SeparateOption::SeparateOption(clang::driver::OptSpecifier, char const*, clang::driver::OptionGroup const*, clang::driver::Option const*)"}, + {"_ZNK5clang6driver14SeparateOption6acceptERKNS0_7ArgListERj", "clang::driver::SeparateOption::accept(clang::driver::ArgList const&, unsigned int&) const"}, + {"_ZN5clang6driver14MultiArgOptionC1ENS0_12OptSpecifierEPKcPKNS0_11OptionGroupEPKNS0_6OptionEj", "clang::driver::MultiArgOption::MultiArgOption(clang::driver::OptSpecifier, char const*, clang::driver::OptionGroup const*, clang::driver::Option const*, unsigned int)"}, + {"_ZN5clang6driver14MultiArgOptionC2ENS0_12OptSpecifierEPKcPKNS0_11OptionGroupEPKNS0_6OptionEj", "clang::driver::MultiArgOption::MultiArgOption(clang::driver::OptSpecifier, char const*, clang::driver::OptionGroup const*, clang::driver::Option const*, unsigned int)"}, + {"_ZNK5clang6driver14MultiArgOption6acceptERKNS0_7ArgListERj", "clang::driver::MultiArgOption::accept(clang::driver::ArgList const&, unsigned int&) const"}, + {"_ZN5clang6driver22JoinedOrSeparateOptionC1ENS0_12OptSpecifierEPKcPKNS0_11OptionGroupEPKNS0_6OptionE", "clang::driver::JoinedOrSeparateOption::JoinedOrSeparateOption(clang::driver::OptSpecifier, char const*, clang::driver::OptionGroup const*, clang::driver::Option const*)"}, + {"_ZN5clang6driver22JoinedOrSeparateOptionC2ENS0_12OptSpecifierEPKcPKNS0_11OptionGroupEPKNS0_6OptionE", "clang::driver::JoinedOrSeparateOption::JoinedOrSeparateOption(clang::driver::OptSpecifier, char const*, clang::driver::OptionGroup const*, clang::driver::Option const*)"}, + {"_ZNK5clang6driver22JoinedOrSeparateOption6acceptERKNS0_7ArgListERj", "clang::driver::JoinedOrSeparateOption::accept(clang::driver::ArgList const&, unsigned int&) const"}, + {"_ZN5clang6driver23JoinedAndSeparateOptionC1ENS0_12OptSpecifierEPKcPKNS0_11OptionGroupEPKNS0_6OptionE", "clang::driver::JoinedAndSeparateOption::JoinedAndSeparateOption(clang::driver::OptSpecifier, char const*, clang::driver::OptionGroup const*, clang::driver::Option const*)"}, + {"_ZN5clang6driver23JoinedAndSeparateOptionC2ENS0_12OptSpecifierEPKcPKNS0_11OptionGroupEPKNS0_6OptionE", "clang::driver::JoinedAndSeparateOption::JoinedAndSeparateOption(clang::driver::OptSpecifier, char const*, clang::driver::OptionGroup const*, clang::driver::Option const*)"}, + {"_ZNK5clang6driver23JoinedAndSeparateOption6acceptERKNS0_7ArgListERj", "clang::driver::JoinedAndSeparateOption::accept(clang::driver::ArgList const&, unsigned int&) const"}, + {"_ZN5clang6driver11OptionGroupD1Ev", "clang::driver::OptionGroup::~OptionGroup()"}, + {"_ZN5clang6driver11OptionGroupD0Ev", "clang::driver::OptionGroup::~OptionGroup()"}, + {"_ZN5clang6driver11InputOptionD1Ev", "clang::driver::InputOption::~InputOption()"}, + {"_ZN5clang6driver11InputOptionD0Ev", "clang::driver::InputOption::~InputOption()"}, + {"_ZN5clang6driver13UnknownOptionD1Ev", "clang::driver::UnknownOption::~UnknownOption()"}, + {"_ZN5clang6driver13UnknownOptionD0Ev", "clang::driver::UnknownOption::~UnknownOption()"}, + {"_ZN5clang6driver10FlagOptionD1Ev", "clang::driver::FlagOption::~FlagOption()"}, + {"_ZN5clang6driver10FlagOptionD0Ev", "clang::driver::FlagOption::~FlagOption()"}, + {"_ZN5clang6driver12JoinedOptionD1Ev", "clang::driver::JoinedOption::~JoinedOption()"}, + {"_ZN5clang6driver12JoinedOptionD0Ev", "clang::driver::JoinedOption::~JoinedOption()"}, + {"_ZN5clang6driver17CommaJoinedOptionD1Ev", "clang::driver::CommaJoinedOption::~CommaJoinedOption()"}, + {"_ZN5clang6driver17CommaJoinedOptionD0Ev", "clang::driver::CommaJoinedOption::~CommaJoinedOption()"}, + {"_ZN5clang6driver14SeparateOptionD1Ev", "clang::driver::SeparateOption::~SeparateOption()"}, + {"_ZN5clang6driver14SeparateOptionD0Ev", "clang::driver::SeparateOption::~SeparateOption()"}, + {"_ZN5clang6driver14MultiArgOptionD1Ev", "clang::driver::MultiArgOption::~MultiArgOption()"}, + {"_ZN5clang6driver14MultiArgOptionD0Ev", "clang::driver::MultiArgOption::~MultiArgOption()"}, + {"_ZN5clang6driver22JoinedOrSeparateOptionD1Ev", "clang::driver::JoinedOrSeparateOption::~JoinedOrSeparateOption()"}, + {"_ZN5clang6driver22JoinedOrSeparateOptionD0Ev", "clang::driver::JoinedOrSeparateOption::~JoinedOrSeparateOption()"}, + {"_ZN5clang6driver23JoinedAndSeparateOptionD1Ev", "clang::driver::JoinedAndSeparateOption::~JoinedAndSeparateOption()"}, + {"_ZN5clang6driver23JoinedAndSeparateOptionD0Ev", "clang::driver::JoinedAndSeparateOption::~JoinedAndSeparateOption()"}, + {"_ZN5clang6driver6phases12getPhaseNameENS1_2IDE", "clang::driver::phases::getPhaseName(clang::driver::phases::ID)"}, + {"_ZN5clang6driver4ToolC1EPKcS3_RKNS0_9ToolChainE", "clang::driver::Tool::Tool(char const*, char const*, clang::driver::ToolChain const&)"}, + {"_ZN5clang6driver4ToolC2EPKcS3_RKNS0_9ToolChainE", "clang::driver::Tool::Tool(char const*, char const*, clang::driver::ToolChain const&)"}, + {"_ZN5clang6driver4ToolD0Ev", "clang::driver::Tool::~Tool()"}, + {"_ZN5clang6driver4ToolD1Ev", "clang::driver::Tool::~Tool()"}, + {"_ZN5clang6driver4ToolD2Ev", "clang::driver::Tool::~Tool()"}, + {"_ZN5clang6driver9ToolChainC1ERKNS0_8HostInfoERKN4llvm6TripleE", "clang::driver::ToolChain::ToolChain(clang::driver::HostInfo const&, llvm::Triple const&)"}, + {"_ZN5clang6driver9ToolChainC2ERKNS0_8HostInfoERKN4llvm6TripleE", "clang::driver::ToolChain::ToolChain(clang::driver::HostInfo const&, llvm::Triple const&)"}, + {"_ZN5clang6driver9ToolChainD0Ev", "clang::driver::ToolChain::~ToolChain()"}, + {"_ZN5clang6driver9ToolChainD1Ev", "clang::driver::ToolChain::~ToolChain()"}, + {"_ZN5clang6driver9ToolChainD2Ev", "clang::driver::ToolChain::~ToolChain()"}, + {"_ZNK5clang6driver9ToolChain9getDriverEv", "clang::driver::ToolChain::getDriver() const"}, + {"_ZNK5clang6driver9ToolChain11GetFilePathEPKc", "clang::driver::ToolChain::GetFilePath(char const*) const"}, + {"_ZNK5clang6driver9ToolChain14GetProgramPathEPKcb", "clang::driver::ToolChain::GetProgramPath(char const*, bool) const"}, + {"_ZNK5clang6driver9ToolChain22LookupTypeForExtensionEPKc", "clang::driver::ToolChain::LookupTypeForExtension(char const*) const"}, + {"_ZNK5clang6driver9ToolChain20HasNativeLLVMSupportEv", "clang::driver::ToolChain::HasNativeLLVMSupport() const"}, + {"_ZNK5clang6driver9ToolChain17ComputeLLVMTripleERKNS0_7ArgListE", "clang::driver::ToolChain::ComputeLLVMTriple(clang::driver::ArgList const&) const"}, + {"_ZNK5clang6driver9ToolChain27ComputeEffectiveClangTripleERKNS0_7ArgListE", "clang::driver::ToolChain::ComputeEffectiveClangTriple(clang::driver::ArgList const&) const"}, + {"_ZNK5clang6driver9ToolChain16GetCXXStdlibTypeERKNS0_7ArgListE", "clang::driver::ToolChain::GetCXXStdlibType(clang::driver::ArgList const&) const"}, + + // {"_ZNK5clang6driver9ToolChain28AddClangCXXStdlibIncludeArgsERKNS0_7ArgListERN4llvm11SmallVectorIPKcLj16EEE", + // "clang::driver::ToolChain::AddClangCXXStdlibIncludeArgs(clang::driver::ArgList const&, llvm::SmallVector&) const"}, + // "clang::driver::ToolChain::AddClangCXXStdlibIncludeArgs(clang::driver::ArgList const&, llvm::SmallVector&) const" was returned + + + // {"_ZNK5clang6driver9ToolChain19AddCXXStdlibLibArgsERKNS0_7ArgListERN4llvm11SmallVectorIPKcLj16EEE", + // "clang::driver::ToolChain::AddCXXStdlibLibArgs(clang::driver::ArgList const&, llvm::SmallVector&) const"}, + // "clang::driver::ToolChain::AddCXXStdlibLibArgs(clang::driver::ArgList const&, llvm::SmallVector&) const" was returned + + + // {"_ZNK5clang6driver9ToolChain16AddCCKextLibArgsERKNS0_7ArgListERN4llvm11SmallVectorIPKcLj16EEE", + // "clang::driver::ToolChain::AddCCKextLibArgs(clang::driver::ArgList const&, llvm::SmallVector&) const"}, + // "clang::driver::ToolChain::AddCCKextLibArgs(clang::driver::ArgList const&, llvm::SmallVector&) const" was returned + + {"_ZN5clang6driver10toolchains6DarwinC1ERKNS0_8HostInfoERKN4llvm6TripleE", "clang::driver::toolchains::Darwin::Darwin(clang::driver::HostInfo const&, llvm::Triple const&)"}, + {"_ZN5clang6driver10toolchains6DarwinC2ERKNS0_8HostInfoERKN4llvm6TripleE", "clang::driver::toolchains::Darwin::Darwin(clang::driver::HostInfo const&, llvm::Triple const&)"}, + {"_ZNK5clang6driver10toolchains6Darwin22LookupTypeForExtensionEPKc", "clang::driver::toolchains::Darwin::LookupTypeForExtension(char const*) const"}, + {"_ZNK5clang6driver10toolchains6Darwin20HasNativeLLVMSupportEv", "clang::driver::toolchains::Darwin::HasNativeLLVMSupport() const"}, + {"_ZNK5clang6driver10toolchains6Darwin17getDarwinArchNameERKNS0_7ArgListE", "clang::driver::toolchains::Darwin::getDarwinArchName(clang::driver::ArgList const&) const"}, + {"_ZN5clang6driver10toolchains9DarwinGCCC1ERKNS0_8HostInfoERKN4llvm6TripleE", "clang::driver::toolchains::DarwinGCC::DarwinGCC(clang::driver::HostInfo const&, llvm::Triple const&)"}, + {"_ZN5clang6driver10toolchains9DarwinGCCC2ERKNS0_8HostInfoERKN4llvm6TripleE", "clang::driver::toolchains::DarwinGCC::DarwinGCC(clang::driver::HostInfo const&, llvm::Triple const&)"}, + {"_ZN5clang6driver10toolchains6DarwinD0Ev", "clang::driver::toolchains::Darwin::~Darwin()"}, + {"_ZN5clang6driver10toolchains6DarwinD1Ev", "clang::driver::toolchains::Darwin::~Darwin()"}, + {"_ZN5clang6driver10toolchains6DarwinD2Ev", "clang::driver::toolchains::Darwin::~Darwin()"}, + {"_ZNK5clang6driver10toolchains6Darwin27ComputeEffectiveClangTripleERKNS0_7ArgListE", "clang::driver::toolchains::Darwin::ComputeEffectiveClangTriple(clang::driver::ArgList const&) const"}, + {"_ZNK5clang6driver10toolchains6Darwin10SelectToolERKNS0_11CompilationERKNS0_9JobActionE", "clang::driver::toolchains::Darwin::SelectTool(clang::driver::Compilation const&, clang::driver::JobAction const&) const"}, + + // {"_ZNK5clang6driver10toolchains9DarwinGCC21AddLinkSearchPathArgsERKNS0_7ArgListERN4llvm11SmallVectorIPKcLj16EEE", + // "clang::driver::toolchains::DarwinGCC::AddLinkSearchPathArgs(clang::driver::ArgList const&, llvm::SmallVector&) const"}, + // "clang::driver::toolchains::DarwinGCC::AddLinkSearchPathArgs(clang::driver::ArgList const&, llvm::SmallVector&) const" was returned + + + // {"_ZNK5clang6driver10toolchains9DarwinGCC21AddLinkRuntimeLibArgsERKNS0_7ArgListERN4llvm11SmallVectorIPKcLj16EEE", + // "clang::driver::toolchains::DarwinGCC::AddLinkRuntimeLibArgs(clang::driver::ArgList const&, llvm::SmallVector&) const"}, + // "clang::driver::toolchains::DarwinGCC::AddLinkRuntimeLibArgs(clang::driver::ArgList const&, llvm::SmallVector&) const" was returned + + {"_ZN5clang6driver10toolchains11DarwinClangC1ERKNS0_8HostInfoERKN4llvm6TripleE", "clang::driver::toolchains::DarwinClang::DarwinClang(clang::driver::HostInfo const&, llvm::Triple const&)"}, + {"_ZN5clang6driver10toolchains11DarwinClangC2ERKNS0_8HostInfoERKN4llvm6TripleE", "clang::driver::toolchains::DarwinClang::DarwinClang(clang::driver::HostInfo const&, llvm::Triple const&)"}, + + // {"_ZNK5clang6driver10toolchains11DarwinClang21AddLinkSearchPathArgsERKNS0_7ArgListERN4llvm11SmallVectorIPKcLj16EEE", + // "clang::driver::toolchains::DarwinClang::AddLinkSearchPathArgs(clang::driver::ArgList const&, llvm::SmallVector&) const"}, + // "clang::driver::toolchains::DarwinClang::AddLinkSearchPathArgs(clang::driver::ArgList const&, llvm::SmallVector&) const" was returned + + + // {"_ZNK5clang6driver10toolchains11DarwinClang21AddLinkRuntimeLibArgsERKNS0_7ArgListERN4llvm11SmallVectorIPKcLj16EEE", + // "clang::driver::toolchains::DarwinClang::AddLinkRuntimeLibArgs(clang::driver::ArgList const&, llvm::SmallVector&) const"}, + // "clang::driver::toolchains::DarwinClang::AddLinkRuntimeLibArgs(clang::driver::ArgList const&, llvm::SmallVector&) const" was returned + + {"_ZNK5clang6driver10toolchains6Darwin19AddDeploymentTargetERNS0_14DerivedArgListE", "clang::driver::toolchains::Darwin::AddDeploymentTarget(clang::driver::DerivedArgList&) const"}, + + // {"_ZNK5clang6driver10toolchains11DarwinClang19AddCXXStdlibLibArgsERKNS0_7ArgListERN4llvm11SmallVectorIPKcLj16EEE", + // "clang::driver::toolchains::DarwinClang::AddCXXStdlibLibArgs(clang::driver::ArgList const&, llvm::SmallVector&) const"}, + // "clang::driver::toolchains::DarwinClang::AddCXXStdlibLibArgs(clang::driver::ArgList const&, llvm::SmallVector&) const" was returned + + + // {"_ZNK5clang6driver10toolchains11DarwinClang16AddCCKextLibArgsERKNS0_7ArgListERN4llvm11SmallVectorIPKcLj16EEE", + // "clang::driver::toolchains::DarwinClang::AddCCKextLibArgs(clang::driver::ArgList const&, llvm::SmallVector&) const"}, + // "clang::driver::toolchains::DarwinClang::AddCCKextLibArgs(clang::driver::ArgList const&, llvm::SmallVector&) const" was returned + + {"_ZNK5clang6driver10toolchains6Darwin13TranslateArgsERKNS0_14DerivedArgListEPKc", "clang::driver::toolchains::Darwin::TranslateArgs(clang::driver::DerivedArgList const&, char const*) const"}, + {"_ZNK5clang6driver10toolchains6Darwin21IsUnwindTablesDefaultEv", "clang::driver::toolchains::Darwin::IsUnwindTablesDefault() const"}, + {"_ZNK5clang6driver10toolchains6Darwin18UseDwarfDebugFlagsEv", "clang::driver::toolchains::Darwin::UseDwarfDebugFlags() const"}, + {"_ZNK5clang6driver10toolchains6Darwin17UseSjLjExceptionsEv", "clang::driver::toolchains::Darwin::UseSjLjExceptions() const"}, + {"_ZNK5clang6driver10toolchains6Darwin25GetDefaultRelocationModelEv", "clang::driver::toolchains::Darwin::GetDefaultRelocationModel() const"}, + {"_ZNK5clang6driver10toolchains6Darwin17GetForcedPicModelEv", "clang::driver::toolchains::Darwin::GetForcedPicModel() const"}, + {"_ZNK5clang6driver10toolchains6Darwin14SupportsObjCGCEv", "clang::driver::toolchains::Darwin::SupportsObjCGC() const"}, + {"_ZNK5clang6driver10toolchains18Darwin_Generic_GCC27ComputeEffectiveClangTripleERKNS0_7ArgListE", "clang::driver::toolchains::Darwin_Generic_GCC::ComputeEffectiveClangTriple(clang::driver::ArgList const&) const"}, + {"_ZN5clang6driver10toolchains11Generic_GCCC1ERKNS0_8HostInfoERKN4llvm6TripleE", "clang::driver::toolchains::Generic_GCC::Generic_GCC(clang::driver::HostInfo const&, llvm::Triple const&)"}, + {"_ZN5clang6driver10toolchains11Generic_GCCC2ERKNS0_8HostInfoERKN4llvm6TripleE", "clang::driver::toolchains::Generic_GCC::Generic_GCC(clang::driver::HostInfo const&, llvm::Triple const&)"}, + {"_ZN5clang6driver10toolchains11Generic_GCCD0Ev", "clang::driver::toolchains::Generic_GCC::~Generic_GCC()"}, + {"_ZN5clang6driver10toolchains11Generic_GCCD1Ev", "clang::driver::toolchains::Generic_GCC::~Generic_GCC()"}, + {"_ZN5clang6driver10toolchains11Generic_GCCD2Ev", "clang::driver::toolchains::Generic_GCC::~Generic_GCC()"}, + {"_ZNK5clang6driver10toolchains11Generic_GCC10SelectToolERKNS0_11CompilationERKNS0_9JobActionE", "clang::driver::toolchains::Generic_GCC::SelectTool(clang::driver::Compilation const&, clang::driver::JobAction const&) const"}, + {"_ZNK5clang6driver10toolchains11Generic_GCC21IsUnwindTablesDefaultEv", "clang::driver::toolchains::Generic_GCC::IsUnwindTablesDefault() const"}, + {"_ZNK5clang6driver10toolchains11Generic_GCC25GetDefaultRelocationModelEv", "clang::driver::toolchains::Generic_GCC::GetDefaultRelocationModel() const"}, + {"_ZNK5clang6driver10toolchains11Generic_GCC17GetForcedPicModelEv", "clang::driver::toolchains::Generic_GCC::GetForcedPicModel() const"}, + {"_ZN5clang6driver10toolchains12TCEToolChainC1ERKNS0_8HostInfoERKN4llvm6TripleE", "clang::driver::toolchains::TCEToolChain::TCEToolChain(clang::driver::HostInfo const&, llvm::Triple const&)"}, + {"_ZN5clang6driver10toolchains12TCEToolChainC2ERKNS0_8HostInfoERKN4llvm6TripleE", "clang::driver::toolchains::TCEToolChain::TCEToolChain(clang::driver::HostInfo const&, llvm::Triple const&)"}, + {"_ZN5clang6driver10toolchains12TCEToolChainD0Ev", "clang::driver::toolchains::TCEToolChain::~TCEToolChain()"}, + {"_ZN5clang6driver10toolchains12TCEToolChainD1Ev", "clang::driver::toolchains::TCEToolChain::~TCEToolChain()"}, + {"_ZN5clang6driver10toolchains12TCEToolChainD2Ev", "clang::driver::toolchains::TCEToolChain::~TCEToolChain()"}, + {"_ZNK5clang6driver10toolchains12TCEToolChain18IsMathErrnoDefaultEv", "clang::driver::toolchains::TCEToolChain::IsMathErrnoDefault() const"}, + {"_ZNK5clang6driver10toolchains12TCEToolChain21IsUnwindTablesDefaultEv", "clang::driver::toolchains::TCEToolChain::IsUnwindTablesDefault() const"}, + {"_ZNK5clang6driver10toolchains12TCEToolChain25GetDefaultRelocationModelEv", "clang::driver::toolchains::TCEToolChain::GetDefaultRelocationModel() const"}, + {"_ZNK5clang6driver10toolchains12TCEToolChain17GetForcedPicModelEv", "clang::driver::toolchains::TCEToolChain::GetForcedPicModel() const"}, + {"_ZNK5clang6driver10toolchains12TCEToolChain10SelectToolERKNS0_11CompilationERKNS0_9JobActionE", "clang::driver::toolchains::TCEToolChain::SelectTool(clang::driver::Compilation const&, clang::driver::JobAction const&) const"}, + {"_ZN5clang6driver10toolchains7OpenBSDC1ERKNS0_8HostInfoERKN4llvm6TripleE", "clang::driver::toolchains::OpenBSD::OpenBSD(clang::driver::HostInfo const&, llvm::Triple const&)"}, + {"_ZN5clang6driver10toolchains7OpenBSDC2ERKNS0_8HostInfoERKN4llvm6TripleE", "clang::driver::toolchains::OpenBSD::OpenBSD(clang::driver::HostInfo const&, llvm::Triple const&)"}, + {"_ZNK5clang6driver10toolchains7OpenBSD10SelectToolERKNS0_11CompilationERKNS0_9JobActionE", "clang::driver::toolchains::OpenBSD::SelectTool(clang::driver::Compilation const&, clang::driver::JobAction const&) const"}, + {"_ZN5clang6driver10toolchains7FreeBSDC1ERKNS0_8HostInfoERKN4llvm6TripleE", "clang::driver::toolchains::FreeBSD::FreeBSD(clang::driver::HostInfo const&, llvm::Triple const&)"}, + {"_ZN5clang6driver10toolchains7FreeBSDC2ERKNS0_8HostInfoERKN4llvm6TripleE", "clang::driver::toolchains::FreeBSD::FreeBSD(clang::driver::HostInfo const&, llvm::Triple const&)"}, + {"_ZNK5clang6driver10toolchains7FreeBSD10SelectToolERKNS0_11CompilationERKNS0_9JobActionE", "clang::driver::toolchains::FreeBSD::SelectTool(clang::driver::Compilation const&, clang::driver::JobAction const&) const"}, + {"_ZN5clang6driver10toolchains6NetBSDC1ERKNS0_8HostInfoERKN4llvm6TripleE", "clang::driver::toolchains::NetBSD::NetBSD(clang::driver::HostInfo const&, llvm::Triple const&)"}, + {"_ZN5clang6driver10toolchains6NetBSDC2ERKNS0_8HostInfoERKN4llvm6TripleE", "clang::driver::toolchains::NetBSD::NetBSD(clang::driver::HostInfo const&, llvm::Triple const&)"}, + {"_ZNK5clang6driver10toolchains6NetBSD10SelectToolERKNS0_11CompilationERKNS0_9JobActionE", "clang::driver::toolchains::NetBSD::SelectTool(clang::driver::Compilation const&, clang::driver::JobAction const&) const"}, + {"_ZN5clang6driver10toolchains5MinixC1ERKNS0_8HostInfoERKN4llvm6TripleE", "clang::driver::toolchains::Minix::Minix(clang::driver::HostInfo const&, llvm::Triple const&)"}, + {"_ZN5clang6driver10toolchains5MinixC2ERKNS0_8HostInfoERKN4llvm6TripleE", "clang::driver::toolchains::Minix::Minix(clang::driver::HostInfo const&, llvm::Triple const&)"}, + {"_ZNK5clang6driver10toolchains5Minix10SelectToolERKNS0_11CompilationERKNS0_9JobActionE", "clang::driver::toolchains::Minix::SelectTool(clang::driver::Compilation const&, clang::driver::JobAction const&) const"}, + {"_ZN5clang6driver10toolchains8AuroraUXC1ERKNS0_8HostInfoERKN4llvm6TripleE", "clang::driver::toolchains::AuroraUX::AuroraUX(clang::driver::HostInfo const&, llvm::Triple const&)"}, + {"_ZN5clang6driver10toolchains8AuroraUXC2ERKNS0_8HostInfoERKN4llvm6TripleE", "clang::driver::toolchains::AuroraUX::AuroraUX(clang::driver::HostInfo const&, llvm::Triple const&)"}, + {"_ZNK5clang6driver10toolchains8AuroraUX10SelectToolERKNS0_11CompilationERKNS0_9JobActionE", "clang::driver::toolchains::AuroraUX::SelectTool(clang::driver::Compilation const&, clang::driver::JobAction const&) const"}, + {"_ZN5clang6driver10toolchains5LinuxC1ERKNS0_8HostInfoERKN4llvm6TripleE", "clang::driver::toolchains::Linux::Linux(clang::driver::HostInfo const&, llvm::Triple const&)"}, + {"_ZN5clang6driver10toolchains5LinuxC2ERKNS0_8HostInfoERKN4llvm6TripleE", "clang::driver::toolchains::Linux::Linux(clang::driver::HostInfo const&, llvm::Triple const&)"}, + {"_ZNK5clang6driver10toolchains5Linux20HasNativeLLVMSupportEv", "clang::driver::toolchains::Linux::HasNativeLLVMSupport() const"}, + {"_ZNK5clang6driver10toolchains5Linux10SelectToolERKNS0_11CompilationERKNS0_9JobActionE", "clang::driver::toolchains::Linux::SelectTool(clang::driver::Compilation const&, clang::driver::JobAction const&) const"}, + {"_ZN5clang6driver10toolchains9DragonFlyC1ERKNS0_8HostInfoERKN4llvm6TripleE", "clang::driver::toolchains::DragonFly::DragonFly(clang::driver::HostInfo const&, llvm::Triple const&)"}, + {"_ZN5clang6driver10toolchains9DragonFlyC2ERKNS0_8HostInfoERKN4llvm6TripleE", "clang::driver::toolchains::DragonFly::DragonFly(clang::driver::HostInfo const&, llvm::Triple const&)"}, + {"_ZNK5clang6driver10toolchains9DragonFly10SelectToolERKNS0_11CompilationERKNS0_9JobActionE", "clang::driver::toolchains::DragonFly::SelectTool(clang::driver::Compilation const&, clang::driver::JobAction const&) const"}, + {"_ZN5clang6driver10toolchains7WindowsC1ERKNS0_8HostInfoERKN4llvm6TripleE", "clang::driver::toolchains::Windows::Windows(clang::driver::HostInfo const&, llvm::Triple const&)"}, + {"_ZN5clang6driver10toolchains7WindowsC2ERKNS0_8HostInfoERKN4llvm6TripleE", "clang::driver::toolchains::Windows::Windows(clang::driver::HostInfo const&, llvm::Triple const&)"}, + {"_ZNK5clang6driver10toolchains7Windows10SelectToolERKNS0_11CompilationERKNS0_9JobActionE", "clang::driver::toolchains::Windows::SelectTool(clang::driver::Compilation const&, clang::driver::JobAction const&) const"}, + {"_ZNK5clang6driver10toolchains7Windows28IsIntegratedAssemblerDefaultEv", "clang::driver::toolchains::Windows::IsIntegratedAssemblerDefault() const"}, + {"_ZNK5clang6driver10toolchains7Windows21IsUnwindTablesDefaultEv", "clang::driver::toolchains::Windows::IsUnwindTablesDefault() const"}, + {"_ZNK5clang6driver10toolchains7Windows25GetDefaultRelocationModelEv", "clang::driver::toolchains::Windows::GetDefaultRelocationModel() const"}, + {"_ZNK5clang6driver10toolchains7Windows17GetForcedPicModelEv", "clang::driver::toolchains::Windows::GetForcedPicModel() const"}, + {"_ZN5clang6driver10toolchains18Darwin_Generic_GCCD1Ev", "clang::driver::toolchains::Darwin_Generic_GCC::~Darwin_Generic_GCC()"}, + {"_ZN5clang6driver10toolchains18Darwin_Generic_GCCD0Ev", "clang::driver::toolchains::Darwin_Generic_GCC::~Darwin_Generic_GCC()"}, + {"_ZNK5clang6driver10toolchains6Darwin15IsBlocksDefaultEv", "clang::driver::toolchains::Darwin::IsBlocksDefault() const"}, + {"_ZNK5clang6driver10toolchains6Darwin28IsIntegratedAssemblerDefaultEv", "clang::driver::toolchains::Darwin::IsIntegratedAssemblerDefault() const"}, + {"_ZNK5clang6driver10toolchains6Darwin23IsStrictAliasingDefaultEv", "clang::driver::toolchains::Darwin::IsStrictAliasingDefault() const"}, + {"_ZNK5clang6driver10toolchains6Darwin35IsObjCDefaultSynthPropertiesDefaultEv", "clang::driver::toolchains::Darwin::IsObjCDefaultSynthPropertiesDefault() const"}, + {"_ZNK5clang6driver10toolchains6Darwin26IsObjCNonFragileABIDefaultEv", "clang::driver::toolchains::Darwin::IsObjCNonFragileABIDefault() const"}, + {"_ZNK5clang6driver10toolchains6Darwin27IsObjCLegacyDispatchDefaultEv", "clang::driver::toolchains::Darwin::IsObjCLegacyDispatchDefault() const"}, + {"_ZNK5clang6driver10toolchains6Darwin20UseObjCMixedDispatchEv", "clang::driver::toolchains::Darwin::UseObjCMixedDispatch() const"}, + {"_ZNK5clang6driver10toolchains6Darwin29GetDefaultStackProtectorLevelEv", "clang::driver::toolchains::Darwin::GetDefaultStackProtectorLevel() const"}, + {"_ZN5clang6driver10toolchains9DarwinGCCD1Ev", "clang::driver::toolchains::DarwinGCC::~DarwinGCC()"}, + {"_ZN5clang6driver10toolchains9DarwinGCCD0Ev", "clang::driver::toolchains::DarwinGCC::~DarwinGCC()"}, + {"_ZN5clang6driver10toolchains11DarwinClangD1Ev", "clang::driver::toolchains::DarwinClang::~DarwinClang()"}, + {"_ZN5clang6driver10toolchains11DarwinClangD0Ev", "clang::driver::toolchains::DarwinClang::~DarwinClang()"}, + {"_ZN5clang6driver10toolchains7OpenBSDD1Ev", "clang::driver::toolchains::OpenBSD::~OpenBSD()"}, + {"_ZN5clang6driver10toolchains7OpenBSDD0Ev", "clang::driver::toolchains::OpenBSD::~OpenBSD()"}, + {"_ZNK5clang6driver10toolchains11Generic_ELF28IsIntegratedAssemblerDefaultEv", "clang::driver::toolchains::Generic_ELF::IsIntegratedAssemblerDefault() const"}, + {"_ZN5clang6driver10toolchains7FreeBSDD1Ev", "clang::driver::toolchains::FreeBSD::~FreeBSD()"}, + {"_ZN5clang6driver10toolchains7FreeBSDD0Ev", "clang::driver::toolchains::FreeBSD::~FreeBSD()"}, + {"_ZN5clang6driver10toolchains6NetBSDD1Ev", "clang::driver::toolchains::NetBSD::~NetBSD()"}, + {"_ZN5clang6driver10toolchains6NetBSDD0Ev", "clang::driver::toolchains::NetBSD::~NetBSD()"}, + {"_ZN5clang6driver10toolchains5MinixD1Ev", "clang::driver::toolchains::Minix::~Minix()"}, + {"_ZN5clang6driver10toolchains5MinixD0Ev", "clang::driver::toolchains::Minix::~Minix()"}, + {"_ZN5clang6driver10toolchains8AuroraUXD1Ev", "clang::driver::toolchains::AuroraUX::~AuroraUX()"}, + {"_ZN5clang6driver10toolchains8AuroraUXD0Ev", "clang::driver::toolchains::AuroraUX::~AuroraUX()"}, + {"_ZN5clang6driver10toolchains5LinuxD1Ev", "clang::driver::toolchains::Linux::~Linux()"}, + {"_ZN5clang6driver10toolchains5LinuxD0Ev", "clang::driver::toolchains::Linux::~Linux()"}, + {"_ZN5clang6driver10toolchains9DragonFlyD1Ev", "clang::driver::toolchains::DragonFly::~DragonFly()"}, + {"_ZN5clang6driver10toolchains9DragonFlyD0Ev", "clang::driver::toolchains::DragonFly::~DragonFly()"}, + {"_ZN5clang6driver10toolchains7WindowsD1Ev", "clang::driver::toolchains::Windows::~Windows()"}, + {"_ZN5clang6driver10toolchains7WindowsD0Ev", "clang::driver::toolchains::Windows::~Windows()"}, + {"_ZN4llvm8DenseMapIjPN5clang6driver4ToolENS_12DenseMapInfoIjEENS5_IS4_EEE16InsertIntoBucketERKjRKS4_PSt4pairIjS4_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(unsigned int const&, clang::driver::Tool* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIjPN5clang6driver4ToolENS_12DenseMapInfoIjEENS5_IS4_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang6driver10toolchains11Generic_ELFD1Ev", "clang::driver::toolchains::Generic_ELF::~Generic_ELF()"}, + {"_ZN5clang6driver10toolchains11Generic_ELFD0Ev", "clang::driver::toolchains::Generic_ELF::~Generic_ELF()"}, + {"_ZN5clang6driver10toolchains5LinuxD2Ev", "clang::driver::toolchains::Linux::~Linux()"}, + {"_ZNK5clang6driver4Tool22hasIntegratedAssemblerEv", "clang::driver::Tool::hasIntegratedAssembler() const"}, + {"_ZNK5clang6driver5tools12visualstudio4Link16hasIntegratedCPPEv", "clang::driver::tools::visualstudio::Link::hasIntegratedCPP() const"}, + {"_ZNK5clang6driver4Tool18hasGoodDiagnosticsEv", "clang::driver::Tool::hasGoodDiagnostics() const"}, + {"_ZNK5clang6driver5tools9dragonfly4Link16hasIntegratedCPPEv", "clang::driver::tools::dragonfly::Link::hasIntegratedCPP() const"}, + {"_ZNK5clang6driver5tools9dragonfly8Assemble16hasIntegratedCPPEv", "clang::driver::tools::dragonfly::Assemble::hasIntegratedCPP() const"}, + {"_ZNK5clang6driver5tools10linuxtools4Link16hasIntegratedCPPEv", "clang::driver::tools::linuxtools::Link::hasIntegratedCPP() const"}, + {"_ZNK5clang6driver5tools10linuxtools8Assemble16hasIntegratedCPPEv", "clang::driver::tools::linuxtools::Assemble::hasIntegratedCPP() const"}, + {"_ZNK5clang6driver5tools8auroraux4Link16hasIntegratedCPPEv", "clang::driver::tools::auroraux::Link::hasIntegratedCPP() const"}, + {"_ZNK5clang6driver5tools8auroraux8Assemble16hasIntegratedCPPEv", "clang::driver::tools::auroraux::Assemble::hasIntegratedCPP() const"}, + {"_ZNK5clang6driver5tools5minix4Link16hasIntegratedCPPEv", "clang::driver::tools::minix::Link::hasIntegratedCPP() const"}, + {"_ZNK5clang6driver5tools5minix8Assemble16hasIntegratedCPPEv", "clang::driver::tools::minix::Assemble::hasIntegratedCPP() const"}, + {"_ZNK5clang6driver5tools6netbsd4Link16hasIntegratedCPPEv", "clang::driver::tools::netbsd::Link::hasIntegratedCPP() const"}, + {"_ZNK5clang6driver5tools6netbsd8Assemble16hasIntegratedCPPEv", "clang::driver::tools::netbsd::Assemble::hasIntegratedCPP() const"}, + {"_ZNK5clang6driver5tools7freebsd4Link16hasIntegratedCPPEv", "clang::driver::tools::freebsd::Link::hasIntegratedCPP() const"}, + {"_ZNK5clang6driver5tools7freebsd8Assemble16hasIntegratedCPPEv", "clang::driver::tools::freebsd::Assemble::hasIntegratedCPP() const"}, + {"_ZNK5clang6driver5tools7openbsd4Link16hasIntegratedCPPEv", "clang::driver::tools::openbsd::Link::hasIntegratedCPP() const"}, + {"_ZNK5clang6driver5tools7openbsd8Assemble16hasIntegratedCPPEv", "clang::driver::tools::openbsd::Assemble::hasIntegratedCPP() const"}, + {"_ZNK5clang6driver5tools3gcc4Link16hasIntegratedCPPEv", "clang::driver::tools::gcc::Link::hasIntegratedCPP() const"}, + {"_ZN5clang6driver5tools3gcc6CommonD1Ev", "clang::driver::tools::gcc::Common::~Common()"}, + {"_ZN5clang6driver5tools3gcc6CommonD0Ev", "clang::driver::tools::gcc::Common::~Common()"}, + {"_ZNK5clang6driver5tools3gcc8Assemble16hasIntegratedCPPEv", "clang::driver::tools::gcc::Assemble::hasIntegratedCPP() const"}, + {"_ZNK5clang6driver5tools3gcc7Compile16hasIntegratedCPPEv", "clang::driver::tools::gcc::Compile::hasIntegratedCPP() const"}, + {"_ZNK5clang6driver5tools3gcc7Compile18hasGoodDiagnosticsEv", "clang::driver::tools::gcc::Compile::hasGoodDiagnostics() const"}, + {"_ZNK5clang6driver5tools3gcc10Precompile16hasIntegratedCPPEv", "clang::driver::tools::gcc::Precompile::hasIntegratedCPP() const"}, + {"_ZNK5clang6driver5tools3gcc10Precompile18hasGoodDiagnosticsEv", "clang::driver::tools::gcc::Precompile::hasGoodDiagnostics() const"}, + {"_ZNK5clang6driver5tools3gcc10Preprocess16hasIntegratedCPPEv", "clang::driver::tools::gcc::Preprocess::hasIntegratedCPP() const"}, + {"_ZNK5clang6driver5tools3gcc10Preprocess18hasGoodDiagnosticsEv", "clang::driver::tools::gcc::Preprocess::hasGoodDiagnostics() const"}, + {"_ZNK5clang6driver5tools6darwin8Dsymutil16hasIntegratedCPPEv", "clang::driver::tools::darwin::Dsymutil::hasIntegratedCPP() const"}, + {"_ZN5clang6driver5tools6darwin10DarwinToolD1Ev", "clang::driver::tools::darwin::DarwinTool::~DarwinTool()"}, + {"_ZN5clang6driver5tools6darwin10DarwinToolD0Ev", "clang::driver::tools::darwin::DarwinTool::~DarwinTool()"}, + {"_ZNK5clang6driver5tools6darwin4Lipo16hasIntegratedCPPEv", "clang::driver::tools::darwin::Lipo::hasIntegratedCPP() const"}, + {"_ZNK5clang6driver5tools6darwin4Link16hasIntegratedCPPEv", "clang::driver::tools::darwin::Link::hasIntegratedCPP() const"}, + {"_ZNK5clang6driver5tools6darwin8Assemble16hasIntegratedCPPEv", "clang::driver::tools::darwin::Assemble::hasIntegratedCPP() const"}, + {"_ZNK5clang6driver5tools7ClangAs22hasIntegratedAssemblerEv", "clang::driver::tools::ClangAs::hasIntegratedAssembler() const"}, + {"_ZNK5clang6driver5tools7ClangAs16hasIntegratedCPPEv", "clang::driver::tools::ClangAs::hasIntegratedCPP() const"}, + {"_ZNK5clang6driver5tools7ClangAs18hasGoodDiagnosticsEv", "clang::driver::tools::ClangAs::hasGoodDiagnostics() const"}, + {"_ZNK5clang6driver5tools6darwin3CC116hasIntegratedCPPEv", "clang::driver::tools::darwin::CC1::hasIntegratedCPP() const"}, + {"_ZNK5clang6driver5tools6darwin3CC118hasGoodDiagnosticsEv", "clang::driver::tools::darwin::CC1::hasGoodDiagnostics() const"}, + {"_ZN5clang6driver5tools6darwin3CC1D1Ev", "clang::driver::tools::darwin::CC1::~CC1()"}, + {"_ZN5clang6driver5tools6darwin3CC1D0Ev", "clang::driver::tools::darwin::CC1::~CC1()"}, + {"_ZNK5clang6driver5tools5Clang22hasIntegratedAssemblerEv", "clang::driver::tools::Clang::hasIntegratedAssembler() const"}, + {"_ZNK5clang6driver5tools5Clang16hasIntegratedCPPEv", "clang::driver::tools::Clang::hasIntegratedCPP() const"}, + {"_ZNK5clang6driver5tools5Clang18hasGoodDiagnosticsEv", "clang::driver::tools::Clang::hasGoodDiagnostics() const"}, + + // {"_ZNK5clang6driver5tools5Clang23AddPreprocessingOptionsERKNS0_6DriverERKNS0_7ArgListERN4llvm11SmallVectorIPKcLj16EEERKNS0_9InputInfoERKNSA_ISF_Lj4EEE", + // "clang::driver::tools::Clang::AddPreprocessingOptions(clang::driver::Driver const&, clang::driver::ArgList const&, llvm::SmallVector&, clang::driver::InputInfo const&, llvm::SmallVector const&) const"}, + // "clang::driver::tools::Clang::AddPreprocessingOptions(clang::driver::Driver const&, clang::driver::ArgList const&, llvm::SmallVector&, clang::driver::InputInfo const&, llvm::SmallVector const&) const" was returned + + {"_Z25CheckPreprocessingOptionsRKN5clang6driver6DriverERKNS0_7ArgListE", "CheckPreprocessingOptions(clang::driver::Driver const&, clang::driver::ArgList const&)"}, + + // {"_ZN5clang6driver5tools6darwin3CC121getDependencyFileNameERKNS0_7ArgListERKN4llvm11SmallVectorINS0_9InputInfoELj4EEE", + // "clang::driver::tools::darwin::CC1::getDependencyFileName(clang::driver::ArgList const&, llvm::SmallVector const&)"}, + // "clang::driver::tools::darwin::CC1::getDependencyFileName(clang::driver::ArgList const&, llvm::SmallVector const&)" was returned + + {"_Z11QuoteTargetN4llvm9StringRefERNS_15SmallVectorImplIcEE", "QuoteTarget(llvm::StringRef, llvm::SmallVectorImpl&)"}, + + // {"_ZNK5clang6driver5tools5Clang16AddARMTargetArgsERKNS0_7ArgListERN4llvm11SmallVectorIPKcLj16EEE", + // "clang::driver::tools::Clang::AddARMTargetArgs(clang::driver::ArgList const&, llvm::SmallVector&) const"}, + // "clang::driver::tools::Clang::AddARMTargetArgs(clang::driver::ArgList const&, llvm::SmallVector&) const" was returned + + {"_Z15getARMTargetCPURKN5clang6driver7ArgListERKN4llvm6TripleE", "getARMTargetCPU(clang::driver::ArgList const&, llvm::Triple const&)"}, + + // {"_ZNK5clang6driver5tools5Clang17AddMIPSTargetArgsERKNS0_7ArgListERN4llvm11SmallVectorIPKcLj16EEE", + // "clang::driver::tools::Clang::AddMIPSTargetArgs(clang::driver::ArgList const&, llvm::SmallVector&) const"}, + // "clang::driver::tools::Clang::AddMIPSTargetArgs(clang::driver::ArgList const&, llvm::SmallVector&) const" was returned + + + // {"_ZNK5clang6driver5tools5Clang18AddSparcTargetArgsERKNS0_7ArgListERN4llvm11SmallVectorIPKcLj16EEE", + // "clang::driver::tools::Clang::AddSparcTargetArgs(clang::driver::ArgList const&, llvm::SmallVector&) const"}, + // "clang::driver::tools::Clang::AddSparcTargetArgs(clang::driver::ArgList const&, llvm::SmallVector&) const" was returned + + + // {"_ZNK5clang6driver5tools5Clang16AddX86TargetArgsERKNS0_7ArgListERN4llvm11SmallVectorIPKcLj16EEE", + // "clang::driver::tools::Clang::AddX86TargetArgs(clang::driver::ArgList const&, llvm::SmallVector&) const"}, + // "clang::driver::tools::Clang::AddX86TargetArgs(clang::driver::ArgList const&, llvm::SmallVector&) const" was returned + + + // {"_ZNK5clang6driver5tools5Clang12ConstructJobERNS0_11CompilationERKNS0_9JobActionERKNS0_9InputInfoERKN4llvm11SmallVectorIS8_Lj4EEERKNS0_7ArgListEPKc", + // "clang::driver::tools::Clang::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const"}, + // "clang::driver::tools::Clang::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const" was returned + + + // {"_ZN5clang6driver5tools6darwin3CC116getBaseInputNameERKNS0_7ArgListERKN4llvm11SmallVectorINS0_9InputInfoELj4EEE", + // "clang::driver::tools::darwin::CC1::getBaseInputName(clang::driver::ArgList const&, llvm::SmallVector const&)"}, + // "clang::driver::tools::darwin::CC1::getBaseInputName(clang::driver::ArgList const&, llvm::SmallVector const&)" was returned + + {"_Z26CheckCodeGenerationOptionsRKN5clang6driver6DriverERKNS0_7ArgListE", "CheckCodeGenerationOptions(clang::driver::Driver const&, clang::driver::ArgList const&)"}, + + // {"_ZNK5clang6driver5tools7ClangAs12ConstructJobERNS0_11CompilationERKNS0_9JobActionERKNS0_9InputInfoERKN4llvm11SmallVectorIS8_Lj4EEERKNS0_7ArgListEPKc", + // "clang::driver::tools::ClangAs::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const"}, + // "clang::driver::tools::ClangAs::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const" was returned + + + // {"_ZNK5clang6driver5tools3gcc6Common12ConstructJobERNS0_11CompilationERKNS0_9JobActionERKNS0_9InputInfoERKN4llvm11SmallVectorIS9_Lj4EEERKNS0_7ArgListEPKc", + // "clang::driver::tools::gcc::Common::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const"}, + // "clang::driver::tools::gcc::Common::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const" was returned + + + // {"_ZNK5clang6driver5tools3gcc10Preprocess19RenderExtraToolArgsERKNS0_9JobActionERN4llvm11SmallVectorIPKcLj16EEE", + // "clang::driver::tools::gcc::Preprocess::RenderExtraToolArgs(clang::driver::JobAction const&, llvm::SmallVector&) const"}, + // "clang::driver::tools::gcc::Preprocess::RenderExtraToolArgs(clang::driver::JobAction const&, llvm::SmallVector&) const" was returned + + + // {"_ZNK5clang6driver5tools3gcc10Precompile19RenderExtraToolArgsERKNS0_9JobActionERN4llvm11SmallVectorIPKcLj16EEE", + // "clang::driver::tools::gcc::Precompile::RenderExtraToolArgs(clang::driver::JobAction const&, llvm::SmallVector&) const"}, + // "clang::driver::tools::gcc::Precompile::RenderExtraToolArgs(clang::driver::JobAction const&, llvm::SmallVector&) const" was returned + + + // {"_ZNK5clang6driver5tools3gcc7Compile19RenderExtraToolArgsERKNS0_9JobActionERN4llvm11SmallVectorIPKcLj16EEE", + // "clang::driver::tools::gcc::Compile::RenderExtraToolArgs(clang::driver::JobAction const&, llvm::SmallVector&) const"}, + // "clang::driver::tools::gcc::Compile::RenderExtraToolArgs(clang::driver::JobAction const&, llvm::SmallVector&) const" was returned + + + // {"_ZNK5clang6driver5tools3gcc8Assemble19RenderExtraToolArgsERKNS0_9JobActionERN4llvm11SmallVectorIPKcLj16EEE", + // "clang::driver::tools::gcc::Assemble::RenderExtraToolArgs(clang::driver::JobAction const&, llvm::SmallVector&) const"}, + // "clang::driver::tools::gcc::Assemble::RenderExtraToolArgs(clang::driver::JobAction const&, llvm::SmallVector&) const" was returned + + + // {"_ZNK5clang6driver5tools3gcc4Link19RenderExtraToolArgsERKNS0_9JobActionERN4llvm11SmallVectorIPKcLj16EEE", + // "clang::driver::tools::gcc::Link::RenderExtraToolArgs(clang::driver::JobAction const&, llvm::SmallVector&) const"}, + // "clang::driver::tools::gcc::Link::RenderExtraToolArgs(clang::driver::JobAction const&, llvm::SmallVector&) const" was returned + + {"_ZNK5clang6driver5tools6darwin3CC110getCC1NameENS0_5types2IDE", "clang::driver::tools::darwin::CC1::getCC1Name(clang::driver::types::ID) const"}, + + // {"_ZN5clang6driver5tools6darwin3CC116getBaseInputStemERKNS0_7ArgListERKN4llvm11SmallVectorINS0_9InputInfoELj4EEE", + // "clang::driver::tools::darwin::CC1::getBaseInputStem(clang::driver::ArgList const&, llvm::SmallVector const&)"}, + // "clang::driver::tools::darwin::CC1::getBaseInputStem(clang::driver::ArgList const&, llvm::SmallVector const&)" was returned + + + // {"_ZNK5clang6driver5tools6darwin3CC110AddCC1ArgsERKNS0_7ArgListERN4llvm11SmallVectorIPKcLj16EEE", + // "clang::driver::tools::darwin::CC1::AddCC1Args(clang::driver::ArgList const&, llvm::SmallVector&) const"}, + // "clang::driver::tools::darwin::CC1::AddCC1Args(clang::driver::ArgList const&, llvm::SmallVector&) const" was returned + + + // {"_ZNK5clang6driver5tools6darwin3CC117AddCC1OptionsArgsERKNS0_7ArgListERN4llvm11SmallVectorIPKcLj16EEERKNS8_INS0_9InputInfoELj4EEERKSB_", + // "clang::driver::tools::darwin::CC1::AddCC1OptionsArgs(clang::driver::ArgList const&, llvm::SmallVector&, llvm::SmallVector const&, llvm::SmallVector const&) const"}, + // "clang::driver::tools::darwin::CC1::AddCC1OptionsArgs(clang::driver::ArgList const&, llvm::SmallVector&, llvm::SmallVector const&, llvm::SmallVector const&) const" was returned + + + // {"_ZNK5clang6driver5tools6darwin3CC117AddCPPOptionsArgsERKNS0_7ArgListERN4llvm11SmallVectorIPKcLj16EEERKNS8_INS0_9InputInfoELj4EEERKSB_", + // "clang::driver::tools::darwin::CC1::AddCPPOptionsArgs(clang::driver::ArgList const&, llvm::SmallVector&, llvm::SmallVector const&, llvm::SmallVector const&) const"}, + // "clang::driver::tools::darwin::CC1::AddCPPOptionsArgs(clang::driver::ArgList const&, llvm::SmallVector&, llvm::SmallVector const&, llvm::SmallVector const&) const" was returned + + + // {"_ZNK5clang6driver5tools6darwin3CC123AddCPPUniqueOptionsArgsERKNS0_7ArgListERN4llvm11SmallVectorIPKcLj16EEERKNS8_INS0_9InputInfoELj4EEE", + // "clang::driver::tools::darwin::CC1::AddCPPUniqueOptionsArgs(clang::driver::ArgList const&, llvm::SmallVector&, llvm::SmallVector const&) const"}, + // "clang::driver::tools::darwin::CC1::AddCPPUniqueOptionsArgs(clang::driver::ArgList const&, llvm::SmallVector&, llvm::SmallVector const&) const" was returned + + + // {"_ZNK5clang6driver5tools6darwin3CC110AddCPPArgsERKNS0_7ArgListERN4llvm11SmallVectorIPKcLj16EEE", + // "clang::driver::tools::darwin::CC1::AddCPPArgs(clang::driver::ArgList const&, llvm::SmallVector&) const"}, + // "clang::driver::tools::darwin::CC1::AddCPPArgs(clang::driver::ArgList const&, llvm::SmallVector&) const" was returned + + + // {"_ZNK5clang6driver5tools6darwin10Preprocess12ConstructJobERNS0_11CompilationERKNS0_9JobActionERKNS0_9InputInfoERKN4llvm11SmallVectorIS9_Lj4EEERKNS0_7ArgListEPKc", + // "clang::driver::tools::darwin::Preprocess::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const"}, + // "clang::driver::tools::darwin::Preprocess::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const" was returned + + + // {"_ZNK5clang6driver5tools6darwin7Compile12ConstructJobERNS0_11CompilationERKNS0_9JobActionERKNS0_9InputInfoERKN4llvm11SmallVectorIS9_Lj4EEERKNS0_7ArgListEPKc", + // "clang::driver::tools::darwin::Compile::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const"}, + // "clang::driver::tools::darwin::Compile::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const" was returned + + + // {"_ZNK5clang6driver5tools6darwin8Assemble12ConstructJobERNS0_11CompilationERKNS0_9JobActionERKNS0_9InputInfoERKN4llvm11SmallVectorIS9_Lj4EEERKNS0_7ArgListEPKc", + // "clang::driver::tools::darwin::Assemble::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const"}, + // "clang::driver::tools::darwin::Assemble::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const" was returned + + + // {"_ZNK5clang6driver5tools6darwin10DarwinTool13AddDarwinArchERKNS0_7ArgListERN4llvm11SmallVectorIPKcLj16EEE", + // "clang::driver::tools::darwin::DarwinTool::AddDarwinArch(clang::driver::ArgList const&, llvm::SmallVector&) const"}, + // "clang::driver::tools::darwin::DarwinTool::AddDarwinArch(clang::driver::ArgList const&, llvm::SmallVector&) const" was returned + + + // {"_ZNK5clang6driver5tools6darwin4Link11AddLinkArgsERNS0_11CompilationERKNS0_7ArgListERN4llvm11SmallVectorIPKcLj16EEE", + // "clang::driver::tools::darwin::Link::AddLinkArgs(clang::driver::Compilation&, clang::driver::ArgList const&, llvm::SmallVector&) const"}, + // "clang::driver::tools::darwin::Link::AddLinkArgs(clang::driver::Compilation&, clang::driver::ArgList const&, llvm::SmallVector&) const" was returned + + + // {"_ZNK5clang6driver5tools6darwin4Link12ConstructJobERNS0_11CompilationERKNS0_9JobActionERKNS0_9InputInfoERKN4llvm11SmallVectorIS9_Lj4EEERKNS0_7ArgListEPKc", + // "clang::driver::tools::darwin::Link::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const"}, + // "clang::driver::tools::darwin::Link::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const" was returned + + + // {"_Z15AddLinkerInputsRKN5clang6driver9ToolChainERKN4llvm11SmallVectorINS0_9InputInfoELj4EEERKNS0_7ArgListERNS5_IPKcLj16EEE", + // "AddLinkerInputs(clang::driver::ToolChain const&, llvm::SmallVector const&, clang::driver::ArgList const&, llvm::SmallVector&)"}, + // "AddLinkerInputs(clang::driver::ToolChain const&, llvm::SmallVector const&, clang::driver::ArgList const&, llvm::SmallVector&)" was returned + + + // {"_ZNK5clang6driver5tools6darwin4Lipo12ConstructJobERNS0_11CompilationERKNS0_9JobActionERKNS0_9InputInfoERKN4llvm11SmallVectorIS9_Lj4EEERKNS0_7ArgListEPKc", + // "clang::driver::tools::darwin::Lipo::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const"}, + // "clang::driver::tools::darwin::Lipo::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const" was returned + + + // {"_ZNK5clang6driver5tools6darwin8Dsymutil12ConstructJobERNS0_11CompilationERKNS0_9JobActionERKNS0_9InputInfoERKN4llvm11SmallVectorIS9_Lj4EEERKNS0_7ArgListEPKc", + // "clang::driver::tools::darwin::Dsymutil::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const"}, + // "clang::driver::tools::darwin::Dsymutil::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const" was returned + + + // {"_ZNK5clang6driver5tools8auroraux8Assemble12ConstructJobERNS0_11CompilationERKNS0_9JobActionERKNS0_9InputInfoERKN4llvm11SmallVectorIS9_Lj4EEERKNS0_7ArgListEPKc", + // "clang::driver::tools::auroraux::Assemble::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const"}, + // "clang::driver::tools::auroraux::Assemble::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const" was returned + + + // {"_ZNK5clang6driver5tools8auroraux4Link12ConstructJobERNS0_11CompilationERKNS0_9JobActionERKNS0_9InputInfoERKN4llvm11SmallVectorIS9_Lj4EEERKNS0_7ArgListEPKc", + // "clang::driver::tools::auroraux::Link::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const"}, + // "clang::driver::tools::auroraux::Link::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const" was returned + + + // {"_ZNK5clang6driver5tools7openbsd8Assemble12ConstructJobERNS0_11CompilationERKNS0_9JobActionERKNS0_9InputInfoERKN4llvm11SmallVectorIS9_Lj4EEERKNS0_7ArgListEPKc", + // "clang::driver::tools::openbsd::Assemble::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const"}, + // "clang::driver::tools::openbsd::Assemble::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const" was returned + + + // {"_ZNK5clang6driver5tools7openbsd4Link12ConstructJobERNS0_11CompilationERKNS0_9JobActionERKNS0_9InputInfoERKN4llvm11SmallVectorIS9_Lj4EEERKNS0_7ArgListEPKc", + // "clang::driver::tools::openbsd::Link::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const"}, + // "clang::driver::tools::openbsd::Link::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const" was returned + + + // {"_ZNK5clang6driver5tools7freebsd8Assemble12ConstructJobERNS0_11CompilationERKNS0_9JobActionERKNS0_9InputInfoERKN4llvm11SmallVectorIS9_Lj4EEERKNS0_7ArgListEPKc", + // "clang::driver::tools::freebsd::Assemble::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const"}, + // "clang::driver::tools::freebsd::Assemble::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const" was returned + + + // {"_ZNK5clang6driver5tools7freebsd4Link12ConstructJobERNS0_11CompilationERKNS0_9JobActionERKNS0_9InputInfoERKN4llvm11SmallVectorIS9_Lj4EEERKNS0_7ArgListEPKc", + // "clang::driver::tools::freebsd::Link::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const"}, + // "clang::driver::tools::freebsd::Link::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const" was returned + + + // {"_ZNK5clang6driver5tools6netbsd8Assemble12ConstructJobERNS0_11CompilationERKNS0_9JobActionERKNS0_9InputInfoERKN4llvm11SmallVectorIS9_Lj4EEERKNS0_7ArgListEPKc", + // "clang::driver::tools::netbsd::Assemble::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const"}, + // "clang::driver::tools::netbsd::Assemble::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const" was returned + + + // {"_ZNK5clang6driver5tools6netbsd4Link12ConstructJobERNS0_11CompilationERKNS0_9JobActionERKNS0_9InputInfoERKN4llvm11SmallVectorIS9_Lj4EEERKNS0_7ArgListEPKc", + // "clang::driver::tools::netbsd::Link::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const"}, + // "clang::driver::tools::netbsd::Link::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const" was returned + + + // {"_ZNK5clang6driver5tools10linuxtools8Assemble12ConstructJobERNS0_11CompilationERKNS0_9JobActionERKNS0_9InputInfoERKN4llvm11SmallVectorIS9_Lj4EEERKNS0_7ArgListEPKc", + // "clang::driver::tools::linuxtools::Assemble::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const"}, + // "clang::driver::tools::linuxtools::Assemble::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const" was returned + + + // {"_ZNK5clang6driver5tools10linuxtools4Link12ConstructJobERNS0_11CompilationERKNS0_9JobActionERKNS0_9InputInfoERKN4llvm11SmallVectorIS9_Lj4EEERKNS0_7ArgListEPKc", + // "clang::driver::tools::linuxtools::Link::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const"}, + // "clang::driver::tools::linuxtools::Link::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const" was returned + + + // {"_ZNK5clang6driver5tools5minix8Assemble12ConstructJobERNS0_11CompilationERKNS0_9JobActionERKNS0_9InputInfoERKN4llvm11SmallVectorIS9_Lj4EEERKNS0_7ArgListEPKc", + // "clang::driver::tools::minix::Assemble::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const"}, + // "clang::driver::tools::minix::Assemble::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const" was returned + + + // {"_ZNK5clang6driver5tools5minix4Link12ConstructJobERNS0_11CompilationERKNS0_9JobActionERKNS0_9InputInfoERKN4llvm11SmallVectorIS9_Lj4EEERKNS0_7ArgListEPKc", + // "clang::driver::tools::minix::Link::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const"}, + // "clang::driver::tools::minix::Link::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const" was returned + + + // {"_ZNK5clang6driver5tools9dragonfly8Assemble12ConstructJobERNS0_11CompilationERKNS0_9JobActionERKNS0_9InputInfoERKN4llvm11SmallVectorIS9_Lj4EEERKNS0_7ArgListEPKc", + // "clang::driver::tools::dragonfly::Assemble::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const"}, + // "clang::driver::tools::dragonfly::Assemble::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const" was returned + + + // {"_ZNK5clang6driver5tools9dragonfly4Link12ConstructJobERNS0_11CompilationERKNS0_9JobActionERKNS0_9InputInfoERKN4llvm11SmallVectorIS9_Lj4EEERKNS0_7ArgListEPKc", + // "clang::driver::tools::dragonfly::Link::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const"}, + // "clang::driver::tools::dragonfly::Link::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const" was returned + + + // {"_ZNK5clang6driver5tools12visualstudio4Link12ConstructJobERNS0_11CompilationERKNS0_9JobActionERKNS0_9InputInfoERKN4llvm11SmallVectorIS9_Lj4EEERKNS0_7ArgListEPKc", + // "clang::driver::tools::visualstudio::Link::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const"}, + // "clang::driver::tools::visualstudio::Link::ConstructJob(clang::driver::Compilation&, clang::driver::JobAction const&, clang::driver::InputInfo const&, llvm::SmallVector const&, clang::driver::ArgList const&, char const*) const" was returned + + {"_ZN5clang6driver5tools5ClangD1Ev", "clang::driver::tools::Clang::~Clang()"}, + {"_ZN5clang6driver5tools5ClangD0Ev", "clang::driver::tools::Clang::~Clang()"}, + {"_ZN5clang6driver5tools7ClangAsD1Ev", "clang::driver::tools::ClangAs::~ClangAs()"}, + {"_ZN5clang6driver5tools7ClangAsD0Ev", "clang::driver::tools::ClangAs::~ClangAs()"}, + {"_ZN5clang6driver5tools3gcc10PreprocessD1Ev", "clang::driver::tools::gcc::Preprocess::~Preprocess()"}, + {"_ZN5clang6driver5tools3gcc10PreprocessD0Ev", "clang::driver::tools::gcc::Preprocess::~Preprocess()"}, + {"_ZN5clang6driver5tools3gcc10PrecompileD1Ev", "clang::driver::tools::gcc::Precompile::~Precompile()"}, + {"_ZN5clang6driver5tools3gcc10PrecompileD0Ev", "clang::driver::tools::gcc::Precompile::~Precompile()"}, + {"_ZN5clang6driver5tools3gcc7CompileD1Ev", "clang::driver::tools::gcc::Compile::~Compile()"}, + {"_ZN5clang6driver5tools3gcc7CompileD0Ev", "clang::driver::tools::gcc::Compile::~Compile()"}, + {"_ZN5clang6driver5tools3gcc8AssembleD1Ev", "clang::driver::tools::gcc::Assemble::~Assemble()"}, + {"_ZN5clang6driver5tools3gcc8AssembleD0Ev", "clang::driver::tools::gcc::Assemble::~Assemble()"}, + {"_ZN5clang6driver5tools3gcc4LinkD1Ev", "clang::driver::tools::gcc::Link::~Link()"}, + {"_ZN5clang6driver5tools3gcc4LinkD0Ev", "clang::driver::tools::gcc::Link::~Link()"}, + {"_ZN5clang6driver5tools6darwin10PreprocessD1Ev", "clang::driver::tools::darwin::Preprocess::~Preprocess()"}, + {"_ZN5clang6driver5tools6darwin10PreprocessD0Ev", "clang::driver::tools::darwin::Preprocess::~Preprocess()"}, + {"_ZN5clang6driver5tools6darwin7CompileD1Ev", "clang::driver::tools::darwin::Compile::~Compile()"}, + {"_ZN5clang6driver5tools6darwin7CompileD0Ev", "clang::driver::tools::darwin::Compile::~Compile()"}, + {"_ZN5clang6driver5tools6darwin8AssembleD1Ev", "clang::driver::tools::darwin::Assemble::~Assemble()"}, + {"_ZN5clang6driver5tools6darwin8AssembleD0Ev", "clang::driver::tools::darwin::Assemble::~Assemble()"}, + {"_ZN5clang6driver5tools6darwin4LinkD1Ev", "clang::driver::tools::darwin::Link::~Link()"}, + {"_ZN5clang6driver5tools6darwin4LinkD0Ev", "clang::driver::tools::darwin::Link::~Link()"}, + {"_ZN5clang6driver5tools6darwin4LipoD1Ev", "clang::driver::tools::darwin::Lipo::~Lipo()"}, + {"_ZN5clang6driver5tools6darwin4LipoD0Ev", "clang::driver::tools::darwin::Lipo::~Lipo()"}, + {"_ZN5clang6driver5tools6darwin8DsymutilD1Ev", "clang::driver::tools::darwin::Dsymutil::~Dsymutil()"}, + {"_ZN5clang6driver5tools6darwin8DsymutilD0Ev", "clang::driver::tools::darwin::Dsymutil::~Dsymutil()"}, + {"_ZN5clang6driver5tools7openbsd8AssembleD1Ev", "clang::driver::tools::openbsd::Assemble::~Assemble()"}, + {"_ZN5clang6driver5tools7openbsd8AssembleD0Ev", "clang::driver::tools::openbsd::Assemble::~Assemble()"}, + {"_ZN5clang6driver5tools7openbsd4LinkD1Ev", "clang::driver::tools::openbsd::Link::~Link()"}, + {"_ZN5clang6driver5tools7openbsd4LinkD0Ev", "clang::driver::tools::openbsd::Link::~Link()"}, + {"_ZN5clang6driver5tools7freebsd8AssembleD1Ev", "clang::driver::tools::freebsd::Assemble::~Assemble()"}, + {"_ZN5clang6driver5tools7freebsd8AssembleD0Ev", "clang::driver::tools::freebsd::Assemble::~Assemble()"}, + {"_ZN5clang6driver5tools7freebsd4LinkD1Ev", "clang::driver::tools::freebsd::Link::~Link()"}, + {"_ZN5clang6driver5tools7freebsd4LinkD0Ev", "clang::driver::tools::freebsd::Link::~Link()"}, + {"_ZN5clang6driver5tools6netbsd8AssembleD1Ev", "clang::driver::tools::netbsd::Assemble::~Assemble()"}, + {"_ZN5clang6driver5tools6netbsd8AssembleD0Ev", "clang::driver::tools::netbsd::Assemble::~Assemble()"}, + {"_ZN5clang6driver5tools6netbsd4LinkD1Ev", "clang::driver::tools::netbsd::Link::~Link()"}, + {"_ZN5clang6driver5tools6netbsd4LinkD0Ev", "clang::driver::tools::netbsd::Link::~Link()"}, + {"_ZN5clang6driver5tools10linuxtools8AssembleD1Ev", "clang::driver::tools::linuxtools::Assemble::~Assemble()"}, + {"_ZN5clang6driver5tools10linuxtools8AssembleD0Ev", "clang::driver::tools::linuxtools::Assemble::~Assemble()"}, + {"_ZN5clang6driver5tools10linuxtools4LinkD1Ev", "clang::driver::tools::linuxtools::Link::~Link()"}, + {"_ZN5clang6driver5tools10linuxtools4LinkD0Ev", "clang::driver::tools::linuxtools::Link::~Link()"}, + {"_ZN5clang6driver5tools5minix8AssembleD1Ev", "clang::driver::tools::minix::Assemble::~Assemble()"}, + {"_ZN5clang6driver5tools5minix8AssembleD0Ev", "clang::driver::tools::minix::Assemble::~Assemble()"}, + {"_ZN5clang6driver5tools5minix4LinkD1Ev", "clang::driver::tools::minix::Link::~Link()"}, + {"_ZN5clang6driver5tools5minix4LinkD0Ev", "clang::driver::tools::minix::Link::~Link()"}, + {"_ZN5clang6driver5tools8auroraux8AssembleD1Ev", "clang::driver::tools::auroraux::Assemble::~Assemble()"}, + {"_ZN5clang6driver5tools8auroraux8AssembleD0Ev", "clang::driver::tools::auroraux::Assemble::~Assemble()"}, + {"_ZN5clang6driver5tools8auroraux4LinkD1Ev", "clang::driver::tools::auroraux::Link::~Link()"}, + {"_ZN5clang6driver5tools8auroraux4LinkD0Ev", "clang::driver::tools::auroraux::Link::~Link()"}, + {"_ZN5clang6driver5tools9dragonfly8AssembleD1Ev", "clang::driver::tools::dragonfly::Assemble::~Assemble()"}, + {"_ZN5clang6driver5tools9dragonfly8AssembleD0Ev", "clang::driver::tools::dragonfly::Assemble::~Assemble()"}, + {"_ZN5clang6driver5tools9dragonfly4LinkD1Ev", "clang::driver::tools::dragonfly::Link::~Link()"}, + {"_ZN5clang6driver5tools9dragonfly4LinkD0Ev", "clang::driver::tools::dragonfly::Link::~Link()"}, + {"_ZN5clang6driver5tools12visualstudio4LinkD1Ev", "clang::driver::tools::visualstudio::Link::~Link()"}, + {"_ZN5clang6driver5tools12visualstudio4LinkD0Ev", "clang::driver::tools::visualstudio::Link::~Link()"}, + + // {"_ZN4llvm15SmallVectorImplISsEaSERKS1_", + // "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + // "llvm::SmallVectorImpl::operator=(std::string const&)" was returned + + {"_ZN5clang6driver5types11getTypeNameENS1_2IDE", "clang::driver::types::getTypeName(clang::driver::types::ID)"}, + {"_ZN5clang6driver5types19getPreprocessedTypeENS1_2IDE", "clang::driver::types::getPreprocessedType(clang::driver::types::ID)"}, + {"_ZN5clang6driver5types17getTypeTempSuffixENS1_2IDE", "clang::driver::types::getTypeTempSuffix(clang::driver::types::ID)"}, + {"_ZN5clang6driver5types16onlyAssembleTypeENS1_2IDE", "clang::driver::types::onlyAssembleType(clang::driver::types::ID)"}, + {"_ZN5clang6driver5types18onlyPrecompileTypeENS1_2IDE", "clang::driver::types::onlyPrecompileType(clang::driver::types::ID)"}, + {"_ZN5clang6driver5types22canTypeBeUserSpecifiedENS1_2IDE", "clang::driver::types::canTypeBeUserSpecified(clang::driver::types::ID)"}, + {"_ZN5clang6driver5types19appendSuffixForTypeENS1_2IDE", "clang::driver::types::appendSuffixForType(clang::driver::types::ID)"}, + {"_ZN5clang6driver5types11canLipoTypeENS1_2IDE", "clang::driver::types::canLipoType(clang::driver::types::ID)"}, + {"_ZN5clang6driver5types17isAcceptedByClangENS1_2IDE", "clang::driver::types::isAcceptedByClang(clang::driver::types::ID)"}, + {"_ZN5clang6driver5types21isOnlyAcceptedByClangENS1_2IDE", "clang::driver::types::isOnlyAcceptedByClang(clang::driver::types::ID)"}, + {"_ZN5clang6driver5types6isObjCENS1_2IDE", "clang::driver::types::isObjC(clang::driver::types::ID)"}, + {"_ZN5clang6driver5types5isCXXENS1_2IDE", "clang::driver::types::isCXX(clang::driver::types::ID)"}, + {"_ZN5clang6driver5types22lookupTypeForExtensionEPKc", "clang::driver::types::lookupTypeForExtension(char const*)"}, + {"_ZN5clang6driver5types26lookupTypeForTypeSpecifierEPKc", "clang::driver::types::lookupTypeForTypeSpecifier(char const*)"}, + {"_ZN5clang6driver5types23getNumCompilationPhasesENS1_2IDE", "clang::driver::types::getNumCompilationPhases(clang::driver::types::ID)"}, + {"_ZN5clang6driver5types19getCompilationPhaseENS1_2IDEj", "clang::driver::types::getCompilationPhase(clang::driver::types::ID, unsigned int)"}, + {"_ZN5clang6driver5types21lookupCXXTypeForCTypeENS1_2IDE", "clang::driver::types::lookupCXXTypeForCType(clang::driver::types::ID)"}, + {"_ZN5clang26ASTDeserializationListenerD0Ev", "clang::ASTDeserializationListener::~ASTDeserializationListener()"}, + {"_ZN5clang26ASTDeserializationListenerD1Ev", "clang::ASTDeserializationListener::~ASTDeserializationListener()"}, + {"_ZN5clang26ASTDeserializationListenerD2Ev", "clang::ASTDeserializationListener::~ASTDeserializationListener()"}, + {"_ZN5clang13serialization18TypeIdxFromBuiltinEPKNS_11BuiltinTypeE", "clang::serialization::TypeIdxFromBuiltin(clang::BuiltinType const*)"}, + {"_ZN5clang13serialization11ComputeHashENS_8SelectorE", "clang::serialization::ComputeHash(clang::Selector)"}, + {"_ZN5clang17ASTReaderListenerD0Ev", "clang::ASTReaderListener::~ASTReaderListener()"}, + {"_ZN5clang17ASTReaderListenerD1Ev", "clang::ASTReaderListener::~ASTReaderListener()"}, + {"_ZN5clang17ASTReaderListenerD2Ev", "clang::ASTReaderListener::~ASTReaderListener()"}, + {"_ZN5clang12PCHValidator19ReadLanguageOptionsERKNS_11LangOptionsE", "clang::PCHValidator::ReadLanguageOptions(clang::LangOptions const&)"}, + {"_ZN5clang9ASTReader4DiagEj", "clang::ASTReader::Diag(unsigned int)"}, + {"_ZN5clang12PCHValidator16ReadTargetTripleEN4llvm9StringRefE", "clang::PCHValidator::ReadTargetTriple(llvm::StringRef)"}, + + // {"_ZN5clang12PCHValidator20ReadPredefinesBufferERKN4llvm11SmallVectorINS_18PCHPredefinesBlockELj2EEENS1_9StringRefERSs", + // "clang::PCHValidator::ReadPredefinesBuffer(llvm::SmallVector const&, llvm::StringRef, std::string&)"}, + // "clang::PCHValidator::ReadPredefinesBuffer(llvm::SmallVector const&, llvm::StringRef, std::string&)" was returned + + {"_ZN5clang9ASTReader4DiagENS_14SourceLocationEj", "clang::ASTReader::Diag(clang::SourceLocation, unsigned int)"}, + {"_ZN5clang12PCHValidator18ReadHeaderFileInfoERKNS_14HeaderFileInfoEj", "clang::PCHValidator::ReadHeaderFileInfo(clang::HeaderFileInfo const&, unsigned int)"}, + {"_ZN5clang12PCHValidator11ReadCounterEj", "clang::PCHValidator::ReadCounter(unsigned int)"}, + {"_ZN5clang9ASTReader26setDeserializationListenerEPNS_26ASTDeserializationListenerE", "clang::ASTReader::setDeserializationListener(clang::ASTDeserializationListener*)"}, + {"_ZN5clang9ASTReader22ReadDeclContextStorageERN4llvm15BitstreamCursorERKSt4pairIyyERNS0_15DeclContextInfoE", "clang::ASTReader::ReadDeclContextStorage(llvm::BitstreamCursor&, std::pair const&, clang::ASTReader::DeclContextInfo&)"}, + {"_ZN5clang9ASTReader5ErrorEPKc", "clang::ASTReader::Error(char const*)"}, + {"_ZN5clang9ASTReader22CheckPredefinesBuffersEv", "clang::ASTReader::CheckPredefinesBuffers()"}, + {"_ZN5clang9ASTReader14ParseLineTableERNS0_11PerFileDataERN4llvm15SmallVectorImplIyEE", "clang::ASTReader::ParseLineTable(clang::ASTReader::PerFileData&, llvm::SmallVectorImpl&)"}, + {"_ZN5clang9ASTReader28MaybeAddSystemRootToFilenameERSs", "clang::ASTReader::MaybeAddSystemRootToFilename(std::string&)"}, + {"_ZN5clang9ASTReader22ReadSourceManagerBlockERNS0_11PerFileDataE", "clang::ASTReader::ReadSourceManagerBlock(clang::ASTReader::PerFileData&)"}, + {"_ZN5clang9ASTReader15SLocCursorForIDEj", "clang::ASTReader::SLocCursorForID(unsigned int)"}, + {"_ZN5clang9ASTReader19ReadSLocEntryRecordEj", "clang::ASTReader::ReadSLocEntryRecord(unsigned int)"}, + {"_ZN5clang9ASTReader16ReadBlockAbbrevsERN4llvm15BitstreamCursorEj", "clang::ASTReader::ReadBlockAbbrevs(llvm::BitstreamCursor&, unsigned int)"}, + {"_ZN5clang9ASTReader15ReadMacroRecordERNS0_11PerFileDataEy", "clang::ASTReader::ReadMacroRecord(clang::ASTReader::PerFileData&, unsigned long long)"}, + {"_ZN5clang9ASTReader20DecodeIdentifierInfoEj", "clang::ASTReader::DecodeIdentifierInfo(unsigned int)"}, + {"_ZN5clang9ASTReader18getMacroDefinitionEj", "clang::ASTReader::getMacroDefinition(unsigned int)"}, + {"_ZN5clang9ASTReader22LoadPreprocessedEntityERNS0_11PerFileDataE", "clang::ASTReader::LoadPreprocessedEntity(clang::ASTReader::PerFileData&)"}, + {"_ZN5clang9ASTReader20SetIdentifierIsMacroEPNS_14IdentifierInfoERNS0_11PerFileDataEy", "clang::ASTReader::SetIdentifierIsMacro(clang::IdentifierInfo*, clang::ASTReader::PerFileData&, unsigned long long)"}, + {"_ZN5clang9ASTReader17ReadDefinedMacrosEv", "clang::ASTReader::ReadDefinedMacros()"}, + {"_ZN5clang9ASTReader19LoadMacroDefinitionEN4llvm16DenseMapIteratorIPNS_14IdentifierInfoEyNS1_12DenseMapInfoIS4_EENS5_IyEELb0EEE", "clang::ASTReader::LoadMacroDefinition(llvm::DenseMapIterator, llvm::DenseMapInfo, false>)"}, + {"_ZN5clang9ASTReader19LoadMacroDefinitionEPNS_14IdentifierInfoE", "clang::ASTReader::LoadMacroDefinition(clang::IdentifierInfo*)"}, + {"_ZN5clang9ASTReader12ReadASTBlockERNS0_11PerFileDataE", "clang::ASTReader::ReadASTBlock(clang::ASTReader::PerFileData&)"}, + {"_ZN5clang9ASTReader11ReadASTCoreEN4llvm9StringRefENS0_11ASTFileTypeE", "clang::ASTReader::ReadASTCore(llvm::StringRef, clang::ASTReader::ASTFileType)"}, + {"_ZN5clang9ASTReader20ParseLanguageOptionsERKN4llvm15SmallVectorImplIyEE", "clang::ASTReader::ParseLanguageOptions(llvm::SmallVectorImpl const&)"}, + {"_ZN5clang9ASTReader7ReadASTERKSsNS0_11ASTFileTypeE", "clang::ASTReader::ReadAST(std::string const&, clang::ASTReader::ASTFileType)"}, + {"_ZN5clang9ASTReader17InitializeContextERNS_10ASTContextE", "clang::ASTReader::InitializeContext(clang::ASTContext&)"}, + {"_ZN5clang9ASTReader11PerFileDataC1ENS0_11ASTFileTypeE", "clang::ASTReader::PerFileData::PerFileData(clang::ASTReader::ASTFileType)"}, + {"_ZN5clang9ASTReader15setPreprocessorERNS_12PreprocessorE", "clang::ASTReader::setPreprocessor(clang::Preprocessor&)"}, + {"_ZN5clang9ASTReader22GetTranslationUnitDeclEv", "clang::ASTReader::GetTranslationUnitDecl()"}, + {"_ZN5clang9ASTReader7GetTypeEj", "clang::ASTReader::GetType(unsigned int)"}, + {"_ZN5clang9ASTReader28ReadPragmaDiagnosticMappingsERNS_10DiagnosticE", "clang::ASTReader::ReadPragmaDiagnosticMappings(clang::Diagnostic&)"}, + {"_ZN5clang9ASTReader7GetDeclEj", "clang::ASTReader::GetDecl(unsigned int)"}, + {"_ZN5clang9ASTReader21getOriginalSourceFileERKSsRNS_11FileManagerERNS_10DiagnosticE", "clang::ASTReader::getOriginalSourceFile(std::string const&, clang::FileManager&, clang::Diagnostic&)"}, + + // {"_ZThn8_N5clang9ASTReader24ReadPreprocessedEntitiesEv", + // "non-virtual thunk to clang::ASTReader::ReadPreprocessedEntities()"}, + // "virtual function non-virtual override offset : -8 clang::ASTReader::ReadPreprocessedEntities()" was returned + + {"_ZN5clang9ASTReader24ReadPreprocessedEntitiesEv", "clang::ASTReader::ReadPreprocessedEntities()"}, + + // {"_ZThn8_N5clang9ASTReader22ReadPreprocessedEntityEy", + // "non-virtual thunk to clang::ASTReader::ReadPreprocessedEntity(unsigned long long)"}, + // "virtual function non-virtual override offset : -8 clang::ASTReader::ReadPreprocessedEntity(unsigned long long)" was returned + + {"_ZN5clang9ASTReader22ReadPreprocessedEntityEy", "clang::ASTReader::ReadPreprocessedEntity(unsigned long long)"}, + {"_ZN5clang9ASTReader18TypeCursorForIndexEj", "clang::ASTReader::TypeCursorForIndex(unsigned int)"}, + {"_ZN5clang9ASTReader14ReadTypeRecordEj", "clang::ASTReader::ReadTypeRecord(unsigned int)"}, + + // {"_ZN5clang9ASTReader9ReadAPIntERKN4llvm11SmallVectorIyLj64EEERj", + // "clang::ASTReader::ReadAPInt(llvm::SmallVector const&, unsigned int&)"}, + // "clang::ASTReader::ReadAPInt(llvm::SmallVector const&, unsigned int&)" was returned + + + // {"_ZN5clang9ASTReader23ReadNestedNameSpecifierERKN4llvm11SmallVectorIyLj64EEERj", + // "clang::ASTReader::ReadNestedNameSpecifier(llvm::SmallVector const&, unsigned int&)"}, + // "clang::ASTReader::ReadNestedNameSpecifier(llvm::SmallVector const&, unsigned int&)" was returned + + + // {"_ZN5clang9ASTReader20ReadTemplateArgumentERNS0_11PerFileDataERKN4llvm11SmallVectorIyLj64EEERj", + // "clang::ASTReader::ReadTemplateArgument(clang::ASTReader::PerFileData&, llvm::SmallVector const&, unsigned int&)"}, + // "clang::ASTReader::ReadTemplateArgument(clang::ASTReader::PerFileData&, llvm::SmallVector const&, unsigned int&)" was returned + + + // {"_ZN5clang9ASTReader15ReadSourceRangeERNS0_11PerFileDataERKN4llvm11SmallVectorIyLj64EEERj", + // "clang::ASTReader::ReadSourceRange(clang::ASTReader::PerFileData&, llvm::SmallVector const&, unsigned int&)"}, + // "clang::ASTReader::ReadSourceRange(clang::ASTReader::PerFileData&, llvm::SmallVector const&, unsigned int&)" was returned + + + // {"_ZN5clang9ASTReader16ReadTemplateNameERNS0_11PerFileDataERKN4llvm11SmallVectorIyLj64EEERj", + // "clang::ASTReader::ReadTemplateName(clang::ASTReader::PerFileData&, llvm::SmallVector const&, unsigned int&)"}, + // "clang::ASTReader::ReadTemplateName(clang::ASTReader::PerFileData&, llvm::SmallVector const&, unsigned int&)" was returned + + + // {"_ZN5clang9ASTReader24ReadTemplateArgumentListERN4llvm11SmallVectorINS_16TemplateArgumentELj8EEERNS0_11PerFileDataERKNS2_IyLj64EEERj", + // "clang::ASTReader::ReadTemplateArgumentList(llvm::SmallVector&, clang::ASTReader::PerFileData&, llvm::SmallVector const&, unsigned int&)"}, + // "clang::ASTReader::ReadTemplateArgumentList(llvm::SmallVector&, clang::ASTReader::PerFileData&, llvm::SmallVector const&, unsigned int&)" was returned + + {"_ZN5clang13TypeLocReader21VisitQualifiedTypeLocENS_16QualifiedTypeLocE", "clang::TypeLocReader::VisitQualifiedTypeLoc(clang::QualifiedTypeLoc)"}, + {"_ZN5clang13TypeLocReader19VisitBuiltinTypeLocENS_14BuiltinTypeLocE", "clang::TypeLocReader::VisitBuiltinTypeLoc(clang::BuiltinTypeLoc)"}, + {"_ZN5clang13TypeLocReader19VisitComplexTypeLocENS_14ComplexTypeLocE", "clang::TypeLocReader::VisitComplexTypeLoc(clang::ComplexTypeLoc)"}, + {"_ZN5clang13TypeLocReader19VisitPointerTypeLocENS_14PointerTypeLocE", "clang::TypeLocReader::VisitPointerTypeLoc(clang::PointerTypeLoc)"}, + {"_ZN5clang13TypeLocReader24VisitBlockPointerTypeLocENS_19BlockPointerTypeLocE", "clang::TypeLocReader::VisitBlockPointerTypeLoc(clang::BlockPointerTypeLoc)"}, + {"_ZN5clang13TypeLocReader27VisitLValueReferenceTypeLocENS_22LValueReferenceTypeLocE", "clang::TypeLocReader::VisitLValueReferenceTypeLoc(clang::LValueReferenceTypeLoc)"}, + {"_ZN5clang13TypeLocReader27VisitRValueReferenceTypeLocENS_22RValueReferenceTypeLocE", "clang::TypeLocReader::VisitRValueReferenceTypeLoc(clang::RValueReferenceTypeLoc)"}, + {"_ZN5clang13TypeLocReader25VisitMemberPointerTypeLocENS_20MemberPointerTypeLocE", "clang::TypeLocReader::VisitMemberPointerTypeLoc(clang::MemberPointerTypeLoc)"}, + {"_ZN5clang13TypeLocReader17VisitArrayTypeLocENS_12ArrayTypeLocE", "clang::TypeLocReader::VisitArrayTypeLoc(clang::ArrayTypeLoc)"}, + {"_ZN5clang13TypeLocReader25VisitConstantArrayTypeLocENS_20ConstantArrayTypeLocE", "clang::TypeLocReader::VisitConstantArrayTypeLoc(clang::ConstantArrayTypeLoc)"}, + {"_ZN5clang13TypeLocReader27VisitIncompleteArrayTypeLocENS_22IncompleteArrayTypeLocE", "clang::TypeLocReader::VisitIncompleteArrayTypeLoc(clang::IncompleteArrayTypeLoc)"}, + {"_ZN5clang13TypeLocReader25VisitVariableArrayTypeLocENS_20VariableArrayTypeLocE", "clang::TypeLocReader::VisitVariableArrayTypeLoc(clang::VariableArrayTypeLoc)"}, + {"_ZN5clang13TypeLocReader31VisitDependentSizedArrayTypeLocENS_26DependentSizedArrayTypeLocE", "clang::TypeLocReader::VisitDependentSizedArrayTypeLoc(clang::DependentSizedArrayTypeLoc)"}, + {"_ZN5clang13TypeLocReader35VisitDependentSizedExtVectorTypeLocENS_30DependentSizedExtVectorTypeLocE", "clang::TypeLocReader::VisitDependentSizedExtVectorTypeLoc(clang::DependentSizedExtVectorTypeLoc)"}, + {"_ZN5clang13TypeLocReader18VisitVectorTypeLocENS_13VectorTypeLocE", "clang::TypeLocReader::VisitVectorTypeLoc(clang::VectorTypeLoc)"}, + {"_ZN5clang13TypeLocReader21VisitExtVectorTypeLocENS_16ExtVectorTypeLocE", "clang::TypeLocReader::VisitExtVectorTypeLoc(clang::ExtVectorTypeLoc)"}, + {"_ZN5clang13TypeLocReader20VisitFunctionTypeLocENS_15FunctionTypeLocE", "clang::TypeLocReader::VisitFunctionTypeLoc(clang::FunctionTypeLoc)"}, + {"_ZN5clang13TypeLocReader25VisitFunctionProtoTypeLocENS_20FunctionProtoTypeLocE", "clang::TypeLocReader::VisitFunctionProtoTypeLoc(clang::FunctionProtoTypeLoc)"}, + {"_ZN5clang13TypeLocReader27VisitFunctionNoProtoTypeLocENS_22FunctionNoProtoTypeLocE", "clang::TypeLocReader::VisitFunctionNoProtoTypeLoc(clang::FunctionNoProtoTypeLoc)"}, + {"_ZN5clang13TypeLocReader27VisitUnresolvedUsingTypeLocENS_22UnresolvedUsingTypeLocE", "clang::TypeLocReader::VisitUnresolvedUsingTypeLoc(clang::UnresolvedUsingTypeLoc)"}, + {"_ZN5clang13TypeLocReader19VisitTypedefTypeLocENS_14TypedefTypeLocE", "clang::TypeLocReader::VisitTypedefTypeLoc(clang::TypedefTypeLoc)"}, + {"_ZN5clang13TypeLocReader22VisitTypeOfExprTypeLocENS_17TypeOfExprTypeLocE", "clang::TypeLocReader::VisitTypeOfExprTypeLoc(clang::TypeOfExprTypeLoc)"}, + {"_ZN5clang13TypeLocReader18VisitTypeOfTypeLocENS_13TypeOfTypeLocE", "clang::TypeLocReader::VisitTypeOfTypeLoc(clang::TypeOfTypeLoc)"}, + + // {"_ZN5clang9ASTReader17GetTypeSourceInfoERNS0_11PerFileDataERKN4llvm11SmallVectorIyLj64EEERj", + // "clang::ASTReader::GetTypeSourceInfo(clang::ASTReader::PerFileData&, llvm::SmallVector const&, unsigned int&)"}, + // "clang::ASTReader::GetTypeSourceInfo(clang::ASTReader::PerFileData&, llvm::SmallVector const&, unsigned int&)" was returned + + {"_ZN5clang13TypeLocReader20VisitDecltypeTypeLocENS_15DecltypeTypeLocE", "clang::TypeLocReader::VisitDecltypeTypeLoc(clang::DecltypeTypeLoc)"}, + {"_ZN5clang13TypeLocReader18VisitRecordTypeLocENS_13RecordTypeLocE", "clang::TypeLocReader::VisitRecordTypeLoc(clang::RecordTypeLoc)"}, + {"_ZN5clang13TypeLocReader16VisitEnumTypeLocENS_11EnumTypeLocE", "clang::TypeLocReader::VisitEnumTypeLoc(clang::EnumTypeLoc)"}, + {"_ZN5clang13TypeLocReader22VisitAttributedTypeLocENS_17AttributedTypeLocE", "clang::TypeLocReader::VisitAttributedTypeLoc(clang::AttributedTypeLoc)"}, + {"_ZN5clang13TypeLocReader28VisitTemplateTypeParmTypeLocENS_23TemplateTypeParmTypeLocE", "clang::TypeLocReader::VisitTemplateTypeParmTypeLoc(clang::TemplateTypeParmTypeLoc)"}, + {"_ZN5clang13TypeLocReader33VisitSubstTemplateTypeParmTypeLocENS_28SubstTemplateTypeParmTypeLocE", "clang::TypeLocReader::VisitSubstTemplateTypeParmTypeLoc(clang::SubstTemplateTypeParmTypeLoc)"}, + {"_ZN5clang13TypeLocReader37VisitSubstTemplateTypeParmPackTypeLocENS_32SubstTemplateTypeParmPackTypeLocE", "clang::TypeLocReader::VisitSubstTemplateTypeParmPackTypeLoc(clang::SubstTemplateTypeParmPackTypeLoc)"}, + {"_ZN5clang13TypeLocReader34VisitTemplateSpecializationTypeLocENS_29TemplateSpecializationTypeLocE", "clang::TypeLocReader::VisitTemplateSpecializationTypeLoc(clang::TemplateSpecializationTypeLoc)"}, + + // {"_ZN5clang9ASTReader26GetTemplateArgumentLocInfoERNS0_11PerFileDataENS_16TemplateArgument7ArgKindERKN4llvm11SmallVectorIyLj64EEERj", + // "clang::ASTReader::GetTemplateArgumentLocInfo(clang::ASTReader::PerFileData&, clang::TemplateArgument::ArgKind, llvm::SmallVector const&, unsigned int&)"}, + // "clang::ASTReader::GetTemplateArgumentLocInfo(clang::ASTReader::PerFileData&, clang::TemplateArgument::ArgKind, llvm::SmallVector const&, unsigned int&)" was returned + + {"_ZN5clang13TypeLocReader17VisitParenTypeLocENS_12ParenTypeLocE", "clang::TypeLocReader::VisitParenTypeLoc(clang::ParenTypeLoc)"}, + {"_ZN5clang13TypeLocReader22VisitElaboratedTypeLocENS_17ElaboratedTypeLocE", "clang::TypeLocReader::VisitElaboratedTypeLoc(clang::ElaboratedTypeLoc)"}, + {"_ZN5clang13TypeLocReader29VisitInjectedClassNameTypeLocENS_24InjectedClassNameTypeLocE", "clang::TypeLocReader::VisitInjectedClassNameTypeLoc(clang::InjectedClassNameTypeLoc)"}, + {"_ZN5clang13TypeLocReader25VisitDependentNameTypeLocENS_20DependentNameTypeLocE", "clang::TypeLocReader::VisitDependentNameTypeLoc(clang::DependentNameTypeLoc)"}, + {"_ZN5clang13TypeLocReader43VisitDependentTemplateSpecializationTypeLocENS_38DependentTemplateSpecializationTypeLocE", "clang::TypeLocReader::VisitDependentTemplateSpecializationTypeLoc(clang::DependentTemplateSpecializationTypeLoc)"}, + {"_ZN5clang13TypeLocReader25VisitPackExpansionTypeLocENS_20PackExpansionTypeLocE", "clang::TypeLocReader::VisitPackExpansionTypeLoc(clang::PackExpansionTypeLoc)"}, + {"_ZN5clang13TypeLocReader25VisitObjCInterfaceTypeLocENS_20ObjCInterfaceTypeLocE", "clang::TypeLocReader::VisitObjCInterfaceTypeLoc(clang::ObjCInterfaceTypeLoc)"}, + {"_ZN5clang13TypeLocReader22VisitObjCObjectTypeLocENS_17ObjCObjectTypeLocE", "clang::TypeLocReader::VisitObjCObjectTypeLoc(clang::ObjCObjectTypeLoc)"}, + {"_ZN5clang13TypeLocReader29VisitObjCObjectPointerTypeLocENS_24ObjCObjectPointerTypeLocE", "clang::TypeLocReader::VisitObjCObjectPointerTypeLoc(clang::ObjCObjectPointerTypeLoc)"}, + {"_ZNK5clang9ASTReader9GetTypeIDENS_8QualTypeE", "clang::ASTReader::GetTypeID(clang::QualType) const"}, + {"_ZNK5clang9ASTReader10GetTypeIdxENS_8QualTypeE", "clang::ASTReader::GetTypeIdx(clang::QualType) const"}, + {"_ZNK5clang9ASTReader28getTotalNumCXXBaseSpecifiersEv", "clang::ASTReader::getTotalNumCXXBaseSpecifiers() const"}, + + // {"_ZN5clang9ASTReader23ReadTemplateArgumentLocERNS0_11PerFileDataERKN4llvm11SmallVectorIyLj64EEERj", + // "clang::ASTReader::ReadTemplateArgumentLoc(clang::ASTReader::PerFileData&, llvm::SmallVector const&, unsigned int&)"}, + // "clang::ASTReader::ReadTemplateArgumentLoc(clang::ASTReader::PerFileData&, llvm::SmallVector const&, unsigned int&)" was returned + + + // {"_ZThn16_N5clang9ASTReader15GetExternalDeclEj", + // "non-virtual thunk to clang::ASTReader::GetExternalDecl(unsigned int)"}, + // "virtual function non-virtual override offset : -16 clang::ASTReader::GetExternalDecl(unsigned int)" was returned + + {"_ZN5clang9ASTReader15GetExternalDeclEj", "clang::ASTReader::GetExternalDecl(unsigned int)"}, + {"_ZN5clang9ASTReader26GetCXXBaseSpecifiersOffsetEj", "clang::ASTReader::GetCXXBaseSpecifiersOffset(unsigned int)"}, + + // {"_ZThn16_N5clang9ASTReader28GetExternalCXXBaseSpecifiersEy", + // "non-virtual thunk to clang::ASTReader::GetExternalCXXBaseSpecifiers(unsigned long long)"}, + // "virtual function non-virtual override offset : -16 clang::ASTReader::GetExternalCXXBaseSpecifiers(unsigned long long)" was returned + + {"_ZN5clang9ASTReader28GetExternalCXXBaseSpecifiersEy", "clang::ASTReader::GetExternalCXXBaseSpecifiers(unsigned long long)"}, + + // {"_ZN5clang9ASTReader20ReadCXXBaseSpecifierERNS0_11PerFileDataERKN4llvm11SmallVectorIyLj64EEERj", + // "clang::ASTReader::ReadCXXBaseSpecifier(clang::ASTReader::PerFileData&, llvm::SmallVector const&, unsigned int&)"}, + // "clang::ASTReader::ReadCXXBaseSpecifier(clang::ASTReader::PerFileData&, llvm::SmallVector const&, unsigned int&)" was returned + + + // {"_ZThn16_N5clang9ASTReader19GetExternalDeclStmtEy", + // "non-virtual thunk to clang::ASTReader::GetExternalDeclStmt(unsigned long long)"}, + // "virtual function non-virtual override offset : -16 clang::ASTReader::GetExternalDeclStmt(unsigned long long)" was returned + + {"_ZN5clang9ASTReader19GetExternalDeclStmtEy", "clang::ASTReader::GetExternalDeclStmt(unsigned long long)"}, + {"_ZN5clang9ASTReader18ClearSwitchCaseIDsEv", "clang::ASTReader::ClearSwitchCaseIDs()"}, + + // {"_ZThn16_N5clang9ASTReader24FindExternalLexicalDeclsEPKNS_11DeclContextEPFbNS_4Decl4KindEERN4llvm15SmallVectorImplIPS4_EE", + // "non-virtual thunk to clang::ASTReader::FindExternalLexicalDecls(clang::DeclContext const*, bool (*)(clang::Decl::Kind), llvm::SmallVectorImpl&)"}, + // "virtual function non-virtual override offset : -16 clang::ASTReader::FindExternalLexicalDecls(clang::DeclContext const*, bool (*)(clang::Decl::Kind), llvm::SmallVectorImpl&)" was returned + + + // {"_ZN5clang9ASTReader24FindExternalLexicalDeclsEPKNS_11DeclContextEPFbNS_4Decl4KindEERN4llvm15SmallVectorImplIPS4_EE", + // "clang::ASTReader::FindExternalLexicalDecls(clang::DeclContext const*, bool (*)(clang::Decl::Kind), llvm::SmallVectorImpl&)"}, + // "clang::ASTReader::FindExternalLexicalDecls(clang::DeclContext const*, bool (*)(clang::Decl::Kind), llvm::SmallVectorImpl&)" was returned + + + // {"_ZThn16_N5clang9ASTReader30FindExternalVisibleDeclsByNameEPKNS_11DeclContextENS_15DeclarationNameE", + // "non-virtual thunk to clang::ASTReader::FindExternalVisibleDeclsByName(clang::DeclContext const*, clang::DeclarationName)"}, + // "virtual function non-virtual override offset : -16 clang::ASTReader::FindExternalVisibleDeclsByName(clang::DeclContext const*, clang::DeclarationName)" was returned + + {"_ZN5clang9ASTReader30FindExternalVisibleDeclsByNameEPKNS_11DeclContextENS_15DeclarationNameE", "clang::ASTReader::FindExternalVisibleDeclsByName(clang::DeclContext const*, clang::DeclarationName)"}, + + // {"_ZThn16_N5clang9ASTReader23MaterializeVisibleDeclsEPKNS_11DeclContextE", + // "non-virtual thunk to clang::ASTReader::MaterializeVisibleDecls(clang::DeclContext const*)"}, + // "virtual function non-virtual override offset : -16 clang::ASTReader::MaterializeVisibleDecls(clang::DeclContext const*)" was returned + + {"_ZN5clang9ASTReader23MaterializeVisibleDeclsEPKNS_11DeclContextE", "clang::ASTReader::MaterializeVisibleDecls(clang::DeclContext const*)"}, + {"_ZN5clang9ASTReader30PassInterestingDeclsToConsumerEv", "clang::ASTReader::PassInterestingDeclsToConsumer()"}, + + // {"_ZThn16_N5clang9ASTReader20StartTranslationUnitEPNS_11ASTConsumerE", + // "non-virtual thunk to clang::ASTReader::StartTranslationUnit(clang::ASTConsumer*)"}, + // "virtual function non-virtual override offset : -16 clang::ASTReader::StartTranslationUnit(clang::ASTConsumer*)" was returned + + {"_ZN5clang9ASTReader20StartTranslationUnitEPNS_11ASTConsumerE", "clang::ASTReader::StartTranslationUnit(clang::ASTConsumer*)"}, + + // {"_ZThn16_N5clang9ASTReader10PrintStatsEv", + // "non-virtual thunk to clang::ASTReader::PrintStats()"}, + // "virtual function non-virtual override offset : -16 clang::ASTReader::PrintStats()" was returned + + {"_ZN5clang9ASTReader10PrintStatsEv", "clang::ASTReader::PrintStats()"}, + + // {"_ZThn16_N5clang9ASTReader14InitializeSemaERNS_4SemaE", + // "non-virtual thunk to clang::ASTReader::InitializeSema(clang::Sema&)"}, + // "virtual function non-virtual override offset : -16 clang::ASTReader::InitializeSema(clang::Sema&)" was returned + + {"_ZN5clang9ASTReader14InitializeSemaERNS_4SemaE", "clang::ASTReader::InitializeSema(clang::Sema&)"}, + {"_ZN5clang9ASTReader14DecodeSelectorEj", "clang::ASTReader::DecodeSelector(unsigned int)"}, + {"_ZN5clang9ASTReader3getEPKcS2_", "clang::ASTReader::get(char const*, char const*)"}, + {"_ZN5clang21ASTIdentifierIteratorC1ERKNS_9ASTReaderE", "clang::ASTIdentifierIterator::ASTIdentifierIterator(clang::ASTReader const&)"}, + {"_ZN5clang21ASTIdentifierIteratorC2ERKNS_9ASTReaderE", "clang::ASTIdentifierIterator::ASTIdentifierIterator(clang::ASTReader const&)"}, + {"_ZN5clang21ASTIdentifierIterator4NextEv", "clang::ASTIdentifierIterator::Next()"}, + + // {"_ZThn32_NK5clang9ASTReader14getIdentifiersEv", + // "non-virtual thunk to clang::ASTReader::getIdentifiers() const"}, + // "virtual function non-virtual override offset : -32 clang::ASTReader::getIdentifiers() const" was returned + + {"_ZNK5clang9ASTReader14getIdentifiersEv", "clang::ASTReader::getIdentifiers() const"}, + + // {"_ZThn16_N5clang9ASTReader14ReadMethodPoolENS_8SelectorE", + // "non-virtual thunk to clang::ASTReader::ReadMethodPool(clang::Selector)"}, + // "virtual function non-virtual override offset : -16 clang::ASTReader::ReadMethodPool(clang::Selector)" was returned + + {"_ZN5clang9ASTReader14ReadMethodPoolENS_8SelectorE", "clang::ASTReader::ReadMethodPool(clang::Selector)"}, + {"_ZN5clang9ASTReader12LoadSelectorENS_8SelectorE", "clang::ASTReader::LoadSelector(clang::Selector)"}, + {"_ZN5clang9ASTReader17SetIdentifierInfoEjPNS_14IdentifierInfoE", "clang::ASTReader::SetIdentifierInfo(unsigned int, clang::IdentifierInfo*)"}, + {"_ZN5clang9ASTReader23SetGloballyVisibleDeclsEPNS_14IdentifierInfoERKN4llvm15SmallVectorImplIjEEb", "clang::ASTReader::SetGloballyVisibleDecls(clang::IdentifierInfo*, llvm::SmallVectorImpl const&, bool)"}, + + // {"_ZThn48_N5clang9ASTReader13ReadSLocEntryEj", + // "non-virtual thunk to clang::ASTReader::ReadSLocEntry(unsigned int)"}, + // "virtual function non-virtual override offset : -48 clang::ASTReader::ReadSLocEntry(unsigned int)" was returned + + {"_ZN5clang9ASTReader13ReadSLocEntryEj", "clang::ASTReader::ReadSLocEntry(unsigned int)"}, + {"_ZN12_GLOBAL__N_122ASTSelectorLookupTrait7ReadKeyEPKhj", "(anonymous namespace)::ASTSelectorLookupTrait::ReadKey(unsigned char const*, unsigned int)"}, + + // {"_ZThn16_N5clang9ASTReader19GetExternalSelectorEj", + // "non-virtual thunk to clang::ASTReader::GetExternalSelector(unsigned int)"}, + // "virtual function non-virtual override offset : -16 clang::ASTReader::GetExternalSelector(unsigned int)" was returned + + {"_ZN5clang9ASTReader19GetExternalSelectorEj", "clang::ASTReader::GetExternalSelector(unsigned int)"}, + + // {"_ZThn16_N5clang9ASTReader23GetNumExternalSelectorsEv", + // "non-virtual thunk to clang::ASTReader::GetNumExternalSelectors()"}, + // "virtual function non-virtual override offset : -16 clang::ASTReader::GetNumExternalSelectors()" was returned + + {"_ZN5clang9ASTReader23GetNumExternalSelectorsEv", "clang::ASTReader::GetNumExternalSelectors()"}, + + // {"_ZN5clang9ASTReader19ReadDeclarationNameERKN4llvm11SmallVectorIyLj64EEERj", + // "clang::ASTReader::ReadDeclarationName(llvm::SmallVector const&, unsigned int&)"}, + // "clang::ASTReader::ReadDeclarationName(llvm::SmallVector const&, unsigned int&)" was returned + + + // {"_ZN5clang9ASTReader22ReadDeclarationNameLocERNS0_11PerFileDataERNS_18DeclarationNameLocENS_15DeclarationNameERKN4llvm11SmallVectorIyLj64EEERj", + // "clang::ASTReader::ReadDeclarationNameLoc(clang::ASTReader::PerFileData&, clang::DeclarationNameLoc&, clang::DeclarationName, llvm::SmallVector const&, unsigned int&)"}, + // "clang::ASTReader::ReadDeclarationNameLoc(clang::ASTReader::PerFileData&, clang::DeclarationNameLoc&, clang::DeclarationName, llvm::SmallVector const&, unsigned int&)" was returned + + + // {"_ZN5clang9ASTReader23ReadDeclarationNameInfoERNS0_11PerFileDataERNS_19DeclarationNameInfoERKN4llvm11SmallVectorIyLj64EEERj", + // "clang::ASTReader::ReadDeclarationNameInfo(clang::ASTReader::PerFileData&, clang::DeclarationNameInfo&, llvm::SmallVector const&, unsigned int&)"}, + // "clang::ASTReader::ReadDeclarationNameInfo(clang::ASTReader::PerFileData&, clang::DeclarationNameInfo&, llvm::SmallVector const&, unsigned int&)" was returned + + + // {"_ZN5clang9ASTReader17ReadQualifierInfoERNS0_11PerFileDataERNS_13QualifierInfoERKN4llvm11SmallVectorIyLj64EEERj", + // "clang::ASTReader::ReadQualifierInfo(clang::ASTReader::PerFileData&, clang::QualifierInfo&, llvm::SmallVector const&, unsigned int&)"}, + // "clang::ASTReader::ReadQualifierInfo(clang::ASTReader::PerFileData&, clang::QualifierInfo&, llvm::SmallVector const&, unsigned int&)" was returned + + + // {"_ZN5clang9ASTReader25ReadTemplateParameterListERNS0_11PerFileDataERKN4llvm11SmallVectorIyLj64EEERj", + // "clang::ASTReader::ReadTemplateParameterList(clang::ASTReader::PerFileData&, llvm::SmallVector const&, unsigned int&)"}, + // "clang::ASTReader::ReadTemplateParameterList(clang::ASTReader::PerFileData&, llvm::SmallVector const&, unsigned int&)" was returned + + + // {"_ZN5clang9ASTReader10ReadAPSIntERKN4llvm11SmallVectorIyLj64EEERj", + // "clang::ASTReader::ReadAPSInt(llvm::SmallVector const&, unsigned int&)"}, + // "clang::ASTReader::ReadAPSInt(llvm::SmallVector const&, unsigned int&)" was returned + + + // {"_ZN5clang9ASTReader17ReadUnresolvedSetERNS_17UnresolvedSetImplERKN4llvm11SmallVectorIyLj64EEERj", + // "clang::ASTReader::ReadUnresolvedSet(clang::UnresolvedSetImpl&, llvm::SmallVector const&, unsigned int&)"}, + // "clang::ASTReader::ReadUnresolvedSet(clang::UnresolvedSetImpl&, llvm::SmallVector const&, unsigned int&)" was returned + + + // {"_ZN5clang9ASTReader23ReadCXXCtorInitializersERNS0_11PerFileDataERKN4llvm11SmallVectorIyLj64EEERj", + // "clang::ASTReader::ReadCXXCtorInitializers(clang::ASTReader::PerFileData&, llvm::SmallVector const&, unsigned int&)"}, + // "clang::ASTReader::ReadCXXCtorInitializers(clang::ASTReader::PerFileData&, llvm::SmallVector const&, unsigned int&)" was returned + + + // {"_ZN5clang9ASTReader11ReadAPFloatERKN4llvm11SmallVectorIyLj64EEERj", + // "clang::ASTReader::ReadAPFloat(llvm::SmallVector const&, unsigned int&)"}, + // "clang::ASTReader::ReadAPFloat(llvm::SmallVector const&, unsigned int&)" was returned + + + // {"_ZN5clang9ASTReader10ReadStringERKN4llvm11SmallVectorIyLj64EEERj", + // "clang::ASTReader::ReadString(llvm::SmallVector const&, unsigned int&)"}, + // "clang::ASTReader::ReadString(llvm::SmallVector const&, unsigned int&)" was returned + + + // {"_ZN5clang9ASTReader16ReadCXXTemporaryERKN4llvm11SmallVectorIyLj64EEERj", + // "clang::ASTReader::ReadCXXTemporary(llvm::SmallVector const&, unsigned int&)"}, + // "clang::ASTReader::ReadCXXTemporary(llvm::SmallVector const&, unsigned int&)" was returned + + {"_ZN5clang9ASTReader18getIdentifierTableEv", "clang::ASTReader::getIdentifierTable()"}, + {"_ZN5clang9ASTReader18RecordSwitchCaseIDEPNS_10SwitchCaseEj", "clang::ASTReader::RecordSwitchCaseID(clang::SwitchCase*, unsigned int)"}, + {"_ZN5clang9ASTReader19getSwitchCaseWithIDEj", "clang::ASTReader::getSwitchCaseWithID(unsigned int)"}, + {"_ZN5clang9ASTReader15RecordLabelStmtEPNS_9LabelStmtEj", "clang::ASTReader::RecordLabelStmt(clang::LabelStmt*, unsigned int)"}, + {"_ZN5clang9ASTReader10SetLabelOfEPNS_8GotoStmtEj", "clang::ASTReader::SetLabelOf(clang::GotoStmt*, unsigned int)"}, + {"_ZN5clang9ASTReader10SetLabelOfEPNS_13AddrLabelExprEj", "clang::ASTReader::SetLabelOf(clang::AddrLabelExpr*, unsigned int)"}, + + // {"_ZThn16_N5clang9ASTReader21FinishedDeserializingEv", + // "non-virtual thunk to clang::ASTReader::FinishedDeserializing()"}, + // "virtual function non-virtual override offset : -16 clang::ASTReader::FinishedDeserializing()" was returned + + {"_ZN5clang9ASTReader21FinishedDeserializingEv", "clang::ASTReader::FinishedDeserializing()"}, + {"_ZN5clang9ASTReaderC1ERNS_12PreprocessorEPNS_10ASTContextEPKcbb", "clang::ASTReader::ASTReader(clang::Preprocessor&, clang::ASTContext*, char const*, bool, bool)"}, + {"_ZN5clang9ASTReaderC2ERNS_12PreprocessorEPNS_10ASTContextEPKcbb", "clang::ASTReader::ASTReader(clang::Preprocessor&, clang::ASTContext*, char const*, bool, bool)"}, + {"_ZN5clang9ASTReaderC1ERNS_13SourceManagerERNS_11FileManagerERNS_10DiagnosticEPKcbb", "clang::ASTReader::ASTReader(clang::SourceManager&, clang::FileManager&, clang::Diagnostic&, char const*, bool, bool)"}, + {"_ZN5clang9ASTReaderC2ERNS_13SourceManagerERNS_11FileManagerERNS_10DiagnosticEPKcbb", "clang::ASTReader::ASTReader(clang::SourceManager&, clang::FileManager&, clang::Diagnostic&, char const*, bool, bool)"}, + + // {"_ZThn8_N5clang9ASTReaderD0Ev", + // "non-virtual thunk to clang::ASTReader::~ASTReader()"}, + // "virtual function non-virtual override offset : -8 clang::ASTReader::~ASTReader()" was returned + + {"_ZN5clang9ASTReaderD0Ev", "clang::ASTReader::~ASTReader()"}, + + // {"_ZThn16_N5clang9ASTReaderD0Ev", + // "non-virtual thunk to clang::ASTReader::~ASTReader()"}, + // "virtual function non-virtual override offset : -16 clang::ASTReader::~ASTReader()" was returned + + + // {"_ZThn32_N5clang9ASTReaderD0Ev", + // "non-virtual thunk to clang::ASTReader::~ASTReader()"}, + // "virtual function non-virtual override offset : -32 clang::ASTReader::~ASTReader()" was returned + + + // {"_ZThn40_N5clang9ASTReaderD0Ev", + // "non-virtual thunk to clang::ASTReader::~ASTReader()"}, + // "virtual function non-virtual override offset : -40 clang::ASTReader::~ASTReader()" was returned + + + // {"_ZThn48_N5clang9ASTReaderD0Ev", + // "non-virtual thunk to clang::ASTReader::~ASTReader()"}, + // "virtual function non-virtual override offset : -48 clang::ASTReader::~ASTReader()" was returned + + {"_ZN5clang9ASTReaderD1Ev", "clang::ASTReader::~ASTReader()"}, + + // {"_ZThn8_N5clang9ASTReaderD1Ev", + // "non-virtual thunk to clang::ASTReader::~ASTReader()"}, + // "virtual function non-virtual override offset : -8 clang::ASTReader::~ASTReader()" was returned + + + // {"_ZThn16_N5clang9ASTReaderD1Ev", + // "non-virtual thunk to clang::ASTReader::~ASTReader()"}, + // "virtual function non-virtual override offset : -16 clang::ASTReader::~ASTReader()" was returned + + + // {"_ZThn32_N5clang9ASTReaderD1Ev", + // "non-virtual thunk to clang::ASTReader::~ASTReader()"}, + // "virtual function non-virtual override offset : -32 clang::ASTReader::~ASTReader()" was returned + + + // {"_ZThn40_N5clang9ASTReaderD1Ev", + // "non-virtual thunk to clang::ASTReader::~ASTReader()"}, + // "virtual function non-virtual override offset : -40 clang::ASTReader::~ASTReader()" was returned + + + // {"_ZThn48_N5clang9ASTReaderD1Ev", + // "non-virtual thunk to clang::ASTReader::~ASTReader()"}, + // "virtual function non-virtual override offset : -48 clang::ASTReader::~ASTReader()" was returned + + {"_ZN5clang9ASTReaderD2Ev", "clang::ASTReader::~ASTReader()"}, + {"_ZN5clang9ASTReader11PerFileDataD1Ev", "clang::ASTReader::PerFileData::~PerFileData()"}, + {"_ZN5clang9ASTReader11PerFileDataC2ENS0_11ASTFileTypeE", "clang::ASTReader::PerFileData::PerFileData(clang::ASTReader::ASTFileType)"}, + {"_ZN5clang9ASTReader11PerFileDataD2Ev", "clang::ASTReader::PerFileData::~PerFileData()"}, + {"_ZN12_GLOBAL__N_129ASTDeclContextNameLookupTrait7ReadKeyEPKhj", "(anonymous namespace)::ASTDeclContextNameLookupTrait::ReadKey(unsigned char const*, unsigned int)"}, + {"_ZN12_GLOBAL__N_112ASTStatCacheD1Ev", "(anonymous namespace)::ASTStatCache::~ASTStatCache()"}, + {"_ZN12_GLOBAL__N_112ASTStatCacheD0Ev", "(anonymous namespace)::ASTStatCache::~ASTStatCache()"}, + {"_ZN12_GLOBAL__N_112ASTStatCache7getStatEPKcR4statPi", "(anonymous namespace)::ASTStatCache::getStat(char const*, stat&, int*)"}, + + // {"_ZSt14set_differenceIPN4llvm9StringRefES2_St20back_insert_iteratorISt6vectorIS1_SaIS1_EEEET1_T_S9_T0_SA_S8_", + // "std::back_insert_iterator>> std::set_difference>>>(llvm::StringRef*, llvm::StringRef*, llvm::StringRef*, llvm::StringRef*, std::back_insert_iterator>>)"}, + // got error + + {"_ZN4llvm15BitstreamCursor10ReadRecordEjRNS_15SmallVectorImplIyEEPPKcPj", "llvm::BitstreamCursor::ReadRecord(unsigned int, llvm::SmallVectorImpl&, char const**, unsigned int*)"}, + {"_ZNSt6vectorIN5clang9LineEntryESaIS1_EE7reserveEm", "std::vector>::reserve(unsigned long)"}, + {"_ZN4llvm15BitstreamCursoraSERKS0_", "llvm::BitstreamCursor::operator=(llvm::BitstreamCursor const&)"}, + {"_ZN4llvm15BitstreamCursor9SkipBlockEv", "llvm::BitstreamCursor::SkipBlock()"}, + {"_ZN4llvm15BitstreamCursor13EnterSubBlockEjPj", "llvm::BitstreamCursor::EnterSubBlock(unsigned int, unsigned int*)"}, + {"_ZN4llvm15BitstreamCursor14ReadSubBlockIDEv", "llvm::BitstreamCursor::ReadSubBlockID()"}, + {"_ZN4llvm15BitstreamCursor16ReadAbbrevRecordEv", "llvm::BitstreamCursor::ReadAbbrevRecord()"}, + {"_ZN4llvm15SmallVectorImplIyE4swapERS1_", "llvm::SmallVectorImpl::swap(llvm::SmallVectorImpl&)"}, + + // {"_ZN4llvm15SmallVectorImplIyE6insertIPyEES3_S3_T_S4_", + // "unsigned long long* llvm::SmallVectorImpl::insert(unsigned long long*, unsigned long long*, unsigned long long*)"}, + // got error + + {"_ZN4llvm15SmallVectorImplIPN5clang15MacroDefinitionEE6resizeEj", "llvm::SmallVectorImpl::resize(unsigned int)"}, + {"_ZN4llvm15SmallVectorImplIN5clang8SelectorEE6resizeEj", "llvm::SmallVectorImpl::resize(unsigned int)"}, + {"_ZN5clang22OnDiskChainedHashTableINS_24ASTIdentifierLookupTraitEE4findERKSt4pairIPKcjEPS1_", "clang::OnDiskChainedHashTable::find(std::pair const&, clang::ASTIdentifierLookupTrait*)"}, + {"_ZN4llvm15BitstreamCursor4ReadEj", "llvm::BitstreamCursor::Read(unsigned int)"}, + {"_ZN4llvm15BitstreamCursor18ReadBlockInfoBlockEv", "llvm::BitstreamCursor::ReadBlockInfoBlock()"}, + {"_ZN4llvm15SmallVectorImplIN5clang9ASTReader15DeclContextInfoEE4swapERS4_", "llvm::SmallVectorImpl::swap(llvm::SmallVectorImpl&)"}, + {"_ZN5clang14TypeLocVisitorINS_13TypeLocReaderEvE5VisitENS_7TypeLocE", "clang::TypeLocVisitor::Visit(clang::TypeLoc)"}, + + // {"_ZN5clang13serialization10MakeTypeIDISt9binder1stISt16const_mem_fun1_tINS0_7TypeIdxENS_9ASTReaderENS_8QualTypeEEEEEjS6_T_", + // "unsigned int clang::serialization::MakeTypeID>>(clang::QualType, std::binder1st>)"}, + // "unsigned int clang::serialization::MakeTypeID>>(clang::QualType, clang::serialization::TypeIdx)" was returned + + {"_ZN4llvm8DenseMapIN5clang8SelectorENS1_14SourceLocationENS_12DenseMapInfoIS2_EENS4_IS3_EEE6insertERKSt4pairIS2_S3_E", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZNSt5dequeISt4pairIPN5clang9ValueDeclENS1_14SourceLocationEESaIS5_EE9push_backERKS5_", "std::deque, std::allocator>>::push_back(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPN5clang14IdentifierInfoENS1_4Sema8WeakInfoENS_12DenseMapInfoIS3_EENS6_IS5_EEE6insertERKSt4pairIS3_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN5clang17ASTReaderListener19ReadLanguageOptionsERKNS_11LangOptionsE", "clang::ASTReaderListener::ReadLanguageOptions(clang::LangOptions const&)"}, + {"_ZN5clang17ASTReaderListener16ReadTargetTripleEN4llvm9StringRefE", "clang::ASTReaderListener::ReadTargetTriple(llvm::StringRef)"}, + + // {"_ZN5clang17ASTReaderListener20ReadPredefinesBufferERKN4llvm11SmallVectorINS_18PCHPredefinesBlockELj2EEENS1_9StringRefERSs", + // "clang::ASTReaderListener::ReadPredefinesBuffer(llvm::SmallVector const&, llvm::StringRef, std::string&)"}, + // "clang::ASTReaderListener::ReadPredefinesBuffer(llvm::SmallVector const&, llvm::StringRef, std::string&)" was returned + + {"_ZN5clang17ASTReaderListener18ReadHeaderFileInfoERKNS_14HeaderFileInfoEj", "clang::ASTReaderListener::ReadHeaderFileInfo(clang::HeaderFileInfo const&, unsigned int)"}, + {"_ZN5clang17ASTReaderListener11ReadCounterEj", "clang::ASTReaderListener::ReadCounter(unsigned int)"}, + {"_ZN5clang12PCHValidatorD1Ev", "clang::PCHValidator::~PCHValidator()"}, + {"_ZN5clang12PCHValidatorD0Ev", "clang::PCHValidator::~PCHValidator()"}, + {"_ZN5clang9ASTReader20StartedDeserializingEv", "clang::ASTReader::StartedDeserializing()"}, + {"_ZN5clang9ASTReader10ForgetSemaEv", "clang::ASTReader::ForgetSema()"}, + {"_ZN5clang9ASTReader3getEN4llvm9StringRefE", "clang::ASTReader::get(llvm::StringRef)"}, + {"_ZN5clang9ASTReader13GetIdentifierEj", "clang::ASTReader::GetIdentifier(unsigned int)"}, + + // {"_ZThn16_N5clang9ASTReader20StartedDeserializingEv", + // "non-virtual thunk to clang::ASTReader::StartedDeserializing()"}, + // "virtual function non-virtual override offset : -16 clang::ASTReader::StartedDeserializing()" was returned + + + // {"_ZThn16_N5clang9ASTReader10ForgetSemaEv", + // "non-virtual thunk to clang::ASTReader::ForgetSema()"}, + // "virtual function non-virtual override offset : -16 clang::ASTReader::ForgetSema()" was returned + + + // {"_ZThn32_N5clang9ASTReader3getEN4llvm9StringRefE", + // "non-virtual thunk to clang::ASTReader::get(llvm::StringRef)"}, + // "virtual function non-virtual override offset : -32 clang::ASTReader::get(llvm::StringRef)" was returned + + + // {"_ZThn40_N5clang9ASTReader13GetIdentifierEj", + // "non-virtual thunk to clang::ASTReader::GetIdentifier(unsigned int)"}, + // "virtual function non-virtual override offset : -40 clang::ASTReader::GetIdentifier(unsigned int)" was returned + + {"_ZN5clang21ASTIdentifierIteratorD1Ev", "clang::ASTIdentifierIterator::~ASTIdentifierIterator()"}, + {"_ZN5clang21ASTIdentifierIteratorD0Ev", "clang::ASTIdentifierIterator::~ASTIdentifierIterator()"}, + {"_ZNSt5dequeIN5clang9ASTReader21PendingIdentifierInfoESaIS2_EED2Ev", "std::deque>::~deque()"}, + {"_ZNSt5dequeIN5clang9ASTReader21PendingIdentifierInfoESaIS2_EE19_M_destroy_data_auxESt15_Deque_iteratorIS2_RS2_PS2_ES8_", "std::deque>::_M_destroy_data_aux(std::_Deque_iterator, std::_Deque_iterator)"}, + {"_ZNSt11_Deque_baseIPN5clang4DeclESaIS2_EE17_M_initialize_mapEm", "std::_Deque_base>::_M_initialize_map(unsigned long)"}, + {"_ZNSt11_Deque_baseIN5clang9ASTReader21PendingIdentifierInfoESaIS2_EE17_M_initialize_mapEm", "std::_Deque_base>::_M_initialize_map(unsigned long)"}, + {"_ZNSt8_Rb_treeIjSt4pairIKjPN5clang13AddrLabelExprEESt10_Select1stIS5_ESt4lessIjESaIS5_EE5eraseESt17_Rb_tree_iteratorIS5_ESD_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::erase(std::_Rb_tree_iterator>, std::_Rb_tree_iterator>)"}, + {"_ZNSt8_Rb_treeIjSt4pairIKjPN5clang13AddrLabelExprEESt10_Select1stIS5_ESt4lessIjESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZNSt8_Rb_treeIjSt4pairIKjPN5clang8GotoStmtEESt10_Select1stIS5_ESt4lessIjESaIS5_EE5eraseESt17_Rb_tree_iteratorIS5_ESD_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::erase(std::_Rb_tree_iterator>, std::_Rb_tree_iterator>)"}, + {"_ZNSt8_Rb_treeIjSt4pairIKjPN5clang8GotoStmtEESt10_Select1stIS5_ESt4lessIjESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZNSt8_Rb_treeIjSt4pairIKjPN5clang9LabelStmtEESt10_Select1stIS5_ESt4lessIjESaIS5_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS5_ERKS5_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIjSt4pairIKjPN5clang9LabelStmtEESt10_Select1stIS5_ESt4lessIjESaIS5_EE16_M_insert_uniqueERKS5_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZNSt8_Rb_treeIjSt4pairIKjPN5clang10SwitchCaseEESt10_Select1stIS5_ESt4lessIjESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZNSt8_Rb_treeIjSt4pairIKjPN5clang10SwitchCaseEESt10_Select1stIS5_ESt4lessIjESaIS5_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS5_ERKS5_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIjSt4pairIKjPN5clang10SwitchCaseEESt10_Select1stIS5_ESt4lessIjESaIS5_EE16_M_insert_uniqueERKS5_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZNSt5dequeIN5clang9ASTReader21PendingIdentifierInfoESaIS2_EE16_M_push_back_auxERKS2_", "std::deque>::_M_push_back_aux(clang::ASTReader::PendingIdentifierInfo const&)"}, + {"_ZNSt5dequeIN5clang9ASTReader21PendingIdentifierInfoESaIS2_EE17_M_reallocate_mapEmb", "std::deque>::_M_reallocate_map(unsigned long, bool)"}, + {"_ZN4llvm8DenseMapIPN5clang13CXXRecordDeclEbNS_12DenseMapInfoIS3_EENS4_IbEEE16InsertIntoBucketERKS3_RKbPSt4pairIS3_bE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::CXXRecordDecl* const&, bool const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPN5clang13CXXRecordDeclEbNS_12DenseMapInfoIS3_EENS4_IbEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPN5clang14IdentifierInfoENS1_4Sema8WeakInfoENS_12DenseMapInfoIS3_EENS6_IS5_EEE16InsertIntoBucketERKS3_RKS5_PSt4pairIS3_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::IdentifierInfo* const&, clang::Sema::WeakInfo const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPN5clang14IdentifierInfoENS1_4Sema8WeakInfoENS_12DenseMapInfoIS3_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNSt5dequeISt4pairIPN5clang9ValueDeclENS1_14SourceLocationEESaIS5_EE17_M_reallocate_mapEmb", "std::deque, std::allocator>>::_M_reallocate_map(unsigned long, bool)"}, + {"_ZN4llvm8DenseMapIN5clang8SelectorENS1_14SourceLocationENS_12DenseMapInfoIS2_EENS4_IS3_EEE16InsertIntoBucketERKS2_RKS3_PSt4pairIS2_S3_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::Selector const&, clang::SourceLocation const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIN5clang8SelectorENS1_14SourceLocationENS_12DenseMapInfoIS2_EENS4_IS3_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIN5clang15DeclarationNameEPNS1_9NamedDeclENS_12DenseMapInfoIS2_EENS5_IS4_EEE16InsertIntoBucketERKS2_RKS4_PSt4pairIS2_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::DeclarationName const&, clang::NamedDecl* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIN5clang15DeclarationNameEPNS1_9NamedDeclENS_12DenseMapInfoIS2_EENS5_IS4_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm15SmallVectorImplIN5clang9ASTReader15DeclContextInfoEEaSERKS4_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang9ASTReader15DeclContextInfoELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN4llvm8DenseMapIN5clang8QualTypeENS1_13serialization7TypeIdxENS3_26UnsafeQualTypeDenseMapInfoENS_12DenseMapInfoIS4_EEE16InsertIntoBucketERKS2_RKS4_PSt4pairIS2_S4_E", "llvm::DenseMap>::InsertIntoBucket(clang::QualType const&, clang::serialization::TypeIdx const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIN5clang8QualTypeENS1_13serialization7TypeIdxENS3_26UnsafeQualTypeDenseMapInfoENS_12DenseMapInfoIS4_EEE4growEj", "llvm::DenseMap>::grow(unsigned int)"}, + {"_ZN5clang24ASTIdentifierLookupTrait8ReadDataERKSt4pairIPKcjEPKhj", "clang::ASTIdentifierLookupTrait::ReadData(std::pair const&, unsigned char const*, unsigned int)"}, + {"_ZNSt6vectorIPN5clang4DeclESaIS2_EE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPS2_S4_EEmRKS2_", "std::vector>::_M_fill_insert(__gnu_cxx::__normal_iterator>>, unsigned long, clang::Decl* const&)"}, + {"_ZNSt6vectorIN5clang8QualTypeESaIS1_EE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPS1_S3_EEmRKS1_", "std::vector>::_M_fill_insert(__gnu_cxx::__normal_iterator>>, unsigned long, clang::QualType const&)"}, + {"_ZNSt6vectorIPN5clang14IdentifierInfoESaIS2_EE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPS2_S4_EEmRKS2_", "std::vector>::_M_fill_insert(__gnu_cxx::__normal_iterator>>, unsigned long, clang::IdentifierInfo* const&)"}, + + // {"_ZN4llvm8DenseMapIjSt4pairIPN5clang9ASTReader11PerFileDataEyENS_12DenseMapInfoIjEENS7_IS6_EEE16InsertIntoBucketERKjRKS6_PS1_IjS6_E", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(unsigned int const&, std::pair const&, std::pair>*)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(unsigned int const&, std::pair const&, std::pair*>)" was returned + + {"_ZN4llvm8DenseMapIjSt4pairIPN5clang9ASTReader11PerFileDataEyENS_12DenseMapInfoIjEENS7_IS6_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)"}, + + // {"_ZN4llvm8DenseMapIjNS_11SmallVectorISt4pairIPN5clang9ASTReader11PerFileDataEyELj2EEENS_12DenseMapInfoIjEENS9_IS8_EEE16FindAndConstructERKj", + // "llvm::DenseMap, 2u>, llvm::DenseMapInfo, llvm::DenseMapInfo, 2u>>>::FindAndConstruct(unsigned int const&)"}, + // "llvm::DenseMap, 2>, llvm::DenseMapInfo, llvm::DenseMapInfo, 2>>>::FindAndConstruct(unsigned int const&)" was returned + + + // {"_ZN4llvm8DenseMapIjNS_11SmallVectorISt4pairIPN5clang9ASTReader11PerFileDataEyELj2EEENS_12DenseMapInfoIjEENS9_IS8_EEE16InsertIntoBucketERKjRKS8_PS2_IjS8_E", + // "llvm::DenseMap, 2u>, llvm::DenseMapInfo, llvm::DenseMapInfo, 2u>>>::InsertIntoBucket(unsigned int const&, llvm::SmallVector, 2u> const&, std::pair, 2u>>*)"}, + // "llvm::DenseMap, 2>, llvm::DenseMapInfo, llvm::DenseMapInfo, 2>>>::InsertIntoBucket(unsigned int const&, llvm::SmallVector, 2> const&, std::pair*, 2>>)" was returned + + + // {"_ZN4llvm8DenseMapIjNS_11SmallVectorISt4pairIPN5clang9ASTReader11PerFileDataEyELj2EEENS_12DenseMapInfoIjEENS9_IS8_EEE4growEj", + // "llvm::DenseMap, 2u>, llvm::DenseMapInfo, llvm::DenseMapInfo, 2u>>>::grow(unsigned int)"}, + // "llvm::DenseMap, 2>, llvm::DenseMapInfo, llvm::DenseMapInfo, 2>>>::grow(unsigned int)" was returned + + {"_ZN4llvm15SmallVectorImplISt4pairIPN5clang9ASTReader11PerFileDataEyEEaSERKS7_", "llvm::SmallVectorImpl>::operator=(llvm::SmallVectorImpl> const&)"}, + + // {"_ZN4llvm8DenseMapIjNS_11SmallVectorIPvLj1EEENS_12DenseMapInfoIjEENS4_IS3_EEE16FindAndConstructERKj", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::FindAndConstruct(unsigned int const&)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::FindAndConstruct(unsigned int const&)" was returned + + + // {"_ZN4llvm8DenseMapIjNS_11SmallVectorIPvLj1EEENS_12DenseMapInfoIjEENS4_IS3_EEE16InsertIntoBucketERKjRKS3_PSt4pairIjS3_E", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(unsigned int const&, llvm::SmallVector const&, std::pair>*)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(unsigned int const&, llvm::SmallVector const&, std::pair>*)" was returned + + + // {"_ZN4llvm8DenseMapIjNS_11SmallVectorIPvLj1EEENS_12DenseMapInfoIjEENS4_IS3_EEE4growEj", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)" was returned + + {"_ZN4llvm15SmallVectorImplIPvEaSERKS2_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + + // {"_ZN4llvm8DenseMapIPKN5clang11DeclContextENS_11SmallVectorINS1_9ASTReader15DeclContextInfoELj1EEENS_12DenseMapInfoIS4_EENS9_IS8_EEE16FindAndConstructERKS4_", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::FindAndConstruct(clang::DeclContext const* const&)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::FindAndConstruct(clang::DeclContext const* const&)" was returned + + + // {"_ZN4llvm8DenseMapIPKN5clang11DeclContextENS_11SmallVectorINS1_9ASTReader15DeclContextInfoELj1EEENS_12DenseMapInfoIS4_EENS9_IS8_EEE16InsertIntoBucketERKS4_RKS8_PSt4pairIS4_S8_E", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(clang::DeclContext const* const&, llvm::SmallVector const&, std::pair>*)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(clang::DeclContext const* const&, llvm::SmallVector const&, std::pair>*)" was returned + + + // {"_ZN4llvm8DenseMapIPKN5clang11DeclContextENS_11SmallVectorINS1_9ASTReader15DeclContextInfoELj1EEENS_12DenseMapInfoIS4_EENS9_IS8_EEE4growEj", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)" was returned + + {"_ZN4llvm8DenseMapIPN5clang14IdentifierInfoEyNS_12DenseMapInfoIS3_EENS4_IyEEE16InsertIntoBucketERKS3_RKyPSt4pairIS3_yE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::IdentifierInfo* const&, unsigned long long const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPN5clang14IdentifierInfoEyNS_12DenseMapInfoIS3_EENS4_IyEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang18PCHPredefinesBlockELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZNSt8_Rb_treeIiSt4pairIKiiESt10_Select1stIS2_ESt4lessIiESaIS2_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS2_ERKS2_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIiSt4pairIKiiESt10_Select1stIS2_ESt4lessIiESaIS2_EE16_M_insert_uniqueERKS2_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + + // {"_ZSt16__introsort_loopIPN4llvm9StringRefElEvT_S3_T0_", + // "void std::__introsort_loop(llvm::StringRef*, llvm::StringRef*, long)"}, + // got error + + + // {"_ZSt22__final_insertion_sortIPN4llvm9StringRefEEvT_S3_", + // "void std::__final_insertion_sort(llvm::StringRef*, llvm::StringRef*)"}, + // got error + + + // {"_ZSt16__insertion_sortIPN4llvm9StringRefEEvT_S3_", + // "void std::__insertion_sort(llvm::StringRef*, llvm::StringRef*)"}, + // got error + + + // {"_ZSt21__unguarded_partitionIPN4llvm9StringRefES1_ET_S3_S3_T0_", + // "llvm::StringRef* std::__unguarded_partition(llvm::StringRef*, llvm::StringRef*, llvm::StringRef)"}, + // got error + + + // {"_ZSt8__medianIN4llvm9StringRefEERKT_S4_S4_S4_", + // "llvm::StringRef const& std::__median(llvm::StringRef const&, llvm::StringRef const&, llvm::StringRef const&)"}, + // got error + + + // {"_ZSt13__heap_selectIPN4llvm9StringRefEEvT_S3_S3_", + // "void std::__heap_select(llvm::StringRef*, llvm::StringRef*, llvm::StringRef*)"}, + // got error + + + // {"_ZSt13__adjust_heapIPN4llvm9StringRefElS1_EvT_T0_S4_T1_", + // "void std::__adjust_heap(llvm::StringRef*, long, long, llvm::StringRef)"}, + // got error + + {"_ZN4llvm15SmallVectorImplIN5clang18PCHPredefinesBlockEEaSERKS3_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + {"_ZN4llvm15SmallVectorImplINS_9StringRefEEaSERKS2_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + {"_ZNSt8_Rb_treeIjSt4pairIKjPN5clang9LabelStmtEESt10_Select1stIS5_ESt4lessIjESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZN5clang18ExternalSemaSource14InitializeSemaERNS_4SemaE", "clang::ExternalSemaSource::InitializeSema(clang::Sema&)"}, + {"_ZN5clang18ExternalSemaSource10ForgetSemaEv", "clang::ExternalSemaSource::ForgetSema()"}, + {"_ZN4llvm15BitstreamReaderD2Ev", "llvm::BitstreamReader::~BitstreamReader()"}, + {"_ZN4llvm15BitstreamReader9BlockInfoD2Ev", "llvm::BitstreamReader::BlockInfo::~BlockInfo()"}, + {"_ZN4llvm15BitstreamReader20getOrCreateBlockInfoEj", "llvm::BitstreamReader::getOrCreateBlockInfo(unsigned int)"}, + + // {"_ZNSt6vectorISt4pairIjSsESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", + // "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + // "std::vector, std::allocator>::_M_insert_aux(__gnu_cxx::__normal_iterator>, std::string const&)" was returned + + {"_ZN9__gnu_cxx13new_allocatorIN4llvm15BitstreamReader9BlockInfoEE9constructEPS3_RKS3_", "__gnu_cxx::new_allocator::construct(llvm::BitstreamReader::BlockInfo*, llvm::BitstreamReader::BlockInfo const&)"}, + {"_ZNSt6vectorIN4llvm15BitstreamReader9BlockInfoESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::BitstreamReader::BlockInfo const&)"}, + + // {"_ZSt24__uninitialized_copy_auxIPN4llvm15BitstreamReader9BlockInfoES3_ET0_T_S5_S4_St12__false_type", + // "llvm::BitstreamReader::BlockInfo* std::__uninitialized_copy_aux(llvm::BitstreamReader::BlockInfo*, llvm::BitstreamReader::BlockInfo*, llvm::BitstreamReader::BlockInfo*, std::__false_type)"}, + // got error + + {"_ZNSt6vectorIPN4llvm13BitCodeAbbrevESaIS2_EEaSERKS4_", "std::vector>::operator=(std::vector> const&)"}, + + // {"_ZNSt6vectorISt4pairIjSsESaIS1_EEaSERKS3_", + // "std::vector, std::allocator>>::operator=(std::vector, std::allocator>> const&)"}, + // "std::vector, std::allocator>::operator=(std::allocator const&)" was returned + + + // {"_ZNSt6vectorISt4pairIjSsESaIS1_EEC2ERKS3_", + // "std::vector, std::allocator>>::vector(std::vector, std::allocator>> const&)"}, + // "std::vector, std::allocator>::string(std::allocator const&)" was returned + + {"_ZNSt6vectorIPN4llvm13BitCodeAbbrevESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::BitCodeAbbrev* const&)"}, + {"_ZN4llvm15BitstreamCursor9freeStateEv", "llvm::BitstreamCursor::freeState()"}, + {"_ZN5clang19FileSystemStatCacheD1Ev", "clang::FileSystemStatCache::~FileSystemStatCache()"}, + {"_ZN5clang19FileSystemStatCacheD0Ev", "clang::FileSystemStatCache::~FileSystemStatCache()"}, + {"_ZN4llvm15BitstreamCursorD2Ev", "llvm::BitstreamCursor::~BitstreamCursor()"}, + {"_ZN4llvm23SmallVectorTemplateBaseINS_15BitCodeAbbrevOpELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN4llvm15BitstreamCursor13PopBlockScopeEv", "llvm::BitstreamCursor::PopBlockScope()"}, + {"_ZN4llvm15SmallVectorImplINS_15BitstreamCursor5BlockEE9push_backERKS2_", "llvm::SmallVectorImpl::push_back(llvm::BitstreamCursor::Block const&)"}, + {"_ZN4llvm23SmallVectorTemplateBaseINS_15BitstreamCursor5BlockELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + + // {"_ZN4llvm23SmallVectorTemplateBaseINS_15BitstreamCursor5BlockELb0EE18uninitialized_copyIPS2_S5_EEvT_S6_T0_", + // "void llvm::SmallVectorTemplateBase::uninitialized_copy(llvm::BitstreamCursor::Block*, llvm::BitstreamCursor::Block*, llvm::BitstreamCursor::Block*)"}, + // got error + + {"_ZNSt8_Rb_treeIiSt4pairIKiiESt10_Select1stIS2_ESt4lessIiESaIS2_EE8_M_eraseEPSt13_Rb_tree_nodeIS2_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZN4llvm15BitstreamCursor20ReadAbbreviatedFieldERKNS_15BitCodeAbbrevOpERNS_15SmallVectorImplIyEE", "llvm::BitstreamCursor::ReadAbbreviatedField(llvm::BitCodeAbbrevOp const&, llvm::SmallVectorImpl&)"}, + {"_ZN5clang13ASTDeclReader22GetCurrentCursorOffsetEv", "clang::ASTDeclReader::GetCurrentCursorOffset()"}, + {"_ZN5clang13ASTDeclReader5VisitEPNS_4DeclE", "clang::ASTDeclReader::Visit(clang::Decl*)"}, + {"_ZN5clang13ASTDeclReader9VisitDeclEPNS_4DeclE", "clang::ASTDeclReader::VisitDecl(clang::Decl*)"}, + + // {"_ZN5clang9ASTReader14ReadAttributesERNS0_11PerFileDataERN4llvm11SmallVectorIPNS_4AttrELj2EEERKNS4_IyLj64EEERj", + // "clang::ASTReader::ReadAttributes(clang::ASTReader::PerFileData&, llvm::SmallVector&, llvm::SmallVector const&, unsigned int&)"}, + // "clang::ASTReader::ReadAttributes(clang::ASTReader::PerFileData&, llvm::SmallVector&, llvm::SmallVector const&, unsigned int&)" was returned + + {"_ZN5clang13ASTDeclReader24VisitTranslationUnitDeclEPNS_19TranslationUnitDeclE", "clang::ASTDeclReader::VisitTranslationUnitDecl(clang::TranslationUnitDecl*)"}, + {"_ZN5clang13ASTDeclReader14VisitNamedDeclEPNS_9NamedDeclE", "clang::ASTDeclReader::VisitNamedDecl(clang::NamedDecl*)"}, + {"_ZN5clang13ASTDeclReader13VisitTypeDeclEPNS_8TypeDeclE", "clang::ASTDeclReader::VisitTypeDecl(clang::TypeDecl*)"}, + {"_ZN5clang13ASTDeclReader16VisitTypedefDeclEPNS_11TypedefDeclE", "clang::ASTDeclReader::VisitTypedefDecl(clang::TypedefDecl*)"}, + {"_ZN5clang13ASTDeclReader12VisitTagDeclEPNS_7TagDeclE", "clang::ASTDeclReader::VisitTagDecl(clang::TagDecl*)"}, + {"_ZN5clang13ASTDeclReader13VisitEnumDeclEPNS_8EnumDeclE", "clang::ASTDeclReader::VisitEnumDecl(clang::EnumDecl*)"}, + {"_ZN5clang13ASTDeclReader15VisitRecordDeclEPNS_10RecordDeclE", "clang::ASTDeclReader::VisitRecordDecl(clang::RecordDecl*)"}, + {"_ZN5clang13ASTDeclReader14VisitValueDeclEPNS_9ValueDeclE", "clang::ASTDeclReader::VisitValueDecl(clang::ValueDecl*)"}, + {"_ZN5clang13ASTDeclReader21VisitEnumConstantDeclEPNS_16EnumConstantDeclE", "clang::ASTDeclReader::VisitEnumConstantDecl(clang::EnumConstantDecl*)"}, + {"_ZN5clang13ASTDeclReader19VisitDeclaratorDeclEPNS_14DeclaratorDeclE", "clang::ASTDeclReader::VisitDeclaratorDecl(clang::DeclaratorDecl*)"}, + {"_ZN5clang13ASTDeclReader17VisitFunctionDeclEPNS_12FunctionDeclE", "clang::ASTDeclReader::VisitFunctionDecl(clang::FunctionDecl*)"}, + {"_ZN5clang13ASTDeclReader19VisitObjCMethodDeclEPNS_14ObjCMethodDeclE", "clang::ASTDeclReader::VisitObjCMethodDecl(clang::ObjCMethodDecl*)"}, + {"_ZN5clang13ASTDeclReader22VisitObjCContainerDeclEPNS_17ObjCContainerDeclE", "clang::ASTDeclReader::VisitObjCContainerDecl(clang::ObjCContainerDecl*)"}, + {"_ZN5clang13ASTDeclReader22VisitObjCInterfaceDeclEPNS_17ObjCInterfaceDeclE", "clang::ASTDeclReader::VisitObjCInterfaceDecl(clang::ObjCInterfaceDecl*)"}, + {"_ZN5clang13ASTDeclReader17VisitObjCIvarDeclEPNS_12ObjCIvarDeclE", "clang::ASTDeclReader::VisitObjCIvarDecl(clang::ObjCIvarDecl*)"}, + {"_ZN5clang13ASTDeclReader14VisitFieldDeclEPNS_9FieldDeclE", "clang::ASTDeclReader::VisitFieldDecl(clang::FieldDecl*)"}, + {"_ZN5clang13ASTDeclReader21VisitObjCProtocolDeclEPNS_16ObjCProtocolDeclE", "clang::ASTDeclReader::VisitObjCProtocolDecl(clang::ObjCProtocolDecl*)"}, + {"_ZN5clang13ASTDeclReader24VisitObjCAtDefsFieldDeclEPNS_19ObjCAtDefsFieldDeclE", "clang::ASTDeclReader::VisitObjCAtDefsFieldDecl(clang::ObjCAtDefsFieldDecl*)"}, + {"_ZN5clang13ASTDeclReader18VisitObjCClassDeclEPNS_13ObjCClassDeclE", "clang::ASTDeclReader::VisitObjCClassDecl(clang::ObjCClassDecl*)"}, + {"_ZN5clang13ASTDeclReader28VisitObjCForwardProtocolDeclEPNS_23ObjCForwardProtocolDeclE", "clang::ASTDeclReader::VisitObjCForwardProtocolDecl(clang::ObjCForwardProtocolDecl*)"}, + {"_ZN5clang13ASTDeclReader21VisitObjCCategoryDeclEPNS_16ObjCCategoryDeclE", "clang::ASTDeclReader::VisitObjCCategoryDecl(clang::ObjCCategoryDecl*)"}, + {"_ZN5clang13ASTDeclReader28VisitObjCCompatibleAliasDeclEPNS_23ObjCCompatibleAliasDeclE", "clang::ASTDeclReader::VisitObjCCompatibleAliasDecl(clang::ObjCCompatibleAliasDecl*)"}, + {"_ZN5clang13ASTDeclReader21VisitObjCPropertyDeclEPNS_16ObjCPropertyDeclE", "clang::ASTDeclReader::VisitObjCPropertyDecl(clang::ObjCPropertyDecl*)"}, + {"_ZN5clang13ASTDeclReader17VisitObjCImplDeclEPNS_12ObjCImplDeclE", "clang::ASTDeclReader::VisitObjCImplDecl(clang::ObjCImplDecl*)"}, + {"_ZN5clang13ASTDeclReader25VisitObjCCategoryImplDeclEPNS_20ObjCCategoryImplDeclE", "clang::ASTDeclReader::VisitObjCCategoryImplDecl(clang::ObjCCategoryImplDecl*)"}, + {"_ZN5clang13ASTDeclReader27VisitObjCImplementationDeclEPNS_22ObjCImplementationDeclE", "clang::ASTDeclReader::VisitObjCImplementationDecl(clang::ObjCImplementationDecl*)"}, + {"_ZN5clang13ASTDeclReader25VisitObjCPropertyImplDeclEPNS_20ObjCPropertyImplDeclE", "clang::ASTDeclReader::VisitObjCPropertyImplDecl(clang::ObjCPropertyImplDecl*)"}, + {"_ZN5clang13ASTDeclReader22VisitIndirectFieldDeclEPNS_17IndirectFieldDeclE", "clang::ASTDeclReader::VisitIndirectFieldDecl(clang::IndirectFieldDecl*)"}, + {"_ZN5clang13ASTDeclReader12VisitVarDeclEPNS_7VarDeclE", "clang::ASTDeclReader::VisitVarDecl(clang::VarDecl*)"}, + {"_ZN5clang13ASTDeclReader22VisitImplicitParamDeclEPNS_17ImplicitParamDeclE", "clang::ASTDeclReader::VisitImplicitParamDecl(clang::ImplicitParamDecl*)"}, + {"_ZN5clang13ASTDeclReader16VisitParmVarDeclEPNS_11ParmVarDeclE", "clang::ASTDeclReader::VisitParmVarDecl(clang::ParmVarDecl*)"}, + {"_ZN5clang13ASTDeclReader21VisitFileScopeAsmDeclEPNS_16FileScopeAsmDeclE", "clang::ASTDeclReader::VisitFileScopeAsmDecl(clang::FileScopeAsmDecl*)"}, + {"_ZN5clang13ASTDeclReader14VisitBlockDeclEPNS_9BlockDeclE", "clang::ASTDeclReader::VisitBlockDecl(clang::BlockDecl*)"}, + {"_ZN5clang13ASTDeclReader20VisitLinkageSpecDeclEPNS_15LinkageSpecDeclE", "clang::ASTDeclReader::VisitLinkageSpecDecl(clang::LinkageSpecDecl*)"}, + {"_ZN5clang13ASTDeclReader18VisitNamespaceDeclEPNS_13NamespaceDeclE", "clang::ASTDeclReader::VisitNamespaceDecl(clang::NamespaceDecl*)"}, + {"_ZN5clang13ASTDeclReader23VisitNamespaceAliasDeclEPNS_18NamespaceAliasDeclE", "clang::ASTDeclReader::VisitNamespaceAliasDecl(clang::NamespaceAliasDecl*)"}, + {"_ZN5clang13ASTDeclReader14VisitUsingDeclEPNS_9UsingDeclE", "clang::ASTDeclReader::VisitUsingDecl(clang::UsingDecl*)"}, + {"_ZN5clang13ASTDeclReader20VisitUsingShadowDeclEPNS_15UsingShadowDeclE", "clang::ASTDeclReader::VisitUsingShadowDecl(clang::UsingShadowDecl*)"}, + {"_ZN5clang13ASTDeclReader23VisitUsingDirectiveDeclEPNS_18UsingDirectiveDeclE", "clang::ASTDeclReader::VisitUsingDirectiveDecl(clang::UsingDirectiveDecl*)"}, + {"_ZN5clang13ASTDeclReader29VisitUnresolvedUsingValueDeclEPNS_24UnresolvedUsingValueDeclE", "clang::ASTDeclReader::VisitUnresolvedUsingValueDecl(clang::UnresolvedUsingValueDecl*)"}, + {"_ZN5clang13ASTDeclReader32VisitUnresolvedUsingTypenameDeclEPNS_27UnresolvedUsingTypenameDeclE", "clang::ASTDeclReader::VisitUnresolvedUsingTypenameDecl(clang::UnresolvedUsingTypenameDecl*)"}, + + // {"_ZN5clang13ASTDeclReader21ReadCXXDefinitionDataERNS_13CXXRecordDecl14DefinitionDataERKN4llvm11SmallVectorIyLj64EEERj", + // "clang::ASTDeclReader::ReadCXXDefinitionData(clang::CXXRecordDecl::DefinitionData&, llvm::SmallVector const&, unsigned int&)"}, + // "clang::ASTDeclReader::ReadCXXDefinitionData(clang::CXXRecordDecl::DefinitionData&, llvm::SmallVector const&, unsigned int&)" was returned + + + // {"_ZN5clang13ASTDeclReader27InitializeCXXDefinitionDataEPNS_13CXXRecordDeclES2_RKN4llvm11SmallVectorIyLj64EEERj", + // "clang::ASTDeclReader::InitializeCXXDefinitionData(clang::CXXRecordDecl*, clang::CXXRecordDecl*, llvm::SmallVector const&, unsigned int&)"}, + // "clang::ASTDeclReader::InitializeCXXDefinitionData(clang::CXXRecordDecl*, clang::CXXRecordDecl*, llvm::SmallVector const&, unsigned int&)" was returned + + {"_ZN5clang13ASTDeclReader18VisitCXXRecordDeclEPNS_13CXXRecordDeclE", "clang::ASTDeclReader::VisitCXXRecordDecl(clang::CXXRecordDecl*)"}, + {"_ZN5clang13ASTDeclReader18VisitCXXMethodDeclEPNS_13CXXMethodDeclE", "clang::ASTDeclReader::VisitCXXMethodDecl(clang::CXXMethodDecl*)"}, + {"_ZN5clang13ASTDeclReader23VisitCXXConstructorDeclEPNS_18CXXConstructorDeclE", "clang::ASTDeclReader::VisitCXXConstructorDecl(clang::CXXConstructorDecl*)"}, + {"_ZN5clang13ASTDeclReader22VisitCXXDestructorDeclEPNS_17CXXDestructorDeclE", "clang::ASTDeclReader::VisitCXXDestructorDecl(clang::CXXDestructorDecl*)"}, + {"_ZN5clang13ASTDeclReader22VisitCXXConversionDeclEPNS_17CXXConversionDeclE", "clang::ASTDeclReader::VisitCXXConversionDecl(clang::CXXConversionDecl*)"}, + {"_ZN5clang13ASTDeclReader19VisitAccessSpecDeclEPNS_14AccessSpecDeclE", "clang::ASTDeclReader::VisitAccessSpecDecl(clang::AccessSpecDecl*)"}, + {"_ZN5clang13ASTDeclReader15VisitFriendDeclEPNS_10FriendDeclE", "clang::ASTDeclReader::VisitFriendDecl(clang::FriendDecl*)"}, + {"_ZN5clang13ASTDeclReader23VisitFriendTemplateDeclEPNS_18FriendTemplateDeclE", "clang::ASTDeclReader::VisitFriendTemplateDecl(clang::FriendTemplateDecl*)"}, + {"_ZN5clang13ASTDeclReader17VisitTemplateDeclEPNS_12TemplateDeclE", "clang::ASTDeclReader::VisitTemplateDecl(clang::TemplateDecl*)"}, + {"_ZN5clang13ASTDeclReader29VisitRedeclarableTemplateDeclEPNS_24RedeclarableTemplateDeclE", "clang::ASTDeclReader::VisitRedeclarableTemplateDecl(clang::RedeclarableTemplateDecl*)"}, + {"_ZN5clang13ASTDeclReader22VisitClassTemplateDeclEPNS_17ClassTemplateDeclE", "clang::ASTDeclReader::VisitClassTemplateDecl(clang::ClassTemplateDecl*)"}, + {"_ZN5clang13ASTDeclReader36VisitClassTemplateSpecializationDeclEPNS_31ClassTemplateSpecializationDeclE", "clang::ASTDeclReader::VisitClassTemplateSpecializationDecl(clang::ClassTemplateSpecializationDecl*)"}, + {"_ZN5clang13ASTDeclReader43VisitClassTemplatePartialSpecializationDeclEPNS_38ClassTemplatePartialSpecializationDeclE", "clang::ASTDeclReader::VisitClassTemplatePartialSpecializationDecl(clang::ClassTemplatePartialSpecializationDecl*)"}, + {"_ZN5clang13ASTDeclReader25VisitFunctionTemplateDeclEPNS_20FunctionTemplateDeclE", "clang::ASTDeclReader::VisitFunctionTemplateDecl(clang::FunctionTemplateDecl*)"}, + {"_ZN5clang13ASTDeclReader25VisitTemplateTypeParmDeclEPNS_20TemplateTypeParmDeclE", "clang::ASTDeclReader::VisitTemplateTypeParmDecl(clang::TemplateTypeParmDecl*)"}, + {"_ZN5clang13ASTDeclReader28VisitNonTypeTemplateParmDeclEPNS_23NonTypeTemplateParmDeclE", "clang::ASTDeclReader::VisitNonTypeTemplateParmDecl(clang::NonTypeTemplateParmDecl*)"}, + {"_ZN5clang13ASTDeclReader29VisitTemplateTemplateParmDeclEPNS_24TemplateTemplateParmDeclE", "clang::ASTDeclReader::VisitTemplateTemplateParmDecl(clang::TemplateTemplateParmDecl*)"}, + {"_ZN5clang13ASTDeclReader21VisitStaticAssertDeclEPNS_16StaticAssertDeclE", "clang::ASTDeclReader::VisitStaticAssertDecl(clang::StaticAssertDecl*)"}, + {"_ZN5clang13ASTDeclReader16VisitDeclContextEPNS_11DeclContextE", "clang::ASTDeclReader::VisitDeclContext(clang::DeclContext*)"}, + {"_ZN5clang9ASTReader18DeclCursorForIndexEjj", "clang::ASTReader::DeclCursorForIndex(unsigned int, unsigned int)"}, + {"_ZN5clang9ASTReader14ReadDeclRecordEjj", "clang::ASTReader::ReadDeclRecord(unsigned int, unsigned int)"}, + + // {"_ZN5clang13ASTDeclReader10UpdateDeclEPNS_4DeclERKN4llvm11SmallVectorIyLj64EEE", + // "clang::ASTDeclReader::UpdateDecl(clang::Decl*, llvm::SmallVector const&)"}, + // "clang::ASTDeclReader::UpdateDecl(clang::Decl*, llvm::SmallVector const&)" was returned + + {"_ZN5clang11DeclVisitorINS_13ASTDeclReaderEvE5VisitEPNS_4DeclE", "clang::DeclVisitor::Visit(clang::Decl*)"}, + {"_ZN5clang13ASTDeclReader17VisitRedeclarableINS_7TagDeclEEEvPNS_12RedeclarableIT_EE", "void clang::ASTDeclReader::VisitRedeclarable(clang::Redeclarable*)"}, + {"_ZN5clang13ASTDeclReader17VisitRedeclarableINS_12FunctionDeclEEEvPNS_12RedeclarableIT_EE", "void clang::ASTDeclReader::VisitRedeclarable(clang::Redeclarable*)"}, + {"_ZN5clang13ASTDeclReader17VisitRedeclarableINS_7VarDeclEEEvPNS_12RedeclarableIT_EE", "void clang::ASTDeclReader::VisitRedeclarable(clang::Redeclarable*)"}, + {"_ZN5clang14AccessSpecDecl6CreateERNS_10ASTContextENS_4Decl10EmptyShellE", "clang::AccessSpecDecl::Create(clang::ASTContext&, clang::Decl::EmptyShell)"}, + {"_ZN4llvm15SmallVectorImplIN5clang9ASTReader15DeclContextInfoEE6insertEPS3_RKS3_", "llvm::SmallVectorImpl::insert(clang::ASTReader::DeclContextInfo*, clang::ASTReader::DeclContextInfo const&)"}, + + // {"_ZN4llvm8DenseMapIPKN5clang13CXXRecordDeclENS_11SmallVectorIPS2_Lj4EEENS_12DenseMapInfoIS4_EENS8_IS7_EEE16FindAndConstructERKS4_", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::FindAndConstruct(clang::CXXRecordDecl const* const&)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::FindAndConstruct(clang::CXXRecordDecl const* const&)" was returned + + + // {"_ZN4llvm8DenseMapIPKN5clang13CXXRecordDeclENS_11SmallVectorIPS2_Lj4EEENS_12DenseMapInfoIS4_EENS8_IS7_EEE16InsertIntoBucketERKS4_RKS7_PSt4pairIS4_S7_E", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(clang::CXXRecordDecl const* const&, llvm::SmallVector const&, std::pair>*)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(clang::CXXRecordDecl const* const&, llvm::SmallVector const&, std::pair>*)" was returned + + + // {"_ZN4llvm8DenseMapIPKN5clang13CXXRecordDeclENS_11SmallVectorIPS2_Lj4EEENS_12DenseMapInfoIS4_EENS8_IS7_EEE4growEj", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)" was returned + + {"_ZN4llvm15SmallVectorImplIPN5clang13CXXRecordDeclEEaSERKS4_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang9BlockDecl7CaptureELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN5clang13ASTStmtReader32ReadExplicitTemplateArgumentListERNS_28ExplicitTemplateArgumentListEj", "clang::ASTStmtReader::ReadExplicitTemplateArgumentList(clang::ExplicitTemplateArgumentList&, unsigned int)"}, + {"_ZN5clang13ASTStmtReader9VisitStmtEPNS_4StmtE", "clang::ASTStmtReader::VisitStmt(clang::Stmt*)"}, + {"_ZN5clang13ASTStmtReader13VisitNullStmtEPNS_8NullStmtE", "clang::ASTStmtReader::VisitNullStmt(clang::NullStmt*)"}, + {"_ZN5clang13ASTStmtReader17VisitCompoundStmtEPNS_12CompoundStmtE", "clang::ASTStmtReader::VisitCompoundStmt(clang::CompoundStmt*)"}, + {"_ZN5clang13ASTStmtReader15VisitSwitchCaseEPNS_10SwitchCaseE", "clang::ASTStmtReader::VisitSwitchCase(clang::SwitchCase*)"}, + {"_ZN5clang13ASTStmtReader13VisitCaseStmtEPNS_8CaseStmtE", "clang::ASTStmtReader::VisitCaseStmt(clang::CaseStmt*)"}, + {"_ZN5clang9ASTReader11ReadSubExprEv", "clang::ASTReader::ReadSubExpr()"}, + {"_ZN5clang13ASTStmtReader16VisitDefaultStmtEPNS_11DefaultStmtE", "clang::ASTStmtReader::VisitDefaultStmt(clang::DefaultStmt*)"}, + {"_ZN5clang13ASTStmtReader14VisitLabelStmtEPNS_9LabelStmtE", "clang::ASTStmtReader::VisitLabelStmt(clang::LabelStmt*)"}, + {"_ZN5clang13ASTStmtReader11VisitIfStmtEPNS_6IfStmtE", "clang::ASTStmtReader::VisitIfStmt(clang::IfStmt*)"}, + {"_ZN5clang13ASTStmtReader15VisitSwitchStmtEPNS_10SwitchStmtE", "clang::ASTStmtReader::VisitSwitchStmt(clang::SwitchStmt*)"}, + {"_ZN5clang13ASTStmtReader14VisitWhileStmtEPNS_9WhileStmtE", "clang::ASTStmtReader::VisitWhileStmt(clang::WhileStmt*)"}, + {"_ZN5clang13ASTStmtReader11VisitDoStmtEPNS_6DoStmtE", "clang::ASTStmtReader::VisitDoStmt(clang::DoStmt*)"}, + {"_ZN5clang13ASTStmtReader12VisitForStmtEPNS_7ForStmtE", "clang::ASTStmtReader::VisitForStmt(clang::ForStmt*)"}, + {"_ZN5clang13ASTStmtReader13VisitGotoStmtEPNS_8GotoStmtE", "clang::ASTStmtReader::VisitGotoStmt(clang::GotoStmt*)"}, + {"_ZN5clang13ASTStmtReader21VisitIndirectGotoStmtEPNS_16IndirectGotoStmtE", "clang::ASTStmtReader::VisitIndirectGotoStmt(clang::IndirectGotoStmt*)"}, + {"_ZN5clang13ASTStmtReader17VisitContinueStmtEPNS_12ContinueStmtE", "clang::ASTStmtReader::VisitContinueStmt(clang::ContinueStmt*)"}, + {"_ZN5clang13ASTStmtReader14VisitBreakStmtEPNS_9BreakStmtE", "clang::ASTStmtReader::VisitBreakStmt(clang::BreakStmt*)"}, + {"_ZN5clang13ASTStmtReader15VisitReturnStmtEPNS_10ReturnStmtE", "clang::ASTStmtReader::VisitReturnStmt(clang::ReturnStmt*)"}, + {"_ZN5clang13ASTStmtReader13VisitDeclStmtEPNS_8DeclStmtE", "clang::ASTStmtReader::VisitDeclStmt(clang::DeclStmt*)"}, + {"_ZN5clang13ASTStmtReader12VisitAsmStmtEPNS_7AsmStmtE", "clang::ASTStmtReader::VisitAsmStmt(clang::AsmStmt*)"}, + {"_ZN5clang13ASTStmtReader9VisitExprEPNS_4ExprE", "clang::ASTStmtReader::VisitExpr(clang::Expr*)"}, + {"_ZN5clang13ASTStmtReader19VisitPredefinedExprEPNS_14PredefinedExprE", "clang::ASTStmtReader::VisitPredefinedExpr(clang::PredefinedExpr*)"}, + {"_ZN5clang13ASTStmtReader16VisitDeclRefExprEPNS_11DeclRefExprE", "clang::ASTStmtReader::VisitDeclRefExpr(clang::DeclRefExpr*)"}, + {"_ZN5clang13ASTStmtReader19VisitIntegerLiteralEPNS_14IntegerLiteralE", "clang::ASTStmtReader::VisitIntegerLiteral(clang::IntegerLiteral*)"}, + {"_ZN5clang13ASTStmtReader20VisitFloatingLiteralEPNS_15FloatingLiteralE", "clang::ASTStmtReader::VisitFloatingLiteral(clang::FloatingLiteral*)"}, + {"_ZN5clang13ASTStmtReader21VisitImaginaryLiteralEPNS_16ImaginaryLiteralE", "clang::ASTStmtReader::VisitImaginaryLiteral(clang::ImaginaryLiteral*)"}, + {"_ZN5clang13ASTStmtReader18VisitStringLiteralEPNS_13StringLiteralE", "clang::ASTStmtReader::VisitStringLiteral(clang::StringLiteral*)"}, + {"_ZN5clang13ASTStmtReader21VisitCharacterLiteralEPNS_16CharacterLiteralE", "clang::ASTStmtReader::VisitCharacterLiteral(clang::CharacterLiteral*)"}, + {"_ZN5clang13ASTStmtReader14VisitParenExprEPNS_9ParenExprE", "clang::ASTStmtReader::VisitParenExpr(clang::ParenExpr*)"}, + {"_ZN5clang13ASTStmtReader18VisitParenListExprEPNS_13ParenListExprE", "clang::ASTStmtReader::VisitParenListExpr(clang::ParenListExpr*)"}, + {"_ZN5clang13ASTStmtReader18VisitUnaryOperatorEPNS_13UnaryOperatorE", "clang::ASTStmtReader::VisitUnaryOperator(clang::UnaryOperator*)"}, + {"_ZN5clang13ASTStmtReader17VisitOffsetOfExprEPNS_12OffsetOfExprE", "clang::ASTStmtReader::VisitOffsetOfExpr(clang::OffsetOfExpr*)"}, + {"_ZN5clang13ASTStmtReader22VisitSizeOfAlignOfExprEPNS_17SizeOfAlignOfExprE", "clang::ASTStmtReader::VisitSizeOfAlignOfExpr(clang::SizeOfAlignOfExpr*)"}, + {"_ZN5clang13ASTStmtReader23VisitArraySubscriptExprEPNS_18ArraySubscriptExprE", "clang::ASTStmtReader::VisitArraySubscriptExpr(clang::ArraySubscriptExpr*)"}, + {"_ZN5clang13ASTStmtReader13VisitCallExprEPNS_8CallExprE", "clang::ASTStmtReader::VisitCallExpr(clang::CallExpr*)"}, + {"_ZN5clang13ASTStmtReader15VisitMemberExprEPNS_10MemberExprE", "clang::ASTStmtReader::VisitMemberExpr(clang::MemberExpr*)"}, + {"_ZN5clang13ASTStmtReader16VisitObjCIsaExprEPNS_11ObjCIsaExprE", "clang::ASTStmtReader::VisitObjCIsaExpr(clang::ObjCIsaExpr*)"}, + {"_ZN5clang13ASTStmtReader13VisitCastExprEPNS_8CastExprE", "clang::ASTStmtReader::VisitCastExpr(clang::CastExpr*)"}, + {"_ZN5clang13ASTStmtReader19VisitBinaryOperatorEPNS_14BinaryOperatorE", "clang::ASTStmtReader::VisitBinaryOperator(clang::BinaryOperator*)"}, + {"_ZN5clang13ASTStmtReader27VisitCompoundAssignOperatorEPNS_22CompoundAssignOperatorE", "clang::ASTStmtReader::VisitCompoundAssignOperator(clang::CompoundAssignOperator*)"}, + {"_ZN5clang13ASTStmtReader24VisitConditionalOperatorEPNS_19ConditionalOperatorE", "clang::ASTStmtReader::VisitConditionalOperator(clang::ConditionalOperator*)"}, + {"_ZN5clang13ASTStmtReader21VisitImplicitCastExprEPNS_16ImplicitCastExprE", "clang::ASTStmtReader::VisitImplicitCastExpr(clang::ImplicitCastExpr*)"}, + {"_ZN5clang13ASTStmtReader21VisitExplicitCastExprEPNS_16ExplicitCastExprE", "clang::ASTStmtReader::VisitExplicitCastExpr(clang::ExplicitCastExpr*)"}, + {"_ZN5clang13ASTStmtReader19VisitCStyleCastExprEPNS_14CStyleCastExprE", "clang::ASTStmtReader::VisitCStyleCastExpr(clang::CStyleCastExpr*)"}, + {"_ZN5clang13ASTStmtReader24VisitCompoundLiteralExprEPNS_19CompoundLiteralExprE", "clang::ASTStmtReader::VisitCompoundLiteralExpr(clang::CompoundLiteralExpr*)"}, + {"_ZN5clang13ASTStmtReader25VisitExtVectorElementExprEPNS_20ExtVectorElementExprE", "clang::ASTStmtReader::VisitExtVectorElementExpr(clang::ExtVectorElementExpr*)"}, + {"_ZN5clang13ASTStmtReader17VisitInitListExprEPNS_12InitListExprE", "clang::ASTStmtReader::VisitInitListExpr(clang::InitListExpr*)"}, + {"_ZN5clang13ASTStmtReader23VisitDesignatedInitExprEPNS_18DesignatedInitExprE", "clang::ASTStmtReader::VisitDesignatedInitExpr(clang::DesignatedInitExpr*)"}, + {"_ZN5clang13ASTStmtReader26VisitImplicitValueInitExprEPNS_21ImplicitValueInitExprE", "clang::ASTStmtReader::VisitImplicitValueInitExpr(clang::ImplicitValueInitExpr*)"}, + {"_ZN5clang13ASTStmtReader14VisitVAArgExprEPNS_9VAArgExprE", "clang::ASTStmtReader::VisitVAArgExpr(clang::VAArgExpr*)"}, + {"_ZN5clang13ASTStmtReader18VisitAddrLabelExprEPNS_13AddrLabelExprE", "clang::ASTStmtReader::VisitAddrLabelExpr(clang::AddrLabelExpr*)"}, + {"_ZN5clang13ASTStmtReader13VisitStmtExprEPNS_8StmtExprE", "clang::ASTStmtReader::VisitStmtExpr(clang::StmtExpr*)"}, + {"_ZN5clang13ASTStmtReader15VisitChooseExprEPNS_10ChooseExprE", "clang::ASTStmtReader::VisitChooseExpr(clang::ChooseExpr*)"}, + {"_ZN5clang13ASTStmtReader16VisitGNUNullExprEPNS_11GNUNullExprE", "clang::ASTStmtReader::VisitGNUNullExpr(clang::GNUNullExpr*)"}, + {"_ZN5clang13ASTStmtReader22VisitShuffleVectorExprEPNS_17ShuffleVectorExprE", "clang::ASTStmtReader::VisitShuffleVectorExpr(clang::ShuffleVectorExpr*)"}, + {"_ZN5clang13ASTStmtReader14VisitBlockExprEPNS_9BlockExprE", "clang::ASTStmtReader::VisitBlockExpr(clang::BlockExpr*)"}, + {"_ZN5clang13ASTStmtReader21VisitBlockDeclRefExprEPNS_16BlockDeclRefExprE", "clang::ASTStmtReader::VisitBlockDeclRefExpr(clang::BlockDeclRefExpr*)"}, + {"_ZN5clang13ASTStmtReader22VisitObjCStringLiteralEPNS_17ObjCStringLiteralE", "clang::ASTStmtReader::VisitObjCStringLiteral(clang::ObjCStringLiteral*)"}, + {"_ZN5clang13ASTStmtReader19VisitObjCEncodeExprEPNS_14ObjCEncodeExprE", "clang::ASTStmtReader::VisitObjCEncodeExpr(clang::ObjCEncodeExpr*)"}, + {"_ZN5clang13ASTStmtReader21VisitObjCSelectorExprEPNS_16ObjCSelectorExprE", "clang::ASTStmtReader::VisitObjCSelectorExpr(clang::ObjCSelectorExpr*)"}, + {"_ZN5clang13ASTStmtReader21VisitObjCProtocolExprEPNS_16ObjCProtocolExprE", "clang::ASTStmtReader::VisitObjCProtocolExpr(clang::ObjCProtocolExpr*)"}, + {"_ZN5clang13ASTStmtReader20VisitObjCIvarRefExprEPNS_15ObjCIvarRefExprE", "clang::ASTStmtReader::VisitObjCIvarRefExpr(clang::ObjCIvarRefExpr*)"}, + {"_ZN5clang13ASTStmtReader24VisitObjCPropertyRefExprEPNS_19ObjCPropertyRefExprE", "clang::ASTStmtReader::VisitObjCPropertyRefExpr(clang::ObjCPropertyRefExpr*)"}, + {"_ZN5clang13ASTStmtReader20VisitObjCMessageExprEPNS_15ObjCMessageExprE", "clang::ASTStmtReader::VisitObjCMessageExpr(clang::ObjCMessageExpr*)"}, + {"_ZN5clang13ASTStmtReader26VisitObjCForCollectionStmtEPNS_21ObjCForCollectionStmtE", "clang::ASTStmtReader::VisitObjCForCollectionStmt(clang::ObjCForCollectionStmt*)"}, + {"_ZN5clang13ASTStmtReader20VisitObjCAtCatchStmtEPNS_15ObjCAtCatchStmtE", "clang::ASTStmtReader::VisitObjCAtCatchStmt(clang::ObjCAtCatchStmt*)"}, + {"_ZN5clang13ASTStmtReader22VisitObjCAtFinallyStmtEPNS_17ObjCAtFinallyStmtE", "clang::ASTStmtReader::VisitObjCAtFinallyStmt(clang::ObjCAtFinallyStmt*)"}, + {"_ZN5clang13ASTStmtReader18VisitObjCAtTryStmtEPNS_13ObjCAtTryStmtE", "clang::ASTStmtReader::VisitObjCAtTryStmt(clang::ObjCAtTryStmt*)"}, + {"_ZN5clang13ASTStmtReader27VisitObjCAtSynchronizedStmtEPNS_22ObjCAtSynchronizedStmtE", "clang::ASTStmtReader::VisitObjCAtSynchronizedStmt(clang::ObjCAtSynchronizedStmt*)"}, + {"_ZN5clang13ASTStmtReader20VisitObjCAtThrowStmtEPNS_15ObjCAtThrowStmtE", "clang::ASTStmtReader::VisitObjCAtThrowStmt(clang::ObjCAtThrowStmt*)"}, + {"_ZN5clang13ASTStmtReader17VisitCXXCatchStmtEPNS_12CXXCatchStmtE", "clang::ASTStmtReader::VisitCXXCatchStmt(clang::CXXCatchStmt*)"}, + {"_ZN5clang13ASTStmtReader15VisitCXXTryStmtEPNS_10CXXTryStmtE", "clang::ASTStmtReader::VisitCXXTryStmt(clang::CXXTryStmt*)"}, + {"_ZN5clang13ASTStmtReader24VisitCXXOperatorCallExprEPNS_19CXXOperatorCallExprE", "clang::ASTStmtReader::VisitCXXOperatorCallExpr(clang::CXXOperatorCallExpr*)"}, + {"_ZN5clang13ASTStmtReader21VisitCXXConstructExprEPNS_16CXXConstructExprE", "clang::ASTStmtReader::VisitCXXConstructExpr(clang::CXXConstructExpr*)"}, + {"_ZN5clang13ASTStmtReader27VisitCXXTemporaryObjectExprEPNS_22CXXTemporaryObjectExprE", "clang::ASTStmtReader::VisitCXXTemporaryObjectExpr(clang::CXXTemporaryObjectExpr*)"}, + {"_ZN5clang13ASTStmtReader21VisitCXXNamedCastExprEPNS_16CXXNamedCastExprE", "clang::ASTStmtReader::VisitCXXNamedCastExpr(clang::CXXNamedCastExpr*)"}, + {"_ZN5clang13ASTStmtReader22VisitCXXStaticCastExprEPNS_17CXXStaticCastExprE", "clang::ASTStmtReader::VisitCXXStaticCastExpr(clang::CXXStaticCastExpr*)"}, + {"_ZN5clang13ASTStmtReader23VisitCXXDynamicCastExprEPNS_18CXXDynamicCastExprE", "clang::ASTStmtReader::VisitCXXDynamicCastExpr(clang::CXXDynamicCastExpr*)"}, + {"_ZN5clang13ASTStmtReader27VisitCXXReinterpretCastExprEPNS_22CXXReinterpretCastExprE", "clang::ASTStmtReader::VisitCXXReinterpretCastExpr(clang::CXXReinterpretCastExpr*)"}, + {"_ZN5clang13ASTStmtReader21VisitCXXConstCastExprEPNS_16CXXConstCastExprE", "clang::ASTStmtReader::VisitCXXConstCastExpr(clang::CXXConstCastExpr*)"}, + {"_ZN5clang13ASTStmtReader26VisitCXXFunctionalCastExprEPNS_21CXXFunctionalCastExprE", "clang::ASTStmtReader::VisitCXXFunctionalCastExpr(clang::CXXFunctionalCastExpr*)"}, + {"_ZN5clang13ASTStmtReader23VisitCXXBoolLiteralExprEPNS_18CXXBoolLiteralExprE", "clang::ASTStmtReader::VisitCXXBoolLiteralExpr(clang::CXXBoolLiteralExpr*)"}, + {"_ZN5clang13ASTStmtReader26VisitCXXNullPtrLiteralExprEPNS_21CXXNullPtrLiteralExprE", "clang::ASTStmtReader::VisitCXXNullPtrLiteralExpr(clang::CXXNullPtrLiteralExpr*)"}, + {"_ZN5clang13ASTStmtReader18VisitCXXTypeidExprEPNS_13CXXTypeidExprE", "clang::ASTStmtReader::VisitCXXTypeidExpr(clang::CXXTypeidExpr*)"}, + {"_ZN5clang13ASTStmtReader18VisitCXXUuidofExprEPNS_13CXXUuidofExprE", "clang::ASTStmtReader::VisitCXXUuidofExpr(clang::CXXUuidofExpr*)"}, + {"_ZN5clang13ASTStmtReader16VisitCXXThisExprEPNS_11CXXThisExprE", "clang::ASTStmtReader::VisitCXXThisExpr(clang::CXXThisExpr*)"}, + {"_ZN5clang13ASTStmtReader17VisitCXXThrowExprEPNS_12CXXThrowExprE", "clang::ASTStmtReader::VisitCXXThrowExpr(clang::CXXThrowExpr*)"}, + {"_ZN5clang13ASTStmtReader22VisitCXXDefaultArgExprEPNS_17CXXDefaultArgExprE", "clang::ASTStmtReader::VisitCXXDefaultArgExpr(clang::CXXDefaultArgExpr*)"}, + {"_ZN5clang13ASTStmtReader25VisitCXXBindTemporaryExprEPNS_20CXXBindTemporaryExprE", "clang::ASTStmtReader::VisitCXXBindTemporaryExpr(clang::CXXBindTemporaryExpr*)"}, + {"_ZN5clang13ASTStmtReader27VisitCXXScalarValueInitExprEPNS_22CXXScalarValueInitExprE", "clang::ASTStmtReader::VisitCXXScalarValueInitExpr(clang::CXXScalarValueInitExpr*)"}, + {"_ZN5clang13ASTStmtReader15VisitCXXNewExprEPNS_10CXXNewExprE", "clang::ASTStmtReader::VisitCXXNewExpr(clang::CXXNewExpr*)"}, + {"_ZN5clang13ASTStmtReader18VisitCXXDeleteExprEPNS_13CXXDeleteExprE", "clang::ASTStmtReader::VisitCXXDeleteExpr(clang::CXXDeleteExpr*)"}, + {"_ZN5clang13ASTStmtReader28VisitCXXPseudoDestructorExprEPNS_23CXXPseudoDestructorExprE", "clang::ASTStmtReader::VisitCXXPseudoDestructorExpr(clang::CXXPseudoDestructorExpr*)"}, + {"_ZN5clang13ASTStmtReader21VisitExprWithCleanupsEPNS_16ExprWithCleanupsE", "clang::ASTStmtReader::VisitExprWithCleanups(clang::ExprWithCleanups*)"}, + {"_ZN5clang13ASTStmtReader32VisitCXXDependentScopeMemberExprEPNS_27CXXDependentScopeMemberExprE", "clang::ASTStmtReader::VisitCXXDependentScopeMemberExpr(clang::CXXDependentScopeMemberExpr*)"}, + {"_ZN5clang13ASTStmtReader30VisitDependentScopeDeclRefExprEPNS_25DependentScopeDeclRefExprE", "clang::ASTStmtReader::VisitDependentScopeDeclRefExpr(clang::DependentScopeDeclRefExpr*)"}, + {"_ZN5clang13ASTStmtReader31VisitCXXUnresolvedConstructExprEPNS_26CXXUnresolvedConstructExprE", "clang::ASTStmtReader::VisitCXXUnresolvedConstructExpr(clang::CXXUnresolvedConstructExpr*)"}, + {"_ZN5clang13ASTStmtReader17VisitOverloadExprEPNS_12OverloadExprE", "clang::ASTStmtReader::VisitOverloadExpr(clang::OverloadExpr*)"}, + {"_ZN5clang13ASTStmtReader25VisitUnresolvedMemberExprEPNS_20UnresolvedMemberExprE", "clang::ASTStmtReader::VisitUnresolvedMemberExpr(clang::UnresolvedMemberExpr*)"}, + {"_ZN5clang13ASTStmtReader25VisitUnresolvedLookupExprEPNS_20UnresolvedLookupExprE", "clang::ASTStmtReader::VisitUnresolvedLookupExpr(clang::UnresolvedLookupExpr*)"}, + {"_ZN5clang13ASTStmtReader23VisitUnaryTypeTraitExprEPNS_18UnaryTypeTraitExprE", "clang::ASTStmtReader::VisitUnaryTypeTraitExpr(clang::UnaryTypeTraitExpr*)"}, + {"_ZN5clang13ASTStmtReader24VisitBinaryTypeTraitExprEPNS_19BinaryTypeTraitExprE", "clang::ASTStmtReader::VisitBinaryTypeTraitExpr(clang::BinaryTypeTraitExpr*)"}, + {"_ZN5clang13ASTStmtReader20VisitCXXNoexceptExprEPNS_15CXXNoexceptExprE", "clang::ASTStmtReader::VisitCXXNoexceptExpr(clang::CXXNoexceptExpr*)"}, + {"_ZN5clang13ASTStmtReader22VisitPackExpansionExprEPNS_17PackExpansionExprE", "clang::ASTStmtReader::VisitPackExpansionExpr(clang::PackExpansionExpr*)"}, + {"_ZN5clang13ASTStmtReader19VisitSizeOfPackExprEPNS_14SizeOfPackExprE", "clang::ASTStmtReader::VisitSizeOfPackExpr(clang::SizeOfPackExpr*)"}, + {"_ZN5clang13ASTStmtReader37VisitSubstNonTypeTemplateParmPackExprEPNS_32SubstNonTypeTemplateParmPackExprE", "clang::ASTStmtReader::VisitSubstNonTypeTemplateParmPackExpr(clang::SubstNonTypeTemplateParmPackExpr*)"}, + {"_ZN5clang13ASTStmtReader20VisitOpaqueValueExprEPNS_15OpaqueValueExprE", "clang::ASTStmtReader::VisitOpaqueValueExpr(clang::OpaqueValueExpr*)"}, + {"_ZN5clang13ASTStmtReader23VisitCUDAKernelCallExprEPNS_18CUDAKernelCallExprE", "clang::ASTStmtReader::VisitCUDAKernelCallExpr(clang::CUDAKernelCallExpr*)"}, + {"_ZN5clang9ASTReader8ReadStmtERNS0_11PerFileDataE", "clang::ASTReader::ReadStmt(clang::ASTReader::PerFileData&)"}, + {"_ZN5clang9ASTReader18ReadStmtFromStreamERNS0_11PerFileDataE", "clang::ASTReader::ReadStmtFromStream(clang::ASTReader::PerFileData&)"}, + {"_ZN5clang9ASTReader8ReadExprERNS0_11PerFileDataE", "clang::ASTReader::ReadExpr(clang::ASTReader::PerFileData&)"}, + {"_ZN5clang11StmtVisitorINS_13ASTStmtReaderEvE5VisitEPNS_4StmtE", "clang::StmtVisitor::Visit(clang::Stmt*)"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang18DesignatedInitExpr10DesignatorELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN5clang9ASTWriter19WriteBlockInfoBlockEv", "clang::ASTWriter::WriteBlockInfoBlock()"}, + {"_Z11EmitBlockIDjPKcRN4llvm15BitstreamWriterERNS1_15SmallVectorImplIyEE", "EmitBlockID(unsigned int, char const*, llvm::BitstreamWriter&, llvm::SmallVectorImpl&)"}, + {"_Z12EmitRecordIDjPKcRN4llvm15BitstreamWriterERNS1_15SmallVectorImplIyEE", "EmitRecordID(unsigned int, char const*, llvm::BitstreamWriter&, llvm::SmallVectorImpl&)"}, + {"_ZN5clang9ASTWriter13WriteMetadataERNS_10ASTContextEPKc", "clang::ASTWriter::WriteMetadata(clang::ASTContext&, char const*)"}, + {"_ZN5clang9ASTWriter20WriteLanguageOptionsERKNS_11LangOptionsE", "clang::ASTWriter::WriteLanguageOptions(clang::LangOptions const&)"}, + {"_ZN5clang9ASTWriter14WriteStatCacheERNS_17MemorizeStatCallsE", "clang::ASTWriter::WriteStatCache(clang::MemorizeStatCalls&)"}, + {"_ZN5clang9ASTWriter23WriteSourceManagerBlockERNS_13SourceManagerERKNS_12PreprocessorEPKc", "clang::ASTWriter::WriteSourceManagerBlock(clang::SourceManager&, clang::Preprocessor const&, char const*)"}, + {"_ZN5clang9ASTWriter16AddIdentifierRefEPKNS_14IdentifierInfoERN4llvm15SmallVectorImplIyEE", "clang::ASTWriter::AddIdentifierRef(clang::IdentifierInfo const*, llvm::SmallVectorImpl&)"}, + {"_ZN5clang9ASTWriter17WritePreprocessorERKNS_12PreprocessorE", "clang::ASTWriter::WritePreprocessor(clang::Preprocessor const&)"}, + {"_ZN5clang9ASTWriter20getMacroDefinitionIDEPNS_15MacroDefinitionE", "clang::ASTWriter::getMacroDefinitionID(clang::MacroDefinition*)"}, + {"_ZN5clang9ASTWriter23WritePreprocessorDetailERNS_19PreprocessingRecordE", "clang::ASTWriter::WritePreprocessorDetail(clang::PreprocessingRecord&)"}, + {"_ZN5clang9ASTWriter17AddSourceLocationENS_14SourceLocationERN4llvm15SmallVectorImplIyEE", "clang::ASTWriter::AddSourceLocation(clang::SourceLocation, llvm::SmallVectorImpl&)"}, + {"_ZN5clang9ASTWriter29WritePragmaDiagnosticMappingsERKNS_10DiagnosticE", "clang::ASTWriter::WritePragmaDiagnosticMappings(clang::Diagnostic const&)"}, + {"_ZN5clang9ASTWriter9WriteTypeENS_8QualTypeE", "clang::ASTWriter::WriteType(clang::QualType)"}, + {"_ZN5clang9ASTWriter10AddTypeRefENS_8QualTypeERN4llvm15SmallVectorImplIyEE", "clang::ASTWriter::AddTypeRef(clang::QualType, llvm::SmallVectorImpl&)"}, + {"_ZN12_GLOBAL__N_113ASTTypeWriter15VisitVectorTypeEPKN5clang10VectorTypeE", "(anonymous namespace)::ASTTypeWriter::VisitVectorType(clang::VectorType const*)"}, + {"_ZN5clang9ASTWriter28WriteDeclContextLexicalBlockERNS_10ASTContextEPNS_11DeclContextE", "clang::ASTWriter::WriteDeclContextLexicalBlock(clang::ASTContext&, clang::DeclContext*)"}, + {"_ZN5clang9ASTWriter10GetDeclRefEPKNS_4DeclE", "clang::ASTWriter::GetDeclRef(clang::Decl const*)"}, + {"_ZN5clang9ASTWriter20WriteTypeDeclOffsetsEv", "clang::ASTWriter::WriteTypeDeclOffsets()"}, + {"_ZN5clang9ASTWriter14WriteSelectorsERNS_4SemaE", "clang::ASTWriter::WriteSelectors(clang::Sema&)"}, + {"_ZN5clang9ASTWriter28WriteReferencedSelectorsPoolERNS_4SemaE", "clang::ASTWriter::WriteReferencedSelectorsPool(clang::Sema&)"}, + {"_ZN5clang9ASTWriter14AddSelectorRefENS_8SelectorERN4llvm15SmallVectorImplIyEE", "clang::ASTWriter::AddSelectorRef(clang::Selector, llvm::SmallVectorImpl&)"}, + {"_ZN5clang9ASTWriter20WriteIdentifierTableERNS_12PreprocessorE", "clang::ASTWriter::WriteIdentifierTable(clang::Preprocessor&)"}, + {"_ZN5clang9ASTWriter16getIdentifierRefEPKNS_14IdentifierInfoE", "clang::ASTWriter::getIdentifierRef(clang::IdentifierInfo const*)"}, + {"_ZN5clang9ASTWriter28WriteDeclContextVisibleBlockERNS_10ASTContextEPNS_11DeclContextE", "clang::ASTWriter::WriteDeclContextVisibleBlock(clang::ASTContext&, clang::DeclContext*)"}, + {"_ZN5clang31OnDiskChainedHashTableGeneratorIN12_GLOBAL__N_129ASTDeclContextNameLookupTraitEE6insertENS_15DeclarationNameERKNS_23DeclContextLookupResultERS2_", "clang::OnDiskChainedHashTableGenerator<(anonymous namespace)::ASTDeclContextNameLookupTrait>::insert(clang::DeclarationName, clang::DeclContextLookupResult const&, (anonymous namespace)::ASTDeclContextNameLookupTrait&)"}, + {"_ZN5clang31OnDiskChainedHashTableGeneratorIN12_GLOBAL__N_129ASTDeclContextNameLookupTraitEE4EmitERN4llvm11raw_ostreamERS2_", "clang::OnDiskChainedHashTableGenerator<(anonymous namespace)::ASTDeclContextNameLookupTrait>::Emit(llvm::raw_ostream&, (anonymous namespace)::ASTDeclContextNameLookupTrait&)"}, + {"_ZN5clang9ASTWriter29WriteDeclContextVisibleUpdateEPKNS_11DeclContextE", "clang::ASTWriter::WriteDeclContextVisibleUpdate(clang::DeclContext const*)"}, + {"_ZN5clang9ASTWriter9getDeclIDEPKNS_4DeclE", "clang::ASTWriter::getDeclID(clang::Decl const*)"}, + + // {"_ZN5clang9ASTWriter15WriteAttributesERKN4llvm11SmallVectorIPNS_4AttrELj2EEERNS1_15SmallVectorImplIyEE", + // "clang::ASTWriter::WriteAttributes(llvm::SmallVector const&, llvm::SmallVectorImpl&)"}, + // "clang::ASTWriter::WriteAttributes(llvm::SmallVector const&, llvm::SmallVectorImpl&)" was returned + + {"_ZN5clang9ASTWriter9AddStringEN4llvm9StringRefERNS1_15SmallVectorImplIyEE", "clang::ASTWriter::AddString(llvm::StringRef, llvm::SmallVectorImpl&)"}, + {"_ZN5clang9ASTWriter17AddTypeSourceInfoEPNS_14TypeSourceInfoERN4llvm15SmallVectorImplIyEE", "clang::ASTWriter::AddTypeSourceInfo(clang::TypeSourceInfo*, llvm::SmallVectorImpl&)"}, + {"_ZN5clang9ASTWriter10AddDeclRefEPKNS_4DeclERN4llvm15SmallVectorImplIyEE", "clang::ASTWriter::AddDeclRef(clang::Decl const*, llvm::SmallVectorImpl&)"}, + {"_ZN5clang9ASTWriter19SetIdentifierOffsetEPKNS_14IdentifierInfoEj", "clang::ASTWriter::SetIdentifierOffset(clang::IdentifierInfo const*, unsigned int)"}, + {"_ZN5clang9ASTWriter17SetSelectorOffsetENS_8SelectorEj", "clang::ASTWriter::SetSelectorOffset(clang::Selector, unsigned int)"}, + {"_ZN5clang9ASTWriterC1ERN4llvm15BitstreamWriterE", "clang::ASTWriter::ASTWriter(llvm::BitstreamWriter&)"}, + {"_ZN5clang9ASTWriterC2ERN4llvm15BitstreamWriterE", "clang::ASTWriter::ASTWriter(llvm::BitstreamWriter&)"}, + {"_ZN5clang9ASTWriter8WriteASTERNS_4SemaEPNS_17MemorizeStatCallsEPKc", "clang::ASTWriter::WriteAST(clang::Sema&, clang::MemorizeStatCalls*, char const*)"}, + {"_ZN5clang9ASTWriter13WriteASTChainERNS_4SemaEPNS_17MemorizeStatCallsEPKc", "clang::ASTWriter::WriteASTChain(clang::Sema&, clang::MemorizeStatCalls*, char const*)"}, + {"_ZN5clang9ASTWriter12WriteASTCoreERNS_4SemaEPNS_17MemorizeStatCallsEPKc", "clang::ASTWriter::WriteASTCore(clang::Sema&, clang::MemorizeStatCalls*, char const*)"}, + {"_ZN5clang9ASTWriter22WriteDeclUpdatesBlocksEv", "clang::ASTWriter::WriteDeclUpdatesBlocks()"}, + {"_ZN5clang9ASTWriter26WriteDeclReplacementsBlockEv", "clang::ASTWriter::WriteDeclReplacementsBlock()"}, + {"_ZN5clang9ASTWriter14AddSourceRangeENS_11SourceRangeERN4llvm15SmallVectorImplIyEE", "clang::ASTWriter::AddSourceRange(clang::SourceRange, llvm::SmallVectorImpl&)"}, + {"_ZN5clang9ASTWriter8AddAPIntERKN4llvm5APIntERNS1_15SmallVectorImplIyEE", "clang::ASTWriter::AddAPInt(llvm::APInt const&, llvm::SmallVectorImpl&)"}, + {"_ZN5clang9ASTWriter9AddAPSIntERKN4llvm6APSIntERNS1_15SmallVectorImplIyEE", "clang::ASTWriter::AddAPSInt(llvm::APSInt const&, llvm::SmallVectorImpl&)"}, + {"_ZN5clang9ASTWriter10AddAPFloatERKN4llvm7APFloatERNS1_15SmallVectorImplIyEE", "clang::ASTWriter::AddAPFloat(llvm::APFloat const&, llvm::SmallVectorImpl&)"}, + {"_ZN5clang9ASTWriter14getSelectorRefENS_8SelectorE", "clang::ASTWriter::getSelectorRef(clang::Selector)"}, + {"_ZN5clang9ASTWriter15AddCXXTemporaryEPKNS_12CXXTemporaryERN4llvm15SmallVectorImplIyEE", "clang::ASTWriter::AddCXXTemporary(clang::CXXTemporary const*, llvm::SmallVectorImpl&)"}, + {"_ZN5clang9ASTWriter23AddCXXBaseSpecifiersRefEPKNS_16CXXBaseSpecifierES3_RN4llvm15SmallVectorImplIyEE", "clang::ASTWriter::AddCXXBaseSpecifiersRef(clang::CXXBaseSpecifier const*, clang::CXXBaseSpecifier const*, llvm::SmallVectorImpl&)"}, + {"_ZN5clang9ASTWriter26AddTemplateArgumentLocInfoENS_16TemplateArgument7ArgKindERKNS_23TemplateArgumentLocInfoERN4llvm15SmallVectorImplIyEE", "clang::ASTWriter::AddTemplateArgumentLocInfo(clang::TemplateArgument::ArgKind, clang::TemplateArgumentLocInfo const&, llvm::SmallVectorImpl&)"}, + {"_ZN5clang9ASTWriter22AddTemplateArgumentLocERKNS_19TemplateArgumentLocERN4llvm15SmallVectorImplIyEE", "clang::ASTWriter::AddTemplateArgumentLoc(clang::TemplateArgumentLoc const&, llvm::SmallVectorImpl&)"}, + {"_ZN5clang9ASTWriter19AddTemplateArgumentERKNS_16TemplateArgumentERN4llvm15SmallVectorImplIyEE", "clang::ASTWriter::AddTemplateArgument(clang::TemplateArgument const&, llvm::SmallVectorImpl&)"}, + {"_ZN5clang9ASTWriter17GetOrCreateTypeIDENS_8QualTypeE", "clang::ASTWriter::GetOrCreateTypeID(clang::QualType)"}, + {"_ZN5clang9ASTWriter18GetOrCreateTypeIdxENS_8QualTypeE", "clang::ASTWriter::GetOrCreateTypeIdx(clang::QualType)"}, + {"_ZNK5clang9ASTWriter9getTypeIDENS_8QualTypeE", "clang::ASTWriter::getTypeID(clang::QualType) const"}, + {"_ZNK5clang9ASTWriter10getTypeIdxENS_8QualTypeE", "clang::ASTWriter::getTypeIdx(clang::QualType) const"}, + {"_ZN5clang9ASTWriter18AddDeclarationNameENS_15DeclarationNameERN4llvm15SmallVectorImplIyEE", "clang::ASTWriter::AddDeclarationName(clang::DeclarationName, llvm::SmallVectorImpl&)"}, + {"_ZN5clang9ASTWriter21AddDeclarationNameLocERKNS_18DeclarationNameLocENS_15DeclarationNameERN4llvm15SmallVectorImplIyEE", "clang::ASTWriter::AddDeclarationNameLoc(clang::DeclarationNameLoc const&, clang::DeclarationName, llvm::SmallVectorImpl&)"}, + {"_ZN5clang9ASTWriter22AddDeclarationNameInfoERKNS_19DeclarationNameInfoERN4llvm15SmallVectorImplIyEE", "clang::ASTWriter::AddDeclarationNameInfo(clang::DeclarationNameInfo const&, llvm::SmallVectorImpl&)"}, + {"_ZN5clang9ASTWriter16AddQualifierInfoERKNS_13QualifierInfoERN4llvm15SmallVectorImplIyEE", "clang::ASTWriter::AddQualifierInfo(clang::QualifierInfo const&, llvm::SmallVectorImpl&)"}, + {"_ZN5clang9ASTWriter22AddNestedNameSpecifierEPNS_19NestedNameSpecifierERN4llvm15SmallVectorImplIyEE", "clang::ASTWriter::AddNestedNameSpecifier(clang::NestedNameSpecifier*, llvm::SmallVectorImpl&)"}, + {"_ZN5clang9ASTWriter24AddTemplateParameterListEPKNS_21TemplateParameterListERN4llvm15SmallVectorImplIyEE", "clang::ASTWriter::AddTemplateParameterList(clang::TemplateParameterList const*, llvm::SmallVectorImpl&)"}, + {"_ZN5clang9ASTWriter15AddTemplateNameENS_12TemplateNameERN4llvm15SmallVectorImplIyEE", "clang::ASTWriter::AddTemplateName(clang::TemplateName, llvm::SmallVectorImpl&)"}, + {"_ZN5clang9ASTWriter23AddTemplateArgumentListEPKNS_20TemplateArgumentListERN4llvm15SmallVectorImplIyEE", "clang::ASTWriter::AddTemplateArgumentList(clang::TemplateArgumentList const*, llvm::SmallVectorImpl&)"}, + {"_ZN5clang9ASTWriter16AddUnresolvedSetERKNS_17UnresolvedSetImplERN4llvm15SmallVectorImplIyEE", "clang::ASTWriter::AddUnresolvedSet(clang::UnresolvedSetImpl const&, llvm::SmallVectorImpl&)"}, + {"_ZN5clang9ASTWriter19AddCXXBaseSpecifierERKNS_16CXXBaseSpecifierERN4llvm15SmallVectorImplIyEE", "clang::ASTWriter::AddCXXBaseSpecifier(clang::CXXBaseSpecifier const&, llvm::SmallVectorImpl&)"}, + {"_ZN5clang9ASTWriter22FlushCXXBaseSpecifiersEv", "clang::ASTWriter::FlushCXXBaseSpecifiers()"}, + {"_ZN5clang9ASTWriter22AddCXXCtorInitializersEPKPKNS_18CXXCtorInitializerEjRN4llvm15SmallVectorImplIyEE", "clang::ASTWriter::AddCXXCtorInitializers(clang::CXXCtorInitializer const* const*, unsigned int, llvm::SmallVectorImpl&)"}, + {"_ZN5clang9ASTWriter20AddCXXDefinitionDataEPKNS_13CXXRecordDeclERN4llvm15SmallVectorImplIyEE", "clang::ASTWriter::AddCXXDefinitionData(clang::CXXRecordDecl const*, llvm::SmallVectorImpl&)"}, + {"_ZN5clang9ASTWriter17ReaderInitializedEPNS_9ASTReaderE", "clang::ASTWriter::ReaderInitialized(clang::ASTReader*)"}, + {"_ZN5clang9ASTWriter14IdentifierReadEjPNS_14IdentifierInfoE", "clang::ASTWriter::IdentifierRead(unsigned int, clang::IdentifierInfo*)"}, + {"_ZN5clang9ASTWriter8TypeReadENS_13serialization7TypeIdxENS_8QualTypeE", "clang::ASTWriter::TypeRead(clang::serialization::TypeIdx, clang::QualType)"}, + {"_ZN5clang9ASTWriter8DeclReadEjPKNS_4DeclE", "clang::ASTWriter::DeclRead(unsigned int, clang::Decl const*)"}, + {"_ZN5clang9ASTWriter12SelectorReadEjNS_8SelectorE", "clang::ASTWriter::SelectorRead(unsigned int, clang::Selector)"}, + {"_ZN5clang9ASTWriter19MacroDefinitionReadEjPNS_15MacroDefinitionE", "clang::ASTWriter::MacroDefinitionRead(unsigned int, clang::MacroDefinition*)"}, + + // {"_ZThn8_N5clang9ASTWriter22CompletedTagDefinitionEPKNS_7TagDeclE", + // "non-virtual thunk to clang::ASTWriter::CompletedTagDefinition(clang::TagDecl const*)"}, + // "virtual function non-virtual override offset : -8 clang::ASTWriter::CompletedTagDefinition(clang::TagDecl const*)" was returned + + {"_ZN5clang9ASTWriter22CompletedTagDefinitionEPKNS_7TagDeclE", "clang::ASTWriter::CompletedTagDefinition(clang::TagDecl const*)"}, + + // {"_ZThn8_N5clang9ASTWriter16AddedVisibleDeclEPKNS_11DeclContextEPKNS_4DeclE", + // "non-virtual thunk to clang::ASTWriter::AddedVisibleDecl(clang::DeclContext const*, clang::Decl const*)"}, + // "virtual function non-virtual override offset : -8 clang::ASTWriter::AddedVisibleDecl(clang::DeclContext const*, clang::Decl const*)" was returned + + {"_ZN5clang9ASTWriter16AddedVisibleDeclEPKNS_11DeclContextEPKNS_4DeclE", "clang::ASTWriter::AddedVisibleDecl(clang::DeclContext const*, clang::Decl const*)"}, + + // {"_ZThn8_N5clang9ASTWriter22AddedCXXImplicitMemberEPKNS_13CXXRecordDeclEPKNS_4DeclE", + // "non-virtual thunk to clang::ASTWriter::AddedCXXImplicitMember(clang::CXXRecordDecl const*, clang::Decl const*)"}, + // "virtual function non-virtual override offset : -8 clang::ASTWriter::AddedCXXImplicitMember(clang::CXXRecordDecl const*, clang::Decl const*)" was returned + + {"_ZN5clang9ASTWriter22AddedCXXImplicitMemberEPKNS_13CXXRecordDeclEPKNS_4DeclE", "clang::ASTWriter::AddedCXXImplicitMember(clang::CXXRecordDecl const*, clang::Decl const*)"}, + + // {"_ZThn8_N5clang9ASTWriter30AddedCXXTemplateSpecializationEPKNS_17ClassTemplateDeclEPKNS_31ClassTemplateSpecializationDeclE", + // "non-virtual thunk to clang::ASTWriter::AddedCXXTemplateSpecialization(clang::ClassTemplateDecl const*, clang::ClassTemplateSpecializationDecl const*)"}, + // "virtual function non-virtual override offset : -8 clang::ASTWriter::AddedCXXTemplateSpecialization(clang::ClassTemplateDecl const*, clang::ClassTemplateSpecializationDecl const*)" was returned + + {"_ZN5clang9ASTWriter30AddedCXXTemplateSpecializationEPKNS_17ClassTemplateDeclEPKNS_31ClassTemplateSpecializationDeclE", "clang::ASTWriter::AddedCXXTemplateSpecialization(clang::ClassTemplateDecl const*, clang::ClassTemplateSpecializationDecl const*)"}, + {"_ZN5clang24ASTSerializationListenerD0Ev", "clang::ASTSerializationListener::~ASTSerializationListener()"}, + {"_ZN5clang24ASTSerializationListenerD1Ev", "clang::ASTSerializationListener::~ASTSerializationListener()"}, + {"_ZN5clang24ASTSerializationListenerD2Ev", "clang::ASTSerializationListener::~ASTSerializationListener()"}, + {"_ZN12_GLOBAL__N_113TypeLocWriter20VisitFunctionTypeLocEN5clang15FunctionTypeLocE", "(anonymous namespace)::TypeLocWriter::VisitFunctionTypeLoc(clang::FunctionTypeLoc)"}, + {"_ZN12_GLOBAL__N_113TypeLocWriter17VisitArrayTypeLocEN5clang12ArrayTypeLocE", "(anonymous namespace)::TypeLocWriter::VisitArrayTypeLoc(clang::ArrayTypeLoc)"}, + {"_ZN12_GLOBAL__N_113ASTTypeWriter12VisitTagTypeEPKN5clang7TagTypeE", "(anonymous namespace)::ASTTypeWriter::VisitTagType(clang::TagType const*)"}, + {"_ZN12_GLOBAL__N_113ASTTypeWriter17VisitFunctionTypeEPKN5clang12FunctionTypeE", "(anonymous namespace)::ASTTypeWriter::VisitFunctionType(clang::FunctionType const*)"}, + {"_ZN12_GLOBAL__N_113ASTTypeWriter14VisitArrayTypeEPKN5clang9ArrayTypeE", "(anonymous namespace)::ASTTypeWriter::VisitArrayType(clang::ArrayType const*)"}, + {"_ZN4llvm15BitstreamWriter13EnterSubblockEjj", "llvm::BitstreamWriter::EnterSubblock(unsigned int, unsigned int)"}, + {"_ZN4llvm15BitstreamWriter9ExitBlockEv", "llvm::BitstreamWriter::ExitBlock()"}, + {"_ZN4llvm15BitstreamWriter10EmitRecordIyEEvjRNS_15SmallVectorImplIT_EEj", "void llvm::BitstreamWriter::EmitRecord(unsigned int, llvm::SmallVectorImpl&, unsigned int)"}, + + // {"_ZN4llvm15SmallVectorImplIyE6insertIPKcEEPyS5_T_S6_", + // "unsigned long long* llvm::SmallVectorImpl::insert(unsigned long long*, char const*, char const*)"}, + // got error + + {"_ZN4llvm15BitstreamWriter4EmitEjj", "llvm::BitstreamWriter::Emit(unsigned int, unsigned int)"}, + + // {"_ZN5clang13serialization10MakeTypeIDISt9binder1stISt10mem_fun1_tINS0_7TypeIdxENS_9ASTWriterENS_8QualTypeEEEEEjS6_T_", + // "unsigned int clang::serialization::MakeTypeID>>(clang::QualType, std::binder1st>)"}, + // "unsigned int clang::serialization::MakeTypeID>>(clang::QualType, clang::serialization::TypeIdx)" was returned + + + // {"_ZN5clang13serialization10MakeTypeIDISt9binder1stISt16const_mem_fun1_tINS0_7TypeIdxENS_9ASTWriterENS_8QualTypeEEEEEjS6_T_", + // "unsigned int clang::serialization::MakeTypeID>>(clang::QualType, std::binder1st>)"}, + // "unsigned int clang::serialization::MakeTypeID>>(clang::QualType, clang::serialization::TypeIdx)" was returned + + + // {"_ZN4llvm8DenseMapIPKN5clang4DeclENS_11SmallVectorIyLj2EEENS_12DenseMapInfoIS4_EENS7_IS6_EEE16FindAndConstructERKS4_", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::FindAndConstruct(clang::Decl const* const&)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::FindAndConstruct(clang::Decl const* const&)" was returned + + + // {"_ZN4llvm8DenseMapIPKN5clang4DeclENS_11SmallVectorIyLj2EEENS_12DenseMapInfoIS4_EENS7_IS6_EEE16InsertIntoBucketERKS4_RKS6_PSt4pairIS4_S6_E", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(clang::Decl const* const&, llvm::SmallVector const&, std::pair>*)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(clang::Decl const* const&, llvm::SmallVector const&, std::pair>*)" was returned + + + // {"_ZN4llvm8DenseMapIPKN5clang4DeclENS_11SmallVectorIyLj2EEENS_12DenseMapInfoIS4_EENS7_IS6_EEE4growEj", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)" was returned + + {"_ZN4llvm15SmallVectorImplIyEaSERKS1_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang9ASTWriter23QueuedCXXBaseSpecifiersELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN4llvm8DenseMapIPKN5clang15MacroDefinitionEjNS_12DenseMapInfoIS4_EENS5_IjEEE16InsertIntoBucketERKS4_RKjPSt4pairIS4_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::MacroDefinition const* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang15MacroDefinitionEjNS_12DenseMapInfoIS4_EENS5_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNSt5dequeIN5clang9ASTWriter10DeclOrTypeESaIS2_EE9push_backERKS2_", "std::deque>::push_back(clang::ASTWriter::DeclOrType const&)"}, + {"_ZNSt5dequeIN5clang9ASTWriter10DeclOrTypeESaIS2_EE17_M_reallocate_mapEmb", "std::deque>::_M_reallocate_map(unsigned long, bool)"}, + {"_ZNSt11_Deque_baseIN5clang9ASTWriter10DeclOrTypeESaIS2_EE17_M_initialize_mapEm", "std::_Deque_base>::_M_initialize_map(unsigned long)"}, + {"_ZNSt5dequeIN5clang9ASTWriter10DeclOrTypeESaIS2_EEC2ERKS4_", "std::deque>::deque(std::deque> const&)"}, + {"_ZN4llvm8DenseMapIN5clang8SelectorEjNS_12DenseMapInfoIS2_EENS3_IjEEE16InsertIntoBucketERKS2_RKjPSt4pairIS2_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::Selector const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIN5clang8SelectorEjNS_12DenseMapInfoIS2_EENS3_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + + // {"_ZN4llvm15SmallVectorImplIPN5clang4DeclEE6appendINS1_18IdentifierResolver8iteratorEEEvT_S8_", + // "void llvm::SmallVectorImpl::append(clang::IdentifierResolver::iterator, clang::IdentifierResolver::iterator)"}, + // got error + + {"_ZN4llvm15BitstreamWriter24EmitRecordWithAbbrevImplIyEEvjRNS_15SmallVectorImplIT_EENS_9StringRefE", "void llvm::BitstreamWriter::EmitRecordWithAbbrevImpl(unsigned int, llvm::SmallVectorImpl&, llvm::StringRef)"}, + {"_ZN4llvm15BitstreamWriter20EmitAbbreviatedFieldIhEEvRKNS_15BitCodeAbbrevOpET_", "void llvm::BitstreamWriter::EmitAbbreviatedField(llvm::BitCodeAbbrevOp const&, unsigned char)"}, + {"_ZN4llvm15BitstreamWriter20EmitAbbreviatedFieldIyEEvRKNS_15BitCodeAbbrevOpET_", "void llvm::BitstreamWriter::EmitAbbreviatedField(llvm::BitCodeAbbrevOp const&, unsigned long long)"}, + {"_ZN4llvm15BitstreamWriter11FlushToWordEv", "llvm::BitstreamWriter::FlushToWord()"}, + {"_ZNSt6vectorIhSaIhEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPhS1_EERKh", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, unsigned char const&)"}, + {"_ZN4llvm15BitstreamWriter9EmitVBR64Eyj", "llvm::BitstreamWriter::EmitVBR64(unsigned long long, unsigned int)"}, + {"_ZN4llvm15SmallVectorImplIyE6insertEPyRKy", "llvm::SmallVectorImpl::insert(unsigned long long*, unsigned long long const&)"}, + {"_ZN4llvm8DenseMapIPKN5clang14IdentifierInfoEyNS_12DenseMapInfoIS4_EENS5_IyEEE16InsertIntoBucketERKS4_RKyPSt4pairIS4_yE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::IdentifierInfo const* const&, unsigned long long const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang14IdentifierInfoEyNS_12DenseMapInfoIS4_EENS5_IyEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm15BitstreamWriter12EncodeAbbrevEPNS_13BitCodeAbbrevE", "llvm::BitstreamWriter::EncodeAbbrev(llvm::BitCodeAbbrev*)"}, + {"_ZNSt6vectorIN4llvm15BitstreamWriter5BlockESaIS2_EE9push_backERKS2_", "std::vector>::push_back(llvm::BitstreamWriter::Block const&)"}, + {"_ZNSt6vectorIN4llvm15BitstreamWriter5BlockESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::BitstreamWriter::Block const&)"}, + {"_ZN5clang13ASTDeclWriter5VisitEPNS_4DeclE", "clang::ASTDeclWriter::Visit(clang::Decl*)"}, + {"_ZN5clang13ASTDeclWriter9VisitDeclEPNS_4DeclE", "clang::ASTDeclWriter::VisitDecl(clang::Decl*)"}, + {"_ZN5clang13ASTDeclWriter24VisitTranslationUnitDeclEPNS_19TranslationUnitDeclE", "clang::ASTDeclWriter::VisitTranslationUnitDecl(clang::TranslationUnitDecl*)"}, + {"_ZN5clang13ASTDeclWriter14VisitNamedDeclEPNS_9NamedDeclE", "clang::ASTDeclWriter::VisitNamedDecl(clang::NamedDecl*)"}, + {"_ZN5clang13ASTDeclWriter13VisitTypeDeclEPNS_8TypeDeclE", "clang::ASTDeclWriter::VisitTypeDecl(clang::TypeDecl*)"}, + {"_ZN5clang13ASTDeclWriter16VisitTypedefDeclEPNS_11TypedefDeclE", "clang::ASTDeclWriter::VisitTypedefDecl(clang::TypedefDecl*)"}, + {"_ZN5clang13ASTDeclWriter12VisitTagDeclEPNS_7TagDeclE", "clang::ASTDeclWriter::VisitTagDecl(clang::TagDecl*)"}, + {"_ZN5clang13ASTDeclWriter13VisitEnumDeclEPNS_8EnumDeclE", "clang::ASTDeclWriter::VisitEnumDecl(clang::EnumDecl*)"}, + {"_ZN5clang13ASTDeclWriter15VisitRecordDeclEPNS_10RecordDeclE", "clang::ASTDeclWriter::VisitRecordDecl(clang::RecordDecl*)"}, + {"_ZN5clang13ASTDeclWriter14VisitValueDeclEPNS_9ValueDeclE", "clang::ASTDeclWriter::VisitValueDecl(clang::ValueDecl*)"}, + {"_ZN5clang13ASTDeclWriter21VisitEnumConstantDeclEPNS_16EnumConstantDeclE", "clang::ASTDeclWriter::VisitEnumConstantDecl(clang::EnumConstantDecl*)"}, + {"_ZN5clang13ASTDeclWriter19VisitDeclaratorDeclEPNS_14DeclaratorDeclE", "clang::ASTDeclWriter::VisitDeclaratorDecl(clang::DeclaratorDecl*)"}, + {"_ZN5clang13ASTDeclWriter17VisitFunctionDeclEPNS_12FunctionDeclE", "clang::ASTDeclWriter::VisitFunctionDecl(clang::FunctionDecl*)"}, + {"_ZN5clang13ASTDeclWriter19VisitObjCMethodDeclEPNS_14ObjCMethodDeclE", "clang::ASTDeclWriter::VisitObjCMethodDecl(clang::ObjCMethodDecl*)"}, + {"_ZN5clang13ASTDeclWriter22VisitObjCContainerDeclEPNS_17ObjCContainerDeclE", "clang::ASTDeclWriter::VisitObjCContainerDecl(clang::ObjCContainerDecl*)"}, + {"_ZN5clang13ASTDeclWriter22VisitObjCInterfaceDeclEPNS_17ObjCInterfaceDeclE", "clang::ASTDeclWriter::VisitObjCInterfaceDecl(clang::ObjCInterfaceDecl*)"}, + {"_ZN5clang13ASTDeclWriter17VisitObjCIvarDeclEPNS_12ObjCIvarDeclE", "clang::ASTDeclWriter::VisitObjCIvarDecl(clang::ObjCIvarDecl*)"}, + {"_ZN5clang13ASTDeclWriter14VisitFieldDeclEPNS_9FieldDeclE", "clang::ASTDeclWriter::VisitFieldDecl(clang::FieldDecl*)"}, + {"_ZN5clang13ASTDeclWriter21VisitObjCProtocolDeclEPNS_16ObjCProtocolDeclE", "clang::ASTDeclWriter::VisitObjCProtocolDecl(clang::ObjCProtocolDecl*)"}, + {"_ZN5clang13ASTDeclWriter24VisitObjCAtDefsFieldDeclEPNS_19ObjCAtDefsFieldDeclE", "clang::ASTDeclWriter::VisitObjCAtDefsFieldDecl(clang::ObjCAtDefsFieldDecl*)"}, + {"_ZN5clang13ASTDeclWriter18VisitObjCClassDeclEPNS_13ObjCClassDeclE", "clang::ASTDeclWriter::VisitObjCClassDecl(clang::ObjCClassDecl*)"}, + {"_ZN5clang13ASTDeclWriter28VisitObjCForwardProtocolDeclEPNS_23ObjCForwardProtocolDeclE", "clang::ASTDeclWriter::VisitObjCForwardProtocolDecl(clang::ObjCForwardProtocolDecl*)"}, + {"_ZN5clang13ASTDeclWriter21VisitObjCCategoryDeclEPNS_16ObjCCategoryDeclE", "clang::ASTDeclWriter::VisitObjCCategoryDecl(clang::ObjCCategoryDecl*)"}, + {"_ZN5clang13ASTDeclWriter28VisitObjCCompatibleAliasDeclEPNS_23ObjCCompatibleAliasDeclE", "clang::ASTDeclWriter::VisitObjCCompatibleAliasDecl(clang::ObjCCompatibleAliasDecl*)"}, + {"_ZN5clang13ASTDeclWriter21VisitObjCPropertyDeclEPNS_16ObjCPropertyDeclE", "clang::ASTDeclWriter::VisitObjCPropertyDecl(clang::ObjCPropertyDecl*)"}, + {"_ZN5clang13ASTDeclWriter17VisitObjCImplDeclEPNS_12ObjCImplDeclE", "clang::ASTDeclWriter::VisitObjCImplDecl(clang::ObjCImplDecl*)"}, + {"_ZN5clang13ASTDeclWriter25VisitObjCCategoryImplDeclEPNS_20ObjCCategoryImplDeclE", "clang::ASTDeclWriter::VisitObjCCategoryImplDecl(clang::ObjCCategoryImplDecl*)"}, + {"_ZN5clang13ASTDeclWriter27VisitObjCImplementationDeclEPNS_22ObjCImplementationDeclE", "clang::ASTDeclWriter::VisitObjCImplementationDecl(clang::ObjCImplementationDecl*)"}, + {"_ZN5clang13ASTDeclWriter25VisitObjCPropertyImplDeclEPNS_20ObjCPropertyImplDeclE", "clang::ASTDeclWriter::VisitObjCPropertyImplDecl(clang::ObjCPropertyImplDecl*)"}, + {"_ZN5clang13ASTDeclWriter22VisitIndirectFieldDeclEPNS_17IndirectFieldDeclE", "clang::ASTDeclWriter::VisitIndirectFieldDecl(clang::IndirectFieldDecl*)"}, + {"_ZN5clang13ASTDeclWriter12VisitVarDeclEPNS_7VarDeclE", "clang::ASTDeclWriter::VisitVarDecl(clang::VarDecl*)"}, + {"_ZN5clang13ASTDeclWriter22VisitImplicitParamDeclEPNS_17ImplicitParamDeclE", "clang::ASTDeclWriter::VisitImplicitParamDecl(clang::ImplicitParamDecl*)"}, + {"_ZN5clang13ASTDeclWriter16VisitParmVarDeclEPNS_11ParmVarDeclE", "clang::ASTDeclWriter::VisitParmVarDecl(clang::ParmVarDecl*)"}, + {"_ZN5clang13ASTDeclWriter21VisitFileScopeAsmDeclEPNS_16FileScopeAsmDeclE", "clang::ASTDeclWriter::VisitFileScopeAsmDecl(clang::FileScopeAsmDecl*)"}, + {"_ZN5clang13ASTDeclWriter14VisitBlockDeclEPNS_9BlockDeclE", "clang::ASTDeclWriter::VisitBlockDecl(clang::BlockDecl*)"}, + {"_ZN5clang13ASTDeclWriter20VisitLinkageSpecDeclEPNS_15LinkageSpecDeclE", "clang::ASTDeclWriter::VisitLinkageSpecDecl(clang::LinkageSpecDecl*)"}, + {"_ZN5clang13ASTDeclWriter18VisitNamespaceDeclEPNS_13NamespaceDeclE", "clang::ASTDeclWriter::VisitNamespaceDecl(clang::NamespaceDecl*)"}, + {"_ZN5clang13ASTDeclWriter23VisitNamespaceAliasDeclEPNS_18NamespaceAliasDeclE", "clang::ASTDeclWriter::VisitNamespaceAliasDecl(clang::NamespaceAliasDecl*)"}, + {"_ZN5clang13ASTDeclWriter14VisitUsingDeclEPNS_9UsingDeclE", "clang::ASTDeclWriter::VisitUsingDecl(clang::UsingDecl*)"}, + {"_ZN5clang13ASTDeclWriter20VisitUsingShadowDeclEPNS_15UsingShadowDeclE", "clang::ASTDeclWriter::VisitUsingShadowDecl(clang::UsingShadowDecl*)"}, + {"_ZN5clang13ASTDeclWriter23VisitUsingDirectiveDeclEPNS_18UsingDirectiveDeclE", "clang::ASTDeclWriter::VisitUsingDirectiveDecl(clang::UsingDirectiveDecl*)"}, + {"_ZN5clang13ASTDeclWriter29VisitUnresolvedUsingValueDeclEPNS_24UnresolvedUsingValueDeclE", "clang::ASTDeclWriter::VisitUnresolvedUsingValueDecl(clang::UnresolvedUsingValueDecl*)"}, + {"_ZN5clang13ASTDeclWriter32VisitUnresolvedUsingTypenameDeclEPNS_27UnresolvedUsingTypenameDeclE", "clang::ASTDeclWriter::VisitUnresolvedUsingTypenameDecl(clang::UnresolvedUsingTypenameDecl*)"}, + {"_ZN5clang13ASTDeclWriter18VisitCXXRecordDeclEPNS_13CXXRecordDeclE", "clang::ASTDeclWriter::VisitCXXRecordDecl(clang::CXXRecordDecl*)"}, + {"_ZN5clang13ASTDeclWriter18VisitCXXMethodDeclEPNS_13CXXMethodDeclE", "clang::ASTDeclWriter::VisitCXXMethodDecl(clang::CXXMethodDecl*)"}, + {"_ZN5clang13ASTDeclWriter23VisitCXXConstructorDeclEPNS_18CXXConstructorDeclE", "clang::ASTDeclWriter::VisitCXXConstructorDecl(clang::CXXConstructorDecl*)"}, + {"_ZN5clang13ASTDeclWriter22VisitCXXDestructorDeclEPNS_17CXXDestructorDeclE", "clang::ASTDeclWriter::VisitCXXDestructorDecl(clang::CXXDestructorDecl*)"}, + {"_ZN5clang13ASTDeclWriter22VisitCXXConversionDeclEPNS_17CXXConversionDeclE", "clang::ASTDeclWriter::VisitCXXConversionDecl(clang::CXXConversionDecl*)"}, + {"_ZN5clang13ASTDeclWriter19VisitAccessSpecDeclEPNS_14AccessSpecDeclE", "clang::ASTDeclWriter::VisitAccessSpecDecl(clang::AccessSpecDecl*)"}, + {"_ZN5clang13ASTDeclWriter15VisitFriendDeclEPNS_10FriendDeclE", "clang::ASTDeclWriter::VisitFriendDecl(clang::FriendDecl*)"}, + {"_ZN5clang13ASTDeclWriter23VisitFriendTemplateDeclEPNS_18FriendTemplateDeclE", "clang::ASTDeclWriter::VisitFriendTemplateDecl(clang::FriendTemplateDecl*)"}, + {"_ZN5clang13ASTDeclWriter17VisitTemplateDeclEPNS_12TemplateDeclE", "clang::ASTDeclWriter::VisitTemplateDecl(clang::TemplateDecl*)"}, + {"_ZN5clang13ASTDeclWriter29VisitRedeclarableTemplateDeclEPNS_24RedeclarableTemplateDeclE", "clang::ASTDeclWriter::VisitRedeclarableTemplateDecl(clang::RedeclarableTemplateDecl*)"}, + {"_ZN5clang13ASTDeclWriter22VisitClassTemplateDeclEPNS_17ClassTemplateDeclE", "clang::ASTDeclWriter::VisitClassTemplateDecl(clang::ClassTemplateDecl*)"}, + {"_ZN5clang13ASTDeclWriter36VisitClassTemplateSpecializationDeclEPNS_31ClassTemplateSpecializationDeclE", "clang::ASTDeclWriter::VisitClassTemplateSpecializationDecl(clang::ClassTemplateSpecializationDecl*)"}, + {"_ZN5clang13ASTDeclWriter43VisitClassTemplatePartialSpecializationDeclEPNS_38ClassTemplatePartialSpecializationDeclE", "clang::ASTDeclWriter::VisitClassTemplatePartialSpecializationDecl(clang::ClassTemplatePartialSpecializationDecl*)"}, + {"_ZN5clang13ASTDeclWriter25VisitFunctionTemplateDeclEPNS_20FunctionTemplateDeclE", "clang::ASTDeclWriter::VisitFunctionTemplateDecl(clang::FunctionTemplateDecl*)"}, + {"_ZN5clang13ASTDeclWriter25VisitTemplateTypeParmDeclEPNS_20TemplateTypeParmDeclE", "clang::ASTDeclWriter::VisitTemplateTypeParmDecl(clang::TemplateTypeParmDecl*)"}, + {"_ZN5clang13ASTDeclWriter28VisitNonTypeTemplateParmDeclEPNS_23NonTypeTemplateParmDeclE", "clang::ASTDeclWriter::VisitNonTypeTemplateParmDecl(clang::NonTypeTemplateParmDecl*)"}, + {"_ZN5clang13ASTDeclWriter29VisitTemplateTemplateParmDeclEPNS_24TemplateTemplateParmDeclE", "clang::ASTDeclWriter::VisitTemplateTemplateParmDecl(clang::TemplateTemplateParmDecl*)"}, + {"_ZN5clang13ASTDeclWriter21VisitStaticAssertDeclEPNS_16StaticAssertDeclE", "clang::ASTDeclWriter::VisitStaticAssertDecl(clang::StaticAssertDecl*)"}, + {"_ZN5clang13ASTDeclWriter16VisitDeclContextEPNS_11DeclContextEyy", "clang::ASTDeclWriter::VisitDeclContext(clang::DeclContext*, unsigned long long, unsigned long long)"}, + {"_ZN5clang9ASTWriter22WriteDeclsBlockAbbrevsEv", "clang::ASTWriter::WriteDeclsBlockAbbrevs()"}, + {"_ZN5clang9ASTWriter9WriteDeclERNS_10ASTContextEPNS_4DeclE", "clang::ASTWriter::WriteDecl(clang::ASTContext&, clang::Decl*)"}, + {"_ZN5clang11DeclVisitorINS_13ASTDeclWriterEvE5VisitEPNS_4DeclE", "clang::DeclVisitor::Visit(clang::Decl*)"}, + {"_ZN5clang13ASTDeclWriter17VisitRedeclarableINS_7TagDeclEEEvPNS_12RedeclarableIT_EE", "void clang::ASTDeclWriter::VisitRedeclarable(clang::Redeclarable*)"}, + {"_ZN5clang13ASTDeclWriter17VisitRedeclarableINS_12FunctionDeclEEEvPNS_12RedeclarableIT_EE", "void clang::ASTDeclWriter::VisitRedeclarable(clang::Redeclarable*)"}, + {"_ZN5clang13ASTDeclWriter17VisitRedeclarableINS_7VarDeclEEEvPNS_12RedeclarableIT_EE", "void clang::ASTDeclWriter::VisitRedeclarable(clang::Redeclarable*)"}, + {"_ZN5clang13ASTStmtWriter31AddExplicitTemplateArgumentListERKNS_28ExplicitTemplateArgumentListE", "clang::ASTStmtWriter::AddExplicitTemplateArgumentList(clang::ExplicitTemplateArgumentList const&)"}, + {"_ZN5clang13ASTStmtWriter9VisitStmtEPNS_4StmtE", "clang::ASTStmtWriter::VisitStmt(clang::Stmt*)"}, + {"_ZN5clang13ASTStmtWriter13VisitNullStmtEPNS_8NullStmtE", "clang::ASTStmtWriter::VisitNullStmt(clang::NullStmt*)"}, + {"_ZN5clang13ASTStmtWriter17VisitCompoundStmtEPNS_12CompoundStmtE", "clang::ASTStmtWriter::VisitCompoundStmt(clang::CompoundStmt*)"}, + {"_ZN5clang13ASTStmtWriter15VisitSwitchCaseEPNS_10SwitchCaseE", "clang::ASTStmtWriter::VisitSwitchCase(clang::SwitchCase*)"}, + {"_ZN5clang9ASTWriter15getSwitchCaseIDEPNS_10SwitchCaseE", "clang::ASTWriter::getSwitchCaseID(clang::SwitchCase*)"}, + {"_ZN5clang13ASTStmtWriter13VisitCaseStmtEPNS_8CaseStmtE", "clang::ASTStmtWriter::VisitCaseStmt(clang::CaseStmt*)"}, + {"_ZN5clang13ASTStmtWriter16VisitDefaultStmtEPNS_11DefaultStmtE", "clang::ASTStmtWriter::VisitDefaultStmt(clang::DefaultStmt*)"}, + {"_ZN5clang13ASTStmtWriter14VisitLabelStmtEPNS_9LabelStmtE", "clang::ASTStmtWriter::VisitLabelStmt(clang::LabelStmt*)"}, + {"_ZN5clang9ASTWriter10GetLabelIDEPNS_9LabelStmtE", "clang::ASTWriter::GetLabelID(clang::LabelStmt*)"}, + {"_ZN5clang13ASTStmtWriter11VisitIfStmtEPNS_6IfStmtE", "clang::ASTStmtWriter::VisitIfStmt(clang::IfStmt*)"}, + {"_ZN5clang13ASTStmtWriter15VisitSwitchStmtEPNS_10SwitchStmtE", "clang::ASTStmtWriter::VisitSwitchStmt(clang::SwitchStmt*)"}, + {"_ZN5clang9ASTWriter18RecordSwitchCaseIDEPNS_10SwitchCaseE", "clang::ASTWriter::RecordSwitchCaseID(clang::SwitchCase*)"}, + {"_ZN5clang13ASTStmtWriter14VisitWhileStmtEPNS_9WhileStmtE", "clang::ASTStmtWriter::VisitWhileStmt(clang::WhileStmt*)"}, + {"_ZN5clang13ASTStmtWriter11VisitDoStmtEPNS_6DoStmtE", "clang::ASTStmtWriter::VisitDoStmt(clang::DoStmt*)"}, + {"_ZN5clang13ASTStmtWriter12VisitForStmtEPNS_7ForStmtE", "clang::ASTStmtWriter::VisitForStmt(clang::ForStmt*)"}, + {"_ZN5clang13ASTStmtWriter13VisitGotoStmtEPNS_8GotoStmtE", "clang::ASTStmtWriter::VisitGotoStmt(clang::GotoStmt*)"}, + {"_ZN5clang13ASTStmtWriter21VisitIndirectGotoStmtEPNS_16IndirectGotoStmtE", "clang::ASTStmtWriter::VisitIndirectGotoStmt(clang::IndirectGotoStmt*)"}, + {"_ZN5clang13ASTStmtWriter17VisitContinueStmtEPNS_12ContinueStmtE", "clang::ASTStmtWriter::VisitContinueStmt(clang::ContinueStmt*)"}, + {"_ZN5clang13ASTStmtWriter14VisitBreakStmtEPNS_9BreakStmtE", "clang::ASTStmtWriter::VisitBreakStmt(clang::BreakStmt*)"}, + {"_ZN5clang13ASTStmtWriter15VisitReturnStmtEPNS_10ReturnStmtE", "clang::ASTStmtWriter::VisitReturnStmt(clang::ReturnStmt*)"}, + {"_ZN5clang13ASTStmtWriter13VisitDeclStmtEPNS_8DeclStmtE", "clang::ASTStmtWriter::VisitDeclStmt(clang::DeclStmt*)"}, + {"_ZN5clang13ASTStmtWriter12VisitAsmStmtEPNS_7AsmStmtE", "clang::ASTStmtWriter::VisitAsmStmt(clang::AsmStmt*)"}, + {"_ZN5clang13ASTStmtWriter9VisitExprEPNS_4ExprE", "clang::ASTStmtWriter::VisitExpr(clang::Expr*)"}, + {"_ZN5clang13ASTStmtWriter19VisitPredefinedExprEPNS_14PredefinedExprE", "clang::ASTStmtWriter::VisitPredefinedExpr(clang::PredefinedExpr*)"}, + {"_ZN5clang13ASTStmtWriter16VisitDeclRefExprEPNS_11DeclRefExprE", "clang::ASTStmtWriter::VisitDeclRefExpr(clang::DeclRefExpr*)"}, + {"_ZN5clang13ASTStmtWriter19VisitIntegerLiteralEPNS_14IntegerLiteralE", "clang::ASTStmtWriter::VisitIntegerLiteral(clang::IntegerLiteral*)"}, + {"_ZN5clang13ASTStmtWriter20VisitFloatingLiteralEPNS_15FloatingLiteralE", "clang::ASTStmtWriter::VisitFloatingLiteral(clang::FloatingLiteral*)"}, + {"_ZN5clang13ASTStmtWriter21VisitImaginaryLiteralEPNS_16ImaginaryLiteralE", "clang::ASTStmtWriter::VisitImaginaryLiteral(clang::ImaginaryLiteral*)"}, + {"_ZN5clang13ASTStmtWriter18VisitStringLiteralEPNS_13StringLiteralE", "clang::ASTStmtWriter::VisitStringLiteral(clang::StringLiteral*)"}, + {"_ZN5clang13ASTStmtWriter21VisitCharacterLiteralEPNS_16CharacterLiteralE", "clang::ASTStmtWriter::VisitCharacterLiteral(clang::CharacterLiteral*)"}, + {"_ZN5clang13ASTStmtWriter14VisitParenExprEPNS_9ParenExprE", "clang::ASTStmtWriter::VisitParenExpr(clang::ParenExpr*)"}, + {"_ZN5clang13ASTStmtWriter18VisitParenListExprEPNS_13ParenListExprE", "clang::ASTStmtWriter::VisitParenListExpr(clang::ParenListExpr*)"}, + {"_ZN5clang13ASTStmtWriter18VisitUnaryOperatorEPNS_13UnaryOperatorE", "clang::ASTStmtWriter::VisitUnaryOperator(clang::UnaryOperator*)"}, + {"_ZN5clang13ASTStmtWriter17VisitOffsetOfExprEPNS_12OffsetOfExprE", "clang::ASTStmtWriter::VisitOffsetOfExpr(clang::OffsetOfExpr*)"}, + {"_ZN5clang13ASTStmtWriter22VisitSizeOfAlignOfExprEPNS_17SizeOfAlignOfExprE", "clang::ASTStmtWriter::VisitSizeOfAlignOfExpr(clang::SizeOfAlignOfExpr*)"}, + {"_ZN5clang13ASTStmtWriter23VisitArraySubscriptExprEPNS_18ArraySubscriptExprE", "clang::ASTStmtWriter::VisitArraySubscriptExpr(clang::ArraySubscriptExpr*)"}, + {"_ZN5clang13ASTStmtWriter13VisitCallExprEPNS_8CallExprE", "clang::ASTStmtWriter::VisitCallExpr(clang::CallExpr*)"}, + {"_ZN5clang13ASTStmtWriter15VisitMemberExprEPNS_10MemberExprE", "clang::ASTStmtWriter::VisitMemberExpr(clang::MemberExpr*)"}, + {"_ZN5clang13ASTStmtWriter16VisitObjCIsaExprEPNS_11ObjCIsaExprE", "clang::ASTStmtWriter::VisitObjCIsaExpr(clang::ObjCIsaExpr*)"}, + {"_ZN5clang13ASTStmtWriter13VisitCastExprEPNS_8CastExprE", "clang::ASTStmtWriter::VisitCastExpr(clang::CastExpr*)"}, + {"_ZN5clang13ASTStmtWriter19VisitBinaryOperatorEPNS_14BinaryOperatorE", "clang::ASTStmtWriter::VisitBinaryOperator(clang::BinaryOperator*)"}, + {"_ZN5clang13ASTStmtWriter27VisitCompoundAssignOperatorEPNS_22CompoundAssignOperatorE", "clang::ASTStmtWriter::VisitCompoundAssignOperator(clang::CompoundAssignOperator*)"}, + {"_ZN5clang13ASTStmtWriter24VisitConditionalOperatorEPNS_19ConditionalOperatorE", "clang::ASTStmtWriter::VisitConditionalOperator(clang::ConditionalOperator*)"}, + {"_ZN5clang13ASTStmtWriter21VisitImplicitCastExprEPNS_16ImplicitCastExprE", "clang::ASTStmtWriter::VisitImplicitCastExpr(clang::ImplicitCastExpr*)"}, + {"_ZN5clang13ASTStmtWriter21VisitExplicitCastExprEPNS_16ExplicitCastExprE", "clang::ASTStmtWriter::VisitExplicitCastExpr(clang::ExplicitCastExpr*)"}, + {"_ZN5clang13ASTStmtWriter19VisitCStyleCastExprEPNS_14CStyleCastExprE", "clang::ASTStmtWriter::VisitCStyleCastExpr(clang::CStyleCastExpr*)"}, + {"_ZN5clang13ASTStmtWriter24VisitCompoundLiteralExprEPNS_19CompoundLiteralExprE", "clang::ASTStmtWriter::VisitCompoundLiteralExpr(clang::CompoundLiteralExpr*)"}, + {"_ZN5clang13ASTStmtWriter25VisitExtVectorElementExprEPNS_20ExtVectorElementExprE", "clang::ASTStmtWriter::VisitExtVectorElementExpr(clang::ExtVectorElementExpr*)"}, + {"_ZN5clang13ASTStmtWriter17VisitInitListExprEPNS_12InitListExprE", "clang::ASTStmtWriter::VisitInitListExpr(clang::InitListExpr*)"}, + {"_ZN5clang13ASTStmtWriter23VisitDesignatedInitExprEPNS_18DesignatedInitExprE", "clang::ASTStmtWriter::VisitDesignatedInitExpr(clang::DesignatedInitExpr*)"}, + {"_ZN5clang13ASTStmtWriter26VisitImplicitValueInitExprEPNS_21ImplicitValueInitExprE", "clang::ASTStmtWriter::VisitImplicitValueInitExpr(clang::ImplicitValueInitExpr*)"}, + {"_ZN5clang13ASTStmtWriter14VisitVAArgExprEPNS_9VAArgExprE", "clang::ASTStmtWriter::VisitVAArgExpr(clang::VAArgExpr*)"}, + {"_ZN5clang13ASTStmtWriter18VisitAddrLabelExprEPNS_13AddrLabelExprE", "clang::ASTStmtWriter::VisitAddrLabelExpr(clang::AddrLabelExpr*)"}, + {"_ZN5clang13ASTStmtWriter13VisitStmtExprEPNS_8StmtExprE", "clang::ASTStmtWriter::VisitStmtExpr(clang::StmtExpr*)"}, + {"_ZN5clang13ASTStmtWriter15VisitChooseExprEPNS_10ChooseExprE", "clang::ASTStmtWriter::VisitChooseExpr(clang::ChooseExpr*)"}, + {"_ZN5clang13ASTStmtWriter16VisitGNUNullExprEPNS_11GNUNullExprE", "clang::ASTStmtWriter::VisitGNUNullExpr(clang::GNUNullExpr*)"}, + {"_ZN5clang13ASTStmtWriter22VisitShuffleVectorExprEPNS_17ShuffleVectorExprE", "clang::ASTStmtWriter::VisitShuffleVectorExpr(clang::ShuffleVectorExpr*)"}, + {"_ZN5clang13ASTStmtWriter14VisitBlockExprEPNS_9BlockExprE", "clang::ASTStmtWriter::VisitBlockExpr(clang::BlockExpr*)"}, + {"_ZN5clang13ASTStmtWriter21VisitBlockDeclRefExprEPNS_16BlockDeclRefExprE", "clang::ASTStmtWriter::VisitBlockDeclRefExpr(clang::BlockDeclRefExpr*)"}, + {"_ZN5clang13ASTStmtWriter22VisitObjCStringLiteralEPNS_17ObjCStringLiteralE", "clang::ASTStmtWriter::VisitObjCStringLiteral(clang::ObjCStringLiteral*)"}, + {"_ZN5clang13ASTStmtWriter19VisitObjCEncodeExprEPNS_14ObjCEncodeExprE", "clang::ASTStmtWriter::VisitObjCEncodeExpr(clang::ObjCEncodeExpr*)"}, + {"_ZN5clang13ASTStmtWriter21VisitObjCSelectorExprEPNS_16ObjCSelectorExprE", "clang::ASTStmtWriter::VisitObjCSelectorExpr(clang::ObjCSelectorExpr*)"}, + {"_ZN5clang13ASTStmtWriter21VisitObjCProtocolExprEPNS_16ObjCProtocolExprE", "clang::ASTStmtWriter::VisitObjCProtocolExpr(clang::ObjCProtocolExpr*)"}, + {"_ZN5clang13ASTStmtWriter20VisitObjCIvarRefExprEPNS_15ObjCIvarRefExprE", "clang::ASTStmtWriter::VisitObjCIvarRefExpr(clang::ObjCIvarRefExpr*)"}, + {"_ZN5clang13ASTStmtWriter24VisitObjCPropertyRefExprEPNS_19ObjCPropertyRefExprE", "clang::ASTStmtWriter::VisitObjCPropertyRefExpr(clang::ObjCPropertyRefExpr*)"}, + {"_ZN5clang13ASTStmtWriter20VisitObjCMessageExprEPNS_15ObjCMessageExprE", "clang::ASTStmtWriter::VisitObjCMessageExpr(clang::ObjCMessageExpr*)"}, + {"_ZN5clang13ASTStmtWriter26VisitObjCForCollectionStmtEPNS_21ObjCForCollectionStmtE", "clang::ASTStmtWriter::VisitObjCForCollectionStmt(clang::ObjCForCollectionStmt*)"}, + {"_ZN5clang13ASTStmtWriter20VisitObjCAtCatchStmtEPNS_15ObjCAtCatchStmtE", "clang::ASTStmtWriter::VisitObjCAtCatchStmt(clang::ObjCAtCatchStmt*)"}, + {"_ZN5clang13ASTStmtWriter22VisitObjCAtFinallyStmtEPNS_17ObjCAtFinallyStmtE", "clang::ASTStmtWriter::VisitObjCAtFinallyStmt(clang::ObjCAtFinallyStmt*)"}, + {"_ZN5clang13ASTStmtWriter18VisitObjCAtTryStmtEPNS_13ObjCAtTryStmtE", "clang::ASTStmtWriter::VisitObjCAtTryStmt(clang::ObjCAtTryStmt*)"}, + {"_ZN5clang13ASTStmtWriter27VisitObjCAtSynchronizedStmtEPNS_22ObjCAtSynchronizedStmtE", "clang::ASTStmtWriter::VisitObjCAtSynchronizedStmt(clang::ObjCAtSynchronizedStmt*)"}, + {"_ZN5clang13ASTStmtWriter20VisitObjCAtThrowStmtEPNS_15ObjCAtThrowStmtE", "clang::ASTStmtWriter::VisitObjCAtThrowStmt(clang::ObjCAtThrowStmt*)"}, + {"_ZN5clang13ASTStmtWriter17VisitCXXCatchStmtEPNS_12CXXCatchStmtE", "clang::ASTStmtWriter::VisitCXXCatchStmt(clang::CXXCatchStmt*)"}, + {"_ZN5clang13ASTStmtWriter15VisitCXXTryStmtEPNS_10CXXTryStmtE", "clang::ASTStmtWriter::VisitCXXTryStmt(clang::CXXTryStmt*)"}, + {"_ZN5clang13ASTStmtWriter24VisitCXXOperatorCallExprEPNS_19CXXOperatorCallExprE", "clang::ASTStmtWriter::VisitCXXOperatorCallExpr(clang::CXXOperatorCallExpr*)"}, + {"_ZN5clang13ASTStmtWriter22VisitCXXMemberCallExprEPNS_17CXXMemberCallExprE", "clang::ASTStmtWriter::VisitCXXMemberCallExpr(clang::CXXMemberCallExpr*)"}, + {"_ZN5clang13ASTStmtWriter21VisitCXXConstructExprEPNS_16CXXConstructExprE", "clang::ASTStmtWriter::VisitCXXConstructExpr(clang::CXXConstructExpr*)"}, + {"_ZN5clang13ASTStmtWriter27VisitCXXTemporaryObjectExprEPNS_22CXXTemporaryObjectExprE", "clang::ASTStmtWriter::VisitCXXTemporaryObjectExpr(clang::CXXTemporaryObjectExpr*)"}, + {"_ZN5clang13ASTStmtWriter21VisitCXXNamedCastExprEPNS_16CXXNamedCastExprE", "clang::ASTStmtWriter::VisitCXXNamedCastExpr(clang::CXXNamedCastExpr*)"}, + {"_ZN5clang13ASTStmtWriter22VisitCXXStaticCastExprEPNS_17CXXStaticCastExprE", "clang::ASTStmtWriter::VisitCXXStaticCastExpr(clang::CXXStaticCastExpr*)"}, + {"_ZN5clang13ASTStmtWriter23VisitCXXDynamicCastExprEPNS_18CXXDynamicCastExprE", "clang::ASTStmtWriter::VisitCXXDynamicCastExpr(clang::CXXDynamicCastExpr*)"}, + {"_ZN5clang13ASTStmtWriter27VisitCXXReinterpretCastExprEPNS_22CXXReinterpretCastExprE", "clang::ASTStmtWriter::VisitCXXReinterpretCastExpr(clang::CXXReinterpretCastExpr*)"}, + {"_ZN5clang13ASTStmtWriter21VisitCXXConstCastExprEPNS_16CXXConstCastExprE", "clang::ASTStmtWriter::VisitCXXConstCastExpr(clang::CXXConstCastExpr*)"}, + {"_ZN5clang13ASTStmtWriter26VisitCXXFunctionalCastExprEPNS_21CXXFunctionalCastExprE", "clang::ASTStmtWriter::VisitCXXFunctionalCastExpr(clang::CXXFunctionalCastExpr*)"}, + {"_ZN5clang13ASTStmtWriter23VisitCXXBoolLiteralExprEPNS_18CXXBoolLiteralExprE", "clang::ASTStmtWriter::VisitCXXBoolLiteralExpr(clang::CXXBoolLiteralExpr*)"}, + {"_ZN5clang13ASTStmtWriter26VisitCXXNullPtrLiteralExprEPNS_21CXXNullPtrLiteralExprE", "clang::ASTStmtWriter::VisitCXXNullPtrLiteralExpr(clang::CXXNullPtrLiteralExpr*)"}, + {"_ZN5clang13ASTStmtWriter18VisitCXXTypeidExprEPNS_13CXXTypeidExprE", "clang::ASTStmtWriter::VisitCXXTypeidExpr(clang::CXXTypeidExpr*)"}, + {"_ZN5clang13ASTStmtWriter18VisitCXXUuidofExprEPNS_13CXXUuidofExprE", "clang::ASTStmtWriter::VisitCXXUuidofExpr(clang::CXXUuidofExpr*)"}, + {"_ZN5clang13ASTStmtWriter16VisitCXXThisExprEPNS_11CXXThisExprE", "clang::ASTStmtWriter::VisitCXXThisExpr(clang::CXXThisExpr*)"}, + {"_ZN5clang13ASTStmtWriter17VisitCXXThrowExprEPNS_12CXXThrowExprE", "clang::ASTStmtWriter::VisitCXXThrowExpr(clang::CXXThrowExpr*)"}, + {"_ZN5clang13ASTStmtWriter22VisitCXXDefaultArgExprEPNS_17CXXDefaultArgExprE", "clang::ASTStmtWriter::VisitCXXDefaultArgExpr(clang::CXXDefaultArgExpr*)"}, + {"_ZN5clang13ASTStmtWriter25VisitCXXBindTemporaryExprEPNS_20CXXBindTemporaryExprE", "clang::ASTStmtWriter::VisitCXXBindTemporaryExpr(clang::CXXBindTemporaryExpr*)"}, + {"_ZN5clang13ASTStmtWriter27VisitCXXScalarValueInitExprEPNS_22CXXScalarValueInitExprE", "clang::ASTStmtWriter::VisitCXXScalarValueInitExpr(clang::CXXScalarValueInitExpr*)"}, + {"_ZN5clang13ASTStmtWriter15VisitCXXNewExprEPNS_10CXXNewExprE", "clang::ASTStmtWriter::VisitCXXNewExpr(clang::CXXNewExpr*)"}, + {"_ZN5clang13ASTStmtWriter18VisitCXXDeleteExprEPNS_13CXXDeleteExprE", "clang::ASTStmtWriter::VisitCXXDeleteExpr(clang::CXXDeleteExpr*)"}, + {"_ZN5clang13ASTStmtWriter28VisitCXXPseudoDestructorExprEPNS_23CXXPseudoDestructorExprE", "clang::ASTStmtWriter::VisitCXXPseudoDestructorExpr(clang::CXXPseudoDestructorExpr*)"}, + {"_ZN5clang13ASTStmtWriter21VisitExprWithCleanupsEPNS_16ExprWithCleanupsE", "clang::ASTStmtWriter::VisitExprWithCleanups(clang::ExprWithCleanups*)"}, + {"_ZN5clang13ASTStmtWriter32VisitCXXDependentScopeMemberExprEPNS_27CXXDependentScopeMemberExprE", "clang::ASTStmtWriter::VisitCXXDependentScopeMemberExpr(clang::CXXDependentScopeMemberExpr*)"}, + {"_ZN5clang13ASTStmtWriter30VisitDependentScopeDeclRefExprEPNS_25DependentScopeDeclRefExprE", "clang::ASTStmtWriter::VisitDependentScopeDeclRefExpr(clang::DependentScopeDeclRefExpr*)"}, + {"_ZN5clang13ASTStmtWriter31VisitCXXUnresolvedConstructExprEPNS_26CXXUnresolvedConstructExprE", "clang::ASTStmtWriter::VisitCXXUnresolvedConstructExpr(clang::CXXUnresolvedConstructExpr*)"}, + {"_ZN5clang13ASTStmtWriter17VisitOverloadExprEPNS_12OverloadExprE", "clang::ASTStmtWriter::VisitOverloadExpr(clang::OverloadExpr*)"}, + {"_ZN5clang13ASTStmtWriter25VisitUnresolvedMemberExprEPNS_20UnresolvedMemberExprE", "clang::ASTStmtWriter::VisitUnresolvedMemberExpr(clang::UnresolvedMemberExpr*)"}, + {"_ZN5clang13ASTStmtWriter25VisitUnresolvedLookupExprEPNS_20UnresolvedLookupExprE", "clang::ASTStmtWriter::VisitUnresolvedLookupExpr(clang::UnresolvedLookupExpr*)"}, + {"_ZN5clang13ASTStmtWriter23VisitUnaryTypeTraitExprEPNS_18UnaryTypeTraitExprE", "clang::ASTStmtWriter::VisitUnaryTypeTraitExpr(clang::UnaryTypeTraitExpr*)"}, + {"_ZN5clang13ASTStmtWriter24VisitBinaryTypeTraitExprEPNS_19BinaryTypeTraitExprE", "clang::ASTStmtWriter::VisitBinaryTypeTraitExpr(clang::BinaryTypeTraitExpr*)"}, + {"_ZN5clang13ASTStmtWriter20VisitCXXNoexceptExprEPNS_15CXXNoexceptExprE", "clang::ASTStmtWriter::VisitCXXNoexceptExpr(clang::CXXNoexceptExpr*)"}, + {"_ZN5clang13ASTStmtWriter22VisitPackExpansionExprEPNS_17PackExpansionExprE", "clang::ASTStmtWriter::VisitPackExpansionExpr(clang::PackExpansionExpr*)"}, + {"_ZN5clang13ASTStmtWriter19VisitSizeOfPackExprEPNS_14SizeOfPackExprE", "clang::ASTStmtWriter::VisitSizeOfPackExpr(clang::SizeOfPackExpr*)"}, + {"_ZN5clang13ASTStmtWriter37VisitSubstNonTypeTemplateParmPackExprEPNS_32SubstNonTypeTemplateParmPackExprE", "clang::ASTStmtWriter::VisitSubstNonTypeTemplateParmPackExpr(clang::SubstNonTypeTemplateParmPackExpr*)"}, + {"_ZN5clang13ASTStmtWriter20VisitOpaqueValueExprEPNS_15OpaqueValueExprE", "clang::ASTStmtWriter::VisitOpaqueValueExpr(clang::OpaqueValueExpr*)"}, + {"_ZN5clang13ASTStmtWriter23VisitCUDAKernelCallExprEPNS_18CUDAKernelCallExprE", "clang::ASTStmtWriter::VisitCUDAKernelCallExpr(clang::CUDAKernelCallExpr*)"}, + {"_ZN5clang9ASTWriter18ClearSwitchCaseIDsEv", "clang::ASTWriter::ClearSwitchCaseIDs()"}, + {"_ZN5clang9ASTWriter12WriteSubStmtEPNS_4StmtE", "clang::ASTWriter::WriteSubStmt(clang::Stmt*)"}, + {"_ZN5clang9ASTWriter10FlushStmtsEv", "clang::ASTWriter::FlushStmts()"}, + {"_ZN5clang11StmtVisitorINS_13ASTStmtWriterEvE5VisitEPNS_4StmtE", "clang::StmtVisitor::Visit(clang::Stmt*)"}, + {"_ZNSt8_Rb_treeIPN5clang9LabelStmtESt4pairIKS2_jESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS5_ERKS5_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIPN5clang9LabelStmtESt4pairIKS2_jESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE16_M_insert_uniqueERKS5_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZNSt8_Rb_treeIPN5clang10SwitchCaseESt4pairIKS2_jESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS5_ERKS5_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIPN5clang10SwitchCaseESt4pairIKS2_jESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE16_M_insert_uniqueERKS5_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZN5clang12PCHGeneratorC1ERKNS_12PreprocessorEbPKcPN4llvm11raw_ostreamE", "clang::PCHGenerator::PCHGenerator(clang::Preprocessor const&, bool, char const*, llvm::raw_ostream*)"}, + {"_ZN5clang12PCHGeneratorC2ERKNS_12PreprocessorEbPKcPN4llvm11raw_ostreamE", "clang::PCHGenerator::PCHGenerator(clang::Preprocessor const&, bool, char const*, llvm::raw_ostream*)"}, + {"_ZN5clang12PCHGenerator21HandleTranslationUnitERNS_10ASTContextE", "clang::PCHGenerator::HandleTranslationUnit(clang::ASTContext&)"}, + {"_ZN5clang12PCHGenerator22GetASTMutationListenerEv", "clang::PCHGenerator::GetASTMutationListener()"}, + {"_ZN5clang12PCHGenerator27GetASTSerializationListenerEv", "clang::PCHGenerator::GetASTSerializationListener()"}, + {"_ZN5clang12PCHGenerator29GetASTDeserializationListenerEv", "clang::PCHGenerator::GetASTDeserializationListener()"}, + {"_ZN5clang17EmitBackendOutputERNS_10DiagnosticERKNS_14CodeGenOptionsERKNS_13TargetOptionsEPN4llvm6ModuleENS_13BackendActionEPNS8_11raw_ostreamE", "clang::EmitBackendOutput(clang::Diagnostic&, clang::CodeGenOptions const&, clang::TargetOptions const&, llvm::Module*, clang::BackendAction, llvm::raw_ostream*)"}, + {"_ZN5clang7CodeGen11CGBlockInfoC1EPKNS_9BlockExprEPKc", "clang::CodeGen::CGBlockInfo::CGBlockInfo(clang::BlockExpr const*, char const*)"}, + {"_ZN5clang7CodeGen11CGBlockInfoC2EPKNS_9BlockExprEPKc", "clang::CodeGen::CGBlockInfo::CGBlockInfo(clang::BlockExpr const*, char const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction16EmitBlockLiteralEPKNS_9BlockExprE", "clang::CodeGen::CodeGenFunction::EmitBlockLiteral(clang::BlockExpr const*)"}, + {"_Z16computeBlockInfoRN5clang7CodeGen13CodeGenModuleERNS0_11CGBlockInfoE", "computeBlockInfo(clang::CodeGen::CodeGenModule&, clang::CodeGen::CGBlockInfo&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction21GenerateBlockFunctionENS0_10GlobalDeclERKNS0_11CGBlockInfoEPKNS_4DeclERKN4llvm8DenseMapIS8_PNS9_5ValueENS9_12DenseMapInfoIS8_EENSD_ISC_EEEE", "clang::CodeGen::CodeGenFunction::GenerateBlockFunction(clang::CodeGen::GlobalDecl, clang::CodeGen::CGBlockInfo const&, clang::Decl const*, llvm::DenseMap, llvm::DenseMapInfo> const&)"}, + {"_Z16buildGlobalBlockRN5clang7CodeGen13CodeGenModuleERKNS0_11CGBlockInfoEPN4llvm8ConstantE", "buildGlobalBlock(clang::CodeGen::CodeGenModule&, clang::CodeGen::CGBlockInfo const&, llvm::Constant*)"}, + {"_Z20buildBlockDescriptorRN5clang7CodeGen13CodeGenModuleERKNS0_11CGBlockInfoE", "buildBlockDescriptor(clang::CodeGen::CodeGenModule&, clang::CodeGen::CGBlockInfo const&)"}, + {"_ZN5clang7CodeGen13CodeGenModule22getBlockDescriptorTypeEv", "clang::CodeGen::CodeGenModule::getBlockDescriptorType()"}, + {"_ZN5clang7CodeGen13CodeGenModule26getGenericBlockLiteralTypeEv", "clang::CodeGen::CodeGenModule::getGenericBlockLiteralType()"}, + {"_ZN5clang7CodeGen15CodeGenFunction17EmitBlockCallExprEPKNS_8CallExprENS0_15ReturnValueSlotE", "clang::CodeGen::CodeGenFunction::EmitBlockCallExpr(clang::CallExpr const*, clang::CodeGen::ReturnValueSlot)"}, + {"_ZN5clang7CodeGen15CodeGenFunction18GetAddrOfBlockDeclEPKNS_7VarDeclEb", "clang::CodeGen::CodeGenFunction::GetAddrOfBlockDecl(clang::VarDecl const*, bool)"}, + {"_ZN5clang7CodeGen13CodeGenModule20GetAddrOfGlobalBlockEPKNS_9BlockExprEPKc", "clang::CodeGen::CodeGenModule::GetAddrOfGlobalBlock(clang::BlockExpr const*, char const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction26GenerateCopyHelperFunctionERKNS0_11CGBlockInfoE", "clang::CodeGen::CodeGenFunction::GenerateCopyHelperFunction(clang::CodeGen::CGBlockInfo const&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction29GenerateDestroyHelperFunctionERKNS0_11CGBlockInfoE", "clang::CodeGen::CodeGenFunction::GenerateDestroyHelperFunction(clang::CodeGen::CGBlockInfo const&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction17BuildBlockReleaseEPN4llvm5ValueENS0_15BlockFieldFlagsE", "clang::CodeGen::CodeGenFunction::BuildBlockRelease(llvm::Value*, clang::CodeGen::BlockFieldFlags)"}, + {"_ZN5clang7CodeGen15CodeGenFunction31GeneratebyrefCopyHelperFunctionEPKN4llvm4TypeENS0_15BlockFieldFlagsEPKNS_7VarDeclE", "clang::CodeGen::CodeGenFunction::GeneratebyrefCopyHelperFunction(llvm::Type const*, clang::CodeGen::BlockFieldFlags, clang::VarDecl const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction34GeneratebyrefDestroyHelperFunctionEPKN4llvm4TypeENS0_15BlockFieldFlagsEPKNS_7VarDeclE", "clang::CodeGen::CodeGenFunction::GeneratebyrefDestroyHelperFunction(llvm::Type const*, clang::CodeGen::BlockFieldFlags, clang::VarDecl const*)"}, + {"_ZN5clang7CodeGen13CodeGenModule20BuildbyrefCopyHelperEPKN4llvm4TypeENS0_15BlockFieldFlagsEjPKNS_7VarDeclE", "clang::CodeGen::CodeGenModule::BuildbyrefCopyHelper(llvm::Type const*, clang::CodeGen::BlockFieldFlags, unsigned int, clang::VarDecl const*)"}, + {"_ZN5clang7CodeGen13CodeGenModule23BuildbyrefDestroyHelperEPKN4llvm4TypeENS0_15BlockFieldFlagsEjPKNS_7VarDeclE", "clang::CodeGen::CodeGenModule::BuildbyrefDestroyHelper(llvm::Type const*, clang::CodeGen::BlockFieldFlags, unsigned int, clang::VarDecl const*)"}, + + // {"_ZSt21__inplace_stable_sortIPN12_GLOBAL__N_116BlockLayoutChunkEEvT_S3_", + // "void std::__inplace_stable_sort<(anonymous namespace)::BlockLayoutChunk*>((anonymous namespace)::BlockLayoutChunk*, (anonymous namespace)::BlockLayoutChunk*)"}, + // got error + + + // {"_ZSt22__stable_sort_adaptiveIPN12_GLOBAL__N_116BlockLayoutChunkES2_lEvT_S3_T0_T1_", + // "void std::__stable_sort_adaptive<(anonymous namespace)::BlockLayoutChunk*, (anonymous namespace)::BlockLayoutChunk*, long>((anonymous namespace)::BlockLayoutChunk*, (anonymous namespace)::BlockLayoutChunk*, (anonymous namespace)::BlockLayoutChunk*, long)"}, + // got error + + + // {"_ZSt24__merge_sort_with_bufferIPN12_GLOBAL__N_116BlockLayoutChunkES2_EvT_S3_T0_", + // "void std::__merge_sort_with_buffer<(anonymous namespace)::BlockLayoutChunk*, (anonymous namespace)::BlockLayoutChunk*>((anonymous namespace)::BlockLayoutChunk*, (anonymous namespace)::BlockLayoutChunk*, (anonymous namespace)::BlockLayoutChunk*)"}, + // got error + + + // {"_ZSt16__merge_adaptiveIPN12_GLOBAL__N_116BlockLayoutChunkElS2_EvT_S3_S3_T0_S4_T1_S4_", + // "void std::__merge_adaptive<(anonymous namespace)::BlockLayoutChunk*, long, (anonymous namespace)::BlockLayoutChunk*>((anonymous namespace)::BlockLayoutChunk*, (anonymous namespace)::BlockLayoutChunk*, (anonymous namespace)::BlockLayoutChunk*, long, long, (anonymous namespace)::BlockLayoutChunk*, long)"}, + // got error + + + // {"_ZSt13copy_backwardIPN12_GLOBAL__N_116BlockLayoutChunkES2_ET0_T_S4_S3_", + // "(anonymous namespace)::BlockLayoutChunk* std::copy_backward<(anonymous namespace)::BlockLayoutChunk*, (anonymous namespace)::BlockLayoutChunk*>((anonymous namespace)::BlockLayoutChunk*, (anonymous namespace)::BlockLayoutChunk*, (anonymous namespace)::BlockLayoutChunk*)"}, + // got error + + + // {"_ZSt6rotateIPN12_GLOBAL__N_116BlockLayoutChunkEEvT_S3_S3_", + // "void std::rotate<(anonymous namespace)::BlockLayoutChunk*>((anonymous namespace)::BlockLayoutChunk*, (anonymous namespace)::BlockLayoutChunk*, (anonymous namespace)::BlockLayoutChunk*)"}, + // got error + + + // {"_ZSt16__insertion_sortIPN12_GLOBAL__N_116BlockLayoutChunkEEvT_S3_", + // "void std::__insertion_sort<(anonymous namespace)::BlockLayoutChunk*>((anonymous namespace)::BlockLayoutChunk*, (anonymous namespace)::BlockLayoutChunk*)"}, + // got error + + + // {"_ZSt22__merge_without_bufferIPN12_GLOBAL__N_116BlockLayoutChunkElEvT_S3_S3_T0_S4_", + // "void std::__merge_without_buffer<(anonymous namespace)::BlockLayoutChunk*, long>((anonymous namespace)::BlockLayoutChunk*, (anonymous namespace)::BlockLayoutChunk*, (anonymous namespace)::BlockLayoutChunk*, long, long)"}, + // got error + + {"_Z15hasMutableFieldPKN5clang13CXXRecordDeclE", "hasMutableField(clang::CXXRecordDecl const*)"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN12_GLOBAL__N_116BlockLayoutChunkELb0EE4growEm", "llvm::SmallVectorTemplateBase<(anonymous namespace)::BlockLayoutChunk, false>::grow(unsigned long)"}, + {"_ZN4llvm8DenseMapIyPNS_8ConstantENS_12DenseMapInfoIyEENS3_IS2_EEE16InsertIntoBucketERKyRKS2_PSt4pairIyS2_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(unsigned long long const&, llvm::Constant* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIyPNS_8ConstantENS_12DenseMapInfoIyEENS3_IS2_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKN5clang7VarDeclENS1_7CodeGen11CGBlockInfo7CaptureENS_12DenseMapInfoIS4_EENS8_IS7_EEE16InsertIntoBucketERKS4_RKS7_PSt4pairIS4_S7_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::VarDecl const* const&, clang::CodeGen::CGBlockInfo::Capture const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang7VarDeclENS1_7CodeGen11CGBlockInfo7CaptureENS_12DenseMapInfoIS4_EENS8_IS7_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang7CodeGen15CodeGenFunction15EmitBuiltinExprEPKNS_12FunctionDeclEjPKNS_8CallExprE", "clang::CodeGen::CodeGenFunction::EmitBuiltinExpr(clang::FunctionDecl const*, unsigned int, clang::CallExpr const*)"}, + {"_Z8EmitFAbsRN5clang7CodeGen15CodeGenFunctionEPN4llvm5ValueENS_8QualTypeE", "EmitFAbs(clang::CodeGen::CodeGenFunction&, llvm::Value*, clang::QualType)"}, + {"_Z16EmitBinaryAtomicRN5clang7CodeGen15CodeGenFunctionEN4llvm9Intrinsic2IDEPKNS_8CallExprE", "EmitBinaryAtomic(clang::CodeGen::CodeGenFunction&, llvm::Intrinsic::ID, clang::CallExpr const*)"}, + {"_Z20EmitBinaryAtomicPostRN5clang7CodeGen15CodeGenFunctionEN4llvm9Intrinsic2IDEPKNS_8CallExprENS3_11Instruction9BinaryOpsE", "EmitBinaryAtomicPost(clang::CodeGen::CodeGenFunction&, llvm::Intrinsic::ID, clang::CallExpr const*, llvm::Instruction::BinaryOps)"}, + {"_ZN5clang7CodeGen15CodeGenFunction21EmitTargetBuiltinExprEjPKNS_8CallExprE", "clang::CodeGen::CodeGenFunction::EmitTargetBuiltinExpr(unsigned int, clang::CallExpr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction18EmitARMBuiltinExprEjPKNS_8CallExprE", "clang::CodeGen::CodeGenFunction::EmitARMBuiltinExpr(unsigned int, clang::CallExpr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction18EmitX86BuiltinExprEjPKNS_8CallExprE", "clang::CodeGen::CodeGenFunction::EmitX86BuiltinExpr(unsigned int, clang::CallExpr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction18EmitPPCBuiltinExprEjPKNS_8CallExprE", "clang::CodeGen::CodeGenFunction::EmitPPCBuiltinExpr(unsigned int, clang::CallExpr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction13EmitNeonSplatEPN4llvm5ValueEPNS2_8ConstantE", "clang::CodeGen::CodeGenFunction::EmitNeonSplat(llvm::Value*, llvm::Constant*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction12EmitNeonCallEPN4llvm8FunctionERNS2_15SmallVectorImplIPNS2_5ValueEEEPKcjb", "clang::CodeGen::CodeGenFunction::EmitNeonCall(llvm::Function*, llvm::SmallVectorImpl&, char const*, unsigned int, bool)"}, + {"_ZN5clang7CodeGen15CodeGenFunction19EmitNeonShiftVectorEPN4llvm5ValueEPKNS2_4TypeEb", "clang::CodeGen::CodeGenFunction::EmitNeonShiftVector(llvm::Value*, llvm::Type const*, bool)"}, + {"_Z19GetPointeeAlignmentRN5clang7CodeGen15CodeGenFunctionEPKNS_4ExprE", "GetPointeeAlignment(clang::CodeGen::CodeGenFunction&, clang::Expr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction11BuildVectorERKN4llvm15SmallVectorImplIPNS2_5ValueEEE", "clang::CodeGen::CodeGenFunction::BuildVector(llvm::SmallVectorImpl const&)"}, + {"_ZN5clang7CodeGen13CodeGenModule28TryEmitBaseDestructorAsAliasEPKNS_17CXXDestructorDeclE", "clang::CodeGen::CodeGenModule::TryEmitBaseDestructorAsAlias(clang::CXXDestructorDecl const*)"}, + {"_ZN5clang7CodeGen13CodeGenModule24TryEmitDefinitionAsAliasENS0_10GlobalDeclES2_", "clang::CodeGen::CodeGenModule::TryEmitDefinitionAsAlias(clang::CodeGen::GlobalDecl, clang::CodeGen::GlobalDecl)"}, + {"_ZN5clang7CodeGen13CodeGenModule19EmitCXXConstructorsEPKNS_18CXXConstructorDeclE", "clang::CodeGen::CodeGenModule::EmitCXXConstructors(clang::CXXConstructorDecl const*)"}, + {"_ZN5clang7CodeGen13CodeGenModule18EmitCXXConstructorEPKNS_18CXXConstructorDeclENS_11CXXCtorTypeE", "clang::CodeGen::CodeGenModule::EmitCXXConstructor(clang::CXXConstructorDecl const*, clang::CXXCtorType)"}, + {"_ZN5clang7CodeGen13CodeGenModule23GetAddrOfCXXConstructorEPKNS_18CXXConstructorDeclENS_11CXXCtorTypeE", "clang::CodeGen::CodeGenModule::GetAddrOfCXXConstructor(clang::CXXConstructorDecl const*, clang::CXXCtorType)"}, + {"_ZN5clang7CodeGen13CodeGenModule18EmitCXXDestructorsEPKNS_17CXXDestructorDeclE", "clang::CodeGen::CodeGenModule::EmitCXXDestructors(clang::CXXDestructorDecl const*)"}, + {"_ZN5clang7CodeGen13CodeGenModule17EmitCXXDestructorEPKNS_17CXXDestructorDeclENS_11CXXDtorTypeE", "clang::CodeGen::CodeGenModule::EmitCXXDestructor(clang::CXXDestructorDecl const*, clang::CXXDtorType)"}, + {"_ZN5clang7CodeGen13CodeGenModule22GetAddrOfCXXDestructorEPKNS_17CXXDestructorDeclENS_11CXXDtorTypeE", "clang::CodeGen::CodeGenModule::GetAddrOfCXXDestructor(clang::CXXDestructorDecl const*, clang::CXXDtorType)"}, + {"_ZN5clang7CodeGen15CodeGenFunction16BuildVirtualCallEPKNS_13CXXMethodDeclEPN4llvm5ValueEPKNS5_4TypeE", "clang::CodeGen::CodeGenFunction::BuildVirtualCall(clang::CXXMethodDecl const*, llvm::Value*, llvm::Type const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction25BuildAppleKextVirtualCallEPKNS_13CXXMethodDeclEPNS_19NestedNameSpecifierEPKN4llvm4TypeE", "clang::CodeGen::CodeGenFunction::BuildAppleKextVirtualCall(clang::CXXMethodDecl const*, clang::NestedNameSpecifier*, llvm::Type const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction35BuildAppleKextVirtualDestructorCallEPKNS_17CXXDestructorDeclENS_11CXXDtorTypeEPKNS_13CXXRecordDeclE", "clang::CodeGen::CodeGenFunction::BuildAppleKextVirtualDestructorCall(clang::CXXDestructorDecl const*, clang::CXXDtorType, clang::CXXRecordDecl const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction16BuildVirtualCallEPKNS_17CXXDestructorDeclENS_11CXXDtorTypeEPN4llvm5ValueEPKNS6_4TypeE", "clang::CodeGen::CodeGenFunction::BuildVirtualCall(clang::CXXDestructorDecl const*, clang::CXXDtorType, llvm::Value*, llvm::Type const*)"}, + {"_ZN5clang7CodeGen13CodeGenModule15GetAddrOfGlobalENS0_10GlobalDeclE", "clang::CodeGen::CodeGenModule::GetAddrOfGlobal(clang::CodeGen::GlobalDecl)"}, + {"_ZN5clang7CodeGen8CGCXXABID0Ev", "clang::CodeGen::CGCXXABI::~CGCXXABI()"}, + {"_ZN5clang7CodeGen8CGCXXABID1Ev", "clang::CodeGen::CGCXXABI::~CGCXXABI()"}, + {"_ZN5clang7CodeGen8CGCXXABID2Ev", "clang::CodeGen::CGCXXABI::~CGCXXABI()"}, + {"_ZN5clang7CodeGen8CGCXXABI24ConvertMemberPointerTypeEPKNS_17MemberPointerTypeE", "clang::CodeGen::CGCXXABI::ConvertMemberPointerType(clang::MemberPointerType const*)"}, + {"_ZN5clang7CodeGen8CGCXXABI31EmitLoadOfMemberFunctionPointerERNS0_15CodeGenFunctionERPN4llvm5ValueES6_PKNS_17MemberPointerTypeE", "clang::CodeGen::CGCXXABI::EmitLoadOfMemberFunctionPointer(clang::CodeGen::CodeGenFunction&, llvm::Value*&, llvm::Value*, clang::MemberPointerType const*)"}, + {"_ZN5clang7CodeGen8CGCXXABI28EmitMemberDataPointerAddressERNS0_15CodeGenFunctionEPN4llvm5ValueES6_PKNS_17MemberPointerTypeE", "clang::CodeGen::CGCXXABI::EmitMemberDataPointerAddress(clang::CodeGen::CodeGenFunction&, llvm::Value*, llvm::Value*, clang::MemberPointerType const*)"}, + {"_ZN5clang7CodeGen8CGCXXABI27EmitMemberPointerConversionERNS0_15CodeGenFunctionEPKNS_8CastExprEPN4llvm5ValueE", "clang::CodeGen::CGCXXABI::EmitMemberPointerConversion(clang::CodeGen::CodeGenFunction&, clang::CastExpr const*, llvm::Value*)"}, + {"_ZN5clang7CodeGen8CGCXXABI27EmitMemberPointerComparisonERNS0_15CodeGenFunctionEPN4llvm5ValueES6_PKNS_17MemberPointerTypeEb", "clang::CodeGen::CGCXXABI::EmitMemberPointerComparison(clang::CodeGen::CodeGenFunction&, llvm::Value*, llvm::Value*, clang::MemberPointerType const*, bool)"}, + {"_ZN5clang7CodeGen8CGCXXABI26EmitMemberPointerIsNotNullERNS0_15CodeGenFunctionEPN4llvm5ValueEPKNS_17MemberPointerTypeE", "clang::CodeGen::CGCXXABI::EmitMemberPointerIsNotNull(clang::CodeGen::CodeGenFunction&, llvm::Value*, clang::MemberPointerType const*)"}, + {"_ZN5clang7CodeGen8CGCXXABI27EmitMemberPointerConversionEPN4llvm8ConstantEPKNS_8CastExprE", "clang::CodeGen::CGCXXABI::EmitMemberPointerConversion(llvm::Constant*, clang::CastExpr const*)"}, + {"_ZN5clang7CodeGen8CGCXXABI21EmitNullMemberPointerEPKNS_17MemberPointerTypeE", "clang::CodeGen::CGCXXABI::EmitNullMemberPointer(clang::MemberPointerType const*)"}, + {"_ZN5clang7CodeGen8CGCXXABI17EmitMemberPointerEPKNS_13CXXMethodDeclE", "clang::CodeGen::CGCXXABI::EmitMemberPointer(clang::CXXMethodDecl const*)"}, + {"_ZN5clang7CodeGen8CGCXXABI21EmitMemberDataPointerEPKNS_17MemberPointerTypeENS_9CharUnitsE", "clang::CodeGen::CGCXXABI::EmitMemberDataPointer(clang::MemberPointerType const*, clang::CharUnits)"}, + {"_ZN5clang7CodeGen8CGCXXABI19isZeroInitializableEPKNS_17MemberPointerTypeE", "clang::CodeGen::CGCXXABI::isZeroInitializable(clang::MemberPointerType const*)"}, + + // {"_ZN5clang7CodeGen8CGCXXABI14BuildThisParamERNS0_15CodeGenFunctionERN4llvm11SmallVectorISt4pairIPKNS_7VarDeclENS_8QualTypeEELj16EEE", + // "clang::CodeGen::CGCXXABI::BuildThisParam(clang::CodeGen::CodeGenFunction&, llvm::SmallVector, 16u>&)"}, + // "clang::CodeGen::CGCXXABI::BuildThisParam(clang::CodeGen::CodeGenFunction&, llvm::SmallVector, 16>&)" was returned + + {"_ZN5clang7CodeGen8CGCXXABI13EmitThisParamERNS0_15CodeGenFunctionE", "clang::CodeGen::CGCXXABI::EmitThisParam(clang::CodeGen::CodeGenFunction&)"}, + {"_ZN5clang7CodeGen8CGCXXABI19EmitReturnFromThunkERNS0_15CodeGenFunctionENS0_6RValueENS_8QualTypeE", "clang::CodeGen::CGCXXABI::EmitReturnFromThunk(clang::CodeGen::CodeGenFunction&, clang::CodeGen::RValue, clang::QualType)"}, + {"_ZN5clang7CodeGen8CGCXXABI18GetArrayCookieSizeEPKNS_10CXXNewExprE", "clang::CodeGen::CGCXXABI::GetArrayCookieSize(clang::CXXNewExpr const*)"}, + {"_ZN5clang7CodeGen8CGCXXABI21InitializeArrayCookieERNS0_15CodeGenFunctionEPN4llvm5ValueES6_PKNS_10CXXNewExprENS_8QualTypeE", "clang::CodeGen::CGCXXABI::InitializeArrayCookie(clang::CodeGen::CodeGenFunction&, llvm::Value*, llvm::Value*, clang::CXXNewExpr const*, clang::QualType)"}, + {"_ZN5clang7CodeGen8CGCXXABI15ReadArrayCookieERNS0_15CodeGenFunctionEPN4llvm5ValueEPKNS_13CXXDeleteExprENS_8QualTypeERS6_SB_RNS_9CharUnitsE", "clang::CodeGen::CGCXXABI::ReadArrayCookie(clang::CodeGen::CodeGenFunction&, llvm::Value*, clang::CXXDeleteExpr const*, clang::QualType, llvm::Value*&, llvm::Value*&, clang::CharUnits&)"}, + {"_ZN5clang7CodeGen8CGCXXABI15EmitGuardedInitERNS0_15CodeGenFunctionERKNS_7VarDeclEPN4llvm14GlobalVariableE", "clang::CodeGen::CGCXXABI::EmitGuardedInit(clang::CodeGen::CodeGenFunction&, clang::VarDecl const&, llvm::GlobalVariable*)"}, + {"_ZN5clang7CodeGen12CodeGenTypes15getFunctionInfoENS_7CanQualINS_19FunctionNoProtoTypeEEEb", "clang::CodeGen::CodeGenTypes::getFunctionInfo(clang::CanQual, bool)"}, + {"_ZN5clang7CodeGen12CodeGenTypes15getFunctionInfoENS_7CanQualINS_4TypeEEERKN4llvm15SmallVectorImplIS4_EERKNS_12FunctionType7ExtInfoEb", "clang::CodeGen::CodeGenTypes::getFunctionInfo(clang::CanQual, llvm::SmallVectorImpl> const&, clang::FunctionType::ExtInfo const&, bool)"}, + {"_ZN5clang7CodeGen12CodeGenTypes15getFunctionInfoENS_7CanQualINS_17FunctionProtoTypeEEEb", "clang::CodeGen::CodeGenTypes::getFunctionInfo(clang::CanQual, bool)"}, + {"_Z15getFunctionInfoRN5clang7CodeGen12CodeGenTypesERN4llvm15SmallVectorImplINS_7CanQualINS_4TypeEEEEENS5_INS_17FunctionProtoTypeEEEb", "getFunctionInfo(clang::CodeGen::CodeGenTypes&, llvm::SmallVectorImpl>&, clang::CanQual, bool)"}, + {"_ZN5clang7CodeGen12CodeGenTypes15getFunctionInfoEPKNS_13CXXRecordDeclEPKNS_17FunctionProtoTypeE", "clang::CodeGen::CodeGenTypes::getFunctionInfo(clang::CXXRecordDecl const*, clang::FunctionProtoType const*)"}, + {"_ZN5clang7CodeGen12CodeGenTypes15getFunctionInfoEPKNS_13CXXMethodDeclE", "clang::CodeGen::CodeGenTypes::getFunctionInfo(clang::CXXMethodDecl const*)"}, + {"_ZN5clang7CodeGen12CodeGenTypes15getFunctionInfoEPKNS_18CXXConstructorDeclENS_11CXXCtorTypeE", "clang::CodeGen::CodeGenTypes::getFunctionInfo(clang::CXXConstructorDecl const*, clang::CXXCtorType)"}, + {"_ZN5clang7CodeGen12CodeGenTypes15getFunctionInfoEPKNS_17CXXDestructorDeclENS_11CXXDtorTypeE", "clang::CodeGen::CodeGenTypes::getFunctionInfo(clang::CXXDestructorDecl const*, clang::CXXDtorType)"}, + {"_ZN5clang7CodeGen12CodeGenTypes15getFunctionInfoEPKNS_12FunctionDeclE", "clang::CodeGen::CodeGenTypes::getFunctionInfo(clang::FunctionDecl const*)"}, + {"_ZN5clang7CodeGen12CodeGenTypes15getFunctionInfoEPKNS_14ObjCMethodDeclE", "clang::CodeGen::CodeGenTypes::getFunctionInfo(clang::ObjCMethodDecl const*)"}, + {"_ZN5clang7CodeGen12CodeGenTypes15getFunctionInfoENS0_10GlobalDeclE", "clang::CodeGen::CodeGenTypes::getFunctionInfo(clang::CodeGen::GlobalDecl)"}, + + // {"_ZN5clang7CodeGen12CodeGenTypes15getFunctionInfoENS_8QualTypeERKN4llvm11SmallVectorISt4pairINS0_6RValueES2_ELj16EEERKNS_12FunctionType7ExtInfoE", + // "clang::CodeGen::CodeGenTypes::getFunctionInfo(clang::QualType, llvm::SmallVector, 16u> const&, clang::FunctionType::ExtInfo const&)"}, + // "clang::CodeGen::CodeGenTypes::getFunctionInfo(clang::QualType, llvm::SmallVector, 16> const&, clang::FunctionType::ExtInfo const&)" was returned + + + // {"_ZN5clang7CodeGen12CodeGenTypes15getFunctionInfoENS_8QualTypeERKN4llvm11SmallVectorISt4pairIPKNS_7VarDeclES2_ELj16EEERKNS_12FunctionType7ExtInfoE", + // "clang::CodeGen::CodeGenTypes::getFunctionInfo(clang::QualType, llvm::SmallVector, 16u> const&, clang::FunctionType::ExtInfo const&)"}, + // "clang::CodeGen::CodeGenTypes::getFunctionInfo(clang::QualType, llvm::SmallVector, 16> const&, clang::FunctionType::ExtInfo const&)" was returned + + {"_ZN5clang7CodeGen14CGFunctionInfoC1EjbjNS_7CanQualINS_4TypeEEEPKS4_j", "clang::CodeGen::CGFunctionInfo::CGFunctionInfo(unsigned int, bool, unsigned int, clang::CanQual, clang::CanQual const*, unsigned int)"}, + {"_ZN5clang7CodeGen14CGFunctionInfoC2EjbjNS_7CanQualINS_4TypeEEEPKS4_j", "clang::CodeGen::CGFunctionInfo::CGFunctionInfo(unsigned int, bool, unsigned int, clang::CanQual, clang::CanQual const*, unsigned int)"}, + {"_ZN5clang7CodeGen12CodeGenTypes16GetExpandedTypesENS_8QualTypeERSt6vectorIPKN4llvm4TypeESaIS7_EEb", "clang::CodeGen::CodeGenTypes::GetExpandedTypes(clang::QualType, std::vector>&, bool)"}, + {"_ZN5clang7CodeGen15CodeGenFunction18ExpandTypeFromArgsENS_8QualTypeENS0_6LValueEN4llvm14ilist_iteratorINS4_8ArgumentEEE", "clang::CodeGen::CodeGenFunction::ExpandTypeFromArgs(clang::QualType, clang::CodeGen::LValue, llvm::ilist_iterator)"}, + + // {"_ZN5clang7CodeGen15CodeGenFunction16ExpandTypeToArgsENS_8QualTypeENS0_6RValueERN4llvm11SmallVectorIPNS4_5ValueELj16EEE", + // "clang::CodeGen::CodeGenFunction::ExpandTypeToArgs(clang::QualType, clang::CodeGen::RValue, llvm::SmallVector&)"}, + // "clang::CodeGen::CodeGenFunction::ExpandTypeToArgs(clang::QualType, clang::CodeGen::RValue, llvm::SmallVector&)" was returned + + {"_ZN5clang7CodeGen13CodeGenModule18ReturnTypeUsesSRetERKNS0_14CGFunctionInfoE", "clang::CodeGen::CodeGenModule::ReturnTypeUsesSRet(clang::CodeGen::CGFunctionInfo const&)"}, + {"_ZN5clang7CodeGen13CodeGenModule19ReturnTypeUsesFPRetENS_8QualTypeE", "clang::CodeGen::CodeGenModule::ReturnTypeUsesFPRet(clang::QualType)"}, + {"_ZN5clang7CodeGen12CodeGenTypes15GetFunctionTypeENS0_10GlobalDeclE", "clang::CodeGen::CodeGenTypes::GetFunctionType(clang::CodeGen::GlobalDecl)"}, + {"_ZN5clang7CodeGen12CodeGenTypes15GetFunctionTypeERKNS0_14CGFunctionInfoEbb", "clang::CodeGen::CodeGenTypes::GetFunctionType(clang::CodeGen::CGFunctionInfo const&, bool, bool)"}, + {"_ZN5clang7CodeGen12CodeGenTypes24GetFunctionTypeForVTableENS0_10GlobalDeclE", "clang::CodeGen::CodeGenTypes::GetFunctionTypeForVTable(clang::CodeGen::GlobalDecl)"}, + + // {"_ZN5clang7CodeGen13CodeGenModule22ConstructAttributeListERKNS0_14CGFunctionInfoEPKNS_4DeclERN4llvm11SmallVectorINS8_18AttributeWithIndexELj8EEERj", + // "clang::CodeGen::CodeGenModule::ConstructAttributeList(clang::CodeGen::CGFunctionInfo const&, clang::Decl const*, llvm::SmallVector&, unsigned int&)"}, + // "clang::CodeGen::CodeGenModule::ConstructAttributeList(clang::CodeGen::CGFunctionInfo const&, clang::Decl const*, llvm::SmallVector&, unsigned int&)" was returned + + + // {"_ZN5clang7CodeGen15CodeGenFunction18EmitFunctionPrologERKNS0_14CGFunctionInfoEPN4llvm8FunctionERKNS5_11SmallVectorISt4pairIPKNS_7VarDeclENS_8QualTypeEELj16EEE", + // "clang::CodeGen::CodeGenFunction::EmitFunctionProlog(clang::CodeGen::CGFunctionInfo const&, llvm::Function*, llvm::SmallVector, 16u> const&)"}, + // "clang::CodeGen::CodeGenFunction::EmitFunctionProlog(clang::CodeGen::CGFunctionInfo const&, llvm::Function*, llvm::SmallVector, 16> const&)" was returned + + {"_Z18CreateCoercedStorePN4llvm5ValueES1_bRN5clang7CodeGen15CodeGenFunctionE", "CreateCoercedStore(llvm::Value*, llvm::Value*, bool, clang::CodeGen::CodeGenFunction&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction18EmitFunctionEpilogERKNS0_14CGFunctionInfoE", "clang::CodeGen::CodeGenFunction::EmitFunctionEpilog(clang::CodeGen::CGFunctionInfo const&)"}, + {"_Z17CreateCoercedLoadPN4llvm5ValueEPKNS_4TypeERN5clang7CodeGen15CodeGenFunctionE", "CreateCoercedLoad(llvm::Value*, llvm::Type const*, clang::CodeGen::CodeGenFunction&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction19EmitDelegateCallArgEPKNS_7VarDeclE", "clang::CodeGen::CodeGenFunction::EmitDelegateCallArg(clang::VarDecl const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction11EmitCallArgEPKNS_4ExprENS_8QualTypeE", "clang::CodeGen::CodeGenFunction::EmitCallArg(clang::Expr const*, clang::QualType)"}, + {"_ZN5clang7CodeGen15CodeGenFunction16EmitCallOrInvokeEPN4llvm5ValueEPKS4_S6_RKNS2_5TwineE", "clang::CodeGen::CodeGenFunction::EmitCallOrInvoke(llvm::Value*, llvm::Value* const*, llvm::Value* const*, llvm::Twine const&)"}, + + // {"_ZN5clang7CodeGen15CodeGenFunction8EmitCallERKNS0_14CGFunctionInfoEPN4llvm5ValueENS0_15ReturnValueSlotERKNS5_11SmallVectorISt4pairINS0_6RValueENS_8QualTypeEELj16EEEPKNS_4DeclEPPNS5_11InstructionE", + // "clang::CodeGen::CodeGenFunction::EmitCall(clang::CodeGen::CGFunctionInfo const&, llvm::Value*, clang::CodeGen::ReturnValueSlot, llvm::SmallVector, 16u> const&, clang::Decl const*, llvm::Instruction**)"}, + // "clang::CodeGen::CodeGenFunction::EmitCall(clang::CodeGen::CGFunctionInfo const&, llvm::Value*, clang::CodeGen::ReturnValueSlot, llvm::SmallVector, 16> const&, clang::Decl const*, llvm::Instruction**)" was returned + + {"_ZN5clang7CodeGen15CodeGenFunction9EmitVAArgEPN4llvm5ValueENS_8QualTypeE", "clang::CodeGen::CodeGenFunction::EmitVAArg(llvm::Value*, clang::QualType)"}, + {"_Z34EnterStructPointerForCoercedAccessPN4llvm5ValueEPKNS_10StructTypeEyRN5clang7CodeGen15CodeGenFunctionE", "EnterStructPointerForCoercedAccess(llvm::Value*, llvm::StructType const*, unsigned long long, clang::CodeGen::CodeGenFunction&)"}, + {"_Z24CoerceIntOrPtrToIntOrPtrPN4llvm5ValueEPKNS_4TypeERN5clang7CodeGen15CodeGenFunctionE", "CoerceIntOrPtrToIntOrPtr(llvm::Value*, llvm::Type const*, clang::CodeGen::CodeGenFunction&)"}, + + // {"_ZN5clang7CodeGen14CGFunctionInfo7ProfileIPKNS_7CanQualINS_4TypeEEEEEvRN4llvm16FoldingSetNodeIDERKNS_12FunctionType7ExtInfoES5_T_SF_", + // "void clang::CodeGen::CGFunctionInfo::Profile const*>(llvm::FoldingSetNodeID&, clang::FunctionType::ExtInfo const&, clang::CanQual, clang::CanQual const*, clang::CanQual const*)"}, + // got error + + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE18CreateConstGEP2_32EPNS_5ValueEjjRKNS_5TwineE", "llvm::IRBuilder>::CreateConstGEP2_32(llvm::Value*, unsigned int, unsigned int, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE13CreateRetVoidEv", "llvm::IRBuilder>::CreateRetVoid()"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE9CreateRetEPNS_5ValueE", "llvm::IRBuilder>::CreateRet(llvm::Value*)"}, + + // {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE10CreateCallIPKPNS_5ValueEEEPNS_8CallInstES7_T_SC_RKNS_5TwineE", + // "llvm::CallInst* llvm::IRBuilder>::CreateCall(llvm::Value*, llvm::Value* const*, llvm::Value* const*, llvm::Twine const&)"}, + // "llvm::CallInst* llvm::IRBuilder>::CreateCall(llvm::Value*, false, false, llvm::Twine const&)" was returned + + + // {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE12CreateInvokeIPKPNS_5ValueEEEPNS_10InvokeInstES7_PNS_10BasicBlockESD_T_SE_RKNS_5TwineE", + // "llvm::InvokeInst* llvm::IRBuilder>::CreateInvoke(llvm::Value*, llvm::BasicBlock*, llvm::BasicBlock*, llvm::Value* const*, llvm::Value* const*, llvm::Twine const&)"}, + // "llvm::InvokeInst* llvm::IRBuilder>::CreateInvoke(llvm::Value*, llvm::BasicBlock*, llvm::BasicBlock*, false, false, llvm::Twine const&)" was returned + + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE18CreateExtractValueEPNS_5ValueEjRKNS_5TwineE", "llvm::IRBuilder>::CreateExtractValue(llvm::Value*, unsigned int, llvm::Twine const&)"}, + + // {"_ZN4llvm10InvokeInstC2IPKPNS_5ValueEEES3_PNS_10BasicBlockES7_T_S8_jRKNS_5TwineEPNS_11InstructionE", + // "llvm::InvokeInst::InvokeInst(llvm::Value*, llvm::BasicBlock*, llvm::BasicBlock*, llvm::Value* const*, llvm::Value* const*, unsigned int, llvm::Twine const&, llvm::Instruction*)"}, + // got error + + + // {"_ZN4llvm8CallInstC2IPKPNS_5ValueEEES3_T_S6_RKNS_5TwineEPNS_11InstructionE", + // "llvm::CallInst::CallInst(llvm::Value*, llvm::Value* const*, llvm::Value* const*, llvm::Twine const&, llvm::Instruction*)"}, + // got error + + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE13CreateIntCastEPNS_5ValueEPKNS_4TypeEbRKNS_5TwineE", "llvm::IRBuilder>::CreateIntCast(llvm::Value*, llvm::Type const*, bool, llvm::Twine const&)"}, + {"_ZN5clang7CodeGen13CodeGenModule28GetNonVirtualBaseClassOffsetEPKNS_13CXXRecordDeclEPKPKNS_16CXXBaseSpecifierES9_", "clang::CodeGen::CodeGenModule::GetNonVirtualBaseClassOffset(clang::CXXRecordDecl const*, clang::CXXBaseSpecifier const* const*, clang::CXXBaseSpecifier const* const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction37GetAddressOfDirectBaseInCompleteClassEPN4llvm5ValueEPKNS_13CXXRecordDeclES7_b", "clang::CodeGen::CodeGenFunction::GetAddressOfDirectBaseInCompleteClass(llvm::Value*, clang::CXXRecordDecl const*, clang::CXXRecordDecl const*, bool)"}, + {"_ZN5clang7CodeGen15CodeGenFunction21GetAddressOfBaseClassEPN4llvm5ValueEPKNS_13CXXRecordDeclEPKPKNS_16CXXBaseSpecifierESC_b", "clang::CodeGen::CodeGenFunction::GetAddressOfBaseClass(llvm::Value*, clang::CXXRecordDecl const*, clang::CXXBaseSpecifier const* const*, clang::CXXBaseSpecifier const* const*, bool)"}, + {"_ZN5clang7CodeGen15CodeGenFunction25GetVirtualBaseClassOffsetEPN4llvm5ValueEPKNS_13CXXRecordDeclES7_", "clang::CodeGen::CodeGenFunction::GetVirtualBaseClassOffset(llvm::Value*, clang::CXXRecordDecl const*, clang::CXXRecordDecl const*)"}, + {"_Z31ApplyNonVirtualAndVirtualOffsetRN5clang7CodeGen15CodeGenFunctionEPN4llvm5ValueEyS5_", "ApplyNonVirtualAndVirtualOffset(clang::CodeGen::CodeGenFunction&, llvm::Value*, unsigned long long, llvm::Value*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction24GetAddressOfDerivedClassEPN4llvm5ValueEPKNS_13CXXRecordDeclEPKPKNS_16CXXBaseSpecifierESC_b", "clang::CodeGen::CodeGenFunction::GetAddressOfDerivedClass(llvm::Value*, clang::CXXRecordDecl const*, clang::CXXBaseSpecifier const* const*, clang::CXXBaseSpecifier const* const*, bool)"}, + + // {"_ZN5clang7CodeGen15CodeGenFunction19EmitConstructorBodyERN4llvm11SmallVectorISt4pairIPKNS_7VarDeclENS_8QualTypeEELj16EEE", + // "clang::CodeGen::CodeGenFunction::EmitConstructorBody(llvm::SmallVector, 16u>&)"}, + // "clang::CodeGen::CodeGenFunction::EmitConstructorBody(llvm::SmallVector, 16>&)" was returned + + + // {"_ZN5clang7CodeGen15CodeGenFunction30EmitDelegateCXXConstructorCallEPKNS_18CXXConstructorDeclENS_11CXXCtorTypeERKN4llvm11SmallVectorISt4pairIPKNS_7VarDeclENS_8QualTypeEELj16EEE", + // "clang::CodeGen::CodeGenFunction::EmitDelegateCXXConstructorCall(clang::CXXConstructorDecl const*, clang::CXXCtorType, llvm::SmallVector, 16u> const&)"}, + // "clang::CodeGen::CodeGenFunction::EmitDelegateCXXConstructorCall(clang::CXXConstructorDecl const*, clang::CXXCtorType, llvm::SmallVector, 16> const&)" was returned + + + // {"_ZN5clang7CodeGen15CodeGenFunction16EmitCtorPrologueEPKNS_18CXXConstructorDeclENS_11CXXCtorTypeERN4llvm11SmallVectorISt4pairIPKNS_7VarDeclENS_8QualTypeEELj16EEE", + // "clang::CodeGen::CodeGenFunction::EmitCtorPrologue(clang::CXXConstructorDecl const*, clang::CXXCtorType, llvm::SmallVector, 16u>&)"}, + // "clang::CodeGen::CodeGenFunction::EmitCtorPrologue(clang::CXXConstructorDecl const*, clang::CXXCtorType, llvm::SmallVector, 16>&)" was returned + + {"_ZN5clang7CodeGen15CodeGenFunction24InitializeVTablePointersEPKNS_13CXXRecordDeclE", "clang::CodeGen::CodeGenFunction::InitializeVTablePointers(clang::CXXRecordDecl const*)"}, + + // {"_ZN5clang7CodeGen15CodeGenFunction18EmitDestructorBodyERN4llvm11SmallVectorISt4pairIPKNS_7VarDeclENS_8QualTypeEELj16EEE", + // "clang::CodeGen::CodeGenFunction::EmitDestructorBody(llvm::SmallVector, 16u>&)"}, + // "clang::CodeGen::CodeGenFunction::EmitDestructorBody(llvm::SmallVector, 16>&)" was returned + + {"_ZN5clang7CodeGen15CodeGenFunction17EnterDtorCleanupsEPKNS_17CXXDestructorDeclENS_11CXXDtorTypeE", "clang::CodeGen::CodeGenFunction::EnterDtorCleanups(clang::CXXDestructorDecl const*, clang::CXXDtorType)"}, + {"_ZN5clang7CodeGen15CodeGenFunction21EmitCXXDestructorCallEPKNS_17CXXDestructorDeclENS_11CXXDtorTypeEbPN4llvm5ValueE", "clang::CodeGen::CodeGenFunction::EmitCXXDestructorCall(clang::CXXDestructorDecl const*, clang::CXXDtorType, bool, llvm::Value*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction26EmitCXXAggrConstructorCallEPKNS_18CXXConstructorDeclEPKNS_17ConstantArrayTypeEPN4llvm5ValueENS_17ConstExprIteratorESB_b", "clang::CodeGen::CodeGenFunction::EmitCXXAggrConstructorCall(clang::CXXConstructorDecl const*, clang::ConstantArrayType const*, llvm::Value*, clang::ConstExprIterator, clang::ConstExprIterator, bool)"}, + {"_ZN5clang7CodeGen15CodeGenFunction26EmitCXXAggrConstructorCallEPKNS_18CXXConstructorDeclEPN4llvm5ValueES7_NS_17ConstExprIteratorES8_b", "clang::CodeGen::CodeGenFunction::EmitCXXAggrConstructorCall(clang::CXXConstructorDecl const*, llvm::Value*, llvm::Value*, clang::ConstExprIterator, clang::ConstExprIterator, bool)"}, + {"_ZN5clang7CodeGen15CodeGenFunction22EmitCXXConstructorCallEPKNS_18CXXConstructorDeclENS_11CXXCtorTypeEbPN4llvm5ValueENS_17ConstExprIteratorES9_", "clang::CodeGen::CodeGenFunction::EmitCXXConstructorCall(clang::CXXConstructorDecl const*, clang::CXXCtorType, bool, llvm::Value*, clang::ConstExprIterator, clang::ConstExprIterator)"}, + {"_ZN5clang7CodeGen15CodeGenFunction25EmitCXXAggrDestructorCallEPKNS_17CXXDestructorDeclEPKNS_9ArrayTypeEPN4llvm5ValueE", "clang::CodeGen::CodeGenFunction::EmitCXXAggrDestructorCall(clang::CXXDestructorDecl const*, clang::ArrayType const*, llvm::Value*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction25EmitCXXAggrDestructorCallEPKNS_17CXXDestructorDeclEPN4llvm5ValueES7_", "clang::CodeGen::CodeGenFunction::EmitCXXAggrDestructorCall(clang::CXXDestructorDecl const*, llvm::Value*, llvm::Value*)"}, + {"_Z15GetVTTParameterRN5clang7CodeGen15CodeGenFunctionENS0_10GlobalDeclEb", "GetVTTParameter(clang::CodeGen::CodeGenFunction&, clang::CodeGen::GlobalDecl, bool)"}, + {"_ZN5clang7CodeGen15CodeGenFunction30EmitSynthesizedCXXCopyCtorCallEPKNS_18CXXConstructorDeclEPN4llvm5ValueES7_NS_17ConstExprIteratorES8_", "clang::CodeGen::CodeGenFunction::EmitSynthesizedCXXCopyCtorCall(clang::CXXConstructorDecl const*, llvm::Value*, llvm::Value*, clang::ConstExprIterator, clang::ConstExprIterator)"}, + {"_ZN5clang7CodeGen15CodeGenFunction21PushDestructorCleanupEPKNS_17CXXDestructorDeclEPN4llvm5ValueE", "clang::CodeGen::CodeGenFunction::PushDestructorCleanup(clang::CXXDestructorDecl const*, llvm::Value*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction21PushDestructorCleanupENS_8QualTypeEPN4llvm5ValueE", "clang::CodeGen::CodeGenFunction::PushDestructorCleanup(clang::QualType, llvm::Value*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction12GetVTablePtrEPN4llvm5ValueEPKNS2_4TypeE", "clang::CodeGen::CodeGenFunction::GetVTablePtr(llvm::Value*, llvm::Type const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction23InitializeVTablePointerENS0_13BaseSubobjectEPKNS_13CXXRecordDeclEyPN4llvm8ConstantES5_", "clang::CodeGen::CodeGenFunction::InitializeVTablePointer(clang::CodeGen::BaseSubobject, clang::CXXRecordDecl const*, unsigned long long, llvm::Constant*, clang::CXXRecordDecl const*)"}, + + // {"_ZN5clang7CodeGen15CodeGenFunction24InitializeVTablePointersENS0_13BaseSubobjectEPKNS_13CXXRecordDeclEybPN4llvm8ConstantES5_RNS6_11SmallPtrSetIS5_Lj4EEE", + // "clang::CodeGen::CodeGenFunction::InitializeVTablePointers(clang::CodeGen::BaseSubobject, clang::CXXRecordDecl const*, unsigned long long, bool, llvm::Constant*, clang::CXXRecordDecl const*, llvm::SmallPtrSet&)"}, + // "clang::CodeGen::CodeGenFunction::InitializeVTablePointers(clang::CodeGen::BaseSubobject, clang::CXXRecordDecl const*, unsigned long long, bool, llvm::Constant*, clang::CXXRecordDecl const*, llvm::SmallPtrSet&)" was returned + + {"_ZN12_GLOBAL__N_113CallLocalDtorD1Ev", "(anonymous namespace)::CallLocalDtor::~CallLocalDtor()"}, + {"_ZN12_GLOBAL__N_113CallLocalDtorD0Ev", "(anonymous namespace)::CallLocalDtor::~CallLocalDtor()"}, + {"_ZN12_GLOBAL__N_113CallLocalDtor4EmitERN5clang7CodeGen15CodeGenFunctionEb", "(anonymous namespace)::CallLocalDtor::Emit(clang::CodeGen::CodeGenFunction&, bool)"}, + {"_ZN12_GLOBAL__N_113CallFieldDtorD1Ev", "(anonymous namespace)::CallFieldDtor::~CallFieldDtor()"}, + {"_ZN12_GLOBAL__N_113CallFieldDtorD0Ev", "(anonymous namespace)::CallFieldDtor::~CallFieldDtor()"}, + {"_ZN12_GLOBAL__N_113CallFieldDtor4EmitERN5clang7CodeGen15CodeGenFunctionEb", "(anonymous namespace)::CallFieldDtor::Emit(clang::CodeGen::CodeGenFunction&, bool)"}, + {"_ZN12_GLOBAL__N_118CallArrayFieldDtorD1Ev", "(anonymous namespace)::CallArrayFieldDtor::~CallArrayFieldDtor()"}, + {"_ZN12_GLOBAL__N_118CallArrayFieldDtorD0Ev", "(anonymous namespace)::CallArrayFieldDtor::~CallArrayFieldDtor()"}, + {"_ZN12_GLOBAL__N_118CallArrayFieldDtor4EmitERN5clang7CodeGen15CodeGenFunctionEb", "(anonymous namespace)::CallArrayFieldDtor::Emit(clang::CodeGen::CodeGenFunction&, bool)"}, + {"_ZN12_GLOBAL__N_114CallDtorDeleteD1Ev", "(anonymous namespace)::CallDtorDelete::~CallDtorDelete()"}, + {"_ZN12_GLOBAL__N_114CallDtorDeleteD0Ev", "(anonymous namespace)::CallDtorDelete::~CallDtorDelete()"}, + {"_ZN12_GLOBAL__N_114CallDtorDelete4EmitERN5clang7CodeGen15CodeGenFunctionEb", "(anonymous namespace)::CallDtorDelete::Emit(clang::CodeGen::CodeGenFunction&, bool)"}, + {"_ZN12_GLOBAL__N_112CallBaseDtorD1Ev", "(anonymous namespace)::CallBaseDtor::~CallBaseDtor()"}, + {"_ZN12_GLOBAL__N_112CallBaseDtorD0Ev", "(anonymous namespace)::CallBaseDtor::~CallBaseDtor()"}, + {"_ZN12_GLOBAL__N_112CallBaseDtor4EmitERN5clang7CodeGen15CodeGenFunctionEb", "(anonymous namespace)::CallBaseDtor::Emit(clang::CodeGen::CodeGenFunction&, bool)"}, + {"_Z24EmitAggMemberInitializerRN5clang7CodeGen15CodeGenFunctionENS0_6LValueEPN4llvm5ValueEPNS_18CXXCtorInitializerENS_8QualTypeEj", "EmitAggMemberInitializer(clang::CodeGen::CodeGenFunction&, clang::CodeGen::LValue, llvm::Value*, clang::CXXCtorInitializer*, clang::QualType, unsigned int)"}, + {"_ZN12_GLOBAL__N_114CallMemberDtorD1Ev", "(anonymous namespace)::CallMemberDtor::~CallMemberDtor()"}, + {"_ZN12_GLOBAL__N_114CallMemberDtorD0Ev", "(anonymous namespace)::CallMemberDtor::~CallMemberDtor()"}, + {"_ZN12_GLOBAL__N_114CallMemberDtor4EmitERN5clang7CodeGen15CodeGenFunctionEb", "(anonymous namespace)::CallMemberDtor::Emit(clang::CodeGen::CodeGenFunction&, bool)"}, + {"_ZN5clang11StmtVisitorIN12_GLOBAL__N_121DynamicThisUseCheckerEvE5VisitEPNS_4StmtE", "clang::StmtVisitor<(anonymous namespace)::DynamicThisUseChecker, void>::Visit(clang::Stmt*)"}, + {"_ZN5clang20EvaluatedExprVisitorIN12_GLOBAL__N_121DynamicThisUseCheckerEE9VisitStmtEPNS_4StmtE", "clang::EvaluatedExprVisitor<(anonymous namespace)::DynamicThisUseChecker>::VisitStmt(clang::Stmt*)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE18CreateConstGEP1_64EPNS_5ValueEyRKNS_5TwineE", "llvm::IRBuilder>::CreateConstGEP1_64(llvm::Value*, unsigned long long, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE26CreateConstInBoundsGEP2_64EPNS_5ValueEyyRKNS_5TwineE", "llvm::IRBuilder>::CreateConstInBoundsGEP2_64(llvm::Value*, unsigned long long, unsigned long long, llvm::Twine const&)"}, + {"_ZN5clang7CodeGen15DominatingValueINS0_6RValueEE10saved_type11needsSavingES2_", "clang::CodeGen::DominatingValue::saved_type::needsSaving(clang::CodeGen::RValue)"}, + {"_ZN5clang7CodeGen15DominatingValueINS0_6RValueEE10saved_type4saveERNS0_15CodeGenFunctionES2_", "clang::CodeGen::DominatingValue::saved_type::save(clang::CodeGen::CodeGenFunction&, clang::CodeGen::RValue)"}, + {"_ZN5clang7CodeGen15DominatingValueINS0_6RValueEE10saved_type7restoreERNS0_15CodeGenFunctionE", "clang::CodeGen::DominatingValue::saved_type::restore(clang::CodeGen::CodeGenFunction&)"}, + {"_ZN5clang7CodeGen12EHScopeStack8allocateEm", "clang::CodeGen::EHScopeStack::allocate(unsigned long)"}, + {"_ZNK5clang7CodeGen12EHScopeStack21getEnclosingEHCleanupENS1_8iteratorE", "clang::CodeGen::EHScopeStack::getEnclosingEHCleanup(clang::CodeGen::EHScopeStack::iterator) const"}, + {"_ZN5clang7CodeGen12EHScopeStack11pushCleanupENS0_11CleanupKindEm", "clang::CodeGen::EHScopeStack::pushCleanup(clang::CodeGen::CleanupKind, unsigned long)"}, + {"_ZN5clang7CodeGen12EHScopeStack10popCleanupEv", "clang::CodeGen::EHScopeStack::popCleanup()"}, + {"_ZN5clang7CodeGen12EHScopeStack13popNullFixupsEv", "clang::CodeGen::EHScopeStack::popNullFixups()"}, + {"_ZN5clang7CodeGen12EHScopeStack10pushFilterEj", "clang::CodeGen::EHScopeStack::pushFilter(unsigned int)"}, + {"_ZN5clang7CodeGen12EHScopeStack9popFilterEv", "clang::CodeGen::EHScopeStack::popFilter()"}, + {"_ZN5clang7CodeGen12EHScopeStack9pushCatchEj", "clang::CodeGen::EHScopeStack::pushCatch(unsigned int)"}, + {"_ZN5clang7CodeGen12EHScopeStack13pushTerminateEv", "clang::CodeGen::EHScopeStack::pushTerminate()"}, + {"_ZN5clang7CodeGen15CodeGenFunction19initFullExprCleanupEv", "clang::CodeGen::CodeGenFunction::initFullExprCleanup()"}, + {"_ZN5clang7CodeGen12EHScopeStack7CleanupD0Ev", "clang::CodeGen::EHScopeStack::Cleanup::~Cleanup()"}, + {"_ZN5clang7CodeGen12EHScopeStack7CleanupD1Ev", "clang::CodeGen::EHScopeStack::Cleanup::~Cleanup()"}, + {"_ZN5clang7CodeGen12EHScopeStack7CleanupD2Ev", "clang::CodeGen::EHScopeStack::Cleanup::~Cleanup()"}, + {"_ZN5clang7CodeGen15CodeGenFunction19ResolveBranchFixupsEPN4llvm10BasicBlockE", "clang::CodeGen::CodeGenFunction::ResolveBranchFixups(llvm::BasicBlock*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction16PopCleanupBlocksENS0_12EHScopeStack15stable_iteratorE", "clang::CodeGen::CodeGenFunction::PopCleanupBlocks(clang::CodeGen::EHScopeStack::stable_iterator)"}, + {"_ZN5clang7CodeGen15CodeGenFunction15PopCleanupBlockEb", "clang::CodeGen::CodeGenFunction::PopCleanupBlock(bool)"}, + {"_Z29ForwardPrebranchedFallthroughPN4llvm10BasicBlockES1_S1_", "ForwardPrebranchedFallthrough(llvm::BasicBlock*, llvm::BasicBlock*, llvm::BasicBlock*)"}, + {"_Z20SimplifyCleanupEntryRN5clang7CodeGen15CodeGenFunctionEPN4llvm10BasicBlockE", "SimplifyCleanupEntry(clang::CodeGen::CodeGenFunction&, llvm::BasicBlock*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction20getEHCleanupDestSlotEv", "clang::CodeGen::CodeGenFunction::getEHCleanupDestSlot()"}, + {"_Z11EmitCleanupRN5clang7CodeGen15CodeGenFunctionEPNS0_12EHScopeStack7CleanupEbPN4llvm5ValueE", "EmitCleanup(clang::CodeGen::CodeGenFunction&, clang::CodeGen::EHScopeStack::Cleanup*, bool, llvm::Value*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction24getNormalCleanupDestSlotEv", "clang::CodeGen::CodeGenFunction::getNormalCleanupDestSlot()"}, + {"_ZN5clang7CodeGen15CodeGenFunction24EmitBranchThroughCleanupENS1_8JumpDestE", "clang::CodeGen::CodeGenFunction::EmitBranchThroughCleanup(clang::CodeGen::CodeGenFunction::JumpDest)"}, + {"_ZN5clang7CodeGen15CodeGenFunction26EmitBranchThroughEHCleanupENS1_10UnwindDestE", "clang::CodeGen::CodeGenFunction::EmitBranchThroughEHCleanup(clang::CodeGen::CodeGenFunction::UnwindDest)"}, + {"_ZN5clang7CodeGen15CodeGenFunction20ActivateCleanupBlockENS0_12EHScopeStack15stable_iteratorE", "clang::CodeGen::CodeGenFunction::ActivateCleanupBlock(clang::CodeGen::EHScopeStack::stable_iterator)"}, + {"_Z27SetupCleanupBlockActivationRN5clang7CodeGen15CodeGenFunctionENS0_12EHScopeStack15stable_iteratorE15ForActivation_t", "SetupCleanupBlockActivation(clang::CodeGen::CodeGenFunction&, clang::CodeGen::EHScopeStack::stable_iterator, ForActivation_t)"}, + {"_ZN5clang7CodeGen15CodeGenFunction22DeactivateCleanupBlockENS0_12EHScopeStack15stable_iteratorE", "clang::CodeGen::CodeGenFunction::DeactivateCleanupBlock(clang::CodeGen::EHScopeStack::stable_iterator)"}, + {"_ZN5clang7CodeGen14EHCleanupScope14addBranchAfterEPN4llvm11ConstantIntEPNS2_10BasicBlockE", "clang::CodeGen::EHCleanupScope::addBranchAfter(llvm::ConstantInt*, llvm::BasicBlock*)"}, + {"_ZN5clang7CodeGen14EHCleanupScope16addEHBranchAfterEPN4llvm11ConstantIntEPNS2_10BasicBlockE", "clang::CodeGen::EHCleanupScope::addEHBranchAfter(llvm::ConstantInt*, llvm::BasicBlock*)"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang7CodeGen11BranchFixupELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN5clang7CodeGen14EHCleanupScopeD2Ev", "clang::CodeGen::EHCleanupScope::~EHCleanupScope()"}, + {"_ZN5clang7CodeGen11CGDebugInfoC1ERNS0_13CodeGenModuleE", "clang::CodeGen::CGDebugInfo::CGDebugInfo(clang::CodeGen::CodeGenModule&)"}, + {"_ZN5clang7CodeGen11CGDebugInfoC2ERNS0_13CodeGenModuleE", "clang::CodeGen::CGDebugInfo::CGDebugInfo(clang::CodeGen::CodeGenModule&)"}, + {"_ZN5clang7CodeGen11CGDebugInfo17CreateCompileUnitEv", "clang::CodeGen::CGDebugInfo::CreateCompileUnit()"}, + {"_ZN5clang7CodeGen11CGDebugInfoD1Ev", "clang::CodeGen::CGDebugInfo::~CGDebugInfo()"}, + {"_ZN5clang7CodeGen11CGDebugInfoD2Ev", "clang::CodeGen::CGDebugInfo::~CGDebugInfo()"}, + {"_ZN5clang7CodeGen11CGDebugInfo11setLocationENS_14SourceLocationE", "clang::CodeGen::CGDebugInfo::setLocation(clang::SourceLocation)"}, + {"_ZN5clang7CodeGen11CGDebugInfo20getContextDescriptorEPKNS_4DeclE", "clang::CodeGen::CGDebugInfo::getContextDescriptor(clang::Decl const*)"}, + {"_ZN5clang7CodeGen11CGDebugInfo20getOrCreateNameSpaceEPKNS_13NamespaceDeclE", "clang::CodeGen::CGDebugInfo::getOrCreateNameSpace(clang::NamespaceDecl const*)"}, + {"_ZN5clang7CodeGen11CGDebugInfo15getOrCreateTypeENS_8QualTypeEN4llvm6DIFileE", "clang::CodeGen::CGDebugInfo::getOrCreateType(clang::QualType, llvm::DIFile)"}, + {"_ZN5clang7CodeGen11CGDebugInfo19getOrCreateMainFileEv", "clang::CodeGen::CGDebugInfo::getOrCreateMainFile()"}, + {"_ZN5clang7CodeGen11CGDebugInfo15getFunctionNameEPKNS_12FunctionDeclE", "clang::CodeGen::CGDebugInfo::getFunctionName(clang::FunctionDecl const*)"}, + {"_ZN5clang7CodeGen11CGDebugInfo17getObjCMethodNameEPKNS_14ObjCMethodDeclE", "clang::CodeGen::CGDebugInfo::getObjCMethodName(clang::ObjCMethodDecl const*)"}, + {"_ZN5clang7CodeGen11CGDebugInfo12getClassNameEPNS_10RecordDeclE", "clang::CodeGen::CGDebugInfo::getClassName(clang::RecordDecl*)"}, + {"_ZN5clang7CodeGen11CGDebugInfo15getOrCreateFileENS_14SourceLocationE", "clang::CodeGen::CGDebugInfo::getOrCreateFile(clang::SourceLocation)"}, + {"_ZN5clang7CodeGen11CGDebugInfo17getCurrentDirnameEv", "clang::CodeGen::CGDebugInfo::getCurrentDirname()"}, + {"_ZN5clang7CodeGen11CGDebugInfo13getLineNumberENS_14SourceLocationE", "clang::CodeGen::CGDebugInfo::getLineNumber(clang::SourceLocation)"}, + {"_ZN5clang7CodeGen11CGDebugInfo15getColumnNumberENS_14SourceLocationE", "clang::CodeGen::CGDebugInfo::getColumnNumber(clang::SourceLocation)"}, + {"_ZN5clang7CodeGen11CGDebugInfo10CreateTypeEPKNS_11BuiltinTypeE", "clang::CodeGen::CGDebugInfo::CreateType(clang::BuiltinType const*)"}, + {"_ZN5clang7CodeGen11CGDebugInfo10CreateTypeEPKNS_11ComplexTypeE", "clang::CodeGen::CGDebugInfo::CreateType(clang::ComplexType const*)"}, + {"_ZN5clang7CodeGen11CGDebugInfo19CreateQualifiedTypeENS_8QualTypeEN4llvm6DIFileE", "clang::CodeGen::CGDebugInfo::CreateQualifiedType(clang::QualType, llvm::DIFile)"}, + {"_ZN5clang7CodeGen11CGDebugInfo10CreateTypeEPKNS_21ObjCObjectPointerTypeEN4llvm6DIFileE", "clang::CodeGen::CGDebugInfo::CreateType(clang::ObjCObjectPointerType const*, llvm::DIFile)"}, + {"_ZN5clang7CodeGen11CGDebugInfo21CreatePointerLikeTypeEjPKNS_4TypeENS_8QualTypeEN4llvm6DIFileE", "clang::CodeGen::CGDebugInfo::CreatePointerLikeType(unsigned int, clang::Type const*, clang::QualType, llvm::DIFile)"}, + {"_ZN5clang7CodeGen11CGDebugInfo10CreateTypeEPKNS_11PointerTypeEN4llvm6DIFileE", "clang::CodeGen::CGDebugInfo::CreateType(clang::PointerType const*, llvm::DIFile)"}, + {"_ZN5clang7CodeGen11CGDebugInfo17CreatePointeeTypeENS_8QualTypeEN4llvm6DIFileE", "clang::CodeGen::CGDebugInfo::CreatePointeeType(clang::QualType, llvm::DIFile)"}, + {"_ZN5clang7CodeGen11CGDebugInfo10CreateTypeEPKNS_16BlockPointerTypeEN4llvm6DIFileE", "clang::CodeGen::CGDebugInfo::CreateType(clang::BlockPointerType const*, llvm::DIFile)"}, + {"_ZN5clang7CodeGen11CGDebugInfo16CreateMemberTypeEN4llvm6DIFileENS_8QualTypeENS2_9StringRefEPy", "clang::CodeGen::CGDebugInfo::CreateMemberType(llvm::DIFile, clang::QualType, llvm::StringRef, unsigned long long*)"}, + {"_ZN5clang7CodeGen11CGDebugInfo10CreateTypeEPKNS_11TypedefTypeEN4llvm6DIFileE", "clang::CodeGen::CGDebugInfo::CreateType(clang::TypedefType const*, llvm::DIFile)"}, + {"_ZN5clang7CodeGen11CGDebugInfo10CreateTypeEPKNS_12FunctionTypeEN4llvm6DIFileE", "clang::CodeGen::CGDebugInfo::CreateType(clang::FunctionType const*, llvm::DIFile)"}, + {"_ZN5clang7CodeGen11CGDebugInfo19CollectRecordFieldsEPKNS_10RecordDeclEN4llvm6DIFileERNS5_15SmallVectorImplIPNS5_5ValueEEE", "clang::CodeGen::CGDebugInfo::CollectRecordFields(clang::RecordDecl const*, llvm::DIFile, llvm::SmallVectorImpl&)"}, + {"_ZN5clang7CodeGen11CGDebugInfo21getOrCreateMethodTypeEPKNS_13CXXMethodDeclEN4llvm6DIFileE", "clang::CodeGen::CGDebugInfo::getOrCreateMethodType(clang::CXXMethodDecl const*, llvm::DIFile)"}, + {"_ZN5clang7CodeGen11CGDebugInfo23CreateCXXMemberFunctionEPKNS_13CXXMethodDeclEN4llvm6DIFileENS5_6DITypeE", "clang::CodeGen::CGDebugInfo::CreateCXXMemberFunction(clang::CXXMethodDecl const*, llvm::DIFile, llvm::DIType)"}, + {"_ZN5clang7CodeGen11CGDebugInfo25CollectCXXMemberFunctionsEPKNS_13CXXRecordDeclEN4llvm6DIFileERNS5_15SmallVectorImplIPNS5_5ValueEEENS5_6DITypeE", "clang::CodeGen::CGDebugInfo::CollectCXXMemberFunctions(clang::CXXRecordDecl const*, llvm::DIFile, llvm::SmallVectorImpl&, llvm::DIType)"}, + {"_ZN5clang7CodeGen11CGDebugInfo17CollectCXXFriendsEPKNS_13CXXRecordDeclEN4llvm6DIFileERNS5_15SmallVectorImplIPNS5_5ValueEEENS5_6DITypeE", "clang::CodeGen::CGDebugInfo::CollectCXXFriends(clang::CXXRecordDecl const*, llvm::DIFile, llvm::SmallVectorImpl&, llvm::DIType)"}, + {"_ZN5clang7CodeGen11CGDebugInfo15CollectCXXBasesEPKNS_13CXXRecordDeclEN4llvm6DIFileERNS5_15SmallVectorImplIPNS5_5ValueEEENS5_6DITypeE", "clang::CodeGen::CGDebugInfo::CollectCXXBases(clang::CXXRecordDecl const*, llvm::DIFile, llvm::SmallVectorImpl&, llvm::DIType)"}, + {"_ZN5clang7CodeGen11CGDebugInfo24getOrCreateVTablePtrTypeEN4llvm6DIFileE", "clang::CodeGen::CGDebugInfo::getOrCreateVTablePtrType(llvm::DIFile)"}, + {"_ZN5clang7CodeGen11CGDebugInfo13getVTableNameEPKNS_13CXXRecordDeclE", "clang::CodeGen::CGDebugInfo::getVTableName(clang::CXXRecordDecl const*)"}, + {"_ZN5clang7CodeGen11CGDebugInfo17CollectVTableInfoEPKNS_13CXXRecordDeclEN4llvm6DIFileERNS5_15SmallVectorImplIPNS5_5ValueEEE", "clang::CodeGen::CGDebugInfo::CollectVTableInfo(clang::CXXRecordDecl const*, llvm::DIFile, llvm::SmallVectorImpl&)"}, + {"_ZN5clang7CodeGen11CGDebugInfo21getOrCreateRecordTypeENS_8QualTypeENS_14SourceLocationE", "clang::CodeGen::CGDebugInfo::getOrCreateRecordType(clang::QualType, clang::SourceLocation)"}, + {"_ZN5clang7CodeGen11CGDebugInfo10CreateTypeEPKNS_10RecordTypeE", "clang::CodeGen::CGDebugInfo::CreateType(clang::RecordType const*)"}, + {"_ZN5clang7CodeGen11CGDebugInfo10CreateTypeEPKNS_14ObjCObjectTypeEN4llvm6DIFileE", "clang::CodeGen::CGDebugInfo::CreateType(clang::ObjCObjectType const*, llvm::DIFile)"}, + {"_ZN5clang7CodeGen11CGDebugInfo10CreateTypeEPKNS_17ObjCInterfaceTypeEN4llvm6DIFileE", "clang::CodeGen::CGDebugInfo::CreateType(clang::ObjCInterfaceType const*, llvm::DIFile)"}, + {"_ZN5clang7CodeGen11CGDebugInfo10CreateTypeEPKNS_7TagTypeE", "clang::CodeGen::CGDebugInfo::CreateType(clang::TagType const*)"}, + {"_ZN5clang7CodeGen11CGDebugInfo14CreateEnumTypeEPKNS_8EnumDeclE", "clang::CodeGen::CGDebugInfo::CreateEnumType(clang::EnumDecl const*)"}, + {"_ZN5clang7CodeGen11CGDebugInfo10CreateTypeEPKNS_10VectorTypeEN4llvm6DIFileE", "clang::CodeGen::CGDebugInfo::CreateType(clang::VectorType const*, llvm::DIFile)"}, + {"_ZN5clang7CodeGen11CGDebugInfo10CreateTypeEPKNS_9ArrayTypeEN4llvm6DIFileE", "clang::CodeGen::CGDebugInfo::CreateType(clang::ArrayType const*, llvm::DIFile)"}, + {"_ZN5clang7CodeGen11CGDebugInfo10CreateTypeEPKNS_19LValueReferenceTypeEN4llvm6DIFileE", "clang::CodeGen::CGDebugInfo::CreateType(clang::LValueReferenceType const*, llvm::DIFile)"}, + {"_ZN5clang7CodeGen11CGDebugInfo10CreateTypeEPKNS_19RValueReferenceTypeEN4llvm6DIFileE", "clang::CodeGen::CGDebugInfo::CreateType(clang::RValueReferenceType const*, llvm::DIFile)"}, + {"_ZN5clang7CodeGen11CGDebugInfo10CreateTypeEPKNS_17MemberPointerTypeEN4llvm6DIFileE", "clang::CodeGen::CGDebugInfo::CreateType(clang::MemberPointerType const*, llvm::DIFile)"}, + {"_ZN5clang7CodeGen11CGDebugInfo14CreateTypeNodeENS_8QualTypeEN4llvm6DIFileE", "clang::CodeGen::CGDebugInfo::CreateTypeNode(clang::QualType, llvm::DIFile)"}, + {"_ZN5clang7CodeGen11CGDebugInfo17EmitFunctionStartENS0_10GlobalDeclENS_8QualTypeEPN4llvm8FunctionERNS4_9IRBuilderILb0ENS4_14ConstantFolderENS4_24IRBuilderDefaultInserterILb0EEEEE", "clang::CodeGen::CGDebugInfo::EmitFunctionStart(clang::CodeGen::GlobalDecl, clang::QualType, llvm::Function*, llvm::IRBuilder>&)"}, + {"_ZN5clang7CodeGen11CGDebugInfo13EmitStopPointERN4llvm9IRBuilderILb0ENS2_14ConstantFolderENS2_24IRBuilderDefaultInserterILb0EEEEE", "clang::CodeGen::CGDebugInfo::EmitStopPoint(llvm::IRBuilder>&)"}, + {"_ZN5clang7CodeGen11CGDebugInfo25UpdateLineDirectiveRegionERN4llvm9IRBuilderILb0ENS2_14ConstantFolderENS2_24IRBuilderDefaultInserterILb0EEEEE", "clang::CodeGen::CGDebugInfo::UpdateLineDirectiveRegion(llvm::IRBuilder>&)"}, + {"_ZN5clang7CodeGen11CGDebugInfo15EmitRegionStartERN4llvm9IRBuilderILb0ENS2_14ConstantFolderENS2_24IRBuilderDefaultInserterILb0EEEEE", "clang::CodeGen::CGDebugInfo::EmitRegionStart(llvm::IRBuilder>&)"}, + {"_ZN5clang7CodeGen11CGDebugInfo13EmitRegionEndERN4llvm9IRBuilderILb0ENS2_14ConstantFolderENS2_24IRBuilderDefaultInserterILb0EEEEE", "clang::CodeGen::CGDebugInfo::EmitRegionEnd(llvm::IRBuilder>&)"}, + {"_ZN5clang7CodeGen11CGDebugInfo15EmitFunctionEndERN4llvm9IRBuilderILb0ENS2_14ConstantFolderENS2_24IRBuilderDefaultInserterILb0EEEEE", "clang::CodeGen::CGDebugInfo::EmitFunctionEnd(llvm::IRBuilder>&)"}, + {"_ZN5clang7CodeGen11CGDebugInfo28EmitTypeForVarWithBlocksAttrEPKNS_9ValueDeclEPy", "clang::CodeGen::CGDebugInfo::EmitTypeForVarWithBlocksAttr(clang::ValueDecl const*, unsigned long long*)"}, + {"_ZN5clang7CodeGen11CGDebugInfo11EmitDeclareEPKNS_7VarDeclEjPN4llvm5ValueERNS5_9IRBuilderILb0ENS5_14ConstantFolderENS5_24IRBuilderDefaultInserterILb0EEEEEb", "clang::CodeGen::CGDebugInfo::EmitDeclare(clang::VarDecl const*, unsigned int, llvm::Value*, llvm::IRBuilder>&, bool)"}, + {"_ZN5clang7CodeGen11CGDebugInfo11EmitDeclareEPKNS_7VarDeclEjPN4llvm5ValueERNS5_9IRBuilderILb0ENS5_14ConstantFolderENS5_24IRBuilderDefaultInserterILb0EEEEERKNS0_11CGBlockInfoE", "clang::CodeGen::CGDebugInfo::EmitDeclare(clang::VarDecl const*, unsigned int, llvm::Value*, llvm::IRBuilder>&, clang::CodeGen::CGBlockInfo const&)"}, + {"_ZN5clang7CodeGen11CGDebugInfo25EmitDeclareOfAutoVariableEPKNS_7VarDeclEPN4llvm5ValueERNS5_9IRBuilderILb0ENS5_14ConstantFolderENS5_24IRBuilderDefaultInserterILb0EEEEE", "clang::CodeGen::CGDebugInfo::EmitDeclareOfAutoVariable(clang::VarDecl const*, llvm::Value*, llvm::IRBuilder>&)"}, + {"_ZN5clang7CodeGen11CGDebugInfo33EmitDeclareOfBlockDeclRefVariableEPKNS_7VarDeclEPN4llvm5ValueERNS5_9IRBuilderILb0ENS5_14ConstantFolderENS5_24IRBuilderDefaultInserterILb0EEEEERKNS0_11CGBlockInfoE", "clang::CodeGen::CGDebugInfo::EmitDeclareOfBlockDeclRefVariable(clang::VarDecl const*, llvm::Value*, llvm::IRBuilder>&, clang::CodeGen::CGBlockInfo const&)"}, + {"_ZN5clang7CodeGen11CGDebugInfo24EmitDeclareOfArgVariableEPKNS_7VarDeclEPN4llvm5ValueERNS5_9IRBuilderILb0ENS5_14ConstantFolderENS5_24IRBuilderDefaultInserterILb0EEEEEb", "clang::CodeGen::CGDebugInfo::EmitDeclareOfArgVariable(clang::VarDecl const*, llvm::Value*, llvm::IRBuilder>&, bool)"}, + {"_ZN5clang7CodeGen11CGDebugInfo18EmitGlobalVariableEPN4llvm14GlobalVariableEPKNS_7VarDeclE", "clang::CodeGen::CGDebugInfo::EmitGlobalVariable(llvm::GlobalVariable*, clang::VarDecl const*)"}, + {"_ZN5clang7CodeGen11CGDebugInfo18EmitGlobalVariableEPN4llvm14GlobalVariableEPNS_17ObjCInterfaceDeclE", "clang::CodeGen::CGDebugInfo::EmitGlobalVariable(llvm::GlobalVariable*, clang::ObjCInterfaceDecl*)"}, + {"_ZN5clang7CodeGen11CGDebugInfo18EmitGlobalVariableEPKNS_9ValueDeclEPN4llvm8ConstantE", "clang::CodeGen::CGDebugInfo::EmitGlobalVariable(clang::ValueDecl const*, llvm::Constant*)"}, + {"_ZNK5clang15ASTRecordLayout24getBaseClassOffsetInBitsEPKNS_13CXXRecordDeclE", "clang::ASTRecordLayout::getBaseClassOffsetInBits(clang::CXXRecordDecl const*) const"}, + {"_ZN4llvm8DenseMapIPKN5clang13NamespaceDeclENS_6WeakVHENS_12DenseMapInfoIS4_EENS6_IS5_EEE16FindAndConstructERKS4_", "llvm::DenseMap, llvm::DenseMapInfo>::FindAndConstruct(clang::NamespaceDecl const* const&)"}, + {"_ZN4llvm8DenseMapIPKN5clang13NamespaceDeclENS_6WeakVHENS_12DenseMapInfoIS4_EENS6_IS5_EEE16InsertIntoBucketERKS4_RKS5_PSt4pairIS4_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::NamespaceDecl const* const&, llvm::WeakVH const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang13NamespaceDeclENS_6WeakVHENS_12DenseMapInfoIS4_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKN5clang4DeclENS_6WeakVHENS_12DenseMapInfoIS4_EENS6_IS5_EEE16FindAndConstructERKS4_", "llvm::DenseMap, llvm::DenseMapInfo>::FindAndConstruct(clang::Decl const* const&)"}, + {"_ZN4llvm8DenseMapIPKN5clang4DeclENS_6WeakVHENS_12DenseMapInfoIS4_EENS6_IS5_EEE16InsertIntoBucketERKS4_RKS5_PSt4pairIS4_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::Decl const* const&, llvm::WeakVH const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang4DeclENS_6WeakVHENS_12DenseMapInfoIS4_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNSt6vectorIN4llvm10TrackingVHINS0_6MDNodeEEESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, llvm::TrackingVH const&)"}, + {"_ZN4llvm8DenseMapIPKN5clang12FunctionDeclENS_6WeakVHENS_12DenseMapInfoIS4_EENS6_IS5_EEE16FindAndConstructERKS4_", "llvm::DenseMap, llvm::DenseMapInfo>::FindAndConstruct(clang::FunctionDecl const* const&)"}, + {"_ZN4llvm8DenseMapIPKN5clang12FunctionDeclENS_6WeakVHENS_12DenseMapInfoIS4_EENS6_IS5_EEE16InsertIntoBucketERKS4_RKS5_PSt4pairIS4_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::FunctionDecl const* const&, llvm::WeakVH const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang12FunctionDeclENS_6WeakVHENS_12DenseMapInfoIS4_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPvNS_6WeakVHENS_12DenseMapInfoIS1_EENS3_IS2_EEE16FindAndConstructERKS1_", "llvm::DenseMap, llvm::DenseMapInfo>::FindAndConstruct(void* const&)"}, + {"_ZN4llvm8DenseMapIPvNS_6WeakVHENS_12DenseMapInfoIS1_EENS3_IS2_EEE16InsertIntoBucketERKS1_RKS2_PSt4pairIS1_S2_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(void* const&, llvm::WeakVH const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPvNS_6WeakVHENS_12DenseMapInfoIS1_EENS3_IS2_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKcNS_6WeakVHENS_12DenseMapInfoIS2_EENS4_IS3_EEE16FindAndConstructERKS2_", "llvm::DenseMap, llvm::DenseMapInfo>::FindAndConstruct(char const* const&)"}, + {"_ZN4llvm8DenseMapIPKcNS_6WeakVHENS_12DenseMapInfoIS2_EENS4_IS3_EEE16InsertIntoBucketERKS2_RKS3_PSt4pairIS2_S3_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(char const* const&, llvm::WeakVH const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKcNS_6WeakVHENS_12DenseMapInfoIS2_EENS4_IS3_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang7CodeGen15CodeGenFunction8EmitDeclERKNS_4DeclE", "clang::CodeGen::CodeGenFunction::EmitDecl(clang::Decl const&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction11EmitVarDeclERKNS_7VarDeclE", "clang::CodeGen::CodeGenFunction::EmitVarDecl(clang::VarDecl const&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction15EmitAutoVarDeclERKNS_7VarDeclEPFvRS1_S4_PN4llvm5ValueEE", "clang::CodeGen::CodeGenFunction::EmitAutoVarDecl(clang::VarDecl const&, void (*)(clang::CodeGen::CodeGenFunction&, clang::VarDecl const&, llvm::Value*))"}, + {"_ZN5clang7CodeGen15CodeGenFunction17EmitStaticVarDeclERKNS_7VarDeclEN4llvm11GlobalValue12LinkageTypesE", "clang::CodeGen::CodeGenFunction::EmitStaticVarDecl(clang::VarDecl const&, llvm::GlobalValue::LinkageTypes)"}, + {"_ZN5clang7CodeGen15CodeGenFunction19CreateStaticVarDeclERKNS_7VarDeclEPKcN4llvm11GlobalValue12LinkageTypesE", "clang::CodeGen::CodeGenFunction::CreateStaticVarDecl(clang::VarDecl const&, char const*, llvm::GlobalValue::LinkageTypes)"}, + {"_Z17GetStaticDeclNameRN5clang7CodeGen15CodeGenFunctionERKNS_7VarDeclEPKc", "GetStaticDeclName(clang::CodeGen::CodeGenFunction&, clang::VarDecl const&, char const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction29AddInitializerToStaticVarDeclERKNS_7VarDeclEPN4llvm14GlobalVariableE", "clang::CodeGen::CodeGenFunction::AddInitializerToStaticVarDecl(clang::VarDecl const&, llvm::GlobalVariable*)"}, + {"_ZNK5clang7CodeGen15CodeGenFunction22getByRefValueLLVMFieldEPKNS_9ValueDeclE", "clang::CodeGen::CodeGenFunction::getByRefValueLLVMField(clang::ValueDecl const*) const"}, + {"_ZN5clang7CodeGen15CodeGenFunction22BuildBlockByrefAddressEPN4llvm5ValueEPKNS_7VarDeclE", "clang::CodeGen::CodeGenFunction::BuildBlockByrefAddress(llvm::Value*, clang::VarDecl const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction14BuildByRefTypeEPKNS_7VarDeclE", "clang::CodeGen::CodeGenFunction::BuildByRefType(clang::VarDecl const*)"}, + {"_Z28emitStoresForInitAfterMemsetPN4llvm8ConstantEPNS_5ValueERNS_9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEEE", "emitStoresForInitAfterMemset(llvm::Constant*, llvm::Value*, llvm::IRBuilder>&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction12EmitParmDeclERKNS_7VarDeclEPN4llvm5ValueEb", "clang::CodeGen::CodeGenFunction::EmitParmDecl(clang::VarDecl const&, llvm::Value*, bool)"}, + {"_ZN12_GLOBAL__N_116CallBlockReleaseD1Ev", "(anonymous namespace)::CallBlockRelease::~CallBlockRelease()"}, + {"_ZN12_GLOBAL__N_116CallBlockReleaseD0Ev", "(anonymous namespace)::CallBlockRelease::~CallBlockRelease()"}, + {"_ZN12_GLOBAL__N_116CallBlockRelease4EmitERN5clang7CodeGen15CodeGenFunctionEb", "(anonymous namespace)::CallBlockRelease::Emit(clang::CodeGen::CodeGenFunction&, bool)"}, + {"_ZN12_GLOBAL__N_119CallCleanupFunctionD1Ev", "(anonymous namespace)::CallCleanupFunction::~CallCleanupFunction()"}, + {"_ZN12_GLOBAL__N_119CallCleanupFunctionD0Ev", "(anonymous namespace)::CallCleanupFunction::~CallCleanupFunction()"}, + {"_ZN12_GLOBAL__N_119CallCleanupFunction4EmitERN5clang7CodeGen15CodeGenFunctionEb", "(anonymous namespace)::CallCleanupFunction::Emit(clang::CodeGen::CodeGenFunction&, bool)"}, + {"_ZN12_GLOBAL__N_111CallVarDtorD1Ev", "(anonymous namespace)::CallVarDtor::~CallVarDtor()"}, + {"_ZN12_GLOBAL__N_111CallVarDtorD0Ev", "(anonymous namespace)::CallVarDtor::~CallVarDtor()"}, + {"_ZN12_GLOBAL__N_111CallVarDtor4EmitERN5clang7CodeGen15CodeGenFunctionEb", "(anonymous namespace)::CallVarDtor::Emit(clang::CodeGen::CodeGenFunction&, bool)"}, + {"_ZN12_GLOBAL__N_113CallArrayDtorD1Ev", "(anonymous namespace)::CallArrayDtor::~CallArrayDtor()"}, + {"_ZN12_GLOBAL__N_113CallArrayDtorD0Ev", "(anonymous namespace)::CallArrayDtor::~CallArrayDtor()"}, + {"_ZN12_GLOBAL__N_113CallArrayDtor4EmitERN5clang7CodeGen15CodeGenFunctionEb", "(anonymous namespace)::CallArrayDtor::Emit(clang::CodeGen::CodeGenFunction&, bool)"}, + {"_ZN12_GLOBAL__N_116CallStackRestoreD1Ev", "(anonymous namespace)::CallStackRestore::~CallStackRestore()"}, + {"_ZN12_GLOBAL__N_116CallStackRestoreD0Ev", "(anonymous namespace)::CallStackRestore::~CallStackRestore()"}, + {"_ZN12_GLOBAL__N_116CallStackRestore4EmitERN5clang7CodeGen15CodeGenFunctionEb", "(anonymous namespace)::CallStackRestore::Emit(clang::CodeGen::CodeGenFunction&, bool)"}, + {"_Z35canEmitInitWithFewStoresAfterMemsetPN4llvm8ConstantERj", "canEmitInitWithFewStoresAfterMemset(llvm::Constant*, unsigned int&)"}, + {"_ZNK5clang4Decl7getAttrINS_11CleanupAttrEEEPT_v", "clang::CleanupAttr* clang::Decl::getAttr() const"}, + + // {"_ZN4llvm8DenseMapIPKN5clang9ValueDeclESt4pairIPKNS_4TypeEjENS_12DenseMapInfoIS4_EENSA_IS9_EEE16InsertIntoBucketERKS4_RKS9_PS5_IS4_S9_E", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(clang::ValueDecl const* const&, std::pair const&, std::pair>*)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(clang::ValueDecl const* const&, std::pair const&, std::pair*>)" was returned + + {"_ZN4llvm8DenseMapIPKN5clang9ValueDeclESt4pairIPKNS_4TypeEjENS_12DenseMapInfoIS4_EENSA_IS9_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)"}, + {"_ZN5clang7CodeGen15CodeGenFunction24EmitCXXGlobalVarDeclInitERKNS_7VarDeclEPN4llvm8ConstantE", "clang::CodeGen::CodeGenFunction::EmitCXXGlobalVarDeclInit(clang::VarDecl const&, llvm::Constant*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction29EmitCXXGlobalDtorRegistrationEPN4llvm8ConstantES4_", "clang::CodeGen::CodeGenFunction::EmitCXXGlobalDtorRegistration(llvm::Constant*, llvm::Constant*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction18EmitCXXGuardedInitERKNS_7VarDeclEPN4llvm14GlobalVariableE", "clang::CodeGen::CodeGenFunction::EmitCXXGuardedInit(clang::VarDecl const&, llvm::GlobalVariable*)"}, + {"_ZN5clang7CodeGen13CodeGenModule28EmitCXXGlobalVarDeclInitFuncEPKNS_7VarDeclEPN4llvm14GlobalVariableE", "clang::CodeGen::CodeGenModule::EmitCXXGlobalVarDeclInitFunc(clang::VarDecl const*, llvm::GlobalVariable*)"}, + {"_Z34CreateGlobalInitOrDestructFunctionRN5clang7CodeGen13CodeGenModuleEPKN4llvm12FunctionTypeENS3_9StringRefE", "CreateGlobalInitOrDestructFunction(clang::CodeGen::CodeGenModule&, llvm::FunctionType const*, llvm::StringRef)"}, + {"_ZN5clang7CodeGen15CodeGenFunction32GenerateCXXGlobalVarDeclInitFuncEPN4llvm8FunctionEPKNS_7VarDeclEPNS2_14GlobalVariableE", "clang::CodeGen::CodeGenFunction::GenerateCXXGlobalVarDeclInitFunc(llvm::Function*, clang::VarDecl const*, llvm::GlobalVariable*)"}, + {"_ZN5clang7CodeGen13CodeGenModule21EmitCXXGlobalInitFuncEv", "clang::CodeGen::CodeGenModule::EmitCXXGlobalInitFunc()"}, + {"_ZN5clang7CodeGen15CodeGenFunction25GenerateCXXGlobalInitFuncEPN4llvm8FunctionEPPNS2_8ConstantEj", "clang::CodeGen::CodeGenFunction::GenerateCXXGlobalInitFunc(llvm::Function*, llvm::Constant**, unsigned int)"}, + {"_ZN5clang7CodeGen13CodeGenModule21EmitCXXGlobalDtorFuncEv", "clang::CodeGen::CodeGenModule::EmitCXXGlobalDtorFunc()"}, + {"_ZN5clang7CodeGen15CodeGenFunction25GenerateCXXGlobalDtorFuncEPN4llvm8FunctionERKSt6vectorISt4pairINS2_6WeakVHEPNS2_8ConstantEESaISA_EE", "clang::CodeGen::CodeGenFunction::GenerateCXXGlobalDtorFunc(llvm::Function*, std::vector, std::allocator>> const&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction31GenerateCXXAggrDestructorHelperEPKNS_17CXXDestructorDeclEPKNS_9ArrayTypeEPN4llvm5ValueE", "clang::CodeGen::CodeGenFunction::GenerateCXXAggrDestructorHelper(clang::CXXDestructorDecl const*, clang::ArrayType const*, llvm::Value*)"}, + {"_ZN4llvm25array_pod_sort_comparatorISt4pairIN5clang7CodeGen16OrderGlobalInitsEPNS_8FunctionEEEEiPKvS9_", "int llvm::array_pod_sort_comparator>(void const*, void const*)"}, + {"_ZN5clang7CodeGen13CodeGenModule15AddCXXDtorEntryEPN4llvm8ConstantES4_", "clang::CodeGen::CodeGenModule::AddCXXDtorEntry(llvm::Constant*, llvm::Constant*)"}, + {"_ZNK5clang4Decl7getAttrINS_16InitPriorityAttrEEEPT_v", "clang::InitPriorityAttr* clang::Decl::getAttr() const"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE10CreateCallEPNS_5ValueERKNS_5TwineE", "llvm::IRBuilder>::CreateCall(llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm23SmallVectorTemplateBaseISt4pairIN5clang7CodeGen16OrderGlobalInitsEPNS_8FunctionEELb0EE4growEm", "llvm::SmallVectorTemplateBase, false>::grow(unsigned long)"}, + {"_ZNSt6vectorISt4pairIN4llvm6WeakVHEPNS1_8ConstantEESaIS5_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS5_S7_EERKS5_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + + // {"_ZNSt15__copy_backwardILb0ESt26random_access_iterator_tagE8__copy_bIPSt4pairIN4llvm6WeakVHEPNS4_8ConstantEES9_EET0_T_SB_SA_", + // "std::pair* std::__copy_backward::__copy_b*, std::pair*>(std::pair*, std::pair*, std::pair*)"}, + // got error + + {"_ZN5clang7CodeGen15CodeGenFunction26getUnwindResumeOrRethrowFnEv", "clang::CodeGen::CodeGenFunction::getUnwindResumeOrRethrowFn()"}, + {"_ZN5clang7CodeGen13EHPersonality3getERKNS_11LangOptionsE", "clang::CodeGen::EHPersonality::get(clang::LangOptions const&)"}, + {"_ZN5clang7CodeGen13CodeGenModule19SimplifyPersonalityEv", "clang::CodeGen::CodeGenModule::SimplifyPersonality()"}, + {"_Z25PersonalityHasOnlyCXXUsesPN4llvm8ConstantE", "PersonalityHasOnlyCXXUses(llvm::Constant*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction16getExceptionSlotEv", "clang::CodeGen::CodeGenFunction::getExceptionSlot()"}, + {"_ZN5clang7CodeGen15CodeGenFunction16EmitCXXThrowExprEPKNS_12CXXThrowExprE", "clang::CodeGen::CodeGenFunction::EmitCXXThrowExpr(clang::CXXThrowExpr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction15EmitStartEHSpecEPKNS_4DeclE", "clang::CodeGen::CodeGenFunction::EmitStartEHSpec(clang::Decl const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction13EmitEndEHSpecEPKNS_4DeclE", "clang::CodeGen::CodeGenFunction::EmitEndEHSpec(clang::Decl const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction14EmitCXXTryStmtERKNS_10CXXTryStmtE", "clang::CodeGen::CodeGenFunction::EmitCXXTryStmt(clang::CXXTryStmt const&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction15EnterCXXTryStmtERKNS_10CXXTryStmtEb", "clang::CodeGen::CodeGenFunction::EnterCXXTryStmt(clang::CXXTryStmt const&, bool)"}, + {"_ZN5clang7CodeGen15CodeGenFunction14ExitCXXTryStmtERKNS_10CXXTryStmtEb", "clang::CodeGen::CodeGenFunction::ExitCXXTryStmt(clang::CXXTryStmt const&, bool)"}, + {"_ZN5clang7CodeGen15CodeGenFunction17getInvokeDestImplEv", "clang::CodeGen::CodeGenFunction::getInvokeDestImpl()"}, + {"_ZN5clang7CodeGen15CodeGenFunction14EmitLandingPadEv", "clang::CodeGen::CodeGenFunction::EmitLandingPad()"}, + {"_ZN5clang7CodeGen15CodeGenFunction22getTerminateLandingPadEv", "clang::CodeGen::CodeGenFunction::getTerminateLandingPad()"}, + {"_Z22getOpaquePersonalityFnRN5clang7CodeGen13CodeGenModuleERKNS0_13EHPersonalityE", "getOpaquePersonalityFn(clang::CodeGen::CodeGenModule&, clang::CodeGen::EHPersonality const&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction19getTerminateHandlerEv", "clang::CodeGen::CodeGenFunction::getTerminateHandler()"}, + {"_ZN5clang7CodeGen15CodeGenFunction14getRethrowDestEv", "clang::CodeGen::CodeGenFunction::getRethrowDest()"}, + {"_ZN5clang7CodeGen15CodeGenFunction17EnterFinallyBlockEPKNS_4StmtEPN4llvm8ConstantES7_S7_", "clang::CodeGen::CodeGenFunction::EnterFinallyBlock(clang::Stmt const*, llvm::Constant*, llvm::Constant*, llvm::Constant*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction16ExitFinallyBlockERNS1_11FinallyInfoE", "clang::CodeGen::CodeGenFunction::ExitFinallyBlock(clang::CodeGen::CodeGenFunction::FinallyInfo&)"}, + {"_Z14getTerminateFnRN5clang7CodeGen15CodeGenFunctionE", "getTerminateFn(clang::CodeGen::CodeGenFunction&)"}, + {"_ZN12_GLOBAL__N_114PerformFinallyD1Ev", "(anonymous namespace)::PerformFinally::~PerformFinally()"}, + {"_ZN12_GLOBAL__N_114PerformFinallyD0Ev", "(anonymous namespace)::PerformFinally::~PerformFinally()"}, + {"_ZN12_GLOBAL__N_114PerformFinally4EmitERN5clang7CodeGen15CodeGenFunctionEb", "(anonymous namespace)::PerformFinally::Emit(clang::CodeGen::CodeGenFunction&, bool)"}, + {"_ZN12_GLOBAL__N_122CallEndCatchForFinallyD1Ev", "(anonymous namespace)::CallEndCatchForFinally::~CallEndCatchForFinally()"}, + {"_ZN12_GLOBAL__N_122CallEndCatchForFinallyD0Ev", "(anonymous namespace)::CallEndCatchForFinally::~CallEndCatchForFinally()"}, + {"_ZN12_GLOBAL__N_122CallEndCatchForFinally4EmitERN5clang7CodeGen15CodeGenFunctionEb", "(anonymous namespace)::CallEndCatchForFinally::Emit(clang::CodeGen::CodeGenFunction&, bool)"}, + {"_ZN12_GLOBAL__N_111CallRethrowD1Ev", "(anonymous namespace)::CallRethrow::~CallRethrow()"}, + {"_ZN12_GLOBAL__N_111CallRethrowD0Ev", "(anonymous namespace)::CallRethrow::~CallRethrow()"}, + {"_ZN12_GLOBAL__N_111CallRethrow4EmitERN5clang7CodeGen15CodeGenFunctionEb", "(anonymous namespace)::CallRethrow::Emit(clang::CodeGen::CodeGenFunction&, bool)"}, + {"_Z14CallBeginCatchRN5clang7CodeGen15CodeGenFunctionEPN4llvm5ValueEb", "CallBeginCatch(clang::CodeGen::CodeGenFunction&, llvm::Value*, bool)"}, + {"_Z14InitCatchParamRN5clang7CodeGen15CodeGenFunctionERKNS_7VarDeclEPN4llvm5ValueE", "InitCatchParam(clang::CodeGen::CodeGenFunction&, clang::VarDecl const&, llvm::Value*)"}, + {"_ZN12_GLOBAL__N_112CallEndCatchD1Ev", "(anonymous namespace)::CallEndCatch::~CallEndCatch()"}, + {"_ZN12_GLOBAL__N_112CallEndCatchD0Ev", "(anonymous namespace)::CallEndCatch::~CallEndCatch()"}, + {"_ZN12_GLOBAL__N_112CallEndCatch4EmitERN5clang7CodeGen15CodeGenFunctionEb", "(anonymous namespace)::CallEndCatch::Emit(clang::CodeGen::CodeGenFunction&, bool)"}, + {"_ZN5clang7CodeGen12EHScopeStack19ConditionalCleanup1IN12_GLOBAL__N_113FreeExceptionEPN4llvm5ValueEED1Ev", "clang::CodeGen::EHScopeStack::ConditionalCleanup1<(anonymous namespace)::FreeException, llvm::Value*>::~ConditionalCleanup1()"}, + {"_ZN5clang7CodeGen12EHScopeStack19ConditionalCleanup1IN12_GLOBAL__N_113FreeExceptionEPN4llvm5ValueEED0Ev", "clang::CodeGen::EHScopeStack::ConditionalCleanup1<(anonymous namespace)::FreeException, llvm::Value*>::~ConditionalCleanup1()"}, + {"_ZN5clang7CodeGen12EHScopeStack19ConditionalCleanup1IN12_GLOBAL__N_113FreeExceptionEPN4llvm5ValueEE4EmitERNS0_15CodeGenFunctionEb", "clang::CodeGen::EHScopeStack::ConditionalCleanup1<(anonymous namespace)::FreeException, llvm::Value*>::Emit(clang::CodeGen::CodeGenFunction&, bool)"}, + {"_ZN12_GLOBAL__N_113FreeException4EmitERN5clang7CodeGen15CodeGenFunctionEbPN4llvm5ValueE", "(anonymous namespace)::FreeException::Emit(clang::CodeGen::CodeGenFunction&, bool, llvm::Value*)"}, + {"_ZN5clang7CodeGen12EHScopeStack21UnconditionalCleanup1IN12_GLOBAL__N_113FreeExceptionEPN4llvm5ValueEED1Ev", "clang::CodeGen::EHScopeStack::UnconditionalCleanup1<(anonymous namespace)::FreeException, llvm::Value*>::~UnconditionalCleanup1()"}, + {"_ZN5clang7CodeGen12EHScopeStack21UnconditionalCleanup1IN12_GLOBAL__N_113FreeExceptionEPN4llvm5ValueEED0Ev", "clang::CodeGen::EHScopeStack::UnconditionalCleanup1<(anonymous namespace)::FreeException, llvm::Value*>::~UnconditionalCleanup1()"}, + {"_ZN5clang7CodeGen12EHScopeStack21UnconditionalCleanup1IN12_GLOBAL__N_113FreeExceptionEPN4llvm5ValueEE4EmitERNS0_15CodeGenFunctionEb", "clang::CodeGen::EHScopeStack::UnconditionalCleanup1<(anonymous namespace)::FreeException, llvm::Value*>::Emit(clang::CodeGen::CodeGenFunction&, bool)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE12CreateInvokeEPNS_5ValueEPNS_10BasicBlockES8_RKNS_5TwineE", "llvm::IRBuilder>::CreateInvoke(llvm::Value*, llvm::BasicBlock*, llvm::BasicBlock*, llvm::Twine const&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction19getUnreachableBlockEv", "clang::CodeGen::CodeGenFunction::getUnreachableBlock()"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE13CreateInvoke3EPNS_5ValueEPNS_10BasicBlockES8_S6_S6_S6_RKNS_5TwineE", "llvm::IRBuilder>::CreateInvoke3(llvm::Value*, llvm::BasicBlock*, llvm::BasicBlock*, llvm::Value*, llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang7CodeGen12EHCatchScope7HandlerELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN4llvm8DenseMapIPNS_5ValueEN5clang7CodeGen15CodeGenFunction10UnwindDestENS_12DenseMapInfoIS2_EENS7_IS6_EEE16InsertIntoBucketERKS2_RKS6_PSt4pairIS2_S6_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::Value* const&, clang::CodeGen::CodeGenFunction::UnwindDest const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_5ValueEN5clang7CodeGen15CodeGenFunction10UnwindDestENS_12DenseMapInfoIS2_EENS7_IS6_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang7CodeGen19DominatingLLVMValue4saveERNS0_15CodeGenFunctionEPN4llvm5ValueE", "clang::CodeGen::DominatingLLVMValue::save(clang::CodeGen::CodeGenFunction&, llvm::Value*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction17EmitCastToVoidPtrEPN4llvm5ValueE", "clang::CodeGen::CodeGenFunction::EmitCastToVoidPtr(llvm::Value*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction16CreateTempAllocaEPKN4llvm4TypeERKNS2_5TwineE", "clang::CodeGen::CodeGenFunction::CreateTempAlloca(llvm::Type const*, llvm::Twine const&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction14InitTempAllocaEPN4llvm10AllocaInstEPNS2_5ValueE", "clang::CodeGen::CodeGenFunction::InitTempAlloca(llvm::AllocaInst*, llvm::Value*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction12CreateIRTempENS_8QualTypeERKN4llvm5TwineE", "clang::CodeGen::CodeGenFunction::CreateIRTemp(clang::QualType, llvm::Twine const&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction13CreateMemTempENS_8QualTypeERKN4llvm5TwineE", "clang::CodeGen::CodeGenFunction::CreateMemTemp(clang::QualType, llvm::Twine const&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction18EvaluateExprAsBoolEPKNS_4ExprE", "clang::CodeGen::CodeGenFunction::EvaluateExprAsBool(clang::Expr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction15EmitIgnoredExprEPKNS_4ExprE", "clang::CodeGen::CodeGenFunction::EmitIgnoredExpr(clang::Expr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction11EmitAnyExprEPKNS_4ExprENS0_12AggValueSlotEb", "clang::CodeGen::CodeGenFunction::EmitAnyExpr(clang::Expr const*, clang::CodeGen::AggValueSlot, bool)"}, + {"_ZN5clang7CodeGen15CodeGenFunction10EmitLValueEPKNS_4ExprE", "clang::CodeGen::CodeGenFunction::EmitLValue(clang::Expr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction17EmitAnyExprToTempEPKNS_4ExprE", "clang::CodeGen::CodeGenFunction::EmitAnyExprToTemp(clang::Expr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction16EmitAnyExprToMemEPKNS_4ExprEPN4llvm5ValueEbb", "clang::CodeGen::CodeGenFunction::EmitAnyExprToMem(clang::Expr const*, llvm::Value*, bool, bool)"}, + {"_ZN5clang7CodeGen15CodeGenFunction22EmitStoreThroughLValueENS0_6RValueENS0_6LValueENS_8QualTypeE", "clang::CodeGen::CodeGenFunction::EmitStoreThroughLValue(clang::CodeGen::RValue, clang::CodeGen::LValue, clang::QualType)"}, + {"_ZN5clang7CodeGen15CodeGenFunction26EmitReferenceBindingToExprEPKNS_4ExprEPKNS_9NamedDeclE", "clang::CodeGen::CodeGenFunction::EmitReferenceBindingToExpr(clang::Expr const*, clang::NamedDecl const*)"}, + {"_Z27EmitExprForReferenceBindingRN5clang7CodeGen15CodeGenFunctionEPKNS_4ExprERPN4llvm5ValueERPKNS_17CXXDestructorDeclEPKNS_9NamedDeclE", "EmitExprForReferenceBinding(clang::CodeGen::CodeGenFunction&, clang::Expr const*, llvm::Value*&, clang::CXXDestructorDecl const*&, clang::NamedDecl const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction18getAccessedFieldNoEjPKN4llvm8ConstantE", "clang::CodeGen::CodeGenFunction::getAccessedFieldNo(unsigned int, llvm::Constant const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction9EmitCheckEPN4llvm5ValueEj", "clang::CodeGen::CodeGenFunction::EmitCheck(llvm::Value*, unsigned int)"}, + {"_ZN5clang7CodeGen15CodeGenFunction9getTrapBBEv", "clang::CodeGen::CodeGenFunction::getTrapBB()"}, + {"_ZN5clang7CodeGen15CodeGenFunction24EmitComplexPrePostIncDecEPKNS_13UnaryOperatorENS0_6LValueEbb", "clang::CodeGen::CodeGenFunction::EmitComplexPrePostIncDec(clang::UnaryOperator const*, clang::CodeGen::LValue, bool, bool)"}, + {"_ZN5clang7CodeGen15CodeGenFunction14GetUndefRValueENS_8QualTypeE", "clang::CodeGen::CodeGenFunction::GetUndefRValue(clang::QualType)"}, + {"_ZN5clang7CodeGen15CodeGenFunction21EmitUnsupportedRValueEPKNS_4ExprEPKc", "clang::CodeGen::CodeGenFunction::EmitUnsupportedRValue(clang::Expr const*, char const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction21EmitUnsupportedLValueEPKNS_4ExprEPKc", "clang::CodeGen::CodeGenFunction::EmitUnsupportedLValue(clang::Expr const*, char const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction17EmitCheckedLValueEPKNS_4ExprE", "clang::CodeGen::CodeGenFunction::EmitCheckedLValue(clang::Expr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction22EmitObjCSelectorLValueEPKNS_16ObjCSelectorExprE", "clang::CodeGen::CodeGenFunction::EmitObjCSelectorLValue(clang::ObjCSelectorExpr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction24EmitBinaryOperatorLValueEPKNS_14BinaryOperatorE", "clang::CodeGen::CodeGenFunction::EmitBinaryOperatorLValue(clang::BinaryOperator const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction18EmitCallExprLValueEPKNS_8CallExprE", "clang::CodeGen::CodeGenFunction::EmitCallExprLValue(clang::CallExpr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction19EmitVAArgExprLValueEPKNS_9VAArgExprE", "clang::CodeGen::CodeGenFunction::EmitVAArgExprLValue(clang::VAArgExpr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction17EmitDeclRefLValueEPKNS_11DeclRefExprE", "clang::CodeGen::CodeGenFunction::EmitDeclRefLValue(clang::DeclRefExpr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction20EmitPredefinedLValueEPKNS_14PredefinedExprE", "clang::CodeGen::CodeGenFunction::EmitPredefinedLValue(clang::PredefinedExpr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction23EmitStringLiteralLValueEPKNS_13StringLiteralE", "clang::CodeGen::CodeGenFunction::EmitStringLiteralLValue(clang::StringLiteral const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction24EmitObjCEncodeExprLValueEPKNS_14ObjCEncodeExprE", "clang::CodeGen::CodeGenFunction::EmitObjCEncodeExprLValue(clang::ObjCEncodeExpr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction22EmitBlockDeclRefLValueEPKNS_16BlockDeclRefExprE", "clang::CodeGen::CodeGenFunction::EmitBlockDeclRefLValue(clang::BlockDeclRefExpr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction22EmitCXXConstructLValueEPKNS_16CXXConstructExprE", "clang::CodeGen::CodeGenFunction::EmitCXXConstructLValue(clang::CXXConstructExpr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction26EmitCXXBindTemporaryLValueEPKNS_20CXXBindTemporaryExprE", "clang::CodeGen::CodeGenFunction::EmitCXXBindTemporaryLValue(clang::CXXBindTemporaryExpr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction28EmitNullInitializationLValueEPKNS_22CXXScalarValueInitExprE", "clang::CodeGen::CodeGenFunction::EmitNullInitializationLValue(clang::CXXScalarValueInitExpr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction19EmitCXXTypeidLValueEPKNS_13CXXTypeidExprE", "clang::CodeGen::CodeGenFunction::EmitCXXTypeidLValue(clang::CXXTypeidExpr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction25EmitObjCMessageExprLValueEPKNS_15ObjCMessageExprE", "clang::CodeGen::CodeGenFunction::EmitObjCMessageExprLValue(clang::ObjCMessageExpr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction21EmitObjCIvarRefLValueEPKNS_15ObjCIvarRefExprE", "clang::CodeGen::CodeGenFunction::EmitObjCIvarRefLValue(clang::ObjCIvarRefExpr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction18EmitStmtExprLValueEPKNS_8StmtExprE", "clang::CodeGen::CodeGenFunction::EmitStmtExprLValue(clang::StmtExpr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction17EmitUnaryOpLValueEPKNS_13UnaryOperatorE", "clang::CodeGen::CodeGenFunction::EmitUnaryOpLValue(clang::UnaryOperator const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction22EmitArraySubscriptExprEPKNS_18ArraySubscriptExprE", "clang::CodeGen::CodeGenFunction::EmitArraySubscriptExpr(clang::ArraySubscriptExpr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction24EmitExtVectorElementExprEPKNS_20ExtVectorElementExprE", "clang::CodeGen::CodeGenFunction::EmitExtVectorElementExpr(clang::ExtVectorElementExpr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction14EmitMemberExprEPKNS_10MemberExprE", "clang::CodeGen::CodeGenFunction::EmitMemberExpr(clang::MemberExpr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction25EmitCompoundLiteralLValueEPKNS_19CompoundLiteralExprE", "clang::CodeGen::CodeGenFunction::EmitCompoundLiteralLValue(clang::CompoundLiteralExpr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction29EmitConditionalOperatorLValueEPKNS_19ConditionalOperatorE", "clang::CodeGen::CodeGenFunction::EmitConditionalOperatorLValue(clang::ConditionalOperator const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction14EmitCastLValueEPKNS_8CastExprE", "clang::CodeGen::CodeGenFunction::EmitCastLValue(clang::CastExpr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction16EmitLoadOfScalarEPN4llvm5ValueEbjNS_8QualTypeEPNS2_6MDNodeE", "clang::CodeGen::CodeGenFunction::EmitLoadOfScalar(llvm::Value*, bool, unsigned int, clang::QualType, llvm::MDNode*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction14EmitFromMemoryEPN4llvm5ValueENS_8QualTypeE", "clang::CodeGen::CodeGenFunction::EmitFromMemory(llvm::Value*, clang::QualType)"}, + {"_ZN5clang7CodeGen15CodeGenFunction12EmitToMemoryEPN4llvm5ValueENS_8QualTypeE", "clang::CodeGen::CodeGenFunction::EmitToMemory(llvm::Value*, clang::QualType)"}, + {"_ZN5clang7CodeGen15CodeGenFunction17EmitStoreOfScalarEPN4llvm5ValueES4_bjNS_8QualTypeEPNS2_6MDNodeE", "clang::CodeGen::CodeGenFunction::EmitStoreOfScalar(llvm::Value*, llvm::Value*, bool, unsigned int, clang::QualType, llvm::MDNode*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction16EmitLoadOfLValueENS0_6LValueENS_8QualTypeE", "clang::CodeGen::CodeGenFunction::EmitLoadOfLValue(clang::CodeGen::LValue, clang::QualType)"}, + {"_ZN5clang7CodeGen15CodeGenFunction32EmitLoadOfExtVectorElementLValueENS0_6LValueENS_8QualTypeE", "clang::CodeGen::CodeGenFunction::EmitLoadOfExtVectorElementLValue(clang::CodeGen::LValue, clang::QualType)"}, + {"_ZN5clang7CodeGen15CodeGenFunction24EmitLoadOfBitfieldLValueENS0_6LValueENS_8QualTypeE", "clang::CodeGen::CodeGenFunction::EmitLoadOfBitfieldLValue(clang::CodeGen::LValue, clang::QualType)"}, + {"_ZN5clang7CodeGen15CodeGenFunction40EmitStoreThroughExtVectorComponentLValueENS0_6RValueENS0_6LValueENS_8QualTypeE", "clang::CodeGen::CodeGenFunction::EmitStoreThroughExtVectorComponentLValue(clang::CodeGen::RValue, clang::CodeGen::LValue, clang::QualType)"}, + {"_ZN5clang7CodeGen15CodeGenFunction30EmitStoreThroughBitfieldLValueENS0_6RValueENS0_6LValueENS_8QualTypeEPPN4llvm5ValueE", "clang::CodeGen::CodeGenFunction::EmitStoreThroughBitfieldLValue(clang::CodeGen::RValue, clang::CodeGen::LValue, clang::QualType, llvm::Value**)"}, + {"_Z23EmitGlobalVarDeclLValueRN5clang7CodeGen15CodeGenFunctionEPKNS_4ExprEPKNS_7VarDeclE", "EmitGlobalVarDeclLValue(clang::CodeGen::CodeGenFunction&, clang::Expr const*, clang::VarDecl const*)"}, + {"_Z20setObjCGCLValueClassRKN5clang10ASTContextEPKNS_4ExprERNS_7CodeGen6LValueE", "setObjCGCLValueClass(clang::ASTContext const&, clang::Expr const*, clang::CodeGen::LValue&)"}, + {"_Z22EmitFunctionDeclLValueRN5clang7CodeGen15CodeGenFunctionEPKNS_4ExprEPKNS_12FunctionDeclE", "EmitFunctionDeclLValue(clang::CodeGen::CodeGenFunction&, clang::Expr const*, clang::FunctionDecl const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction18EmitLValueForFieldEPN4llvm5ValueEPKNS_9FieldDeclEj", "clang::CodeGen::CodeGenFunction::EmitLValueForField(llvm::Value*, clang::FieldDecl const*, unsigned int)"}, + {"_ZN5clang7CodeGen15CodeGenFunction21EmitLValueForBitfieldEPN4llvm5ValueEPKNS_9FieldDeclEj", "clang::CodeGen::CodeGenFunction::EmitLValueForBitfield(llvm::Value*, clang::FieldDecl const*, unsigned int)"}, + {"_ZN5clang7CodeGen15CodeGenFunction28EmitLValueForAnonRecordFieldEPN4llvm5ValueEPKNS_17IndirectFieldDeclEj", "clang::CodeGen::CodeGenFunction::EmitLValueForAnonRecordField(llvm::Value*, clang::IndirectFieldDecl const*, unsigned int)"}, + {"_ZN5clang7CodeGen15CodeGenFunction32EmitLValueForFieldInitializationEPN4llvm5ValueEPKNS_9FieldDeclEj", "clang::CodeGen::CodeGenFunction::EmitLValueForFieldInitialization(llvm::Value*, clang::FieldDecl const*, unsigned int)"}, + {"_ZN5clang7CodeGen15CodeGenFunction12EmitCallExprEPKNS_8CallExprENS0_15ReturnValueSlotE", "clang::CodeGen::CodeGenFunction::EmitCallExpr(clang::CallExpr const*, clang::CodeGen::ReturnValueSlot)"}, + {"_ZN5clang7CodeGen15CodeGenFunction8EmitCallENS_8QualTypeEPN4llvm5ValueENS0_15ReturnValueSlotENS_17ConstExprIteratorES7_PKNS_4DeclE", "clang::CodeGen::CodeGenFunction::EmitCall(clang::QualType, llvm::Value*, clang::CodeGen::ReturnValueSlot, clang::ConstExprIterator, clang::ConstExprIterator, clang::Decl const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction33EmitPointerToDataMemberBinaryExprEPKNS_14BinaryOperatorE", "clang::CodeGen::CodeGenFunction::EmitPointerToDataMemberBinaryExpr(clang::BinaryOperator const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction14EmitIvarOffsetEPKNS_17ObjCInterfaceDeclEPKNS_12ObjCIvarDeclE", "clang::CodeGen::CodeGenFunction::EmitIvarOffset(clang::ObjCInterfaceDecl const*, clang::ObjCIvarDecl const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction17EmitLValueForIvarENS_8QualTypeEPN4llvm5ValueEPKNS_12ObjCIvarDeclEj", "clang::CodeGen::CodeGenFunction::EmitLValueForIvar(clang::QualType, llvm::Value*, clang::ObjCIvarDecl const*, unsigned int)"}, + {"_ZN4llvm15SmallVectorImplIN12_GLOBAL__N_119SubobjectAdjustmentEE9push_backERKS2_", "llvm::SmallVectorImpl<(anonymous namespace)::SubobjectAdjustment>::push_back((anonymous namespace)::SubobjectAdjustment const&)"}, + {"_Z24CreateReferenceTemporaryRN5clang7CodeGen15CodeGenFunctionENS_8QualTypeEPKNS_9NamedDeclE", "CreateReferenceTemporary(clang::CodeGen::CodeGenFunction&, clang::QualType, clang::NamedDecl const*)"}, + + // {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE17CreateInBoundsGEPIPPNS_5ValueEEES7_S7_T_S9_RKNS_5TwineE", + // "llvm::Value* llvm::IRBuilder>::CreateInBoundsGEP(llvm::Value*, llvm::Value**, llvm::Value**, llvm::Twine const&)"}, + // "llvm::Value* llvm::IRBuilder>::CreateInBoundsGEP(llvm::Value*, false, false, llvm::Twine const&)" was returned + + + // {"_ZN5clang7CodeGen15CodeGenFunction12EmitCallArgsINS_17FunctionProtoTypeEEEvRN4llvm11SmallVectorISt4pairINS0_6RValueENS_8QualTypeEELj16EEEPKT_NS_17ConstExprIteratorESF_", + // "void clang::CodeGen::CodeGenFunction::EmitCallArgs(llvm::SmallVector, 16u>&, clang::FunctionProtoType const*, clang::ConstExprIterator, clang::ConstExprIterator)"}, + // got error + + {"_ZN4llvm8DenseMapIPKN5clang4ExprENS1_7CodeGen6LValueENS_12DenseMapInfoIS4_EENS7_IS6_EEE16InsertIntoBucketERKS4_RKS6_PSt4pairIS4_S6_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::Expr const* const&, clang::CodeGen::LValue const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang4ExprENS1_7CodeGen6LValueENS_12DenseMapInfoIS4_EENS7_IS6_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + + // {"_ZN4llvm11SmallVectorIPNS_8ConstantELj4EEC2EjRKS2_", + // "llvm::SmallVector::SmallVector(unsigned int, llvm::Constant* const&)"}, + // "llvm::SmallVector::SmallVector(unsigned int, llvm::Constant* const&)" was returned + + {"_ZN5clang7CodeGen15CodeGenFunction11EmitAggExprEPKNS_4ExprENS0_12AggValueSlotEb", "clang::CodeGen::CodeGenFunction::EmitAggExpr(clang::Expr const*, clang::CodeGen::AggValueSlot, bool)"}, + {"_ZN5clang11StmtVisitorIN12_GLOBAL__N_114AggExprEmitterEvE5VisitEPNS_4StmtE", "clang::StmtVisitor<(anonymous namespace)::AggExprEmitter, void>::Visit(clang::Stmt*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction19EmitAggExprToLValueEPKNS_4ExprE", "clang::CodeGen::CodeGenFunction::EmitAggExprToLValue(clang::Expr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction17EmitAggregateCopyEPN4llvm5ValueES4_NS_8QualTypeEb", "clang::CodeGen::CodeGenFunction::EmitAggregateCopy(llvm::Value*, llvm::Value*, clang::QualType, bool)"}, + {"_ZN12_GLOBAL__N_114AggExprEmitter13VisitCallExprEPKN5clang8CallExprE", "(anonymous namespace)::AggExprEmitter::VisitCallExpr(clang::CallExpr const*)"}, + {"_ZN12_GLOBAL__N_114AggExprEmitter17EmitFinalDestCopyEPKN5clang4ExprENS1_7CodeGen6LValueEb", "(anonymous namespace)::AggExprEmitter::EmitFinalDestCopy(clang::Expr const*, clang::CodeGen::LValue, bool)"}, + {"_ZN12_GLOBAL__N_114AggExprEmitter10EmitGCMoveEPKN5clang4ExprENS1_7CodeGen6RValueE", "(anonymous namespace)::AggExprEmitter::EmitGCMove(clang::Expr const*, clang::CodeGen::RValue)"}, + {"_ZN12_GLOBAL__N_114AggExprEmitter26EmitInitializationToLValueEPN5clang4ExprENS1_7CodeGen6LValueENS1_8QualTypeE", "(anonymous namespace)::AggExprEmitter::EmitInitializationToLValue(clang::Expr*, clang::CodeGen::LValue, clang::QualType)"}, + {"_ZN12_GLOBAL__N_114AggExprEmitter30EmitNullInitializationToLValueEN5clang7CodeGen6LValueENS1_8QualTypeE", "(anonymous namespace)::AggExprEmitter::EmitNullInitializationToLValue(clang::CodeGen::LValue, clang::QualType)"}, + {"_Z12isSimpleZeroPKN5clang4ExprERNS_7CodeGen15CodeGenFunctionE", "isSimpleZero(clang::Expr const*, clang::CodeGen::CodeGenFunction&)"}, + {"_ZN12_GLOBAL__N_114AggExprEmitter13VisitCastExprEPN5clang8CastExprE", "(anonymous namespace)::AggExprEmitter::VisitCastExpr(clang::CastExpr*)"}, + {"_Z24GetNumNonZeroBytesInInitPKN5clang4ExprERNS_7CodeGen15CodeGenFunctionE", "GetNumNonZeroBytesInInit(clang::Expr const*, clang::CodeGen::CodeGenFunction&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction17EmitCXXMemberCallEPKNS_13CXXMethodDeclEPN4llvm5ValueENS0_15ReturnValueSlotES7_S7_NS_17ConstExprIteratorES9_", "clang::CodeGen::CodeGenFunction::EmitCXXMemberCall(clang::CXXMethodDecl const*, llvm::Value*, clang::CodeGen::ReturnValueSlot, llvm::Value*, llvm::Value*, clang::ConstExprIterator, clang::ConstExprIterator)"}, + {"_ZN5clang7CodeGen15CodeGenFunction21EmitCXXMemberCallExprEPKNS_17CXXMemberCallExprENS0_15ReturnValueSlotE", "clang::CodeGen::CodeGenFunction::EmitCXXMemberCallExpr(clang::CXXMemberCallExpr const*, clang::CodeGen::ReturnValueSlot)"}, + {"_ZN5clang7CodeGen15CodeGenFunction28EmitCXXMemberPointerCallExprEPKNS_17CXXMemberCallExprENS0_15ReturnValueSlotE", "clang::CodeGen::CodeGenFunction::EmitCXXMemberPointerCallExpr(clang::CXXMemberCallExpr const*, clang::CodeGen::ReturnValueSlot)"}, + {"_Z34canDevirtualizeMemberFunctionCallsRN5clang10ASTContextEPKNS_4ExprEPKNS_13CXXMethodDeclE", "canDevirtualizeMemberFunctionCalls(clang::ASTContext&, clang::Expr const*, clang::CXXMethodDecl const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction29EmitCXXOperatorMemberCallExprEPKNS_19CXXOperatorCallExprEPKNS_13CXXMethodDeclENS0_15ReturnValueSlotE", "clang::CodeGen::CodeGenFunction::EmitCXXOperatorMemberCallExpr(clang::CXXOperatorCallExpr const*, clang::CXXMethodDecl const*, clang::CodeGen::ReturnValueSlot)"}, + {"_ZN5clang7CodeGen15CodeGenFunction20EmitCXXConstructExprEPKNS_16CXXConstructExprENS0_12AggValueSlotE", "clang::CodeGen::CodeGenFunction::EmitCXXConstructExpr(clang::CXXConstructExpr const*, clang::CodeGen::AggValueSlot)"}, + {"_ZN5clang7CodeGen15CodeGenFunction26EmitSynthesizedCXXCopyCtorEPN4llvm5ValueES4_PKNS_4ExprE", "clang::CodeGen::CodeGenFunction::EmitSynthesizedCXXCopyCtor(llvm::Value*, llvm::Value*, clang::Expr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction23EmitNewArrayInitializerEPKNS_10CXXNewExprEPN4llvm5ValueES7_", "clang::CodeGen::CodeGenFunction::EmitNewArrayInitializer(clang::CXXNewExpr const*, llvm::Value*, llvm::Value*)"}, + {"_Z23StoreAnyExprIntoOneUnitRN5clang7CodeGen15CodeGenFunctionEPKNS_10CXXNewExprEPN4llvm5ValueE", "StoreAnyExprIntoOneUnit(clang::CodeGen::CodeGenFunction&, clang::CXXNewExpr const*, llvm::Value*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction14EmitCXXNewExprEPKNS_10CXXNewExprE", "clang::CodeGen::CodeGenFunction::EmitCXXNewExpr(clang::CXXNewExpr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction14EmitDeleteCallEPKNS_12FunctionDeclEPN4llvm5ValueENS_8QualTypeE", "clang::CodeGen::CodeGenFunction::EmitDeleteCall(clang::FunctionDecl const*, llvm::Value*, clang::QualType)"}, + {"_ZN5clang7CodeGen15CodeGenFunction17EmitCXXDeleteExprEPKNS_13CXXDeleteExprE", "clang::CodeGen::CodeGenFunction::EmitCXXDeleteExpr(clang::CXXDeleteExpr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction17EmitCXXTypeidExprEPKNS_13CXXTypeidExprE", "clang::CodeGen::CodeGenFunction::EmitCXXTypeidExpr(clang::CXXTypeidExpr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction15EmitDynamicCastEPN4llvm5ValueEPKNS_18CXXDynamicCastExprE", "clang::CodeGen::CodeGenFunction::EmitDynamicCast(llvm::Value*, clang::CXXDynamicCastExpr const*)"}, + {"_ZN12_GLOBAL__N_116CallObjectDeleteD1Ev", "(anonymous namespace)::CallObjectDelete::~CallObjectDelete()"}, + {"_ZN12_GLOBAL__N_116CallObjectDeleteD0Ev", "(anonymous namespace)::CallObjectDelete::~CallObjectDelete()"}, + {"_ZN12_GLOBAL__N_116CallObjectDelete4EmitERN5clang7CodeGen15CodeGenFunctionEb", "(anonymous namespace)::CallObjectDelete::Emit(clang::CodeGen::CodeGenFunction&, bool)"}, + {"_ZN12_GLOBAL__N_115CallArrayDeleteD1Ev", "(anonymous namespace)::CallArrayDelete::~CallArrayDelete()"}, + {"_ZN12_GLOBAL__N_115CallArrayDeleteD0Ev", "(anonymous namespace)::CallArrayDelete::~CallArrayDelete()"}, + {"_ZN12_GLOBAL__N_115CallArrayDelete4EmitERN5clang7CodeGen15CodeGenFunctionEb", "(anonymous namespace)::CallArrayDelete::Emit(clang::CodeGen::CodeGenFunction&, bool)"}, + {"_ZN12_GLOBAL__N_130CallDeleteDuringConditionalNewD1Ev", "(anonymous namespace)::CallDeleteDuringConditionalNew::~CallDeleteDuringConditionalNew()"}, + {"_ZN12_GLOBAL__N_130CallDeleteDuringConditionalNewD0Ev", "(anonymous namespace)::CallDeleteDuringConditionalNew::~CallDeleteDuringConditionalNew()"}, + {"_ZN12_GLOBAL__N_130CallDeleteDuringConditionalNew4EmitERN5clang7CodeGen15CodeGenFunctionEb", "(anonymous namespace)::CallDeleteDuringConditionalNew::Emit(clang::CodeGen::CodeGenFunction&, bool)"}, + {"_ZN12_GLOBAL__N_119CallDeleteDuringNewD1Ev", "(anonymous namespace)::CallDeleteDuringNew::~CallDeleteDuringNew()"}, + {"_ZN12_GLOBAL__N_119CallDeleteDuringNewD0Ev", "(anonymous namespace)::CallDeleteDuringNew::~CallDeleteDuringNew()"}, + {"_ZN12_GLOBAL__N_119CallDeleteDuringNew4EmitERN5clang7CodeGen15CodeGenFunctionEb", "(anonymous namespace)::CallDeleteDuringNew::Emit(clang::CodeGen::CodeGenFunction&, bool)"}, + {"_ZN5clang7CodeGen15CodeGenFunction15EmitComplexExprEPKNS_4ExprEbb", "clang::CodeGen::CodeGenFunction::EmitComplexExpr(clang::Expr const*, bool, bool)"}, + {"_ZN12_GLOBAL__N_118ComplexExprEmitter5VisitEPN5clang4ExprE", "(anonymous namespace)::ComplexExprEmitter::Visit(clang::Expr*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction23EmitComplexExprIntoAddrEPKNS_4ExprEPN4llvm5ValueEb", "clang::CodeGen::CodeGenFunction::EmitComplexExprIntoAddr(clang::Expr const*, llvm::Value*, bool)"}, + {"_ZN5clang7CodeGen15CodeGenFunction18StoreComplexToAddrESt4pairIPN4llvm5ValueES5_ES5_b", "clang::CodeGen::CodeGenFunction::StoreComplexToAddr(std::pair, llvm::Value*, bool)"}, + {"_ZN5clang7CodeGen15CodeGenFunction19LoadComplexFromAddrEPN4llvm5ValueEb", "clang::CodeGen::CodeGenFunction::LoadComplexFromAddr(llvm::Value*, bool)"}, + {"_ZN12_GLOBAL__N_118ComplexExprEmitter17EmitLoadOfComplexEPN4llvm5ValueEb", "(anonymous namespace)::ComplexExprEmitter::EmitLoadOfComplex(llvm::Value*, bool)"}, + {"_ZN5clang7CodeGen15CodeGenFunction27EmitComplexAssignmentLValueEPKNS_14BinaryOperatorE", "clang::CodeGen::CodeGenFunction::EmitComplexAssignmentLValue(clang::BinaryOperator const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction35EmitComplexCompoundAssignmentLValueEPKNS_22CompoundAssignOperatorE", "clang::CodeGen::CodeGenFunction::EmitComplexCompoundAssignmentLValue(clang::CompoundAssignOperator const*)"}, + {"_ZN12_GLOBAL__N_118ComplexExprEmitter10EmitBinMulERKNS0_9BinOpInfoE", "(anonymous namespace)::ComplexExprEmitter::EmitBinMul((anonymous namespace)::ComplexExprEmitter::BinOpInfo const&)"}, + {"_ZN12_GLOBAL__N_118ComplexExprEmitter10EmitBinDivERKNS0_9BinOpInfoE", "(anonymous namespace)::ComplexExprEmitter::EmitBinDiv((anonymous namespace)::ComplexExprEmitter::BinOpInfo const&)"}, + {"_ZN12_GLOBAL__N_118ComplexExprEmitter10EmitBinSubERKNS0_9BinOpInfoE", "(anonymous namespace)::ComplexExprEmitter::EmitBinSub((anonymous namespace)::ComplexExprEmitter::BinOpInfo const&)"}, + {"_ZN12_GLOBAL__N_118ComplexExprEmitter10EmitBinAddERKNS0_9BinOpInfoE", "(anonymous namespace)::ComplexExprEmitter::EmitBinAdd((anonymous namespace)::ComplexExprEmitter::BinOpInfo const&)"}, + {"_ZN12_GLOBAL__N_118ComplexExprEmitter24EmitCompoundAssignLValueEPKN5clang22CompoundAssignOperatorEMS0_FSt4pairIPN4llvm5ValueES8_ERKNS0_9BinOpInfoEERS9_", "(anonymous namespace)::ComplexExprEmitter::EmitCompoundAssignLValue(clang::CompoundAssignOperator const*, std::pair ((anonymous namespace)::ComplexExprEmitter::*)((anonymous namespace)::ComplexExprEmitter::BinOpInfo const&), std::pair&)"}, + {"_ZN12_GLOBAL__N_118ComplexExprEmitter24EmitComplexToComplexCastESt4pairIPN4llvm5ValueES4_EN5clang8QualTypeES7_", "(anonymous namespace)::ComplexExprEmitter::EmitComplexToComplexCast(std::pair, clang::QualType, clang::QualType)"}, + {"_ZN12_GLOBAL__N_118ComplexExprEmitter22EmitStoreThroughLValueESt4pairIPN4llvm5ValueES4_EN5clang7CodeGen6LValueE", "(anonymous namespace)::ComplexExprEmitter::EmitStoreThroughLValue(std::pair, clang::CodeGen::LValue)"}, + {"_ZN5clang11StmtVisitorIN12_GLOBAL__N_118ComplexExprEmitterESt4pairIPN4llvm5ValueES6_EE5VisitEPNS_4StmtE", "clang::StmtVisitor<(anonymous namespace)::ComplexExprEmitter, std::pair>::Visit(clang::Stmt*)"}, + {"_ZN12_GLOBAL__N_118ComplexExprEmitter9VisitExprEPN5clang4ExprE", "(anonymous namespace)::ComplexExprEmitter::VisitExpr(clang::Expr*)"}, + {"_ZN12_GLOBAL__N_118ComplexExprEmitter16EmitLoadOfLValueEPKN5clang4ExprE", "(anonymous namespace)::ComplexExprEmitter::EmitLoadOfLValue(clang::Expr const*)"}, + {"_ZN12_GLOBAL__N_118ComplexExprEmitter8EmitCastEN5clang8CastKindEPNS1_4ExprENS1_8QualTypeE", "(anonymous namespace)::ComplexExprEmitter::EmitCast(clang::CastKind, clang::Expr*, clang::QualType)"}, + {"_ZN12_GLOBAL__N_118ComplexExprEmitter18EmitCompoundAssignEPKN5clang22CompoundAssignOperatorEMS0_FSt4pairIPN4llvm5ValueES8_ERKNS0_9BinOpInfoEE", "(anonymous namespace)::ComplexExprEmitter::EmitCompoundAssign(clang::CompoundAssignOperator const*, std::pair ((anonymous namespace)::ComplexExprEmitter::*)((anonymous namespace)::ComplexExprEmitter::BinOpInfo const&))"}, + + // {"_ZN4llvm8DenseMapIPKN5clang4ExprESt4pairIPNS_5ValueES7_ENS_12DenseMapInfoIS4_EENS9_IS8_EEE16InsertIntoBucketERKS4_RKS8_PS5_IS4_S8_E", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(clang::Expr const* const&, std::pair const&, std::pair>*)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(clang::Expr const* const&, std::pair const&, std::pair*>)" was returned + + {"_ZN4llvm8DenseMapIPKN5clang4ExprESt4pairIPNS_5ValueES7_ENS_12DenseMapInfoIS4_EENS9_IS8_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE10CreateFNegEPNS_5ValueERKNS_5TwineE", "llvm::IRBuilder>::CreateFNeg(llvm::Value*, llvm::Twine const&)"}, + {"_ZN5clang7CodeGen13CodeGenModule16EmitConstantExprEPKNS_4ExprENS_8QualTypeEPNS0_15CodeGenFunctionE", "clang::CodeGen::CodeGenModule::EmitConstantExpr(clang::Expr const*, clang::QualType, clang::CodeGen::CodeGenFunction*)"}, + {"_ZN5clang11StmtVisitorIN12_GLOBAL__N_116ConstExprEmitterEPN4llvm8ConstantEE5VisitEPNS_4StmtE", "clang::StmtVisitor<(anonymous namespace)::ConstExprEmitter, llvm::Constant*>::Visit(clang::Stmt*)"}, + {"_ZN5clang7CodeGen13CodeGenModule24getMemberPointerConstantEPKNS_13UnaryOperatorE", "clang::CodeGen::CodeGenModule::getMemberPointerConstant(clang::UnaryOperator const*)"}, + {"_ZN5clang7CodeGen13CodeGenModule16EmitNullConstantENS_8QualTypeE", "clang::CodeGen::CodeGenModule::EmitNullConstant(clang::QualType)"}, + {"_Z16EmitNullConstantRN5clang7CodeGen13CodeGenModuleEPKNS_13CXXRecordDeclE", "EmitNullConstant(clang::CodeGen::CodeGenModule&, clang::CXXRecordDecl const*)"}, + {"_ZN12_GLOBAL__N_116ConstExprEmitter21VisitCXXConstructExprEPN5clang16CXXConstructExprE", "(anonymous namespace)::ConstExprEmitter::VisitCXXConstructExpr(clang::CXXConstructExpr*)"}, + {"_ZN12_GLOBAL__N_116ConstExprEmitter23EmitArrayInitializationEPN5clang12InitListExprE", "(anonymous namespace)::ConstExprEmitter::EmitArrayInitialization(clang::InitListExpr*)"}, + {"_ZN12_GLOBAL__N_118ConstStructBuilder5BuildEPN5clang12InitListExprE", "(anonymous namespace)::ConstStructBuilder::Build(clang::InitListExpr*)"}, + {"_ZN12_GLOBAL__N_118ConstStructBuilder21ConvertStructToPackedEv", "(anonymous namespace)::ConstStructBuilder::ConvertStructToPacked()"}, + {"_ZN12_GLOBAL__N_118ConstStructBuilder13AppendPaddingEy", "(anonymous namespace)::ConstStructBuilder::AppendPadding(unsigned long long)"}, + {"_ZNK12_GLOBAL__N_118ConstStructBuilder14getSizeInBytesEPKN4llvm8ConstantE", "(anonymous namespace)::ConstStructBuilder::getSizeInBytes(llvm::Constant const*) const"}, + {"_ZN12_GLOBAL__N_116ConstExprEmitter13VisitCastExprEPN5clang8CastExprE", "(anonymous namespace)::ConstExprEmitter::VisitCastExpr(clang::CastExpr*)"}, + {"_Z28FillInNullDataMemberPointersRN5clang7CodeGen13CodeGenModuleENS_8QualTypeERSt6vectorIPN4llvm8ConstantESaIS7_EEy", "FillInNullDataMemberPointers(clang::CodeGen::CodeGenModule&, clang::QualType, std::vector>&, unsigned long long)"}, + {"_ZNSt6vectorIPN4llvm8ConstantESaIS2_EEaSERKS4_", "std::vector>::operator=(std::vector> const&)"}, + {"_ZN4llvm8DenseMapIPKN5clang4DeclEPNS_5ValueENS_12DenseMapInfoIS4_EENS7_IS6_EEE16InsertIntoBucketERKS4_RKS6_PSt4pairIS4_S6_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::Decl const* const&, llvm::Value* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang4DeclEPNS_5ValueENS_12DenseMapInfoIS4_EENS7_IS6_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang7CodeGen15CodeGenFunction14EmitScalarExprEPKNS_4ExprEb", "clang::CodeGen::CodeGenFunction::EmitScalarExpr(clang::Expr const*, bool)"}, + {"_ZN5clang7CodeGen15CodeGenFunction20EmitScalarConversionEPN4llvm5ValueENS_8QualTypeES5_", "clang::CodeGen::CodeGenFunction::EmitScalarConversion(llvm::Value*, clang::QualType, clang::QualType)"}, + {"_ZN12_GLOBAL__N_117ScalarExprEmitter20EmitScalarConversionEPN4llvm5ValueEN5clang8QualTypeES5_", "(anonymous namespace)::ScalarExprEmitter::EmitScalarConversion(llvm::Value*, clang::QualType, clang::QualType)"}, + {"_ZN5clang7CodeGen15CodeGenFunction29EmitComplexToScalarConversionESt4pairIPN4llvm5ValueES5_ENS_8QualTypeES7_", "clang::CodeGen::CodeGenFunction::EmitComplexToScalarConversion(std::pair, clang::QualType, clang::QualType)"}, + {"_ZN12_GLOBAL__N_117ScalarExprEmitter29EmitComplexToScalarConversionESt4pairIPN4llvm5ValueES4_EN5clang8QualTypeES7_", "(anonymous namespace)::ScalarExprEmitter::EmitComplexToScalarConversion(std::pair, clang::QualType, clang::QualType)"}, + {"_ZN5clang7CodeGen15CodeGenFunction23EmitScalarPrePostIncDecEPKNS_13UnaryOperatorENS0_6LValueEbb", "clang::CodeGen::CodeGenFunction::EmitScalarPrePostIncDec(clang::UnaryOperator const*, clang::CodeGen::LValue, bool, bool)"}, + {"_ZN12_GLOBAL__N_117ScalarExprEmitter23EmitScalarPrePostIncDecEPKN5clang13UnaryOperatorENS1_7CodeGen6LValueEbb", "(anonymous namespace)::ScalarExprEmitter::EmitScalarPrePostIncDec(clang::UnaryOperator const*, clang::CodeGen::LValue, bool, bool)"}, + {"_ZN5clang7CodeGen15CodeGenFunction15EmitObjCIsaExprEPKNS_11ObjCIsaExprE", "clang::CodeGen::CodeGenFunction::EmitObjCIsaExpr(clang::ObjCIsaExpr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction28EmitCompoundAssignmentLValueEPKNS_22CompoundAssignOperatorE", "clang::CodeGen::CodeGenFunction::EmitCompoundAssignmentLValue(clang::CompoundAssignOperator const*)"}, + {"_ZN12_GLOBAL__N_117ScalarExprEmitter24EmitCompoundAssignLValueEPKN5clang22CompoundAssignOperatorEMS0_FPN4llvm5ValueERKNS_9BinOpInfoEERS7_", "(anonymous namespace)::ScalarExprEmitter::EmitCompoundAssignLValue(clang::CompoundAssignOperator const*, llvm::Value* ((anonymous namespace)::ScalarExprEmitter::*)((anonymous namespace)::BinOpInfo const&), llvm::Value*&)"}, + {"_ZN12_GLOBAL__N_117ScalarExprEmitter7EmitMulERKNS_9BinOpInfoE", "(anonymous namespace)::ScalarExprEmitter::EmitMul((anonymous namespace)::BinOpInfo const&)"}, + {"_ZN12_GLOBAL__N_117ScalarExprEmitter7EmitDivERKNS_9BinOpInfoE", "(anonymous namespace)::ScalarExprEmitter::EmitDiv((anonymous namespace)::BinOpInfo const&)"}, + {"_ZN12_GLOBAL__N_117ScalarExprEmitter7EmitRemERKNS_9BinOpInfoE", "(anonymous namespace)::ScalarExprEmitter::EmitRem((anonymous namespace)::BinOpInfo const&)"}, + {"_ZN12_GLOBAL__N_117ScalarExprEmitter7EmitAddERKNS_9BinOpInfoE", "(anonymous namespace)::ScalarExprEmitter::EmitAdd((anonymous namespace)::BinOpInfo const&)"}, + {"_ZN12_GLOBAL__N_117ScalarExprEmitter7EmitSubERKNS_9BinOpInfoE", "(anonymous namespace)::ScalarExprEmitter::EmitSub((anonymous namespace)::BinOpInfo const&)"}, + {"_ZN12_GLOBAL__N_117ScalarExprEmitter7EmitShlERKNS_9BinOpInfoE", "(anonymous namespace)::ScalarExprEmitter::EmitShl((anonymous namespace)::BinOpInfo const&)"}, + {"_ZN12_GLOBAL__N_117ScalarExprEmitter7EmitShrERKNS_9BinOpInfoE", "(anonymous namespace)::ScalarExprEmitter::EmitShr((anonymous namespace)::BinOpInfo const&)"}, + {"_ZN12_GLOBAL__N_117ScalarExprEmitter7EmitAndERKNS_9BinOpInfoE", "(anonymous namespace)::ScalarExprEmitter::EmitAnd((anonymous namespace)::BinOpInfo const&)"}, + {"_ZN12_GLOBAL__N_117ScalarExprEmitter7EmitXorERKNS_9BinOpInfoE", "(anonymous namespace)::ScalarExprEmitter::EmitXor((anonymous namespace)::BinOpInfo const&)"}, + {"_ZN12_GLOBAL__N_117ScalarExprEmitter6EmitOrERKNS_9BinOpInfoE", "(anonymous namespace)::ScalarExprEmitter::EmitOr((anonymous namespace)::BinOpInfo const&)"}, + {"_ZN12_GLOBAL__N_117ScalarExprEmitter24EmitOverflowCheckedBinOpERKNS_9BinOpInfoE", "(anonymous namespace)::ScalarExprEmitter::EmitOverflowCheckedBinOp((anonymous namespace)::BinOpInfo const&)"}, + {"_ZN12_GLOBAL__N_117ScalarExprEmitter42EmitUndefinedBehaviorIntegerDivAndRemCheckERKNS_9BinOpInfoEPN4llvm5ValueEb", "(anonymous namespace)::ScalarExprEmitter::EmitUndefinedBehaviorIntegerDivAndRemCheck((anonymous namespace)::BinOpInfo const&, llvm::Value*, bool)"}, + {"_ZN12_GLOBAL__N_117ScalarExprEmitter31EmitAddConsiderOverflowBehaviorEPKN5clang13UnaryOperatorEPN4llvm5ValueES7_b", "(anonymous namespace)::ScalarExprEmitter::EmitAddConsiderOverflowBehavior(clang::UnaryOperator const*, llvm::Value*, llvm::Value*, bool)"}, + {"_ZN12_GLOBAL__N_117ScalarExprEmitter25EmitFloatToBoolConversionEPN4llvm5ValueE", "(anonymous namespace)::ScalarExprEmitter::EmitFloatToBoolConversion(llvm::Value*)"}, + {"_ZN12_GLOBAL__N_117ScalarExprEmitter23EmitIntToBoolConversionEPN4llvm5ValueE", "(anonymous namespace)::ScalarExprEmitter::EmitIntToBoolConversion(llvm::Value*)"}, + {"_ZN12_GLOBAL__N_117ScalarExprEmitter27EmitPointerToBoolConversionEPN4llvm5ValueE", "(anonymous namespace)::ScalarExprEmitter::EmitPointerToBoolConversion(llvm::Value*)"}, + {"_ZN5clang11StmtVisitorIN12_GLOBAL__N_117ScalarExprEmitterEPN4llvm5ValueEE5VisitEPNS_4StmtE", "clang::StmtVisitor<(anonymous namespace)::ScalarExprEmitter, llvm::Value*>::Visit(clang::Stmt*)"}, + {"_ZN12_GLOBAL__N_117ScalarExprEmitter13VisitCallExprEPKN5clang8CallExprE", "(anonymous namespace)::ScalarExprEmitter::VisitCallExpr(clang::CallExpr const*)"}, + {"_ZN12_GLOBAL__N_117ScalarExprEmitter13EmitNullValueEN5clang8QualTypeE", "(anonymous namespace)::ScalarExprEmitter::EmitNullValue(clang::QualType)"}, + {"_Z38isCheapEnoughToEvaluateUnconditionallyPKN5clang4ExprERNS_7CodeGen15CodeGenFunctionE", "isCheapEnoughToEvaluateUnconditionally(clang::Expr const*, clang::CodeGen::CodeGenFunction&)"}, + {"_ZN12_GLOBAL__N_117ScalarExprEmitter12EmitCastExprEPN5clang8CastExprE", "(anonymous namespace)::ScalarExprEmitter::EmitCastExpr(clang::CastExpr*)"}, + {"_ZN12_GLOBAL__N_117ScalarExprEmitter18EmitCompoundAssignEPKN5clang22CompoundAssignOperatorEMS0_FPN4llvm5ValueERKNS_9BinOpInfoEE", "(anonymous namespace)::ScalarExprEmitter::EmitCompoundAssign(clang::CompoundAssignOperator const*, llvm::Value* ((anonymous namespace)::ScalarExprEmitter::*)((anonymous namespace)::BinOpInfo const&))"}, + {"_ZN12_GLOBAL__N_117ScalarExprEmitter10EmitBinOpsEPKN5clang14BinaryOperatorE", "(anonymous namespace)::ScalarExprEmitter::EmitBinOps(clang::BinaryOperator const*)"}, + {"_ZN12_GLOBAL__N_117ScalarExprEmitter11EmitCompareEPKN5clang14BinaryOperatorEjjj", "(anonymous namespace)::ScalarExprEmitter::EmitCompare(clang::BinaryOperator const*, unsigned int, unsigned int, unsigned int)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE9CreateXorEPNS_5ValueES6_RKNS_5TwineE", "llvm::IRBuilder>::CreateXor(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE10CreateLShrEPNS_5ValueES6_RKNS_5TwineEb", "llvm::IRBuilder>::CreateLShr(llvm::Value*, llvm::Value*, llvm::Twine const&, bool)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE9CreateShlEPNS_5ValueES6_RKNS_5TwineE", "llvm::IRBuilder>::CreateShl(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE10CreateFSubEPNS_5ValueES6_RKNS_5TwineE", "llvm::IRBuilder>::CreateFSub(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE9CreateNegEPNS_5ValueERKNS_5TwineE", "llvm::IRBuilder>::CreateNeg(llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE10CreateSDivEPNS_5ValueES6_RKNS_5TwineEb", "llvm::IRBuilder>::CreateSDiv(llvm::Value*, llvm::Value*, llvm::Twine const&, bool)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE11CreateCall4EPNS_5ValueES6_S6_S6_S6_RKNS_5TwineE", "llvm::IRBuilder>::CreateCall4(llvm::Value*, llvm::Value*, llvm::Value*, llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE10CreateFAddEPNS_5ValueES6_RKNS_5TwineE", "llvm::IRBuilder>::CreateFAdd(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE10CreateURemEPNS_5ValueES6_RKNS_5TwineE", "llvm::IRBuilder>::CreateURem(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE10CreateSRemEPNS_5ValueES6_RKNS_5TwineE", "llvm::IRBuilder>::CreateSRem(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE10CreateFDivEPNS_5ValueES6_RKNS_5TwineE", "llvm::IRBuilder>::CreateFDiv(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE10CreateUDivEPNS_5ValueES6_RKNS_5TwineEb", "llvm::IRBuilder>::CreateUDiv(llvm::Value*, llvm::Value*, llvm::Twine const&, bool)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE10CreateFCmpENS_7CmpInst9PredicateEPNS_5ValueES8_RKNS_5TwineE", "llvm::IRBuilder>::CreateFCmp(llvm::CmpInst::Predicate, llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE12CreateNSWMulEPNS_5ValueES6_RKNS_5TwineE", "llvm::IRBuilder>::CreateNSWMul(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE10CreateFMulEPNS_5ValueES6_RKNS_5TwineE", "llvm::IRBuilder>::CreateFMul(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE19CreateInsertElementEPNS_5ValueES6_S6_RKNS_5TwineE", "llvm::IRBuilder>::CreateInsertElement(llvm::Value*, llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE19CreateShuffleVectorEPNS_5ValueES6_S6_RKNS_5TwineE", "llvm::IRBuilder>::CreateShuffleVector(llvm::Value*, llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE11CreateVAArgEPNS_5ValueEPKNS_4TypeERKNS_5TwineE", "llvm::IRBuilder>::CreateVAArg(llvm::Value*, llvm::Type const*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE20CreateExtractElementEPNS_5ValueES6_RKNS_5TwineE", "llvm::IRBuilder>::CreateExtractElement(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE9CreateNotEPNS_5ValueERKNS_5TwineE", "llvm::IRBuilder>::CreateNot(llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE19CreateZExtOrBitCastEPNS_5ValueEPKNS_4TypeERKNS_5TwineE", "llvm::IRBuilder>::CreateZExtOrBitCast(llvm::Value*, llvm::Type const*, llvm::Twine const&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction21EmitObjCStringLiteralEPKNS_17ObjCStringLiteralE", "clang::CodeGen::CodeGenFunction::EmitObjCStringLiteral(clang::ObjCStringLiteral const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction20EmitObjCSelectorExprEPKNS_16ObjCSelectorExprE", "clang::CodeGen::CodeGenFunction::EmitObjCSelectorExpr(clang::ObjCSelectorExpr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction20EmitObjCProtocolExprEPKNS_16ObjCProtocolExprE", "clang::CodeGen::CodeGenFunction::EmitObjCProtocolExpr(clang::ObjCProtocolExpr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction19EmitObjCMessageExprEPKNS_15ObjCMessageExprENS0_15ReturnValueSlotE", "clang::CodeGen::CodeGenFunction::EmitObjCMessageExpr(clang::ObjCMessageExpr const*, clang::CodeGen::ReturnValueSlot)"}, + {"_ZN5clang7CodeGen15CodeGenFunction12LoadObjCSelfEv", "clang::CodeGen::CodeGenFunction::LoadObjCSelf()"}, + {"_ZN5clang7CodeGen15CodeGenFunction15StartObjCMethodEPKNS_14ObjCMethodDeclEPKNS_17ObjCContainerDeclE", "clang::CodeGen::CodeGenFunction::StartObjCMethod(clang::ObjCMethodDecl const*, clang::ObjCContainerDecl const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction18GenerateObjCMethodEPKNS_14ObjCMethodDeclE", "clang::CodeGen::CodeGenFunction::GenerateObjCMethod(clang::ObjCMethodDecl const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction18GenerateObjCGetterEPNS_22ObjCImplementationDeclEPKNS_20ObjCPropertyImplDeclE", "clang::CodeGen::CodeGenFunction::GenerateObjCGetter(clang::ObjCImplementationDecl*, clang::ObjCPropertyImplDecl const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction16TypeOfSelfObjectEv", "clang::CodeGen::CodeGenFunction::TypeOfSelfObject()"}, + {"_ZN5clang7CodeGen15CodeGenFunction25IvarTypeWithAggrGCObjectsENS_8QualTypeE", "clang::CodeGen::CodeGenFunction::IvarTypeWithAggrGCObjects(clang::QualType)"}, + {"_ZN5clang7CodeGen15CodeGenFunction18GenerateObjCSetterEPNS_22ObjCImplementationDeclEPKNS_20ObjCPropertyImplDeclE", "clang::CodeGen::CodeGenFunction::GenerateObjCSetter(clang::ObjCImplementationDecl*, clang::ObjCPropertyImplDecl const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction21IndirectObjCSetterArgERKNS0_14CGFunctionInfoE", "clang::CodeGen::CodeGenFunction::IndirectObjCSetterArg(clang::CodeGen::CGFunctionInfo const&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction26GenerateObjCCtorDtorMethodEPNS_22ObjCImplementationDeclEPNS_14ObjCMethodDeclEb", "clang::CodeGen::CodeGenFunction::GenerateObjCCtorDtorMethod(clang::ObjCImplementationDecl*, clang::ObjCMethodDecl*, bool)"}, + {"_ZN5clang7CodeGen15CodeGenFunction25EmitObjCPropertyRefLValueEPKNS_19ObjCPropertyRefExprE", "clang::CodeGen::CodeGenFunction::EmitObjCPropertyRefLValue(clang::ObjCPropertyRefExpr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction27EmitLoadOfPropertyRefLValueENS0_6LValueENS0_15ReturnValueSlotE", "clang::CodeGen::CodeGenFunction::EmitLoadOfPropertyRefLValue(clang::CodeGen::LValue, clang::CodeGen::ReturnValueSlot)"}, + + // {"_Z24GenerateMessageSendSuperRN5clang7CodeGen15CodeGenFunctionENS0_15ReturnValueSlotENS_8QualTypeENS_8SelectorEPN4llvm5ValueERKNS6_11SmallVectorISt4pairINS0_6RValueES4_ELj16EEE", + // "GenerateMessageSendSuper(clang::CodeGen::CodeGenFunction&, clang::CodeGen::ReturnValueSlot, clang::QualType, clang::Selector, llvm::Value*, llvm::SmallVector, 16u> const&)"}, + // "GenerateMessageSendSuper(clang::CodeGen::CodeGenFunction&, clang::CodeGen::ReturnValueSlot, clang::QualType, clang::Selector, llvm::Value*, llvm::SmallVector, 16> const&)" was returned + + {"_ZN5clang7CodeGen15CodeGenFunction33EmitStoreThroughPropertyRefLValueENS0_6RValueENS0_6LValueE", "clang::CodeGen::CodeGenFunction::EmitStoreThroughPropertyRefLValue(clang::CodeGen::RValue, clang::CodeGen::LValue)"}, + {"_ZN5clang7CodeGen15CodeGenFunction25EmitObjCForCollectionStmtERKNS_21ObjCForCollectionStmtE", "clang::CodeGen::CodeGenFunction::EmitObjCForCollectionStmt(clang::ObjCForCollectionStmt const&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction17EmitObjCAtTryStmtERKNS_13ObjCAtTryStmtE", "clang::CodeGen::CodeGenFunction::EmitObjCAtTryStmt(clang::ObjCAtTryStmt const&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction19EmitObjCAtThrowStmtERKNS_15ObjCAtThrowStmtE", "clang::CodeGen::CodeGenFunction::EmitObjCAtThrowStmt(clang::ObjCAtThrowStmt const&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction26EmitObjCAtSynchronizedStmtERKNS_22ObjCAtSynchronizedStmtE", "clang::CodeGen::CodeGenFunction::EmitObjCAtSynchronizedStmt(clang::ObjCAtSynchronizedStmt const&)"}, + {"_ZN5clang7CodeGen13CGObjCRuntimeD0Ev", "clang::CodeGen::CGObjCRuntime::~CGObjCRuntime()"}, + {"_ZN5clang7CodeGen13CGObjCRuntimeD1Ev", "clang::CodeGen::CGObjCRuntime::~CGObjCRuntime()"}, + {"_ZN5clang7CodeGen13CGObjCRuntimeD2Ev", "clang::CodeGen::CGObjCRuntime::~CGObjCRuntime()"}, + + // {"_ZN5clang7CodeGen15CodeGenFunction12EmitCallArgsINS_14ObjCMethodDeclEEEvRN4llvm11SmallVectorISt4pairINS0_6RValueENS_8QualTypeEELj16EEEPKT_NS_17ConstExprIteratorESF_", + // "void clang::CodeGen::CodeGenFunction::EmitCallArgs(llvm::SmallVector, 16u>&, clang::ObjCMethodDecl const*, clang::ConstExprIterator, clang::ConstExprIterator)"}, + // got error + + {"_ZNK5clang9ValueDecl7getTypeEv", "clang::ValueDecl::getType() const"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang7CodeGen15CodeGenFunction13BreakContinueELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN5clang7CodeGen20CreateGNUObjCRuntimeERNS0_13CodeGenModuleE", "clang::CodeGen::CreateGNUObjCRuntime(clang::CodeGen::CodeGenModule&)"}, + {"_ZN12_GLOBAL__N_19CGObjCGNUD1Ev", "(anonymous namespace)::CGObjCGNU::~CGObjCGNU()"}, + {"_ZN12_GLOBAL__N_19CGObjCGNUD0Ev", "(anonymous namespace)::CGObjCGNU::~CGObjCGNU()"}, + {"_ZN12_GLOBAL__N_19CGObjCGNU18ModuleInitFunctionEv", "(anonymous namespace)::CGObjCGNU::ModuleInitFunction()"}, + {"_ZN12_GLOBAL__N_19CGObjCGNU11GetSelectorERN4llvm9IRBuilderILb0ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb0EEEEEN5clang8SelectorEb", "(anonymous namespace)::CGObjCGNU::GetSelector(llvm::IRBuilder>&, clang::Selector, bool)"}, + {"_ZN12_GLOBAL__N_19CGObjCGNU11GetSelectorERN4llvm9IRBuilderILb0ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb0EEEEEPKN5clang14ObjCMethodDeclE", "(anonymous namespace)::CGObjCGNU::GetSelector(llvm::IRBuilder>&, clang::ObjCMethodDecl const*)"}, + {"_ZN12_GLOBAL__N_19CGObjCGNU9GetEHTypeEN5clang8QualTypeE", "(anonymous namespace)::CGObjCGNU::GetEHType(clang::QualType)"}, + {"_ZN12_GLOBAL__N_19CGObjCGNU22GenerateConstantStringEPKN5clang13StringLiteralE", "(anonymous namespace)::CGObjCGNU::GenerateConstantString(clang::StringLiteral const*)"}, + {"_ZN12_GLOBAL__N_19CGObjCGNU16GenerateCategoryEPKN5clang20ObjCCategoryImplDeclE", "(anonymous namespace)::CGObjCGNU::GenerateCategory(clang::ObjCCategoryImplDecl const*)"}, + {"_ZN12_GLOBAL__N_19CGObjCGNU13GenerateClassEPKN5clang22ObjCImplementationDeclE", "(anonymous namespace)::CGObjCGNU::GenerateClass(clang::ObjCImplementationDecl const*)"}, + + // {"_ZN12_GLOBAL__N_19CGObjCGNU19GenerateMessageSendERN5clang7CodeGen15CodeGenFunctionENS2_15ReturnValueSlotENS1_8QualTypeENS1_8SelectorEPN4llvm5ValueERKNS8_11SmallVectorISt4pairINS2_6RValueES6_ELj16EEEPKNS1_17ObjCInterfaceDeclEPKNS1_14ObjCMethodDeclE", + // "(anonymous namespace)::CGObjCGNU::GenerateMessageSend(clang::CodeGen::CodeGenFunction&, clang::CodeGen::ReturnValueSlot, clang::QualType, clang::Selector, llvm::Value*, llvm::SmallVector, 16u> const&, clang::ObjCInterfaceDecl const*, clang::ObjCMethodDecl const*)"}, + // "(anonymous namespace)::CGObjCGNU::GenerateMessageSend(clang::CodeGen::CodeGenFunction&, clang::CodeGen::ReturnValueSlot, clang::QualType, clang::Selector, llvm::Value*, llvm::SmallVector, 16> const&, clang::ObjCInterfaceDecl const*, clang::ObjCMethodDecl const*)" was returned + + + // {"_ZN12_GLOBAL__N_19CGObjCGNU24GenerateMessageSendSuperERN5clang7CodeGen15CodeGenFunctionENS2_15ReturnValueSlotENS1_8QualTypeENS1_8SelectorEPKNS1_17ObjCInterfaceDeclEbPN4llvm5ValueEbRKNSB_11SmallVectorISt4pairINS2_6RValueES6_ELj16EEEPKNS1_14ObjCMethodDeclE", + // "(anonymous namespace)::CGObjCGNU::GenerateMessageSendSuper(clang::CodeGen::CodeGenFunction&, clang::CodeGen::ReturnValueSlot, clang::QualType, clang::Selector, clang::ObjCInterfaceDecl const*, bool, llvm::Value*, bool, llvm::SmallVector, 16u> const&, clang::ObjCMethodDecl const*)"}, + // "(anonymous namespace)::CGObjCGNU::GenerateMessageSendSuper(clang::CodeGen::CodeGenFunction&, clang::CodeGen::ReturnValueSlot, clang::QualType, clang::Selector, clang::ObjCInterfaceDecl const*, bool, llvm::Value*, bool, llvm::SmallVector, 16> const&, clang::ObjCMethodDecl const*)" was returned + + {"_ZN12_GLOBAL__N_19CGObjCGNU19GenerateProtocolRefERN4llvm9IRBuilderILb0ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb0EEEEEPKN5clang16ObjCProtocolDeclE", "(anonymous namespace)::CGObjCGNU::GenerateProtocolRef(llvm::IRBuilder>&, clang::ObjCProtocolDecl const*)"}, + {"_ZN12_GLOBAL__N_19CGObjCGNU16GenerateProtocolEPKN5clang16ObjCProtocolDeclE", "(anonymous namespace)::CGObjCGNU::GenerateProtocol(clang::ObjCProtocolDecl const*)"}, + {"_ZN12_GLOBAL__N_19CGObjCGNU14GenerateMethodEPKN5clang14ObjCMethodDeclEPKNS1_17ObjCContainerDeclE", "(anonymous namespace)::CGObjCGNU::GenerateMethod(clang::ObjCMethodDecl const*, clang::ObjCContainerDecl const*)"}, + {"_ZN12_GLOBAL__N_19CGObjCGNU22GetPropertyGetFunctionEv", "(anonymous namespace)::CGObjCGNU::GetPropertyGetFunction()"}, + {"_ZN12_GLOBAL__N_19CGObjCGNU22GetPropertySetFunctionEv", "(anonymous namespace)::CGObjCGNU::GetPropertySetFunction()"}, + {"_ZN12_GLOBAL__N_19CGObjCGNU20GetGetStructFunctionEv", "(anonymous namespace)::CGObjCGNU::GetGetStructFunction()"}, + {"_ZN12_GLOBAL__N_19CGObjCGNU20GetSetStructFunctionEv", "(anonymous namespace)::CGObjCGNU::GetSetStructFunction()"}, + {"_ZN12_GLOBAL__N_19CGObjCGNU8GetClassERN4llvm9IRBuilderILb0ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb0EEEEEPKN5clang17ObjCInterfaceDeclE", "(anonymous namespace)::CGObjCGNU::GetClass(llvm::IRBuilder>&, clang::ObjCInterfaceDecl const*)"}, + {"_ZN12_GLOBAL__N_19CGObjCGNU27EnumerationMutationFunctionEv", "(anonymous namespace)::CGObjCGNU::EnumerationMutationFunction()"}, + {"_ZN12_GLOBAL__N_19CGObjCGNU20EmitSynchronizedStmtERN5clang7CodeGen15CodeGenFunctionERKNS1_22ObjCAtSynchronizedStmtE", "(anonymous namespace)::CGObjCGNU::EmitSynchronizedStmt(clang::CodeGen::CodeGenFunction&, clang::ObjCAtSynchronizedStmt const&)"}, + {"_ZN12_GLOBAL__N_19CGObjCGNU11EmitTryStmtERN5clang7CodeGen15CodeGenFunctionERKNS1_13ObjCAtTryStmtE", "(anonymous namespace)::CGObjCGNU::EmitTryStmt(clang::CodeGen::CodeGenFunction&, clang::ObjCAtTryStmt const&)"}, + {"_ZN12_GLOBAL__N_19CGObjCGNU13EmitThrowStmtERN5clang7CodeGen15CodeGenFunctionERKNS1_15ObjCAtThrowStmtE", "(anonymous namespace)::CGObjCGNU::EmitThrowStmt(clang::CodeGen::CodeGenFunction&, clang::ObjCAtThrowStmt const&)"}, + {"_ZN12_GLOBAL__N_19CGObjCGNU16EmitObjCWeakReadERN5clang7CodeGen15CodeGenFunctionEPN4llvm5ValueE", "(anonymous namespace)::CGObjCGNU::EmitObjCWeakRead(clang::CodeGen::CodeGenFunction&, llvm::Value*)"}, + {"_ZN12_GLOBAL__N_19CGObjCGNU18EmitObjCWeakAssignERN5clang7CodeGen15CodeGenFunctionEPN4llvm5ValueES7_", "(anonymous namespace)::CGObjCGNU::EmitObjCWeakAssign(clang::CodeGen::CodeGenFunction&, llvm::Value*, llvm::Value*)"}, + {"_ZN12_GLOBAL__N_19CGObjCGNU20EmitObjCGlobalAssignERN5clang7CodeGen15CodeGenFunctionEPN4llvm5ValueES7_b", "(anonymous namespace)::CGObjCGNU::EmitObjCGlobalAssign(clang::CodeGen::CodeGenFunction&, llvm::Value*, llvm::Value*, bool)"}, + {"_ZN12_GLOBAL__N_19CGObjCGNU18EmitObjCIvarAssignERN5clang7CodeGen15CodeGenFunctionEPN4llvm5ValueES7_S7_", "(anonymous namespace)::CGObjCGNU::EmitObjCIvarAssign(clang::CodeGen::CodeGenFunction&, llvm::Value*, llvm::Value*, llvm::Value*)"}, + {"_ZN12_GLOBAL__N_19CGObjCGNU24EmitObjCStrongCastAssignERN5clang7CodeGen15CodeGenFunctionEPN4llvm5ValueES7_", "(anonymous namespace)::CGObjCGNU::EmitObjCStrongCastAssign(clang::CodeGen::CodeGenFunction&, llvm::Value*, llvm::Value*)"}, + {"_ZN12_GLOBAL__N_19CGObjCGNU20EmitObjCValueForIvarERN5clang7CodeGen15CodeGenFunctionENS1_8QualTypeEPN4llvm5ValueEPKNS1_12ObjCIvarDeclEj", "(anonymous namespace)::CGObjCGNU::EmitObjCValueForIvar(clang::CodeGen::CodeGenFunction&, clang::QualType, llvm::Value*, clang::ObjCIvarDecl const*, unsigned int)"}, + {"_ZN12_GLOBAL__N_19CGObjCGNU14EmitIvarOffsetERN5clang7CodeGen15CodeGenFunctionEPKNS1_17ObjCInterfaceDeclEPKNS1_12ObjCIvarDeclE", "(anonymous namespace)::CGObjCGNU::EmitIvarOffset(clang::CodeGen::CodeGenFunction&, clang::ObjCInterfaceDecl const*, clang::ObjCIvarDecl const*)"}, + {"_ZN12_GLOBAL__N_19CGObjCGNU24EmitGCMemmoveCollectableERN5clang7CodeGen15CodeGenFunctionEPN4llvm5ValueES7_S7_", "(anonymous namespace)::CGObjCGNU::EmitGCMemmoveCollectable(clang::CodeGen::CodeGenFunction&, llvm::Value*, llvm::Value*, llvm::Value*)"}, + {"_ZN12_GLOBAL__N_19CGObjCGNU18BuildGCBlockLayoutERN5clang7CodeGen13CodeGenModuleERKNS2_11CGBlockInfoE", "(anonymous namespace)::CGObjCGNU::BuildGCBlockLayout(clang::CodeGen::CodeGenModule&, clang::CodeGen::CGBlockInfo const&)"}, + {"_Z17FindIvarInterfaceRN5clang10ASTContextEPKNS_17ObjCInterfaceDeclEPKNS_12ObjCIvarDeclE", "FindIvarInterface(clang::ASTContext&, clang::ObjCInterfaceDecl const*, clang::ObjCIvarDecl const*)"}, + {"_ZN12_GLOBAL__N_112CallSyncExitD1Ev", "(anonymous namespace)::CallSyncExit::~CallSyncExit()"}, + {"_ZN12_GLOBAL__N_112CallSyncExitD0Ev", "(anonymous namespace)::CallSyncExit::~CallSyncExit()"}, + {"_ZN12_GLOBAL__N_112CallSyncExit4EmitERN5clang7CodeGen15CodeGenFunctionEb", "(anonymous namespace)::CallSyncExit::Emit(clang::CodeGen::CodeGenFunction&, bool)"}, + {"_ZN12_GLOBAL__N_19CGObjCGNU12EmitClassRefERKSs", "(anonymous namespace)::CGObjCGNU::EmitClassRef(std::string const&)"}, + + // {"_Z19SymbolNameForMethodRKSsS0_S0_b", + // "SymbolNameForMethod(std::string const&, std::string const&, std::string const&, bool)"}, + // "SymbolNameForMethod(std::string const&, std::string const, std::string const, bool)" was returned + + {"_ZN12_GLOBAL__N_19CGObjCGNU20GenerateProtocolListERKN4llvm15SmallVectorImplISsEE", "(anonymous namespace)::CGObjCGNU::GenerateProtocolList(llvm::SmallVectorImpl const&)"}, + {"_ZN12_GLOBAL__N_19CGObjCGNU26GenerateProtocolMethodListERKN4llvm15SmallVectorImplIPNS1_8ConstantEEES7_", "(anonymous namespace)::CGObjCGNU::GenerateProtocolMethodList(llvm::SmallVectorImpl const&, llvm::SmallVectorImpl const&)"}, + + // {"_ZN12_GLOBAL__N_19CGObjCGNU18GenerateMethodListERKSsS2_RKN4llvm15SmallVectorImplIN5clang8SelectorEEERKNS4_IPNS3_8ConstantEEEb", + // "(anonymous namespace)::CGObjCGNU::GenerateMethodList(std::string const&, std::string const&, llvm::SmallVectorImpl const&, llvm::SmallVectorImpl const&, bool)"}, + // "(anonymous namespace)::CGObjCGNU::GenerateMethodList(std::string const&, std::string const, llvm::SmallVectorImpl const&, llvm const&, bool)" was returned + + {"_ZN12_GLOBAL__N_19CGObjCGNU16GenerateIvarListERKN4llvm15SmallVectorImplIPNS1_8ConstantEEES7_S7_", "(anonymous namespace)::CGObjCGNU::GenerateIvarList(llvm::SmallVectorImpl const&, llvm::SmallVectorImpl const&, llvm::SmallVectorImpl const&)"}, + {"_ZN12_GLOBAL__N_19CGObjCGNU22GenerateClassStructureEPN4llvm8ConstantES3_jPKcS3_S3_S3_S3_S3_S3_S3_b", "(anonymous namespace)::CGObjCGNU::GenerateClassStructure(llvm::Constant*, llvm::Constant*, unsigned int, char const*, llvm::Constant*, llvm::Constant*, llvm::Constant*, llvm::Constant*, llvm::Constant*, llvm::Constant*, llvm::Constant*, bool)"}, + {"_ZN12_GLOBAL__N_19CGObjCGNU18ExportUniqueStringERKSsSs", "(anonymous namespace)::CGObjCGNU::ExportUniqueString(std::string const&, std::string)"}, + {"_Z19MangleSelectorTypesRKSs", "MangleSelectorTypes(std::string const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE11CreateCall3EPNS_5ValueES6_S6_S6_RKNS_5TwineE", "llvm::IRBuilder>::CreateCall3(llvm::Value*, llvm::Value*, llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE10CreateLoadEPNS_5ValueEbRKNS_5TwineE", "llvm::IRBuilder>::CreateLoad(llvm::Value*, bool, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE11CreateCall2EPNS_5ValueES6_S6_RKNS_5TwineE", "llvm::IRBuilder>::CreateCall2(llvm::Value*, llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE10CreateCallEPNS_5ValueES6_RKNS_5TwineE", "llvm::IRBuilder>::CreateCall(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE17CreateUnreachableEv", "llvm::IRBuilder>::CreateUnreachable()"}, + + // {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE12CreateInvokeIPPNS_5ValueEEEPNS_10InvokeInstES7_PNS_10BasicBlockESC_T_SD_RKNS_5TwineE", + // "llvm::InvokeInst* llvm::IRBuilder>::CreateInvoke(llvm::Value*, llvm::BasicBlock*, llvm::BasicBlock*, llvm::Value**, llvm::Value**, llvm::Twine const&)"}, + // "llvm::InvokeInst* llvm::IRBuilder>::CreateInvoke(llvm::Value*, llvm::BasicBlock*, llvm::BasicBlock*, false, false, llvm::Twine const&)" was returned + + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang7CanQualINS1_4TypeEEELb0EE4growEm", "llvm::SmallVectorTemplateBase, false>::grow(unsigned long)"}, + + // {"_ZN4llvm15SmallVectorImplISt4pairIN5clang7CodeGen6RValueENS2_8QualTypeEEE6insertIPKS6_EEPS6_SB_T_SC_", + // "std::pair* llvm::SmallVectorImpl>::insert const*>(std::pair*, std::pair const*, std::pair const*)"}, + // got error + + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE12CreateAllocaEPKNS_4TypeEPNS_5ValueERKNS_5TwineE", "llvm::IRBuilder>::CreateAlloca(llvm::Type const*, llvm::Value*, llvm::Twine const&)"}, + + // {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE10CreateCallIPPNS_5ValueEEEPNS_8CallInstES7_T_SB_RKNS_5TwineE", + // "llvm::CallInst* llvm::IRBuilder>::CreateCall(llvm::Value*, llvm::Value**, llvm::Value**, llvm::Twine const&)"}, + // "llvm::CallInst* llvm::IRBuilder>::CreateCall(llvm::Value*, false, false, llvm::Twine const&)" was returned + + {"_ZN4llvm23SmallVectorTemplateBaseISt4pairIN5clang7CodeGen6RValueENS2_8QualTypeEELb0EE4growEm", "llvm::SmallVectorTemplateBase, false>::grow(unsigned long)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE8CreateBrEPNS_10BasicBlockE", "llvm::IRBuilder>::CreateBr(llvm::BasicBlock*)"}, + + // {"_ZNSt3mapISt4pairISsSsEPN4llvm11GlobalAliasESt4lessIS1_ESaIS0_IKS1_S4_EEEixERS7_", + // "std::map, llvm::GlobalAlias*, std::less>, std::allocator const, llvm::GlobalAlias*>>>::operator[](std::pair const&)"}, + // "std::map, llvm::GlobalAlias*, std::less, std::allocator>>::operator[](std::less&)" was returned + + + // {"_ZNKSt4lessISt4pairISsSsEEclERKS1_S4_", + // "std::less>::operator()(std::pair const&, std::pair const&) const"}, + // "std::less>::operator()(std::string const&, std::string const) const" was returned + + + // {"_ZNSt8_Rb_treeISt4pairISsSsES0_IKS1_PN4llvm11GlobalAliasEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS6_ERKS6_", + // "std::_Rb_tree, std::pair const, llvm::GlobalAlias*>, std::_Select1st const, llvm::GlobalAlias*>>, std::less>, std::allocator const, llvm::GlobalAlias*>>>::_M_insert_unique(std::_Rb_tree_iterator const, llvm::GlobalAlias*>>, std::pair const, llvm::GlobalAlias*> const&)"}, + // "std::_Rb_tree, std::pair, std::_Select1st, std::less, std::allocator>::_M_insert_unique(std::_Rb_tree_iterator, llvm::GlobalAlias* const&)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairISsSsES0_IKS1_PN4llvm11GlobalAliasEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE9_M_insertEPSt18_Rb_tree_node_baseSE_RKS6_", + // "std::_Rb_tree, std::pair const, llvm::GlobalAlias*>, std::_Select1st const, llvm::GlobalAlias*>>, std::less>, std::allocator const, llvm::GlobalAlias*>>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair const, llvm::GlobalAlias*> const&)"}, + // "std::_Rb_tree, std::pair, std::_Select1st, std::less, std::allocator>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base, llvm::GlobalAlias* const&)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairISsSsES0_IKS1_PN4llvm11GlobalAliasEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE16_M_insert_uniqueERKS6_", + // "std::_Rb_tree, std::pair const, llvm::GlobalAlias*>, std::_Select1st const, llvm::GlobalAlias*>>, std::less>, std::allocator const, llvm::GlobalAlias*>>>::_M_insert_unique(std::pair const, llvm::GlobalAlias*> const&)"}, + // "std::_Rb_tree, std::pair, std::_Select1st, std::less, std::allocator>::_M_insert_unique(llvm::GlobalAlias* const&)" was returned + + {"_ZN4llvm9StringMapIPNS_11GlobalAliasENS_15MallocAllocatorEE16GetOrCreateValueIS2_EERNS_14StringMapEntryIS2_EENS_9StringRefET_", "llvm::StringMapEntry& llvm::StringMap::GetOrCreateValue(llvm::StringRef, llvm::GlobalAlias*)"}, + + // {"_ZNSt6vectorIPN4llvm8ConstantESaIS2_EE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPS2_S4_EEEEvS9_T_SA_St20forward_iterator_tag", + // "void std::vector>::_M_range_insert<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, std::forward_iterator_tag)"}, + // got error + + + // {"_ZNSt8_Rb_treeISt4pairISsSsES0_IKS1_PN4llvm11GlobalAliasEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE8_M_eraseEPSt13_Rb_tree_nodeIS6_E", + // "std::_Rb_tree, std::pair const, llvm::GlobalAlias*>, std::_Select1st const, llvm::GlobalAlias*>>, std::less>, std::allocator const, llvm::GlobalAlias*>>>::_M_erase(std::_Rb_tree_node const, llvm::GlobalAlias*>>*)"}, + // "std::_Rb_tree, std::pair, std::_Select1st, std::less, std::allocator>::_M_erase(std::_Rb_tree_node*)" was returned + + {"_ZN5clang7CodeGen13CGObjCRuntime21ComputeIvarBaseOffsetERNS0_13CodeGenModuleEPKNS_17ObjCInterfaceDeclEPKNS_12ObjCIvarDeclE", "clang::CodeGen::CGObjCRuntime::ComputeIvarBaseOffset(clang::CodeGen::CodeGenModule&, clang::ObjCInterfaceDecl const*, clang::ObjCIvarDecl const*)"}, + {"_Z20LookupFieldBitOffsetRN5clang7CodeGen13CodeGenModuleEPKNS_17ObjCInterfaceDeclEPKNS_22ObjCImplementationDeclEPKNS_12ObjCIvarDeclE", "LookupFieldBitOffset(clang::CodeGen::CodeGenModule&, clang::ObjCInterfaceDecl const*, clang::ObjCImplementationDecl const*, clang::ObjCIvarDecl const*)"}, + {"_ZN5clang7CodeGen13CGObjCRuntime21ComputeIvarBaseOffsetERNS0_13CodeGenModuleEPKNS_22ObjCImplementationDeclEPKNS_12ObjCIvarDeclE", "clang::CodeGen::CGObjCRuntime::ComputeIvarBaseOffset(clang::CodeGen::CodeGenModule&, clang::ObjCImplementationDecl const*, clang::ObjCIvarDecl const*)"}, + {"_ZN5clang7CodeGen13CGObjCRuntime24EmitValueForIvarAtOffsetERNS0_15CodeGenFunctionEPKNS_17ObjCInterfaceDeclEPN4llvm5ValueEPKNS_12ObjCIvarDeclEjS9_", "clang::CodeGen::CGObjCRuntime::EmitValueForIvarAtOffset(clang::CodeGen::CodeGenFunction&, clang::ObjCInterfaceDecl const*, llvm::Value*, clang::ObjCIvarDecl const*, unsigned int, llvm::Value*)"}, + {"_ZN5clang7CodeGen20CreateMacObjCRuntimeERNS0_13CodeGenModuleE", "clang::CodeGen::CreateMacObjCRuntime(clang::CodeGen::CodeGenModule&)"}, + {"_ZN5clang7CodeGen33CreateMacNonFragileABIObjCRuntimeERNS0_13CodeGenModuleE", "clang::CodeGen::CreateMacNonFragileABIObjCRuntime(clang::CodeGen::CodeGenModule&)"}, + {"_ZN12_GLOBAL__N_115CGObjCCommonMacC2ERN5clang7CodeGen13CodeGenModuleE", "(anonymous namespace)::CGObjCCommonMac::CGObjCCommonMac(clang::CodeGen::CodeGenModule&)"}, + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMacD1Ev", "(anonymous namespace)::CGObjCNonFragileABIMac::~CGObjCNonFragileABIMac()"}, + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMacD0Ev", "(anonymous namespace)::CGObjCNonFragileABIMac::~CGObjCNonFragileABIMac()"}, + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac18ModuleInitFunctionEv", "(anonymous namespace)::CGObjCNonFragileABIMac::ModuleInitFunction()"}, + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac11GetSelectorERN4llvm9IRBuilderILb0ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb0EEEEEN5clang8SelectorEb", "(anonymous namespace)::CGObjCNonFragileABIMac::GetSelector(llvm::IRBuilder>&, clang::Selector, bool)"}, + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac11GetSelectorERN4llvm9IRBuilderILb0ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb0EEEEEPKN5clang14ObjCMethodDeclE", "(anonymous namespace)::CGObjCNonFragileABIMac::GetSelector(llvm::IRBuilder>&, clang::ObjCMethodDecl const*)"}, + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac9GetEHTypeEN5clang8QualTypeE", "(anonymous namespace)::CGObjCNonFragileABIMac::GetEHType(clang::QualType)"}, + {"_ZN12_GLOBAL__N_115CGObjCCommonMac22GenerateConstantStringEPKN5clang13StringLiteralE", "(anonymous namespace)::CGObjCCommonMac::GenerateConstantString(clang::StringLiteral const*)"}, + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac16GenerateCategoryEPKN5clang20ObjCCategoryImplDeclE", "(anonymous namespace)::CGObjCNonFragileABIMac::GenerateCategory(clang::ObjCCategoryImplDecl const*)"}, + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac13GenerateClassEPKN5clang22ObjCImplementationDeclE", "(anonymous namespace)::CGObjCNonFragileABIMac::GenerateClass(clang::ObjCImplementationDecl const*)"}, + + // {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac19GenerateMessageSendERN5clang7CodeGen15CodeGenFunctionENS2_15ReturnValueSlotENS1_8QualTypeENS1_8SelectorEPN4llvm5ValueERKNS8_11SmallVectorISt4pairINS2_6RValueES6_ELj16EEEPKNS1_17ObjCInterfaceDeclEPKNS1_14ObjCMethodDeclE", + // "(anonymous namespace)::CGObjCNonFragileABIMac::GenerateMessageSend(clang::CodeGen::CodeGenFunction&, clang::CodeGen::ReturnValueSlot, clang::QualType, clang::Selector, llvm::Value*, llvm::SmallVector, 16u> const&, clang::ObjCInterfaceDecl const*, clang::ObjCMethodDecl const*)"}, + // "(anonymous namespace)::CGObjCNonFragileABIMac::GenerateMessageSend(clang::CodeGen::CodeGenFunction&, clang::CodeGen::ReturnValueSlot, clang::QualType, clang::Selector, llvm::Value*, llvm::SmallVector, 16> const&, clang::ObjCInterfaceDecl const*, clang::ObjCMethodDecl const*)" was returned + + + // {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac24GenerateMessageSendSuperERN5clang7CodeGen15CodeGenFunctionENS2_15ReturnValueSlotENS1_8QualTypeENS1_8SelectorEPKNS1_17ObjCInterfaceDeclEbPN4llvm5ValueEbRKNSB_11SmallVectorISt4pairINS2_6RValueES6_ELj16EEEPKNS1_14ObjCMethodDeclE", + // "(anonymous namespace)::CGObjCNonFragileABIMac::GenerateMessageSendSuper(clang::CodeGen::CodeGenFunction&, clang::CodeGen::ReturnValueSlot, clang::QualType, clang::Selector, clang::ObjCInterfaceDecl const*, bool, llvm::Value*, bool, llvm::SmallVector, 16u> const&, clang::ObjCMethodDecl const*)"}, + // "(anonymous namespace)::CGObjCNonFragileABIMac::GenerateMessageSendSuper(clang::CodeGen::CodeGenFunction&, clang::CodeGen::ReturnValueSlot, clang::QualType, clang::Selector, clang::ObjCInterfaceDecl const*, bool, llvm::Value*, bool, llvm::SmallVector, 16> const&, clang::ObjCMethodDecl const*)" was returned + + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac19GenerateProtocolRefERN4llvm9IRBuilderILb0ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb0EEEEEPKN5clang16ObjCProtocolDeclE", "(anonymous namespace)::CGObjCNonFragileABIMac::GenerateProtocolRef(llvm::IRBuilder>&, clang::ObjCProtocolDecl const*)"}, + {"_ZN12_GLOBAL__N_115CGObjCCommonMac16GenerateProtocolEPKN5clang16ObjCProtocolDeclE", "(anonymous namespace)::CGObjCCommonMac::GenerateProtocol(clang::ObjCProtocolDecl const*)"}, + {"_ZN12_GLOBAL__N_115CGObjCCommonMac14GenerateMethodEPKN5clang14ObjCMethodDeclEPKNS1_17ObjCContainerDeclE", "(anonymous namespace)::CGObjCCommonMac::GenerateMethod(clang::ObjCMethodDecl const*, clang::ObjCContainerDecl const*)"}, + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac22GetPropertyGetFunctionEv", "(anonymous namespace)::CGObjCNonFragileABIMac::GetPropertyGetFunction()"}, + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac22GetPropertySetFunctionEv", "(anonymous namespace)::CGObjCNonFragileABIMac::GetPropertySetFunction()"}, + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac20GetGetStructFunctionEv", "(anonymous namespace)::CGObjCNonFragileABIMac::GetGetStructFunction()"}, + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac20GetSetStructFunctionEv", "(anonymous namespace)::CGObjCNonFragileABIMac::GetSetStructFunction()"}, + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac8GetClassERN4llvm9IRBuilderILb0ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb0EEEEEPKN5clang17ObjCInterfaceDeclE", "(anonymous namespace)::CGObjCNonFragileABIMac::GetClass(llvm::IRBuilder>&, clang::ObjCInterfaceDecl const*)"}, + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac27EnumerationMutationFunctionEv", "(anonymous namespace)::CGObjCNonFragileABIMac::EnumerationMutationFunction()"}, + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac20EmitSynchronizedStmtERN5clang7CodeGen15CodeGenFunctionERKNS1_22ObjCAtSynchronizedStmtE", "(anonymous namespace)::CGObjCNonFragileABIMac::EmitSynchronizedStmt(clang::CodeGen::CodeGenFunction&, clang::ObjCAtSynchronizedStmt const&)"}, + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac11EmitTryStmtERN5clang7CodeGen15CodeGenFunctionERKNS1_13ObjCAtTryStmtE", "(anonymous namespace)::CGObjCNonFragileABIMac::EmitTryStmt(clang::CodeGen::CodeGenFunction&, clang::ObjCAtTryStmt const&)"}, + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac13EmitThrowStmtERN5clang7CodeGen15CodeGenFunctionERKNS1_15ObjCAtThrowStmtE", "(anonymous namespace)::CGObjCNonFragileABIMac::EmitThrowStmt(clang::CodeGen::CodeGenFunction&, clang::ObjCAtThrowStmt const&)"}, + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac16EmitObjCWeakReadERN5clang7CodeGen15CodeGenFunctionEPN4llvm5ValueE", "(anonymous namespace)::CGObjCNonFragileABIMac::EmitObjCWeakRead(clang::CodeGen::CodeGenFunction&, llvm::Value*)"}, + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac18EmitObjCWeakAssignERN5clang7CodeGen15CodeGenFunctionEPN4llvm5ValueES7_", "(anonymous namespace)::CGObjCNonFragileABIMac::EmitObjCWeakAssign(clang::CodeGen::CodeGenFunction&, llvm::Value*, llvm::Value*)"}, + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac20EmitObjCGlobalAssignERN5clang7CodeGen15CodeGenFunctionEPN4llvm5ValueES7_b", "(anonymous namespace)::CGObjCNonFragileABIMac::EmitObjCGlobalAssign(clang::CodeGen::CodeGenFunction&, llvm::Value*, llvm::Value*, bool)"}, + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac18EmitObjCIvarAssignERN5clang7CodeGen15CodeGenFunctionEPN4llvm5ValueES7_S7_", "(anonymous namespace)::CGObjCNonFragileABIMac::EmitObjCIvarAssign(clang::CodeGen::CodeGenFunction&, llvm::Value*, llvm::Value*, llvm::Value*)"}, + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac24EmitObjCStrongCastAssignERN5clang7CodeGen15CodeGenFunctionEPN4llvm5ValueES7_", "(anonymous namespace)::CGObjCNonFragileABIMac::EmitObjCStrongCastAssign(clang::CodeGen::CodeGenFunction&, llvm::Value*, llvm::Value*)"}, + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac20EmitObjCValueForIvarERN5clang7CodeGen15CodeGenFunctionENS1_8QualTypeEPN4llvm5ValueEPKNS1_12ObjCIvarDeclEj", "(anonymous namespace)::CGObjCNonFragileABIMac::EmitObjCValueForIvar(clang::CodeGen::CodeGenFunction&, clang::QualType, llvm::Value*, clang::ObjCIvarDecl const*, unsigned int)"}, + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac14EmitIvarOffsetERN5clang7CodeGen15CodeGenFunctionEPKNS1_17ObjCInterfaceDeclEPKNS1_12ObjCIvarDeclE", "(anonymous namespace)::CGObjCNonFragileABIMac::EmitIvarOffset(clang::CodeGen::CodeGenFunction&, clang::ObjCInterfaceDecl const*, clang::ObjCIvarDecl const*)"}, + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac24EmitGCMemmoveCollectableERN5clang7CodeGen15CodeGenFunctionEPN4llvm5ValueES7_S7_", "(anonymous namespace)::CGObjCNonFragileABIMac::EmitGCMemmoveCollectable(clang::CodeGen::CodeGenFunction&, llvm::Value*, llvm::Value*, llvm::Value*)"}, + {"_ZN12_GLOBAL__N_115CGObjCCommonMac18BuildGCBlockLayoutERN5clang7CodeGen13CodeGenModuleERKNS2_11CGBlockInfoE", "(anonymous namespace)::CGObjCCommonMac::BuildGCBlockLayout(clang::CodeGen::CodeGenModule&, clang::CodeGen::CGBlockInfo const&)"}, + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac17GetOrEmitProtocolEPKN5clang16ObjCProtocolDeclE", "(anonymous namespace)::CGObjCNonFragileABIMac::GetOrEmitProtocol(clang::ObjCProtocolDecl const*)"}, + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac20GetOrEmitProtocolRefEPKN5clang16ObjCProtocolDeclE", "(anonymous namespace)::CGObjCNonFragileABIMac::GetOrEmitProtocolRef(clang::ObjCProtocolDecl const*)"}, + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac28GetMethodDescriptionConstantEPKN5clang14ObjCMethodDeclE", "(anonymous namespace)::CGObjCNonFragileABIMac::GetMethodDescriptionConstant(clang::ObjCMethodDecl const*)"}, + {"_ZN12_GLOBAL__N_115CGObjCCommonMac12GetClassNameEPN5clang14IdentifierInfoE", "(anonymous namespace)::CGObjCCommonMac::GetClassName(clang::IdentifierInfo*)"}, + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac16EmitProtocolListEN4llvm5TwineEPKPN5clang16ObjCProtocolDeclES7_", "(anonymous namespace)::CGObjCNonFragileABIMac::EmitProtocolList(llvm::Twine, clang::ObjCProtocolDecl* const*, clang::ObjCProtocolDecl* const*)"}, + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac14EmitMethodListEN4llvm5TwineEPKcRKSt6vectorIPNS1_8ConstantESaIS7_EE", "(anonymous namespace)::CGObjCNonFragileABIMac::EmitMethodList(llvm::Twine, char const*, std::vector> const&)"}, + {"_ZN12_GLOBAL__N_115CGObjCCommonMac16EmitPropertyListEN4llvm5TwineEPKN5clang4DeclEPKNS3_17ObjCContainerDeclERKNS_21ObjCCommonTypesHelperE", "(anonymous namespace)::CGObjCCommonMac::EmitPropertyList(llvm::Twine, clang::Decl const*, clang::ObjCContainerDecl const*, (anonymous namespace)::ObjCCommonTypesHelper const&)"}, + {"_ZN12_GLOBAL__N_115CGObjCCommonMac15GetPropertyNameEPN5clang14IdentifierInfoE", "(anonymous namespace)::CGObjCCommonMac::GetPropertyName(clang::IdentifierInfo*)"}, + {"_ZN12_GLOBAL__N_115CGObjCCommonMac21GetPropertyTypeStringEPKN5clang16ObjCPropertyDeclEPKNS1_4DeclE", "(anonymous namespace)::CGObjCCommonMac::GetPropertyTypeString(clang::ObjCPropertyDecl const*, clang::Decl const*)"}, + + // {"_ZN12_GLOBAL__N_115CGObjCCommonMac22PushProtocolPropertiesERN4llvm11SmallPtrSetIPKN5clang14IdentifierInfoELj16EEERSt6vectorIPNS1_8ConstantESaISB_EEPKNS3_4DeclEPKNS3_16ObjCProtocolDeclERKNS_21ObjCCommonTypesHelperE", + // "(anonymous namespace)::CGObjCCommonMac::PushProtocolProperties(llvm::SmallPtrSet&, std::vector>&, clang::Decl const*, clang::ObjCProtocolDecl const*, (anonymous namespace)::ObjCCommonTypesHelper const&)"}, + // "(anonymous namespace)::CGObjCCommonMac::PushProtocolProperties(llvm::SmallPtrSet&, std::vector>&, clang::Decl const*, clang::ObjCProtocolDecl const*, (anonymous namespace)::ObjCCommonTypesHelper const&)" was returned + + {"_ZN12_GLOBAL__N_115CGObjCCommonMac17CreateMetadataVarEN4llvm5TwineEPNS1_8ConstantEPKcjb", "(anonymous namespace)::CGObjCCommonMac::CreateMetadataVar(llvm::Twine, llvm::Constant*, char const*, unsigned int, bool)"}, + {"_ZN12_GLOBAL__N_115CGObjCCommonMac16GetMethodVarNameEN5clang8SelectorE", "(anonymous namespace)::CGObjCCommonMac::GetMethodVarName(clang::Selector)"}, + {"_ZN12_GLOBAL__N_115CGObjCCommonMac16GetMethodVarTypeEPKN5clang14ObjCMethodDeclE", "(anonymous namespace)::CGObjCCommonMac::GetMethodVarType(clang::ObjCMethodDecl const*)"}, + {"_ZN4llvm15SmallVectorImplIN12_GLOBAL__N_115CGObjCCommonMac7GC_IVAREE9push_backERKS3_", "llvm::SmallVectorImpl<(anonymous namespace)::CGObjCCommonMac::GC_IVAR>::push_back((anonymous namespace)::CGObjCCommonMac::GC_IVAR const&)"}, + {"_ZN12_GLOBAL__N_115CGObjCCommonMac25BuildAggrIvarRecordLayoutEPKN5clang10RecordTypeEjbRb", "(anonymous namespace)::CGObjCCommonMac::BuildAggrIvarRecordLayout(clang::RecordType const*, unsigned int, bool, bool&)"}, + {"_ZN12_GLOBAL__N_115CGObjCCommonMac21BuildIvarLayoutBitmapERSs", "(anonymous namespace)::CGObjCCommonMac::BuildIvarLayoutBitmap(std::string&)"}, + {"_ZN4llvm15SmallVectorImplIN12_GLOBAL__N_115CGObjCCommonMac9SKIP_SCANEE9push_backERKS3_", "llvm::SmallVectorImpl<(anonymous namespace)::CGObjCCommonMac::SKIP_SCAN>::push_back((anonymous namespace)::CGObjCCommonMac::SKIP_SCAN const&)"}, + {"_ZN4llvm25array_pod_sort_comparatorIN12_GLOBAL__N_115CGObjCCommonMac7GC_IVAREEEiPKvS5_", "int llvm::array_pod_sort_comparator<(anonymous namespace)::CGObjCCommonMac::GC_IVAR>(void const*, void const*)"}, + {"_ZN12_GLOBAL__N_115CGObjCCommonMac19BuildAggrIvarLayoutEPKN5clang22ObjCImplementationDeclEPKN4llvm12StructLayoutEPKNS1_10RecordDeclERKNS5_15SmallVectorImplIPNS1_9FieldDeclEEEjbRb", "(anonymous namespace)::CGObjCCommonMac::BuildAggrIvarLayout(clang::ObjCImplementationDecl const*, llvm::StructLayout const*, clang::RecordDecl const*, llvm::SmallVectorImpl const&, unsigned int, bool, bool&)"}, + {"_ZN12_GLOBAL__N_121ObjCCommonTypesHelper22GcMemmoveCollectableFnEv", "(anonymous namespace)::ObjCCommonTypesHelper::GcMemmoveCollectableFn()"}, + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac22ObjCIvarOffsetVariableEPKN5clang17ObjCInterfaceDeclEPKNS1_12ObjCIvarDeclE", "(anonymous namespace)::CGObjCNonFragileABIMac::ObjCIvarOffsetVariable(clang::ObjCInterfaceDecl const*, clang::ObjCIvarDecl const*)"}, + {"_ZN12_GLOBAL__N_121ObjCCommonTypesHelper23getGcAssignStrongCastFnEv", "(anonymous namespace)::ObjCCommonTypesHelper::getGcAssignStrongCastFn()"}, + {"_ZN12_GLOBAL__N_121ObjCCommonTypesHelper17getGcAssignIvarFnEv", "(anonymous namespace)::ObjCCommonTypesHelper::getGcAssignIvarFn()"}, + {"_ZN12_GLOBAL__N_121ObjCCommonTypesHelper19getGcAssignGlobalFnEv", "(anonymous namespace)::ObjCCommonTypesHelper::getGcAssignGlobalFn()"}, + {"_ZN12_GLOBAL__N_121ObjCCommonTypesHelper24getGcAssignThreadLocalFnEv", "(anonymous namespace)::ObjCCommonTypesHelper::getGcAssignThreadLocalFn()"}, + {"_ZN12_GLOBAL__N_121ObjCCommonTypesHelper17getGcAssignWeakFnEv", "(anonymous namespace)::ObjCCommonTypesHelper::getGcAssignWeakFn()"}, + {"_ZN12_GLOBAL__N_121ObjCCommonTypesHelper15getGcReadWeakFnEv", "(anonymous namespace)::ObjCCommonTypesHelper::getGcReadWeakFn()"}, + {"_ZN12_GLOBAL__N_121ObjCCommonTypesHelper19getExceptionThrowFnEv", "(anonymous namespace)::ObjCCommonTypesHelper::getExceptionThrowFn()"}, + {"_ZN12_GLOBAL__N_116CallObjCEndCatchD1Ev", "(anonymous namespace)::CallObjCEndCatch::~CallObjCEndCatch()"}, + {"_ZN12_GLOBAL__N_116CallObjCEndCatchD0Ev", "(anonymous namespace)::CallObjCEndCatch::~CallObjCEndCatch()"}, + {"_ZN12_GLOBAL__N_116CallObjCEndCatch4EmitERN5clang7CodeGen15CodeGenFunctionEb", "(anonymous namespace)::CallObjCEndCatch::Emit(clang::CodeGen::CodeGenFunction&, bool)"}, + {"_ZN12_GLOBAL__N_121ObjCCommonTypesHelper14getSyncEnterFnEv", "(anonymous namespace)::ObjCCommonTypesHelper::getSyncEnterFn()"}, + {"_ZN12_GLOBAL__N_121ObjCCommonTypesHelper13getSyncExitFnEv", "(anonymous namespace)::ObjCCommonTypesHelper::getSyncExitFn()"}, + {"_ZN12_GLOBAL__N_112CallSyncExitD1Ev", "(anonymous namespace)::CallSyncExit::~CallSyncExit()"}, + {"_ZN12_GLOBAL__N_112CallSyncExitD0Ev", "(anonymous namespace)::CallSyncExit::~CallSyncExit()"}, + {"_ZN12_GLOBAL__N_112CallSyncExit4EmitERN5clang7CodeGen15CodeGenFunctionEb", "(anonymous namespace)::CallSyncExit::Emit(clang::CodeGen::CodeGenFunction&, bool)"}, + {"_ZN12_GLOBAL__N_121ObjCCommonTypesHelper24getEnumerationMutationFnEv", "(anonymous namespace)::ObjCCommonTypesHelper::getEnumerationMutationFn()"}, + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac14GetClassGlobalERKSs", "(anonymous namespace)::CGObjCNonFragileABIMac::GetClassGlobal(std::string const&)"}, + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac12EmitClassRefERN4llvm9IRBuilderILb0ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb0EEEEEPKN5clang17ObjCInterfaceDeclE", "(anonymous namespace)::CGObjCNonFragileABIMac::EmitClassRef(llvm::IRBuilder>&, clang::ObjCInterfaceDecl const*)"}, + {"_ZN12_GLOBAL__N_121ObjCCommonTypesHelper15getCopyStructFnEv", "(anonymous namespace)::ObjCCommonTypesHelper::getCopyStructFn()"}, + {"_ZN12_GLOBAL__N_121ObjCCommonTypesHelper16getSetPropertyFnEv", "(anonymous namespace)::ObjCCommonTypesHelper::getSetPropertyFn()"}, + {"_ZN12_GLOBAL__N_121ObjCCommonTypesHelper16getGetPropertyFnEv", "(anonymous namespace)::ObjCCommonTypesHelper::getGetPropertyFn()"}, + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac24LegacyDispatchedSelectorEN5clang8SelectorE", "(anonymous namespace)::CGObjCNonFragileABIMac::LegacyDispatchedSelector(clang::Selector)"}, + + // {"_ZN12_GLOBAL__N_115CGObjCCommonMac21EmitLegacyMessageSendERN5clang7CodeGen15CodeGenFunctionENS2_15ReturnValueSlotENS1_8QualTypeEPN4llvm5ValueES9_S6_bRKNS7_11SmallVectorISt4pairINS2_6RValueES6_ELj16EEEPKNS1_14ObjCMethodDeclERKNS_21ObjCCommonTypesHelperE", + // "(anonymous namespace)::CGObjCCommonMac::EmitLegacyMessageSend(clang::CodeGen::CodeGenFunction&, clang::CodeGen::ReturnValueSlot, clang::QualType, llvm::Value*, llvm::Value*, clang::QualType, bool, llvm::SmallVector, 16u> const&, clang::ObjCMethodDecl const*, (anonymous namespace)::ObjCCommonTypesHelper const&)"}, + // "(anonymous namespace)::CGObjCCommonMac::EmitLegacyMessageSend(clang::CodeGen::CodeGenFunction&, clang::CodeGen::ReturnValueSlot, clang::QualType, llvm::Value*, llvm::Value*, clang::QualType, bool, llvm::SmallVector, 16> const&, clang::ObjCMethodDecl const*, (anonymous namespace)::ObjCCommonTypesHelper const&)" was returned + + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac12EmitSelectorERN4llvm9IRBuilderILb0ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb0EEEEEN5clang8SelectorEb", "(anonymous namespace)::CGObjCNonFragileABIMac::EmitSelector(llvm::IRBuilder>&, clang::Selector, bool)"}, + + // {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac15EmitMessageSendERN5clang7CodeGen15CodeGenFunctionENS2_15ReturnValueSlotENS1_8QualTypeENS1_8SelectorEPN4llvm5ValueES6_bRKNS8_11SmallVectorISt4pairINS2_6RValueES6_ELj16EEE", + // "(anonymous namespace)::CGObjCNonFragileABIMac::EmitMessageSend(clang::CodeGen::CodeGenFunction&, clang::CodeGen::ReturnValueSlot, clang::QualType, clang::Selector, llvm::Value*, clang::QualType, bool, llvm::SmallVector, 16u> const&)"}, + // "(anonymous namespace)::CGObjCNonFragileABIMac::EmitMessageSend(clang::CodeGen::CodeGenFunction&, clang::CodeGen::ReturnValueSlot, clang::QualType, clang::Selector, llvm::Value*, clang::QualType, bool, llvm::SmallVector, 16> const&)" was returned + + {"_ZNK12_GLOBAL__N_121ObjCCommonTypesHelper21getMessageSendSuperFnEv", "(anonymous namespace)::ObjCCommonTypesHelper::getMessageSendSuperFn() const"}, + {"_ZNK12_GLOBAL__N_121ObjCCommonTypesHelper16getMessageSendFnEv", "(anonymous namespace)::ObjCCommonTypesHelper::getMessageSendFn() const"}, + {"_ZNK12_GLOBAL__N_121ObjCCommonTypesHelper22getMessageSendSuperFn2Ev", "(anonymous namespace)::ObjCCommonTypesHelper::getMessageSendSuperFn2() const"}, + {"_ZNK12_GLOBAL__N_121ObjCCommonTypesHelper21getMessageSendFpretFnEv", "(anonymous namespace)::ObjCCommonTypesHelper::getMessageSendFpretFn() const"}, + {"_ZNK12_GLOBAL__N_121ObjCCommonTypesHelper21getMessageSendStretFnEv", "(anonymous namespace)::ObjCCommonTypesHelper::getMessageSendStretFn() const"}, + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac24BuildClassRoTInitializerEjjjPKN5clang22ObjCImplementationDeclE", "(anonymous namespace)::CGObjCNonFragileABIMac::BuildClassRoTInitializer(unsigned int, unsigned int, unsigned int, clang::ObjCImplementationDecl const*)"}, + + // {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac18BuildClassMetaDataERSsPN4llvm8ConstantES4_S4_b", + // "(anonymous namespace)::CGObjCNonFragileABIMac::BuildClassMetaData(std::string&, llvm::Constant*, llvm::Constant*, llvm::Constant*, bool)"}, + // "(anonymous namespace)::CGObjCNonFragileABIMac::BuildClassMetaData(std::string&, llvm::Constant*, llvm::Constant, llvm::Constant, bool)" was returned + + {"_Z25hasObjCExceptionAttributeRN5clang10ASTContextEPKNS_17ObjCInterfaceDeclE", "hasObjCExceptionAttribute(clang::ASTContext&, clang::ObjCInterfaceDecl const*)"}, + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac18GetInterfaceEHTypeEPKN5clang17ObjCInterfaceDeclEb", "(anonymous namespace)::CGObjCNonFragileABIMac::GetInterfaceEHType(clang::ObjCInterfaceDecl const*, bool)"}, + {"_ZN12_GLOBAL__N_115CGObjCCommonMac15BuildIvarLayoutEPKN5clang22ObjCImplementationDeclEb", "(anonymous namespace)::CGObjCCommonMac::BuildIvarLayout(clang::ObjCImplementationDecl const*, bool)"}, + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac17GetMethodConstantEPKN5clang14ObjCMethodDeclE", "(anonymous namespace)::CGObjCNonFragileABIMac::GetMethodConstant(clang::ObjCMethodDecl const*)"}, + {"_ZN12_GLOBAL__N_115CGObjCCommonMac16GetMethodVarTypeEPKN5clang9FieldDeclE", "(anonymous namespace)::CGObjCCommonMac::GetMethodVarType(clang::FieldDecl const*)"}, + {"_ZN12_GLOBAL__N_115CGObjCCommonMac19GetMethodDefinitionEPKN5clang14ObjCMethodDeclE", "(anonymous namespace)::CGObjCCommonMac::GetMethodDefinition(clang::ObjCMethodDecl const*)"}, + + // {"_ZSt4sortIPN12_GLOBAL__N_115CGObjCCommonMac7GC_IVAREEvT_S4_", + // "void std::sort<(anonymous namespace)::CGObjCCommonMac::GC_IVAR*>((anonymous namespace)::CGObjCCommonMac::GC_IVAR*, (anonymous namespace)::CGObjCCommonMac::GC_IVAR*)"}, + // got error + + + // {"_ZSt16__introsort_loopIPN12_GLOBAL__N_115CGObjCCommonMac7GC_IVARElEvT_S4_T0_", + // "void std::__introsort_loop<(anonymous namespace)::CGObjCCommonMac::GC_IVAR*, long>((anonymous namespace)::CGObjCCommonMac::GC_IVAR*, (anonymous namespace)::CGObjCCommonMac::GC_IVAR*, long)"}, + // got error + + + // {"_ZSt16__insertion_sortIPN12_GLOBAL__N_115CGObjCCommonMac7GC_IVAREEvT_S4_", + // "void std::__insertion_sort<(anonymous namespace)::CGObjCCommonMac::GC_IVAR*>((anonymous namespace)::CGObjCCommonMac::GC_IVAR*, (anonymous namespace)::CGObjCCommonMac::GC_IVAR*)"}, + // got error + + {"_ZN12_GLOBAL__N_122CGObjCNonFragileABIMac18AddModuleClassListERKSt6vectorIPN4llvm11GlobalValueESaIS4_EEPKcSA_", "(anonymous namespace)::CGObjCNonFragileABIMac::AddModuleClassList(std::vector> const&, char const*, char const*)"}, + {"_ZN12_GLOBAL__N_115CGObjCCommonMac13EmitImageInfoEv", "(anonymous namespace)::CGObjCCommonMac::EmitImageInfo()"}, + {"_ZN12_GLOBAL__N_115CGObjCCommonMacD2Ev", "(anonymous namespace)::CGObjCCommonMac::~CGObjCCommonMac()"}, + {"_ZN12_GLOBAL__N_115CGObjCCommonMacD1Ev", "(anonymous namespace)::CGObjCCommonMac::~CGObjCCommonMac()"}, + {"_ZN12_GLOBAL__N_115CGObjCCommonMacD0Ev", "(anonymous namespace)::CGObjCCommonMac::~CGObjCCommonMac()"}, + {"_ZN12_GLOBAL__N_121ObjCCommonTypesHelperC2ERN5clang7CodeGen13CodeGenModuleE", "(anonymous namespace)::ObjCCommonTypesHelper::ObjCCommonTypesHelper(clang::CodeGen::CodeGenModule&)"}, + {"_ZN12_GLOBAL__N_19CGObjCMacD1Ev", "(anonymous namespace)::CGObjCMac::~CGObjCMac()"}, + {"_ZN12_GLOBAL__N_19CGObjCMacD0Ev", "(anonymous namespace)::CGObjCMac::~CGObjCMac()"}, + {"_ZN12_GLOBAL__N_19CGObjCMac18ModuleInitFunctionEv", "(anonymous namespace)::CGObjCMac::ModuleInitFunction()"}, + {"_ZN12_GLOBAL__N_19CGObjCMac11GetSelectorERN4llvm9IRBuilderILb0ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb0EEEEEN5clang8SelectorEb", "(anonymous namespace)::CGObjCMac::GetSelector(llvm::IRBuilder>&, clang::Selector, bool)"}, + {"_ZN12_GLOBAL__N_19CGObjCMac11GetSelectorERN4llvm9IRBuilderILb0ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb0EEEEEPKN5clang14ObjCMethodDeclE", "(anonymous namespace)::CGObjCMac::GetSelector(llvm::IRBuilder>&, clang::ObjCMethodDecl const*)"}, + {"_ZN12_GLOBAL__N_19CGObjCMac9GetEHTypeEN5clang8QualTypeE", "(anonymous namespace)::CGObjCMac::GetEHType(clang::QualType)"}, + {"_ZN12_GLOBAL__N_19CGObjCMac16GenerateCategoryEPKN5clang20ObjCCategoryImplDeclE", "(anonymous namespace)::CGObjCMac::GenerateCategory(clang::ObjCCategoryImplDecl const*)"}, + {"_ZN12_GLOBAL__N_19CGObjCMac13GenerateClassEPKN5clang22ObjCImplementationDeclE", "(anonymous namespace)::CGObjCMac::GenerateClass(clang::ObjCImplementationDecl const*)"}, + + // {"_ZN12_GLOBAL__N_19CGObjCMac19GenerateMessageSendERN5clang7CodeGen15CodeGenFunctionENS2_15ReturnValueSlotENS1_8QualTypeENS1_8SelectorEPN4llvm5ValueERKNS8_11SmallVectorISt4pairINS2_6RValueES6_ELj16EEEPKNS1_17ObjCInterfaceDeclEPKNS1_14ObjCMethodDeclE", + // "(anonymous namespace)::CGObjCMac::GenerateMessageSend(clang::CodeGen::CodeGenFunction&, clang::CodeGen::ReturnValueSlot, clang::QualType, clang::Selector, llvm::Value*, llvm::SmallVector, 16u> const&, clang::ObjCInterfaceDecl const*, clang::ObjCMethodDecl const*)"}, + // "(anonymous namespace)::CGObjCMac::GenerateMessageSend(clang::CodeGen::CodeGenFunction&, clang::CodeGen::ReturnValueSlot, clang::QualType, clang::Selector, llvm::Value*, llvm::SmallVector, 16> const&, clang::ObjCInterfaceDecl const*, clang::ObjCMethodDecl const*)" was returned + + + // {"_ZN12_GLOBAL__N_19CGObjCMac24GenerateMessageSendSuperERN5clang7CodeGen15CodeGenFunctionENS2_15ReturnValueSlotENS1_8QualTypeENS1_8SelectorEPKNS1_17ObjCInterfaceDeclEbPN4llvm5ValueEbRKNSB_11SmallVectorISt4pairINS2_6RValueES6_ELj16EEEPKNS1_14ObjCMethodDeclE", + // "(anonymous namespace)::CGObjCMac::GenerateMessageSendSuper(clang::CodeGen::CodeGenFunction&, clang::CodeGen::ReturnValueSlot, clang::QualType, clang::Selector, clang::ObjCInterfaceDecl const*, bool, llvm::Value*, bool, llvm::SmallVector, 16u> const&, clang::ObjCMethodDecl const*)"}, + // "(anonymous namespace)::CGObjCMac::GenerateMessageSendSuper(clang::CodeGen::CodeGenFunction&, clang::CodeGen::ReturnValueSlot, clang::QualType, clang::Selector, clang::ObjCInterfaceDecl const*, bool, llvm::Value*, bool, llvm::SmallVector, 16> const&, clang::ObjCMethodDecl const*)" was returned + + {"_ZN12_GLOBAL__N_19CGObjCMac19GenerateProtocolRefERN4llvm9IRBuilderILb0ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb0EEEEEPKN5clang16ObjCProtocolDeclE", "(anonymous namespace)::CGObjCMac::GenerateProtocolRef(llvm::IRBuilder>&, clang::ObjCProtocolDecl const*)"}, + {"_ZN12_GLOBAL__N_19CGObjCMac22GetPropertyGetFunctionEv", "(anonymous namespace)::CGObjCMac::GetPropertyGetFunction()"}, + {"_ZN12_GLOBAL__N_19CGObjCMac22GetPropertySetFunctionEv", "(anonymous namespace)::CGObjCMac::GetPropertySetFunction()"}, + {"_ZN12_GLOBAL__N_19CGObjCMac20GetGetStructFunctionEv", "(anonymous namespace)::CGObjCMac::GetGetStructFunction()"}, + {"_ZN12_GLOBAL__N_19CGObjCMac20GetSetStructFunctionEv", "(anonymous namespace)::CGObjCMac::GetSetStructFunction()"}, + {"_ZN12_GLOBAL__N_19CGObjCMac8GetClassERN4llvm9IRBuilderILb0ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb0EEEEEPKN5clang17ObjCInterfaceDeclE", "(anonymous namespace)::CGObjCMac::GetClass(llvm::IRBuilder>&, clang::ObjCInterfaceDecl const*)"}, + {"_ZN12_GLOBAL__N_19CGObjCMac27EnumerationMutationFunctionEv", "(anonymous namespace)::CGObjCMac::EnumerationMutationFunction()"}, + {"_ZN12_GLOBAL__N_19CGObjCMac20EmitSynchronizedStmtERN5clang7CodeGen15CodeGenFunctionERKNS1_22ObjCAtSynchronizedStmtE", "(anonymous namespace)::CGObjCMac::EmitSynchronizedStmt(clang::CodeGen::CodeGenFunction&, clang::ObjCAtSynchronizedStmt const&)"}, + {"_ZN12_GLOBAL__N_19CGObjCMac11EmitTryStmtERN5clang7CodeGen15CodeGenFunctionERKNS1_13ObjCAtTryStmtE", "(anonymous namespace)::CGObjCMac::EmitTryStmt(clang::CodeGen::CodeGenFunction&, clang::ObjCAtTryStmt const&)"}, + {"_ZN12_GLOBAL__N_19CGObjCMac13EmitThrowStmtERN5clang7CodeGen15CodeGenFunctionERKNS1_15ObjCAtThrowStmtE", "(anonymous namespace)::CGObjCMac::EmitThrowStmt(clang::CodeGen::CodeGenFunction&, clang::ObjCAtThrowStmt const&)"}, + {"_ZN12_GLOBAL__N_19CGObjCMac16EmitObjCWeakReadERN5clang7CodeGen15CodeGenFunctionEPN4llvm5ValueE", "(anonymous namespace)::CGObjCMac::EmitObjCWeakRead(clang::CodeGen::CodeGenFunction&, llvm::Value*)"}, + {"_ZN12_GLOBAL__N_19CGObjCMac18EmitObjCWeakAssignERN5clang7CodeGen15CodeGenFunctionEPN4llvm5ValueES7_", "(anonymous namespace)::CGObjCMac::EmitObjCWeakAssign(clang::CodeGen::CodeGenFunction&, llvm::Value*, llvm::Value*)"}, + {"_ZN12_GLOBAL__N_19CGObjCMac20EmitObjCGlobalAssignERN5clang7CodeGen15CodeGenFunctionEPN4llvm5ValueES7_b", "(anonymous namespace)::CGObjCMac::EmitObjCGlobalAssign(clang::CodeGen::CodeGenFunction&, llvm::Value*, llvm::Value*, bool)"}, + {"_ZN12_GLOBAL__N_19CGObjCMac18EmitObjCIvarAssignERN5clang7CodeGen15CodeGenFunctionEPN4llvm5ValueES7_S7_", "(anonymous namespace)::CGObjCMac::EmitObjCIvarAssign(clang::CodeGen::CodeGenFunction&, llvm::Value*, llvm::Value*, llvm::Value*)"}, + {"_ZN12_GLOBAL__N_19CGObjCMac24EmitObjCStrongCastAssignERN5clang7CodeGen15CodeGenFunctionEPN4llvm5ValueES7_", "(anonymous namespace)::CGObjCMac::EmitObjCStrongCastAssign(clang::CodeGen::CodeGenFunction&, llvm::Value*, llvm::Value*)"}, + {"_ZN12_GLOBAL__N_19CGObjCMac20EmitObjCValueForIvarERN5clang7CodeGen15CodeGenFunctionENS1_8QualTypeEPN4llvm5ValueEPKNS1_12ObjCIvarDeclEj", "(anonymous namespace)::CGObjCMac::EmitObjCValueForIvar(clang::CodeGen::CodeGenFunction&, clang::QualType, llvm::Value*, clang::ObjCIvarDecl const*, unsigned int)"}, + {"_ZN12_GLOBAL__N_19CGObjCMac14EmitIvarOffsetERN5clang7CodeGen15CodeGenFunctionEPKNS1_17ObjCInterfaceDeclEPKNS1_12ObjCIvarDeclE", "(anonymous namespace)::CGObjCMac::EmitIvarOffset(clang::CodeGen::CodeGenFunction&, clang::ObjCInterfaceDecl const*, clang::ObjCIvarDecl const*)"}, + {"_ZN12_GLOBAL__N_19CGObjCMac24EmitGCMemmoveCollectableERN5clang7CodeGen15CodeGenFunctionEPN4llvm5ValueES7_S7_", "(anonymous namespace)::CGObjCMac::EmitGCMemmoveCollectable(clang::CodeGen::CodeGenFunction&, llvm::Value*, llvm::Value*, llvm::Value*)"}, + {"_ZN12_GLOBAL__N_19CGObjCMac17GetOrEmitProtocolEPKN5clang16ObjCProtocolDeclE", "(anonymous namespace)::CGObjCMac::GetOrEmitProtocol(clang::ObjCProtocolDecl const*)"}, + {"_ZN12_GLOBAL__N_19CGObjCMac20GetOrEmitProtocolRefEPKN5clang16ObjCProtocolDeclE", "(anonymous namespace)::CGObjCMac::GetOrEmitProtocolRef(clang::ObjCProtocolDecl const*)"}, + {"_ZN12_GLOBAL__N_19CGObjCMac28GetMethodDescriptionConstantEPKN5clang14ObjCMethodDeclE", "(anonymous namespace)::CGObjCMac::GetMethodDescriptionConstant(clang::ObjCMethodDecl const*)"}, + {"_ZN12_GLOBAL__N_19CGObjCMac16EmitProtocolListEN4llvm5TwineEPKPN5clang16ObjCProtocolDeclES7_", "(anonymous namespace)::CGObjCMac::EmitProtocolList(llvm::Twine, clang::ObjCProtocolDecl* const*, clang::ObjCProtocolDecl* const*)"}, + {"_ZN12_GLOBAL__N_19CGObjCMac18EmitMethodDescListEN4llvm5TwineEPKcRKSt6vectorIPNS1_8ConstantESaIS7_EE", "(anonymous namespace)::CGObjCMac::EmitMethodDescList(llvm::Twine, char const*, std::vector> const&)"}, + {"_ZN12_GLOBAL__N_19CGObjCMac25EmitTryOrSynchronizedStmtERN5clang7CodeGen15CodeGenFunctionERKNS1_4StmtE", "(anonymous namespace)::CGObjCMac::EmitTryOrSynchronizedStmt(clang::CodeGen::CodeGenFunction&, clang::Stmt const&)"}, + {"_ZN12_GLOBAL__N_115ObjCTypesHelper22getExceptionTryEnterFnEv", "(anonymous namespace)::ObjCTypesHelper::getExceptionTryEnterFn()"}, + {"_ZN12_GLOBAL__N_115ObjCTypesHelper11getSetJmpFnEv", "(anonymous namespace)::ObjCTypesHelper::getSetJmpFn()"}, + {"_ZN12_GLOBAL__N_115ObjCTypesHelper21getExceptionExtractFnEv", "(anonymous namespace)::ObjCTypesHelper::getExceptionExtractFn()"}, + {"_ZN12_GLOBAL__N_19CGObjCMac12EmitClassRefERN4llvm9IRBuilderILb0ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb0EEEEEPKN5clang17ObjCInterfaceDeclE", "(anonymous namespace)::CGObjCMac::EmitClassRef(llvm::IRBuilder>&, clang::ObjCInterfaceDecl const*)"}, + {"_ZN12_GLOBAL__N_121PerformFragileFinallyD1Ev", "(anonymous namespace)::PerformFragileFinally::~PerformFragileFinally()"}, + {"_ZN12_GLOBAL__N_121PerformFragileFinallyD0Ev", "(anonymous namespace)::PerformFragileFinally::~PerformFragileFinally()"}, + {"_ZN12_GLOBAL__N_121PerformFragileFinally4EmitERN5clang7CodeGen15CodeGenFunctionEb", "(anonymous namespace)::PerformFragileFinally::Emit(clang::CodeGen::CodeGenFunction&, bool)"}, + {"_ZN12_GLOBAL__N_19CGObjCMac12EmitSelectorERN4llvm9IRBuilderILb0ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb0EEEEEN5clang8SelectorEb", "(anonymous namespace)::CGObjCMac::EmitSelector(llvm::IRBuilder>&, clang::Selector, bool)"}, + {"_ZN12_GLOBAL__N_19CGObjCMac17GetMethodConstantEPKN5clang14ObjCMethodDeclE", "(anonymous namespace)::CGObjCMac::GetMethodConstant(clang::ObjCMethodDecl const*)"}, + {"_ZN12_GLOBAL__N_19CGObjCMac12EmitIvarListEPKN5clang22ObjCImplementationDeclEb", "(anonymous namespace)::CGObjCMac::EmitIvarList(clang::ObjCImplementationDecl const*, bool)"}, + {"_ZN12_GLOBAL__N_19CGObjCMac14EmitMethodListEN4llvm5TwineEPKcRKSt6vectorIPNS1_8ConstantESaIS7_EE", "(anonymous namespace)::CGObjCMac::EmitMethodList(llvm::Twine, char const*, std::vector> const&)"}, + {"_ZN4llvm8DenseMapIPN5clang14IdentifierInfoEPNS_14GlobalVariableENS_12DenseMapInfoIS3_EENS6_IS5_EEE16InsertIntoBucketERKS3_RKS5_PSt4pairIS3_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::IdentifierInfo* const&, llvm::GlobalVariable* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPN5clang14IdentifierInfoEPNS_14GlobalVariableENS_12DenseMapInfoIS3_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm9StringMapIPNS_14GlobalVariableENS_15MallocAllocatorEE16GetOrCreateValueIS2_EERNS_14StringMapEntryIS2_EENS_9StringRefET_", "llvm::StringMapEntry& llvm::StringMap::GetOrCreateValue(llvm::StringRef, llvm::GlobalVariable*)"}, + {"_ZN4llvm8DenseMapIN5clang8SelectorEPNS_14GlobalVariableENS_12DenseMapInfoIS2_EENS5_IS4_EEE16InsertIntoBucketERKS2_RKS4_PSt4pairIS2_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::Selector const&, llvm::GlobalVariable* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIN5clang8SelectorEPNS_14GlobalVariableENS_12DenseMapInfoIS2_EENS5_IS4_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + + // {"_ZN4llvm15SmallVectorImplIPN5clang9FieldDeclEE6appendINS1_11DeclContext22specific_decl_iteratorIS2_EEEEvT_S9_", + // "void llvm::SmallVectorImpl::append>(clang::DeclContext::specific_decl_iterator, clang::DeclContext::specific_decl_iterator)"}, + // got error + + {"_ZN4llvm8DenseMapIPKN5clang14ObjCMethodDeclEPNS_8FunctionENS_12DenseMapInfoIS4_EENS7_IS6_EEE6insertERKSt4pairIS4_S6_E", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPKN5clang14ObjCMethodDeclEPNS_8FunctionENS_12DenseMapInfoIS4_EENS7_IS6_EEE16InsertIntoBucketERKS4_RKS6_PSt4pairIS4_S6_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::ObjCMethodDecl const* const&, llvm::Function* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang14ObjCMethodDeclEPNS_8FunctionENS_12DenseMapInfoIS4_EENS7_IS6_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPN5clang14IdentifierInfoEcNS_12DenseMapInfoIS3_EENS4_IcEEE6insertERKSt4pairIS3_cE", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPN5clang14IdentifierInfoEcNS_12DenseMapInfoIS3_EENS4_IcEEE16InsertIntoBucketERKS3_RKcPSt4pairIS3_cE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::IdentifierInfo* const&, char const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPN5clang14IdentifierInfoEcNS_12DenseMapInfoIS3_EENS4_IcEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + + // {"_ZN4llvm9SetVectorISsSt6vectorISsSaISsEENS_8SmallSetISsLj16EEEED2Ev", + // "llvm::SetVector>, llvm::SmallSet>::~SetVector()"}, + // "llvm::SetVector>, llvm::SmallSet>::~string()" was returned + + {"_ZNSt6vectorIPN5clang14IdentifierInfoESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, clang::IdentifierInfo* const&)"}, + + // {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE9CreateGEPIPPNS_5ValueEEES7_S7_T_S9_RKNS_5TwineE", + // "llvm::Value* llvm::IRBuilder>::CreateGEP(llvm::Value*, llvm::Value**, llvm::Value**, llvm::Twine const&)"}, + // "llvm::Value* llvm::IRBuilder>::CreateGEP(llvm::Value*, false, false, llvm::Twine const&)" was returned + + + // {"_ZN4llvm8SmallSetISsLj16EE6insertERKSs", + // "llvm::SmallSet::insert(std::string const&)"}, + // "llvm::SmallSet::insert(std::string const&)" was returned + + {"_ZN5clang7CodeGen13CodeGenModule23GetAddrOfRTTIDescriptorENS_8QualTypeEb", "clang::CodeGen::CodeGenModule::GetAddrOfRTTIDescriptor(clang::QualType, bool)"}, + {"_ZN12_GLOBAL__N_111RTTIBuilder13BuildTypeInfoEN5clang8QualTypeEb", "(anonymous namespace)::RTTIBuilder::BuildTypeInfo(clang::QualType, bool)"}, + {"_ZN5clang7CodeGen13CodeGenModule29EmitFundamentalRTTIDescriptorENS_8QualTypeE", "clang::CodeGen::CodeGenModule::EmitFundamentalRTTIDescriptor(clang::QualType)"}, + {"_ZN5clang7CodeGen13CodeGenModule30EmitFundamentalRTTIDescriptorsEv", "clang::CodeGen::CodeGenModule::EmitFundamentalRTTIDescriptors()"}, + {"_Z18getTypeInfoLinkageRN5clang7CodeGen13CodeGenModuleENS_8QualTypeE", "getTypeInfoLinkage(clang::CodeGen::CodeGenModule&, clang::QualType)"}, + {"_Z23CanUseSingleInheritancePKN5clang13CXXRecordDeclE", "CanUseSingleInheritance(clang::CXXRecordDecl const*)"}, + {"_ZN12_GLOBAL__N_111RTTIBuilder20BuildPointerTypeInfoEN5clang8QualTypeE", "(anonymous namespace)::RTTIBuilder::BuildPointerTypeInfo(clang::QualType)"}, + {"_Z27ContainsIncompleteClassTypeN5clang8QualTypeE", "ContainsIncompleteClassType(clang::QualType)"}, + {"_Z28ComputeVMIClassTypeInfoFlagsPKN5clang16CXXBaseSpecifierERN12_GLOBAL__N_19SeenBasesE", "ComputeVMIClassTypeInfoFlags(clang::CXXBaseSpecifier const*, (anonymous namespace)::SeenBases&)"}, + {"_ZN5clang7CodeGen14CGBitFieldInfo8MakeInfoERNS0_12CodeGenTypesEPKNS_9FieldDeclEyyyj", "clang::CodeGen::CGBitFieldInfo::MakeInfo(clang::CodeGen::CodeGenTypes&, clang::FieldDecl const*, unsigned long long, unsigned long long, unsigned long long, unsigned int)"}, + {"_ZN5clang7CodeGen14CGBitFieldInfo8MakeInfoERNS0_12CodeGenTypesEPKNS_9FieldDeclEyy", "clang::CodeGen::CGBitFieldInfo::MakeInfo(clang::CodeGen::CodeGenTypes&, clang::FieldDecl const*, unsigned long long, unsigned long long)"}, + {"_ZN5clang7CodeGen12CodeGenTypes19ComputeRecordLayoutEPKNS_10RecordDeclE", "clang::CodeGen::CodeGenTypes::ComputeRecordLayout(clang::RecordDecl const*)"}, + {"_ZNK5clang7CodeGen14CGRecordLayout4dumpEv", "clang::CodeGen::CGRecordLayout::dump() const"}, + {"_ZNK5clang7CodeGen14CGRecordLayout5printERN4llvm11raw_ostreamE", "clang::CodeGen::CGRecordLayout::print(llvm::raw_ostream&) const"}, + {"_ZNK5clang7CodeGen14CGBitFieldInfo5printERN4llvm11raw_ostreamE", "clang::CodeGen::CGBitFieldInfo::print(llvm::raw_ostream&) const"}, + {"_ZNK5clang7CodeGen14CGBitFieldInfo4dumpEv", "clang::CodeGen::CGBitFieldInfo::dump() const"}, + {"_ZN4llvm25array_pod_sort_comparatorISt4pairIjPKN5clang7CodeGen14CGBitFieldInfoEEEEiPKvS9_", "int llvm::array_pod_sort_comparator>(void const*, void const*)"}, + {"_ZN12_GLOBAL__N_121CGRecordLayoutBuilder12LayoutFieldsEPKN5clang10RecordDeclE", "(anonymous namespace)::CGRecordLayoutBuilder::LayoutFields(clang::RecordDecl const*)"}, + {"_ZN12_GLOBAL__N_121CGRecordLayoutBuilder18LayoutVirtualBasesEPKN5clang13CXXRecordDeclERKNS1_15ASTRecordLayoutE", "(anonymous namespace)::CGRecordLayoutBuilder::LayoutVirtualBases(clang::CXXRecordDecl const*, clang::ASTRecordLayout const&)"}, + {"_ZN12_GLOBAL__N_121CGRecordLayoutBuilder17LayoutVirtualBaseEPKN5clang13CXXRecordDeclEy", "(anonymous namespace)::CGRecordLayoutBuilder::LayoutVirtualBase(clang::CXXRecordDecl const*, unsigned long long)"}, + {"_ZN12_GLOBAL__N_121CGRecordLayoutBuilder20LayoutNonVirtualBaseEPKN5clang13CXXRecordDeclEy", "(anonymous namespace)::CGRecordLayoutBuilder::LayoutNonVirtualBase(clang::CXXRecordDecl const*, unsigned long long)"}, + {"_ZNSt6vectorISt4pairIjPKN5clang7CodeGen14CGBitFieldInfoEESaIS6_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS6_S8_EERKS6_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + {"_ZN4llvm8DenseMapIPKN5clang9FieldDeclENS1_7CodeGen14CGBitFieldInfoENS_12DenseMapInfoIS4_EENS7_IS6_EEE6insertERKSt4pairIS4_S6_E", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPKN5clang9FieldDeclENS1_7CodeGen14CGBitFieldInfoENS_12DenseMapInfoIS4_EENS7_IS6_EEE16InsertIntoBucketERKS4_RKS6_PSt4pairIS4_S6_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::FieldDecl const* const&, clang::CodeGen::CGBitFieldInfo const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang9FieldDeclENS1_7CodeGen14CGBitFieldInfoENS_12DenseMapInfoIS4_EENS7_IS6_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKN5clang9FieldDeclEjNS_12DenseMapInfoIS4_EENS5_IjEEE6insertERKSt4pairIS4_jE", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPKN5clang9FieldDeclEjNS_12DenseMapInfoIS4_EENS5_IjEEE16InsertIntoBucketERKS4_RKjPSt4pairIS4_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::FieldDecl const* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang9FieldDeclEjNS_12DenseMapInfoIS4_EENS5_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKN5clang13CXXRecordDeclEjNS_12DenseMapInfoIS4_EENS5_IjEEE6insertERKSt4pairIS4_jE", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN5clang7CodeGen14CGRecordLayoutC2EPKN4llvm10StructTypeES5_b", "clang::CodeGen::CGRecordLayout::CGRecordLayout(llvm::StructType const*, llvm::StructType const*, bool)"}, + {"_ZNSt6vectorIPKN4llvm4TypeESaIS3_EEaSERKS5_", "std::vector>::operator=(std::vector> const&)"}, + {"_ZN4llvm23SmallVectorTemplateBaseISt4pairIPKN5clang9FieldDeclENS2_7CodeGen14CGBitFieldInfoEELb0EE4growEm", "llvm::SmallVectorTemplateBase, false>::grow(unsigned long)"}, + {"_ZN5clang7CodeGen15CodeGenFunction13EmitStopPointEPKNS_4StmtE", "clang::CodeGen::CodeGenFunction::EmitStopPoint(clang::Stmt const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction8EmitStmtEPKNS_4StmtE", "clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction14EmitSimpleStmtEPKNS_4StmtE", "clang::CodeGen::CodeGenFunction::EmitSimpleStmt(clang::Stmt const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction20EmitIndirectGotoStmtERKNS_16IndirectGotoStmtE", "clang::CodeGen::CodeGenFunction::EmitIndirectGotoStmt(clang::IndirectGotoStmt const&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction10EmitIfStmtERKNS_6IfStmtE", "clang::CodeGen::CodeGenFunction::EmitIfStmt(clang::IfStmt const&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction13EmitWhileStmtERKNS_9WhileStmtE", "clang::CodeGen::CodeGenFunction::EmitWhileStmt(clang::WhileStmt const&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction10EmitDoStmtERKNS_6DoStmtE", "clang::CodeGen::CodeGenFunction::EmitDoStmt(clang::DoStmt const&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction11EmitForStmtERKNS_7ForStmtE", "clang::CodeGen::CodeGenFunction::EmitForStmt(clang::ForStmt const&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction14EmitReturnStmtERKNS_10ReturnStmtE", "clang::CodeGen::CodeGenFunction::EmitReturnStmt(clang::ReturnStmt const&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction14EmitSwitchStmtERKNS_10SwitchStmtE", "clang::CodeGen::CodeGenFunction::EmitSwitchStmt(clang::SwitchStmt const&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction11EmitAsmStmtERKNS_7AsmStmtE", "clang::CodeGen::CodeGenFunction::EmitAsmStmt(clang::AsmStmt const&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction16EmitCompoundStmtERKNS_12CompoundStmtEbNS0_12AggValueSlotE", "clang::CodeGen::CodeGenFunction::EmitCompoundStmt(clang::CompoundStmt const&, bool, clang::CodeGen::AggValueSlot)"}, + {"_ZN5clang7CodeGen15CodeGenFunction12EmitDeclStmtERKNS_8DeclStmtE", "clang::CodeGen::CodeGenFunction::EmitDeclStmt(clang::DeclStmt const&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction13EmitLabelStmtERKNS_9LabelStmtE", "clang::CodeGen::CodeGenFunction::EmitLabelStmt(clang::LabelStmt const&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction12EmitGotoStmtERKNS_8GotoStmtE", "clang::CodeGen::CodeGenFunction::EmitGotoStmt(clang::GotoStmt const&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction13EmitBreakStmtERKNS_9BreakStmtE", "clang::CodeGen::CodeGenFunction::EmitBreakStmt(clang::BreakStmt const&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction16EmitContinueStmtERKNS_12ContinueStmtE", "clang::CodeGen::CodeGenFunction::EmitContinueStmt(clang::ContinueStmt const&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction15EmitDefaultStmtERKNS_11DefaultStmtE", "clang::CodeGen::CodeGenFunction::EmitDefaultStmt(clang::DefaultStmt const&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction12EmitCaseStmtERKNS_8CaseStmtE", "clang::CodeGen::CodeGenFunction::EmitCaseStmt(clang::CaseStmt const&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction9EmitLabelERKNS_9LabelStmtE", "clang::CodeGen::CodeGenFunction::EmitLabel(clang::LabelStmt const&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction24SimplifyForwardingBlocksEPN4llvm10BasicBlockE", "clang::CodeGen::CodeGenFunction::SimplifyForwardingBlocks(llvm::BasicBlock*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction9EmitBlockEPN4llvm10BasicBlockEb", "clang::CodeGen::CodeGenFunction::EmitBlock(llvm::BasicBlock*, bool)"}, + {"_ZN5clang7CodeGen15CodeGenFunction10EmitBranchEPN4llvm10BasicBlockE", "clang::CodeGen::CodeGenFunction::EmitBranch(llvm::BasicBlock*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction19getJumpDestForLabelEPKNS_9LabelStmtE", "clang::CodeGen::CodeGenFunction::getJumpDestForLabel(clang::LabelStmt const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction18EmitReturnOfRValueENS0_6RValueENS_8QualTypeE", "clang::CodeGen::CodeGenFunction::EmitReturnOfRValue(clang::CodeGen::RValue, clang::QualType)"}, + {"_ZN5clang7CodeGen15CodeGenFunction17EmitCaseStmtRangeERKNS_8CaseStmtE", "clang::CodeGen::CodeGenFunction::EmitCaseStmtRange(clang::CaseStmt const&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction18EmitAsmInputLValueERKNS_7AsmStmtERKNS_10TargetInfo14ConstraintInfoENS0_6LValueENS_8QualTypeERSs", "clang::CodeGen::CodeGenFunction::EmitAsmInputLValue(clang::AsmStmt const&, clang::TargetInfo::ConstraintInfo const&, clang::CodeGen::LValue, clang::QualType, std::string&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction12EmitAsmInputERKNS_7AsmStmtERKNS_10TargetInfo14ConstraintInfoEPKNS_4ExprERSs", "clang::CodeGen::CodeGenFunction::EmitAsmInput(clang::AsmStmt const&, clang::TargetInfo::ConstraintInfo const&, clang::Expr const*, std::string&)"}, + {"_Z18SimplifyConstraintPKcRKN5clang10TargetInfoEPN4llvm15SmallVectorImplINS2_14ConstraintInfoEEE", "SimplifyConstraint(char const*, clang::TargetInfo const&, llvm::SmallVectorImpl*)"}, + + // {"_Z22AddVariableConstraintsRKSsRKN5clang4ExprERKNS1_10TargetInfoERNS1_7CodeGen13CodeGenModuleERKNS1_7AsmStmtE", + // "AddVariableConstraints(std::string const&, clang::Expr const&, clang::TargetInfo const&, clang::CodeGen::CodeGenModule&, clang::AsmStmt const&)"}, + // "AddVariableConstraints(std::string const&, clang::Expr const&, std::string const&::TargetInfo const&, std::string const&::CodeGen::CodeGenModule&, std::string const&::AsmStmt const&)" was returned + + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE12CreateSwitchEPNS_5ValueEPNS_10BasicBlockEj", "llvm::IRBuilder>::CreateSwitch(llvm::Value*, llvm::BasicBlock*, unsigned int)"}, + + // {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE10CreateCallIN9__gnu_cxx17__normal_iteratorIPPNS_5ValueESt6vectorIS9_SaIS9_EEEEEEPNS_8CallInstES9_T_SH_RKNS_5TwineE", + // "llvm::CallInst* llvm::IRBuilder>::CreateCall<__gnu_cxx::__normal_iterator>>>(llvm::Value*, __gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, llvm::Twine const&)"}, + // "llvm::CallInst* llvm::IRBuilder>::CreateCall<__gnu_cxx::__normal_iterator>>>(llvm::Value*, false, false, llvm::Twine const&)" was returned + + {"_ZNSt6vectorIN5clang7CodeGen6LValueESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, clang::CodeGen::LValue const&)"}, + {"_ZNSt6vectorIN5clang8QualTypeESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, clang::QualType const&)"}, + {"_ZN4llvm8DenseMapIPKN5clang7VarDeclEPNS_5ValueENS_12DenseMapInfoIS4_EENS7_IS6_EEE16InsertIntoBucketERKS4_RKS6_PSt4pairIS4_S6_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::VarDecl const* const&, llvm::Value* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang7VarDeclEPNS_5ValueENS_12DenseMapInfoIS4_EENS7_IS6_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKN5clang9LabelStmtENS1_7CodeGen15CodeGenFunction8JumpDestENS_12DenseMapInfoIS4_EENS8_IS7_EEE16InsertIntoBucketERKS4_RKS7_PSt4pairIS4_S7_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::LabelStmt const* const&, clang::CodeGen::CodeGenFunction::JumpDest const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang9LabelStmtENS1_7CodeGen15CodeGenFunction8JumpDestENS_12DenseMapInfoIS4_EENS8_IS7_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang7CodeGen15CodeGenFunction16EmitCXXTemporaryEPKNS_12CXXTemporaryEPN4llvm5ValueE", "clang::CodeGen::CodeGenFunction::EmitCXXTemporary(clang::CXXTemporary const*, llvm::Value*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction20EmitExprWithCleanupsEPKNS_16ExprWithCleanupsENS0_12AggValueSlotE", "clang::CodeGen::CodeGenFunction::EmitExprWithCleanups(clang::ExprWithCleanups const*, clang::CodeGen::AggValueSlot)"}, + {"_ZN5clang7CodeGen15CodeGenFunction26EmitExprWithCleanupsLValueEPKNS_16ExprWithCleanupsE", "clang::CodeGen::CodeGenFunction::EmitExprWithCleanupsLValue(clang::ExprWithCleanups const*)"}, + {"_ZN5clang7CodeGen12EHScopeStack19ConditionalCleanup2IN12_GLOBAL__N_116DestroyTemporaryEPKNS_17CXXDestructorDeclEPN4llvm5ValueEED1Ev", "clang::CodeGen::EHScopeStack::ConditionalCleanup2<(anonymous namespace)::DestroyTemporary, clang::CXXDestructorDecl const*, llvm::Value*>::~ConditionalCleanup2()"}, + {"_ZN5clang7CodeGen12EHScopeStack19ConditionalCleanup2IN12_GLOBAL__N_116DestroyTemporaryEPKNS_17CXXDestructorDeclEPN4llvm5ValueEED0Ev", "clang::CodeGen::EHScopeStack::ConditionalCleanup2<(anonymous namespace)::DestroyTemporary, clang::CXXDestructorDecl const*, llvm::Value*>::~ConditionalCleanup2()"}, + {"_ZN5clang7CodeGen12EHScopeStack19ConditionalCleanup2IN12_GLOBAL__N_116DestroyTemporaryEPKNS_17CXXDestructorDeclEPN4llvm5ValueEE4EmitERNS0_15CodeGenFunctionEb", "clang::CodeGen::EHScopeStack::ConditionalCleanup2<(anonymous namespace)::DestroyTemporary, clang::CXXDestructorDecl const*, llvm::Value*>::Emit(clang::CodeGen::CodeGenFunction&, bool)"}, + {"_ZN5clang7CodeGen12EHScopeStack21UnconditionalCleanup2IN12_GLOBAL__N_116DestroyTemporaryEPKNS_17CXXDestructorDeclEPN4llvm5ValueEED1Ev", "clang::CodeGen::EHScopeStack::UnconditionalCleanup2<(anonymous namespace)::DestroyTemporary, clang::CXXDestructorDecl const*, llvm::Value*>::~UnconditionalCleanup2()"}, + {"_ZN5clang7CodeGen12EHScopeStack21UnconditionalCleanup2IN12_GLOBAL__N_116DestroyTemporaryEPKNS_17CXXDestructorDeclEPN4llvm5ValueEED0Ev", "clang::CodeGen::EHScopeStack::UnconditionalCleanup2<(anonymous namespace)::DestroyTemporary, clang::CXXDestructorDecl const*, llvm::Value*>::~UnconditionalCleanup2()"}, + {"_ZN5clang7CodeGen12EHScopeStack21UnconditionalCleanup2IN12_GLOBAL__N_116DestroyTemporaryEPKNS_17CXXDestructorDeclEPN4llvm5ValueEE4EmitERNS0_15CodeGenFunctionEb", "clang::CodeGen::EHScopeStack::UnconditionalCleanup2<(anonymous namespace)::DestroyTemporary, clang::CXXDestructorDecl const*, llvm::Value*>::Emit(clang::CodeGen::CodeGenFunction&, bool)"}, + {"_ZN5clang7CodeGen14CodeGenVTables17EmitVTTDefinitionEPN4llvm14GlobalVariableENS2_11GlobalValue12LinkageTypesEPKNS_13CXXRecordDeclE", "clang::CodeGen::CodeGenVTables::EmitVTTDefinition(llvm::GlobalVariable*, llvm::GlobalValue::LinkageTypes, clang::CXXRecordDecl const*)"}, + {"_ZN12_GLOBAL__N_110VTTBuilderC1ERN5clang7CodeGen13CodeGenModuleEPKNS1_13CXXRecordDeclEb", "(anonymous namespace)::VTTBuilder::VTTBuilder(clang::CodeGen::CodeGenModule&, clang::CXXRecordDecl const*, bool)"}, + {"_ZN5clang7CodeGen14CodeGenVTables12GetAddrOfVTTEPKNS_13CXXRecordDeclE", "clang::CodeGen::CodeGenVTables::GetAddrOfVTT(clang::CXXRecordDecl const*)"}, + {"_ZN5clang7CodeGen14CodeGenVTables17needsVTTParameterENS0_10GlobalDeclE", "clang::CodeGen::CodeGenVTables::needsVTTParameter(clang::CodeGen::GlobalDecl)"}, + {"_ZN5clang7CodeGen14CodeGenVTables14getSubVTTIndexEPKNS_13CXXRecordDeclENS0_13BaseSubobjectE", "clang::CodeGen::CodeGenVTables::getSubVTTIndex(clang::CXXRecordDecl const*, clang::CodeGen::BaseSubobject)"}, + {"_ZN5clang7CodeGen14CodeGenVTables31getSecondaryVirtualPointerIndexEPKNS_13CXXRecordDeclENS0_13BaseSubobjectE", "clang::CodeGen::CodeGenVTables::getSecondaryVirtualPointerIndex(clang::CXXRecordDecl const*, clang::CodeGen::BaseSubobject)"}, + {"_ZN12_GLOBAL__N_110VTTBuilder9LayoutVTTEN5clang7CodeGen13BaseSubobjectEb", "(anonymous namespace)::VTTBuilder::LayoutVTT(clang::CodeGen::BaseSubobject, bool)"}, + {"_ZN12_GLOBAL__N_110VTTBuilder16AddVTablePointerEN5clang7CodeGen13BaseSubobjectEPN4llvm8ConstantEPKNS1_13CXXRecordDeclERKNS4_8DenseMapIS3_yNS4_12DenseMapInfoIS3_EENSB_IyEEEE", "(anonymous namespace)::VTTBuilder::AddVTablePointer(clang::CodeGen::BaseSubobject, llvm::Constant*, clang::CXXRecordDecl const*, llvm::DenseMap, llvm::DenseMapInfo> const&)"}, + + // {"_ZN12_GLOBAL__N_110VTTBuilder17LayoutVirtualVTTsEPKN5clang13CXXRecordDeclERN4llvm11SmallPtrSetIS4_Lj4EEE", + // "(anonymous namespace)::VTTBuilder::LayoutVirtualVTTs(clang::CXXRecordDecl const*, llvm::SmallPtrSet&)"}, + // "(anonymous namespace)::VTTBuilder::LayoutVirtualVTTs(clang::CXXRecordDecl const*, llvm::SmallPtrSet&)" was returned + + + // {"_ZN12_GLOBAL__N_110VTTBuilder30LayoutSecondaryVirtualPointersEN5clang7CodeGen13BaseSubobjectEbPN4llvm8ConstantEPKNS1_13CXXRecordDeclERKNS4_8DenseMapIS3_yNS4_12DenseMapInfoIS3_EENSB_IyEEEERNS4_11SmallPtrSetIS9_Lj4EEE", + // "(anonymous namespace)::VTTBuilder::LayoutSecondaryVirtualPointers(clang::CodeGen::BaseSubobject, bool, llvm::Constant*, clang::CXXRecordDecl const*, llvm::DenseMap, llvm::DenseMapInfo> const&, llvm::SmallPtrSet&)"}, + // "(anonymous namespace)::VTTBuilder::LayoutSecondaryVirtualPointers(clang::CodeGen::BaseSubobject, bool, llvm::Constant*, clang::CXXRecordDecl const*, llvm::DenseMap, llvm::DenseMapInfo> const&, llvm::SmallPtrSet&)" was returned + + + // {"_ZN4llvm8DenseMapISt4pairIPKN5clang13CXXRecordDeclENS2_7CodeGen13BaseSubobjectEEyNS_12DenseMapInfoIS8_EENS9_IyEEE6insertERKS1_IS8_yE", + // "llvm::DenseMap, unsigned long long, llvm::DenseMapInfo>, llvm::DenseMapInfo>::insert(std::pair, unsigned long long> const&)"}, + // "llvm::DenseMap, unsigned long long, llvm::DenseMapInfo>, llvm::DenseMapInfo>::insert(std::pair const&, unsigned long long>)" was returned + + {"_ZN4llvm8DenseMapIN5clang7CodeGen13BaseSubobjectEyNS_12DenseMapInfoIS3_EENS4_IyEEE16FindAndConstructERKS3_", "llvm::DenseMap, llvm::DenseMapInfo>::FindAndConstruct(clang::CodeGen::BaseSubobject const&)"}, + {"_ZN5clang7CodeGen14CodeGenVTables26ComputeMethodVTableIndicesEPKNS_13CXXRecordDeclE", "clang::CodeGen::CodeGenVTables::ComputeMethodVTableIndices(clang::CXXRecordDecl const*)"}, + {"_ZN5clang7CodeGen14CodeGenVTables29getNumVirtualFunctionPointersEPKNS_13CXXRecordDeclE", "clang::CodeGen::CodeGenVTables::getNumVirtualFunctionPointers(clang::CXXRecordDecl const*)"}, + + // {"_ZN12_GLOBAL__N_127FindNearestOverriddenMethodEPKN5clang13CXXMethodDeclERN4llvm14SmallSetVectorIPKNS0_13CXXRecordDeclELj8EEE", + // "(anonymous namespace)::FindNearestOverriddenMethod(clang::CXXMethodDecl const*, llvm::SmallSetVector&)"}, + // "(anonymous namespace)::FindNearestOverriddenMethod(clang::CXXMethodDecl const*, llvm::SmallSetVector&)" was returned + + {"_ZN12_GLOBAL__N_133ComputeReturnAdjustmentBaseOffsetERN5clang10ASTContextEPKNS0_13CXXMethodDeclES5_", "(anonymous namespace)::ComputeReturnAdjustmentBaseOffset(clang::ASTContext&, clang::CXXMethodDecl const*, clang::CXXMethodDecl const*)"}, + {"_ZN5clang7CodeGen14CodeGenVTables20getMethodVTableIndexENS0_10GlobalDeclE", "clang::CodeGen::CodeGenVTables::getMethodVTableIndex(clang::CodeGen::GlobalDecl)"}, + {"_ZN5clang7CodeGen14CodeGenVTables24ShouldEmitVTableInThisTUEPKNS_13CXXRecordDeclE", "clang::CodeGen::CodeGenVTables::ShouldEmitVTableInThisTU(clang::CXXRecordDecl const*)"}, + {"_ZN5clang7CodeGen14CodeGenVTables26getVirtualBaseOffsetOffsetEPKNS_13CXXRecordDeclES4_", "clang::CodeGen::CodeGenVTables::getVirtualBaseOffsetOffset(clang::CXXRecordDecl const*, clang::CXXRecordDecl const*)"}, + {"_ZN12_GLOBAL__N_126VCallAndVBaseOffsetBuilderC1EPKN5clang13CXXRecordDeclES4_PKNS_15FinalOverridersENS1_7CodeGen13BaseSubobjectEby", "(anonymous namespace)::VCallAndVBaseOffsetBuilder::VCallAndVBaseOffsetBuilder(clang::CXXRecordDecl const*, clang::CXXRecordDecl const*, (anonymous namespace)::FinalOverriders const*, clang::CodeGen::BaseSubobject, bool, unsigned long long)"}, + {"_ZN5clang7CodeGen14CodeGenVTables15getAddressPointENS0_13BaseSubobjectEPKNS_13CXXRecordDeclE", "clang::CodeGen::CodeGenVTables::getAddressPoint(clang::CodeGen::BaseSubobject, clang::CXXRecordDecl const*)"}, + {"_ZN5clang7CodeGen13CodeGenModule14GetAddrOfThunkENS0_10GlobalDeclERKNS_9ThunkInfoE", "clang::CodeGen::CodeGenModule::GetAddrOfThunk(clang::CodeGen::GlobalDecl, clang::ThunkInfo const&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction13GenerateThunkEPN4llvm8FunctionENS0_10GlobalDeclERKNS_9ThunkInfoE", "clang::CodeGen::CodeGenFunction::GenerateThunk(llvm::Function*, clang::CodeGen::GlobalDecl, clang::ThunkInfo const&)"}, + {"_Z21PerformTypeAdjustmentRN5clang7CodeGen15CodeGenFunctionEPN4llvm5ValueExx", "PerformTypeAdjustment(clang::CodeGen::CodeGenFunction&, llvm::Value*, long long, long long)"}, + {"_ZN5clang7CodeGen14CodeGenVTables9EmitThunkENS0_10GlobalDeclERKNS_9ThunkInfoEb", "clang::CodeGen::CodeGenVTables::EmitThunk(clang::CodeGen::GlobalDecl, clang::ThunkInfo const&, bool)"}, + {"_ZN5clang7CodeGen14CodeGenVTables33MaybeEmitThunkAvailableExternallyENS0_10GlobalDeclERKNS_9ThunkInfoE", "clang::CodeGen::CodeGenVTables::MaybeEmitThunkAvailableExternally(clang::CodeGen::GlobalDecl, clang::ThunkInfo const&)"}, + {"_ZN5clang7CodeGen14CodeGenVTables10EmitThunksENS0_10GlobalDeclE", "clang::CodeGen::CodeGenVTables::EmitThunks(clang::CodeGen::GlobalDecl)"}, + {"_ZN5clang7CodeGen14CodeGenVTables31ComputeVTableRelatedInformationEPKNS_13CXXRecordDeclEb", "clang::CodeGen::CodeGenVTables::ComputeVTableRelatedInformation(clang::CXXRecordDecl const*, bool)"}, + {"_ZN12_GLOBAL__N_113VTableBuilderC1ERN5clang7CodeGen14CodeGenVTablesEPKNS1_13CXXRecordDeclEybS7_", "(anonymous namespace)::VTableBuilder::VTableBuilder(clang::CodeGen::CodeGenVTables&, clang::CXXRecordDecl const*, unsigned long long, bool, clang::CXXRecordDecl const*)"}, + {"_ZN12_GLOBAL__N_113VTableBuilderD1Ev", "(anonymous namespace)::VTableBuilder::~VTableBuilder()"}, + + // {"_ZN5clang7CodeGen14CodeGenVTables23CreateVTableInitializerEPKNS_13CXXRecordDeclEPKyjRKN4llvm11SmallVectorISt4pairIyNS_9ThunkInfoEELj1EEE", + // "clang::CodeGen::CodeGenVTables::CreateVTableInitializer(clang::CXXRecordDecl const*, unsigned long long const*, unsigned int, llvm::SmallVector, 1u> const&)"}, + // "clang::CodeGen::CodeGenVTables::CreateVTableInitializer(clang::CXXRecordDecl const*, unsigned long long const*, unsigned int, llvm::SmallVector, 1> const&)" was returned + + {"_ZN5clang7CodeGen14CodeGenVTables15GetAddrOfVTableEPKNS_13CXXRecordDeclE", "clang::CodeGen::CodeGenVTables::GetAddrOfVTable(clang::CXXRecordDecl const*)"}, + {"_ZN5clang7CodeGen14CodeGenVTables20EmitVTableDefinitionEPN4llvm14GlobalVariableENS2_11GlobalValue12LinkageTypesEPKNS_13CXXRecordDeclE", "clang::CodeGen::CodeGenVTables::EmitVTableDefinition(llvm::GlobalVariable*, llvm::GlobalValue::LinkageTypes, clang::CXXRecordDecl const*)"}, + {"_ZN12_GLOBAL__N_113VTableBuilder10dumpLayoutERN4llvm11raw_ostreamE", "(anonymous namespace)::VTableBuilder::dumpLayout(llvm::raw_ostream&)"}, + {"_ZN5clang7CodeGen14CodeGenVTables26GenerateConstructionVTableEPKNS_13CXXRecordDeclERKNS0_13BaseSubobjectEbRN4llvm8DenseMapIS5_yNS8_12DenseMapInfoIS5_EENSA_IyEEEE", "clang::CodeGen::CodeGenVTables::GenerateConstructionVTable(clang::CXXRecordDecl const*, clang::CodeGen::BaseSubobject const&, bool, llvm::DenseMap, llvm::DenseMapInfo>&)"}, + {"_ZN5clang7CodeGen14CodeGenVTables17GenerateClassDataEN4llvm11GlobalValue12LinkageTypesEPKNS_13CXXRecordDeclE", "clang::CodeGen::CodeGenVTables::GenerateClassData(llvm::GlobalValue::LinkageTypes, clang::CXXRecordDecl const*)"}, + {"_ZN12_GLOBAL__N_113VTableBuilder32LayoutPrimaryAndSecondaryVTablesEN5clang7CodeGen13BaseSubobjectEbby", "(anonymous namespace)::VTableBuilder::LayoutPrimaryAndSecondaryVTables(clang::CodeGen::BaseSubobject, bool, bool, unsigned long long)"}, + + // {"_ZN12_GLOBAL__N_113VTableBuilder28DeterminePrimaryVirtualBasesEPKN5clang13CXXRecordDeclEyRN4llvm11SmallPtrSetIS4_Lj4EEE", + // "(anonymous namespace)::VTableBuilder::DeterminePrimaryVirtualBases(clang::CXXRecordDecl const*, unsigned long long, llvm::SmallPtrSet&)"}, + // "(anonymous namespace)::VTableBuilder::DeterminePrimaryVirtualBases(clang::CXXRecordDecl const*, unsigned long long, llvm::SmallPtrSet&)" was returned + + + // {"_ZN12_GLOBAL__N_113VTableBuilder28LayoutVTablesForVirtualBasesEPKN5clang13CXXRecordDeclERN4llvm11SmallPtrSetIS4_Lj4EEE", + // "(anonymous namespace)::VTableBuilder::LayoutVTablesForVirtualBases(clang::CXXRecordDecl const*, llvm::SmallPtrSet&)"}, + // "(anonymous namespace)::VTableBuilder::LayoutVTablesForVirtualBases(clang::CXXRecordDecl const*, llvm::SmallPtrSet&)" was returned + + {"_ZN4llvm8DenseMapIPKN5clang13CXXRecordDeclEN12_GLOBAL__N_114VCallOffsetMapENS_12DenseMapInfoIS4_EENS7_IS6_EEEixERKS4_", "llvm::DenseMap, llvm::DenseMapInfo<(anonymous namespace)::VCallOffsetMap>>::operator[](clang::CXXRecordDecl const* const&)"}, + + // {"_ZN12_GLOBAL__N_113VTableBuilder10AddMethodsEN5clang7CodeGen13BaseSubobjectEyPKNS1_13CXXRecordDeclEyRN4llvm14SmallSetVectorIS6_Lj8EEE", + // "(anonymous namespace)::VTableBuilder::AddMethods(clang::CodeGen::BaseSubobject, unsigned long long, clang::CXXRecordDecl const*, unsigned long long, llvm::SmallSetVector&)"}, + // "(anonymous namespace)::VTableBuilder::AddMethods(clang::CodeGen::BaseSubobject, unsigned long long, clang::CXXRecordDecl const*, unsigned long long, llvm::SmallSetVector&)" was returned + + {"_ZN12_GLOBAL__N_113VTableBuilder22LayoutSecondaryVTablesEN5clang7CodeGen13BaseSubobjectEby", "(anonymous namespace)::VTableBuilder::LayoutSecondaryVTables(clang::CodeGen::BaseSubobject, bool, unsigned long long)"}, + {"_ZN12_GLOBAL__N_113VTableBuilder21ComputeThisAdjustmentEPKN5clang13CXXMethodDeclEyNS_15FinalOverriders13OverriderInfoE", "(anonymous namespace)::VTableBuilder::ComputeThisAdjustment(clang::CXXMethodDecl const*, unsigned long long, (anonymous namespace)::FinalOverriders::OverriderInfo)"}, + {"_ZN12_GLOBAL__N_114VCallOffsetMap26MethodsCanShareVCallOffsetEPKN5clang13CXXMethodDeclES4_", "(anonymous namespace)::VCallOffsetMap::MethodsCanShareVCallOffset(clang::CXXMethodDecl const*, clang::CXXMethodDecl const*)"}, + {"_ZN12_GLOBAL__N_117ComputeBaseOffsetERN5clang10ASTContextEPKNS0_13CXXRecordDeclERKNS0_11CXXBasePathE", "(anonymous namespace)::ComputeBaseOffset(clang::ASTContext&, clang::CXXRecordDecl const*, clang::CXXBasePath const&)"}, + + // {"_ZNK4llvm8DenseMapISt4pairIPKN5clang13CXXMethodDeclEyEN12_GLOBAL__N_115FinalOverriders13OverriderInfoENS_12DenseMapInfoIS6_EENSA_IS9_EEE15LookupBucketForERKS6_RPS1_IS6_S9_E", + // "llvm::DenseMap, (anonymous namespace)::FinalOverriders::OverriderInfo, llvm::DenseMapInfo>, llvm::DenseMapInfo<(anonymous namespace)::FinalOverriders::OverriderInfo>>::LookupBucketFor(std::pair const&, std::pair, (anonymous namespace)::FinalOverriders::OverriderInfo>*&) const"}, + // "llvm::DenseMap, (anonymous namespace)::FinalOverriders::OverriderInfo, llvm::DenseMapInfo>, llvm::DenseMapInfo<(anonymous namespace)::FinalOverriders::OverriderInfo>>::LookupBucketFor(std::pair const&, std::pair*&, (anonymous namespace)::FinalOverriders::OverriderInfo>) const" was returned + + {"_ZN4llvm8DenseMapIPKN5clang13CXXMethodDeclEN12_GLOBAL__N_113VTableBuilder10MethodInfoENS_12DenseMapInfoIS4_EENS8_IS7_EEE6insertERKSt4pairIS4_S7_E", "llvm::DenseMap, llvm::DenseMapInfo<(anonymous namespace)::VTableBuilder::MethodInfo>>::insert(std::pair const&)"}, + + // {"_ZN12_GLOBAL__N_130OverridesIndirectMethodInBasesEPKN5clang13CXXMethodDeclERN4llvm14SmallSetVectorIPKNS0_13CXXRecordDeclELj8EEE", + // "(anonymous namespace)::OverridesIndirectMethodInBases(clang::CXXMethodDecl const*, llvm::SmallSetVector&)"}, + // "(anonymous namespace)::OverridesIndirectMethodInBases(clang::CXXMethodDecl const*, llvm::SmallSetVector&)" was returned + + {"_ZN4llvm8DenseMapIPKN5clang13CXXMethodDeclEN12_GLOBAL__N_113VTableBuilder10MethodInfoENS_12DenseMapInfoIS4_EENS8_IS7_EEE16InsertIntoBucketERKS4_RKS7_PSt4pairIS4_S7_E", "llvm::DenseMap, llvm::DenseMapInfo<(anonymous namespace)::VTableBuilder::MethodInfo>>::InsertIntoBucket(clang::CXXMethodDecl const* const&, (anonymous namespace)::VTableBuilder::MethodInfo const&, std::pair*)"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN12_GLOBAL__N_115VTableComponentELb0EE4growEm", "llvm::SmallVectorTemplateBase<(anonymous namespace)::VTableComponent, false>::grow(unsigned long)"}, + {"_ZN12_GLOBAL__N_115FinalOverriders18ComputeBaseOffsetsEN5clang7CodeGen13BaseSubobjectEbyRN4llvm8DenseMapISt4pairIPKNS1_13CXXRecordDeclEjEyNS4_12DenseMapInfoISA_EENSB_IyEEEESF_RNS5_IS9_jNSB_IS9_EENSB_IjEEEE", "(anonymous namespace)::FinalOverriders::ComputeBaseOffsets(clang::CodeGen::BaseSubobject, bool, unsigned long long, llvm::DenseMap, unsigned long long, llvm::DenseMapInfo>, llvm::DenseMapInfo>&, llvm::DenseMap, unsigned long long, llvm::DenseMapInfo>, llvm::DenseMapInfo>&, llvm::DenseMap, llvm::DenseMapInfo>&)"}, + {"_ZN12_GLOBAL__N_126VCallAndVBaseOffsetBuilder23AddVCallAndVBaseOffsetsEN5clang7CodeGen13BaseSubobjectEby", "(anonymous namespace)::VCallAndVBaseOffsetBuilder::AddVCallAndVBaseOffsets(clang::CodeGen::BaseSubobject, bool, unsigned long long)"}, + {"_ZN12_GLOBAL__N_126VCallAndVBaseOffsetBuilder15AddVBaseOffsetsEPKN5clang13CXXRecordDeclEy", "(anonymous namespace)::VCallAndVBaseOffsetBuilder::AddVBaseOffsets(clang::CXXRecordDecl const*, unsigned long long)"}, + {"_ZN12_GLOBAL__N_126VCallAndVBaseOffsetBuilder15AddVCallOffsetsEN5clang7CodeGen13BaseSubobjectEy", "(anonymous namespace)::VCallAndVBaseOffsetBuilder::AddVCallOffsets(clang::CodeGen::BaseSubobject, unsigned long long)"}, + + // {"_ZN12_GLOBAL__N_127ComputeAllOverriddenMethodsEPKN5clang13CXXMethodDeclERN4llvm11SmallPtrSetIS3_Lj8EEE", + // "(anonymous namespace)::ComputeAllOverriddenMethods(clang::CXXMethodDecl const*, llvm::SmallPtrSet&)"}, + // "(anonymous namespace)::ComputeAllOverriddenMethods(clang::CXXMethodDecl const*, llvm::SmallPtrSet&)" was returned + + + // {"_ZN4llvm8DenseMapISt4pairIPKN5clang13CXXRecordDeclES5_ExNS_12DenseMapInfoIS6_EENS7_IxEEE6insertERKS1_IS6_xE", + // "llvm::DenseMap, long long, llvm::DenseMapInfo>, llvm::DenseMapInfo>::insert(std::pair, long long> const&)"}, + // "llvm::DenseMap, long long, llvm::DenseMapInfo>, llvm::DenseMapInfo>::insert(std::pair const&, long long>)" was returned + + + // {"_ZN4llvm15SmallVectorImplISt4pairIyN5clang9ThunkInfoEEE6appendINS_16DenseMapIteratorIyS3_NS_12DenseMapInfoIyEENS8_IS3_EELb1EEEEEvT_SC_", + // "void llvm::SmallVectorImpl>::append, llvm::DenseMapInfo, true>>(llvm::DenseMapIterator, llvm::DenseMapInfo, true>, llvm::DenseMapIterator, llvm::DenseMapInfo, true>)"}, + // "void llvm::SmallVectorImpl>::append, llvm::DenseMapInfo, true>>(unsigned long long, unsigned long long)" was returned + + {"_ZN4llvm8DenseMapIPKN5clang13CXXRecordDeclEPNS_14GlobalVariableENS_12DenseMapInfoIS4_EENS7_IS6_EEE16InsertIntoBucketERKS4_RKS6_PSt4pairIS4_S6_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::CXXRecordDecl const* const&, llvm::GlobalVariable* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang13CXXRecordDeclEPNS_14GlobalVariableENS_12DenseMapInfoIS4_EENS7_IS6_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIN5clang7CodeGen13BaseSubobjectEyNS_12DenseMapInfoIS3_EENS4_IyEEE6insertERKSt4pairIS3_yE", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIN5clang7CodeGen13BaseSubobjectEyNS_12DenseMapInfoIS3_EENS4_IyEEE16InsertIntoBucketERKS3_RKyPSt4pairIS3_yE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::CodeGen::BaseSubobject const&, unsigned long long const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIN5clang7CodeGen13BaseSubobjectEyNS_12DenseMapInfoIS3_EENS4_IyEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + + // {"_ZNK4llvm8DenseMapISt4pairIPKN5clang13CXXRecordDeclES5_ExNS_12DenseMapInfoIS6_EENS7_IxEEE15LookupBucketForERKS6_RPS1_IS6_xE", + // "llvm::DenseMap, long long, llvm::DenseMapInfo>, llvm::DenseMapInfo>::LookupBucketFor(std::pair const&, std::pair, long long>*&) const"}, + // "llvm::DenseMap, long long, llvm::DenseMapInfo>, llvm::DenseMapInfo>::LookupBucketFor(std::pair const&, std::pair*&, long long>) const" was returned + + + // {"_ZNK4llvm8DenseMapISt4pairIPKN5clang13CXXRecordDeclENS2_7CodeGen13BaseSubobjectEEyNS_12DenseMapInfoIS8_EENS9_IyEEE15LookupBucketForERKS8_RPS1_IS8_yE", + // "llvm::DenseMap, unsigned long long, llvm::DenseMapInfo>, llvm::DenseMapInfo>::LookupBucketFor(std::pair const&, std::pair, unsigned long long>*&) const"}, + // "llvm::DenseMap, unsigned long long, llvm::DenseMapInfo>, llvm::DenseMapInfo>::LookupBucketFor(std::pair const&, std::pair*&, unsigned long long>) const" was returned + + + // {"_ZN4llvm8DenseMapISt4pairIPKN5clang13CXXRecordDeclENS2_7CodeGen13BaseSubobjectEEyNS_12DenseMapInfoIS8_EENS9_IyEEE16InsertIntoBucketERKS8_RKyPS1_IS8_yE", + // "llvm::DenseMap, unsigned long long, llvm::DenseMapInfo>, llvm::DenseMapInfo>::InsertIntoBucket(std::pair const&, unsigned long long const&, std::pair, unsigned long long>*)"}, + // "llvm::DenseMap, unsigned long long, llvm::DenseMapInfo>, llvm::DenseMapInfo>::InsertIntoBucket(std::pair const&, unsigned long long const&, std::pair*, unsigned long long>)" was returned + + {"_ZN4llvm8DenseMapISt4pairIPKN5clang13CXXRecordDeclENS2_7CodeGen13BaseSubobjectEEyNS_12DenseMapInfoIS8_EENS9_IyEEE4growEj", "llvm::DenseMap, unsigned long long, llvm::DenseMapInfo>, llvm::DenseMapInfo>::grow(unsigned int)"}, + + // {"_ZSt16__introsort_loopIPSt4pairIyN5clang9ThunkInfoEElEvT_S5_T0_", + // "void std::__introsort_loop*, long>(std::pair*, std::pair*, long)"}, + // "void std::__introsort_loop*, long>(unsigned long long, unsigned long long, clang::ThunkInfo)" was returned + + + // {"_ZSt22__final_insertion_sortIPSt4pairIyN5clang9ThunkInfoEEEvT_S5_", + // "void std::__final_insertion_sort*>(std::pair*, std::pair*)"}, + // "void std::__final_insertion_sort*>(unsigned long long, unsigned long long)" was returned + + + // {"_ZSt16__insertion_sortIPSt4pairIyN5clang9ThunkInfoEEEvT_S5_", + // "void std::__insertion_sort*>(std::pair*, std::pair*)"}, + // "void std::__insertion_sort*>(unsigned long long, unsigned long long)" was returned + + + // {"_ZSt21__unguarded_partitionIPSt4pairIyN5clang9ThunkInfoEES3_ET_S5_S5_T0_", + // "std::pair* std::__unguarded_partition*, std::pair>(std::pair*, std::pair*, std::pair)"}, + // "unsigned long long std::__unguarded_partition*, std::pair>(unsigned long long, unsigned long long, clang::ThunkInfo)" was returned + + + // {"_ZSt8__medianISt4pairIyN5clang9ThunkInfoEEERKT_S6_S6_S6_", + // "std::pair const& std::__median>(std::pair const&, std::pair const&, std::pair const&)"}, + // "unsigned long long const& std::__median>(unsigned long long const&, unsigned long long const&, unsigned long long const&)" was returned + + + // {"_ZSt13__heap_selectIPSt4pairIyN5clang9ThunkInfoEEEvT_S5_S5_", + // "void std::__heap_select*>(std::pair*, std::pair*, std::pair*)"}, + // "void std::__heap_select*>(unsigned long long, unsigned long long, unsigned long long)" was returned + + + // {"_ZSt13__adjust_heapIPSt4pairIyN5clang9ThunkInfoEElS3_EvT_T0_S6_T1_", + // "void std::__adjust_heap*, long, std::pair>(std::pair*, long, long, std::pair)"}, + // got error + + {"_ZN4llvm23SmallVectorTemplateBaseISt4pairIyN5clang9ThunkInfoEELb0EE4growEm", "llvm::SmallVectorTemplateBase, false>::grow(unsigned long)"}, + + // {"_ZN4llvm8DenseMapIPKN5clang13CXXRecordDeclENS_11SmallVectorISt4pairIyNS1_9ThunkInfoEELj1EEENS_12DenseMapInfoIS4_EENSA_IS9_EEE16FindAndConstructERKS4_", + // "llvm::DenseMap, 1u>, llvm::DenseMapInfo, llvm::DenseMapInfo, 1u>>>::FindAndConstruct(clang::CXXRecordDecl const* const&)"}, + // "llvm::DenseMap, 1>, llvm::DenseMapInfo, llvm::DenseMapInfo, 1>>>::FindAndConstruct(clang::CXXRecordDecl const* const&)" was returned + + + // {"_ZN4llvm8DenseMapIPKN5clang13CXXRecordDeclENS_11SmallVectorISt4pairIyNS1_9ThunkInfoEELj1EEENS_12DenseMapInfoIS4_EENSA_IS9_EEE16InsertIntoBucketERKS4_RKS9_PS6_IS4_S9_E", + // "llvm::DenseMap, 1u>, llvm::DenseMapInfo, llvm::DenseMapInfo, 1u>>>::InsertIntoBucket(clang::CXXRecordDecl const* const&, llvm::SmallVector, 1u> const&, std::pair, 1u>>*)"}, + // "llvm::DenseMap, 1>, llvm::DenseMapInfo, llvm::DenseMapInfo, 1>>>::InsertIntoBucket(clang::CXXRecordDecl const* const&, llvm::SmallVector, 1> const&, std::pair*, 1>>)" was returned + + + // {"_ZN4llvm8DenseMapIPKN5clang13CXXRecordDeclENS_11SmallVectorISt4pairIyNS1_9ThunkInfoEELj1EEENS_12DenseMapInfoIS4_EENSA_IS9_EEE4growEj", + // "llvm::DenseMap, 1u>, llvm::DenseMapInfo, llvm::DenseMapInfo, 1u>>>::grow(unsigned int)"}, + // "llvm::DenseMap, 1>, llvm::DenseMapInfo, llvm::DenseMapInfo, 1>>>::grow(unsigned int)" was returned + + {"_ZN4llvm15SmallVectorImplISt4pairIyN5clang9ThunkInfoEEEaSERKS5_", "llvm::SmallVectorImpl>::operator=(llvm::SmallVectorImpl> const&)"}, + + // {"_ZN4llvm8DenseMapIPKN5clang13CXXMethodDeclENS_11SmallVectorINS1_9ThunkInfoELj1EEENS_12DenseMapInfoIS4_EENS8_IS7_EEE6insertERKSt4pairIS4_S7_E", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::insert(std::pair> const&)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::insert(std::pair> const&)" was returned + + + // {"_ZN4llvm8DenseMapIPKN5clang13CXXMethodDeclENS_11SmallVectorINS1_9ThunkInfoELj1EEENS_12DenseMapInfoIS4_EENS8_IS7_EEE16InsertIntoBucketERKS4_RKS7_PSt4pairIS4_S7_E", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(clang::CXXMethodDecl const* const&, llvm::SmallVector const&, std::pair>*)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(clang::CXXMethodDecl const* const&, llvm::SmallVector const&, std::pair>*)" was returned + + + // {"_ZN4llvm8DenseMapIPKN5clang13CXXMethodDeclENS_11SmallVectorINS1_9ThunkInfoELj1EEENS_12DenseMapInfoIS4_EENS8_IS7_EEE4growEj", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)" was returned + + {"_ZN4llvm15SmallVectorImplIN5clang9ThunkInfoEEaSERKS3_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang9ThunkInfoELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZNSt6vectorIPKN5clang13CXXRecordDeclESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, clang::CXXRecordDecl const* const&)"}, + + // {"_ZN4llvm8DenseMapIPKN5clang13CXXRecordDeclENS_14PointerIntPairIPyLj1EbNS_21PointerLikeTypeTraitsIS6_EEEENS_12DenseMapInfoIS4_EENSA_IS9_EEE16InsertIntoBucketERKS4_RKS9_PSt4pairIS4_S9_E", + // "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::InsertIntoBucket(clang::CXXRecordDecl const* const&, llvm::PointerIntPair> const&, std::pair>>*)"}, + // "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::InsertIntoBucket(clang::CXXRecordDecl const* const&, llvm::PointerIntPair> const&, std::pair>>*)" was returned + + + // {"_ZN4llvm8DenseMapIPKN5clang13CXXRecordDeclENS_14PointerIntPairIPyLj1EbNS_21PointerLikeTypeTraitsIS6_EEEENS_12DenseMapInfoIS4_EENSA_IS9_EEE4growEj", + // "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::grow(unsigned int)"}, + // "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::grow(unsigned int)" was returned + + + // {"_ZN4llvm8DenseMapISt4pairIPKN5clang13CXXRecordDeclES5_ExNS_12DenseMapInfoIS6_EENS7_IxEEE16InsertIntoBucketERKS6_RKxPS1_IS6_xE", + // "llvm::DenseMap, long long, llvm::DenseMapInfo>, llvm::DenseMapInfo>::InsertIntoBucket(std::pair const&, long long const&, std::pair, long long>*)"}, + // "llvm::DenseMap, long long, llvm::DenseMapInfo>, llvm::DenseMapInfo>::InsertIntoBucket(std::pair const&, long long const&, std::pair*, long long>)" was returned + + {"_ZN4llvm8DenseMapISt4pairIPKN5clang13CXXRecordDeclES5_ExNS_12DenseMapInfoIS6_EENS7_IxEEE4growEj", "llvm::DenseMap, long long, llvm::DenseMapInfo>, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKN5clang13CXXRecordDeclEyNS_12DenseMapInfoIS4_EENS5_IyEEE16InsertIntoBucketERKS4_RKyPSt4pairIS4_yE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::CXXRecordDecl const* const&, unsigned long long const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang13CXXRecordDeclEyNS_12DenseMapInfoIS4_EENS5_IyEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIN5clang7CodeGen10GlobalDeclExNS_12DenseMapInfoIS3_EENS4_IxEEE16InsertIntoBucketERKS3_RKxPSt4pairIS3_xE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::CodeGen::GlobalDecl const&, long long const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIN5clang7CodeGen10GlobalDeclExNS_12DenseMapInfoIS3_EENS4_IxEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNSt8_Rb_treeIySt4pairIKyN5clang7CodeGen13BaseSubobjectEESt10_Select1stIS5_ESt4lessIyESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsPKN5clang13CXXMethodDeclEESt10_Select1stIS6_ESt4lessISsESaIS6_EE8_M_eraseEPSt13_Rb_tree_nodeIS6_E", + // "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + // "std::_Rb_tree, std::_Select1st, std::less, std::allocator>::_M_erase(std::_Rb_tree_node*)" was returned + + + // {"_ZSt16__introsort_loopIPN5clang9ThunkInfoElEvT_S3_T0_", + // "void std::__introsort_loop(clang::ThunkInfo*, clang::ThunkInfo*, long)"}, + // got error + + + // {"_ZSt22__final_insertion_sortIPN5clang9ThunkInfoEEvT_S3_", + // "void std::__final_insertion_sort(clang::ThunkInfo*, clang::ThunkInfo*)"}, + // got error + + + // {"_ZSt16__insertion_sortIPN5clang9ThunkInfoEEvT_S3_", + // "void std::__insertion_sort(clang::ThunkInfo*, clang::ThunkInfo*)"}, + // got error + + + // {"_ZSt21__unguarded_partitionIPN5clang9ThunkInfoES1_ET_S3_S3_T0_", + // "clang::ThunkInfo* std::__unguarded_partition(clang::ThunkInfo*, clang::ThunkInfo*, clang::ThunkInfo)"}, + // got error + + + // {"_ZSt8__medianIN5clang9ThunkInfoEERKT_S4_S4_S4_", + // "clang::ThunkInfo const& std::__median(clang::ThunkInfo const&, clang::ThunkInfo const&, clang::ThunkInfo const&)"}, + // got error + + + // {"_ZSt13__heap_selectIPN5clang9ThunkInfoEEvT_S3_S3_", + // "void std::__heap_select(clang::ThunkInfo*, clang::ThunkInfo*, clang::ThunkInfo*)"}, + // got error + + + // {"_ZSt13__adjust_heapIPN5clang9ThunkInfoElS1_EvT_T0_S4_T1_", + // "void std::__adjust_heap(clang::ThunkInfo*, long, long, clang::ThunkInfo)"}, + // got error + + + // {"_ZN4llvm8DenseMapIPKN5clang13CXXMethodDeclENS_11SmallVectorINS1_9ThunkInfoELj1EEENS_12DenseMapInfoIS4_EENS8_IS7_EEE16FindAndConstructERKS4_", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::FindAndConstruct(clang::CXXMethodDecl const* const&)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::FindAndConstruct(clang::CXXMethodDecl const* const&)" was returned + + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsPKN5clang13CXXMethodDeclEESt10_Select1stIS6_ESt4lessISsESaIS6_EE16_M_insert_uniqueERKS6_", + // "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + // "std::_Rb_tree, std::_Select1st, std::less, std::allocator>::_M_insert_unique(clang::CXXMethodDecl const* const&)" was returned + + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsPKN5clang13CXXMethodDeclEESt10_Select1stIS6_ESt4lessISsESaIS6_EE9_M_insertEPSt18_Rb_tree_node_baseSE_RKS6_", + // "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair const&)"}, + // "std::_Rb_tree, std::_Select1st, std::less, std::allocator>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base, clang::CXXMethodDecl const* const&)" was returned + + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsxESt10_Select1stIS2_ESt4lessISsESaIS2_EE8_M_eraseEPSt13_Rb_tree_nodeIS2_E", + // "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + // "std::_Rb_tree, std::_Select1st, std::less, std::allocator>::_M_erase(std::_Rb_tree_node*)" was returned + + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsxESt10_Select1stIS2_ESt4lessISsESaIS2_EE16_M_insert_uniqueERKS2_", + // "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + // "std::_Rb_tree, std::_Select1st, std::less, std::allocator>::_M_insert_unique(std::string const const&)" was returned + + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsxESt10_Select1stIS2_ESt4lessISsESaIS2_EE9_M_insertEPSt18_Rb_tree_node_baseSA_RKS2_", + // "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair const&)"}, + // "std::_Rb_tree, std::_Select1st, std::less, std::allocator>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base, std::string const const&)" was returned + + {"_ZNK5clang15ASTRecordLayout25getVBaseClassOffsetInBitsEPKNS_13CXXRecordDeclE", "clang::ASTRecordLayout::getVBaseClassOffsetInBits(clang::CXXRecordDecl const*) const"}, + + // {"_ZSt6__findIPN5clang9ThunkInfoES1_ET_S3_S3_RKT0_St26random_access_iterator_tag", + // "clang::ThunkInfo* std::__find(clang::ThunkInfo*, clang::ThunkInfo*, clang::ThunkInfo const&, std::random_access_iterator_tag)"}, + // got error + + {"_ZN4llvm8DenseMapIyN5clang9ThunkInfoENS_12DenseMapInfoIyEENS3_IS2_EEE16InsertIntoBucketERKyRKS2_PSt4pairIyS2_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(unsigned long long const&, clang::ThunkInfo const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIyN5clang9ThunkInfoENS_12DenseMapInfoIyEENS3_IS2_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKN5clang13CXXRecordDeclExNS_12DenseMapInfoIS4_EENS5_IxEEE8CopyFromERKS8_", "llvm::DenseMap, llvm::DenseMapInfo>::CopyFrom(llvm::DenseMap, llvm::DenseMapInfo> const&)"}, + {"_ZN4llvm15SmallVectorImplISt4pairIPKN5clang13CXXMethodDeclExEEaSERKS7_", "llvm::SmallVectorImpl>::operator=(llvm::SmallVectorImpl> const&)"}, + + // {"_ZNK4llvm8DenseMapISt4pairIPKN5clang13CXXRecordDeclEjEyNS_12DenseMapInfoIS6_EENS7_IyEEE15LookupBucketForERKS6_RPS1_IS6_yE", + // "llvm::DenseMap, unsigned long long, llvm::DenseMapInfo>, llvm::DenseMapInfo>::LookupBucketFor(std::pair const&, std::pair, unsigned long long>*&) const"}, + // "llvm::DenseMap, unsigned long long, llvm::DenseMapInfo>, llvm::DenseMapInfo>::LookupBucketFor(std::pair const&, std::pair*&, unsigned long long>) const" was returned + + + // {"_ZN4llvm8DenseMapISt4pairIPKN5clang13CXXRecordDeclEjEyNS_12DenseMapInfoIS6_EENS7_IyEEE16InsertIntoBucketERKS6_RKyPS1_IS6_yE", + // "llvm::DenseMap, unsigned long long, llvm::DenseMapInfo>, llvm::DenseMapInfo>::InsertIntoBucket(std::pair const&, unsigned long long const&, std::pair, unsigned long long>*)"}, + // "llvm::DenseMap, unsigned long long, llvm::DenseMapInfo>, llvm::DenseMapInfo>::InsertIntoBucket(std::pair const&, unsigned long long const&, std::pair*, unsigned long long>)" was returned + + {"_ZN4llvm8DenseMapISt4pairIPKN5clang13CXXRecordDeclEjEyNS_12DenseMapInfoIS6_EENS7_IyEEE4growEj", "llvm::DenseMap, unsigned long long, llvm::DenseMapInfo>, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE26CreateConstInBoundsGEP1_64EPNS_5ValueEyRKNS_5TwineE", "llvm::IRBuilder>::CreateConstInBoundsGEP1_64(llvm::Value*, unsigned long long, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE17CreateInBoundsGEPEPNS_5ValueES6_RKNS_5TwineE", "llvm::IRBuilder>::CreateInBoundsGEP(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm8DenseMapIPKN5clang13CXXRecordDeclExNS_12DenseMapInfoIS4_EENS5_IxEEE6insertERKSt4pairIS4_xE", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPKN5clang13CXXRecordDeclExNS_12DenseMapInfoIS4_EENS5_IxEEE16InsertIntoBucketERKS4_RKxPSt4pairIS4_xE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::CXXRecordDecl const* const&, long long const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang13CXXRecordDeclExNS_12DenseMapInfoIS4_EENS5_IxEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang15BackendConsumer21InlineAsmDiagHandler2ERKN4llvm12SMDiagnosticENS_14SourceLocationE", "clang::BackendConsumer::InlineAsmDiagHandler2(llvm::SMDiagnostic const&, clang::SourceLocation)"}, + {"_ZN5clang13CodeGenActionC1Ej", "clang::CodeGenAction::CodeGenAction(unsigned int)"}, + {"_ZN5clang13CodeGenActionC2Ej", "clang::CodeGenAction::CodeGenAction(unsigned int)"}, + {"_ZN5clang13CodeGenActionD0Ev", "clang::CodeGenAction::~CodeGenAction()"}, + {"_ZN5clang13CodeGenActionD1Ev", "clang::CodeGenAction::~CodeGenAction()"}, + {"_ZN5clang13CodeGenActionD2Ev", "clang::CodeGenAction::~CodeGenAction()"}, + {"_ZNK5clang13CodeGenAction12hasIRSupportEv", "clang::CodeGenAction::hasIRSupport() const"}, + {"_ZN5clang13CodeGenAction19EndSourceFileActionEv", "clang::CodeGenAction::EndSourceFileAction()"}, + {"_ZN5clang13CodeGenAction10takeModuleEv", "clang::CodeGenAction::takeModule()"}, + {"_ZN5clang13CodeGenAction17CreateASTConsumerERNS_16CompilerInstanceEN4llvm9StringRefE", "clang::CodeGenAction::CreateASTConsumer(clang::CompilerInstance&, llvm::StringRef)"}, + {"_Z15GetOutputStreamRN5clang16CompilerInstanceEN4llvm9StringRefENS_13BackendActionE", "GetOutputStream(clang::CompilerInstance&, llvm::StringRef, clang::BackendAction)"}, + {"_ZN5clang13CodeGenAction13ExecuteActionEv", "clang::CodeGenAction::ExecuteAction()"}, + {"_ZN5clang18EmitAssemblyActionC1Ev", "clang::EmitAssemblyAction::EmitAssemblyAction()"}, + {"_ZN5clang18EmitAssemblyActionC2Ev", "clang::EmitAssemblyAction::EmitAssemblyAction()"}, + {"_ZN5clang12EmitBCActionC1Ev", "clang::EmitBCAction::EmitBCAction()"}, + {"_ZN5clang12EmitBCActionC2Ev", "clang::EmitBCAction::EmitBCAction()"}, + {"_ZN5clang14EmitLLVMActionC1Ev", "clang::EmitLLVMAction::EmitLLVMAction()"}, + {"_ZN5clang14EmitLLVMActionC2Ev", "clang::EmitLLVMAction::EmitLLVMAction()"}, + {"_ZN5clang18EmitLLVMOnlyActionC1Ev", "clang::EmitLLVMOnlyAction::EmitLLVMOnlyAction()"}, + {"_ZN5clang18EmitLLVMOnlyActionC2Ev", "clang::EmitLLVMOnlyAction::EmitLLVMOnlyAction()"}, + {"_ZN5clang21EmitCodeGenOnlyActionC1Ev", "clang::EmitCodeGenOnlyAction::EmitCodeGenOnlyAction()"}, + {"_ZN5clang21EmitCodeGenOnlyActionC2Ev", "clang::EmitCodeGenOnlyAction::EmitCodeGenOnlyAction()"}, + {"_ZN5clang13EmitObjActionC1Ev", "clang::EmitObjAction::EmitObjAction()"}, + {"_ZN5clang13EmitObjActionC2Ev", "clang::EmitObjAction::EmitObjAction()"}, + {"_ZN4llvm7ParseIREPNS_12MemoryBufferERNS_12SMDiagnosticERNS_11LLVMContextE", "llvm::ParseIR(llvm::MemoryBuffer*, llvm::SMDiagnostic&, llvm::LLVMContext&)"}, + {"_ZN5clang13EmitObjActionD1Ev", "clang::EmitObjAction::~EmitObjAction()"}, + {"_ZN5clang13EmitObjActionD0Ev", "clang::EmitObjAction::~EmitObjAction()"}, + {"_ZN5clang21EmitCodeGenOnlyActionD1Ev", "clang::EmitCodeGenOnlyAction::~EmitCodeGenOnlyAction()"}, + {"_ZN5clang21EmitCodeGenOnlyActionD0Ev", "clang::EmitCodeGenOnlyAction::~EmitCodeGenOnlyAction()"}, + {"_ZN5clang18EmitLLVMOnlyActionD1Ev", "clang::EmitLLVMOnlyAction::~EmitLLVMOnlyAction()"}, + {"_ZN5clang18EmitLLVMOnlyActionD0Ev", "clang::EmitLLVMOnlyAction::~EmitLLVMOnlyAction()"}, + {"_ZN5clang14EmitLLVMActionD1Ev", "clang::EmitLLVMAction::~EmitLLVMAction()"}, + {"_ZN5clang14EmitLLVMActionD0Ev", "clang::EmitLLVMAction::~EmitLLVMAction()"}, + {"_ZN5clang12EmitBCActionD1Ev", "clang::EmitBCAction::~EmitBCAction()"}, + {"_ZN5clang12EmitBCActionD0Ev", "clang::EmitBCAction::~EmitBCAction()"}, + {"_ZN5clang18EmitAssemblyActionD1Ev", "clang::EmitAssemblyAction::~EmitAssemblyAction()"}, + {"_ZN5clang18EmitAssemblyActionD0Ev", "clang::EmitAssemblyAction::~EmitAssemblyAction()"}, + {"_ZN5clang15BackendConsumerD1Ev", "clang::BackendConsumer::~BackendConsumer()"}, + {"_ZN5clang15BackendConsumerD0Ev", "clang::BackendConsumer::~BackendConsumer()"}, + {"_ZN5clang15BackendConsumer10InitializeERNS_10ASTContextE", "clang::BackendConsumer::Initialize(clang::ASTContext&)"}, + {"_ZN5clang15BackendConsumer18HandleTopLevelDeclENS_12DeclGroupRefE", "clang::BackendConsumer::HandleTopLevelDecl(clang::DeclGroupRef)"}, + {"_ZN5clang15BackendConsumer21HandleTranslationUnitERNS_10ASTContextE", "clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&)"}, + {"_ZN5clang15BackendConsumer23HandleTagDeclDefinitionEPNS_7TagDeclE", "clang::BackendConsumer::HandleTagDeclDefinition(clang::TagDecl*)"}, + {"_ZN5clang15BackendConsumer27CompleteTentativeDefinitionEPNS_7VarDeclE", "clang::BackendConsumer::CompleteTentativeDefinition(clang::VarDecl*)"}, + {"_ZN5clang15BackendConsumer12HandleVTableEPNS_13CXXRecordDeclEb", "clang::BackendConsumer::HandleVTable(clang::CXXRecordDecl*, bool)"}, + {"_ZN5clang20PrettyStackTraceDeclD1Ev", "clang::PrettyStackTraceDecl::~PrettyStackTraceDecl()"}, + {"_ZN5clang20PrettyStackTraceDeclD0Ev", "clang::PrettyStackTraceDecl::~PrettyStackTraceDecl()"}, + {"_ZN5clang15BackendConsumer20InlineAsmDiagHandlerERKN4llvm12SMDiagnosticEPvj", "clang::BackendConsumer::InlineAsmDiagHandler(llvm::SMDiagnostic const&, void*, unsigned int)"}, + {"_ZN5clang7CodeGen15CodeGenFunctionC1ERNS0_13CodeGenModuleE", "clang::CodeGen::CodeGenFunction::CodeGenFunction(clang::CodeGen::CodeGenModule&)"}, + {"_ZN5clang7CodeGen15CodeGenFunctionC2ERNS0_13CodeGenModuleE", "clang::CodeGen::CodeGenFunction::CodeGenFunction(clang::CodeGen::CodeGenModule&)"}, + {"_ZNK5clang7CodeGen15CodeGenFunction10getContextEv", "clang::CodeGen::CodeGenFunction::getContext() const"}, + {"_ZN5clang7CodeGen15CodeGenFunction17ConvertTypeForMemENS_8QualTypeE", "clang::CodeGen::CodeGenFunction::ConvertTypeForMem(clang::QualType)"}, + {"_ZN5clang7CodeGen15CodeGenFunction11ConvertTypeENS_8QualTypeE", "clang::CodeGen::CodeGenFunction::ConvertType(clang::QualType)"}, + {"_ZN5clang7CodeGen15CodeGenFunction20hasAggregateLLVMTypeENS_8QualTypeE", "clang::CodeGen::CodeGenFunction::hasAggregateLLVMType(clang::QualType)"}, + {"_ZN5clang7CodeGen15CodeGenFunction15EmitReturnBlockEv", "clang::CodeGen::CodeGenFunction::EmitReturnBlock()"}, + {"_ZN5clang7CodeGen15CodeGenFunction14FinishFunctionENS_14SourceLocationE", "clang::CodeGen::CodeGenFunction::FinishFunction(clang::SourceLocation)"}, + {"_ZN5clang7CodeGen15CodeGenFunction27EmitFunctionInstrumentationEPKc", "clang::CodeGen::CodeGenFunction::EmitFunctionInstrumentation(char const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction24ShouldInstrumentFunctionEv", "clang::CodeGen::CodeGenFunction::ShouldInstrumentFunction()"}, + + // {"_ZN5clang7CodeGen15CodeGenFunction13StartFunctionENS0_10GlobalDeclENS_8QualTypeEPN4llvm8FunctionERKNS4_11SmallVectorISt4pairIPKNS_7VarDeclES3_ELj16EEENS_14SourceLocationE", + // "clang::CodeGen::CodeGenFunction::StartFunction(clang::CodeGen::GlobalDecl, clang::QualType, llvm::Function*, llvm::SmallVector, 16u> const&, clang::SourceLocation)"}, + // "clang::CodeGen::CodeGenFunction::StartFunction(clang::CodeGen::GlobalDecl, clang::QualType, llvm::Function*, llvm::SmallVector, 16> const&, clang::SourceLocation)" was returned + + {"_ZN5clang7CodeGen15CodeGenFunction11EmitVLASizeENS_8QualTypeE", "clang::CodeGen::CodeGenFunction::EmitVLASize(clang::QualType)"}, + + // {"_ZN5clang7CodeGen15CodeGenFunction16EmitFunctionBodyERN4llvm11SmallVectorISt4pairIPKNS_7VarDeclENS_8QualTypeEELj16EEE", + // "clang::CodeGen::CodeGenFunction::EmitFunctionBody(llvm::SmallVector, 16u>&)"}, + // "clang::CodeGen::CodeGenFunction::EmitFunctionBody(llvm::SmallVector, 16>&)" was returned + + {"_ZN5clang7CodeGen15CodeGenFunction12GenerateCodeENS0_10GlobalDeclEPN4llvm8FunctionE", "clang::CodeGen::CodeGenFunction::GenerateCode(clang::CodeGen::GlobalDecl, llvm::Function*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction13ContainsLabelEPKNS_4StmtEb", "clang::CodeGen::CodeGenFunction::ContainsLabel(clang::Stmt const*, bool)"}, + {"_ZN5clang7CodeGen15CodeGenFunction28ConstantFoldsToSimpleIntegerEPKNS_4ExprE", "clang::CodeGen::CodeGenFunction::ConstantFoldsToSimpleInteger(clang::Expr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction20EmitBranchOnBoolExprEPKNS_4ExprEPN4llvm10BasicBlockES7_", "clang::CodeGen::CodeGenFunction::EmitBranchOnBoolExpr(clang::Expr const*, llvm::BasicBlock*, llvm::BasicBlock*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction16ErrorUnsupportedEPKNS_4StmtEPKcb", "clang::CodeGen::CodeGenFunction::ErrorUnsupported(clang::Stmt const*, char const*, bool)"}, + {"_ZN5clang7CodeGen15CodeGenFunction22EmitNullInitializationEPN4llvm5ValueENS_8QualTypeE", "clang::CodeGen::CodeGenFunction::EmitNullInitialization(llvm::Value*, clang::QualType)"}, + {"_ZN5clang7CodeGen15CodeGenFunction10GetVLASizeEPKNS_17VariableArrayTypeE", "clang::CodeGen::CodeGenFunction::GetVLASize(clang::VariableArrayType const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction14GetAddrOfLabelEPKNS_9LabelStmtE", "clang::CodeGen::CodeGenFunction::GetAddrOfLabel(clang::LabelStmt const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction20GetIndirectGotoBlockEv", "clang::CodeGen::CodeGenFunction::GetIndirectGotoBlock()"}, + {"_ZN5clang7CodeGen15CodeGenFunction13EmitVAListRefEPKNS_4ExprE", "clang::CodeGen::CodeGenFunction::EmitVAListRef(clang::Expr const*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction23EmitDeclRefExprDbgValueEPKNS_11DeclRefExprEPN4llvm8ConstantE", "clang::CodeGen::CodeGenFunction::EmitDeclRefExprDbgValue(clang::DeclRefExpr const*, llvm::Constant*)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE9CreateMulEPNS_5ValueES6_RKNS_5TwineE", "llvm::IRBuilder>::CreateMul(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm8DenseMapIPKN5clang4ExprEPNS_5ValueENS_12DenseMapInfoIS4_EENS7_IS6_EEE16InsertIntoBucketERKS4_RKS6_PSt4pairIS4_S6_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::Expr const* const&, llvm::Value* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang4ExprEPNS_5ValueENS_12DenseMapInfoIS4_EENS7_IS6_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang7CodeGen13CodeGenModuleC1ERNS_10ASTContextERKNS_14CodeGenOptionsERN4llvm6ModuleERKNS7_10DataLayoutERNS_10DiagnosticE", "clang::CodeGen::CodeGenModule::CodeGenModule(clang::ASTContext&, clang::CodeGenOptions const&, llvm::Module&, llvm::DataLayout const&, clang::Diagnostic&)"}, + {"_ZN5clang7CodeGen13CodeGenModuleC2ERNS_10ASTContextERKNS_14CodeGenOptionsERN4llvm6ModuleERKNS7_10DataLayoutERNS_10DiagnosticE", "clang::CodeGen::CodeGenModule::CodeGenModule(clang::ASTContext&, clang::CodeGenOptions const&, llvm::Module&, llvm::DataLayout const&, clang::Diagnostic&)"}, + {"_ZN5clang7CodeGen13CodeGenModuleD1Ev", "clang::CodeGen::CodeGenModule::~CodeGenModule()"}, + {"_ZN5clang7CodeGen13CodeGenModuleD2Ev", "clang::CodeGen::CodeGenModule::~CodeGenModule()"}, + {"_ZN5clang7CodeGen13CodeGenModule17createObjCRuntimeEv", "clang::CodeGen::CodeGenModule::createObjCRuntime()"}, + {"_ZN5clang7CodeGen13CodeGenModule7ReleaseEv", "clang::CodeGen::CodeGenModule::Release()"}, + {"_ZN5clang7CodeGen13CodeGenModule12EmitDeferredEv", "clang::CodeGen::CodeGenModule::EmitDeferred()"}, + {"_ZN5clang7CodeGen13CodeGenModule13AddGlobalCtorEPN4llvm8FunctionEi", "clang::CodeGen::CodeGenModule::AddGlobalCtor(llvm::Function*, int)"}, + {"_ZN5clang7CodeGen13CodeGenModule12EmitCtorListERKSt6vectorISt4pairIPN4llvm8ConstantEiESaIS7_EEPKc", "clang::CodeGen::CodeGenModule::EmitCtorList(std::vector, std::allocator>> const&, char const*)"}, + {"_ZN5clang7CodeGen13CodeGenModule15EmitAnnotationsEv", "clang::CodeGen::CodeGenModule::EmitAnnotations()"}, + {"_ZN5clang7CodeGen13CodeGenModule12EmitLLVMUsedEv", "clang::CodeGen::CodeGenModule::EmitLLVMUsed()"}, + {"_ZN5clang7CodeGen13CodeGenModule16EmitDeclMetadataEv", "clang::CodeGen::CodeGenModule::EmitDeclMetadata()"}, + {"_ZN5clang7CodeGen13CodeGenModule11getTBAAInfoENS_8QualTypeE", "clang::CodeGen::CodeGenModule::getTBAAInfo(clang::QualType)"}, + {"_ZN5clang7CodeGen13CodeGenModule19DecorateInstructionEPN4llvm11InstructionEPNS2_6MDNodeE", "clang::CodeGen::CodeGenModule::DecorateInstruction(llvm::Instruction*, llvm::MDNode*)"}, + {"_ZNK5clang7CodeGen13CodeGenModule14isTargetDarwinEv", "clang::CodeGen::CodeGenModule::isTargetDarwin() const"}, + {"_ZN5clang7CodeGen13CodeGenModule16ErrorUnsupportedEPKNS_4StmtEPKcb", "clang::CodeGen::CodeGenModule::ErrorUnsupported(clang::Stmt const*, char const*, bool)"}, + {"_ZN5clang7CodeGen13CodeGenModule16ErrorUnsupportedEPKNS_4DeclEPKcb", "clang::CodeGen::CodeGenModule::ErrorUnsupported(clang::Decl const*, char const*, bool)"}, + {"_ZNK5clang7CodeGen13CodeGenModule19setGlobalVisibilityEPN4llvm11GlobalValueEPKNS_9NamedDeclE", "clang::CodeGen::CodeGenModule::setGlobalVisibility(llvm::GlobalValue*, clang::NamedDecl const*) const"}, + {"_ZNK5clang7CodeGen13CodeGenModule17setTypeVisibilityEPN4llvm11GlobalValueEPKNS_13CXXRecordDeclENS1_18TypeVisibilityKindE", "clang::CodeGen::CodeGenModule::setTypeVisibility(llvm::GlobalValue*, clang::CXXRecordDecl const*, clang::CodeGen::CodeGenModule::TypeVisibilityKind) const"}, + {"_ZN5clang7CodeGen13CodeGenModule14getMangledNameENS0_10GlobalDeclE", "clang::CodeGen::CodeGenModule::getMangledName(clang::CodeGen::GlobalDecl)"}, + {"_ZN5clang7CodeGen13CodeGenModule19getBlockMangledNameENS0_10GlobalDeclERNS_12MangleBufferEPKNS_9BlockDeclE", "clang::CodeGen::CodeGenModule::getBlockMangledName(clang::CodeGen::GlobalDecl, clang::MangleBuffer&, clang::BlockDecl const*)"}, + {"_ZN5clang7CodeGen13CodeGenModule14GetGlobalValueEN4llvm9StringRefE", "clang::CodeGen::CodeGenModule::GetGlobalValue(llvm::StringRef)"}, + {"_ZN5clang7CodeGen13CodeGenModule13AddGlobalDtorEPN4llvm8FunctionEi", "clang::CodeGen::CodeGenModule::AddGlobalDtor(llvm::Function*, int)"}, + {"_ZN5clang7CodeGen13CodeGenModule18getFunctionLinkageEPKNS_12FunctionDeclE", "clang::CodeGen::CodeGenModule::getFunctionLinkage(clang::FunctionDecl const*)"}, + {"_ZN5clang7CodeGen13CodeGenModule31SetFunctionDefinitionAttributesEPKNS_12FunctionDeclEPN4llvm11GlobalValueE", "clang::CodeGen::CodeGenModule::SetFunctionDefinitionAttributes(clang::FunctionDecl const*, llvm::GlobalValue*)"}, + {"_ZN5clang7CodeGen13CodeGenModule19SetCommonAttributesEPKNS_4DeclEPN4llvm11GlobalValueE", "clang::CodeGen::CodeGenModule::SetCommonAttributes(clang::Decl const*, llvm::GlobalValue*)"}, + {"_ZN5clang7CodeGen13CodeGenModule25SetLLVMFunctionAttributesEPKNS_4DeclERKNS0_14CGFunctionInfoEPN4llvm8FunctionE", "clang::CodeGen::CodeGenModule::SetLLVMFunctionAttributes(clang::Decl const*, clang::CodeGen::CGFunctionInfo const&, llvm::Function*)"}, + {"_ZN5clang7CodeGen13CodeGenModule38SetLLVMFunctionAttributesForDefinitionEPKNS_4DeclEPN4llvm8FunctionE", "clang::CodeGen::CodeGenModule::SetLLVMFunctionAttributesForDefinition(clang::Decl const*, llvm::Function*)"}, + {"_ZN5clang7CodeGen13CodeGenModule13AddUsedGlobalEPN4llvm11GlobalValueE", "clang::CodeGen::CodeGenModule::AddUsedGlobal(llvm::GlobalValue*)"}, + {"_ZN5clang7CodeGen13CodeGenModule29SetInternalFunctionAttributesEPKNS_4DeclEPN4llvm8FunctionERKNS0_14CGFunctionInfoE", "clang::CodeGen::CodeGenModule::SetInternalFunctionAttributes(clang::Decl const*, llvm::Function*, clang::CodeGen::CGFunctionInfo const&)"}, + {"_ZN5clang7CodeGen13CodeGenModule21SetFunctionAttributesENS0_10GlobalDeclEPN4llvm8FunctionEb", "clang::CodeGen::CodeGenModule::SetFunctionAttributes(clang::CodeGen::GlobalDecl, llvm::Function*, bool)"}, + {"_ZN5clang7CodeGen13CodeGenModule16getVTableLinkageEPKNS_13CXXRecordDeclE", "clang::CodeGen::CodeGenModule::getVTableLinkage(clang::CXXRecordDecl const*)"}, + {"_ZN5clang7CodeGen13CodeGenModule20EmitGlobalDefinitionENS0_10GlobalDeclE", "clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::CodeGen::GlobalDecl)"}, + {"_ZN5clang7CodeGen13CodeGenModule16EmitAnnotateAttrEPN4llvm11GlobalValueEPKNS_12AnnotateAttrEj", "clang::CodeGen::CodeGenModule::EmitAnnotateAttr(llvm::GlobalValue*, clang::AnnotateAttr const*, unsigned int)"}, + {"_ZN5clang7CodeGen13CodeGenModule18MayDeferGenerationEPKNS_9ValueDeclE", "clang::CodeGen::CodeGenModule::MayDeferGeneration(clang::ValueDecl const*)"}, + {"_ZN5clang7CodeGen13CodeGenModule19GetWeakRefReferenceEPKNS_9ValueDeclE", "clang::CodeGen::CodeGenModule::GetWeakRefReference(clang::ValueDecl const*)"}, + {"_ZN5clang7CodeGen13CodeGenModule23GetOrCreateLLVMFunctionEN4llvm9StringRefEPKNS2_4TypeENS0_10GlobalDeclEb", "clang::CodeGen::CodeGenModule::GetOrCreateLLVMFunction(llvm::StringRef, llvm::Type const*, clang::CodeGen::GlobalDecl, bool)"}, + {"_ZN5clang7CodeGen13CodeGenModule21GetOrCreateLLVMGlobalEN4llvm9StringRefEPKNS2_11PointerTypeEPKNS_7VarDeclEb", "clang::CodeGen::CodeGenModule::GetOrCreateLLVMGlobal(llvm::StringRef, llvm::PointerType const*, clang::VarDecl const*, bool)"}, + {"_ZN5clang7CodeGen13CodeGenModule10EmitGlobalENS0_10GlobalDeclE", "clang::CodeGen::CodeGenModule::EmitGlobal(clang::CodeGen::GlobalDecl)"}, + {"_ZN5clang7CodeGen13CodeGenModule19EmitAliasDefinitionENS0_10GlobalDeclE", "clang::CodeGen::CodeGenModule::EmitAliasDefinition(clang::CodeGen::GlobalDecl)"}, + {"_ZN5clang7CodeGen13CodeGenModule28EmitGlobalFunctionDefinitionENS0_10GlobalDeclE", "clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::CodeGen::GlobalDecl)"}, + {"_ZN5clang7CodeGen13CodeGenModule23EmitGlobalVarDefinitionEPKNS_7VarDeclE", "clang::CodeGen::CodeGenModule::EmitGlobalVarDefinition(clang::VarDecl const*)"}, + {"_ZN5clang7CodeGen13CodeGenModule17GetAddrOfFunctionENS0_10GlobalDeclEPKN4llvm4TypeEb", "clang::CodeGen::CodeGenModule::GetAddrOfFunction(clang::CodeGen::GlobalDecl, llvm::Type const*, bool)"}, + {"_ZN5clang7CodeGen13CodeGenModule21CreateRuntimeFunctionEPKN4llvm12FunctionTypeENS2_9StringRefE", "clang::CodeGen::CodeGenModule::CreateRuntimeFunction(llvm::FunctionType const*, llvm::StringRef)"}, + {"_Z20DeclIsConstantGlobalRN5clang10ASTContextEPKNS_7VarDeclE", "DeclIsConstantGlobal(clang::ASTContext&, clang::VarDecl const*)"}, + {"_ZN5clang7CodeGen13CodeGenModule33CreateOrReplaceCXXRuntimeVariableEN4llvm9StringRefEPKNS2_4TypeENS2_11GlobalValue12LinkageTypesE", "clang::CodeGen::CodeGenModule::CreateOrReplaceCXXRuntimeVariable(llvm::StringRef, llvm::Type const*, llvm::GlobalValue::LinkageTypes)"}, + {"_ZN5clang7CodeGen13CodeGenModule18GetAddrOfGlobalVarEPKNS_7VarDeclEPKN4llvm4TypeE", "clang::CodeGen::CodeGenModule::GetAddrOfGlobalVar(clang::VarDecl const*, llvm::Type const*)"}, + {"_ZN5clang7CodeGen13CodeGenModule21CreateRuntimeVariableEPKN4llvm4TypeENS2_9StringRefE", "clang::CodeGen::CodeGenModule::CreateRuntimeVariable(llvm::Type const*, llvm::StringRef)"}, + {"_ZN5clang7CodeGen13CodeGenModule23EmitTentativeDefinitionEPKNS_7VarDeclE", "clang::CodeGen::CodeGenModule::EmitTentativeDefinition(clang::VarDecl const*)"}, + {"_ZN5clang7CodeGen13CodeGenModule10EmitVTableEPNS_13CXXRecordDeclEb", "clang::CodeGen::CodeGenModule::EmitVTable(clang::CXXRecordDecl*, bool)"}, + {"_ZNK5clang7CodeGen13CodeGenModule22GetTargetTypeStoreSizeEPKN4llvm4TypeE", "clang::CodeGen::CodeGenModule::GetTargetTypeStoreSize(llvm::Type const*) const"}, + {"_ZN5clang7CodeGen13CodeGenModule27GetLLVMLinkageVarDefinitionEPKNS_7VarDeclEPN4llvm14GlobalVariableE", "clang::CodeGen::CodeGenModule::GetLLVMLinkageVarDefinition(clang::VarDecl const*, llvm::GlobalVariable*)"}, + {"_ZN5clang7CodeGen13CodeGenModule21getBuiltinLibFunctionEPKNS_12FunctionDeclEj", "clang::CodeGen::CodeGenModule::getBuiltinLibFunction(clang::FunctionDecl const*, unsigned int)"}, + {"_ZN5clang7CodeGen13CodeGenModule12getIntrinsicEjPPKN4llvm4TypeEj", "clang::CodeGen::CodeGenModule::getIntrinsic(unsigned int, llvm::Type const**, unsigned int)"}, + {"_ZN5clang7CodeGen13CodeGenModule25GetAddrOfConstantCFStringEPKNS_13StringLiteralE", "clang::CodeGen::CodeGenModule::GetAddrOfConstantCFString(clang::StringLiteral const*)"}, + {"_Z24GetConstantCFStringEntryRN4llvm9StringMapIPNS_8ConstantENS_15MallocAllocatorEEEPKN5clang13StringLiteralEbRbRj", "GetConstantCFStringEntry(llvm::StringMap&, clang::StringLiteral const*, bool, bool&, unsigned int&)"}, + {"_ZN5clang7CodeGen13CodeGenModule23GetAddrOfConstantStringEPKNS_13StringLiteralE", "clang::CodeGen::CodeGenModule::GetAddrOfConstantString(clang::StringLiteral const*)"}, + {"_ZN5clang7CodeGen13CodeGenModule25GetStringForStringLiteralEPKNS_13StringLiteralE", "clang::CodeGen::CodeGenModule::GetStringForStringLiteral(clang::StringLiteral const*)"}, + {"_ZN5clang7CodeGen13CodeGenModule34GetAddrOfConstantStringFromLiteralEPKNS_13StringLiteralE", "clang::CodeGen::CodeGenModule::GetAddrOfConstantStringFromLiteral(clang::StringLiteral const*)"}, + {"_ZN5clang7CodeGen13CodeGenModule23GetAddrOfConstantStringERKSsPKc", "clang::CodeGen::CodeGenModule::GetAddrOfConstantString(std::string const&, char const*)"}, + {"_ZN5clang7CodeGen13CodeGenModule37GetAddrOfConstantStringFromObjCEncodeEPKNS_14ObjCEncodeExprE", "clang::CodeGen::CodeGenModule::GetAddrOfConstantStringFromObjCEncode(clang::ObjCEncodeExpr const*)"}, + {"_ZN5clang7CodeGen13CodeGenModule24GetAddrOfConstantCStringERKSsPKc", "clang::CodeGen::CodeGenModule::GetAddrOfConstantCString(std::string const&, char const*)"}, + {"_Z21GenerateStringLiteralRKSsbRN5clang7CodeGen13CodeGenModuleEPKc", "GenerateStringLiteral(std::string const&, bool, clang::CodeGen::CodeGenModule&, char const*)"}, + {"_ZN5clang7CodeGen13CodeGenModule31EmitObjCPropertyImplementationsEPKNS_22ObjCImplementationDeclE", "clang::CodeGen::CodeGenModule::EmitObjCPropertyImplementations(clang::ObjCImplementationDecl const*)"}, + {"_ZN5clang7CodeGen13CodeGenModule27EmitObjCIvarInitializationsEPNS_22ObjCImplementationDeclE", "clang::CodeGen::CodeGenModule::EmitObjCIvarInitializations(clang::ObjCImplementationDecl*)"}, + {"_ZN5clang7CodeGen13CodeGenModule13EmitNamespaceEPKNS_13NamespaceDeclE", "clang::CodeGen::CodeGenModule::EmitNamespace(clang::NamespaceDecl const*)"}, + {"_ZN5clang7CodeGen13CodeGenModule16EmitTopLevelDeclEPNS_4DeclE", "clang::CodeGen::CodeGenModule::EmitTopLevelDecl(clang::Decl*)"}, + {"_ZN5clang7CodeGen13CodeGenModule15EmitLinkageSpecEPKNS_15LinkageSpecDeclE", "clang::CodeGen::CodeGenModule::EmitLinkageSpec(clang::LinkageSpecDecl const*)"}, + {"_Z22EmitGlobalDeclMetadataRN5clang7CodeGen13CodeGenModuleERPN4llvm11NamedMDNodeENS0_10GlobalDeclEPNS3_11GlobalValueE", "EmitGlobalDeclMetadata(clang::CodeGen::CodeGenModule&, llvm::NamedMDNode*&, clang::CodeGen::GlobalDecl, llvm::GlobalValue*)"}, + {"_ZN5clang7CodeGen15CodeGenFunction16EmitDeclMetadataEv", "clang::CodeGen::CodeGenFunction::EmitDeclMetadata()"}, + {"_ZN5clang7CodeGen13CodeGenModule21getBlockObjectDisposeEv", "clang::CodeGen::CodeGenModule::getBlockObjectDispose()"}, + {"_ZN5clang7CodeGen13CodeGenModule20getBlockObjectAssignEv", "clang::CodeGen::CodeGenModule::getBlockObjectAssign()"}, + {"_ZN5clang7CodeGen13CodeGenModule24getNSConcreteGlobalBlockEv", "clang::CodeGen::CodeGenModule::getNSConcreteGlobalBlock()"}, + {"_ZN5clang7CodeGen13CodeGenModule23getNSConcreteStackBlockEv", "clang::CodeGen::CodeGenModule::getNSConcreteStackBlock()"}, + {"_ZNK5clang4Decl7getAttrINS_11SectionAttrEEEPT_v", "clang::SectionAttr* clang::Decl::getAttr() const"}, + {"_ZNK5clang4Decl7getAttrINS_9AliasAttrEEEPT_v", "clang::AliasAttr* clang::Decl::getAttr() const"}, + {"_ZNK5clang4Decl7getAttrINS_12AnnotateAttrEEEPT_v", "clang::AnnotateAttr* clang::Decl::getAttr() const"}, + {"_ZNK5clang4Decl7getAttrINS_12NoCommonAttrEEEPT_v", "clang::NoCommonAttr* clang::Decl::getAttr() const"}, + {"_ZNK5clang4Decl7getAttrINS_10CommonAttrEEEPT_v", "clang::CommonAttr* clang::Decl::getAttr() const"}, + {"_ZNK5clang4Decl7getAttrINS_15ConstructorAttrEEEPT_v", "clang::ConstructorAttr* clang::Decl::getAttr() const"}, + {"_ZNK5clang4Decl7getAttrINS_14DestructorAttrEEEPT_v", "clang::DestructorAttr* clang::Decl::getAttr() const"}, + {"_ZN4llvm9StringMapIPNS_8ConstantENS_15MallocAllocatorEE16GetOrCreateValueIS2_EERNS_14StringMapEntryIS2_EENS_9StringRefET_", "llvm::StringMapEntry& llvm::StringMap::GetOrCreateValue(llvm::StringRef, llvm::Constant*)"}, + {"_ZN4llvm9StringMapIN5clang7CodeGen10GlobalDeclENS_15MallocAllocatorEE16GetOrCreateValueIS3_EERNS_14StringMapEntryIS3_EENS_9StringRefET_", "llvm::StringMapEntry& llvm::StringMap::GetOrCreateValue(llvm::StringRef, clang::CodeGen::GlobalDecl)"}, + {"_ZNSt6vectorIN5clang7CodeGen10GlobalDeclESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, clang::CodeGen::GlobalDecl const&)"}, + {"_ZN4llvm8DenseMapIPKN5clang4DeclEjNS_12DenseMapInfoIS4_EENS5_IjEEE16InsertIntoBucketERKS4_RKjPSt4pairIS4_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::Decl const* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang4DeclEjNS_12DenseMapInfoIS4_EENS5_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNSt6vectorISt4pairIPN4llvm8ConstantEiESaIS4_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS4_S6_EERKS4_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + {"_ZN4llvm8DenseMapIN5clang7CodeGen10GlobalDeclENS_9StringRefENS_12DenseMapInfoIS3_EENS5_IS4_EEE16InsertIntoBucketERKS3_RKS4_PSt4pairIS3_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::CodeGen::GlobalDecl const&, llvm::StringRef const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIN5clang7CodeGen10GlobalDeclENS_9StringRefENS_12DenseMapInfoIS3_EENS5_IS4_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang7CodeGen15CodeGenFunctionD2Ev", "clang::CodeGen::CodeGenFunction::~CodeGenFunction()"}, + {"_ZN5clang7CodeGen14CodeGenVTablesD2Ev", "clang::CodeGen::CodeGenVTables::~CodeGenVTables()"}, + {"_ZN5clang7CodeGen14CodeGenVTablesC2ERNS0_13CodeGenModuleE", "clang::CodeGen::CodeGenVTables::CodeGenVTables(clang::CodeGen::CodeGenModule&)"}, + {"_ZN5clang7CodeGen11CodeGenTBAAC1ERNS_10ASTContextERN4llvm11LLVMContextERKNS_11LangOptionsERNS_13MangleContextE", "clang::CodeGen::CodeGenTBAA::CodeGenTBAA(clang::ASTContext&, llvm::LLVMContext&, clang::LangOptions const&, clang::MangleContext&)"}, + {"_ZN5clang7CodeGen11CodeGenTBAAC2ERNS_10ASTContextERN4llvm11LLVMContextERKNS_11LangOptionsERNS_13MangleContextE", "clang::CodeGen::CodeGenTBAA::CodeGenTBAA(clang::ASTContext&, llvm::LLVMContext&, clang::LangOptions const&, clang::MangleContext&)"}, + {"_ZN5clang7CodeGen11CodeGenTBAAD1Ev", "clang::CodeGen::CodeGenTBAA::~CodeGenTBAA()"}, + {"_ZN5clang7CodeGen11CodeGenTBAAD2Ev", "clang::CodeGen::CodeGenTBAA::~CodeGenTBAA()"}, + {"_ZN5clang7CodeGen11CodeGenTBAA7getRootEv", "clang::CodeGen::CodeGenTBAA::getRoot()"}, + {"_ZN5clang7CodeGen11CodeGenTBAA23getTBAAInfoForNamedTypeEN4llvm9StringRefEPNS2_6MDNodeEb", "clang::CodeGen::CodeGenTBAA::getTBAAInfoForNamedType(llvm::StringRef, llvm::MDNode*, bool)"}, + {"_ZN5clang7CodeGen11CodeGenTBAA7getCharEv", "clang::CodeGen::CodeGenTBAA::getChar()"}, + {"_ZN5clang7CodeGen11CodeGenTBAA11getTBAAInfoENS_8QualTypeE", "clang::CodeGen::CodeGenTBAA::getTBAAInfo(clang::QualType)"}, + {"_ZN4llvm8DenseMapIPKN5clang4TypeEPNS_6MDNodeENS_12DenseMapInfoIS4_EENS7_IS6_EEE16InsertIntoBucketERKS4_RKS6_PSt4pairIS4_S6_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::Type const* const&, llvm::MDNode* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang4TypeEPNS_6MDNodeENS_12DenseMapInfoIS4_EENS7_IS6_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang7CodeGen12CodeGenTypesC1ERNS_10ASTContextERN4llvm6ModuleERKNS4_10DataLayoutERKNS_7ABIInfoERNS0_8CGCXXABIE", "clang::CodeGen::CodeGenTypes::CodeGenTypes(clang::ASTContext&, llvm::Module&, llvm::DataLayout const&, clang::ABIInfo const&, clang::CodeGen::CGCXXABI&)"}, + {"_ZN5clang7CodeGen12CodeGenTypesC2ERNS_10ASTContextERN4llvm6ModuleERKNS4_10DataLayoutERKNS_7ABIInfoERNS0_8CGCXXABIE", "clang::CodeGen::CodeGenTypes::CodeGenTypes(clang::ASTContext&, llvm::Module&, llvm::DataLayout const&, clang::ABIInfo const&, clang::CodeGen::CGCXXABI&)"}, + {"_ZN5clang7CodeGen12CodeGenTypesD1Ev", "clang::CodeGen::CodeGenTypes::~CodeGenTypes()"}, + {"_ZN5clang7CodeGen12CodeGenTypesD2Ev", "clang::CodeGen::CodeGenTypes::~CodeGenTypes()"}, + {"_ZN5clang7CodeGen12CodeGenTypes26HandleLateResolvedPointersEv", "clang::CodeGen::CodeGenTypes::HandleLateResolvedPointers()"}, + {"_ZN5clang7CodeGen12CodeGenTypes11ConvertTypeENS_8QualTypeEb", "clang::CodeGen::CodeGenTypes::ConvertType(clang::QualType, bool)"}, + {"_ZN5clang7CodeGen12CodeGenTypes20ConvertTypeRecursiveENS_8QualTypeE", "clang::CodeGen::CodeGenTypes::ConvertTypeRecursive(clang::QualType)"}, + {"_ZN5clang7CodeGen12CodeGenTypes14ConvertNewTypeENS_8QualTypeE", "clang::CodeGen::CodeGenTypes::ConvertNewType(clang::QualType)"}, + {"_ZN5clang7CodeGen12CodeGenTypes17ConvertTypeForMemENS_8QualTypeEb", "clang::CodeGen::CodeGenTypes::ConvertTypeForMem(clang::QualType, bool)"}, + {"_ZN5clang7CodeGen12CodeGenTypes22VerifyFuncTypeCompleteEPKNS_4TypeE", "clang::CodeGen::CodeGenTypes::VerifyFuncTypeComplete(clang::Type const*)"}, + {"_ZN5clang7CodeGen12CodeGenTypes19UpdateCompletedTypeEPKNS_7TagDeclE", "clang::CodeGen::CodeGenTypes::UpdateCompletedType(clang::TagDecl const*)"}, + {"_ZN5clang7CodeGen12CodeGenTypes18ConvertTagDeclTypeEPKNS_7TagDeclE", "clang::CodeGen::CodeGenTypes::ConvertTagDeclType(clang::TagDecl const*)"}, + {"_ZN5clang7CodeGen12CodeGenTypes17getCGRecordLayoutEPKNS_10RecordDeclE", "clang::CodeGen::CodeGenTypes::getCGRecordLayout(clang::RecordDecl const*)"}, + {"_ZN5clang7CodeGen12CodeGenTypes19isZeroInitializableENS_8QualTypeE", "clang::CodeGen::CodeGenTypes::isZeroInitializable(clang::QualType)"}, + {"_ZN5clang7CodeGen12CodeGenTypes19isZeroInitializableEPKNS_13CXXRecordDeclE", "clang::CodeGen::CodeGenTypes::isZeroInitializable(clang::CXXRecordDecl const*)"}, + {"_ZN4llvm8DenseMapIPKN5clang4TypeENS_12PATypeHolderENS_12DenseMapInfoIS4_EENS6_IS5_EEED1Ev", "llvm::DenseMap, llvm::DenseMapInfo>::~DenseMap()"}, + {"_ZN4llvm10FoldingSetIN5clang7CodeGen14CGFunctionInfoEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm8DenseMapIPKN5clang4TypeENS_12PATypeHolderENS_12DenseMapInfoIS4_EENS6_IS5_EEE6insertERKSt4pairIS4_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPKN5clang4TypeEPNS1_7CodeGen14CGRecordLayoutENS_12DenseMapInfoIS4_EENS8_IS7_EEE16InsertIntoBucketERKS4_RKS7_PSt4pairIS4_S7_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::Type const* const&, clang::CodeGen::CGRecordLayout* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang4TypeEPNS1_7CodeGen14CGRecordLayoutENS_12DenseMapInfoIS4_EENS8_IS7_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKN5clang17ObjCInterfaceTypeEPKNS_4TypeENS_12DenseMapInfoIS4_EENS8_IS7_EEE16InsertIntoBucketERKS4_RKS7_PSt4pairIS4_S7_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::ObjCInterfaceType const* const&, llvm::Type const* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang17ObjCInterfaceTypeEPKNS_4TypeENS_12DenseMapInfoIS4_EENS8_IS7_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKN5clang4TypeENS_12PATypeHolderENS_12DenseMapInfoIS4_EENS6_IS5_EEE16InsertIntoBucketERKS4_RKS5_PSt4pairIS4_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::Type const* const&, llvm::PATypeHolder const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang4TypeENS_12PATypeHolderENS_12DenseMapInfoIS4_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm10FoldingSetIN5clang7CodeGen14CGFunctionInfoEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang7CodeGen14CGFunctionInfoEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang7CodeGen14CGFunctionInfoEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS8_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang7CodeGen14CGFunctionInfoEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN5clang7CodeGen14CGFunctionInfo7ProfileERN4llvm16FoldingSetNodeIDE", "clang::CodeGen::CGFunctionInfo::Profile(llvm::FoldingSetNodeID&)"}, + {"_ZN5clang7CodeGen14CGRecordLayoutD2Ev", "clang::CodeGen::CGRecordLayout::~CGRecordLayout()"}, + {"_ZN5clang7CodeGen19CreateItaniumCXXABIERNS0_13CodeGenModuleE", "clang::CodeGen::CreateItaniumCXXABI(clang::CodeGen::CodeGenModule&)"}, + {"_ZN5clang7CodeGen15CreateARMCXXABIERNS0_13CodeGenModuleE", "clang::CodeGen::CreateARMCXXABI(clang::CodeGen::CodeGenModule&)"}, + {"_ZN12_GLOBAL__N_19ARMCXXABID1Ev", "(anonymous namespace)::ARMCXXABI::~ARMCXXABI()"}, + {"_ZN12_GLOBAL__N_19ARMCXXABID0Ev", "(anonymous namespace)::ARMCXXABI::~ARMCXXABI()"}, + {"_ZN12_GLOBAL__N_113ItaniumCXXABI24ConvertMemberPointerTypeEPKN5clang17MemberPointerTypeE", "(anonymous namespace)::ItaniumCXXABI::ConvertMemberPointerType(clang::MemberPointerType const*)"}, + {"_ZN12_GLOBAL__N_113ItaniumCXXABI31EmitLoadOfMemberFunctionPointerERN5clang7CodeGen15CodeGenFunctionERPN4llvm5ValueES7_PKNS1_17MemberPointerTypeE", "(anonymous namespace)::ItaniumCXXABI::EmitLoadOfMemberFunctionPointer(clang::CodeGen::CodeGenFunction&, llvm::Value*&, llvm::Value*, clang::MemberPointerType const*)"}, + {"_ZN12_GLOBAL__N_113ItaniumCXXABI28EmitMemberDataPointerAddressERN5clang7CodeGen15CodeGenFunctionEPN4llvm5ValueES7_PKNS1_17MemberPointerTypeE", "(anonymous namespace)::ItaniumCXXABI::EmitMemberDataPointerAddress(clang::CodeGen::CodeGenFunction&, llvm::Value*, llvm::Value*, clang::MemberPointerType const*)"}, + {"_ZN12_GLOBAL__N_113ItaniumCXXABI27EmitMemberPointerConversionERN5clang7CodeGen15CodeGenFunctionEPKNS1_8CastExprEPN4llvm5ValueE", "(anonymous namespace)::ItaniumCXXABI::EmitMemberPointerConversion(clang::CodeGen::CodeGenFunction&, clang::CastExpr const*, llvm::Value*)"}, + {"_ZN12_GLOBAL__N_113ItaniumCXXABI27EmitMemberPointerConversionEPN4llvm8ConstantEPKN5clang8CastExprE", "(anonymous namespace)::ItaniumCXXABI::EmitMemberPointerConversion(llvm::Constant*, clang::CastExpr const*)"}, + {"_ZN12_GLOBAL__N_113ItaniumCXXABI19isZeroInitializableEPKN5clang17MemberPointerTypeE", "(anonymous namespace)::ItaniumCXXABI::isZeroInitializable(clang::MemberPointerType const*)"}, + {"_ZN12_GLOBAL__N_113ItaniumCXXABI21EmitNullMemberPointerEPKN5clang17MemberPointerTypeE", "(anonymous namespace)::ItaniumCXXABI::EmitNullMemberPointer(clang::MemberPointerType const*)"}, + {"_ZN12_GLOBAL__N_113ItaniumCXXABI17EmitMemberPointerEPKN5clang13CXXMethodDeclE", "(anonymous namespace)::ItaniumCXXABI::EmitMemberPointer(clang::CXXMethodDecl const*)"}, + {"_ZN12_GLOBAL__N_113ItaniumCXXABI21EmitMemberDataPointerEPKN5clang17MemberPointerTypeENS1_9CharUnitsE", "(anonymous namespace)::ItaniumCXXABI::EmitMemberDataPointer(clang::MemberPointerType const*, clang::CharUnits)"}, + {"_ZN12_GLOBAL__N_113ItaniumCXXABI27EmitMemberPointerComparisonERN5clang7CodeGen15CodeGenFunctionEPN4llvm5ValueES7_PKNS1_17MemberPointerTypeEb", "(anonymous namespace)::ItaniumCXXABI::EmitMemberPointerComparison(clang::CodeGen::CodeGenFunction&, llvm::Value*, llvm::Value*, clang::MemberPointerType const*, bool)"}, + {"_ZN12_GLOBAL__N_113ItaniumCXXABI26EmitMemberPointerIsNotNullERN5clang7CodeGen15CodeGenFunctionEPN4llvm5ValueEPKNS1_17MemberPointerTypeE", "(anonymous namespace)::ItaniumCXXABI::EmitMemberPointerIsNotNull(clang::CodeGen::CodeGenFunction&, llvm::Value*, clang::MemberPointerType const*)"}, + {"_ZN12_GLOBAL__N_19ARMCXXABI25BuildConstructorSignatureEPKN5clang18CXXConstructorDeclENS1_11CXXCtorTypeERNS1_7CanQualINS1_4TypeEEERN4llvm15SmallVectorImplIS8_EE", "(anonymous namespace)::ARMCXXABI::BuildConstructorSignature(clang::CXXConstructorDecl const*, clang::CXXCtorType, clang::CanQual&, llvm::SmallVectorImpl>&)"}, + {"_ZN12_GLOBAL__N_19ARMCXXABI24BuildDestructorSignatureEPKN5clang17CXXDestructorDeclENS1_11CXXDtorTypeERNS1_7CanQualINS1_4TypeEEERN4llvm15SmallVectorImplIS8_EE", "(anonymous namespace)::ARMCXXABI::BuildDestructorSignature(clang::CXXDestructorDecl const*, clang::CXXDtorType, clang::CanQual&, llvm::SmallVectorImpl>&)"}, + + // {"_ZN12_GLOBAL__N_19ARMCXXABI27BuildInstanceFunctionParamsERN5clang7CodeGen15CodeGenFunctionERNS1_8QualTypeERN4llvm11SmallVectorISt4pairIPKNS1_7VarDeclES5_ELj16EEE", + // "(anonymous namespace)::ARMCXXABI::BuildInstanceFunctionParams(clang::CodeGen::CodeGenFunction&, clang::QualType&, llvm::SmallVector, 16u>&)"}, + // "(anonymous namespace)::ARMCXXABI::BuildInstanceFunctionParams(clang::CodeGen::CodeGenFunction&, clang::QualType&, llvm::SmallVector, 16>&)" was returned + + {"_ZN12_GLOBAL__N_19ARMCXXABI26EmitInstanceFunctionPrologERN5clang7CodeGen15CodeGenFunctionE", "(anonymous namespace)::ARMCXXABI::EmitInstanceFunctionProlog(clang::CodeGen::CodeGenFunction&)"}, + {"_ZN12_GLOBAL__N_19ARMCXXABI19EmitReturnFromThunkERN5clang7CodeGen15CodeGenFunctionENS2_6RValueENS1_8QualTypeE", "(anonymous namespace)::ARMCXXABI::EmitReturnFromThunk(clang::CodeGen::CodeGenFunction&, clang::CodeGen::RValue, clang::QualType)"}, + {"_ZN12_GLOBAL__N_19ARMCXXABI18GetArrayCookieSizeEPKN5clang10CXXNewExprE", "(anonymous namespace)::ARMCXXABI::GetArrayCookieSize(clang::CXXNewExpr const*)"}, + {"_ZN12_GLOBAL__N_19ARMCXXABI21InitializeArrayCookieERN5clang7CodeGen15CodeGenFunctionEPN4llvm5ValueES7_PKNS1_10CXXNewExprENS1_8QualTypeE", "(anonymous namespace)::ARMCXXABI::InitializeArrayCookie(clang::CodeGen::CodeGenFunction&, llvm::Value*, llvm::Value*, clang::CXXNewExpr const*, clang::QualType)"}, + {"_ZN12_GLOBAL__N_19ARMCXXABI15ReadArrayCookieERN5clang7CodeGen15CodeGenFunctionEPN4llvm5ValueEPKNS1_13CXXDeleteExprENS1_8QualTypeERS7_SC_RNS1_9CharUnitsE", "(anonymous namespace)::ARMCXXABI::ReadArrayCookie(clang::CodeGen::CodeGenFunction&, llvm::Value*, clang::CXXDeleteExpr const*, clang::QualType, llvm::Value*&, llvm::Value*&, clang::CharUnits&)"}, + {"_ZN12_GLOBAL__N_113ItaniumCXXABI15EmitGuardedInitERN5clang7CodeGen15CodeGenFunctionERKNS1_7VarDeclEPN4llvm14GlobalVariableE", "(anonymous namespace)::ItaniumCXXABI::EmitGuardedInit(clang::CodeGen::CodeGenFunction&, clang::VarDecl const&, llvm::GlobalVariable*)"}, + {"_ZN12_GLOBAL__N_114CallGuardAbortD1Ev", "(anonymous namespace)::CallGuardAbort::~CallGuardAbort()"}, + {"_ZN12_GLOBAL__N_114CallGuardAbortD0Ev", "(anonymous namespace)::CallGuardAbort::~CallGuardAbort()"}, + {"_ZN12_GLOBAL__N_114CallGuardAbort4EmitERN5clang7CodeGen15CodeGenFunctionEb", "(anonymous namespace)::CallGuardAbort::Emit(clang::CodeGen::CodeGenFunction&, bool)"}, + {"_ZN12_GLOBAL__N_113ItaniumCXXABI26EmitInstanceFunctionPrologERN5clang7CodeGen15CodeGenFunctionE", "(anonymous namespace)::ItaniumCXXABI::EmitInstanceFunctionProlog(clang::CodeGen::CodeGenFunction&)"}, + + // {"_ZN12_GLOBAL__N_113ItaniumCXXABI27BuildInstanceFunctionParamsERN5clang7CodeGen15CodeGenFunctionERNS1_8QualTypeERN4llvm11SmallVectorISt4pairIPKNS1_7VarDeclES5_ELj16EEE", + // "(anonymous namespace)::ItaniumCXXABI::BuildInstanceFunctionParams(clang::CodeGen::CodeGenFunction&, clang::QualType&, llvm::SmallVector, 16u>&)"}, + // "(anonymous namespace)::ItaniumCXXABI::BuildInstanceFunctionParams(clang::CodeGen::CodeGenFunction&, clang::QualType&, llvm::SmallVector, 16>&)" was returned + + {"_ZN12_GLOBAL__N_113ItaniumCXXABI24BuildDestructorSignatureEPKN5clang17CXXDestructorDeclENS1_11CXXDtorTypeERNS1_7CanQualINS1_4TypeEEERN4llvm15SmallVectorImplIS8_EE", "(anonymous namespace)::ItaniumCXXABI::BuildDestructorSignature(clang::CXXDestructorDecl const*, clang::CXXDtorType, clang::CanQual&, llvm::SmallVectorImpl>&)"}, + {"_ZN12_GLOBAL__N_113ItaniumCXXABI25BuildConstructorSignatureEPKN5clang18CXXConstructorDeclENS1_11CXXCtorTypeERNS1_7CanQualINS1_4TypeEEERN4llvm15SmallVectorImplIS8_EE", "(anonymous namespace)::ItaniumCXXABI::BuildConstructorSignature(clang::CXXConstructorDecl const*, clang::CXXCtorType, clang::CanQual&, llvm::SmallVectorImpl>&)"}, + {"_ZN12_GLOBAL__N_113ItaniumCXXABID1Ev", "(anonymous namespace)::ItaniumCXXABI::~ItaniumCXXABI()"}, + {"_ZN12_GLOBAL__N_113ItaniumCXXABID0Ev", "(anonymous namespace)::ItaniumCXXABI::~ItaniumCXXABI()"}, + {"_ZN12_GLOBAL__N_113ItaniumCXXABI18GetArrayCookieSizeEPKN5clang10CXXNewExprE", "(anonymous namespace)::ItaniumCXXABI::GetArrayCookieSize(clang::CXXNewExpr const*)"}, + {"_ZN12_GLOBAL__N_113ItaniumCXXABI21InitializeArrayCookieERN5clang7CodeGen15CodeGenFunctionEPN4llvm5ValueES7_PKNS1_10CXXNewExprENS1_8QualTypeE", "(anonymous namespace)::ItaniumCXXABI::InitializeArrayCookie(clang::CodeGen::CodeGenFunction&, llvm::Value*, llvm::Value*, clang::CXXNewExpr const*, clang::QualType)"}, + {"_ZN12_GLOBAL__N_113ItaniumCXXABI15ReadArrayCookieERN5clang7CodeGen15CodeGenFunctionEPN4llvm5ValueEPKNS1_13CXXDeleteExprENS1_8QualTypeERS7_SC_RNS1_9CharUnitsE", "(anonymous namespace)::ItaniumCXXABI::ReadArrayCookie(clang::CodeGen::CodeGenFunction&, llvm::Value*, clang::CXXDeleteExpr const*, clang::QualType, llvm::Value*&, llvm::Value*&, clang::CharUnits&)"}, + {"_ZN5clang7CodeGen15CodeGenFunction17GetAddrOfLocalVarEPKNS_7VarDeclE", "clang::CodeGen::CodeGenFunction::GetAddrOfLocalVar(clang::VarDecl const*)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE8CreateOrEPNS_5ValueES6_RKNS_5TwineE", "llvm::IRBuilder>::CreateOr(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE11CreateBinOpENS_11Instruction9BinaryOpsEPNS_5ValueES8_RKNS_5TwineE", "llvm::IRBuilder>::CreateBinOp(llvm::Instruction::BinaryOps, llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE12CreateNSWSubEPNS_5ValueES6_RKNS_5TwineE", "llvm::IRBuilder>::CreateNSWSub(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE12CreateNSWAddEPNS_5ValueES6_RKNS_5TwineE", "llvm::IRBuilder>::CreateNSWAdd(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE12CreateSelectEPNS_5ValueES6_S6_RKNS_5TwineE", "llvm::IRBuilder>::CreateSelect(llvm::Value*, llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE17CreateInsertValueEPNS_5ValueES6_jRKNS_5TwineE", "llvm::IRBuilder>::CreateInsertValue(llvm::Value*, llvm::Value*, unsigned int, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE10CreateAShrEPNS_5ValueES6_RKNS_5TwineEb", "llvm::IRBuilder>::CreateAShr(llvm::Value*, llvm::Value*, llvm::Twine const&, bool)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE9CreateSubEPNS_5ValueES6_RKNS_5TwineE", "llvm::IRBuilder>::CreateSub(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN5clang7CodeGen21CreateMicrosoftCXXABIERNS0_13CodeGenModuleE", "clang::CodeGen::CreateMicrosoftCXXABI(clang::CodeGen::CodeGenModule&)"}, + {"_ZN12_GLOBAL__N_115MicrosoftCXXABID1Ev", "(anonymous namespace)::MicrosoftCXXABI::~MicrosoftCXXABI()"}, + {"_ZN12_GLOBAL__N_115MicrosoftCXXABID0Ev", "(anonymous namespace)::MicrosoftCXXABI::~MicrosoftCXXABI()"}, + {"_ZN12_GLOBAL__N_115MicrosoftCXXABI25BuildConstructorSignatureEPKN5clang18CXXConstructorDeclENS1_11CXXCtorTypeERNS1_7CanQualINS1_4TypeEEERN4llvm15SmallVectorImplIS8_EE", "(anonymous namespace)::MicrosoftCXXABI::BuildConstructorSignature(clang::CXXConstructorDecl const*, clang::CXXCtorType, clang::CanQual&, llvm::SmallVectorImpl>&)"}, + {"_ZN12_GLOBAL__N_115MicrosoftCXXABI24BuildDestructorSignatureEPKN5clang17CXXDestructorDeclENS1_11CXXDtorTypeERNS1_7CanQualINS1_4TypeEEERN4llvm15SmallVectorImplIS8_EE", "(anonymous namespace)::MicrosoftCXXABI::BuildDestructorSignature(clang::CXXDestructorDecl const*, clang::CXXDtorType, clang::CanQual&, llvm::SmallVectorImpl>&)"}, + + // {"_ZN12_GLOBAL__N_115MicrosoftCXXABI27BuildInstanceFunctionParamsERN5clang7CodeGen15CodeGenFunctionERNS1_8QualTypeERN4llvm11SmallVectorISt4pairIPKNS1_7VarDeclES5_ELj16EEE", + // "(anonymous namespace)::MicrosoftCXXABI::BuildInstanceFunctionParams(clang::CodeGen::CodeGenFunction&, clang::QualType&, llvm::SmallVector, 16u>&)"}, + // "(anonymous namespace)::MicrosoftCXXABI::BuildInstanceFunctionParams(clang::CodeGen::CodeGenFunction&, clang::QualType&, llvm::SmallVector, 16>&)" was returned + + {"_ZN12_GLOBAL__N_115MicrosoftCXXABI26EmitInstanceFunctionPrologERN5clang7CodeGen15CodeGenFunctionE", "(anonymous namespace)::MicrosoftCXXABI::EmitInstanceFunctionProlog(clang::CodeGen::CodeGenFunction&)"}, + {"_ZN5clang17CreateLLVMCodeGenERNS_10DiagnosticERKSsRKNS_14CodeGenOptionsERN4llvm11LLVMContextE", "clang::CreateLLVMCodeGen(clang::Diagnostic&, std::string const&, clang::CodeGenOptions const&, llvm::LLVMContext&)"}, + {"_ZN12_GLOBAL__N_117CodeGeneratorImplD1Ev", "(anonymous namespace)::CodeGeneratorImpl::~CodeGeneratorImpl()"}, + {"_ZN12_GLOBAL__N_117CodeGeneratorImplD0Ev", "(anonymous namespace)::CodeGeneratorImpl::~CodeGeneratorImpl()"}, + {"_ZN12_GLOBAL__N_117CodeGeneratorImpl10InitializeERN5clang10ASTContextE", "(anonymous namespace)::CodeGeneratorImpl::Initialize(clang::ASTContext&)"}, + {"_ZN12_GLOBAL__N_117CodeGeneratorImpl18HandleTopLevelDeclEN5clang12DeclGroupRefE", "(anonymous namespace)::CodeGeneratorImpl::HandleTopLevelDecl(clang::DeclGroupRef)"}, + {"_ZN12_GLOBAL__N_117CodeGeneratorImpl21HandleTranslationUnitERN5clang10ASTContextE", "(anonymous namespace)::CodeGeneratorImpl::HandleTranslationUnit(clang::ASTContext&)"}, + {"_ZN12_GLOBAL__N_117CodeGeneratorImpl23HandleTagDeclDefinitionEPN5clang7TagDeclE", "(anonymous namespace)::CodeGeneratorImpl::HandleTagDeclDefinition(clang::TagDecl*)"}, + {"_ZN12_GLOBAL__N_117CodeGeneratorImpl27CompleteTentativeDefinitionEPN5clang7VarDeclE", "(anonymous namespace)::CodeGeneratorImpl::CompleteTentativeDefinition(clang::VarDecl*)"}, + {"_ZN12_GLOBAL__N_117CodeGeneratorImpl12HandleVTableEPN5clang13CXXRecordDeclEb", "(anonymous namespace)::CodeGeneratorImpl::HandleVTable(clang::CXXRecordDecl*, bool)"}, + {"_ZN12_GLOBAL__N_117CodeGeneratorImpl9GetModuleEv", "(anonymous namespace)::CodeGeneratorImpl::GetModule()"}, + {"_ZN12_GLOBAL__N_117CodeGeneratorImpl13ReleaseModuleEv", "(anonymous namespace)::CodeGeneratorImpl::ReleaseModule()"}, + {"_ZN5clang13CodeGeneratorD1Ev", "clang::CodeGenerator::~CodeGenerator()"}, + {"_ZN5clang13CodeGeneratorD0Ev", "clang::CodeGenerator::~CodeGenerator()"}, + {"_ZN5clang7ABIInfoD0Ev", "clang::ABIInfo::~ABIInfo()"}, + {"_ZN5clang7ABIInfoD1Ev", "clang::ABIInfo::~ABIInfo()"}, + {"_ZN5clang7ABIInfoD2Ev", "clang::ABIInfo::~ABIInfo()"}, + {"_ZNK5clang7ABIInfo10getContextEv", "clang::ABIInfo::getContext() const"}, + {"_ZNK5clang7ABIInfo12getVMContextEv", "clang::ABIInfo::getVMContext() const"}, + {"_ZNK5clang7ABIInfo13getDataLayoutEv", "clang::ABIInfo::getDataLayout() const"}, + {"_ZNK5clang10ABIArgInfo4dumpEv", "clang::ABIArgInfo::dump() const"}, + {"_ZN5clang17TargetCodeGenInfoD0Ev", "clang::TargetCodeGenInfo::~TargetCodeGenInfo()"}, + {"_ZN5clang17TargetCodeGenInfoD1Ev", "clang::TargetCodeGenInfo::~TargetCodeGenInfo()"}, + {"_ZN5clang17TargetCodeGenInfoD2Ev", "clang::TargetCodeGenInfo::~TargetCodeGenInfo()"}, + {"_ZN5clang7CodeGen13CodeGenModule20getTargetCodeGenInfoEv", "clang::CodeGen::CodeGenModule::getTargetCodeGenInfo()"}, + {"_ZN12_GLOBAL__N_123X86_64TargetCodeGenInfoD1Ev", "(anonymous namespace)::X86_64TargetCodeGenInfo::~X86_64TargetCodeGenInfo()"}, + {"_ZN12_GLOBAL__N_123X86_64TargetCodeGenInfoD0Ev", "(anonymous namespace)::X86_64TargetCodeGenInfo::~X86_64TargetCodeGenInfo()"}, + {"_ZNK12_GLOBAL__N_123X86_64TargetCodeGenInfo22getDwarfEHStackPointerERN5clang7CodeGen13CodeGenModuleE", "(anonymous namespace)::X86_64TargetCodeGenInfo::getDwarfEHStackPointer(clang::CodeGen::CodeGenModule&) const"}, + {"_ZNK12_GLOBAL__N_123X86_64TargetCodeGenInfo23initDwarfEHRegSizeTableERN5clang7CodeGen15CodeGenFunctionEPN4llvm5ValueE", "(anonymous namespace)::X86_64TargetCodeGenInfo::initDwarfEHRegSizeTable(clang::CodeGen::CodeGenFunction&, llvm::Value*) const"}, + {"_ZN12_GLOBAL__N_113X86_64ABIInfoD1Ev", "(anonymous namespace)::X86_64ABIInfo::~X86_64ABIInfo()"}, + {"_ZN12_GLOBAL__N_113X86_64ABIInfoD0Ev", "(anonymous namespace)::X86_64ABIInfo::~X86_64ABIInfo()"}, + {"_ZNK12_GLOBAL__N_113X86_64ABIInfo11computeInfoERN5clang7CodeGen14CGFunctionInfoE", "(anonymous namespace)::X86_64ABIInfo::computeInfo(clang::CodeGen::CGFunctionInfo&) const"}, + {"_ZNK12_GLOBAL__N_113X86_64ABIInfo9EmitVAArgEPN4llvm5ValueEN5clang8QualTypeERNS4_7CodeGen15CodeGenFunctionE", "(anonymous namespace)::X86_64ABIInfo::EmitVAArg(llvm::Value*, clang::QualType, clang::CodeGen::CodeGenFunction&) const"}, + {"_ZNK12_GLOBAL__N_113X86_64ABIInfo20classifyArgumentTypeEN5clang8QualTypeERjS3_", "(anonymous namespace)::X86_64ABIInfo::classifyArgumentType(clang::QualType, unsigned int&, unsigned int&) const"}, + {"_Z19EmitVAArgFromMemoryPN4llvm5ValueEN5clang8QualTypeERNS2_7CodeGen15CodeGenFunctionE", "EmitVAArgFromMemory(llvm::Value*, clang::QualType, clang::CodeGen::CodeGenFunction&)"}, + {"_ZNK12_GLOBAL__N_113X86_64ABIInfo8classifyEN5clang8QualTypeEyRNS0_5ClassES4_", "(anonymous namespace)::X86_64ABIInfo::classify(clang::QualType, unsigned long long, (anonymous namespace)::X86_64ABIInfo::Class&, (anonymous namespace)::X86_64ABIInfo::Class&) const"}, + {"_ZNK12_GLOBAL__N_113X86_64ABIInfo17getIndirectResultEN5clang8QualTypeE", "(anonymous namespace)::X86_64ABIInfo::getIndirectResult(clang::QualType) const"}, + {"_ZNK12_GLOBAL__N_113X86_64ABIInfo22GetINTEGERTypeAtOffsetEPKN4llvm4TypeEjN5clang8QualTypeEj", "(anonymous namespace)::X86_64ABIInfo::GetINTEGERTypeAtOffset(llvm::Type const*, unsigned int, clang::QualType, unsigned int) const"}, + {"_ZNK12_GLOBAL__N_113X86_64ABIInfo18GetSSETypeAtOffsetEPKN4llvm4TypeEjN5clang8QualTypeEj", "(anonymous namespace)::X86_64ABIInfo::GetSSETypeAtOffset(llvm::Type const*, unsigned int, clang::QualType, unsigned int) const"}, + {"_ZNK12_GLOBAL__N_113X86_64ABIInfo19Get16ByteVectorTypeEN5clang8QualTypeE", "(anonymous namespace)::X86_64ABIInfo::Get16ByteVectorType(clang::QualType) const"}, + {"_Z26GetX86_64ByValArgumentPairPKN4llvm4TypeES2_RKNS_10DataLayoutE", "GetX86_64ByValArgumentPair(llvm::Type const*, llvm::Type const*, llvm::DataLayout const&)"}, + {"_Z21BitsContainNoUserDataN5clang8QualTypeEjjRNS_10ASTContextE", "BitsContainNoUserData(clang::QualType, unsigned int, unsigned int, clang::ASTContext&)"}, + {"_Z21ContainsFloatAtOffsetPKN4llvm4TypeEjRKNS_10DataLayoutE", "ContainsFloatAtOffset(llvm::Type const*, unsigned int, llvm::DataLayout const&)"}, + {"_ZN12_GLOBAL__N_126WinX86_64TargetCodeGenInfoD1Ev", "(anonymous namespace)::WinX86_64TargetCodeGenInfo::~WinX86_64TargetCodeGenInfo()"}, + {"_ZN12_GLOBAL__N_126WinX86_64TargetCodeGenInfoD0Ev", "(anonymous namespace)::WinX86_64TargetCodeGenInfo::~WinX86_64TargetCodeGenInfo()"}, + {"_ZNK12_GLOBAL__N_126WinX86_64TargetCodeGenInfo22getDwarfEHStackPointerERN5clang7CodeGen13CodeGenModuleE", "(anonymous namespace)::WinX86_64TargetCodeGenInfo::getDwarfEHStackPointer(clang::CodeGen::CodeGenModule&) const"}, + {"_ZNK12_GLOBAL__N_126WinX86_64TargetCodeGenInfo23initDwarfEHRegSizeTableERN5clang7CodeGen15CodeGenFunctionEPN4llvm5ValueE", "(anonymous namespace)::WinX86_64TargetCodeGenInfo::initDwarfEHRegSizeTable(clang::CodeGen::CodeGenFunction&, llvm::Value*) const"}, + {"_ZN12_GLOBAL__N_116WinX86_64ABIInfoD1Ev", "(anonymous namespace)::WinX86_64ABIInfo::~WinX86_64ABIInfo()"}, + {"_ZN12_GLOBAL__N_116WinX86_64ABIInfoD0Ev", "(anonymous namespace)::WinX86_64ABIInfo::~WinX86_64ABIInfo()"}, + {"_ZNK12_GLOBAL__N_116WinX86_64ABIInfo11computeInfoERN5clang7CodeGen14CGFunctionInfoE", "(anonymous namespace)::WinX86_64ABIInfo::computeInfo(clang::CodeGen::CGFunctionInfo&) const"}, + {"_ZNK12_GLOBAL__N_116WinX86_64ABIInfo9EmitVAArgEPN4llvm5ValueEN5clang8QualTypeERNS4_7CodeGen15CodeGenFunctionE", "(anonymous namespace)::WinX86_64ABIInfo::EmitVAArg(llvm::Value*, clang::QualType, clang::CodeGen::CodeGenFunction&) const"}, + {"_ZNK12_GLOBAL__N_116WinX86_64ABIInfo8classifyEN5clang8QualTypeE", "(anonymous namespace)::WinX86_64ABIInfo::classify(clang::QualType) const"}, + {"_ZN12_GLOBAL__N_123X86_32TargetCodeGenInfoD1Ev", "(anonymous namespace)::X86_32TargetCodeGenInfo::~X86_32TargetCodeGenInfo()"}, + {"_ZN12_GLOBAL__N_123X86_32TargetCodeGenInfoD0Ev", "(anonymous namespace)::X86_32TargetCodeGenInfo::~X86_32TargetCodeGenInfo()"}, + {"_ZNK12_GLOBAL__N_123X86_32TargetCodeGenInfo19SetTargetAttributesEPKN5clang4DeclEPN4llvm11GlobalValueERNS1_7CodeGen13CodeGenModuleE", "(anonymous namespace)::X86_32TargetCodeGenInfo::SetTargetAttributes(clang::Decl const*, llvm::GlobalValue*, clang::CodeGen::CodeGenModule&) const"}, + {"_ZNK12_GLOBAL__N_123X86_32TargetCodeGenInfo22getDwarfEHStackPointerERN5clang7CodeGen13CodeGenModuleE", "(anonymous namespace)::X86_32TargetCodeGenInfo::getDwarfEHStackPointer(clang::CodeGen::CodeGenModule&) const"}, + {"_ZNK12_GLOBAL__N_123X86_32TargetCodeGenInfo23initDwarfEHRegSizeTableERN5clang7CodeGen15CodeGenFunctionEPN4llvm5ValueE", "(anonymous namespace)::X86_32TargetCodeGenInfo::initDwarfEHRegSizeTable(clang::CodeGen::CodeGenFunction&, llvm::Value*) const"}, + {"_ZN12_GLOBAL__N_113X86_32ABIInfoD1Ev", "(anonymous namespace)::X86_32ABIInfo::~X86_32ABIInfo()"}, + {"_ZN12_GLOBAL__N_113X86_32ABIInfoD0Ev", "(anonymous namespace)::X86_32ABIInfo::~X86_32ABIInfo()"}, + {"_ZNK12_GLOBAL__N_113X86_32ABIInfo11computeInfoERN5clang7CodeGen14CGFunctionInfoE", "(anonymous namespace)::X86_32ABIInfo::computeInfo(clang::CodeGen::CGFunctionInfo&) const"}, + {"_ZNK12_GLOBAL__N_113X86_32ABIInfo9EmitVAArgEPN4llvm5ValueEN5clang8QualTypeERNS4_7CodeGen15CodeGenFunctionE", "(anonymous namespace)::X86_32ABIInfo::EmitVAArg(llvm::Value*, clang::QualType, clang::CodeGen::CodeGenFunction&) const"}, + {"_Z25isRecordWithSSEVectorTypeRN5clang10ASTContextENS_8QualTypeE", "isRecordWithSSEVectorType(clang::ASTContext&, clang::QualType)"}, + {"_Z21isSingleElementStructN5clang8QualTypeERNS_10ASTContextE", "isSingleElementStruct(clang::QualType, clang::ASTContext&)"}, + {"_ZN12_GLOBAL__N_113X86_32ABIInfo26shouldReturnTypeInRegisterEN5clang8QualTypeERNS1_10ASTContextE", "(anonymous namespace)::X86_32ABIInfo::shouldReturnTypeInRegister(clang::QualType, clang::ASTContext&)"}, + {"_Z12isEmptyFieldRN5clang10ASTContextEPKNS_9FieldDeclEb", "isEmptyField(clang::ASTContext&, clang::FieldDecl const*, bool)"}, + {"_Z13isEmptyRecordRN5clang10ASTContextENS_8QualTypeEb", "isEmptyRecord(clang::ASTContext&, clang::QualType, bool)"}, + {"_ZN12_GLOBAL__N_123MSP430TargetCodeGenInfoD1Ev", "(anonymous namespace)::MSP430TargetCodeGenInfo::~MSP430TargetCodeGenInfo()"}, + {"_ZN12_GLOBAL__N_123MSP430TargetCodeGenInfoD0Ev", "(anonymous namespace)::MSP430TargetCodeGenInfo::~MSP430TargetCodeGenInfo()"}, + {"_ZNK12_GLOBAL__N_123MSP430TargetCodeGenInfo19SetTargetAttributesEPKN5clang4DeclEPN4llvm11GlobalValueERNS1_7CodeGen13CodeGenModuleE", "(anonymous namespace)::MSP430TargetCodeGenInfo::SetTargetAttributes(clang::Decl const*, llvm::GlobalValue*, clang::CodeGen::CodeGenModule&) const"}, + {"_ZN12_GLOBAL__N_114DefaultABIInfoD1Ev", "(anonymous namespace)::DefaultABIInfo::~DefaultABIInfo()"}, + {"_ZN12_GLOBAL__N_114DefaultABIInfoD0Ev", "(anonymous namespace)::DefaultABIInfo::~DefaultABIInfo()"}, + {"_ZNK12_GLOBAL__N_114DefaultABIInfo11computeInfoERN5clang7CodeGen14CGFunctionInfoE", "(anonymous namespace)::DefaultABIInfo::computeInfo(clang::CodeGen::CGFunctionInfo&) const"}, + {"_ZNK12_GLOBAL__N_114DefaultABIInfo9EmitVAArgEPN4llvm5ValueEN5clang8QualTypeERNS4_7CodeGen15CodeGenFunctionE", "(anonymous namespace)::DefaultABIInfo::EmitVAArg(llvm::Value*, clang::QualType, clang::CodeGen::CodeGenFunction&) const"}, + {"_ZN12_GLOBAL__N_123MBlazeTargetCodeGenInfoD1Ev", "(anonymous namespace)::MBlazeTargetCodeGenInfo::~MBlazeTargetCodeGenInfo()"}, + {"_ZN12_GLOBAL__N_123MBlazeTargetCodeGenInfoD0Ev", "(anonymous namespace)::MBlazeTargetCodeGenInfo::~MBlazeTargetCodeGenInfo()"}, + {"_ZNK12_GLOBAL__N_123MBlazeTargetCodeGenInfo19SetTargetAttributesEPKN5clang4DeclEPN4llvm11GlobalValueERNS1_7CodeGen13CodeGenModuleE", "(anonymous namespace)::MBlazeTargetCodeGenInfo::SetTargetAttributes(clang::Decl const*, llvm::GlobalValue*, clang::CodeGen::CodeGenModule&) const"}, + {"_ZN12_GLOBAL__N_113MBlazeABIInfoD1Ev", "(anonymous namespace)::MBlazeABIInfo::~MBlazeABIInfo()"}, + {"_ZN12_GLOBAL__N_113MBlazeABIInfoD0Ev", "(anonymous namespace)::MBlazeABIInfo::~MBlazeABIInfo()"}, + {"_ZNK12_GLOBAL__N_113MBlazeABIInfo11computeInfoERN5clang7CodeGen14CGFunctionInfoE", "(anonymous namespace)::MBlazeABIInfo::computeInfo(clang::CodeGen::CGFunctionInfo&) const"}, + {"_ZNK12_GLOBAL__N_113MBlazeABIInfo9EmitVAArgEPN4llvm5ValueEN5clang8QualTypeERNS4_7CodeGen15CodeGenFunctionE", "(anonymous namespace)::MBlazeABIInfo::EmitVAArg(llvm::Value*, clang::QualType, clang::CodeGen::CodeGenFunction&) const"}, + {"_ZN12_GLOBAL__N_124SystemZTargetCodeGenInfoD1Ev", "(anonymous namespace)::SystemZTargetCodeGenInfo::~SystemZTargetCodeGenInfo()"}, + {"_ZN12_GLOBAL__N_124SystemZTargetCodeGenInfoD0Ev", "(anonymous namespace)::SystemZTargetCodeGenInfo::~SystemZTargetCodeGenInfo()"}, + {"_ZN12_GLOBAL__N_114SystemZABIInfoD1Ev", "(anonymous namespace)::SystemZABIInfo::~SystemZABIInfo()"}, + {"_ZN12_GLOBAL__N_114SystemZABIInfoD0Ev", "(anonymous namespace)::SystemZABIInfo::~SystemZABIInfo()"}, + {"_ZNK12_GLOBAL__N_114SystemZABIInfo11computeInfoERN5clang7CodeGen14CGFunctionInfoE", "(anonymous namespace)::SystemZABIInfo::computeInfo(clang::CodeGen::CGFunctionInfo&) const"}, + {"_ZNK12_GLOBAL__N_114SystemZABIInfo9EmitVAArgEPN4llvm5ValueEN5clang8QualTypeERNS4_7CodeGen15CodeGenFunctionE", "(anonymous namespace)::SystemZABIInfo::EmitVAArg(llvm::Value*, clang::QualType, clang::CodeGen::CodeGenFunction&) const"}, + {"_ZN12_GLOBAL__N_122PPC32TargetCodeGenInfoD1Ev", "(anonymous namespace)::PPC32TargetCodeGenInfo::~PPC32TargetCodeGenInfo()"}, + {"_ZN12_GLOBAL__N_122PPC32TargetCodeGenInfoD0Ev", "(anonymous namespace)::PPC32TargetCodeGenInfo::~PPC32TargetCodeGenInfo()"}, + {"_ZNK12_GLOBAL__N_122PPC32TargetCodeGenInfo22getDwarfEHStackPointerERN5clang7CodeGen13CodeGenModuleE", "(anonymous namespace)::PPC32TargetCodeGenInfo::getDwarfEHStackPointer(clang::CodeGen::CodeGenModule&) const"}, + {"_ZNK12_GLOBAL__N_122PPC32TargetCodeGenInfo23initDwarfEHRegSizeTableERN5clang7CodeGen15CodeGenFunctionEPN4llvm5ValueE", "(anonymous namespace)::PPC32TargetCodeGenInfo::initDwarfEHRegSizeTable(clang::CodeGen::CodeGenFunction&, llvm::Value*) const"}, + {"_ZN12_GLOBAL__N_124DefaultTargetCodeGenInfoD1Ev", "(anonymous namespace)::DefaultTargetCodeGenInfo::~DefaultTargetCodeGenInfo()"}, + {"_ZN12_GLOBAL__N_124DefaultTargetCodeGenInfoD0Ev", "(anonymous namespace)::DefaultTargetCodeGenInfo::~DefaultTargetCodeGenInfo()"}, + {"_ZN12_GLOBAL__N_120ARMTargetCodeGenInfoD1Ev", "(anonymous namespace)::ARMTargetCodeGenInfo::~ARMTargetCodeGenInfo()"}, + {"_ZN12_GLOBAL__N_120ARMTargetCodeGenInfoD0Ev", "(anonymous namespace)::ARMTargetCodeGenInfo::~ARMTargetCodeGenInfo()"}, + {"_ZNK12_GLOBAL__N_120ARMTargetCodeGenInfo22getDwarfEHStackPointerERN5clang7CodeGen13CodeGenModuleE", "(anonymous namespace)::ARMTargetCodeGenInfo::getDwarfEHStackPointer(clang::CodeGen::CodeGenModule&) const"}, + {"_ZN12_GLOBAL__N_110ARMABIInfoD1Ev", "(anonymous namespace)::ARMABIInfo::~ARMABIInfo()"}, + {"_ZN12_GLOBAL__N_110ARMABIInfoD0Ev", "(anonymous namespace)::ARMABIInfo::~ARMABIInfo()"}, + {"_ZNK12_GLOBAL__N_110ARMABIInfo11computeInfoERN5clang7CodeGen14CGFunctionInfoE", "(anonymous namespace)::ARMABIInfo::computeInfo(clang::CodeGen::CGFunctionInfo&) const"}, + {"_ZNK12_GLOBAL__N_110ARMABIInfo9EmitVAArgEPN4llvm5ValueEN5clang8QualTypeERNS4_7CodeGen15CodeGenFunctionE", "(anonymous namespace)::ARMABIInfo::EmitVAArg(llvm::Value*, clang::QualType, clang::CodeGen::CodeGenFunction&) const"}, + {"_Z17isIntegerLikeTypeN5clang8QualTypeERNS_10ASTContextERN4llvm11LLVMContextE", "isIntegerLikeType(clang::QualType, clang::ASTContext&, llvm::LLVMContext&)"}, + {"_ZN12_GLOBAL__N_121MIPSTargetCodeGenInfoD1Ev", "(anonymous namespace)::MIPSTargetCodeGenInfo::~MIPSTargetCodeGenInfo()"}, + {"_ZN12_GLOBAL__N_121MIPSTargetCodeGenInfoD0Ev", "(anonymous namespace)::MIPSTargetCodeGenInfo::~MIPSTargetCodeGenInfo()"}, + {"_ZNK12_GLOBAL__N_121MIPSTargetCodeGenInfo22getDwarfEHStackPointerERN5clang7CodeGen13CodeGenModuleE", "(anonymous namespace)::MIPSTargetCodeGenInfo::getDwarfEHStackPointer(clang::CodeGen::CodeGenModule&) const"}, + {"_ZNK12_GLOBAL__N_121MIPSTargetCodeGenInfo23initDwarfEHRegSizeTableERN5clang7CodeGen15CodeGenFunctionEPN4llvm5ValueE", "(anonymous namespace)::MIPSTargetCodeGenInfo::initDwarfEHRegSizeTable(clang::CodeGen::CodeGenFunction&, llvm::Value*) const"}, + {"_ZNK5clang17TargetCodeGenInfo19SetTargetAttributesEPKNS_4DeclEPN4llvm11GlobalValueERNS_7CodeGen13CodeGenModuleE", "clang::TargetCodeGenInfo::SetTargetAttributes(clang::Decl const*, llvm::GlobalValue*, clang::CodeGen::CodeGenModule&) const"}, + {"_ZNK5clang17TargetCodeGenInfo21extendPointerWithSExtEv", "clang::TargetCodeGenInfo::extendPointerWithSExt() const"}, + {"_ZNK5clang17TargetCodeGenInfo22getDwarfEHStackPointerERNS_7CodeGen13CodeGenModuleE", "clang::TargetCodeGenInfo::getDwarfEHStackPointer(clang::CodeGen::CodeGenModule&) const"}, + {"_ZNK5clang17TargetCodeGenInfo23initDwarfEHRegSizeTableERNS_7CodeGen15CodeGenFunctionEPN4llvm5ValueE", "clang::TargetCodeGenInfo::initDwarfEHRegSizeTable(clang::CodeGen::CodeGenFunction&, llvm::Value*) const"}, + {"_ZNK5clang17TargetCodeGenInfo19decodeReturnAddressERNS_7CodeGen15CodeGenFunctionEPN4llvm5ValueE", "clang::TargetCodeGenInfo::decodeReturnAddress(clang::CodeGen::CodeGenFunction&, llvm::Value*) const"}, + {"_ZNK5clang17TargetCodeGenInfo19encodeReturnAddressERNS_7CodeGen15CodeGenFunctionEPN4llvm5ValueE", "clang::TargetCodeGenInfo::encodeReturnAddress(clang::CodeGen::CodeGenFunction&, llvm::Value*) const"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE26CreateConstInBoundsGEP1_32EPNS_5ValueEjRKNS_5TwineE", "llvm::IRBuilder>::CreateConstInBoundsGEP1_32(llvm::Value*, unsigned int, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE11CreateStoreEPNS_5ValueES6_b", "llvm::IRBuilder>::CreateStore(llvm::Value*, llvm::Value*, bool)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE10CreateLoadEPNS_5ValueEPKc", "llvm::IRBuilder>::CreateLoad(llvm::Value*, char const*)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE9CreateAndEPNS_5ValueES6_RKNS_5TwineE", "llvm::IRBuilder>::CreateAnd(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE12CreateCondBrEPNS_5ValueEPNS_10BasicBlockES8_", "llvm::IRBuilder>::CreateCondBr(llvm::Value*, llvm::BasicBlock*, llvm::BasicBlock*)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE9CreateGEPEPNS_5ValueES6_RKNS_5TwineE", "llvm::IRBuilder>::CreateGEP(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE10CreateLoadEPNS_5ValueERKNS_5TwineE", "llvm::IRBuilder>::CreateLoad(llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE18CreateConstGEP1_32EPNS_5ValueEjRKNS_5TwineE", "llvm::IRBuilder>::CreateConstGEP1_32(llvm::Value*, unsigned int, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE9CreateAddEPNS_5ValueES6_RKNS_5TwineE", "llvm::IRBuilder>::CreateAdd(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE9CreatePHIEPKNS_4TypeERKNS_5TwineE", "llvm::IRBuilder>::CreatePHI(llvm::Type const*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE10CreateCastENS_11Instruction7CastOpsEPNS_5ValueEPKNS_4TypeERKNS_5TwineE", "llvm::IRBuilder>::CreateCast(llvm::Instruction::CastOps, llvm::Value*, llvm::Type const*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE10CreateICmpENS_7CmpInst9PredicateEPNS_5ValueES8_RKNS_5TwineE", "llvm::IRBuilder>::CreateICmp(llvm::CmpInst::Predicate, llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb0ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb0EEEE26CreateConstInBoundsGEP2_32EPNS_5ValueEjjRKNS_5TwineE", "llvm::IRBuilder>::CreateConstInBoundsGEP2_32(llvm::Value*, unsigned int, unsigned int, llvm::Twine const&)"}, + {"_ZNK5clang4Decl7getAttrINS_19MSP430InterruptAttrEEEPT_v", "clang::MSP430InterruptAttr* clang::Decl::getAttr() const"}, + {"_ZN5clang8ParseASTERNS_12PreprocessorEPNS_11ASTConsumerERNS_10ASTContextEbbPNS_20CodeCompleteConsumerE", "clang::ParseAST(clang::Preprocessor&, clang::ASTConsumer*, clang::ASTContext&, bool, bool, clang::CodeCompleteConsumer*)"}, + {"_ZN5clang8ParseASTERNS_4SemaEb", "clang::ParseAST(clang::Sema&, bool)"}, + {"_ZN5clang6Parser23ParseCXXInlineMethodDefENS_15AccessSpecifierERNS_10DeclaratorERKNS0_18ParsedTemplateInfoERKNS_14VirtSpecifiersE", "clang::Parser::ParseCXXInlineMethodDef(clang::AccessSpecifier, clang::Declarator&, clang::Parser::ParsedTemplateInfo const&, clang::VirtSpecifiers const&)"}, + {"_ZN5clang6Parser21LateParsedDeclarationD0Ev", "clang::Parser::LateParsedDeclaration::~LateParsedDeclaration()"}, + {"_ZN5clang6Parser21LateParsedDeclarationD1Ev", "clang::Parser::LateParsedDeclaration::~LateParsedDeclaration()"}, + {"_ZN5clang6Parser21LateParsedDeclarationD2Ev", "clang::Parser::LateParsedDeclaration::~LateParsedDeclaration()"}, + {"_ZN5clang6Parser21LateParsedDeclaration28ParseLexedMethodDeclarationsEv", "clang::Parser::LateParsedDeclaration::ParseLexedMethodDeclarations()"}, + {"_ZN5clang6Parser21LateParsedDeclaration20ParseLexedMethodDefsEv", "clang::Parser::LateParsedDeclaration::ParseLexedMethodDefs()"}, + {"_ZN5clang6Parser15LateParsedClassC1EPS0_PNS0_12ParsingClassE", "clang::Parser::LateParsedClass::LateParsedClass(clang::Parser*, clang::Parser::ParsingClass*)"}, + {"_ZN5clang6Parser15LateParsedClassC2EPS0_PNS0_12ParsingClassE", "clang::Parser::LateParsedClass::LateParsedClass(clang::Parser*, clang::Parser::ParsingClass*)"}, + {"_ZN5clang6Parser15LateParsedClassD0Ev", "clang::Parser::LateParsedClass::~LateParsedClass()"}, + {"_ZN5clang6Parser15LateParsedClassD1Ev", "clang::Parser::LateParsedClass::~LateParsedClass()"}, + {"_ZN5clang6Parser15LateParsedClassD2Ev", "clang::Parser::LateParsedClass::~LateParsedClass()"}, + {"_ZN5clang6Parser15LateParsedClass28ParseLexedMethodDeclarationsEv", "clang::Parser::LateParsedClass::ParseLexedMethodDeclarations()"}, + {"_ZN5clang6Parser28ParseLexedMethodDeclarationsERNS0_12ParsingClassE", "clang::Parser::ParseLexedMethodDeclarations(clang::Parser::ParsingClass&)"}, + {"_ZN5clang6Parser15LateParsedClass20ParseLexedMethodDefsEv", "clang::Parser::LateParsedClass::ParseLexedMethodDefs()"}, + {"_ZN5clang6Parser20ParseLexedMethodDefsERNS0_12ParsingClassE", "clang::Parser::ParseLexedMethodDefs(clang::Parser::ParsingClass&)"}, + {"_ZN5clang6Parser27LateParsedMethodDeclaration28ParseLexedMethodDeclarationsEv", "clang::Parser::LateParsedMethodDeclaration::ParseLexedMethodDeclarations()"}, + {"_ZN5clang6Parser27ParseLexedMethodDeclarationERNS0_27LateParsedMethodDeclarationE", "clang::Parser::ParseLexedMethodDeclaration(clang::Parser::LateParsedMethodDeclaration&)"}, + {"_ZN5clang6Parser11LexedMethod20ParseLexedMethodDefsEv", "clang::Parser::LexedMethod::ParseLexedMethodDefs()"}, + {"_ZN5clang6Parser19ParseLexedMethodDefERNS0_11LexedMethodE", "clang::Parser::ParseLexedMethodDef(clang::Parser::LexedMethod&)"}, + + // {"_ZN5clang6Parser20ConsumeAndStoreUntilENS_3tok9TokenKindES2_RN4llvm11SmallVectorINS_5TokenELj4EEEbb", + // "clang::Parser::ConsumeAndStoreUntil(clang::tok::TokenKind, clang::tok::TokenKind, llvm::SmallVector&, bool, bool)"}, + // "clang::Parser::ConsumeAndStoreUntil(clang::tok::TokenKind, clang::tok::TokenKind, llvm::SmallVector&, bool, bool)" was returned + + {"_ZN5clang6Parser11LexedMethodD1Ev", "clang::Parser::LexedMethod::~LexedMethod()"}, + {"_ZN5clang6Parser11LexedMethodD0Ev", "clang::Parser::LexedMethod::~LexedMethod()"}, + {"_ZN5clang6Parser27LateParsedMethodDeclarationD1Ev", "clang::Parser::LateParsedMethodDeclaration::~LateParsedMethodDeclaration()"}, + {"_ZN5clang6Parser27LateParsedMethodDeclarationD0Ev", "clang::Parser::LateParsedMethodDeclaration::~LateParsedMethodDeclaration()"}, + {"_ZN5clang6Parser13ParseTypeNameEPNS_11SourceRangeENS_10Declarator10TheContextE", "clang::Parser::ParseTypeName(clang::SourceRange*, clang::Declarator::TheContext)"}, + {"_ZN5clang6Parser27ParseSpecifierQualifierListERNS_8DeclSpecE", "clang::Parser::ParseSpecifierQualifierList(clang::DeclSpec&)"}, + {"_ZN5clang6Parser15ParseDeclaratorERNS_10DeclaratorE", "clang::Parser::ParseDeclarator(clang::Declarator&)"}, + {"_ZN5clang6Parser18ParseGNUAttributesERNS_16ParsedAttributesEPNS_14SourceLocationE", "clang::Parser::ParseGNUAttributes(clang::ParsedAttributes&, clang::SourceLocation*)"}, + {"_ZN5clang6Parser22isDeclarationSpecifierEb", "clang::Parser::isDeclarationSpecifier(bool)"}, + {"_ZN5clang6Parser22ParseMicrosoftDeclSpecERNS_16ParsedAttributesE", "clang::Parser::ParseMicrosoftDeclSpec(clang::ParsedAttributes&)"}, + {"_ZN5clang6Parser28ParseMicrosoftTypeAttributesERNS_16ParsedAttributesE", "clang::Parser::ParseMicrosoftTypeAttributes(clang::ParsedAttributes&)"}, + {"_ZN5clang6Parser26ParseBorlandTypeAttributesERNS_16ParsedAttributesE", "clang::Parser::ParseBorlandTypeAttributes(clang::ParsedAttributes&)"}, + {"_ZN5clang6Parser28DiagnoseProhibitedAttributesERNS0_25ParsedAttributesWithRangeE", "clang::Parser::DiagnoseProhibitedAttributes(clang::Parser::ParsedAttributesWithRange&)"}, + + // {"_ZN5clang6Parser16ParseDeclarationERNS_15ASTOwningVectorIPNS_4StmtELj32EEEjRNS_14SourceLocationERNS0_25ParsedAttributesWithRangeE", + // "clang::Parser::ParseDeclaration(clang::ASTOwningVector&, unsigned int, clang::SourceLocation&, clang::Parser::ParsedAttributesWithRange&)"}, + // "clang::Parser::ParseDeclaration(clang::ASTOwningVector&, unsigned int, clang::SourceLocation&, clang::Parser::ParsedAttributesWithRange&)" was returned + + + // {"_ZN5clang6Parser22ParseSimpleDeclarationERNS_15ASTOwningVectorIPNS_4StmtELj32EEEjRNS_14SourceLocationERNS_16ParsedAttributesEb", + // "clang::Parser::ParseSimpleDeclaration(clang::ASTOwningVector&, unsigned int, clang::SourceLocation&, clang::ParsedAttributes&, bool)"}, + // "clang::Parser::ParseSimpleDeclaration(clang::ASTOwningVector&, unsigned int, clang::SourceLocation&, clang::ParsedAttributes&, bool)" was returned + + {"_ZN5clang6Parser26ParseDeclarationSpecifiersERNS_8DeclSpecERKNS0_18ParsedTemplateInfoENS_15AccessSpecifierENS0_15DeclSpecContextE", "clang::Parser::ParseDeclarationSpecifiers(clang::DeclSpec&, clang::Parser::ParsedTemplateInfo const&, clang::AccessSpecifier, clang::Parser::DeclSpecContext)"}, + {"_ZN5clang6Parser39getDeclSpecContextFromDeclaratorContextEj", "clang::Parser::getDeclSpecContextFromDeclaratorContext(unsigned int)"}, + {"_ZN5clang6Parser14ParseDeclGroupERNS0_15ParsingDeclSpecEjbPNS_14SourceLocationE", "clang::Parser::ParseDeclGroup(clang::Parser::ParsingDeclSpec&, unsigned int, bool, clang::SourceLocation*)"}, + {"_ZN5clang6Parser31ParseDeclarationAfterDeclaratorERNS_10DeclaratorERKNS0_18ParsedTemplateInfoE", "clang::Parser::ParseDeclarationAfterDeclarator(clang::Declarator&, clang::Parser::ParsedTemplateInfo const&)"}, + {"_ZN5clang6Parser16ParseImplicitIntERNS_8DeclSpecEPNS_12CXXScopeSpecERKNS0_18ParsedTemplateInfoENS_15AccessSpecifierE", "clang::Parser::ParseImplicitInt(clang::DeclSpec&, clang::CXXScopeSpec*, clang::Parser::ParsedTemplateInfo const&, clang::AccessSpecifier)"}, + {"_ZN5clang6Parser18ParseEnumSpecifierENS_14SourceLocationERNS_8DeclSpecERKNS0_18ParsedTemplateInfoENS_15AccessSpecifierE", "clang::Parser::ParseEnumSpecifier(clang::SourceLocation, clang::DeclSpec&, clang::Parser::ParsedTemplateInfo const&, clang::AccessSpecifier)"}, + {"_ZN5clang6Parser23isConstructorDeclaratorEv", "clang::Parser::isConstructorDeclarator()"}, + {"_ZN5clang6Parser20ParseTypeofSpecifierERNS_8DeclSpecE", "clang::Parser::ParseTypeofSpecifier(clang::DeclSpec&)"}, + {"_ZN5clang6Parser26ParseOptionalTypeSpecifierERNS_8DeclSpecERbRPKcRjRKNS0_18ParsedTemplateInfoEb", "clang::Parser::ParseOptionalTypeSpecifier(clang::DeclSpec&, bool&, char const*&, unsigned int&, clang::Parser::ParsedTemplateInfo const&, bool)"}, + {"_ZN5clang6Parser22ParseStructDeclarationERNS_8DeclSpecERNS0_13FieldCallbackE", "clang::Parser::ParseStructDeclaration(clang::DeclSpec&, clang::Parser::FieldCallback&)"}, + {"_ZN5clang6Parser20ParseStructUnionBodyENS_14SourceLocationEjPNS_4DeclE", "clang::Parser::ParseStructUnionBody(clang::SourceLocation, unsigned int, clang::Decl*)"}, + {"_ZZN5clang6Parser20ParseStructUnionBodyENS_14SourceLocationEjPNS_4DeclEEN14CFieldCallbackD1Ev", "clang::Parser::ParseStructUnionBody(clang::SourceLocation, unsigned int, clang::Decl*)::CFieldCallback::~CFieldCallback()"}, + {"_ZN5clang6Parser13ParseEnumBodyENS_14SourceLocationEPNS_4DeclE", "clang::Parser::ParseEnumBody(clang::SourceLocation, clang::Decl*)"}, + {"_ZNK5clang6Parser15isTypeQualifierEv", "clang::Parser::isTypeQualifier() const"}, + {"_ZNK5clang6Parser24isKnownToBeTypeSpecifierERKNS_5TokenE", "clang::Parser::isKnownToBeTypeSpecifier(clang::Token const&) const"}, + {"_ZN5clang6Parser24isTypeSpecifierQualifierEv", "clang::Parser::isTypeSpecifierQualifier()"}, + {"_ZN5clang6Parser25ParseTypeQualifierListOptERNS_8DeclSpecEbb", "clang::Parser::ParseTypeQualifierListOpt(clang::DeclSpec&, bool, bool)"}, + {"_ZN5clang6Parser23ParseDeclaratorInternalERNS_10DeclaratorEMS0_FvS2_E", "clang::Parser::ParseDeclaratorInternal(clang::Declarator&, void (clang::Parser::*)(clang::Declarator&))"}, + {"_ZN5clang6Parser21ParseDirectDeclaratorERNS_10DeclaratorE", "clang::Parser::ParseDirectDeclarator(clang::Declarator&)"}, + {"_ZN5clang6Parser20ParseParenDeclaratorERNS_10DeclaratorE", "clang::Parser::ParseParenDeclarator(clang::Declarator&)"}, + {"_ZN5clang6Parser23ParseFunctionDeclaratorENS_14SourceLocationERNS_10DeclaratorERNS_16ParsedAttributesEb", "clang::Parser::ParseFunctionDeclarator(clang::SourceLocation, clang::Declarator&, clang::ParsedAttributes&, bool)"}, + {"_ZN5clang6Parser22ParseBracketDeclaratorERNS_10DeclaratorE", "clang::Parser::ParseBracketDeclarator(clang::Declarator&)"}, + {"_ZN5clang6Parser37ParseFunctionDeclaratorIdentifierListENS_14SourceLocationEPNS_14IdentifierInfoES1_RNS_10DeclaratorE", "clang::Parser::ParseFunctionDeclaratorIdentifierList(clang::SourceLocation, clang::IdentifierInfo*, clang::SourceLocation, clang::Declarator&)"}, + {"_ZN5clang6Parser30TryAltiVecVectorTokenOutOfLineEv", "clang::Parser::TryAltiVecVectorTokenOutOfLine()"}, + {"_ZN5clang6Parser24TryAltiVecTokenOutOfLineERNS_8DeclSpecENS_14SourceLocationERPKcRjRb", "clang::Parser::TryAltiVecTokenOutOfLine(clang::DeclSpec&, clang::SourceLocation, char const*&, unsigned int&, bool&)"}, + {"_ZZN5clang6Parser20ParseStructUnionBodyENS_14SourceLocationEjPNS_4DeclEEN14CFieldCallback6invokeERNS_15FieldDeclaratorE", "clang::Parser::ParseStructUnionBody(clang::SourceLocation, unsigned int, clang::Decl*)::CFieldCallback::invoke(clang::FieldDeclarator&)"}, + {"_ZZN5clang6Parser20ParseStructUnionBodyENS_14SourceLocationEjPNS_4DeclEEN14CFieldCallbackD0Ev", "clang::Parser::ParseStructUnionBody(clang::SourceLocation, unsigned int, clang::Decl*)::CFieldCallback::~CFieldCallback()"}, + + // {"_ZN4llvm15SmallVectorImplIPN5clang4DeclEE6insertIPS3_EES6_S6_T_S7_", + // "clang::Decl** llvm::SmallVectorImpl::insert(clang::Decl**, clang::Decl**, clang::Decl**)"}, + // got error + + {"_ZN5clang6Parser14ParseNamespaceEjRNS_14SourceLocationES1_", "clang::Parser::ParseNamespace(unsigned int, clang::SourceLocation&, clang::SourceLocation)"}, + {"_ZN5clang6Parser19ParseNamespaceAliasENS_14SourceLocationES1_PNS_14IdentifierInfoERS1_", "clang::Parser::ParseNamespaceAlias(clang::SourceLocation, clang::SourceLocation, clang::IdentifierInfo*, clang::SourceLocation&)"}, + {"_ZN5clang6Parser12ParseLinkageERNS0_15ParsingDeclSpecEj", "clang::Parser::ParseLinkage(clang::Parser::ParsingDeclSpec&, unsigned int)"}, + {"_ZN5clang6Parser32ParseUsingDirectiveOrDeclarationEjRKNS0_18ParsedTemplateInfoERNS_14SourceLocationERNS0_25ParsedAttributesWithRangeE", "clang::Parser::ParseUsingDirectiveOrDeclaration(unsigned int, clang::Parser::ParsedTemplateInfo const&, clang::SourceLocation&, clang::Parser::ParsedAttributesWithRange&)"}, + {"_ZN5clang6Parser19ParseUsingDirectiveEjNS_14SourceLocationERS1_RNS_16ParsedAttributesE", "clang::Parser::ParseUsingDirective(unsigned int, clang::SourceLocation, clang::SourceLocation&, clang::ParsedAttributes&)"}, + {"_ZN5clang6Parser21ParseUsingDeclarationEjRKNS0_18ParsedTemplateInfoENS_14SourceLocationERS4_NS_15AccessSpecifierE", "clang::Parser::ParseUsingDeclaration(unsigned int, clang::Parser::ParsedTemplateInfo const&, clang::SourceLocation, clang::SourceLocation&, clang::AccessSpecifier)"}, + {"_ZN5clang6Parser28ParseStaticAssertDeclarationERNS_14SourceLocationE", "clang::Parser::ParseStaticAssertDeclaration(clang::SourceLocation&)"}, + {"_ZN5clang6Parser22ParseDecltypeSpecifierERNS_8DeclSpecE", "clang::Parser::ParseDecltypeSpecifier(clang::DeclSpec&)"}, + {"_ZN5clang6Parser14ParseClassNameERNS_14SourceLocationEPNS_12CXXScopeSpecE", "clang::Parser::ParseClassName(clang::SourceLocation&, clang::CXXScopeSpec*)"}, + {"_ZN5clang6Parser19ParseClassSpecifierENS_3tok9TokenKindENS_14SourceLocationERNS_8DeclSpecERKNS0_18ParsedTemplateInfoENS_15AccessSpecifierEb", "clang::Parser::ParseClassSpecifier(clang::tok::TokenKind, clang::SourceLocation, clang::DeclSpec&, clang::Parser::ParsedTemplateInfo const&, clang::AccessSpecifier, bool)"}, + {"_ZNK5clang6Parser25isCXX0XClassVirtSpecifierEv", "clang::Parser::isCXX0XClassVirtSpecifier() const"}, + {"_ZN5clang6Parser27ParseCXXMemberSpecificationENS_14SourceLocationEjPNS_4DeclE", "clang::Parser::ParseCXXMemberSpecification(clang::SourceLocation, unsigned int, clang::Decl*)"}, + {"_ZN5clang6Parser15ParseBaseClauseEPNS_4DeclE", "clang::Parser::ParseBaseClause(clang::Decl*)"}, + {"_ZN5clang6Parser18ParseBaseSpecifierEPNS_4DeclE", "clang::Parser::ParseBaseSpecifier(clang::Decl*)"}, + {"_ZNK5clang6Parser27getAccessSpecifierIfPresentEv", "clang::Parser::getAccessSpecifierIfPresent() const"}, + {"_ZN5clang6Parser31HandleMemberFunctionDefaultArgsERNS_10DeclaratorEPNS_4DeclE", "clang::Parser::HandleMemberFunctionDefaultArgs(clang::Declarator&, clang::Decl*)"}, + {"_ZNK5clang6Parser20isCXX0XVirtSpecifierEv", "clang::Parser::isCXX0XVirtSpecifier() const"}, + {"_ZN5clang6Parser34ParseOptionalCXX0XVirtSpecifierSeqERNS_14VirtSpecifiersE", "clang::Parser::ParseOptionalCXX0XVirtSpecifierSeq(clang::VirtSpecifiers&)"}, + {"_ZN5clang6Parser39ParseOptionalCXX0XClassVirtSpecifierSeqERNS_19ClassVirtSpecifiersE", "clang::Parser::ParseOptionalCXX0XClassVirtSpecifierSeq(clang::ClassVirtSpecifiers&)"}, + {"_ZN5clang6Parser30ParseCXXClassMemberDeclarationENS_15AccessSpecifierERKNS0_18ParsedTemplateInfoEPNS0_21ParsingDeclRAIIObjectE", "clang::Parser::ParseCXXClassMemberDeclaration(clang::AccessSpecifier, clang::Parser::ParsedTemplateInfo const&, clang::Parser::ParsingDeclRAIIObject*)"}, + {"_ZN5clang6Parser27ParseConstructorInitializerEPNS_4DeclE", "clang::Parser::ParseConstructorInitializer(clang::Decl*)"}, + {"_ZN5clang6Parser19ParseMemInitializerEPNS_4DeclE", "clang::Parser::ParseMemInitializer(clang::Decl*)"}, + {"_ZN5clang6Parser27ParseExceptionSpecificationERNS_14SourceLocationERN4llvm15SmallVectorImplINS_9OpaquePtrINS_8QualTypeEEEEERNS4_INS_11SourceRangeEEERb", "clang::Parser::ParseExceptionSpecification(clang::SourceLocation&, llvm::SmallVectorImpl>&, llvm::SmallVectorImpl&, bool&)"}, + {"_ZN5clang6Parser23ParseTrailingReturnTypeEv", "clang::Parser::ParseTrailingReturnType()"}, + {"_ZN5clang6Parser16PushParsingClassEPNS_4DeclEb", "clang::Parser::PushParsingClass(clang::Decl*, bool)"}, + {"_ZN5clang6Parser23DeallocateParsedClassesEPNS0_12ParsingClassE", "clang::Parser::DeallocateParsedClasses(clang::Parser::ParsingClass*)"}, + {"_ZN5clang6Parser15PopParsingClassEv", "clang::Parser::PopParsingClass()"}, + {"_ZN5clang6Parser20ParseCXX0XAttributesERNS0_25ParsedAttributesWithRangeEPNS_14SourceLocationE", "clang::Parser::ParseCXX0XAttributes(clang::Parser::ParsedAttributesWithRange&, clang::SourceLocation*)"}, + {"_ZN5clang6Parser23ParseCXX0XAlignArgumentENS_14SourceLocationE", "clang::Parser::ParseCXX0XAlignArgument(clang::SourceLocation)"}, + {"_ZN5clang6Parser24ParseMicrosoftAttributesERNS_16ParsedAttributesEPNS_14SourceLocationE", "clang::Parser::ParseMicrosoftAttributes(clang::ParsedAttributes&, clang::SourceLocation*)"}, + {"_ZNSt5dequeIPN5clang6Parser12ParsingClassESaIS3_EE9push_backERKS3_", "std::deque>::push_back(clang::Parser::ParsingClass* const&)"}, + {"_ZNSt5dequeIPN5clang6Parser12ParsingClassESaIS3_EE17_M_reallocate_mapEmb", "std::deque>::_M_reallocate_map(unsigned long, bool)"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang6Parser25LateParsedDefaultArgumentELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN5clang6Parser15ParseExpressionEv", "clang::Parser::ParseExpression()"}, + {"_ZN5clang6Parser25ParseAssignmentExpressionEv", "clang::Parser::ParseAssignmentExpression()"}, + {"_ZN5clang6Parser26ParseRHSOfBinaryExpressionENS_12ActionResultIPNS_4ExprELb1EEENS_4prec5LevelE", "clang::Parser::ParseRHSOfBinaryExpression(clang::ActionResult, clang::prec::Level)"}, + {"_ZN5clang6Parser28ParseExpressionWithLeadingAtENS_14SourceLocationE", "clang::Parser::ParseExpressionWithLeadingAt(clang::SourceLocation)"}, + {"_ZN5clang6Parser35ParseExpressionWithLeadingExtensionENS_14SourceLocationE", "clang::Parser::ParseExpressionWithLeadingExtension(clang::SourceLocation)"}, + {"_ZN5clang6Parser19ParseCastExpressionEbbNS_9OpaquePtrINS_8QualTypeEEE", "clang::Parser::ParseCastExpression(bool, bool, clang::OpaquePtr)"}, + {"_ZN5clang6Parser43ParseAssignmentExprWithObjCMessageExprStartENS_14SourceLocationES1_NS_9OpaquePtrINS_8QualTypeEEEPNS_4ExprE", "clang::Parser::ParseAssignmentExprWithObjCMessageExprStart(clang::SourceLocation, clang::SourceLocation, clang::OpaquePtr, clang::Expr*)"}, + {"_ZN5clang6Parser28ParsePostfixExpressionSuffixENS_12ActionResultIPNS_4ExprELb1EEE", "clang::Parser::ParsePostfixExpressionSuffix(clang::ActionResult)"}, + {"_ZN5clang6Parser23ParseConstantExpressionEv", "clang::Parser::ParseConstantExpression()"}, + {"_ZN5clang6Parser19ParseCastExpressionEbbRbNS_9OpaquePtrINS_8QualTypeEEE", "clang::Parser::ParseCastExpression(bool, bool, bool&, clang::OpaquePtr)"}, + {"_ZN5clang6Parser20ParseParenExpressionERNS0_16ParenParseOptionEbNS_9OpaquePtrINS_8QualTypeEEERS5_RNS_14SourceLocationE", "clang::Parser::ParseParenExpression(clang::Parser::ParenParseOption&, bool, clang::OpaquePtr, clang::OpaquePtr&, clang::SourceLocation&)"}, + {"_ZN5clang6Parser28ParseStringLiteralExpressionEv", "clang::Parser::ParseStringLiteralExpression()"}, + {"_ZN5clang6Parser29ParseBuiltinPrimaryExpressionEv", "clang::Parser::ParseBuiltinPrimaryExpression()"}, + {"_ZN5clang6Parser28ParseSizeofAlignofExpressionEv", "clang::Parser::ParseSizeofAlignofExpression()"}, + {"_ZN5clang6Parser27ParseBlockLiteralExpressionEv", "clang::Parser::ParseBlockLiteralExpression()"}, + {"_ZN5clang6Parser19ParseExpressionListERN4llvm15SmallVectorImplIPNS_4ExprEEERNS2_INS_14SourceLocationEEEMNS_4SemaEFvPNS_5ScopeES4_PS4_jES4_", "clang::Parser::ParseExpressionList(llvm::SmallVectorImpl&, llvm::SmallVectorImpl&, void (clang::Sema::*)(clang::Scope*, clang::Expr*, clang::Expr**, unsigned int), clang::Expr*)"}, + {"_ZN5clang6Parser33ParseExprAfterTypeofSizeofAlignofERKNS_5TokenERbRNS_9OpaquePtrINS_8QualTypeEEERNS_11SourceRangeE", "clang::Parser::ParseExprAfterTypeofSizeofAlignof(clang::Token const&, bool&, clang::OpaquePtr&, clang::SourceRange&)"}, + {"_ZN5clang6Parser30ParseCompoundLiteralExpressionENS_9OpaquePtrINS_8QualTypeEEENS_14SourceLocationES4_", "clang::Parser::ParseCompoundLiteralExpression(clang::OpaquePtr, clang::SourceLocation, clang::SourceLocation)"}, + {"_ZN5clang6Parser12ParseBlockIdEv", "clang::Parser::ParseBlockId()"}, + {"_ZN5clang6Parser30ParseOptionalCXXScopeSpecifierERNS_12CXXScopeSpecENS_9OpaquePtrINS_8QualTypeEEEbPb", "clang::Parser::ParseOptionalCXXScopeSpecifier(clang::CXXScopeSpec&, clang::OpaquePtr, bool, bool*)"}, + {"_ZN5clang6Parser26ParseUnqualifiedIdOperatorERNS_12CXXScopeSpecEbNS_9OpaquePtrINS_8QualTypeEEERNS_13UnqualifiedIdE", "clang::Parser::ParseUnqualifiedIdOperator(clang::CXXScopeSpec&, bool, clang::OpaquePtr, clang::UnqualifiedId&)"}, + {"_ZN5clang6Parser20ParseCXXIdExpressionEb", "clang::Parser::ParseCXXIdExpression(bool)"}, + {"_ZN5clang6Parser18ParseUnqualifiedIdERNS_12CXXScopeSpecEbbbNS_9OpaquePtrINS_8QualTypeEEERNS_13UnqualifiedIdE", "clang::Parser::ParseUnqualifiedId(clang::CXXScopeSpec&, bool, bool, bool, clang::OpaquePtr, clang::UnqualifiedId&)"}, + {"_ZN5clang6Parser13ParseCXXCastsEv", "clang::Parser::ParseCXXCasts()"}, + {"_ZN5clang6Parser14ParseCXXTypeidEv", "clang::Parser::ParseCXXTypeid()"}, + {"_ZN5clang6Parser14ParseCXXUuidofEv", "clang::Parser::ParseCXXUuidof()"}, + {"_ZN5clang6Parser24ParseCXXPseudoDestructorEPNS_4ExprENS_14SourceLocationENS_3tok9TokenKindERNS_12CXXScopeSpecENS_9OpaquePtrINS_8QualTypeEEE", "clang::Parser::ParseCXXPseudoDestructor(clang::Expr*, clang::SourceLocation, clang::tok::TokenKind, clang::CXXScopeSpec&, clang::OpaquePtr)"}, + {"_ZN5clang6Parser28ParseUnqualifiedIdTemplateIdERNS_12CXXScopeSpecEPNS_14IdentifierInfoENS_14SourceLocationEbNS_9OpaquePtrINS_8QualTypeEEERNS_13UnqualifiedIdEbS5_", "clang::Parser::ParseUnqualifiedIdTemplateId(clang::CXXScopeSpec&, clang::IdentifierInfo*, clang::SourceLocation, bool, clang::OpaquePtr, clang::UnqualifiedId&, bool, clang::SourceLocation)"}, + {"_ZN5clang6Parser19ParseCXXBoolLiteralEv", "clang::Parser::ParseCXXBoolLiteral()"}, + {"_ZN5clang6Parser20ParseThrowExpressionEv", "clang::Parser::ParseThrowExpression()"}, + {"_ZN5clang6Parser12ParseCXXThisEv", "clang::Parser::ParseCXXThis()"}, + {"_ZN5clang6Parser31ParseCXXTypeConstructExpressionERKNS_8DeclSpecE", "clang::Parser::ParseCXXTypeConstructExpression(clang::DeclSpec const&)"}, + {"_ZN5clang6Parser17ParseCXXConditionERNS_12ActionResultIPNS_4ExprELb1EEERPNS_4DeclENS_14SourceLocationEb", "clang::Parser::ParseCXXCondition(clang::ActionResult&, clang::Decl*&, clang::SourceLocation, bool)"}, + {"_ZNK5clang6Parser24isCXXSimpleTypeSpecifierEv", "clang::Parser::isCXXSimpleTypeSpecifier() const"}, + {"_ZN5clang6Parser27ParseCXXSimpleTypeSpecifierERNS_8DeclSpecE", "clang::Parser::ParseCXXSimpleTypeSpecifier(clang::DeclSpec&)"}, + {"_ZN5clang6Parser24ParseCXXTypeSpecifierSeqERNS_8DeclSpecE", "clang::Parser::ParseCXXTypeSpecifierSeq(clang::DeclSpec&)"}, + {"_ZN5clang6Parser21ParseCXXNewExpressionEbNS_14SourceLocationE", "clang::Parser::ParseCXXNewExpression(bool, clang::SourceLocation)"}, + {"_ZN5clang6Parser27ParseExpressionListOrTypeIdERN4llvm15SmallVectorImplIPNS_4ExprEEERNS_10DeclaratorE", "clang::Parser::ParseExpressionListOrTypeId(llvm::SmallVectorImpl&, clang::Declarator&)"}, + {"_ZN5clang6Parser24ParseDirectNewDeclaratorERNS_10DeclaratorE", "clang::Parser::ParseDirectNewDeclarator(clang::Declarator&)"}, + {"_ZN5clang6Parser24ParseCXXDeleteExpressionEbNS_14SourceLocationE", "clang::Parser::ParseCXXDeleteExpression(bool, clang::SourceLocation)"}, + {"_ZN5clang6Parser19ParseUnaryTypeTraitEv", "clang::Parser::ParseUnaryTypeTrait()"}, + {"_ZN5clang6Parser20ParseBinaryTypeTraitEv", "clang::Parser::ParseBinaryTypeTrait()"}, + {"_ZN5clang6Parser32ParseCXXAmbiguousParenExpressionERNS0_16ParenParseOptionERNS_9OpaquePtrINS_8QualTypeEEENS_14SourceLocationERS7_", "clang::Parser::ParseCXXAmbiguousParenExpression(clang::Parser::ParenParseOption&, clang::OpaquePtr&, clang::SourceLocation, clang::SourceLocation&)"}, + {"_ZN5clang6Parser39ParseInitializerWithPotentialDesignatorEv", "clang::Parser::ParseInitializerWithPotentialDesignator()"}, + {"_ZN5clang6Parser21ParseBraceInitializerEv", "clang::Parser::ParseBraceInitializer()"}, + {"_ZN5clang6Parser21ParseObjCAtDirectivesEv", "clang::Parser::ParseObjCAtDirectives()"}, + {"_ZN5clang6Parser27ParseObjCAtClassDeclarationENS_14SourceLocationE", "clang::Parser::ParseObjCAtClassDeclaration(clang::SourceLocation)"}, + {"_ZN5clang6Parser31ParseObjCAtInterfaceDeclarationENS_14SourceLocationERNS_16ParsedAttributesE", "clang::Parser::ParseObjCAtInterfaceDeclaration(clang::SourceLocation, clang::ParsedAttributes&)"}, + {"_ZN5clang6Parser30ParseObjCAtProtocolDeclarationENS_14SourceLocationERNS_16ParsedAttributesE", "clang::Parser::ParseObjCAtProtocolDeclaration(clang::SourceLocation, clang::ParsedAttributes&)"}, + {"_ZN5clang6Parser36ParseObjCAtImplementationDeclarationENS_14SourceLocationE", "clang::Parser::ParseObjCAtImplementationDeclaration(clang::SourceLocation)"}, + {"_ZN5clang6Parser25ParseObjCAtEndDeclarationENS_11SourceRangeE", "clang::Parser::ParseObjCAtEndDeclaration(clang::SourceRange)"}, + {"_ZN5clang6Parser27ParseObjCAtAliasDeclarationENS_14SourceLocationE", "clang::Parser::ParseObjCAtAliasDeclaration(clang::SourceLocation)"}, + {"_ZN5clang6Parser27ParseObjCPropertySynthesizeENS_14SourceLocationE", "clang::Parser::ParseObjCPropertySynthesize(clang::SourceLocation)"}, + {"_ZN5clang6Parser24ParseObjCPropertyDynamicENS_14SourceLocationE", "clang::Parser::ParseObjCPropertyDynamic(clang::SourceLocation)"}, + {"_ZN5clang6Parser27ParseObjCProtocolReferencesERN4llvm15SmallVectorImplIPNS_4DeclEEERNS2_INS_14SourceLocationEEEbRS7_SA_", "clang::Parser::ParseObjCProtocolReferences(llvm::SmallVectorImpl&, llvm::SmallVectorImpl&, bool, clang::SourceLocation&, clang::SourceLocation&)"}, + {"_ZN5clang6Parser31ParseObjCClassInstanceVariablesEPNS_4DeclENS_3tok15ObjCKeywordKindENS_14SourceLocationE", "clang::Parser::ParseObjCClassInstanceVariables(clang::Decl*, clang::tok::ObjCKeywordKind, clang::SourceLocation)"}, + {"_ZN5clang6Parser26ParseObjCInterfaceDeclListEPNS_4DeclENS_3tok15ObjCKeywordKindE", "clang::Parser::ParseObjCInterfaceDeclList(clang::Decl*, clang::tok::ObjCKeywordKind)"}, + {"_ZN5clang6Parser24ParseObjCMethodPrototypeEPNS_4DeclENS_3tok15ObjCKeywordKindE", "clang::Parser::ParseObjCMethodPrototype(clang::Decl*, clang::tok::ObjCKeywordKind)"}, + {"_ZN5clang6Parser19ParseObjCMethodDeclENS_14SourceLocationENS_3tok9TokenKindEPNS_4DeclENS2_15ObjCKeywordKindE", "clang::Parser::ParseObjCMethodDecl(clang::SourceLocation, clang::tok::TokenKind, clang::Decl*, clang::tok::ObjCKeywordKind)"}, + {"_ZN5clang6Parser26ParseObjCPropertyAttributeERNS_12ObjCDeclSpecEPNS_4DeclE", "clang::Parser::ParseObjCPropertyAttribute(clang::ObjCDeclSpec&, clang::Decl*)"}, + {"_ZN5clang6Parser22ParseObjCSelectorPieceERNS_14SourceLocationE", "clang::Parser::ParseObjCSelectorPiece(clang::SourceLocation&)"}, + {"_ZNK5clang6Parser18isTokIdentifier_inEv", "clang::Parser::isTokIdentifier_in() const"}, + {"_ZN5clang6Parser26ParseObjCTypeQualifierListERNS_12ObjCDeclSpecEb", "clang::Parser::ParseObjCTypeQualifierList(clang::ObjCDeclSpec&, bool)"}, + {"_ZN5clang6Parser17ParseObjCTypeNameERNS_12ObjCDeclSpecEb", "clang::Parser::ParseObjCTypeName(clang::ObjCDeclSpec&, bool)"}, + {"_ZN5clang6Parser27ParseObjCProtocolQualifiersERNS_8DeclSpecE", "clang::Parser::ParseObjCProtocolQualifiers(clang::DeclSpec&)"}, + {"_ZZN5clang6Parser31ParseObjCClassInstanceVariablesEPNS_4DeclENS_3tok15ObjCKeywordKindENS_14SourceLocationEEN16ObjCIvarCallbackD1Ev", "clang::Parser::ParseObjCClassInstanceVariables(clang::Decl*, clang::tok::ObjCKeywordKind, clang::SourceLocation)::ObjCIvarCallback::~ObjCIvarCallback()"}, + {"_ZN5clang6Parser24FinishPendingObjCActionsEv", "clang::Parser::FinishPendingObjCActions()"}, + {"_ZN5clang6Parser18ParseObjCThrowStmtENS_14SourceLocationE", "clang::Parser::ParseObjCThrowStmt(clang::SourceLocation)"}, + {"_ZN5clang6Parser25ParseObjCSynchronizedStmtENS_14SourceLocationE", "clang::Parser::ParseObjCSynchronizedStmt(clang::SourceLocation)"}, + {"_ZN5clang6Parser16ParseObjCTryStmtENS_14SourceLocationE", "clang::Parser::ParseObjCTryStmt(clang::SourceLocation)"}, + {"_ZN5clang6Parser25ParseObjCMethodDefinitionEv", "clang::Parser::ParseObjCMethodDefinition()"}, + {"_ZN5clang6Parser20ParseObjCAtStatementENS_14SourceLocationE", "clang::Parser::ParseObjCAtStatement(clang::SourceLocation)"}, + {"_ZN5clang6Parser21ParseObjCAtExpressionENS_14SourceLocationE", "clang::Parser::ParseObjCAtExpression(clang::SourceLocation)"}, + {"_ZN5clang6Parser22ParseObjCStringLiteralENS_14SourceLocationE", "clang::Parser::ParseObjCStringLiteral(clang::SourceLocation)"}, + {"_ZN5clang6Parser25ParseObjCEncodeExpressionENS_14SourceLocationE", "clang::Parser::ParseObjCEncodeExpression(clang::SourceLocation)"}, + {"_ZN5clang6Parser27ParseObjCProtocolExpressionENS_14SourceLocationE", "clang::Parser::ParseObjCProtocolExpression(clang::SourceLocation)"}, + {"_ZN5clang6Parser27ParseObjCSelectorExpressionENS_14SourceLocationE", "clang::Parser::ParseObjCSelectorExpression(clang::SourceLocation)"}, + {"_ZN5clang6Parser26ParseObjCXXMessageReceiverERbRPv", "clang::Parser::ParseObjCXXMessageReceiver(bool&, void*&)"}, + {"_ZN5clang6Parser29isSimpleObjCMessageExpressionEv", "clang::Parser::isSimpleObjCMessageExpression()"}, + {"_ZN5clang6Parser43isStartOfObjCClassMessageMissingOpenBracketEv", "clang::Parser::isStartOfObjCClassMessageMissingOpenBracket()"}, + {"_ZN5clang6Parser26ParseObjCMessageExpressionEv", "clang::Parser::ParseObjCMessageExpression()"}, + {"_ZN5clang6Parser30ParseObjCMessageExpressionBodyENS_14SourceLocationES1_NS_9OpaquePtrINS_8QualTypeEEEPNS_4ExprE", "clang::Parser::ParseObjCMessageExpressionBody(clang::SourceLocation, clang::SourceLocation, clang::OpaquePtr, clang::Expr*)"}, + {"_ZZN5clang6Parser31ParseObjCClassInstanceVariablesEPNS_4DeclENS_3tok15ObjCKeywordKindENS_14SourceLocationEEN16ObjCIvarCallback6invokeERNS_15FieldDeclaratorE", "clang::Parser::ParseObjCClassInstanceVariables(clang::Decl*, clang::tok::ObjCKeywordKind, clang::SourceLocation)::ObjCIvarCallback::invoke(clang::FieldDeclarator&)"}, + {"_ZZN5clang6Parser31ParseObjCClassInstanceVariablesEPNS_4DeclENS_3tok15ObjCKeywordKindENS_14SourceLocationEEN16ObjCIvarCallbackD0Ev", "clang::Parser::ParseObjCClassInstanceVariables(clang::Decl*, clang::tok::ObjCKeywordKind, clang::SourceLocation)::ObjCIvarCallback::~ObjCIvarCallback()"}, + {"_ZN5clang6Parser20ObjCPropertyCallbackD1Ev", "clang::Parser::ObjCPropertyCallback::~ObjCPropertyCallback()"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang15DeclaratorChunk9ParamInfoELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang4Sema11ObjCArgInfoELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN5clang6Parser20ObjCPropertyCallback6invokeERNS_15FieldDeclaratorE", "clang::Parser::ObjCPropertyCallback::invoke(clang::FieldDeclarator&)"}, + {"_ZN5clang6Parser20ObjCPropertyCallbackD0Ev", "clang::Parser::ObjCPropertyCallback::~ObjCPropertyCallback()"}, + {"_ZN5clang6Parser18HandlePragmaUnusedEv", "clang::Parser::HandlePragmaUnused()"}, + {"_ZN5clang26PragmaGCCVisibilityHandler12HandlePragmaERNS_12PreprocessorENS_20PragmaIntroducerKindERNS_5TokenE", "clang::PragmaGCCVisibilityHandler::HandlePragma(clang::Preprocessor&, clang::PragmaIntroducerKind, clang::Token&)"}, + {"_ZN5clang17PragmaPackHandler12HandlePragmaERNS_12PreprocessorENS_20PragmaIntroducerKindERNS_5TokenE", "clang::PragmaPackHandler::HandlePragma(clang::Preprocessor&, clang::PragmaIntroducerKind, clang::Token&)"}, + {"_ZN5clang18PragmaAlignHandler12HandlePragmaERNS_12PreprocessorENS_20PragmaIntroducerKindERNS_5TokenE", "clang::PragmaAlignHandler::HandlePragma(clang::Preprocessor&, clang::PragmaIntroducerKind, clang::Token&)"}, + {"_Z16ParseAlignPragmaRN5clang4SemaERNS_12PreprocessorERNS_5TokenEb", "ParseAlignPragma(clang::Sema&, clang::Preprocessor&, clang::Token&, bool)"}, + {"_ZN5clang20PragmaOptionsHandler12HandlePragmaERNS_12PreprocessorENS_20PragmaIntroducerKindERNS_5TokenE", "clang::PragmaOptionsHandler::HandlePragma(clang::Preprocessor&, clang::PragmaIntroducerKind, clang::Token&)"}, + {"_ZN5clang19PragmaUnusedHandler12HandlePragmaERNS_12PreprocessorENS_20PragmaIntroducerKindERNS_5TokenE", "clang::PragmaUnusedHandler::HandlePragma(clang::Preprocessor&, clang::PragmaIntroducerKind, clang::Token&)"}, + {"_ZN5clang17PragmaWeakHandler12HandlePragmaERNS_12PreprocessorENS_20PragmaIntroducerKindERNS_5TokenE", "clang::PragmaWeakHandler::HandlePragma(clang::Preprocessor&, clang::PragmaIntroducerKind, clang::Token&)"}, + {"_ZN5clang18PragmaAlignHandlerD1Ev", "clang::PragmaAlignHandler::~PragmaAlignHandler()"}, + {"_ZN5clang18PragmaAlignHandlerD0Ev", "clang::PragmaAlignHandler::~PragmaAlignHandler()"}, + {"_ZN5clang26PragmaGCCVisibilityHandlerD1Ev", "clang::PragmaGCCVisibilityHandler::~PragmaGCCVisibilityHandler()"}, + {"_ZN5clang26PragmaGCCVisibilityHandlerD0Ev", "clang::PragmaGCCVisibilityHandler::~PragmaGCCVisibilityHandler()"}, + {"_ZN5clang20PragmaOptionsHandlerD1Ev", "clang::PragmaOptionsHandler::~PragmaOptionsHandler()"}, + {"_ZN5clang20PragmaOptionsHandlerD0Ev", "clang::PragmaOptionsHandler::~PragmaOptionsHandler()"}, + {"_ZN5clang17PragmaPackHandlerD1Ev", "clang::PragmaPackHandler::~PragmaPackHandler()"}, + {"_ZN5clang17PragmaPackHandlerD0Ev", "clang::PragmaPackHandler::~PragmaPackHandler()"}, + {"_ZN5clang19PragmaUnusedHandlerD1Ev", "clang::PragmaUnusedHandler::~PragmaUnusedHandler()"}, + {"_ZN5clang19PragmaUnusedHandlerD0Ev", "clang::PragmaUnusedHandler::~PragmaUnusedHandler()"}, + {"_ZN5clang17PragmaWeakHandlerD1Ev", "clang::PragmaWeakHandler::~PragmaWeakHandler()"}, + {"_ZN5clang17PragmaWeakHandlerD0Ev", "clang::PragmaWeakHandler::~PragmaWeakHandler()"}, + + // {"_ZN5clang6Parser27ParseStatementOrDeclarationERNS_15ASTOwningVectorIPNS_4StmtELj32EEEb", + // "clang::Parser::ParseStatementOrDeclaration(clang::ASTOwningVector&, bool)"}, + // "clang::Parser::ParseStatementOrDeclaration(clang::ASTOwningVector&, bool)" was returned + + {"_ZN5clang6Parser21ParseLabeledStatementERNS_16ParsedAttributesE", "clang::Parser::ParseLabeledStatement(clang::ParsedAttributes&)"}, + {"_ZN5clang6Parser18ParseCaseStatementERNS_16ParsedAttributesE", "clang::Parser::ParseCaseStatement(clang::ParsedAttributes&)"}, + {"_ZN5clang6Parser21ParseDefaultStatementERNS_16ParsedAttributesE", "clang::Parser::ParseDefaultStatement(clang::ParsedAttributes&)"}, + {"_ZN5clang6Parser22ParseCompoundStatementERNS_16ParsedAttributesEb", "clang::Parser::ParseCompoundStatement(clang::ParsedAttributes&, bool)"}, + {"_ZN5clang6Parser16ParseIfStatementERNS_16ParsedAttributesE", "clang::Parser::ParseIfStatement(clang::ParsedAttributes&)"}, + {"_ZN5clang6Parser20ParseSwitchStatementERNS_16ParsedAttributesE", "clang::Parser::ParseSwitchStatement(clang::ParsedAttributes&)"}, + {"_ZN5clang6Parser19ParseWhileStatementERNS_16ParsedAttributesE", "clang::Parser::ParseWhileStatement(clang::ParsedAttributes&)"}, + {"_ZN5clang6Parser16ParseDoStatementERNS_16ParsedAttributesE", "clang::Parser::ParseDoStatement(clang::ParsedAttributes&)"}, + {"_ZN5clang6Parser17ParseForStatementERNS_16ParsedAttributesE", "clang::Parser::ParseForStatement(clang::ParsedAttributes&)"}, + {"_ZN5clang6Parser18ParseGotoStatementERNS_16ParsedAttributesE", "clang::Parser::ParseGotoStatement(clang::ParsedAttributes&)"}, + {"_ZN5clang6Parser22ParseContinueStatementERNS_16ParsedAttributesE", "clang::Parser::ParseContinueStatement(clang::ParsedAttributes&)"}, + {"_ZN5clang6Parser19ParseBreakStatementERNS_16ParsedAttributesE", "clang::Parser::ParseBreakStatement(clang::ParsedAttributes&)"}, + {"_ZN5clang6Parser20ParseReturnStatementERNS_16ParsedAttributesE", "clang::Parser::ParseReturnStatement(clang::ParsedAttributes&)"}, + {"_ZN5clang6Parser17ParseAsmStatementERb", "clang::Parser::ParseAsmStatement(bool&)"}, + {"_ZN5clang6Parser16ParseCXXTryBlockERNS_16ParsedAttributesE", "clang::Parser::ParseCXXTryBlock(clang::ParsedAttributes&)"}, + {"_ZN5clang6Parser26ParseCompoundStatementBodyEb", "clang::Parser::ParseCompoundStatementBody(bool)"}, + {"_ZN5clang6Parser25ParseParenExprOrConditionERNS_12ActionResultIPNS_4ExprELb1EEERPNS_4DeclENS_14SourceLocationEb", "clang::Parser::ParseParenExprOrCondition(clang::ActionResult&, clang::Decl*&, clang::SourceLocation, bool)"}, + {"_ZN5clang6Parser31FuzzyParseMicrosoftAsmStatementENS_14SourceLocationE", "clang::Parser::FuzzyParseMicrosoftAsmStatement(clang::SourceLocation)"}, + {"_ZN5clang6Parser19ParseAsmOperandsOptERN4llvm15SmallVectorImplIPNS_14IdentifierInfoEEERNS2_IPNS_4ExprEEESA_", "clang::Parser::ParseAsmOperandsOpt(llvm::SmallVectorImpl&, llvm::SmallVectorImpl&, llvm::SmallVectorImpl&)"}, + {"_ZN5clang6Parser26ParseFunctionStatementBodyEPNS_4DeclE", "clang::Parser::ParseFunctionStatementBody(clang::Decl*)"}, + {"_ZN5clang6Parser40trySkippingFunctionBodyForCodeCompletionEv", "clang::Parser::trySkippingFunctionBodyForCodeCompletion()"}, + {"_ZN5clang6Parser21ParseFunctionTryBlockEPNS_4DeclE", "clang::Parser::ParseFunctionTryBlock(clang::Decl*)"}, + {"_ZN5clang6Parser22ParseCXXTryBlockCommonENS_14SourceLocationE", "clang::Parser::ParseCXXTryBlockCommon(clang::SourceLocation)"}, + {"_ZN5clang6Parser18ParseCXXCatchBlockEv", "clang::Parser::ParseCXXCatchBlock()"}, + {"_ZN5clang6Parser36ParseDeclarationStartingWithTemplateEjRNS_14SourceLocationENS_15AccessSpecifierE", "clang::Parser::ParseDeclarationStartingWithTemplate(unsigned int, clang::SourceLocation&, clang::AccessSpecifier)"}, + {"_ZN5clang6Parser26ParseExplicitInstantiationENS_14SourceLocationES1_RS1_", "clang::Parser::ParseExplicitInstantiation(clang::SourceLocation, clang::SourceLocation, clang::SourceLocation&)"}, + {"_ZN5clang6Parser40ParseTemplateDeclarationOrSpecializationEjRNS_14SourceLocationENS_15AccessSpecifierE", "clang::Parser::ParseTemplateDeclarationOrSpecialization(unsigned int, clang::SourceLocation&, clang::AccessSpecifier)"}, + {"_ZN5clang6Parser23ParseTemplateParametersEjRN4llvm15SmallVectorImplIPNS_4DeclEEERNS_14SourceLocationES8_", "clang::Parser::ParseTemplateParameters(unsigned int, llvm::SmallVectorImpl&, clang::SourceLocation&, clang::SourceLocation&)"}, + {"_ZN5clang6Parser35ParseSingleDeclarationAfterTemplateEjRKNS0_18ParsedTemplateInfoERNS0_21ParsingDeclRAIIObjectERNS_14SourceLocationENS_15AccessSpecifierE", "clang::Parser::ParseSingleDeclarationAfterTemplate(unsigned int, clang::Parser::ParsedTemplateInfo const&, clang::Parser::ParsingDeclRAIIObject&, clang::SourceLocation&, clang::AccessSpecifier)"}, + {"_ZN5clang6Parser26ParseTemplateParameterListEjRN4llvm15SmallVectorImplIPNS_4DeclEEE", "clang::Parser::ParseTemplateParameterList(unsigned int, llvm::SmallVectorImpl&)"}, + {"_ZN5clang6Parser22ParseTemplateParameterEjj", "clang::Parser::ParseTemplateParameter(unsigned int, unsigned int)"}, + {"_ZN5clang6Parser30isStartOfTemplateTypeParameterEv", "clang::Parser::isStartOfTemplateTypeParameter()"}, + {"_ZN5clang6Parser18ParseTypeParameterEjj", "clang::Parser::ParseTypeParameter(unsigned int, unsigned int)"}, + {"_ZN5clang6Parser30ParseTemplateTemplateParameterEjj", "clang::Parser::ParseTemplateTemplateParameter(unsigned int, unsigned int)"}, + {"_ZN5clang6Parser29ParseNonTypeTemplateParameterEjj", "clang::Parser::ParseNonTypeTemplateParameter(unsigned int, unsigned int)"}, + {"_ZN5clang6Parser29ParseTemplateTemplateArgumentEv", "clang::Parser::ParseTemplateTemplateArgument()"}, + + // {"_ZN5clang6Parser32ParseTemplateIdAfterTemplateNameENS_9OpaquePtrINS_12TemplateNameEEENS_14SourceLocationEPKNS_12CXXScopeSpecEbRS4_RN4llvm11SmallVectorINS_22ParsedTemplateArgumentELj16EEES8_", + // "clang::Parser::ParseTemplateIdAfterTemplateName(clang::OpaquePtr, clang::SourceLocation, clang::CXXScopeSpec const*, bool, clang::SourceLocation&, llvm::SmallVector&, clang::SourceLocation&)"}, + // "clang::Parser::ParseTemplateIdAfterTemplateName(clang::OpaquePtr, clang::SourceLocation, clang::CXXScopeSpec const*, bool, clang::SourceLocation&, llvm::SmallVector&, clang::SourceLocation&)" was returned + + + // {"_ZN5clang6Parser25ParseTemplateArgumentListERN4llvm11SmallVectorINS_22ParsedTemplateArgumentELj16EEE", + // "clang::Parser::ParseTemplateArgumentList(llvm::SmallVector&)"}, + // "clang::Parser::ParseTemplateArgumentList(llvm::SmallVector&)" was returned + + {"_ZN5clang6Parser23AnnotateTemplateIdTokenENS_9OpaquePtrINS_12TemplateNameEEENS_16TemplateNameKindEPKNS_12CXXScopeSpecERNS_13UnqualifiedIdENS_14SourceLocationEb", "clang::Parser::AnnotateTemplateIdToken(clang::OpaquePtr, clang::TemplateNameKind, clang::CXXScopeSpec const*, clang::UnqualifiedId&, clang::SourceLocation, bool)"}, + {"_ZN5clang6Parser29AnnotateTemplateIdTokenAsTypeEPKNS_12CXXScopeSpecE", "clang::Parser::AnnotateTemplateIdTokenAsType(clang::CXXScopeSpec const*)"}, + {"_ZN5clang6Parser21ParseTemplateArgumentEv", "clang::Parser::ParseTemplateArgument()"}, + {"_ZN5clang6Parser22IsTemplateArgumentListEj", "clang::Parser::IsTemplateArgumentList(unsigned int)"}, + {"_ZNK5clang6Parser18ParsedTemplateInfo14getSourceRangeEv", "clang::Parser::ParsedTemplateInfo::getSourceRange() const"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang22ParsedTemplateArgumentELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN5clang6Parser25isCXXDeclarationStatementEv", "clang::Parser::isCXXDeclarationStatement()"}, + {"_ZN5clang6Parser22isCXXSimpleDeclarationEv", "clang::Parser::isCXXSimpleDeclaration()"}, + {"_ZN5clang6Parser25isCXXDeclarationSpecifierEv", "clang::Parser::isCXXDeclarationSpecifier()"}, + {"_ZN5clang6Parser25TryParseSimpleDeclarationEv", "clang::Parser::TryParseSimpleDeclaration()"}, + {"_ZN5clang6Parser23TryParseTypeofSpecifierEv", "clang::Parser::TryParseTypeofSpecifier()"}, + {"_ZN5clang6Parser26TryParseProtocolQualifiersEv", "clang::Parser::TryParseProtocolQualifiers()"}, + {"_ZN5clang6Parser26TryParseInitDeclaratorListEv", "clang::Parser::TryParseInitDeclaratorList()"}, + {"_ZN5clang6Parser18TryParseDeclaratorEbb", "clang::Parser::TryParseDeclarator(bool, bool)"}, + {"_ZN5clang6Parser25isCXXConditionDeclarationEv", "clang::Parser::isCXXConditionDeclaration()"}, + {"_ZN5clang6Parser11isCXXTypeIdENS0_25TentativeCXXTypeIdContextERb", "clang::Parser::isCXXTypeId(clang::Parser::TentativeCXXTypeIdContext, bool&)"}, + {"_ZN5clang6Parser25isCXX0XAttributeSpecifierEbPNS_3tok9TokenKindE", "clang::Parser::isCXX0XAttributeSpecifier(bool, clang::tok::TokenKind*)"}, + {"_ZN5clang6Parser26TryParseFunctionDeclaratorEv", "clang::Parser::TryParseFunctionDeclarator()"}, + {"_ZN5clang6Parser23isCXXFunctionDeclaratorEb", "clang::Parser::isCXXFunctionDeclarator(bool)"}, + {"_ZN5clang6Parser25TryParseBracketDeclaratorEv", "clang::Parser::TryParseBracketDeclarator()"}, + {"_ZN5clang6Parser33isExpressionOrTypeSpecifierSimpleENS_3tok9TokenKindE", "clang::Parser::isExpressionOrTypeSpecifierSimple(clang::tok::TokenKind)"}, + {"_ZN5clang6Parser28TryParseDeclarationSpecifierEv", "clang::Parser::TryParseDeclarationSpecifier()"}, + {"_ZN5clang6Parser34TryParseParameterDeclarationClauseEv", "clang::Parser::TryParseParameterDeclarationClause()"}, + {"_ZN5clang6ParserC1ERNS_12PreprocessorERNS_4SemaE", "clang::Parser::Parser(clang::Preprocessor&, clang::Sema&)"}, + {"_ZN5clang6ParserC2ERNS_12PreprocessorERNS_4SemaE", "clang::Parser::Parser(clang::Preprocessor&, clang::Sema&)"}, + {"_ZNK5clang27PrettyStackTraceParserEntry5printERN4llvm11raw_ostreamE", "clang::PrettyStackTraceParserEntry::print(llvm::raw_ostream&) const"}, + {"_ZN5clang6Parser4DiagENS_14SourceLocationEj", "clang::Parser::Diag(clang::SourceLocation, unsigned int)"}, + {"_ZN5clang6Parser4DiagERKNS_5TokenEj", "clang::Parser::Diag(clang::Token const&, unsigned int)"}, + {"_ZN5clang6Parser18SuggestParenthesesENS_14SourceLocationEjNS_11SourceRangeE", "clang::Parser::SuggestParentheses(clang::SourceLocation, unsigned int, clang::SourceRange)"}, + {"_ZN5clang6Parser19MatchRHSPunctuationENS_3tok9TokenKindENS_14SourceLocationE", "clang::Parser::MatchRHSPunctuation(clang::tok::TokenKind, clang::SourceLocation)"}, + {"_ZN5clang6Parser16ExpectAndConsumeENS_3tok9TokenKindEjPKcS2_", "clang::Parser::ExpectAndConsume(clang::tok::TokenKind, unsigned int, char const*, clang::tok::TokenKind)"}, + {"_ZN5clang6Parser20ExpectAndConsumeSemiEj", "clang::Parser::ExpectAndConsumeSemi(unsigned int)"}, + {"_ZN5clang6Parser9SkipUntilEPKNS_3tok9TokenKindEjbbb", "clang::Parser::SkipUntil(clang::tok::TokenKind const*, unsigned int, bool, bool, bool)"}, + {"_ZN5clang6Parser10EnterScopeEj", "clang::Parser::EnterScope(unsigned int)"}, + {"_ZN5clang6Parser9ExitScopeEv", "clang::Parser::ExitScope()"}, + {"_ZN5clang6ParserD0Ev", "clang::Parser::~Parser()"}, + {"_ZN5clang6ParserD1Ev", "clang::Parser::~Parser()"}, + {"_ZN5clang6ParserD2Ev", "clang::Parser::~Parser()"}, + {"_ZN5clang6Parser10InitializeEv", "clang::Parser::Initialize()"}, + {"_ZN5clang6Parser17ParseTopLevelDeclERNS_9OpaquePtrINS_12DeclGroupRefEEE", "clang::Parser::ParseTopLevelDecl(clang::OpaquePtr&)"}, + {"_ZN5clang6Parser24ParseExternalDeclarationERNS0_25ParsedAttributesWithRangeEPNS0_15ParsingDeclSpecE", "clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&, clang::Parser::ParsingDeclSpec*)"}, + {"_ZN5clang6Parser20ParseTranslationUnitEv", "clang::Parser::ParseTranslationUnit()"}, + {"_ZN5clang6Parser14ParseSimpleAsmEPNS_14SourceLocationE", "clang::Parser::ParseSimpleAsm(clang::SourceLocation*)"}, + {"_ZN5clang6Parser36ParseDeclarationOrFunctionDefinitionERNS0_15ParsingDeclSpecENS_15AccessSpecifierE", "clang::Parser::ParseDeclarationOrFunctionDefinition(clang::Parser::ParsingDeclSpec&, clang::AccessSpecifier)"}, + {"_ZN5clang6Parser36ParseDeclarationOrFunctionDefinitionERNS_16ParsedAttributesENS_15AccessSpecifierE", "clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::AccessSpecifier)"}, + {"_ZNK5clang6Parser28isDeclarationAfterDeclaratorEv", "clang::Parser::isDeclarationAfterDeclarator() const"}, + {"_ZN5clang6Parser27isStartOfFunctionDefinitionERKNS0_17ParsingDeclaratorE", "clang::Parser::isStartOfFunctionDefinition(clang::Parser::ParsingDeclarator const&)"}, + {"_ZN5clang6Parser23ParseFunctionDefinitionERNS0_17ParsingDeclaratorERKNS0_18ParsedTemplateInfoE", "clang::Parser::ParseFunctionDefinition(clang::Parser::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&)"}, + {"_ZN5clang6Parser25ParseKNRParamDeclarationsERNS_10DeclaratorE", "clang::Parser::ParseKNRParamDeclarations(clang::Declarator&)"}, + {"_ZN5clang6Parser21ParseAsmStringLiteralEv", "clang::Parser::ParseAsmStringLiteral()"}, + {"_ZN5clang6Parser27TryAnnotateTypeOrScopeTokenEb", "clang::Parser::TryAnnotateTypeOrScopeToken(bool)"}, + {"_ZN5clang6Parser24TryAnnotateCXXScopeTokenEb", "clang::Parser::TryAnnotateCXXScopeToken(bool)"}, + {"_ZN5clang6Parser32isTokenEqualOrMistypedEqualEqualEj", "clang::Parser::isTokenEqualOrMistypedEqualEqual(unsigned int)"}, + {"_ZN5clang6Parser22CodeCompletionRecoveryEv", "clang::Parser::CodeCompletionRecovery()"}, + {"_ZN5clang6Parser13FieldCallback7_anchorEv", "clang::Parser::FieldCallback::_anchor()"}, + {"_ZN5clang6Parser21CodeCompleteDirectiveEb", "clang::Parser::CodeCompleteDirective(bool)"}, + {"_ZN5clang6Parser34CodeCompleteInConditionalExclusionEv", "clang::Parser::CodeCompleteInConditionalExclusion()"}, + {"_ZN5clang6Parser21CodeCompleteMacroNameEb", "clang::Parser::CodeCompleteMacroName(bool)"}, + {"_ZN5clang6Parser34CodeCompletePreprocessorExpressionEv", "clang::Parser::CodeCompletePreprocessorExpression()"}, + {"_ZN5clang6Parser25CodeCompleteMacroArgumentEPNS_14IdentifierInfoEPNS_9MacroInfoEj", "clang::Parser::CodeCompleteMacroArgument(clang::IdentifierInfo*, clang::MacroInfo*, unsigned int)"}, + {"_ZN5clang6Parser27CodeCompleteNaturalLanguageEv", "clang::Parser::CodeCompleteNaturalLanguage()"}, + {"_ZN5clang6Parser15ConsumeAnyTokenEv", "clang::Parser::ConsumeAnyToken()"}, + {"_ZN5clang5Scope4InitEPS0_j", "clang::Scope::Init(clang::Scope*, unsigned int)"}, + {"_ZN5clang27PrettyStackTraceParserEntryD1Ev", "clang::PrettyStackTraceParserEntry::~PrettyStackTraceParserEntry()"}, + {"_ZN5clang27PrettyStackTraceParserEntryD0Ev", "clang::PrettyStackTraceParserEntry::~PrettyStackTraceParserEntry()"}, + {"_ZN5clang6Parser13FieldCallbackD1Ev", "clang::Parser::FieldCallback::~FieldCallback()"}, + {"_ZN5clang6Parser13FieldCallbackD0Ev", "clang::Parser::FieldCallback::~FieldCallback()"}, + {"_ZNSt11_Deque_baseIPN5clang6Parser12ParsingClassESaIS3_EE17_M_initialize_mapEm", "std::_Deque_base>::_M_initialize_map(unsigned long)"}, + {"_ZNSt5dequeIPN5clang6Parser12ParsingClassESaIS3_EEC2ERKS5_", "std::deque>::deque(std::deque> const&)"}, + {"_ZN4llvm15SmallVectorImplIN5clang5TokenEE6insertEPS2_RKS2_", "llvm::SmallVectorImpl::insert(clang::Token*, clang::Token const&)"}, + {"_ZN5clang4sema21AnalysisBasedWarnings6PolicyC1Ev", "clang::sema::AnalysisBasedWarnings::Policy::Policy()"}, + {"_ZN5clang4sema21AnalysisBasedWarnings6PolicyC2Ev", "clang::sema::AnalysisBasedWarnings::Policy::Policy()"}, + {"_ZN5clang4sema21AnalysisBasedWarningsC1ERNS_4SemaE", "clang::sema::AnalysisBasedWarnings::AnalysisBasedWarnings(clang::Sema&)"}, + {"_ZN5clang4sema21AnalysisBasedWarningsC2ERNS_4SemaE", "clang::sema::AnalysisBasedWarnings::AnalysisBasedWarnings(clang::Sema&)"}, + {"_ZN5clang4sema21AnalysisBasedWarnings13IssueWarningsENS1_6PolicyEPKNS_4DeclENS_8QualTypeE", "clang::sema::AnalysisBasedWarnings::IssueWarnings(clang::sema::AnalysisBasedWarnings::Policy, clang::Decl const*, clang::QualType)"}, + {"_ZN12_GLOBAL__N_122UninitValsDiagReporterD1Ev", "(anonymous namespace)::UninitValsDiagReporter::~UninitValsDiagReporter()"}, + {"_ZN5clang4sema21AnalysisBasedWarnings13IssueWarningsENS1_6PolicyEPKNS_9BlockExprE", "clang::sema::AnalysisBasedWarnings::IssueWarnings(clang::sema::AnalysisBasedWarnings::Policy, clang::BlockExpr const*)"}, + {"_ZN5clang4sema21AnalysisBasedWarnings13IssueWarningsENS1_6PolicyEPKNS_14ObjCMethodDeclE", "clang::sema::AnalysisBasedWarnings::IssueWarnings(clang::sema::AnalysisBasedWarnings::Policy, clang::ObjCMethodDecl const*)"}, + {"_ZN5clang4sema21AnalysisBasedWarnings13IssueWarningsENS1_6PolicyEPKNS_12FunctionDeclE", "clang::sema::AnalysisBasedWarnings::IssueWarnings(clang::sema::AnalysisBasedWarnings::Policy, clang::FunctionDecl const*)"}, + {"_ZN12_GLOBAL__N_122UninitValsDiagReporterD0Ev", "(anonymous namespace)::UninitValsDiagReporter::~UninitValsDiagReporter()"}, + {"_ZN12_GLOBAL__N_122UninitValsDiagReporter25handleUseOfUninitVariableEPKN5clang4ExprEPKNS1_7VarDeclE", "(anonymous namespace)::UninitValsDiagReporter::handleUseOfUninitVariable(clang::Expr const*, clang::VarDecl const*)"}, + + // {"_ZSt16__introsort_loopIPPKN5clang4ExprElN12_GLOBAL__N_18SLocSortEEvT_S7_T0_T1_", + // "void std::__introsort_loop(clang::Expr const**, clang::Expr const**, long, (anonymous namespace)::SLocSort)"}, + // got error + + + // {"_ZSt16__insertion_sortIPPKN5clang4ExprEN12_GLOBAL__N_18SLocSortEEvT_S7_T0_", + // "void std::__insertion_sort(clang::Expr const**, clang::Expr const**, (anonymous namespace)::SLocSort)"}, + // got error + + + // {"_ZSt25__unguarded_linear_insertIPPKN5clang4ExprES3_N12_GLOBAL__N_18SLocSortEEvT_T0_T1_", + // "void std::__unguarded_linear_insert(clang::Expr const**, clang::Expr const*, (anonymous namespace)::SLocSort)"}, + // got error + + + // {"_ZSt13__adjust_heapIPPKN5clang4ExprElS3_N12_GLOBAL__N_18SLocSortEEvT_T0_S8_T1_T2_", + // "void std::__adjust_heap(clang::Expr const**, long, long, clang::Expr const*, (anonymous namespace)::SLocSort)"}, + // got error + + {"_ZN12_GLOBAL__N_122UnreachableCodeHandlerD1Ev", "(anonymous namespace)::UnreachableCodeHandler::~UnreachableCodeHandler()"}, + {"_ZN12_GLOBAL__N_122UnreachableCodeHandlerD0Ev", "(anonymous namespace)::UnreachableCodeHandler::~UnreachableCodeHandler()"}, + {"_ZN12_GLOBAL__N_122UnreachableCodeHandler17HandleUnreachableEN5clang14SourceLocationENS1_11SourceRangeES3_", "(anonymous namespace)::UnreachableCodeHandler::HandleUnreachable(clang::SourceLocation, clang::SourceRange, clang::SourceRange)"}, + + // {"_ZN4llvm8DenseMapIPKN5clang7VarDeclEPNS_11SmallVectorIPKNS1_4ExprELj2EEENS_12DenseMapInfoIS4_EENSB_ISA_EEE16InsertIntoBucketERKS4_RKSA_PSt4pairIS4_SA_E", + // "llvm::DenseMap*, llvm::DenseMapInfo, llvm::DenseMapInfo*>>::InsertIntoBucket(clang::VarDecl const* const&, llvm::SmallVector* const&, std::pair*>*)"}, + // "llvm::DenseMap*, llvm::DenseMapInfo, llvm::DenseMapInfo*>>::InsertIntoBucket(clang::VarDecl const* const&, llvm::SmallVector* const&, std::pair*>*)" was returned + + + // {"_ZN4llvm8DenseMapIPKN5clang7VarDeclEPNS_11SmallVectorIPKNS1_4ExprELj2EEENS_12DenseMapInfoIS4_EENSB_ISA_EEE4growEj", + // "llvm::DenseMap*, llvm::DenseMapInfo, llvm::DenseMapInfo*>>::grow(unsigned int)"}, + // "llvm::DenseMap*, llvm::DenseMapInfo, llvm::DenseMapInfo*>>::grow(unsigned int)" was returned + + {"_ZN5clang22UninitVariablesHandler25handleUseOfUninitVariableEPKNS_4ExprEPKNS_7VarDeclE", "clang::UninitVariablesHandler::handleUseOfUninitVariable(clang::Expr const*, clang::VarDecl const*)"}, + {"_ZN5clang14reachable_code8CallbackD1Ev", "clang::reachable_code::Callback::~Callback()"}, + {"_ZN5clang14reachable_code8CallbackD0Ev", "clang::reachable_code::Callback::~Callback()"}, + + // {"_ZSt6__findIPKPN5clang8CFGBlockES2_ET_S5_S5_RKT0_St26random_access_iterator_tag", + // "clang::CFGBlock* const* std::__find(clang::CFGBlock* const*, clang::CFGBlock* const*, clang::CFGBlock* const&, std::random_access_iterator_tag)"}, + // got error + + {"_ZN5clang13AttributeListC1ERN4llvm16BumpPtrAllocatorEPNS_14IdentifierInfoENS_14SourceLocationES5_S6_S5_S6_PPNS_4ExprEjbb", "clang::AttributeList::AttributeList(llvm::BumpPtrAllocator&, clang::IdentifierInfo*, clang::SourceLocation, clang::IdentifierInfo*, clang::SourceLocation, clang::IdentifierInfo*, clang::SourceLocation, clang::Expr**, unsigned int, bool, bool)"}, + {"_ZN5clang13AttributeListC2ERN4llvm16BumpPtrAllocatorEPNS_14IdentifierInfoENS_14SourceLocationES5_S6_S5_S6_PPNS_4ExprEjbb", "clang::AttributeList::AttributeList(llvm::BumpPtrAllocator&, clang::IdentifierInfo*, clang::SourceLocation, clang::IdentifierInfo*, clang::SourceLocation, clang::IdentifierInfo*, clang::SourceLocation, clang::Expr**, unsigned int, bool, bool)"}, + {"_ZN5clang13AttributeList7getKindEPKNS_14IdentifierInfoE", "clang::AttributeList::getKind(clang::IdentifierInfo const*)"}, + {"_ZNK5clang21CodeCompletionContext22wantConstructorResultsEv", "clang::CodeCompletionContext::wantConstructorResults() const"}, + {"_ZN5clang20CodeCompletionString5ChunkC1ENS0_9ChunkKindEPKc", "clang::CodeCompletionString::Chunk::Chunk(clang::CodeCompletionString::ChunkKind, char const*)"}, + {"_ZN5clang20CodeCompletionString5ChunkC2ENS0_9ChunkKindEPKc", "clang::CodeCompletionString::Chunk::Chunk(clang::CodeCompletionString::ChunkKind, char const*)"}, + {"_ZN5clang20CodeCompletionString5Chunk10CreateTextEPKc", "clang::CodeCompletionString::Chunk::CreateText(char const*)"}, + {"_ZN5clang20CodeCompletionString5Chunk14CreateOptionalEPS0_", "clang::CodeCompletionString::Chunk::CreateOptional(clang::CodeCompletionString*)"}, + {"_ZN5clang20CodeCompletionString5Chunk17CreatePlaceholderEPKc", "clang::CodeCompletionString::Chunk::CreatePlaceholder(char const*)"}, + {"_ZN5clang20CodeCompletionString5Chunk17CreateInformativeEPKc", "clang::CodeCompletionString::Chunk::CreateInformative(char const*)"}, + {"_ZN5clang20CodeCompletionString5Chunk16CreateResultTypeEPKc", "clang::CodeCompletionString::Chunk::CreateResultType(char const*)"}, + {"_ZN5clang20CodeCompletionString5Chunk22CreateCurrentParameterEPKc", "clang::CodeCompletionString::Chunk::CreateCurrentParameter(char const*)"}, + {"_ZN5clang20CodeCompletionStringC1EPKNS0_5ChunkEjj18CXAvailabilityKind", "clang::CodeCompletionString::CodeCompletionString(clang::CodeCompletionString::Chunk const*, unsigned int, unsigned int, CXAvailabilityKind)"}, + {"_ZN5clang20CodeCompletionStringC2EPKNS0_5ChunkEjj18CXAvailabilityKind", "clang::CodeCompletionString::CodeCompletionString(clang::CodeCompletionString::Chunk const*, unsigned int, unsigned int, CXAvailabilityKind)"}, + {"_ZNK5clang20CodeCompletionString11getAsStringEv", "clang::CodeCompletionString::getAsString() const"}, + {"_ZNK5clang20CodeCompletionString12getTypedTextEv", "clang::CodeCompletionString::getTypedText() const"}, + {"_ZN5clang23CodeCompletionAllocator10CopyStringEN4llvm9StringRefE", "clang::CodeCompletionAllocator::CopyString(llvm::StringRef)"}, + {"_ZN5clang21CodeCompletionBuilder10TakeStringEv", "clang::CodeCompletionBuilder::TakeString()"}, + {"_ZN5clang20CodeCompletionResult19getPriorityFromDeclEPNS_9NamedDeclE", "clang::CodeCompletionResult::getPriorityFromDecl(clang::NamedDecl*)"}, + {"_ZNK5clang20CodeCompleteConsumer17OverloadCandidate11getFunctionEv", "clang::CodeCompleteConsumer::OverloadCandidate::getFunction() const"}, + {"_ZNK5clang20CodeCompleteConsumer17OverloadCandidate15getFunctionTypeEv", "clang::CodeCompleteConsumer::OverloadCandidate::getFunctionType() const"}, + {"_ZN5clang20CodeCompleteConsumerD0Ev", "clang::CodeCompleteConsumer::~CodeCompleteConsumer()"}, + {"_ZN5clang20CodeCompleteConsumerD1Ev", "clang::CodeCompleteConsumer::~CodeCompleteConsumer()"}, + {"_ZN5clang20CodeCompleteConsumerD2Ev", "clang::CodeCompleteConsumer::~CodeCompleteConsumer()"}, + {"_ZN5clang28PrintingCodeCompleteConsumer26ProcessCodeCompleteResultsERNS_4SemaENS_21CodeCompletionContextEPNS_20CodeCompletionResultEj", "clang::PrintingCodeCompleteConsumer::ProcessCodeCompleteResults(clang::Sema&, clang::CodeCompletionContext, clang::CodeCompletionResult*, unsigned int)"}, + {"_ZN5clang28PrintingCodeCompleteConsumer25ProcessOverloadCandidatesERNS_4SemaEjPNS_20CodeCompleteConsumer17OverloadCandidateEj", "clang::PrintingCodeCompleteConsumer::ProcessOverloadCandidates(clang::Sema&, unsigned int, clang::CodeCompleteConsumer::OverloadCandidate*, unsigned int)"}, + {"_ZN5clang20CodeCompletionResult32computeCursorKindAndAvailabilityEv", "clang::CodeCompletionResult::computeCursorKindAndAvailability()"}, + {"_ZN5clangltERKNS_20CodeCompletionResultES2_", "clang::operator<(clang::CodeCompletionResult const&, clang::CodeCompletionResult const&)"}, + {"_Z14getOrderedNameRKN5clang20CodeCompletionResultERSs", "getOrderedName(clang::CodeCompletionResult const&, std::string&)"}, + {"_ZNK5clang4Decl7getAttrINS_15UnavailableAttrEEEPT_v", "clang::UnavailableAttr* clang::Decl::getAttr() const"}, + {"_ZNK5clang4Decl7getAttrINS_14DeprecatedAttrEEEPT_v", "clang::DeprecatedAttr* clang::Decl::getAttr() const"}, + {"_ZN5clang28PrintingCodeCompleteConsumerD1Ev", "clang::PrintingCodeCompleteConsumer::~PrintingCodeCompleteConsumer()"}, + {"_ZN5clang28PrintingCodeCompleteConsumerD0Ev", "clang::PrintingCodeCompleteConsumer::~PrintingCodeCompleteConsumer()"}, + + // {"_ZSt21__inplace_stable_sortIPN5clang20CodeCompletionResultEEvT_S3_", + // "void std::__inplace_stable_sort(clang::CodeCompletionResult*, clang::CodeCompletionResult*)"}, + // got error + + + // {"_ZSt22__stable_sort_adaptiveIPN5clang20CodeCompletionResultES2_lEvT_S3_T0_T1_", + // "void std::__stable_sort_adaptive(clang::CodeCompletionResult*, clang::CodeCompletionResult*, clang::CodeCompletionResult*, long)"}, + // got error + + + // {"_ZSt24__merge_sort_with_bufferIPN5clang20CodeCompletionResultES2_EvT_S3_T0_", + // "void std::__merge_sort_with_buffer(clang::CodeCompletionResult*, clang::CodeCompletionResult*, clang::CodeCompletionResult*)"}, + // got error + + + // {"_ZSt16__merge_adaptiveIPN5clang20CodeCompletionResultElS2_EvT_S3_S3_T0_S4_T1_S4_", + // "void std::__merge_adaptive(clang::CodeCompletionResult*, clang::CodeCompletionResult*, clang::CodeCompletionResult*, long, long, clang::CodeCompletionResult*, long)"}, + // got error + + + // {"_ZSt5mergeIPN5clang20CodeCompletionResultES2_S2_ET1_T_S4_T0_S5_S3_", + // "clang::CodeCompletionResult* std::merge(clang::CodeCompletionResult*, clang::CodeCompletionResult*, clang::CodeCompletionResult*, clang::CodeCompletionResult*, clang::CodeCompletionResult*)"}, + // got error + + + // {"_ZSt16__merge_backwardIPN5clang20CodeCompletionResultES2_S2_ET1_T_S4_T0_S5_S3_", + // "clang::CodeCompletionResult* std::__merge_backward(clang::CodeCompletionResult*, clang::CodeCompletionResult*, clang::CodeCompletionResult*, clang::CodeCompletionResult*, clang::CodeCompletionResult*)"}, + // got error + + + // {"_ZSt17__rotate_adaptiveIPN5clang20CodeCompletionResultES2_lET_S3_S3_S3_T1_S4_T0_S4_", + // "clang::CodeCompletionResult* std::__rotate_adaptive(clang::CodeCompletionResult*, clang::CodeCompletionResult*, clang::CodeCompletionResult*, long, long, clang::CodeCompletionResult*, long)"}, + // got error + + + // {"_ZSt8__rotateIPN5clang20CodeCompletionResultEEvT_S3_S3_St26random_access_iterator_tag", + // "void std::__rotate(clang::CodeCompletionResult*, clang::CodeCompletionResult*, clang::CodeCompletionResult*, std::random_access_iterator_tag)"}, + // got error + + + // {"_ZSt16__insertion_sortIPN5clang20CodeCompletionResultEEvT_S3_", + // "void std::__insertion_sort(clang::CodeCompletionResult*, clang::CodeCompletionResult*)"}, + // got error + + + // {"_ZSt22__merge_without_bufferIPN5clang20CodeCompletionResultElEvT_S3_S3_T0_S4_", + // "void std::__merge_without_buffer(clang::CodeCompletionResult*, clang::CodeCompletionResult*, clang::CodeCompletionResult*, long, long)"}, + // got error + + {"_ZN5clang13UnqualifiedId13setTemplateIdEPNS_20TemplateIdAnnotationE", "clang::UnqualifiedId::setTemplateId(clang::TemplateIdAnnotation*)"}, + {"_ZN5clang13UnqualifiedId24setConstructorTemplateIdEPNS_20TemplateIdAnnotationE", "clang::UnqualifiedId::setConstructorTemplateId(clang::TemplateIdAnnotation*)"}, + {"_ZN5clang15DeclaratorChunk11getFunctionERKNS_16ParsedAttributesEbbNS_14SourceLocationEPNS0_9ParamInfoEjjbS4_bS4_bPNS_9OpaquePtrINS_8QualTypeEEEPNS_11SourceRangeEjS4_S4_RNS_10DeclaratorES9_", "clang::DeclaratorChunk::getFunction(clang::ParsedAttributes const&, bool, bool, clang::SourceLocation, clang::DeclaratorChunk::ParamInfo*, unsigned int, unsigned int, bool, clang::SourceLocation, bool, clang::SourceLocation, bool, clang::OpaquePtr*, clang::SourceRange*, unsigned int, clang::SourceLocation, clang::SourceLocation, clang::Declarator&, clang::OpaquePtr)"}, + {"_ZNK5clang8DeclSpec19getParsedSpecifiersEv", "clang::DeclSpec::getParsedSpecifiers() const"}, + {"_ZN5clang8DeclSpec16getSpecifierNameENS0_3SCSE", "clang::DeclSpec::getSpecifierName(clang::DeclSpec::SCS)"}, + {"_ZN5clang8DeclSpec16getSpecifierNameENS_18TypeSpecifierWidthE", "clang::DeclSpec::getSpecifierName(clang::TypeSpecifierWidth)"}, + {"_ZN5clang8DeclSpec16getSpecifierNameENS0_3TSCE", "clang::DeclSpec::getSpecifierName(clang::DeclSpec::TSC)"}, + {"_ZN5clang8DeclSpec16getSpecifierNameENS_17TypeSpecifierSignE", "clang::DeclSpec::getSpecifierName(clang::TypeSpecifierSign)"}, + {"_ZN5clang8DeclSpec16getSpecifierNameENS_17TypeSpecifierTypeE", "clang::DeclSpec::getSpecifierName(clang::TypeSpecifierType)"}, + {"_ZN5clang8DeclSpec16getSpecifierNameENS0_2TQE", "clang::DeclSpec::getSpecifierName(clang::DeclSpec::TQ)"}, + {"_ZN5clang8DeclSpec19SetStorageClassSpecENS0_3SCSENS_14SourceLocationERPKcRj", "clang::DeclSpec::SetStorageClassSpec(clang::DeclSpec::SCS, clang::SourceLocation, char const*&, unsigned int&)"}, + {"_ZN5clang8DeclSpec25SetStorageClassSpecThreadENS_14SourceLocationERPKcRj", "clang::DeclSpec::SetStorageClassSpecThread(clang::SourceLocation, char const*&, unsigned int&)"}, + {"_ZN5clang8DeclSpec16SetTypeSpecWidthENS_18TypeSpecifierWidthENS_14SourceLocationERPKcRj", "clang::DeclSpec::SetTypeSpecWidth(clang::TypeSpecifierWidth, clang::SourceLocation, char const*&, unsigned int&)"}, + {"_ZN5clang8DeclSpec18SetTypeSpecComplexENS0_3TSCENS_14SourceLocationERPKcRj", "clang::DeclSpec::SetTypeSpecComplex(clang::DeclSpec::TSC, clang::SourceLocation, char const*&, unsigned int&)"}, + {"_ZN5clang8DeclSpec15SetTypeSpecSignENS_17TypeSpecifierSignENS_14SourceLocationERPKcRj", "clang::DeclSpec::SetTypeSpecSign(clang::TypeSpecifierSign, clang::SourceLocation, char const*&, unsigned int&)"}, + {"_ZN5clang8DeclSpec15SetTypeSpecTypeENS_17TypeSpecifierTypeENS_14SourceLocationERPKcRjNS_9OpaquePtrINS_8QualTypeEEE", "clang::DeclSpec::SetTypeSpecType(clang::TypeSpecifierType, clang::SourceLocation, char const*&, unsigned int&, clang::OpaquePtr)"}, + {"_ZN5clang8DeclSpec15SetTypeSpecTypeENS_17TypeSpecifierTypeENS_14SourceLocationERPKcRjPNS_4ExprE", "clang::DeclSpec::SetTypeSpecType(clang::TypeSpecifierType, clang::SourceLocation, char const*&, unsigned int&, clang::Expr*)"}, + {"_ZN5clang8DeclSpec15SetTypeSpecTypeENS_17TypeSpecifierTypeENS_14SourceLocationERPKcRjPNS_4DeclEb", "clang::DeclSpec::SetTypeSpecType(clang::TypeSpecifierType, clang::SourceLocation, char const*&, unsigned int&, clang::Decl*, bool)"}, + {"_ZN5clang8DeclSpec15SetTypeSpecTypeENS_17TypeSpecifierTypeENS_14SourceLocationERPKcRj", "clang::DeclSpec::SetTypeSpecType(clang::TypeSpecifierType, clang::SourceLocation, char const*&, unsigned int&)"}, + {"_ZN5clang8DeclSpec20SetTypeAltiVecVectorEbNS_14SourceLocationERPKcRj", "clang::DeclSpec::SetTypeAltiVecVector(bool, clang::SourceLocation, char const*&, unsigned int&)"}, + {"_ZN5clang8DeclSpec19SetTypeAltiVecPixelEbNS_14SourceLocationERPKcRj", "clang::DeclSpec::SetTypeAltiVecPixel(bool, clang::SourceLocation, char const*&, unsigned int&)"}, + {"_ZN5clang8DeclSpec16SetTypeSpecErrorEv", "clang::DeclSpec::SetTypeSpecError()"}, + {"_ZN5clang8DeclSpec11SetTypeQualENS0_2TQENS_14SourceLocationERPKcRjRKNS_11LangOptionsE", "clang::DeclSpec::SetTypeQual(clang::DeclSpec::TQ, clang::SourceLocation, char const*&, unsigned int&, clang::LangOptions const&)"}, + {"_ZN5clang8DeclSpec21SetFunctionSpecInlineENS_14SourceLocationERPKcRj", "clang::DeclSpec::SetFunctionSpecInline(clang::SourceLocation, char const*&, unsigned int&)"}, + {"_ZN5clang8DeclSpec22SetFunctionSpecVirtualENS_14SourceLocationERPKcRj", "clang::DeclSpec::SetFunctionSpecVirtual(clang::SourceLocation, char const*&, unsigned int&)"}, + {"_ZN5clang8DeclSpec23SetFunctionSpecExplicitENS_14SourceLocationERPKcRj", "clang::DeclSpec::SetFunctionSpecExplicit(clang::SourceLocation, char const*&, unsigned int&)"}, + {"_ZN5clang8DeclSpec13SetFriendSpecENS_14SourceLocationERPKcRj", "clang::DeclSpec::SetFriendSpec(clang::SourceLocation, char const*&, unsigned int&)"}, + {"_ZN5clang8DeclSpec16SetConstexprSpecENS_14SourceLocationERPKcRj", "clang::DeclSpec::SetConstexprSpec(clang::SourceLocation, char const*&, unsigned int&)"}, + + // {"_ZN5clang8DeclSpec21setProtocolQualifiersEPKPNS_4DeclEjPNS_14SourceLocationES5_", + // "clang::DeclSpec::setProtocolQualifiers(clang::Decl* const*, unsigned int, clang::SourceLocation*, clang::SourceLocation)"}, + // "clang::DeclSpec::setProtocolQualifiers(clang::Decl* const*, unsigned int, clang::SourceLocation*, clang::SourceLocation*)" was returned + + {"_ZN5clang8DeclSpec23SaveWrittenBuiltinSpecsEv", "clang::DeclSpec::SaveWrittenBuiltinSpecs()"}, + {"_ZN5clang8DeclSpec29SaveStorageSpecifierAsWrittenEv", "clang::DeclSpec::SaveStorageSpecifierAsWritten()"}, + {"_ZN5clang8DeclSpec6FinishERNS_10DiagnosticERNS_12PreprocessorE", "clang::DeclSpec::Finish(clang::Diagnostic&, clang::Preprocessor&)"}, + {"_ZN5clang8DeclSpec21isMissingDeclaratorOkEv", "clang::DeclSpec::isMissingDeclaratorOk()"}, + {"_ZN5clang13UnqualifiedId5clearEv", "clang::UnqualifiedId::clear()"}, + {"_ZN5clang13UnqualifiedId21setOperatorFunctionIdENS_14SourceLocationENS_22OverloadedOperatorKindEPS1_", "clang::UnqualifiedId::setOperatorFunctionId(clang::SourceLocation, clang::OverloadedOperatorKind, clang::SourceLocation*)"}, + {"_ZN5clang14VirtSpecifiers12SetSpecifierENS0_9SpecifierENS_14SourceLocationERPKc", "clang::VirtSpecifiers::SetSpecifier(clang::VirtSpecifiers::Specifier, clang::SourceLocation, char const*&)"}, + {"_ZN5clang14VirtSpecifiers16getSpecifierNameENS0_9SpecifierE", "clang::VirtSpecifiers::getSpecifierName(clang::VirtSpecifiers::Specifier)"}, + {"_ZN5clang19ClassVirtSpecifiers12SetSpecifierENS0_9SpecifierENS_14SourceLocationERPKc", "clang::ClassVirtSpecifiers::SetSpecifier(clang::ClassVirtSpecifiers::Specifier, clang::SourceLocation, char const*&)"}, + {"_ZN5clang19ClassVirtSpecifiers16getSpecifierNameENS0_9SpecifierE", "clang::ClassVirtSpecifiers::getSpecifierName(clang::ClassVirtSpecifiers::Specifier)"}, + {"_ZN5clang18IdentifierResolver10IdDeclInfo10RemoveDeclEPNS_9NamedDeclE", "clang::IdentifierResolver::IdDeclInfo::RemoveDecl(clang::NamedDecl*)"}, + {"_ZN5clang18IdentifierResolver10IdDeclInfo11ReplaceDeclEPNS_9NamedDeclES3_", "clang::IdentifierResolver::IdDeclInfo::ReplaceDecl(clang::NamedDecl*, clang::NamedDecl*)"}, + {"_ZN5clang18IdentifierResolverC1ERKNS_11LangOptionsE", "clang::IdentifierResolver::IdentifierResolver(clang::LangOptions const&)"}, + {"_ZN5clang18IdentifierResolverC2ERKNS_11LangOptionsE", "clang::IdentifierResolver::IdentifierResolver(clang::LangOptions const&)"}, + {"_ZN5clang18IdentifierResolverD1Ev", "clang::IdentifierResolver::~IdentifierResolver()"}, + {"_ZN5clang18IdentifierResolverD2Ev", "clang::IdentifierResolver::~IdentifierResolver()"}, + {"_ZNK5clang18IdentifierResolver13isDeclInScopeEPNS_4DeclEPNS_11DeclContextERNS_10ASTContextEPNS_5ScopeE", "clang::IdentifierResolver::isDeclInScope(clang::Decl*, clang::DeclContext*, clang::ASTContext&, clang::Scope*) const"}, + {"_ZN5clang18IdentifierResolver7AddDeclEPNS_9NamedDeclE", "clang::IdentifierResolver::AddDecl(clang::NamedDecl*)"}, + {"_ZN5clang18IdentifierResolver13IdDeclInfoMapixENS_15DeclarationNameE", "clang::IdentifierResolver::IdDeclInfoMap::operator[](clang::DeclarationName)"}, + {"_ZN5clang18IdentifierResolver10RemoveDeclEPNS_9NamedDeclE", "clang::IdentifierResolver::RemoveDecl(clang::NamedDecl*)"}, + {"_ZN5clang18IdentifierResolver11ReplaceDeclEPNS_9NamedDeclES2_", "clang::IdentifierResolver::ReplaceDecl(clang::NamedDecl*, clang::NamedDecl*)"}, + {"_ZN5clang18IdentifierResolver5beginENS_15DeclarationNameE", "clang::IdentifierResolver::begin(clang::DeclarationName)"}, + {"_ZN5clang18IdentifierResolver24AddDeclToIdentifierChainEPNS_14IdentifierInfoEPNS_9NamedDeclE", "clang::IdentifierResolver::AddDeclToIdentifierChain(clang::IdentifierInfo*, clang::NamedDecl*)"}, + {"_ZN5clang18IdentifierResolver8iterator17incrementSlowCaseEv", "clang::IdentifierResolver::iterator::incrementSlowCase()"}, + {"_ZN5clang4Sema20DiagnoseInvalidJumpsEPNS_4StmtE", "clang::Sema::DiagnoseInvalidJumps(clang::Stmt*)"}, + {"_ZN4llvm15SmallVectorImplIN12_GLOBAL__N_116JumpScopeChecker9GotoScopeEE9push_backERKS3_", "llvm::SmallVectorImpl<(anonymous namespace)::JumpScopeChecker::GotoScope>::push_back((anonymous namespace)::JumpScopeChecker::GotoScope const&)"}, + {"_ZN12_GLOBAL__N_116JumpScopeChecker21BuildScopeInformationEPN5clang4StmtEj", "(anonymous namespace)::JumpScopeChecker::BuildScopeInformation(clang::Stmt*, unsigned int)"}, + {"_ZN12_GLOBAL__N_116JumpScopeChecker9CheckJumpEPN5clang4StmtES3_NS1_14SourceLocationEj", "(anonymous namespace)::JumpScopeChecker::CheckJump(clang::Stmt*, clang::Stmt*, clang::SourceLocation, unsigned int)"}, + {"_ZN12_GLOBAL__N_116JumpScopeChecker21BuildScopeInformationEPN5clang4DeclERj", "(anonymous namespace)::JumpScopeChecker::BuildScopeInformation(clang::Decl*, unsigned int&)"}, + {"_ZN4llvm8DenseMapIjPN5clang9LabelStmtENS_12DenseMapInfoIjEENS4_IS3_EEE16InsertIntoBucketERKjRKS3_PSt4pairIjS3_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(unsigned int const&, clang::LabelStmt* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIjPN5clang9LabelStmtENS_12DenseMapInfoIjEENS4_IS3_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIjPN5clang16IndirectGotoStmtENS_12DenseMapInfoIjEENS4_IS3_EEE16InsertIntoBucketERKjRKS3_PSt4pairIjS3_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(unsigned int const&, clang::IndirectGotoStmt* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIjPN5clang16IndirectGotoStmtENS_12DenseMapInfoIjEENS4_IS3_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPN5clang4StmtEjNS_12DenseMapInfoIS3_EENS4_IjEEE16InsertIntoBucketERKS3_RKjPSt4pairIS3_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::Stmt* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPN5clang4StmtEjNS_12DenseMapInfoIS3_EENS4_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang4sema17FunctionScopeInfoD0Ev", "clang::sema::FunctionScopeInfo::~FunctionScopeInfo()"}, + {"_ZN5clang4sema17FunctionScopeInfoD1Ev", "clang::sema::FunctionScopeInfo::~FunctionScopeInfo()"}, + {"_ZN5clang4sema17FunctionScopeInfoD2Ev", "clang::sema::FunctionScopeInfo::~FunctionScopeInfo()"}, + {"_ZN5clang4sema17FunctionScopeInfo5ClearEv", "clang::sema::FunctionScopeInfo::Clear()"}, + {"_ZN5clang4sema14BlockScopeInfoD0Ev", "clang::sema::BlockScopeInfo::~BlockScopeInfo()"}, + {"_ZN5clang4sema14BlockScopeInfoD1Ev", "clang::sema::BlockScopeInfo::~BlockScopeInfo()"}, + {"_ZN5clang4sema14BlockScopeInfoD2Ev", "clang::sema::BlockScopeInfo::~BlockScopeInfo()"}, + {"_ZN5clang4Sema25ActOnTranslationUnitScopeEPNS_5ScopeE", "clang::Sema::ActOnTranslationUnitScope(clang::Scope*)"}, + {"_ZN5clang4SemaC1ERNS_12PreprocessorERNS_10ASTContextERNS_11ASTConsumerEbPNS_20CodeCompleteConsumerE", "clang::Sema::Sema(clang::Preprocessor&, clang::ASTContext&, clang::ASTConsumer&, bool, clang::CodeCompleteConsumer*)"}, + {"_ZN5clang4SemaC2ERNS_12PreprocessorERNS_10ASTContextERNS_11ASTConsumerEbPNS_20CodeCompleteConsumerE", "clang::Sema::Sema(clang::Preprocessor&, clang::ASTContext&, clang::ASTConsumer&, bool, clang::CodeCompleteConsumer*)"}, + {"_ZN5clang4Sema10InitializeEv", "clang::Sema::Initialize()"}, + {"_ZN5clang4SemaD1Ev", "clang::Sema::~Sema()"}, + {"_ZN5clang4SemaD2Ev", "clang::Sema::~Sema()"}, + + // {"_ZN5clang4Sema17ImpCastExprToTypeERPNS_4ExprENS_8QualTypeENS_8CastKindENS_13ExprValueKindEPKN4llvm11SmallVectorIPNS_16CXXBaseSpecifierELj4EEE", + // "clang::Sema::ImpCastExprToType(clang::Expr*&, clang::QualType, clang::CastKind, clang::ExprValueKind, llvm::SmallVector const*)"}, + // "clang::Sema::ImpCastExprToType(clang::Expr*&, clang::QualType, clang::CastKind, clang::ExprValueKind, llvm::SmallVector const*)" was returned + + {"_ZN5clang4Sema12CastCategoryEPNS_4ExprE", "clang::Sema::CastCategory(clang::Expr*)"}, + {"_ZN5clang4Sema25ActOnEndOfTranslationUnitEv", "clang::Sema::ActOnEndOfTranslationUnit()"}, + {"_Z22ShouldRemoveFromUnusedPN5clang4SemaEPKNS_14DeclaratorDeclE", "ShouldRemoveFromUnused(clang::Sema*, clang::DeclaratorDecl const*)"}, + {"_ZN5clang4Sema4DiagENS_14SourceLocationEj", "clang::Sema::Diag(clang::SourceLocation, unsigned int)"}, + {"_ZN5clang4Sema21SemaDiagnosticBuilderD1Ev", "clang::Sema::SemaDiagnosticBuilder::~SemaDiagnosticBuilder()"}, + {"_ZN5clang4Sema27getFunctionLevelDeclContextEv", "clang::Sema::getFunctionLevelDeclContext()"}, + {"_ZN5clang4Sema18getCurFunctionDeclEv", "clang::Sema::getCurFunctionDecl()"}, + {"_ZN5clang4Sema16getCurMethodDeclEv", "clang::Sema::getCurMethodDecl()"}, + {"_ZN5clang4Sema26getCurFunctionOrMethodDeclEv", "clang::Sema::getCurFunctionOrMethodDecl()"}, + {"_ZN5clang4Sema21SemaDiagnosticBuilderD2Ev", "clang::Sema::SemaDiagnosticBuilder::~SemaDiagnosticBuilder()"}, + {"_ZN5clang4Sema4DiagENS_14SourceLocationERKNS_17PartialDiagnosticE", "clang::Sema::Diag(clang::SourceLocation, clang::PartialDiagnostic const&)"}, + {"_ZN5clang4Sema18getScopeForContextEPNS_11DeclContextE", "clang::Sema::getScopeForContext(clang::DeclContext*)"}, + {"_ZN5clang4Sema17PushFunctionScopeEv", "clang::Sema::PushFunctionScope()"}, + {"_ZN5clang4Sema14PushBlockScopeEPNS_5ScopeEPNS_9BlockDeclE", "clang::Sema::PushBlockScope(clang::Scope*, clang::BlockDecl*)"}, + {"_ZN5clang4Sema23PopFunctionOrBlockScopeEv", "clang::Sema::PopFunctionOrBlockScope()"}, + {"_ZNK5clang4Sema26hasAnyErrorsInThisFunctionEv", "clang::Sema::hasAnyErrorsInThisFunction() const"}, + {"_ZN5clang4Sema11getCurBlockEv", "clang::Sema::getCurBlock()"}, + {"_ZN5clang18ExternalSemaSourceD0Ev", "clang::ExternalSemaSource::~ExternalSemaSource()"}, + {"_ZN5clang18ExternalSemaSourceD1Ev", "clang::ExternalSemaSource::~ExternalSemaSource()"}, + {"_ZN5clang18ExternalSemaSourceD2Ev", "clang::ExternalSemaSource::~ExternalSemaSource()"}, + {"_ZN5clang18ExternalSemaSource14ReadMethodPoolENS_8SelectorE", "clang::ExternalSemaSource::ReadMethodPool(clang::Selector)"}, + {"_ZNK5clang25PrettyDeclStackTraceEntry5printERN4llvm11raw_ostreamE", "clang::PrettyDeclStackTraceEntry::print(llvm::raw_ostream&) const"}, + {"_ZN5clang4sema21TemplateDeductionInfo23addSuppressedDiagnosticENS_14SourceLocationERKNS_17PartialDiagnosticE", "clang::sema::TemplateDeductionInfo::addSuppressedDiagnostic(clang::SourceLocation, clang::PartialDiagnostic const&)"}, + {"_ZNK5clang17PartialDiagnostic4EmitERKNS_17DiagnosticBuilderE", "clang::PartialDiagnostic::Emit(clang::DiagnosticBuilder const&) const"}, + {"_ZN5clang25PrettyDeclStackTraceEntryD1Ev", "clang::PrettyDeclStackTraceEntry::~PrettyDeclStackTraceEntry()"}, + {"_ZN5clang25PrettyDeclStackTraceEntryD0Ev", "clang::PrettyDeclStackTraceEntry::~PrettyDeclStackTraceEntry()"}, + + // {"_ZSt9__find_ifIPPKN5clang14DeclaratorDeclESt9binder1stISt26pointer_to_binary_functionIPNS0_4SemaES3_bEEET_SB_SB_T0_St26random_access_iterator_tag", + // "clang::DeclaratorDecl const** std::__find_if>>(clang::DeclaratorDecl const**, clang::DeclaratorDecl const**, std::binder1st>, std::random_access_iterator_tag)"}, + // got error + + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang4Sema33ExpressionEvaluationContextRecordELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + + // {"_ZN4llvm8DenseMapIPN5clang4DeclENS_11SmallVectorISt4pairINS1_14SourceLocationENS1_17PartialDiagnosticEELj1EEENS_12DenseMapInfoIS3_EENSA_IS9_EEED2Ev", + // "llvm::DenseMap, 1u>, llvm::DenseMapInfo, llvm::DenseMapInfo, 1u>>>::~DenseMap()"}, + // "llvm::DenseMap, 1>, llvm::DenseMapInfo, llvm::DenseMapInfo, 1>>>::~DenseMap()" was returned + + {"_ZNSt11_Deque_baseISt4pairIPN5clang9ValueDeclENS1_14SourceLocationEESaIS5_EE17_M_initialize_mapEm", "std::_Deque_base, std::allocator>>::_M_initialize_map(unsigned long)"}, + {"_ZN4llvm8DenseMapIPN5clang14IdentifierInfoEPNS1_9LabelStmtENS_12DenseMapInfoIS3_EENS6_IS5_EEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN5clang4sema14BlockScopeInfoC2ERNS_10DiagnosticEPNS_5ScopeEPNS_9BlockDeclE", "clang::sema::BlockScopeInfo::BlockScopeInfo(clang::Diagnostic&, clang::Scope*, clang::BlockDecl*)"}, + {"_ZN5clang17PartialDiagnostic11freeStorageEv", "clang::PartialDiagnostic::freeStorage()"}, + {"_ZN5clang17PartialDiagnosticC2ERKNS_14DiagnosticInfoERNS0_16StorageAllocatorE", "clang::PartialDiagnostic::PartialDiagnostic(clang::DiagnosticInfo const&, clang::PartialDiagnostic::StorageAllocator&)"}, + {"_ZNK5clang17PartialDiagnostic9AddStringEN4llvm9StringRefE", "clang::PartialDiagnostic::AddString(llvm::StringRef) const"}, + {"_ZNK5clang17PartialDiagnostic10getStorageEv", "clang::PartialDiagnostic::getStorage() const"}, + {"_ZN5clang17PartialDiagnostic16StorageAllocator8AllocateEv", "clang::PartialDiagnostic::StorageAllocator::Allocate()"}, + {"_ZN5clang17PartialDiagnostic7StorageaSERKS1_", "clang::PartialDiagnostic::Storage::operator=(clang::PartialDiagnostic::Storage const&)"}, + {"_ZN4llvm23SmallVectorTemplateBaseISt4pairIN5clang14SourceLocationENS2_17PartialDiagnosticEELb0EE4growEm", "llvm::SmallVectorTemplateBase, false>::grow(unsigned long)"}, + {"_ZN5clang4Sema24SetMemberAccessSpecifierEPNS_9NamedDeclES2_NS_15AccessSpecifierE", "clang::Sema::SetMemberAccessSpecifier(clang::NamedDecl*, clang::NamedDecl*, clang::AccessSpecifier)"}, + {"_ZN5clang4Sema24HandleDelayedAccessCheckERNS_4sema17DelayedDiagnosticEPNS_4DeclE", "clang::Sema::HandleDelayedAccessCheck(clang::sema::DelayedDiagnostic&, clang::Decl*)"}, + {"_ZN12_GLOBAL__N_116EffectiveContextC1EPN5clang11DeclContextE", "(anonymous namespace)::EffectiveContext::EffectiveContext(clang::DeclContext*)"}, + {"_Z20CheckEffectiveAccessRN5clang4SemaERKN12_GLOBAL__N_116EffectiveContextENS_14SourceLocationERNS2_12AccessTargetE", "CheckEffectiveAccess(clang::Sema&, (anonymous namespace)::EffectiveContext const&, clang::SourceLocation, (anonymous namespace)::AccessTarget&)"}, + {"_ZN5clang4Sema26HandleDependentAccessCheckERKNS_19DependentDiagnosticERKNS_30MultiLevelTemplateArgumentListE", "clang::Sema::HandleDependentAccessCheck(clang::DependentDiagnostic const&, clang::MultiLevelTemplateArgumentList const&)"}, + {"_Z11CheckAccessRN5clang4SemaENS_14SourceLocationERN12_GLOBAL__N_112AccessTargetE", "CheckAccess(clang::Sema&, clang::SourceLocation, (anonymous namespace)::AccessTarget&)"}, + {"_ZN5clang4Sema27CheckUnresolvedLookupAccessEPNS_20UnresolvedLookupExprENS_14DeclAccessPairE", "clang::Sema::CheckUnresolvedLookupAccess(clang::UnresolvedLookupExpr*, clang::DeclAccessPair)"}, + {"_ZN5clang4Sema27CheckUnresolvedMemberAccessEPNS_20UnresolvedMemberExprENS_14DeclAccessPairE", "clang::Sema::CheckUnresolvedMemberAccess(clang::UnresolvedMemberExpr*, clang::DeclAccessPair)"}, + {"_ZN5clang4Sema21CheckDestructorAccessENS_14SourceLocationEPNS_17CXXDestructorDeclERKNS_17PartialDiagnosticE", "clang::Sema::CheckDestructorAccess(clang::SourceLocation, clang::CXXDestructorDecl*, clang::PartialDiagnostic const&)"}, + {"_ZN5clang4Sema22CheckConstructorAccessENS_14SourceLocationEPNS_18CXXConstructorDeclERKNS_17InitializedEntityENS_15AccessSpecifierEb", "clang::Sema::CheckConstructorAccess(clang::SourceLocation, clang::CXXConstructorDecl*, clang::InitializedEntity const&, clang::AccessSpecifier, bool)"}, + {"_ZN5clang4Sema23CheckDirectMemberAccessENS_14SourceLocationEPNS_9NamedDeclERKNS_17PartialDiagnosticE", "clang::Sema::CheckDirectMemberAccess(clang::SourceLocation, clang::NamedDecl*, clang::PartialDiagnostic const&)"}, + {"_ZN5clang4Sema21CheckAllocationAccessENS_14SourceLocationENS_11SourceRangeEPNS_13CXXRecordDeclENS_14DeclAccessPairE", "clang::Sema::CheckAllocationAccess(clang::SourceLocation, clang::SourceRange, clang::CXXRecordDecl*, clang::DeclAccessPair)"}, + {"_ZN5clang4Sema25CheckMemberOperatorAccessENS_14SourceLocationEPNS_4ExprES3_NS_14DeclAccessPairE", "clang::Sema::CheckMemberOperatorAccess(clang::SourceLocation, clang::Expr*, clang::Expr*, clang::DeclAccessPair)"}, + {"_ZN5clang4Sema26CheckAddressOfMemberAccessEPNS_4ExprENS_14DeclAccessPairE", "clang::Sema::CheckAddressOfMemberAccess(clang::Expr*, clang::DeclAccessPair)"}, + {"_ZN5clang4Sema20CheckBaseClassAccessENS_14SourceLocationENS_8QualTypeES2_RKNS_11CXXBasePathEjbb", "clang::Sema::CheckBaseClassAccess(clang::SourceLocation, clang::QualType, clang::QualType, clang::CXXBasePath const&, unsigned int, bool, bool)"}, + {"_ZN5clang4Sema17CheckLookupAccessERKNS_12LookupResultE", "clang::Sema::CheckLookupAccess(clang::LookupResult const&)"}, + {"_ZN5clang4Sema33ActOnStartSuppressingAccessChecksEv", "clang::Sema::ActOnStartSuppressingAccessChecks()"}, + {"_ZN5clang4Sema32ActOnStopSuppressingAccessChecksEv", "clang::Sema::ActOnStopSuppressingAccessChecks()"}, + {"_Z18FindDeclaringClassPN5clang9NamedDeclE", "FindDeclaringClass(clang::NamedDecl*)"}, + {"_Z9HasAccessRN5clang4SemaERKN12_GLOBAL__N_116EffectiveContextEPKNS_13CXXRecordDeclENS_15AccessSpecifierERKNS2_12AccessTargetE", "HasAccess(clang::Sema&, (anonymous namespace)::EffectiveContext const&, clang::CXXRecordDecl const*, clang::AccessSpecifier, (anonymous namespace)::AccessTarget const&)"}, + {"_Z12FindBestPathRN5clang4SemaERKN12_GLOBAL__N_116EffectiveContextERNS2_12AccessTargetENS_15AccessSpecifierERNS_12CXXBasePathsE", "FindBestPath(clang::Sema&, (anonymous namespace)::EffectiveContext const&, (anonymous namespace)::AccessTarget&, clang::AccessSpecifier, clang::CXXBasePaths&)"}, + {"_Z13GetFriendKindRN5clang4SemaERKN12_GLOBAL__N_116EffectiveContextEPKNS_13CXXRecordDeclE", "GetFriendKind(clang::Sema&, (anonymous namespace)::EffectiveContext const&, clang::CXXRecordDecl const*)"}, + {"_Z13MatchesFriendRN5clang4SemaERKN12_GLOBAL__N_116EffectiveContextEPKNS_13CXXRecordDeclE", "MatchesFriend(clang::Sema&, (anonymous namespace)::EffectiveContext const&, clang::CXXRecordDecl const*)"}, + {"_Z18MightInstantiateToRN5clang4SemaEPNS_12FunctionDeclES3_", "MightInstantiateTo(clang::Sema&, clang::FunctionDecl*, clang::FunctionDecl*)"}, + {"_Z22IsDerivedFromInclusivePKN5clang13CXXRecordDeclES2_", "IsDerivedFromInclusive(clang::CXXRecordDecl const*, clang::CXXRecordDecl const*)"}, + {"_ZN12_GLOBAL__N_122ProtectedFriendContext14findFriendshipEPKN5clang13CXXRecordDeclEj", "(anonymous namespace)::ProtectedFriendContext::findFriendship(clang::CXXRecordDecl const*, unsigned int)"}, + + // {"_ZSt6__findIPKPN5clang13CXXRecordDeclEPKS1_ET_S7_S7_RKT0_St26random_access_iterator_tag", + // "clang::CXXRecordDecl* const* std::__find(clang::CXXRecordDecl* const*, clang::CXXRecordDecl* const*, clang::CXXRecordDecl const* const&, std::random_access_iterator_tag)"}, + // got error + + {"_ZN5clang4Sema17FreePackedContextEv", "clang::Sema::FreePackedContext()"}, + {"_ZN5clang4Sema31AddAlignmentAttributesForRecordEPNS_10RecordDeclE", "clang::Sema::AddAlignmentAttributesForRecord(clang::RecordDecl*)"}, + {"_ZN5clang4Sema23ActOnPragmaOptionsAlignENS0_22PragmaOptionsAlignKindENS_14SourceLocationES2_", "clang::Sema::ActOnPragmaOptionsAlign(clang::Sema::PragmaOptionsAlignKind, clang::SourceLocation, clang::SourceLocation)"}, + {"_ZN12_GLOBAL__N_115PragmaPackStack4pushEPN5clang14IdentifierInfoE", "(anonymous namespace)::PragmaPackStack::push(clang::IdentifierInfo*)"}, + {"_ZN5clang4Sema15ActOnPragmaPackENS0_14PragmaPackKindEPNS_14IdentifierInfoEPNS_4ExprENS_14SourceLocationES6_S6_", "clang::Sema::ActOnPragmaPack(clang::Sema::PragmaPackKind, clang::IdentifierInfo*, clang::Expr*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)"}, + {"_ZN5clang4Sema17ActOnPragmaUnusedERKNS_5TokenEPNS_5ScopeENS_14SourceLocationE", "clang::Sema::ActOnPragmaUnused(clang::Token const&, clang::Scope*, clang::SourceLocation)"}, + {"_ZN5clang4Sema28AddPushedVisibilityAttributeEPNS_4DeclE", "clang::Sema::AddPushedVisibilityAttribute(clang::Decl*)"}, + {"_ZN5clang4Sema14FreeVisContextEv", "clang::Sema::FreeVisContext()"}, + {"_ZN5clang4Sema21ActOnPragmaVisibilityEbPKNS_14IdentifierInfoENS_14SourceLocationE", "clang::Sema::ActOnPragmaVisibility(bool, clang::IdentifierInfo const*, clang::SourceLocation)"}, + {"_ZN5clang4Sema19PopPragmaVisibilityEv", "clang::Sema::PopPragmaVisibility()"}, + {"_ZN5clang4Sema27PushNamespaceVisibilityAttrEPKNS_14VisibilityAttrE", "clang::Sema::PushNamespaceVisibilityAttr(clang::VisibilityAttr const*)"}, + {"_ZN5clang4Decl7addAttrEPNS_4AttrE", "clang::Decl::addAttr(clang::Attr*)"}, + {"_ZNSt6vectorISt4pairIjN5clang14SourceLocationEESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + {"_ZN5clang15InheritableAttrD1Ev", "clang::InheritableAttr::~InheritableAttr()"}, + {"_ZN5clang15InheritableAttrD0Ev", "clang::InheritableAttr::~InheritableAttr()"}, + + // {"_ZN4llvm11SmallVectorIPN5clang4AttrELj2EEC2EjRKS3_", + // "llvm::SmallVector::SmallVector(unsigned int, clang::Attr* const&)"}, + // "llvm::SmallVector::SmallVector(unsigned int, clang::Attr* const&)" was returned + + {"_ZN5clang4Sema17ActOnCXXNamedCastENS_14SourceLocationENS_3tok9TokenKindES1_NS_9OpaquePtrINS_8QualTypeEEES1_S1_PNS_4ExprES1_", "clang::Sema::ActOnCXXNamedCast(clang::SourceLocation, clang::tok::TokenKind, clang::SourceLocation, clang::OpaquePtr, clang::SourceLocation, clang::SourceLocation, clang::Expr*, clang::SourceLocation)"}, + {"_ZN5clang4Sema17BuildCXXNamedCastENS_14SourceLocationENS_3tok9TokenKindEPNS_14TypeSourceInfoEPNS_4ExprENS_11SourceRangeES8_", "clang::Sema::BuildCXXNamedCast(clang::SourceLocation, clang::tok::TokenKind, clang::TypeSourceInfo*, clang::Expr*, clang::SourceRange, clang::SourceRange)"}, + + // {"_ZN5clang4Sema18CXXCheckCStyleCastENS_11SourceRangeENS_8QualTypeERNS_13ExprValueKindERPNS_4ExprERNS_8CastKindERN4llvm11SmallVectorIPNS_16CXXBaseSpecifierELj4EEEb", + // "clang::Sema::CXXCheckCStyleCast(clang::SourceRange, clang::QualType, clang::ExprValueKind&, clang::Expr*&, clang::CastKind&, llvm::SmallVector&, bool)"}, + // "clang::Sema::CXXCheckCStyleCast(clang::SourceRange, clang::QualType, clang::ExprValueKind&, clang::Expr*&, clang::CastKind&, llvm::SmallVector&, bool)" was returned + + {"_Z12TryConstCastRN5clang4SemaEPNS_4ExprENS_8QualTypeEbRj", "TryConstCast(clang::Sema&, clang::Expr*, clang::QualType, bool, unsigned int&)"}, + + // {"_Z13TryStaticCastRN5clang4SemaERPNS_4ExprENS_8QualTypeEbRKNS_11SourceRangeERjRNS_8CastKindERN4llvm11SmallVectorIPNS_16CXXBaseSpecifierELj4EEE", + // "TryStaticCast(clang::Sema&, clang::Expr*&, clang::QualType, bool, clang::SourceRange const&, unsigned int&, clang::CastKind&, llvm::SmallVector&)"}, + // "TryStaticCast(clang::Sema&, clang::Expr*&, clang::QualType, bool, clang::SourceRange const&, unsigned int&, clang::CastKind&, llvm::SmallVector&)" was returned + + {"_Z18TryReinterpretCastRN5clang4SemaEPNS_4ExprENS_8QualTypeEbRKNS_11SourceRangeERjRNS_8CastKindE", "TryReinterpretCast(clang::Sema&, clang::Expr*, clang::QualType, bool, clang::SourceRange const&, unsigned int&, clang::CastKind&)"}, + {"_Z18CastsAwayConstnessRN5clang4SemaENS_8QualTypeES2_", "CastsAwayConstness(clang::Sema&, clang::QualType, clang::QualType)"}, + + // {"_Z17TryStaticDowncastRN5clang4SemaENS_7CanQualINS_4TypeEEES4_bRKNS_11SourceRangeENS_8QualTypeES8_RjRNS_8CastKindERN4llvm11SmallVectorIPNS_16CXXBaseSpecifierELj4EEE", + // "TryStaticDowncast(clang::Sema&, clang::CanQual, clang::CanQual, bool, clang::SourceRange const&, clang::QualType, clang::QualType, unsigned int&, clang::CastKind&, llvm::SmallVector&)"}, + // "TryStaticDowncast(clang::Sema&, clang::CanQual, clang::CanQual, bool, clang::SourceRange const&, clang::QualType, clang::QualType, unsigned int&, clang::CastKind&, llvm::SmallVector&)" was returned + + {"_Z25NoteAllOverloadCandidatesPN5clang4ExprERNS_4SemaE", "NoteAllOverloadCandidates(clang::Expr*, clang::Sema&)"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang10QualifiersELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN5clang4Sema18computeDeclContextENS_8QualTypeE", "clang::Sema::computeDeclContext(clang::QualType)"}, + {"_ZN5clang4Sema18computeDeclContextERKNS_12CXXScopeSpecEb", "clang::Sema::computeDeclContext(clang::CXXScopeSpec const&, bool)"}, + {"_ZN5clang4Sema25getCurrentInstantiationOfEPNS_19NestedNameSpecifierE", "clang::Sema::getCurrentInstantiationOf(clang::NestedNameSpecifier*)"}, + {"_ZN5clang4Sema25isDependentScopeSpecifierERKNS_12CXXScopeSpecE", "clang::Sema::isDependentScopeSpecifier(clang::CXXScopeSpec const&)"}, + {"_ZN5clang4Sema23isUnknownSpecializationERKNS_12CXXScopeSpecE", "clang::Sema::isUnknownSpecialization(clang::CXXScopeSpec const&)"}, + {"_ZN5clang4Sema26RequireCompleteDeclContextERNS_12CXXScopeSpecEPNS_11DeclContextE", "clang::Sema::RequireCompleteDeclContext(clang::CXXScopeSpec&, clang::DeclContext*)"}, + {"_ZN5clang4Sema28ActOnCXXGlobalScopeSpecifierEPNS_5ScopeENS_14SourceLocationE", "clang::Sema::ActOnCXXGlobalScopeSpecifier(clang::Scope*, clang::SourceLocation)"}, + {"_ZN5clang4Sema31isAcceptableNestedNameSpecifierEPNS_9NamedDeclE", "clang::Sema::isAcceptableNestedNameSpecifier(clang::NamedDecl*)"}, + {"_ZN5clang4Sema25FindFirstQualifierInScopeEPNS_5ScopeEPNS_19NestedNameSpecifierE", "clang::Sema::FindFirstQualifierInScope(clang::Scope*, clang::NestedNameSpecifier*)"}, + {"_ZN5clang4Sema28isNonTypeNestedNameSpecifierEPNS_5ScopeERNS_12CXXScopeSpecENS_14SourceLocationERNS_14IdentifierInfoENS_9OpaquePtrINS_8QualTypeEEE", "clang::Sema::isNonTypeNestedNameSpecifier(clang::Scope*, clang::CXXScopeSpec&, clang::SourceLocation, clang::IdentifierInfo&, clang::OpaquePtr)"}, + {"_ZN5clang4Sema27BuildCXXNestedNameSpecifierEPNS_5ScopeERNS_12CXXScopeSpecENS_14SourceLocationES5_RNS_14IdentifierInfoENS_8QualTypeEPNS_9NamedDeclEbb", "clang::Sema::BuildCXXNestedNameSpecifier(clang::Scope*, clang::CXXScopeSpec&, clang::SourceLocation, clang::SourceLocation, clang::IdentifierInfo&, clang::QualType, clang::NamedDecl*, bool, bool)"}, + {"_ZN5clang4Sema27ActOnCXXNestedNameSpecifierEPNS_5ScopeERNS_12CXXScopeSpecENS_14SourceLocationES5_RNS_14IdentifierInfoENS_9OpaquePtrINS_8QualTypeEEEb", "clang::Sema::ActOnCXXNestedNameSpecifier(clang::Scope*, clang::CXXScopeSpec&, clang::SourceLocation, clang::SourceLocation, clang::IdentifierInfo&, clang::OpaquePtr, bool)"}, + {"_ZN5clang4Sema25IsInvalidUnlessNestedNameEPNS_5ScopeERNS_12CXXScopeSpecERNS_14IdentifierInfoENS_9OpaquePtrINS_8QualTypeEEEb", "clang::Sema::IsInvalidUnlessNestedName(clang::Scope*, clang::CXXScopeSpec&, clang::IdentifierInfo&, clang::OpaquePtr, bool)"}, + {"_ZN5clang4Sema27ActOnCXXNestedNameSpecifierEPNS_5ScopeERKNS_12CXXScopeSpecENS_9OpaquePtrINS_8QualTypeEEENS_11SourceRangeENS_14SourceLocationE", "clang::Sema::ActOnCXXNestedNameSpecifier(clang::Scope*, clang::CXXScopeSpec const&, clang::OpaquePtr, clang::SourceRange, clang::SourceLocation)"}, + {"_ZN5clang4Sema26ShouldEnterDeclaratorScopeEPNS_5ScopeERKNS_12CXXScopeSpecE", "clang::Sema::ShouldEnterDeclaratorScope(clang::Scope*, clang::CXXScopeSpec const&)"}, + {"_ZN5clang4Sema28ActOnCXXEnterDeclaratorScopeEPNS_5ScopeERNS_12CXXScopeSpecE", "clang::Sema::ActOnCXXEnterDeclaratorScope(clang::Scope*, clang::CXXScopeSpec&)"}, + {"_ZN5clang4Sema27ActOnCXXExitDeclaratorScopeEPNS_5ScopeERKNS_12CXXScopeSpecE", "clang::Sema::ActOnCXXExitDeclaratorScope(clang::Scope*, clang::CXXScopeSpec const&)"}, + {"_ZNK5clang4Sema30getLocationOfStringLiteralByteEPKNS_13StringLiteralEj", "clang::Sema::getLocationOfStringLiteralByte(clang::StringLiteral const*, unsigned int) const"}, + {"_ZN5clang4Sema19CheckablePrintfAttrEPKNS_10FormatAttrEPNS_8CallExprE", "clang::Sema::CheckablePrintfAttr(clang::FormatAttr const*, clang::CallExpr*)"}, + {"_ZN5clang4Sema24CheckBuiltinFunctionCallEjPNS_8CallExprE", "clang::Sema::CheckBuiltinFunctionCall(unsigned int, clang::CallExpr*)"}, + {"_ZN5clang4Sema22SemaBuiltinConstantArgEPNS_8CallExprEiRN4llvm6APSIntE", "clang::Sema::SemaBuiltinConstantArg(clang::CallExpr*, int, llvm::APSInt&)"}, + {"_ZN5clang4Sema15CheckObjCStringEPNS_4ExprE", "clang::Sema::CheckObjCString(clang::Expr*)"}, + {"_ZN5clang4Sema18SemaBuiltinVAStartEPNS_8CallExprE", "clang::Sema::SemaBuiltinVAStart(clang::CallExpr*)"}, + {"_ZN5clang4Sema27SemaBuiltinUnorderedCompareEPNS_8CallExprE", "clang::Sema::SemaBuiltinUnorderedCompare(clang::CallExpr*)"}, + {"_ZN5clang4Sema27SemaBuiltinFPClassificationEPNS_8CallExprEj", "clang::Sema::SemaBuiltinFPClassification(clang::CallExpr*, unsigned int)"}, + {"_ZN5clang4Sema24SemaBuiltinShuffleVectorEPNS_8CallExprE", "clang::Sema::SemaBuiltinShuffleVector(clang::CallExpr*)"}, + {"_ZN5clang4Sema19SemaBuiltinPrefetchEPNS_8CallExprE", "clang::Sema::SemaBuiltinPrefetch(clang::CallExpr*)"}, + {"_ZN5clang4Sema21SemaBuiltinObjectSizeEPNS_8CallExprE", "clang::Sema::SemaBuiltinObjectSize(clang::CallExpr*)"}, + {"_ZN5clang4Sema18SemaBuiltinLongjmpEPNS_8CallExprE", "clang::Sema::SemaBuiltinLongjmp(clang::CallExpr*)"}, + {"_ZN5clang4Sema27SemaBuiltinAtomicOverloadedENS_12ActionResultIPNS_4ExprELb1EEE", "clang::Sema::SemaBuiltinAtomicOverloaded(clang::ActionResult)"}, + {"_ZN5clang4Sema27CheckARMBuiltinFunctionCallEjPNS_8CallExprE", "clang::Sema::CheckARMBuiltinFunctionCall(unsigned int, clang::CallExpr*)"}, + {"_ZN5clang4Sema17CheckFunctionCallEPNS_12FunctionDeclEPNS_8CallExprE", "clang::Sema::CheckFunctionCall(clang::FunctionDecl*, clang::CallExpr*)"}, + {"_ZN5clang4Sema25CheckPrintfScanfArgumentsEPKNS_8CallExprEbjjb", "clang::Sema::CheckPrintfScanfArguments(clang::CallExpr const*, bool, unsigned int, unsigned int, bool)"}, + {"_ZN5clang4Sema21CheckNonNullArgumentsEPKNS_11NonNullAttrEPKNS_8CallExprE", "clang::Sema::CheckNonNullArguments(clang::NonNullAttr const*, clang::CallExpr const*)"}, + {"_ZN5clang4Sema14CheckBlockCallEPNS_9NamedDeclEPNS_8CallExprE", "clang::Sema::CheckBlockCall(clang::NamedDecl*, clang::CallExpr*)"}, + {"_ZN5clang4Sema22SemaCheckStringLiteralEPKNS_4ExprEPKNS_8CallExprEbjjb", "clang::Sema::SemaCheckStringLiteral(clang::Expr const*, clang::CallExpr const*, bool, unsigned int, unsigned int, bool)"}, + {"_ZN5clang4Sema17CheckFormatStringEPKNS_13StringLiteralEPKNS_4ExprEPKNS_8CallExprEbjjb", "clang::Sema::CheckFormatString(clang::StringLiteral const*, clang::Expr const*, clang::CallExpr const*, bool, unsigned int, unsigned int, bool)"}, + {"_ZN12_GLOBAL__N_118CheckFormatHandler14DoneProcessingEv", "(anonymous namespace)::CheckFormatHandler::DoneProcessing()"}, + {"_ZN12_GLOBAL__N_118CheckPrintfHandlerD1Ev", "(anonymous namespace)::CheckPrintfHandler::~CheckPrintfHandler()"}, + {"_ZN12_GLOBAL__N_117CheckScanfHandlerD1Ev", "(anonymous namespace)::CheckScanfHandler::~CheckScanfHandler()"}, + {"_ZN5clang4Sema20CheckReturnStackAddrEPNS_4ExprENS_8QualTypeENS_14SourceLocationE", "clang::Sema::CheckReturnStackAddr(clang::Expr*, clang::QualType, clang::SourceLocation)"}, + {"_Z8EvalAddrPN5clang4ExprERN4llvm15SmallVectorImplIPNS_11DeclRefExprEEE", "EvalAddr(clang::Expr*, llvm::SmallVectorImpl&)"}, + {"_Z7EvalValPN5clang4ExprERN4llvm15SmallVectorImplIPNS_11DeclRefExprEEE", "EvalVal(clang::Expr*, llvm::SmallVectorImpl&)"}, + {"_ZN5clang4Sema20CheckFloatComparisonENS_14SourceLocationEPNS_4ExprES3_", "clang::Sema::CheckFloatComparison(clang::SourceLocation, clang::Expr*, clang::Expr*)"}, + {"_ZN5clang4Sema24CheckImplicitConversionsEPNS_4ExprENS_14SourceLocationE", "clang::Sema::CheckImplicitConversions(clang::Expr*, clang::SourceLocation)"}, + {"_ZN12_GLOBAL__N_126AnalyzeImplicitConversionsERN5clang4SemaEPNS0_4ExprENS0_14SourceLocationE", "(anonymous namespace)::AnalyzeImplicitConversions(clang::Sema&, clang::Expr*, clang::SourceLocation)"}, + {"_ZN5clang4Sema27CheckBitFieldInitializationENS_14SourceLocationEPNS_9FieldDeclEPNS_4ExprE", "clang::Sema::CheckBitFieldInitialization(clang::SourceLocation, clang::FieldDecl*, clang::Expr*)"}, + {"_ZN12_GLOBAL__N_125AnalyzeBitFieldAssignmentERN5clang4SemaEPNS0_9FieldDeclEPNS0_4ExprENS0_14SourceLocationE", "(anonymous namespace)::AnalyzeBitFieldAssignment(clang::Sema&, clang::FieldDecl*, clang::Expr*, clang::SourceLocation)"}, + {"_ZN5clang4Sema24CheckParmsForFunctionDefEPPNS_11ParmVarDeclES3_b", "clang::Sema::CheckParmsForFunctionDef(clang::ParmVarDecl**, clang::ParmVarDecl**, bool)"}, + {"_ZN5clang4Sema14CheckCastAlignEPNS_4ExprENS_8QualTypeENS_11SourceRangeE", "clang::Sema::CheckCastAlign(clang::Expr*, clang::QualType, clang::SourceRange)"}, + {"_ZN12_GLOBAL__N_124CheckConditionalOperatorERN5clang4SemaEPNS0_19ConditionalOperatorENS0_8QualTypeE", "(anonymous namespace)::CheckConditionalOperator(clang::Sema&, clang::ConditionalOperator*, clang::QualType)"}, + {"_ZN12_GLOBAL__N_123CheckImplicitConversionERN5clang4SemaEPNS0_4ExprENS0_8QualTypeENS0_14SourceLocationEPb", "(anonymous namespace)::CheckImplicitConversion(clang::Sema&, clang::Expr*, clang::QualType, clang::SourceLocation, bool*)"}, + {"_ZN12_GLOBAL__N_130CheckTrivialUnsignedComparisonERN5clang4SemaEPNS0_14BinaryOperatorE", "(anonymous namespace)::CheckTrivialUnsignedComparison(clang::Sema&, clang::BinaryOperator*)"}, + {"_ZN12_GLOBAL__N_112GetExprRangeERN5clang10ASTContextEPNS0_4ExprEj", "(anonymous namespace)::GetExprRange(clang::ASTContext&, clang::Expr*, unsigned int)"}, + {"_ZN12_GLOBAL__N_113GetValueRangeERN5clang10ASTContextERNS0_7APValueENS0_8QualTypeEj", "(anonymous namespace)::GetValueRange(clang::ASTContext&, clang::APValue&, clang::QualType, unsigned int)"}, + {"_ZN12_GLOBAL__N_18IntRange14forValueOfTypeERN5clang10ASTContextENS1_8QualTypeE", "(anonymous namespace)::IntRange::forValueOfType(clang::ASTContext&, clang::QualType)"}, + {"_ZN12_GLOBAL__N_113GetValueRangeERN5clang10ASTContextERN4llvm6APSIntEj", "(anonymous namespace)::GetValueRange(clang::ASTContext&, llvm::APSInt&, unsigned int)"}, + {"_ZN12_GLOBAL__N_16IsZeroERN5clang4SemaEPNS0_4ExprE", "(anonymous namespace)::IsZero(clang::Sema&, clang::Expr*)"}, + {"_ZN12_GLOBAL__N_115DiagnoseImpCastERN5clang4SemaEPNS0_4ExprENS0_8QualTypeENS0_14SourceLocationEj", "(anonymous namespace)::DiagnoseImpCast(clang::Sema&, clang::Expr*, clang::QualType, clang::SourceLocation, unsigned int)"}, + {"_ZN12_GLOBAL__N_120IsSameFloatAfterCastERKN5clang7APValueERKN4llvm12fltSemanticsES7_", "(anonymous namespace)::IsSameFloatAfterCast(clang::APValue const&, llvm::fltSemantics const&, llvm::fltSemantics const&)"}, + {"_ZN12_GLOBAL__N_123CheckConditionalOperandERN5clang4SemaEPNS0_4ExprENS0_8QualTypeENS0_14SourceLocationERb", "(anonymous namespace)::CheckConditionalOperand(clang::Sema&, clang::Expr*, clang::QualType, clang::SourceLocation, bool&)"}, + {"_ZN12_GLOBAL__N_117CheckScanfHandlerD0Ev", "(anonymous namespace)::CheckScanfHandler::~CheckScanfHandler()"}, + {"_ZN12_GLOBAL__N_118CheckFormatHandler14HandleNullCharEPKc", "(anonymous namespace)::CheckFormatHandler::HandleNullChar(char const*)"}, + {"_ZN12_GLOBAL__N_118CheckFormatHandler21HandleInvalidPositionEPKcjN5clang21analyze_format_string15PositionContextE", "(anonymous namespace)::CheckFormatHandler::HandleInvalidPosition(char const*, unsigned int, clang::analyze_format_string::PositionContext)"}, + {"_ZN12_GLOBAL__N_118CheckFormatHandler18HandleZeroPositionEPKcj", "(anonymous namespace)::CheckFormatHandler::HandleZeroPosition(char const*, unsigned int)"}, + {"_ZN12_GLOBAL__N_118CheckFormatHandler25HandleIncompleteSpecifierEPKcj", "(anonymous namespace)::CheckFormatHandler::HandleIncompleteSpecifier(char const*, unsigned int)"}, + {"_ZN12_GLOBAL__N_117CheckScanfHandler37HandleInvalidScanfConversionSpecifierERKN5clang13analyze_scanf14ScanfSpecifierEPKcj", "(anonymous namespace)::CheckScanfHandler::HandleInvalidScanfConversionSpecifier(clang::analyze_scanf::ScanfSpecifier const&, char const*, unsigned int)"}, + {"_ZN12_GLOBAL__N_117CheckScanfHandler20HandleScanfSpecifierERKN5clang13analyze_scanf14ScanfSpecifierEPKcj", "(anonymous namespace)::CheckScanfHandler::HandleScanfSpecifier(clang::analyze_scanf::ScanfSpecifier const&, char const*, unsigned int)"}, + {"_ZN12_GLOBAL__N_117CheckScanfHandler24HandleIncompleteScanListEPKcS2_", "(anonymous namespace)::CheckScanfHandler::HandleIncompleteScanList(char const*, char const*)"}, + {"_ZN12_GLOBAL__N_118CheckFormatHandler12CheckNumArgsERKN5clang21analyze_format_string15FormatSpecifierERKNS2_19ConversionSpecifierEPKcjj", "(anonymous namespace)::CheckFormatHandler::CheckNumArgs(clang::analyze_format_string::FormatSpecifier const&, clang::analyze_format_string::ConversionSpecifier const&, char const*, unsigned int, unsigned int)"}, + {"_ZN12_GLOBAL__N_118CheckFormatHandler32HandleInvalidConversionSpecifierEjN5clang14SourceLocationEPKcjS4_j", "(anonymous namespace)::CheckFormatHandler::HandleInvalidConversionSpecifier(unsigned int, clang::SourceLocation, char const*, unsigned int, char const*, unsigned int)"}, + {"_ZN12_GLOBAL__N_118CheckFormatHandlerD1Ev", "(anonymous namespace)::CheckFormatHandler::~CheckFormatHandler()"}, + {"_ZN12_GLOBAL__N_118CheckFormatHandlerD0Ev", "(anonymous namespace)::CheckFormatHandler::~CheckFormatHandler()"}, + {"_ZN12_GLOBAL__N_118CheckPrintfHandlerD0Ev", "(anonymous namespace)::CheckPrintfHandler::~CheckPrintfHandler()"}, + {"_ZN12_GLOBAL__N_118CheckPrintfHandler38HandleInvalidPrintfConversionSpecifierERKN5clang14analyze_printf15PrintfSpecifierEPKcj", "(anonymous namespace)::CheckPrintfHandler::HandleInvalidPrintfConversionSpecifier(clang::analyze_printf::PrintfSpecifier const&, char const*, unsigned int)"}, + {"_ZN12_GLOBAL__N_118CheckPrintfHandler21HandlePrintfSpecifierERKN5clang14analyze_printf15PrintfSpecifierEPKcj", "(anonymous namespace)::CheckPrintfHandler::HandlePrintfSpecifier(clang::analyze_printf::PrintfSpecifier const&, char const*, unsigned int)"}, + {"_ZN12_GLOBAL__N_118CheckPrintfHandler12HandleAmountERKN5clang21analyze_format_string14OptionalAmountEjPKcj", "(anonymous namespace)::CheckPrintfHandler::HandleAmount(clang::analyze_format_string::OptionalAmount const&, unsigned int, char const*, unsigned int)"}, + {"_ZN12_GLOBAL__N_118CheckPrintfHandler19HandleInvalidAmountERKN5clang14analyze_printf15PrintfSpecifierERKNS1_21analyze_format_string14OptionalAmountEjPKcj", "(anonymous namespace)::CheckPrintfHandler::HandleInvalidAmount(clang::analyze_printf::PrintfSpecifier const&, clang::analyze_format_string::OptionalAmount const&, unsigned int, char const*, unsigned int)"}, + {"_ZN12_GLOBAL__N_118CheckPrintfHandler10HandleFlagERKN5clang14analyze_printf15PrintfSpecifierERKNS1_21analyze_format_string12OptionalFlagEPKcj", "(anonymous namespace)::CheckPrintfHandler::HandleFlag(clang::analyze_printf::PrintfSpecifier const&, clang::analyze_format_string::OptionalFlag const&, char const*, unsigned int)"}, + {"_ZN12_GLOBAL__N_118CheckPrintfHandler17HandleIgnoredFlagERKN5clang14analyze_printf15PrintfSpecifierERKNS1_21analyze_format_string12OptionalFlagES9_PKcj", "(anonymous namespace)::CheckPrintfHandler::HandleIgnoredFlag(clang::analyze_printf::PrintfSpecifier const&, clang::analyze_format_string::OptionalFlag const&, clang::analyze_format_string::OptionalFlag const&, char const*, unsigned int)"}, + {"_ZNK5clang4Decl7getAttrINS_13FormatArgAttrEEEPT_v", "clang::FormatArgAttr* clang::Decl::getAttr() const"}, + + // {"_ZN4llvm11SmallVectorItLj128EEC2EjRKt", + // "llvm::SmallVector::SmallVector(unsigned int, unsigned short const&)"}, + // "llvm::SmallVector::SmallVector(unsigned int, unsigned short const&)" was returned + + {"_ZN5clang21analyze_format_string19FormatStringHandler38HandleInvalidPrintfConversionSpecifierERKNS_14analyze_printf15PrintfSpecifierEPKcj", "clang::analyze_format_string::FormatStringHandler::HandleInvalidPrintfConversionSpecifier(clang::analyze_printf::PrintfSpecifier const&, char const*, unsigned int)"}, + {"_ZN5clang21analyze_format_string19FormatStringHandler21HandlePrintfSpecifierERKNS_14analyze_printf15PrintfSpecifierEPKcj", "clang::analyze_format_string::FormatStringHandler::HandlePrintfSpecifier(clang::analyze_printf::PrintfSpecifier const&, char const*, unsigned int)"}, + {"_ZN5clang21analyze_format_string19FormatStringHandler37HandleInvalidScanfConversionSpecifierERKNS_13analyze_scanf14ScanfSpecifierEPKcj", "clang::analyze_format_string::FormatStringHandler::HandleInvalidScanfConversionSpecifier(clang::analyze_scanf::ScanfSpecifier const&, char const*, unsigned int)"}, + {"_ZN5clang21analyze_format_string19FormatStringHandler20HandleScanfSpecifierERKNS_13analyze_scanf14ScanfSpecifierEPKcj", "clang::analyze_format_string::FormatStringHandler::HandleScanfSpecifier(clang::analyze_scanf::ScanfSpecifier const&, char const*, unsigned int)"}, + {"_ZN5clang21analyze_format_string19FormatStringHandler24HandleIncompleteScanListEPKcS3_", "clang::analyze_format_string::FormatStringHandler::HandleIncompleteScanList(char const*, char const*)"}, + {"_ZN5clang21analyze_format_string19FormatStringHandler14HandleNullCharEPKc", "clang::analyze_format_string::FormatStringHandler::HandleNullChar(char const*)"}, + {"_ZN5clang21analyze_format_string19FormatStringHandler21HandleInvalidPositionEPKcjNS0_15PositionContextE", "clang::analyze_format_string::FormatStringHandler::HandleInvalidPosition(char const*, unsigned int, clang::analyze_format_string::PositionContext)"}, + {"_ZN5clang21analyze_format_string19FormatStringHandler18HandleZeroPositionEPKcj", "clang::analyze_format_string::FormatStringHandler::HandleZeroPosition(char const*, unsigned int)"}, + {"_ZN5clang21analyze_format_string19FormatStringHandler25HandleIncompleteSpecifierEPKcj", "clang::analyze_format_string::FormatStringHandler::HandleIncompleteSpecifier(char const*, unsigned int)"}, + {"_ZN5clang22getSimplifiedTypeClassENS_7CanQualINS_4TypeEEE", "clang::getSimplifiedTypeClass(clang::CanQual)"}, + {"_ZN5clang16getDeclUsageTypeERNS_10ASTContextEPNS_9NamedDeclE", "clang::getDeclUsageType(clang::ASTContext&, clang::NamedDecl*)"}, + {"_Z23GetCompletionTypeStringN5clang8QualTypeERNS_10ASTContextERNS_23CodeCompletionAllocatorE", "GetCompletionTypeString(clang::QualType, clang::ASTContext&, clang::CodeCompletionAllocator&)"}, + {"_ZN5clang20CodeCompletionResult26CreateCodeCompletionStringERNS_4SemaERNS_23CodeCompletionAllocatorE", "clang::CodeCompletionResult::CreateCodeCompletionString(clang::Sema&, clang::CodeCompletionAllocator&)"}, + {"_Z18AddResultTypeChunkRN5clang10ASTContextEPNS_9NamedDeclERNS_21CodeCompletionBuilderE", "AddResultTypeChunk(clang::ASTContext&, clang::NamedDecl*, clang::CodeCompletionBuilder&)"}, + {"_Z30AddQualifierToCompletionStringRN5clang21CodeCompletionBuilderEPNS_19NestedNameSpecifierEbRNS_10ASTContextE", "AddQualifierToCompletionString(clang::CodeCompletionBuilder&, clang::NestedNameSpecifier*, bool, clang::ASTContext&)"}, + {"_Z17AddTypedNameChunkRN5clang10ASTContextEPNS_9NamedDeclERNS_21CodeCompletionBuilderE", "AddTypedNameChunk(clang::ASTContext&, clang::NamedDecl*, clang::CodeCompletionBuilder&)"}, + {"_Z26AddFunctionParameterChunksRN5clang10ASTContextEPNS_12FunctionDeclERNS_21CodeCompletionBuilderEjb", "AddFunctionParameterChunks(clang::ASTContext&, clang::FunctionDecl*, clang::CodeCompletionBuilder&, unsigned int, bool)"}, + {"_Z38AddFunctionTypeQualsToCompletionStringRN5clang21CodeCompletionBuilderEPNS_12FunctionDeclE", "AddFunctionTypeQualsToCompletionString(clang::CodeCompletionBuilder&, clang::FunctionDecl*)"}, + {"_Z26AddTemplateParameterChunksRN5clang10ASTContextEPNS_12TemplateDeclERNS_21CodeCompletionBuilderEjjb", "AddTemplateParameterChunks(clang::ASTContext&, clang::TemplateDecl*, clang::CodeCompletionBuilder&, unsigned int, unsigned int, bool)"}, + {"_Z23FormatFunctionParameterRN5clang10ASTContextEPNS_11ParmVarDeclEb", "FormatFunctionParameter(clang::ASTContext&, clang::ParmVarDecl*, bool)"}, + {"_Z16MaybeAddSentinelRN5clang10ASTContextEPNS_9NamedDeclERNS_21CodeCompletionBuilderE", "MaybeAddSentinel(clang::ASTContext&, clang::NamedDecl*, clang::CodeCompletionBuilder&)"}, + {"_ZNK5clang20CodeCompleteConsumer17OverloadCandidate21CreateSignatureStringEjRNS_4SemaERNS_23CodeCompletionAllocatorE", "clang::CodeCompleteConsumer::OverloadCandidate::CreateSignatureString(unsigned int, clang::Sema&, clang::CodeCompletionAllocator&) const"}, + {"_ZN5clang21getMacroUsagePriorityEN4llvm9StringRefERKNS_11LangOptionsEb", "clang::getMacroUsagePriority(llvm::StringRef, clang::LangOptions const&, bool)"}, + {"_ZN5clang20getCursorKindForDeclEPNS_4DeclE", "clang::getCursorKindForDecl(clang::Decl*)"}, + {"_ZN5clang4Sema24CodeCompleteOrdinaryNameEPNS_5ScopeENS0_23ParserCompletionContextE", "clang::Sema::CodeCompleteOrdinaryName(clang::Scope*, clang::Sema::ParserCompletionContext)"}, + {"_ZN12_GLOBAL__N_113ResultBuilder13EnterNewScopeEv", "(anonymous namespace)::ResultBuilder::EnterNewScope()"}, + {"_ZNK12_GLOBAL__N_113ResultBuilder22IsOrdinaryNonValueNameEPN5clang9NamedDeclE", "(anonymous namespace)::ResultBuilder::IsOrdinaryNonValueName(clang::NamedDecl*) const"}, + {"_ZNK12_GLOBAL__N_113ResultBuilder14IsOrdinaryNameEPN5clang9NamedDeclE", "(anonymous namespace)::ResultBuilder::IsOrdinaryName(clang::NamedDecl*) const"}, + {"_ZNK12_GLOBAL__N_113ResultBuilder21IsOrdinaryNonTypeNameEPN5clang9NamedDeclE", "(anonymous namespace)::ResultBuilder::IsOrdinaryNonTypeName(clang::NamedDecl*) const"}, + {"_Z21MaybeAddOverrideCallsRN5clang4SemaEPNS_11DeclContextERN12_GLOBAL__N_113ResultBuilderE", "MaybeAddOverrideCalls(clang::Sema&, clang::DeclContext*, (anonymous namespace)::ResultBuilder&)"}, + {"_Z22AddOrdinaryNameResultsN5clang4Sema23ParserCompletionContextEPNS_5ScopeERS0_RN12_GLOBAL__N_113ResultBuilderE", "AddOrdinaryNameResults(clang::Sema::ParserCompletionContext, clang::Scope*, clang::Sema&, (anonymous namespace)::ResultBuilder&)"}, + {"_ZN12_GLOBAL__N_113ResultBuilder9ExitScopeEv", "(anonymous namespace)::ResultBuilder::ExitScope()"}, + {"_Z24AddPrettyFunctionResultsRKN5clang11LangOptionsERN12_GLOBAL__N_113ResultBuilderE", "AddPrettyFunctionResults(clang::LangOptions const&, (anonymous namespace)::ResultBuilder&)"}, + {"_Z15AddMacroResultsRN5clang12PreprocessorERN12_GLOBAL__N_113ResultBuilderEb", "AddMacroResults(clang::Preprocessor&, (anonymous namespace)::ResultBuilder&, bool)"}, + {"_ZN12_GLOBAL__N_126CodeCompletionDeclConsumerD1Ev", "(anonymous namespace)::CodeCompletionDeclConsumer::~CodeCompletionDeclConsumer()"}, + {"_ZN5clang4Sema20CodeCompleteDeclSpecEPNS_5ScopeERNS_8DeclSpecEbb", "clang::Sema::CodeCompleteDeclSpec(clang::Scope*, clang::DeclSpec&, bool, bool)"}, + {"_ZNK12_GLOBAL__N_113ResultBuilder21IsImpossibleToSatisfyEPN5clang9NamedDeclE", "(anonymous namespace)::ResultBuilder::IsImpossibleToSatisfy(clang::NamedDecl*) const"}, + {"_Z26AddClassMessageCompletionsRN5clang4SemaEPNS_5ScopeENS_9OpaquePtrINS_8QualTypeEEEPPNS_14IdentifierInfoEjbbRN12_GLOBAL__N_113ResultBuilderE", "AddClassMessageCompletions(clang::Sema&, clang::Scope*, clang::OpaquePtr, clang::IdentifierInfo**, unsigned int, bool, bool, (anonymous namespace)::ResultBuilder&)"}, + {"_ZN5clang4Sema22CodeCompleteExpressionEPNS_5ScopeERKNS0_26CodeCompleteExpressionDataE", "clang::Sema::CodeCompleteExpression(clang::Scope*, clang::Sema::CodeCompleteExpressionData const&)"}, + {"_ZNK12_GLOBAL__N_113ResultBuilder16IsObjCCollectionEPN5clang9NamedDeclE", "(anonymous namespace)::ResultBuilder::IsObjCCollection(clang::NamedDecl*) const"}, + {"_ZNK12_GLOBAL__N_113ResultBuilder23IsIntegralConstantValueEPN5clang9NamedDeclE", "(anonymous namespace)::ResultBuilder::IsIntegralConstantValue(clang::NamedDecl*) const"}, + {"_ZN5clang4Sema29CodeCompletePostfixExpressionEPNS_5ScopeENS_12ActionResultIPNS_4ExprELb1EEE", "clang::Sema::CodeCompletePostfixExpression(clang::Scope*, clang::ActionResult)"}, + {"_ZN5clang4Sema31CodeCompleteObjCInstanceMessageEPNS_5ScopeEPNS_4ExprEPPNS_14IdentifierInfoEjbPNS_17ObjCInterfaceDeclE", "clang::Sema::CodeCompleteObjCInstanceMessage(clang::Scope*, clang::Expr*, clang::IdentifierInfo**, unsigned int, bool, clang::ObjCInterfaceDecl*)"}, + {"_ZN5clang4Sema31CodeCompleteMemberReferenceExprEPNS_5ScopeEPNS_4ExprENS_14SourceLocationEb", "clang::Sema::CodeCompleteMemberReferenceExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, bool)"}, + {"_ZNK12_GLOBAL__N_113ResultBuilder8IsMemberEPN5clang9NamedDeclE", "(anonymous namespace)::ResultBuilder::IsMember(clang::NamedDecl*) const"}, + + // {"_Z17AddObjCPropertiesPN5clang17ObjCContainerDeclEbPNS_11DeclContextERN4llvm11SmallPtrSetIPNS_14IdentifierInfoELj16EEERN12_GLOBAL__N_113ResultBuilderE", + // "AddObjCProperties(clang::ObjCContainerDecl*, bool, clang::DeclContext*, llvm::SmallPtrSet&, (anonymous namespace)::ResultBuilder&)"}, + // "AddObjCProperties(clang::ObjCContainerDecl*, bool, clang::DeclContext*, llvm::SmallPtrSet&, (anonymous namespace)::ResultBuilder&)" was returned + + {"_ZNK12_GLOBAL__N_113ResultBuilder10IsObjCIvarEPN5clang9NamedDeclE", "(anonymous namespace)::ResultBuilder::IsObjCIvar(clang::NamedDecl*) const"}, + {"_ZN5clang4Sema15CodeCompleteTagEPNS_5ScopeEj", "clang::Sema::CodeCompleteTag(clang::Scope*, unsigned int)"}, + {"_ZNK12_GLOBAL__N_113ResultBuilder6IsEnumEPN5clang9NamedDeclE", "(anonymous namespace)::ResultBuilder::IsEnum(clang::NamedDecl*) const"}, + {"_ZNK12_GLOBAL__N_113ResultBuilder7IsUnionEPN5clang9NamedDeclE", "(anonymous namespace)::ResultBuilder::IsUnion(clang::NamedDecl*) const"}, + {"_ZNK12_GLOBAL__N_113ResultBuilder15IsClassOrStructEPN5clang9NamedDeclE", "(anonymous namespace)::ResultBuilder::IsClassOrStruct(clang::NamedDecl*) const"}, + {"_ZNK12_GLOBAL__N_113ResultBuilder21IsNestedNameSpecifierEPN5clang9NamedDeclE", "(anonymous namespace)::ResultBuilder::IsNestedNameSpecifier(clang::NamedDecl*) const"}, + {"_ZN5clang4Sema26CodeCompleteTypeQualifiersERNS_8DeclSpecE", "clang::Sema::CodeCompleteTypeQualifiers(clang::DeclSpec&)"}, + {"_ZN5clang4Sema16CodeCompleteCaseEPNS_5ScopeE", "clang::Sema::CodeCompleteCase(clang::Scope*)"}, + {"_Z24getRequiredQualificationRN5clang10ASTContextEPNS_11DeclContextES3_", "getRequiredQualification(clang::ASTContext&, clang::DeclContext*, clang::DeclContext*)"}, + {"_ZN12_GLOBAL__N_113ResultBuilder9AddResultEN5clang20CodeCompletionResultEPNS1_11DeclContextEPNS1_9NamedDeclEb", "(anonymous namespace)::ResultBuilder::AddResult(clang::CodeCompletionResult, clang::DeclContext*, clang::NamedDecl*, bool)"}, + {"_ZN5clang4Sema16CodeCompleteCallEPNS_5ScopeEPNS_4ExprEPS4_j", "clang::Sema::CodeCompleteCall(clang::Scope*, clang::Expr*, clang::Expr**, unsigned int)"}, + {"_ZN5clang4Sema23CodeCompleteInitializerEPNS_5ScopeEPNS_4DeclE", "clang::Sema::CodeCompleteInitializer(clang::Scope*, clang::Decl*)"}, + {"_ZN5clang4Sema18CodeCompleteReturnEPNS_5ScopeE", "clang::Sema::CodeCompleteReturn(clang::Scope*)"}, + {"_ZN5clang4Sema25CodeCompleteAssignmentRHSEPNS_5ScopeEPNS_4ExprE", "clang::Sema::CodeCompleteAssignmentRHS(clang::Scope*, clang::Expr*)"}, + {"_ZN5clang4Sema23CodeCompleteQualifiedIdEPNS_5ScopeERNS_12CXXScopeSpecEb", "clang::Sema::CodeCompleteQualifiedId(clang::Scope*, clang::CXXScopeSpec&, bool)"}, + {"_ZN5clang4Sema17CodeCompleteUsingEPNS_5ScopeE", "clang::Sema::CodeCompleteUsing(clang::Scope*)"}, + {"_ZN5clang4Sema26CodeCompleteUsingDirectiveEPNS_5ScopeE", "clang::Sema::CodeCompleteUsingDirective(clang::Scope*)"}, + {"_ZNK12_GLOBAL__N_113ResultBuilder18IsNamespaceOrAliasEPN5clang9NamedDeclE", "(anonymous namespace)::ResultBuilder::IsNamespaceOrAlias(clang::NamedDecl*) const"}, + {"_ZN5clang4Sema25CodeCompleteNamespaceDeclEPNS_5ScopeE", "clang::Sema::CodeCompleteNamespaceDecl(clang::Scope*)"}, + {"_ZNK12_GLOBAL__N_113ResultBuilder11IsNamespaceEPN5clang9NamedDeclE", "(anonymous namespace)::ResultBuilder::IsNamespace(clang::NamedDecl*) const"}, + {"_ZN5clang4Sema30CodeCompleteNamespaceAliasDeclEPNS_5ScopeE", "clang::Sema::CodeCompleteNamespaceAliasDecl(clang::Scope*)"}, + {"_ZN5clang4Sema24CodeCompleteOperatorNameEPNS_5ScopeE", "clang::Sema::CodeCompleteOperatorName(clang::Scope*)"}, + {"_ZNK12_GLOBAL__N_113ResultBuilder6IsTypeEPN5clang9NamedDeclE", "(anonymous namespace)::ResultBuilder::IsType(clang::NamedDecl*) const"}, + {"_Z23AddTypeSpecifierResultsRKN5clang11LangOptionsERN12_GLOBAL__N_113ResultBuilderE", "AddTypeSpecifierResults(clang::LangOptions const&, (anonymous namespace)::ResultBuilder&)"}, + {"_ZN5clang4Sema34CodeCompleteConstructorInitializerEPNS_4DeclEPPNS_18CXXCtorInitializerEj", "clang::Sema::CodeCompleteConstructorInitializer(clang::Decl*, clang::CXXCtorInitializer**, unsigned int)"}, + {"_ZN5clang4Sema27CodeCompleteObjCAtDirectiveEPNS_5ScopeEPNS_4DeclEb", "clang::Sema::CodeCompleteObjCAtDirective(clang::Scope*, clang::Decl*, bool)"}, + {"_Z28AddObjCImplementationResultsRKN5clang11LangOptionsERN12_GLOBAL__N_113ResultBuilderEb", "AddObjCImplementationResults(clang::LangOptions const&, (anonymous namespace)::ResultBuilder&, bool)"}, + {"_Z23AddObjCInterfaceResultsRKN5clang11LangOptionsERN12_GLOBAL__N_113ResultBuilderEb", "AddObjCInterfaceResults(clang::LangOptions const&, (anonymous namespace)::ResultBuilder&, bool)"}, + {"_Z22AddObjCTopLevelResultsRN12_GLOBAL__N_113ResultBuilderEb", "AddObjCTopLevelResults((anonymous namespace)::ResultBuilder&, bool)"}, + {"_ZN5clang4Sema28CodeCompleteObjCAtVisibilityEPNS_5ScopeE", "clang::Sema::CodeCompleteObjCAtVisibility(clang::Scope*)"}, + {"_Z24AddObjCVisibilityResultsRKN5clang11LangOptionsERN12_GLOBAL__N_113ResultBuilderEb", "AddObjCVisibilityResults(clang::LangOptions const&, (anonymous namespace)::ResultBuilder&, bool)"}, + {"_ZN5clang4Sema27CodeCompleteObjCAtStatementEPNS_5ScopeE", "clang::Sema::CodeCompleteObjCAtStatement(clang::Scope*)"}, + {"_Z23AddObjCStatementResultsRN12_GLOBAL__N_113ResultBuilderEb", "AddObjCStatementResults((anonymous namespace)::ResultBuilder&, bool)"}, + {"_Z24AddObjCExpressionResultsRN12_GLOBAL__N_113ResultBuilderEb", "AddObjCExpressionResults((anonymous namespace)::ResultBuilder&, bool)"}, + {"_ZN5clang4Sema28CodeCompleteObjCAtExpressionEPNS_5ScopeE", "clang::Sema::CodeCompleteObjCAtExpression(clang::Scope*)"}, + {"_ZN5clang4Sema29CodeCompleteObjCPropertyFlagsEPNS_5ScopeERNS_12ObjCDeclSpecE", "clang::Sema::CodeCompleteObjCPropertyFlags(clang::Scope*, clang::ObjCDeclSpec&)"}, + {"_ZN5clang4Sema30CodeCompleteObjCPropertyGetterEPNS_5ScopeEPNS_4DeclE", "clang::Sema::CodeCompleteObjCPropertyGetter(clang::Scope*, clang::Decl*)"}, + + // {"_Z14AddObjCMethodsPN5clang17ObjCContainerDeclEb14ObjCMethodKindPPNS_14IdentifierInfoEjPNS_11DeclContextERN4llvm11SmallPtrSetINS_8SelectorELj16EEEbRN12_GLOBAL__N_113ResultBuilderEb", + // "AddObjCMethods(clang::ObjCContainerDecl*, bool, ObjCMethodKind, clang::IdentifierInfo**, unsigned int, clang::DeclContext*, llvm::SmallPtrSet&, bool, (anonymous namespace)::ResultBuilder&, bool)"}, + // "AddObjCMethods(clang::ObjCContainerDecl*, bool, ObjCMethodKind, clang::IdentifierInfo**, unsigned int, clang::DeclContext*, llvm::SmallPtrSet&, bool, (anonymous namespace)::ResultBuilder&, bool)" was returned + + {"_ZN5clang4Sema30CodeCompleteObjCPropertySetterEPNS_5ScopeEPNS_4DeclE", "clang::Sema::CodeCompleteObjCPropertySetter(clang::Scope*, clang::Decl*)"}, + {"_ZN5clang4Sema27CodeCompleteObjCPassingTypeEPNS_5ScopeERNS_12ObjCDeclSpecE", "clang::Sema::CodeCompleteObjCPassingType(clang::Scope*, clang::ObjCDeclSpec&)"}, + {"_ZN5clang4Sema31CodeCompleteObjCMessageReceiverEPNS_5ScopeE", "clang::Sema::CodeCompleteObjCMessageReceiver(clang::Scope*)"}, + {"_ZNK12_GLOBAL__N_113ResultBuilder21IsObjCMessageReceiverEPN5clang9NamedDeclE", "(anonymous namespace)::ResultBuilder::IsObjCMessageReceiver(clang::NamedDecl*) const"}, + {"_Z22AddSuperSendCompletionRN5clang4SemaEbPPNS_14IdentifierInfoEjRN12_GLOBAL__N_113ResultBuilderE", "AddSuperSendCompletion(clang::Sema&, bool, clang::IdentifierInfo**, unsigned int, (anonymous namespace)::ResultBuilder&)"}, + {"_ZN5clang4Sema28CodeCompleteObjCSuperMessageEPNS_5ScopeENS_14SourceLocationEPPNS_14IdentifierInfoEjb", "clang::Sema::CodeCompleteObjCSuperMessage(clang::Scope*, clang::SourceLocation, clang::IdentifierInfo**, unsigned int, bool)"}, + {"_ZN5clang4Sema28CodeCompleteObjCClassMessageEPNS_5ScopeENS_9OpaquePtrINS_8QualTypeEEEPPNS_14IdentifierInfoEjbb", "clang::Sema::CodeCompleteObjCClassMessage(clang::Scope*, clang::OpaquePtr, clang::IdentifierInfo**, unsigned int, bool, bool)"}, + {"_Z38getPreferredArgumentTypeForMessageSendRN12_GLOBAL__N_113ResultBuilderEj", "getPreferredArgumentTypeForMessageSend((anonymous namespace)::ResultBuilder&, unsigned int)"}, + {"_ZN12_GLOBAL__N_113ResultBuilder14MaybeAddResultEN5clang20CodeCompletionResultEPNS1_11DeclContextE", "(anonymous namespace)::ResultBuilder::MaybeAddResult(clang::CodeCompletionResult, clang::DeclContext*)"}, + {"_ZN5clang4Sema29CodeCompleteObjCForCollectionEPNS_5ScopeENS_9OpaquePtrINS_12DeclGroupRefEEE", "clang::Sema::CodeCompleteObjCForCollection(clang::Scope*, clang::OpaquePtr)"}, + {"_ZN5clang4Sema24CodeCompleteObjCSelectorEPNS_5ScopeEPPNS_14IdentifierInfoEj", "clang::Sema::CodeCompleteObjCSelector(clang::Scope*, clang::IdentifierInfo**, unsigned int)"}, + {"_Z24isAcceptableObjCSelectorN5clang8SelectorE14ObjCMethodKindPPNS_14IdentifierInfoEjb", "isAcceptableObjCSelector(clang::Selector, ObjCMethodKind, clang::IdentifierInfo**, unsigned int, bool)"}, + {"_ZN5clang4Sema34CodeCompleteObjCProtocolReferencesEPSt4pairIPNS_14IdentifierInfoENS_14SourceLocationEEj", "clang::Sema::CodeCompleteObjCProtocolReferences(std::pair*, unsigned int)"}, + {"_Z18AddProtocolResultsPN5clang11DeclContextES1_bRN12_GLOBAL__N_113ResultBuilderE", "AddProtocolResults(clang::DeclContext*, clang::DeclContext*, bool, (anonymous namespace)::ResultBuilder&)"}, + {"_ZN5clang4Sema28CodeCompleteObjCProtocolDeclEPNS_5ScopeE", "clang::Sema::CodeCompleteObjCProtocolDecl(clang::Scope*)"}, + {"_ZN5clang4Sema29CodeCompleteObjCInterfaceDeclEPNS_5ScopeE", "clang::Sema::CodeCompleteObjCInterfaceDecl(clang::Scope*)"}, + {"_Z19AddInterfaceResultsPN5clang11DeclContextES1_bbRN12_GLOBAL__N_113ResultBuilderE", "AddInterfaceResults(clang::DeclContext*, clang::DeclContext*, bool, bool, (anonymous namespace)::ResultBuilder&)"}, + {"_ZN5clang4Sema26CodeCompleteObjCSuperclassEPNS_5ScopeEPNS_14IdentifierInfoENS_14SourceLocationE", "clang::Sema::CodeCompleteObjCSuperclass(clang::Scope*, clang::IdentifierInfo*, clang::SourceLocation)"}, + {"_ZN5clang4Sema34CodeCompleteObjCImplementationDeclEPNS_5ScopeE", "clang::Sema::CodeCompleteObjCImplementationDecl(clang::Scope*)"}, + {"_ZN5clang4Sema33CodeCompleteObjCInterfaceCategoryEPNS_5ScopeEPNS_14IdentifierInfoENS_14SourceLocationE", "clang::Sema::CodeCompleteObjCInterfaceCategory(clang::Scope*, clang::IdentifierInfo*, clang::SourceLocation)"}, + {"_ZN5clang4Sema38CodeCompleteObjCImplementationCategoryEPNS_5ScopeEPNS_14IdentifierInfoENS_14SourceLocationE", "clang::Sema::CodeCompleteObjCImplementationCategory(clang::Scope*, clang::IdentifierInfo*, clang::SourceLocation)"}, + {"_ZN5clang4Sema34CodeCompleteObjCPropertyDefinitionEPNS_5ScopeEPNS_4DeclE", "clang::Sema::CodeCompleteObjCPropertyDefinition(clang::Scope*, clang::Decl*)"}, + {"_ZN5clang4Sema38CodeCompleteObjCPropertySynthesizeIvarEPNS_5ScopeEPNS_14IdentifierInfoEPNS_4DeclE", "clang::Sema::CodeCompleteObjCPropertySynthesizeIvar(clang::Scope*, clang::IdentifierInfo*, clang::Decl*)"}, + {"_ZN5clang4Sema26CodeCompleteObjCMethodDeclEPNS_5ScopeEbNS_9OpaquePtrINS_8QualTypeEEEPNS_4DeclE", "clang::Sema::CodeCompleteObjCMethodDecl(clang::Scope*, bool, clang::OpaquePtr, clang::Decl*)"}, + {"_Z24FindImplementableMethodsRN5clang10ASTContextEPNS_17ObjCContainerDeclEbNS_8QualTypeERN4llvm8DenseMapINS_8SelectorESt4pairIPNS_14ObjCMethodDeclEbENS5_12DenseMapInfoIS7_EENSC_ISB_EEEEb", "FindImplementableMethods(clang::ASTContext&, clang::ObjCContainerDecl*, bool, clang::QualType, llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>&, bool)"}, + {"_ZN5clang4Sema34CodeCompleteObjCMethodDeclSelectorEPNS_5ScopeEbbNS_9OpaquePtrINS_8QualTypeEEEPPNS_14IdentifierInfoEj", "clang::Sema::CodeCompleteObjCMethodDeclSelector(clang::Scope*, bool, bool, clang::OpaquePtr, clang::IdentifierInfo**, unsigned int)"}, + {"_ZN5clang4Sema33CodeCompletePreprocessorDirectiveEb", "clang::Sema::CodeCompletePreprocessorDirective(bool)"}, + {"_ZN5clang4Sema46CodeCompleteInPreprocessorConditionalExclusionEPNS_5ScopeE", "clang::Sema::CodeCompleteInPreprocessorConditionalExclusion(clang::Scope*)"}, + {"_ZN5clang4Sema33CodeCompletePreprocessorMacroNameEb", "clang::Sema::CodeCompletePreprocessorMacroName(bool)"}, + {"_ZN5clang4Sema34CodeCompletePreprocessorExpressionEv", "clang::Sema::CodeCompletePreprocessorExpression()"}, + {"_ZN5clang4Sema37CodeCompletePreprocessorMacroArgumentEPNS_5ScopeEPNS_14IdentifierInfoEPNS_9MacroInfoEj", "clang::Sema::CodeCompletePreprocessorMacroArgument(clang::Scope*, clang::IdentifierInfo*, clang::MacroInfo*, unsigned int)"}, + {"_ZN5clang4Sema27CodeCompleteNaturalLanguageEv", "clang::Sema::CodeCompleteNaturalLanguage()"}, + {"_ZN5clang4Sema27GatherGlobalCodeCompletionsERNS_23CodeCompletionAllocatorERN4llvm15SmallVectorImplINS_20CodeCompletionResultEEE", "clang::Sema::GatherGlobalCodeCompletions(clang::CodeCompletionAllocator&, llvm::SmallVectorImpl&)"}, + + // {"_ZSt21__inplace_stable_sortIPN5clang17OverloadCandidateEN12_GLOBAL__N_125IsBetterOverloadCandidateEEvT_S5_T0_", + // "void std::__inplace_stable_sort(clang::OverloadCandidate*, clang::OverloadCandidate*, (anonymous namespace)::IsBetterOverloadCandidate)"}, + // got error + + + // {"_ZSt22__stable_sort_adaptiveIPN5clang17OverloadCandidateES2_lN12_GLOBAL__N_125IsBetterOverloadCandidateEEvT_S5_T0_T1_T2_", + // "void std::__stable_sort_adaptive(clang::OverloadCandidate*, clang::OverloadCandidate*, clang::OverloadCandidate*, long, (anonymous namespace)::IsBetterOverloadCandidate)"}, + // got error + + + // {"_ZSt24__merge_sort_with_bufferIPN5clang17OverloadCandidateES2_N12_GLOBAL__N_125IsBetterOverloadCandidateEEvT_S5_T0_T1_", + // "void std::__merge_sort_with_buffer(clang::OverloadCandidate*, clang::OverloadCandidate*, clang::OverloadCandidate*, (anonymous namespace)::IsBetterOverloadCandidate)"}, + // got error + + + // {"_ZSt16__merge_adaptiveIPN5clang17OverloadCandidateElS2_N12_GLOBAL__N_125IsBetterOverloadCandidateEEvT_S5_S5_T0_S6_T1_S6_T2_", + // "void std::__merge_adaptive(clang::OverloadCandidate*, clang::OverloadCandidate*, clang::OverloadCandidate*, long, long, clang::OverloadCandidate*, long, (anonymous namespace)::IsBetterOverloadCandidate)"}, + // got error + + + // {"_ZSt5mergeIPN5clang17OverloadCandidateES2_S2_N12_GLOBAL__N_125IsBetterOverloadCandidateEET1_T_S6_T0_S7_S5_T2_", + // "clang::OverloadCandidate* std::merge(clang::OverloadCandidate*, clang::OverloadCandidate*, clang::OverloadCandidate*, clang::OverloadCandidate*, clang::OverloadCandidate*, (anonymous namespace)::IsBetterOverloadCandidate)"}, + // got error + + + // {"_ZSt16__insertion_sortIPN5clang17OverloadCandidateEN12_GLOBAL__N_125IsBetterOverloadCandidateEEvT_S5_T0_", + // "void std::__insertion_sort(clang::OverloadCandidate*, clang::OverloadCandidate*, (anonymous namespace)::IsBetterOverloadCandidate)"}, + // got error + + + // {"_ZSt22__merge_without_bufferIPN5clang17OverloadCandidateElN12_GLOBAL__N_125IsBetterOverloadCandidateEEvT_S5_S5_T0_S6_T1_", + // "void std::__merge_without_buffer(clang::OverloadCandidate*, clang::OverloadCandidate*, clang::OverloadCandidate*, long, long, (anonymous namespace)::IsBetterOverloadCandidate)"}, + // got error + + {"_ZNK12_GLOBAL__N_113ResultBuilder17isInterestingDeclEPN5clang9NamedDeclERb", "(anonymous namespace)::ResultBuilder::isInterestingDecl(clang::NamedDecl*, bool&) const"}, + {"_ZN12_GLOBAL__N_113ResultBuilder17CheckHiddenResultERN5clang20CodeCompletionResultEPNS1_11DeclContextEPNS1_9NamedDeclE", "(anonymous namespace)::ResultBuilder::CheckHiddenResult(clang::CodeCompletionResult&, clang::DeclContext*, clang::NamedDecl*)"}, + {"_ZN12_GLOBAL__N_113ResultBuilder27AdjustResultPriorityForDeclERN5clang20CodeCompletionResultE", "(anonymous namespace)::ResultBuilder::AdjustResultPriorityForDecl(clang::CodeCompletionResult&)"}, + {"_ZN12_GLOBAL__N_113ResultBuilder26MaybeAddConstructorResultsEN5clang20CodeCompletionResultE", "(anonymous namespace)::ResultBuilder::MaybeAddConstructorResults(clang::CodeCompletionResult)"}, + {"_ZN12_GLOBAL__N_126CodeCompletionDeclConsumerD0Ev", "(anonymous namespace)::CodeCompletionDeclConsumer::~CodeCompletionDeclConsumer()"}, + {"_ZN12_GLOBAL__N_126CodeCompletionDeclConsumer9FoundDeclEPN5clang9NamedDeclES3_b", "(anonymous namespace)::CodeCompletionDeclConsumer::FoundDecl(clang::NamedDecl*, clang::NamedDecl*, bool)"}, + {"_Z16AddTypedefResultRN12_GLOBAL__N_113ResultBuilderE", "AddTypedefResult((anonymous namespace)::ResultBuilder&)"}, + {"_Z20AddStorageSpecifiersN5clang4Sema23ParserCompletionContextERKNS_11LangOptionsERN12_GLOBAL__N_113ResultBuilderE", "AddStorageSpecifiers(clang::Sema::ParserCompletionContext, clang::LangOptions const&, (anonymous namespace)::ResultBuilder&)"}, + {"_Z21AddFunctionSpecifiersN5clang4Sema23ParserCompletionContextERKNS_11LangOptionsERN12_GLOBAL__N_113ResultBuilderE", "AddFunctionSpecifiers(clang::Sema::ParserCompletionContext, clang::LangOptions const&, (anonymous namespace)::ResultBuilder&)"}, + {"_ZNSt8_Rb_treeIPN5clang13NamespaceDeclESt4pairIKS2_S2_ESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS5_ERKS5_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIPN5clang13NamespaceDeclESt4pairIKS2_S2_ESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE16_M_insert_uniqueERKS5_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZNSt17_Temporary_bufferIPN5clang17OverloadCandidateES1_ED2Ev", "std::_Temporary_buffer::~_Temporary_buffer()"}, + + // {"_ZSt17__rotate_adaptiveIPN5clang17OverloadCandidateES2_lET_S3_S3_S3_T1_S4_T0_S4_", + // "clang::OverloadCandidate* std::__rotate_adaptive(clang::OverloadCandidate*, clang::OverloadCandidate*, clang::OverloadCandidate*, long, long, clang::OverloadCandidate*, long)"}, + // got error + + + // {"_ZSt8__rotateIPN5clang17OverloadCandidateEEvT_S3_S3_St26random_access_iterator_tag", + // "void std::__rotate(clang::OverloadCandidate*, clang::OverloadCandidate*, clang::OverloadCandidate*, std::random_access_iterator_tag)"}, + // got error + + {"_ZN4llvm15SmallVectorImplIN5clang26ImplicitConversionSequenceEEaSERKS3_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang26ImplicitConversionSequenceELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + + // {"_ZSt4swapIN5clang17OverloadCandidateEEvRT_S3_", + // "void std::swap(clang::OverloadCandidate&, clang::OverloadCandidate&)"}, + // got error + + + // {"_ZNSt15__copy_backwardILb0ESt26random_access_iterator_tagE8__copy_bIPN5clang17OverloadCandidateES5_EET0_T_S7_S6_", + // "clang::OverloadCandidate* std::__copy_backward::__copy_b(clang::OverloadCandidate*, clang::OverloadCandidate*, clang::OverloadCandidate*)"}, + // got error + + + // {"_ZNSt6__copyILb0ESt26random_access_iterator_tagE4copyIPN5clang17OverloadCandidateES5_EET0_T_S7_S6_", + // "clang::OverloadCandidate* std::__copy::copy(clang::OverloadCandidate*, clang::OverloadCandidate*, clang::OverloadCandidate*)"}, + // got error + + + // {"_ZSt26__uninitialized_fill_n_auxIPN5clang17OverloadCandidateElS1_EvT_T0_RKT1_St12__false_type", + // "void std::__uninitialized_fill_n_aux(clang::OverloadCandidate*, long, clang::OverloadCandidate const&, std::__false_type)"}, + // got error + + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang20CodeCompleteConsumer17OverloadCandidateELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + + // {"_ZN4llvm8DenseMapIN5clang8SelectorESt4pairIPNS1_14ObjCMethodDeclEbENS_12DenseMapInfoIS2_EENS7_IS6_EEE16InsertIntoBucketERKS2_RKS6_PS3_IS2_S6_E", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(clang::Selector const&, std::pair const&, std::pair>*)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(clang::Selector const&, std::pair const&, std::pair*>)" was returned + + {"_ZN4llvm8DenseMapIN5clang8SelectorESt4pairIPNS1_14ObjCMethodDeclEbENS_12DenseMapInfoIS2_EENS7_IS6_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)"}, + {"_ZNSt6vectorIN5clang20CodeCompletionResultESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, clang::CodeCompletionResult const&)"}, + {"_ZNSt8_Rb_treeIPN5clang13NamespaceDeclESt4pairIKS2_S2_ESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZN4llvm15SmallVectorImplIN5clang17OverloadCandidateEED2Ev", "llvm::SmallVectorImpl::~SmallVectorImpl()"}, + {"_ZNK5clang4Decl7getAttrINS_12SentinelAttrEEEPT_v", "clang::SentinelAttr* clang::Decl::getAttr() const"}, + {"_ZN5clang4Sema22ConvertDeclToDeclGroupEPNS_4DeclE", "clang::Sema::ConvertDeclToDeclGroup(clang::Decl*)"}, + {"_ZN5clang4Sema11getTypeNameERNS_14IdentifierInfoENS_14SourceLocationEPNS_5ScopeEPNS_12CXXScopeSpecEbbNS_9OpaquePtrINS_8QualTypeEEE", "clang::Sema::getTypeName(clang::IdentifierInfo&, clang::SourceLocation, clang::Scope*, clang::CXXScopeSpec*, bool, bool, clang::OpaquePtr)"}, + {"_ZN5clang4Sema9isTagNameERNS_14IdentifierInfoEPNS_5ScopeE", "clang::Sema::isTagName(clang::IdentifierInfo&, clang::Scope*)"}, + {"_ZN5clang4Sema23DiagnoseUnknownTypeNameERKNS_14IdentifierInfoENS_14SourceLocationEPNS_5ScopeEPNS_12CXXScopeSpecERNS_9OpaquePtrINS_8QualTypeEEE", "clang::Sema::DiagnoseUnknownTypeName(clang::IdentifierInfo const&, clang::SourceLocation, clang::Scope*, clang::CXXScopeSpec*, clang::OpaquePtr&)"}, + {"_ZN5clang4Sema15getContainingDCEPNS_11DeclContextE", "clang::Sema::getContainingDC(clang::DeclContext*)"}, + {"_ZN5clang4Sema15PushDeclContextEPNS_5ScopeEPNS_11DeclContextE", "clang::Sema::PushDeclContext(clang::Scope*, clang::DeclContext*)"}, + {"_ZN5clang4Sema14PopDeclContextEv", "clang::Sema::PopDeclContext()"}, + {"_ZN5clang4Sema22EnterDeclaratorContextEPNS_5ScopeEPNS_11DeclContextE", "clang::Sema::EnterDeclaratorContext(clang::Scope*, clang::DeclContext*)"}, + {"_ZN5clang4Sema21ExitDeclaratorContextEPNS_5ScopeE", "clang::Sema::ExitDeclaratorContext(clang::Scope*)"}, + {"_ZN5clang4Sema17PushOnScopeChainsEPNS_9NamedDeclEPNS_5ScopeEb", "clang::Sema::PushOnScopeChains(clang::NamedDecl*, clang::Scope*, bool)"}, + {"_ZN5clang4Sema13isDeclInScopeERPNS_9NamedDeclEPNS_11DeclContextEPNS_5ScopeE", "clang::Sema::isDeclInScope(clang::NamedDecl*&, clang::DeclContext*, clang::Scope*)"}, + {"_ZN5clang4Sema22getScopeForDeclContextEPNS_5ScopeEPNS_11DeclContextE", "clang::Sema::getScopeForDeclContext(clang::Scope*, clang::DeclContext*)"}, + {"_ZNK5clang4Sema32ShouldWarnIfUnusedFileScopedDeclEPKNS_14DeclaratorDeclE", "clang::Sema::ShouldWarnIfUnusedFileScopedDecl(clang::DeclaratorDecl const*) const"}, + {"_ZN5clang4Sema24MarkUnusedFileScopedDeclEPKNS_14DeclaratorDeclE", "clang::Sema::MarkUnusedFileScopedDecl(clang::DeclaratorDecl const*)"}, + {"_ZN5clang4Sema18DiagnoseUnusedDeclEPKNS_9NamedDeclE", "clang::Sema::DiagnoseUnusedDecl(clang::NamedDecl const*)"}, + {"_ZN5clang4Sema13ActOnPopScopeENS_14SourceLocationEPNS_5ScopeE", "clang::Sema::ActOnPopScope(clang::SourceLocation, clang::Scope*)"}, + {"_ZN5clang4Sema20getObjCInterfaceDeclERPNS_14IdentifierInfoENS_14SourceLocationEb", "clang::Sema::getObjCInterfaceDecl(clang::IdentifierInfo*&, clang::SourceLocation, bool)"}, + {"_ZN5clang4Sema20getNonFieldDeclScopeEPNS_5ScopeE", "clang::Sema::getNonFieldDeclScope(clang::Scope*)"}, + {"_ZN5clang4Sema19LazilyCreateBuiltinEPNS_14IdentifierInfoEjPNS_5ScopeEbNS_14SourceLocationE", "clang::Sema::LazilyCreateBuiltin(clang::IdentifierInfo*, unsigned int, clang::Scope*, bool, clang::SourceLocation)"}, + {"_ZN5clang4Sema26AddKnownFunctionAttributesEPNS_12FunctionDeclE", "clang::Sema::AddKnownFunctionAttributes(clang::FunctionDecl*)"}, + {"_ZN5clang4Sema16MergeTypeDefDeclEPNS_11TypedefDeclERNS_12LookupResultE", "clang::Sema::MergeTypeDefDecl(clang::TypedefDecl*, clang::LookupResult&)"}, + {"_ZN5clang4Sema16getSpecialMemberEPKNS_13CXXMethodDeclE", "clang::Sema::getSpecialMember(clang::CXXMethodDecl const*)"}, + {"_ZN5clang4Sema17MergeFunctionDeclEPNS_12FunctionDeclEPNS_4DeclE", "clang::Sema::MergeFunctionDecl(clang::FunctionDecl*, clang::Decl*)"}, + {"_ZN5clang4Sema28MergeCompatibleFunctionDeclsEPNS_12FunctionDeclES2_", "clang::Sema::MergeCompatibleFunctionDecls(clang::FunctionDecl*, clang::FunctionDecl*)"}, + {"_Z19MergeDeclAttributesPN5clang4DeclES1_RNS_10ASTContextE", "MergeDeclAttributes(clang::Decl*, clang::Decl*, clang::ASTContext&)"}, + {"_ZN5clang4Sema12MergeVarDeclEPNS_7VarDeclERNS_12LookupResultE", "clang::Sema::MergeVarDecl(clang::VarDecl*, clang::LookupResult&)"}, + {"_ZN5clang4Sema26ParsedFreeStandingDeclSpecEPNS_5ScopeENS_15AccessSpecifierERNS_8DeclSpecE", "clang::Sema::ParsedFreeStandingDeclSpec(clang::Scope*, clang::AccessSpecifier, clang::DeclSpec&)"}, + {"_ZN5clang4Sema27BuildAnonymousStructOrUnionEPNS_5ScopeERNS_8DeclSpecENS_15AccessSpecifierEPNS_10RecordDeclE", "clang::Sema::BuildAnonymousStructOrUnion(clang::Scope*, clang::DeclSpec&, clang::AccessSpecifier, clang::RecordDecl*)"}, + {"_ZN5clang4Sema30BuildMicrosoftCAnonymousStructEPNS_5ScopeERNS_8DeclSpecEPNS_10RecordDeclE", "clang::Sema::BuildMicrosoftCAnonymousStruct(clang::Scope*, clang::DeclSpec&, clang::RecordDecl*)"}, + {"_ZN5clang4Sema12ActOnVlaStmtERKNS_8DeclSpecE", "clang::Sema::ActOnVlaStmt(clang::DeclSpec const&)"}, + {"_ZN5clang4Sema20CheckNontrivialFieldEPNS_9FieldDeclE", "clang::Sema::CheckNontrivialField(clang::FieldDecl*)"}, + + // {"_Z35InjectAnonymousStructOrUnionMembersRN5clang4SemaEPNS_5ScopeEPNS_11DeclContextEPNS_10RecordDeclENS_15AccessSpecifierERN4llvm11SmallVectorIPNS_9NamedDeclELj2EEEb", + // "InjectAnonymousStructOrUnionMembers(clang::Sema&, clang::Scope*, clang::DeclContext*, clang::RecordDecl*, clang::AccessSpecifier, llvm::SmallVector&, bool)"}, + // "InjectAnonymousStructOrUnionMembers(clang::Sema&, clang::Scope*, clang::DeclContext*, clang::RecordDecl*, clang::AccessSpecifier, llvm::SmallVector&, bool)" was returned + + {"_ZN5clang4Sema20GetNameForDeclaratorERNS_10DeclaratorE", "clang::Sema::GetNameForDeclarator(clang::Declarator&)"}, + {"_ZN5clang4Sema24GetNameFromUnqualifiedIdERKNS_13UnqualifiedIdE", "clang::Sema::GetNameFromUnqualifiedId(clang::UnqualifiedId const&)"}, + {"_ZN5clang4Sema15ActOnDeclaratorEPNS_5ScopeERNS_10DeclaratorE", "clang::Sema::ActOnDeclarator(clang::Scope*, clang::Declarator&)"}, + {"_ZN5clang4Sema16HandleDeclaratorEPNS_5ScopeERNS_10DeclaratorENS_11ASTMultiPtrIPNS_21TemplateParameterListEEEb", "clang::Sema::HandleDeclarator(clang::Scope*, clang::Declarator&, clang::ASTMultiPtr, bool)"}, + {"_ZN5clang4Sema22ActOnTypedefDeclaratorEPNS_5ScopeERNS_10DeclaratorEPNS_11DeclContextENS_8QualTypeEPNS_14TypeSourceInfoERNS_12LookupResultERb", "clang::Sema::ActOnTypedefDeclarator(clang::Scope*, clang::Declarator&, clang::DeclContext*, clang::QualType, clang::TypeSourceInfo*, clang::LookupResult&, bool&)"}, + {"_ZN5clang4Sema23ActOnFunctionDeclaratorEPNS_5ScopeERNS_10DeclaratorEPNS_11DeclContextENS_8QualTypeEPNS_14TypeSourceInfoERNS_12LookupResultENS_11ASTMultiPtrIPNS_21TemplateParameterListEEEbRb", "clang::Sema::ActOnFunctionDeclarator(clang::Scope*, clang::Declarator&, clang::DeclContext*, clang::QualType, clang::TypeSourceInfo*, clang::LookupResult&, clang::ASTMultiPtr, bool, bool&)"}, + {"_ZN5clang4Sema23ActOnVariableDeclaratorEPNS_5ScopeERNS_10DeclaratorEPNS_11DeclContextENS_8QualTypeEPNS_14TypeSourceInfoERNS_12LookupResultENS_11ASTMultiPtrIPNS_21TemplateParameterListEEERb", "clang::Sema::ActOnVariableDeclarator(clang::Scope*, clang::Declarator&, clang::DeclContext*, clang::QualType, clang::TypeSourceInfo*, clang::LookupResult&, clang::ASTMultiPtr, bool&)"}, + {"_ZN5clang4Sema32RegisterLocallyScopedExternCDeclEPNS_9NamedDeclERKNS_12LookupResultEPNS_5ScopeE", "clang::Sema::RegisterLocallyScopedExternCDecl(clang::NamedDecl*, clang::LookupResult const&, clang::Scope*)"}, + {"_ZN5clang4Sema26DiagnoseFunctionSpecifiersERNS_10DeclaratorE", "clang::Sema::DiagnoseFunctionSpecifiers(clang::Declarator&)"}, + {"_ZN5clang4Sema16ParseTypedefDeclEPNS_5ScopeERNS_10DeclaratorENS_8QualTypeEPNS_14TypeSourceInfoE", "clang::Sema::ParseTypedefDecl(clang::Scope*, clang::Declarator&, clang::QualType, clang::TypeSourceInfo*)"}, + {"_Z35TryToFixInvalidVariablyModifiedTypeN5clang8QualTypeERNS_10ASTContextERbRN4llvm6APSIntE", "TryToFixInvalidVariablyModifiedType(clang::QualType, clang::ASTContext&, bool&, llvm::APSInt&)"}, + {"_Z20FilterLookupForScopeRN5clang4SemaERNS_12LookupResultEPNS_11DeclContextEPNS_5ScopeEb", "FilterLookupForScope(clang::Sema&, clang::LookupResult&, clang::DeclContext*, clang::Scope*, bool)"}, + {"_ZN5clang4Sema11CheckShadowEPNS_5ScopeEPNS_7VarDeclERKNS_12LookupResultE", "clang::Sema::CheckShadow(clang::Scope*, clang::VarDecl*, clang::LookupResult const&)"}, + {"_ZN5clang4Sema24CheckVariableDeclarationEPNS_7VarDeclERNS_12LookupResultERb", "clang::Sema::CheckVariableDeclaration(clang::VarDecl*, clang::LookupResult&, bool&)"}, + {"_ZN5clang4Sema11CheckShadowEPNS_5ScopeEPNS_7VarDeclE", "clang::Sema::CheckShadow(clang::Scope*, clang::VarDecl*)"}, + {"_ZN5clang4Sema20AddOverriddenMethodsEPNS_13CXXRecordDeclEPNS_13CXXMethodDeclE", "clang::Sema::AddOverriddenMethods(clang::CXXRecordDecl*, clang::CXXMethodDecl*)"}, + {"_Z20FindOverriddenMethodPKN5clang16CXXBaseSpecifierERNS_11CXXBasePathEPv", "FindOverriddenMethod(clang::CXXBaseSpecifier const*, clang::CXXBasePath&, void*)"}, + {"_ZN5clang4Sema26BuildParmVarDeclForTypedefEPNS_11DeclContextENS_14SourceLocationENS_8QualTypeE", "clang::Sema::BuildParmVarDeclForTypedef(clang::DeclContext*, clang::SourceLocation, clang::QualType)"}, + {"_ZN5clang4Sema24CheckFunctionDeclarationEPNS_5ScopeEPNS_12FunctionDeclERNS_12LookupResultEbRb", "clang::Sema::CheckFunctionDeclaration(clang::Scope*, clang::FunctionDecl*, clang::LookupResult&, bool, bool&)"}, + {"_Z28DiagnoseInvalidRedeclarationRN5clang4SemaEPNS_12FunctionDeclE", "DiagnoseInvalidRedeclaration(clang::Sema&, clang::FunctionDecl*)"}, + {"_ZN5clang4Sema9CheckMainEPNS_12FunctionDeclE", "clang::Sema::CheckMain(clang::FunctionDecl*)"}, + {"_ZN5clang4Sema27CheckForConstantInitializerEPNS_4ExprENS_8QualTypeE", "clang::Sema::CheckForConstantInitializer(clang::Expr*, clang::QualType)"}, + {"_ZN5clang4Sema20AddInitializerToDeclEPNS_4DeclEPNS_4ExprE", "clang::Sema::AddInitializerToDecl(clang::Decl*, clang::Expr*)"}, + {"_ZN5clang4Sema20AddInitializerToDeclEPNS_4DeclEPNS_4ExprEb", "clang::Sema::AddInitializerToDecl(clang::Decl*, clang::Expr*, bool)"}, + {"_ZN5clang4Sema32CheckCompleteVariableDeclarationEPNS_7VarDeclE", "clang::Sema::CheckCompleteVariableDeclaration(clang::VarDecl*)"}, + {"_ZN5clang4Sema21ActOnInitializerErrorEPNS_4DeclE", "clang::Sema::ActOnInitializerError(clang::Decl*)"}, + {"_ZN5clang4Sema22ActOnUninitializedDeclEPNS_4DeclEb", "clang::Sema::ActOnUninitializedDecl(clang::Decl*, bool)"}, + {"_ZN5clang4Sema23FinalizeDeclaratorGroupEPNS_5ScopeERKNS_8DeclSpecEPPNS_4DeclEj", "clang::Sema::FinalizeDeclaratorGroup(clang::Scope*, clang::DeclSpec const&, clang::Decl**, unsigned int)"}, + {"_ZN5clang4Sema20ActOnParamDeclaratorEPNS_5ScopeERNS_10DeclaratorE", "clang::Sema::ActOnParamDeclarator(clang::Scope*, clang::Declarator&)"}, + {"_ZN5clang4Sema14CheckParameterEPNS_11DeclContextEPNS_14TypeSourceInfoENS_8QualTypeEPNS_14IdentifierInfoENS_14SourceLocationENS_12StorageClassES9_", "clang::Sema::CheckParameter(clang::DeclContext*, clang::TypeSourceInfo*, clang::QualType, clang::IdentifierInfo*, clang::SourceLocation, clang::StorageClass, clang::StorageClass)"}, + {"_ZN5clang4Sema24DiagnoseUnusedParametersEPKPNS_11ParmVarDeclES4_", "clang::Sema::DiagnoseUnusedParameters(clang::ParmVarDecl* const*, clang::ParmVarDecl* const*)"}, + {"_ZN5clang4Sema38DiagnoseSizeOfParametersAndReturnValueEPKPNS_11ParmVarDeclES4_NS_8QualTypeEPNS_9NamedDeclE", "clang::Sema::DiagnoseSizeOfParametersAndReturnValue(clang::ParmVarDecl* const*, clang::ParmVarDecl* const*, clang::QualType, clang::NamedDecl*)"}, + {"_ZN5clang4Sema31ActOnFinishKNRParamDeclarationsEPNS_5ScopeERNS_10DeclaratorENS_14SourceLocationE", "clang::Sema::ActOnFinishKNRParamDeclarations(clang::Scope*, clang::Declarator&, clang::SourceLocation)"}, + {"_ZN5clang4Sema23ActOnStartOfFunctionDefEPNS_5ScopeERNS_10DeclaratorE", "clang::Sema::ActOnStartOfFunctionDef(clang::Scope*, clang::Declarator&)"}, + {"_ZN5clang4Sema23ActOnStartOfFunctionDefEPNS_5ScopeEPNS_4DeclE", "clang::Sema::ActOnStartOfFunctionDef(clang::Scope*, clang::Decl*)"}, + {"_ZN5clang4Sema23ActOnFinishFunctionBodyEPNS_4DeclEPNS_4StmtE", "clang::Sema::ActOnFinishFunctionBody(clang::Decl*, clang::Stmt*)"}, + {"_ZN5clang4Sema23ActOnFinishFunctionBodyEPNS_4DeclEPNS_4StmtEb", "clang::Sema::ActOnFinishFunctionBody(clang::Decl*, clang::Stmt*, bool)"}, + {"_ZN5clang4Sema24ImplicitlyDefineFunctionENS_14SourceLocationERNS_14IdentifierInfoEPNS_5ScopeE", "clang::Sema::ImplicitlyDefineFunction(clang::SourceLocation, clang::IdentifierInfo&, clang::Scope*)"}, + {"_ZN5clang4Sema28isAcceptableTagRedeclarationEPKNS_7TagDeclENS_11TagTypeKindENS_14SourceLocationERKNS_14IdentifierInfoE", "clang::Sema::isAcceptableTagRedeclaration(clang::TagDecl const*, clang::TagTypeKind, clang::SourceLocation, clang::IdentifierInfo const&)"}, + {"_ZN5clang4Sema8ActOnTagEPNS_5ScopeEjNS0_10TagUseKindENS_14SourceLocationERNS_12CXXScopeSpecEPNS_14IdentifierInfoES4_PNS_13AttributeListENS_15AccessSpecifierENS_11ASTMultiPtrIPNS_21TemplateParameterListEEERbSG_bbNS_12ActionResultINS_9OpaquePtrINS_8QualTypeEEELb0EEE", "clang::Sema::ActOnTag(clang::Scope*, unsigned int, clang::Sema::TagUseKind, clang::SourceLocation, clang::CXXScopeSpec&, clang::IdentifierInfo*, clang::SourceLocation, clang::AttributeList*, clang::AccessSpecifier, clang::ASTMultiPtr, bool&, bool&, bool, bool, clang::ActionResult, false>)"}, + {"_ZN5clang4Sema23ActOnTagStartDefinitionEPNS_5ScopeEPNS_4DeclE", "clang::Sema::ActOnTagStartDefinition(clang::Scope*, clang::Decl*)"}, + {"_ZN5clang4Sema31ActOnStartCXXMemberDeclarationsEPNS_5ScopeEPNS_4DeclERNS_19ClassVirtSpecifiersENS_14SourceLocationE", "clang::Sema::ActOnStartCXXMemberDeclarations(clang::Scope*, clang::Decl*, clang::ClassVirtSpecifiers&, clang::SourceLocation)"}, + {"_ZN5clang4Sema24ActOnTagFinishDefinitionEPNS_5ScopeEPNS_4DeclENS_14SourceLocationE", "clang::Sema::ActOnTagFinishDefinition(clang::Scope*, clang::Decl*, clang::SourceLocation)"}, + {"_ZN5clang4Sema23ActOnTagDefinitionErrorEPNS_5ScopeEPNS_4DeclE", "clang::Sema::ActOnTagDefinitionError(clang::Scope*, clang::Decl*)"}, + {"_ZN5clang4Sema14VerifyBitFieldENS_14SourceLocationEPNS_14IdentifierInfoENS_8QualTypeEPKNS_4ExprEPb", "clang::Sema::VerifyBitField(clang::SourceLocation, clang::IdentifierInfo*, clang::QualType, clang::Expr const*, bool*)"}, + {"_ZN5clang4Sema10ActOnFieldEPNS_5ScopeEPNS_4DeclENS_14SourceLocationERNS_10DeclaratorEPNS_4ExprE", "clang::Sema::ActOnField(clang::Scope*, clang::Decl*, clang::SourceLocation, clang::Declarator&, clang::Expr*)"}, + {"_ZN5clang4Sema11HandleFieldEPNS_5ScopeEPNS_10RecordDeclENS_14SourceLocationERNS_10DeclaratorEPNS_4ExprENS_15AccessSpecifierE", "clang::Sema::HandleField(clang::Scope*, clang::RecordDecl*, clang::SourceLocation, clang::Declarator&, clang::Expr*, clang::AccessSpecifier)"}, + {"_ZN5clang4Sema14CheckFieldDeclENS_15DeclarationNameENS_8QualTypeEPNS_14TypeSourceInfoEPNS_10RecordDeclENS_14SourceLocationEbPNS_4ExprES7_NS_15AccessSpecifierEPNS_9NamedDeclEPNS_10DeclaratorE", "clang::Sema::CheckFieldDecl(clang::DeclarationName, clang::QualType, clang::TypeSourceInfo*, clang::RecordDecl*, clang::SourceLocation, bool, clang::Expr*, clang::SourceLocation, clang::AccessSpecifier, clang::NamedDecl*, clang::Declarator*)"}, + {"_ZN5clang4Sema18DiagnoseNontrivialEPKNS_10RecordTypeENS0_16CXXSpecialMemberE", "clang::Sema::DiagnoseNontrivial(clang::RecordType const*, clang::Sema::CXXSpecialMember)"}, + {"_ZN5clang4Sema9ActOnIvarEPNS_5ScopeENS_14SourceLocationEPNS_4DeclERNS_10DeclaratorEPNS_4ExprENS_3tok15ObjCKeywordKindE", "clang::Sema::ActOnIvar(clang::Scope*, clang::SourceLocation, clang::Decl*, clang::Declarator&, clang::Expr*, clang::tok::ObjCKeywordKind)"}, + {"_ZN5clang4Sema17ActOnLastBitfieldENS_14SourceLocationEPNS_4DeclERN4llvm15SmallVectorImplIS3_EE", "clang::Sema::ActOnLastBitfield(clang::SourceLocation, clang::Decl*, llvm::SmallVectorImpl&)"}, + {"_ZN5clang4Sema11ActOnFieldsEPNS_5ScopeENS_14SourceLocationEPNS_4DeclEPS5_jS3_S3_PNS_13AttributeListE", "clang::Sema::ActOnFields(clang::Scope*, clang::SourceLocation, clang::Decl*, clang::Decl**, unsigned int, clang::SourceLocation, clang::SourceLocation, clang::AttributeList*)"}, + {"_ZN5clang4Sema17CheckEnumConstantEPNS_8EnumDeclEPNS_16EnumConstantDeclENS_14SourceLocationEPNS_14IdentifierInfoEPNS_4ExprE", "clang::Sema::CheckEnumConstant(clang::EnumDecl*, clang::EnumConstantDecl*, clang::SourceLocation, clang::IdentifierInfo*, clang::Expr*)"}, + {"_Z27isRepresentableIntegerValueRN5clang10ASTContextERN4llvm6APSIntENS_8QualTypeE", "isRepresentableIntegerValue(clang::ASTContext&, llvm::APSInt&, clang::QualType)"}, + {"_ZN5clang4Sema17ActOnEnumConstantEPNS_5ScopeEPNS_4DeclES4_NS_14SourceLocationEPNS_14IdentifierInfoEPNS_13AttributeListES5_PNS_4ExprE", "clang::Sema::ActOnEnumConstant(clang::Scope*, clang::Decl*, clang::Decl*, clang::SourceLocation, clang::IdentifierInfo*, clang::AttributeList*, clang::SourceLocation, clang::Expr*)"}, + {"_ZN5clang4Sema13ActOnEnumBodyENS_14SourceLocationES1_S1_PNS_4DeclEPS3_jPNS_5ScopeEPNS_13AttributeListE", "clang::Sema::ActOnEnumBody(clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::Decl*, clang::Decl**, unsigned int, clang::Scope*, clang::AttributeList*)"}, + {"_ZN5clang4Sema21ActOnFileScopeAsmDeclENS_14SourceLocationEPNS_4ExprE", "clang::Sema::ActOnFileScopeAsmDecl(clang::SourceLocation, clang::Expr*)"}, + {"_ZN5clang4Sema17ActOnPragmaWeakIDEPNS_14IdentifierInfoENS_14SourceLocationES3_", "clang::Sema::ActOnPragmaWeakID(clang::IdentifierInfo*, clang::SourceLocation, clang::SourceLocation)"}, + {"_ZN5clang4Sema20ActOnPragmaWeakAliasEPNS_14IdentifierInfoES2_NS_14SourceLocationES3_S3_", "clang::Sema::ActOnPragmaWeakAlias(clang::IdentifierInfo*, clang::IdentifierInfo*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)"}, + {"_ZN5clang12RedeclarableINS_11TypedefDeclEE22setPreviousDeclarationEPS1_", "clang::Redeclarable::setPreviousDeclaration(clang::TypedefDecl*)"}, + {"_ZN5clang12RedeclarableINS_7VarDeclEE22setPreviousDeclarationEPS1_", "clang::Redeclarable::setPreviousDeclaration(clang::VarDecl*)"}, + {"_ZNK5clang4Decl7getAttrINS_13DLLImportAttrEEEPT_v", "clang::DLLImportAttr* clang::Decl::getAttr() const"}, + {"_ZNK5clang4Decl7getAttrINS_13DLLExportAttrEEEPT_v", "clang::DLLExportAttr* clang::Decl::getAttr() const"}, + {"_ZNK5clang4Decl7getAttrINS_10FormatAttrEEEPT_v", "clang::FormatAttr* clang::Decl::getAttr() const"}, + {"_ZNK5clang13CXXRecordDecl25hasTrivialCopyConstructorEv", "clang::CXXRecordDecl::hasTrivialCopyConstructor() const"}, + {"_ZNK5clang13CXXRecordDecl21hasTrivialConstructorEv", "clang::CXXRecordDecl::hasTrivialConstructor() const"}, + {"_ZNK5clang13CXXRecordDecl24hasTrivialCopyAssignmentEv", "clang::CXXRecordDecl::hasTrivialCopyAssignment() const"}, + {"_ZNK5clang13CXXRecordDecl20hasTrivialDestructorEv", "clang::CXXRecordDecl::hasTrivialDestructor() const"}, + {"_ZNK5clang4Decl7getAttrINS_10PackedAttrEEEPT_v", "clang::PackedAttr* clang::Decl::getAttr() const"}, + {"_ZNK4llvm6APSInt10extOrTruncEj", "llvm::APSInt::extOrTrunc(unsigned int) const"}, + {"_ZN4llvm15SmallVectorImplIPN5clang9FieldDeclEE6resizeEj", "llvm::SmallVectorImpl::resize(unsigned int)"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang15DeclaratorChunkELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN5clang12CXXBasePathsD2Ev", "clang::CXXBasePaths::~CXXBasePaths()"}, + {"_ZNSt8_Rb_treeIN5clang8QualTypeESt4pairIKS1_S2_IbjEESt10_Select1stIS5_ENS0_16QualTypeOrderingESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E", "std::_Rb_tree>, std::_Select1st>>, clang::QualTypeOrdering, std::allocator>>>::_M_erase(std::_Rb_tree_node>>*)"}, + {"_ZN5clang12LookupResult22resolveKindAfterFilterEv", "clang::LookupResult::resolveKindAfterFilter()"}, + {"_ZN5clang10Declarator5clearEv", "clang::Declarator::clear()"}, + {"_ZN4llvm15SmallVectorImplIPN5clang9NamedDeclEE6resizeEj", "llvm::SmallVectorImpl::resize(unsigned int)"}, + {"_ZN5clang4Sema17CheckNoReturnAttrERKNS_13AttributeListE", "clang::Sema::CheckNoReturnAttr(clang::AttributeList const&)"}, + {"_ZN5clang4Sema14AddAlignedAttrENS_14SourceLocationEPNS_4DeclEPNS_4ExprE", "clang::Sema::AddAlignedAttr(clang::SourceLocation, clang::Decl*, clang::Expr*)"}, + {"_ZN5clang4Sema14AddAlignedAttrENS_14SourceLocationEPNS_4DeclEPNS_14TypeSourceInfoE", "clang::Sema::AddAlignedAttr(clang::SourceLocation, clang::Decl*, clang::TypeSourceInfo*)"}, + {"_ZN5clang4Sema20CheckCallingConvAttrERKNS_13AttributeListERNS_11CallingConvE", "clang::Sema::CheckCallingConvAttr(clang::AttributeList const&, clang::CallingConv&)"}, + {"_ZN5clang4Sema16CheckRegparmAttrERKNS_13AttributeListERj", "clang::Sema::CheckRegparmAttr(clang::AttributeList const&, unsigned int&)"}, + {"_ZN5clang4Sema24ProcessDeclAttributeListEPNS_5ScopeEPNS_4DeclEPKNS_13AttributeListEbb", "clang::Sema::ProcessDeclAttributeList(clang::Scope*, clang::Decl*, clang::AttributeList const*, bool, bool)"}, + {"_ZN5clang4Sema19DeclClonePragmaWeakEPNS_9NamedDeclEPNS_14IdentifierInfoE", "clang::Sema::DeclClonePragmaWeak(clang::NamedDecl*, clang::IdentifierInfo*)"}, + {"_ZN5clang4Sema19DeclApplyPragmaWeakEPNS_5ScopeEPNS_9NamedDeclERNS0_8WeakInfoE", "clang::Sema::DeclApplyPragmaWeak(clang::Scope*, clang::NamedDecl*, clang::Sema::WeakInfo&)"}, + {"_ZN5clang4Sema21ProcessDeclAttributesEPNS_5ScopeEPNS_4DeclERKNS_10DeclaratorEbb", "clang::Sema::ProcessDeclAttributes(clang::Scope*, clang::Decl*, clang::Declarator const&, bool, bool)"}, + {"_ZN5clang4Sema22PushParsingDeclarationEv", "clang::Sema::PushParsingDeclaration()"}, + {"_ZN5clang4Sema21PopParsingDeclarationEmPNS_4DeclE", "clang::Sema::PopParsingDeclaration(unsigned long, clang::Decl*)"}, + {"_ZN5clang4Sema29HandleDelayedDeprecationCheckERNS_4sema17DelayedDiagnosticEPNS_4DeclE", "clang::Sema::HandleDelayedDeprecationCheck(clang::sema::DelayedDiagnostic&, clang::Decl*)"}, + {"_ZN5clang4Sema22EmitDeprecationWarningEPNS_9NamedDeclEN4llvm9StringRefENS_14SourceLocationEb", "clang::Sema::EmitDeprecationWarning(clang::NamedDecl*, llvm::StringRef, clang::SourceLocation, bool)"}, + {"_Z26ProcessInheritableDeclAttrPN5clang5ScopeEPNS_4DeclERKNS_13AttributeListERNS_4SemaE", "ProcessInheritableDeclAttr(clang::Scope*, clang::Decl*, clang::AttributeList const&, clang::Sema&)"}, + {"_Z15getFunctionTypePKN5clang4DeclEb", "getFunctionType(clang::Decl const*, bool)"}, + {"_ZN4llvm25array_pod_sort_comparatorIjEEiPKvS2_", "int llvm::array_pod_sort_comparator(void const*, void const*)"}, + {"_Z14isNSStringTypeN5clang8QualTypeERNS_10ASTContextE", "isNSStringType(clang::QualType, clang::ASTContext&)"}, + {"_Z14isCFStringTypeN5clang8QualTypeERNS_10ASTContextE", "isCFStringType(clang::QualType, clang::ASTContext&)"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang4sema17DelayedDiagnosticELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZNK5clang4Decl7getAttrINS_13VecReturnAttrEEEPT_v", "clang::VecReturnAttr* clang::Decl::getAttr() const"}, + {"_ZN5clang4Sema23SetParamDefaultArgumentEPNS_11ParmVarDeclEPNS_4ExprENS_14SourceLocationE", "clang::Sema::SetParamDefaultArgument(clang::ParmVarDecl*, clang::Expr*, clang::SourceLocation)"}, + {"_ZN5clang4Sema25ActOnParamDefaultArgumentEPNS_4DeclENS_14SourceLocationEPNS_4ExprE", "clang::Sema::ActOnParamDefaultArgument(clang::Decl*, clang::SourceLocation, clang::Expr*)"}, + {"_ZN5clang11StmtVisitorIN12_GLOBAL__N_127CheckDefaultArgumentVisitorEbE5VisitEPNS_4StmtE", "clang::StmtVisitor<(anonymous namespace)::CheckDefaultArgumentVisitor, bool>::Visit(clang::Stmt*)"}, + {"_ZN5clang4Sema33ActOnParamUnparsedDefaultArgumentEPNS_4DeclENS_14SourceLocationES3_", "clang::Sema::ActOnParamUnparsedDefaultArgument(clang::Decl*, clang::SourceLocation, clang::SourceLocation)"}, + {"_ZN5clang4Sema30ActOnParamDefaultArgumentErrorEPNS_4DeclE", "clang::Sema::ActOnParamDefaultArgumentError(clang::Decl*)"}, + {"_ZN5clang4Sema29CheckExtraCXXDefaultArgumentsERNS_10DeclaratorE", "clang::Sema::CheckExtraCXXDefaultArguments(clang::Declarator&)"}, + {"_ZN5clang4Sema20MergeCXXFunctionDeclEPNS_12FunctionDeclES2_", "clang::Sema::MergeCXXFunctionDecl(clang::FunctionDecl*, clang::FunctionDecl*)"}, + {"_ZN5clang4Sema24CheckCXXDefaultArgumentsEPNS_12FunctionDeclE", "clang::Sema::CheckCXXDefaultArguments(clang::FunctionDecl*)"}, + {"_ZN5clang4Sema18isCurrentClassNameERKNS_14IdentifierInfoEPNS_5ScopeEPKNS_12CXXScopeSpecE", "clang::Sema::isCurrentClassName(clang::IdentifierInfo const&, clang::Scope*, clang::CXXScopeSpec const*)"}, + {"_ZN5clang4Sema18CheckBaseSpecifierEPNS_13CXXRecordDeclENS_11SourceRangeEbNS_15AccessSpecifierEPNS_14TypeSourceInfoENS_14SourceLocationE", "clang::Sema::CheckBaseSpecifier(clang::CXXRecordDecl*, clang::SourceRange, bool, clang::AccessSpecifier, clang::TypeSourceInfo*, clang::SourceLocation)"}, + {"_ZN5clang4Sema18ActOnBaseSpecifierEPNS_4DeclENS_11SourceRangeEbNS_15AccessSpecifierENS_9OpaquePtrINS_8QualTypeEEENS_14SourceLocationES8_", "clang::Sema::ActOnBaseSpecifier(clang::Decl*, clang::SourceRange, bool, clang::AccessSpecifier, clang::OpaquePtr, clang::SourceLocation, clang::SourceLocation)"}, + {"_ZN5clang4Sema20AttachBaseSpecifiersEPNS_13CXXRecordDeclEPPNS_16CXXBaseSpecifierEj", "clang::Sema::AttachBaseSpecifiers(clang::CXXRecordDecl*, clang::CXXBaseSpecifier**, unsigned int)"}, + {"_ZN5clang4Sema19ActOnBaseSpecifiersEPNS_4DeclEPPNS_16CXXBaseSpecifierEj", "clang::Sema::ActOnBaseSpecifiers(clang::Decl*, clang::CXXBaseSpecifier**, unsigned int)"}, + {"_ZN5clang4Sema13IsDerivedFromENS_8QualTypeES1_", "clang::Sema::IsDerivedFrom(clang::QualType, clang::QualType)"}, + {"_Z15GetClassForTypeN5clang8QualTypeE", "GetClassForType(clang::QualType)"}, + {"_ZN5clang4Sema13IsDerivedFromENS_8QualTypeES1_RNS_12CXXBasePathsE", "clang::Sema::IsDerivedFrom(clang::QualType, clang::QualType, clang::CXXBasePaths&)"}, + + // {"_ZN5clang4Sema18BuildBasePathArrayERKNS_12CXXBasePathsERN4llvm11SmallVectorIPNS_16CXXBaseSpecifierELj4EEE", + // "clang::Sema::BuildBasePathArray(clang::CXXBasePaths const&, llvm::SmallVector&)"}, + // "clang::Sema::BuildBasePathArray(clang::CXXBasePaths const&, llvm::SmallVector&)" was returned + + + // {"_ZN5clang4Sema27BasePathInvolvesVirtualBaseERKN4llvm11SmallVectorIPNS_16CXXBaseSpecifierELj4EEE", + // "clang::Sema::BasePathInvolvesVirtualBase(llvm::SmallVector const&)"}, + // "clang::Sema::BasePathInvolvesVirtualBase(llvm::SmallVector const&)" was returned + + + // {"_ZN5clang4Sema28CheckDerivedToBaseConversionENS_8QualTypeES1_jjNS_14SourceLocationENS_11SourceRangeENS_15DeclarationNameEPN4llvm11SmallVectorIPNS_16CXXBaseSpecifierELj4EEE", + // "clang::Sema::CheckDerivedToBaseConversion(clang::QualType, clang::QualType, unsigned int, unsigned int, clang::SourceLocation, clang::SourceRange, clang::DeclarationName, llvm::SmallVector*)"}, + // "clang::Sema::CheckDerivedToBaseConversion(clang::QualType, clang::QualType, unsigned int, unsigned int, clang::SourceLocation, clang::SourceRange, clang::DeclarationName, llvm::SmallVector*)" was returned + + {"_ZN5clang4Sema30getAmbiguousPathsDisplayStringERNS_12CXXBasePathsE", "clang::Sema::getAmbiguousPathsDisplayString(clang::CXXBasePaths&)"}, + + // {"_ZN5clang4Sema28CheckDerivedToBaseConversionENS_8QualTypeES1_NS_14SourceLocationENS_11SourceRangeEPN4llvm11SmallVectorIPNS_16CXXBaseSpecifierELj4EEEb", + // "clang::Sema::CheckDerivedToBaseConversion(clang::QualType, clang::QualType, clang::SourceLocation, clang::SourceRange, llvm::SmallVector*, bool)"}, + // "clang::Sema::CheckDerivedToBaseConversion(clang::QualType, clang::QualType, clang::SourceLocation, clang::SourceRange, llvm::SmallVector*, bool)" was returned + + {"_ZN5clang4Sema20ActOnAccessSpecifierENS_15AccessSpecifierENS_14SourceLocationES2_", "clang::Sema::ActOnAccessSpecifier(clang::AccessSpecifier, clang::SourceLocation, clang::SourceLocation)"}, + {"_ZN5clang4Sema20CheckOverrideControlEPKNS_4DeclE", "clang::Sema::CheckOverrideControl(clang::Decl const*)"}, + {"_ZN5clang4Sema38CheckIfOverriddenFunctionIsMarkedFinalEPKNS_13CXXMethodDeclES3_", "clang::Sema::CheckIfOverriddenFunctionIsMarkedFinal(clang::CXXMethodDecl const*, clang::CXXMethodDecl const*)"}, + {"_ZN5clang4Sema24ActOnCXXMemberDeclaratorEPNS_5ScopeENS_15AccessSpecifierERNS_10DeclaratorENS_11ASTMultiPtrIPNS_21TemplateParameterListEEEPNS_4ExprERKNS_14VirtSpecifiersESB_bb", "clang::Sema::ActOnCXXMemberDeclarator(clang::Scope*, clang::AccessSpecifier, clang::Declarator&, clang::ASTMultiPtr, clang::Expr*, clang::VirtSpecifiers const&, clang::Expr*, bool, bool)"}, + {"_ZN5clang4Sema14SetDeclDeletedEPNS_4DeclENS_14SourceLocationE", "clang::Sema::SetDeclDeleted(clang::Decl*, clang::SourceLocation)"}, + {"_ZN5clang4Sema19ActOnMemInitializerEPNS_4DeclEPNS_5ScopeERNS_12CXXScopeSpecEPNS_14IdentifierInfoENS_9OpaquePtrINS_8QualTypeEEENS_14SourceLocationESC_PPNS_4ExprEjSC_SC_", "clang::Sema::ActOnMemInitializer(clang::Decl*, clang::Scope*, clang::CXXScopeSpec&, clang::IdentifierInfo*, clang::OpaquePtr, clang::SourceLocation, clang::SourceLocation, clang::Expr**, unsigned int, clang::SourceLocation, clang::SourceLocation)"}, + {"_ZN5clang4Sema22BuildMemberInitializerEPNS_9ValueDeclEPPNS_4ExprEjNS_14SourceLocationES6_S6_", "clang::Sema::BuildMemberInitializer(clang::ValueDecl*, clang::Expr**, unsigned int, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)"}, + {"_Z19FindBaseInitializerRN5clang4SemaEPNS_13CXXRecordDeclENS_8QualTypeERPKNS_16CXXBaseSpecifierES8_", "FindBaseInitializer(clang::Sema&, clang::CXXRecordDecl*, clang::QualType, clang::CXXBaseSpecifier const*&, clang::CXXBaseSpecifier const*&)"}, + {"_ZN5clang4Sema20BuildBaseInitializerENS_8QualTypeEPNS_14TypeSourceInfoEPPNS_4ExprEjNS_14SourceLocationES7_PNS_13CXXRecordDeclES7_", "clang::Sema::BuildBaseInitializer(clang::QualType, clang::TypeSourceInfo*, clang::Expr**, unsigned int, clang::SourceLocation, clang::SourceLocation, clang::CXXRecordDecl*, clang::SourceLocation)"}, + {"_Z35InitExprContainsUninitializedFieldsPKN5clang4StmtEPKNS_9ValueDeclEPNS_14SourceLocationE", "InitExprContainsUninitializedFields(clang::Stmt const*, clang::ValueDecl const*, clang::SourceLocation*)"}, + {"_ZN5clang4Sema26BuildDelegatingInitializerEPNS_14TypeSourceInfoEPPNS_4ExprEjNS_14SourceLocationES6_PNS_13CXXRecordDeclES6_", "clang::Sema::BuildDelegatingInitializer(clang::TypeSourceInfo*, clang::Expr**, unsigned int, clang::SourceLocation, clang::SourceLocation, clang::CXXRecordDecl*, clang::SourceLocation)"}, + {"_ZN5clang4Sema19SetCtorInitializersEPNS_18CXXConstructorDeclEPPNS_18CXXCtorInitializerEjb", "clang::Sema::SetCtorInitializers(clang::CXXConstructorDecl*, clang::CXXCtorInitializer**, unsigned int, bool)"}, + {"_Z28BuildImplicitBaseInitializerRN5clang4SemaEPNS_18CXXConstructorDeclE23ImplicitInitializerKindPNS_16CXXBaseSpecifierEbRPNS_18CXXCtorInitializerE", "BuildImplicitBaseInitializer(clang::Sema&, clang::CXXConstructorDecl*, ImplicitInitializerKind, clang::CXXBaseSpecifier*, bool, clang::CXXCtorInitializer*&)"}, + {"_Z23CollectFieldInitializerRN12_GLOBAL__N_116BaseAndFieldInfoEPN5clang9FieldDeclES4_", "CollectFieldInitializer((anonymous namespace)::BaseAndFieldInfo&, clang::FieldDecl*, clang::FieldDecl*)"}, + {"_ZN5clang4Sema38MarkBaseAndMemberDestructorsReferencedENS_14SourceLocationEPNS_13CXXRecordDeclE", "clang::Sema::MarkBaseAndMemberDestructorsReferenced(clang::SourceLocation, clang::CXXRecordDecl*)"}, + {"_ZN5clang4Sema20ActOnMemInitializersEPNS_4DeclENS_14SourceLocationEPPNS_18CXXCtorInitializerEjb", "clang::Sema::ActOnMemInitializers(clang::Decl*, clang::SourceLocation, clang::CXXCtorInitializer**, unsigned int, bool)"}, + {"_ZN12_GLOBAL__N_118CheckRedundantInitERN5clang4SemaEPNS0_18CXXCtorInitializerERS4_", "(anonymous namespace)::CheckRedundantInit(clang::Sema&, clang::CXXCtorInitializer*, clang::CXXCtorInitializer*&)"}, + {"_ZN5clang4Sema28ActOnDefaultCtorInitializersEPNS_4DeclE", "clang::Sema::ActOnDefaultCtorInitializers(clang::Decl*)"}, + {"_ZN5clang4Sema22RequireNonAbstractTypeENS_14SourceLocationENS_8QualTypeEjNS0_17AbstractDiagSelIDE", "clang::Sema::RequireNonAbstractType(clang::SourceLocation, clang::QualType, unsigned int, clang::Sema::AbstractDiagSelID)"}, + {"_ZN5clang4Sema22RequireNonAbstractTypeENS_14SourceLocationENS_8QualTypeERKNS_17PartialDiagnosticE", "clang::Sema::RequireNonAbstractType(clang::SourceLocation, clang::QualType, clang::PartialDiagnostic const&)"}, + {"_ZN5clang4Sema20DiagnoseAbstractTypeEPKNS_13CXXRecordDeclE", "clang::Sema::DiagnoseAbstractType(clang::CXXRecordDecl const*)"}, + {"_ZN5clang4Sema22CheckCompletedCXXClassEPNS_13CXXRecordDeclE", "clang::Sema::CheckCompletedCXXClass(clang::CXXRecordDecl*)"}, + {"_Z23CheckAbstractClassUsageRN12_GLOBAL__N_117AbstractUsageInfoEPN5clang13CXXRecordDeclE", "CheckAbstractClassUsage((anonymous namespace)::AbstractUsageInfo&, clang::CXXRecordDecl*)"}, + {"_ZN5clang4Sema28DiagnoseHiddenVirtualMethodsEPNS_13CXXRecordDeclEPNS_13CXXMethodDeclE", "clang::Sema::DiagnoseHiddenVirtualMethods(clang::CXXRecordDecl*, clang::CXXMethodDecl*)"}, + {"_ZN5clang4Sema28DeclareInheritedConstructorsEPNS_13CXXRecordDeclE", "clang::Sema::DeclareInheritedConstructors(clang::CXXRecordDecl*)"}, + {"_Z23FindHiddenVirtualMethodPKN5clang16CXXBaseSpecifierERNS_11CXXBasePathEPv", "FindHiddenVirtualMethod(clang::CXXBaseSpecifier const*, clang::CXXBasePath&, void*)"}, + {"_ZN5clang4Sema33ActOnFinishCXXMemberSpecificationEPNS_5ScopeENS_14SourceLocationEPNS_4DeclES3_S3_PNS_13AttributeListE", "clang::Sema::ActOnFinishCXXMemberSpecification(clang::Scope*, clang::SourceLocation, clang::Decl*, clang::SourceLocation, clang::SourceLocation, clang::AttributeList*)"}, + {"_ZN5clang4Sema35AddImplicitlyDeclaredMembersToClassEPNS_13CXXRecordDeclE", "clang::Sema::AddImplicitlyDeclaredMembersToClass(clang::CXXRecordDecl*)"}, + {"_ZN5clang4Sema29DeclareImplicitCopyAssignmentEPNS_13CXXRecordDeclE", "clang::Sema::DeclareImplicitCopyAssignment(clang::CXXRecordDecl*)"}, + {"_ZN5clang4Sema25DeclareImplicitDestructorEPNS_13CXXRecordDeclE", "clang::Sema::DeclareImplicitDestructor(clang::CXXRecordDecl*)"}, + {"_ZN5clang4Sema25ActOnReenterTemplateScopeEPNS_5ScopeEPNS_4DeclE", "clang::Sema::ActOnReenterTemplateScope(clang::Scope*, clang::Decl*)"}, + {"_ZN5clang4Sema35ActOnStartDelayedMemberDeclarationsEPNS_5ScopeEPNS_4DeclE", "clang::Sema::ActOnStartDelayedMemberDeclarations(clang::Scope*, clang::Decl*)"}, + {"_ZN5clang4Sema36ActOnFinishDelayedMemberDeclarationsEPNS_5ScopeEPNS_4DeclE", "clang::Sema::ActOnFinishDelayedMemberDeclarations(clang::Scope*, clang::Decl*)"}, + {"_ZN5clang4Sema37ActOnStartDelayedCXXMethodDeclarationEPNS_5ScopeEPNS_4DeclE", "clang::Sema::ActOnStartDelayedCXXMethodDeclaration(clang::Scope*, clang::Decl*)"}, + {"_ZN5clang4Sema30ActOnDelayedCXXMethodParameterEPNS_5ScopeEPNS_4DeclE", "clang::Sema::ActOnDelayedCXXMethodParameter(clang::Scope*, clang::Decl*)"}, + {"_ZN5clang4Sema38ActOnFinishDelayedCXXMethodDeclarationEPNS_5ScopeEPNS_4DeclE", "clang::Sema::ActOnFinishDelayedCXXMethodDeclaration(clang::Scope*, clang::Decl*)"}, + {"_ZN5clang4Sema16CheckConstructorEPNS_18CXXConstructorDeclE", "clang::Sema::CheckConstructor(clang::CXXConstructorDecl*)"}, + {"_ZN5clang4Sema26CheckConstructorDeclaratorERNS_10DeclaratorENS_8QualTypeERNS_12StorageClassE", "clang::Sema::CheckConstructorDeclarator(clang::Declarator&, clang::QualType, clang::StorageClass&)"}, + {"_ZN5clang4Sema15CheckDestructorEPNS_17CXXDestructorDeclE", "clang::Sema::CheckDestructor(clang::CXXDestructorDecl*)"}, + {"_ZN5clang4Sema25CheckDestructorDeclaratorERNS_10DeclaratorENS_8QualTypeERNS_12StorageClassE", "clang::Sema::CheckDestructorDeclarator(clang::Declarator&, clang::QualType, clang::StorageClass&)"}, + {"_ZN5clang4Sema25CheckConversionDeclaratorERNS_10DeclaratorERNS_8QualTypeERNS_12StorageClassE", "clang::Sema::CheckConversionDeclarator(clang::Declarator&, clang::QualType&, clang::StorageClass&)"}, + {"_ZN5clang4Sema25ActOnConversionDeclaratorEPNS_17CXXConversionDeclE", "clang::Sema::ActOnConversionDeclarator(clang::CXXConversionDecl*)"}, + {"_ZN5clang4Sema22ActOnStartNamespaceDefEPNS_5ScopeENS_14SourceLocationES3_PNS_14IdentifierInfoES3_PNS_13AttributeListE", "clang::Sema::ActOnStartNamespaceDef(clang::Scope*, clang::SourceLocation, clang::SourceLocation, clang::IdentifierInfo*, clang::SourceLocation, clang::AttributeList*)"}, + {"_ZNK5clang4Sema15getStdNamespaceEv", "clang::Sema::getStdNamespace() const"}, + {"_ZN5clang4Sema23ActOnFinishNamespaceDefEPNS_4DeclENS_14SourceLocationE", "clang::Sema::ActOnFinishNamespaceDef(clang::Decl*, clang::SourceLocation)"}, + {"_ZNK5clang4Sema14getStdBadAllocEv", "clang::Sema::getStdBadAlloc() const"}, + {"_ZN5clang4Sema23getOrCreateStdNamespaceEv", "clang::Sema::getOrCreateStdNamespace()"}, + {"_ZN5clang4Sema19ActOnUsingDirectiveEPNS_5ScopeENS_14SourceLocationES3_RNS_12CXXScopeSpecES3_PNS_14IdentifierInfoEPNS_13AttributeListE", "clang::Sema::ActOnUsingDirective(clang::Scope*, clang::SourceLocation, clang::SourceLocation, clang::CXXScopeSpec&, clang::SourceLocation, clang::IdentifierInfo*, clang::AttributeList*)"}, + {"_ZN5clang4Sema18PushUsingDirectiveEPNS_5ScopeEPNS_18UsingDirectiveDeclE", "clang::Sema::PushUsingDirective(clang::Scope*, clang::UsingDirectiveDecl*)"}, + {"_ZN5clang4Sema21ActOnUsingDeclarationEPNS_5ScopeENS_15AccessSpecifierEbNS_14SourceLocationERNS_12CXXScopeSpecERNS_13UnqualifiedIdEPNS_13AttributeListEbS4_", "clang::Sema::ActOnUsingDeclaration(clang::Scope*, clang::AccessSpecifier, bool, clang::SourceLocation, clang::CXXScopeSpec&, clang::UnqualifiedId&, clang::AttributeList*, bool, clang::SourceLocation)"}, + {"_ZN5clang4Sema21BuildUsingDeclarationEPNS_5ScopeENS_15AccessSpecifierENS_14SourceLocationERNS_12CXXScopeSpecERKNS_19DeclarationNameInfoEPNS_13AttributeListEbbS4_", "clang::Sema::BuildUsingDeclaration(clang::Scope*, clang::AccessSpecifier, clang::SourceLocation, clang::CXXScopeSpec&, clang::DeclarationNameInfo const&, clang::AttributeList*, bool, bool, clang::SourceLocation)"}, + {"_ZN5clang4Sema20CheckUsingShadowDeclEPNS_9UsingDeclEPNS_9NamedDeclERKNS_12LookupResultE", "clang::Sema::CheckUsingShadowDecl(clang::UsingDecl*, clang::NamedDecl*, clang::LookupResult const&)"}, + {"_ZN5clang4Sema20BuildUsingShadowDeclEPNS_5ScopeEPNS_9UsingDeclEPNS_9NamedDeclE", "clang::Sema::BuildUsingShadowDecl(clang::Scope*, clang::UsingDecl*, clang::NamedDecl*)"}, + {"_ZN5clang4Sema19HideUsingShadowDeclEPNS_5ScopeEPNS_15UsingShadowDeclE", "clang::Sema::HideUsingShadowDecl(clang::Scope*, clang::UsingShadowDecl*)"}, + {"_ZN5clang4Sema27CheckUsingDeclRedeclarationENS_14SourceLocationEbRKNS_12CXXScopeSpecES1_RKNS_12LookupResultE", "clang::Sema::CheckUsingDeclRedeclaration(clang::SourceLocation, bool, clang::CXXScopeSpec const&, clang::SourceLocation, clang::LookupResult const&)"}, + {"_ZN5clang4Sema23CheckUsingDeclQualifierENS_14SourceLocationERKNS_12CXXScopeSpecES1_", "clang::Sema::CheckUsingDeclQualifier(clang::SourceLocation, clang::CXXScopeSpec const&, clang::SourceLocation)"}, + {"_ZN5clang4Sema34CheckInheritedConstructorUsingDeclEPNS_9UsingDeclE", "clang::Sema::CheckInheritedConstructorUsingDecl(clang::UsingDecl*)"}, + {"_ZN5clang4Sema22ActOnNamespaceAliasDefEPNS_5ScopeENS_14SourceLocationES3_PNS_14IdentifierInfoERNS_12CXXScopeSpecES3_S5_", "clang::Sema::ActOnNamespaceAliasDef(clang::Scope*, clang::SourceLocation, clang::SourceLocation, clang::IdentifierInfo*, clang::CXXScopeSpec&, clang::SourceLocation, clang::IdentifierInfo*)"}, + {"_ZN5clang4Sema33DeclareImplicitDefaultConstructorEPNS_13CXXRecordDeclE", "clang::Sema::DeclareImplicitDefaultConstructor(clang::CXXRecordDecl*)"}, + {"_ZN12_GLOBAL__N_130ImplicitExceptionSpecification10CalledDeclEPN5clang13CXXMethodDeclE", "(anonymous namespace)::ImplicitExceptionSpecification::CalledDecl(clang::CXXMethodDecl*)"}, + {"_Z27getDefaultConstructorUnsafeRN5clang4SemaEPNS_13CXXRecordDeclE", "getDefaultConstructorUnsafe(clang::Sema&, clang::CXXRecordDecl*)"}, + {"_ZN5clang4Sema32DefineImplicitDefaultConstructorENS_14SourceLocationEPNS_18CXXConstructorDeclE", "clang::Sema::DefineImplicitDefaultConstructor(clang::SourceLocation, clang::CXXConstructorDecl*)"}, + {"_ZN5clang4Sema14MarkVTableUsedENS_14SourceLocationEPNS_13CXXRecordDeclEb", "clang::Sema::MarkVTableUsed(clang::SourceLocation, clang::CXXRecordDecl*, bool)"}, + {"_ZN5clang4Sema24DefineImplicitDestructorENS_14SourceLocationEPNS_17CXXDestructorDeclE", "clang::Sema::DefineImplicitDestructor(clang::SourceLocation, clang::CXXDestructorDecl*)"}, + {"_Z22hasConstCopyAssignmentRN5clang4SemaEPKNS_13CXXRecordDeclE", "hasConstCopyAssignment(clang::Sema&, clang::CXXRecordDecl const*)"}, + {"_ZN5clang4Sema28DefineImplicitCopyAssignmentENS_14SourceLocationEPNS_13CXXMethodDeclE", "clang::Sema::DefineImplicitCopyAssignment(clang::SourceLocation, clang::CXXMethodDecl*)"}, + {"_Z21BuildSingleCopyAssignRN5clang4SemaENS_14SourceLocationENS_8QualTypeEPNS_4ExprES5_bj", "BuildSingleCopyAssign(clang::Sema&, clang::SourceLocation, clang::QualType, clang::Expr*, clang::Expr*, bool, unsigned int)"}, + {"_ZN5clang4Sema30DeclareImplicitCopyConstructorEPNS_13CXXRecordDeclE", "clang::Sema::DeclareImplicitCopyConstructor(clang::CXXRecordDecl*)"}, + {"_ZN5clang4Sema29DefineImplicitCopyConstructorENS_14SourceLocationEPNS_18CXXConstructorDeclEj", "clang::Sema::DefineImplicitCopyConstructor(clang::SourceLocation, clang::CXXConstructorDecl*, unsigned int)"}, + {"_ZN5clang4Sema21BuildCXXConstructExprENS_14SourceLocationENS_8QualTypeEPNS_18CXXConstructorDeclENS_11ASTMultiPtrIPNS_4ExprEEEbjNS_11SourceRangeE", "clang::Sema::BuildCXXConstructExpr(clang::SourceLocation, clang::QualType, clang::CXXConstructorDecl*, clang::ASTMultiPtr, bool, unsigned int, clang::SourceRange)"}, + {"_ZN5clang4Sema21BuildCXXConstructExprENS_14SourceLocationENS_8QualTypeEPNS_18CXXConstructorDeclEbNS_11ASTMultiPtrIPNS_4ExprEEEbjNS_11SourceRangeE", "clang::Sema::BuildCXXConstructExpr(clang::SourceLocation, clang::QualType, clang::CXXConstructorDecl*, bool, clang::ASTMultiPtr, bool, unsigned int, clang::SourceRange)"}, + {"_ZN5clang4Sema28InitializeVarWithConstructorEPNS_7VarDeclEPNS_18CXXConstructorDeclENS_11ASTMultiPtrIPNS_4ExprEEE", "clang::Sema::InitializeVarWithConstructor(clang::VarDecl*, clang::CXXConstructorDecl*, clang::ASTMultiPtr)"}, + {"_ZN5clang4Sema25FinalizeVarWithDestructorEPNS_7VarDeclEPKNS_10RecordTypeE", "clang::Sema::FinalizeVarWithDestructor(clang::VarDecl*, clang::RecordType const*)"}, + {"_ZN5clang4Sema29AddCXXDirectInitializerToDeclEPNS_4DeclENS_14SourceLocationENS_11ASTMultiPtrIPNS_4ExprEEES3_", "clang::Sema::AddCXXDirectInitializerToDecl(clang::Decl*, clang::SourceLocation, clang::ASTMultiPtr, clang::SourceLocation)"}, + + // {"_ZN5clang4Sema23CompleteConstructorCallEPNS_18CXXConstructorDeclENS_11ASTMultiPtrIPNS_4ExprEEENS_14SourceLocationERNS_15ASTOwningVectorIS5_Lj8EEE", + // "clang::Sema::CompleteConstructorCall(clang::CXXConstructorDecl*, clang::ASTMultiPtr, clang::SourceLocation, clang::ASTOwningVector&)"}, + // "clang::Sema::CompleteConstructorCall(clang::CXXConstructorDecl*, clang::ASTMultiPtr, clang::SourceLocation, clang::ASTOwningVector&)" was returned + + {"_ZN5clang4Sema34CheckOverloadedOperatorDeclarationEPNS_12FunctionDeclE", "clang::Sema::CheckOverloadedOperatorDeclaration(clang::FunctionDecl*)"}, + {"_ZN5clang4Sema31CheckLiteralOperatorDeclarationEPNS_12FunctionDeclE", "clang::Sema::CheckLiteralOperatorDeclaration(clang::FunctionDecl*)"}, + {"_ZN5clang4Sema30ActOnStartLinkageSpecificationEPNS_5ScopeENS_14SourceLocationES3_N4llvm9StringRefES3_", "clang::Sema::ActOnStartLinkageSpecification(clang::Scope*, clang::SourceLocation, clang::SourceLocation, llvm::StringRef, clang::SourceLocation)"}, + {"_ZN5clang4Sema31ActOnFinishLinkageSpecificationEPNS_5ScopeEPNS_4DeclENS_14SourceLocationE", "clang::Sema::ActOnFinishLinkageSpecification(clang::Scope*, clang::Decl*, clang::SourceLocation)"}, + {"_ZN5clang4Sema25BuildExceptionDeclarationEPNS_5ScopeEPNS_14TypeSourceInfoEPNS_14IdentifierInfoENS_14SourceLocationE", "clang::Sema::BuildExceptionDeclaration(clang::Scope*, clang::TypeSourceInfo*, clang::IdentifierInfo*, clang::SourceLocation)"}, + {"_ZN5clang4Sema24ActOnExceptionDeclaratorEPNS_5ScopeERNS_10DeclaratorE", "clang::Sema::ActOnExceptionDeclarator(clang::Scope*, clang::Declarator&)"}, + {"_ZN5clang4Sema28ActOnStaticAssertDeclarationENS_14SourceLocationEPNS_4ExprES3_", "clang::Sema::ActOnStaticAssertDeclaration(clang::SourceLocation, clang::Expr*, clang::Expr*)"}, + {"_ZN5clang4Sema19CheckFriendTypeDeclENS_14SourceLocationEPNS_14TypeSourceInfoE", "clang::Sema::CheckFriendTypeDecl(clang::SourceLocation, clang::TypeSourceInfo*)"}, + {"_ZN5clang4Sema23ActOnTemplatedFriendTagEPNS_5ScopeENS_14SourceLocationEjS3_RNS_12CXXScopeSpecEPNS_14IdentifierInfoES3_PNS_13AttributeListENS_11ASTMultiPtrIPNS_21TemplateParameterListEEE", "clang::Sema::ActOnTemplatedFriendTag(clang::Scope*, clang::SourceLocation, unsigned int, clang::SourceLocation, clang::CXXScopeSpec&, clang::IdentifierInfo*, clang::SourceLocation, clang::AttributeList*, clang::ASTMultiPtr)"}, + {"_ZN5clang4Sema19ActOnFriendTypeDeclEPNS_5ScopeERKNS_8DeclSpecENS_11ASTMultiPtrIPNS_21TemplateParameterListEEE", "clang::Sema::ActOnFriendTypeDecl(clang::Scope*, clang::DeclSpec const&, clang::ASTMultiPtr)"}, + {"_ZN5clang4Sema23ActOnFriendFunctionDeclEPNS_5ScopeERNS_10DeclaratorEbNS_11ASTMultiPtrIPNS_21TemplateParameterListEEE", "clang::Sema::ActOnFriendFunctionDecl(clang::Scope*, clang::Declarator&, bool, clang::ASTMultiPtr)"}, + {"_ZN5clang4Sema43DiagnoseReturnInConstructorExceptionHandlerEPNS_10CXXTryStmtE", "clang::Sema::DiagnoseReturnInConstructorExceptionHandler(clang::CXXTryStmt*)"}, + {"_Z21SearchForReturnInStmtRN5clang4SemaEPNS_4StmtE", "SearchForReturnInStmt(clang::Sema&, clang::Stmt*)"}, + {"_ZN5clang4Sema33CheckOverridingFunctionReturnTypeEPKNS_13CXXMethodDeclES3_", "clang::Sema::CheckOverridingFunctionReturnType(clang::CXXMethodDecl const*, clang::CXXMethodDecl const*)"}, + {"_ZN5clang4Sema15CheckPureMethodEPNS_13CXXMethodDeclENS_11SourceRangeE", "clang::Sema::CheckPureMethod(clang::CXXMethodDecl*, clang::SourceRange)"}, + {"_ZN5clang4Sema28ActOnCXXEnterDeclInitializerEPNS_5ScopeEPNS_4DeclE", "clang::Sema::ActOnCXXEnterDeclInitializer(clang::Scope*, clang::Decl*)"}, + {"_ZN5clang4Sema27ActOnCXXExitDeclInitializerEPNS_5ScopeEPNS_4DeclE", "clang::Sema::ActOnCXXExitDeclInitializer(clang::Scope*, clang::Decl*)"}, + {"_ZN5clang4Sema28ActOnCXXConditionDeclarationEPNS_5ScopeERNS_10DeclaratorE", "clang::Sema::ActOnCXXConditionDeclaration(clang::Scope*, clang::Declarator&)"}, + {"_ZN5clang4Sema28MarkVirtualMembersReferencedENS_14SourceLocationEPKNS_13CXXRecordDeclE", "clang::Sema::MarkVirtualMembersReferenced(clang::SourceLocation, clang::CXXRecordDecl const*)"}, + {"_ZN5clang4Sema17DefineUsedVTablesEv", "clang::Sema::DefineUsedVTables()"}, + {"_ZN5clang4Sema19SetIvarInitializersEPNS_22ObjCImplementationDeclE", "clang::Sema::SetIvarInitializers(clang::ObjCImplementationDecl*)"}, + {"_ZN12_GLOBAL__N_127CheckDefaultArgumentVisitor9VisitExprEPN5clang4ExprE", "(anonymous namespace)::CheckDefaultArgumentVisitor::VisitExpr(clang::Expr*)"}, + {"_Z38CheckOperatorNewDeleteDeclarationScopeRN5clang4SemaEPKNS_12FunctionDeclE", "CheckOperatorNewDeleteDeclarationScope(clang::Sema&, clang::FunctionDecl const*)"}, + {"_Z27CheckOperatorNewDeleteTypesRN5clang4SemaEPKNS_12FunctionDeclENS_7CanQualINS_4TypeEEES7_jj", "CheckOperatorNewDeleteTypes(clang::Sema&, clang::FunctionDecl const*, clang::CanQual, clang::CanQual, unsigned int, unsigned int)"}, + + // {"_ZZN5clang4Sema23CheckUsingDeclQualifierENS_14SourceLocationERKNS_12CXXScopeSpecES1_EN8UserData14doesNotContainEPKNS_13CXXRecordDeclEPv", + // "clang::Sema::CheckUsingDeclQualifier(clang::SourceLocation, clang::CXXScopeSpec const&, clang::SourceLocation)::UserData::doesNotContain(clang::CXXRecordDecl const*, void*)"}, + // "clang::Sema::CheckUsingDeclQualifier(clang::SourceLocation, clang::CXXScopeSpec const&, clang::Sema::CheckUsingDeclQualifier)::UserData::doesNotContain(clang::CXXRecordDecl const*, void*)" was returned + + + // {"_ZZN5clang4Sema23CheckUsingDeclQualifierENS_14SourceLocationERKNS_12CXXScopeSpecES1_EN8UserData7collectEPKNS_13CXXRecordDeclEPv", + // "clang::Sema::CheckUsingDeclQualifier(clang::SourceLocation, clang::CXXScopeSpec const&, clang::SourceLocation)::UserData::collect(clang::CXXRecordDecl const*, void*)"}, + // "clang::Sema::CheckUsingDeclQualifier(clang::SourceLocation, clang::CXXScopeSpec const&, clang::Sema::CheckUsingDeclQualifier)::UserData::collect(clang::CXXRecordDecl const*, void*)" was returned + + {"_ZN12_GLOBAL__N_118CheckAbstractUsage5VisitEN5clang7TypeLocENS1_4Sema17AbstractDiagSelIDE", "(anonymous namespace)::CheckAbstractUsage::Visit(clang::TypeLoc, clang::Sema::AbstractDiagSelID)"}, + {"_ZN12_GLOBAL__N_118CheckAbstractUsage5CheckEN5clang7TypeLocENS1_4Sema17AbstractDiagSelIDE", "(anonymous namespace)::CheckAbstractUsage::Check(clang::TypeLoc, clang::Sema::AbstractDiagSelID)"}, + {"_ZN5clang14AccessSpecDecl6CreateERNS_10ASTContextENS_15AccessSpecifierEPNS_11DeclContextENS_14SourceLocationES6_", "clang::AccessSpecDecl::Create(clang::ASTContext&, clang::AccessSpecifier, clang::DeclContext*, clang::SourceLocation, clang::SourceLocation)"}, + + // {"_ZN4llvm8DenseMapIPKN5clang4TypeESt4pairINS1_7CanQualIS2_EEPNS1_18CXXConstructorDeclEENS_12DenseMapInfoIS4_EENSB_ISA_EEE6insertERKS5_IS4_SA_E", + // "llvm::DenseMap, clang::CXXConstructorDecl*>, llvm::DenseMapInfo, llvm::DenseMapInfo, clang::CXXConstructorDecl*>>>::insert(std::pair, clang::CXXConstructorDecl*>> const&)"}, + // "llvm::DenseMap, clang::CXXConstructorDecl*>, llvm::DenseMapInfo, llvm::DenseMapInfo, clang::CXXConstructorDecl*>>>::insert(std::pair const&, clang::CXXConstructorDecl*>>)" was returned + + {"_ZN4llvm8DenseMapIPN5clang13CXXRecordDeclEbNS_12DenseMapInfoIS3_EENS4_IbEEE6insertERKSt4pairIS3_bE", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + + // {"_ZN4llvm8DenseMapIPKN5clang4TypeESt4pairINS1_7CanQualIS2_EEPNS1_18CXXConstructorDeclEENS_12DenseMapInfoIS4_EENSB_ISA_EEE16InsertIntoBucketERKS4_RKSA_PS5_IS4_SA_E", + // "llvm::DenseMap, clang::CXXConstructorDecl*>, llvm::DenseMapInfo, llvm::DenseMapInfo, clang::CXXConstructorDecl*>>>::InsertIntoBucket(clang::Type const* const&, std::pair, clang::CXXConstructorDecl*> const&, std::pair, clang::CXXConstructorDecl*>>*)"}, + // "llvm::DenseMap, clang::CXXConstructorDecl*>, llvm::DenseMapInfo, llvm::DenseMapInfo, clang::CXXConstructorDecl*>>>::InsertIntoBucket(clang::Type const* const&, std::pair, clang::CXXConstructorDecl*> const&, std::pair*, clang::CXXConstructorDecl*>>)" was returned + + {"_ZN4llvm8DenseMapIPKN5clang4TypeESt4pairINS1_7CanQualIS2_EEPNS1_18CXXConstructorDeclEENS_12DenseMapInfoIS4_EENSB_ISA_EEE4growEj", "llvm::DenseMap, clang::CXXConstructorDecl*>, llvm::DenseMapInfo, llvm::DenseMapInfo, clang::CXXConstructorDecl*>>>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPvPN5clang18CXXCtorInitializerENS_12DenseMapInfoIS1_EENS5_IS4_EEE16InsertIntoBucketERKS1_RKS4_PSt4pairIS1_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(void* const&, clang::CXXCtorInitializer* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPvPN5clang18CXXCtorInitializerENS_12DenseMapInfoIS1_EENS5_IS4_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKvPN5clang18CXXCtorInitializerENS_12DenseMapInfoIS2_EENS6_IS5_EEE16InsertIntoBucketERKS2_RKS5_PSt4pairIS2_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(void const* const&, clang::CXXCtorInitializer* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKvPN5clang18CXXCtorInitializerENS_12DenseMapInfoIS2_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNSt8_Rb_treeIN5clang8QualTypeESt4pairIKS1_PNS0_16CXXBaseSpecifierEESt10_Select1stIS6_ENS0_16QualTypeOrderingESaIS6_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS6_ERKS6_", "std::_Rb_tree, std::_Select1st>, clang::QualTypeOrdering, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIN5clang8QualTypeESt4pairIKS1_PNS0_16CXXBaseSpecifierEESt10_Select1stIS6_ENS0_16QualTypeOrderingESaIS6_EE16_M_insert_uniqueERKS6_", "std::_Rb_tree, std::_Select1st>, clang::QualTypeOrdering, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPN5clang11ParmVarDeclENS1_14SourceLocationENS_12DenseMapInfoIS3_EENS5_IS4_EEE16InsertIntoBucketERKS3_RKS4_PSt4pairIS3_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::ParmVarDecl* const&, clang::SourceLocation const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPN5clang11ParmVarDeclENS1_14SourceLocationENS_12DenseMapInfoIS3_EENS5_IS4_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKN5clang13CXXRecordDeclEcNS_12DenseMapInfoIS4_EENS5_IcEEE6insertERKSt4pairIS4_cE", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPKN5clang13CXXRecordDeclEcNS_12DenseMapInfoIS4_EENS5_IcEEE16InsertIntoBucketERKS4_RKcPSt4pairIS4_cE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::CXXRecordDecl const* const&, char const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang13CXXRecordDeclEcNS_12DenseMapInfoIS4_EENS5_IcEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang15UsingShadowDeclC2EPNS_11DeclContextENS_14SourceLocationEPNS_9UsingDeclEPNS_9NamedDeclE", "clang::UsingShadowDecl::UsingShadowDecl(clang::DeclContext*, clang::SourceLocation, clang::UsingDecl*, clang::NamedDecl*)"}, + {"_ZN5clang15UsingShadowDeclD1Ev", "clang::UsingShadowDecl::~UsingShadowDecl()"}, + {"_ZN5clang15UsingShadowDeclD0Ev", "clang::UsingShadowDecl::~UsingShadowDecl()"}, + + // {"_ZN4llvm8DenseMapIPN5clang10RecordDeclESt4pairIPNS1_9NamedDeclEPNS1_18CXXCtorInitializerEENS_12DenseMapInfoIS3_EENSA_IS9_EEE16InsertIntoBucketERKS3_RKS9_PS4_IS3_S9_E", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(clang::RecordDecl* const&, std::pair const&, std::pair>*)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(clang::RecordDecl* const&, std::pair const&, std::pair*>)" was returned + + {"_ZN4llvm8DenseMapIPN5clang10RecordDeclESt4pairIPNS1_9NamedDeclEPNS1_18CXXCtorInitializerEENS_12DenseMapInfoIS3_EENSA_IS9_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang17InitializedEntityELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN5clang14AccessSpecDeclD1Ev", "clang::AccessSpecDecl::~AccessSpecDecl()"}, + {"_ZN5clang14AccessSpecDeclD0Ev", "clang::AccessSpecDecl::~AccessSpecDecl()"}, + {"_ZNK5clang14AccessSpecDecl14getSourceRangeEv", "clang::AccessSpecDecl::getSourceRange() const"}, + {"_ZNSt8_Rb_treeIN5clang8QualTypeESt4pairIKS1_PNS0_16CXXBaseSpecifierEESt10_Select1stIS6_ENS0_16QualTypeOrderingESaIS6_EE8_M_eraseEPSt13_Rb_tree_nodeIS6_E", "std::_Rb_tree, std::_Select1st>, clang::QualTypeOrdering, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZN5clang4Sema25ActOnStartOfObjCMethodDefEPNS_5ScopeEPNS_4DeclE", "clang::Sema::ActOnStartOfObjCMethodDef(clang::Scope*, clang::Decl*)"}, + {"_ZN5clang4Sema24ActOnStartClassInterfaceENS_14SourceLocationEPNS_14IdentifierInfoES1_S3_S1_PKPNS_4DeclEjPKS1_S1_PNS_13AttributeListE", "clang::Sema::ActOnStartClassInterface(clang::SourceLocation, clang::IdentifierInfo*, clang::SourceLocation, clang::IdentifierInfo*, clang::SourceLocation, clang::Decl* const*, unsigned int, clang::SourceLocation const*, clang::SourceLocation, clang::AttributeList*)"}, + {"_ZN5clang4Sema18CheckObjCDeclScopeEPNS_4DeclE", "clang::Sema::CheckObjCDeclScope(clang::Decl*)"}, + {"_ZN5clang4Sema22ActOnCompatiblityAliasENS_14SourceLocationEPNS_14IdentifierInfoES1_S3_S1_", "clang::Sema::ActOnCompatiblityAlias(clang::SourceLocation, clang::IdentifierInfo*, clang::SourceLocation, clang::IdentifierInfo*, clang::SourceLocation)"}, + {"_ZN5clang4Sema52CheckForwardProtocolDeclarationForCircularDependencyEPNS_14IdentifierInfoERNS_14SourceLocationES3_RKNS_8ObjCListINS_16ObjCProtocolDeclEEE", "clang::Sema::CheckForwardProtocolDeclarationForCircularDependency(clang::IdentifierInfo*, clang::SourceLocation&, clang::SourceLocation, clang::ObjCList const&)"}, + {"_ZN5clang4Sema27ActOnStartProtocolInterfaceENS_14SourceLocationEPNS_14IdentifierInfoES1_PKPNS_4DeclEjPKS1_S1_PNS_13AttributeListE", "clang::Sema::ActOnStartProtocolInterface(clang::SourceLocation, clang::IdentifierInfo*, clang::SourceLocation, clang::Decl* const*, unsigned int, clang::SourceLocation const*, clang::SourceLocation, clang::AttributeList*)"}, + {"_ZN5clang4Sema23FindProtocolDeclarationEbPKSt4pairIPNS_14IdentifierInfoENS_14SourceLocationEEjRN4llvm15SmallVectorImplIPNS_4DeclEEE", "clang::Sema::FindProtocolDeclaration(bool, std::pair const*, unsigned int, llvm::SmallVectorImpl&)"}, + {"_ZN5clang4Sema32DiagnoseClassExtensionDupMethodsEPNS_16ObjCCategoryDeclEPNS_17ObjCInterfaceDeclE", "clang::Sema::DiagnoseClassExtensionDupMethods(clang::ObjCCategoryDecl*, clang::ObjCInterfaceDecl*)"}, + {"_ZN5clang4Sema26MatchTwoMethodDeclarationsEPKNS_14ObjCMethodDeclES3_bb", "clang::Sema::MatchTwoMethodDeclarations(clang::ObjCMethodDecl const*, clang::ObjCMethodDecl const*, bool, bool)"}, + {"_ZN5clang4Sema31ActOnForwardProtocolDeclarationENS_14SourceLocationEPKSt4pairIPNS_14IdentifierInfoES1_EjPNS_13AttributeListE", "clang::Sema::ActOnForwardProtocolDeclaration(clang::SourceLocation, std::pair const*, unsigned int, clang::AttributeList*)"}, + {"_ZN5clang4Sema27ActOnStartCategoryInterfaceENS_14SourceLocationEPNS_14IdentifierInfoES1_S3_S1_PKPNS_4DeclEjPKS1_S1_", "clang::Sema::ActOnStartCategoryInterface(clang::SourceLocation, clang::IdentifierInfo*, clang::SourceLocation, clang::IdentifierInfo*, clang::SourceLocation, clang::Decl* const*, unsigned int, clang::SourceLocation const*, clang::SourceLocation)"}, + {"_ZN5clang4Sema32ActOnStartCategoryImplementationENS_14SourceLocationEPNS_14IdentifierInfoES1_S3_S1_", "clang::Sema::ActOnStartCategoryImplementation(clang::SourceLocation, clang::IdentifierInfo*, clang::SourceLocation, clang::IdentifierInfo*, clang::SourceLocation)"}, + {"_ZN5clang4Sema29ActOnStartClassImplementationENS_14SourceLocationEPNS_14IdentifierInfoES1_S3_S1_", "clang::Sema::ActOnStartClassImplementation(clang::SourceLocation, clang::IdentifierInfo*, clang::SourceLocation, clang::IdentifierInfo*, clang::SourceLocation)"}, + {"_ZN5clang4Sema24CheckImplementationIvarsEPNS_22ObjCImplementationDeclEPPNS_12ObjCIvarDeclEjNS_14SourceLocationE", "clang::Sema::CheckImplementationIvars(clang::ObjCImplementationDecl*, clang::ObjCIvarDecl**, unsigned int, clang::SourceLocation)"}, + {"_ZN5clang4Sema19WarnUndefinedMethodENS_14SourceLocationEPNS_14ObjCMethodDeclERbj", "clang::Sema::WarnUndefinedMethod(clang::SourceLocation, clang::ObjCMethodDecl*, bool&, unsigned int)"}, + {"_ZN5clang4Sema27WarnConflictingTypedMethodsEPNS_14ObjCMethodDeclES2_", "clang::Sema::WarnConflictingTypedMethods(clang::ObjCMethodDecl*, clang::ObjCMethodDecl*)"}, + {"_ZN5clang4Sema23CheckProtocolMethodDefsENS_14SourceLocationEPNS_16ObjCProtocolDeclERbRKN4llvm8DenseSetINS_8SelectorENS5_12DenseMapInfoIS7_EEEESC_PNS_17ObjCContainerDeclE", "clang::Sema::CheckProtocolMethodDefs(clang::SourceLocation, clang::ObjCProtocolDecl*, bool&, llvm::DenseSet> const&, llvm::DenseSet> const&, clang::ObjCContainerDecl*)"}, + {"_ZN5clang4Sema26MatchAllMethodDeclarationsERKN4llvm8DenseSetINS_8SelectorENS1_12DenseMapInfoIS3_EEEES8_RS6_S9_PNS_12ObjCImplDeclEPNS_17ObjCContainerDeclERbb", "clang::Sema::MatchAllMethodDeclarations(llvm::DenseSet> const&, llvm::DenseSet> const&, llvm::DenseSet>&, llvm::DenseSet>&, clang::ObjCImplDecl*, clang::ObjCContainerDecl*, bool&, bool)"}, + {"_ZN5clang4Sema25ImplMethodsVsClassMethodsEPNS_5ScopeEPNS_12ObjCImplDeclEPNS_17ObjCContainerDeclEb", "clang::Sema::ImplMethodsVsClassMethods(clang::Scope*, clang::ObjCImplDecl*, clang::ObjCContainerDecl*, bool)"}, + {"_ZN5clang4Sema28ActOnForwardClassDeclarationENS_14SourceLocationEPPNS_14IdentifierInfoEPS1_j", "clang::Sema::ActOnForwardClassDeclaration(clang::SourceLocation, clang::IdentifierInfo**, clang::SourceLocation*, unsigned int)"}, + {"_ZN5clang4Sema14ReadMethodPoolENS_8SelectorE", "clang::Sema::ReadMethodPool(clang::Selector)"}, + {"_ZN5clang4Sema21AddMethodToGlobalPoolEPNS_14ObjCMethodDeclEbb", "clang::Sema::AddMethodToGlobalPool(clang::ObjCMethodDecl*, bool, bool)"}, + {"_ZN5clang4Sema24LookupMethodInGlobalPoolENS_8SelectorENS_11SourceRangeEbbb", "clang::Sema::LookupMethodInGlobalPool(clang::Selector, clang::SourceRange, bool, bool, bool)"}, + {"_ZN5clang4Sema35LookupImplementedMethodInGlobalPoolENS_8SelectorE", "clang::Sema::LookupImplementedMethodInGlobalPool(clang::Selector)"}, + {"_ZN5clang4Sema33CompareMethodParamsInBaseAndSuperEPNS_4DeclEPNS_14ObjCMethodDeclEb", "clang::Sema::CompareMethodParamsInBaseAndSuper(clang::Decl*, clang::ObjCMethodDecl*, bool)"}, + {"_ZN5clang4Sema22DiagnoseDuplicateIvarsEPNS_17ObjCInterfaceDeclES2_", "clang::Sema::DiagnoseDuplicateIvars(clang::ObjCInterfaceDecl*, clang::ObjCInterfaceDecl*)"}, + {"_ZN5clang4Sema10ActOnAtEndEPNS_5ScopeENS_11SourceRangeEPNS_4DeclEPS5_jS6_jPNS_9OpaquePtrINS_12DeclGroupRefEEEj", "clang::Sema::ActOnAtEnd(clang::Scope*, clang::SourceRange, clang::Decl*, clang::Decl**, unsigned int, clang::Decl**, unsigned int, clang::OpaquePtr*, unsigned int)"}, + {"_ZN5clang4Sema22ActOnMethodDeclarationEPNS_5ScopeENS_14SourceLocationES3_NS_3tok9TokenKindEPNS_4DeclERNS_12ObjCDeclSpecENS_9OpaquePtrINS_8QualTypeEEENS_8SelectorEPNS0_11ObjCArgInfoEPNS_15DeclaratorChunk9ParamInfoEjPNS_13AttributeListENS4_15ObjCKeywordKindEb", "clang::Sema::ActOnMethodDeclaration(clang::Scope*, clang::SourceLocation, clang::SourceLocation, clang::tok::TokenKind, clang::Decl*, clang::ObjCDeclSpec&, clang::OpaquePtr, clang::Selector, clang::Sema::ObjCArgInfo*, clang::DeclaratorChunk::ParamInfo*, unsigned int, clang::AttributeList*, clang::tok::ObjCKeywordKind, bool)"}, + {"_ZN5clang4Sema9ActOnDefsEPNS_5ScopeEPNS_4DeclENS_14SourceLocationEPNS_14IdentifierInfoERN4llvm15SmallVectorImplIS4_EE", "clang::Sema::ActOnDefs(clang::Scope*, clang::Decl*, clang::SourceLocation, clang::IdentifierInfo*, llvm::SmallVectorImpl&)"}, + {"_ZN5clang4Sema22BuildObjCExceptionDeclEPNS_14TypeSourceInfoENS_8QualTypeEPNS_14IdentifierInfoENS_14SourceLocationEb", "clang::Sema::BuildObjCExceptionDecl(clang::TypeSourceInfo*, clang::QualType, clang::IdentifierInfo*, clang::SourceLocation, bool)"}, + {"_ZN5clang4Sema22ActOnObjCExceptionDeclEPNS_5ScopeERNS_10DeclaratorE", "clang::Sema::ActOnObjCExceptionDecl(clang::Scope*, clang::Declarator&)"}, + {"_ZN5clang4Sema33CollectIvarsToConstructOrDestructEPNS_17ObjCInterfaceDeclERN4llvm15SmallVectorImplIPNS_12ObjCIvarDeclEEE", "clang::Sema::CollectIvarsToConstructOrDestruct(clang::ObjCInterfaceDecl*, llvm::SmallVectorImpl&)"}, + {"_ZN5clang22ObjCImplementationDecl19setIvarInitializersERNS_10ASTContextEPPNS_18CXXCtorInitializerEj", "clang::ObjCImplementationDecl::setIvarInitializers(clang::ASTContext&, clang::CXXCtorInitializer**, unsigned int)"}, + {"_ZN5clang4Sema35DiagnoseUseOfUnimplementedSelectorsEv", "clang::Sema::DiagnoseUseOfUnimplementedSelectors()"}, + {"_Z23isObjCTypeSubstitutableRN5clang10ASTContextEPKNS_21ObjCObjectPointerTypeES4_b", "isObjCTypeSubstitutable(clang::ASTContext&, clang::ObjCObjectPointerType const*, clang::ObjCObjectPointerType const*, bool)"}, + + // {"_ZN4llvm8DenseMapIN5clang8SelectorESt4pairINS1_14ObjCMethodListES4_ENS_12DenseMapInfoIS2_EENS6_IS5_EEE6insertERKS3_IS2_S5_E", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::insert(std::pair> const&)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::insert(std::pair const&>)" was returned + + + // {"_ZN4llvm8DenseMapIN5clang8SelectorESt4pairINS1_14ObjCMethodListES4_ENS_12DenseMapInfoIS2_EENS6_IS5_EEE16InsertIntoBucketERKS2_RKS5_PS3_IS2_S5_E", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(clang::Selector const&, std::pair const&, std::pair>*)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(clang::Selector const&, std::pair const&, std::pair*>)" was returned + + {"_ZN4llvm8DenseMapIN5clang8SelectorESt4pairINS1_14ObjCMethodListES4_ENS_12DenseMapInfoIS2_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIN5clang8SelectorEcNS_12DenseMapInfoIS2_EENS3_IcEEE6insertERKSt4pairIS2_cE", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIN5clang8SelectorEcNS_12DenseMapInfoIS2_EENS3_IcEEE16InsertIntoBucketERKS2_RKcPSt4pairIS2_cE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::Selector const&, char const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIN5clang8SelectorEcNS_12DenseMapInfoIS2_EENS3_IcEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIN5clang8SelectorEPKNS1_14ObjCMethodDeclENS_12DenseMapInfoIS2_EENS6_IS5_EEE16InsertIntoBucketERKS2_RKS5_PSt4pairIS2_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::Selector const&, clang::ObjCMethodDecl const* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIN5clang8SelectorEPKNS1_14ObjCMethodDeclENS_12DenseMapInfoIS2_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang4Sema27CheckSpecifiedExceptionTypeENS_8QualTypeERKNS_11SourceRangeE", "clang::Sema::CheckSpecifiedExceptionType(clang::QualType, clang::SourceRange const&)"}, + {"_ZN5clang4Sema25CheckDistantExceptionSpecENS_8QualTypeE", "clang::Sema::CheckDistantExceptionSpec(clang::QualType)"}, + {"_ZN5clang4Sema28CheckEquivalentExceptionSpecEPNS_12FunctionDeclES2_", "clang::Sema::CheckEquivalentExceptionSpec(clang::FunctionDecl*, clang::FunctionDecl*)"}, + {"_ZN5clang4Sema28CheckEquivalentExceptionSpecERKNS_17PartialDiagnosticES3_PKNS_17FunctionProtoTypeENS_14SourceLocationES6_S7_PbS8_", "clang::Sema::CheckEquivalentExceptionSpec(clang::PartialDiagnostic const&, clang::PartialDiagnostic const&, clang::FunctionProtoType const*, clang::SourceLocation, clang::FunctionProtoType const*, clang::SourceLocation, bool*, bool*)"}, + {"_ZN5clang4Sema28CheckEquivalentExceptionSpecEPKNS_17FunctionProtoTypeENS_14SourceLocationES3_S4_", "clang::Sema::CheckEquivalentExceptionSpec(clang::FunctionProtoType const*, clang::SourceLocation, clang::FunctionProtoType const*, clang::SourceLocation)"}, + {"_ZN5clang4Sema24CheckExceptionSpecSubsetERKNS_17PartialDiagnosticES3_PKNS_17FunctionProtoTypeENS_14SourceLocationES6_S7_", "clang::Sema::CheckExceptionSpecSubset(clang::PartialDiagnostic const&, clang::PartialDiagnostic const&, clang::FunctionProtoType const*, clang::SourceLocation, clang::FunctionProtoType const*, clang::SourceLocation)"}, + {"_ZN5clang4Sema23CheckParamExceptionSpecERKNS_17PartialDiagnosticEPKNS_17FunctionProtoTypeENS_14SourceLocationES6_S7_", "clang::Sema::CheckParamExceptionSpec(clang::PartialDiagnostic const&, clang::FunctionProtoType const*, clang::SourceLocation, clang::FunctionProtoType const*, clang::SourceLocation)"}, + {"_ZN5clang4Sema31CheckExceptionSpecCompatibilityEPNS_4ExprENS_8QualTypeE", "clang::Sema::CheckExceptionSpecCompatibility(clang::Expr*, clang::QualType)"}, + {"_ZN5clang21GetUnderlyingFunctionENS_8QualTypeE", "clang::GetUnderlyingFunction(clang::QualType)"}, + {"_ZN5clang4Sema36CheckOverridingFunctionExceptionSpecEPKNS_13CXXMethodDeclES3_", "clang::Sema::CheckOverridingFunctionExceptionSpec(clang::CXXMethodDecl const*, clang::CXXMethodDecl const*)"}, + {"_ZN5clang4Sema17DiagnoseUseOfDeclEPNS_9NamedDeclENS_14SourceLocationEb", "clang::Sema::DiagnoseUseOfDecl(clang::NamedDecl*, clang::SourceLocation, bool)"}, + {"_ZN5clang4Sema21DiagnoseSentinelCallsEPNS_9NamedDeclENS_14SourceLocationEPPNS_4ExprEj", "clang::Sema::DiagnoseSentinelCalls(clang::NamedDecl*, clang::SourceLocation, clang::Expr**, unsigned int)"}, + {"_ZNK5clang4Sema12getExprRangeEPNS_4ExprE", "clang::Sema::getExprRange(clang::Expr*) const"}, + {"_ZN5clang4Sema30DefaultFunctionArrayConversionERPNS_4ExprE", "clang::Sema::DefaultFunctionArrayConversion(clang::Expr*&)"}, + {"_ZN5clang4Sema23DefaultLvalueConversionERPNS_4ExprE", "clang::Sema::DefaultLvalueConversion(clang::Expr*&)"}, + {"_ZN5clang4Sema24ConvertPropertyForRValueERPNS_4ExprE", "clang::Sema::ConvertPropertyForRValue(clang::Expr*&)"}, + {"_ZN5clang4Sema36DefaultFunctionArrayLvalueConversionERPNS_4ExprE", "clang::Sema::DefaultFunctionArrayLvalueConversion(clang::Expr*&)"}, + {"_ZN5clang4Sema21UsualUnaryConversionsERPNS_4ExprE", "clang::Sema::UsualUnaryConversions(clang::Expr*&)"}, + {"_ZN5clang4Sema24DefaultArgumentPromotionERPNS_4ExprE", "clang::Sema::DefaultArgumentPromotion(clang::Expr*&)"}, + {"_ZN5clang4Sema32DefaultVariadicArgumentPromotionERPNS_4ExprENS0_16VariadicCallTypeEPNS_12FunctionDeclE", "clang::Sema::DefaultVariadicArgumentPromotion(clang::Expr*&, clang::Sema::VariadicCallType, clang::FunctionDecl*)"}, + {"_ZN5clang4Sema19DiagRuntimeBehaviorENS_14SourceLocationERKNS_17PartialDiagnosticE", "clang::Sema::DiagRuntimeBehavior(clang::SourceLocation, clang::PartialDiagnostic const&)"}, + {"_ZN5clang4Sema26UsualArithmeticConversionsERPNS_4ExprES3_b", "clang::Sema::UsualArithmeticConversions(clang::Expr*&, clang::Expr*&, bool)"}, + {"_ZN5clang4Sema18ActOnStringLiteralEPKNS_5TokenEj", "clang::Sema::ActOnStringLiteral(clang::Token const*, unsigned int)"}, + {"_ZN5clang4Sema16BuildDeclRefExprEPNS_9ValueDeclENS_8QualTypeENS_13ExprValueKindENS_14SourceLocationEPKNS_12CXXScopeSpecE", "clang::Sema::BuildDeclRefExpr(clang::ValueDecl*, clang::QualType, clang::ExprValueKind, clang::SourceLocation, clang::CXXScopeSpec const*)"}, + {"_ZN5clang4Sema16BuildDeclRefExprEPNS_9ValueDeclENS_8QualTypeENS_13ExprValueKindERKNS_19DeclarationNameInfoEPKNS_12CXXScopeSpecE", "clang::Sema::BuildDeclRefExpr(clang::ValueDecl*, clang::QualType, clang::ExprValueKind, clang::DeclarationNameInfo const&, clang::CXXScopeSpec const*)"}, + {"_ZN5clang4Sema25MarkDeclarationReferencedENS_14SourceLocationEPNS_4DeclE", "clang::Sema::MarkDeclarationReferenced(clang::SourceLocation, clang::Decl*)"}, + {"_ZN5clang4Sema40BuildAnonymousStructUnionMemberReferenceERKNS_12CXXScopeSpecENS_14SourceLocationEPNS_17IndirectFieldDeclEPNS_4ExprES4_", "clang::Sema::BuildAnonymousStructUnionMemberReference(clang::CXXScopeSpec const&, clang::SourceLocation, clang::IndirectFieldDecl*, clang::Expr*, clang::SourceLocation)"}, + {"_ZN5clang4Sema24BuildDeclarationNameExprERKNS_12CXXScopeSpecERKNS_19DeclarationNameInfoEPNS_9NamedDeclE", "clang::Sema::BuildDeclarationNameExpr(clang::CXXScopeSpec const&, clang::DeclarationNameInfo const&, clang::NamedDecl*)"}, + {"_Z23BuildFieldReferenceExprRN5clang4SemaEPNS_4ExprEbRKNS_12CXXScopeSpecEPNS_9FieldDeclENS_14DeclAccessPairERKNS_19DeclarationNameInfoE", "BuildFieldReferenceExpr(clang::Sema&, clang::Expr*, bool, clang::CXXScopeSpec const&, clang::FieldDecl*, clang::DeclAccessPair, clang::DeclarationNameInfo const&)"}, + {"_ZN5clang4Sema19DiagnoseEmptyLookupEPNS_5ScopeERNS_12CXXScopeSpecERNS_12LookupResultENS0_18CorrectTypoContextE", "clang::Sema::DiagnoseEmptyLookup(clang::Scope*, clang::CXXScopeSpec&, clang::LookupResult&, clang::Sema::CorrectTypoContext)"}, + {"_ZN5clang4Sema28canSynthesizeProvisionalIvarEPNS_14IdentifierInfoE", "clang::Sema::canSynthesizeProvisionalIvar(clang::IdentifierInfo*)"}, + {"_ZN5clang4Sema28canSynthesizeProvisionalIvarEPNS_16ObjCPropertyDeclE", "clang::Sema::canSynthesizeProvisionalIvar(clang::ObjCPropertyDecl*)"}, + {"_ZN5clang4Sema17ActOnIdExpressionEPNS_5ScopeERNS_12CXXScopeSpecERNS_13UnqualifiedIdEbb", "clang::Sema::ActOnIdExpression(clang::Scope*, clang::CXXScopeSpec&, clang::UnqualifiedId&, bool, bool)"}, + {"_Z22DecomposeUnqualifiedIdRN5clang4SemaERKNS_13UnqualifiedIdERNS_24TemplateArgumentListInfoERNS_19DeclarationNameInfoERPKS5_", "DecomposeUnqualifiedId(clang::Sema&, clang::UnqualifiedId const&, clang::TemplateArgumentListInfo&, clang::DeclarationNameInfo&, clang::TemplateArgumentListInfo const*&)"}, + {"_ZN5clang4Sema18LookupInObjCMethodERNS_12LookupResultEPNS_5ScopeEPNS_14IdentifierInfoEb", "clang::Sema::LookupInObjCMethod(clang::LookupResult&, clang::Scope*, clang::IdentifierInfo*, bool)"}, + {"_ZN5clang4Sema26UseArgumentDependentLookupERKNS_12CXXScopeSpecERKNS_12LookupResultEb", "clang::Sema::UseArgumentDependentLookup(clang::CXXScopeSpec const&, clang::LookupResult const&, bool)"}, + {"_ZN5clang4Sema31BuildPossibleImplicitMemberExprERKNS_12CXXScopeSpecERNS_12LookupResultEPKNS_24TemplateArgumentListInfoE", "clang::Sema::BuildPossibleImplicitMemberExpr(clang::CXXScopeSpec const&, clang::LookupResult&, clang::TemplateArgumentListInfo const*)"}, + {"_ZN5clang4Sema24BuildDeclarationNameExprERKNS_12CXXScopeSpecERNS_12LookupResultEb", "clang::Sema::BuildDeclarationNameExpr(clang::CXXScopeSpec const&, clang::LookupResult&, bool)"}, + {"_ZN5clang4Sema23BuildImplicitMemberExprERKNS_12CXXScopeSpecERNS_12LookupResultEPKNS_24TemplateArgumentListInfoEb", "clang::Sema::BuildImplicitMemberExpr(clang::CXXScopeSpec const&, clang::LookupResult&, clang::TemplateArgumentListInfo const*, bool)"}, + {"_Z25DiagnoseInstanceReferenceRN5clang4SemaERKNS_12CXXScopeSpecEPNS_9NamedDeclERKNS_19DeclarationNameInfoE", "DiagnoseInstanceReference(clang::Sema&, clang::CXXScopeSpec const&, clang::NamedDecl*, clang::DeclarationNameInfo const&)"}, + {"_ZN5clang4Sema33BuildQualifiedDeclarationNameExprERNS_12CXXScopeSpecERKNS_19DeclarationNameInfoE", "clang::Sema::BuildQualifiedDeclarationNameExpr(clang::CXXScopeSpec&, clang::DeclarationNameInfo const&)"}, + {"_ZN5clang4Sema29PerformObjectMemberConversionERPNS_4ExprEPNS_19NestedNameSpecifierEPNS_9NamedDeclES7_", "clang::Sema::PerformObjectMemberConversion(clang::Expr*&, clang::NestedNameSpecifier*, clang::NamedDecl*, clang::NamedDecl*)"}, + {"_ZN5clang4Sema24BuildMemberReferenceExprEPNS_4ExprENS_8QualTypeENS_14SourceLocationEbRKNS_12CXXScopeSpecEPNS_9NamedDeclERNS_12LookupResultEPKNS_24TemplateArgumentListInfoEb", "clang::Sema::BuildMemberReferenceExpr(clang::Expr*, clang::QualType, clang::SourceLocation, bool, clang::CXXScopeSpec const&, clang::NamedDecl*, clang::LookupResult&, clang::TemplateArgumentListInfo const*, bool)"}, + {"_Z15CheckDeclInExprRN5clang4SemaENS_14SourceLocationEPNS_9NamedDeclE", "CheckDeclInExpr(clang::Sema&, clang::SourceLocation, clang::NamedDecl*)"}, + {"_Z21BuildBlockDeclRefExprRN5clang4SemaEPNS_9ValueDeclERKNS_19DeclarationNameInfoEb", "BuildBlockDeclRefExpr(clang::Sema&, clang::ValueDecl*, clang::DeclarationNameInfo const&, bool)"}, + {"_ZN5clang4Sema19ActOnPredefinedExprENS_14SourceLocationENS_3tok9TokenKindE", "clang::Sema::ActOnPredefinedExpr(clang::SourceLocation, clang::tok::TokenKind)"}, + {"_ZN5clang4Sema22ActOnCharacterConstantERKNS_5TokenE", "clang::Sema::ActOnCharacterConstant(clang::Token const&)"}, + {"_ZN5clang4Sema20ActOnNumericConstantERKNS_5TokenE", "clang::Sema::ActOnNumericConstant(clang::Token const&)"}, + {"_ZN5clang4Sema14ActOnParenExprENS_14SourceLocationES1_PNS_4ExprE", "clang::Sema::ActOnParenExpr(clang::SourceLocation, clang::SourceLocation, clang::Expr*)"}, + {"_ZN5clang4Sema25CheckSizeOfAlignOfOperandENS_8QualTypeENS_14SourceLocationENS_11SourceRangeEb", "clang::Sema::CheckSizeOfAlignOfOperand(clang::QualType, clang::SourceLocation, clang::SourceRange, bool)"}, + {"_ZN5clang4Sema23CreateSizeOfAlignOfExprEPNS_14TypeSourceInfoENS_14SourceLocationEbNS_11SourceRangeE", "clang::Sema::CreateSizeOfAlignOfExpr(clang::TypeSourceInfo*, clang::SourceLocation, bool, clang::SourceRange)"}, + {"_ZN5clang4Sema23CreateSizeOfAlignOfExprEPNS_4ExprENS_14SourceLocationEbNS_11SourceRangeE", "clang::Sema::CreateSizeOfAlignOfExpr(clang::Expr*, clang::SourceLocation, bool, clang::SourceRange)"}, + {"_ZN5clang4Sema20CheckPlaceholderExprEPNS_4ExprENS_14SourceLocationE", "clang::Sema::CheckPlaceholderExpr(clang::Expr*, clang::SourceLocation)"}, + {"_ZN5clang4Sema22ActOnSizeOfAlignOfExprENS_14SourceLocationEbbPvRKNS_11SourceRangeE", "clang::Sema::ActOnSizeOfAlignOfExpr(clang::SourceLocation, bool, bool, void*, clang::SourceRange const&)"}, + {"_ZN5clang4Sema19ActOnPostfixUnaryOpEPNS_5ScopeENS_14SourceLocationENS_3tok9TokenKindEPNS_4ExprE", "clang::Sema::ActOnPostfixUnaryOp(clang::Scope*, clang::SourceLocation, clang::tok::TokenKind, clang::Expr*)"}, + {"_ZN5clang4Sema12BuildUnaryOpEPNS_5ScopeENS_14SourceLocationENS_17UnaryOperatorKindEPNS_4ExprE", "clang::Sema::BuildUnaryOp(clang::Scope*, clang::SourceLocation, clang::UnaryOperatorKind, clang::Expr*)"}, + {"_ZN5clang4Sema23ActOnArraySubscriptExprEPNS_5ScopeEPNS_4ExprENS_14SourceLocationES4_S5_", "clang::Sema::ActOnArraySubscriptExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, clang::Expr*, clang::SourceLocation)"}, + {"_ZN5clang4Sema36MaybeConvertParenListExprToParenExprEPNS_5ScopeEPNS_4ExprE", "clang::Sema::MaybeConvertParenListExprToParenExpr(clang::Scope*, clang::Expr*)"}, + {"_ZN5clang4Sema31CreateBuiltinArraySubscriptExprEPNS_4ExprENS_14SourceLocationES2_S3_", "clang::Sema::CreateBuiltinArraySubscriptExpr(clang::Expr*, clang::SourceLocation, clang::Expr*, clang::SourceLocation)"}, + {"_ZN5clang4Sema24ActOnDependentMemberExprEPNS_4ExprENS_8QualTypeEbNS_14SourceLocationERKNS_12CXXScopeSpecEPNS_9NamedDeclERKNS_19DeclarationNameInfoEPKNS_24TemplateArgumentListInfoE", "clang::Sema::ActOnDependentMemberExpr(clang::Expr*, clang::QualType, bool, clang::SourceLocation, clang::CXXScopeSpec const&, clang::NamedDecl*, clang::DeclarationNameInfo const&, clang::TemplateArgumentListInfo const*)"}, + {"_ZN5clang4Sema29CheckQualifiedMemberReferenceEPNS_4ExprENS_8QualTypeERKNS_12CXXScopeSpecERKNS_12LookupResultE", "clang::Sema::CheckQualifiedMemberReference(clang::Expr*, clang::QualType, clang::CXXScopeSpec const&, clang::LookupResult const&)"}, + + // {"_Z24IsProvablyNotDerivedFromRN5clang4SemaEPNS_13CXXRecordDeclERKN4llvm11SmallPtrSetIS3_Lj4EEE", + // "IsProvablyNotDerivedFrom(clang::Sema&, clang::CXXRecordDecl*, llvm::SmallPtrSet const&)"}, + // "IsProvablyNotDerivedFrom(clang::Sema&, clang::CXXRecordDecl*, llvm::SmallPtrSet const&)" was returned + + {"_ZN5clang4Sema24BuildMemberReferenceExprEPNS_4ExprENS_8QualTypeENS_14SourceLocationEbRNS_12CXXScopeSpecEPNS_9NamedDeclERKNS_19DeclarationNameInfoEPKNS_24TemplateArgumentListInfoE", "clang::Sema::BuildMemberReferenceExpr(clang::Expr*, clang::QualType, clang::SourceLocation, bool, clang::CXXScopeSpec&, clang::NamedDecl*, clang::DeclarationNameInfo const&, clang::TemplateArgumentListInfo const*)"}, + {"_Z24LookupMemberExprInRecordRN5clang4SemaERNS_12LookupResultENS_11SourceRangeEPKNS_10RecordTypeENS_14SourceLocationERNS_12CXXScopeSpecEb", "LookupMemberExprInRecord(clang::Sema&, clang::LookupResult&, clang::SourceRange, clang::RecordType const*, clang::SourceLocation, clang::CXXScopeSpec&, bool)"}, + {"_ZN5clang4Sema16LookupMemberExprERNS_12LookupResultERPNS_4ExprERbNS_14SourceLocationERNS_12CXXScopeSpecEPNS_4DeclEb", "clang::Sema::LookupMemberExpr(clang::LookupResult&, clang::Expr*&, bool&, clang::SourceLocation, clang::CXXScopeSpec&, clang::Decl*, bool)"}, + {"_Z34ShouldTryAgainWithRedefinitionTypeRN5clang4SemaERPNS_4ExprE", "ShouldTryAgainWithRedefinitionType(clang::Sema&, clang::Expr*&)"}, + {"_Z24FindGetterSetterNameDeclPKN5clang21ObjCObjectPointerTypeEPNS_14IdentifierInfoERKNS_8SelectorERNS_10ASTContextE", "FindGetterSetterNameDecl(clang::ObjCObjectPointerType const*, clang::IdentifierInfo*, clang::Selector const&, clang::ASTContext&)"}, + {"_ZN5clang4Sema13ActOnCallExprEPNS_5ScopeEPNS_4ExprENS_14SourceLocationENS_11ASTMultiPtrIS4_EES5_S4_", "clang::Sema::ActOnCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, clang::ASTMultiPtr, clang::SourceLocation, clang::Expr*)"}, + {"_ZN5clang4Sema21ActOnMemberAccessExprEPNS_5ScopeEPNS_4ExprENS_14SourceLocationENS_3tok9TokenKindERNS_12CXXScopeSpecERNS_13UnqualifiedIdEPNS_4DeclEb", "clang::Sema::ActOnMemberAccessExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, clang::tok::TokenKind, clang::CXXScopeSpec&, clang::UnqualifiedId&, clang::Decl*, bool)"}, + {"_ZN5clang4Sema22BuildCXXDefaultArgExprENS_14SourceLocationEPNS_12FunctionDeclEPNS_11ParmVarDeclE", "clang::Sema::BuildCXXDefaultArgExpr(clang::SourceLocation, clang::FunctionDecl*, clang::ParmVarDecl*)"}, + {"_ZN5clang4Sema32MarkDeclarationsReferencedInExprEPNS_4ExprE", "clang::Sema::MarkDeclarationsReferencedInExpr(clang::Expr*)"}, + {"_ZN5clang4Sema23ConvertArgumentsForCallEPNS_8CallExprEPNS_4ExprEPNS_12FunctionDeclEPKNS_17FunctionProtoTypeEPS4_jNS_14SourceLocationE", "clang::Sema::ConvertArgumentsForCall(clang::CallExpr*, clang::Expr*, clang::FunctionDecl*, clang::FunctionProtoType const*, clang::Expr**, unsigned int, clang::SourceLocation)"}, + + // {"_ZN5clang4Sema22GatherArgumentsForCallENS_14SourceLocationEPNS_12FunctionDeclEPKNS_17FunctionProtoTypeEjPPNS_4ExprEjRN4llvm11SmallVectorIS8_Lj8EEENS0_16VariadicCallTypeE", + // "clang::Sema::GatherArgumentsForCall(clang::SourceLocation, clang::FunctionDecl*, clang::FunctionProtoType const*, unsigned int, clang::Expr**, unsigned int, llvm::SmallVector&, clang::Sema::VariadicCallType)"}, + // "clang::Sema::GatherArgumentsForCall(clang::SourceLocation, clang::FunctionDecl*, clang::FunctionProtoType const*, unsigned int, clang::Expr**, unsigned int, llvm::SmallVector&, clang::Sema::VariadicCallType)" was returned + + {"_ZN5clang4Sema19CheckCallReturnTypeENS_8QualTypeENS_14SourceLocationEPNS_8CallExprEPNS_12FunctionDeclE", "clang::Sema::CheckCallReturnType(clang::QualType, clang::SourceLocation, clang::CallExpr*, clang::FunctionDecl*)"}, + {"_ZN5clang4Sema21BuildResolvedCallExprEPNS_4ExprEPNS_9NamedDeclENS_14SourceLocationEPS2_jS5_S2_", "clang::Sema::BuildResolvedCallExpr(clang::Expr*, clang::NamedDecl*, clang::SourceLocation, clang::Expr**, unsigned int, clang::SourceLocation, clang::Expr*)"}, + {"_ZN5clang4Sema23ActOnCUDAExecConfigExprEPNS_5ScopeENS_14SourceLocationENS_11ASTMultiPtrIPNS_4ExprEEES3_", "clang::Sema::ActOnCUDAExecConfigExpr(clang::Scope*, clang::SourceLocation, clang::ASTMultiPtr, clang::SourceLocation)"}, + {"_ZN5clang4Sema20ActOnCompoundLiteralENS_14SourceLocationENS_9OpaquePtrINS_8QualTypeEEES1_PNS_4ExprE", "clang::Sema::ActOnCompoundLiteral(clang::SourceLocation, clang::OpaquePtr, clang::SourceLocation, clang::Expr*)"}, + {"_ZN5clang4Sema24BuildCompoundLiteralExprENS_14SourceLocationEPNS_14TypeSourceInfoES1_PNS_4ExprE", "clang::Sema::BuildCompoundLiteralExpr(clang::SourceLocation, clang::TypeSourceInfo*, clang::SourceLocation, clang::Expr*)"}, + {"_ZN5clang4Sema13ActOnInitListENS_14SourceLocationENS_11ASTMultiPtrIPNS_4ExprEEES1_", "clang::Sema::ActOnInitList(clang::SourceLocation, clang::ASTMultiPtr, clang::SourceLocation)"}, + + // {"_ZN5clang4Sema14CheckCastTypesENS_11SourceRangeENS_8QualTypeERPNS_4ExprERNS_8CastKindERNS_13ExprValueKindERN4llvm11SmallVectorIPNS_16CXXBaseSpecifierELj4EEEb", + // "clang::Sema::CheckCastTypes(clang::SourceRange, clang::QualType, clang::Expr*&, clang::CastKind&, clang::ExprValueKind&, llvm::SmallVector&, bool)"}, + // "clang::Sema::CheckCastTypes(clang::SourceRange, clang::QualType, clang::Expr*&, clang::CastKind&, clang::ExprValueKind&, llvm::SmallVector&, bool)" was returned + + {"_ZN5clang4Sema18CheckExtVectorCastENS_11SourceRangeENS_8QualTypeERPNS_4ExprERNS_8CastKindE", "clang::Sema::CheckExtVectorCast(clang::SourceRange, clang::QualType, clang::Expr*&, clang::CastKind&)"}, + {"_ZN5clang4Sema15CheckVectorCastENS_11SourceRangeENS_8QualTypeES2_RNS_8CastKindE", "clang::Sema::CheckVectorCast(clang::SourceRange, clang::QualType, clang::QualType, clang::CastKind&)"}, + {"_Z17PrepareScalarCastRN5clang4SemaERPNS_4ExprENS_8QualTypeE", "PrepareScalarCast(clang::Sema&, clang::Expr*&, clang::QualType)"}, + {"_ZN5clang4Sema13ActOnCastExprEPNS_5ScopeENS_14SourceLocationENS_9OpaquePtrINS_8QualTypeEEES3_PNS_4ExprE", "clang::Sema::ActOnCastExpr(clang::Scope*, clang::SourceLocation, clang::OpaquePtr, clang::SourceLocation, clang::Expr*)"}, + {"_ZN5clang4Sema24ActOnCastOfParenListExprEPNS_5ScopeENS_14SourceLocationES3_PNS_4ExprEPNS_14TypeSourceInfoE", "clang::Sema::ActOnCastOfParenListExpr(clang::Scope*, clang::SourceLocation, clang::SourceLocation, clang::Expr*, clang::TypeSourceInfo*)"}, + {"_ZN5clang4Sema19BuildCStyleCastExprENS_14SourceLocationEPNS_14TypeSourceInfoES1_PNS_4ExprE", "clang::Sema::BuildCStyleCastExpr(clang::SourceLocation, clang::TypeSourceInfo*, clang::SourceLocation, clang::Expr*)"}, + {"_ZN5clang4Sema10ActOnBinOpEPNS_5ScopeENS_14SourceLocationENS_3tok9TokenKindEPNS_4ExprES7_", "clang::Sema::ActOnBinOp(clang::Scope*, clang::SourceLocation, clang::tok::TokenKind, clang::Expr*, clang::Expr*)"}, + {"_ZN5clang4Sema25ActOnParenOrParenListExprENS_14SourceLocationES1_NS_11ASTMultiPtrIPNS_4ExprEEENS_9OpaquePtrINS_8QualTypeEEE", "clang::Sema::ActOnParenOrParenListExpr(clang::SourceLocation, clang::SourceLocation, clang::ASTMultiPtr, clang::OpaquePtr)"}, + {"_ZN5clang4Sema24CheckConditionalOperandsERPNS_4ExprES3_S3_S3_RNS_13ExprValueKindERNS_14ExprObjectKindENS_14SourceLocationE", "clang::Sema::CheckConditionalOperands(clang::Expr*&, clang::Expr*&, clang::Expr*&, clang::Expr*&, clang::ExprValueKind&, clang::ExprObjectKind&, clang::SourceLocation)"}, + {"_ZN5clang4Sema19CheckVectorOperandsENS_14SourceLocationERPNS_4ExprES4_", "clang::Sema::CheckVectorOperands(clang::SourceLocation, clang::Expr*&, clang::Expr*&)"}, + {"_ZN5clang4Sema28FindCompositeObjCPointerTypeERPNS_4ExprES3_NS_14SourceLocationE", "clang::Sema::FindCompositeObjCPointerType(clang::Expr*&, clang::Expr*&, clang::SourceLocation)"}, + {"_ZN5clang4Sema18ActOnConditionalOpENS_14SourceLocationES1_PNS_4ExprES3_S3_", "clang::Sema::ActOnConditionalOp(clang::SourceLocation, clang::SourceLocation, clang::Expr*, clang::Expr*, clang::Expr*)"}, + {"_ZN5clang4Sema26CheckAssignmentConstraintsENS_14SourceLocationENS_8QualTypeES2_", "clang::Sema::CheckAssignmentConstraints(clang::SourceLocation, clang::QualType, clang::QualType)"}, + {"_ZN5clang4Sema26CheckAssignmentConstraintsENS_8QualTypeERPNS_4ExprERNS_8CastKindE", "clang::Sema::CheckAssignmentConstraints(clang::QualType, clang::Expr*&, clang::CastKind&)"}, + {"_ZN5clang4Sema40CheckTransparentUnionArgumentConstraintsENS_8QualTypeERPNS_4ExprE", "clang::Sema::CheckTransparentUnionArgumentConstraints(clang::QualType, clang::Expr*&)"}, + {"_ZN5clang4Sema32CheckSingleAssignmentConstraintsENS_8QualTypeERPNS_4ExprE", "clang::Sema::CheckSingleAssignmentConstraints(clang::QualType, clang::Expr*&)"}, + {"_ZN5clang4Sema15InvalidOperandsENS_14SourceLocationERPNS_4ExprES4_", "clang::Sema::InvalidOperands(clang::SourceLocation, clang::Expr*&, clang::Expr*&)"}, + {"_ZN5clang4Sema27CheckMultiplyDivideOperandsERPNS_4ExprES3_NS_14SourceLocationEbb", "clang::Sema::CheckMultiplyDivideOperands(clang::Expr*&, clang::Expr*&, clang::SourceLocation, bool, bool)"}, + {"_ZN5clang4Sema22CheckRemainderOperandsERPNS_4ExprES3_NS_14SourceLocationEb", "clang::Sema::CheckRemainderOperands(clang::Expr*&, clang::Expr*&, clang::SourceLocation, bool)"}, + {"_ZN5clang4Sema21CheckAdditionOperandsERPNS_4ExprES3_NS_14SourceLocationEPNS_8QualTypeE", "clang::Sema::CheckAdditionOperands(clang::Expr*&, clang::Expr*&, clang::SourceLocation, clang::QualType*)"}, + {"_ZN5clang4Sema24CheckSubtractionOperandsERPNS_4ExprES3_NS_14SourceLocationEPNS_8QualTypeE", "clang::Sema::CheckSubtractionOperands(clang::Expr*&, clang::Expr*&, clang::SourceLocation, clang::QualType*)"}, + {"_ZN5clang4Sema18CheckShiftOperandsERPNS_4ExprES3_NS_14SourceLocationEb", "clang::Sema::CheckShiftOperands(clang::Expr*&, clang::Expr*&, clang::SourceLocation, bool)"}, + {"_ZN5clang4Sema20CheckCompareOperandsERPNS_4ExprES3_NS_14SourceLocationEjb", "clang::Sema::CheckCompareOperands(clang::Expr*&, clang::Expr*&, clang::SourceLocation, unsigned int, bool)"}, + {"_ZN5clang4Sema26CheckVectorCompareOperandsERPNS_4ExprES3_NS_14SourceLocationEb", "clang::Sema::CheckVectorCompareOperands(clang::Expr*&, clang::Expr*&, clang::SourceLocation, bool)"}, + {"_ZN5clang4Sema23CheckAssignmentOperandsEPNS_4ExprERS2_NS_14SourceLocationENS_8QualTypeE", "clang::Sema::CheckAssignmentOperands(clang::Expr*, clang::Expr*&, clang::SourceLocation, clang::QualType)"}, + {"_Z24CheckForModifiableLvaluePN5clang4ExprENS_14SourceLocationERNS_4SemaE", "CheckForModifiableLvalue(clang::Expr*, clang::SourceLocation, clang::Sema&)"}, + {"_ZN5clang4Sema24ConvertPropertyForLValueERPNS_4ExprES3_RNS_8QualTypeE", "clang::Sema::ConvertPropertyForLValue(clang::Expr*&, clang::Expr*&, clang::QualType&)"}, + {"_ZN5clang4Sema24DiagnoseAssignmentResultENS0_17AssignConvertTypeENS_14SourceLocationENS_8QualTypeES3_PNS_4ExprENS0_16AssignmentActionEPb", "clang::Sema::DiagnoseAssignmentResult(clang::Sema::AssignConvertType, clang::SourceLocation, clang::QualType, clang::QualType, clang::Expr*, clang::Sema::AssignmentAction, bool*)"}, + {"_ZN5clang4Sema18CreateBuiltinBinOpENS_14SourceLocationENS_18BinaryOperatorKindEPNS_4ExprES4_", "clang::Sema::CreateBuiltinBinOp(clang::SourceLocation, clang::BinaryOperatorKind, clang::Expr*, clang::Expr*)"}, + {"_ZN5clang4Sema10BuildBinOpEPNS_5ScopeENS_14SourceLocationENS_18BinaryOperatorKindEPNS_4ExprES6_", "clang::Sema::BuildBinOp(clang::Scope*, clang::SourceLocation, clang::BinaryOperatorKind, clang::Expr*, clang::Expr*)"}, + {"_ZN5clang4Sema20CreateBuiltinUnaryOpENS_14SourceLocationENS_17UnaryOperatorKindEPNS_4ExprE", "clang::Sema::CreateBuiltinUnaryOp(clang::SourceLocation, clang::UnaryOperatorKind, clang::Expr*)"}, + {"_Z30CheckIncrementDecrementOperandRN5clang4SemaEPNS_4ExprERNS_13ExprValueKindENS_14SourceLocationEbb", "CheckIncrementDecrementOperand(clang::Sema&, clang::Expr*, clang::ExprValueKind&, clang::SourceLocation, bool, bool)"}, + {"_Z23CheckIndirectionOperandRN5clang4SemaEPNS_4ExprERNS_13ExprValueKindENS_14SourceLocationE", "CheckIndirectionOperand(clang::Sema&, clang::Expr*, clang::ExprValueKind&, clang::SourceLocation)"}, + {"_Z20CheckRealImagOperandRN5clang4SemaERPNS_4ExprENS_14SourceLocationEb", "CheckRealImagOperand(clang::Sema&, clang::Expr*&, clang::SourceLocation, bool)"}, + {"_ZN5clang4Sema12ActOnUnaryOpEPNS_5ScopeENS_14SourceLocationENS_3tok9TokenKindEPNS_4ExprE", "clang::Sema::ActOnUnaryOp(clang::Scope*, clang::SourceLocation, clang::tok::TokenKind, clang::Expr*)"}, + {"_ZN5clang4Sema14ActOnAddrLabelENS_14SourceLocationES1_PNS_14IdentifierInfoE", "clang::Sema::ActOnAddrLabel(clang::SourceLocation, clang::SourceLocation, clang::IdentifierInfo*)"}, + {"_ZN5clang4Sema13ActOnStmtExprENS_14SourceLocationEPNS_4StmtES1_", "clang::Sema::ActOnStmtExpr(clang::SourceLocation, clang::Stmt*, clang::SourceLocation)"}, + {"_ZN5clang4Sema20BuildBuiltinOffsetOfENS_14SourceLocationEPNS_14TypeSourceInfoEPNS0_17OffsetOfComponentEjS1_", "clang::Sema::BuildBuiltinOffsetOf(clang::SourceLocation, clang::TypeSourceInfo*, clang::Sema::OffsetOfComponent*, unsigned int, clang::SourceLocation)"}, + {"_ZN5clang4Sema20ActOnBuiltinOffsetOfEPNS_5ScopeENS_14SourceLocationES3_NS_9OpaquePtrINS_8QualTypeEEEPNS0_17OffsetOfComponentEjS3_", "clang::Sema::ActOnBuiltinOffsetOf(clang::Scope*, clang::SourceLocation, clang::SourceLocation, clang::OpaquePtr, clang::Sema::OffsetOfComponent*, unsigned int, clang::SourceLocation)"}, + {"_ZN5clang4Sema15ActOnChooseExprENS_14SourceLocationEPNS_4ExprES3_S3_S1_", "clang::Sema::ActOnChooseExpr(clang::SourceLocation, clang::Expr*, clang::Expr*, clang::Expr*, clang::SourceLocation)"}, + {"_ZN5clang4Sema15ActOnBlockStartENS_14SourceLocationEPNS_5ScopeE", "clang::Sema::ActOnBlockStart(clang::SourceLocation, clang::Scope*)"}, + {"_ZN5clang4Sema19ActOnBlockArgumentsERNS_10DeclaratorEPNS_5ScopeE", "clang::Sema::ActOnBlockArguments(clang::Declarator&, clang::Scope*)"}, + {"_ZN5clang4Sema15ActOnBlockErrorENS_14SourceLocationEPNS_5ScopeE", "clang::Sema::ActOnBlockError(clang::SourceLocation, clang::Scope*)"}, + {"_ZN5clang4Sema18ActOnBlockStmtExprENS_14SourceLocationEPNS_4StmtEPNS_5ScopeE", "clang::Sema::ActOnBlockStmtExpr(clang::SourceLocation, clang::Stmt*, clang::Scope*)"}, + {"_ZN5clang4Sema10ActOnVAArgENS_14SourceLocationEPNS_4ExprENS_9OpaquePtrINS_8QualTypeEEES1_", "clang::Sema::ActOnVAArg(clang::SourceLocation, clang::Expr*, clang::OpaquePtr, clang::SourceLocation)"}, + {"_ZN5clang4Sema14BuildVAArgExprENS_14SourceLocationEPNS_4ExprEPNS_14TypeSourceInfoES1_", "clang::Sema::BuildVAArgExpr(clang::SourceLocation, clang::Expr*, clang::TypeSourceInfo*, clang::SourceLocation)"}, + {"_ZN5clang4Sema16ActOnGNUNullExprENS_14SourceLocationE", "clang::Sema::ActOnGNUNullExpr(clang::SourceLocation)"}, + {"_ZN5clang4Sema31VerifyIntegerConstantExpressionEPKNS_4ExprEPN4llvm6APSIntE", "clang::Sema::VerifyIntegerConstantExpression(clang::Expr const*, llvm::APSInt*)"}, + {"_ZN5clang4Sema31PushExpressionEvaluationContextENS0_27ExpressionEvaluationContextE", "clang::Sema::PushExpressionEvaluationContext(clang::Sema::ExpressionEvaluationContext)"}, + {"_ZN5clang4Sema30PopExpressionEvaluationContextEv", "clang::Sema::PopExpressionEvaluationContext()"}, + {"_ZN5clang4Sema32MarkDeclarationsReferencedInTypeENS_14SourceLocationENS_8QualTypeE", "clang::Sema::MarkDeclarationsReferencedInType(clang::SourceLocation, clang::QualType)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_119MarkReferencedDeclsEE12TraverseTypeENS_8QualTypeE", "clang::RecursiveASTVisitor<(anonymous namespace)::MarkReferencedDecls>::TraverseType(clang::QualType)"}, + {"_ZN5clang11StmtVisitorIN12_GLOBAL__N_119EvaluatedExprMarkerEvE5VisitEPNS_4StmtE", "clang::StmtVisitor<(anonymous namespace)::EvaluatedExprMarker, void>::Visit(clang::Stmt*)"}, + {"_ZN5clang4Sema29DiagnoseAssignmentAsConditionEPNS_4ExprE", "clang::Sema::DiagnoseAssignmentAsCondition(clang::Expr*)"}, + {"_ZN5clang4Sema31DiagnoseEqualityWithExtraParensEPNS_9ParenExprE", "clang::Sema::DiagnoseEqualityWithExtraParens(clang::ParenExpr*)"}, + {"_ZN5clang4Sema21CheckBooleanConditionERPNS_4ExprENS_14SourceLocationE", "clang::Sema::CheckBooleanCondition(clang::Expr*&, clang::SourceLocation)"}, + {"_ZN5clang4Sema21ActOnBooleanConditionEPNS_5ScopeENS_14SourceLocationEPNS_4ExprE", "clang::Sema::ActOnBooleanCondition(clang::Scope*, clang::SourceLocation, clang::Expr*)"}, + {"_ZN5clang20EvaluatedExprVisitorIN12_GLOBAL__N_119EvaluatedExprMarkerEE9VisitStmtEPNS_4StmtE", "clang::EvaluatedExprVisitor<(anonymous namespace)::EvaluatedExprMarker>::VisitStmt(clang::Stmt*)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_119MarkReferencedDeclsEE27TraverseNestedNameSpecifierEPNS_19NestedNameSpecifierE", "clang::RecursiveASTVisitor<(anonymous namespace)::MarkReferencedDecls>::TraverseNestedNameSpecifier(clang::NestedNameSpecifier*)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_119MarkReferencedDeclsEE24TraverseTemplateArgumentERKNS_16TemplateArgumentE", "clang::RecursiveASTVisitor<(anonymous namespace)::MarkReferencedDecls>::TraverseTemplateArgument(clang::TemplateArgument const&)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_119MarkReferencedDeclsEE12TraverseStmtEPNS_4StmtE", "clang::RecursiveASTVisitor<(anonymous namespace)::MarkReferencedDecls>::TraverseStmt(clang::Stmt*)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_119MarkReferencedDeclsEE15TraverseTypeLocENS_7TypeLocE", "clang::RecursiveASTVisitor<(anonymous namespace)::MarkReferencedDecls>::TraverseTypeLoc(clang::TypeLoc)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_119MarkReferencedDeclsEE27TraverseTemplateArgumentLocERKNS_19TemplateArgumentLocE", "clang::RecursiveASTVisitor<(anonymous namespace)::MarkReferencedDecls>::TraverseTemplateArgumentLoc(clang::TemplateArgumentLoc const&)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_119MarkReferencedDeclsEE12TraverseDeclEPNS_4DeclE", "clang::RecursiveASTVisitor<(anonymous namespace)::MarkReferencedDecls>::TraverseDecl(clang::Decl*)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_119MarkReferencedDeclsEE24TraverseDeclaratorHelperEPNS_14DeclaratorDeclE", "clang::RecursiveASTVisitor<(anonymous namespace)::MarkReferencedDecls>::TraverseDeclaratorHelper(clang::DeclaratorDecl*)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_119MarkReferencedDeclsEE22TraverseFunctionHelperEPNS_12FunctionDeclE", "clang::RecursiveASTVisitor<(anonymous namespace)::MarkReferencedDecls>::TraverseFunctionHelper(clang::FunctionDecl*)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_119MarkReferencedDeclsEE23TraverseCXXRecordHelperEPNS_13CXXRecordDeclE", "clang::RecursiveASTVisitor<(anonymous namespace)::MarkReferencedDecls>::TraverseCXXRecordHelper(clang::CXXRecordDecl*)"}, + {"_Z38EmitDiagnosticForLogicalAndInLogicalOrRN5clang4SemaENS_14SourceLocationEPNS_4ExprE", "EmitDiagnosticForLogicalAndInLogicalOr(clang::Sema&, clang::SourceLocation, clang::Expr*)"}, + {"_Z18SuggestParenthesesRN5clang4SemaENS_14SourceLocationERKNS_17PartialDiagnosticES5_NS_11SourceRangeES5_S6_", "SuggestParentheses(clang::Sema&, clang::SourceLocation, clang::PartialDiagnostic const&, clang::PartialDiagnostic const&, clang::SourceRange, clang::PartialDiagnostic const&, clang::SourceRange)"}, + {"_Z40FindGetterSetterNameDeclFromProtocolListPKN5clang16ObjCProtocolDeclEPNS_14IdentifierInfoERKNS_8SelectorERNS_10ASTContextE", "FindGetterSetterNameDeclFromProtocolList(clang::ObjCProtocolDecl const*, clang::IdentifierInfo*, clang::Selector const&, clang::ASTContext&)"}, + {"_Z16propagateCaptureRN5clang4SemaEjRKNS_9BlockDecl7CaptureE", "propagateCapture(clang::Sema&, unsigned int, clang::BlockDecl::Capture const&)"}, + {"_ZN5clang13SelectorTable19constructSetterNameERNS_15IdentifierTableERS0_PKNS_14IdentifierInfoE", "clang::SelectorTable::constructSetterName(clang::IdentifierTable&, clang::SelectorTable&, clang::IdentifierInfo const*)"}, + {"_ZN5clang4Sema20CheckBitwiseOperandsERPNS_4ExprES3_NS_14SourceLocationEb", "clang::Sema::CheckBitwiseOperands(clang::Expr*&, clang::Expr*&, clang::SourceLocation, bool)"}, + {"_ZN5clang4Sema20CheckLogicalOperandsERPNS_4ExprES3_NS_14SourceLocationEj", "clang::Sema::CheckLogicalOperands(clang::Expr*&, clang::Expr*&, clang::SourceLocation, unsigned int)"}, + {"_ZNK5clang4Decl7getAttrINS_12NoReturnAttrEEEPT_v", "clang::NoReturnAttr* clang::Decl::getAttr() const"}, + {"_ZN5clang4Sema33ExpressionEvaluationContextRecord7DestroyEv", "clang::Sema::ExpressionEvaluationContextRecord::Destroy()"}, + {"_ZN5clang4Sema33ExpressionEvaluationContextRecord13addDiagnosticENS_14SourceLocationERKNS_17PartialDiagnosticE", "clang::Sema::ExpressionEvaluationContextRecord::addDiagnostic(clang::SourceLocation, clang::PartialDiagnostic const&)"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang12OffsetOfExpr12OffsetOfNodeELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN4llvm8DenseMapIPN5clang14IdentifierInfoEPNS1_9LabelStmtENS_12DenseMapInfoIS3_EENS6_IS5_EEE16InsertIntoBucketERKS3_RKS5_PSt4pairIS3_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::IdentifierInfo* const&, clang::LabelStmt* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPN5clang14IdentifierInfoEPNS1_9LabelStmtENS_12DenseMapInfoIS3_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang10ChooseExprC2ENS_14SourceLocationEPNS_4ExprES3_S3_NS_8QualTypeENS_13ExprValueKindENS_14ExprObjectKindES1_bb", "clang::ChooseExpr::ChooseExpr(clang::SourceLocation, clang::Expr*, clang::Expr*, clang::Expr*, clang::QualType, clang::ExprValueKind, clang::ExprObjectKind, clang::SourceLocation, bool, bool)"}, + {"_ZN5clang17CXXDefaultArgExprC2ENS_4Stmt9StmtClassENS_14SourceLocationEPNS_11ParmVarDeclE", "clang::CXXDefaultArgExpr::CXXDefaultArgExpr(clang::Stmt::StmtClass, clang::SourceLocation, clang::ParmVarDecl*)"}, + {"_ZN5clang18ArraySubscriptExprC2EPNS_4ExprES2_NS_8QualTypeENS_13ExprValueKindENS_14ExprObjectKindENS_14SourceLocationE", "clang::ArraySubscriptExpr::ArraySubscriptExpr(clang::Expr*, clang::Expr*, clang::QualType, clang::ExprValueKind, clang::ExprObjectKind, clang::SourceLocation)"}, + {"_ZN4llvm8DenseMapIPN5clang7VarDeclEjNS_12DenseMapInfoIS3_EENS4_IjEEE16InsertIntoBucketERKS3_RKjPSt4pairIS3_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::VarDecl* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPN5clang7VarDeclEjNS_12DenseMapInfoIS3_EENS4_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang4Sema17getDestructorNameENS_14SourceLocationERNS_14IdentifierInfoES1_PNS_5ScopeERNS_12CXXScopeSpecENS_9OpaquePtrINS_8QualTypeEEEb", "clang::Sema::getDestructorName(clang::SourceLocation, clang::IdentifierInfo&, clang::SourceLocation, clang::Scope*, clang::CXXScopeSpec&, clang::OpaquePtr, bool)"}, + {"_ZN5clang4Sema14BuildCXXTypeIdENS_8QualTypeENS_14SourceLocationEPNS_14TypeSourceInfoES2_", "clang::Sema::BuildCXXTypeId(clang::QualType, clang::SourceLocation, clang::TypeSourceInfo*, clang::SourceLocation)"}, + {"_ZN5clang4Sema14BuildCXXTypeIdENS_8QualTypeENS_14SourceLocationEPNS_4ExprES2_", "clang::Sema::BuildCXXTypeId(clang::QualType, clang::SourceLocation, clang::Expr*, clang::SourceLocation)"}, + {"_ZN5clang4Sema14ActOnCXXTypeidENS_14SourceLocationES1_bPvS1_", "clang::Sema::ActOnCXXTypeid(clang::SourceLocation, clang::SourceLocation, bool, void*, clang::SourceLocation)"}, + {"_ZN5clang4Sema14BuildCXXUuidofENS_8QualTypeENS_14SourceLocationEPNS_14TypeSourceInfoES2_", "clang::Sema::BuildCXXUuidof(clang::QualType, clang::SourceLocation, clang::TypeSourceInfo*, clang::SourceLocation)"}, + {"_Z17GetUuidAttrOfTypeN5clang8QualTypeE", "GetUuidAttrOfType(clang::QualType)"}, + {"_ZN5clang4Sema14BuildCXXUuidofENS_8QualTypeENS_14SourceLocationEPNS_4ExprES2_", "clang::Sema::BuildCXXUuidof(clang::QualType, clang::SourceLocation, clang::Expr*, clang::SourceLocation)"}, + {"_ZN5clang4Sema14ActOnCXXUuidofENS_14SourceLocationES1_bPvS1_", "clang::Sema::ActOnCXXUuidof(clang::SourceLocation, clang::SourceLocation, bool, void*, clang::SourceLocation)"}, + {"_ZN5clang4Sema19ActOnCXXBoolLiteralENS_14SourceLocationENS_3tok9TokenKindE", "clang::Sema::ActOnCXXBoolLiteral(clang::SourceLocation, clang::tok::TokenKind)"}, + {"_ZN5clang4Sema22ActOnCXXNullPtrLiteralENS_14SourceLocationE", "clang::Sema::ActOnCXXNullPtrLiteral(clang::SourceLocation)"}, + {"_ZN5clang4Sema13ActOnCXXThrowENS_14SourceLocationEPNS_4ExprE", "clang::Sema::ActOnCXXThrow(clang::SourceLocation, clang::Expr*)"}, + {"_ZN5clang4Sema20CheckCXXThrowOperandENS_14SourceLocationERPNS_4ExprE", "clang::Sema::CheckCXXThrowOperand(clang::SourceLocation, clang::Expr*&)"}, + {"_ZN5clang4Sema17tryCaptureCXXThisEv", "clang::Sema::tryCaptureCXXThis()"}, + {"_ZN5clang4Sema12ActOnCXXThisENS_14SourceLocationE", "clang::Sema::ActOnCXXThis(clang::SourceLocation)"}, + {"_ZN5clang4Sema25ActOnCXXTypeConstructExprENS_9OpaquePtrINS_8QualTypeEEENS_14SourceLocationENS_11ASTMultiPtrIPNS_4ExprEEES4_", "clang::Sema::ActOnCXXTypeConstructExpr(clang::OpaquePtr, clang::SourceLocation, clang::ASTMultiPtr, clang::SourceLocation)"}, + {"_ZN5clang4Sema25BuildCXXTypeConstructExprEPNS_14TypeSourceInfoENS_14SourceLocationENS_11ASTMultiPtrIPNS_4ExprEEES3_", "clang::Sema::BuildCXXTypeConstructExpr(clang::TypeSourceInfo*, clang::SourceLocation, clang::ASTMultiPtr, clang::SourceLocation)"}, + {"_ZN5clang4Sema11ActOnCXXNewENS_14SourceLocationEbS1_NS_11ASTMultiPtrIPNS_4ExprEEES1_NS_11SourceRangeERNS_10DeclaratorES1_S5_S1_", "clang::Sema::ActOnCXXNew(clang::SourceLocation, bool, clang::SourceLocation, clang::ASTMultiPtr, clang::SourceLocation, clang::SourceRange, clang::Declarator&, clang::SourceLocation, clang::ASTMultiPtr, clang::SourceLocation)"}, + {"_ZN5clang4Sema11BuildCXXNewENS_14SourceLocationEbS1_NS_11ASTMultiPtrIPNS_4ExprEEES1_NS_11SourceRangeENS_8QualTypeEPNS_14TypeSourceInfoES4_S1_S5_S1_", "clang::Sema::BuildCXXNew(clang::SourceLocation, bool, clang::SourceLocation, clang::ASTMultiPtr, clang::SourceLocation, clang::SourceRange, clang::QualType, clang::TypeSourceInfo*, clang::Expr*, clang::SourceLocation, clang::ASTMultiPtr, clang::SourceLocation)"}, + {"_ZN5clang4Sema18CheckAllocatedTypeENS_8QualTypeENS_14SourceLocationENS_11SourceRangeE", "clang::Sema::CheckAllocatedType(clang::QualType, clang::SourceLocation, clang::SourceRange)"}, + {"_ZN5clang4Sema23FindAllocationFunctionsENS_14SourceLocationENS_11SourceRangeEbNS_8QualTypeEbPPNS_4ExprEjRPNS_12FunctionDeclES9_", "clang::Sema::FindAllocationFunctions(clang::SourceLocation, clang::SourceRange, bool, clang::QualType, bool, clang::Expr**, unsigned int, clang::FunctionDecl*&, clang::FunctionDecl*&)"}, + {"_Z28doesUsualArrayDeleteWantSizeRN5clang4SemaENS_14SourceLocationENS_8QualTypeE", "doesUsualArrayDeleteWantSize(clang::Sema&, clang::SourceLocation, clang::QualType)"}, + {"_ZN5clang4Sema22FindAllocationOverloadENS_14SourceLocationENS_11SourceRangeENS_15DeclarationNameEPPNS_4ExprEjPNS_11DeclContextEbRPNS_12FunctionDeclE", "clang::Sema::FindAllocationOverload(clang::SourceLocation, clang::SourceRange, clang::DeclarationName, clang::Expr**, unsigned int, clang::DeclContext*, bool, clang::FunctionDecl*&)"}, + {"_ZN5clang4Sema22DeclareGlobalNewDeleteEv", "clang::Sema::DeclareGlobalNewDelete()"}, + {"_ZN5clang4Sema31DeclareGlobalAllocationFunctionENS_15DeclarationNameENS_8QualTypeES2_b", "clang::Sema::DeclareGlobalAllocationFunction(clang::DeclarationName, clang::QualType, clang::QualType, bool)"}, + {"_ZN5clang4Sema24FindDeallocationFunctionENS_14SourceLocationEPNS_13CXXRecordDeclENS_15DeclarationNameERPNS_12FunctionDeclE", "clang::Sema::FindDeallocationFunction(clang::SourceLocation, clang::CXXRecordDecl*, clang::DeclarationName, clang::FunctionDecl*&)"}, + {"_ZN5clang4Sema14ActOnCXXDeleteENS_14SourceLocationEbbPNS_4ExprE", "clang::Sema::ActOnCXXDelete(clang::SourceLocation, bool, bool, clang::Expr*)"}, + {"_ZN5clang4Sema22CheckConditionVariableEPNS_7VarDeclENS_14SourceLocationEb", "clang::Sema::CheckConditionVariable(clang::VarDecl*, clang::SourceLocation, bool)"}, + {"_ZN5clang4Sema24CheckCXXBooleanConditionERPNS_4ExprE", "clang::Sema::CheckCXXBooleanCondition(clang::Expr*&)"}, + {"_ZN5clang4Sema42IsStringLiteralToNonConstPointerConversionEPNS_4ExprENS_8QualTypeE", "clang::Sema::IsStringLiteralToNonConstPointerConversion(clang::Expr*, clang::QualType)"}, + {"_ZN5clang4Sema25PerformImplicitConversionERPNS_4ExprENS_8QualTypeERKNS_26ImplicitConversionSequenceENS0_16AssignmentActionEb", "clang::Sema::PerformImplicitConversion(clang::Expr*&, clang::QualType, clang::ImplicitConversionSequence const&, clang::Sema::AssignmentAction, bool)"}, + {"_ZN5clang4Sema25PerformImplicitConversionERPNS_4ExprENS_8QualTypeERKNS_26StandardConversionSequenceENS0_16AssignmentActionEb", "clang::Sema::PerformImplicitConversion(clang::Expr*&, clang::QualType, clang::StandardConversionSequence const&, clang::Sema::AssignmentAction, bool)"}, + {"_ZN5clang4Sema19ActOnUnaryTypeTraitENS_14UnaryTypeTraitENS_14SourceLocationENS_9OpaquePtrINS_8QualTypeEEES2_", "clang::Sema::ActOnUnaryTypeTrait(clang::UnaryTypeTrait, clang::SourceLocation, clang::OpaquePtr, clang::SourceLocation)"}, + {"_ZN5clang4Sema19BuildUnaryTypeTraitENS_14UnaryTypeTraitENS_14SourceLocationEPNS_14TypeSourceInfoES2_", "clang::Sema::BuildUnaryTypeTrait(clang::UnaryTypeTrait, clang::SourceLocation, clang::TypeSourceInfo*, clang::SourceLocation)"}, + {"_ZN5clang4Sema20ActOnBinaryTypeTraitENS_15BinaryTypeTraitENS_14SourceLocationENS_9OpaquePtrINS_8QualTypeEEES5_S2_", "clang::Sema::ActOnBinaryTypeTrait(clang::BinaryTypeTrait, clang::SourceLocation, clang::OpaquePtr, clang::OpaquePtr, clang::SourceLocation)"}, + {"_ZN5clang4Sema20BuildBinaryTypeTraitENS_15BinaryTypeTraitENS_14SourceLocationEPNS_14TypeSourceInfoES4_S2_", "clang::Sema::BuildBinaryTypeTrait(clang::BinaryTypeTrait, clang::SourceLocation, clang::TypeSourceInfo*, clang::TypeSourceInfo*, clang::SourceLocation)"}, + {"_ZN5clang4Sema28CheckPointerToMemberOperandsERPNS_4ExprES3_RNS_13ExprValueKindENS_14SourceLocationEb", "clang::Sema::CheckPointerToMemberOperands(clang::Expr*&, clang::Expr*&, clang::ExprValueKind&, clang::SourceLocation, bool)"}, + {"_ZN5clang4Sema27CXXCheckConditionalOperandsERPNS_4ExprES3_S3_S3_RNS_13ExprValueKindERNS_14ExprObjectKindENS_14SourceLocationE", "clang::Sema::CXXCheckConditionalOperands(clang::Expr*&, clang::Expr*&, clang::Expr*&, clang::Expr*&, clang::ExprValueKind&, clang::ExprObjectKind&, clang::SourceLocation)"}, + {"_Z19TryClassUnificationRN5clang4SemaEPNS_4ExprES3_NS_14SourceLocationERbRNS_8QualTypeE", "TryClassUnification(clang::Sema&, clang::Expr*, clang::Expr*, clang::SourceLocation, bool&, clang::QualType&)"}, + {"_Z21ConvertForConditionalRN5clang4SemaERPNS_4ExprENS_8QualTypeE", "ConvertForConditional(clang::Sema&, clang::Expr*&, clang::QualType)"}, + {"_ZN5clang4Sema24FindCompositePointerTypeENS_14SourceLocationERPNS_4ExprES4_Pb", "clang::Sema::FindCompositePointerType(clang::SourceLocation, clang::Expr*&, clang::Expr*&, bool*)"}, + {"_ZN5clang4Sema20MaybeBindToTemporaryEPNS_4ExprE", "clang::Sema::MaybeBindToTemporary(clang::Expr*)"}, + {"_ZN5clang4Sema27MaybeCreateExprWithCleanupsEPNS_4ExprE", "clang::Sema::MaybeCreateExprWithCleanups(clang::Expr*)"}, + {"_ZN5clang4Sema27MaybeCreateExprWithCleanupsENS_12ActionResultIPNS_4ExprELb1EEE", "clang::Sema::MaybeCreateExprWithCleanups(clang::ActionResult)"}, + {"_ZN5clang4Sema27MaybeCreateStmtWithCleanupsEPNS_4StmtE", "clang::Sema::MaybeCreateStmtWithCleanups(clang::Stmt*)"}, + {"_ZN5clang4Sema28ActOnStartCXXMemberReferenceEPNS_5ScopeEPNS_4ExprENS_14SourceLocationENS_3tok9TokenKindERNS_9OpaquePtrINS_8QualTypeEEERb", "clang::Sema::ActOnStartCXXMemberReference(clang::Scope*, clang::Expr*, clang::SourceLocation, clang::tok::TokenKind, clang::OpaquePtr&, bool&)"}, + {"_ZN5clang4Sema21DiagnoseDtorReferenceENS_14SourceLocationEPNS_4ExprE", "clang::Sema::DiagnoseDtorReference(clang::SourceLocation, clang::Expr*)"}, + {"_ZN5clang4Sema25BuildPseudoDestructorExprEPNS_4ExprENS_14SourceLocationENS_3tok9TokenKindERKNS_12CXXScopeSpecEPNS_14TypeSourceInfoES3_S3_NS_27PseudoDestructorTypeStorageEb", "clang::Sema::BuildPseudoDestructorExpr(clang::Expr*, clang::SourceLocation, clang::tok::TokenKind, clang::CXXScopeSpec const&, clang::TypeSourceInfo*, clang::SourceLocation, clang::SourceLocation, clang::PseudoDestructorTypeStorage, bool)"}, + {"_ZN5clang4Sema25ActOnPseudoDestructorExprEPNS_5ScopeEPNS_4ExprENS_14SourceLocationENS_3tok9TokenKindERNS_12CXXScopeSpecERNS_13UnqualifiedIdES5_S5_SB_b", "clang::Sema::ActOnPseudoDestructorExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, clang::tok::TokenKind, clang::CXXScopeSpec&, clang::UnqualifiedId&, clang::SourceLocation, clang::SourceLocation, clang::UnqualifiedId&, bool)"}, + {"_ZN5clang4Sema22BuildCXXMemberCallExprEPNS_4ExprEPNS_9NamedDeclEPNS_13CXXMethodDeclE", "clang::Sema::BuildCXXMemberCallExpr(clang::Expr*, clang::NamedDecl*, clang::CXXMethodDecl*)"}, + {"_ZN5clang4Sema20BuildCXXNoexceptExprENS_14SourceLocationEPNS_4ExprES1_", "clang::Sema::BuildCXXNoexceptExpr(clang::SourceLocation, clang::Expr*, clang::SourceLocation)"}, + {"_ZN5clang4Sema17ActOnNoexceptExprENS_14SourceLocationES1_PNS_4ExprES1_", "clang::Sema::ActOnNoexceptExpr(clang::SourceLocation, clang::SourceLocation, clang::Expr*, clang::SourceLocation)"}, + {"_ZN5clang4Sema23IgnoredValueConversionsERPNS_4ExprE", "clang::Sema::IgnoredValueConversions(clang::Expr*&)"}, + {"_ZN5clang4Sema19ActOnFinishFullExprEPNS_4ExprE", "clang::Sema::ActOnFinishFullExpr(clang::Expr*)"}, + {"_ZN5clang4Sema19ActOnFinishFullStmtEPNS_4StmtE", "clang::Sema::ActOnFinishFullStmt(clang::Stmt*)"}, + {"_ZN5clang10Declarator19DropFirstTypeObjectEv", "clang::Declarator::DropFirstTypeObject()"}, + + // {"_ZN4llvm11SmallVectorIPN5clang4ExprELj8EEC2EjRKS3_", + // "llvm::SmallVector::SmallVector(unsigned int, clang::Expr* const&)"}, + // "llvm::SmallVector::SmallVector(unsigned int, clang::Expr* const&)" was returned + + + // {"_ZN5clang19BinaryTypeTraitExprC2ENS_14SourceLocationENS_15BinaryTypeTraitEPNS_14TypeSourceInfoES4_bS1_NS_8QualTypeE", + // "clang::BinaryTypeTraitExpr::BinaryTypeTraitExpr(clang::SourceLocation, clang::BinaryTypeTrait, clang::TypeSourceInfo*, clang::TypeSourceInfo*, bool, clang::SourceLocation, clang::QualType)"}, + // got error + + {"_ZNK5clang4Decl7getAttrINS_8UuidAttrEEEPT_v", "clang::UuidAttr* clang::Decl::getAttr() const"}, + {"_ZN5clang4Sema22ParseObjCStringLiteralEPNS_14SourceLocationEPPNS_4ExprEj", "clang::Sema::ParseObjCStringLiteral(clang::SourceLocation*, clang::Expr**, unsigned int)"}, + {"_ZN5clang4Sema25BuildObjCEncodeExpressionENS_14SourceLocationEPNS_14TypeSourceInfoES1_", "clang::Sema::BuildObjCEncodeExpression(clang::SourceLocation, clang::TypeSourceInfo*, clang::SourceLocation)"}, + {"_ZN5clang4Sema25ParseObjCEncodeExpressionENS_14SourceLocationES1_S1_NS_9OpaquePtrINS_8QualTypeEEES1_", "clang::Sema::ParseObjCEncodeExpression(clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::OpaquePtr, clang::SourceLocation)"}, + {"_ZN5clang4Sema27ParseObjCSelectorExpressionENS_8SelectorENS_14SourceLocationES2_S2_S2_", "clang::Sema::ParseObjCSelectorExpression(clang::Selector, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)"}, + {"_ZN5clang4Sema27ParseObjCProtocolExpressionEPNS_14IdentifierInfoENS_14SourceLocationES3_S3_S3_", "clang::Sema::ParseObjCProtocolExpression(clang::IdentifierInfo*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)"}, + {"_ZN5clang4Sema18tryCaptureObjCSelfEv", "clang::Sema::tryCaptureObjCSelf()"}, + {"_ZN5clang4Sema25CheckMessageArgumentTypesEPPNS_4ExprEjNS_8SelectorEPNS_14ObjCMethodDeclEbNS_14SourceLocationES7_RNS_8QualTypeERNS_13ExprValueKindE", "clang::Sema::CheckMessageArgumentTypes(clang::Expr**, unsigned int, clang::Selector, clang::ObjCMethodDecl*, bool, clang::SourceLocation, clang::SourceLocation, clang::QualType&, clang::ExprValueKind&)"}, + {"_ZN5clang4Sema10isSelfExprEPNS_4ExprE", "clang::Sema::isSelfExpr(clang::Expr*)"}, + {"_ZN5clang4Sema24LookupPrivateClassMethodENS_8SelectorEPNS_17ObjCInterfaceDeclE", "clang::Sema::LookupPrivateClassMethod(clang::Selector, clang::ObjCInterfaceDecl*)"}, + {"_ZN5clang4Sema27LookupPrivateInstanceMethodENS_8SelectorEPNS_17ObjCInterfaceDeclE", "clang::Sema::LookupPrivateInstanceMethod(clang::Selector, clang::ObjCInterfaceDecl*)"}, + {"_ZN5clang4Sema25HandleExprPropertyRefExprEPKNS_21ObjCObjectPointerTypeEPNS_4ExprENS_15DeclarationNameENS_14SourceLocationES7_NS_8QualTypeEb", "clang::Sema::HandleExprPropertyRefExpr(clang::ObjCObjectPointerType const*, clang::Expr*, clang::DeclarationName, clang::SourceLocation, clang::SourceLocation, clang::QualType, bool)"}, + {"_ZN5clang4Sema25ActOnClassPropertyRefExprERNS_14IdentifierInfoES2_NS_14SourceLocationES3_", "clang::Sema::ActOnClassPropertyRefExpr(clang::IdentifierInfo&, clang::IdentifierInfo&, clang::SourceLocation, clang::SourceLocation)"}, + {"_ZN5clang4Sema18getObjCMessageKindEPNS_5ScopeEPNS_14IdentifierInfoENS_14SourceLocationEbbRNS_9OpaquePtrINS_8QualTypeEEE", "clang::Sema::getObjCMessageKind(clang::Scope*, clang::IdentifierInfo*, clang::SourceLocation, bool, bool, clang::OpaquePtr&)"}, + {"_ZN5clang4Sema17ActOnSuperMessageEPNS_5ScopeENS_14SourceLocationENS_8SelectorES3_S3_S3_NS_11ASTMultiPtrIPNS_4ExprEEE", "clang::Sema::ActOnSuperMessage(clang::Scope*, clang::SourceLocation, clang::Selector, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::ASTMultiPtr)"}, + {"_ZN5clang4Sema20BuildInstanceMessageEPNS_4ExprENS_8QualTypeENS_14SourceLocationENS_8SelectorEPNS_14ObjCMethodDeclES4_S4_S4_NS_11ASTMultiPtrIS2_EE", "clang::Sema::BuildInstanceMessage(clang::Expr*, clang::QualType, clang::SourceLocation, clang::Selector, clang::ObjCMethodDecl*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::ASTMultiPtr)"}, + {"_ZN5clang4Sema17BuildClassMessageEPNS_14TypeSourceInfoENS_8QualTypeENS_14SourceLocationENS_8SelectorEPNS_14ObjCMethodDeclES4_S4_S4_NS_11ASTMultiPtrIPNS_4ExprEEE", "clang::Sema::BuildClassMessage(clang::TypeSourceInfo*, clang::QualType, clang::SourceLocation, clang::Selector, clang::ObjCMethodDecl*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::ASTMultiPtr)"}, + {"_ZN5clang4Sema17ActOnClassMessageEPNS_5ScopeENS_9OpaquePtrINS_8QualTypeEEENS_8SelectorENS_14SourceLocationES7_S7_NS_11ASTMultiPtrIPNS_4ExprEEE", "clang::Sema::ActOnClassMessage(clang::Scope*, clang::OpaquePtr, clang::Selector, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::ASTMultiPtr)"}, + {"_ZN5clang4Sema20ActOnInstanceMessageEPNS_5ScopeEPNS_4ExprENS_8SelectorENS_14SourceLocationES6_S6_NS_11ASTMultiPtrIS4_EE", "clang::Sema::ActOnInstanceMessage(clang::Scope*, clang::Expr*, clang::Selector, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::ASTMultiPtr)"}, + {"_ZN5clang4Sema26ActOnDesignatedInitializerERNS_11DesignationENS_14SourceLocationEbNS_12ActionResultIPNS_4ExprELb1EEE", "clang::Sema::ActOnDesignatedInitializer(clang::Designation&, clang::SourceLocation, bool, clang::ActionResult)"}, + {"_Z24CheckArrayDesignatorExprRN5clang4SemaEPNS_4ExprERN4llvm6APSIntE", "CheckArrayDesignatorExpr(clang::Sema&, clang::Expr*, llvm::APSInt&)"}, + {"_ZN5clang4Sema13CheckInitListERKNS_17InitializedEntityERPNS_12InitListExprERNS_8QualTypeE", "clang::Sema::CheckInitList(clang::InitializedEntity const&, clang::InitListExpr*&, clang::QualType&)"}, + {"_ZN12_GLOBAL__N_115InitListCheckerC1ERN5clang4SemaERKNS1_17InitializedEntityEPNS1_12InitListExprERNS1_8QualTypeE", "(anonymous namespace)::InitListChecker::InitListChecker(clang::Sema&, clang::InitializedEntity const&, clang::InitListExpr*, clang::QualType&)"}, + {"_ZN5clang17InitializedEntityC1ERNS_10ASTContextEjRKS0_", "clang::InitializedEntity::InitializedEntity(clang::ASTContext&, unsigned int, clang::InitializedEntity const&)"}, + {"_ZN5clang17InitializedEntityC2ERNS_10ASTContextEjRKS0_", "clang::InitializedEntity::InitializedEntity(clang::ASTContext&, unsigned int, clang::InitializedEntity const&)"}, + {"_ZN5clang17InitializedEntity14InitializeBaseERNS_10ASTContextEPNS_16CXXBaseSpecifierEb", "clang::InitializedEntity::InitializeBase(clang::ASTContext&, clang::CXXBaseSpecifier*, bool)"}, + {"_ZNK5clang17InitializedEntity7getNameEv", "clang::InitializedEntity::getName() const"}, + {"_ZNK5clang17InitializedEntity7getDeclEv", "clang::InitializedEntity::getDecl() const"}, + {"_ZNK5clang17InitializedEntity10allowsNRVOEv", "clang::InitializedEntity::allowsNRVO() const"}, + {"_ZN5clang22InitializationSequence4Step7DestroyEv", "clang::InitializationSequence::Step::Destroy()"}, + {"_ZNK5clang22InitializationSequence24isDirectReferenceBindingEv", "clang::InitializationSequence::isDirectReferenceBinding() const"}, + {"_ZNK5clang22InitializationSequence11isAmbiguousEv", "clang::InitializationSequence::isAmbiguous() const"}, + {"_ZNK5clang22InitializationSequence27isConstructorInitializationEv", "clang::InitializationSequence::isConstructorInitialization() const"}, + {"_ZN5clang22InitializationSequence32AddAddressOverloadResolutionStepEPNS_12FunctionDeclENS_14DeclAccessPairE", "clang::InitializationSequence::AddAddressOverloadResolutionStep(clang::FunctionDecl*, clang::DeclAccessPair)"}, + {"_ZN5clang22InitializationSequence24AddDerivedToBaseCastStepENS_8QualTypeENS_13ExprValueKindE", "clang::InitializationSequence::AddDerivedToBaseCastStep(clang::QualType, clang::ExprValueKind)"}, + {"_ZN5clang22InitializationSequence23AddReferenceBindingStepENS_8QualTypeEb", "clang::InitializationSequence::AddReferenceBindingStep(clang::QualType, bool)"}, + {"_ZN5clang22InitializationSequence28AddExtraneousCopyToTemporaryENS_8QualTypeE", "clang::InitializationSequence::AddExtraneousCopyToTemporary(clang::QualType)"}, + {"_ZN5clang22InitializationSequence21AddUserConversionStepEPNS_12FunctionDeclENS_14DeclAccessPairENS_8QualTypeE", "clang::InitializationSequence::AddUserConversionStep(clang::FunctionDecl*, clang::DeclAccessPair, clang::QualType)"}, + {"_ZN5clang22InitializationSequence30AddQualificationConversionStepENS_8QualTypeENS_13ExprValueKindE", "clang::InitializationSequence::AddQualificationConversionStep(clang::QualType, clang::ExprValueKind)"}, + {"_ZN5clang22InitializationSequence25AddConversionSequenceStepERKNS_26ImplicitConversionSequenceENS_8QualTypeE", "clang::InitializationSequence::AddConversionSequenceStep(clang::ImplicitConversionSequence const&, clang::QualType)"}, + {"_ZN5clang22InitializationSequence25AddListInitializationStepENS_8QualTypeE", "clang::InitializationSequence::AddListInitializationStep(clang::QualType)"}, + {"_ZN5clang22InitializationSequence32AddConstructorInitializationStepEPNS_18CXXConstructorDeclENS_15AccessSpecifierENS_8QualTypeE", "clang::InitializationSequence::AddConstructorInitializationStep(clang::CXXConstructorDecl*, clang::AccessSpecifier, clang::QualType)"}, + {"_ZN5clang22InitializationSequence25AddZeroInitializationStepENS_8QualTypeE", "clang::InitializationSequence::AddZeroInitializationStep(clang::QualType)"}, + {"_ZN5clang22InitializationSequence18AddCAssignmentStepENS_8QualTypeE", "clang::InitializationSequence::AddCAssignmentStep(clang::QualType)"}, + {"_ZN5clang22InitializationSequence17AddStringInitStepENS_8QualTypeE", "clang::InitializationSequence::AddStringInitStep(clang::QualType)"}, + {"_ZN5clang22InitializationSequence27AddObjCObjectConversionStepENS_8QualTypeE", "clang::InitializationSequence::AddObjCObjectConversionStep(clang::QualType)"}, + {"_ZN5clang22InitializationSequence18SetOverloadFailureENS0_11FailureKindENS_17OverloadingResultE", "clang::InitializationSequence::SetOverloadFailure(clang::InitializationSequence::FailureKind, clang::OverloadingResult)"}, + {"_ZN5clang22InitializationSequenceC1ERNS_4SemaERKNS_17InitializedEntityERKNS_18InitializationKindEPPNS_4ExprEj", "clang::InitializationSequence::InitializationSequence(clang::Sema&, clang::InitializedEntity const&, clang::InitializationKind const&, clang::Expr**, unsigned int)"}, + {"_ZN5clang22InitializationSequenceC2ERNS_4SemaERKNS_17InitializedEntityERKNS_18InitializationKindEPPNS_4ExprEj", "clang::InitializationSequence::InitializationSequence(clang::Sema&, clang::InitializedEntity const&, clang::InitializationKind const&, clang::Expr**, unsigned int)"}, + {"_Z12IsStringInitPN5clang4ExprENS_8QualTypeERNS_10ASTContextE", "IsStringInit(clang::Expr*, clang::QualType, clang::ASTContext&)"}, + {"_Z28TryConstructorInitializationRN5clang4SemaERKNS_17InitializedEntityERKNS_18InitializationKindEPPNS_4ExprEjNS_8QualTypeERNS_22InitializationSequenceE", "TryConstructorInitialization(clang::Sema&, clang::InitializedEntity const&, clang::InitializationKind const&, clang::Expr**, unsigned int, clang::QualType, clang::InitializationSequence&)"}, + {"_Z24TryUserDefinedConversionRN5clang4SemaERKNS_17InitializedEntityERKNS_18InitializationKindEPNS_4ExprERNS_22InitializationSequenceE", "TryUserDefinedConversion(clang::Sema&, clang::InitializedEntity const&, clang::InitializationKind const&, clang::Expr*, clang::InitializationSequence&)"}, + {"_ZN5clang22InitializationSequenceD1Ev", "clang::InitializationSequence::~InitializationSequence()"}, + {"_ZN5clang22InitializationSequenceD2Ev", "clang::InitializationSequence::~InitializationSequence()"}, + {"_ZN5clang22InitializationSequence21PrintInitLocationNoteERNS_4SemaERKNS_17InitializedEntityE", "clang::InitializationSequence::PrintInitLocationNote(clang::Sema&, clang::InitializedEntity const&)"}, + {"_ZN5clang22InitializationSequence7PerformERNS_4SemaERKNS_17InitializedEntityERKNS_18InitializationKindENS_11ASTMultiPtrIPNS_4ExprEEEPNS_8QualTypeE", "clang::InitializationSequence::Perform(clang::Sema&, clang::InitializedEntity const&, clang::InitializationKind const&, clang::ASTMultiPtr, clang::QualType*)"}, + {"_ZN5clang22InitializationSequence8DiagnoseERNS_4SemaERKNS_17InitializedEntityERKNS_18InitializationKindEPPNS_4ExprEj", "clang::InitializationSequence::Diagnose(clang::Sema&, clang::InitializedEntity const&, clang::InitializationKind const&, clang::Expr**, unsigned int)"}, + {"_Z10CopyObjectRN5clang4SemaENS_8QualTypeERKNS_17InitializedEntityENS_12ActionResultIPNS_4ExprELb1EEEb", "CopyObject(clang::Sema&, clang::QualType, clang::InitializedEntity const&, clang::ActionResult, bool)"}, + {"_Z15CheckStringInitPN5clang4ExprERNS_8QualTypeERNS_4SemaE", "CheckStringInit(clang::Expr*, clang::QualType&, clang::Sema&)"}, + {"_ZNK5clang22InitializationSequence4dumpERN4llvm11raw_ostreamE", "clang::InitializationSequence::dump(llvm::raw_ostream&) const"}, + {"_ZNK5clang22InitializationSequence4dumpEv", "clang::InitializationSequence::dump() const"}, + {"_ZN5clang4Sema25PerformCopyInitializationERKNS_17InitializedEntityENS_14SourceLocationENS_12ActionResultIPNS_4ExprELb1EEE", "clang::Sema::PerformCopyInitialization(clang::InitializedEntity const&, clang::SourceLocation, clang::ActionResult)"}, + {"_Z32TryRefInitWithConversionFunctionRN5clang4SemaERKNS_17InitializedEntityERKNS_18InitializationKindEPNS_4ExprEbRNS_22InitializationSequenceE", "TryRefInitWithConversionFunction(clang::Sema&, clang::InitializedEntity const&, clang::InitializationKind const&, clang::Expr*, bool, clang::InitializationSequence&)"}, + {"_ZN12_GLOBAL__N_115InitListChecker26getStructuredSubobjectInitEPN5clang12InitListExprEjNS1_8QualTypeES3_jNS1_11SourceRangeE", "(anonymous namespace)::InitListChecker::getStructuredSubobjectInit(clang::InitListExpr*, unsigned int, clang::QualType, clang::InitListExpr*, unsigned int, clang::SourceRange)"}, + {"_ZN12_GLOBAL__N_115InitListChecker21CheckExplicitInitListERKN5clang17InitializedEntityEPNS1_12InitListExprERNS1_8QualTypeERjS6_S9_b", "(anonymous namespace)::InitListChecker::CheckExplicitInitList(clang::InitializedEntity const&, clang::InitListExpr*, clang::QualType&, unsigned int&, clang::InitListExpr*, unsigned int&, bool)"}, + {"_ZN12_GLOBAL__N_115InitListChecker26FillInValueInitializationsERKN5clang17InitializedEntityEPNS1_12InitListExprERb", "(anonymous namespace)::InitListChecker::FillInValueInitializations(clang::InitializedEntity const&, clang::InitListExpr*, bool&)"}, + {"_ZN12_GLOBAL__N_115InitListChecker23FillInValueInitForFieldEjPN5clang9FieldDeclERKNS1_17InitializedEntityEPNS1_12InitListExprERb", "(anonymous namespace)::InitListChecker::FillInValueInitForField(unsigned int, clang::FieldDecl*, clang::InitializedEntity const&, clang::InitListExpr*, bool&)"}, + {"_ZN12_GLOBAL__N_115InitListChecker21CheckListElementTypesERKN5clang17InitializedEntityEPNS1_12InitListExprERNS1_8QualTypeEbRjS6_S9_b", "(anonymous namespace)::InitListChecker::CheckListElementTypes(clang::InitializedEntity const&, clang::InitListExpr*, clang::QualType&, bool, unsigned int&, clang::InitListExpr*, unsigned int&, bool)"}, + {"_ZN12_GLOBAL__N_115InitListChecker15CheckScalarTypeERKN5clang17InitializedEntityEPNS1_12InitListExprENS1_8QualTypeERjS6_S8_", "(anonymous namespace)::InitListChecker::CheckScalarType(clang::InitializedEntity const&, clang::InitListExpr*, clang::QualType, unsigned int&, clang::InitListExpr*, unsigned int&)"}, + {"_ZN12_GLOBAL__N_115InitListChecker21CheckStructUnionTypesERKN5clang17InitializedEntityEPNS1_12InitListExprENS1_8QualTypeENS1_11DeclContext22specific_decl_iteratorINS1_9FieldDeclEEEbRjS6_SC_b", "(anonymous namespace)::InitListChecker::CheckStructUnionTypes(clang::InitializedEntity const&, clang::InitListExpr*, clang::QualType, clang::DeclContext::specific_decl_iterator, bool, unsigned int&, clang::InitListExpr*, unsigned int&, bool)"}, + {"_ZN12_GLOBAL__N_115InitListChecker14CheckArrayTypeERKN5clang17InitializedEntityEPNS1_12InitListExprERNS1_8QualTypeEN4llvm6APSIntEbRjS6_SB_", "(anonymous namespace)::InitListChecker::CheckArrayType(clang::InitializedEntity const&, clang::InitListExpr*, clang::QualType&, llvm::APSInt, bool, unsigned int&, clang::InitListExpr*, unsigned int&)"}, + {"_ZN12_GLOBAL__N_115InitListChecker18CheckReferenceTypeERKN5clang17InitializedEntityEPNS1_12InitListExprENS1_8QualTypeERjS6_S8_", "(anonymous namespace)::InitListChecker::CheckReferenceType(clang::InitializedEntity const&, clang::InitListExpr*, clang::QualType, unsigned int&, clang::InitListExpr*, unsigned int&)"}, + {"_ZN12_GLOBAL__N_115InitListChecker27UpdateStructuredListElementEPN5clang12InitListExprERjPNS1_4ExprE", "(anonymous namespace)::InitListChecker::UpdateStructuredListElement(clang::InitListExpr*, unsigned int&, clang::Expr*)"}, + {"_ZN12_GLOBAL__N_115InitListChecker26CheckDesignatedInitializerERKN5clang17InitializedEntityEPNS1_12InitListExprEPNS1_18DesignatedInitExprEjRNS1_8QualTypeEPNS1_11DeclContext22specific_decl_iteratorINS1_9FieldDeclEEEPN4llvm6APSIntERjS6_SJ_bb", "(anonymous namespace)::InitListChecker::CheckDesignatedInitializer(clang::InitializedEntity const&, clang::InitListExpr*, clang::DesignatedInitExpr*, unsigned int, clang::QualType&, clang::DeclContext::specific_decl_iterator*, llvm::APSInt*, unsigned int&, clang::InitListExpr*, unsigned int&, bool, bool)"}, + {"_ZN12_GLOBAL__N_115InitListChecker19CheckSubElementTypeERKN5clang17InitializedEntityEPNS1_12InitListExprENS1_8QualTypeERjS6_S8_", "(anonymous namespace)::InitListChecker::CheckSubElementType(clang::InitializedEntity const&, clang::InitListExpr*, clang::QualType, unsigned int&, clang::InitListExpr*, unsigned int&)"}, + {"_ZN12_GLOBAL__N_115InitListChecker21CheckImplicitInitListERKN5clang17InitializedEntityEPNS1_12InitListExprENS1_8QualTypeERjS6_S8_b", "(anonymous namespace)::InitListChecker::CheckImplicitInitList(clang::InitializedEntity const&, clang::InitListExpr*, clang::QualType, unsigned int&, clang::InitListExpr*, unsigned int&, bool)"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang22InitializationSequence4StepELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZNSt8_Rb_treeIPN5clang12InitListExprESt4pairIKS2_S2_ESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZNSt8_Rb_treeIPN5clang12InitListExprESt4pairIKS2_S2_ESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS5_ERKS5_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIPN5clang12InitListExprESt4pairIKS2_S2_ESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE16_M_insert_uniqueERKS5_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZN5clang12LookupResult9configureEv", "clang::LookupResult::configure()"}, + {"_ZNK5clang12LookupResult6sanityEv", "clang::LookupResult::sanity() const"}, + {"_ZN5clang12LookupResult11deletePathsEPNS_12CXXBasePathsE", "clang::LookupResult::deletePaths(clang::CXXBasePaths*)"}, + {"_ZN5clang12LookupResult11resolveKindEv", "clang::LookupResult::resolveKind()"}, + {"_ZN5clang12LookupResult21addDeclsFromBasePathsERKNS_12CXXBasePathsE", "clang::LookupResult::addDeclsFromBasePaths(clang::CXXBasePaths const&)"}, + {"_ZN5clang12LookupResult26setAmbiguousBaseSubobjectsERNS_12CXXBasePathsE", "clang::LookupResult::setAmbiguousBaseSubobjects(clang::CXXBasePaths&)"}, + {"_ZN5clang12LookupResult30setAmbiguousBaseSubobjectTypesERNS_12CXXBasePathsE", "clang::LookupResult::setAmbiguousBaseSubobjectTypes(clang::CXXBasePaths&)"}, + {"_ZN5clang12LookupResult5printERN4llvm11raw_ostreamE", "clang::LookupResult::print(llvm::raw_ostream&)"}, + {"_ZN5clang4Sema33ForceDeclarationOfImplicitMembersEPNS_13CXXRecordDeclE", "clang::Sema::ForceDeclarationOfImplicitMembers(clang::CXXRecordDecl*)"}, + {"_Z31CanDeclareSpecialMemberFunctionRN5clang10ASTContextEPKNS_13CXXRecordDeclE", "CanDeclareSpecialMemberFunction(clang::ASTContext&, clang::CXXRecordDecl const*)"}, + {"_ZN5clang4Sema13CppLookupNameERNS_12LookupResultEPNS_5ScopeE", "clang::Sema::CppLookupName(clang::LookupResult&, clang::Scope*)"}, + {"_Z38DeclareImplicitMemberFunctionsWithNameRN5clang4SemaENS_15DeclarationNameEPKNS_11DeclContextE", "DeclareImplicitMemberFunctionsWithName(clang::Sema&, clang::DeclarationName, clang::DeclContext const*)"}, + {"_Z16findOuterContextPN5clang5ScopeE", "findOuterContext(clang::Scope*)"}, + {"_ZN5clang4Sema19LookupQualifiedNameERNS_12LookupResultEPNS_11DeclContextEb", "clang::Sema::LookupQualifiedName(clang::LookupResult&, clang::DeclContext*, bool)"}, + {"_ZN12_GLOBAL__N_123UnqualUsingDirectiveSet15visitScopeChainEPN5clang5ScopeES3_", "(anonymous namespace)::UnqualUsingDirectiveSet::visitScopeChain(clang::Scope*, clang::Scope*)"}, + {"_ZN12_GLOBAL__N_123UnqualUsingDirectiveSet4doneEv", "(anonymous namespace)::UnqualUsingDirectiveSet::done()"}, + {"_ZN5clang4Sema10LookupNameERNS_12LookupResultEPNS_5ScopeEb", "clang::Sema::LookupName(clang::LookupResult&, clang::Scope*, bool)"}, + {"_Z13LookupBuiltinRN5clang4SemaERNS_12LookupResultE", "LookupBuiltin(clang::Sema&, clang::LookupResult&)"}, + {"_Z12LookupDirectRN5clang4SemaERNS_12LookupResultEPKNS_11DeclContextE", "LookupDirect(clang::Sema&, clang::LookupResult&, clang::DeclContext const*)"}, + {"_Z15LookupAnyMemberPKN5clang16CXXBaseSpecifierERNS_11CXXBasePathEPv", "LookupAnyMember(clang::CXXBaseSpecifier const*, clang::CXXBasePath&, void*)"}, + {"_ZN5clang4Sema16LookupParsedNameERNS_12LookupResultEPNS_5ScopeEPNS_12CXXScopeSpecEbb", "clang::Sema::LookupParsedName(clang::LookupResult&, clang::Scope*, clang::CXXScopeSpec*, bool, bool)"}, + {"_ZN5clang4Sema23DiagnoseAmbiguousLookupERNS_12LookupResultE", "clang::Sema::DiagnoseAmbiguousLookup(clang::LookupResult&)"}, + + // {"_ZN5clang4Sema34FindAssociatedClassesAndNamespacesEPPNS_4ExprEjRN4llvm11SmallPtrSetIPNS_11DeclContextELj16EEERNS5_IPNS_13CXXRecordDeclELj16EEE", + // "clang::Sema::FindAssociatedClassesAndNamespaces(clang::Expr**, unsigned int, llvm::SmallPtrSet&, llvm::SmallPtrSet&)"}, + // "clang::Sema::FindAssociatedClassesAndNamespaces(clang::Expr**, unsigned int, llvm::SmallPtrSet&, llvm::SmallPtrSet&)" was returned + + {"_Z33addAssociatedClassesAndNamespacesRN12_GLOBAL__N_116AssociatedLookupEN5clang8QualTypeE", "addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::QualType)"}, + {"_ZN5clang4Sema16LookupSingleNameEPNS_5ScopeENS_15DeclarationNameENS_14SourceLocationENS0_14LookupNameKindENS0_17RedeclarationKindE", "clang::Sema::LookupSingleName(clang::Scope*, clang::DeclarationName, clang::SourceLocation, clang::Sema::LookupNameKind, clang::Sema::RedeclarationKind)"}, + {"_ZN5clang4Sema14LookupProtocolEPNS_14IdentifierInfoENS_14SourceLocationE", "clang::Sema::LookupProtocol(clang::IdentifierInfo*, clang::SourceLocation)"}, + {"_ZN5clang4Sema28LookupOverloadedOperatorNameENS_22OverloadedOperatorKindEPNS_5ScopeENS_8QualTypeES4_RNS_17UnresolvedSetImplE", "clang::Sema::LookupOverloadedOperatorName(clang::OverloadedOperatorKind, clang::Scope*, clang::QualType, clang::QualType, clang::UnresolvedSetImpl&)"}, + {"_Z38IsAcceptableNonMemberOperatorCandidatePN5clang12FunctionDeclENS_8QualTypeES2_RNS_10ASTContextE", "IsAcceptableNonMemberOperatorCandidate(clang::FunctionDecl*, clang::QualType, clang::QualType, clang::ASTContext&)"}, + {"_ZN5clang4Sema18LookupConstructorsEPNS_13CXXRecordDeclE", "clang::Sema::LookupConstructors(clang::CXXRecordDecl*)"}, + {"_ZN5clang4Sema16LookupDestructorEPNS_13CXXRecordDeclE", "clang::Sema::LookupDestructor(clang::CXXRecordDecl*)"}, + {"_ZN5clang9ADLResult6insertEPNS_9NamedDeclE", "clang::ADLResult::insert(clang::NamedDecl*)"}, + {"_ZN5clang4Sema23ArgumentDependentLookupENS_15DeclarationNameEbPPNS_4ExprEjRNS_9ADLResultE", "clang::Sema::ArgumentDependentLookup(clang::DeclarationName, bool, clang::Expr**, unsigned int, clang::ADLResult&)"}, + {"_ZN5clang19VisibleDeclConsumerD0Ev", "clang::VisibleDeclConsumer::~VisibleDeclConsumer()"}, + {"_ZN5clang19VisibleDeclConsumerD1Ev", "clang::VisibleDeclConsumer::~VisibleDeclConsumer()"}, + {"_ZN5clang19VisibleDeclConsumerD2Ev", "clang::VisibleDeclConsumer::~VisibleDeclConsumer()"}, + {"_ZN5clang4Sema18LookupVisibleDeclsEPNS_5ScopeENS0_14LookupNameKindERNS_19VisibleDeclConsumerEb", "clang::Sema::LookupVisibleDecls(clang::Scope*, clang::Sema::LookupNameKind, clang::VisibleDeclConsumer&, bool)"}, + {"_ZN12_GLOBAL__N_117ShadowContextRAIIC1ERNS_18VisibleDeclsRecordE", "(anonymous namespace)::ShadowContextRAII::ShadowContextRAII((anonymous namespace)::VisibleDeclsRecord&)"}, + {"_Z18LookupVisibleDeclsPN5clang5ScopeERNS_12LookupResultERN12_GLOBAL__N_123UnqualUsingDirectiveSetERNS_19VisibleDeclConsumerERNS4_18VisibleDeclsRecordE", "LookupVisibleDecls(clang::Scope*, clang::LookupResult&, (anonymous namespace)::UnqualUsingDirectiveSet&, clang::VisibleDeclConsumer&, (anonymous namespace)::VisibleDeclsRecord&)"}, + {"_ZN12_GLOBAL__N_117ShadowContextRAIID1Ev", "(anonymous namespace)::ShadowContextRAII::~ShadowContextRAII()"}, + {"_ZN5clang4Sema18LookupVisibleDeclsEPNS_11DeclContextENS0_14LookupNameKindERNS_19VisibleDeclConsumerEb", "clang::Sema::LookupVisibleDecls(clang::DeclContext*, clang::Sema::LookupNameKind, clang::VisibleDeclConsumer&, bool)"}, + {"_Z18LookupVisibleDeclsPN5clang11DeclContextERNS_12LookupResultEbbRNS_19VisibleDeclConsumerERN12_GLOBAL__N_118VisibleDeclsRecordE", "LookupVisibleDecls(clang::DeclContext*, clang::LookupResult&, bool, bool, clang::VisibleDeclConsumer&, (anonymous namespace)::VisibleDeclsRecord&)"}, + {"_ZN5clang4Sema11CorrectTypoERNS_12LookupResultEPNS_5ScopeEPNS_12CXXScopeSpecEPNS_11DeclContextEbNS0_18CorrectTypoContextEPKNS_21ObjCObjectPointerTypeE", "clang::Sema::CorrectTypo(clang::LookupResult&, clang::Scope*, clang::CXXScopeSpec*, clang::DeclContext*, bool, clang::Sema::CorrectTypoContext, clang::ObjCObjectPointerType const*)"}, + {"_ZN12_GLOBAL__N_122TypoCorrectionConsumer9FoundNameEN4llvm9StringRefE", "(anonymous namespace)::TypoCorrectionConsumer::FoundName(llvm::StringRef)"}, + {"_Z25LookupPotentialTypoResultRN5clang4SemaERNS_12LookupResultEPNS_14IdentifierInfoEPNS_5ScopeEPNS_12CXXScopeSpecEPNS_11DeclContextEbNS0_18CorrectTypoContextE", "LookupPotentialTypoResult(clang::Sema&, clang::LookupResult&, clang::IdentifierInfo*, clang::Scope*, clang::CXXScopeSpec*, clang::DeclContext*, bool, clang::Sema::CorrectTypoContext)"}, + {"_ZN12_GLOBAL__N_122TypoCorrectionConsumerD1Ev", "(anonymous namespace)::TypoCorrectionConsumer::~TypoCorrectionConsumer()"}, + {"_ZN12_GLOBAL__N_122TypoCorrectionConsumerD0Ev", "(anonymous namespace)::TypoCorrectionConsumer::~TypoCorrectionConsumer()"}, + {"_ZN12_GLOBAL__N_122TypoCorrectionConsumer9FoundDeclEPN5clang9NamedDeclES3_b", "(anonymous namespace)::TypoCorrectionConsumer::FoundDecl(clang::NamedDecl*, clang::NamedDecl*, bool)"}, + {"_ZN12_GLOBAL__N_118VisibleDeclsRecord11checkHiddenEPN5clang9NamedDeclE", "(anonymous namespace)::VisibleDeclsRecord::checkHidden(clang::NamedDecl*)"}, + {"_ZN12_GLOBAL__N_118VisibleDeclsRecord3addEPN5clang9NamedDeclE", "(anonymous namespace)::VisibleDeclsRecord::add(clang::NamedDecl*)"}, + {"_ZNK12_GLOBAL__N_123UnqualUsingDirectiveSet16getNamespacesForEPN5clang11DeclContextE", "(anonymous namespace)::UnqualUsingDirectiveSet::getNamespacesFor(clang::DeclContext*) const"}, + + // {"_Z25CollectEnclosingNamespaceRN4llvm11SmallPtrSetIPN5clang11DeclContextELj16EEES3_", + // "CollectEnclosingNamespace(llvm::SmallPtrSet&, clang::DeclContext*)"}, + // "CollectEnclosingNamespace(llvm::SmallPtrSet&, clang::DeclContext*)" was returned + + {"_Z33addAssociatedClassesAndNamespacesRN12_GLOBAL__N_116AssociatedLookupERKN5clang16TemplateArgumentE", "addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&)"}, + + // {"_ZSt16__introsort_loopIPN12_GLOBAL__N_116UnqualUsingEntryElNS1_10ComparatorEEvT_S4_T0_T1_", + // "void std::__introsort_loop<(anonymous namespace)::UnqualUsingEntry*, long, (anonymous namespace)::UnqualUsingEntry::Comparator>((anonymous namespace)::UnqualUsingEntry*, (anonymous namespace)::UnqualUsingEntry*, long, (anonymous namespace)::UnqualUsingEntry::Comparator)"}, + // got error + + + // {"_ZSt16__insertion_sortIPN12_GLOBAL__N_116UnqualUsingEntryENS1_10ComparatorEEvT_S4_T0_", + // "void std::__insertion_sort<(anonymous namespace)::UnqualUsingEntry*, (anonymous namespace)::UnqualUsingEntry::Comparator>((anonymous namespace)::UnqualUsingEntry*, (anonymous namespace)::UnqualUsingEntry*, (anonymous namespace)::UnqualUsingEntry::Comparator)"}, + // got error + + {"_ZN12_GLOBAL__N_123UnqualUsingDirectiveSet17addUsingDirectiveEPN5clang18UsingDirectiveDeclEPNS1_11DeclContextE", "(anonymous namespace)::UnqualUsingDirectiveSet::addUsingDirective(clang::UsingDirectiveDecl*, clang::DeclContext*)"}, + {"_ZN12_GLOBAL__N_123UnqualUsingDirectiveSet18addUsingDirectivesEPN5clang11DeclContextES3_", "(anonymous namespace)::UnqualUsingDirectiveSet::addUsingDirectives(clang::DeclContext*, clang::DeclContext*)"}, + + // {"_ZN4llvm8DenseMapIPN5clang14IdentifierInfoESt4pairINS_9StringRefEbENS_12DenseMapInfoIS3_EENS7_IS6_EEE16InsertIntoBucketERKS3_RKS6_PS4_IS3_S6_E", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(clang::IdentifierInfo* const&, std::pair const&, std::pair>*)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(clang::IdentifierInfo* const&, std::pair const&, std::pair*>)" was returned + + {"_ZN4llvm8DenseMapIPN5clang14IdentifierInfoESt4pairINS_9StringRefEbENS_12DenseMapInfoIS3_EENS7_IS6_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPN5clang9NamedDeclES3_NS_12DenseMapInfoIS3_EES5_E16InsertIntoBucketERKS3_S8_PSt4pairIS3_S3_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::NamedDecl* const&, clang::NamedDecl* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPN5clang9NamedDeclES3_NS_12DenseMapInfoIS3_EES5_E4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNSt8_Rb_treeIPN5clang4DeclES2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE16_M_insert_uniqueERKS2_", "std::_Rb_tree, std::less, std::allocator>::_M_insert_unique(clang::Decl* const&)"}, + {"_ZN4llvm9StringMapIbNS_16BumpPtrAllocatorEE16GetOrCreateValueIbEERNS_14StringMapEntryIbEENS_9StringRefET_", "llvm::StringMapEntry& llvm::StringMap::GetOrCreateValue(llvm::StringRef, bool)"}, + {"_ZNSt8_Rb_treeIPN5clang4DeclES2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE8_M_eraseEPSt13_Rb_tree_nodeIS2_E", "std::_Rb_tree, std::less, std::allocator>::_M_erase(std::_Rb_tree_node*)"}, + {"_ZN4llvm8DenseMapIPN5clang11DeclContextEcNS_12DenseMapInfoIS3_EENS4_IcEEE6insertERKSt4pairIS3_cE", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPN5clang11DeclContextEcNS_12DenseMapInfoIS3_EENS4_IcEEE16InsertIntoBucketERKS3_RKcPSt4pairIS3_cE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::DeclContext* const&, char const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPN5clang11DeclContextEcNS_12DenseMapInfoIS3_EENS4_IcEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang4Sema13ActOnPropertyEPNS_5ScopeENS_14SourceLocationERNS_15FieldDeclaratorERNS_12ObjCDeclSpecENS_8SelectorES8_PNS_4DeclEPbNS_3tok15ObjCKeywordKindEPNS_11DeclContextE", "clang::Sema::ActOnProperty(clang::Scope*, clang::SourceLocation, clang::FieldDeclarator&, clang::ObjCDeclSpec&, clang::Selector, clang::Selector, clang::Decl*, bool*, clang::tok::ObjCKeywordKind, clang::DeclContext*)"}, + {"_ZN5clang4Sema30HandlePropertyInClassExtensionEPNS_5ScopeEPNS_16ObjCCategoryDeclENS_14SourceLocationERNS_15FieldDeclaratorENS_8SelectorES8_bbjPbPNS_14TypeSourceInfoENS_3tok15ObjCKeywordKindE", "clang::Sema::HandlePropertyInClassExtension(clang::Scope*, clang::ObjCCategoryDecl*, clang::SourceLocation, clang::FieldDeclarator&, clang::Selector, clang::Selector, bool, bool, unsigned int, bool*, clang::TypeSourceInfo*, clang::tok::ObjCKeywordKind)"}, + {"_ZN5clang4Sema27CheckObjCPropertyAttributesEPNS_4DeclENS_14SourceLocationERj", "clang::Sema::CheckObjCPropertyAttributes(clang::Decl*, clang::SourceLocation, unsigned int&)"}, + {"_ZN5clang4Sema18CreatePropertyDeclEPNS_5ScopeEPNS_17ObjCContainerDeclENS_14SourceLocationERNS_15FieldDeclaratorENS_8SelectorES8_bbjPNS_14TypeSourceInfoENS_3tok15ObjCKeywordKindEPNS_11DeclContextE", "clang::Sema::CreatePropertyDecl(clang::Scope*, clang::ObjCContainerDecl*, clang::SourceLocation, clang::FieldDeclarator&, clang::Selector, clang::Selector, bool, bool, unsigned int, clang::TypeSourceInfo*, clang::tok::ObjCKeywordKind, clang::DeclContext*)"}, + {"_ZN5clang4Sema19ProcessPropertyDeclEPNS_16ObjCPropertyDeclEPNS_17ObjCContainerDeclES2_S4_", "clang::Sema::ProcessPropertyDecl(clang::ObjCPropertyDecl*, clang::ObjCContainerDecl*, clang::ObjCPropertyDecl*, clang::ObjCContainerDecl*)"}, + {"_ZN5clang4Sema21ActOnPropertyImplDeclEPNS_5ScopeENS_14SourceLocationES3_bPNS_4DeclEPNS_14IdentifierInfoES7_S3_", "clang::Sema::ActOnPropertyImplDecl(clang::Scope*, clang::SourceLocation, clang::SourceLocation, bool, clang::Decl*, clang::IdentifierInfo*, clang::IdentifierInfo*, clang::SourceLocation)"}, + {"_ZN5clang4Sema24DiagnosePropertyMismatchEPNS_16ObjCPropertyDeclES2_PKNS_14IdentifierInfoE", "clang::Sema::DiagnosePropertyMismatch(clang::ObjCPropertyDecl*, clang::ObjCPropertyDecl*, clang::IdentifierInfo const*)"}, + {"_ZN5clang4Sema32DiagnosePropertyAccessorMismatchEPNS_16ObjCPropertyDeclEPNS_14ObjCMethodDeclENS_14SourceLocationE", "clang::Sema::DiagnosePropertyAccessorMismatch(clang::ObjCPropertyDecl*, clang::ObjCMethodDecl*, clang::SourceLocation)"}, + {"_ZN5clang4Sema31ComparePropertiesInBaseAndSuperEPNS_17ObjCInterfaceDeclE", "clang::Sema::ComparePropertiesInBaseAndSuper(clang::ObjCInterfaceDecl*)"}, + {"_ZN5clang4Sema33MatchOneProtocolPropertiesInClassEPNS_4DeclEPNS_16ObjCProtocolDeclE", "clang::Sema::MatchOneProtocolPropertiesInClass(clang::Decl*, clang::ObjCProtocolDecl*)"}, + {"_ZN5clang4Sema17ComparePropertiesEPNS_4DeclES2_", "clang::Sema::CompareProperties(clang::Decl*, clang::Decl*)"}, + {"_ZN5clang4Sema18isPropertyReadonlyEPNS_16ObjCPropertyDeclEPNS_17ObjCInterfaceDeclE", "clang::Sema::isPropertyReadonly(clang::ObjCPropertyDecl*, clang::ObjCInterfaceDecl*)"}, + {"_ZN5clang4Sema26CollectImmediatePropertiesEPNS_17ObjCContainerDeclERN4llvm8DenseMapIPNS_14IdentifierInfoEPNS_16ObjCPropertyDeclENS3_12DenseMapInfoIS6_EENS9_IS8_EEEESD_", "clang::Sema::CollectImmediateProperties(clang::ObjCContainerDecl*, llvm::DenseMap, llvm::DenseMapInfo>&, llvm::DenseMap, llvm::DenseMapInfo>&)"}, + {"_ZN5clang4Sema18LookupPropertyDeclEPKNS_17ObjCContainerDeclEPNS_14IdentifierInfoE", "clang::Sema::LookupPropertyDecl(clang::ObjCContainerDecl const*, clang::IdentifierInfo*)"}, + {"_ZN5clang4Sema27DefaultSynthesizePropertiesEPNS_5ScopeEPNS_12ObjCImplDeclEPNS_17ObjCInterfaceDeclE", "clang::Sema::DefaultSynthesizeProperties(clang::Scope*, clang::ObjCImplDecl*, clang::ObjCInterfaceDecl*)"}, + {"_Z35CollectClassPropertyImplementationsPN5clang17ObjCContainerDeclERN4llvm8DenseMapIPNS_14IdentifierInfoEPNS_16ObjCPropertyDeclENS2_12DenseMapInfoIS5_EENS8_IS7_EEEE", "CollectClassPropertyImplementations(clang::ObjCContainerDecl*, llvm::DenseMap, llvm::DenseMapInfo>&)"}, + {"_ZN5clang4Sema31DiagnoseUnimplementedPropertiesEPNS_5ScopeEPNS_12ObjCImplDeclEPNS_17ObjCContainerDeclERKN4llvm8DenseSetINS_8SelectorENS7_12DenseMapInfoIS9_EEEE", "clang::Sema::DiagnoseUnimplementedProperties(clang::Scope*, clang::ObjCImplDecl*, clang::ObjCContainerDecl*, llvm::DenseSet> const&)"}, + {"_ZN5clang4Sema31AtomicPropertySetterGetterRulesEPNS_12ObjCImplDeclEPNS_17ObjCContainerDeclE", "clang::Sema::AtomicPropertySetterGetterRules(clang::ObjCImplDecl*, clang::ObjCContainerDecl*)"}, + {"_Z16AddPropertyAttrsRN5clang4SemaEPNS_14ObjCMethodDeclEPNS_16ObjCPropertyDeclE", "AddPropertyAttrs(clang::Sema&, clang::ObjCMethodDecl*, clang::ObjCPropertyDecl*)"}, + {"_ZN4llvm8DenseMapIPN5clang16ObjCPropertyDeclEcNS_12DenseMapInfoIS3_EENS4_IcEEE6insertERKSt4pairIS3_cE", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPN5clang16ObjCPropertyDeclEcNS_12DenseMapInfoIS3_EENS4_IcEEE16InsertIntoBucketERKS3_RKcPSt4pairIS3_cE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::ObjCPropertyDecl* const&, char const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPN5clang16ObjCPropertyDeclEcNS_12DenseMapInfoIS3_EENS4_IcEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPN5clang14IdentifierInfoEPNS1_16ObjCPropertyDeclENS_12DenseMapInfoIS3_EENS6_IS5_EEE16InsertIntoBucketERKS3_RKS5_PSt4pairIS3_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::IdentifierInfo* const&, clang::ObjCPropertyDecl* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPN5clang14IdentifierInfoEPNS1_16ObjCPropertyDeclENS_12DenseMapInfoIS3_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang21GetConversionCategoryENS_22ImplicitConversionKindE", "clang::GetConversionCategory(clang::ImplicitConversionKind)"}, + {"_ZN5clang17GetConversionRankENS_22ImplicitConversionKindE", "clang::GetConversionRank(clang::ImplicitConversionKind)"}, + {"_ZN5clang25GetImplicitConversionNameENS_22ImplicitConversionKindE", "clang::GetImplicitConversionName(clang::ImplicitConversionKind)"}, + {"_ZN5clang26StandardConversionSequence23setAsIdentityConversionEv", "clang::StandardConversionSequence::setAsIdentityConversion()"}, + {"_ZNK5clang26StandardConversionSequence7getRankEv", "clang::StandardConversionSequence::getRank() const"}, + {"_ZNK5clang26StandardConversionSequence25isPointerConversionToBoolEv", "clang::StandardConversionSequence::isPointerConversionToBool() const"}, + {"_ZNK5clang26StandardConversionSequence32isPointerConversionToVoidPointerERNS_10ASTContextE", "clang::StandardConversionSequence::isPointerConversionToVoidPointer(clang::ASTContext&) const"}, + {"_ZNK5clang26StandardConversionSequence10DebugPrintEv", "clang::StandardConversionSequence::DebugPrint() const"}, + {"_ZNK5clang29UserDefinedConversionSequence10DebugPrintEv", "clang::UserDefinedConversionSequence::DebugPrint() const"}, + {"_ZNK5clang26ImplicitConversionSequence10DebugPrintEv", "clang::ImplicitConversionSequence::DebugPrint() const"}, + {"_ZN5clang27AmbiguousConversionSequence9constructEv", "clang::AmbiguousConversionSequence::construct()"}, + {"_ZN5clang27AmbiguousConversionSequence8destructEv", "clang::AmbiguousConversionSequence::destruct()"}, + {"_ZN5clang27AmbiguousConversionSequence8copyFromERKS0_", "clang::AmbiguousConversionSequence::copyFrom(clang::AmbiguousConversionSequence const&)"}, + {"_ZN5clang17OverloadCandidate20DeductionFailureInfo7DestroyEv", "clang::OverloadCandidate::DeductionFailureInfo::Destroy()"}, + {"_ZN5clang17OverloadCandidate20DeductionFailureInfo20getTemplateParameterEv", "clang::OverloadCandidate::DeductionFailureInfo::getTemplateParameter()"}, + {"_ZN5clang17OverloadCandidate20DeductionFailureInfo23getTemplateArgumentListEv", "clang::OverloadCandidate::DeductionFailureInfo::getTemplateArgumentList()"}, + {"_ZN5clang17OverloadCandidate20DeductionFailureInfo11getFirstArgEv", "clang::OverloadCandidate::DeductionFailureInfo::getFirstArg()"}, + {"_ZN5clang17OverloadCandidate20DeductionFailureInfo12getSecondArgEv", "clang::OverloadCandidate::DeductionFailureInfo::getSecondArg()"}, + {"_ZN5clang20OverloadCandidateSet5clearEv", "clang::OverloadCandidateSet::clear()"}, + {"_ZN5clang4Sema13CheckOverloadEPNS_5ScopeEPNS_12FunctionDeclERKNS_12LookupResultERPNS_9NamedDeclEb", "clang::Sema::CheckOverload(clang::Scope*, clang::FunctionDecl*, clang::LookupResult const&, clang::NamedDecl*&, bool)"}, + {"_ZN5clang4Sema10IsOverloadEPNS_12FunctionDeclES2_b", "clang::Sema::IsOverload(clang::FunctionDecl*, clang::FunctionDecl*, bool)"}, + {"_ZN5clang4Sema24FunctionArgTypesAreEqualEPKNS_17FunctionProtoTypeES3_", "clang::Sema::FunctionArgTypesAreEqual(clang::FunctionProtoType const*, clang::FunctionProtoType const*)"}, + {"_ZN5clang4Sema21TryImplicitConversionERNS_22InitializationSequenceERKNS_17InitializedEntityEPNS_4ExprEbbbb", "clang::Sema::TryImplicitConversion(clang::InitializationSequence&, clang::InitializedEntity const&, clang::Expr*, bool, bool, bool, bool)"}, + {"_ZN5clang21TryImplicitConversionERNS_4SemaEPNS_4ExprENS_8QualTypeEbbbb", "clang::TryImplicitConversion(clang::Sema&, clang::Expr*, clang::QualType, bool, bool, bool, bool)"}, + {"_ZN5clang4Sema25PerformImplicitConversionERPNS_4ExprENS_8QualTypeENS0_16AssignmentActionEb", "clang::Sema::PerformImplicitConversion(clang::Expr*&, clang::QualType, clang::Sema::AssignmentAction, bool)"}, + {"_ZN5clang4Sema25PerformImplicitConversionERPNS_4ExprENS_8QualTypeENS0_16AssignmentActionEbRNS_26ImplicitConversionSequenceE", "clang::Sema::PerformImplicitConversion(clang::Expr*&, clang::QualType, clang::Sema::AssignmentAction, bool, clang::ImplicitConversionSequence&)"}, + {"_ZN5clang4Sema19IsIntegralPromotionEPNS_4ExprENS_8QualTypeES3_", "clang::Sema::IsIntegralPromotion(clang::Expr*, clang::QualType, clang::QualType)"}, + {"_ZN5clang4Sema24IsFloatingPointPromotionENS_8QualTypeES1_", "clang::Sema::IsFloatingPointPromotion(clang::QualType, clang::QualType)"}, + {"_ZN5clang4Sema18IsComplexPromotionENS_8QualTypeES1_", "clang::Sema::IsComplexPromotion(clang::QualType, clang::QualType)"}, + {"_ZN5clang4Sema19IsPointerConversionEPNS_4ExprENS_8QualTypeES3_bRS3_Rb", "clang::Sema::IsPointerConversion(clang::Expr*, clang::QualType, clang::QualType, bool, clang::QualType&, bool&)"}, + {"_ZN5clang4Sema23isObjCPointerConversionENS_8QualTypeES1_RS1_Rb", "clang::Sema::isObjCPointerConversion(clang::QualType, clang::QualType, clang::QualType&, bool&)"}, + {"_ZN5clang34BuildSimilarlyQualifiedPointerTypeEPKNS_4TypeENS_8QualTypeES3_RNS_10ASTContextE", "clang::BuildSimilarlyQualifiedPointerType(clang::Type const*, clang::QualType, clang::QualType, clang::ASTContext&)"}, + + // {"_ZN5clang4Sema22CheckPointerConversionEPNS_4ExprENS_8QualTypeERNS_8CastKindERN4llvm11SmallVectorIPNS_16CXXBaseSpecifierELj4EEEb", + // "clang::Sema::CheckPointerConversion(clang::Expr*, clang::QualType, clang::CastKind&, llvm::SmallVector&, bool)"}, + // "clang::Sema::CheckPointerConversion(clang::Expr*, clang::QualType, clang::CastKind&, llvm::SmallVector&, bool)" was returned + + {"_ZN5clang4Sema25IsMemberPointerConversionEPNS_4ExprENS_8QualTypeES3_bRS3_", "clang::Sema::IsMemberPointerConversion(clang::Expr*, clang::QualType, clang::QualType, bool, clang::QualType&)"}, + + // {"_ZN5clang4Sema28CheckMemberPointerConversionEPNS_4ExprENS_8QualTypeERNS_8CastKindERN4llvm11SmallVectorIPNS_16CXXBaseSpecifierELj4EEEb", + // "clang::Sema::CheckMemberPointerConversion(clang::Expr*, clang::QualType, clang::CastKind&, llvm::SmallVector&, bool)"}, + // "clang::Sema::CheckMemberPointerConversion(clang::Expr*, clang::QualType, clang::CastKind&, llvm::SmallVector&, bool)" was returned + + {"_ZN5clang4Sema25IsQualificationConversionENS_8QualTypeES1_b", "clang::Sema::IsQualificationConversion(clang::QualType, clang::QualType, bool)"}, + {"_ZN5clang4Sema37DiagnoseMultipleUserDefinedConversionEPNS_4ExprENS_8QualTypeE", "clang::Sema::DiagnoseMultipleUserDefinedConversion(clang::Expr*, clang::QualType)"}, + {"_ZN5clang23IsUserDefinedConversionERNS_4SemaEPNS_4ExprENS_8QualTypeERNS_29UserDefinedConversionSequenceERNS_20OverloadCandidateSetEb", "clang::IsUserDefinedConversion(clang::Sema&, clang::Expr*, clang::QualType, clang::UserDefinedConversionSequence&, clang::OverloadCandidateSet&, bool)"}, + {"_ZN5clang20OverloadCandidateSet14NoteCandidatesERNS_4SemaENS_28OverloadCandidateDisplayKindEPPNS_4ExprEjPKcNS_14SourceLocationE", "clang::OverloadCandidateSet::NoteCandidates(clang::Sema&, clang::OverloadCandidateDisplayKind, clang::Expr**, unsigned int, char const*, clang::SourceLocation)"}, + {"_ZN5clang4Sema28CompareReferenceRelationshipENS_14SourceLocationENS_8QualTypeES2_RbS3_", "clang::Sema::CompareReferenceRelationship(clang::SourceLocation, clang::QualType, clang::QualType, bool&, bool&)"}, + {"_ZN5clang4Sema35PerformObjectArgumentInitializationERPNS_4ExprEPNS_19NestedNameSpecifierEPNS_9NamedDeclEPNS_13CXXMethodDeclE", "clang::Sema::PerformObjectArgumentInitialization(clang::Expr*&, clang::NestedNameSpecifier*, clang::NamedDecl*, clang::CXXMethodDecl*)"}, + {"_ZN5clang31TryObjectArgumentInitializationERNS_4SemaENS_8QualTypeENS_4Expr14ClassificationEPNS_13CXXMethodDeclEPNS_13CXXRecordDeclE", "clang::TryObjectArgumentInitialization(clang::Sema&, clang::QualType, clang::Expr::Classification, clang::CXXMethodDecl*, clang::CXXRecordDecl*)"}, + {"_ZN5clang4Sema32PerformContextuallyConvertToBoolERPNS_4ExprE", "clang::Sema::PerformContextuallyConvertToBool(clang::Expr*&)"}, + {"_ZN5clang4Sema34PerformContextuallyConvertToObjCIdERPNS_4ExprE", "clang::Sema::PerformContextuallyConvertToObjCId(clang::Expr*&)"}, + {"_ZN5clang4Sema34ConvertToIntegralOrEnumerationTypeENS_14SourceLocationEPNS_4ExprERKNS_17PartialDiagnosticES6_S6_S6_S6_S6_S6_", "clang::Sema::ConvertToIntegralOrEnumerationType(clang::SourceLocation, clang::Expr*, clang::PartialDiagnostic const&, clang::PartialDiagnostic const&, clang::PartialDiagnostic const&, clang::PartialDiagnostic const&, clang::PartialDiagnostic const&, clang::PartialDiagnostic const&, clang::PartialDiagnostic const&)"}, + {"_ZN5clang4Sema20AddOverloadCandidateEPNS_12FunctionDeclENS_14DeclAccessPairEPPNS_4ExprEjRNS_20OverloadCandidateSetEbb", "clang::Sema::AddOverloadCandidate(clang::FunctionDecl*, clang::DeclAccessPair, clang::Expr**, unsigned int, clang::OverloadCandidateSet&, bool, bool)"}, + {"_ZN5clang4Sema18AddMethodCandidateEPNS_13CXXMethodDeclENS_14DeclAccessPairEPNS_13CXXRecordDeclENS_8QualTypeENS_4Expr14ClassificationEPPS7_jRNS_20OverloadCandidateSetEb", "clang::Sema::AddMethodCandidate(clang::CXXMethodDecl*, clang::DeclAccessPair, clang::CXXRecordDecl*, clang::QualType, clang::Expr::Classification, clang::Expr**, unsigned int, clang::OverloadCandidateSet&, bool)"}, + {"_ZN5clang21TryCopyInitializationERNS_4SemaEPNS_4ExprENS_8QualTypeEbb", "clang::TryCopyInitialization(clang::Sema&, clang::Expr*, clang::QualType, bool, bool)"}, + {"_ZN5clang4Sema21AddFunctionCandidatesERKNS_17UnresolvedSetImplEPPNS_4ExprEjRNS_20OverloadCandidateSetEb", "clang::Sema::AddFunctionCandidates(clang::UnresolvedSetImpl const&, clang::Expr**, unsigned int, clang::OverloadCandidateSet&, bool)"}, + {"_ZN5clang4Sema26AddMethodTemplateCandidateEPNS_20FunctionTemplateDeclENS_14DeclAccessPairEPNS_13CXXRecordDeclEPKNS_24TemplateArgumentListInfoENS_8QualTypeENS_4Expr14ClassificationEPPSA_jRNS_20OverloadCandidateSetEb", "clang::Sema::AddMethodTemplateCandidate(clang::FunctionTemplateDecl*, clang::DeclAccessPair, clang::CXXRecordDecl*, clang::TemplateArgumentListInfo const*, clang::QualType, clang::Expr::Classification, clang::Expr**, unsigned int, clang::OverloadCandidateSet&, bool)"}, + {"_ZN5clang4Sema28AddTemplateOverloadCandidateEPNS_20FunctionTemplateDeclENS_14DeclAccessPairEPKNS_24TemplateArgumentListInfoEPPNS_4ExprEjRNS_20OverloadCandidateSetEb", "clang::Sema::AddTemplateOverloadCandidate(clang::FunctionTemplateDecl*, clang::DeclAccessPair, clang::TemplateArgumentListInfo const*, clang::Expr**, unsigned int, clang::OverloadCandidateSet&, bool)"}, + {"_ZN5clang4Sema18AddMethodCandidateENS_14DeclAccessPairENS_8QualTypeENS_4Expr14ClassificationEPPS3_jRNS_20OverloadCandidateSetEb", "clang::Sema::AddMethodCandidate(clang::DeclAccessPair, clang::QualType, clang::Expr::Classification, clang::Expr**, unsigned int, clang::OverloadCandidateSet&, bool)"}, + {"_ZN5clang4Sema22AddConversionCandidateEPNS_17CXXConversionDeclENS_14DeclAccessPairEPNS_13CXXRecordDeclEPNS_4ExprENS_8QualTypeERNS_20OverloadCandidateSetE", "clang::Sema::AddConversionCandidate(clang::CXXConversionDecl*, clang::DeclAccessPair, clang::CXXRecordDecl*, clang::Expr*, clang::QualType, clang::OverloadCandidateSet&)"}, + {"_ZN5clang4Sema30AddTemplateConversionCandidateEPNS_20FunctionTemplateDeclENS_14DeclAccessPairEPNS_13CXXRecordDeclEPNS_4ExprENS_8QualTypeERNS_20OverloadCandidateSetE", "clang::Sema::AddTemplateConversionCandidate(clang::FunctionTemplateDecl*, clang::DeclAccessPair, clang::CXXRecordDecl*, clang::Expr*, clang::QualType, clang::OverloadCandidateSet&)"}, + {"_ZN5clang4Sema21AddSurrogateCandidateEPNS_17CXXConversionDeclENS_14DeclAccessPairEPNS_13CXXRecordDeclEPKNS_17FunctionProtoTypeEPNS_4ExprEPSA_jRNS_20OverloadCandidateSetE", "clang::Sema::AddSurrogateCandidate(clang::CXXConversionDecl*, clang::DeclAccessPair, clang::CXXRecordDecl*, clang::FunctionProtoType const*, clang::Expr*, clang::Expr**, unsigned int, clang::OverloadCandidateSet&)"}, + {"_ZN5clang4Sema27AddMemberOperatorCandidatesENS_22OverloadedOperatorKindENS_14SourceLocationEPPNS_4ExprEjRNS_20OverloadCandidateSetENS_11SourceRangeE", "clang::Sema::AddMemberOperatorCandidates(clang::OverloadedOperatorKind, clang::SourceLocation, clang::Expr**, unsigned int, clang::OverloadCandidateSet&, clang::SourceRange)"}, + {"_ZN5clang4Sema19AddBuiltinCandidateENS_8QualTypeEPS1_PPNS_4ExprEjRNS_20OverloadCandidateSetEbj", "clang::Sema::AddBuiltinCandidate(clang::QualType, clang::QualType*, clang::Expr**, unsigned int, clang::OverloadCandidateSet&, bool, unsigned int)"}, + {"_ZN5clang23BuiltinCandidateTypeSet39AddPointerWithMoreQualifiedTypeVariantsENS_8QualTypeERKNS_10QualifiersE", "clang::BuiltinCandidateTypeSet::AddPointerWithMoreQualifiedTypeVariants(clang::QualType, clang::Qualifiers const&)"}, + {"_ZN5clang23BuiltinCandidateTypeSet45AddMemberPointerWithMoreQualifiedTypeVariantsENS_8QualTypeE", "clang::BuiltinCandidateTypeSet::AddMemberPointerWithMoreQualifiedTypeVariants(clang::QualType)"}, + {"_ZN5clang23BuiltinCandidateTypeSet21AddTypesConvertedFromENS_8QualTypeENS_14SourceLocationEbbRKNS_10QualifiersE", "clang::BuiltinCandidateTypeSet::AddTypesConvertedFrom(clang::QualType, clang::SourceLocation, bool, bool, clang::Qualifiers const&)"}, + {"_ZN5clang4Sema28AddBuiltinOperatorCandidatesENS_22OverloadedOperatorKindENS_14SourceLocationEPPNS_4ExprEjRNS_20OverloadCandidateSetE", "clang::Sema::AddBuiltinOperatorCandidates(clang::OverloadedOperatorKind, clang::SourceLocation, clang::Expr**, unsigned int, clang::OverloadCandidateSet&)"}, + {"_ZN5clang12_GLOBAL__N_130BuiltinOperatorOverloadBuilder35addGenericBinaryArithmeticOverloadsEb", "clang::(anonymous namespace)::BuiltinOperatorOverloadBuilder::addGenericBinaryArithmeticOverloads(bool)"}, + {"_ZN5clang12_GLOBAL__N_130BuiltinOperatorOverloadBuilder35addBinaryBitwiseArithmeticOverloadsENS_22OverloadedOperatorKindE", "clang::(anonymous namespace)::BuiltinOperatorOverloadBuilder::addBinaryBitwiseArithmeticOverloads(clang::OverloadedOperatorKind)"}, + {"_ZN5clang4Sema36AddArgumentDependentLookupCandidatesENS_15DeclarationNameEbPPNS_4ExprEjPKNS_24TemplateArgumentListInfoERNS_20OverloadCandidateSetEb", "clang::Sema::AddArgumentDependentLookupCandidates(clang::DeclarationName, bool, clang::Expr**, unsigned int, clang::TemplateArgumentListInfo const*, clang::OverloadCandidateSet&, bool)"}, + {"_ZN5clang25isBetterOverloadCandidateERNS_4SemaERKNS_17OverloadCandidateES4_NS_14SourceLocationEb", "clang::isBetterOverloadCandidate(clang::Sema&, clang::OverloadCandidate const&, clang::OverloadCandidate const&, clang::SourceLocation, bool)"}, + {"_ZN5clang34CompareImplicitConversionSequencesERNS_4SemaERKNS_26ImplicitConversionSequenceES4_", "clang::CompareImplicitConversionSequences(clang::Sema&, clang::ImplicitConversionSequence const&, clang::ImplicitConversionSequence const&)"}, + {"_ZN5clang34CompareStandardConversionSequencesERNS_4SemaERKNS_26StandardConversionSequenceES4_", "clang::CompareStandardConversionSequences(clang::Sema&, clang::StandardConversionSequence const&, clang::StandardConversionSequence const&)"}, + {"_ZN5clang20OverloadCandidateSet18BestViableFunctionERNS_4SemaENS_14SourceLocationERPNS_17OverloadCandidateEb", "clang::OverloadCandidateSet::BestViableFunction(clang::Sema&, clang::SourceLocation, clang::OverloadCandidate*&, bool)"}, + {"_ZN5clang4Sema21NoteOverloadCandidateEPNS_12FunctionDeclE", "clang::Sema::NoteOverloadCandidate(clang::FunctionDecl*)"}, + {"_ZN5clang12_GLOBAL__N_125ClassifyOverloadCandidateERNS_4SemaEPNS_12FunctionDeclERSs", "clang::(anonymous namespace)::ClassifyOverloadCandidate(clang::Sema&, clang::FunctionDecl*, std::string&)"}, + {"_ZNK5clang26ImplicitConversionSequence27DiagnoseAmbiguousConversionERNS_4SemaENS_14SourceLocationERKNS_17PartialDiagnosticE", "clang::ImplicitConversionSequence::DiagnoseAmbiguousConversion(clang::Sema&, clang::SourceLocation, clang::PartialDiagnostic const&) const"}, + {"_ZN5clang4Sema34ResolveAddressOfOverloadedFunctionEPNS_4ExprENS_8QualTypeEbRNS_14DeclAccessPairE", "clang::Sema::ResolveAddressOfOverloadedFunction(clang::Expr*, clang::QualType, bool, clang::DeclAccessPair&)"}, + {"_ZN5clang20IsNoReturnConversionERNS_10ASTContextENS_8QualTypeES2_RS2_", "clang::IsNoReturnConversion(clang::ASTContext&, clang::QualType, clang::QualType, clang::QualType&)"}, + {"_ZN5clang4Sema43ResolveSingleFunctionTemplateSpecializationEPNS_4ExprE", "clang::Sema::ResolveSingleFunctionTemplateSpecialization(clang::Expr*)"}, + {"_ZN5clang4Sema27AddOverloadedCallCandidatesEPNS_20UnresolvedLookupExprEPPNS_4ExprEjRNS_20OverloadCandidateSetEb", "clang::Sema::AddOverloadedCallCandidates(clang::UnresolvedLookupExpr*, clang::Expr**, unsigned int, clang::OverloadCandidateSet&, bool)"}, + {"_ZN5clang4Sema23BuildOverloadedCallExprEPNS_5ScopeEPNS_4ExprEPNS_20UnresolvedLookupExprENS_14SourceLocationEPS4_jS7_S4_", "clang::Sema::BuildOverloadedCallExpr(clang::Scope*, clang::Expr*, clang::UnresolvedLookupExpr*, clang::SourceLocation, clang::Expr**, unsigned int, clang::SourceLocation, clang::Expr*)"}, + {"_ZN5clang4Sema30FixOverloadedFunctionReferenceEPNS_4ExprENS_14DeclAccessPairEPNS_12FunctionDeclE", "clang::Sema::FixOverloadedFunctionReference(clang::Expr*, clang::DeclAccessPair, clang::FunctionDecl*)"}, + {"_ZN5clang4Sema23CreateOverloadedUnaryOpENS_14SourceLocationEjRKNS_17UnresolvedSetImplEPNS_4ExprE", "clang::Sema::CreateOverloadedUnaryOp(clang::SourceLocation, unsigned int, clang::UnresolvedSetImpl const&, clang::Expr*)"}, + {"_ZN5clang4Sema21CreateOverloadedBinOpENS_14SourceLocationEjRKNS_17UnresolvedSetImplEPNS_4ExprES6_", "clang::Sema::CreateOverloadedBinOp(clang::SourceLocation, unsigned int, clang::UnresolvedSetImpl const&, clang::Expr*, clang::Expr*)"}, + {"_ZN5clang4Sema34CreateOverloadedArraySubscriptExprENS_14SourceLocationES1_PNS_4ExprES3_", "clang::Sema::CreateOverloadedArraySubscriptExpr(clang::SourceLocation, clang::SourceLocation, clang::Expr*, clang::Expr*)"}, + {"_ZN5clang4Sema25BuildCallToMemberFunctionEPNS_5ScopeEPNS_4ExprENS_14SourceLocationEPS4_jS5_", "clang::Sema::BuildCallToMemberFunction(clang::Scope*, clang::Expr*, clang::SourceLocation, clang::Expr**, unsigned int, clang::SourceLocation)"}, + {"_ZN5clang4Sema28BuildCallToObjectOfClassTypeEPNS_5ScopeEPNS_4ExprENS_14SourceLocationEPS4_jS5_", "clang::Sema::BuildCallToObjectOfClassType(clang::Scope*, clang::Expr*, clang::SourceLocation, clang::Expr**, unsigned int, clang::SourceLocation)"}, + {"_ZN5clang4Sema24BuildOverloadedArrowExprEPNS_5ScopeEPNS_4ExprENS_14SourceLocationE", "clang::Sema::BuildOverloadedArrowExpr(clang::Scope*, clang::Expr*, clang::SourceLocation)"}, + {"_ZN5clang4Sema30FixOverloadedFunctionReferenceENS_12ActionResultIPNS_4ExprELb1EEENS_14DeclAccessPairEPNS_12FunctionDeclE", "clang::Sema::FixOverloadedFunctionReference(clang::ActionResult, clang::DeclAccessPair, clang::FunctionDecl*)"}, + + // {"_ZSt16__introsort_loopIPPN5clang17OverloadCandidateElNS0_12_GLOBAL__N_135CompareOverloadCandidatesForDisplayEEvT_S6_T0_T1_", + // "void std::__introsort_loop(clang::OverloadCandidate**, clang::OverloadCandidate**, long, clang::(anonymous namespace)::CompareOverloadCandidatesForDisplay)"}, + // got error + + {"_ZN5clang12_GLOBAL__N_135CompareOverloadCandidatesForDisplayclEPKNS_17OverloadCandidateES4_", "clang::(anonymous namespace)::CompareOverloadCandidatesForDisplay::operator()(clang::OverloadCandidate const*, clang::OverloadCandidate const*)"}, + + // {"_ZSt13__adjust_heapIPPN5clang17OverloadCandidateElS2_NS0_12_GLOBAL__N_135CompareOverloadCandidatesForDisplayEEvT_T0_S7_T1_T2_", + // "void std::__adjust_heap(clang::OverloadCandidate**, long, long, clang::OverloadCandidate*, clang::(anonymous namespace)::CompareOverloadCandidatesForDisplay)"}, + // got error + + {"_ZN5clang12_GLOBAL__N_121DiagnoseArityMismatchERNS_4SemaEPNS_17OverloadCandidateEj", "clang::(anonymous namespace)::DiagnoseArityMismatch(clang::Sema&, clang::OverloadCandidate*, unsigned int)"}, + {"_ZN5clang38AddBuiltinAssignmentOperatorCandidatesERNS_4SemaENS_8QualTypeEPPNS_4ExprEjRNS_20OverloadCandidateSetE", "clang::AddBuiltinAssignmentOperatorCandidates(clang::Sema&, clang::QualType, clang::Expr**, unsigned int, clang::OverloadCandidateSet&)"}, + {"_ZN5clang12_GLOBAL__N_130BuiltinOperatorOverloadBuilder29getUsualArithmeticConversionsEjj", "clang::(anonymous namespace)::BuiltinOperatorOverloadBuilder::getUsualArithmeticConversions(unsigned int, unsigned int)"}, + {"_ZN5clang12_GLOBAL__N_130BuiltinOperatorOverloadBuilder35addPlusPlusMinusMinusStyleOverloadsENS_8QualTypeEb", "clang::(anonymous namespace)::BuiltinOperatorOverloadBuilder::addPlusPlusMinusMinusStyleOverloads(clang::QualType, bool)"}, + {"_ZN5clang24FindConversionForRefInitERNS_4SemaERNS_26ImplicitConversionSequenceENS_8QualTypeENS_14SourceLocationEPNS_4ExprES4_bb", "clang::FindConversionForRefInit(clang::Sema&, clang::ImplicitConversionSequence&, clang::QualType, clang::SourceLocation, clang::Expr*, clang::QualType, bool, bool)"}, + {"_ZN4llvm15SmallVectorImplIN5clang17OverloadCandidateEE9push_backERKS2_", "llvm::SmallVectorImpl::push_back(clang::OverloadCandidate const&)"}, + {"_ZN4llvm15SmallVectorImplIN5clang26ImplicitConversionSequenceEE6resizeEj", "llvm::SmallVectorImpl::resize(unsigned int)"}, + {"_ZN4llvm15SmallVectorImplIN5clang23BuiltinCandidateTypeSetEE9push_backERKS2_", "llvm::SmallVectorImpl::push_back(clang::BuiltinCandidateTypeSet const&)"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang23BuiltinCandidateTypeSetELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + + // {"_ZSt24__uninitialized_copy_auxIPN5clang23BuiltinCandidateTypeSetES2_ET0_T_S4_S3_St12__false_type", + // "clang::BuiltinCandidateTypeSet* std::__uninitialized_copy_aux(clang::BuiltinCandidateTypeSet*, clang::BuiltinCandidateTypeSet*, clang::BuiltinCandidateTypeSet*, std::__false_type)"}, + // got error + + + // {"_ZN4llvm23SmallVectorTemplateBaseIN5clang26ImplicitConversionSequenceELb0EE18uninitialized_copyIPS2_S5_EEvT_S6_T0_", + // "void llvm::SmallVectorTemplateBase::uninitialized_copy(clang::ImplicitConversionSequence*, clang::ImplicitConversionSequence*, clang::ImplicitConversionSequence*)"}, + // got error + + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang17OverloadCandidateELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang17OverloadCandidateELb0EE13destroy_rangeEPS2_S4_", "llvm::SmallVectorTemplateBase::destroy_range(clang::OverloadCandidate*, clang::OverloadCandidate*)"}, + + // {"_ZSt24__uninitialized_copy_auxIPN5clang17OverloadCandidateES2_ET0_T_S4_S3_St12__false_type", + // "clang::OverloadCandidate* std::__uninitialized_copy_aux(clang::OverloadCandidate*, clang::OverloadCandidate*, clang::OverloadCandidate*, std::__false_type)"}, + // got error + + + // {"_ZN4llvm23SmallVectorTemplateBaseIN5clang26ImplicitConversionSequenceELb0EE18uninitialized_copyIPKS2_PS2_EEvT_S8_T0_", + // "void llvm::SmallVectorTemplateBase::uninitialized_copy(clang::ImplicitConversionSequence const*, clang::ImplicitConversionSequence const*, clang::ImplicitConversionSequence*)"}, + // got error + + + // {"_ZNSt6__copyILb0ESt26random_access_iterator_tagE4copyIPKN5clang26ImplicitConversionSequenceEPS4_EET0_T_S9_S8_", + // "clang::ImplicitConversionSequence* std::__copy::copy(clang::ImplicitConversionSequence const*, clang::ImplicitConversionSequence const*, clang::ImplicitConversionSequence*)"}, + // got error + + {"_ZN4llvm15SmallVectorImplIPN5clang12FunctionDeclEEaSERKS4_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + {"_ZN4llvm15SmallVectorImplIN5clang23BuiltinCandidateTypeSetEED2Ev", "llvm::SmallVectorImpl::~SmallVectorImpl()"}, + + // {"_ZNK4llvm8DenseMapISt4pairIN5clang7CanQualINS2_4TypeEEES5_EcNS_12DenseMapInfoIS6_EENS7_IcEEE15LookupBucketForERKS6_RPS1_IS6_cE", + // "llvm::DenseMap, clang::CanQual>, char, llvm::DenseMapInfo, clang::CanQual>>, llvm::DenseMapInfo>::LookupBucketFor(std::pair, clang::CanQual> const&, std::pair, clang::CanQual>, char>*&) const"}, + // "llvm::DenseMap, clang::CanQual>, char, llvm::DenseMapInfo, clang::CanQual>>, llvm::DenseMapInfo>::LookupBucketFor(std::pair, clang::CanQual> const&, std::pair*&, clang::CanQual>, char>) const" was returned + + + // {"_ZN4llvm8DenseMapISt4pairIN5clang7CanQualINS2_4TypeEEES5_EcNS_12DenseMapInfoIS6_EENS7_IcEEE6insertERKS1_IS6_cE", + // "llvm::DenseMap, clang::CanQual>, char, llvm::DenseMapInfo, clang::CanQual>>, llvm::DenseMapInfo>::insert(std::pair, clang::CanQual>, char> const&)"}, + // "llvm::DenseMap, clang::CanQual>, char, llvm::DenseMapInfo, clang::CanQual>>, llvm::DenseMapInfo>::insert(std::pair const&, clang::CanQual>, char>)" was returned + + + // {"_ZN4llvm8DenseMapISt4pairIN5clang7CanQualINS2_4TypeEEES5_EcNS_12DenseMapInfoIS6_EENS7_IcEEE16InsertIntoBucketERKS6_RKcPS1_IS6_cE", + // "llvm::DenseMap, clang::CanQual>, char, llvm::DenseMapInfo, clang::CanQual>>, llvm::DenseMapInfo>::InsertIntoBucket(std::pair, clang::CanQual> const&, char const&, std::pair, clang::CanQual>, char>*)"}, + // "llvm::DenseMap, clang::CanQual>, char, llvm::DenseMapInfo, clang::CanQual>>, llvm::DenseMapInfo>::InsertIntoBucket(std::pair, clang::CanQual> const&, char const&, std::pair*, clang::CanQual>, char>)" was returned + + {"_ZN4llvm8DenseMapISt4pairIN5clang7CanQualINS2_4TypeEEES5_EcNS_12DenseMapInfoIS6_EENS7_IcEEE4growEj", "llvm::DenseMap, clang::CanQual>, char, llvm::DenseMapInfo, clang::CanQual>>, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang20OverloadCandidateSetD2Ev", "clang::OverloadCandidateSet::~OverloadCandidateSet()"}, + {"_ZN5clang4Sema13ActOnExprStmtENS0_11FullExprArgE", "clang::Sema::ActOnExprStmt(clang::Sema::FullExprArg)"}, + {"_ZN5clang4Sema13ActOnNullStmtENS_14SourceLocationEb", "clang::Sema::ActOnNullStmt(clang::SourceLocation, bool)"}, + {"_ZN5clang4Sema13ActOnDeclStmtENS_9OpaquePtrINS_12DeclGroupRefEEENS_14SourceLocationES4_", "clang::Sema::ActOnDeclStmt(clang::OpaquePtr, clang::SourceLocation, clang::SourceLocation)"}, + {"_ZN5clang4Sema20ActOnForEachDeclStmtENS_9OpaquePtrINS_12DeclGroupRefEEE", "clang::Sema::ActOnForEachDeclStmt(clang::OpaquePtr)"}, + {"_ZN5clang4Sema24DiagnoseUnusedExprResultEPKNS_4StmtE", "clang::Sema::DiagnoseUnusedExprResult(clang::Stmt const*)"}, + {"_ZN5clang4Sema17ActOnCompoundStmtENS_14SourceLocationES1_NS_11ASTMultiPtrIPNS_4StmtEEEb", "clang::Sema::ActOnCompoundStmt(clang::SourceLocation, clang::SourceLocation, clang::ASTMultiPtr, bool)"}, + {"_ZN5clang4Sema13ActOnCaseStmtENS_14SourceLocationEPNS_4ExprES1_S3_S1_", "clang::Sema::ActOnCaseStmt(clang::SourceLocation, clang::Expr*, clang::SourceLocation, clang::Expr*, clang::SourceLocation)"}, + {"_ZN5clang4Sema17ActOnCaseStmtBodyEPNS_4StmtES2_", "clang::Sema::ActOnCaseStmtBody(clang::Stmt*, clang::Stmt*)"}, + {"_ZN5clang4Sema16ActOnDefaultStmtENS_14SourceLocationES1_PNS_4StmtEPNS_5ScopeE", "clang::Sema::ActOnDefaultStmt(clang::SourceLocation, clang::SourceLocation, clang::Stmt*, clang::Scope*)"}, + {"_ZN5clang4Sema14ActOnLabelStmtENS_14SourceLocationEPNS_14IdentifierInfoES1_PNS_4StmtEPKNS_13AttributeListE", "clang::Sema::ActOnLabelStmt(clang::SourceLocation, clang::IdentifierInfo*, clang::SourceLocation, clang::Stmt*, clang::AttributeList const*)"}, + {"_ZN5clang4Sema14ActOnLabelStmtENS_14SourceLocationEPNS_14IdentifierInfoES1_PNS_4StmtEb", "clang::Sema::ActOnLabelStmt(clang::SourceLocation, clang::IdentifierInfo*, clang::SourceLocation, clang::Stmt*, bool)"}, + {"_ZN5clang4Sema11ActOnIfStmtENS_14SourceLocationENS0_11FullExprArgEPNS_4DeclEPNS_4StmtES1_S6_", "clang::Sema::ActOnIfStmt(clang::SourceLocation, clang::Sema::FullExprArg, clang::Decl*, clang::Stmt*, clang::SourceLocation, clang::Stmt*)"}, + {"_ZN5clang4Sema34ConvertIntegerToTypeWarnOnOverflowERN4llvm6APSIntEjbNS_14SourceLocationEj", "clang::Sema::ConvertIntegerToTypeWarnOnOverflow(llvm::APSInt&, unsigned int, bool, clang::SourceLocation, unsigned int)"}, + {"_ZN5clang4Sema22ActOnStartOfSwitchStmtENS_14SourceLocationEPNS_4ExprEPNS_4DeclE", "clang::Sema::ActOnStartOfSwitchStmt(clang::SourceLocation, clang::Expr*, clang::Decl*)"}, + {"_ZN5clang4Sema21ActOnFinishSwitchStmtENS_14SourceLocationEPNS_4StmtES3_", "clang::Sema::ActOnFinishSwitchStmt(clang::SourceLocation, clang::Stmt*, clang::Stmt*)"}, + {"_Z11CmpCaseValsRKSt4pairIN4llvm6APSIntEPN5clang8CaseStmtEES7_", "CmpCaseVals(std::pair const&, std::pair const&)"}, + {"_Z12AdjustAPSIntRN4llvm6APSIntEjb", "AdjustAPSInt(llvm::APSInt&, unsigned int, bool)"}, + {"_Z11CmpEnumValsRKSt4pairIN4llvm6APSIntEPN5clang16EnumConstantDeclEES7_", "CmpEnumVals(std::pair const&, std::pair const&)"}, + {"_Z10EqEnumValsRKSt4pairIN4llvm6APSIntEPN5clang16EnumConstantDeclEES7_", "EqEnumVals(std::pair const&, std::pair const&)"}, + {"_ZN5clang4Sema14ActOnWhileStmtENS_14SourceLocationENS0_11FullExprArgEPNS_4DeclEPNS_4StmtE", "clang::Sema::ActOnWhileStmt(clang::SourceLocation, clang::Sema::FullExprArg, clang::Decl*, clang::Stmt*)"}, + {"_ZN5clang4Sema11ActOnDoStmtENS_14SourceLocationEPNS_4StmtES1_S1_PNS_4ExprES1_", "clang::Sema::ActOnDoStmt(clang::SourceLocation, clang::Stmt*, clang::SourceLocation, clang::SourceLocation, clang::Expr*, clang::SourceLocation)"}, + {"_ZN5clang4Sema12ActOnForStmtENS_14SourceLocationES1_PNS_4StmtENS0_11FullExprArgEPNS_4DeclES4_S1_S3_", "clang::Sema::ActOnForStmt(clang::SourceLocation, clang::SourceLocation, clang::Stmt*, clang::Sema::FullExprArg, clang::Decl*, clang::Sema::FullExprArg, clang::SourceLocation, clang::Stmt*)"}, + {"_ZN5clang4Sema22ActOnForEachLValueExprEPNS_4ExprE", "clang::Sema::ActOnForEachLValueExpr(clang::Expr*)"}, + {"_ZN5clang4Sema26ActOnObjCForCollectionStmtENS_14SourceLocationES1_PNS_4StmtEPNS_4ExprES1_S3_", "clang::Sema::ActOnObjCForCollectionStmt(clang::SourceLocation, clang::SourceLocation, clang::Stmt*, clang::Expr*, clang::SourceLocation, clang::Stmt*)"}, + {"_ZN5clang4Sema13ActOnGotoStmtENS_14SourceLocationES1_PNS_14IdentifierInfoE", "clang::Sema::ActOnGotoStmt(clang::SourceLocation, clang::SourceLocation, clang::IdentifierInfo*)"}, + {"_ZN5clang4Sema21ActOnIndirectGotoStmtENS_14SourceLocationES1_PNS_4ExprE", "clang::Sema::ActOnIndirectGotoStmt(clang::SourceLocation, clang::SourceLocation, clang::Expr*)"}, + {"_ZN5clang4Sema17ActOnContinueStmtENS_14SourceLocationEPNS_5ScopeE", "clang::Sema::ActOnContinueStmt(clang::SourceLocation, clang::Scope*)"}, + {"_ZN5clang4Sema14ActOnBreakStmtENS_14SourceLocationEPNS_5ScopeE", "clang::Sema::ActOnBreakStmt(clang::SourceLocation, clang::Scope*)"}, + {"_ZN5clang4Sema23getCopyElisionCandidateENS_8QualTypeEPNS_4ExprEb", "clang::Sema::getCopyElisionCandidate(clang::QualType, clang::Expr*, bool)"}, + {"_ZN5clang4Sema31PerformMoveOrCopyInitializationERKNS_17InitializedEntityEPKNS_7VarDeclENS_8QualTypeEPNS_4ExprE", "clang::Sema::PerformMoveOrCopyInitialization(clang::InitializedEntity const&, clang::VarDecl const*, clang::QualType, clang::Expr*)"}, + {"_ZN5clang4Sema20ActOnBlockReturnStmtENS_14SourceLocationEPNS_4ExprE", "clang::Sema::ActOnBlockReturnStmt(clang::SourceLocation, clang::Expr*)"}, + {"_ZN5clang4Sema15ActOnReturnStmtENS_14SourceLocationEPNS_4ExprE", "clang::Sema::ActOnReturnStmt(clang::SourceLocation, clang::Expr*)"}, + {"_ZN5clang4Sema12ActOnAsmStmtENS_14SourceLocationEbbjjPPNS_14IdentifierInfoENS_11ASTMultiPtrIPNS_4ExprEEES8_S7_S8_S1_b", "clang::Sema::ActOnAsmStmt(clang::SourceLocation, bool, bool, unsigned int, unsigned int, clang::IdentifierInfo**, clang::ASTMultiPtr, clang::ASTMultiPtr, clang::Expr*, clang::ASTMultiPtr, clang::SourceLocation, bool)"}, + {"_Z14CheckAsmLValuePKN5clang4ExprERNS_4SemaE", "CheckAsmLValue(clang::Expr const*, clang::Sema&)"}, + {"_ZN5clang4Sema20ActOnObjCAtCatchStmtENS_14SourceLocationES1_PNS_4DeclEPNS_4StmtE", "clang::Sema::ActOnObjCAtCatchStmt(clang::SourceLocation, clang::SourceLocation, clang::Decl*, clang::Stmt*)"}, + {"_ZN5clang4Sema22ActOnObjCAtFinallyStmtENS_14SourceLocationEPNS_4StmtE", "clang::Sema::ActOnObjCAtFinallyStmt(clang::SourceLocation, clang::Stmt*)"}, + {"_ZN5clang4Sema18ActOnObjCAtTryStmtENS_14SourceLocationEPNS_4StmtENS_11ASTMultiPtrIS3_EES3_", "clang::Sema::ActOnObjCAtTryStmt(clang::SourceLocation, clang::Stmt*, clang::ASTMultiPtr, clang::Stmt*)"}, + {"_ZN5clang4Sema20BuildObjCAtThrowStmtENS_14SourceLocationEPNS_4ExprE", "clang::Sema::BuildObjCAtThrowStmt(clang::SourceLocation, clang::Expr*)"}, + {"_ZN5clang4Sema20ActOnObjCAtThrowStmtENS_14SourceLocationEPNS_4ExprEPNS_5ScopeE", "clang::Sema::ActOnObjCAtThrowStmt(clang::SourceLocation, clang::Expr*, clang::Scope*)"}, + {"_ZN5clang4Sema27ActOnObjCAtSynchronizedStmtENS_14SourceLocationEPNS_4ExprEPNS_4StmtE", "clang::Sema::ActOnObjCAtSynchronizedStmt(clang::SourceLocation, clang::Expr*, clang::Stmt*)"}, + {"_ZN5clang4Sema18ActOnCXXCatchBlockENS_14SourceLocationEPNS_4DeclEPNS_4StmtE", "clang::Sema::ActOnCXXCatchBlock(clang::SourceLocation, clang::Decl*, clang::Stmt*)"}, + {"_ZN5clang4Sema16ActOnCXXTryBlockENS_14SourceLocationEPNS_4StmtENS_11ASTMultiPtrIS3_EE", "clang::Sema::ActOnCXXTryBlock(clang::SourceLocation, clang::Stmt*, clang::ASTMultiPtr)"}, + {"_ZN4llvm25array_pod_sort_comparatorIN12_GLOBAL__N_115TypeWithHandlerEEEiPKvS4_", "int llvm::array_pod_sort_comparator<(anonymous namespace)::TypeWithHandler>(void const*, void const*)"}, + + // {"_ZSt6uniqueIPSt4pairIN4llvm6APSIntEPN5clang16EnumConstantDeclEEPFbRKS6_S9_EET_SC_SC_T0_", + // "std::pair* std::unique*, bool (*)(std::pair const&, std::pair const&)>(std::pair*, std::pair*, bool (*)(std::pair const&, std::pair const&))"}, + // got error + + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang10TargetInfo14ConstraintInfoELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + + // {"_ZSt21__inplace_stable_sortIPSt4pairIN4llvm6APSIntEPN5clang16EnumConstantDeclEEPFbRKS6_S9_EEvT_SC_T0_", + // "void std::__inplace_stable_sort*, bool (*)(std::pair const&, std::pair const&)>(std::pair*, std::pair*, bool (*)(std::pair const&, std::pair const&))"}, + // got error + + + // {"_ZSt22__stable_sort_adaptiveIPSt4pairIN4llvm6APSIntEPN5clang16EnumConstantDeclEES7_lPFbRKS6_S9_EEvT_SC_T0_T1_T2_", + // "void std::__stable_sort_adaptive*, std::pair*, long, bool (*)(std::pair const&, std::pair const&)>(std::pair*, std::pair*, std::pair*, long, bool (*)(std::pair const&, std::pair const&))"}, + // got error + + + // {"_ZSt24__merge_sort_with_bufferIPSt4pairIN4llvm6APSIntEPN5clang16EnumConstantDeclEES7_PFbRKS6_S9_EEvT_SC_T0_T1_", + // "void std::__merge_sort_with_buffer*, std::pair*, bool (*)(std::pair const&, std::pair const&)>(std::pair*, std::pair*, std::pair*, bool (*)(std::pair const&, std::pair const&))"}, + // got error + + + // {"_ZSt16__merge_adaptiveIPSt4pairIN4llvm6APSIntEPN5clang16EnumConstantDeclEElS7_PFbRKS6_S9_EEvT_SC_SC_T0_SD_T1_SD_T2_", + // "void std::__merge_adaptive*, long, std::pair*, bool (*)(std::pair const&, std::pair const&)>(std::pair*, std::pair*, std::pair*, long, long, std::pair*, long, bool (*)(std::pair const&, std::pair const&))"}, + // got error + + + // {"_ZSt5mergeIPSt4pairIN4llvm6APSIntEPN5clang16EnumConstantDeclEES7_S7_PFbRKS6_S9_EET1_T_SD_T0_SE_SC_T2_", + // "std::pair* std::merge*, std::pair*, std::pair*, bool (*)(std::pair const&, std::pair const&)>(std::pair*, std::pair*, std::pair*, std::pair*, std::pair*, bool (*)(std::pair const&, std::pair const&))"}, + // got error + + + // {"_ZSt16__merge_backwardIPSt4pairIN4llvm6APSIntEPN5clang16EnumConstantDeclEES7_S7_PFbRKS6_S9_EET1_T_SD_T0_SE_SC_T2_", + // "std::pair* std::__merge_backward*, std::pair*, std::pair*, bool (*)(std::pair const&, std::pair const&)>(std::pair*, std::pair*, std::pair*, std::pair*, std::pair*, bool (*)(std::pair const&, std::pair const&))"}, + // got error + + + // {"_ZSt17__rotate_adaptiveIPSt4pairIN4llvm6APSIntEPN5clang16EnumConstantDeclEES7_lET_S8_S8_S8_T1_S9_T0_S9_", + // "std::pair* std::__rotate_adaptive*, std::pair*, long>(std::pair*, std::pair*, std::pair*, long, long, std::pair*, long)"}, + // got error + + + // {"_ZSt8__rotateIPSt4pairIN4llvm6APSIntEPN5clang16EnumConstantDeclEEEvT_S8_S8_St26random_access_iterator_tag", + // "void std::__rotate*>(std::pair*, std::pair*, std::pair*, std::random_access_iterator_tag)"}, + // got error + + + // {"_ZSt4swapISt4pairIN4llvm6APSIntEPN5clang16EnumConstantDeclEEEvRT_S8_", + // "void std::swap>(std::pair&, std::pair&)"}, + // got error + + + // {"_ZNSt15__copy_backwardILb0ESt26random_access_iterator_tagE8__copy_bIPSt4pairIN4llvm6APSIntEPN5clang16EnumConstantDeclEESA_EET0_T_SC_SB_", + // "std::pair* std::__copy_backward::__copy_b*, std::pair*>(std::pair*, std::pair*, std::pair*)"}, + // got error + + + // {"_ZNSt6__copyILb0ESt26random_access_iterator_tagE4copyIPSt4pairIN4llvm6APSIntEPN5clang16EnumConstantDeclEESA_EET0_T_SC_SB_", + // "std::pair* std::__copy::copy*, std::pair*>(std::pair*, std::pair*, std::pair*)"}, + // got error + + + // {"_ZSt16__insertion_sortIPSt4pairIN4llvm6APSIntEPN5clang16EnumConstantDeclEEPFbRKS6_S9_EEvT_SC_T0_", + // "void std::__insertion_sort*, bool (*)(std::pair const&, std::pair const&)>(std::pair*, std::pair*, bool (*)(std::pair const&, std::pair const&))"}, + // got error + + + // {"_ZSt25__unguarded_linear_insertIPSt4pairIN4llvm6APSIntEPN5clang16EnumConstantDeclEES6_PFbRKS6_S9_EEvT_T0_T1_", + // "void std::__unguarded_linear_insert*, std::pair, bool (*)(std::pair const&, std::pair const&)>(std::pair*, std::pair, bool (*)(std::pair const&, std::pair const&))"}, + // got error + + + // {"_ZSt22__merge_without_bufferIPSt4pairIN4llvm6APSIntEPN5clang16EnumConstantDeclEElPFbRKS6_S9_EEvT_SC_SC_T0_SD_T1_", + // "void std::__merge_without_buffer*, long, bool (*)(std::pair const&, std::pair const&)>(std::pair*, std::pair*, std::pair*, long, long, bool (*)(std::pair const&, std::pair const&))"}, + // got error + + {"_ZNSt17_Temporary_bufferIPSt4pairIN4llvm6APSIntEPN5clang16EnumConstantDeclEES6_EC2ES7_S7_", "std::_Temporary_buffer*, std::pair>::_Temporary_buffer(std::pair*, std::pair*)"}, + {"_ZN4llvm23SmallVectorTemplateBaseISt4pairINS_6APSIntEPN5clang16EnumConstantDeclEELb0EE4growEm", "llvm::SmallVectorTemplateBase, false>::grow(unsigned long)"}, + {"_ZNSt6vectorIN4llvm6APSIntESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::APSInt const&)"}, + + // {"_ZNSt15__copy_backwardILb0ESt26random_access_iterator_tagE8__copy_bIPN4llvm6APSIntES5_EET0_T_S7_S6_", + // "llvm::APSInt* std::__copy_backward::__copy_b(llvm::APSInt*, llvm::APSInt*, llvm::APSInt*)"}, + // got error + + + // {"_ZNSt6__copyILb0ESt26random_access_iterator_tagE4copyIPSt4pairIN4llvm6APSIntEPN5clang8CaseStmtEESA_EET0_T_SC_SB_", + // "std::pair* std::__copy::copy*, std::pair*>(std::pair*, std::pair*, std::pair*)"}, + // got error + + + // {"_ZSt21__inplace_stable_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4llvm6APSIntEPN5clang8CaseStmtEESt6vectorIS8_SaIS8_EEEEEvT_SE_", + // "void std::__inplace_stable_sort<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>)"}, + // got error + + + // {"_ZSt22__stable_sort_adaptiveIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4llvm6APSIntEPN5clang8CaseStmtEESt6vectorIS8_SaIS8_EEEES9_lEvT_SE_T0_T1_", + // "void std::__stable_sort_adaptive<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair*, long>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair*, long)"}, + // got error + + + // {"_ZSt24__merge_sort_with_bufferIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4llvm6APSIntEPN5clang8CaseStmtEESt6vectorIS8_SaIS8_EEEES9_EvT_SE_T0_", + // "void std::__merge_sort_with_buffer<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair*>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair*)"}, + // got error + + + // {"_ZSt16__merge_adaptiveIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4llvm6APSIntEPN5clang8CaseStmtEESt6vectorIS8_SaIS8_EEEElS9_EvT_SE_SE_T0_SF_T1_SF_", + // "void std::__merge_adaptive<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long, std::pair*>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long, long, std::pair*, long)"}, + // got error + + + // {"_ZSt5mergeIPSt4pairIN4llvm6APSIntEPN5clang8CaseStmtEEN9__gnu_cxx17__normal_iteratorIS7_St6vectorIS6_SaIS6_EEEESD_ET1_T_SF_T0_SG_SE_", + // "__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>> std::merge*, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>>(std::pair*, std::pair*, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>)"}, + // got error + + + // {"_ZSt16__merge_backwardIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4llvm6APSIntEPN5clang8CaseStmtEESt6vectorIS8_SaIS8_EEEES9_SD_ET1_T_SF_T0_SG_SE_", + // "__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>> std::__merge_backward<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair*, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair*, std::pair*, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>)"}, + // got error + + + // {"_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4llvm6APSIntEPN5clang8CaseStmtEESt6vectorIS8_SaIS8_EEEES8_ET_SE_SE_RKT0_", + // "__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>> std::lower_bound<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + // got error + + + // {"_ZSt11upper_boundIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4llvm6APSIntEPN5clang8CaseStmtEESt6vectorIS8_SaIS8_EEEES8_ET_SE_SE_RKT0_", + // "__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>> std::upper_bound<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + // got error + + + // {"_ZSt17__rotate_adaptiveIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4llvm6APSIntEPN5clang8CaseStmtEESt6vectorIS8_SaIS8_EEEES9_lET_SE_SE_SE_T1_SF_T0_SF_", + // "__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>> std::__rotate_adaptive<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair*, long>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long, long, std::pair*, long)"}, + // got error + + + // {"_ZSt8__rotateIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4llvm6APSIntEPN5clang8CaseStmtEESt6vectorIS8_SaIS8_EEEEEvT_SE_SE_St26random_access_iterator_tag", + // "void std::__rotate<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::random_access_iterator_tag)"}, + // got error + + + // {"_ZSt4swapISt4pairIN4llvm6APSIntEPN5clang8CaseStmtEEEvRT_S8_", + // "void std::swap>(std::pair&, std::pair&)"}, + // got error + + + // {"_ZNSt15__copy_backwardILb0ESt26random_access_iterator_tagE8__copy_bIPSt4pairIN4llvm6APSIntEPN5clang8CaseStmtEESA_EET0_T_SC_SB_", + // "std::pair* std::__copy_backward::__copy_b*, std::pair*>(std::pair*, std::pair*, std::pair*)"}, + // got error + + + // {"_ZSt5mergeIPSt4pairIN4llvm6APSIntEPN5clang8CaseStmtEES7_N9__gnu_cxx17__normal_iteratorIS7_St6vectorIS6_SaIS6_EEEEET1_T_SF_T0_SG_SE_", + // "__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>> std::merge*, std::pair*, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>>(std::pair*, std::pair*, std::pair*, std::pair*, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>)"}, + // got error + + + // {"_ZSt5mergeIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4llvm6APSIntEPN5clang8CaseStmtEESt6vectorIS8_SaIS8_EEEESD_S9_ET1_T_SF_T0_SG_SE_", + // "std::pair* std::merge<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair*>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair*)"}, + // got error + + + // {"_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4llvm6APSIntEPN5clang8CaseStmtEESt6vectorIS8_SaIS8_EEEEEvT_SE_", + // "void std::__insertion_sort<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>)"}, + // got error + + + // {"_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4llvm6APSIntEPN5clang8CaseStmtEESt6vectorIS8_SaIS8_EEEES8_EvT_T0_", + // "void std::__unguarded_linear_insert<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair)"}, + // "void std::__unguarded_linear_insert<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair>(llvm::APSInt, clang::CaseStmt*)" was returned + + + // {"_ZSt22__merge_without_bufferIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4llvm6APSIntEPN5clang8CaseStmtEESt6vectorIS8_SaIS8_EEEElEvT_SE_SE_T0_SF_", + // "void std::__merge_without_buffer<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long, long)"}, + // got error + + {"_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4llvm6APSIntEPN5clang8CaseStmtEESt6vectorIS8_SaIS8_EEEES8_EC2ESD_SD_", "std::_Temporary_buffer<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair>::_Temporary_buffer(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>)"}, + + // {"_ZSt21__inplace_stable_sortIPSt4pairIN4llvm6APSIntEPN5clang8CaseStmtEEPFbRKS6_S9_EEvT_SC_T0_", + // "void std::__inplace_stable_sort*, bool (*)(std::pair const&, std::pair const&)>(std::pair*, std::pair*, bool (*)(std::pair const&, std::pair const&))"}, + // got error + + + // {"_ZSt22__stable_sort_adaptiveIPSt4pairIN4llvm6APSIntEPN5clang8CaseStmtEES7_lPFbRKS6_S9_EEvT_SC_T0_T1_T2_", + // "void std::__stable_sort_adaptive*, std::pair*, long, bool (*)(std::pair const&, std::pair const&)>(std::pair*, std::pair*, std::pair*, long, bool (*)(std::pair const&, std::pair const&))"}, + // got error + + + // {"_ZSt24__merge_sort_with_bufferIPSt4pairIN4llvm6APSIntEPN5clang8CaseStmtEES7_PFbRKS6_S9_EEvT_SC_T0_T1_", + // "void std::__merge_sort_with_buffer*, std::pair*, bool (*)(std::pair const&, std::pair const&)>(std::pair*, std::pair*, std::pair*, bool (*)(std::pair const&, std::pair const&))"}, + // got error + + + // {"_ZSt16__merge_adaptiveIPSt4pairIN4llvm6APSIntEPN5clang8CaseStmtEElS7_PFbRKS6_S9_EEvT_SC_SC_T0_SD_T1_SD_T2_", + // "void std::__merge_adaptive*, long, std::pair*, bool (*)(std::pair const&, std::pair const&)>(std::pair*, std::pair*, std::pair*, long, long, std::pair*, long, bool (*)(std::pair const&, std::pair const&))"}, + // got error + + + // {"_ZSt5mergeIPSt4pairIN4llvm6APSIntEPN5clang8CaseStmtEES7_S7_PFbRKS6_S9_EET1_T_SD_T0_SE_SC_T2_", + // "std::pair* std::merge*, std::pair*, std::pair*, bool (*)(std::pair const&, std::pair const&)>(std::pair*, std::pair*, std::pair*, std::pair*, std::pair*, bool (*)(std::pair const&, std::pair const&))"}, + // got error + + + // {"_ZSt16__merge_backwardIPSt4pairIN4llvm6APSIntEPN5clang8CaseStmtEES7_S7_PFbRKS6_S9_EET1_T_SD_T0_SE_SC_T2_", + // "std::pair* std::__merge_backward*, std::pair*, std::pair*, bool (*)(std::pair const&, std::pair const&)>(std::pair*, std::pair*, std::pair*, std::pair*, std::pair*, bool (*)(std::pair const&, std::pair const&))"}, + // got error + + + // {"_ZSt17__rotate_adaptiveIPSt4pairIN4llvm6APSIntEPN5clang8CaseStmtEES7_lET_S8_S8_S8_T1_S9_T0_S9_", + // "std::pair* std::__rotate_adaptive*, std::pair*, long>(std::pair*, std::pair*, std::pair*, long, long, std::pair*, long)"}, + // got error + + + // {"_ZSt8__rotateIPSt4pairIN4llvm6APSIntEPN5clang8CaseStmtEEEvT_S8_S8_St26random_access_iterator_tag", + // "void std::__rotate*>(std::pair*, std::pair*, std::pair*, std::random_access_iterator_tag)"}, + // got error + + + // {"_ZSt16__insertion_sortIPSt4pairIN4llvm6APSIntEPN5clang8CaseStmtEEPFbRKS6_S9_EEvT_SC_T0_", + // "void std::__insertion_sort*, bool (*)(std::pair const&, std::pair const&)>(std::pair*, std::pair*, bool (*)(std::pair const&, std::pair const&))"}, + // got error + + + // {"_ZSt25__unguarded_linear_insertIPSt4pairIN4llvm6APSIntEPN5clang8CaseStmtEES6_PFbRKS6_S9_EEvT_T0_T1_", + // "void std::__unguarded_linear_insert*, std::pair, bool (*)(std::pair const&, std::pair const&)>(std::pair*, std::pair, bool (*)(std::pair const&, std::pair const&))"}, + // got error + + + // {"_ZSt22__merge_without_bufferIPSt4pairIN4llvm6APSIntEPN5clang8CaseStmtEElPFbRKS6_S9_EEvT_SC_SC_T0_SD_T1_", + // "void std::__merge_without_buffer*, long, bool (*)(std::pair const&, std::pair const&)>(std::pair*, std::pair*, std::pair*, long, long, bool (*)(std::pair const&, std::pair const&))"}, + // got error + + {"_ZNSt17_Temporary_bufferIPSt4pairIN4llvm6APSIntEPN5clang8CaseStmtEES6_EC2ES7_S7_", "std::_Temporary_buffer*, std::pair>::_Temporary_buffer(std::pair*, std::pair*)"}, + {"_ZN4llvm23SmallVectorTemplateBaseISt4pairINS_6APSIntEPN5clang8CaseStmtEELb0EE4growEm", "llvm::SmallVectorTemplateBase, false>::grow(unsigned long)"}, + {"_ZNSt6vectorISt4pairIN4llvm6APSIntEPN5clang8CaseStmtEESaIS6_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS6_S8_EERKS6_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + {"_ZN4llvm15SmallVectorImplIN5clang10TargetInfo14ConstraintInfoEED2Ev", "llvm::SmallVectorImpl::~SmallVectorImpl()"}, + {"_ZN5clang22getTemplateParamsRangeEPKPKNS_21TemplateParameterListEj", "clang::getTemplateParamsRange(clang::TemplateParameterList const* const*, unsigned int)"}, + {"_ZN5clang4Sema14isTemplateNameEPNS_5ScopeERNS_12CXXScopeSpecEbRNS_13UnqualifiedIdENS_9OpaquePtrINS_8QualTypeEEEbRNS7_INS_12TemplateNameEEERb", "clang::Sema::isTemplateName(clang::Scope*, clang::CXXScopeSpec&, bool, clang::UnqualifiedId&, clang::OpaquePtr, bool, clang::OpaquePtr&, bool&)"}, + {"_ZN5clang4Sema18LookupTemplateNameERNS_12LookupResultEPNS_5ScopeERNS_12CXXScopeSpecENS_8QualTypeEbRb", "clang::Sema::LookupTemplateName(clang::LookupResult&, clang::Scope*, clang::CXXScopeSpec&, clang::QualType, bool, bool&)"}, + {"_ZN5clang4Sema27DiagnoseUnknownTemplateNameERKNS_14IdentifierInfoENS_14SourceLocationEPNS_5ScopeEPKNS_12CXXScopeSpecERNS_9OpaquePtrINS_12TemplateNameEEERNS_16TemplateNameKindE", "clang::Sema::DiagnoseUnknownTemplateName(clang::IdentifierInfo const&, clang::SourceLocation, clang::Scope*, clang::CXXScopeSpec const*, clang::OpaquePtr&, clang::TemplateNameKind&)"}, + {"_Z29FilterAcceptableTemplateNamesRN5clang10ASTContextERNS_12LookupResultE", "FilterAcceptableTemplateNames(clang::ASTContext&, clang::LookupResult&)"}, + {"_ZN5clang4Sema26ActOnDependentIdExpressionERKNS_12CXXScopeSpecERKNS_19DeclarationNameInfoEbPKNS_24TemplateArgumentListInfoE", "clang::Sema::ActOnDependentIdExpression(clang::CXXScopeSpec const&, clang::DeclarationNameInfo const&, bool, clang::TemplateArgumentListInfo const*)"}, + {"_ZN5clang4Sema25BuildDependentDeclRefExprERKNS_12CXXScopeSpecERKNS_19DeclarationNameInfoEPKNS_24TemplateArgumentListInfoE", "clang::Sema::BuildDependentDeclRefExpr(clang::CXXScopeSpec const&, clang::DeclarationNameInfo const&, clang::TemplateArgumentListInfo const*)"}, + {"_ZN5clang4Sema31DiagnoseTemplateParameterShadowENS_14SourceLocationEPNS_4DeclE", "clang::Sema::DiagnoseTemplateParameterShadow(clang::SourceLocation, clang::Decl*)"}, + {"_ZN5clang4Sema20AdjustDeclIfTemplateERPNS_4DeclE", "clang::Sema::AdjustDeclIfTemplate(clang::Decl*&)"}, + {"_ZNK5clang22ParsedTemplateArgument24getTemplatePackExpansionENS_14SourceLocationE", "clang::ParsedTemplateArgument::getTemplatePackExpansion(clang::SourceLocation) const"}, + {"_ZN5clang4Sema26translateTemplateArgumentsERKNS_18ASTTemplateArgsPtrERNS_24TemplateArgumentListInfoE", "clang::Sema::translateTemplateArguments(clang::ASTTemplateArgsPtr const&, clang::TemplateArgumentListInfo&)"}, + {"_Z25translateTemplateArgumentRN5clang4SemaERKNS_22ParsedTemplateArgumentE", "translateTemplateArgument(clang::Sema&, clang::ParsedTemplateArgument const&)"}, + {"_ZN5clang4Sema18ActOnTypeParameterEPNS_5ScopeEbbNS_14SourceLocationES3_PNS_14IdentifierInfoES3_jjS3_NS_9OpaquePtrINS_8QualTypeEEE", "clang::Sema::ActOnTypeParameter(clang::Scope*, bool, bool, clang::SourceLocation, clang::SourceLocation, clang::IdentifierInfo*, clang::SourceLocation, unsigned int, unsigned int, clang::SourceLocation, clang::OpaquePtr)"}, + {"_ZN5clang4Sema21CheckTemplateArgumentEPNS_20TemplateTypeParmDeclEPNS_14TypeSourceInfoE", "clang::Sema::CheckTemplateArgument(clang::TemplateTypeParmDecl*, clang::TypeSourceInfo*)"}, + {"_ZN5clang4Sema33CheckNonTypeTemplateParameterTypeENS_8QualTypeENS_14SourceLocationE", "clang::Sema::CheckNonTypeTemplateParameterType(clang::QualType, clang::SourceLocation)"}, + {"_ZN5clang4Sema29ActOnNonTypeTemplateParameterEPNS_5ScopeERNS_10DeclaratorEjjNS_14SourceLocationEPNS_4ExprE", "clang::Sema::ActOnNonTypeTemplateParameter(clang::Scope*, clang::Declarator&, unsigned int, unsigned int, clang::SourceLocation, clang::Expr*)"}, + {"_ZN5clang4Sema21CheckTemplateArgumentEPNS_23NonTypeTemplateParmDeclENS_8QualTypeERPNS_4ExprERNS_16TemplateArgumentENS0_25CheckTemplateArgumentKindE", "clang::Sema::CheckTemplateArgument(clang::NonTypeTemplateParmDecl*, clang::QualType, clang::Expr*&, clang::TemplateArgument&, clang::Sema::CheckTemplateArgumentKind)"}, + {"_ZN5clang4Sema30ActOnTemplateTemplateParameterEPNS_5ScopeENS_14SourceLocationEPNS_21TemplateParameterListES3_PNS_14IdentifierInfoES3_jjS3_NS_22ParsedTemplateArgumentE", "clang::Sema::ActOnTemplateTemplateParameter(clang::Scope*, clang::SourceLocation, clang::TemplateParameterList*, clang::SourceLocation, clang::IdentifierInfo*, clang::SourceLocation, unsigned int, unsigned int, clang::SourceLocation, clang::ParsedTemplateArgument)"}, + {"_ZN5clang4Sema26ActOnTemplateParameterListEjNS_14SourceLocationES1_S1_PPNS_4DeclEjS1_", "clang::Sema::ActOnTemplateParameterList(unsigned int, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::Decl**, unsigned int, clang::SourceLocation)"}, + {"_ZN5clang4Sema18CheckClassTemplateEPNS_5ScopeEjNS0_10TagUseKindENS_14SourceLocationERNS_12CXXScopeSpecEPNS_14IdentifierInfoES4_PNS_13AttributeListEPNS_21TemplateParameterListENS_15AccessSpecifierE", "clang::Sema::CheckClassTemplate(clang::Scope*, unsigned int, clang::Sema::TagUseKind, clang::SourceLocation, clang::CXXScopeSpec&, clang::IdentifierInfo*, clang::SourceLocation, clang::AttributeList*, clang::TemplateParameterList*, clang::AccessSpecifier)"}, + {"_ZN5clang4Sema22CheckTemplateDeclScopeEPNS_5ScopeEPNS_21TemplateParameterListE", "clang::Sema::CheckTemplateDeclScope(clang::Scope*, clang::TemplateParameterList*)"}, + {"_ZN5clang4Sema30TemplateParameterListsAreEqualEPNS_21TemplateParameterListES2_bNS0_30TemplateParameterListEqualKindENS_14SourceLocationE", "clang::Sema::TemplateParameterListsAreEqual(clang::TemplateParameterList*, clang::TemplateParameterList*, bool, clang::Sema::TemplateParameterListEqualKind, clang::SourceLocation)"}, + {"_ZN5clang4Sema26CheckTemplateParameterListEPNS_21TemplateParameterListES2_NS0_24TemplateParamListContextE", "clang::Sema::CheckTemplateParameterList(clang::TemplateParameterList*, clang::TemplateParameterList*, clang::Sema::TemplateParamListContext)"}, + {"_Z32DiagnoseUnexpandedParameterPacksRN5clang4SemaEPNS_24TemplateTemplateParmDeclE", "DiagnoseUnexpandedParameterPacks(clang::Sema&, clang::TemplateTemplateParmDecl*)"}, + {"_Z31DiagnoseDefaultTemplateArgumentRN5clang4SemaENS0_24TemplateParamListContextENS_14SourceLocationENS_11SourceRangeE", "DiagnoseDefaultTemplateArgument(clang::Sema&, clang::Sema::TemplateParamListContext, clang::SourceLocation, clang::SourceRange)"}, + {"_ZN5clang4Sema39MatchTemplateParametersToScopeSpecifierENS_14SourceLocationERKNS_12CXXScopeSpecEPPNS_21TemplateParameterListEjbRbS8_", "clang::Sema::MatchTemplateParametersToScopeSpecifier(clang::SourceLocation, clang::CXXScopeSpec const&, clang::TemplateParameterList**, unsigned int, bool, bool&, bool&)"}, + {"_ZN5clang4Sema19CheckTemplateIdTypeENS_12TemplateNameENS_14SourceLocationERKNS_24TemplateArgumentListInfoE", "clang::Sema::CheckTemplateIdType(clang::TemplateName, clang::SourceLocation, clang::TemplateArgumentListInfo const&)"}, + {"_ZN5clang4Sema25CheckTemplateArgumentListEPNS_12TemplateDeclENS_14SourceLocationERKNS_24TemplateArgumentListInfoEbRN4llvm15SmallVectorImplINS_16TemplateArgumentEEE", "clang::Sema::CheckTemplateArgumentList(clang::TemplateDecl*, clang::SourceLocation, clang::TemplateArgumentListInfo const&, bool, llvm::SmallVectorImpl&)"}, + {"_ZN5clang4Sema19ActOnTemplateIdTypeENS_9OpaquePtrINS_12TemplateNameEEENS_14SourceLocationES4_NS_18ASTTemplateArgsPtrES4_", "clang::Sema::ActOnTemplateIdType(clang::OpaquePtr, clang::SourceLocation, clang::SourceLocation, clang::ASTTemplateArgsPtr, clang::SourceLocation)"}, + {"_ZN5clang4Sema22ActOnTagTemplateIdTypeERNS_12CXXScopeSpecENS_12ActionResultINS_9OpaquePtrINS_8QualTypeEEELb0EEENS0_10TagUseKindENS_17TypeSpecifierTypeENS_14SourceLocationE", "clang::Sema::ActOnTagTemplateIdType(clang::CXXScopeSpec&, clang::ActionResult, false>, clang::Sema::TagUseKind, clang::TypeSpecifierType, clang::SourceLocation)"}, + {"_ZN5clang4Sema19BuildTemplateIdExprERKNS_12CXXScopeSpecERNS_12LookupResultEbRKNS_24TemplateArgumentListInfoE", "clang::Sema::BuildTemplateIdExpr(clang::CXXScopeSpec const&, clang::LookupResult&, bool, clang::TemplateArgumentListInfo const&)"}, + {"_ZN5clang4Sema28BuildQualifiedTemplateIdExprERNS_12CXXScopeSpecERKNS_19DeclarationNameInfoERKNS_24TemplateArgumentListInfoE", "clang::Sema::BuildQualifiedTemplateIdExpr(clang::CXXScopeSpec&, clang::DeclarationNameInfo const&, clang::TemplateArgumentListInfo const&)"}, + {"_ZN5clang4Sema26ActOnDependentTemplateNameEPNS_5ScopeENS_14SourceLocationERNS_12CXXScopeSpecERNS_13UnqualifiedIdENS_9OpaquePtrINS_8QualTypeEEEbRNS8_INS_12TemplateNameEEE", "clang::Sema::ActOnDependentTemplateName(clang::Scope*, clang::SourceLocation, clang::CXXScopeSpec&, clang::UnqualifiedId&, clang::OpaquePtr, bool, clang::OpaquePtr&)"}, + {"_ZN5clang4Sema25CheckTemplateTypeArgumentEPNS_20TemplateTypeParmDeclERKNS_19TemplateArgumentLocERN4llvm15SmallVectorImplINS_16TemplateArgumentEEE", "clang::Sema::CheckTemplateTypeArgument(clang::TemplateTypeParmDecl*, clang::TemplateArgumentLoc const&, llvm::SmallVectorImpl&)"}, + {"_ZN5clang4Sema39SubstDefaultTemplateArgumentIfAvailableEPNS_12TemplateDeclENS_14SourceLocationES3_PNS_4DeclERN4llvm15SmallVectorImplINS_16TemplateArgumentEEE", "clang::Sema::SubstDefaultTemplateArgumentIfAvailable(clang::TemplateDecl*, clang::SourceLocation, clang::SourceLocation, clang::Decl*, llvm::SmallVectorImpl&)"}, + {"_Z28SubstDefaultTemplateArgumentRN5clang4SemaEPNS_12TemplateDeclENS_14SourceLocationES4_PNS_20TemplateTypeParmDeclERN4llvm15SmallVectorImplINS_16TemplateArgumentEEE", "SubstDefaultTemplateArgument(clang::Sema&, clang::TemplateDecl*, clang::SourceLocation, clang::SourceLocation, clang::TemplateTypeParmDecl*, llvm::SmallVectorImpl&)"}, + {"_Z28SubstDefaultTemplateArgumentRN5clang4SemaEPNS_12TemplateDeclENS_14SourceLocationES4_PNS_23NonTypeTemplateParmDeclERN4llvm15SmallVectorImplINS_16TemplateArgumentEEE", "SubstDefaultTemplateArgument(clang::Sema&, clang::TemplateDecl*, clang::SourceLocation, clang::SourceLocation, clang::NonTypeTemplateParmDecl*, llvm::SmallVectorImpl&)"}, + {"_Z28SubstDefaultTemplateArgumentRN5clang4SemaEPNS_12TemplateDeclENS_14SourceLocationES4_PNS_24TemplateTemplateParmDeclERN4llvm15SmallVectorImplINS_16TemplateArgumentEEE", "SubstDefaultTemplateArgument(clang::Sema&, clang::TemplateDecl*, clang::SourceLocation, clang::SourceLocation, clang::TemplateTemplateParmDecl*, llvm::SmallVectorImpl&)"}, + {"_ZN5clang4Sema21CheckTemplateArgumentEPNS_9NamedDeclERKNS_19TemplateArgumentLocES2_NS_14SourceLocationES6_jRN4llvm15SmallVectorImplINS_16TemplateArgumentEEENS0_25CheckTemplateArgumentKindE", "clang::Sema::CheckTemplateArgument(clang::NamedDecl*, clang::TemplateArgumentLoc const&, clang::NamedDecl*, clang::SourceLocation, clang::SourceLocation, unsigned int, llvm::SmallVectorImpl&, clang::Sema::CheckTemplateArgumentKind)"}, + {"_ZN5clang4Sema21CheckTemplateArgumentEPNS_24TemplateTemplateParmDeclERKNS_19TemplateArgumentLocE", "clang::Sema::CheckTemplateArgument(clang::TemplateTemplateParmDecl*, clang::TemplateArgumentLoc const&)"}, + {"_ZN5clang4Sema36CheckTemplateArgumentPointerToMemberEPNS_4ExprERNS_16TemplateArgumentE", "clang::Sema::CheckTemplateArgumentPointerToMember(clang::Expr*, clang::TemplateArgument&)"}, + {"_Z46CheckTemplateArgumentAddressOfObjectOrFunctionRN5clang4SemaEPNS_23NonTypeTemplateParmDeclENS_8QualTypeEPNS_4ExprERNS_16TemplateArgumentE", "CheckTemplateArgumentAddressOfObjectOrFunction(clang::Sema&, clang::NonTypeTemplateParmDecl*, clang::QualType, clang::Expr*, clang::TemplateArgument&)"}, + {"_ZN5clang4Sema39BuildExpressionFromDeclTemplateArgumentERKNS_16TemplateArgumentENS_8QualTypeENS_14SourceLocationE", "clang::Sema::BuildExpressionFromDeclTemplateArgument(clang::TemplateArgument const&, clang::QualType, clang::SourceLocation)"}, + {"_ZN5clang4Sema43BuildExpressionFromIntegralTemplateArgumentERKNS_16TemplateArgumentENS_14SourceLocationE", "clang::Sema::BuildExpressionFromIntegralTemplateArgument(clang::TemplateArgument const&, clang::SourceLocation)"}, + {"_Z42DiagnoseTemplateParameterListArityMismatchRN5clang4SemaEPNS_21TemplateParameterListES3_NS0_30TemplateParameterListEqualKindENS_14SourceLocationE", "DiagnoseTemplateParameterListArityMismatch(clang::Sema&, clang::TemplateParameterList*, clang::TemplateParameterList*, clang::Sema::TemplateParameterListEqualKind, clang::SourceLocation)"}, + {"_Z26MatchTemplateParameterKindRN5clang4SemaEPNS_9NamedDeclES3_bNS0_30TemplateParameterListEqualKindENS_14SourceLocationE", "MatchTemplateParameterKind(clang::Sema&, clang::NamedDecl*, clang::NamedDecl*, bool, clang::Sema::TemplateParameterListEqualKind, clang::SourceLocation)"}, + {"_ZN5clang4Sema32ActOnClassTemplateSpecializationEPNS_5ScopeEjNS0_10TagUseKindENS_14SourceLocationERNS_12CXXScopeSpecENS_9OpaquePtrINS_12TemplateNameEEES4_S4_NS_18ASTTemplateArgsPtrES4_PNS_13AttributeListENS_11ASTMultiPtrIPNS_21TemplateParameterListEEE", "clang::Sema::ActOnClassTemplateSpecialization(clang::Scope*, unsigned int, clang::Sema::TagUseKind, clang::SourceLocation, clang::CXXScopeSpec&, clang::OpaquePtr, clang::SourceLocation, clang::SourceLocation, clang::ASTTemplateArgsPtr, clang::SourceLocation, clang::AttributeList*, clang::ASTMultiPtr)"}, + {"_Z32CheckTemplateSpecializationScopeRN5clang4SemaEPNS_9NamedDeclES3_NS_14SourceLocationEb", "CheckTemplateSpecializationScope(clang::Sema&, clang::NamedDecl*, clang::NamedDecl*, clang::SourceLocation, bool)"}, + {"_Z15getPreviousDeclPN5clang9NamedDeclE", "getPreviousDecl(clang::NamedDecl*)"}, + {"_ZN5clang4Sema23ActOnTemplateDeclaratorEPNS_5ScopeENS_11ASTMultiPtrIPNS_21TemplateParameterListEEERNS_10DeclaratorE", "clang::Sema::ActOnTemplateDeclarator(clang::Scope*, clang::ASTMultiPtr, clang::Declarator&)"}, + {"_ZN5clang4Sema31ActOnStartOfFunctionTemplateDefEPNS_5ScopeENS_11ASTMultiPtrIPNS_21TemplateParameterListEEERNS_10DeclaratorE", "clang::Sema::ActOnStartOfFunctionTemplateDef(clang::Scope*, clang::ASTMultiPtr, clang::Declarator&)"}, + {"_ZN5clang4Sema38CheckSpecializationInstantiationRedeclENS_14SourceLocationENS_26TemplateSpecializationKindEPNS_9NamedDeclES2_S1_Rb", "clang::Sema::CheckSpecializationInstantiationRedecl(clang::SourceLocation, clang::TemplateSpecializationKind, clang::NamedDecl*, clang::TemplateSpecializationKind, clang::SourceLocation, bool&)"}, + {"_ZN5clang4Sema44CheckDependentFunctionTemplateSpecializationEPNS_12FunctionDeclERKNS_24TemplateArgumentListInfoERNS_12LookupResultE", "clang::Sema::CheckDependentFunctionTemplateSpecialization(clang::FunctionDecl*, clang::TemplateArgumentListInfo const&, clang::LookupResult&)"}, + {"_ZN5clang4Sema35CheckFunctionTemplateSpecializationEPNS_12FunctionDeclEPKNS_24TemplateArgumentListInfoERNS_12LookupResultE", "clang::Sema::CheckFunctionTemplateSpecialization(clang::FunctionDecl*, clang::TemplateArgumentListInfo const*, clang::LookupResult&)"}, + {"_ZN5clang4Sema25CheckMemberSpecializationEPNS_9NamedDeclERNS_12LookupResultE", "clang::Sema::CheckMemberSpecialization(clang::NamedDecl*, clang::LookupResult&)"}, + {"_ZN5clang4Sema26ActOnExplicitInstantiationEPNS_5ScopeENS_14SourceLocationES3_jS3_RKNS_12CXXScopeSpecENS_9OpaquePtrINS_12TemplateNameEEES3_S3_NS_18ASTTemplateArgsPtrES3_PNS_13AttributeListE", "clang::Sema::ActOnExplicitInstantiation(clang::Scope*, clang::SourceLocation, clang::SourceLocation, unsigned int, clang::SourceLocation, clang::CXXScopeSpec const&, clang::OpaquePtr, clang::SourceLocation, clang::SourceLocation, clang::ASTTemplateArgsPtr, clang::SourceLocation, clang::AttributeList*)"}, + {"_Z31CheckExplicitInstantiationScopeRN5clang4SemaEPNS_9NamedDeclENS_14SourceLocationEb", "CheckExplicitInstantiationScope(clang::Sema&, clang::NamedDecl*, clang::SourceLocation, bool)"}, + {"_ZN5clang4Sema26ActOnExplicitInstantiationEPNS_5ScopeENS_14SourceLocationES3_jS3_RNS_12CXXScopeSpecEPNS_14IdentifierInfoES3_PNS_13AttributeListE", "clang::Sema::ActOnExplicitInstantiation(clang::Scope*, clang::SourceLocation, clang::SourceLocation, unsigned int, clang::SourceLocation, clang::CXXScopeSpec&, clang::IdentifierInfo*, clang::SourceLocation, clang::AttributeList*)"}, + {"_ZN5clang4Sema26ActOnExplicitInstantiationEPNS_5ScopeENS_14SourceLocationES3_RNS_10DeclaratorE", "clang::Sema::ActOnExplicitInstantiation(clang::Scope*, clang::SourceLocation, clang::SourceLocation, clang::Declarator&)"}, + {"_ZN5clang4Sema17ActOnDependentTagEPNS_5ScopeEjNS0_10TagUseKindERKNS_12CXXScopeSpecEPNS_14IdentifierInfoENS_14SourceLocationES9_", "clang::Sema::ActOnDependentTag(clang::Scope*, unsigned int, clang::Sema::TagUseKind, clang::CXXScopeSpec const&, clang::IdentifierInfo*, clang::SourceLocation, clang::SourceLocation)"}, + {"_ZN5clang4Sema17ActOnTypenameTypeEPNS_5ScopeENS_14SourceLocationERKNS_12CXXScopeSpecERKNS_14IdentifierInfoES3_", "clang::Sema::ActOnTypenameType(clang::Scope*, clang::SourceLocation, clang::CXXScopeSpec const&, clang::IdentifierInfo const&, clang::SourceLocation)"}, + {"_ZN5clang4Sema17CheckTypenameTypeENS_21ElaboratedTypeKeywordEPNS_19NestedNameSpecifierERKNS_14IdentifierInfoENS_14SourceLocationENS_11SourceRangeES7_", "clang::Sema::CheckTypenameType(clang::ElaboratedTypeKeyword, clang::NestedNameSpecifier*, clang::IdentifierInfo const&, clang::SourceLocation, clang::SourceRange, clang::SourceLocation)"}, + {"_ZN5clang4Sema17ActOnTypenameTypeEPNS_5ScopeENS_14SourceLocationERKNS_12CXXScopeSpecES3_NS_9OpaquePtrINS_8QualTypeEEE", "clang::Sema::ActOnTypenameType(clang::Scope*, clang::SourceLocation, clang::CXXScopeSpec const&, clang::SourceLocation, clang::OpaquePtr)"}, + {"_ZN5clang4Sema33RebuildTypeInCurrentInstantiationEPNS_14TypeSourceInfoENS_14SourceLocationENS_15DeclarationNameE", "clang::Sema::RebuildTypeInCurrentInstantiation(clang::TypeSourceInfo*, clang::SourceLocation, clang::DeclarationName)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_129CurrentInstantiationRebuilderEE13TransformTypeEPNS_14TypeSourceInfoE", "clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::TransformType(clang::TypeSourceInfo*)"}, + {"_ZN5clang4Sema33RebuildExprInCurrentInstantiationEPNS_4ExprE", "clang::Sema::RebuildExprInCurrentInstantiation(clang::Expr*)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_129CurrentInstantiationRebuilderEE13TransformExprEPNS_4ExprE", "clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::TransformExpr(clang::Expr*)"}, + {"_ZN5clang4Sema48RebuildNestedNameSpecifierInCurrentInstantiationERNS_12CXXScopeSpecE", "clang::Sema::RebuildNestedNameSpecifierInCurrentInstantiation(clang::CXXScopeSpec&)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_129CurrentInstantiationRebuilderEE28TransformNestedNameSpecifierEPNS_19NestedNameSpecifierENS_11SourceRangeENS_8QualTypeEPNS_9NamedDeclE", "clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::TransformNestedNameSpecifier(clang::NestedNameSpecifier*, clang::SourceRange, clang::QualType, clang::NamedDecl*)"}, + {"_ZN5clang4Sema31getTemplateArgumentBindingsTextEPKNS_21TemplateParameterListERKNS_20TemplateArgumentListE", "clang::Sema::getTemplateArgumentBindingsText(clang::TemplateParameterList const*, clang::TemplateArgumentList const&)"}, + {"_ZN5clang4Sema31getTemplateArgumentBindingsTextEPKNS_21TemplateParameterListEPKNS_16TemplateArgumentEj", "clang::Sema::getTemplateArgumentBindingsText(clang::TemplateParameterList const*, clang::TemplateArgument const*, unsigned int)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_129CurrentInstantiationRebuilderEE26TransformTypeInObjectScopeEPNS_14TypeSourceInfoENS_8QualTypeEPNS_9NamedDeclEPNS_19NestedNameSpecifierE", "clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::TransformTypeInObjectScope(clang::TypeSourceInfo*, clang::QualType, clang::NamedDecl*, clang::NestedNameSpecifier*)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_129CurrentInstantiationRebuilderEE21TransformTemplateNameENS_12TemplateNameENS_8QualTypeEPNS_9NamedDeclE", "clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::TransformTemplateName(clang::TemplateName, clang::QualType, clang::NamedDecl*)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_129CurrentInstantiationRebuilderEE35TransformTemplateSpecializationTypeERNS_14TypeLocBuilderENS_29TemplateSpecializationTypeLocENS_12TemplateNameE", "clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::TransformTemplateSpecializationType(clang::TypeLocBuilder&, clang::TemplateSpecializationTypeLoc, clang::TemplateName)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_129CurrentInstantiationRebuilderEE44TransformDependentTemplateSpecializationTypeERNS_14TypeLocBuilderENS_38DependentTemplateSpecializationTypeLocEPNS_19NestedNameSpecifierE", "clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::TransformDependentTemplateSpecializationType(clang::TypeLocBuilder&, clang::DependentTemplateSpecializationTypeLoc, clang::NestedNameSpecifier*)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_129CurrentInstantiationRebuilderEE13TransformTypeERNS_14TypeLocBuilderENS_7TypeLocE", "clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::TransformType(clang::TypeLocBuilder&, clang::TypeLoc)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_129CurrentInstantiationRebuilderEE27TransformFunctionTypeParamsENS_14SourceLocationEPPNS_11ParmVarDeclEjPKNS_8QualTypeERN4llvm15SmallVectorImplIS8_EEPNSC_IS6_EE", "clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::TransformFunctionTypeParams(clang::SourceLocation, clang::ParmVarDecl**, unsigned int, clang::QualType const*, llvm::SmallVectorImpl&, llvm::SmallVectorImpl*)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_129CurrentInstantiationRebuilderEE26TransformFunctionTypeParamEPNS_11ParmVarDeclEN4llvm8OptionalIjEE", "clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::TransformFunctionTypeParam(clang::ParmVarDecl*, llvm::Optional)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_129CurrentInstantiationRebuilderEE16RebuildArrayTypeENS_8QualTypeENS_9ArrayType17ArraySizeModifierEPKN4llvm5APIntEPNS_4ExprEjNS_11SourceRangeE", "clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildArrayType(clang::QualType, clang::ArrayType::ArraySizeModifier, llvm::APInt const*, clang::Expr*, unsigned int, clang::SourceRange)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_129CurrentInstantiationRebuilderEE22TransformReferenceTypeERNS_14TypeLocBuilderENS_16ReferenceTypeLocE", "clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::TransformReferenceType(clang::TypeLocBuilder&, clang::ReferenceTypeLoc)"}, + + // {"_ZN5clang13TreeTransformIN12_GLOBAL__N_129CurrentInstantiationRebuilderEE26TransformTemplateArgumentsINS_33TemplateArgumentLocInventIteratorIS2_PKNS_16TemplateArgumentEEEEEbT_SA_RNS_24TemplateArgumentListInfoE", + // "bool clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::TransformTemplateArguments>(clang::TemplateArgumentLocInventIterator<(anonymous namespace)::CurrentInstantiationRebuilder, clang::TemplateArgument const*>, clang::TemplateArgumentLocInventIterator<(anonymous namespace)::CurrentInstantiationRebuilder, clang::TemplateArgument const*>, clang::TemplateArgumentListInfo&)"}, + // got error + + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_129CurrentInstantiationRebuilderEE25TransformTemplateArgumentERKNS_19TemplateArgumentLocERS4_", "clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::TransformTemplateArgument(clang::TemplateArgumentLoc const&, clang::TemplateArgumentLoc&)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_129CurrentInstantiationRebuilderEE20RebuildPackExpansionENS_19TemplateArgumentLocENS_14SourceLocationEN4llvm8OptionalIjEE", "clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::RebuildPackExpansion(clang::TemplateArgumentLoc, clang::SourceLocation, llvm::Optional)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_129CurrentInstantiationRebuilderEE25InventTemplateArgumentLocERKNS_16TemplateArgumentERNS_19TemplateArgumentLocE", "clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::InventTemplateArgumentLoc(clang::TemplateArgument const&, clang::TemplateArgumentLoc&)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_129CurrentInstantiationRebuilderEE23TransformBinaryOperatorEPNS_14BinaryOperatorE", "clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::TransformBinaryOperator(clang::BinaryOperator*)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_129CurrentInstantiationRebuilderEE17TransformCallExprEPNS_8CallExprE", "clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::TransformCallExpr(clang::CallExpr*)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_129CurrentInstantiationRebuilderEE21TransformCompoundStmtEPNS_12CompoundStmtEb", "clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::TransformCompoundStmt(clang::CompoundStmt*, bool)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_129CurrentInstantiationRebuilderEE13TransformStmtEPNS_4StmtE", "clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::TransformStmt(clang::Stmt*)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_129CurrentInstantiationRebuilderEE21TransformCXXCatchStmtEPNS_12CXXCatchStmtE", "clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::TransformCXXCatchStmt(clang::CXXCatchStmt*)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_129CurrentInstantiationRebuilderEE14TransformExprsEPPNS_4ExprEjbRN4llvm15SmallVectorImplIS5_EEPb", "clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::TransformExprs(clang::Expr**, unsigned int, bool, llvm::SmallVectorImpl&, bool*)"}, + + // {"_ZN5clang13TreeTransformIN12_GLOBAL__N_129CurrentInstantiationRebuilderEE26TransformTemplateArgumentsIPKNS_19TemplateArgumentLocEEEbT_S8_RNS_24TemplateArgumentListInfoE", + // "bool clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::TransformTemplateArguments(clang::TemplateArgumentLoc const*, clang::TemplateArgumentLoc const*, clang::TemplateArgumentListInfo&)"}, + // got error + + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_129CurrentInstantiationRebuilderEE28TransformDeclarationNameInfoERKNS_19DeclarationNameInfoE", "clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::TransformDeclarationNameInfo(clang::DeclarationNameInfo const&)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_129CurrentInstantiationRebuilderEE25TransformCXXNamedCastExprEPNS_16CXXNamedCastExprE", "clang::TreeTransform<(anonymous namespace)::CurrentInstantiationRebuilder>::TransformCXXNamedCastExpr(clang::CXXNamedCastExpr*)"}, + {"_Z50CheckNonTypeClassTemplatePartialSpecializationArgsRN5clang4SemaEPNS_23NonTypeTemplateParmDeclEPKNS_16TemplateArgumentEj", "CheckNonTypeClassTemplatePartialSpecializationArgs(clang::Sema&, clang::NonTypeTemplateParmDecl*, clang::TemplateArgument const*, unsigned int)"}, + {"_ZN5clang11TypeVisitorIN12_GLOBAL__N_127UnnamedLocalNoLinkageFinderEbE5VisitEPKNS_4TypeE", "clang::TypeVisitor<(anonymous namespace)::UnnamedLocalNoLinkageFinder, bool>::Visit(clang::Type const*)"}, + {"_ZN12_GLOBAL__N_127UnnamedLocalNoLinkageFinder24VisitNestedNameSpecifierEPN5clang19NestedNameSpecifierE", "(anonymous namespace)::UnnamedLocalNoLinkageFinder::VisitNestedNameSpecifier(clang::NestedNameSpecifier*)"}, + {"_ZN12_GLOBAL__N_127UnnamedLocalNoLinkageFinder12VisitTagDeclEPKN5clang7TagDeclE", "(anonymous namespace)::UnnamedLocalNoLinkageFinder::VisitTagDecl(clang::TagDecl const*)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_117DependencyCheckerEE12TraverseTypeENS_8QualTypeE", "clang::RecursiveASTVisitor<(anonymous namespace)::DependencyChecker>::TraverseType(clang::QualType)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_117DependencyCheckerEE27TraverseNestedNameSpecifierEPNS_19NestedNameSpecifierE", "clang::RecursiveASTVisitor<(anonymous namespace)::DependencyChecker>::TraverseNestedNameSpecifier(clang::NestedNameSpecifier*)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_117DependencyCheckerEE24TraverseTemplateArgumentERKNS_16TemplateArgumentE", "clang::RecursiveASTVisitor<(anonymous namespace)::DependencyChecker>::TraverseTemplateArgument(clang::TemplateArgument const&)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_117DependencyCheckerEE12TraverseStmtEPNS_4StmtE", "clang::RecursiveASTVisitor<(anonymous namespace)::DependencyChecker>::TraverseStmt(clang::Stmt*)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_117DependencyCheckerEE15TraverseTypeLocENS_7TypeLocE", "clang::RecursiveASTVisitor<(anonymous namespace)::DependencyChecker>::TraverseTypeLoc(clang::TypeLoc)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_117DependencyCheckerEE27TraverseTemplateArgumentLocERKNS_19TemplateArgumentLocE", "clang::RecursiveASTVisitor<(anonymous namespace)::DependencyChecker>::TraverseTemplateArgumentLoc(clang::TemplateArgumentLoc const&)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_117DependencyCheckerEE12TraverseDeclEPNS_4DeclE", "clang::RecursiveASTVisitor<(anonymous namespace)::DependencyChecker>::TraverseDecl(clang::Decl*)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_117DependencyCheckerEE24TraverseDeclaratorHelperEPNS_14DeclaratorDeclE", "clang::RecursiveASTVisitor<(anonymous namespace)::DependencyChecker>::TraverseDeclaratorHelper(clang::DeclaratorDecl*)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_117DependencyCheckerEE22TraverseFunctionHelperEPNS_12FunctionDeclE", "clang::RecursiveASTVisitor<(anonymous namespace)::DependencyChecker>::TraverseFunctionHelper(clang::FunctionDecl*)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_117DependencyCheckerEE23TraverseCXXRecordHelperEPNS_13CXXRecordDeclE", "clang::RecursiveASTVisitor<(anonymous namespace)::DependencyChecker>::TraverseCXXRecordHelper(clang::CXXRecordDecl*)"}, + {"_ZN4llvm15SmallVectorImplIN5clang19TemplateArgumentLocEEaSERKS3_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + + // {"_ZSt24__uninitialized_copy_auxIPKN5clang19TemplateArgumentLocEPS1_ET0_T_S6_S5_St12__false_type", + // "clang::TemplateArgumentLoc* std::__uninitialized_copy_aux(clang::TemplateArgumentLoc const*, clang::TemplateArgumentLoc const*, clang::TemplateArgumentLoc*, std::__false_type)"}, + // got error + + {"_ZN5clang4Sema23DeduceTemplateArgumentsEPNS_38ClassTemplatePartialSpecializationDeclERKNS_20TemplateArgumentListERNS_4sema21TemplateDeductionInfoE", "clang::Sema::DeduceTemplateArguments(clang::ClassTemplatePartialSpecializationDecl*, clang::TemplateArgumentList const&, clang::sema::TemplateDeductionInfo&)"}, + {"_Z31FinishTemplateArgumentDeductionRN5clang4SemaEPNS_38ClassTemplatePartialSpecializationDeclERKNS_20TemplateArgumentListERN4llvm15SmallVectorImplINS_23DeducedTemplateArgumentEEERNS_4sema21TemplateDeductionInfoE", "FinishTemplateArgumentDeduction(clang::Sema&, clang::ClassTemplatePartialSpecializationDecl*, clang::TemplateArgumentList const&, llvm::SmallVectorImpl&, clang::sema::TemplateDeductionInfo&)"}, + {"_ZN5clang4Sema35SubstituteExplicitTemplateArgumentsEPNS_20FunctionTemplateDeclERKNS_24TemplateArgumentListInfoERN4llvm15SmallVectorImplINS_23DeducedTemplateArgumentEEERNS7_INS_8QualTypeEEEPSB_RNS_4sema21TemplateDeductionInfoE", "clang::Sema::SubstituteExplicitTemplateArguments(clang::FunctionTemplateDecl*, clang::TemplateArgumentListInfo const&, llvm::SmallVectorImpl&, llvm::SmallVectorImpl&, clang::QualType*, clang::sema::TemplateDeductionInfo&)"}, + {"_ZN5clang4Sema31FinishTemplateArgumentDeductionEPNS_20FunctionTemplateDeclERN4llvm15SmallVectorImplINS_23DeducedTemplateArgumentEEEjRPNS_12FunctionDeclERNS_4sema21TemplateDeductionInfoE", "clang::Sema::FinishTemplateArgumentDeduction(clang::FunctionTemplateDecl*, llvm::SmallVectorImpl&, unsigned int, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&)"}, + {"_Z30ConvertDeducedTemplateArgumentRN5clang4SemaEPNS_9NamedDeclENS_23DeducedTemplateArgumentES3_NS_8QualTypeEjRNS_4sema21TemplateDeductionInfoEbRN4llvm15SmallVectorImplINS_16TemplateArgumentEEE", "ConvertDeducedTemplateArgument(clang::Sema&, clang::NamedDecl*, clang::DeducedTemplateArgument, clang::NamedDecl*, clang::QualType, unsigned int, clang::sema::TemplateDeductionInfo&, bool, llvm::SmallVectorImpl&)"}, + {"_ZN5clang4Sema23DeduceTemplateArgumentsEPNS_20FunctionTemplateDeclEPKNS_24TemplateArgumentListInfoEPPNS_4ExprEjRPNS_12FunctionDeclERNS_4sema21TemplateDeductionInfoE", "clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl*, clang::TemplateArgumentListInfo const*, clang::Expr**, unsigned int, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&)"}, + {"_Z41AdjustFunctionParmAndArgTypesForDeductionRN5clang4SemaEPNS_21TemplateParameterListERNS_8QualTypeES5_PNS_4ExprERj", "AdjustFunctionParmAndArgTypesForDeduction(clang::Sema&, clang::TemplateParameterList*, clang::QualType&, clang::QualType&, clang::Expr*, unsigned int&)"}, + {"_Z23DeduceTemplateArgumentsRN5clang4SemaEPNS_21TemplateParameterListENS_8QualTypeES4_RNS_4sema21TemplateDeductionInfoERN4llvm15SmallVectorImplINS_23DeducedTemplateArgumentEEEjbPNS9_I33RefParamPartialOrderingComparisonEE", "DeduceTemplateArguments(clang::Sema&, clang::TemplateParameterList*, clang::QualType, clang::QualType, clang::sema::TemplateDeductionInfo&, llvm::SmallVectorImpl&, unsigned int, bool, llvm::SmallVectorImpl*)"}, + + // {"_Z28PrepareArgumentPackDeductionRN5clang4SemaERN4llvm15SmallVectorImplINS_23DeducedTemplateArgumentEEERKNS3_IjEES6_RNS3_INS2_11SmallVectorIS4_Lj4EEEEE", + // "PrepareArgumentPackDeduction(clang::Sema&, llvm::SmallVectorImpl&, llvm::SmallVectorImpl const&, llvm::SmallVectorImpl&, llvm::SmallVectorImpl>&)"}, + // "PrepareArgumentPackDeduction(clang::Sema&, llvm::SmallVectorImpl&, llvm::SmallVectorImpl const&, llvm::SmallVectorImpl&, llvm::SmallVectorImpl>&)" was returned + + + // {"_Z27FinishArgumentPackDeductionRN5clang4SemaEPNS_21TemplateParameterListEbRN4llvm15SmallVectorImplINS_23DeducedTemplateArgumentEEERKNS5_IjEES8_RNS5_INS4_11SmallVectorIS6_Lj4EEEEERNS_4sema21TemplateDeductionInfoE", + // "FinishArgumentPackDeduction(clang::Sema&, clang::TemplateParameterList*, bool, llvm::SmallVectorImpl&, llvm::SmallVectorImpl const&, llvm::SmallVectorImpl&, llvm::SmallVectorImpl>&, clang::sema::TemplateDeductionInfo&)"}, + // "FinishArgumentPackDeduction(clang::Sema&, clang::TemplateParameterList*, bool, llvm::SmallVectorImpl&, llvm::SmallVectorImpl const&, llvm::SmallVectorImpl&, llvm::SmallVectorImpl>&, clang::sema::TemplateDeductionInfo&)" was returned + + {"_ZN5clang4Sema23DeduceTemplateArgumentsEPNS_20FunctionTemplateDeclEPKNS_24TemplateArgumentListInfoENS_8QualTypeERPNS_12FunctionDeclERNS_4sema21TemplateDeductionInfoE", "clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl*, clang::TemplateArgumentListInfo const*, clang::QualType, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&)"}, + {"_ZN5clang4Sema23DeduceTemplateArgumentsEPNS_20FunctionTemplateDeclENS_8QualTypeERPNS_17CXXConversionDeclERNS_4sema21TemplateDeductionInfoE", "clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl*, clang::QualType, clang::CXXConversionDecl*&, clang::sema::TemplateDeductionInfo&)"}, + {"_ZN5clang4Sema23DeduceTemplateArgumentsEPNS_20FunctionTemplateDeclEPKNS_24TemplateArgumentListInfoERPNS_12FunctionDeclERNS_4sema21TemplateDeductionInfoE", "clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl*, clang::TemplateArgumentListInfo const*, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&)"}, + {"_ZN5clang4Sema26getMoreSpecializedTemplateEPNS_20FunctionTemplateDeclES2_NS_14SourceLocationENS_30TemplatePartialOrderingContextEj", "clang::Sema::getMoreSpecializedTemplate(clang::FunctionTemplateDecl*, clang::FunctionTemplateDecl*, clang::SourceLocation, clang::TemplatePartialOrderingContext, unsigned int)"}, + {"_Z24isAtLeastAsSpecializedAsRN5clang4SemaENS_14SourceLocationEPNS_20FunctionTemplateDeclES4_NS_30TemplatePartialOrderingContextEjPN4llvm15SmallVectorImplI33RefParamPartialOrderingComparisonEE", "isAtLeastAsSpecializedAs(clang::Sema&, clang::SourceLocation, clang::FunctionTemplateDecl*, clang::FunctionTemplateDecl*, clang::TemplatePartialOrderingContext, unsigned int, llvm::SmallVectorImpl*)"}, + {"_ZN5clang4Sema18getMostSpecializedENS_21UnresolvedSetIteratorES1_NS_30TemplatePartialOrderingContextEjNS_14SourceLocationERKNS_17PartialDiagnosticES6_S6_", "clang::Sema::getMostSpecialized(clang::UnresolvedSetIterator, clang::UnresolvedSetIterator, clang::TemplatePartialOrderingContext, unsigned int, clang::SourceLocation, clang::PartialDiagnostic const&, clang::PartialDiagnostic const&, clang::PartialDiagnostic const&)"}, + {"_ZN5clang4Sema39getMoreSpecializedPartialSpecializationEPNS_38ClassTemplatePartialSpecializationDeclES2_NS_14SourceLocationE", "clang::Sema::getMoreSpecializedPartialSpecialization(clang::ClassTemplatePartialSpecializationDecl*, clang::ClassTemplatePartialSpecializationDecl*, clang::SourceLocation)"}, + {"_ZN5clang4Sema26MarkUsedTemplateParametersERKNS_20TemplateArgumentListEbjRN4llvm15SmallVectorImplIbEE", "clang::Sema::MarkUsedTemplateParameters(clang::TemplateArgumentList const&, bool, unsigned int, llvm::SmallVectorImpl&)"}, + {"_Z26MarkUsedTemplateParametersRN5clang4SemaERKNS_16TemplateArgumentEbjRN4llvm15SmallVectorImplIbEE", "MarkUsedTemplateParameters(clang::Sema&, clang::TemplateArgument const&, bool, unsigned int, llvm::SmallVectorImpl&)"}, + {"_ZN5clang4Sema29MarkDeducedTemplateParametersEPNS_20FunctionTemplateDeclERN4llvm15SmallVectorImplIbEE", "clang::Sema::MarkDeducedTemplateParameters(clang::FunctionTemplateDecl*, llvm::SmallVectorImpl&)"}, + {"_Z26MarkUsedTemplateParametersRN5clang4SemaENS_8QualTypeEbjRN4llvm15SmallVectorImplIbEE", "MarkUsedTemplateParameters(clang::Sema&, clang::QualType, bool, unsigned int, llvm::SmallVectorImpl&)"}, + {"_Z26MarkUsedTemplateParametersRN5clang4SemaENS_12TemplateNameEbjRN4llvm15SmallVectorImplIbEE", "MarkUsedTemplateParameters(clang::Sema&, clang::TemplateName, bool, unsigned int, llvm::SmallVectorImpl&)"}, + {"_Z26MarkUsedTemplateParametersRN5clang4SemaEPNS_19NestedNameSpecifierEbjRN4llvm15SmallVectorImplIbEE", "MarkUsedTemplateParameters(clang::Sema&, clang::NestedNameSpecifier*, bool, unsigned int, llvm::SmallVectorImpl&)"}, + {"_Z35MaybeAddImplicitObjectParameterTypeRN5clang10ASTContextEPNS_13CXXMethodDeclERN4llvm15SmallVectorImplINS_8QualTypeEEE", "MaybeAddImplicitObjectParameterType(clang::ASTContext&, clang::CXXMethodDecl*, llvm::SmallVectorImpl&)"}, + {"_Z23DeduceTemplateArgumentsRN5clang4SemaEPNS_21TemplateParameterListEPKNS_8QualTypeEjS6_jRNS_4sema21TemplateDeductionInfoERN4llvm15SmallVectorImplINS_23DeducedTemplateArgumentEEEjbPNSB_I33RefParamPartialOrderingComparisonEE", "DeduceTemplateArguments(clang::Sema&, clang::TemplateParameterList*, clang::QualType const*, unsigned int, clang::QualType const*, unsigned int, clang::sema::TemplateDeductionInfo&, llvm::SmallVectorImpl&, unsigned int, bool, llvm::SmallVectorImpl*)"}, + {"_Z29checkDeducedTemplateArgumentsRN5clang10ASTContextERKNS_23DeducedTemplateArgumentES4_", "checkDeducedTemplateArguments(clang::ASTContext&, clang::DeducedTemplateArgument const&, clang::DeducedTemplateArgument const&)"}, + {"_Z20hasSameExtendedValueN4llvm6APSIntES0_", "hasSameExtendedValue(llvm::APSInt, llvm::APSInt)"}, + {"_Z29DeduceNonTypeTemplateArgumentRN5clang4SemaEPNS_23NonTypeTemplateParmDeclEN4llvm6APSIntENS_8QualTypeEbRNS_4sema21TemplateDeductionInfoERNS4_15SmallVectorImplINS_23DeducedTemplateArgumentEEE", "DeduceNonTypeTemplateArgument(clang::Sema&, clang::NonTypeTemplateParmDecl*, llvm::APSInt, clang::QualType, bool, clang::sema::TemplateDeductionInfo&, llvm::SmallVectorImpl&)"}, + {"_Z29DeduceNonTypeTemplateArgumentRN5clang4SemaEPNS_23NonTypeTemplateParmDeclEPNS_4ExprERNS_4sema21TemplateDeductionInfoERN4llvm15SmallVectorImplINS_23DeducedTemplateArgumentEEE", "DeduceNonTypeTemplateArgument(clang::Sema&, clang::NonTypeTemplateParmDecl*, clang::Expr*, clang::sema::TemplateDeductionInfo&, llvm::SmallVectorImpl&)"}, + {"_Z23DeduceTemplateArgumentsRN5clang4SemaEPNS_21TemplateParameterListEPKNS_26TemplateSpecializationTypeENS_8QualTypeERNS_4sema21TemplateDeductionInfoERN4llvm15SmallVectorImplINS_23DeducedTemplateArgumentEEE", "DeduceTemplateArguments(clang::Sema&, clang::TemplateParameterList*, clang::TemplateSpecializationType const*, clang::QualType, clang::sema::TemplateDeductionInfo&, llvm::SmallVectorImpl&)"}, + {"_Z23DeduceTemplateArgumentsRN5clang4SemaEPNS_21TemplateParameterListENS_12TemplateNameES4_RNS_4sema21TemplateDeductionInfoERN4llvm15SmallVectorImplINS_23DeducedTemplateArgumentEEE", "DeduceTemplateArguments(clang::Sema&, clang::TemplateParameterList*, clang::TemplateName, clang::TemplateName, clang::sema::TemplateDeductionInfo&, llvm::SmallVectorImpl&)"}, + {"_Z23DeduceTemplateArgumentsRN5clang4SemaEPNS_21TemplateParameterListEPKNS_16TemplateArgumentEjS6_jRNS_4sema21TemplateDeductionInfoERN4llvm15SmallVectorImplINS_23DeducedTemplateArgumentEEEb", "DeduceTemplateArguments(clang::Sema&, clang::TemplateParameterList*, clang::TemplateArgument const*, unsigned int, clang::TemplateArgument const*, unsigned int, clang::sema::TemplateDeductionInfo&, llvm::SmallVectorImpl&, bool)"}, + {"_Z23DeduceTemplateArgumentsRN5clang4SemaEPNS_21TemplateParameterListERKNS_16TemplateArgumentES4_RNS_4sema21TemplateDeductionInfoERN4llvm15SmallVectorImplINS_23DeducedTemplateArgumentEEE", "DeduceTemplateArguments(clang::Sema&, clang::TemplateParameterList*, clang::TemplateArgument const&, clang::TemplateArgument, clang::sema::TemplateDeductionInfo&, llvm::SmallVectorImpl&)"}, + {"_Z17GetTypeOfFunctionRN5clang10ASTContextERKNS_12OverloadExpr10FindResultEPNS_12FunctionDeclE", "GetTypeOfFunction(clang::ASTContext&, clang::OverloadExpr::FindResult const&, clang::FunctionDecl*)"}, + {"_Z17isSameTemplateArgRN5clang10ASTContextERKNS_16TemplateArgumentES4_", "isSameTemplateArg(clang::ASTContext&, clang::TemplateArgument const&, clang::TemplateArgument const&)"}, + {"_ZN4llvm15SmallVectorImplIN5clang23DeducedTemplateArgumentEE6resizeEj", "llvm::SmallVectorImpl::resize(unsigned int)"}, + {"_ZN4llvm15SmallVectorImplIN5clang23DeducedTemplateArgumentEE9push_backERKS2_", "llvm::SmallVectorImpl::push_back(clang::DeducedTemplateArgument const&)"}, + + // {"_ZN4llvm15SmallVectorImplISt4pairIN5clang14SourceLocationENS2_17PartialDiagnosticEEE6appendIPKS5_EEvT_SA_", + // "void llvm::SmallVectorImpl>::append const*>(std::pair const*, std::pair const*)"}, + // got error + + + // {"_ZN4llvm8DenseMapIPN5clang4DeclENS_11SmallVectorISt4pairINS1_14SourceLocationENS1_17PartialDiagnosticEELj1EEENS_12DenseMapInfoIS3_EENSA_IS9_EEE16FindAndConstructERKS3_", + // "llvm::DenseMap, 1u>, llvm::DenseMapInfo, llvm::DenseMapInfo, 1u>>>::FindAndConstruct(clang::Decl* const&)"}, + // "llvm::DenseMap, 1>, llvm::DenseMapInfo, llvm::DenseMapInfo, 1>>>::FindAndConstruct(clang::Decl* const&)" was returned + + + // {"_ZN4llvm8DenseMapIPN5clang4DeclENS_11SmallVectorISt4pairINS1_14SourceLocationENS1_17PartialDiagnosticEELj1EEENS_12DenseMapInfoIS3_EENSA_IS9_EEE16InsertIntoBucketERKS3_RKS9_PS5_IS3_S9_E", + // "llvm::DenseMap, 1u>, llvm::DenseMapInfo, llvm::DenseMapInfo, 1u>>>::InsertIntoBucket(clang::Decl* const&, llvm::SmallVector, 1u> const&, std::pair, 1u>>*)"}, + // "llvm::DenseMap, 1>, llvm::DenseMapInfo, llvm::DenseMapInfo, 1>>>::InsertIntoBucket(clang::Decl* const&, llvm::SmallVector, 1> const&, std::pair*, 1>>)" was returned + + + // {"_ZN4llvm8DenseMapIPN5clang4DeclENS_11SmallVectorISt4pairINS1_14SourceLocationENS1_17PartialDiagnosticEELj1EEENS_12DenseMapInfoIS3_EENSA_IS9_EEE4growEj", + // "llvm::DenseMap, 1u>, llvm::DenseMapInfo, llvm::DenseMapInfo, 1u>>>::grow(unsigned int)"}, + // "llvm::DenseMap, 1>, llvm::DenseMapInfo, llvm::DenseMapInfo, 1>>>::grow(unsigned int)" was returned + + {"_ZN4llvm15SmallVectorImplISt4pairIN5clang14SourceLocationENS2_17PartialDiagnosticEEEaSERKS6_", "llvm::SmallVectorImpl>::operator=(llvm::SmallVectorImpl> const&)"}, + + // {"_ZNSt6__copyILb0ESt26random_access_iterator_tagE4copyIPKSt4pairIN5clang14SourceLocationENS4_17PartialDiagnosticEEPS7_EET0_T_SC_SB_", + // "std::pair* std::__copy::copy const*, std::pair*>(std::pair const*, std::pair const*, std::pair*)"}, + // got error + + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang23DeducedTemplateArgumentELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + + // {"_ZSt24__uninitialized_copy_auxIPN5clang23DeducedTemplateArgumentES2_ET0_T_S4_S3_St12__false_type", + // "clang::DeducedTemplateArgument* std::__uninitialized_copy_aux(clang::DeducedTemplateArgument*, clang::DeducedTemplateArgument*, clang::DeducedTemplateArgument*, std::__false_type)"}, + // got error + + {"_ZN4llvm15SmallVectorImplIN5clang23DeducedTemplateArgumentEE15construct_rangeEPS2_S4_RKS2_", "llvm::SmallVectorImpl::construct_range(clang::DeducedTemplateArgument*, clang::DeducedTemplateArgument*, clang::DeducedTemplateArgument const&)"}, + + // {"_ZN4llvm11SmallVectorINS0_IN5clang23DeducedTemplateArgumentELj4EEELj2EEC2EjRKS3_", + // "llvm::SmallVector, 2u>::SmallVector(unsigned int, llvm::SmallVector const&)"}, + // "llvm::SmallVector, 2>::SmallVector(unsigned int, llvm::SmallVector const&)" was returned + + + // {"_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorIN5clang23DeducedTemplateArgumentELj4EEELb0EE4growEm", + // "llvm::SmallVectorTemplateBase, false>::grow(unsigned long)"}, + // "llvm::SmallVectorTemplateBase, false>::grow(unsigned long)" was returned + + + // {"_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorIN5clang23DeducedTemplateArgumentELj4EEELb0EE13destroy_rangeEPS4_S6_", + // "llvm::SmallVectorTemplateBase, false>::destroy_range(llvm::SmallVector*, llvm::SmallVector*)"}, + // got error + + {"_ZN4llvm15SmallVectorImplIN5clang23DeducedTemplateArgumentEEaSERKS3_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + + // {"_ZSt24__uninitialized_copy_auxIPKN5clang23DeducedTemplateArgumentEPS1_ET0_T_S6_S5_St12__false_type", + // "clang::DeducedTemplateArgument* std::__uninitialized_copy_aux(clang::DeducedTemplateArgument const*, clang::DeducedTemplateArgument const*, clang::DeducedTemplateArgument*, std::__false_type)"}, + // got error + + + // {"_ZN4llvm15SmallVectorImplIN5clang8QualTypeEE6insertIPKS2_EEPS2_S7_T_S8_", + // "clang::QualType* llvm::SmallVectorImpl::insert(clang::QualType*, clang::QualType const*, clang::QualType const*)"}, + // got error + + {"_ZN4llvm15SmallVectorImplIN5clang8QualTypeEE6resizeEj", "llvm::SmallVectorImpl::resize(unsigned int)"}, + + // {"_ZN4llvm15SmallVectorImplIN5clang23DeducedTemplateArgumentEE6appendIPKNS1_16TemplateArgumentEEEvT_S8_", + // "void llvm::SmallVectorImpl::append(clang::TemplateArgument const*, clang::TemplateArgument const*)"}, + // got error + + {"_ZN4llvm23SmallVectorTemplateBaseI33RefParamPartialOrderingComparisonLb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN5clang23DeducedTemplateArgumentC2ERKNS_16TemplateArgumentEb", "clang::DeducedTemplateArgument::DeducedTemplateArgument(clang::TemplateArgument const&, bool)"}, + {"_ZN5clang4Sema28getTemplateInstantiationArgsEPNS_9NamedDeclEPKNS_20TemplateArgumentListEbPKNS_12FunctionDeclE", "clang::Sema::getTemplateInstantiationArgs(clang::NamedDecl*, clang::TemplateArgumentList const*, bool, clang::FunctionDecl const*)"}, + {"_ZNK5clang4Sema27ActiveTemplateInstantiation21isInstantiationRecordEv", "clang::Sema::ActiveTemplateInstantiation::isInstantiationRecord() const"}, + {"_ZN5clang4Sema21InstantiatingTemplateC1ERS0_NS_14SourceLocationEPNS_4DeclENS_11SourceRangeE", "clang::Sema::InstantiatingTemplate::InstantiatingTemplate(clang::Sema&, clang::SourceLocation, clang::Decl*, clang::SourceRange)"}, + {"_ZN5clang4Sema21InstantiatingTemplateC2ERS0_NS_14SourceLocationEPNS_4DeclENS_11SourceRangeE", "clang::Sema::InstantiatingTemplate::InstantiatingTemplate(clang::Sema&, clang::SourceLocation, clang::Decl*, clang::SourceRange)"}, + {"_ZN5clang4Sema21InstantiatingTemplate23CheckInstantiationDepthENS_14SourceLocationENS_11SourceRangeE", "clang::Sema::InstantiatingTemplate::CheckInstantiationDepth(clang::SourceLocation, clang::SourceRange)"}, + {"_ZN5clang4Sema21InstantiatingTemplateC1ERS0_NS_14SourceLocationEPNS_12TemplateDeclEPKNS_16TemplateArgumentEjNS_11SourceRangeE", "clang::Sema::InstantiatingTemplate::InstantiatingTemplate(clang::Sema&, clang::SourceLocation, clang::TemplateDecl*, clang::TemplateArgument const*, unsigned int, clang::SourceRange)"}, + {"_ZN5clang4Sema21InstantiatingTemplateC2ERS0_NS_14SourceLocationEPNS_12TemplateDeclEPKNS_16TemplateArgumentEjNS_11SourceRangeE", "clang::Sema::InstantiatingTemplate::InstantiatingTemplate(clang::Sema&, clang::SourceLocation, clang::TemplateDecl*, clang::TemplateArgument const*, unsigned int, clang::SourceRange)"}, + {"_ZN5clang4Sema21InstantiatingTemplateC1ERS0_NS_14SourceLocationEPNS_20FunctionTemplateDeclEPKNS_16TemplateArgumentEjNS0_27ActiveTemplateInstantiation17InstantiationKindERNS_4sema21TemplateDeductionInfoENS_11SourceRangeE", "clang::Sema::InstantiatingTemplate::InstantiatingTemplate(clang::Sema&, clang::SourceLocation, clang::FunctionTemplateDecl*, clang::TemplateArgument const*, unsigned int, clang::Sema::ActiveTemplateInstantiation::InstantiationKind, clang::sema::TemplateDeductionInfo&, clang::SourceRange)"}, + {"_ZN5clang4Sema21InstantiatingTemplateC2ERS0_NS_14SourceLocationEPNS_20FunctionTemplateDeclEPKNS_16TemplateArgumentEjNS0_27ActiveTemplateInstantiation17InstantiationKindERNS_4sema21TemplateDeductionInfoENS_11SourceRangeE", "clang::Sema::InstantiatingTemplate::InstantiatingTemplate(clang::Sema&, clang::SourceLocation, clang::FunctionTemplateDecl*, clang::TemplateArgument const*, unsigned int, clang::Sema::ActiveTemplateInstantiation::InstantiationKind, clang::sema::TemplateDeductionInfo&, clang::SourceRange)"}, + {"_ZN5clang4Sema21InstantiatingTemplateC1ERS0_NS_14SourceLocationEPNS_38ClassTemplatePartialSpecializationDeclEPKNS_16TemplateArgumentEjRNS_4sema21TemplateDeductionInfoENS_11SourceRangeE", "clang::Sema::InstantiatingTemplate::InstantiatingTemplate(clang::Sema&, clang::SourceLocation, clang::ClassTemplatePartialSpecializationDecl*, clang::TemplateArgument const*, unsigned int, clang::sema::TemplateDeductionInfo&, clang::SourceRange)"}, + {"_ZN5clang4Sema21InstantiatingTemplateC2ERS0_NS_14SourceLocationEPNS_38ClassTemplatePartialSpecializationDeclEPKNS_16TemplateArgumentEjRNS_4sema21TemplateDeductionInfoENS_11SourceRangeE", "clang::Sema::InstantiatingTemplate::InstantiatingTemplate(clang::Sema&, clang::SourceLocation, clang::ClassTemplatePartialSpecializationDecl*, clang::TemplateArgument const*, unsigned int, clang::sema::TemplateDeductionInfo&, clang::SourceRange)"}, + {"_ZN5clang4Sema21InstantiatingTemplateC1ERS0_NS_14SourceLocationEPNS_11ParmVarDeclEPKNS_16TemplateArgumentEjNS_11SourceRangeE", "clang::Sema::InstantiatingTemplate::InstantiatingTemplate(clang::Sema&, clang::SourceLocation, clang::ParmVarDecl*, clang::TemplateArgument const*, unsigned int, clang::SourceRange)"}, + {"_ZN5clang4Sema21InstantiatingTemplateC2ERS0_NS_14SourceLocationEPNS_11ParmVarDeclEPKNS_16TemplateArgumentEjNS_11SourceRangeE", "clang::Sema::InstantiatingTemplate::InstantiatingTemplate(clang::Sema&, clang::SourceLocation, clang::ParmVarDecl*, clang::TemplateArgument const*, unsigned int, clang::SourceRange)"}, + {"_ZN5clang4Sema21InstantiatingTemplateC1ERS0_NS_14SourceLocationEPNS_9NamedDeclEPNS_23NonTypeTemplateParmDeclEPKNS_16TemplateArgumentEjNS_11SourceRangeE", "clang::Sema::InstantiatingTemplate::InstantiatingTemplate(clang::Sema&, clang::SourceLocation, clang::NamedDecl*, clang::NonTypeTemplateParmDecl*, clang::TemplateArgument const*, unsigned int, clang::SourceRange)"}, + {"_ZN5clang4Sema21InstantiatingTemplateC2ERS0_NS_14SourceLocationEPNS_9NamedDeclEPNS_23NonTypeTemplateParmDeclEPKNS_16TemplateArgumentEjNS_11SourceRangeE", "clang::Sema::InstantiatingTemplate::InstantiatingTemplate(clang::Sema&, clang::SourceLocation, clang::NamedDecl*, clang::NonTypeTemplateParmDecl*, clang::TemplateArgument const*, unsigned int, clang::SourceRange)"}, + {"_ZN5clang4Sema21InstantiatingTemplateC1ERS0_NS_14SourceLocationEPNS_9NamedDeclEPNS_24TemplateTemplateParmDeclEPKNS_16TemplateArgumentEjNS_11SourceRangeE", "clang::Sema::InstantiatingTemplate::InstantiatingTemplate(clang::Sema&, clang::SourceLocation, clang::NamedDecl*, clang::TemplateTemplateParmDecl*, clang::TemplateArgument const*, unsigned int, clang::SourceRange)"}, + {"_ZN5clang4Sema21InstantiatingTemplateC2ERS0_NS_14SourceLocationEPNS_9NamedDeclEPNS_24TemplateTemplateParmDeclEPKNS_16TemplateArgumentEjNS_11SourceRangeE", "clang::Sema::InstantiatingTemplate::InstantiatingTemplate(clang::Sema&, clang::SourceLocation, clang::NamedDecl*, clang::TemplateTemplateParmDecl*, clang::TemplateArgument const*, unsigned int, clang::SourceRange)"}, + {"_ZN5clang4Sema21InstantiatingTemplateC1ERS0_NS_14SourceLocationEPNS_12TemplateDeclEPNS_9NamedDeclEPKNS_16TemplateArgumentEjNS_11SourceRangeE", "clang::Sema::InstantiatingTemplate::InstantiatingTemplate(clang::Sema&, clang::SourceLocation, clang::TemplateDecl*, clang::NamedDecl*, clang::TemplateArgument const*, unsigned int, clang::SourceRange)"}, + {"_ZN5clang4Sema21InstantiatingTemplateC2ERS0_NS_14SourceLocationEPNS_12TemplateDeclEPNS_9NamedDeclEPKNS_16TemplateArgumentEjNS_11SourceRangeE", "clang::Sema::InstantiatingTemplate::InstantiatingTemplate(clang::Sema&, clang::SourceLocation, clang::TemplateDecl*, clang::NamedDecl*, clang::TemplateArgument const*, unsigned int, clang::SourceRange)"}, + {"_ZN5clang4Sema21InstantiatingTemplate5ClearEv", "clang::Sema::InstantiatingTemplate::Clear()"}, + {"_ZN5clang4Sema23PrintInstantiationStackEv", "clang::Sema::PrintInstantiationStack()"}, + {"_ZNK5clang4Sema15isSFINAEContextEv", "clang::Sema::isSFINAEContext() const"}, + {"_ZN5clang4Sema9SubstTypeEPNS_14TypeSourceInfoERKNS_30MultiLevelTemplateArgumentListENS_14SourceLocationENS_15DeclarationNameE", "clang::Sema::SubstType(clang::TypeSourceInfo*, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_120TemplateInstantiatorEE13TransformTypeEPNS_14TypeSourceInfoE", "clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformType(clang::TypeSourceInfo*)"}, + {"_ZN5clang4Sema9SubstTypeENS_7TypeLocERKNS_30MultiLevelTemplateArgumentListENS_14SourceLocationENS_15DeclarationNameE", "clang::Sema::SubstType(clang::TypeLoc, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_120TemplateInstantiatorEE13TransformTypeERNS_14TypeLocBuilderENS_7TypeLocE", "clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformType(clang::TypeLocBuilder&, clang::TypeLoc)"}, + {"_ZN5clang4Sema9SubstTypeENS_8QualTypeERKNS_30MultiLevelTemplateArgumentListENS_14SourceLocationENS_15DeclarationNameE", "clang::Sema::SubstType(clang::QualType, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_120TemplateInstantiatorEE13TransformTypeENS_8QualTypeE", "clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformType(clang::QualType)"}, + {"_ZN5clang4Sema21SubstFunctionDeclTypeEPNS_14TypeSourceInfoERKNS_30MultiLevelTemplateArgumentListENS_14SourceLocationENS_15DeclarationNameE", "clang::Sema::SubstFunctionDeclType(clang::TypeSourceInfo*, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName)"}, + {"_ZN5clang4Sema16SubstParmVarDeclEPNS_11ParmVarDeclERKNS_30MultiLevelTemplateArgumentListEN4llvm8OptionalIjEE", "clang::Sema::SubstParmVarDecl(clang::ParmVarDecl*, clang::MultiLevelTemplateArgumentList const&, llvm::Optional)"}, + {"_ZN5clang23LocalInstantiationScope24InstantiatedLocalPackArgEPKNS_4DeclEPS1_", "clang::LocalInstantiationScope::InstantiatedLocalPackArg(clang::Decl const*, clang::Decl*)"}, + {"_ZN5clang23LocalInstantiationScope17InstantiatedLocalEPKNS_4DeclEPS1_", "clang::LocalInstantiationScope::InstantiatedLocal(clang::Decl const*, clang::Decl*)"}, + {"_ZN5clang4Sema14SubstParmTypesENS_14SourceLocationEPPNS_11ParmVarDeclEjRKNS_30MultiLevelTemplateArgumentListERN4llvm15SmallVectorImplINS_8QualTypeEEEPNS9_IS3_EE", "clang::Sema::SubstParmTypes(clang::SourceLocation, clang::ParmVarDecl**, unsigned int, clang::MultiLevelTemplateArgumentList const&, llvm::SmallVectorImpl&, llvm::SmallVectorImpl*)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_120TemplateInstantiatorEE27TransformFunctionTypeParamsENS_14SourceLocationEPPNS_11ParmVarDeclEjPKNS_8QualTypeERN4llvm15SmallVectorImplIS8_EEPNSC_IS6_EE", "clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformFunctionTypeParams(clang::SourceLocation, clang::ParmVarDecl**, unsigned int, clang::QualType const*, llvm::SmallVectorImpl&, llvm::SmallVectorImpl*)"}, + {"_ZN5clang4Sema19SubstBaseSpecifiersEPNS_13CXXRecordDeclES2_RKNS_30MultiLevelTemplateArgumentListE", "clang::Sema::SubstBaseSpecifiers(clang::CXXRecordDecl*, clang::CXXRecordDecl*, clang::MultiLevelTemplateArgumentList const&)"}, + {"_ZN5clang4Sema16InstantiateClassENS_14SourceLocationEPNS_13CXXRecordDeclES3_RKNS_30MultiLevelTemplateArgumentListENS_26TemplateSpecializationKindEb", "clang::Sema::InstantiateClass(clang::SourceLocation, clang::CXXRecordDecl*, clang::CXXRecordDecl*, clang::MultiLevelTemplateArgumentList const&, clang::TemplateSpecializationKind, bool)"}, + {"_ZN5clang4Sema38InstantiateClassTemplateSpecializationENS_14SourceLocationEPNS_31ClassTemplateSpecializationDeclENS_26TemplateSpecializationKindEb", "clang::Sema::InstantiateClassTemplateSpecialization(clang::SourceLocation, clang::ClassTemplateSpecializationDecl*, clang::TemplateSpecializationKind, bool)"}, + {"_ZN5clang4Sema23InstantiateClassMembersENS_14SourceLocationEPNS_13CXXRecordDeclERKNS_30MultiLevelTemplateArgumentListENS_26TemplateSpecializationKindE", "clang::Sema::InstantiateClassMembers(clang::SourceLocation, clang::CXXRecordDecl*, clang::MultiLevelTemplateArgumentList const&, clang::TemplateSpecializationKind)"}, + {"_ZN5clang4Sema45InstantiateClassTemplateSpecializationMembersENS_14SourceLocationEPNS_31ClassTemplateSpecializationDeclENS_26TemplateSpecializationKindE", "clang::Sema::InstantiateClassTemplateSpecializationMembers(clang::SourceLocation, clang::ClassTemplateSpecializationDecl*, clang::TemplateSpecializationKind)"}, + {"_ZN5clang4Sema9SubstStmtEPNS_4StmtERKNS_30MultiLevelTemplateArgumentListE", "clang::Sema::SubstStmt(clang::Stmt*, clang::MultiLevelTemplateArgumentList const&)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_120TemplateInstantiatorEE13TransformStmtEPNS_4StmtE", "clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformStmt(clang::Stmt*)"}, + {"_ZN5clang4Sema9SubstExprEPNS_4ExprERKNS_30MultiLevelTemplateArgumentListE", "clang::Sema::SubstExpr(clang::Expr*, clang::MultiLevelTemplateArgumentList const&)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_120TemplateInstantiatorEE13TransformExprEPNS_4ExprE", "clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformExpr(clang::Expr*)"}, + {"_ZN5clang4Sema10SubstExprsEPPNS_4ExprEjbRKNS_30MultiLevelTemplateArgumentListERN4llvm15SmallVectorImplIS2_EE", "clang::Sema::SubstExprs(clang::Expr**, unsigned int, bool, clang::MultiLevelTemplateArgumentList const&, llvm::SmallVectorImpl&)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_120TemplateInstantiatorEE14TransformExprsEPPNS_4ExprEjbRN4llvm15SmallVectorImplIS5_EEPb", "clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformExprs(clang::Expr**, unsigned int, bool, llvm::SmallVectorImpl&, bool*)"}, + {"_ZN5clang4Sema24SubstNestedNameSpecifierEPNS_19NestedNameSpecifierENS_11SourceRangeERKNS_30MultiLevelTemplateArgumentListE", "clang::Sema::SubstNestedNameSpecifier(clang::NestedNameSpecifier*, clang::SourceRange, clang::MultiLevelTemplateArgumentList const&)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_120TemplateInstantiatorEE28TransformNestedNameSpecifierEPNS_19NestedNameSpecifierENS_11SourceRangeENS_8QualTypeEPNS_9NamedDeclE", "clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformNestedNameSpecifier(clang::NestedNameSpecifier*, clang::SourceRange, clang::QualType, clang::NamedDecl*)"}, + {"_ZN5clang4Sema24SubstDeclarationNameInfoERKNS_19DeclarationNameInfoERKNS_30MultiLevelTemplateArgumentListE", "clang::Sema::SubstDeclarationNameInfo(clang::DeclarationNameInfo const&, clang::MultiLevelTemplateArgumentList const&)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_120TemplateInstantiatorEE28TransformDeclarationNameInfoERKNS_19DeclarationNameInfoE", "clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformDeclarationNameInfo(clang::DeclarationNameInfo const&)"}, + {"_ZN5clang4Sema17SubstTemplateNameENS_12TemplateNameENS_14SourceLocationERKNS_30MultiLevelTemplateArgumentListE", "clang::Sema::SubstTemplateName(clang::TemplateName, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&)"}, + {"_ZN12_GLOBAL__N_120TemplateInstantiator21TransformTemplateNameEN5clang12TemplateNameENS1_8QualTypeEPNS1_9NamedDeclE", "(anonymous namespace)::TemplateInstantiator::TransformTemplateName(clang::TemplateName, clang::QualType, clang::NamedDecl*)"}, + {"_ZN5clang4Sema5SubstEPKNS_19TemplateArgumentLocEjRNS_24TemplateArgumentListInfoERKNS_30MultiLevelTemplateArgumentListE", "clang::Sema::Subst(clang::TemplateArgumentLoc const*, unsigned int, clang::TemplateArgumentListInfo&, clang::MultiLevelTemplateArgumentList const&)"}, + {"_ZN5clang23LocalInstantiationScope18getInstantiationOfEPKNS_4DeclE", "clang::LocalInstantiationScope::getInstantiationOf(clang::Decl const*)"}, + {"_ZN5clang23LocalInstantiationScope19findInstantiationOfEPKNS_4DeclE", "clang::LocalInstantiationScope::findInstantiationOf(clang::Decl const*)"}, + {"_ZN5clang23LocalInstantiationScope28MakeInstantiatedLocalArgPackEPKNS_4DeclE", "clang::LocalInstantiationScope::MakeInstantiatedLocalArgPack(clang::Decl const*)"}, + {"_ZN5clang23LocalInstantiationScope27SetPartiallySubstitutedPackEPNS_9NamedDeclEPKNS_16TemplateArgumentEj", "clang::LocalInstantiationScope::SetPartiallySubstitutedPack(clang::NamedDecl*, clang::TemplateArgument const*, unsigned int)"}, + {"_ZNK5clang23LocalInstantiationScope27getPartiallySubstitutedPackEPPKNS_16TemplateArgumentEPj", "clang::LocalInstantiationScope::getPartiallySubstitutedPack(clang::TemplateArgument const**, unsigned int*) const"}, + + // {"_ZN5clang13TreeTransformIN12_GLOBAL__N_120TemplateInstantiatorEE26TransformTemplateArgumentsIPKNS_19TemplateArgumentLocEEEbT_S8_RNS_24TemplateArgumentListInfoE", + // "bool clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformTemplateArguments(clang::TemplateArgumentLoc const*, clang::TemplateArgumentLoc const*, clang::TemplateArgumentListInfo&)"}, + // got error + + + // {"_ZN5clang13TreeTransformIN12_GLOBAL__N_120TemplateInstantiatorEE26TransformTemplateArgumentsINS_33TemplateArgumentLocInventIteratorIS2_PKNS_16TemplateArgumentEEEEEbT_SA_RNS_24TemplateArgumentListInfoE", + // "bool clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformTemplateArguments>(clang::TemplateArgumentLocInventIterator<(anonymous namespace)::TemplateInstantiator, clang::TemplateArgument const*>, clang::TemplateArgumentLocInventIterator<(anonymous namespace)::TemplateInstantiator, clang::TemplateArgument const*>, clang::TemplateArgumentListInfo&)"}, + // got error + + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_120TemplateInstantiatorEE25TransformTemplateArgumentERKNS_19TemplateArgumentLocERS4_", "clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformTemplateArgument(clang::TemplateArgumentLoc const&, clang::TemplateArgumentLoc&)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_120TemplateInstantiatorEE20RebuildPackExpansionENS_19TemplateArgumentLocENS_14SourceLocationEN4llvm8OptionalIjEE", "clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildPackExpansion(clang::TemplateArgumentLoc, clang::SourceLocation, llvm::Optional)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_120TemplateInstantiatorEE34ForgetPartiallySubstitutedPackRAIIC1ERS2_", "clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::ForgetPartiallySubstitutedPackRAII::ForgetPartiallySubstitutedPackRAII((anonymous namespace)::TemplateInstantiator&)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_120TemplateInstantiatorEE34ForgetPartiallySubstitutedPackRAIID1Ev", "clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::ForgetPartiallySubstitutedPackRAII::~ForgetPartiallySubstitutedPackRAII()"}, + {"_ZN12_GLOBAL__N_120TemplateInstantiator13TransformDeclEN5clang14SourceLocationEPNS1_4DeclE", "(anonymous namespace)::TemplateInstantiator::TransformDecl(clang::SourceLocation, clang::Decl*)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_120TemplateInstantiatorEE25InventTemplateArgumentLocERKNS_16TemplateArgumentERNS_19TemplateArgumentLocE", "clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::InventTemplateArgumentLoc(clang::TemplateArgument const&, clang::TemplateArgumentLoc&)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_120TemplateInstantiatorEE26TransformTypeInObjectScopeEPNS_14TypeSourceInfoENS_8QualTypeEPNS_9NamedDeclEPNS_19NestedNameSpecifierE", "clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformTypeInObjectScope(clang::TypeSourceInfo*, clang::QualType, clang::NamedDecl*, clang::NestedNameSpecifier*)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_120TemplateInstantiatorEE35TransformTemplateSpecializationTypeERNS_14TypeLocBuilderENS_29TemplateSpecializationTypeLocENS_12TemplateNameE", "clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformTemplateSpecializationType(clang::TypeLocBuilder&, clang::TemplateSpecializationTypeLoc, clang::TemplateName)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_120TemplateInstantiatorEE44TransformDependentTemplateSpecializationTypeERNS_14TypeLocBuilderENS_38DependentTemplateSpecializationTypeLocEPNS_19NestedNameSpecifierE", "clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformDependentTemplateSpecializationType(clang::TypeLocBuilder&, clang::DependentTemplateSpecializationTypeLoc, clang::NestedNameSpecifier*)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_120TemplateInstantiatorEE23TransformBinaryOperatorEPNS_14BinaryOperatorE", "clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformBinaryOperator(clang::BinaryOperator*)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_120TemplateInstantiatorEE21TransformCompoundStmtEPNS_12CompoundStmtEb", "clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCompoundStmt(clang::CompoundStmt*, bool)"}, + {"_ZN12_GLOBAL__N_120TemplateInstantiator28TransformTemplateParmRefExprEPN5clang11DeclRefExprEPNS1_23NonTypeTemplateParmDeclE", "(anonymous namespace)::TemplateInstantiator::TransformTemplateParmRefExpr(clang::DeclRefExpr*, clang::NonTypeTemplateParmDecl*)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_120TemplateInstantiatorEE20TransformDeclRefExprEPNS_11DeclRefExprE", "clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformDeclRefExpr(clang::DeclRefExpr*)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_120TemplateInstantiatorEE25TransformCXXNamedCastExprEPNS_16CXXNamedCastExprE", "clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCXXNamedCastExpr(clang::CXXNamedCastExpr*)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_120TemplateInstantiatorEE17TransformCallExprEPNS_8CallExprE", "clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCallExpr(clang::CallExpr*)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_120TemplateInstantiatorEE21TransformCXXCatchStmtEPNS_12CXXCatchStmtE", "clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCXXCatchStmt(clang::CXXCatchStmt*)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_120TemplateInstantiatorEE26TransformFunctionProtoTypeERNS_14TypeLocBuilderENS_20FunctionProtoTypeLocE", "clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformFunctionProtoType(clang::TypeLocBuilder&, clang::FunctionProtoTypeLoc)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_120TemplateInstantiatorEE16RebuildArrayTypeENS_8QualTypeENS_9ArrayType17ArraySizeModifierEPKN4llvm5APIntEPNS_4ExprEjNS_11SourceRangeE", "clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::RebuildArrayType(clang::QualType, clang::ArrayType::ArraySizeModifier, llvm::APInt const*, clang::Expr*, unsigned int, clang::SourceRange)"}, + {"_ZN5clang13TreeTransformIN12_GLOBAL__N_120TemplateInstantiatorEE22TransformReferenceTypeERNS_14TypeLocBuilderENS_16ReferenceTypeLocE", "clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformReferenceType(clang::TypeLocBuilder&, clang::ReferenceTypeLoc)"}, + {"_ZN5clang14TypeLocBuilder12pushFullCopyENS_7TypeLocE", "clang::TypeLocBuilder::pushFullCopy(clang::TypeLoc)"}, + + // {"_ZN5clang11DeclVisitorINS_24TemplateDeclInstantiatorEPNS_4DeclEE5VisitES3_", + // "clang::DeclVisitor::Visit(clang::Decl*)"}, + // "clang::DeclVisitor::Visit(clang::DeclVisitor)" was returned + + + // {"_ZN4llvm8DenseMapIPKN5clang4DeclENS_12PointerUnionIPS2_PNS_11SmallVectorIS6_Lj4EEEEENS_12DenseMapInfoIS4_EENSB_ISA_EEE16InsertIntoBucketERKS4_RKSA_PSt4pairIS4_SA_E", + // "llvm::DenseMap*>, llvm::DenseMapInfo, llvm::DenseMapInfo*>>>::InsertIntoBucket(clang::Decl const* const&, llvm::PointerUnion*> const&, std::pair*>>*)"}, + // "llvm::DenseMap*>, llvm::DenseMapInfo, llvm::DenseMapInfo*>>>::InsertIntoBucket(clang::Decl const* const&, llvm::PointerUnion*> const&, std::pair*>>*)" was returned + + + // {"_ZN4llvm8DenseMapIPKN5clang4DeclENS_12PointerUnionIPS2_PNS_11SmallVectorIS6_Lj4EEEEENS_12DenseMapInfoIS4_EENSB_ISA_EEE4growEj", + // "llvm::DenseMap*>, llvm::DenseMapInfo, llvm::DenseMapInfo*>>>::grow(unsigned int)"}, + // "llvm::DenseMap*>, llvm::DenseMapInfo, llvm::DenseMapInfo*>>>::grow(unsigned int)" was returned + + {"_ZN4llvm15SmallVectorImplIN5clang19TemplateArgumentLocEE9push_backERKS2_", "llvm::SmallVectorImpl::push_back(clang::TemplateArgumentLoc const&)"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang19TemplateArgumentLocELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + + // {"_ZSt24__uninitialized_copy_auxIPN5clang19TemplateArgumentLocES2_ET0_T_S4_S3_St12__false_type", + // "clang::TemplateArgumentLoc* std::__uninitialized_copy_aux(clang::TemplateArgumentLoc*, clang::TemplateArgumentLoc*, clang::TemplateArgumentLoc*, std::__false_type)"}, + // got error + + + // {"_ZN5clang19TemplateArgumentLocC2ERKNS_16TemplateArgumentENS_11SourceRangeENS_14SourceLocationES5_", + // "clang::TemplateArgumentLoc::TemplateArgumentLoc(clang::TemplateArgument const&, clang::SourceRange, clang::SourceLocation, clang::SourceLocation)"}, + // got error + + {"_ZN5clang14TypeLocBuilder8pushImplENS_8QualTypeEm", "clang::TypeLocBuilder::pushImpl(clang::QualType, unsigned long)"}, + {"_ZN5clang4Expr19getValueKindForTypeENS_8QualTypeE", "clang::Expr::getValueKindForType(clang::QualType)"}, + {"_ZN5clang12LookupResultD2Ev", "clang::LookupResult::~LookupResult()"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang4Sema17OffsetOfComponentELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang10DesignatorELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN5clang24TemplateDeclInstantiator9VisitDeclEPNS_4DeclE", "clang::TemplateDeclInstantiator::VisitDecl(clang::Decl*)"}, + + // {"_ZN4llvm8DenseMapIPN5clang11ParmVarDeclENS_11SmallVectorIS3_Lj1EEENS_12DenseMapInfoIS3_EENS6_IS5_EEE16FindAndConstructERKS3_", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::FindAndConstruct(clang::ParmVarDecl* const&)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::FindAndConstruct(clang::ParmVarDecl* const&)" was returned + + + // {"_ZN4llvm8DenseMapIPN5clang11ParmVarDeclENS_11SmallVectorIS3_Lj1EEENS_12DenseMapInfoIS3_EENS6_IS5_EEE16InsertIntoBucketERKS3_RKS5_PSt4pairIS3_S5_E", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(clang::ParmVarDecl* const&, llvm::SmallVector const&, std::pair>*)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(clang::ParmVarDecl* const&, llvm::SmallVector const&, std::pair>*)" was returned + + + // {"_ZN4llvm8DenseMapIPN5clang11ParmVarDeclENS_11SmallVectorIS3_Lj1EEENS_12DenseMapInfoIS3_EENS6_IS5_EEE4growEj", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)" was returned + + {"_ZN4llvm15SmallVectorImplIPN5clang11ParmVarDeclEEaSERKS4_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang4Sema27ActiveTemplateInstantiationELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN5clang4sema21TemplateDeductionInfoD2Ev", "clang::sema::TemplateDeductionInfo::~TemplateDeductionInfo()"}, + {"_ZN5clang23LocalInstantiationScope4ExitEv", "clang::LocalInstantiationScope::Exit()"}, + {"_ZN5clang24TemplateDeclInstantiator14SubstQualifierEPKNS_14DeclaratorDeclEPS1_", "clang::TemplateDeclInstantiator::SubstQualifier(clang::DeclaratorDecl const*, clang::DeclaratorDecl*)"}, + {"_ZN5clang24TemplateDeclInstantiator14SubstQualifierEPKNS_7TagDeclEPS1_", "clang::TemplateDeclInstantiator::SubstQualifier(clang::TagDecl const*, clang::TagDecl*)"}, + {"_ZN5clang4Sema16InstantiateAttrsERKNS_30MultiLevelTemplateArgumentListEPNS_4DeclES5_", "clang::Sema::InstantiateAttrs(clang::MultiLevelTemplateArgumentList const&, clang::Decl*, clang::Decl*)"}, + {"_ZN5clang24TemplateDeclInstantiator24VisitTranslationUnitDeclEPNS_19TranslationUnitDeclE", "clang::TemplateDeclInstantiator::VisitTranslationUnitDecl(clang::TranslationUnitDecl*)"}, + {"_ZN5clang24TemplateDeclInstantiator18VisitNamespaceDeclEPNS_13NamespaceDeclE", "clang::TemplateDeclInstantiator::VisitNamespaceDecl(clang::NamespaceDecl*)"}, + {"_ZN5clang24TemplateDeclInstantiator23VisitNamespaceAliasDeclEPNS_18NamespaceAliasDeclE", "clang::TemplateDeclInstantiator::VisitNamespaceAliasDecl(clang::NamespaceAliasDecl*)"}, + {"_ZN5clang24TemplateDeclInstantiator16VisitTypedefDeclEPNS_11TypedefDeclE", "clang::TemplateDeclInstantiator::VisitTypedefDecl(clang::TypedefDecl*)"}, + {"_ZN5clang4Sema20FindInstantiatedDeclENS_14SourceLocationEPNS_9NamedDeclERKNS_30MultiLevelTemplateArgumentListE", "clang::Sema::FindInstantiatedDecl(clang::SourceLocation, clang::NamedDecl*, clang::MultiLevelTemplateArgumentList const&)"}, + {"_ZN5clang24TemplateDeclInstantiator12VisitVarDeclEPNS_7VarDeclE", "clang::TemplateDeclInstantiator::VisitVarDecl(clang::VarDecl*)"}, + {"_ZN5clang24TemplateDeclInstantiator18VisitCXXRecordDeclEPNS_13CXXRecordDeclE", "clang::TemplateDeclInstantiator::VisitCXXRecordDecl(clang::CXXRecordDecl*)"}, + + // {"_Z22InstantiateInitializerRN5clang4SemaEPNS_4ExprERKNS_30MultiLevelTemplateArgumentListERNS_14SourceLocationERNS_15ASTOwningVectorIS3_Lj8EEES8_", + // "InstantiateInitializer(clang::Sema&, clang::Expr*, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation&, clang::ASTOwningVector&, clang::SourceLocation&)"}, + // "InstantiateInitializer(clang::Sema&, clang::Expr*, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation&, clang::ASTOwningVector&, clang::SourceLocation&)" was returned + + {"_ZN5clang24TemplateDeclInstantiator19VisitAccessSpecDeclEPNS_14AccessSpecDeclE", "clang::TemplateDeclInstantiator::VisitAccessSpecDecl(clang::AccessSpecDecl*)"}, + {"_ZN5clang24TemplateDeclInstantiator14VisitFieldDeclEPNS_9FieldDeclE", "clang::TemplateDeclInstantiator::VisitFieldDecl(clang::FieldDecl*)"}, + {"_ZN5clang24TemplateDeclInstantiator22VisitIndirectFieldDeclEPNS_17IndirectFieldDeclE", "clang::TemplateDeclInstantiator::VisitIndirectFieldDecl(clang::IndirectFieldDecl*)"}, + {"_ZN5clang24TemplateDeclInstantiator15VisitFriendDeclEPNS_10FriendDeclE", "clang::TemplateDeclInstantiator::VisitFriendDecl(clang::FriendDecl*)"}, + {"_ZN5clang24TemplateDeclInstantiator21VisitStaticAssertDeclEPNS_16StaticAssertDeclE", "clang::TemplateDeclInstantiator::VisitStaticAssertDecl(clang::StaticAssertDecl*)"}, + {"_ZN5clang24TemplateDeclInstantiator13VisitEnumDeclEPNS_8EnumDeclE", "clang::TemplateDeclInstantiator::VisitEnumDecl(clang::EnumDecl*)"}, + {"_ZN5clang24TemplateDeclInstantiator21VisitEnumConstantDeclEPNS_16EnumConstantDeclE", "clang::TemplateDeclInstantiator::VisitEnumConstantDecl(clang::EnumConstantDecl*)"}, + {"_ZN5clang24TemplateDeclInstantiator22VisitClassTemplateDeclEPNS_17ClassTemplateDeclE", "clang::TemplateDeclInstantiator::VisitClassTemplateDecl(clang::ClassTemplateDecl*)"}, + {"_ZN5clang24TemplateDeclInstantiator19SubstTemplateParamsEPNS_21TemplateParameterListE", "clang::TemplateDeclInstantiator::SubstTemplateParams(clang::TemplateParameterList*)"}, + {"_ZN5clang4Sema23FindInstantiatedContextENS_14SourceLocationEPNS_11DeclContextERKNS_30MultiLevelTemplateArgumentListE", "clang::Sema::FindInstantiatedContext(clang::SourceLocation, clang::DeclContext*, clang::MultiLevelTemplateArgumentList const&)"}, + {"_ZN5clang24TemplateDeclInstantiator43VisitClassTemplatePartialSpecializationDeclEPNS_38ClassTemplatePartialSpecializationDeclE", "clang::TemplateDeclInstantiator::VisitClassTemplatePartialSpecializationDecl(clang::ClassTemplatePartialSpecializationDecl*)"}, + {"_ZN5clang24TemplateDeclInstantiator45InstantiateClassTemplatePartialSpecializationEPNS_17ClassTemplateDeclEPNS_38ClassTemplatePartialSpecializationDeclE", "clang::TemplateDeclInstantiator::InstantiateClassTemplatePartialSpecialization(clang::ClassTemplateDecl*, clang::ClassTemplatePartialSpecializationDecl*)"}, + {"_ZN5clang24TemplateDeclInstantiator25VisitFunctionTemplateDeclEPNS_20FunctionTemplateDeclE", "clang::TemplateDeclInstantiator::VisitFunctionTemplateDecl(clang::FunctionTemplateDecl*)"}, + {"_ZN5clang24TemplateDeclInstantiator18VisitCXXMethodDeclEPNS_13CXXMethodDeclEPNS_21TemplateParameterListE", "clang::TemplateDeclInstantiator::VisitCXXMethodDecl(clang::CXXMethodDecl*, clang::TemplateParameterList*)"}, + {"_ZN5clang24TemplateDeclInstantiator17VisitFunctionDeclEPNS_12FunctionDeclEPNS_21TemplateParameterListE", "clang::TemplateDeclInstantiator::VisitFunctionDecl(clang::FunctionDecl*, clang::TemplateParameterList*)"}, + {"_ZN5clang24TemplateDeclInstantiator17SubstFunctionTypeEPNS_12FunctionDeclERN4llvm15SmallVectorImplIPNS_11ParmVarDeclEEE", "clang::TemplateDeclInstantiator::SubstFunctionType(clang::FunctionDecl*, llvm::SmallVectorImpl&)"}, + {"_ZN5clang24TemplateDeclInstantiator25InitFunctionInstantiationEPNS_12FunctionDeclES2_", "clang::TemplateDeclInstantiator::InitFunctionInstantiation(clang::FunctionDecl*, clang::FunctionDecl*)"}, + {"_ZN5clang24TemplateDeclInstantiator23InitMethodInstantiationEPNS_13CXXMethodDeclES2_", "clang::TemplateDeclInstantiator::InitMethodInstantiation(clang::CXXMethodDecl*, clang::CXXMethodDecl*)"}, + {"_ZN5clang24TemplateDeclInstantiator23VisitCXXConstructorDeclEPNS_18CXXConstructorDeclE", "clang::TemplateDeclInstantiator::VisitCXXConstructorDecl(clang::CXXConstructorDecl*)"}, + {"_ZN5clang24TemplateDeclInstantiator22VisitCXXDestructorDeclEPNS_17CXXDestructorDeclE", "clang::TemplateDeclInstantiator::VisitCXXDestructorDecl(clang::CXXDestructorDecl*)"}, + {"_ZN5clang24TemplateDeclInstantiator22VisitCXXConversionDeclEPNS_17CXXConversionDeclE", "clang::TemplateDeclInstantiator::VisitCXXConversionDecl(clang::CXXConversionDecl*)"}, + {"_ZN5clang24TemplateDeclInstantiator16VisitParmVarDeclEPNS_11ParmVarDeclE", "clang::TemplateDeclInstantiator::VisitParmVarDecl(clang::ParmVarDecl*)"}, + {"_ZN5clang24TemplateDeclInstantiator25VisitTemplateTypeParmDeclEPNS_20TemplateTypeParmDeclE", "clang::TemplateDeclInstantiator::VisitTemplateTypeParmDecl(clang::TemplateTypeParmDecl*)"}, + {"_ZN5clang24TemplateDeclInstantiator28VisitNonTypeTemplateParmDeclEPNS_23NonTypeTemplateParmDeclE", "clang::TemplateDeclInstantiator::VisitNonTypeTemplateParmDecl(clang::NonTypeTemplateParmDecl*)"}, + {"_ZN5clang24TemplateDeclInstantiator29VisitTemplateTemplateParmDeclEPNS_24TemplateTemplateParmDeclE", "clang::TemplateDeclInstantiator::VisitTemplateTemplateParmDecl(clang::TemplateTemplateParmDecl*)"}, + {"_ZN5clang24TemplateDeclInstantiator23VisitUsingDirectiveDeclEPNS_18UsingDirectiveDeclE", "clang::TemplateDeclInstantiator::VisitUsingDirectiveDecl(clang::UsingDirectiveDecl*)"}, + {"_ZN5clang24TemplateDeclInstantiator14VisitUsingDeclEPNS_9UsingDeclE", "clang::TemplateDeclInstantiator::VisitUsingDecl(clang::UsingDecl*)"}, + {"_ZN5clang24TemplateDeclInstantiator20VisitUsingShadowDeclEPNS_15UsingShadowDeclE", "clang::TemplateDeclInstantiator::VisitUsingShadowDecl(clang::UsingShadowDecl*)"}, + {"_ZN5clang24TemplateDeclInstantiator32VisitUnresolvedUsingTypenameDeclEPNS_27UnresolvedUsingTypenameDeclE", "clang::TemplateDeclInstantiator::VisitUnresolvedUsingTypenameDecl(clang::UnresolvedUsingTypenameDecl*)"}, + {"_ZN5clang24TemplateDeclInstantiator29VisitUnresolvedUsingValueDeclEPNS_24UnresolvedUsingValueDeclE", "clang::TemplateDeclInstantiator::VisitUnresolvedUsingValueDecl(clang::UnresolvedUsingValueDecl*)"}, + {"_ZN5clang4Sema9SubstDeclEPNS_4DeclEPNS_11DeclContextERKNS_30MultiLevelTemplateArgumentListE", "clang::Sema::SubstDecl(clang::Decl*, clang::DeclContext*, clang::MultiLevelTemplateArgumentList const&)"}, + {"_ZN5clang4Sema29InstantiateFunctionDefinitionENS_14SourceLocationEPNS_12FunctionDeclEbb", "clang::Sema::InstantiateFunctionDefinition(clang::SourceLocation, clang::FunctionDecl*, bool, bool)"}, + {"_ZN5clang4Sema26InstantiateMemInitializersEPNS_18CXXConstructorDeclEPKS1_RKNS_30MultiLevelTemplateArgumentListE", "clang::Sema::InstantiateMemInitializers(clang::CXXConstructorDecl*, clang::CXXConstructorDecl const*, clang::MultiLevelTemplateArgumentList const&)"}, + {"_ZN5clang4Sema27PerformDependentDiagnosticsEPKNS_11DeclContextERKNS_30MultiLevelTemplateArgumentListE", "clang::Sema::PerformDependentDiagnostics(clang::DeclContext const*, clang::MultiLevelTemplateArgumentList const&)"}, + {"_ZN5clang4Sema28PerformPendingInstantiationsEb", "clang::Sema::PerformPendingInstantiations(bool)"}, + {"_ZN5clang4Sema37InstantiateStaticDataMemberDefinitionENS_14SourceLocationEPNS_7VarDeclEbb", "clang::Sema::InstantiateStaticDataMemberDefinition(clang::SourceLocation, clang::VarDecl*, bool, bool)"}, + {"_Z17isInstantiationOfRN5clang10ASTContextEPNS_9NamedDeclEPNS_4DeclE", "isInstantiationOf(clang::ASTContext&, clang::NamedDecl*, clang::Decl*)"}, + {"_ZN4llvm15SmallVectorImplISt4pairIPN5clang13CXXRecordDeclENS2_14SourceLocationEEE4swapERS7_", "llvm::SmallVectorImpl>::swap(llvm::SmallVectorImpl>&)"}, + {"_ZN5clang4Sema31DiagnoseUnexpandedParameterPackENS_14SourceLocationEPNS_14TypeSourceInfoENS0_30UnexpandedParameterPackContextE", "clang::Sema::DiagnoseUnexpandedParameterPack(clang::SourceLocation, clang::TypeSourceInfo*, clang::Sema::UnexpandedParameterPackContext)"}, + {"_Z32DiagnoseUnexpandedParameterPacksRN5clang4SemaENS_14SourceLocationENS0_30UnexpandedParameterPackContextERKN4llvm15SmallVectorImplISt4pairINS4_12PointerUnionIPKNS_20TemplateTypeParmTypeEPNS_9NamedDeclEEES2_EEE", "DiagnoseUnexpandedParameterPacks(clang::Sema&, clang::SourceLocation, clang::Sema::UnexpandedParameterPackContext, llvm::SmallVectorImpl, clang::SourceLocation>> const&)"}, + {"_ZN5clang4Sema31DiagnoseUnexpandedParameterPackEPNS_4ExprENS0_30UnexpandedParameterPackContextE", "clang::Sema::DiagnoseUnexpandedParameterPack(clang::Expr*, clang::Sema::UnexpandedParameterPackContext)"}, + {"_ZN5clang4Sema31DiagnoseUnexpandedParameterPackERKNS_12CXXScopeSpecENS0_30UnexpandedParameterPackContextE", "clang::Sema::DiagnoseUnexpandedParameterPack(clang::CXXScopeSpec const&, clang::Sema::UnexpandedParameterPackContext)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_138CollectUnexpandedParameterPacksVisitorEE27TraverseNestedNameSpecifierEPNS_19NestedNameSpecifierE", "clang::RecursiveASTVisitor<(anonymous namespace)::CollectUnexpandedParameterPacksVisitor>::TraverseNestedNameSpecifier(clang::NestedNameSpecifier*)"}, + {"_ZN5clang4Sema31DiagnoseUnexpandedParameterPackERKNS_19DeclarationNameInfoENS0_30UnexpandedParameterPackContextE", "clang::Sema::DiagnoseUnexpandedParameterPack(clang::DeclarationNameInfo const&, clang::Sema::UnexpandedParameterPackContext)"}, + {"_ZN5clang4Sema31DiagnoseUnexpandedParameterPackENS_14SourceLocationENS_12TemplateNameENS0_30UnexpandedParameterPackContextE", "clang::Sema::DiagnoseUnexpandedParameterPack(clang::SourceLocation, clang::TemplateName, clang::Sema::UnexpandedParameterPackContext)"}, + {"_ZN12_GLOBAL__N_138CollectUnexpandedParameterPacksVisitor20TraverseTemplateNameEN5clang12TemplateNameE", "(anonymous namespace)::CollectUnexpandedParameterPacksVisitor::TraverseTemplateName(clang::TemplateName)"}, + {"_ZN5clang4Sema31DiagnoseUnexpandedParameterPackENS_19TemplateArgumentLocENS0_30UnexpandedParameterPackContextE", "clang::Sema::DiagnoseUnexpandedParameterPack(clang::TemplateArgumentLoc, clang::Sema::UnexpandedParameterPackContext)"}, + {"_ZN5clang4Sema31collectUnexpandedParameterPacksENS_16TemplateArgumentERN4llvm15SmallVectorImplISt4pairINS2_12PointerUnionIPKNS_20TemplateTypeParmTypeEPNS_9NamedDeclEEENS_14SourceLocationEEEE", "clang::Sema::collectUnexpandedParameterPacks(clang::TemplateArgument, llvm::SmallVectorImpl, clang::SourceLocation>>&)"}, + {"_ZN5clang4Sema31collectUnexpandedParameterPacksENS_19TemplateArgumentLocERN4llvm15SmallVectorImplISt4pairINS2_12PointerUnionIPKNS_20TemplateTypeParmTypeEPNS_9NamedDeclEEENS_14SourceLocationEEEE", "clang::Sema::collectUnexpandedParameterPacks(clang::TemplateArgumentLoc, llvm::SmallVectorImpl, clang::SourceLocation>>&)"}, + {"_ZN5clang4Sema31collectUnexpandedParameterPacksENS_8QualTypeERN4llvm15SmallVectorImplISt4pairINS2_12PointerUnionIPKNS_20TemplateTypeParmTypeEPNS_9NamedDeclEEENS_14SourceLocationEEEE", "clang::Sema::collectUnexpandedParameterPacks(clang::QualType, llvm::SmallVectorImpl, clang::SourceLocation>>&)"}, + {"_ZN5clang4Sema31collectUnexpandedParameterPacksENS_7TypeLocERN4llvm15SmallVectorImplISt4pairINS2_12PointerUnionIPKNS_20TemplateTypeParmTypeEPNS_9NamedDeclEEENS_14SourceLocationEEEE", "clang::Sema::collectUnexpandedParameterPacks(clang::TypeLoc, llvm::SmallVectorImpl, clang::SourceLocation>>&)"}, + {"_ZN5clang4Sema18ActOnPackExpansionERKNS_22ParsedTemplateArgumentENS_14SourceLocationE", "clang::Sema::ActOnPackExpansion(clang::ParsedTemplateArgument const&, clang::SourceLocation)"}, + {"_ZN5clang4Sema18ActOnPackExpansionENS_9OpaquePtrINS_8QualTypeEEENS_14SourceLocationE", "clang::Sema::ActOnPackExpansion(clang::OpaquePtr, clang::SourceLocation)"}, + {"_ZN5clang4Sema18ActOnPackExpansionEPNS_4ExprENS_14SourceLocationE", "clang::Sema::ActOnPackExpansion(clang::Expr*, clang::SourceLocation)"}, + {"_ZN5clang4Sema18CheckPackExpansionEPNS_14TypeSourceInfoENS_14SourceLocationEN4llvm8OptionalIjEE", "clang::Sema::CheckPackExpansion(clang::TypeSourceInfo*, clang::SourceLocation, llvm::Optional)"}, + {"_ZN5clang4Sema18CheckPackExpansionENS_8QualTypeENS_11SourceRangeENS_14SourceLocationEN4llvm8OptionalIjEE", "clang::Sema::CheckPackExpansion(clang::QualType, clang::SourceRange, clang::SourceLocation, llvm::Optional)"}, + {"_ZN5clang4Sema18CheckPackExpansionEPNS_4ExprENS_14SourceLocationEN4llvm8OptionalIjEE", "clang::Sema::CheckPackExpansion(clang::Expr*, clang::SourceLocation, llvm::Optional)"}, + {"_ZN5clang4Sema31CheckParameterPacksForExpansionENS_14SourceLocationENS_11SourceRangeEPKSt4pairIN4llvm12PointerUnionIPKNS_20TemplateTypeParmTypeEPNS_9NamedDeclEEES1_EjRKNS_30MultiLevelTemplateArgumentListERbSI_RNS4_8OptionalIjEE", "clang::Sema::CheckParameterPacksForExpansion(clang::SourceLocation, clang::SourceRange, std::pair, clang::SourceLocation> const*, unsigned int, clang::MultiLevelTemplateArgumentList const&, bool&, bool&, llvm::Optional&)"}, + {"_ZN5clang4Sema26getNumArgumentsInExpansionENS_8QualTypeERKNS_30MultiLevelTemplateArgumentListE", "clang::Sema::getNumArgumentsInExpansion(clang::QualType, clang::MultiLevelTemplateArgumentList const&)"}, + {"_ZN5clang4Sema32containsUnexpandedParameterPacksERNS_10DeclaratorE", "clang::Sema::containsUnexpandedParameterPacks(clang::Declarator&)"}, + {"_ZN5clang4Sema28ActOnSizeofParameterPackExprEPNS_5ScopeENS_14SourceLocationERNS_14IdentifierInfoES3_S3_", "clang::Sema::ActOnSizeofParameterPackExpr(clang::Scope*, clang::SourceLocation, clang::IdentifierInfo&, clang::SourceLocation, clang::SourceLocation)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_138CollectUnexpandedParameterPacksVisitorEE24TraverseTemplateArgumentERKNS_16TemplateArgumentE", "clang::RecursiveASTVisitor<(anonymous namespace)::CollectUnexpandedParameterPacksVisitor>::TraverseTemplateArgument(clang::TemplateArgument const&)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_138CollectUnexpandedParameterPacksVisitorEE27TraverseTemplateArgumentLocERKNS_19TemplateArgumentLocE", "clang::RecursiveASTVisitor<(anonymous namespace)::CollectUnexpandedParameterPacksVisitor>::TraverseTemplateArgumentLoc(clang::TemplateArgumentLoc const&)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_138CollectUnexpandedParameterPacksVisitorEE12TraverseTypeENS_8QualTypeE", "clang::RecursiveASTVisitor<(anonymous namespace)::CollectUnexpandedParameterPacksVisitor>::TraverseType(clang::QualType)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_138CollectUnexpandedParameterPacksVisitorEE12TraverseStmtEPNS_4StmtE", "clang::RecursiveASTVisitor<(anonymous namespace)::CollectUnexpandedParameterPacksVisitor>::TraverseStmt(clang::Stmt*)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_138CollectUnexpandedParameterPacksVisitorEE12TraverseDeclEPNS_4DeclE", "clang::RecursiveASTVisitor<(anonymous namespace)::CollectUnexpandedParameterPacksVisitor>::TraverseDecl(clang::Decl*)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_138CollectUnexpandedParameterPacksVisitorEE24TraverseDeclaratorHelperEPNS_14DeclaratorDeclE", "clang::RecursiveASTVisitor<(anonymous namespace)::CollectUnexpandedParameterPacksVisitor>::TraverseDeclaratorHelper(clang::DeclaratorDecl*)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_138CollectUnexpandedParameterPacksVisitorEE22TraverseFunctionHelperEPNS_12FunctionDeclE", "clang::RecursiveASTVisitor<(anonymous namespace)::CollectUnexpandedParameterPacksVisitor>::TraverseFunctionHelper(clang::FunctionDecl*)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_138CollectUnexpandedParameterPacksVisitorEE23TraverseCXXRecordHelperEPNS_13CXXRecordDeclE", "clang::RecursiveASTVisitor<(anonymous namespace)::CollectUnexpandedParameterPacksVisitor>::TraverseCXXRecordHelper(clang::CXXRecordDecl*)"}, + {"_ZN5clang19RecursiveASTVisitorIN12_GLOBAL__N_138CollectUnexpandedParameterPacksVisitorEE15TraverseTypeLocENS_7TypeLocE", "clang::RecursiveASTVisitor<(anonymous namespace)::CollectUnexpandedParameterPacksVisitor>::TraverseTypeLoc(clang::TypeLoc)"}, + {"_ZN4llvm23SmallVectorTemplateBaseISt4pairINS_12PointerUnionIPKN5clang20TemplateTypeParmTypeEPNS3_9NamedDeclEEENS3_14SourceLocationEELb0EE4growEm", "llvm::SmallVectorTemplateBase, clang::SourceLocation>, false>::grow(unsigned long)"}, + {"_ZN5clang4Sema19adjustParameterTypeENS_8QualTypeE", "clang::Sema::adjustParameterType(clang::QualType)"}, + {"_ZN5clang4Sema18BuildQualifiedTypeENS_8QualTypeENS_14SourceLocationENS_10QualifiersE", "clang::Sema::BuildQualifiedType(clang::QualType, clang::SourceLocation, clang::Qualifiers)"}, + {"_ZN5clang4Sema14BuildParenTypeENS_8QualTypeE", "clang::Sema::BuildParenType(clang::QualType)"}, + {"_ZN5clang4Sema16BuildPointerTypeENS_8QualTypeENS_14SourceLocationENS_15DeclarationNameE", "clang::Sema::BuildPointerType(clang::QualType, clang::SourceLocation, clang::DeclarationName)"}, + {"_ZN5clang4Sema18BuildReferenceTypeENS_8QualTypeEbNS_14SourceLocationENS_15DeclarationNameE", "clang::Sema::BuildReferenceType(clang::QualType, bool, clang::SourceLocation, clang::DeclarationName)"}, + {"_ZN5clang4Sema14BuildArrayTypeENS_8QualTypeENS_9ArrayType17ArraySizeModifierEPNS_4ExprEjNS_11SourceRangeENS_15DeclarationNameE", "clang::Sema::BuildArrayType(clang::QualType, clang::ArrayType::ArraySizeModifier, clang::Expr*, unsigned int, clang::SourceRange, clang::DeclarationName)"}, + {"_ZN5clang4Sema19RequireCompleteTypeENS_14SourceLocationENS_8QualTypeEj", "clang::Sema::RequireCompleteType(clang::SourceLocation, clang::QualType, unsigned int)"}, + {"_ZN5clang4Sema18BuildExtVectorTypeENS_8QualTypeEPNS_4ExprENS_14SourceLocationE", "clang::Sema::BuildExtVectorType(clang::QualType, clang::Expr*, clang::SourceLocation)"}, + {"_ZN5clang4Sema17BuildFunctionTypeENS_8QualTypeEPS1_jbjNS_16RefQualifierKindENS_14SourceLocationENS_15DeclarationNameENS_12FunctionType7ExtInfoE", "clang::Sema::BuildFunctionType(clang::QualType, clang::QualType*, unsigned int, bool, unsigned int, clang::RefQualifierKind, clang::SourceLocation, clang::DeclarationName, clang::FunctionType::ExtInfo)"}, + {"_ZN5clang4Sema22BuildMemberPointerTypeENS_8QualTypeES1_NS_14SourceLocationENS_15DeclarationNameE", "clang::Sema::BuildMemberPointerType(clang::QualType, clang::QualType, clang::SourceLocation, clang::DeclarationName)"}, + {"_ZN5clang4Sema21BuildBlockPointerTypeENS_8QualTypeENS_14SourceLocationENS_15DeclarationNameE", "clang::Sema::BuildBlockPointerType(clang::QualType, clang::SourceLocation, clang::DeclarationName)"}, + {"_ZN5clang4Sema17GetTypeFromParserENS_9OpaquePtrINS_8QualTypeEEEPPNS_14TypeSourceInfoE", "clang::Sema::GetTypeFromParser(clang::OpaquePtr, clang::TypeSourceInfo**)"}, + {"_ZN5clang4Sema20GetTypeForDeclaratorERNS_10DeclaratorEPNS_5ScopeEPPNS_7TagDeclE", "clang::Sema::GetTypeForDeclarator(clang::Declarator&, clang::Scope*, clang::TagDecl**)"}, + {"_Z16processTypeAttrsRN12_GLOBAL__N_119TypeProcessingStateERN5clang8QualTypeEbPNS2_13AttributeListE", "processTypeAttrs((anonymous namespace)::TypeProcessingState&, clang::QualType&, bool, clang::AttributeList*)"}, + {"_ZN5clang4Sema30GetTypeSourceInfoForDeclaratorERNS_10DeclaratorENS_8QualTypeEPNS_14TypeSourceInfoE", "clang::Sema::GetTypeSourceInfoForDeclarator(clang::Declarator&, clang::QualType, clang::TypeSourceInfo*)"}, + {"_ZN5clang14TypeLocVisitorIN12_GLOBAL__N_117TypeSpecLocFillerEvE5VisitENS_13UnqualTypeLocE", "clang::TypeLocVisitor<(anonymous namespace)::TypeSpecLocFiller, void>::Visit(clang::UnqualTypeLoc)"}, + {"_ZN5clang4Sema16CreateParsedTypeENS_8QualTypeEPNS_14TypeSourceInfoE", "clang::Sema::CreateParsedType(clang::QualType, clang::TypeSourceInfo*)"}, + {"_ZNK5clang11LocInfoType19getAsStringInternalERSsRKNS_14PrintingPolicyE", "clang::LocInfoType::getAsStringInternal(std::string&, clang::PrintingPolicy const&) const"}, + {"_ZN5clang4Sema13ActOnTypeNameEPNS_5ScopeERNS_10DeclaratorE", "clang::Sema::ActOnTypeName(clang::Scope*, clang::Declarator&)"}, + {"_ZN5clang4Sema19RequireCompleteTypeENS_14SourceLocationENS_8QualTypeERKNS_17PartialDiagnosticESt4pairIS1_S3_E", "clang::Sema::RequireCompleteType(clang::SourceLocation, clang::QualType, clang::PartialDiagnostic const&, std::pair)"}, + {"_ZN5clang4Sema19RequireCompleteTypeENS_14SourceLocationENS_8QualTypeERKNS_17PartialDiagnosticE", "clang::Sema::RequireCompleteType(clang::SourceLocation, clang::QualType, clang::PartialDiagnostic const&)"}, + {"_ZN5clang4Sema17getElaboratedTypeENS_21ElaboratedTypeKeywordERKNS_12CXXScopeSpecENS_8QualTypeE", "clang::Sema::getElaboratedType(clang::ElaboratedTypeKeyword, clang::CXXScopeSpec const&, clang::QualType)"}, + {"_ZN5clang4Sema19BuildTypeofExprTypeEPNS_4ExprENS_14SourceLocationE", "clang::Sema::BuildTypeofExprType(clang::Expr*, clang::SourceLocation)"}, + {"_ZN5clang4Sema17BuildDecltypeTypeEPNS_4ExprENS_14SourceLocationE", "clang::Sema::BuildDecltypeType(clang::Expr*, clang::SourceLocation)"}, + {"_ZN5clang14TypeLocVisitorIN12_GLOBAL__N_119DeclaratorLocFillerEvE18VisitVectorTypeLocENS_13VectorTypeLocE", "clang::TypeLocVisitor<(anonymous namespace)::DeclaratorLocFiller, void>::VisitVectorTypeLoc(clang::VectorTypeLoc)"}, + {"_ZN5clang14TypeLocVisitorIN12_GLOBAL__N_119DeclaratorLocFillerEvE22VisitObjCObjectTypeLocENS_17ObjCObjectTypeLocE", "clang::TypeLocVisitor<(anonymous namespace)::DeclaratorLocFiller, void>::VisitObjCObjectTypeLoc(clang::ObjCObjectTypeLoc)"}, + {"_ZN12_GLOBAL__N_119DeclaratorLocFiller12VisitTypeLocEN5clang7TypeLocE", "(anonymous namespace)::DeclaratorLocFiller::VisitTypeLoc(clang::TypeLoc)"}, + {"_ZN5clang14TypeLocVisitorIN12_GLOBAL__N_119DeclaratorLocFillerEvE15VisitTagTypeLocENS_10TagTypeLocE", "clang::TypeLocVisitor<(anonymous namespace)::DeclaratorLocFiller, void>::VisitTagTypeLoc(clang::TagTypeLoc)"}, + {"_ZN12_GLOBAL__N_117TypeSpecLocFiller19VisitBuiltinTypeLocEN5clang14BuiltinTypeLocE", "(anonymous namespace)::TypeSpecLocFiller::VisitBuiltinTypeLoc(clang::BuiltinTypeLoc)"}, + {"_ZN12_GLOBAL__N_117TypeSpecLocFiller22VisitElaboratedTypeLocEN5clang17ElaboratedTypeLocE", "(anonymous namespace)::TypeSpecLocFiller::VisitElaboratedTypeLoc(clang::ElaboratedTypeLoc)"}, + {"_ZN12_GLOBAL__N_117TypeSpecLocFiller34VisitTemplateSpecializationTypeLocEN5clang29TemplateSpecializationTypeLocE", "(anonymous namespace)::TypeSpecLocFiller::VisitTemplateSpecializationTypeLoc(clang::TemplateSpecializationTypeLoc)"}, + {"_ZN12_GLOBAL__N_117TypeSpecLocFiller25VisitDependentNameTypeLocEN5clang20DependentNameTypeLocE", "(anonymous namespace)::TypeSpecLocFiller::VisitDependentNameTypeLoc(clang::DependentNameTypeLoc)"}, + {"_ZN12_GLOBAL__N_117TypeSpecLocFiller43VisitDependentTemplateSpecializationTypeLocEN5clang38DependentTemplateSpecializationTypeLocE", "(anonymous namespace)::TypeSpecLocFiller::VisitDependentTemplateSpecializationTypeLoc(clang::DependentTemplateSpecializationTypeLoc)"}, + {"_ZN12_GLOBAL__N_117TypeSpecLocFiller22VisitObjCObjectTypeLocEN5clang17ObjCObjectTypeLocE", "(anonymous namespace)::TypeSpecLocFiller::VisitObjCObjectTypeLoc(clang::ObjCObjectTypeLoc)"}, + {"_ZN5clang14TypeLocVisitorIN12_GLOBAL__N_117TypeSpecLocFillerEvE5VisitENS_7TypeLocE", "clang::TypeLocVisitor<(anonymous namespace)::TypeSpecLocFiller, void>::Visit(clang::TypeLoc)"}, + {"_Z25handleObjCPointerTypeAttrRN12_GLOBAL__N_119TypeProcessingStateERN5clang13AttributeListERNS2_8QualTypeE", "handleObjCPointerTypeAttr((anonymous namespace)::TypeProcessingState&, clang::AttributeList&, clang::QualType&)"}, + {"_Z24HandleNeonVectorTypeAttrRN5clang8QualTypeERKNS_13AttributeListERNS_4SemaENS_10VectorType10VectorKindEPKc", "HandleNeonVectorTypeAttr(clang::QualType&, clang::AttributeList const&, clang::Sema&, clang::VectorType::VectorKind, char const*)"}, + {"_Z22handleFunctionTypeAttrRN12_GLOBAL__N_119TypeProcessingStateERN5clang13AttributeListERNS2_8QualTypeE", "handleFunctionTypeAttr((anonymous namespace)::TypeProcessingState&, clang::AttributeList&, clang::QualType&)"}, + {"_ZN12_GLOBAL__N_121FunctionTypeUnwrapper4wrapERN5clang10ASTContextENS1_8QualTypeEj", "(anonymous namespace)::FunctionTypeUnwrapper::wrap(clang::ASTContext&, clang::QualType, unsigned int)"}, + {"_ZN12_GLOBAL__N_121FunctionTypeUnwrapper4wrapERN5clang10ASTContextEPKNS1_4TypeEj", "(anonymous namespace)::FunctionTypeUnwrapper::wrap(clang::ASTContext&, clang::Type const*, unsigned int)"}, + {"_ZN4llvm15SmallVectorImplIN5clang15DeclaratorChunkEE6insertEPS2_RKS2_", "llvm::SmallVectorImpl::insert(clang::DeclaratorChunk*, clang::DeclaratorChunk const&)"}, + {"_ZN5clang20TargetAttributesSemaD0Ev", "clang::TargetAttributesSema::~TargetAttributesSema()"}, + {"_ZN5clang20TargetAttributesSemaD1Ev", "clang::TargetAttributesSema::~TargetAttributesSema()"}, + {"_ZN5clang20TargetAttributesSemaD2Ev", "clang::TargetAttributesSema::~TargetAttributesSema()"}, + {"_ZNK5clang20TargetAttributesSema20ProcessDeclAttributeEPNS_5ScopeEPNS_4DeclERKNS_13AttributeListERNS_4SemaE", "clang::TargetAttributesSema::ProcessDeclAttribute(clang::Scope*, clang::Decl*, clang::AttributeList const&, clang::Sema&) const"}, + {"_ZNK5clang4Sema23getTargetAttributesSemaEv", "clang::Sema::getTargetAttributesSema() const"}, + {"_ZN12_GLOBAL__N_117X86AttributesSemaD1Ev", "(anonymous namespace)::X86AttributesSema::~X86AttributesSema()"}, + {"_ZN12_GLOBAL__N_117X86AttributesSemaD0Ev", "(anonymous namespace)::X86AttributesSema::~X86AttributesSema()"}, + {"_ZNK12_GLOBAL__N_117X86AttributesSema20ProcessDeclAttributeEPN5clang5ScopeEPNS1_4DeclERKNS1_13AttributeListERNS1_4SemaE", "(anonymous namespace)::X86AttributesSema::ProcessDeclAttribute(clang::Scope*, clang::Decl*, clang::AttributeList const&, clang::Sema&) const"}, + {"_ZN12_GLOBAL__N_120MBlazeAttributesSemaD1Ev", "(anonymous namespace)::MBlazeAttributesSema::~MBlazeAttributesSema()"}, + {"_ZN12_GLOBAL__N_120MBlazeAttributesSemaD0Ev", "(anonymous namespace)::MBlazeAttributesSema::~MBlazeAttributesSema()"}, + {"_ZNK12_GLOBAL__N_120MBlazeAttributesSema20ProcessDeclAttributeEPN5clang5ScopeEPNS1_4DeclERKNS1_13AttributeListERNS1_4SemaE", "(anonymous namespace)::MBlazeAttributesSema::ProcessDeclAttribute(clang::Scope*, clang::Decl*, clang::AttributeList const&, clang::Sema&) const"}, + {"_ZN12_GLOBAL__N_120MSP430AttributesSemaD1Ev", "(anonymous namespace)::MSP430AttributesSema::~MSP430AttributesSema()"}, + {"_ZN12_GLOBAL__N_120MSP430AttributesSemaD0Ev", "(anonymous namespace)::MSP430AttributesSema::~MSP430AttributesSema()"}, + {"_ZNK12_GLOBAL__N_120MSP430AttributesSema20ProcessDeclAttributeEPN5clang5ScopeEPNS1_4DeclERKNS1_13AttributeListERNS1_4SemaE", "(anonymous namespace)::MSP430AttributesSema::ProcessDeclAttribute(clang::Scope*, clang::Decl*, clang::AttributeList const&, clang::Sema&) const"}, + {"_ZN5clang4ento34RegisterAdjustedReturnValueCheckerERNS0_10ExprEngineE", "clang::ento::RegisterAdjustedReturnValueChecker(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_126AdjustedReturnValueCheckerD1Ev", "(anonymous namespace)::AdjustedReturnValueChecker::~AdjustedReturnValueChecker()"}, + {"_ZN12_GLOBAL__N_126AdjustedReturnValueCheckerD0Ev", "(anonymous namespace)::AdjustedReturnValueChecker::~AdjustedReturnValueChecker()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_126AdjustedReturnValueCheckerEE9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::AdjustedReturnValueChecker>::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_126AdjustedReturnValueCheckerEE10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::AdjustedReturnValueChecker>::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_126AdjustedReturnValueCheckerEED1Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::AdjustedReturnValueChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_126AdjustedReturnValueCheckerEED0Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::AdjustedReturnValueChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento22CreateAnalysisConsumerERKNS_12PreprocessorERKSsRKNS_15AnalyzerOptionsE", "clang::ento::CreateAnalysisConsumer(clang::Preprocessor const&, std::string const&, clang::AnalyzerOptions const&)"}, + {"_Z13ActionCFGDumpRN12_GLOBAL__N_116AnalysisConsumerERN5clang4ento15AnalysisManagerEPNS2_4DeclE", "ActionCFGDump((anonymous namespace)::AnalysisConsumer&, clang::ento::AnalysisManager&, clang::Decl*)"}, + {"_Z13ActionCFGViewRN12_GLOBAL__N_116AnalysisConsumerERN5clang4ento15AnalysisManagerEPNS2_4DeclE", "ActionCFGView((anonymous namespace)::AnalysisConsumer&, clang::ento::AnalysisManager&, clang::Decl*)"}, + {"_Z26ActionDisplayLiveVariablesRN12_GLOBAL__N_116AnalysisConsumerERN5clang4ento15AnalysisManagerEPNS2_4DeclE", "ActionDisplayLiveVariables((anonymous namespace)::AnalysisConsumer&, clang::ento::AnalysisManager&, clang::Decl*)"}, + {"_Z29ActionSecuritySyntacticChecksRN12_GLOBAL__N_116AnalysisConsumerERN5clang4ento15AnalysisManagerEPNS2_4DeclE", "ActionSecuritySyntacticChecks((anonymous namespace)::AnalysisConsumer&, clang::ento::AnalysisManager&, clang::Decl*)"}, + {"_Z27ActionLLVMConventionCheckerRN12_GLOBAL__N_116AnalysisConsumerERN5clang4ento15AnalysisManagerERNS2_19TranslationUnitDeclE", "ActionLLVMConventionChecker((anonymous namespace)::AnalysisConsumer&, clang::ento::AnalysisManager&, clang::TranslationUnitDecl&)"}, + {"_Z20ActionWarnDeadStoresRN12_GLOBAL__N_116AnalysisConsumerERN5clang4ento15AnalysisManagerEPNS2_4DeclE", "ActionWarnDeadStores((anonymous namespace)::AnalysisConsumer&, clang::ento::AnalysisManager&, clang::Decl*)"}, + {"_Z20ActionWarnUninitValsRN12_GLOBAL__N_116AnalysisConsumerERN5clang4ento15AnalysisManagerEPNS2_4DeclE", "ActionWarnUninitVals((anonymous namespace)::AnalysisConsumer&, clang::ento::AnalysisManager&, clang::Decl*)"}, + {"_Z22ActionWarnObjCMethSigsRN12_GLOBAL__N_116AnalysisConsumerERN5clang4ento15AnalysisManagerEPNS2_4DeclE", "ActionWarnObjCMethSigs((anonymous namespace)::AnalysisConsumer&, clang::ento::AnalysisManager&, clang::Decl*)"}, + {"_Z21ActionWarnObjCDeallocRN12_GLOBAL__N_116AnalysisConsumerERN5clang4ento15AnalysisManagerEPNS2_4DeclE", "ActionWarnObjCDealloc((anonymous namespace)::AnalysisConsumer&, clang::ento::AnalysisManager&, clang::Decl*)"}, + {"_Z25ActionWarnObjCUnusedIvarsRN12_GLOBAL__N_116AnalysisConsumerERN5clang4ento15AnalysisManagerEPNS2_4DeclE", "ActionWarnObjCUnusedIvars((anonymous namespace)::AnalysisConsumer&, clang::ento::AnalysisManager&, clang::Decl*)"}, + {"_Z20ActionObjCMemCheckerRN12_GLOBAL__N_116AnalysisConsumerERN5clang4ento15AnalysisManagerEPNS2_4DeclE", "ActionObjCMemChecker((anonymous namespace)::AnalysisConsumer&, clang::ento::AnalysisManager&, clang::Decl*)"}, + {"_Z23ActionWarnSizeofPointerRN12_GLOBAL__N_116AnalysisConsumerERN5clang4ento15AnalysisManagerEPNS2_4DeclE", "ActionWarnSizeofPointer((anonymous namespace)::AnalysisConsumer&, clang::ento::AnalysisManager&, clang::Decl*)"}, + {"_Z23ActionObjCMemCheckerAuxRN12_GLOBAL__N_116AnalysisConsumerERN5clang4ento15AnalysisManagerEPNS2_4DeclEb", "ActionObjCMemCheckerAux((anonymous namespace)::AnalysisConsumer&, clang::ento::AnalysisManager&, clang::Decl*, bool)"}, + {"_ZN12_GLOBAL__N_111UbigraphVizD1Ev", "(anonymous namespace)::UbigraphViz::~UbigraphViz()"}, + {"_ZN12_GLOBAL__N_111UbigraphVizD0Ev", "(anonymous namespace)::UbigraphViz::~UbigraphViz()"}, + {"_ZN12_GLOBAL__N_111UbigraphViz7AddEdgeEPN5clang4ento12ExplodedNodeES4_", "(anonymous namespace)::UbigraphViz::AddEdge(clang::ento::ExplodedNode*, clang::ento::ExplodedNode*)"}, + + // {"_ZNSt6vectorIPFvRN12_GLOBAL__N_116AnalysisConsumerERN5clang4ento15AnalysisManagerEPNS3_4DeclEESaISA_EE9push_backERKSA_", + // "std::vector>::push_back(void (* const&)((anonymous namespace)::AnalysisConsumer&, clang::ento::AnalysisManager&, clang::Decl*))"}, + // got error + + {"_ZN12_GLOBAL__N_116AnalysisConsumerD1Ev", "(anonymous namespace)::AnalysisConsumer::~AnalysisConsumer()"}, + {"_ZN12_GLOBAL__N_116AnalysisConsumerD0Ev", "(anonymous namespace)::AnalysisConsumer::~AnalysisConsumer()"}, + {"_ZN12_GLOBAL__N_116AnalysisConsumer10InitializeERN5clang10ASTContextE", "(anonymous namespace)::AnalysisConsumer::Initialize(clang::ASTContext&)"}, + {"_ZN12_GLOBAL__N_116AnalysisConsumer21HandleTranslationUnitERN5clang10ASTContextE", "(anonymous namespace)::AnalysisConsumer::HandleTranslationUnit(clang::ASTContext&)"}, + {"_ZN12_GLOBAL__N_116AnalysisConsumer17HandleDeclContextERN5clang10ASTContextEPNS1_11DeclContextE", "(anonymous namespace)::AnalysisConsumer::HandleDeclContext(clang::ASTContext&, clang::DeclContext*)"}, + {"_ZN12_GLOBAL__N_116AnalysisConsumer15DisplayFunctionEPKN5clang4DeclE", "(anonymous namespace)::AnalysisConsumer::DisplayFunction(clang::Decl const*)"}, + + // {"_ZN12_GLOBAL__N_116AnalysisConsumer10HandleCodeEPN5clang4DeclERSt6vectorIPFvRS0_RNS1_4ento15AnalysisManagerES3_ESaISA_EE", + // "(anonymous namespace)::AnalysisConsumer::HandleCode(clang::Decl*, std::vector>&)"}, + // got error + + {"_Z10FindBlocksPN5clang11DeclContextERN4llvm15SmallVectorImplIPNS_4DeclEEE", "FindBlocks(clang::DeclContext*, llvm::SmallVectorImpl&)"}, + {"_ZN5clang4ento11BugReporter22GeneratePathDiagnosticERNS0_14PathDiagnosticERN4llvm15SmallVectorImplIPNS0_9BugReportEEE", "clang::ento::BugReporter::GeneratePathDiagnostic(clang::ento::PathDiagnostic&, llvm::SmallVectorImpl&)"}, + {"_ZN4llvm14ImutAVLFactoryINS_17ImutContainerInfoIPN5clang4ento7BugTypeEEEEC2Ev", "llvm::ImutAVLFactory>::ImutAVLFactory()"}, + {"_ZN4llvm8DenseMapIPvjNS_12DenseMapInfoIS1_EENS2_IjEEE16InsertIntoBucketERKS1_RKjPSt4pairIS1_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(void* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPvjNS_12DenseMapInfoIS1_EENS2_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang4ento15AnalysisManagerD1Ev", "clang::ento::AnalysisManager::~AnalysisManager()"}, + {"_ZN5clang4ento15AnalysisManagerD0Ev", "clang::ento::AnalysisManager::~AnalysisManager()"}, + {"_ZN5clang4ento15AnalysisManager13getDiagnosticEv", "clang::ento::AnalysisManager::getDiagnostic()"}, + {"_ZN5clang4ento15AnalysisManager23getPathDiagnosticClientEv", "clang::ento::AnalysisManager::getPathDiagnosticClient()"}, + {"_ZN5clang4ento15AnalysisManager13getASTContextEv", "clang::ento::AnalysisManager::getASTContext()"}, + {"_ZN5clang4ento15AnalysisManager16getSourceManagerEv", "clang::ento::AnalysisManager::getSourceManager()"}, + {"_ZN5clang4ento15AnalysisManagerD2Ev", "clang::ento::AnalysisManager::~AnalysisManager()"}, + {"_ZN4llvm10FoldingSetIN5clang15LocationContextEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang15LocationContextEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang15LocationContextEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang15LocationContextEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang15LocationContextEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN5clang4ento28RegisterAnalyzerStatsCheckerERNS0_10ExprEngineE", "clang::ento::RegisterAnalyzerStatsChecker(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_120AnalyzerStatsCheckerD1Ev", "(anonymous namespace)::AnalyzerStatsChecker::~AnalyzerStatsChecker()"}, + {"_ZN12_GLOBAL__N_120AnalyzerStatsCheckerD0Ev", "(anonymous namespace)::AnalyzerStatsChecker::~AnalyzerStatsChecker()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_120AnalyzerStatsCheckerEE9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::AnalyzerStatsChecker>::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_120AnalyzerStatsCheckerEE10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::AnalyzerStatsChecker>::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN12_GLOBAL__N_120AnalyzerStatsChecker16VisitEndAnalysisERN5clang4ento13ExplodedGraphERNS2_11BugReporterERNS2_10ExprEngineE", "(anonymous namespace)::AnalyzerStatsChecker::VisitEndAnalysis(clang::ento::ExplodedGraph&, clang::ento::BugReporter&, clang::ento::ExprEngine&)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_120AnalyzerStatsCheckerEED1Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::AnalyzerStatsChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_120AnalyzerStatsCheckerEED0Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::AnalyzerStatsChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento25RegisterArrayBoundCheckerERNS0_10ExprEngineE", "clang::ento::RegisterArrayBoundChecker(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_117ArrayBoundCheckerD1Ev", "(anonymous namespace)::ArrayBoundChecker::~ArrayBoundChecker()"}, + {"_ZN12_GLOBAL__N_117ArrayBoundCheckerD0Ev", "(anonymous namespace)::ArrayBoundChecker::~ArrayBoundChecker()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_117ArrayBoundCheckerEE9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::ArrayBoundChecker>::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_117ArrayBoundCheckerEE10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::ArrayBoundChecker>::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN12_GLOBAL__N_117ArrayBoundChecker13visitLocationERN5clang4ento14CheckerContextEPKNS1_4StmtENS2_4SValEb", "(anonymous namespace)::ArrayBoundChecker::visitLocation(clang::ento::CheckerContext&, clang::Stmt const*, clang::ento::SVal, bool)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_117ArrayBoundCheckerEED1Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::ArrayBoundChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_117ArrayBoundCheckerEED0Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::ArrayBoundChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento27RegisterArrayBoundCheckerV2ERNS0_10ExprEngineE", "clang::ento::RegisterArrayBoundCheckerV2(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_119ArrayBoundCheckerV2D1Ev", "(anonymous namespace)::ArrayBoundCheckerV2::~ArrayBoundCheckerV2()"}, + {"_ZN12_GLOBAL__N_119ArrayBoundCheckerV2D0Ev", "(anonymous namespace)::ArrayBoundCheckerV2::~ArrayBoundCheckerV2()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_119ArrayBoundCheckerV2EE9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::ArrayBoundCheckerV2>::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_119ArrayBoundCheckerV2EE10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::ArrayBoundCheckerV2>::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN12_GLOBAL__N_119ArrayBoundCheckerV213visitLocationERN5clang4ento14CheckerContextEPKNS1_4StmtENS2_4SValEb", "(anonymous namespace)::ArrayBoundCheckerV2::visitLocation(clang::ento::CheckerContext&, clang::Stmt const*, clang::ento::SVal, bool)"}, + {"_ZN12_GLOBAL__N_119ArrayBoundCheckerV29reportOOBERN5clang4ento14CheckerContextEPKNS2_7GRStateENS0_8OOB_KindE", "(anonymous namespace)::ArrayBoundCheckerV2::reportOOB(clang::ento::CheckerContext&, clang::ento::GRState const*, (anonymous namespace)::ArrayBoundCheckerV2::OOB_Kind)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_119ArrayBoundCheckerV2EED1Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::ArrayBoundCheckerV2>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_119ArrayBoundCheckerV2EED0Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::ArrayBoundCheckerV2>::~CheckerVisitor()"}, + {"_ZN5clang4ento10BuiltinBugC2EPKc", "clang::ento::BuiltinBug::BuiltinBug(char const*)"}, + {"_ZN5clang4ento10BuiltinBugD1Ev", "clang::ento::BuiltinBug::~BuiltinBug()"}, + {"_ZN5clang4ento10BuiltinBugD0Ev", "clang::ento::BuiltinBug::~BuiltinBug()"}, + {"_ZN5clang4ento26RegisterAttrNonNullCheckerERNS0_10ExprEngineE", "clang::ento::RegisterAttrNonNullChecker(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_118AttrNonNullCheckerD1Ev", "(anonymous namespace)::AttrNonNullChecker::~AttrNonNullChecker()"}, + {"_ZN12_GLOBAL__N_118AttrNonNullCheckerD0Ev", "(anonymous namespace)::AttrNonNullChecker::~AttrNonNullChecker()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_118AttrNonNullCheckerEE9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::AttrNonNullChecker>::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_118AttrNonNullCheckerEE10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::AttrNonNullChecker>::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_118AttrNonNullCheckerEED1Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::AttrNonNullChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_118AttrNonNullCheckerEED0Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::AttrNonNullChecker>::~CheckerVisitor()"}, + {"_ZNK5clang4Decl7getAttrINS_11NonNullAttrEEEPT_v", "clang::NonNullAttr* clang::Decl::getAttr() const"}, + {"_ZN5clang4ento19RegisterAppleChecksERNS0_10ExprEngineERKNS_4DeclE", "clang::ento::RegisterAppleChecks(clang::ento::ExprEngine&, clang::Decl const&)"}, + {"_ZN12_GLOBAL__N_119ClassReleaseCheckerD1Ev", "(anonymous namespace)::ClassReleaseChecker::~ClassReleaseChecker()"}, + {"_ZN12_GLOBAL__N_119ClassReleaseCheckerD0Ev", "(anonymous namespace)::ClassReleaseChecker::~ClassReleaseChecker()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_119ClassReleaseCheckerEE9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::ClassReleaseChecker>::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_119ClassReleaseCheckerEE10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::ClassReleaseChecker>::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN12_GLOBAL__N_119ClassReleaseChecker19preVisitObjCMessageERN5clang4ento14CheckerContextENS2_11ObjCMessageE", "(anonymous namespace)::ClassReleaseChecker::preVisitObjCMessage(clang::ento::CheckerContext&, clang::ento::ObjCMessage)"}, + {"_ZN12_GLOBAL__N_19APIMisuseD1Ev", "(anonymous namespace)::APIMisuse::~APIMisuse()"}, + {"_ZN12_GLOBAL__N_19APIMisuseD0Ev", "(anonymous namespace)::APIMisuse::~APIMisuse()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_119ClassReleaseCheckerEED1Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::ClassReleaseChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_119ClassReleaseCheckerEED0Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::ClassReleaseChecker>::~CheckerVisitor()"}, + {"_ZN12_GLOBAL__N_122CFRetainReleaseCheckerD1Ev", "(anonymous namespace)::CFRetainReleaseChecker::~CFRetainReleaseChecker()"}, + {"_ZN12_GLOBAL__N_122CFRetainReleaseCheckerD0Ev", "(anonymous namespace)::CFRetainReleaseChecker::~CFRetainReleaseChecker()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_122CFRetainReleaseCheckerEE9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::CFRetainReleaseChecker>::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_122CFRetainReleaseCheckerEE10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::CFRetainReleaseChecker>::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_122CFRetainReleaseCheckerEED1Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::CFRetainReleaseChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_122CFRetainReleaseCheckerEED0Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::CFRetainReleaseChecker>::~CheckerVisitor()"}, + {"_ZN12_GLOBAL__N_121CFNumberCreateCheckerD1Ev", "(anonymous namespace)::CFNumberCreateChecker::~CFNumberCreateChecker()"}, + {"_ZN12_GLOBAL__N_121CFNumberCreateCheckerD0Ev", "(anonymous namespace)::CFNumberCreateChecker::~CFNumberCreateChecker()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_121CFNumberCreateCheckerEE9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::CFNumberCreateChecker>::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_121CFNumberCreateCheckerEE10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::CFNumberCreateChecker>::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_121CFNumberCreateCheckerEED1Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::CFNumberCreateChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_121CFNumberCreateCheckerEED0Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::CFNumberCreateChecker>::~CheckerVisitor()"}, + {"_ZN12_GLOBAL__N_113NilArgCheckerD1Ev", "(anonymous namespace)::NilArgChecker::~NilArgChecker()"}, + {"_ZN12_GLOBAL__N_113NilArgCheckerD0Ev", "(anonymous namespace)::NilArgChecker::~NilArgChecker()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_113NilArgCheckerEE9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::NilArgChecker>::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_113NilArgCheckerEE10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::NilArgChecker>::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN12_GLOBAL__N_113NilArgChecker19preVisitObjCMessageERN5clang4ento14CheckerContextENS2_11ObjCMessageE", "(anonymous namespace)::NilArgChecker::preVisitObjCMessage(clang::ento::CheckerContext&, clang::ento::ObjCMessage)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_113NilArgCheckerEED1Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::NilArgChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_113NilArgCheckerEED0Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::NilArgChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerContext12generateNodeEb", "clang::ento::CheckerContext::generateNode(bool)"}, + {"_ZN5clang4ento30RegisterBuiltinFunctionCheckerERNS0_10ExprEngineE", "clang::ento::RegisterBuiltinFunctionChecker(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_122BuiltinFunctionCheckerD1Ev", "(anonymous namespace)::BuiltinFunctionChecker::~BuiltinFunctionChecker()"}, + {"_ZN12_GLOBAL__N_122BuiltinFunctionCheckerD0Ev", "(anonymous namespace)::BuiltinFunctionChecker::~BuiltinFunctionChecker()"}, + {"_ZN12_GLOBAL__N_122BuiltinFunctionChecker12evalCallExprERN5clang4ento14CheckerContextEPKNS1_8CallExprE", "(anonymous namespace)::BuiltinFunctionChecker::evalCallExpr(clang::ento::CheckerContext&, clang::CallExpr const*)"}, + {"_ZN5clang4ento22RegisterCStringCheckerERNS0_10ExprEngineE", "clang::ento::RegisterCStringChecker(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_114CStringCheckerD1Ev", "(anonymous namespace)::CStringChecker::~CStringChecker()"}, + {"_ZN12_GLOBAL__N_114CStringCheckerD0Ev", "(anonymous namespace)::CStringChecker::~CStringChecker()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_114CStringCheckerEE9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::CStringChecker>::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_114CStringCheckerEE10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::CStringChecker>::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN12_GLOBAL__N_114CStringChecker15evalDeadSymbolsERN5clang4ento14CheckerContextERNS2_12SymbolReaperE", "(anonymous namespace)::CStringChecker::evalDeadSymbols(clang::ento::CheckerContext&, clang::ento::SymbolReaper&)"}, + {"_ZN12_GLOBAL__N_114CStringChecker15MarkLiveSymbolsEPKN5clang4ento7GRStateERNS2_12SymbolReaperE", "(anonymous namespace)::CStringChecker::MarkLiveSymbols(clang::ento::GRState const*, clang::ento::SymbolReaper&)"}, + {"_ZN12_GLOBAL__N_114CStringChecker12evalCallExprERN5clang4ento14CheckerContextEPKNS1_8CallExprE", "(anonymous namespace)::CStringChecker::evalCallExpr(clang::ento::CheckerContext&, clang::CallExpr const*)"}, + {"_ZN12_GLOBAL__N_114CStringChecker23wantsRegionChangeUpdateEPKN5clang4ento7GRStateE", "(anonymous namespace)::CStringChecker::wantsRegionChangeUpdate(clang::ento::GRState const*)"}, + {"_ZN12_GLOBAL__N_114CStringChecker17EvalRegionChangesEPKN5clang4ento7GRStateEPKPKNS2_9MemRegionESA_Pb", "(anonymous namespace)::CStringChecker::EvalRegionChanges(clang::ento::GRState const*, clang::ento::MemRegion const* const*, clang::ento::MemRegion const* const*, bool*)"}, + {"_ZNK5clang4ento7GRState3setIN12_GLOBAL__N_113CStringLengthEEEPKS1_NS0_12GRStateTraitIT_E9data_typeE", "clang::ento::GRState const* clang::ento::GRState::set<(anonymous namespace)::CStringLength>(clang::ento::GRStateTrait<(anonymous namespace)::CStringLength>::data_type) const"}, + {"_ZN12_GLOBAL__N_114CStringChecker10evalMemcpyERN5clang4ento14CheckerContextEPKNS1_8CallExprE", "(anonymous namespace)::CStringChecker::evalMemcpy(clang::ento::CheckerContext&, clang::CallExpr const*)"}, + {"_ZN12_GLOBAL__N_114CStringChecker10evalMemcmpERN5clang4ento14CheckerContextEPKNS1_8CallExprE", "(anonymous namespace)::CStringChecker::evalMemcmp(clang::ento::CheckerContext&, clang::CallExpr const*)"}, + {"_ZN12_GLOBAL__N_114CStringChecker11evalMemmoveERN5clang4ento14CheckerContextEPKNS1_8CallExprE", "(anonymous namespace)::CStringChecker::evalMemmove(clang::ento::CheckerContext&, clang::CallExpr const*)"}, + {"_ZN12_GLOBAL__N_114CStringChecker10evalStrcpyERN5clang4ento14CheckerContextEPKNS1_8CallExprE", "(anonymous namespace)::CStringChecker::evalStrcpy(clang::ento::CheckerContext&, clang::CallExpr const*)"}, + {"_ZN12_GLOBAL__N_114CStringChecker10evalStpcpyERN5clang4ento14CheckerContextEPKNS1_8CallExprE", "(anonymous namespace)::CStringChecker::evalStpcpy(clang::ento::CheckerContext&, clang::CallExpr const*)"}, + {"_ZN12_GLOBAL__N_114CStringChecker13evalstrLengthERN5clang4ento14CheckerContextEPKNS1_8CallExprE", "(anonymous namespace)::CStringChecker::evalstrLength(clang::ento::CheckerContext&, clang::CallExpr const*)"}, + {"_ZN12_GLOBAL__N_114CStringChecker9evalBcopyERN5clang4ento14CheckerContextEPKNS1_8CallExprE", "(anonymous namespace)::CStringChecker::evalBcopy(clang::ento::CheckerContext&, clang::CallExpr const*)"}, + {"_ZN12_GLOBAL__N_114CStringChecker14evalCopyCommonERN5clang4ento14CheckerContextEPKNS2_7GRStateEPKNS1_4ExprESA_SA_b", "(anonymous namespace)::CStringChecker::evalCopyCommon(clang::ento::CheckerContext&, clang::ento::GRState const*, clang::Expr const*, clang::Expr const*, clang::Expr const*, bool)"}, + {"_ZN12_GLOBAL__N_114CStringChecker10assumeZeroERN5clang4ento14CheckerContextEPKNS2_7GRStateENS2_4SValENS1_8QualTypeE", "(anonymous namespace)::CStringChecker::assumeZero(clang::ento::CheckerContext&, clang::ento::GRState const*, clang::ento::SVal, clang::QualType)"}, + {"_ZN12_GLOBAL__N_114CStringChecker17CheckBufferAccessERN5clang4ento14CheckerContextEPKNS2_7GRStateEPKNS1_4ExprESA_SA_b", "(anonymous namespace)::CStringChecker::CheckBufferAccess(clang::ento::CheckerContext&, clang::ento::GRState const*, clang::Expr const*, clang::Expr const*, clang::Expr const*, bool)"}, + {"_ZN12_GLOBAL__N_114CStringChecker16InvalidateBufferERN5clang4ento14CheckerContextEPKNS2_7GRStateEPKNS1_4ExprENS2_4SValE", "(anonymous namespace)::CStringChecker::InvalidateBuffer(clang::ento::CheckerContext&, clang::ento::GRState const*, clang::Expr const*, clang::ento::SVal)"}, + {"_ZN12_GLOBAL__N_114CStringChecker14emitOverlapBugERN5clang4ento14CheckerContextEPKNS2_7GRStateEPKNS1_4StmtESA_", "(anonymous namespace)::CStringChecker::emitOverlapBug(clang::ento::CheckerContext&, clang::ento::GRState const*, clang::Stmt const*, clang::Stmt const*)"}, + {"_ZN12_GLOBAL__N_114CStringChecker12checkNonNullERN5clang4ento14CheckerContextEPKNS2_7GRStateEPKNS1_4ExprENS2_4SValE", "(anonymous namespace)::CStringChecker::checkNonNull(clang::ento::CheckerContext&, clang::ento::GRState const*, clang::Expr const*, clang::ento::SVal)"}, + {"_ZN12_GLOBAL__N_114CStringChecker13CheckLocationERN5clang4ento14CheckerContextEPKNS2_7GRStateEPKNS1_4ExprENS2_4SValEb", "(anonymous namespace)::CStringChecker::CheckLocation(clang::ento::CheckerContext&, clang::ento::GRState const*, clang::Expr const*, clang::ento::SVal, bool)"}, + {"_ZN12_GLOBAL__N_114CStringChecker16getCStringLengthERN5clang4ento14CheckerContextERPKNS2_7GRStateEPKNS1_4ExprENS2_4SValE", "(anonymous namespace)::CStringChecker::getCStringLength(clang::ento::CheckerContext&, clang::ento::GRState const*&, clang::Expr const*, clang::ento::SVal)"}, + + // {"_ZNK5clang4ento7GRState3setIN12_GLOBAL__N_113CStringLengthEEEPKS1_NS0_12GRStateTraitIT_E8key_typeENS9_10value_typeE", + // "clang::ento::GRState const* clang::ento::GRState::set<(anonymous namespace)::CStringLength>(clang::ento::GRStateTrait<(anonymous namespace)::CStringLength>::key_type, clang::ento::GRStateTrait<(anonymous namespace)::CStringLength>::value_type) const"}, + // "clang::ento::GRState const* clang::ento::GRState::set<(anonymous namespace)::CStringLength>(clang::ento::GRStateTrait<(anonymous namespace)::CStringLength>::key_type, clang::ento::GRStateTrait<(anonymous namespace)::CStringLength>::key_type::value_type) const" was returned + + {"_ZN12_GLOBAL__N_114CStringChecker16evalStrcpyCommonERN5clang4ento14CheckerContextEPKNS1_8CallExprEb", "(anonymous namespace)::CStringChecker::evalStrcpyCommon(clang::ento::CheckerContext&, clang::CallExpr const*, bool)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_114CStringCheckerEED1Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::CStringChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_114CStringCheckerEED0Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::CStringChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento19GRStatePartialTraitIN4llvm12ImmutableMapIPKNS0_9MemRegionENS0_4SValENS2_16ImutKeyValueInfoIS6_S7_EEEEE13CreateContextERNS2_16BumpPtrAllocatorE", "clang::ento::GRStatePartialTrait>>::CreateContext(llvm::BumpPtrAllocator&)"}, + {"_ZN5clang4ento19GRStatePartialTraitIN4llvm12ImmutableMapIPKNS0_9MemRegionENS0_4SValENS2_16ImutKeyValueInfoIS6_S7_EEEEE13DeleteContextEPv", "clang::ento::GRStatePartialTrait>>::DeleteContext(void*)"}, + {"_ZN5clang4ento19GRStatePartialTraitIN4llvm12ImmutableMapIPKNS0_9MemRegionENS0_4SValENS2_16ImutKeyValueInfoIS6_S7_EEEEE3SetESA_S6_S7_RNSA_7FactoryE", "clang::ento::GRStatePartialTrait>>::Set(llvm::ImmutableMap>, clang::ento::MemRegion const*, clang::ento::SVal, llvm::ImmutableMap>::Factory&)"}, + {"_ZN5clang4ento29RegisterCallAndMessageCheckerERNS0_10ExprEngineE", "clang::ento::RegisterCallAndMessageChecker(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_121CallAndMessageCheckerD1Ev", "(anonymous namespace)::CallAndMessageChecker::~CallAndMessageChecker()"}, + {"_ZN12_GLOBAL__N_121CallAndMessageCheckerD0Ev", "(anonymous namespace)::CallAndMessageChecker::~CallAndMessageChecker()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_121CallAndMessageCheckerEE9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::CallAndMessageChecker>::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_121CallAndMessageCheckerEE10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::CallAndMessageChecker>::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN12_GLOBAL__N_121CallAndMessageChecker19preVisitObjCMessageERN5clang4ento14CheckerContextENS2_11ObjCMessageE", "(anonymous namespace)::CallAndMessageChecker::preVisitObjCMessage(clang::ento::CheckerContext&, clang::ento::ObjCMessage)"}, + {"_ZN12_GLOBAL__N_121CallAndMessageChecker15evalNilReceiverERN5clang4ento14CheckerContextENS2_11ObjCMessageE", "(anonymous namespace)::CallAndMessageChecker::evalNilReceiver(clang::ento::CheckerContext&, clang::ento::ObjCMessage)"}, + {"_ZN12_GLOBAL__N_121CallAndMessageChecker18emitNilReceiverBugERN5clang4ento14CheckerContextERKNS2_11ObjCMessageEPNS2_12ExplodedNodeE", "(anonymous namespace)::CallAndMessageChecker::emitNilReceiverBug(clang::ento::CheckerContext&, clang::ento::ObjCMessage const&, clang::ento::ExplodedNode*)"}, + {"_ZN12_GLOBAL__N_121CallAndMessageChecker19PreVisitProcessArgsERN5clang4ento14CheckerContextENS2_17CallOrObjCMessageEPKcRPNS2_7BugTypeE", "(anonymous namespace)::CallAndMessageChecker::PreVisitProcessArgs(clang::ento::CheckerContext&, clang::ento::CallOrObjCMessage, char const*, clang::ento::BugType*&)"}, + + // {"_ZZN12_GLOBAL__N_121CallAndMessageChecker18PreVisitProcessArgERN5clang4ento14CheckerContextENS2_4SValENS1_11SourceRangeEPKNS1_4ExprEPKcRPNS2_7BugTypeEEN22FindUninitializedField4FindEPKNS2_11TypedRegionE", + // "(anonymous namespace)::CallAndMessageChecker::PreVisitProcessArg(clang::ento::CheckerContext&, clang::ento::SVal, clang::SourceRange, clang::Expr const*, char const*, clang::ento::BugType*&)::FindUninitializedField::Find(clang::ento::TypedRegion const*)"}, + // "(anonymous namespace)::CallAndMessageChecker::PreVisitProcessArg(clang::ento::CheckerContext&, clang::SVal, (anonymous namespace)::CallAndMessageChecker::PreVisitProcessArg::SourceRange, (anonymous namespace)::CallAndMessageChecker::PreVisitProcessArg::Expr const*, char const*, clang::BugType*&)::FindUninitializedField::Find(clang::TypedRegion const*)" was returned + + {"_ZN12_GLOBAL__N_121CallAndMessageChecker11EmitBadCallEPN5clang4ento7BugTypeERNS2_14CheckerContextEPKNS1_8CallExprE", "(anonymous namespace)::CallAndMessageChecker::EmitBadCall(clang::ento::BugType*, clang::ento::CheckerContext&, clang::CallExpr const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_121CallAndMessageCheckerEED1Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::CallAndMessageChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_121CallAndMessageCheckerEED0Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::CallAndMessageChecker>::~CheckerVisitor()"}, + {"_ZNK5clang4ento17CallOrObjCMessage10getArgSValEj", "clang::ento::CallOrObjCMessage::getArgSVal(unsigned int) const"}, + {"_ZN5clang4ento23RegisterCastSizeCheckerERNS0_10ExprEngineE", "clang::ento::RegisterCastSizeChecker(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_115CastSizeCheckerD1Ev", "(anonymous namespace)::CastSizeChecker::~CastSizeChecker()"}, + {"_ZN12_GLOBAL__N_115CastSizeCheckerD0Ev", "(anonymous namespace)::CastSizeChecker::~CastSizeChecker()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_115CastSizeCheckerEE9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::CastSizeChecker>::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_115CastSizeCheckerEE10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::CastSizeChecker>::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN12_GLOBAL__N_115CastSizeChecker16PreVisitCastExprERN5clang4ento14CheckerContextEPKNS1_8CastExprE", "(anonymous namespace)::CastSizeChecker::PreVisitCastExpr(clang::ento::CheckerContext&, clang::CastExpr const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_115CastSizeCheckerEED1Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::CastSizeChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_115CastSizeCheckerEED0Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::CastSizeChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento10BuiltinBugC2EPKcS3_", "clang::ento::BuiltinBug::BuiltinBug(char const*, char const*)"}, + {"_ZN5clang4ento27RegisterCastToStructCheckerERNS0_10ExprEngineE", "clang::ento::RegisterCastToStructChecker(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_119CastToStructCheckerD1Ev", "(anonymous namespace)::CastToStructChecker::~CastToStructChecker()"}, + {"_ZN12_GLOBAL__N_119CastToStructCheckerD0Ev", "(anonymous namespace)::CastToStructChecker::~CastToStructChecker()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_119CastToStructCheckerEE9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::CastToStructChecker>::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_119CastToStructCheckerEE10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::CastToStructChecker>::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN12_GLOBAL__N_119CastToStructChecker16PreVisitCastExprERN5clang4ento14CheckerContextEPKNS1_8CastExprE", "(anonymous namespace)::CastToStructChecker::PreVisitCastExpr(clang::ento::CheckerContext&, clang::CastExpr const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_119CastToStructCheckerEED1Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::CastToStructChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_119CastToStructCheckerEED0Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::CastToStructChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento16CheckObjCDeallocEPKNS_22ObjCImplementationDeclERKNS_11LangOptionsERNS0_11BugReporterE", "clang::ento::CheckObjCDealloc(clang::ObjCImplementationDecl const*, clang::LangOptions const&, clang::ento::BugReporter&)"}, + {"_Z12scan_deallocPN5clang4StmtENS_8SelectorE", "scan_dealloc(clang::Stmt*, clang::Selector)"}, + {"_Z17scan_ivar_releasePN5clang4StmtEPNS_12ObjCIvarDeclEPKNS_16ObjCPropertyDeclENS_8SelectorEPNS_14IdentifierInfoERNS_10ASTContextE", "scan_ivar_release(clang::Stmt*, clang::ObjCIvarDecl*, clang::ObjCPropertyDecl const*, clang::Selector, clang::IdentifierInfo*, clang::ASTContext&)"}, + {"_ZN5clang4ento26CheckObjCInstMethSignatureEPKNS_22ObjCImplementationDeclERNS0_11BugReporterE", "clang::ento::CheckObjCInstMethSignature(clang::ObjCImplementationDecl const*, clang::ento::BugReporter&)"}, + {"_ZN4llvm8DenseMapIN5clang8SelectorEPNS1_14ObjCMethodDeclENS_12DenseMapInfoIS2_EENS5_IS4_EEE16InsertIntoBucketERKS2_RKS4_PSt4pairIS2_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::Selector const&, clang::ObjCMethodDecl* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIN5clang8SelectorEPNS1_14ObjCMethodDeclENS_12DenseMapInfoIS2_EENS5_IS4_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang4ento23CheckSecuritySyntaxOnlyEPKNS_4DeclERNS0_11BugReporterE", "clang::ento::CheckSecuritySyntaxOnly(clang::Decl const*, clang::ento::BugReporter&)"}, + {"_ZN5clang11StmtVisitorIN12_GLOBAL__N_17WalkASTEvE5VisitEPNS_4StmtE", "clang::StmtVisitor<(anonymous namespace)::WalkAST, void>::Visit(clang::Stmt*)"}, + {"_ZN12_GLOBAL__N_17WalkAST13VisitCallExprEPN5clang8CallExprE", "(anonymous namespace)::WalkAST::VisitCallExpr(clang::CallExpr*)"}, + {"_ZN12_GLOBAL__N_17WalkAST13VisitChildrenEPN5clang4StmtE", "(anonymous namespace)::WalkAST::VisitChildren(clang::Stmt*)"}, + {"_Z17GetIncrementedVarPKN5clang4ExprEPKNS_7VarDeclES5_", "GetIncrementedVar(clang::Expr const*, clang::VarDecl const*, clang::VarDecl const*)"}, + {"_ZN5clang4ento18CheckSizeofPointerEPKNS_4DeclERNS0_11BugReporterE", "clang::ento::CheckSizeofPointer(clang::Decl const*, clang::ento::BugReporter&)"}, + {"_ZN5clang11StmtVisitorIN12_GLOBAL__N_17WalkASTEvE5VisitEPNS_4StmtE", "clang::StmtVisitor<(anonymous namespace)::WalkAST, void>::Visit(clang::Stmt*)"}, + {"_ZN12_GLOBAL__N_17WalkAST13VisitChildrenEPN5clang4StmtE", "(anonymous namespace)::WalkAST::VisitChildren(clang::Stmt*)"}, + {"_ZN5clang4ento21RegisterChrootCheckerERNS0_10ExprEngineE", "clang::ento::RegisterChrootChecker(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_113ChrootCheckerD1Ev", "(anonymous namespace)::ChrootChecker::~ChrootChecker()"}, + {"_ZN12_GLOBAL__N_113ChrootCheckerD0Ev", "(anonymous namespace)::ChrootChecker::~ChrootChecker()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_113ChrootCheckerEE9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::ChrootChecker>::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_113ChrootCheckerEE10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::ChrootChecker>::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN12_GLOBAL__N_113ChrootChecker12evalCallExprERN5clang4ento14CheckerContextEPKNS1_8CallExprE", "(anonymous namespace)::ChrootChecker::evalCallExpr(clang::ento::CheckerContext&, clang::CallExpr const*)"}, + {"_ZN12_GLOBAL__N_113ChrootChecker16PreVisitCallExprERN5clang4ento14CheckerContextEPKNS1_8CallExprE", "(anonymous namespace)::ChrootChecker::PreVisitCallExpr(clang::ento::CheckerContext&, clang::CallExpr const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_113ChrootCheckerEED1Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::ChrootChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_113ChrootCheckerEED0Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::ChrootChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento15CheckDeadStoresERNS_3CFGERNS_13LiveVariablesERNS_9ParentMapERNS0_11BugReporterE", "clang::ento::CheckDeadStores(clang::CFG&, clang::LiveVariables&, clang::ParentMap&, clang::ento::BugReporter&)"}, + {"_ZN12_GLOBAL__N_112DeadStoreObsD1Ev", "(anonymous namespace)::DeadStoreObs::~DeadStoreObs()"}, + {"_ZN5clang11StmtVisitorIN12_GLOBAL__N_111FindEscapedEvE5VisitEPNS_4StmtE", "clang::StmtVisitor<(anonymous namespace)::FindEscaped, void>::Visit(clang::Stmt*)"}, + {"_ZN12_GLOBAL__N_111FindEscaped18VisitUnaryOperatorEPN5clang13UnaryOperatorE", "(anonymous namespace)::FindEscaped::VisitUnaryOperator(clang::UnaryOperator*)"}, + {"_ZN5clang14CFGStmtVisitorIN12_GLOBAL__N_111FindEscapedEvE13VisitChildrenEPNS_4StmtE", "clang::CFGStmtVisitor<(anonymous namespace)::FindEscaped, void>::VisitChildren(clang::Stmt*)"}, + {"_ZN12_GLOBAL__N_112DeadStoreObsD0Ev", "(anonymous namespace)::DeadStoreObs::~DeadStoreObs()"}, + {"_ZN12_GLOBAL__N_112DeadStoreObs11ObserveStmtEPN5clang4StmtERKNS1_24LiveVariables_ValueTypes14AnalysisDataTyERKNS1_23StmtDeclBitVector_Types5ValTyE", "(anonymous namespace)::DeadStoreObs::ObserveStmt(clang::Stmt*, clang::LiveVariables_ValueTypes::AnalysisDataTy const&, clang::StmtDeclBitVector_Types::ValTy const&)"}, + {"_ZN12_GLOBAL__N_112DeadStoreObs12CheckVarDeclEPN5clang7VarDeclEPNS1_4ExprES5_NS0_13DeadStoreKindERKNS1_24LiveVariables_ValueTypes14AnalysisDataTyERKNS1_23StmtDeclBitVector_Types5ValTyE", "(anonymous namespace)::DeadStoreObs::CheckVarDecl(clang::VarDecl*, clang::Expr*, clang::Expr*, (anonymous namespace)::DeadStoreObs::DeadStoreKind, clang::LiveVariables_ValueTypes::AnalysisDataTy const&, clang::StmtDeclBitVector_Types::ValTy const&)"}, + {"_ZN12_GLOBAL__N_112DeadStoreObs6ReportEPN5clang7VarDeclENS0_13DeadStoreKindENS1_14SourceLocationENS1_11SourceRangeE", "(anonymous namespace)::DeadStoreObs::Report(clang::VarDecl*, (anonymous namespace)::DeadStoreObs::DeadStoreKind, clang::SourceLocation, clang::SourceRange)"}, + {"_ZN5clang24LiveVariables_ValueTypes10ObserverTy12ObserverKillEPNS_11DeclRefExprE", "clang::LiveVariables_ValueTypes::ObserverTy::ObserverKill(clang::DeclRefExpr*)"}, + {"_ZN5clang24LiveVariables_ValueTypes10ObserverTyD1Ev", "clang::LiveVariables_ValueTypes::ObserverTy::~ObserverTy()"}, + {"_ZN5clang24LiveVariables_ValueTypes10ObserverTyD0Ev", "clang::LiveVariables_ValueTypes::ObserverTy::~ObserverTy()"}, + {"_ZN5clang24LiveVariables_ValueTypes10ObserverTy11ObserveStmtEPNS_4StmtERKNS0_14AnalysisDataTyERKNS_23StmtDeclBitVector_Types5ValTyE", "clang::LiveVariables_ValueTypes::ObserverTy::ObserveStmt(clang::Stmt*, clang::LiveVariables_ValueTypes::AnalysisDataTy const&, clang::StmtDeclBitVector_Types::ValTy const&)"}, + {"_ZN5clang4ento26RegisterDereferenceCheckerERNS0_10ExprEngineE", "clang::ento::RegisterDereferenceChecker(clang::ento::ExprEngine&)"}, + {"_ZN5clang4ento27GetImplicitNullDereferencesERNS0_10ExprEngineE", "clang::ento::GetImplicitNullDereferences(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_118DereferenceCheckerD1Ev", "(anonymous namespace)::DereferenceChecker::~DereferenceChecker()"}, + {"_ZN12_GLOBAL__N_118DereferenceCheckerD0Ev", "(anonymous namespace)::DereferenceChecker::~DereferenceChecker()"}, + {"_ZN12_GLOBAL__N_118DereferenceChecker13visitLocationERN5clang4ento14CheckerContextEPKNS1_4StmtENS2_4SValEb", "(anonymous namespace)::DereferenceChecker::visitLocation(clang::ento::CheckerContext&, clang::Stmt const*, clang::ento::SVal, bool)"}, + {"_ZN12_GLOBAL__N_118DereferenceChecker14AddDerefSourceERN4llvm11raw_ostreamERNS1_15SmallVectorImplIN5clang11SourceRangeEEEPKNS5_4ExprEb", "(anonymous namespace)::DereferenceChecker::AddDerefSource(llvm::raw_ostream&, llvm::SmallVectorImpl&, clang::Expr const*, bool)"}, + {"_ZN5clang4ento22RegisterDivZeroCheckerERNS0_10ExprEngineE", "clang::ento::RegisterDivZeroChecker(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_114DivZeroCheckerD1Ev", "(anonymous namespace)::DivZeroChecker::~DivZeroChecker()"}, + {"_ZN12_GLOBAL__N_114DivZeroCheckerD0Ev", "(anonymous namespace)::DivZeroChecker::~DivZeroChecker()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_114DivZeroCheckerEE9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::DivZeroChecker>::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_114DivZeroCheckerEE10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::DivZeroChecker>::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN12_GLOBAL__N_114DivZeroChecker22PreVisitBinaryOperatorERN5clang4ento14CheckerContextEPKNS1_14BinaryOperatorE", "(anonymous namespace)::DivZeroChecker::PreVisitBinaryOperator(clang::ento::CheckerContext&, clang::BinaryOperator const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_114DivZeroCheckerEED1Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::DivZeroChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_114DivZeroCheckerEED0Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::DivZeroChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento26RegisterExperimentalChecksERNS0_10ExprEngineE", "clang::ento::RegisterExperimentalChecks(clang::ento::ExprEngine&)"}, + {"_ZN5clang4ento34RegisterExperimentalInternalChecksERNS0_10ExprEngineE", "clang::ento::RegisterExperimentalInternalChecks(clang::ento::ExprEngine&)"}, + {"_ZN5clang4ento10ExprEngine12CheckerVisitEPKNS_4StmtERNS0_15ExplodedNodeSetES6_NS1_12CallbackKindE", "clang::ento::ExprEngine::CheckerVisit(clang::Stmt const*, clang::ento::ExplodedNodeSet&, clang::ento::ExplodedNodeSet&, clang::ento::ExprEngine::CallbackKind)"}, + {"_ZN5clang4ento10ExprEngine23CheckerVisitObjCMessageERKNS0_11ObjCMessageERNS0_15ExplodedNodeSetES6_b", "clang::ento::ExprEngine::CheckerVisitObjCMessage(clang::ento::ObjCMessage const&, clang::ento::ExplodedNodeSet&, clang::ento::ExplodedNodeSet&, bool)"}, + {"_ZN5clang4ento10ExprEngine22CheckerEvalNilReceiverERKNS0_11ObjCMessageERNS0_15ExplodedNodeSetEPKNS0_7GRStateEPNS0_12ExplodedNodeE", "clang::ento::ExprEngine::CheckerEvalNilReceiver(clang::ento::ObjCMessage const&, clang::ento::ExplodedNodeSet&, clang::ento::GRState const*, clang::ento::ExplodedNode*)"}, + {"_ZN5clang4ento10ExprEngine15CheckerEvalCallEPKNS_8CallExprERNS0_15ExplodedNodeSetEPNS0_12ExplodedNodeE", "clang::ento::ExprEngine::CheckerEvalCall(clang::CallExpr const*, clang::ento::ExplodedNodeSet&, clang::ento::ExplodedNode*)"}, + {"_ZN5clang4ento10ExprEngine16CheckerVisitBindEPKNS_4StmtERNS0_15ExplodedNodeSetES6_NS0_4SValES7_b", "clang::ento::ExprEngine::CheckerVisitBind(clang::Stmt const*, clang::ento::ExplodedNodeSet&, clang::ento::ExplodedNodeSet&, clang::ento::SVal, clang::ento::SVal, bool)"}, + {"_ZN5clang4ento10ExprEngineC1ERNS0_15AnalysisManagerEPNS0_13TransferFuncsE", "clang::ento::ExprEngine::ExprEngine(clang::ento::AnalysisManager&, clang::ento::TransferFuncs*)"}, + {"_ZN5clang4ento10ExprEngineC2ERNS0_15AnalysisManagerEPNS0_13TransferFuncsE", "clang::ento::ExprEngine::ExprEngine(clang::ento::AnalysisManager&, clang::ento::TransferFuncs*)"}, + {"_ZN5clang4ento10ExprEngineD0Ev", "clang::ento::ExprEngine::~ExprEngine()"}, + {"_ZN5clang4ento10ExprEngineD1Ev", "clang::ento::ExprEngine::~ExprEngine()"}, + {"_ZN5clang4ento10ExprEngineD2Ev", "clang::ento::ExprEngine::~ExprEngine()"}, + {"_ZN5clang4ento10ExprEngine15getInitialStateEPKNS_15LocationContextE", "clang::ento::ExprEngine::getInitialState(clang::LocationContext const*)"}, + {"_ZN5clang4ento10ExprEngine13processAssumeEPKNS0_7GRStateENS0_4SValEb", "clang::ento::ExprEngine::processAssume(clang::ento::GRState const*, clang::ento::SVal, bool)"}, + {"_ZN5clang4ento10ExprEngine23wantsRegionChangeUpdateEPKNS0_7GRStateE", "clang::ento::ExprEngine::wantsRegionChangeUpdate(clang::ento::GRState const*)"}, + {"_ZN5clang4ento10ExprEngine20processRegionChangesEPKNS0_7GRStateEPKPKNS0_9MemRegionES9_", "clang::ento::ExprEngine::processRegionChanges(clang::ento::GRState const*, clang::ento::MemRegion const* const*, clang::ento::MemRegion const* const*)"}, + {"_ZN5clang4ento10ExprEngine18processEndWorklistEb", "clang::ento::ExprEngine::processEndWorklist(bool)"}, + {"_ZN5clang4ento10ExprEngine17processCFGElementENS_10CFGElementERNS0_15StmtNodeBuilderE", "clang::ento::ExprEngine::processCFGElement(clang::CFGElement, clang::ento::StmtNodeBuilder&)"}, + {"_ZN5clang4ento10ExprEngine11ProcessStmtENS_7CFGStmtERNS0_15StmtNodeBuilderE", "clang::ento::ExprEngine::ProcessStmt(clang::CFGStmt, clang::ento::StmtNodeBuilder&)"}, + {"_ZN5clang4ento10ExprEngine18ProcessInitializerENS_14CFGInitializerERNS0_15StmtNodeBuilderE", "clang::ento::ExprEngine::ProcessInitializer(clang::CFGInitializer, clang::ento::StmtNodeBuilder&)"}, + {"_ZN5clang4ento10ExprEngine19ProcessImplicitDtorENS_15CFGImplicitDtorERNS0_15StmtNodeBuilderE", "clang::ento::ExprEngine::ProcessImplicitDtor(clang::CFGImplicitDtor, clang::ento::StmtNodeBuilder&)"}, + {"_ZN5clang4ento10ExprEngine5VisitEPKNS_4StmtEPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetE", "clang::ento::ExprEngine::Visit(clang::Stmt const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&)"}, + {"_ZN5clang4ento10ExprEngine23ProcessAutomaticObjDtorENS_19CFGAutomaticObjDtorERNS0_15StmtNodeBuilderE", "clang::ento::ExprEngine::ProcessAutomaticObjDtor(clang::CFGAutomaticObjDtor, clang::ento::StmtNodeBuilder&)"}, + {"_ZN5clang4ento10ExprEngine15ProcessBaseDtorENS_11CFGBaseDtorERNS0_15StmtNodeBuilderE", "clang::ento::ExprEngine::ProcessBaseDtor(clang::CFGBaseDtor, clang::ento::StmtNodeBuilder&)"}, + {"_ZN5clang4ento10ExprEngine17ProcessMemberDtorENS_13CFGMemberDtorERNS0_15StmtNodeBuilderE", "clang::ento::ExprEngine::ProcessMemberDtor(clang::CFGMemberDtor, clang::ento::StmtNodeBuilder&)"}, + {"_ZN5clang4ento10ExprEngine20ProcessTemporaryDtorENS_16CFGTemporaryDtorERNS0_15StmtNodeBuilderE", "clang::ento::ExprEngine::ProcessTemporaryDtor(clang::CFGTemporaryDtor, clang::ento::StmtNodeBuilder&)"}, + {"_ZN5clang4ento10ExprEngine8MakeNodeERNS0_15ExplodedNodeSetEPKNS_4StmtEPNS0_12ExplodedNodeEPKNS0_7GRStateENS_12ProgramPoint4KindEPKv", "clang::ento::ExprEngine::MakeNode(clang::ento::ExplodedNodeSet&, clang::Stmt const*, clang::ento::ExplodedNode*, clang::ento::GRState const*, clang::ProgramPoint::Kind, void const*)"}, + {"_ZN5clang4ento10ExprEngine27VisitObjCAtSynchronizedStmtEPKNS_22ObjCAtSynchronizedStmtEPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetE", "clang::ento::ExprEngine::VisitObjCAtSynchronizedStmt(clang::ObjCAtSynchronizedStmt const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&)"}, + {"_ZN5clang4ento10ExprEngine24VisitObjCPropertyRefExprEPKNS_19ObjCPropertyRefExprEPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetE", "clang::ento::ExprEngine::VisitObjCPropertyRefExpr(clang::ObjCPropertyRefExpr const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&)"}, + {"_ZN5clang4ento10ExprEngine27VisitLvalArraySubscriptExprEPKNS_18ArraySubscriptExprEPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetE", "clang::ento::ExprEngine::VisitLvalArraySubscriptExpr(clang::ArraySubscriptExpr const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&)"}, + {"_ZN5clang4ento10ExprEngine12VisitAsmStmtEPKNS_7AsmStmtEPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetE", "clang::ento::ExprEngine::VisitAsmStmt(clang::AsmStmt const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&)"}, + {"_ZN5clang4ento10ExprEngine22VisitCommonDeclRefExprEPKNS_4ExprEPKNS_9NamedDeclEPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetE", "clang::ento::ExprEngine::VisitCommonDeclRefExpr(clang::Expr const*, clang::NamedDecl const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&)"}, + {"_ZN5clang4ento10ExprEngine14VisitBlockExprEPKNS_9BlockExprEPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetE", "clang::ento::ExprEngine::VisitBlockExpr(clang::BlockExpr const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&)"}, + {"_ZN5clang4ento10ExprEngine16VisitLogicalExprEPKNS_14BinaryOperatorEPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetE", "clang::ento::ExprEngine::VisitLogicalExpr(clang::BinaryOperator const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&)"}, + {"_ZN5clang4ento10ExprEngine19VisitBinaryOperatorEPKNS_14BinaryOperatorEPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetE", "clang::ento::ExprEngine::VisitBinaryOperator(clang::BinaryOperator const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&)"}, + {"_ZN5clang4ento10ExprEngine17evalEagerlyAssumeERNS0_15ExplodedNodeSetES3_PKNS_4ExprE", "clang::ento::ExprEngine::evalEagerlyAssume(clang::ento::ExplodedNodeSet&, clang::ento::ExplodedNodeSet&, clang::Expr const*)"}, + {"_ZN5clang4ento10ExprEngine9VisitCallEPKNS_8CallExprEPNS0_12ExplodedNodeENS_17ConstExprIteratorES7_RNS0_15ExplodedNodeSetE", "clang::ento::ExprEngine::VisitCall(clang::CallExpr const*, clang::ento::ExplodedNode*, clang::ConstExprIterator, clang::ConstExprIterator, clang::ento::ExplodedNodeSet&)"}, + {"_ZN5clang4ento10ExprEngine16VisitGuardedExprEPKNS_4ExprES4_S4_PNS0_12ExplodedNodeERNS0_15ExplodedNodeSetE", "clang::ento::ExprEngine::VisitGuardedExpr(clang::Expr const*, clang::Expr const*, clang::Expr const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&)"}, + {"_ZN5clang4ento10ExprEngine24VisitCompoundLiteralExprEPKNS_19CompoundLiteralExprEPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetE", "clang::ento::ExprEngine::VisitCompoundLiteralExpr(clang::CompoundLiteralExpr const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&)"}, + {"_ZN5clang4ento10ExprEngine13VisitDeclStmtEPKNS_8DeclStmtEPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetE", "clang::ento::ExprEngine::VisitDeclStmt(clang::DeclStmt const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&)"}, + {"_ZN5clang4ento10ExprEngine13VisitCondInitEPKNS_7VarDeclEPKNS_4StmtEPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetE", "clang::ento::ExprEngine::VisitCondInit(clang::VarDecl const*, clang::Stmt const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&)"}, + {"_ZN5clang4ento10ExprEngine9VisitCastEPKNS_8CastExprEPKNS_4ExprEPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetE", "clang::ento::ExprEngine::VisitCast(clang::CastExpr const*, clang::Expr const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&)"}, + {"_ZN5clang4ento10ExprEngine17VisitInitListExprEPKNS_12InitListExprEPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetE", "clang::ento::ExprEngine::VisitInitListExpr(clang::InitListExpr const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&)"}, + {"_ZN5clang4ento10ExprEngine15VisitMemberExprEPKNS_10MemberExprEPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetE", "clang::ento::ExprEngine::VisitMemberExpr(clang::MemberExpr const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&)"}, + {"_ZN5clang4ento10ExprEngine24VisitLvalObjCIvarRefExprEPKNS_15ObjCIvarRefExprEPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetE", "clang::ento::ExprEngine::VisitLvalObjCIvarRefExpr(clang::ObjCIvarRefExpr const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&)"}, + {"_ZN5clang4ento10ExprEngine26VisitObjCForCollectionStmtEPKNS_21ObjCForCollectionStmtEPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetE", "clang::ento::ExprEngine::VisitObjCForCollectionStmt(clang::ObjCForCollectionStmt const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&)"}, + {"_ZN5clang4ento10ExprEngine20VisitObjCMessageExprEPKNS_15ObjCMessageExprEPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetE", "clang::ento::ExprEngine::VisitObjCMessageExpr(clang::ObjCMessageExpr const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&)"}, + {"_ZN5clang4ento10ExprEngine15VisitReturnStmtEPKNS_10ReturnStmtEPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetE", "clang::ento::ExprEngine::VisitReturnStmt(clang::ReturnStmt const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&)"}, + {"_ZN5clang4ento10ExprEngine17VisitOffsetOfExprEPKNS_12OffsetOfExprEPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetE", "clang::ento::ExprEngine::VisitOffsetOfExpr(clang::OffsetOfExpr const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&)"}, + {"_ZN5clang4ento10ExprEngine22VisitSizeOfAlignOfExprEPKNS_17SizeOfAlignOfExprEPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetE", "clang::ento::ExprEngine::VisitSizeOfAlignOfExpr(clang::SizeOfAlignOfExpr const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&)"}, + {"_ZN5clang4ento10ExprEngine18VisitUnaryOperatorEPKNS_13UnaryOperatorEPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetE", "clang::ento::ExprEngine::VisitUnaryOperator(clang::UnaryOperator const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&)"}, + {"_ZN5clang4ento10ExprEngine23processCFGBlockEntranceERNS0_15ExplodedNodeSetERNS0_18GenericNodeBuilderINS_13BlockEntranceEEE", "clang::ento::ExprEngine::processCFGBlockEntrance(clang::ento::ExplodedNodeSet&, clang::ento::GenericNodeBuilder&)"}, + {"_ZN5clang4ento10ExprEngine10MarkBranchEPKNS0_7GRStateEPKNS_4StmtEb", "clang::ento::ExprEngine::MarkBranch(clang::ento::GRState const*, clang::Stmt const*, bool)"}, + {"_ZN5clang4ento10ExprEngine13processBranchEPKNS_4StmtES4_RNS0_17BranchNodeBuilderE", "clang::ento::ExprEngine::processBranch(clang::Stmt const*, clang::Stmt const*, clang::ento::BranchNodeBuilder&)"}, + {"_ZN5clang4ento10ExprEngine19processIndirectGotoERNS0_23IndirectGotoNodeBuilderE", "clang::ento::ExprEngine::processIndirectGoto(clang::ento::IndirectGotoNodeBuilder&)"}, + {"_ZN5clang4ento10ExprEngine20processEndOfFunctionERNS0_24EndOfFunctionNodeBuilderE", "clang::ento::ExprEngine::processEndOfFunction(clang::ento::EndOfFunctionNodeBuilder&)"}, + {"_ZN5clang4ento10ExprEngine13processSwitchERNS0_17SwitchNodeBuilderE", "clang::ento::ExprEngine::processSwitch(clang::ento::SwitchNodeBuilder&)"}, + {"_ZN5clang4ento10ExprEngine16processCallEnterERNS0_20CallEnterNodeBuilderE", "clang::ento::ExprEngine::processCallEnter(clang::ento::CallEnterNodeBuilder&)"}, + {"_ZN5clang4ento10ExprEngine15processCallExitERNS0_19CallExitNodeBuilderE", "clang::ento::ExprEngine::processCallExit(clang::ento::CallExitNodeBuilder&)"}, + {"_ZN5clang4ento10ExprEngine8evalLoadERNS0_15ExplodedNodeSetEPKNS_4ExprEPNS0_12ExplodedNodeEPKNS0_7GRStateENS0_4SValEPKvNS_8QualTypeE", "clang::ento::ExprEngine::evalLoad(clang::ento::ExplodedNodeSet&, clang::Expr const*, clang::ento::ExplodedNode*, clang::ento::GRState const*, clang::ento::SVal, void const*, clang::QualType)"}, + + // {"_ZN5clang4ento10ExprEngine8evalBindERNS0_15ExplodedNodeSetEPKNS_4StmtEPNS0_12ExplodedNodeEPKNS0_7GRStateENS0_4SValESC_b", + // "clang::ento::ExprEngine::evalBind(clang::ento::ExplodedNodeSet&, clang::Stmt const*, clang::ento::ExplodedNode*, clang::ento::GRState const*, clang::ento::SVal, clang::ento::SVal, bool)"}, + // got error + + + // {"_ZN5clang4ento10ExprEngine9evalStoreERNS0_15ExplodedNodeSetEPKNS_4ExprES6_PNS0_12ExplodedNodeEPKNS0_7GRStateENS0_4SValESC_PKv", + // "clang::ento::ExprEngine::evalStore(clang::ento::ExplodedNodeSet&, clang::Expr const*, clang::Expr const*, clang::ento::ExplodedNode*, clang::ento::GRState const*, clang::ento::SVal, clang::ento::SVal, void const*)"}, + // got error + + {"_ZN5clang4ento10ExprEngine16VisitObjCMessageERKNS0_11ObjCMessageERNS0_15ExplodedNodeSetES6_", "clang::ento::ExprEngine::VisitObjCMessage(clang::ento::ObjCMessage const&, clang::ento::ExplodedNodeSet&, clang::ento::ExplodedNodeSet&)"}, + {"_ZN5clang4ento10ExprEngine12evalLocationERNS0_15ExplodedNodeSetEPKNS_4StmtEPNS0_12ExplodedNodeEPKNS0_7GRStateENS0_4SValEPKvb", "clang::ento::ExprEngine::evalLocation(clang::ento::ExplodedNodeSet&, clang::Stmt const*, clang::ento::ExplodedNode*, clang::ento::GRState const*, clang::ento::SVal, void const*, bool)"}, + {"_ZN5clang4ento10ExprEngine14evalLoadCommonERNS0_15ExplodedNodeSetEPKNS_4ExprEPNS0_12ExplodedNodeEPKNS0_7GRStateENS0_4SValEPKvNS_8QualTypeE", "clang::ento::ExprEngine::evalLoadCommon(clang::ento::ExplodedNodeSet&, clang::Expr const*, clang::ento::ExplodedNode*, clang::ento::GRState const*, clang::ento::SVal, void const*, clang::QualType)"}, + {"_ZN5clang4ento10ExprEngine10InlineCallERNS0_15ExplodedNodeSetEPKNS_8CallExprEPNS0_12ExplodedNodeE", "clang::ento::ExprEngine::InlineCall(clang::ento::ExplodedNodeSet&, clang::CallExpr const*, clang::ento::ExplodedNode*)"}, + {"_ZN5clang4ento10ExprEngine29VisitObjCForCollectionStmtAuxEPKNS_21ObjCForCollectionStmtEPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetENS0_4SValE", "clang::ento::ExprEngine::VisitObjCForCollectionStmtAux(clang::ObjCForCollectionStmt const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&, clang::ento::SVal)"}, + {"_ZN4llvm15SmallVectorImplIN12_GLOBAL__N_113ObjCMsgWLItemEE9push_backERKS2_", "llvm::SmallVectorImpl<(anonymous namespace)::ObjCMsgWLItem>::push_back((anonymous namespace)::ObjCMsgWLItem const&)"}, + {"_ZN5clang4ento10ExprEngine25VisitAsmStmtHelperOutputsEPKNS_7AsmStmtENS_17ConstExprIteratorES5_PNS0_12ExplodedNodeERNS0_15ExplodedNodeSetE", "clang::ento::ExprEngine::VisitAsmStmtHelperOutputs(clang::AsmStmt const*, clang::ConstExprIterator, clang::ConstExprIterator, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&)"}, + {"_ZN5clang4ento10ExprEngine24VisitAsmStmtHelperInputsEPKNS_7AsmStmtENS_17ConstExprIteratorES5_PNS0_12ExplodedNodeERNS0_15ExplodedNodeSetE", "clang::ento::ExprEngine::VisitAsmStmtHelperInputs(clang::AsmStmt const*, clang::ConstExprIterator, clang::ConstExprIterator, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&)"}, + {"_ZNK5clang4ento10ExprEngine13lookupCheckerEPv", "clang::ento::ExprEngine::lookupChecker(void*) const"}, + {"_ZN5clang4ento10ExprEngine9ViewGraphEb", "clang::ento::ExprEngine::ViewGraph(bool)"}, + {"_ZN5clang4ento10ExprEngine9ViewGraphEPPNS0_12ExplodedNodeES4_", "clang::ento::ExprEngine::ViewGraph(clang::ento::ExplodedNode**, clang::ento::ExplodedNode**)"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN12_GLOBAL__N_114InitListWLItemELb0EE4growEm", "llvm::SmallVectorTemplateBase<(anonymous namespace)::InitListWLItem, false>::grow(unsigned long)"}, + {"_ZN5clang4ento15ExplodedNodeSet6insertERKS1_", "clang::ento::ExplodedNodeSet::insert(clang::ento::ExplodedNodeSet const&)"}, + {"_ZN5clang4ento7Checker8GR_VisitERNS0_15ExplodedNodeSetERNS0_15StmtNodeBuilderERNS0_10ExprEngineEPKNS_4StmtEPNS0_12ExplodedNodeEPvbRb", "clang::ento::Checker::GR_Visit(clang::ento::ExplodedNodeSet&, clang::ento::StmtNodeBuilder&, clang::ento::ExprEngine&, clang::Stmt const*, clang::ento::ExplodedNode*, void*, bool, bool&)"}, + {"_ZN5clang4ento7Checker19GR_visitObjCMessageERNS0_15ExplodedNodeSetERNS0_15StmtNodeBuilderERNS0_10ExprEngineERKNS0_11ObjCMessageEPNS0_12ExplodedNodeEPvb", "clang::ento::Checker::GR_visitObjCMessage(clang::ento::ExplodedNodeSet&, clang::ento::StmtNodeBuilder&, clang::ento::ExprEngine&, clang::ento::ObjCMessage const&, clang::ento::ExplodedNode*, void*, bool)"}, + {"_ZN5clang4ento10ExprEngine18getAnalysisManagerEv", "clang::ento::ExprEngine::getAnalysisManager()"}, + {"_ZN5clang4ento10ExprEngine15getStateManagerEv", "clang::ento::ExprEngine::getStateManager()"}, + + // {"_ZN4llvm8DenseMapIjPSt6vectorISt4pairIPvPN5clang4ento7CheckerEESaIS8_EENS_12DenseMapInfoIjEENSC_ISB_EEE16InsertIntoBucketERKjRKSB_PS2_IjSB_E", + // "llvm::DenseMap, std::allocator>>*, llvm::DenseMapInfo, llvm::DenseMapInfo, std::allocator>>*>>::InsertIntoBucket(unsigned int const&, std::vector, std::allocator>>* const&, std::pair, std::allocator>>*>*)"}, + // "llvm::DenseMap, std::allocator>>*, llvm::DenseMapInfo, llvm::DenseMapInfo, std::allocator>>*>>::InsertIntoBucket(unsigned int const&, std::vector, std::allocator>>* const&, std::pair*, std::allocator>>*>)" was returned + + {"_ZN4llvm8DenseMapIjPSt6vectorISt4pairIPvPN5clang4ento7CheckerEESaIS8_EENS_12DenseMapInfoIjEENSC_ISB_EEE4growEj", "llvm::DenseMap, std::allocator>>*, llvm::DenseMapInfo, llvm::DenseMapInfo, std::allocator>>*>>::grow(unsigned int)"}, + {"_ZN4llvm20ImmutableListFactoryIN5clang4ento4SValEE6concatERKS3_NS_13ImmutableListIS3_EE", "llvm::ImmutableListFactory::concat(clang::ento::SVal const&, llvm::ImmutableList)"}, + {"_ZN5clang4ento18StmtNodeBuilderRefD2Ev", "clang::ento::StmtNodeBuilderRef::~StmtNodeBuilderRef()"}, + {"_ZN5clang4ento12SymbolReaperC2EPKNS_15LocationContextEPKNS_4StmtERNS0_13SymbolManagerE", "clang::ento::SymbolReaper::SymbolReaper(clang::LocationContext const*, clang::Stmt const*, clang::ento::SymbolManager&)"}, + {"_ZN5clang4ento9SubEngineD1Ev", "clang::ento::SubEngine::~SubEngine()"}, + {"_ZN5clang4ento9SubEngineD0Ev", "clang::ento::SubEngine::~SubEngine()"}, + {"_ZN5clang4ento10CoreEngineD2Ev", "clang::ento::CoreEngine::~CoreEngine()"}, + + // {"_ZN5clang4ento14GRStateManagerC2ERNS_10ASTContextEPFPNS0_12StoreManagerERS1_EPFPNS0_17ConstraintManagerES6_RNS0_9SubEngineEERN4llvm16BumpPtrAllocatorESC_", + // "clang::ento::GRStateManager::GRStateManager(clang::ASTContext&, clang::ento::StoreManager* (*)(clang::ento::GRStateManager&), clang::ento::ConstraintManager* (*)(clang::ento::GRStateManager&, clang::ento::SubEngine&), llvm::BumpPtrAllocator&, clang::ento::SubEngine&)"}, + // "clang::ento::GRStateManager::GRStateManager(clang::ASTContext&, clang::ento::StoreManager* (*)(clang::ento::GRStateManager&), clang::ento::ConstraintManager* (*)(clang::ento::GRStateManager&, clang::ento::SubEngine&), llvm::BumpPtrAllocator&, clang::ento::ConstraintManager* (*)(clang::ento::GRStateManager&, clang::ento::SubEngine&))" was returned + + {"_ZN4llvm10FoldingSetIN5clang4ento7GRStateEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang4ento7GRStateEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang4ento7GRStateEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang4ento7GRStateEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS8_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang4ento7GRStateEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm10FoldingSetIN5clang4ento12ExplodedNodeEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang4ento12ExplodedNodeEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang4ento12ExplodedNodeEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang4ento12ExplodedNodeEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS8_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang4ento12ExplodedNodeEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN5clang4ento27RegisterFixedAddressCheckerERNS0_10ExprEngineE", "clang::ento::RegisterFixedAddressChecker(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_119FixedAddressCheckerD1Ev", "(anonymous namespace)::FixedAddressChecker::~FixedAddressChecker()"}, + {"_ZN12_GLOBAL__N_119FixedAddressCheckerD0Ev", "(anonymous namespace)::FixedAddressChecker::~FixedAddressChecker()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_119FixedAddressCheckerEE9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::FixedAddressChecker>::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_119FixedAddressCheckerEE10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::FixedAddressChecker>::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN12_GLOBAL__N_119FixedAddressChecker22PreVisitBinaryOperatorERN5clang4ento14CheckerContextEPKNS1_14BinaryOperatorE", "(anonymous namespace)::FixedAddressChecker::PreVisitBinaryOperator(clang::ento::CheckerContext&, clang::BinaryOperator const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_119FixedAddressCheckerEED1Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::FixedAddressChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_119FixedAddressCheckerEED0Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::FixedAddressChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14AnalysisAction17CreateASTConsumerERNS_16CompilerInstanceEN4llvm9StringRefE", "clang::ento::AnalysisAction::CreateASTConsumer(clang::CompilerInstance&, llvm::StringRef)"}, + {"_ZN5clang4ento14AnalysisActionD1Ev", "clang::ento::AnalysisAction::~AnalysisAction()"}, + {"_ZN5clang4ento14AnalysisActionD0Ev", "clang::ento::AnalysisAction::~AnalysisAction()"}, + {"_ZN5clang4ento34RegisterIdempotentOperationCheckerERNS0_10ExprEngineE", "clang::ento::RegisterIdempotentOperationChecker(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_126IdempotentOperationCheckerD1Ev", "(anonymous namespace)::IdempotentOperationChecker::~IdempotentOperationChecker()"}, + {"_ZN12_GLOBAL__N_126IdempotentOperationCheckerD0Ev", "(anonymous namespace)::IdempotentOperationChecker::~IdempotentOperationChecker()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_126IdempotentOperationCheckerEE9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::IdempotentOperationChecker>::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_126IdempotentOperationCheckerEE10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::IdempotentOperationChecker>::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN12_GLOBAL__N_126IdempotentOperationChecker16VisitEndAnalysisERN5clang4ento13ExplodedGraphERNS2_11BugReporterERNS2_10ExprEngineE", "(anonymous namespace)::IdempotentOperationChecker::VisitEndAnalysis(clang::ento::ExplodedGraph&, clang::ento::BugReporter&, clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_126IdempotentOperationChecker23CFGReachabilityAnalysis11isReachableEPKN5clang8CFGBlockES5_", "(anonymous namespace)::IdempotentOperationChecker::CFGReachabilityAnalysis::isReachable(clang::CFGBlock const*, clang::CFGBlock const*)"}, + + // {"_ZZN12_GLOBAL__N_126IdempotentOperationChecker25PathWasCompletelyAnalyzedEPKN5clang3CFGEPKNS1_8CFGBlockEPKNS1_10CFGStmtMapERKNS1_4ento10CoreEngineEEN7VisitWLD1Ev", + // "(anonymous namespace)::IdempotentOperationChecker::PathWasCompletelyAnalyzed(clang::CFG const*, clang::CFGBlock const*, clang::CFGStmtMap const*, clang::ento::CoreEngine const&)::VisitWL::~VisitWL()"}, + // "(anonymous namespace)::IdempotentOperationChecker::PathWasCompletelyAnalyzed(clang::CFG const*, (anonymous namespace)::IdempotentOperationChecker::PathWasCompletelyAnalyzed::CFGBlock const*, (anonymous namespace)::IdempotentOperationChecker::PathWasCompletelyAnalyzed::CFGStmtMap const*, (anonymous namespace)::IdempotentOperationChecker::PathWasCompletelyAnalyzed::ento::CoreEngine const&)::VisitWL::~VisitWL()" was returned + + + // {"_ZZN12_GLOBAL__N_126IdempotentOperationChecker25PathWasCompletelyAnalyzedEPKN5clang3CFGEPKNS1_8CFGBlockEPKNS1_10CFGStmtMapERKNS1_4ento10CoreEngineEEN7VisitWLD0Ev", + // "(anonymous namespace)::IdempotentOperationChecker::PathWasCompletelyAnalyzed(clang::CFG const*, clang::CFGBlock const*, clang::CFGStmtMap const*, clang::ento::CoreEngine const&)::VisitWL::~VisitWL()"}, + // "(anonymous namespace)::IdempotentOperationChecker::PathWasCompletelyAnalyzed(clang::CFG const*, (anonymous namespace)::IdempotentOperationChecker::PathWasCompletelyAnalyzed::CFGBlock const*, (anonymous namespace)::IdempotentOperationChecker::PathWasCompletelyAnalyzed::CFGStmtMap const*, (anonymous namespace)::IdempotentOperationChecker::PathWasCompletelyAnalyzed::ento::CoreEngine const&)::VisitWL::~VisitWL()" was returned + + + // {"_ZZN12_GLOBAL__N_126IdempotentOperationChecker25PathWasCompletelyAnalyzedEPKN5clang3CFGEPKNS1_8CFGBlockEPKNS1_10CFGStmtMapERKNS1_4ento10CoreEngineEEN7VisitWL5visitERKNSB_12WorkListUnitE", + // "(anonymous namespace)::IdempotentOperationChecker::PathWasCompletelyAnalyzed(clang::CFG const*, clang::CFGBlock const*, clang::CFGStmtMap const*, clang::ento::CoreEngine const&)::VisitWL::visit(clang::ento::WorkListUnit const&)"}, + // "(anonymous namespace)::IdempotentOperationChecker::PathWasCompletelyAnalyzed(clang::CFG const*, (anonymous namespace)::IdempotentOperationChecker::PathWasCompletelyAnalyzed::CFGBlock const*, (anonymous namespace)::IdempotentOperationChecker::PathWasCompletelyAnalyzed::CFGStmtMap const*, (anonymous namespace)::IdempotentOperationChecker::PathWasCompletelyAnalyzed::ento::CoreEngine const&)::VisitWL::visit((anonymous namespace)::IdempotentOperationChecker::PathWasCompletelyAnalyzed::CFGStmtMap const*::WorkListUnit const&)" was returned + + {"_ZN4llvm8DenseMapIPKN5clang14BinaryOperatorEN12_GLOBAL__N_126IdempotentOperationChecker18BinaryOperatorDataENS_12DenseMapInfoIS4_EENS8_IS7_EEEixERKS4_", "llvm::DenseMap, llvm::DenseMapInfo<(anonymous namespace)::IdempotentOperationChecker::BinaryOperatorData>>::operator[](clang::BinaryOperator const* const&)"}, + {"_ZN12_GLOBAL__N_126IdempotentOperationChecker22PreVisitBinaryOperatorERN5clang4ento14CheckerContextEPKNS1_14BinaryOperatorE", "(anonymous namespace)::IdempotentOperationChecker::PreVisitBinaryOperator(clang::ento::CheckerContext&, clang::BinaryOperator const*)"}, + {"_ZN12_GLOBAL__N_126IdempotentOperationChecker7CanVaryEPKN5clang4ExprEPNS1_15AnalysisContextE", "(anonymous namespace)::IdempotentOperationChecker::CanVary(clang::Expr const*, clang::AnalysisContext*)"}, + {"_ZN12_GLOBAL__N_126IdempotentOperationChecker23containsNonLocalVarDeclEPKN5clang4StmtE", "(anonymous namespace)::IdempotentOperationChecker::containsNonLocalVarDecl(clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_126IdempotentOperationCheckerEED1Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::IdempotentOperationChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_126IdempotentOperationCheckerEED0Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::IdempotentOperationChecker>::~CheckerVisitor()"}, + + // {"_ZNSt6vectorISt4pairIPFvRN5clang4ento18BugReporterContextEPKvPKNS2_12ExplodedNodeEES6_ESaISC_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPSC_SE_EERKSC_", + // "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + // got error + + + // {"_ZN4llvm8DenseMapIjNS_8SmallSetIjLj32EEENS_12DenseMapInfoIjEENS3_IS2_EEE16FindAndConstructERKj", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::FindAndConstruct(unsigned int const&)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::FindAndConstruct(unsigned int const&)" was returned + + + // {"_ZN4llvm8DenseMapIjNS_8SmallSetIjLj32EEENS_12DenseMapInfoIjEENS3_IS2_EEE16InsertIntoBucketERKjRKS2_PSt4pairIjS2_E", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(unsigned int const&, llvm::SmallSet const&, std::pair>*)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(unsigned int const&, llvm::SmallSet const&, std::pair>*)" was returned + + + // {"_ZN4llvm8DenseMapIjNS_8SmallSetIjLj32EEENS_12DenseMapInfoIjEENS3_IS2_EEE4growEj", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)" was returned + + {"_ZNSt5dequeIPKN5clang8CFGBlockESaIS3_EE9push_backERKS3_", "std::deque>::push_back(clang::CFGBlock const* const&)"}, + {"_ZNSt5dequeIPKN5clang8CFGBlockESaIS3_EE17_M_reallocate_mapEmb", "std::deque>::_M_reallocate_map(unsigned long, bool)"}, + {"_ZNSt11_Deque_baseIPKN5clang8CFGBlockESaIS3_EE17_M_initialize_mapEm", "std::_Deque_base>::_M_initialize_map(unsigned long)"}, + + // {"_ZN4llvm8DenseMapIjNS_8SmallSetIjLj32EEENS_12DenseMapInfoIjEENS3_IS2_EEED1Ev", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::~DenseMap()"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::~DenseMap()" was returned + + {"_ZN5clang4ento20CheckLLVMConventionsERNS_19TranslationUnitDeclERNS0_11BugReporterE", "clang::ento::CheckLLVMConventions(clang::TranslationUnitDecl&, clang::ento::BugReporter&)"}, + {"_Z13ScanCodeDeclsPN5clang11DeclContextERNS_4ento11BugReporterE", "ScanCodeDecls(clang::DeclContext*, clang::ento::BugReporter&)"}, + {"_Z11IsPartOfASTPKN5clang13CXXRecordDeclE", "IsPartOfAST(clang::CXXRecordDecl const*)"}, + {"_ZN12_GLOBAL__N_115ASTFieldVisitor5VisitEPN5clang9FieldDeclE", "(anonymous namespace)::ASTFieldVisitor::Visit(clang::FieldDecl*)"}, + {"_Z11IsStdStringN5clang8QualTypeE", "IsStdString(clang::QualType)"}, + {"_Z11InNamespacePKN5clang4DeclEN4llvm9StringRefE", "InNamespace(clang::Decl const*, llvm::StringRef)"}, + {"_ZN5clang11StmtVisitorIN12_GLOBAL__N_123StringRefCheckerVisitorEvE5VisitEPNS_4StmtE", "clang::StmtVisitor<(anonymous namespace)::StringRefCheckerVisitor, void>::Visit(clang::Stmt*)"}, + {"_ZN12_GLOBAL__N_123StringRefCheckerVisitor13VisitChildrenEPN5clang4StmtE", "(anonymous namespace)::StringRefCheckerVisitor::VisitChildren(clang::Stmt*)"}, + {"_ZN5clang4ento24RegisterMacOSXAPICheckerERNS0_10ExprEngineE", "clang::ento::RegisterMacOSXAPIChecker(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_116MacOSXAPICheckerD1Ev", "(anonymous namespace)::MacOSXAPIChecker::~MacOSXAPIChecker()"}, + {"_ZN12_GLOBAL__N_116MacOSXAPICheckerD0Ev", "(anonymous namespace)::MacOSXAPIChecker::~MacOSXAPIChecker()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_116MacOSXAPICheckerEE9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::MacOSXAPIChecker>::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_116MacOSXAPICheckerEE10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::MacOSXAPIChecker>::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_Z17CheckDispatchOnceRN5clang4ento14CheckerContextEPKNS_8CallExprERPNS0_7BugTypeEPKNS_14IdentifierInfoE", "CheckDispatchOnce(clang::ento::CheckerContext&, clang::CallExpr const*, clang::ento::BugType*&, clang::IdentifierInfo const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_116MacOSXAPICheckerEED1Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::MacOSXAPIChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_116MacOSXAPICheckerEED0Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::MacOSXAPIChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento21RegisterMallocCheckerERNS0_10ExprEngineE", "clang::ento::RegisterMallocChecker(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_113MallocCheckerD1Ev", "(anonymous namespace)::MallocChecker::~MallocChecker()"}, + {"_ZN12_GLOBAL__N_113MallocCheckerD0Ev", "(anonymous namespace)::MallocChecker::~MallocChecker()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_113MallocCheckerEE9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::MallocChecker>::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_113MallocCheckerEE10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::MallocChecker>::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN12_GLOBAL__N_113MallocChecker13visitLocationERN5clang4ento14CheckerContextEPKNS1_4StmtENS2_4SValEb", "(anonymous namespace)::MallocChecker::visitLocation(clang::ento::CheckerContext&, clang::Stmt const*, clang::ento::SVal, bool)"}, + {"_ZN12_GLOBAL__N_113MallocChecker12PreVisitBindERN5clang4ento14CheckerContextEPKNS1_4StmtENS2_4SValES8_", "(anonymous namespace)::MallocChecker::PreVisitBind(clang::ento::CheckerContext&, clang::Stmt const*, clang::ento::SVal, clang::ento::SVal)"}, + {"_ZN12_GLOBAL__N_113MallocChecker15evalDeadSymbolsERN5clang4ento14CheckerContextERNS2_12SymbolReaperE", "(anonymous namespace)::MallocChecker::evalDeadSymbols(clang::ento::CheckerContext&, clang::ento::SymbolReaper&)"}, + {"_ZN12_GLOBAL__N_113MallocChecker11evalEndPathERN5clang4ento24EndOfFunctionNodeBuilderEPvRNS2_10ExprEngineE", "(anonymous namespace)::MallocChecker::evalEndPath(clang::ento::EndOfFunctionNodeBuilder&, void*, clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_113MallocChecker12evalCallExprERN5clang4ento14CheckerContextEPKNS1_8CallExprE", "(anonymous namespace)::MallocChecker::evalCallExpr(clang::ento::CheckerContext&, clang::CallExpr const*)"}, + {"_ZN12_GLOBAL__N_113MallocChecker10evalAssumeEPKN5clang4ento7GRStateENS2_4SValEbPb", "(anonymous namespace)::MallocChecker::evalAssume(clang::ento::GRState const*, clang::ento::SVal, bool, bool*)"}, + + // {"_ZNK5clang4ento7GRState3setIN12_GLOBAL__N_111RegionStateEEEPKS1_NS0_12GRStateTraitIT_E8key_typeENS9_10value_typeE", + // "clang::ento::GRState const* clang::ento::GRState::set<(anonymous namespace)::RegionState>(clang::ento::GRStateTrait<(anonymous namespace)::RegionState>::key_type, clang::ento::GRStateTrait<(anonymous namespace)::RegionState>::value_type) const"}, + // "clang::ento::GRState const* clang::ento::GRState::set<(anonymous namespace)::RegionState>(clang::ento::GRStateTrait<(anonymous namespace)::RegionState>::key_type, clang::ento::GRStateTrait<(anonymous namespace)::RegionState>::key_type::value_type) const" was returned + + {"_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_18RefStateEEEE7destroyEv", "llvm::ImutAVLTree>::destroy()"}, + {"_ZN4llvm8DenseMapIjPNS_11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_18RefStateEEEEENS_12DenseMapInfoIjEENSD_ISC_EEEixERKj", "llvm::DenseMap>*, llvm::DenseMapInfo, llvm::DenseMapInfo>*>>::operator[](unsigned int const&)"}, + {"_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_18RefStateEEEE13computeDigestEv", "llvm::ImutAVLTree>::computeDigest()"}, + {"_ZNSt6vectorIPN4llvm11ImutAVLTreeINS0_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_18RefStateEEEEESaISC_EE9push_backERKSC_", "std::vector>*, std::allocator>*>>::push_back(llvm::ImutAVLTree>* const&)"}, + {"_ZN4llvm26ImutAVLTreeInOrderIteratorINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_18RefStateEEEEppEv", "llvm::ImutAVLTreeInOrderIterator>::operator++()"}, + {"_ZN5clang4ento19GRStatePartialTraitIN4llvm12ImmutableMapIPKNS0_10SymbolDataEN12_GLOBAL__N_18RefStateENS2_16ImutKeyValueInfoIS6_S8_EEEEE13CreateContextERNS2_16BumpPtrAllocatorE", "clang::ento::GRStatePartialTrait>>::CreateContext(llvm::BumpPtrAllocator&)"}, + {"_ZN5clang4ento19GRStatePartialTraitIN4llvm12ImmutableMapIPKNS0_10SymbolDataEN12_GLOBAL__N_18RefStateENS2_16ImutKeyValueInfoIS6_S8_EEEEE13DeleteContextEPv", "clang::ento::GRStatePartialTrait>>::DeleteContext(void*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_18RefStateEEEE16getCanonicalTreeEPNS_11ImutAVLTreeIS9_EE", "llvm::ImutAVLFactory>::getCanonicalTree(llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_18RefStateEEEE12add_internalERKSt4pairIS6_S8_EPNS_11ImutAVLTreeIS9_EE", "llvm::ImutAVLFactory>::add_internal(std::pair const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_18RefStateEEEE13markImmutableEPNS_11ImutAVLTreeIS9_EE", "llvm::ImutAVLFactory>::markImmutable(llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_18RefStateEEEE10createNodeEPNS_11ImutAVLTreeIS9_EERKSt4pairIS6_S8_ESD_", "llvm::ImutAVLFactory>::createNode(llvm::ImutAVLTree>*, std::pair const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_18RefStateEEEE11balanceTreeEPNS_11ImutAVLTreeIS9_EERKSt4pairIS6_S8_ESD_", "llvm::ImutAVLFactory>::balanceTree(llvm::ImutAVLTree>*, std::pair const&, llvm::ImutAVLTree>*)"}, + {"_ZN12_GLOBAL__N_113MallocChecker10FreeMemAuxERN5clang4ento14CheckerContextEPKNS1_8CallExprEPKNS2_7GRStateEjb", "(anonymous namespace)::MallocChecker::FreeMemAux(clang::ento::CheckerContext&, clang::CallExpr const*, clang::ento::GRState const*, unsigned int, bool)"}, + {"_ZN12_GLOBAL__N_113MallocChecker13ReportBadFreeERN5clang4ento14CheckerContextENS2_4SValENS1_11SourceRangeE", "(anonymous namespace)::MallocChecker::ReportBadFree(clang::ento::CheckerContext&, clang::ento::SVal, clang::SourceRange)"}, + {"_ZN12_GLOBAL__N_113MallocChecker12MallocMemAuxERN5clang4ento14CheckerContextEPKNS1_8CallExprENS2_4SValES8_PKNS2_7GRStateE", "(anonymous namespace)::MallocChecker::MallocMemAux(clang::ento::CheckerContext&, clang::CallExpr const*, clang::ento::SVal, clang::ento::SVal, clang::ento::GRState const*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_18RefStateEEEE15remove_internalERKS6_PNS_11ImutAVLTreeIS9_EE", "llvm::ImutAVLFactory>::remove_internal(clang::ento::SymbolData const* const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_18RefStateEEEE16removeMinBindingEPNS_11ImutAVLTreeIS9_EERSD_", "llvm::ImutAVLFactory>::removeMinBinding(llvm::ImutAVLTree>*, llvm::ImutAVLTree>*&)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_113MallocCheckerEED1Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::MallocChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_113MallocCheckerEED0Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::MallocChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento31RegisterNSAutoreleasePoolChecksERNS0_10ExprEngineE", "clang::ento::RegisterNSAutoreleasePoolChecks(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_124NSAutoreleasePoolCheckerD1Ev", "(anonymous namespace)::NSAutoreleasePoolChecker::~NSAutoreleasePoolChecker()"}, + {"_ZN12_GLOBAL__N_124NSAutoreleasePoolCheckerD0Ev", "(anonymous namespace)::NSAutoreleasePoolChecker::~NSAutoreleasePoolChecker()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_124NSAutoreleasePoolCheckerEE9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::NSAutoreleasePoolChecker>::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_124NSAutoreleasePoolCheckerEE10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::NSAutoreleasePoolChecker>::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN12_GLOBAL__N_124NSAutoreleasePoolChecker19preVisitObjCMessageERN5clang4ento14CheckerContextENS2_11ObjCMessageE", "(anonymous namespace)::NSAutoreleasePoolChecker::preVisitObjCMessage(clang::ento::CheckerContext&, clang::ento::ObjCMessage)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_124NSAutoreleasePoolCheckerEED1Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::NSAutoreleasePoolChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_124NSAutoreleasePoolCheckerEED0Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::NSAutoreleasePoolChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento21RegisterNSErrorChecksERNS0_11BugReporterERNS0_10ExprEngineERKNS_4DeclE", "clang::ento::RegisterNSErrorChecks(clang::ento::BugReporter&, clang::ento::ExprEngine&, clang::Decl const&)"}, + {"_ZN12_GLOBAL__N_114NSErrorCheckerC1ERKN5clang4DeclEbRNS1_4ento10ExprEngineE", "(anonymous namespace)::NSErrorChecker::NSErrorChecker(clang::Decl const&, bool, clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_114NSErrorCheckerD1Ev", "(anonymous namespace)::NSErrorChecker::~NSErrorChecker()"}, + {"_ZN12_GLOBAL__N_114NSErrorCheckerD0Ev", "(anonymous namespace)::NSErrorChecker::~NSErrorChecker()"}, + {"_ZN12_GLOBAL__N_114NSErrorChecker12FlushReportsERN5clang4ento11BugReporterE", "(anonymous namespace)::NSErrorChecker::FlushReports(clang::ento::BugReporter&)"}, + {"_ZN12_GLOBAL__N_114NSErrorChecker20CheckNSErrorArgumentEN5clang8QualTypeE", "(anonymous namespace)::NSErrorChecker::CheckNSErrorArgument(clang::QualType)"}, + {"_ZN5clang4ento31RegisterNoReturnFunctionCheckerERNS0_10ExprEngineE", "clang::ento::RegisterNoReturnFunctionChecker(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_123NoReturnFunctionCheckerD1Ev", "(anonymous namespace)::NoReturnFunctionChecker::~NoReturnFunctionChecker()"}, + {"_ZN12_GLOBAL__N_123NoReturnFunctionCheckerD0Ev", "(anonymous namespace)::NoReturnFunctionChecker::~NoReturnFunctionChecker()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_123NoReturnFunctionCheckerEE9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::NoReturnFunctionChecker>::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_123NoReturnFunctionCheckerEE10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::NoReturnFunctionChecker>::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_123NoReturnFunctionCheckerEED1Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::NoReturnFunctionChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_123NoReturnFunctionCheckerEED0Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::NoReturnFunctionChecker>::~CheckerVisitor()"}, + {"_ZNK5clang4Decl7getAttrINS_20AnalyzerNoReturnAttrEEEPT_v", "clang::AnalyzerNoReturnAttr* clang::Decl::getAttr() const"}, + {"_ZN5clang4ento23RegisterOSAtomicCheckerERNS0_10ExprEngineE", "clang::ento::RegisterOSAtomicChecker(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_115OSAtomicCheckerD1Ev", "(anonymous namespace)::OSAtomicChecker::~OSAtomicChecker()"}, + {"_ZN12_GLOBAL__N_115OSAtomicCheckerD0Ev", "(anonymous namespace)::OSAtomicChecker::~OSAtomicChecker()"}, + {"_ZN12_GLOBAL__N_115OSAtomicChecker12evalCallExprERN5clang4ento14CheckerContextEPKNS1_8CallExprE", "(anonymous namespace)::OSAtomicChecker::evalCallExpr(clang::ento::CheckerContext&, clang::CallExpr const*)"}, + {"_ZN5clang4ento25RegisterObjCAtSyncCheckerERNS0_10ExprEngineE", "clang::ento::RegisterObjCAtSyncChecker(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_117ObjCAtSyncCheckerD1Ev", "(anonymous namespace)::ObjCAtSyncChecker::~ObjCAtSyncChecker()"}, + {"_ZN12_GLOBAL__N_117ObjCAtSyncCheckerD0Ev", "(anonymous namespace)::ObjCAtSyncChecker::~ObjCAtSyncChecker()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_117ObjCAtSyncCheckerEE9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::ObjCAtSyncChecker>::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_117ObjCAtSyncCheckerEE10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::ObjCAtSyncChecker>::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_117ObjCAtSyncCheckerEED1Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::ObjCAtSyncChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_117ObjCAtSyncCheckerEED0Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::ObjCAtSyncChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento27registerObjCSelfInitCheckerERNS0_10ExprEngineE", "clang::ento::registerObjCSelfInitChecker(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_119ObjCSelfInitCheckerD1Ev", "(anonymous namespace)::ObjCSelfInitChecker::~ObjCSelfInitChecker()"}, + {"_ZN12_GLOBAL__N_119ObjCSelfInitCheckerD0Ev", "(anonymous namespace)::ObjCSelfInitChecker::~ObjCSelfInitChecker()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_119ObjCSelfInitCheckerEE9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::ObjCSelfInitChecker>::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_119ObjCSelfInitCheckerEE10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::ObjCSelfInitChecker>::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN12_GLOBAL__N_119ObjCSelfInitChecker20postVisitObjCMessageERN5clang4ento14CheckerContextENS2_11ObjCMessageE", "(anonymous namespace)::ObjCSelfInitChecker::postVisitObjCMessage(clang::ento::CheckerContext&, clang::ento::ObjCMessage)"}, + {"_ZN12_GLOBAL__N_119ObjCSelfInitChecker13visitLocationERN5clang4ento14CheckerContextEPKNS1_4StmtENS2_4SValEb", "(anonymous namespace)::ObjCSelfInitChecker::visitLocation(clang::ento::CheckerContext&, clang::Stmt const*, clang::ento::SVal, bool)"}, + {"_Z11addSelfFlagN5clang4ento4SValEN12_GLOBAL__N_112SelfFlagEnumERNS0_14CheckerContextE", "addSelfFlag(clang::ento::SVal, (anonymous namespace)::SelfFlagEnum, clang::ento::CheckerContext&)"}, + {"_Z12getSelfFlagsN5clang4ento4SValERNS0_14CheckerContextE", "getSelfFlags(clang::ento::SVal, clang::ento::CheckerContext&)"}, + {"_Z27shouldRunOnFunctionOrMethodPKN5clang9NamedDeclE", "shouldRunOnFunctionOrMethod(clang::NamedDecl const*)"}, + {"_Z19checkForInvalidSelfPKN5clang4ExprERNS_4ento14CheckerContextEPKc", "checkForInvalidSelf(clang::Expr const*, clang::ento::CheckerContext&, char const*)"}, + {"_ZN12_GLOBAL__N_111InitSelfBugD1Ev", "(anonymous namespace)::InitSelfBug::~InitSelfBug()"}, + {"_ZN12_GLOBAL__N_111InitSelfBugD0Ev", "(anonymous namespace)::InitSelfBug::~InitSelfBug()"}, + {"_ZN12_GLOBAL__N_119ObjCSelfInitChecker20PostVisitGenericCallERN5clang4ento14CheckerContextEPKNS1_8CallExprE", "(anonymous namespace)::ObjCSelfInitChecker::PostVisitGenericCall(clang::ento::CheckerContext&, clang::CallExpr const*)"}, + {"_ZN12_GLOBAL__N_119ObjCSelfInitChecker19PreVisitGenericCallERN5clang4ento14CheckerContextEPKNS1_8CallExprE", "(anonymous namespace)::ObjCSelfInitChecker::PreVisitGenericCall(clang::ento::CheckerContext&, clang::CallExpr const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_119ObjCSelfInitCheckerEED1Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::ObjCSelfInitChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_119ObjCSelfInitCheckerEED0Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::ObjCSelfInitChecker>::~CheckerVisitor()"}, + {"_ZNSt6vectorISt4pairIPvPN5clang4ento7CheckerEESaIS6_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS6_S8_EERKS6_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + {"_ZN5clang4ento7Checker19preVisitObjCMessageERNS0_14CheckerContextENS0_11ObjCMessageE", "clang::ento::Checker::preVisitObjCMessage(clang::ento::CheckerContext&, clang::ento::ObjCMessage)"}, + {"_ZN5clang4ento7Checker12PreVisitBindERNS0_14CheckerContextEPKNS_4StmtENS0_4SValES7_", "clang::ento::Checker::PreVisitBind(clang::ento::CheckerContext&, clang::Stmt const*, clang::ento::SVal, clang::ento::SVal)"}, + {"_ZN5clang4ento7Checker15evalDeadSymbolsERNS0_14CheckerContextERNS0_12SymbolReaperE", "clang::ento::Checker::evalDeadSymbols(clang::ento::CheckerContext&, clang::ento::SymbolReaper&)"}, + {"_ZN5clang4ento7Checker11evalEndPathERNS0_24EndOfFunctionNodeBuilderEPvRNS0_10ExprEngineE", "clang::ento::Checker::evalEndPath(clang::ento::EndOfFunctionNodeBuilder&, void*, clang::ento::ExprEngine&)"}, + {"_ZN5clang4ento7Checker15MarkLiveSymbolsEPKNS0_7GRStateERNS0_12SymbolReaperE", "clang::ento::Checker::MarkLiveSymbols(clang::ento::GRState const*, clang::ento::SymbolReaper&)"}, + {"_ZN5clang4ento7Checker20VisitBranchConditionERNS0_17BranchNodeBuilderERNS0_10ExprEngineEPKNS_4StmtEPv", "clang::ento::Checker::VisitBranchCondition(clang::ento::BranchNodeBuilder&, clang::ento::ExprEngine&, clang::Stmt const*, void*)"}, + {"_ZN5clang4ento7Checker15evalNilReceiverERNS0_14CheckerContextENS0_11ObjCMessageE", "clang::ento::Checker::evalNilReceiver(clang::ento::CheckerContext&, clang::ento::ObjCMessage)"}, + {"_ZN5clang4ento7Checker12evalCallExprERNS0_14CheckerContextEPKNS_8CallExprE", "clang::ento::Checker::evalCallExpr(clang::ento::CheckerContext&, clang::CallExpr const*)"}, + {"_ZN5clang4ento7Checker10evalAssumeEPKNS0_7GRStateENS0_4SValEbPb", "clang::ento::Checker::evalAssume(clang::ento::GRState const*, clang::ento::SVal, bool, bool*)"}, + {"_ZN5clang4ento7Checker23wantsRegionChangeUpdateEPKNS0_7GRStateE", "clang::ento::Checker::wantsRegionChangeUpdate(clang::ento::GRState const*)"}, + {"_ZN5clang4ento7Checker17EvalRegionChangesEPKNS0_7GRStateEPKPKNS0_9MemRegionES9_Pb", "clang::ento::Checker::EvalRegionChanges(clang::ento::GRState const*, clang::ento::MemRegion const* const*, clang::ento::MemRegion const* const*, bool*)"}, + {"_ZN5clang4ento7Checker16VisitEndAnalysisERNS0_13ExplodedGraphERNS0_11BugReporterERNS0_10ExprEngineE", "clang::ento::Checker::VisitEndAnalysis(clang::ento::ExplodedGraph&, clang::ento::BugReporter&, clang::ento::ExprEngine&)"}, + {"_ZN5clang4ento14CheckerContext13addTransitionEPKNS0_7GRStateEPKv", "clang::ento::CheckerContext::addTransition(clang::ento::GRState const*, void const*)"}, + {"_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEjEEE7destroyEv", "llvm::ImutAVLTree>::destroy()"}, + {"_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEjEEE13computeDigestEv", "llvm::ImutAVLTree>::computeDigest()"}, + {"_ZNSt6vectorIPN4llvm11ImutAVLTreeINS0_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEjEEEESaISA_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPSA_SC_EERKSA_", "std::vector>*, std::allocator>*>>::_M_insert_aux(__gnu_cxx::__normal_iterator>**, std::vector>*, std::allocator>*>>>, llvm::ImutAVLTree>* const&)"}, + {"_ZN4llvm8DenseMapIjPNS_11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEjEEEENS_12DenseMapInfoIjEENSB_ISA_EEE16InsertIntoBucketERKjRKSA_PSt4pairIjSA_E", "llvm::DenseMap>*, llvm::DenseMapInfo, llvm::DenseMapInfo>*>>::InsertIntoBucket(unsigned int const&, llvm::ImutAVLTree>* const&, std::pair>*>*)"}, + {"_ZN4llvm8DenseMapIjPNS_11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEjEEEENS_12DenseMapInfoIjEENSB_ISA_EEE4growEj", "llvm::DenseMap>*, llvm::DenseMapInfo, llvm::DenseMapInfo>*>>::grow(unsigned int)"}, + + // {"_ZN5clang4ento14GRStateManager3setIN4llvm12ImmutableMapIPKNS0_10SymbolDataEjNS3_16ImutKeyValueInfoIS7_jEEEEEEPKNS0_7GRStateESD_NS0_12GRStateTraitIT_E8key_typeENSG_10value_typeENSG_12context_typeE", + // "clang::ento::GRState const* clang::ento::GRStateManager::set>>(clang::ento::GRState const*, clang::ento::GRStateTrait>>::key_type, clang::ento::GRStateTrait>>::value_type, clang::ento::GRStateTrait>>::context_type)"}, + // got error + + {"_ZN5clang4ento19GRStatePartialTraitIN4llvm12ImmutableMapIPKNS0_10SymbolDataEjNS2_16ImutKeyValueInfoIS6_jEEEEE13CreateContextERNS2_16BumpPtrAllocatorE", "clang::ento::GRStatePartialTrait>>::CreateContext(llvm::BumpPtrAllocator&)"}, + {"_ZN5clang4ento19GRStatePartialTraitIN4llvm12ImmutableMapIPKNS0_10SymbolDataEjNS2_16ImutKeyValueInfoIS6_jEEEEE13DeleteContextEPv", "clang::ento::GRStatePartialTrait>>::DeleteContext(void*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEjEEED2Ev", "llvm::ImutAVLFactory>::~ImutAVLFactory()"}, + {"_ZN5clang4ento19GRStatePartialTraitIN4llvm12ImmutableMapIPKNS0_10SymbolDataEjNS2_16ImutKeyValueInfoIS6_jEEEEE3SetES9_S6_jRNS9_7FactoryE", "clang::ento::GRStatePartialTrait>>::Set(llvm::ImmutableMap>, clang::ento::SymbolData const*, unsigned int, llvm::ImmutableMap>::Factory&)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEjEEE3addEPNS_11ImutAVLTreeIS7_EERKSt4pairIS6_jE", "llvm::ImutAVLFactory>::add(llvm::ImutAVLTree>*, std::pair const&)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEjEEE16getCanonicalTreeEPNS_11ImutAVLTreeIS7_EE", "llvm::ImutAVLFactory>::getCanonicalTree(llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEjEEE22compareTreeWithSectionEPNS_11ImutAVLTreeIS7_EERNS_26ImutAVLTreeInOrderIteratorIS7_EESE_", "llvm::ImutAVLFactory>::compareTreeWithSection(llvm::ImutAVLTree>*, llvm::ImutAVLTreeInOrderIterator>&, llvm::ImutAVLTreeInOrderIterator>&)"}, + {"_ZN4llvm26ImutAVLTreeGenericIteratorINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEjEEEppEv", "llvm::ImutAVLTreeGenericIterator>::operator++()"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEjEEE12add_internalERKSt4pairIS6_jEPNS_11ImutAVLTreeIS7_EE", "llvm::ImutAVLFactory>::add_internal(std::pair const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEjEEE13markImmutableEPNS_11ImutAVLTreeIS7_EE", "llvm::ImutAVLFactory>::markImmutable(llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEjEEE10createNodeEPNS_11ImutAVLTreeIS7_EERKSt4pairIS6_jESB_", "llvm::ImutAVLFactory>::createNode(llvm::ImutAVLTree>*, std::pair const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEjEEE11balanceTreeEPNS_11ImutAVLTreeIS7_EERKSt4pairIS6_jESB_", "llvm::ImutAVLFactory>::balanceTree(llvm::ImutAVLTree>*, std::pair const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm10FoldingSetIN5clang4ento19BugReportEquivClassEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang4ento19BugReportEquivClassEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang4ento19BugReportEquivClassEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang4ento19BugReportEquivClassEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS8_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang4ento19BugReportEquivClassEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN5clang4ento17EnhancedBugReportD1Ev", "clang::ento::EnhancedBugReport::~EnhancedBugReport()"}, + {"_ZN5clang4ento17EnhancedBugReportD0Ev", "clang::ento::EnhancedBugReport::~EnhancedBugReport()"}, + {"_ZN5clang4ento9BugReport24isOwnedByReporterContextEv", "clang::ento::BugReport::isOwnedByReporterContext()"}, + {"_ZNK5clang4ento9BugReport7ProfileERN4llvm16FoldingSetNodeIDE", "clang::ento::BugReport::Profile(llvm::FoldingSetNodeID&) const"}, + {"_ZN5clang4ento9BugReport23getExtraDescriptiveTextEv", "clang::ento::BugReport::getExtraDescriptiveText()"}, + {"_ZNK5clang4ento15RangedBugReport9getRangesEv", "clang::ento::RangedBugReport::getRanges() const"}, + {"_ZN5clang4ento17EnhancedBugReport23registerInitialVisitorsERNS0_18BugReporterContextEPKNS0_12ExplodedNodeE", "clang::ento::EnhancedBugReport::registerInitialVisitors(clang::ento::BugReporterContext&, clang::ento::ExplodedNode const*)"}, + {"_ZN5clang4ento9BugReport23registerInitialVisitorsERNS0_18BugReporterContextEPKNS0_12ExplodedNodeE", "clang::ento::BugReport::registerInitialVisitors(clang::ento::BugReporterContext&, clang::ento::ExplodedNode const*)"}, + {"_ZN5clang4ento18BugReporterVisitor24isOwnedByReporterContextEv", "clang::ento::BugReporterVisitor::isOwnedByReporterContext()"}, + {"_ZN5clang4ento7Checker20postVisitObjCMessageERNS0_14CheckerContextENS0_11ObjCMessageE", "clang::ento::Checker::postVisitObjCMessage(clang::ento::CheckerContext&, clang::ento::ObjCMessage)"}, + {"_ZN5clang4ento7Checker13visitLocationERNS0_14CheckerContextEPKNS_4StmtENS0_4SValEb", "clang::ento::Checker::visitLocation(clang::ento::CheckerContext&, clang::Stmt const*, clang::ento::SVal, bool)"}, + {"_ZN5clang4ento7Checker9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::Checker::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento7Checker10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::Checker::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento19CheckObjCUnusedIvarEPKNS_22ObjCImplementationDeclERNS0_11BugReporterE", "clang::ento::CheckObjCUnusedIvar(clang::ObjCImplementationDecl const*, clang::ento::BugReporter&)"}, + {"_Z4ScanRN4llvm8DenseMapIPKN5clang12ObjCIvarDeclE9IVarStateNS_12DenseMapInfoIS4_EENS6_IS5_EEEEPKNS1_17ObjCContainerDeclE", "Scan(llvm::DenseMap, llvm::DenseMapInfo>&, clang::ObjCContainerDecl const*)"}, + {"_Z4ScanRN4llvm8DenseMapIPKN5clang12ObjCIvarDeclE9IVarStateNS_12DenseMapInfoIS4_EENS6_IS5_EEEEPKNS1_4StmtE", "Scan(llvm::DenseMap, llvm::DenseMapInfo>&, clang::Stmt const*)"}, + {"_ZNK5clang4Decl7getAttrINS_10UnusedAttrEEEPT_v", "clang::UnusedAttr* clang::Decl::getAttr() const"}, + {"_ZNK5clang4Decl7getAttrINS_12IBOutletAttrEEEPT_v", "clang::IBOutletAttr* clang::Decl::getAttr() const"}, + {"_ZNK5clang4Decl7getAttrINS_22IBOutletCollectionAttrEEEPT_v", "clang::IBOutletCollectionAttr* clang::Decl::getAttr() const"}, + {"_ZN4llvm8DenseMapIPKN5clang12ObjCIvarDeclE9IVarStateNS_12DenseMapInfoIS4_EENS6_IS5_EEE16InsertIntoBucketERKS4_RKS5_PSt4pairIS4_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::ObjCIvarDecl const* const&, IVarState const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang12ObjCIvarDeclE9IVarStateNS_12DenseMapInfoIS4_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang4ento27RegisterPointerArithCheckerERNS0_10ExprEngineE", "clang::ento::RegisterPointerArithChecker(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_119PointerArithCheckerD1Ev", "(anonymous namespace)::PointerArithChecker::~PointerArithChecker()"}, + {"_ZN12_GLOBAL__N_119PointerArithCheckerD0Ev", "(anonymous namespace)::PointerArithChecker::~PointerArithChecker()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_119PointerArithCheckerEE9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::PointerArithChecker>::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_119PointerArithCheckerEE10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::PointerArithChecker>::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN12_GLOBAL__N_119PointerArithChecker22PreVisitBinaryOperatorERN5clang4ento14CheckerContextEPKNS1_14BinaryOperatorE", "(anonymous namespace)::PointerArithChecker::PreVisitBinaryOperator(clang::ento::CheckerContext&, clang::BinaryOperator const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_119PointerArithCheckerEED1Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::PointerArithChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_119PointerArithCheckerEED0Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::PointerArithChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento25RegisterPointerSubCheckerERNS0_10ExprEngineE", "clang::ento::RegisterPointerSubChecker(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_117PointerSubCheckerD1Ev", "(anonymous namespace)::PointerSubChecker::~PointerSubChecker()"}, + {"_ZN12_GLOBAL__N_117PointerSubCheckerD0Ev", "(anonymous namespace)::PointerSubChecker::~PointerSubChecker()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_117PointerSubCheckerEE9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::PointerSubChecker>::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_117PointerSubCheckerEE10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::PointerSubChecker>::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN12_GLOBAL__N_117PointerSubChecker22PreVisitBinaryOperatorERN5clang4ento14CheckerContextEPKNS1_14BinaryOperatorE", "(anonymous namespace)::PointerSubChecker::PreVisitBinaryOperator(clang::ento::CheckerContext&, clang::BinaryOperator const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_117PointerSubCheckerEED1Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::PointerSubChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_117PointerSubCheckerEED0Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::PointerSubChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento26RegisterPthreadLockCheckerERNS0_10ExprEngineE", "clang::ento::RegisterPthreadLockChecker(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_118PthreadLockCheckerD1Ev", "(anonymous namespace)::PthreadLockChecker::~PthreadLockChecker()"}, + {"_ZN12_GLOBAL__N_118PthreadLockCheckerD0Ev", "(anonymous namespace)::PthreadLockChecker::~PthreadLockChecker()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_118PthreadLockCheckerEE9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::PthreadLockChecker>::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_118PthreadLockCheckerEE10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::PthreadLockChecker>::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN12_GLOBAL__N_118PthreadLockChecker11AcquireLockERN5clang4ento14CheckerContextEPKNS1_8CallExprENS2_4SValEb", "(anonymous namespace)::PthreadLockChecker::AcquireLock(clang::ento::CheckerContext&, clang::CallExpr const*, clang::ento::SVal, bool)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_118PthreadLockCheckerEED1Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::PthreadLockChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_118PthreadLockCheckerEED0Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::PthreadLockChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento19GRStatePartialTraitIN4llvm12ImmutableSetIPKNS0_9MemRegionENS2_17ImutContainerInfoIS6_EEEEE13CreateContextERNS2_16BumpPtrAllocatorE", "clang::ento::GRStatePartialTrait>>::CreateContext(llvm::BumpPtrAllocator&)"}, + {"_ZN5clang4ento19GRStatePartialTraitIN4llvm12ImmutableSetIPKNS0_9MemRegionENS2_17ImutContainerInfoIS6_EEEEE13DeleteContextEPv", "clang::ento::GRStatePartialTrait>>::DeleteContext(void*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_17ImutContainerInfoIPKN5clang4ento9MemRegionEEEE6removeEPNS_11ImutAVLTreeIS7_EES6_", "llvm::ImutAVLFactory>::remove(llvm::ImutAVLTree>*, clang::ento::MemRegion const*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_17ImutContainerInfoIPKN5clang4ento9MemRegionEEEE15remove_internalES6_PNS_11ImutAVLTreeIS7_EE", "llvm::ImutAVLFactory>::remove_internal(clang::ento::MemRegion const*, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_17ImutContainerInfoIPKN5clang4ento9MemRegionEEEE16removeMinBindingEPNS_11ImutAVLTreeIS7_EERSB_", "llvm::ImutAVLFactory>::removeMinBinding(llvm::ImutAVLTree>*, llvm::ImutAVLTree>*&)"}, + {"_ZN5clang4ento33RegisterReturnPointerRangeCheckerERNS0_10ExprEngineE", "clang::ento::RegisterReturnPointerRangeChecker(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_125ReturnPointerRangeCheckerD1Ev", "(anonymous namespace)::ReturnPointerRangeChecker::~ReturnPointerRangeChecker()"}, + {"_ZN12_GLOBAL__N_125ReturnPointerRangeCheckerD0Ev", "(anonymous namespace)::ReturnPointerRangeChecker::~ReturnPointerRangeChecker()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_125ReturnPointerRangeCheckerEE9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::ReturnPointerRangeChecker>::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_125ReturnPointerRangeCheckerEE10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::ReturnPointerRangeChecker>::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_125ReturnPointerRangeCheckerEED1Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::ReturnPointerRangeChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_125ReturnPointerRangeCheckerEED0Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::ReturnPointerRangeChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento26RegisterReturnUndefCheckerERNS0_10ExprEngineE", "clang::ento::RegisterReturnUndefChecker(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_118ReturnUndefCheckerD1Ev", "(anonymous namespace)::ReturnUndefChecker::~ReturnUndefChecker()"}, + {"_ZN12_GLOBAL__N_118ReturnUndefCheckerD0Ev", "(anonymous namespace)::ReturnUndefChecker::~ReturnUndefChecker()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_118ReturnUndefCheckerEE9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::ReturnUndefChecker>::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_118ReturnUndefCheckerEE10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::ReturnUndefChecker>::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_118ReturnUndefCheckerEED1Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::ReturnUndefChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_118ReturnUndefCheckerEED0Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::ReturnUndefChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento28RegisterStackAddrLeakCheckerERNS0_10ExprEngineE", "clang::ento::RegisterStackAddrLeakChecker(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_120StackAddrLeakCheckerD1Ev", "(anonymous namespace)::StackAddrLeakChecker::~StackAddrLeakChecker()"}, + {"_ZN12_GLOBAL__N_120StackAddrLeakCheckerD0Ev", "(anonymous namespace)::StackAddrLeakChecker::~StackAddrLeakChecker()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_120StackAddrLeakCheckerEE9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::StackAddrLeakChecker>::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_120StackAddrLeakCheckerEE10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::StackAddrLeakChecker>::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN12_GLOBAL__N_120StackAddrLeakChecker11evalEndPathERN5clang4ento24EndOfFunctionNodeBuilderEPvRNS2_10ExprEngineE", "(anonymous namespace)::StackAddrLeakChecker::evalEndPath(clang::ento::EndOfFunctionNodeBuilder&, void*, clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_120StackAddrLeakChecker7GenNameERN4llvm11raw_ostreamEPKN5clang4ento9MemRegionERNS4_13SourceManagerE", "(anonymous namespace)::StackAddrLeakChecker::GenName(llvm::raw_ostream&, clang::ento::MemRegion const*, clang::SourceManager&)"}, + + // {"_ZZN12_GLOBAL__N_120StackAddrLeakChecker11evalEndPathERN5clang4ento24EndOfFunctionNodeBuilderEPvRNS2_10ExprEngineEEN8CallBackD1Ev", + // "(anonymous namespace)::StackAddrLeakChecker::evalEndPath(clang::ento::EndOfFunctionNodeBuilder&, void*, clang::ento::ExprEngine&)::CallBack::~CallBack()"}, + // "(anonymous namespace)::StackAddrLeakChecker::evalEndPath(clang::ento::EndOfFunctionNodeBuilder&, void*, clang::ExprEngine&)::CallBack::~CallBack()" was returned + + + // {"_ZZN12_GLOBAL__N_120StackAddrLeakChecker11evalEndPathERN5clang4ento24EndOfFunctionNodeBuilderEPvRNS2_10ExprEngineEEN8CallBackD0Ev", + // "(anonymous namespace)::StackAddrLeakChecker::evalEndPath(clang::ento::EndOfFunctionNodeBuilder&, void*, clang::ento::ExprEngine&)::CallBack::~CallBack()"}, + // "(anonymous namespace)::StackAddrLeakChecker::evalEndPath(clang::ento::EndOfFunctionNodeBuilder&, void*, clang::ExprEngine&)::CallBack::~CallBack()" was returned + + + // {"_ZZN12_GLOBAL__N_120StackAddrLeakChecker11evalEndPathERN5clang4ento24EndOfFunctionNodeBuilderEPvRNS2_10ExprEngineEEN8CallBack13HandleBindingERNS2_12StoreManagerEPKvPKNS2_9MemRegionENS2_4SValE", + // "(anonymous namespace)::StackAddrLeakChecker::evalEndPath(clang::ento::EndOfFunctionNodeBuilder&, void*, clang::ento::ExprEngine&)::CallBack::HandleBinding(clang::ento::StoreManager&, void const*, clang::ento::MemRegion const*, clang::ento::SVal)"}, + // "(anonymous namespace)::StackAddrLeakChecker::evalEndPath(clang::ento::EndOfFunctionNodeBuilder&, void*, clang::ExprEngine&)::CallBack::HandleBinding(clang::StoreManager&, void const*, clang::MemRegion const*, clang::SVal)" was returned + + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_120StackAddrLeakCheckerEED1Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::StackAddrLeakChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_120StackAddrLeakCheckerEED0Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::StackAddrLeakChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento21RegisterStreamCheckerERNS0_10ExprEngineE", "clang::ento::RegisterStreamChecker(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_113StreamCheckerD1Ev", "(anonymous namespace)::StreamChecker::~StreamChecker()"}, + {"_ZN12_GLOBAL__N_113StreamCheckerD0Ev", "(anonymous namespace)::StreamChecker::~StreamChecker()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_113StreamCheckerEE9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::StreamChecker>::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_113StreamCheckerEE10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::StreamChecker>::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN12_GLOBAL__N_113StreamChecker15evalDeadSymbolsERN5clang4ento14CheckerContextERNS2_12SymbolReaperE", "(anonymous namespace)::StreamChecker::evalDeadSymbols(clang::ento::CheckerContext&, clang::ento::SymbolReaper&)"}, + {"_ZN12_GLOBAL__N_113StreamChecker11evalEndPathERN5clang4ento24EndOfFunctionNodeBuilderEPvRNS2_10ExprEngineE", "(anonymous namespace)::StreamChecker::evalEndPath(clang::ento::EndOfFunctionNodeBuilder&, void*, clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_113StreamChecker12evalCallExprERN5clang4ento14CheckerContextEPKNS1_8CallExprE", "(anonymous namespace)::StreamChecker::evalCallExpr(clang::ento::CheckerContext&, clang::CallExpr const*)"}, + {"_ZN12_GLOBAL__N_113StreamChecker15CheckNullStreamEN5clang4ento4SValEPKNS2_7GRStateERNS2_14CheckerContextE", "(anonymous namespace)::StreamChecker::CheckNullStream(clang::ento::SVal, clang::ento::GRState const*, clang::ento::CheckerContext&)"}, + + // {"_ZNK5clang4ento7GRState3setIN12_GLOBAL__N_111StreamStateEEEPKS1_NS0_12GRStateTraitIT_E8key_typeENS9_10value_typeE", + // "clang::ento::GRState const* clang::ento::GRState::set<(anonymous namespace)::StreamState>(clang::ento::GRStateTrait<(anonymous namespace)::StreamState>::key_type, clang::ento::GRStateTrait<(anonymous namespace)::StreamState>::value_type) const"}, + // "clang::ento::GRState const* clang::ento::GRState::set<(anonymous namespace)::StreamState>(clang::ento::GRStateTrait<(anonymous namespace)::StreamState>::key_type, clang::ento::GRStateTrait<(anonymous namespace)::StreamState>::key_type::value_type) const" was returned + + {"_ZN5clang4ento19GRStatePartialTraitIN4llvm12ImmutableMapIPKNS0_10SymbolDataEN12_GLOBAL__N_111StreamStateENS2_16ImutKeyValueInfoIS6_S8_EEEEE13CreateContextERNS2_16BumpPtrAllocatorE", "clang::ento::GRStatePartialTrait>>::CreateContext(llvm::BumpPtrAllocator&)"}, + {"_ZN5clang4ento19GRStatePartialTraitIN4llvm12ImmutableMapIPKNS0_10SymbolDataEN12_GLOBAL__N_111StreamStateENS2_16ImutKeyValueInfoIS6_S8_EEEEE13DeleteContextEPv", "clang::ento::GRStatePartialTrait>>::DeleteContext(void*)"}, + {"_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_111StreamStateEEEE7destroyEv", "llvm::ImutAVLTree>::destroy()"}, + {"_ZN4llvm8DenseMapIjPNS_11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_111StreamStateEEEEENS_12DenseMapInfoIjEENSD_ISC_EEEixERKj", "llvm::DenseMap>*, llvm::DenseMapInfo, llvm::DenseMapInfo>*>>::operator[](unsigned int const&)"}, + {"_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_111StreamStateEEEE13computeDigestEv", "llvm::ImutAVLTree>::computeDigest()"}, + {"_ZNSt6vectorIPN4llvm11ImutAVLTreeINS0_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_111StreamStateEEEEESaISC_EE9push_backERKSC_", "std::vector>*, std::allocator>*>>::push_back(llvm::ImutAVLTree>* const&)"}, + {"_ZN4llvm26ImutAVLTreeInOrderIteratorINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_111StreamStateEEEEppEv", "llvm::ImutAVLTreeInOrderIterator>::operator++()"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_111StreamStateEEEE12add_internalERKSt4pairIS6_S8_EPNS_11ImutAVLTreeIS9_EE", "llvm::ImutAVLFactory>::add_internal(std::pair const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_111StreamStateEEEE13markImmutableEPNS_11ImutAVLTreeIS9_EE", "llvm::ImutAVLFactory>::markImmutable(llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_111StreamStateEEEE10createNodeEPNS_11ImutAVLTreeIS9_EERKSt4pairIS6_S8_ESD_", "llvm::ImutAVLFactory>::createNode(llvm::ImutAVLTree>*, std::pair const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_111StreamStateEEEE11balanceTreeEPNS_11ImutAVLTreeIS9_EERKSt4pairIS6_S8_ESD_", "llvm::ImutAVLFactory>::balanceTree(llvm::ImutAVLTree>*, std::pair const&, llvm::ImutAVLTree>*)"}, + {"_ZN12_GLOBAL__N_113StreamChecker11OpenFileAuxERN5clang4ento14CheckerContextEPKNS1_8CallExprE", "(anonymous namespace)::StreamChecker::OpenFileAux(clang::ento::CheckerContext&, clang::CallExpr const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_113StreamCheckerEED1Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::StreamChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_113StreamCheckerEED0Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::StreamChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento26RegisterUndefBranchCheckerERNS0_10ExprEngineE", "clang::ento::RegisterUndefBranchChecker(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_118UndefBranchCheckerD1Ev", "(anonymous namespace)::UndefBranchChecker::~UndefBranchChecker()"}, + {"_ZN12_GLOBAL__N_118UndefBranchCheckerD0Ev", "(anonymous namespace)::UndefBranchChecker::~UndefBranchChecker()"}, + {"_ZN12_GLOBAL__N_118UndefBranchChecker20VisitBranchConditionERN5clang4ento17BranchNodeBuilderERNS2_10ExprEngineEPKNS1_4StmtEPv", "(anonymous namespace)::UndefBranchChecker::VisitBranchCondition(clang::ento::BranchNodeBuilder&, clang::ento::ExprEngine&, clang::Stmt const*, void*)"}, + {"_ZN12_GLOBAL__N_118UndefBranchChecker13FindUndefExpr8FindExprEPKN5clang4ExprE", "(anonymous namespace)::UndefBranchChecker::FindUndefExpr::FindExpr(clang::Expr const*)"}, + {"_ZN5clang4ento36RegisterUndefCapturedBlockVarCheckerERNS0_10ExprEngineE", "clang::ento::RegisterUndefCapturedBlockVarChecker(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_128UndefCapturedBlockVarCheckerD1Ev", "(anonymous namespace)::UndefCapturedBlockVarChecker::~UndefCapturedBlockVarChecker()"}, + {"_ZN12_GLOBAL__N_128UndefCapturedBlockVarCheckerD0Ev", "(anonymous namespace)::UndefCapturedBlockVarChecker::~UndefCapturedBlockVarChecker()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_128UndefCapturedBlockVarCheckerEE9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::UndefCapturedBlockVarChecker>::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_128UndefCapturedBlockVarCheckerEE10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::UndefCapturedBlockVarChecker>::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_Z20FindBlockDeclRefExprPKN5clang4StmtEPKNS_7VarDeclE", "FindBlockDeclRefExpr(clang::Stmt const*, clang::VarDecl const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_128UndefCapturedBlockVarCheckerEED1Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::UndefCapturedBlockVarChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_128UndefCapturedBlockVarCheckerEED0Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::UndefCapturedBlockVarChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento26RegisterUndefResultCheckerERNS0_10ExprEngineE", "clang::ento::RegisterUndefResultChecker(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_118UndefResultCheckerD1Ev", "(anonymous namespace)::UndefResultChecker::~UndefResultChecker()"}, + {"_ZN12_GLOBAL__N_118UndefResultCheckerD0Ev", "(anonymous namespace)::UndefResultChecker::~UndefResultChecker()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_118UndefResultCheckerEE9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::UndefResultChecker>::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_118UndefResultCheckerEE10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::UndefResultChecker>::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN12_GLOBAL__N_118UndefResultChecker23PostVisitBinaryOperatorERN5clang4ento14CheckerContextEPKNS1_14BinaryOperatorE", "(anonymous namespace)::UndefResultChecker::PostVisitBinaryOperator(clang::ento::CheckerContext&, clang::BinaryOperator const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_118UndefResultCheckerEED1Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::UndefResultChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_118UndefResultCheckerEED0Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::UndefResultChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento38RegisterUndefinedArraySubscriptCheckerERNS0_10ExprEngineE", "clang::ento::RegisterUndefinedArraySubscriptChecker(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_130UndefinedArraySubscriptCheckerD1Ev", "(anonymous namespace)::UndefinedArraySubscriptChecker::~UndefinedArraySubscriptChecker()"}, + {"_ZN12_GLOBAL__N_130UndefinedArraySubscriptCheckerD0Ev", "(anonymous namespace)::UndefinedArraySubscriptChecker::~UndefinedArraySubscriptChecker()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_130UndefinedArraySubscriptCheckerEE9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::UndefinedArraySubscriptChecker>::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_130UndefinedArraySubscriptCheckerEE10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::UndefinedArraySubscriptChecker>::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_130UndefinedArraySubscriptCheckerEED1Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::UndefinedArraySubscriptChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_130UndefinedArraySubscriptCheckerEED0Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::UndefinedArraySubscriptChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento34RegisterUndefinedAssignmentCheckerERNS0_10ExprEngineE", "clang::ento::RegisterUndefinedAssignmentChecker(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_126UndefinedAssignmentCheckerD1Ev", "(anonymous namespace)::UndefinedAssignmentChecker::~UndefinedAssignmentChecker()"}, + {"_ZN12_GLOBAL__N_126UndefinedAssignmentCheckerD0Ev", "(anonymous namespace)::UndefinedAssignmentChecker::~UndefinedAssignmentChecker()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_126UndefinedAssignmentCheckerEE9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::UndefinedAssignmentChecker>::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_126UndefinedAssignmentCheckerEE10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::UndefinedAssignmentChecker>::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN12_GLOBAL__N_126UndefinedAssignmentChecker12PreVisitBindERN5clang4ento14CheckerContextEPKNS1_4StmtENS2_4SValES8_", "(anonymous namespace)::UndefinedAssignmentChecker::PreVisitBind(clang::ento::CheckerContext&, clang::Stmt const*, clang::ento::SVal, clang::ento::SVal)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_126UndefinedAssignmentCheckerEED1Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::UndefinedAssignmentChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_126UndefinedAssignmentCheckerEED0Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::UndefinedAssignmentChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento22RegisterUnixAPICheckerERNS0_10ExprEngineE", "clang::ento::RegisterUnixAPIChecker(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_114UnixAPICheckerD1Ev", "(anonymous namespace)::UnixAPIChecker::~UnixAPIChecker()"}, + {"_ZN12_GLOBAL__N_114UnixAPICheckerD0Ev", "(anonymous namespace)::UnixAPIChecker::~UnixAPIChecker()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_114UnixAPICheckerEE9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::UnixAPIChecker>::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_114UnixAPICheckerEE10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::UnixAPIChecker>::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_Z9CheckOpenRN5clang4ento14CheckerContextERN12_GLOBAL__N_114UnixAPICheckerEPKNS_8CallExprERPNS0_7BugTypeE", "CheckOpen(clang::ento::CheckerContext&, (anonymous namespace)::UnixAPIChecker&, clang::CallExpr const*, clang::ento::BugType*&)"}, + {"_Z16CheckPthreadOnceRN5clang4ento14CheckerContextERN12_GLOBAL__N_114UnixAPICheckerEPKNS_8CallExprERPNS0_7BugTypeE", "CheckPthreadOnce(clang::ento::CheckerContext&, (anonymous namespace)::UnixAPIChecker&, clang::CallExpr const*, clang::ento::BugType*&)"}, + {"_Z15CheckMallocZeroRN5clang4ento14CheckerContextERN12_GLOBAL__N_114UnixAPICheckerEPKNS_8CallExprERPNS0_7BugTypeE", "CheckMallocZero(clang::ento::CheckerContext&, (anonymous namespace)::UnixAPIChecker&, clang::CallExpr const*, clang::ento::BugType*&)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_114UnixAPICheckerEED1Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::UnixAPIChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_114UnixAPICheckerEED0Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::UnixAPIChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento30RegisterUnreachableCodeCheckerERNS0_10ExprEngineE", "clang::ento::RegisterUnreachableCodeChecker(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_122UnreachableCodeCheckerD1Ev", "(anonymous namespace)::UnreachableCodeChecker::~UnreachableCodeChecker()"}, + {"_ZN12_GLOBAL__N_122UnreachableCodeCheckerD0Ev", "(anonymous namespace)::UnreachableCodeChecker::~UnreachableCodeChecker()"}, + {"_ZN12_GLOBAL__N_122UnreachableCodeChecker16VisitEndAnalysisERN5clang4ento13ExplodedGraphERNS2_11BugReporterERNS2_10ExprEngineE", "(anonymous namespace)::UnreachableCodeChecker::VisitEndAnalysis(clang::ento::ExplodedGraph&, clang::ento::BugReporter&, clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_122UnreachableCodeChecker26FindUnreachableEntryPointsEPKN5clang8CFGBlockE", "(anonymous namespace)::UnreachableCodeChecker::FindUnreachableEntryPoints(clang::CFGBlock const*)"}, + + // {"_ZN4llvm8SmallSetIjLj256EE6insertERKj", + // "llvm::SmallSet::insert(unsigned int const&)"}, + // "llvm::SmallSet::insert(unsigned int const&)" was returned + + {"_ZN5clang4ento12containsStmtINS_17SizeOfAlignOfExprEEEbPKNS_4StmtE", "bool clang::ento::containsStmt(clang::Stmt const*)"}, + {"_ZN5clang4ento22RegisterVLASizeCheckerERNS0_10ExprEngineE", "clang::ento::RegisterVLASizeChecker(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_114VLASizeCheckerD1Ev", "(anonymous namespace)::VLASizeChecker::~VLASizeChecker()"}, + {"_ZN12_GLOBAL__N_114VLASizeCheckerD0Ev", "(anonymous namespace)::VLASizeChecker::~VLASizeChecker()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_114VLASizeCheckerEE9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::VLASizeChecker>::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_114VLASizeCheckerEE10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::VLASizeChecker>::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_114VLASizeCheckerEED1Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::VLASizeChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_114VLASizeCheckerEED0Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::VLASizeChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento10ExprEngine12VisitAggExprEPKNS_4ExprEPKNS0_9MemRegionEPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetE", "clang::ento::ExprEngine::VisitAggExpr(clang::Expr const*, clang::ento::MemRegion const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&)"}, + {"_ZN5clang11StmtVisitorIN12_GLOBAL__N_114AggExprVisitorEvE5VisitEPNS_4StmtE", "clang::StmtVisitor<(anonymous namespace)::AggExprVisitor, void>::Visit(clang::Stmt*)"}, + {"_ZN5clang4ento15AnalysisManager29getAnalysisContextInAnotherTUEPKNS_4DeclE", "clang::ento::AnalysisManager::getAnalysisContextInAnotherTU(clang::Decl const*)"}, + {"_ZN5clang4ento28CreateBasicConstraintManagerERNS0_14GRStateManagerERNS0_9SubEngineE", "clang::ento::CreateBasicConstraintManager(clang::ento::GRStateManager&, clang::ento::SubEngine&)"}, + {"_ZN12_GLOBAL__N_122BasicConstraintManagerD1Ev", "(anonymous namespace)::BasicConstraintManager::~BasicConstraintManager()"}, + {"_ZN12_GLOBAL__N_122BasicConstraintManagerD0Ev", "(anonymous namespace)::BasicConstraintManager::~BasicConstraintManager()"}, + {"_ZNK12_GLOBAL__N_122BasicConstraintManager9getSymValEPKN5clang4ento7GRStateEPKNS2_10SymbolDataE", "(anonymous namespace)::BasicConstraintManager::getSymVal(clang::ento::GRState const*, clang::ento::SymbolData const*) const"}, + {"_ZNK12_GLOBAL__N_122BasicConstraintManager7isEqualEPKN5clang4ento7GRStateEPKNS2_10SymbolDataERKN4llvm6APSIntE", "(anonymous namespace)::BasicConstraintManager::isEqual(clang::ento::GRState const*, clang::ento::SymbolData const*, llvm::APSInt const&) const"}, + {"_ZN12_GLOBAL__N_122BasicConstraintManager18removeDeadBindingsEPKN5clang4ento7GRStateERNS2_12SymbolReaperE", "(anonymous namespace)::BasicConstraintManager::removeDeadBindings(clang::ento::GRState const*, clang::ento::SymbolReaper&)"}, + {"_ZN12_GLOBAL__N_122BasicConstraintManager5printEPKN5clang4ento7GRStateERN4llvm11raw_ostreamEPKcSA_", "(anonymous namespace)::BasicConstraintManager::print(clang::ento::GRState const*, llvm::raw_ostream&, char const*, char const*)"}, + {"_ZN12_GLOBAL__N_122BasicConstraintManager11assumeSymNEEPKN5clang4ento7GRStateEPKNS2_10SymbolDataERKN4llvm6APSIntESC_", "(anonymous namespace)::BasicConstraintManager::assumeSymNE(clang::ento::GRState const*, clang::ento::SymbolData const*, llvm::APSInt const&, llvm::APSInt const&)"}, + {"_ZN12_GLOBAL__N_122BasicConstraintManager11assumeSymEQEPKN5clang4ento7GRStateEPKNS2_10SymbolDataERKN4llvm6APSIntESC_", "(anonymous namespace)::BasicConstraintManager::assumeSymEQ(clang::ento::GRState const*, clang::ento::SymbolData const*, llvm::APSInt const&, llvm::APSInt const&)"}, + {"_ZN12_GLOBAL__N_122BasicConstraintManager11assumeSymLTEPKN5clang4ento7GRStateEPKNS2_10SymbolDataERKN4llvm6APSIntESC_", "(anonymous namespace)::BasicConstraintManager::assumeSymLT(clang::ento::GRState const*, clang::ento::SymbolData const*, llvm::APSInt const&, llvm::APSInt const&)"}, + {"_ZN12_GLOBAL__N_122BasicConstraintManager11assumeSymGTEPKN5clang4ento7GRStateEPKNS2_10SymbolDataERKN4llvm6APSIntESC_", "(anonymous namespace)::BasicConstraintManager::assumeSymGT(clang::ento::GRState const*, clang::ento::SymbolData const*, llvm::APSInt const&, llvm::APSInt const&)"}, + {"_ZN12_GLOBAL__N_122BasicConstraintManager11assumeSymLEEPKN5clang4ento7GRStateEPKNS2_10SymbolDataERKN4llvm6APSIntESC_", "(anonymous namespace)::BasicConstraintManager::assumeSymLE(clang::ento::GRState const*, clang::ento::SymbolData const*, llvm::APSInt const&, llvm::APSInt const&)"}, + {"_ZN12_GLOBAL__N_122BasicConstraintManager11assumeSymGEEPKN5clang4ento7GRStateEPKNS2_10SymbolDataERKN4llvm6APSIntESC_", "(anonymous namespace)::BasicConstraintManager::assumeSymGE(clang::ento::GRState const*, clang::ento::SymbolData const*, llvm::APSInt const&, llvm::APSInt const&)"}, + {"_ZN12_GLOBAL__N_122BasicConstraintManager5AddEQEPKN5clang4ento7GRStateEPKNS2_10SymbolDataERKN4llvm6APSIntE", "(anonymous namespace)::BasicConstraintManager::AddEQ(clang::ento::GRState const*, clang::ento::SymbolData const*, llvm::APSInt const&)"}, + + // {"_ZNK5clang4ento7GRState3getIN12_GLOBAL__N_110ConstNotEqEEENS0_12GRStateTraitIT_E11lookup_typeENS7_8key_typeE", + // "clang::ento::GRStateTrait<(anonymous namespace)::ConstNotEq>::lookup_type clang::ento::GRState::get<(anonymous namespace)::ConstNotEq>(clang::ento::GRStateTrait<(anonymous namespace)::ConstNotEq>::key_type) const"}, + // "clang::ento::GRStateTrait<(anonymous namespace)::ConstNotEq>::lookup_type clang::ento::GRState::get<(anonymous namespace)::ConstNotEq>(clang::ento::GRStateTrait<(anonymous namespace)::ConstNotEq>::lookup_type::key_type) const" was returned + + + // {"_ZNK5clang4ento7GRState3getIN12_GLOBAL__N_17ConstEqEEENS0_12GRStateTraitIT_E11lookup_typeENS7_8key_typeE", + // "clang::ento::GRStateTrait<(anonymous namespace)::ConstEq>::lookup_type clang::ento::GRState::get<(anonymous namespace)::ConstEq>(clang::ento::GRStateTrait<(anonymous namespace)::ConstEq>::key_type) const"}, + // "clang::ento::GRStateTrait<(anonymous namespace)::ConstEq>::lookup_type clang::ento::GRState::get<(anonymous namespace)::ConstEq>(clang::ento::GRStateTrait<(anonymous namespace)::ConstEq>::lookup_type::key_type) const" was returned + + {"_ZN5clang4ento19GRStatePartialTraitIN4llvm12ImmutableMapIPKNS0_10SymbolDataEPKNS2_6APSIntENS2_16ImutKeyValueInfoIS6_S9_EEEEE13CreateContextERNS2_16BumpPtrAllocatorE", "clang::ento::GRStatePartialTrait>>::CreateContext(llvm::BumpPtrAllocator&)"}, + {"_ZN5clang4ento19GRStatePartialTraitIN4llvm12ImmutableMapIPKNS0_10SymbolDataEPKNS2_6APSIntENS2_16ImutKeyValueInfoIS6_S9_EEEEE13DeleteContextEPv", "clang::ento::GRStatePartialTrait>>::DeleteContext(void*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEPKNS_6APSIntEEEED2Ev", "llvm::ImutAVLFactory>::~ImutAVLFactory()"}, + {"_ZN5clang4ento19GRStatePartialTraitIN4llvm12ImmutableMapIPKNS0_10SymbolDataEPKNS2_6APSIntENS2_16ImutKeyValueInfoIS6_S9_EEEEE3SetESC_S6_S9_RNSC_7FactoryE", "clang::ento::GRStatePartialTrait>>::Set(llvm::ImmutableMap>, clang::ento::SymbolData const*, llvm::APSInt const*, llvm::ImmutableMap>::Factory&)"}, + {"_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEPKNS_6APSIntEEEE7destroyEv", "llvm::ImutAVLTree>::destroy()"}, + {"_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEPKNS_6APSIntEEEE13computeDigestEv", "llvm::ImutAVLTree>::computeDigest()"}, + {"_ZNSt6vectorIPN4llvm11ImutAVLTreeINS0_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEPKNS0_6APSIntEEEEESaISD_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPSD_SF_EERKSD_", "std::vector>*, std::allocator>*>>::_M_insert_aux(__gnu_cxx::__normal_iterator>**, std::vector>*, std::allocator>*>>>, llvm::ImutAVLTree>* const&)"}, + {"_ZN4llvm8DenseMapIjPNS_11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEPKNS_6APSIntEEEEENS_12DenseMapInfoIjEENSE_ISD_EEE16InsertIntoBucketERKjRKSD_PSt4pairIjSD_E", "llvm::DenseMap>*, llvm::DenseMapInfo, llvm::DenseMapInfo>*>>::InsertIntoBucket(unsigned int const&, llvm::ImutAVLTree>* const&, std::pair>*>*)"}, + {"_ZN4llvm8DenseMapIjPNS_11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEPKNS_6APSIntEEEEENS_12DenseMapInfoIjEENSE_ISD_EEE4growEj", "llvm::DenseMap>*, llvm::DenseMapInfo, llvm::DenseMapInfo>*>>::grow(unsigned int)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEPKNS_6APSIntEEEE3addEPNS_11ImutAVLTreeISA_EERKSt4pairIS6_S9_E", "llvm::ImutAVLFactory>::add(llvm::ImutAVLTree>*, std::pair const&)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEPKNS_6APSIntEEEE16getCanonicalTreeEPNS_11ImutAVLTreeISA_EE", "llvm::ImutAVLFactory>::getCanonicalTree(llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEPKNS_6APSIntEEEE22compareTreeWithSectionEPNS_11ImutAVLTreeISA_EERNS_26ImutAVLTreeInOrderIteratorISA_EESH_", "llvm::ImutAVLFactory>::compareTreeWithSection(llvm::ImutAVLTree>*, llvm::ImutAVLTreeInOrderIterator>&, llvm::ImutAVLTreeInOrderIterator>&)"}, + {"_ZN4llvm26ImutAVLTreeGenericIteratorINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEPKNS_6APSIntEEEEppEv", "llvm::ImutAVLTreeGenericIterator>::operator++()"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEPKNS_6APSIntEEEE12add_internalERKSt4pairIS6_S9_EPNS_11ImutAVLTreeISA_EE", "llvm::ImutAVLFactory>::add_internal(std::pair const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEPKNS_6APSIntEEEE13markImmutableEPNS_11ImutAVLTreeISA_EE", "llvm::ImutAVLFactory>::markImmutable(llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEPKNS_6APSIntEEEE10createNodeEPNS_11ImutAVLTreeISA_EERKSt4pairIS6_S9_ESE_", "llvm::ImutAVLFactory>::createNode(llvm::ImutAVLTree>*, std::pair const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEPKNS_6APSIntEEEE11balanceTreeEPNS_11ImutAVLTreeISA_EERKSt4pairIS6_S9_ESE_", "llvm::ImutAVLFactory>::balanceTree(llvm::ImutAVLTree>*, std::pair const&, llvm::ImutAVLTree>*)"}, + {"_ZN5clang4ento19GRStatePartialTraitIN4llvm12ImmutableMapIPKNS0_10SymbolDataENS2_12ImmutableSetIPNS2_6APSIntENS2_17ImutContainerInfoIS9_EEEENS2_16ImutKeyValueInfoIS6_SC_EEEEE6LookupESF_S6_", "clang::ento::GRStatePartialTrait>, llvm::ImutKeyValueInfo>>>>::Lookup(llvm::ImmutableMap>, llvm::ImutKeyValueInfo>>>, clang::ento::SymbolData const*)"}, + {"_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataENS_12ImmutableSetIPNS_6APSIntENS_17ImutContainerInfoIS9_EEEEEEE7destroyEv", "llvm::ImutAVLTree>>>::destroy()"}, + {"_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataENS_12ImmutableSetIPNS_6APSIntENS_17ImutContainerInfoIS9_EEEEEEE13computeDigestEv", "llvm::ImutAVLTree>>>::computeDigest()"}, + {"_ZNSt6vectorIPN4llvm11ImutAVLTreeINS0_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataENS0_12ImmutableSetIPNS0_6APSIntENS0_17ImutContainerInfoISA_EEEEEEEESaISG_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPSG_SI_EERKSG_", "std::vector>>>*, std::allocator>>>*>>::_M_insert_aux(__gnu_cxx::__normal_iterator>>>**, std::vector>>>*, std::allocator>>>*>>>, llvm::ImutAVLTree>>>* const&)"}, + {"_ZN4llvm8DenseMapIjPNS_11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataENS_12ImmutableSetIPNS_6APSIntENS_17ImutContainerInfoISA_EEEEEEEENS_12DenseMapInfoIjEENSH_ISG_EEE16InsertIntoBucketERKjRKSG_PSt4pairIjSG_E", "llvm::DenseMap>>>*, llvm::DenseMapInfo, llvm::DenseMapInfo>>>*>>::InsertIntoBucket(unsigned int const&, llvm::ImutAVLTree>>>* const&, std::pair>>>*>*)"}, + {"_ZN4llvm8DenseMapIjPNS_11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataENS_12ImmutableSetIPNS_6APSIntENS_17ImutContainerInfoISA_EEEEEEEENS_12DenseMapInfoIjEENSH_ISG_EEE4growEj", "llvm::DenseMap>>>*, llvm::DenseMapInfo, llvm::DenseMapInfo>>>*>>::grow(unsigned int)"}, + {"_ZN5clang4ento19GRStatePartialTraitIN4llvm12ImmutableMapIPKNS0_10SymbolDataENS2_12ImmutableSetIPNS2_6APSIntENS2_17ImutContainerInfoIS9_EEEENS2_16ImutKeyValueInfoIS6_SC_EEEEE13CreateContextERNS2_16BumpPtrAllocatorE", "clang::ento::GRStatePartialTrait>, llvm::ImutKeyValueInfo>>>>::CreateContext(llvm::BumpPtrAllocator&)"}, + {"_ZN5clang4ento19GRStatePartialTraitIN4llvm12ImmutableMapIPKNS0_10SymbolDataENS2_12ImmutableSetIPNS2_6APSIntENS2_17ImutContainerInfoIS9_EEEENS2_16ImutKeyValueInfoIS6_SC_EEEEE13DeleteContextEPv", "clang::ento::GRStatePartialTrait>, llvm::ImutKeyValueInfo>>>>::DeleteContext(void*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataENS_12ImmutableSetIPNS_6APSIntENS_17ImutContainerInfoIS9_EEEEEEED2Ev", "llvm::ImutAVLFactory>>>::~ImutAVLFactory()"}, + {"_ZN4llvm12ImmutableMapIPKN5clang4ento10SymbolDataENS_12ImmutableSetIPNS_6APSIntENS_17ImutContainerInfoIS8_EEEENS_16ImutKeyValueInfoIS5_SB_EEE7Factory3addESE_RKS5_RKSB_", "llvm::ImmutableMap>, llvm::ImutKeyValueInfo>>>::Factory::add(llvm::ImmutableMap>, llvm::ImutKeyValueInfo>>>, clang::ento::SymbolData const* const&, llvm::ImmutableSet> const&)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataENS_12ImmutableSetIPNS_6APSIntENS_17ImutContainerInfoIS9_EEEEEEE3addEPNS_11ImutAVLTreeISD_EERKSt4pairIS6_SC_E", "llvm::ImutAVLFactory>>>::add(llvm::ImutAVLTree>>>*, std::pair>> const&)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataENS_12ImmutableSetIPNS_6APSIntENS_17ImutContainerInfoIS9_EEEEEEE16getCanonicalTreeEPNS_11ImutAVLTreeISD_EE", "llvm::ImutAVLFactory>>>::getCanonicalTree(llvm::ImutAVLTree>>>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataENS_12ImmutableSetIPNS_6APSIntENS_17ImutContainerInfoIS9_EEEEEEE22compareTreeWithSectionEPNS_11ImutAVLTreeISD_EERNS_26ImutAVLTreeInOrderIteratorISD_EESK_", "llvm::ImutAVLFactory>>>::compareTreeWithSection(llvm::ImutAVLTree>>>*, llvm::ImutAVLTreeInOrderIterator>>>&, llvm::ImutAVLTreeInOrderIterator>>>&)"}, + {"_ZN4llvm26ImutAVLTreeGenericIteratorINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataENS_12ImmutableSetIPNS_6APSIntENS_17ImutContainerInfoIS9_EEEEEEEppEv", "llvm::ImutAVLTreeGenericIterator>>>::operator++()"}, + {"_ZNK4llvm11ImutAVLTreeINS_17ImutContainerInfoIPNS_6APSIntEEEE7isEqualERKS5_", "llvm::ImutAVLTree>::isEqual(llvm::ImutAVLTree> const&) const"}, + {"_ZN4llvm26ImutAVLTreeGenericIteratorINS_17ImutContainerInfoIPNS_6APSIntEEEEppEv", "llvm::ImutAVLTreeGenericIterator>::operator++()"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataENS_12ImmutableSetIPNS_6APSIntENS_17ImutContainerInfoIS9_EEEEEEE12add_internalERKSt4pairIS6_SC_EPNS_11ImutAVLTreeISD_EE", "llvm::ImutAVLFactory>>>::add_internal(std::pair>> const&, llvm::ImutAVLTree>>>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataENS_12ImmutableSetIPNS_6APSIntENS_17ImutContainerInfoIS9_EEEEEEE13markImmutableEPNS_11ImutAVLTreeISD_EE", "llvm::ImutAVLFactory>>>::markImmutable(llvm::ImutAVLTree>>>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataENS_12ImmutableSetIPNS_6APSIntENS_17ImutContainerInfoIS9_EEEEEEE10createNodeEPNS_11ImutAVLTreeISD_EERKSt4pairIS6_SC_ESH_", "llvm::ImutAVLFactory>>>::createNode(llvm::ImutAVLTree>>>*, std::pair>> const&, llvm::ImutAVLTree>>>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataENS_12ImmutableSetIPNS_6APSIntENS_17ImutContainerInfoIS9_EEEEEEE11balanceTreeEPNS_11ImutAVLTreeISD_EERKSt4pairIS6_SC_ESH_", "llvm::ImutAVLFactory>>>::balanceTree(llvm::ImutAVLTree>>>*, std::pair>> const&, llvm::ImutAVLTree>>>*)"}, + {"_ZN4llvm11ImutAVLTreeINS_17ImutContainerInfoIPNS_6APSIntEEEE7destroyEv", "llvm::ImutAVLTree>::destroy()"}, + {"_ZN4llvm11ImutAVLTreeINS_17ImutContainerInfoIPNS_6APSIntEEEE13computeDigestEv", "llvm::ImutAVLTree>::computeDigest()"}, + {"_ZNSt6vectorIPN4llvm11ImutAVLTreeINS0_17ImutContainerInfoIPNS0_6APSIntEEEEESaIS7_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS7_S9_EERKS7_", "std::vector>*, std::allocator>*>>::_M_insert_aux(__gnu_cxx::__normal_iterator>**, std::vector>*, std::allocator>*>>>, llvm::ImutAVLTree>* const&)"}, + {"_ZN4llvm8DenseMapIjPNS_11ImutAVLTreeINS_17ImutContainerInfoIPNS_6APSIntEEEEENS_12DenseMapInfoIjEENS8_IS7_EEE16InsertIntoBucketERKjRKS7_PSt4pairIjS7_E", "llvm::DenseMap>*, llvm::DenseMapInfo, llvm::DenseMapInfo>*>>::InsertIntoBucket(unsigned int const&, llvm::ImutAVLTree>* const&, std::pair>*>*)"}, + {"_ZN4llvm8DenseMapIjPNS_11ImutAVLTreeINS_17ImutContainerInfoIPNS_6APSIntEEEEENS_12DenseMapInfoIjEENS8_IS7_EEE4growEj", "llvm::DenseMap>*, llvm::DenseMapInfo, llvm::DenseMapInfo>*>>::grow(unsigned int)"}, + {"_ZN4llvm14ImutAVLFactoryINS_17ImutContainerInfoIPNS_6APSIntEEEE3addEPNS_11ImutAVLTreeIS4_EEPKS2_", "llvm::ImutAVLFactory>::add(llvm::ImutAVLTree>*, llvm::APSInt const*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_17ImutContainerInfoIPNS_6APSIntEEEE16getCanonicalTreeEPNS_11ImutAVLTreeIS4_EE", "llvm::ImutAVLFactory>::getCanonicalTree(llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_17ImutContainerInfoIPNS_6APSIntEEEE22compareTreeWithSectionEPNS_11ImutAVLTreeIS4_EERNS_26ImutAVLTreeInOrderIteratorIS4_EESB_", "llvm::ImutAVLFactory>::compareTreeWithSection(llvm::ImutAVLTree>*, llvm::ImutAVLTreeInOrderIterator>&, llvm::ImutAVLTreeInOrderIterator>&)"}, + {"_ZN4llvm14ImutAVLFactoryINS_17ImutContainerInfoIPNS_6APSIntEEEE12add_internalEPKS2_PNS_11ImutAVLTreeIS4_EE", "llvm::ImutAVLFactory>::add_internal(llvm::APSInt const*, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_17ImutContainerInfoIPNS_6APSIntEEEE13markImmutableEPNS_11ImutAVLTreeIS4_EE", "llvm::ImutAVLFactory>::markImmutable(llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_17ImutContainerInfoIPNS_6APSIntEEEE10createNodeEPNS_11ImutAVLTreeIS4_EEPKS2_S8_", "llvm::ImutAVLFactory>::createNode(llvm::ImutAVLTree>*, llvm::APSInt const*, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_17ImutContainerInfoIPNS_6APSIntEEEE11balanceTreeEPNS_11ImutAVLTreeIS4_EEPKS2_S8_", "llvm::ImutAVLFactory>::balanceTree(llvm::ImutAVLTree>*, llvm::APSInt const*, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataENS_12ImmutableSetIPNS_6APSIntENS_17ImutContainerInfoIS9_EEEEEEE6removeEPNS_11ImutAVLTreeISD_EERKS6_", "llvm::ImutAVLFactory>>>::remove(llvm::ImutAVLTree>>>*, clang::ento::SymbolData const* const&)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataENS_12ImmutableSetIPNS_6APSIntENS_17ImutContainerInfoIS9_EEEEEEE15remove_internalERKS6_PNS_11ImutAVLTreeISD_EE", "llvm::ImutAVLFactory>>>::remove_internal(clang::ento::SymbolData const* const&, llvm::ImutAVLTree>>>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataENS_12ImmutableSetIPNS_6APSIntENS_17ImutContainerInfoIS9_EEEEEEE16removeMinBindingEPNS_11ImutAVLTreeISD_EERSH_", "llvm::ImutAVLFactory>>>::removeMinBinding(llvm::ImutAVLTree>>>*, llvm::ImutAVLTree>>>*&)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEPKNS_6APSIntEEEE6removeEPNS_11ImutAVLTreeISA_EERKS6_", "llvm::ImutAVLFactory>::remove(llvm::ImutAVLTree>*, clang::ento::SymbolData const* const&)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEPKNS_6APSIntEEEE15remove_internalERKS6_PNS_11ImutAVLTreeISA_EE", "llvm::ImutAVLFactory>::remove_internal(clang::ento::SymbolData const* const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEPKNS_6APSIntEEEE16removeMinBindingEPNS_11ImutAVLTreeISA_EERSE_", "llvm::ImutAVLFactory>::removeMinBinding(llvm::ImutAVLTree>*, llvm::ImutAVLTree>*&)"}, + {"_ZN5clang4ento19GRStatePartialTraitIN4llvm12ImmutableMapIPKNS0_10SymbolDataEPKNS2_6APSIntENS2_16ImutKeyValueInfoIS6_S9_EEEEE6LookupESC_S6_", "clang::ento::GRStatePartialTrait>>::Lookup(llvm::ImmutableMap>, clang::ento::SymbolData const*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_17ImutContainerInfoIPNS_6APSIntEEEED2Ev", "llvm::ImutAVLFactory>::~ImutAVLFactory()"}, + {"_ZN5clang4ento23CreateBasicStoreManagerERNS0_14GRStateManagerE", "clang::ento::CreateBasicStoreManager(clang::ento::GRStateManager&)"}, + {"_ZN5clang4ento12StoreManager15BindingsHandlerD0Ev", "clang::ento::StoreManager::BindingsHandler::~BindingsHandler()"}, + {"_ZN5clang4ento12StoreManager15BindingsHandlerD1Ev", "clang::ento::StoreManager::BindingsHandler::~BindingsHandler()"}, + {"_ZN5clang4ento12StoreManager15BindingsHandlerD2Ev", "clang::ento::StoreManager::BindingsHandler::~BindingsHandler()"}, + {"_ZN12_GLOBAL__N_117BasicStoreManagerD1Ev", "(anonymous namespace)::BasicStoreManager::~BasicStoreManager()"}, + {"_ZN12_GLOBAL__N_117BasicStoreManagerD0Ev", "(anonymous namespace)::BasicStoreManager::~BasicStoreManager()"}, + {"_ZN12_GLOBAL__N_117BasicStoreManager8RetrieveEPKvN5clang4ento3LocENS3_8QualTypeE", "(anonymous namespace)::BasicStoreManager::Retrieve(void const*, clang::ento::Loc, clang::QualType)"}, + {"_ZN12_GLOBAL__N_117BasicStoreManager4BindEPKvN5clang4ento3LocENS4_4SValE", "(anonymous namespace)::BasicStoreManager::Bind(void const*, clang::ento::Loc, clang::ento::SVal)"}, + {"_ZN12_GLOBAL__N_117BasicStoreManager6RemoveEPKvN5clang4ento3LocE", "(anonymous namespace)::BasicStoreManager::Remove(void const*, clang::ento::Loc)"}, + {"_ZN12_GLOBAL__N_117BasicStoreManager19BindCompoundLiteralEPKvPKN5clang19CompoundLiteralExprEPKNS3_15LocationContextENS3_4ento4SValE", "(anonymous namespace)::BasicStoreManager::BindCompoundLiteral(void const*, clang::CompoundLiteralExpr const*, clang::LocationContext const*, clang::ento::SVal)"}, + {"_ZN12_GLOBAL__N_117BasicStoreManager15getInitialStoreEPKN5clang15LocationContextE", "(anonymous namespace)::BasicStoreManager::getInitialStore(clang::LocationContext const*)"}, + {"_ZN12_GLOBAL__N_117BasicStoreManager15getSubRegionMapEPKv", "(anonymous namespace)::BasicStoreManager::getSubRegionMap(void const*)"}, + {"_ZN12_GLOBAL__N_117BasicStoreManager14ArrayToPointerEN5clang4ento3LocE", "(anonymous namespace)::BasicStoreManager::ArrayToPointer(clang::ento::Loc)"}, + {"_ZN12_GLOBAL__N_117BasicStoreManager18removeDeadBindingsEPKvPKN5clang17StackFrameContextERNS3_4ento12SymbolReaperERN4llvm15SmallVectorImplIPKNS7_9MemRegionEEE", "(anonymous namespace)::BasicStoreManager::removeDeadBindings(void const*, clang::StackFrameContext const*, clang::ento::SymbolReaper&, llvm::SmallVectorImpl&)"}, + {"_ZN12_GLOBAL__N_117BasicStoreManager8BindDeclEPKvPKN5clang4ento9VarRegionENS4_4SValE", "(anonymous namespace)::BasicStoreManager::BindDecl(void const*, clang::ento::VarRegion const*, clang::ento::SVal)"}, + {"_ZN12_GLOBAL__N_117BasicStoreManager18BindDeclWithNoInitEPKvPKN5clang4ento9VarRegionE", "(anonymous namespace)::BasicStoreManager::BindDeclWithNoInit(void const*, clang::ento::VarRegion const*)"}, + + // {"_ZN12_GLOBAL__N_117BasicStoreManager17InvalidateRegionsEPKvPKPKN5clang4ento9MemRegionES9_PKNS3_4ExprEjPN4llvm8DenseSetIPKNS4_10SymbolDataENSD_12DenseMapInfoISH_EEEEbPNSD_11SmallVectorIS7_Lj8EEE", + // "(anonymous namespace)::BasicStoreManager::InvalidateRegions(void const*, clang::ento::MemRegion const* const*, clang::ento::MemRegion const* const*, clang::Expr const*, unsigned int, llvm::DenseSet>*, bool, llvm::SmallVector*)"}, + // "(anonymous namespace)::BasicStoreManager::InvalidateRegions(void const*, clang::ento::MemRegion const* const*, clang::ento::MemRegion const* const*, clang::Expr const*, unsigned int, llvm::DenseSet>*, bool, llvm::SmallVector*)" was returned + + {"_ZN12_GLOBAL__N_117BasicStoreManager5printEPKvRN4llvm11raw_ostreamEPKcS7_", "(anonymous namespace)::BasicStoreManager::print(void const*, llvm::raw_ostream&, char const*, char const*)"}, + {"_ZN12_GLOBAL__N_117BasicStoreManager12iterBindingsEPKvRN5clang4ento12StoreManager15BindingsHandlerE", "(anonymous namespace)::BasicStoreManager::iterBindings(void const*, clang::ento::StoreManager::BindingsHandler&)"}, + {"_ZN12_GLOBAL__N_117BasicStoreManager16InvalidateRegionEPKvPKN5clang4ento9MemRegionEPKNS3_4ExprEjPN4llvm8DenseSetIPKNS4_10SymbolDataENSB_12DenseMapInfoISF_EEEE", "(anonymous namespace)::BasicStoreManager::InvalidateRegion(void const*, clang::ento::MemRegion const*, clang::Expr const*, unsigned int, llvm::DenseSet>*)"}, + {"_ZN12_GLOBAL__N_117BasicStoreManager16BindDeclInternalEPKvPKN5clang4ento9VarRegionEPNS4_4SValE", "(anonymous namespace)::BasicStoreManager::BindDeclInternal(void const*, clang::ento::VarRegion const*, clang::ento::SVal*)"}, + {"_ZN12_GLOBAL__N_122BasicStoreSubRegionMapD1Ev", "(anonymous namespace)::BasicStoreSubRegionMap::~BasicStoreSubRegionMap()"}, + {"_ZN12_GLOBAL__N_122BasicStoreSubRegionMapD0Ev", "(anonymous namespace)::BasicStoreSubRegionMap::~BasicStoreSubRegionMap()"}, + {"_ZNK12_GLOBAL__N_122BasicStoreSubRegionMap14iterSubRegionsEPKN5clang4ento9MemRegionERNS2_12SubRegionMap7VisitorE", "(anonymous namespace)::BasicStoreSubRegionMap::iterSubRegions(clang::ento::MemRegion const*, clang::ento::SubRegionMap::Visitor&) const"}, + {"_ZN12_GLOBAL__N_117BasicStoreManager12scanForIvarsEPN5clang4StmtEPKNS1_4DeclEPKNS1_4ento9MemRegionEPKv", "(anonymous namespace)::BasicStoreManager::scanForIvars(clang::Stmt*, clang::Decl const*, clang::ento::MemRegion const*, void const*)"}, + {"_ZN5clang4ento12StoreManager11BindDefaultEPKvPKNS0_9MemRegionENS0_4SValE", "clang::ento::StoreManager::BindDefault(void const*, clang::ento::MemRegion const*, clang::ento::SVal)"}, + {"_ZN5clang4ento12StoreManager12getLValueVarEPKNS_7VarDeclEPKNS_15LocationContextE", "clang::ento::StoreManager::getLValueVar(clang::VarDecl const*, clang::LocationContext const*)"}, + {"_ZN5clang4ento12StoreManager15getLValueStringEPKNS_13StringLiteralE", "clang::ento::StoreManager::getLValueString(clang::StringLiteral const*)"}, + {"_ZN5clang4ento12StoreManager13getLValueIvarEPKNS_12ObjCIvarDeclENS0_4SValE", "clang::ento::StoreManager::getLValueIvar(clang::ObjCIvarDecl const*, clang::ento::SVal)"}, + {"_ZN5clang4ento12StoreManager14getLValueFieldEPKNS_9FieldDeclENS0_4SValE", "clang::ento::StoreManager::getLValueField(clang::FieldDecl const*, clang::ento::SVal)"}, + {"_ZN5clang4ento12StoreManager17getSizeInElementsEPKNS0_7GRStateEPKNS0_9MemRegionENS_8QualTypeE", "clang::ento::StoreManager::getSizeInElements(clang::ento::GRState const*, clang::ento::MemRegion const*, clang::QualType)"}, + {"_ZN5clang4ento12StoreManager17evalDerivedToBaseENS0_4SValENS_8QualTypeE", "clang::ento::StoreManager::evalDerivedToBase(clang::ento::SVal, clang::QualType)"}, + {"_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento9MemRegionENS3_4SValEEEE7destroyEv", "llvm::ImutAVLTree>::destroy()"}, + {"_ZNSt6vectorIPN4llvm11ImutAVLTreeINS0_16ImutKeyValueInfoIPKN5clang4ento9MemRegionENS4_4SValEEEEESaISB_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPSB_SD_EERKSB_", "std::vector>*, std::allocator>*>>::_M_insert_aux(__gnu_cxx::__normal_iterator>**, std::vector>*, std::allocator>*>>>, llvm::ImutAVLTree>* const&)"}, + {"_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento9MemRegionENS3_4SValEEEE13computeDigestEPS9_SA_RKSt4pairIS6_S7_E", "llvm::ImutAVLTree>::computeDigest(llvm::ImutAVLTree>*, llvm::ImutAVLTree>*, std::pair const&)"}, + {"_ZN4llvm8DenseMapIjPNS_11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento9MemRegionENS4_4SValEEEEENS_12DenseMapInfoIjEENSC_ISB_EEE16InsertIntoBucketERKjRKSB_PSt4pairIjSB_E", "llvm::DenseMap>*, llvm::DenseMapInfo, llvm::DenseMapInfo>*>>::InsertIntoBucket(unsigned int const&, llvm::ImutAVLTree>* const&, std::pair>*>*)"}, + {"_ZN4llvm8DenseMapIjPNS_11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento9MemRegionENS4_4SValEEEEENS_12DenseMapInfoIjEENSC_ISB_EEE4growEj", "llvm::DenseMap>*, llvm::DenseMapInfo, llvm::DenseMapInfo>*>>::grow(unsigned int)"}, + {"_ZN4llvm26ImutAVLTreeGenericIteratorINS_16ImutKeyValueInfoIPKN5clang4ento9MemRegionENS3_4SValEEEEppEv", "llvm::ImutAVLTreeGenericIterator>::operator++()"}, + {"_ZN5clang4ento12SubRegionMapD1Ev", "clang::ento::SubRegionMap::~SubRegionMap()"}, + {"_ZN5clang4ento12SubRegionMapD0Ev", "clang::ento::SubRegionMap::~SubRegionMap()"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento9MemRegionENS3_4SValEEEE6removeEPNS_11ImutAVLTreeIS8_EERKS6_", "llvm::ImutAVLFactory>::remove(llvm::ImutAVLTree>*, clang::ento::MemRegion const* const&)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento9MemRegionENS3_4SValEEEE16getCanonicalTreeEPNS_11ImutAVLTreeIS8_EE", "llvm::ImutAVLFactory>::getCanonicalTree(llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento9MemRegionENS3_4SValEEEE22compareTreeWithSectionEPNS_11ImutAVLTreeIS8_EERNS_26ImutAVLTreeInOrderIteratorIS8_EESF_", "llvm::ImutAVLFactory>::compareTreeWithSection(llvm::ImutAVLTree>*, llvm::ImutAVLTreeInOrderIterator>&, llvm::ImutAVLTreeInOrderIterator>&)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento9MemRegionENS3_4SValEEEE15remove_internalERKS6_PNS_11ImutAVLTreeIS8_EE", "llvm::ImutAVLFactory>::remove_internal(clang::ento::MemRegion const* const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento9MemRegionENS3_4SValEEEE13markImmutableEPNS_11ImutAVLTreeIS8_EE", "llvm::ImutAVLFactory>::markImmutable(llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento9MemRegionENS3_4SValEEEE11balanceTreeEPNS_11ImutAVLTreeIS8_EERKSt4pairIS6_S7_ESC_", "llvm::ImutAVLFactory>::balanceTree(llvm::ImutAVLTree>*, std::pair const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento9MemRegionENS3_4SValEEEE10createNodeEPNS_11ImutAVLTreeIS8_EERKSt4pairIS6_S7_ESC_", "llvm::ImutAVLFactory>::createNode(llvm::ImutAVLTree>*, std::pair const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento9MemRegionENS3_4SValEEEE16removeMinBindingEPNS_11ImutAVLTreeIS8_EERSC_", "llvm::ImutAVLFactory>::removeMinBinding(llvm::ImutAVLTree>*, llvm::ImutAVLTree>*&)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento9MemRegionENS3_4SValEEEE3addEPNS_11ImutAVLTreeIS8_EERKSt4pairIS6_S7_E", "llvm::ImutAVLFactory>::add(llvm::ImutAVLTree>*, std::pair const&)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento9MemRegionENS3_4SValEEEE12add_internalERKSt4pairIS6_S7_EPNS_11ImutAVLTreeIS8_EE", "llvm::ImutAVLFactory>::add_internal(std::pair const&, llvm::ImutAVLTree>*)"}, + {"_ZN5clang4ento12StoreManagerD1Ev", "clang::ento::StoreManager::~StoreManager()"}, + {"_ZN5clang4ento12StoreManagerD0Ev", "clang::ento::StoreManager::~StoreManager()"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento9MemRegionENS3_4SValEEEED2Ev", "llvm::ImutAVLFactory>::~ImutAVLFactory()"}, + {"_ZN5clang4ento15CompoundValData7ProfileERN4llvm16FoldingSetNodeIDENS_8QualTypeENS2_13ImmutableListINS0_4SValEEE", "clang::ento::CompoundValData::Profile(llvm::FoldingSetNodeID&, clang::QualType, llvm::ImmutableList)"}, + {"_ZN5clang4ento19LazyCompoundValData7ProfileERN4llvm16FoldingSetNodeIDEPKvPKNS0_11TypedRegionE", "clang::ento::LazyCompoundValData::Profile(llvm::FoldingSetNodeID&, void const*, clang::ento::TypedRegion const*)"}, + {"_ZN5clang4ento17BasicValueFactoryD1Ev", "clang::ento::BasicValueFactory::~BasicValueFactory()"}, + {"_ZN5clang4ento17BasicValueFactoryD2Ev", "clang::ento::BasicValueFactory::~BasicValueFactory()"}, + {"_ZN5clang4ento17BasicValueFactory8getValueERKN4llvm6APSIntE", "clang::ento::BasicValueFactory::getValue(llvm::APSInt const&)"}, + {"_ZN5clang4ento17BasicValueFactory8getValueERKN4llvm5APIntEb", "clang::ento::BasicValueFactory::getValue(llvm::APInt const&, bool)"}, + {"_ZN5clang4ento17BasicValueFactory8getValueEyjb", "clang::ento::BasicValueFactory::getValue(unsigned long long, unsigned int, bool)"}, + {"_ZN5clang4ento17BasicValueFactory8getValueEyNS_8QualTypeE", "clang::ento::BasicValueFactory::getValue(unsigned long long, clang::QualType)"}, + {"_ZN5clang4ento17BasicValueFactory18getCompoundValDataENS_8QualTypeEN4llvm13ImmutableListINS0_4SValEEE", "clang::ento::BasicValueFactory::getCompoundValData(clang::QualType, llvm::ImmutableList)"}, + {"_ZN5clang4ento17BasicValueFactory22getLazyCompoundValDataEPKvPKNS0_11TypedRegionE", "clang::ento::BasicValueFactory::getLazyCompoundValData(void const*, clang::ento::TypedRegion const*)"}, + {"_ZN5clang4ento17BasicValueFactory10evalAPSIntENS_18BinaryOperatorKindERKN4llvm6APSIntES6_", "clang::ento::BasicValueFactory::evalAPSInt(clang::BinaryOperatorKind, llvm::APSInt const&, llvm::APSInt const&)"}, + {"_ZN5clang4ento17BasicValueFactory25getPersistentSValWithDataERKNS0_4SValEm", "clang::ento::BasicValueFactory::getPersistentSValWithData(clang::ento::SVal const&, unsigned long)"}, + {"_ZN5clang4ento17BasicValueFactory21getPersistentSValPairERKNS0_4SValES4_", "clang::ento::BasicValueFactory::getPersistentSValPair(clang::ento::SVal const&, clang::ento::SVal const&)"}, + {"_ZN5clang4ento17BasicValueFactory17getPersistentSValENS0_4SValE", "clang::ento::BasicValueFactory::getPersistentSVal(clang::ento::SVal)"}, + {"_ZN4llvm10FoldingSetIN5clang4ento19LazyCompoundValDataEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang4ento15CompoundValDataEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetINS_21FoldingSetNodeWrapperINS_6APSIntEEEED1Ev", "llvm::FoldingSet>::~FoldingSet()"}, + {"_ZN4llvm21FoldingSetNodeWrapperISt4pairIN5clang4ento4SValES4_EED1Ev", "llvm::FoldingSetNodeWrapper>::~FoldingSetNodeWrapper()"}, + {"_ZN4llvm21FoldingSetNodeWrapperISt4pairIN5clang4ento4SValES4_EED0Ev", "llvm::FoldingSetNodeWrapper>::~FoldingSetNodeWrapper()"}, + {"_ZN4llvm10FoldingSetINS_21FoldingSetNodeWrapperISt4pairIN5clang4ento4SValES5_EEEED1Ev", "llvm::FoldingSet>>::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetINS_21FoldingSetNodeWrapperISt4pairIN5clang4ento4SValES5_EEEED0Ev", "llvm::FoldingSet>>::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetINS_21FoldingSetNodeWrapperISt4pairIN5clang4ento4SValES5_EEEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet>>::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetINS_21FoldingSetNodeWrapperISt4pairIN5clang4ento4SValES5_EEEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERSC_", "llvm::FoldingSet>>::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetINS_21FoldingSetNodeWrapperISt4pairIN5clang4ento4SValES5_EEEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet>>::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm21FoldingSetNodeWrapperISt4pairIN5clang4ento4SValEmEED1Ev", "llvm::FoldingSetNodeWrapper>::~FoldingSetNodeWrapper()"}, + {"_ZN4llvm21FoldingSetNodeWrapperISt4pairIN5clang4ento4SValEmEED0Ev", "llvm::FoldingSetNodeWrapper>::~FoldingSetNodeWrapper()"}, + {"_ZN4llvm10FoldingSetINS_21FoldingSetNodeWrapperISt4pairIN5clang4ento4SValEmEEEED1Ev", "llvm::FoldingSet>>::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetINS_21FoldingSetNodeWrapperISt4pairIN5clang4ento4SValEmEEEED0Ev", "llvm::FoldingSet>>::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetINS_21FoldingSetNodeWrapperISt4pairIN5clang4ento4SValEmEEEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet>>::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetINS_21FoldingSetNodeWrapperISt4pairIN5clang4ento4SValEmEEEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERSC_", "llvm::FoldingSet>>::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetINS_21FoldingSetNodeWrapperISt4pairIN5clang4ento4SValEmEEEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet>>::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm21FoldingSetNodeWrapperINS_6APSIntEED1Ev", "llvm::FoldingSetNodeWrapper::~FoldingSetNodeWrapper()"}, + {"_ZN4llvm21FoldingSetNodeWrapperINS_6APSIntEED0Ev", "llvm::FoldingSetNodeWrapper::~FoldingSetNodeWrapper()"}, + {"_ZN4llvm10FoldingSetINS_17ImmutableListImplIN5clang4ento4SValEEEED1Ev", "llvm::FoldingSet>::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetINS_17ImmutableListImplIN5clang4ento4SValEEEED0Ev", "llvm::FoldingSet>::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetINS_17ImmutableListImplIN5clang4ento4SValEEEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet>::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetINS_17ImmutableListImplIN5clang4ento4SValEEEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERSA_", "llvm::FoldingSet>::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetINS_17ImmutableListImplIN5clang4ento4SValEEEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet>::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm10FoldingSetINS_21FoldingSetNodeWrapperINS_6APSIntEEEED0Ev", "llvm::FoldingSet>::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetINS_21FoldingSetNodeWrapperINS_6APSIntEEEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet>::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetINS_21FoldingSetNodeWrapperINS_6APSIntEEEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS8_", "llvm::FoldingSet>::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetINS_21FoldingSetNodeWrapperINS_6APSIntEEEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet>::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm10FoldingSetIN5clang4ento15CompoundValDataEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang4ento15CompoundValDataEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang4ento15CompoundValDataEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS8_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang4ento15CompoundValDataEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm10FoldingSetIN5clang4ento19LazyCompoundValDataEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang4ento19LazyCompoundValDataEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang4ento19LazyCompoundValDataEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS8_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang4ento19LazyCompoundValDataEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK5clang4ento12BlockCounter13getNumVisitedEPKNS_17StackFrameContextEj", "clang::ento::BlockCounter::getNumVisited(clang::StackFrameContext const*, unsigned int) const"}, + {"_ZN5clang4ento12BlockCounter7FactoryC1ERN4llvm16BumpPtrAllocatorE", "clang::ento::BlockCounter::Factory::Factory(llvm::BumpPtrAllocator&)"}, + {"_ZN5clang4ento12BlockCounter7FactoryC2ERN4llvm16BumpPtrAllocatorE", "clang::ento::BlockCounter::Factory::Factory(llvm::BumpPtrAllocator&)"}, + {"_ZN5clang4ento12BlockCounter7FactoryD1Ev", "clang::ento::BlockCounter::Factory::~Factory()"}, + {"_ZN5clang4ento12BlockCounter7FactoryD2Ev", "clang::ento::BlockCounter::Factory::~Factory()"}, + {"_ZN5clang4ento12BlockCounter7Factory14IncrementCountES1_PKNS_17StackFrameContextEj", "clang::ento::BlockCounter::Factory::IncrementCount(clang::ento::BlockCounter, clang::StackFrameContext const*, unsigned int)"}, + {"_ZN5clang4ento12BlockCounter7Factory15GetEmptyCounterEv", "clang::ento::BlockCounter::Factory::GetEmptyCounter()"}, + {"_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIN12_GLOBAL__N_18CountKeyEjEEE13computeDigestEv", "llvm::ImutAVLTree>::computeDigest()"}, + {"_ZN4llvm8DenseMapIjPNS_11ImutAVLTreeINS_16ImutKeyValueInfoIN12_GLOBAL__N_18CountKeyEjEEEENS_12DenseMapInfoIjEENS8_IS7_EEEixERKj", "llvm::DenseMap>*, llvm::DenseMapInfo, llvm::DenseMapInfo>*>>::operator[](unsigned int const&)"}, + {"_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIN12_GLOBAL__N_18CountKeyEjEEE7destroyEv", "llvm::ImutAVLTree>::destroy()"}, + {"_ZNSt6vectorIPN4llvm11ImutAVLTreeINS0_16ImutKeyValueInfoIN12_GLOBAL__N_18CountKeyEjEEEESaIS7_EE9push_backERKS7_", "std::vector>*, std::allocator>*>>::push_back(llvm::ImutAVLTree>* const&)"}, + {"_ZN4llvm26ImutAVLTreeInOrderIteratorINS_16ImutKeyValueInfoIN12_GLOBAL__N_18CountKeyEjEEEppEv", "llvm::ImutAVLTreeInOrderIterator>::operator++()"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIN12_GLOBAL__N_18CountKeyEjEEE12add_internalERKSt4pairIS3_jEPNS_11ImutAVLTreeIS4_EE", "llvm::ImutAVLFactory>::add_internal(std::pair<(anonymous namespace)::CountKey, unsigned int> const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIN12_GLOBAL__N_18CountKeyEjEEE13markImmutableEPNS_11ImutAVLTreeIS4_EE", "llvm::ImutAVLFactory>::markImmutable(llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIN12_GLOBAL__N_18CountKeyEjEEE10createNodeEPNS_11ImutAVLTreeIS4_EERKSt4pairIS3_jES8_", "llvm::ImutAVLFactory>::createNode(llvm::ImutAVLTree>*, std::pair<(anonymous namespace)::CountKey, unsigned int> const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIN12_GLOBAL__N_18CountKeyEjEEE11balanceTreeEPNS_11ImutAVLTreeIS4_EERKSt4pairIS3_jES8_", "llvm::ImutAVLFactory>::balanceTree(llvm::ImutAVLTree>*, std::pair<(anonymous namespace)::CountKey, unsigned int> const&, llvm::ImutAVLTree>*)"}, + {"_ZN5clang4ento18BugReporterVisitorD0Ev", "clang::ento::BugReporterVisitor::~BugReporterVisitor()"}, + {"_ZN5clang4ento18BugReporterVisitorD1Ev", "clang::ento::BugReporterVisitor::~BugReporterVisitor()"}, + {"_ZN5clang4ento18BugReporterVisitorD2Ev", "clang::ento::BugReporterVisitor::~BugReporterVisitor()"}, + {"_ZN5clang4ento18BugReporterContextD0Ev", "clang::ento::BugReporterContext::~BugReporterContext()"}, + {"_ZN5clang4ento18BugReporterContextD1Ev", "clang::ento::BugReporterContext::~BugReporterContext()"}, + {"_ZN5clang4ento18BugReporterContextD2Ev", "clang::ento::BugReporterContext::~BugReporterContext()"}, + {"_ZN5clang4ento18BugReporterContext10addVisitorEPNS0_18BugReporterVisitorE", "clang::ento::BugReporterContext::addVisitor(clang::ento::BugReporterVisitor*)"}, + {"_ZN5clang4ento7BugTypeD0Ev", "clang::ento::BugType::~BugType()"}, + {"_ZN5clang4ento7BugTypeD1Ev", "clang::ento::BugType::~BugType()"}, + {"_ZN5clang4ento7BugTypeD2Ev", "clang::ento::BugType::~BugType()"}, + {"_ZN5clang4ento19BugReportEquivClassD1Ev", "clang::ento::BugReportEquivClass::~BugReportEquivClass()"}, + {"_ZN5clang4ento7BugType12FlushReportsERNS0_11BugReporterE", "clang::ento::BugType::FlushReports(clang::ento::BugReporter&)"}, + {"_ZN5clang4ento9BugReportD0Ev", "clang::ento::BugReport::~BugReport()"}, + {"_ZN5clang4ento9BugReportD1Ev", "clang::ento::BugReport::~BugReport()"}, + {"_ZN5clang4ento9BugReportD2Ev", "clang::ento::BugReport::~BugReport()"}, + {"_ZN5clang4ento15RangedBugReportD0Ev", "clang::ento::RangedBugReport::~RangedBugReport()"}, + {"_ZN5clang4ento15RangedBugReportD1Ev", "clang::ento::RangedBugReport::~RangedBugReport()"}, + {"_ZN5clang4ento15RangedBugReportD2Ev", "clang::ento::RangedBugReport::~RangedBugReport()"}, + {"_ZNK5clang4ento9BugReport7getStmtEv", "clang::ento::BugReport::getStmt() const"}, + {"_ZN5clang4ento9BugReport10getEndPathERNS0_18BugReporterContextEPKNS0_12ExplodedNodeE", "clang::ento::BugReport::getEndPath(clang::ento::BugReporterContext&, clang::ento::ExplodedNode const*)"}, + {"_ZNK5clang4ento9BugReport9getRangesEv", "clang::ento::BugReport::getRanges() const"}, + {"_ZNK5clang4ento9BugReport11getLocationEv", "clang::ento::BugReport::getLocation() const"}, + {"_ZN5clang4ento9BugReport9VisitNodeEPKNS0_12ExplodedNodeES4_RNS0_18BugReporterContextE", "clang::ento::BugReport::VisitNode(clang::ento::ExplodedNode const*, clang::ento::ExplodedNode const*, clang::ento::BugReporterContext&)"}, + {"_ZN5clang4ento19BugReportEquivClassD2Ev", "clang::ento::BugReportEquivClass::~BugReportEquivClass()"}, + {"_ZN5clang4ento13GRBugReporterD0Ev", "clang::ento::GRBugReporter::~GRBugReporter()"}, + {"_ZN5clang4ento13GRBugReporterD1Ev", "clang::ento::GRBugReporter::~GRBugReporter()"}, + {"_ZN5clang4ento13GRBugReporterD2Ev", "clang::ento::GRBugReporter::~GRBugReporter()"}, + {"_ZN5clang4ento11BugReporterD2Ev", "clang::ento::BugReporter::~BugReporter()"}, + {"_ZN5clang4ento15BugReporterDataD0Ev", "clang::ento::BugReporterData::~BugReporterData()"}, + {"_ZN5clang4ento15BugReporterDataD1Ev", "clang::ento::BugReporterData::~BugReporterData()"}, + {"_ZN5clang4ento15BugReporterDataD2Ev", "clang::ento::BugReporterData::~BugReporterData()"}, + {"_ZN5clang4ento13GRBugReporter8getGraphEv", "clang::ento::GRBugReporter::getGraph()"}, + {"_ZN5clang4ento13GRBugReporter15getStateManagerEv", "clang::ento::GRBugReporter::getStateManager()"}, + {"_ZN5clang4ento11BugReporterD0Ev", "clang::ento::BugReporter::~BugReporter()"}, + {"_ZN5clang4ento11BugReporterD1Ev", "clang::ento::BugReporter::~BugReporter()"}, + {"_ZN5clang4ento11BugReporter12FlushReportsEv", "clang::ento::BugReporter::FlushReports()"}, + {"_ZN5clang4ento11BugReporter11FlushReportERNS0_19BugReportEquivClassE", "clang::ento::BugReporter::FlushReport(clang::ento::BugReportEquivClass&)"}, + {"_ZN5clang4ento13GRBugReporter22GeneratePathDiagnosticERNS0_14PathDiagnosticERN4llvm15SmallVectorImplIPNS0_9BugReportEEE", "clang::ento::GRBugReporter::GeneratePathDiagnostic(clang::ento::PathDiagnostic&, llvm::SmallVectorImpl&)"}, + {"_ZN12_GLOBAL__N_121PathDiagnosticBuilderD1Ev", "(anonymous namespace)::PathDiagnosticBuilder::~PathDiagnosticBuilder()"}, + {"_ZN5clang4ento11BugReporter8RegisterEPNS0_7BugTypeE", "clang::ento::BugReporter::Register(clang::ento::BugType*)"}, + {"_ZN5clang4ento11BugReporter10EmitReportEPNS0_9BugReportE", "clang::ento::BugReporter::EmitReport(clang::ento::BugReport*)"}, + {"_ZN5clang4ento11BugReporter15EmitBasicReportEN4llvm9StringRefES3_NS_14SourceLocationEPNS_11SourceRangeEj", "clang::ento::BugReporter::EmitBasicReport(llvm::StringRef, llvm::StringRef, clang::SourceLocation, clang::SourceRange*, unsigned int)"}, + {"_ZN5clang4ento11BugReporter15EmitBasicReportEN4llvm9StringRefES3_S3_NS_14SourceLocationEPNS_11SourceRangeEj", "clang::ento::BugReporter::EmitBasicReport(llvm::StringRef, llvm::StringRef, llvm::StringRef, clang::SourceLocation, clang::SourceRange*, unsigned int)"}, + {"_ZN4llvm10FoldingSetIN12_GLOBAL__N_113DiagCacheItemEED1Ev", "llvm::FoldingSet<(anonymous namespace)::DiagCacheItem>::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN12_GLOBAL__N_113DiagCacheItemEED0Ev", "llvm::FoldingSet<(anonymous namespace)::DiagCacheItem>::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN12_GLOBAL__N_113DiagCacheItemEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet<(anonymous namespace)::DiagCacheItem>::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN12_GLOBAL__N_113DiagCacheItemEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet<(anonymous namespace)::DiagCacheItem>::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN12_GLOBAL__N_113DiagCacheItemEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet<(anonymous namespace)::DiagCacheItem>::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm15SmallVectorImplIN12_GLOBAL__N_112FRIEC_WLItemEE9push_backERKS2_", "llvm::SmallVectorImpl<(anonymous namespace)::FRIEC_WLItem>::push_back((anonymous namespace)::FRIEC_WLItem const&)"}, + {"_ZN12_GLOBAL__N_114NodeMapClosureD1Ev", "(anonymous namespace)::NodeMapClosure::~NodeMapClosure()"}, + {"_ZN12_GLOBAL__N_121PathDiagnosticBuilderD0Ev", "(anonymous namespace)::PathDiagnosticBuilder::~PathDiagnosticBuilder()"}, + {"_ZN12_GLOBAL__N_121PathDiagnosticBuilder15getNodeResolverEv", "(anonymous namespace)::PathDiagnosticBuilder::getNodeResolver()"}, + {"_ZN12_GLOBAL__N_114NodeMapClosureD0Ev", "(anonymous namespace)::NodeMapClosure::~NodeMapClosure()"}, + {"_ZN12_GLOBAL__N_114NodeMapClosure15getOriginalNodeEPKN5clang4ento12ExplodedNodeE", "(anonymous namespace)::NodeMapClosure::getOriginalNode(clang::ento::ExplodedNode const*)"}, + {"_Z11GetNextStmtPKN5clang4ento12ExplodedNodeE", "GetNextStmt(clang::ento::ExplodedNode const*)"}, + {"_ZN12_GLOBAL__N_121PathDiagnosticBuilder24getEnclosingStmtLocationEPKN5clang4StmtE", "(anonymous namespace)::PathDiagnosticBuilder::getEnclosingStmtLocation(clang::Stmt const*)"}, + {"_ZN12_GLOBAL__N_121PathDiagnosticBuilder18ExecutionContinuesERN4llvm18raw_string_ostreamEPKN5clang4ento12ExplodedNodeE", "(anonymous namespace)::PathDiagnosticBuilder::ExecutionContinues(llvm::raw_string_ostream&, clang::ento::ExplodedNode const*)"}, + {"_ZN12_GLOBAL__N_118ScanNotableSymbolsD1Ev", "(anonymous namespace)::ScanNotableSymbols::~ScanNotableSymbols()"}, + {"_ZN12_GLOBAL__N_118ScanNotableSymbolsD0Ev", "(anonymous namespace)::ScanNotableSymbols::~ScanNotableSymbols()"}, + {"_ZN12_GLOBAL__N_118ScanNotableSymbols13HandleBindingERN5clang4ento12StoreManagerEPKvPKNS2_9MemRegionENS2_4SValE", "(anonymous namespace)::ScanNotableSymbols::HandleBinding(clang::ento::StoreManager&, void const*, clang::ento::MemRegion const*, clang::ento::SVal)"}, + {"_ZN12_GLOBAL__N_120NotableSymbolHandlerD1Ev", "(anonymous namespace)::NotableSymbolHandler::~NotableSymbolHandler()"}, + {"_ZN12_GLOBAL__N_120NotableSymbolHandlerD0Ev", "(anonymous namespace)::NotableSymbolHandler::~NotableSymbolHandler()"}, + {"_ZN12_GLOBAL__N_120NotableSymbolHandler13HandleBindingERN5clang4ento12StoreManagerEPKvPKNS2_9MemRegionENS2_4SValE", "(anonymous namespace)::NotableSymbolHandler::HandleBinding(clang::ento::StoreManager&, void const*, clang::ento::MemRegion const*, clang::ento::SVal)"}, + {"_ZN12_GLOBAL__N_111EdgeBuilder7addEdgeEN5clang4ento22PathDiagnosticLocationEb", "(anonymous namespace)::EdgeBuilder::addEdge(clang::ento::PathDiagnosticLocation, bool)"}, + {"_ZN12_GLOBAL__N_111EdgeBuilder10addContextEPKN5clang4StmtE", "(anonymous namespace)::EdgeBuilder::addContext(clang::Stmt const*)"}, + {"_ZN12_GLOBAL__N_111EdgeBuilder18addExtendedContextEPKN5clang4StmtE", "(anonymous namespace)::EdgeBuilder::addExtendedContext(clang::Stmt const*)"}, + {"_ZN12_GLOBAL__N_111EdgeBuilder10rawAddEdgeEN5clang4ento22PathDiagnosticLocationE", "(anonymous namespace)::EdgeBuilder::rawAddEdge(clang::ento::PathDiagnosticLocation)"}, + {"_ZN12_GLOBAL__N_111EdgeBuilder15cleanUpLocationEN5clang4ento22PathDiagnosticLocationEb", "(anonymous namespace)::EdgeBuilder::cleanUpLocation(clang::ento::PathDiagnosticLocation, bool)"}, + {"_ZN12_GLOBAL__N_111EdgeBuilder16containsLocationERKN5clang4ento22PathDiagnosticLocationES5_", "(anonymous namespace)::EdgeBuilder::containsLocation(clang::ento::PathDiagnosticLocation const&, clang::ento::PathDiagnosticLocation const&)"}, + {"_ZNSt6vectorIN12_GLOBAL__N_115ContextLocationESaIS1_EE9push_backERKS1_", "std::vector<(anonymous namespace)::ContextLocation, std::allocator<(anonymous namespace)::ContextLocation>>::push_back((anonymous namespace)::ContextLocation const&)"}, + {"_ZN4llvm10FoldingSetIN5clang4ento18BugReporterVisitorEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN5clang4ento14PathDiagnostic7addMetaEN4llvm9StringRefE", "clang::ento::PathDiagnostic::addMeta(llvm::StringRef)"}, + {"_ZN4llvm14ImutAVLFactoryINS_17ImutContainerInfoIPN5clang4ento7BugTypeEEEE3addEPNS_11ImutAVLTreeIS6_EEPKS4_", "llvm::ImutAVLFactory>::add(llvm::ImutAVLTree>*, clang::ento::BugType const*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_17ImutContainerInfoIPN5clang4ento7BugTypeEEEE16getCanonicalTreeEPNS_11ImutAVLTreeIS6_EE", "llvm::ImutAVLFactory>::getCanonicalTree(llvm::ImutAVLTree>*)"}, + {"_ZN4llvm11ImutAVLTreeINS_17ImutContainerInfoIPN5clang4ento7BugTypeEEEE13computeDigestEv", "llvm::ImutAVLTree>::computeDigest()"}, + {"_ZN4llvm14ImutAVLFactoryINS_17ImutContainerInfoIPN5clang4ento7BugTypeEEEE22compareTreeWithSectionEPNS_11ImutAVLTreeIS6_EERNS_26ImutAVLTreeInOrderIteratorIS6_EESD_", "llvm::ImutAVLFactory>::compareTreeWithSection(llvm::ImutAVLTree>*, llvm::ImutAVLTreeInOrderIterator>&, llvm::ImutAVLTreeInOrderIterator>&)"}, + {"_ZN4llvm11ImutAVLTreeINS_17ImutContainerInfoIPN5clang4ento7BugTypeEEEE7destroyEv", "llvm::ImutAVLTree>::destroy()"}, + {"_ZNSt6vectorIPN4llvm11ImutAVLTreeINS0_17ImutContainerInfoIPN5clang4ento7BugTypeEEEEESaIS9_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS9_SB_EERKS9_", "std::vector>*, std::allocator>*>>::_M_insert_aux(__gnu_cxx::__normal_iterator>**, std::vector>*, std::allocator>*>>>, llvm::ImutAVLTree>* const&)"}, + {"_ZN4llvm26ImutAVLTreeGenericIteratorINS_17ImutContainerInfoIPN5clang4ento7BugTypeEEEEppEv", "llvm::ImutAVLTreeGenericIterator>::operator++()"}, + {"_ZN4llvm8DenseMapIjPNS_11ImutAVLTreeINS_17ImutContainerInfoIPN5clang4ento7BugTypeEEEEENS_12DenseMapInfoIjEENSA_IS9_EEE16InsertIntoBucketERKjRKS9_PSt4pairIjS9_E", "llvm::DenseMap>*, llvm::DenseMapInfo, llvm::DenseMapInfo>*>>::InsertIntoBucket(unsigned int const&, llvm::ImutAVLTree>* const&, std::pair>*>*)"}, + {"_ZN4llvm8DenseMapIjPNS_11ImutAVLTreeINS_17ImutContainerInfoIPN5clang4ento7BugTypeEEEEENS_12DenseMapInfoIjEENSA_IS9_EEE4growEj", "llvm::DenseMap>*, llvm::DenseMapInfo, llvm::DenseMapInfo>*>>::grow(unsigned int)"}, + {"_ZN4llvm14ImutAVLFactoryINS_17ImutContainerInfoIPN5clang4ento7BugTypeEEEE12add_internalEPKS4_PNS_11ImutAVLTreeIS6_EE", "llvm::ImutAVLFactory>::add_internal(clang::ento::BugType const*, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_17ImutContainerInfoIPN5clang4ento7BugTypeEEEE13markImmutableEPNS_11ImutAVLTreeIS6_EE", "llvm::ImutAVLFactory>::markImmutable(llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_17ImutContainerInfoIPN5clang4ento7BugTypeEEEE10createNodeEPNS_11ImutAVLTreeIS6_EEPKS4_SA_", "llvm::ImutAVLFactory>::createNode(llvm::ImutAVLTree>*, clang::ento::BugType const*, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_17ImutContainerInfoIPN5clang4ento7BugTypeEEEE11balanceTreeEPNS_11ImutAVLTreeIS6_EEPKS4_SA_", "llvm::ImutAVLFactory>::balanceTree(llvm::ImutAVLTree>*, clang::ento::BugType const*, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm20ImmutableListFactoryIPN5clang4ento18BugReporterVisitorEE6concatERKS4_NS_13ImmutableListIS4_EE", "llvm::ImmutableListFactory::concat(clang::ento::BugReporterVisitor* const&, llvm::ImmutableList)"}, + {"_ZN4llvm10FoldingSetINS_17ImmutableListImplIPN5clang4ento18BugReporterVisitorEEEED1Ev", "llvm::FoldingSet>::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetINS_17ImmutableListImplIPN5clang4ento18BugReporterVisitorEEEED0Ev", "llvm::FoldingSet>::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetINS_17ImmutableListImplIPN5clang4ento18BugReporterVisitorEEEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet>::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetINS_17ImmutableListImplIPN5clang4ento18BugReporterVisitorEEEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERSB_", "llvm::FoldingSet>::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetINS_17ImmutableListImplIPN5clang4ento18BugReporterVisitorEEEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet>::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang11SourceRangeELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN5clang4ento13DiagBugReportD1Ev", "clang::ento::DiagBugReport::~DiagBugReport()"}, + {"_ZN5clang4ento13DiagBugReportD0Ev", "clang::ento::DiagBugReport::~DiagBugReport()"}, + {"_ZNK5clang4ento13DiagBugReport11getLocationEv", "clang::ento::DiagBugReport::getLocation() const"}, + {"_ZNSt5dequeISsSaISsEE16_M_push_back_auxERKSs", "std::deque>::_M_push_back_aux(std::string const&)"}, + {"_ZNSt5dequeISsSaISsEE17_M_reallocate_mapEmb", "std::deque>::_M_reallocate_map(unsigned long, bool)"}, + {"_ZN4llvm8DenseMapIPKN5clang4ento12ExplodedNodeEjNS_12DenseMapInfoIS5_EENS6_IjEEE16InsertIntoBucketERKS5_RKjPSt4pairIS5_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::ento::ExplodedNode const* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang4ento12ExplodedNodeEjNS_12DenseMapInfoIS5_EENS6_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang4ento9BugReport12NodeResolverD1Ev", "clang::ento::BugReport::NodeResolver::~NodeResolver()"}, + {"_ZN5clang4ento9BugReport12NodeResolverD0Ev", "clang::ento::BugReport::NodeResolver::~NodeResolver()"}, + {"_ZN5clang4ento14PathDiagnostic10push_frontEPNS0_19PathDiagnosticPieceE", "clang::ento::PathDiagnostic::push_front(clang::ento::PathDiagnosticPiece*)"}, + {"_ZNSt6vectorISt4pairIPN5clang4ento24PathDiagnosticMacroPieceENS1_14SourceLocationEESaIS6_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS6_S8_EERKS6_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + {"_ZN5clang4ento24PathDiagnosticMacroPieceC2ERKNS0_22PathDiagnosticLocationE", "clang::ento::PathDiagnosticMacroPiece::PathDiagnosticMacroPiece(clang::ento::PathDiagnosticLocation const&)"}, + {"_ZNK5clang4ento23PathDiagnosticSpotPiece11getLocationEv", "clang::ento::PathDiagnosticSpotPiece::getLocation() const"}, + {"_ZN5clang4ento24PathDiagnosticMacroPiece16flattenLocationsEv", "clang::ento::PathDiagnosticMacroPiece::flattenLocations()"}, + {"_ZN5clang4ento23PathDiagnosticSpotPiece16flattenLocationsEv", "clang::ento::PathDiagnosticSpotPiece::flattenLocations()"}, + {"_ZN5clang4ento23PathDiagnosticSpotPieceD1Ev", "clang::ento::PathDiagnosticSpotPiece::~PathDiagnosticSpotPiece()"}, + {"_ZN5clang4ento23PathDiagnosticSpotPieceD0Ev", "clang::ento::PathDiagnosticSpotPiece::~PathDiagnosticSpotPiece()"}, + {"_ZNSt6vectorIPN5clang4ento19PathDiagnosticPieceESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, clang::ento::PathDiagnosticPiece* const&)"}, + {"_ZNK5clang4ento30PathDiagnosticControlFlowPiece11getLocationEv", "clang::ento::PathDiagnosticControlFlowPiece::getLocation() const"}, + {"_ZN5clang4ento30PathDiagnosticControlFlowPiece16flattenLocationsEv", "clang::ento::PathDiagnosticControlFlowPiece::flattenLocations()"}, + {"_ZNSt6vectorIN5clang4ento26PathDiagnosticLocationPairESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, clang::ento::PathDiagnosticLocationPair const&)"}, + {"_ZNSt5dequeIPN5clang4ento19PathDiagnosticPieceESaIS3_EE17_M_reallocate_mapEmb", "std::deque>::_M_reallocate_map(unsigned long, bool)"}, + {"_ZNSt5dequeIPN5clang4ento19PathDiagnosticPieceESaIS3_EE9push_backERKS3_", "std::deque>::push_back(clang::ento::PathDiagnosticPiece* const&)"}, + {"_ZN4llvm10FoldingSetIN5clang4ento18BugReporterVisitorEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang4ento18BugReporterVisitorEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang4ento18BugReporterVisitorEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS8_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang4ento18BugReporterVisitorEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm8DenseMapIPKN5clang4ento12ExplodedNodeES5_NS_12DenseMapInfoIS5_EES7_E16InsertIntoBucketERKS5_SA_PSt4pairIS5_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::ento::ExplodedNode const* const&, clang::ento::ExplodedNode const* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang4ento12ExplodedNodeES5_NS_12DenseMapInfoIS5_EES7_E4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKvjNS_12DenseMapInfoIS2_EENS3_IjEEE16InsertIntoBucketERKS2_RKjPSt4pairIS2_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(void const* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKvjNS_12DenseMapInfoIS2_EENS3_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNSt5dequeIPKN5clang4ento12ExplodedNodeESaIS4_EE9push_backERKS4_", "std::deque>::push_back(clang::ento::ExplodedNode const* const&)"}, + {"_ZNSt5dequeIPKN5clang4ento12ExplodedNodeESaIS4_EE17_M_reallocate_mapEmb", "std::deque>::_M_reallocate_map(unsigned long, bool)"}, + {"_ZNSt11_Deque_baseIPKN5clang4ento12ExplodedNodeESaIS4_EE17_M_initialize_mapEm", "std::_Deque_base>::_M_initialize_map(unsigned long)"}, + {"_ZNSt5dequeIPKN5clang4ento12ExplodedNodeESaIS4_EEC2ERKS6_", "std::deque>::deque(std::deque> const&)"}, + {"_ZN4llvm14ImutAVLFactoryINS_17ImutContainerInfoIPN5clang4ento7BugTypeEEEED2Ev", "llvm::ImutAVLFactory>::~ImutAVLFactory()"}, + {"_ZNSt6vectorIN5clang11SourceRangeESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, clang::SourceRange const&)"}, + {"_ZN5clang4ento11bugreporter12GetDerefExprEPKNS0_12ExplodedNodeE", "clang::ento::bugreporter::GetDerefExpr(clang::ento::ExplodedNode const*)"}, + {"_ZN5clang4ento11bugreporter12GetDenomExprEPKNS0_12ExplodedNodeE", "clang::ento::bugreporter::GetDenomExpr(clang::ento::ExplodedNode const*)"}, + {"_ZN5clang4ento11bugreporter13GetCalleeExprEPKNS0_12ExplodedNodeE", "clang::ento::bugreporter::GetCalleeExpr(clang::ento::ExplodedNode const*)"}, + {"_ZN5clang4ento11bugreporter13GetRetValExprEPKNS0_12ExplodedNodeE", "clang::ento::bugreporter::GetRetValExpr(clang::ento::ExplodedNode const*)"}, + {"_ZN5clang4ento11bugreporter29registerTrackNullOrUndefValueERNS0_18BugReporterContextEPKvPKNS0_12ExplodedNodeE", "clang::ento::bugreporter::registerTrackNullOrUndefValue(clang::ento::BugReporterContext&, void const*, clang::ento::ExplodedNode const*)"}, + {"_ZN5clang4ento11bugreporter21registerFindLastStoreERNS0_18BugReporterContextEPKvPKNS0_12ExplodedNodeE", "clang::ento::bugreporter::registerFindLastStore(clang::ento::BugReporterContext&, void const*, clang::ento::ExplodedNode const*)"}, + {"_ZN5clang4ento11bugreporter26registerNilReceiverVisitorERNS0_18BugReporterContextE", "clang::ento::bugreporter::registerNilReceiverVisitor(clang::ento::BugReporterContext&)"}, + {"_ZN5clang4ento11bugreporter25registerVarDeclsLastStoreERNS0_18BugReporterContextEPKvPKNS0_12ExplodedNodeE", "clang::ento::bugreporter::registerVarDeclsLastStore(clang::ento::BugReporterContext&, void const*, clang::ento::ExplodedNode const*)"}, + {"_ZN12_GLOBAL__N_118NilReceiverVisitorD1Ev", "(anonymous namespace)::NilReceiverVisitor::~NilReceiverVisitor()"}, + {"_ZN12_GLOBAL__N_118NilReceiverVisitorD0Ev", "(anonymous namespace)::NilReceiverVisitor::~NilReceiverVisitor()"}, + {"_ZN12_GLOBAL__N_118NilReceiverVisitor9VisitNodeEPKN5clang4ento12ExplodedNodeES5_RNS2_18BugReporterContextE", "(anonymous namespace)::NilReceiverVisitor::VisitNode(clang::ento::ExplodedNode const*, clang::ento::ExplodedNode const*, clang::ento::BugReporterContext&)"}, + {"_ZNK12_GLOBAL__N_118NilReceiverVisitor7ProfileERN4llvm16FoldingSetNodeIDE", "(anonymous namespace)::NilReceiverVisitor::Profile(llvm::FoldingSetNodeID&) const"}, + {"_ZN12_GLOBAL__N_122FindLastStoreBRVisitorD1Ev", "(anonymous namespace)::FindLastStoreBRVisitor::~FindLastStoreBRVisitor()"}, + {"_ZN12_GLOBAL__N_122FindLastStoreBRVisitorD0Ev", "(anonymous namespace)::FindLastStoreBRVisitor::~FindLastStoreBRVisitor()"}, + {"_ZN12_GLOBAL__N_122FindLastStoreBRVisitor9VisitNodeEPKN5clang4ento12ExplodedNodeES5_RNS2_18BugReporterContextE", "(anonymous namespace)::FindLastStoreBRVisitor::VisitNode(clang::ento::ExplodedNode const*, clang::ento::ExplodedNode const*, clang::ento::BugReporterContext&)"}, + {"_ZNK12_GLOBAL__N_122FindLastStoreBRVisitor7ProfileERN4llvm16FoldingSetNodeIDE", "(anonymous namespace)::FindLastStoreBRVisitor::Profile(llvm::FoldingSetNodeID&) const"}, + {"_ZN12_GLOBAL__N_124TrackConstraintBRVisitorD1Ev", "(anonymous namespace)::TrackConstraintBRVisitor::~TrackConstraintBRVisitor()"}, + {"_ZN12_GLOBAL__N_124TrackConstraintBRVisitorD0Ev", "(anonymous namespace)::TrackConstraintBRVisitor::~TrackConstraintBRVisitor()"}, + {"_ZN12_GLOBAL__N_124TrackConstraintBRVisitor9VisitNodeEPKN5clang4ento12ExplodedNodeES5_RNS2_18BugReporterContextE", "(anonymous namespace)::TrackConstraintBRVisitor::VisitNode(clang::ento::ExplodedNode const*, clang::ento::ExplodedNode const*, clang::ento::BugReporterContext&)"}, + {"_ZNK12_GLOBAL__N_124TrackConstraintBRVisitor7ProfileERN4llvm16FoldingSetNodeIDE", "(anonymous namespace)::TrackConstraintBRVisitor::Profile(llvm::FoldingSetNodeID&) const"}, + {"_ZNSt5dequeIPKN5clang4StmtESaIS3_EE9push_backERKS3_", "std::deque>::push_back(clang::Stmt const* const&)"}, + {"_ZNSt5dequeIPKN5clang4StmtESaIS3_EE17_M_reallocate_mapEmb", "std::deque>::_M_reallocate_map(unsigned long, bool)"}, + {"_ZNSt11_Deque_baseIPKN5clang4StmtESaIS3_EE17_M_initialize_mapEm", "std::_Deque_base>::_M_initialize_map(unsigned long)"}, + {"_ZN5clang4ento16MakeCFRefCountTFERNS_10ASTContextEbRKNS_11LangOptionsE", "clang::ento::MakeCFRefCountTF(clang::ASTContext&, bool, clang::LangOptions const&)"}, + {"_ZN12_GLOBAL__N_110CFRefCountD1Ev", "(anonymous namespace)::CFRefCount::~CFRefCount()"}, + {"_ZN12_GLOBAL__N_110CFRefCountD0Ev", "(anonymous namespace)::CFRefCount::~CFRefCount()"}, + {"_ZN12_GLOBAL__N_110CFRefCount16RegisterPrintersERSt6vectorIPN5clang4ento7GRState7PrinterESaIS6_EE", "(anonymous namespace)::CFRefCount::RegisterPrinters(std::vector>&)"}, + {"_ZN12_GLOBAL__N_110CFRefCount14RegisterChecksERN5clang4ento10ExprEngineE", "(anonymous namespace)::CFRefCount::RegisterChecks(clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_110CFRefCount8evalCallERN5clang4ento15ExplodedNodeSetERNS2_10ExprEngineERNS2_15StmtNodeBuilderEPKNS1_8CallExprENS2_4SValEPNS2_12ExplodedNodeE", "(anonymous namespace)::CFRefCount::evalCall(clang::ento::ExplodedNodeSet&, clang::ento::ExprEngine&, clang::ento::StmtNodeBuilder&, clang::CallExpr const*, clang::ento::SVal, clang::ento::ExplodedNode*)"}, + {"_ZN12_GLOBAL__N_110CFRefCount15evalObjCMessageERN5clang4ento15ExplodedNodeSetERNS2_10ExprEngineERNS2_15StmtNodeBuilderENS2_11ObjCMessageEPNS2_12ExplodedNodeEPKNS2_7GRStateE", "(anonymous namespace)::CFRefCount::evalObjCMessage(clang::ento::ExplodedNodeSet&, clang::ento::ExprEngine&, clang::ento::StmtNodeBuilder&, clang::ento::ObjCMessage, clang::ento::ExplodedNode*, clang::ento::GRState const*)"}, + {"_ZN12_GLOBAL__N_110CFRefCount8evalBindERN5clang4ento18StmtNodeBuilderRefENS2_4SValES5_", "(anonymous namespace)::CFRefCount::evalBind(clang::ento::StmtNodeBuilderRef&, clang::ento::SVal, clang::ento::SVal)"}, + {"_ZN12_GLOBAL__N_110CFRefCount11evalEndPathERN5clang4ento10ExprEngineERNS2_24EndOfFunctionNodeBuilderE", "(anonymous namespace)::CFRefCount::evalEndPath(clang::ento::ExprEngine&, clang::ento::EndOfFunctionNodeBuilder&)"}, + {"_ZN12_GLOBAL__N_110CFRefCount15evalDeadSymbolsERN5clang4ento15ExplodedNodeSetERNS2_10ExprEngineERNS2_15StmtNodeBuilderEPNS2_12ExplodedNodeEPKNS2_7GRStateERNS2_12SymbolReaperE", "(anonymous namespace)::CFRefCount::evalDeadSymbols(clang::ento::ExplodedNodeSet&, clang::ento::ExprEngine&, clang::ento::StmtNodeBuilder&, clang::ento::ExplodedNode*, clang::ento::GRState const*, clang::ento::SymbolReaper&)"}, + {"_ZN12_GLOBAL__N_110CFRefCount10evalReturnERN5clang4ento15ExplodedNodeSetERNS2_10ExprEngineERNS2_15StmtNodeBuilderEPKNS1_10ReturnStmtEPNS2_12ExplodedNodeE", "(anonymous namespace)::CFRefCount::evalReturn(clang::ento::ExplodedNodeSet&, clang::ento::ExprEngine&, clang::ento::StmtNodeBuilder&, clang::ReturnStmt const*, clang::ento::ExplodedNode*)"}, + {"_ZN12_GLOBAL__N_110CFRefCount10evalAssumeEPKN5clang4ento7GRStateENS2_4SValEb", "(anonymous namespace)::CFRefCount::evalAssume(clang::ento::GRState const*, clang::ento::SVal, bool)"}, + {"_ZN4llvm12ImmutableMapIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_16RefValENS_16ImutKeyValueInfoIS5_S7_EEE7Factory6removeESA_RKS5_", "llvm::ImmutableMap>::Factory::remove(llvm::ImmutableMap>, clang::ento::SymbolData const* const&)"}, + + // {"_ZNK5clang4ento7GRState3setIN4llvm12ImmutableMapIPKNS0_10SymbolDataEN12_GLOBAL__N_16RefValENS3_16ImutKeyValueInfoIS7_S9_EEEEEEPKS1_NS0_12GRStateTraitIT_E9data_typeE", + // "clang::ento::GRState const* clang::ento::GRState::set>>(clang::ento::GRStateTrait>>::data_type) const"}, + // "clang::ento::GRState const* clang::ento::GRState::set>>(clang::ento::GRStateTrait::data_type) const" was returned + + {"_ZN4llvm26ImutAVLTreeInOrderIteratorINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_16RefValEEEEppEv", "llvm::ImutAVLTreeInOrderIterator>::operator++()"}, + {"_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_16RefValEEEE7destroyEv", "llvm::ImutAVLTree>::destroy()"}, + {"_ZN4llvm8DenseMapIjPNS_11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_16RefValEEEEENS_12DenseMapInfoIjEENSD_ISC_EEEixERKj", "llvm::DenseMap>*, llvm::DenseMapInfo, llvm::DenseMapInfo>*>>::operator[](unsigned int const&)"}, + {"_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_16RefValEEEE13computeDigestEv", "llvm::ImutAVLTree>::computeDigest()"}, + {"_ZNSt6vectorIPN4llvm11ImutAVLTreeINS0_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_16RefValEEEEESaISC_EE9push_backERKSC_", "std::vector>*, std::allocator>*>>::push_back(llvm::ImutAVLTree>* const&)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_16RefValEEEE16getCanonicalTreeEPNS_11ImutAVLTreeIS9_EE", "llvm::ImutAVLFactory>::getCanonicalTree(llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_16RefValEEEE15remove_internalERKS6_PNS_11ImutAVLTreeIS9_EE", "llvm::ImutAVLFactory>::remove_internal(clang::ento::SymbolData const* const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_16RefValEEEE13markImmutableEPNS_11ImutAVLTreeIS9_EE", "llvm::ImutAVLFactory>::markImmutable(llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_16RefValEEEE11balanceTreeEPNS_11ImutAVLTreeIS9_EERKSt4pairIS6_S8_ESD_", "llvm::ImutAVLFactory>::balanceTree(llvm::ImutAVLTree>*, std::pair const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_16RefValEEEE10createNodeEPNS_11ImutAVLTreeIS9_EERKSt4pairIS6_S8_ESD_", "llvm::ImutAVLFactory>::createNode(llvm::ImutAVLTree>*, std::pair const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_16RefValEEEE16removeMinBindingEPNS_11ImutAVLTreeIS9_EERSD_", "llvm::ImutAVLFactory>::removeMinBinding(llvm::ImutAVLTree>*, llvm::ImutAVLTree>*&)"}, + {"_ZN5clang4ento19GRStatePartialTraitIN4llvm12ImmutableMapIPKNS0_10SymbolDataEN12_GLOBAL__N_16RefValENS2_16ImutKeyValueInfoIS6_S8_EEEEE13CreateContextERNS2_16BumpPtrAllocatorE", "clang::ento::GRStatePartialTrait>>::CreateContext(llvm::BumpPtrAllocator&)"}, + {"_ZN5clang4ento19GRStatePartialTraitIN4llvm12ImmutableMapIPKNS0_10SymbolDataEN12_GLOBAL__N_16RefValENS2_16ImutKeyValueInfoIS6_S8_EEEEE13DeleteContextEPv", "clang::ento::GRStatePartialTrait>>::DeleteContext(void*)"}, + + // {"_ZNK5clang4ento7GRState3setIN4llvm12ImmutableMapIPKNS0_10SymbolDataEN12_GLOBAL__N_16RefValENS3_16ImutKeyValueInfoIS7_S9_EEEEEEPKS1_NS0_12GRStateTraitIT_E8key_typeENSH_10value_typeE", + // "clang::ento::GRState const* clang::ento::GRState::set>>(clang::ento::GRStateTrait>>::key_type, clang::ento::GRStateTrait>>::value_type) const"}, + // "clang::ento::GRState const* clang::ento::GRState::set>>(clang::ento::GRStateTrait::key_type, clang::ento::GRStateTrait::key_type::value_type) const" was returned + + {"_ZN12_GLOBAL__N_110CFRefCount23HandleAutoreleaseCountsEPKN5clang4ento7GRStateENS_26GenericNodeBuilderRefCountEPNS2_12ExplodedNodeERNS2_10ExprEngineEPKNS2_10SymbolDataENS_6RefValERb", "(anonymous namespace)::CFRefCount::HandleAutoreleaseCounts(clang::ento::GRState const*, (anonymous namespace)::GenericNodeBuilderRefCount, clang::ento::ExplodedNode*, clang::ento::ExprEngine&, clang::ento::SymbolData const*, (anonymous namespace)::RefVal, bool&)"}, + {"_ZN12_GLOBAL__N_120RetainSummaryManager16getMethodSummaryEPKN5clang14ObjCMethodDeclE", "(anonymous namespace)::RetainSummaryManager::getMethodSummary(clang::ObjCMethodDecl const*)"}, + {"_ZN12_GLOBAL__N_115CFRefLeakReportC1ERNS_8CFRefBugERKNS_10CFRefCountEPN5clang4ento12ExplodedNodeEPKNS7_10SymbolDataERNS7_10ExprEngineE", "(anonymous namespace)::CFRefLeakReport::CFRefLeakReport((anonymous namespace)::CFRefBug&, (anonymous namespace)::CFRefCount const&, clang::ento::ExplodedNode*, clang::ento::SymbolData const*, clang::ento::ExprEngine&)"}, + {"_ZN12_GLOBAL__N_111CFRefReportD1Ev", "(anonymous namespace)::CFRefReport::~CFRefReport()"}, + {"_ZN12_GLOBAL__N_111CFRefReportD0Ev", "(anonymous namespace)::CFRefReport::~CFRefReport()"}, + {"_ZN12_GLOBAL__N_111CFRefReport9VisitNodeEPKN5clang4ento12ExplodedNodeES5_RNS2_18BugReporterContextE", "(anonymous namespace)::CFRefReport::VisitNode(clang::ento::ExplodedNode const*, clang::ento::ExplodedNode const*, clang::ento::BugReporterContext&)"}, + {"_ZN12_GLOBAL__N_111CFRefReport23getExtraDescriptiveTextEv", "(anonymous namespace)::CFRefReport::getExtraDescriptiveText()"}, + {"_ZN12_GLOBAL__N_111CFRefReport10getEndPathERN5clang4ento18BugReporterContextEPKNS2_12ExplodedNodeE", "(anonymous namespace)::CFRefReport::getEndPath(clang::ento::BugReporterContext&, clang::ento::ExplodedNode const*)"}, + {"_ZNK12_GLOBAL__N_111CFRefReport9getRangesEv", "(anonymous namespace)::CFRefReport::getRanges() const"}, + {"_Z17GetAllocationSiteRN5clang4ento14GRStateManagerEPKNS0_12ExplodedNodeEPKNS0_10SymbolDataE", "GetAllocationSite(clang::ento::GRStateManager&, clang::ento::ExplodedNode const*, clang::ento::SymbolData const*)"}, + {"_ZN12_GLOBAL__N_115CFRefLeakReportD1Ev", "(anonymous namespace)::CFRefLeakReport::~CFRefLeakReport()"}, + {"_ZN12_GLOBAL__N_115CFRefLeakReportD0Ev", "(anonymous namespace)::CFRefLeakReport::~CFRefLeakReport()"}, + {"_ZN12_GLOBAL__N_115CFRefLeakReport10getEndPathERN5clang4ento18BugReporterContextEPKNS2_12ExplodedNodeE", "(anonymous namespace)::CFRefLeakReport::getEndPath(clang::ento::BugReporterContext&, clang::ento::ExplodedNode const*)"}, + {"_ZNK12_GLOBAL__N_115CFRefLeakReport11getLocationEv", "(anonymous namespace)::CFRefLeakReport::getLocation() const"}, + {"_ZN12_GLOBAL__N_117FindUniqueBindingD1Ev", "(anonymous namespace)::FindUniqueBinding::~FindUniqueBinding()"}, + {"_ZN12_GLOBAL__N_117FindUniqueBindingD0Ev", "(anonymous namespace)::FindUniqueBinding::~FindUniqueBinding()"}, + {"_ZN12_GLOBAL__N_117FindUniqueBinding13HandleBindingERN5clang4ento12StoreManagerEPKvPKNS2_9MemRegionENS2_4SValE", "(anonymous namespace)::FindUniqueBinding::HandleBinding(clang::ento::StoreManager&, void const*, clang::ento::MemRegion const*, clang::ento::SVal)"}, + {"_ZN12_GLOBAL__N_120RetainSummaryManager24getInstanceMethodSummaryEN5clang8SelectorEPNS1_14IdentifierInfoEPKNS1_17ObjCInterfaceDeclEPKNS1_14ObjCMethodDeclENS1_8QualTypeE", "(anonymous namespace)::RetainSummaryManager::getInstanceMethodSummary(clang::Selector, clang::IdentifierInfo*, clang::ObjCInterfaceDecl const*, clang::ObjCMethodDecl const*, clang::QualType)"}, + {"_ZN12_GLOBAL__N_120RetainSummaryManager21getClassMethodSummaryEN5clang8SelectorEPNS1_14IdentifierInfoEPKNS1_17ObjCInterfaceDeclEPKNS1_14ObjCMethodDeclENS1_8QualTypeE", "(anonymous namespace)::RetainSummaryManager::getClassMethodSummary(clang::Selector, clang::IdentifierInfo*, clang::ObjCInterfaceDecl const*, clang::ObjCMethodDecl const*, clang::QualType)"}, + {"_ZN12_GLOBAL__N_116ObjCSummaryCache4findEPKN5clang17ObjCInterfaceDeclEPNS1_14IdentifierInfoENS1_8SelectorE", "(anonymous namespace)::ObjCSummaryCache::find(clang::ObjCInterfaceDecl const*, clang::IdentifierInfo*, clang::Selector)"}, + {"_ZN12_GLOBAL__N_120RetainSummaryManager22getCommonMethodSummaryEPKN5clang14ObjCMethodDeclENS1_8SelectorENS1_8QualTypeE", "(anonymous namespace)::RetainSummaryManager::getCommonMethodSummary(clang::ObjCMethodDecl const*, clang::Selector, clang::QualType)"}, + {"_ZN12_GLOBAL__N_120RetainSummaryManager28updateSummaryFromAnnotationsERNS_13RetainSummaryEPKN5clang14ObjCMethodDeclE", "(anonymous namespace)::RetainSummaryManager::updateSummaryFromAnnotations((anonymous namespace)::RetainSummary&, clang::ObjCMethodDecl const*)"}, + {"_ZN4llvm8DenseMapIN12_GLOBAL__N_114ObjCSummaryKeyEPNS1_13RetainSummaryENS_12DenseMapInfoIS2_EENS5_IS4_EEEixERKS2_", "llvm::DenseMap<(anonymous namespace)::ObjCSummaryKey, (anonymous namespace)::RetainSummary*, llvm::DenseMapInfo<(anonymous namespace)::ObjCSummaryKey>, llvm::DenseMapInfo<(anonymous namespace)::RetainSummary*>>::operator[]((anonymous namespace)::ObjCSummaryKey const&)"}, + {"_ZNK4llvm8DenseMapIN12_GLOBAL__N_114ObjCSummaryKeyEPNS1_13RetainSummaryENS_12DenseMapInfoIS2_EENS5_IS4_EEE15LookupBucketForERKS2_RPSt4pairIS2_S4_E", "llvm::DenseMap<(anonymous namespace)::ObjCSummaryKey, (anonymous namespace)::RetainSummary*, llvm::DenseMapInfo<(anonymous namespace)::ObjCSummaryKey>, llvm::DenseMapInfo<(anonymous namespace)::RetainSummary*>>::LookupBucketFor((anonymous namespace)::ObjCSummaryKey const&, std::pair<(anonymous namespace)::ObjCSummaryKey, (anonymous namespace)::RetainSummary*>*&) const"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_16RefValEEEE12add_internalERKSt4pairIS6_S8_EPNS_11ImutAVLTreeIS9_EE", "llvm::ImutAVLFactory>::add_internal(std::pair const&, llvm::ImutAVLTree>*)"}, + {"_ZN12_GLOBAL__N_110CFRefCount17HandleSymbolDeathEPKN5clang4ento7GRStateEPKNS2_10SymbolDataENS_6RefValERN4llvm15SmallVectorImplIS8_EE", "(anonymous namespace)::CFRefCount::HandleSymbolDeath(clang::ento::GRState const*, clang::ento::SymbolData const*, (anonymous namespace)::RefVal, llvm::SmallVectorImpl&)"}, + {"_ZN12_GLOBAL__N_110CFRefCount12ProcessLeaksEPKN5clang4ento7GRStateERN4llvm15SmallVectorImplIPKNS2_10SymbolDataEEERNS_26GenericNodeBuilderRefCountERNS2_10ExprEngineEPNS2_12ExplodedNodeE", "(anonymous namespace)::CFRefCount::ProcessLeaks(clang::ento::GRState const*, llvm::SmallVectorImpl&, (anonymous namespace)::GenericNodeBuilderRefCount&, clang::ento::ExprEngine&, clang::ento::ExplodedNode*)"}, + + // {"_ZNK5clang4ento7GRState6removeIN4llvm12ImmutableMapIPKNS0_10SymbolDataEN12_GLOBAL__N_16RefValENS3_16ImutKeyValueInfoIS7_S9_EEEEEEPKS1_NS0_12GRStateTraitIT_E8key_typeE", + // "clang::ento::GRState const* clang::ento::GRState::remove>>(clang::ento::GRStateTrait>>::key_type) const"}, + // "clang::ento::GRState const* clang::ento::GRState::remove>>(clang::ento::GRStateTrait::key_type) const" was returned + + {"_ZN12_GLOBAL__N_120StopTrackingCallbackD1Ev", "(anonymous namespace)::StopTrackingCallback::~StopTrackingCallback()"}, + {"_ZN12_GLOBAL__N_120StopTrackingCallback11VisitSymbolEPKN5clang4ento10SymbolDataE", "(anonymous namespace)::StopTrackingCallback::VisitSymbol(clang::ento::SymbolData const*)"}, + {"_ZN12_GLOBAL__N_120StopTrackingCallbackD0Ev", "(anonymous namespace)::StopTrackingCallback::~StopTrackingCallback()"}, + {"_ZN12_GLOBAL__N_110CFRefCount11evalSummaryERN5clang4ento15ExplodedNodeSetERNS2_10ExprEngineERNS2_15StmtNodeBuilderEPKNS1_4ExprERKNS2_17CallOrObjCMessageENS_16InstanceReceiverERKNS_13RetainSummaryEPKNS2_9MemRegionEPNS2_12ExplodedNodeEPKNS2_7GRStateE", "(anonymous namespace)::CFRefCount::evalSummary(clang::ento::ExplodedNodeSet&, clang::ento::ExprEngine&, clang::ento::StmtNodeBuilder&, clang::Expr const*, clang::ento::CallOrObjCMessage const&, (anonymous namespace)::InstanceReceiver, (anonymous namespace)::RetainSummary const&, clang::ento::MemRegion const*, clang::ento::ExplodedNode*, clang::ento::GRState const*)"}, + {"_ZN12_GLOBAL__N_110CFRefCount6UpdateEPKN5clang4ento7GRStateEPKNS2_10SymbolDataENS_6RefValE9ArgEffectRNS9_4KindE", "(anonymous namespace)::CFRefCount::Update(clang::ento::GRState const*, clang::ento::SymbolData const*, (anonymous namespace)::RefVal, ArgEffect, (anonymous namespace)::RefVal::Kind&)"}, + {"_ZN12_GLOBAL__N_116InstanceReceiver20getSValAsScalarOrLocEPKN5clang4ento7GRStateE", "(anonymous namespace)::InstanceReceiver::getSValAsScalarOrLoc(clang::ento::GRState const*)"}, + {"_Z13GetReturnTypePKN5clang4ExprERNS_10ASTContextE", "GetReturnType(clang::Expr const*, clang::ASTContext&)"}, + + // {"_ZNK5clang4ento7GRState3getIN12_GLOBAL__N_123AutoreleasePoolContentsEEENS0_12GRStateTraitIT_E11lookup_typeENS7_8key_typeE", + // "clang::ento::GRStateTrait<(anonymous namespace)::AutoreleasePoolContents>::lookup_type clang::ento::GRState::get<(anonymous namespace)::AutoreleasePoolContents>(clang::ento::GRStateTrait<(anonymous namespace)::AutoreleasePoolContents>::key_type) const"}, + // "clang::ento::GRStateTrait<(anonymous namespace)::AutoreleasePoolContents>::lookup_type clang::ento::GRState::get<(anonymous namespace)::AutoreleasePoolContents>(clang::ento::GRStateTrait<(anonymous namespace)::AutoreleasePoolContents>::lookup_type::key_type) const" was returned + + {"_ZN12_GLOBAL__N_120RetainSummaryManager15getUnarySummaryEPKN5clang12FunctionTypeENS0_13UnaryFuncKindE", "(anonymous namespace)::RetainSummaryManager::getUnarySummary(clang::FunctionType const*, (anonymous namespace)::RetainSummaryManager::UnaryFuncKind)"}, + {"_ZN12_GLOBAL__N_120RetainSummaryManager25getCFCreateGetRuleSummaryEPKN5clang12FunctionDeclEN4llvm9StringRefE", "(anonymous namespace)::RetainSummaryManager::getCFCreateGetRuleSummary(clang::FunctionDecl const*, llvm::StringRef)"}, + {"_ZN12_GLOBAL__N_120RetainReleaseCheckerD1Ev", "(anonymous namespace)::RetainReleaseChecker::~RetainReleaseChecker()"}, + {"_ZN12_GLOBAL__N_120RetainReleaseCheckerD0Ev", "(anonymous namespace)::RetainReleaseChecker::~RetainReleaseChecker()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_120RetainReleaseCheckerEE9_PreVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::RetainReleaseChecker>::_PreVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_120RetainReleaseCheckerEE10_PostVisitERNS0_14CheckerContextEPKNS_4StmtE", "clang::ento::CheckerVisitor<(anonymous namespace)::RetainReleaseChecker>::_PostVisit(clang::ento::CheckerContext&, clang::Stmt const*)"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_120RetainReleaseCheckerEED1Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::RetainReleaseChecker>::~CheckerVisitor()"}, + {"_ZN5clang4ento14CheckerVisitorIN12_GLOBAL__N_120RetainReleaseCheckerEED0Ev", "clang::ento::CheckerVisitor<(anonymous namespace)::RetainReleaseChecker>::~CheckerVisitor()"}, + {"_ZN12_GLOBAL__N_118LeakWithinFunctionD1Ev", "(anonymous namespace)::LeakWithinFunction::~LeakWithinFunction()"}, + {"_ZN12_GLOBAL__N_118LeakWithinFunctionD0Ev", "(anonymous namespace)::LeakWithinFunction::~LeakWithinFunction()"}, + {"_ZNK12_GLOBAL__N_14Leak14getDescriptionEv", "(anonymous namespace)::Leak::getDescription() const"}, + {"_ZNK12_GLOBAL__N_14Leak6isLeakEv", "(anonymous namespace)::Leak::isLeak() const"}, + {"_ZN12_GLOBAL__N_14LeakD1Ev", "(anonymous namespace)::Leak::~Leak()"}, + {"_ZN12_GLOBAL__N_14LeakD0Ev", "(anonymous namespace)::Leak::~Leak()"}, + {"_ZN12_GLOBAL__N_18CFRefBugD1Ev", "(anonymous namespace)::CFRefBug::~CFRefBug()"}, + {"_ZN12_GLOBAL__N_18CFRefBugD0Ev", "(anonymous namespace)::CFRefBug::~CFRefBug()"}, + {"_ZNK12_GLOBAL__N_18CFRefBug6isLeakEv", "(anonymous namespace)::CFRefBug::isLeak() const"}, + {"_ZN12_GLOBAL__N_112LeakAtReturnD1Ev", "(anonymous namespace)::LeakAtReturn::~LeakAtReturn()"}, + {"_ZN12_GLOBAL__N_112LeakAtReturnD0Ev", "(anonymous namespace)::LeakAtReturn::~LeakAtReturn()"}, + {"_ZN12_GLOBAL__N_124ReturnedNotOwnedForOwnedD1Ev", "(anonymous namespace)::ReturnedNotOwnedForOwned::~ReturnedNotOwnedForOwned()"}, + {"_ZN12_GLOBAL__N_124ReturnedNotOwnedForOwnedD0Ev", "(anonymous namespace)::ReturnedNotOwnedForOwned::~ReturnedNotOwnedForOwned()"}, + {"_ZNK12_GLOBAL__N_124ReturnedNotOwnedForOwned14getDescriptionEv", "(anonymous namespace)::ReturnedNotOwnedForOwned::getDescription() const"}, + {"_ZN12_GLOBAL__N_115OverAutoreleaseD1Ev", "(anonymous namespace)::OverAutorelease::~OverAutorelease()"}, + {"_ZN12_GLOBAL__N_115OverAutoreleaseD0Ev", "(anonymous namespace)::OverAutorelease::~OverAutorelease()"}, + {"_ZNK12_GLOBAL__N_115OverAutorelease14getDescriptionEv", "(anonymous namespace)::OverAutorelease::getDescription() const"}, + {"_ZN12_GLOBAL__N_115DeallocNotOwnedD1Ev", "(anonymous namespace)::DeallocNotOwned::~DeallocNotOwned()"}, + {"_ZN12_GLOBAL__N_115DeallocNotOwnedD0Ev", "(anonymous namespace)::DeallocNotOwned::~DeallocNotOwned()"}, + {"_ZNK12_GLOBAL__N_115DeallocNotOwned14getDescriptionEv", "(anonymous namespace)::DeallocNotOwned::getDescription() const"}, + {"_ZN12_GLOBAL__N_19DeallocGCD1Ev", "(anonymous namespace)::DeallocGC::~DeallocGC()"}, + {"_ZN12_GLOBAL__N_19DeallocGCD0Ev", "(anonymous namespace)::DeallocGC::~DeallocGC()"}, + {"_ZNK12_GLOBAL__N_19DeallocGC14getDescriptionEv", "(anonymous namespace)::DeallocGC::getDescription() const"}, + {"_ZN12_GLOBAL__N_110BadReleaseD1Ev", "(anonymous namespace)::BadRelease::~BadRelease()"}, + {"_ZN12_GLOBAL__N_110BadReleaseD0Ev", "(anonymous namespace)::BadRelease::~BadRelease()"}, + {"_ZNK12_GLOBAL__N_110BadRelease14getDescriptionEv", "(anonymous namespace)::BadRelease::getDescription() const"}, + {"_ZN12_GLOBAL__N_115UseAfterReleaseD1Ev", "(anonymous namespace)::UseAfterRelease::~UseAfterRelease()"}, + {"_ZN12_GLOBAL__N_115UseAfterReleaseD0Ev", "(anonymous namespace)::UseAfterRelease::~UseAfterRelease()"}, + {"_ZNK12_GLOBAL__N_115UseAfterRelease14getDescriptionEv", "(anonymous namespace)::UseAfterRelease::getDescription() const"}, + {"_ZN12_GLOBAL__N_110CFRefCount15BindingsPrinterD1Ev", "(anonymous namespace)::CFRefCount::BindingsPrinter::~BindingsPrinter()"}, + {"_ZN12_GLOBAL__N_110CFRefCount15BindingsPrinterD0Ev", "(anonymous namespace)::CFRefCount::BindingsPrinter::~BindingsPrinter()"}, + {"_ZN12_GLOBAL__N_110CFRefCount15BindingsPrinter5PrintERN4llvm11raw_ostreamEPKN5clang4ento7GRStateEPKcSB_", "(anonymous namespace)::CFRefCount::BindingsPrinter::Print(llvm::raw_ostream&, clang::ento::GRState const*, char const*, char const*)"}, + {"_Z9PrintPoolRN4llvm11raw_ostreamEPKN5clang4ento10SymbolDataEPKNS3_7GRStateE", "PrintPool(llvm::raw_ostream&, clang::ento::SymbolData const*, clang::ento::GRState const*)"}, + {"_ZN12_GLOBAL__N_120RetainSummaryManager15addPanicSummaryEPKcz", "(anonymous namespace)::RetainSummaryManager::addPanicSummary(char const*, ...)"}, + {"_ZN12_GLOBAL__N_120RetainSummaryManager18addInstMethSummaryEPKcPNS_13RetainSummaryEz", "(anonymous namespace)::RetainSummaryManager::addInstMethSummary(char const*, (anonymous namespace)::RetainSummary*, ...)"}, + {"_ZN12_GLOBAL__N_120RetainSummaryManager16addMethodSummaryEPN5clang14IdentifierInfoERNS_16ObjCSummaryCacheEPNS_13RetainSummaryEP13__va_list_tag", "(anonymous namespace)::RetainSummaryManager::addMethodSummary(clang::IdentifierInfo*, (anonymous namespace)::ObjCSummaryCache&, (anonymous namespace)::RetainSummary*, __va_list_tag*)"}, + {"_ZN12_GLOBAL__N_120RetainSummaryManager17addClsMethSummaryEPN5clang14IdentifierInfoEPNS_13RetainSummaryEz", "(anonymous namespace)::RetainSummaryManager::addClsMethSummary(clang::IdentifierInfo*, (anonymous namespace)::RetainSummary*, ...)"}, + {"_ZNK5clang4Decl7getAttrINS_18NSConsumesSelfAttrEEEPT_v", "clang::NSConsumesSelfAttr* clang::Decl::getAttr() const"}, + {"_ZNK5clang4Decl7getAttrINS_14NSConsumedAttrEEEPT_v", "clang::NSConsumedAttr* clang::Decl::getAttr() const"}, + {"_ZNK5clang4Decl7getAttrINS_14CFConsumedAttrEEEPT_v", "clang::CFConsumedAttr* clang::Decl::getAttr() const"}, + {"_ZNK5clang4Decl7getAttrINS_21NSReturnsRetainedAttrEEEPT_v", "clang::NSReturnsRetainedAttr* clang::Decl::getAttr() const"}, + {"_ZNK5clang4Decl7getAttrINS_24NSReturnsNotRetainedAttrEEEPT_v", "clang::NSReturnsNotRetainedAttr* clang::Decl::getAttr() const"}, + {"_ZNK5clang4Decl7getAttrINS_21CFReturnsRetainedAttrEEEPT_v", "clang::CFReturnsRetainedAttr* clang::Decl::getAttr() const"}, + {"_ZNK5clang4Decl7getAttrINS_24CFReturnsNotRetainedAttrEEEPT_v", "clang::CFReturnsNotRetainedAttr* clang::Decl::getAttr() const"}, + {"_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIj9ArgEffectEEE7destroyEv", "llvm::ImutAVLTree>::destroy()"}, + {"_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIj9ArgEffectEEE13computeDigestEv", "llvm::ImutAVLTree>::computeDigest()"}, + {"_ZNSt6vectorIPN4llvm11ImutAVLTreeINS0_16ImutKeyValueInfoIj9ArgEffectEEEESaIS6_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS6_S8_EERKS6_", "std::vector>*, std::allocator>*>>::_M_insert_aux(__gnu_cxx::__normal_iterator>**, std::vector>*, std::allocator>*>>>, llvm::ImutAVLTree>* const&)"}, + {"_ZN4llvm8DenseMapIjPNS_11ImutAVLTreeINS_16ImutKeyValueInfoIj9ArgEffectEEEENS_12DenseMapInfoIjEENS7_IS6_EEE16InsertIntoBucketERKjRKS6_PSt4pairIjS6_E", "llvm::DenseMap>*, llvm::DenseMapInfo, llvm::DenseMapInfo>*>>::InsertIntoBucket(unsigned int const&, llvm::ImutAVLTree>* const&, std::pair>*>*)"}, + {"_ZN4llvm8DenseMapIjPNS_11ImutAVLTreeINS_16ImutKeyValueInfoIj9ArgEffectEEEENS_12DenseMapInfoIjEENS7_IS6_EEE4growEj", "llvm::DenseMap>*, llvm::DenseMapInfo, llvm::DenseMapInfo>*>>::grow(unsigned int)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIj9ArgEffectEEE3addEPNS_11ImutAVLTreeIS3_EERKSt4pairIjS2_E", "llvm::ImutAVLFactory>::add(llvm::ImutAVLTree>*, std::pair const&)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIj9ArgEffectEEE16getCanonicalTreeEPNS_11ImutAVLTreeIS3_EE", "llvm::ImutAVLFactory>::getCanonicalTree(llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIj9ArgEffectEEE22compareTreeWithSectionEPNS_11ImutAVLTreeIS3_EERNS_26ImutAVLTreeInOrderIteratorIS3_EESA_", "llvm::ImutAVLFactory>::compareTreeWithSection(llvm::ImutAVLTree>*, llvm::ImutAVLTreeInOrderIterator>&, llvm::ImutAVLTreeInOrderIterator>&)"}, + {"_ZN4llvm26ImutAVLTreeGenericIteratorINS_16ImutKeyValueInfoIj9ArgEffectEEEppEv", "llvm::ImutAVLTreeGenericIterator>::operator++()"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIj9ArgEffectEEE12add_internalERKSt4pairIjS2_EPNS_11ImutAVLTreeIS3_EE", "llvm::ImutAVLFactory>::add_internal(std::pair const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIj9ArgEffectEEE13markImmutableEPNS_11ImutAVLTreeIS3_EE", "llvm::ImutAVLFactory>::markImmutable(llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIj9ArgEffectEEE10createNodeEPNS_11ImutAVLTreeIS3_EERKSt4pairIjS2_ES7_", "llvm::ImutAVLFactory>::createNode(llvm::ImutAVLTree>*, std::pair const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIj9ArgEffectEEE11balanceTreeEPNS_11ImutAVLTreeIS3_EERKSt4pairIjS2_ES7_", "llvm::ImutAVLFactory>::balanceTree(llvm::ImutAVLTree>*, std::pair const&, llvm::ImutAVLTree>*)"}, + {"_ZNK5clang4ento17CallOrObjCMessage17getArgSourceRangeEj", "clang::ento::CallOrObjCMessage::getArgSourceRange(unsigned int) const"}, + {"_ZN5clang4ento19GRStatePartialTraitIN4llvm12ImmutableMapIPKNS0_10SymbolDataENS3_IS6_jNS2_16ImutKeyValueInfoIS6_jEEEENS7_IS6_S9_EEEEE13CreateContextERNS2_16BumpPtrAllocatorE", "clang::ento::GRStatePartialTrait>, llvm::ImutKeyValueInfo>>>>::CreateContext(llvm::BumpPtrAllocator&)"}, + {"_ZN5clang4ento19GRStatePartialTraitIN4llvm12ImmutableMapIPKNS0_10SymbolDataENS3_IS6_jNS2_16ImutKeyValueInfoIS6_jEEEENS7_IS6_S9_EEEEE13DeleteContextEPv", "clang::ento::GRStatePartialTrait>, llvm::ImutKeyValueInfo>>>>::DeleteContext(void*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataENS_12ImmutableMapIS6_jNS1_IS6_jEEEEEEED2Ev", "llvm::ImutAVLFactory>>>::~ImutAVLFactory()"}, + {"_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataENS_12ImmutableMapIS6_jNS1_IS6_jEEEEEEE7destroyEv", "llvm::ImutAVLTree>>>::destroy()"}, + {"_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataENS_12ImmutableMapIS6_jNS1_IS6_jEEEEEEE13computeDigestEv", "llvm::ImutAVLTree>>>::computeDigest()"}, + {"_ZNSt6vectorIPN4llvm11ImutAVLTreeINS0_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataENS0_12ImmutableMapIS7_jNS2_IS7_jEEEEEEEESaISD_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPSD_SF_EERKSD_", "std::vector>>>*, std::allocator>>>*>>::_M_insert_aux(__gnu_cxx::__normal_iterator>>>**, std::vector>>>*, std::allocator>>>*>>>, llvm::ImutAVLTree>>>* const&)"}, + {"_ZN4llvm8DenseMapIjPNS_11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataENS_12ImmutableMapIS7_jNS2_IS7_jEEEEEEEENS_12DenseMapInfoIjEENSE_ISD_EEE16InsertIntoBucketERKjRKSD_PSt4pairIjSD_E", "llvm::DenseMap>>>*, llvm::DenseMapInfo, llvm::DenseMapInfo>>>*>>::InsertIntoBucket(unsigned int const&, llvm::ImutAVLTree>>>* const&, std::pair>>>*>*)"}, + {"_ZN4llvm8DenseMapIjPNS_11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataENS_12ImmutableMapIS7_jNS2_IS7_jEEEEEEEENS_12DenseMapInfoIjEENSE_ISD_EEE4growEj", "llvm::DenseMap>>>*, llvm::DenseMapInfo, llvm::DenseMapInfo>>>*>>::grow(unsigned int)"}, + {"_ZN4llvm12ImmutableMapIPKN5clang4ento10SymbolDataENS0_IS5_jNS_16ImutKeyValueInfoIS5_jEEEENS6_IS5_S8_EEE7Factory3addESA_RKS5_RKS8_", "llvm::ImmutableMap>, llvm::ImutKeyValueInfo>>>::Factory::add(llvm::ImmutableMap>, llvm::ImutKeyValueInfo>>>, clang::ento::SymbolData const* const&, llvm::ImmutableMap> const&)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataENS_12ImmutableMapIS6_jNS1_IS6_jEEEEEEE3addEPNS_11ImutAVLTreeISA_EERKSt4pairIS6_S9_E", "llvm::ImutAVLFactory>>>::add(llvm::ImutAVLTree>>>*, std::pair>> const&)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataENS_12ImmutableMapIS6_jNS1_IS6_jEEEEEEE16getCanonicalTreeEPNS_11ImutAVLTreeISA_EE", "llvm::ImutAVLFactory>>>::getCanonicalTree(llvm::ImutAVLTree>>>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataENS_12ImmutableMapIS6_jNS1_IS6_jEEEEEEE22compareTreeWithSectionEPNS_11ImutAVLTreeISA_EERNS_26ImutAVLTreeInOrderIteratorISA_EESH_", "llvm::ImutAVLFactory>>>::compareTreeWithSection(llvm::ImutAVLTree>>>*, llvm::ImutAVLTreeInOrderIterator>>>&, llvm::ImutAVLTreeInOrderIterator>>>&)"}, + {"_ZN4llvm26ImutAVLTreeGenericIteratorINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataENS_12ImmutableMapIS6_jNS1_IS6_jEEEEEEEppEv", "llvm::ImutAVLTreeGenericIterator>>>::operator++()"}, + {"_ZNK4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEjEEE7isEqualERKS8_", "llvm::ImutAVLTree>::isEqual(llvm::ImutAVLTree> const&) const"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataENS_12ImmutableMapIS6_jNS1_IS6_jEEEEEEE12add_internalERKSt4pairIS6_S9_EPNS_11ImutAVLTreeISA_EE", "llvm::ImutAVLFactory>>>::add_internal(std::pair>> const&, llvm::ImutAVLTree>>>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataENS_12ImmutableMapIS6_jNS1_IS6_jEEEEEEE13markImmutableEPNS_11ImutAVLTreeISA_EE", "llvm::ImutAVLFactory>>>::markImmutable(llvm::ImutAVLTree>>>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataENS_12ImmutableMapIS6_jNS1_IS6_jEEEEEEE10createNodeEPNS_11ImutAVLTreeISA_EERKSt4pairIS6_S9_ESE_", "llvm::ImutAVLFactory>>>::createNode(llvm::ImutAVLTree>>>*, std::pair>> const&, llvm::ImutAVLTree>>>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataENS_12ImmutableMapIS6_jNS1_IS6_jEEEEEEE11balanceTreeEPNS_11ImutAVLTreeISA_EERKSt4pairIS6_S9_ESE_", "llvm::ImutAVLFactory>>>::balanceTree(llvm::ImutAVLTree>>>*, std::pair>> const&, llvm::ImutAVLTree>>>*)"}, + {"_ZN5clang4ento19GRStatePartialTraitIN4llvm12ImmutableMapIPKNS0_10SymbolDataENS3_IS6_jNS2_16ImutKeyValueInfoIS6_jEEEENS7_IS6_S9_EEEEE6LookupESB_S6_", "clang::ento::GRStatePartialTrait>, llvm::ImutKeyValueInfo>>>>::Lookup(llvm::ImmutableMap>, llvm::ImutKeyValueInfo>>>, clang::ento::SymbolData const*)"}, + {"_ZN5clang4ento19GRStatePartialTraitIN4llvm13ImmutableListIPKNS0_10SymbolDataEEEE13CreateContextERNS2_16BumpPtrAllocatorE", "clang::ento::GRStatePartialTrait>::CreateContext(llvm::BumpPtrAllocator&)"}, + {"_ZN5clang4ento19GRStatePartialTraitIN4llvm13ImmutableListIPKNS0_10SymbolDataEEEE13DeleteContextEPv", "clang::ento::GRStatePartialTrait>::DeleteContext(void*)"}, + {"_ZN4llvm10FoldingSetINS_17ImmutableListImplIPKN5clang4ento10SymbolDataEEEED1Ev", "llvm::FoldingSet>::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetINS_17ImmutableListImplIPKN5clang4ento10SymbolDataEEEED0Ev", "llvm::FoldingSet>::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetINS_17ImmutableListImplIPKN5clang4ento10SymbolDataEEEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet>::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetINS_17ImmutableListImplIPKN5clang4ento10SymbolDataEEEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERSC_", "llvm::FoldingSet>::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetINS_17ImmutableListImplIPKN5clang4ento10SymbolDataEEEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet>::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm20ImmutableListFactoryIPKN5clang4ento10SymbolDataEE6concatERKS5_NS_13ImmutableListIS5_EE", "llvm::ImmutableListFactory::concat(clang::ento::SymbolData const* const&, llvm::ImmutableList)"}, + {"_ZN4llvm8DenseMapIPKN5clang4ento10SymbolDataEcNS_12DenseMapInfoIS5_EENS6_IcEEE6insertERKSt4pairIS5_cE", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPKN5clang4ento10SymbolDataEcNS_12DenseMapInfoIS5_EENS6_IcEEE16InsertIntoBucketERKS5_RKcPSt4pairIS5_cE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::ento::SymbolData const* const&, char const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang4ento10SymbolDataEcNS_12DenseMapInfoIS5_EENS6_IcEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang4ento7GRState7PrinterD1Ev", "clang::ento::GRState::Printer::~Printer()"}, + {"_ZN5clang4ento7GRState7PrinterD0Ev", "clang::ento::GRState::Printer::~Printer()"}, + {"_ZNSt6vectorIPN5clang4ento7GRState7PrinterESaIS4_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS4_S6_EERKS4_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, clang::ento::GRState::Printer* const&)"}, + {"_ZN5clang4ento13TransferFuncsD1Ev", "clang::ento::TransferFuncs::~TransferFuncs()"}, + {"_ZN5clang4ento13TransferFuncsD0Ev", "clang::ento::TransferFuncs::~TransferFuncs()"}, + {"_ZN5clang4ento13TransferFuncs16RegisterPrintersERSt6vectorIPNS0_7GRState7PrinterESaIS5_EE", "clang::ento::TransferFuncs::RegisterPrinters(std::vector>&)"}, + {"_ZN5clang4ento13TransferFuncs14RegisterChecksERNS0_10ExprEngineE", "clang::ento::TransferFuncs::RegisterChecks(clang::ento::ExprEngine&)"}, + {"_ZN5clang4ento13TransferFuncs8evalCallERNS0_15ExplodedNodeSetERNS0_10ExprEngineERNS0_15StmtNodeBuilderEPKNS_8CallExprENS0_4SValEPNS0_12ExplodedNodeE", "clang::ento::TransferFuncs::evalCall(clang::ento::ExplodedNodeSet&, clang::ento::ExprEngine&, clang::ento::StmtNodeBuilder&, clang::CallExpr const*, clang::ento::SVal, clang::ento::ExplodedNode*)"}, + {"_ZN5clang4ento13TransferFuncs15evalObjCMessageERNS0_15ExplodedNodeSetERNS0_10ExprEngineERNS0_15StmtNodeBuilderENS0_11ObjCMessageEPNS0_12ExplodedNodeEPKNS0_7GRStateE", "clang::ento::TransferFuncs::evalObjCMessage(clang::ento::ExplodedNodeSet&, clang::ento::ExprEngine&, clang::ento::StmtNodeBuilder&, clang::ento::ObjCMessage, clang::ento::ExplodedNode*, clang::ento::GRState const*)"}, + {"_ZN5clang4ento13TransferFuncs8evalBindERNS0_18StmtNodeBuilderRefENS0_4SValES4_", "clang::ento::TransferFuncs::evalBind(clang::ento::StmtNodeBuilderRef&, clang::ento::SVal, clang::ento::SVal)"}, + {"_ZN5clang4ento13TransferFuncs11evalEndPathERNS0_10ExprEngineERNS0_24EndOfFunctionNodeBuilderE", "clang::ento::TransferFuncs::evalEndPath(clang::ento::ExprEngine&, clang::ento::EndOfFunctionNodeBuilder&)"}, + {"_ZN5clang4ento13TransferFuncs15evalDeadSymbolsERNS0_15ExplodedNodeSetERNS0_10ExprEngineERNS0_15StmtNodeBuilderEPNS0_12ExplodedNodeEPKNS0_7GRStateERNS0_12SymbolReaperE", "clang::ento::TransferFuncs::evalDeadSymbols(clang::ento::ExplodedNodeSet&, clang::ento::ExprEngine&, clang::ento::StmtNodeBuilder&, clang::ento::ExplodedNode*, clang::ento::GRState const*, clang::ento::SymbolReaper&)"}, + {"_ZN5clang4ento13TransferFuncs10evalReturnERNS0_15ExplodedNodeSetERNS0_10ExprEngineERNS0_15StmtNodeBuilderEPKNS_10ReturnStmtEPNS0_12ExplodedNodeE", "clang::ento::TransferFuncs::evalReturn(clang::ento::ExplodedNodeSet&, clang::ento::ExprEngine&, clang::ento::StmtNodeBuilder&, clang::ReturnStmt const*, clang::ento::ExplodedNode*)"}, + {"_ZN5clang4ento13TransferFuncs10evalAssumeEPKNS0_7GRStateENS0_4SValEb", "clang::ento::TransferFuncs::evalAssume(clang::ento::GRState const*, clang::ento::SVal, bool)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIj9ArgEffectEEED2Ev", "llvm::ImutAVLFactory>::~ImutAVLFactory()"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEjEEEC2Ev", "llvm::ImutAVLFactory>::ImutAVLFactory()"}, + {"_ZN5clang4ento10ExprEngine13evalArgumentsENS_17ConstExprIteratorES2_PKNS_17FunctionProtoTypeEPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetEb", "clang::ento::ExprEngine::evalArguments(clang::ConstExprIterator, clang::ConstExprIterator, clang::FunctionProtoType const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&, bool)"}, + {"_ZN5clang4ento10ExprEngine16getCXXThisRegionEPKNS_13CXXRecordDeclEPKNS_17StackFrameContextE", "clang::ento::ExprEngine::getCXXThisRegion(clang::CXXRecordDecl const*, clang::StackFrameContext const*)"}, + {"_ZN5clang4ento10ExprEngine16getCXXThisRegionEPKNS_13CXXMethodDeclEPKNS_17StackFrameContextE", "clang::ento::ExprEngine::getCXXThisRegion(clang::CXXMethodDecl const*, clang::StackFrameContext const*)"}, + {"_ZN5clang4ento10ExprEngine24CreateCXXTemporaryObjectEPKNS_4ExprEPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetE", "clang::ento::ExprEngine::CreateCXXTemporaryObject(clang::Expr const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&)"}, + {"_ZN5clang4ento10ExprEngine21VisitCXXConstructExprEPKNS_16CXXConstructExprEPKNS0_9MemRegionEPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetE", "clang::ento::ExprEngine::VisitCXXConstructExpr(clang::CXXConstructExpr const*, clang::ento::MemRegion const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&)"}, + {"_ZN5clang4ento10ExprEngine18VisitCXXDestructorEPKNS_17CXXDestructorDeclEPKNS0_9MemRegionEPKNS_4StmtEPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetE", "clang::ento::ExprEngine::VisitCXXDestructor(clang::CXXDestructorDecl const*, clang::ento::MemRegion const*, clang::Stmt const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&)"}, + {"_ZN5clang4ento10ExprEngine22VisitCXXMemberCallExprEPKNS_17CXXMemberCallExprEPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetE", "clang::ento::ExprEngine::VisitCXXMemberCallExpr(clang::CXXMemberCallExpr const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&)"}, + {"_ZN5clang4ento10ExprEngine14evalMethodCallEPKNS_8CallExprEPKNS_13CXXMethodDeclEPKNS_4ExprEPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetESE_", "clang::ento::ExprEngine::evalMethodCall(clang::CallExpr const*, clang::CXXMethodDecl const*, clang::Expr const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&, clang::ento::ExplodedNodeSet&)"}, + {"_ZN5clang4ento10ExprEngine24VisitCXXOperatorCallExprEPKNS_19CXXOperatorCallExprEPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetE", "clang::ento::ExprEngine::VisitCXXOperatorCallExpr(clang::CXXOperatorCallExpr const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&)"}, + {"_ZN5clang4ento10ExprEngine15VisitCXXNewExprEPKNS_10CXXNewExprEPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetE", "clang::ento::ExprEngine::VisitCXXNewExpr(clang::CXXNewExpr const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&)"}, + {"_ZN5clang4ento10ExprEngine18VisitCXXDeleteExprEPKNS_13CXXDeleteExprEPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetE", "clang::ento::ExprEngine::VisitCXXDeleteExpr(clang::CXXDeleteExpr const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&)"}, + {"_ZN5clang4ento10ExprEngine16VisitCXXThisExprEPKNS_11CXXThisExprEPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetE", "clang::ento::ExprEngine::VisitCXXThisExpr(clang::CXXThisExpr const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&)"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN12_GLOBAL__N_114CallExprWLItemELb0EE4growEm", "llvm::SmallVectorTemplateBase<(anonymous namespace)::CallExprWLItem, false>::grow(unsigned long)"}, + {"_ZN5clang4ento7CheckerD0Ev", "clang::ento::Checker::~Checker()"}, + {"_ZN5clang4ento7CheckerD1Ev", "clang::ento::Checker::~Checker()"}, + {"_ZN5clang4ento7CheckerD2Ev", "clang::ento::Checker::~Checker()"}, + {"_ZN5clang4ento14CheckerContextD1Ev", "clang::ento::CheckerContext::~CheckerContext()"}, + {"_ZN5clang4ento14CheckerContextD2Ev", "clang::ento::CheckerContext::~CheckerContext()"}, + {"_ZN5clang4ento13containsMacroEPKNS_4StmtE", "clang::ento::containsMacro(clang::Stmt const*)"}, + {"_ZN5clang4ento12containsEnumEPKNS_4StmtE", "clang::ento::containsEnum(clang::Stmt const*)"}, + {"_ZN5clang4ento19containsStaticLocalEPKNS_4StmtE", "clang::ento::containsStaticLocal(clang::Stmt const*)"}, + {"_ZN5clang4ento23containsBuiltinOffsetOfEPKNS_4StmtE", "clang::ento::containsBuiltinOffsetOf(clang::Stmt const*)"}, + {"_ZN5clang4ento8WorkList7VisitorD0Ev", "clang::ento::WorkList::Visitor::~Visitor()"}, + {"_ZN5clang4ento8WorkList7VisitorD1Ev", "clang::ento::WorkList::Visitor::~Visitor()"}, + {"_ZN5clang4ento8WorkList7VisitorD2Ev", "clang::ento::WorkList::Visitor::~Visitor()"}, + {"_ZN5clang4ento8WorkListD0Ev", "clang::ento::WorkList::~WorkList()"}, + {"_ZN5clang4ento8WorkListD1Ev", "clang::ento::WorkList::~WorkList()"}, + {"_ZN5clang4ento8WorkListD2Ev", "clang::ento::WorkList::~WorkList()"}, + {"_ZN5clang4ento8WorkList7makeDFSEv", "clang::ento::WorkList::makeDFS()"}, + {"_ZN5clang4ento8WorkList7makeBFSEv", "clang::ento::WorkList::makeBFS()"}, + {"_ZN5clang4ento8WorkList23makeBFSBlockDFSContentsEv", "clang::ento::WorkList::makeBFSBlockDFSContents()"}, + {"_ZN5clang4ento10CoreEngine15ExecuteWorkListEPKNS_15LocationContextEjPKNS0_7GRStateE", "clang::ento::CoreEngine::ExecuteWorkList(clang::LocationContext const*, unsigned int, clang::ento::GRState const*)"}, + {"_ZN5clang4ento10CoreEngine12generateNodeERKNS_12ProgramPointEPKNS0_7GRStateEPNS0_12ExplodedNodeE", "clang::ento::CoreEngine::generateNode(clang::ProgramPoint const&, clang::ento::GRState const*, clang::ento::ExplodedNode*)"}, + {"_ZN5clang4ento10CoreEngine15HandleBlockEdgeERKNS_9BlockEdgeEPNS0_12ExplodedNodeE", "clang::ento::CoreEngine::HandleBlockEdge(clang::BlockEdge const&, clang::ento::ExplodedNode*)"}, + {"_ZN5clang4ento10CoreEngine19HandleBlockEntranceERKNS_13BlockEntranceEPNS0_12ExplodedNodeE", "clang::ento::CoreEngine::HandleBlockEntrance(clang::BlockEntrance const&, clang::ento::ExplodedNode*)"}, + {"_ZN5clang4ento10CoreEngine15HandleCallEnterERKNS_9CallEnterEPKNS_8CFGBlockEjPNS0_12ExplodedNodeE", "clang::ento::CoreEngine::HandleCallEnter(clang::CallEnter const&, clang::CFGBlock const*, unsigned int, clang::ento::ExplodedNode*)"}, + {"_ZN5clang4ento10CoreEngine14HandleCallExitERKNS_8CallExitEPNS0_12ExplodedNodeE", "clang::ento::CoreEngine::HandleCallExit(clang::CallExit const&, clang::ento::ExplodedNode*)"}, + {"_ZN5clang4ento10CoreEngine14HandlePostStmtEPKNS_8CFGBlockEjPNS0_12ExplodedNodeE", "clang::ento::CoreEngine::HandlePostStmt(clang::CFGBlock const*, unsigned int, clang::ento::ExplodedNode*)"}, + {"_ZN5clang4ento10CoreEngine31ExecuteWorkListWithInitialStateEPKNS_15LocationContextEjPKNS0_7GRStateERNS0_15ExplodedNodeSetE", "clang::ento::CoreEngine::ExecuteWorkListWithInitialState(clang::LocationContext const*, unsigned int, clang::ento::GRState const*, clang::ento::ExplodedNodeSet&)"}, + {"_ZN5clang4ento24EndOfFunctionNodeBuilderD1Ev", "clang::ento::EndOfFunctionNodeBuilder::~EndOfFunctionNodeBuilder()"}, + {"_ZN5clang4ento15StmtNodeBuilderC1EPKNS_8CFGBlockEjPNS0_12ExplodedNodeEPNS0_10CoreEngineERNS0_14GRStateManagerE", "clang::ento::StmtNodeBuilder::StmtNodeBuilder(clang::CFGBlock const*, unsigned int, clang::ento::ExplodedNode*, clang::ento::CoreEngine*, clang::ento::GRStateManager&)"}, + {"_ZN5clang4ento15StmtNodeBuilderD1Ev", "clang::ento::StmtNodeBuilder::~StmtNodeBuilder()"}, + {"_ZN5clang4ento10CoreEngine15HandleBlockExitEPKNS_8CFGBlockEPNS0_12ExplodedNodeE", "clang::ento::CoreEngine::HandleBlockExit(clang::CFGBlock const*, clang::ento::ExplodedNode*)"}, + {"_ZN5clang4ento10CoreEngine12HandleBranchEPKNS_4StmtES4_PKNS_8CFGBlockEPNS0_12ExplodedNodeE", "clang::ento::CoreEngine::HandleBranch(clang::Stmt const*, clang::Stmt const*, clang::CFGBlock const*, clang::ento::ExplodedNode*)"}, + {"_ZN5clang4ento17BranchNodeBuilderD1Ev", "clang::ento::BranchNodeBuilder::~BranchNodeBuilder()"}, + {"_ZN5clang4ento22GenericNodeBuilderImpl16generateNodeImplEPKNS0_7GRStateEPNS0_12ExplodedNodeENS_12ProgramPointEb", "clang::ento::GenericNodeBuilderImpl::generateNodeImpl(clang::ento::GRState const*, clang::ento::ExplodedNode*, clang::ProgramPoint, bool)"}, + {"_ZN5clang4ento15StmtNodeBuilderC2EPKNS_8CFGBlockEjPNS0_12ExplodedNodeEPNS0_10CoreEngineERNS0_14GRStateManagerE", "clang::ento::StmtNodeBuilder::StmtNodeBuilder(clang::CFGBlock const*, unsigned int, clang::ento::ExplodedNode*, clang::ento::CoreEngine*, clang::ento::GRStateManager&)"}, + {"_ZN5clang4ento15StmtNodeBuilderD2Ev", "clang::ento::StmtNodeBuilder::~StmtNodeBuilder()"}, + {"_ZN5clang4ento15StmtNodeBuilder22GenerateAutoTransitionEPNS0_12ExplodedNodeE", "clang::ento::StmtNodeBuilder::GenerateAutoTransition(clang::ento::ExplodedNode*)"}, + {"_ZN5clang4ento15StmtNodeBuilder8MakeNodeERNS0_15ExplodedNodeSetEPKNS_4StmtEPNS0_12ExplodedNodeEPKNS0_7GRStateENS_12ProgramPoint4KindE", "clang::ento::StmtNodeBuilder::MakeNode(clang::ento::ExplodedNodeSet&, clang::Stmt const*, clang::ento::ExplodedNode*, clang::ento::GRState const*, clang::ProgramPoint::Kind)"}, + {"_ZN5clang4ento15StmtNodeBuilder20generateNodeInternalEPKNS_4StmtEPKNS0_7GRStateEPNS0_12ExplodedNodeENS_12ProgramPoint4KindEPKv", "clang::ento::StmtNodeBuilder::generateNodeInternal(clang::Stmt const*, clang::ento::GRState const*, clang::ento::ExplodedNode*, clang::ProgramPoint::Kind, void const*)"}, + {"_ZN5clang4ento15StmtNodeBuilder20generateNodeInternalERKNS_12ProgramPointEPKNS0_7GRStateEPNS0_12ExplodedNodeE", "clang::ento::StmtNodeBuilder::generateNodeInternal(clang::ProgramPoint const&, clang::ento::GRState const*, clang::ento::ExplodedNode*)"}, + {"_ZN5clang4ento17BranchNodeBuilder12generateNodeEPKNS0_7GRStateEb", "clang::ento::BranchNodeBuilder::generateNode(clang::ento::GRState const*, bool)"}, + {"_ZN5clang4ento17BranchNodeBuilderD2Ev", "clang::ento::BranchNodeBuilder::~BranchNodeBuilder()"}, + {"_ZN5clang4ento23IndirectGotoNodeBuilder12generateNodeERKNS1_8iteratorEPKNS0_7GRStateEb", "clang::ento::IndirectGotoNodeBuilder::generateNode(clang::ento::IndirectGotoNodeBuilder::iterator const&, clang::ento::GRState const*, bool)"}, + {"_ZN5clang4ento17SwitchNodeBuilder20generateCaseStmtNodeERKNS1_8iteratorEPKNS0_7GRStateE", "clang::ento::SwitchNodeBuilder::generateCaseStmtNode(clang::ento::SwitchNodeBuilder::iterator const&, clang::ento::GRState const*)"}, + {"_ZN5clang4ento17SwitchNodeBuilder23generateDefaultCaseNodeEPKNS0_7GRStateEb", "clang::ento::SwitchNodeBuilder::generateDefaultCaseNode(clang::ento::GRState const*, bool)"}, + {"_ZN5clang4ento24EndOfFunctionNodeBuilderD2Ev", "clang::ento::EndOfFunctionNodeBuilder::~EndOfFunctionNodeBuilder()"}, + {"_ZN5clang4ento24EndOfFunctionNodeBuilder20GenerateCallExitNodeEPKNS0_7GRStateE", "clang::ento::EndOfFunctionNodeBuilder::GenerateCallExitNode(clang::ento::GRState const*)"}, + {"_ZN5clang4ento24EndOfFunctionNodeBuilder12generateNodeEPKNS0_7GRStateEPKvPNS0_12ExplodedNodeE", "clang::ento::EndOfFunctionNodeBuilder::generateNode(clang::ento::GRState const*, void const*, clang::ento::ExplodedNode*)"}, + {"_ZN5clang4ento20CallEnterNodeBuilder12generateNodeEPKNS0_7GRStateE", "clang::ento::CallEnterNodeBuilder::generateNode(clang::ento::GRState const*)"}, + {"_ZN5clang4ento19CallExitNodeBuilder12generateNodeEPKNS0_7GRStateE", "clang::ento::CallExitNodeBuilder::generateNode(clang::ento::GRState const*)"}, + {"_ZN12_GLOBAL__N_119BFSBlockDFSContentsD1Ev", "(anonymous namespace)::BFSBlockDFSContents::~BFSBlockDFSContents()"}, + {"_ZN12_GLOBAL__N_119BFSBlockDFSContentsD0Ev", "(anonymous namespace)::BFSBlockDFSContents::~BFSBlockDFSContents()"}, + {"_ZNK12_GLOBAL__N_119BFSBlockDFSContents7hasWorkEv", "(anonymous namespace)::BFSBlockDFSContents::hasWork() const"}, + {"_ZN12_GLOBAL__N_119BFSBlockDFSContents7enqueueERKN5clang4ento12WorkListUnitE", "(anonymous namespace)::BFSBlockDFSContents::enqueue(clang::ento::WorkListUnit const&)"}, + {"_ZN12_GLOBAL__N_119BFSBlockDFSContents7dequeueEv", "(anonymous namespace)::BFSBlockDFSContents::dequeue()"}, + {"_ZN12_GLOBAL__N_119BFSBlockDFSContents20visitItemsInWorkListERN5clang4ento8WorkList7VisitorE", "(anonymous namespace)::BFSBlockDFSContents::visitItemsInWorkList(clang::ento::WorkList::Visitor&)"}, + {"_ZN12_GLOBAL__N_13BFSD1Ev", "(anonymous namespace)::BFS::~BFS()"}, + {"_ZN12_GLOBAL__N_13BFSD0Ev", "(anonymous namespace)::BFS::~BFS()"}, + {"_ZNK12_GLOBAL__N_13BFS7hasWorkEv", "(anonymous namespace)::BFS::hasWork() const"}, + {"_ZN12_GLOBAL__N_13BFS7enqueueERKN5clang4ento12WorkListUnitE", "(anonymous namespace)::BFS::enqueue(clang::ento::WorkListUnit const&)"}, + {"_ZN12_GLOBAL__N_13BFS7dequeueEv", "(anonymous namespace)::BFS::dequeue()"}, + {"_ZN12_GLOBAL__N_13BFS20visitItemsInWorkListERN5clang4ento8WorkList7VisitorE", "(anonymous namespace)::BFS::visitItemsInWorkList(clang::ento::WorkList::Visitor&)"}, + {"_ZN12_GLOBAL__N_13DFSD1Ev", "(anonymous namespace)::DFS::~DFS()"}, + {"_ZN12_GLOBAL__N_13DFSD0Ev", "(anonymous namespace)::DFS::~DFS()"}, + {"_ZNK12_GLOBAL__N_13DFS7hasWorkEv", "(anonymous namespace)::DFS::hasWork() const"}, + {"_ZN12_GLOBAL__N_13DFS7enqueueERKN5clang4ento12WorkListUnitE", "(anonymous namespace)::DFS::enqueue(clang::ento::WorkListUnit const&)"}, + {"_ZN12_GLOBAL__N_13DFS7dequeueEv", "(anonymous namespace)::DFS::dequeue()"}, + {"_ZN12_GLOBAL__N_13DFS20visitItemsInWorkListERN5clang4ento8WorkList7VisitorE", "(anonymous namespace)::DFS::visitItemsInWorkList(clang::ento::WorkList::Visitor&)"}, + {"_ZNSt6vectorISt4pairIN5clang9BlockEdgeEPKNS1_4ento12ExplodedNodeEESaIS7_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS7_S9_EERKS7_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang4ento12WorkListUnitELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZNSt5dequeIN5clang4ento12WorkListUnitESaIS2_EE17_M_reallocate_mapEmb", "std::deque>::_M_reallocate_map(unsigned long, bool)"}, + {"_ZNSt11_Deque_baseIN5clang4ento12WorkListUnitESaIS2_EE17_M_initialize_mapEm", "std::_Deque_base>::_M_initialize_map(unsigned long)"}, + {"_ZNK5clang4ento11Environment10lookupExprEPKNS_4StmtE", "clang::ento::Environment::lookupExpr(clang::Stmt const*) const"}, + {"_ZNK5clang4ento11Environment7getSValEPKNS_4StmtERNS0_11SValBuilderE", "clang::ento::Environment::getSVal(clang::Stmt const*, clang::ento::SValBuilder&) const"}, + {"_ZN5clang4ento18EnvironmentManager8bindExprENS0_11EnvironmentEPKNS_4StmtENS0_4SValEb", "clang::ento::EnvironmentManager::bindExpr(clang::ento::Environment, clang::Stmt const*, clang::ento::SVal, bool)"}, + + // {"_ZN5clang4ento18EnvironmentManager19bindExprAndLocationENS0_11EnvironmentEPKNS_4StmtENS0_4SValES6_", + // "clang::ento::EnvironmentManager::bindExprAndLocation(clang::ento::Environment, clang::Stmt const*, clang::ento::SVal, clang::ento::SVal)"}, + // got error + + {"_ZN5clang4ento18EnvironmentManager18removeDeadBindingsENS0_11EnvironmentERNS0_12SymbolReaperEPKNS0_7GRStateERN4llvm15SmallVectorImplIPKNS0_9MemRegionEEE", "clang::ento::EnvironmentManager::removeDeadBindings(clang::ento::Environment, clang::ento::SymbolReaper&, clang::ento::GRState const*, llvm::SmallVectorImpl&)"}, + {"_ZN12_GLOBAL__N_116MarkLiveCallbackD1Ev", "(anonymous namespace)::MarkLiveCallback::~MarkLiveCallback()"}, + {"_ZN12_GLOBAL__N_116MarkLiveCallback11VisitSymbolEPKN5clang4ento10SymbolDataE", "(anonymous namespace)::MarkLiveCallback::VisitSymbol(clang::ento::SymbolData const*)"}, + {"_ZN12_GLOBAL__N_116MarkLiveCallbackD0Ev", "(anonymous namespace)::MarkLiveCallback::~MarkLiveCallback()"}, + {"_ZN4llvm23SmallVectorTemplateBaseISt4pairIPKN5clang4StmtENS2_4ento4SValEELb0EE4growEm", "llvm::SmallVectorTemplateBase, false>::grow(unsigned long)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4StmtENS2_4ento4SValEEEE3addEPNS_11ImutAVLTreeIS8_EERKSt4pairIS5_S7_E", "llvm::ImutAVLFactory>::add(llvm::ImutAVLTree>*, std::pair const&)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4StmtENS2_4ento4SValEEEE16getCanonicalTreeEPNS_11ImutAVLTreeIS8_EE", "llvm::ImutAVLFactory>::getCanonicalTree(llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4StmtENS2_4ento4SValEEEE22compareTreeWithSectionEPNS_11ImutAVLTreeIS8_EERNS_26ImutAVLTreeInOrderIteratorIS8_EESF_", "llvm::ImutAVLFactory>::compareTreeWithSection(llvm::ImutAVLTree>*, llvm::ImutAVLTreeInOrderIterator>&, llvm::ImutAVLTreeInOrderIterator>&)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4StmtENS2_4ento4SValEEEE12add_internalERKSt4pairIS5_S7_EPNS_11ImutAVLTreeIS8_EE", "llvm::ImutAVLFactory>::add_internal(std::pair const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4StmtENS2_4ento4SValEEEE13markImmutableEPNS_11ImutAVLTreeIS8_EE", "llvm::ImutAVLFactory>::markImmutable(llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4StmtENS2_4ento4SValEEEE10createNodeEPNS_11ImutAVLTreeIS8_EERKSt4pairIS5_S7_ESC_", "llvm::ImutAVLFactory>::createNode(llvm::ImutAVLTree>*, std::pair const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4StmtENS2_4ento4SValEEEE11balanceTreeEPNS_11ImutAVLTreeIS8_EERKSt4pairIS5_S7_ESC_", "llvm::ImutAVLFactory>::balanceTree(llvm::ImutAVLTree>*, std::pair const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4StmtENS2_4ento4SValEEEE6removeEPNS_11ImutAVLTreeIS8_EERKS5_", "llvm::ImutAVLFactory>::remove(llvm::ImutAVLTree>*, clang::Stmt const* const&)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4StmtENS2_4ento4SValEEEE15remove_internalERKS5_PNS_11ImutAVLTreeIS8_EE", "llvm::ImutAVLFactory>::remove_internal(clang::Stmt const* const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4StmtENS2_4ento4SValEEEE16removeMinBindingEPNS_11ImutAVLTreeIS8_EERSC_", "llvm::ImutAVLFactory>::removeMinBinding(llvm::ImutAVLTree>*, llvm::ImutAVLTree>*&)"}, + {"_ZN5clang4ento12ExplodedNode7AuditorD0Ev", "clang::ento::ExplodedNode::Auditor::~Auditor()"}, + {"_ZN5clang4ento12ExplodedNode7AuditorD1Ev", "clang::ento::ExplodedNode::Auditor::~Auditor()"}, + {"_ZN5clang4ento12ExplodedNode7AuditorD2Ev", "clang::ento::ExplodedNode::Auditor::~Auditor()"}, + {"_ZN5clang4ento12ExplodedNode10SetAuditorEPNS1_7AuditorE", "clang::ento::ExplodedNode::SetAuditor(clang::ento::ExplodedNode::Auditor*)"}, + {"_ZN5clang4ento13ExplodedGraphD1Ev", "clang::ento::ExplodedGraph::~ExplodedGraph()"}, + {"_ZN5clang4ento13ExplodedGraphD2Ev", "clang::ento::ExplodedGraph::~ExplodedGraph()"}, + {"_ZN5clang4ento13ExplodedGraph29reclaimRecentlyAllocatedNodesEv", "clang::ento::ExplodedGraph::reclaimRecentlyAllocatedNodes()"}, + {"_ZN5clang4ento12ExplodedNode14addPredecessorEPS1_RNS0_13ExplodedGraphE", "clang::ento::ExplodedNode::addPredecessor(clang::ento::ExplodedNode*, clang::ento::ExplodedGraph&)"}, + {"_ZN5clang4ento12ExplodedNode9NodeGroup7addNodeEPS1_RNS0_13ExplodedGraphE", "clang::ento::ExplodedNode::NodeGroup::addNode(clang::ento::ExplodedNode*, clang::ento::ExplodedGraph&)"}, + {"_ZN5clang4ento12ExplodedNode9NodeGroup11replaceNodeEPS1_", "clang::ento::ExplodedNode::NodeGroup::replaceNode(clang::ento::ExplodedNode*)"}, + {"_ZNK5clang4ento12ExplodedNode9NodeGroup4sizeEv", "clang::ento::ExplodedNode::NodeGroup::size() const"}, + {"_ZNK5clang4ento12ExplodedNode9NodeGroup5beginEv", "clang::ento::ExplodedNode::NodeGroup::begin() const"}, + {"_ZNK5clang4ento12ExplodedNode9NodeGroup3endEv", "clang::ento::ExplodedNode::NodeGroup::end() const"}, + {"_ZN5clang4ento13ExplodedGraph7getNodeERKNS_12ProgramPointEPKNS0_7GRStateEPb", "clang::ento::ExplodedGraph::getNode(clang::ProgramPoint const&, clang::ento::GRState const*, bool*)"}, + {"_ZNK5clang4ento13ExplodedGraph4TrimEPKPKNS0_12ExplodedNodeES6_PN4llvm8DenseMapIPKvSA_NS7_12DenseMapInfoISA_EESC_EE", "clang::ento::ExplodedGraph::Trim(clang::ento::ExplodedNode const* const*, clang::ento::ExplodedNode const* const*, llvm::DenseMap, llvm::DenseMapInfo>*) const"}, + {"_ZNK5clang4ento13ExplodedGraph12TrimInternalEPKPKNS0_12ExplodedNodeES6_PNS0_21InterExplodedGraphMapEPN4llvm8DenseMapIPKvSC_NS9_12DenseMapInfoISC_EESE_EE", "clang::ento::ExplodedGraph::TrimInternal(clang::ento::ExplodedNode const* const*, clang::ento::ExplodedNode const* const*, clang::ento::InterExplodedGraphMap*, llvm::DenseMap, llvm::DenseMapInfo>*) const"}, + {"_ZNK5clang4ento21InterExplodedGraphMap13getMappedNodeEPKNS0_12ExplodedNodeE", "clang::ento::InterExplodedGraphMap::getMappedNode(clang::ento::ExplodedNode const*) const"}, + {"_ZN4llvm8DenseMapIPKvS2_NS_12DenseMapInfoIS2_EES4_E16InsertIntoBucketERKS2_S7_PSt4pairIS2_S2_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(void const* const&, void const* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKvS2_NS_12DenseMapInfoIS2_EES4_E4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKN5clang4ento12ExplodedNodeEPS3_NS_12DenseMapInfoIS5_EENS7_IS6_EEE16InsertIntoBucketERKS5_RKS6_PSt4pairIS5_S6_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::ento::ExplodedNode const* const&, clang::ento::ExplodedNode* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang4ento12ExplodedNodeEPS3_NS_12DenseMapInfoIS5_EENS7_IS6_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKN5clang4ento12ExplodedNodeEcNS_12DenseMapInfoIS5_EENS6_IcEEE6insertERKSt4pairIS5_cE", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPKN5clang4ento12ExplodedNodeEcNS_12DenseMapInfoIS5_EENS6_IcEEE16InsertIntoBucketERKS5_RKcPSt4pairIS5_cE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::ento::ExplodedNode const* const&, char const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang4ento12ExplodedNodeEcNS_12DenseMapInfoIS5_EENS6_IcEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNSt6vectorIPN5clang4ento12ExplodedNodeESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, clang::ento::ExplodedNode* const&)"}, + {"_ZNK4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPvS2_EEE7isEqualERKS4_", "llvm::ImutAVLTree>::isEqual(llvm::ImutAVLTree> const&) const"}, + {"_ZN4llvm26ImutAVLTreeGenericIteratorINS_16ImutKeyValueInfoIPvS2_EEEppEv", "llvm::ImutAVLTreeGenericIterator>::operator++()"}, + {"_ZN5clang4ento21InterExplodedGraphMapD1Ev", "clang::ento::InterExplodedGraphMap::~InterExplodedGraphMap()"}, + {"_ZN5clang4ento21InterExplodedGraphMapD0Ev", "clang::ento::InterExplodedGraphMap::~InterExplodedGraphMap()"}, + {"_ZN5clang4ento22CreateFlatStoreManagerERNS0_14GRStateManagerE", "clang::ento::CreateFlatStoreManager(clang::ento::GRStateManager&)"}, + {"_ZN12_GLOBAL__N_116FlatStoreManagerD1Ev", "(anonymous namespace)::FlatStoreManager::~FlatStoreManager()"}, + {"_ZN12_GLOBAL__N_116FlatStoreManagerD0Ev", "(anonymous namespace)::FlatStoreManager::~FlatStoreManager()"}, + {"_ZN12_GLOBAL__N_116FlatStoreManager8RetrieveEPKvN5clang4ento3LocENS3_8QualTypeE", "(anonymous namespace)::FlatStoreManager::Retrieve(void const*, clang::ento::Loc, clang::QualType)"}, + {"_ZN12_GLOBAL__N_116FlatStoreManager4BindEPKvN5clang4ento3LocENS4_4SValE", "(anonymous namespace)::FlatStoreManager::Bind(void const*, clang::ento::Loc, clang::ento::SVal)"}, + {"_ZN12_GLOBAL__N_116FlatStoreManager6RemoveEPKvN5clang4ento3LocE", "(anonymous namespace)::FlatStoreManager::Remove(void const*, clang::ento::Loc)"}, + {"_ZN12_GLOBAL__N_116FlatStoreManager19BindCompoundLiteralEPKvPKN5clang19CompoundLiteralExprEPKNS3_15LocationContextENS3_4ento4SValE", "(anonymous namespace)::FlatStoreManager::BindCompoundLiteral(void const*, clang::CompoundLiteralExpr const*, clang::LocationContext const*, clang::ento::SVal)"}, + {"_ZN12_GLOBAL__N_116FlatStoreManager15getInitialStoreEPKN5clang15LocationContextE", "(anonymous namespace)::FlatStoreManager::getInitialStore(clang::LocationContext const*)"}, + {"_ZN12_GLOBAL__N_116FlatStoreManager15getSubRegionMapEPKv", "(anonymous namespace)::FlatStoreManager::getSubRegionMap(void const*)"}, + {"_ZN12_GLOBAL__N_116FlatStoreManager14ArrayToPointerEN5clang4ento3LocE", "(anonymous namespace)::FlatStoreManager::ArrayToPointer(clang::ento::Loc)"}, + {"_ZN12_GLOBAL__N_116FlatStoreManager18removeDeadBindingsEPKvPKN5clang17StackFrameContextERNS3_4ento12SymbolReaperERN4llvm15SmallVectorImplIPKNS7_9MemRegionEEE", "(anonymous namespace)::FlatStoreManager::removeDeadBindings(void const*, clang::StackFrameContext const*, clang::ento::SymbolReaper&, llvm::SmallVectorImpl&)"}, + {"_ZN12_GLOBAL__N_116FlatStoreManager8BindDeclEPKvPKN5clang4ento9VarRegionENS4_4SValE", "(anonymous namespace)::FlatStoreManager::BindDecl(void const*, clang::ento::VarRegion const*, clang::ento::SVal)"}, + {"_ZN12_GLOBAL__N_116FlatStoreManager18BindDeclWithNoInitEPKvPKN5clang4ento9VarRegionE", "(anonymous namespace)::FlatStoreManager::BindDeclWithNoInit(void const*, clang::ento::VarRegion const*)"}, + + // {"_ZN12_GLOBAL__N_116FlatStoreManager17InvalidateRegionsEPKvPKPKN5clang4ento9MemRegionES9_PKNS3_4ExprEjPN4llvm8DenseSetIPKNS4_10SymbolDataENSD_12DenseMapInfoISH_EEEEbPNSD_11SmallVectorIS7_Lj8EEE", + // "(anonymous namespace)::FlatStoreManager::InvalidateRegions(void const*, clang::ento::MemRegion const* const*, clang::ento::MemRegion const* const*, clang::Expr const*, unsigned int, llvm::DenseSet>*, bool, llvm::SmallVector*)"}, + // "(anonymous namespace)::FlatStoreManager::InvalidateRegions(void const*, clang::ento::MemRegion const* const*, clang::ento::MemRegion const* const*, clang::Expr const*, unsigned int, llvm::DenseSet>*, bool, llvm::SmallVector*)" was returned + + {"_ZN12_GLOBAL__N_116FlatStoreManager5printEPKvRN4llvm11raw_ostreamEPKcS7_", "(anonymous namespace)::FlatStoreManager::print(void const*, llvm::raw_ostream&, char const*, char const*)"}, + {"_ZN12_GLOBAL__N_116FlatStoreManager12iterBindingsEPKvRN5clang4ento12StoreManager15BindingsHandlerE", "(anonymous namespace)::FlatStoreManager::iterBindings(void const*, clang::ento::StoreManager::BindingsHandler&)"}, + {"_ZN12_GLOBAL__N_116FlatStoreManager16RegionToIntervalEPKN5clang4ento9MemRegionE", "(anonymous namespace)::FlatStoreManager::RegionToInterval(clang::ento::MemRegion const*)"}, + {"_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento9MemRegionENS_20ImmutableIntervalMapINS3_4SValEEEEEE7destroyEv", "llvm::ImutAVLTree>>::destroy()"}, + {"_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento9MemRegionENS_20ImmutableIntervalMapINS3_4SValEEEEEE13computeDigestEv", "llvm::ImutAVLTree>>::computeDigest()"}, + {"_ZNSt6vectorIPN4llvm11ImutAVLTreeINS0_16ImutKeyValueInfoIPKN5clang4ento9MemRegionENS0_20ImmutableIntervalMapINS4_4SValEEEEEEESaISD_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPSD_SF_EERKSD_", "std::vector>>*, std::allocator>>*>>::_M_insert_aux(__gnu_cxx::__normal_iterator>>**, std::vector>>*, std::allocator>>*>>>, llvm::ImutAVLTree>>* const&)"}, + {"_ZN4llvm8DenseMapIjPNS_11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento9MemRegionENS_20ImmutableIntervalMapINS4_4SValEEEEEEENS_12DenseMapInfoIjEENSE_ISD_EEE16InsertIntoBucketERKjRKSD_PSt4pairIjSD_E", "llvm::DenseMap>>*, llvm::DenseMapInfo, llvm::DenseMapInfo>>*>>::InsertIntoBucket(unsigned int const&, llvm::ImutAVLTree>>* const&, std::pair>>*>*)"}, + {"_ZN4llvm8DenseMapIjPNS_11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento9MemRegionENS_20ImmutableIntervalMapINS4_4SValEEEEEEENS_12DenseMapInfoIjEENSE_ISD_EEE4growEj", "llvm::DenseMap>>*, llvm::DenseMapInfo, llvm::DenseMapInfo>>*>>::grow(unsigned int)"}, + {"_ZN4llvm12ImmutableMapIPKN5clang4ento9MemRegionENS_20ImmutableIntervalMapINS2_4SValEEENS_16ImutKeyValueInfoIS5_S8_EEE7Factory3addESB_RKS5_RKS8_", "llvm::ImmutableMap, llvm::ImutKeyValueInfo>>::Factory::add(llvm::ImmutableMap, llvm::ImutKeyValueInfo>>, clang::ento::MemRegion const* const&, llvm::ImmutableIntervalMap const&)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento9MemRegionENS_20ImmutableIntervalMapINS3_4SValEEEEEE3addEPNS_11ImutAVLTreeISA_EERKSt4pairIS6_S9_E", "llvm::ImutAVLFactory>>::add(llvm::ImutAVLTree>>*, std::pair> const&)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento9MemRegionENS_20ImmutableIntervalMapINS3_4SValEEEEEE16getCanonicalTreeEPNS_11ImutAVLTreeISA_EE", "llvm::ImutAVLFactory>>::getCanonicalTree(llvm::ImutAVLTree>>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento9MemRegionENS_20ImmutableIntervalMapINS3_4SValEEEEEE22compareTreeWithSectionEPNS_11ImutAVLTreeISA_EERNS_26ImutAVLTreeInOrderIteratorISA_EESH_", "llvm::ImutAVLFactory>>::compareTreeWithSection(llvm::ImutAVLTree>>*, llvm::ImutAVLTreeInOrderIterator>>&, llvm::ImutAVLTreeInOrderIterator>>&)"}, + {"_ZN4llvm26ImutAVLTreeGenericIteratorINS_16ImutKeyValueInfoIPKN5clang4ento9MemRegionENS_20ImmutableIntervalMapINS3_4SValEEEEEEppEv", "llvm::ImutAVLTreeGenericIterator>>::operator++()"}, + {"_ZNK4llvm11ImutAVLTreeINS_16ImutIntervalInfoIN5clang4ento4SValEEEE7isEqualERKS6_", "llvm::ImutAVLTree>::isEqual(llvm::ImutAVLTree> const&) const"}, + {"_ZN4llvm26ImutAVLTreeGenericIteratorINS_16ImutIntervalInfoIN5clang4ento4SValEEEEppEv", "llvm::ImutAVLTreeGenericIterator>::operator++()"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento9MemRegionENS_20ImmutableIntervalMapINS3_4SValEEEEEE12add_internalERKSt4pairIS6_S9_EPNS_11ImutAVLTreeISA_EE", "llvm::ImutAVLFactory>>::add_internal(std::pair> const&, llvm::ImutAVLTree>>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento9MemRegionENS_20ImmutableIntervalMapINS3_4SValEEEEEE13markImmutableEPNS_11ImutAVLTreeISA_EE", "llvm::ImutAVLFactory>>::markImmutable(llvm::ImutAVLTree>>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento9MemRegionENS_20ImmutableIntervalMapINS3_4SValEEEEEE10createNodeEPNS_11ImutAVLTreeISA_EERKSt4pairIS6_S9_ESE_", "llvm::ImutAVLFactory>>::createNode(llvm::ImutAVLTree>>*, std::pair> const&, llvm::ImutAVLTree>>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento9MemRegionENS_20ImmutableIntervalMapINS3_4SValEEEEEE11balanceTreeEPNS_11ImutAVLTreeISA_EERKSt4pairIS6_S9_ESE_", "llvm::ImutAVLFactory>>::balanceTree(llvm::ImutAVLTree>>*, std::pair> const&, llvm::ImutAVLTree>>*)"}, + {"_ZN4llvm11ImutAVLTreeINS_16ImutIntervalInfoIN5clang4ento4SValEEEE7destroyEv", "llvm::ImutAVLTree>::destroy()"}, + {"_ZNSt6vectorIPN4llvm11ImutAVLTreeINS0_16ImutIntervalInfoIN5clang4ento4SValEEEEESaIS8_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS8_SA_EERKS8_", "std::vector>*, std::allocator>*>>::_M_insert_aux(__gnu_cxx::__normal_iterator>**, std::vector>*, std::allocator>*>>>, llvm::ImutAVLTree>* const&)"}, + {"_ZN4llvm11ImutAVLTreeINS_16ImutIntervalInfoIN5clang4ento4SValEEEE13computeDigestEPS6_S7_RKSt4pairINS_8IntervalES4_E", "llvm::ImutAVLTree>::computeDigest(llvm::ImutAVLTree>*, llvm::ImutAVLTree>*, std::pair const&)"}, + {"_ZN4llvm8DenseMapIjPNS_11ImutAVLTreeINS_16ImutIntervalInfoIN5clang4ento4SValEEEEENS_12DenseMapInfoIjEENS9_IS8_EEE16InsertIntoBucketERKjRKS8_PSt4pairIjS8_E", "llvm::DenseMap>*, llvm::DenseMapInfo, llvm::DenseMapInfo>*>>::InsertIntoBucket(unsigned int const&, llvm::ImutAVLTree>* const&, std::pair>*>*)"}, + {"_ZN4llvm8DenseMapIjPNS_11ImutAVLTreeINS_16ImutIntervalInfoIN5clang4ento4SValEEEEENS_12DenseMapInfoIjEENS9_IS8_EEE4growEj", "llvm::DenseMap>*, llvm::DenseMapInfo, llvm::DenseMapInfo>*>>::grow(unsigned int)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutIntervalInfoIN5clang4ento4SValEEEE3addEPNS_11ImutAVLTreeIS5_EERKSt4pairINS_8IntervalES4_E", "llvm::ImutAVLFactory>::add(llvm::ImutAVLTree>*, std::pair const&)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutIntervalInfoIN5clang4ento4SValEEEE16getCanonicalTreeEPNS_11ImutAVLTreeIS5_EE", "llvm::ImutAVLFactory>::getCanonicalTree(llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutIntervalInfoIN5clang4ento4SValEEEE22compareTreeWithSectionEPNS_11ImutAVLTreeIS5_EERNS_26ImutAVLTreeInOrderIteratorIS5_EESC_", "llvm::ImutAVLFactory>::compareTreeWithSection(llvm::ImutAVLTree>*, llvm::ImutAVLTreeInOrderIterator>&, llvm::ImutAVLTreeInOrderIterator>&)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutIntervalInfoIN5clang4ento4SValEEEE12add_internalERKSt4pairINS_8IntervalES4_EPNS_11ImutAVLTreeIS5_EE", "llvm::ImutAVLFactory>::add_internal(std::pair const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutIntervalInfoIN5clang4ento4SValEEEE13markImmutableEPNS_11ImutAVLTreeIS5_EE", "llvm::ImutAVLFactory>::markImmutable(llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutIntervalInfoIN5clang4ento4SValEEEE10createNodeEPNS_11ImutAVLTreeIS5_EERKSt4pairINS_8IntervalES4_ES9_", "llvm::ImutAVLFactory>::createNode(llvm::ImutAVLTree>*, std::pair const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutIntervalInfoIN5clang4ento4SValEEEE11balanceTreeEPNS_11ImutAVLTreeIS5_EERKSt4pairINS_8IntervalES4_ES9_", "llvm::ImutAVLFactory>::balanceTree(llvm::ImutAVLTree>*, std::pair const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento9MemRegionENS_20ImmutableIntervalMapINS3_4SValEEEEEED2Ev", "llvm::ImutAVLFactory>>::~ImutAVLFactory()"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutIntervalInfoIN5clang4ento4SValEEEED2Ev", "llvm::ImutAVLFactory>::~ImutAVLFactory()"}, + {"_ZN5clang4ento17ConstraintManagerD0Ev", "clang::ento::ConstraintManager::~ConstraintManager()"}, + {"_ZN5clang4ento17ConstraintManagerD1Ev", "clang::ento::ConstraintManager::~ConstraintManager()"}, + {"_ZN5clang4ento17ConstraintManagerD2Ev", "clang::ento::ConstraintManager::~ConstraintManager()"}, + {"_ZN5clang4ento14GRStateManagerD1Ev", "clang::ento::GRStateManager::~GRStateManager()"}, + {"_ZN5clang4ento14GRStateManagerD2Ev", "clang::ento::GRStateManager::~GRStateManager()"}, + {"_ZN5clang4ento14GRStateManager18removeDeadBindingsEPKNS0_7GRStateEPKNS_17StackFrameContextERNS0_12SymbolReaperE", "clang::ento::GRStateManager::removeDeadBindings(clang::ento::GRState const*, clang::StackFrameContext const*, clang::ento::SymbolReaper&)"}, + {"_ZN5clang4ento14GRStateManager18getPersistentStateERNS0_7GRStateE", "clang::ento::GRStateManager::getPersistentState(clang::ento::GRState&)"}, + {"_ZN5clang4ento14GRStateManager12MarshalStateEPKNS0_7GRStateEPKNS_17StackFrameContextE", "clang::ento::GRStateManager::MarshalState(clang::ento::GRState const*, clang::StackFrameContext const*)"}, + {"_ZNK5clang4ento7GRState19bindCompoundLiteralEPKNS_19CompoundLiteralExprEPKNS_15LocationContextENS0_4SValE", "clang::ento::GRState::bindCompoundLiteral(clang::CompoundLiteralExpr const*, clang::LocationContext const*, clang::ento::SVal) const"}, + {"_ZNK5clang4ento7GRState13makeWithStoreEPKv", "clang::ento::GRState::makeWithStore(void const*) const"}, + {"_ZNK5clang4ento7GRState8bindDeclEPKNS0_9VarRegionENS0_4SValE", "clang::ento::GRState::bindDecl(clang::ento::VarRegion const*, clang::ento::SVal) const"}, + {"_ZNK5clang4ento7GRState18bindDeclWithNoInitEPKNS0_9VarRegionE", "clang::ento::GRState::bindDeclWithNoInit(clang::ento::VarRegion const*) const"}, + {"_ZNK5clang4ento7GRState7bindLocENS0_3LocENS0_4SValE", "clang::ento::GRState::bindLoc(clang::ento::Loc, clang::ento::SVal) const"}, + {"_ZNK5clang4ento7GRState11bindDefaultENS0_4SValES2_", "clang::ento::GRState::bindDefault(clang::ento::SVal, clang::ento::SVal) const"}, + {"_ZNK5clang4ento7GRState17InvalidateRegionsEPKPKNS0_9MemRegionES6_PKNS_4ExprEjPN4llvm8DenseSetIPKNS0_10SymbolDataENSA_12DenseMapInfoISE_EEEEb", "clang::ento::GRState::InvalidateRegions(clang::ento::MemRegion const* const*, clang::ento::MemRegion const* const*, clang::Expr const*, unsigned int, llvm::DenseSet>*, bool) const"}, + {"_ZNK5clang4ento7GRState9unbindLocENS0_3LocE", "clang::ento::GRState::unbindLoc(clang::ento::Loc) const"}, + {"_ZNK5clang4ento7GRState15enterStackFrameEPKNS_17StackFrameContextE", "clang::ento::GRState::enterStackFrame(clang::StackFrameContext const*) const"}, + {"_ZNK5clang4ento7GRState20getSValAsScalarOrLocEPKNS0_9MemRegionE", "clang::ento::GRState::getSValAsScalarOrLoc(clang::ento::MemRegion const*) const"}, + {"_ZNK5clang4ento7GRState7getSValENS0_3LocENS_8QualTypeE", "clang::ento::GRState::getSVal(clang::ento::Loc, clang::QualType) const"}, + {"_ZNK5clang4ento7GRState8BindExprEPKNS_4StmtENS0_4SValEb", "clang::ento::GRState::BindExpr(clang::Stmt const*, clang::ento::SVal, bool) const"}, + {"_ZNK5clang4ento7GRState19bindExprAndLocationEPKNS_4StmtENS0_4SValES5_", "clang::ento::GRState::bindExprAndLocation(clang::Stmt const*, clang::ento::SVal, clang::ento::SVal) const"}, + {"_ZNK5clang4ento7GRState13assumeInBoundENS0_20DefinedOrUnknownSValES2_b", "clang::ento::GRState::assumeInBound(clang::ento::DefinedOrUnknownSVal, clang::ento::DefinedOrUnknownSVal, bool) const"}, + {"_ZN5clang4ento14GRStateManager15getInitialStateEPKNS_15LocationContextE", "clang::ento::GRStateManager::getInitialState(clang::LocationContext const*)"}, + {"_ZN5clang4ento14GRStateManager19recycleUnusedStatesEv", "clang::ento::GRStateManager::recycleUnusedStates()"}, + {"_ZNK5clang4ento7GRState5printERN4llvm11raw_ostreamERNS_3CFGEPKcS8_", "clang::ento::GRState::print(llvm::raw_ostream&, clang::CFG&, char const*, char const*) const"}, + {"_ZNK5clang4ento7GRState8printDOTERN4llvm11raw_ostreamERNS_3CFGE", "clang::ento::GRState::printDOT(llvm::raw_ostream&, clang::CFG&) const"}, + {"_ZNK5clang4ento7GRState11printStdErrERNS_3CFGE", "clang::ento::GRState::printStdErr(clang::CFG&) const"}, + {"_ZNK5clang4ento7GRState7FindGDMEPv", "clang::ento::GRState::FindGDM(void*) const"}, + {"_ZN5clang4ento14GRStateManager14FindGDMContextEPvPFS2_RN4llvm16BumpPtrAllocatorEEPFvS2_E", "clang::ento::GRStateManager::FindGDMContext(void*, void* (*)(llvm::BumpPtrAllocator&), void (*)(void*))"}, + + // {"_ZN5clang4ento14GRStateManager6addGDMEPKNS0_7GRStateEPvS5_", + // "clang::ento::GRStateManager::addGDM(clang::ento::GRState const*, void*, void*)"}, + // got error + + {"_ZN5clang4ento14GRStateManager9removeGDMEPKNS0_7GRStateEPv", "clang::ento::GRStateManager::removeGDM(clang::ento::GRState const*, void*)"}, + {"_ZNK5clang4ento7GRState20scanReachableSymbolsENS0_4SValERNS0_13SymbolVisitorE", "clang::ento::GRState::scanReachableSymbols(clang::ento::SVal, clang::ento::SymbolVisitor&) const"}, + {"_ZN12_GLOBAL__N_120ScanReachableSymbols4scanEN5clang4ento4SValE", "(anonymous namespace)::ScanReachableSymbols::scan(clang::ento::SVal)"}, + {"_ZN12_GLOBAL__N_120ScanReachableSymbolsD1Ev", "(anonymous namespace)::ScanReachableSymbols::~ScanReachableSymbols()"}, + {"_ZNK5clang4ento7GRState20scanReachableSymbolsEPKNS0_4SValES4_RNS0_13SymbolVisitorE", "clang::ento::GRState::scanReachableSymbols(clang::ento::SVal const*, clang::ento::SVal const*, clang::ento::SymbolVisitor&) const"}, + {"_ZNK5clang4ento7GRState20scanReachableSymbolsEPKPKNS0_9MemRegionES6_RNS0_13SymbolVisitorE", "clang::ento::GRState::scanReachableSymbols(clang::ento::MemRegion const* const*, clang::ento::MemRegion const* const*, clang::ento::SymbolVisitor&) const"}, + {"_ZN12_GLOBAL__N_120ScanReachableSymbols4scanEPKN5clang4ento9MemRegionE", "(anonymous namespace)::ScanReachableSymbols::scan(clang::ento::MemRegion const*)"}, + {"_ZN12_GLOBAL__N_120ScanReachableSymbolsD0Ev", "(anonymous namespace)::ScanReachableSymbols::~ScanReachableSymbols()"}, + {"_ZN12_GLOBAL__N_120ScanReachableSymbols5VisitEPKN5clang4ento9MemRegionES5_", "(anonymous namespace)::ScanReachableSymbols::Visit(clang::ento::MemRegion const*, clang::ento::MemRegion const*)"}, + {"_ZN5clang4ento17BasicValueFactory7ConvertENS_8QualTypeERKN4llvm6APSIntE", "clang::ento::BasicValueFactory::Convert(clang::QualType, llvm::APSInt const&)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPvS2_EEE6removeEPNS_11ImutAVLTreeIS3_EERKS2_", "llvm::ImutAVLFactory>::remove(llvm::ImutAVLTree>*, void* const&)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPvS2_EEE16getCanonicalTreeEPNS_11ImutAVLTreeIS3_EE", "llvm::ImutAVLFactory>::getCanonicalTree(llvm::ImutAVLTree>*)"}, + {"_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPvS2_EEE13computeDigestEv", "llvm::ImutAVLTree>::computeDigest()"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPvS2_EEE22compareTreeWithSectionEPNS_11ImutAVLTreeIS3_EERNS_26ImutAVLTreeInOrderIteratorIS3_EESA_", "llvm::ImutAVLFactory>::compareTreeWithSection(llvm::ImutAVLTree>*, llvm::ImutAVLTreeInOrderIterator>&, llvm::ImutAVLTreeInOrderIterator>&)"}, + {"_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPvS2_EEE7destroyEv", "llvm::ImutAVLTree>::destroy()"}, + {"_ZNSt6vectorIPN4llvm11ImutAVLTreeINS0_16ImutKeyValueInfoIPvS3_EEEESaIS6_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS6_S8_EERKS6_", "std::vector>*, std::allocator>*>>::_M_insert_aux(__gnu_cxx::__normal_iterator>**, std::vector>*, std::allocator>*>>>, llvm::ImutAVLTree>* const&)"}, + {"_ZN4llvm8DenseMapIjPNS_11ImutAVLTreeINS_16ImutKeyValueInfoIPvS3_EEEENS_12DenseMapInfoIjEENS7_IS6_EEE16InsertIntoBucketERKjRKS6_PSt4pairIjS6_E", "llvm::DenseMap>*, llvm::DenseMapInfo, llvm::DenseMapInfo>*>>::InsertIntoBucket(unsigned int const&, llvm::ImutAVLTree>* const&, std::pair>*>*)"}, + {"_ZN4llvm8DenseMapIjPNS_11ImutAVLTreeINS_16ImutKeyValueInfoIPvS3_EEEENS_12DenseMapInfoIjEENS7_IS6_EEE4growEj", "llvm::DenseMap>*, llvm::DenseMapInfo, llvm::DenseMapInfo>*>>::grow(unsigned int)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPvS2_EEE15remove_internalERKS2_PNS_11ImutAVLTreeIS3_EE", "llvm::ImutAVLFactory>::remove_internal(void* const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPvS2_EEE13markImmutableEPNS_11ImutAVLTreeIS3_EE", "llvm::ImutAVLFactory>::markImmutable(llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPvS2_EEE11balanceTreeEPNS_11ImutAVLTreeIS3_EERKSt4pairIS2_S2_ES7_", "llvm::ImutAVLFactory>::balanceTree(llvm::ImutAVLTree>*, std::pair const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPvS2_EEE10createNodeEPNS_11ImutAVLTreeIS3_EERKSt4pairIS2_S2_ES7_", "llvm::ImutAVLFactory>::createNode(llvm::ImutAVLTree>*, std::pair const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPvS2_EEE16removeMinBindingEPNS_11ImutAVLTreeIS3_EERS7_", "llvm::ImutAVLFactory>::removeMinBinding(llvm::ImutAVLTree>*, llvm::ImutAVLTree>*&)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPvS2_EEE3addEPNS_11ImutAVLTreeIS3_EERKSt4pairIS2_S2_E", "llvm::ImutAVLFactory>::add(llvm::ImutAVLTree>*, std::pair const&)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPvS2_EEE12add_internalERKSt4pairIS2_S2_EPNS_11ImutAVLTreeIS3_EE", "llvm::ImutAVLFactory>::add_internal(std::pair const&, llvm::ImutAVLTree>*)"}, + + // {"_ZN4llvm8DenseMapIPvSt4pairIS1_PFvS1_EENS_12DenseMapInfoIS1_EENS6_IS5_EEE16InsertIntoBucketERKS1_RKS5_PS2_IS1_S5_E", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(void* const&, std::pair const&, std::pair>*)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>::InsertIntoBucket(void* const&, llvm::DenseMapInfo const&, std::pair*)" was returned + + + // {"_ZN4llvm8DenseMapIPvSt4pairIS1_PFvS1_EENS_12DenseMapInfoIS1_EENS6_IS5_EEE4growEj", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>::grow(unsigned int)" was returned + + {"_ZN4llvm26ImutAVLTreeGenericIteratorINS_16ImutKeyValueInfoIPKN5clang4StmtENS2_4ento4SValEEEEppEv", "llvm::ImutAVLTreeGenericIterator>::operator++()"}, + {"_ZNSt6vectorIPN5clang4ento7GRStateESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, clang::ento::GRState* const&)"}, + {"_ZN4llvm8DenseMapIPKN5clang4ento9MemRegionEcNS_12DenseMapInfoIS5_EENS6_IcEEE6insertERKSt4pairIS5_cE", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPKN5clang4ento9MemRegionEcNS_12DenseMapInfoIS5_EENS6_IcEEE16InsertIntoBucketERKS5_RKcPSt4pairIS5_cE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::ento::MemRegion const* const&, char const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang4ento9MemRegionEcNS_12DenseMapInfoIS5_EENS6_IcEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang4ento12SubRegionMap7VisitorD1Ev", "clang::ento::SubRegionMap::Visitor::~Visitor()"}, + {"_ZN5clang4ento12SubRegionMap7VisitorD0Ev", "clang::ento::SubRegionMap::Visitor::~Visitor()"}, + {"_ZNK4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4StmtENS2_4ento4SValEEEE7isEqualERKS9_", "llvm::ImutAVLTree>::isEqual(llvm::ImutAVLTree> const&) const"}, + {"_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4StmtENS2_4ento4SValEEEE7destroyEv", "llvm::ImutAVLTree>::destroy()"}, + {"_ZNSt6vectorIPN4llvm11ImutAVLTreeINS0_16ImutKeyValueInfoIPKN5clang4StmtENS3_4ento4SValEEEEESaISB_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPSB_SD_EERKSB_", "std::vector>*, std::allocator>*>>::_M_insert_aux(__gnu_cxx::__normal_iterator>**, std::vector>*, std::allocator>*>>>, llvm::ImutAVLTree>* const&)"}, + {"_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4StmtENS2_4ento4SValEEEE13computeDigestEPS9_SA_RKSt4pairIS5_S7_E", "llvm::ImutAVLTree>::computeDigest(llvm::ImutAVLTree>*, llvm::ImutAVLTree>*, std::pair const&)"}, + {"_ZN4llvm8DenseMapIjPNS_11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4StmtENS3_4ento4SValEEEEENS_12DenseMapInfoIjEENSC_ISB_EEE16InsertIntoBucketERKjRKSB_PSt4pairIjSB_E", "llvm::DenseMap>*, llvm::DenseMapInfo, llvm::DenseMapInfo>*>>::InsertIntoBucket(unsigned int const&, llvm::ImutAVLTree>* const&, std::pair>*>*)"}, + {"_ZN4llvm8DenseMapIjPNS_11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4StmtENS3_4ento4SValEEEEENS_12DenseMapInfoIjEENSC_ISB_EEE4growEj", "llvm::DenseMap>*, llvm::DenseMapInfo, llvm::DenseMapInfo>*>>::grow(unsigned int)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4StmtENS2_4ento4SValEEEED2Ev", "llvm::ImutAVLFactory>::~ImutAVLFactory()"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPvS2_EEED2Ev", "llvm::ImutAVLFactory>::~ImutAVLFactory()"}, + {"_ZN5clang4ento26createHTMLDiagnosticClientERKSsRKNS_12PreprocessorE", "clang::ento::createHTMLDiagnosticClient(std::string const&, clang::Preprocessor const&)"}, + {"_ZN12_GLOBAL__N_115HTMLDiagnosticsD1Ev", "(anonymous namespace)::HTMLDiagnostics::~HTMLDiagnostics()"}, + {"_ZN12_GLOBAL__N_115HTMLDiagnosticsD0Ev", "(anonymous namespace)::HTMLDiagnostics::~HTMLDiagnostics()"}, + {"_ZN12_GLOBAL__N_115HTMLDiagnostics16FlushDiagnosticsEPN4llvm15SmallVectorImplISsEE", "(anonymous namespace)::HTMLDiagnostics::FlushDiagnostics(llvm::SmallVectorImpl*)"}, + {"_ZNK12_GLOBAL__N_115HTMLDiagnostics7getNameEv", "(anonymous namespace)::HTMLDiagnostics::getName() const"}, + {"_ZN12_GLOBAL__N_115HTMLDiagnostics20HandlePathDiagnosticEPKN5clang4ento14PathDiagnosticE", "(anonymous namespace)::HTMLDiagnostics::HandlePathDiagnostic(clang::ento::PathDiagnostic const*)"}, + {"_ZN12_GLOBAL__N_115HTMLDiagnostics10ReportDiagERKN5clang4ento14PathDiagnosticEPN4llvm15SmallVectorImplISsEE", "(anonymous namespace)::HTMLDiagnostics::ReportDiag(clang::ento::PathDiagnostic const&, llvm::SmallVectorImpl*)"}, + {"_ZN12_GLOBAL__N_115HTMLDiagnostics17ProcessMacroPieceERN4llvm11raw_ostreamERKN5clang4ento24PathDiagnosticMacroPieceEj", "(anonymous namespace)::HTMLDiagnostics::ProcessMacroPiece(llvm::raw_ostream&, clang::ento::PathDiagnosticMacroPiece const&, unsigned int)"}, + {"_Z16EmitAlphaCounterRN4llvm11raw_ostreamEj", "EmitAlphaCounter(llvm::raw_ostream&, unsigned int)"}, + {"_ZN5clang4ento9MemRegionD0Ev", "clang::ento::MemRegion::~MemRegion()"}, + {"_ZN5clang4ento9MemRegionD1Ev", "clang::ento::MemRegion::~MemRegion()"}, + {"_ZN5clang4ento9MemRegionD2Ev", "clang::ento::MemRegion::~MemRegion()"}, + {"_ZN5clang4ento16MemRegionManagerD1Ev", "clang::ento::MemRegionManager::~MemRegionManager()"}, + {"_ZN5clang4ento16MemRegionManagerD2Ev", "clang::ento::MemRegionManager::~MemRegionManager()"}, + {"_ZNK5clang4ento9SubRegion13isSubRegionOfEPKNS0_9MemRegionE", "clang::ento::SubRegion::isSubRegionOf(clang::ento::MemRegion const*) const"}, + {"_ZNK5clang4ento9SubRegion19getMemRegionManagerEv", "clang::ento::SubRegion::getMemRegionManager() const"}, + {"_ZNK5clang4ento9VarRegion13getStackFrameEv", "clang::ento::VarRegion::getStackFrame() const"}, + {"_ZNK5clang4ento9MemRegion14getMemorySpaceEv", "clang::ento::MemRegion::getMemorySpace() const"}, + {"_ZNK5clang4ento10DeclRegion9getExtentERNS0_11SValBuilderE", "clang::ento::DeclRegion::getExtent(clang::ento::SValBuilder&) const"}, + {"_ZNK5clang4ento11FieldRegion9getExtentERNS0_11SValBuilderE", "clang::ento::FieldRegion::getExtent(clang::ento::SValBuilder&) const"}, + {"_ZNK5clang4ento12AllocaRegion9getExtentERNS0_11SValBuilderE", "clang::ento::AllocaRegion::getExtent(clang::ento::SValBuilder&) const"}, + {"_ZNK5clang4ento14SymbolicRegion9getExtentERNS0_11SValBuilderE", "clang::ento::SymbolicRegion::getExtent(clang::ento::SValBuilder&) const"}, + {"_ZNK5clang4ento12StringRegion9getExtentERNS0_11SValBuilderE", "clang::ento::StringRegion::getExtent(clang::ento::SValBuilder&) const"}, + {"_ZNK5clang4ento19CXXBaseObjectRegion12getValueTypeEv", "clang::ento::CXXBaseObjectRegion::getValueType() const"}, + {"_ZNK5clang4ento14MemSpaceRegion7ProfileERN4llvm16FoldingSetNodeIDE", "clang::ento::MemSpaceRegion::Profile(llvm::FoldingSetNodeID&) const"}, + {"_ZNK5clang4ento16StackSpaceRegion7ProfileERN4llvm16FoldingSetNodeIDE", "clang::ento::StackSpaceRegion::Profile(llvm::FoldingSetNodeID&) const"}, + {"_ZNK5clang4ento23StaticGlobalSpaceRegion7ProfileERN4llvm16FoldingSetNodeIDE", "clang::ento::StaticGlobalSpaceRegion::Profile(llvm::FoldingSetNodeID&) const"}, + {"_ZN5clang4ento12StringRegion13ProfileRegionERN4llvm16FoldingSetNodeIDEPKNS_13StringLiteralEPKNS0_9MemRegionE", "clang::ento::StringRegion::ProfileRegion(llvm::FoldingSetNodeID&, clang::StringLiteral const*, clang::ento::MemRegion const*)"}, + {"_ZN5clang4ento12AllocaRegion13ProfileRegionERN4llvm16FoldingSetNodeIDEPKNS_4ExprEjPKNS0_9MemRegionE", "clang::ento::AllocaRegion::ProfileRegion(llvm::FoldingSetNodeID&, clang::Expr const*, unsigned int, clang::ento::MemRegion const*)"}, + {"_ZNK5clang4ento12AllocaRegion7ProfileERN4llvm16FoldingSetNodeIDE", "clang::ento::AllocaRegion::Profile(llvm::FoldingSetNodeID&) const"}, + {"_ZNK5clang4ento21CompoundLiteralRegion7ProfileERN4llvm16FoldingSetNodeIDE", "clang::ento::CompoundLiteralRegion::Profile(llvm::FoldingSetNodeID&) const"}, + {"_ZN5clang4ento21CompoundLiteralRegion13ProfileRegionERN4llvm16FoldingSetNodeIDEPKNS_19CompoundLiteralExprEPKNS0_9MemRegionE", "clang::ento::CompoundLiteralRegion::ProfileRegion(llvm::FoldingSetNodeID&, clang::CompoundLiteralExpr const*, clang::ento::MemRegion const*)"}, + {"_ZN5clang4ento13CXXThisRegion13ProfileRegionERN4llvm16FoldingSetNodeIDEPKNS_11PointerTypeEPKNS0_9MemRegionE", "clang::ento::CXXThisRegion::ProfileRegion(llvm::FoldingSetNodeID&, clang::PointerType const*, clang::ento::MemRegion const*)"}, + {"_ZNK5clang4ento13CXXThisRegion7ProfileERN4llvm16FoldingSetNodeIDE", "clang::ento::CXXThisRegion::Profile(llvm::FoldingSetNodeID&) const"}, + {"_ZN5clang4ento10DeclRegion13ProfileRegionERN4llvm16FoldingSetNodeIDEPKNS_4DeclEPKNS0_9MemRegionENS8_4KindE", "clang::ento::DeclRegion::ProfileRegion(llvm::FoldingSetNodeID&, clang::Decl const*, clang::ento::MemRegion const*, clang::ento::MemRegion::Kind)"}, + {"_ZNK5clang4ento10DeclRegion7ProfileERN4llvm16FoldingSetNodeIDE", "clang::ento::DeclRegion::Profile(llvm::FoldingSetNodeID&) const"}, + {"_ZNK5clang4ento9VarRegion7ProfileERN4llvm16FoldingSetNodeIDE", "clang::ento::VarRegion::Profile(llvm::FoldingSetNodeID&) const"}, + {"_ZN5clang4ento14SymbolicRegion13ProfileRegionERN4llvm16FoldingSetNodeIDEPKNS0_10SymbolDataEPKNS0_9MemRegionE", "clang::ento::SymbolicRegion::ProfileRegion(llvm::FoldingSetNodeID&, clang::ento::SymbolData const*, clang::ento::MemRegion const*)"}, + {"_ZNK5clang4ento14SymbolicRegion7ProfileERN4llvm16FoldingSetNodeIDE", "clang::ento::SymbolicRegion::Profile(llvm::FoldingSetNodeID&) const"}, + {"_ZN5clang4ento13ElementRegion13ProfileRegionERN4llvm16FoldingSetNodeIDENS_8QualTypeENS0_4SValEPKNS0_9MemRegionE", "clang::ento::ElementRegion::ProfileRegion(llvm::FoldingSetNodeID&, clang::QualType, clang::ento::SVal, clang::ento::MemRegion const*)"}, + {"_ZNK5clang4ento13ElementRegion7ProfileERN4llvm16FoldingSetNodeIDE", "clang::ento::ElementRegion::Profile(llvm::FoldingSetNodeID&) const"}, + {"_ZN5clang4ento18FunctionTextRegion13ProfileRegionERN4llvm16FoldingSetNodeIDEPKNS_12FunctionDeclEPKNS0_9MemRegionE", "clang::ento::FunctionTextRegion::ProfileRegion(llvm::FoldingSetNodeID&, clang::FunctionDecl const*, clang::ento::MemRegion const*)"}, + {"_ZNK5clang4ento18FunctionTextRegion7ProfileERN4llvm16FoldingSetNodeIDE", "clang::ento::FunctionTextRegion::Profile(llvm::FoldingSetNodeID&) const"}, + {"_ZN5clang4ento15BlockTextRegion13ProfileRegionERN4llvm16FoldingSetNodeIDEPKNS_9BlockDeclENS_7CanQualINS_4TypeEEEPKNS_15AnalysisContextEPKNS0_9MemRegionE", "clang::ento::BlockTextRegion::ProfileRegion(llvm::FoldingSetNodeID&, clang::BlockDecl const*, clang::CanQual, clang::AnalysisContext const*, clang::ento::MemRegion const*)"}, + {"_ZNK5clang4ento15BlockTextRegion7ProfileERN4llvm16FoldingSetNodeIDE", "clang::ento::BlockTextRegion::Profile(llvm::FoldingSetNodeID&) const"}, + {"_ZN5clang4ento15BlockDataRegion13ProfileRegionERN4llvm16FoldingSetNodeIDEPKNS0_15BlockTextRegionEPKNS_15LocationContextEPKNS0_9MemRegionE", "clang::ento::BlockDataRegion::ProfileRegion(llvm::FoldingSetNodeID&, clang::ento::BlockTextRegion const*, clang::LocationContext const*, clang::ento::MemRegion const*)"}, + {"_ZNK5clang4ento15BlockDataRegion7ProfileERN4llvm16FoldingSetNodeIDE", "clang::ento::BlockDataRegion::Profile(llvm::FoldingSetNodeID&) const"}, + {"_ZN5clang4ento19CXXTempObjectRegion13ProfileRegionERN4llvm16FoldingSetNodeIDEPKNS_4ExprEPKNS0_9MemRegionE", "clang::ento::CXXTempObjectRegion::ProfileRegion(llvm::FoldingSetNodeID&, clang::Expr const*, clang::ento::MemRegion const*)"}, + {"_ZNK5clang4ento19CXXTempObjectRegion7ProfileERN4llvm16FoldingSetNodeIDE", "clang::ento::CXXTempObjectRegion::Profile(llvm::FoldingSetNodeID&) const"}, + {"_ZN5clang4ento19CXXBaseObjectRegion13ProfileRegionERN4llvm16FoldingSetNodeIDEPKNS_13CXXRecordDeclEPKNS0_9MemRegionE", "clang::ento::CXXBaseObjectRegion::ProfileRegion(llvm::FoldingSetNodeID&, clang::CXXRecordDecl const*, clang::ento::MemRegion const*)"}, + {"_ZNK5clang4ento19CXXBaseObjectRegion7ProfileERN4llvm16FoldingSetNodeIDE", "clang::ento::CXXBaseObjectRegion::Profile(llvm::FoldingSetNodeID&) const"}, + {"_ZNK5clang4ento9MemRegion4dumpEv", "clang::ento::MemRegion::dump() const"}, + {"_ZNK5clang4ento9MemRegion9getStringEv", "clang::ento::MemRegion::getString() const"}, + {"_ZNK5clang4ento9MemRegion12dumpToStreamERN4llvm11raw_ostreamE", "clang::ento::MemRegion::dumpToStream(llvm::raw_ostream&) const"}, + {"_ZNK5clang4ento12AllocaRegion12dumpToStreamERN4llvm11raw_ostreamE", "clang::ento::AllocaRegion::dumpToStream(llvm::raw_ostream&) const"}, + {"_ZNK5clang4ento18FunctionTextRegion12dumpToStreamERN4llvm11raw_ostreamE", "clang::ento::FunctionTextRegion::dumpToStream(llvm::raw_ostream&) const"}, + {"_ZNK5clang4ento15BlockTextRegion12dumpToStreamERN4llvm11raw_ostreamE", "clang::ento::BlockTextRegion::dumpToStream(llvm::raw_ostream&) const"}, + {"_ZNK5clang4ento15BlockDataRegion12dumpToStreamERN4llvm11raw_ostreamE", "clang::ento::BlockDataRegion::dumpToStream(llvm::raw_ostream&) const"}, + {"_ZNK5clang4ento21CompoundLiteralRegion12dumpToStreamERN4llvm11raw_ostreamE", "clang::ento::CompoundLiteralRegion::dumpToStream(llvm::raw_ostream&) const"}, + {"_ZNK5clang4ento19CXXTempObjectRegion12dumpToStreamERN4llvm11raw_ostreamE", "clang::ento::CXXTempObjectRegion::dumpToStream(llvm::raw_ostream&) const"}, + {"_ZNK5clang4ento19CXXBaseObjectRegion12dumpToStreamERN4llvm11raw_ostreamE", "clang::ento::CXXBaseObjectRegion::dumpToStream(llvm::raw_ostream&) const"}, + {"_ZNK5clang4ento13CXXThisRegion12dumpToStreamERN4llvm11raw_ostreamE", "clang::ento::CXXThisRegion::dumpToStream(llvm::raw_ostream&) const"}, + {"_ZNK5clang4ento13ElementRegion12dumpToStreamERN4llvm11raw_ostreamE", "clang::ento::ElementRegion::dumpToStream(llvm::raw_ostream&) const"}, + {"_ZNK5clang4ento11FieldRegion12dumpToStreamERN4llvm11raw_ostreamE", "clang::ento::FieldRegion::dumpToStream(llvm::raw_ostream&) const"}, + {"_ZNK5clang4ento26NonStaticGlobalSpaceRegion12dumpToStreamERN4llvm11raw_ostreamE", "clang::ento::NonStaticGlobalSpaceRegion::dumpToStream(llvm::raw_ostream&) const"}, + {"_ZNK5clang4ento14ObjCIvarRegion12dumpToStreamERN4llvm11raw_ostreamE", "clang::ento::ObjCIvarRegion::dumpToStream(llvm::raw_ostream&) const"}, + {"_ZNK5clang4ento12StringRegion12dumpToStreamERN4llvm11raw_ostreamE", "clang::ento::StringRegion::dumpToStream(llvm::raw_ostream&) const"}, + {"_ZNK5clang4ento14SymbolicRegion12dumpToStreamERN4llvm11raw_ostreamE", "clang::ento::SymbolicRegion::dumpToStream(llvm::raw_ostream&) const"}, + {"_ZNK5clang4ento9VarRegion12dumpToStreamERN4llvm11raw_ostreamE", "clang::ento::VarRegion::dumpToStream(llvm::raw_ostream&) const"}, + {"_ZNK5clang4ento15RegionRawOffset4dumpEv", "clang::ento::RegionRawOffset::dump() const"}, + {"_ZNK5clang4ento15RegionRawOffset12dumpToStreamERN4llvm11raw_ostreamE", "clang::ento::RegionRawOffset::dumpToStream(llvm::raw_ostream&) const"}, + {"_ZNK5clang4ento23StaticGlobalSpaceRegion12dumpToStreamERN4llvm11raw_ostreamE", "clang::ento::StaticGlobalSpaceRegion::dumpToStream(llvm::raw_ostream&) const"}, + {"_ZN5clang4ento16MemRegionManager20getStackLocalsRegionEPKNS_17StackFrameContextE", "clang::ento::MemRegionManager::getStackLocalsRegion(clang::StackFrameContext const*)"}, + {"_ZN5clang4ento16MemRegionManager23getStackArgumentsRegionEPKNS_17StackFrameContextE", "clang::ento::MemRegionManager::getStackArgumentsRegion(clang::StackFrameContext const*)"}, + {"_ZN5clang4ento16MemRegionManager16getGlobalsRegionEPKNS0_14CodeTextRegionE", "clang::ento::MemRegionManager::getGlobalsRegion(clang::ento::CodeTextRegion const*)"}, + {"_ZN5clang4ento16MemRegionManager13getHeapRegionEv", "clang::ento::MemRegionManager::getHeapRegion()"}, + {"_ZN5clang4ento16MemRegionManager16getUnknownRegionEv", "clang::ento::MemRegionManager::getUnknownRegion()"}, + {"_ZN5clang4ento16MemRegionManager13getCodeRegionEv", "clang::ento::MemRegionManager::getCodeRegion()"}, + {"_ZN5clang4ento16MemRegionManager15getStringRegionEPKNS_13StringLiteralE", "clang::ento::MemRegionManager::getStringRegion(clang::StringLiteral const*)"}, + {"_ZN5clang4ento16MemRegionManager12getVarRegionEPKNS_7VarDeclEPKNS_15LocationContextE", "clang::ento::MemRegionManager::getVarRegion(clang::VarDecl const*, clang::LocationContext const*)"}, + {"_ZN5clang4ento16MemRegionManager21getFunctionTextRegionEPKNS_12FunctionDeclE", "clang::ento::MemRegionManager::getFunctionTextRegion(clang::FunctionDecl const*)"}, + {"_ZN5clang4ento16MemRegionManager18getBlockTextRegionEPKNS_9BlockDeclENS_7CanQualINS_4TypeEEEPNS_15AnalysisContextE", "clang::ento::MemRegionManager::getBlockTextRegion(clang::BlockDecl const*, clang::CanQual, clang::AnalysisContext*)"}, + {"_ZN5clang4ento16MemRegionManager12getVarRegionEPKNS_7VarDeclEPKNS0_9MemRegionE", "clang::ento::MemRegionManager::getVarRegion(clang::VarDecl const*, clang::ento::MemRegion const*)"}, + {"_ZN5clang4ento16MemRegionManager18getBlockDataRegionEPKNS0_15BlockTextRegionEPKNS_15LocationContextE", "clang::ento::MemRegionManager::getBlockDataRegion(clang::ento::BlockTextRegion const*, clang::LocationContext const*)"}, + {"_ZN5clang4ento16MemRegionManager24getCompoundLiteralRegionEPKNS_19CompoundLiteralExprEPKNS_15LocationContextE", "clang::ento::MemRegionManager::getCompoundLiteralRegion(clang::CompoundLiteralExpr const*, clang::LocationContext const*)"}, + {"_ZN5clang4ento16MemRegionManager16getElementRegionENS_8QualTypeENS0_6NonLocEPKNS0_9MemRegionERNS_10ASTContextE", "clang::ento::MemRegionManager::getElementRegion(clang::QualType, clang::ento::NonLoc, clang::ento::MemRegion const*, clang::ASTContext&)"}, + {"_ZN5clang4ento16MemRegionManager17getSymbolicRegionEPKNS0_10SymbolDataE", "clang::ento::MemRegionManager::getSymbolicRegion(clang::ento::SymbolData const*)"}, + {"_ZN5clang4ento16MemRegionManager14getFieldRegionEPKNS_9FieldDeclEPKNS0_9MemRegionE", "clang::ento::MemRegionManager::getFieldRegion(clang::FieldDecl const*, clang::ento::MemRegion const*)"}, + {"_ZN5clang4ento16MemRegionManager17getObjCIvarRegionEPKNS_12ObjCIvarDeclEPKNS0_9MemRegionE", "clang::ento::MemRegionManager::getObjCIvarRegion(clang::ObjCIvarDecl const*, clang::ento::MemRegion const*)"}, + {"_ZN5clang4ento16MemRegionManager22getCXXTempObjectRegionEPKNS_4ExprEPKNS_15LocationContextE", "clang::ento::MemRegionManager::getCXXTempObjectRegion(clang::Expr const*, clang::LocationContext const*)"}, + {"_ZN5clang4ento16MemRegionManager22getCXXBaseObjectRegionEPKNS_13CXXRecordDeclEPKNS0_9MemRegionE", "clang::ento::MemRegionManager::getCXXBaseObjectRegion(clang::CXXRecordDecl const*, clang::ento::MemRegion const*)"}, + {"_ZN5clang4ento16MemRegionManager16getCXXThisRegionENS_8QualTypeEPKNS_15LocationContextE", "clang::ento::MemRegionManager::getCXXThisRegion(clang::QualType, clang::LocationContext const*)"}, + {"_ZN5clang4ento16MemRegionManager15getAllocaRegionEPKNS_4ExprEjPKNS_15LocationContextE", "clang::ento::MemRegionManager::getAllocaRegion(clang::Expr const*, unsigned int, clang::LocationContext const*)"}, + {"_ZNK5clang4ento9MemRegion15hasStackStorageEv", "clang::ento::MemRegion::hasStackStorage() const"}, + {"_ZNK5clang4ento9MemRegion28hasStackNonParametersStorageEv", "clang::ento::MemRegion::hasStackNonParametersStorage() const"}, + {"_ZNK5clang4ento9MemRegion25hasStackParametersStorageEv", "clang::ento::MemRegion::hasStackParametersStorage() const"}, + {"_ZNK5clang4ento9MemRegion29hasGlobalsOrParametersStorageEv", "clang::ento::MemRegion::hasGlobalsOrParametersStorage() const"}, + {"_ZNK5clang4ento9MemRegion13getBaseRegionEv", "clang::ento::MemRegion::getBaseRegion() const"}, + {"_ZNK5clang4ento9MemRegion10StripCastsEv", "clang::ento::MemRegion::StripCasts() const"}, + {"_ZNK5clang4ento13ElementRegion16getAsArrayOffsetEv", "clang::ento::ElementRegion::getAsArrayOffset() const"}, + {"_ZNK5clang4ento9MemRegion11getAsOffsetEv", "clang::ento::MemRegion::getAsOffset() const"}, + {"_ZN5clang4ento15BlockDataRegion28LazyInitializeReferencedVarsEv", "clang::ento::BlockDataRegion::LazyInitializeReferencedVars()"}, + {"_ZNK5clang4ento15BlockDataRegion21referenced_vars_beginEv", "clang::ento::BlockDataRegion::referenced_vars_begin() const"}, + {"_ZNK5clang4ento15BlockDataRegion19referenced_vars_endEv", "clang::ento::BlockDataRegion::referenced_vars_end() const"}, + {"_ZN4llvm10FoldingSetIN5clang4ento9MemRegionEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN5clang4ento16MemRegionManager12getSubRegionINS0_12StringRegionEPKNS_13StringLiteralEEEPT_T0_PKNS0_9MemRegionE", "clang::ento::StringRegion* clang::ento::MemRegionManager::getSubRegion(clang::StringLiteral const*, clang::ento::MemRegion const*)"}, + {"_ZN5clang4ento16MemRegionManager12getSubRegionINS0_9VarRegionEPKNS_7VarDeclEEEPT_T0_PKNS0_9MemRegionE", "clang::ento::VarRegion* clang::ento::MemRegionManager::getSubRegion(clang::VarDecl const*, clang::ento::MemRegion const*)"}, + {"_ZN5clang4ento16MemRegionManager12getSubRegionINS0_15BlockDataRegionEPKNS0_15BlockTextRegionEPKNS_15LocationContextEEEPT_T0_T1_PKNS0_9MemRegionE", "clang::ento::BlockDataRegion* clang::ento::MemRegionManager::getSubRegion(clang::ento::BlockTextRegion const*, clang::LocationContext const*, clang::ento::MemRegion const*)"}, + {"_ZN5clang4ento16MemRegionManager12getSubRegionINS0_21CompoundLiteralRegionEPKNS_19CompoundLiteralExprEEEPT_T0_PKNS0_9MemRegionE", "clang::ento::CompoundLiteralRegion* clang::ento::MemRegionManager::getSubRegion(clang::CompoundLiteralExpr const*, clang::ento::MemRegion const*)"}, + {"_ZN5clang4ento16MemRegionManager12getSubRegionINS0_18FunctionTextRegionEPKNS_12FunctionDeclEEEPT_T0_PKNS0_9MemRegionE", "clang::ento::FunctionTextRegion* clang::ento::MemRegionManager::getSubRegion(clang::FunctionDecl const*, clang::ento::MemRegion const*)"}, + + // {"_ZN5clang4ento16MemRegionManager12getSubRegionINS0_15BlockTextRegionEPKNS_9BlockDeclENS_7CanQualINS_4TypeEEEPNS_15AnalysisContextEEEPT_T0_T1_T2_PKNS0_9MemRegionE", + // "clang::ento::BlockTextRegion* clang::ento::MemRegionManager::getSubRegion, clang::AnalysisContext*>(clang::BlockDecl const*, clang::CanQual, clang::AnalysisContext*, clang::ento::MemRegion const*)"}, + // "clang::ento::BlockTextRegion* clang::ento::MemRegionManager::getSubRegion, clang::AnalysisContext*>(clang::BlockDecl const*, clang::Type, clang::CanQual, clang::ento::MemRegion const*)" was returned + + {"_ZN5clang4ento16MemRegionManager12getSubRegionINS0_14SymbolicRegionEPKNS0_10SymbolDataEEEPT_T0_PKNS0_9MemRegionE", "clang::ento::SymbolicRegion* clang::ento::MemRegionManager::getSubRegion(clang::ento::SymbolData const*, clang::ento::MemRegion const*)"}, + {"_ZN5clang4ento16MemRegionManager12getSubRegionINS0_11FieldRegionEPKNS_9FieldDeclEEEPT_T0_PKNS0_9MemRegionE", "clang::ento::FieldRegion* clang::ento::MemRegionManager::getSubRegion(clang::FieldDecl const*, clang::ento::MemRegion const*)"}, + {"_ZN5clang4ento16MemRegionManager12getSubRegionINS0_14ObjCIvarRegionEPKNS_12ObjCIvarDeclEEEPT_T0_PKNS0_9MemRegionE", "clang::ento::ObjCIvarRegion* clang::ento::MemRegionManager::getSubRegion(clang::ObjCIvarDecl const*, clang::ento::MemRegion const*)"}, + {"_ZN5clang4ento16MemRegionManager12getSubRegionINS0_19CXXTempObjectRegionEPKNS_4ExprEEEPT_T0_PKNS0_9MemRegionE", "clang::ento::CXXTempObjectRegion* clang::ento::MemRegionManager::getSubRegion(clang::Expr const*, clang::ento::MemRegion const*)"}, + {"_ZN5clang4ento16MemRegionManager12getSubRegionINS0_19CXXBaseObjectRegionEPKNS_13CXXRecordDeclEEEPT_T0_PKNS0_9MemRegionE", "clang::ento::CXXBaseObjectRegion* clang::ento::MemRegionManager::getSubRegion(clang::CXXRecordDecl const*, clang::ento::MemRegion const*)"}, + {"_ZN5clang4ento16MemRegionManager12getSubRegionINS0_13CXXThisRegionEPKNS_11PointerTypeEEEPT_T0_PKNS0_9MemRegionE", "clang::ento::CXXThisRegion* clang::ento::MemRegionManager::getSubRegion(clang::PointerType const*, clang::ento::MemRegion const*)"}, + {"_ZN5clang4ento16MemRegionManager12getSubRegionINS0_12AllocaRegionEPKNS_4ExprEjEEPT_T0_T1_PKNS0_9MemRegionE", "clang::ento::AllocaRegion* clang::ento::MemRegionManager::getSubRegion(clang::Expr const*, unsigned int, clang::ento::MemRegion const*)"}, + {"_ZNK5clang4ento9MemRegion11isBoundableEv", "clang::ento::MemRegion::isBoundable() const"}, + {"_ZN5clang4ento14MemSpaceRegionD1Ev", "clang::ento::MemSpaceRegion::~MemSpaceRegion()"}, + {"_ZN5clang4ento14MemSpaceRegionD0Ev", "clang::ento::MemSpaceRegion::~MemSpaceRegion()"}, + {"_ZNK5clang4ento14MemSpaceRegion19getMemRegionManagerEv", "clang::ento::MemSpaceRegion::getMemRegionManager() const"}, + {"_ZNK5clang4ento14MemSpaceRegion11isBoundableEv", "clang::ento::MemSpaceRegion::isBoundable() const"}, + {"_ZN5clang4ento23StaticGlobalSpaceRegionD1Ev", "clang::ento::StaticGlobalSpaceRegion::~StaticGlobalSpaceRegion()"}, + {"_ZN5clang4ento23StaticGlobalSpaceRegionD0Ev", "clang::ento::StaticGlobalSpaceRegion::~StaticGlobalSpaceRegion()"}, + {"_ZN5clang4ento26NonStaticGlobalSpaceRegionD1Ev", "clang::ento::NonStaticGlobalSpaceRegion::~NonStaticGlobalSpaceRegion()"}, + {"_ZN5clang4ento26NonStaticGlobalSpaceRegionD0Ev", "clang::ento::NonStaticGlobalSpaceRegion::~NonStaticGlobalSpaceRegion()"}, + {"_ZN5clang4ento16StackSpaceRegionD1Ev", "clang::ento::StackSpaceRegion::~StackSpaceRegion()"}, + {"_ZN5clang4ento16StackSpaceRegionD0Ev", "clang::ento::StackSpaceRegion::~StackSpaceRegion()"}, + {"_ZN5clang4ento9SubRegionD1Ev", "clang::ento::SubRegion::~SubRegion()"}, + {"_ZN5clang4ento9SubRegionD0Ev", "clang::ento::SubRegion::~SubRegion()"}, + {"_ZNK5clang4ento9SubRegion9getExtentERNS0_11SValBuilderE", "clang::ento::SubRegion::getExtent(clang::ento::SValBuilder&) const"}, + {"_ZN5clang4ento12AllocaRegionD1Ev", "clang::ento::AllocaRegion::~AllocaRegion()"}, + {"_ZN5clang4ento12AllocaRegionD0Ev", "clang::ento::AllocaRegion::~AllocaRegion()"}, + {"_ZNK5clang4ento12AllocaRegion11isBoundableEv", "clang::ento::AllocaRegion::isBoundable() const"}, + {"_ZN5clang4ento18FunctionTextRegionD1Ev", "clang::ento::FunctionTextRegion::~FunctionTextRegion()"}, + {"_ZN5clang4ento18FunctionTextRegionD0Ev", "clang::ento::FunctionTextRegion::~FunctionTextRegion()"}, + {"_ZNK5clang4ento14CodeTextRegion11isBoundableEv", "clang::ento::CodeTextRegion::isBoundable() const"}, + {"_ZNK5clang4ento14CodeTextRegion12getValueTypeEv", "clang::ento::CodeTextRegion::getValueType() const"}, + {"_ZNK5clang4ento18FunctionTextRegion15getLocationTypeEv", "clang::ento::FunctionTextRegion::getLocationType() const"}, + {"_ZN5clang4ento15BlockTextRegionD1Ev", "clang::ento::BlockTextRegion::~BlockTextRegion()"}, + {"_ZN5clang4ento15BlockTextRegionD0Ev", "clang::ento::BlockTextRegion::~BlockTextRegion()"}, + {"_ZNK5clang4ento15BlockTextRegion15getLocationTypeEv", "clang::ento::BlockTextRegion::getLocationType() const"}, + {"_ZN5clang4ento15BlockDataRegionD1Ev", "clang::ento::BlockDataRegion::~BlockDataRegion()"}, + {"_ZN5clang4ento15BlockDataRegionD0Ev", "clang::ento::BlockDataRegion::~BlockDataRegion()"}, + {"_ZN5clang4ento14SymbolicRegionD1Ev", "clang::ento::SymbolicRegion::~SymbolicRegion()"}, + {"_ZN5clang4ento14SymbolicRegionD0Ev", "clang::ento::SymbolicRegion::~SymbolicRegion()"}, + {"_ZNK5clang4ento14SymbolicRegion11isBoundableEv", "clang::ento::SymbolicRegion::isBoundable() const"}, + {"_ZN5clang4ento12StringRegionD1Ev", "clang::ento::StringRegion::~StringRegion()"}, + {"_ZN5clang4ento12StringRegionD0Ev", "clang::ento::StringRegion::~StringRegion()"}, + {"_ZNK5clang4ento12StringRegion7ProfileERN4llvm16FoldingSetNodeIDE", "clang::ento::StringRegion::Profile(llvm::FoldingSetNodeID&) const"}, + {"_ZNK5clang4ento12StringRegion11isBoundableEv", "clang::ento::StringRegion::isBoundable() const"}, + {"_ZNK5clang4ento12StringRegion12getValueTypeEv", "clang::ento::StringRegion::getValueType() const"}, + {"_ZNK5clang4ento11TypedRegion15getLocationTypeEv", "clang::ento::TypedRegion::getLocationType() const"}, + {"_ZN5clang4ento21CompoundLiteralRegionD1Ev", "clang::ento::CompoundLiteralRegion::~CompoundLiteralRegion()"}, + {"_ZN5clang4ento21CompoundLiteralRegionD0Ev", "clang::ento::CompoundLiteralRegion::~CompoundLiteralRegion()"}, + {"_ZNK5clang4ento21CompoundLiteralRegion11isBoundableEv", "clang::ento::CompoundLiteralRegion::isBoundable() const"}, + {"_ZNK5clang4ento21CompoundLiteralRegion12getValueTypeEv", "clang::ento::CompoundLiteralRegion::getValueType() const"}, + {"_ZN5clang4ento10DeclRegionD1Ev", "clang::ento::DeclRegion::~DeclRegion()"}, + {"_ZN5clang4ento10DeclRegionD0Ev", "clang::ento::DeclRegion::~DeclRegion()"}, + {"_ZNK5clang4ento11TypedRegion11isBoundableEv", "clang::ento::TypedRegion::isBoundable() const"}, + {"_ZN5clang4ento9VarRegionD1Ev", "clang::ento::VarRegion::~VarRegion()"}, + {"_ZN5clang4ento9VarRegionD0Ev", "clang::ento::VarRegion::~VarRegion()"}, + {"_ZNK5clang4ento9VarRegion12getValueTypeEv", "clang::ento::VarRegion::getValueType() const"}, + {"_ZN5clang4ento13CXXThisRegionD1Ev", "clang::ento::CXXThisRegion::~CXXThisRegion()"}, + {"_ZN5clang4ento13CXXThisRegionD0Ev", "clang::ento::CXXThisRegion::~CXXThisRegion()"}, + {"_ZNK5clang4ento13CXXThisRegion12getValueTypeEv", "clang::ento::CXXThisRegion::getValueType() const"}, + {"_ZN5clang4ento11FieldRegionD1Ev", "clang::ento::FieldRegion::~FieldRegion()"}, + {"_ZN5clang4ento11FieldRegionD0Ev", "clang::ento::FieldRegion::~FieldRegion()"}, + {"_ZNK5clang4ento11FieldRegion12getValueTypeEv", "clang::ento::FieldRegion::getValueType() const"}, + {"_ZN5clang4ento14ObjCIvarRegionD1Ev", "clang::ento::ObjCIvarRegion::~ObjCIvarRegion()"}, + {"_ZN5clang4ento14ObjCIvarRegionD0Ev", "clang::ento::ObjCIvarRegion::~ObjCIvarRegion()"}, + {"_ZNK5clang4ento14ObjCIvarRegion12getValueTypeEv", "clang::ento::ObjCIvarRegion::getValueType() const"}, + {"_ZN5clang4ento13ElementRegionD1Ev", "clang::ento::ElementRegion::~ElementRegion()"}, + {"_ZN5clang4ento13ElementRegionD0Ev", "clang::ento::ElementRegion::~ElementRegion()"}, + {"_ZNK5clang4ento13ElementRegion12getValueTypeEv", "clang::ento::ElementRegion::getValueType() const"}, + {"_ZN5clang4ento19CXXTempObjectRegionD1Ev", "clang::ento::CXXTempObjectRegion::~CXXTempObjectRegion()"}, + {"_ZN5clang4ento19CXXTempObjectRegionD0Ev", "clang::ento::CXXTempObjectRegion::~CXXTempObjectRegion()"}, + {"_ZNK5clang4ento19CXXTempObjectRegion12getValueTypeEv", "clang::ento::CXXTempObjectRegion::getValueType() const"}, + {"_ZN5clang4ento19CXXBaseObjectRegionD1Ev", "clang::ento::CXXBaseObjectRegion::~CXXBaseObjectRegion()"}, + {"_ZN5clang4ento19CXXBaseObjectRegionD0Ev", "clang::ento::CXXBaseObjectRegion::~CXXBaseObjectRegion()"}, + {"_ZN5clang4ento11TypedRegionD1Ev", "clang::ento::TypedRegion::~TypedRegion()"}, + {"_ZN5clang4ento11TypedRegionD0Ev", "clang::ento::TypedRegion::~TypedRegion()"}, + {"_ZN5clang4ento14CodeTextRegionD1Ev", "clang::ento::CodeTextRegion::~CodeTextRegion()"}, + {"_ZN5clang4ento14CodeTextRegionD0Ev", "clang::ento::CodeTextRegion::~CodeTextRegion()"}, + {"_ZN5clang4ento18UnknownSpaceRegionD1Ev", "clang::ento::UnknownSpaceRegion::~UnknownSpaceRegion()"}, + {"_ZN5clang4ento18UnknownSpaceRegionD0Ev", "clang::ento::UnknownSpaceRegion::~UnknownSpaceRegion()"}, + {"_ZN5clang4ento15HeapSpaceRegionD1Ev", "clang::ento::HeapSpaceRegion::~HeapSpaceRegion()"}, + {"_ZN5clang4ento15HeapSpaceRegionD0Ev", "clang::ento::HeapSpaceRegion::~HeapSpaceRegion()"}, + {"_ZN4llvm8DenseMapIPKN5clang4ento14CodeTextRegionEPNS2_23StaticGlobalSpaceRegionENS_12DenseMapInfoIS5_EENS8_IS7_EEE16InsertIntoBucketERKS5_RKS7_PSt4pairIS5_S7_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::ento::CodeTextRegion const* const&, clang::ento::StaticGlobalSpaceRegion* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang4ento14CodeTextRegionEPNS2_23StaticGlobalSpaceRegionENS_12DenseMapInfoIS5_EENS8_IS7_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang4ento18GlobalsSpaceRegionD1Ev", "clang::ento::GlobalsSpaceRegion::~GlobalsSpaceRegion()"}, + {"_ZN5clang4ento18GlobalsSpaceRegionD0Ev", "clang::ento::GlobalsSpaceRegion::~GlobalsSpaceRegion()"}, + {"_ZN4llvm8DenseMapIPKN5clang17StackFrameContextEPNS1_4ento25StackArgumentsSpaceRegionENS_12DenseMapInfoIS4_EENS8_IS7_EEE16InsertIntoBucketERKS4_RKS7_PSt4pairIS4_S7_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::StackFrameContext const* const&, clang::ento::StackArgumentsSpaceRegion* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang17StackFrameContextEPNS1_4ento25StackArgumentsSpaceRegionENS_12DenseMapInfoIS4_EENS8_IS7_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKN5clang17StackFrameContextEPNS1_4ento22StackLocalsSpaceRegionENS_12DenseMapInfoIS4_EENS8_IS7_EEE16InsertIntoBucketERKS4_RKS7_PSt4pairIS4_S7_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::StackFrameContext const* const&, clang::ento::StackLocalsSpaceRegion* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang17StackFrameContextEPNS1_4ento22StackLocalsSpaceRegionENS_12DenseMapInfoIS4_EENS8_IS7_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang4ento25StackArgumentsSpaceRegionD1Ev", "clang::ento::StackArgumentsSpaceRegion::~StackArgumentsSpaceRegion()"}, + {"_ZN5clang4ento25StackArgumentsSpaceRegionD0Ev", "clang::ento::StackArgumentsSpaceRegion::~StackArgumentsSpaceRegion()"}, + {"_ZN5clang4ento22StackLocalsSpaceRegionD1Ev", "clang::ento::StackLocalsSpaceRegion::~StackLocalsSpaceRegion()"}, + {"_ZN5clang4ento22StackLocalsSpaceRegionD0Ev", "clang::ento::StackLocalsSpaceRegion::~StackLocalsSpaceRegion()"}, + {"_ZN4llvm10FoldingSetIN5clang4ento9MemRegionEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang4ento9MemRegionEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang4ento9MemRegionEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS8_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang4ento9MemRegionEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK5clang4ento11ObjCMessage7getTypeERNS_10ASTContextE", "clang::ento::ObjCMessage::getType(clang::ASTContext&) const"}, + {"_ZNK5clang4ento11ObjCMessage11getSelectorEv", "clang::ento::ObjCMessage::getSelector() const"}, + {"_ZNK5clang4ento11ObjCMessage13getMethodDeclEv", "clang::ento::ObjCMessage::getMethodDecl() const"}, + {"_ZNK5clang4ento11ObjCMessage20getReceiverInterfaceEv", "clang::ento::ObjCMessage::getReceiverInterface() const"}, + {"_ZNK5clang4ento11ObjCMessage10getArgExprEj", "clang::ento::ObjCMessage::getArgExpr(unsigned int) const"}, + {"_ZNK5clang4ento17CallOrObjCMessage13getResultTypeERNS_10ASTContextE", "clang::ento::CallOrObjCMessage::getResultType(clang::ASTContext&) const"}, + {"_ZNK5clang4ento17CallOrObjCMessage23getArgSValAsScalarOrLocEj", "clang::ento::CallOrObjCMessage::getArgSValAsScalarOrLoc(unsigned int) const"}, + {"_ZNK5clang4ento24PathDiagnosticMacroPiece13containsEventEv", "clang::ento::PathDiagnosticMacroPiece::containsEvent() const"}, + {"_ZN5clang4ento19PathDiagnosticPieceC1EN4llvm9StringRefENS1_4KindENS1_11DisplayHintE", "clang::ento::PathDiagnosticPiece::PathDiagnosticPiece(llvm::StringRef, clang::ento::PathDiagnosticPiece::Kind, clang::ento::PathDiagnosticPiece::DisplayHint)"}, + {"_ZN5clang4ento19PathDiagnosticPieceC2EN4llvm9StringRefENS1_4KindENS1_11DisplayHintE", "clang::ento::PathDiagnosticPiece::PathDiagnosticPiece(llvm::StringRef, clang::ento::PathDiagnosticPiece::Kind, clang::ento::PathDiagnosticPiece::DisplayHint)"}, + {"_ZN5clang4ento19PathDiagnosticPieceC1ENS1_4KindENS1_11DisplayHintE", "clang::ento::PathDiagnosticPiece::PathDiagnosticPiece(clang::ento::PathDiagnosticPiece::Kind, clang::ento::PathDiagnosticPiece::DisplayHint)"}, + {"_ZN5clang4ento19PathDiagnosticPieceC2ENS1_4KindENS1_11DisplayHintE", "clang::ento::PathDiagnosticPiece::PathDiagnosticPiece(clang::ento::PathDiagnosticPiece::Kind, clang::ento::PathDiagnosticPiece::DisplayHint)"}, + {"_ZN5clang4ento19PathDiagnosticPieceD0Ev", "clang::ento::PathDiagnosticPiece::~PathDiagnosticPiece()"}, + {"_ZN5clang4ento19PathDiagnosticPieceD1Ev", "clang::ento::PathDiagnosticPiece::~PathDiagnosticPiece()"}, + {"_ZN5clang4ento19PathDiagnosticPieceD2Ev", "clang::ento::PathDiagnosticPiece::~PathDiagnosticPiece()"}, + {"_ZN5clang4ento24PathDiagnosticEventPieceD0Ev", "clang::ento::PathDiagnosticEventPiece::~PathDiagnosticEventPiece()"}, + {"_ZN5clang4ento24PathDiagnosticEventPieceD1Ev", "clang::ento::PathDiagnosticEventPiece::~PathDiagnosticEventPiece()"}, + {"_ZN5clang4ento24PathDiagnosticEventPieceD2Ev", "clang::ento::PathDiagnosticEventPiece::~PathDiagnosticEventPiece()"}, + {"_ZN5clang4ento30PathDiagnosticControlFlowPieceD0Ev", "clang::ento::PathDiagnosticControlFlowPiece::~PathDiagnosticControlFlowPiece()"}, + {"_ZN5clang4ento30PathDiagnosticControlFlowPieceD1Ev", "clang::ento::PathDiagnosticControlFlowPiece::~PathDiagnosticControlFlowPiece()"}, + {"_ZN5clang4ento30PathDiagnosticControlFlowPieceD2Ev", "clang::ento::PathDiagnosticControlFlowPiece::~PathDiagnosticControlFlowPiece()"}, + {"_ZN5clang4ento24PathDiagnosticMacroPieceD0Ev", "clang::ento::PathDiagnosticMacroPiece::~PathDiagnosticMacroPiece()"}, + {"_ZN5clang4ento24PathDiagnosticMacroPieceD1Ev", "clang::ento::PathDiagnosticMacroPiece::~PathDiagnosticMacroPiece()"}, + {"_ZN5clang4ento24PathDiagnosticMacroPieceD2Ev", "clang::ento::PathDiagnosticMacroPiece::~PathDiagnosticMacroPiece()"}, + {"_ZN5clang4ento14PathDiagnosticC1Ev", "clang::ento::PathDiagnostic::PathDiagnostic()"}, + {"_ZN5clang4ento14PathDiagnosticC2Ev", "clang::ento::PathDiagnostic::PathDiagnostic()"}, + {"_ZN5clang4ento14PathDiagnosticD1Ev", "clang::ento::PathDiagnostic::~PathDiagnostic()"}, + {"_ZN5clang4ento14PathDiagnosticD2Ev", "clang::ento::PathDiagnostic::~PathDiagnostic()"}, + {"_ZN5clang4ento14PathDiagnostic9resetPathEb", "clang::ento::PathDiagnostic::resetPath(bool)"}, + {"_ZN5clang4ento14PathDiagnosticC1EN4llvm9StringRefES3_S3_", "clang::ento::PathDiagnostic::PathDiagnostic(llvm::StringRef, llvm::StringRef, llvm::StringRef)"}, + {"_ZN5clang4ento14PathDiagnosticC2EN4llvm9StringRefES3_S3_", "clang::ento::PathDiagnostic::PathDiagnostic(llvm::StringRef, llvm::StringRef, llvm::StringRef)"}, + {"_ZN5clang4ento20PathDiagnosticClient16HandleDiagnosticENS_10Diagnostic5LevelERKNS_14DiagnosticInfoE", "clang::ento::PathDiagnosticClient::HandleDiagnostic(clang::Diagnostic::Level, clang::DiagnosticInfo const&)"}, + {"_ZNK5clang4ento22PathDiagnosticLocation10asLocationEv", "clang::ento::PathDiagnosticLocation::asLocation() const"}, + {"_ZNK5clang4ento22PathDiagnosticLocation7asRangeEv", "clang::ento::PathDiagnosticLocation::asRange() const"}, + {"_ZN5clang4ento22PathDiagnosticLocation7flattenEv", "clang::ento::PathDiagnosticLocation::flatten()"}, + {"_ZNK5clang4ento22PathDiagnosticLocation7ProfileERN4llvm16FoldingSetNodeIDE", "clang::ento::PathDiagnosticLocation::Profile(llvm::FoldingSetNodeID&) const"}, + {"_ZNK5clang4ento19PathDiagnosticPiece7ProfileERN4llvm16FoldingSetNodeIDE", "clang::ento::PathDiagnosticPiece::Profile(llvm::FoldingSetNodeID&) const"}, + {"_ZNK5clang4ento23PathDiagnosticSpotPiece7ProfileERN4llvm16FoldingSetNodeIDE", "clang::ento::PathDiagnosticSpotPiece::Profile(llvm::FoldingSetNodeID&) const"}, + {"_ZNK5clang4ento30PathDiagnosticControlFlowPiece7ProfileERN4llvm16FoldingSetNodeIDE", "clang::ento::PathDiagnosticControlFlowPiece::Profile(llvm::FoldingSetNodeID&) const"}, + {"_ZNK5clang4ento24PathDiagnosticMacroPiece7ProfileERN4llvm16FoldingSetNodeIDE", "clang::ento::PathDiagnosticMacroPiece::Profile(llvm::FoldingSetNodeID&) const"}, + {"_ZNK5clang4ento14PathDiagnostic7ProfileERN4llvm16FoldingSetNodeIDE", "clang::ento::PathDiagnostic::Profile(llvm::FoldingSetNodeID&) const"}, + {"_ZNSt11_Deque_baseIPN5clang4ento19PathDiagnosticPieceESaIS3_EE17_M_initialize_mapEm", "std::_Deque_base>::_M_initialize_map(unsigned long)"}, + {"_ZN5clang4ento23PathDiagnosticSpotPieceC2ERKNS0_22PathDiagnosticLocationEN4llvm9StringRefENS0_19PathDiagnosticPiece4KindEb", "clang::ento::PathDiagnosticSpotPiece::PathDiagnosticSpotPiece(clang::ento::PathDiagnosticLocation const&, llvm::StringRef, clang::ento::PathDiagnosticPiece::Kind, bool)"}, + {"_ZN5clang4ento27createPlistDiagnosticClientERKSsRKNS_12PreprocessorEPNS0_20PathDiagnosticClientE", "clang::ento::createPlistDiagnosticClient(std::string const&, clang::Preprocessor const&, clang::ento::PathDiagnosticClient*)"}, + {"_ZN12_GLOBAL__N_116PlistDiagnosticsD1Ev", "(anonymous namespace)::PlistDiagnostics::~PlistDiagnostics()"}, + {"_ZN12_GLOBAL__N_116PlistDiagnosticsD0Ev", "(anonymous namespace)::PlistDiagnostics::~PlistDiagnostics()"}, + {"_ZN12_GLOBAL__N_116PlistDiagnostics16FlushDiagnosticsEPN4llvm15SmallVectorImplISsEE", "(anonymous namespace)::PlistDiagnostics::FlushDiagnostics(llvm::SmallVectorImpl*)"}, + {"_ZNK12_GLOBAL__N_116PlistDiagnostics7getNameEv", "(anonymous namespace)::PlistDiagnostics::getName() const"}, + {"_ZN12_GLOBAL__N_116PlistDiagnostics20HandlePathDiagnosticEPKN5clang4ento14PathDiagnosticE", "(anonymous namespace)::PlistDiagnostics::HandlePathDiagnostic(clang::ento::PathDiagnostic const*)"}, + {"_ZNK12_GLOBAL__N_116PlistDiagnostics19getGenerationSchemeEv", "(anonymous namespace)::PlistDiagnostics::getGenerationScheme() const"}, + {"_ZNK12_GLOBAL__N_116PlistDiagnostics28supportsLogicalOpControlFlowEv", "(anonymous namespace)::PlistDiagnostics::supportsLogicalOpControlFlow() const"}, + {"_ZNK12_GLOBAL__N_116PlistDiagnostics21supportsAllBlockEdgesEv", "(anonymous namespace)::PlistDiagnostics::supportsAllBlockEdges() const"}, + {"_ZNK12_GLOBAL__N_116PlistDiagnostics21useVerboseDescriptionEv", "(anonymous namespace)::PlistDiagnostics::useVerboseDescription() const"}, + {"_Z6AddFIDRN4llvm8DenseMapIN5clang6FileIDEjNS_12DenseMapInfoIS2_EENS3_IjEEEERNS_15SmallVectorImplIS2_EEPKNS1_13SourceManagerENS1_14SourceLocationE", "AddFID(llvm::DenseMap, llvm::DenseMapInfo>&, llvm::SmallVectorImpl&, clang::SourceManager const*, clang::SourceLocation)"}, + {"_Z10EmitStringRN4llvm11raw_ostreamERKSs", "EmitString(llvm::raw_ostream&, std::string const&)"}, + {"_Z12EmitLocationRN4llvm11raw_ostreamERKN5clang13SourceManagerERKNS2_11LangOptionsENS2_14SourceLocationERKNS_8DenseMapINS2_6FileIDEjNS_12DenseMapInfoISB_EENSC_IjEEEEjb", "EmitLocation(llvm::raw_ostream&, clang::SourceManager const&, clang::LangOptions const&, clang::SourceLocation, llvm::DenseMap, llvm::DenseMapInfo> const&, unsigned int, bool)"}, + {"_Z11ReportEventRN4llvm11raw_ostreamERKN5clang4ento19PathDiagnosticPieceERKNS_8DenseMapINS2_6FileIDEjNS_12DenseMapInfoIS8_EENS9_IjEEEERKNS2_13SourceManagerERKNS2_11LangOptionsEj", "ReportEvent(llvm::raw_ostream&, clang::ento::PathDiagnosticPiece const&, llvm::DenseMap, llvm::DenseMapInfo> const&, clang::SourceManager const&, clang::LangOptions const&, unsigned int)"}, + {"_Z11ReportMacroRN4llvm11raw_ostreamERKN5clang4ento24PathDiagnosticMacroPieceERKNS_8DenseMapINS2_6FileIDEjNS_12DenseMapInfoIS8_EENS9_IjEEEERKNS2_13SourceManagerERKNS2_11LangOptionsEj", "ReportMacro(llvm::raw_ostream&, clang::ento::PathDiagnosticMacroPiece const&, llvm::DenseMap, llvm::DenseMapInfo> const&, clang::SourceManager const&, clang::LangOptions const&, unsigned int)"}, + {"_Z9EmitRangeRN4llvm11raw_ostreamERKN5clang13SourceManagerERKNS2_11LangOptionsENS2_4ento19PathDiagnosticRangeERKNS_8DenseMapINS2_6FileIDEjNS_12DenseMapInfoISC_EENSD_IjEEEEj", "EmitRange(llvm::raw_ostream&, clang::SourceManager const&, clang::LangOptions const&, clang::ento::PathDiagnosticRange, llvm::DenseMap, llvm::DenseMapInfo> const&, unsigned int)"}, + + // {"_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPKN5clang4ento14PathDiagnosticESt6vectorIS6_SaIS6_EEEElN12_GLOBAL__N_118CompareDiagnosticsEEvT_SE_T0_T1_", + // "void std::__introsort_loop<__gnu_cxx::__normal_iterator>>, long, (anonymous namespace)::CompareDiagnostics>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, long, (anonymous namespace)::CompareDiagnostics)"}, + // got error + + + // {"_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPPKN5clang4ento14PathDiagnosticESt6vectorIS6_SaIS6_EEEEN12_GLOBAL__N_118CompareDiagnosticsEEvT_SE_T0_", + // "void std::__insertion_sort<__gnu_cxx::__normal_iterator>>, (anonymous namespace)::CompareDiagnostics>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, (anonymous namespace)::CompareDiagnostics)"}, + // got error + + {"_ZNK12_GLOBAL__N_118CompareDiagnosticsclEPKN5clang4ento14PathDiagnosticES5_", "(anonymous namespace)::CompareDiagnostics::operator()(clang::ento::PathDiagnostic const*, clang::ento::PathDiagnostic const*) const"}, + + // {"_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPKN5clang4ento14PathDiagnosticESt6vectorIS6_SaIS6_EEEElS6_N12_GLOBAL__N_118CompareDiagnosticsEEvT_T0_SF_T1_T2_", + // "void std::__adjust_heap<__gnu_cxx::__normal_iterator>>, long, clang::ento::PathDiagnostic const*, (anonymous namespace)::CompareDiagnostics>(__gnu_cxx::__normal_iterator>>, long, long, clang::ento::PathDiagnostic const*, (anonymous namespace)::CompareDiagnostics)"}, + // got error + + {"_ZNSt6vectorIPKN5clang4ento14PathDiagnosticESaIS4_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS4_S6_EERKS4_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, clang::ento::PathDiagnostic const* const&)"}, + {"_ZN4llvm8DenseMapIN5clang6FileIDEjNS_12DenseMapInfoIS2_EENS3_IjEEE16InsertIntoBucketERKS2_RKjPSt4pairIS2_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::FileID const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIN5clang6FileIDEjNS_12DenseMapInfoIS2_EENS3_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang4ento28CreateRangeConstraintManagerERNS0_14GRStateManagerERNS0_9SubEngineE", "clang::ento::CreateRangeConstraintManager(clang::ento::GRStateManager&, clang::ento::SubEngine&)"}, + {"_ZN12_GLOBAL__N_122RangeConstraintManagerD1Ev", "(anonymous namespace)::RangeConstraintManager::~RangeConstraintManager()"}, + {"_ZN12_GLOBAL__N_122RangeConstraintManagerD0Ev", "(anonymous namespace)::RangeConstraintManager::~RangeConstraintManager()"}, + {"_ZNK12_GLOBAL__N_122RangeConstraintManager9getSymValEPKN5clang4ento7GRStateEPKNS2_10SymbolDataE", "(anonymous namespace)::RangeConstraintManager::getSymVal(clang::ento::GRState const*, clang::ento::SymbolData const*) const"}, + {"_ZNK12_GLOBAL__N_122RangeConstraintManager7isEqualEPKN5clang4ento7GRStateEPKNS2_10SymbolDataERKN4llvm6APSIntE", "(anonymous namespace)::RangeConstraintManager::isEqual(clang::ento::GRState const*, clang::ento::SymbolData const*, llvm::APSInt const&) const"}, + {"_ZN12_GLOBAL__N_122RangeConstraintManager18removeDeadBindingsEPKN5clang4ento7GRStateERNS2_12SymbolReaperE", "(anonymous namespace)::RangeConstraintManager::removeDeadBindings(clang::ento::GRState const*, clang::ento::SymbolReaper&)"}, + {"_ZN12_GLOBAL__N_122RangeConstraintManager5printEPKN5clang4ento7GRStateERN4llvm11raw_ostreamEPKcSA_", "(anonymous namespace)::RangeConstraintManager::print(clang::ento::GRState const*, llvm::raw_ostream&, char const*, char const*)"}, + {"_ZN12_GLOBAL__N_122RangeConstraintManager11assumeSymNEEPKN5clang4ento7GRStateEPKNS2_10SymbolDataERKN4llvm6APSIntESC_", "(anonymous namespace)::RangeConstraintManager::assumeSymNE(clang::ento::GRState const*, clang::ento::SymbolData const*, llvm::APSInt const&, llvm::APSInt const&)"}, + {"_ZN12_GLOBAL__N_122RangeConstraintManager11assumeSymEQEPKN5clang4ento7GRStateEPKNS2_10SymbolDataERKN4llvm6APSIntESC_", "(anonymous namespace)::RangeConstraintManager::assumeSymEQ(clang::ento::GRState const*, clang::ento::SymbolData const*, llvm::APSInt const&, llvm::APSInt const&)"}, + {"_ZN12_GLOBAL__N_122RangeConstraintManager11assumeSymLTEPKN5clang4ento7GRStateEPKNS2_10SymbolDataERKN4llvm6APSIntESC_", "(anonymous namespace)::RangeConstraintManager::assumeSymLT(clang::ento::GRState const*, clang::ento::SymbolData const*, llvm::APSInt const&, llvm::APSInt const&)"}, + {"_ZN12_GLOBAL__N_122RangeConstraintManager11assumeSymGTEPKN5clang4ento7GRStateEPKNS2_10SymbolDataERKN4llvm6APSIntESC_", "(anonymous namespace)::RangeConstraintManager::assumeSymGT(clang::ento::GRState const*, clang::ento::SymbolData const*, llvm::APSInt const&, llvm::APSInt const&)"}, + {"_ZN12_GLOBAL__N_122RangeConstraintManager11assumeSymLEEPKN5clang4ento7GRStateEPKNS2_10SymbolDataERKN4llvm6APSIntESC_", "(anonymous namespace)::RangeConstraintManager::assumeSymLE(clang::ento::GRState const*, clang::ento::SymbolData const*, llvm::APSInt const&, llvm::APSInt const&)"}, + {"_ZN12_GLOBAL__N_122RangeConstraintManager11assumeSymGEEPKN5clang4ento7GRStateEPKNS2_10SymbolDataERKN4llvm6APSIntESC_", "(anonymous namespace)::RangeConstraintManager::assumeSymGE(clang::ento::GRState const*, clang::ento::SymbolData const*, llvm::APSInt const&, llvm::APSInt const&)"}, + {"_ZN12_GLOBAL__N_122RangeConstraintManager8GetRangeEPKN5clang4ento7GRStateEPKNS2_10SymbolDataE", "(anonymous namespace)::RangeConstraintManager::GetRange(clang::ento::GRState const*, clang::ento::SymbolData const*)"}, + + // {"_ZNK12_GLOBAL__N_18RangeSet9IntersectERN5clang4ento17BasicValueFactoryERN4llvm12ImmutableSetINS_5RangeENS_10RangeTraitEE7FactoryERKNS5_6APSIntESE_", + // "(anonymous namespace)::RangeSet::Intersect(clang::ento::BasicValueFactory&, llvm::ImmutableSet<(anonymous namespace)::Range, (anonymous namespace)::RangeTrait>::Factory&, llvm::APSInt const&, llvm::APSInt const&) const"}, + // got error + + + // {"_ZNK5clang4ento7GRState3setIN12_GLOBAL__N_115ConstraintRangeEEEPKS1_NS0_12GRStateTraitIT_E8key_typeENS9_10value_typeE", + // "clang::ento::GRState const* clang::ento::GRState::set<(anonymous namespace)::ConstraintRange>(clang::ento::GRStateTrait<(anonymous namespace)::ConstraintRange>::key_type, clang::ento::GRStateTrait<(anonymous namespace)::ConstraintRange>::value_type) const"}, + // "clang::ento::GRState const* clang::ento::GRState::set<(anonymous namespace)::ConstraintRange>(clang::ento::GRStateTrait<(anonymous namespace)::ConstraintRange>::key_type, clang::ento::GRStateTrait<(anonymous namespace)::ConstraintRange>::key_type::value_type) const" was returned + + {"_ZN5clang4ento19GRStatePartialTraitIN4llvm12ImmutableMapIPKNS0_10SymbolDataEN12_GLOBAL__N_18RangeSetENS2_16ImutKeyValueInfoIS6_S8_EEEEE13CreateContextERNS2_16BumpPtrAllocatorE", "clang::ento::GRStatePartialTrait>>::CreateContext(llvm::BumpPtrAllocator&)"}, + {"_ZN5clang4ento19GRStatePartialTraitIN4llvm12ImmutableMapIPKNS0_10SymbolDataEN12_GLOBAL__N_18RangeSetENS2_16ImutKeyValueInfoIS6_S8_EEEEE13DeleteContextEPv", "clang::ento::GRStatePartialTrait>>::DeleteContext(void*)"}, + {"_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_18RangeSetEEEE7destroyEv", "llvm::ImutAVLTree>::destroy()"}, + {"_ZN4llvm8DenseMapIjPNS_11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_18RangeSetEEEEENS_12DenseMapInfoIjEENSD_ISC_EEEixERKj", "llvm::DenseMap>*, llvm::DenseMapInfo, llvm::DenseMapInfo>*>>::operator[](unsigned int const&)"}, + {"_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_18RangeSetEEEE13computeDigestEv", "llvm::ImutAVLTree>::computeDigest()"}, + {"_ZNSt6vectorIPN4llvm11ImutAVLTreeINS0_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_18RangeSetEEEEESaISC_EE9push_backERKSC_", "std::vector>*, std::allocator>*>>::push_back(llvm::ImutAVLTree>* const&)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_18RangeSetEEEE16getCanonicalTreeEPNS_11ImutAVLTreeIS9_EE", "llvm::ImutAVLFactory>::getCanonicalTree(llvm::ImutAVLTree>*)"}, + {"_ZN4llvm26ImutAVLTreeInOrderIteratorINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_18RangeSetEEEEppEv", "llvm::ImutAVLTreeInOrderIterator>::operator++()"}, + {"_ZN4llvm26ImutAVLTreeGenericIteratorIN12_GLOBAL__N_110RangeTraitEEppEv", "llvm::ImutAVLTreeGenericIterator<(anonymous namespace)::RangeTrait>::operator++()"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_18RangeSetEEEE12add_internalERKSt4pairIS6_S8_EPNS_11ImutAVLTreeIS9_EE", "llvm::ImutAVLFactory>::add_internal(std::pair const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_18RangeSetEEEE13markImmutableEPNS_11ImutAVLTreeIS9_EE", "llvm::ImutAVLFactory>::markImmutable(llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_18RangeSetEEEE10createNodeEPNS_11ImutAVLTreeIS9_EERKSt4pairIS6_S8_ESD_", "llvm::ImutAVLFactory>::createNode(llvm::ImutAVLTree>*, std::pair const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_18RangeSetEEEE11balanceTreeEPNS_11ImutAVLTreeIS9_EERKSt4pairIS6_S8_ESD_", "llvm::ImutAVLFactory>::balanceTree(llvm::ImutAVLTree>*, std::pair const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm11ImutAVLTreeIN12_GLOBAL__N_110RangeTraitEE7destroyEv", "llvm::ImutAVLTree<(anonymous namespace)::RangeTrait>::destroy()"}, + {"_ZN4llvm8DenseMapIjPNS_11ImutAVLTreeIN12_GLOBAL__N_110RangeTraitEEENS_12DenseMapInfoIjEENS6_IS5_EEEixERKj", "llvm::DenseMap*, llvm::DenseMapInfo, llvm::DenseMapInfo*>>::operator[](unsigned int const&)"}, + {"_ZN4llvm11ImutAVLTreeIN12_GLOBAL__N_110RangeTraitEE13computeDigestEv", "llvm::ImutAVLTree<(anonymous namespace)::RangeTrait>::computeDigest()"}, + {"_ZNSt6vectorIPN4llvm11ImutAVLTreeIN12_GLOBAL__N_110RangeTraitEEESaIS5_EE9push_backERKS5_", "std::vector*, std::allocator*>>::push_back(llvm::ImutAVLTree<(anonymous namespace)::RangeTrait>* const&)"}, + + // {"_ZNK12_GLOBAL__N_18RangeSet16IntersectInRangeERN5clang4ento17BasicValueFactoryERN4llvm12ImmutableSetINS_5RangeENS_10RangeTraitEE7FactoryERKNS5_6APSIntESE_RS9_RNS9_8iteratorESH_", + // "(anonymous namespace)::RangeSet::IntersectInRange(clang::ento::BasicValueFactory&, llvm::ImmutableSet<(anonymous namespace)::Range, (anonymous namespace)::RangeTrait>::Factory&, llvm::APSInt const&, llvm::APSInt const&, llvm::ImmutableSet<(anonymous namespace)::Range, (anonymous namespace)::RangeTrait>&, llvm::ImmutableSet<(anonymous namespace)::Range, (anonymous namespace)::RangeTrait>::iterator&, llvm::ImmutableSet<(anonymous namespace)::Range, (anonymous namespace)::RangeTrait>::iterator&) const"}, + // got error + + {"_ZN4llvm12ImmutableSetIN12_GLOBAL__N_15RangeENS1_10RangeTraitEE7Factory3addES4_RKS2_", "llvm::ImmutableSet<(anonymous namespace)::Range, (anonymous namespace)::RangeTrait>::Factory::add(llvm::ImmutableSet<(anonymous namespace)::Range, (anonymous namespace)::RangeTrait>, (anonymous namespace)::Range const&)"}, + {"_ZN4llvm14ImutAVLFactoryIN12_GLOBAL__N_110RangeTraitEE12add_internalERKNS1_5RangeEPNS_11ImutAVLTreeIS2_EE", "llvm::ImutAVLFactory<(anonymous namespace)::RangeTrait>::add_internal((anonymous namespace)::Range const&, llvm::ImutAVLTree<(anonymous namespace)::RangeTrait>*)"}, + {"_ZN4llvm14ImutAVLFactoryIN12_GLOBAL__N_110RangeTraitEE13markImmutableEPNS_11ImutAVLTreeIS2_EE", "llvm::ImutAVLFactory<(anonymous namespace)::RangeTrait>::markImmutable(llvm::ImutAVLTree<(anonymous namespace)::RangeTrait>*)"}, + {"_ZN4llvm14ImutAVLFactoryIN12_GLOBAL__N_110RangeTraitEE10createNodeEPNS_11ImutAVLTreeIS2_EERKNS1_5RangeES6_", "llvm::ImutAVLFactory<(anonymous namespace)::RangeTrait>::createNode(llvm::ImutAVLTree<(anonymous namespace)::RangeTrait>*, (anonymous namespace)::Range const&, llvm::ImutAVLTree<(anonymous namespace)::RangeTrait>*)"}, + {"_ZN4llvm14ImutAVLFactoryIN12_GLOBAL__N_110RangeTraitEE11balanceTreeEPNS_11ImutAVLTreeIS2_EERKNS1_5RangeES6_", "llvm::ImutAVLFactory<(anonymous namespace)::RangeTrait>::balanceTree(llvm::ImutAVLTree<(anonymous namespace)::RangeTrait>*, (anonymous namespace)::Range const&, llvm::ImutAVLTree<(anonymous namespace)::RangeTrait>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_18RangeSetEEEE15remove_internalERKS6_PNS_11ImutAVLTreeIS9_EE", "llvm::ImutAVLFactory>::remove_internal(clang::ento::SymbolData const* const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIPKN5clang4ento10SymbolDataEN12_GLOBAL__N_18RangeSetEEEE16removeMinBindingEPNS_11ImutAVLTreeIS9_EERSD_", "llvm::ImutAVLFactory>::removeMinBinding(llvm::ImutAVLTree>*, llvm::ImutAVLTree>*&)"}, + {"_ZN5clang4ento17ConstraintManager7EndPathEPKNS0_7GRStateE", "clang::ento::ConstraintManager::EndPath(clang::ento::GRState const*)"}, + {"_ZN4llvm6APSInt11getMaxValueEjb", "llvm::APSInt::getMaxValue(unsigned int, bool)"}, + {"_ZN4llvm6APSInt11getMinValueEjb", "llvm::APSInt::getMinValue(unsigned int, bool)"}, + {"_ZN5clang4ento24CreateRegionStoreManagerERNS0_14GRStateManagerE", "clang::ento::CreateRegionStoreManager(clang::ento::GRStateManager&)"}, + {"_ZN5clang4ento34CreateFieldsOnlyRegionStoreManagerERNS0_14GRStateManagerE", "clang::ento::CreateFieldsOnlyRegionStoreManager(clang::ento::GRStateManager&)"}, + {"_ZN12_GLOBAL__N_118RegionStoreManagerD1Ev", "(anonymous namespace)::RegionStoreManager::~RegionStoreManager()"}, + {"_ZN12_GLOBAL__N_118RegionStoreManagerD0Ev", "(anonymous namespace)::RegionStoreManager::~RegionStoreManager()"}, + {"_ZN12_GLOBAL__N_118RegionStoreManager8RetrieveEPKvN5clang4ento3LocENS3_8QualTypeE", "(anonymous namespace)::RegionStoreManager::Retrieve(void const*, clang::ento::Loc, clang::QualType)"}, + {"_ZN12_GLOBAL__N_118RegionStoreManager4BindEPKvN5clang4ento3LocENS4_4SValE", "(anonymous namespace)::RegionStoreManager::Bind(void const*, clang::ento::Loc, clang::ento::SVal)"}, + {"_ZN12_GLOBAL__N_118RegionStoreManager11BindDefaultEPKvPKN5clang4ento9MemRegionENS4_4SValE", "(anonymous namespace)::RegionStoreManager::BindDefault(void const*, clang::ento::MemRegion const*, clang::ento::SVal)"}, + {"_ZN12_GLOBAL__N_118RegionStoreManager6RemoveEPKvN5clang4ento3LocE", "(anonymous namespace)::RegionStoreManager::Remove(void const*, clang::ento::Loc)"}, + {"_ZN12_GLOBAL__N_118RegionStoreManager19BindCompoundLiteralEPKvPKN5clang19CompoundLiteralExprEPKNS3_15LocationContextENS3_4ento4SValE", "(anonymous namespace)::RegionStoreManager::BindCompoundLiteral(void const*, clang::CompoundLiteralExpr const*, clang::LocationContext const*, clang::ento::SVal)"}, + {"_ZN12_GLOBAL__N_118RegionStoreManager15getInitialStoreEPKN5clang15LocationContextE", "(anonymous namespace)::RegionStoreManager::getInitialStore(clang::LocationContext const*)"}, + {"_ZN12_GLOBAL__N_118RegionStoreManager15getSubRegionMapEPKv", "(anonymous namespace)::RegionStoreManager::getSubRegionMap(void const*)"}, + {"_ZN12_GLOBAL__N_118RegionStoreManager17getSizeInElementsEPKN5clang4ento7GRStateEPKNS2_9MemRegionENS1_8QualTypeE", "(anonymous namespace)::RegionStoreManager::getSizeInElements(clang::ento::GRState const*, clang::ento::MemRegion const*, clang::QualType)"}, + {"_ZN12_GLOBAL__N_118RegionStoreManager14ArrayToPointerEN5clang4ento3LocE", "(anonymous namespace)::RegionStoreManager::ArrayToPointer(clang::ento::Loc)"}, + {"_ZN12_GLOBAL__N_118RegionStoreManager17evalDerivedToBaseEN5clang4ento4SValENS1_8QualTypeE", "(anonymous namespace)::RegionStoreManager::evalDerivedToBase(clang::ento::SVal, clang::QualType)"}, + {"_ZN12_GLOBAL__N_118RegionStoreManager18removeDeadBindingsEPKvPKN5clang17StackFrameContextERNS3_4ento12SymbolReaperERN4llvm15SmallVectorImplIPKNS7_9MemRegionEEE", "(anonymous namespace)::RegionStoreManager::removeDeadBindings(void const*, clang::StackFrameContext const*, clang::ento::SymbolReaper&, llvm::SmallVectorImpl&)"}, + {"_ZN12_GLOBAL__N_118RegionStoreManager8BindDeclEPKvPKN5clang4ento9VarRegionENS4_4SValE", "(anonymous namespace)::RegionStoreManager::BindDecl(void const*, clang::ento::VarRegion const*, clang::ento::SVal)"}, + {"_ZN12_GLOBAL__N_118RegionStoreManager18BindDeclWithNoInitEPKvPKN5clang4ento9VarRegionE", "(anonymous namespace)::RegionStoreManager::BindDeclWithNoInit(void const*, clang::ento::VarRegion const*)"}, + + // {"_ZN12_GLOBAL__N_118RegionStoreManager17InvalidateRegionsEPKvPKPKN5clang4ento9MemRegionES9_PKNS3_4ExprEjPN4llvm8DenseSetIPKNS4_10SymbolDataENSD_12DenseMapInfoISH_EEEEbPNSD_11SmallVectorIS7_Lj8EEE", + // "(anonymous namespace)::RegionStoreManager::InvalidateRegions(void const*, clang::ento::MemRegion const* const*, clang::ento::MemRegion const* const*, clang::Expr const*, unsigned int, llvm::DenseSet>*, bool, llvm::SmallVector*)"}, + // "(anonymous namespace)::RegionStoreManager::InvalidateRegions(void const*, clang::ento::MemRegion const* const*, clang::ento::MemRegion const* const*, clang::Expr const*, unsigned int, llvm::DenseSet>*, bool, llvm::SmallVector*)" was returned + + {"_ZN12_GLOBAL__N_118RegionStoreManager15enterStackFrameEPKN5clang4ento7GRStateEPKNS1_17StackFrameContextE", "(anonymous namespace)::RegionStoreManager::enterStackFrame(clang::ento::GRState const*, clang::StackFrameContext const*)"}, + {"_ZN12_GLOBAL__N_118RegionStoreManager5printEPKvRN4llvm11raw_ostreamEPKcS7_", "(anonymous namespace)::RegionStoreManager::print(void const*, llvm::raw_ostream&, char const*, char const*)"}, + {"_ZN12_GLOBAL__N_118RegionStoreManager12iterBindingsEPKvRN5clang4ento12StoreManager15BindingsHandlerE", "(anonymous namespace)::RegionStoreManager::iterBindings(void const*, clang::ento::StoreManager::BindingsHandler&)"}, + {"_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIN12_GLOBAL__N_110BindingKeyEN5clang4ento4SValEEEE7destroyEv", "llvm::ImutAVLTree>::destroy()"}, + {"_ZN4llvm8DenseMapIjPNS_11ImutAVLTreeINS_16ImutKeyValueInfoIN12_GLOBAL__N_110BindingKeyEN5clang4ento4SValEEEEENS_12DenseMapInfoIjEENSB_ISA_EEEixERKj", "llvm::DenseMap>*, llvm::DenseMapInfo, llvm::DenseMapInfo>*>>::operator[](unsigned int const&)"}, + {"_ZN4llvm11ImutAVLTreeINS_16ImutKeyValueInfoIN12_GLOBAL__N_110BindingKeyEN5clang4ento4SValEEEE13computeDigestEv", "llvm::ImutAVLTree>::computeDigest()"}, + {"_ZNSt6vectorIPN4llvm11ImutAVLTreeINS0_16ImutKeyValueInfoIN12_GLOBAL__N_110BindingKeyEN5clang4ento4SValEEEEESaISA_EE9push_backERKSA_", "std::vector>*, std::allocator>*>>::push_back(llvm::ImutAVLTree>* const&)"}, + {"_ZN4llvm26ImutAVLTreeInOrderIteratorINS_16ImutKeyValueInfoIN12_GLOBAL__N_110BindingKeyEN5clang4ento4SValEEEEppEv", "llvm::ImutAVLTreeInOrderIterator>::operator++()"}, + {"_ZN12_GLOBAL__N_115ClusterAnalysisINS_23InvalidateRegionsWorkerEE13AddToWorkListEPKN5clang4ento9MemRegionE", "(anonymous namespace)::ClusterAnalysis<(anonymous namespace)::InvalidateRegionsWorker>::AddToWorkList(clang::ento::MemRegion const*)"}, + {"_ZN12_GLOBAL__N_118RegionStoreManager10addBindingEN4llvm12ImmutableMapINS_10BindingKeyEN5clang4ento4SValENS1_16ImutKeyValueInfoIS3_S6_EEEES3_S6_", "(anonymous namespace)::RegionStoreManager::addBinding(llvm::ImmutableMap<(anonymous namespace)::BindingKey, clang::ento::SVal, llvm::ImutKeyValueInfo<(anonymous namespace)::BindingKey, clang::ento::SVal>>, (anonymous namespace)::BindingKey, clang::ento::SVal)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIN12_GLOBAL__N_110BindingKeyEN5clang4ento4SValEEEE16getCanonicalTreeEPNS_11ImutAVLTreeIS7_EE", "llvm::ImutAVLFactory>::getCanonicalTree(llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIN12_GLOBAL__N_110BindingKeyEN5clang4ento4SValEEEE12add_internalERKSt4pairIS3_S6_EPNS_11ImutAVLTreeIS7_EE", "llvm::ImutAVLFactory>::add_internal(std::pair<(anonymous namespace)::BindingKey, clang::ento::SVal> const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIN12_GLOBAL__N_110BindingKeyEN5clang4ento4SValEEEE13markImmutableEPNS_11ImutAVLTreeIS7_EE", "llvm::ImutAVLFactory>::markImmutable(llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIN12_GLOBAL__N_110BindingKeyEN5clang4ento4SValEEEE10createNodeEPNS_11ImutAVLTreeIS7_EERKSt4pairIS3_S6_ESB_", "llvm::ImutAVLFactory>::createNode(llvm::ImutAVLTree>*, std::pair<(anonymous namespace)::BindingKey, clang::ento::SVal> const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIN12_GLOBAL__N_110BindingKeyEN5clang4ento4SValEEEE11balanceTreeEPNS_11ImutAVLTreeIS7_EERKSt4pairIS3_S6_ESB_", "llvm::ImutAVLFactory>::balanceTree(llvm::ImutAVLTree>*, std::pair<(anonymous namespace)::BindingKey, clang::ento::SVal> const&, llvm::ImutAVLTree>*)"}, + {"_ZN12_GLOBAL__N_118RegionStoreManager13removeBindingEN4llvm12ImmutableMapINS_10BindingKeyEN5clang4ento4SValENS1_16ImutKeyValueInfoIS3_S6_EEEES3_", "(anonymous namespace)::RegionStoreManager::removeBinding(llvm::ImmutableMap<(anonymous namespace)::BindingKey, clang::ento::SVal, llvm::ImutKeyValueInfo<(anonymous namespace)::BindingKey, clang::ento::SVal>>, (anonymous namespace)::BindingKey)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIN12_GLOBAL__N_110BindingKeyEN5clang4ento4SValEEEE15remove_internalERKS3_PNS_11ImutAVLTreeIS7_EE", "llvm::ImutAVLFactory>::remove_internal((anonymous namespace)::BindingKey const&, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_16ImutKeyValueInfoIN12_GLOBAL__N_110BindingKeyEN5clang4ento4SValEEEE16removeMinBindingEPNS_11ImutAVLTreeIS7_EERSB_", "llvm::ImutAVLFactory>::removeMinBinding(llvm::ImutAVLTree>*, llvm::ImutAVLTree>*&)"}, + {"_ZN12_GLOBAL__N_123InvalidateRegionsWorker12VisitBindingEN5clang4ento4SValE", "(anonymous namespace)::InvalidateRegionsWorker::VisitBinding(clang::ento::SVal)"}, + {"_ZN12_GLOBAL__N_115ClusterAnalysisINS_23InvalidateRegionsWorkerEE10getClusterEPKN5clang4ento9MemRegionE", "(anonymous namespace)::ClusterAnalysis<(anonymous namespace)::InvalidateRegionsWorker>::getCluster(clang::ento::MemRegion const*)"}, + {"_ZN4llvm8DenseMapIPKN5clang4ento9MemRegionEPNS1_10BumpVectorIN12_GLOBAL__N_110BindingKeyEEENS_12DenseMapInfoIS5_EENSB_ISA_EEEixERKS5_", "llvm::DenseMap*, llvm::DenseMapInfo, llvm::DenseMapInfo*>>::operator[](clang::ento::MemRegion const* const&)"}, + {"_ZN4llvm8DenseMapIPKN5clang10BumpVectorIN12_GLOBAL__N_110BindingKeyEEEjNS_12DenseMapInfoIS7_EENS8_IjEEEixERKS7_", "llvm::DenseMap const*, unsigned int, llvm::DenseMapInfo const*>, llvm::DenseMapInfo>::operator[](clang::BumpVector<(anonymous namespace)::BindingKey> const* const&)"}, + {"_ZN5clang10BumpVectorIN12_GLOBAL__N_110BindingKeyEE9push_backERKS2_RNS_17BumpVectorContextE", "clang::BumpVector<(anonymous namespace)::BindingKey>::push_back((anonymous namespace)::BindingKey const&, clang::BumpVectorContext&)"}, + {"_ZN12_GLOBAL__N_118RegionStoreManager9BindArrayEPKvPKN5clang4ento11TypedRegionENS4_4SValE", "(anonymous namespace)::RegionStoreManager::BindArray(void const*, clang::ento::TypedRegion const*, clang::ento::SVal)"}, + {"_ZN12_GLOBAL__N_118RegionStoreManager10BindStructEPKvPKN5clang4ento11TypedRegionENS4_4SValE", "(anonymous namespace)::RegionStoreManager::BindStruct(void const*, clang::ento::TypedRegion const*, clang::ento::SVal)"}, + {"_ZN12_GLOBAL__N_118RegionStoreManager16CopyLazyBindingsEN5clang4ento6nonloc15LazyCompoundValEPKvPKNS2_11TypedRegionE", "(anonymous namespace)::RegionStoreManager::CopyLazyBindings(clang::ento::nonloc::LazyCompoundVal, void const*, clang::ento::TypedRegion const*)"}, + {"_ZN12_GLOBAL__N_118RegionStoreManager10KillStructEPKvPKN5clang4ento11TypedRegionENS4_4SValE", "(anonymous namespace)::RegionStoreManager::KillStruct(void const*, clang::ento::TypedRegion const*, clang::ento::SVal)"}, + {"_ZN12_GLOBAL__N_118RegionStoreManager26getRegionStoreSubRegionMapEPKv", "(anonymous namespace)::RegionStoreManager::getRegionStoreSubRegionMap(void const*)"}, + {"_ZN12_GLOBAL__N_118RegionStoreManager23RemoveSubRegionBindingsERN4llvm12ImmutableMapINS_10BindingKeyEN5clang4ento4SValENS1_16ImutKeyValueInfoIS3_S6_EEEEPKNS5_9MemRegionERNS_23RegionStoreSubRegionMapE", "(anonymous namespace)::RegionStoreManager::RemoveSubRegionBindings(llvm::ImmutableMap<(anonymous namespace)::BindingKey, clang::ento::SVal, llvm::ImutKeyValueInfo<(anonymous namespace)::BindingKey, clang::ento::SVal>>&, clang::ento::MemRegion const*, (anonymous namespace)::RegionStoreSubRegionMap&)"}, + {"_ZN12_GLOBAL__N_123RegionStoreSubRegionMap7processERN4llvm15SmallVectorImplIPKN5clang4ento9SubRegionEEES7_", "(anonymous namespace)::RegionStoreSubRegionMap::process(llvm::SmallVectorImpl&, clang::ento::SubRegion const*)"}, + {"_ZN12_GLOBAL__N_123RegionStoreSubRegionMapD1Ev", "(anonymous namespace)::RegionStoreSubRegionMap::~RegionStoreSubRegionMap()"}, + {"_ZN12_GLOBAL__N_123RegionStoreSubRegionMapD0Ev", "(anonymous namespace)::RegionStoreSubRegionMap::~RegionStoreSubRegionMap()"}, + {"_ZNK12_GLOBAL__N_123RegionStoreSubRegionMap14iterSubRegionsEPKN5clang4ento9MemRegionERNS2_12SubRegionMap7VisitorE", "(anonymous namespace)::RegionStoreSubRegionMap::iterSubRegions(clang::ento::MemRegion const*, clang::ento::SubRegionMap::Visitor&) const"}, + {"_ZN12_GLOBAL__N_118RegionStoreManager23setImplicitDefaultValueEPKvPKN5clang4ento9MemRegionENS3_8QualTypeE", "(anonymous namespace)::RegionStoreManager::setImplicitDefaultValue(void const*, clang::ento::MemRegion const*, clang::QualType)"}, + {"_ZN12_GLOBAL__N_115ClusterAnalysisINS_24removeDeadBindingsWorkerEE13AddToWorkListEPKN5clang4ento9MemRegionE", "(anonymous namespace)::ClusterAnalysis<(anonymous namespace)::removeDeadBindingsWorker>::AddToWorkList(clang::ento::MemRegion const*)"}, + {"_ZN12_GLOBAL__N_124removeDeadBindingsWorker12VisitBindingEN5clang4ento4SValE", "(anonymous namespace)::removeDeadBindingsWorker::VisitBinding(clang::ento::SVal)"}, + {"_ZN12_GLOBAL__N_118RegionStoreManager13RetrieveFieldEPKvPKN5clang4ento11FieldRegionE", "(anonymous namespace)::RegionStoreManager::RetrieveField(void const*, clang::ento::FieldRegion const*)"}, + {"_ZN12_GLOBAL__N_118RegionStoreManager15RetrieveElementEPKvPKN5clang4ento13ElementRegionE", "(anonymous namespace)::RegionStoreManager::RetrieveElement(void const*, clang::ento::ElementRegion const*)"}, + {"_ZN12_GLOBAL__N_118RegionStoreManager27RetrieveDerivedDefaultValueEN4llvm12ImmutableMapINS_10BindingKeyEN5clang4ento4SValENS1_16ImutKeyValueInfoIS3_S6_EEEEPKNS5_9MemRegionEPKNS5_11TypedRegionENS4_8QualTypeE", "(anonymous namespace)::RegionStoreManager::RetrieveDerivedDefaultValue(llvm::ImmutableMap<(anonymous namespace)::BindingKey, clang::ento::SVal, llvm::ImutKeyValueInfo<(anonymous namespace)::BindingKey, clang::ento::SVal>>, clang::ento::MemRegion const*, clang::ento::TypedRegion const*, clang::QualType)"}, + {"_ZN12_GLOBAL__N_118RegionStoreManager17getDefaultBindingEN4llvm12ImmutableMapINS_10BindingKeyEN5clang4ento4SValENS1_16ImutKeyValueInfoIS3_S6_EEEEPKNS5_9MemRegionE", "(anonymous namespace)::RegionStoreManager::getDefaultBinding(llvm::ImmutableMap<(anonymous namespace)::BindingKey, clang::ento::SVal, llvm::ImutKeyValueInfo<(anonymous namespace)::BindingKey, clang::ento::SVal>>, clang::ento::MemRegion const*)"}, + {"_ZN12_GLOBAL__N_118RegionStoreManager28RetrieveFieldOrElementCommonEPKvPKN5clang4ento11TypedRegionENS3_8QualTypeEPKNS4_9MemRegionE", "(anonymous namespace)::RegionStoreManager::RetrieveFieldOrElementCommon(void const*, clang::ento::TypedRegion const*, clang::QualType, clang::ento::MemRegion const*)"}, + {"_ZN12_GLOBAL__N_118RegionStoreManager14GetLazyBindingEN4llvm12ImmutableMapINS_10BindingKeyEN5clang4ento4SValENS1_16ImutKeyValueInfoIS3_S6_EEEEPKNS5_9MemRegionE", "(anonymous namespace)::RegionStoreManager::GetLazyBinding(llvm::ImmutableMap<(anonymous namespace)::BindingKey, clang::ento::SVal, llvm::ImutKeyValueInfo<(anonymous namespace)::BindingKey, clang::ento::SVal>>, clang::ento::MemRegion const*)"}, + {"_ZN4llvm26ImutAVLTreeGenericIteratorINS_17ImutContainerInfoIPKN5clang4ento9MemRegionEEEEppEv", "llvm::ImutAVLTreeGenericIterator>::operator++()"}, + {"_ZN4llvm8DenseMapIPKN5clang4ento9MemRegionENS_12ImmutableSetIS5_NS_17ImutContainerInfoIS5_EEEENS_12DenseMapInfoIS5_EENSA_IS9_EEE6insertERKSt4pairIS5_S9_E", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::insert(std::pair>> const&)"}, + {"_ZN4llvm11ImutAVLTreeINS_17ImutContainerInfoIPKN5clang4ento9MemRegionEEEE7destroyEv", "llvm::ImutAVLTree>::destroy()"}, + {"_ZN4llvm11ImutAVLTreeINS_17ImutContainerInfoIPKN5clang4ento9MemRegionEEEE13computeDigestEv", "llvm::ImutAVLTree>::computeDigest()"}, + {"_ZNSt6vectorIPN4llvm11ImutAVLTreeINS0_17ImutContainerInfoIPKN5clang4ento9MemRegionEEEEESaISA_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPSA_SC_EERKSA_", "std::vector>*, std::allocator>*>>::_M_insert_aux(__gnu_cxx::__normal_iterator>**, std::vector>*, std::allocator>*>>>, llvm::ImutAVLTree>* const&)"}, + {"_ZN4llvm8DenseMapIjPNS_11ImutAVLTreeINS_17ImutContainerInfoIPKN5clang4ento9MemRegionEEEEENS_12DenseMapInfoIjEENSB_ISA_EEE16InsertIntoBucketERKjRKSA_PSt4pairIjSA_E", "llvm::DenseMap>*, llvm::DenseMapInfo, llvm::DenseMapInfo>*>>::InsertIntoBucket(unsigned int const&, llvm::ImutAVLTree>* const&, std::pair>*>*)"}, + {"_ZN4llvm8DenseMapIjPNS_11ImutAVLTreeINS_17ImutContainerInfoIPKN5clang4ento9MemRegionEEEEENS_12DenseMapInfoIjEENSB_ISA_EEE4growEj", "llvm::DenseMap>*, llvm::DenseMapInfo, llvm::DenseMapInfo>*>>::grow(unsigned int)"}, + {"_ZN4llvm14ImutAVLFactoryINS_17ImutContainerInfoIPKN5clang4ento9MemRegionEEEE3addEPNS_11ImutAVLTreeIS7_EES6_", "llvm::ImutAVLFactory>::add(llvm::ImutAVLTree>*, clang::ento::MemRegion const*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_17ImutContainerInfoIPKN5clang4ento9MemRegionEEEE16getCanonicalTreeEPNS_11ImutAVLTreeIS7_EE", "llvm::ImutAVLFactory>::getCanonicalTree(llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_17ImutContainerInfoIPKN5clang4ento9MemRegionEEEE22compareTreeWithSectionEPNS_11ImutAVLTreeIS7_EERNS_26ImutAVLTreeInOrderIteratorIS7_EESE_", "llvm::ImutAVLFactory>::compareTreeWithSection(llvm::ImutAVLTree>*, llvm::ImutAVLTreeInOrderIterator>&, llvm::ImutAVLTreeInOrderIterator>&)"}, + {"_ZN4llvm14ImutAVLFactoryINS_17ImutContainerInfoIPKN5clang4ento9MemRegionEEEE12add_internalES6_PNS_11ImutAVLTreeIS7_EE", "llvm::ImutAVLFactory>::add_internal(clang::ento::MemRegion const*, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_17ImutContainerInfoIPKN5clang4ento9MemRegionEEEE13markImmutableEPNS_11ImutAVLTreeIS7_EE", "llvm::ImutAVLFactory>::markImmutable(llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_17ImutContainerInfoIPKN5clang4ento9MemRegionEEEE10createNodeEPNS_11ImutAVLTreeIS7_EES6_SB_", "llvm::ImutAVLFactory>::createNode(llvm::ImutAVLTree>*, clang::ento::MemRegion const*, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm14ImutAVLFactoryINS_17ImutContainerInfoIPKN5clang4ento9MemRegionEEEE11balanceTreeEPNS_11ImutAVLTreeIS7_EES6_SB_", "llvm::ImutAVLFactory>::balanceTree(llvm::ImutAVLTree>*, clang::ento::MemRegion const*, llvm::ImutAVLTree>*)"}, + {"_ZN4llvm8DenseMapIPKN5clang4ento9MemRegionENS_12ImmutableSetIS5_NS_17ImutContainerInfoIS5_EEEENS_12DenseMapInfoIS5_EENSA_IS9_EEE16InsertIntoBucketERKS5_RKS9_PSt4pairIS5_S9_E", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::InsertIntoBucket(clang::ento::MemRegion const* const&, llvm::ImmutableSet> const&, std::pair>>*)"}, + {"_ZN4llvm8DenseMapIPKN5clang4ento9MemRegionENS_12ImmutableSetIS5_NS_17ImutContainerInfoIS5_EEEENS_12DenseMapInfoIS5_EENSA_IS9_EEE4growEj", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::grow(unsigned int)"}, + {"_ZN4llvm14ImutAVLFactoryINS_17ImutContainerInfoIPKN5clang4ento9MemRegionEEEED2Ev", "llvm::ImutAVLFactory>::~ImutAVLFactory()"}, + {"_ZN4llvm14ImutAVLFactoryINS_17ImutContainerInfoIPKN5clang4ento9MemRegionEEEEC2Ev", "llvm::ImutAVLFactory>::ImutAVLFactory()"}, + {"_ZN5clang4ento11SValBuilder11makeZeroValENS_8QualTypeE", "clang::ento::SValBuilder::makeZeroVal(clang::QualType)"}, + {"_ZN5clang4ento11SValBuilder10makeNonLocEPKNS0_7SymExprENS_18BinaryOperatorKindERKN4llvm6APSIntENS_8QualTypeE", "clang::ento::SValBuilder::makeNonLoc(clang::ento::SymExpr const*, clang::BinaryOperatorKind, llvm::APSInt const&, clang::QualType)"}, + {"_ZN5clang4ento11SValBuilder10makeNonLocEPKNS0_7SymExprENS_18BinaryOperatorKindES4_NS_8QualTypeE", "clang::ento::SValBuilder::makeNonLoc(clang::ento::SymExpr const*, clang::BinaryOperatorKind, clang::ento::SymExpr const*, clang::QualType)"}, + {"_ZN5clang4ento11SValBuilder19convertToArrayIndexENS0_4SValE", "clang::ento::SValBuilder::convertToArrayIndex(clang::ento::SVal)"}, + {"_ZN5clang4ento11SValBuilder23getRegionValueSymbolValEPKNS0_11TypedRegionE", "clang::ento::SValBuilder::getRegionValueSymbolVal(clang::ento::TypedRegion const*)"}, + {"_ZN5clang4ento11SValBuilder20getConjuredSymbolValEPKvPKNS_4ExprEj", "clang::ento::SValBuilder::getConjuredSymbolVal(void const*, clang::Expr const*, unsigned int)"}, + {"_ZN5clang4ento11SValBuilder20getConjuredSymbolValEPKvPKNS_4ExprENS_8QualTypeEj", "clang::ento::SValBuilder::getConjuredSymbolVal(void const*, clang::Expr const*, clang::QualType, unsigned int)"}, + {"_ZN5clang4ento11SValBuilder20getMetadataSymbolValEPKvPKNS0_9MemRegionEPKNS_4ExprENS_8QualTypeEj", "clang::ento::SValBuilder::getMetadataSymbolVal(void const*, clang::ento::MemRegion const*, clang::Expr const*, clang::QualType, unsigned int)"}, + {"_ZN5clang4ento11SValBuilder30getDerivedRegionValueSymbolValEPKNS0_10SymbolDataEPKNS0_11TypedRegionE", "clang::ento::SValBuilder::getDerivedRegionValueSymbolVal(clang::ento::SymbolData const*, clang::ento::TypedRegion const*)"}, + {"_ZN5clang4ento11SValBuilder18getFunctionPointerEPKNS_12FunctionDeclE", "clang::ento::SValBuilder::getFunctionPointer(clang::FunctionDecl const*)"}, + {"_ZN5clang4ento11SValBuilder15getBlockPointerEPKNS_9BlockDeclENS_7CanQualINS_4TypeEEEPKNS_15LocationContextE", "clang::ento::SValBuilder::getBlockPointer(clang::BlockDecl const*, clang::CanQual, clang::LocationContext const*)"}, + + // {"_ZN5clang4ento11SValBuilder9evalBinOpEPKNS0_7GRStateENS_18BinaryOperatorKindENS0_4SValES6_NS_8QualTypeE", + // "clang::ento::SValBuilder::evalBinOp(clang::ento::GRState const*, clang::BinaryOperatorKind, clang::ento::SVal, clang::ento::SVal, clang::QualType)"}, + // got error + + {"_ZN5clang4ento11SValBuilder6evalEQEPKNS0_7GRStateENS0_20DefinedOrUnknownSValES5_", "clang::ento::SValBuilder::evalEQ(clang::ento::GRState const*, clang::ento::DefinedOrUnknownSVal, clang::ento::DefinedOrUnknownSVal)"}, + + // {"_ZN5clang4ento11SValBuilder8evalCastENS0_4SValENS_8QualTypeES3_", + // "clang::ento::SValBuilder::evalCast(clang::ento::SVal, clang::QualType, clang::QualType)"}, + // got error + + {"_ZNK5clang4ento4SVal17hasConjuredSymbolEv", "clang::ento::SVal::hasConjuredSymbol() const"}, + {"_ZNK5clang4ento4SVal17getAsFunctionDeclEv", "clang::ento::SVal::getAsFunctionDecl() const"}, + {"_ZNK5clang4ento4SVal14getAsLocSymbolEv", "clang::ento::SVal::getAsLocSymbol() const"}, + {"_ZNK5clang4ento3loc12MemRegionVal10StripCastsEv", "clang::ento::loc::MemRegionVal::StripCasts() const"}, + {"_ZNK5clang4ento4SVal18getLocSymbolInBaseEv", "clang::ento::SVal::getLocSymbolInBase() const"}, + {"_ZNK5clang4ento4SVal11getAsSymbolEv", "clang::ento::SVal::getAsSymbol() const"}, + {"_ZNK5clang4ento4SVal23getAsSymbolicExpressionEv", "clang::ento::SVal::getAsSymbolicExpression() const"}, + {"_ZNK5clang4ento4SVal11getAsRegionEv", "clang::ento::SVal::getAsRegion() const"}, + {"_ZNK5clang4ento4SVal15symbol_iteratoreqERKS2_", "clang::ento::SVal::symbol_iterator::operator==(clang::ento::SVal::symbol_iterator const&) const"}, + {"_ZNK5clang4ento4SVal15symbol_iteratorneERKS2_", "clang::ento::SVal::symbol_iterator::operator!=(clang::ento::SVal::symbol_iterator const&) const"}, + {"_ZN5clang4ento4SVal15symbol_iteratorC1EPKNS0_7SymExprE", "clang::ento::SVal::symbol_iterator::symbol_iterator(clang::ento::SymExpr const*)"}, + {"_ZN5clang4ento4SVal15symbol_iteratorC2EPKNS0_7SymExprE", "clang::ento::SVal::symbol_iterator::symbol_iterator(clang::ento::SymExpr const*)"}, + {"_ZN5clang4ento4SVal15symbol_iterator6expandEv", "clang::ento::SVal::symbol_iterator::expand()"}, + {"_ZN5clang4ento4SVal15symbol_iteratorppEv", "clang::ento::SVal::symbol_iterator::operator++()"}, + {"_ZN5clang4ento4SVal15symbol_iteratordeEv", "clang::ento::SVal::symbol_iterator::operator*()"}, + {"_ZNK5clang4ento6nonloc15LazyCompoundVal8getStoreEv", "clang::ento::nonloc::LazyCompoundVal::getStore() const"}, + {"_ZNK5clang4ento6nonloc15LazyCompoundVal9getRegionEv", "clang::ento::nonloc::LazyCompoundVal::getRegion() const"}, + {"_ZNK5clang4ento6nonloc11CompoundVal5beginEv", "clang::ento::nonloc::CompoundVal::begin() const"}, + {"_ZNK5clang4ento6nonloc11CompoundVal3endEv", "clang::ento::nonloc::CompoundVal::end() const"}, + {"_ZNK5clang4ento4SVal10isConstantEv", "clang::ento::SVal::isConstant() const"}, + {"_ZNK5clang4ento4SVal10isConstantEi", "clang::ento::SVal::isConstant(int) const"}, + {"_ZNK5clang4ento4SVal14isZeroConstantEv", "clang::ento::SVal::isZeroConstant() const"}, + {"_ZNK5clang4ento6nonloc11ConcreteInt9evalBinOpERNS0_11SValBuilderENS_18BinaryOperatorKindERKS2_", "clang::ento::nonloc::ConcreteInt::evalBinOp(clang::ento::SValBuilder&, clang::BinaryOperatorKind, clang::ento::nonloc::ConcreteInt const&) const"}, + {"_ZNK5clang4ento6nonloc11ConcreteInt14evalComplementERNS0_11SValBuilderE", "clang::ento::nonloc::ConcreteInt::evalComplement(clang::ento::SValBuilder&) const"}, + {"_ZNK5clang4ento6nonloc11ConcreteInt9evalMinusERNS0_11SValBuilderE", "clang::ento::nonloc::ConcreteInt::evalMinus(clang::ento::SValBuilder&) const"}, + {"_ZNK5clang4ento3loc11ConcreteInt9evalBinOpERNS0_17BasicValueFactoryENS_18BinaryOperatorKindERKS2_", "clang::ento::loc::ConcreteInt::evalBinOp(clang::ento::BasicValueFactory&, clang::BinaryOperatorKind, clang::ento::loc::ConcreteInt const&) const"}, + {"_ZNK5clang4ento4SVal4dumpEv", "clang::ento::SVal::dump() const"}, + {"_ZNK5clang4ento4SVal12dumpToStreamERN4llvm11raw_ostreamE", "clang::ento::SVal::dumpToStream(llvm::raw_ostream&) const"}, + {"_ZNK5clang4ento6NonLoc12dumpToStreamERN4llvm11raw_ostreamE", "clang::ento::NonLoc::dumpToStream(llvm::raw_ostream&) const"}, + {"_ZNK5clang4ento3Loc12dumpToStreamERN4llvm11raw_ostreamE", "clang::ento::Loc::dumpToStream(llvm::raw_ostream&) const"}, + {"_ZN5clang4ento23SimpleConstraintManagerD0Ev", "clang::ento::SimpleConstraintManager::~SimpleConstraintManager()"}, + {"_ZN5clang4ento23SimpleConstraintManagerD1Ev", "clang::ento::SimpleConstraintManager::~SimpleConstraintManager()"}, + {"_ZN5clang4ento23SimpleConstraintManagerD2Ev", "clang::ento::SimpleConstraintManager::~SimpleConstraintManager()"}, + {"_ZNK5clang4ento23SimpleConstraintManager14canReasonAboutENS0_4SValE", "clang::ento::SimpleConstraintManager::canReasonAbout(clang::ento::SVal) const"}, + {"_ZN5clang4ento23SimpleConstraintManager6assumeEPKNS0_7GRStateENS0_11DefinedSValEb", "clang::ento::SimpleConstraintManager::assume(clang::ento::GRState const*, clang::ento::DefinedSVal, bool)"}, + {"_ZN5clang4ento23SimpleConstraintManager6assumeEPKNS0_7GRStateENS0_6NonLocEb", "clang::ento::SimpleConstraintManager::assume(clang::ento::GRState const*, clang::ento::NonLoc, bool)"}, + {"_ZN5clang4ento23SimpleConstraintManager6assumeEPKNS0_7GRStateENS0_3LocEb", "clang::ento::SimpleConstraintManager::assume(clang::ento::GRState const*, clang::ento::Loc, bool)"}, + {"_ZN5clang4ento23SimpleConstraintManager9assumeAuxEPKNS0_7GRStateENS0_3LocEb", "clang::ento::SimpleConstraintManager::assumeAux(clang::ento::GRState const*, clang::ento::Loc, bool)"}, + {"_ZN5clang4ento23SimpleConstraintManager9assumeAuxEPKNS0_7GRStateENS0_6NonLocEb", "clang::ento::SimpleConstraintManager::assumeAux(clang::ento::GRState const*, clang::ento::NonLoc, bool)"}, + {"_ZN5clang4ento23SimpleConstraintManager12assumeSymRelEPKNS0_7GRStateEPKNS0_7SymExprENS_18BinaryOperatorKindERKN4llvm6APSIntE", "clang::ento::SimpleConstraintManager::assumeSymRel(clang::ento::GRState const*, clang::ento::SymExpr const*, clang::BinaryOperatorKind, llvm::APSInt const&)"}, + {"_ZN5clang4ento23createSimpleSValBuilderERN4llvm16BumpPtrAllocatorERNS_10ASTContextERNS0_14GRStateManagerE", "clang::ento::createSimpleSValBuilder(llvm::BumpPtrAllocator&, clang::ASTContext&, clang::ento::GRStateManager&)"}, + {"_ZN12_GLOBAL__N_117SimpleSValBuilder10evalCastNLEN5clang4ento6NonLocENS1_8QualTypeE", "(anonymous namespace)::SimpleSValBuilder::evalCastNL(clang::ento::NonLoc, clang::QualType)"}, + {"_ZN12_GLOBAL__N_117SimpleSValBuilder9evalCastLEN5clang4ento3LocENS1_8QualTypeE", "(anonymous namespace)::SimpleSValBuilder::evalCastL(clang::ento::Loc, clang::QualType)"}, + {"_ZN12_GLOBAL__N_117SimpleSValBuilderD1Ev", "(anonymous namespace)::SimpleSValBuilder::~SimpleSValBuilder()"}, + {"_ZN12_GLOBAL__N_117SimpleSValBuilderD0Ev", "(anonymous namespace)::SimpleSValBuilder::~SimpleSValBuilder()"}, + {"_ZN12_GLOBAL__N_117SimpleSValBuilder9evalMinusEN5clang4ento6NonLocE", "(anonymous namespace)::SimpleSValBuilder::evalMinus(clang::ento::NonLoc)"}, + {"_ZN12_GLOBAL__N_117SimpleSValBuilder14evalComplementEN5clang4ento6NonLocE", "(anonymous namespace)::SimpleSValBuilder::evalComplement(clang::ento::NonLoc)"}, + {"_ZN12_GLOBAL__N_117SimpleSValBuilder11evalBinOpNNEPKN5clang4ento7GRStateENS1_18BinaryOperatorKindENS2_6NonLocES7_NS1_8QualTypeE", "(anonymous namespace)::SimpleSValBuilder::evalBinOpNN(clang::ento::GRState const*, clang::BinaryOperatorKind, clang::ento::NonLoc, clang::ento::NonLoc, clang::QualType)"}, + {"_ZN12_GLOBAL__N_117SimpleSValBuilder11evalBinOpLLEPKN5clang4ento7GRStateENS1_18BinaryOperatorKindENS2_3LocES7_NS1_8QualTypeE", "(anonymous namespace)::SimpleSValBuilder::evalBinOpLL(clang::ento::GRState const*, clang::BinaryOperatorKind, clang::ento::Loc, clang::ento::Loc, clang::QualType)"}, + {"_ZN12_GLOBAL__N_117SimpleSValBuilder11evalBinOpLNEPKN5clang4ento7GRStateENS1_18BinaryOperatorKindENS2_3LocENS2_6NonLocENS1_8QualTypeE", "(anonymous namespace)::SimpleSValBuilder::evalBinOpLN(clang::ento::GRState const*, clang::BinaryOperatorKind, clang::ento::Loc, clang::ento::NonLoc, clang::QualType)"}, + {"_ZN12_GLOBAL__N_117SimpleSValBuilder13getKnownValueEPKN5clang4ento7GRStateENS2_4SValE", "(anonymous namespace)::SimpleSValBuilder::getKnownValue(clang::ento::GRState const*, clang::ento::SVal)"}, + {"_ZN12_GLOBAL__N_117SimpleSValBuilder13MakeSymIntValEPKN5clang4ento7SymExprENS1_18BinaryOperatorKindERKN4llvm6APSIntENS1_8QualTypeE", "(anonymous namespace)::SimpleSValBuilder::MakeSymIntVal(clang::ento::SymExpr const*, clang::BinaryOperatorKind, llvm::APSInt const&, clang::QualType)"}, + {"_ZN5clang4ento11SValBuilderC2ERN4llvm16BumpPtrAllocatorERNS_10ASTContextERNS0_14GRStateManagerE", "clang::ento::SValBuilder::SValBuilder(llvm::BumpPtrAllocator&, clang::ASTContext&, clang::ento::GRStateManager&)"}, + {"_ZN5clang4ento11SValBuilderD1Ev", "clang::ento::SValBuilder::~SValBuilder()"}, + {"_ZN5clang4ento11SValBuilderD0Ev", "clang::ento::SValBuilder::~SValBuilder()"}, + {"_ZN5clang4ento16MemRegionManagerC2ERNS_10ASTContextERN4llvm16BumpPtrAllocatorE", "clang::ento::MemRegionManager::MemRegionManager(clang::ASTContext&, llvm::BumpPtrAllocator&)"}, + {"_ZN5clang4ento12StoreManagerC1ERNS0_14GRStateManagerE", "clang::ento::StoreManager::StoreManager(clang::ento::GRStateManager&)"}, + {"_ZN5clang4ento12StoreManagerC2ERNS0_14GRStateManagerE", "clang::ento::StoreManager::StoreManager(clang::ento::GRStateManager&)"}, + {"_ZN5clang4ento12StoreManager15enterStackFrameEPKNS0_7GRStateEPKNS_17StackFrameContextE", "clang::ento::StoreManager::enterStackFrame(clang::ento::GRState const*, clang::StackFrameContext const*)"}, + {"_ZN5clang4ento12StoreManager17MakeElementRegionEPKNS0_9MemRegionENS_8QualTypeEy", "clang::ento::StoreManager::MakeElementRegion(clang::ento::MemRegion const*, clang::QualType, unsigned long long)"}, + {"_ZN5clang4ento12StoreManager20GetElementZeroRegionEPKNS0_9MemRegionENS_8QualTypeE", "clang::ento::StoreManager::GetElementZeroRegion(clang::ento::MemRegion const*, clang::QualType)"}, + {"_ZN5clang4ento12StoreManager10CastRegionEPKNS0_9MemRegionENS_8QualTypeE", "clang::ento::StoreManager::CastRegion(clang::ento::MemRegion const*, clang::QualType)"}, + {"_ZN5clang4ento12StoreManager16CastRetrievedValENS0_4SValEPKNS0_11TypedRegionENS_8QualTypeEb", "clang::ento::StoreManager::CastRetrievedVal(clang::ento::SVal, clang::ento::TypedRegion const*, clang::QualType, bool)"}, + {"_ZN5clang4ento12StoreManager20getLValueFieldOrIvarEPKNS_4DeclENS0_4SValE", "clang::ento::StoreManager::getLValueFieldOrIvar(clang::Decl const*, clang::ento::SVal)"}, + {"_ZN5clang4ento12StoreManager16getLValueElementENS_8QualTypeENS0_6NonLocENS0_4SValE", "clang::ento::StoreManager::getLValueElement(clang::QualType, clang::ento::NonLoc, clang::ento::SVal)"}, + {"_ZNK5clang4ento7SymExpr4dumpEv", "clang::ento::SymExpr::dump() const"}, + {"_ZNK5clang4ento10SymIntExpr12dumpToStreamERN4llvm11raw_ostreamE", "clang::ento::SymIntExpr::dumpToStream(llvm::raw_ostream&) const"}, + {"_ZNK5clang4ento10SymSymExpr12dumpToStreamERN4llvm11raw_ostreamE", "clang::ento::SymSymExpr::dumpToStream(llvm::raw_ostream&) const"}, + {"_ZNK5clang4ento14SymbolConjured12dumpToStreamERN4llvm11raw_ostreamE", "clang::ento::SymbolConjured::dumpToStream(llvm::raw_ostream&) const"}, + {"_ZNK5clang4ento13SymbolDerived12dumpToStreamERN4llvm11raw_ostreamE", "clang::ento::SymbolDerived::dumpToStream(llvm::raw_ostream&) const"}, + {"_ZNK5clang4ento12SymbolExtent12dumpToStreamERN4llvm11raw_ostreamE", "clang::ento::SymbolExtent::dumpToStream(llvm::raw_ostream&) const"}, + {"_ZNK5clang4ento14SymbolMetadata12dumpToStreamERN4llvm11raw_ostreamE", "clang::ento::SymbolMetadata::dumpToStream(llvm::raw_ostream&) const"}, + {"_ZNK5clang4ento17SymbolRegionValue12dumpToStreamERN4llvm11raw_ostreamE", "clang::ento::SymbolRegionValue::dumpToStream(llvm::raw_ostream&) const"}, + {"_ZN5clang4ento13SymbolManager20getRegionValueSymbolEPKNS0_11TypedRegionE", "clang::ento::SymbolManager::getRegionValueSymbol(clang::ento::TypedRegion const*)"}, + {"_ZN5clang4ento13SymbolManager17getConjuredSymbolEPKNS_4StmtENS_8QualTypeEjPKv", "clang::ento::SymbolManager::getConjuredSymbol(clang::Stmt const*, clang::QualType, unsigned int, void const*)"}, + {"_ZN5clang4ento13SymbolManager16getDerivedSymbolEPKNS0_10SymbolDataEPKNS0_11TypedRegionE", "clang::ento::SymbolManager::getDerivedSymbol(clang::ento::SymbolData const*, clang::ento::TypedRegion const*)"}, + {"_ZN5clang4ento13SymbolManager15getExtentSymbolEPKNS0_9SubRegionE", "clang::ento::SymbolManager::getExtentSymbol(clang::ento::SubRegion const*)"}, + {"_ZN5clang4ento13SymbolManager17getMetadataSymbolEPKNS0_9MemRegionEPKNS_4StmtENS_8QualTypeEjPKv", "clang::ento::SymbolManager::getMetadataSymbol(clang::ento::MemRegion const*, clang::Stmt const*, clang::QualType, unsigned int, void const*)"}, + {"_ZN5clang4ento13SymbolManager13getSymIntExprEPKNS0_7SymExprENS_18BinaryOperatorKindERKN4llvm6APSIntENS_8QualTypeE", "clang::ento::SymbolManager::getSymIntExpr(clang::ento::SymExpr const*, clang::BinaryOperatorKind, llvm::APSInt const&, clang::QualType)"}, + {"_ZN5clang4ento13SymbolManager13getSymSymExprEPKNS0_7SymExprENS_18BinaryOperatorKindES4_NS_8QualTypeE", "clang::ento::SymbolManager::getSymSymExpr(clang::ento::SymExpr const*, clang::BinaryOperatorKind, clang::ento::SymExpr const*, clang::QualType)"}, + {"_ZNK5clang4ento14SymbolConjured7getTypeERNS_10ASTContextE", "clang::ento::SymbolConjured::getType(clang::ASTContext&) const"}, + {"_ZNK5clang4ento13SymbolDerived7getTypeERNS_10ASTContextE", "clang::ento::SymbolDerived::getType(clang::ASTContext&) const"}, + {"_ZNK5clang4ento12SymbolExtent7getTypeERNS_10ASTContextE", "clang::ento::SymbolExtent::getType(clang::ASTContext&) const"}, + {"_ZNK5clang4ento14SymbolMetadata7getTypeERNS_10ASTContextE", "clang::ento::SymbolMetadata::getType(clang::ASTContext&) const"}, + {"_ZNK5clang4ento17SymbolRegionValue7getTypeERNS_10ASTContextE", "clang::ento::SymbolRegionValue::getType(clang::ASTContext&) const"}, + {"_ZN5clang4ento13SymbolManagerD1Ev", "clang::ento::SymbolManager::~SymbolManager()"}, + {"_ZN5clang4ento13SymbolManagerD2Ev", "clang::ento::SymbolManager::~SymbolManager()"}, + {"_ZN5clang4ento13SymbolManager14canSymbolicateENS_8QualTypeE", "clang::ento::SymbolManager::canSymbolicate(clang::QualType)"}, + {"_ZN5clang4ento12SymbolReaper8markLiveEPKNS0_10SymbolDataE", "clang::ento::SymbolReaper::markLive(clang::ento::SymbolData const*)"}, + {"_ZN5clang4ento12SymbolReaper9markInUseEPKNS0_10SymbolDataE", "clang::ento::SymbolReaper::markInUse(clang::ento::SymbolData const*)"}, + {"_ZN5clang4ento12SymbolReaper9maybeDeadEPKNS0_10SymbolDataE", "clang::ento::SymbolReaper::maybeDead(clang::ento::SymbolData const*)"}, + {"_ZN5clang4ento12SymbolReaper6isLiveEPKNS0_10SymbolDataE", "clang::ento::SymbolReaper::isLive(clang::ento::SymbolData const*)"}, + {"_Z12IsLiveRegionRN5clang4ento12SymbolReaperEPKNS0_9MemRegionE", "IsLiveRegion(clang::ento::SymbolReaper&, clang::ento::MemRegion const*)"}, + {"_ZNK5clang4ento12SymbolReaper6isLiveEPKNS_4StmtE", "clang::ento::SymbolReaper::isLive(clang::Stmt const*) const"}, + {"_ZNK5clang4ento12SymbolReaper6isLiveEPKNS0_9VarRegionE", "clang::ento::SymbolReaper::isLive(clang::ento::VarRegion const*) const"}, + {"_ZN5clang4ento13SymbolVisitorD0Ev", "clang::ento::SymbolVisitor::~SymbolVisitor()"}, + {"_ZN5clang4ento13SymbolVisitorD1Ev", "clang::ento::SymbolVisitor::~SymbolVisitor()"}, + {"_ZN5clang4ento13SymbolVisitorD2Ev", "clang::ento::SymbolVisitor::~SymbolVisitor()"}, + {"_ZN4llvm10FoldingSetIN5clang4ento7SymExprEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN5clang4ento17SymbolRegionValueD1Ev", "clang::ento::SymbolRegionValue::~SymbolRegionValue()"}, + {"_ZN5clang4ento17SymbolRegionValueD0Ev", "clang::ento::SymbolRegionValue::~SymbolRegionValue()"}, + {"_ZN5clang4ento17SymbolRegionValue7ProfileERN4llvm16FoldingSetNodeIDE", "clang::ento::SymbolRegionValue::Profile(llvm::FoldingSetNodeID&)"}, + {"_ZN5clang4ento14SymbolConjuredD1Ev", "clang::ento::SymbolConjured::~SymbolConjured()"}, + {"_ZN5clang4ento14SymbolConjuredD0Ev", "clang::ento::SymbolConjured::~SymbolConjured()"}, + {"_ZN5clang4ento14SymbolConjured7ProfileERN4llvm16FoldingSetNodeIDE", "clang::ento::SymbolConjured::Profile(llvm::FoldingSetNodeID&)"}, + {"_ZN5clang4ento13SymbolDerivedD1Ev", "clang::ento::SymbolDerived::~SymbolDerived()"}, + {"_ZN5clang4ento13SymbolDerivedD0Ev", "clang::ento::SymbolDerived::~SymbolDerived()"}, + {"_ZN5clang4ento13SymbolDerived7ProfileERN4llvm16FoldingSetNodeIDE", "clang::ento::SymbolDerived::Profile(llvm::FoldingSetNodeID&)"}, + {"_ZN5clang4ento12SymbolExtentD1Ev", "clang::ento::SymbolExtent::~SymbolExtent()"}, + {"_ZN5clang4ento12SymbolExtentD0Ev", "clang::ento::SymbolExtent::~SymbolExtent()"}, + {"_ZN5clang4ento12SymbolExtent7ProfileERN4llvm16FoldingSetNodeIDE", "clang::ento::SymbolExtent::Profile(llvm::FoldingSetNodeID&)"}, + {"_ZN5clang4ento14SymbolMetadataD1Ev", "clang::ento::SymbolMetadata::~SymbolMetadata()"}, + {"_ZN5clang4ento14SymbolMetadataD0Ev", "clang::ento::SymbolMetadata::~SymbolMetadata()"}, + {"_ZN5clang4ento14SymbolMetadata7ProfileERN4llvm16FoldingSetNodeIDE", "clang::ento::SymbolMetadata::Profile(llvm::FoldingSetNodeID&)"}, + {"_ZN5clang4ento10SymIntExprD1Ev", "clang::ento::SymIntExpr::~SymIntExpr()"}, + {"_ZN5clang4ento10SymIntExprD0Ev", "clang::ento::SymIntExpr::~SymIntExpr()"}, + {"_ZNK5clang4ento10SymIntExpr7getTypeERNS_10ASTContextE", "clang::ento::SymIntExpr::getType(clang::ASTContext&) const"}, + {"_ZN5clang4ento10SymIntExpr7ProfileERN4llvm16FoldingSetNodeIDE", "clang::ento::SymIntExpr::Profile(llvm::FoldingSetNodeID&)"}, + {"_ZN5clang4ento10SymSymExprD1Ev", "clang::ento::SymSymExpr::~SymSymExpr()"}, + {"_ZN5clang4ento10SymSymExprD0Ev", "clang::ento::SymSymExpr::~SymSymExpr()"}, + {"_ZNK5clang4ento10SymSymExpr7getTypeERNS_10ASTContextE", "clang::ento::SymSymExpr::getType(clang::ASTContext&) const"}, + {"_ZN5clang4ento10SymSymExpr7ProfileERN4llvm16FoldingSetNodeIDE", "clang::ento::SymSymExpr::Profile(llvm::FoldingSetNodeID&)"}, + {"_ZN5clang4ento7SymExprD1Ev", "clang::ento::SymExpr::~SymExpr()"}, + {"_ZN5clang4ento7SymExprD0Ev", "clang::ento::SymExpr::~SymExpr()"}, + {"_ZN5clang4ento10SymbolDataD1Ev", "clang::ento::SymbolData::~SymbolData()"}, + {"_ZN5clang4ento10SymbolDataD0Ev", "clang::ento::SymbolData::~SymbolData()"}, + {"_ZN4llvm10FoldingSetIN5clang4ento7SymExprEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang4ento7SymExprEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang4ento7SymExprEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS8_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang4ento7SymExprEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN5clang4ento30createTextPathDiagnosticClientERKSsRKNS_12PreprocessorE", "clang::ento::createTextPathDiagnosticClient(std::string const&, clang::Preprocessor const&)"}, + {"_ZN12_GLOBAL__N_119TextPathDiagnosticsD1Ev", "(anonymous namespace)::TextPathDiagnostics::~TextPathDiagnostics()"}, + {"_ZN12_GLOBAL__N_119TextPathDiagnosticsD0Ev", "(anonymous namespace)::TextPathDiagnostics::~TextPathDiagnostics()"}, + {"_ZN12_GLOBAL__N_119TextPathDiagnostics16FlushDiagnosticsEPN4llvm15SmallVectorImplISsEE", "(anonymous namespace)::TextPathDiagnostics::FlushDiagnostics(llvm::SmallVectorImpl*)"}, + {"_ZNK12_GLOBAL__N_119TextPathDiagnostics7getNameEv", "(anonymous namespace)::TextPathDiagnostics::getName() const"}, + {"_ZN12_GLOBAL__N_119TextPathDiagnostics20HandlePathDiagnosticEPKN5clang4ento14PathDiagnosticE", "(anonymous namespace)::TextPathDiagnostics::HandlePathDiagnostic(clang::ento::PathDiagnostic const*)"}, + {"_ZNK12_GLOBAL__N_119TextPathDiagnostics19getGenerationSchemeEv", "(anonymous namespace)::TextPathDiagnostics::getGenerationScheme() const"}, + {"_ZNK12_GLOBAL__N_119TextPathDiagnostics28supportsLogicalOpControlFlowEv", "(anonymous namespace)::TextPathDiagnostics::supportsLogicalOpControlFlow() const"}, + {"_ZNK12_GLOBAL__N_119TextPathDiagnostics21supportsAllBlockEdgesEv", "(anonymous namespace)::TextPathDiagnostics::supportsAllBlockEdges() const"}, + {"_ZNK12_GLOBAL__N_119TextPathDiagnostics21useVerboseDescriptionEv", "(anonymous namespace)::TextPathDiagnostics::useVerboseDescription() const"}, + {"_ZN5clang4ento20PathDiagnosticClientD1Ev", "clang::ento::PathDiagnosticClient::~PathDiagnosticClient()"}, + {"_ZN5clang4ento20PathDiagnosticClientD0Ev", "clang::ento::PathDiagnosticClient::~PathDiagnosticClient()"}, + {"_ZNK5clang4ento20PathDiagnosticClient19getGenerationSchemeEv", "clang::ento::PathDiagnosticClient::getGenerationScheme() const"}, + {"_ZNK5clang4ento20PathDiagnosticClient28supportsLogicalOpControlFlowEv", "clang::ento::PathDiagnosticClient::supportsLogicalOpControlFlow() const"}, + {"_ZNK5clang4ento20PathDiagnosticClient21supportsAllBlockEdgesEv", "clang::ento::PathDiagnosticClient::supportsAllBlockEdges() const"}, + {"_ZNK5clang4ento20PathDiagnosticClient21useVerboseDescriptionEv", "clang::ento::PathDiagnosticClient::useVerboseDescription() const"}, + {"_ZN5clang22AnalysisContextManager5clearEv", "clang::AnalysisContextManager::clear()"}, + {"_ZN5clang15AnalysisContextD1Ev", "clang::AnalysisContext::~AnalysisContext()"}, + {"_ZN5clang15AnalysisContext7getBodyEv", "clang::AnalysisContext::getBody()"}, + {"_ZNK5clang15AnalysisContext11getSelfDeclEv", "clang::AnalysisContext::getSelfDecl() const"}, + {"_ZN5clang15AnalysisContext6getCFGEv", "clang::AnalysisContext::getCFG()"}, + {"_ZN5clang15AnalysisContext17getUnoptimizedCFGEv", "clang::AnalysisContext::getUnoptimizedCFG()"}, + {"_ZN5clang15AnalysisContext7dumpCFGEv", "clang::AnalysisContext::dumpCFG()"}, + {"_ZN5clang15AnalysisContext12getParentMapEv", "clang::AnalysisContext::getParentMap()"}, + {"_ZN5clang15AnalysisContext25getPseudoConstantAnalysisEv", "clang::AnalysisContext::getPseudoConstantAnalysis()"}, + {"_ZN5clang15AnalysisContext16getLiveVariablesEv", "clang::AnalysisContext::getLiveVariables()"}, + {"_ZN5clang15AnalysisContext23getRelaxedLiveVariablesEv", "clang::AnalysisContext::getRelaxedLiveVariables()"}, + {"_ZN5clang22AnalysisContextManager10getContextEPKNS_4DeclEPNS_3idx15TranslationUnitE", "clang::AnalysisContextManager::getContext(clang::Decl const*, clang::idx::TranslationUnit*)"}, + {"_ZN5clang15LocationContext13ProfileCommonERN4llvm16FoldingSetNodeIDENS0_11ContextKindEPNS_15AnalysisContextEPKS0_PKv", "clang::LocationContext::ProfileCommon(llvm::FoldingSetNodeID&, clang::LocationContext::ContextKind, clang::AnalysisContext*, clang::LocationContext const*, void const*)"}, + {"_ZN5clang17StackFrameContext7ProfileERN4llvm16FoldingSetNodeIDE", "clang::StackFrameContext::Profile(llvm::FoldingSetNodeID&)"}, + {"_ZN5clang12ScopeContext7ProfileERN4llvm16FoldingSetNodeIDE", "clang::ScopeContext::Profile(llvm::FoldingSetNodeID&)"}, + {"_ZN5clang22BlockInvocationContext7ProfileERN4llvm16FoldingSetNodeIDE", "clang::BlockInvocationContext::Profile(llvm::FoldingSetNodeID&)"}, + {"_ZN5clang22LocationContextManager13getStackFrameEPNS_15AnalysisContextEPKNS_15LocationContextEPKNS_4StmtEPKNS_8CFGBlockEj", "clang::LocationContextManager::getStackFrame(clang::AnalysisContext*, clang::LocationContext const*, clang::Stmt const*, clang::CFGBlock const*, unsigned int)"}, + {"_ZN5clang22LocationContextManager8getScopeEPNS_15AnalysisContextEPKNS_15LocationContextEPKNS_4StmtE", "clang::LocationContextManager::getScope(clang::AnalysisContext*, clang::LocationContext const*, clang::Stmt const*)"}, + {"_ZNK5clang15LocationContext20getCurrentStackFrameEv", "clang::LocationContext::getCurrentStackFrame() const"}, + {"_ZNK5clang15LocationContext27getStackFrameForDeclContextEPKNS_11DeclContextE", "clang::LocationContext::getStackFrameForDeclContext(clang::DeclContext const*) const"}, + {"_ZNK5clang15LocationContext10isParentOfEPKS0_", "clang::LocationContext::isParentOf(clang::LocationContext const*) const"}, + {"_ZN5clang15AnalysisContext22getReferencedBlockVarsEPKNS_9BlockDeclE", "clang::AnalysisContext::getReferencedBlockVars(clang::BlockDecl const*)"}, + {"_ZN5clang15AnalysisContextD2Ev", "clang::AnalysisContext::~AnalysisContext()"}, + {"_ZN5clang22AnalysisContextManagerD1Ev", "clang::AnalysisContextManager::~AnalysisContextManager()"}, + {"_ZN5clang22AnalysisContextManagerD2Ev", "clang::AnalysisContextManager::~AnalysisContextManager()"}, + {"_ZN5clang15LocationContextD0Ev", "clang::LocationContext::~LocationContext()"}, + {"_ZN5clang15LocationContextD1Ev", "clang::LocationContext::~LocationContext()"}, + {"_ZN5clang15LocationContextD2Ev", "clang::LocationContext::~LocationContext()"}, + {"_ZN5clang22LocationContextManagerD1Ev", "clang::LocationContextManager::~LocationContextManager()"}, + {"_ZN5clang22LocationContextManagerD2Ev", "clang::LocationContextManager::~LocationContextManager()"}, + {"_ZN5clang22LocationContextManager5clearEv", "clang::LocationContextManager::clear()"}, + {"_ZN5clang11StmtVisitorIN12_GLOBAL__N_125FindBlockDeclRefExprsValsEvE5VisitEPNS_4StmtE", "clang::StmtVisitor<(anonymous namespace)::FindBlockDeclRefExprsVals, void>::Visit(clang::Stmt*)"}, + {"_ZN12_GLOBAL__N_125FindBlockDeclRefExprsVals9VisitStmtEPN5clang4StmtE", "(anonymous namespace)::FindBlockDeclRefExprsVals::VisitStmt(clang::Stmt*)"}, + {"_ZN5clang22LocationContextManager18getLocationContextINS_12ScopeContextENS_4StmtEEEPKT_PNS_15AnalysisContextEPKNS_15LocationContextEPKT0_", "clang::ScopeContext const* clang::LocationContextManager::getLocationContext(clang::AnalysisContext*, clang::LocationContext const*, clang::Stmt const*)"}, + {"_ZN5clang17StackFrameContextD1Ev", "clang::StackFrameContext::~StackFrameContext()"}, + {"_ZN5clang17StackFrameContextD0Ev", "clang::StackFrameContext::~StackFrameContext()"}, + {"_ZN5clang12ScopeContextD1Ev", "clang::ScopeContext::~ScopeContext()"}, + {"_ZN5clang12ScopeContextD0Ev", "clang::ScopeContext::~ScopeContext()"}, + {"_ZN5clang22BlockInvocationContextD1Ev", "clang::BlockInvocationContext::~BlockInvocationContext()"}, + {"_ZN5clang22BlockInvocationContextD0Ev", "clang::BlockInvocationContext::~BlockInvocationContext()"}, + {"_ZN4llvm8DenseMapIPKN5clang9BlockDeclEPvNS_12DenseMapInfoIS4_EENS6_IS5_EEE16InsertIntoBucketERKS4_RKS5_PSt4pairIS4_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::BlockDecl const* const&, void* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang9BlockDeclEPvNS_12DenseMapInfoIS4_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKN5clang4DeclEPNS1_15AnalysisContextENS_12DenseMapInfoIS4_EENS7_IS6_EEE16InsertIntoBucketERKS4_RKS6_PSt4pairIS4_S6_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::Decl const* const&, clang::AnalysisContext* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang4DeclEPNS1_15AnalysisContextENS_12DenseMapInfoIS4_EENS7_IS6_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKN5clang4DeclEPNS1_15AnalysisContextENS_12DenseMapInfoIS4_EENS7_IS6_EEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN5clang14DataflowValuesINS_24LiveVariables_ValueTypesENS_8dataflow21backward_analysis_tagEED2Ev", "clang::DataflowValues::~DataflowValues()"}, + {"_ZN5clang24LiveVariables_ValueTypes14AnalysisDataTyD1Ev", "clang::LiveVariables_ValueTypes::AnalysisDataTy::~AnalysisDataTy()"}, + {"_ZN4llvm8DenseMapIN5clang12ProgramPointENS1_23StmtDeclBitVector_Types5ValTyENS_12DenseMapInfoIS2_EENS5_IS4_EEED2Ev", "llvm::DenseMap, llvm::DenseMapInfo>::~DenseMap()"}, + {"_ZN5clang24LiveVariables_ValueTypes14AnalysisDataTyD0Ev", "clang::LiveVariables_ValueTypes::AnalysisDataTy::~AnalysisDataTy()"}, + {"_ZN5clang23StmtDeclBitVector_Types14AnalysisDataTyD1Ev", "clang::StmtDeclBitVector_Types::AnalysisDataTy::~AnalysisDataTy()"}, + {"_ZN5clang23StmtDeclBitVector_Types14AnalysisDataTyD0Ev", "clang::StmtDeclBitVector_Types::AnalysisDataTy::~AnalysisDataTy()"}, + {"_ZN5clang19DeclBitVector_Types14AnalysisDataTyD1Ev", "clang::DeclBitVector_Types::AnalysisDataTy::~AnalysisDataTy()"}, + {"_ZN5clang19DeclBitVector_Types14AnalysisDataTyD0Ev", "clang::DeclBitVector_Types::AnalysisDataTy::~AnalysisDataTy()"}, + {"_ZN4llvm8DenseMapIPKN5clang7VarDeclEjNS_12DenseMapInfoIS4_EENS5_IjEEE16InsertIntoBucketERKS4_RKjPSt4pairIS4_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::VarDecl const* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang7VarDeclEjNS_12DenseMapInfoIS4_EENS5_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang3CFG11createBlockEv", "clang::CFG::createBlock()"}, + {"_ZN5clang3CFG8buildCFGEPKNS_4DeclEPNS_4StmtEPNS_10ASTContextENS0_12BuildOptionsE", "clang::CFG::buildCFG(clang::Decl const*, clang::Stmt*, clang::ASTContext*, clang::CFG::BuildOptions)"}, + {"_ZN5clang3CFG13getBlkExprNumEPKNS_4StmtE", "clang::CFG::getBlkExprNum(clang::Stmt const*)"}, + {"_Z18PopulateBlkExprMapRN5clang3CFGE", "PopulateBlkExprMap(clang::CFG&)"}, + {"_ZN5clang3CFG14getNumBlkExprsEv", "clang::CFG::getNumBlkExprs()"}, + {"_ZN5clang8CFGBlock10FilterEdgeERKNS0_13FilterOptionsEPKS0_S5_", "clang::CFGBlock::FilterEdge(clang::CFGBlock::FilterOptions const&, clang::CFGBlock const*, clang::CFGBlock const*)"}, + {"_ZN5clang3CFGD1Ev", "clang::CFG::~CFG()"}, + {"_ZN5clang3CFGD2Ev", "clang::CFG::~CFG()"}, + {"_ZNK5clang3CFG4dumpERKNS_11LangOptionsE", "clang::CFG::dump(clang::LangOptions const&) const"}, + {"_ZNK5clang3CFG5printERN4llvm11raw_ostreamERKNS_11LangOptionsE", "clang::CFG::print(llvm::raw_ostream&, clang::LangOptions const&) const"}, + {"_ZN12_GLOBAL__N_117StmtPrinterHelperC1EPKN5clang3CFGERKNS1_11LangOptionsE", "(anonymous namespace)::StmtPrinterHelper::StmtPrinterHelper(clang::CFG const*, clang::LangOptions const&)"}, + {"_Z11print_blockRN4llvm11raw_ostreamEPKN5clang3CFGERKNS2_8CFGBlockEPN12_GLOBAL__N_117StmtPrinterHelperEb", "print_block(llvm::raw_ostream&, clang::CFG const*, clang::CFGBlock const&, (anonymous namespace)::StmtPrinterHelper*, bool)"}, + {"_ZN12_GLOBAL__N_117StmtPrinterHelperD1Ev", "(anonymous namespace)::StmtPrinterHelper::~StmtPrinterHelper()"}, + {"_ZNK5clang8CFGBlock4dumpEPKNS_3CFGERKNS_11LangOptionsE", "clang::CFGBlock::dump(clang::CFG const*, clang::LangOptions const&) const"}, + {"_ZNK5clang8CFGBlock5printERN4llvm11raw_ostreamEPKNS_3CFGERKNS_11LangOptionsE", "clang::CFGBlock::print(llvm::raw_ostream&, clang::CFG const*, clang::LangOptions const&) const"}, + {"_ZNK5clang8CFGBlock15printTerminatorERN4llvm11raw_ostreamERKNS_11LangOptionsE", "clang::CFGBlock::printTerminator(llvm::raw_ostream&, clang::LangOptions const&) const"}, + {"_ZN5clang11StmtVisitorIN12_GLOBAL__N_123CFGBlockTerminatorPrintEvE5VisitEPNS_4StmtE", "clang::StmtVisitor<(anonymous namespace)::CFGBlockTerminatorPrint, void>::Visit(clang::Stmt*)"}, + {"_ZN5clang8CFGBlock22getTerminatorConditionEv", "clang::CFGBlock::getTerminatorCondition()"}, + {"_ZNK5clang8CFGBlock25hasBinaryBranchTerminatorEv", "clang::CFGBlock::hasBinaryBranchTerminator() const"}, + {"_ZNK5clang3CFG7viewCFGERKNS_11LangOptionsE", "clang::CFG::viewCFG(clang::LangOptions const&) const"}, + {"_ZN12_GLOBAL__N_123CFGBlockTerminatorPrint19VisitBinaryOperatorEPN5clang14BinaryOperatorE", "(anonymous namespace)::CFGBlockTerminatorPrint::VisitBinaryOperator(clang::BinaryOperator*)"}, + {"_ZN12_GLOBAL__N_117StmtPrinterHelperD0Ev", "(anonymous namespace)::StmtPrinterHelper::~StmtPrinterHelper()"}, + {"_ZN12_GLOBAL__N_117StmtPrinterHelper11handledStmtEPN5clang4StmtERN4llvm11raw_ostreamE", "(anonymous namespace)::StmtPrinterHelper::handledStmt(clang::Stmt*, llvm::raw_ostream&)"}, + + // {"_Z22FindSubExprAssignmentsPN5clang4StmtERN4llvm11SmallPtrSetIPNS_4ExprELj50EEE", + // "FindSubExprAssignments(clang::Stmt*, llvm::SmallPtrSet&)"}, + // "FindSubExprAssignments(clang::Stmt*, llvm::SmallPtrSet&)" was returned + + {"_ZN12_GLOBAL__N_110CFGBuilder22VisitForTemporaryDtorsEPN5clang4StmtEb", "(anonymous namespace)::CFGBuilder::VisitForTemporaryDtors(clang::Stmt*, bool)"}, + {"_ZN12_GLOBAL__N_110CFGBuilder5VisitEPN5clang4StmtENS_13AddStmtChoiceE", "(anonymous namespace)::CFGBuilder::Visit(clang::Stmt*, (anonymous namespace)::AddStmtChoice)"}, + {"_ZN12_GLOBAL__N_110CFGBuilder17VisitCompoundStmtEPN5clang12CompoundStmtE", "(anonymous namespace)::CFGBuilder::VisitCompoundStmt(clang::CompoundStmt*)"}, + {"_ZN12_GLOBAL__N_110CFGBuilder17VisitCXXCatchStmtEPN5clang12CXXCatchStmtE", "(anonymous namespace)::CFGBuilder::VisitCXXCatchStmt(clang::CXXCatchStmt*)"}, + {"_ZN12_GLOBAL__N_110CFGBuilder23addLocalScopeForVarDeclEPN5clang7VarDeclEPNS_10LocalScopeE", "(anonymous namespace)::CFGBuilder::addLocalScopeForVarDecl(clang::VarDecl*, (anonymous namespace)::LocalScope*)"}, + {"_ZN12_GLOBAL__N_110CFGBuilder20addAutomaticObjDtorsENS_10LocalScope14const_iteratorES2_PN5clang4StmtE", "(anonymous namespace)::CFGBuilder::addAutomaticObjDtors((anonymous namespace)::LocalScope::const_iterator, (anonymous namespace)::LocalScope::const_iterator, clang::Stmt*)"}, + {"_ZN12_GLOBAL__N_110CFGBuilder20addLocalScopeForStmtEPN5clang4StmtE", "(anonymous namespace)::CFGBuilder::addLocalScopeForStmt(clang::Stmt*)"}, + {"_ZN12_GLOBAL__N_110CFGBuilder16VisitDeclSubExprEPN5clang8DeclStmtE", "(anonymous namespace)::CFGBuilder::VisitDeclSubExpr(clang::DeclStmt*)"}, + {"_ZN12_GLOBAL__N_110CFGBuilder13VisitChildrenEPN5clang4StmtE", "(anonymous namespace)::CFGBuilder::VisitChildren(clang::Stmt*)"}, + {"_ZN4llvm14format_object1IjED1Ev", "llvm::format_object1::~format_object1()"}, + {"_ZNK4llvm14format_object1IjE7snprintEPcj", "llvm::format_object1::snprint(char*, unsigned int) const"}, + {"_ZN4llvm14format_object1IjED0Ev", "llvm::format_object1::~format_object1()"}, + + // {"_ZN4llvm8DenseMapIPN5clang4DeclESt4pairIjjENS_12DenseMapInfoIS3_EENS6_IS5_EEE16InsertIntoBucketERKS3_RKS5_PS4_IS3_S5_E", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(clang::Decl* const&, std::pair const&, std::pair>*)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(clang::Decl* const&, std::pair const&, std::pair*>)" was returned + + {"_ZN4llvm8DenseMapIPN5clang4DeclESt4pairIjjENS_12DenseMapInfoIS3_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)"}, + + // {"_ZN4llvm8DenseMapIPN5clang4StmtESt4pairIjjENS_12DenseMapInfoIS3_EENS6_IS5_EEE16InsertIntoBucketERKS3_RKS5_PS4_IS3_S5_E", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(clang::Stmt* const&, std::pair const&, std::pair>*)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(clang::Stmt* const&, std::pair const&, std::pair*>)" was returned + + {"_ZN4llvm8DenseMapIPN5clang4StmtESt4pairIjjENS_12DenseMapInfoIS3_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKN5clang4StmtEjNS_12DenseMapInfoIS4_EENS5_IjEEE16InsertIntoBucketERKS4_RKjPSt4pairIS4_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::Stmt const* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang4StmtEjNS_12DenseMapInfoIS4_EENS5_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm9OwningPtrIN5clang3CFGEED2Ev", "llvm::OwningPtr::~OwningPtr()"}, + {"_ZN5clang8CFGBlock12addSuccessorEPS0_RNS_17BumpVectorContextE", "clang::CFGBlock::addSuccessor(clang::CFGBlock*, clang::BumpVectorContext&)"}, + {"_ZN5clang10BumpVectorINS_10CFGElementEE6insertEPS1_mRKS1_RNS_17BumpVectorContextE", "clang::BumpVector::insert(clang::CFGElement*, unsigned long, clang::CFGElement const&, clang::BumpVectorContext&)"}, + {"_ZN5clang10BumpVectorINS_10CFGElementEE9push_backERKS1_RNS_17BumpVectorContextE", "clang::BumpVector::push_back(clang::CFGElement const&, clang::BumpVectorContext&)"}, + {"_ZN5clang8CFGBlockC2EjRNS_17BumpVectorContextE", "clang::CFGBlock::CFGBlock(unsigned int, clang::BumpVectorContext&)"}, + {"_ZN5clang10BumpVectorINS_10CFGElementEE7reserveERNS_17BumpVectorContextEj", "clang::BumpVector::reserve(clang::BumpVectorContext&, unsigned int)"}, + {"_ZN5clang10CFGStmtMapD1Ev", "clang::CFGStmtMap::~CFGStmtMap()"}, + {"_ZN5clang10CFGStmtMapD2Ev", "clang::CFGStmtMap::~CFGStmtMap()"}, + {"_ZN5clang10CFGStmtMap8getBlockEPNS_4StmtE", "clang::CFGStmtMap::getBlock(clang::Stmt*)"}, + {"_ZN5clang10CFGStmtMap5BuildEPNS_3CFGEPNS_9ParentMapE", "clang::CFGStmtMap::Build(clang::CFG*, clang::ParentMap*)"}, + {"_ZN4llvm8DenseMapIPN5clang4StmtEPNS1_8CFGBlockENS_12DenseMapInfoIS3_EENS6_IS5_EEE16InsertIntoBucketERKS3_RKS5_PSt4pairIS3_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::Stmt* const&, clang::CFGBlock* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPN5clang4StmtEPNS1_8CFGBlockENS_12DenseMapInfoIS3_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang4ento5cocoa22deriveNamingConventionENS_8SelectorEb", "clang::ento::cocoa::deriveNamingConvention(clang::Selector, bool)"}, + {"_Z9parseWordPKc", "parseWord(char const*)"}, + {"_ZN5clang4ento5cocoa9isRefTypeENS_8QualTypeEN4llvm9StringRefES4_", "clang::ento::cocoa::isRefType(clang::QualType, llvm::StringRef, llvm::StringRef)"}, + {"_ZN5clang4ento5cocoa13isCFObjectRefENS_8QualTypeE", "clang::ento::cocoa::isCFObjectRef(clang::QualType)"}, + {"_ZN5clang4ento5cocoa16isCocoaObjectRefENS_8QualTypeE", "clang::ento::cocoa::isCocoaObjectRef(clang::QualType)"}, + {"_ZN5clang21analyze_format_string19FormatStringHandlerD0Ev", "clang::analyze_format_string::FormatStringHandler::~FormatStringHandler()"}, + {"_ZN5clang21analyze_format_string19FormatStringHandlerD1Ev", "clang::analyze_format_string::FormatStringHandler::~FormatStringHandler()"}, + {"_ZN5clang21analyze_format_string19FormatStringHandlerD2Ev", "clang::analyze_format_string::FormatStringHandler::~FormatStringHandler()"}, + {"_ZN5clang21analyze_format_string11ParseAmountERPKcS2_", "clang::analyze_format_string::ParseAmount(char const*&, char const*)"}, + {"_ZN5clang21analyze_format_string22ParseNonPositionAmountERPKcS2_Rj", "clang::analyze_format_string::ParseNonPositionAmount(char const*&, char const*, unsigned int&)"}, + {"_ZN5clang21analyze_format_string19ParsePositionAmountERNS0_19FormatStringHandlerEPKcRS4_S4_NS0_15PositionContextE", "clang::analyze_format_string::ParsePositionAmount(clang::analyze_format_string::FormatStringHandler&, char const*, char const*&, char const*, clang::analyze_format_string::PositionContext)"}, + {"_ZN5clang21analyze_format_string15ParseFieldWidthERNS0_19FormatStringHandlerERNS0_15FormatSpecifierEPKcRS6_S6_Pj", "clang::analyze_format_string::ParseFieldWidth(clang::analyze_format_string::FormatStringHandler&, clang::analyze_format_string::FormatSpecifier&, char const*, char const*&, char const*, unsigned int*)"}, + {"_ZN5clang21analyze_format_string16ParseArgPositionERNS0_19FormatStringHandlerERNS0_15FormatSpecifierEPKcRS6_S6_", "clang::analyze_format_string::ParseArgPosition(clang::analyze_format_string::FormatStringHandler&, clang::analyze_format_string::FormatSpecifier&, char const*, char const*&, char const*)"}, + {"_ZN5clang21analyze_format_string19ParseLengthModifierERNS0_15FormatSpecifierERPKcS4_", "clang::analyze_format_string::ParseLengthModifier(clang::analyze_format_string::FormatSpecifier&, char const*&, char const*)"}, + {"_ZNK5clang21analyze_format_string13ArgTypeResult11matchesTypeERNS_10ASTContextENS_8QualTypeE", "clang::analyze_format_string::ArgTypeResult::matchesType(clang::ASTContext&, clang::QualType) const"}, + {"_ZNK5clang21analyze_format_string13ArgTypeResult21getRepresentativeTypeERNS_10ASTContextE", "clang::analyze_format_string::ArgTypeResult::getRepresentativeType(clang::ASTContext&) const"}, + {"_ZNK5clang21analyze_format_string14OptionalAmount10getArgTypeERNS_10ASTContextE", "clang::analyze_format_string::OptionalAmount::getArgType(clang::ASTContext&) const"}, + {"_ZNK5clang21analyze_format_string14LengthModifier8toStringEv", "clang::analyze_format_string::LengthModifier::toString() const"}, + {"_ZNK5clang21analyze_format_string14OptionalAmount8toStringERN4llvm11raw_ostreamE", "clang::analyze_format_string::OptionalAmount::toString(llvm::raw_ostream&) const"}, + {"_ZNK5clang21analyze_format_string15FormatSpecifier22hasValidLengthModifierEv", "clang::analyze_format_string::FormatSpecifier::hasValidLengthModifier() const"}, + {"_ZN5clang13LiveVariablesC1ERNS_15AnalysisContextEb", "clang::LiveVariables::LiveVariables(clang::AnalysisContext&, bool)"}, + {"_ZN5clang13LiveVariablesC2ERNS_15AnalysisContextEb", "clang::LiveVariables::LiveVariables(clang::AnalysisContext&, bool)"}, + {"_ZN5clang13LiveVariables8runOnCFGERNS_3CFGE", "clang::LiveVariables::runOnCFG(clang::CFG&)"}, + {"_ZN5clang13LiveVariables14runOnAllBlocksERKNS_3CFGEPNS_24LiveVariables_ValueTypes10ObserverTyEb", "clang::LiveVariables::runOnAllBlocks(clang::CFG const&, clang::LiveVariables_ValueTypes::ObserverTy*, bool)"}, + {"_ZNK5clang13LiveVariables6isLiveEPKNS_8CFGBlockEPKNS_7VarDeclE", "clang::LiveVariables::isLive(clang::CFGBlock const*, clang::VarDecl const*) const"}, + {"_ZNK5clang13LiveVariables6isLiveERKNS_23StmtDeclBitVector_Types5ValTyEPKNS_7VarDeclE", "clang::LiveVariables::isLive(clang::StmtDeclBitVector_Types::ValTy const&, clang::VarDecl const*) const"}, + {"_ZNK5clang13LiveVariables6isLiveEPKNS_4StmtES3_", "clang::LiveVariables::isLive(clang::Stmt const*, clang::Stmt const*) const"}, + {"_ZNK5clang13LiveVariables6isLiveEPKNS_4StmtEPKNS_7VarDeclE", "clang::LiveVariables::isLive(clang::Stmt const*, clang::VarDecl const*) const"}, + {"_ZNK5clang13LiveVariables12dumpLivenessERKNS_23StmtDeclBitVector_Types5ValTyERKNS_13SourceManagerE", "clang::LiveVariables::dumpLiveness(clang::StmtDeclBitVector_Types::ValTy const&, clang::SourceManager const&) const"}, + {"_ZNK5clang13LiveVariables17dumpBlockLivenessERKNS_13SourceManagerE", "clang::LiveVariables::dumpBlockLiveness(clang::SourceManager const&) const"}, + {"_ZN5clang14DataflowSolverINS_13LiveVariablesEN12_GLOBAL__N_113TransferFuncsENS_23StmtDeclBitVector_Types5UnionESt8equal_toINS4_5ValTyEEE12ProcessBlockEPKNS_8CFGBlockEbNS_8dataflow21backward_analysis_tagE", "clang::DataflowSolver>::ProcessBlock(clang::CFGBlock const*, bool, clang::dataflow::backward_analysis_tag)"}, + {"_ZN12_GLOBAL__N_113TransferFuncs5VisitEPN5clang4StmtE", "(anonymous namespace)::TransferFuncs::Visit(clang::Stmt*)"}, + {"_ZN5clang11StmtVisitorIN12_GLOBAL__N_113TransferFuncsEvE5VisitEPNS_4StmtE", "clang::StmtVisitor<(anonymous namespace)::TransferFuncs, void>::Visit(clang::Stmt*)"}, + {"_ZN12_GLOBAL__N_113TransferFuncs18VisitUnaryOperatorEPN5clang13UnaryOperatorE", "(anonymous namespace)::TransferFuncs::VisitUnaryOperator(clang::UnaryOperator*)"}, + {"_ZN5clang14CFGStmtVisitorIN12_GLOBAL__N_113TransferFuncsEvE13VisitChildrenEPNS_4StmtE", "clang::CFGStmtVisitor<(anonymous namespace)::TransferFuncs, void>::VisitChildren(clang::Stmt*)"}, + {"_ZN12_GLOBAL__N_113TransferFuncs11VisitAssignEPN5clang14BinaryOperatorE", "(anonymous namespace)::TransferFuncs::VisitAssign(clang::BinaryOperator*)"}, + {"_ZN5clang11StmtVisitorIN12_GLOBAL__N_113RegisterDeclsEvE5VisitEPNS_4StmtE", "clang::StmtVisitor<(anonymous namespace)::RegisterDecls, void>::Visit(clang::Stmt*)"}, + {"_ZN5clang14CFGStmtVisitorIN12_GLOBAL__N_113RegisterDeclsEvE13VisitChildrenEPNS_4StmtE", "clang::CFGStmtVisitor<(anonymous namespace)::RegisterDecls, void>::VisitChildren(clang::Stmt*)"}, + {"_ZN5clang21CFGRecStmtDeclVisitorIN12_GLOBAL__N_113RegisterDeclsEE9VisitDeclEPNS_4DeclE", "clang::CFGRecStmtDeclVisitor<(anonymous namespace)::RegisterDecls>::VisitDecl(clang::Decl*)"}, + {"_ZN5clang14DataflowValuesINS_24LiveVariables_ValueTypesENS_8dataflow21backward_analysis_tagEEC2Ev", "clang::DataflowValues::DataflowValues()"}, + {"_ZN5clang21analyze_format_string17ParsePrintfStringERNS0_19FormatStringHandlerEPKcS4_", "clang::analyze_format_string::ParsePrintfString(clang::analyze_format_string::FormatStringHandler&, char const*, char const*)"}, + {"_ZNK5clang21analyze_format_string19ConversionSpecifier8toStringEv", "clang::analyze_format_string::ConversionSpecifier::toString() const"}, + {"_ZNK5clang14analyze_printf15PrintfSpecifier10getArgTypeERNS_10ASTContextE", "clang::analyze_printf::PrintfSpecifier::getArgType(clang::ASTContext&) const"}, + {"_ZN5clang14analyze_printf15PrintfSpecifier7fixTypeENS_8QualTypeE", "clang::analyze_printf::PrintfSpecifier::fixType(clang::QualType)"}, + {"_ZNK5clang14analyze_printf15PrintfSpecifier8toStringERN4llvm11raw_ostreamE", "clang::analyze_printf::PrintfSpecifier::toString(llvm::raw_ostream&) const"}, + {"_ZNK5clang14analyze_printf15PrintfSpecifier18hasValidPlusPrefixEv", "clang::analyze_printf::PrintfSpecifier::hasValidPlusPrefix() const"}, + {"_ZNK5clang14analyze_printf15PrintfSpecifier23hasValidAlternativeFormEv", "clang::analyze_printf::PrintfSpecifier::hasValidAlternativeForm() const"}, + {"_ZNK5clang14analyze_printf15PrintfSpecifier20hasValidLeadingZerosEv", "clang::analyze_printf::PrintfSpecifier::hasValidLeadingZeros() const"}, + {"_ZNK5clang14analyze_printf15PrintfSpecifier19hasValidSpacePrefixEv", "clang::analyze_printf::PrintfSpecifier::hasValidSpacePrefix() const"}, + {"_ZNK5clang14analyze_printf15PrintfSpecifier21hasValidLeftJustifiedEv", "clang::analyze_printf::PrintfSpecifier::hasValidLeftJustified() const"}, + {"_ZNK5clang14analyze_printf15PrintfSpecifier31hasValidThousandsGroupingPrefixEv", "clang::analyze_printf::PrintfSpecifier::hasValidThousandsGroupingPrefix() const"}, + {"_ZNK5clang14analyze_printf15PrintfSpecifier17hasValidPrecisionEv", "clang::analyze_printf::PrintfSpecifier::hasValidPrecision() const"}, + {"_ZNK5clang14analyze_printf15PrintfSpecifier18hasValidFieldWidthEv", "clang::analyze_printf::PrintfSpecifier::hasValidFieldWidth() const"}, + {"_ZN5clang22PseudoConstantAnalysisC1EPKNS_4StmtE", "clang::PseudoConstantAnalysis::PseudoConstantAnalysis(clang::Stmt const*)"}, + {"_ZN5clang22PseudoConstantAnalysisC2EPKNS_4StmtE", "clang::PseudoConstantAnalysis::PseudoConstantAnalysis(clang::Stmt const*)"}, + {"_ZN5clang22PseudoConstantAnalysisD1Ev", "clang::PseudoConstantAnalysis::~PseudoConstantAnalysis()"}, + {"_ZN5clang22PseudoConstantAnalysisD2Ev", "clang::PseudoConstantAnalysis::~PseudoConstantAnalysis()"}, + {"_ZN5clang22PseudoConstantAnalysis16isPseudoConstantEPKNS_7VarDeclE", "clang::PseudoConstantAnalysis::isPseudoConstant(clang::VarDecl const*)"}, + {"_ZN5clang22PseudoConstantAnalysis11RunAnalysisEv", "clang::PseudoConstantAnalysis::RunAnalysis()"}, + {"_ZN5clang22PseudoConstantAnalysis13wasReferencedEPKNS_7VarDeclE", "clang::PseudoConstantAnalysis::wasReferenced(clang::VarDecl const*)"}, + {"_ZN5clang14reachable_code22ScanReachableFromBlockERKNS_8CFGBlockERN4llvm9BitVectorE", "clang::reachable_code::ScanReachableFromBlock(clang::CFGBlock const&, llvm::BitVector&)"}, + {"_ZN5clang14reachable_code19FindUnreachableCodeERNS_15AnalysisContextERNS0_8CallbackE", "clang::reachable_code::FindUnreachableCode(clang::AnalysisContext&, clang::reachable_code::Callback&)"}, + {"_Z17GetUnreachableLocRKN5clang8CFGBlockERNS_11SourceRangeES4_", "GetUnreachableLoc(clang::CFGBlock const&, clang::SourceRange&, clang::SourceRange&)"}, + {"_ZN4llvm15SmallVectorImplIN12_GLOBAL__N_16ErrLocEE9push_backERKS2_", "llvm::SmallVectorImpl<(anonymous namespace)::ErrLoc>::push_back((anonymous namespace)::ErrLoc const&)"}, + {"_Z7LineCmpPKvS0_", "LineCmp(void const*, void const*)"}, + {"_ZN5clang21analyze_format_string16ParseScanfStringERNS0_19FormatStringHandlerEPKcS4_", "clang::analyze_format_string::ParseScanfString(clang::analyze_format_string::FormatStringHandler&, char const*, char const*)"}, + {"_ZN5clang19UninitializedValues16InitializeValuesERKNS_3CFGE", "clang::UninitializedValues::InitializeValues(clang::CFG const&)"}, + {"_ZN5clang30UninitializedValues_ValueTypes10ObserverTyD0Ev", "clang::UninitializedValues_ValueTypes::ObserverTy::~ObserverTy()"}, + {"_ZN5clang30UninitializedValues_ValueTypes10ObserverTyD1Ev", "clang::UninitializedValues_ValueTypes::ObserverTy::~ObserverTy()"}, + {"_ZN5clang30UninitializedValues_ValueTypes10ObserverTyD2Ev", "clang::UninitializedValues_ValueTypes::ObserverTy::~ObserverTy()"}, + {"_ZN5clang24CheckUninitializedValuesERNS_3CFGERNS_10ASTContextERNS_10DiagnosticEb", "clang::CheckUninitializedValues(clang::CFG&, clang::ASTContext&, clang::Diagnostic&, bool)"}, + {"_ZN12_GLOBAL__N_126UninitializedValuesCheckerD1Ev", "(anonymous namespace)::UninitializedValuesChecker::~UninitializedValuesChecker()"}, + {"_ZN5clang14DataflowSolverINS_19UninitializedValuesEN12_GLOBAL__N_113TransferFuncsENS_23StmtDeclBitVector_Types5UnionESt8equal_toINS4_5ValTyEEE12ProcessBlockEPKNS_8CFGBlockEbNS_8dataflow20forward_analysis_tagE", "clang::DataflowSolver>::ProcessBlock(clang::CFGBlock const*, bool, clang::dataflow::forward_analysis_tag)"}, + {"_ZN12_GLOBAL__N_113TransferFuncs19BlockStmt_VisitExprEPN5clang4ExprE", "(anonymous namespace)::TransferFuncs::BlockStmt_VisitExpr(clang::Expr*)"}, + {"_ZN5clang14CFGStmtVisitorIN12_GLOBAL__N_113TransferFuncsEbE5VisitEPNS_4StmtE", "clang::CFGStmtVisitor<(anonymous namespace)::TransferFuncs, bool>::Visit(clang::Stmt*)"}, + {"_ZN12_GLOBAL__N_113TransferFuncs19VisitBinaryOperatorEPN5clang14BinaryOperatorE", "(anonymous namespace)::TransferFuncs::VisitBinaryOperator(clang::BinaryOperator*)"}, + {"_ZN12_GLOBAL__N_113TransferFuncs18VisitUnaryOperatorEPN5clang13UnaryOperatorE", "(anonymous namespace)::TransferFuncs::VisitUnaryOperator(clang::UnaryOperator*)"}, + {"_ZN12_GLOBAL__N_113TransferFuncs9VisitStmtEPN5clang4StmtE", "(anonymous namespace)::TransferFuncs::VisitStmt(clang::Stmt*)"}, + {"_ZN5clang14CFGStmtVisitorIN12_GLOBAL__N_113TransferFuncsEbE13VisitChildrenEPNS_4StmtE", "clang::CFGStmtVisitor<(anonymous namespace)::TransferFuncs, bool>::VisitChildren(clang::Stmt*)"}, + {"_ZN5clang11StmtVisitorIN12_GLOBAL__N_113RegisterDeclsEvE5VisitEPNS_4StmtE", "clang::StmtVisitor<(anonymous namespace)::RegisterDecls, void>::Visit(clang::Stmt*)"}, + {"_ZN5clang14CFGStmtVisitorIN12_GLOBAL__N_113RegisterDeclsEvE13VisitChildrenEPNS_4StmtE", "clang::CFGStmtVisitor<(anonymous namespace)::RegisterDecls, void>::VisitChildren(clang::Stmt*)"}, + {"_ZN12_GLOBAL__N_126UninitializedValuesCheckerD0Ev", "(anonymous namespace)::UninitializedValuesChecker::~UninitializedValuesChecker()"}, + {"_ZN12_GLOBAL__N_126UninitializedValuesChecker18ObserveDeclRefExprERN5clang23StmtDeclBitVector_Types5ValTyERNS1_30UninitializedValues_ValueTypes14AnalysisDataTyEPNS1_11DeclRefExprEPNS1_7VarDeclE", "(anonymous namespace)::UninitializedValuesChecker::ObserveDeclRefExpr(clang::StmtDeclBitVector_Types::ValTy&, clang::UninitializedValues_ValueTypes::AnalysisDataTy&, clang::DeclRefExpr*, clang::VarDecl*)"}, + {"_ZN4llvm8DenseMapIPKN5clang4StmtENS1_23StmtDeclBitVector_Types5ValTyENS_12DenseMapInfoIS4_EENS7_IS6_EEE16FindAndConstructERKS4_", "llvm::DenseMap, llvm::DenseMapInfo>::FindAndConstruct(clang::Stmt const* const&)"}, + {"_ZN4llvm8DenseMapIPKN5clang4StmtENS1_23StmtDeclBitVector_Types5ValTyENS_12DenseMapInfoIS4_EENS7_IS6_EEE16InsertIntoBucketERKS4_RKS6_PSt4pairIS4_S6_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::Stmt const* const&, clang::StmtDeclBitVector_Types::ValTy const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang4StmtENS1_23StmtDeclBitVector_Types5ValTyENS_12DenseMapInfoIS4_EENS7_IS6_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang18DataflowWorkListTy7dequeueEv", "clang::DataflowWorkListTy::dequeue()"}, + {"_ZN4llvm8DenseMapIN5clang12ProgramPointENS1_23StmtDeclBitVector_Types5ValTyENS_12DenseMapInfoIS2_EENS5_IS4_EEE4findERKS2_", "llvm::DenseMap, llvm::DenseMapInfo>::find(clang::ProgramPoint const&)"}, + {"_ZN5clang18DataflowWorkListTy7enqueueEPKNS_8CFGBlockE", "clang::DataflowWorkListTy::enqueue(clang::CFGBlock const*)"}, + {"_ZN4llvm8DenseMapIPKN5clang8CFGBlockEhNS_12DenseMapInfoIS4_EENS5_IhEEE16InsertIntoBucketERKS4_RKhPSt4pairIS4_hE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::CFGBlock const* const&, unsigned char const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang8CFGBlockEhNS_12DenseMapInfoIS4_EENS5_IhEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIN5clang12ProgramPointENS1_23StmtDeclBitVector_Types5ValTyENS_12DenseMapInfoIS2_EENS5_IS4_EEE16FindAndConstructERKS2_", "llvm::DenseMap, llvm::DenseMapInfo>::FindAndConstruct(clang::ProgramPoint const&)"}, + {"_ZNK4llvm8DenseMapIN5clang12ProgramPointENS1_23StmtDeclBitVector_Types5ValTyENS_12DenseMapInfoIS2_EENS5_IS4_EEE15LookupBucketForERKS2_RPSt4pairIS2_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::LookupBucketFor(clang::ProgramPoint const&, std::pair*&) const"}, + {"_ZN4llvm8DenseMapIN5clang12ProgramPointENS1_23StmtDeclBitVector_Types5ValTyENS_12DenseMapInfoIS2_EENS5_IS4_EEE16InsertIntoBucketERKS2_RKS4_PSt4pairIS2_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::ProgramPoint const&, clang::StmtDeclBitVector_Types::ValTy const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIN5clang12ProgramPointENS1_23StmtDeclBitVector_Types5ValTyENS_12DenseMapInfoIS2_EENS5_IS4_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNK5clang12ProgramPoint12getHashValueEv", "clang::ProgramPoint::getHashValue() const"}, + {"_ZN4llvm8DenseMapIPKN5clang8CFGBlockENS1_23StmtDeclBitVector_Types5ValTyENS_12DenseMapInfoIS4_EENS7_IS6_EEE6insertERKSt4pairIS4_S6_E", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZNSt4pairIPKN5clang8CFGBlockENS0_23StmtDeclBitVector_Types5ValTyEEC2ERKS3_RKS5_", "std::pair::pair(clang::CFGBlock const* const&, clang::StmtDeclBitVector_Types::ValTy const&)"}, + {"_ZN4llvm8DenseMapIPKN5clang8CFGBlockENS1_23StmtDeclBitVector_Types5ValTyENS_12DenseMapInfoIS4_EENS7_IS6_EEE16InsertIntoBucketERKS4_RKS6_PSt4pairIS4_S6_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::CFGBlock const* const&, clang::StmtDeclBitVector_Types::ValTy const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang8CFGBlockENS1_23StmtDeclBitVector_Types5ValTyENS_12DenseMapInfoIS4_EENS7_IS6_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang23StmtDeclBitVector_Types5ValTyoRERKS1_", "clang::StmtDeclBitVector_Types::ValTy::operator|=(clang::StmtDeclBitVector_Types::ValTy const&)"}, + {"_ZN5clang19DeclBitVector_Types14AnalysisDataTy8RegisterEPKNS_9NamedDeclE", "clang::DeclBitVector_Types::AnalysisDataTy::Register(clang::NamedDecl const*)"}, + {"_ZN5clang14DataflowValuesINS_30UninitializedValues_ValueTypesENS_8dataflow20forward_analysis_tagEED2Ev", "clang::DataflowValues::~DataflowValues()"}, + {"_ZN5clang30UninitializedValues_ValueTypes14AnalysisDataTyD1Ev", "clang::UninitializedValues_ValueTypes::AnalysisDataTy::~AnalysisDataTy()"}, + {"_ZN5clang30UninitializedValues_ValueTypes14AnalysisDataTyD0Ev", "clang::UninitializedValues_ValueTypes::AnalysisDataTy::~AnalysisDataTy()"}, + {"_ZN5clang14DataflowValuesINS_30UninitializedValues_ValueTypesENS_8dataflow20forward_analysis_tagEEC2Ev", "clang::DataflowValues::DataflowValues()"}, + {"_ZN5clang33runUninitializedVariablesAnalysisERKNS_11DeclContextERKNS_3CFGERNS_15AnalysisContextERNS_22UninitVariablesHandlerE", "clang::runUninitializedVariablesAnalysis(clang::DeclContext const&, clang::CFG const&, clang::AnalysisContext&, clang::UninitVariablesHandler&)"}, + {"_Z10runOnBlockPKN5clang8CFGBlockERKNS_3CFGERNS_15AnalysisContextERN12_GLOBAL__N_114CFGBlockValuesEPNS_22UninitVariablesHandlerEb", "runOnBlock(clang::CFGBlock const*, clang::CFG const&, clang::AnalysisContext&, (anonymous namespace)::CFGBlockValues&, clang::UninitVariablesHandler*, bool)"}, + {"_ZN5clang22UninitVariablesHandlerD0Ev", "clang::UninitVariablesHandler::~UninitVariablesHandler()"}, + {"_ZN5clang22UninitVariablesHandlerD1Ev", "clang::UninitVariablesHandler::~UninitVariablesHandler()"}, + {"_ZN5clang22UninitVariablesHandlerD2Ev", "clang::UninitVariablesHandler::~UninitVariablesHandler()"}, + {"_Z25getLogicalOperatorInChainPKN5clang8CFGBlockE", "getLogicalOperatorInChain(clang::CFGBlock const*)"}, + {"_ZN12_GLOBAL__N_114CFGBlockValues12getBitVectorEPKN5clang8CFGBlockES4_", "(anonymous namespace)::CFGBlockValues::getBitVector(clang::CFGBlock const*, clang::CFGBlock const*)"}, + {"_ZN5clang11StmtVisitorIN12_GLOBAL__N_117TransferFunctionsEvE5VisitEPNS_4StmtE", "clang::StmtVisitor<(anonymous namespace)::TransferFunctions, void>::Visit(clang::Stmt*)"}, + {"_ZN12_GLOBAL__N_117TransferFunctions19VisitBinaryOperatorEPN5clang14BinaryOperatorE", "(anonymous namespace)::TransferFunctions::VisitBinaryOperator(clang::BinaryOperator*)"}, + {"_ZN12_GLOBAL__N_117TransferFunctions18VisitUnaryOperatorEPN5clang13UnaryOperatorE", "(anonymous namespace)::TransferFunctions::VisitUnaryOperator(clang::UnaryOperator*)"}, + {"_ZN5clang14CFGStmtVisitorIN12_GLOBAL__N_117TransferFunctionsEvE13VisitChildrenEPNS_4StmtE", "clang::CFGStmtVisitor<(anonymous namespace)::TransferFunctions, void>::VisitChildren(clang::Stmt*)"}, + {"_Z12isTrackedVarPKN5clang7VarDeclEPKNS_11DeclContextE", "isTrackedVar(clang::VarDecl const*, clang::DeclContext const*)"}, + {"_ZN12_GLOBAL__N_117TransferFunctions13VisitCastExprEPN5clang8CastExprE", "(anonymous namespace)::TransferFunctions::VisitCastExpr(clang::CastExpr*)"}, + {"_ZNK4llvm9BitVectoreqERKS0_", "llvm::BitVector::operator==(llvm::BitVector const&) const"}, + {"_ZNK5clang4Decl7getAttrINS_10BlocksAttrEEEPT_v", "clang::BlocksAttr* clang::Decl::getAttr() const"}, + {"_ZN5clang3idx12EntityGetter9getEntityENS0_6EntityENS_15DeclarationNameEjb", "clang::idx::EntityGetter::getEntity(clang::idx::Entity, clang::DeclarationName, unsigned int, bool)"}, + {"_ZN5clang3idx12EntityGetter15getGlobalEntityEN4llvm9StringRefE", "clang::idx::EntityGetter::getGlobalEntity(llvm::StringRef)"}, + {"_ZN5clang3idx12EntityGetter14VisitNamedDeclEPNS_9NamedDeclE", "clang::idx::EntityGetter::VisitNamedDecl(clang::NamedDecl*)"}, + {"_ZN5clang3idx6EntityC1EPNS_4DeclE", "clang::idx::Entity::Entity(clang::Decl*)"}, + {"_ZN5clang3idx12EntityGetter12VisitVarDeclEPNS_7VarDeclE", "clang::idx::EntityGetter::VisitVarDecl(clang::VarDecl*)"}, + {"_ZN5clang3idx12EntityGetter17VisitFunctionDeclEPNS_12FunctionDeclE", "clang::idx::EntityGetter::VisitFunctionDecl(clang::FunctionDecl*)"}, + {"_ZN5clang3idx12EntityGetter14VisitFieldDeclEPNS_9FieldDeclE", "clang::idx::EntityGetter::VisitFieldDecl(clang::FieldDecl*)"}, + {"_ZN5clang3idx12EntityGetter13VisitTypeDeclEPNS_8TypeDeclE", "clang::idx::EntityGetter::VisitTypeDecl(clang::TypeDecl*)"}, + {"_ZN5clang3idx10EntityImpl7getDeclERNS_10ASTContextE", "clang::idx::EntityImpl::getDecl(clang::ASTContext&)"}, + {"_ZNK5clang3idx6Entity7getDeclERNS_10ASTContextE", "clang::idx::Entity::getDecl(clang::ASTContext&) const"}, + {"_ZN5clang3idx10EntityImpl3getEPNS_4DeclERNS0_7ProgramERNS0_11ProgramImplE", "clang::idx::EntityImpl::get(clang::Decl*, clang::idx::Program&, clang::idx::ProgramImpl&)"}, + {"_ZN5clang3idx10EntityImpl3getEN4llvm9StringRefERNS0_7ProgramERNS0_11ProgramImplE", "clang::idx::EntityImpl::get(llvm::StringRef, clang::idx::Program&, clang::idx::ProgramImpl&)"}, + {"_ZN5clang3idx10EntityImpl16getPrintableNameEv", "clang::idx::EntityImpl::getPrintableName()"}, + {"_ZN5clang3idx6EntityC2EPNS_4DeclE", "clang::idx::Entity::Entity(clang::Decl*)"}, + {"_ZNK5clang3idx6Entity16getPrintableNameEv", "clang::idx::Entity::getPrintableName() const"}, + {"_ZN5clang3idx6Entity3getEPNS_4DeclERNS0_7ProgramE", "clang::idx::Entity::get(clang::Decl*, clang::idx::Program&)"}, + {"_ZN5clang3idx6Entity3getEN4llvm9StringRefERNS0_7ProgramE", "clang::idx::Entity::get(llvm::StringRef, clang::idx::Program&)"}, + {"_ZN4llvm12DenseMapInfoIN5clang3idx6EntityEE12getHashValueES3_", "llvm::DenseMapInfo::getHashValue(clang::idx::Entity)"}, + {"_ZN5clang11DeclVisitorINS_3idx12EntityGetterENS1_6EntityEE5VisitEPNS_4DeclE", "clang::DeclVisitor::Visit(clang::Decl*)"}, + {"_ZNK5clang3idx14GlobalSelector11getSelectorERNS_10ASTContextE", "clang::idx::GlobalSelector::getSelector(clang::ASTContext&) const"}, + {"_ZNK5clang3idx14GlobalSelector16getPrintableNameEv", "clang::idx::GlobalSelector::getPrintableName() const"}, + {"_ZN5clang3idx14GlobalSelector3getENS_8SelectorERNS0_7ProgramE", "clang::idx::GlobalSelector::get(clang::Selector, clang::idx::Program&)"}, + {"_ZN4llvm12DenseMapInfoIN5clang3idx14GlobalSelectorEE12getHashValueES3_", "llvm::DenseMapInfo::getHashValue(clang::idx::GlobalSelector)"}, + {"_ZN5clang3idx13EntityHandlerD0Ev", "clang::idx::EntityHandler::~EntityHandler()"}, + {"_ZN5clang3idx13EntityHandlerD1Ev", "clang::idx::EntityHandler::~EntityHandler()"}, + {"_ZN5clang3idx13EntityHandlerD2Ev", "clang::idx::EntityHandler::~EntityHandler()"}, + {"_ZN5clang3idx22TranslationUnitHandlerD0Ev", "clang::idx::TranslationUnitHandler::~TranslationUnitHandler()"}, + {"_ZN5clang3idx22TranslationUnitHandlerD1Ev", "clang::idx::TranslationUnitHandler::~TranslationUnitHandler()"}, + {"_ZN5clang3idx22TranslationUnitHandlerD2Ev", "clang::idx::TranslationUnitHandler::~TranslationUnitHandler()"}, + {"_ZN5clang3idx17TULocationHandlerD0Ev", "clang::idx::TULocationHandler::~TULocationHandler()"}, + {"_ZN5clang3idx17TULocationHandlerD1Ev", "clang::idx::TULocationHandler::~TULocationHandler()"}, + {"_ZN5clang3idx17TULocationHandlerD2Ev", "clang::idx::TULocationHandler::~TULocationHandler()"}, + {"_ZN5clang3idx13IndexProviderD0Ev", "clang::idx::IndexProvider::~IndexProvider()"}, + {"_ZN5clang3idx13IndexProviderD1Ev", "clang::idx::IndexProvider::~IndexProvider()"}, + {"_ZN5clang3idx13IndexProviderD2Ev", "clang::idx::IndexProvider::~IndexProvider()"}, + {"_ZN5clang3idx7Indexer8IndexASTEPNS0_15TranslationUnitE", "clang::idx::Indexer::IndexAST(clang::idx::TranslationUnit*)"}, + {"_ZN12_GLOBAL__N_113EntityIndexerD1Ev", "(anonymous namespace)::EntityIndexer::~EntityIndexer()"}, + {"_ZN5clang3idx7Indexer22GetTranslationUnitsForENS0_6EntityERNS0_22TranslationUnitHandlerE", "clang::idx::Indexer::GetTranslationUnitsFor(clang::idx::Entity, clang::idx::TranslationUnitHandler&)"}, + {"_ZN5clang3idx7Indexer22GetTranslationUnitsForENS0_14GlobalSelectorERNS0_22TranslationUnitHandlerE", "clang::idx::Indexer::GetTranslationUnitsFor(clang::idx::GlobalSelector, clang::idx::TranslationUnitHandler&)"}, + {"_ZN5clang3idx7Indexer16getDefinitionForENS0_6EntityE", "clang::idx::Indexer::getDefinitionFor(clang::idx::Entity)"}, + {"_ZN5clang11DeclVisitorIN12_GLOBAL__N_115SelectorIndexerEvE5VisitEPNS_4DeclE", "clang::DeclVisitor<(anonymous namespace)::SelectorIndexer, void>::Visit(clang::Decl*)"}, + {"_ZN5clang11DeclVisitorIN12_GLOBAL__N_115SelectorIndexerEvE14VisitNamedDeclEPNS_9NamedDeclE", "clang::DeclVisitor<(anonymous namespace)::SelectorIndexer, void>::VisitNamedDecl(clang::NamedDecl*)"}, + {"_ZN5clang11StmtVisitorIN12_GLOBAL__N_115SelectorIndexerEvE5VisitEPNS_4StmtE", "clang::StmtVisitor<(anonymous namespace)::SelectorIndexer, void>::Visit(clang::Stmt*)"}, + {"_ZN5clang3idx10ASTVisitorIN12_GLOBAL__N_115SelectorIndexerEE9VisitStmtEPNS_4StmtE", "clang::idx::ASTVisitor<(anonymous namespace)::SelectorIndexer>::VisitStmt(clang::Stmt*)"}, + {"_ZN5clang3idx10ASTVisitorIN12_GLOBAL__N_115SelectorIndexerEE19VisitDeclaratorDeclEPNS_14DeclaratorDeclE", "clang::idx::ASTVisitor<(anonymous namespace)::SelectorIndexer>::VisitDeclaratorDecl(clang::DeclaratorDecl*)"}, + {"_ZN5clang14TypeLocVisitorIN12_GLOBAL__N_115SelectorIndexerEvE5VisitENS_7TypeLocE", "clang::TypeLocVisitor<(anonymous namespace)::SelectorIndexer, void>::Visit(clang::TypeLoc)"}, + {"_ZN12_GLOBAL__N_113EntityIndexerD0Ev", "(anonymous namespace)::EntityIndexer::~EntityIndexer()"}, + {"_ZN12_GLOBAL__N_113EntityIndexer6HandleEN5clang3idx6EntityE", "(anonymous namespace)::EntityIndexer::Handle(clang::idx::Entity)"}, + {"_ZN5clang3idx7IndexerD1Ev", "clang::idx::Indexer::~Indexer()"}, + {"_ZN5clang3idx7IndexerD0Ev", "clang::idx::Indexer::~Indexer()"}, + + // {"_ZNSt3mapIN5clang3idx14GlobalSelectorEN4llvm11SmallPtrSetIPNS1_15TranslationUnitELj4EEESt4lessIS2_ESaISt4pairIKS2_S7_EEEixERSB_", + // "std::map, std::less, std::allocator>>>::operator[](clang::idx::GlobalSelector const&)"}, + // "std::map, std::less, std::allocator>>>::operator[](clang::idx::GlobalSelector const&)" was returned + + + // {"_ZNSt8_Rb_treeIN5clang3idx14GlobalSelectorESt4pairIKS2_N4llvm11SmallPtrSetIPNS1_15TranslationUnitELj4EEEESt10_Select1stISA_ESt4lessIS2_ESaISA_EE16_M_insert_uniqueESt17_Rb_tree_iteratorISA_ERKSA_", + // "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_insert_unique(std::_Rb_tree_iterator>>, std::pair> const&)"}, + // "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_insert_unique(std::_Rb_tree_iterator>>, std::pair> const&)" was returned + + + // {"_ZNSt8_Rb_treeIN5clang3idx14GlobalSelectorESt4pairIKS2_N4llvm11SmallPtrSetIPNS1_15TranslationUnitELj4EEEESt10_Select1stISA_ESt4lessIS2_ESaISA_EE16_M_insert_uniqueERKSA_", + // "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_insert_unique(std::pair> const&)"}, + // "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_insert_unique(std::pair> const&)" was returned + + {"_ZN4llvm8DenseMapIPN5clang10ASTContextEPNS1_3idx15TranslationUnitENS_12DenseMapInfoIS3_EENS7_IS6_EEE16InsertIntoBucketERKS3_RKS6_PSt4pairIS3_S6_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::ASTContext* const&, clang::idx::TranslationUnit* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPN5clang10ASTContextEPNS1_3idx15TranslationUnitENS_12DenseMapInfoIS3_EENS7_IS6_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + + // {"_ZNSt8_Rb_treeIN5clang3idx6EntityESt4pairIKS2_N4llvm11SmallPtrSetIPNS1_15TranslationUnitELj4EEEESt10_Select1stISA_ESt4lessIS2_ESaISA_EE8_M_eraseEPSt13_Rb_tree_nodeISA_E", + // "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_erase(std::_Rb_tree_node>>*)"}, + // "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_erase(std::_Rb_tree_node>>*)" was returned + + {"_ZNSt8_Rb_treeIN5clang3idx6EntityESt4pairIKS2_S3_IPNS0_12FunctionDeclEPNS1_15TranslationUnitEEESt10_Select1stISA_ESt4lessIS2_ESaISA_EE8_M_eraseEPSt13_Rb_tree_nodeISA_E", "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_erase(std::_Rb_tree_node>>*)"}, + + // {"_ZNSt8_Rb_treeIN5clang3idx14GlobalSelectorESt4pairIKS2_N4llvm11SmallPtrSetIPNS1_15TranslationUnitELj4EEEESt10_Select1stISA_ESt4lessIS2_ESaISA_EE8_M_eraseEPSt13_Rb_tree_nodeISA_E", + // "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_erase(std::_Rb_tree_node>>*)"}, + // "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_erase(std::_Rb_tree_node>>*)" was returned + + + // {"_ZNSt3mapIN5clang3idx6EntityEN4llvm11SmallPtrSetIPNS1_15TranslationUnitELj4EEESt4lessIS2_ESaISt4pairIKS2_S7_EEEixERSB_", + // "std::map, std::less, std::allocator>>>::operator[](clang::idx::Entity const&)"}, + // "std::map, std::less, std::allocator>>>::operator[](clang::idx::Entity const&)" was returned + + {"_ZNSt8_Rb_treeIN5clang3idx6EntityESt4pairIKS2_S3_IPNS0_12FunctionDeclEPNS1_15TranslationUnitEEESt10_Select1stISA_ESt4lessIS2_ESaISA_EE16_M_insert_uniqueESt17_Rb_tree_iteratorISA_ERKSA_", "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_insert_unique(std::_Rb_tree_iterator>>, std::pair> const&)"}, + {"_ZNSt8_Rb_treeIN5clang3idx6EntityESt4pairIKS2_S3_IPNS0_12FunctionDeclEPNS1_15TranslationUnitEEESt10_Select1stISA_ESt4lessIS2_ESaISA_EE16_M_insert_uniqueERKSA_", "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_insert_unique(std::pair> const&)"}, + + // {"_ZNSt8_Rb_treeIN5clang3idx6EntityESt4pairIKS2_N4llvm11SmallPtrSetIPNS1_15TranslationUnitELj4EEEESt10_Select1stISA_ESt4lessIS2_ESaISA_EE16_M_insert_uniqueESt17_Rb_tree_iteratorISA_ERKSA_", + // "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_insert_unique(std::_Rb_tree_iterator>>, std::pair> const&)"}, + // "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_insert_unique(std::_Rb_tree_iterator>>, std::pair> const&)" was returned + + + // {"_ZNSt8_Rb_treeIN5clang3idx6EntityESt4pairIKS2_N4llvm11SmallPtrSetIPNS1_15TranslationUnitELj4EEEESt10_Select1stISA_ESt4lessIS2_ESaISA_EE16_M_insert_uniqueERKSA_", + // "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_insert_unique(std::pair> const&)"}, + // "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_insert_unique(std::pair> const&)" was returned + + {"_ZN5clang3idx15TranslationUnitD0Ev", "clang::idx::TranslationUnit::~TranslationUnit()"}, + {"_ZN5clang3idx15TranslationUnitD1Ev", "clang::idx::TranslationUnit::~TranslationUnit()"}, + {"_ZN5clang3idx15TranslationUnitD2Ev", "clang::idx::TranslationUnit::~TranslationUnit()"}, + {"_ZN5clang3idx7ProgramC1Ev", "clang::idx::Program::Program()"}, + {"_ZN5clang3idx7ProgramC2Ev", "clang::idx::Program::Program()"}, + {"_ZN5clang3idx7ProgramD1Ev", "clang::idx::Program::~Program()"}, + {"_ZN5clang3idx7ProgramD2Ev", "clang::idx::Program::~Program()"}, + {"_ZN5clang3idx7Program12FindEntitiesERNS_10ASTContextERNS0_13EntityHandlerE", "clang::idx::Program::FindEntities(clang::ASTContext&, clang::idx::EntityHandler&)"}, + {"_Z16FindEntitiesInDCPN5clang11DeclContextERNS_3idx7ProgramERNS2_13EntityHandlerE", "FindEntitiesInDC(clang::DeclContext*, clang::idx::Program&, clang::idx::EntityHandler&)"}, + {"_ZN4llvm10FoldingSetIN5clang3idx10EntityImplEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang3idx10EntityImplEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang3idx10EntityImplEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang3idx10EntityImplEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS8_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang3idx10EntityImplEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN5clang3idx11ProgramImplC2Ev", "clang::idx::ProgramImpl::ProgramImpl()"}, + {"_ZN5clang9DeltaTreeC1Ev", "clang::DeltaTree::DeltaTree()"}, + {"_ZN5clang9DeltaTreeC2Ev", "clang::DeltaTree::DeltaTree()"}, + {"_ZN5clang9DeltaTreeC1ERKS0_", "clang::DeltaTree::DeltaTree(clang::DeltaTree const&)"}, + {"_ZN5clang9DeltaTreeC2ERKS0_", "clang::DeltaTree::DeltaTree(clang::DeltaTree const&)"}, + {"_ZN5clang9DeltaTreeD1Ev", "clang::DeltaTree::~DeltaTree()"}, + {"_ZN5clang9DeltaTreeD2Ev", "clang::DeltaTree::~DeltaTree()"}, + {"_ZN12_GLOBAL__N_113DeltaTreeNode7DestroyEv", "(anonymous namespace)::DeltaTreeNode::Destroy()"}, + {"_ZNK5clang9DeltaTree10getDeltaAtEj", "clang::DeltaTree::getDeltaAt(unsigned int) const"}, + {"_ZN5clang9DeltaTree8AddDeltaEji", "clang::DeltaTree::AddDelta(unsigned int, int)"}, + {"_ZN12_GLOBAL__N_113DeltaTreeNode11DoInsertionEjiPNS0_12InsertResultE", "(anonymous namespace)::DeltaTreeNode::DoInsertion(unsigned int, int, (anonymous namespace)::DeltaTreeNode::InsertResult*)"}, + {"_ZN12_GLOBAL__N_113DeltaTreeNode7DoSplitERNS0_12InsertResultE", "(anonymous namespace)::DeltaTreeNode::DoSplit((anonymous namespace)::DeltaTreeNode::InsertResult&)"}, + {"_ZN5clang13FixItRewriterC1ERNS_10DiagnosticERNS_13SourceManagerERKNS_11LangOptionsEPNS_12FixItOptionsE", "clang::FixItRewriter::FixItRewriter(clang::Diagnostic&, clang::SourceManager&, clang::LangOptions const&, clang::FixItOptions*)"}, + {"_ZN5clang13FixItRewriterC2ERNS_10DiagnosticERNS_13SourceManagerERKNS_11LangOptionsEPNS_12FixItOptionsE", "clang::FixItRewriter::FixItRewriter(clang::Diagnostic&, clang::SourceManager&, clang::LangOptions const&, clang::FixItOptions*)"}, + {"_ZN5clang13FixItRewriterD0Ev", "clang::FixItRewriter::~FixItRewriter()"}, + {"_ZN5clang13FixItRewriterD1Ev", "clang::FixItRewriter::~FixItRewriter()"}, + {"_ZN5clang13FixItRewriterD2Ev", "clang::FixItRewriter::~FixItRewriter()"}, + {"_ZN5clang13FixItRewriter14WriteFixedFileENS_6FileIDERN4llvm11raw_ostreamE", "clang::FixItRewriter::WriteFixedFile(clang::FileID, llvm::raw_ostream&)"}, + {"_ZN5clang13FixItRewriter15WriteFixedFilesEv", "clang::FixItRewriter::WriteFixedFiles()"}, + {"_ZN5clang13FixItRewriter4DiagENS_14SourceLocationEj", "clang::FixItRewriter::Diag(clang::SourceLocation, unsigned int)"}, + {"_ZNK5clang13FixItRewriter25IncludeInDiagnosticCountsEv", "clang::FixItRewriter::IncludeInDiagnosticCounts() const"}, + {"_ZN5clang13FixItRewriter16HandleDiagnosticENS_10Diagnostic5LevelERKNS_14DiagnosticInfoE", "clang::FixItRewriter::HandleDiagnostic(clang::Diagnostic::Level, clang::DiagnosticInfo const&)"}, + {"_ZN5clang12FixItOptionsD0Ev", "clang::FixItOptions::~FixItOptions()"}, + {"_ZN5clang12FixItOptionsD1Ev", "clang::FixItOptions::~FixItOptions()"}, + {"_ZN5clang12FixItOptionsD2Ev", "clang::FixItOptions::~FixItOptions()"}, + {"_ZN5clang15HTMLPrintAction17CreateASTConsumerERNS_16CompilerInstanceEN4llvm9StringRefE", "clang::HTMLPrintAction::CreateASTConsumer(clang::CompilerInstance&, llvm::StringRef)"}, + {"_ZN5clang11FixItActionC1Ev", "clang::FixItAction::FixItAction()"}, + {"_ZN5clang11FixItActionC2Ev", "clang::FixItAction::FixItAction()"}, + {"_ZN5clang11FixItActionD0Ev", "clang::FixItAction::~FixItAction()"}, + {"_ZN5clang11FixItActionD1Ev", "clang::FixItAction::~FixItAction()"}, + {"_ZN5clang11FixItActionD2Ev", "clang::FixItAction::~FixItAction()"}, + {"_ZN5clang11FixItAction17CreateASTConsumerERNS_16CompilerInstanceEN4llvm9StringRefE", "clang::FixItAction::CreateASTConsumer(clang::CompilerInstance&, llvm::StringRef)"}, + {"_ZN5clang11FixItAction21BeginSourceFileActionERNS_16CompilerInstanceEN4llvm9StringRefE", "clang::FixItAction::BeginSourceFileAction(clang::CompilerInstance&, llvm::StringRef)"}, + {"_ZN5clang11FixItAction19EndSourceFileActionEv", "clang::FixItAction::EndSourceFileAction()"}, + {"_ZN5clang17RewriteObjCAction17CreateASTConsumerERNS_16CompilerInstanceEN4llvm9StringRefE", "clang::RewriteObjCAction::CreateASTConsumer(clang::CompilerInstance&, llvm::StringRef)"}, + {"_ZN5clang19RewriteMacrosAction13ExecuteActionEv", "clang::RewriteMacrosAction::ExecuteAction()"}, + {"_ZN5clang17RewriteTestAction13ExecuteActionEv", "clang::RewriteTestAction::ExecuteAction()"}, + {"_ZN12_GLOBAL__N_119FixItRewriteInPlaceD1Ev", "(anonymous namespace)::FixItRewriteInPlace::~FixItRewriteInPlace()"}, + {"_ZN12_GLOBAL__N_119FixItRewriteInPlaceD0Ev", "(anonymous namespace)::FixItRewriteInPlace::~FixItRewriteInPlace()"}, + {"_ZN12_GLOBAL__N_119FixItRewriteInPlace15RewriteFilenameERKSs", "(anonymous namespace)::FixItRewriteInPlace::RewriteFilename(std::string const&)"}, + {"_ZN12_GLOBAL__N_125FixItActionSuffixInserterD1Ev", "(anonymous namespace)::FixItActionSuffixInserter::~FixItActionSuffixInserter()"}, + {"_ZN12_GLOBAL__N_125FixItActionSuffixInserterD0Ev", "(anonymous namespace)::FixItActionSuffixInserter::~FixItActionSuffixInserter()"}, + {"_ZN12_GLOBAL__N_125FixItActionSuffixInserter15RewriteFilenameERKSs", "(anonymous namespace)::FixItActionSuffixInserter::RewriteFilename(std::string const&)"}, + {"_ZNK5clang11FixItAction17hasASTFileSupportEv", "clang::FixItAction::hasASTFileSupport() const"}, + {"_ZN5clang15HTMLPrintActionD1Ev", "clang::HTMLPrintAction::~HTMLPrintAction()"}, + {"_ZN5clang15HTMLPrintActionD0Ev", "clang::HTMLPrintAction::~HTMLPrintAction()"}, + {"_ZN5clang17RewriteObjCActionD1Ev", "clang::RewriteObjCAction::~RewriteObjCAction()"}, + {"_ZN5clang17RewriteObjCActionD0Ev", "clang::RewriteObjCAction::~RewriteObjCAction()"}, + {"_ZN5clang19RewriteMacrosActionD1Ev", "clang::RewriteMacrosAction::~RewriteMacrosAction()"}, + {"_ZN5clang19RewriteMacrosActionD0Ev", "clang::RewriteMacrosAction::~RewriteMacrosAction()"}, + {"_ZN5clang17RewriteTestActionD1Ev", "clang::RewriteTestAction::~RewriteTestAction()"}, + {"_ZN5clang17RewriteTestActionD0Ev", "clang::RewriteTestAction::~RewriteTestAction()"}, + {"_ZN5clang17CreateHTMLPrinterEPN4llvm11raw_ostreamERNS_12PreprocessorEbb", "clang::CreateHTMLPrinter(llvm::raw_ostream*, clang::Preprocessor&, bool, bool)"}, + {"_ZN12_GLOBAL__N_111HTMLPrinterD1Ev", "(anonymous namespace)::HTMLPrinter::~HTMLPrinter()"}, + {"_ZN12_GLOBAL__N_111HTMLPrinterD0Ev", "(anonymous namespace)::HTMLPrinter::~HTMLPrinter()"}, + {"_ZN12_GLOBAL__N_111HTMLPrinter10InitializeERN5clang10ASTContextE", "(anonymous namespace)::HTMLPrinter::Initialize(clang::ASTContext&)"}, + {"_ZN12_GLOBAL__N_111HTMLPrinter21HandleTranslationUnitERN5clang10ASTContextE", "(anonymous namespace)::HTMLPrinter::HandleTranslationUnit(clang::ASTContext&)"}, + {"_ZN5clang4html14HighlightRangeERNS_8RewriterENS_14SourceLocationES3_PKcS5_", "clang::html::HighlightRange(clang::Rewriter&, clang::SourceLocation, clang::SourceLocation, char const*, char const*)"}, + {"_ZN5clang4html14HighlightRangeERNS_13RewriteBufferEjjPKcS4_S4_", "clang::html::HighlightRange(clang::RewriteBuffer&, unsigned int, unsigned int, char const*, char const*, char const*)"}, + {"_ZN5clang4html10EscapeTextERNS_8RewriterENS_6FileIDEbb", "clang::html::EscapeText(clang::Rewriter&, clang::FileID, bool, bool)"}, + {"_ZN5clang4html10EscapeTextERKSsbb", "clang::html::EscapeText(std::string const&, bool, bool)"}, + {"_ZN5clang4html14AddLineNumbersERNS_8RewriterENS_6FileIDE", "clang::html::AddLineNumbers(clang::Rewriter&, clang::FileID)"}, + {"_ZN5clang4html33AddHeaderFooterInternalBuiltinCSSERNS_8RewriterENS_6FileIDEPKc", "clang::html::AddHeaderFooterInternalBuiltinCSS(clang::Rewriter&, clang::FileID, char const*)"}, + {"_ZN5clang4html15SyntaxHighlightERNS_8RewriterENS_6FileIDERKNS_12PreprocessorE", "clang::html::SyntaxHighlight(clang::Rewriter&, clang::FileID, clang::Preprocessor const&)"}, + {"_ZN5clang4html15HighlightMacrosERNS_8RewriterENS_6FileIDERKNS_12PreprocessorE", "clang::html::HighlightMacros(clang::Rewriter&, clang::FileID, clang::Preprocessor const&)"}, + {"_ZN12_GLOBAL__N_118IgnoringDiagClientD1Ev", "(anonymous namespace)::IgnoringDiagClient::~IgnoringDiagClient()"}, + {"_ZN12_GLOBAL__N_118IgnoringDiagClientD0Ev", "(anonymous namespace)::IgnoringDiagClient::~IgnoringDiagClient()"}, + {"_ZN12_GLOBAL__N_118IgnoringDiagClient16HandleDiagnosticEN5clang10Diagnostic5LevelERKNS1_14DiagnosticInfoE", "(anonymous namespace)::IgnoringDiagClient::HandleDiagnostic(clang::Diagnostic::Level, clang::DiagnosticInfo const&)"}, + {"_ZN5clang20RewriteMacrosInInputERNS_12PreprocessorEPN4llvm11raw_ostreamE", "clang::RewriteMacrosInInput(clang::Preprocessor&, llvm::raw_ostream*)"}, + {"_ZN5clang18CreateObjCRewriterERKSsPN4llvm11raw_ostreamERNS_10DiagnosticERKNS_11LangOptionsEb", "clang::CreateObjCRewriter(std::string const&, llvm::raw_ostream*, clang::Diagnostic&, clang::LangOptions const&, bool)"}, + {"_ZN12_GLOBAL__N_111RewriteObjCD1Ev", "(anonymous namespace)::RewriteObjC::~RewriteObjC()"}, + {"_ZN12_GLOBAL__N_111RewriteObjCD0Ev", "(anonymous namespace)::RewriteObjC::~RewriteObjC()"}, + {"_ZN12_GLOBAL__N_111RewriteObjC10InitializeERN5clang10ASTContextE", "(anonymous namespace)::RewriteObjC::Initialize(clang::ASTContext&)"}, + {"_ZN12_GLOBAL__N_111RewriteObjC18HandleTopLevelDeclEN5clang12DeclGroupRefE", "(anonymous namespace)::RewriteObjC::HandleTopLevelDecl(clang::DeclGroupRef)"}, + {"_ZN12_GLOBAL__N_111RewriteObjC21HandleTranslationUnitERN5clang10ASTContextE", "(anonymous namespace)::RewriteObjC::HandleTranslationUnit(clang::ASTContext&)"}, + {"_ZN12_GLOBAL__N_111RewriteObjC27RewriteObjCProtocolMetaDataEPN5clang16ObjCProtocolDeclEN4llvm9StringRefES5_RSs", "(anonymous namespace)::RewriteObjC::RewriteObjCProtocolMetaData(clang::ObjCProtocolDecl*, llvm::StringRef, llvm::StringRef, std::string&)"}, + {"_ZN12_GLOBAL__N_111RewriteObjC28SynthesizeMetaDataIntoBufferERSs", "(anonymous namespace)::RewriteObjC::SynthesizeMetaDataIntoBuffer(std::string&)"}, + + // {"_ZN12_GLOBAL__N_111RewriteObjC26RewriteObjCMethodsMetaDataIPPN5clang14ObjCMethodDeclEEEvT_S6_bN4llvm9StringRefES8_RSs", + // "void (anonymous namespace)::RewriteObjC::RewriteObjCMethodsMetaData(clang::ObjCMethodDecl**, clang::ObjCMethodDecl**, bool, llvm::StringRef, llvm::StringRef, std::string&)"}, + // got error + + + // {"_ZN12_GLOBAL__N_111RewriteObjC26RewriteObjCMethodsMetaDataIN5clang11DeclContext22filtered_decl_iteratorINS2_14ObjCMethodDeclEXadL_ZNKS5_13isClassMethodEvEEEEEEvT_S7_bN4llvm9StringRefES9_RSs", + // "void (anonymous namespace)::RewriteObjC::RewriteObjCMethodsMetaData>(clang::DeclContext::filtered_decl_iterator, clang::DeclContext::filtered_decl_iterator, bool, llvm::StringRef, llvm::StringRef, std::string&)"}, + // got error + + {"_ZN12_GLOBAL__N_111RewriteObjC31RewriteObjCProtocolListMetaDataERKN5clang8ObjCListINS1_16ObjCProtocolDeclEEEN4llvm9StringRefES8_RSs", "(anonymous namespace)::RewriteObjC::RewriteObjCProtocolListMetaData(clang::ObjCList const&, llvm::StringRef, llvm::StringRef, std::string&)"}, + {"_ZN12_GLOBAL__N_111RewriteObjC28SynthesizeObjCInternalStructEPN5clang17ObjCInterfaceDeclERSs", "(anonymous namespace)::RewriteObjC::SynthesizeObjCInternalStruct(clang::ObjCInterfaceDecl*, std::string&)"}, + + // {"_ZN12_GLOBAL__N_111RewriteObjC17QuoteDoublequotesERSsS1_", + // "(anonymous namespace)::RewriteObjC::QuoteDoublequotes(std::string&, std::string&)"}, + // "(anonymous namespace)::RewriteObjC::QuoteDoublequotes(std::string&, std::string)" was returned + + {"_ZN12_GLOBAL__N_111RewriteObjC31SynthesizeIvarOffsetComputationEPN5clang12ObjCIvarDeclERSs", "(anonymous namespace)::RewriteObjC::SynthesizeIvarOffsetComputation(clang::ObjCIvarDecl*, std::string&)"}, + {"_ZN12_GLOBAL__N_111RewriteObjC25RewriteImplementationDeclEPN5clang4DeclE", "(anonymous namespace)::RewriteObjC::RewriteImplementationDecl(clang::Decl*)"}, + {"_ZN12_GLOBAL__N_111RewriteObjC21RewriteObjCMethodDeclEPKN5clang17ObjCInterfaceDeclEPNS1_14ObjCMethodDeclERSs", "(anonymous namespace)::RewriteObjC::RewriteObjCMethodDecl(clang::ObjCInterfaceDecl const*, clang::ObjCMethodDecl*, std::string&)"}, + {"_ZN12_GLOBAL__N_111RewriteObjC21RewriteTypeIntoStringEN5clang8QualTypeERSsRPKNS1_12FunctionTypeE", "(anonymous namespace)::RewriteObjC::RewriteTypeIntoString(clang::QualType, std::string&, clang::FunctionType const*&)"}, + {"_Z19getIvarAccessStringPN5clang12ObjCIvarDeclE", "getIvarAccessString(clang::ObjCIvarDecl*)"}, + {"_ZN12_GLOBAL__N_111RewriteObjC24HandleTopLevelSingleDeclEPN5clang4DeclE", "(anonymous namespace)::RewriteObjC::HandleTopLevelSingleDecl(clang::Decl*)"}, + {"_ZN12_GLOBAL__N_111RewriteObjC32RewriteBlocksInFunctionProtoTypeEN5clang8QualTypeEPNS1_9NamedDeclE", "(anonymous namespace)::RewriteObjC::RewriteBlocksInFunctionProtoType(clang::QualType, clang::NamedDecl*)"}, + {"_ZN12_GLOBAL__N_111RewriteObjC22CollectPropertySettersEPN5clang4StmtE", "(anonymous namespace)::RewriteObjC::CollectPropertySetters(clang::Stmt*)"}, + {"_ZN12_GLOBAL__N_111RewriteObjC38RewriteFunctionBodyOrGlobalInitializerEPN5clang4StmtE", "(anonymous namespace)::RewriteObjC::RewriteFunctionBodyOrGlobalInitializer(clang::Stmt*)"}, + {"_ZN12_GLOBAL__N_111RewriteObjC34RewriteObjCQualifiedInterfaceTypesEPN5clang4DeclE", "(anonymous namespace)::RewriteObjC::RewriteObjCQualifiedInterfaceTypes(clang::Decl*)"}, + {"_ZN12_GLOBAL__N_111RewriteObjC23RewriteBlockPointerDeclEPN5clang9NamedDeclE", "(anonymous namespace)::RewriteObjC::RewriteBlockPointerDecl(clang::NamedDecl*)"}, + {"_ZN12_GLOBAL__N_111RewriteObjC15RewriteCastExprEPN5clang14CStyleCastExprE", "(anonymous namespace)::RewriteObjC::RewriteCastExpr(clang::CStyleCastExpr*)"}, + {"_ZN12_GLOBAL__N_111RewriteObjC17RewriteRecordBodyEPN5clang10RecordDeclE", "(anonymous namespace)::RewriteObjC::RewriteRecordBody(clang::RecordDecl*)"}, + {"_ZN12_GLOBAL__N_111RewriteObjC23SynthesizeBlockLiteralsEN5clang14SourceLocationEN4llvm9StringRefE", "(anonymous namespace)::RewriteObjC::SynthesizeBlockLiterals(clang::SourceLocation, llvm::StringRef)"}, + {"_ZN12_GLOBAL__N_111RewriteObjC31RewriteBlockLiteralFunctionDeclEPN5clang12FunctionDeclE", "(anonymous namespace)::RewriteObjC::RewriteBlockLiteralFunctionDecl(clang::FunctionDecl*)"}, + {"_ZN12_GLOBAL__N_111RewriteObjC23CollectBlockDeclRefInfoEPN5clang9BlockExprE", "(anonymous namespace)::RewriteObjC::CollectBlockDeclRefInfo(clang::BlockExpr*)"}, + {"_ZN12_GLOBAL__N_111RewriteObjC18RewriteByRefStringERSsRKSsPN5clang9ValueDeclEb", "(anonymous namespace)::RewriteObjC::RewriteByRefString(std::string&, std::string const&, clang::ValueDecl*, bool)"}, + {"_ZN12_GLOBAL__N_111RewriteObjC23RewriteBlockPointerTypeERSsN5clang8QualTypeE", "(anonymous namespace)::RewriteObjC::RewriteBlockPointerType(std::string&, clang::QualType)"}, + {"_ZN12_GLOBAL__N_111RewriteObjC20GetBlockDeclRefExprsEPN5clang4StmtE", "(anonymous namespace)::RewriteObjC::GetBlockDeclRefExprs(clang::Stmt*)"}, + {"_ZN12_GLOBAL__N_111RewriteObjC33PointerTypeTakesAnyBlockArgumentsEN5clang8QualTypeE", "(anonymous namespace)::RewriteObjC::PointerTypeTakesAnyBlockArguments(clang::QualType)"}, + {"_ZN12_GLOBAL__N_111RewriteObjC23needToScanForQualifiersEN5clang8QualTypeE", "(anonymous namespace)::RewriteObjC::needToScanForQualifiers(clang::QualType)"}, + {"_Z21BuildUniqueMethodNameRSsPN5clang14ObjCMethodDeclE", "BuildUniqueMethodName(std::string&, clang::ObjCMethodDecl*)"}, + {"_ZN12_GLOBAL__N_111RewriteObjC28RewriteObjCNestedIvarRefExprEPN5clang4StmtERb", "(anonymous namespace)::RewriteObjC::RewriteObjCNestedIvarRefExpr(clang::Stmt*, bool&)"}, + {"_ZN12_GLOBAL__N_111RewriteObjC11ReplaceStmtEPN5clang4StmtES3_", "(anonymous namespace)::RewriteObjC::ReplaceStmt(clang::Stmt*, clang::Stmt*)"}, + + // {"_ZN12_GLOBAL__N_111RewriteObjC25GetInnerBlockDeclRefExprsEPN5clang4StmtERN4llvm11SmallVectorIPNS1_16BlockDeclRefExprELj8EEERNS4_11SmallPtrSetIPKNS1_11DeclContextELj8EEE", + // "(anonymous namespace)::RewriteObjC::GetInnerBlockDeclRefExprs(clang::Stmt*, llvm::SmallVector&, llvm::SmallPtrSet&)"}, + // "(anonymous namespace)::RewriteObjC::GetInnerBlockDeclRefExprs(clang::Stmt*, llvm::SmallVector&, llvm::SmallPtrSet&)" was returned + + {"_ZN12_GLOBAL__N_111RewriteObjC23RewriteBlockDeclRefExprEPN5clang4ExprE", "(anonymous namespace)::RewriteObjC::RewriteBlockDeclRefExpr(clang::Expr*)"}, + {"_ZN12_GLOBAL__N_111RewriteObjC19SynthesizeBlockCallEPN5clang8CallExprEPKNS1_4ExprE", "(anonymous namespace)::RewriteObjC::SynthesizeBlockCall(clang::CallExpr*, clang::Expr const*)"}, + {"_ZN12_GLOBAL__N_111RewriteObjC15getProtocolTypeEv", "(anonymous namespace)::RewriteObjC::getProtocolType()"}, + {"_ZN12_GLOBAL__N_111RewriteObjC14HasReturnStmtsEPN5clang4StmtERb", "(anonymous namespace)::RewriteObjC::HasReturnStmts(clang::Stmt*, bool&)"}, + {"_ZN12_GLOBAL__N_111RewriteObjC22RewriteSyncReturnStmtsEPN5clang4StmtESs", "(anonymous namespace)::RewriteObjC::RewriteSyncReturnStmts(clang::Stmt*, std::string)"}, + {"_ZN12_GLOBAL__N_111RewriteObjC24WarnAboutReturnGotoStmtsEPN5clang4StmtE", "(anonymous namespace)::RewriteObjC::WarnAboutReturnGotoStmts(clang::Stmt*)"}, + {"_ZN12_GLOBAL__N_111RewriteObjC21RewriteTryReturnStmtsEPN5clang4StmtE", "(anonymous namespace)::RewriteObjC::RewriteTryReturnStmts(clang::Stmt*)"}, + {"_ZN12_GLOBAL__N_111RewriteObjC16SynthMessageExprEPN5clang15ObjCMessageExprENS1_14SourceLocationES4_", "(anonymous namespace)::RewriteObjC::SynthMessageExpr(clang::ObjCMessageExpr*, clang::SourceLocation, clang::SourceLocation)"}, + {"_ZN12_GLOBAL__N_111RewriteObjC26SynthSelGetUidFunctionDeclEv", "(anonymous namespace)::RewriteObjC::SynthSelGetUidFunctionDecl()"}, + {"_ZN12_GLOBAL__N_111RewriteObjC28SynthesizeCallToFunctionDeclEPN5clang12FunctionDeclEPPNS1_4ExprEjNS1_14SourceLocationES7_", "(anonymous namespace)::RewriteObjC::SynthesizeCallToFunctionDecl(clang::FunctionDecl*, clang::Expr**, unsigned int, clang::SourceLocation, clang::SourceLocation)"}, + {"_ZN12_GLOBAL__N_111RewriteObjC18getSuperStructTypeEv", "(anonymous namespace)::RewriteObjC::getSuperStructType()"}, + {"_ZN12_GLOBAL__N_111RewriteObjC32SynthSuperContructorFunctionDeclEv", "(anonymous namespace)::RewriteObjC::SynthSuperContructorFunctionDecl()"}, + {"_ZN12_GLOBAL__N_111RewriteObjC26SynthBlockInitFunctionDeclEN4llvm9StringRefE", "(anonymous namespace)::RewriteObjC::SynthBlockInitFunctionDecl(llvm::StringRef)"}, + {"_ZN12_GLOBAL__N_111RewriteObjC24RewriteMethodDeclarationEPN5clang14ObjCMethodDeclE", "(anonymous namespace)::RewriteObjC::RewriteMethodDeclaration(clang::ObjCMethodDecl*)"}, + + // {"_ZN4llvm8DenseMapIPN5clang14ObjCMethodDeclESsNS_12DenseMapInfoIS3_EENS4_ISsEEE16FindAndConstructERKS3_", + // "llvm::DenseMap, llvm::DenseMapInfo>::FindAndConstruct(clang::ObjCMethodDecl* const&)"}, + // "llvm::DenseMap, std::string>::FindAndConstruct(clang::ObjCMethodDecl* const&)" was returned + + + // {"_ZN4llvm8DenseMapIPN5clang14ObjCMethodDeclESsNS_12DenseMapInfoIS3_EENS4_ISsEEE16InsertIntoBucketERKS3_RKSsPSt4pairIS3_SsE", + // "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::ObjCMethodDecl* const&, std::string const&, std::pair*)"}, + // "llvm::DenseMap, std::string>::InsertIntoBucket(clang::ObjCMethodDecl* const&, std::string const&, std::pair*)" was returned + + + // {"_ZN4llvm8DenseMapIPN5clang14ObjCMethodDeclESsNS_12DenseMapInfoIS3_EENS4_ISsEEE4growEj", + // "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + // "llvm::DenseMap, std::string>::grow(unsigned int)" was returned + + + // {"_ZN4llvm15SmallVectorImplIPN5clang14ObjCMethodDeclEE6appendINS1_11DeclContext22filtered_decl_iteratorIS2_XadL_ZNKS2_16isInstanceMethodEvEEEEEEvT_S9_", + // "void llvm::SmallVectorImpl::append>(clang::DeclContext::filtered_decl_iterator, clang::DeclContext::filtered_decl_iterator)"}, + // got error + + {"_ZNK5clang17ObjCInterfaceDecl9ivar_sizeEv", "clang::ObjCInterfaceDecl::ivar_size() const"}, + + // {"_ZNSs12_S_constructIN5clang22RopePieceBTreeIteratorEEEPcT_S3_RKSaIcESt20forward_iterator_tag", + // "char* std::string::_S_construct(clang::RopePieceBTreeIterator, clang::RopePieceBTreeIterator, std::allocator const&, std::forward_iterator_tag)"}, + // "char* std::string::_S_construct(clang::RopePieceBTreeIterator, char*, std::allocator const&, std::forward_iterator_tag)" was returned + + + // {"_ZN4llvm8DenseMapIPN5clang9BlockExprESsNS_12DenseMapInfoIS3_EENS4_ISsEEE5clearEv", + // "llvm::DenseMap, llvm::DenseMapInfo>::clear()"}, + // "llvm::DenseMap, std::string>::clear()" was returned + + + // {"_ZN4llvm8DenseMapIPN5clang9BlockExprESsNS_12DenseMapInfoIS3_EENS4_ISsEEE16shrink_and_clearEv", + // "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + // "llvm::DenseMap, std::string>::shrink_and_clear()" was returned + + + // {"_ZN4llvm8DenseMapIPN5clang9BlockExprESsNS_12DenseMapInfoIS3_EENS4_ISsEEE16FindAndConstructERKS3_", + // "llvm::DenseMap, llvm::DenseMapInfo>::FindAndConstruct(clang::BlockExpr* const&)"}, + // "llvm::DenseMap, std::string>::FindAndConstruct(clang::BlockExpr* const&)" was returned + + + // {"_ZN4llvm8DenseMapIPN5clang9BlockExprESsNS_12DenseMapInfoIS3_EENS4_ISsEEE16InsertIntoBucketERKS3_RKSsPSt4pairIS3_SsE", + // "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::BlockExpr* const&, std::string const&, std::pair*)"}, + // "llvm::DenseMap, std::string>::InsertIntoBucket(clang::BlockExpr* const&, std::string const&, std::pair*)" was returned + + + // {"_ZN4llvm8DenseMapIPN5clang9BlockExprESsNS_12DenseMapInfoIS3_EENS4_ISsEEE4growEj", + // "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + // "llvm::DenseMap, std::string>::grow(unsigned int)" was returned + + {"_ZN4llvm8DenseMapIPN5clang9ValueDeclEjNS_12DenseMapInfoIS3_EENS4_IjEEE16InsertIntoBucketERKS3_RKjPSt4pairIS3_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::ValueDecl* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPN5clang9ValueDeclEjNS_12DenseMapInfoIS3_EENS4_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang19ConditionalOperatorC2EPNS_4ExprENS_14SourceLocationES2_S3_S2_S2_NS_8QualTypeENS_13ExprValueKindENS_14ExprObjectKindE", "clang::ConditionalOperator::ConditionalOperator(clang::Expr*, clang::SourceLocation, clang::Expr*, clang::SourceLocation, clang::Expr*, clang::Expr*, clang::QualType, clang::ExprValueKind, clang::ExprObjectKind)"}, + {"_ZN5clang13UnaryOperatorC2EPNS_4ExprENS_17UnaryOperatorKindENS_8QualTypeENS_13ExprValueKindENS_14ExprObjectKindENS_14SourceLocationE", "clang::UnaryOperator::UnaryOperator(clang::Expr*, clang::UnaryOperatorKind, clang::QualType, clang::ExprValueKind, clang::ExprObjectKind, clang::SourceLocation)"}, + {"_ZN4llvm8DenseMapIycNS_12DenseMapInfoIyEENS1_IcEEE6insertERKSt4pairIycE", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIycNS_12DenseMapInfoIyEENS1_IcEEE16InsertIntoBucketERKyRKcPSt4pairIycE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(unsigned long long const&, char const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIycNS_12DenseMapInfoIyEENS1_IcEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang14BinaryOperatorC2EPNS_4ExprES2_NS_18BinaryOperatorKindENS_8QualTypeENS_13ExprValueKindENS_14ExprObjectKindENS_14SourceLocationE", "clang::BinaryOperator::BinaryOperator(clang::Expr*, clang::Expr*, clang::BinaryOperatorKind, clang::QualType, clang::ExprValueKind, clang::ExprObjectKind, clang::SourceLocation)"}, + {"_ZN4llvm8DenseMapIPN5clang4ExprEPNS1_4StmtENS_12DenseMapInfoIS3_EENS6_IS5_EEE16InsertIntoBucketERKS3_RKS5_PSt4pairIS3_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::Expr* const&, clang::Stmt* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPN5clang4ExprEPNS1_4StmtENS_12DenseMapInfoIS3_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPN5clang4StmtES3_NS_12DenseMapInfoIS3_EES5_E16InsertIntoBucketERKS3_S8_PSt4pairIS3_S3_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::Stmt* const&, clang::Stmt* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPN5clang4StmtES3_NS_12DenseMapInfoIS3_EES5_E4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPN5clang4ExprEPNS1_14BinaryOperatorENS_12DenseMapInfoIS3_EENS6_IS5_EEE16InsertIntoBucketERKS3_RKS5_PSt4pairIS3_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::Expr* const&, clang::BinaryOperator* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPN5clang4ExprEPNS1_14BinaryOperatorENS_12DenseMapInfoIS3_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNSt8_Rb_treeIN5clang6FileIDESt4pairIKS1_NS0_13RewriteBufferEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZN5clang22RopePieceBTreeIteratorC1EPKv", "clang::RopePieceBTreeIterator::RopePieceBTreeIterator(void const*)"}, + {"_ZN5clang22RopePieceBTreeIteratorC2EPKv", "clang::RopePieceBTreeIterator::RopePieceBTreeIterator(void const*)"}, + {"_ZN5clang22RopePieceBTreeIterator15MoveToNextPieceEv", "clang::RopePieceBTreeIterator::MoveToNextPiece()"}, + {"_ZN5clang14RopePieceBTreeC1Ev", "clang::RopePieceBTree::RopePieceBTree()"}, + {"_ZN5clang14RopePieceBTreeC2Ev", "clang::RopePieceBTree::RopePieceBTree()"}, + {"_ZN5clang14RopePieceBTreeC1ERKS0_", "clang::RopePieceBTree::RopePieceBTree(clang::RopePieceBTree const&)"}, + {"_ZN5clang14RopePieceBTreeC2ERKS0_", "clang::RopePieceBTree::RopePieceBTree(clang::RopePieceBTree const&)"}, + {"_ZN5clang14RopePieceBTreeD1Ev", "clang::RopePieceBTree::~RopePieceBTree()"}, + {"_ZN5clang14RopePieceBTreeD2Ev", "clang::RopePieceBTree::~RopePieceBTree()"}, + {"_ZN12_GLOBAL__N_118RopePieceBTreeNode7DestroyEv", "(anonymous namespace)::RopePieceBTreeNode::Destroy()"}, + {"_ZNK5clang14RopePieceBTree4sizeEv", "clang::RopePieceBTree::size() const"}, + {"_ZN5clang14RopePieceBTree5clearEv", "clang::RopePieceBTree::clear()"}, + {"_ZN5clang14RopePieceBTree6insertEjRKNS_9RopePieceE", "clang::RopePieceBTree::insert(unsigned int, clang::RopePiece const&)"}, + {"_ZN12_GLOBAL__N_118RopePieceBTreeNode5splitEj", "(anonymous namespace)::RopePieceBTreeNode::split(unsigned int)"}, + {"_ZN12_GLOBAL__N_118RopePieceBTreeNode6insertEjRKN5clang9RopePieceE", "(anonymous namespace)::RopePieceBTreeNode::insert(unsigned int, clang::RopePiece const&)"}, + {"_ZN5clang14RopePieceBTree5eraseEjj", "clang::RopePieceBTree::erase(unsigned int, unsigned int)"}, + {"_ZN12_GLOBAL__N_118RopePieceBTreeNode5eraseEjj", "(anonymous namespace)::RopePieceBTreeNode::erase(unsigned int, unsigned int)"}, + {"_ZN5clang11RewriteRope14MakeRopeStringEPKcS2_", "clang::RewriteRope::MakeRopeString(char const*, char const*)"}, + {"_ZN12_GLOBAL__N_118RopePieceBTreeLeaf6insertEjRKN5clang9RopePieceE", "(anonymous namespace)::RopePieceBTreeLeaf::insert(unsigned int, clang::RopePiece const&)"}, + {"_ZN12_GLOBAL__N_122RopePieceBTreeInterior16HandleChildPieceEjPNS_18RopePieceBTreeNodeE", "(anonymous namespace)::RopePieceBTreeInterior::HandleChildPiece(unsigned int, (anonymous namespace)::RopePieceBTreeNode*)"}, + {"_ZN5clang13DoRewriteTestERNS_12PreprocessorEPN4llvm11raw_ostreamE", "clang::DoRewriteTest(clang::Preprocessor&, llvm::raw_ostream*)"}, + {"_ZNK5clang13RewriteBuffer5writeERN4llvm11raw_ostreamE", "clang::RewriteBuffer::write(llvm::raw_ostream&) const"}, + {"_ZN5clang13RewriteBuffer10RemoveTextEjj", "clang::RewriteBuffer::RemoveText(unsigned int, unsigned int)"}, + {"_ZN5clang13RewriteBuffer10InsertTextEjN4llvm9StringRefEb", "clang::RewriteBuffer::InsertText(unsigned int, llvm::StringRef, bool)"}, + {"_ZN5clang13RewriteBuffer11ReplaceTextEjjN4llvm9StringRefE", "clang::RewriteBuffer::ReplaceText(unsigned int, unsigned int, llvm::StringRef)"}, + {"_ZNK5clang8Rewriter12getRangeSizeERKNS_15CharSourceRangeE", "clang::Rewriter::getRangeSize(clang::CharSourceRange const&) const"}, + {"_ZNK5clang8Rewriter26getLocationOffsetAndFileIDENS_14SourceLocationERNS_6FileIDE", "clang::Rewriter::getLocationOffsetAndFileID(clang::SourceLocation, clang::FileID&) const"}, + {"_ZNK5clang8Rewriter12getRangeSizeENS_11SourceRangeE", "clang::Rewriter::getRangeSize(clang::SourceRange) const"}, + {"_ZNK5clang8Rewriter16getRewrittenTextENS_11SourceRangeE", "clang::Rewriter::getRewrittenText(clang::SourceRange) const"}, + {"_ZN5clang8Rewriter13getEditBufferENS_6FileIDE", "clang::Rewriter::getEditBuffer(clang::FileID)"}, + {"_ZN5clang8Rewriter10InsertTextENS_14SourceLocationEN4llvm9StringRefEb", "clang::Rewriter::InsertText(clang::SourceLocation, llvm::StringRef, bool)"}, + {"_ZN5clang8Rewriter10RemoveTextENS_14SourceLocationEj", "clang::Rewriter::RemoveText(clang::SourceLocation, unsigned int)"}, + {"_ZN5clang8Rewriter11ReplaceTextENS_14SourceLocationEjN4llvm9StringRefE", "clang::Rewriter::ReplaceText(clang::SourceLocation, unsigned int, llvm::StringRef)"}, + {"_ZN5clang8Rewriter11ReplaceStmtEPNS_4StmtES2_", "clang::Rewriter::ReplaceStmt(clang::Stmt*, clang::Stmt*)"}, + {"_ZNSt8_Rb_treeIN5clang6FileIDESt4pairIKS1_NS0_13RewriteBufferEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS5_ERKS5_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIN5clang6FileIDESt4pairIKS1_NS0_13RewriteBufferEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE9_M_insertEPSt18_Rb_tree_node_baseSD_RKS5_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair const&)"}, + {"_ZNSt8_Rb_treeIN5clang6FileIDESt4pairIKS1_NS0_13RewriteBufferEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE16_M_insert_uniqueERKS5_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZN5clang13TokenRewriterC1ENS_6FileIDERNS_13SourceManagerERKNS_11LangOptionsE", "clang::TokenRewriter::TokenRewriter(clang::FileID, clang::SourceManager&, clang::LangOptions const&)"}, + {"_ZN5clang13TokenRewriterC2ENS_6FileIDERNS_13SourceManagerERKNS_11LangOptionsE", "clang::TokenRewriter::TokenRewriter(clang::FileID, clang::SourceManager&, clang::LangOptions const&)"}, + + // {"_ZN5clang13TokenRewriter8AddTokenERKNS_5TokenESt14_List_iteratorIS1_E", + // "clang::TokenRewriter::AddToken(clang::Token const&, std::_List_iterator)"}, + // "clang::TokenRewriter::AddToken(clang::Token const&, std::_List_iterator)" was returned + + {"_ZN5clang13TokenRewriterD1Ev", "clang::TokenRewriter::~TokenRewriter()"}, + {"_ZN5clang13TokenRewriterD2Ev", "clang::TokenRewriter::~TokenRewriter()"}, + {"_ZN5clang13TokenRewriter13RemapIteratorESt20_List_const_iteratorINS_5TokenEE", "clang::TokenRewriter::RemapIterator(std::_List_const_iterator)"}, + {"_ZN5clang13TokenRewriter14AddTokenBeforeESt20_List_const_iteratorINS_5TokenEEPKc", "clang::TokenRewriter::AddTokenBefore(std::_List_const_iterator, char const*)"}, + {"_ZNSt8_Rb_treeIN5clang14SourceLocationESt4pairIKS1_St14_List_iteratorINS0_5TokenEEESt10_Select1stIS7_ESt4lessIS1_ESaIS7_EE16_M_insert_uniqueERKS7_", "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_insert_unique(std::pair> const&)"}, + {"_ZNSt8_Rb_treeIN5clang14SourceLocationESt4pairIKS1_St14_List_iteratorINS0_5TokenEEESt10_Select1stIS7_ESt4lessIS1_ESaIS7_EE8_M_eraseEPSt13_Rb_tree_nodeIS7_E", "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_erase(std::_Rb_tree_node>>*)"}, + {"_ZN5clang7APValueC1EPNS_4ExprE", "clang::APValue::APValue(clang::Expr*)"}, + {"_ZN5clang7APValueC2EPNS_4ExprE", "clang::APValue::APValue(clang::Expr*)"}, + {"_ZN5clang7APValue10MakeLValueEv", "clang::APValue::MakeLValue()"}, + {"_ZN5clang7APValue9setLValueEPNS_4ExprERKNS_9CharUnitsE", "clang::APValue::setLValue(clang::Expr*, clang::CharUnits const&)"}, + {"_ZN5clang7APValueaSERKS0_", "clang::APValue::operator=(clang::APValue const&)"}, + {"_ZN5clang7APValue10MakeUninitEv", "clang::APValue::MakeUninit()"}, + {"_ZNK5clang7APValue13getLValueBaseEv", "clang::APValue::getLValueBase() const"}, + {"_ZNK5clang7APValue15getLValueOffsetEv", "clang::APValue::getLValueOffset() const"}, + {"_ZNK5clang7APValue4dumpEv", "clang::APValue::dump() const"}, + {"_ZNK5clang7APValue5printERN4llvm11raw_ostreamE", "clang::APValue::print(llvm::raw_ostream&) const"}, + {"_ZN5clang11ASTConsumer18HandleTopLevelDeclENS_12DeclGroupRefE", "clang::ASTConsumer::HandleTopLevelDecl(clang::DeclGroupRef)"}, + {"_ZN5clang11ASTConsumer21HandleInterestingDeclENS_12DeclGroupRefE", "clang::ASTConsumer::HandleInterestingDecl(clang::DeclGroupRef)"}, + {"_ZN5clang10ASTContext29CanonicalTemplateTemplateParm7ProfileERN4llvm16FoldingSetNodeIDEPNS_24TemplateTemplateParmDeclE", "clang::ASTContext::CanonicalTemplateTemplateParm::Profile(llvm::FoldingSetNodeID&, clang::TemplateTemplateParmDecl*)"}, + {"_ZNK5clang10ASTContext36getCanonicalTemplateTemplateParmDeclEPNS_24TemplateTemplateParmDeclE", "clang::ASTContext::getCanonicalTemplateTemplateParmDecl(clang::TemplateTemplateParmDecl*) const"}, + {"_ZNK5clang10ASTContext24getTrivialTypeSourceInfoENS_8QualTypeENS_14SourceLocationE", "clang::ASTContext::getTrivialTypeSourceInfo(clang::QualType, clang::SourceLocation) const"}, + {"_ZN5clang10ASTContext12createCXXABIERKNS_10TargetInfoE", "clang::ASTContext::createCXXABI(clang::TargetInfo const&)"}, + {"_ZN5clang10ASTContextC1ERKNS_11LangOptionsERNS_13SourceManagerERKNS_10TargetInfoERNS_15IdentifierTableERNS_13SelectorTableERNS_7Builtin7ContextEj", "clang::ASTContext::ASTContext(clang::LangOptions const&, clang::SourceManager&, clang::TargetInfo const&, clang::IdentifierTable&, clang::SelectorTable&, clang::Builtin::Context&, unsigned int)"}, + {"_ZN5clang10ASTContextC2ERKNS_11LangOptionsERNS_13SourceManagerERKNS_10TargetInfoERNS_15IdentifierTableERNS_13SelectorTableERNS_7Builtin7ContextEj", "clang::ASTContext::ASTContext(clang::LangOptions const&, clang::SourceManager&, clang::TargetInfo const&, clang::IdentifierTable&, clang::SelectorTable&, clang::Builtin::Context&, unsigned int)"}, + {"_ZN5clang10ASTContext16InitBuiltinTypesEv", "clang::ASTContext::InitBuiltinTypes()"}, + {"_ZN5clang10ASTContextD1Ev", "clang::ASTContext::~ASTContext()"}, + {"_ZN5clang10ASTContextD2Ev", "clang::ASTContext::~ASTContext()"}, + {"_ZN5clang10ASTContext15AddDeallocationEPFvPvES1_", "clang::ASTContext::AddDeallocation(void (*)(void*), void*)"}, + {"_ZN5clang10ASTContext17setExternalSourceERN4llvm9OwningPtrINS_17ExternalASTSourceEEE", "clang::ASTContext::setExternalSource(llvm::OwningPtr&)"}, + {"_ZNK5clang10ASTContext10PrintStatsEv", "clang::ASTContext::PrintStats() const"}, + {"_ZN5clang10ASTContext15InitBuiltinTypeERNS_7CanQualINS_4TypeEEENS_11BuiltinType4KindE", "clang::ASTContext::InitBuiltinType(clang::CanQual&, clang::BuiltinType::Kind)"}, + {"_ZNK5clang10ASTContext17getFromTargetTypeEj", "clang::ASTContext::getFromTargetType(unsigned int) const"}, + {"_ZNK5clang10ASTContext14getDiagnosticsEv", "clang::ASTContext::getDiagnostics() const"}, + {"_ZN5clang10ASTContext12getDeclAttrsEPKNS_4DeclE", "clang::ASTContext::getDeclAttrs(clang::Decl const*)"}, + {"_ZN5clang10ASTContext14eraseDeclAttrsEPKNS_4DeclE", "clang::ASTContext::eraseDeclAttrs(clang::Decl const*)"}, + {"_ZN5clang10ASTContext35getInstantiatedFromStaticDataMemberEPKNS_7VarDeclE", "clang::ASTContext::getInstantiatedFromStaticDataMember(clang::VarDecl const*)"}, + {"_ZN5clang10ASTContext35setInstantiatedFromStaticDataMemberEPNS_7VarDeclES2_NS_26TemplateSpecializationKindENS_14SourceLocationE", "clang::ASTContext::setInstantiatedFromStaticDataMember(clang::VarDecl*, clang::VarDecl*, clang::TemplateSpecializationKind, clang::SourceLocation)"}, + {"_ZN5clang10ASTContext28getInstantiatedFromUsingDeclEPNS_9UsingDeclE", "clang::ASTContext::getInstantiatedFromUsingDecl(clang::UsingDecl*)"}, + {"_ZN5clang10ASTContext28setInstantiatedFromUsingDeclEPNS_9UsingDeclEPNS_9NamedDeclE", "clang::ASTContext::setInstantiatedFromUsingDecl(clang::UsingDecl*, clang::NamedDecl*)"}, + {"_ZN5clang10ASTContext34getInstantiatedFromUsingShadowDeclEPNS_15UsingShadowDeclE", "clang::ASTContext::getInstantiatedFromUsingShadowDecl(clang::UsingShadowDecl*)"}, + {"_ZN5clang10ASTContext34setInstantiatedFromUsingShadowDeclEPNS_15UsingShadowDeclES2_", "clang::ASTContext::setInstantiatedFromUsingShadowDecl(clang::UsingShadowDecl*, clang::UsingShadowDecl*)"}, + {"_ZN5clang10ASTContext35getInstantiatedFromUnnamedFieldDeclEPNS_9FieldDeclE", "clang::ASTContext::getInstantiatedFromUnnamedFieldDecl(clang::FieldDecl*)"}, + {"_ZN5clang10ASTContext35setInstantiatedFromUnnamedFieldDeclEPNS_9FieldDeclES2_", "clang::ASTContext::setInstantiatedFromUnnamedFieldDecl(clang::FieldDecl*, clang::FieldDecl*)"}, + {"_ZNK5clang10ASTContext24overridden_methods_beginEPKNS_13CXXMethodDeclE", "clang::ASTContext::overridden_methods_begin(clang::CXXMethodDecl const*) const"}, + {"_ZNK5clang10ASTContext22overridden_methods_endEPKNS_13CXXMethodDeclE", "clang::ASTContext::overridden_methods_end(clang::CXXMethodDecl const*) const"}, + {"_ZNK5clang10ASTContext23overridden_methods_sizeEPKNS_13CXXMethodDeclE", "clang::ASTContext::overridden_methods_size(clang::CXXMethodDecl const*) const"}, + {"_ZN5clang10ASTContext19addOverriddenMethodEPKNS_13CXXMethodDeclES3_", "clang::ASTContext::addOverriddenMethod(clang::CXXMethodDecl const*, clang::CXXMethodDecl const*)"}, + {"_ZNK5clang10ASTContext21getFloatTypeSemanticsENS_8QualTypeE", "clang::ASTContext::getFloatTypeSemantics(clang::QualType) const"}, + {"_ZNK5clang10ASTContext12getDeclAlignEPKNS_4DeclEb", "clang::ASTContext::getDeclAlign(clang::Decl const*, bool) const"}, + {"_ZNK5clang10ASTContext14getPointerTypeENS_8QualTypeE", "clang::ASTContext::getPointerType(clang::QualType) const"}, + {"_ZNK5clang10ASTContext14getAsArrayTypeENS_8QualTypeE", "clang::ASTContext::getAsArrayType(clang::QualType) const"}, + {"_ZNK5clang10ASTContext18getBaseElementTypeEPKNS_9ArrayTypeE", "clang::ASTContext::getBaseElementType(clang::ArrayType const*) const"}, + {"_ZNK5clang10ASTContext21getPreferredTypeAlignEPKNS_4TypeE", "clang::ASTContext::getPreferredTypeAlign(clang::Type const*) const"}, + {"_ZNK5clang10ASTContext19toCharUnitsFromBitsEx", "clang::ASTContext::toCharUnitsFromBits(long long) const"}, + {"_ZN5clang10ASTContext18getTypeInfoInCharsEPKNS_4TypeE", "clang::ASTContext::getTypeInfoInChars(clang::Type const*)"}, + {"_ZNK5clang10ASTContext11getTypeInfoEPKNS_4TypeE", "clang::ASTContext::getTypeInfo(clang::Type const*) const"}, + {"_ZN5clang10ASTContext18getTypeInfoInCharsENS_8QualTypeE", "clang::ASTContext::getTypeInfoInChars(clang::QualType)"}, + {"_ZNK5clang10ASTContext18getPointerDiffTypeEv", "clang::ASTContext::getPointerDiffType() const"}, + {"_ZNK5clang10ASTContext25getASTObjCInterfaceLayoutEPKNS_17ObjCInterfaceDeclE", "clang::ASTContext::getASTObjCInterfaceLayout(clang::ObjCInterfaceDecl const*) const"}, + {"_ZNK5clang10ASTContext18getTypeSizeInCharsENS_8QualTypeE", "clang::ASTContext::getTypeSizeInChars(clang::QualType) const"}, + {"_ZNK5clang10ASTContext18getTypeSizeInCharsEPKNS_4TypeE", "clang::ASTContext::getTypeSizeInChars(clang::Type const*) const"}, + {"_ZNK5clang10ASTContext19getTypeAlignInCharsENS_8QualTypeE", "clang::ASTContext::getTypeAlignInChars(clang::QualType) const"}, + {"_ZNK5clang10ASTContext19getTypeAlignInCharsEPKNS_4TypeE", "clang::ASTContext::getTypeAlignInChars(clang::Type const*) const"}, + {"_ZNK5clang10ASTContext23ShallowCollectObjCIvarsEPKNS_17ObjCInterfaceDeclERN4llvm15SmallVectorImplIPNS_12ObjCIvarDeclEEE", "clang::ASTContext::ShallowCollectObjCIvars(clang::ObjCInterfaceDecl const*, llvm::SmallVectorImpl&) const"}, + {"_ZNK5clang10ASTContext20DeepCollectObjCIvarsEPKNS_17ObjCInterfaceDeclEbRN4llvm15SmallVectorImplIPNS_12ObjCIvarDeclEEE", "clang::ASTContext::DeepCollectObjCIvars(clang::ObjCInterfaceDecl const*, bool, llvm::SmallVectorImpl&) const"}, + + // {"_ZN5clang10ASTContext25CollectInheritedProtocolsEPKNS_4DeclERN4llvm11SmallPtrSetIPNS_16ObjCProtocolDeclELj8EEE", + // "clang::ASTContext::CollectInheritedProtocols(clang::Decl const*, llvm::SmallPtrSet&)"}, + // "clang::ASTContext::CollectInheritedProtocols(clang::Decl const*, llvm::SmallPtrSet&)" was returned + + {"_ZNK5clang10ASTContext18CountNonClassIvarsEPKNS_17ObjCInterfaceDeclE", "clang::ASTContext::CountNonClassIvars(clang::ObjCInterfaceDecl const*) const"}, + {"_ZN5clang10ASTContext21getObjCImplementationEPNS_17ObjCInterfaceDeclE", "clang::ASTContext::getObjCImplementation(clang::ObjCInterfaceDecl*)"}, + {"_ZN5clang10ASTContext21getObjCImplementationEPNS_16ObjCCategoryDeclE", "clang::ASTContext::getObjCImplementation(clang::ObjCCategoryDecl*)"}, + {"_ZN5clang10ASTContext21setObjCImplementationEPNS_17ObjCInterfaceDeclEPNS_22ObjCImplementationDeclE", "clang::ASTContext::setObjCImplementation(clang::ObjCInterfaceDecl*, clang::ObjCImplementationDecl*)"}, + {"_ZN5clang10ASTContext21setObjCImplementationEPNS_16ObjCCategoryDeclEPNS_20ObjCCategoryImplDeclE", "clang::ASTContext::setObjCImplementation(clang::ObjCCategoryDecl*, clang::ObjCCategoryImplDecl*)"}, + {"_ZN5clang10ASTContext20getBlockVarCopyInitsEPKNS_7VarDeclE", "clang::ASTContext::getBlockVarCopyInits(clang::VarDecl const*)"}, + {"_ZN5clang10ASTContext20setBlockVarCopyInitsEPNS_7VarDeclEPNS_4ExprE", "clang::ASTContext::setBlockVarCopyInits(clang::VarDecl*, clang::Expr*)"}, + {"_ZNK5clang10ASTContext20CreateTypeSourceInfoENS_8QualTypeEj", "clang::ASTContext::CreateTypeSourceInfo(clang::QualType, unsigned int) const"}, + {"_ZNK5clang10ASTContext30getASTObjCImplementationLayoutEPKNS_22ObjCImplementationDeclE", "clang::ASTContext::getASTObjCImplementationLayout(clang::ObjCImplementationDecl const*) const"}, + {"_ZNK5clang10ASTContext14getExtQualTypeEPKNS_4TypeENS_10QualifiersE", "clang::ASTContext::getExtQualType(clang::Type const*, clang::Qualifiers) const"}, + {"_ZNK5clang10ASTContext20getAddrSpaceQualTypeENS_8QualTypeEj", "clang::ASTContext::getAddrSpaceQualType(clang::QualType, unsigned int) const"}, + {"_ZNK5clang10ASTContext17getObjCGCQualTypeENS_8QualTypeENS_10Qualifiers2GCE", "clang::ASTContext::getObjCGCQualType(clang::QualType, clang::Qualifiers::GC) const"}, + {"_ZN5clang10ASTContext18adjustFunctionTypeEPKNS_12FunctionTypeENS1_7ExtInfoE", "clang::ASTContext::adjustFunctionType(clang::FunctionType const*, clang::FunctionType::ExtInfo)"}, + {"_ZNK5clang10ASTContext22getFunctionNoProtoTypeENS_8QualTypeERKNS_12FunctionType7ExtInfoE", "clang::ASTContext::getFunctionNoProtoType(clang::QualType, clang::FunctionType::ExtInfo const&) const"}, + {"_ZNK5clang10ASTContext15getFunctionTypeENS_8QualTypeEPKS1_jRKNS_17FunctionProtoType12ExtProtoInfoE", "clang::ASTContext::getFunctionType(clang::QualType, clang::QualType const*, unsigned int, clang::FunctionProtoType::ExtProtoInfo const&) const"}, + {"_ZNK5clang10ASTContext14getComplexTypeENS_8QualTypeE", "clang::ASTContext::getComplexType(clang::QualType) const"}, + {"_ZNK5clang10ASTContext19getBlockPointerTypeENS_8QualTypeE", "clang::ASTContext::getBlockPointerType(clang::QualType) const"}, + {"_ZNK5clang10ASTContext22getLValueReferenceTypeENS_8QualTypeEb", "clang::ASTContext::getLValueReferenceType(clang::QualType, bool) const"}, + {"_ZNK5clang10ASTContext22getRValueReferenceTypeENS_8QualTypeE", "clang::ASTContext::getRValueReferenceType(clang::QualType) const"}, + {"_ZNK5clang10ASTContext20getMemberPointerTypeENS_8QualTypeEPKNS_4TypeE", "clang::ASTContext::getMemberPointerType(clang::QualType, clang::Type const*) const"}, + {"_ZNK5clang10ASTContext20getConstantArrayTypeENS_8QualTypeERKN4llvm5APIntENS_9ArrayType17ArraySizeModifierEj", "clang::ASTContext::getConstantArrayType(clang::QualType, llvm::APInt const&, clang::ArrayType::ArraySizeModifier, unsigned int) const"}, + {"_ZNK5clang10ASTContext27getVariableArrayDecayedTypeENS_8QualTypeE", "clang::ASTContext::getVariableArrayDecayedType(clang::QualType) const"}, + {"_ZNK5clang10ASTContext26getDependentSizedArrayTypeENS_8QualTypeEPNS_4ExprENS_9ArrayType17ArraySizeModifierEjNS_11SourceRangeE", "clang::ASTContext::getDependentSizedArrayType(clang::QualType, clang::Expr*, clang::ArrayType::ArraySizeModifier, unsigned int, clang::SourceRange) const"}, + {"_ZNK5clang10ASTContext20getVariableArrayTypeENS_8QualTypeEPNS_4ExprENS_9ArrayType17ArraySizeModifierEjNS_11SourceRangeE", "clang::ASTContext::getVariableArrayType(clang::QualType, clang::Expr*, clang::ArrayType::ArraySizeModifier, unsigned int, clang::SourceRange) const"}, + {"_ZNK5clang10ASTContext22getIncompleteArrayTypeENS_8QualTypeENS_9ArrayType17ArraySizeModifierEj", "clang::ASTContext::getIncompleteArrayType(clang::QualType, clang::ArrayType::ArraySizeModifier, unsigned int) const"}, + {"_ZNK5clang10ASTContext13getVectorTypeENS_8QualTypeEjNS_10VectorType10VectorKindE", "clang::ASTContext::getVectorType(clang::QualType, unsigned int, clang::VectorType::VectorKind) const"}, + {"_ZNK5clang10ASTContext16getExtVectorTypeENS_8QualTypeEj", "clang::ASTContext::getExtVectorType(clang::QualType, unsigned int) const"}, + {"_ZNK5clang10ASTContext30getDependentSizedExtVectorTypeENS_8QualTypeEPNS_4ExprENS_14SourceLocationE", "clang::ASTContext::getDependentSizedExtVectorType(clang::QualType, clang::Expr*, clang::SourceLocation) const"}, + {"_ZNK5clang10ASTContext21getCanonicalParamTypeENS_8QualTypeE", "clang::ASTContext::getCanonicalParamType(clang::QualType) const"}, + {"_ZNK5clang10ASTContext24getInjectedClassNameTypeEPNS_13CXXRecordDeclENS_8QualTypeE", "clang::ASTContext::getInjectedClassNameType(clang::CXXRecordDecl*, clang::QualType) const"}, + {"_ZNK5clang10ASTContext19getTypeDeclTypeSlowEPKNS_8TypeDeclE", "clang::ASTContext::getTypeDeclTypeSlow(clang::TypeDecl const*) const"}, + {"_ZNK5clang10ASTContext14getTypedefTypeEPKNS_11TypedefDeclENS_8QualTypeE", "clang::ASTContext::getTypedefType(clang::TypedefDecl const*, clang::QualType) const"}, + {"_ZNK5clang10ASTContext13getRecordTypeEPKNS_10RecordDeclE", "clang::ASTContext::getRecordType(clang::RecordDecl const*) const"}, + {"_ZNK5clang10ASTContext11getEnumTypeEPKNS_8EnumDeclE", "clang::ASTContext::getEnumType(clang::EnumDecl const*) const"}, + {"_ZN5clang10ASTContext17getAttributedTypeENS_14AttributedType4KindENS_8QualTypeES3_", "clang::ASTContext::getAttributedType(clang::AttributedType::Kind, clang::QualType, clang::QualType)"}, + {"_ZNK5clang10ASTContext28getSubstTemplateTypeParmTypeEPKNS_20TemplateTypeParmTypeENS_8QualTypeE", "clang::ASTContext::getSubstTemplateTypeParmType(clang::TemplateTypeParmType const*, clang::QualType) const"}, + {"_ZN5clang10ASTContext32getSubstTemplateTypeParmPackTypeEPKNS_20TemplateTypeParmTypeERKNS_16TemplateArgumentE", "clang::ASTContext::getSubstTemplateTypeParmPackType(clang::TemplateTypeParmType const*, clang::TemplateArgument const&)"}, + {"_ZNK5clang10ASTContext23getTemplateTypeParmTypeEjjbPNS_14IdentifierInfoE", "clang::ASTContext::getTemplateTypeParmType(unsigned int, unsigned int, bool, clang::IdentifierInfo*) const"}, + {"_ZNK5clang10ASTContext33getTemplateSpecializationTypeInfoENS_12TemplateNameENS_14SourceLocationERKNS_24TemplateArgumentListInfoENS_8QualTypeE", "clang::ASTContext::getTemplateSpecializationTypeInfo(clang::TemplateName, clang::SourceLocation, clang::TemplateArgumentListInfo const&, clang::QualType) const"}, + {"_ZNK5clang10ASTContext29getTemplateSpecializationTypeENS_12TemplateNameERKNS_24TemplateArgumentListInfoENS_8QualTypeE", "clang::ASTContext::getTemplateSpecializationType(clang::TemplateName, clang::TemplateArgumentListInfo const&, clang::QualType) const"}, + {"_ZNK5clang10ASTContext29getTemplateSpecializationTypeENS_12TemplateNameEPKNS_16TemplateArgumentEjNS_8QualTypeE", "clang::ASTContext::getTemplateSpecializationType(clang::TemplateName, clang::TemplateArgument const*, unsigned int, clang::QualType) const"}, + {"_ZNK5clang10ASTContext38getCanonicalTemplateSpecializationTypeENS_12TemplateNameEPKNS_16TemplateArgumentEj", "clang::ASTContext::getCanonicalTemplateSpecializationType(clang::TemplateName, clang::TemplateArgument const*, unsigned int) const"}, + {"_ZNK5clang10ASTContext24getCanonicalTemplateNameENS_12TemplateNameE", "clang::ASTContext::getCanonicalTemplateName(clang::TemplateName) const"}, + {"_ZNK5clang10ASTContext28getCanonicalTemplateArgumentERKNS_16TemplateArgumentE", "clang::ASTContext::getCanonicalTemplateArgument(clang::TemplateArgument const&) const"}, + {"_ZNK5clang10ASTContext17getElaboratedTypeENS_21ElaboratedTypeKeywordEPNS_19NestedNameSpecifierENS_8QualTypeE", "clang::ASTContext::getElaboratedType(clang::ElaboratedTypeKeyword, clang::NestedNameSpecifier*, clang::QualType) const"}, + {"_ZNK5clang10ASTContext12getParenTypeENS_8QualTypeE", "clang::ASTContext::getParenType(clang::QualType) const"}, + {"_ZNK5clang10ASTContext20getDependentNameTypeENS_21ElaboratedTypeKeywordEPNS_19NestedNameSpecifierEPKNS_14IdentifierInfoENS_8QualTypeE", "clang::ASTContext::getDependentNameType(clang::ElaboratedTypeKeyword, clang::NestedNameSpecifier*, clang::IdentifierInfo const*, clang::QualType) const"}, + {"_ZNK5clang10ASTContext31getCanonicalNestedNameSpecifierEPNS_19NestedNameSpecifierE", "clang::ASTContext::getCanonicalNestedNameSpecifier(clang::NestedNameSpecifier*) const"}, + {"_ZNK5clang10ASTContext38getDependentTemplateSpecializationTypeENS_21ElaboratedTypeKeywordEPNS_19NestedNameSpecifierEPKNS_14IdentifierInfoERKNS_24TemplateArgumentListInfoE", "clang::ASTContext::getDependentTemplateSpecializationType(clang::ElaboratedTypeKeyword, clang::NestedNameSpecifier*, clang::IdentifierInfo const*, clang::TemplateArgumentListInfo const&) const"}, + {"_ZNK5clang10ASTContext38getDependentTemplateSpecializationTypeENS_21ElaboratedTypeKeywordEPNS_19NestedNameSpecifierEPKNS_14IdentifierInfoEjPKNS_16TemplateArgumentE", "clang::ASTContext::getDependentTemplateSpecializationType(clang::ElaboratedTypeKeyword, clang::NestedNameSpecifier*, clang::IdentifierInfo const*, unsigned int, clang::TemplateArgument const*) const"}, + {"_ZN5clang10ASTContext20getPackExpansionTypeENS_8QualTypeEN4llvm8OptionalIjEE", "clang::ASTContext::getPackExpansionType(clang::QualType, llvm::Optional)"}, + {"_ZNK5clang10ASTContext17getObjCObjectTypeENS_8QualTypeEPKPNS_16ObjCProtocolDeclEj", "clang::ASTContext::getObjCObjectType(clang::QualType, clang::ObjCProtocolDecl* const*, unsigned int) const"}, + {"_ZNK5clang10ASTContext24getObjCObjectPointerTypeENS_8QualTypeE", "clang::ASTContext::getObjCObjectPointerType(clang::QualType) const"}, + {"_ZNK5clang10ASTContext20getObjCInterfaceTypeEPKNS_17ObjCInterfaceDeclE", "clang::ASTContext::getObjCInterfaceType(clang::ObjCInterfaceDecl const*) const"}, + {"_ZNK5clang10ASTContext17getTypeOfExprTypeEPNS_4ExprE", "clang::ASTContext::getTypeOfExprType(clang::Expr*) const"}, + {"_ZNK5clang10ASTContext13getTypeOfTypeENS_8QualTypeE", "clang::ASTContext::getTypeOfType(clang::QualType) const"}, + {"_ZNK5clang10ASTContext15getDecltypeTypeEPNS_4ExprE", "clang::ASTContext::getDecltypeType(clang::Expr*) const"}, + {"_ZNK5clang10ASTContext14getTagDeclTypeEPKNS_7TagDeclE", "clang::ASTContext::getTagDeclType(clang::TagDecl const*) const"}, + {"_ZNK5clang10ASTContext11getSizeTypeEv", "clang::ASTContext::getSizeType() const"}, + {"_ZNK5clang10ASTContext18getSignedWCharTypeEv", "clang::ASTContext::getSignedWCharType() const"}, + {"_ZNK5clang10ASTContext20getUnsignedWCharTypeEv", "clang::ASTContext::getUnsignedWCharType() const"}, + {"_ZNK5clang10ASTContext19getArrayDecayedTypeENS_8QualTypeE", "clang::ASTContext::getArrayDecayedType(clang::QualType) const"}, + {"_ZN5clang10ASTContext23getUnqualifiedArrayTypeENS_8QualTypeERNS_10QualifiersE", "clang::ASTContext::getUnqualifiedArrayType(clang::QualType, clang::Qualifiers&)"}, + {"_ZN5clang10ASTContext25UnwrapSimilarPointerTypesERNS_8QualTypeES2_", "clang::ASTContext::UnwrapSimilarPointerTypes(clang::QualType&, clang::QualType&)"}, + {"_ZNK5clang10ASTContext18getNameForTemplateENS_12TemplateNameENS_14SourceLocationE", "clang::ASTContext::getNameForTemplate(clang::TemplateName, clang::SourceLocation) const"}, + {"_ZNK5clang10ASTContext32getSubstTemplateTemplateParmPackEPNS_24TemplateTemplateParmDeclERKNS_16TemplateArgumentE", "clang::ASTContext::getSubstTemplateTemplateParmPack(clang::TemplateTemplateParmDecl*, clang::TemplateArgument const&) const"}, + {"_ZN5clang10ASTContext19hasSameTemplateNameENS_12TemplateNameES1_", "clang::ASTContext::hasSameTemplateName(clang::TemplateName, clang::TemplateName)"}, + {"_ZNK5clang10ASTContext24getDependentTemplateNameEPNS_19NestedNameSpecifierEPKNS_14IdentifierInfoE", "clang::ASTContext::getDependentTemplateName(clang::NestedNameSpecifier*, clang::IdentifierInfo const*) const"}, + {"_ZNK5clang10ASTContext18getBaseElementTypeENS_8QualTypeE", "clang::ASTContext::getBaseElementType(clang::QualType) const"}, + {"_ZNK5clang10ASTContext28getConstantArrayElementCountEPKNS_17ConstantArrayTypeE", "clang::ASTContext::getConstantArrayElementCount(clang::ConstantArrayType const*) const"}, + {"_ZNK5clang10ASTContext33getFloatingTypeOfSizeWithinDomainENS_8QualTypeES1_", "clang::ASTContext::getFloatingTypeOfSizeWithinDomain(clang::QualType, clang::QualType) const"}, + {"_ZNK5clang10ASTContext20getFloatingTypeOrderENS_8QualTypeES1_", "clang::ASTContext::getFloatingTypeOrder(clang::QualType, clang::QualType) const"}, + {"_ZNK5clang10ASTContext14getIntegerRankEPKNS_4TypeE", "clang::ASTContext::getIntegerRank(clang::Type const*) const"}, + {"_ZNK5clang10ASTContext11getIntWidthENS_8QualTypeE", "clang::ASTContext::getIntWidth(clang::QualType) const"}, + {"_ZNK5clang10ASTContext20isPromotableBitFieldEPNS_4ExprE", "clang::ASTContext::isPromotableBitField(clang::Expr*) const"}, + {"_ZNK5clang10ASTContext22getPromotedIntegerTypeENS_8QualTypeE", "clang::ASTContext::getPromotedIntegerType(clang::QualType) const"}, + {"_ZNK5clang10ASTContext19getIntegerTypeOrderENS_8QualTypeES1_", "clang::ASTContext::getIntegerTypeOrder(clang::QualType, clang::QualType) const"}, + {"_ZNK5clang10ASTContext23getCFConstantStringTypeEv", "clang::ASTContext::getCFConstantStringType() const"}, + {"_ZN5clang10ASTContext23setCFConstantStringTypeENS_8QualTypeE", "clang::ASTContext::setCFConstantStringType(clang::QualType)"}, + {"_ZNK5clang10ASTContext23getNSConstantStringTypeEv", "clang::ASTContext::getNSConstantStringType() const"}, + {"_ZN5clang10ASTContext23setNSConstantStringTypeENS_8QualTypeE", "clang::ASTContext::setNSConstantStringType(clang::QualType)"}, + {"_ZNK5clang10ASTContext31getObjCFastEnumerationStateTypeEv", "clang::ASTContext::getObjCFastEnumerationStateType() const"}, + {"_ZNK5clang10ASTContext22getBlockDescriptorTypeEv", "clang::ASTContext::getBlockDescriptorType() const"}, + {"_ZN5clang10ASTContext22setBlockDescriptorTypeENS_8QualTypeE", "clang::ASTContext::setBlockDescriptorType(clang::QualType)"}, + {"_ZNK5clang10ASTContext30getBlockDescriptorExtendedTypeEv", "clang::ASTContext::getBlockDescriptorExtendedType() const"}, + {"_ZN5clang10ASTContext30setBlockDescriptorExtendedTypeENS_8QualTypeE", "clang::ASTContext::setBlockDescriptorExtendedType(clang::QualType)"}, + {"_ZNK5clang10ASTContext20BlockRequiresCopyingENS_8QualTypeE", "clang::ASTContext::BlockRequiresCopying(clang::QualType) const"}, + {"_ZNK5clang10ASTContext18isObjCNSObjectTypeENS_8QualTypeE", "clang::ASTContext::isObjCNSObjectType(clang::QualType) const"}, + {"_ZNK5clang10ASTContext14BuildByRefTypeEN4llvm9StringRefENS_8QualTypeE", "clang::ASTContext::BuildByRefType(llvm::StringRef, clang::QualType) const"}, + {"_ZNK5clang10ASTContext16getBlockParmTypeEbRN4llvm15SmallVectorImplIPKNS_4ExprEEE", "clang::ASTContext::getBlockParmType(bool, llvm::SmallVectorImpl&) const"}, + {"_ZN5clang10ASTContext31setObjCFastEnumerationStateTypeENS_8QualTypeE", "clang::ASTContext::setObjCFastEnumerationStateType(clang::QualType)"}, + {"_ZNK5clang10ASTContext23getObjCEncodingTypeSizeENS_8QualTypeE", "clang::ASTContext::getObjCEncodingTypeSize(clang::QualType) const"}, + {"_ZNK5clang10ASTContext23getObjCEncodingForBlockEPKNS_9BlockExprE", "clang::ASTContext::getObjCEncodingForBlock(clang::BlockExpr const*) const"}, + {"_ZNK5clang10ASTContext22getObjCEncodingForTypeENS_8QualTypeERSsPKNS_9FieldDeclE", "clang::ASTContext::getObjCEncodingForType(clang::QualType, std::string&, clang::FieldDecl const*) const"}, + {"_Z17charUnitsToStringRKN5clang9CharUnitsE", "charUnitsToString(clang::CharUnits const&)"}, + {"_ZN5clang10ASTContext30getObjCEncodingForFunctionDeclEPKNS_12FunctionDeclERSs", "clang::ASTContext::getObjCEncodingForFunctionDecl(clang::FunctionDecl const*, std::string&)"}, + {"_ZNK5clang10ASTContext28getObjCEncodingForMethodDeclEPKNS_14ObjCMethodDeclERSs", "clang::ASTContext::getObjCEncodingForMethodDecl(clang::ObjCMethodDecl const*, std::string&) const"}, + {"_ZNK5clang10ASTContext31getObjCEncodingForTypeQualifierENS_4Decl17ObjCDeclQualifierERSs", "clang::ASTContext::getObjCEncodingForTypeQualifier(clang::Decl::ObjCDeclQualifier, std::string&) const"}, + {"_ZNK5clang10ASTContext30getObjCEncodingForPropertyDeclEPKNS_16ObjCPropertyDeclEPKNS_4DeclERSs", "clang::ASTContext::getObjCEncodingForPropertyDecl(clang::ObjCPropertyDecl const*, clang::Decl const*, std::string&) const"}, + {"_ZNK5clang10ASTContext26getObjCEncodingForTypeImplENS_8QualTypeERSsbbPKNS_9FieldDeclEbb", "clang::ASTContext::getObjCEncodingForTypeImpl(clang::QualType, std::string&, bool, bool, clang::FieldDecl const*, bool, bool) const"}, + {"_ZNK5clang10ASTContext29getLegacyIntegralTypeEncodingERNS_8QualTypeE", "clang::ASTContext::getLegacyIntegralTypeEncoding(clang::QualType&) const"}, + {"_Z14EncodeBitFieldPKN5clang10ASTContextERSsNS_8QualTypeEPKNS_9FieldDeclE", "EncodeBitField(clang::ASTContext const*, std::string&, clang::QualType, clang::FieldDecl const*)"}, + {"_Z28ObjCEncodingForPrimitiveKindPKN5clang10ASTContextENS_8QualTypeE", "ObjCEncodingForPrimitiveKind(clang::ASTContext const*, clang::QualType)"}, + {"_ZN5clang10ASTContext20setBuiltinVaListTypeENS_8QualTypeE", "clang::ASTContext::setBuiltinVaListType(clang::QualType)"}, + {"_ZN5clang10ASTContext13setObjCIdTypeENS_8QualTypeE", "clang::ASTContext::setObjCIdType(clang::QualType)"}, + {"_ZN5clang10ASTContext14setObjCSelTypeENS_8QualTypeE", "clang::ASTContext::setObjCSelType(clang::QualType)"}, + {"_ZN5clang10ASTContext16setObjCProtoTypeENS_8QualTypeE", "clang::ASTContext::setObjCProtoType(clang::QualType)"}, + {"_ZN5clang10ASTContext16setObjCClassTypeENS_8QualTypeE", "clang::ASTContext::setObjCClassType(clang::QualType)"}, + {"_ZN5clang10ASTContext30setObjCConstantStringInterfaceEPNS_17ObjCInterfaceDeclE", "clang::ASTContext::setObjCConstantStringInterface(clang::ObjCInterfaceDecl*)"}, + {"_ZNK5clang10ASTContext25getOverloadedTemplateNameENS_21UnresolvedSetIteratorES1_", "clang::ASTContext::getOverloadedTemplateName(clang::UnresolvedSetIterator, clang::UnresolvedSetIterator) const"}, + {"_ZNK5clang10ASTContext24getQualifiedTemplateNameEPNS_19NestedNameSpecifierEbPNS_12TemplateDeclE", "clang::ASTContext::getQualifiedTemplateName(clang::NestedNameSpecifier*, bool, clang::TemplateDecl*) const"}, + {"_ZNK5clang10ASTContext24getDependentTemplateNameEPNS_19NestedNameSpecifierENS_22OverloadedOperatorKindE", "clang::ASTContext::getDependentTemplateName(clang::NestedNameSpecifier*, clang::OverloadedOperatorKind) const"}, + {"_ZNK5clang10ASTContext17getObjCGCAttrKindENS_8QualTypeE", "clang::ASTContext::getObjCGCAttrKind(clang::QualType) const"}, + {"_ZN5clang10ASTContext24areCompatibleVectorTypesENS_8QualTypeES1_", "clang::ASTContext::areCompatibleVectorTypes(clang::QualType, clang::QualType)"}, + {"_ZNK5clang10ASTContext30ProtocolCompatibleWithProtocolEPNS_16ObjCProtocolDeclES2_", "clang::ASTContext::ProtocolCompatibleWithProtocol(clang::ObjCProtocolDecl*, clang::ObjCProtocolDecl*) const"}, + {"_ZN5clang10ASTContext30QualifiedIdConformsQualifiedIdENS_8QualTypeES1_", "clang::ASTContext::QualifiedIdConformsQualifiedId(clang::QualType, clang::QualType)"}, + {"_ZN5clang10ASTContext33ObjCQualifiedIdTypesAreCompatibleENS_8QualTypeES1_b", "clang::ASTContext::ObjCQualifiedIdTypesAreCompatible(clang::QualType, clang::QualType, bool)"}, + {"_ZN5clang10ASTContext36ObjCQualifiedClassTypesAreCompatibleENS_8QualTypeES1_", "clang::ASTContext::ObjCQualifiedClassTypesAreCompatible(clang::QualType, clang::QualType)"}, + {"_ZN5clang10ASTContext23canAssignObjCInterfacesEPKNS_21ObjCObjectPointerTypeES3_", "clang::ASTContext::canAssignObjCInterfaces(clang::ObjCObjectPointerType const*, clang::ObjCObjectPointerType const*)"}, + {"_ZN5clang10ASTContext23canAssignObjCInterfacesEPKNS_14ObjCObjectTypeES3_", "clang::ASTContext::canAssignObjCInterfaces(clang::ObjCObjectType const*, clang::ObjCObjectType const*)"}, + {"_ZN5clang10ASTContext37canAssignObjCInterfacesInBlockPointerEPKNS_21ObjCObjectPointerTypeES3_", "clang::ASTContext::canAssignObjCInterfacesInBlockPointer(clang::ObjCObjectPointerType const*, clang::ObjCObjectPointerType const*)"}, + {"_ZN5clang10ASTContext23areCommonBaseCompatibleEPKNS_21ObjCObjectPointerTypeES3_", "clang::ASTContext::areCommonBaseCompatible(clang::ObjCObjectPointerType const*, clang::ObjCObjectPointerType const*)"}, + {"_ZN5clang10ASTContext29areComparableObjCPointerTypesENS_8QualTypeES1_", "clang::ASTContext::areComparableObjCPointerTypes(clang::QualType, clang::QualType)"}, + {"_ZN5clang10ASTContext21canBindObjCObjectTypeENS_8QualTypeES1_", "clang::ASTContext::canBindObjCObjectType(clang::QualType, clang::QualType)"}, + {"_ZN5clang10ASTContext18typesAreCompatibleENS_8QualTypeES1_b", "clang::ASTContext::typesAreCompatible(clang::QualType, clang::QualType, bool)"}, + {"_ZN5clang10ASTContext10mergeTypesENS_8QualTypeES1_bb", "clang::ASTContext::mergeTypes(clang::QualType, clang::QualType, bool, bool)"}, + {"_ZN5clang10ASTContext30typesAreBlockPointerCompatibleENS_8QualTypeES1_", "clang::ASTContext::typesAreBlockPointerCompatible(clang::QualType, clang::QualType)"}, + {"_ZN5clang10ASTContext25mergeTransparentUnionTypeENS_8QualTypeES1_bb", "clang::ASTContext::mergeTransparentUnionType(clang::QualType, clang::QualType, bool, bool)"}, + {"_ZN5clang10ASTContext26mergeFunctionArgumentTypesENS_8QualTypeES1_bb", "clang::ASTContext::mergeFunctionArgumentTypes(clang::QualType, clang::QualType, bool, bool)"}, + {"_ZN5clang10ASTContext18mergeFunctionTypesENS_8QualTypeES1_bb", "clang::ASTContext::mergeFunctionTypes(clang::QualType, clang::QualType, bool, bool)"}, + {"_ZN5clang10ASTContext21mergeObjCGCQualifiersENS_8QualTypeES1_", "clang::ASTContext::mergeObjCGCQualifiers(clang::QualType, clang::QualType)"}, + {"_ZN5clang10ASTContext28getCorrespondingUnsignedTypeENS_8QualTypeE", "clang::ASTContext::getCorrespondingUnsignedType(clang::QualType)"}, + {"_ZN5clang17ExternalASTSourceD0Ev", "clang::ExternalASTSource::~ExternalASTSource()"}, + {"_ZN5clang17ExternalASTSourceD1Ev", "clang::ExternalASTSource::~ExternalASTSource()"}, + {"_ZN5clang17ExternalASTSourceD2Ev", "clang::ExternalASTSource::~ExternalASTSource()"}, + {"_ZN5clang17ExternalASTSource10PrintStatsEv", "clang::ExternalASTSource::PrintStats()"}, + {"_ZN5clang19ASTMutationListenerD0Ev", "clang::ASTMutationListener::~ASTMutationListener()"}, + {"_ZN5clang19ASTMutationListenerD1Ev", "clang::ASTMutationListener::~ASTMutationListener()"}, + {"_ZN5clang19ASTMutationListenerD2Ev", "clang::ASTMutationListener::~ASTMutationListener()"}, + {"_ZNK5clang10ASTContext14GetBuiltinTypeEjRNS0_19GetBuiltinTypeErrorEPj", "clang::ASTContext::GetBuiltinType(unsigned int, clang::ASTContext::GetBuiltinTypeError&, unsigned int*) const"}, + {"_Z17DecodeTypeFromStrRPKcRKN5clang10ASTContextERNS3_19GetBuiltinTypeErrorERbb", "DecodeTypeFromStr(char const*&, clang::ASTContext const&, clang::ASTContext::GetBuiltinTypeError&, bool&, bool)"}, + {"_ZN5clang10ASTContext24GetGVALinkageForFunctionEPKNS_12FunctionDeclE", "clang::ASTContext::GetGVALinkageForFunction(clang::FunctionDecl const*)"}, + {"_ZN5clang10ASTContext24GetGVALinkageForVariableEPKNS_7VarDeclE", "clang::ASTContext::GetGVALinkageForVariable(clang::VarDecl const*)"}, + {"_ZN5clang10ASTContext17DeclMustBeEmittedEPKNS_4DeclE", "clang::ASTContext::DeclMustBeEmitted(clang::Decl const*)"}, + {"_ZN5clang10ASTContext24getDefaultMethodCallConvEv", "clang::ASTContext::getDefaultMethodCallConv()"}, + {"_ZNK5clang10ASTContext13isNearlyEmptyEPKNS_13CXXRecordDeclE", "clang::ASTContext::isNearlyEmpty(clang::CXXRecordDecl const*) const"}, + {"_ZN5clang10ASTContext19createMangleContextEv", "clang::ASTContext::createMangleContext()"}, + {"_ZN5clang6CXXABID0Ev", "clang::CXXABI::~CXXABI()"}, + {"_ZN5clang6CXXABID1Ev", "clang::CXXABI::~CXXABI()"}, + {"_ZN5clang6CXXABID2Ev", "clang::CXXABI::~CXXABI()"}, + {"_Z16CmpProtocolNamesPKN5clang16ObjCProtocolDeclES2_", "CmpProtocolNames(clang::ObjCProtocolDecl const*, clang::ObjCProtocolDecl const*)"}, + {"_ZN4llvm10FoldingSetIN5clang10ASTContext29CanonicalTemplateTemplateParmEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang19NestedNameSpecifierEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang36SubstTemplateTemplateParmPackStorageEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang21DependentTemplateNameEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang21QualifiedTemplateNameEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang14AttributedTypeEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang21ObjCObjectPointerTypeEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang18ObjCObjectTypeImplEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang17PackExpansionTypeEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm20ContextualFoldingSetIN5clang35DependentTemplateSpecializationTypeERNS1_10ASTContextEED1Ev", "llvm::ContextualFoldingSet::~ContextualFoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang17DependentNameTypeEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang14ElaboratedTypeEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang9ParenTypeEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm20ContextualFoldingSetIN5clang26TemplateSpecializationTypeERNS1_10ASTContextEED1Ev", "llvm::ContextualFoldingSet::~ContextualFoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang29SubstTemplateTypeParmPackTypeEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang25SubstTemplateTypeParmTypeEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang20TemplateTypeParmTypeEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang21DependentDecltypeTypeEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang23DependentTypeOfExprTypeEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang17FunctionProtoTypeEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang19FunctionNoProtoTypeEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang10VectorTypeEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang27DependentSizedExtVectorTypeEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang23DependentSizedArrayTypeEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang19IncompleteArrayTypeEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang17ConstantArrayTypeEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang17MemberPointerTypeEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang19RValueReferenceTypeEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang19LValueReferenceTypeEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang16BlockPointerTypeEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang11PointerTypeEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang11ComplexTypeEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang8ExtQualsEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN5clang20UsuallyTinyPtrVectorIKNS_13CXXMethodDeclEE9push_backEPS2_", "clang::UsuallyTinyPtrVector::push_back(clang::CXXMethodDecl const*)"}, + {"_ZNK5clang4Decl15getMaxAlignmentEv", "clang::Decl::getMaxAlignment() const"}, + {"_ZNK5clang16ObjCCategoryDecl9ivar_sizeEv", "clang::ObjCCategoryDecl::ivar_size() const"}, + {"_ZNK5clang22ObjCImplementationDecl9ivar_sizeEv", "clang::ObjCImplementationDecl::ivar_size() const"}, + {"_ZN4llvm15SmallVectorImplIN5clang16TemplateArgumentEE9push_backERKS2_", "llvm::SmallVectorImpl::push_back(clang::TemplateArgument const&)"}, + {"_ZN5clang16TemplateArgumentaSERKS0_", "clang::TemplateArgument::operator=(clang::TemplateArgument const&)"}, + {"_ZNK5clang4Decl7getAttrINS_16ObjCNSObjectAttrEEEPT_v", "clang::ObjCNSObjectAttr* clang::Decl::getAttr() const"}, + {"_ZNK5clang4Type17isObjCBuiltinTypeEv", "clang::Type::isObjCBuiltinType() const"}, + {"_ZN5clang17ExternalASTSource12CompleteTypeEPNS_7TagDeclE", "clang::ExternalASTSource::CompleteType(clang::TagDecl*)"}, + {"_ZN5clang17ExternalASTSource12CompleteTypeEPNS_17ObjCInterfaceDeclE", "clang::ExternalASTSource::CompleteType(clang::ObjCInterfaceDecl*)"}, + {"_ZN5clang17ExternalASTSource20StartedDeserializingEv", "clang::ExternalASTSource::StartedDeserializing()"}, + {"_ZN5clang17ExternalASTSource21FinishedDeserializingEv", "clang::ExternalASTSource::FinishedDeserializing()"}, + {"_ZN5clang17ExternalASTSource20StartTranslationUnitEPNS_11ASTConsumerE", "clang::ExternalASTSource::StartTranslationUnit(clang::ASTConsumer*)"}, + {"_ZN5clang19ASTMutationListener22CompletedTagDefinitionEPKNS_7TagDeclE", "clang::ASTMutationListener::CompletedTagDefinition(clang::TagDecl const*)"}, + {"_ZN5clang19ASTMutationListener16AddedVisibleDeclEPKNS_11DeclContextEPKNS_4DeclE", "clang::ASTMutationListener::AddedVisibleDecl(clang::DeclContext const*, clang::Decl const*)"}, + {"_ZN5clang19ASTMutationListener22AddedCXXImplicitMemberEPKNS_13CXXRecordDeclEPKNS_4DeclE", "clang::ASTMutationListener::AddedCXXImplicitMember(clang::CXXRecordDecl const*, clang::Decl const*)"}, + {"_ZN5clang19ASTMutationListener30AddedCXXTemplateSpecializationEPKNS_17ClassTemplateDeclEPKNS_31ClassTemplateSpecializationDeclE", "clang::ASTMutationListener::AddedCXXTemplateSpecialization(clang::ClassTemplateDecl const*, clang::ClassTemplateSpecializationDecl const*)"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang16TemplateArgumentELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + + // {"_ZN4llvm23SmallVectorTemplateBaseIN5clang16TemplateArgumentELb0EE18uninitialized_copyIPS2_S5_EEvT_S6_T0_", + // "void llvm::SmallVectorTemplateBase::uninitialized_copy(clang::TemplateArgument*, clang::TemplateArgument*, clang::TemplateArgument*)"}, + // got error + + {"_ZNSt6vectorIPN5clang17VariableArrayTypeESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, clang::VariableArrayType* const&)"}, + {"_ZN4llvm8DenseMapIPKN5clang7VarDeclEPNS1_4ExprENS_12DenseMapInfoIS4_EENS7_IS6_EEE16InsertIntoBucketERKS4_RKS6_PSt4pairIS4_S6_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::VarDecl const* const&, clang::Expr* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang7VarDeclEPNS1_4ExprENS_12DenseMapInfoIS4_EENS7_IS6_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPN5clang17ObjCContainerDeclEPNS1_12ObjCImplDeclENS_12DenseMapInfoIS3_EENS6_IS5_EEE16InsertIntoBucketERKS3_RKS5_PSt4pairIS3_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::ObjCContainerDecl* const&, clang::ObjCImplDecl* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPN5clang17ObjCContainerDeclEPNS1_12ObjCImplDeclENS_12DenseMapInfoIS3_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNSt6vectorIPKN5clang13CXXMethodDeclESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, clang::CXXMethodDecl const* const&)"}, + {"_ZN4llvm8DenseMapIPKN5clang13CXXMethodDeclENS1_20UsuallyTinyPtrVectorIS3_EENS_12DenseMapInfoIS4_EENS7_IS6_EEE16InsertIntoBucketERKS4_RKS6_PSt4pairIS4_S6_E", "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(clang::CXXMethodDecl const* const&, clang::UsuallyTinyPtrVector const&, std::pair>*)"}, + {"_ZN4llvm8DenseMapIPKN5clang13CXXMethodDeclENS1_20UsuallyTinyPtrVectorIS3_EENS_12DenseMapInfoIS4_EENS7_IS6_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPN5clang9FieldDeclES3_NS_12DenseMapInfoIS3_EES5_E16InsertIntoBucketERKS3_S8_PSt4pairIS3_S3_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::FieldDecl* const&, clang::FieldDecl* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPN5clang9FieldDeclES3_NS_12DenseMapInfoIS3_EES5_E4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPN5clang15UsingShadowDeclES3_NS_12DenseMapInfoIS3_EES5_E16InsertIntoBucketERKS3_S8_PSt4pairIS3_S3_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::UsingShadowDecl* const&, clang::UsingShadowDecl* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPN5clang15UsingShadowDeclES3_NS_12DenseMapInfoIS3_EES5_E4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPN5clang9UsingDeclEPNS1_9NamedDeclENS_12DenseMapInfoIS3_EENS6_IS5_EEE16InsertIntoBucketERKS3_RKS5_PSt4pairIS3_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::UsingDecl* const&, clang::NamedDecl* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPN5clang9UsingDeclEPNS1_9NamedDeclENS_12DenseMapInfoIS3_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKN5clang7VarDeclEPNS1_24MemberSpecializationInfoENS_12DenseMapInfoIS4_EENS7_IS6_EEE16InsertIntoBucketERKS4_RKS6_PSt4pairIS4_S6_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::VarDecl const* const&, clang::MemberSpecializationInfo* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang7VarDeclEPNS1_24MemberSpecializationInfoENS_12DenseMapInfoIS4_EENS7_IS6_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + + // {"_ZN4llvm8DenseMapIPKN5clang4DeclEPNS_11SmallVectorIPNS1_4AttrELj2EEENS_12DenseMapInfoIS4_EENSA_IS9_EEE16InsertIntoBucketERKS4_RKS9_PSt4pairIS4_S9_E", + // "llvm::DenseMap*, llvm::DenseMapInfo, llvm::DenseMapInfo*>>::InsertIntoBucket(clang::Decl const* const&, llvm::SmallVector* const&, std::pair*>*)"}, + // "llvm::DenseMap*, llvm::DenseMapInfo, llvm::DenseMapInfo*>>::InsertIntoBucket(clang::Decl const* const&, llvm::SmallVector* const&, std::pair*>*)" was returned + + + // {"_ZN4llvm8DenseMapIPKN5clang4DeclEPNS_11SmallVectorIPNS1_4AttrELj2EEENS_12DenseMapInfoIS4_EENSA_IS9_EEE4growEj", + // "llvm::DenseMap*, llvm::DenseMapInfo, llvm::DenseMapInfo*>>::grow(unsigned int)"}, + // "llvm::DenseMap*, llvm::DenseMapInfo, llvm::DenseMapInfo*>>::grow(unsigned int)" was returned + + {"_ZNSt6vectorIPN5clang4TypeESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, clang::Type* const&)"}, + {"_ZN4llvm10FoldingSetIN5clang10ASTContext29CanonicalTemplateTemplateParmEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang10ASTContext29CanonicalTemplateTemplateParmEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang10ASTContext29CanonicalTemplateTemplateParmEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS8_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang10ASTContext29CanonicalTemplateTemplateParmEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm10FoldingSetIN5clang19NestedNameSpecifierEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang19NestedNameSpecifierEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang19NestedNameSpecifierEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang19NestedNameSpecifierEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm10FoldingSetIN5clang36SubstTemplateTemplateParmPackStorageEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang36SubstTemplateTemplateParmPackStorageEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang36SubstTemplateTemplateParmPackStorageEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang36SubstTemplateTemplateParmPackStorageEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm10FoldingSetIN5clang21DependentTemplateNameEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang21DependentTemplateNameEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang21DependentTemplateNameEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang21DependentTemplateNameEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN5clang21DependentTemplateName7ProfileERN4llvm16FoldingSetNodeIDE", "clang::DependentTemplateName::Profile(llvm::FoldingSetNodeID&)"}, + {"_ZN4llvm10FoldingSetIN5clang21QualifiedTemplateNameEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang21QualifiedTemplateNameEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang21QualifiedTemplateNameEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang21QualifiedTemplateNameEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm10FoldingSetIN5clang14AttributedTypeEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang14AttributedTypeEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang14AttributedTypeEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang14AttributedTypeEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm10FoldingSetIN5clang21ObjCObjectPointerTypeEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang21ObjCObjectPointerTypeEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang21ObjCObjectPointerTypeEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang21ObjCObjectPointerTypeEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm10FoldingSetIN5clang18ObjCObjectTypeImplEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang18ObjCObjectTypeImplEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang18ObjCObjectTypeImplEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang18ObjCObjectTypeImplEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm10FoldingSetIN5clang17PackExpansionTypeEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang17PackExpansionTypeEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang17PackExpansionTypeEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang17PackExpansionTypeEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm10FoldingSetIN5clang17DependentNameTypeEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang17DependentNameTypeEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang17DependentNameTypeEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang17DependentNameTypeEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm10FoldingSetIN5clang14ElaboratedTypeEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang14ElaboratedTypeEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang14ElaboratedTypeEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang14ElaboratedTypeEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm10FoldingSetIN5clang9ParenTypeEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang9ParenTypeEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang9ParenTypeEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang9ParenTypeEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm10FoldingSetIN5clang29SubstTemplateTypeParmPackTypeEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang29SubstTemplateTypeParmPackTypeEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang29SubstTemplateTypeParmPackTypeEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang29SubstTemplateTypeParmPackTypeEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm10FoldingSetIN5clang25SubstTemplateTypeParmTypeEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang25SubstTemplateTypeParmTypeEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang25SubstTemplateTypeParmTypeEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang25SubstTemplateTypeParmTypeEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm10FoldingSetIN5clang20TemplateTypeParmTypeEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang20TemplateTypeParmTypeEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang20TemplateTypeParmTypeEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang20TemplateTypeParmTypeEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm10FoldingSetIN5clang21DependentDecltypeTypeEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang21DependentDecltypeTypeEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang21DependentDecltypeTypeEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang21DependentDecltypeTypeEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm10FoldingSetIN5clang23DependentTypeOfExprTypeEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang23DependentTypeOfExprTypeEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang23DependentTypeOfExprTypeEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang23DependentTypeOfExprTypeEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm10FoldingSetIN5clang17FunctionProtoTypeEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang17FunctionProtoTypeEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang17FunctionProtoTypeEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang17FunctionProtoTypeEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm10FoldingSetIN5clang19FunctionNoProtoTypeEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang19FunctionNoProtoTypeEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang19FunctionNoProtoTypeEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang19FunctionNoProtoTypeEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm10FoldingSetIN5clang10VectorTypeEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang10VectorTypeEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang10VectorTypeEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang10VectorTypeEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm10FoldingSetIN5clang27DependentSizedExtVectorTypeEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang27DependentSizedExtVectorTypeEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang27DependentSizedExtVectorTypeEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang27DependentSizedExtVectorTypeEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm10FoldingSetIN5clang23DependentSizedArrayTypeEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang23DependentSizedArrayTypeEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang23DependentSizedArrayTypeEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang23DependentSizedArrayTypeEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm10FoldingSetIN5clang19IncompleteArrayTypeEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang19IncompleteArrayTypeEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang19IncompleteArrayTypeEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang19IncompleteArrayTypeEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm10FoldingSetIN5clang17ConstantArrayTypeEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang17ConstantArrayTypeEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang17ConstantArrayTypeEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang17ConstantArrayTypeEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm10FoldingSetIN5clang17MemberPointerTypeEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang17MemberPointerTypeEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang17MemberPointerTypeEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang17MemberPointerTypeEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm10FoldingSetIN5clang19RValueReferenceTypeEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang19RValueReferenceTypeEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang19RValueReferenceTypeEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang19RValueReferenceTypeEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm10FoldingSetIN5clang19LValueReferenceTypeEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang19LValueReferenceTypeEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang19LValueReferenceTypeEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang19LValueReferenceTypeEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm10FoldingSetIN5clang16BlockPointerTypeEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang16BlockPointerTypeEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang16BlockPointerTypeEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang16BlockPointerTypeEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm10FoldingSetIN5clang11PointerTypeEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang11PointerTypeEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang11PointerTypeEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang11PointerTypeEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm10FoldingSetIN5clang11ComplexTypeEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang11ComplexTypeEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang11ComplexTypeEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang11ComplexTypeEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm10FoldingSetIN5clang8ExtQualsEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang8ExtQualsEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang8ExtQualsEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang8ExtQualsEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm20ContextualFoldingSetIN5clang35DependentTemplateSpecializationTypeERNS1_10ASTContextEED0Ev", "llvm::ContextualFoldingSet::~ContextualFoldingSet()"}, + {"_ZNK4llvm20ContextualFoldingSetIN5clang35DependentTemplateSpecializationTypeERNS1_10ASTContextEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::ContextualFoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm20ContextualFoldingSetIN5clang35DependentTemplateSpecializationTypeERNS1_10ASTContextEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS9_", "llvm::ContextualFoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm20ContextualFoldingSetIN5clang35DependentTemplateSpecializationTypeERNS1_10ASTContextEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::ContextualFoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm20ContextualFoldingSetIN5clang26TemplateSpecializationTypeERNS1_10ASTContextEED0Ev", "llvm::ContextualFoldingSet::~ContextualFoldingSet()"}, + {"_ZNK4llvm20ContextualFoldingSetIN5clang26TemplateSpecializationTypeERNS1_10ASTContextEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::ContextualFoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm20ContextualFoldingSetIN5clang26TemplateSpecializationTypeERNS1_10ASTContextEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS9_", "llvm::ContextualFoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm20ContextualFoldingSetIN5clang26TemplateSpecializationTypeERNS1_10ASTContextEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::ContextualFoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN5clang18getFunctionExtInfoERKNS_4TypeE", "clang::getFunctionExtInfo(clang::Type const&)"}, + + // {"_ZSt16__introsort_loopIPPN5clang16ObjCProtocolDeclElPFbPKS1_S5_EEvT_S8_T0_T1_", + // "void std::__introsort_loop(clang::ObjCProtocolDecl**, clang::ObjCProtocolDecl**, long, bool (*)(clang::ObjCProtocolDecl const*, clang::ObjCProtocolDecl const*))"}, + // got error + + + // {"_ZSt22__final_insertion_sortIPPN5clang16ObjCProtocolDeclEPFbPKS1_S5_EEvT_S8_T0_", + // "void std::__final_insertion_sort(clang::ObjCProtocolDecl**, clang::ObjCProtocolDecl**, bool (*)(clang::ObjCProtocolDecl const*, clang::ObjCProtocolDecl const*))"}, + // got error + + + // {"_ZSt16__insertion_sortIPPN5clang16ObjCProtocolDeclEPFbPKS1_S5_EEvT_S8_T0_", + // "void std::__insertion_sort(clang::ObjCProtocolDecl**, clang::ObjCProtocolDecl**, bool (*)(clang::ObjCProtocolDecl const*, clang::ObjCProtocolDecl const*))"}, + // got error + + + // {"_ZSt13__heap_selectIPPN5clang16ObjCProtocolDeclEPFbPKS1_S5_EEvT_S8_S8_T0_", + // "void std::__heap_select(clang::ObjCProtocolDecl**, clang::ObjCProtocolDecl**, clang::ObjCProtocolDecl**, bool (*)(clang::ObjCProtocolDecl const*, clang::ObjCProtocolDecl const*))"}, + // got error + + + // {"_ZSt13__adjust_heapIPPN5clang16ObjCProtocolDeclElS2_PFbPKS1_S5_EEvT_T0_S9_T1_T2_", + // "void std::__adjust_heap(clang::ObjCProtocolDecl**, long, long, clang::ObjCProtocolDecl*, bool (*)(clang::ObjCProtocolDecl const*, clang::ObjCProtocolDecl const*))"}, + // got error + + {"_ZN5clang31FormatASTNodeDiagnosticArgumentENS_10Diagnostic12ArgumentKindElPKcjS3_jPKSt4pairIS1_lEjRN4llvm15SmallVectorImplIcEEPv", "clang::FormatASTNodeDiagnosticArgument(clang::Diagnostic::ArgumentKind, long, char const*, unsigned int, char const*, unsigned int, std::pair const*, unsigned int, llvm::SmallVectorImpl&, void*)"}, + {"_Z29ConvertTypeToDiagnosticStringRN5clang10ASTContextENS_8QualTypeEPKSt4pairINS_10Diagnostic12ArgumentKindElEj", "ConvertTypeToDiagnosticString(clang::ASTContext&, clang::QualType, std::pair const*, unsigned int)"}, + {"_Z7DesugarRN5clang10ASTContextENS_8QualTypeERb", "Desugar(clang::ASTContext&, clang::QualType, bool&)"}, + + // {"_Z14ImportCastPathPN5clang8CastExprERN4llvm11SmallVectorIPNS_16CXXBaseSpecifierELj4EEE", + // "ImportCastPath(clang::CastExpr*, llvm::SmallVector&)"}, + // "ImportCastPath(clang::CastExpr*, llvm::SmallVector&)" was returned + + {"_ZN5clang11ASTImporterC1ERNS_10ASTContextERNS_11FileManagerES2_S4_b", "clang::ASTImporter::ASTImporter(clang::ASTContext&, clang::FileManager&, clang::ASTContext&, clang::FileManager&, bool)"}, + {"_ZN5clang11ASTImporterC2ERNS_10ASTContextERNS_11FileManagerES2_S4_b", "clang::ASTImporter::ASTImporter(clang::ASTContext&, clang::FileManager&, clang::ASTContext&, clang::FileManager&, bool)"}, + {"_ZN5clang11ASTImporterD0Ev", "clang::ASTImporter::~ASTImporter()"}, + {"_ZN5clang11ASTImporterD1Ev", "clang::ASTImporter::~ASTImporter()"}, + {"_ZN5clang11ASTImporterD2Ev", "clang::ASTImporter::~ASTImporter()"}, + {"_ZN5clang11ASTImporter6ImportENS_8QualTypeE", "clang::ASTImporter::Import(clang::QualType)"}, + {"_ZN5clang11ASTImporter6ImportEPNS_14TypeSourceInfoE", "clang::ASTImporter::Import(clang::TypeSourceInfo*)"}, + {"_ZN5clang11ASTImporter6ImportEPNS_4DeclE", "clang::ASTImporter::Import(clang::Decl*)"}, + {"_ZN5clang11ASTImporter13ImportContextEPNS_11DeclContextE", "clang::ASTImporter::ImportContext(clang::DeclContext*)"}, + {"_ZN5clang11ASTImporter6ImportEPNS_4ExprE", "clang::ASTImporter::Import(clang::Expr*)"}, + {"_ZN5clang11ASTImporter6ImportEPNS_4StmtE", "clang::ASTImporter::Import(clang::Stmt*)"}, + {"_ZN5clang11ASTImporter6ImportEPNS_19NestedNameSpecifierE", "clang::ASTImporter::Import(clang::NestedNameSpecifier*)"}, + {"_ZN5clang11ASTImporter6ImportENS_12TemplateNameE", "clang::ASTImporter::Import(clang::TemplateName)"}, + {"_ZN5clang11ASTImporter6ImportEPKNS_14IdentifierInfoE", "clang::ASTImporter::Import(clang::IdentifierInfo const*)"}, + {"_ZN12_GLOBAL__N_115ASTNodeImporter22ImportTemplateArgumentERKN5clang16TemplateArgumentE", "(anonymous namespace)::ASTNodeImporter::ImportTemplateArgument(clang::TemplateArgument const&)"}, + {"_ZN5clang11ASTImporter6ImportENS_14SourceLocationE", "clang::ASTImporter::Import(clang::SourceLocation)"}, + {"_ZN5clang11ASTImporter6ImportENS_6FileIDE", "clang::ASTImporter::Import(clang::FileID)"}, + {"_ZN5clang11ASTImporter6ImportENS_11SourceRangeE", "clang::ASTImporter::Import(clang::SourceRange)"}, + {"_ZN5clang11ASTImporter16ImportDefinitionEPNS_4DeclE", "clang::ASTImporter::ImportDefinition(clang::Decl*)"}, + {"_ZN12_GLOBAL__N_115ASTNodeImporter17ImportDeclContextEPN5clang11DeclContextEb", "(anonymous namespace)::ASTNodeImporter::ImportDeclContext(clang::DeclContext*, bool)"}, + {"_ZN5clang11ASTImporter6ImportENS_15DeclarationNameE", "clang::ASTImporter::Import(clang::DeclarationName)"}, + {"_ZN5clang11ASTImporter6ImportENS_8SelectorE", "clang::ASTImporter::Import(clang::Selector)"}, + {"_ZN5clang11ASTImporter18HandleNameConflictENS_15DeclarationNameEPNS_11DeclContextEjPPNS_9NamedDeclEj", "clang::ASTImporter::HandleNameConflict(clang::DeclarationName, clang::DeclContext*, unsigned int, clang::NamedDecl**, unsigned int)"}, + {"_ZN5clang11ASTImporter6ToDiagENS_14SourceLocationEj", "clang::ASTImporter::ToDiag(clang::SourceLocation, unsigned int)"}, + {"_ZN5clang11ASTImporter8FromDiagENS_14SourceLocationEj", "clang::ASTImporter::FromDiag(clang::SourceLocation, unsigned int)"}, + {"_ZN5clang11ASTImporter8ImportedEPNS_4DeclES2_", "clang::ASTImporter::Imported(clang::Decl*, clang::Decl*)"}, + {"_ZN5clang11ASTImporter24IsStructurallyEquivalentENS_8QualTypeES1_", "clang::ASTImporter::IsStructurallyEquivalent(clang::QualType, clang::QualType)"}, + {"_ZN12_GLOBAL__N_115ASTNodeImporter19VisitBinaryOperatorEPN5clang14BinaryOperatorE", "(anonymous namespace)::ASTNodeImporter::VisitBinaryOperator(clang::BinaryOperator*)"}, + {"_ZN12_GLOBAL__N_115ASTNodeImporter27VisitCompoundAssignOperatorEPN5clang22CompoundAssignOperatorE", "(anonymous namespace)::ASTNodeImporter::VisitCompoundAssignOperator(clang::CompoundAssignOperator*)"}, + {"_ZN12_GLOBAL__N_115ASTNodeImporter18VisitUnaryOperatorEPN5clang13UnaryOperatorE", "(anonymous namespace)::ASTNodeImporter::VisitUnaryOperator(clang::UnaryOperator*)"}, + {"_ZN12_GLOBAL__N_115ASTNodeImporter9VisitStmtEPN5clang4StmtE", "(anonymous namespace)::ASTNodeImporter::VisitStmt(clang::Stmt*)"}, + {"_ZN12_GLOBAL__N_115ASTNodeImporter9VisitExprEPN5clang4ExprE", "(anonymous namespace)::ASTNodeImporter::VisitExpr(clang::Expr*)"}, + {"_ZN12_GLOBAL__N_115ASTNodeImporter18VisitNamespaceDeclEPN5clang13NamespaceDeclE", "(anonymous namespace)::ASTNodeImporter::VisitNamespaceDecl(clang::NamespaceDecl*)"}, + {"_ZN12_GLOBAL__N_115ASTNodeImporter21VisitObjCCategoryDeclEPN5clang16ObjCCategoryDeclE", "(anonymous namespace)::ASTNodeImporter::VisitObjCCategoryDecl(clang::ObjCCategoryDecl*)"}, + {"_ZN12_GLOBAL__N_115ASTNodeImporter25VisitObjCCategoryImplDeclEPN5clang20ObjCCategoryImplDeclE", "(anonymous namespace)::ASTNodeImporter::VisitObjCCategoryImplDecl(clang::ObjCCategoryImplDecl*)"}, + {"_ZN12_GLOBAL__N_115ASTNodeImporter27VisitObjCImplementationDeclEPN5clang22ObjCImplementationDeclE", "(anonymous namespace)::ASTNodeImporter::VisitObjCImplementationDecl(clang::ObjCImplementationDecl*)"}, + {"_ZN12_GLOBAL__N_115ASTNodeImporter22VisitObjCInterfaceDeclEPN5clang17ObjCInterfaceDeclE", "(anonymous namespace)::ASTNodeImporter::VisitObjCInterfaceDecl(clang::ObjCInterfaceDecl*)"}, + {"_ZN12_GLOBAL__N_115ASTNodeImporter21VisitObjCProtocolDeclEPN5clang16ObjCProtocolDeclE", "(anonymous namespace)::ASTNodeImporter::VisitObjCProtocolDecl(clang::ObjCProtocolDecl*)"}, + {"_ZN12_GLOBAL__N_115ASTNodeImporter19VisitObjCMethodDeclEPN5clang14ObjCMethodDeclE", "(anonymous namespace)::ASTNodeImporter::VisitObjCMethodDecl(clang::ObjCMethodDecl*)"}, + {"_ZN12_GLOBAL__N_115ASTNodeImporter21VisitObjCPropertyDeclEPN5clang16ObjCPropertyDeclE", "(anonymous namespace)::ASTNodeImporter::VisitObjCPropertyDecl(clang::ObjCPropertyDecl*)"}, + {"_ZN12_GLOBAL__N_115ASTNodeImporter22VisitClassTemplateDeclEPN5clang17ClassTemplateDeclE", "(anonymous namespace)::ASTNodeImporter::VisitClassTemplateDecl(clang::ClassTemplateDecl*)"}, + {"_ZN12_GLOBAL__N_115ASTNodeImporter29VisitTemplateTemplateParmDeclEPN5clang24TemplateTemplateParmDeclE", "(anonymous namespace)::ASTNodeImporter::VisitTemplateTemplateParmDecl(clang::TemplateTemplateParmDecl*)"}, + {"_ZN12_GLOBAL__N_115ASTNodeImporter13VisitEnumDeclEPN5clang8EnumDeclE", "(anonymous namespace)::ASTNodeImporter::VisitEnumDecl(clang::EnumDecl*)"}, + {"_ZN12_GLOBAL__N_115ASTNodeImporter15VisitRecordDeclEPN5clang10RecordDeclE", "(anonymous namespace)::ASTNodeImporter::VisitRecordDecl(clang::RecordDecl*)"}, + {"_ZN12_GLOBAL__N_115ASTNodeImporter36VisitClassTemplateSpecializationDeclEPN5clang31ClassTemplateSpecializationDeclE", "(anonymous namespace)::ASTNodeImporter::VisitClassTemplateSpecializationDecl(clang::ClassTemplateSpecializationDecl*)"}, + {"_ZN12_GLOBAL__N_115ASTNodeImporter16VisitTypedefDeclEPN5clang11TypedefDeclE", "(anonymous namespace)::ASTNodeImporter::VisitTypedefDecl(clang::TypedefDecl*)"}, + {"_ZN12_GLOBAL__N_115ASTNodeImporter14VisitFieldDeclEPN5clang9FieldDeclE", "(anonymous namespace)::ASTNodeImporter::VisitFieldDecl(clang::FieldDecl*)"}, + {"_ZN12_GLOBAL__N_115ASTNodeImporter17VisitObjCIvarDeclEPN5clang12ObjCIvarDeclE", "(anonymous namespace)::ASTNodeImporter::VisitObjCIvarDecl(clang::ObjCIvarDecl*)"}, + {"_ZN12_GLOBAL__N_115ASTNodeImporter17VisitFunctionDeclEPN5clang12FunctionDeclE", "(anonymous namespace)::ASTNodeImporter::VisitFunctionDecl(clang::FunctionDecl*)"}, + {"_ZN12_GLOBAL__N_115ASTNodeImporter28VisitNonTypeTemplateParmDeclEPN5clang23NonTypeTemplateParmDeclE", "(anonymous namespace)::ASTNodeImporter::VisitNonTypeTemplateParmDecl(clang::NonTypeTemplateParmDecl*)"}, + {"_ZN12_GLOBAL__N_115ASTNodeImporter12VisitVarDeclEPN5clang7VarDeclE", "(anonymous namespace)::ASTNodeImporter::VisitVarDecl(clang::VarDecl*)"}, + {"_ZN12_GLOBAL__N_115ASTNodeImporter22VisitImplicitParamDeclEPN5clang17ImplicitParamDeclE", "(anonymous namespace)::ASTNodeImporter::VisitImplicitParamDecl(clang::ImplicitParamDecl*)"}, + {"_ZN12_GLOBAL__N_115ASTNodeImporter16VisitParmVarDeclEPN5clang11ParmVarDeclE", "(anonymous namespace)::ASTNodeImporter::VisitParmVarDecl(clang::ParmVarDecl*)"}, + {"_ZN12_GLOBAL__N_115ASTNodeImporter21VisitEnumConstantDeclEPN5clang16EnumConstantDeclE", "(anonymous namespace)::ASTNodeImporter::VisitEnumConstantDecl(clang::EnumConstantDecl*)"}, + {"_ZN12_GLOBAL__N_115ASTNodeImporter22VisitIndirectFieldDeclEPN5clang17IndirectFieldDeclE", "(anonymous namespace)::ASTNodeImporter::VisitIndirectFieldDecl(clang::IndirectFieldDecl*)"}, + {"_ZN12_GLOBAL__N_115ASTNodeImporter18VisitObjCClassDeclEPN5clang13ObjCClassDeclE", "(anonymous namespace)::ASTNodeImporter::VisitObjCClassDecl(clang::ObjCClassDecl*)"}, + {"_ZN12_GLOBAL__N_115ASTNodeImporter28VisitObjCForwardProtocolDeclEPN5clang23ObjCForwardProtocolDeclE", "(anonymous namespace)::ASTNodeImporter::VisitObjCForwardProtocolDecl(clang::ObjCForwardProtocolDecl*)"}, + {"_ZN12_GLOBAL__N_115ASTNodeImporter25VisitObjCPropertyImplDeclEPN5clang20ObjCPropertyImplDeclE", "(anonymous namespace)::ASTNodeImporter::VisitObjCPropertyImplDecl(clang::ObjCPropertyImplDecl*)"}, + {"_ZN12_GLOBAL__N_115ASTNodeImporter15ImportDeclPartsEPN5clang9NamedDeclERPNS1_11DeclContextES6_RNS1_15DeclarationNameERNS1_14SourceLocationE", "(anonymous namespace)::ASTNodeImporter::ImportDeclParts(clang::NamedDecl*, clang::DeclContext*&, clang::DeclContext*&, clang::DeclarationName&, clang::SourceLocation&)"}, + {"_ZN12_GLOBAL__N_115ASTNodeImporter16ImportDefinitionEPN5clang10RecordDeclES3_", "(anonymous namespace)::ASTNodeImporter::ImportDefinition(clang::RecordDecl*, clang::RecordDecl*)"}, + {"_Z24IsStructurallyEquivalentRN12_GLOBAL__N_128StructuralEquivalenceContextEPN5clang4DeclES4_", "IsStructurallyEquivalent((anonymous namespace)::StructuralEquivalenceContext&, clang::Decl*, clang::Decl*)"}, + {"_ZN12_GLOBAL__N_128StructuralEquivalenceContext6FinishEv", "(anonymous namespace)::StructuralEquivalenceContext::Finish()"}, + {"_Z24IsStructurallyEquivalentRN12_GLOBAL__N_128StructuralEquivalenceContextEN5clang8QualTypeES3_", "IsStructurallyEquivalent((anonymous namespace)::StructuralEquivalenceContext&, clang::QualType, clang::QualType)"}, + {"_Z24IsStructurallyEquivalentRN12_GLOBAL__N_128StructuralEquivalenceContextEPN5clang21TemplateParameterListES4_", "IsStructurallyEquivalent((anonymous namespace)::StructuralEquivalenceContext&, clang::TemplateParameterList*, clang::TemplateParameterList*)"}, + {"_Z24IsStructurallyEquivalentRN12_GLOBAL__N_128StructuralEquivalenceContextERKN5clang16TemplateArgumentES5_", "IsStructurallyEquivalent((anonymous namespace)::StructuralEquivalenceContext&, clang::TemplateArgument const&, clang::TemplateArgument const&)"}, + {"_Z11IsSameValueRKN4llvm6APSIntES2_", "IsSameValue(llvm::APSInt const&, llvm::APSInt const&)"}, + {"_ZN12_GLOBAL__N_115ASTNodeImporter27ImportTemplateParameterListEPN5clang21TemplateParameterListE", "(anonymous namespace)::ASTNodeImporter::ImportTemplateParameterList(clang::TemplateParameterList*)"}, + {"_ZN4llvm8DenseMapIN5clang6FileIDES2_NS_12DenseMapInfoIS2_EES4_E16InsertIntoBucketERKS2_S7_PSt4pairIS2_S2_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::FileID const&, clang::FileID const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIN5clang6FileIDES2_NS_12DenseMapInfoIS2_EES4_E4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang14BinaryOperatorC2EPNS_4ExprES2_NS_18BinaryOperatorKindENS_8QualTypeENS_13ExprValueKindENS_14ExprObjectKindENS_14SourceLocationEb", "clang::BinaryOperator::BinaryOperator(clang::Expr*, clang::Expr*, clang::BinaryOperatorKind, clang::QualType, clang::ExprValueKind, clang::ExprObjectKind, clang::SourceLocation, bool)"}, + + // {"_ZN4llvm8DenseMapISt4pairIPN5clang4DeclES4_EcNS_12DenseMapInfoIS5_EENS6_IcEEE6insertERKS1_IS5_cE", + // "llvm::DenseMap, char, llvm::DenseMapInfo>, llvm::DenseMapInfo>::insert(std::pair, char> const&)"}, + // "llvm::DenseMap, char, llvm::DenseMapInfo>, llvm::DenseMapInfo>::insert(std::pair const&, char>)" was returned + + + // {"_ZNK4llvm8DenseMapISt4pairIPN5clang4DeclES4_EcNS_12DenseMapInfoIS5_EENS6_IcEEE15LookupBucketForERKS5_RPS1_IS5_cE", + // "llvm::DenseMap, char, llvm::DenseMapInfo>, llvm::DenseMapInfo>::LookupBucketFor(std::pair const&, std::pair, char>*&) const"}, + // "llvm::DenseMap, char, llvm::DenseMapInfo>, llvm::DenseMapInfo>::LookupBucketFor(std::pair const&, std::pair*&, char>) const" was returned + + + // {"_ZN4llvm8DenseMapISt4pairIPN5clang4DeclES4_EcNS_12DenseMapInfoIS5_EENS6_IcEEE16InsertIntoBucketERKS5_RKcPS1_IS5_cE", + // "llvm::DenseMap, char, llvm::DenseMapInfo>, llvm::DenseMapInfo>::InsertIntoBucket(std::pair const&, char const&, std::pair, char>*)"}, + // "llvm::DenseMap, char, llvm::DenseMapInfo>, llvm::DenseMapInfo>::InsertIntoBucket(std::pair const&, char const&, std::pair*, char>)" was returned + + {"_ZN4llvm8DenseMapISt4pairIPN5clang4DeclES4_EcNS_12DenseMapInfoIS5_EENS6_IcEEE4growEj", "llvm::DenseMap, char, llvm::DenseMapInfo>, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNSt5dequeIPN5clang4DeclESaIS2_EE9push_backERKS2_", "std::deque>::push_back(clang::Decl* const&)"}, + {"_ZNSt5dequeIPN5clang4DeclESaIS2_EE17_M_reallocate_mapEmb", "std::deque>::_M_reallocate_map(unsigned long, bool)"}, + {"_ZN4llvm8DenseMapIPKN5clang4TypeES4_NS_12DenseMapInfoIS4_EES6_E16InsertIntoBucketERKS4_S9_PSt4pairIS4_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::Type const* const&, clang::Type const* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang4TypeES4_NS_12DenseMapInfoIS4_EES6_E4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPN5clang4DeclES3_NS_12DenseMapInfoIS3_EES5_E16InsertIntoBucketERKS3_S8_PSt4pairIS3_S3_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::Decl* const&, clang::Decl* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPN5clang4DeclES3_NS_12DenseMapInfoIS3_EES5_E4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang4AttrD0Ev", "clang::Attr::~Attr()"}, + {"_ZN5clang4AttrD1Ev", "clang::Attr::~Attr()"}, + {"_ZN5clang4AttrD2Ev", "clang::Attr::~Attr()"}, + {"_ZNK5clang9AliasAttr5cloneERNS_10ASTContextE", "clang::AliasAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang15AlignMac68kAttr5cloneERNS_10ASTContextE", "clang::AlignMac68kAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang11AlignedAttr20isAlignmentDependentEv", "clang::AlignedAttr::isAlignmentDependent() const"}, + {"_ZNK5clang11AlignedAttr12getAlignmentERNS_10ASTContextE", "clang::AlignedAttr::getAlignment(clang::ASTContext&) const"}, + {"_ZNK5clang11AlignedAttr5cloneERNS_10ASTContextE", "clang::AlignedAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang16AlwaysInlineAttr5cloneERNS_10ASTContextE", "clang::AlwaysInlineAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang20AnalyzerNoReturnAttr5cloneERNS_10ASTContextE", "clang::AnalyzerNoReturnAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang12AnnotateAttr5cloneERNS_10ASTContextE", "clang::AnnotateAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang12AsmLabelAttr5cloneERNS_10ASTContextE", "clang::AsmLabelAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang10BlocksAttr5cloneERNS_10ASTContextE", "clang::BlocksAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang9CDeclAttr5cloneERNS_10ASTContextE", "clang::CDeclAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang14CFConsumedAttr5cloneERNS_10ASTContextE", "clang::CFConsumedAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang24CFReturnsNotRetainedAttr5cloneERNS_10ASTContextE", "clang::CFReturnsNotRetainedAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang21CFReturnsRetainedAttr5cloneERNS_10ASTContextE", "clang::CFReturnsRetainedAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang16CUDAConstantAttr5cloneERNS_10ASTContextE", "clang::CUDAConstantAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang14CUDADeviceAttr5cloneERNS_10ASTContextE", "clang::CUDADeviceAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang14CUDAGlobalAttr5cloneERNS_10ASTContextE", "clang::CUDAGlobalAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang12CUDAHostAttr5cloneERNS_10ASTContextE", "clang::CUDAHostAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang20CUDALaunchBoundsAttr5cloneERNS_10ASTContextE", "clang::CUDALaunchBoundsAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang14CUDASharedAttr5cloneERNS_10ASTContextE", "clang::CUDASharedAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang21CarriesDependencyAttr5cloneERNS_10ASTContextE", "clang::CarriesDependencyAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang11CleanupAttr5cloneERNS_10ASTContextE", "clang::CleanupAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang10CommonAttr5cloneERNS_10ASTContextE", "clang::CommonAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang9ConstAttr5cloneERNS_10ASTContextE", "clang::ConstAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang15ConstructorAttr5cloneERNS_10ASTContextE", "clang::ConstructorAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang13DLLExportAttr5cloneERNS_10ASTContextE", "clang::DLLExportAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang13DLLImportAttr5cloneERNS_10ASTContextE", "clang::DLLImportAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang14DeprecatedAttr5cloneERNS_10ASTContextE", "clang::DeprecatedAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang14DestructorAttr5cloneERNS_10ASTContextE", "clang::DestructorAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang12ExplicitAttr5cloneERNS_10ASTContextE", "clang::ExplicitAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang12FastCallAttr5cloneERNS_10ASTContextE", "clang::FastCallAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang9FinalAttr5cloneERNS_10ASTContextE", "clang::FinalAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang10FormatAttr5cloneERNS_10ASTContextE", "clang::FormatAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang13FormatArgAttr5cloneERNS_10ASTContextE", "clang::FormatArgAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang13GNUInlineAttr5cloneERNS_10ASTContextE", "clang::GNUInlineAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang12IBActionAttr5cloneERNS_10ASTContextE", "clang::IBActionAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang12IBOutletAttr5cloneERNS_10ASTContextE", "clang::IBOutletAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang22IBOutletCollectionAttr5cloneERNS_10ASTContextE", "clang::IBOutletCollectionAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang16InitPriorityAttr5cloneERNS_10ASTContextE", "clang::InitPriorityAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang26MBlazeInterruptHandlerAttr5cloneERNS_10ASTContextE", "clang::MBlazeInterruptHandlerAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang23MBlazeSaveVolatilesAttr5cloneERNS_10ASTContextE", "clang::MBlazeSaveVolatilesAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang19MSP430InterruptAttr5cloneERNS_10ASTContextE", "clang::MSP430InterruptAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang10MallocAttr5cloneERNS_10ASTContextE", "clang::MallocAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang21MaxFieldAlignmentAttr5cloneERNS_10ASTContextE", "clang::MaxFieldAlignmentAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang12MayAliasAttr5cloneERNS_10ASTContextE", "clang::MayAliasAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang14NSConsumedAttr5cloneERNS_10ASTContextE", "clang::NSConsumedAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang18NSConsumesSelfAttr5cloneERNS_10ASTContextE", "clang::NSConsumesSelfAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang25NSReturnsAutoreleasedAttr5cloneERNS_10ASTContextE", "clang::NSReturnsAutoreleasedAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang24NSReturnsNotRetainedAttr5cloneERNS_10ASTContextE", "clang::NSReturnsNotRetainedAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang21NSReturnsRetainedAttr5cloneERNS_10ASTContextE", "clang::NSReturnsRetainedAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang9NakedAttr5cloneERNS_10ASTContextE", "clang::NakedAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang12NoCommonAttr5cloneERNS_10ASTContextE", "clang::NoCommonAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang11NoDebugAttr5cloneERNS_10ASTContextE", "clang::NoDebugAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang12NoInlineAttr5cloneERNS_10ASTContextE", "clang::NoInlineAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang24NoInstrumentFunctionAttr5cloneERNS_10ASTContextE", "clang::NoInstrumentFunctionAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang12NoReturnAttr5cloneERNS_10ASTContextE", "clang::NoReturnAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang11NoThrowAttr5cloneERNS_10ASTContextE", "clang::NoThrowAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang11NonNullAttr5cloneERNS_10ASTContextE", "clang::NonNullAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang17ObjCExceptionAttr5cloneERNS_10ASTContextE", "clang::ObjCExceptionAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang16ObjCNSObjectAttr5cloneERNS_10ASTContextE", "clang::ObjCNSObjectAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang16OverloadableAttr5cloneERNS_10ASTContextE", "clang::OverloadableAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang12OverrideAttr5cloneERNS_10ASTContextE", "clang::OverrideAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang13OwnershipAttr5cloneERNS_10ASTContextE", "clang::OwnershipAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang10PackedAttr5cloneERNS_10ASTContextE", "clang::PackedAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang10PascalAttr5cloneERNS_10ASTContextE", "clang::PascalAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang8PureAttr5cloneERNS_10ASTContextE", "clang::PureAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang11RegparmAttr5cloneERNS_10ASTContextE", "clang::RegparmAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang21ReqdWorkGroupSizeAttr5cloneERNS_10ASTContextE", "clang::ReqdWorkGroupSizeAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang11SectionAttr5cloneERNS_10ASTContextE", "clang::SectionAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang12SentinelAttr5cloneERNS_10ASTContextE", "clang::SentinelAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang11StdCallAttr5cloneERNS_10ASTContextE", "clang::StdCallAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang12ThisCallAttr5cloneERNS_10ASTContextE", "clang::ThisCallAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang20TransparentUnionAttr5cloneERNS_10ASTContextE", "clang::TransparentUnionAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang15UnavailableAttr5cloneERNS_10ASTContextE", "clang::UnavailableAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang10UnusedAttr5cloneERNS_10ASTContextE", "clang::UnusedAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang8UsedAttr5cloneERNS_10ASTContextE", "clang::UsedAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang8UuidAttr5cloneERNS_10ASTContextE", "clang::UuidAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang13VecReturnAttr5cloneERNS_10ASTContextE", "clang::VecReturnAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang14VisibilityAttr5cloneERNS_10ASTContextE", "clang::VisibilityAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang20WarnUnusedResultAttr5cloneERNS_10ASTContextE", "clang::WarnUnusedResultAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang8WeakAttr5cloneERNS_10ASTContextE", "clang::WeakAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang14WeakImportAttr5cloneERNS_10ASTContextE", "clang::WeakImportAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang11WeakRefAttr5cloneERNS_10ASTContextE", "clang::WeakRefAttr::clone(clang::ASTContext&) const"}, + {"_ZNK5clang27X86ForceAlignArgPointerAttr5cloneERNS_10ASTContextE", "clang::X86ForceAlignArgPointerAttr::clone(clang::ASTContext&) const"}, + {"_ZN5clang9AliasAttrD1Ev", "clang::AliasAttr::~AliasAttr()"}, + {"_ZN5clang9AliasAttrD0Ev", "clang::AliasAttr::~AliasAttr()"}, + {"_ZN5clang15AlignMac68kAttrD1Ev", "clang::AlignMac68kAttr::~AlignMac68kAttr()"}, + {"_ZN5clang15AlignMac68kAttrD0Ev", "clang::AlignMac68kAttr::~AlignMac68kAttr()"}, + {"_ZN5clang11AlignedAttrD1Ev", "clang::AlignedAttr::~AlignedAttr()"}, + {"_ZN5clang11AlignedAttrD0Ev", "clang::AlignedAttr::~AlignedAttr()"}, + {"_ZN5clang16AlwaysInlineAttrD1Ev", "clang::AlwaysInlineAttr::~AlwaysInlineAttr()"}, + {"_ZN5clang16AlwaysInlineAttrD0Ev", "clang::AlwaysInlineAttr::~AlwaysInlineAttr()"}, + {"_ZN5clang20AnalyzerNoReturnAttrD1Ev", "clang::AnalyzerNoReturnAttr::~AnalyzerNoReturnAttr()"}, + {"_ZN5clang20AnalyzerNoReturnAttrD0Ev", "clang::AnalyzerNoReturnAttr::~AnalyzerNoReturnAttr()"}, + {"_ZN5clang12AnnotateAttrD1Ev", "clang::AnnotateAttr::~AnnotateAttr()"}, + {"_ZN5clang12AnnotateAttrD0Ev", "clang::AnnotateAttr::~AnnotateAttr()"}, + {"_ZN5clang12AsmLabelAttrD1Ev", "clang::AsmLabelAttr::~AsmLabelAttr()"}, + {"_ZN5clang12AsmLabelAttrD0Ev", "clang::AsmLabelAttr::~AsmLabelAttr()"}, + {"_ZN5clang10BlocksAttrD1Ev", "clang::BlocksAttr::~BlocksAttr()"}, + {"_ZN5clang10BlocksAttrD0Ev", "clang::BlocksAttr::~BlocksAttr()"}, + {"_ZN5clang9CDeclAttrD1Ev", "clang::CDeclAttr::~CDeclAttr()"}, + {"_ZN5clang9CDeclAttrD0Ev", "clang::CDeclAttr::~CDeclAttr()"}, + {"_ZN5clang14CFConsumedAttrD1Ev", "clang::CFConsumedAttr::~CFConsumedAttr()"}, + {"_ZN5clang14CFConsumedAttrD0Ev", "clang::CFConsumedAttr::~CFConsumedAttr()"}, + {"_ZN5clang24CFReturnsNotRetainedAttrD1Ev", "clang::CFReturnsNotRetainedAttr::~CFReturnsNotRetainedAttr()"}, + {"_ZN5clang24CFReturnsNotRetainedAttrD0Ev", "clang::CFReturnsNotRetainedAttr::~CFReturnsNotRetainedAttr()"}, + {"_ZN5clang21CFReturnsRetainedAttrD1Ev", "clang::CFReturnsRetainedAttr::~CFReturnsRetainedAttr()"}, + {"_ZN5clang21CFReturnsRetainedAttrD0Ev", "clang::CFReturnsRetainedAttr::~CFReturnsRetainedAttr()"}, + {"_ZN5clang16CUDAConstantAttrD1Ev", "clang::CUDAConstantAttr::~CUDAConstantAttr()"}, + {"_ZN5clang16CUDAConstantAttrD0Ev", "clang::CUDAConstantAttr::~CUDAConstantAttr()"}, + {"_ZN5clang14CUDADeviceAttrD1Ev", "clang::CUDADeviceAttr::~CUDADeviceAttr()"}, + {"_ZN5clang14CUDADeviceAttrD0Ev", "clang::CUDADeviceAttr::~CUDADeviceAttr()"}, + {"_ZN5clang14CUDAGlobalAttrD1Ev", "clang::CUDAGlobalAttr::~CUDAGlobalAttr()"}, + {"_ZN5clang14CUDAGlobalAttrD0Ev", "clang::CUDAGlobalAttr::~CUDAGlobalAttr()"}, + {"_ZN5clang12CUDAHostAttrD1Ev", "clang::CUDAHostAttr::~CUDAHostAttr()"}, + {"_ZN5clang12CUDAHostAttrD0Ev", "clang::CUDAHostAttr::~CUDAHostAttr()"}, + {"_ZN5clang20CUDALaunchBoundsAttrD1Ev", "clang::CUDALaunchBoundsAttr::~CUDALaunchBoundsAttr()"}, + {"_ZN5clang20CUDALaunchBoundsAttrD0Ev", "clang::CUDALaunchBoundsAttr::~CUDALaunchBoundsAttr()"}, + {"_ZN5clang14CUDASharedAttrD1Ev", "clang::CUDASharedAttr::~CUDASharedAttr()"}, + {"_ZN5clang14CUDASharedAttrD0Ev", "clang::CUDASharedAttr::~CUDASharedAttr()"}, + {"_ZN5clang21CarriesDependencyAttrD1Ev", "clang::CarriesDependencyAttr::~CarriesDependencyAttr()"}, + {"_ZN5clang21CarriesDependencyAttrD0Ev", "clang::CarriesDependencyAttr::~CarriesDependencyAttr()"}, + {"_ZN5clang11CleanupAttrD1Ev", "clang::CleanupAttr::~CleanupAttr()"}, + {"_ZN5clang11CleanupAttrD0Ev", "clang::CleanupAttr::~CleanupAttr()"}, + {"_ZN5clang10CommonAttrD1Ev", "clang::CommonAttr::~CommonAttr()"}, + {"_ZN5clang10CommonAttrD0Ev", "clang::CommonAttr::~CommonAttr()"}, + {"_ZN5clang9ConstAttrD1Ev", "clang::ConstAttr::~ConstAttr()"}, + {"_ZN5clang9ConstAttrD0Ev", "clang::ConstAttr::~ConstAttr()"}, + {"_ZN5clang15ConstructorAttrD1Ev", "clang::ConstructorAttr::~ConstructorAttr()"}, + {"_ZN5clang15ConstructorAttrD0Ev", "clang::ConstructorAttr::~ConstructorAttr()"}, + {"_ZN5clang13DLLExportAttrD1Ev", "clang::DLLExportAttr::~DLLExportAttr()"}, + {"_ZN5clang13DLLExportAttrD0Ev", "clang::DLLExportAttr::~DLLExportAttr()"}, + {"_ZN5clang13DLLImportAttrD1Ev", "clang::DLLImportAttr::~DLLImportAttr()"}, + {"_ZN5clang13DLLImportAttrD0Ev", "clang::DLLImportAttr::~DLLImportAttr()"}, + {"_ZN5clang14DeprecatedAttrD1Ev", "clang::DeprecatedAttr::~DeprecatedAttr()"}, + {"_ZN5clang14DeprecatedAttrD0Ev", "clang::DeprecatedAttr::~DeprecatedAttr()"}, + {"_ZN5clang14DestructorAttrD1Ev", "clang::DestructorAttr::~DestructorAttr()"}, + {"_ZN5clang14DestructorAttrD0Ev", "clang::DestructorAttr::~DestructorAttr()"}, + {"_ZN5clang12ExplicitAttrD1Ev", "clang::ExplicitAttr::~ExplicitAttr()"}, + {"_ZN5clang12ExplicitAttrD0Ev", "clang::ExplicitAttr::~ExplicitAttr()"}, + {"_ZN5clang12FastCallAttrD1Ev", "clang::FastCallAttr::~FastCallAttr()"}, + {"_ZN5clang12FastCallAttrD0Ev", "clang::FastCallAttr::~FastCallAttr()"}, + {"_ZN5clang9FinalAttrD1Ev", "clang::FinalAttr::~FinalAttr()"}, + {"_ZN5clang9FinalAttrD0Ev", "clang::FinalAttr::~FinalAttr()"}, + {"_ZN5clang10FormatAttrD1Ev", "clang::FormatAttr::~FormatAttr()"}, + {"_ZN5clang10FormatAttrD0Ev", "clang::FormatAttr::~FormatAttr()"}, + {"_ZN5clang13FormatArgAttrD1Ev", "clang::FormatArgAttr::~FormatArgAttr()"}, + {"_ZN5clang13FormatArgAttrD0Ev", "clang::FormatArgAttr::~FormatArgAttr()"}, + {"_ZN5clang13GNUInlineAttrD1Ev", "clang::GNUInlineAttr::~GNUInlineAttr()"}, + {"_ZN5clang13GNUInlineAttrD0Ev", "clang::GNUInlineAttr::~GNUInlineAttr()"}, + {"_ZN5clang12IBActionAttrD1Ev", "clang::IBActionAttr::~IBActionAttr()"}, + {"_ZN5clang12IBActionAttrD0Ev", "clang::IBActionAttr::~IBActionAttr()"}, + {"_ZN5clang12IBOutletAttrD1Ev", "clang::IBOutletAttr::~IBOutletAttr()"}, + {"_ZN5clang12IBOutletAttrD0Ev", "clang::IBOutletAttr::~IBOutletAttr()"}, + {"_ZN5clang22IBOutletCollectionAttrD1Ev", "clang::IBOutletCollectionAttr::~IBOutletCollectionAttr()"}, + {"_ZN5clang22IBOutletCollectionAttrD0Ev", "clang::IBOutletCollectionAttr::~IBOutletCollectionAttr()"}, + {"_ZN5clang16InitPriorityAttrD1Ev", "clang::InitPriorityAttr::~InitPriorityAttr()"}, + {"_ZN5clang16InitPriorityAttrD0Ev", "clang::InitPriorityAttr::~InitPriorityAttr()"}, + {"_ZN5clang26MBlazeInterruptHandlerAttrD1Ev", "clang::MBlazeInterruptHandlerAttr::~MBlazeInterruptHandlerAttr()"}, + {"_ZN5clang26MBlazeInterruptHandlerAttrD0Ev", "clang::MBlazeInterruptHandlerAttr::~MBlazeInterruptHandlerAttr()"}, + {"_ZN5clang23MBlazeSaveVolatilesAttrD1Ev", "clang::MBlazeSaveVolatilesAttr::~MBlazeSaveVolatilesAttr()"}, + {"_ZN5clang23MBlazeSaveVolatilesAttrD0Ev", "clang::MBlazeSaveVolatilesAttr::~MBlazeSaveVolatilesAttr()"}, + {"_ZN5clang19MSP430InterruptAttrD1Ev", "clang::MSP430InterruptAttr::~MSP430InterruptAttr()"}, + {"_ZN5clang19MSP430InterruptAttrD0Ev", "clang::MSP430InterruptAttr::~MSP430InterruptAttr()"}, + {"_ZN5clang10MallocAttrD1Ev", "clang::MallocAttr::~MallocAttr()"}, + {"_ZN5clang10MallocAttrD0Ev", "clang::MallocAttr::~MallocAttr()"}, + {"_ZN5clang21MaxFieldAlignmentAttrD1Ev", "clang::MaxFieldAlignmentAttr::~MaxFieldAlignmentAttr()"}, + {"_ZN5clang21MaxFieldAlignmentAttrD0Ev", "clang::MaxFieldAlignmentAttr::~MaxFieldAlignmentAttr()"}, + {"_ZN5clang12MayAliasAttrD1Ev", "clang::MayAliasAttr::~MayAliasAttr()"}, + {"_ZN5clang12MayAliasAttrD0Ev", "clang::MayAliasAttr::~MayAliasAttr()"}, + {"_ZN5clang14NSConsumedAttrD1Ev", "clang::NSConsumedAttr::~NSConsumedAttr()"}, + {"_ZN5clang14NSConsumedAttrD0Ev", "clang::NSConsumedAttr::~NSConsumedAttr()"}, + {"_ZN5clang18NSConsumesSelfAttrD1Ev", "clang::NSConsumesSelfAttr::~NSConsumesSelfAttr()"}, + {"_ZN5clang18NSConsumesSelfAttrD0Ev", "clang::NSConsumesSelfAttr::~NSConsumesSelfAttr()"}, + {"_ZN5clang25NSReturnsAutoreleasedAttrD1Ev", "clang::NSReturnsAutoreleasedAttr::~NSReturnsAutoreleasedAttr()"}, + {"_ZN5clang25NSReturnsAutoreleasedAttrD0Ev", "clang::NSReturnsAutoreleasedAttr::~NSReturnsAutoreleasedAttr()"}, + {"_ZN5clang24NSReturnsNotRetainedAttrD1Ev", "clang::NSReturnsNotRetainedAttr::~NSReturnsNotRetainedAttr()"}, + {"_ZN5clang24NSReturnsNotRetainedAttrD0Ev", "clang::NSReturnsNotRetainedAttr::~NSReturnsNotRetainedAttr()"}, + {"_ZN5clang21NSReturnsRetainedAttrD1Ev", "clang::NSReturnsRetainedAttr::~NSReturnsRetainedAttr()"}, + {"_ZN5clang21NSReturnsRetainedAttrD0Ev", "clang::NSReturnsRetainedAttr::~NSReturnsRetainedAttr()"}, + {"_ZN5clang9NakedAttrD1Ev", "clang::NakedAttr::~NakedAttr()"}, + {"_ZN5clang9NakedAttrD0Ev", "clang::NakedAttr::~NakedAttr()"}, + {"_ZN5clang12NoCommonAttrD1Ev", "clang::NoCommonAttr::~NoCommonAttr()"}, + {"_ZN5clang12NoCommonAttrD0Ev", "clang::NoCommonAttr::~NoCommonAttr()"}, + {"_ZN5clang11NoDebugAttrD1Ev", "clang::NoDebugAttr::~NoDebugAttr()"}, + {"_ZN5clang11NoDebugAttrD0Ev", "clang::NoDebugAttr::~NoDebugAttr()"}, + {"_ZN5clang12NoInlineAttrD1Ev", "clang::NoInlineAttr::~NoInlineAttr()"}, + {"_ZN5clang12NoInlineAttrD0Ev", "clang::NoInlineAttr::~NoInlineAttr()"}, + {"_ZN5clang24NoInstrumentFunctionAttrD1Ev", "clang::NoInstrumentFunctionAttr::~NoInstrumentFunctionAttr()"}, + {"_ZN5clang24NoInstrumentFunctionAttrD0Ev", "clang::NoInstrumentFunctionAttr::~NoInstrumentFunctionAttr()"}, + {"_ZN5clang12NoReturnAttrD1Ev", "clang::NoReturnAttr::~NoReturnAttr()"}, + {"_ZN5clang12NoReturnAttrD0Ev", "clang::NoReturnAttr::~NoReturnAttr()"}, + {"_ZN5clang11NoThrowAttrD1Ev", "clang::NoThrowAttr::~NoThrowAttr()"}, + {"_ZN5clang11NoThrowAttrD0Ev", "clang::NoThrowAttr::~NoThrowAttr()"}, + {"_ZN5clang11NonNullAttrD1Ev", "clang::NonNullAttr::~NonNullAttr()"}, + {"_ZN5clang11NonNullAttrD0Ev", "clang::NonNullAttr::~NonNullAttr()"}, + {"_ZN5clang17ObjCExceptionAttrD1Ev", "clang::ObjCExceptionAttr::~ObjCExceptionAttr()"}, + {"_ZN5clang17ObjCExceptionAttrD0Ev", "clang::ObjCExceptionAttr::~ObjCExceptionAttr()"}, + {"_ZN5clang16ObjCNSObjectAttrD1Ev", "clang::ObjCNSObjectAttr::~ObjCNSObjectAttr()"}, + {"_ZN5clang16ObjCNSObjectAttrD0Ev", "clang::ObjCNSObjectAttr::~ObjCNSObjectAttr()"}, + {"_ZN5clang16OverloadableAttrD1Ev", "clang::OverloadableAttr::~OverloadableAttr()"}, + {"_ZN5clang16OverloadableAttrD0Ev", "clang::OverloadableAttr::~OverloadableAttr()"}, + {"_ZN5clang12OverrideAttrD1Ev", "clang::OverrideAttr::~OverrideAttr()"}, + {"_ZN5clang12OverrideAttrD0Ev", "clang::OverrideAttr::~OverrideAttr()"}, + {"_ZN5clang13OwnershipAttrD1Ev", "clang::OwnershipAttr::~OwnershipAttr()"}, + {"_ZN5clang13OwnershipAttrD0Ev", "clang::OwnershipAttr::~OwnershipAttr()"}, + {"_ZN5clang10PackedAttrD1Ev", "clang::PackedAttr::~PackedAttr()"}, + {"_ZN5clang10PackedAttrD0Ev", "clang::PackedAttr::~PackedAttr()"}, + {"_ZN5clang10PascalAttrD1Ev", "clang::PascalAttr::~PascalAttr()"}, + {"_ZN5clang10PascalAttrD0Ev", "clang::PascalAttr::~PascalAttr()"}, + {"_ZN5clang8PureAttrD1Ev", "clang::PureAttr::~PureAttr()"}, + {"_ZN5clang8PureAttrD0Ev", "clang::PureAttr::~PureAttr()"}, + {"_ZN5clang11RegparmAttrD1Ev", "clang::RegparmAttr::~RegparmAttr()"}, + {"_ZN5clang11RegparmAttrD0Ev", "clang::RegparmAttr::~RegparmAttr()"}, + {"_ZN5clang21ReqdWorkGroupSizeAttrD1Ev", "clang::ReqdWorkGroupSizeAttr::~ReqdWorkGroupSizeAttr()"}, + {"_ZN5clang21ReqdWorkGroupSizeAttrD0Ev", "clang::ReqdWorkGroupSizeAttr::~ReqdWorkGroupSizeAttr()"}, + {"_ZN5clang11SectionAttrD1Ev", "clang::SectionAttr::~SectionAttr()"}, + {"_ZN5clang11SectionAttrD0Ev", "clang::SectionAttr::~SectionAttr()"}, + {"_ZN5clang12SentinelAttrD1Ev", "clang::SentinelAttr::~SentinelAttr()"}, + {"_ZN5clang12SentinelAttrD0Ev", "clang::SentinelAttr::~SentinelAttr()"}, + {"_ZN5clang11StdCallAttrD1Ev", "clang::StdCallAttr::~StdCallAttr()"}, + {"_ZN5clang11StdCallAttrD0Ev", "clang::StdCallAttr::~StdCallAttr()"}, + {"_ZN5clang12ThisCallAttrD1Ev", "clang::ThisCallAttr::~ThisCallAttr()"}, + {"_ZN5clang12ThisCallAttrD0Ev", "clang::ThisCallAttr::~ThisCallAttr()"}, + {"_ZN5clang20TransparentUnionAttrD1Ev", "clang::TransparentUnionAttr::~TransparentUnionAttr()"}, + {"_ZN5clang20TransparentUnionAttrD0Ev", "clang::TransparentUnionAttr::~TransparentUnionAttr()"}, + {"_ZN5clang15UnavailableAttrD1Ev", "clang::UnavailableAttr::~UnavailableAttr()"}, + {"_ZN5clang15UnavailableAttrD0Ev", "clang::UnavailableAttr::~UnavailableAttr()"}, + {"_ZN5clang10UnusedAttrD1Ev", "clang::UnusedAttr::~UnusedAttr()"}, + {"_ZN5clang10UnusedAttrD0Ev", "clang::UnusedAttr::~UnusedAttr()"}, + {"_ZN5clang8UsedAttrD1Ev", "clang::UsedAttr::~UsedAttr()"}, + {"_ZN5clang8UsedAttrD0Ev", "clang::UsedAttr::~UsedAttr()"}, + {"_ZN5clang8UuidAttrD1Ev", "clang::UuidAttr::~UuidAttr()"}, + {"_ZN5clang8UuidAttrD0Ev", "clang::UuidAttr::~UuidAttr()"}, + {"_ZN5clang13VecReturnAttrD1Ev", "clang::VecReturnAttr::~VecReturnAttr()"}, + {"_ZN5clang13VecReturnAttrD0Ev", "clang::VecReturnAttr::~VecReturnAttr()"}, + {"_ZN5clang14VisibilityAttrD1Ev", "clang::VisibilityAttr::~VisibilityAttr()"}, + {"_ZN5clang14VisibilityAttrD0Ev", "clang::VisibilityAttr::~VisibilityAttr()"}, + {"_ZN5clang20WarnUnusedResultAttrD1Ev", "clang::WarnUnusedResultAttr::~WarnUnusedResultAttr()"}, + {"_ZN5clang20WarnUnusedResultAttrD0Ev", "clang::WarnUnusedResultAttr::~WarnUnusedResultAttr()"}, + {"_ZN5clang8WeakAttrD1Ev", "clang::WeakAttr::~WeakAttr()"}, + {"_ZN5clang8WeakAttrD0Ev", "clang::WeakAttr::~WeakAttr()"}, + {"_ZN5clang14WeakImportAttrD1Ev", "clang::WeakImportAttr::~WeakImportAttr()"}, + {"_ZN5clang14WeakImportAttrD0Ev", "clang::WeakImportAttr::~WeakImportAttr()"}, + {"_ZN5clang11WeakRefAttrD1Ev", "clang::WeakRefAttr::~WeakRefAttr()"}, + {"_ZN5clang11WeakRefAttrD0Ev", "clang::WeakRefAttr::~WeakRefAttr()"}, + {"_ZN5clang27X86ForceAlignArgPointerAttrD1Ev", "clang::X86ForceAlignArgPointerAttr::~X86ForceAlignArgPointerAttr()"}, + {"_ZN5clang27X86ForceAlignArgPointerAttrD0Ev", "clang::X86ForceAlignArgPointerAttr::~X86ForceAlignArgPointerAttr()"}, + {"_ZN5clang12CXXBasePaths17ComputeDeclsFoundEv", "clang::CXXBasePaths::ComputeDeclsFound()"}, + {"_ZN5clang12CXXBasePaths17found_decls_beginEv", "clang::CXXBasePaths::found_decls_begin()"}, + {"_ZN5clang12CXXBasePaths15found_decls_endEv", "clang::CXXBasePaths::found_decls_end()"}, + {"_ZN5clang12CXXBasePaths11isAmbiguousENS_7CanQualINS_4TypeEEE", "clang::CXXBasePaths::isAmbiguous(clang::CanQual)"}, + {"_ZN5clang12CXXBasePaths5clearEv", "clang::CXXBasePaths::clear()"}, + {"_ZN5clang12CXXBasePaths4swapERS0_", "clang::CXXBasePaths::swap(clang::CXXBasePaths&)"}, + {"_ZNK5clang13CXXRecordDecl13isDerivedFromEPKS0_", "clang::CXXRecordDecl::isDerivedFrom(clang::CXXRecordDecl const*) const"}, + {"_ZNK5clang13CXXRecordDecl13isDerivedFromEPKS0_RNS_12CXXBasePathsE", "clang::CXXRecordDecl::isDerivedFrom(clang::CXXRecordDecl const*, clang::CXXBasePaths&) const"}, + + // {"_ZNK5clang13CXXRecordDecl13lookupInBasesEPFbPKNS_16CXXBaseSpecifierERNS_11CXXBasePathEPvES6_RNS_12CXXBasePathsE", + // "clang::CXXRecordDecl::lookupInBases(bool (*)(clang::CXXBaseSpecifier const*, clang::CXXBasePath&, void*), void*, clang::CXXBasePaths&) const"}, + // "clang::CXXRecordDecl::lookupInBases(bool (*)(clang::CXXBaseSpecifier*, clang::CXXBasePath&, void*), bool (*)(clang::CXXBaseSpecifier*, clang::CXXBasePath&, void*), clang::CXXBasePaths&) const" was returned + + {"_ZN5clang13CXXRecordDecl13FindBaseClassEPKNS_16CXXBaseSpecifierERNS_11CXXBasePathEPv", "clang::CXXRecordDecl::FindBaseClass(clang::CXXBaseSpecifier const*, clang::CXXBasePath&, void*)"}, + {"_ZNK5clang13CXXRecordDecl22isVirtuallyDerivedFromEPS0_", "clang::CXXRecordDecl::isVirtuallyDerivedFrom(clang::CXXRecordDecl*) const"}, + {"_ZN5clang13CXXRecordDecl20FindVirtualBaseClassEPKNS_16CXXBaseSpecifierERNS_11CXXBasePathEPv", "clang::CXXRecordDecl::FindVirtualBaseClass(clang::CXXBaseSpecifier const*, clang::CXXBasePath&, void*)"}, + {"_ZNK5clang13CXXRecordDecl24isProvablyNotDerivedFromEPKS0_", "clang::CXXRecordDecl::isProvablyNotDerivedFrom(clang::CXXRecordDecl const*) const"}, + + // {"_ZNK5clang13CXXRecordDecl11forallBasesEPFbPKS0_PvES3_b", + // "clang::CXXRecordDecl::forallBases(bool (*)(clang::CXXRecordDecl const*, void*), void*, bool) const"}, + // "clang::CXXRecordDecl::forallBases(bool (*)(clang::CXXRecordDecl*, void*), bool (*)(clang::CXXRecordDecl*, void*), bool) const" was returned + + {"_Z9BaseIsNotPKN5clang13CXXRecordDeclEPv", "BaseIsNot(clang::CXXRecordDecl const*, void*)"}, + + // {"_ZN5clang12CXXBasePaths13lookupInBasesERNS_10ASTContextEPKNS_13CXXRecordDeclEPFbPKNS_16CXXBaseSpecifierERNS_11CXXBasePathEPvESB_", + // "clang::CXXBasePaths::lookupInBases(clang::ASTContext&, clang::CXXRecordDecl const*, bool (*)(clang::CXXBaseSpecifier const*, clang::CXXBasePath&, void*), void*)"}, + // got error + + {"_ZN5clang13CXXRecordDecl13FindTagMemberEPKNS_16CXXBaseSpecifierERNS_11CXXBasePathEPv", "clang::CXXRecordDecl::FindTagMember(clang::CXXBaseSpecifier const*, clang::CXXBasePath&, void*)"}, + {"_ZN5clang13CXXRecordDecl18FindOrdinaryMemberEPKNS_16CXXBaseSpecifierERNS_11CXXBasePathEPv", "clang::CXXRecordDecl::FindOrdinaryMember(clang::CXXBaseSpecifier const*, clang::CXXBasePath&, void*)"}, + {"_ZN5clang13CXXRecordDecl29FindNestedNameSpecifierMemberEPKNS_16CXXBaseSpecifierERNS_11CXXBasePathEPv", "clang::CXXRecordDecl::FindNestedNameSpecifierMember(clang::CXXBaseSpecifier const*, clang::CXXBasePath&, void*)"}, + {"_ZN5clang17OverridingMethods3addEjNS_19UniqueVirtualMethodE", "clang::OverridingMethods::add(unsigned int, clang::UniqueVirtualMethod)"}, + {"_ZN5clang17OverridingMethods3addERKS0_", "clang::OverridingMethods::add(clang::OverridingMethods const&)"}, + {"_ZN5clang17OverridingMethods10replaceAllENS_19UniqueVirtualMethodE", "clang::OverridingMethods::replaceAll(clang::UniqueVirtualMethod)"}, + {"_ZNK5clang13CXXRecordDecl18getFinalOverridersERNS_20CXXFinalOverriderMapE", "clang::CXXRecordDecl::getFinalOverriders(clang::CXXFinalOverriderMap&) const"}, + {"_ZN12_GLOBAL__N_123FinalOverriderCollector7CollectEPKN5clang13CXXRecordDeclEbS4_RNS1_20CXXFinalOverriderMapE", "(anonymous namespace)::FinalOverriderCollector::Collect(clang::CXXRecordDecl const*, bool, clang::CXXRecordDecl const*, clang::CXXFinalOverriderMap&)"}, + {"_ZNK5clang13CXXRecordDecl23getIndirectPrimaryBasesERNS_25CXXIndirectPrimaryBaseSetE", "clang::CXXRecordDecl::getIndirectPrimaryBases(clang::CXXIndirectPrimaryBaseSet&) const"}, + {"_Z23AddIndirectPrimaryBasesPKN5clang13CXXRecordDeclERNS_10ASTContextERNS_25CXXIndirectPrimaryBaseSetE", "AddIndirectPrimaryBases(clang::CXXRecordDecl const*, clang::ASTContext&, clang::CXXIndirectPrimaryBaseSet&)"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang19UniqueVirtualMethodELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + + // {"_ZSt6__findIPN5clang19UniqueVirtualMethodES1_ET_S3_S3_RKT0_St26random_access_iterator_tag", + // "clang::UniqueVirtualMethod* std::__find(clang::UniqueVirtualMethod*, clang::UniqueVirtualMethod*, clang::UniqueVirtualMethod const&, std::random_access_iterator_tag)"}, + // got error + + + // {"_ZN4llvm8DenseMapIjNS_11SmallVectorIN5clang19UniqueVirtualMethodELj4EEENS_12DenseMapInfoIjEENS5_IS4_EEE16FindAndConstructERKj", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::FindAndConstruct(unsigned int const&)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::FindAndConstruct(unsigned int const&)" was returned + + + // {"_ZN4llvm8DenseMapIjNS_11SmallVectorIN5clang19UniqueVirtualMethodELj4EEENS_12DenseMapInfoIjEENS5_IS4_EEE16InsertIntoBucketERKjRKS4_PSt4pairIjS4_E", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(unsigned int const&, llvm::SmallVector const&, std::pair>*)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(unsigned int const&, llvm::SmallVector const&, std::pair>*)" was returned + + + // {"_ZN4llvm8DenseMapIjNS_11SmallVectorIN5clang19UniqueVirtualMethodELj4EEENS_12DenseMapInfoIjEENS5_IS4_EEE4growEj", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)" was returned + + {"_ZN4llvm15SmallVectorImplIN5clang19UniqueVirtualMethodEEaSERKS3_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + {"_ZN4llvm15SmallVectorImplIN5clang18CXXBasePathElementEEaSERKS3_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang18CXXBasePathElementELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZNSt8_Rb_treeIN5clang8QualTypeESt4pairIKS1_S2_IbjEESt10_Select1stIS5_ENS0_16QualTypeOrderingESaIS5_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS5_ERKS5_", "std::_Rb_tree>, std::_Select1st>>, clang::QualTypeOrdering, std::allocator>>>::_M_insert_unique(std::_Rb_tree_iterator>>, std::pair> const&)"}, + {"_ZNSt8_Rb_treeIN5clang8QualTypeESt4pairIKS1_S2_IbjEESt10_Select1stIS5_ENS0_16QualTypeOrderingESaIS5_EE16_M_insert_uniqueERKS5_", "std::_Rb_tree>, std::_Select1st>>, clang::QualTypeOrdering, std::allocator>>>::_M_insert_unique(std::pair> const&)"}, + {"_ZNSt8_Rb_treeIPN5clang9NamedDeclES2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE16_M_insert_uniqueERKS2_", "std::_Rb_tree, std::less, std::allocator>::_M_insert_unique(clang::NamedDecl* const&)"}, + {"_ZN4llvm8DenseMapIPKN5clang13CXXMethodDeclENS1_17OverridingMethodsENS_12DenseMapInfoIS4_EENS6_IS5_EEE16FindAndConstructERKS4_", "llvm::DenseMap, llvm::DenseMapInfo>::FindAndConstruct(clang::CXXMethodDecl const* const&)"}, + {"_ZN4llvm8DenseMapIPKN5clang13CXXMethodDeclENS1_17OverridingMethodsENS_12DenseMapInfoIS4_EENS6_IS5_EEE16InsertIntoBucketERKS4_RKS5_PSt4pairIS4_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::CXXMethodDecl const* const&, clang::OverridingMethods const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang13CXXMethodDeclENS1_17OverridingMethodsENS_12DenseMapInfoIS4_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + + // {"_ZN4llvm8DenseMapIjNS_11SmallVectorIN5clang19UniqueVirtualMethodELj4EEENS_12DenseMapInfoIjEENS5_IS4_EEE8CopyFromERKS8_", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::CopyFrom(llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>> const&)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::CopyFrom(llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>> const&)" was returned + + {"_ZN4llvm8DenseMapIPKN5clang13CXXRecordDeclEPNS1_20CXXFinalOverriderMapENS_12DenseMapInfoIS4_EENS7_IS6_EEE16InsertIntoBucketERKS4_RKS6_PSt4pairIS4_S6_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::CXXRecordDecl const* const&, clang::CXXFinalOverriderMap* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang13CXXRecordDeclEPNS1_20CXXFinalOverriderMapENS_12DenseMapInfoIS4_EENS7_IS6_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKN5clang13CXXRecordDeclEjNS_12DenseMapInfoIS4_EENS5_IjEEE16InsertIntoBucketERKS4_RKjPSt4pairIS4_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::CXXRecordDecl const* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang13CXXRecordDeclEjNS_12DenseMapInfoIS4_EENS5_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNSt8_Rb_treeIPN5clang9NamedDeclES2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE8_M_eraseEPSt13_Rb_tree_nodeIS2_E", "std::_Rb_tree, std::less, std::allocator>::_M_erase(std::_Rb_tree_node*)"}, + {"_ZN5clang9NamedDecl17ClearLinkageCacheEv", "clang::NamedDecl::ClearLinkageCache()"}, + {"_ZNK5clang9NamedDecl10getLinkageEv", "clang::NamedDecl::getLinkage() const"}, + {"_Z12getLVForDeclPKN5clang9NamedDeclEN12_GLOBAL__N_17LVFlagsE", "getLVForDecl(clang::NamedDecl const*, (anonymous namespace)::LVFlags)"}, + {"_ZNK5clang9NamedDecl23getLinkageAndVisibilityEv", "clang::NamedDecl::getLinkageAndVisibility() const"}, + {"_ZNK5clang9NamedDecl24getQualifiedNameAsStringEv", "clang::NamedDecl::getQualifiedNameAsString() const"}, + {"_ZNK5clang9NamedDecl24getQualifiedNameAsStringERKNS_14PrintingPolicyE", "clang::NamedDecl::getQualifiedNameAsString(clang::PrintingPolicy const&) const"}, + {"_ZNK5clang12FunctionDecl12getNumParamsEv", "clang::FunctionDecl::getNumParams() const"}, + {"_ZNK5clang9NamedDecl19declarationReplacesEPS0_", "clang::NamedDecl::declarationReplaces(clang::NamedDecl*) const"}, + {"_ZNK5clang9NamedDecl10hasLinkageEv", "clang::NamedDecl::hasLinkage() const"}, + {"_ZN5clang9NamedDecl17getUnderlyingDeclEv", "clang::NamedDecl::getUnderlyingDecl()"}, + {"_ZNK5clang9NamedDecl19isCXXInstanceMemberEv", "clang::NamedDecl::isCXXInstanceMember() const"}, + {"_ZNK5clang14DeclaratorDecl19getTypeSpecStartLocEv", "clang::DeclaratorDecl::getTypeSpecStartLoc() const"}, + {"_ZN5clang14DeclaratorDecl16setQualifierInfoEPNS_19NestedNameSpecifierENS_11SourceRangeE", "clang::DeclaratorDecl::setQualifierInfo(clang::NestedNameSpecifier*, clang::SourceRange)"}, + {"_ZNK5clang14DeclaratorDecl16getOuterLocStartEv", "clang::DeclaratorDecl::getOuterLocStart() const"}, + {"_ZN5clang13QualifierInfo29setTemplateParameterListsInfoERNS_10ASTContextEjPPNS_21TemplateParameterListE", "clang::QualifierInfo::setTemplateParameterListsInfo(clang::ASTContext&, unsigned int, clang::TemplateParameterList**)"}, + {"_ZN5clang7VarDecl30getStorageClassSpecifierStringENS_12StorageClassE", "clang::VarDecl::getStorageClassSpecifierString(clang::StorageClass)"}, + {"_ZN5clang7VarDecl6CreateERNS_10ASTContextEPNS_11DeclContextENS_14SourceLocationEPNS_14IdentifierInfoENS_8QualTypeEPNS_14TypeSourceInfoENS_12StorageClassESB_", "clang::VarDecl::Create(clang::ASTContext&, clang::DeclContext*, clang::SourceLocation, clang::IdentifierInfo*, clang::QualType, clang::TypeSourceInfo*, clang::StorageClass, clang::StorageClass)"}, + {"_ZN5clang7VarDecl15setStorageClassENS_12StorageClassE", "clang::VarDecl::setStorageClass(clang::StorageClass)"}, + {"_ZNK5clang7VarDecl16getInnerLocStartEv", "clang::VarDecl::getInnerLocStart() const"}, + {"_ZNK5clang7VarDecl14getSourceRangeEv", "clang::VarDecl::getSourceRange() const"}, + {"_ZNK5clang7VarDecl9isExternCEv", "clang::VarDecl::isExternC() const"}, + {"_ZN5clang7VarDecl16getCanonicalDeclEv", "clang::VarDecl::getCanonicalDecl()"}, + {"_ZNK5clang7VarDecl28isThisDeclarationADefinitionEv", "clang::VarDecl::isThisDeclarationADefinition() const"}, + {"_ZNK5clang7VarDecl29getTemplateSpecializationKindEv", "clang::VarDecl::getTemplateSpecializationKind() const"}, + {"_ZN5clang7VarDecl19getActingDefinitionEv", "clang::VarDecl::getActingDefinition()"}, + {"_ZNK5clang7VarDecl24isTentativeDefinitionNowEv", "clang::VarDecl::isTentativeDefinitionNow() const"}, + {"_ZN5clang7VarDecl13getDefinitionEv", "clang::VarDecl::getDefinition()"}, + {"_ZNK5clang7VarDecl13hasDefinitionEv", "clang::VarDecl::hasDefinition() const"}, + {"_ZNK5clang7VarDecl17getAnyInitializerERPKS0_", "clang::VarDecl::getAnyInitializer(clang::VarDecl const*&) const"}, + {"_ZNK5clang7VarDecl11isOutOfLineEv", "clang::VarDecl::isOutOfLine() const"}, + {"_ZNK5clang7VarDecl35getInstantiatedFromStaticDataMemberEv", "clang::VarDecl::getInstantiatedFromStaticDataMember() const"}, + {"_ZN5clang7VarDecl22getOutOfLineDefinitionEv", "clang::VarDecl::getOutOfLineDefinition()"}, + {"_ZN5clang7VarDecl7setInitEPNS_4ExprE", "clang::VarDecl::setInit(clang::Expr*)"}, + {"_ZNK5clang7VarDecl27getMemberSpecializationInfoEv", "clang::VarDecl::getMemberSpecializationInfo() const"}, + {"_ZN5clang7VarDecl29setTemplateSpecializationKindENS_26TemplateSpecializationKindENS_14SourceLocationE", "clang::VarDecl::setTemplateSpecializationKind(clang::TemplateSpecializationKind, clang::SourceLocation)"}, + {"_ZN5clang11ParmVarDecl6CreateERNS_10ASTContextEPNS_11DeclContextENS_14SourceLocationEPNS_14IdentifierInfoENS_8QualTypeEPNS_14TypeSourceInfoENS_12StorageClassESB_PNS_4ExprE", "clang::ParmVarDecl::Create(clang::ASTContext&, clang::DeclContext*, clang::SourceLocation, clang::IdentifierInfo*, clang::QualType, clang::TypeSourceInfo*, clang::StorageClass, clang::StorageClass, clang::Expr*)"}, + {"_ZN5clang11ParmVarDecl13getDefaultArgEv", "clang::ParmVarDecl::getDefaultArg()"}, + {"_ZNK5clang11ParmVarDecl27getNumDefaultArgTemporariesEv", "clang::ParmVarDecl::getNumDefaultArgTemporaries() const"}, + {"_ZN5clang11ParmVarDecl22getDefaultArgTemporaryEj", "clang::ParmVarDecl::getDefaultArgTemporary(unsigned int)"}, + {"_ZNK5clang11ParmVarDecl18getDefaultArgRangeEv", "clang::ParmVarDecl::getDefaultArgRange() const"}, + {"_ZNK5clang11ParmVarDecl15isParameterPackEv", "clang::ParmVarDecl::isParameterPack() const"}, + {"_ZNK5clang12FunctionDecl20getNameForDiagnosticERSsRKNS_14PrintingPolicyEb", "clang::FunctionDecl::getNameForDiagnostic(std::string&, clang::PrintingPolicy const&, bool) const"}, + {"_ZNK5clang12FunctionDecl29getTemplateSpecializationArgsEv", "clang::FunctionDecl::getTemplateSpecializationArgs() const"}, + {"_ZNK5clang12FunctionDecl10isVariadicEv", "clang::FunctionDecl::isVariadic() const"}, + {"_ZNK5clang12FunctionDecl7hasBodyERPKS0_", "clang::FunctionDecl::hasBody(clang::FunctionDecl const*&) const"}, + {"_ZNK5clang12FunctionDecl7getBodyERPKS0_", "clang::FunctionDecl::getBody(clang::FunctionDecl const*&) const"}, + {"_ZN5clang12FunctionDecl7setBodyEPNS_4StmtE", "clang::FunctionDecl::setBody(clang::Stmt*)"}, + {"_ZN5clang12FunctionDecl7setPureEb", "clang::FunctionDecl::setPure(bool)"}, + {"_ZNK5clang12FunctionDecl6isMainEv", "clang::FunctionDecl::isMain() const"}, + {"_ZNK5clang12FunctionDecl9isExternCEv", "clang::FunctionDecl::isExternC() const"}, + {"_ZNK5clang12FunctionDecl8isGlobalEv", "clang::FunctionDecl::isGlobal() const"}, + {"_ZN5clang12FunctionDecl22setPreviousDeclarationEPS0_", "clang::FunctionDecl::setPreviousDeclaration(clang::FunctionDecl*)"}, + {"_ZNK5clang12FunctionDecl16getCanonicalDeclEv", "clang::FunctionDecl::getCanonicalDecl() const"}, + {"_ZN5clang12FunctionDecl16getCanonicalDeclEv", "clang::FunctionDecl::getCanonicalDecl()"}, + {"_ZN5clang12FunctionDecl15setStorageClassENS_12StorageClassE", "clang::FunctionDecl::setStorageClass(clang::StorageClass)"}, + {"_ZNK5clang12FunctionDecl12getBuiltinIDEv", "clang::FunctionDecl::getBuiltinID() const"}, + {"_ZN5clang12FunctionDecl9setParamsERNS_10ASTContextEPPNS_11ParmVarDeclEj", "clang::FunctionDecl::setParams(clang::ASTContext&, clang::ParmVarDecl**, unsigned int)"}, + {"_ZNK5clang12FunctionDecl23getMinRequiredArgumentsEv", "clang::FunctionDecl::getMinRequiredArguments() const"}, + {"_ZNK5clang12FunctionDecl9isInlinedEv", "clang::FunctionDecl::isInlined() const"}, + {"_ZNK5clang12FunctionDecl29getTemplateSpecializationKindEv", "clang::FunctionDecl::getTemplateSpecializationKind() const"}, + {"_ZNK5clang12FunctionDecl31getTemplateInstantiationPatternEv", "clang::FunctionDecl::getTemplateInstantiationPattern() const"}, + {"_ZNK5clang12FunctionDecl35isInlineDefinitionExternallyVisibleEv", "clang::FunctionDecl::isInlineDefinitionExternallyVisible() const"}, + {"_ZNK5clang12FunctionDecl21getOverloadedOperatorEv", "clang::FunctionDecl::getOverloadedOperator() const"}, + {"_ZNK5clang12FunctionDecl20getLiteralIdentifierEv", "clang::FunctionDecl::getLiteralIdentifier() const"}, + {"_ZNK5clang12FunctionDecl16getTemplatedKindEv", "clang::FunctionDecl::getTemplatedKind() const"}, + {"_ZNK5clang12FunctionDecl33getInstantiatedFromMemberFunctionEv", "clang::FunctionDecl::getInstantiatedFromMemberFunction() const"}, + {"_ZNK5clang12FunctionDecl27getMemberSpecializationInfoEv", "clang::FunctionDecl::getMemberSpecializationInfo() const"}, + {"_ZN5clang12FunctionDecl32setInstantiationOfMemberFunctionERNS_10ASTContextEPS0_NS_26TemplateSpecializationKindE", "clang::FunctionDecl::setInstantiationOfMemberFunction(clang::ASTContext&, clang::FunctionDecl*, clang::TemplateSpecializationKind)"}, + {"_ZNK5clang12FunctionDecl24isImplicitlyInstantiableEv", "clang::FunctionDecl::isImplicitlyInstantiable() const"}, + {"_ZNK5clang12FunctionDecl18getPrimaryTemplateEv", "clang::FunctionDecl::getPrimaryTemplate() const"}, + {"_ZNK5clang12FunctionDecl38getTemplateSpecializationArgsAsWrittenEv", "clang::FunctionDecl::getTemplateSpecializationArgsAsWritten() const"}, + {"_ZN5clang12FunctionDecl33setFunctionTemplateSpecializationERNS_10ASTContextEPNS_20FunctionTemplateDeclEPKNS_20TemplateArgumentListEPvNS_26TemplateSpecializationKindEPKNS_24TemplateArgumentListInfoENS_14SourceLocationE", "clang::FunctionDecl::setFunctionTemplateSpecialization(clang::ASTContext&, clang::FunctionTemplateDecl*, clang::TemplateArgumentList const*, void*, clang::TemplateSpecializationKind, clang::TemplateArgumentListInfo const*, clang::SourceLocation)"}, + {"_ZN5clang12FunctionDecl34setDependentTemplateSpecializationERNS_10ASTContextERKNS_17UnresolvedSetImplERKNS_24TemplateArgumentListInfoE", "clang::FunctionDecl::setDependentTemplateSpecialization(clang::ASTContext&, clang::UnresolvedSetImpl const&, clang::TemplateArgumentListInfo const&)"}, + {"_ZN5clang43DependentFunctionTemplateSpecializationInfoC1ERKNS_17UnresolvedSetImplERKNS_24TemplateArgumentListInfoE", "clang::DependentFunctionTemplateSpecializationInfo::DependentFunctionTemplateSpecializationInfo(clang::UnresolvedSetImpl const&, clang::TemplateArgumentListInfo const&)"}, + {"_ZN5clang43DependentFunctionTemplateSpecializationInfoC2ERKNS_17UnresolvedSetImplERKNS_24TemplateArgumentListInfoE", "clang::DependentFunctionTemplateSpecializationInfo::DependentFunctionTemplateSpecializationInfo(clang::UnresolvedSetImpl const&, clang::TemplateArgumentListInfo const&)"}, + {"_ZN5clang12FunctionDecl29setTemplateSpecializationKindENS_26TemplateSpecializationKindENS_14SourceLocationE", "clang::FunctionDecl::setTemplateSpecializationKind(clang::TemplateSpecializationKind, clang::SourceLocation)"}, + {"_ZNK5clang12FunctionDecl23getPointOfInstantiationEv", "clang::FunctionDecl::getPointOfInstantiation() const"}, + {"_ZNK5clang12FunctionDecl11isOutOfLineEv", "clang::FunctionDecl::isOutOfLine() const"}, + {"_ZN5clang9FieldDecl6CreateERKNS_10ASTContextEPNS_11DeclContextENS_14SourceLocationEPNS_14IdentifierInfoENS_8QualTypeEPNS_14TypeSourceInfoEPNS_4ExprEb", "clang::FieldDecl::Create(clang::ASTContext const&, clang::DeclContext*, clang::SourceLocation, clang::IdentifierInfo*, clang::QualType, clang::TypeSourceInfo*, clang::Expr*, bool)"}, + {"_ZNK5clang9FieldDecl24isAnonymousStructOrUnionEv", "clang::FieldDecl::isAnonymousStructOrUnion() const"}, + {"_ZNK5clang9FieldDecl13getFieldIndexEv", "clang::FieldDecl::getFieldIndex() const"}, + {"_ZNK5clang10RecordDecl11field_beginEv", "clang::RecordDecl::field_begin() const"}, + {"_ZNK5clang7TagDecl16getOuterLocStartEv", "clang::TagDecl::getOuterLocStart() const"}, + {"_ZNK5clang7TagDecl14getSourceRangeEv", "clang::TagDecl::getSourceRange() const"}, + {"_ZN5clang7TagDecl16getCanonicalDeclEv", "clang::TagDecl::getCanonicalDecl()"}, + {"_ZN5clang7TagDecl21setTypedefForAnonDeclEPNS_11TypedefDeclE", "clang::TagDecl::setTypedefForAnonDecl(clang::TypedefDecl*)"}, + {"_ZN5clang7TagDecl15startDefinitionEv", "clang::TagDecl::startDefinition()"}, + {"_ZN5clang7TagDecl18completeDefinitionEv", "clang::TagDecl::completeDefinition()"}, + {"_ZNK5clang7TagDecl13getDefinitionEv", "clang::TagDecl::getDefinition() const"}, + {"_ZN5clang7TagDecl16setQualifierInfoEPNS_19NestedNameSpecifierENS_11SourceRangeE", "clang::TagDecl::setQualifierInfo(clang::NestedNameSpecifier*, clang::SourceRange)"}, + {"_ZN5clang8EnumDecl6CreateERNS_10ASTContextEPNS_11DeclContextENS_14SourceLocationEPNS_14IdentifierInfoES5_PS0_bbb", "clang::EnumDecl::Create(clang::ASTContext&, clang::DeclContext*, clang::SourceLocation, clang::IdentifierInfo*, clang::SourceLocation, clang::EnumDecl*, bool, bool, bool)"}, + {"_ZN5clang8EnumDecl6CreateERNS_10ASTContextENS_4Decl10EmptyShellE", "clang::EnumDecl::Create(clang::ASTContext&, clang::Decl::EmptyShell)"}, + {"_ZN5clang8EnumDecl18completeDefinitionENS_8QualTypeES1_jj", "clang::EnumDecl::completeDefinition(clang::QualType, clang::QualType, unsigned int, unsigned int)"}, + {"_ZN5clang10RecordDeclC1ENS_4Decl4KindENS_11TagTypeKindEPNS_11DeclContextENS_14SourceLocationEPNS_14IdentifierInfoEPS0_S6_", "clang::RecordDecl::RecordDecl(clang::Decl::Kind, clang::TagTypeKind, clang::DeclContext*, clang::SourceLocation, clang::IdentifierInfo*, clang::RecordDecl*, clang::SourceLocation)"}, + {"_ZN5clang10RecordDeclC2ENS_4Decl4KindENS_11TagTypeKindEPNS_11DeclContextENS_14SourceLocationEPNS_14IdentifierInfoEPS0_S6_", "clang::RecordDecl::RecordDecl(clang::Decl::Kind, clang::TagTypeKind, clang::DeclContext*, clang::SourceLocation, clang::IdentifierInfo*, clang::RecordDecl*, clang::SourceLocation)"}, + {"_ZN5clang10RecordDecl6CreateERKNS_10ASTContextENS_11TagTypeKindEPNS_11DeclContextENS_14SourceLocationEPNS_14IdentifierInfoES7_PS0_", "clang::RecordDecl::Create(clang::ASTContext const&, clang::TagTypeKind, clang::DeclContext*, clang::SourceLocation, clang::IdentifierInfo*, clang::SourceLocation, clang::RecordDecl*)"}, + {"_ZN5clang10RecordDecl6CreateERKNS_10ASTContextENS_4Decl10EmptyShellE", "clang::RecordDecl::Create(clang::ASTContext const&, clang::Decl::EmptyShell)"}, + {"_ZNK5clang10RecordDecl19isInjectedClassNameEv", "clang::RecordDecl::isInjectedClassName() const"}, + {"_ZNK5clang10RecordDecl29LoadFieldsFromExternalStorageEv", "clang::RecordDecl::LoadFieldsFromExternalStorage() const"}, + {"_ZN5clang10RecordDecl18completeDefinitionEv", "clang::RecordDecl::completeDefinition()"}, + {"_ZN5clang9BlockDecl9setParamsEPPNS_11ParmVarDeclEj", "clang::BlockDecl::setParams(clang::ParmVarDecl**, unsigned int)"}, + {"_ZN5clang9BlockDecl11setCapturesERNS_10ASTContextEPKNS0_7CaptureES5_b", "clang::BlockDecl::setCaptures(clang::ASTContext&, clang::BlockDecl::Capture const*, clang::BlockDecl::Capture const*, bool)"}, + {"_ZNK5clang9BlockDecl14getSourceRangeEv", "clang::BlockDecl::getSourceRange() const"}, + {"_ZN5clang19TranslationUnitDecl6CreateERNS_10ASTContextE", "clang::TranslationUnitDecl::Create(clang::ASTContext&)"}, + {"_ZN5clang13NamespaceDecl6CreateERNS_10ASTContextEPNS_11DeclContextENS_14SourceLocationEPNS_14IdentifierInfoE", "clang::NamespaceDecl::Create(clang::ASTContext&, clang::DeclContext*, clang::SourceLocation, clang::IdentifierInfo*)"}, + {"_ZN5clang13NamespaceDecl16getNextNamespaceEv", "clang::NamespaceDecl::getNextNamespace()"}, + {"_ZN5clang17ImplicitParamDecl6CreateERNS_10ASTContextEPNS_11DeclContextENS_14SourceLocationEPNS_14IdentifierInfoENS_8QualTypeE", "clang::ImplicitParamDecl::Create(clang::ASTContext&, clang::DeclContext*, clang::SourceLocation, clang::IdentifierInfo*, clang::QualType)"}, + {"_ZN5clang12FunctionDecl6CreateERNS_10ASTContextEPNS_11DeclContextERKNS_19DeclarationNameInfoENS_8QualTypeEPNS_14TypeSourceInfoENS_12StorageClassESB_bb", "clang::FunctionDecl::Create(clang::ASTContext&, clang::DeclContext*, clang::DeclarationNameInfo const&, clang::QualType, clang::TypeSourceInfo*, clang::StorageClass, clang::StorageClass, bool, bool)"}, + {"_ZN5clang9BlockDecl6CreateERNS_10ASTContextEPNS_11DeclContextENS_14SourceLocationE", "clang::BlockDecl::Create(clang::ASTContext&, clang::DeclContext*, clang::SourceLocation)"}, + {"_ZN5clang16EnumConstantDecl6CreateERNS_10ASTContextEPNS_8EnumDeclENS_14SourceLocationEPNS_14IdentifierInfoENS_8QualTypeEPNS_4ExprERKN4llvm6APSIntE", "clang::EnumConstantDecl::Create(clang::ASTContext&, clang::EnumDecl*, clang::SourceLocation, clang::IdentifierInfo*, clang::QualType, clang::Expr*, llvm::APSInt const&)"}, + {"_ZN5clang17IndirectFieldDecl6CreateERNS_10ASTContextEPNS_11DeclContextENS_14SourceLocationEPNS_14IdentifierInfoENS_8QualTypeEPPNS_9NamedDeclEj", "clang::IndirectFieldDecl::Create(clang::ASTContext&, clang::DeclContext*, clang::SourceLocation, clang::IdentifierInfo*, clang::QualType, clang::NamedDecl**, unsigned int)"}, + {"_ZNK5clang16EnumConstantDecl14getSourceRangeEv", "clang::EnumConstantDecl::getSourceRange() const"}, + {"_ZN5clang11TypedefDecl6CreateERNS_10ASTContextEPNS_11DeclContextENS_14SourceLocationEPNS_14IdentifierInfoEPNS_14TypeSourceInfoE", "clang::TypedefDecl::Create(clang::ASTContext&, clang::DeclContext*, clang::SourceLocation, clang::IdentifierInfo*, clang::TypeSourceInfo*)"}, + {"_ZN5clang16FileScopeAsmDecl6CreateERNS_10ASTContextEPNS_11DeclContextENS_14SourceLocationEPNS_13StringLiteralE", "clang::FileScopeAsmDecl::Create(clang::ASTContext&, clang::DeclContext*, clang::SourceLocation, clang::StringLiteral*)"}, + {"_Z21GetExplicitVisibilityPKN5clang4DeclE", "GetExplicitVisibility(clang::Decl const*)"}, + {"_Z29getLVForTemplateParameterListPKN5clang21TemplateParameterListE", "getLVForTemplateParameterList(clang::TemplateParameterList const*)"}, + {"_Z28getLVForTemplateArgumentListPKN5clang16TemplateArgumentEjRN12_GLOBAL__N_17LVFlagsE", "getLVForTemplateArgumentList(clang::TemplateArgument const*, unsigned int, (anonymous namespace)::LVFlags&)"}, + {"_ZNK5clang4Decl11isOutOfLineEv", "clang::Decl::isOutOfLine() const"}, + {"_ZNK5clang9NamedDecl20getNameForDiagnosticERSsRKNS_14PrintingPolicyEb", "clang::NamedDecl::getNameForDiagnostic(std::string&, clang::PrintingPolicy const&, bool) const"}, + {"_ZNK5clang4Decl7getAttrINS_16OverloadableAttrEEEPT_v", "clang::OverloadableAttr* clang::Decl::getAttr() const"}, + {"_ZN5clang12RedeclarableINS_12FunctionDeclEE22setPreviousDeclarationEPS1_", "clang::Redeclarable::setPreviousDeclaration(clang::FunctionDecl*)"}, + {"_ZN5clang7TagDeclC2ENS_4Decl4KindENS_11TagTypeKindEPNS_11DeclContextENS_14SourceLocationEPNS_14IdentifierInfoEPS0_S6_", "clang::TagDecl::TagDecl(clang::Decl::Kind, clang::TagTypeKind, clang::DeclContext*, clang::SourceLocation, clang::IdentifierInfo*, clang::TagDecl*, clang::SourceLocation)"}, + {"_ZN5clang7VarDeclD1Ev", "clang::VarDecl::~VarDecl()"}, + {"_ZN5clang7VarDeclD0Ev", "clang::VarDecl::~VarDecl()"}, + {"_ZN5clang7VarDecl20getNextRedeclarationEv", "clang::VarDecl::getNextRedeclaration()"}, + {"_ZNK5clang4Decl7getBodyEv", "clang::Decl::getBody() const"}, + {"_ZNK5clang4Decl7hasBodyEv", "clang::Decl::hasBody() const"}, + {"_ZN5clang12FunctionDeclD1Ev", "clang::FunctionDecl::~FunctionDecl()"}, + {"_ZN5clang12FunctionDeclD0Ev", "clang::FunctionDecl::~FunctionDecl()"}, + {"_ZNK5clang12FunctionDecl14getSourceRangeEv", "clang::FunctionDecl::getSourceRange() const"}, + {"_ZN5clang12FunctionDecl20getNextRedeclarationEv", "clang::FunctionDecl::getNextRedeclaration()"}, + {"_ZNK5clang12FunctionDecl7getBodyEv", "clang::FunctionDecl::getBody() const"}, + {"_ZNK5clang12FunctionDecl7hasBodyEv", "clang::FunctionDecl::hasBody() const"}, + {"_ZNK5clang14DeclaratorDecl16getInnerLocStartEv", "clang::DeclaratorDecl::getInnerLocStart() const"}, + {"_ZN5clang16EnumConstantDeclD1Ev", "clang::EnumConstantDecl::~EnumConstantDecl()"}, + {"_ZN5clang16EnumConstantDeclD0Ev", "clang::EnumConstantDecl::~EnumConstantDecl()"}, + {"_ZN5clang4Decl16getCanonicalDeclEv", "clang::Decl::getCanonicalDecl()"}, + {"_ZN5clang4Decl20getNextRedeclarationEv", "clang::Decl::getNextRedeclaration()"}, + {"_ZN5clang7TagDeclD1Ev", "clang::TagDecl::~TagDecl()"}, + {"_ZN5clang7TagDeclD0Ev", "clang::TagDecl::~TagDecl()"}, + {"_ZN5clang7TagDecl20getNextRedeclarationEv", "clang::TagDecl::getNextRedeclaration()"}, + {"_ZNK5clang7TagDecl16getInnerLocStartEv", "clang::TagDecl::getInnerLocStart() const"}, + {"_ZN5clang9BlockDeclD1Ev", "clang::BlockDecl::~BlockDecl()"}, + {"_ZN5clang9BlockDeclD0Ev", "clang::BlockDecl::~BlockDecl()"}, + {"_ZNK5clang9BlockDecl7getBodyEv", "clang::BlockDecl::getBody() const"}, + {"_ZN5clang10RecordDeclD1Ev", "clang::RecordDecl::~RecordDecl()"}, + {"_ZN5clang10RecordDeclD0Ev", "clang::RecordDecl::~RecordDecl()"}, + {"_ZN5clang9FieldDecl11classofKindENS_4Decl4KindE", "clang::FieldDecl::classofKind(clang::Decl::Kind)"}, + {"_ZN5clang8TypeDeclD1Ev", "clang::TypeDecl::~TypeDecl()"}, + {"_ZN5clang8TypeDeclD0Ev", "clang::TypeDecl::~TypeDecl()"}, + {"_ZNK5clang4Decl14getSourceRangeEv", "clang::Decl::getSourceRange() const"}, + {"_ZN5clang9NamedDeclD1Ev", "clang::NamedDecl::~NamedDecl()"}, + {"_ZN5clang9NamedDeclD0Ev", "clang::NamedDecl::~NamedDecl()"}, + {"_ZN5clang9ValueDeclD1Ev", "clang::ValueDecl::~ValueDecl()"}, + {"_ZN5clang9ValueDeclD0Ev", "clang::ValueDecl::~ValueDecl()"}, + {"_ZN5clang14DeclaratorDeclD1Ev", "clang::DeclaratorDecl::~DeclaratorDecl()"}, + {"_ZN5clang14DeclaratorDeclD0Ev", "clang::DeclaratorDecl::~DeclaratorDecl()"}, + {"_ZNK5clang14DeclaratorDecl14getSourceRangeEv", "clang::DeclaratorDecl::getSourceRange() const"}, + {"_ZN5clang16FileScopeAsmDeclD1Ev", "clang::FileScopeAsmDecl::~FileScopeAsmDecl()"}, + {"_ZN5clang16FileScopeAsmDeclD0Ev", "clang::FileScopeAsmDecl::~FileScopeAsmDecl()"}, + {"_ZN5clang11TypedefDeclD1Ev", "clang::TypedefDecl::~TypedefDecl()"}, + {"_ZN5clang11TypedefDeclD0Ev", "clang::TypedefDecl::~TypedefDecl()"}, + {"_ZN5clang11TypedefDecl16getCanonicalDeclEv", "clang::TypedefDecl::getCanonicalDecl()"}, + {"_ZN5clang11TypedefDecl20getNextRedeclarationEv", "clang::TypedefDecl::getNextRedeclaration()"}, + {"_ZN5clang17IndirectFieldDeclD1Ev", "clang::IndirectFieldDecl::~IndirectFieldDecl()"}, + {"_ZN5clang17IndirectFieldDeclD0Ev", "clang::IndirectFieldDecl::~IndirectFieldDecl()"}, + {"_ZN5clang16EnumConstantDeclC2EPNS_11DeclContextENS_14SourceLocationEPNS_14IdentifierInfoENS_8QualTypeEPNS_4ExprERKN4llvm6APSIntE", "clang::EnumConstantDecl::EnumConstantDecl(clang::DeclContext*, clang::SourceLocation, clang::IdentifierInfo*, clang::QualType, clang::Expr*, llvm::APSInt const&)"}, + {"_ZN5clang9BlockDeclC2EPNS_11DeclContextENS_14SourceLocationE", "clang::BlockDecl::BlockDecl(clang::DeclContext*, clang::SourceLocation)"}, + {"_ZN5clang12FunctionDeclC2ENS_4Decl4KindEPNS_11DeclContextERKNS_19DeclarationNameInfoENS_8QualTypeEPNS_14TypeSourceInfoENS_12StorageClassESB_b", "clang::FunctionDecl::FunctionDecl(clang::Decl::Kind, clang::DeclContext*, clang::DeclarationNameInfo const&, clang::QualType, clang::TypeSourceInfo*, clang::StorageClass, clang::StorageClass, bool)"}, + {"_ZN5clang7VarDeclC2ENS_4Decl4KindEPNS_11DeclContextENS_14SourceLocationEPNS_14IdentifierInfoENS_8QualTypeEPNS_14TypeSourceInfoENS_12StorageClassESB_", "clang::VarDecl::VarDecl(clang::Decl::Kind, clang::DeclContext*, clang::SourceLocation, clang::IdentifierInfo*, clang::QualType, clang::TypeSourceInfo*, clang::StorageClass, clang::StorageClass)"}, + {"_ZN5clang17ImplicitParamDeclD1Ev", "clang::ImplicitParamDecl::~ImplicitParamDecl()"}, + {"_ZN5clang17ImplicitParamDeclD0Ev", "clang::ImplicitParamDecl::~ImplicitParamDecl()"}, + {"_ZN5clang13NamespaceDeclC2EPNS_11DeclContextENS_14SourceLocationEPNS_14IdentifierInfoE", "clang::NamespaceDecl::NamespaceDecl(clang::DeclContext*, clang::SourceLocation, clang::IdentifierInfo*)"}, + {"_ZN5clang13NamespaceDeclD1Ev", "clang::NamespaceDecl::~NamespaceDecl()"}, + {"_ZN5clang13NamespaceDeclD0Ev", "clang::NamespaceDecl::~NamespaceDecl()"}, + {"_ZNK5clang13NamespaceDecl14getSourceRangeEv", "clang::NamespaceDecl::getSourceRange() const"}, + {"_ZN5clang13NamespaceDecl16getCanonicalDeclEv", "clang::NamespaceDecl::getCanonicalDecl()"}, + {"_ZN5clang19TranslationUnitDeclC2ERNS_10ASTContextE", "clang::TranslationUnitDecl::TranslationUnitDecl(clang::ASTContext&)"}, + {"_ZN5clang19TranslationUnitDeclD1Ev", "clang::TranslationUnitDecl::~TranslationUnitDecl()"}, + {"_ZN5clang19TranslationUnitDeclD0Ev", "clang::TranslationUnitDecl::~TranslationUnitDecl()"}, + {"_ZN5clang12RedeclarableINS_7TagDeclEE22setPreviousDeclarationEPS1_", "clang::Redeclarable::setPreviousDeclaration(clang::TagDecl*)"}, + {"_ZN5clang8EnumDeclD1Ev", "clang::EnumDecl::~EnumDecl()"}, + {"_ZN5clang8EnumDeclD0Ev", "clang::EnumDecl::~EnumDecl()"}, + {"_ZN5clang8EnumDecl16getCanonicalDeclEv", "clang::EnumDecl::getCanonicalDecl()"}, + {"_ZN5clang9FieldDeclC2ENS_4Decl4KindEPNS_11DeclContextENS_14SourceLocationEPNS_14IdentifierInfoENS_8QualTypeEPNS_14TypeSourceInfoEPNS_4ExprEb", "clang::FieldDecl::FieldDecl(clang::Decl::Kind, clang::DeclContext*, clang::SourceLocation, clang::IdentifierInfo*, clang::QualType, clang::TypeSourceInfo*, clang::Expr*, bool)"}, + {"_ZN5clang9FieldDeclD1Ev", "clang::FieldDecl::~FieldDecl()"}, + {"_ZN5clang9FieldDeclD0Ev", "clang::FieldDecl::~FieldDecl()"}, + {"_ZN5clang11ParmVarDeclD1Ev", "clang::ParmVarDecl::~ParmVarDecl()"}, + {"_ZN5clang11ParmVarDeclD0Ev", "clang::ParmVarDecl::~ParmVarDecl()"}, + {"_ZNK5clang4Decl7getAttrINS_14VisibilityAttrEEEPT_v", "clang::VisibilityAttr* clang::Decl::getAttr() const"}, + {"_ZNK5clang4Decl15getDeclKindNameEv", "clang::Decl::getDeclKindName() const"}, + {"_ZN5clang4Decl14setInvalidDeclEb", "clang::Decl::setInvalidDecl(bool)"}, + {"_ZNK5clang11DeclContext15getDeclKindNameEv", "clang::DeclContext::getDeclKindName() const"}, + {"_ZN5clang4Decl15CollectingStatsEb", "clang::Decl::CollectingStats(bool)"}, + {"_ZN5clang4Decl10PrintStatsEv", "clang::Decl::PrintStats()"}, + {"_ZN5clang4Decl3addENS0_4KindE", "clang::Decl::add(clang::Decl::Kind)"}, + {"_ZNK5clang4Decl23isTemplateParameterPackEv", "clang::Decl::isTemplateParameterPack() const"}, + {"_ZNK5clang4Decl15isParameterPackEv", "clang::Decl::isParameterPack() const"}, + {"_ZNK5clang4Decl28isFunctionOrFunctionTemplateEv", "clang::Decl::isFunctionOrFunctionTemplate() const"}, + {"_ZNK5clang4Decl32isDefinedOutsideFunctionOrMethodEv", "clang::Decl::isDefinedOutsideFunctionOrMethod() const"}, + {"_ZNK5clang20PrettyStackTraceDecl5printERN4llvm11raw_ostreamE", "clang::PrettyStackTraceDecl::print(llvm::raw_ostream&) const"}, + {"_ZN5clang4DeclD0Ev", "clang::Decl::~Decl()"}, + {"_ZN5clang4DeclD1Ev", "clang::Decl::~Decl()"}, + {"_ZN5clang4DeclD2Ev", "clang::Decl::~Decl()"}, + {"_ZN5clang4Decl14setDeclContextEPNS_11DeclContextE", "clang::Decl::setDeclContext(clang::DeclContext*)"}, + {"_ZN5clang4Decl21setLexicalDeclContextEPNS_11DeclContextE", "clang::Decl::setLexicalDeclContext(clang::DeclContext*)"}, + {"_ZNK5clang4Decl13getASTContextEv", "clang::Decl::getASTContext() const"}, + {"_ZNK5clang4Decl22isInAnonymousNamespaceEv", "clang::Decl::isInAnonymousNamespace() const"}, + {"_ZN5clang4Decl22getTranslationUnitDeclEv", "clang::Decl::getTranslationUnitDecl()"}, + {"_ZNK5clang4Decl22getASTMutationListenerEv", "clang::Decl::getASTMutationListener() const"}, + {"_ZNK5clang4Decl6isUsedEb", "clang::Decl::isUsed(bool) const"}, + {"_ZN5clang4Decl29getIdentifierNamespaceForKindENS0_4KindE", "clang::Decl::getIdentifierNamespaceForKind(clang::Decl::Kind)"}, + + // {"_ZN5clang4Decl8setAttrsERKN4llvm11SmallVectorIPNS_4AttrELj2EEE", + // "clang::Decl::setAttrs(llvm::SmallVector const&)"}, + // "clang::Decl::setAttrs(llvm::SmallVector const&)" was returned + + {"_ZN5clang4Decl9dropAttrsEv", "clang::Decl::dropAttrs()"}, + {"_ZNK5clang4Decl8getAttrsEv", "clang::Decl::getAttrs() const"}, + {"_ZN5clang4Decl9swapAttrsEPS0_", "clang::Decl::swapAttrs(clang::Decl*)"}, + {"_ZN5clang4Decl19castFromDeclContextEPKNS_11DeclContextE", "clang::Decl::castFromDeclContext(clang::DeclContext const*)"}, + {"_ZN5clang4Decl17castToDeclContextEPKS0_", "clang::Decl::castToDeclContext(clang::Decl const*)"}, + {"_ZNK5clang4Decl13getBodyRBraceEv", "clang::Decl::getBodyRBrace() const"}, + {"_ZNK5clang4Decl22CheckAccessDeclContextEv", "clang::Decl::CheckAccessDeclContext() const"}, + {"_ZN5clang11DeclContext7classofEPKNS_4DeclE", "clang::DeclContext::classof(clang::Decl const*)"}, + {"_ZN5clang11DeclContextD1Ev", "clang::DeclContext::~DeclContext()"}, + {"_ZN5clang11DeclContextD2Ev", "clang::DeclContext::~DeclContext()"}, + {"_ZN5clang11DeclContext15getLookupParentEv", "clang::DeclContext::getLookupParent()"}, + {"_ZN5clang11DeclContext16getRedeclContextEv", "clang::DeclContext::getRedeclContext()"}, + {"_ZNK5clang11DeclContext17isInlineNamespaceEv", "clang::DeclContext::isInlineNamespace() const"}, + {"_ZNK5clang11DeclContext18isDependentContextEv", "clang::DeclContext::isDependentContext() const"}, + {"_ZNK5clang11DeclContext20isTransparentContextEv", "clang::DeclContext::isTransparentContext() const"}, + {"_ZNK5clang11DeclContext16isExternCContextEv", "clang::DeclContext::isExternCContext() const"}, + {"_ZNK5clang11DeclContext8EnclosesEPKS0_", "clang::DeclContext::Encloses(clang::DeclContext const*) const"}, + {"_ZN5clang11DeclContext17getPrimaryContextEv", "clang::DeclContext::getPrimaryContext()"}, + {"_ZN5clang11DeclContext14getNextContextEv", "clang::DeclContext::getNextContext()"}, + {"_ZN5clang11DeclContext14BuildDeclChainERKN4llvm15SmallVectorImplIPNS_4DeclEEE", "clang::DeclContext::BuildDeclChain(llvm::SmallVectorImpl const&)"}, + {"_ZNK5clang11DeclContext35LoadLexicalDeclsFromExternalStorageEv", "clang::DeclContext::LoadLexicalDeclsFromExternalStorage() const"}, + {"_ZN5clang17ExternalASTSource32SetNoExternalVisibleDeclsForNameEPKNS_11DeclContextENS_15DeclarationNameE", "clang::ExternalASTSource::SetNoExternalVisibleDeclsForName(clang::DeclContext const*, clang::DeclarationName)"}, + {"_ZNK5clang11DeclContext20CreateStoredDeclsMapERNS_10ASTContextE", "clang::DeclContext::CreateStoredDeclsMap(clang::ASTContext&) const"}, + {"_ZN5clang17ExternalASTSource30SetExternalVisibleDeclsForNameEPKNS_11DeclContextENS_15DeclarationNameERN4llvm15SmallVectorImplIPNS_9NamedDeclEEE", "clang::ExternalASTSource::SetExternalVisibleDeclsForName(clang::DeclContext const*, clang::DeclarationName, llvm::SmallVectorImpl&)"}, + {"_ZN5clang17ExternalASTSource30MaterializeVisibleDeclsForNameEPKNS_11DeclContextENS_15DeclarationNameERN4llvm15SmallVectorImplIPNS_9NamedDeclEEE", "clang::ExternalASTSource::MaterializeVisibleDeclsForName(clang::DeclContext const*, clang::DeclarationName, llvm::SmallVectorImpl&)"}, + {"_ZNK5clang11DeclContext18noload_decls_beginEv", "clang::DeclContext::noload_decls_begin() const"}, + {"_ZNK5clang11DeclContext16noload_decls_endEv", "clang::DeclContext::noload_decls_end() const"}, + {"_ZNK5clang11DeclContext11decls_beginEv", "clang::DeclContext::decls_begin() const"}, + {"_ZNK5clang11DeclContext9decls_endEv", "clang::DeclContext::decls_end() const"}, + {"_ZNK5clang11DeclContext11decls_emptyEv", "clang::DeclContext::decls_empty() const"}, + {"_ZN5clang11DeclContext10removeDeclEPNS_4DeclE", "clang::DeclContext::removeDecl(clang::Decl*)"}, + {"_ZN5clang11DeclContext13addHiddenDeclEPNS_4DeclE", "clang::DeclContext::addHiddenDecl(clang::Decl*)"}, + {"_ZN5clang11DeclContext7addDeclEPNS_4DeclE", "clang::DeclContext::addDecl(clang::Decl*)"}, + {"_ZN5clang11DeclContext24makeDeclVisibleInContextEPNS_9NamedDeclEb", "clang::DeclContext::makeDeclVisibleInContext(clang::NamedDecl*, bool)"}, + {"_ZN5clang11DeclContext11buildLookupEPS0_", "clang::DeclContext::buildLookup(clang::DeclContext*)"}, + {"_ZN5clang11DeclContext28makeDeclVisibleInContextImplEPNS_9NamedDeclE", "clang::DeclContext::makeDeclVisibleInContextImpl(clang::NamedDecl*)"}, + {"_ZN5clang11DeclContext6lookupENS_15DeclarationNameE", "clang::DeclContext::lookup(clang::DeclarationName)"}, + {"_ZNK5clang11DeclContext6lookupENS_15DeclarationNameE", "clang::DeclContext::lookup(clang::DeclarationName) const"}, + {"_ZN5clang11DeclContext28getEnclosingNamespaceContextEv", "clang::DeclContext::getEnclosingNamespaceContext()"}, + {"_ZNK5clang11DeclContext25InEnclosingNamespaceSetOfEPKS0_", "clang::DeclContext::InEnclosingNamespaceSetOf(clang::DeclContext const*) const"}, + {"_ZN5clang11DeclContext42MaterializeVisibleDeclsFromExternalStorageEv", "clang::DeclContext::MaterializeVisibleDeclsFromExternalStorage()"}, + {"_ZNK5clang11DeclContext18getUsingDirectivesEv", "clang::DeclContext::getUsingDirectives() const"}, + {"_ZN5clang10ASTContext22ReleaseDeclContextMapsEv", "clang::ASTContext::ReleaseDeclContextMaps()"}, + {"_ZN5clang14StoredDeclsMap10DestroyAllEPS0_b", "clang::StoredDeclsMap::DestroyAll(clang::StoredDeclsMap*, bool)"}, + {"_ZN5clang19DependentDiagnostic6CreateERNS_10ASTContextEPNS_11DeclContextERKNS_17PartialDiagnosticE", "clang::DependentDiagnostic::Create(clang::ASTContext&, clang::DeclContext*, clang::PartialDiagnostic const&)"}, + {"_ZNK5clang4Decl7hasAttrINS_8UsedAttrEEEbv", "bool clang::Decl::hasAttr() const"}, + {"_ZN5clang15StoredDeclsList17AddSubsequentDeclEPNS_9NamedDeclE", "clang::StoredDeclsList::AddSubsequentDecl(clang::NamedDecl*)"}, + {"_ZN5clang15StoredDeclsList6removeEPNS_9NamedDeclE", "clang::StoredDeclsList::remove(clang::NamedDecl*)"}, + {"_ZN5clang15StoredDeclsList19HandleRedeclarationEPNS_9NamedDeclE", "clang::StoredDeclsList::HandleRedeclaration(clang::NamedDecl*)"}, + {"_ZN4llvm8DenseMapIN5clang15DeclarationNameENS1_15StoredDeclsListENS_12DenseMapInfoIS2_EENS4_IS3_EEE16FindAndConstructERKS2_", "llvm::DenseMap, llvm::DenseMapInfo>::FindAndConstruct(clang::DeclarationName const&)"}, + {"_ZN4llvm8DenseMapIN5clang15DeclarationNameENS1_15StoredDeclsListENS_12DenseMapInfoIS2_EENS4_IS3_EEE16InsertIntoBucketERKS2_RKS3_PSt4pairIS2_S3_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::DeclarationName const&, clang::StoredDeclsList const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIN5clang15DeclarationNameENS1_15StoredDeclsListENS_12DenseMapInfoIS2_EENS4_IS3_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm15SmallVectorImplIPN5clang9NamedDeclEEaSERKS4_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + {"_ZN4llvm15SmallVectorImplIPN5clang4AttrEE4swapERS4_", "llvm::SmallVectorImpl::swap(llvm::SmallVectorImpl&)"}, + {"_ZN4llvm15SmallVectorImplIPN5clang4AttrEEaSERKS4_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + {"_ZN4llvm8DenseMapIN5clang15DeclarationNameENS1_15StoredDeclsListENS_12DenseMapInfoIS2_EENS4_IS3_EEED2Ev", "llvm::DenseMap, llvm::DenseMapInfo>::~DenseMap()"}, + + // {"_ZSt6__findIPPN5clang9NamedDeclES2_ET_S4_S4_RKT0_St26random_access_iterator_tag", + // "clang::NamedDecl** std::__find(clang::NamedDecl**, clang::NamedDecl**, clang::NamedDecl* const&, std::random_access_iterator_tag)"}, + // got error + + {"_ZN4llvm15SmallVectorImplIPN5clang9NamedDeclEE6insertEPS3_RKS3_", "llvm::SmallVectorImpl::insert(clang::NamedDecl**, clang::NamedDecl* const&)"}, + {"_ZN5clang13CXXRecordDecl14DefinitionDataC1EPS0_", "clang::CXXRecordDecl::DefinitionData::DefinitionData(clang::CXXRecordDecl*)"}, + {"_ZN5clang13CXXRecordDecl14DefinitionDataC2EPS0_", "clang::CXXRecordDecl::DefinitionData::DefinitionData(clang::CXXRecordDecl*)"}, + {"_ZN5clang13CXXRecordDeclC1ENS_4Decl4KindENS_11TagTypeKindEPNS_11DeclContextENS_14SourceLocationEPNS_14IdentifierInfoEPS0_S6_", "clang::CXXRecordDecl::CXXRecordDecl(clang::Decl::Kind, clang::TagTypeKind, clang::DeclContext*, clang::SourceLocation, clang::IdentifierInfo*, clang::CXXRecordDecl*, clang::SourceLocation)"}, + {"_ZN5clang13CXXRecordDeclC2ENS_4Decl4KindENS_11TagTypeKindEPNS_11DeclContextENS_14SourceLocationEPNS_14IdentifierInfoEPS0_S6_", "clang::CXXRecordDecl::CXXRecordDecl(clang::Decl::Kind, clang::TagTypeKind, clang::DeclContext*, clang::SourceLocation, clang::IdentifierInfo*, clang::CXXRecordDecl*, clang::SourceLocation)"}, + {"_ZN5clang13CXXRecordDecl6CreateERKNS_10ASTContextENS_11TagTypeKindEPNS_11DeclContextENS_14SourceLocationEPNS_14IdentifierInfoES7_PS0_b", "clang::CXXRecordDecl::Create(clang::ASTContext const&, clang::TagTypeKind, clang::DeclContext*, clang::SourceLocation, clang::IdentifierInfo*, clang::SourceLocation, clang::CXXRecordDecl*, bool)"}, + {"_ZN5clang13CXXRecordDecl6CreateERKNS_10ASTContextENS_4Decl10EmptyShellE", "clang::CXXRecordDecl::Create(clang::ASTContext const&, clang::Decl::EmptyShell)"}, + {"_ZN5clang13CXXRecordDecl8setBasesEPKPKNS_16CXXBaseSpecifierEj", "clang::CXXRecordDecl::setBases(clang::CXXBaseSpecifier const* const*, unsigned int)"}, + {"_ZNK5clang13CXXRecordDecl20hasAnyDependentBasesEv", "clang::CXXRecordDecl::hasAnyDependentBases() const"}, + {"_Z7SawBasePKN5clang13CXXRecordDeclEPv", "SawBase(clang::CXXRecordDecl const*, void*)"}, + {"_ZNK5clang13CXXRecordDecl23hasConstCopyConstructorERKNS_10ASTContextE", "clang::CXXRecordDecl::hasConstCopyConstructor(clang::ASTContext const&) const"}, + {"_ZNK5clang13CXXRecordDecl18getCopyConstructorERKNS_10ASTContextEj", "clang::CXXRecordDecl::getCopyConstructor(clang::ASTContext const&, unsigned int) const"}, + {"_ZNK5clang18CXXConstructorDecl17isCopyConstructorERj", "clang::CXXConstructorDecl::isCopyConstructor(unsigned int&) const"}, + {"_Z30GetBestOverloadCandidateSimpleRKN4llvm15SmallVectorImplISt4pairIPN5clang13CXXMethodDeclENS2_10QualifiersEEEE", "GetBestOverloadCandidateSimple(llvm::SmallVectorImpl> const&)"}, + {"_ZNK5clang13CXXRecordDecl25getCopyAssignmentOperatorEb", "clang::CXXRecordDecl::getCopyAssignmentOperator(bool) const"}, + {"_ZN5clang13CXXRecordDecl25markedVirtualFunctionPureEv", "clang::CXXRecordDecl::markedVirtualFunctionPure()"}, + {"_ZN5clang13CXXRecordDecl11addedMemberEPNS_4DeclE", "clang::CXXRecordDecl::addedMember(clang::Decl*)"}, + {"_ZNK5clang18CXXConstructorDecl20isDefaultConstructorEv", "clang::CXXConstructorDecl::isDefaultConstructor() const"}, + {"_ZN5clang13CXXRecordDecl29getVisibleConversionFunctionsEv", "clang::CXXRecordDecl::getVisibleConversionFunctions()"}, + {"_ZN5clang13CXXRecordDecl16removeConversionEPKNS_9NamedDeclE", "clang::CXXRecordDecl::removeConversion(clang::NamedDecl const*)"}, + {"_ZNK5clang13CXXRecordDecl30getInstantiatedFromMemberClassEv", "clang::CXXRecordDecl::getInstantiatedFromMemberClass() const"}, + {"_ZNK5clang13CXXRecordDecl27getMemberSpecializationInfoEv", "clang::CXXRecordDecl::getMemberSpecializationInfo() const"}, + {"_ZN5clang13CXXRecordDecl29setInstantiationOfMemberClassEPS0_NS_26TemplateSpecializationKindE", "clang::CXXRecordDecl::setInstantiationOfMemberClass(clang::CXXRecordDecl*, clang::TemplateSpecializationKind)"}, + {"_ZNK5clang13CXXRecordDecl29getTemplateSpecializationKindEv", "clang::CXXRecordDecl::getTemplateSpecializationKind() const"}, + {"_ZN5clang13CXXRecordDecl29setTemplateSpecializationKindENS_26TemplateSpecializationKindE", "clang::CXXRecordDecl::setTemplateSpecializationKind(clang::TemplateSpecializationKind)"}, + {"_ZNK5clang13CXXRecordDecl13getDestructorEv", "clang::CXXRecordDecl::getDestructor() const"}, + {"_ZN5clang13CXXRecordDecl18completeDefinitionEv", "clang::CXXRecordDecl::completeDefinition()"}, + {"_ZN5clang13CXXRecordDecl18completeDefinitionEPNS_20CXXFinalOverriderMapE", "clang::CXXRecordDecl::completeDefinition(clang::CXXFinalOverriderMap*)"}, + {"_ZNK5clang13CXXRecordDecl13mayBeAbstractEv", "clang::CXXRecordDecl::mayBeAbstract() const"}, + {"_ZN5clang13CXXMethodDecl6CreateERNS_10ASTContextEPNS_13CXXRecordDeclERKNS_19DeclarationNameInfoENS_8QualTypeEPNS_14TypeSourceInfoEbNS_12StorageClassEb", "clang::CXXMethodDecl::Create(clang::ASTContext&, clang::CXXRecordDecl*, clang::DeclarationNameInfo const&, clang::QualType, clang::TypeSourceInfo*, bool, clang::StorageClass, bool)"}, + {"_ZNK5clang13CXXMethodDecl27isUsualDeallocationFunctionEv", "clang::CXXMethodDecl::isUsualDeallocationFunction() const"}, + {"_ZNK5clang13CXXMethodDecl24isCopyAssignmentOperatorEv", "clang::CXXMethodDecl::isCopyAssignmentOperator() const"}, + {"_ZN5clang13CXXMethodDecl19addOverriddenMethodEPKS0_", "clang::CXXMethodDecl::addOverriddenMethod(clang::CXXMethodDecl const*)"}, + {"_ZNK5clang13CXXMethodDecl24begin_overridden_methodsEv", "clang::CXXMethodDecl::begin_overridden_methods() const"}, + {"_ZNK5clang13CXXMethodDecl22end_overridden_methodsEv", "clang::CXXMethodDecl::end_overridden_methods() const"}, + {"_ZNK5clang13CXXMethodDecl23size_overridden_methodsEv", "clang::CXXMethodDecl::size_overridden_methods() const"}, + {"_ZNK5clang13CXXMethodDecl11getThisTypeERNS_10ASTContextE", "clang::CXXMethodDecl::getThisType(clang::ASTContext&) const"}, + {"_ZNK5clang13CXXMethodDecl13hasInlineBodyEv", "clang::CXXMethodDecl::hasInlineBody() const"}, + {"_ZN5clang18CXXCtorInitializerC1ERNS_10ASTContextEPNS_14TypeSourceInfoEbNS_14SourceLocationEPNS_4ExprES5_S5_", "clang::CXXCtorInitializer::CXXCtorInitializer(clang::ASTContext&, clang::TypeSourceInfo*, bool, clang::SourceLocation, clang::Expr*, clang::SourceLocation, clang::SourceLocation)"}, + {"_ZN5clang18CXXCtorInitializerC2ERNS_10ASTContextEPNS_14TypeSourceInfoEbNS_14SourceLocationEPNS_4ExprES5_S5_", "clang::CXXCtorInitializer::CXXCtorInitializer(clang::ASTContext&, clang::TypeSourceInfo*, bool, clang::SourceLocation, clang::Expr*, clang::SourceLocation, clang::SourceLocation)"}, + {"_ZN5clang18CXXCtorInitializerC1ERNS_10ASTContextEPNS_9FieldDeclENS_14SourceLocationES5_PNS_4ExprES5_", "clang::CXXCtorInitializer::CXXCtorInitializer(clang::ASTContext&, clang::FieldDecl*, clang::SourceLocation, clang::SourceLocation, clang::Expr*, clang::SourceLocation)"}, + {"_ZN5clang18CXXCtorInitializerC2ERNS_10ASTContextEPNS_9FieldDeclENS_14SourceLocationES5_PNS_4ExprES5_", "clang::CXXCtorInitializer::CXXCtorInitializer(clang::ASTContext&, clang::FieldDecl*, clang::SourceLocation, clang::SourceLocation, clang::Expr*, clang::SourceLocation)"}, + {"_ZN5clang18CXXCtorInitializerC1ERNS_10ASTContextEPNS_17IndirectFieldDeclENS_14SourceLocationES5_PNS_4ExprES5_", "clang::CXXCtorInitializer::CXXCtorInitializer(clang::ASTContext&, clang::IndirectFieldDecl*, clang::SourceLocation, clang::SourceLocation, clang::Expr*, clang::SourceLocation)"}, + {"_ZN5clang18CXXCtorInitializerC2ERNS_10ASTContextEPNS_17IndirectFieldDeclENS_14SourceLocationES5_PNS_4ExprES5_", "clang::CXXCtorInitializer::CXXCtorInitializer(clang::ASTContext&, clang::IndirectFieldDecl*, clang::SourceLocation, clang::SourceLocation, clang::Expr*, clang::SourceLocation)"}, + {"_ZN5clang18CXXCtorInitializerC1ERNS_10ASTContextEPNS_9FieldDeclENS_14SourceLocationES5_PNS_4ExprES5_PPNS_7VarDeclEj", "clang::CXXCtorInitializer::CXXCtorInitializer(clang::ASTContext&, clang::FieldDecl*, clang::SourceLocation, clang::SourceLocation, clang::Expr*, clang::SourceLocation, clang::VarDecl**, unsigned int)"}, + {"_ZN5clang18CXXCtorInitializerC2ERNS_10ASTContextEPNS_9FieldDeclENS_14SourceLocationES5_PNS_4ExprES5_PPNS_7VarDeclEj", "clang::CXXCtorInitializer::CXXCtorInitializer(clang::ASTContext&, clang::FieldDecl*, clang::SourceLocation, clang::SourceLocation, clang::Expr*, clang::SourceLocation, clang::VarDecl**, unsigned int)"}, + {"_ZN5clang18CXXCtorInitializer6CreateERNS_10ASTContextEPNS_9FieldDeclENS_14SourceLocationES5_PNS_4ExprES5_PPNS_7VarDeclEj", "clang::CXXCtorInitializer::Create(clang::ASTContext&, clang::FieldDecl*, clang::SourceLocation, clang::SourceLocation, clang::Expr*, clang::SourceLocation, clang::VarDecl**, unsigned int)"}, + {"_ZNK5clang18CXXCtorInitializer15getBaseClassLocEv", "clang::CXXCtorInitializer::getBaseClassLoc() const"}, + {"_ZNK5clang18CXXCtorInitializer12getBaseClassEv", "clang::CXXCtorInitializer::getBaseClass() const"}, + {"_ZNK5clang18CXXCtorInitializer17getSourceLocationEv", "clang::CXXCtorInitializer::getSourceLocation() const"}, + {"_ZNK5clang18CXXCtorInitializer14getSourceRangeEv", "clang::CXXCtorInitializer::getSourceRange() const"}, + {"_ZN5clang18CXXConstructorDecl6CreateERNS_10ASTContextENS_4Decl10EmptyShellE", "clang::CXXConstructorDecl::Create(clang::ASTContext&, clang::Decl::EmptyShell)"}, + {"_ZN5clang18CXXConstructorDecl6CreateERNS_10ASTContextEPNS_13CXXRecordDeclERKNS_19DeclarationNameInfoENS_8QualTypeEPNS_14TypeSourceInfoEbbb", "clang::CXXConstructorDecl::Create(clang::ASTContext&, clang::CXXRecordDecl*, clang::DeclarationNameInfo const&, clang::QualType, clang::TypeSourceInfo*, bool, bool, bool)"}, + {"_ZNK5clang18CXXConstructorDecl23isCopyOrMoveConstructorERj", "clang::CXXConstructorDecl::isCopyOrMoveConstructor(unsigned int&) const"}, + {"_ZNK5clang18CXXConstructorDecl17isMoveConstructorERj", "clang::CXXConstructorDecl::isMoveConstructor(unsigned int&) const"}, + {"_ZNK5clang18CXXConstructorDecl23isConvertingConstructorEb", "clang::CXXConstructorDecl::isConvertingConstructor(bool) const"}, + {"_ZNK5clang18CXXConstructorDecl29isSpecializationCopyingObjectEv", "clang::CXXConstructorDecl::isSpecializationCopyingObject() const"}, + {"_ZNK5clang18CXXConstructorDecl23getInheritedConstructorEv", "clang::CXXConstructorDecl::getInheritedConstructor() const"}, + {"_ZN5clang18CXXConstructorDecl23setInheritedConstructorEPKS0_", "clang::CXXConstructorDecl::setInheritedConstructor(clang::CXXConstructorDecl const*)"}, + {"_ZN5clang17CXXDestructorDecl6CreateERNS_10ASTContextENS_4Decl10EmptyShellE", "clang::CXXDestructorDecl::Create(clang::ASTContext&, clang::Decl::EmptyShell)"}, + {"_ZN5clang17CXXDestructorDecl6CreateERNS_10ASTContextEPNS_13CXXRecordDeclERKNS_19DeclarationNameInfoENS_8QualTypeEPNS_14TypeSourceInfoEbb", "clang::CXXDestructorDecl::Create(clang::ASTContext&, clang::CXXRecordDecl*, clang::DeclarationNameInfo const&, clang::QualType, clang::TypeSourceInfo*, bool, bool)"}, + {"_ZN5clang17CXXConversionDecl6CreateERNS_10ASTContextENS_4Decl10EmptyShellE", "clang::CXXConversionDecl::Create(clang::ASTContext&, clang::Decl::EmptyShell)"}, + {"_ZN5clang17CXXConversionDecl6CreateERNS_10ASTContextEPNS_13CXXRecordDeclERKNS_19DeclarationNameInfoENS_8QualTypeEPNS_14TypeSourceInfoEbb", "clang::CXXConversionDecl::Create(clang::ASTContext&, clang::CXXRecordDecl*, clang::DeclarationNameInfo const&, clang::QualType, clang::TypeSourceInfo*, bool, bool)"}, + {"_ZN5clang15LinkageSpecDecl6CreateERNS_10ASTContextEPNS_11DeclContextENS_14SourceLocationENS0_11LanguageIDsEb", "clang::LinkageSpecDecl::Create(clang::ASTContext&, clang::DeclContext*, clang::SourceLocation, clang::LinkageSpecDecl::LanguageIDs, bool)"}, + {"_ZN5clang18UsingDirectiveDecl6CreateERNS_10ASTContextEPNS_11DeclContextENS_14SourceLocationES5_NS_11SourceRangeEPNS_19NestedNameSpecifierES5_PNS_9NamedDeclES4_", "clang::UsingDirectiveDecl::Create(clang::ASTContext&, clang::DeclContext*, clang::SourceLocation, clang::SourceLocation, clang::SourceRange, clang::NestedNameSpecifier*, clang::SourceLocation, clang::NamedDecl*, clang::DeclContext*)"}, + {"_ZN5clang18UsingDirectiveDecl21getNominatedNamespaceEv", "clang::UsingDirectiveDecl::getNominatedNamespace()"}, + {"_ZN5clang18NamespaceAliasDecl6CreateERNS_10ASTContextEPNS_11DeclContextENS_14SourceLocationES5_PNS_14IdentifierInfoENS_11SourceRangeEPNS_19NestedNameSpecifierES5_PNS_9NamedDeclE", "clang::NamespaceAliasDecl::Create(clang::ASTContext&, clang::DeclContext*, clang::SourceLocation, clang::SourceLocation, clang::IdentifierInfo*, clang::SourceRange, clang::NestedNameSpecifier*, clang::SourceLocation, clang::NamedDecl*)"}, + {"_ZNK5clang15UsingShadowDecl12getUsingDeclEv", "clang::UsingShadowDecl::getUsingDecl() const"}, + {"_ZN5clang9UsingDecl13addShadowDeclEPNS_15UsingShadowDeclE", "clang::UsingDecl::addShadowDecl(clang::UsingShadowDecl*)"}, + {"_ZN5clang9UsingDecl16removeShadowDeclEPNS_15UsingShadowDeclE", "clang::UsingDecl::removeShadowDecl(clang::UsingShadowDecl*)"}, + {"_ZN5clang9UsingDecl6CreateERNS_10ASTContextEPNS_11DeclContextENS_11SourceRangeENS_14SourceLocationEPNS_19NestedNameSpecifierERKNS_19DeclarationNameInfoEb", "clang::UsingDecl::Create(clang::ASTContext&, clang::DeclContext*, clang::SourceRange, clang::SourceLocation, clang::NestedNameSpecifier*, clang::DeclarationNameInfo const&, bool)"}, + {"_ZN5clang24UnresolvedUsingValueDecl6CreateERNS_10ASTContextEPNS_11DeclContextENS_14SourceLocationENS_11SourceRangeEPNS_19NestedNameSpecifierERKNS_19DeclarationNameInfoE", "clang::UnresolvedUsingValueDecl::Create(clang::ASTContext&, clang::DeclContext*, clang::SourceLocation, clang::SourceRange, clang::NestedNameSpecifier*, clang::DeclarationNameInfo const&)"}, + {"_ZN5clang27UnresolvedUsingTypenameDecl6CreateERNS_10ASTContextEPNS_11DeclContextENS_14SourceLocationES5_NS_11SourceRangeEPNS_19NestedNameSpecifierES5_NS_15DeclarationNameE", "clang::UnresolvedUsingTypenameDecl::Create(clang::ASTContext&, clang::DeclContext*, clang::SourceLocation, clang::SourceLocation, clang::SourceRange, clang::NestedNameSpecifier*, clang::SourceLocation, clang::DeclarationName)"}, + {"_ZN5clang16StaticAssertDecl6CreateERNS_10ASTContextEPNS_11DeclContextENS_14SourceLocationEPNS_4ExprEPNS_13StringLiteralE", "clang::StaticAssertDecl::Create(clang::ASTContext&, clang::DeclContext*, clang::SourceLocation, clang::Expr*, clang::StringLiteral*)"}, + {"_ZN5clanglsERKNS_17DiagnosticBuilderENS_15AccessSpecifierE", "clang::operator<<(clang::DiagnosticBuilder const&, clang::AccessSpecifier)"}, + {"_Z17GetConversionTypeRN5clang10ASTContextEPNS_9NamedDeclE", "GetConversionType(clang::ASTContext&, clang::NamedDecl*)"}, + + // {"_Z25CollectVisibleConversionsRN5clang10ASTContextEPNS_13CXXRecordDeclEbNS_15AccessSpecifierERKN4llvm11SmallPtrSetINS_7CanQualINS_4TypeEEELj8EEERNS_17UnresolvedSetImplESE_RNS6_IPNS_9NamedDeclELj8EEE", + // "CollectVisibleConversions(clang::ASTContext&, clang::CXXRecordDecl*, bool, clang::AccessSpecifier, llvm::SmallPtrSet, 8u> const&, clang::UnresolvedSetImpl&, clang::UnresolvedSetImpl&, llvm::SmallPtrSet&)"}, + // "CollectVisibleConversions(clang::ASTContext&, clang::CXXRecordDecl*, bool, clang::AccessSpecifier, llvm::SmallPtrSet, 8> const&, clang::UnresolvedSetImpl&, clang::UnresolvedSetImpl&, llvm::SmallPtrSet&)" was returned + + {"_ZN4llvm23SmallVectorTemplateBaseISt4pairIPN5clang13CXXMethodDeclENS2_10QualifiersEELb0EE4growEm", "llvm::SmallVectorTemplateBase, false>::grow(unsigned long)"}, + {"_ZN5clang16StaticAssertDeclD1Ev", "clang::StaticAssertDecl::~StaticAssertDecl()"}, + {"_ZN5clang16StaticAssertDeclD0Ev", "clang::StaticAssertDecl::~StaticAssertDecl()"}, + {"_ZN5clang27UnresolvedUsingTypenameDeclD1Ev", "clang::UnresolvedUsingTypenameDecl::~UnresolvedUsingTypenameDecl()"}, + {"_ZN5clang27UnresolvedUsingTypenameDeclD0Ev", "clang::UnresolvedUsingTypenameDecl::~UnresolvedUsingTypenameDecl()"}, + {"_ZNK5clang27UnresolvedUsingTypenameDecl14getSourceRangeEv", "clang::UnresolvedUsingTypenameDecl::getSourceRange() const"}, + {"_ZN5clang24UnresolvedUsingValueDeclD1Ev", "clang::UnresolvedUsingValueDecl::~UnresolvedUsingValueDecl()"}, + {"_ZN5clang24UnresolvedUsingValueDeclD0Ev", "clang::UnresolvedUsingValueDecl::~UnresolvedUsingValueDecl()"}, + {"_ZNK5clang24UnresolvedUsingValueDecl14getSourceRangeEv", "clang::UnresolvedUsingValueDecl::getSourceRange() const"}, + {"_ZN5clang9UsingDeclD1Ev", "clang::UsingDecl::~UsingDecl()"}, + {"_ZN5clang9UsingDeclD0Ev", "clang::UsingDecl::~UsingDecl()"}, + {"_ZNK5clang9UsingDecl14getSourceRangeEv", "clang::UsingDecl::getSourceRange() const"}, + {"_ZN5clang18NamespaceAliasDeclD1Ev", "clang::NamespaceAliasDecl::~NamespaceAliasDecl()"}, + {"_ZN5clang18NamespaceAliasDeclD0Ev", "clang::NamespaceAliasDecl::~NamespaceAliasDecl()"}, + {"_ZNK5clang18NamespaceAliasDecl14getSourceRangeEv", "clang::NamespaceAliasDecl::getSourceRange() const"}, + {"_ZN5clang18UsingDirectiveDeclD1Ev", "clang::UsingDirectiveDecl::~UsingDirectiveDecl()"}, + {"_ZN5clang18UsingDirectiveDeclD0Ev", "clang::UsingDirectiveDecl::~UsingDirectiveDecl()"}, + {"_ZNK5clang18UsingDirectiveDecl14getSourceRangeEv", "clang::UsingDirectiveDecl::getSourceRange() const"}, + {"_ZN5clang15LinkageSpecDeclC2EPNS_11DeclContextENS_14SourceLocationENS0_11LanguageIDsEb", "clang::LinkageSpecDecl::LinkageSpecDecl(clang::DeclContext*, clang::SourceLocation, clang::LinkageSpecDecl::LanguageIDs, bool)"}, + {"_ZN5clang15LinkageSpecDeclD1Ev", "clang::LinkageSpecDecl::~LinkageSpecDecl()"}, + {"_ZN5clang15LinkageSpecDeclD0Ev", "clang::LinkageSpecDecl::~LinkageSpecDecl()"}, + {"_ZN5clang17CXXConversionDeclD1Ev", "clang::CXXConversionDecl::~CXXConversionDecl()"}, + {"_ZN5clang17CXXConversionDeclD0Ev", "clang::CXXConversionDecl::~CXXConversionDecl()"}, + {"_ZN5clang13CXXMethodDecl16getCanonicalDeclEv", "clang::CXXMethodDecl::getCanonicalDecl()"}, + {"_ZNK5clang13CXXMethodDecl16getCanonicalDeclEv", "clang::CXXMethodDecl::getCanonicalDecl() const"}, + {"_ZN5clang13CXXMethodDeclD1Ev", "clang::CXXMethodDecl::~CXXMethodDecl()"}, + {"_ZN5clang13CXXMethodDeclD0Ev", "clang::CXXMethodDecl::~CXXMethodDecl()"}, + {"_ZN5clang17CXXDestructorDeclD1Ev", "clang::CXXDestructorDecl::~CXXDestructorDecl()"}, + {"_ZN5clang17CXXDestructorDeclD0Ev", "clang::CXXDestructorDecl::~CXXDestructorDecl()"}, + {"_ZN5clang18CXXConstructorDeclD1Ev", "clang::CXXConstructorDecl::~CXXConstructorDecl()"}, + {"_ZN5clang18CXXConstructorDeclD0Ev", "clang::CXXConstructorDecl::~CXXConstructorDecl()"}, + {"_ZN4llvm8DenseMapIPKN5clang13CXXMethodDeclENS1_17OverridingMethodsENS_12DenseMapInfoIS4_EENS6_IS5_EEED2Ev", "llvm::DenseMap, llvm::DenseMapInfo>::~DenseMap()"}, + {"_ZN5clang10FriendDecl6CreateERNS_10ASTContextEPNS_11DeclContextENS_14SourceLocationEN4llvm12PointerUnionIPNS_9NamedDeclEPNS_14TypeSourceInfoEEES5_", "clang::FriendDecl::Create(clang::ASTContext&, clang::DeclContext*, clang::SourceLocation, llvm::PointerUnion, clang::SourceLocation)"}, + {"_ZN5clang10FriendDecl6CreateERNS_10ASTContextENS_4Decl10EmptyShellE", "clang::FriendDecl::Create(clang::ASTContext&, clang::Decl::EmptyShell)"}, + {"_ZN5clang10FriendDeclD1Ev", "clang::FriendDecl::~FriendDecl()"}, + {"_ZN5clang10FriendDeclD0Ev", "clang::FriendDecl::~FriendDecl()"}, + {"_ZN5clang9DeclGroup6CreateERNS_10ASTContextEPPNS_4DeclEj", "clang::DeclGroup::Create(clang::ASTContext&, clang::Decl**, unsigned int)"}, + {"_ZN5clang9DeclGroupC1EjPPNS_4DeclE", "clang::DeclGroup::DeclGroup(unsigned int, clang::Decl**)"}, + {"_ZN5clang9DeclGroupC2EjPPNS_4DeclE", "clang::DeclGroup::DeclGroup(unsigned int, clang::Decl**)"}, + {"_ZN5clang12ObjCListBase3setEPKPvjRNS_10ASTContextE", "clang::ObjCListBase::set(void* const*, unsigned int, clang::ASTContext&)"}, + {"_ZN5clang16ObjCProtocolList3setEPKPNS_16ObjCProtocolDeclEjPKNS_14SourceLocationERNS_10ASTContextE", "clang::ObjCProtocolList::set(clang::ObjCProtocolDecl* const*, unsigned int, clang::SourceLocation const*, clang::ASTContext&)"}, + {"_ZNK5clang17ObjCContainerDecl11getIvarDeclEPNS_14IdentifierInfoE", "clang::ObjCContainerDecl::getIvarDecl(clang::IdentifierInfo*) const"}, + {"_ZNK5clang17ObjCContainerDecl9getMethodENS_8SelectorEb", "clang::ObjCContainerDecl::getMethod(clang::Selector, bool) const"}, + {"_ZN5clang16ObjCPropertyDecl16findPropertyDeclEPKNS_11DeclContextEPNS_14IdentifierInfoE", "clang::ObjCPropertyDecl::findPropertyDecl(clang::DeclContext const*, clang::IdentifierInfo*)"}, + {"_ZNK5clang17ObjCContainerDecl23FindPropertyDeclarationEPNS_14IdentifierInfoE", "clang::ObjCContainerDecl::FindPropertyDeclaration(clang::IdentifierInfo*) const"}, + {"_ZNK5clang17ObjCInterfaceDecl33FindPropertyVisibleInPrimaryClassEPNS_14IdentifierInfoE", "clang::ObjCInterfaceDecl::FindPropertyVisibleInPrimaryClass(clang::IdentifierInfo*) const"}, + {"_ZNK5clang17ObjCInterfaceDecl22LoadExternalDefinitionEv", "clang::ObjCInterfaceDecl::LoadExternalDefinition() const"}, + {"_ZN5clang17ObjCInterfaceDecl31mergeClassExtensionProtocolListEPKPNS_16ObjCProtocolDeclEjRNS_10ASTContextE", "clang::ObjCInterfaceDecl::mergeClassExtensionProtocolList(clang::ObjCProtocolDecl* const*, unsigned int, clang::ASTContext&)"}, + {"_ZNK5clang17ObjCInterfaceDecl22getFirstClassExtensionEv", "clang::ObjCInterfaceDecl::getFirstClassExtension() const"}, + {"_ZNK5clang16ObjCCategoryDecl21getNextClassExtensionEv", "clang::ObjCCategoryDecl::getNextClassExtension() const"}, + {"_ZN5clang17ObjCInterfaceDecl22lookupInstanceVariableEPNS_14IdentifierInfoERPS0_", "clang::ObjCInterfaceDecl::lookupInstanceVariable(clang::IdentifierInfo*, clang::ObjCInterfaceDecl*&)"}, + {"_ZN5clang17ObjCInterfaceDecl20lookupInheritedClassEPKNS_14IdentifierInfoE", "clang::ObjCInterfaceDecl::lookupInheritedClass(clang::IdentifierInfo const*)"}, + {"_ZNK5clang17ObjCInterfaceDecl12lookupMethodENS_8SelectorEb", "clang::ObjCInterfaceDecl::lookupMethod(clang::Selector, bool) const"}, + {"_ZNK5clang16ObjCProtocolDecl12lookupMethodENS_8SelectorEb", "clang::ObjCProtocolDecl::lookupMethod(clang::Selector, bool) const"}, + {"_ZN5clang17ObjCInterfaceDecl19lookupPrivateMethodERKNS_8SelectorEb", "clang::ObjCInterfaceDecl::lookupPrivateMethod(clang::Selector const&, bool)"}, + {"_ZNK5clang17ObjCInterfaceDecl17getImplementationEv", "clang::ObjCInterfaceDecl::getImplementation() const"}, + {"_ZN5clang14ObjCMethodDecl6CreateERNS_10ASTContextENS_14SourceLocationES3_NS_8SelectorENS_8QualTypeEPNS_14TypeSourceInfoEPNS_11DeclContextEbbbbNS0_21ImplementationControlEj", "clang::ObjCMethodDecl::Create(clang::ASTContext&, clang::SourceLocation, clang::SourceLocation, clang::Selector, clang::QualType, clang::TypeSourceInfo*, clang::DeclContext*, bool, bool, bool, bool, clang::ObjCMethodDecl::ImplementationControl, unsigned int)"}, + {"_ZN5clang14ObjCMethodDecl20getNextRedeclarationEv", "clang::ObjCMethodDecl::getNextRedeclaration()"}, + {"_ZNK5clang20ObjCCategoryImplDecl15getCategoryDeclEv", "clang::ObjCCategoryImplDecl::getCategoryDecl() const"}, + {"_ZN5clang14ObjCMethodDecl16getCanonicalDeclEv", "clang::ObjCMethodDecl::getCanonicalDecl()"}, + {"_ZN5clang14ObjCMethodDecl20createImplicitParamsERNS_10ASTContextEPKNS_17ObjCInterfaceDeclE", "clang::ObjCMethodDecl::createImplicitParams(clang::ASTContext&, clang::ObjCInterfaceDecl const*)"}, + {"_ZN5clang14ObjCMethodDecl17getClassInterfaceEv", "clang::ObjCMethodDecl::getClassInterface()"}, + {"_ZN5clang17ObjCInterfaceDecl6CreateERNS_10ASTContextEPNS_11DeclContextENS_14SourceLocationEPNS_14IdentifierInfoES5_bb", "clang::ObjCInterfaceDecl::Create(clang::ASTContext&, clang::DeclContext*, clang::SourceLocation, clang::IdentifierInfo*, clang::SourceLocation, bool, bool)"}, + {"_ZN5clang17ObjCInterfaceDeclC1EPNS_11DeclContextENS_14SourceLocationEPNS_14IdentifierInfoES3_bb", "clang::ObjCInterfaceDecl::ObjCInterfaceDecl(clang::DeclContext*, clang::SourceLocation, clang::IdentifierInfo*, clang::SourceLocation, bool, bool)"}, + {"_ZN5clang17ObjCInterfaceDeclC2EPNS_11DeclContextENS_14SourceLocationEPNS_14IdentifierInfoES3_bb", "clang::ObjCInterfaceDecl::ObjCInterfaceDecl(clang::DeclContext*, clang::SourceLocation, clang::IdentifierInfo*, clang::SourceLocation, bool, bool)"}, + {"_ZN5clang17ObjCInterfaceDecl22setExternallyCompletedEv", "clang::ObjCInterfaceDecl::setExternallyCompleted()"}, + {"_ZN5clang17ObjCInterfaceDecl17setImplementationEPNS_22ObjCImplementationDeclE", "clang::ObjCInterfaceDecl::setImplementation(clang::ObjCImplementationDecl*)"}, + {"_ZN5clang17ObjCInterfaceDecl23all_declared_ivar_beginEv", "clang::ObjCInterfaceDecl::all_declared_ivar_begin()"}, + {"_ZNK5clang17ObjCInterfaceDecl23FindCategoryDeclarationEPNS_14IdentifierInfoE", "clang::ObjCInterfaceDecl::FindCategoryDeclaration(clang::IdentifierInfo*) const"}, + {"_ZNK5clang17ObjCInterfaceDecl25getCategoryInstanceMethodENS_8SelectorE", "clang::ObjCInterfaceDecl::getCategoryInstanceMethod(clang::Selector) const"}, + {"_ZNK5clang16ObjCCategoryDecl17getImplementationEv", "clang::ObjCCategoryDecl::getImplementation() const"}, + {"_ZNK5clang17ObjCInterfaceDecl22getCategoryClassMethodENS_8SelectorE", "clang::ObjCInterfaceDecl::getCategoryClassMethod(clang::Selector) const"}, + {"_ZN5clang17ObjCInterfaceDecl23ClassImplementsProtocolEPNS_16ObjCProtocolDeclEbb", "clang::ObjCInterfaceDecl::ClassImplementsProtocol(clang::ObjCProtocolDecl*, bool, bool)"}, + {"_ZN5clang12ObjCIvarDecl6CreateERNS_10ASTContextEPNS_17ObjCContainerDeclENS_14SourceLocationEPNS_14IdentifierInfoENS_8QualTypeEPNS_14TypeSourceInfoENS0_13AccessControlEPNS_4ExprEb", "clang::ObjCIvarDecl::Create(clang::ASTContext&, clang::ObjCContainerDecl*, clang::SourceLocation, clang::IdentifierInfo*, clang::QualType, clang::TypeSourceInfo*, clang::ObjCIvarDecl::AccessControl, clang::Expr*, bool)"}, + {"_ZNK5clang12ObjCIvarDecl22getContainingInterfaceEv", "clang::ObjCIvarDecl::getContainingInterface() const"}, + {"_ZN5clang19ObjCAtDefsFieldDecl6CreateERNS_10ASTContextEPNS_11DeclContextENS_14SourceLocationEPNS_14IdentifierInfoENS_8QualTypeEPNS_4ExprE", "clang::ObjCAtDefsFieldDecl::Create(clang::ASTContext&, clang::DeclContext*, clang::SourceLocation, clang::IdentifierInfo*, clang::QualType, clang::Expr*)"}, + {"_ZN5clang16ObjCProtocolDecl6CreateERNS_10ASTContextEPNS_11DeclContextENS_14SourceLocationEPNS_14IdentifierInfoE", "clang::ObjCProtocolDecl::Create(clang::ASTContext&, clang::DeclContext*, clang::SourceLocation, clang::IdentifierInfo*)"}, + {"_ZN5clang16ObjCProtocolDecl19lookupProtocolNamedEPNS_14IdentifierInfoE", "clang::ObjCProtocolDecl::lookupProtocolNamed(clang::IdentifierInfo*)"}, + {"_ZN5clang13ObjCClassDeclC1EPNS_11DeclContextENS_14SourceLocationEPKPNS_17ObjCInterfaceDeclEPKS3_jRNS_10ASTContextE", "clang::ObjCClassDecl::ObjCClassDecl(clang::DeclContext*, clang::SourceLocation, clang::ObjCInterfaceDecl* const*, clang::SourceLocation const*, unsigned int, clang::ASTContext&)"}, + {"_ZN5clang13ObjCClassDeclC2EPNS_11DeclContextENS_14SourceLocationEPKPNS_17ObjCInterfaceDeclEPKS3_jRNS_10ASTContextE", "clang::ObjCClassDecl::ObjCClassDecl(clang::DeclContext*, clang::SourceLocation, clang::ObjCInterfaceDecl* const*, clang::SourceLocation const*, unsigned int, clang::ASTContext&)"}, + {"_ZN5clang13ObjCClassDecl12setClassListERNS_10ASTContextEPKPNS_17ObjCInterfaceDeclEPKNS_14SourceLocationEj", "clang::ObjCClassDecl::setClassList(clang::ASTContext&, clang::ObjCInterfaceDecl* const*, clang::SourceLocation const*, unsigned int)"}, + {"_ZN5clang13ObjCClassDecl6CreateERNS_10ASTContextEPNS_11DeclContextENS_14SourceLocationEPKPNS_17ObjCInterfaceDeclEPKS5_j", "clang::ObjCClassDecl::Create(clang::ASTContext&, clang::DeclContext*, clang::SourceLocation, clang::ObjCInterfaceDecl* const*, clang::SourceLocation const*, unsigned int)"}, + {"_ZNK5clang13ObjCClassDecl14getSourceRangeEv", "clang::ObjCClassDecl::getSourceRange() const"}, + {"_ZN5clang23ObjCForwardProtocolDeclC1EPNS_11DeclContextENS_14SourceLocationEPKPNS_16ObjCProtocolDeclEjPKS3_RNS_10ASTContextE", "clang::ObjCForwardProtocolDecl::ObjCForwardProtocolDecl(clang::DeclContext*, clang::SourceLocation, clang::ObjCProtocolDecl* const*, unsigned int, clang::SourceLocation const*, clang::ASTContext&)"}, + {"_ZN5clang23ObjCForwardProtocolDeclC2EPNS_11DeclContextENS_14SourceLocationEPKPNS_16ObjCProtocolDeclEjPKS3_RNS_10ASTContextE", "clang::ObjCForwardProtocolDecl::ObjCForwardProtocolDecl(clang::DeclContext*, clang::SourceLocation, clang::ObjCProtocolDecl* const*, unsigned int, clang::SourceLocation const*, clang::ASTContext&)"}, + {"_ZN5clang23ObjCForwardProtocolDecl6CreateERNS_10ASTContextEPNS_11DeclContextENS_14SourceLocationEPKPNS_16ObjCProtocolDeclEjPKS5_", "clang::ObjCForwardProtocolDecl::Create(clang::ASTContext&, clang::DeclContext*, clang::SourceLocation, clang::ObjCProtocolDecl* const*, unsigned int, clang::SourceLocation const*)"}, + {"_ZN5clang16ObjCCategoryDecl6CreateERNS_10ASTContextEPNS_11DeclContextENS_14SourceLocationES5_S5_PNS_14IdentifierInfoE", "clang::ObjCCategoryDecl::Create(clang::ASTContext&, clang::DeclContext*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::IdentifierInfo*)"}, + {"_ZN5clang16ObjCCategoryDecl17setImplementationEPNS_20ObjCCategoryImplDeclE", "clang::ObjCCategoryDecl::setImplementation(clang::ObjCCategoryImplDecl*)"}, + {"_ZN5clang20ObjCCategoryImplDecl6CreateERNS_10ASTContextEPNS_11DeclContextENS_14SourceLocationEPNS_14IdentifierInfoEPNS_17ObjCInterfaceDeclE", "clang::ObjCCategoryImplDecl::Create(clang::ASTContext&, clang::DeclContext*, clang::SourceLocation, clang::IdentifierInfo*, clang::ObjCInterfaceDecl*)"}, + {"_ZN5clang12ObjCImplDecl25addPropertyImplementationEPNS_20ObjCPropertyImplDeclE", "clang::ObjCImplDecl::addPropertyImplementation(clang::ObjCPropertyImplDecl*)"}, + {"_ZN5clang12ObjCImplDecl17setClassInterfaceEPNS_17ObjCInterfaceDeclE", "clang::ObjCImplDecl::setClassInterface(clang::ObjCInterfaceDecl*)"}, + {"_ZNK5clang12ObjCImplDecl24FindPropertyImplIvarDeclEPNS_14IdentifierInfoE", "clang::ObjCImplDecl::FindPropertyImplIvarDecl(clang::IdentifierInfo*) const"}, + {"_ZNK5clang12ObjCImplDecl20FindPropertyImplDeclEPNS_14IdentifierInfoE", "clang::ObjCImplDecl::FindPropertyImplDecl(clang::IdentifierInfo*) const"}, + {"_ZN5clanglsERN4llvm11raw_ostreamEPKNS_20ObjCCategoryImplDeclE", "clang::operator<<(llvm::raw_ostream&, clang::ObjCCategoryImplDecl const*)"}, + {"_ZN5clang22ObjCImplementationDecl6CreateERNS_10ASTContextEPNS_11DeclContextENS_14SourceLocationEPNS_17ObjCInterfaceDeclES7_", "clang::ObjCImplementationDecl::Create(clang::ASTContext&, clang::DeclContext*, clang::SourceLocation, clang::ObjCInterfaceDecl*, clang::ObjCInterfaceDecl*)"}, + {"_ZN5clanglsERN4llvm11raw_ostreamEPKNS_22ObjCImplementationDeclE", "clang::operator<<(llvm::raw_ostream&, clang::ObjCImplementationDecl const*)"}, + {"_ZN5clang23ObjCCompatibleAliasDecl6CreateERNS_10ASTContextEPNS_11DeclContextENS_14SourceLocationEPNS_14IdentifierInfoEPNS_17ObjCInterfaceDeclE", "clang::ObjCCompatibleAliasDecl::Create(clang::ASTContext&, clang::DeclContext*, clang::SourceLocation, clang::IdentifierInfo*, clang::ObjCInterfaceDecl*)"}, + {"_ZN5clang16ObjCPropertyDecl6CreateERNS_10ASTContextEPNS_11DeclContextENS_14SourceLocationEPNS_14IdentifierInfoES5_PNS_14TypeSourceInfoENS0_15PropertyControlE", "clang::ObjCPropertyDecl::Create(clang::ASTContext&, clang::DeclContext*, clang::SourceLocation, clang::IdentifierInfo*, clang::SourceLocation, clang::TypeSourceInfo*, clang::ObjCPropertyDecl::PropertyControl)"}, + {"_ZN5clang20ObjCPropertyImplDecl6CreateERNS_10ASTContextEPNS_11DeclContextENS_14SourceLocationES5_PNS_16ObjCPropertyDeclENS0_4KindEPNS_12ObjCIvarDeclES5_", "clang::ObjCPropertyImplDecl::Create(clang::ASTContext&, clang::DeclContext*, clang::SourceLocation, clang::SourceLocation, clang::ObjCPropertyDecl*, clang::ObjCPropertyImplDecl::Kind, clang::ObjCIvarDecl*, clang::SourceLocation)"}, + {"_ZNK5clang20ObjCPropertyImplDecl14getSourceRangeEv", "clang::ObjCPropertyImplDecl::getSourceRange() const"}, + {"_ZNK5clang17ObjCInterfaceDecl29all_referenced_protocol_beginEv", "clang::ObjCInterfaceDecl::all_referenced_protocol_begin() const"}, + {"_ZNK5clang17ObjCInterfaceDecl27all_referenced_protocol_endEv", "clang::ObjCInterfaceDecl::all_referenced_protocol_end() const"}, + {"_ZN5clang17ObjCContainerDeclC2ENS_4Decl4KindEPNS_11DeclContextENS_14SourceLocationEPNS_14IdentifierInfoE", "clang::ObjCContainerDecl::ObjCContainerDecl(clang::Decl::Kind, clang::DeclContext*, clang::SourceLocation, clang::IdentifierInfo*)"}, + {"_ZN5clang14ObjCMethodDeclD1Ev", "clang::ObjCMethodDecl::~ObjCMethodDecl()"}, + {"_ZN5clang14ObjCMethodDeclD0Ev", "clang::ObjCMethodDecl::~ObjCMethodDecl()"}, + {"_ZNK5clang14ObjCMethodDecl14getSourceRangeEv", "clang::ObjCMethodDecl::getSourceRange() const"}, + {"_ZNK5clang14ObjCMethodDecl7getBodyEv", "clang::ObjCMethodDecl::getBody() const"}, + {"_ZN5clang20ObjCPropertyImplDeclD1Ev", "clang::ObjCPropertyImplDecl::~ObjCPropertyImplDecl()"}, + {"_ZN5clang20ObjCPropertyImplDeclD0Ev", "clang::ObjCPropertyImplDecl::~ObjCPropertyImplDecl()"}, + {"_ZN5clang13ObjCClassDeclD1Ev", "clang::ObjCClassDecl::~ObjCClassDecl()"}, + {"_ZN5clang13ObjCClassDeclD0Ev", "clang::ObjCClassDecl::~ObjCClassDecl()"}, + {"_ZN5clang23ObjCForwardProtocolDeclD1Ev", "clang::ObjCForwardProtocolDecl::~ObjCForwardProtocolDecl()"}, + {"_ZN5clang23ObjCForwardProtocolDeclD0Ev", "clang::ObjCForwardProtocolDecl::~ObjCForwardProtocolDecl()"}, + {"_ZN5clang17ObjCInterfaceDeclD1Ev", "clang::ObjCInterfaceDecl::~ObjCInterfaceDecl()"}, + {"_ZN5clang17ObjCInterfaceDeclD0Ev", "clang::ObjCInterfaceDecl::~ObjCInterfaceDecl()"}, + {"_ZNK5clang17ObjCContainerDecl14getSourceRangeEv", "clang::ObjCContainerDecl::getSourceRange() const"}, + {"_ZN5clang17ObjCContainerDeclD1Ev", "clang::ObjCContainerDecl::~ObjCContainerDecl()"}, + {"_ZN5clang17ObjCContainerDeclD0Ev", "clang::ObjCContainerDecl::~ObjCContainerDecl()"}, + {"_ZN5clang16ObjCPropertyDeclD1Ev", "clang::ObjCPropertyDecl::~ObjCPropertyDecl()"}, + {"_ZN5clang16ObjCPropertyDeclD0Ev", "clang::ObjCPropertyDecl::~ObjCPropertyDecl()"}, + {"_ZNK5clang16ObjCPropertyDecl14getSourceRangeEv", "clang::ObjCPropertyDecl::getSourceRange() const"}, + {"_ZN5clang23ObjCCompatibleAliasDeclD1Ev", "clang::ObjCCompatibleAliasDecl::~ObjCCompatibleAliasDecl()"}, + {"_ZN5clang23ObjCCompatibleAliasDeclD0Ev", "clang::ObjCCompatibleAliasDecl::~ObjCCompatibleAliasDecl()"}, + {"_ZN5clang22ObjCImplementationDeclD1Ev", "clang::ObjCImplementationDecl::~ObjCImplementationDecl()"}, + {"_ZN5clang22ObjCImplementationDeclD0Ev", "clang::ObjCImplementationDecl::~ObjCImplementationDecl()"}, + {"_ZN5clang12ObjCImplDeclD1Ev", "clang::ObjCImplDecl::~ObjCImplDecl()"}, + {"_ZN5clang12ObjCImplDeclD0Ev", "clang::ObjCImplDecl::~ObjCImplDecl()"}, + {"_ZN5clang20ObjCCategoryImplDeclD1Ev", "clang::ObjCCategoryImplDecl::~ObjCCategoryImplDecl()"}, + {"_ZN5clang20ObjCCategoryImplDeclD0Ev", "clang::ObjCCategoryImplDecl::~ObjCCategoryImplDecl()"}, + {"_ZN5clang16ObjCCategoryDeclD1Ev", "clang::ObjCCategoryDecl::~ObjCCategoryDecl()"}, + {"_ZN5clang16ObjCCategoryDeclD0Ev", "clang::ObjCCategoryDecl::~ObjCCategoryDecl()"}, + {"_ZNK5clang16ObjCCategoryDecl14getSourceRangeEv", "clang::ObjCCategoryDecl::getSourceRange() const"}, + {"_ZN5clang16ObjCProtocolDeclD1Ev", "clang::ObjCProtocolDecl::~ObjCProtocolDecl()"}, + {"_ZN5clang16ObjCProtocolDeclD0Ev", "clang::ObjCProtocolDecl::~ObjCProtocolDecl()"}, + {"_ZN5clang19ObjCAtDefsFieldDeclD1Ev", "clang::ObjCAtDefsFieldDecl::~ObjCAtDefsFieldDecl()"}, + {"_ZN5clang19ObjCAtDefsFieldDeclD0Ev", "clang::ObjCAtDefsFieldDecl::~ObjCAtDefsFieldDecl()"}, + {"_ZN5clang12ObjCIvarDeclC2EPNS_17ObjCContainerDeclENS_14SourceLocationEPNS_14IdentifierInfoENS_8QualTypeEPNS_14TypeSourceInfoENS0_13AccessControlEPNS_4ExprEb", "clang::ObjCIvarDecl::ObjCIvarDecl(clang::ObjCContainerDecl*, clang::SourceLocation, clang::IdentifierInfo*, clang::QualType, clang::TypeSourceInfo*, clang::ObjCIvarDecl::AccessControl, clang::Expr*, bool)"}, + {"_ZN5clang12ObjCIvarDeclD1Ev", "clang::ObjCIvarDecl::~ObjCIvarDecl()"}, + {"_ZN5clang12ObjCIvarDeclD0Ev", "clang::ObjCIvarDecl::~ObjCIvarDecl()"}, + {"_ZN5clang14ObjCMethodDeclC2ENS_14SourceLocationES1_NS_8SelectorENS_8QualTypeEPNS_14TypeSourceInfoEPNS_11DeclContextEbbbbNS0_21ImplementationControlEj", "clang::ObjCMethodDecl::ObjCMethodDecl(clang::SourceLocation, clang::SourceLocation, clang::Selector, clang::QualType, clang::TypeSourceInfo*, clang::DeclContext*, bool, bool, bool, bool, clang::ObjCMethodDecl::ImplementationControl, unsigned int)"}, + {"_ZNK5clang4Decl5printERN4llvm11raw_ostreamEj", "clang::Decl::print(llvm::raw_ostream&, unsigned int) const"}, + {"_ZNK5clang4Decl5printERN4llvm11raw_ostreamERKNS_14PrintingPolicyEj", "clang::Decl::print(llvm::raw_ostream&, clang::PrintingPolicy const&, unsigned int) const"}, + {"_ZN5clang11DeclVisitorIN12_GLOBAL__N_111DeclPrinterEvE5VisitEPNS_4DeclE", "clang::DeclVisitor<(anonymous namespace)::DeclPrinter, void>::Visit(clang::Decl*)"}, + {"_ZN5clang4Decl10printGroupEPPS0_jRN4llvm11raw_ostreamERKNS_14PrintingPolicyEj", "clang::Decl::printGroup(clang::Decl**, unsigned int, llvm::raw_ostream&, clang::PrintingPolicy const&, unsigned int)"}, + {"_ZNK5clang11DeclContext15dumpDeclContextEv", "clang::DeclContext::dumpDeclContext() const"}, + {"_ZN12_GLOBAL__N_111DeclPrinter16VisitDeclContextEPN5clang11DeclContextEb", "(anonymous namespace)::DeclPrinter::VisitDeclContext(clang::DeclContext*, bool)"}, + {"_ZNK5clang4Decl4dumpEv", "clang::Decl::dump() const"}, + {"_ZN12_GLOBAL__N_111DeclPrinter18VisitCXXRecordDeclEPN5clang13CXXRecordDeclE", "(anonymous namespace)::DeclPrinter::VisitCXXRecordDecl(clang::CXXRecordDecl*)"}, + {"_ZN12_GLOBAL__N_111DeclPrinter14VisitFieldDeclEPN5clang9FieldDeclE", "(anonymous namespace)::DeclPrinter::VisitFieldDecl(clang::FieldDecl*)"}, + {"_ZN12_GLOBAL__N_111DeclPrinter17VisitFunctionDeclEPN5clang12FunctionDeclE", "(anonymous namespace)::DeclPrinter::VisitFunctionDecl(clang::FunctionDecl*)"}, + {"_ZN12_GLOBAL__N_111DeclPrinter12VisitVarDeclEPN5clang7VarDeclE", "(anonymous namespace)::DeclPrinter::VisitVarDecl(clang::VarDecl*)"}, + {"_ZN12_GLOBAL__N_111DeclPrinter17VisitTemplateDeclEPN5clang12TemplateDeclE", "(anonymous namespace)::DeclPrinter::VisitTemplateDecl(clang::TemplateDecl*)"}, + {"_ZN12_GLOBAL__N_111DeclPrinter16ProcessDeclGroupERN4llvm15SmallVectorImplIPN5clang4DeclEEE", "(anonymous namespace)::DeclPrinter::ProcessDeclGroup(llvm::SmallVectorImpl&)"}, + {"_ZN5clang21TemplateParameterListC1ENS_14SourceLocationES1_PPNS_9NamedDeclEjS1_", "clang::TemplateParameterList::TemplateParameterList(clang::SourceLocation, clang::SourceLocation, clang::NamedDecl**, unsigned int, clang::SourceLocation)"}, + {"_ZN5clang21TemplateParameterListC2ENS_14SourceLocationES1_PPNS_9NamedDeclEjS1_", "clang::TemplateParameterList::TemplateParameterList(clang::SourceLocation, clang::SourceLocation, clang::NamedDecl**, unsigned int, clang::SourceLocation)"}, + {"_ZN5clang21TemplateParameterList6CreateERKNS_10ASTContextENS_14SourceLocationES4_PPNS_9NamedDeclEjS4_", "clang::TemplateParameterList::Create(clang::ASTContext const&, clang::SourceLocation, clang::SourceLocation, clang::NamedDecl**, unsigned int, clang::SourceLocation)"}, + {"_ZNK5clang21TemplateParameterList23getMinRequiredArgumentsEv", "clang::TemplateParameterList::getMinRequiredArguments() const"}, + {"_ZNK5clang21TemplateParameterList8getDepthEv", "clang::TemplateParameterList::getDepth() const"}, + {"_ZNK5clang20TemplateTypeParmDecl8getDepthEv", "clang::TemplateTypeParmDecl::getDepth() const"}, + {"_ZN5clang24RedeclarableTemplateDecl12getCommonPtrEv", "clang::RedeclarableTemplateDecl::getCommonPtr()"}, + {"_ZN5clang24RedeclarableTemplateDecl20getCanonicalDeclImplEv", "clang::RedeclarableTemplateDecl::getCanonicalDeclImpl()"}, + {"_ZN5clang24RedeclarableTemplateDecl26setPreviousDeclarationImplEPS0_", "clang::RedeclarableTemplateDecl::setPreviousDeclarationImpl(clang::RedeclarableTemplateDecl*)"}, + {"_ZN5clang24RedeclarableTemplateDecl20getNextRedeclarationEv", "clang::RedeclarableTemplateDecl::getNextRedeclaration()"}, + {"_ZN5clang20FunctionTemplateDecl16DeallocateCommonEPv", "clang::FunctionTemplateDecl::DeallocateCommon(void*)"}, + {"_ZN5clang20FunctionTemplateDecl6CreateERNS_10ASTContextEPNS_11DeclContextENS_14SourceLocationENS_15DeclarationNameEPNS_21TemplateParameterListEPNS_9NamedDeclE", "clang::FunctionTemplateDecl::Create(clang::ASTContext&, clang::DeclContext*, clang::SourceLocation, clang::DeclarationName, clang::TemplateParameterList*, clang::NamedDecl*)"}, + {"_ZN5clang20FunctionTemplateDecl9newCommonERNS_10ASTContextE", "clang::FunctionTemplateDecl::newCommon(clang::ASTContext&)"}, + {"_ZN5clang20FunctionTemplateDecl18findSpecializationEPKNS_16TemplateArgumentEjRPv", "clang::FunctionTemplateDecl::findSpecialization(clang::TemplateArgument const*, unsigned int, void*&)"}, + {"_ZN5clang17ClassTemplateDecl16DeallocateCommonEPv", "clang::ClassTemplateDecl::DeallocateCommon(void*)"}, + {"_ZN5clang17ClassTemplateDecl6CreateERNS_10ASTContextEPNS_11DeclContextENS_14SourceLocationENS_15DeclarationNameEPNS_21TemplateParameterListEPNS_9NamedDeclEPS0_", "clang::ClassTemplateDecl::Create(clang::ASTContext&, clang::DeclContext*, clang::SourceLocation, clang::DeclarationName, clang::TemplateParameterList*, clang::NamedDecl*, clang::ClassTemplateDecl*)"}, + {"_ZN5clang17ClassTemplateDecl23LoadLazySpecializationsEv", "clang::ClassTemplateDecl::LoadLazySpecializations()"}, + {"_ZN5clang17ClassTemplateDecl18getSpecializationsEv", "clang::ClassTemplateDecl::getSpecializations()"}, + {"_ZN5clang17ClassTemplateDecl25getPartialSpecializationsEv", "clang::ClassTemplateDecl::getPartialSpecializations()"}, + {"_ZN5clang17ClassTemplateDecl9newCommonERNS_10ASTContextE", "clang::ClassTemplateDecl::newCommon(clang::ASTContext&)"}, + {"_ZN5clang17ClassTemplateDecl18findSpecializationEPKNS_16TemplateArgumentEjRPv", "clang::ClassTemplateDecl::findSpecialization(clang::TemplateArgument const*, unsigned int, void*&)"}, + {"_ZN5clang17ClassTemplateDecl17AddSpecializationEPNS_31ClassTemplateSpecializationDeclEPv", "clang::ClassTemplateDecl::AddSpecialization(clang::ClassTemplateSpecializationDecl*, void*)"}, + {"_ZN5clang17ClassTemplateDecl25findPartialSpecializationEPKNS_16TemplateArgumentEjRPv", "clang::ClassTemplateDecl::findPartialSpecialization(clang::TemplateArgument const*, unsigned int, void*&)"}, + {"_ZN5clang17ClassTemplateDecl24AddPartialSpecializationEPNS_38ClassTemplatePartialSpecializationDeclEPv", "clang::ClassTemplateDecl::AddPartialSpecialization(clang::ClassTemplatePartialSpecializationDecl*, void*)"}, + {"_ZN5clang17ClassTemplateDecl25getPartialSpecializationsERN4llvm15SmallVectorImplIPNS_38ClassTemplatePartialSpecializationDeclEEE", "clang::ClassTemplateDecl::getPartialSpecializations(llvm::SmallVectorImpl&)"}, + {"_ZN5clang17ClassTemplateDecl25findPartialSpecializationENS_8QualTypeE", "clang::ClassTemplateDecl::findPartialSpecialization(clang::QualType)"}, + {"_ZN5clang17ClassTemplateDecl37findPartialSpecInstantiatedFromMemberEPNS_38ClassTemplatePartialSpecializationDeclE", "clang::ClassTemplateDecl::findPartialSpecInstantiatedFromMember(clang::ClassTemplatePartialSpecializationDecl*)"}, + {"_ZN5clang17ClassTemplateDecl34getInjectedClassNameSpecializationEv", "clang::ClassTemplateDecl::getInjectedClassNameSpecialization()"}, + {"_ZN5clang20TemplateTypeParmDecl6CreateERKNS_10ASTContextEPNS_11DeclContextENS_14SourceLocationEjjPNS_14IdentifierInfoEbb", "clang::TemplateTypeParmDecl::Create(clang::ASTContext const&, clang::DeclContext*, clang::SourceLocation, unsigned int, unsigned int, clang::IdentifierInfo*, bool, bool)"}, + {"_ZN5clang20TemplateTypeParmDecl6CreateERKNS_10ASTContextENS_4Decl10EmptyShellE", "clang::TemplateTypeParmDecl::Create(clang::ASTContext const&, clang::Decl::EmptyShell)"}, + {"_ZNK5clang20TemplateTypeParmDecl21getDefaultArgumentLocEv", "clang::TemplateTypeParmDecl::getDefaultArgumentLoc() const"}, + {"_ZNK5clang20TemplateTypeParmDecl8getIndexEv", "clang::TemplateTypeParmDecl::getIndex() const"}, + {"_ZN5clang23NonTypeTemplateParmDeclC1EPNS_11DeclContextENS_14SourceLocationEjjPNS_14IdentifierInfoENS_8QualTypeEPNS_14TypeSourceInfoEPKS6_jPS8_", "clang::NonTypeTemplateParmDecl::NonTypeTemplateParmDecl(clang::DeclContext*, clang::SourceLocation, unsigned int, unsigned int, clang::IdentifierInfo*, clang::QualType, clang::TypeSourceInfo*, clang::QualType const*, unsigned int, clang::TypeSourceInfo**)"}, + {"_ZN5clang23NonTypeTemplateParmDeclC2EPNS_11DeclContextENS_14SourceLocationEjjPNS_14IdentifierInfoENS_8QualTypeEPNS_14TypeSourceInfoEPKS6_jPS8_", "clang::NonTypeTemplateParmDecl::NonTypeTemplateParmDecl(clang::DeclContext*, clang::SourceLocation, unsigned int, unsigned int, clang::IdentifierInfo*, clang::QualType, clang::TypeSourceInfo*, clang::QualType const*, unsigned int, clang::TypeSourceInfo**)"}, + {"_ZN5clang23NonTypeTemplateParmDecl6CreateERKNS_10ASTContextEPNS_11DeclContextENS_14SourceLocationEjjPNS_14IdentifierInfoENS_8QualTypeEbPNS_14TypeSourceInfoE", "clang::NonTypeTemplateParmDecl::Create(clang::ASTContext const&, clang::DeclContext*, clang::SourceLocation, unsigned int, unsigned int, clang::IdentifierInfo*, clang::QualType, bool, clang::TypeSourceInfo*)"}, + {"_ZN5clang23NonTypeTemplateParmDecl6CreateERKNS_10ASTContextEPNS_11DeclContextENS_14SourceLocationEjjPNS_14IdentifierInfoENS_8QualTypeEPNS_14TypeSourceInfoEPKS9_jPSB_", "clang::NonTypeTemplateParmDecl::Create(clang::ASTContext const&, clang::DeclContext*, clang::SourceLocation, unsigned int, unsigned int, clang::IdentifierInfo*, clang::QualType, clang::TypeSourceInfo*, clang::QualType const*, unsigned int, clang::TypeSourceInfo**)"}, + {"_ZNK5clang23NonTypeTemplateParmDecl16getInnerLocStartEv", "clang::NonTypeTemplateParmDecl::getInnerLocStart() const"}, + {"_ZNK5clang23NonTypeTemplateParmDecl14getSourceRangeEv", "clang::NonTypeTemplateParmDecl::getSourceRange() const"}, + {"_ZNK5clang23NonTypeTemplateParmDecl21getDefaultArgumentLocEv", "clang::NonTypeTemplateParmDecl::getDefaultArgumentLoc() const"}, + {"_ZN5clang24TemplateTemplateParmDecl6CreateERKNS_10ASTContextEPNS_11DeclContextENS_14SourceLocationEjjbPNS_14IdentifierInfoEPNS_21TemplateParameterListE", "clang::TemplateTemplateParmDecl::Create(clang::ASTContext const&, clang::DeclContext*, clang::SourceLocation, unsigned int, unsigned int, bool, clang::IdentifierInfo*, clang::TemplateParameterList*)"}, + {"_ZN5clang20TemplateArgumentList10CreateCopyERNS_10ASTContextEPKNS_16TemplateArgumentEj", "clang::TemplateArgumentList::CreateCopy(clang::ASTContext&, clang::TemplateArgument const*, unsigned int)"}, + {"_ZN5clang31ClassTemplateSpecializationDeclC1ERNS_10ASTContextENS_4Decl4KindENS_11TagTypeKindEPNS_11DeclContextENS_14SourceLocationEPNS_17ClassTemplateDeclEPKNS_16TemplateArgumentEjPS0_", "clang::ClassTemplateSpecializationDecl::ClassTemplateSpecializationDecl(clang::ASTContext&, clang::Decl::Kind, clang::TagTypeKind, clang::DeclContext*, clang::SourceLocation, clang::ClassTemplateDecl*, clang::TemplateArgument const*, unsigned int, clang::ClassTemplateSpecializationDecl*)"}, + {"_ZN5clang31ClassTemplateSpecializationDeclC2ERNS_10ASTContextENS_4Decl4KindENS_11TagTypeKindEPNS_11DeclContextENS_14SourceLocationEPNS_17ClassTemplateDeclEPKNS_16TemplateArgumentEjPS0_", "clang::ClassTemplateSpecializationDecl::ClassTemplateSpecializationDecl(clang::ASTContext&, clang::Decl::Kind, clang::TagTypeKind, clang::DeclContext*, clang::SourceLocation, clang::ClassTemplateDecl*, clang::TemplateArgument const*, unsigned int, clang::ClassTemplateSpecializationDecl*)"}, + {"_ZN5clang31ClassTemplateSpecializationDeclC1ENS_4Decl4KindE", "clang::ClassTemplateSpecializationDecl::ClassTemplateSpecializationDecl(clang::Decl::Kind)"}, + {"_ZN5clang31ClassTemplateSpecializationDeclC2ENS_4Decl4KindE", "clang::ClassTemplateSpecializationDecl::ClassTemplateSpecializationDecl(clang::Decl::Kind)"}, + {"_ZN5clang31ClassTemplateSpecializationDecl6CreateERNS_10ASTContextENS_11TagTypeKindEPNS_11DeclContextENS_14SourceLocationEPNS_17ClassTemplateDeclEPKNS_16TemplateArgumentEjPS0_", "clang::ClassTemplateSpecializationDecl::Create(clang::ASTContext&, clang::TagTypeKind, clang::DeclContext*, clang::SourceLocation, clang::ClassTemplateDecl*, clang::TemplateArgument const*, unsigned int, clang::ClassTemplateSpecializationDecl*)"}, + {"_ZN5clang31ClassTemplateSpecializationDecl6CreateERNS_10ASTContextENS_4Decl10EmptyShellE", "clang::ClassTemplateSpecializationDecl::Create(clang::ASTContext&, clang::Decl::EmptyShell)"}, + {"_ZNK5clang31ClassTemplateSpecializationDecl20getNameForDiagnosticERSsRKNS_14PrintingPolicyEb", "clang::ClassTemplateSpecializationDecl::getNameForDiagnostic(std::string&, clang::PrintingPolicy const&, bool) const"}, + {"_ZNK5clang31ClassTemplateSpecializationDecl22getSpecializedTemplateEv", "clang::ClassTemplateSpecializationDecl::getSpecializedTemplate() const"}, + {"_ZN5clang38ClassTemplatePartialSpecializationDecl6CreateERNS_10ASTContextENS_11TagTypeKindEPNS_11DeclContextENS_14SourceLocationEPNS_21TemplateParameterListEPNS_17ClassTemplateDeclEPKNS_16TemplateArgumentEjRKNS_24TemplateArgumentListInfoENS_8QualTypeEPS0_j", "clang::ClassTemplatePartialSpecializationDecl::Create(clang::ASTContext&, clang::TagTypeKind, clang::DeclContext*, clang::SourceLocation, clang::TemplateParameterList*, clang::ClassTemplateDecl*, clang::TemplateArgument const*, unsigned int, clang::TemplateArgumentListInfo const&, clang::QualType, clang::ClassTemplatePartialSpecializationDecl*, unsigned int)"}, + {"_ZN5clang38ClassTemplatePartialSpecializationDecl6CreateERNS_10ASTContextENS_4Decl10EmptyShellE", "clang::ClassTemplatePartialSpecializationDecl::Create(clang::ASTContext&, clang::Decl::EmptyShell)"}, + {"_ZN5clang18FriendTemplateDecl6CreateERNS_10ASTContextEPNS_11DeclContextENS_14SourceLocationEjPPNS_21TemplateParameterListEN4llvm12PointerUnionIPNS_9NamedDeclEPNS_14TypeSourceInfoEEES5_", "clang::FriendTemplateDecl::Create(clang::ASTContext&, clang::DeclContext*, clang::SourceLocation, unsigned int, clang::TemplateParameterList**, llvm::PointerUnion, clang::SourceLocation)"}, + {"_ZN5clang18FriendTemplateDecl6CreateERNS_10ASTContextENS_4Decl10EmptyShellE", "clang::FriendTemplateDecl::Create(clang::ASTContext&, clang::Decl::EmptyShell)"}, + + // {"_ZN5clang24RedeclarableTemplateDecl22findSpecializationImplINS_34FunctionTemplateSpecializationInfoEEEPNS0_15SpecEntryTraitsIT_E8DeclTypeERN4llvm10FoldingSetIS4_EEPKNS_16TemplateArgumentEjRPv", + // "clang::RedeclarableTemplateDecl::SpecEntryTraits::DeclType* clang::RedeclarableTemplateDecl::findSpecializationImpl(llvm::FoldingSet&, clang::TemplateArgument const*, unsigned int, void*&)"}, + // "clang::RedeclarableTemplateDecl::SpecEntryTraits::DeclType* clang::RedeclarableTemplateDecl::findSpecializationImpl(llvm::FoldingSet>&, clang::TemplateArgument const*, unsigned int, void*&)" was returned + + + // {"_ZN5clang24RedeclarableTemplateDecl22findSpecializationImplINS_31ClassTemplateSpecializationDeclEEEPNS0_15SpecEntryTraitsIT_E8DeclTypeERN4llvm10FoldingSetIS4_EEPKNS_16TemplateArgumentEjRPv", + // "clang::RedeclarableTemplateDecl::SpecEntryTraits::DeclType* clang::RedeclarableTemplateDecl::findSpecializationImpl(llvm::FoldingSet&, clang::TemplateArgument const*, unsigned int, void*&)"}, + // "clang::RedeclarableTemplateDecl::SpecEntryTraits::DeclType* clang::RedeclarableTemplateDecl::findSpecializationImpl(llvm::FoldingSet>&, clang::TemplateArgument const*, unsigned int, void*&)" was returned + + + // {"_ZN5clang24RedeclarableTemplateDecl22findSpecializationImplINS_38ClassTemplatePartialSpecializationDeclEEEPNS0_15SpecEntryTraitsIT_E8DeclTypeERN4llvm10FoldingSetIS4_EEPKNS_16TemplateArgumentEjRPv", + // "clang::RedeclarableTemplateDecl::SpecEntryTraits::DeclType* clang::RedeclarableTemplateDecl::findSpecializationImpl(llvm::FoldingSet&, clang::TemplateArgument const*, unsigned int, void*&)"}, + // "clang::RedeclarableTemplateDecl::SpecEntryTraits::DeclType* clang::RedeclarableTemplateDecl::findSpecializationImpl(llvm::FoldingSet>&, clang::TemplateArgument const*, unsigned int, void*&)" was returned + + {"_ZN4llvm15SmallVectorImplIPN5clang38ClassTemplatePartialSpecializationDeclEE6resizeEj", "llvm::SmallVectorImpl::resize(unsigned int)"}, + {"_ZN5clang24RedeclarableTemplateDeclD1Ev", "clang::RedeclarableTemplateDecl::~RedeclarableTemplateDecl()"}, + {"_ZN5clang24RedeclarableTemplateDeclD0Ev", "clang::RedeclarableTemplateDecl::~RedeclarableTemplateDecl()"}, + {"_ZNK5clang12TemplateDecl14getSourceRangeEv", "clang::TemplateDecl::getSourceRange() const"}, + {"_ZN5clang24RedeclarableTemplateDecl16getCanonicalDeclEv", "clang::RedeclarableTemplateDecl::getCanonicalDecl()"}, + {"_ZN5clang20FunctionTemplateDeclD1Ev", "clang::FunctionTemplateDecl::~FunctionTemplateDecl()"}, + {"_ZN5clang20FunctionTemplateDeclD0Ev", "clang::FunctionTemplateDecl::~FunctionTemplateDecl()"}, + {"_ZN5clang20FunctionTemplateDecl16getCanonicalDeclEv", "clang::FunctionTemplateDecl::getCanonicalDecl()"}, + {"_ZN5clang23NonTypeTemplateParmDeclD1Ev", "clang::NonTypeTemplateParmDecl::~NonTypeTemplateParmDecl()"}, + {"_ZN5clang23NonTypeTemplateParmDeclD0Ev", "clang::NonTypeTemplateParmDecl::~NonTypeTemplateParmDecl()"}, + {"_ZN5clang31ClassTemplateSpecializationDeclD1Ev", "clang::ClassTemplateSpecializationDecl::~ClassTemplateSpecializationDecl()"}, + {"_ZN5clang31ClassTemplateSpecializationDeclD0Ev", "clang::ClassTemplateSpecializationDecl::~ClassTemplateSpecializationDecl()"}, + {"_ZN5clang13CXXRecordDecl16getCanonicalDeclEv", "clang::CXXRecordDecl::getCanonicalDecl()"}, + {"_ZNK5clang31ClassTemplateSpecializationDecl16getInnerLocStartEv", "clang::ClassTemplateSpecializationDecl::getInnerLocStart() const"}, + {"_ZNK5clang13CXXRecordDecl16getCanonicalDeclEv", "clang::CXXRecordDecl::getCanonicalDecl() const"}, + {"_ZN5clang17ClassTemplateDeclD1Ev", "clang::ClassTemplateDecl::~ClassTemplateDecl()"}, + {"_ZN5clang17ClassTemplateDeclD0Ev", "clang::ClassTemplateDecl::~ClassTemplateDecl()"}, + {"_ZN5clang17ClassTemplateDecl16getCanonicalDeclEv", "clang::ClassTemplateDecl::getCanonicalDecl()"}, + {"_ZN5clang12TemplateDeclD1Ev", "clang::TemplateDecl::~TemplateDecl()"}, + {"_ZN5clang12TemplateDeclD0Ev", "clang::TemplateDecl::~TemplateDecl()"}, + {"_ZN5clang13CXXRecordDeclD1Ev", "clang::CXXRecordDecl::~CXXRecordDecl()"}, + {"_ZN5clang13CXXRecordDeclD0Ev", "clang::CXXRecordDecl::~CXXRecordDecl()"}, + {"_ZN5clang18FriendTemplateDeclD1Ev", "clang::FriendTemplateDecl::~FriendTemplateDecl()"}, + {"_ZN5clang18FriendTemplateDeclD0Ev", "clang::FriendTemplateDecl::~FriendTemplateDecl()"}, + {"_ZN5clang38ClassTemplatePartialSpecializationDeclD1Ev", "clang::ClassTemplatePartialSpecializationDecl::~ClassTemplatePartialSpecializationDecl()"}, + {"_ZN5clang38ClassTemplatePartialSpecializationDeclD0Ev", "clang::ClassTemplatePartialSpecializationDecl::~ClassTemplatePartialSpecializationDecl()"}, + {"_ZN5clang24TemplateTemplateParmDeclC2EPNS_11DeclContextENS_14SourceLocationEjjbPNS_14IdentifierInfoEPNS_21TemplateParameterListE", "clang::TemplateTemplateParmDecl::TemplateTemplateParmDecl(clang::DeclContext*, clang::SourceLocation, unsigned int, unsigned int, bool, clang::IdentifierInfo*, clang::TemplateParameterList*)"}, + {"_ZN5clang24TemplateTemplateParmDeclD1Ev", "clang::TemplateTemplateParmDecl::~TemplateTemplateParmDecl()"}, + {"_ZN5clang24TemplateTemplateParmDeclD0Ev", "clang::TemplateTemplateParmDecl::~TemplateTemplateParmDecl()"}, + {"_ZNK5clang24TemplateTemplateParmDecl14getSourceRangeEv", "clang::TemplateTemplateParmDecl::getSourceRange() const"}, + {"_ZN5clang20TemplateTypeParmDeclC2EPNS_11DeclContextENS_14SourceLocationEPNS_14IdentifierInfoEbNS_8QualTypeEb", "clang::TemplateTypeParmDecl::TemplateTypeParmDecl(clang::DeclContext*, clang::SourceLocation, clang::IdentifierInfo*, bool, clang::QualType, bool)"}, + {"_ZN5clang20TemplateTypeParmDeclD1Ev", "clang::TemplateTypeParmDecl::~TemplateTypeParmDecl()"}, + {"_ZN5clang20TemplateTypeParmDeclD0Ev", "clang::TemplateTypeParmDecl::~TemplateTypeParmDecl()"}, + {"_ZN4llvm10FoldingSetIN5clang38ClassTemplatePartialSpecializationDeclEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang38ClassTemplatePartialSpecializationDeclEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang38ClassTemplatePartialSpecializationDeclEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang38ClassTemplatePartialSpecializationDeclEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang38ClassTemplatePartialSpecializationDeclEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm10FoldingSetIN5clang31ClassTemplateSpecializationDeclEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang31ClassTemplateSpecializationDeclEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang31ClassTemplateSpecializationDeclEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang31ClassTemplateSpecializationDeclEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang31ClassTemplateSpecializationDeclEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm10FoldingSetIN5clang34FunctionTemplateSpecializationInfoEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang34FunctionTemplateSpecializationInfoEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang34FunctionTemplateSpecializationInfoEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang34FunctionTemplateSpecializationInfoEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang34FunctionTemplateSpecializationInfoEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN5clang15DeclarationName7compareES0_S0_", "clang::DeclarationName::compare(clang::DeclarationName, clang::DeclarationName)"}, + {"_ZNK5clang15DeclarationName11getNameKindEv", "clang::DeclarationName::getNameKind() const"}, + {"_ZNK5clang15DeclarationName15getObjCSelectorEv", "clang::DeclarationName::getObjCSelector() const"}, + {"_ZNK5clang15DeclarationName14getCXXNameTypeEv", "clang::DeclarationName::getCXXNameType() const"}, + {"_ZNK5clang15DeclarationName24getCXXOverloadedOperatorEv", "clang::DeclarationName::getCXXOverloadedOperator() const"}, + {"_ZNK5clang15DeclarationName23getCXXLiteralIdentifierEv", "clang::DeclarationName::getCXXLiteralIdentifier() const"}, + {"_ZN5clang15DeclarationNameC1ENS_8SelectorE", "clang::DeclarationName::DeclarationName(clang::Selector)"}, + {"_ZN5clang15DeclarationNameC2ENS_8SelectorE", "clang::DeclarationName::DeclarationName(clang::Selector)"}, + {"_ZNK5clang15DeclarationName15isDependentNameEv", "clang::DeclarationName::isDependentName() const"}, + {"_ZNK5clang15DeclarationName11getAsStringEv", "clang::DeclarationName::getAsString() const"}, + {"_ZNK5clang15DeclarationName9printNameERN4llvm11raw_ostreamE", "clang::DeclarationName::printName(llvm::raw_ostream&) const"}, + {"_ZNK5clang15DeclarationName20getFETokenInfoAsVoidEv", "clang::DeclarationName::getFETokenInfoAsVoid() const"}, + {"_ZN5clang15DeclarationName14setFETokenInfoEPv", "clang::DeclarationName::setFETokenInfo(void*)"}, + {"_ZN5clang15DeclarationName21getUsingDirectiveNameEv", "clang::DeclarationName::getUsingDirectiveName()"}, + {"_ZNK5clang15DeclarationName4dumpEv", "clang::DeclarationName::dump() const"}, + {"_ZN5clang20DeclarationNameTableC1ERKNS_10ASTContextE", "clang::DeclarationNameTable::DeclarationNameTable(clang::ASTContext const&)"}, + {"_ZN5clang20DeclarationNameTableC2ERKNS_10ASTContextE", "clang::DeclarationNameTable::DeclarationNameTable(clang::ASTContext const&)"}, + {"_ZN5clang20DeclarationNameTableD1Ev", "clang::DeclarationNameTable::~DeclarationNameTable()"}, + {"_ZN5clang20DeclarationNameTableD2Ev", "clang::DeclarationNameTable::~DeclarationNameTable()"}, + {"_ZN5clang20DeclarationNameTable17getCXXSpecialNameENS_15DeclarationName8NameKindENS_7CanQualINS_4TypeEEE", "clang::DeclarationNameTable::getCXXSpecialName(clang::DeclarationName::NameKind, clang::CanQual)"}, + {"_ZN5clang20DeclarationNameTable18getCXXOperatorNameENS_22OverloadedOperatorKindE", "clang::DeclarationNameTable::getCXXOperatorName(clang::OverloadedOperatorKind)"}, + {"_ZN5clang20DeclarationNameTable25getCXXLiteralOperatorNameEPNS_14IdentifierInfoE", "clang::DeclarationNameTable::getCXXLiteralOperatorName(clang::IdentifierInfo*)"}, + {"_ZN4llvm12DenseMapInfoIN5clang15DeclarationNameEE12getHashValueES2_", "llvm::DenseMapInfo::getHashValue(clang::DeclarationName)"}, + {"_ZN5clang18DeclarationNameLocC1ENS_15DeclarationNameE", "clang::DeclarationNameLoc::DeclarationNameLoc(clang::DeclarationName)"}, + {"_ZN5clang18DeclarationNameLocC2ENS_15DeclarationNameE", "clang::DeclarationNameLoc::DeclarationNameLoc(clang::DeclarationName)"}, + {"_ZNK5clang19DeclarationNameInfo31containsUnexpandedParameterPackEv", "clang::DeclarationNameInfo::containsUnexpandedParameterPack() const"}, + {"_ZNK5clang19DeclarationNameInfo11getAsStringEv", "clang::DeclarationNameInfo::getAsString() const"}, + {"_ZNK5clang19DeclarationNameInfo9printNameERN4llvm11raw_ostreamE", "clang::DeclarationNameInfo::printName(llvm::raw_ostream&) const"}, + {"_ZNK5clang19DeclarationNameInfo9getEndLocEv", "clang::DeclarationNameInfo::getEndLoc() const"}, + {"_ZN4llvm10FoldingSetIN5clang24CXXLiteralOperatorIdNameEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang24CXXLiteralOperatorIdNameEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang24CXXLiteralOperatorIdNameEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang24CXXLiteralOperatorIdNameEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang24CXXLiteralOperatorIdNameEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm10FoldingSetIN5clang14CXXSpecialNameEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang14CXXSpecialNameEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang14CXXSpecialNameEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang14CXXSpecialNameEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang14CXXSpecialNameEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK5clang4Decl7dumpXMLEv", "clang::Decl::dumpXML() const"}, + {"_ZNK5clang4Decl7dumpXMLERN4llvm11raw_ostreamE", "clang::Decl::dumpXML(llvm::raw_ostream&) const"}, + {"_ZNK5clang4Expr25isKnownToHaveBooleanValueEv", "clang::Expr::isKnownToHaveBooleanValue() const"}, + {"_ZNK5clang4Expr10getExprLocEv", "clang::Expr::getExprLoc() const"}, + {"_ZN5clang28ExplicitTemplateArgumentList14initializeFromERKNS_24TemplateArgumentListInfoE", "clang::ExplicitTemplateArgumentList::initializeFrom(clang::TemplateArgumentListInfo const&)"}, + {"_ZN5clang28ExplicitTemplateArgumentList14initializeFromERKNS_24TemplateArgumentListInfoERbS4_", "clang::ExplicitTemplateArgumentList::initializeFrom(clang::TemplateArgumentListInfo const&, bool&, bool&)"}, + {"_ZNK5clang28ExplicitTemplateArgumentList8copyIntoERNS_24TemplateArgumentListInfoE", "clang::ExplicitTemplateArgumentList::copyInto(clang::TemplateArgumentListInfo&) const"}, + {"_ZN5clang28ExplicitTemplateArgumentList7sizeForEj", "clang::ExplicitTemplateArgumentList::sizeFor(unsigned int)"}, + {"_ZN5clang28ExplicitTemplateArgumentList7sizeForERKNS_24TemplateArgumentListInfoE", "clang::ExplicitTemplateArgumentList::sizeFor(clang::TemplateArgumentListInfo const&)"}, + {"_ZN5clang11DeclRefExpr17computeDependenceEv", "clang::DeclRefExpr::computeDependence()"}, + {"_Z24computeDeclRefDependencePN5clang9NamedDeclENS_8QualTypeERbS3_", "computeDeclRefDependence(clang::NamedDecl*, clang::QualType, bool&, bool&)"}, + {"_ZN5clang11DeclRefExprC1EPNS_19NestedNameSpecifierENS_11SourceRangeEPNS_9ValueDeclENS_14SourceLocationEPKNS_24TemplateArgumentListInfoENS_8QualTypeENS_13ExprValueKindE", "clang::DeclRefExpr::DeclRefExpr(clang::NestedNameSpecifier*, clang::SourceRange, clang::ValueDecl*, clang::SourceLocation, clang::TemplateArgumentListInfo const*, clang::QualType, clang::ExprValueKind)"}, + {"_ZN5clang11DeclRefExprC2EPNS_19NestedNameSpecifierENS_11SourceRangeEPNS_9ValueDeclENS_14SourceLocationEPKNS_24TemplateArgumentListInfoENS_8QualTypeENS_13ExprValueKindE", "clang::DeclRefExpr::DeclRefExpr(clang::NestedNameSpecifier*, clang::SourceRange, clang::ValueDecl*, clang::SourceLocation, clang::TemplateArgumentListInfo const*, clang::QualType, clang::ExprValueKind)"}, + {"_ZN5clang11DeclRefExprC1EPNS_19NestedNameSpecifierENS_11SourceRangeEPNS_9ValueDeclERKNS_19DeclarationNameInfoEPKNS_24TemplateArgumentListInfoENS_8QualTypeENS_13ExprValueKindE", "clang::DeclRefExpr::DeclRefExpr(clang::NestedNameSpecifier*, clang::SourceRange, clang::ValueDecl*, clang::DeclarationNameInfo const&, clang::TemplateArgumentListInfo const*, clang::QualType, clang::ExprValueKind)"}, + {"_ZN5clang11DeclRefExprC2EPNS_19NestedNameSpecifierENS_11SourceRangeEPNS_9ValueDeclERKNS_19DeclarationNameInfoEPKNS_24TemplateArgumentListInfoENS_8QualTypeENS_13ExprValueKindE", "clang::DeclRefExpr::DeclRefExpr(clang::NestedNameSpecifier*, clang::SourceRange, clang::ValueDecl*, clang::DeclarationNameInfo const&, clang::TemplateArgumentListInfo const*, clang::QualType, clang::ExprValueKind)"}, + {"_ZN5clang11DeclRefExpr6CreateERNS_10ASTContextEPNS_19NestedNameSpecifierENS_11SourceRangeEPNS_9ValueDeclENS_14SourceLocationENS_8QualTypeENS_13ExprValueKindEPKNS_24TemplateArgumentListInfoE", "clang::DeclRefExpr::Create(clang::ASTContext&, clang::NestedNameSpecifier*, clang::SourceRange, clang::ValueDecl*, clang::SourceLocation, clang::QualType, clang::ExprValueKind, clang::TemplateArgumentListInfo const*)"}, + {"_ZN5clang11DeclRefExpr6CreateERNS_10ASTContextEPNS_19NestedNameSpecifierENS_11SourceRangeEPNS_9ValueDeclERKNS_19DeclarationNameInfoENS_8QualTypeENS_13ExprValueKindEPKNS_24TemplateArgumentListInfoE", "clang::DeclRefExpr::Create(clang::ASTContext&, clang::NestedNameSpecifier*, clang::SourceRange, clang::ValueDecl*, clang::DeclarationNameInfo const&, clang::QualType, clang::ExprValueKind, clang::TemplateArgumentListInfo const*)"}, + {"_ZN5clang11DeclRefExpr11CreateEmptyERNS_10ASTContextEbbj", "clang::DeclRefExpr::CreateEmpty(clang::ASTContext&, bool, bool, unsigned int)"}, + {"_ZNK5clang11DeclRefExpr14getSourceRangeEv", "clang::DeclRefExpr::getSourceRange() const"}, + {"_ZN5clang14PredefinedExpr11ComputeNameENS0_9IdentTypeEPKNS_4DeclE", "clang::PredefinedExpr::ComputeName(clang::PredefinedExpr::IdentType, clang::Decl const*)"}, + {"_ZN5clang16APNumericStorage11setIntValueERNS_10ASTContextERKN4llvm5APIntE", "clang::APNumericStorage::setIntValue(clang::ASTContext&, llvm::APInt const&)"}, + {"_ZN5clang14IntegerLiteral6CreateERNS_10ASTContextERKN4llvm5APIntENS_8QualTypeENS_14SourceLocationE", "clang::IntegerLiteral::Create(clang::ASTContext&, llvm::APInt const&, clang::QualType, clang::SourceLocation)"}, + {"_ZN5clang14IntegerLiteral6CreateERNS_10ASTContextENS_4Stmt10EmptyShellE", "clang::IntegerLiteral::Create(clang::ASTContext&, clang::Stmt::EmptyShell)"}, + {"_ZN5clang15FloatingLiteral6CreateERNS_10ASTContextERKN4llvm7APFloatEbNS_8QualTypeENS_14SourceLocationE", "clang::FloatingLiteral::Create(clang::ASTContext&, llvm::APFloat const&, bool, clang::QualType, clang::SourceLocation)"}, + {"_ZN5clang15FloatingLiteral6CreateERNS_10ASTContextENS_4Stmt10EmptyShellE", "clang::FloatingLiteral::Create(clang::ASTContext&, clang::Stmt::EmptyShell)"}, + {"_ZNK5clang15FloatingLiteral27getValueAsApproximateDoubleEv", "clang::FloatingLiteral::getValueAsApproximateDouble() const"}, + {"_ZN5clang13StringLiteral6CreateERNS_10ASTContextEPKcjbNS_8QualTypeEPKNS_14SourceLocationEj", "clang::StringLiteral::Create(clang::ASTContext&, char const*, unsigned int, bool, clang::QualType, clang::SourceLocation const*, unsigned int)"}, + {"_ZN5clang13StringLiteral11CreateEmptyERNS_10ASTContextEj", "clang::StringLiteral::CreateEmpty(clang::ASTContext&, unsigned int)"}, + {"_ZN5clang13StringLiteral9setStringERNS_10ASTContextEN4llvm9StringRefE", "clang::StringLiteral::setString(clang::ASTContext&, llvm::StringRef)"}, + {"_ZNK5clang13StringLiteral17getLocationOfByteEjRKNS_13SourceManagerERKNS_11LangOptionsERKNS_10TargetInfoE", "clang::StringLiteral::getLocationOfByte(unsigned int, clang::SourceManager const&, clang::LangOptions const&, clang::TargetInfo const&) const"}, + {"_ZN5clang13UnaryOperator12getOpcodeStrENS_17UnaryOperatorKindE", "clang::UnaryOperator::getOpcodeStr(clang::UnaryOperatorKind)"}, + {"_ZN5clang13UnaryOperator19getOverloadedOpcodeENS_22OverloadedOperatorKindEb", "clang::UnaryOperator::getOverloadedOpcode(clang::OverloadedOperatorKind, bool)"}, + {"_ZN5clang13UnaryOperator21getOverloadedOperatorENS_17UnaryOperatorKindE", "clang::UnaryOperator::getOverloadedOperator(clang::UnaryOperatorKind)"}, + {"_ZN5clang8CallExprC1ERNS_10ASTContextENS_4Stmt9StmtClassEPNS_4ExprEjPS6_jNS_8QualTypeENS_13ExprValueKindENS_14SourceLocationE", "clang::CallExpr::CallExpr(clang::ASTContext&, clang::Stmt::StmtClass, clang::Expr*, unsigned int, clang::Expr**, unsigned int, clang::QualType, clang::ExprValueKind, clang::SourceLocation)"}, + {"_ZN5clang8CallExprC2ERNS_10ASTContextENS_4Stmt9StmtClassEPNS_4ExprEjPS6_jNS_8QualTypeENS_13ExprValueKindENS_14SourceLocationE", "clang::CallExpr::CallExpr(clang::ASTContext&, clang::Stmt::StmtClass, clang::Expr*, unsigned int, clang::Expr**, unsigned int, clang::QualType, clang::ExprValueKind, clang::SourceLocation)"}, + {"_ZN5clang8CallExprC1ERNS_10ASTContextEPNS_4ExprEPS4_jNS_8QualTypeENS_13ExprValueKindENS_14SourceLocationE", "clang::CallExpr::CallExpr(clang::ASTContext&, clang::Expr*, clang::Expr**, unsigned int, clang::QualType, clang::ExprValueKind, clang::SourceLocation)"}, + {"_ZN5clang8CallExprC2ERNS_10ASTContextEPNS_4ExprEPS4_jNS_8QualTypeENS_13ExprValueKindENS_14SourceLocationE", "clang::CallExpr::CallExpr(clang::ASTContext&, clang::Expr*, clang::Expr**, unsigned int, clang::QualType, clang::ExprValueKind, clang::SourceLocation)"}, + {"_ZN5clang8CallExprC1ERNS_10ASTContextENS_4Stmt9StmtClassENS3_10EmptyShellE", "clang::CallExpr::CallExpr(clang::ASTContext&, clang::Stmt::StmtClass, clang::Stmt::EmptyShell)"}, + {"_ZN5clang8CallExprC2ERNS_10ASTContextENS_4Stmt9StmtClassENS3_10EmptyShellE", "clang::CallExpr::CallExpr(clang::ASTContext&, clang::Stmt::StmtClass, clang::Stmt::EmptyShell)"}, + {"_ZN5clang8CallExprC1ERNS_10ASTContextENS_4Stmt9StmtClassEjNS3_10EmptyShellE", "clang::CallExpr::CallExpr(clang::ASTContext&, clang::Stmt::StmtClass, unsigned int, clang::Stmt::EmptyShell)"}, + {"_ZN5clang8CallExprC2ERNS_10ASTContextENS_4Stmt9StmtClassEjNS3_10EmptyShellE", "clang::CallExpr::CallExpr(clang::ASTContext&, clang::Stmt::StmtClass, unsigned int, clang::Stmt::EmptyShell)"}, + {"_ZN5clang8CallExpr13getCalleeDeclEv", "clang::CallExpr::getCalleeDecl()"}, + {"_ZN5clang4Expr16IgnoreParenCastsEv", "clang::Expr::IgnoreParenCasts()"}, + {"_ZN5clang8CallExpr15getDirectCalleeEv", "clang::CallExpr::getDirectCallee()"}, + {"_ZN5clang8CallExpr10setNumArgsERNS_10ASTContextEj", "clang::CallExpr::setNumArgs(clang::ASTContext&, unsigned int)"}, + {"_ZNK5clang8CallExpr13isBuiltinCallERKNS_10ASTContextE", "clang::CallExpr::isBuiltinCall(clang::ASTContext const&) const"}, + {"_ZNK5clang8CallExpr17getCallReturnTypeEv", "clang::CallExpr::getCallReturnType() const"}, + {"_ZN5clang12OffsetOfExpr6CreateERNS_10ASTContextENS_8QualTypeENS_14SourceLocationEPNS_14TypeSourceInfoEPNS0_12OffsetOfNodeEjPPNS_4ExprEjS4_", "clang::OffsetOfExpr::Create(clang::ASTContext&, clang::QualType, clang::SourceLocation, clang::TypeSourceInfo*, clang::OffsetOfExpr::OffsetOfNode*, unsigned int, clang::Expr**, unsigned int, clang::SourceLocation)"}, + {"_ZN5clang12OffsetOfExprC1ERNS_10ASTContextENS_8QualTypeENS_14SourceLocationEPNS_14TypeSourceInfoEPNS0_12OffsetOfNodeEjPPNS_4ExprEjS4_", "clang::OffsetOfExpr::OffsetOfExpr(clang::ASTContext&, clang::QualType, clang::SourceLocation, clang::TypeSourceInfo*, clang::OffsetOfExpr::OffsetOfNode*, unsigned int, clang::Expr**, unsigned int, clang::SourceLocation)"}, + {"_ZN5clang12OffsetOfExpr11CreateEmptyERNS_10ASTContextEjj", "clang::OffsetOfExpr::CreateEmpty(clang::ASTContext&, unsigned int, unsigned int)"}, + {"_ZN5clang12OffsetOfExprC2ERNS_10ASTContextENS_8QualTypeENS_14SourceLocationEPNS_14TypeSourceInfoEPNS0_12OffsetOfNodeEjPPNS_4ExprEjS4_", "clang::OffsetOfExpr::OffsetOfExpr(clang::ASTContext&, clang::QualType, clang::SourceLocation, clang::TypeSourceInfo*, clang::OffsetOfExpr::OffsetOfNode*, unsigned int, clang::Expr**, unsigned int, clang::SourceLocation)"}, + {"_ZNK5clang12OffsetOfExpr12OffsetOfNode12getFieldNameEv", "clang::OffsetOfExpr::OffsetOfNode::getFieldName() const"}, + {"_ZN5clang10MemberExpr6CreateERNS_10ASTContextEPNS_4ExprEbPNS_19NestedNameSpecifierENS_11SourceRangeEPNS_9ValueDeclENS_14DeclAccessPairENS_19DeclarationNameInfoEPKNS_24TemplateArgumentListInfoENS_8QualTypeENS_13ExprValueKindENS_14ExprObjectKindE", "clang::MemberExpr::Create(clang::ASTContext&, clang::Expr*, bool, clang::NestedNameSpecifier*, clang::SourceRange, clang::ValueDecl*, clang::DeclAccessPair, clang::DeclarationNameInfo, clang::TemplateArgumentListInfo const*, clang::QualType, clang::ExprValueKind, clang::ExprObjectKind)"}, + {"_ZNK5clang8CastExpr15getCastKindNameEv", "clang::CastExpr::getCastKindName() const"}, + {"_ZN5clang8CastExpr19getSubExprAsWrittenEv", "clang::CastExpr::getSubExprAsWritten()"}, + {"_ZN5clang8CastExpr11path_bufferEv", "clang::CastExpr::path_buffer()"}, + + // {"_ZN5clang8CastExpr11setCastPathERKN4llvm11SmallVectorIPNS_16CXXBaseSpecifierELj4EEE", + // "clang::CastExpr::setCastPath(llvm::SmallVector const&)"}, + // "clang::CastExpr::setCastPath(llvm::SmallVector const&)" was returned + + + // {"_ZN5clang16ImplicitCastExpr6CreateERNS_10ASTContextENS_8QualTypeENS_8CastKindEPNS_4ExprEPKN4llvm11SmallVectorIPNS_16CXXBaseSpecifierELj4EEENS_13ExprValueKindE", + // "clang::ImplicitCastExpr::Create(clang::ASTContext&, clang::QualType, clang::CastKind, clang::Expr*, llvm::SmallVector const*, clang::ExprValueKind)"}, + // "clang::ImplicitCastExpr::Create(clang::ASTContext&, clang::QualType, clang::CastKind, clang::Expr*, llvm::SmallVector const*, clang::ExprValueKind)" was returned + + {"_ZN5clang16ImplicitCastExpr11CreateEmptyERNS_10ASTContextEj", "clang::ImplicitCastExpr::CreateEmpty(clang::ASTContext&, unsigned int)"}, + + // {"_ZN5clang14CStyleCastExpr6CreateERNS_10ASTContextENS_8QualTypeENS_13ExprValueKindENS_8CastKindEPNS_4ExprEPKN4llvm11SmallVectorIPNS_16CXXBaseSpecifierELj4EEEPNS_14TypeSourceInfoENS_14SourceLocationESH_", + // "clang::CStyleCastExpr::Create(clang::ASTContext&, clang::QualType, clang::ExprValueKind, clang::CastKind, clang::Expr*, llvm::SmallVector const*, clang::TypeSourceInfo*, clang::SourceLocation, clang::SourceLocation)"}, + // got error + + {"_ZN5clang14CStyleCastExpr11CreateEmptyERNS_10ASTContextEj", "clang::CStyleCastExpr::CreateEmpty(clang::ASTContext&, unsigned int)"}, + {"_ZN5clang14BinaryOperator12getOpcodeStrENS_18BinaryOperatorKindE", "clang::BinaryOperator::getOpcodeStr(clang::BinaryOperatorKind)"}, + {"_ZN5clang14BinaryOperator19getOverloadedOpcodeENS_22OverloadedOperatorKindE", "clang::BinaryOperator::getOverloadedOpcode(clang::OverloadedOperatorKind)"}, + {"_ZN5clang14BinaryOperator21getOverloadedOperatorENS_18BinaryOperatorKindE", "clang::BinaryOperator::getOverloadedOperator(clang::BinaryOperatorKind)"}, + {"_ZN5clang12InitListExprC1ERNS_10ASTContextENS_14SourceLocationEPPNS_4ExprEjS3_", "clang::InitListExpr::InitListExpr(clang::ASTContext&, clang::SourceLocation, clang::Expr**, unsigned int, clang::SourceLocation)"}, + {"_ZN5clang12InitListExprC2ERNS_10ASTContextENS_14SourceLocationEPPNS_4ExprEjS3_", "clang::InitListExpr::InitListExpr(clang::ASTContext&, clang::SourceLocation, clang::Expr**, unsigned int, clang::SourceLocation)"}, + {"_ZN5clang12InitListExpr12reserveInitsERNS_10ASTContextEj", "clang::InitListExpr::reserveInits(clang::ASTContext&, unsigned int)"}, + {"_ZN5clang12InitListExpr11resizeInitsERNS_10ASTContextEj", "clang::InitListExpr::resizeInits(clang::ASTContext&, unsigned int)"}, + {"_ZN5clang12InitListExpr10updateInitERNS_10ASTContextEjPNS_4ExprE", "clang::InitListExpr::updateInit(clang::ASTContext&, unsigned int, clang::Expr*)"}, + {"_ZNK5clang12InitListExpr14getSourceRangeEv", "clang::InitListExpr::getSourceRange() const"}, + {"_ZNK5clang9BlockExpr15getFunctionTypeEv", "clang::BlockExpr::getFunctionType() const"}, + {"_ZNK5clang9BlockExpr16getCaretLocationEv", "clang::BlockExpr::getCaretLocation() const"}, + {"_ZNK5clang9BlockExpr7getBodyEv", "clang::BlockExpr::getBody() const"}, + {"_ZN5clang9BlockExpr7getBodyEv", "clang::BlockExpr::getBody()"}, + {"_ZNK5clang4Expr22isUnusedResultAWarningERNS_14SourceLocationERNS_11SourceRangeES4_RNS_10ASTContextE", "clang::Expr::isUnusedResultAWarning(clang::SourceLocation&, clang::SourceRange&, clang::SourceRange&, clang::ASTContext&) const"}, + {"_ZN5clang4Expr12IgnoreParensEv", "clang::Expr::IgnoreParens()"}, + {"_ZNK5clang4Expr17isOBJCGCCandidateERNS_10ASTContextE", "clang::Expr::isOBJCGCCandidate(clang::ASTContext&) const"}, + {"_ZNK5clang4Expr21isBoundMemberFunctionERNS_10ASTContextE", "clang::Expr::isBoundMemberFunction(clang::ASTContext&) const"}, + {"_ZNK5clang4Expr8CanThrowERNS_10ASTContextE", "clang::Expr::CanThrow(clang::ASTContext&) const"}, + {"_Z16CanSubExprsThrowRN5clang10ASTContextEPKNS_4ExprE", "CanSubExprsThrow(clang::ASTContext&, clang::Expr const*)"}, + {"_Z14CanCalleeThrowPKN5clang4DeclEb", "CanCalleeThrow(clang::Decl const*, bool)"}, + {"_ZN5clang4Expr22IgnoreParenLValueCastsEv", "clang::Expr::IgnoreParenLValueCasts()"}, + {"_ZN5clang4Expr19IgnoreParenImpCastsEv", "clang::Expr::IgnoreParenImpCasts()"}, + {"_ZN5clang4Expr20IgnoreParenNoopCastsERNS_10ASTContextE", "clang::Expr::IgnoreParenNoopCasts(clang::ASTContext&)"}, + {"_ZNK5clang4Expr17isDefaultArgumentEv", "clang::Expr::isDefaultArgument() const"}, + {"_ZNK5clang4Expr17isTemporaryObjectERNS_10ASTContextEPKNS_13CXXRecordDeclE", "clang::Expr::isTemporaryObject(clang::ASTContext&, clang::CXXRecordDecl const*) const"}, + {"_ZN5clang4Expr28hasAnyTypeDependentArgumentsEPPS0_j", "clang::Expr::hasAnyTypeDependentArguments(clang::Expr**, unsigned int)"}, + {"_ZN5clang4Expr29hasAnyValueDependentArgumentsEPPS0_j", "clang::Expr::hasAnyValueDependentArguments(clang::Expr**, unsigned int)"}, + {"_ZNK5clang4Expr21isConstantInitializerERNS_10ASTContextEb", "clang::Expr::isConstantInitializer(clang::ASTContext&, bool) const"}, + {"_ZNK5clang4Expr21isNullPointerConstantERNS_10ASTContextENS0_34NullPointerConstantValueDependenceE", "clang::Expr::isNullPointerConstant(clang::ASTContext&, clang::Expr::NullPointerConstantValueDependence) const"}, + {"_ZNK5clang4Expr15getObjCPropertyEv", "clang::Expr::getObjCProperty() const"}, + {"_ZN5clang4Expr11getBitFieldEv", "clang::Expr::getBitField()"}, + {"_ZNK5clang4Expr21refersToVectorElementEv", "clang::Expr::refersToVectorElement() const"}, + {"_ZNK5clang20ExtVectorElementExpr7isArrowEv", "clang::ExtVectorElementExpr::isArrow() const"}, + {"_ZNK5clang20ExtVectorElementExpr14getNumElementsEv", "clang::ExtVectorElementExpr::getNumElements() const"}, + {"_ZNK5clang20ExtVectorElementExpr25containsDuplicateElementsEv", "clang::ExtVectorElementExpr::containsDuplicateElements() const"}, + {"_ZNK5clang20ExtVectorElementExpr23getEncodedElementAccessERN4llvm15SmallVectorImplIjEE", "clang::ExtVectorElementExpr::getEncodedElementAccess(llvm::SmallVectorImpl&) const"}, + {"_ZN5clang15ObjCMessageExprC1ENS_8QualTypeENS_13ExprValueKindENS_14SourceLocationES3_bS1_NS_8SelectorES3_PNS_14ObjCMethodDeclEPPNS_4ExprEjS3_", "clang::ObjCMessageExpr::ObjCMessageExpr(clang::QualType, clang::ExprValueKind, clang::SourceLocation, clang::SourceLocation, bool, clang::QualType, clang::Selector, clang::SourceLocation, clang::ObjCMethodDecl*, clang::Expr**, unsigned int, clang::SourceLocation)"}, + {"_ZN5clang15ObjCMessageExprC2ENS_8QualTypeENS_13ExprValueKindENS_14SourceLocationES3_bS1_NS_8SelectorES3_PNS_14ObjCMethodDeclEPPNS_4ExprEjS3_", "clang::ObjCMessageExpr::ObjCMessageExpr(clang::QualType, clang::ExprValueKind, clang::SourceLocation, clang::SourceLocation, bool, clang::QualType, clang::Selector, clang::SourceLocation, clang::ObjCMethodDecl*, clang::Expr**, unsigned int, clang::SourceLocation)"}, + {"_ZN5clang15ObjCMessageExprC1ENS_8QualTypeENS_13ExprValueKindENS_14SourceLocationEPNS_14TypeSourceInfoENS_8SelectorES3_PNS_14ObjCMethodDeclEPPNS_4ExprEjS3_", "clang::ObjCMessageExpr::ObjCMessageExpr(clang::QualType, clang::ExprValueKind, clang::SourceLocation, clang::TypeSourceInfo*, clang::Selector, clang::SourceLocation, clang::ObjCMethodDecl*, clang::Expr**, unsigned int, clang::SourceLocation)"}, + {"_ZN5clang15ObjCMessageExprC2ENS_8QualTypeENS_13ExprValueKindENS_14SourceLocationEPNS_14TypeSourceInfoENS_8SelectorES3_PNS_14ObjCMethodDeclEPPNS_4ExprEjS3_", "clang::ObjCMessageExpr::ObjCMessageExpr(clang::QualType, clang::ExprValueKind, clang::SourceLocation, clang::TypeSourceInfo*, clang::Selector, clang::SourceLocation, clang::ObjCMethodDecl*, clang::Expr**, unsigned int, clang::SourceLocation)"}, + + // {"_ZN5clang15ObjCMessageExprC1ENS_8QualTypeENS_13ExprValueKindENS_14SourceLocationEPNS_4ExprENS_8SelectorES3_PNS_14ObjCMethodDeclEPS5_jS3_", + // "clang::ObjCMessageExpr::ObjCMessageExpr(clang::QualType, clang::ExprValueKind, clang::SourceLocation, clang::Expr*, clang::Selector, clang::SourceLocation, clang::ObjCMethodDecl*, clang::Expr**, unsigned int, clang::SourceLocation)"}, + // "clang::ObjCMessageExpr::ObjCMessageExpr(clang::QualType, clang::ExprValueKind, clang::SourceLocation, clang::Expr*, clang::Selector, clang::SourceLocation, clang::ObjCMethodDecl*, clang::Selector*, unsigned int, clang::SourceLocation)" was returned + + + // {"_ZN5clang15ObjCMessageExprC2ENS_8QualTypeENS_13ExprValueKindENS_14SourceLocationEPNS_4ExprENS_8SelectorES3_PNS_14ObjCMethodDeclEPS5_jS3_", + // "clang::ObjCMessageExpr::ObjCMessageExpr(clang::QualType, clang::ExprValueKind, clang::SourceLocation, clang::Expr*, clang::Selector, clang::SourceLocation, clang::ObjCMethodDecl*, clang::Expr**, unsigned int, clang::SourceLocation)"}, + // "clang::ObjCMessageExpr::ObjCMessageExpr(clang::QualType, clang::ExprValueKind, clang::SourceLocation, clang::Expr*, clang::Selector, clang::SourceLocation, clang::ObjCMethodDecl*, clang::Selector*, unsigned int, clang::SourceLocation)" was returned + + {"_ZN5clang15ObjCMessageExpr6CreateERNS_10ASTContextENS_8QualTypeENS_13ExprValueKindENS_14SourceLocationES5_bS3_NS_8SelectorES5_PNS_14ObjCMethodDeclEPPNS_4ExprEjS5_", "clang::ObjCMessageExpr::Create(clang::ASTContext&, clang::QualType, clang::ExprValueKind, clang::SourceLocation, clang::SourceLocation, bool, clang::QualType, clang::Selector, clang::SourceLocation, clang::ObjCMethodDecl*, clang::Expr**, unsigned int, clang::SourceLocation)"}, + {"_ZN5clang15ObjCMessageExpr6CreateERNS_10ASTContextENS_8QualTypeENS_13ExprValueKindENS_14SourceLocationEPNS_14TypeSourceInfoENS_8SelectorES5_PNS_14ObjCMethodDeclEPPNS_4ExprEjS5_", "clang::ObjCMessageExpr::Create(clang::ASTContext&, clang::QualType, clang::ExprValueKind, clang::SourceLocation, clang::TypeSourceInfo*, clang::Selector, clang::SourceLocation, clang::ObjCMethodDecl*, clang::Expr**, unsigned int, clang::SourceLocation)"}, + + // {"_ZN5clang15ObjCMessageExpr6CreateERNS_10ASTContextENS_8QualTypeENS_13ExprValueKindENS_14SourceLocationEPNS_4ExprENS_8SelectorES5_PNS_14ObjCMethodDeclEPS7_jS5_", + // "clang::ObjCMessageExpr::Create(clang::ASTContext&, clang::QualType, clang::ExprValueKind, clang::SourceLocation, clang::Expr*, clang::Selector, clang::SourceLocation, clang::ObjCMethodDecl*, clang::Expr**, unsigned int, clang::SourceLocation)"}, + // "clang::ObjCMessageExpr::Create(clang::ASTContext&, clang::QualType, clang::ExprValueKind, clang::SourceLocation, clang::Expr*, clang::Selector, clang::SourceLocation, clang::ObjCMethodDecl*, clang::Selector*, unsigned int, clang::SourceLocation)" was returned + + {"_ZN5clang15ObjCMessageExpr11CreateEmptyERNS_10ASTContextEj", "clang::ObjCMessageExpr::CreateEmpty(clang::ASTContext&, unsigned int)"}, + {"_ZNK5clang15ObjCMessageExpr16getReceiverRangeEv", "clang::ObjCMessageExpr::getReceiverRange() const"}, + {"_ZNK5clang15ObjCMessageExpr11getSelectorEv", "clang::ObjCMessageExpr::getSelector() const"}, + {"_ZNK5clang15ObjCMessageExpr20getReceiverInterfaceEv", "clang::ObjCMessageExpr::getReceiverInterface() const"}, + {"_ZNK5clang10ChooseExpr15isConditionTrueERKNS_10ASTContextE", "clang::ChooseExpr::isConditionTrue(clang::ASTContext const&) const"}, + {"_ZN5clang17ShuffleVectorExprC1ERNS_10ASTContextEPPNS_4ExprEjNS_8QualTypeENS_14SourceLocationES7_", "clang::ShuffleVectorExpr::ShuffleVectorExpr(clang::ASTContext&, clang::Expr**, unsigned int, clang::QualType, clang::SourceLocation, clang::SourceLocation)"}, + {"_ZN5clang17ShuffleVectorExprC2ERNS_10ASTContextEPPNS_4ExprEjNS_8QualTypeENS_14SourceLocationES7_", "clang::ShuffleVectorExpr::ShuffleVectorExpr(clang::ASTContext&, clang::Expr**, unsigned int, clang::QualType, clang::SourceLocation, clang::SourceLocation)"}, + {"_ZN5clang17ShuffleVectorExpr8setExprsERNS_10ASTContextEPPNS_4ExprEj", "clang::ShuffleVectorExpr::setExprs(clang::ASTContext&, clang::Expr**, unsigned int)"}, + {"_ZN5clang18DesignatedInitExpr10Designator12getFieldNameEv", "clang::DesignatedInitExpr::Designator::getFieldName()"}, + {"_ZN5clang18DesignatedInitExprC1ERNS_10ASTContextENS_8QualTypeEjPKNS0_10DesignatorENS_14SourceLocationEbPPNS_4ExprEjS9_", "clang::DesignatedInitExpr::DesignatedInitExpr(clang::ASTContext&, clang::QualType, unsigned int, clang::DesignatedInitExpr::Designator const*, clang::SourceLocation, bool, clang::Expr**, unsigned int, clang::Expr*)"}, + {"_ZN5clang18DesignatedInitExprC2ERNS_10ASTContextENS_8QualTypeEjPKNS0_10DesignatorENS_14SourceLocationEbPPNS_4ExprEjS9_", "clang::DesignatedInitExpr::DesignatedInitExpr(clang::ASTContext&, clang::QualType, unsigned int, clang::DesignatedInitExpr::Designator const*, clang::SourceLocation, bool, clang::Expr**, unsigned int, clang::Expr*)"}, + {"_ZN5clang18DesignatedInitExpr6CreateERNS_10ASTContextEPNS0_10DesignatorEjPPNS_4ExprEjNS_14SourceLocationEbS6_", "clang::DesignatedInitExpr::Create(clang::ASTContext&, clang::DesignatedInitExpr::Designator*, unsigned int, clang::Expr**, unsigned int, clang::SourceLocation, bool, clang::Expr*)"}, + {"_ZN5clang18DesignatedInitExpr11CreateEmptyERNS_10ASTContextEj", "clang::DesignatedInitExpr::CreateEmpty(clang::ASTContext&, unsigned int)"}, + {"_ZN5clang18DesignatedInitExpr14setDesignatorsERNS_10ASTContextEPKNS0_10DesignatorEj", "clang::DesignatedInitExpr::setDesignators(clang::ASTContext&, clang::DesignatedInitExpr::Designator const*, unsigned int)"}, + {"_ZNK5clang18DesignatedInitExpr14getSourceRangeEv", "clang::DesignatedInitExpr::getSourceRange() const"}, + {"_ZN5clang18DesignatedInitExpr13getArrayIndexERKNS0_10DesignatorE", "clang::DesignatedInitExpr::getArrayIndex(clang::DesignatedInitExpr::Designator const&)"}, + {"_ZN5clang18DesignatedInitExpr18getArrayRangeStartERKNS0_10DesignatorE", "clang::DesignatedInitExpr::getArrayRangeStart(clang::DesignatedInitExpr::Designator const&)"}, + {"_ZN5clang18DesignatedInitExpr16getArrayRangeEndERKNS0_10DesignatorE", "clang::DesignatedInitExpr::getArrayRangeEnd(clang::DesignatedInitExpr::Designator const&)"}, + {"_ZN5clang18DesignatedInitExpr16ExpandDesignatorERNS_10ASTContextEjPKNS0_10DesignatorES5_", "clang::DesignatedInitExpr::ExpandDesignator(clang::ASTContext&, unsigned int, clang::DesignatedInitExpr::Designator const*, clang::DesignatedInitExpr::Designator const*)"}, + {"_ZN5clang13ParenListExprC1ERNS_10ASTContextENS_14SourceLocationEPPNS_4ExprEjS3_", "clang::ParenListExpr::ParenListExpr(clang::ASTContext&, clang::SourceLocation, clang::Expr**, unsigned int, clang::SourceLocation)"}, + {"_ZN5clang13ParenListExprC2ERNS_10ASTContextENS_14SourceLocationEPPNS_4ExprEjS3_", "clang::ParenListExpr::ParenListExpr(clang::ASTContext&, clang::SourceLocation, clang::Expr**, unsigned int, clang::SourceLocation)"}, + {"_ZN5clang12ExprIteratorixEm", "clang::ExprIterator::operator[](unsigned long)"}, + {"_ZNK5clang12ExprIteratordeEv", "clang::ExprIterator::operator*() const"}, + {"_ZNK5clang12ExprIteratorptEv", "clang::ExprIterator::operator->() const"}, + {"_ZNK5clang17ConstExprIteratorixEm", "clang::ConstExprIterator::operator[](unsigned long) const"}, + {"_ZNK5clang17ConstExprIteratordeEv", "clang::ConstExprIterator::operator*() const"}, + {"_ZNK5clang17ConstExprIteratorptEv", "clang::ConstExprIterator::operator->() const"}, + {"_ZN5clang17SizeOfAlignOfExpr8childrenEv", "clang::SizeOfAlignOfExpr::children()"}, + {"_ZN5clang15ObjCMessageExpr8childrenEv", "clang::ObjCMessageExpr::children()"}, + {"_ZN5clang16BlockDeclRefExprC1EPNS_7VarDeclENS_8QualTypeENS_13ExprValueKindENS_14SourceLocationEbb", "clang::BlockDeclRefExpr::BlockDeclRefExpr(clang::VarDecl*, clang::QualType, clang::ExprValueKind, clang::SourceLocation, bool, bool)"}, + {"_ZN5clang16BlockDeclRefExprC2EPNS_7VarDeclENS_8QualTypeENS_13ExprValueKindENS_14SourceLocationEbb", "clang::BlockDeclRefExpr::BlockDeclRefExpr(clang::VarDecl*, clang::QualType, clang::ExprValueKind, clang::SourceLocation, bool, bool)"}, + + // {"_ZN5clang9ASTVectorIPNS_4StmtEE6insertIPPNS_4ExprEEEPS2_RNS_10ASTContextES8_T_SB_", + // "clang::Stmt** clang::ASTVector::insert(clang::ASTContext&, clang::Stmt**, clang::Expr**, clang::Expr**)"}, + // got error + + {"_ZN5clang9ASTVectorIPNS_4StmtEE6resizeERNS_10ASTContextEjRKS2_", "clang::ASTVector::resize(clang::ASTContext&, unsigned int, clang::Stmt* const&)"}, + {"_ZN5clang9ASTVectorIPNS_4StmtEE6insertERNS_10ASTContextEPS2_mRKS2_", "clang::ASTVector::insert(clang::ASTContext&, clang::Stmt**, unsigned long, clang::Stmt* const&)"}, + {"_ZNK5clang4Decl7getAttrINS_20WarnUnusedResultAttrEEEPT_v", "clang::WarnUnusedResultAttr* clang::Decl::getAttr() const"}, + {"_ZNK5clang4Decl7getAttrINS_8PureAttrEEEPT_v", "clang::PureAttr* clang::Decl::getAttr() const"}, + {"_ZNK5clang4Decl7getAttrINS_9ConstAttrEEEPT_v", "clang::ConstAttr* clang::Decl::getAttr() const"}, + {"_ZNK5clang7VarDecl16hasGlobalStorageEv", "clang::VarDecl::hasGlobalStorage() const"}, + {"_ZN5clang9ASTVectorIPNS_4StmtEE6appendERNS_10ASTContextEmRKS2_", "clang::ASTVector::append(clang::ASTContext&, unsigned long, clang::Stmt* const&)"}, + + // {"_ZN5clang9ASTVectorIPNS_4StmtEE6appendIPS2_EEvRNS_10ASTContextET_S8_", + // "void clang::ASTVector::append(clang::ASTContext&, clang::Stmt**, clang::Stmt**)"}, + // got error + + + // {"_ZN5clang9ASTVectorIPNS_4StmtEE6appendIPPNS_4ExprEEEvRNS_10ASTContextET_SA_", + // "void clang::ASTVector::append(clang::ASTContext&, clang::Expr**, clang::Expr**)"}, + // got error + + {"_ZNK5clang16APNumericStorage11getIntValueEv", "clang::APNumericStorage::getIntValue() const"}, + {"_ZN5clang8CastExprC2ENS_4Stmt9StmtClassENS_8QualTypeENS_13ExprValueKindENS_8CastKindEPNS_4ExprEj", "clang::CastExpr::CastExpr(clang::Stmt::StmtClass, clang::QualType, clang::ExprValueKind, clang::CastKind, clang::Expr*, unsigned int)"}, + {"_ZN5clang14APFloatStorage8setValueERNS_10ASTContextERKN4llvm7APFloatE", "clang::APFloatStorage::setValue(clang::ASTContext&, llvm::APFloat const&)"}, + {"_ZN5clang14IntegerLiteralC2ERNS_10ASTContextERKN4llvm5APIntENS_8QualTypeENS_14SourceLocationE", "clang::IntegerLiteral::IntegerLiteral(clang::ASTContext&, llvm::APInt const&, clang::QualType, clang::SourceLocation)"}, + {"_ZNK5clang13CXXTypeidExpr14getTypeOperandEv", "clang::CXXTypeidExpr::getTypeOperand() const"}, + {"_ZNK5clang13CXXUuidofExpr14getTypeOperandEv", "clang::CXXUuidofExpr::getTypeOperand() const"}, + {"_ZNK5clang22CXXScalarValueInitExpr14getSourceRangeEv", "clang::CXXScalarValueInitExpr::getSourceRange() const"}, + {"_ZN5clang10CXXNewExprC1ERNS_10ASTContextEbPNS_12FunctionDeclEPPNS_4ExprEjNS_11SourceRangeES6_PNS_18CXXConstructorDeclEbS7_jS4_bNS_8QualTypeEPNS_14TypeSourceInfoENS_14SourceLocationESE_SE_SE_", "clang::CXXNewExpr::CXXNewExpr(clang::ASTContext&, bool, clang::FunctionDecl*, clang::Expr**, unsigned int, clang::SourceRange, clang::Expr*, clang::CXXConstructorDecl*, bool, clang::Expr**, unsigned int, clang::FunctionDecl*, bool, clang::QualType, clang::TypeSourceInfo*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)"}, + {"_ZN5clang10CXXNewExprC2ERNS_10ASTContextEbPNS_12FunctionDeclEPPNS_4ExprEjNS_11SourceRangeES6_PNS_18CXXConstructorDeclEbS7_jS4_bNS_8QualTypeEPNS_14TypeSourceInfoENS_14SourceLocationESE_SE_SE_", "clang::CXXNewExpr::CXXNewExpr(clang::ASTContext&, bool, clang::FunctionDecl*, clang::Expr**, unsigned int, clang::SourceRange, clang::Expr*, clang::CXXConstructorDecl*, bool, clang::Expr**, unsigned int, clang::FunctionDecl*, bool, clang::QualType, clang::TypeSourceInfo*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)"}, + {"_ZN5clang10CXXNewExpr17AllocateArgsArrayERNS_10ASTContextEbjj", "clang::CXXNewExpr::AllocateArgsArray(clang::ASTContext&, bool, unsigned int, unsigned int)"}, + {"_ZNK5clang13CXXDeleteExpr16getDestroyedTypeEv", "clang::CXXDeleteExpr::getDestroyedType() const"}, + {"_ZN5clang27PseudoDestructorTypeStorageC1EPNS_14TypeSourceInfoE", "clang::PseudoDestructorTypeStorage::PseudoDestructorTypeStorage(clang::TypeSourceInfo*)"}, + {"_ZN5clang27PseudoDestructorTypeStorageC2EPNS_14TypeSourceInfoE", "clang::PseudoDestructorTypeStorage::PseudoDestructorTypeStorage(clang::TypeSourceInfo*)"}, + {"_ZN5clang23CXXPseudoDestructorExprC1ERNS_10ASTContextEPNS_4ExprEbNS_14SourceLocationEPNS_19NestedNameSpecifierENS_11SourceRangeEPNS_14TypeSourceInfoES5_S5_NS_27PseudoDestructorTypeStorageE", "clang::CXXPseudoDestructorExpr::CXXPseudoDestructorExpr(clang::ASTContext&, clang::Expr*, bool, clang::SourceLocation, clang::NestedNameSpecifier*, clang::SourceRange, clang::TypeSourceInfo*, clang::SourceLocation, clang::SourceLocation, clang::PseudoDestructorTypeStorage)"}, + {"_ZN5clang23CXXPseudoDestructorExprC2ERNS_10ASTContextEPNS_4ExprEbNS_14SourceLocationEPNS_19NestedNameSpecifierENS_11SourceRangeEPNS_14TypeSourceInfoES5_S5_NS_27PseudoDestructorTypeStorageE", "clang::CXXPseudoDestructorExpr::CXXPseudoDestructorExpr(clang::ASTContext&, clang::Expr*, bool, clang::SourceLocation, clang::NestedNameSpecifier*, clang::SourceRange, clang::TypeSourceInfo*, clang::SourceLocation, clang::SourceLocation, clang::PseudoDestructorTypeStorage)"}, + {"_ZNK5clang23CXXPseudoDestructorExpr16getDestroyedTypeEv", "clang::CXXPseudoDestructorExpr::getDestroyedType() const"}, + {"_ZNK5clang23CXXPseudoDestructorExpr14getSourceRangeEv", "clang::CXXPseudoDestructorExpr::getSourceRange() const"}, + {"_ZN5clang20UnresolvedLookupExpr6CreateERNS_10ASTContextEPNS_13CXXRecordDeclEPNS_19NestedNameSpecifierENS_11SourceRangeERKNS_19DeclarationNameInfoEbRKNS_24TemplateArgumentListInfoENS_21UnresolvedSetIteratorESE_", "clang::UnresolvedLookupExpr::Create(clang::ASTContext&, clang::CXXRecordDecl*, clang::NestedNameSpecifier*, clang::SourceRange, clang::DeclarationNameInfo const&, bool, clang::TemplateArgumentListInfo const&, clang::UnresolvedSetIterator, clang::UnresolvedSetIterator)"}, + {"_ZN5clang20UnresolvedLookupExpr11CreateEmptyERNS_10ASTContextEbj", "clang::UnresolvedLookupExpr::CreateEmpty(clang::ASTContext&, bool, unsigned int)"}, + {"_ZN5clang12OverloadExprC1ENS_4Stmt9StmtClassERNS_10ASTContextEPNS_19NestedNameSpecifierENS_11SourceRangeERKNS_19DeclarationNameInfoEPKNS_24TemplateArgumentListInfoENS_21UnresolvedSetIteratorESE_bb", "clang::OverloadExpr::OverloadExpr(clang::Stmt::StmtClass, clang::ASTContext&, clang::NestedNameSpecifier*, clang::SourceRange, clang::DeclarationNameInfo const&, clang::TemplateArgumentListInfo const*, clang::UnresolvedSetIterator, clang::UnresolvedSetIterator, bool, bool)"}, + {"_ZN5clang12OverloadExprC2ENS_4Stmt9StmtClassERNS_10ASTContextEPNS_19NestedNameSpecifierENS_11SourceRangeERKNS_19DeclarationNameInfoEPKNS_24TemplateArgumentListInfoENS_21UnresolvedSetIteratorESE_bb", "clang::OverloadExpr::OverloadExpr(clang::Stmt::StmtClass, clang::ASTContext&, clang::NestedNameSpecifier*, clang::SourceRange, clang::DeclarationNameInfo const&, clang::TemplateArgumentListInfo const*, clang::UnresolvedSetIterator, clang::UnresolvedSetIterator, bool, bool)"}, + {"_ZN5clang12OverloadExpr17initializeResultsERNS_10ASTContextENS_21UnresolvedSetIteratorES3_", "clang::OverloadExpr::initializeResults(clang::ASTContext&, clang::UnresolvedSetIterator, clang::UnresolvedSetIterator)"}, + {"_ZNK5clang12OverloadExpr14getNamingClassEv", "clang::OverloadExpr::getNamingClass() const"}, + {"_ZNK5clang20UnresolvedMemberExpr14getNamingClassEv", "clang::UnresolvedMemberExpr::getNamingClass() const"}, + {"_ZN5clang25DependentScopeDeclRefExprC1ENS_8QualTypeEPNS_19NestedNameSpecifierENS_11SourceRangeERKNS_19DeclarationNameInfoEPKNS_24TemplateArgumentListInfoE", "clang::DependentScopeDeclRefExpr::DependentScopeDeclRefExpr(clang::QualType, clang::NestedNameSpecifier*, clang::SourceRange, clang::DeclarationNameInfo const&, clang::TemplateArgumentListInfo const*)"}, + {"_ZN5clang25DependentScopeDeclRefExprC2ENS_8QualTypeEPNS_19NestedNameSpecifierENS_11SourceRangeERKNS_19DeclarationNameInfoEPKNS_24TemplateArgumentListInfoE", "clang::DependentScopeDeclRefExpr::DependentScopeDeclRefExpr(clang::QualType, clang::NestedNameSpecifier*, clang::SourceRange, clang::DeclarationNameInfo const&, clang::TemplateArgumentListInfo const*)"}, + {"_ZN5clang25DependentScopeDeclRefExpr6CreateERNS_10ASTContextEPNS_19NestedNameSpecifierENS_11SourceRangeERKNS_19DeclarationNameInfoEPKNS_24TemplateArgumentListInfoE", "clang::DependentScopeDeclRefExpr::Create(clang::ASTContext&, clang::NestedNameSpecifier*, clang::SourceRange, clang::DeclarationNameInfo const&, clang::TemplateArgumentListInfo const*)"}, + {"_ZN5clang25DependentScopeDeclRefExpr11CreateEmptyERNS_10ASTContextEbj", "clang::DependentScopeDeclRefExpr::CreateEmpty(clang::ASTContext&, bool, unsigned int)"}, + {"_ZNK5clang16CXXConstructExpr14getSourceRangeEv", "clang::CXXConstructExpr::getSourceRange() const"}, + {"_ZNK5clang19CXXOperatorCallExpr14getSourceRangeEv", "clang::CXXOperatorCallExpr::getSourceRange() const"}, + {"_ZN5clang17CXXMemberCallExpr25getImplicitObjectArgumentEv", "clang::CXXMemberCallExpr::getImplicitObjectArgument()"}, + {"_ZN5clang17CXXMemberCallExpr13getRecordDeclEv", "clang::CXXMemberCallExpr::getRecordDecl()"}, + {"_ZNK5clang17CXXMemberCallExpr14getSourceRangeEv", "clang::CXXMemberCallExpr::getSourceRange() const"}, + {"_ZNK5clang16CXXNamedCastExpr11getCastNameEv", "clang::CXXNamedCastExpr::getCastName() const"}, + + // {"_ZN5clang17CXXStaticCastExpr6CreateERNS_10ASTContextENS_8QualTypeENS_13ExprValueKindENS_8CastKindEPNS_4ExprEPKN4llvm11SmallVectorIPNS_16CXXBaseSpecifierELj4EEEPNS_14TypeSourceInfoENS_14SourceLocationESH_", + // "clang::CXXStaticCastExpr::Create(clang::ASTContext&, clang::QualType, clang::ExprValueKind, clang::CastKind, clang::Expr*, llvm::SmallVector const*, clang::TypeSourceInfo*, clang::SourceLocation, clang::SourceLocation)"}, + // got error + + {"_ZN5clang17CXXStaticCastExpr11CreateEmptyERNS_10ASTContextEj", "clang::CXXStaticCastExpr::CreateEmpty(clang::ASTContext&, unsigned int)"}, + + // {"_ZN5clang18CXXDynamicCastExpr6CreateERNS_10ASTContextENS_8QualTypeENS_13ExprValueKindENS_8CastKindEPNS_4ExprEPKN4llvm11SmallVectorIPNS_16CXXBaseSpecifierELj4EEEPNS_14TypeSourceInfoENS_14SourceLocationESH_", + // "clang::CXXDynamicCastExpr::Create(clang::ASTContext&, clang::QualType, clang::ExprValueKind, clang::CastKind, clang::Expr*, llvm::SmallVector const*, clang::TypeSourceInfo*, clang::SourceLocation, clang::SourceLocation)"}, + // got error + + {"_ZN5clang18CXXDynamicCastExpr11CreateEmptyERNS_10ASTContextEj", "clang::CXXDynamicCastExpr::CreateEmpty(clang::ASTContext&, unsigned int)"}, + + // {"_ZN5clang22CXXReinterpretCastExpr6CreateERNS_10ASTContextENS_8QualTypeENS_13ExprValueKindENS_8CastKindEPNS_4ExprEPKN4llvm11SmallVectorIPNS_16CXXBaseSpecifierELj4EEEPNS_14TypeSourceInfoENS_14SourceLocationESH_", + // "clang::CXXReinterpretCastExpr::Create(clang::ASTContext&, clang::QualType, clang::ExprValueKind, clang::CastKind, clang::Expr*, llvm::SmallVector const*, clang::TypeSourceInfo*, clang::SourceLocation, clang::SourceLocation)"}, + // got error + + {"_ZN5clang22CXXReinterpretCastExpr11CreateEmptyERNS_10ASTContextEj", "clang::CXXReinterpretCastExpr::CreateEmpty(clang::ASTContext&, unsigned int)"}, + + // {"_ZN5clang16CXXConstCastExpr6CreateERNS_10ASTContextENS_8QualTypeENS_13ExprValueKindEPNS_4ExprEPNS_14TypeSourceInfoENS_14SourceLocationES9_", + // "clang::CXXConstCastExpr::Create(clang::ASTContext&, clang::QualType, clang::ExprValueKind, clang::Expr*, clang::TypeSourceInfo*, clang::SourceLocation, clang::SourceLocation)"}, + // got error + + {"_ZN5clang16CXXConstCastExpr11CreateEmptyERNS_10ASTContextE", "clang::CXXConstCastExpr::CreateEmpty(clang::ASTContext&)"}, + + // {"_ZN5clang21CXXFunctionalCastExpr6CreateERNS_10ASTContextENS_8QualTypeENS_13ExprValueKindEPNS_14TypeSourceInfoENS_14SourceLocationENS_8CastKindEPNS_4ExprEPKN4llvm11SmallVectorIPNS_16CXXBaseSpecifierELj4EEES7_", + // "clang::CXXFunctionalCastExpr::Create(clang::ASTContext&, clang::QualType, clang::ExprValueKind, clang::TypeSourceInfo*, clang::SourceLocation, clang::CastKind, clang::Expr*, llvm::SmallVector const*, clang::SourceLocation)"}, + // "clang::CXXFunctionalCastExpr::Create(clang::ASTContext&, clang::QualType, clang::ExprValueKind, clang::TypeSourceInfo*, clang::SourceLocation, clang::CastKind, clang::Expr*, llvm::SmallVector const*, clang::SourceLocation)" was returned + + {"_ZN5clang21CXXFunctionalCastExpr11CreateEmptyERNS_10ASTContextEj", "clang::CXXFunctionalCastExpr::CreateEmpty(clang::ASTContext&, unsigned int)"}, + {"_ZN5clang17CXXDefaultArgExpr6CreateERNS_10ASTContextENS_14SourceLocationEPNS_11ParmVarDeclEPNS_4ExprE", "clang::CXXDefaultArgExpr::Create(clang::ASTContext&, clang::SourceLocation, clang::ParmVarDecl*, clang::Expr*)"}, + {"_ZN5clang12CXXTemporary6CreateERNS_10ASTContextEPKNS_17CXXDestructorDeclE", "clang::CXXTemporary::Create(clang::ASTContext&, clang::CXXDestructorDecl const*)"}, + {"_ZN5clang20CXXBindTemporaryExpr6CreateERNS_10ASTContextEPNS_12CXXTemporaryEPNS_4ExprE", "clang::CXXBindTemporaryExpr::Create(clang::ASTContext&, clang::CXXTemporary*, clang::Expr*)"}, + {"_ZN5clang22CXXTemporaryObjectExprC1ERNS_10ASTContextEPNS_18CXXConstructorDeclEPNS_14TypeSourceInfoEPPNS_4ExprEjNS_11SourceRangeEb", "clang::CXXTemporaryObjectExpr::CXXTemporaryObjectExpr(clang::ASTContext&, clang::CXXConstructorDecl*, clang::TypeSourceInfo*, clang::Expr**, unsigned int, clang::SourceRange, bool)"}, + {"_ZN5clang22CXXTemporaryObjectExprC2ERNS_10ASTContextEPNS_18CXXConstructorDeclEPNS_14TypeSourceInfoEPPNS_4ExprEjNS_11SourceRangeEb", "clang::CXXTemporaryObjectExpr::CXXTemporaryObjectExpr(clang::ASTContext&, clang::CXXConstructorDecl*, clang::TypeSourceInfo*, clang::Expr**, unsigned int, clang::SourceRange, bool)"}, + {"_ZN5clang16CXXConstructExprC2ERNS_10ASTContextENS_4Stmt9StmtClassENS_8QualTypeENS_14SourceLocationEPNS_18CXXConstructorDeclEbPPNS_4ExprEjbNS0_16ConstructionKindENS_11SourceRangeE", "clang::CXXConstructExpr::CXXConstructExpr(clang::ASTContext&, clang::Stmt::StmtClass, clang::QualType, clang::SourceLocation, clang::CXXConstructorDecl*, bool, clang::Expr**, unsigned int, bool, clang::CXXConstructExpr::ConstructionKind, clang::SourceRange)"}, + {"_ZNK5clang22CXXTemporaryObjectExpr14getSourceRangeEv", "clang::CXXTemporaryObjectExpr::getSourceRange() const"}, + {"_ZN5clang16CXXConstructExpr6CreateERNS_10ASTContextENS_8QualTypeENS_14SourceLocationEPNS_18CXXConstructorDeclEbPPNS_4ExprEjbNS0_16ConstructionKindENS_11SourceRangeE", "clang::CXXConstructExpr::Create(clang::ASTContext&, clang::QualType, clang::SourceLocation, clang::CXXConstructorDecl*, bool, clang::Expr**, unsigned int, bool, clang::CXXConstructExpr::ConstructionKind, clang::SourceRange)"}, + {"_ZN5clang16CXXConstructExprC1ERNS_10ASTContextENS_4Stmt9StmtClassENS_8QualTypeENS_14SourceLocationEPNS_18CXXConstructorDeclEbPPNS_4ExprEjbNS0_16ConstructionKindENS_11SourceRangeE", "clang::CXXConstructExpr::CXXConstructExpr(clang::ASTContext&, clang::Stmt::StmtClass, clang::QualType, clang::SourceLocation, clang::CXXConstructorDecl*, bool, clang::Expr**, unsigned int, bool, clang::CXXConstructExpr::ConstructionKind, clang::SourceRange)"}, + {"_ZN5clang16ExprWithCleanupsC1ERNS_10ASTContextEPNS_4ExprEPPNS_12CXXTemporaryEj", "clang::ExprWithCleanups::ExprWithCleanups(clang::ASTContext&, clang::Expr*, clang::CXXTemporary**, unsigned int)"}, + {"_ZN5clang16ExprWithCleanupsC2ERNS_10ASTContextEPNS_4ExprEPPNS_12CXXTemporaryEj", "clang::ExprWithCleanups::ExprWithCleanups(clang::ASTContext&, clang::Expr*, clang::CXXTemporary**, unsigned int)"}, + {"_ZN5clang16ExprWithCleanups17setNumTemporariesERNS_10ASTContextEj", "clang::ExprWithCleanups::setNumTemporaries(clang::ASTContext&, unsigned int)"}, + {"_ZN5clang16ExprWithCleanups6CreateERNS_10ASTContextEPNS_4ExprEPPNS_12CXXTemporaryEj", "clang::ExprWithCleanups::Create(clang::ASTContext&, clang::Expr*, clang::CXXTemporary**, unsigned int)"}, + {"_ZN5clang26CXXUnresolvedConstructExprC1EPNS_14TypeSourceInfoENS_14SourceLocationEPPNS_4ExprEjS3_", "clang::CXXUnresolvedConstructExpr::CXXUnresolvedConstructExpr(clang::TypeSourceInfo*, clang::SourceLocation, clang::Expr**, unsigned int, clang::SourceLocation)"}, + {"_ZN5clang26CXXUnresolvedConstructExprC2EPNS_14TypeSourceInfoENS_14SourceLocationEPPNS_4ExprEjS3_", "clang::CXXUnresolvedConstructExpr::CXXUnresolvedConstructExpr(clang::TypeSourceInfo*, clang::SourceLocation, clang::Expr**, unsigned int, clang::SourceLocation)"}, + {"_ZN5clang26CXXUnresolvedConstructExpr6CreateERNS_10ASTContextEPNS_14TypeSourceInfoENS_14SourceLocationEPPNS_4ExprEjS5_", "clang::CXXUnresolvedConstructExpr::Create(clang::ASTContext&, clang::TypeSourceInfo*, clang::SourceLocation, clang::Expr**, unsigned int, clang::SourceLocation)"}, + {"_ZN5clang26CXXUnresolvedConstructExpr11CreateEmptyERNS_10ASTContextEj", "clang::CXXUnresolvedConstructExpr::CreateEmpty(clang::ASTContext&, unsigned int)"}, + {"_ZNK5clang26CXXUnresolvedConstructExpr14getSourceRangeEv", "clang::CXXUnresolvedConstructExpr::getSourceRange() const"}, + {"_ZN5clang27CXXDependentScopeMemberExprC1ERNS_10ASTContextEPNS_4ExprENS_8QualTypeEbNS_14SourceLocationEPNS_19NestedNameSpecifierENS_11SourceRangeEPNS_9NamedDeclENS_19DeclarationNameInfoEPKNS_24TemplateArgumentListInfoE", "clang::CXXDependentScopeMemberExpr::CXXDependentScopeMemberExpr(clang::ASTContext&, clang::Expr*, clang::QualType, bool, clang::SourceLocation, clang::NestedNameSpecifier*, clang::SourceRange, clang::NamedDecl*, clang::DeclarationNameInfo, clang::TemplateArgumentListInfo const*)"}, + {"_ZN5clang27CXXDependentScopeMemberExprC2ERNS_10ASTContextEPNS_4ExprENS_8QualTypeEbNS_14SourceLocationEPNS_19NestedNameSpecifierENS_11SourceRangeEPNS_9NamedDeclENS_19DeclarationNameInfoEPKNS_24TemplateArgumentListInfoE", "clang::CXXDependentScopeMemberExpr::CXXDependentScopeMemberExpr(clang::ASTContext&, clang::Expr*, clang::QualType, bool, clang::SourceLocation, clang::NestedNameSpecifier*, clang::SourceRange, clang::NamedDecl*, clang::DeclarationNameInfo, clang::TemplateArgumentListInfo const*)"}, + {"_ZN5clang27CXXDependentScopeMemberExprC1ERNS_10ASTContextEPNS_4ExprENS_8QualTypeEbNS_14SourceLocationEPNS_19NestedNameSpecifierENS_11SourceRangeEPNS_9NamedDeclENS_19DeclarationNameInfoE", "clang::CXXDependentScopeMemberExpr::CXXDependentScopeMemberExpr(clang::ASTContext&, clang::Expr*, clang::QualType, bool, clang::SourceLocation, clang::NestedNameSpecifier*, clang::SourceRange, clang::NamedDecl*, clang::DeclarationNameInfo)"}, + {"_ZN5clang27CXXDependentScopeMemberExprC2ERNS_10ASTContextEPNS_4ExprENS_8QualTypeEbNS_14SourceLocationEPNS_19NestedNameSpecifierENS_11SourceRangeEPNS_9NamedDeclENS_19DeclarationNameInfoE", "clang::CXXDependentScopeMemberExpr::CXXDependentScopeMemberExpr(clang::ASTContext&, clang::Expr*, clang::QualType, bool, clang::SourceLocation, clang::NestedNameSpecifier*, clang::SourceRange, clang::NamedDecl*, clang::DeclarationNameInfo)"}, + {"_ZN5clang27CXXDependentScopeMemberExpr6CreateERNS_10ASTContextEPNS_4ExprENS_8QualTypeEbNS_14SourceLocationEPNS_19NestedNameSpecifierENS_11SourceRangeEPNS_9NamedDeclENS_19DeclarationNameInfoEPKNS_24TemplateArgumentListInfoE", "clang::CXXDependentScopeMemberExpr::Create(clang::ASTContext&, clang::Expr*, clang::QualType, bool, clang::SourceLocation, clang::NestedNameSpecifier*, clang::SourceRange, clang::NamedDecl*, clang::DeclarationNameInfo, clang::TemplateArgumentListInfo const*)"}, + {"_ZN5clang27CXXDependentScopeMemberExpr11CreateEmptyERNS_10ASTContextEbj", "clang::CXXDependentScopeMemberExpr::CreateEmpty(clang::ASTContext&, bool, unsigned int)"}, + {"_ZN5clang20UnresolvedMemberExprC1ERNS_10ASTContextEbPNS_4ExprENS_8QualTypeEbNS_14SourceLocationEPNS_19NestedNameSpecifierENS_11SourceRangeERKNS_19DeclarationNameInfoEPKNS_24TemplateArgumentListInfoENS_21UnresolvedSetIteratorESG_", "clang::UnresolvedMemberExpr::UnresolvedMemberExpr(clang::ASTContext&, bool, clang::Expr*, clang::QualType, bool, clang::SourceLocation, clang::NestedNameSpecifier*, clang::SourceRange, clang::DeclarationNameInfo const&, clang::TemplateArgumentListInfo const*, clang::UnresolvedSetIterator, clang::UnresolvedSetIterator)"}, + {"_ZN5clang20UnresolvedMemberExprC2ERNS_10ASTContextEbPNS_4ExprENS_8QualTypeEbNS_14SourceLocationEPNS_19NestedNameSpecifierENS_11SourceRangeERKNS_19DeclarationNameInfoEPKNS_24TemplateArgumentListInfoENS_21UnresolvedSetIteratorESG_", "clang::UnresolvedMemberExpr::UnresolvedMemberExpr(clang::ASTContext&, bool, clang::Expr*, clang::QualType, bool, clang::SourceLocation, clang::NestedNameSpecifier*, clang::SourceRange, clang::DeclarationNameInfo const&, clang::TemplateArgumentListInfo const*, clang::UnresolvedSetIterator, clang::UnresolvedSetIterator)"}, + {"_ZN5clang20UnresolvedMemberExpr6CreateERNS_10ASTContextEbPNS_4ExprENS_8QualTypeEbNS_14SourceLocationEPNS_19NestedNameSpecifierENS_11SourceRangeERKNS_19DeclarationNameInfoEPKNS_24TemplateArgumentListInfoENS_21UnresolvedSetIteratorESG_", "clang::UnresolvedMemberExpr::Create(clang::ASTContext&, bool, clang::Expr*, clang::QualType, bool, clang::SourceLocation, clang::NestedNameSpecifier*, clang::SourceRange, clang::DeclarationNameInfo const&, clang::TemplateArgumentListInfo const*, clang::UnresolvedSetIterator, clang::UnresolvedSetIterator)"}, + {"_ZN5clang20UnresolvedMemberExpr11CreateEmptyERNS_10ASTContextEbj", "clang::UnresolvedMemberExpr::CreateEmpty(clang::ASTContext&, bool, unsigned int)"}, + {"_ZN5clang32SubstNonTypeTemplateParmPackExprC1ENS_8QualTypeEPNS_23NonTypeTemplateParmDeclENS_14SourceLocationERKNS_16TemplateArgumentE", "clang::SubstNonTypeTemplateParmPackExpr::SubstNonTypeTemplateParmPackExpr(clang::QualType, clang::NonTypeTemplateParmDecl*, clang::SourceLocation, clang::TemplateArgument const&)"}, + {"_ZN5clang32SubstNonTypeTemplateParmPackExprC2ENS_8QualTypeEPNS_23NonTypeTemplateParmDeclENS_14SourceLocationERKNS_16TemplateArgumentE", "clang::SubstNonTypeTemplateParmPackExpr::SubstNonTypeTemplateParmPackExpr(clang::QualType, clang::NonTypeTemplateParmDecl*, clang::SourceLocation, clang::TemplateArgument const&)"}, + {"_ZNK5clang32SubstNonTypeTemplateParmPackExpr15getArgumentPackEv", "clang::SubstNonTypeTemplateParmPackExpr::getArgumentPack() const"}, + {"_ZNK5clang4Expr12ClassifyImplERNS_10ASTContextEPNS_14SourceLocationE", "clang::Expr::ClassifyImpl(clang::ASTContext&, clang::SourceLocation*) const"}, + {"_Z16ClassifyInternalRN5clang10ASTContextEPKNS_4ExprE", "ClassifyInternal(clang::ASTContext&, clang::Expr const*)"}, + {"_ZNK5clang4Expr14ClassifyLValueERNS_10ASTContextE", "clang::Expr::ClassifyLValue(clang::ASTContext&) const"}, + {"_ZNK5clang4Expr18isModifiableLvalueERNS_10ASTContextEPNS_14SourceLocationE", "clang::Expr::isModifiableLvalue(clang::ASTContext&, clang::SourceLocation*) const"}, + {"_Z15ClassifyUnnamedRN5clang10ASTContextENS_8QualTypeE", "ClassifyUnnamed(clang::ASTContext&, clang::QualType)"}, + {"_ZNK5clang4Expr8EvaluateERNS0_10EvalResultERKNS_10ASTContextE", "clang::Expr::Evaluate(clang::Expr::EvalResult&, clang::ASTContext const&) const"}, + {"_ZN5clang11StmtVisitorIN12_GLOBAL__N_116IntExprEvaluatorEbE5VisitEPNS_4StmtE", "clang::StmtVisitor<(anonymous namespace)::IntExprEvaluator, bool>::Visit(clang::Stmt*)"}, + {"_ZNK5clang4Expr26EvaluateAsBooleanConditionERbRKNS_10ASTContextE", "clang::Expr::EvaluateAsBooleanCondition(bool&, clang::ASTContext const&) const"}, + {"_Z22HandleConversionToBoolPKN5clang4ExprERbR8EvalInfo", "HandleConversionToBool(clang::Expr const*, bool&, EvalInfo&)"}, + {"_ZNK5clang4Expr16EvaluateAsLValueERNS0_10EvalResultERKNS_10ASTContextE", "clang::Expr::EvaluateAsLValue(clang::Expr::EvalResult&, clang::ASTContext const&) const"}, + {"_ZNK5clang4Expr19EvaluateAsAnyLValueERNS0_10EvalResultERKNS_10ASTContextE", "clang::Expr::EvaluateAsAnyLValue(clang::Expr::EvalResult&, clang::ASTContext const&) const"}, + {"_ZNK5clang4Expr13isEvaluatableERKNS_10ASTContextE", "clang::Expr::isEvaluatable(clang::ASTContext const&) const"}, + {"_ZNK5clang4Expr14HasSideEffectsERKNS_10ASTContextE", "clang::Expr::HasSideEffects(clang::ASTContext const&) const"}, + {"_ZN5clang11StmtVisitorIN12_GLOBAL__N_113HasSideEffectEbE5VisitEPNS_4StmtE", "clang::StmtVisitor<(anonymous namespace)::HasSideEffect, bool>::Visit(clang::Stmt*)"}, + {"_ZNK5clang4Expr13EvaluateAsIntERKNS_10ASTContextE", "clang::Expr::EvaluateAsInt(clang::ASTContext const&) const"}, + {"_ZNK5clang4Expr10EvalResult14isGlobalLValueEv", "clang::Expr::EvalResult::isGlobalLValue() const"}, + {"_ZNK5clang4Expr21isIntegerConstantExprERN4llvm6APSIntERNS_10ASTContextEPNS_14SourceLocationEb", "clang::Expr::isIntegerConstantExpr(llvm::APSInt&, clang::ASTContext&, clang::SourceLocation*, bool) const"}, + {"_Z8CheckICEPKN5clang4ExprERNS_10ASTContextE", "CheckICE(clang::Expr const*, clang::ASTContext&)"}, + {"_ZN12_GLOBAL__N_116IntExprEvaluator19VisitBinaryOperatorEPKN5clang14BinaryOperatorE", "(anonymous namespace)::IntExprEvaluator::VisitBinaryOperator(clang::BinaryOperator const*)"}, + {"_ZN12_GLOBAL__N_116IntExprEvaluator13VisitCallExprEPN5clang8CallExprE", "(anonymous namespace)::IntExprEvaluator::VisitCallExpr(clang::CallExpr*)"}, + {"_ZN12_GLOBAL__N_116IntExprEvaluator18VisitUnaryOperatorEPKN5clang13UnaryOperatorE", "(anonymous namespace)::IntExprEvaluator::VisitUnaryOperator(clang::UnaryOperator const*)"}, + {"_ZN12_GLOBAL__N_116IntExprEvaluator7SuccessEyPKN5clang4ExprE", "(anonymous namespace)::IntExprEvaluator::Success(unsigned long long, clang::Expr const*)"}, + {"_Z15EvaluateIntegerPKN5clang4ExprERN4llvm6APSIntER8EvalInfo", "EvaluateInteger(clang::Expr const*, llvm::APSInt&, EvalInfo&)"}, + {"_ZN12_GLOBAL__N_116IntExprEvaluator19CheckReferencedDeclEPKN5clang4ExprEPKNS1_4DeclE", "(anonymous namespace)::IntExprEvaluator::CheckReferencedDecl(clang::Expr const*, clang::Decl const*)"}, + {"_ZN12_GLOBAL__N_116IntExprEvaluator13VisitCastExprEPN5clang8CastExprE", "(anonymous namespace)::IntExprEvaluator::VisitCastExpr(clang::CastExpr*)"}, + {"_Z18HandleIntToIntCastN5clang8QualTypeES0_RN4llvm6APSIntERKNS_10ASTContextE", "HandleIntToIntCast(clang::QualType, clang::QualType, llvm::APSInt&, clang::ASTContext const&)"}, + {"_Z20HandleFloatToIntCastN5clang8QualTypeES0_RN4llvm7APFloatERKNS_10ASTContextE", "HandleFloatToIntCast(clang::QualType, clang::QualType, llvm::APFloat&, clang::ASTContext const&)"}, + {"_Z22EvalPointerValueAsBoolRN12_GLOBAL__N_16LValueERb", "EvalPointerValueAsBool((anonymous namespace)::LValue&, bool&)"}, + {"_ZN5clang11StmtVisitorIN12_GLOBAL__N_119LValueExprEvaluatorEbE5VisitEPNS_4StmtE", "clang::StmtVisitor<(anonymous namespace)::LValueExprEvaluator, bool>::Visit(clang::Stmt*)"}, + {"_ZN5clang11StmtVisitorIN12_GLOBAL__N_120ComplexExprEvaluatorEbE5VisitEPNS_4StmtE", "clang::StmtVisitor<(anonymous namespace)::ComplexExprEvaluator, bool>::Visit(clang::Stmt*)"}, + {"_ZN12_GLOBAL__N_120ComplexExprEvaluator19VisitBinaryOperatorEPKN5clang14BinaryOperatorE", "(anonymous namespace)::ComplexExprEvaluator::VisitBinaryOperator(clang::BinaryOperator const*)"}, + {"_ZN12_GLOBAL__N_120ComplexExprEvaluator18VisitUnaryOperatorEPKN5clang13UnaryOperatorE", "(anonymous namespace)::ComplexExprEvaluator::VisitUnaryOperator(clang::UnaryOperator const*)"}, + {"_ZN12_GLOBAL__N_120ComplexExprEvaluator13VisitCastExprEPN5clang8CastExprE", "(anonymous namespace)::ComplexExprEvaluator::VisitCastExpr(clang::CastExpr*)"}, + {"_ZN5clang11StmtVisitorIN12_GLOBAL__N_118FloatExprEvaluatorEbE5VisitEPNS_4StmtE", "clang::StmtVisitor<(anonymous namespace)::FloatExprEvaluator, bool>::Visit(clang::Stmt*)"}, + {"_ZN12_GLOBAL__N_118FloatExprEvaluator19VisitBinaryOperatorEPKN5clang14BinaryOperatorE", "(anonymous namespace)::FloatExprEvaluator::VisitBinaryOperator(clang::BinaryOperator const*)"}, + {"_ZN12_GLOBAL__N_118FloatExprEvaluator13VisitCallExprEPKN5clang8CallExprE", "(anonymous namespace)::FloatExprEvaluator::VisitCallExpr(clang::CallExpr const*)"}, + {"_ZN12_GLOBAL__N_118FloatExprEvaluator13VisitCastExprEPN5clang8CastExprE", "(anonymous namespace)::FloatExprEvaluator::VisitCastExpr(clang::CastExpr*)"}, + {"_Z21TryEvaluateBuiltinNaNRKN5clang10ASTContextENS_8QualTypeEPKNS_4ExprEbRN4llvm7APFloatE", "TryEvaluateBuiltinNaN(clang::ASTContext const&, clang::QualType, clang::Expr const*, bool, llvm::APFloat&)"}, + {"_ZN5clang11StmtVisitorIN12_GLOBAL__N_120PointerExprEvaluatorEbE5VisitEPNS_4StmtE", "clang::StmtVisitor<(anonymous namespace)::PointerExprEvaluator, bool>::Visit(clang::Stmt*)"}, + {"_ZN12_GLOBAL__N_120PointerExprEvaluator19VisitBinaryOperatorEPKN5clang14BinaryOperatorE", "(anonymous namespace)::PointerExprEvaluator::VisitBinaryOperator(clang::BinaryOperator const*)"}, + {"_ZN12_GLOBAL__N_120PointerExprEvaluator13VisitCastExprEPN5clang8CastExprE", "(anonymous namespace)::PointerExprEvaluator::VisitCastExpr(clang::CastExpr*)"}, + {"_ZN5clang11StmtVisitorIN12_GLOBAL__N_119VectorExprEvaluatorENS_7APValueEE5VisitEPNS_4StmtE", "clang::StmtVisitor<(anonymous namespace)::VectorExprEvaluator, clang::APValue>::Visit(clang::Stmt*)"}, + {"_ZN12_GLOBAL__N_119VectorExprEvaluator13GetZeroVectorEN5clang8QualTypeE", "(anonymous namespace)::VectorExprEvaluator::GetZeroVector(clang::QualType)"}, + {"_ZN12_GLOBAL__N_119VectorExprEvaluator13VisitCastExprEPKN5clang8CastExprE", "(anonymous namespace)::VectorExprEvaluator::VisitCastExpr(clang::CastExpr const*)"}, + {"_ZNK5clang10ASTContext12MakeIntValueEyNS_8QualTypeE", "clang::ASTContext::MakeIntValue(unsigned long long, clang::QualType) const"}, + {"_ZN5clang7APValueC2ERKN4llvm6APSIntE", "clang::APValue::APValue(llvm::APSInt const&)"}, + {"_ZNK4llvm5APIntcoEv", "llvm::APInt::operator~() const"}, + {"_ZNK5clang7VarDecl17setEvaluatedValueERKNS_7APValueE", "clang::VarDecl::setEvaluatedValue(clang::APValue const&) const"}, + {"_ZNK4llvm6APSIntanERKS0_", "llvm::APSInt::operator&(llvm::APSInt const&) const"}, + {"_ZNK4llvm6APSInteoERKS0_", "llvm::APSInt::operator^(llvm::APSInt const&) const"}, + {"_ZNK4llvm6APSIntorERKS0_", "llvm::APSInt::operator|(llvm::APSInt const&) const"}, + {"_ZNK4llvm6APSIntdvERKS0_", "llvm::APSInt::operator/(llvm::APSInt const&) const"}, + {"_ZNK4llvm6APSIntrmERKS0_", "llvm::APSInt::operator%(llvm::APSInt const&) const"}, + {"_ZNK4llvm6APSIntlsEj", "llvm::APSInt::operator<<(unsigned int) const"}, + {"_ZNK4llvm6APSIntrsEj", "llvm::APSInt::operator>>(unsigned int) const"}, + {"_ZN5clang7APValue13setComplexIntERKN4llvm6APSIntES4_", "clang::APValue::setComplexInt(llvm::APSInt const&, llvm::APSInt const&)"}, + {"_ZN5clang7APValue9setVectorEPKS0_j", "clang::APValue::setVector(clang::APValue const*, unsigned int)"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang7APValueELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + + // {"_ZN4llvm11SmallVectorIN5clang7APValueELj4EEC2EjRKS2_", + // "llvm::SmallVector::SmallVector(unsigned int, clang::APValue const&)"}, + // "llvm::SmallVector::SmallVector(unsigned int, clang::APValue const&)" was returned + + {"_ZN4llvm6APSIntrSEj", "llvm::APSInt::operator>>=(unsigned int)"}, + {"_ZN5clang26InheritanceHierarchyWriter9WriteNodeENS_8QualTypeEb", "clang::InheritanceHierarchyWriter::WriteNode(clang::QualType, bool)"}, + {"_ZN5clang26InheritanceHierarchyWriter18WriteNodeReferenceENS_8QualTypeEb", "clang::InheritanceHierarchyWriter::WriteNodeReference(clang::QualType, bool)"}, + {"_ZNK5clang13CXXRecordDecl15viewInheritanceERNS_10ASTContextE", "clang::CXXRecordDecl::viewInheritance(clang::ASTContext&) const"}, + {"_ZN5clang26InheritanceHierarchyWriter10WriteGraphENS_8QualTypeE", "clang::InheritanceHierarchyWriter::WriteGraph(clang::QualType)"}, + {"_ZNSt8_Rb_treeIN5clang8QualTypeESt4pairIKS1_iESt10_Select1stIS4_ENS0_16QualTypeOrderingESaIS4_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS4_ERKS4_", "std::_Rb_tree, std::_Select1st>, clang::QualTypeOrdering, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIN5clang8QualTypeESt4pairIKS1_iESt10_Select1stIS4_ENS0_16QualTypeOrderingESaIS4_EE16_M_insert_uniqueERKS4_", "std::_Rb_tree, std::_Select1st>, clang::QualTypeOrdering, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZNSt8_Rb_treeIN5clang8QualTypeES1_St9_IdentityIS1_ENS0_16QualTypeOrderingESaIS1_EE16_M_insert_uniqueERKS1_", "std::_Rb_tree, clang::QualTypeOrdering, std::allocator>::_M_insert_unique(clang::QualType const&)"}, + {"_ZNSt8_Rb_treeIN5clang8QualTypeESt4pairIKS1_iESt10_Select1stIS4_ENS0_16QualTypeOrderingESaIS4_EE8_M_eraseEPSt13_Rb_tree_nodeIS4_E", "std::_Rb_tree, std::_Select1st>, clang::QualTypeOrdering, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZNSt8_Rb_treeIN5clang8QualTypeES1_St9_IdentityIS1_ENS0_16QualTypeOrderingESaIS1_EE8_M_eraseEPSt13_Rb_tree_nodeIS1_E", "std::_Rb_tree, clang::QualTypeOrdering, std::allocator>::_M_erase(std::_Rb_tree_node*)"}, + {"_ZN5clang19CreateItaniumCXXABIERNS_10ASTContextE", "clang::CreateItaniumCXXABI(clang::ASTContext&)"}, + {"_ZN5clang15CreateARMCXXABIERNS_10ASTContextE", "clang::CreateARMCXXABI(clang::ASTContext&)"}, + {"_ZN12_GLOBAL__N_19ARMCXXABID1Ev", "(anonymous namespace)::ARMCXXABI::~ARMCXXABI()"}, + {"_ZN12_GLOBAL__N_19ARMCXXABID0Ev", "(anonymous namespace)::ARMCXXABI::~ARMCXXABI()"}, + {"_ZNK12_GLOBAL__N_113ItaniumCXXABI20getMemberPointerSizeEPKN5clang17MemberPointerTypeE", "(anonymous namespace)::ItaniumCXXABI::getMemberPointerSize(clang::MemberPointerType const*) const"}, + {"_ZNK12_GLOBAL__N_113ItaniumCXXABI24getDefaultMethodCallConvEv", "(anonymous namespace)::ItaniumCXXABI::getDefaultMethodCallConv() const"}, + {"_ZNK12_GLOBAL__N_113ItaniumCXXABI13isNearlyEmptyEPKN5clang13CXXRecordDeclE", "(anonymous namespace)::ItaniumCXXABI::isNearlyEmpty(clang::CXXRecordDecl const*) const"}, + {"_ZN12_GLOBAL__N_113ItaniumCXXABID1Ev", "(anonymous namespace)::ItaniumCXXABI::~ItaniumCXXABI()"}, + {"_ZN12_GLOBAL__N_113ItaniumCXXABID0Ev", "(anonymous namespace)::ItaniumCXXABI::~ItaniumCXXABI()"}, + {"_ZN5clang26createItaniumMangleContextERNS_10ASTContextERNS_10DiagnosticE", "clang::createItaniumMangleContext(clang::ASTContext&, clang::Diagnostic&)"}, + {"_ZN12_GLOBAL__N_120ItaniumMangleContextD1Ev", "(anonymous namespace)::ItaniumMangleContext::~ItaniumMangleContext()"}, + {"_ZN12_GLOBAL__N_120ItaniumMangleContextD0Ev", "(anonymous namespace)::ItaniumMangleContext::~ItaniumMangleContext()"}, + {"_ZN12_GLOBAL__N_120ItaniumMangleContext16startNewFunctionEv", "(anonymous namespace)::ItaniumMangleContext::startNewFunction()"}, + {"_ZN12_GLOBAL__N_120ItaniumMangleContext20shouldMangleDeclNameEPKN5clang9NamedDeclE", "(anonymous namespace)::ItaniumMangleContext::shouldMangleDeclName(clang::NamedDecl const*)"}, + {"_ZN12_GLOBAL__N_120ItaniumMangleContext10mangleNameEPKN5clang9NamedDeclERN4llvm15SmallVectorImplIcEE", "(anonymous namespace)::ItaniumMangleContext::mangleName(clang::NamedDecl const*, llvm::SmallVectorImpl&)"}, + {"_ZN12_GLOBAL__N_120ItaniumMangleContext11mangleThunkEPKN5clang13CXXMethodDeclERKNS1_9ThunkInfoERN4llvm15SmallVectorImplIcEE", "(anonymous namespace)::ItaniumMangleContext::mangleThunk(clang::CXXMethodDecl const*, clang::ThunkInfo const&, llvm::SmallVectorImpl&)"}, + {"_ZN12_GLOBAL__N_120ItaniumMangleContext18mangleCXXDtorThunkEPKN5clang17CXXDestructorDeclENS1_11CXXDtorTypeERKNS1_14ThisAdjustmentERN4llvm15SmallVectorImplIcEE", "(anonymous namespace)::ItaniumMangleContext::mangleCXXDtorThunk(clang::CXXDestructorDecl const*, clang::CXXDtorType, clang::ThisAdjustment const&, llvm::SmallVectorImpl&)"}, + {"_ZN12_GLOBAL__N_120ItaniumMangleContext24mangleReferenceTemporaryEPKN5clang7VarDeclERN4llvm15SmallVectorImplIcEE", "(anonymous namespace)::ItaniumMangleContext::mangleReferenceTemporary(clang::VarDecl const*, llvm::SmallVectorImpl&)"}, + {"_ZN12_GLOBAL__N_120ItaniumMangleContext15mangleCXXVTableEPKN5clang13CXXRecordDeclERN4llvm15SmallVectorImplIcEE", "(anonymous namespace)::ItaniumMangleContext::mangleCXXVTable(clang::CXXRecordDecl const*, llvm::SmallVectorImpl&)"}, + {"_ZN12_GLOBAL__N_120ItaniumMangleContext12mangleCXXVTTEPKN5clang13CXXRecordDeclERN4llvm15SmallVectorImplIcEE", "(anonymous namespace)::ItaniumMangleContext::mangleCXXVTT(clang::CXXRecordDecl const*, llvm::SmallVectorImpl&)"}, + {"_ZN12_GLOBAL__N_120ItaniumMangleContext19mangleCXXCtorVTableEPKN5clang13CXXRecordDeclExS4_RN4llvm15SmallVectorImplIcEE", "(anonymous namespace)::ItaniumMangleContext::mangleCXXCtorVTable(clang::CXXRecordDecl const*, long long, clang::CXXRecordDecl const*, llvm::SmallVectorImpl&)"}, + {"_ZN12_GLOBAL__N_120ItaniumMangleContext13mangleCXXRTTIEN5clang8QualTypeERN4llvm15SmallVectorImplIcEE", "(anonymous namespace)::ItaniumMangleContext::mangleCXXRTTI(clang::QualType, llvm::SmallVectorImpl&)"}, + {"_ZN12_GLOBAL__N_120ItaniumMangleContext17mangleCXXRTTINameEN5clang8QualTypeERN4llvm15SmallVectorImplIcEE", "(anonymous namespace)::ItaniumMangleContext::mangleCXXRTTIName(clang::QualType, llvm::SmallVectorImpl&)"}, + {"_ZN12_GLOBAL__N_120ItaniumMangleContext13mangleCXXCtorEPKN5clang18CXXConstructorDeclENS1_11CXXCtorTypeERN4llvm15SmallVectorImplIcEE", "(anonymous namespace)::ItaniumMangleContext::mangleCXXCtor(clang::CXXConstructorDecl const*, clang::CXXCtorType, llvm::SmallVectorImpl&)"}, + {"_ZN12_GLOBAL__N_120ItaniumMangleContext13mangleCXXDtorEPKN5clang17CXXDestructorDeclENS1_11CXXDtorTypeERN4llvm15SmallVectorImplIcEE", "(anonymous namespace)::ItaniumMangleContext::mangleCXXDtor(clang::CXXDestructorDecl const*, clang::CXXDtorType, llvm::SmallVectorImpl&)"}, + {"_ZN12_GLOBAL__N_120ItaniumMangleContext26mangleItaniumGuardVariableEPKN5clang7VarDeclERN4llvm15SmallVectorImplIcEE", "(anonymous namespace)::ItaniumMangleContext::mangleItaniumGuardVariable(clang::VarDecl const*, llvm::SmallVectorImpl&)"}, + {"_ZN12_GLOBAL__N_114CXXNameMangler10mangleNameEPKN5clang9NamedDeclE", "(anonymous namespace)::CXXNameMangler::mangleName(clang::NamedDecl const*)"}, + {"_ZN12_GLOBAL__N_117GetLocalClassDeclEPKN5clang9NamedDeclE", "(anonymous namespace)::GetLocalClassDecl(clang::NamedDecl const*)"}, + {"_ZN12_GLOBAL__N_114CXXNameMangler15mangleLocalNameEPKN5clang9NamedDeclE", "(anonymous namespace)::CXXNameMangler::mangleLocalName(clang::NamedDecl const*)"}, + {"_ZN12_GLOBAL__N_114CXXNameMangler26mangleUnscopedTemplateNameEPKN5clang12TemplateDeclE", "(anonymous namespace)::CXXNameMangler::mangleUnscopedTemplateName(clang::TemplateDecl const*)"}, + {"_ZN12_GLOBAL__N_114CXXNameMangler16mangleNestedNameEPKN5clang9NamedDeclEPKNS1_11DeclContextEb", "(anonymous namespace)::CXXNameMangler::mangleNestedName(clang::NamedDecl const*, clang::DeclContext const*, bool)"}, + {"_ZN12_GLOBAL__N_114CXXNameMangler16mangleQualifiersEN5clang10QualifiersE", "(anonymous namespace)::CXXNameMangler::mangleQualifiers(clang::Qualifiers)"}, + {"_ZN12_GLOBAL__N_114CXXNameMangler20mangleTemplatePrefixEPKN5clang12TemplateDeclE", "(anonymous namespace)::CXXNameMangler::mangleTemplatePrefix(clang::TemplateDecl const*)"}, + {"_ZN12_GLOBAL__N_114CXXNameMangler12manglePrefixEPKN5clang11DeclContextEb", "(anonymous namespace)::CXXNameMangler::manglePrefix(clang::DeclContext const*, bool)"}, + {"_ZN12_GLOBAL__N_114CXXNameMangler21mangleUnqualifiedNameEPKN5clang9NamedDeclENS1_15DeclarationNameEj", "(anonymous namespace)::CXXNameMangler::mangleUnqualifiedName(clang::NamedDecl const*, clang::DeclarationName, unsigned int)"}, + {"_Z24FindFirstNamedDataMemberPKN5clang10RecordDeclE", "FindFirstNamedDataMember(clang::RecordDecl const*)"}, + {"_ZN12_GLOBAL__N_114CXXNameMangler10mangleTypeEN5clang8QualTypeE", "(anonymous namespace)::CXXNameMangler::mangleType(clang::QualType)"}, + {"_ZN12_GLOBAL__N_114CXXNameMangler18mangleOperatorNameEN5clang22OverloadedOperatorKindEj", "(anonymous namespace)::CXXNameMangler::mangleOperatorName(clang::OverloadedOperatorKind, unsigned int)"}, + {"_ZN12_GLOBAL__N_114CXXNameMangler18mangleSubstitutionEN5clang8QualTypeE", "(anonymous namespace)::CXXNameMangler::mangleSubstitution(clang::QualType)"}, + {"_ZN12_GLOBAL__N_114CXXNameMangler10mangleTypeEPKN5clang10VectorTypeE", "(anonymous namespace)::CXXNameMangler::mangleType(clang::VectorType const*)"}, + {"_ZN12_GLOBAL__N_114CXXNameMangler15addSubstitutionEN5clang8QualTypeE", "(anonymous namespace)::CXXNameMangler::addSubstitution(clang::QualType)"}, + {"_ZN12_GLOBAL__N_114CXXNameMangler15addSubstitutionEPKN5clang9NamedDeclE", "(anonymous namespace)::CXXNameMangler::addSubstitution(clang::NamedDecl const*)"}, + {"_ZN12_GLOBAL__N_114CXXNameMangler20mangleTemplatePrefixEN5clang12TemplateNameE", "(anonymous namespace)::CXXNameMangler::mangleTemplatePrefix(clang::TemplateName)"}, + {"_ZN12_GLOBAL__N_114CXXNameMangler18mangleTemplateArgsEN5clang12TemplateNameEPKNS1_16TemplateArgumentEj", "(anonymous namespace)::CXXNameMangler::mangleTemplateArgs(clang::TemplateName, clang::TemplateArgument const*, unsigned int)"}, + {"_ZN12_GLOBAL__N_114CXXNameMangler17mangleTemplateArgEPKN5clang9NamedDeclERKNS1_16TemplateArgumentE", "(anonymous namespace)::CXXNameMangler::mangleTemplateArg(clang::NamedDecl const*, clang::TemplateArgument const&)"}, + {"_ZN12_GLOBAL__N_114CXXNameMangler10mangleTypeEN5clang12TemplateNameE", "(anonymous namespace)::CXXNameMangler::mangleType(clang::TemplateName)"}, + {"_ZN12_GLOBAL__N_114CXXNameMangler16mangleExpressionEPKN5clang4ExprEj", "(anonymous namespace)::CXXNameMangler::mangleExpression(clang::Expr const*, unsigned int)"}, + {"_ZN12_GLOBAL__N_114CXXNameMangler20mangleIntegerLiteralEN5clang8QualTypeERKN4llvm6APSIntE", "(anonymous namespace)::CXXNameMangler::mangleIntegerLiteral(clang::QualType, llvm::APSInt const&)"}, + {"_ZN12_GLOBAL__N_114CXXNameMangler6mangleEPKN5clang9NamedDeclEN4llvm9StringRefE", "(anonymous namespace)::CXXNameMangler::mangle(clang::NamedDecl const*, llvm::StringRef)"}, + {"_ZN12_GLOBAL__N_114CXXNameMangler22mangleFunctionEncodingEPKN5clang12FunctionDeclE", "(anonymous namespace)::CXXNameMangler::mangleFunctionEncoding(clang::FunctionDecl const*)"}, + {"_ZN12_GLOBAL__N_114CXXNameMangler22mangleBareFunctionTypeEPKN5clang12FunctionTypeEb", "(anonymous namespace)::CXXNameMangler::mangleBareFunctionType(clang::FunctionType const*, bool)"}, + {"_ZN12_GLOBAL__N_114CXXNameMangler12mangleNumberERKN4llvm6APSIntE", "(anonymous namespace)::CXXNameMangler::mangleNumber(llvm::APSInt const&)"}, + {"_ZN12_GLOBAL__N_114CXXNameMangler11mangleFloatERKN4llvm7APFloatE", "(anonymous namespace)::CXXNameMangler::mangleFloat(llvm::APFloat const&)"}, + {"_ZN12_GLOBAL__N_114CXXNameMangler21mangleUnresolvedScopeEPN5clang19NestedNameSpecifierE", "(anonymous namespace)::CXXNameMangler::mangleUnresolvedScope(clang::NestedNameSpecifier*)"}, + {"_ZN12_GLOBAL__N_114CXXNameMangler18mangleSubstitutionEN5clang12TemplateNameE", "(anonymous namespace)::CXXNameMangler::mangleSubstitution(clang::TemplateName)"}, + {"_ZN12_GLOBAL__N_114CXXNameMangler15addSubstitutionEN5clang12TemplateNameE", "(anonymous namespace)::CXXNameMangler::addSubstitution(clang::TemplateName)"}, + {"_ZN12_GLOBAL__N_114CXXNameMangler18mangleSubstitutionEm", "(anonymous namespace)::CXXNameMangler::mangleSubstitution(unsigned long)"}, + {"_ZN12_GLOBAL__N_114CXXNameMangler26mangleStandardSubstitutionEPKN5clang9NamedDeclE", "(anonymous namespace)::CXXNameMangler::mangleStandardSubstitution(clang::NamedDecl const*)"}, + {"_Z5isStdPKN5clang13NamespaceDeclE", "isStd(clang::NamespaceDecl const*)"}, + {"_Z20isCharSpecializationN5clang8QualTypeEPKc", "isCharSpecialization(clang::QualType, char const*)"}, + + // {"_Z26isStreamCharSpecializationILm14EEbPKN5clang31ClassTemplateSpecializationDeclERAT__Kc", + // "bool isStreamCharSpecialization<14ul>(clang::ClassTemplateSpecializationDecl const*, char const (&) [14ul])"}, + // "bool isStreamCharSpecialization<14>(clang::ClassTemplateSpecializationDecl const*, char const [14]&)" was returned + + {"_ZN12_GLOBAL__N_114CXXNameMangler10mangleNameEPKN5clang12TemplateDeclEPKNS1_16TemplateArgumentEj", "(anonymous namespace)::CXXNameMangler::mangleName(clang::TemplateDecl const*, clang::TemplateArgument const*, unsigned int)"}, + {"_ZN12_GLOBAL__N_114CXXNameMangler16mangleCallOffsetExx", "(anonymous namespace)::CXXNameMangler::mangleCallOffset(long long, long long)"}, + {"_ZN4llvm8DenseMapImjNS_12DenseMapInfoImEENS1_IjEEE16InsertIntoBucketERKmRKjPSt4pairImjE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(unsigned long const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapImjNS_12DenseMapInfoImEENS1_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNK5clang4Decl7getAttrINS_12AsmLabelAttrEEEPT_v", "clang::AsmLabelAttr* clang::Decl::getAttr() const"}, + {"_ZN4llvm8DenseMapIPKN5clang7TagDeclEyNS_12DenseMapInfoIS4_EENS5_IyEEE6insertERKSt4pairIS4_yE", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPKN5clang7TagDeclEyNS_12DenseMapInfoIS4_EENS5_IyEEE16InsertIntoBucketERKS4_RKyPSt4pairIS4_yE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::TagDecl const* const&, unsigned long long const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang7TagDeclEyNS_12DenseMapInfoIS4_EENS5_IyEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKN5clang9NamedDeclEjNS_12DenseMapInfoIS4_EENS5_IjEEE16InsertIntoBucketERKS4_RKjPSt4pairIS4_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::NamedDecl const* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang9NamedDeclEjNS_12DenseMapInfoIS4_EENS5_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang13MangleContext16startNewFunctionEv", "clang::MangleContext::startNewFunction()"}, + {"_ZN4llvm8DenseMapIPKN5clang9BlockDeclEjNS_12DenseMapInfoIS4_EENS5_IjEEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN5clang13MangleContextD1Ev", "clang::MangleContext::~MangleContext()"}, + {"_ZN5clang13MangleContextD0Ev", "clang::MangleContext::~MangleContext()"}, + {"_ZN5clang13MangleContext26mangleItaniumGuardVariableEPKNS_7VarDeclERN4llvm15SmallVectorImplIcEE", "clang::MangleContext::mangleItaniumGuardVariable(clang::VarDecl const*, llvm::SmallVectorImpl&)"}, + {"_ZN5clang13MangleContext17mangleGlobalBlockEPKNS_9BlockDeclERN4llvm15SmallVectorImplIcEE", "clang::MangleContext::mangleGlobalBlock(clang::BlockDecl const*, llvm::SmallVectorImpl&)"}, + {"_ZN5clang13MangleContext15mangleCtorBlockEPKNS_18CXXConstructorDeclENS_11CXXCtorTypeEPKNS_9BlockDeclERN4llvm15SmallVectorImplIcEE", "clang::MangleContext::mangleCtorBlock(clang::CXXConstructorDecl const*, clang::CXXCtorType, clang::BlockDecl const*, llvm::SmallVectorImpl&)"}, + {"_ZN12_GLOBAL__N_119mangleFunctionBlockERN5clang13MangleContextEN4llvm9StringRefEPKNS0_9BlockDeclERNS3_15SmallVectorImplIcEE", "(anonymous namespace)::mangleFunctionBlock(clang::MangleContext&, llvm::StringRef, clang::BlockDecl const*, llvm::SmallVectorImpl&)"}, + {"_ZN5clang13MangleContext15mangleDtorBlockEPKNS_17CXXDestructorDeclENS_11CXXDtorTypeEPKNS_9BlockDeclERN4llvm15SmallVectorImplIcEE", "clang::MangleContext::mangleDtorBlock(clang::CXXDestructorDecl const*, clang::CXXDtorType, clang::BlockDecl const*, llvm::SmallVectorImpl&)"}, + {"_ZN5clang13MangleContext11mangleBlockEPKNS_11DeclContextEPKNS_9BlockDeclERN4llvm15SmallVectorImplIcEE", "clang::MangleContext::mangleBlock(clang::DeclContext const*, clang::BlockDecl const*, llvm::SmallVectorImpl&)"}, + {"_ZN5clang13MangleContext20mangleObjCMethodNameEPKNS_14ObjCMethodDeclERN4llvm15SmallVectorImplIcEE", "clang::MangleContext::mangleObjCMethodName(clang::ObjCMethodDecl const*, llvm::SmallVectorImpl&)"}, + {"_ZN5clang13MangleContext11mangleBlockEPKNS_9BlockDeclERN4llvm15SmallVectorImplIcEE", "clang::MangleContext::mangleBlock(clang::BlockDecl const*, llvm::SmallVectorImpl&)"}, + {"_ZN4llvm8DenseMapIPKN5clang9BlockDeclEjNS_12DenseMapInfoIS4_EENS5_IjEEE6insertERKSt4pairIS4_jE", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPKN5clang9BlockDeclEjNS_12DenseMapInfoIS4_EENS5_IjEEE16InsertIntoBucketERKS4_RKjPSt4pairIS4_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::BlockDecl const* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang9BlockDeclEjNS_12DenseMapInfoIS4_EENS5_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang21CreateMicrosoftCXXABIERNS_10ASTContextE", "clang::CreateMicrosoftCXXABI(clang::ASTContext&)"}, + {"_ZN12_GLOBAL__N_115MicrosoftCXXABID1Ev", "(anonymous namespace)::MicrosoftCXXABI::~MicrosoftCXXABI()"}, + {"_ZN12_GLOBAL__N_115MicrosoftCXXABID0Ev", "(anonymous namespace)::MicrosoftCXXABI::~MicrosoftCXXABI()"}, + {"_ZNK12_GLOBAL__N_115MicrosoftCXXABI20getMemberPointerSizeEPKN5clang17MemberPointerTypeE", "(anonymous namespace)::MicrosoftCXXABI::getMemberPointerSize(clang::MemberPointerType const*) const"}, + {"_ZNK12_GLOBAL__N_115MicrosoftCXXABI24getDefaultMethodCallConvEv", "(anonymous namespace)::MicrosoftCXXABI::getDefaultMethodCallConv() const"}, + {"_ZNK12_GLOBAL__N_115MicrosoftCXXABI13isNearlyEmptyEPKN5clang13CXXRecordDeclE", "(anonymous namespace)::MicrosoftCXXABI::isNearlyEmpty(clang::CXXRecordDecl const*) const"}, + {"_ZN5clang28createMicrosoftMangleContextERNS_10ASTContextERNS_10DiagnosticE", "clang::createMicrosoftMangleContext(clang::ASTContext&, clang::Diagnostic&)"}, + {"_ZN12_GLOBAL__N_122MicrosoftMangleContextD1Ev", "(anonymous namespace)::MicrosoftMangleContext::~MicrosoftMangleContext()"}, + {"_ZN12_GLOBAL__N_122MicrosoftMangleContextD0Ev", "(anonymous namespace)::MicrosoftMangleContext::~MicrosoftMangleContext()"}, + {"_ZN12_GLOBAL__N_122MicrosoftMangleContext20shouldMangleDeclNameEPKN5clang9NamedDeclE", "(anonymous namespace)::MicrosoftMangleContext::shouldMangleDeclName(clang::NamedDecl const*)"}, + {"_ZN12_GLOBAL__N_122MicrosoftMangleContext10mangleNameEPKN5clang9NamedDeclERN4llvm15SmallVectorImplIcEE", "(anonymous namespace)::MicrosoftMangleContext::mangleName(clang::NamedDecl const*, llvm::SmallVectorImpl&)"}, + {"_ZN12_GLOBAL__N_122MicrosoftMangleContext11mangleThunkEPKN5clang13CXXMethodDeclERKNS1_9ThunkInfoERN4llvm15SmallVectorImplIcEE", "(anonymous namespace)::MicrosoftMangleContext::mangleThunk(clang::CXXMethodDecl const*, clang::ThunkInfo const&, llvm::SmallVectorImpl&)"}, + {"_ZN12_GLOBAL__N_122MicrosoftMangleContext18mangleCXXDtorThunkEPKN5clang17CXXDestructorDeclENS1_11CXXDtorTypeERKNS1_14ThisAdjustmentERN4llvm15SmallVectorImplIcEE", "(anonymous namespace)::MicrosoftMangleContext::mangleCXXDtorThunk(clang::CXXDestructorDecl const*, clang::CXXDtorType, clang::ThisAdjustment const&, llvm::SmallVectorImpl&)"}, + {"_ZN12_GLOBAL__N_122MicrosoftMangleContext24mangleReferenceTemporaryEPKN5clang7VarDeclERN4llvm15SmallVectorImplIcEE", "(anonymous namespace)::MicrosoftMangleContext::mangleReferenceTemporary(clang::VarDecl const*, llvm::SmallVectorImpl&)"}, + {"_ZN12_GLOBAL__N_122MicrosoftMangleContext15mangleCXXVTableEPKN5clang13CXXRecordDeclERN4llvm15SmallVectorImplIcEE", "(anonymous namespace)::MicrosoftMangleContext::mangleCXXVTable(clang::CXXRecordDecl const*, llvm::SmallVectorImpl&)"}, + {"_ZN12_GLOBAL__N_122MicrosoftMangleContext12mangleCXXVTTEPKN5clang13CXXRecordDeclERN4llvm15SmallVectorImplIcEE", "(anonymous namespace)::MicrosoftMangleContext::mangleCXXVTT(clang::CXXRecordDecl const*, llvm::SmallVectorImpl&)"}, + {"_ZN12_GLOBAL__N_122MicrosoftMangleContext19mangleCXXCtorVTableEPKN5clang13CXXRecordDeclExS4_RN4llvm15SmallVectorImplIcEE", "(anonymous namespace)::MicrosoftMangleContext::mangleCXXCtorVTable(clang::CXXRecordDecl const*, long long, clang::CXXRecordDecl const*, llvm::SmallVectorImpl&)"}, + {"_ZN12_GLOBAL__N_122MicrosoftMangleContext13mangleCXXRTTIEN5clang8QualTypeERN4llvm15SmallVectorImplIcEE", "(anonymous namespace)::MicrosoftMangleContext::mangleCXXRTTI(clang::QualType, llvm::SmallVectorImpl&)"}, + {"_ZN12_GLOBAL__N_122MicrosoftMangleContext17mangleCXXRTTINameEN5clang8QualTypeERN4llvm15SmallVectorImplIcEE", "(anonymous namespace)::MicrosoftMangleContext::mangleCXXRTTIName(clang::QualType, llvm::SmallVectorImpl&)"}, + {"_ZN12_GLOBAL__N_122MicrosoftMangleContext13mangleCXXCtorEPKN5clang18CXXConstructorDeclENS1_11CXXCtorTypeERN4llvm15SmallVectorImplIcEE", "(anonymous namespace)::MicrosoftMangleContext::mangleCXXCtor(clang::CXXConstructorDecl const*, clang::CXXCtorType, llvm::SmallVectorImpl&)"}, + {"_ZN12_GLOBAL__N_122MicrosoftMangleContext13mangleCXXDtorEPKN5clang17CXXDestructorDeclENS1_11CXXDtorTypeERN4llvm15SmallVectorImplIcEE", "(anonymous namespace)::MicrosoftMangleContext::mangleCXXDtor(clang::CXXDestructorDecl const*, clang::CXXDtorType, llvm::SmallVectorImpl&)"}, + {"_ZN12_GLOBAL__N_123MicrosoftCXXNameMangler10mangleNameEPKN5clang9NamedDeclE", "(anonymous namespace)::MicrosoftCXXNameMangler::mangleName(clang::NamedDecl const*)"}, + {"_ZN12_GLOBAL__N_123MicrosoftCXXNameMangler10mangleTypeEN5clang8QualTypeE", "(anonymous namespace)::MicrosoftCXXNameMangler::mangleType(clang::QualType)"}, + {"_ZN12_GLOBAL__N_123MicrosoftCXXNameMangler16mangleQualifiersEN5clang10QualifiersEb", "(anonymous namespace)::MicrosoftCXXNameMangler::mangleQualifiers(clang::Qualifiers, bool)"}, + {"_ZN12_GLOBAL__N_123MicrosoftCXXNameMangler21mangleExtraDimensionsEN5clang8QualTypeE", "(anonymous namespace)::MicrosoftCXXNameMangler::mangleExtraDimensions(clang::QualType)"}, + {"_ZN12_GLOBAL__N_123MicrosoftCXXNameMangler12mangleNumberEx", "(anonymous namespace)::MicrosoftCXXNameMangler::mangleNumber(long long)"}, + {"_ZN12_GLOBAL__N_123MicrosoftCXXNameMangler10mangleTypeEPKN5clang7TagTypeE", "(anonymous namespace)::MicrosoftCXXNameMangler::mangleType(clang::TagType const*)"}, + {"_ZN12_GLOBAL__N_123MicrosoftCXXNameMangler10mangleTypeEPKN5clang12FunctionTypeEPKNS1_12FunctionDeclEbb", "(anonymous namespace)::MicrosoftCXXNameMangler::mangleType(clang::FunctionType const*, clang::FunctionDecl const*, bool, bool)"}, + {"_ZN12_GLOBAL__N_123MicrosoftCXXNameMangler21mangleUnqualifiedNameEPKN5clang9NamedDeclE", "(anonymous namespace)::MicrosoftCXXNameMangler::mangleUnqualifiedName(clang::NamedDecl const*)"}, + {"_ZN12_GLOBAL__N_123MicrosoftCXXNameMangler13manglePostfixEPKN5clang11DeclContextEb", "(anonymous namespace)::MicrosoftCXXNameMangler::manglePostfix(clang::DeclContext const*, bool)"}, + {"_ZN4llvm23SmallVectorTemplateBaseINS_5APIntELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN5clang19NestedNameSpecifier12FindOrInsertERKNS_10ASTContextERKS0_", "clang::NestedNameSpecifier::FindOrInsert(clang::ASTContext const&, clang::NestedNameSpecifier const&)"}, + {"_ZN5clang19NestedNameSpecifier6CreateERKNS_10ASTContextEPS0_PNS_14IdentifierInfoE", "clang::NestedNameSpecifier::Create(clang::ASTContext const&, clang::NestedNameSpecifier*, clang::IdentifierInfo*)"}, + {"_ZN5clang19NestedNameSpecifier6CreateERKNS_10ASTContextEPS0_PNS_13NamespaceDeclE", "clang::NestedNameSpecifier::Create(clang::ASTContext const&, clang::NestedNameSpecifier*, clang::NamespaceDecl*)"}, + {"_ZN5clang19NestedNameSpecifier6CreateERKNS_10ASTContextEPS0_bPKNS_4TypeE", "clang::NestedNameSpecifier::Create(clang::ASTContext const&, clang::NestedNameSpecifier*, bool, clang::Type const*)"}, + {"_ZN5clang19NestedNameSpecifier6CreateERKNS_10ASTContextEPNS_14IdentifierInfoE", "clang::NestedNameSpecifier::Create(clang::ASTContext const&, clang::IdentifierInfo*)"}, + {"_ZN5clang19NestedNameSpecifier15GlobalSpecifierERKNS_10ASTContextE", "clang::NestedNameSpecifier::GlobalSpecifier(clang::ASTContext const&)"}, + {"_ZNK5clang19NestedNameSpecifier11isDependentEv", "clang::NestedNameSpecifier::isDependent() const"}, + {"_ZNK5clang19NestedNameSpecifier31containsUnexpandedParameterPackEv", "clang::NestedNameSpecifier::containsUnexpandedParameterPack() const"}, + {"_ZNK5clang19NestedNameSpecifier5printERN4llvm11raw_ostreamERKNS_14PrintingPolicyE", "clang::NestedNameSpecifier::print(llvm::raw_ostream&, clang::PrintingPolicy const&) const"}, + {"_ZN5clang19NestedNameSpecifier4dumpERKNS_11LangOptionsE", "clang::NestedNameSpecifier::dump(clang::LangOptions const&)"}, + {"_ZN5clang9ParentMapC1EPNS_4StmtE", "clang::ParentMap::ParentMap(clang::Stmt*)"}, + {"_ZN5clang9ParentMapC2EPNS_4StmtE", "clang::ParentMap::ParentMap(clang::Stmt*)"}, + {"_Z14BuildParentMapRN4llvm8DenseMapIPN5clang4StmtES3_NS_12DenseMapInfoIS3_EES5_EES3_", "BuildParentMap(llvm::DenseMap, llvm::DenseMapInfo>&, clang::Stmt*)"}, + {"_ZN5clang9ParentMapD1Ev", "clang::ParentMap::~ParentMap()"}, + {"_ZN5clang9ParentMapD2Ev", "clang::ParentMap::~ParentMap()"}, + {"_ZN5clang9ParentMap7addStmtEPNS_4StmtE", "clang::ParentMap::addStmt(clang::Stmt*)"}, + {"_ZNK5clang9ParentMap9getParentEPNS_4StmtE", "clang::ParentMap::getParent(clang::Stmt*) const"}, + {"_ZNK5clang9ParentMap21getParentIgnoreParensEPNS_4StmtE", "clang::ParentMap::getParentIgnoreParens(clang::Stmt*) const"}, + {"_ZNK5clang9ParentMap14isConsumedExprEPNS_4ExprE", "clang::ParentMap::isConsumedExpr(clang::Expr*) const"}, + {"_ZN5clang15ASTRecordLayout7DestroyERNS_10ASTContextE", "clang::ASTRecordLayout::Destroy(clang::ASTContext&)"}, + {"_ZN5clang15ASTRecordLayoutC1ERKNS_10ASTContextENS_9CharUnitsEjjPKyj", "clang::ASTRecordLayout::ASTRecordLayout(clang::ASTContext const&, clang::CharUnits, unsigned int, unsigned int, unsigned long long const*, unsigned int)"}, + {"_ZN5clang15ASTRecordLayoutC2ERKNS_10ASTContextENS_9CharUnitsEjjPKyj", "clang::ASTRecordLayout::ASTRecordLayout(clang::ASTContext const&, clang::CharUnits, unsigned int, unsigned int, unsigned long long const*, unsigned int)"}, + {"_ZN5clang15ASTRecordLayoutC1ERKNS_10ASTContextENS_9CharUnitsEjyPKyjS4_S4_S4_PKNS_13CXXRecordDeclEbRKN4llvm8DenseMapIS9_S4_NSA_12DenseMapInfoIS9_EENSC_IS4_EEEESH_", "clang::ASTRecordLayout::ASTRecordLayout(clang::ASTContext const&, clang::CharUnits, unsigned int, unsigned long long, unsigned long long const*, unsigned int, clang::CharUnits, clang::CharUnits, clang::CharUnits, clang::CXXRecordDecl const*, bool, llvm::DenseMap, llvm::DenseMapInfo> const&, llvm::DenseMap, llvm::DenseMapInfo> const&)"}, + {"_ZN5clang15ASTRecordLayoutC2ERKNS_10ASTContextENS_9CharUnitsEjyPKyjS4_S4_S4_PKNS_13CXXRecordDeclEbRKN4llvm8DenseMapIS9_S4_NSA_12DenseMapInfoIS9_EENSC_IS4_EEEESH_", "clang::ASTRecordLayout::ASTRecordLayout(clang::ASTContext const&, clang::CharUnits, unsigned int, unsigned long long, unsigned long long const*, unsigned int, clang::CharUnits, clang::CharUnits, clang::CharUnits, clang::CXXRecordDecl const*, bool, llvm::DenseMap, llvm::DenseMapInfo> const&, llvm::DenseMap, llvm::DenseMapInfo> const&)"}, + {"_ZN4llvm8DenseMapIPKN5clang13CXXRecordDeclENS1_9CharUnitsENS_12DenseMapInfoIS4_EENS6_IS5_EEE8CopyFromERKS9_", "llvm::DenseMap, llvm::DenseMapInfo>::CopyFrom(llvm::DenseMap, llvm::DenseMapInfo> const&)"}, + {"_ZNK5clang10ASTContext18getASTRecordLayoutEPKNS_10RecordDeclE", "clang::ASTContext::getASTRecordLayout(clang::RecordDecl const*) const"}, + {"_ZN12_GLOBAL__N_119RecordLayoutBuilderD1Ev", "(anonymous namespace)::RecordLayoutBuilder::~RecordLayoutBuilder()"}, + {"_ZNK5clang10ASTContext16DumpRecordLayoutEPKNS_10RecordDeclERN4llvm11raw_ostreamE", "clang::ASTContext::DumpRecordLayout(clang::RecordDecl const*, llvm::raw_ostream&) const"}, + {"_ZN5clang10ASTContext14getKeyFunctionEPKNS_13CXXRecordDeclE", "clang::ASTContext::getKeyFunction(clang::CXXRecordDecl const*)"}, + {"_ZNK5clang10ASTContext13getObjCLayoutEPKNS_17ObjCInterfaceDeclEPKNS_22ObjCImplementationDeclE", "clang::ASTContext::getObjCLayout(clang::ObjCInterfaceDecl const*, clang::ObjCImplementationDecl const*) const"}, + {"_Z19DumpCXXRecordLayoutRN4llvm11raw_ostreamEPKN5clang13CXXRecordDeclERKNS2_10ASTContextENS2_9CharUnitsEjPKcb", "DumpCXXRecordLayout(llvm::raw_ostream&, clang::CXXRecordDecl const*, clang::ASTContext const&, clang::CharUnits, unsigned int, char const*, bool)"}, + {"_ZN12_GLOBAL__N_119RecordLayoutBuilder16InitializeLayoutEPKN5clang4DeclE", "(anonymous namespace)::RecordLayoutBuilder::InitializeLayout(clang::Decl const*)"}, + {"_ZN12_GLOBAL__N_119RecordLayoutBuilder11LayoutFieldEPKN5clang9FieldDeclE", "(anonymous namespace)::RecordLayoutBuilder::LayoutField(clang::FieldDecl const*)"}, + {"_ZN12_GLOBAL__N_119RecordLayoutBuilder12FinishLayoutEPKN5clang9NamedDeclE", "(anonymous namespace)::RecordLayoutBuilder::FinishLayout(clang::NamedDecl const*)"}, + {"_ZN12_GLOBAL__N_119RecordLayoutBuilder17CheckFieldPaddingEyyyjbPKN5clang9FieldDeclE", "(anonymous namespace)::RecordLayoutBuilder::CheckFieldPadding(unsigned long long, unsigned long long, unsigned long long, unsigned int, bool, clang::FieldDecl const*)"}, + {"_ZNK12_GLOBAL__N_117EmptySubobjectMap30CanPlaceFieldSubobjectAtOffsetEPKN5clang9FieldDeclENS1_9CharUnitsE", "(anonymous namespace)::EmptySubobjectMap::CanPlaceFieldSubobjectAtOffset(clang::FieldDecl const*, clang::CharUnits) const"}, + {"_ZN12_GLOBAL__N_117EmptySubobjectMap26UpdateEmptyFieldSubobjectsEPKN5clang9FieldDeclENS1_9CharUnitsE", "(anonymous namespace)::EmptySubobjectMap::UpdateEmptyFieldSubobjects(clang::FieldDecl const*, clang::CharUnits)"}, + {"_ZN12_GLOBAL__N_117EmptySubobjectMap26UpdateEmptyFieldSubobjectsEPKN5clang13CXXRecordDeclES4_NS1_9CharUnitsE", "(anonymous namespace)::EmptySubobjectMap::UpdateEmptyFieldSubobjects(clang::CXXRecordDecl const*, clang::CXXRecordDecl const*, clang::CharUnits)"}, + {"_ZN12_GLOBAL__N_117EmptySubobjectMap20AddSubobjectAtOffsetEPKN5clang13CXXRecordDeclENS1_9CharUnitsE", "(anonymous namespace)::EmptySubobjectMap::AddSubobjectAtOffset(clang::CXXRecordDecl const*, clang::CharUnits)"}, + {"_ZNK12_GLOBAL__N_117EmptySubobjectMap30CanPlaceFieldSubobjectAtOffsetEPKN5clang13CXXRecordDeclES4_NS1_9CharUnitsE", "(anonymous namespace)::EmptySubobjectMap::CanPlaceFieldSubobjectAtOffset(clang::CXXRecordDecl const*, clang::CXXRecordDecl const*, clang::CharUnits) const"}, + {"_ZNK12_GLOBAL__N_117EmptySubobjectMap25CanPlaceSubobjectAtOffsetEPKN5clang13CXXRecordDeclENS1_9CharUnitsE", "(anonymous namespace)::EmptySubobjectMap::CanPlaceSubobjectAtOffset(clang::CXXRecordDecl const*, clang::CharUnits) const"}, + {"_ZN12_GLOBAL__N_119RecordLayoutBuilderD2Ev", "(anonymous namespace)::RecordLayoutBuilder::~RecordLayoutBuilder()"}, + {"_ZNK12_GLOBAL__N_119RecordLayoutBuilder22GetVirtualPointersSizeEPKN5clang13CXXRecordDeclE", "(anonymous namespace)::RecordLayoutBuilder::GetVirtualPointersSize(clang::CXXRecordDecl const*) const"}, + {"_ZN12_GLOBAL__N_119RecordLayoutBuilderD0Ev", "(anonymous namespace)::RecordLayoutBuilder::~RecordLayoutBuilder()"}, + {"_ZN12_GLOBAL__N_119RecordLayoutBuilder18LayoutVirtualBasesEPKN5clang13CXXRecordDeclES4_", "(anonymous namespace)::RecordLayoutBuilder::LayoutVirtualBases(clang::CXXRecordDecl const*, clang::CXXRecordDecl const*)"}, + {"_ZN12_GLOBAL__N_119RecordLayoutBuilder10LayoutBaseEPKNS_17BaseSubobjectInfoE", "(anonymous namespace)::RecordLayoutBuilder::LayoutBase((anonymous namespace)::BaseSubobjectInfo const*)"}, + {"_ZN12_GLOBAL__N_119RecordLayoutBuilder28AddPrimaryVirtualBaseOffsetsEPKNS_17BaseSubobjectInfoEN5clang9CharUnitsE", "(anonymous namespace)::RecordLayoutBuilder::AddPrimaryVirtualBaseOffsets((anonymous namespace)::BaseSubobjectInfo const*, clang::CharUnits)"}, + {"_ZN12_GLOBAL__N_117EmptySubobjectMap29CanPlaceBaseSubobjectAtOffsetEPKNS_17BaseSubobjectInfoEN5clang9CharUnitsE", "(anonymous namespace)::EmptySubobjectMap::CanPlaceBaseSubobjectAtOffset((anonymous namespace)::BaseSubobjectInfo const*, clang::CharUnits)"}, + {"_ZN12_GLOBAL__N_117EmptySubobjectMap25UpdateEmptyBaseSubobjectsEPKNS_17BaseSubobjectInfoEN5clang9CharUnitsEb", "(anonymous namespace)::EmptySubobjectMap::UpdateEmptyBaseSubobjects((anonymous namespace)::BaseSubobjectInfo const*, clang::CharUnits, bool)"}, + {"_ZN12_GLOBAL__N_119RecordLayoutBuilder24ComputeBaseSubobjectInfoEPKN5clang13CXXRecordDeclE", "(anonymous namespace)::RecordLayoutBuilder::ComputeBaseSubobjectInfo(clang::CXXRecordDecl const*)"}, + {"_ZN12_GLOBAL__N_119RecordLayoutBuilder24ComputeBaseSubobjectInfoEPKN5clang13CXXRecordDeclEbPNS_17BaseSubobjectInfoE", "(anonymous namespace)::RecordLayoutBuilder::ComputeBaseSubobjectInfo(clang::CXXRecordDecl const*, bool, (anonymous namespace)::BaseSubobjectInfo*)"}, + {"_ZN4llvm8DenseMapIPKN5clang13CXXRecordDeclEPN12_GLOBAL__N_117BaseSubobjectInfoENS_12DenseMapInfoIS4_EENS8_IS7_EEE16InsertIntoBucketERKS4_RKS7_PSt4pairIS4_S7_E", "llvm::DenseMap, llvm::DenseMapInfo<(anonymous namespace)::BaseSubobjectInfo*>>::InsertIntoBucket(clang::CXXRecordDecl const* const&, (anonymous namespace)::BaseSubobjectInfo* const&, std::pair*)"}, + {"_ZN12_GLOBAL__N_119RecordLayoutBuilder18SelectPrimaryVBaseEPKN5clang13CXXRecordDeclE", "(anonymous namespace)::RecordLayoutBuilder::SelectPrimaryVBase(clang::CXXRecordDecl const*)"}, + {"_ZN12_GLOBAL__N_119RecordLayoutBuilderC2ERKN5clang10ASTContextEPNS_17EmptySubobjectMapE", "(anonymous namespace)::RecordLayoutBuilder::RecordLayoutBuilder(clang::ASTContext const&, (anonymous namespace)::EmptySubobjectMap*)"}, + {"_ZNK12_GLOBAL__N_121MSRecordLayoutBuilder22GetVirtualPointersSizeEPKN5clang13CXXRecordDeclE", "(anonymous namespace)::MSRecordLayoutBuilder::GetVirtualPointersSize(clang::CXXRecordDecl const*) const"}, + {"_ZN12_GLOBAL__N_121MSRecordLayoutBuilderD1Ev", "(anonymous namespace)::MSRecordLayoutBuilder::~MSRecordLayoutBuilder()"}, + {"_ZN12_GLOBAL__N_121MSRecordLayoutBuilderD0Ev", "(anonymous namespace)::MSRecordLayoutBuilder::~MSRecordLayoutBuilder()"}, + {"_ZN4llvm8DenseMapIPKN5clang13CXXRecordDeclEPKNS1_13CXXMethodDeclENS_12DenseMapInfoIS4_EENS8_IS7_EEE16InsertIntoBucketERKS4_RKS7_PSt4pairIS4_S7_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::CXXRecordDecl const* const&, clang::CXXMethodDecl const* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang13CXXRecordDeclEPKNS1_13CXXMethodDeclENS_12DenseMapInfoIS4_EENS8_IS7_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKN5clang10RecordDeclEPKNS1_15ASTRecordLayoutENS_12DenseMapInfoIS4_EENS8_IS7_EEE16InsertIntoBucketERKS4_RKS7_PSt4pairIS4_S7_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::RecordDecl const* const&, clang::ASTRecordLayout const* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang10RecordDeclEPKNS1_15ASTRecordLayoutENS_12DenseMapInfoIS4_EENS8_IS7_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKN5clang17ObjCContainerDeclEPKNS1_15ASTRecordLayoutENS_12DenseMapInfoIS4_EENS8_IS7_EEE16InsertIntoBucketERKS4_RKS7_PSt4pairIS4_S7_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::ObjCContainerDecl const* const&, clang::ASTRecordLayout const* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang17ObjCContainerDeclEPKNS1_15ASTRecordLayoutENS_12DenseMapInfoIS4_EENS8_IS7_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKN5clang13CXXRecordDeclENS1_9CharUnitsENS_12DenseMapInfoIS4_EENS6_IS5_EEE16InsertIntoBucketERKS4_RKS5_PSt4pairIS4_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::CXXRecordDecl const* const&, clang::CharUnits const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang13CXXRecordDeclENS1_9CharUnitsENS_12DenseMapInfoIS4_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + + // {"_ZSt6__findIPPKN5clang13CXXRecordDeclES3_ET_S5_S5_RKT0_St26random_access_iterator_tag", + // "clang::CXXRecordDecl const** std::__find(clang::CXXRecordDecl const**, clang::CXXRecordDecl const**, clang::CXXRecordDecl const* const&, std::random_access_iterator_tag)"}, + // got error + + + // {"_ZN4llvm8DenseMapIN5clang9CharUnitsENS_11SmallVectorIPKNS1_13CXXRecordDeclELj1EEENS_12DenseMapInfoIS2_EENS8_IS7_EEE16FindAndConstructERKS2_", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::FindAndConstruct(clang::CharUnits const&)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::FindAndConstruct(clang::CharUnits const&)" was returned + + + // {"_ZN4llvm8DenseMapIN5clang9CharUnitsENS_11SmallVectorIPKNS1_13CXXRecordDeclELj1EEENS_12DenseMapInfoIS2_EENS8_IS7_EEE16InsertIntoBucketERKS2_RKS7_PSt4pairIS2_S7_E", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(clang::CharUnits const&, llvm::SmallVector const&, std::pair>*)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(clang::CharUnits const&, llvm::SmallVector const&, std::pair>*)" was returned + + + // {"_ZN4llvm8DenseMapIN5clang9CharUnitsENS_11SmallVectorIPKNS1_13CXXRecordDeclELj1EEENS_12DenseMapInfoIS2_EENS8_IS7_EEE4growEj", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)" was returned + + {"_ZN4llvm15SmallVectorImplIPKN5clang13CXXRecordDeclEEaSERKS5_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + + // {"_ZSt6__findIPKPKN5clang13CXXRecordDeclES3_ET_S6_S6_RKT0_St26random_access_iterator_tag", + // "clang::CXXRecordDecl const* const* std::__find(clang::CXXRecordDecl const* const*, clang::CXXRecordDecl const* const*, clang::CXXRecordDecl const* const&, std::random_access_iterator_tag)"}, + // got error + + {"_ZNK5clang4Decl7getAttrINS_21MaxFieldAlignmentAttrEEEPT_v", "clang::MaxFieldAlignmentAttr* clang::Decl::getAttr() const"}, + {"_ZN4llvm8DenseMapIPKN5clang13CXXRecordDeclENS1_9CharUnitsENS_12DenseMapInfoIS4_EENS6_IS5_EEE6insertERKSt4pairIS4_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZNK5clang4Stmt16getStmtClassNameEv", "clang::Stmt::getStmtClassName() const"}, + {"_Z21getStmtInfoTableEntryN5clang4Stmt9StmtClassE", "getStmtInfoTableEntry(clang::Stmt::StmtClass)"}, + {"_ZN5clang4Stmt10PrintStatsEv", "clang::Stmt::PrintStats()"}, + {"_ZN5clang4Stmt12addStmtClassENS0_9StmtClassE", "clang::Stmt::addStmtClass(clang::Stmt::StmtClass)"}, + {"_ZN5clang4Stmt15CollectingStatsEb", "clang::Stmt::CollectingStats(bool)"}, + {"_ZN5clang4Stmt8childrenEv", "clang::Stmt::children()"}, + {"_ZNK5clang4Stmt14getSourceRangeEv", "clang::Stmt::getSourceRange() const"}, + {"_ZNK5clang13ObjCAtTryStmt14getSourceRangeEv", "clang::ObjCAtTryStmt::getSourceRange() const"}, + {"_ZNK5clang10ReturnStmt14getSourceRangeEv", "clang::ReturnStmt::getSourceRange() const"}, + {"_ZN5clang12CompoundStmt8setStmtsERNS_10ASTContextEPPNS_4StmtEj", "clang::CompoundStmt::setStmts(clang::ASTContext&, clang::Stmt**, unsigned int)"}, + {"_ZNK5clang9LabelStmt7getNameEv", "clang::LabelStmt::getName() const"}, + {"_ZNK5clang4Stmt22hasImplicitControlFlowEv", "clang::Stmt::hasImplicitControlFlow() const"}, + {"_ZN5clang7AsmStmt13getOutputExprEj", "clang::AsmStmt::getOutputExpr(unsigned int)"}, + {"_ZNK5clang7AsmStmt19getOutputConstraintEj", "clang::AsmStmt::getOutputConstraint(unsigned int) const"}, + {"_ZNK5clang7AsmStmt18getNumPlusOperandsEv", "clang::AsmStmt::getNumPlusOperands() const"}, + {"_ZN5clang7AsmStmt12getInputExprEj", "clang::AsmStmt::getInputExpr(unsigned int)"}, + {"_ZNK5clang7AsmStmt18getInputConstraintEj", "clang::AsmStmt::getInputConstraint(unsigned int) const"}, + {"_ZN5clang7AsmStmt30setOutputsAndInputsAndClobbersERNS_10ASTContextEPPNS_14IdentifierInfoEPPNS_13StringLiteralEPPNS_4StmtEjjS8_j", "clang::AsmStmt::setOutputsAndInputsAndClobbers(clang::ASTContext&, clang::IdentifierInfo**, clang::StringLiteral**, clang::Stmt**, unsigned int, unsigned int, clang::StringLiteral**, unsigned int)"}, + {"_ZNK5clang7AsmStmt15getNamedOperandEN4llvm9StringRefE", "clang::AsmStmt::getNamedOperand(llvm::StringRef) const"}, + {"_ZNK5clang7AsmStmt16AnalyzeAsmStringERN4llvm15SmallVectorImplINS0_14AsmStringPieceEEERNS_10ASTContextERj", "clang::AsmStmt::AnalyzeAsmString(llvm::SmallVectorImpl&, clang::ASTContext&, unsigned int&) const"}, + {"_ZNK5clang12CXXCatchStmt13getCaughtTypeEv", "clang::CXXCatchStmt::getCaughtType() const"}, + {"_ZN5clang7AsmStmtC1ERNS_10ASTContextENS_14SourceLocationEbbbjjPPNS_14IdentifierInfoEPPNS_13StringLiteralEPPNS_4ExprES8_jS9_S3_", "clang::AsmStmt::AsmStmt(clang::ASTContext&, clang::SourceLocation, bool, bool, bool, unsigned int, unsigned int, clang::IdentifierInfo**, clang::StringLiteral**, clang::Expr**, clang::StringLiteral*, unsigned int, clang::StringLiteral**, clang::SourceLocation)"}, + {"_ZN5clang7AsmStmtC2ERNS_10ASTContextENS_14SourceLocationEbbbjjPPNS_14IdentifierInfoEPPNS_13StringLiteralEPPNS_4ExprES8_jS9_S3_", "clang::AsmStmt::AsmStmt(clang::ASTContext&, clang::SourceLocation, bool, bool, bool, unsigned int, unsigned int, clang::IdentifierInfo**, clang::StringLiteral**, clang::Expr**, clang::StringLiteral*, unsigned int, clang::StringLiteral**, clang::SourceLocation)"}, + {"_ZN5clang21ObjCForCollectionStmtC1EPNS_4StmtEPNS_4ExprES2_NS_14SourceLocationES5_", "clang::ObjCForCollectionStmt::ObjCForCollectionStmt(clang::Stmt*, clang::Expr*, clang::Stmt*, clang::SourceLocation, clang::SourceLocation)"}, + {"_ZN5clang21ObjCForCollectionStmtC2EPNS_4StmtEPNS_4ExprES2_NS_14SourceLocationES5_", "clang::ObjCForCollectionStmt::ObjCForCollectionStmt(clang::Stmt*, clang::Expr*, clang::Stmt*, clang::SourceLocation, clang::SourceLocation)"}, + {"_ZN5clang13ObjCAtTryStmtC1ENS_14SourceLocationEPNS_4StmtEPS3_jS3_", "clang::ObjCAtTryStmt::ObjCAtTryStmt(clang::SourceLocation, clang::Stmt*, clang::Stmt**, unsigned int, clang::Stmt*)"}, + {"_ZN5clang13ObjCAtTryStmtC2ENS_14SourceLocationEPNS_4StmtEPS3_jS3_", "clang::ObjCAtTryStmt::ObjCAtTryStmt(clang::SourceLocation, clang::Stmt*, clang::Stmt**, unsigned int, clang::Stmt*)"}, + {"_ZN5clang13ObjCAtTryStmt6CreateERNS_10ASTContextENS_14SourceLocationEPNS_4StmtEPS5_jS5_", "clang::ObjCAtTryStmt::Create(clang::ASTContext&, clang::SourceLocation, clang::Stmt*, clang::Stmt**, unsigned int, clang::Stmt*)"}, + {"_ZN5clang13ObjCAtTryStmt11CreateEmptyERNS_10ASTContextEjb", "clang::ObjCAtTryStmt::CreateEmpty(clang::ASTContext&, unsigned int, bool)"}, + {"_ZN5clang10CXXTryStmt6CreateERNS_10ASTContextENS_14SourceLocationEPNS_4StmtEPS5_j", "clang::CXXTryStmt::Create(clang::ASTContext&, clang::SourceLocation, clang::Stmt*, clang::Stmt**, unsigned int)"}, + {"_ZN5clang10CXXTryStmtC1ENS_14SourceLocationEPNS_4StmtEPS3_j", "clang::CXXTryStmt::CXXTryStmt(clang::SourceLocation, clang::Stmt*, clang::Stmt**, unsigned int)"}, + {"_ZN5clang10CXXTryStmt6CreateERNS_10ASTContextENS_4Stmt10EmptyShellEj", "clang::CXXTryStmt::Create(clang::ASTContext&, clang::Stmt::EmptyShell, unsigned int)"}, + {"_ZN5clang10CXXTryStmtC2ENS_14SourceLocationEPNS_4StmtEPS3_j", "clang::CXXTryStmt::CXXTryStmt(clang::SourceLocation, clang::Stmt*, clang::Stmt**, unsigned int)"}, + {"_ZN5clang6IfStmtC1ERNS_10ASTContextENS_14SourceLocationEPNS_7VarDeclEPNS_4ExprEPNS_4StmtES3_S9_", "clang::IfStmt::IfStmt(clang::ASTContext&, clang::SourceLocation, clang::VarDecl*, clang::Expr*, clang::Stmt*, clang::SourceLocation, clang::Stmt*)"}, + {"_ZN5clang6IfStmtC2ERNS_10ASTContextENS_14SourceLocationEPNS_7VarDeclEPNS_4ExprEPNS_4StmtES3_S9_", "clang::IfStmt::IfStmt(clang::ASTContext&, clang::SourceLocation, clang::VarDecl*, clang::Expr*, clang::Stmt*, clang::SourceLocation, clang::Stmt*)"}, + {"_ZN5clang6IfStmt20setConditionVariableERNS_10ASTContextEPNS_7VarDeclE", "clang::IfStmt::setConditionVariable(clang::ASTContext&, clang::VarDecl*)"}, + {"_ZNK5clang6IfStmt20getConditionVariableEv", "clang::IfStmt::getConditionVariable() const"}, + {"_ZN5clang7ForStmtC1ERNS_10ASTContextEPNS_4StmtEPNS_4ExprEPNS_7VarDeclES6_S4_NS_14SourceLocationES9_S9_", "clang::ForStmt::ForStmt(clang::ASTContext&, clang::Stmt*, clang::Expr*, clang::VarDecl*, clang::Expr*, clang::Stmt*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)"}, + {"_ZN5clang7ForStmtC2ERNS_10ASTContextEPNS_4StmtEPNS_4ExprEPNS_7VarDeclES6_S4_NS_14SourceLocationES9_S9_", "clang::ForStmt::ForStmt(clang::ASTContext&, clang::Stmt*, clang::Expr*, clang::VarDecl*, clang::Expr*, clang::Stmt*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation)"}, + {"_ZN5clang7ForStmt20setConditionVariableERNS_10ASTContextEPNS_7VarDeclE", "clang::ForStmt::setConditionVariable(clang::ASTContext&, clang::VarDecl*)"}, + {"_ZNK5clang7ForStmt20getConditionVariableEv", "clang::ForStmt::getConditionVariable() const"}, + {"_ZN5clang10SwitchStmtC1ERNS_10ASTContextEPNS_7VarDeclEPNS_4ExprE", "clang::SwitchStmt::SwitchStmt(clang::ASTContext&, clang::VarDecl*, clang::Expr*)"}, + {"_ZN5clang10SwitchStmtC2ERNS_10ASTContextEPNS_7VarDeclEPNS_4ExprE", "clang::SwitchStmt::SwitchStmt(clang::ASTContext&, clang::VarDecl*, clang::Expr*)"}, + {"_ZN5clang10SwitchStmt20setConditionVariableERNS_10ASTContextEPNS_7VarDeclE", "clang::SwitchStmt::setConditionVariable(clang::ASTContext&, clang::VarDecl*)"}, + {"_ZNK5clang10SwitchStmt20getConditionVariableEv", "clang::SwitchStmt::getConditionVariable() const"}, + {"_ZN5clang10SwitchCase10getSubStmtEv", "clang::SwitchCase::getSubStmt()"}, + {"_ZN5clang9WhileStmtC1ERNS_10ASTContextEPNS_7VarDeclEPNS_4ExprEPNS_4StmtENS_14SourceLocationE", "clang::WhileStmt::WhileStmt(clang::ASTContext&, clang::VarDecl*, clang::Expr*, clang::Stmt*, clang::SourceLocation)"}, + {"_ZN5clang9WhileStmtC2ERNS_10ASTContextEPNS_7VarDeclEPNS_4ExprEPNS_4StmtENS_14SourceLocationE", "clang::WhileStmt::WhileStmt(clang::ASTContext&, clang::VarDecl*, clang::Expr*, clang::Stmt*, clang::SourceLocation)"}, + {"_ZN5clang9WhileStmt20setConditionVariableERNS_10ASTContextEPNS_7VarDeclE", "clang::WhileStmt::setConditionVariable(clang::ASTContext&, clang::VarDecl*)"}, + {"_ZNK5clang9WhileStmt20getConditionVariableEv", "clang::WhileStmt::getConditionVariable() const"}, + {"_ZN5clang16IndirectGotoStmt17getConstantTargetEv", "clang::IndirectGotoStmt::getConstantTarget()"}, + {"_ZNK5clang10ReturnStmt11getRetValueEv", "clang::ReturnStmt::getRetValue() const"}, + {"_ZN5clang10ReturnStmt11getRetValueEv", "clang::ReturnStmt::getRetValue()"}, + {"_ZN5clang8DeclStmt8childrenEv", "clang::DeclStmt::children()"}, + {"_ZNK5clang27CXXDependentScopeMemberExpr14getSourceRangeEv", "clang::CXXDependentScopeMemberExpr::getSourceRange() const"}, + {"_ZNK5clang10MemberExpr14getSourceRangeEv", "clang::MemberExpr::getSourceRange() const"}, + {"_ZNK5clang20UnresolvedMemberExpr14getSourceRangeEv", "clang::UnresolvedMemberExpr::getSourceRange() const"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang7AsmStmt14AsmStringPieceELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZNK5clang4Stmt4dumpERNS_13SourceManagerE", "clang::Stmt::dump(clang::SourceManager&) const"}, + {"_ZNK5clang4Stmt4dumpERN4llvm11raw_ostreamERNS_13SourceManagerE", "clang::Stmt::dump(llvm::raw_ostream&, clang::SourceManager&) const"}, + {"_ZN12_GLOBAL__N_110StmtDumper11DumpSubTreeEPN5clang4StmtE", "(anonymous namespace)::StmtDumper::DumpSubTree(clang::Stmt*)"}, + {"_ZNK5clang4Stmt4dumpEv", "clang::Stmt::dump() const"}, + {"_ZNK5clang4Stmt7dumpAllERNS_13SourceManagerE", "clang::Stmt::dumpAll(clang::SourceManager&) const"}, + {"_ZNK5clang4Stmt7dumpAllEv", "clang::Stmt::dumpAll() const"}, + {"_ZN12_GLOBAL__N_110StmtDumper13VisitDeclStmtEPN5clang8DeclStmtE", "(anonymous namespace)::StmtDumper::VisitDeclStmt(clang::DeclStmt*)"}, + {"_ZN5clang11StmtVisitorIN12_GLOBAL__N_110StmtDumperEvE5VisitEPNS_4StmtE", "clang::StmtVisitor<(anonymous namespace)::StmtDumper, void>::Visit(clang::Stmt*)"}, + {"_ZN12_GLOBAL__N_110StmtDumper19VisitBinaryOperatorEPN5clang14BinaryOperatorE", "(anonymous namespace)::StmtDumper::VisitBinaryOperator(clang::BinaryOperator*)"}, + {"_ZN12_GLOBAL__N_110StmtDumper27VisitCompoundAssignOperatorEPN5clang22CompoundAssignOperatorE", "(anonymous namespace)::StmtDumper::VisitCompoundAssignOperator(clang::CompoundAssignOperator*)"}, + {"_ZN12_GLOBAL__N_110StmtDumper21VisitCXXConstructExprEPN5clang16CXXConstructExprE", "(anonymous namespace)::StmtDumper::VisitCXXConstructExpr(clang::CXXConstructExpr*)"}, + {"_ZN12_GLOBAL__N_110StmtDumper18VisitUnaryOperatorEPN5clang13UnaryOperatorE", "(anonymous namespace)::StmtDumper::VisitUnaryOperator(clang::UnaryOperator*)"}, + {"_ZN12_GLOBAL__N_110StmtDumper8DumpStmtEPKN5clang4StmtE", "(anonymous namespace)::StmtDumper::DumpStmt(clang::Stmt const*)"}, + {"_ZN12_GLOBAL__N_110StmtDumper12DumpLocationEN5clang14SourceLocationE", "(anonymous namespace)::StmtDumper::DumpLocation(clang::SourceLocation)"}, + {"_ZN12_GLOBAL__N_110StmtDumper14DumpDeclaratorEPN5clang4DeclE", "(anonymous namespace)::StmtDumper::DumpDeclarator(clang::Decl*)"}, + {"_ZN12_GLOBAL__N_110StmtDumper8DumpExprEPKN5clang4ExprE", "(anonymous namespace)::StmtDumper::DumpExpr(clang::Expr const*)"}, + {"_ZN12_GLOBAL__N_110StmtDumper8DumpTypeEN5clang8QualTypeE", "(anonymous namespace)::StmtDumper::DumpType(clang::QualType)"}, + {"_ZN12_GLOBAL__N_110StmtDumper11DumpDeclRefEPN5clang4DeclE", "(anonymous namespace)::StmtDumper::DumpDeclRef(clang::Decl*)"}, + {"_Z12DumpBasePathRN4llvm11raw_ostreamEPN5clang8CastExprE", "DumpBasePath(llvm::raw_ostream&, clang::CastExpr*)"}, + {"_ZN12_GLOBAL__N_110StmtDumper21VisitCXXNamedCastExprEPN5clang16CXXNamedCastExprE", "(anonymous namespace)::StmtDumper::VisitCXXNamedCastExpr(clang::CXXNamedCastExpr*)"}, + {"_ZN5clang16StmtIteratorBase6NextVAEv", "clang::StmtIteratorBase::NextVA()"}, + {"_ZN5clang16StmtIteratorBase8NextDeclEb", "clang::StmtIteratorBase::NextDecl(bool)"}, + {"_ZN5clang16StmtIteratorBase10HandleDeclEPNS_4DeclE", "clang::StmtIteratorBase::HandleDecl(clang::Decl*)"}, + {"_ZN5clang16StmtIteratorBaseC1EPNS_4DeclEPPNS_4StmtE", "clang::StmtIteratorBase::StmtIteratorBase(clang::Decl*, clang::Stmt**)"}, + {"_ZN5clang16StmtIteratorBaseC2EPNS_4DeclEPPNS_4StmtE", "clang::StmtIteratorBase::StmtIteratorBase(clang::Decl*, clang::Stmt**)"}, + {"_ZN5clang16StmtIteratorBaseC1EPPNS_4DeclES3_", "clang::StmtIteratorBase::StmtIteratorBase(clang::Decl**, clang::Decl**)"}, + {"_ZN5clang16StmtIteratorBaseC2EPPNS_4DeclES3_", "clang::StmtIteratorBase::StmtIteratorBase(clang::Decl**, clang::Decl**)"}, + {"_ZN5clang16StmtIteratorBaseC1EPKNS_17VariableArrayTypeE", "clang::StmtIteratorBase::StmtIteratorBase(clang::VariableArrayType const*)"}, + {"_ZN5clang16StmtIteratorBaseC2EPKNS_17VariableArrayTypeE", "clang::StmtIteratorBase::StmtIteratorBase(clang::VariableArrayType const*)"}, + {"_ZNK5clang16StmtIteratorBase11GetDeclExprEv", "clang::StmtIteratorBase::GetDeclExpr() const"}, + {"_ZNK5clang4Stmt10dumpPrettyERNS_10ASTContextE", "clang::Stmt::dumpPretty(clang::ASTContext&) const"}, + {"_ZNK5clang4Stmt11printPrettyERN4llvm11raw_ostreamERNS_10ASTContextEPNS_13PrinterHelperERKNS_14PrintingPolicyEj", "clang::Stmt::printPretty(llvm::raw_ostream&, clang::ASTContext&, clang::PrinterHelper*, clang::PrintingPolicy const&, unsigned int) const"}, + {"_ZN5clang13PrinterHelperD0Ev", "clang::PrinterHelper::~PrinterHelper()"}, + {"_ZN5clang13PrinterHelperD1Ev", "clang::PrinterHelper::~PrinterHelper()"}, + {"_ZN5clang13PrinterHelperD2Ev", "clang::PrinterHelper::~PrinterHelper()"}, + {"_ZN5clang11StmtVisitorIN12_GLOBAL__N_111StmtPrinterEvE5VisitEPNS_4StmtE", "clang::StmtVisitor<(anonymous namespace)::StmtPrinter, void>::Visit(clang::Stmt*)"}, + {"_ZN12_GLOBAL__N_111StmtPrinter13VisitCallExprEPN5clang8CallExprE", "(anonymous namespace)::StmtPrinter::VisitCallExpr(clang::CallExpr*)"}, + {"_ZN12_GLOBAL__N_111StmtPrinter18VisitStringLiteralEPN5clang13StringLiteralE", "(anonymous namespace)::StmtPrinter::VisitStringLiteral(clang::StringLiteral*)"}, + {"_ZN12_GLOBAL__N_111StmtPrinter18VisitUnaryOperatorEPN5clang13UnaryOperatorE", "(anonymous namespace)::StmtPrinter::VisitUnaryOperator(clang::UnaryOperator*)"}, + {"_ZN12_GLOBAL__N_111StmtPrinter9PrintExprEPN5clang4ExprE", "(anonymous namespace)::StmtPrinter::PrintExpr(clang::Expr*)"}, + {"_ZN12_GLOBAL__N_111StmtPrinter9PrintStmtEPN5clang4StmtEi", "(anonymous namespace)::StmtPrinter::PrintStmt(clang::Stmt*, int)"}, + {"_ZN12_GLOBAL__N_111StmtPrinter20PrintRawCompoundStmtEPN5clang12CompoundStmtE", "(anonymous namespace)::StmtPrinter::PrintRawCompoundStmt(clang::CompoundStmt*)"}, + {"_ZN12_GLOBAL__N_111StmtPrinter16PrintRawDeclStmtEPN5clang8DeclStmtE", "(anonymous namespace)::StmtPrinter::PrintRawDeclStmt(clang::DeclStmt*)"}, + {"_ZN12_GLOBAL__N_111StmtPrinter14PrintRawIfStmtEPN5clang6IfStmtE", "(anonymous namespace)::StmtPrinter::PrintRawIfStmt(clang::IfStmt*)"}, + {"_ZN12_GLOBAL__N_111StmtPrinter21VisitCXXNamedCastExprEPN5clang16CXXNamedCastExprE", "(anonymous namespace)::StmtPrinter::VisitCXXNamedCastExpr(clang::CXXNamedCastExpr*)"}, + {"_ZN12_GLOBAL__N_111StmtPrinter13PrintCallArgsEPN5clang8CallExprE", "(anonymous namespace)::StmtPrinter::PrintCallArgs(clang::CallExpr*)"}, + {"_ZN12_GLOBAL__N_111StmtPrinter20PrintRawCXXCatchStmtEPN5clang12CXXCatchStmtE", "(anonymous namespace)::StmtPrinter::PrintRawCXXCatchStmt(clang::CXXCatchStmt*)"}, + {"_ZN5clang4Stmt7ProfileERN4llvm16FoldingSetNodeIDERKNS_10ASTContextEb", "clang::Stmt::Profile(llvm::FoldingSetNodeID&, clang::ASTContext const&, bool)"}, + {"_ZN5clang11StmtVisitorIN12_GLOBAL__N_112StmtProfilerEvE5VisitEPNS_4StmtE", "clang::StmtVisitor<(anonymous namespace)::StmtProfiler, void>::Visit(clang::Stmt*)"}, + {"_ZN12_GLOBAL__N_112StmtProfiler17VisitInitListExprEPN5clang12InitListExprE", "(anonymous namespace)::StmtProfiler::VisitInitListExpr(clang::InitListExpr*)"}, + {"_ZN12_GLOBAL__N_112StmtProfiler9VisitStmtEPN5clang4StmtE", "(anonymous namespace)::StmtProfiler::VisitStmt(clang::Stmt*)"}, + {"_ZN12_GLOBAL__N_112StmtProfiler9VisitDeclEPN5clang4DeclE", "(anonymous namespace)::StmtProfiler::VisitDecl(clang::Decl*)"}, + {"_ZN12_GLOBAL__N_112StmtProfiler21VisitTemplateArgumentERKN5clang16TemplateArgumentE", "(anonymous namespace)::StmtProfiler::VisitTemplateArgument(clang::TemplateArgument const&)"}, + {"_ZNK5clang4Stmt7viewASTEv", "clang::Stmt::viewAST() const"}, + {"_ZN5clang16TemplateArgument14CreatePackCopyERNS_10ASTContextEPKS0_j", "clang::TemplateArgument::CreatePackCopy(clang::ASTContext&, clang::TemplateArgument const*, unsigned int)"}, + {"_ZNK5clang16TemplateArgument11isDependentEv", "clang::TemplateArgument::isDependent() const"}, + {"_ZNK5clang16TemplateArgument15isPackExpansionEv", "clang::TemplateArgument::isPackExpansion() const"}, + {"_ZNK5clang16TemplateArgument31containsUnexpandedParameterPackEv", "clang::TemplateArgument::containsUnexpandedParameterPack() const"}, + {"_ZNK5clang16TemplateArgument24getNumTemplateExpansionsEv", "clang::TemplateArgument::getNumTemplateExpansions() const"}, + {"_ZNK5clang16TemplateArgument7ProfileERN4llvm16FoldingSetNodeIDERKNS_10ASTContextE", "clang::TemplateArgument::Profile(llvm::FoldingSetNodeID&, clang::ASTContext const&) const"}, + {"_ZNK5clang16TemplateArgument18structurallyEqualsERKS0_", "clang::TemplateArgument::structurallyEquals(clang::TemplateArgument const&) const"}, + {"_ZNK5clang16TemplateArgument23getPackExpansionPatternEv", "clang::TemplateArgument::getPackExpansionPattern() const"}, + {"_ZNK5clang16TemplateArgument5printERKNS_14PrintingPolicyERN4llvm11raw_ostreamE", "clang::TemplateArgument::print(clang::PrintingPolicy const&, llvm::raw_ostream&) const"}, + {"_ZN5clang23TemplateArgumentLocInfoC1Ev", "clang::TemplateArgumentLocInfo::TemplateArgumentLocInfo()"}, + {"_ZN5clang23TemplateArgumentLocInfoC2Ev", "clang::TemplateArgumentLocInfo::TemplateArgumentLocInfo()"}, + {"_ZNK5clang19TemplateArgumentLoc14getSourceRangeEv", "clang::TemplateArgumentLoc::getSourceRange() const"}, + {"_ZNK5clang19TemplateArgumentLoc23getPackExpansionPatternERNS_14SourceLocationERN4llvm8OptionalIjEERNS_10ASTContextE", "clang::TemplateArgumentLoc::getPackExpansionPattern(clang::SourceLocation&, llvm::Optional&, clang::ASTContext&) const"}, + {"_ZN5clanglsERKNS_17DiagnosticBuilderERKNS_16TemplateArgumentE", "clang::operator<<(clang::DiagnosticBuilder const&, clang::TemplateArgument const&)"}, + {"_ZNK5clang36SubstTemplateTemplateParmPackStorage15getArgumentPackEv", "clang::SubstTemplateTemplateParmPackStorage::getArgumentPack() const"}, + {"_ZN5clang36SubstTemplateTemplateParmPackStorage7ProfileERN4llvm16FoldingSetNodeIDE", "clang::SubstTemplateTemplateParmPackStorage::Profile(llvm::FoldingSetNodeID&)"}, + {"_ZN5clang36SubstTemplateTemplateParmPackStorage7ProfileERN4llvm16FoldingSetNodeIDERNS_10ASTContextEPNS_24TemplateTemplateParmDeclERKNS_16TemplateArgumentE", "clang::SubstTemplateTemplateParmPackStorage::Profile(llvm::FoldingSetNodeID&, clang::ASTContext&, clang::TemplateTemplateParmDecl*, clang::TemplateArgument const&)"}, + {"_ZNK5clang12TemplateName7getKindEv", "clang::TemplateName::getKind() const"}, + {"_ZNK5clang12TemplateName17getAsTemplateDeclEv", "clang::TemplateName::getAsTemplateDecl() const"}, + {"_ZNK5clang12TemplateName11isDependentEv", "clang::TemplateName::isDependent() const"}, + {"_ZNK5clang12TemplateName31containsUnexpandedParameterPackEv", "clang::TemplateName::containsUnexpandedParameterPack() const"}, + {"_ZNK5clang12TemplateName5printERN4llvm11raw_ostreamERKNS_14PrintingPolicyEb", "clang::TemplateName::print(llvm::raw_ostream&, clang::PrintingPolicy const&, bool) const"}, + {"_ZN5clanglsERKNS_17DiagnosticBuilderENS_12TemplateNameE", "clang::operator<<(clang::DiagnosticBuilder const&, clang::TemplateName)"}, + {"_ZNK5clang12TemplateName4dumpEv", "clang::TemplateName::dump() const"}, + {"_ZN5clang8QualType10isConstantES0_RNS_10ASTContextE", "clang::QualType::isConstant(clang::QualType, clang::ASTContext&)"}, + {"_ZN5clang17ConstantArrayType20getNumAddressingBitsERNS_10ASTContextENS_8QualTypeERKN4llvm5APIntE", "clang::ConstantArrayType::getNumAddressingBits(clang::ASTContext&, clang::QualType, llvm::APInt const&)"}, + {"_ZN5clang17ConstantArrayType14getMaxSizeBitsERNS_10ASTContextE", "clang::ConstantArrayType::getMaxSizeBits(clang::ASTContext&)"}, + {"_ZN5clang23DependentSizedArrayTypeC1ERKNS_10ASTContextENS_8QualTypeES4_PNS_4ExprENS_9ArrayType17ArraySizeModifierEjNS_11SourceRangeE", "clang::DependentSizedArrayType::DependentSizedArrayType(clang::ASTContext const&, clang::QualType, clang::QualType, clang::Expr*, clang::ArrayType::ArraySizeModifier, unsigned int, clang::SourceRange)"}, + {"_ZN5clang23DependentSizedArrayTypeC2ERKNS_10ASTContextENS_8QualTypeES4_PNS_4ExprENS_9ArrayType17ArraySizeModifierEjNS_11SourceRangeE", "clang::DependentSizedArrayType::DependentSizedArrayType(clang::ASTContext const&, clang::QualType, clang::QualType, clang::Expr*, clang::ArrayType::ArraySizeModifier, unsigned int, clang::SourceRange)"}, + {"_ZN5clang23DependentSizedArrayType7ProfileERN4llvm16FoldingSetNodeIDERKNS_10ASTContextENS_8QualTypeENS_9ArrayType17ArraySizeModifierEjPNS_4ExprE", "clang::DependentSizedArrayType::Profile(llvm::FoldingSetNodeID&, clang::ASTContext const&, clang::QualType, clang::ArrayType::ArraySizeModifier, unsigned int, clang::Expr*)"}, + {"_ZN5clang27DependentSizedExtVectorTypeC1ERKNS_10ASTContextENS_8QualTypeES4_PNS_4ExprENS_14SourceLocationE", "clang::DependentSizedExtVectorType::DependentSizedExtVectorType(clang::ASTContext const&, clang::QualType, clang::QualType, clang::Expr*, clang::SourceLocation)"}, + {"_ZN5clang27DependentSizedExtVectorTypeC2ERKNS_10ASTContextENS_8QualTypeES4_PNS_4ExprENS_14SourceLocationE", "clang::DependentSizedExtVectorType::DependentSizedExtVectorType(clang::ASTContext const&, clang::QualType, clang::QualType, clang::Expr*, clang::SourceLocation)"}, + {"_ZN5clang27DependentSizedExtVectorType7ProfileERN4llvm16FoldingSetNodeIDERKNS_10ASTContextENS_8QualTypeEPNS_4ExprE", "clang::DependentSizedExtVectorType::Profile(llvm::FoldingSetNodeID&, clang::ASTContext const&, clang::QualType, clang::Expr*)"}, + {"_ZN5clang10VectorTypeC1ENS_8QualTypeEjS1_NS0_10VectorKindE", "clang::VectorType::VectorType(clang::QualType, unsigned int, clang::QualType, clang::VectorType::VectorKind)"}, + {"_ZN5clang10VectorTypeC2ENS_8QualTypeEjS1_NS0_10VectorKindE", "clang::VectorType::VectorType(clang::QualType, unsigned int, clang::QualType, clang::VectorType::VectorKind)"}, + {"_ZN5clang10VectorTypeC1ENS_4Type9TypeClassENS_8QualTypeEjS3_NS0_10VectorKindE", "clang::VectorType::VectorType(clang::Type::TypeClass, clang::QualType, unsigned int, clang::QualType, clang::VectorType::VectorKind)"}, + {"_ZN5clang10VectorTypeC2ENS_4Type9TypeClassENS_8QualTypeEjS3_NS0_10VectorKindE", "clang::VectorType::VectorType(clang::Type::TypeClass, clang::QualType, unsigned int, clang::QualType, clang::VectorType::VectorKind)"}, + {"_ZNK5clang4Type29getArrayElementTypeNoTypeQualEv", "clang::Type::getArrayElementTypeNoTypeQual() const"}, + {"_ZNK5clang4Type27getUnqualifiedDesugaredTypeEv", "clang::Type::getUnqualifiedDesugaredType() const"}, + {"_ZN5clang8QualType16getDesugaredTypeES0_RKNS_10ASTContextE", "clang::QualType::getDesugaredType(clang::QualType, clang::ASTContext const&)"}, + {"_ZN5clang8QualType21getSplitDesugaredTypeES0_", "clang::QualType::getSplitDesugaredType(clang::QualType)"}, + {"_ZNK5clang11TypedefType7desugarEv", "clang::TypedefType::desugar() const"}, + {"_ZNK5clang14TypeOfExprType7desugarEv", "clang::TypeOfExprType::desugar() const"}, + {"_ZN5clang8QualType27getSplitUnqualifiedTypeImplES0_", "clang::QualType::getSplitUnqualifiedTypeImpl(clang::QualType)"}, + {"_ZN5clang8QualType12IgnoreParensES0_", "clang::QualType::IgnoreParens(clang::QualType)"}, + {"_ZNK5clang4Type10isVoidTypeEv", "clang::Type::isVoidType() const"}, + {"_ZNK5clang4Type13isDerivedTypeEv", "clang::Type::isDerivedType() const"}, + {"_ZNK5clang4Type11isClassTypeEv", "clang::Type::isClassType() const"}, + {"_ZNK5clang4Type15isStructureTypeEv", "clang::Type::isStructureType() const"}, + {"_ZNK5clang4Type22isStructureOrClassTypeEv", "clang::Type::isStructureOrClassType() const"}, + {"_ZNK5clang4Type17isVoidPointerTypeEv", "clang::Type::isVoidPointerType() const"}, + {"_ZNK5clang4Type11isUnionTypeEv", "clang::Type::isUnionType() const"}, + {"_ZNK5clang4Type13isComplexTypeEv", "clang::Type::isComplexType() const"}, + {"_ZNK5clang4Type14isFloatingTypeEv", "clang::Type::isFloatingType() const"}, + {"_ZNK5clang4Type20isComplexIntegerTypeEv", "clang::Type::isComplexIntegerType() const"}, + {"_ZNK5clang4Type23getAsComplexIntegerTypeEv", "clang::Type::getAsComplexIntegerType() const"}, + {"_ZNK5clang4Type13isIntegerTypeEv", "clang::Type::isIntegerType() const"}, + {"_ZNK5clang4Type14getPointeeTypeEv", "clang::Type::getPointeeType() const"}, + {"_ZNK5clang4Type18getAsStructureTypeEv", "clang::Type::getAsStructureType() const"}, + {"_ZNK5clang4Type14getAsUnionTypeEv", "clang::Type::getAsUnionType() const"}, + {"_ZN5clang14ObjCObjectTypeC1ENS_8QualTypeES1_PKPNS_16ObjCProtocolDeclEj", "clang::ObjCObjectType::ObjCObjectType(clang::QualType, clang::QualType, clang::ObjCProtocolDecl* const*, unsigned int)"}, + {"_ZN5clang14ObjCObjectTypeC2ENS_8QualTypeES1_PKPNS_16ObjCProtocolDeclEj", "clang::ObjCObjectType::ObjCObjectType(clang::QualType, clang::QualType, clang::ObjCProtocolDecl* const*, unsigned int)"}, + {"_ZNK5clang4Type31getAsObjCQualifiedInterfaceTypeEv", "clang::Type::getAsObjCQualifiedInterfaceType() const"}, + {"_ZNK5clang4Type28isObjCQualifiedInterfaceTypeEv", "clang::Type::isObjCQualifiedInterfaceType() const"}, + {"_ZNK5clang4Type24getAsObjCQualifiedIdTypeEv", "clang::Type::getAsObjCQualifiedIdType() const"}, + {"_ZNK5clang4Type29getAsObjCInterfacePointerTypeEv", "clang::Type::getAsObjCInterfacePointerType() const"}, + {"_ZNK5clang4Type30getCXXRecordDeclForPointerTypeEv", "clang::Type::getCXXRecordDeclForPointerType() const"}, + {"_ZNK5clang4Type18getAsCXXRecordDeclEv", "clang::Type::getAsCXXRecordDecl() const"}, + {"_ZNK5clang21InjectedClassNameType7getDeclEv", "clang::InjectedClassNameType::getDecl() const"}, + {"_ZNK5clang4Type24hasIntegerRepresentationEv", "clang::Type::hasIntegerRepresentation() const"}, + {"_ZNK5clang4Type14isIntegralTypeERNS_10ASTContextE", "clang::Type::isIntegralType(clang::ASTContext&) const"}, + {"_ZNK5clang4Type27isIntegralOrEnumerationTypeEv", "clang::Type::isIntegralOrEnumerationType() const"}, + {"_ZNK5clang4Type35isIntegralOrUnscopedEnumerationTypeEv", "clang::Type::isIntegralOrUnscopedEnumerationType() const"}, + {"_ZNK5clang4Type13isBooleanTypeEv", "clang::Type::isBooleanType() const"}, + {"_ZNK5clang4Type10isCharTypeEv", "clang::Type::isCharType() const"}, + {"_ZNK5clang4Type14isWideCharTypeEv", "clang::Type::isWideCharType() const"}, + {"_ZNK5clang4Type18isAnyCharacterTypeEv", "clang::Type::isAnyCharacterType() const"}, + {"_ZNK5clang4Type19isSignedIntegerTypeEv", "clang::Type::isSignedIntegerType() const"}, + {"_ZNK5clang4Type30hasSignedIntegerRepresentationEv", "clang::Type::hasSignedIntegerRepresentation() const"}, + {"_ZNK5clang4Type21isUnsignedIntegerTypeEv", "clang::Type::isUnsignedIntegerType() const"}, + {"_ZNK5clang4Type32hasUnsignedIntegerRepresentationEv", "clang::Type::hasUnsignedIntegerRepresentation() const"}, + {"_ZNK5clang4Type25hasFloatingRepresentationEv", "clang::Type::hasFloatingRepresentation() const"}, + {"_ZNK5clang4Type18isRealFloatingTypeEv", "clang::Type::isRealFloatingType() const"}, + {"_ZNK5clang4Type10isRealTypeEv", "clang::Type::isRealType() const"}, + {"_ZNK5clang4Type16isArithmeticTypeEv", "clang::Type::isArithmeticType() const"}, + {"_ZNK5clang4Type12isScalarTypeEv", "clang::Type::isScalarType() const"}, + {"_ZNK5clang4Type17getScalarTypeKindEv", "clang::Type::getScalarTypeKind() const"}, + {"_ZNK5clang4Type15isAggregateTypeEv", "clang::Type::isAggregateType() const"}, + {"_ZNK5clang4Type18isConstantSizeTypeEv", "clang::Type::isConstantSizeType() const"}, + {"_ZNK5clang4Type16isIncompleteTypeEv", "clang::Type::isIncompleteType() const"}, + {"_ZNK5clang7TagType7getDeclEv", "clang::TagType::getDecl() const"}, + {"_ZNK5clang4Type9isPODTypeEv", "clang::Type::isPODType() const"}, + {"_ZNK5clang4Type13isLiteralTypeEv", "clang::Type::isLiteralType() const"}, + {"_ZNK5clang4Type23isPromotableIntegerTypeEv", "clang::Type::isPromotableIntegerType() const"}, + {"_ZNK5clang4Type13isNullPtrTypeEv", "clang::Type::isNullPtrType() const"}, + {"_ZNK5clang4Type15isSpecifierTypeEv", "clang::Type::isSpecifierType() const"}, + {"_ZN5clang15TypeWithKeyword21getKeywordForTypeSpecEj", "clang::TypeWithKeyword::getKeywordForTypeSpec(unsigned int)"}, + {"_ZN5clang15TypeWithKeyword25getTagTypeKindForTypeSpecEj", "clang::TypeWithKeyword::getTagTypeKindForTypeSpec(unsigned int)"}, + {"_ZN5clang15TypeWithKeyword24getKeywordForTagTypeKindENS_11TagTypeKindE", "clang::TypeWithKeyword::getKeywordForTagTypeKind(clang::TagTypeKind)"}, + {"_ZN5clang15TypeWithKeyword24getTagTypeKindForKeywordENS_21ElaboratedTypeKeywordE", "clang::TypeWithKeyword::getTagTypeKindForKeyword(clang::ElaboratedTypeKeyword)"}, + {"_ZN5clang15TypeWithKeyword20KeywordIsTagTypeKindENS_21ElaboratedTypeKeywordE", "clang::TypeWithKeyword::KeywordIsTagTypeKind(clang::ElaboratedTypeKeyword)"}, + {"_ZN5clang15TypeWithKeyword14getKeywordNameENS_21ElaboratedTypeKeywordE", "clang::TypeWithKeyword::getKeywordName(clang::ElaboratedTypeKeyword)"}, + {"_ZN5clang35DependentTemplateSpecializationTypeC1ENS_21ElaboratedTypeKeywordEPNS_19NestedNameSpecifierEPKNS_14IdentifierInfoEjPKNS_16TemplateArgumentENS_8QualTypeE", "clang::DependentTemplateSpecializationType::DependentTemplateSpecializationType(clang::ElaboratedTypeKeyword, clang::NestedNameSpecifier*, clang::IdentifierInfo const*, unsigned int, clang::TemplateArgument const*, clang::QualType)"}, + {"_ZN5clang35DependentTemplateSpecializationTypeC2ENS_21ElaboratedTypeKeywordEPNS_19NestedNameSpecifierEPKNS_14IdentifierInfoEjPKNS_16TemplateArgumentENS_8QualTypeE", "clang::DependentTemplateSpecializationType::DependentTemplateSpecializationType(clang::ElaboratedTypeKeyword, clang::NestedNameSpecifier*, clang::IdentifierInfo const*, unsigned int, clang::TemplateArgument const*, clang::QualType)"}, + {"_ZN5clang35DependentTemplateSpecializationType7ProfileERN4llvm16FoldingSetNodeIDERKNS_10ASTContextENS_21ElaboratedTypeKeywordEPNS_19NestedNameSpecifierEPKNS_14IdentifierInfoEjPKNS_16TemplateArgumentE", "clang::DependentTemplateSpecializationType::Profile(llvm::FoldingSetNodeID&, clang::ASTContext const&, clang::ElaboratedTypeKeyword, clang::NestedNameSpecifier*, clang::IdentifierInfo const*, unsigned int, clang::TemplateArgument const*)"}, + {"_ZNK5clang4Type25isElaboratedTypeSpecifierEv", "clang::Type::isElaboratedTypeSpecifier() const"}, + {"_ZNK5clang4Type16getTypeClassNameEv", "clang::Type::getTypeClassName() const"}, + {"_ZNK5clang11BuiltinType7getNameERKNS_11LangOptionsE", "clang::BuiltinType::getName(clang::LangOptions const&) const"}, + {"_ZNK5clang8QualType20getNonLValueExprTypeERNS_10ASTContextE", "clang::QualType::getNonLValueExprType(clang::ASTContext&) const"}, + {"_ZN5clang12FunctionType18getNameForCallConvENS_11CallingConvE", "clang::FunctionType::getNameForCallConv(clang::CallingConv)"}, + {"_ZN5clang17FunctionProtoTypeC1ENS_8QualTypeEPKS1_jS1_RKNS0_12ExtProtoInfoE", "clang::FunctionProtoType::FunctionProtoType(clang::QualType, clang::QualType const*, unsigned int, clang::QualType, clang::FunctionProtoType::ExtProtoInfo const&)"}, + {"_ZN5clang17FunctionProtoTypeC2ENS_8QualTypeEPKS1_jS1_RKNS0_12ExtProtoInfoE", "clang::FunctionProtoType::FunctionProtoType(clang::QualType, clang::QualType const*, unsigned int, clang::QualType, clang::FunctionProtoType::ExtProtoInfo const&)"}, + {"_ZNK5clang17FunctionProtoType18isTemplateVariadicEv", "clang::FunctionProtoType::isTemplateVariadic() const"}, + {"_ZN5clang17FunctionProtoType7ProfileERN4llvm16FoldingSetNodeIDENS_8QualTypeEPKS4_jRKNS0_12ExtProtoInfoE", "clang::FunctionProtoType::Profile(llvm::FoldingSetNodeID&, clang::QualType, clang::QualType const*, unsigned int, clang::FunctionProtoType::ExtProtoInfo const&)"}, + {"_ZN5clang17FunctionProtoType7ProfileERN4llvm16FoldingSetNodeIDE", "clang::FunctionProtoType::Profile(llvm::FoldingSetNodeID&)"}, + {"_ZN5clang14TypeOfExprTypeC1EPNS_4ExprENS_8QualTypeE", "clang::TypeOfExprType::TypeOfExprType(clang::Expr*, clang::QualType)"}, + {"_ZN5clang14TypeOfExprTypeC2EPNS_4ExprENS_8QualTypeE", "clang::TypeOfExprType::TypeOfExprType(clang::Expr*, clang::QualType)"}, + {"_ZN5clang23DependentTypeOfExprType7ProfileERN4llvm16FoldingSetNodeIDERKNS_10ASTContextEPNS_4ExprE", "clang::DependentTypeOfExprType::Profile(llvm::FoldingSetNodeID&, clang::ASTContext const&, clang::Expr*)"}, + {"_ZN5clang12DecltypeTypeC1EPNS_4ExprENS_8QualTypeES3_", "clang::DecltypeType::DecltypeType(clang::Expr*, clang::QualType, clang::QualType)"}, + {"_ZN5clang12DecltypeTypeC2EPNS_4ExprENS_8QualTypeES3_", "clang::DecltypeType::DecltypeType(clang::Expr*, clang::QualType, clang::QualType)"}, + {"_ZN5clang21DependentDecltypeTypeC1ERKNS_10ASTContextEPNS_4ExprE", "clang::DependentDecltypeType::DependentDecltypeType(clang::ASTContext const&, clang::Expr*)"}, + {"_ZN5clang21DependentDecltypeTypeC2ERKNS_10ASTContextEPNS_4ExprE", "clang::DependentDecltypeType::DependentDecltypeType(clang::ASTContext const&, clang::Expr*)"}, + {"_ZN5clang21DependentDecltypeType7ProfileERN4llvm16FoldingSetNodeIDERKNS_10ASTContextEPNS_4ExprE", "clang::DependentDecltypeType::Profile(llvm::FoldingSetNodeID&, clang::ASTContext const&, clang::Expr*)"}, + {"_ZN5clang7TagTypeC1ENS_4Type9TypeClassEPKNS_7TagDeclENS_8QualTypeE", "clang::TagType::TagType(clang::Type::TypeClass, clang::TagDecl const*, clang::QualType)"}, + {"_ZN5clang7TagTypeC2ENS_4Type9TypeClassEPKNS_7TagDeclENS_8QualTypeE", "clang::TagType::TagType(clang::Type::TypeClass, clang::TagDecl const*, clang::QualType)"}, + {"_ZNK5clang7TagType14isBeingDefinedEv", "clang::TagType::isBeingDefined() const"}, + {"_ZN5clang10RecordType7classofEPKNS_7TagTypeE", "clang::RecordType::classof(clang::TagType const*)"}, + {"_ZN5clang8EnumType7classofEPKNS_7TagTypeE", "clang::EnumType::classof(clang::TagType const*)"}, + {"_ZN5clang29SubstTemplateTypeParmPackTypeC1EPKNS_20TemplateTypeParmTypeENS_8QualTypeERKNS_16TemplateArgumentE", "clang::SubstTemplateTypeParmPackType::SubstTemplateTypeParmPackType(clang::TemplateTypeParmType const*, clang::QualType, clang::TemplateArgument const&)"}, + {"_ZN5clang29SubstTemplateTypeParmPackTypeC2EPKNS_20TemplateTypeParmTypeENS_8QualTypeERKNS_16TemplateArgumentE", "clang::SubstTemplateTypeParmPackType::SubstTemplateTypeParmPackType(clang::TemplateTypeParmType const*, clang::QualType, clang::TemplateArgument const&)"}, + {"_ZNK5clang29SubstTemplateTypeParmPackType15getArgumentPackEv", "clang::SubstTemplateTypeParmPackType::getArgumentPack() const"}, + {"_ZN5clang29SubstTemplateTypeParmPackType7ProfileERN4llvm16FoldingSetNodeIDE", "clang::SubstTemplateTypeParmPackType::Profile(llvm::FoldingSetNodeID&)"}, + {"_ZN5clang29SubstTemplateTypeParmPackType7ProfileERN4llvm16FoldingSetNodeIDEPKNS_20TemplateTypeParmTypeERKNS_16TemplateArgumentE", "clang::SubstTemplateTypeParmPackType::Profile(llvm::FoldingSetNodeID&, clang::TemplateTypeParmType const*, clang::TemplateArgument const&)"}, + {"_ZN5clang26TemplateSpecializationType29anyDependentTemplateArgumentsERKNS_24TemplateArgumentListInfoE", "clang::TemplateSpecializationType::anyDependentTemplateArguments(clang::TemplateArgumentListInfo const&)"}, + {"_ZN5clang26TemplateSpecializationType29anyDependentTemplateArgumentsEPKNS_19TemplateArgumentLocEj", "clang::TemplateSpecializationType::anyDependentTemplateArguments(clang::TemplateArgumentLoc const*, unsigned int)"}, + {"_ZN5clang26TemplateSpecializationType29anyDependentTemplateArgumentsEPKNS_16TemplateArgumentEj", "clang::TemplateSpecializationType::anyDependentTemplateArguments(clang::TemplateArgument const*, unsigned int)"}, + {"_ZN5clang26TemplateSpecializationTypeC1ENS_12TemplateNameEPKNS_16TemplateArgumentEjNS_8QualTypeE", "clang::TemplateSpecializationType::TemplateSpecializationType(clang::TemplateName, clang::TemplateArgument const*, unsigned int, clang::QualType)"}, + {"_ZN5clang26TemplateSpecializationTypeC2ENS_12TemplateNameEPKNS_16TemplateArgumentEjNS_8QualTypeE", "clang::TemplateSpecializationType::TemplateSpecializationType(clang::TemplateName, clang::TemplateArgument const*, unsigned int, clang::QualType)"}, + {"_ZN5clang26TemplateSpecializationType7ProfileERN4llvm16FoldingSetNodeIDENS_12TemplateNameEPKNS_16TemplateArgumentEjRKNS_10ASTContextE", "clang::TemplateSpecializationType::Profile(llvm::FoldingSetNodeID&, clang::TemplateName, clang::TemplateArgument const*, unsigned int, clang::ASTContext const&)"}, + {"_ZNK5clang18QualifierCollector5applyERKNS_10ASTContextENS_8QualTypeE", "clang::QualifierCollector::apply(clang::ASTContext const&, clang::QualType) const"}, + {"_ZNK5clang18QualifierCollector5applyERKNS_10ASTContextEPKNS_4TypeE", "clang::QualifierCollector::apply(clang::ASTContext const&, clang::Type const*) const"}, + {"_ZN5clang18ObjCObjectTypeImpl7ProfileERN4llvm16FoldingSetNodeIDENS_8QualTypeEPKPNS_16ObjCProtocolDeclEj", "clang::ObjCObjectTypeImpl::Profile(llvm::FoldingSetNodeID&, clang::QualType, clang::ObjCProtocolDecl* const*, unsigned int)"}, + {"_ZN5clang18ObjCObjectTypeImpl7ProfileERN4llvm16FoldingSetNodeIDE", "clang::ObjCObjectTypeImpl::Profile(llvm::FoldingSetNodeID&)"}, + {"_ZNK5clang4Type10getLinkageEv", "clang::Type::getLinkage() const"}, + {"_ZN5clang17TypePropertyCacheIN12_GLOBAL__N_17PrivateEE6ensureEPKNS_4TypeE", "clang::TypePropertyCache<(anonymous namespace)::Private>::ensure(clang::Type const*)"}, + {"_ZNK5clang4Type13getVisibilityEv", "clang::Type::getVisibility() const"}, + {"_ZNK5clang4Type21hasUnnamedOrLocalTypeEv", "clang::Type::hasUnnamedOrLocalType() const"}, + {"_ZNK5clang4Type23getLinkageAndVisibilityEv", "clang::Type::getLinkageAndVisibility() const"}, + {"_ZN5clang4Type17ClearLinkageCacheEv", "clang::Type::ClearLinkageCache()"}, + {"_ZNK5clang4Type15hasSizedVLATypeEv", "clang::Type::hasSizedVLAType() const"}, + {"_ZNK4llvm6APSInt6extendEj", "llvm::APSInt::extend(unsigned int) const"}, + {"_ZN5clang7TypeLoc23getLocalSourceRangeImplES0_", "clang::TypeLoc::getLocalSourceRangeImpl(clang::TypeLoc)"}, + {"_ZN5clang7TypeLoc22getFullDataSizeForTypeENS_8QualTypeE", "clang::TypeLoc::getFullDataSizeForType(clang::QualType)"}, + {"_ZN5clang14TypeLocVisitorIN12_GLOBAL__N_19TypeSizerEjE5VisitENS_7TypeLocE", "clang::TypeLocVisitor<(anonymous namespace)::TypeSizer, unsigned int>::Visit(clang::TypeLoc)"}, + {"_ZN5clang7TypeLoc18getNextTypeLocImplES0_", "clang::TypeLoc::getNextTypeLocImpl(clang::TypeLoc)"}, + {"_ZN5clang7TypeLoc14initializeImplERNS_10ASTContextES0_NS_14SourceLocationE", "clang::TypeLoc::initializeImpl(clang::ASTContext&, clang::TypeLoc, clang::SourceLocation)"}, + {"_ZNK5clang7TypeLoc11getBeginLocEv", "clang::TypeLoc::getBeginLoc() const"}, + {"_ZNK5clang7TypeLoc9getEndLocEv", "clang::TypeLoc::getEndLoc() const"}, + {"_ZN5clang15TypeSpecTypeLoc7classofEPKNS_7TypeLocE", "clang::TypeSpecTypeLoc::classof(clang::TypeLoc const*)"}, + {"_ZNK5clang17TypeOfExprTypeLoc19getLocalSourceRangeEv", "clang::TypeOfExprTypeLoc::getLocalSourceRange() const"}, + {"_ZNK5clang14BuiltinTypeLoc18getWrittenTypeSpecEv", "clang::BuiltinTypeLoc::getWrittenTypeSpec() const"}, + {"_ZN5clang7TypeLoc16IgnoreParensImplES0_", "clang::TypeLoc::IgnoreParensImpl(clang::TypeLoc)"}, + {"_ZN5clang29TemplateSpecializationTypeLoc17initializeArgLocsERNS_10ASTContextEjPKNS_16TemplateArgumentEPNS_23TemplateArgumentLocInfoENS_14SourceLocationE", "clang::TemplateSpecializationTypeLoc::initializeArgLocs(clang::ASTContext&, unsigned int, clang::TemplateArgument const*, clang::TemplateArgumentLocInfo*, clang::SourceLocation)"}, + {"_ZN5clang29TemplateSpecializationTypeLoc15initializeLocalERNS_10ASTContextENS_14SourceLocationE", "clang::TemplateSpecializationTypeLoc::initializeLocal(clang::ASTContext&, clang::SourceLocation)"}, + {"_ZN5clang38DependentTemplateSpecializationTypeLoc15initializeLocalERNS_10ASTContextENS_14SourceLocationE", "clang::DependentTemplateSpecializationTypeLoc::initializeLocal(clang::ASTContext&, clang::SourceLocation)"}, + {"_ZN5clang26TemplateSpecializationType25PrintTemplateArgumentListERKNS_24TemplateArgumentListInfoERKNS_14PrintingPolicyE", "clang::TemplateSpecializationType::PrintTemplateArgumentList(clang::TemplateArgumentListInfo const&, clang::PrintingPolicy const&)"}, + {"_ZN5clang26TemplateSpecializationType25PrintTemplateArgumentListEPKNS_19TemplateArgumentLocEjRKNS_14PrintingPolicyE", "clang::TemplateSpecializationType::PrintTemplateArgumentList(clang::TemplateArgumentLoc const*, unsigned int, clang::PrintingPolicy const&)"}, + {"_ZN5clang26TemplateSpecializationType25PrintTemplateArgumentListEPKNS_16TemplateArgumentEjRKNS_14PrintingPolicyEb", "clang::TemplateSpecializationType::PrintTemplateArgumentList(clang::TemplateArgument const*, unsigned int, clang::PrintingPolicy const&, bool)"}, + {"_ZNK5clang8QualType4dumpEPKc", "clang::QualType::dump(char const*) const"}, + {"_ZNK5clang8QualType4dumpEv", "clang::QualType::dump() const"}, + {"_ZNK5clang4Type4dumpEv", "clang::Type::dump() const"}, + {"_ZNK5clang10Qualifiers11getAsStringEv", "clang::Qualifiers::getAsString() const"}, + {"_ZNK5clang10Qualifiers19getAsStringInternalERSsRKNS_14PrintingPolicyE", "clang::Qualifiers::getAsStringInternal(std::string&, clang::PrintingPolicy const&) const"}, + {"_Z18AppendTypeQualListRSsj", "AppendTypeQualList(std::string&, unsigned int)"}, + {"_ZN5clang8QualType11getAsStringEPKNS_4TypeENS_10QualifiersE", "clang::QualType::getAsString(clang::Type const*, clang::Qualifiers)"}, + {"_ZN5clang8QualType19getAsStringInternalEPKNS_4TypeENS_10QualifiersERSsRKNS_14PrintingPolicyE", "clang::QualType::getAsStringInternal(clang::Type const*, clang::Qualifiers, std::string&, clang::PrintingPolicy const&)"}, + {"_ZN12_GLOBAL__N_111TypePrinter5printEPKN5clang4TypeENS1_10QualifiersERSs", "(anonymous namespace)::TypePrinter::print(clang::Type const*, clang::Qualifiers, std::string&)"}, + {"_ZN12_GLOBAL__N_111TypePrinter21printTemplateTypeParmEPKN5clang20TemplateTypeParmTypeERSs", "(anonymous namespace)::TypePrinter::printTemplateTypeParm(clang::TemplateTypeParmType const*, std::string&)"}, + {"_ZN12_GLOBAL__N_111TypePrinter27printTemplateSpecializationEPKN5clang26TemplateSpecializationTypeERSs", "(anonymous namespace)::TypePrinter::printTemplateSpecialization(clang::TemplateSpecializationType const*, std::string&)"}, + {"_ZN12_GLOBAL__N_111TypePrinter8printTagEPN5clang7TagDeclERSs", "(anonymous namespace)::TypePrinter::printTag(clang::TagDecl*, std::string&)"}, + {"_ZN12_GLOBAL__N_111TypePrinter11AppendScopeEPN5clang11DeclContextERSs", "(anonymous namespace)::TypePrinter::AppendScope(clang::DeclContext*, std::string&)"}, + {"_Z13printTypeSpecPKN5clang9NamedDeclERSs", "printTypeSpec(clang::NamedDecl const*, std::string&)"}, + {"_ZN5clang9HeaderMap6CreateEPKNS_9FileEntryERNS_11FileManagerE", "clang::HeaderMap::Create(clang::FileEntry const*, clang::FileManager&)"}, + {"_ZN5clang9HeaderMapD1Ev", "clang::HeaderMap::~HeaderMap()"}, + {"_ZN5clang9HeaderMapD2Ev", "clang::HeaderMap::~HeaderMap()"}, + {"_ZNK5clang9HeaderMap11getFileNameEv", "clang::HeaderMap::getFileName() const"}, + {"_ZNK5clang9HeaderMap21getEndianAdjustedWordEj", "clang::HeaderMap::getEndianAdjustedWord(unsigned int) const"}, + {"_ZNK5clang9HeaderMap9getHeaderEv", "clang::HeaderMap::getHeader() const"}, + {"_ZNK5clang9HeaderMap9getBucketEj", "clang::HeaderMap::getBucket(unsigned int) const"}, + {"_ZNK5clang9HeaderMap9getStringEj", "clang::HeaderMap::getString(unsigned int) const"}, + {"_ZNK5clang9HeaderMap4dumpEv", "clang::HeaderMap::dump() const"}, + {"_ZNK5clang9HeaderMap10LookupFileEN4llvm9StringRefERNS_11FileManagerE", "clang::HeaderMap::LookupFile(llvm::StringRef, clang::FileManager&) const"}, + {"_ZN5clang14HeaderFileInfo19getControllingMacroEPNS_24ExternalIdentifierLookupE", "clang::HeaderFileInfo::getControllingMacro(clang::ExternalIdentifierLookup*)"}, + {"_ZN5clang12HeaderSearchC1ERNS_11FileManagerE", "clang::HeaderSearch::HeaderSearch(clang::FileManager&)"}, + {"_ZN5clang12HeaderSearchC2ERNS_11FileManagerE", "clang::HeaderSearch::HeaderSearch(clang::FileManager&)"}, + {"_ZN5clang12HeaderSearchD1Ev", "clang::HeaderSearch::~HeaderSearch()"}, + {"_ZN5clang12HeaderSearchD2Ev", "clang::HeaderSearch::~HeaderSearch()"}, + {"_ZN5clang12HeaderSearch10PrintStatsEv", "clang::HeaderSearch::PrintStats()"}, + {"_ZN5clang12HeaderSearch15CreateHeaderMapEPKNS_9FileEntryE", "clang::HeaderSearch::CreateHeaderMap(clang::FileEntry const*)"}, + {"_ZNK5clang15DirectoryLookup7getNameEv", "clang::DirectoryLookup::getName() const"}, + {"_ZNK5clang15DirectoryLookup10LookupFileEN4llvm9StringRefERNS_12HeaderSearchE", "clang::DirectoryLookup::LookupFile(llvm::StringRef, clang::HeaderSearch&) const"}, + {"_ZNK5clang15DirectoryLookup17DoFrameworkLookupEN4llvm9StringRefERNS_12HeaderSearchE", "clang::DirectoryLookup::DoFrameworkLookup(llvm::StringRef, clang::HeaderSearch&) const"}, + {"_ZN5clang12HeaderSearch10LookupFileEN4llvm9StringRefEbPKNS_15DirectoryLookupERS5_PKNS_9FileEntryE", "clang::HeaderSearch::LookupFile(llvm::StringRef, bool, clang::DirectoryLookup const*, clang::DirectoryLookup const*&, clang::FileEntry const*)"}, + {"_ZN5clang12HeaderSearch11getFileInfoEPKNS_9FileEntryE", "clang::HeaderSearch::getFileInfo(clang::FileEntry const*)"}, + {"_ZN5clang12HeaderSearch24LookupSubframeworkHeaderEN4llvm9StringRefEPKNS_9FileEntryE", "clang::HeaderSearch::LookupSubframeworkHeader(llvm::StringRef, clang::FileEntry const*)"}, + {"_ZN5clang12HeaderSearch23setHeaderFileInfoForUIDENS_14HeaderFileInfoEj", "clang::HeaderSearch::setHeaderFileInfoForUID(clang::HeaderFileInfo, unsigned int)"}, + {"_ZN5clang12HeaderSearch22ShouldEnterIncludeFileEPKNS_9FileEntryEb", "clang::HeaderSearch::ShouldEnterIncludeFile(clang::FileEntry const*, bool)"}, + {"_ZNSt6vectorIN5clang14HeaderFileInfoESaIS1_EE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPS1_S3_EEmRKS1_", "std::vector>::_M_fill_insert(__gnu_cxx::__normal_iterator>>, unsigned long, clang::HeaderFileInfo const&)"}, + {"_ZN4llvm15SmallVectorImplIcEaSERKS1_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + + // {"_ZN4llvm9StringMapISt4pairIjjENS_15MallocAllocatorEE16GetOrCreateValueIS2_EERNS_14StringMapEntryIS2_EENS_9StringRefET_", + // "llvm::StringMapEntry>& llvm::StringMap, llvm::MallocAllocator>::GetOrCreateValue>(llvm::StringRef, std::pair)"}, + // "llvm::StringMapEntry>& llvm::StringMap, llvm::MallocAllocator>::GetOrCreateValue>(llvm::StringRef, unsigned int)" was returned + + {"_ZNSt6vectorISt4pairIPKN5clang9FileEntryEPKNS1_9HeaderMapEESaIS8_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS8_SA_EERKS8_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + {"_ZN4llvm9StringMapIPKN5clang14DirectoryEntryENS_15MallocAllocatorEE16GetOrCreateValueIS4_EERNS_14StringMapEntryIS4_EENS_9StringRefET_", "llvm::StringMapEntry& llvm::StringMap::GetOrCreateValue(llvm::StringRef, clang::DirectoryEntry const*)"}, + {"_ZNK5clang5Token15isObjCAtKeywordENS_3tok15ObjCKeywordKindE", "clang::Token::isObjCAtKeyword(clang::tok::ObjCKeywordKind) const"}, + {"_ZNK5clang5Token16getObjCKeywordIDEv", "clang::Token::getObjCKeywordID() const"}, + {"_ZN5clang5Lexer9InitLexerEPKcS2_S2_", "clang::Lexer::InitLexer(char const*, char const*, char const*)"}, + {"_ZN5clang5LexerC1ENS_6FileIDEPKN4llvm12MemoryBufferERNS_12PreprocessorE", "clang::Lexer::Lexer(clang::FileID, llvm::MemoryBuffer const*, clang::Preprocessor&)"}, + {"_ZN5clang5LexerC2ENS_6FileIDEPKN4llvm12MemoryBufferERNS_12PreprocessorE", "clang::Lexer::Lexer(clang::FileID, llvm::MemoryBuffer const*, clang::Preprocessor&)"}, + {"_ZN5clang5LexerC1ENS_14SourceLocationERKNS_11LangOptionsEPKcS6_S6_", "clang::Lexer::Lexer(clang::SourceLocation, clang::LangOptions const&, char const*, char const*, char const*)"}, + {"_ZN5clang5LexerC2ENS_14SourceLocationERKNS_11LangOptionsEPKcS6_S6_", "clang::Lexer::Lexer(clang::SourceLocation, clang::LangOptions const&, char const*, char const*, char const*)"}, + {"_ZN5clang5LexerC1ENS_6FileIDEPKN4llvm12MemoryBufferERKNS_13SourceManagerERKNS_11LangOptionsE", "clang::Lexer::Lexer(clang::FileID, llvm::MemoryBuffer const*, clang::SourceManager const&, clang::LangOptions const&)"}, + {"_ZN5clang5LexerC2ENS_6FileIDEPKN4llvm12MemoryBufferERKNS_13SourceManagerERKNS_11LangOptionsE", "clang::Lexer::Lexer(clang::FileID, llvm::MemoryBuffer const*, clang::SourceManager const&, clang::LangOptions const&)"}, + {"_ZN5clang5Lexer18Create_PragmaLexerENS_14SourceLocationES1_S1_jRNS_12PreprocessorE", "clang::Lexer::Create_PragmaLexer(clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, unsigned int, clang::Preprocessor&)"}, + {"_ZN5clang5Lexer9StringifyERKSsb", "clang::Lexer::Stringify(std::string const&, bool)"}, + {"_ZN5clang5Lexer9StringifyERN4llvm15SmallVectorImplIcEE", "clang::Lexer::Stringify(llvm::SmallVectorImpl&)"}, + {"_ZN5clang5Lexer11getSpellingERKNS_5TokenERKNS_13SourceManagerERKNS_11LangOptionsEPb", "clang::Lexer::getSpelling(clang::Token const&, clang::SourceManager const&, clang::LangOptions const&, bool*)"}, + {"_ZN5clang5Lexer11getSpellingERKNS_5TokenERPKcRKNS_13SourceManagerERKNS_11LangOptionsEPb", "clang::Lexer::getSpelling(clang::Token const&, char const*&, clang::SourceManager const&, clang::LangOptions const&, bool*)"}, + {"_ZN5clang5Lexer18MeasureTokenLengthENS_14SourceLocationERKNS_13SourceManagerERKNS_11LangOptionsE", "clang::Lexer::MeasureTokenLength(clang::SourceLocation, clang::SourceManager const&, clang::LangOptions const&)"}, + {"_ZN5clang5Lexer19GetBeginningOfTokenENS_14SourceLocationERKNS_13SourceManagerERKNS_11LangOptionsE", "clang::Lexer::GetBeginningOfToken(clang::SourceLocation, clang::SourceManager const&, clang::LangOptions const&)"}, + {"_ZN5clang5Lexer15ComputePreambleEPKN4llvm12MemoryBufferEj", "clang::Lexer::ComputePreamble(llvm::MemoryBuffer const*, unsigned int)"}, + {"_ZN5clang5Lexer23AdvanceToTokenCharacterENS_14SourceLocationEjRKNS_13SourceManagerERKNS_11LangOptionsE", "clang::Lexer::AdvanceToTokenCharacter(clang::SourceLocation, unsigned int, clang::SourceManager const&, clang::LangOptions const&)"}, + {"_ZN5clang5Lexer19SkipEscapedNewLinesEPKc", "clang::Lexer::SkipEscapedNewLines(char const*)"}, + {"_ZN5clang5Lexer19getLocForEndOfTokenENS_14SourceLocationEjRKNS_13SourceManagerERKNS_11LangOptionsE", "clang::Lexer::getLocForEndOfToken(clang::SourceLocation, unsigned int, clang::SourceManager const&, clang::LangOptions const&)"}, + {"_ZNK5clang5Lexer17getSourceLocationEPKcj", "clang::Lexer::getSourceLocation(char const*, unsigned int) const"}, + {"_Z17GetMappedTokenLocRN5clang12PreprocessorENS_14SourceLocationEjj", "GetMappedTokenLoc(clang::Preprocessor&, clang::SourceLocation, unsigned int, unsigned int)"}, + {"_ZNK5clang5Lexer4DiagEPKcj", "clang::Lexer::Diag(char const*, unsigned int) const"}, + {"_ZN5clang5Lexer21getEscapedNewLineSizeEPKc", "clang::Lexer::getEscapedNewLineSize(char const*)"}, + {"_ZN5clang5Lexer18getCharAndSizeSlowEPKcRjPNS_5TokenE", "clang::Lexer::getCharAndSizeSlow(char const*, unsigned int&, clang::Token*)"}, + {"_ZN5clang5Lexer24getCharAndSizeSlowNoWarnEPKcRjRKNS_11LangOptionsE", "clang::Lexer::getCharAndSizeSlowNoWarn(char const*, unsigned int&, clang::LangOptions const&)"}, + {"_ZN5clang5Lexer9SkipBytesEjb", "clang::Lexer::SkipBytes(unsigned int, bool)"}, + {"_ZN5clang5Lexer13LexIdentifierERNS_5TokenEPKc", "clang::Lexer::LexIdentifier(clang::Token&, char const*)"}, + {"_ZN5clang5Lexer18LexNumericConstantERNS_5TokenEPKc", "clang::Lexer::LexNumericConstant(clang::Token&, char const*)"}, + {"_ZN5clang5Lexer16LexStringLiteralERNS_5TokenEPKcb", "clang::Lexer::LexStringLiteral(clang::Token&, char const*, bool)"}, + {"_ZN5clang5Lexer22LexAngledStringLiteralERNS_5TokenEPKc", "clang::Lexer::LexAngledStringLiteral(clang::Token&, char const*)"}, + {"_ZN5clang5Lexer15LexCharConstantERNS_5TokenEPKc", "clang::Lexer::LexCharConstant(clang::Token&, char const*)"}, + {"_ZN5clang5Lexer14SkipWhitespaceERNS_5TokenEPKc", "clang::Lexer::SkipWhitespace(clang::Token&, char const*)"}, + {"_ZN5clang5Lexer15SkipBCPLCommentERNS_5TokenEPKc", "clang::Lexer::SkipBCPLComment(clang::Token&, char const*)"}, + {"_ZN5clang5Lexer15SaveBCPLCommentERNS_5TokenEPKc", "clang::Lexer::SaveBCPLComment(clang::Token&, char const*)"}, + {"_ZN5clang5Lexer16SkipBlockCommentERNS_5TokenEPKc", "clang::Lexer::SkipBlockComment(clang::Token&, char const*)"}, + {"_ZN5clang5Lexer15ReadToEndOfLineEv", "clang::Lexer::ReadToEndOfLine()"}, + {"_ZN5clang5Lexer12LexEndOfFileERNS_5TokenEPKc", "clang::Lexer::LexEndOfFile(clang::Token&, char const*)"}, + {"_ZN5clang5Lexer19isNextPPTokenLParenEv", "clang::Lexer::isNextPPTokenLParen()"}, + {"_ZN5clang5Lexer16LexTokenInternalERNS_5TokenE", "clang::Lexer::LexTokenInternal(clang::Token&)"}, + {"_ZN5clang5Lexer23IsStartOfConflictMarkerEPKc", "clang::Lexer::IsStartOfConflictMarker(char const*)"}, + {"_ZN5clang5Lexer25HandleEndOfConflictMarkerEPKc", "clang::Lexer::HandleEndOfConflictMarker(char const*)"}, + {"_ZN5clang20NumericLiteralParserC1EPKcS2_NS_14SourceLocationERNS_12PreprocessorE", "clang::NumericLiteralParser::NumericLiteralParser(char const*, char const*, clang::SourceLocation, clang::Preprocessor&)"}, + {"_ZN5clang20NumericLiteralParserC2EPKcS2_NS_14SourceLocationERNS_12PreprocessorE", "clang::NumericLiteralParser::NumericLiteralParser(char const*, char const*, clang::SourceLocation, clang::Preprocessor&)"}, + {"_ZN5clang20NumericLiteralParser27ParseNumberStartingWithZeroENS_14SourceLocationE", "clang::NumericLiteralParser::ParseNumberStartingWithZero(clang::SourceLocation)"}, + {"_ZN5clang20NumericLiteralParser15GetIntegerValueERN4llvm5APIntE", "clang::NumericLiteralParser::GetIntegerValue(llvm::APInt&)"}, + {"_ZN5clang20NumericLiteralParser13GetFloatValueERN4llvm7APFloatE", "clang::NumericLiteralParser::GetFloatValue(llvm::APFloat&)"}, + {"_ZN5clang17CharLiteralParserC1EPKcS2_NS_14SourceLocationERNS_12PreprocessorE", "clang::CharLiteralParser::CharLiteralParser(char const*, char const*, clang::SourceLocation, clang::Preprocessor&)"}, + {"_ZN5clang17CharLiteralParserC2EPKcS2_NS_14SourceLocationERNS_12PreprocessorE", "clang::CharLiteralParser::CharLiteralParser(char const*, char const*, clang::SourceLocation, clang::Preprocessor&)"}, + {"_Z16ProcessUCNEscapeRPKcS0_RjRtN5clang13FullSourceLocEPNS4_10DiagnosticERKNS4_11LangOptionsE", "ProcessUCNEscape(char const*&, char const*, unsigned int&, unsigned short&, clang::FullSourceLoc, clang::Diagnostic*, clang::LangOptions const&)"}, + {"_Z17ProcessCharEscapeRPKcS0_RbN5clang13FullSourceLocEbPNS3_10DiagnosticERKNS3_10TargetInfoE", "ProcessCharEscape(char const*&, char const*, bool&, clang::FullSourceLoc, bool, clang::Diagnostic*, clang::TargetInfo const&)"}, + {"_ZN5clang19StringLiteralParserC1EPKNS_5TokenEjRNS_12PreprocessorEb", "clang::StringLiteralParser::StringLiteralParser(clang::Token const*, unsigned int, clang::Preprocessor&, bool)"}, + {"_ZN5clang19StringLiteralParserC2EPKNS_5TokenEjRNS_12PreprocessorEb", "clang::StringLiteralParser::StringLiteralParser(clang::Token const*, unsigned int, clang::Preprocessor&, bool)"}, + {"_ZN5clang19StringLiteralParser4initEPKNS_5TokenEj", "clang::StringLiteralParser::init(clang::Token const*, unsigned int)"}, + {"_ZNK5clang19StringLiteralParser21getOffsetOfStringByteERKNS_5TokenEj", "clang::StringLiteralParser::getOffsetOfStringByte(clang::Token const&, unsigned int) const"}, + {"_ZN5clang9MacroArgs6createEPKNS_9MacroInfoEPKNS_5TokenEjbRNS_12PreprocessorE", "clang::MacroArgs::create(clang::MacroInfo const*, clang::Token const*, unsigned int, bool, clang::Preprocessor&)"}, + {"_ZNK5clang9MacroArgs16getUnexpArgumentEj", "clang::MacroArgs::getUnexpArgument(unsigned int) const"}, + {"_ZN5clang9MacroArgs7destroyERNS_12PreprocessorE", "clang::MacroArgs::destroy(clang::Preprocessor&)"}, + {"_ZN5clang9MacroArgs10deallocateEv", "clang::MacroArgs::deallocate()"}, + {"_ZN5clang9MacroArgs12getArgLengthEPKNS_5TokenE", "clang::MacroArgs::getArgLength(clang::Token const*)"}, + {"_ZNK5clang9MacroArgs20ArgNeedsPreexpansionEPKNS_5TokenERNS_12PreprocessorE", "clang::MacroArgs::ArgNeedsPreexpansion(clang::Token const*, clang::Preprocessor&) const"}, + {"_ZN5clang9MacroArgs17getPreExpArgumentEjPKNS_9MacroInfoERNS_12PreprocessorE", "clang::MacroArgs::getPreExpArgument(unsigned int, clang::MacroInfo const*, clang::Preprocessor&)"}, + {"_ZN5clang9MacroArgs17StringifyArgumentEPKNS_5TokenERNS_12PreprocessorEb", "clang::MacroArgs::StringifyArgument(clang::Token const*, clang::Preprocessor&, bool)"}, + {"_ZN5clang9MacroArgs22getStringifiedArgumentEjRNS_12PreprocessorE", "clang::MacroArgs::getStringifiedArgument(unsigned int, clang::Preprocessor&)"}, + {"_ZNSt6vectorIN5clang5TokenESaIS1_EE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPS1_S3_EEmRKS1_", "std::vector>::_M_fill_insert(__gnu_cxx::__normal_iterator>>, unsigned long, clang::Token const&)"}, + {"_ZNSt6vectorIN5clang5TokenESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, clang::Token const&)"}, + + // {"_ZNSt6vectorIS_IN5clang5TokenESaIS1_EESaIS3_EE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPS3_S5_EEmRKS3_", + // "std::vector>, std::allocator>>>::_M_fill_insert(__gnu_cxx::__normal_iterator>*, std::vector>, std::allocator>>>>, unsigned long, std::vector> const&)"}, + // "std::vector>, std::allocator<>>>::_M_fill_insert(__gnu_cxx::__normal_iterator<>*, std::vector>, std::allocator<>>>>, unsigned long, > const&)" was returned + + {"_ZNSt6vectorIN5clang5TokenESaIS1_EEaSERKS3_", "std::vector>::operator=(std::vector> const&)"}, + {"_ZNSt6vectorIN5clang5TokenESaIS1_EEC2ERKS3_", "std::vector>::vector(std::vector> const&)"}, + {"_ZN5clang9MacroInfoC1ENS_14SourceLocationE", "clang::MacroInfo::MacroInfo(clang::SourceLocation)"}, + {"_ZN5clang9MacroInfoC2ENS_14SourceLocationE", "clang::MacroInfo::MacroInfo(clang::SourceLocation)"}, + {"_ZN5clang9MacroInfoC1ERKS0_RN4llvm16BumpPtrAllocatorE", "clang::MacroInfo::MacroInfo(clang::MacroInfo const&, llvm::BumpPtrAllocator&)"}, + {"_ZN5clang9MacroInfoC2ERKS0_RN4llvm16BumpPtrAllocatorE", "clang::MacroInfo::MacroInfo(clang::MacroInfo const&, llvm::BumpPtrAllocator&)"}, + {"_ZNK5clang9MacroInfo13isIdenticalToERKS0_RNS_12PreprocessorE", "clang::MacroInfo::isIdenticalTo(clang::MacroInfo const&, clang::Preprocessor&) const"}, + {"_ZN4llvm15SmallVectorImplIN5clang5TokenEEaSERKS3_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + {"_ZN5clang12Preprocessor24EnableBacktrackAtThisPosEv", "clang::Preprocessor::EnableBacktrackAtThisPos()"}, + {"_ZN5clang12Preprocessor19EnterCachingLexModeEv", "clang::Preprocessor::EnterCachingLexMode()"}, + {"_ZN5clang12Preprocessor23CommitBacktrackedTokensEv", "clang::Preprocessor::CommitBacktrackedTokens()"}, + {"_ZN5clang12Preprocessor9BacktrackEv", "clang::Preprocessor::Backtrack()"}, + {"_ZN5clang12Preprocessor10CachingLexERNS_5TokenE", "clang::Preprocessor::CachingLex(clang::Token&)"}, + {"_ZN5clang12Preprocessor9PeekAheadEj", "clang::Preprocessor::PeekAhead(unsigned int)"}, + {"_ZN5clang12Preprocessor28AnnotatePreviousCachedTokensERKNS_5TokenE", "clang::Preprocessor::AnnotatePreviousCachedTokens(clang::Token const&)"}, + {"_ZNSt6vectorImSaImEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPmS1_EERKm", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, unsigned long const&)"}, + {"_ZN5clang12Preprocessor17AllocateMacroInfoEv", "clang::Preprocessor::AllocateMacroInfo()"}, + {"_ZN5clang12Preprocessor17AllocateMacroInfoENS_14SourceLocationE", "clang::Preprocessor::AllocateMacroInfo(clang::SourceLocation)"}, + {"_ZN5clang12Preprocessor14CloneMacroInfoERKNS_9MacroInfoE", "clang::Preprocessor::CloneMacroInfo(clang::MacroInfo const&)"}, + {"_ZN5clang12Preprocessor16ReleaseMacroInfoEPNS_9MacroInfoE", "clang::Preprocessor::ReleaseMacroInfo(clang::MacroInfo*)"}, + {"_ZN5clang12Preprocessor26DiscardUntilEndOfDirectiveEv", "clang::Preprocessor::DiscardUntilEndOfDirective()"}, + {"_ZN5clang12Preprocessor13ReadMacroNameERNS_5TokenEc", "clang::Preprocessor::ReadMacroName(clang::Token&, char)"}, + {"_ZN5clang12Preprocessor19CheckEndOfDirectiveEPKcb", "clang::Preprocessor::CheckEndOfDirective(char const*, bool)"}, + {"_ZN5clang12Preprocessor28SkipExcludedConditionalBlockENS_14SourceLocationEbb", "clang::Preprocessor::SkipExcludedConditionalBlock(clang::SourceLocation, bool, bool)"}, + {"_ZN5clang12Preprocessor31PTHSkipExcludedConditionalBlockEv", "clang::Preprocessor::PTHSkipExcludedConditionalBlock()"}, + {"_ZN5clang12Preprocessor10LookupFileEN4llvm9StringRefEbPKNS_15DirectoryLookupERS5_", "clang::Preprocessor::LookupFile(llvm::StringRef, bool, clang::DirectoryLookup const*, clang::DirectoryLookup const*&)"}, + {"_ZN5clang12Preprocessor15HandleDirectiveERNS_5TokenE", "clang::Preprocessor::HandleDirective(clang::Token&)"}, + {"_ZN5clang12Preprocessor20HandleDigitDirectiveERNS_5TokenE", "clang::Preprocessor::HandleDigitDirective(clang::Token&)"}, + {"_ZN5clang12Preprocessor17HandleIfDirectiveERNS_5TokenEb", "clang::Preprocessor::HandleIfDirective(clang::Token&, bool)"}, + {"_ZN5clang12Preprocessor20HandleIfdefDirectiveERNS_5TokenEbb", "clang::Preprocessor::HandleIfdefDirective(clang::Token&, bool, bool)"}, + {"_ZN5clang12Preprocessor19HandleElifDirectiveERNS_5TokenE", "clang::Preprocessor::HandleElifDirective(clang::Token&)"}, + {"_ZN5clang12Preprocessor19HandleElseDirectiveERNS_5TokenE", "clang::Preprocessor::HandleElseDirective(clang::Token&)"}, + {"_ZN5clang12Preprocessor20HandleEndifDirectiveERNS_5TokenE", "clang::Preprocessor::HandleEndifDirective(clang::Token&)"}, + {"_ZN5clang12Preprocessor22HandleIncludeDirectiveENS_14SourceLocationERNS_5TokenEPKNS_15DirectoryLookupEb", "clang::Preprocessor::HandleIncludeDirective(clang::SourceLocation, clang::Token&, clang::DirectoryLookup const*, bool)"}, + {"_ZN5clang12Preprocessor28HandleIncludeMacrosDirectiveENS_14SourceLocationERNS_5TokenE", "clang::Preprocessor::HandleIncludeMacrosDirective(clang::SourceLocation, clang::Token&)"}, + {"_ZN5clang12Preprocessor21HandleDefineDirectiveERNS_5TokenE", "clang::Preprocessor::HandleDefineDirective(clang::Token&)"}, + {"_ZN5clang12Preprocessor20HandleUndefDirectiveERNS_5TokenE", "clang::Preprocessor::HandleUndefDirective(clang::Token&)"}, + {"_ZN5clang12Preprocessor19HandleLineDirectiveERNS_5TokenE", "clang::Preprocessor::HandleLineDirective(clang::Token&)"}, + {"_ZN5clang12Preprocessor29HandleUserDiagnosticDirectiveERNS_5TokenEb", "clang::Preprocessor::HandleUserDiagnosticDirective(clang::Token&, bool)"}, + {"_ZN5clang12Preprocessor21HandleImportDirectiveENS_14SourceLocationERNS_5TokenE", "clang::Preprocessor::HandleImportDirective(clang::SourceLocation, clang::Token&)"}, + {"_ZN5clang12Preprocessor26HandleIncludeNextDirectiveENS_14SourceLocationERNS_5TokenE", "clang::Preprocessor::HandleIncludeNextDirective(clang::SourceLocation, clang::Token&)"}, + {"_ZN5clang12Preprocessor24HandleIdentSCCSDirectiveERNS_5TokenE", "clang::Preprocessor::HandleIdentSCCSDirective(clang::Token&)"}, + {"_Z12GetLineValueRN5clang5TokenERjjRNS_12PreprocessorE", "GetLineValue(clang::Token&, unsigned int&, unsigned int, clang::Preprocessor&)"}, + {"_ZN5clang12Preprocessor26GetIncludeFilenameSpellingENS_14SourceLocationERN4llvm9StringRefE", "clang::Preprocessor::GetIncludeFilenameSpelling(clang::SourceLocation, llvm::StringRef&)"}, + + // {"_ZN5clang12Preprocessor22ConcatenateIncludeNameERN4llvm11SmallStringILj128EEERNS_14SourceLocationE", + // "clang::Preprocessor::ConcatenateIncludeName(llvm::SmallString<128u>&, clang::SourceLocation&)"}, + // "clang::Preprocessor::ConcatenateIncludeName(llvm::SmallString<128>&, clang::SourceLocation&)" was returned + + {"_ZN5clang12Preprocessor26ReadMacroDefinitionArgListEPNS_9MacroInfoE", "clang::Preprocessor::ReadMacroDefinitionArgList(clang::MacroInfo*)"}, + + // {"_ZSt6__findIPPN5clang14IdentifierInfoES2_ET_S4_S4_RKT0_St26random_access_iterator_tag", + // "clang::IdentifierInfo** std::__find(clang::IdentifierInfo**, clang::IdentifierInfo**, clang::IdentifierInfo* const&, std::random_access_iterator_tag)"}, + // got error + + {"_ZN4llvm23SmallVectorTemplateBaseIN5clang17PPConditionalInfoELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN5clang12Preprocessor27EvaluateDirectiveExpressionERPNS_14IdentifierInfoE", "clang::Preprocessor::EvaluateDirectiveExpression(clang::IdentifierInfo*&)"}, + {"_Z13EvaluateValueRN12_GLOBAL__N_17PPValueERN5clang5TokenER14DefinedTrackerbRNS2_12PreprocessorE", "EvaluateValue((anonymous namespace)::PPValue&, clang::Token&, DefinedTracker&, bool, clang::Preprocessor&)"}, + {"_Z24EvaluateDirectiveSubExprRN12_GLOBAL__N_17PPValueEjRN5clang5TokenEbRNS2_12PreprocessorE", "EvaluateDirectiveSubExpr((anonymous namespace)::PPValue&, unsigned int, clang::Token&, bool, clang::Preprocessor&)"}, + {"_ZN5clang11PPCallbacksD0Ev", "clang::PPCallbacks::~PPCallbacks()"}, + {"_ZN5clang11PPCallbacksD1Ev", "clang::PPCallbacks::~PPCallbacks()"}, + {"_ZN5clang11PPCallbacksD2Ev", "clang::PPCallbacks::~PPCallbacks()"}, + {"_ZNK5clang12Preprocessor15isInPrimaryFileEv", "clang::Preprocessor::isInPrimaryFile() const"}, + {"_ZNK5clang12Preprocessor19getCurrentFileLexerEv", "clang::Preprocessor::getCurrentFileLexer() const"}, + {"_ZN5clang12Preprocessor15EnterSourceFileENS_6FileIDEPKNS_15DirectoryLookupENS_14SourceLocationE", "clang::Preprocessor::EnterSourceFile(clang::FileID, clang::DirectoryLookup const*, clang::SourceLocation)"}, + {"_ZN5clang12Preprocessor22EnterSourceFileWithPTHEPNS_8PTHLexerEPKNS_15DirectoryLookupE", "clang::Preprocessor::EnterSourceFileWithPTH(clang::PTHLexer*, clang::DirectoryLookup const*)"}, + {"_ZN5clang12Preprocessor24EnterSourceFileWithLexerEPNS_5LexerEPKNS_15DirectoryLookupE", "clang::Preprocessor::EnterSourceFileWithLexer(clang::Lexer*, clang::DirectoryLookup const*)"}, + {"_ZN5clang12Preprocessor10EnterMacroERNS_5TokenENS_14SourceLocationEPNS_9MacroArgsE", "clang::Preprocessor::EnterMacro(clang::Token&, clang::SourceLocation, clang::MacroArgs*)"}, + {"_ZN5clang12Preprocessor16EnterTokenStreamEPKNS_5TokenEjbb", "clang::Preprocessor::EnterTokenStream(clang::Token const*, unsigned int, bool, bool)"}, + {"_ZN5clang12Preprocessor15HandleEndOfFileERNS_5TokenEb", "clang::Preprocessor::HandleEndOfFile(clang::Token&, bool)"}, + {"_ZN5clang12Preprocessor21RemoveTopOfLexerStackEv", "clang::Preprocessor::RemoveTopOfLexerStack()"}, + {"_ZN5clang12Preprocessor21HandleEndOfTokenLexerERNS_5TokenE", "clang::Preprocessor::HandleEndOfTokenLexer(clang::Token&)"}, + {"_ZN5clang12Preprocessor27HandleMicrosoftCommentPasteERNS_5TokenE", "clang::Preprocessor::HandleMicrosoftCommentPaste(clang::Token&)"}, + {"_ZNK5clang13SourceManager9getBufferENS_6FileIDENS_14SourceLocationEPb", "clang::SourceManager::getBuffer(clang::FileID, clang::SourceLocation, bool*) const"}, + {"_ZN5clang12Preprocessor20PopIncludeMacroStackEv", "clang::Preprocessor::PopIncludeMacroStack()"}, + {"_ZNSt6vectorIN5clang12Preprocessor16IncludeStackInfoESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, clang::Preprocessor::IncludeStackInfo const&)"}, + {"_ZNK5clang12Preprocessor15getInfoForMacroEPNS_14IdentifierInfoE", "clang::Preprocessor::getInfoForMacro(clang::IdentifierInfo*) const"}, + {"_ZN5clang12Preprocessor12setMacroInfoEPNS_14IdentifierInfoEPNS_9MacroInfoE", "clang::Preprocessor::setMacroInfo(clang::IdentifierInfo*, clang::MacroInfo*)"}, + {"_ZN5clang12Preprocessor21RegisterBuiltinMacrosEv", "clang::Preprocessor::RegisterBuiltinMacros()"}, + {"_ZN5clang12Preprocessor19isNextPPTokenLParenEv", "clang::Preprocessor::isNextPPTokenLParen()"}, + {"_ZN5clang12Preprocessor29HandleMacroExpandedIdentifierERNS_5TokenEPNS_9MacroInfoE", "clang::Preprocessor::HandleMacroExpandedIdentifier(clang::Token&, clang::MacroInfo*)"}, + {"_ZN5clang12Preprocessor18ExpandBuiltinMacroERNS_5TokenE", "clang::Preprocessor::ExpandBuiltinMacro(clang::Token&)"}, + {"_ZN5clang12Preprocessor25ReadFunctionLikeMacroArgsERNS_5TokenEPNS_9MacroInfoERNS_14SourceLocationE", "clang::Preprocessor::ReadFunctionLikeMacroArgs(clang::Token&, clang::MacroInfo*, clang::SourceLocation&)"}, + {"_ZN5clang12Preprocessor15markMacroAsUsedEPNS_9MacroInfoE", "clang::Preprocessor::markMacroAsUsed(clang::MacroInfo*)"}, + {"_Z16ComputeDATE_TIMERN5clang14SourceLocationES1_RNS_12PreprocessorE", "ComputeDATE_TIME(clang::SourceLocation&, clang::SourceLocation&, clang::Preprocessor&)"}, + {"_Z24EvaluateHasIncludeCommonRN5clang5TokenEPNS_14IdentifierInfoERNS_12PreprocessorEPKNS_15DirectoryLookupE", "EvaluateHasIncludeCommon(clang::Token&, clang::IdentifierInfo*, clang::Preprocessor&, clang::DirectoryLookup const*)"}, + {"_ZN4llvm8DenseMapIPN5clang14IdentifierInfoEPNS1_9MacroInfoENS_12DenseMapInfoIS3_EENS6_IS5_EEE16InsertIntoBucketERKS3_RKS5_PSt4pairIS3_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::IdentifierInfo* const&, clang::MacroInfo* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPN5clang14IdentifierInfoEPNS1_9MacroInfoENS_12DenseMapInfoIS3_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN5clang8PTHLexerC1ERNS_12PreprocessorENS_6FileIDEPKhS5_RNS_10PTHManagerE", "clang::PTHLexer::PTHLexer(clang::Preprocessor&, clang::FileID, unsigned char const*, unsigned char const*, clang::PTHManager&)"}, + {"_ZN5clang8PTHLexerC2ERNS_12PreprocessorENS_6FileIDEPKhS5_RNS_10PTHManagerE", "clang::PTHLexer::PTHLexer(clang::Preprocessor&, clang::FileID, unsigned char const*, unsigned char const*, clang::PTHManager&)"}, + {"_ZN5clang8PTHLexer3LexERNS_5TokenE", "clang::PTHLexer::Lex(clang::Token&)"}, + {"_ZN5clang8PTHLexer12LexEndOfFileERNS_5TokenE", "clang::PTHLexer::LexEndOfFile(clang::Token&)"}, + {"_ZN5clang8PTHLexer6getEOFERNS_5TokenE", "clang::PTHLexer::getEOF(clang::Token&)"}, + {"_ZN5clang8PTHLexer18DiscardToEndOfLineEv", "clang::PTHLexer::DiscardToEndOfLine()"}, + {"_ZN5clang8PTHLexer9SkipBlockEv", "clang::PTHLexer::SkipBlock()"}, + {"_ZN5clang8PTHLexer17getSourceLocationEv", "clang::PTHLexer::getSourceLocation()"}, + {"_ZN5clang10PTHManagerC1EPKN4llvm12MemoryBufferEPvPKhPPNS_14IdentifierInfoES5_jS7_PKc", "clang::PTHManager::PTHManager(llvm::MemoryBuffer const*, void*, unsigned char const*, clang::IdentifierInfo**, void*, unsigned int, unsigned char const*, char const*)"}, + {"_ZN5clang10PTHManagerC2EPKN4llvm12MemoryBufferEPvPKhPPNS_14IdentifierInfoES5_jS7_PKc", "clang::PTHManager::PTHManager(llvm::MemoryBuffer const*, void*, unsigned char const*, clang::IdentifierInfo**, void*, unsigned int, unsigned char const*, char const*)"}, + {"_ZN5clang10PTHManagerD0Ev", "clang::PTHManager::~PTHManager()"}, + {"_ZN5clang10PTHManagerD1Ev", "clang::PTHManager::~PTHManager()"}, + {"_ZN5clang10PTHManagerD2Ev", "clang::PTHManager::~PTHManager()"}, + {"_ZN5clang10PTHManager6CreateERKSsRNS_10DiagnosticE", "clang::PTHManager::Create(std::string const&, clang::Diagnostic&)"}, + {"_ZN5clang10PTHManager26LazilyCreateIdentifierInfoEj", "clang::PTHManager::LazilyCreateIdentifierInfo(unsigned int)"}, + {"_ZN5clang10PTHManager3getEN4llvm9StringRefE", "clang::PTHManager::get(llvm::StringRef)"}, + {"_ZN5clang10PTHManager11CreateLexerENS_6FileIDE", "clang::PTHManager::CreateLexer(clang::FileID)"}, + {"_ZN5clang10PTHManager15createStatCacheEv", "clang::PTHManager::createStatCache()"}, + {"_ZN12_GLOBAL__N_112PTHStatCacheD1Ev", "(anonymous namespace)::PTHStatCache::~PTHStatCache()"}, + {"_ZN12_GLOBAL__N_112PTHStatCacheD0Ev", "(anonymous namespace)::PTHStatCache::~PTHStatCache()"}, + {"_ZN12_GLOBAL__N_112PTHStatCache7getStatEPKcR4statPi", "(anonymous namespace)::PTHStatCache::getStat(char const*, stat&, int*)"}, + {"_ZN5clang8PTHLexerD1Ev", "clang::PTHLexer::~PTHLexer()"}, + {"_ZN5clang8PTHLexerD0Ev", "clang::PTHLexer::~PTHLexer()"}, + {"_ZN5clang8PTHLexer11IndirectLexERNS_5TokenE", "clang::PTHLexer::IndirectLex(clang::Token&)"}, + {"_ZN5clang13PragmaHandlerD0Ev", "clang::PragmaHandler::~PragmaHandler()"}, + {"_ZN5clang13PragmaHandlerD1Ev", "clang::PragmaHandler::~PragmaHandler()"}, + {"_ZN5clang13PragmaHandlerD2Ev", "clang::PragmaHandler::~PragmaHandler()"}, + {"_ZN5clang18EmptyPragmaHandlerC1Ev", "clang::EmptyPragmaHandler::EmptyPragmaHandler()"}, + {"_ZN5clang18EmptyPragmaHandlerC2Ev", "clang::EmptyPragmaHandler::EmptyPragmaHandler()"}, + {"_ZN5clang18EmptyPragmaHandler12HandlePragmaERNS_12PreprocessorENS_20PragmaIntroducerKindERNS_5TokenE", "clang::EmptyPragmaHandler::HandlePragma(clang::Preprocessor&, clang::PragmaIntroducerKind, clang::Token&)"}, + {"_ZN5clang15PragmaNamespaceD0Ev", "clang::PragmaNamespace::~PragmaNamespace()"}, + {"_ZN5clang15PragmaNamespaceD1Ev", "clang::PragmaNamespace::~PragmaNamespace()"}, + {"_ZN5clang15PragmaNamespaceD2Ev", "clang::PragmaNamespace::~PragmaNamespace()"}, + {"_ZNK5clang15PragmaNamespace11FindHandlerEN4llvm9StringRefEb", "clang::PragmaNamespace::FindHandler(llvm::StringRef, bool) const"}, + {"_ZN5clang15PragmaNamespace9AddPragmaEPNS_13PragmaHandlerE", "clang::PragmaNamespace::AddPragma(clang::PragmaHandler*)"}, + {"_ZN5clang15PragmaNamespace19RemovePragmaHandlerEPNS_13PragmaHandlerE", "clang::PragmaNamespace::RemovePragmaHandler(clang::PragmaHandler*)"}, + {"_ZN5clang15PragmaNamespace12HandlePragmaERNS_12PreprocessorENS_20PragmaIntroducerKindERNS_5TokenE", "clang::PragmaNamespace::HandlePragma(clang::Preprocessor&, clang::PragmaIntroducerKind, clang::Token&)"}, + {"_ZN5clang12Preprocessor21HandlePragmaDirectiveEj", "clang::Preprocessor::HandlePragmaDirective(unsigned int)"}, + {"_ZN5clang12Preprocessor13Handle_PragmaERNS_5TokenE", "clang::Preprocessor::Handle_Pragma(clang::Token&)"}, + + // {"_ZN5clang12Preprocessor13Handle_PragmaEjRKSsNS_14SourceLocationES3_", + // "clang::Preprocessor::Handle_Pragma(unsigned int, std::string const&, clang::SourceLocation, clang::SourceLocation)"}, + // "clang::Preprocessor::Handle_Pragma(unsigned int, std::string const&, clang::SourceLocation, std::string const&)" was returned + + {"_ZN5clang12Preprocessor23HandleMicrosoft__pragmaERNS_5TokenE", "clang::Preprocessor::HandleMicrosoft__pragma(clang::Token&)"}, + {"_ZN5clang12Preprocessor16HandlePragmaOnceERNS_5TokenE", "clang::Preprocessor::HandlePragmaOnce(clang::Token&)"}, + {"_ZN5clang12Preprocessor16HandlePragmaMarkEv", "clang::Preprocessor::HandlePragmaMark()"}, + {"_ZN5clang12Preprocessor18HandlePragmaPoisonERNS_5TokenE", "clang::Preprocessor::HandlePragmaPoison(clang::Token&)"}, + {"_ZN5clang12Preprocessor24HandlePragmaSystemHeaderERNS_5TokenE", "clang::Preprocessor::HandlePragmaSystemHeader(clang::Token&)"}, + {"_ZN5clang12Preprocessor22HandlePragmaDependencyERNS_5TokenE", "clang::Preprocessor::HandlePragmaDependency(clang::Token&)"}, + {"_ZN5clang12Preprocessor19HandlePragmaCommentERNS_5TokenE", "clang::Preprocessor::HandlePragmaComment(clang::Token&)"}, + {"_ZN5clang12Preprocessor19HandlePragmaMessageERNS_5TokenE", "clang::Preprocessor::HandlePragmaMessage(clang::Token&)"}, + {"_ZN5clang12Preprocessor25ParsePragmaPushOrPopMacroERNS_5TokenE", "clang::Preprocessor::ParsePragmaPushOrPopMacro(clang::Token&)"}, + {"_ZN5clang12Preprocessor21HandlePragmaPushMacroERNS_5TokenE", "clang::Preprocessor::HandlePragmaPushMacro(clang::Token&)"}, + {"_ZN5clang12Preprocessor20HandlePragmaPopMacroERNS_5TokenE", "clang::Preprocessor::HandlePragmaPopMacro(clang::Token&)"}, + {"_ZN5clang12Preprocessor16AddPragmaHandlerEN4llvm9StringRefEPNS_13PragmaHandlerE", "clang::Preprocessor::AddPragmaHandler(llvm::StringRef, clang::PragmaHandler*)"}, + {"_ZN5clang12Preprocessor19RemovePragmaHandlerEN4llvm9StringRefEPNS_13PragmaHandlerE", "clang::Preprocessor::RemovePragmaHandler(llvm::StringRef, clang::PragmaHandler*)"}, + {"_ZN5clang12Preprocessor22RegisterBuiltinPragmasEv", "clang::Preprocessor::RegisterBuiltinPragmas()"}, + {"_ZN12_GLOBAL__N_120PragmaCommentHandlerD1Ev", "(anonymous namespace)::PragmaCommentHandler::~PragmaCommentHandler()"}, + {"_ZN12_GLOBAL__N_120PragmaCommentHandlerD0Ev", "(anonymous namespace)::PragmaCommentHandler::~PragmaCommentHandler()"}, + {"_ZN12_GLOBAL__N_120PragmaCommentHandler12HandlePragmaERN5clang12PreprocessorENS1_20PragmaIntroducerKindERNS1_5TokenE", "(anonymous namespace)::PragmaCommentHandler::HandlePragma(clang::Preprocessor&, clang::PragmaIntroducerKind, clang::Token&)"}, + {"_ZN12_GLOBAL__N_125PragmaSTDC_UnknownHandlerD1Ev", "(anonymous namespace)::PragmaSTDC_UnknownHandler::~PragmaSTDC_UnknownHandler()"}, + {"_ZN12_GLOBAL__N_125PragmaSTDC_UnknownHandlerD0Ev", "(anonymous namespace)::PragmaSTDC_UnknownHandler::~PragmaSTDC_UnknownHandler()"}, + {"_ZN12_GLOBAL__N_125PragmaSTDC_UnknownHandler12HandlePragmaERN5clang12PreprocessorENS1_20PragmaIntroducerKindERNS1_5TokenE", "(anonymous namespace)::PragmaSTDC_UnknownHandler::HandlePragma(clang::Preprocessor&, clang::PragmaIntroducerKind, clang::Token&)"}, + {"_ZN12_GLOBAL__N_134PragmaSTDC_CX_LIMITED_RANGEHandlerD1Ev", "(anonymous namespace)::PragmaSTDC_CX_LIMITED_RANGEHandler::~PragmaSTDC_CX_LIMITED_RANGEHandler()"}, + {"_ZN12_GLOBAL__N_134PragmaSTDC_CX_LIMITED_RANGEHandlerD0Ev", "(anonymous namespace)::PragmaSTDC_CX_LIMITED_RANGEHandler::~PragmaSTDC_CX_LIMITED_RANGEHandler()"}, + {"_ZN12_GLOBAL__N_134PragmaSTDC_CX_LIMITED_RANGEHandler12HandlePragmaERN5clang12PreprocessorENS1_20PragmaIntroducerKindERNS1_5TokenE", "(anonymous namespace)::PragmaSTDC_CX_LIMITED_RANGEHandler::HandlePragma(clang::Preprocessor&, clang::PragmaIntroducerKind, clang::Token&)"}, + {"_ZN12_GLOBAL__N_114LexOnOffSwitchERN5clang12PreprocessorE", "(anonymous namespace)::LexOnOffSwitch(clang::Preprocessor&)"}, + {"_ZN12_GLOBAL__N_129PragmaSTDC_FENV_ACCESSHandlerD1Ev", "(anonymous namespace)::PragmaSTDC_FENV_ACCESSHandler::~PragmaSTDC_FENV_ACCESSHandler()"}, + {"_ZN12_GLOBAL__N_129PragmaSTDC_FENV_ACCESSHandlerD0Ev", "(anonymous namespace)::PragmaSTDC_FENV_ACCESSHandler::~PragmaSTDC_FENV_ACCESSHandler()"}, + {"_ZN12_GLOBAL__N_129PragmaSTDC_FENV_ACCESSHandler12HandlePragmaERN5clang12PreprocessorENS1_20PragmaIntroducerKindERNS1_5TokenE", "(anonymous namespace)::PragmaSTDC_FENV_ACCESSHandler::HandlePragma(clang::Preprocessor&, clang::PragmaIntroducerKind, clang::Token&)"}, + {"_ZN12_GLOBAL__N_129PragmaSTDC_FP_CONTRACTHandlerD1Ev", "(anonymous namespace)::PragmaSTDC_FP_CONTRACTHandler::~PragmaSTDC_FP_CONTRACTHandler()"}, + {"_ZN12_GLOBAL__N_129PragmaSTDC_FP_CONTRACTHandlerD0Ev", "(anonymous namespace)::PragmaSTDC_FP_CONTRACTHandler::~PragmaSTDC_FP_CONTRACTHandler()"}, + {"_ZN12_GLOBAL__N_129PragmaSTDC_FP_CONTRACTHandler12HandlePragmaERN5clang12PreprocessorENS1_20PragmaIntroducerKindERNS1_5TokenE", "(anonymous namespace)::PragmaSTDC_FP_CONTRACTHandler::HandlePragma(clang::Preprocessor&, clang::PragmaIntroducerKind, clang::Token&)"}, + {"_ZN12_GLOBAL__N_118PragmaDebugHandlerD1Ev", "(anonymous namespace)::PragmaDebugHandler::~PragmaDebugHandler()"}, + {"_ZN12_GLOBAL__N_118PragmaDebugHandlerD0Ev", "(anonymous namespace)::PragmaDebugHandler::~PragmaDebugHandler()"}, + {"_ZN12_GLOBAL__N_118PragmaDebugHandler12HandlePragmaERN5clang12PreprocessorENS1_20PragmaIntroducerKindERNS1_5TokenE", "(anonymous namespace)::PragmaDebugHandler::HandlePragma(clang::Preprocessor&, clang::PragmaIntroducerKind, clang::Token&)"}, + {"_ZN12_GLOBAL__N_123PragmaDiagnosticHandlerD1Ev", "(anonymous namespace)::PragmaDiagnosticHandler::~PragmaDiagnosticHandler()"}, + {"_ZN12_GLOBAL__N_123PragmaDiagnosticHandlerD0Ev", "(anonymous namespace)::PragmaDiagnosticHandler::~PragmaDiagnosticHandler()"}, + {"_ZN12_GLOBAL__N_123PragmaDiagnosticHandler12HandlePragmaERN5clang12PreprocessorENS1_20PragmaIntroducerKindERNS1_5TokenE", "(anonymous namespace)::PragmaDiagnosticHandler::HandlePragma(clang::Preprocessor&, clang::PragmaIntroducerKind, clang::Token&)"}, + {"_ZN12_GLOBAL__N_123PragmaDependencyHandlerD1Ev", "(anonymous namespace)::PragmaDependencyHandler::~PragmaDependencyHandler()"}, + {"_ZN12_GLOBAL__N_123PragmaDependencyHandlerD0Ev", "(anonymous namespace)::PragmaDependencyHandler::~PragmaDependencyHandler()"}, + {"_ZN12_GLOBAL__N_123PragmaDependencyHandler12HandlePragmaERN5clang12PreprocessorENS1_20PragmaIntroducerKindERNS1_5TokenE", "(anonymous namespace)::PragmaDependencyHandler::HandlePragma(clang::Preprocessor&, clang::PragmaIntroducerKind, clang::Token&)"}, + {"_ZN12_GLOBAL__N_125PragmaSystemHeaderHandlerD1Ev", "(anonymous namespace)::PragmaSystemHeaderHandler::~PragmaSystemHeaderHandler()"}, + {"_ZN12_GLOBAL__N_125PragmaSystemHeaderHandlerD0Ev", "(anonymous namespace)::PragmaSystemHeaderHandler::~PragmaSystemHeaderHandler()"}, + {"_ZN12_GLOBAL__N_125PragmaSystemHeaderHandler12HandlePragmaERN5clang12PreprocessorENS1_20PragmaIntroducerKindERNS1_5TokenE", "(anonymous namespace)::PragmaSystemHeaderHandler::HandlePragma(clang::Preprocessor&, clang::PragmaIntroducerKind, clang::Token&)"}, + {"_ZN12_GLOBAL__N_119PragmaPoisonHandlerD1Ev", "(anonymous namespace)::PragmaPoisonHandler::~PragmaPoisonHandler()"}, + {"_ZN12_GLOBAL__N_119PragmaPoisonHandlerD0Ev", "(anonymous namespace)::PragmaPoisonHandler::~PragmaPoisonHandler()"}, + {"_ZN12_GLOBAL__N_119PragmaPoisonHandler12HandlePragmaERN5clang12PreprocessorENS1_20PragmaIntroducerKindERNS1_5TokenE", "(anonymous namespace)::PragmaPoisonHandler::HandlePragma(clang::Preprocessor&, clang::PragmaIntroducerKind, clang::Token&)"}, + {"_ZN12_GLOBAL__N_120PragmaMessageHandlerD1Ev", "(anonymous namespace)::PragmaMessageHandler::~PragmaMessageHandler()"}, + {"_ZN12_GLOBAL__N_120PragmaMessageHandlerD0Ev", "(anonymous namespace)::PragmaMessageHandler::~PragmaMessageHandler()"}, + {"_ZN12_GLOBAL__N_120PragmaMessageHandler12HandlePragmaERN5clang12PreprocessorENS1_20PragmaIntroducerKindERNS1_5TokenE", "(anonymous namespace)::PragmaMessageHandler::HandlePragma(clang::Preprocessor&, clang::PragmaIntroducerKind, clang::Token&)"}, + {"_ZN12_GLOBAL__N_121PragmaPopMacroHandlerD1Ev", "(anonymous namespace)::PragmaPopMacroHandler::~PragmaPopMacroHandler()"}, + {"_ZN12_GLOBAL__N_121PragmaPopMacroHandlerD0Ev", "(anonymous namespace)::PragmaPopMacroHandler::~PragmaPopMacroHandler()"}, + {"_ZN12_GLOBAL__N_121PragmaPopMacroHandler12HandlePragmaERN5clang12PreprocessorENS1_20PragmaIntroducerKindERNS1_5TokenE", "(anonymous namespace)::PragmaPopMacroHandler::HandlePragma(clang::Preprocessor&, clang::PragmaIntroducerKind, clang::Token&)"}, + {"_ZN12_GLOBAL__N_122PragmaPushMacroHandlerD1Ev", "(anonymous namespace)::PragmaPushMacroHandler::~PragmaPushMacroHandler()"}, + {"_ZN12_GLOBAL__N_122PragmaPushMacroHandlerD0Ev", "(anonymous namespace)::PragmaPushMacroHandler::~PragmaPushMacroHandler()"}, + {"_ZN12_GLOBAL__N_122PragmaPushMacroHandler12HandlePragmaERN5clang12PreprocessorENS1_20PragmaIntroducerKindERNS1_5TokenE", "(anonymous namespace)::PragmaPushMacroHandler::HandlePragma(clang::Preprocessor&, clang::PragmaIntroducerKind, clang::Token&)"}, + {"_ZN12_GLOBAL__N_117PragmaMarkHandlerD1Ev", "(anonymous namespace)::PragmaMarkHandler::~PragmaMarkHandler()"}, + {"_ZN12_GLOBAL__N_117PragmaMarkHandlerD0Ev", "(anonymous namespace)::PragmaMarkHandler::~PragmaMarkHandler()"}, + {"_ZN12_GLOBAL__N_117PragmaMarkHandler12HandlePragmaERN5clang12PreprocessorENS1_20PragmaIntroducerKindERNS1_5TokenE", "(anonymous namespace)::PragmaMarkHandler::HandlePragma(clang::Preprocessor&, clang::PragmaIntroducerKind, clang::Token&)"}, + {"_ZN12_GLOBAL__N_117PragmaOnceHandlerD1Ev", "(anonymous namespace)::PragmaOnceHandler::~PragmaOnceHandler()"}, + {"_ZN12_GLOBAL__N_117PragmaOnceHandlerD0Ev", "(anonymous namespace)::PragmaOnceHandler::~PragmaOnceHandler()"}, + {"_ZN12_GLOBAL__N_117PragmaOnceHandler12HandlePragmaERN5clang12PreprocessorENS1_20PragmaIntroducerKindERNS1_5TokenE", "(anonymous namespace)::PragmaOnceHandler::HandlePragma(clang::Preprocessor&, clang::PragmaIntroducerKind, clang::Token&)"}, + {"_ZN5clang18EmptyPragmaHandlerD1Ev", "clang::EmptyPragmaHandler::~EmptyPragmaHandler()"}, + {"_ZN5clang18EmptyPragmaHandlerD0Ev", "clang::EmptyPragmaHandler::~EmptyPragmaHandler()"}, + {"_ZNSt6vectorIPN5clang9MacroInfoESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, clang::MacroInfo* const&)"}, + {"_ZN4llvm8DenseMapIPN5clang14IdentifierInfoESt6vectorIPNS1_9MacroInfoESaIS6_EENS_12DenseMapInfoIS3_EENS9_IS8_EEE16FindAndConstructERKS3_", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::FindAndConstruct(clang::IdentifierInfo* const&)"}, + {"_ZN4llvm8DenseMapIPN5clang14IdentifierInfoESt6vectorIPNS1_9MacroInfoESaIS6_EENS_12DenseMapInfoIS3_EENS9_IS8_EEE16InsertIntoBucketERKS3_RKS8_PSt4pairIS3_S8_E", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::InsertIntoBucket(clang::IdentifierInfo* const&, std::vector> const&, std::pair>>*)"}, + {"_ZN4llvm8DenseMapIPN5clang14IdentifierInfoESt6vectorIPNS1_9MacroInfoESaIS6_EENS_12DenseMapInfoIS3_EENS9_IS8_EEE4growEj", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::grow(unsigned int)"}, + {"_ZN4llvm9StringMapIPN5clang13PragmaHandlerENS_15MallocAllocatorEE16GetOrCreateValueIS3_EERNS_14StringMapEntryIS3_EENS_9StringRefET_", "llvm::StringMapEntry& llvm::StringMap::GetOrCreateValue(llvm::StringRef, clang::PragmaHandler*)"}, + {"_ZN5clang33ExternalPreprocessingRecordSourceD0Ev", "clang::ExternalPreprocessingRecordSource::~ExternalPreprocessingRecordSource()"}, + {"_ZN5clang33ExternalPreprocessingRecordSourceD1Ev", "clang::ExternalPreprocessingRecordSource::~ExternalPreprocessingRecordSource()"}, + {"_ZN5clang33ExternalPreprocessingRecordSourceD2Ev", "clang::ExternalPreprocessingRecordSource::~ExternalPreprocessingRecordSource()"}, + {"_ZN5clang18InclusionDirectiveC1ERNS_19PreprocessingRecordENS0_13InclusionKindEN4llvm9StringRefEbPKNS_9FileEntryENS_11SourceRangeE", "clang::InclusionDirective::InclusionDirective(clang::PreprocessingRecord&, clang::InclusionDirective::InclusionKind, llvm::StringRef, bool, clang::FileEntry const*, clang::SourceRange)"}, + {"_ZN5clang18InclusionDirectiveC2ERNS_19PreprocessingRecordENS0_13InclusionKindEN4llvm9StringRefEbPKNS_9FileEntryENS_11SourceRangeE", "clang::InclusionDirective::InclusionDirective(clang::PreprocessingRecord&, clang::InclusionDirective::InclusionKind, llvm::StringRef, bool, clang::FileEntry const*, clang::SourceRange)"}, + {"_ZNK5clang19PreprocessingRecord29MaybeLoadPreallocatedEntitiesEv", "clang::PreprocessingRecord::MaybeLoadPreallocatedEntities() const"}, + {"_ZN5clang19PreprocessingRecordC1Ev", "clang::PreprocessingRecord::PreprocessingRecord()"}, + {"_ZN5clang19PreprocessingRecordC2Ev", "clang::PreprocessingRecord::PreprocessingRecord()"}, + {"_ZN5clang19PreprocessingRecord5beginEb", "clang::PreprocessingRecord::begin(bool)"}, + {"_ZN5clang19PreprocessingRecord3endEb", "clang::PreprocessingRecord::end(bool)"}, + {"_ZNK5clang19PreprocessingRecord5beginEb", "clang::PreprocessingRecord::begin(bool) const"}, + {"_ZNK5clang19PreprocessingRecord3endEb", "clang::PreprocessingRecord::end(bool) const"}, + {"_ZN5clang19PreprocessingRecord21addPreprocessedEntityEPNS_18PreprocessedEntityE", "clang::PreprocessingRecord::addPreprocessedEntity(clang::PreprocessedEntity*)"}, + {"_ZN5clang19PreprocessingRecord17SetExternalSourceERNS_33ExternalPreprocessingRecordSourceEj", "clang::PreprocessingRecord::SetExternalSource(clang::ExternalPreprocessingRecordSource&, unsigned int)"}, + {"_ZN5clang19PreprocessingRecord21SetPreallocatedEntityEjPNS_18PreprocessedEntityE", "clang::PreprocessingRecord::SetPreallocatedEntity(unsigned int, clang::PreprocessedEntity*)"}, + {"_ZN5clang19PreprocessingRecord23RegisterMacroDefinitionEPNS_9MacroInfoEPNS_15MacroDefinitionE", "clang::PreprocessingRecord::RegisterMacroDefinition(clang::MacroInfo*, clang::MacroDefinition*)"}, + {"_ZN5clang19PreprocessingRecord19findMacroDefinitionEPKNS_9MacroInfoE", "clang::PreprocessingRecord::findMacroDefinition(clang::MacroInfo const*)"}, + {"_ZN5clang19PreprocessingRecord12MacroExpandsERKNS_5TokenEPKNS_9MacroInfoE", "clang::PreprocessingRecord::MacroExpands(clang::Token const&, clang::MacroInfo const*)"}, + {"_ZN5clang19PreprocessingRecord12MacroDefinedERKNS_5TokenEPKNS_9MacroInfoE", "clang::PreprocessingRecord::MacroDefined(clang::Token const&, clang::MacroInfo const*)"}, + {"_ZN5clang19PreprocessingRecord14MacroUndefinedERKNS_5TokenEPKNS_9MacroInfoE", "clang::PreprocessingRecord::MacroUndefined(clang::Token const&, clang::MacroInfo const*)"}, + {"_ZN5clang19PreprocessingRecord18InclusionDirectiveENS_14SourceLocationERKNS_5TokenEN4llvm9StringRefEbPKNS_9FileEntryES1_", "clang::PreprocessingRecord::InclusionDirective(clang::SourceLocation, clang::Token const&, llvm::StringRef, bool, clang::FileEntry const*, clang::SourceLocation)"}, + {"_ZN5clang19PreprocessingRecordD1Ev", "clang::PreprocessingRecord::~PreprocessingRecord()"}, + {"_ZN5clang19PreprocessingRecordD0Ev", "clang::PreprocessingRecord::~PreprocessingRecord()"}, + {"_ZN4llvm8DenseMapIPKN5clang9MacroInfoEPNS1_15MacroDefinitionENS_12DenseMapInfoIS4_EENS7_IS6_EEE16InsertIntoBucketERKS4_RKS6_PSt4pairIS4_S6_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::MacroInfo const* const&, clang::MacroDefinition* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang9MacroInfoEPNS1_15MacroDefinitionENS_12DenseMapInfoIS4_EENS7_IS6_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNSt6vectorIPN5clang18PreprocessedEntityESaIS2_EE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPS2_S4_EEmRKS2_", "std::vector>::_M_fill_insert(__gnu_cxx::__normal_iterator>>, unsigned long, clang::PreprocessedEntity* const&)"}, + {"_ZN5clang26ExternalPreprocessorSourceD0Ev", "clang::ExternalPreprocessorSource::~ExternalPreprocessorSource()"}, + {"_ZN5clang26ExternalPreprocessorSourceD1Ev", "clang::ExternalPreprocessorSource::~ExternalPreprocessorSource()"}, + {"_ZN5clang26ExternalPreprocessorSourceD2Ev", "clang::ExternalPreprocessorSource::~ExternalPreprocessorSource()"}, + {"_ZN5clang12PreprocessorC1ERNS_10DiagnosticERKNS_11LangOptionsERKNS_10TargetInfoERNS_13SourceManagerERNS_12HeaderSearchEPNS_20IdentifierInfoLookupEb", "clang::Preprocessor::Preprocessor(clang::Diagnostic&, clang::LangOptions const&, clang::TargetInfo const&, clang::SourceManager&, clang::HeaderSearch&, clang::IdentifierInfoLookup*, bool)"}, + {"_ZN5clang12PreprocessorC2ERNS_10DiagnosticERKNS_11LangOptionsERKNS_10TargetInfoERNS_13SourceManagerERNS_12HeaderSearchEPNS_20IdentifierInfoLookupEb", "clang::Preprocessor::Preprocessor(clang::Diagnostic&, clang::LangOptions const&, clang::TargetInfo const&, clang::SourceManager&, clang::HeaderSearch&, clang::IdentifierInfoLookup*, bool)"}, + {"_ZN5clang12PreprocessorD1Ev", "clang::Preprocessor::~Preprocessor()"}, + {"_ZN5clang12PreprocessorD2Ev", "clang::Preprocessor::~Preprocessor()"}, + {"_ZN5clang12Preprocessor13setPTHManagerEPNS_10PTHManagerE", "clang::Preprocessor::setPTHManager(clang::PTHManager*)"}, + {"_ZNK5clang12Preprocessor9DumpTokenERKNS_5TokenEb", "clang::Preprocessor::DumpToken(clang::Token const&, bool) const"}, + {"_ZNK5clang12Preprocessor12DumpLocationENS_14SourceLocationE", "clang::Preprocessor::DumpLocation(clang::SourceLocation) const"}, + {"_ZNK5clang12Preprocessor9DumpMacroERKNS_9MacroInfoE", "clang::Preprocessor::DumpMacro(clang::MacroInfo const&) const"}, + {"_ZN5clang12Preprocessor10PrintStatsEv", "clang::Preprocessor::PrintStats()"}, + {"_ZNK5clang12Preprocessor11macro_beginEb", "clang::Preprocessor::macro_begin(bool) const"}, + {"_ZNK5clang12Preprocessor9macro_endEb", "clang::Preprocessor::macro_end(bool) const"}, + {"_ZN5clang12Preprocessor22SetCodeCompletionPointEPKNS_9FileEntryEjj", "clang::Preprocessor::SetCodeCompletionPoint(clang::FileEntry const*, unsigned int, unsigned int)"}, + {"_ZNK5clang12Preprocessor20isCodeCompletionFileENS_14SourceLocationE", "clang::Preprocessor::isCodeCompletionFile(clang::SourceLocation) const"}, + {"_ZN5clang12Preprocessor27CodeCompleteNaturalLanguageEv", "clang::Preprocessor::CodeCompleteNaturalLanguage()"}, + {"_ZNK5clang12Preprocessor11getSpellingERKNS_5TokenERN4llvm15SmallVectorImplIcEEPb", "clang::Preprocessor::getSpelling(clang::Token const&, llvm::SmallVectorImpl&, bool*) const"}, + {"_ZN5clang12Preprocessor12CreateStringEPKcjRNS_5TokenENS_14SourceLocationE", "clang::Preprocessor::CreateString(char const*, unsigned int, clang::Token&, clang::SourceLocation)"}, + {"_ZN5clang12Preprocessor19EnterMainSourceFileEv", "clang::Preprocessor::EnterMainSourceFile()"}, + {"_ZN5clang12Preprocessor13EndSourceFileEv", "clang::Preprocessor::EndSourceFile()"}, + {"_ZNK5clang12Preprocessor20LookUpIdentifierInfoERNS_5TokenE", "clang::Preprocessor::LookUpIdentifierInfo(clang::Token&) const"}, + {"_ZN5clang12Preprocessor16HandleIdentifierERNS_5TokenE", "clang::Preprocessor::HandleIdentifier(clang::Token&)"}, + {"_ZN5clang12Preprocessor17AddCommentHandlerEPNS_14CommentHandlerE", "clang::Preprocessor::AddCommentHandler(clang::CommentHandler*)"}, + {"_ZN5clang12Preprocessor20RemoveCommentHandlerEPNS_14CommentHandlerE", "clang::Preprocessor::RemoveCommentHandler(clang::CommentHandler*)"}, + {"_ZN5clang12Preprocessor13HandleCommentERNS_5TokenENS_11SourceRangeE", "clang::Preprocessor::HandleComment(clang::Token&, clang::SourceRange)"}, + {"_ZN5clang14CommentHandlerD0Ev", "clang::CommentHandler::~CommentHandler()"}, + {"_ZN5clang14CommentHandlerD1Ev", "clang::CommentHandler::~CommentHandler()"}, + {"_ZN5clang14CommentHandlerD2Ev", "clang::CommentHandler::~CommentHandler()"}, + {"_ZN5clang21CodeCompletionHandlerD0Ev", "clang::CodeCompletionHandler::~CodeCompletionHandler()"}, + {"_ZN5clang21CodeCompletionHandlerD1Ev", "clang::CodeCompletionHandler::~CodeCompletionHandler()"}, + {"_ZN5clang21CodeCompletionHandlerD2Ev", "clang::CodeCompletionHandler::~CodeCompletionHandler()"}, + {"_ZN5clang12Preprocessor25createPreprocessingRecordEv", "clang::Preprocessor::createPreprocessingRecord()"}, + {"_ZN5clang21CodeCompletionHandler21CodeCompleteDirectiveEb", "clang::CodeCompletionHandler::CodeCompleteDirective(bool)"}, + {"_ZN5clang21CodeCompletionHandler34CodeCompleteInConditionalExclusionEv", "clang::CodeCompletionHandler::CodeCompleteInConditionalExclusion()"}, + {"_ZN5clang21CodeCompletionHandler21CodeCompleteMacroNameEb", "clang::CodeCompletionHandler::CodeCompleteMacroName(bool)"}, + {"_ZN5clang21CodeCompletionHandler34CodeCompletePreprocessorExpressionEv", "clang::CodeCompletionHandler::CodeCompletePreprocessorExpression()"}, + {"_ZN5clang21CodeCompletionHandler25CodeCompleteMacroArgumentEPNS_14IdentifierInfoEPNS_9MacroInfoEj", "clang::CodeCompletionHandler::CodeCompleteMacroArgument(clang::IdentifierInfo*, clang::MacroInfo*, unsigned int)"}, + {"_ZN5clang21CodeCompletionHandler27CodeCompleteNaturalLanguageEv", "clang::CodeCompletionHandler::CodeCompleteNaturalLanguage()"}, + + // {"_ZSt6__findIN9__gnu_cxx17__normal_iteratorIPPN5clang14CommentHandlerESt6vectorIS4_SaIS4_EEEES4_ET_SA_SA_RKT0_St26random_access_iterator_tag", + // "__gnu_cxx::__normal_iterator>> std::__find<__gnu_cxx::__normal_iterator>>, clang::CommentHandler*>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, clang::CommentHandler* const&, std::random_access_iterator_tag)"}, + // got error + + {"_ZNSt6vectorIPN5clang14CommentHandlerESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, clang::CommentHandler* const&)"}, + {"_ZN5clang18PPChainedCallbacksD1Ev", "clang::PPChainedCallbacks::~PPChainedCallbacks()"}, + {"_ZN5clang18PPChainedCallbacksD0Ev", "clang::PPChainedCallbacks::~PPChainedCallbacks()"}, + {"_ZN5clang18PPChainedCallbacks11FileChangedENS_14SourceLocationENS_11PPCallbacks16FileChangeReasonENS_6SrcMgr18CharacteristicKindE", "clang::PPChainedCallbacks::FileChanged(clang::SourceLocation, clang::PPCallbacks::FileChangeReason, clang::SrcMgr::CharacteristicKind)"}, + {"_ZN5clang18PPChainedCallbacks11FileSkippedERKNS_9FileEntryERKNS_5TokenENS_6SrcMgr18CharacteristicKindE", "clang::PPChainedCallbacks::FileSkipped(clang::FileEntry const&, clang::Token const&, clang::SrcMgr::CharacteristicKind)"}, + {"_ZN5clang11PPCallbacks18InclusionDirectiveENS_14SourceLocationERKNS_5TokenEN4llvm9StringRefEbPKNS_9FileEntryES1_", "clang::PPCallbacks::InclusionDirective(clang::SourceLocation, clang::Token const&, llvm::StringRef, bool, clang::FileEntry const*, clang::SourceLocation)"}, + {"_ZN5clang18PPChainedCallbacks13EndOfMainFileEv", "clang::PPChainedCallbacks::EndOfMainFile()"}, + {"_ZN5clang18PPChainedCallbacks5IdentENS_14SourceLocationERKSs", "clang::PPChainedCallbacks::Ident(clang::SourceLocation, std::string const&)"}, + {"_ZN5clang18PPChainedCallbacks13PragmaCommentENS_14SourceLocationEPKNS_14IdentifierInfoERKSs", "clang::PPChainedCallbacks::PragmaComment(clang::SourceLocation, clang::IdentifierInfo const*, std::string const&)"}, + {"_ZN5clang18PPChainedCallbacks13PragmaMessageENS_14SourceLocationEN4llvm9StringRefE", "clang::PPChainedCallbacks::PragmaMessage(clang::SourceLocation, llvm::StringRef)"}, + {"_ZN5clang18PPChainedCallbacks12MacroExpandsERKNS_5TokenEPKNS_9MacroInfoE", "clang::PPChainedCallbacks::MacroExpands(clang::Token const&, clang::MacroInfo const*)"}, + {"_ZN5clang18PPChainedCallbacks12MacroDefinedERKNS_5TokenEPKNS_9MacroInfoE", "clang::PPChainedCallbacks::MacroDefined(clang::Token const&, clang::MacroInfo const*)"}, + {"_ZN5clang18PPChainedCallbacks14MacroUndefinedERKNS_5TokenEPKNS_9MacroInfoE", "clang::PPChainedCallbacks::MacroUndefined(clang::Token const&, clang::MacroInfo const*)"}, + {"_ZN5clang18PPChainedCallbacks2IfENS_11SourceRangeE", "clang::PPChainedCallbacks::If(clang::SourceRange)"}, + {"_ZN5clang18PPChainedCallbacks4ElifENS_11SourceRangeE", "clang::PPChainedCallbacks::Elif(clang::SourceRange)"}, + {"_ZN5clang18PPChainedCallbacks5IfdefERKNS_5TokenE", "clang::PPChainedCallbacks::Ifdef(clang::Token const&)"}, + {"_ZN5clang18PPChainedCallbacks6IfndefERKNS_5TokenE", "clang::PPChainedCallbacks::Ifndef(clang::Token const&)"}, + {"_ZN5clang18PPChainedCallbacks4ElseEv", "clang::PPChainedCallbacks::Else()"}, + {"_ZN5clang18PPChainedCallbacks5EndifEv", "clang::PPChainedCallbacks::Endif()"}, + {"_ZN5clang11PPCallbacks11FileChangedENS_14SourceLocationENS0_16FileChangeReasonENS_6SrcMgr18CharacteristicKindE", "clang::PPCallbacks::FileChanged(clang::SourceLocation, clang::PPCallbacks::FileChangeReason, clang::SrcMgr::CharacteristicKind)"}, + {"_ZN5clang11PPCallbacks11FileSkippedERKNS_9FileEntryERKNS_5TokenENS_6SrcMgr18CharacteristicKindE", "clang::PPCallbacks::FileSkipped(clang::FileEntry const&, clang::Token const&, clang::SrcMgr::CharacteristicKind)"}, + {"_ZN5clang11PPCallbacks13EndOfMainFileEv", "clang::PPCallbacks::EndOfMainFile()"}, + {"_ZN5clang11PPCallbacks5IdentENS_14SourceLocationERKSs", "clang::PPCallbacks::Ident(clang::SourceLocation, std::string const&)"}, + {"_ZN5clang11PPCallbacks13PragmaCommentENS_14SourceLocationEPKNS_14IdentifierInfoERKSs", "clang::PPCallbacks::PragmaComment(clang::SourceLocation, clang::IdentifierInfo const*, std::string const&)"}, + {"_ZN5clang11PPCallbacks13PragmaMessageENS_14SourceLocationEN4llvm9StringRefE", "clang::PPCallbacks::PragmaMessage(clang::SourceLocation, llvm::StringRef)"}, + {"_ZN5clang11PPCallbacks12MacroExpandsERKNS_5TokenEPKNS_9MacroInfoE", "clang::PPCallbacks::MacroExpands(clang::Token const&, clang::MacroInfo const*)"}, + {"_ZN5clang11PPCallbacks12MacroDefinedERKNS_5TokenEPKNS_9MacroInfoE", "clang::PPCallbacks::MacroDefined(clang::Token const&, clang::MacroInfo const*)"}, + {"_ZN5clang11PPCallbacks14MacroUndefinedERKNS_5TokenEPKNS_9MacroInfoE", "clang::PPCallbacks::MacroUndefined(clang::Token const&, clang::MacroInfo const*)"}, + {"_ZN5clang11PPCallbacks2IfENS_11SourceRangeE", "clang::PPCallbacks::If(clang::SourceRange)"}, + {"_ZN5clang11PPCallbacks4ElifENS_11SourceRangeE", "clang::PPCallbacks::Elif(clang::SourceRange)"}, + {"_ZN5clang11PPCallbacks5IfdefERKNS_5TokenE", "clang::PPCallbacks::Ifdef(clang::Token const&)"}, + {"_ZN5clang11PPCallbacks6IfndefERKNS_5TokenE", "clang::PPCallbacks::Ifndef(clang::Token const&)"}, + {"_ZN5clang11PPCallbacks4ElseEv", "clang::PPCallbacks::Else()"}, + {"_ZN5clang11PPCallbacks5EndifEv", "clang::PPCallbacks::Endif()"}, + {"_ZN5clang15PragmaNamespace14getIfNamespaceEv", "clang::PragmaNamespace::getIfNamespace()"}, + {"_ZN5clang13PragmaHandler14getIfNamespaceEv", "clang::PragmaHandler::getIfNamespace()"}, + {"_ZN5clang15IdentifierTable3getEN4llvm9StringRefE", "clang::IdentifierTable::get(llvm::StringRef)"}, + {"_ZN4llvm9StringMapIPN5clang14IdentifierInfoENS_16BumpPtrAllocatorEE16GetOrCreateValueIS3_EERNS_14StringMapEntryIS3_EENS_9StringRefET_", "llvm::StringMapEntry& llvm::StringMap::GetOrCreateValue(llvm::StringRef, clang::IdentifierInfo*)"}, + {"_ZN5clang11LangOptionsC2ERKS0_", "clang::LangOptions::LangOptions(clang::LangOptions const&)"}, + {"_ZN5clang17PreprocessorLexer18LexIncludeFilenameERNS_5TokenE", "clang::PreprocessorLexer::LexIncludeFilename(clang::Token&)"}, + {"_ZNK5clang17PreprocessorLexer12getFileEntryEv", "clang::PreprocessorLexer::getFileEntry() const"}, + {"_ZN5clang13ScratchBufferC1ERNS_13SourceManagerE", "clang::ScratchBuffer::ScratchBuffer(clang::SourceManager&)"}, + {"_ZN5clang13ScratchBufferC2ERNS_13SourceManagerE", "clang::ScratchBuffer::ScratchBuffer(clang::SourceManager&)"}, + {"_ZN5clang13ScratchBuffer8getTokenEPKcjRS2_", "clang::ScratchBuffer::getToken(char const*, unsigned int, char const*&)"}, + {"_ZN5clang13ScratchBuffer18AllocScratchBufferEj", "clang::ScratchBuffer::AllocScratchBuffer(unsigned int)"}, + {"_ZNK5clang18TokenConcatenation11StartsWithLERKNS_5TokenE", "clang::TokenConcatenation::StartsWithL(clang::Token const&) const"}, + {"_ZNK5clang18TokenConcatenation13IsIdentifierLERKNS_5TokenE", "clang::TokenConcatenation::IsIdentifierL(clang::Token const&) const"}, + {"_ZN5clang18TokenConcatenationC1ERNS_12PreprocessorE", "clang::TokenConcatenation::TokenConcatenation(clang::Preprocessor&)"}, + {"_ZN5clang18TokenConcatenationC2ERNS_12PreprocessorE", "clang::TokenConcatenation::TokenConcatenation(clang::Preprocessor&)"}, + + // {"_ZNK5clang18TokenConcatenation11AvoidConcatERKNS_5TokenES3_S3_", + // "clang::TokenConcatenation::AvoidConcat(clang::Token const&, clang::Token const&, clang::Token const&) const"}, + // got error + + {"_Z12GetFirstCharRN5clang12PreprocessorERKNS_5TokenE", "GetFirstChar(clang::Preprocessor&, clang::Token const&)"}, + {"_ZN5clang10TokenLexer4InitERNS_5TokenENS_14SourceLocationEPNS_9MacroArgsE", "clang::TokenLexer::Init(clang::Token&, clang::SourceLocation, clang::MacroArgs*)"}, + {"_ZN5clang10TokenLexer7destroyEv", "clang::TokenLexer::destroy()"}, + {"_ZN5clang10TokenLexer23ExpandFunctionArgumentsEv", "clang::TokenLexer::ExpandFunctionArguments()"}, + {"_ZN5clang10TokenLexer4InitEPKNS_5TokenEjbb", "clang::TokenLexer::Init(clang::Token const*, unsigned int, bool, bool)"}, + {"_ZN5clang10TokenLexer3LexERNS_5TokenE", "clang::TokenLexer::Lex(clang::Token&)"}, + {"_ZN5clang10TokenLexer11PasteTokensERNS_5TokenE", "clang::TokenLexer::PasteTokens(clang::Token&)"}, + {"_ZN5clang10TokenLexer27HandleMicrosoftCommentPasteERNS_5TokenE", "clang::TokenLexer::HandleMicrosoftCommentPaste(clang::Token&)"}, + {"_ZNK5clang10TokenLexer17isNextTokenLParenEv", "clang::TokenLexer::isNextTokenLParen() const"}, + {"_ZNK5clang7Builtin7Context9GetRecordEj", "clang::Builtin::Context::GetRecord(unsigned int) const"}, + {"_ZN5clang7Builtin7ContextC1ERKNS_10TargetInfoE", "clang::Builtin::Context::Context(clang::TargetInfo const&)"}, + {"_ZN5clang7Builtin7ContextC2ERKNS_10TargetInfoE", "clang::Builtin::Context::Context(clang::TargetInfo const&)"}, + {"_ZN5clang7Builtin7Context18InitializeBuiltinsERNS_15IdentifierTableERKNS_11LangOptionsE", "clang::Builtin::Context::InitializeBuiltins(clang::IdentifierTable&, clang::LangOptions const&)"}, + {"_ZN5clang7Builtin7Context15GetBuiltinNamesERN4llvm15SmallVectorImplIPKcEEb", "clang::Builtin::Context::GetBuiltinNames(llvm::SmallVectorImpl&, bool)"}, + {"_ZN5clang7Builtin7Context13ForgetBuiltinEjRNS_15IdentifierTableE", "clang::Builtin::Context::ForgetBuiltin(unsigned int, clang::IdentifierTable&)"}, + {"_ZN5clang7Builtin7Context12isPrintfLikeEjRjRb", "clang::Builtin::Context::isPrintfLike(unsigned int, unsigned int&, bool&)"}, + {"_ZN5clang7Builtin7Context11isScanfLikeEjRjRb", "clang::Builtin::Context::isScanfLike(unsigned int, unsigned int&, bool&)"}, + {"_ZN5clang10DiagnosticC1ERKN4llvm18IntrusiveRefCntPtrINS_13DiagnosticIDsEEEPNS_16DiagnosticClientEb", "clang::Diagnostic::Diagnostic(llvm::IntrusiveRefCntPtr const&, clang::DiagnosticClient*, bool)"}, + {"_ZN5clang10DiagnosticC2ERKN4llvm18IntrusiveRefCntPtrINS_13DiagnosticIDsEEEPNS_16DiagnosticClientEb", "clang::Diagnostic::Diagnostic(llvm::IntrusiveRefCntPtr const&, clang::DiagnosticClient*, bool)"}, + {"_Z18DummyArgToStringFnN5clang10Diagnostic12ArgumentKindElPKcjS3_jPKSt4pairIS1_lEjRN4llvm15SmallVectorImplIcEEPv", "DummyArgToStringFn(clang::Diagnostic::ArgumentKind, long, char const*, unsigned int, char const*, unsigned int, std::pair const*, unsigned int, llvm::SmallVectorImpl&, void*)"}, + {"_ZN5clang10Diagnostic5ResetEv", "clang::Diagnostic::Reset()"}, + {"_ZN5clang10DiagnosticD1Ev", "clang::Diagnostic::~Diagnostic()"}, + {"_ZN5clang10DiagnosticD2Ev", "clang::Diagnostic::~Diagnostic()"}, + {"_ZN5clang10Diagnostic9setClientEPNS_16DiagnosticClientEb", "clang::Diagnostic::setClient(clang::DiagnosticClient*, bool)"}, + {"_ZN5clang10Diagnostic12pushMappingsENS_14SourceLocationE", "clang::Diagnostic::pushMappings(clang::SourceLocation)"}, + {"_ZN5clang10Diagnostic11popMappingsENS_14SourceLocationE", "clang::Diagnostic::popMappings(clang::SourceLocation)"}, + {"_ZN5clang10Diagnostic20SetDelayedDiagnosticEjN4llvm9StringRefES2_", "clang::Diagnostic::SetDelayedDiagnostic(unsigned int, llvm::StringRef, llvm::StringRef)"}, + {"_ZN5clang10Diagnostic13ReportDelayedEv", "clang::Diagnostic::ReportDelayed()"}, + {"_ZNK5clang10Diagnostic23GetDiagStatePointForLocENS_14SourceLocationE", "clang::Diagnostic::GetDiagStatePointForLoc(clang::SourceLocation) const"}, + {"_ZN5clang10Diagnostic20setDiagnosticMappingEjNS_4diag7MappingENS_14SourceLocationE", "clang::Diagnostic::setDiagnosticMapping(unsigned int, clang::diag::Mapping, clang::SourceLocation)"}, + {"_ZN5clang17DiagnosticBuilder11FlushCountsEv", "clang::DiagnosticBuilder::FlushCounts()"}, + {"_ZN5clang17DiagnosticBuilder4EmitEv", "clang::DiagnosticBuilder::Emit()"}, + {"_ZN5clang16DiagnosticClientD0Ev", "clang::DiagnosticClient::~DiagnosticClient()"}, + {"_ZN5clang16DiagnosticClientD1Ev", "clang::DiagnosticClient::~DiagnosticClient()"}, + {"_ZN5clang16DiagnosticClientD2Ev", "clang::DiagnosticClient::~DiagnosticClient()"}, + {"_ZN5clang16DiagnosticClient16HandleDiagnosticENS_10Diagnostic5LevelERKNS_14DiagnosticInfoE", "clang::DiagnosticClient::HandleDiagnostic(clang::Diagnostic::Level, clang::DiagnosticInfo const&)"}, + {"_ZNK5clang14DiagnosticInfo16FormatDiagnosticERN4llvm15SmallVectorImplIcEE", "clang::DiagnosticInfo::FormatDiagnostic(llvm::SmallVectorImpl&) const"}, + {"_ZNK5clang14DiagnosticInfo16FormatDiagnosticEPKcS2_RN4llvm15SmallVectorImplIcEE", "clang::DiagnosticInfo::FormatDiagnostic(char const*, char const*, llvm::SmallVectorImpl&) const"}, + {"_Z10ScanFormatPKcS0_c", "ScanFormat(char const*, char const*, char)"}, + {"_Z20HandlePluralModifierRKN5clang14DiagnosticInfoEjPKcjRN4llvm15SmallVectorImplIcEE", "HandlePluralModifier(clang::DiagnosticInfo const&, unsigned int, char const*, unsigned int, llvm::SmallVectorImpl&)"}, + {"_Z21HandleOrdinalModifierjRN4llvm15SmallVectorImplIcEE", "HandleOrdinalModifier(unsigned int, llvm::SmallVectorImpl&)"}, + {"_ZN5clang16StoredDiagnosticC1Ev", "clang::StoredDiagnostic::StoredDiagnostic()"}, + {"_ZN5clang16StoredDiagnosticC2Ev", "clang::StoredDiagnostic::StoredDiagnostic()"}, + {"_ZN5clang16StoredDiagnosticC1ENS_10Diagnostic5LevelEjN4llvm9StringRefE", "clang::StoredDiagnostic::StoredDiagnostic(clang::Diagnostic::Level, unsigned int, llvm::StringRef)"}, + {"_ZN5clang16StoredDiagnosticC2ENS_10Diagnostic5LevelEjN4llvm9StringRefE", "clang::StoredDiagnostic::StoredDiagnostic(clang::Diagnostic::Level, unsigned int, llvm::StringRef)"}, + {"_ZN5clang16StoredDiagnosticC1ENS_10Diagnostic5LevelERKNS_14DiagnosticInfoE", "clang::StoredDiagnostic::StoredDiagnostic(clang::Diagnostic::Level, clang::DiagnosticInfo const&)"}, + {"_ZN5clang16StoredDiagnosticC2ENS_10Diagnostic5LevelERKNS_14DiagnosticInfoE", "clang::StoredDiagnostic::StoredDiagnostic(clang::Diagnostic::Level, clang::DiagnosticInfo const&)"}, + {"_ZN5clang16StoredDiagnosticD1Ev", "clang::StoredDiagnostic::~StoredDiagnostic()"}, + {"_ZN5clang16StoredDiagnosticD2Ev", "clang::StoredDiagnostic::~StoredDiagnostic()"}, + {"_ZNK5clang16DiagnosticClient25IncludeInDiagnosticCountsEv", "clang::DiagnosticClient::IncludeInDiagnosticCounts() const"}, + {"_ZN5clang17PartialDiagnostic16StorageAllocatorC1Ev", "clang::PartialDiagnostic::StorageAllocator::StorageAllocator()"}, + {"_ZN5clang17PartialDiagnostic16StorageAllocatorC2Ev", "clang::PartialDiagnostic::StorageAllocator::StorageAllocator()"}, + {"_ZN5clang17PartialDiagnostic16StorageAllocatorD1Ev", "clang::PartialDiagnostic::StorageAllocator::~StorageAllocator()"}, + {"_ZN5clang17PartialDiagnostic16StorageAllocatorD2Ev", "clang::PartialDiagnostic::StorageAllocator::~StorageAllocator()"}, + {"_ZNSt6vectorIN5clang15CharSourceRangeESaIS1_EE7reserveEm", "std::vector>::reserve(unsigned long)"}, + {"_ZNSt6vectorIN5clang9FixItHintESaIS1_EE7reserveEm", "std::vector>::reserve(unsigned long)"}, + {"_ZNSt6vectorIN5clang9FixItHintESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, clang::FixItHint const&)"}, + {"_ZNSt6vectorIN5clang15CharSourceRangeESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, clang::CharSourceRange const&)"}, + {"_ZNSt6vectorIN5clang10Diagnostic14DiagStatePointESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, clang::Diagnostic::DiagStatePoint const&)"}, + {"_ZNSt6vectorIPN5clang10Diagnostic9DiagStateESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, clang::Diagnostic::DiagState* const&)"}, + {"_ZN4llvm8DenseMapIjjNS_12DenseMapInfoIjEES2_E8CopyFromERKS3_", "llvm::DenseMap, llvm::DenseMapInfo>::CopyFrom(llvm::DenseMap, llvm::DenseMapInfo> const&)"}, + {"_ZN5clang17PartialDiagnostic7StorageD2Ev", "clang::PartialDiagnostic::Storage::~Storage()"}, + {"_ZN5clang13DiagnosticIDs23getWarningOptionForDiagEj", "clang::DiagnosticIDs::getWarningOptionForDiag(unsigned int)"}, + {"_ZN5clang13DiagnosticIDs24getCategoryNumberForDiagEj", "clang::DiagnosticIDs::getCategoryNumberForDiag(unsigned int)"}, + {"_ZN5clang13DiagnosticIDs21getCategoryNameFromIDEj", "clang::DiagnosticIDs::getCategoryNameFromID(unsigned int)"}, + {"_ZN5clang13DiagnosticIDs27getDiagnosticSFINAEResponseEj", "clang::DiagnosticIDs::getDiagnosticSFINAEResponse(unsigned int)"}, + {"_ZN5clang13DiagnosticIDsC1Ev", "clang::DiagnosticIDs::DiagnosticIDs()"}, + {"_ZN5clang13DiagnosticIDsC2Ev", "clang::DiagnosticIDs::DiagnosticIDs()"}, + {"_ZN5clang13DiagnosticIDsD1Ev", "clang::DiagnosticIDs::~DiagnosticIDs()"}, + {"_ZN5clang13DiagnosticIDsD2Ev", "clang::DiagnosticIDs::~DiagnosticIDs()"}, + {"_ZN5clang13DiagnosticIDs15getCustomDiagIDENS0_5LevelEN4llvm9StringRefE", "clang::DiagnosticIDs::getCustomDiagID(clang::DiagnosticIDs::Level, llvm::StringRef)"}, + {"_ZN5clang13DiagnosticIDs27isBuiltinWarningOrExtensionEj", "clang::DiagnosticIDs::isBuiltinWarningOrExtension(unsigned int)"}, + {"_ZN5clang13DiagnosticIDs13isBuiltinNoteEj", "clang::DiagnosticIDs::isBuiltinNote(unsigned int)"}, + {"_ZN5clang13DiagnosticIDs22isBuiltinExtensionDiagEjRb", "clang::DiagnosticIDs::isBuiltinExtensionDiag(unsigned int, bool&)"}, + {"_ZNK5clang13DiagnosticIDs14getDescriptionEj", "clang::DiagnosticIDs::getDescription(unsigned int) const"}, + {"_ZNK5clang13DiagnosticIDs18getDiagnosticLevelEjNS_14SourceLocationERKNS_10DiagnosticE", "clang::DiagnosticIDs::getDiagnosticLevel(unsigned int, clang::SourceLocation, clang::Diagnostic const&) const"}, + {"_ZNK5clang13DiagnosticIDs18getDiagnosticLevelEjjNS_14SourceLocationERKNS_10DiagnosticE", "clang::DiagnosticIDs::getDiagnosticLevel(unsigned int, unsigned int, clang::SourceLocation, clang::Diagnostic const&) const"}, + {"_ZNK5clang13DiagnosticIDs25setDiagnosticGroupMappingEPKcNS_4diag7MappingENS_14SourceLocationERNS_10DiagnosticE", "clang::DiagnosticIDs::setDiagnosticGroupMapping(char const*, clang::diag::Mapping, clang::SourceLocation, clang::Diagnostic&) const"}, + {"_Z15MapGroupMembersPK13WarningOptionN5clang4diag7MappingENS2_14SourceLocationERNS2_10DiagnosticE", "MapGroupMembers(WarningOption const*, clang::diag::Mapping, clang::SourceLocation, clang::Diagnostic&)"}, + {"_ZNK5clang13DiagnosticIDs11ProcessDiagERNS_10DiagnosticE", "clang::DiagnosticIDs::ProcessDiag(clang::Diagnostic&) const"}, + {"_ZN5clang4diag14CustomDiagInfo17getOrCreateDiagIDENS_13DiagnosticIDs5LevelEN4llvm9StringRefERS2_", "clang::diag::CustomDiagInfo::getOrCreateDiagID(clang::DiagnosticIDs::Level, llvm::StringRef, clang::DiagnosticIDs&)"}, + {"_ZN4llvm8DenseMapIjjNS_12DenseMapInfoIjEES2_E16InsertIntoBucketERKjS5_PSt4pairIjjE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(unsigned int const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIjjNS_12DenseMapInfoIjEES2_E4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + + // {"_ZNSt6vectorISt4pairIN5clang13DiagnosticIDs5LevelESsESaIS4_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS4_S6_EERKS4_", + // "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + // "std::vector, std::allocator>::_M_insert_aux(__gnu_cxx::__normal_iterator>, std::string const&)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairIN5clang13DiagnosticIDs5LevelESsES0_IKS4_jESt10_Select1stIS6_ESt4lessIS4_ESaIS6_EE16_M_insert_uniqueERKS6_", + // "std::_Rb_tree, std::pair const, unsigned int>, std::_Select1st const, unsigned int>>, std::less>, std::allocator const, unsigned int>>>::_M_insert_unique(std::pair const, unsigned int> const&)"}, + // "std::_Rb_tree, std::pair, std::_Select1st, std::less, std::allocator>::_M_insert_unique(std::string const const&)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairIN5clang13DiagnosticIDs5LevelESsES0_IKS4_jESt10_Select1stIS6_ESt4lessIS4_ESaIS6_EE9_M_insertEPSt18_Rb_tree_node_baseSE_RKS6_", + // "std::_Rb_tree, std::pair const, unsigned int>, std::_Select1st const, unsigned int>>, std::less>, std::allocator const, unsigned int>>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair const, unsigned int> const&)"}, + // "std::_Rb_tree, std::pair, std::_Select1st, std::less, std::allocator>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base, std::string const const&)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairIN5clang13DiagnosticIDs5LevelESsES0_IKS4_jESt10_Select1stIS6_ESt4lessIS4_ESaIS6_EE8_M_eraseEPSt13_Rb_tree_nodeIS6_E", + // "std::_Rb_tree, std::pair const, unsigned int>, std::_Select1st const, unsigned int>>, std::less>, std::allocator const, unsigned int>>>::_M_erase(std::_Rb_tree_node const, unsigned int>>*)"}, + // "std::_Rb_tree, std::pair, std::_Select1st, std::less, std::allocator>::_M_erase(std::_Rb_tree_node*)" was returned + + {"_ZN5clang9FileEntryD1Ev", "clang::FileEntry::~FileEntry()"}, + {"_ZN5clang9FileEntryD2Ev", "clang::FileEntry::~FileEntry()"}, + {"_ZN5clang11FileManagerC1ERKNS_17FileSystemOptionsE", "clang::FileManager::FileManager(clang::FileSystemOptions const&)"}, + {"_ZN5clang11FileManagerC2ERKNS_17FileSystemOptionsE", "clang::FileManager::FileManager(clang::FileSystemOptions const&)"}, + {"_ZN5clang11FileManagerD1Ev", "clang::FileManager::~FileManager()"}, + {"_ZN5clang11FileManagerD2Ev", "clang::FileManager::~FileManager()"}, + {"_ZN5clang11FileManager12addStatCacheEPNS_19FileSystemStatCacheEb", "clang::FileManager::addStatCache(clang::FileSystemStatCache*, bool)"}, + {"_ZN5clang11FileManager15removeStatCacheEPNS_19FileSystemStatCacheE", "clang::FileManager::removeStatCache(clang::FileSystemStatCache*)"}, + {"_ZN5clang11FileManager12getDirectoryEN4llvm9StringRefE", "clang::FileManager::getDirectory(llvm::StringRef)"}, + {"_ZN5clang11FileManager12getStatValueEPKcR4statPi", "clang::FileManager::getStatValue(char const*, stat&, int*)"}, + {"_ZN5clang11FileManager7getFileEN4llvm9StringRefE", "clang::FileManager::getFile(llvm::StringRef)"}, + {"_ZN5clang11FileManager14getVirtualFileEN4llvm9StringRefExl", "clang::FileManager::getVirtualFile(llvm::StringRef, long long, long)"}, + {"_ZN5clang11FileManager17FixupRelativePathERN4llvm3sys4PathERKNS_17FileSystemOptionsE", "clang::FileManager::FixupRelativePath(llvm::sys::Path&, clang::FileSystemOptions const&)"}, + {"_ZN5clang11FileManager16getBufferForFileEPKNS_9FileEntryEPSs", "clang::FileManager::getBufferForFile(clang::FileEntry const*, std::string*)"}, + {"_ZN5clang11FileManager16getBufferForFileEN4llvm9StringRefEPSs", "clang::FileManager::getBufferForFile(llvm::StringRef, std::string*)"}, + {"_ZNK5clang11FileManager10PrintStatsEv", "clang::FileManager::PrintStats() const"}, + {"_ZN4llvm9StringMapIPN5clang9FileEntryENS_16BumpPtrAllocatorEE16GetOrCreateValueIS3_EERNS_14StringMapEntryIS3_EENS_9StringRefET_", "llvm::StringMapEntry& llvm::StringMap::GetOrCreateValue(llvm::StringRef, clang::FileEntry*)"}, + {"_ZN4llvm9StringMapIPN5clang14DirectoryEntryENS_16BumpPtrAllocatorEE16GetOrCreateValueIS3_EERNS_14StringMapEntryIS3_EENS_9StringRefET_", "llvm::StringMapEntry& llvm::StringMap::GetOrCreateValue(llvm::StringRef, clang::DirectoryEntry*)"}, + {"_ZNSt8_Rb_treeIN5clang9FileEntryES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE16_M_insert_uniqueERKS1_", "std::_Rb_tree, std::less, std::allocator>::_M_insert_unique(clang::FileEntry const&)"}, + + // {"_ZNSt8_Rb_treeISt4pairIiyES0_IKS1_N5clang14DirectoryEntryEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS5_ERKS5_", + // "std::_Rb_tree, std::pair const, clang::DirectoryEntry>, std::_Select1st const, clang::DirectoryEntry>>, std::less>, std::allocator const, clang::DirectoryEntry>>>::_M_insert_unique(std::_Rb_tree_iterator const, clang::DirectoryEntry>>, std::pair const, clang::DirectoryEntry> const&)"}, + // "std::_Rb_tree, std::pair const, clang::DirectoryEntry>, std::_Select1st< const, clang::DirectoryEntry>>, std::less>, std::allocator< const, clang::DirectoryEntry>>>::_M_insert_unique(std::_Rb_tree_iterator< const, clang::DirectoryEntry>>, const, clang::DirectoryEntry> const&)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairIiyES0_IKS1_N5clang14DirectoryEntryEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE16_M_insert_uniqueERKS5_", + // "std::_Rb_tree, std::pair const, clang::DirectoryEntry>, std::_Select1st const, clang::DirectoryEntry>>, std::less>, std::allocator const, clang::DirectoryEntry>>>::_M_insert_unique(std::pair const, clang::DirectoryEntry> const&)"}, + // "std::_Rb_tree, std::pair const, clang::DirectoryEntry>, std::_Select1st< const, clang::DirectoryEntry>>, std::less>, std::allocator< const, clang::DirectoryEntry>>>::_M_insert_unique( const, clang::DirectoryEntry> const&)" was returned + + {"_ZNSt8_Rb_treeIN5clang9FileEntryES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE8_M_eraseEPSt13_Rb_tree_nodeIS1_E", "std::_Rb_tree, std::less, std::allocator>::_M_erase(std::_Rb_tree_node*)"}, + + // {"_ZNSt8_Rb_treeISt4pairIiyES0_IKS1_N5clang14DirectoryEntryEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E", + // "std::_Rb_tree, std::pair const, clang::DirectoryEntry>, std::_Select1st const, clang::DirectoryEntry>>, std::less>, std::allocator const, clang::DirectoryEntry>>>::_M_erase(std::_Rb_tree_node const, clang::DirectoryEntry>>*)"}, + // "std::_Rb_tree, std::pair const, clang::DirectoryEntry>, std::_Select1st< const, clang::DirectoryEntry>>, std::less>, std::allocator< const, clang::DirectoryEntry>>>::_M_erase(std::_Rb_tree_node< const, clang::DirectoryEntry>>*)" was returned + + {"_ZN5clang19FileSystemStatCache3getEPKcR4statPiPS0_", "clang::FileSystemStatCache::get(char const*, stat&, int*, clang::FileSystemStatCache*)"}, + {"_ZN5clang17MemorizeStatCalls7getStatEPKcR4statPi", "clang::MemorizeStatCalls::getStat(char const*, stat&, int*)"}, + {"_ZN5clang17MemorizeStatCallsD1Ev", "clang::MemorizeStatCalls::~MemorizeStatCalls()"}, + {"_ZN5clang17MemorizeStatCallsD0Ev", "clang::MemorizeStatCalls::~MemorizeStatCalls()"}, + {"_ZN4llvm9StringMapI4statNS_16BumpPtrAllocatorEE16GetOrCreateValueIS1_EERNS_14StringMapEntryIS1_EENS_9StringRefET_", "llvm::StringMapEntry& llvm::StringMap::GetOrCreateValue(llvm::StringRef, stat)"}, + {"_ZN5clang14IdentifierInfoC1Ev", "clang::IdentifierInfo::IdentifierInfo()"}, + {"_ZN5clang14IdentifierInfoC2Ev", "clang::IdentifierInfo::IdentifierInfo()"}, + {"_ZN5clang18IdentifierIteratorD0Ev", "clang::IdentifierIterator::~IdentifierIterator()"}, + {"_ZN5clang18IdentifierIteratorD1Ev", "clang::IdentifierIterator::~IdentifierIterator()"}, + {"_ZN5clang18IdentifierIteratorD2Ev", "clang::IdentifierIterator::~IdentifierIterator()"}, + {"_ZN5clang20IdentifierInfoLookupD0Ev", "clang::IdentifierInfoLookup::~IdentifierInfoLookup()"}, + {"_ZN5clang20IdentifierInfoLookupD1Ev", "clang::IdentifierInfoLookup::~IdentifierInfoLookup()"}, + {"_ZN5clang20IdentifierInfoLookupD2Ev", "clang::IdentifierInfoLookup::~IdentifierInfoLookup()"}, + {"_ZNK5clang20IdentifierInfoLookup14getIdentifiersEv", "clang::IdentifierInfoLookup::getIdentifiers() const"}, + {"_ZN5clang24ExternalIdentifierLookupD0Ev", "clang::ExternalIdentifierLookup::~ExternalIdentifierLookup()"}, + {"_ZN5clang24ExternalIdentifierLookupD1Ev", "clang::ExternalIdentifierLookup::~ExternalIdentifierLookup()"}, + {"_ZN5clang24ExternalIdentifierLookupD2Ev", "clang::ExternalIdentifierLookup::~ExternalIdentifierLookup()"}, + {"_ZN5clang15IdentifierTableC1ERKNS_11LangOptionsEPNS_20IdentifierInfoLookupE", "clang::IdentifierTable::IdentifierTable(clang::LangOptions const&, clang::IdentifierInfoLookup*)"}, + {"_ZN5clang15IdentifierTableC2ERKNS_11LangOptionsEPNS_20IdentifierInfoLookupE", "clang::IdentifierTable::IdentifierTable(clang::LangOptions const&, clang::IdentifierInfoLookup*)"}, + {"_ZN5clang15IdentifierTable11AddKeywordsERKNS_11LangOptionsE", "clang::IdentifierTable::AddKeywords(clang::LangOptions const&)"}, + {"_ZNK5clang14IdentifierInfo14getPPKeywordIDEv", "clang::IdentifierInfo::getPPKeywordID() const"}, + {"_ZNK5clang15IdentifierTable10PrintStatsEv", "clang::IdentifierTable::PrintStats() const"}, + {"_ZN4llvm12DenseMapInfoIN5clang8SelectorEE12getHashValueES2_", "llvm::DenseMapInfo::getHashValue(clang::Selector)"}, + {"_ZNK5clang8Selector10getNumArgsEv", "clang::Selector::getNumArgs() const"}, + {"_ZNK5clang8Selector24getIdentifierInfoForSlotEj", "clang::Selector::getIdentifierInfoForSlot(unsigned int) const"}, + {"_ZNK5clang20MultiKeywordSelector7getNameEv", "clang::MultiKeywordSelector::getName() const"}, + {"_ZNK5clang8Selector11getAsStringEv", "clang::Selector::getAsString() const"}, + {"_ZN5clang13SelectorTable11getSelectorEjPPNS_14IdentifierInfoE", "clang::SelectorTable::getSelector(unsigned int, clang::IdentifierInfo**)"}, + {"_ZN5clang13SelectorTableC1Ev", "clang::SelectorTable::SelectorTable()"}, + {"_ZN5clang13SelectorTableC2Ev", "clang::SelectorTable::SelectorTable()"}, + {"_ZN5clang13SelectorTableD1Ev", "clang::SelectorTable::~SelectorTable()"}, + {"_ZN5clang13SelectorTableD2Ev", "clang::SelectorTable::~SelectorTable()"}, + {"_ZN5clang19getOperatorSpellingENS_22OverloadedOperatorKindE", "clang::getOperatorSpelling(clang::OverloadedOperatorKind)"}, + {"_ZN12_GLOBAL__N_119EmptyLookupIteratorD1Ev", "(anonymous namespace)::EmptyLookupIterator::~EmptyLookupIterator()"}, + {"_ZN12_GLOBAL__N_119EmptyLookupIteratorD0Ev", "(anonymous namespace)::EmptyLookupIterator::~EmptyLookupIterator()"}, + {"_ZN12_GLOBAL__N_119EmptyLookupIterator4NextEv", "(anonymous namespace)::EmptyLookupIterator::Next()"}, + {"_ZN4llvm10FoldingSetIN5clang20MultiKeywordSelectorEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetIN5clang20MultiKeywordSelectorEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetIN5clang20MultiKeywordSelectorEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang20MultiKeywordSelectorEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS7_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetIN5clang20MultiKeywordSelectorEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK5clang19PrettyStackTraceLoc5printERN4llvm11raw_ostreamE", "clang::PrettyStackTraceLoc::print(llvm::raw_ostream&) const"}, + {"_ZNK5clang14SourceLocation5printERN4llvm11raw_ostreamERKNS_13SourceManagerE", "clang::SourceLocation::print(llvm::raw_ostream&, clang::SourceManager const&) const"}, + {"_ZNK5clang14SourceLocation4dumpERKNS_13SourceManagerE", "clang::SourceLocation::dump(clang::SourceManager const&) const"}, + {"_ZNK5clang13FullSourceLoc9getFileIDEv", "clang::FullSourceLoc::getFileID() const"}, + {"_ZNK5clang13FullSourceLoc19getInstantiationLocEv", "clang::FullSourceLoc::getInstantiationLoc() const"}, + {"_ZNK5clang13FullSourceLoc14getSpellingLocEv", "clang::FullSourceLoc::getSpellingLoc() const"}, + {"_ZNK5clang13FullSourceLoc26getInstantiationLineNumberEPb", "clang::FullSourceLoc::getInstantiationLineNumber(bool*) const"}, + {"_ZNK5clang13FullSourceLoc28getInstantiationColumnNumberEPb", "clang::FullSourceLoc::getInstantiationColumnNumber(bool*) const"}, + {"_ZNK5clang13FullSourceLoc21getSpellingLineNumberEPb", "clang::FullSourceLoc::getSpellingLineNumber(bool*) const"}, + {"_ZNK5clang13FullSourceLoc23getSpellingColumnNumberEPb", "clang::FullSourceLoc::getSpellingColumnNumber(bool*) const"}, + {"_ZNK5clang13FullSourceLoc16isInSystemHeaderEv", "clang::FullSourceLoc::isInSystemHeader() const"}, + {"_ZNK5clang13FullSourceLoc29isBeforeInTranslationUnitThanENS_14SourceLocationE", "clang::FullSourceLoc::isBeforeInTranslationUnitThan(clang::SourceLocation) const"}, + {"_ZNK5clang13FullSourceLoc16getCharacterDataEPb", "clang::FullSourceLoc::getCharacterData(bool*) const"}, + {"_ZNK5clang13FullSourceLoc9getBufferEPb", "clang::FullSourceLoc::getBuffer(bool*) const"}, + {"_ZNK5clang13FullSourceLoc13getBufferDataEPb", "clang::FullSourceLoc::getBufferData(bool*) const"}, + {"_ZNK5clang13FullSourceLoc16getDecomposedLocEv", "clang::FullSourceLoc::getDecomposedLoc() const"}, + {"_ZN5clang19PrettyStackTraceLocD1Ev", "clang::PrettyStackTraceLoc::~PrettyStackTraceLoc()"}, + {"_ZN5clang19PrettyStackTraceLocD0Ev", "clang::PrettyStackTraceLoc::~PrettyStackTraceLoc()"}, + {"_ZN5clang6SrcMgr12ContentCacheD1Ev", "clang::SrcMgr::ContentCache::~ContentCache()"}, + {"_ZN5clang6SrcMgr12ContentCacheD2Ev", "clang::SrcMgr::ContentCache::~ContentCache()"}, + {"_ZNK5clang6SrcMgr12ContentCache18getSizeBytesMappedEv", "clang::SrcMgr::ContentCache::getSizeBytesMapped() const"}, + {"_ZNK5clang6SrcMgr12ContentCache7getSizeEv", "clang::SrcMgr::ContentCache::getSize() const"}, + {"_ZN5clang6SrcMgr12ContentCache13replaceBufferEPKN4llvm12MemoryBufferEb", "clang::SrcMgr::ContentCache::replaceBuffer(llvm::MemoryBuffer const*, bool)"}, + {"_ZNK5clang6SrcMgr12ContentCache9getBufferERNS_10DiagnosticERKNS_13SourceManagerENS_14SourceLocationEPb", "clang::SrcMgr::ContentCache::getBuffer(clang::Diagnostic&, clang::SourceManager const&, clang::SourceLocation, bool*) const"}, + {"_ZN5clang13LineTableInfo22getLineTableFilenameIDEPKcj", "clang::LineTableInfo::getLineTableFilenameID(char const*, unsigned int)"}, + {"_ZN5clang13LineTableInfo11AddLineNoteEjjji", "clang::LineTableInfo::AddLineNote(unsigned int, unsigned int, unsigned int, int)"}, + {"_ZN5clang13LineTableInfo11AddLineNoteEjjjijNS_6SrcMgr18CharacteristicKindE", "clang::LineTableInfo::AddLineNote(unsigned int, unsigned int, unsigned int, int, unsigned int, clang::SrcMgr::CharacteristicKind)"}, + {"_ZN5clang13LineTableInfo20FindNearestLineEntryEjj", "clang::LineTableInfo::FindNearestLineEntry(unsigned int, unsigned int)"}, + {"_ZN5clang13LineTableInfo8AddEntryEjRKSt6vectorINS_9LineEntryESaIS2_EE", "clang::LineTableInfo::AddEntry(unsigned int, std::vector> const&)"}, + {"_ZN5clang13SourceManager22getLineTableFilenameIDEPKcj", "clang::SourceManager::getLineTableFilenameID(char const*, unsigned int)"}, + {"_ZN5clang13SourceManager11AddLineNoteENS_14SourceLocationEji", "clang::SourceManager::AddLineNote(clang::SourceLocation, unsigned int, int)"}, + {"_ZN5clang13SourceManager11AddLineNoteENS_14SourceLocationEjibbbb", "clang::SourceManager::AddLineNote(clang::SourceLocation, unsigned int, int, bool, bool, bool, bool)"}, + {"_ZN5clang13SourceManager12getLineTableEv", "clang::SourceManager::getLineTable()"}, + {"_ZN5clang13SourceManagerC1ERNS_10DiagnosticERNS_11FileManagerE", "clang::SourceManager::SourceManager(clang::Diagnostic&, clang::FileManager&)"}, + {"_ZN5clang13SourceManagerC2ERNS_10DiagnosticERNS_11FileManagerE", "clang::SourceManager::SourceManager(clang::Diagnostic&, clang::FileManager&)"}, + {"_ZN5clang13SourceManager13clearIDTablesEv", "clang::SourceManager::clearIDTables()"}, + {"_ZN5clang13SourceManagerD1Ev", "clang::SourceManager::~SourceManager()"}, + {"_ZN5clang13SourceManagerD2Ev", "clang::SourceManager::~SourceManager()"}, + {"_ZN5clang13SourceManager22createInstantiationLocENS_14SourceLocationES1_S1_jjj", "clang::SourceManager::createInstantiationLoc(clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, unsigned int, unsigned int, unsigned int)"}, + {"_ZN5clang13SourceManager23getOrCreateContentCacheEPKNS_9FileEntryE", "clang::SourceManager::getOrCreateContentCache(clang::FileEntry const*)"}, + {"_ZN5clang13SourceManager27createMemBufferContentCacheEPKN4llvm12MemoryBufferE", "clang::SourceManager::createMemBufferContentCache(llvm::MemoryBuffer const*)"}, + {"_ZN5clang13SourceManager22PreallocateSLocEntriesEPNS_23ExternalSLocEntrySourceEjj", "clang::SourceManager::PreallocateSLocEntries(clang::ExternalSLocEntrySource*, unsigned int, unsigned int)"}, + {"_ZN5clang13SourceManager28ClearPreallocatedSLocEntriesEv", "clang::SourceManager::ClearPreallocatedSLocEntries()"}, + {"_ZN5clang13SourceManager12createFileIDEPKNS_6SrcMgr12ContentCacheENS_14SourceLocationENS1_18CharacteristicKindEjj", "clang::SourceManager::createFileID(clang::SrcMgr::ContentCache const*, clang::SourceLocation, clang::SrcMgr::CharacteristicKind, unsigned int, unsigned int)"}, + {"_ZN5clang13SourceManager22getMemoryBufferForFileEPKNS_9FileEntryEPb", "clang::SourceManager::getMemoryBufferForFile(clang::FileEntry const*, bool*)"}, + {"_ZN5clang13SourceManager20overrideFileContentsEPKNS_9FileEntryEPKN4llvm12MemoryBufferEb", "clang::SourceManager::overrideFileContents(clang::FileEntry const*, llvm::MemoryBuffer const*, bool)"}, + {"_ZNK5clang13SourceManager13getBufferDataENS_6FileIDEPb", "clang::SourceManager::getBufferData(clang::FileID, bool*) const"}, + {"_ZNK5clang13SourceManager13getFileIDSlowEj", "clang::SourceManager::getFileIDSlow(unsigned int) const"}, + {"_ZNK5clang13SourceManager27getInstantiationLocSlowCaseENS_14SourceLocationE", "clang::SourceManager::getInstantiationLocSlowCase(clang::SourceLocation) const"}, + {"_ZNK5clang13SourceManager22getSpellingLocSlowCaseENS_14SourceLocationE", "clang::SourceManager::getSpellingLocSlowCase(clang::SourceLocation) const"}, + {"_ZNK5clang13SourceManager37getDecomposedInstantiationLocSlowCaseEPKNS_6SrcMgr9SLocEntryEj", "clang::SourceManager::getDecomposedInstantiationLocSlowCase(clang::SrcMgr::SLocEntry const*, unsigned int) const"}, + {"_ZNK5clang13SourceManager32getDecomposedSpellingLocSlowCaseEPKNS_6SrcMgr9SLocEntryEj", "clang::SourceManager::getDecomposedSpellingLocSlowCase(clang::SrcMgr::SLocEntry const*, unsigned int) const"}, + {"_ZNK5clang13SourceManager23getImmediateSpellingLocENS_14SourceLocationE", "clang::SourceManager::getImmediateSpellingLoc(clang::SourceLocation) const"}, + {"_ZNK5clang13SourceManager30getImmediateInstantiationRangeENS_14SourceLocationE", "clang::SourceManager::getImmediateInstantiationRange(clang::SourceLocation) const"}, + {"_ZNK5clang13SourceManager21getInstantiationRangeENS_14SourceLocationE", "clang::SourceManager::getInstantiationRange(clang::SourceLocation) const"}, + {"_ZNK5clang13SourceManager16getCharacterDataENS_14SourceLocationEPb", "clang::SourceManager::getCharacterData(clang::SourceLocation, bool*) const"}, + {"_ZNK5clang13SourceManager15getColumnNumberENS_6FileIDEjPb", "clang::SourceManager::getColumnNumber(clang::FileID, unsigned int, bool*) const"}, + {"_ZNK5clang13SourceManager23getSpellingColumnNumberENS_14SourceLocationEPb", "clang::SourceManager::getSpellingColumnNumber(clang::SourceLocation, bool*) const"}, + {"_ZNK5clang13SourceManager28getInstantiationColumnNumberENS_14SourceLocationEPb", "clang::SourceManager::getInstantiationColumnNumber(clang::SourceLocation, bool*) const"}, + {"_ZNK5clang13SourceManager13getLineNumberENS_6FileIDEjPb", "clang::SourceManager::getLineNumber(clang::FileID, unsigned int, bool*) const"}, + {"_Z18ComputeLineNumbersRN5clang10DiagnosticEPNS_6SrcMgr12ContentCacheERN4llvm16BumpPtrAllocatorERKNS_13SourceManagerERb", "ComputeLineNumbers(clang::Diagnostic&, clang::SrcMgr::ContentCache*, llvm::BumpPtrAllocator&, clang::SourceManager const&, bool&)"}, + {"_ZNK5clang13SourceManager26getInstantiationLineNumberENS_14SourceLocationEPb", "clang::SourceManager::getInstantiationLineNumber(clang::SourceLocation, bool*) const"}, + {"_ZNK5clang13SourceManager21getSpellingLineNumberENS_14SourceLocationEPb", "clang::SourceManager::getSpellingLineNumber(clang::SourceLocation, bool*) const"}, + {"_ZNK5clang13SourceManager21getFileCharacteristicENS_14SourceLocationE", "clang::SourceManager::getFileCharacteristic(clang::SourceLocation) const"}, + {"_ZNK5clang13SourceManager13getBufferNameENS_14SourceLocationEPb", "clang::SourceManager::getBufferName(clang::SourceLocation, bool*) const"}, + {"_ZNK5clang13SourceManager14getPresumedLocENS_14SourceLocationE", "clang::SourceManager::getPresumedLoc(clang::SourceLocation) const"}, + {"_ZN5clang13SourceManager11getLocationEPKNS_9FileEntryEjj", "clang::SourceManager::getLocation(clang::FileEntry const*, unsigned int, unsigned int)"}, + {"_ZNK5clang13SourceManager25isBeforeInTranslationUnitENS_14SourceLocationES1_", "clang::SourceManager::isBeforeInTranslationUnit(clang::SourceLocation, clang::SourceLocation) const"}, + {"_Z22MoveUpIncludeHierarchyRSt4pairIN5clang6FileIDEjERKNS0_13SourceManagerE", "MoveUpIncludeHierarchy(std::pair&, clang::SourceManager const&)"}, + {"_ZNK5clang13SourceManager10PrintStatsEv", "clang::SourceManager::PrintStats() const"}, + {"_ZN5clang23ExternalSLocEntrySourceD0Ev", "clang::ExternalSLocEntrySource::~ExternalSLocEntrySource()"}, + {"_ZN5clang23ExternalSLocEntrySourceD1Ev", "clang::ExternalSLocEntrySource::~ExternalSLocEntrySource()"}, + {"_ZN5clang23ExternalSLocEntrySourceD2Ev", "clang::ExternalSLocEntrySource::~ExternalSLocEntrySource()"}, + {"_ZNSt6vectorIN5clang9LineEntryESaIS1_EEaSERKS3_", "std::vector>::operator=(std::vector> const&)"}, + {"_ZNSt6vectorIbSaIbEE6resizeEmb", "std::vector>::resize(unsigned long, bool)"}, + {"_ZNK5clang13SourceManager24getDecomposedSpellingLocENS_14SourceLocationE", "clang::SourceManager::getDecomposedSpellingLoc(clang::SourceLocation) const"}, + {"_ZNK5clang13SourceManager9getBufferENS_6FileIDEPb", "clang::SourceManager::getBuffer(clang::FileID, bool*) const"}, + {"_ZNSt6vectorIN5clang6SrcMgr9SLocEntryESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, clang::SrcMgr::SLocEntry const&)"}, + {"_ZNSt6vectorIN5clang6SrcMgr9SLocEntryESaIS2_EE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPS2_S4_EEmRKS2_", "std::vector>::_M_fill_insert(__gnu_cxx::__normal_iterator>>, unsigned long, clang::SrcMgr::SLocEntry const&)"}, + {"_ZNSt6vectorIbSaIbEE14_M_fill_insertESt13_Bit_iteratormb", "std::vector>::_M_fill_insert(std::_Bit_iterator, unsigned long, bool)"}, + {"_ZSt4fillSt13_Bit_iteratorS_RKb", "std::fill(std::_Bit_iterator, std::_Bit_iterator, bool const&)"}, + + // {"_ZNSt6__copyILb0ESt26random_access_iterator_tagE4copyISt13_Bit_iteratorS3_EET0_T_S5_S4_", + // "std::_Bit_iterator std::__copy::copy(std::_Bit_iterator, std::_Bit_iterator, std::_Bit_iterator)"}, + // got error + + + // {"_ZNSt6__copyILb0ESt26random_access_iterator_tagE4copyISt19_Bit_const_iteratorSt13_Bit_iteratorEET0_T_S6_S5_", + // "std::_Bit_iterator std::__copy::copy(std::_Bit_const_iterator, std::_Bit_const_iterator, std::_Bit_iterator)"}, + // got error + + + // {"_ZNSt15__copy_backwardILb0ESt26random_access_iterator_tagE8__copy_bISt13_Bit_iteratorS3_EET0_T_S5_S4_", + // "std::_Bit_iterator std::__copy_backward::__copy_b(std::_Bit_iterator, std::_Bit_iterator, std::_Bit_iterator)"}, + // got error + + {"_ZNSt6vectorIPN5clang6SrcMgr12ContentCacheESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, clang::SrcMgr::ContentCache* const&)"}, + {"_ZN4llvm8DenseMapIPKN5clang9FileEntryEPNS1_6SrcMgr12ContentCacheENS_12DenseMapInfoIS4_EENS8_IS7_EEE16InsertIntoBucketERKS4_RKS7_PSt4pairIS4_S7_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(clang::FileEntry const* const&, clang::SrcMgr::ContentCache* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKN5clang9FileEntryEPNS1_6SrcMgr12ContentCacheENS_12DenseMapInfoIS4_EENS8_IS7_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNSt6vectorIN5clang9LineEntryESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, clang::LineEntry const&)"}, + {"_ZNSt6vectorIN5clang9LineEntryESaIS1_EEC2ERKS3_", "std::vector>::vector(std::vector> const&)"}, + {"_ZNSt8_Rb_treeIjSt4pairIKjSt6vectorIN5clang9LineEntryESaIS4_EEESt10_Select1stIS7_ESt4lessIjESaIS7_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS7_ERKS7_", "std::_Rb_tree>>, std::_Select1st>>>, std::less, std::allocator>>>>::_M_insert_unique(std::_Rb_tree_iterator>>>, std::pair>> const&)"}, + {"_ZNSt8_Rb_treeIjSt4pairIKjSt6vectorIN5clang9LineEntryESaIS4_EEESt10_Select1stIS7_ESt4lessIjESaIS7_EE16_M_insert_uniqueERKS7_", "std::_Rb_tree>>, std::_Select1st>>>, std::less, std::allocator>>>>::_M_insert_unique(std::pair>> const&)"}, + {"_ZNSt6vectorIPN4llvm14StringMapEntryIjEESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_", "std::vector*, std::allocator*>>::_M_insert_aux(__gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>, llvm::StringMapEntry* const&)"}, + {"_ZN4llvm9StringMapIjNS_16BumpPtrAllocatorEE16GetOrCreateValueIjEERNS_14StringMapEntryIjEENS_9StringRefET_", "llvm::StringMapEntry& llvm::StringMap::GetOrCreateValue(llvm::StringRef, unsigned int)"}, + {"_ZNSt8_Rb_treeIjSt4pairIKjSt6vectorIN5clang9LineEntryESaIS4_EEESt10_Select1stIS7_ESt4lessIjESaIS7_EE8_M_eraseEPSt13_Rb_tree_nodeIS7_E", "std::_Rb_tree>>, std::_Select1st>>>, std::less, std::allocator>>>>::_M_erase(std::_Rb_tree_node>>>*)"}, + {"_ZN5clang13LineTableInfoD2Ev", "clang::LineTableInfo::~LineTableInfo()"}, + {"_ZN5clang10TargetInfoC1ERKSs", "clang::TargetInfo::TargetInfo(std::string const&)"}, + {"_ZN5clang10TargetInfoC2ERKSs", "clang::TargetInfo::TargetInfo(std::string const&)"}, + {"_ZN5clang10TargetInfoD0Ev", "clang::TargetInfo::~TargetInfo()"}, + {"_ZN5clang10TargetInfoD1Ev", "clang::TargetInfo::~TargetInfo()"}, + {"_ZN5clang10TargetInfoD2Ev", "clang::TargetInfo::~TargetInfo()"}, + {"_ZN5clang10TargetInfo11getTypeNameENS0_7IntTypeE", "clang::TargetInfo::getTypeName(clang::TargetInfo::IntType)"}, + {"_ZN5clang10TargetInfo21getTypeConstantSuffixENS0_7IntTypeE", "clang::TargetInfo::getTypeConstantSuffix(clang::TargetInfo::IntType)"}, + {"_ZNK5clang10TargetInfo12getTypeWidthENS0_7IntTypeE", "clang::TargetInfo::getTypeWidth(clang::TargetInfo::IntType) const"}, + {"_ZNK5clang10TargetInfo12getTypeAlignENS0_7IntTypeE", "clang::TargetInfo::getTypeAlign(clang::TargetInfo::IntType) const"}, + {"_ZN5clang10TargetInfo12isTypeSignedENS0_7IntTypeE", "clang::TargetInfo::isTypeSigned(clang::TargetInfo::IntType)"}, + {"_ZN5clang10TargetInfo20setForcedLangOptionsERNS_11LangOptionsE", "clang::TargetInfo::setForcedLangOptions(clang::LangOptions&)"}, + {"_ZNK5clang10TargetInfo22isValidGCCRegisterNameEN4llvm9StringRefE", "clang::TargetInfo::isValidGCCRegisterName(llvm::StringRef) const"}, + {"_ZNK5clang10TargetInfo28getNormalizedGCCRegisterNameEN4llvm9StringRefE", "clang::TargetInfo::getNormalizedGCCRegisterName(llvm::StringRef) const"}, + {"_ZNK5clang10TargetInfo24validateOutputConstraintERNS0_14ConstraintInfoE", "clang::TargetInfo::validateOutputConstraint(clang::TargetInfo::ConstraintInfo&) const"}, + {"_ZNK5clang10TargetInfo19resolveSymbolicNameERPKcPNS0_14ConstraintInfoEjRj", "clang::TargetInfo::resolveSymbolicName(char const*&, clang::TargetInfo::ConstraintInfo*, unsigned int, unsigned int&) const"}, + {"_ZNK5clang10TargetInfo23validateInputConstraintEPNS0_14ConstraintInfoEjRS1_", "clang::TargetInfo::validateInputConstraint(clang::TargetInfo::ConstraintInfo*, unsigned int, clang::TargetInfo::ConstraintInfo&) const"}, + {"_ZN5clang10TargetInfo16CreateTargetInfoERNS_10DiagnosticERNS_13TargetOptionsE", "clang::TargetInfo::CreateTargetInfo(clang::Diagnostic&, clang::TargetOptions&)"}, + {"_ZN12_GLOBAL__N_122DarwinX86_64TargetInfoC1ERKSs", "(anonymous namespace)::DarwinX86_64TargetInfo::DarwinX86_64TargetInfo(std::string const&)"}, + {"_ZN12_GLOBAL__N_116X86_64TargetInfoD1Ev", "(anonymous namespace)::X86_64TargetInfo::~X86_64TargetInfo()"}, + {"_ZN12_GLOBAL__N_116X86_64TargetInfoD0Ev", "(anonymous namespace)::X86_64TargetInfo::~X86_64TargetInfo()"}, + {"_ZNK12_GLOBAL__N_113X86TargetInfo16getTargetDefinesERKN5clang11LangOptionsERNS1_12MacroBuilderE", "(anonymous namespace)::X86TargetInfo::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const"}, + {"_ZNK12_GLOBAL__N_113X86TargetInfo17getTargetBuiltinsERPKN5clang7Builtin4InfoERj", "(anonymous namespace)::X86TargetInfo::getTargetBuiltins(clang::Builtin::Info const*&, unsigned int&) const"}, + {"_ZNK12_GLOBAL__N_116X86_64TargetInfo20getVAListDeclarationEv", "(anonymous namespace)::X86_64TargetInfo::getVAListDeclaration() const"}, + {"_ZNK12_GLOBAL__N_113X86TargetInfo17convertConstraintEc", "(anonymous namespace)::X86TargetInfo::convertConstraint(char) const"}, + {"_ZNK12_GLOBAL__N_113X86TargetInfo11getClobbersEv", "(anonymous namespace)::X86TargetInfo::getClobbers() const"}, + + // {"_ZNK12_GLOBAL__N_113X86TargetInfo18getDefaultFeaturesERKSsRN4llvm9StringMapIbNS3_15MallocAllocatorEEE", + // "(anonymous namespace)::X86TargetInfo::getDefaultFeatures(std::string const&, llvm::StringMap&) const"}, + // "(anonymous namespace)::X86TargetInfo::getDefaultFeatures(std::string const&, llvm::StringMap&) const" was returned + + {"_ZNK12_GLOBAL__N_113X86TargetInfo17setFeatureEnabledERN4llvm9StringMapIbNS1_15MallocAllocatorEEERKSsb", "(anonymous namespace)::X86TargetInfo::setFeatureEnabled(llvm::StringMap&, std::string const&, bool) const"}, + {"_ZN12_GLOBAL__N_113X86TargetInfo20HandleTargetFeaturesERSt6vectorISsSaISsEE", "(anonymous namespace)::X86TargetInfo::HandleTargetFeatures(std::vector>&)"}, + {"_ZNK12_GLOBAL__N_116X86_64TargetInfo23getEHDataRegisterNumberEj", "(anonymous namespace)::X86_64TargetInfo::getEHDataRegisterNumber(unsigned int) const"}, + + // {"_ZNK12_GLOBAL__N_113X86TargetInfo19adjustInlineAsmTypeERSsPKN4llvm4TypeERNS2_11LLVMContextE", + // "(anonymous namespace)::X86TargetInfo::adjustInlineAsmType(std::string&, llvm::Type const*, llvm::LLVMContext&) const"}, + // "(anonymous namespace)::X86TargetInfo::adjustInlineAsmType(std::string&, llvm::Type const*, std::string&::LLVMContext&) const" was returned + + {"_ZNK12_GLOBAL__N_113X86TargetInfo14getGCCRegNamesERPKPKcRj", "(anonymous namespace)::X86TargetInfo::getGCCRegNames(char const* const*&, unsigned int&) const"}, + {"_ZNK12_GLOBAL__N_113X86TargetInfo16getGCCRegAliasesERPKN5clang10TargetInfo11GCCRegAliasERj", "(anonymous namespace)::X86TargetInfo::getGCCRegAliases(clang::TargetInfo::GCCRegAlias const*&, unsigned int&) const"}, + {"_ZNK12_GLOBAL__N_113X86TargetInfo21validateAsmConstraintERPKcRN5clang10TargetInfo14ConstraintInfoE", "(anonymous namespace)::X86TargetInfo::validateAsmConstraint(char const*&, clang::TargetInfo::ConstraintInfo&) const"}, + {"_Z9DefineStdRN5clang12MacroBuilderEN4llvm9StringRefERKNS_11LangOptionsE", "DefineStd(clang::MacroBuilder&, llvm::StringRef, clang::LangOptions const&)"}, + {"_ZN12_GLOBAL__N_113X86TargetInfoD1Ev", "(anonymous namespace)::X86TargetInfo::~X86TargetInfo()"}, + {"_ZN12_GLOBAL__N_113X86TargetInfoD0Ev", "(anonymous namespace)::X86TargetInfo::~X86TargetInfo()"}, + {"_ZN12_GLOBAL__N_135VisualStudioWindowsX86_64TargetInfoD1Ev", "(anonymous namespace)::VisualStudioWindowsX86_64TargetInfo::~VisualStudioWindowsX86_64TargetInfo()"}, + {"_ZN12_GLOBAL__N_135VisualStudioWindowsX86_64TargetInfoD0Ev", "(anonymous namespace)::VisualStudioWindowsX86_64TargetInfo::~VisualStudioWindowsX86_64TargetInfo()"}, + {"_ZNK12_GLOBAL__N_135VisualStudioWindowsX86_64TargetInfo16getTargetDefinesERKN5clang11LangOptionsERNS1_12MacroBuilderE", "(anonymous namespace)::VisualStudioWindowsX86_64TargetInfo::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const"}, + {"_ZNK12_GLOBAL__N_123WindowsX86_64TargetInfo20getVAListDeclarationEv", "(anonymous namespace)::WindowsX86_64TargetInfo::getVAListDeclaration() const"}, + {"_ZNK12_GLOBAL__N_117WindowsTargetInfoINS_16X86_64TargetInfoEE12getOSDefinesERKN5clang11LangOptionsERKN4llvm6TripleERNS3_12MacroBuilderE", "(anonymous namespace)::WindowsTargetInfo<(anonymous namespace)::X86_64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const"}, + {"_ZNK12_GLOBAL__N_123WindowsX86_64TargetInfo16getTargetDefinesERKN5clang11LangOptionsERNS1_12MacroBuilderE", "(anonymous namespace)::WindowsX86_64TargetInfo::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const"}, + {"_ZNK12_GLOBAL__N_112OSTargetInfoINS_16X86_64TargetInfoEE16getTargetDefinesERKN5clang11LangOptionsERNS3_12MacroBuilderE", "(anonymous namespace)::OSTargetInfo<(anonymous namespace)::X86_64TargetInfo>::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_123WindowsX86_64TargetInfoD1Ev", "(anonymous namespace)::WindowsX86_64TargetInfo::~WindowsX86_64TargetInfo()"}, + {"_ZN12_GLOBAL__N_123WindowsX86_64TargetInfoD0Ev", "(anonymous namespace)::WindowsX86_64TargetInfo::~WindowsX86_64TargetInfo()"}, + {"_ZN12_GLOBAL__N_117WindowsTargetInfoINS_16X86_64TargetInfoEED1Ev", "(anonymous namespace)::WindowsTargetInfo<(anonymous namespace)::X86_64TargetInfo>::~WindowsTargetInfo()"}, + {"_ZN12_GLOBAL__N_117WindowsTargetInfoINS_16X86_64TargetInfoEED0Ev", "(anonymous namespace)::WindowsTargetInfo<(anonymous namespace)::X86_64TargetInfo>::~WindowsTargetInfo()"}, + {"_ZN12_GLOBAL__N_112OSTargetInfoINS_16X86_64TargetInfoEED1Ev", "(anonymous namespace)::OSTargetInfo<(anonymous namespace)::X86_64TargetInfo>::~OSTargetInfo()"}, + {"_ZN12_GLOBAL__N_112OSTargetInfoINS_16X86_64TargetInfoEED0Ev", "(anonymous namespace)::OSTargetInfo<(anonymous namespace)::X86_64TargetInfo>::~OSTargetInfo()"}, + {"_ZN12_GLOBAL__N_121MinGWX86_64TargetInfoD1Ev", "(anonymous namespace)::MinGWX86_64TargetInfo::~MinGWX86_64TargetInfo()"}, + {"_ZN12_GLOBAL__N_121MinGWX86_64TargetInfoD0Ev", "(anonymous namespace)::MinGWX86_64TargetInfo::~MinGWX86_64TargetInfo()"}, + {"_ZNK12_GLOBAL__N_121MinGWX86_64TargetInfo16getTargetDefinesERKN5clang11LangOptionsERNS1_12MacroBuilderE", "(anonymous namespace)::MinGWX86_64TargetInfo::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_117SolarisTargetInfoINS_16X86_64TargetInfoEED1Ev", "(anonymous namespace)::SolarisTargetInfo<(anonymous namespace)::X86_64TargetInfo>::~SolarisTargetInfo()"}, + {"_ZN12_GLOBAL__N_117SolarisTargetInfoINS_16X86_64TargetInfoEED0Ev", "(anonymous namespace)::SolarisTargetInfo<(anonymous namespace)::X86_64TargetInfo>::~SolarisTargetInfo()"}, + {"_ZNK12_GLOBAL__N_117SolarisTargetInfoINS_16X86_64TargetInfoEE12getOSDefinesERKN5clang11LangOptionsERKN4llvm6TripleERNS3_12MacroBuilderE", "(anonymous namespace)::SolarisTargetInfo<(anonymous namespace)::X86_64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_117FreeBSDTargetInfoINS_16X86_64TargetInfoEED1Ev", "(anonymous namespace)::FreeBSDTargetInfo<(anonymous namespace)::X86_64TargetInfo>::~FreeBSDTargetInfo()"}, + {"_ZN12_GLOBAL__N_117FreeBSDTargetInfoINS_16X86_64TargetInfoEED0Ev", "(anonymous namespace)::FreeBSDTargetInfo<(anonymous namespace)::X86_64TargetInfo>::~FreeBSDTargetInfo()"}, + {"_ZNK12_GLOBAL__N_117FreeBSDTargetInfoINS_16X86_64TargetInfoEE12getOSDefinesERKN5clang11LangOptionsERKN4llvm6TripleERNS3_12MacroBuilderE", "(anonymous namespace)::FreeBSDTargetInfo<(anonymous namespace)::X86_64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_123OpenBSDX86_64TargetInfoD1Ev", "(anonymous namespace)::OpenBSDX86_64TargetInfo::~OpenBSDX86_64TargetInfo()"}, + {"_ZN12_GLOBAL__N_123OpenBSDX86_64TargetInfoD0Ev", "(anonymous namespace)::OpenBSDX86_64TargetInfo::~OpenBSDX86_64TargetInfo()"}, + {"_ZNK12_GLOBAL__N_117OpenBSDTargetInfoINS_16X86_64TargetInfoEE12getOSDefinesERKN5clang11LangOptionsERKN4llvm6TripleERNS3_12MacroBuilderE", "(anonymous namespace)::OpenBSDTargetInfo<(anonymous namespace)::X86_64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_117OpenBSDTargetInfoINS_16X86_64TargetInfoEED1Ev", "(anonymous namespace)::OpenBSDTargetInfo<(anonymous namespace)::X86_64TargetInfo>::~OpenBSDTargetInfo()"}, + {"_ZN12_GLOBAL__N_117OpenBSDTargetInfoINS_16X86_64TargetInfoEED0Ev", "(anonymous namespace)::OpenBSDTargetInfo<(anonymous namespace)::X86_64TargetInfo>::~OpenBSDTargetInfo()"}, + {"_ZN12_GLOBAL__N_116NetBSDTargetInfoINS_16X86_64TargetInfoEED1Ev", "(anonymous namespace)::NetBSDTargetInfo<(anonymous namespace)::X86_64TargetInfo>::~NetBSDTargetInfo()"}, + {"_ZN12_GLOBAL__N_116NetBSDTargetInfoINS_16X86_64TargetInfoEED0Ev", "(anonymous namespace)::NetBSDTargetInfo<(anonymous namespace)::X86_64TargetInfo>::~NetBSDTargetInfo()"}, + {"_ZNK12_GLOBAL__N_116NetBSDTargetInfoINS_16X86_64TargetInfoEE12getOSDefinesERKN5clang11LangOptionsERKN4llvm6TripleERNS3_12MacroBuilderE", "(anonymous namespace)::NetBSDTargetInfo<(anonymous namespace)::X86_64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_122DragonFlyBSDTargetInfoINS_16X86_64TargetInfoEED1Ev", "(anonymous namespace)::DragonFlyBSDTargetInfo<(anonymous namespace)::X86_64TargetInfo>::~DragonFlyBSDTargetInfo()"}, + {"_ZN12_GLOBAL__N_122DragonFlyBSDTargetInfoINS_16X86_64TargetInfoEED0Ev", "(anonymous namespace)::DragonFlyBSDTargetInfo<(anonymous namespace)::X86_64TargetInfo>::~DragonFlyBSDTargetInfo()"}, + {"_ZNK12_GLOBAL__N_122DragonFlyBSDTargetInfoINS_16X86_64TargetInfoEE12getOSDefinesERKN5clang11LangOptionsERKN4llvm6TripleERNS3_12MacroBuilderE", "(anonymous namespace)::DragonFlyBSDTargetInfo<(anonymous namespace)::X86_64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_115LinuxTargetInfoINS_16X86_64TargetInfoEED1Ev", "(anonymous namespace)::LinuxTargetInfo<(anonymous namespace)::X86_64TargetInfo>::~LinuxTargetInfo()"}, + {"_ZN12_GLOBAL__N_115LinuxTargetInfoINS_16X86_64TargetInfoEED0Ev", "(anonymous namespace)::LinuxTargetInfo<(anonymous namespace)::X86_64TargetInfo>::~LinuxTargetInfo()"}, + {"_ZNK12_GLOBAL__N_115LinuxTargetInfoINS_16X86_64TargetInfoEE12getOSDefinesERKN5clang11LangOptionsERKN4llvm6TripleERNS3_12MacroBuilderE", "(anonymous namespace)::LinuxTargetInfo<(anonymous namespace)::X86_64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_122DarwinX86_64TargetInfoD1Ev", "(anonymous namespace)::DarwinX86_64TargetInfo::~DarwinX86_64TargetInfo()"}, + {"_ZN12_GLOBAL__N_122DarwinX86_64TargetInfoD0Ev", "(anonymous namespace)::DarwinX86_64TargetInfo::~DarwinX86_64TargetInfo()"}, + {"_ZNK12_GLOBAL__N_116DarwinTargetInfoINS_16X86_64TargetInfoEE23isValidSectionSpecifierEN4llvm9StringRefE", "(anonymous namespace)::DarwinTargetInfo<(anonymous namespace)::X86_64TargetInfo>::isValidSectionSpecifier(llvm::StringRef) const"}, + {"_ZNK12_GLOBAL__N_116DarwinTargetInfoINS_16X86_64TargetInfoEE29getStaticInitSectionSpecifierEv", "(anonymous namespace)::DarwinTargetInfo<(anonymous namespace)::X86_64TargetInfo>::getStaticInitSectionSpecifier() const"}, + {"_ZNK12_GLOBAL__N_116DarwinTargetInfoINS_16X86_64TargetInfoEE12getOSDefinesERKN5clang11LangOptionsERKN4llvm6TripleERNS3_12MacroBuilderE", "(anonymous namespace)::DarwinTargetInfo<(anonymous namespace)::X86_64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const"}, + {"_Z16getDarwinDefinesRN5clang12MacroBuilderERKNS_11LangOptionsERKN4llvm6TripleE", "getDarwinDefines(clang::MacroBuilder&, clang::LangOptions const&, llvm::Triple const&)"}, + {"_ZN12_GLOBAL__N_116DarwinTargetInfoINS_16X86_64TargetInfoEED1Ev", "(anonymous namespace)::DarwinTargetInfo<(anonymous namespace)::X86_64TargetInfo>::~DarwinTargetInfo()"}, + {"_ZN12_GLOBAL__N_116DarwinTargetInfoINS_16X86_64TargetInfoEED0Ev", "(anonymous namespace)::DarwinTargetInfo<(anonymous namespace)::X86_64TargetInfo>::~DarwinTargetInfo()"}, + {"_ZN12_GLOBAL__N_118AuroraUXTargetInfoINS_16X86_64TargetInfoEED1Ev", "(anonymous namespace)::AuroraUXTargetInfo<(anonymous namespace)::X86_64TargetInfo>::~AuroraUXTargetInfo()"}, + {"_ZN12_GLOBAL__N_118AuroraUXTargetInfoINS_16X86_64TargetInfoEED0Ev", "(anonymous namespace)::AuroraUXTargetInfo<(anonymous namespace)::X86_64TargetInfo>::~AuroraUXTargetInfo()"}, + {"_ZNK12_GLOBAL__N_118AuroraUXTargetInfoINS_16X86_64TargetInfoEE12getOSDefinesERKN5clang11LangOptionsERKN4llvm6TripleERNS3_12MacroBuilderE", "(anonymous namespace)::AuroraUXTargetInfo<(anonymous namespace)::X86_64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_116X86_32TargetInfoD1Ev", "(anonymous namespace)::X86_32TargetInfo::~X86_32TargetInfo()"}, + {"_ZN12_GLOBAL__N_116X86_32TargetInfoD0Ev", "(anonymous namespace)::X86_32TargetInfo::~X86_32TargetInfo()"}, + {"_ZNK12_GLOBAL__N_116X86_32TargetInfo20getVAListDeclarationEv", "(anonymous namespace)::X86_32TargetInfo::getVAListDeclaration() const"}, + {"_ZNK12_GLOBAL__N_116X86_32TargetInfo23getEHDataRegisterNumberEj", "(anonymous namespace)::X86_32TargetInfo::getEHDataRegisterNumber(unsigned int) const"}, + {"_ZN12_GLOBAL__N_121HaikuX86_32TargetInfoD1Ev", "(anonymous namespace)::HaikuX86_32TargetInfo::~HaikuX86_32TargetInfo()"}, + {"_ZN12_GLOBAL__N_121HaikuX86_32TargetInfoD0Ev", "(anonymous namespace)::HaikuX86_32TargetInfo::~HaikuX86_32TargetInfo()"}, + {"_ZNK12_GLOBAL__N_121HaikuX86_32TargetInfo16getTargetDefinesERKN5clang11LangOptionsERNS1_12MacroBuilderE", "(anonymous namespace)::HaikuX86_32TargetInfo::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_135VisualStudioWindowsX86_32TargetInfoD1Ev", "(anonymous namespace)::VisualStudioWindowsX86_32TargetInfo::~VisualStudioWindowsX86_32TargetInfo()"}, + {"_ZN12_GLOBAL__N_135VisualStudioWindowsX86_32TargetInfoD0Ev", "(anonymous namespace)::VisualStudioWindowsX86_32TargetInfo::~VisualStudioWindowsX86_32TargetInfo()"}, + {"_ZNK12_GLOBAL__N_135VisualStudioWindowsX86_32TargetInfo16getTargetDefinesERKN5clang11LangOptionsERNS1_12MacroBuilderE", "(anonymous namespace)::VisualStudioWindowsX86_32TargetInfo::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const"}, + {"_ZNK12_GLOBAL__N_117WindowsTargetInfoINS_16X86_32TargetInfoEE12getOSDefinesERKN5clang11LangOptionsERKN4llvm6TripleERNS3_12MacroBuilderE", "(anonymous namespace)::WindowsTargetInfo<(anonymous namespace)::X86_32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const"}, + {"_ZNK12_GLOBAL__N_123WindowsX86_32TargetInfo16getTargetDefinesERKN5clang11LangOptionsERNS1_12MacroBuilderE", "(anonymous namespace)::WindowsX86_32TargetInfo::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const"}, + {"_ZNK12_GLOBAL__N_112OSTargetInfoINS_16X86_32TargetInfoEE16getTargetDefinesERKN5clang11LangOptionsERNS3_12MacroBuilderE", "(anonymous namespace)::OSTargetInfo<(anonymous namespace)::X86_32TargetInfo>::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_123WindowsX86_32TargetInfoD1Ev", "(anonymous namespace)::WindowsX86_32TargetInfo::~WindowsX86_32TargetInfo()"}, + {"_ZN12_GLOBAL__N_123WindowsX86_32TargetInfoD0Ev", "(anonymous namespace)::WindowsX86_32TargetInfo::~WindowsX86_32TargetInfo()"}, + {"_ZN12_GLOBAL__N_117WindowsTargetInfoINS_16X86_32TargetInfoEED1Ev", "(anonymous namespace)::WindowsTargetInfo<(anonymous namespace)::X86_32TargetInfo>::~WindowsTargetInfo()"}, + {"_ZN12_GLOBAL__N_117WindowsTargetInfoINS_16X86_32TargetInfoEED0Ev", "(anonymous namespace)::WindowsTargetInfo<(anonymous namespace)::X86_32TargetInfo>::~WindowsTargetInfo()"}, + {"_ZN12_GLOBAL__N_112OSTargetInfoINS_16X86_32TargetInfoEED1Ev", "(anonymous namespace)::OSTargetInfo<(anonymous namespace)::X86_32TargetInfo>::~OSTargetInfo()"}, + {"_ZN12_GLOBAL__N_112OSTargetInfoINS_16X86_32TargetInfoEED0Ev", "(anonymous namespace)::OSTargetInfo<(anonymous namespace)::X86_32TargetInfo>::~OSTargetInfo()"}, + {"_ZN12_GLOBAL__N_121MinGWX86_32TargetInfoD1Ev", "(anonymous namespace)::MinGWX86_32TargetInfo::~MinGWX86_32TargetInfo()"}, + {"_ZN12_GLOBAL__N_121MinGWX86_32TargetInfoD0Ev", "(anonymous namespace)::MinGWX86_32TargetInfo::~MinGWX86_32TargetInfo()"}, + {"_ZNK12_GLOBAL__N_121MinGWX86_32TargetInfo16getTargetDefinesERKN5clang11LangOptionsERNS1_12MacroBuilderE", "(anonymous namespace)::MinGWX86_32TargetInfo::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_122CygwinX86_32TargetInfoD1Ev", "(anonymous namespace)::CygwinX86_32TargetInfo::~CygwinX86_32TargetInfo()"}, + {"_ZN12_GLOBAL__N_122CygwinX86_32TargetInfoD0Ev", "(anonymous namespace)::CygwinX86_32TargetInfo::~CygwinX86_32TargetInfo()"}, + {"_ZNK12_GLOBAL__N_122CygwinX86_32TargetInfo16getTargetDefinesERKN5clang11LangOptionsERNS1_12MacroBuilderE", "(anonymous namespace)::CygwinX86_32TargetInfo::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_117SolarisTargetInfoINS_16X86_32TargetInfoEED1Ev", "(anonymous namespace)::SolarisTargetInfo<(anonymous namespace)::X86_32TargetInfo>::~SolarisTargetInfo()"}, + {"_ZN12_GLOBAL__N_117SolarisTargetInfoINS_16X86_32TargetInfoEED0Ev", "(anonymous namespace)::SolarisTargetInfo<(anonymous namespace)::X86_32TargetInfo>::~SolarisTargetInfo()"}, + {"_ZNK12_GLOBAL__N_117SolarisTargetInfoINS_16X86_32TargetInfoEE12getOSDefinesERKN5clang11LangOptionsERKN4llvm6TripleERNS3_12MacroBuilderE", "(anonymous namespace)::SolarisTargetInfo<(anonymous namespace)::X86_32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_115MinixTargetInfoINS_16X86_32TargetInfoEED1Ev", "(anonymous namespace)::MinixTargetInfo<(anonymous namespace)::X86_32TargetInfo>::~MinixTargetInfo()"}, + {"_ZN12_GLOBAL__N_115MinixTargetInfoINS_16X86_32TargetInfoEED0Ev", "(anonymous namespace)::MinixTargetInfo<(anonymous namespace)::X86_32TargetInfo>::~MinixTargetInfo()"}, + {"_ZNK12_GLOBAL__N_115MinixTargetInfoINS_16X86_32TargetInfoEE12getOSDefinesERKN5clang11LangOptionsERKN4llvm6TripleERNS3_12MacroBuilderE", "(anonymous namespace)::MinixTargetInfo<(anonymous namespace)::X86_32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_117FreeBSDTargetInfoINS_16X86_32TargetInfoEED1Ev", "(anonymous namespace)::FreeBSDTargetInfo<(anonymous namespace)::X86_32TargetInfo>::~FreeBSDTargetInfo()"}, + {"_ZN12_GLOBAL__N_117FreeBSDTargetInfoINS_16X86_32TargetInfoEED0Ev", "(anonymous namespace)::FreeBSDTargetInfo<(anonymous namespace)::X86_32TargetInfo>::~FreeBSDTargetInfo()"}, + {"_ZNK12_GLOBAL__N_117FreeBSDTargetInfoINS_16X86_32TargetInfoEE12getOSDefinesERKN5clang11LangOptionsERKN4llvm6TripleERNS3_12MacroBuilderE", "(anonymous namespace)::FreeBSDTargetInfo<(anonymous namespace)::X86_32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_121OpenBSDI386TargetInfoD1Ev", "(anonymous namespace)::OpenBSDI386TargetInfo::~OpenBSDI386TargetInfo()"}, + {"_ZN12_GLOBAL__N_121OpenBSDI386TargetInfoD0Ev", "(anonymous namespace)::OpenBSDI386TargetInfo::~OpenBSDI386TargetInfo()"}, + {"_ZNK12_GLOBAL__N_117OpenBSDTargetInfoINS_16X86_32TargetInfoEE12getOSDefinesERKN5clang11LangOptionsERKN4llvm6TripleERNS3_12MacroBuilderE", "(anonymous namespace)::OpenBSDTargetInfo<(anonymous namespace)::X86_32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_117OpenBSDTargetInfoINS_16X86_32TargetInfoEED1Ev", "(anonymous namespace)::OpenBSDTargetInfo<(anonymous namespace)::X86_32TargetInfo>::~OpenBSDTargetInfo()"}, + {"_ZN12_GLOBAL__N_117OpenBSDTargetInfoINS_16X86_32TargetInfoEED0Ev", "(anonymous namespace)::OpenBSDTargetInfo<(anonymous namespace)::X86_32TargetInfo>::~OpenBSDTargetInfo()"}, + {"_ZN12_GLOBAL__N_116NetBSDTargetInfoINS_16X86_32TargetInfoEED1Ev", "(anonymous namespace)::NetBSDTargetInfo<(anonymous namespace)::X86_32TargetInfo>::~NetBSDTargetInfo()"}, + {"_ZN12_GLOBAL__N_116NetBSDTargetInfoINS_16X86_32TargetInfoEED0Ev", "(anonymous namespace)::NetBSDTargetInfo<(anonymous namespace)::X86_32TargetInfo>::~NetBSDTargetInfo()"}, + {"_ZNK12_GLOBAL__N_116NetBSDTargetInfoINS_16X86_32TargetInfoEE12getOSDefinesERKN5clang11LangOptionsERKN4llvm6TripleERNS3_12MacroBuilderE", "(anonymous namespace)::NetBSDTargetInfo<(anonymous namespace)::X86_32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_122DragonFlyBSDTargetInfoINS_16X86_32TargetInfoEED1Ev", "(anonymous namespace)::DragonFlyBSDTargetInfo<(anonymous namespace)::X86_32TargetInfo>::~DragonFlyBSDTargetInfo()"}, + {"_ZN12_GLOBAL__N_122DragonFlyBSDTargetInfoINS_16X86_32TargetInfoEED0Ev", "(anonymous namespace)::DragonFlyBSDTargetInfo<(anonymous namespace)::X86_32TargetInfo>::~DragonFlyBSDTargetInfo()"}, + {"_ZNK12_GLOBAL__N_122DragonFlyBSDTargetInfoINS_16X86_32TargetInfoEE12getOSDefinesERKN5clang11LangOptionsERKN4llvm6TripleERNS3_12MacroBuilderE", "(anonymous namespace)::DragonFlyBSDTargetInfo<(anonymous namespace)::X86_32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_115LinuxTargetInfoINS_16X86_32TargetInfoEED1Ev", "(anonymous namespace)::LinuxTargetInfo<(anonymous namespace)::X86_32TargetInfo>::~LinuxTargetInfo()"}, + {"_ZN12_GLOBAL__N_115LinuxTargetInfoINS_16X86_32TargetInfoEED0Ev", "(anonymous namespace)::LinuxTargetInfo<(anonymous namespace)::X86_32TargetInfo>::~LinuxTargetInfo()"}, + {"_ZNK12_GLOBAL__N_115LinuxTargetInfoINS_16X86_32TargetInfoEE12getOSDefinesERKN5clang11LangOptionsERKN4llvm6TripleERNS3_12MacroBuilderE", "(anonymous namespace)::LinuxTargetInfo<(anonymous namespace)::X86_32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_120DarwinI386TargetInfoD1Ev", "(anonymous namespace)::DarwinI386TargetInfo::~DarwinI386TargetInfo()"}, + {"_ZN12_GLOBAL__N_120DarwinI386TargetInfoD0Ev", "(anonymous namespace)::DarwinI386TargetInfo::~DarwinI386TargetInfo()"}, + {"_ZNK12_GLOBAL__N_116DarwinTargetInfoINS_16X86_32TargetInfoEE23isValidSectionSpecifierEN4llvm9StringRefE", "(anonymous namespace)::DarwinTargetInfo<(anonymous namespace)::X86_32TargetInfo>::isValidSectionSpecifier(llvm::StringRef) const"}, + {"_ZNK12_GLOBAL__N_116DarwinTargetInfoINS_16X86_32TargetInfoEE29getStaticInitSectionSpecifierEv", "(anonymous namespace)::DarwinTargetInfo<(anonymous namespace)::X86_32TargetInfo>::getStaticInitSectionSpecifier() const"}, + {"_ZNK12_GLOBAL__N_116DarwinTargetInfoINS_16X86_32TargetInfoEE12getOSDefinesERKN5clang11LangOptionsERKN4llvm6TripleERNS3_12MacroBuilderE", "(anonymous namespace)::DarwinTargetInfo<(anonymous namespace)::X86_32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_116DarwinTargetInfoINS_16X86_32TargetInfoEED1Ev", "(anonymous namespace)::DarwinTargetInfo<(anonymous namespace)::X86_32TargetInfo>::~DarwinTargetInfo()"}, + {"_ZN12_GLOBAL__N_116DarwinTargetInfoINS_16X86_32TargetInfoEED0Ev", "(anonymous namespace)::DarwinTargetInfo<(anonymous namespace)::X86_32TargetInfo>::~DarwinTargetInfo()"}, + {"_ZN12_GLOBAL__N_118AuroraUXTargetInfoINS_16X86_32TargetInfoEED1Ev", "(anonymous namespace)::AuroraUXTargetInfo<(anonymous namespace)::X86_32TargetInfo>::~AuroraUXTargetInfo()"}, + {"_ZN12_GLOBAL__N_118AuroraUXTargetInfoINS_16X86_32TargetInfoEED0Ev", "(anonymous namespace)::AuroraUXTargetInfo<(anonymous namespace)::X86_32TargetInfo>::~AuroraUXTargetInfo()"}, + {"_ZNK12_GLOBAL__N_118AuroraUXTargetInfoINS_16X86_32TargetInfoEE12getOSDefinesERKN5clang11LangOptionsERKN4llvm6TripleERNS3_12MacroBuilderE", "(anonymous namespace)::AuroraUXTargetInfo<(anonymous namespace)::X86_32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_113TCETargetInfoD1Ev", "(anonymous namespace)::TCETargetInfo::~TCETargetInfo()"}, + {"_ZN12_GLOBAL__N_113TCETargetInfoD0Ev", "(anonymous namespace)::TCETargetInfo::~TCETargetInfo()"}, + {"_ZNK12_GLOBAL__N_113TCETargetInfo16getTargetDefinesERKN5clang11LangOptionsERNS1_12MacroBuilderE", "(anonymous namespace)::TCETargetInfo::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const"}, + {"_ZNK12_GLOBAL__N_113TCETargetInfo17getTargetBuiltinsERPKN5clang7Builtin4InfoERj", "(anonymous namespace)::TCETargetInfo::getTargetBuiltins(clang::Builtin::Info const*&, unsigned int&) const"}, + {"_ZNK12_GLOBAL__N_113TCETargetInfo20getVAListDeclarationEv", "(anonymous namespace)::TCETargetInfo::getVAListDeclaration() const"}, + {"_ZNK12_GLOBAL__N_113TCETargetInfo11getClobbersEv", "(anonymous namespace)::TCETargetInfo::getClobbers() const"}, + {"_ZNK12_GLOBAL__N_113TCETargetInfo14getGCCRegNamesERPKPKcRj", "(anonymous namespace)::TCETargetInfo::getGCCRegNames(char const* const*&, unsigned int&) const"}, + {"_ZNK12_GLOBAL__N_113TCETargetInfo16getGCCRegAliasesERPKN5clang10TargetInfo11GCCRegAliasERj", "(anonymous namespace)::TCETargetInfo::getGCCRegAliases(clang::TargetInfo::GCCRegAlias const*&, unsigned int&) const"}, + {"_ZNK12_GLOBAL__N_113TCETargetInfo21validateAsmConstraintERPKcRN5clang10TargetInfo14ConstraintInfoE", "(anonymous namespace)::TCETargetInfo::validateAsmConstraint(char const*&, clang::TargetInfo::ConstraintInfo&) const"}, + {"_ZN12_GLOBAL__N_117SystemZTargetInfoD1Ev", "(anonymous namespace)::SystemZTargetInfo::~SystemZTargetInfo()"}, + {"_ZN12_GLOBAL__N_117SystemZTargetInfoD0Ev", "(anonymous namespace)::SystemZTargetInfo::~SystemZTargetInfo()"}, + {"_ZNK12_GLOBAL__N_117SystemZTargetInfo16getTargetDefinesERKN5clang11LangOptionsERNS1_12MacroBuilderE", "(anonymous namespace)::SystemZTargetInfo::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const"}, + {"_ZNK12_GLOBAL__N_117SystemZTargetInfo17getTargetBuiltinsERPKN5clang7Builtin4InfoERj", "(anonymous namespace)::SystemZTargetInfo::getTargetBuiltins(clang::Builtin::Info const*&, unsigned int&) const"}, + {"_ZNK12_GLOBAL__N_117SystemZTargetInfo20getVAListDeclarationEv", "(anonymous namespace)::SystemZTargetInfo::getVAListDeclaration() const"}, + {"_ZNK12_GLOBAL__N_117SystemZTargetInfo11getClobbersEv", "(anonymous namespace)::SystemZTargetInfo::getClobbers() const"}, + {"_ZNK12_GLOBAL__N_117SystemZTargetInfo14getGCCRegNamesERPKPKcRj", "(anonymous namespace)::SystemZTargetInfo::getGCCRegNames(char const* const*&, unsigned int&) const"}, + {"_ZNK12_GLOBAL__N_117SystemZTargetInfo16getGCCRegAliasesERPKN5clang10TargetInfo11GCCRegAliasERj", "(anonymous namespace)::SystemZTargetInfo::getGCCRegAliases(clang::TargetInfo::GCCRegAlias const*&, unsigned int&) const"}, + {"_ZNK12_GLOBAL__N_117SystemZTargetInfo21validateAsmConstraintERPKcRN5clang10TargetInfo14ConstraintInfoE", "(anonymous namespace)::SystemZTargetInfo::validateAsmConstraint(char const*&, clang::TargetInfo::ConstraintInfo&) const"}, + {"_ZN12_GLOBAL__N_116PS3SPUTargetInfoINS_15PPC64TargetInfoEED1Ev", "(anonymous namespace)::PS3SPUTargetInfo<(anonymous namespace)::PPC64TargetInfo>::~PS3SPUTargetInfo()"}, + {"_ZN12_GLOBAL__N_116PS3SPUTargetInfoINS_15PPC64TargetInfoEED0Ev", "(anonymous namespace)::PS3SPUTargetInfo<(anonymous namespace)::PPC64TargetInfo>::~PS3SPUTargetInfo()"}, + {"_ZNK12_GLOBAL__N_112OSTargetInfoINS_15PPC64TargetInfoEE16getTargetDefinesERKN5clang11LangOptionsERNS3_12MacroBuilderE", "(anonymous namespace)::OSTargetInfo<(anonymous namespace)::PPC64TargetInfo>::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const"}, + {"_ZNK12_GLOBAL__N_113PPCTargetInfo17getTargetBuiltinsERPKN5clang7Builtin4InfoERj", "(anonymous namespace)::PPCTargetInfo::getTargetBuiltins(clang::Builtin::Info const*&, unsigned int&) const"}, + {"_ZNK12_GLOBAL__N_115PPC64TargetInfo20getVAListDeclarationEv", "(anonymous namespace)::PPC64TargetInfo::getVAListDeclaration() const"}, + {"_ZNK12_GLOBAL__N_113PPCTargetInfo11getClobbersEv", "(anonymous namespace)::PPCTargetInfo::getClobbers() const"}, + {"_ZNK12_GLOBAL__N_113PPCTargetInfo14getGCCRegNamesERPKPKcRj", "(anonymous namespace)::PPCTargetInfo::getGCCRegNames(char const* const*&, unsigned int&) const"}, + {"_ZNK12_GLOBAL__N_113PPCTargetInfo16getGCCRegAliasesERPKN5clang10TargetInfo11GCCRegAliasERj", "(anonymous namespace)::PPCTargetInfo::getGCCRegAliases(clang::TargetInfo::GCCRegAlias const*&, unsigned int&) const"}, + {"_ZNK12_GLOBAL__N_113PPCTargetInfo21validateAsmConstraintERPKcRN5clang10TargetInfo14ConstraintInfoE", "(anonymous namespace)::PPCTargetInfo::validateAsmConstraint(char const*&, clang::TargetInfo::ConstraintInfo&) const"}, + {"_ZNK12_GLOBAL__N_116PS3SPUTargetInfoINS_15PPC64TargetInfoEE12getOSDefinesERKN5clang11LangOptionsERKN4llvm6TripleERNS3_12MacroBuilderE", "(anonymous namespace)::PS3SPUTargetInfo<(anonymous namespace)::PPC64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const"}, + {"_ZNK12_GLOBAL__N_113PPCTargetInfo16getTargetDefinesERKN5clang11LangOptionsERNS1_12MacroBuilderE", "(anonymous namespace)::PPCTargetInfo::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_112OSTargetInfoINS_15PPC64TargetInfoEED1Ev", "(anonymous namespace)::OSTargetInfo<(anonymous namespace)::PPC64TargetInfo>::~OSTargetInfo()"}, + {"_ZN12_GLOBAL__N_112OSTargetInfoINS_15PPC64TargetInfoEED0Ev", "(anonymous namespace)::OSTargetInfo<(anonymous namespace)::PPC64TargetInfo>::~OSTargetInfo()"}, + {"_ZN12_GLOBAL__N_115PPC64TargetInfoD1Ev", "(anonymous namespace)::PPC64TargetInfo::~PPC64TargetInfo()"}, + {"_ZN12_GLOBAL__N_115PPC64TargetInfoD0Ev", "(anonymous namespace)::PPC64TargetInfo::~PPC64TargetInfo()"}, + {"_ZN12_GLOBAL__N_113PPCTargetInfoD1Ev", "(anonymous namespace)::PPCTargetInfo::~PPCTargetInfo()"}, + {"_ZN12_GLOBAL__N_113PPCTargetInfoD0Ev", "(anonymous namespace)::PPCTargetInfo::~PPCTargetInfo()"}, + {"_ZN12_GLOBAL__N_117SparcV8TargetInfoD1Ev", "(anonymous namespace)::SparcV8TargetInfo::~SparcV8TargetInfo()"}, + {"_ZN12_GLOBAL__N_117SparcV8TargetInfoD0Ev", "(anonymous namespace)::SparcV8TargetInfo::~SparcV8TargetInfo()"}, + {"_ZNK12_GLOBAL__N_117SparcV8TargetInfo16getTargetDefinesERKN5clang11LangOptionsERNS1_12MacroBuilderE", "(anonymous namespace)::SparcV8TargetInfo::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const"}, + {"_ZNK12_GLOBAL__N_117SparcV8TargetInfo17getTargetBuiltinsERPKN5clang7Builtin4InfoERj", "(anonymous namespace)::SparcV8TargetInfo::getTargetBuiltins(clang::Builtin::Info const*&, unsigned int&) const"}, + {"_ZNK12_GLOBAL__N_117SparcV8TargetInfo20getVAListDeclarationEv", "(anonymous namespace)::SparcV8TargetInfo::getVAListDeclaration() const"}, + {"_ZNK12_GLOBAL__N_117SparcV8TargetInfo11getClobbersEv", "(anonymous namespace)::SparcV8TargetInfo::getClobbers() const"}, + {"_ZNK12_GLOBAL__N_117SparcV8TargetInfo17setFeatureEnabledERN4llvm9StringMapIbNS1_15MallocAllocatorEEERKSsb", "(anonymous namespace)::SparcV8TargetInfo::setFeatureEnabled(llvm::StringMap&, std::string const&, bool) const"}, + {"_ZN12_GLOBAL__N_117SparcV8TargetInfo20HandleTargetFeaturesERSt6vectorISsSaISsEE", "(anonymous namespace)::SparcV8TargetInfo::HandleTargetFeatures(std::vector>&)"}, + {"_ZNK12_GLOBAL__N_117SparcV8TargetInfo14getGCCRegNamesERPKPKcRj", "(anonymous namespace)::SparcV8TargetInfo::getGCCRegNames(char const* const*&, unsigned int&) const"}, + {"_ZNK12_GLOBAL__N_117SparcV8TargetInfo16getGCCRegAliasesERPKN5clang10TargetInfo11GCCRegAliasERj", "(anonymous namespace)::SparcV8TargetInfo::getGCCRegAliases(clang::TargetInfo::GCCRegAlias const*&, unsigned int&) const"}, + {"_ZNK12_GLOBAL__N_117SparcV8TargetInfo21validateAsmConstraintERPKcRN5clang10TargetInfo14ConstraintInfoE", "(anonymous namespace)::SparcV8TargetInfo::validateAsmConstraint(char const*&, clang::TargetInfo::ConstraintInfo&) const"}, + {"_ZN12_GLOBAL__N_124SolarisSparcV8TargetInfoD1Ev", "(anonymous namespace)::SolarisSparcV8TargetInfo::~SolarisSparcV8TargetInfo()"}, + {"_ZN12_GLOBAL__N_124SolarisSparcV8TargetInfoD0Ev", "(anonymous namespace)::SolarisSparcV8TargetInfo::~SolarisSparcV8TargetInfo()"}, + {"_ZNK12_GLOBAL__N_112OSTargetInfoINS_17SparcV8TargetInfoEE16getTargetDefinesERKN5clang11LangOptionsERNS3_12MacroBuilderE", "(anonymous namespace)::OSTargetInfo<(anonymous namespace)::SparcV8TargetInfo>::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const"}, + {"_ZNK12_GLOBAL__N_117SolarisTargetInfoINS_17SparcV8TargetInfoEE12getOSDefinesERKN5clang11LangOptionsERKN4llvm6TripleERNS3_12MacroBuilderE", "(anonymous namespace)::SolarisTargetInfo<(anonymous namespace)::SparcV8TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_117SolarisTargetInfoINS_17SparcV8TargetInfoEED1Ev", "(anonymous namespace)::SolarisTargetInfo<(anonymous namespace)::SparcV8TargetInfo>::~SolarisTargetInfo()"}, + {"_ZN12_GLOBAL__N_117SolarisTargetInfoINS_17SparcV8TargetInfoEED0Ev", "(anonymous namespace)::SolarisTargetInfo<(anonymous namespace)::SparcV8TargetInfo>::~SolarisTargetInfo()"}, + {"_ZN12_GLOBAL__N_112OSTargetInfoINS_17SparcV8TargetInfoEED1Ev", "(anonymous namespace)::OSTargetInfo<(anonymous namespace)::SparcV8TargetInfo>::~OSTargetInfo()"}, + {"_ZN12_GLOBAL__N_112OSTargetInfoINS_17SparcV8TargetInfoEED0Ev", "(anonymous namespace)::OSTargetInfo<(anonymous namespace)::SparcV8TargetInfo>::~OSTargetInfo()"}, + {"_ZN12_GLOBAL__N_125AuroraUXSparcV8TargetInfoD1Ev", "(anonymous namespace)::AuroraUXSparcV8TargetInfo::~AuroraUXSparcV8TargetInfo()"}, + {"_ZN12_GLOBAL__N_125AuroraUXSparcV8TargetInfoD0Ev", "(anonymous namespace)::AuroraUXSparcV8TargetInfo::~AuroraUXSparcV8TargetInfo()"}, + {"_ZNK12_GLOBAL__N_118AuroraUXTargetInfoINS_17SparcV8TargetInfoEE12getOSDefinesERKN5clang11LangOptionsERKN4llvm6TripleERNS3_12MacroBuilderE", "(anonymous namespace)::AuroraUXTargetInfo<(anonymous namespace)::SparcV8TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_118AuroraUXTargetInfoINS_17SparcV8TargetInfoEED1Ev", "(anonymous namespace)::AuroraUXTargetInfo<(anonymous namespace)::SparcV8TargetInfo>::~AuroraUXTargetInfo()"}, + {"_ZN12_GLOBAL__N_118AuroraUXTargetInfoINS_17SparcV8TargetInfoEED0Ev", "(anonymous namespace)::AuroraUXTargetInfo<(anonymous namespace)::SparcV8TargetInfo>::~AuroraUXTargetInfo()"}, + {"_ZN12_GLOBAL__N_116MBlazeTargetInfoD1Ev", "(anonymous namespace)::MBlazeTargetInfo::~MBlazeTargetInfo()"}, + {"_ZN12_GLOBAL__N_116MBlazeTargetInfoD0Ev", "(anonymous namespace)::MBlazeTargetInfo::~MBlazeTargetInfo()"}, + {"_ZNK12_GLOBAL__N_116MBlazeTargetInfo16getTargetDefinesERKN5clang11LangOptionsERNS1_12MacroBuilderE", "(anonymous namespace)::MBlazeTargetInfo::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const"}, + {"_ZNK12_GLOBAL__N_116MBlazeTargetInfo17getTargetBuiltinsERPKN5clang7Builtin4InfoERj", "(anonymous namespace)::MBlazeTargetInfo::getTargetBuiltins(clang::Builtin::Info const*&, unsigned int&) const"}, + {"_ZNK12_GLOBAL__N_116MBlazeTargetInfo20getVAListDeclarationEv", "(anonymous namespace)::MBlazeTargetInfo::getVAListDeclaration() const"}, + {"_ZNK12_GLOBAL__N_116MBlazeTargetInfo11getClobbersEv", "(anonymous namespace)::MBlazeTargetInfo::getClobbers() const"}, + {"_ZNK12_GLOBAL__N_116MBlazeTargetInfo14getGCCRegNamesERPKPKcRj", "(anonymous namespace)::MBlazeTargetInfo::getGCCRegNames(char const* const*&, unsigned int&) const"}, + {"_ZNK12_GLOBAL__N_116MBlazeTargetInfo16getGCCRegAliasesERPKN5clang10TargetInfo11GCCRegAliasERj", "(anonymous namespace)::MBlazeTargetInfo::getGCCRegAliases(clang::TargetInfo::GCCRegAlias const*&, unsigned int&) const"}, + {"_ZNK12_GLOBAL__N_116MBlazeTargetInfo21validateAsmConstraintERPKcRN5clang10TargetInfo14ConstraintInfoE", "(anonymous namespace)::MBlazeTargetInfo::validateAsmConstraint(char const*&, clang::TargetInfo::ConstraintInfo&) const"}, + {"_ZNK12_GLOBAL__N_116MBlazeTargetInfo15getTargetPrefixEv", "(anonymous namespace)::MBlazeTargetInfo::getTargetPrefix() const"}, + {"_ZN12_GLOBAL__N_117FreeBSDTargetInfoINS_15PPC64TargetInfoEED1Ev", "(anonymous namespace)::FreeBSDTargetInfo<(anonymous namespace)::PPC64TargetInfo>::~FreeBSDTargetInfo()"}, + {"_ZN12_GLOBAL__N_117FreeBSDTargetInfoINS_15PPC64TargetInfoEED0Ev", "(anonymous namespace)::FreeBSDTargetInfo<(anonymous namespace)::PPC64TargetInfo>::~FreeBSDTargetInfo()"}, + {"_ZNK12_GLOBAL__N_117FreeBSDTargetInfoINS_15PPC64TargetInfoEE12getOSDefinesERKN5clang11LangOptionsERKN4llvm6TripleERNS3_12MacroBuilderE", "(anonymous namespace)::FreeBSDTargetInfo<(anonymous namespace)::PPC64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_116PS3PPUTargetInfoINS_15PPC64TargetInfoEED1Ev", "(anonymous namespace)::PS3PPUTargetInfo<(anonymous namespace)::PPC64TargetInfo>::~PS3PPUTargetInfo()"}, + {"_ZN12_GLOBAL__N_116PS3PPUTargetInfoINS_15PPC64TargetInfoEED0Ev", "(anonymous namespace)::PS3PPUTargetInfo<(anonymous namespace)::PPC64TargetInfo>::~PS3PPUTargetInfo()"}, + {"_ZNK12_GLOBAL__N_116PS3PPUTargetInfoINS_15PPC64TargetInfoEE12getOSDefinesERKN5clang11LangOptionsERKN4llvm6TripleERNS3_12MacroBuilderE", "(anonymous namespace)::PS3PPUTargetInfo<(anonymous namespace)::PPC64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_121DarwinPPC64TargetInfoD1Ev", "(anonymous namespace)::DarwinPPC64TargetInfo::~DarwinPPC64TargetInfo()"}, + {"_ZN12_GLOBAL__N_121DarwinPPC64TargetInfoD0Ev", "(anonymous namespace)::DarwinPPC64TargetInfo::~DarwinPPC64TargetInfo()"}, + {"_ZNK12_GLOBAL__N_116DarwinTargetInfoINS_15PPC64TargetInfoEE23isValidSectionSpecifierEN4llvm9StringRefE", "(anonymous namespace)::DarwinTargetInfo<(anonymous namespace)::PPC64TargetInfo>::isValidSectionSpecifier(llvm::StringRef) const"}, + {"_ZNK12_GLOBAL__N_116DarwinTargetInfoINS_15PPC64TargetInfoEE29getStaticInitSectionSpecifierEv", "(anonymous namespace)::DarwinTargetInfo<(anonymous namespace)::PPC64TargetInfo>::getStaticInitSectionSpecifier() const"}, + {"_ZNK12_GLOBAL__N_116DarwinTargetInfoINS_15PPC64TargetInfoEE12getOSDefinesERKN5clang11LangOptionsERKN4llvm6TripleERNS3_12MacroBuilderE", "(anonymous namespace)::DarwinTargetInfo<(anonymous namespace)::PPC64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_116DarwinTargetInfoINS_15PPC64TargetInfoEED1Ev", "(anonymous namespace)::DarwinTargetInfo<(anonymous namespace)::PPC64TargetInfo>::~DarwinTargetInfo()"}, + {"_ZN12_GLOBAL__N_116DarwinTargetInfoINS_15PPC64TargetInfoEED0Ev", "(anonymous namespace)::DarwinTargetInfo<(anonymous namespace)::PPC64TargetInfo>::~DarwinTargetInfo()"}, + {"_ZN12_GLOBAL__N_115PPC32TargetInfoD1Ev", "(anonymous namespace)::PPC32TargetInfo::~PPC32TargetInfo()"}, + {"_ZN12_GLOBAL__N_115PPC32TargetInfoD0Ev", "(anonymous namespace)::PPC32TargetInfo::~PPC32TargetInfo()"}, + {"_ZNK12_GLOBAL__N_115PPC32TargetInfo20getVAListDeclarationEv", "(anonymous namespace)::PPC32TargetInfo::getVAListDeclaration() const"}, + {"_ZN12_GLOBAL__N_117FreeBSDTargetInfoINS_15PPC32TargetInfoEED1Ev", "(anonymous namespace)::FreeBSDTargetInfo<(anonymous namespace)::PPC32TargetInfo>::~FreeBSDTargetInfo()"}, + {"_ZN12_GLOBAL__N_117FreeBSDTargetInfoINS_15PPC32TargetInfoEED0Ev", "(anonymous namespace)::FreeBSDTargetInfo<(anonymous namespace)::PPC32TargetInfo>::~FreeBSDTargetInfo()"}, + {"_ZNK12_GLOBAL__N_112OSTargetInfoINS_15PPC32TargetInfoEE16getTargetDefinesERKN5clang11LangOptionsERNS3_12MacroBuilderE", "(anonymous namespace)::OSTargetInfo<(anonymous namespace)::PPC32TargetInfo>::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const"}, + {"_ZNK12_GLOBAL__N_117FreeBSDTargetInfoINS_15PPC32TargetInfoEE12getOSDefinesERKN5clang11LangOptionsERKN4llvm6TripleERNS3_12MacroBuilderE", "(anonymous namespace)::FreeBSDTargetInfo<(anonymous namespace)::PPC32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_112OSTargetInfoINS_15PPC32TargetInfoEED1Ev", "(anonymous namespace)::OSTargetInfo<(anonymous namespace)::PPC32TargetInfo>::~OSTargetInfo()"}, + {"_ZN12_GLOBAL__N_112OSTargetInfoINS_15PPC32TargetInfoEED0Ev", "(anonymous namespace)::OSTargetInfo<(anonymous namespace)::PPC32TargetInfo>::~OSTargetInfo()"}, + {"_ZN12_GLOBAL__N_121DarwinPPC32TargetInfoD1Ev", "(anonymous namespace)::DarwinPPC32TargetInfo::~DarwinPPC32TargetInfo()"}, + {"_ZN12_GLOBAL__N_121DarwinPPC32TargetInfoD0Ev", "(anonymous namespace)::DarwinPPC32TargetInfo::~DarwinPPC32TargetInfo()"}, + {"_ZNK12_GLOBAL__N_121DarwinPPC32TargetInfo20getVAListDeclarationEv", "(anonymous namespace)::DarwinPPC32TargetInfo::getVAListDeclaration() const"}, + {"_ZNK12_GLOBAL__N_116DarwinTargetInfoINS_15PPC32TargetInfoEE23isValidSectionSpecifierEN4llvm9StringRefE", "(anonymous namespace)::DarwinTargetInfo<(anonymous namespace)::PPC32TargetInfo>::isValidSectionSpecifier(llvm::StringRef) const"}, + {"_ZNK12_GLOBAL__N_116DarwinTargetInfoINS_15PPC32TargetInfoEE29getStaticInitSectionSpecifierEv", "(anonymous namespace)::DarwinTargetInfo<(anonymous namespace)::PPC32TargetInfo>::getStaticInitSectionSpecifier() const"}, + {"_ZNK12_GLOBAL__N_116DarwinTargetInfoINS_15PPC32TargetInfoEE12getOSDefinesERKN5clang11LangOptionsERKN4llvm6TripleERNS3_12MacroBuilderE", "(anonymous namespace)::DarwinTargetInfo<(anonymous namespace)::PPC32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_116DarwinTargetInfoINS_15PPC32TargetInfoEED1Ev", "(anonymous namespace)::DarwinTargetInfo<(anonymous namespace)::PPC32TargetInfo>::~DarwinTargetInfo()"}, + {"_ZN12_GLOBAL__N_116DarwinTargetInfoINS_15PPC32TargetInfoEED0Ev", "(anonymous namespace)::DarwinTargetInfo<(anonymous namespace)::PPC32TargetInfo>::~DarwinTargetInfo()"}, + {"_ZN12_GLOBAL__N_116MipselTargetInfoD1Ev", "(anonymous namespace)::MipselTargetInfo::~MipselTargetInfo()"}, + {"_ZN12_GLOBAL__N_116MipselTargetInfoD0Ev", "(anonymous namespace)::MipselTargetInfo::~MipselTargetInfo()"}, + {"_ZNK12_GLOBAL__N_116MipselTargetInfo16getTargetDefinesERKN5clang11LangOptionsERNS1_12MacroBuilderE", "(anonymous namespace)::MipselTargetInfo::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const"}, + {"_ZNK12_GLOBAL__N_114MipsTargetInfo17getTargetBuiltinsERPKN5clang7Builtin4InfoERj", "(anonymous namespace)::MipsTargetInfo::getTargetBuiltins(clang::Builtin::Info const*&, unsigned int&) const"}, + {"_ZNK12_GLOBAL__N_114MipsTargetInfo20getVAListDeclarationEv", "(anonymous namespace)::MipsTargetInfo::getVAListDeclaration() const"}, + {"_ZNK12_GLOBAL__N_114MipsTargetInfo11getClobbersEv", "(anonymous namespace)::MipsTargetInfo::getClobbers() const"}, + + // {"_ZNK12_GLOBAL__N_114MipsTargetInfo18getDefaultFeaturesERKSsRN4llvm9StringMapIbNS3_15MallocAllocatorEEE", + // "(anonymous namespace)::MipsTargetInfo::getDefaultFeatures(std::string const&, llvm::StringMap&) const"}, + // "(anonymous namespace)::MipsTargetInfo::getDefaultFeatures(std::string const&, llvm::StringMap&) const" was returned + + {"_ZNK12_GLOBAL__N_114MipsTargetInfo6getABIEv", "(anonymous namespace)::MipsTargetInfo::getABI() const"}, + {"_ZN12_GLOBAL__N_114MipsTargetInfo6setCPUERKSs", "(anonymous namespace)::MipsTargetInfo::setCPU(std::string const&)"}, + {"_ZN12_GLOBAL__N_114MipsTargetInfo6setABIERKSs", "(anonymous namespace)::MipsTargetInfo::setABI(std::string const&)"}, + {"_ZNK12_GLOBAL__N_114MipsTargetInfo14getGCCRegNamesERPKPKcRj", "(anonymous namespace)::MipsTargetInfo::getGCCRegNames(char const* const*&, unsigned int&) const"}, + {"_ZNK12_GLOBAL__N_114MipsTargetInfo16getGCCRegAliasesERPKN5clang10TargetInfo11GCCRegAliasERj", "(anonymous namespace)::MipsTargetInfo::getGCCRegAliases(clang::TargetInfo::GCCRegAlias const*&, unsigned int&) const"}, + {"_ZNK12_GLOBAL__N_114MipsTargetInfo21validateAsmConstraintERPKcRN5clang10TargetInfo14ConstraintInfoE", "(anonymous namespace)::MipsTargetInfo::validateAsmConstraint(char const*&, clang::TargetInfo::ConstraintInfo&) const"}, + {"_ZNK12_GLOBAL__N_114MipsTargetInfo14getArchDefinesERKN5clang11LangOptionsERNS1_12MacroBuilderE", "(anonymous namespace)::MipsTargetInfo::getArchDefines(clang::LangOptions const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_114MipsTargetInfoD1Ev", "(anonymous namespace)::MipsTargetInfo::~MipsTargetInfo()"}, + {"_ZN12_GLOBAL__N_114MipsTargetInfoD0Ev", "(anonymous namespace)::MipsTargetInfo::~MipsTargetInfo()"}, + {"_ZNK12_GLOBAL__N_114MipsTargetInfo16getTargetDefinesERKN5clang11LangOptionsERNS1_12MacroBuilderE", "(anonymous namespace)::MipsTargetInfo::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_115LinuxTargetInfoINS_16MipselTargetInfoEED1Ev", "(anonymous namespace)::LinuxTargetInfo<(anonymous namespace)::MipselTargetInfo>::~LinuxTargetInfo()"}, + {"_ZN12_GLOBAL__N_115LinuxTargetInfoINS_16MipselTargetInfoEED0Ev", "(anonymous namespace)::LinuxTargetInfo<(anonymous namespace)::MipselTargetInfo>::~LinuxTargetInfo()"}, + {"_ZNK12_GLOBAL__N_112OSTargetInfoINS_16MipselTargetInfoEE16getTargetDefinesERKN5clang11LangOptionsERNS3_12MacroBuilderE", "(anonymous namespace)::OSTargetInfo<(anonymous namespace)::MipselTargetInfo>::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const"}, + {"_ZNK12_GLOBAL__N_115LinuxTargetInfoINS_16MipselTargetInfoEE12getOSDefinesERKN5clang11LangOptionsERKN4llvm6TripleERNS3_12MacroBuilderE", "(anonymous namespace)::LinuxTargetInfo<(anonymous namespace)::MipselTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_112OSTargetInfoINS_16MipselTargetInfoEED1Ev", "(anonymous namespace)::OSTargetInfo<(anonymous namespace)::MipselTargetInfo>::~OSTargetInfo()"}, + {"_ZN12_GLOBAL__N_112OSTargetInfoINS_16MipselTargetInfoEED0Ev", "(anonymous namespace)::OSTargetInfo<(anonymous namespace)::MipselTargetInfo>::~OSTargetInfo()"}, + {"_ZN12_GLOBAL__N_113PSPTargetInfoINS_16MipselTargetInfoEED1Ev", "(anonymous namespace)::PSPTargetInfo<(anonymous namespace)::MipselTargetInfo>::~PSPTargetInfo()"}, + {"_ZN12_GLOBAL__N_113PSPTargetInfoINS_16MipselTargetInfoEED0Ev", "(anonymous namespace)::PSPTargetInfo<(anonymous namespace)::MipselTargetInfo>::~PSPTargetInfo()"}, + {"_ZNK12_GLOBAL__N_113PSPTargetInfoINS_16MipselTargetInfoEE12getOSDefinesERKN5clang11LangOptionsERKN4llvm6TripleERNS3_12MacroBuilderE", "(anonymous namespace)::PSPTargetInfo<(anonymous namespace)::MipselTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_115LinuxTargetInfoINS_14MipsTargetInfoEED1Ev", "(anonymous namespace)::LinuxTargetInfo<(anonymous namespace)::MipsTargetInfo>::~LinuxTargetInfo()"}, + {"_ZN12_GLOBAL__N_115LinuxTargetInfoINS_14MipsTargetInfoEED0Ev", "(anonymous namespace)::LinuxTargetInfo<(anonymous namespace)::MipsTargetInfo>::~LinuxTargetInfo()"}, + {"_ZNK12_GLOBAL__N_112OSTargetInfoINS_14MipsTargetInfoEE16getTargetDefinesERKN5clang11LangOptionsERNS3_12MacroBuilderE", "(anonymous namespace)::OSTargetInfo<(anonymous namespace)::MipsTargetInfo>::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const"}, + {"_ZNK12_GLOBAL__N_115LinuxTargetInfoINS_14MipsTargetInfoEE12getOSDefinesERKN5clang11LangOptionsERKN4llvm6TripleERNS3_12MacroBuilderE", "(anonymous namespace)::LinuxTargetInfo<(anonymous namespace)::MipsTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_112OSTargetInfoINS_14MipsTargetInfoEED1Ev", "(anonymous namespace)::OSTargetInfo<(anonymous namespace)::MipsTargetInfo>::~OSTargetInfo()"}, + {"_ZN12_GLOBAL__N_112OSTargetInfoINS_14MipsTargetInfoEED0Ev", "(anonymous namespace)::OSTargetInfo<(anonymous namespace)::MipsTargetInfo>::~OSTargetInfo()"}, + {"_ZN12_GLOBAL__N_113PSPTargetInfoINS_14MipsTargetInfoEED1Ev", "(anonymous namespace)::PSPTargetInfo<(anonymous namespace)::MipsTargetInfo>::~PSPTargetInfo()"}, + {"_ZN12_GLOBAL__N_113PSPTargetInfoINS_14MipsTargetInfoEED0Ev", "(anonymous namespace)::PSPTargetInfo<(anonymous namespace)::MipsTargetInfo>::~PSPTargetInfo()"}, + {"_ZNK12_GLOBAL__N_113PSPTargetInfoINS_14MipsTargetInfoEE12getOSDefinesERKN5clang11LangOptionsERKN4llvm6TripleERNS3_12MacroBuilderE", "(anonymous namespace)::PSPTargetInfo<(anonymous namespace)::MipsTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_116MSP430TargetInfoD1Ev", "(anonymous namespace)::MSP430TargetInfo::~MSP430TargetInfo()"}, + {"_ZN12_GLOBAL__N_116MSP430TargetInfoD0Ev", "(anonymous namespace)::MSP430TargetInfo::~MSP430TargetInfo()"}, + {"_ZNK12_GLOBAL__N_116MSP430TargetInfo16getTargetDefinesERKN5clang11LangOptionsERNS1_12MacroBuilderE", "(anonymous namespace)::MSP430TargetInfo::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const"}, + {"_ZNK12_GLOBAL__N_116MSP430TargetInfo17getTargetBuiltinsERPKN5clang7Builtin4InfoERj", "(anonymous namespace)::MSP430TargetInfo::getTargetBuiltins(clang::Builtin::Info const*&, unsigned int&) const"}, + {"_ZNK12_GLOBAL__N_116MSP430TargetInfo20getVAListDeclarationEv", "(anonymous namespace)::MSP430TargetInfo::getVAListDeclaration() const"}, + {"_ZNK12_GLOBAL__N_116MSP430TargetInfo11getClobbersEv", "(anonymous namespace)::MSP430TargetInfo::getClobbers() const"}, + {"_ZNK12_GLOBAL__N_116MSP430TargetInfo14getGCCRegNamesERPKPKcRj", "(anonymous namespace)::MSP430TargetInfo::getGCCRegNames(char const* const*&, unsigned int&) const"}, + {"_ZNK12_GLOBAL__N_116MSP430TargetInfo16getGCCRegAliasesERPKN5clang10TargetInfo11GCCRegAliasERj", "(anonymous namespace)::MSP430TargetInfo::getGCCRegAliases(clang::TargetInfo::GCCRegAlias const*&, unsigned int&) const"}, + {"_ZNK12_GLOBAL__N_116MSP430TargetInfo21validateAsmConstraintERPKcRN5clang10TargetInfo14ConstraintInfoE", "(anonymous namespace)::MSP430TargetInfo::validateAsmConstraint(char const*&, clang::TargetInfo::ConstraintInfo&) const"}, + {"_ZN12_GLOBAL__N_118BlackfinTargetInfoD1Ev", "(anonymous namespace)::BlackfinTargetInfo::~BlackfinTargetInfo()"}, + {"_ZN12_GLOBAL__N_118BlackfinTargetInfoD0Ev", "(anonymous namespace)::BlackfinTargetInfo::~BlackfinTargetInfo()"}, + {"_ZNK12_GLOBAL__N_118BlackfinTargetInfo16getTargetDefinesERKN5clang11LangOptionsERNS1_12MacroBuilderE", "(anonymous namespace)::BlackfinTargetInfo::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const"}, + {"_ZNK12_GLOBAL__N_118BlackfinTargetInfo17getTargetBuiltinsERPKN5clang7Builtin4InfoERj", "(anonymous namespace)::BlackfinTargetInfo::getTargetBuiltins(clang::Builtin::Info const*&, unsigned int&) const"}, + {"_ZNK12_GLOBAL__N_118BlackfinTargetInfo20getVAListDeclarationEv", "(anonymous namespace)::BlackfinTargetInfo::getVAListDeclaration() const"}, + {"_ZNK12_GLOBAL__N_118BlackfinTargetInfo11getClobbersEv", "(anonymous namespace)::BlackfinTargetInfo::getClobbers() const"}, + {"_ZNK12_GLOBAL__N_118BlackfinTargetInfo14getGCCRegNamesERPKPKcRj", "(anonymous namespace)::BlackfinTargetInfo::getGCCRegNames(char const* const*&, unsigned int&) const"}, + {"_ZNK12_GLOBAL__N_118BlackfinTargetInfo16getGCCRegAliasesERPKN5clang10TargetInfo11GCCRegAliasERj", "(anonymous namespace)::BlackfinTargetInfo::getGCCRegAliases(clang::TargetInfo::GCCRegAlias const*&, unsigned int&) const"}, + {"_ZNK12_GLOBAL__N_118BlackfinTargetInfo21validateAsmConstraintERPKcRN5clang10TargetInfo14ConstraintInfoE", "(anonymous namespace)::BlackfinTargetInfo::validateAsmConstraint(char const*&, clang::TargetInfo::ConstraintInfo&) const"}, + {"_ZN12_GLOBAL__N_113ARMTargetInfoC2ERKSs", "(anonymous namespace)::ARMTargetInfo::ARMTargetInfo(std::string const&)"}, + {"_ZN12_GLOBAL__N_113ARMTargetInfoD1Ev", "(anonymous namespace)::ARMTargetInfo::~ARMTargetInfo()"}, + {"_ZN12_GLOBAL__N_113ARMTargetInfoD0Ev", "(anonymous namespace)::ARMTargetInfo::~ARMTargetInfo()"}, + {"_ZNK12_GLOBAL__N_113ARMTargetInfo16getTargetDefinesERKN5clang11LangOptionsERNS1_12MacroBuilderE", "(anonymous namespace)::ARMTargetInfo::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const"}, + {"_ZNK12_GLOBAL__N_113ARMTargetInfo17getTargetBuiltinsERPKN5clang7Builtin4InfoERj", "(anonymous namespace)::ARMTargetInfo::getTargetBuiltins(clang::Builtin::Info const*&, unsigned int&) const"}, + {"_ZNK12_GLOBAL__N_113ARMTargetInfo20getVAListDeclarationEv", "(anonymous namespace)::ARMTargetInfo::getVAListDeclaration() const"}, + {"_ZNK12_GLOBAL__N_113ARMTargetInfo11getClobbersEv", "(anonymous namespace)::ARMTargetInfo::getClobbers() const"}, + + // {"_ZNK12_GLOBAL__N_113ARMTargetInfo18getDefaultFeaturesERKSsRN4llvm9StringMapIbNS3_15MallocAllocatorEEE", + // "(anonymous namespace)::ARMTargetInfo::getDefaultFeatures(std::string const&, llvm::StringMap&) const"}, + // "(anonymous namespace)::ARMTargetInfo::getDefaultFeatures(std::string const&, llvm::StringMap&) const" was returned + + {"_ZNK12_GLOBAL__N_113ARMTargetInfo6getABIEv", "(anonymous namespace)::ARMTargetInfo::getABI() const"}, + {"_ZN12_GLOBAL__N_113ARMTargetInfo6setCPUERKSs", "(anonymous namespace)::ARMTargetInfo::setCPU(std::string const&)"}, + {"_ZN12_GLOBAL__N_113ARMTargetInfo6setABIERKSs", "(anonymous namespace)::ARMTargetInfo::setABI(std::string const&)"}, + {"_ZNK12_GLOBAL__N_113ARMTargetInfo17setFeatureEnabledERN4llvm9StringMapIbNS1_15MallocAllocatorEEERKSsb", "(anonymous namespace)::ARMTargetInfo::setFeatureEnabled(llvm::StringMap&, std::string const&, bool) const"}, + {"_ZN12_GLOBAL__N_113ARMTargetInfo20HandleTargetFeaturesERSt6vectorISsSaISsEE", "(anonymous namespace)::ARMTargetInfo::HandleTargetFeatures(std::vector>&)"}, + {"_ZNK12_GLOBAL__N_113ARMTargetInfo14getGCCRegNamesERPKPKcRj", "(anonymous namespace)::ARMTargetInfo::getGCCRegNames(char const* const*&, unsigned int&) const"}, + {"_ZNK12_GLOBAL__N_113ARMTargetInfo16getGCCRegAliasesERPKN5clang10TargetInfo11GCCRegAliasERj", "(anonymous namespace)::ARMTargetInfo::getGCCRegAliases(clang::TargetInfo::GCCRegAlias const*&, unsigned int&) const"}, + {"_ZNK12_GLOBAL__N_113ARMTargetInfo21validateAsmConstraintERPKcRN5clang10TargetInfo14ConstraintInfoE", "(anonymous namespace)::ARMTargetInfo::validateAsmConstraint(char const*&, clang::TargetInfo::ConstraintInfo&) const"}, + {"_ZN12_GLOBAL__N_113ARMTargetInfo18getCPUDefineSuffixEN4llvm9StringRefE", "(anonymous namespace)::ARMTargetInfo::getCPUDefineSuffix(llvm::StringRef)"}, + {"_ZN12_GLOBAL__N_117FreeBSDTargetInfoINS_13ARMTargetInfoEED1Ev", "(anonymous namespace)::FreeBSDTargetInfo<(anonymous namespace)::ARMTargetInfo>::~FreeBSDTargetInfo()"}, + {"_ZN12_GLOBAL__N_117FreeBSDTargetInfoINS_13ARMTargetInfoEED0Ev", "(anonymous namespace)::FreeBSDTargetInfo<(anonymous namespace)::ARMTargetInfo>::~FreeBSDTargetInfo()"}, + {"_ZNK12_GLOBAL__N_112OSTargetInfoINS_13ARMTargetInfoEE16getTargetDefinesERKN5clang11LangOptionsERNS3_12MacroBuilderE", "(anonymous namespace)::OSTargetInfo<(anonymous namespace)::ARMTargetInfo>::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const"}, + {"_ZNK12_GLOBAL__N_117FreeBSDTargetInfoINS_13ARMTargetInfoEE12getOSDefinesERKN5clang11LangOptionsERKN4llvm6TripleERNS3_12MacroBuilderE", "(anonymous namespace)::FreeBSDTargetInfo<(anonymous namespace)::ARMTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_112OSTargetInfoINS_13ARMTargetInfoEED1Ev", "(anonymous namespace)::OSTargetInfo<(anonymous namespace)::ARMTargetInfo>::~OSTargetInfo()"}, + {"_ZN12_GLOBAL__N_112OSTargetInfoINS_13ARMTargetInfoEED0Ev", "(anonymous namespace)::OSTargetInfo<(anonymous namespace)::ARMTargetInfo>::~OSTargetInfo()"}, + {"_ZN12_GLOBAL__N_119DarwinARMTargetInfoD1Ev", "(anonymous namespace)::DarwinARMTargetInfo::~DarwinARMTargetInfo()"}, + {"_ZN12_GLOBAL__N_119DarwinARMTargetInfoD0Ev", "(anonymous namespace)::DarwinARMTargetInfo::~DarwinARMTargetInfo()"}, + {"_ZNK12_GLOBAL__N_116DarwinTargetInfoINS_13ARMTargetInfoEE23isValidSectionSpecifierEN4llvm9StringRefE", "(anonymous namespace)::DarwinTargetInfo<(anonymous namespace)::ARMTargetInfo>::isValidSectionSpecifier(llvm::StringRef) const"}, + {"_ZNK12_GLOBAL__N_116DarwinTargetInfoINS_13ARMTargetInfoEE29getStaticInitSectionSpecifierEv", "(anonymous namespace)::DarwinTargetInfo<(anonymous namespace)::ARMTargetInfo>::getStaticInitSectionSpecifier() const"}, + {"_ZNK12_GLOBAL__N_119DarwinARMTargetInfo12getOSDefinesERKN5clang11LangOptionsERKN4llvm6TripleERNS1_12MacroBuilderE", "(anonymous namespace)::DarwinARMTargetInfo::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_116DarwinTargetInfoINS_13ARMTargetInfoEED1Ev", "(anonymous namespace)::DarwinTargetInfo<(anonymous namespace)::ARMTargetInfo>::~DarwinTargetInfo()"}, + {"_ZN12_GLOBAL__N_116DarwinTargetInfoINS_13ARMTargetInfoEED0Ev", "(anonymous namespace)::DarwinTargetInfo<(anonymous namespace)::ARMTargetInfo>::~DarwinTargetInfo()"}, + {"_ZNK12_GLOBAL__N_116DarwinTargetInfoINS_13ARMTargetInfoEE12getOSDefinesERKN5clang11LangOptionsERKN4llvm6TripleERNS3_12MacroBuilderE", "(anonymous namespace)::DarwinTargetInfo<(anonymous namespace)::ARMTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const"}, + {"_ZN12_GLOBAL__N_115LinuxTargetInfoINS_13ARMTargetInfoEED1Ev", "(anonymous namespace)::LinuxTargetInfo<(anonymous namespace)::ARMTargetInfo>::~LinuxTargetInfo()"}, + {"_ZN12_GLOBAL__N_115LinuxTargetInfoINS_13ARMTargetInfoEED0Ev", "(anonymous namespace)::LinuxTargetInfo<(anonymous namespace)::ARMTargetInfo>::~LinuxTargetInfo()"}, + {"_ZNK12_GLOBAL__N_115LinuxTargetInfoINS_13ARMTargetInfoEE12getOSDefinesERKN5clang11LangOptionsERKN4llvm6TripleERNS3_12MacroBuilderE", "(anonymous namespace)::LinuxTargetInfo<(anonymous namespace)::ARMTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const"}, + {"_ZN5clang10TargetInfo9setCXXABIERKSs", "clang::TargetInfo::setCXXABI(std::string const&)"}, + {"_ZNK5clang10TargetInfo31useGlobalsForAutomaticVariablesEv", "clang::TargetInfo::useGlobalsForAutomaticVariables() const"}, + {"_ZNK5clang10TargetInfo18getCFStringSectionEv", "clang::TargetInfo::getCFStringSection() const"}, + {"_ZNK5clang10TargetInfo18getNSStringSectionEv", "clang::TargetInfo::getNSStringSection() const"}, + {"_ZNK5clang10TargetInfo31getNSStringNonFragileABISectionEv", "clang::TargetInfo::getNSStringNonFragileABISection() const"}, + {"_ZNK5clang10TargetInfo23isValidSectionSpecifierEN4llvm9StringRefE", "clang::TargetInfo::isValidSectionSpecifier(llvm::StringRef) const"}, + {"_ZNK5clang10TargetInfo6getABIEv", "clang::TargetInfo::getABI() const"}, + {"_ZNK5clang10TargetInfo9getCXXABIEv", "clang::TargetInfo::getCXXABI() const"}, + {"_ZN5clang10TargetInfo6setCPUERKSs", "clang::TargetInfo::setCPU(std::string const&)"}, + {"_ZN5clang10TargetInfo6setABIERKSs", "clang::TargetInfo::setABI(std::string const&)"}, + {"_ZN5clang10TargetInfo9setCXXABIENS_12TargetCXXABIE", "clang::TargetInfo::setCXXABI(clang::TargetCXXABI)"}, + {"_ZNK5clang10TargetInfo29getStaticInitSectionSpecifierEv", "clang::TargetInfo::getStaticInitSectionSpecifier() const"}, + {"_ZNK5clang10TargetInfo16getPointerWidthVEj", "clang::TargetInfo::getPointerWidthV(unsigned int) const"}, + {"_ZNK5clang10TargetInfo16getPointerAlignVEj", "clang::TargetInfo::getPointerAlignV(unsigned int) const"}, + {"_ZNK5clang10TargetInfo15getPtrDiffTypeVEj", "clang::TargetInfo::getPtrDiffTypeV(unsigned int) const"}, + {"_ZN5clang12MacroBuilder11defineMacroERKN4llvm5TwineES4_", "clang::MacroBuilder::defineMacro(llvm::Twine const&, llvm::Twine const&)"}, + {"_ZNK5clang10TargetInfo23getEHDataRegisterNumberEj", "clang::TargetInfo::getEHDataRegisterNumber(unsigned int) const"}, + {"_ZNK5clang10TargetInfo17convertConstraintEc", "clang::TargetInfo::convertConstraint(char) const"}, + + // {"_ZNK5clang10TargetInfo18getDefaultFeaturesERKSsRN4llvm9StringMapIbNS3_15MallocAllocatorEEE", + // "clang::TargetInfo::getDefaultFeatures(std::string const&, llvm::StringMap&) const"}, + // "clang::TargetInfo::getDefaultFeatures(std::string const&, llvm::StringMap&) const" was returned + + {"_ZNK5clang10TargetInfo17setFeatureEnabledERN4llvm9StringMapIbNS1_15MallocAllocatorEEERKSsb", "clang::TargetInfo::setFeatureEnabled(llvm::StringMap&, std::string const&, bool) const"}, + {"_ZN5clang10TargetInfo20HandleTargetFeaturesERSt6vectorISsSaISsEE", "clang::TargetInfo::HandleTargetFeatures(std::vector>&)"}, + + // {"_ZNK5clang10TargetInfo19adjustInlineAsmTypeERSsPKN4llvm4TypeERNS2_11LLVMContextE", + // "clang::TargetInfo::adjustInlineAsmType(std::string&, llvm::Type const*, llvm::LLVMContext&) const"}, + // "clang::TargetInfo::adjustInlineAsmType(std::string&, llvm::Type const*, std::string&::LLVMContext&) const" was returned + + + // {"_ZSt6__findIN9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEEEA16_cET_S8_S8_RKT0_St26random_access_iterator_tag", + // "__gnu_cxx::__normal_iterator>> std::__find<__gnu_cxx::__normal_iterator>>, char [16]>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, char const (&) [16], std::random_access_iterator_tag)"}, + // "std::string* std::__find<__gnu_cxx::__normal_iterator>>, char [16]>(char [16], char [16], std::allocator const&, std::random_access_iterator_tag)" was returned + + + // {"_ZSt6__findIN9__gnu_cxx17__normal_iteratorIPSsSt6vectorISsSaISsEEEEA12_cET_S8_S8_RKT0_St26random_access_iterator_tag", + // "__gnu_cxx::__normal_iterator>> std::__find<__gnu_cxx::__normal_iterator>>, char [12]>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, char const (&) [12], std::random_access_iterator_tag)"}, + // "std::string* std::__find<__gnu_cxx::__normal_iterator>>, char [12]>(char [12], char [12], std::allocator const&, std::random_access_iterator_tag)" was returned + + + // {"_ZN4llvm12StringSwitchIPKcS2_E5CasesILj10ELj13ELj14ELj14EEERS3_RAT__S1_RAT0__S1_RAT1__S1_RAT2__S1_RKS2_", + // "llvm::StringSwitch& llvm::StringSwitch::Cases<10u, 13u, 14u, 14u>(char const (&) [10u], char const (&) [13u], char const (&) [14u], char const (&) [14u], char const* const&)"}, + // "llvm::StringSwitch& llvm::StringSwitch::Cases<10, 13, 14, 14>(char const [char const*]&, char const [10]&, char const [13]&, char const [14]&, char const* const&)" was returned + + + // {"_ZN4llvm12StringSwitchIPKcS2_E5CasesILj9ELj11ELj8ELj8ELj5EEERS3_RAT__S1_RAT0__S1_RAT1__S1_RAT2__S1_RAT3__S1_RKS2_", + // "llvm::StringSwitch& llvm::StringSwitch::Cases<9u, 11u, 8u, 8u, 5u>(char const (&) [9u], char const (&) [11u], char const (&) [8u], char const (&) [8u], char const (&) [5u], char const* const&)"}, + // "llvm::StringSwitch& llvm::StringSwitch::Cases<9, 11, 8, 8, 5>(char const [char const*]&, char const [9]&, char const [11]&, char const [8]&, char const [5]&, char const* const&)" was returned + + + // {"_ZN4llvm12StringSwitchIPKcS2_E5CasesILj9ELj7ELj8ELj8ELj8EEERS3_RAT__S1_RAT0__S1_RAT1__S1_RAT2__S1_RAT3__S1_RKS2_", + // "llvm::StringSwitch& llvm::StringSwitch::Cases<9u, 7u, 8u, 8u, 8u>(char const (&) [9u], char const (&) [7u], char const (&) [8u], char const (&) [8u], char const (&) [8u], char const* const&)"}, + // got error + + + // {"_ZN4llvm12StringSwitchIPKcS2_E5CasesILj6ELj10ELj10ELj10EEERS3_RAT__S1_RAT0__S1_RAT1__S1_RAT2__S1_RKS2_", + // "llvm::StringSwitch& llvm::StringSwitch::Cases<6u, 10u, 10u, 10u>(char const (&) [6u], char const (&) [10u], char const (&) [10u], char const (&) [10u], char const* const&)"}, + // got error + + + // {"_ZN4llvm12StringSwitchIPKcS2_E5CasesILj7ELj9ELj9EEERS3_RAT__S1_RAT0__S1_RAT1__S1_RKS2_", + // "llvm::StringSwitch& llvm::StringSwitch::Cases<7u, 9u, 9u>(char const (&) [7u], char const (&) [9u], char const (&) [9u], char const* const&)"}, + // "llvm::StringSwitch& llvm::StringSwitch::Cases<7, 9, 9>(char const [char const*]&, char const [7]&, char const [9]&, char const* const&)" was returned + + + // {"_ZN4llvm12StringSwitchIPKcS2_E5CasesILj12ELj12ELj7EEERS3_RAT__S1_RAT0__S1_RAT1__S1_RKS2_", + // "llvm::StringSwitch& llvm::StringSwitch::Cases<12u, 12u, 7u>(char const (&) [12u], char const (&) [12u], char const (&) [7u], char const* const&)"}, + // "llvm::StringSwitch& llvm::StringSwitch::Cases<12, 12, 7>(char const [char const*]&, char const [12]&, char const [7]&, char const* const&)" was returned + + {"_ZN5clang3tok12getTokenNameENS0_9TokenKindE", "clang::tok::getTokenName(clang::tok::TokenKind)"}, + {"_ZN5clang3tok22getTokenSimpleSpellingENS0_9TokenKindE", "clang::tok::getTokenSimpleSpelling(clang::tok::TokenKind)"}, + {"_ZN5clang22getClangRepositoryPathEv", "clang::getClangRepositoryPath()"}, + {"_ZN5clang16getClangRevisionEv", "clang::getClangRevision()"}, + {"_ZN5clang29getClangFullRepositoryVersionEv", "clang::getClangFullRepositoryVersion()"}, + {"_ZN5clang19getClangFullVersionEv", "clang::getClangFullVersion()"}, + {"_ZN4llvm26initializeArgPromotionPassERNS_12PassRegistryE", "llvm::initializeArgPromotionPass(llvm::PassRegistry&)"}, + {"_ZN4llvm27createArgumentPromotionPassEj", "llvm::createArgumentPromotionPass(unsigned int)"}, + {"_ZN12_GLOBAL__N_112ArgPromotionD1Ev", "(anonymous namespace)::ArgPromotion::~ArgPromotion()"}, + {"_ZN12_GLOBAL__N_112ArgPromotionD0Ev", "(anonymous namespace)::ArgPromotion::~ArgPromotion()"}, + {"_ZNK12_GLOBAL__N_112ArgPromotion16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::ArgPromotion::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_112ArgPromotion8runOnSCCERN4llvm12CallGraphSCCE", "(anonymous namespace)::ArgPromotion::runOnSCC(llvm::CallGraphSCC&)"}, + {"_ZNK12_GLOBAL__N_112ArgPromotion23isSafeToPromoteArgumentEPN4llvm8ArgumentEb", "(anonymous namespace)::ArgPromotion::isSafeToPromoteArgument(llvm::Argument*, bool) const"}, + + // {"_ZN12_GLOBAL__N_112ArgPromotion11DoPromotionEPN4llvm8FunctionERNS1_11SmallPtrSetIPNS1_8ArgumentELj8EEES8_", + // "(anonymous namespace)::ArgPromotion::DoPromotion(llvm::Function*, llvm::SmallPtrSet&, llvm::SmallPtrSet&)"}, + // "(anonymous namespace)::ArgPromotion::DoPromotion(llvm::Function*, llvm::SmallPtrSet&, llvm::SmallPtrSet&)" was returned + + {"_Z15MarkIndicesSafeRKSt6vectorIySaIyEERSt3setIS1_St4lessIS1_ESaIS1_EE", "MarkIndicesSafe(std::vector> const&, std::set>, std::less>>, std::allocator>>>&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_112ArgPromotionEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::ArgPromotion>()"}, + {"_ZNK4llvm16CallGraphSCCPass27getPotentialPassManagerTypeEv", "llvm::CallGraphSCCPass::getPotentialPassManagerType() const"}, + {"_ZN4llvm16CallGraphSCCPass16doInitializationERNS_9CallGraphE", "llvm::CallGraphSCCPass::doInitialization(llvm::CallGraph&)"}, + {"_ZN4llvm16CallGraphSCCPass14doFinalizationERNS_9CallGraphE", "llvm::CallGraphSCCPass::doFinalization(llvm::CallGraph&)"}, + {"_ZNSt3mapIPN4llvm8ArgumentESt3setISt6vectorIySaIyEESt4lessIS6_ESaIS6_EES7_IS2_ESaISt4pairIKS2_SA_EEEixERSD_", "std::map>, std::less>>, std::allocator>>>, std::less, std::allocator>, std::less>>, std::allocator>>>>>>::operator[](llvm::Argument* const&)"}, + {"_ZNSt3mapISt6vectorIySaIyEEPN4llvm8LoadInstESt4lessIS2_ESaISt4pairIKS2_S5_EEEixERS9_", "std::map>, llvm::LoadInst*, std::less>>, std::allocator> const, llvm::LoadInst*>>>::operator[](std::vector> const&)"}, + {"_ZNSt8_Rb_treeIPN4llvm8ArgumentESt4pairIKS2_St3setISt6vectorIySaIyEESt4lessIS8_ESaIS8_EEESt10_Select1stISD_ES9_IS2_ESaISD_EE8_M_eraseEPSt13_Rb_tree_nodeISD_E", "std::_Rb_tree>, std::less>>, std::allocator>>>>, std::_Select1st>, std::less>>, std::allocator>>>>>, std::less, std::allocator>, std::less>>, std::allocator>>>>>>::_M_erase(std::_Rb_tree_node>, std::less>>, std::allocator>>>>>*)"}, + {"_ZNSt8_Rb_treeISt6vectorIySaIyEES2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE8_M_eraseEPSt13_Rb_tree_nodeIS2_E", "std::_Rb_tree>, std::vector>, std::_Identity>>, std::less>>, std::allocator>>>::_M_erase(std::_Rb_tree_node>>*)"}, + {"_ZNSt8_Rb_treeISt6vectorIySaIyEESt4pairIKS2_PN4llvm8LoadInstEESt10_Select1stIS8_ESt4lessIS2_ESaIS8_EE8_M_eraseEPSt13_Rb_tree_nodeIS8_E", "std::_Rb_tree>, std::pair> const, llvm::LoadInst*>, std::_Select1st> const, llvm::LoadInst*>>, std::less>>, std::allocator> const, llvm::LoadInst*>>>::_M_erase(std::_Rb_tree_node> const, llvm::LoadInst*>>*)"}, + + // {"_ZN4llvm17GetElementPtrInstC2IN9__gnu_cxx17__normal_iteratorIPPNS_5ValueESt6vectorIS5_SaIS5_EEEEEES5_T_SB_jRKNS_5TwineEPNS_11InstructionE", + // "llvm::GetElementPtrInst::GetElementPtrInst<__gnu_cxx::__normal_iterator>>>(llvm::Value*, __gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, unsigned int, llvm::Twine const&, llvm::Instruction*)"}, + // got error + + {"_ZNSt8_Rb_treeISt6vectorIySaIyEESt4pairIKS2_PN4llvm8LoadInstEESt10_Select1stIS8_ESt4lessIS2_ESaIS8_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS8_ERKS8_", "std::_Rb_tree>, std::pair> const, llvm::LoadInst*>, std::_Select1st> const, llvm::LoadInst*>>, std::less>>, std::allocator> const, llvm::LoadInst*>>>::_M_insert_unique(std::_Rb_tree_iterator> const, llvm::LoadInst*>>, std::pair> const, llvm::LoadInst*> const&)"}, + {"_ZNSt8_Rb_treeISt6vectorIySaIyEESt4pairIKS2_PN4llvm8LoadInstEESt10_Select1stIS8_ESt4lessIS2_ESaIS8_EE16_M_insert_uniqueERKS8_", "std::_Rb_tree>, std::pair> const, llvm::LoadInst*>, std::_Select1st> const, llvm::LoadInst*>>, std::less>>, std::allocator> const, llvm::LoadInst*>>>::_M_insert_unique(std::pair> const, llvm::LoadInst*> const&)"}, + {"_ZNSt8_Rb_treeISt6vectorIySaIyEESt4pairIKS2_PN4llvm8LoadInstEESt10_Select1stIS8_ESt4lessIS2_ESaIS8_EE14_M_create_nodeERKS8_", "std::_Rb_tree>, std::pair> const, llvm::LoadInst*>, std::_Select1st> const, llvm::LoadInst*>>, std::less>>, std::allocator> const, llvm::LoadInst*>>>::_M_create_node(std::pair> const, llvm::LoadInst*> const&)"}, + {"_ZNSt8_Rb_treeISt6vectorIySaIyEES2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE16_M_insert_uniqueERKS2_", "std::_Rb_tree>, std::vector>, std::_Identity>>, std::less>>, std::allocator>>>::_M_insert_unique(std::vector> const&)"}, + {"_ZNSt8_Rb_treeISt6vectorIySaIyEES2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE14_M_create_nodeERKS2_", "std::_Rb_tree>, std::vector>, std::_Identity>>, std::less>>, std::allocator>>>::_M_create_node(std::vector> const&)"}, + {"_ZNSt8_Rb_treeISt6vectorIySaIyEES2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE7_M_copyEPKSt13_Rb_tree_nodeIS2_EPSA_", "std::_Rb_tree>, std::vector>, std::_Identity>>, std::less>>, std::allocator>>>::_M_copy(std::_Rb_tree_node>> const*, std::_Rb_tree_node>>*)"}, + {"_ZNSt8_Rb_treeIPN4llvm8ArgumentESt4pairIKS2_St3setISt6vectorIySaIyEESt4lessIS8_ESaIS8_EEESt10_Select1stISD_ES9_IS2_ESaISD_EE16_M_insert_uniqueESt17_Rb_tree_iteratorISD_ERKSD_", "std::_Rb_tree>, std::less>>, std::allocator>>>>, std::_Select1st>, std::less>>, std::allocator>>>>>, std::less, std::allocator>, std::less>>, std::allocator>>>>>>::_M_insert_unique(std::_Rb_tree_iterator>, std::less>>, std::allocator>>>>>, std::pair>, std::less>>, std::allocator>>>> const&)"}, + {"_ZNSt8_Rb_treeIPN4llvm8ArgumentESt4pairIKS2_St3setISt6vectorIySaIyEESt4lessIS8_ESaIS8_EEESt10_Select1stISD_ES9_IS2_ESaISD_EE9_M_insertEPSt18_Rb_tree_node_baseSK_RKSD_", "std::_Rb_tree>, std::less>>, std::allocator>>>>, std::_Select1st>, std::less>>, std::allocator>>>>>, std::less, std::allocator>, std::less>>, std::allocator>>>>>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair>, std::less>>, std::allocator>>>> const&)"}, + {"_ZNSt8_Rb_treeIPN4llvm8ArgumentESt4pairIKS2_St3setISt6vectorIySaIyEESt4lessIS8_ESaIS8_EEESt10_Select1stISD_ES9_IS2_ESaISD_EE16_M_insert_uniqueERKSD_", "std::_Rb_tree>, std::less>>, std::allocator>>>>, std::_Select1st>, std::less>>, std::allocator>>>>>, std::less, std::allocator>, std::less>>, std::allocator>>>>>>::_M_insert_unique(std::pair>, std::less>>, std::allocator>>>> const&)"}, + + // {"_ZN4llvm11df_iteratorINS_7InverseIPNS_10BasicBlockEEENS_11SmallPtrSetIS3_Lj16EEELb1ENS_11GraphTraitsIS4_EEE6toNextEv", + // "llvm::df_iterator, llvm::SmallPtrSet, true, llvm::GraphTraits>>::toNext()"}, + // "llvm::df_iterator, llvm::SmallPtrSet, true, llvm::GraphTraits>>::toNext()" was returned + + + // {"_ZNSt6vectorISt4pairIN4llvm14PointerIntPairIPNS1_10BasicBlockELj1EjNS1_21PointerLikeTypeTraitsIS4_EEEENS1_12PredIteratorIS3_NS1_18value_use_iteratorINS1_4UserEEEEEESaISD_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPSD_SF_EERKSD_", + // "std::vector>, llvm::PredIterator>>, std::allocator>, llvm::PredIterator>>>>::_M_insert_aux(__gnu_cxx::__normal_iterator>, llvm::PredIterator>>*, std::vector>, llvm::PredIterator>>, std::allocator>, llvm::PredIterator>>>>>, std::pair>, llvm::PredIterator>> const&)"}, + // "std::vector>, llvm::PredIterator>>, std::allocator>, llvm::PredIterator>>>>::_M_insert_aux(__gnu_cxx::__normal_iterator>, llvm::PredIterator>>*, std::vector>, llvm::PredIterator>>, std::allocator>, llvm::PredIterator>>>>>, std::pair>, llvm::PredIterator>> const&)" was returned + + + // {"_ZNSt6vectorISt4pairIN4llvm14PointerIntPairIPNS1_10BasicBlockELj1EjNS1_21PointerLikeTypeTraitsIS4_EEEENS1_12PredIteratorIS3_NS1_18value_use_iteratorINS1_4UserEEEEEESaISD_EEC2ERKSF_", + // "std::vector>, llvm::PredIterator>>, std::allocator>, llvm::PredIterator>>>>::vector(std::vector>, llvm::PredIterator>>, std::allocator>, llvm::PredIterator>>>> const&)"}, + // "std::vector>, llvm::PredIterator>>, std::allocator>, llvm::PredIterator>>>>::vector(std::vector>, llvm::PredIterator>>, std::allocator>, llvm::PredIterator>>>> const&)" was returned + + + // {"_ZN4llvm11df_iteratorINS_7InverseIPNS_10BasicBlockEEENS_11SmallPtrSetIS3_Lj16EEELb1ENS_11GraphTraitsIS4_EEEC2ES3_RS6_", + // "llvm::df_iterator, llvm::SmallPtrSet, true, llvm::GraphTraits>>::df_iterator(llvm::BasicBlock*, llvm::SmallPtrSet&)"}, + // "llvm::df_iterator, llvm::SmallPtrSet, true, llvm::GraphTraits>>::df_iterator(llvm::BasicBlock*, llvm::SmallPtrSet&)" was returned + + {"_ZNSt8_Rb_treeISt6vectorIySaIyEES2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE4findERKS2_", "std::_Rb_tree>, std::vector>, std::_Identity>>, std::less>>, std::allocator>>>::find(std::vector> const&)"}, + {"_ZNSt8_Rb_treeISt6vectorIySaIyEES2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE16_M_insert_uniqueESt23_Rb_tree_const_iteratorIS2_ERKS2_", "std::_Rb_tree>, std::vector>, std::_Identity>>, std::less>>, std::allocator>>>::_M_insert_unique(std::_Rb_tree_const_iterator>>, std::vector> const&)"}, + {"_ZN4llvm16CallGraphSCCPassD1Ev", "llvm::CallGraphSCCPass::~CallGraphSCCPass()"}, + {"_ZN4llvm16CallGraphSCCPassD0Ev", "llvm::CallGraphSCCPass::~CallGraphSCCPass()"}, + {"_ZN4llvm27initializeConstantMergePassERNS_12PassRegistryE", "llvm::initializeConstantMergePass(llvm::PassRegistry&)"}, + {"_ZN4llvm23createConstantMergePassEv", "llvm::createConstantMergePass()"}, + {"_ZN12_GLOBAL__N_113ConstantMergeD1Ev", "(anonymous namespace)::ConstantMerge::~ConstantMerge()"}, + {"_ZN12_GLOBAL__N_113ConstantMergeD0Ev", "(anonymous namespace)::ConstantMerge::~ConstantMerge()"}, + {"_ZN12_GLOBAL__N_113ConstantMerge11runOnModuleERN4llvm6ModuleE", "(anonymous namespace)::ConstantMerge::runOnModule(llvm::Module&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_113ConstantMergeEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::ConstantMerge>()"}, + {"_ZN4llvm8DenseMapIPNS_8ConstantEPNS_14GlobalVariableENS_12DenseMapInfoIS2_EENS5_IS4_EEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm8DenseMapIPNS_8ConstantEPNS_14GlobalVariableENS_12DenseMapInfoIS2_EENS5_IS4_EEE16InsertIntoBucketERKS2_RKS4_PSt4pairIS2_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::Constant* const&, llvm::GlobalVariable* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_8ConstantEPNS_14GlobalVariableENS_12DenseMapInfoIS2_EENS5_IS4_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm17initializeDAEPassERNS_12PassRegistryE", "llvm::initializeDAEPass(llvm::PassRegistry&)"}, + {"_ZN4llvm17initializeDAHPassERNS_12PassRegistryE", "llvm::initializeDAHPass(llvm::PassRegistry&)"}, + {"_ZN4llvm28createDeadArgEliminationPassEv", "llvm::createDeadArgEliminationPass()"}, + {"_ZN4llvm24createDeadArgHackingPassEv", "llvm::createDeadArgHackingPass()"}, + {"_ZN12_GLOBAL__N_13DAHD1Ev", "(anonymous namespace)::DAH::~DAH()"}, + {"_ZN12_GLOBAL__N_13DAHD0Ev", "(anonymous namespace)::DAH::~DAH()"}, + {"_ZN12_GLOBAL__N_13DAE11runOnModuleERN4llvm6ModuleE", "(anonymous namespace)::DAE::runOnModule(llvm::Module&)"}, + {"_ZNK12_GLOBAL__N_13DAH19ShouldHackArgumentsEv", "(anonymous namespace)::DAH::ShouldHackArguments() const"}, + {"_ZNSt3setIN12_GLOBAL__N_13DAE8RetOrArgESt4lessIS2_ESaIS2_EE5eraseERKS2_", "std::set<(anonymous namespace)::DAE::RetOrArg, std::less<(anonymous namespace)::DAE::RetOrArg>, std::allocator<(anonymous namespace)::DAE::RetOrArg>>::erase((anonymous namespace)::DAE::RetOrArg const&)"}, + {"_ZNSt8_Rb_treeIN12_GLOBAL__N_13DAE8RetOrArgES2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE8_M_eraseEPSt13_Rb_tree_nodeIS2_E", "std::_Rb_tree<(anonymous namespace)::DAE::RetOrArg, (anonymous namespace)::DAE::RetOrArg, std::_Identity<(anonymous namespace)::DAE::RetOrArg>, std::less<(anonymous namespace)::DAE::RetOrArg>, std::allocator<(anonymous namespace)::DAE::RetOrArg>>::_M_erase(std::_Rb_tree_node<(anonymous namespace)::DAE::RetOrArg>*)"}, + {"_ZN12_GLOBAL__N_13DAE8MarkLiveERKN4llvm8FunctionE", "(anonymous namespace)::DAE::MarkLive(llvm::Function const&)"}, + + // {"_ZN12_GLOBAL__N_13DAE9MarkValueERKNS0_8RetOrArgENS0_8LivenessERKN4llvm11SmallVectorIS1_Lj5EEE", + // "(anonymous namespace)::DAE::MarkValue((anonymous namespace)::DAE::RetOrArg const&, (anonymous namespace)::DAE::Liveness, llvm::SmallVector<(anonymous namespace)::DAE::RetOrArg, 5u> const&)"}, + // "(anonymous namespace)::DAE::MarkValue((anonymous namespace)::DAE::RetOrArg const&, (anonymous namespace)::DAE::Liveness, llvm::SmallVector<(anonymous namespace)::DAE::RetOrArg, 5> const&)" was returned + + {"_ZN12_GLOBAL__N_13DAE8MarkLiveERKNS0_8RetOrArgE", "(anonymous namespace)::DAE::MarkLive((anonymous namespace)::DAE::RetOrArg const&)"}, + {"_ZN12_GLOBAL__N_13DAE17PropagateLivenessERKNS0_8RetOrArgE", "(anonymous namespace)::DAE::PropagateLiveness((anonymous namespace)::DAE::RetOrArg const&)"}, + {"_ZNSt8_Rb_treeIN12_GLOBAL__N_13DAE8RetOrArgESt4pairIKS2_S2_ESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E", "std::_Rb_tree<(anonymous namespace)::DAE::RetOrArg, std::pair<(anonymous namespace)::DAE::RetOrArg const, (anonymous namespace)::DAE::RetOrArg>, std::_Select1st>, std::less<(anonymous namespace)::DAE::RetOrArg>, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + + // {"_ZN12_GLOBAL__N_13DAE9SurveyUseEN4llvm18value_use_iteratorIKNS1_4UserEEERNS1_11SmallVectorINS0_8RetOrArgELj5EEEj", + // "(anonymous namespace)::DAE::SurveyUse(llvm::value_use_iterator, llvm::SmallVector<(anonymous namespace)::DAE::RetOrArg, 5u>&, unsigned int)"}, + // "(anonymous namespace)::DAE::SurveyUse(llvm::value_use_iterator, llvm::SmallVector<(anonymous namespace)::DAE::RetOrArg, 5>&, unsigned int)" was returned + + + // {"_ZN12_GLOBAL__N_13DAE13MarkIfNotLiveENS0_8RetOrArgERN4llvm11SmallVectorIS1_Lj5EEE", + // "(anonymous namespace)::DAE::MarkIfNotLive((anonymous namespace)::DAE::RetOrArg, llvm::SmallVector<(anonymous namespace)::DAE::RetOrArg, 5u>&)"}, + // "(anonymous namespace)::DAE::MarkIfNotLive((anonymous namespace)::DAE::RetOrArg, llvm::SmallVector<(anonymous namespace)::DAE::RetOrArg, 5>&)" was returned + + {"_ZN4llvm23SmallVectorTemplateBaseIN12_GLOBAL__N_13DAE8RetOrArgELb0EE4growEm", "llvm::SmallVectorTemplateBase<(anonymous namespace)::DAE::RetOrArg, false>::grow(unsigned long)"}, + + // {"_ZN4llvm11SmallVectorIN12_GLOBAL__N_13DAE8RetOrArgELj5EEC1ERKS4_", + // "llvm::SmallVector<(anonymous namespace)::DAE::RetOrArg, 5u>::SmallVector(llvm::SmallVector<(anonymous namespace)::DAE::RetOrArg, 5u> const&)"}, + // "llvm::SmallVector<(anonymous namespace)::DAE::RetOrArg, 5>::SmallVector(llvm::SmallVector<(anonymous namespace)::DAE::RetOrArg, 5> const&)" was returned + + + // {"_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorIN12_GLOBAL__N_13DAE8RetOrArgELj5EEELb0EE4growEm", + // "llvm::SmallVectorTemplateBase, false>::grow(unsigned long)"}, + // "llvm::SmallVectorTemplateBase, false>::grow(unsigned long)" was returned + + {"_ZN12_GLOBAL__N_13DAED1Ev", "(anonymous namespace)::DAE::~DAE()"}, + {"_ZN12_GLOBAL__N_13DAED0Ev", "(anonymous namespace)::DAE::~DAE()"}, + {"_ZNK12_GLOBAL__N_13DAE19ShouldHackArgumentsEv", "(anonymous namespace)::DAE::ShouldHackArguments() const"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_13DAHEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::DAH>()"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_13DAEEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::DAE>()"}, + + // {"_ZN4llvm8CallInstC2IN9__gnu_cxx17__normal_iteratorIPPNS_5ValueESt6vectorIS5_SaIS5_EEEEEES5_T_SB_RKNS_5TwineEPNS_11InstructionE", + // "llvm::CallInst::CallInst<__gnu_cxx::__normal_iterator>>>(llvm::Value*, __gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, llvm::Twine const&, llvm::Instruction*)"}, + // got error + + + // {"_ZN4llvm10InvokeInstC2IN9__gnu_cxx17__normal_iteratorIPPNS_5ValueESt6vectorIS5_SaIS5_EEEEEES5_PNS_10BasicBlockESC_T_SD_jRKNS_5TwineEPNS_11InstructionE", + // "llvm::InvokeInst::InvokeInst<__gnu_cxx::__normal_iterator>>>(llvm::Value*, llvm::BasicBlock*, llvm::BasicBlock*, __gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, unsigned int, llvm::Twine const&, llvm::Instruction*)"}, + // got error + + + // {"_ZN4llvm11SmallVectorIiLj5EEC2EjRKi", + // "llvm::SmallVector::SmallVector(unsigned int, int const&)"}, + // "llvm::SmallVector::SmallVector(unsigned int, int const&)" was returned + + {"_ZNSt8_Rb_treeIPKN4llvm8FunctionES3_St9_IdentityIS3_ESt4lessIS3_ESaIS3_EE16_M_insert_uniqueERKS3_", "std::_Rb_tree, std::less, std::allocator>::_M_insert_unique(llvm::Function const* const&)"}, + + // {"_ZNSt6vectorIPN4llvm5ValueESaIS2_EE13_M_assign_auxIPNS0_3UseEEEvT_S8_St20forward_iterator_tag", + // "void std::vector>::_M_assign_aux(llvm::Use*, llvm::Use*, std::forward_iterator_tag)"}, + // got error + + {"_ZNSt8_Rb_treeIPKN4llvm8FunctionES3_St9_IdentityIS3_ESt4lessIS3_ESaIS3_EE8_M_eraseEPSt13_Rb_tree_nodeIS3_E", "std::_Rb_tree, std::less, std::allocator>::_M_erase(std::_Rb_tree_node*)"}, + {"_ZN4llvm17initializeDTEPassERNS_12PassRegistryE", "llvm::initializeDTEPass(llvm::PassRegistry&)"}, + {"_ZN4llvm29createDeadTypeEliminationPassEv", "llvm::createDeadTypeEliminationPass()"}, + {"_ZN12_GLOBAL__N_13DTED1Ev", "(anonymous namespace)::DTE::~DTE()"}, + {"_ZN12_GLOBAL__N_13DTED0Ev", "(anonymous namespace)::DTE::~DTE()"}, + {"_ZNK12_GLOBAL__N_13DTE16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::DTE::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_13DTE11runOnModuleERN4llvm6ModuleE", "(anonymous namespace)::DTE::runOnModule(llvm::Module&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_13DTEEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::DTE>()"}, + {"_ZNSt8_Rb_treeIPKN4llvm4TypeES3_St9_IdentityIS3_ESt4lessIS3_ESaIS3_EE8_M_eraseEPSt13_Rb_tree_nodeIS3_E", "std::_Rb_tree, std::less, std::allocator>::_M_erase(std::_Rb_tree_node*)"}, + {"_ZNSt8_Rb_treeIPKN4llvm4TypeES3_St9_IdentityIS3_ESt4lessIS3_ESaIS3_EE5eraseESt17_Rb_tree_iteratorIS3_ESB_", "std::_Rb_tree, std::less, std::allocator>::erase(std::_Rb_tree_iterator, std::_Rb_tree_iterator)"}, + {"_ZNSt8_Rb_treeIPKN4llvm4TypeES3_St9_IdentityIS3_ESt4lessIS3_ESaIS3_EE7_M_copyEPKSt13_Rb_tree_nodeIS3_EPSB_", "std::_Rb_tree, std::less, std::allocator>::_M_copy(std::_Rb_tree_node const*, std::_Rb_tree_node*)"}, + {"_ZN4llvm27initializeFunctionAttrsPassERNS_12PassRegistryE", "llvm::initializeFunctionAttrsPass(llvm::PassRegistry&)"}, + {"_ZN4llvm23createFunctionAttrsPassEv", "llvm::createFunctionAttrsPass()"}, + {"_ZN12_GLOBAL__N_113FunctionAttrsD1Ev", "(anonymous namespace)::FunctionAttrs::~FunctionAttrs()"}, + {"_ZN12_GLOBAL__N_113FunctionAttrsD0Ev", "(anonymous namespace)::FunctionAttrs::~FunctionAttrs()"}, + {"_ZNK12_GLOBAL__N_113FunctionAttrs16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::FunctionAttrs::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_113FunctionAttrs8runOnSCCERN4llvm12CallGraphSCCE", "(anonymous namespace)::FunctionAttrs::runOnSCC(llvm::CallGraphSCC&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_113FunctionAttrsEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::FunctionAttrs>()"}, + {"_ZN4llvm12UniqueVectorIPNS_5ValueEE6insertERKS2_", "llvm::UniqueVector::insert(llvm::Value* const&)"}, + {"_ZNSt8_Rb_treeIPN4llvm5ValueESt4pairIKS2_jESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZNSt8_Rb_treeIPN4llvm5ValueESt4pairIKS2_jESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS5_ERKS5_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIPN4llvm5ValueESt4pairIKS2_jESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE16_M_insert_uniqueERKS5_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZN4llvm23initializeGlobalDCEPassERNS_12PassRegistryE", "llvm::initializeGlobalDCEPass(llvm::PassRegistry&)"}, + {"_ZN4llvm19createGlobalDCEPassEv", "llvm::createGlobalDCEPass()"}, + {"_ZN12_GLOBAL__N_19GlobalDCED1Ev", "(anonymous namespace)::GlobalDCE::~GlobalDCE()"}, + {"_ZN12_GLOBAL__N_19GlobalDCED0Ev", "(anonymous namespace)::GlobalDCE::~GlobalDCE()"}, + {"_ZN12_GLOBAL__N_19GlobalDCE11runOnModuleERN4llvm6ModuleE", "(anonymous namespace)::GlobalDCE::runOnModule(llvm::Module&)"}, + {"_ZN12_GLOBAL__N_19GlobalDCE14GlobalIsNeededEPN4llvm11GlobalValueE", "(anonymous namespace)::GlobalDCE::GlobalIsNeeded(llvm::GlobalValue*)"}, + {"_ZN12_GLOBAL__N_19GlobalDCE23MarkUsedGlobalsAsNeededEPN4llvm8ConstantE", "(anonymous namespace)::GlobalDCE::MarkUsedGlobalsAsNeeded(llvm::Constant*)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_19GlobalDCEEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::GlobalDCE>()"}, + {"_ZNSt6vectorIPN4llvm11GlobalAliasESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::GlobalAlias* const&)"}, + {"_ZN4llvm23initializeGlobalOptPassERNS_12PassRegistryE", "llvm::initializeGlobalOptPass(llvm::PassRegistry&)"}, + {"_ZN4llvm25createGlobalOptimizerPassEv", "llvm::createGlobalOptimizerPass()"}, + {"_ZN12_GLOBAL__N_19GlobalOptD1Ev", "(anonymous namespace)::GlobalOpt::~GlobalOpt()"}, + {"_ZN12_GLOBAL__N_19GlobalOptD0Ev", "(anonymous namespace)::GlobalOpt::~GlobalOpt()"}, + {"_ZNK12_GLOBAL__N_19GlobalOpt16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::GlobalOpt::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_19GlobalOpt11runOnModuleERN4llvm6ModuleE", "(anonymous namespace)::GlobalOpt::runOnModule(llvm::Module&)"}, + + // {"_Z13AnalyzeGlobalPKN4llvm5ValueERN12_GLOBAL__N_112GlobalStatusERNS_11SmallPtrSetIPKNS_7PHINodeELj16EEE", + // "AnalyzeGlobal(llvm::Value const*, (anonymous namespace)::GlobalStatus&, llvm::SmallPtrSet&)"}, + // "AnalyzeGlobal(llvm::Value const*, (anonymous namespace)::GlobalStatus&, llvm::SmallPtrSet&)" was returned + + + // {"_ZN12_GLOBAL__N_19GlobalOpt21ProcessInternalGlobalEPN4llvm14GlobalVariableERNS1_14ilist_iteratorIS2_EERKNS1_11SmallPtrSetIPKNS1_7PHINodeELj16EEERKNS_12GlobalStatusE", + // "(anonymous namespace)::GlobalOpt::ProcessInternalGlobal(llvm::GlobalVariable*, llvm::ilist_iterator&, llvm::SmallPtrSet const&, (anonymous namespace)::GlobalStatus const&)"}, + // "(anonymous namespace)::GlobalOpt::ProcessInternalGlobal(llvm::GlobalVariable*, llvm::ilist_iterator&, llvm::SmallPtrSet const&, (anonymous namespace)::GlobalStatus const&)" was returned + + {"_Z26CleanupConstantGlobalUsersPN4llvm5ValueEPNS_8ConstantE", "CleanupConstantGlobalUsers(llvm::Value*, llvm::Constant*)"}, + + // {"_Z41ValueIsOnlyUsedLocallyOrStoredToOneGlobalPKN4llvm11InstructionEPKNS_14GlobalVariableERNS_11SmallPtrSetIPKNS_7PHINodeELj8EEE", + // "ValueIsOnlyUsedLocallyOrStoredToOneGlobal(llvm::Instruction const*, llvm::GlobalVariable const*, llvm::SmallPtrSet&)"}, + // "ValueIsOnlyUsedLocallyOrStoredToOneGlobal(llvm::Instruction const*, llvm::GlobalVariable const*, llvm::SmallPtrSet&)" was returned + + {"_Z29ReplaceUsesOfMallocWithGlobalPN4llvm11InstructionEPNS_14GlobalVariableE", "ReplaceUsesOfMallocWithGlobal(llvm::Instruction*, llvm::GlobalVariable*)"}, + + // {"_Z16GetHeapSROAValuePN4llvm5ValueEjRNS_8DenseMapIS1_St6vectorIS1_SaIS1_EENS_12DenseMapInfoIS1_EENS6_IS5_EEEERS3_ISt4pairIPNS_7PHINodeEjESaISE_EE", + // "GetHeapSROAValue(llvm::Value*, unsigned int, llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>&, std::vector, std::allocator>>&)"}, + // "GetHeapSROAValue(llvm::Value*, unsigned int, llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>&, std::vector&, std::allocator>)" was returned + + + // {"_Z23RewriteHeapSROALoadUserPN4llvm11InstructionERNS_8DenseMapIPNS_5ValueESt6vectorIS4_SaIS4_EENS_12DenseMapInfoIS4_EENS8_IS7_EEEERS5_ISt4pairIPNS_7PHINodeEjESaISG_EE", + // "RewriteHeapSROALoadUser(llvm::Instruction*, llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>&, std::vector, std::allocator>>&)"}, + // "RewriteHeapSROALoadUser(llvm::Instruction*, llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>&, std::vector&, std::allocator>)" was returned + + + // {"_Z30LoadUsesSimpleEnoughForHeapSRAPKN4llvm5ValueERNS_11SmallPtrSetIPKNS_7PHINodeELj32EEES8_", + // "LoadUsesSimpleEnoughForHeapSRA(llvm::Value const*, llvm::SmallPtrSet&, llvm::SmallPtrSet&)"}, + // "LoadUsesSimpleEnoughForHeapSRA(llvm::Value const*, llvm::SmallPtrSet&, llvm::SmallPtrSet&)" was returned + + {"_Z19ConstantPropUsersOfPN4llvm5ValueE", "ConstantPropUsersOf(llvm::Value*)"}, + + // {"_Z28AllUsesOfValueWillTrapIfNullPKN4llvm5ValueERNS_11SmallPtrSetIPKNS_7PHINodeELj8EEE", + // "AllUsesOfValueWillTrapIfNull(llvm::Value const*, llvm::SmallPtrSet&)"}, + // "AllUsesOfValueWillTrapIfNull(llvm::Value const*, llvm::SmallPtrSet&)" was returned + + {"_Z31OptimizeAwayTrappingUsesOfValuePN4llvm5ValueEPNS_8ConstantE", "OptimizeAwayTrappingUsesOfValue(llvm::Value*, llvm::Constant*)"}, + {"_Z27getAggregateConstantElementPN4llvm8ConstantES1_", "getAggregateConstantElement(llvm::Constant*, llvm::Constant*)"}, + {"_Z20isSafeSROAElementUsePN4llvm5ValueE", "isSafeSROAElementUse(llvm::Value*)"}, + {"_Z21SafeToDestroyConstantPKN4llvm8ConstantE", "SafeToDestroyConstant(llvm::Constant const*)"}, + + // {"_Z16EvaluateFunctionPN4llvm8FunctionERPNS_8ConstantERKNS_15SmallVectorImplIS3_EERSt6vectorIS1_SaIS1_EERNS_8DenseMapIS3_S3_NS_12DenseMapInfoIS3_EESF_EERS9_IPNS_14GlobalVariableESaISJ_EERNS_11SmallPtrSetIS3_Lj8EEEPKNS_10DataLayoutE", + // "EvaluateFunction(llvm::Function*, llvm::Constant*&, llvm::SmallVectorImpl const&, std::vector>&, llvm::DenseMap, llvm::DenseMapInfo>&, std::vector>&, llvm::SmallPtrSet&, llvm::DataLayout const*)"}, + // "EvaluateFunction(llvm::Function*, llvm::Constant*&, llvm::SmallVectorImpl const&, std::vector>&, llvm::DenseMap, llvm::DenseMapInfo>&, std::vector&>, llvm::SmallPtrSet&, llvm::DataLayout const*)" was returned + + {"_Z17EvaluateStoreIntoPN4llvm8ConstantES1_PNS_12ConstantExprEj", "EvaluateStoreInto(llvm::Constant*, llvm::Constant*, llvm::ConstantExpr*, unsigned int)"}, + + // {"_Z33isSimpleEnoughValueToCommitHelperPN4llvm8ConstantERNS_11SmallPtrSetIS1_Lj8EEE", + // "isSimpleEnoughValueToCommitHelper(llvm::Constant*, llvm::SmallPtrSet&)"}, + // "isSimpleEnoughValueToCommitHelper(llvm::Constant*, llvm::SmallPtrSet&)" was returned + + {"_Z9StripNestRKN4llvm11AttrListPtrE", "StripNest(llvm::AttrListPtr const&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_19GlobalOptEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::GlobalOpt>()"}, + {"_ZNSt6vectorIPN4llvm5ValueESaIS2_EEaSERKS4_", "std::vector>::operator=(std::vector> const&)"}, + {"_ZNSt6vectorISt4pairIPN4llvm7PHINodeEjESaIS4_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS4_S6_EERKS4_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + {"_ZNSt6vectorIPN4llvm5ValueESaIS2_EE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPS2_S4_EEmRKS2_", "std::vector>::_M_fill_insert(__gnu_cxx::__normal_iterator>>, unsigned long, llvm::Value* const&)"}, + {"_ZN4llvm8DenseMapIPNS_5ValueESt6vectorIS2_SaIS2_EENS_12DenseMapInfoIS2_EENS6_IS5_EEE6insertERKSt4pairIS2_S5_E", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::insert(std::pair>> const&)"}, + {"_ZN4llvm8DenseMapIPNS_5ValueESt6vectorIS2_SaIS2_EENS_12DenseMapInfoIS2_EENS6_IS5_EEE16InsertIntoBucketERKS2_RKS5_PSt4pairIS2_S5_E", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::InsertIntoBucket(llvm::Value* const&, std::vector> const&, std::pair>>*)"}, + {"_ZN4llvm8DenseMapIPNS_5ValueESt6vectorIS2_SaIS2_EENS_12DenseMapInfoIS2_EENS6_IS5_EEE4growEj", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPNS_5ValueESt6vectorIS2_SaIS2_EENS_12DenseMapInfoIS2_EENS6_IS5_EEE16FindAndConstructERKS2_", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::FindAndConstruct(llvm::Value* const&)"}, + {"_ZNSt6vectorIPN4llvm5ValueESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::Value* const&)"}, + {"_ZNSt6vectorIPN4llvm14GlobalVariableESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::GlobalVariable* const&)"}, + {"_ZNSt6vectorIPN4llvm8ConstantESaIS2_EE14_M_fill_assignEmRKS2_", "std::vector>::_M_fill_assign(unsigned long, llvm::Constant* const&)"}, + {"_ZN4llvm8DenseMapIPNS_8ConstantES2_NS_12DenseMapInfoIS2_EES4_E16InsertIntoBucketERKS2_S7_PSt4pairIS2_S2_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::Constant* const&, llvm::Constant* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_8ConstantES2_NS_12DenseMapInfoIS2_EES4_E4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPNS_5ValueEPNS_8ConstantENS_12DenseMapInfoIS2_EENS5_IS4_EEE16InsertIntoBucketERKS2_RKS4_PSt4pairIS2_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::Value* const&, llvm::Constant* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_5ValueEPNS_8ConstantENS_12DenseMapInfoIS2_EENS5_IS4_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + + // {"_ZSt6__findIN9__gnu_cxx17__normal_iteratorIPPN4llvm8FunctionESt6vectorIS4_SaIS4_EEEES4_ET_SA_SA_RKT0_St26random_access_iterator_tag", + // "__gnu_cxx::__normal_iterator>> std::__find<__gnu_cxx::__normal_iterator>>, llvm::Function*>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, llvm::Function* const&, std::random_access_iterator_tag)"}, + // got error + + {"_ZNSt6vectorIPN4llvm8FunctionESaIS2_EE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPS2_S4_EEmRKS2_", "std::vector>::_M_fill_insert(__gnu_cxx::__normal_iterator>>, unsigned long, llvm::Function* const&)"}, + {"_ZN4llvm27initializeAlwaysInlinerPassERNS_12PassRegistryE", "llvm::initializeAlwaysInlinerPass(llvm::PassRegistry&)"}, + {"_ZN4llvm23createAlwaysInlinerPassEv", "llvm::createAlwaysInlinerPass()"}, + {"_ZN12_GLOBAL__N_113AlwaysInlinerD1Ev", "(anonymous namespace)::AlwaysInliner::~AlwaysInliner()"}, + {"_ZN12_GLOBAL__N_113AlwaysInlinerD0Ev", "(anonymous namespace)::AlwaysInliner::~AlwaysInliner()"}, + {"_ZN12_GLOBAL__N_113AlwaysInliner13releaseMemoryEv", "(anonymous namespace)::AlwaysInliner::releaseMemory()"}, + {"_ZN12_GLOBAL__N_113AlwaysInliner16doInitializationERN4llvm9CallGraphE", "(anonymous namespace)::AlwaysInliner::doInitialization(llvm::CallGraph&)"}, + {"_ZN12_GLOBAL__N_113AlwaysInliner14doFinalizationERN4llvm9CallGraphE", "(anonymous namespace)::AlwaysInliner::doFinalization(llvm::CallGraph&)"}, + {"_ZN12_GLOBAL__N_113AlwaysInliner13getInlineCostEN4llvm8CallSiteE", "(anonymous namespace)::AlwaysInliner::getInlineCost(llvm::CallSite)"}, + {"_ZN12_GLOBAL__N_113AlwaysInliner20getInlineFudgeFactorEN4llvm8CallSiteE", "(anonymous namespace)::AlwaysInliner::getInlineFudgeFactor(llvm::CallSite)"}, + {"_ZN12_GLOBAL__N_113AlwaysInliner19resetCachedCostInfoEPN4llvm8FunctionE", "(anonymous namespace)::AlwaysInliner::resetCachedCostInfo(llvm::Function*)"}, + {"_ZN12_GLOBAL__N_113AlwaysInliner18growCachedCostInfoEPN4llvm8FunctionES3_", "(anonymous namespace)::AlwaysInliner::growCachedCostInfo(llvm::Function*, llvm::Function*)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_113AlwaysInlinerEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::AlwaysInliner>()"}, + {"_ZN4llvm18InlineCostAnalyzer19resetCachedCostInfoEPNS_8FunctionE", "llvm::InlineCostAnalyzer::resetCachedCostInfo(llvm::Function*)"}, + {"_ZNSt6vectorIN4llvm18InlineCostAnalyzer7ArgInfoESaIS2_EEaSERKS4_", "std::vector>::operator=(std::vector> const&)"}, + {"_ZN4llvm8DenseMapIPKNS_10BasicBlockEjNS_12DenseMapInfoIS3_EENS4_IjEEE8CopyFromERKS7_", "llvm::DenseMap, llvm::DenseMapInfo>::CopyFrom(llvm::DenseMap, llvm::DenseMapInfo> const&)"}, + {"_ZN4llvm18ValueMapCallbackVHIPKNS_8FunctionENS_18InlineCostAnalyzer12FunctionInfoENS_14ValueMapConfigIS3_EENS_12DenseMapInfoIS5_EEED1Ev", "llvm::ValueMapCallbackVH, llvm::DenseMapInfo>::~ValueMapCallbackVH()"}, + {"_ZN4llvm18ValueMapCallbackVHIPKNS_8FunctionENS_18InlineCostAnalyzer12FunctionInfoENS_14ValueMapConfigIS3_EENS_12DenseMapInfoIS5_EEED0Ev", "llvm::ValueMapCallbackVH, llvm::DenseMapInfo>::~ValueMapCallbackVH()"}, + {"_ZN4llvm18ValueMapCallbackVHIPKNS_8FunctionENS_18InlineCostAnalyzer12FunctionInfoENS_14ValueMapConfigIS3_EENS_12DenseMapInfoIS5_EEE7deletedEv", "llvm::ValueMapCallbackVH, llvm::DenseMapInfo>::deleted()"}, + {"_ZN4llvm18ValueMapCallbackVHIPKNS_8FunctionENS_18InlineCostAnalyzer12FunctionInfoENS_14ValueMapConfigIS3_EENS_12DenseMapInfoIS5_EEE19allUsesReplacedWithEPNS_5ValueE", "llvm::ValueMapCallbackVH, llvm::DenseMapInfo>::allUsesReplacedWith(llvm::Value*)"}, + {"_ZN4llvm8DenseMapINS_18ValueMapCallbackVHIPKNS_8FunctionENS_18InlineCostAnalyzer12FunctionInfoENS_14ValueMapConfigIS4_EENS_12DenseMapInfoIS6_EEEES6_NS9_ISB_EESA_E4findERKSB_", "llvm::DenseMap, llvm::DenseMapInfo>, llvm::InlineCostAnalyzer::FunctionInfo, llvm::DenseMapInfo, llvm::DenseMapInfo>>, llvm::DenseMapInfo>::find(llvm::ValueMapCallbackVH, llvm::DenseMapInfo> const&)"}, + {"_ZN4llvm8DenseMapINS_18ValueMapCallbackVHIPKNS_8FunctionENS_18InlineCostAnalyzer12FunctionInfoENS_14ValueMapConfigIS4_EENS_12DenseMapInfoIS6_EEEES6_NS9_ISB_EESA_E5eraseENS_16DenseMapIteratorISB_S6_SC_SA_Lb0EEE", "llvm::DenseMap, llvm::DenseMapInfo>, llvm::InlineCostAnalyzer::FunctionInfo, llvm::DenseMapInfo, llvm::DenseMapInfo>>, llvm::DenseMapInfo>::erase(llvm::DenseMapIterator, llvm::DenseMapInfo>, llvm::InlineCostAnalyzer::FunctionInfo, llvm::DenseMapInfo, llvm::DenseMapInfo>>, llvm::DenseMapInfo, false>)"}, + {"_ZN4llvm8ValueMapIPKNS_8FunctionENS_18InlineCostAnalyzer12FunctionInfoENS_14ValueMapConfigIS3_EENS_12DenseMapInfoIS5_EEE6insertERKSt4pairIS3_S5_E", "llvm::ValueMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapINS_18ValueMapCallbackVHIPKNS_8FunctionENS_18InlineCostAnalyzer12FunctionInfoENS_14ValueMapConfigIS4_EENS_12DenseMapInfoIS6_EEEES6_NS9_ISB_EESA_E6insertERKSt4pairISB_S6_E", "llvm::DenseMap, llvm::DenseMapInfo>, llvm::InlineCostAnalyzer::FunctionInfo, llvm::DenseMapInfo, llvm::DenseMapInfo>>, llvm::DenseMapInfo>::insert(std::pair, llvm::DenseMapInfo>, llvm::InlineCostAnalyzer::FunctionInfo> const&)"}, + {"_ZNSt4pairIN4llvm18ValueMapCallbackVHIPKNS0_8FunctionENS0_18InlineCostAnalyzer12FunctionInfoENS0_14ValueMapConfigIS4_EENS0_12DenseMapInfoIS6_EEEES6_EC2ERKSB_RKS6_", "std::pair, llvm::DenseMapInfo>, llvm::InlineCostAnalyzer::FunctionInfo>::pair(llvm::ValueMapCallbackVH, llvm::DenseMapInfo> const&, llvm::InlineCostAnalyzer::FunctionInfo const&)"}, + {"_ZNK4llvm8DenseMapINS_18ValueMapCallbackVHIPKNS_8FunctionENS_18InlineCostAnalyzer12FunctionInfoENS_14ValueMapConfigIS4_EENS_12DenseMapInfoIS6_EEEES6_NS9_ISB_EESA_E15LookupBucketForERKSB_RPSt4pairISB_S6_E", "llvm::DenseMap, llvm::DenseMapInfo>, llvm::InlineCostAnalyzer::FunctionInfo, llvm::DenseMapInfo, llvm::DenseMapInfo>>, llvm::DenseMapInfo>::LookupBucketFor(llvm::ValueMapCallbackVH, llvm::DenseMapInfo> const&, std::pair, llvm::DenseMapInfo>, llvm::InlineCostAnalyzer::FunctionInfo>*&) const"}, + {"_ZN4llvm8DenseMapINS_18ValueMapCallbackVHIPKNS_8FunctionENS_18InlineCostAnalyzer12FunctionInfoENS_14ValueMapConfigIS4_EENS_12DenseMapInfoIS6_EEEES6_NS9_ISB_EESA_E16InsertIntoBucketERKSB_RKS6_PSt4pairISB_S6_E", "llvm::DenseMap, llvm::DenseMapInfo>, llvm::InlineCostAnalyzer::FunctionInfo, llvm::DenseMapInfo, llvm::DenseMapInfo>>, llvm::DenseMapInfo>::InsertIntoBucket(llvm::ValueMapCallbackVH, llvm::DenseMapInfo> const&, llvm::InlineCostAnalyzer::FunctionInfo const&, std::pair, llvm::DenseMapInfo>, llvm::InlineCostAnalyzer::FunctionInfo>*)"}, + {"_ZN4llvm8DenseMapINS_18ValueMapCallbackVHIPKNS_8FunctionENS_18InlineCostAnalyzer12FunctionInfoENS_14ValueMapConfigIS4_EENS_12DenseMapInfoIS6_EEEES6_NS9_ISB_EESA_E4growEj", "llvm::DenseMap, llvm::DenseMapInfo>, llvm::InlineCostAnalyzer::FunctionInfo, llvm::DenseMapInfo, llvm::DenseMapInfo>>, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNSt6vectorIN4llvm18InlineCostAnalyzer7ArgInfoESaIS2_EEC2ERKS4_", "std::vector>::vector(std::vector> const&)"}, + {"_ZN4llvm8DenseMapINS_18ValueMapCallbackVHIPKNS_8FunctionENS_18InlineCostAnalyzer12FunctionInfoENS_14ValueMapConfigIS4_EENS_12DenseMapInfoIS6_EEEES6_NS9_ISB_EESA_E5eraseERKSB_", "llvm::DenseMap, llvm::DenseMapInfo>, llvm::InlineCostAnalyzer::FunctionInfo, llvm::DenseMapInfo, llvm::DenseMapInfo>>, llvm::DenseMapInfo>::erase(llvm::ValueMapCallbackVH, llvm::DenseMapInfo> const&)"}, + {"_ZN4llvm8DenseMapINS_18ValueMapCallbackVHIPKNS_8FunctionENS_18InlineCostAnalyzer12FunctionInfoENS_14ValueMapConfigIS4_EENS_12DenseMapInfoIS6_EEEES6_NS9_ISB_EESA_E16FindAndConstructERKSB_", "llvm::DenseMap, llvm::DenseMapInfo>, llvm::InlineCostAnalyzer::FunctionInfo, llvm::DenseMapInfo, llvm::DenseMapInfo>>, llvm::DenseMapInfo>::FindAndConstruct(llvm::ValueMapCallbackVH, llvm::DenseMapInfo> const&)"}, + {"_ZN4llvm7InlinerD1Ev", "llvm::Inliner::~Inliner()"}, + {"_ZN4llvm7InlinerD0Ev", "llvm::Inliner::~Inliner()"}, + {"_ZN4llvm8DenseMapINS_18ValueMapCallbackVHIPKNS_8FunctionENS_18InlineCostAnalyzer12FunctionInfoENS_14ValueMapConfigIS4_EENS_12DenseMapInfoIS6_EEEES6_NS9_ISB_EESA_ED2Ev", "llvm::DenseMap, llvm::DenseMapInfo>, llvm::InlineCostAnalyzer::FunctionInfo, llvm::DenseMapInfo, llvm::DenseMapInfo>>, llvm::DenseMapInfo>::~DenseMap()"}, + {"_ZN4llvm8DenseMapINS_18ValueMapCallbackVHIPKNS_8FunctionENS_18InlineCostAnalyzer12FunctionInfoENS_14ValueMapConfigIS4_EENS_12DenseMapInfoIS6_EEEES6_NS9_ISB_EESA_E4initEj", "llvm::DenseMap, llvm::DenseMapInfo>, llvm::InlineCostAnalyzer::FunctionInfo, llvm::DenseMapInfo, llvm::DenseMapInfo>>, llvm::DenseMapInfo>::init(unsigned int)"}, + {"_ZN4llvm27initializeSimpleInlinerPassERNS_12PassRegistryE", "llvm::initializeSimpleInlinerPass(llvm::PassRegistry&)"}, + {"_ZN4llvm26createFunctionInliningPassEv", "llvm::createFunctionInliningPass()"}, + {"_ZN4llvm26createFunctionInliningPassEi", "llvm::createFunctionInliningPass(int)"}, + {"_ZN12_GLOBAL__N_113SimpleInlinerD1Ev", "(anonymous namespace)::SimpleInliner::~SimpleInliner()"}, + {"_ZN12_GLOBAL__N_113SimpleInlinerD0Ev", "(anonymous namespace)::SimpleInliner::~SimpleInliner()"}, + {"_ZN12_GLOBAL__N_113SimpleInliner13releaseMemoryEv", "(anonymous namespace)::SimpleInliner::releaseMemory()"}, + {"_ZN12_GLOBAL__N_113SimpleInliner16doInitializationERN4llvm9CallGraphE", "(anonymous namespace)::SimpleInliner::doInitialization(llvm::CallGraph&)"}, + {"_ZN12_GLOBAL__N_113SimpleInliner13getInlineCostEN4llvm8CallSiteE", "(anonymous namespace)::SimpleInliner::getInlineCost(llvm::CallSite)"}, + {"_ZN12_GLOBAL__N_113SimpleInliner20getInlineFudgeFactorEN4llvm8CallSiteE", "(anonymous namespace)::SimpleInliner::getInlineFudgeFactor(llvm::CallSite)"}, + {"_ZN12_GLOBAL__N_113SimpleInliner19resetCachedCostInfoEPN4llvm8FunctionE", "(anonymous namespace)::SimpleInliner::resetCachedCostInfo(llvm::Function*)"}, + {"_ZN12_GLOBAL__N_113SimpleInliner18growCachedCostInfoEPN4llvm8FunctionES3_", "(anonymous namespace)::SimpleInliner::growCachedCostInfo(llvm::Function*, llvm::Function*)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_113SimpleInlinerEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::SimpleInliner>()"}, + {"_ZN4llvm7InlinerC1ERc", "llvm::Inliner::Inliner(char&)"}, + {"_ZN4llvm7InlinerC2ERc", "llvm::Inliner::Inliner(char&)"}, + {"_ZN4llvm7InlinerC1ERci", "llvm::Inliner::Inliner(char&, int)"}, + {"_ZN4llvm7InlinerC2ERci", "llvm::Inliner::Inliner(char&, int)"}, + {"_ZNK4llvm7Inliner16getAnalysisUsageERNS_13AnalysisUsageE", "llvm::Inliner::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZNK4llvm7Inliner18getInlineThresholdENS_8CallSiteE", "llvm::Inliner::getInlineThreshold(llvm::CallSite) const"}, + {"_ZN4llvm7Inliner12shouldInlineENS_8CallSiteE", "llvm::Inliner::shouldInline(llvm::CallSite)"}, + {"_ZN4llvm7Inliner8runOnSCCERNS_12CallGraphSCCE", "llvm::Inliner::runOnSCC(llvm::CallGraphSCC&)"}, + {"_ZN4llvm7Inliner14doFinalizationERNS_9CallGraphE", "llvm::Inliner::doFinalization(llvm::CallGraph&)"}, + + // {"_ZN4llvm7Inliner19removeDeadFunctionsERNS_9CallGraphEPNS_11SmallPtrSetIPKNS_8FunctionELj16EEE", + // "llvm::Inliner::removeDeadFunctions(llvm::CallGraph&, llvm::SmallPtrSet*)"}, + // "llvm::Inliner::removeDeadFunctions(llvm::CallGraph&, llvm::SmallPtrSet*)" was returned + + {"_ZN4llvm23SmallVectorTemplateBaseISt4pairINS_8CallSiteEiELb0EE4growEm", "llvm::SmallVectorTemplateBase, false>::grow(unsigned long)"}, + {"_ZN4llvm8DenseMapIPKNS_9ArrayTypeESt6vectorIPNS_10AllocaInstESaIS6_EENS_12DenseMapInfoIS3_EENS9_IS8_EEE16FindAndConstructERKS3_", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::FindAndConstruct(llvm::ArrayType const* const&)"}, + {"_ZN4llvm8DenseMapIPKNS_9ArrayTypeESt6vectorIPNS_10AllocaInstESaIS6_EENS_12DenseMapInfoIS3_EENS9_IS8_EEE16InsertIntoBucketERKS3_RKS8_PSt4pairIS3_S8_E", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::InsertIntoBucket(llvm::ArrayType const* const&, std::vector> const&, std::pair>>*)"}, + {"_ZN4llvm8DenseMapIPKNS_9ArrayTypeESt6vectorIPNS_10AllocaInstESaIS6_EENS_12DenseMapInfoIS3_EENS9_IS8_EEE4growEj", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::grow(unsigned int)"}, + {"_ZN4llvm21initializePruneEHPassERNS_12PassRegistryE", "llvm::initializePruneEHPass(llvm::PassRegistry&)"}, + {"_ZN4llvm17createPruneEHPassEv", "llvm::createPruneEHPass()"}, + {"_ZN12_GLOBAL__N_17PruneEHD1Ev", "(anonymous namespace)::PruneEH::~PruneEH()"}, + {"_ZN12_GLOBAL__N_17PruneEHD0Ev", "(anonymous namespace)::PruneEH::~PruneEH()"}, + {"_ZN12_GLOBAL__N_17PruneEH8runOnSCCERN4llvm12CallGraphSCCE", "(anonymous namespace)::PruneEH::runOnSCC(llvm::CallGraphSCC&)"}, + {"_ZN12_GLOBAL__N_17PruneEH16SimplifyFunctionEPN4llvm8FunctionE", "(anonymous namespace)::PruneEH::SimplifyFunction(llvm::Function*)"}, + {"_ZN12_GLOBAL__N_17PruneEH16DeleteBasicBlockEPN4llvm10BasicBlockE", "(anonymous namespace)::PruneEH::DeleteBasicBlock(llvm::BasicBlock*)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_17PruneEHEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::PruneEH>()"}, + + // {"_ZNSt6vectorIPN4llvm10BasicBlockESaIS2_EE22_M_initialize_dispatchINS0_12SuccIteratorIPNS0_14TerminatorInstES1_EEEEvT_SA_St12__false_type", + // "void std::vector>::_M_initialize_dispatch>(llvm::SuccIterator, llvm::SuccIterator, std::__false_type)"}, + // got error + + {"_ZN4llvm37initializeStripDeadPrototypesPassPassERNS_12PassRegistryE", "llvm::initializeStripDeadPrototypesPassPass(llvm::PassRegistry&)"}, + {"_ZN4llvm29createStripDeadPrototypesPassEv", "llvm::createStripDeadPrototypesPass()"}, + {"_ZN12_GLOBAL__N_123StripDeadPrototypesPassD1Ev", "(anonymous namespace)::StripDeadPrototypesPass::~StripDeadPrototypesPass()"}, + {"_ZN12_GLOBAL__N_123StripDeadPrototypesPassD0Ev", "(anonymous namespace)::StripDeadPrototypesPass::~StripDeadPrototypesPass()"}, + {"_ZN12_GLOBAL__N_123StripDeadPrototypesPass11runOnModuleERN4llvm6ModuleE", "(anonymous namespace)::StripDeadPrototypesPass::runOnModule(llvm::Module&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_123StripDeadPrototypesPassEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::StripDeadPrototypesPass>()"}, + {"_ZN4llvm18WriteBitcodeToFileEPKNS_6ModuleERNS_11raw_ostreamE", "llvm::WriteBitcodeToFile(llvm::Module const*, llvm::raw_ostream&)"}, + {"_ZN4llvm20WriteBitcodeToStreamEPKNS_6ModuleERNS_15BitstreamWriterE", "llvm::WriteBitcodeToStream(llvm::Module const*, llvm::BitstreamWriter&)"}, + {"_Z11WriteModulePKN4llvm6ModuleERNS_15BitstreamWriterE", "WriteModule(llvm::Module const*, llvm::BitstreamWriter&)"}, + {"_Z13WriteFunctionRKN4llvm8FunctionERNS_15ValueEnumeratorERNS_15BitstreamWriterE", "WriteFunction(llvm::Function const&, llvm::ValueEnumerator&, llvm::BitstreamWriter&)"}, + {"_Z21WriteValueSymbolTableRKN4llvm16ValueSymbolTableERKNS_15ValueEnumeratorERNS_15BitstreamWriterE", "WriteValueSymbolTable(llvm::ValueSymbolTable const&, llvm::ValueEnumerator const&, llvm::BitstreamWriter&)"}, + {"_Z14WriteConstantsjjRKN4llvm15ValueEnumeratorERNS_15BitstreamWriterEb", "WriteConstants(unsigned int, unsigned int, llvm::ValueEnumerator const&, llvm::BitstreamWriter&, bool)"}, + {"_Z20GetOptimizationFlagsPKN4llvm5ValueE", "GetOptimizationFlags(llvm::Value const*)"}, + + // {"_Z11WriteMDNodePKN4llvm6MDNodeERKNS_15ValueEnumeratorERNS_15BitstreamWriterERNS_11SmallVectorIyLj64EEE", + // "WriteMDNode(llvm::MDNode const*, llvm::ValueEnumerator const&, llvm::BitstreamWriter&, llvm::SmallVector&)"}, + // "WriteMDNode(llvm::MDNode const*, llvm::ValueEnumerator const&, llvm::BitstreamWriter&, llvm::SmallVector&)" was returned + + {"_Z17WriteStringRecordjRKSsjRN4llvm15BitstreamWriterE", "WriteStringRecord(unsigned int, std::string const&, unsigned int, llvm::BitstreamWriter&)"}, + {"_ZN4llvm15ValueEnumeratorD2Ev", "llvm::ValueEnumerator::~ValueEnumerator()"}, + {"_ZN4llvm15BitstreamWriter10EmitRecordIjEEvjRNS_15SmallVectorImplIT_EEj", "void llvm::BitstreamWriter::EmitRecord(unsigned int, llvm::SmallVectorImpl&, unsigned int)"}, + {"_ZN4llvm15SmallVectorImplIjE6insertEPjRKj", "llvm::SmallVectorImpl::insert(unsigned int*, unsigned int const&)"}, + {"_ZN4llvm15BitstreamWriter24EmitRecordWithAbbrevImplIjEEvjRNS_15SmallVectorImplIT_EENS_9StringRefE", "void llvm::BitstreamWriter::EmitRecordWithAbbrevImpl(unsigned int, llvm::SmallVectorImpl&, llvm::StringRef)"}, + {"_ZN4llvm15BitstreamWriter20EmitAbbreviatedFieldIjEEvRKNS_15BitCodeAbbrevOpET_", "void llvm::BitstreamWriter::EmitAbbreviatedField(llvm::BitCodeAbbrevOp const&, unsigned int)"}, + {"_ZN4llvm15BitstreamWriter19EmitBlockInfoAbbrevEjPNS_13BitCodeAbbrevE", "llvm::BitstreamWriter::EmitBlockInfoAbbrev(unsigned int, llvm::BitCodeAbbrev*)"}, + {"_ZN4llvm15BitstreamWriter15SwitchToBlockIDEj", "llvm::BitstreamWriter::SwitchToBlockID(unsigned int)"}, + {"_ZN4llvm15BitstreamWriter20getOrCreateBlockInfoEj", "llvm::BitstreamWriter::getOrCreateBlockInfo(unsigned int)"}, + {"_ZNSt6vectorIN4llvm15BitstreamWriter9BlockInfoESaIS2_EE9push_backERKS2_", "std::vector>::push_back(llvm::BitstreamWriter::BlockInfo const&)"}, + {"_ZNSt6vectorIN4llvm15BitstreamWriter9BlockInfoESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::BitstreamWriter::BlockInfo const&)"}, + {"_ZN4llvm23createBitcodeWriterPassERNS_11raw_ostreamE", "llvm::createBitcodeWriterPass(llvm::raw_ostream&)"}, + {"_ZN12_GLOBAL__N_116WriteBitcodePassD1Ev", "(anonymous namespace)::WriteBitcodePass::~WriteBitcodePass()"}, + {"_ZN12_GLOBAL__N_116WriteBitcodePassD0Ev", "(anonymous namespace)::WriteBitcodePass::~WriteBitcodePass()"}, + {"_ZNK12_GLOBAL__N_116WriteBitcodePass11getPassNameEv", "(anonymous namespace)::WriteBitcodePass::getPassName() const"}, + {"_ZN12_GLOBAL__N_116WriteBitcodePass11runOnModuleERN4llvm6ModuleE", "(anonymous namespace)::WriteBitcodePass::runOnModule(llvm::Module&)"}, + {"_ZN4llvm15ValueEnumeratorC1EPKNS_6ModuleE", "llvm::ValueEnumerator::ValueEnumerator(llvm::Module const*)"}, + {"_ZN4llvm15ValueEnumeratorC2EPKNS_6ModuleE", "llvm::ValueEnumerator::ValueEnumerator(llvm::Module const*)"}, + {"_ZN4llvm15ValueEnumerator14EnumerateValueEPKNS_5ValueE", "llvm::ValueEnumerator::EnumerateValue(llvm::Value const*)"}, + {"_ZN4llvm15ValueEnumerator19EnumerateAttributesERKNS_11AttrListPtrE", "llvm::ValueEnumerator::EnumerateAttributes(llvm::AttrListPtr const&)"}, + {"_ZN4llvm15ValueEnumerator24EnumerateTypeSymbolTableERKNS_15TypeSymbolTableE", "llvm::ValueEnumerator::EnumerateTypeSymbolTable(llvm::TypeSymbolTable const&)"}, + {"_ZN4llvm15ValueEnumerator25EnumerateValueSymbolTableERKNS_16ValueSymbolTableE", "llvm::ValueEnumerator::EnumerateValueSymbolTable(llvm::ValueSymbolTable const&)"}, + {"_ZN4llvm15ValueEnumerator22EnumerateNamedMetadataEPKNS_6ModuleE", "llvm::ValueEnumerator::EnumerateNamedMetadata(llvm::Module const*)"}, + {"_ZN4llvm15ValueEnumerator13EnumerateTypeEPKNS_4TypeE", "llvm::ValueEnumerator::EnumerateType(llvm::Type const*)"}, + {"_ZN4llvm15ValueEnumerator20EnumerateOperandTypeEPKNS_5ValueE", "llvm::ValueEnumerator::EnumerateOperandType(llvm::Value const*)"}, + {"_ZN4llvm15ValueEnumerator17EnumerateMetadataEPKNS_5ValueE", "llvm::ValueEnumerator::EnumerateMetadata(llvm::Value const*)"}, + {"_ZN4llvm15ValueEnumerator17OptimizeConstantsEjj", "llvm::ValueEnumerator::OptimizeConstants(unsigned int, unsigned int)"}, + {"_Z18CompareByFrequencyRKSt4pairIPKN4llvm4TypeEjES6_", "CompareByFrequency(std::pair const&, std::pair const&)"}, + {"_ZNK4llvm15ValueEnumerator16getInstructionIDEPKNS_11InstructionE", "llvm::ValueEnumerator::getInstructionID(llvm::Instruction const*) const"}, + {"_ZN4llvm15ValueEnumerator16setInstructionIDEPKNS_11InstructionE", "llvm::ValueEnumerator::setInstructionID(llvm::Instruction const*)"}, + {"_ZNK4llvm15ValueEnumerator10getValueIDEPKNS_5ValueE", "llvm::ValueEnumerator::getValueID(llvm::Value const*) const"}, + {"_ZN4llvm15ValueEnumerator20EnumerateNamedMDNodeEPKNS_11NamedMDNodeE", "llvm::ValueEnumerator::EnumerateNamedMDNode(llvm::NamedMDNode const*)"}, + {"_ZN4llvm15ValueEnumerator23EnumerateMDNodeOperandsEPKNS_6MDNodeE", "llvm::ValueEnumerator::EnumerateMDNodeOperands(llvm::MDNode const*)"}, + {"_ZN4llvm15ValueEnumerator30EnumerateFunctionLocalMetadataEPKNS_6MDNodeE", "llvm::ValueEnumerator::EnumerateFunctionLocalMetadata(llvm::MDNode const*)"}, + {"_ZN4llvm15ValueEnumerator19incorporateFunctionERKNS_8FunctionE", "llvm::ValueEnumerator::incorporateFunction(llvm::Function const&)"}, + {"_ZN4llvm15ValueEnumerator13purgeFunctionEv", "llvm::ValueEnumerator::purgeFunction()"}, + {"_ZNK4llvm15ValueEnumerator21getGlobalBasicBlockIDEPKNS_10BasicBlockE", "llvm::ValueEnumerator::getGlobalBasicBlockID(llvm::BasicBlock const*) const"}, + + // {"_ZSt21__inplace_stable_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIPKN4llvm5ValueEjESt6vectorIS7_SaIS7_EEEEN12_GLOBAL__N_116CstSortPredicateEEvT_SF_T0_", + // "void std::__inplace_stable_sort<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, (anonymous namespace)::CstSortPredicate>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, (anonymous namespace)::CstSortPredicate)"}, + // got error + + + // {"_ZSt22__stable_sort_adaptiveIN9__gnu_cxx17__normal_iteratorIPSt4pairIPKN4llvm5ValueEjESt6vectorIS7_SaIS7_EEEES8_lN12_GLOBAL__N_116CstSortPredicateEEvT_SF_T0_T1_T2_", + // "void std::__stable_sort_adaptive<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair*, long, (anonymous namespace)::CstSortPredicate>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair*, long, (anonymous namespace)::CstSortPredicate)"}, + // got error + + + // {"_ZSt24__merge_sort_with_bufferIN9__gnu_cxx17__normal_iteratorIPSt4pairIPKN4llvm5ValueEjESt6vectorIS7_SaIS7_EEEES8_N12_GLOBAL__N_116CstSortPredicateEEvT_SF_T0_T1_", + // "void std::__merge_sort_with_buffer<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair*, (anonymous namespace)::CstSortPredicate>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair*, (anonymous namespace)::CstSortPredicate)"}, + // got error + + + // {"_ZSt16__merge_adaptiveIN9__gnu_cxx17__normal_iteratorIPSt4pairIPKN4llvm5ValueEjESt6vectorIS7_SaIS7_EEEElS8_N12_GLOBAL__N_116CstSortPredicateEEvT_SF_SF_T0_SG_T1_SG_T2_", + // "void std::__merge_adaptive<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long, std::pair*, (anonymous namespace)::CstSortPredicate>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long, long, std::pair*, long, (anonymous namespace)::CstSortPredicate)"}, + // got error + + {"_ZN12_GLOBAL__N_116CstSortPredicateclERKSt4pairIPKN4llvm5ValueEjES8_", "(anonymous namespace)::CstSortPredicate::operator()(std::pair const&, std::pair const&)"}, + + // {"_ZSt5mergeIN9__gnu_cxx17__normal_iteratorIPSt4pairIPKN4llvm5ValueEjESt6vectorIS7_SaIS7_EEEESC_S8_N12_GLOBAL__N_116CstSortPredicateEET1_T_SG_T0_SH_SF_T2_", + // "std::pair* std::merge<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair*, (anonymous namespace)::CstSortPredicate>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair*, (anonymous namespace)::CstSortPredicate)"}, + // got error + + + // {"_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIPKN4llvm5ValueEjESt6vectorIS7_SaIS7_EEEEN12_GLOBAL__N_116CstSortPredicateEEvT_SF_T0_", + // "void std::__insertion_sort<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, (anonymous namespace)::CstSortPredicate>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, (anonymous namespace)::CstSortPredicate)"}, + // got error + + + // {"_ZSt22__merge_without_bufferIN9__gnu_cxx17__normal_iteratorIPSt4pairIPKN4llvm5ValueEjESt6vectorIS7_SaIS7_EEEElN12_GLOBAL__N_116CstSortPredicateEEvT_SF_SF_T0_SG_T1_", + // "void std::__merge_without_buffer<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long, (anonymous namespace)::CstSortPredicate>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long, long, (anonymous namespace)::CstSortPredicate)"}, + // got error + + {"_ZNSt6vectorISt4pairIPKN4llvm5ValueEjESaIS5_EE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPS5_S7_EEmRKS5_", "std::vector, std::allocator>>::_M_fill_insert(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, unsigned long, std::pair const&)"}, + {"_ZNSt6vectorISt4pairIPKN4llvm4TypeEjESaIS5_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS5_S7_EERKS5_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + {"_ZNSt6vectorISt4pairIPKN4llvm5ValueEjESaIS5_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS5_S7_EERKS5_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + + // {"_ZSt17__rotate_adaptiveIN9__gnu_cxx17__normal_iteratorIPSt4pairIPKN4llvm5ValueEjESt6vectorIS7_SaIS7_EEEES8_lET_SD_SD_SD_T1_SE_T0_SE_", + // "__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>> std::__rotate_adaptive<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair*, long>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long, long, std::pair*, long)"}, + // got error + + + // {"_ZSt8__rotateIN9__gnu_cxx17__normal_iteratorIPSt4pairIPKN4llvm5ValueEjESt6vectorIS7_SaIS7_EEEEEvT_SD_SD_St26random_access_iterator_tag", + // "void std::__rotate<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::random_access_iterator_tag)"}, + // got error + + {"_ZN4llvm8DenseMapIPKNS_4TypeEjNS_12DenseMapInfoIS3_EENS4_IjEEE16InsertIntoBucketERKS3_RKjPSt4pairIS3_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::Type const* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_4TypeEjNS_12DenseMapInfoIS3_EENS4_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + + // {"_ZSt21__inplace_stable_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIPKN4llvm4TypeEjESt6vectorIS7_SaIS7_EEEEPFbRKS7_SE_EEvT_SH_T0_", + // "void std::__inplace_stable_sort<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, bool (*)(std::pair const&, std::pair const&)>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, bool (*)(std::pair const&, std::pair const&))"}, + // got error + + + // {"_ZSt22__stable_sort_adaptiveIN9__gnu_cxx17__normal_iteratorIPSt4pairIPKN4llvm4TypeEjESt6vectorIS7_SaIS7_EEEES8_lPFbRKS7_SE_EEvT_SH_T0_T1_T2_", + // "void std::__stable_sort_adaptive<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair*, long, bool (*)(std::pair const&, std::pair const&)>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair*, long, bool (*)(std::pair const&, std::pair const&))"}, + // got error + + + // {"_ZSt24__merge_sort_with_bufferIN9__gnu_cxx17__normal_iteratorIPSt4pairIPKN4llvm4TypeEjESt6vectorIS7_SaIS7_EEEES8_PFbRKS7_SE_EEvT_SH_T0_T1_", + // "void std::__merge_sort_with_buffer<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair*, bool (*)(std::pair const&, std::pair const&)>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair*, bool (*)(std::pair const&, std::pair const&))"}, + // got error + + + // {"_ZSt16__merge_adaptiveIN9__gnu_cxx17__normal_iteratorIPSt4pairIPKN4llvm4TypeEjESt6vectorIS7_SaIS7_EEEElS8_PFbRKS7_SE_EEvT_SH_SH_T0_SI_T1_SI_T2_", + // "void std::__merge_adaptive<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long, std::pair*, bool (*)(std::pair const&, std::pair const&)>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long, long, std::pair*, long, bool (*)(std::pair const&, std::pair const&))"}, + // got error + + + // {"_ZSt16__merge_backwardIN9__gnu_cxx17__normal_iteratorIPSt4pairIPKN4llvm4TypeEjESt6vectorIS7_SaIS7_EEEES8_SC_PFbRKS7_SE_EET1_T_SI_T0_SJ_SH_T2_", + // "__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>> std::__merge_backward<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair*, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, bool (*)(std::pair const&, std::pair const&)>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair*, std::pair*, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, bool (*)(std::pair const&, std::pair const&))"}, + // got error + + + // {"_ZSt17__rotate_adaptiveIN9__gnu_cxx17__normal_iteratorIPSt4pairIPKN4llvm4TypeEjESt6vectorIS7_SaIS7_EEEES8_lET_SD_SD_SD_T1_SE_T0_SE_", + // "__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>> std::__rotate_adaptive<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair*, long>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long, long, std::pair*, long)"}, + // got error + + + // {"_ZSt8__rotateIN9__gnu_cxx17__normal_iteratorIPSt4pairIPKN4llvm4TypeEjESt6vectorIS7_SaIS7_EEEEEvT_SD_SD_St26random_access_iterator_tag", + // "void std::__rotate<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::random_access_iterator_tag)"}, + // got error + + + // {"_ZSt17__merge_sort_loopIN9__gnu_cxx17__normal_iteratorIPSt4pairIPKN4llvm4TypeEjESt6vectorIS7_SaIS7_EEEES8_lPFbRKS7_SE_EEvT_SH_T0_T1_T2_", + // "void std::__merge_sort_loop<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair*, long, bool (*)(std::pair const&, std::pair const&)>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair*, long, bool (*)(std::pair const&, std::pair const&))"}, + // got error + + + // {"_ZSt17__merge_sort_loopIPSt4pairIPKN4llvm4TypeEjEN9__gnu_cxx17__normal_iteratorIS6_St6vectorIS5_SaIS5_EEEElPFbRKS5_SE_EEvT_SH_T0_T1_T2_", + // "void std::__merge_sort_loop*, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long, bool (*)(std::pair const&, std::pair const&)>(std::pair*, std::pair*, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long, bool (*)(std::pair const&, std::pair const&))"}, + // got error + + + // {"_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIPKN4llvm4TypeEjESt6vectorIS7_SaIS7_EEEEPFbRKS7_SE_EEvT_SH_T0_", + // "void std::__insertion_sort<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, bool (*)(std::pair const&, std::pair const&)>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, bool (*)(std::pair const&, std::pair const&))"}, + // got error + + + // {"_ZSt22__merge_without_bufferIN9__gnu_cxx17__normal_iteratorIPSt4pairIPKN4llvm4TypeEjESt6vectorIS7_SaIS7_EEEElPFbRKS7_SE_EEvT_SH_SH_T0_SI_T1_", + // "void std::__merge_without_buffer<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long, bool (*)(std::pair const&, std::pair const&)>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long, long, bool (*)(std::pair const&, std::pair const&))"}, + // got error + + {"_ZN4llvm13BitcodeReader9FreeStateEv", "llvm::BitcodeReader::FreeState()"}, + {"_ZN4llvm22BitcodeReaderValueList11AssignValueEPNS_5ValueEj", "llvm::BitcodeReaderValueList::AssignValue(llvm::Value*, unsigned int)"}, + {"_ZN4llvm22BitcodeReaderValueList17getConstantFwdRefEjPKNS_4TypeE", "llvm::BitcodeReaderValueList::getConstantFwdRef(unsigned int, llvm::Type const*)"}, + {"_ZN4llvm22BitcodeReaderValueList14getValueFwdRefEjPKNS_4TypeE", "llvm::BitcodeReaderValueList::getValueFwdRef(unsigned int, llvm::Type const*)"}, + {"_ZN4llvm22BitcodeReaderValueList26ResolveConstantForwardRefsEv", "llvm::BitcodeReaderValueList::ResolveConstantForwardRefs()"}, + {"_ZN4llvm24BitcodeReaderMDValueList11AssignValueEPNS_5ValueEj", "llvm::BitcodeReaderMDValueList::AssignValue(llvm::Value*, unsigned int)"}, + {"_ZN4llvm24BitcodeReaderMDValueList14getValueFwdRefEj", "llvm::BitcodeReaderMDValueList::getValueFwdRef(unsigned int)"}, + {"_ZN4llvm13BitcodeReader11getTypeByIDEjb", "llvm::BitcodeReader::getTypeByID(unsigned int, bool)"}, + {"_ZN4llvm13BitcodeReader19ParseAttributeBlockEv", "llvm::BitcodeReader::ParseAttributeBlock()"}, + {"_ZN4llvm13BitcodeReader14ParseTypeTableEv", "llvm::BitcodeReader::ParseTypeTable()"}, + {"_ZN4llvm13BitcodeReader20ParseTypeSymbolTableEv", "llvm::BitcodeReader::ParseTypeSymbolTable()"}, + {"_ZN4llvm13BitcodeReader21ParseValueSymbolTableEv", "llvm::BitcodeReader::ParseValueSymbolTable()"}, + {"_ZN4llvm13BitcodeReader13ParseMetadataEv", "llvm::BitcodeReader::ParseMetadata()"}, + {"_ZN4llvm13BitcodeReader26ResolveGlobalAndAliasInitsEv", "llvm::BitcodeReader::ResolveGlobalAndAliasInits()"}, + {"_ZN4llvm13BitcodeReader14ParseConstantsEv", "llvm::BitcodeReader::ParseConstants()"}, + {"_Z22GetDecodedBinaryOpcodejPKN4llvm4TypeE", "GetDecodedBinaryOpcode(unsigned int, llvm::Type const*)"}, + {"_ZN4llvm13BitcodeReader27RememberAndSkipFunctionBodyEv", "llvm::BitcodeReader::RememberAndSkipFunctionBody()"}, + {"_ZN4llvm13BitcodeReader11ParseModuleEv", "llvm::BitcodeReader::ParseModule()"}, + {"_ZN4llvm13BitcodeReader16ParseBitcodeIntoEPNS_6ModuleE", "llvm::BitcodeReader::ParseBitcodeInto(llvm::Module*)"}, + {"_ZN4llvm13BitcodeReader17ParseModuleTripleERSs", "llvm::BitcodeReader::ParseModuleTriple(std::string&)"}, + {"_ZN4llvm13BitcodeReader11ParseTripleERSs", "llvm::BitcodeReader::ParseTriple(std::string&)"}, + {"_ZN4llvm13BitcodeReader23ParseMetadataAttachmentEv", "llvm::BitcodeReader::ParseMetadataAttachment()"}, + {"_ZN4llvm13BitcodeReader17ParseFunctionBodyEPNS_8FunctionE", "llvm::BitcodeReader::ParseFunctionBody(llvm::Function*)"}, + {"_ZNK4llvm13BitcodeReader16isMaterializableEPKNS_11GlobalValueE", "llvm::BitcodeReader::isMaterializable(llvm::GlobalValue const*) const"}, + {"_ZN4llvm13BitcodeReader11MaterializeEPNS_11GlobalValueEPSs", "llvm::BitcodeReader::Materialize(llvm::GlobalValue*, std::string*)"}, + {"_ZNK4llvm13BitcodeReader18isDematerializableEPKNS_11GlobalValueE", "llvm::BitcodeReader::isDematerializable(llvm::GlobalValue const*) const"}, + {"_ZN4llvm13BitcodeReader13DematerializeEPNS_11GlobalValueE", "llvm::BitcodeReader::Dematerialize(llvm::GlobalValue*)"}, + {"_ZN4llvm13BitcodeReader17MaterializeModuleEPNS_6ModuleEPSs", "llvm::BitcodeReader::MaterializeModule(llvm::Module*, std::string*)"}, + {"_ZN4llvm20getLazyBitcodeModuleEPNS_12MemoryBufferERNS_11LLVMContextEPSs", "llvm::getLazyBitcodeModule(llvm::MemoryBuffer*, llvm::LLVMContext&, std::string*)"}, + {"_ZN4llvm16ParseBitcodeFileEPNS_12MemoryBufferERNS_11LLVMContextEPSs", "llvm::ParseBitcodeFile(llvm::MemoryBuffer*, llvm::LLVMContext&, std::string*)"}, + {"_ZN4llvm22getBitcodeTargetTripleEPNS_12MemoryBufferERNS_11LLVMContextEPSs", "llvm::getBitcodeTargetTriple(llvm::MemoryBuffer*, llvm::LLVMContext&, std::string*)"}, + {"_ZN4llvm12_GLOBAL__N_119ConstantPlaceHolderD1Ev", "llvm::(anonymous namespace)::ConstantPlaceHolder::~ConstantPlaceHolder()"}, + {"_ZN4llvm12_GLOBAL__N_119ConstantPlaceHolderD0Ev", "llvm::(anonymous namespace)::ConstantPlaceHolder::~ConstantPlaceHolder()"}, + {"_ZN4llvm22BitcodeReaderValueList9push_backEPNS_5ValueE", "llvm::BitcodeReaderValueList::push_back(llvm::Value*)"}, + {"_ZN4llvm22BitcodeReaderValueList6resizeEj", "llvm::BitcodeReaderValueList::resize(unsigned int)"}, + {"_ZN4llvm24BitcodeReaderMDValueList9push_backEPNS_5ValueE", "llvm::BitcodeReaderMDValueList::push_back(llvm::Value*)"}, + {"_ZN4llvm24BitcodeReaderMDValueList6resizeEj", "llvm::BitcodeReaderMDValueList::resize(unsigned int)"}, + {"_ZNSt6vectorIN4llvm12PATypeHolderESaIS1_EE7reserveEm", "std::vector>::reserve(unsigned long)"}, + {"_ZN4llvm15SmallVectorImplIyE6resizeEj", "llvm::SmallVectorImpl::resize(unsigned int)"}, + {"_ZN4llvm22BitcodeReaderValueList8shrinkToEj", "llvm::BitcodeReaderValueList::shrinkTo(unsigned int)"}, + + // {"_ZN4llvm13BitcodeReader16getValueTypePairERNS_11SmallVectorIyLj64EEERjjRPNS_5ValueE", + // "llvm::BitcodeReader::getValueTypePair(llvm::SmallVector&, unsigned int&, unsigned int, llvm::Value*&)"}, + // "llvm::BitcodeReader::getValueTypePair(llvm::SmallVector&, unsigned int&, unsigned int, llvm::Value*&)" was returned + + {"_ZN4llvm24BitcodeReaderMDValueList8shrinkToEj", "llvm::BitcodeReaderMDValueList::shrinkTo(unsigned int)"}, + {"_ZN4llvm13BitcodeReaderD1Ev", "llvm::BitcodeReader::~BitcodeReader()"}, + {"_ZN4llvm13BitcodeReaderD0Ev", "llvm::BitcodeReader::~BitcodeReader()"}, + + // {"_ZN4llvm10InvokeInstC2IPPNS_5ValueEEES3_PNS_10BasicBlockES6_T_S7_jRKNS_5TwineEPNS_11InstructionE", + // "llvm::InvokeInst::InvokeInst(llvm::Value*, llvm::BasicBlock*, llvm::BasicBlock*, llvm::Value**, llvm::Value**, unsigned int, llvm::Twine const&, llvm::Instruction*)"}, + // got error + + + // {"_ZN4llvm15InsertValueInstC2IPjEEPNS_5ValueES4_T_S5_RKNS_5TwineEPNS_11InstructionE", + // "llvm::InsertValueInst::InsertValueInst(llvm::Value*, llvm::Value*, unsigned int*, unsigned int*, llvm::Twine const&, llvm::Instruction*)"}, + // got error + + {"_ZNSt6vectorIPN4llvm10BasicBlockESaIS2_EE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPS2_S4_EEmRKS2_", "std::vector>::_M_fill_insert(__gnu_cxx::__normal_iterator>>, unsigned long, llvm::BasicBlock* const&)"}, + {"_ZNSt6vectorIPN4llvm8FunctionESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::Function* const&)"}, + {"_ZNSt6vectorISt4pairIPN4llvm8FunctionES3_ESaIS4_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS4_S6_EERKS4_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + {"_ZN4llvm8DenseMapIPNS_8FunctionEyNS_12DenseMapInfoIS2_EENS3_IyEEE16InsertIntoBucketERKS2_RKyPSt4pairIS2_yE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::Function* const&, unsigned long long const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_8FunctionEyNS_12DenseMapInfoIS2_EENS3_IyEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNSt6vectorISt4pairIjPN4llvm14GlobalVariableEESaIS4_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS4_S6_EERKS4_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + {"_ZN4llvm8DenseMapIPNS_8FunctionESt6vectorISt4pairIjPNS_14GlobalVariableEESaIS7_EENS_12DenseMapInfoIS2_EENSA_IS9_EEE16FindAndConstructERKS2_", "llvm::DenseMap, std::allocator>>, llvm::DenseMapInfo, llvm::DenseMapInfo, std::allocator>>>>::FindAndConstruct(llvm::Function* const&)"}, + + // {"_ZN4llvm8DenseMapIPNS_8FunctionESt6vectorISt4pairIjPNS_14GlobalVariableEESaIS7_EENS_12DenseMapInfoIS2_EENSA_IS9_EEE16InsertIntoBucketERKS2_RKS9_PS4_IS2_S9_E", + // "llvm::DenseMap, std::allocator>>, llvm::DenseMapInfo, llvm::DenseMapInfo, std::allocator>>>>::InsertIntoBucket(llvm::Function* const&, std::vector, std::allocator>> const&, std::pair, std::allocator>>>*)"}, + // "llvm::DenseMap, std::allocator>>, llvm::DenseMapInfo, llvm::DenseMapInfo, std::allocator>>>>::InsertIntoBucket(llvm::Function* const&, std::vector, std::allocator>> const&, std::pair*, std::allocator>>>)" was returned + + {"_ZN4llvm8DenseMapIPNS_8FunctionESt6vectorISt4pairIjPNS_14GlobalVariableEESaIS7_EENS_12DenseMapInfoIS2_EENSA_IS9_EEE4growEj", "llvm::DenseMap, std::allocator>>, llvm::DenseMapInfo, llvm::DenseMapInfo, std::allocator>>>>::grow(unsigned int)"}, + {"_ZNSt6vectorISt4pairIjPN4llvm14GlobalVariableEESaIS4_EEC2ERKS6_", "std::vector, std::allocator>>::vector(std::vector, std::allocator>> const&)"}, + {"_ZNSt6vectorISt4pairIPN4llvm11GlobalAliasEjESaIS4_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS4_S6_EERKS4_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + {"_ZNSt6vectorISt4pairIPN4llvm14GlobalVariableEjESaIS4_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS4_S6_EERKS4_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + {"_ZNSt6vectorIN4llvm11AttrListPtrESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::AttrListPtr const&)"}, + {"_ZNSt6vectorIN4llvm12PATypeHolderESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::PATypeHolder const&)"}, + + // {"_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPSt4pairIPN4llvm8ConstantEjESt6vectorIS6_SaIS6_EEEElEvT_SC_T0_", + // "void std::__introsort_loop<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long)"}, + // got error + + + // {"_ZSt22__final_insertion_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIPN4llvm8ConstantEjESt6vectorIS6_SaIS6_EEEEEvT_SC_", + // "void std::__final_insertion_sort<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>)"}, + // got error + + + // {"_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIPN4llvm8ConstantEjESt6vectorIS6_SaIS6_EEEEEvT_SC_", + // "void std::__insertion_sort<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>)"}, + // got error + + + // {"_ZSt13__heap_selectIN9__gnu_cxx17__normal_iteratorIPSt4pairIPN4llvm8ConstantEjESt6vectorIS6_SaIS6_EEEEEvT_SC_SC_", + // "void std::__heap_select<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>)"}, + // got error + + + // {"_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPSt4pairIPN4llvm8ConstantEjESt6vectorIS6_SaIS6_EEEElS6_EvT_T0_SD_T1_", + // "void std::__adjust_heap<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long, std::pair>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long, long, std::pair)"}, + // got error + + {"_ZNSt6vectorISt4pairIPN4llvm8ConstantEjESaIS4_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS4_S6_EERKS4_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + {"_ZN4llvm8DenseMapIjjNS_12DenseMapInfoIjEES2_E16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm8DenseMapIPNS_8FunctionEyNS_12DenseMapInfoIS2_EENS3_IyEEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm13BitcodeReaderD2Ev", "llvm::BitcodeReader::~BitcodeReader()"}, + {"_ZN4llvm13BitcodeReaderC2EPNS_12MemoryBufferERNS_11LLVMContextE", "llvm::BitcodeReader::BitcodeReader(llvm::MemoryBuffer*, llvm::LLVMContext&)"}, + {"_ZN4llvm14GVMaterializer13DematerializeEPNS_11GlobalValueE", "llvm::GVMaterializer::Dematerialize(llvm::GlobalValue*)"}, + {"_ZNSt6vectorIN4llvm6WeakVHESaIS1_EE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPS1_S3_EEmRKS1_", "std::vector>::_M_fill_insert(__gnu_cxx::__normal_iterator>>, unsigned long, llvm::WeakVH const&)"}, + + // {"_ZNSt15__copy_backwardILb0ESt26random_access_iterator_tagE8__copy_bIPN4llvm6WeakVHES5_EET0_T_S7_S6_", + // "llvm::WeakVH* std::__copy_backward::__copy_b(llvm::WeakVH*, llvm::WeakVH*, llvm::WeakVH*)"}, + // got error + + {"_ZNSt6vectorIN4llvm6WeakVHESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::WeakVH const&)"}, + {"_ZNK4llvm7LLLexer5ErrorENS_5SMLocERKNS_5TwineE", "llvm::LLLexer::Error(llvm::SMLoc, llvm::Twine const&) const"}, + {"_ZN4llvm7LLLexer6atoullEPKcS2_", "llvm::LLLexer::atoull(char const*, char const*)"}, + {"_ZN4llvm7LLLexer11HexIntToValEPKcS2_", "llvm::LLLexer::HexIntToVal(char const*, char const*)"}, + {"_ZN4llvm7LLLexer12HexToIntPairEPKcS2_Py", "llvm::LLLexer::HexToIntPair(char const*, char const*, unsigned long long*)"}, + {"_ZN4llvm7LLLexer16FP80HexToIntPairEPKcS2_Py", "llvm::LLLexer::FP80HexToIntPair(char const*, char const*, unsigned long long*)"}, + {"_ZN4llvm7LLLexerC1EPNS_12MemoryBufferERNS_9SourceMgrERNS_12SMDiagnosticERNS_11LLVMContextE", "llvm::LLLexer::LLLexer(llvm::MemoryBuffer*, llvm::SourceMgr&, llvm::SMDiagnostic&, llvm::LLVMContext&)"}, + {"_ZN4llvm7LLLexerC2EPNS_12MemoryBufferERNS_9SourceMgrERNS_12SMDiagnosticERNS_11LLVMContextE", "llvm::LLLexer::LLLexer(llvm::MemoryBuffer*, llvm::SourceMgr&, llvm::SMDiagnostic&, llvm::LLVMContext&)"}, + {"_ZNK4llvm7LLLexer11getFilenameEv", "llvm::LLLexer::getFilename() const"}, + {"_ZN4llvm7LLLexer11getNextCharEv", "llvm::LLLexer::getNextChar()"}, + {"_ZN4llvm7LLLexer8LexTokenEv", "llvm::LLLexer::LexToken()"}, + {"_ZN4llvm7LLLexer13LexIdentifierEv", "llvm::LLLexer::LexIdentifier()"}, + {"_ZN4llvm7LLLexer11LexPositiveEv", "llvm::LLLexer::LexPositive()"}, + {"_ZN4llvm7LLLexer5LexAtEv", "llvm::LLLexer::LexAt()"}, + {"_ZN4llvm7LLLexer10LexPercentEv", "llvm::LLLexer::LexPercent()"}, + {"_ZN4llvm7LLLexer8LexQuoteEv", "llvm::LLLexer::LexQuote()"}, + {"_ZN4llvm7LLLexer15SkipLineCommentEv", "llvm::LLLexer::SkipLineComment()"}, + {"_ZN4llvm7LLLexer10LexExclaimEv", "llvm::LLLexer::LexExclaim()"}, + {"_ZN4llvm7LLLexer18LexDigitOrNegativeEv", "llvm::LLLexer::LexDigitOrNegative()"}, + {"_Z13UnEscapeLexedRSs", "UnEscapeLexed(std::string&)"}, + {"_ZN4llvm7LLLexer5Lex0xEv", "llvm::LLLexer::Lex0x()"}, + {"_ZN4llvm8LLParser3RunEv", "llvm::LLParser::Run()"}, + {"_ZN4llvm8LLParser21ParseTopLevelEntitiesEv", "llvm::LLParser::ParseTopLevelEntities()"}, + {"_ZN4llvm8LLParser19ValidateEndOfModuleEv", "llvm::LLParser::ValidateEndOfModule()"}, + {"_ZN4llvm8LLParser31ResolveForwardRefBlockAddressesEPNS_8FunctionERSt6vectorISt4pairINS_5ValIDEPNS_11GlobalValueEESaIS8_EEPNS0_16PerFunctionStateE", "llvm::LLParser::ResolveForwardRefBlockAddresses(llvm::Function*, std::vector, std::allocator>>&, llvm::LLParser::PerFunctionState*)"}, + {"_ZN4llvm8LLParser16PerFunctionState5GetBBERKSsNS_5SMLocE", "llvm::LLParser::PerFunctionState::GetBB(std::string const&, llvm::SMLoc)"}, + {"_ZN4llvm8LLParser16PerFunctionState5GetBBEjNS_5SMLocE", "llvm::LLParser::PerFunctionState::GetBB(unsigned int, llvm::SMLoc)"}, + {"_ZN4llvm8LLParser12ParseDeclareEv", "llvm::LLParser::ParseDeclare()"}, + {"_ZN4llvm8LLParser11ParseDefineEv", "llvm::LLParser::ParseDefine()"}, + {"_ZN4llvm8LLParser14ParseModuleAsmEv", "llvm::LLParser::ParseModuleAsm()"}, + {"_ZN4llvm8LLParser21ParseTargetDefinitionEv", "llvm::LLParser::ParseTargetDefinition()"}, + {"_ZN4llvm8LLParser12ParseDepLibsEv", "llvm::LLParser::ParseDepLibs()"}, + {"_ZN4llvm8LLParser16ParseUnnamedTypeEv", "llvm::LLParser::ParseUnnamedType()"}, + {"_ZN4llvm8LLParser14ParseNamedTypeEv", "llvm::LLParser::ParseNamedType()"}, + {"_ZN4llvm8LLParser18ParseUnnamedGlobalEv", "llvm::LLParser::ParseUnnamedGlobal()"}, + {"_ZN4llvm8LLParser16ParseNamedGlobalEv", "llvm::LLParser::ParseNamedGlobal()"}, + {"_ZN4llvm8LLParser23ParseStandaloneMetadataEv", "llvm::LLParser::ParseStandaloneMetadata()"}, + {"_ZN4llvm8LLParser18ParseNamedMetadataEv", "llvm::LLParser::ParseNamedMetadata()"}, + {"_ZN4llvm8LLParser23ParseOptionalVisibilityERj", "llvm::LLParser::ParseOptionalVisibility(unsigned int&)"}, + {"_ZN4llvm8LLParser11ParseGlobalERKSsNS_5SMLocEjbj", "llvm::LLParser::ParseGlobal(std::string const&, llvm::SMLoc, unsigned int, bool, unsigned int)"}, + {"_ZN4llvm8LLParser10ParseTokenENS_5lltok4KindEPKc", "llvm::LLParser::ParseToken(llvm::lltok::Kind, char const*)"}, + {"_ZN4llvm8LLParser19ParseStringConstantERSs", "llvm::LLParser::ParseStringConstant(std::string&)"}, + {"_ZN4llvm8LLParser9ParseTypeERNS_12PATypeHolderEb", "llvm::LLParser::ParseType(llvm::PATypeHolder&, bool)"}, + {"_ZN4llvm8LLParser19ParseFunctionHeaderERPNS_8FunctionEb", "llvm::LLParser::ParseFunctionHeader(llvm::Function*&, bool)"}, + {"_ZN4llvm8LLParser17ParseFunctionBodyERNS_8FunctionE", "llvm::LLParser::ParseFunctionBody(llvm::Function&)"}, + {"_ZN4llvm8LLParser15ParseGlobalTypeERb", "llvm::LLParser::ParseGlobalType(bool&)"}, + {"_ZN4llvm8LLParser20ParseOptionalLinkageERjRb", "llvm::LLParser::ParseOptionalLinkage(unsigned int&, bool&)"}, + {"_ZN4llvm8LLParser10ParseAliasERKSsNS_5SMLocEj", "llvm::LLParser::ParseAlias(std::string const&, llvm::SMLoc, unsigned int)"}, + {"_ZN4llvm8LLParser13ParseMDStringERPNS_8MDStringE", "llvm::LLParser::ParseMDString(llvm::MDString*&)"}, + {"_ZN4llvm8LLParser13ParseMDNodeIDERPNS_6MDNodeERj", "llvm::LLParser::ParseMDNodeID(llvm::MDNode*&, unsigned int&)"}, + {"_ZN4llvm8LLParser11ParseUInt32ERj", "llvm::LLParser::ParseUInt32(unsigned int&)"}, + {"_ZN4llvm8LLParser13ParseMDNodeIDERPNS_6MDNodeE", "llvm::LLParser::ParseMDNodeID(llvm::MDNode*&)"}, + {"_ZN4llvm8LLParser17ParseMDNodeVectorERNS_15SmallVectorImplIPNS_5ValueEEEPNS0_16PerFunctionStateE", "llvm::LLParser::ParseMDNodeVector(llvm::SmallVectorImpl&, llvm::LLParser::PerFunctionState*)"}, + {"_ZN4llvm8LLParser23ParseGlobalTypeAndValueERPNS_8ConstantE", "llvm::LLParser::ParseGlobalTypeAndValue(llvm::Constant*&)"}, + {"_ZN4llvm8LLParser10ParseValIDERNS_5ValIDEPNS0_16PerFunctionStateE", "llvm::LLParser::ParseValID(llvm::ValID&, llvm::LLParser::PerFunctionState*)"}, + {"_ZN4llvm8LLParser22ParseOptionalAddrSpaceERj", "llvm::LLParser::ParseOptionalAddrSpace(unsigned int&)"}, + {"_ZN4llvm8LLParser16ParseGlobalValueEPKNS_4TypeERPNS_8ConstantE", "llvm::LLParser::ParseGlobalValue(llvm::Type const*, llvm::Constant*&)"}, + {"_ZN4llvm8LLParser22ParseOptionalAlignmentERj", "llvm::LLParser::ParseOptionalAlignment(unsigned int&)"}, + {"_ZN4llvm8LLParser12GetGlobalValERKSsPKNS_4TypeENS_5SMLocE", "llvm::LLParser::GetGlobalVal(std::string const&, llvm::Type const*, llvm::SMLoc)"}, + {"_ZN4llvm8LLParser12GetGlobalValEjPKNS_4TypeENS_5SMLocE", "llvm::LLParser::GetGlobalVal(unsigned int, llvm::Type const*, llvm::SMLoc)"}, + {"_ZN4llvm8LLParser18ParseOptionalAttrsERjj", "llvm::LLParser::ParseOptionalAttrs(unsigned int&, unsigned int)"}, + {"_ZN4llvm8LLParser27ParseOptionalStackAlignmentERj", "llvm::LLParser::ParseOptionalStackAlignment(unsigned int&)"}, + {"_ZN4llvm8LLParser24ParseOptionalCallingConvERNS_11CallingConv2IDE", "llvm::LLParser::ParseOptionalCallingConv(llvm::CallingConv::ID&)"}, + {"_ZN4llvm8LLParser24ParseInstructionMetadataEPNS_11InstructionEPNS0_16PerFunctionStateE", "llvm::LLParser::ParseInstructionMetadata(llvm::Instruction*, llvm::LLParser::PerFunctionState*)"}, + {"_ZN4llvm8LLParser22ParseMetadataListValueERNS_5ValIDEPNS0_16PerFunctionStateE", "llvm::LLParser::ParseMetadataListValue(llvm::ValID&, llvm::LLParser::PerFunctionState*)"}, + {"_ZN4llvm8LLParser23ParseOptionalCommaAlignERjRb", "llvm::LLParser::ParseOptionalCommaAlign(unsigned int&, bool&)"}, + {"_ZN4llvm8LLParser14ParseIndexListERNS_15SmallVectorImplIjEERb", "llvm::LLParser::ParseIndexList(llvm::SmallVectorImpl&, bool&)"}, + {"_ZN4llvm8LLParser12ParseTypeRecERNS_12PATypeHolderE", "llvm::LLParser::ParseTypeRec(llvm::PATypeHolder&)"}, + {"_ZN4llvm8LLParser12HandleUpRefsEPKNS_4TypeE", "llvm::LLParser::HandleUpRefs(llvm::Type const*)"}, + {"_ZN4llvm8LLParser15ParseStructTypeERNS_12PATypeHolderEb", "llvm::LLParser::ParseStructType(llvm::PATypeHolder&, bool)"}, + {"_ZN4llvm8LLParser20ParseArrayVectorTypeERNS_12PATypeHolderEb", "llvm::LLParser::ParseArrayVectorType(llvm::PATypeHolder&, bool)"}, + {"_ZN4llvm8LLParser17ParseFunctionTypeERNS_12PATypeHolderE", "llvm::LLParser::ParseFunctionType(llvm::PATypeHolder&)"}, + {"_ZN4llvm8LLParser18ParseParameterListERNS_15SmallVectorImplINS0_9ParamInfoEEERNS0_16PerFunctionStateE", "llvm::LLParser::ParseParameterList(llvm::SmallVectorImpl&, llvm::LLParser::PerFunctionState&)"}, + {"_ZN4llvm8LLParser10ParseValueEPKNS_4TypeERPNS_5ValueERNS0_16PerFunctionStateE", "llvm::LLParser::ParseValue(llvm::Type const*, llvm::Value*&, llvm::LLParser::PerFunctionState&)"}, + {"_ZN4llvm8LLParser17ParseArgumentListERSt6vectorINS0_7ArgInfoESaIS2_EERbb", "llvm::LLParser::ParseArgumentList(std::vector>&, bool&, bool)"}, + {"_ZN4llvm8LLParser16PerFunctionStateC1ERS0_RNS_8FunctionEi", "llvm::LLParser::PerFunctionState::PerFunctionState(llvm::LLParser&, llvm::Function&, int)"}, + {"_ZN4llvm8LLParser16PerFunctionStateC2ERS0_RNS_8FunctionEi", "llvm::LLParser::PerFunctionState::PerFunctionState(llvm::LLParser&, llvm::Function&, int)"}, + {"_ZN4llvm8LLParser16PerFunctionStateD1Ev", "llvm::LLParser::PerFunctionState::~PerFunctionState()"}, + {"_ZN4llvm8LLParser16PerFunctionStateD2Ev", "llvm::LLParser::PerFunctionState::~PerFunctionState()"}, + {"_ZN4llvm8LLParser16PerFunctionState14FinishFunctionEv", "llvm::LLParser::PerFunctionState::FinishFunction()"}, + {"_ZN4llvm8LLParser16PerFunctionState6GetValERKSsPKNS_4TypeENS_5SMLocE", "llvm::LLParser::PerFunctionState::GetVal(std::string const&, llvm::Type const*, llvm::SMLoc)"}, + {"_ZN4llvm8LLParser16PerFunctionState6GetValEjPKNS_4TypeENS_5SMLocE", "llvm::LLParser::PerFunctionState::GetVal(unsigned int, llvm::Type const*, llvm::SMLoc)"}, + {"_ZN4llvm8LLParser16PerFunctionState11SetInstNameEiRKSsNS_5SMLocEPNS_11InstructionE", "llvm::LLParser::PerFunctionState::SetInstName(int, std::string const&, llvm::SMLoc, llvm::Instruction*)"}, + {"_ZN4llvm8LLParser16PerFunctionState8DefineBBERKSsNS_5SMLocE", "llvm::LLParser::PerFunctionState::DefineBB(std::string const&, llvm::SMLoc)"}, + {"_ZN4llvm8LLParser18ParseMetadataValueERNS_5ValIDEPNS0_16PerFunctionStateE", "llvm::LLParser::ParseMetadataValue(llvm::ValID&, llvm::LLParser::PerFunctionState*)"}, + {"_ZN4llvm8LLParser22ParseGlobalValueVectorERNS_15SmallVectorImplIPNS_8ConstantEEE", "llvm::LLParser::ParseGlobalValueVector(llvm::SmallVectorImpl&)"}, + {"_ZN4llvm8LLParser17ParseCmpPredicateERjj", "llvm::LLParser::ParseCmpPredicate(unsigned int&, unsigned int)"}, + {"_ZN4llvm8LLParser19ConvertValIDToValueEPKNS_4TypeERNS_5ValIDERPNS_5ValueEPNS0_16PerFunctionStateE", "llvm::LLParser::ConvertValIDToValue(llvm::Type const*, llvm::ValID&, llvm::Value*&, llvm::LLParser::PerFunctionState*)"}, + {"_ZN4llvm8LLParser17ParseTypeAndValueERPNS_5ValueERNS0_16PerFunctionStateE", "llvm::LLParser::ParseTypeAndValue(llvm::Value*&, llvm::LLParser::PerFunctionState&)"}, + {"_ZN4llvm8LLParser22ParseTypeAndBasicBlockERPNS_10BasicBlockERNS_5SMLocERNS0_16PerFunctionStateE", "llvm::LLParser::ParseTypeAndBasicBlock(llvm::BasicBlock*&, llvm::SMLoc&, llvm::LLParser::PerFunctionState&)"}, + {"_ZN4llvm8LLParser15ParseBasicBlockERNS0_16PerFunctionStateE", "llvm::LLParser::ParseBasicBlock(llvm::LLParser::PerFunctionState&)"}, + {"_ZN4llvm8LLParser16ParseInstructionERPNS_11InstructionEPNS_10BasicBlockERNS0_16PerFunctionStateE", "llvm::LLParser::ParseInstruction(llvm::Instruction*&, llvm::BasicBlock*, llvm::LLParser::PerFunctionState&)"}, + {"_ZN4llvm8LLParser8ParseRetERPNS_11InstructionEPNS_10BasicBlockERNS0_16PerFunctionStateE", "llvm::LLParser::ParseRet(llvm::Instruction*&, llvm::BasicBlock*, llvm::LLParser::PerFunctionState&)"}, + {"_ZN4llvm8LLParser7ParseBrERPNS_11InstructionERNS0_16PerFunctionStateE", "llvm::LLParser::ParseBr(llvm::Instruction*&, llvm::LLParser::PerFunctionState&)"}, + {"_ZN4llvm8LLParser11ParseSwitchERPNS_11InstructionERNS0_16PerFunctionStateE", "llvm::LLParser::ParseSwitch(llvm::Instruction*&, llvm::LLParser::PerFunctionState&)"}, + {"_ZN4llvm8LLParser15ParseIndirectBrERPNS_11InstructionERNS0_16PerFunctionStateE", "llvm::LLParser::ParseIndirectBr(llvm::Instruction*&, llvm::LLParser::PerFunctionState&)"}, + {"_ZN4llvm8LLParser11ParseInvokeERPNS_11InstructionERNS0_16PerFunctionStateE", "llvm::LLParser::ParseInvoke(llvm::Instruction*&, llvm::LLParser::PerFunctionState&)"}, + {"_ZN4llvm8LLParser15ParseArithmeticERPNS_11InstructionERNS0_16PerFunctionStateEjj", "llvm::LLParser::ParseArithmetic(llvm::Instruction*&, llvm::LLParser::PerFunctionState&, unsigned int, unsigned int)"}, + {"_ZN4llvm8LLParser12ParseLogicalERPNS_11InstructionERNS0_16PerFunctionStateEj", "llvm::LLParser::ParseLogical(llvm::Instruction*&, llvm::LLParser::PerFunctionState&, unsigned int)"}, + {"_ZN4llvm8LLParser12ParseCompareERPNS_11InstructionERNS0_16PerFunctionStateEj", "llvm::LLParser::ParseCompare(llvm::Instruction*&, llvm::LLParser::PerFunctionState&, unsigned int)"}, + {"_ZN4llvm8LLParser9ParseCastERPNS_11InstructionERNS0_16PerFunctionStateEj", "llvm::LLParser::ParseCast(llvm::Instruction*&, llvm::LLParser::PerFunctionState&, unsigned int)"}, + {"_ZN4llvm8LLParser11ParseSelectERPNS_11InstructionERNS0_16PerFunctionStateE", "llvm::LLParser::ParseSelect(llvm::Instruction*&, llvm::LLParser::PerFunctionState&)"}, + {"_ZN4llvm8LLParser11ParseVA_ArgERPNS_11InstructionERNS0_16PerFunctionStateE", "llvm::LLParser::ParseVA_Arg(llvm::Instruction*&, llvm::LLParser::PerFunctionState&)"}, + {"_ZN4llvm8LLParser19ParseExtractElementERPNS_11InstructionERNS0_16PerFunctionStateE", "llvm::LLParser::ParseExtractElement(llvm::Instruction*&, llvm::LLParser::PerFunctionState&)"}, + {"_ZN4llvm8LLParser18ParseInsertElementERPNS_11InstructionERNS0_16PerFunctionStateE", "llvm::LLParser::ParseInsertElement(llvm::Instruction*&, llvm::LLParser::PerFunctionState&)"}, + {"_ZN4llvm8LLParser18ParseShuffleVectorERPNS_11InstructionERNS0_16PerFunctionStateE", "llvm::LLParser::ParseShuffleVector(llvm::Instruction*&, llvm::LLParser::PerFunctionState&)"}, + {"_ZN4llvm8LLParser8ParsePHIERPNS_11InstructionERNS0_16PerFunctionStateE", "llvm::LLParser::ParsePHI(llvm::Instruction*&, llvm::LLParser::PerFunctionState&)"}, + {"_ZN4llvm8LLParser9ParseCallERPNS_11InstructionERNS0_16PerFunctionStateEb", "llvm::LLParser::ParseCall(llvm::Instruction*&, llvm::LLParser::PerFunctionState&, bool)"}, + {"_ZN4llvm8LLParser10ParseAllocERPNS_11InstructionERNS0_16PerFunctionStateEPNS_10BasicBlockEb", "llvm::LLParser::ParseAlloc(llvm::Instruction*&, llvm::LLParser::PerFunctionState&, llvm::BasicBlock*, bool)"}, + {"_ZN4llvm8LLParser9ParseFreeERPNS_11InstructionERNS0_16PerFunctionStateEPNS_10BasicBlockE", "llvm::LLParser::ParseFree(llvm::Instruction*&, llvm::LLParser::PerFunctionState&, llvm::BasicBlock*)"}, + {"_ZN4llvm8LLParser9ParseLoadERPNS_11InstructionERNS0_16PerFunctionStateEb", "llvm::LLParser::ParseLoad(llvm::Instruction*&, llvm::LLParser::PerFunctionState&, bool)"}, + {"_ZN4llvm8LLParser10ParseStoreERPNS_11InstructionERNS0_16PerFunctionStateEb", "llvm::LLParser::ParseStore(llvm::Instruction*&, llvm::LLParser::PerFunctionState&, bool)"}, + {"_ZN4llvm8LLParser14ParseGetResultERPNS_11InstructionERNS0_16PerFunctionStateE", "llvm::LLParser::ParseGetResult(llvm::Instruction*&, llvm::LLParser::PerFunctionState&)"}, + {"_ZN4llvm8LLParser18ParseGetElementPtrERPNS_11InstructionERNS0_16PerFunctionStateE", "llvm::LLParser::ParseGetElementPtr(llvm::Instruction*&, llvm::LLParser::PerFunctionState&)"}, + {"_ZN4llvm8LLParser17ParseExtractValueERPNS_11InstructionERNS0_16PerFunctionStateE", "llvm::LLParser::ParseExtractValue(llvm::Instruction*&, llvm::LLParser::PerFunctionState&)"}, + {"_ZN4llvm8LLParser16ParseInsertValueERPNS_11InstructionERNS0_16PerFunctionStateE", "llvm::LLParser::ParseInsertValue(llvm::Instruction*&, llvm::LLParser::PerFunctionState&)"}, + {"_ZN4llvm8DenseMapIPNS_11InstructionESt6vectorINS_8LLParser5MDRefESaIS5_EENS_12DenseMapInfoIS2_EENS8_IS7_EEE5clearEv", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::clear()"}, + {"_ZNSt3mapIjSt4pairIN4llvm10TrackingVHINS1_6MDNodeEEENS1_5SMLocEESt4lessIjESaIS0_IKjS6_EEEixERS9_", "std::map, llvm::SMLoc>, std::less, std::allocator, llvm::SMLoc>>>>::operator[](unsigned int const&)"}, + + // {"_ZNSt3mapISsSt4pairIPN4llvm11GlobalValueENS1_5SMLocEESt4lessISsESaIS0_IKSsS5_EEEixERS8_", + // "std::map, std::less, std::allocator>>>::operator[](std::string const&)"}, + // "std::map, std::less, std::allocator>>::operator[](std::less&)" was returned + + + // {"_ZNSt3mapISsSt4pairIPN4llvm5ValueENS1_5SMLocEESt4lessISsESaIS0_IKSsS5_EEEixERS8_", + // "std::map, std::less, std::allocator>>>::operator[](std::string const&)"}, + // "std::map, std::less, std::allocator>>::operator[](std::less&)" was returned + + {"_ZNSt3mapIN4llvm5ValIDESt6vectorISt4pairIS1_PNS0_11GlobalValueEESaIS6_EESt4lessIS1_ESaIS3_IKS1_S8_EEEixERSB_", "std::map, std::allocator>>, std::less, std::allocator, std::allocator>>>>>::operator[](llvm::ValID const&)"}, + + // {"_ZNSt4pairIN4llvm5ValIDEPNS0_11GlobalValueEEC2IS1_PNS0_14GlobalVariableEEERKS_IT_T0_E", + // "std::pair::pair(std::pair const&)"}, + // "std::pair const& std::pair::pair()" was returned + + {"_ZNSt4pairIN4llvm5ValIDEPNS0_14GlobalVariableEEC2ERKS1_RKS3_", "std::pair::pair(llvm::ValID const&, llvm::GlobalVariable* const&)"}, + {"_ZN9__gnu_cxx13new_allocatorISt4pairIN4llvm5ValIDEPNS2_11GlobalValueEEE9constructEPS6_RKS6_", "__gnu_cxx::new_allocator>::construct(std::pair*, std::pair const&)"}, + {"_ZNSt6vectorISt4pairIN4llvm5ValIDEPNS1_11GlobalValueEESaIS5_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS5_S7_EERKS5_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + {"_ZNSt4pairIN4llvm5ValIDEPNS0_11GlobalValueEEaSERKS4_", "std::pair::operator=(std::pair const&)"}, + + // {"_ZSt24__uninitialized_copy_auxIPSt4pairIN4llvm5ValIDEPNS1_11GlobalValueEES6_ET0_T_S8_S7_St12__false_type", + // "std::pair* std::__uninitialized_copy_aux*, std::pair*>(std::pair*, std::pair*, std::pair*, std::__false_type)"}, + // got error + + + // {"_ZNSt4pairIKN4llvm5ValIDESt6vectorIS_IS1_PNS0_11GlobalValueEESaIS6_EEEC2ERS2_RKS8_", + // "std::pair, std::allocator>>>::pair(llvm::ValID const&, std::vector, std::allocator>> const&)"}, + // "std::pair, std::allocator<>>>::pair(llvm::ValID const&, std::vector, std::allocator<>> const&)" was returned + + + // {"_ZSt24__uninitialized_copy_auxIN9__gnu_cxx17__normal_iteratorIPKSt4pairIN4llvm5ValIDEPNS3_11GlobalValueEESt6vectorIS7_SaIS7_EEEEPS7_ET0_T_SG_SF_St12__false_type", + // "std::pair* std::__uninitialized_copy_aux<__gnu_cxx::__normal_iterator const*, std::vector, std::allocator>>>, std::pair*>(__gnu_cxx::__normal_iterator const*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator const*, std::vector, std::allocator>>>, std::pair*, std::__false_type)"}, + // got error + + + // {"_ZNSt8_Rb_treeIN4llvm5ValIDESt4pairIKS1_St6vectorIS2_IS1_PNS0_11GlobalValueEESaIS7_EEESt10_Select1stISA_ESt4lessIS1_ESaISA_EE16_M_insert_uniqueESt17_Rb_tree_iteratorISA_ERKSA_", + // "std::_Rb_tree, std::allocator>>>, std::_Select1st, std::allocator>>>>, std::less, std::allocator, std::allocator>>>>>::_M_insert_unique(std::_Rb_tree_iterator, std::allocator>>>>, std::pair, std::allocator>>> const&)"}, + // "std::_Rb_tree, std::allocator<>>>, std::_Select1st, std::allocator<>>>>, std::less, std::allocator, std::allocator<>>>>>::_M_insert_unique(std::_Rb_tree_iterator, std::allocator<>>>>, std::pair, std::allocator<>>> const&)" was returned + + + // {"_ZNSt8_Rb_treeIN4llvm5ValIDESt4pairIKS1_St6vectorIS2_IS1_PNS0_11GlobalValueEESaIS7_EEESt10_Select1stISA_ESt4lessIS1_ESaISA_EE9_M_insertEPSt18_Rb_tree_node_baseSI_RKSA_", + // "std::_Rb_tree, std::allocator>>>, std::_Select1st, std::allocator>>>>, std::less, std::allocator, std::allocator>>>>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair, std::allocator>>> const&)"}, + // "std::_Rb_tree, std::allocator<>>>, std::_Select1st, std::allocator<>>>>, std::less, std::allocator, std::allocator<>>>>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair, std::allocator<>>> const&)" was returned + + + // {"_ZNSt8_Rb_treeIN4llvm5ValIDESt4pairIKS1_St6vectorIS2_IS1_PNS0_11GlobalValueEESaIS7_EEESt10_Select1stISA_ESt4lessIS1_ESaISA_EE16_M_insert_uniqueERKSA_", + // "std::_Rb_tree, std::allocator>>>, std::_Select1st, std::allocator>>>>, std::less, std::allocator, std::allocator>>>>>::_M_insert_unique(std::pair, std::allocator>>> const&)"}, + // "std::_Rb_tree, std::allocator<>>>, std::_Select1st, std::allocator<>>>>, std::less, std::allocator, std::allocator<>>>>>::_M_insert_unique(std::pair, std::allocator<>>> const&)" was returned + + + // {"_ZNSt4pairIKN4llvm5ValIDESt6vectorIS_IS1_PNS0_11GlobalValueEESaIS6_EEEC2ERKS9_", + // "std::pair, std::allocator>>>::pair(std::pair, std::allocator>>> const&)"}, + // "std::pair, std::allocator<>>>::pair(std::pair, std::allocator<>>> const&)" was returned + + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsS0_IPN4llvm5ValueENS2_5SMLocEEESt10_Select1stIS7_ESt4lessISsESaIS7_EE11equal_rangeERS1_", + // "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::equal_range(std::string const&)"}, + // "std::_Rb_tree>, std::_Select1st<>, std::less, std::allocator<>>::equal_range(std::pair&)" was returned + + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsS0_IPN4llvm5ValueENS2_5SMLocEEESt10_Select1stIS7_ESt4lessISsESaIS7_EE5eraseESt17_Rb_tree_iteratorIS7_ESF_", + // "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::erase(std::_Rb_tree_iterator>>, std::_Rb_tree_iterator>>)"}, + // "std::_Rb_tree>, std::_Select1st<>, std::less, std::allocator<>>::erase(std::_Rb_tree_iterator<>, std::_Rb_tree_iterator)" was returned + + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsS0_IPN4llvm5ValueENS2_5SMLocEEESt10_Select1stIS7_ESt4lessISsESaIS7_EE8_M_eraseEPSt13_Rb_tree_nodeIS7_E", + // "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_erase(std::_Rb_tree_node>>*)"}, + // "std::_Rb_tree>, std::_Select1st<>, std::less, std::allocator<>>::_M_erase(std::_Rb_tree_node<>*)" was returned + + {"_ZNSt8_Rb_treeIjSt4pairIKjS0_IPN4llvm5ValueENS2_5SMLocEEESt10_Select1stIS7_ESt4lessIjESaIS7_EE5eraseESt17_Rb_tree_iteratorIS7_ESF_", "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::erase(std::_Rb_tree_iterator>>, std::_Rb_tree_iterator>>)"}, + {"_ZNSt8_Rb_treeIjSt4pairIKjS0_IPN4llvm5ValueENS2_5SMLocEEESt10_Select1stIS7_ESt4lessIjESaIS7_EE8_M_eraseEPSt13_Rb_tree_nodeIS7_E", "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_erase(std::_Rb_tree_node>>*)"}, + {"_ZNSt8_Rb_treeIjSt4pairIKjS0_IPN4llvm5ValueENS2_5SMLocEEESt10_Select1stIS7_ESt4lessIjESaIS7_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS7_ERKS7_", "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_insert_unique(std::_Rb_tree_iterator>>, std::pair> const&)"}, + {"_ZNSt8_Rb_treeIjSt4pairIKjS0_IPN4llvm5ValueENS2_5SMLocEEESt10_Select1stIS7_ESt4lessIjESaIS7_EE16_M_insert_uniqueERKS7_", "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_insert_unique(std::pair> const&)"}, + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsS0_IPN4llvm5ValueENS2_5SMLocEEESt10_Select1stIS7_ESt4lessISsESaIS7_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS7_ERKS7_", + // "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_insert_unique(std::_Rb_tree_iterator>>, std::pair> const&)"}, + // "std::_Rb_tree>, std::_Select1st<>, std::less, std::allocator<>>::_M_insert_unique(std::_Rb_tree_iterator<>, const&)" was returned + + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsS0_IPN4llvm5ValueENS2_5SMLocEEESt10_Select1stIS7_ESt4lessISsESaIS7_EE9_M_insertEPSt18_Rb_tree_node_baseSF_RKS7_", + // "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair> const&)"}, + // "std::_Rb_tree>, std::_Select1st<>, std::less, std::allocator<>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base, const&)" was returned + + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsS0_IPN4llvm5ValueENS2_5SMLocEEESt10_Select1stIS7_ESt4lessISsESaIS7_EE16_M_insert_uniqueERKS7_", + // "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_insert_unique(std::pair> const&)"}, + // "std::_Rb_tree>, std::_Select1st<>, std::less, std::allocator<>>::_M_insert_unique( const&)" was returned + + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsS0_IPN4llvm5ValueENS2_5SMLocEEESt10_Select1stIS7_ESt4lessISsESaIS7_EE4findERS1_", + // "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::find(std::string const&)"}, + // "std::_Rb_tree>, std::_Select1st<>, std::less, std::allocator<>>::find(std::pair&)" was returned + + + // {"_ZNSt8_Rb_treeIN4llvm5ValIDESt4pairIKS1_St6vectorIS2_IS1_PNS0_11GlobalValueEESaIS7_EEESt10_Select1stISA_ESt4lessIS1_ESaISA_EE4findERS3_", + // "std::_Rb_tree, std::allocator>>>, std::_Select1st, std::allocator>>>>, std::less, std::allocator, std::allocator>>>>>::find(llvm::ValID const&)"}, + // "std::_Rb_tree, std::allocator<>>>, std::_Select1st, std::allocator<>>>>, std::less, std::allocator, std::allocator<>>>>>::find(llvm::ValID const&)" was returned + + {"_ZNSt6vectorIN4llvm8LLParser7ArgInfoESaIS2_EED2Ev", "std::vector>::~vector()"}, + {"_ZNSt6vectorIN4llvm8LLParser7ArgInfoESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::LLParser::ArgInfo const&)"}, + {"_ZN4llvm23SmallVectorTemplateBaseINS_8LLParser9ParamInfoELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZNSt6vectorIN4llvm8LLParser11UpRefRecordESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::LLParser::UpRefRecord const&)"}, + {"_ZNSt8_Rb_treeIjSt4pairIKjS0_IN4llvm12PATypeHolderENS2_5SMLocEEESt10_Select1stIS6_ESt4lessIjESaIS6_EE16_M_insert_uniqueERKS6_", "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_insert_unique(std::pair> const&)"}, + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsS0_IN4llvm12PATypeHolderENS2_5SMLocEEESt10_Select1stIS6_ESt4lessISsESaIS6_EE16_M_insert_uniqueERKS6_", + // "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_insert_unique(std::pair> const&)"}, + // "std::_Rb_tree>, std::_Select1st<>, std::less, std::allocator<>>::_M_insert_unique( const&)" was returned + + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsS0_IN4llvm12PATypeHolderENS2_5SMLocEEESt10_Select1stIS6_ESt4lessISsESaIS6_EE9_M_insertEPSt18_Rb_tree_node_baseSE_RKS6_", + // "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair> const&)"}, + // "std::_Rb_tree>, std::_Select1st<>, std::less, std::allocator<>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base, const&)" was returned + + + // {"_ZSt6__findIPN4llvm12PATypeHandleEPKNS0_4TypeEET_S6_S6_RKT0_St26random_access_iterator_tag", + // "llvm::PATypeHandle* std::__find(llvm::PATypeHandle*, llvm::PATypeHandle*, llvm::Type const* const&, std::random_access_iterator_tag)"}, + // got error + + {"_ZNSt6vectorIN4llvm8LLParser5MDRefESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::LLParser::MDRef const&)"}, + {"_ZN4llvm8DenseMapIPNS_11InstructionESt6vectorINS_8LLParser5MDRefESaIS5_EENS_12DenseMapInfoIS2_EENS8_IS7_EEE16FindAndConstructERKS2_", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::FindAndConstruct(llvm::Instruction* const&)"}, + {"_ZN4llvm8DenseMapIPNS_11InstructionESt6vectorINS_8LLParser5MDRefESaIS5_EENS_12DenseMapInfoIS2_EENS8_IS7_EEE16InsertIntoBucketERKS2_RKS7_PSt4pairIS2_S7_E", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::InsertIntoBucket(llvm::Instruction* const&, std::vector> const&, std::pair>>*)"}, + {"_ZN4llvm8DenseMapIPNS_11InstructionESt6vectorINS_8LLParser5MDRefESaIS5_EENS_12DenseMapInfoIS2_EENS8_IS7_EEE4growEj", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::grow(unsigned int)"}, + {"_ZNSt6vectorIN4llvm8LLParser5MDRefESaIS2_EEC2ERKS4_", "std::vector>::vector(std::vector> const&)"}, + {"_ZNSt8_Rb_treeIjSt4pairIKjS0_IPN4llvm11GlobalValueENS2_5SMLocEEESt10_Select1stIS7_ESt4lessIjESaIS7_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS7_ERKS7_", "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_insert_unique(std::_Rb_tree_iterator>>, std::pair> const&)"}, + {"_ZNSt8_Rb_treeIjSt4pairIKjS0_IPN4llvm11GlobalValueENS2_5SMLocEEESt10_Select1stIS7_ESt4lessIjESaIS7_EE16_M_insert_uniqueERKS7_", "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_insert_unique(std::pair> const&)"}, + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsS0_IPN4llvm11GlobalValueENS2_5SMLocEEESt10_Select1stIS7_ESt4lessISsESaIS7_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS7_ERKS7_", + // "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_insert_unique(std::_Rb_tree_iterator>>, std::pair> const&)"}, + // "std::_Rb_tree>, std::_Select1st<>, std::less, std::allocator<>>::_M_insert_unique(std::_Rb_tree_iterator<>, const&)" was returned + + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsS0_IPN4llvm11GlobalValueENS2_5SMLocEEESt10_Select1stIS7_ESt4lessISsESaIS7_EE9_M_insertEPSt18_Rb_tree_node_baseSF_RKS7_", + // "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair> const&)"}, + // "std::_Rb_tree>, std::_Select1st<>, std::less, std::allocator<>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base, const&)" was returned + + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsS0_IPN4llvm11GlobalValueENS2_5SMLocEEESt10_Select1stIS7_ESt4lessISsESaIS7_EE16_M_insert_uniqueERKS7_", + // "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_insert_unique(std::pair> const&)"}, + // "std::_Rb_tree>, std::_Select1st<>, std::less, std::allocator<>>::_M_insert_unique( const&)" was returned + + {"_ZNSt6vectorIPN4llvm11GlobalValueESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::GlobalValue* const&)"}, + {"_ZN4llvm6iplistINS_14GlobalVariableENS_12ilist_traitsIS1_EEE8transferENS_14ilist_iteratorIS1_EERS4_S6_S6_", "llvm::iplist>::transfer(llvm::ilist_iterator, llvm::iplist>&, llvm::ilist_iterator, llvm::ilist_iterator)"}, + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsS0_IPN4llvm11GlobalValueENS2_5SMLocEEESt10_Select1stIS7_ESt4lessISsESaIS7_EE11equal_rangeERS1_", + // "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::equal_range(std::string const&)"}, + // "std::_Rb_tree>, std::_Select1st<>, std::less, std::allocator<>>::equal_range(std::pair&)" was returned + + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsS0_IPN4llvm11GlobalValueENS2_5SMLocEEESt10_Select1stIS7_ESt4lessISsESaIS7_EE5eraseESt17_Rb_tree_iteratorIS7_ESF_", + // "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::erase(std::_Rb_tree_iterator>>, std::_Rb_tree_iterator>>)"}, + // "std::_Rb_tree>, std::_Select1st<>, std::less, std::allocator<>>::erase(std::_Rb_tree_iterator<>, std::_Rb_tree_iterator)" was returned + + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsS0_IPN4llvm11GlobalValueENS2_5SMLocEEESt10_Select1stIS7_ESt4lessISsESaIS7_EE4findERS1_", + // "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::find(std::string const&)"}, + // "std::_Rb_tree>, std::_Select1st<>, std::less, std::allocator<>>::find(std::pair&)" was returned + + {"_ZNSt6vectorIN4llvm10TrackingVHINS0_6MDNodeEEESaIS3_EE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPS3_S5_EEmRKS3_", "std::vector, std::allocator>>::_M_fill_insert(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, unsigned long, llvm::TrackingVH const&)"}, + {"_ZNSt8_Rb_treeIjSt4pairIKjS0_IN4llvm10TrackingVHINS2_6MDNodeEEENS2_5SMLocEEESt10_Select1stIS8_ESt4lessIjESaIS8_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS8_ERKS8_", "std::_Rb_tree, llvm::SMLoc>>, std::_Select1st, llvm::SMLoc>>>, std::less, std::allocator, llvm::SMLoc>>>>::_M_insert_unique(std::_Rb_tree_iterator, llvm::SMLoc>>>, std::pair, llvm::SMLoc>> const&)"}, + {"_ZNSt8_Rb_treeIjSt4pairIKjS0_IN4llvm10TrackingVHINS2_6MDNodeEEENS2_5SMLocEEESt10_Select1stIS8_ESt4lessIjESaIS8_EE9_M_insertEPSt18_Rb_tree_node_baseSG_RKS8_", "std::_Rb_tree, llvm::SMLoc>>, std::_Select1st, llvm::SMLoc>>>, std::less, std::allocator, llvm::SMLoc>>>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair, llvm::SMLoc>> const&)"}, + {"_ZNSt8_Rb_treeIjSt4pairIKjS0_IN4llvm10TrackingVHINS2_6MDNodeEEENS2_5SMLocEEESt10_Select1stIS8_ESt4lessIjESaIS8_EE16_M_insert_uniqueERKS8_", "std::_Rb_tree, llvm::SMLoc>>, std::_Select1st, llvm::SMLoc>>>, std::less, std::allocator, llvm::SMLoc>>>>::_M_insert_unique(std::pair, llvm::SMLoc>> const&)"}, + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsS0_IN4llvm12PATypeHolderENS2_5SMLocEEESt10_Select1stIS6_ESt4lessISsESaIS6_EE4findERS1_", + // "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::find(std::string const&)"}, + // "std::_Rb_tree>, std::_Select1st<>, std::less, std::allocator<>>::find(std::pair&)" was returned + + {"_ZN4llvm8DenseMapIPNS_11InstructionESt6vectorINS_8LLParser5MDRefESaIS5_EENS_12DenseMapInfoIS2_EENS8_IS7_EEE16shrink_and_clearEv", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::shrink_and_clear()"}, + {"_ZN4llvm13ParseAssemblyEPNS_12MemoryBufferEPNS_6ModuleERNS_12SMDiagnosticERNS_11LLVMContextE", "llvm::ParseAssembly(llvm::MemoryBuffer*, llvm::Module*, llvm::SMDiagnostic&, llvm::LLVMContext&)"}, + {"_ZN4llvm17ParseAssemblyFileERKSsRNS_12SMDiagnosticERNS_11LLVMContextE", "llvm::ParseAssemblyFile(std::string const&, llvm::SMDiagnostic&, llvm::LLVMContext&)"}, + {"_ZN4llvm19ParseAssemblyStringEPKcPNS_6ModuleERNS_12SMDiagnosticERNS_11LLVMContextE", "llvm::ParseAssemblyString(char const*, llvm::Module*, llvm::SMDiagnostic&, llvm::LLVMContext&)"}, + {"_ZN4llvm8LLParserD2Ev", "llvm::LLParser::~LLParser()"}, + {"_ZN4llvm7LLLexerD2Ev", "llvm::LLLexer::~LLLexer()"}, + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsS0_IN4llvm12PATypeHolderENS2_5SMLocEEESt10_Select1stIS6_ESt4lessISsESaIS6_EE8_M_eraseEPSt13_Rb_tree_nodeIS6_E", + // "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_erase(std::_Rb_tree_node>>*)"}, + // "std::_Rb_tree>, std::_Select1st<>, std::less, std::allocator<>>::_M_erase(std::_Rb_tree_node<>*)" was returned + + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsS0_IN4llvm12PATypeHolderENS2_5SMLocEEESt10_Select1stIS6_ESt4lessISsESaIS6_EE15_M_destroy_nodeEPSt13_Rb_tree_nodeIS6_E", + // "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_destroy_node(std::_Rb_tree_node>>*)"}, + // "std::_Rb_tree>, std::_Select1st<>, std::less, std::allocator<>>::_M_destroy_node(std::_Rb_tree_node<>*)" was returned + + {"_ZNSt8_Rb_treeIjSt4pairIKjS0_IN4llvm12PATypeHolderENS2_5SMLocEEESt10_Select1stIS6_ESt4lessIjESaIS6_EE8_M_eraseEPSt13_Rb_tree_nodeIS6_E", "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_erase(std::_Rb_tree_node>>*)"}, + {"_ZNSt8_Rb_treeIjSt4pairIKjS0_IN4llvm10TrackingVHINS2_6MDNodeEEENS2_5SMLocEEESt10_Select1stIS8_ESt4lessIjESaIS8_EE8_M_eraseEPSt13_Rb_tree_nodeIS8_E", "std::_Rb_tree, llvm::SMLoc>>, std::_Select1st, llvm::SMLoc>>>, std::less, std::allocator, llvm::SMLoc>>>>::_M_erase(std::_Rb_tree_node, llvm::SMLoc>>>*)"}, + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsS0_IPN4llvm11GlobalValueENS2_5SMLocEEESt10_Select1stIS7_ESt4lessISsESaIS7_EE8_M_eraseEPSt13_Rb_tree_nodeIS7_E", + // "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_erase(std::_Rb_tree_node>>*)"}, + // "std::_Rb_tree>, std::_Select1st<>, std::less, std::allocator<>>::_M_erase(std::_Rb_tree_node<>*)" was returned + + {"_ZNSt8_Rb_treeIjSt4pairIKjS0_IPN4llvm11GlobalValueENS2_5SMLocEEESt10_Select1stIS7_ESt4lessIjESaIS7_EE8_M_eraseEPSt13_Rb_tree_nodeIS7_E", "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_erase(std::_Rb_tree_node>>*)"}, + + // {"_ZNSt8_Rb_treeIN4llvm5ValIDESt4pairIKS1_St6vectorIS2_IS1_PNS0_11GlobalValueEESaIS7_EEESt10_Select1stISA_ESt4lessIS1_ESaISA_EE8_M_eraseEPSt13_Rb_tree_nodeISA_E", + // "std::_Rb_tree, std::allocator>>>, std::_Select1st, std::allocator>>>>, std::less, std::allocator, std::allocator>>>>>::_M_erase(std::_Rb_tree_node, std::allocator>>>>*)"}, + // "std::_Rb_tree, std::allocator<>>>, std::_Select1st, std::allocator<>>>>, std::less, std::allocator, std::allocator<>>>>>::_M_erase(std::_Rb_tree_node, std::allocator<>>>>*)" was returned + + + // {"_ZNSt4pairIKN4llvm5ValIDESt6vectorIS_IS1_PNS0_11GlobalValueEESaIS6_EEED2Ev", + // "std::pair, std::allocator>>>::~pair()"}, + // "std::pair, std::allocator<>>>::~pair()" was returned + + + // {"_ZSt13__destroy_auxIPSt4pairIN4llvm5ValIDEPNS1_11GlobalValueEEEvT_S7_St12__false_type", + // "void std::__destroy_aux*>(std::pair*, std::pair*, std::__false_type)"}, + // got error + + {"_ZN4llvm8LLParserC2EPNS_12MemoryBufferERNS_9SourceMgrERNS_12SMDiagnosticEPNS_6ModuleE", "llvm::LLParser::LLParser(llvm::MemoryBuffer*, llvm::SourceMgr&, llvm::SMDiagnostic&, llvm::Module*)"}, + {"_ZN4llvm16RegisterAsmLexerIN12_GLOBAL__N_111X86AsmLexerEE9AllocatorERKNS_6TargetERKNS_9MCAsmInfoE", "llvm::RegisterAsmLexer<(anonymous namespace)::X86AsmLexer>::Allocator(llvm::Target const&, llvm::MCAsmInfo const&)"}, + {"_ZN12_GLOBAL__N_111X86AsmLexer8LexTokenEv", "(anonymous namespace)::X86AsmLexer::LexToken()"}, + {"_ZN12_GLOBAL__N_111X86AsmLexerD1Ev", "(anonymous namespace)::X86AsmLexer::~X86AsmLexer()"}, + {"_ZN12_GLOBAL__N_111X86AsmLexerD0Ev", "(anonymous namespace)::X86AsmLexer::~X86AsmLexer()"}, + {"_Z17MatchRegisterNameN4llvm9StringRefE", "MatchRegisterName(llvm::StringRef)"}, + {"_ZN4llvm17RegisterAsmParserIN12_GLOBAL__N_118X86_64ATTAsmParserEE9AllocatorERKNS_6TargetERNS_11MCAsmParserERNS_13TargetMachineE", "llvm::RegisterAsmParser<(anonymous namespace)::X86_64ATTAsmParser>::Allocator(llvm::Target const&, llvm::MCAsmParser&, llvm::TargetMachine&)"}, + {"_ZN12_GLOBAL__N_118X86_64ATTAsmParserD1Ev", "(anonymous namespace)::X86_64ATTAsmParser::~X86_64ATTAsmParser()"}, + {"_ZN12_GLOBAL__N_118X86_64ATTAsmParserD0Ev", "(anonymous namespace)::X86_64ATTAsmParser::~X86_64ATTAsmParser()"}, + {"_ZN12_GLOBAL__N_115X86ATTAsmParser13ParseRegisterERjRN4llvm5SMLocES4_", "(anonymous namespace)::X86ATTAsmParser::ParseRegister(unsigned int&, llvm::SMLoc&, llvm::SMLoc&)"}, + {"_ZN12_GLOBAL__N_115X86ATTAsmParser16ParseInstructionEN4llvm9StringRefENS1_5SMLocERNS1_15SmallVectorImplIPNS1_18MCParsedAsmOperandEEE", "(anonymous namespace)::X86ATTAsmParser::ParseInstruction(llvm::StringRef, llvm::SMLoc, llvm::SmallVectorImpl&)"}, + {"_ZN12_GLOBAL__N_115X86ATTAsmParser14ParseDirectiveEN4llvm8AsmTokenE", "(anonymous namespace)::X86ATTAsmParser::ParseDirective(llvm::AsmToken)"}, + {"_ZN12_GLOBAL__N_115X86ATTAsmParser23MatchAndEmitInstructionEN4llvm5SMLocERNS1_15SmallVectorImplIPNS1_18MCParsedAsmOperandEEERNS1_10MCStreamerE", "(anonymous namespace)::X86ATTAsmParser::MatchAndEmitInstruction(llvm::SMLoc, llvm::SmallVectorImpl&, llvm::MCStreamer&)"}, + {"_ZN12_GLOBAL__N_115X86ATTAsmParser20MatchInstructionImplERKN4llvm15SmallVectorImplIPNS1_18MCParsedAsmOperandEEERNS1_6MCInstERj", "(anonymous namespace)::X86ATTAsmParser::MatchInstructionImpl(llvm::SmallVectorImpl const&, llvm::MCInst&, unsigned int&)"}, + {"_ZN12_GLOBAL__N_115X86ATTAsmParser15ConvertToMCInstEjRN4llvm6MCInstEjRKNS1_15SmallVectorImplIPNS1_18MCParsedAsmOperandEEE", "(anonymous namespace)::X86ATTAsmParser::ConvertToMCInst(unsigned int, llvm::MCInst&, unsigned int, llvm::SmallVectorImpl const&)"}, + {"_ZNK12_GLOBAL__N_110X86Operand14addMemOperandsERN4llvm6MCInstEj", "(anonymous namespace)::X86Operand::addMemOperands(llvm::MCInst&, unsigned int) const"}, + {"_ZNK12_GLOBAL__N_110X86Operand7addExprERN4llvm6MCInstEPKNS1_6MCExprE", "(anonymous namespace)::X86Operand::addExpr(llvm::MCInst&, llvm::MCExpr const*) const"}, + {"_ZN12_GLOBAL__N_110X86OperandD1Ev", "(anonymous namespace)::X86Operand::~X86Operand()"}, + {"_ZN12_GLOBAL__N_110X86OperandD0Ev", "(anonymous namespace)::X86Operand::~X86Operand()"}, + {"_ZNK12_GLOBAL__N_110X86Operand11getStartLocEv", "(anonymous namespace)::X86Operand::getStartLoc() const"}, + {"_ZNK12_GLOBAL__N_110X86Operand9getEndLocEv", "(anonymous namespace)::X86Operand::getEndLoc() const"}, + {"_ZNK12_GLOBAL__N_110X86Operand4dumpERN4llvm11raw_ostreamE", "(anonymous namespace)::X86Operand::dump(llvm::raw_ostream&) const"}, + {"_ZN12_GLOBAL__N_115X86ATTAsmParser12ParseOperandEv", "(anonymous namespace)::X86ATTAsmParser::ParseOperand()"}, + {"_Z17MatchRegisterNameN4llvm9StringRefE", "MatchRegisterName(llvm::StringRef)"}, + {"_ZN12_GLOBAL__N_115X86ATTAsmParser15ParseMemOperandEjN4llvm5SMLocE", "(anonymous namespace)::X86ATTAsmParser::ParseMemOperand(unsigned int, llvm::SMLoc)"}, + {"_ZN12_GLOBAL__N_115X86ATTAsmParserD1Ev", "(anonymous namespace)::X86ATTAsmParser::~X86ATTAsmParser()"}, + {"_ZN12_GLOBAL__N_115X86ATTAsmParserD0Ev", "(anonymous namespace)::X86ATTAsmParser::~X86ATTAsmParser()"}, + {"_ZN4llvm17RegisterAsmParserIN12_GLOBAL__N_118X86_32ATTAsmParserEE9AllocatorERKNS_6TargetERNS_11MCAsmParserERNS_13TargetMachineE", "llvm::RegisterAsmParser<(anonymous namespace)::X86_32ATTAsmParser>::Allocator(llvm::Target const&, llvm::MCAsmParser&, llvm::TargetMachine&)"}, + {"_ZN12_GLOBAL__N_118X86_32ATTAsmParserD1Ev", "(anonymous namespace)::X86_32ATTAsmParser::~X86_32ATTAsmParser()"}, + {"_ZN12_GLOBAL__N_118X86_32ATTAsmParserD0Ev", "(anonymous namespace)::X86_32ATTAsmParser::~X86_32ATTAsmParser()"}, + {"_ZN4llvm22createSSEDomainFixPassEv", "llvm::createSSEDomainFixPass()"}, + {"_ZN12_GLOBAL__N_116SSEDomainFixPassD1Ev", "(anonymous namespace)::SSEDomainFixPass::~SSEDomainFixPass()"}, + {"_ZN12_GLOBAL__N_116SSEDomainFixPassD0Ev", "(anonymous namespace)::SSEDomainFixPass::~SSEDomainFixPass()"}, + {"_ZNK12_GLOBAL__N_116SSEDomainFixPass11getPassNameEv", "(anonymous namespace)::SSEDomainFixPass::getPassName() const"}, + {"_ZNK12_GLOBAL__N_116SSEDomainFixPass16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::SSEDomainFixPass::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_116SSEDomainFixPass20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::SSEDomainFixPass::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN12_GLOBAL__N_116SSEDomainFixPass14visitHardInstrEPN4llvm12MachineInstrEj", "(anonymous namespace)::SSEDomainFixPass::visitHardInstr(llvm::MachineInstr*, unsigned int)"}, + {"_ZN4llvm24SpecificBumpPtrAllocatorIN12_GLOBAL__N_111DomainValueEE10DestroyAllEv", "llvm::SpecificBumpPtrAllocator<(anonymous namespace)::DomainValue>::DestroyAll()"}, + {"_ZN12_GLOBAL__N_116SSEDomainFixPass8CollapseEPNS_11DomainValueEj", "(anonymous namespace)::SSEDomainFixPass::Collapse((anonymous namespace)::DomainValue*, unsigned int)"}, + {"_ZN12_GLOBAL__N_116SSEDomainFixPass10SetLiveRegEiPNS_11DomainValueE", "(anonymous namespace)::SSEDomainFixPass::SetLiveReg(int, (anonymous namespace)::DomainValue*)"}, + {"_ZN12_GLOBAL__N_116SSEDomainFixPass5ForceEij", "(anonymous namespace)::SSEDomainFixPass::Force(int, unsigned int)"}, + {"_ZN12_GLOBAL__N_116SSEDomainFixPass5MergeEPNS_11DomainValueES2_", "(anonymous namespace)::SSEDomainFixPass::Merge((anonymous namespace)::DomainValue*, (anonymous namespace)::DomainValue*)"}, + + // {"_ZN4llvm12df_ext_beginIPNS_17MachineBasicBlockENS_11SmallPtrSetIS2_Lj16EEEEENS_15df_ext_iteratorIT_T0_EERKS6_RS7_", + // "llvm::df_ext_iterator> llvm::df_ext_begin>(llvm::MachineBasicBlock* const&, llvm::SmallPtrSet&)"}, + // "llvm::df_ext_iterator llvm::df_ext_begin>(16 const&, llvm::df_ext_iterator&)" was returned + + + // {"_ZN4llvm11df_iteratorIPNS_17MachineBasicBlockENS_11SmallPtrSetIS2_Lj16EEELb1ENS_11GraphTraitsIS2_EEE6toNextEv", + // "llvm::df_iterator, true, llvm::GraphTraits>::toNext()"}, + // "llvm::df_iterator, true, llvm::GraphTraits>::toNext()" was returned + + + // {"_ZNSt6vectorISt4pairIN4llvm14PointerIntPairIPNS1_17MachineBasicBlockELj1EjNS1_21PointerLikeTypeTraitsIS4_EEEEN9__gnu_cxx17__normal_iteratorIPS4_S_IS4_SaIS4_EEEEESaISE_EE13_M_insert_auxENS9_IPSE_SG_EERKSE_", + // "std::vector>, __gnu_cxx::__normal_iterator>>>, std::allocator>, __gnu_cxx::__normal_iterator>>>>>::_M_insert_aux(__gnu_cxx::__normal_iterator>, __gnu_cxx::__normal_iterator>>>*, std::vector>, __gnu_cxx::__normal_iterator>>>, std::allocator>, __gnu_cxx::__normal_iterator>>>>>>, std::pair>, __gnu_cxx::__normal_iterator>>> const&)"}, + // "std::vector>, __gnu_cxx::__normal_iterator>>>, std::allocator>, __gnu_cxx::__normal_iterator>>>>>::_M_insert_aux(__gnu_cxx::__normal_iterator>, __gnu_cxx::__normal_iterator>>>*, std::vector>, __gnu_cxx::__normal_iterator>>>, std::allocator>, __gnu_cxx::__normal_iterator>>>>>>, std::pair>, __gnu_cxx::__normal_iterator>>> const&)" was returned + + + // {"_ZNSt6vectorISt4pairIN4llvm14PointerIntPairIPNS1_17MachineBasicBlockELj1EjNS1_21PointerLikeTypeTraitsIS4_EEEEN9__gnu_cxx17__normal_iteratorIPS4_S_IS4_SaIS4_EEEEESaISE_EEC2ERKSG_", + // "std::vector>, __gnu_cxx::__normal_iterator>>>, std::allocator>, __gnu_cxx::__normal_iterator>>>>>::vector(std::vector>, __gnu_cxx::__normal_iterator>>>, std::allocator>, __gnu_cxx::__normal_iterator>>>>> const&)"}, + // "std::vector>, __gnu_cxx::__normal_iterator>>>, std::allocator>, __gnu_cxx::__normal_iterator>>>>>::vector(std::vector>, __gnu_cxx::__normal_iterator>>>, std::allocator>, __gnu_cxx::__normal_iterator>>>>> const&)" was returned + + + // {"_ZN4llvm11df_iteratorIPNS_17MachineBasicBlockENS_11SmallPtrSetIS2_Lj16EEELb1ENS_11GraphTraitsIS2_EEEC2ES2_RS4_", + // "llvm::df_iterator, true, llvm::GraphTraits>::df_iterator(llvm::MachineBasicBlock*, llvm::SmallPtrSet&)"}, + // "llvm::df_iterator, true, llvm::GraphTraits>::df_iterator(llvm::MachineBasicBlock*, llvm::SmallPtrSet&)" was returned + + {"_ZN4llvm22createX86_32AsmBackendERKNS_6TargetERKSs", "llvm::createX86_32AsmBackend(llvm::Target const&, std::string const&)"}, + {"_ZN4llvm22createX86_64AsmBackendERKNS_6TargetERKSs", "llvm::createX86_64AsmBackend(llvm::Target const&, std::string const&)"}, + {"_ZN12_GLOBAL__N_119ELFX86_64AsmBackendD1Ev", "(anonymous namespace)::ELFX86_64AsmBackend::~ELFX86_64AsmBackend()"}, + {"_ZN12_GLOBAL__N_119ELFX86_64AsmBackendD0Ev", "(anonymous namespace)::ELFX86_64AsmBackend::~ELFX86_64AsmBackend()"}, + {"_ZNK12_GLOBAL__N_119ELFX86_64AsmBackend18createObjectWriterERN4llvm11raw_ostreamE", "(anonymous namespace)::ELFX86_64AsmBackend::createObjectWriter(llvm::raw_ostream&) const"}, + {"_ZNK12_GLOBAL__N_116ELFX86AsmBackend25doesSectionRequireSymbolsERKN4llvm9MCSectionE", "(anonymous namespace)::ELFX86AsmBackend::doesSectionRequireSymbols(llvm::MCSection const&) const"}, + {"_ZNK12_GLOBAL__N_113X86AsmBackend16getNumFixupKindsEv", "(anonymous namespace)::X86AsmBackend::getNumFixupKinds() const"}, + {"_ZNK12_GLOBAL__N_113X86AsmBackend16getFixupKindInfoEN4llvm11MCFixupKindE", "(anonymous namespace)::X86AsmBackend::getFixupKindInfo(llvm::MCFixupKind) const"}, + {"_ZNK12_GLOBAL__N_113X86AsmBackend10ApplyFixupERKN4llvm7MCFixupEPcjy", "(anonymous namespace)::X86AsmBackend::ApplyFixup(llvm::MCFixup const&, char*, unsigned int, unsigned long long) const"}, + {"_ZNK12_GLOBAL__N_113X86AsmBackend17MayNeedRelaxationERKN4llvm6MCInstE", "(anonymous namespace)::X86AsmBackend::MayNeedRelaxation(llvm::MCInst const&) const"}, + {"_ZNK12_GLOBAL__N_113X86AsmBackend16RelaxInstructionERKN4llvm6MCInstERS2_", "(anonymous namespace)::X86AsmBackend::RelaxInstruction(llvm::MCInst const&, llvm::MCInst&) const"}, + {"_ZNK12_GLOBAL__N_113X86AsmBackend12WriteNopDataEyPN4llvm14MCObjectWriterE", "(anonymous namespace)::X86AsmBackend::WriteNopData(unsigned long long, llvm::MCObjectWriter*) const"}, + {"_ZN12_GLOBAL__N_118X86ELFObjectWriterD1Ev", "(anonymous namespace)::X86ELFObjectWriter::~X86ELFObjectWriter()"}, + {"_ZN12_GLOBAL__N_118X86ELFObjectWriterD0Ev", "(anonymous namespace)::X86ELFObjectWriter::~X86ELFObjectWriter()"}, + {"_ZN12_GLOBAL__N_116ELFX86AsmBackendD1Ev", "(anonymous namespace)::ELFX86AsmBackend::~ELFX86AsmBackend()"}, + {"_ZN12_GLOBAL__N_116ELFX86AsmBackendD0Ev", "(anonymous namespace)::ELFX86AsmBackend::~ELFX86AsmBackend()"}, + {"_ZN12_GLOBAL__N_113X86AsmBackendD1Ev", "(anonymous namespace)::X86AsmBackend::~X86AsmBackend()"}, + {"_ZN12_GLOBAL__N_113X86AsmBackendD0Ev", "(anonymous namespace)::X86AsmBackend::~X86AsmBackend()"}, + {"_ZN12_GLOBAL__N_122DarwinX86_64AsmBackendD1Ev", "(anonymous namespace)::DarwinX86_64AsmBackend::~DarwinX86_64AsmBackend()"}, + {"_ZN12_GLOBAL__N_122DarwinX86_64AsmBackendD0Ev", "(anonymous namespace)::DarwinX86_64AsmBackend::~DarwinX86_64AsmBackend()"}, + {"_ZNK12_GLOBAL__N_122DarwinX86_64AsmBackend18createObjectWriterERN4llvm11raw_ostreamE", "(anonymous namespace)::DarwinX86_64AsmBackend::createObjectWriter(llvm::raw_ostream&) const"}, + {"_ZNK12_GLOBAL__N_122DarwinX86_64AsmBackend25doesSectionRequireSymbolsERKN4llvm9MCSectionE", "(anonymous namespace)::DarwinX86_64AsmBackend::doesSectionRequireSymbols(llvm::MCSection const&) const"}, + {"_ZNK12_GLOBAL__N_122DarwinX86_64AsmBackend19isSectionAtomizableERKN4llvm9MCSectionE", "(anonymous namespace)::DarwinX86_64AsmBackend::isSectionAtomizable(llvm::MCSection const&) const"}, + {"_ZN12_GLOBAL__N_119DarwinX86AsmBackendD1Ev", "(anonymous namespace)::DarwinX86AsmBackend::~DarwinX86AsmBackend()"}, + {"_ZN12_GLOBAL__N_119DarwinX86AsmBackendD0Ev", "(anonymous namespace)::DarwinX86AsmBackend::~DarwinX86AsmBackend()"}, + {"_ZN12_GLOBAL__N_119ELFX86_32AsmBackendD1Ev", "(anonymous namespace)::ELFX86_32AsmBackend::~ELFX86_32AsmBackend()"}, + {"_ZN12_GLOBAL__N_119ELFX86_32AsmBackendD0Ev", "(anonymous namespace)::ELFX86_32AsmBackend::~ELFX86_32AsmBackend()"}, + {"_ZNK12_GLOBAL__N_119ELFX86_32AsmBackend18createObjectWriterERN4llvm11raw_ostreamE", "(anonymous namespace)::ELFX86_32AsmBackend::createObjectWriter(llvm::raw_ostream&) const"}, + {"_ZN12_GLOBAL__N_120WindowsX86AsmBackendD1Ev", "(anonymous namespace)::WindowsX86AsmBackend::~WindowsX86AsmBackend()"}, + {"_ZN12_GLOBAL__N_120WindowsX86AsmBackendD0Ev", "(anonymous namespace)::WindowsX86AsmBackend::~WindowsX86AsmBackend()"}, + {"_ZNK12_GLOBAL__N_120WindowsX86AsmBackend18createObjectWriterERN4llvm11raw_ostreamE", "(anonymous namespace)::WindowsX86AsmBackend::createObjectWriter(llvm::raw_ostream&) const"}, + {"_ZN12_GLOBAL__N_122DarwinX86_32AsmBackendD1Ev", "(anonymous namespace)::DarwinX86_32AsmBackend::~DarwinX86_32AsmBackend()"}, + {"_ZN12_GLOBAL__N_122DarwinX86_32AsmBackendD0Ev", "(anonymous namespace)::DarwinX86_32AsmBackend::~DarwinX86_32AsmBackend()"}, + {"_ZNK12_GLOBAL__N_122DarwinX86_32AsmBackend18createObjectWriterERN4llvm11raw_ostreamE", "(anonymous namespace)::DarwinX86_32AsmBackend::createObjectWriter(llvm::raw_ostream&) const"}, + {"_ZNK4llvm16TargetAsmBackend19isSectionAtomizableERKNS_9MCSectionE", "llvm::TargetAsmBackend::isSectionAtomizable(llvm::MCSection const&) const"}, + {"_ZN4llvm16TargetAsmBackend19HandleAssemblerFlagENS_15MCAssemblerFlagE", "llvm::TargetAsmBackend::HandleAssemblerFlag(llvm::MCAssemblerFlag)"}, + {"_ZN4llvm15SmallVectorImplINS_9MCOperandEEaSERKS2_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + {"_ZNK4llvm16TargetAsmBackend25doesSectionRequireSymbolsERKNS_9MCSectionE", "llvm::TargetAsmBackend::doesSectionRequireSymbols(llvm::MCSection const&) const"}, + {"_ZN4llvm13X86AsmPrinter20runOnMachineFunctionERNS_15MachineFunctionE", "llvm::X86AsmPrinter::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN4llvm13X86AsmPrinter18printSymbolOperandERKNS_14MachineOperandERNS_11raw_ostreamE", "llvm::X86AsmPrinter::printSymbolOperand(llvm::MachineOperand const&, llvm::raw_ostream&)"}, + {"_ZN4llvm13X86AsmPrinter15print_pcrel_immEPKNS_12MachineInstrEjRNS_11raw_ostreamE", "llvm::X86AsmPrinter::print_pcrel_imm(llvm::MachineInstr const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm13X86AsmPrinter12printOperandEPKNS_12MachineInstrEjRNS_11raw_ostreamEPKc", "llvm::X86AsmPrinter::printOperand(llvm::MachineInstr const*, unsigned int, llvm::raw_ostream&, char const*)"}, + {"_ZN4llvm13X86AsmPrinter10printSSECCEPKNS_12MachineInstrEjRNS_11raw_ostreamE", "llvm::X86AsmPrinter::printSSECC(llvm::MachineInstr const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm13X86AsmPrinter20printLeaMemReferenceEPKNS_12MachineInstrEjRNS_11raw_ostreamEPKc", "llvm::X86AsmPrinter::printLeaMemReference(llvm::MachineInstr const*, unsigned int, llvm::raw_ostream&, char const*)"}, + {"_ZN4llvm13X86AsmPrinter17printMemReferenceEPKNS_12MachineInstrEjRNS_11raw_ostreamEPKc", "llvm::X86AsmPrinter::printMemReference(llvm::MachineInstr const*, unsigned int, llvm::raw_ostream&, char const*)"}, + {"_ZN4llvm13X86AsmPrinter13printPICLabelEPKNS_12MachineInstrEjRNS_11raw_ostreamE", "llvm::X86AsmPrinter::printPICLabel(llvm::MachineInstr const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm13X86AsmPrinter17printAsmMRegisterERKNS_14MachineOperandEcRNS_11raw_ostreamE", "llvm::X86AsmPrinter::printAsmMRegister(llvm::MachineOperand const&, char, llvm::raw_ostream&)"}, + {"_ZN4llvm13X86AsmPrinter15PrintAsmOperandEPKNS_12MachineInstrEjjPKcRNS_11raw_ostreamE", "llvm::X86AsmPrinter::PrintAsmOperand(llvm::MachineInstr const*, unsigned int, unsigned int, char const*, llvm::raw_ostream&)"}, + {"_ZN4llvm13X86AsmPrinter21PrintAsmMemoryOperandEPKNS_12MachineInstrEjjPKcRNS_11raw_ostreamE", "llvm::X86AsmPrinter::PrintAsmMemoryOperand(llvm::MachineInstr const*, unsigned int, unsigned int, char const*, llvm::raw_ostream&)"}, + {"_ZN4llvm13X86AsmPrinter18EmitStartOfAsmFileERNS_6ModuleE", "llvm::X86AsmPrinter::EmitStartOfAsmFile(llvm::Module&)"}, + {"_ZN4llvm13X86AsmPrinter16EmitEndOfAsmFileERNS_6ModuleE", "llvm::X86AsmPrinter::EmitEndOfAsmFile(llvm::Module&)"}, + {"_ZNK4llvm13X86AsmPrinter21getDebugValueLocationEPKNS_12MachineInstrE", "llvm::X86AsmPrinter::getDebugValueLocation(llvm::MachineInstr const*) const"}, + {"_ZN4llvm13X86AsmPrinter22PrintDebugValueCommentEPKNS_12MachineInstrERNS_11raw_ostreamE", "llvm::X86AsmPrinter::PrintDebugValueComment(llvm::MachineInstr const*, llvm::raw_ostream&)"}, + {"_Z22createX86MCInstPrinterRKN4llvm6TargetEjRKNS_9MCAsmInfoE", "createX86MCInstPrinter(llvm::Target const&, unsigned int, llvm::MCAsmInfo const&)"}, + {"_ZNK4llvm12X86Subtarget12isTargetCOFFEv", "llvm::X86Subtarget::isTargetCOFF() const"}, + {"_ZNK4llvm12X86Subtarget11isTargetELFEv", "llvm::X86Subtarget::isTargetELF() const"}, + {"_ZN4llvm7DIScopeD1Ev", "llvm::DIScope::~DIScope()"}, + {"_ZN4llvm12DISubprogramD1Ev", "llvm::DISubprogram::~DISubprogram()"}, + {"_ZN4llvm13X86AsmPrinterD1Ev", "llvm::X86AsmPrinter::~X86AsmPrinter()"}, + {"_ZN4llvm13X86AsmPrinterD0Ev", "llvm::X86AsmPrinter::~X86AsmPrinter()"}, + {"_ZNK4llvm13X86AsmPrinter11getPassNameEv", "llvm::X86AsmPrinter::getPassName() const"}, + {"_ZN4llvm10AsmPrinter14getISAEncodingEv", "llvm::AsmPrinter::getISAEncoding()"}, + {"_ZN4llvm18RegisterAsmPrinterINS_13X86AsmPrinterEE9AllocatorERNS_13TargetMachineERNS_10MCStreamerE", "llvm::RegisterAsmPrinter::Allocator(llvm::TargetMachine&, llvm::MCStreamer&)"}, + {"_ZNSt6vectorIPKN4llvm8MCSymbolESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::MCSymbol const* const&)"}, + {"_ZN4llvm12DISubprogramD0Ev", "llvm::DISubprogram::~DISubprogram()"}, + {"_ZN4llvm7DIScopeD0Ev", "llvm::DIScope::~DIScope()"}, + {"_ZN4llvm24X86COFFMachineModuleInfoD0Ev", "llvm::X86COFFMachineModuleInfo::~X86COFFMachineModuleInfo()"}, + {"_ZN4llvm24X86COFFMachineModuleInfoD1Ev", "llvm::X86COFFMachineModuleInfo::~X86COFFMachineModuleInfo()"}, + {"_ZN4llvm24X86COFFMachineModuleInfoD2Ev", "llvm::X86COFFMachineModuleInfo::~X86COFFMachineModuleInfo()"}, + {"_ZN4llvm27createX86JITCodeEmitterPassERNS_16X86TargetMachineERNS_14JITCodeEmitterE", "llvm::createX86JITCodeEmitterPass(llvm::X86TargetMachine&, llvm::JITCodeEmitter&)"}, + {"_ZN12_GLOBAL__N_17EmitterIN4llvm14JITCodeEmitterEED1Ev", "(anonymous namespace)::Emitter::~Emitter()"}, + {"_ZN12_GLOBAL__N_17EmitterIN4llvm14JITCodeEmitterEED0Ev", "(anonymous namespace)::Emitter::~Emitter()"}, + {"_ZNK12_GLOBAL__N_17EmitterIN4llvm14JITCodeEmitterEE11getPassNameEv", "(anonymous namespace)::Emitter::getPassName() const"}, + {"_ZNK12_GLOBAL__N_17EmitterIN4llvm14JITCodeEmitterEE16getAnalysisUsageERNS1_13AnalysisUsageE", "(anonymous namespace)::Emitter::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_17EmitterIN4llvm14JITCodeEmitterEE20runOnMachineFunctionERNS1_15MachineFunctionE", "(anonymous namespace)::Emitter::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN12_GLOBAL__N_17EmitterIN4llvm14JITCodeEmitterEE15emitInstructionERNS1_12MachineInstrEPKNS1_15TargetInstrDescE", "(anonymous namespace)::Emitter::emitInstruction(llvm::MachineInstr&, llvm::TargetInstrDesc const*)"}, + {"_ZN12_GLOBAL__N_17EmitterIN4llvm14JITCodeEmitterEE17emitGlobalAddressEPKNS1_11GlobalValueEjllb", "(anonymous namespace)::Emitter::emitGlobalAddress(llvm::GlobalValue const*, unsigned int, long, long, bool)"}, + {"_ZN12_GLOBAL__N_17EmitterIN4llvm14JITCodeEmitterEE25emitExternalSymbolAddressEPKcj", "(anonymous namespace)::Emitter::emitExternalSymbolAddress(char const*, unsigned int)"}, + {"_ZN12_GLOBAL__N_17EmitterIN4llvm14JITCodeEmitterEE20emitJumpTableAddressEjjl", "(anonymous namespace)::Emitter::emitJumpTableAddress(unsigned int, unsigned int, long)"}, + {"_ZN12_GLOBAL__N_17EmitterIN4llvm14JITCodeEmitterEE20emitConstPoolAddressEjjll", "(anonymous namespace)::Emitter::emitConstPoolAddress(unsigned int, unsigned int, long, long)"}, + {"_ZN12_GLOBAL__N_17EmitterIN4llvm14JITCodeEmitterEE16emitMemModRMByteERKNS1_12MachineInstrEjjl", "(anonymous namespace)::Emitter::emitMemModRMByte(llvm::MachineInstr const&, unsigned int, unsigned int, long)"}, + {"_ZN12_GLOBAL__N_17EmitterIN4llvm14JITCodeEmitterEE21emitDisplacementFieldEPKNS1_14MachineOperandEilb", "(anonymous namespace)::Emitter::emitDisplacementField(llvm::MachineOperand const*, int, long, bool)"}, + {"_ZN4llvm16X86ELFWriterInfoC1Ebb", "llvm::X86ELFWriterInfo::X86ELFWriterInfo(bool, bool)"}, + {"_ZN4llvm16X86ELFWriterInfoC2Ebb", "llvm::X86ELFWriterInfo::X86ELFWriterInfo(bool, bool)"}, + {"_ZN4llvm16X86ELFWriterInfoD0Ev", "llvm::X86ELFWriterInfo::~X86ELFWriterInfo()"}, + {"_ZN4llvm16X86ELFWriterInfoD1Ev", "llvm::X86ELFWriterInfo::~X86ELFWriterInfo()"}, + {"_ZN4llvm16X86ELFWriterInfoD2Ev", "llvm::X86ELFWriterInfo::~X86ELFWriterInfo()"}, + {"_ZNK4llvm16X86ELFWriterInfo17getRelocationTypeEj", "llvm::X86ELFWriterInfo::getRelocationType(unsigned int) const"}, + {"_ZNK4llvm16X86ELFWriterInfo24getDefaultAddendForRelTyEjl", "llvm::X86ELFWriterInfo::getDefaultAddendForRelTy(unsigned int, long) const"}, + {"_ZNK4llvm16X86ELFWriterInfo19getRelocationTySizeEj", "llvm::X86ELFWriterInfo::getRelocationTySize(unsigned int) const"}, + {"_ZNK4llvm16X86ELFWriterInfo15isPCRelativeRelEj", "llvm::X86ELFWriterInfo::isPCRelativeRel(unsigned int) const"}, + {"_ZNK4llvm16X86ELFWriterInfo28getAbsoluteLabelMachineRelTyEv", "llvm::X86ELFWriterInfo::getAbsoluteLabelMachineRelTy() const"}, + {"_ZNK4llvm16X86ELFWriterInfo17computeRelocationEjjj", "llvm::X86ELFWriterInfo::computeRelocation(unsigned int, unsigned int, unsigned int) const"}, + {"_ZNK4llvm16X86ELFWriterInfo19hasRelocationAddendEv", "llvm::X86ELFWriterInfo::hasRelocationAddend() const"}, + {"_ZN4llvm3X8614createFastISelERNS_20FunctionLoweringInfoE", "llvm::X86::createFastISel(llvm::FunctionLoweringInfo&)"}, + {"_ZN12_GLOBAL__N_111X86FastISel13TryToFoldLoadEPN4llvm12MachineInstrEjPKNS1_8LoadInstE", "(anonymous namespace)::X86FastISel::TryToFoldLoad(llvm::MachineInstr*, unsigned int, llvm::LoadInst const*)"}, + {"_ZN12_GLOBAL__N_111X86FastISelD1Ev", "(anonymous namespace)::X86FastISel::~X86FastISel()"}, + {"_ZN12_GLOBAL__N_111X86FastISelD0Ev", "(anonymous namespace)::X86FastISel::~X86FastISel()"}, + {"_ZN12_GLOBAL__N_111X86FastISel23TargetSelectInstructionEPKN4llvm11InstructionE", "(anonymous namespace)::X86FastISel::TargetSelectInstruction(llvm::Instruction const*)"}, + {"_ZN12_GLOBAL__N_111X86FastISel10FastEmit_rEN4llvm3MVTES2_jjb", "(anonymous namespace)::X86FastISel::FastEmit_r(llvm::MVT, llvm::MVT, unsigned int, unsigned int, bool)"}, + {"_ZN12_GLOBAL__N_111X86FastISel11FastEmit_rrEN4llvm3MVTES2_jjbjb", "(anonymous namespace)::X86FastISel::FastEmit_rr(llvm::MVT, llvm::MVT, unsigned int, unsigned int, bool, unsigned int, bool)"}, + {"_ZN12_GLOBAL__N_111X86FastISel11FastEmit_riEN4llvm3MVTES2_jjby", "(anonymous namespace)::X86FastISel::FastEmit_ri(llvm::MVT, llvm::MVT, unsigned int, unsigned int, bool, unsigned long long)"}, + {"_ZN12_GLOBAL__N_111X86FastISel10FastEmit_iEN4llvm3MVTES2_jy", "(anonymous namespace)::X86FastISel::FastEmit_i(llvm::MVT, llvm::MVT, unsigned int, unsigned long long)"}, + {"_ZN12_GLOBAL__N_111X86FastISel25TargetMaterializeConstantEPKN4llvm8ConstantE", "(anonymous namespace)::X86FastISel::TargetMaterializeConstant(llvm::Constant const*)"}, + {"_ZN12_GLOBAL__N_111X86FastISel23TargetMaterializeAllocaEPKN4llvm10AllocaInstE", "(anonymous namespace)::X86FastISel::TargetMaterializeAlloca(llvm::AllocaInst const*)"}, + {"_ZN12_GLOBAL__N_111X86FastISel16X86SelectAddressEPKN4llvm5ValueERNS1_14X86AddressModeE", "(anonymous namespace)::X86FastISel::X86SelectAddress(llvm::Value const*, llvm::X86AddressMode&)"}, + {"_ZN4llvm14addFullAddressERKNS_19MachineInstrBuilderERKNS_14X86AddressModeE", "llvm::addFullAddress(llvm::MachineInstrBuilder const&, llvm::X86AddressMode const&)"}, + {"_ZN12_GLOBAL__N_111X86FastISel13X86SelectZExtEPKN4llvm11InstructionE", "(anonymous namespace)::X86FastISel::X86SelectZExt(llvm::Instruction const*)"}, + {"_ZN12_GLOBAL__N_111X86FastISel14X86SelectTruncEPKN4llvm11InstructionE", "(anonymous namespace)::X86FastISel::X86SelectTrunc(llvm::Instruction const*)"}, + {"_Z6CC_X86jN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateE", "CC_X86(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)"}, + {"_ZN12_GLOBAL__N_111X86FastISel16X86FastEmitStoreEN4llvm3EVTEPKNS1_5ValueERKNS1_14X86AddressModeE", "(anonymous namespace)::X86FastISel::X86FastEmitStore(llvm::EVT, llvm::Value const*, llvm::X86AddressMode const&)"}, + {"_ZN12_GLOBAL__N_111X86FastISel16X86FastEmitStoreEN4llvm3EVTEjRKNS1_14X86AddressModeE", "(anonymous namespace)::X86FastISel::X86FastEmitStore(llvm::EVT, unsigned int, llvm::X86AddressMode const&)"}, + {"_Z9RetCC_X86jN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateE", "RetCC_X86(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)"}, + {"_ZN4llvm17addFrameReferenceERKNS_19MachineInstrBuilderEii", "llvm::addFrameReference(llvm::MachineInstrBuilder const&, int, int)"}, + {"_Z15RetCC_X86CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateE", "RetCC_X86Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)"}, + {"_Z14RetCC_X86_64_CjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateE", "RetCC_X86_64_C(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)"}, + {"_Z16CC_X86_32_CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateE", "CC_X86_32_Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)"}, + {"_ZN12_GLOBAL__N_111X86FastISel18X86FastEmitCompareEPKN4llvm5ValueES4_NS1_3EVTE", "(anonymous namespace)::X86FastISel::X86FastEmitCompare(llvm::Value const*, llvm::Value const*, llvm::EVT)"}, + {"_ZN4llvm14X86AddressMode14getFullAddressERNS_15SmallVectorImplINS_14MachineOperandEEE", "llvm::X86AddressMode::getFullAddress(llvm::SmallVectorImpl&)"}, + {"_ZN4llvm36createX86FloatingPointStackifierPassEv", "llvm::createX86FloatingPointStackifierPass()"}, + {"_ZN12_GLOBAL__N_13FPSD1Ev", "(anonymous namespace)::FPS::~FPS()"}, + {"_ZN12_GLOBAL__N_13FPSD0Ev", "(anonymous namespace)::FPS::~FPS()"}, + {"_ZNK12_GLOBAL__N_13FPS11getPassNameEv", "(anonymous namespace)::FPS::getPassName() const"}, + {"_ZNK12_GLOBAL__N_13FPS16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::FPS::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_13FPS20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::FPS::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN12_GLOBAL__N_13FPS17processBasicBlockERN4llvm15MachineFunctionERNS1_17MachineBasicBlockE", "(anonymous namespace)::FPS::processBasicBlock(llvm::MachineFunction&, llvm::MachineBasicBlock&)"}, + {"_ZN12_GLOBAL__N_13FPS14adjustLiveRegsEjN4llvm14ilist_iteratorINS1_12MachineInstrEEE", "(anonymous namespace)::FPS::adjustLiveRegs(unsigned int, llvm::ilist_iterator)"}, + {"_ZN12_GLOBAL__N_13FPS9moveToTopEjN4llvm14ilist_iteratorINS1_12MachineInstrEEE", "(anonymous namespace)::FPS::moveToTop(unsigned int, llvm::ilist_iterator)"}, + {"_ZN12_GLOBAL__N_13FPS13popStackAfterERN4llvm14ilist_iteratorINS1_12MachineInstrEEE", "(anonymous namespace)::FPS::popStackAfter(llvm::ilist_iterator&)"}, + {"_ZN12_GLOBAL__N_13FPS19freeStackSlotBeforeEN4llvm14ilist_iteratorINS1_12MachineInstrEEEj", "(anonymous namespace)::FPS::freeStackSlotBefore(llvm::ilist_iterator, unsigned int)"}, + {"_ZN12_GLOBAL__N_13FPS14duplicateToTopEjjPN4llvm12MachineInstrE", "(anonymous namespace)::FPS::duplicateToTop(unsigned int, unsigned int, llvm::MachineInstr*)"}, + + // {"_ZN4llvm12df_ext_beginIPNS_17MachineBasicBlockENS_11SmallPtrSetIS2_Lj8EEEEENS_15df_ext_iteratorIT_T0_EERKS6_RS7_", + // "llvm::df_ext_iterator> llvm::df_ext_begin>(llvm::MachineBasicBlock* const&, llvm::SmallPtrSet&)"}, + // "llvm::df_ext_iterator llvm::df_ext_begin>(8 const&, llvm::df_ext_iterator&)" was returned + + + // {"_ZN4llvm11df_iteratorIPNS_17MachineBasicBlockENS_11SmallPtrSetIS2_Lj8EEELb1ENS_11GraphTraitsIS2_EEE6toNextEv", + // "llvm::df_iterator, true, llvm::GraphTraits>::toNext()"}, + // "llvm::df_iterator, true, llvm::GraphTraits>::toNext()" was returned + + + // {"_ZN4llvm11df_iteratorIPNS_17MachineBasicBlockENS_11SmallPtrSetIS2_Lj8EEELb1ENS_11GraphTraitsIS2_EEEC2ES2_RS4_", + // "llvm::df_iterator, true, llvm::GraphTraits>::df_iterator(llvm::MachineBasicBlock*, llvm::SmallPtrSet&)"}, + // "llvm::df_iterator, true, llvm::GraphTraits>::df_iterator(llvm::MachineBasicBlock*, llvm::SmallPtrSet&)" was returned + + {"_ZNK4llvm16X86FrameLowering20hasReservedCallFrameERKNS_15MachineFunctionE", "llvm::X86FrameLowering::hasReservedCallFrame(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm16X86FrameLowering5hasFPERKNS_15MachineFunctionE", "llvm::X86FrameLowering::hasFP(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm16X86FrameLowering25emitCalleeSavedFrameMovesERNS_15MachineFunctionEPNS_8MCSymbolEj", "llvm::X86FrameLowering::emitCalleeSavedFrameMoves(llvm::MachineFunction&, llvm::MCSymbol*, unsigned int) const"}, + {"_ZNK4llvm16X86FrameLowering12emitPrologueERNS_15MachineFunctionE", "llvm::X86FrameLowering::emitPrologue(llvm::MachineFunction&) const"}, + {"_Z14mergeSPUpdatesRN4llvm17MachineBasicBlockERNS_14ilist_iteratorINS_12MachineInstrEEEjb", "mergeSPUpdates(llvm::MachineBasicBlock&, llvm::ilist_iterator&, unsigned int, bool)"}, + {"_Z12emitSPUpdateRN4llvm17MachineBasicBlockERNS_14ilist_iteratorINS_12MachineInstrEEEjxbRKNS_15TargetInstrInfoERKNS_18TargetRegisterInfoE", "emitSPUpdate(llvm::MachineBasicBlock&, llvm::ilist_iterator&, unsigned int, long long, bool, llvm::TargetInstrInfo const&, llvm::TargetRegisterInfo const&)"}, + {"_ZNK4llvm16X86FrameLowering12emitEpilogueERNS_15MachineFunctionERNS_17MachineBasicBlockE", "llvm::X86FrameLowering::emitEpilogue(llvm::MachineFunction&, llvm::MachineBasicBlock&) const"}, + {"_ZNK4llvm16X86FrameLowering20getInitialFrameStateERSt6vectorINS_11MachineMoveESaIS2_EE", "llvm::X86FrameLowering::getInitialFrameState(std::vector>&) const"}, + {"_ZNK4llvm16X86FrameLowering19getFrameIndexOffsetERKNS_15MachineFunctionEi", "llvm::X86FrameLowering::getFrameIndexOffset(llvm::MachineFunction const&, int) const"}, + {"_ZNK4llvm16X86FrameLowering25spillCalleeSavedRegistersERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEERKSt6vectorINS_15CalleeSavedInfoESaIS7_EEPKNS_18TargetRegisterInfoE", "llvm::X86FrameLowering::spillCalleeSavedRegisters(llvm::MachineBasicBlock&, llvm::ilist_iterator, std::vector> const&, llvm::TargetRegisterInfo const*) const"}, + {"_ZNK4llvm16X86FrameLowering27restoreCalleeSavedRegistersERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEERKSt6vectorINS_15CalleeSavedInfoESaIS7_EEPKNS_18TargetRegisterInfoE", "llvm::X86FrameLowering::restoreCalleeSavedRegisters(llvm::MachineBasicBlock&, llvm::ilist_iterator, std::vector> const&, llvm::TargetRegisterInfo const*) const"}, + {"_ZNK4llvm16X86FrameLowering36processFunctionBeforeCalleeSavedScanERNS_15MachineFunctionEPNS_12RegScavengerE", "llvm::X86FrameLowering::processFunctionBeforeCalleeSavedScan(llvm::MachineFunction&, llvm::RegScavenger*) const"}, + {"_ZNK4llvm12X86Subtarget13isTargetWin32Ev", "llvm::X86Subtarget::isTargetWin32() const"}, + {"_ZNSt6vectorIN4llvm11MachineMoveESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::MachineMove const&)"}, + + // {"_ZN4llvm8SmallSetIjLj8EE6insertERKj", + // "llvm::SmallSet::insert(unsigned int const&)"}, + // "llvm::SmallSet::insert(unsigned int const&)" was returned + + {"_ZN4llvm16createX86ISelDagERNS_16X86TargetMachineENS_10CodeGenOpt5LevelE", "llvm::createX86ISelDag(llvm::X86TargetMachine&, llvm::CodeGenOpt::Level)"}, + {"_ZN12_GLOBAL__N_115X86DAGToDAGISelD1Ev", "(anonymous namespace)::X86DAGToDAGISel::~X86DAGToDAGISel()"}, + {"_ZN12_GLOBAL__N_115X86DAGToDAGISelD0Ev", "(anonymous namespace)::X86DAGToDAGISel::~X86DAGToDAGISel()"}, + {"_ZNK12_GLOBAL__N_115X86DAGToDAGISel11getPassNameEv", "(anonymous namespace)::X86DAGToDAGISel::getPassName() const"}, + {"_ZN12_GLOBAL__N_115X86DAGToDAGISel21EmitFunctionEntryCodeEv", "(anonymous namespace)::X86DAGToDAGISel::EmitFunctionEntryCode()"}, + {"_ZN12_GLOBAL__N_115X86DAGToDAGISel17PreprocessISelDAGEv", "(anonymous namespace)::X86DAGToDAGISel::PreprocessISelDAG()"}, + {"_ZN12_GLOBAL__N_115X86DAGToDAGISel6SelectEPN4llvm6SDNodeE", "(anonymous namespace)::X86DAGToDAGISel::Select(llvm::SDNode*)"}, + {"_ZN12_GLOBAL__N_115X86DAGToDAGISel28SelectInlineAsmMemoryOperandERKN4llvm7SDValueEcRSt6vectorIS2_SaIS2_EE", "(anonymous namespace)::X86DAGToDAGISel::SelectInlineAsmMemoryOperand(llvm::SDValue const&, char, std::vector>&)"}, + {"_ZNK12_GLOBAL__N_115X86DAGToDAGISel18IsProfitableToFoldEN4llvm7SDValueEPNS1_6SDNodeES4_", "(anonymous namespace)::X86DAGToDAGISel::IsProfitableToFold(llvm::SDValue, llvm::SDNode*, llvm::SDNode*) const"}, + {"_ZNK12_GLOBAL__N_115X86DAGToDAGISel21CheckPatternPredicateEj", "(anonymous namespace)::X86DAGToDAGISel::CheckPatternPredicate(unsigned int) const"}, + {"_ZNK12_GLOBAL__N_115X86DAGToDAGISel18CheckNodePredicateEPN4llvm6SDNodeEj", "(anonymous namespace)::X86DAGToDAGISel::CheckNodePredicate(llvm::SDNode*, unsigned int) const"}, + {"_ZN12_GLOBAL__N_115X86DAGToDAGISel19CheckComplexPatternEPN4llvm6SDNodeES3_NS1_7SDValueEjRNS1_15SmallVectorImplISt4pairIS4_S3_EEE", "(anonymous namespace)::X86DAGToDAGISel::CheckComplexPattern(llvm::SDNode*, llvm::SDNode*, llvm::SDValue, unsigned int, llvm::SmallVectorImpl>&)"}, + {"_ZN12_GLOBAL__N_115X86DAGToDAGISel14RunSDNodeXFormEN4llvm7SDValueEj", "(anonymous namespace)::X86DAGToDAGISel::RunSDNodeXForm(llvm::SDValue, unsigned int)"}, + {"_ZN12_GLOBAL__N_115X86DAGToDAGISel10SelectAddrEPN4llvm6SDNodeENS1_7SDValueERS4_S5_S5_S5_S5_", "(anonymous namespace)::X86DAGToDAGISel::SelectAddr(llvm::SDNode*, llvm::SDValue, llvm::SDValue&, llvm::SDValue&, llvm::SDValue&, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN12_GLOBAL__N_115X86DAGToDAGISel19SelectScalarSSELoadEPN4llvm6SDNodeENS1_7SDValueERS4_S5_S5_S5_S5_S5_", "(anonymous namespace)::X86DAGToDAGISel::SelectScalarSSELoad(llvm::SDNode*, llvm::SDValue, llvm::SDValue&, llvm::SDValue&, llvm::SDValue&, llvm::SDValue&, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN12_GLOBAL__N_115X86DAGToDAGISel13SelectLEAAddrEN4llvm7SDValueERS2_S3_S3_S3_S3_", "(anonymous namespace)::X86DAGToDAGISel::SelectLEAAddr(llvm::SDValue, llvm::SDValue&, llvm::SDValue&, llvm::SDValue&, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN12_GLOBAL__N_115X86DAGToDAGISel17SelectTLSADDRAddrEN4llvm7SDValueERS2_S3_S3_S3_S3_", "(anonymous namespace)::X86DAGToDAGISel::SelectTLSADDRAddr(llvm::SDValue, llvm::SDValue&, llvm::SDValue&, llvm::SDValue&, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN12_GLOBAL__N_115X86DAGToDAGISel18getAddressOperandsERNS_18X86ISelAddressModeERN4llvm7SDValueES5_S5_S5_S5_", "(anonymous namespace)::X86DAGToDAGISel::getAddressOperands((anonymous namespace)::X86ISelAddressMode&, llvm::SDValue&, llvm::SDValue&, llvm::SDValue&, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN12_GLOBAL__N_115X86DAGToDAGISel12MatchAddressEN4llvm7SDValueERNS_18X86ISelAddressModeE", "(anonymous namespace)::X86DAGToDAGISel::MatchAddress(llvm::SDValue, (anonymous namespace)::X86ISelAddressMode&)"}, + {"_ZN12_GLOBAL__N_115X86DAGToDAGISel23MatchAddressRecursivelyEN4llvm7SDValueERNS_18X86ISelAddressModeEj", "(anonymous namespace)::X86DAGToDAGISel::MatchAddressRecursively(llvm::SDValue, (anonymous namespace)::X86ISelAddressMode&, unsigned int)"}, + {"_ZN12_GLOBAL__N_115X86DAGToDAGISel14SelectAtomic64EPN4llvm6SDNodeEj", "(anonymous namespace)::X86DAGToDAGISel::SelectAtomic64(llvm::SDNode*, unsigned int)"}, + {"_ZN12_GLOBAL__N_115X86DAGToDAGISel11TryFoldLoadEPN4llvm6SDNodeENS1_7SDValueERS4_S5_S5_S5_S5_", "(anonymous namespace)::X86DAGToDAGISel::TryFoldLoad(llvm::SDNode*, llvm::SDValue, llvm::SDValue&, llvm::SDValue&, llvm::SDValue&, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm17X86TargetLoweringC1ERNS_16X86TargetMachineE", "llvm::X86TargetLowering::X86TargetLowering(llvm::X86TargetMachine&)"}, + {"_ZN4llvm17X86TargetLoweringC2ERNS_16X86TargetMachineE", "llvm::X86TargetLowering::X86TargetLowering(llvm::X86TargetMachine&)"}, + {"_ZNK4llvm17X86TargetLowering18getSetCCResultTypeENS_3EVTE", "llvm::X86TargetLowering::getSetCCResultType(llvm::EVT) const"}, + {"_ZNK4llvm17X86TargetLowering21getByValTypeAlignmentEPKNS_4TypeE", "llvm::X86TargetLowering::getByValTypeAlignment(llvm::Type const*) const"}, + {"_Z16getMaxByValAlignPKN4llvm4TypeERj", "getMaxByValAlign(llvm::Type const*, unsigned int&)"}, + {"_ZNK4llvm17X86TargetLowering19getOptimalMemOpTypeEyjjbbRNS_15MachineFunctionE", "llvm::X86TargetLowering::getOptimalMemOpType(unsigned long long, unsigned int, unsigned int, bool, bool, llvm::MachineFunction&) const"}, + {"_ZNK4llvm17X86TargetLowering20getJumpTableEncodingEv", "llvm::X86TargetLowering::getJumpTableEncoding() const"}, + {"_ZNK4llvm17X86TargetLowering25LowerCustomJumpTableEntryEPKNS_20MachineJumpTableInfoEPKNS_17MachineBasicBlockEjRNS_9MCContextE", "llvm::X86TargetLowering::LowerCustomJumpTableEntry(llvm::MachineJumpTableInfo const*, llvm::MachineBasicBlock const*, unsigned int, llvm::MCContext&) const"}, + {"_ZNK4llvm17X86TargetLowering24getPICJumpTableRelocBaseENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::getPICJumpTableRelocBase(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering28getPICJumpTableRelocBaseExprEPKNS_15MachineFunctionEjRNS_9MCContextE", "llvm::X86TargetLowering::getPICJumpTableRelocBaseExpr(llvm::MachineFunction const*, unsigned int, llvm::MCContext&) const"}, + {"_ZNK4llvm17X86TargetLowering20getFunctionAlignmentEPKNS_8FunctionE", "llvm::X86TargetLowering::getFunctionAlignment(llvm::Function const*) const"}, + {"_ZNK4llvm17X86TargetLowering23findRepresentativeClassENS_3EVTE", "llvm::X86TargetLowering::findRepresentativeClass(llvm::EVT) const"}, + {"_ZNK4llvm17X86TargetLowering19getRegPressureLimitEPKNS_19TargetRegisterClassERNS_15MachineFunctionE", "llvm::X86TargetLowering::getRegPressureLimit(llvm::TargetRegisterClass const*, llvm::MachineFunction&) const"}, + {"_ZNK4llvm17X86TargetLowering22getStackCookieLocationERjS1_", "llvm::X86TargetLowering::getStackCookieLocation(unsigned int&, unsigned int&) const"}, + {"_ZNK4llvm17X86TargetLowering14CanLowerReturnENS_11CallingConv2IDEbRKNS_15SmallVectorImplINS_3ISD9OutputArgEEERNS_11LLVMContextE", "llvm::X86TargetLowering::CanLowerReturn(llvm::CallingConv::ID, bool, llvm::SmallVectorImpl const&, llvm::LLVMContext&) const"}, + {"_Z9RetCC_X86jN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateE", "RetCC_X86(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)"}, + {"_ZNK4llvm17X86TargetLowering11LowerReturnENS_7SDValueENS_11CallingConv2IDEbRKNS_15SmallVectorImplINS_3ISD9OutputArgEEERKNS4_IS1_EENS_8DebugLocERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerReturn(llvm::SDValue, llvm::CallingConv::ID, bool, llvm::SmallVectorImpl const&, llvm::SmallVectorImpl const&, llvm::DebugLoc, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering18isUsedByReturnOnlyEPNS_6SDNodeE", "llvm::X86TargetLowering::isUsedByReturnOnly(llvm::SDNode*) const"}, + {"_ZNK4llvm17X86TargetLowering15LowerCallResultENS_7SDValueES1_NS_11CallingConv2IDEbRKNS_15SmallVectorImplINS_3ISD8InputArgEEENS_8DebugLocERNS_12SelectionDAGERNS4_IS1_EE", "llvm::X86TargetLowering::LowerCallResult(llvm::SDValue, llvm::SDValue, llvm::CallingConv::ID, bool, llvm::SmallVectorImpl const&, llvm::DebugLoc, llvm::SelectionDAG&, llvm::SmallVectorImpl&) const"}, + {"_ZNK4llvm17X86TargetLowering16LowerMemArgumentENS_7SDValueENS_11CallingConv2IDERKNS_15SmallVectorImplINS_3ISD8InputArgEEENS_8DebugLocERNS_12SelectionDAGERKNS_11CCValAssignEPNS_16MachineFrameInfoEj", "llvm::X86TargetLowering::LowerMemArgument(llvm::SDValue, llvm::CallingConv::ID, llvm::SmallVectorImpl const&, llvm::DebugLoc, llvm::SelectionDAG&, llvm::CCValAssign const&, llvm::MachineFrameInfo*, unsigned int) const"}, + {"_ZNK4llvm17X86TargetLowering20LowerFormalArgumentsENS_7SDValueENS_11CallingConv2IDEbRKNS_15SmallVectorImplINS_3ISD8InputArgEEENS_8DebugLocERNS_12SelectionDAGERNS4_IS1_EE", "llvm::X86TargetLowering::LowerFormalArguments(llvm::SDValue, llvm::CallingConv::ID, bool, llvm::SmallVectorImpl const&, llvm::DebugLoc, llvm::SelectionDAG&, llvm::SmallVectorImpl&) const"}, + {"_Z6CC_X86jN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateE", "CC_X86(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)"}, + {"_ZNK4llvm17X86TargetLowering27GetAlignedArgumentStackSizeEjRNS_12SelectionDAGE", "llvm::X86TargetLowering::GetAlignedArgumentStackSize(unsigned int, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering16LowerMemOpCallToENS_7SDValueES1_S1_NS_8DebugLocERNS_12SelectionDAGERKNS_11CCValAssignENS_3ISD10ArgFlagsTyE", "llvm::X86TargetLowering::LowerMemOpCallTo(llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::DebugLoc, llvm::SelectionDAG&, llvm::CCValAssign const&, llvm::ISD::ArgFlagsTy) const"}, + {"_ZNK4llvm17X86TargetLowering23EmitTailCallLoadRetAddrERNS_12SelectionDAGERNS_7SDValueES3_bbiNS_8DebugLocE", "llvm::X86TargetLowering::EmitTailCallLoadRetAddr(llvm::SelectionDAG&, llvm::SDValue&, llvm::SDValue, bool, bool, int, llvm::DebugLoc) const"}, + {"_ZNK4llvm17X86TargetLowering26getReturnAddressFrameIndexERNS_12SelectionDAGE", "llvm::X86TargetLowering::getReturnAddressFrameIndex(llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering9LowerCallENS_7SDValueES1_NS_11CallingConv2IDEbRbRKNS_15SmallVectorImplINS_3ISD9OutputArgEEERKNS5_IS1_EERKNS5_INS6_8InputArgEEENS_8DebugLocERNS_12SelectionDAGERSB_", "llvm::X86TargetLowering::LowerCall(llvm::SDValue, llvm::SDValue, llvm::CallingConv::ID, bool, bool&, llvm::SmallVectorImpl const&, llvm::SmallVectorImpl const&, llvm::SmallVectorImpl const&, llvm::DebugLoc, llvm::SelectionDAG&, llvm::SmallVectorImpl&) const"}, + {"_ZNK4llvm17X86TargetLowering33IsEligibleForTailCallOptimizationENS_7SDValueENS_11CallingConv2IDEbbbRKNS_15SmallVectorImplINS_3ISD9OutputArgEEERKNS4_IS1_EERKNS4_INS5_8InputArgEEERNS_12SelectionDAGE", "llvm::X86TargetLowering::IsEligibleForTailCallOptimization(llvm::SDValue, llvm::CallingConv::ID, bool, bool, bool, llvm::SmallVectorImpl const&, llvm::SmallVectorImpl const&, llvm::SmallVectorImpl const&, llvm::SelectionDAG&) const"}, + {"_Z7getMOVLRN4llvm12SelectionDAGENS_8DebugLocENS_3EVTENS_7SDValueES4_", "getMOVL(llvm::SelectionDAG&, llvm::DebugLoc, llvm::EVT, llvm::SDValue, llvm::SDValue)"}, + {"_ZNK4llvm17X86TargetLowering18LowerGlobalAddressENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerGlobalAddress(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering19LowerExternalSymbolENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerExternalSymbol(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering14createFastISelERNS_20FunctionLoweringInfoE", "llvm::X86TargetLowering::createFastISel(llvm::FunctionLoweringInfo&) const"}, + {"_ZN4llvm3X8628isOffsetSuitableForCodeModelExNS_9CodeModel5ModelEb", "llvm::X86::isOffsetSuitableForCodeModel(long long, llvm::CodeModel::Model, bool)"}, + {"_ZNK4llvm17X86TargetLowering12isFPImmLegalERKNS_7APFloatENS_3EVTE", "llvm::X86TargetLowering::isFPImmLegal(llvm::APFloat const&, llvm::EVT) const"}, + {"_ZN4llvm3X8612isPSHUFDMaskEPNS_19ShuffleVectorSDNodeE", "llvm::X86::isPSHUFDMask(llvm::ShuffleVectorSDNode*)"}, + {"_ZN4llvm3X8613isPSHUFHWMaskEPNS_19ShuffleVectorSDNodeE", "llvm::X86::isPSHUFHWMask(llvm::ShuffleVectorSDNode*)"}, + {"_ZN4llvm3X8613isPSHUFLWMaskEPNS_19ShuffleVectorSDNodeE", "llvm::X86::isPSHUFLWMask(llvm::ShuffleVectorSDNode*)"}, + {"_ZN4llvm3X8613isPALIGNRMaskEPNS_19ShuffleVectorSDNodeE", "llvm::X86::isPALIGNRMask(llvm::ShuffleVectorSDNode*)"}, + {"_Z13isPALIGNRMaskRKN4llvm15SmallVectorImplIiEENS_3EVTEb", "isPALIGNRMask(llvm::SmallVectorImpl const&, llvm::EVT, bool)"}, + {"_ZN4llvm3X8611isSHUFPMaskEPNS_19ShuffleVectorSDNodeE", "llvm::X86::isSHUFPMask(llvm::ShuffleVectorSDNode*)"}, + {"_ZN4llvm3X8613isMOVHLPSMaskEPNS_19ShuffleVectorSDNodeE", "llvm::X86::isMOVHLPSMask(llvm::ShuffleVectorSDNode*)"}, + {"_ZN4llvm3X8622isMOVHLPS_v_undef_MaskEPNS_19ShuffleVectorSDNodeE", "llvm::X86::isMOVHLPS_v_undef_Mask(llvm::ShuffleVectorSDNode*)"}, + {"_ZN4llvm3X8611isMOVLPMaskEPNS_19ShuffleVectorSDNodeE", "llvm::X86::isMOVLPMask(llvm::ShuffleVectorSDNode*)"}, + {"_ZN4llvm3X8613isMOVLHPSMaskEPNS_19ShuffleVectorSDNodeE", "llvm::X86::isMOVLHPSMask(llvm::ShuffleVectorSDNode*)"}, + {"_ZN4llvm3X8612isUNPCKLMaskEPNS_19ShuffleVectorSDNodeEb", "llvm::X86::isUNPCKLMask(llvm::ShuffleVectorSDNode*, bool)"}, + {"_ZN4llvm3X8612isUNPCKHMaskEPNS_19ShuffleVectorSDNodeEb", "llvm::X86::isUNPCKHMask(llvm::ShuffleVectorSDNode*, bool)"}, + {"_ZN4llvm3X8621isUNPCKL_v_undef_MaskEPNS_19ShuffleVectorSDNodeE", "llvm::X86::isUNPCKL_v_undef_Mask(llvm::ShuffleVectorSDNode*)"}, + {"_ZN4llvm3X8621isUNPCKH_v_undef_MaskEPNS_19ShuffleVectorSDNodeE", "llvm::X86::isUNPCKH_v_undef_Mask(llvm::ShuffleVectorSDNode*)"}, + {"_ZN4llvm3X8610isMOVLMaskEPNS_19ShuffleVectorSDNodeE", "llvm::X86::isMOVLMask(llvm::ShuffleVectorSDNode*)"}, + {"_Z10isMOVLMaskRKN4llvm15SmallVectorImplIiEENS_3EVTE", "isMOVLMask(llvm::SmallVectorImpl const&, llvm::EVT)"}, + {"_ZN4llvm3X8614isMOVSHDUPMaskEPNS_19ShuffleVectorSDNodeE", "llvm::X86::isMOVSHDUPMask(llvm::ShuffleVectorSDNode*)"}, + {"_ZN4llvm3X8614isMOVSLDUPMaskEPNS_19ShuffleVectorSDNodeE", "llvm::X86::isMOVSLDUPMask(llvm::ShuffleVectorSDNode*)"}, + {"_ZN4llvm3X8613isMOVDDUPMaskEPNS_19ShuffleVectorSDNodeE", "llvm::X86::isMOVDDUPMask(llvm::ShuffleVectorSDNode*)"}, + {"_ZN4llvm3X8619isVEXTRACTF128IndexEPNS_6SDNodeE", "llvm::X86::isVEXTRACTF128Index(llvm::SDNode*)"}, + {"_ZN4llvm3X8618isVINSERTF128IndexEPNS_6SDNodeE", "llvm::X86::isVINSERTF128Index(llvm::SDNode*)"}, + {"_ZN4llvm3X8623getShuffleSHUFImmediateEPNS_6SDNodeE", "llvm::X86::getShuffleSHUFImmediate(llvm::SDNode*)"}, + {"_ZN4llvm3X8626getShufflePSHUFHWImmediateEPNS_6SDNodeE", "llvm::X86::getShufflePSHUFHWImmediate(llvm::SDNode*)"}, + {"_ZN4llvm3X8626getShufflePSHUFLWImmediateEPNS_6SDNodeE", "llvm::X86::getShufflePSHUFLWImmediate(llvm::SDNode*)"}, + {"_ZN4llvm3X8626getShufflePALIGNRImmediateEPNS_6SDNodeE", "llvm::X86::getShufflePALIGNRImmediate(llvm::SDNode*)"}, + {"_ZN4llvm3X8631getExtractVEXTRACTF128ImmediateEPNS_6SDNodeE", "llvm::X86::getExtractVEXTRACTF128Immediate(llvm::SDNode*)"}, + {"_ZN4llvm3X8629getInsertVINSERTF128ImmediateEPNS_6SDNodeE", "llvm::X86::getInsertVINSERTF128Immediate(llvm::SDNode*)"}, + {"_ZN4llvm3X8610isZeroNodeENS_7SDValueE", "llvm::X86::isZeroNode(llvm::SDValue)"}, + {"_Z19getShuffleScalarEltPN4llvm6SDNodeEiRNS_12SelectionDAGEj", "getShuffleScalarElt(llvm::SDNode*, int, llvm::SelectionDAG&, unsigned int)"}, + {"_ZNK4llvm17X86TargetLowering22LowerAsSplatVectorLoadENS_7SDValueENS_3EVTENS_8DebugLocERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerAsSplatVectorLoad(llvm::SDValue, llvm::EVT, llvm::DebugLoc, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering17LowerBUILD_VECTORENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerBUILD_VECTOR(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_Z13getZeroVectorN4llvm3EVTEbRNS_12SelectionDAGENS_8DebugLocE", "getZeroVector(llvm::EVT, bool, llvm::SelectionDAG&, llvm::DebugLoc)"}, + {"_Z27getShuffleVectorZeroOrUndefN4llvm7SDValueEjbbRNS_12SelectionDAGE", "getShuffleVectorZeroOrUndef(llvm::SDValue, unsigned int, bool, bool, llvm::SelectionDAG&)"}, + {"_Z10getUnpacklRN4llvm12SelectionDAGENS_8DebugLocENS_3EVTENS_7SDValueES4_", "getUnpackl(llvm::SelectionDAG&, llvm::DebugLoc, llvm::EVT, llvm::SDValue, llvm::SDValue)"}, + {"_Z24EltsFromConsecutiveLoadsN4llvm3EVTERNS_15SmallVectorImplINS_7SDValueEEERNS_8DebugLocERNS_12SelectionDAGE", "EltsFromConsecutiveLoads(llvm::EVT, llvm::SmallVectorImpl&, llvm::DebugLoc&, llvm::SelectionDAG&)"}, + {"_ZNK4llvm17X86TargetLowering19LowerCONCAT_VECTORSENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerCONCAT_VECTORS(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering24LowerVECTOR_SHUFFLEv8i16ENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerVECTOR_SHUFFLEv8i16(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering19LowerVECTOR_SHUFFLEENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerVECTOR_SHUFFLE(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_Z12getVZextMovLN4llvm3EVTES0_NS_7SDValueERNS_12SelectionDAGEPKNS_12X86SubtargetENS_8DebugLocE", "getVZextMovL(llvm::EVT, llvm::EVT, llvm::SDValue, llvm::SelectionDAG&, llvm::X86Subtarget const*, llvm::DebugLoc)"}, + {"_Z20CommuteVectorShufflePN4llvm19ShuffleVectorSDNodeERNS_12SelectionDAGE", "CommuteVectorShuffle(llvm::ShuffleVectorSDNode*, llvm::SelectionDAG&)"}, + {"_ZNK4llvm17X86TargetLowering28LowerEXTRACT_VECTOR_ELT_SSE4ENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerEXTRACT_VECTOR_ELT_SSE4(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering23LowerEXTRACT_VECTOR_ELTENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerEXTRACT_VECTOR_ELT(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering27LowerINSERT_VECTOR_ELT_SSE4ENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerINSERT_VECTOR_ELT_SSE4(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering22LowerINSERT_VECTOR_ELTENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerINSERT_VECTOR_ELT(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_Z19Extract128BitVectorN4llvm7SDValueES0_RNS_12SelectionDAGENS_8DebugLocE", "Extract128BitVector(llvm::SDValue, llvm::SDValue, llvm::SelectionDAG&, llvm::DebugLoc)"}, + {"_Z18Insert128BitVectorN4llvm7SDValueES0_S0_RNS_12SelectionDAGENS_8DebugLocE", "Insert128BitVector(llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::SelectionDAG&, llvm::DebugLoc)"}, + {"_ZNK4llvm17X86TargetLowering21LowerSCALAR_TO_VECTORENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerSCALAR_TO_VECTOR(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering22LowerEXTRACT_SUBVECTORENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerEXTRACT_SUBVECTOR(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering21LowerINSERT_SUBVECTORENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerINSERT_SUBVECTOR(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering17LowerConstantPoolENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerConstantPool(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering14LowerJumpTableENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerJumpTable(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering17LowerBlockAddressENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerBlockAddress(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering18LowerGlobalAddressEPKNS_11GlobalValueENS_8DebugLocExRNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerGlobalAddress(llvm::GlobalValue const*, llvm::DebugLoc, long long, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering21LowerGlobalTLSAddressENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerGlobalTLSAddress(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering10LowerShiftENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerShift(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering15LowerSINT_TO_FPENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerSINT_TO_FP(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering9BuildFILDENS_7SDValueENS_3EVTES1_S1_RNS_12SelectionDAGE", "llvm::X86TargetLowering::BuildFILD(llvm::SDValue, llvm::EVT, llvm::SDValue, llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering19LowerUINT_TO_FP_i64ENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerUINT_TO_FP_i64(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering19LowerUINT_TO_FP_i32ENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerUINT_TO_FP_i32(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering15LowerUINT_TO_FPENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerUINT_TO_FP(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering15FP_TO_INTHelperENS_7SDValueERNS_12SelectionDAGEb", "llvm::X86TargetLowering::FP_TO_INTHelper(llvm::SDValue, llvm::SelectionDAG&, bool) const"}, + {"_ZNK4llvm17X86TargetLowering15LowerFP_TO_SINTENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerFP_TO_SINT(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering15LowerFP_TO_UINTENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerFP_TO_UINT(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering9LowerFABSENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerFABS(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering9LowerFNEGENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerFNEG(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering14LowerFCOPYSIGNENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerFCOPYSIGN(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering8EmitTestENS_7SDValueEjRNS_12SelectionDAGE", "llvm::X86TargetLowering::EmitTest(llvm::SDValue, unsigned int, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering7EmitCmpENS_7SDValueES1_jRNS_12SelectionDAGE", "llvm::X86TargetLowering::EmitCmp(llvm::SDValue, llvm::SDValue, unsigned int, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering9LowerToBTENS_7SDValueENS_3ISD8CondCodeENS_8DebugLocERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerToBT(llvm::SDValue, llvm::ISD::CondCode, llvm::DebugLoc, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering10LowerSETCCENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerSETCC(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_Z14TranslateX86CCN4llvm3ISD8CondCodeEbRNS_7SDValueES3_RNS_12SelectionDAGE", "TranslateX86CC(llvm::ISD::CondCode, bool, llvm::SDValue&, llvm::SDValue&, llvm::SelectionDAG&)"}, + {"_ZNK4llvm17X86TargetLowering11LowerVSETCCENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerVSETCC(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering11LowerSELECTENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerSELECT(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering11LowerBRCONDENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerBRCOND(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering23LowerDYNAMIC_STACKALLOCENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerDYNAMIC_STACKALLOC(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering12LowerVASTARTENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerVASTART(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering10LowerVAARGENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerVAARG(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering11LowerVACOPYENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerVACOPY(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering23LowerINTRINSIC_WO_CHAINENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerINTRINSIC_WO_CHAIN(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering15LowerRETURNADDRENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerRETURNADDR(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering14LowerFRAMEADDRENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerFRAMEADDR(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering25LowerFRAME_TO_ARGS_OFFSETENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerFRAME_TO_ARGS_OFFSET(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering14LowerEH_RETURNENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerEH_RETURN(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering15LowerTRAMPOLINEENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerTRAMPOLINE(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering16LowerFLT_ROUNDS_ENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerFLT_ROUNDS_(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering9LowerCTLZENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerCTLZ(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering9LowerCTTZENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerCTTZ(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering14LowerMUL_V2I64ENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerMUL_V2I64(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering8LowerSHLENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerSHL(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering10LowerXALUOENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerXALUO(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering15LowerMEMBARRIERENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerMEMBARRIER(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering13LowerCMP_SWAPENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerCMP_SWAP(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering21LowerREADCYCLECOUNTERENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerREADCYCLECOUNTER(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering12LowerBITCASTENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerBITCAST(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering13LowerLOAD_SUBENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerLOAD_SUB(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering14LowerOperationENS_7SDValueERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerOperation(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering23ReplaceATOMIC_BINARY_64EPNS_6SDNodeERNS_15SmallVectorImplINS_7SDValueEEERNS_12SelectionDAGEj", "llvm::X86TargetLowering::ReplaceATOMIC_BINARY_64(llvm::SDNode*, llvm::SmallVectorImpl&, llvm::SelectionDAG&, unsigned int) const"}, + {"_ZNK4llvm17X86TargetLowering18ReplaceNodeResultsEPNS_6SDNodeERNS_15SmallVectorImplINS_7SDValueEEERNS_12SelectionDAGE", "llvm::X86TargetLowering::ReplaceNodeResults(llvm::SDNode*, llvm::SmallVectorImpl&, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering17getTargetNodeNameEj", "llvm::X86TargetLowering::getTargetNodeName(unsigned int) const"}, + {"_ZNK4llvm17X86TargetLowering21isLegalAddressingModeERKNS_14TargetLowering8AddrModeEPKNS_4TypeE", "llvm::X86TargetLowering::isLegalAddressingMode(llvm::TargetLowering::AddrMode const&, llvm::Type const*) const"}, + {"_ZNK4llvm17X86TargetLowering14isTruncateFreeEPKNS_4TypeES3_", "llvm::X86TargetLowering::isTruncateFree(llvm::Type const*, llvm::Type const*) const"}, + {"_ZNK4llvm17X86TargetLowering14isTruncateFreeENS_3EVTES1_", "llvm::X86TargetLowering::isTruncateFree(llvm::EVT, llvm::EVT) const"}, + {"_ZNK4llvm17X86TargetLowering10isZExtFreeEPKNS_4TypeES3_", "llvm::X86TargetLowering::isZExtFree(llvm::Type const*, llvm::Type const*) const"}, + {"_ZNK4llvm17X86TargetLowering10isZExtFreeENS_3EVTES1_", "llvm::X86TargetLowering::isZExtFree(llvm::EVT, llvm::EVT) const"}, + {"_ZNK4llvm17X86TargetLowering21isNarrowingProfitableENS_3EVTES1_", "llvm::X86TargetLowering::isNarrowingProfitable(llvm::EVT, llvm::EVT) const"}, + {"_ZNK4llvm17X86TargetLowering18isShuffleMaskLegalERKNS_15SmallVectorImplIiEENS_3EVTE", "llvm::X86TargetLowering::isShuffleMaskLegal(llvm::SmallVectorImpl const&, llvm::EVT) const"}, + {"_ZNK4llvm17X86TargetLowering22isVectorClearMaskLegalERKNS_15SmallVectorImplIiEENS_3EVTE", "llvm::X86TargetLowering::isVectorClearMaskLegal(llvm::SmallVectorImpl const&, llvm::EVT) const"}, + {"_ZNK4llvm17X86TargetLowering35EmitAtomicBitwiseWithCustomInserterEPNS_12MachineInstrEPNS_17MachineBasicBlockEjjjjjjPNS_19TargetRegisterClassEb", "llvm::X86TargetLowering::EmitAtomicBitwiseWithCustomInserter(llvm::MachineInstr*, llvm::MachineBasicBlock*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, llvm::TargetRegisterClass*, bool) const"}, + {"_ZNK4llvm17X86TargetLowering35EmitAtomicBit6432WithCustomInserterEPNS_12MachineInstrEPNS_17MachineBasicBlockEjjjjb", "llvm::X86TargetLowering::EmitAtomicBit6432WithCustomInserter(llvm::MachineInstr*, llvm::MachineBasicBlock*, unsigned int, unsigned int, unsigned int, unsigned int, bool) const"}, + {"_ZNK4llvm17X86TargetLowering34EmitAtomicMinMaxWithCustomInserterEPNS_12MachineInstrEPNS_17MachineBasicBlockEj", "llvm::X86TargetLowering::EmitAtomicMinMaxWithCustomInserter(llvm::MachineInstr*, llvm::MachineBasicBlock*, unsigned int) const"}, + {"_ZNK4llvm17X86TargetLowering8EmitPCMPEPNS_12MachineInstrEPNS_17MachineBasicBlockEjb", "llvm::X86TargetLowering::EmitPCMP(llvm::MachineInstr*, llvm::MachineBasicBlock*, unsigned int, bool) const"}, + {"_ZNK4llvm17X86TargetLowering11EmitMonitorEPNS_12MachineInstrEPNS_17MachineBasicBlockE", "llvm::X86TargetLowering::EmitMonitor(llvm::MachineInstr*, llvm::MachineBasicBlock*) const"}, + {"_ZNK4llvm17X86TargetLowering9EmitMwaitEPNS_12MachineInstrEPNS_17MachineBasicBlockE", "llvm::X86TargetLowering::EmitMwait(llvm::MachineInstr*, llvm::MachineBasicBlock*) const"}, + {"_ZNK4llvm17X86TargetLowering29EmitVAARG64WithCustomInserterEPNS_12MachineInstrEPNS_17MachineBasicBlockE", "llvm::X86TargetLowering::EmitVAARG64WithCustomInserter(llvm::MachineInstr*, llvm::MachineBasicBlock*) const"}, + {"_ZNK4llvm17X86TargetLowering40EmitVAStartSaveXMMRegsWithCustomInserterEPNS_12MachineInstrEPNS_17MachineBasicBlockE", "llvm::X86TargetLowering::EmitVAStartSaveXMMRegsWithCustomInserter(llvm::MachineInstr*, llvm::MachineBasicBlock*) const"}, + {"_ZNK4llvm17X86TargetLowering17EmitLoweredSelectEPNS_12MachineInstrEPNS_17MachineBasicBlockE", "llvm::X86TargetLowering::EmitLoweredSelect(llvm::MachineInstr*, llvm::MachineBasicBlock*) const"}, + {"_ZNK4llvm17X86TargetLowering20EmitLoweredWinAllocaEPNS_12MachineInstrEPNS_17MachineBasicBlockE", "llvm::X86TargetLowering::EmitLoweredWinAlloca(llvm::MachineInstr*, llvm::MachineBasicBlock*) const"}, + {"_ZNK4llvm17X86TargetLowering18EmitLoweredTLSCallEPNS_12MachineInstrEPNS_17MachineBasicBlockE", "llvm::X86TargetLowering::EmitLoweredTLSCall(llvm::MachineInstr*, llvm::MachineBasicBlock*) const"}, + {"_ZNK4llvm17X86TargetLowering27EmitInstrWithCustomInserterEPNS_12MachineInstrEPNS_17MachineBasicBlockE", "llvm::X86TargetLowering::EmitInstrWithCustomInserter(llvm::MachineInstr*, llvm::MachineBasicBlock*) const"}, + {"_ZN4llvm17addFrameReferenceERKNS_19MachineInstrBuilderEii", "llvm::addFrameReference(llvm::MachineInstrBuilder const&, int, int)"}, + {"_ZNK4llvm17X86TargetLowering30computeMaskedBitsForTargetNodeENS_7SDValueERKNS_5APIntERS2_S5_RKNS_12SelectionDAGEj", "llvm::X86TargetLowering::computeMaskedBitsForTargetNode(llvm::SDValue, llvm::APInt const&, llvm::APInt&, llvm::APInt&, llvm::SelectionDAG const&, unsigned int) const"}, + {"_ZNK4llvm17X86TargetLowering31ComputeNumSignBitsForTargetNodeENS_7SDValueEj", "llvm::X86TargetLowering::ComputeNumSignBitsForTargetNode(llvm::SDValue, unsigned int) const"}, + {"_ZNK4llvm17X86TargetLowering14isGAPlusOffsetEPNS_6SDNodeERPKNS_11GlobalValueERx", "llvm::X86TargetLowering::isGAPlusOffset(llvm::SDNode*, llvm::GlobalValue const*&, long long&) const"}, + {"_ZNK4llvm17X86TargetLowering17PerformDAGCombineEPNS_6SDNodeERNS_14TargetLowering15DAGCombinerInfoE", "llvm::X86TargetLowering::PerformDAGCombine(llvm::SDNode*, llvm::TargetLowering::DAGCombinerInfo&) const"}, + {"_ZNK4llvm17X86TargetLowering20isTypeDesirableForOpEjNS_3EVTE", "llvm::X86TargetLowering::isTypeDesirableForOp(unsigned int, llvm::EVT) const"}, + {"_ZNK4llvm17X86TargetLowering22IsDesirableToPromoteOpENS_7SDValueERNS_3EVTE", "llvm::X86TargetLowering::IsDesirableToPromoteOp(llvm::SDValue, llvm::EVT&) const"}, + {"_ZNK4llvm17X86TargetLowering15ExpandInlineAsmEPNS_8CallInstE", "llvm::X86TargetLowering::ExpandInlineAsm(llvm::CallInst*) const"}, + {"_ZNK4llvm17X86TargetLowering17getConstraintTypeERKSs", "llvm::X86TargetLowering::getConstraintType(std::string const&) const"}, + {"_ZNK4llvm17X86TargetLowering30getSingleConstraintMatchWeightERNS_14TargetLowering14AsmOperandInfoEPKc", "llvm::X86TargetLowering::getSingleConstraintMatchWeight(llvm::TargetLowering::AsmOperandInfo&, char const*) const"}, + {"_ZNK4llvm17X86TargetLowering16LowerXConstraintENS_3EVTE", "llvm::X86TargetLowering::LowerXConstraint(llvm::EVT) const"}, + {"_ZNK4llvm17X86TargetLowering28LowerAsmOperandForConstraintENS_7SDValueEcRSt6vectorIS1_SaIS1_EERNS_12SelectionDAGE", "llvm::X86TargetLowering::LowerAsmOperandForConstraint(llvm::SDValue, char, std::vector>&, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17X86TargetLowering33getRegClassForInlineAsmConstraintERKSsNS_3EVTE", "llvm::X86TargetLowering::getRegClassForInlineAsmConstraint(std::string const&, llvm::EVT) const"}, + {"_ZNK4llvm17X86TargetLowering28getRegForInlineAsmConstraintERKSsNS_3EVTE", "llvm::X86TargetLowering::getRegForInlineAsmConstraint(std::string const&, llvm::EVT) const"}, + {"_Z10GetTLSADDRRN4llvm12SelectionDAGENS_7SDValueEPNS_19GlobalAddressSDNodeEPS2_NS_3EVTEjh", "GetTLSADDR(llvm::SelectionDAG&, llvm::SDValue, llvm::GlobalAddressSDNode*, llvm::SDValue*, llvm::EVT, unsigned int, unsigned char)"}, + {"_Z17MayFoldVectorLoadN4llvm7SDValueE", "MayFoldVectorLoad(llvm::SDValue)"}, + {"_Z24RewriteAsNarrowerShufflePN4llvm19ShuffleVectorSDNodeERNS_12SelectionDAGENS_8DebugLocE", "RewriteAsNarrowerShuffle(llvm::ShuffleVectorSDNode*, llvm::SelectionDAG&, llvm::DebugLoc)"}, + {"_Z16CC_X86_32_CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateE", "CC_X86_32_Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)"}, + {"_Z15RetCC_X86CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateE", "RetCC_X86Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)"}, + {"_Z14RetCC_X86_64_CjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateE", "RetCC_X86_64_C(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)"}, + {"_ZN4llvm15SmallVectorImplINS_7SDValueEE6resizeEj", "llvm::SmallVectorImpl::resize(unsigned int)"}, + + // {"_ZN4llvm8SmallSetINS_7SDValueELj8EE6insertERKS1_", + // "llvm::SmallSet::insert(llvm::SDValue const&)"}, + // "llvm::SmallSet::insert(llvm::SDValue const&)" was returned + + {"_ZN4llvm5APInt10getBitsSetEjjj", "llvm::APInt::getBitsSet(unsigned int, unsigned int, unsigned int)"}, + {"_ZNK4llvm3EVT6bitsLTES0_", "llvm::EVT::bitsLT(llvm::EVT) const"}, + {"_ZNK4llvm19MachineInstrBuilder7addDispERKNS_14MachineOperandEx", "llvm::MachineInstrBuilder::addDisp(llvm::MachineOperand const&, long long) const"}, + {"_ZN4llvm5APInt14getHighBitsSetEjj", "llvm::APInt::getHighBitsSet(unsigned int, unsigned int)"}, + + // {"_ZN4llvm11SmallVectorIjLj4EEC2EjRKj", + // "llvm::SmallVector::SmallVector(unsigned int, unsigned int const&)"}, + // "llvm::SmallVector::SmallVector(unsigned int, unsigned int const&)" was returned + + {"_ZNSt8_Rb_treeIN4llvm7SDValueES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE16_M_insert_uniqueERKS1_", "std::_Rb_tree, std::less, std::allocator>::_M_insert_unique(llvm::SDValue const&)"}, + {"_ZNSt6vectorIN4llvm9InlineAsm14ConstraintInfoESaIS2_EED2Ev", "std::vector>::~vector()"}, + {"_ZNSt6vectorIN4llvm9InlineAsm17SubConstraintInfoESaIS2_EED2Ev", "std::vector>::~vector()"}, + {"_ZN4llvm5APInt13getLowBitsSetEjj", "llvm::APInt::getLowBitsSet(unsigned int, unsigned int)"}, + {"_ZNK4llvm5APIntplEy", "llvm::APInt::operator+(unsigned long long) const"}, + {"_ZN4llvm5APInt17getSignedMinValueEj", "llvm::APInt::getSignedMinValue(unsigned int)"}, + {"_ZN4llvm15SmallVectorImplISt4pairIiiEE6resizeEj", "llvm::SmallVectorImpl>::resize(unsigned int)"}, + + // {"_ZN4llvm11SmallVectorIiLj8EEC2EjRKi", + // "llvm::SmallVector::SmallVector(unsigned int, int const&)"}, + // "llvm::SmallVector::SmallVector(unsigned int, int const&)" was returned + + {"_ZNSt8_Rb_treeIN4llvm7SDValueES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE8_M_eraseEPSt13_Rb_tree_nodeIS1_E", "std::_Rb_tree, std::less, std::allocator>::_M_erase(std::_Rb_tree_node*)"}, + {"_ZNSt6vectorIN4llvm7APFloatESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::APFloat const&)"}, + {"_ZN4llvm28TargetLoweringObjectFileCOFFD1Ev", "llvm::TargetLoweringObjectFileCOFF::~TargetLoweringObjectFileCOFF()"}, + {"_ZN4llvm28TargetLoweringObjectFileCOFFD0Ev", "llvm::TargetLoweringObjectFileCOFF::~TargetLoweringObjectFileCOFF()"}, + {"_ZNK4llvm28TargetLoweringObjectFileCOFF17getDrectveSectionEv", "llvm::TargetLoweringObjectFileCOFF::getDrectveSection() const"}, + {"_ZN4llvm12X86InstrInfoC1ERNS_16X86TargetMachineE", "llvm::X86InstrInfo::X86InstrInfo(llvm::X86TargetMachine&)"}, + {"_ZN4llvm12X86InstrInfoC2ERNS_16X86TargetMachineE", "llvm::X86InstrInfo::X86InstrInfo(llvm::X86TargetMachine&)"}, + {"_ZNK4llvm12X86InstrInfo21isCoalescableExtInstrERKNS_12MachineInstrERjS4_S4_", "llvm::X86InstrInfo::isCoalescableExtInstr(llvm::MachineInstr const&, unsigned int&, unsigned int&, unsigned int&) const"}, + {"_ZNK4llvm12X86InstrInfo14isFrameOperandEPKNS_12MachineInstrEjRi", "llvm::X86InstrInfo::isFrameOperand(llvm::MachineInstr const*, unsigned int, int&) const"}, + {"_ZNK4llvm12X86InstrInfo19isLoadFromStackSlotEPKNS_12MachineInstrERi", "llvm::X86InstrInfo::isLoadFromStackSlot(llvm::MachineInstr const*, int&) const"}, + {"_ZNK4llvm12X86InstrInfo25isLoadFromStackSlotPostFEEPKNS_12MachineInstrERi", "llvm::X86InstrInfo::isLoadFromStackSlotPostFE(llvm::MachineInstr const*, int&) const"}, + {"_ZNK4llvm12X86InstrInfo20hasLoadFromStackSlotEPKNS_12MachineInstrERPKNS_17MachineMemOperandERi", "llvm::X86InstrInfo::hasLoadFromStackSlot(llvm::MachineInstr const*, llvm::MachineMemOperand const*&, int&) const"}, + {"_ZNK4llvm12X86InstrInfo18isStoreToStackSlotEPKNS_12MachineInstrERi", "llvm::X86InstrInfo::isStoreToStackSlot(llvm::MachineInstr const*, int&) const"}, + {"_ZNK4llvm12X86InstrInfo24isStoreToStackSlotPostFEEPKNS_12MachineInstrERi", "llvm::X86InstrInfo::isStoreToStackSlotPostFE(llvm::MachineInstr const*, int&) const"}, + {"_ZNK4llvm12X86InstrInfo19hasStoreToStackSlotEPKNS_12MachineInstrERPKNS_17MachineMemOperandERi", "llvm::X86InstrInfo::hasStoreToStackSlot(llvm::MachineInstr const*, llvm::MachineMemOperand const*&, int&) const"}, + {"_ZNK4llvm12X86InstrInfo33isReallyTriviallyReMaterializableEPKNS_12MachineInstrEPNS_13AliasAnalysisE", "llvm::X86InstrInfo::isReallyTriviallyReMaterializable(llvm::MachineInstr const*, llvm::AliasAnalysis*) const"}, + {"_ZNK4llvm12X86InstrInfo13reMaterializeERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEEjjPKS4_RKNS_18TargetRegisterInfoE", "llvm::X86InstrInfo::reMaterialize(llvm::MachineBasicBlock&, llvm::ilist_iterator, unsigned int, unsigned int, llvm::MachineInstr const*, llvm::TargetRegisterInfo const&) const"}, + {"_ZNK4llvm12X86InstrInfo28convertToThreeAddressWithLEAEjRNS_14ilist_iteratorINS_17MachineBasicBlockEEERNS1_INS_12MachineInstrEEEPNS_13LiveVariablesE", "llvm::X86InstrInfo::convertToThreeAddressWithLEA(unsigned int, llvm::ilist_iterator&, llvm::ilist_iterator&, llvm::LiveVariables*) const"}, + {"_ZNK4llvm12X86InstrInfo21convertToThreeAddressERNS_14ilist_iteratorINS_17MachineBasicBlockEEERNS1_INS_12MachineInstrEEEPNS_13LiveVariablesE", "llvm::X86InstrInfo::convertToThreeAddress(llvm::ilist_iterator&, llvm::ilist_iterator&, llvm::LiveVariables*) const"}, + {"_ZNK4llvm12X86InstrInfo18commuteInstructionEPNS_12MachineInstrEb", "llvm::X86InstrInfo::commuteInstruction(llvm::MachineInstr*, bool) const"}, + {"_ZN4llvm3X8621GetCondBranchFromCondENS0_8CondCodeE", "llvm::X86::GetCondBranchFromCond(llvm::X86::CondCode)"}, + {"_ZN4llvm3X8626GetOppositeBranchConditionENS0_8CondCodeE", "llvm::X86::GetOppositeBranchCondition(llvm::X86::CondCode)"}, + {"_ZNK4llvm12X86InstrInfo24isUnpredicatedTerminatorEPKNS_12MachineInstrE", "llvm::X86InstrInfo::isUnpredicatedTerminator(llvm::MachineInstr const*) const"}, + {"_ZNK4llvm12X86InstrInfo13analyzeBranchERNS_17MachineBasicBlockERPS1_S4_RNS_15SmallVectorImplINS_14MachineOperandEEEb", "llvm::X86InstrInfo::analyzeBranch(llvm::MachineBasicBlock&, llvm::MachineBasicBlock*&, llvm::MachineBasicBlock*&, llvm::SmallVectorImpl&, bool) const"}, + {"_ZNK4llvm12X86InstrInfo12removeBranchERNS_17MachineBasicBlockE", "llvm::X86InstrInfo::removeBranch(llvm::MachineBasicBlock&) const"}, + {"_ZNK4llvm12X86InstrInfo12insertBranchERNS_17MachineBasicBlockEPS1_S3_RKNS_15SmallVectorImplINS_14MachineOperandEEENS_8DebugLocE", "llvm::X86InstrInfo::insertBranch(llvm::MachineBasicBlock&, llvm::MachineBasicBlock*, llvm::MachineBasicBlock*, llvm::SmallVectorImpl const&, llvm::DebugLoc) const"}, + {"_ZNK4llvm12X86InstrInfo11copyPhysRegERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEENS_8DebugLocEjjb", "llvm::X86InstrInfo::copyPhysReg(llvm::MachineBasicBlock&, llvm::ilist_iterator, llvm::DebugLoc, unsigned int, unsigned int, bool) const"}, + {"_ZNK4llvm12X86InstrInfo19storeRegToStackSlotERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEEjbiPKNS_19TargetRegisterClassEPKNS_18TargetRegisterInfoE", "llvm::X86InstrInfo::storeRegToStackSlot(llvm::MachineBasicBlock&, llvm::ilist_iterator, unsigned int, bool, int, llvm::TargetRegisterClass const*, llvm::TargetRegisterInfo const*) const"}, + {"_ZN4llvm17addFrameReferenceERKNS_19MachineInstrBuilderEii", "llvm::addFrameReference(llvm::MachineInstrBuilder const&, int, int)"}, + {"_ZNK4llvm12X86InstrInfo14storeRegToAddrERNS_15MachineFunctionEjbRNS_15SmallVectorImplINS_14MachineOperandEEEPKNS_19TargetRegisterClassEPPNS_17MachineMemOperandESC_RNS3_IPNS_12MachineInstrEEE", "llvm::X86InstrInfo::storeRegToAddr(llvm::MachineFunction&, unsigned int, bool, llvm::SmallVectorImpl&, llvm::TargetRegisterClass const*, llvm::MachineMemOperand**, llvm::MachineMemOperand**, llvm::SmallVectorImpl&) const"}, + {"_ZNK4llvm12X86InstrInfo20loadRegFromStackSlotERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEEjiPKNS_19TargetRegisterClassEPKNS_18TargetRegisterInfoE", "llvm::X86InstrInfo::loadRegFromStackSlot(llvm::MachineBasicBlock&, llvm::ilist_iterator, unsigned int, int, llvm::TargetRegisterClass const*, llvm::TargetRegisterInfo const*) const"}, + {"_ZNK4llvm12X86InstrInfo15loadRegFromAddrERNS_15MachineFunctionEjRNS_15SmallVectorImplINS_14MachineOperandEEEPKNS_19TargetRegisterClassEPPNS_17MachineMemOperandESC_RNS3_IPNS_12MachineInstrEEE", "llvm::X86InstrInfo::loadRegFromAddr(llvm::MachineFunction&, unsigned int, llvm::SmallVectorImpl&, llvm::TargetRegisterClass const*, llvm::MachineMemOperand**, llvm::MachineMemOperand**, llvm::SmallVectorImpl&) const"}, + {"_ZNK4llvm12X86InstrInfo24emitFrameIndexDebugValueERNS_15MachineFunctionEiyPKNS_6MDNodeENS_8DebugLocE", "llvm::X86InstrInfo::emitFrameIndexDebugValue(llvm::MachineFunction&, int, unsigned long long, llvm::MDNode const*, llvm::DebugLoc) const"}, + {"_ZNK4llvm12X86InstrInfo21foldMemoryOperandImplERNS_15MachineFunctionEPNS_12MachineInstrEjRKNS_15SmallVectorImplINS_14MachineOperandEEEjj", "llvm::X86InstrInfo::foldMemoryOperandImpl(llvm::MachineFunction&, llvm::MachineInstr*, unsigned int, llvm::SmallVectorImpl const&, unsigned int, unsigned int) const"}, + {"_Z10MakeM0InstRKN4llvm15TargetInstrInfoEjRKNS_15SmallVectorImplINS_14MachineOperandEEEPNS_12MachineInstrE", "MakeM0Inst(llvm::TargetInstrInfo const&, unsigned int, llvm::SmallVectorImpl const&, llvm::MachineInstr*)"}, + {"_ZNK4llvm12X86InstrInfo21foldMemoryOperandImplERNS_15MachineFunctionEPNS_12MachineInstrERKNS_15SmallVectorImplIjEEi", "llvm::X86InstrInfo::foldMemoryOperandImpl(llvm::MachineFunction&, llvm::MachineInstr*, llvm::SmallVectorImpl const&, int) const"}, + {"_ZNK4llvm12X86InstrInfo21foldMemoryOperandImplERNS_15MachineFunctionEPNS_12MachineInstrERKNS_15SmallVectorImplIjEES4_", "llvm::X86InstrInfo::foldMemoryOperandImpl(llvm::MachineFunction&, llvm::MachineInstr*, llvm::SmallVectorImpl const&, llvm::MachineInstr*) const"}, + {"_ZNK4llvm12X86InstrInfo20canFoldMemoryOperandEPKNS_12MachineInstrERKNS_15SmallVectorImplIjEE", "llvm::X86InstrInfo::canFoldMemoryOperand(llvm::MachineInstr const*, llvm::SmallVectorImpl const&) const"}, + {"_ZNK4llvm12X86InstrInfo19unfoldMemoryOperandERNS_15MachineFunctionEPNS_12MachineInstrEjbbRNS_15SmallVectorImplIS4_EE", "llvm::X86InstrInfo::unfoldMemoryOperand(llvm::MachineFunction&, llvm::MachineInstr*, unsigned int, bool, bool, llvm::SmallVectorImpl&) const"}, + {"_ZNK4llvm12X86InstrInfo19unfoldMemoryOperandERNS_12SelectionDAGEPNS_6SDNodeERNS_15SmallVectorImplIS4_EE", "llvm::X86InstrInfo::unfoldMemoryOperand(llvm::SelectionDAG&, llvm::SDNode*, llvm::SmallVectorImpl&) const"}, + {"_ZNK4llvm12X86InstrInfo26getOpcodeAfterMemoryUnfoldEjbbPj", "llvm::X86InstrInfo::getOpcodeAfterMemoryUnfold(unsigned int, bool, bool, unsigned int*) const"}, + {"_ZNK4llvm12X86InstrInfo23areLoadsFromSameBasePtrEPNS_6SDNodeES2_RxS3_", "llvm::X86InstrInfo::areLoadsFromSameBasePtr(llvm::SDNode*, llvm::SDNode*, long long&, long long&) const"}, + {"_ZNK4llvm12X86InstrInfo23shouldScheduleLoadsNearEPNS_6SDNodeES2_xxj", "llvm::X86InstrInfo::shouldScheduleLoadsNear(llvm::SDNode*, llvm::SDNode*, long long, long long, unsigned int) const"}, + {"_ZNK4llvm12X86InstrInfo22ReverseBranchConditionERNS_15SmallVectorImplINS_14MachineOperandEEE", "llvm::X86InstrInfo::ReverseBranchCondition(llvm::SmallVectorImpl&) const"}, + {"_ZNK4llvm12X86InstrInfo24isSafeToMoveRegClassDefsEPKNS_19TargetRegisterClassE", "llvm::X86InstrInfo::isSafeToMoveRegClassDefs(llvm::TargetRegisterClass const*) const"}, + {"_ZN4llvm12X86InstrInfo19isX86_64ExtendedRegEj", "llvm::X86InstrInfo::isX86_64ExtendedReg(unsigned int)"}, + {"_ZNK4llvm12X86InstrInfo16getGlobalBaseRegEPNS_15MachineFunctionE", "llvm::X86InstrInfo::getGlobalBaseReg(llvm::MachineFunction*) const"}, + {"_ZNK4llvm12X86InstrInfo12GetSSEDomainEPKNS_12MachineInstrE", "llvm::X86InstrInfo::GetSSEDomain(llvm::MachineInstr const*) const"}, + {"_ZNK4llvm12X86InstrInfo12SetSSEDomainEPNS_12MachineInstrEj", "llvm::X86InstrInfo::SetSSEDomain(llvm::MachineInstr*, unsigned int) const"}, + {"_ZNK4llvm12X86InstrInfo21getNoopForMachoTargetERNS_6MCInstE", "llvm::X86InstrInfo::getNoopForMachoTarget(llvm::MCInst&) const"}, + {"_ZNK4llvm12X86InstrInfo21hasHighOperandLatencyEPKNS_18InstrItineraryDataEPKNS_19MachineRegisterInfoEPKNS_12MachineInstrEjS9_j", "llvm::X86InstrInfo::hasHighOperandLatency(llvm::InstrItineraryData const*, llvm::MachineRegisterInfo const*, llvm::MachineInstr const*, unsigned int, llvm::MachineInstr const*, unsigned int) const"}, + {"_ZN4llvm23createGlobalBaseRegPassEv", "llvm::createGlobalBaseRegPass()"}, + {"_ZN12_GLOBAL__N_14CGBRD1Ev", "(anonymous namespace)::CGBR::~CGBR()"}, + {"_ZN12_GLOBAL__N_14CGBRD0Ev", "(anonymous namespace)::CGBR::~CGBR()"}, + {"_ZNK12_GLOBAL__N_14CGBR11getPassNameEv", "(anonymous namespace)::CGBR::getPassName() const"}, + {"_ZNK12_GLOBAL__N_14CGBR16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::CGBR::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_14CGBR20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::CGBR::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_Z21getLoadStoreRegOpcodejPKN4llvm19TargetRegisterClassEbRKNS_13TargetMachineEb", "getLoadStoreRegOpcode(unsigned int, llvm::TargetRegisterClass const*, bool, llvm::TargetMachine const&, bool)"}, + {"_ZN4llvm22X86MachineFunctionInfoD1Ev", "llvm::X86MachineFunctionInfo::~X86MachineFunctionInfo()"}, + {"_ZN4llvm22X86MachineFunctionInfoD0Ev", "llvm::X86MachineFunctionInfo::~X86MachineFunctionInfo()"}, + {"_ZNSt6vectorIN4llvm3EVTESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::EVT const&)"}, + {"_ZNSt6vectorIN4llvm7SDValueESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::SDValue const&)"}, + + // {"_ZN4llvm8DenseMapIjSt4pairIjjENS_12DenseMapInfoIjEENS3_IS2_EEE16InsertIntoBucketERKjRKS2_PS1_IjS2_E", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(unsigned int const&, std::pair const&, std::pair>*)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(unsigned int const&, std::pair const&, std::pair*>)" was returned + + {"_ZN4llvm8DenseMapIjSt4pairIjjENS_12DenseMapInfoIjEENS3_IS2_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)"}, + {"_ZNSt6vectorIPN4llvm12MachineInstrESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::MachineInstr* const&)"}, + {"_ZN4llvm23SmallVectorTemplateBaseINS_14MachineOperandELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN4llvm19MachineFunctionPassD1Ev", "llvm::MachineFunctionPass::~MachineFunctionPass()"}, + {"_ZN4llvm19MachineFunctionPassD0Ev", "llvm::MachineFunctionPass::~MachineFunctionPass()"}, + {"_ZN4llvm12FunctionPassD1Ev", "llvm::FunctionPass::~FunctionPass()"}, + {"_ZN4llvm12FunctionPassD0Ev", "llvm::FunctionPass::~FunctionPass()"}, + {"_ZN4llvm10X86JITInfo29replaceMachineCodeForFunctionEPvS1_", "llvm::X86JITInfo::replaceMachineCodeForFunction(void*, void*)"}, + {"_ZN4llvm10X86JITInfo23getLazyResolverFunctionEPFPvS1_E", "llvm::X86JITInfo::getLazyResolverFunction(void* (*)(void*))"}, + {"_ZN4llvm10X86JITInfoC1ERNS_16X86TargetMachineE", "llvm::X86JITInfo::X86JITInfo(llvm::X86TargetMachine&)"}, + {"_ZN4llvm10X86JITInfoC2ERNS_16X86TargetMachineE", "llvm::X86JITInfo::X86JITInfo(llvm::X86TargetMachine&)"}, + {"_ZN4llvm10X86JITInfo26emitGlobalValueIndirectSymEPKNS_11GlobalValueEPvRNS_14JITCodeEmitterE", "llvm::X86JITInfo::emitGlobalValueIndirectSym(llvm::GlobalValue const*, void*, llvm::JITCodeEmitter&)"}, + {"_ZN4llvm10X86JITInfo13getStubLayoutEv", "llvm::X86JITInfo::getStubLayout()"}, + {"_ZN4llvm10X86JITInfo16emitFunctionStubEPKNS_8FunctionEPvRNS_14JITCodeEmitterE", "llvm::X86JITInfo::emitFunctionStub(llvm::Function const*, void*, llvm::JITCodeEmitter&)"}, + {"_ZN4llvm10X86JITInfo20getPICJumpTableEntryEmm", "llvm::X86JITInfo::getPICJumpTableEntry(unsigned long, unsigned long)"}, + {"_ZN4llvm10X86JITInfo8relocateEPvPNS_17MachineRelocationEjPh", "llvm::X86JITInfo::relocate(void*, llvm::MachineRelocation*, unsigned int, unsigned char*)"}, + {"_ZN4llvm10X86JITInfo25allocateThreadLocalMemoryEm", "llvm::X86JITInfo::allocateThreadLocalMemory(unsigned long)"}, + {"_ZN4llvm18X86MCAsmInfoDarwinC1ERKNS_6TripleE", "llvm::X86MCAsmInfoDarwin::X86MCAsmInfoDarwin(llvm::Triple const&)"}, + {"_ZN4llvm18X86MCAsmInfoDarwinC2ERKNS_6TripleE", "llvm::X86MCAsmInfoDarwin::X86MCAsmInfoDarwin(llvm::Triple const&)"}, + {"_ZN4llvm15X86ELFMCAsmInfoC1ERKNS_6TripleE", "llvm::X86ELFMCAsmInfo::X86ELFMCAsmInfo(llvm::Triple const&)"}, + {"_ZN4llvm15X86ELFMCAsmInfoC2ERKNS_6TripleE", "llvm::X86ELFMCAsmInfo::X86ELFMCAsmInfo(llvm::Triple const&)"}, + {"_ZNK4llvm15X86ELFMCAsmInfo28getNonexecutableStackSectionERNS_9MCContextE", "llvm::X86ELFMCAsmInfo::getNonexecutableStackSection(llvm::MCContext&) const"}, + {"_ZN4llvm16X86MCAsmInfoCOFFC1ERKNS_6TripleE", "llvm::X86MCAsmInfoCOFF::X86MCAsmInfoCOFF(llvm::Triple const&)"}, + {"_ZN4llvm16X86MCAsmInfoCOFFC2ERKNS_6TripleE", "llvm::X86MCAsmInfoCOFF::X86MCAsmInfoCOFF(llvm::Triple const&)"}, + {"_ZN4llvm2cl3optI17AsmWriterFlavorTyLb0ENS0_6parserIS2_EEED1Ev", "llvm::cl::opt>::~opt()"}, + {"_ZNK4llvm9MCAsmInfo18getDataASDirectiveEjj", "llvm::MCAsmInfo::getDataASDirective(unsigned int, unsigned int) const"}, + {"_ZN4llvm15X86ELFMCAsmInfoD1Ev", "llvm::X86ELFMCAsmInfo::~X86ELFMCAsmInfo()"}, + {"_ZN4llvm15X86ELFMCAsmInfoD0Ev", "llvm::X86ELFMCAsmInfo::~X86ELFMCAsmInfo()"}, + {"_ZN4llvm16X86MCAsmInfoCOFFD1Ev", "llvm::X86MCAsmInfoCOFF::~X86MCAsmInfoCOFF()"}, + {"_ZN4llvm16X86MCAsmInfoCOFFD0Ev", "llvm::X86MCAsmInfoCOFF::~X86MCAsmInfoCOFF()"}, + {"_ZNK4llvm9MCAsmInfo28getNonexecutableStackSectionERNS_9MCContextE", "llvm::MCAsmInfo::getNonexecutableStackSection(llvm::MCContext&) const"}, + {"_ZN4llvm18X86MCAsmInfoDarwinD1Ev", "llvm::X86MCAsmInfoDarwin::~X86MCAsmInfoDarwin()"}, + {"_ZN4llvm18X86MCAsmInfoDarwinD0Ev", "llvm::X86MCAsmInfoDarwin::~X86MCAsmInfoDarwin()"}, + {"_ZN4llvm15MCAsmInfoDarwinD1Ev", "llvm::MCAsmInfoDarwin::~MCAsmInfoDarwin()"}, + {"_ZN4llvm15MCAsmInfoDarwinD0Ev", "llvm::MCAsmInfoDarwin::~MCAsmInfoDarwin()"}, + {"_ZN4llvm13MCAsmInfoCOFFD1Ev", "llvm::MCAsmInfoCOFF::~MCAsmInfoCOFF()"}, + {"_ZN4llvm13MCAsmInfoCOFFD0Ev", "llvm::MCAsmInfoCOFF::~MCAsmInfoCOFF()"}, + {"_ZN4llvm2cl3optI17AsmWriterFlavorTyLb0ENS0_6parserIS2_EEE16handleOccurrenceEjNS_9StringRefES6_", "llvm::cl::opt>::handleOccurrence(unsigned int, llvm::StringRef, llvm::StringRef)"}, + {"_ZNK4llvm2cl3optI17AsmWriterFlavorTyLb0ENS0_6parserIS2_EEE27getValueExpectedFlagDefaultEv", "llvm::cl::opt>::getValueExpectedFlagDefault() const"}, + {"_ZNK4llvm2cl3optI17AsmWriterFlavorTyLb0ENS0_6parserIS2_EEE14getOptionWidthEv", "llvm::cl::opt>::getOptionWidth() const"}, + {"_ZNK4llvm2cl3optI17AsmWriterFlavorTyLb0ENS0_6parserIS2_EEE15printOptionInfoEm", "llvm::cl::opt>::printOptionInfo(unsigned long) const"}, + {"_ZN4llvm2cl3optI17AsmWriterFlavorTyLb0ENS0_6parserIS2_EEE19getExtraOptionNamesERNS_15SmallVectorImplIPKcEE", "llvm::cl::opt>::getExtraOptionNames(llvm::SmallVectorImpl&)"}, + {"_ZN4llvm2cl3optI17AsmWriterFlavorTyLb0ENS0_6parserIS2_EEED0Ev", "llvm::cl::opt>::~opt()"}, + {"_ZN4llvm2cl6parserI17AsmWriterFlavorTyE5parseERNS0_6OptionENS_9StringRefES6_RS2_", "llvm::cl::parser::parse(llvm::cl::Option&, llvm::StringRef, llvm::StringRef, AsmWriterFlavorTy&)"}, + + // {"_ZNK4llvm2cl11ValuesClassIiE5applyINS0_3optI17AsmWriterFlavorTyLb0ENS0_6parserIS5_EEEEEEvRT_", + // "void llvm::cl::ValuesClass::apply>>(llvm::cl::opt>&) const"}, + // "void llvm::cl::ValuesClass::apply>>(int&) const" was returned + + {"_ZN4llvm23SmallVectorTemplateBaseINS_2cl6parserI17AsmWriterFlavorTyE10OptionInfoELb0EE4growEm", "llvm::SmallVectorTemplateBase::OptionInfo, false>::grow(unsigned long)"}, + {"_ZN4llvm2cl6parserI17AsmWriterFlavorTyED1Ev", "llvm::cl::parser::~parser()"}, + {"_ZN4llvm2cl6parserI17AsmWriterFlavorTyED0Ev", "llvm::cl::parser::~parser()"}, + {"_ZNK4llvm2cl6parserI17AsmWriterFlavorTyE13getNumOptionsEv", "llvm::cl::parser::getNumOptions() const"}, + {"_ZNK4llvm2cl6parserI17AsmWriterFlavorTyE9getOptionEj", "llvm::cl::parser::getOption(unsigned int) const"}, + {"_ZNK4llvm2cl6parserI17AsmWriterFlavorTyE14getDescriptionEj", "llvm::cl::parser::getDescription(unsigned int) const"}, + {"_ZN4llvm25createX86_32MCCodeEmitterERKNS_6TargetERNS_13TargetMachineERNS_9MCContextE", "llvm::createX86_32MCCodeEmitter(llvm::Target const&, llvm::TargetMachine&, llvm::MCContext&)"}, + {"_ZN4llvm25createX86_64MCCodeEmitterERKNS_6TargetERNS_13TargetMachineERNS_9MCContextE", "llvm::createX86_64MCCodeEmitter(llvm::Target const&, llvm::TargetMachine&, llvm::MCContext&)"}, + {"_ZN12_GLOBAL__N_116X86MCCodeEmitterD1Ev", "(anonymous namespace)::X86MCCodeEmitter::~X86MCCodeEmitter()"}, + {"_ZN12_GLOBAL__N_116X86MCCodeEmitterD0Ev", "(anonymous namespace)::X86MCCodeEmitter::~X86MCCodeEmitter()"}, + {"_ZNK12_GLOBAL__N_116X86MCCodeEmitter17EncodeInstructionERKN4llvm6MCInstERNS1_11raw_ostreamERNS1_15SmallVectorImplINS1_7MCFixupEEE", "(anonymous namespace)::X86MCCodeEmitter::EncodeInstruction(llvm::MCInst const&, llvm::raw_ostream&, llvm::SmallVectorImpl&) const"}, + {"_ZNK12_GLOBAL__N_116X86MCCodeEmitter13EmitImmediateERKN4llvm9MCOperandEjNS1_11MCFixupKindERjRNS1_11raw_ostreamERNS1_15SmallVectorImplINS1_7MCFixupEEEi", "(anonymous namespace)::X86MCCodeEmitter::EmitImmediate(llvm::MCOperand const&, unsigned int, llvm::MCFixupKind, unsigned int&, llvm::raw_ostream&, llvm::SmallVectorImpl&, int) const"}, + {"_ZNK12_GLOBAL__N_116X86MCCodeEmitter16EmitMemModRMByteERKN4llvm6MCInstEjjyRjRNS1_11raw_ostreamERNS1_15SmallVectorImplINS1_7MCFixupEEE", "(anonymous namespace)::X86MCCodeEmitter::EmitMemModRMByte(llvm::MCInst const&, unsigned int, unsigned int, unsigned long long, unsigned int&, llvm::raw_ostream&, llvm::SmallVectorImpl&) const"}, + {"_ZNK12_GLOBAL__N_116X86MCCodeEmitter25EmitSegmentOverridePrefixEyRjiRKN4llvm6MCInstERNS2_11raw_ostreamE", "(anonymous namespace)::X86MCCodeEmitter::EmitSegmentOverridePrefix(unsigned long long, unsigned int&, int, llvm::MCInst const&, llvm::raw_ostream&) const"}, + {"_ZN4llvm14X86MCInstLowerC1EPNS_7ManglerERKNS_15MachineFunctionERNS_13X86AsmPrinterE", "llvm::X86MCInstLower::X86MCInstLower(llvm::Mangler*, llvm::MachineFunction const&, llvm::X86AsmPrinter&)"}, + {"_ZN4llvm14X86MCInstLowerC2EPNS_7ManglerERKNS_15MachineFunctionERNS_13X86AsmPrinterE", "llvm::X86MCInstLower::X86MCInstLower(llvm::Mangler*, llvm::MachineFunction const&, llvm::X86AsmPrinter&)"}, + {"_ZNK4llvm14X86MCInstLower11getMachOMMIEv", "llvm::X86MCInstLower::getMachOMMI() const"}, + {"_ZNK4llvm14X86MCInstLower20GetSymbolFromOperandERKNS_14MachineOperandE", "llvm::X86MCInstLower::GetSymbolFromOperand(llvm::MachineOperand const&) const"}, + {"_ZNK4llvm14X86MCInstLower18LowerSymbolOperandERKNS_14MachineOperandEPNS_8MCSymbolE", "llvm::X86MCInstLower::LowerSymbolOperand(llvm::MachineOperand const&, llvm::MCSymbol*) const"}, + {"_ZNK4llvm14X86MCInstLower5LowerEPKNS_12MachineInstrERNS_6MCInstE", "llvm::X86MCInstLower::Lower(llvm::MachineInstr const*, llvm::MCInst&) const"}, + {"_Z21SimplifyShortMoveFormRN4llvm13X86AsmPrinterERNS_6MCInstEj", "SimplifyShortMoveForm(llvm::X86AsmPrinter&, llvm::MCInst&, unsigned int)"}, + {"_Z20SimplifyShortImmFormRN4llvm6MCInstEj", "SimplifyShortImmForm(llvm::MCInst&, unsigned int)"}, + {"_ZN4llvm13X86AsmPrinter15EmitInstructionEPKNS_12MachineInstrE", "llvm::X86AsmPrinter::EmitInstruction(llvm::MachineInstr const*)"}, + + // {"_ZN4llvm15SmallVectorImplIcE6insertIPKcEEPcS5_T_S6_", + // "char* llvm::SmallVectorImpl::insert(char*, char const*, char const*)"}, + // got error + + {"_ZN4llvm25createX86MachObjectWriterERNS_11raw_ostreamEbjj", "llvm::createX86MachObjectWriter(llvm::raw_ostream&, bool, unsigned int, unsigned int)"}, + {"_ZN12_GLOBAL__N_119X86MachObjectWriterD1Ev", "(anonymous namespace)::X86MachObjectWriter::~X86MachObjectWriter()"}, + {"_ZN12_GLOBAL__N_119X86MachObjectWriterD0Ev", "(anonymous namespace)::X86MachObjectWriter::~X86MachObjectWriter()"}, + {"_ZN4llvm15X86RegisterInfoC1ERNS_16X86TargetMachineERKNS_15TargetInstrInfoE", "llvm::X86RegisterInfo::X86RegisterInfo(llvm::X86TargetMachine&, llvm::TargetInstrInfo const&)"}, + {"_ZN4llvm15X86RegisterInfoC2ERNS_16X86TargetMachineERKNS_15TargetInstrInfoE", "llvm::X86RegisterInfo::X86RegisterInfo(llvm::X86TargetMachine&, llvm::TargetInstrInfo const&)"}, + {"_ZN4llvm18X86GenRegisterInfoC2Eii", "llvm::X86GenRegisterInfo::X86GenRegisterInfo(int, int)"}, + {"_ZNK4llvm15X86RegisterInfo14getDwarfRegNumEjb", "llvm::X86RegisterInfo::getDwarfRegNum(unsigned int, bool) const"}, + {"_ZNK4llvm18X86GenRegisterInfo18getDwarfRegNumFullEjj", "llvm::X86GenRegisterInfo::getDwarfRegNumFull(unsigned int, unsigned int) const"}, + {"_ZN4llvm15X86RegisterInfo12getX86RegNumEj", "llvm::X86RegisterInfo::getX86RegNum(unsigned int)"}, + {"_ZNK4llvm15X86RegisterInfo24getMatchingSuperRegClassEPKNS_19TargetRegisterClassES3_j", "llvm::X86RegisterInfo::getMatchingSuperRegClass(llvm::TargetRegisterClass const*, llvm::TargetRegisterClass const*, unsigned int) const"}, + {"_ZNK4llvm15X86RegisterInfo18getPointerRegClassEj", "llvm::X86RegisterInfo::getPointerRegClass(unsigned int) const"}, + {"_ZNK4llvm15X86RegisterInfo20getCrossCopyRegClassEPKNS_19TargetRegisterClassE", "llvm::X86RegisterInfo::getCrossCopyRegClass(llvm::TargetRegisterClass const*) const"}, + {"_ZNK4llvm15X86RegisterInfo18getCalleeSavedRegsEPKNS_15MachineFunctionE", "llvm::X86RegisterInfo::getCalleeSavedRegs(llvm::MachineFunction const*) const"}, + {"_ZNK4llvm15X86RegisterInfo15getReservedRegsERKNS_15MachineFunctionE", "llvm::X86RegisterInfo::getReservedRegs(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm15X86RegisterInfo15canRealignStackERKNS_15MachineFunctionE", "llvm::X86RegisterInfo::canRealignStack(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm15X86RegisterInfo21needsStackRealignmentERKNS_15MachineFunctionE", "llvm::X86RegisterInfo::needsStackRealignment(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm15X86RegisterInfo20hasReservedSpillSlotERKNS_15MachineFunctionEjRi", "llvm::X86RegisterInfo::hasReservedSpillSlot(llvm::MachineFunction const&, unsigned int, int&) const"}, + {"_ZNK4llvm15X86RegisterInfo29eliminateCallFramePseudoInstrERNS_15MachineFunctionERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEE", "llvm::X86RegisterInfo::eliminateCallFramePseudoInstr(llvm::MachineFunction&, llvm::MachineBasicBlock&, llvm::ilist_iterator) const"}, + {"_ZNK4llvm15X86RegisterInfo19eliminateFrameIndexENS_14ilist_iteratorINS_12MachineInstrEEEiPNS_12RegScavengerE", "llvm::X86RegisterInfo::eliminateFrameIndex(llvm::ilist_iterator, int, llvm::RegScavenger*) const"}, + {"_ZNK4llvm15X86RegisterInfo13getRARegisterEv", "llvm::X86RegisterInfo::getRARegister() const"}, + {"_ZNK4llvm15X86RegisterInfo16getFrameRegisterERKNS_15MachineFunctionE", "llvm::X86RegisterInfo::getFrameRegister(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm15X86RegisterInfo22getEHExceptionRegisterEv", "llvm::X86RegisterInfo::getEHExceptionRegister() const"}, + {"_ZNK4llvm15X86RegisterInfo20getEHHandlerRegisterEv", "llvm::X86RegisterInfo::getEHHandlerRegister() const"}, + {"_ZN4llvm22getX86SubSuperRegisterEjNS_3EVTEb", "llvm::getX86SubSuperRegister(unsigned int, llvm::EVT, bool)"}, + {"_ZN4llvm3X868CCRClassC1Ev", "llvm::X86::CCRClass::CCRClass()"}, + {"_ZN4llvm3X8616CONTROL_REGClassC1Ev", "llvm::X86::CONTROL_REGClass::CONTROL_REGClass()"}, + {"_ZN4llvm3X8614DEBUG_REGClassC1Ev", "llvm::X86::DEBUG_REGClass::DEBUG_REGClass()"}, + {"_ZN4llvm3X869FR32ClassC1Ev", "llvm::X86::FR32Class::FR32Class()"}, + {"_ZN4llvm3X869FR64ClassC1Ev", "llvm::X86::FR64Class::FR64Class()"}, + {"_ZN4llvm3X869GR16ClassC1Ev", "llvm::X86::GR16Class::GR16Class()"}, + {"_ZN4llvm3X8614GR16_ABCDClassC1Ev", "llvm::X86::GR16_ABCDClass::GR16_ABCDClass()"}, + {"_ZN4llvm3X8615GR16_NOREXClassC1Ev", "llvm::X86::GR16_NOREXClass::GR16_NOREXClass()"}, + {"_ZN4llvm3X869GR32ClassC1Ev", "llvm::X86::GR32Class::GR32Class()"}, + {"_ZN4llvm3X8614GR32_ABCDClassC1Ev", "llvm::X86::GR32_ABCDClass::GR32_ABCDClass()"}, + {"_ZN4llvm3X8612GR32_ADClassC1Ev", "llvm::X86::GR32_ADClass::GR32_ADClass()"}, + {"_ZN4llvm3X8615GR32_NOREXClassC1Ev", "llvm::X86::GR32_NOREXClass::GR32_NOREXClass()"}, + {"_ZN4llvm3X8614GR32_NOSPClassC1Ev", "llvm::X86::GR32_NOSPClass::GR32_NOSPClass()"}, + {"_ZN4llvm3X8612GR32_TCClassC1Ev", "llvm::X86::GR32_TCClass::GR32_TCClass()"}, + {"_ZN4llvm3X869GR64ClassC1Ev", "llvm::X86::GR64Class::GR64Class()"}, + {"_ZN4llvm3X8614GR64_ABCDClassC1Ev", "llvm::X86::GR64_ABCDClass::GR64_ABCDClass()"}, + {"_ZN4llvm3X8615GR64_NOREXClassC1Ev", "llvm::X86::GR64_NOREXClass::GR64_NOREXClass()"}, + {"_ZN4llvm3X8620GR64_NOREX_NOSPClassC1Ev", "llvm::X86::GR64_NOREX_NOSPClass::GR64_NOREX_NOSPClass()"}, + {"_ZN4llvm3X8614GR64_NOSPClassC1Ev", "llvm::X86::GR64_NOSPClass::GR64_NOSPClass()"}, + {"_ZN4llvm3X8612GR64_TCClassC1Ev", "llvm::X86::GR64_TCClass::GR64_TCClass()"}, + {"_ZN4llvm3X8615GR64_TCW64ClassC1Ev", "llvm::X86::GR64_TCW64Class::GR64_TCW64Class()"}, + {"_ZN4llvm3X868GR8ClassC1Ev", "llvm::X86::GR8Class::GR8Class()"}, + {"_ZN4llvm3X8615GR8_ABCD_HClassC1Ev", "llvm::X86::GR8_ABCD_HClass::GR8_ABCD_HClass()"}, + {"_ZN4llvm3X8615GR8_ABCD_LClassC1Ev", "llvm::X86::GR8_ABCD_LClass::GR8_ABCD_LClass()"}, + {"_ZN4llvm3X8614GR8_NOREXClassC1Ev", "llvm::X86::GR8_NOREXClass::GR8_NOREXClass()"}, + {"_ZN4llvm3X8610RFP32ClassC1Ev", "llvm::X86::RFP32Class::RFP32Class()"}, + {"_ZN4llvm3X8610RFP64ClassC1Ev", "llvm::X86::RFP64Class::RFP64Class()"}, + {"_ZN4llvm3X8610RFP80ClassC1Ev", "llvm::X86::RFP80Class::RFP80Class()"}, + {"_ZN4llvm3X868RSTClassC1Ev", "llvm::X86::RSTClass::RSTClass()"}, + {"_ZN4llvm3X8616SEGMENT_REGClassC1Ev", "llvm::X86::SEGMENT_REGClass::SEGMENT_REGClass()"}, + {"_ZN4llvm3X8610VR128ClassC1Ev", "llvm::X86::VR128Class::VR128Class()"}, + {"_ZN4llvm3X8610VR256ClassC1Ev", "llvm::X86::VR256Class::VR256Class()"}, + {"_ZN4llvm3X869VR64ClassC1Ev", "llvm::X86::VR64Class::VR64Class()"}, + {"_ZNK4llvm3X868CCRClass20allocation_order_endERKNS_15MachineFunctionE", "llvm::X86::CCRClass::allocation_order_end(llvm::MachineFunction const&) const"}, + {"_ZN4llvm3X868CCRClassC2Ev", "llvm::X86::CCRClass::CCRClass()"}, + {"_ZN4llvm3X8616CONTROL_REGClassC2Ev", "llvm::X86::CONTROL_REGClass::CONTROL_REGClass()"}, + {"_ZN4llvm3X8614DEBUG_REGClassC2Ev", "llvm::X86::DEBUG_REGClass::DEBUG_REGClass()"}, + {"_ZNK4llvm3X869FR32Class20allocation_order_endERKNS_15MachineFunctionE", "llvm::X86::FR32Class::allocation_order_end(llvm::MachineFunction const&) const"}, + {"_ZN4llvm3X869FR32ClassC2Ev", "llvm::X86::FR32Class::FR32Class()"}, + {"_ZNK4llvm3X869FR64Class20allocation_order_endERKNS_15MachineFunctionE", "llvm::X86::FR64Class::allocation_order_end(llvm::MachineFunction const&) const"}, + {"_ZN4llvm3X869FR64ClassC2Ev", "llvm::X86::FR64Class::FR64Class()"}, + {"_ZNK4llvm3X869GR16Class22allocation_order_beginERKNS_15MachineFunctionE", "llvm::X86::GR16Class::allocation_order_begin(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm3X869GR16Class20allocation_order_endERKNS_15MachineFunctionE", "llvm::X86::GR16Class::allocation_order_end(llvm::MachineFunction const&) const"}, + {"_ZN4llvm3X869GR16ClassC2Ev", "llvm::X86::GR16Class::GR16Class()"}, + {"_ZN4llvm3X8614GR16_ABCDClassC2Ev", "llvm::X86::GR16_ABCDClass::GR16_ABCDClass()"}, + {"_ZNK4llvm3X8615GR16_NOREXClass20allocation_order_endERKNS_15MachineFunctionE", "llvm::X86::GR16_NOREXClass::allocation_order_end(llvm::MachineFunction const&) const"}, + {"_ZN4llvm3X8615GR16_NOREXClassC2Ev", "llvm::X86::GR16_NOREXClass::GR16_NOREXClass()"}, + {"_ZNK4llvm3X869GR32Class22allocation_order_beginERKNS_15MachineFunctionE", "llvm::X86::GR32Class::allocation_order_begin(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm3X869GR32Class20allocation_order_endERKNS_15MachineFunctionE", "llvm::X86::GR32Class::allocation_order_end(llvm::MachineFunction const&) const"}, + {"_ZN4llvm3X869GR32ClassC2Ev", "llvm::X86::GR32Class::GR32Class()"}, + {"_ZN4llvm3X8614GR32_ABCDClassC2Ev", "llvm::X86::GR32_ABCDClass::GR32_ABCDClass()"}, + {"_ZN4llvm3X8612GR32_ADClassC2Ev", "llvm::X86::GR32_ADClass::GR32_ADClass()"}, + {"_ZNK4llvm3X8615GR32_NOREXClass20allocation_order_endERKNS_15MachineFunctionE", "llvm::X86::GR32_NOREXClass::allocation_order_end(llvm::MachineFunction const&) const"}, + {"_ZN4llvm3X8615GR32_NOREXClassC2Ev", "llvm::X86::GR32_NOREXClass::GR32_NOREXClass()"}, + {"_ZNK4llvm3X8614GR32_NOSPClass22allocation_order_beginERKNS_15MachineFunctionE", "llvm::X86::GR32_NOSPClass::allocation_order_begin(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm3X8614GR32_NOSPClass20allocation_order_endERKNS_15MachineFunctionE", "llvm::X86::GR32_NOSPClass::allocation_order_end(llvm::MachineFunction const&) const"}, + {"_ZN4llvm3X8614GR32_NOSPClassC2Ev", "llvm::X86::GR32_NOSPClass::GR32_NOSPClass()"}, + {"_ZN4llvm3X8612GR32_TCClassC2Ev", "llvm::X86::GR32_TCClass::GR32_TCClass()"}, + {"_ZNK4llvm3X869GR64Class20allocation_order_endERKNS_15MachineFunctionE", "llvm::X86::GR64Class::allocation_order_end(llvm::MachineFunction const&) const"}, + {"_ZN4llvm3X869GR64ClassC2Ev", "llvm::X86::GR64Class::GR64Class()"}, + {"_ZN4llvm3X8614GR64_ABCDClassC2Ev", "llvm::X86::GR64_ABCDClass::GR64_ABCDClass()"}, + {"_ZNK4llvm3X8615GR64_NOREXClass20allocation_order_endERKNS_15MachineFunctionE", "llvm::X86::GR64_NOREXClass::allocation_order_end(llvm::MachineFunction const&) const"}, + {"_ZN4llvm3X8615GR64_NOREXClassC2Ev", "llvm::X86::GR64_NOREXClass::GR64_NOREXClass()"}, + {"_ZNK4llvm3X8620GR64_NOREX_NOSPClass20allocation_order_endERKNS_15MachineFunctionE", "llvm::X86::GR64_NOREX_NOSPClass::allocation_order_end(llvm::MachineFunction const&) const"}, + {"_ZN4llvm3X8620GR64_NOREX_NOSPClassC2Ev", "llvm::X86::GR64_NOREX_NOSPClass::GR64_NOREX_NOSPClass()"}, + {"_ZNK4llvm3X8614GR64_NOSPClass20allocation_order_endERKNS_15MachineFunctionE", "llvm::X86::GR64_NOSPClass::allocation_order_end(llvm::MachineFunction const&) const"}, + {"_ZN4llvm3X8614GR64_NOSPClassC2Ev", "llvm::X86::GR64_NOSPClass::GR64_NOSPClass()"}, + {"_ZN4llvm3X8612GR64_TCClassC2Ev", "llvm::X86::GR64_TCClass::GR64_TCClass()"}, + {"_ZN4llvm3X8615GR64_TCW64ClassC2Ev", "llvm::X86::GR64_TCW64Class::GR64_TCW64Class()"}, + {"_ZNK4llvm3X868GR8Class22allocation_order_beginERKNS_15MachineFunctionE", "llvm::X86::GR8Class::allocation_order_begin(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm3X868GR8Class20allocation_order_endERKNS_15MachineFunctionE", "llvm::X86::GR8Class::allocation_order_end(llvm::MachineFunction const&) const"}, + {"_ZN4llvm3X868GR8ClassC2Ev", "llvm::X86::GR8Class::GR8Class()"}, + {"_ZN4llvm3X8615GR8_ABCD_HClassC2Ev", "llvm::X86::GR8_ABCD_HClass::GR8_ABCD_HClass()"}, + {"_ZN4llvm3X8615GR8_ABCD_LClassC2Ev", "llvm::X86::GR8_ABCD_LClass::GR8_ABCD_LClass()"}, + {"_ZNK4llvm3X8614GR8_NOREXClass22allocation_order_beginERKNS_15MachineFunctionE", "llvm::X86::GR8_NOREXClass::allocation_order_begin(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm3X8614GR8_NOREXClass20allocation_order_endERKNS_15MachineFunctionE", "llvm::X86::GR8_NOREXClass::allocation_order_end(llvm::MachineFunction const&) const"}, + {"_ZN4llvm3X8614GR8_NOREXClassC2Ev", "llvm::X86::GR8_NOREXClass::GR8_NOREXClass()"}, + {"_ZN4llvm3X8610RFP32ClassC2Ev", "llvm::X86::RFP32Class::RFP32Class()"}, + {"_ZN4llvm3X8610RFP64ClassC2Ev", "llvm::X86::RFP64Class::RFP64Class()"}, + {"_ZN4llvm3X8610RFP80ClassC2Ev", "llvm::X86::RFP80Class::RFP80Class()"}, + {"_ZNK4llvm3X868RSTClass20allocation_order_endERKNS_15MachineFunctionE", "llvm::X86::RSTClass::allocation_order_end(llvm::MachineFunction const&) const"}, + {"_ZN4llvm3X868RSTClassC2Ev", "llvm::X86::RSTClass::RSTClass()"}, + {"_ZN4llvm3X8616SEGMENT_REGClassC2Ev", "llvm::X86::SEGMENT_REGClass::SEGMENT_REGClass()"}, + {"_ZNK4llvm3X8610VR128Class20allocation_order_endERKNS_15MachineFunctionE", "llvm::X86::VR128Class::allocation_order_end(llvm::MachineFunction const&) const"}, + {"_ZN4llvm3X8610VR128ClassC2Ev", "llvm::X86::VR128Class::VR128Class()"}, + {"_ZNK4llvm3X8610VR256Class20allocation_order_endERKNS_15MachineFunctionE", "llvm::X86::VR256Class::allocation_order_end(llvm::MachineFunction const&) const"}, + {"_ZN4llvm3X8610VR256ClassC2Ev", "llvm::X86::VR256Class::VR256Class()"}, + {"_ZN4llvm3X869VR64ClassC2Ev", "llvm::X86::VR64Class::VR64Class()"}, + {"_ZNK4llvm18X86GenRegisterInfo9getSubRegEjj", "llvm::X86GenRegisterInfo::getSubReg(unsigned int, unsigned int) const"}, + {"_ZNK4llvm18X86GenRegisterInfo14getSubRegIndexEjj", "llvm::X86GenRegisterInfo::getSubRegIndex(unsigned int, unsigned int) const"}, + {"_ZNK4llvm18X86GenRegisterInfo20composeSubRegIndicesEjj", "llvm::X86GenRegisterInfo::composeSubRegIndices(unsigned int, unsigned int) const"}, + {"_ZN4llvm18X86GenRegisterInfoC1Eii", "llvm::X86GenRegisterInfo::X86GenRegisterInfo(int, int)"}, + {"_ZN4llvm39createX86MaxStackAlignmentHeuristicPassEv", "llvm::createX86MaxStackAlignmentHeuristicPass()"}, + {"_ZN12_GLOBAL__N_14MSAHD1Ev", "(anonymous namespace)::MSAH::~MSAH()"}, + {"_ZN12_GLOBAL__N_14MSAHD0Ev", "(anonymous namespace)::MSAH::~MSAH()"}, + {"_ZNK12_GLOBAL__N_14MSAH11getPassNameEv", "(anonymous namespace)::MSAH::getPassName() const"}, + {"_ZNK12_GLOBAL__N_14MSAH16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::MSAH::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_14MSAH20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::MSAH::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN4llvm3X868CCRClassD1Ev", "llvm::X86::CCRClass::~CCRClass()"}, + {"_ZN4llvm3X8616CONTROL_REGClassD1Ev", "llvm::X86::CONTROL_REGClass::~CONTROL_REGClass()"}, + {"_ZN4llvm3X8614DEBUG_REGClassD1Ev", "llvm::X86::DEBUG_REGClass::~DEBUG_REGClass()"}, + {"_ZN4llvm3X869FR32ClassD1Ev", "llvm::X86::FR32Class::~FR32Class()"}, + {"_ZN4llvm3X869FR64ClassD1Ev", "llvm::X86::FR64Class::~FR64Class()"}, + {"_ZN4llvm3X869GR16ClassD1Ev", "llvm::X86::GR16Class::~GR16Class()"}, + {"_ZN4llvm3X8614GR16_ABCDClassD1Ev", "llvm::X86::GR16_ABCDClass::~GR16_ABCDClass()"}, + {"_ZN4llvm3X8615GR16_NOREXClassD1Ev", "llvm::X86::GR16_NOREXClass::~GR16_NOREXClass()"}, + {"_ZN4llvm3X869GR32ClassD1Ev", "llvm::X86::GR32Class::~GR32Class()"}, + {"_ZN4llvm3X8614GR32_ABCDClassD1Ev", "llvm::X86::GR32_ABCDClass::~GR32_ABCDClass()"}, + {"_ZN4llvm3X8612GR32_ADClassD1Ev", "llvm::X86::GR32_ADClass::~GR32_ADClass()"}, + {"_ZN4llvm3X8615GR32_NOREXClassD1Ev", "llvm::X86::GR32_NOREXClass::~GR32_NOREXClass()"}, + {"_ZN4llvm3X8614GR32_NOSPClassD1Ev", "llvm::X86::GR32_NOSPClass::~GR32_NOSPClass()"}, + {"_ZN4llvm3X8612GR32_TCClassD1Ev", "llvm::X86::GR32_TCClass::~GR32_TCClass()"}, + {"_ZN4llvm3X869GR64ClassD1Ev", "llvm::X86::GR64Class::~GR64Class()"}, + {"_ZN4llvm3X8614GR64_ABCDClassD1Ev", "llvm::X86::GR64_ABCDClass::~GR64_ABCDClass()"}, + {"_ZN4llvm3X8615GR64_NOREXClassD1Ev", "llvm::X86::GR64_NOREXClass::~GR64_NOREXClass()"}, + {"_ZN4llvm3X8620GR64_NOREX_NOSPClassD1Ev", "llvm::X86::GR64_NOREX_NOSPClass::~GR64_NOREX_NOSPClass()"}, + {"_ZN4llvm3X8614GR64_NOSPClassD1Ev", "llvm::X86::GR64_NOSPClass::~GR64_NOSPClass()"}, + {"_ZN4llvm3X8612GR64_TCClassD1Ev", "llvm::X86::GR64_TCClass::~GR64_TCClass()"}, + {"_ZN4llvm3X8615GR64_TCW64ClassD1Ev", "llvm::X86::GR64_TCW64Class::~GR64_TCW64Class()"}, + {"_ZN4llvm3X868GR8ClassD1Ev", "llvm::X86::GR8Class::~GR8Class()"}, + {"_ZN4llvm3X8615GR8_ABCD_HClassD1Ev", "llvm::X86::GR8_ABCD_HClass::~GR8_ABCD_HClass()"}, + {"_ZN4llvm3X8615GR8_ABCD_LClassD1Ev", "llvm::X86::GR8_ABCD_LClass::~GR8_ABCD_LClass()"}, + {"_ZN4llvm3X8614GR8_NOREXClassD1Ev", "llvm::X86::GR8_NOREXClass::~GR8_NOREXClass()"}, + {"_ZN4llvm3X8610RFP32ClassD1Ev", "llvm::X86::RFP32Class::~RFP32Class()"}, + {"_ZN4llvm3X8610RFP64ClassD1Ev", "llvm::X86::RFP64Class::~RFP64Class()"}, + {"_ZN4llvm3X8610RFP80ClassD1Ev", "llvm::X86::RFP80Class::~RFP80Class()"}, + {"_ZN4llvm3X868RSTClassD1Ev", "llvm::X86::RSTClass::~RSTClass()"}, + {"_ZN4llvm3X8616SEGMENT_REGClassD1Ev", "llvm::X86::SEGMENT_REGClass::~SEGMENT_REGClass()"}, + {"_ZN4llvm3X8610VR128ClassD1Ev", "llvm::X86::VR128Class::~VR128Class()"}, + {"_ZN4llvm3X8610VR256ClassD1Ev", "llvm::X86::VR256Class::~VR256Class()"}, + {"_ZN4llvm3X869VR64ClassD1Ev", "llvm::X86::VR64Class::~VR64Class()"}, + {"_ZN4llvm3X868CCRClassD0Ev", "llvm::X86::CCRClass::~CCRClass()"}, + {"_ZN4llvm3X869FR32ClassD0Ev", "llvm::X86::FR32Class::~FR32Class()"}, + {"_ZN4llvm3X869FR64ClassD0Ev", "llvm::X86::FR64Class::~FR64Class()"}, + {"_ZN4llvm3X869GR16ClassD0Ev", "llvm::X86::GR16Class::~GR16Class()"}, + {"_ZN4llvm3X8615GR16_NOREXClassD0Ev", "llvm::X86::GR16_NOREXClass::~GR16_NOREXClass()"}, + {"_ZN4llvm3X869GR32ClassD0Ev", "llvm::X86::GR32Class::~GR32Class()"}, + {"_ZN4llvm3X8615GR32_NOREXClassD0Ev", "llvm::X86::GR32_NOREXClass::~GR32_NOREXClass()"}, + {"_ZN4llvm3X8614GR32_NOSPClassD0Ev", "llvm::X86::GR32_NOSPClass::~GR32_NOSPClass()"}, + {"_ZN4llvm3X869GR64ClassD0Ev", "llvm::X86::GR64Class::~GR64Class()"}, + {"_ZN4llvm3X8615GR64_NOREXClassD0Ev", "llvm::X86::GR64_NOREXClass::~GR64_NOREXClass()"}, + {"_ZN4llvm3X8620GR64_NOREX_NOSPClassD0Ev", "llvm::X86::GR64_NOREX_NOSPClass::~GR64_NOREX_NOSPClass()"}, + {"_ZN4llvm3X8614GR64_NOSPClassD0Ev", "llvm::X86::GR64_NOSPClass::~GR64_NOSPClass()"}, + {"_ZN4llvm3X868GR8ClassD0Ev", "llvm::X86::GR8Class::~GR8Class()"}, + {"_ZN4llvm3X8614GR8_NOREXClassD0Ev", "llvm::X86::GR8_NOREXClass::~GR8_NOREXClass()"}, + {"_ZN4llvm3X868RSTClassD0Ev", "llvm::X86::RSTClass::~RSTClass()"}, + {"_ZN4llvm3X8610VR128ClassD0Ev", "llvm::X86::VR128Class::~VR128Class()"}, + {"_ZN4llvm3X8610VR256ClassD0Ev", "llvm::X86::VR256Class::~VR256Class()"}, + {"_ZN4llvm3X869VR64ClassD0Ev", "llvm::X86::VR64Class::~VR64Class()"}, + {"_ZN4llvm3X8616SEGMENT_REGClassD0Ev", "llvm::X86::SEGMENT_REGClass::~SEGMENT_REGClass()"}, + {"_ZN4llvm3X8610RFP80ClassD0Ev", "llvm::X86::RFP80Class::~RFP80Class()"}, + {"_ZN4llvm3X8610RFP64ClassD0Ev", "llvm::X86::RFP64Class::~RFP64Class()"}, + {"_ZN4llvm3X8610RFP32ClassD0Ev", "llvm::X86::RFP32Class::~RFP32Class()"}, + {"_ZN4llvm3X8615GR8_ABCD_LClassD0Ev", "llvm::X86::GR8_ABCD_LClass::~GR8_ABCD_LClass()"}, + {"_ZN4llvm3X8615GR8_ABCD_HClassD0Ev", "llvm::X86::GR8_ABCD_HClass::~GR8_ABCD_HClass()"}, + {"_ZN4llvm3X8615GR64_TCW64ClassD0Ev", "llvm::X86::GR64_TCW64Class::~GR64_TCW64Class()"}, + {"_ZN4llvm3X8612GR64_TCClassD0Ev", "llvm::X86::GR64_TCClass::~GR64_TCClass()"}, + {"_ZN4llvm3X8614GR64_ABCDClassD0Ev", "llvm::X86::GR64_ABCDClass::~GR64_ABCDClass()"}, + {"_ZN4llvm3X8612GR32_TCClassD0Ev", "llvm::X86::GR32_TCClass::~GR32_TCClass()"}, + {"_ZN4llvm3X8612GR32_ADClassD0Ev", "llvm::X86::GR32_ADClass::~GR32_ADClass()"}, + {"_ZN4llvm3X8614GR32_ABCDClassD0Ev", "llvm::X86::GR32_ABCDClass::~GR32_ABCDClass()"}, + {"_ZN4llvm3X8614GR16_ABCDClassD0Ev", "llvm::X86::GR16_ABCDClass::~GR16_ABCDClass()"}, + {"_ZN4llvm3X8614DEBUG_REGClassD0Ev", "llvm::X86::DEBUG_REGClass::~DEBUG_REGClass()"}, + {"_ZN4llvm3X8616CONTROL_REGClassD0Ev", "llvm::X86::CONTROL_REGClass::~CONTROL_REGClass()"}, + {"_ZN4llvm19X86SelectionDAGInfoC1ERKNS_16X86TargetMachineE", "llvm::X86SelectionDAGInfo::X86SelectionDAGInfo(llvm::X86TargetMachine const&)"}, + {"_ZN4llvm19X86SelectionDAGInfoC2ERKNS_16X86TargetMachineE", "llvm::X86SelectionDAGInfo::X86SelectionDAGInfo(llvm::X86TargetMachine const&)"}, + {"_ZN4llvm19X86SelectionDAGInfoD0Ev", "llvm::X86SelectionDAGInfo::~X86SelectionDAGInfo()"}, + {"_ZN4llvm19X86SelectionDAGInfoD1Ev", "llvm::X86SelectionDAGInfo::~X86SelectionDAGInfo()"}, + {"_ZN4llvm19X86SelectionDAGInfoD2Ev", "llvm::X86SelectionDAGInfo::~X86SelectionDAGInfo()"}, + {"_ZNK4llvm19X86SelectionDAGInfo23EmitTargetCodeForMemsetERNS_12SelectionDAGENS_8DebugLocENS_7SDValueES4_S4_S4_jbNS_18MachinePointerInfoE", "llvm::X86SelectionDAGInfo::EmitTargetCodeForMemset(llvm::SelectionDAG&, llvm::DebugLoc, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::SDValue, unsigned int, bool, llvm::MachinePointerInfo) const"}, + {"_ZNK4llvm19X86SelectionDAGInfo23EmitTargetCodeForMemcpyERNS_12SelectionDAGENS_8DebugLocENS_7SDValueES4_S4_S4_jbbNS_18MachinePointerInfoES5_", "llvm::X86SelectionDAGInfo::EmitTargetCodeForMemcpy(llvm::SelectionDAG&, llvm::DebugLoc, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::SDValue, unsigned int, bool, bool, llvm::MachinePointerInfo, llvm::MachinePointerInfo) const"}, + {"_ZNK4llvm3EVT6bitsGTES0_", "llvm::EVT::bitsGT(llvm::EVT) const"}, + + // {"_ZN4llvm12X86Subtarget22ParseSubtargetFeaturesERKSsS2_", + // "llvm::X86Subtarget::ParseSubtargetFeatures(std::string const&, std::string const&)"}, + // "llvm::X86Subtarget::ParseSubtargetFeatures(std::string const&, std::string const)" was returned + + {"_ZNK4llvm12X86Subtarget29ClassifyBlockAddressReferenceEv", "llvm::X86Subtarget::ClassifyBlockAddressReference() const"}, + {"_ZNK4llvm12X86Subtarget23ClassifyGlobalReferenceEPKNS_11GlobalValueERKNS_13TargetMachineE", "llvm::X86Subtarget::ClassifyGlobalReference(llvm::GlobalValue const*, llvm::TargetMachine const&) const"}, + {"_ZNK4llvm12X86Subtarget13getBZeroEntryEv", "llvm::X86Subtarget::getBZeroEntry() const"}, + {"_ZNK4llvm12X86Subtarget26IsLegalToCallImmediateAddrERKNS_13TargetMachineE", "llvm::X86Subtarget::IsLegalToCallImmediateAddr(llvm::TargetMachine const&) const"}, + {"_ZNK4llvm12X86Subtarget24getSpecialAddressLatencyEv", "llvm::X86Subtarget::getSpecialAddressLatency() const"}, + {"_ZN4llvm12X86Subtarget27AutoDetectSubtargetFeaturesEv", "llvm::X86Subtarget::AutoDetectSubtargetFeatures()"}, + + // {"_ZN4llvm12X86SubtargetC1ERKSsS2_b", + // "llvm::X86Subtarget::X86Subtarget(std::string const&, std::string const&, bool)"}, + // "llvm::X86Subtarget::X86Subtarget(std::string const&, std::string const, bool)" was returned + + + // {"_ZN4llvm12X86SubtargetC2ERKSsS2_b", + // "llvm::X86Subtarget::X86Subtarget(std::string const&, std::string const&, bool)"}, + // "llvm::X86Subtarget::X86Subtarget(std::string const&, std::string const, bool)" was returned + + {"_ZNK4llvm12X86Subtarget11IsCalleePopEbNS_11CallingConv2IDE", "llvm::X86Subtarget::IsCalleePop(bool, llvm::CallingConv::ID) const"}, + {"_Z15createMCAsmInfoRKN4llvm6TargetENS_9StringRefE", "createMCAsmInfo(llvm::Target const&, llvm::StringRef)"}, + {"_Z16createMCStreamerRKN4llvm6TargetERKSsRNS_9MCContextERNS_16TargetAsmBackendERNS_11raw_ostreamEPNS_13MCCodeEmitterEbb", "createMCStreamer(llvm::Target const&, std::string const&, llvm::MCContext&, llvm::TargetAsmBackend&, llvm::raw_ostream&, llvm::MCCodeEmitter*, bool, bool)"}, + + // {"_ZN4llvm19X86_32TargetMachineC1ERKNS_6TargetERKSsS5_", + // "llvm::X86_32TargetMachine::X86_32TargetMachine(llvm::Target const&, std::string const&, std::string const&)"}, + // "llvm::X86_32TargetMachine::X86_32TargetMachine(llvm::Target const&, std::string const&, std::string const)" was returned + + + // {"_ZN4llvm19X86_32TargetMachineC2ERKNS_6TargetERKSsS5_", + // "llvm::X86_32TargetMachine::X86_32TargetMachine(llvm::Target const&, std::string const&, std::string const&)"}, + // "llvm::X86_32TargetMachine::X86_32TargetMachine(llvm::Target const&, std::string const&, std::string const)" was returned + + + // {"_ZN4llvm16X86TargetMachineC2ERKNS_6TargetERKSsS5_b", + // "llvm::X86TargetMachine::X86TargetMachine(llvm::Target const&, std::string const&, std::string const&, bool)"}, + // "llvm::X86TargetMachine::X86TargetMachine(llvm::Target const&, std::string const&, std::string const, bool)" was returned + + + // {"_ZN4llvm19X86_64TargetMachineC1ERKNS_6TargetERKSsS5_", + // "llvm::X86_64TargetMachine::X86_64TargetMachine(llvm::Target const&, std::string const&, std::string const&)"}, + // "llvm::X86_64TargetMachine::X86_64TargetMachine(llvm::Target const&, std::string const&, std::string const)" was returned + + + // {"_ZN4llvm19X86_64TargetMachineC2ERKNS_6TargetERKSsS5_", + // "llvm::X86_64TargetMachine::X86_64TargetMachine(llvm::Target const&, std::string const&, std::string const&)"}, + // "llvm::X86_64TargetMachine::X86_64TargetMachine(llvm::Target const&, std::string const&, std::string const)" was returned + + + // {"_ZN4llvm16X86TargetMachineC1ERKNS_6TargetERKSsS5_b", + // "llvm::X86TargetMachine::X86TargetMachine(llvm::Target const&, std::string const&, std::string const&, bool)"}, + // "llvm::X86TargetMachine::X86TargetMachine(llvm::Target const&, std::string const&, std::string const, bool)" was returned + + {"_ZN4llvm16X86TargetMachine15addInstSelectorERNS_15PassManagerBaseENS_10CodeGenOpt5LevelE", "llvm::X86TargetMachine::addInstSelector(llvm::PassManagerBase&, llvm::CodeGenOpt::Level)"}, + {"_ZN4llvm16X86TargetMachine14addPreRegAllocERNS_15PassManagerBaseENS_10CodeGenOpt5LevelE", "llvm::X86TargetMachine::addPreRegAlloc(llvm::PassManagerBase&, llvm::CodeGenOpt::Level)"}, + {"_ZN4llvm16X86TargetMachine15addPostRegAllocERNS_15PassManagerBaseENS_10CodeGenOpt5LevelE", "llvm::X86TargetMachine::addPostRegAlloc(llvm::PassManagerBase&, llvm::CodeGenOpt::Level)"}, + {"_ZN4llvm16X86TargetMachine14addPreEmitPassERNS_15PassManagerBaseENS_10CodeGenOpt5LevelE", "llvm::X86TargetMachine::addPreEmitPass(llvm::PassManagerBase&, llvm::CodeGenOpt::Level)"}, + {"_ZN4llvm16X86TargetMachine14addCodeEmitterERNS_15PassManagerBaseENS_10CodeGenOpt5LevelERNS_14JITCodeEmitterE", "llvm::X86TargetMachine::addCodeEmitter(llvm::PassManagerBase&, llvm::CodeGenOpt::Level, llvm::JITCodeEmitter&)"}, + {"_ZN4llvm16X86TargetMachine21setCodeModelForStaticEv", "llvm::X86TargetMachine::setCodeModelForStatic()"}, + {"_ZN4llvm16X86TargetMachine18setCodeModelForJITEv", "llvm::X86TargetMachine::setCodeModelForJIT()"}, + {"_ZNK4llvm12X86Subtarget13isTargetWin64Ev", "llvm::X86Subtarget::isTargetWin64() const"}, + {"_ZNK4llvm16X86TargetMachine16getSubtargetImplEv", "llvm::X86TargetMachine::getSubtargetImpl() const"}, + {"_ZN4llvm16X86TargetMachineD1Ev", "llvm::X86TargetMachine::~X86TargetMachine()"}, + {"_ZN4llvm16X86TargetMachineD0Ev", "llvm::X86TargetMachine::~X86TargetMachine()"}, + {"_ZNK4llvm16X86TargetMachine12getInstrInfoEv", "llvm::X86TargetMachine::getInstrInfo() const"}, + {"_ZNK4llvm16X86TargetMachine16getFrameLoweringEv", "llvm::X86TargetMachine::getFrameLowering() const"}, + {"_ZNK4llvm16X86TargetMachine17getTargetLoweringEv", "llvm::X86TargetMachine::getTargetLowering() const"}, + {"_ZNK4llvm16X86TargetMachine19getSelectionDAGInfoEv", "llvm::X86TargetMachine::getSelectionDAGInfo() const"}, + {"_ZNK4llvm16X86TargetMachine15getRegisterInfoEv", "llvm::X86TargetMachine::getRegisterInfo() const"}, + {"_ZN4llvm16X86TargetMachine10getJITInfoEv", "llvm::X86TargetMachine::getJITInfo()"}, + {"_ZNK4llvm16X86TargetMachine16getELFWriterInfoEv", "llvm::X86TargetMachine::getELFWriterInfo() const"}, + {"_ZN4llvm19X86_64TargetMachineD1Ev", "llvm::X86_64TargetMachine::~X86_64TargetMachine()"}, + {"_ZN4llvm19X86_64TargetMachineD0Ev", "llvm::X86_64TargetMachine::~X86_64TargetMachine()"}, + {"_ZNK4llvm19X86_64TargetMachine12getInstrInfoEv", "llvm::X86_64TargetMachine::getInstrInfo() const"}, + {"_ZNK4llvm19X86_64TargetMachine17getTargetLoweringEv", "llvm::X86_64TargetMachine::getTargetLowering() const"}, + {"_ZNK4llvm19X86_64TargetMachine19getSelectionDAGInfoEv", "llvm::X86_64TargetMachine::getSelectionDAGInfo() const"}, + {"_ZNK4llvm19X86_64TargetMachine13getDataLayoutEv", "llvm::X86_64TargetMachine::getDataLayout() const"}, + {"_ZN4llvm19X86_64TargetMachine10getJITInfoEv", "llvm::X86_64TargetMachine::getJITInfo()"}, + {"_ZN4llvm19X86_32TargetMachineD1Ev", "llvm::X86_32TargetMachine::~X86_32TargetMachine()"}, + {"_ZN4llvm19X86_32TargetMachineD0Ev", "llvm::X86_32TargetMachine::~X86_32TargetMachine()"}, + {"_ZNK4llvm19X86_32TargetMachine12getInstrInfoEv", "llvm::X86_32TargetMachine::getInstrInfo() const"}, + {"_ZNK4llvm19X86_32TargetMachine17getTargetLoweringEv", "llvm::X86_32TargetMachine::getTargetLowering() const"}, + {"_ZNK4llvm19X86_32TargetMachine19getSelectionDAGInfoEv", "llvm::X86_32TargetMachine::getSelectionDAGInfo() const"}, + {"_ZNK4llvm19X86_32TargetMachine13getDataLayoutEv", "llvm::X86_32TargetMachine::getDataLayout() const"}, + {"_ZN4llvm19X86_32TargetMachine10getJITInfoEv", "llvm::X86_32TargetMachine::getJITInfo()"}, + {"_ZN4llvm19X86_32TargetMachineD2Ev", "llvm::X86_32TargetMachine::~X86_32TargetMachine()"}, + {"_ZN4llvm10X86JITInfoD1Ev", "llvm::X86JITInfo::~X86JITInfo()"}, + {"_ZN4llvm17X86TargetLoweringD1Ev", "llvm::X86TargetLowering::~X86TargetLowering()"}, + {"_ZN4llvm12X86InstrInfoD1Ev", "llvm::X86InstrInfo::~X86InstrInfo()"}, + {"_ZN4llvm16X86TargetMachineD2Ev", "llvm::X86TargetMachine::~X86TargetMachine()"}, + {"_ZN4llvm16X86FrameLoweringD1Ev", "llvm::X86FrameLowering::~X86FrameLowering()"}, + {"_ZN4llvm12X86SubtargetD1Ev", "llvm::X86Subtarget::~X86Subtarget()"}, + {"_ZN4llvm12X86SubtargetD0Ev", "llvm::X86Subtarget::~X86Subtarget()"}, + {"_ZN4llvm16X86FrameLoweringD0Ev", "llvm::X86FrameLowering::~X86FrameLowering()"}, + {"_ZN4llvm15X86RegisterInfoD1Ev", "llvm::X86RegisterInfo::~X86RegisterInfo()"}, + {"_ZN4llvm12X86InstrInfoD0Ev", "llvm::X86InstrInfo::~X86InstrInfo()"}, + {"_ZNK4llvm12X86InstrInfo15getRegisterInfoEv", "llvm::X86InstrInfo::getRegisterInfo() const"}, + {"_ZN4llvm15X86RegisterInfoD0Ev", "llvm::X86RegisterInfo::~X86RegisterInfo()"}, + {"_ZN4llvm18X86GenRegisterInfoD1Ev", "llvm::X86GenRegisterInfo::~X86GenRegisterInfo()"}, + {"_ZN4llvm18X86GenRegisterInfoD0Ev", "llvm::X86GenRegisterInfo::~X86GenRegisterInfo()"}, + {"_ZNK4llvm18X86GenRegisterInfo21needsStackRealignmentERKNS_15MachineFunctionE", "llvm::X86GenRegisterInfo::needsStackRealignment(llvm::MachineFunction const&) const"}, + {"_ZN4llvm17X86TargetLoweringD0Ev", "llvm::X86TargetLowering::~X86TargetLowering()"}, + {"_ZNK4llvm14TargetLowering23getSchedulingPreferenceEPNS_6SDNodeE", "llvm::TargetLowering::getSchedulingPreference(llvm::SDNode*) const"}, + {"_ZNK4llvm14TargetLowering14getRegClassForENS_3EVTE", "llvm::TargetLowering::getRegClassFor(llvm::EVT) const"}, + {"_ZNK4llvm14TargetLowering18getTgtMemIntrinsicERNS0_13IntrinsicInfoERKNS_8CallInstEj", "llvm::TargetLowering::getTgtMemIntrinsic(llvm::TargetLowering::IntrinsicInfo&, llvm::CallInst const&, unsigned int) const"}, + {"_ZNK4llvm17X86TargetLowering22ShouldShrinkFPConstantENS_3EVTE", "llvm::X86TargetLowering::ShouldShrinkFPConstant(llvm::EVT) const"}, + {"_ZNK4llvm17X86TargetLowering29allowsUnalignedMemoryAccessesENS_3EVTE", "llvm::X86TargetLowering::allowsUnalignedMemoryAccesses(llvm::EVT) const"}, + {"_ZNK4llvm14TargetLowering25getPreIndexedAddressPartsEPNS_6SDNodeERNS_7SDValueES4_RNS_3ISD14MemIndexedModeERNS_12SelectionDAGE", "llvm::TargetLowering::getPreIndexedAddressParts(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&, llvm::ISD::MemIndexedMode&, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm14TargetLowering26getPostIndexedAddressPartsEPNS_6SDNodeES2_RNS_7SDValueES4_RNS_3ISD14MemIndexedModeERNS_12SelectionDAGE", "llvm::TargetLowering::getPostIndexedAddressParts(llvm::SDNode*, llvm::SDNode*, llvm::SDValue&, llvm::SDValue&, llvm::ISD::MemIndexedMode&, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm14TargetLowering22getMaximalGlobalOffsetEv", "llvm::TargetLowering::getMaximalGlobalOffset() const"}, + {"_ZNK4llvm14TargetLowering33isDesirableToTransformToIntegerOpEjNS_3EVTE", "llvm::TargetLowering::isDesirableToTransformToIntegerOp(unsigned int, llvm::EVT) const"}, + {"_ZNK4llvm14TargetLowering20isLegalICmpImmediateEx", "llvm::TargetLowering::isLegalICmpImmediate(long long) const"}, + {"_ZN4llvm10X86JITInfoD0Ev", "llvm::X86JITInfo::~X86JITInfo()"}, + {"_ZN4llvm19X86_64TargetMachineD2Ev", "llvm::X86_64TargetMachine::~X86_64TargetMachine()"}, + + // {"_ZN4llvm21RegisterTargetMachineINS_19X86_64TargetMachineEE9AllocatorERKNS_6TargetERKSsS7_", + // "llvm::RegisterTargetMachine::Allocator(llvm::Target const&, std::string const&, std::string const&)"}, + // "llvm::RegisterTargetMachine::Allocator(llvm::Target const&, std::string const&, std::string const)" was returned + + + // {"_ZN4llvm21RegisterTargetMachineINS_19X86_32TargetMachineEE9AllocatorERKNS_6TargetERKSsS7_", + // "llvm::RegisterTargetMachine::Allocator(llvm::Target const&, std::string const&, std::string const&)"}, + // "llvm::RegisterTargetMachine::Allocator(llvm::Target const&, std::string const&, std::string const)" was returned + + {"_ZNK4llvm27X8664_MachoTargetObjectFile30getExprForDwarfGlobalReferenceEPKNS_11GlobalValueEPNS_7ManglerEPNS_17MachineModuleInfoEjRNS_10MCStreamerE", "llvm::X8664_MachoTargetObjectFile::getExprForDwarfGlobalReference(llvm::GlobalValue const*, llvm::Mangler*, llvm::MachineModuleInfo*, unsigned int, llvm::MCStreamer&) const"}, + {"_ZNK4llvm25X8632_ELFTargetObjectFile22getPersonalityEncodingEv", "llvm::X8632_ELFTargetObjectFile::getPersonalityEncoding() const"}, + {"_ZNK4llvm25X8632_ELFTargetObjectFile15getLSDAEncodingEv", "llvm::X8632_ELFTargetObjectFile::getLSDAEncoding() const"}, + {"_ZNK4llvm25X8632_ELFTargetObjectFile14getFDEEncodingEv", "llvm::X8632_ELFTargetObjectFile::getFDEEncoding() const"}, + {"_ZNK4llvm25X8632_ELFTargetObjectFile16getTTypeEncodingEv", "llvm::X8632_ELFTargetObjectFile::getTTypeEncoding() const"}, + {"_ZNK4llvm25X8664_ELFTargetObjectFile22getPersonalityEncodingEv", "llvm::X8664_ELFTargetObjectFile::getPersonalityEncoding() const"}, + {"_ZNK4llvm25X8664_ELFTargetObjectFile15getLSDAEncodingEv", "llvm::X8664_ELFTargetObjectFile::getLSDAEncoding() const"}, + {"_ZNK4llvm25X8664_ELFTargetObjectFile14getFDEEncodingEv", "llvm::X8664_ELFTargetObjectFile::getFDEEncoding() const"}, + {"_ZNK4llvm25X8664_ELFTargetObjectFile16getTTypeEncodingEv", "llvm::X8664_ELFTargetObjectFile::getTTypeEncoding() const"}, + {"_ZN4llvm25X8632_ELFTargetObjectFileD1Ev", "llvm::X8632_ELFTargetObjectFile::~X8632_ELFTargetObjectFile()"}, + {"_ZN4llvm25X8632_ELFTargetObjectFileD0Ev", "llvm::X8632_ELFTargetObjectFile::~X8632_ELFTargetObjectFile()"}, + {"_ZN4llvm25X8664_ELFTargetObjectFileD1Ev", "llvm::X8664_ELFTargetObjectFile::~X8664_ELFTargetObjectFile()"}, + {"_ZN4llvm25X8664_ELFTargetObjectFileD0Ev", "llvm::X8664_ELFTargetObjectFile::~X8664_ELFTargetObjectFile()"}, + {"_ZN4llvm27X8664_MachoTargetObjectFileD1Ev", "llvm::X8664_MachoTargetObjectFile::~X8664_MachoTargetObjectFile()"}, + {"_ZN4llvm27X8664_MachoTargetObjectFileD0Ev", "llvm::X8664_MachoTargetObjectFile::~X8664_MachoTargetObjectFile()"}, + {"_ZN4llvm17X86ATTInstPrinter16printInstructionEPKNS_6MCInstERNS_11raw_ostreamE", "llvm::X86ATTInstPrinter::printInstruction(llvm::MCInst const*, llvm::raw_ostream&)"}, + {"_ZN4llvm17X86ATTInstPrinter12printOperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::X86ATTInstPrinter::printOperand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm17X86ATTInstPrinter15print_pcrel_immEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::X86ATTInstPrinter::print_pcrel_imm(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm17X86ATTInstPrinter10printSSECCEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::X86ATTInstPrinter::printSSECC(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm17X86ATTInstPrinter15getRegisterNameEj", "llvm::X86ATTInstPrinter::getRegisterName(unsigned int)"}, + {"_ZN4llvm17X86ATTInstPrinter18getInstructionNameEj", "llvm::X86ATTInstPrinter::getInstructionName(unsigned int)"}, + {"_ZN4llvm17X86ATTInstPrinter9printInstEPKNS_6MCInstERNS_11raw_ostreamE", "llvm::X86ATTInstPrinter::printInst(llvm::MCInst const*, llvm::raw_ostream&)"}, + {"_ZNK4llvm17X86ATTInstPrinter13getOpcodeNameEj", "llvm::X86ATTInstPrinter::getOpcodeName(unsigned int) const"}, + {"_ZN4llvm17X86ATTInstPrinter17printMemReferenceEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::X86ATTInstPrinter::printMemReference(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm17X86ATTInstPrinterD1Ev", "llvm::X86ATTInstPrinter::~X86ATTInstPrinter()"}, + {"_ZN4llvm17X86ATTInstPrinterD0Ev", "llvm::X86ATTInstPrinter::~X86ATTInstPrinter()"}, + {"_ZN4llvm22EmitAnyX86InstCommentsEPKNS_6MCInstERNS_11raw_ostreamEPFPKcjE", "llvm::EmitAnyX86InstComments(llvm::MCInst const*, llvm::raw_ostream&, char const* (*)(unsigned int))"}, + {"_Z16DecodeSHUFPSMaskjjRN4llvm15SmallVectorImplIjEE", "DecodeSHUFPSMask(unsigned int, unsigned int, llvm::SmallVectorImpl&)"}, + {"_ZN4llvm19X86IntelInstPrinter16printInstructionEPKNS_6MCInstERNS_11raw_ostreamE", "llvm::X86IntelInstPrinter::printInstruction(llvm::MCInst const*, llvm::raw_ostream&)"}, + {"_ZN4llvm19X86IntelInstPrinter12printOperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::X86IntelInstPrinter::printOperand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm19X86IntelInstPrinter15print_pcrel_immEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::X86IntelInstPrinter::print_pcrel_imm(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm19X86IntelInstPrinter10printSSECCEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::X86IntelInstPrinter::printSSECC(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm19X86IntelInstPrinter15getRegisterNameEj", "llvm::X86IntelInstPrinter::getRegisterName(unsigned int)"}, + {"_ZN4llvm19X86IntelInstPrinter18getInstructionNameEj", "llvm::X86IntelInstPrinter::getInstructionName(unsigned int)"}, + {"_ZN4llvm19X86IntelInstPrinter9printInstEPKNS_6MCInstERNS_11raw_ostreamE", "llvm::X86IntelInstPrinter::printInst(llvm::MCInst const*, llvm::raw_ostream&)"}, + {"_ZNK4llvm19X86IntelInstPrinter13getOpcodeNameEj", "llvm::X86IntelInstPrinter::getOpcodeName(unsigned int) const"}, + {"_ZN4llvm19X86IntelInstPrinter17printMemReferenceEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::X86IntelInstPrinter::printMemReference(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm19X86IntelInstPrinterD1Ev", "llvm::X86IntelInstPrinter::~X86IntelInstPrinter()"}, + {"_ZN4llvm19X86IntelInstPrinterD0Ev", "llvm::X86IntelInstPrinter::~X86IntelInstPrinter()"}, + + // {"_ZN4llvm14RegisterTargetILNS_6Triple8ArchTypeE16ELb1EE21getTripleMatchQualityERKSs", + // "llvm::RegisterTarget<(llvm::Triple::ArchType)16, true>::getTripleMatchQuality(std::string const&)"}, + // got error + + + // {"_ZN4llvm14RegisterTargetILNS_6Triple8ArchTypeE15ELb1EE21getTripleMatchQualityERKSs", + // "llvm::RegisterTarget<(llvm::Triple::ArchType)15, true>::getTripleMatchQuality(std::string const&)"}, + // got error + + {"_ZN4llvm16RegisterAsmLexerIN12_GLOBAL__N_113ThumbAsmLexerEE9AllocatorERKNS_6TargetERKNS_9MCAsmInfoE", "llvm::RegisterAsmLexer<(anonymous namespace)::ThumbAsmLexer>::Allocator(llvm::Target const&, llvm::MCAsmInfo const&)"}, + {"_ZN12_GLOBAL__N_115ARMBaseAsmLexer15InitRegisterMapEPKN4llvm18TargetRegisterInfoE", "(anonymous namespace)::ARMBaseAsmLexer::InitRegisterMap(llvm::TargetRegisterInfo const*)"}, + {"_ZN12_GLOBAL__N_115ARMBaseAsmLexer8LexTokenEv", "(anonymous namespace)::ARMBaseAsmLexer::LexToken()"}, + {"_ZN12_GLOBAL__N_113ThumbAsmLexerD1Ev", "(anonymous namespace)::ThumbAsmLexer::~ThumbAsmLexer()"}, + {"_ZN12_GLOBAL__N_113ThumbAsmLexerD0Ev", "(anonymous namespace)::ThumbAsmLexer::~ThumbAsmLexer()"}, + {"_ZN12_GLOBAL__N_115ARMBaseAsmLexerD1Ev", "(anonymous namespace)::ARMBaseAsmLexer::~ARMBaseAsmLexer()"}, + {"_ZN12_GLOBAL__N_115ARMBaseAsmLexerD0Ev", "(anonymous namespace)::ARMBaseAsmLexer::~ARMBaseAsmLexer()"}, + {"_ZN4llvm16RegisterAsmLexerIN12_GLOBAL__N_111ARMAsmLexerEE9AllocatorERKNS_6TargetERKNS_9MCAsmInfoE", "llvm::RegisterAsmLexer<(anonymous namespace)::ARMAsmLexer>::Allocator(llvm::Target const&, llvm::MCAsmInfo const&)"}, + {"_ZN12_GLOBAL__N_111ARMAsmLexerD1Ev", "(anonymous namespace)::ARMAsmLexer::~ARMAsmLexer()"}, + {"_ZN12_GLOBAL__N_111ARMAsmLexerD0Ev", "(anonymous namespace)::ARMAsmLexer::~ARMAsmLexer()"}, + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsjESt10_Select1stIS2_ESt4lessISsESaIS2_EE8_M_eraseEPSt13_Rb_tree_nodeIS2_E", + // "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + // "std::_Rb_tree, std::_Select1st, std::less, std::allocator>::_M_erase(std::_Rb_tree_node*)" was returned + + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsjESt10_Select1stIS2_ESt4lessISsESaIS2_EE4findERS1_", + // "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::find(std::string const&)"}, + // "std::_Rb_tree, std::_Select1st, std::less, std::allocator>::find(std::pair&)" was returned + + + // {"_ZNSt3mapISsjSt4lessISsESaISt4pairIKSsjEEEixERS3_", + // "std::map, std::allocator>>::operator[](std::string const&)"}, + // "std::map, std::allocator>>::operator[](std::pair&)" was returned + + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsjESt10_Select1stIS2_ESt4lessISsESaIS2_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS2_ERKS2_", + // "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + // "std::_Rb_tree, std::_Select1st, std::less, std::allocator>::_M_insert_unique(std::_Rb_tree_iterator, std::string const const&)" was returned + + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsjESt10_Select1stIS2_ESt4lessISsESaIS2_EE9_M_insertEPSt18_Rb_tree_node_baseSA_RKS2_", + // "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair const&)"}, + // "std::_Rb_tree, std::_Select1st, std::less, std::allocator>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base, std::string const const&)" was returned + + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsjESt10_Select1stIS2_ESt4lessISsESaIS2_EE16_M_insert_uniqueERKS2_", + // "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + // "std::_Rb_tree, std::_Select1st, std::less, std::allocator>::_M_insert_unique(std::string const const&)" was returned + + {"_ZN4llvm17RegisterAsmParserIN12_GLOBAL__N_112ARMAsmParserEE9AllocatorERKNS_6TargetERNS_11MCAsmParserERNS_13TargetMachineE", "llvm::RegisterAsmParser<(anonymous namespace)::ARMAsmParser>::Allocator(llvm::Target const&, llvm::MCAsmParser&, llvm::TargetMachine&)"}, + {"_ZN12_GLOBAL__N_112ARMAsmParserD1Ev", "(anonymous namespace)::ARMAsmParser::~ARMAsmParser()"}, + {"_ZN12_GLOBAL__N_112ARMAsmParserD0Ev", "(anonymous namespace)::ARMAsmParser::~ARMAsmParser()"}, + {"_ZN12_GLOBAL__N_112ARMAsmParser13ParseRegisterERjRN4llvm5SMLocES4_", "(anonymous namespace)::ARMAsmParser::ParseRegister(unsigned int&, llvm::SMLoc&, llvm::SMLoc&)"}, + {"_ZN12_GLOBAL__N_112ARMAsmParser16ParseInstructionEN4llvm9StringRefENS1_5SMLocERNS1_15SmallVectorImplIPNS1_18MCParsedAsmOperandEEE", "(anonymous namespace)::ARMAsmParser::ParseInstruction(llvm::StringRef, llvm::SMLoc, llvm::SmallVectorImpl&)"}, + {"_ZN12_GLOBAL__N_112ARMAsmParser14ParseDirectiveEN4llvm8AsmTokenE", "(anonymous namespace)::ARMAsmParser::ParseDirective(llvm::AsmToken)"}, + {"_ZN12_GLOBAL__N_112ARMAsmParser23MatchAndEmitInstructionEN4llvm5SMLocERNS1_15SmallVectorImplIPNS1_18MCParsedAsmOperandEEERNS1_10MCStreamerE", "(anonymous namespace)::ARMAsmParser::MatchAndEmitInstruction(llvm::SMLoc, llvm::SmallVectorImpl&, llvm::MCStreamer&)"}, + {"_ZN12_GLOBAL__N_112ARMAsmParser20MatchInstructionImplERKN4llvm15SmallVectorImplIPNS1_18MCParsedAsmOperandEEERNS1_6MCInstERj", "(anonymous namespace)::ARMAsmParser::MatchInstructionImpl(llvm::SmallVectorImpl const&, llvm::MCInst&, unsigned int&)"}, + {"_ZN12_GLOBAL__N_110ARMOperandD1Ev", "(anonymous namespace)::ARMOperand::~ARMOperand()"}, + {"_ZN12_GLOBAL__N_110ARMOperandD0Ev", "(anonymous namespace)::ARMOperand::~ARMOperand()"}, + {"_ZNK12_GLOBAL__N_110ARMOperand11getStartLocEv", "(anonymous namespace)::ARMOperand::getStartLoc() const"}, + {"_ZNK12_GLOBAL__N_110ARMOperand9getEndLocEv", "(anonymous namespace)::ARMOperand::getEndLoc() const"}, + {"_ZNK12_GLOBAL__N_110ARMOperand4dumpERN4llvm11raw_ostreamE", "(anonymous namespace)::ARMOperand::dump(llvm::raw_ostream&) const"}, + {"_ZN12_GLOBAL__N_112ARMAsmParser15ConvertToMCInstEjRN4llvm6MCInstEjRKNS1_15SmallVectorImplIPNS1_18MCParsedAsmOperandEEE", "(anonymous namespace)::ARMAsmParser::ConvertToMCInst(unsigned int, llvm::MCInst&, unsigned int, llvm::SmallVectorImpl const&)"}, + {"_ZNK12_GLOBAL__N_110ARMOperand19addCondCodeOperandsERN4llvm6MCInstEj", "(anonymous namespace)::ARMOperand::addCondCodeOperands(llvm::MCInst&, unsigned int) const"}, + {"_ZNK12_GLOBAL__N_110ARMOperand14addImmOperandsERN4llvm6MCInstEj", "(anonymous namespace)::ARMOperand::addImmOperands(llvm::MCInst&, unsigned int) const"}, + {"_ZNK12_GLOBAL__N_110ARMOperand19addMemMode5OperandsERN4llvm6MCInstEj", "(anonymous namespace)::ARMOperand::addMemMode5Operands(llvm::MCInst&, unsigned int) const"}, + {"_ZN12_GLOBAL__N_112ARMAsmParser12ParseOperandERN4llvm15SmallVectorImplIPNS1_18MCParsedAsmOperandEEENS1_9StringRefE", "(anonymous namespace)::ARMAsmParser::ParseOperand(llvm::SmallVectorImpl&, llvm::StringRef)"}, + {"_ZN12_GLOBAL__N_112ARMAsmParser16TryParseRegisterEv", "(anonymous namespace)::ARMAsmParser::TryParseRegister()"}, + {"_ZN4llvm25array_pod_sort_comparatorIjEEiPKvS2_", "int llvm::array_pod_sort_comparator(void const*, void const*)"}, + {"_ZN12_GLOBAL__N_112ARMAsmParser20ParseMemoryOffsetRegERbS1_R9ShiftTypeRPKN4llvm6MCExprES8_S1_RiRNS4_5SMLocE", "(anonymous namespace)::ARMAsmParser::ParseMemoryOffsetReg(bool&, bool&, ShiftType&, llvm::MCExpr const*&, llvm::MCExpr const*&, bool&, int&, llvm::SMLoc&)"}, + {"_ZN4llvm15SmallVectorImplIPNS_18MCParsedAsmOperandEE6insertEPS2_RKS2_", "llvm::SmallVectorImpl::insert(llvm::MCParsedAsmOperand**, llvm::MCParsedAsmOperand* const&)"}, + {"_ZN4llvm18MCParsedAsmOperandD1Ev", "llvm::MCParsedAsmOperand::~MCParsedAsmOperand()"}, + {"_ZN4llvm18MCParsedAsmOperandD0Ev", "llvm::MCParsedAsmOperand::~MCParsedAsmOperand()"}, + {"_ZN4llvm8DenseMapIjbNS_12DenseMapInfoIjEENS1_IbEEE16InsertIntoBucketERKjRKbPSt4pairIjbE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(unsigned int const&, bool const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIjbNS_12DenseMapInfoIjEENS1_IbEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm23SmallVectorTemplateBaseISt4pairIjNS_5SMLocEELb0EE4growEm", "llvm::SmallVectorTemplateBase, false>::grow(unsigned long)"}, + {"_ZN4llvm19createARMAsmBackendERKNS_6TargetERKSs", "llvm::createARMAsmBackend(llvm::Target const&, std::string const&)"}, + {"_ZN12_GLOBAL__N_116ELFARMAsmBackendD1Ev", "(anonymous namespace)::ELFARMAsmBackend::~ELFARMAsmBackend()"}, + {"_ZN12_GLOBAL__N_116ELFARMAsmBackendD0Ev", "(anonymous namespace)::ELFARMAsmBackend::~ELFARMAsmBackend()"}, + {"_ZNK12_GLOBAL__N_116ELFARMAsmBackend18createObjectWriterERN4llvm11raw_ostreamE", "(anonymous namespace)::ELFARMAsmBackend::createObjectWriter(llvm::raw_ostream&) const"}, + {"_ZNK12_GLOBAL__N_113ARMAsmBackend16getNumFixupKindsEv", "(anonymous namespace)::ARMAsmBackend::getNumFixupKinds() const"}, + {"_ZNK12_GLOBAL__N_113ARMAsmBackend16getFixupKindInfoEN4llvm11MCFixupKindE", "(anonymous namespace)::ARMAsmBackend::getFixupKindInfo(llvm::MCFixupKind) const"}, + {"_ZNK12_GLOBAL__N_116ELFARMAsmBackend10ApplyFixupERKN4llvm7MCFixupEPcjy", "(anonymous namespace)::ELFARMAsmBackend::ApplyFixup(llvm::MCFixup const&, char*, unsigned int, unsigned long long) const"}, + {"_ZNK12_GLOBAL__N_113ARMAsmBackend17MayNeedRelaxationERKN4llvm6MCInstE", "(anonymous namespace)::ARMAsmBackend::MayNeedRelaxation(llvm::MCInst const&) const"}, + {"_ZNK12_GLOBAL__N_113ARMAsmBackend16RelaxInstructionERKN4llvm6MCInstERS2_", "(anonymous namespace)::ARMAsmBackend::RelaxInstruction(llvm::MCInst const&, llvm::MCInst&) const"}, + {"_ZNK12_GLOBAL__N_113ARMAsmBackend12WriteNopDataEyPN4llvm14MCObjectWriterE", "(anonymous namespace)::ARMAsmBackend::WriteNopData(unsigned long long, llvm::MCObjectWriter*) const"}, + {"_ZN12_GLOBAL__N_113ARMAsmBackend19HandleAssemblerFlagEN4llvm15MCAssemblerFlagE", "(anonymous namespace)::ARMAsmBackend::HandleAssemblerFlag(llvm::MCAssemblerFlag)"}, + {"_Z16adjustFixupValuejy", "adjustFixupValue(unsigned int, unsigned long long)"}, + {"_ZN12_GLOBAL__N_118ARMELFObjectWriterD1Ev", "(anonymous namespace)::ARMELFObjectWriter::~ARMELFObjectWriter()"}, + {"_ZN12_GLOBAL__N_118ARMELFObjectWriterD0Ev", "(anonymous namespace)::ARMELFObjectWriter::~ARMELFObjectWriter()"}, + {"_ZN12_GLOBAL__N_113ARMAsmBackendD1Ev", "(anonymous namespace)::ARMAsmBackend::~ARMAsmBackend()"}, + {"_ZN12_GLOBAL__N_113ARMAsmBackendD0Ev", "(anonymous namespace)::ARMAsmBackend::~ARMAsmBackend()"}, + {"_ZN12_GLOBAL__N_119DarwinARMAsmBackendD1Ev", "(anonymous namespace)::DarwinARMAsmBackend::~DarwinARMAsmBackend()"}, + {"_ZN12_GLOBAL__N_119DarwinARMAsmBackendD0Ev", "(anonymous namespace)::DarwinARMAsmBackend::~DarwinARMAsmBackend()"}, + {"_ZNK12_GLOBAL__N_119DarwinARMAsmBackend18createObjectWriterERN4llvm11raw_ostreamE", "(anonymous namespace)::DarwinARMAsmBackend::createObjectWriter(llvm::raw_ostream&) const"}, + {"_ZNK12_GLOBAL__N_119DarwinARMAsmBackend25doesSectionRequireSymbolsERKN4llvm9MCSectionE", "(anonymous namespace)::DarwinARMAsmBackend::doesSectionRequireSymbols(llvm::MCSection const&) const"}, + {"_ZNK12_GLOBAL__N_119DarwinARMAsmBackend10ApplyFixupERKN4llvm7MCFixupEPcjy", "(anonymous namespace)::DarwinARMAsmBackend::ApplyFixup(llvm::MCFixup const&, char*, unsigned int, unsigned long long) const"}, + {"_ZN12_GLOBAL__N_119ARMMachObjectWriterD1Ev", "(anonymous namespace)::ARMMachObjectWriter::~ARMMachObjectWriter()"}, + {"_ZN12_GLOBAL__N_119ARMMachObjectWriterD0Ev", "(anonymous namespace)::ARMMachObjectWriter::~ARMMachObjectWriter()"}, + {"_ZN4llvm14MCObjectWriter7Write16Et", "llvm::MCObjectWriter::Write16(unsigned short)"}, + {"_ZN4llvm14MCObjectWriter9WriteLE32Ej", "llvm::MCObjectWriter::WriteLE32(unsigned int)"}, + {"_ZN4llvm14MCObjectWriter9WriteBE32Ej", "llvm::MCObjectWriter::WriteBE32(unsigned int)"}, + {"_ZNK4llvm13ARMAsmPrinter21getDebugValueLocationEPKNS_12MachineInstrE", "llvm::ARMAsmPrinter::getDebugValueLocation(llvm::MachineInstr const*) const"}, + {"_ZN4llvm13ARMAsmPrinter22EmitFunctionEntryLabelEv", "llvm::ARMAsmPrinter::EmitFunctionEntryLabel()"}, + {"_ZN4llvm13ARMAsmPrinter20runOnMachineFunctionERNS_15MachineFunctionE", "llvm::ARMAsmPrinter::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN4llvm13ARMAsmPrinter12printOperandEPKNS_12MachineInstrEiRNS_11raw_ostreamEPKc", "llvm::ARMAsmPrinter::printOperand(llvm::MachineInstr const*, int, llvm::raw_ostream&, char const*)"}, + {"_ZNK4llvm13ARMAsmPrinter27GetARMSetPICJumpTableLabel2EjjPKNS_17MachineBasicBlockE", "llvm::ARMAsmPrinter::GetARMSetPICJumpTableLabel2(unsigned int, unsigned int, llvm::MachineBasicBlock const*) const"}, + {"_ZNK4llvm13ARMAsmPrinter27GetARMJTIPICJumpTableLabel2Ejj", "llvm::ARMAsmPrinter::GetARMJTIPICJumpTableLabel2(unsigned int, unsigned int) const"}, + {"_ZNK4llvm13ARMAsmPrinter17GetARMSJLJEHLabelEv", "llvm::ARMAsmPrinter::GetARMSJLJEHLabel() const"}, + {"_ZN4llvm13ARMAsmPrinter15PrintAsmOperandEPKNS_12MachineInstrEjjPKcRNS_11raw_ostreamE", "llvm::ARMAsmPrinter::PrintAsmOperand(llvm::MachineInstr const*, unsigned int, unsigned int, char const*, llvm::raw_ostream&)"}, + {"_ZN4llvm13ARMAsmPrinter21PrintAsmMemoryOperandEPKNS_12MachineInstrEjjPKcRNS_11raw_ostreamE", "llvm::ARMAsmPrinter::PrintAsmMemoryOperand(llvm::MachineInstr const*, unsigned int, unsigned int, char const*, llvm::raw_ostream&)"}, + {"_ZN4llvm13ARMAsmPrinter18EmitStartOfAsmFileERNS_6ModuleE", "llvm::ARMAsmPrinter::EmitStartOfAsmFile(llvm::Module&)"}, + {"_ZN4llvm13ARMAsmPrinter14emitAttributesEv", "llvm::ARMAsmPrinter::emitAttributes()"}, + {"_ZN4llvm13ARMAsmPrinter16EmitEndOfAsmFileERNS_6ModuleE", "llvm::ARMAsmPrinter::EmitEndOfAsmFile(llvm::Module&)"}, + {"_ZN4llvm13ARMAsmPrinter23emitARMAttributeSectionEv", "llvm::ARMAsmPrinter::emitARMAttributeSection()"}, + {"_ZN4llvm13ARMAsmPrinter14GetARMGVSymbolEPKNS_11GlobalValueE", "llvm::ARMAsmPrinter::GetARMGVSymbol(llvm::GlobalValue const*)"}, + {"_ZN4llvm13ARMAsmPrinter28EmitMachineConstantPoolValueEPNS_24MachineConstantPoolValueE", "llvm::ARMAsmPrinter::EmitMachineConstantPoolValue(llvm::MachineConstantPoolValue*)"}, + {"_Z11getPICLabelPKcjjRN4llvm9MCContextE", "getPICLabel(char const*, unsigned int, unsigned int, llvm::MCContext&)"}, + {"_ZN4llvm13ARMAsmPrinter13EmitJumpTableEPKNS_12MachineInstrE", "llvm::ARMAsmPrinter::EmitJumpTable(llvm::MachineInstr const*)"}, + {"_ZN4llvm13ARMAsmPrinter14EmitJump2TableEPKNS_12MachineInstrE", "llvm::ARMAsmPrinter::EmitJump2Table(llvm::MachineInstr const*)"}, + {"_ZN4llvm13ARMAsmPrinter22PrintDebugValueCommentEPKNS_12MachineInstrERNS_11raw_ostreamE", "llvm::ARMAsmPrinter::PrintDebugValueComment(llvm::MachineInstr const*, llvm::raw_ostream&)"}, + {"_ZN4llvm13ARMAsmPrinter22EmitPatchedInstructionEPKNS_12MachineInstrEj", "llvm::ARMAsmPrinter::EmitPatchedInstruction(llvm::MachineInstr const*, unsigned int)"}, + {"_ZN4llvm13ARMAsmPrinter15EmitInstructionEPKNS_12MachineInstrE", "llvm::ARMAsmPrinter::EmitInstruction(llvm::MachineInstr const*)"}, + {"_Z19populateADROperandsRN4llvm6MCInstEjPKNS_8MCSymbolEjjRNS_9MCContextE", "populateADROperands(llvm::MCInst&, unsigned int, llvm::MCSymbol const*, unsigned int, unsigned int, llvm::MCContext&)"}, + {"_Z22createARMMCInstPrinterRKN4llvm6TargetEjRKNS_9MCAsmInfoE", "createARMMCInstPrinter(llvm::Target const&, unsigned int, llvm::MCAsmInfo const&)"}, + {"_ZN12_GLOBAL__N_122ObjectAttributeEmitter17MaybeSwitchVendorEN4llvm9StringRefE", "(anonymous namespace)::ObjectAttributeEmitter::MaybeSwitchVendor(llvm::StringRef)"}, + {"_ZN12_GLOBAL__N_122ObjectAttributeEmitter13EmitAttributeEjj", "(anonymous namespace)::ObjectAttributeEmitter::EmitAttribute(unsigned int, unsigned int)"}, + {"_ZN12_GLOBAL__N_122ObjectAttributeEmitter17EmitTextAttributeEjN4llvm9StringRefE", "(anonymous namespace)::ObjectAttributeEmitter::EmitTextAttribute(unsigned int, llvm::StringRef)"}, + {"_ZN12_GLOBAL__N_122ObjectAttributeEmitter6FinishEv", "(anonymous namespace)::ObjectAttributeEmitter::Finish()"}, + {"_ZN12_GLOBAL__N_122ObjectAttributeEmitterD1Ev", "(anonymous namespace)::ObjectAttributeEmitter::~ObjectAttributeEmitter()"}, + {"_ZN12_GLOBAL__N_122ObjectAttributeEmitterD0Ev", "(anonymous namespace)::ObjectAttributeEmitter::~ObjectAttributeEmitter()"}, + {"_ZN12_GLOBAL__N_116AttributeEmitterD1Ev", "(anonymous namespace)::AttributeEmitter::~AttributeEmitter()"}, + {"_ZN12_GLOBAL__N_116AttributeEmitterD0Ev", "(anonymous namespace)::AttributeEmitter::~AttributeEmitter()"}, + {"_ZN12_GLOBAL__N_119AsmAttributeEmitter17MaybeSwitchVendorEN4llvm9StringRefE", "(anonymous namespace)::AsmAttributeEmitter::MaybeSwitchVendor(llvm::StringRef)"}, + {"_ZN12_GLOBAL__N_119AsmAttributeEmitter13EmitAttributeEjj", "(anonymous namespace)::AsmAttributeEmitter::EmitAttribute(unsigned int, unsigned int)"}, + {"_ZN12_GLOBAL__N_119AsmAttributeEmitter17EmitTextAttributeEjN4llvm9StringRefE", "(anonymous namespace)::AsmAttributeEmitter::EmitTextAttribute(unsigned int, llvm::StringRef)"}, + {"_ZN12_GLOBAL__N_119AsmAttributeEmitter6FinishEv", "(anonymous namespace)::AsmAttributeEmitter::Finish()"}, + {"_ZN12_GLOBAL__N_119AsmAttributeEmitterD1Ev", "(anonymous namespace)::AsmAttributeEmitter::~AsmAttributeEmitter()"}, + {"_ZN12_GLOBAL__N_119AsmAttributeEmitterD0Ev", "(anonymous namespace)::AsmAttributeEmitter::~AsmAttributeEmitter()"}, + + // {"_ZNSt6vectorISt4pairIPN4llvm8MCSymbolENS1_14PointerIntPairIS3_Lj1EbNS1_21PointerLikeTypeTraitsIS3_EEEEESaIS8_EEaSERKSA_", + // "std::vector>>, std::allocator>>>>::operator=(std::vector>>, std::allocator>>>> const&)"}, + // "std::vector>>, std::allocator>>>>::operator=(std::vector>>, std::allocator>>>> const&)" was returned + + {"_ZN4llvm13ARMAsmPrinterD1Ev", "llvm::ARMAsmPrinter::~ARMAsmPrinter()"}, + {"_ZN4llvm13ARMAsmPrinterD0Ev", "llvm::ARMAsmPrinter::~ARMAsmPrinter()"}, + {"_ZNK4llvm13ARMAsmPrinter11getPassNameEv", "llvm::ARMAsmPrinter::getPassName() const"}, + {"_ZNK4llvm4Pass9getPassIDEv", "llvm::Pass::getPassID() const"}, + {"_ZN4llvm13ARMAsmPrinter16EmitConstantPoolEv", "llvm::ARMAsmPrinter::EmitConstantPool()"}, + {"_ZN4llvm10AsmPrinter21EmitFunctionBodyStartEv", "llvm::AsmPrinter::EmitFunctionBodyStart()"}, + {"_ZN4llvm10AsmPrinter19EmitFunctionBodyEndEv", "llvm::AsmPrinter::EmitFunctionBodyEnd()"}, + {"_ZN4llvm13ARMAsmPrinter14getISAEncodingEv", "llvm::ARMAsmPrinter::getISAEncoding()"}, + {"_ZN4llvm18RegisterAsmPrinterINS_13ARMAsmPrinterEE9AllocatorERNS_13TargetMachineERNS_10MCStreamerE", "llvm::RegisterAsmPrinter::Allocator(llvm::TargetMachine&, llvm::MCStreamer&)"}, + {"_ZN4llvm22MachineModuleInfoMachOC2ERKNS_17MachineModuleInfoE", "llvm::MachineModuleInfoMachO::MachineModuleInfoMachO(llvm::MachineModuleInfo const&)"}, + {"_ZN4llvm15ARMFunctionInfoC2ERNS_15MachineFunctionE", "llvm::ARMFunctionInfo::ARMFunctionInfo(llvm::MachineFunction&)"}, + {"_ZN4llvm15ARMFunctionInfoD1Ev", "llvm::ARMFunctionInfo::~ARMFunctionInfo()"}, + {"_ZN4llvm15ARMFunctionInfoD0Ev", "llvm::ARMFunctionInfo::~ARMFunctionInfo()"}, + {"_ZN4llvm23SmallVectorTemplateBaseINS_9MCOperandELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + + // {"_ZN4llvm8DenseMapIPNS_8MCSymbolENS_14PointerIntPairIS2_Lj1EbNS_21PointerLikeTypeTraitsIS2_EEEENS_12DenseMapInfoIS2_EENS7_IS6_EEE16InsertIntoBucketERKS2_RKS6_PSt4pairIS2_S6_E", + // "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::InsertIntoBucket(llvm::MCSymbol* const&, llvm::PointerIntPair> const&, std::pair>>*)"}, + // "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::InsertIntoBucket(llvm::MCSymbol* const&, llvm::PointerIntPair> const&, std::pair>>*)" was returned + + + // {"_ZN4llvm8DenseMapIPNS_8MCSymbolENS_14PointerIntPairIS2_Lj1EbNS_21PointerLikeTypeTraitsIS2_EEEENS_12DenseMapInfoIS2_EENS7_IS6_EEE4growEj", + // "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::grow(unsigned int)"}, + // "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::grow(unsigned int)" was returned + + {"_ZN4llvm16ARMBaseInstrInfoC1ERKNS_12ARMSubtargetE", "llvm::ARMBaseInstrInfo::ARMBaseInstrInfo(llvm::ARMSubtarget const&)"}, + {"_ZN4llvm16ARMBaseInstrInfoC2ERKNS_12ARMSubtargetE", "llvm::ARMBaseInstrInfo::ARMBaseInstrInfo(llvm::ARMSubtarget const&)"}, + {"_ZNK4llvm16ARMBaseInstrInfo28CreateTargetHazardRecognizerEPKNS_13TargetMachineEPKNS_11ScheduleDAGE", "llvm::ARMBaseInstrInfo::CreateTargetHazardRecognizer(llvm::TargetMachine const*, llvm::ScheduleDAG const*) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo34CreateTargetPostRAHazardRecognizerEPKNS_18InstrItineraryDataEPKNS_11ScheduleDAGE", "llvm::ARMBaseInstrInfo::CreateTargetPostRAHazardRecognizer(llvm::InstrItineraryData const*, llvm::ScheduleDAG const*) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo21convertToThreeAddressERNS_14ilist_iteratorINS_17MachineBasicBlockEEERNS1_INS_12MachineInstrEEEPNS_13LiveVariablesE", "llvm::ARMBaseInstrInfo::convertToThreeAddress(llvm::ilist_iterator&, llvm::ilist_iterator&, llvm::LiveVariables*) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo13analyzeBranchERNS_17MachineBasicBlockERPS1_S4_RNS_15SmallVectorImplINS_14MachineOperandEEEb", "llvm::ARMBaseInstrInfo::analyzeBranch(llvm::MachineBasicBlock&, llvm::MachineBasicBlock*&, llvm::MachineBasicBlock*&, llvm::SmallVectorImpl&, bool) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo12removeBranchERNS_17MachineBasicBlockE", "llvm::ARMBaseInstrInfo::removeBranch(llvm::MachineBasicBlock&) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo12insertBranchERNS_17MachineBasicBlockEPS1_S3_RKNS_15SmallVectorImplINS_14MachineOperandEEENS_8DebugLocE", "llvm::ARMBaseInstrInfo::insertBranch(llvm::MachineBasicBlock&, llvm::MachineBasicBlock*, llvm::MachineBasicBlock*, llvm::SmallVectorImpl const&, llvm::DebugLoc) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo22ReverseBranchConditionERNS_15SmallVectorImplINS_14MachineOperandEEE", "llvm::ARMBaseInstrInfo::ReverseBranchCondition(llvm::SmallVectorImpl&) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo20PredicateInstructionEPNS_12MachineInstrERKNS_15SmallVectorImplINS_14MachineOperandEEE", "llvm::ARMBaseInstrInfo::PredicateInstruction(llvm::MachineInstr*, llvm::SmallVectorImpl const&) const"}, + {"_ZN4llvm27getMatchingCondBranchOpcodeEi", "llvm::getMatchingCondBranchOpcode(int)"}, + {"_ZNK4llvm16ARMBaseInstrInfo17SubsumesPredicateERKNS_15SmallVectorImplINS_14MachineOperandEEES5_", "llvm::ARMBaseInstrInfo::SubsumesPredicate(llvm::SmallVectorImpl const&, llvm::SmallVectorImpl const&) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo16DefinesPredicateEPNS_12MachineInstrERSt6vectorINS_14MachineOperandESaIS4_EE", "llvm::ARMBaseInstrInfo::DefinesPredicate(llvm::MachineInstr*, std::vector>&) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo12isPredicableEPNS_12MachineInstrE", "llvm::ARMBaseInstrInfo::isPredicable(llvm::MachineInstr*) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo18GetInstSizeInBytesEPKNS_12MachineInstrE", "llvm::ARMBaseInstrInfo::GetInstSizeInBytes(llvm::MachineInstr const*) const"}, + {"_Z15getNumJTEntriesRKSt6vectorIN4llvm21MachineJumpTableEntryESaIS1_EEj", "getNumJTEntries(std::vector> const&, unsigned int)"}, + {"_ZNK4llvm16ARMBaseInstrInfo11copyPhysRegERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEENS_8DebugLocEjjb", "llvm::ARMBaseInstrInfo::copyPhysReg(llvm::MachineBasicBlock&, llvm::ilist_iterator, llvm::DebugLoc, unsigned int, unsigned int, bool) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo19storeRegToStackSlotERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEEjbiPKNS_19TargetRegisterClassEPKNS_18TargetRegisterInfoE", "llvm::ARMBaseInstrInfo::storeRegToStackSlot(llvm::MachineBasicBlock&, llvm::ilist_iterator, unsigned int, bool, int, llvm::TargetRegisterClass const*, llvm::TargetRegisterInfo const*) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo18isStoreToStackSlotEPKNS_12MachineInstrERi", "llvm::ARMBaseInstrInfo::isStoreToStackSlot(llvm::MachineInstr const*, int&) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo20loadRegFromStackSlotERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEEjiPKNS_19TargetRegisterClassEPKNS_18TargetRegisterInfoE", "llvm::ARMBaseInstrInfo::loadRegFromStackSlot(llvm::MachineBasicBlock&, llvm::ilist_iterator, unsigned int, int, llvm::TargetRegisterClass const*, llvm::TargetRegisterInfo const*) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo19isLoadFromStackSlotEPKNS_12MachineInstrERi", "llvm::ARMBaseInstrInfo::isLoadFromStackSlot(llvm::MachineInstr const*, int&) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo24emitFrameIndexDebugValueERNS_15MachineFunctionEiyPKNS_6MDNodeENS_8DebugLocE", "llvm::ARMBaseInstrInfo::emitFrameIndexDebugValue(llvm::MachineFunction&, int, unsigned long long, llvm::MDNode const*, llvm::DebugLoc) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo13reMaterializeERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEEjjPKS4_RKNS_18TargetRegisterInfoE", "llvm::ARMBaseInstrInfo::reMaterialize(llvm::MachineBasicBlock&, llvm::ilist_iterator, unsigned int, unsigned int, llvm::MachineInstr const*, llvm::TargetRegisterInfo const&) const"}, + {"_Z12duplicateCPVRN4llvm15MachineFunctionERj", "duplicateCPV(llvm::MachineFunction&, unsigned int&)"}, + {"_ZNK4llvm16ARMBaseInstrInfo9duplicateEPNS_12MachineInstrERNS_15MachineFunctionE", "llvm::ARMBaseInstrInfo::duplicate(llvm::MachineInstr*, llvm::MachineFunction&) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo16produceSameValueEPKNS_12MachineInstrES3_PKNS_19MachineRegisterInfoE", "llvm::ARMBaseInstrInfo::produceSameValue(llvm::MachineInstr const*, llvm::MachineInstr const*, llvm::MachineRegisterInfo const*) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo23areLoadsFromSameBasePtrEPNS_6SDNodeES2_RxS3_", "llvm::ARMBaseInstrInfo::areLoadsFromSameBasePtr(llvm::SDNode*, llvm::SDNode*, long long&, long long&) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo23shouldScheduleLoadsNearEPNS_6SDNodeES2_xxj", "llvm::ARMBaseInstrInfo::shouldScheduleLoadsNear(llvm::SDNode*, llvm::SDNode*, long long, long long, unsigned int) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo20isSchedulingBoundaryEPKNS_12MachineInstrEPKNS_17MachineBasicBlockERKNS_15MachineFunctionE", "llvm::ARMBaseInstrInfo::isSchedulingBoundary(llvm::MachineInstr const*, llvm::MachineBasicBlock const*, llvm::MachineFunction const&) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo19isProfitableToIfCvtERNS_17MachineBasicBlockEjjff", "llvm::ARMBaseInstrInfo::isProfitableToIfCvt(llvm::MachineBasicBlock&, unsigned int, unsigned int, float, float) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo19isProfitableToIfCvtERNS_17MachineBasicBlockEjjS2_jjff", "llvm::ARMBaseInstrInfo::isProfitableToIfCvt(llvm::MachineBasicBlock&, unsigned int, unsigned int, llvm::MachineBasicBlock&, unsigned int, unsigned int, float, float) const"}, + {"_ZN4llvm17getInstrPredicateEPKNS_12MachineInstrERj", "llvm::getInstrPredicate(llvm::MachineInstr const*, unsigned int&)"}, + {"_ZN4llvm23emitARMRegPlusImmediateERNS_17MachineBasicBlockERNS_14ilist_iteratorINS_12MachineInstrEEENS_8DebugLocEjjiNS_5ARMCC9CondCodesEjRKNS_16ARMBaseInstrInfoE", "llvm::emitARMRegPlusImmediate(llvm::MachineBasicBlock&, llvm::ilist_iterator&, llvm::DebugLoc, unsigned int, unsigned int, int, llvm::ARMCC::CondCodes, unsigned int, llvm::ARMBaseInstrInfo const&)"}, + {"_ZN4llvm20rewriteARMFrameIndexERNS_12MachineInstrEjjRiRKNS_16ARMBaseInstrInfoE", "llvm::rewriteARMFrameIndex(llvm::MachineInstr&, unsigned int, unsigned int, int&, llvm::ARMBaseInstrInfo const&)"}, + {"_ZNK4llvm16ARMBaseInstrInfo14AnalyzeCompareEPKNS_12MachineInstrERjRiS5_", "llvm::ARMBaseInstrInfo::AnalyzeCompare(llvm::MachineInstr const*, unsigned int&, int&, int&) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo20OptimizeCompareInstrEPNS_12MachineInstrEjiiPKNS_19MachineRegisterInfoE", "llvm::ARMBaseInstrInfo::OptimizeCompareInstr(llvm::MachineInstr*, unsigned int, int, int, llvm::MachineRegisterInfo const*) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo13FoldImmediateEPNS_12MachineInstrES2_jPNS_19MachineRegisterInfoE", "llvm::ARMBaseInstrInfo::FoldImmediate(llvm::MachineInstr*, llvm::MachineInstr*, unsigned int, llvm::MachineRegisterInfo*) const"}, + {"_ZN4llvm6ARM_AM22getT2SOImmTwoPartFirstEj", "llvm::ARM_AM::getT2SOImmTwoPartFirst(unsigned int)"}, + {"_ZNK4llvm16ARMBaseInstrInfo14getNumMicroOpsEPKNS_18InstrItineraryDataEPKNS_12MachineInstrE", "llvm::ARMBaseInstrInfo::getNumMicroOps(llvm::InstrItineraryData const*, llvm::MachineInstr const*) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo15getVLDMDefCycleEPKNS_18InstrItineraryDataERKNS_15TargetInstrDescEjjj", "llvm::ARMBaseInstrInfo::getVLDMDefCycle(llvm::InstrItineraryData const*, llvm::TargetInstrDesc const&, unsigned int, unsigned int, unsigned int) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo14getLDMDefCycleEPKNS_18InstrItineraryDataERKNS_15TargetInstrDescEjjj", "llvm::ARMBaseInstrInfo::getLDMDefCycle(llvm::InstrItineraryData const*, llvm::TargetInstrDesc const&, unsigned int, unsigned int, unsigned int) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo15getVSTMUseCycleEPKNS_18InstrItineraryDataERKNS_15TargetInstrDescEjjj", "llvm::ARMBaseInstrInfo::getVSTMUseCycle(llvm::InstrItineraryData const*, llvm::TargetInstrDesc const&, unsigned int, unsigned int, unsigned int) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo14getSTMUseCycleEPKNS_18InstrItineraryDataERKNS_15TargetInstrDescEjjj", "llvm::ARMBaseInstrInfo::getSTMUseCycle(llvm::InstrItineraryData const*, llvm::TargetInstrDesc const&, unsigned int, unsigned int, unsigned int) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo17getOperandLatencyEPKNS_18InstrItineraryDataERKNS_15TargetInstrDescEjjS6_jj", "llvm::ARMBaseInstrInfo::getOperandLatency(llvm::InstrItineraryData const*, llvm::TargetInstrDesc const&, unsigned int, unsigned int, llvm::TargetInstrDesc const&, unsigned int, unsigned int) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo17getOperandLatencyEPKNS_18InstrItineraryDataEPKNS_12MachineInstrEjS6_j", "llvm::ARMBaseInstrInfo::getOperandLatency(llvm::InstrItineraryData const*, llvm::MachineInstr const*, unsigned int, llvm::MachineInstr const*, unsigned int) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo17getOperandLatencyEPKNS_18InstrItineraryDataEPNS_6SDNodeEjS5_j", "llvm::ARMBaseInstrInfo::getOperandLatency(llvm::InstrItineraryData const*, llvm::SDNode*, unsigned int, llvm::SDNode*, unsigned int) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo15getInstrLatencyEPKNS_18InstrItineraryDataEPKNS_12MachineInstrEPj", "llvm::ARMBaseInstrInfo::getInstrLatency(llvm::InstrItineraryData const*, llvm::MachineInstr const*, unsigned int*) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo15getInstrLatencyEPKNS_18InstrItineraryDataEPNS_6SDNodeE", "llvm::ARMBaseInstrInfo::getInstrLatency(llvm::InstrItineraryData const*, llvm::SDNode*) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo21hasHighOperandLatencyEPKNS_18InstrItineraryDataEPKNS_19MachineRegisterInfoEPKNS_12MachineInstrEjS9_j", "llvm::ARMBaseInstrInfo::hasHighOperandLatency(llvm::InstrItineraryData const*, llvm::MachineRegisterInfo const*, llvm::MachineInstr const*, unsigned int, llvm::MachineInstr const*, unsigned int) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo16hasLowDefLatencyEPKNS_18InstrItineraryDataEPKNS_12MachineInstrEj", "llvm::ARMBaseInstrInfo::hasLowDefLatency(llvm::InstrItineraryData const*, llvm::MachineInstr const*, unsigned int) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo18isFpMLxInstructionEjRjS1_RbS2_", "llvm::ARMBaseInstrInfo::isFpMLxInstruction(unsigned int, unsigned int&, unsigned int&, bool&, bool&) const"}, + {"_ZN4llvm8DenseMapIjjNS_12DenseMapInfoIjEES2_E6insertERKSt4pairIjjE", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + + // {"_ZN4llvm8SmallSetIjLj16EE6insertERKj", + // "llvm::SmallSet::insert(unsigned int const&)"}, + // "llvm::SmallSet::insert(unsigned int const&)" was returned + + {"_ZN4llvm13LiveVariables7VarInfo10removeKillEPNS_12MachineInstrE", "llvm::LiveVariables::VarInfo::removeKill(llvm::MachineInstr*)"}, + {"_ZNSt6vectorIN4llvm14MachineOperandESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::MachineOperand const&)"}, + {"_ZNSt8_Rb_treeIjjSt9_IdentityIjESt4lessIjESaIjEE16_M_insert_uniqueERKj", "std::_Rb_tree, std::less, std::allocator>::_M_insert_unique(unsigned int const&)"}, + + // {"_ZSt6__findIN9__gnu_cxx17__normal_iteratorIPPN4llvm12MachineInstrESt6vectorIS4_SaIS4_EEEES4_ET_SA_SA_RKT0_St26random_access_iterator_tag", + // "__gnu_cxx::__normal_iterator>> std::__find<__gnu_cxx::__normal_iterator>>, llvm::MachineInstr*>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, llvm::MachineInstr* const&, std::random_access_iterator_tag)"}, + // got error + + {"_ZN4llvm24ScheduleHazardRecognizer8EmitNoopEv", "llvm::ScheduleHazardRecognizer::EmitNoop()"}, + {"_ZN4llvm19ARMBaseRegisterInfoC1ERKNS_16ARMBaseInstrInfoERKNS_12ARMSubtargetE", "llvm::ARMBaseRegisterInfo::ARMBaseRegisterInfo(llvm::ARMBaseInstrInfo const&, llvm::ARMSubtarget const&)"}, + {"_ZN4llvm19ARMBaseRegisterInfoC2ERKNS_16ARMBaseInstrInfoERKNS_12ARMSubtargetE", "llvm::ARMBaseRegisterInfo::ARMBaseRegisterInfo(llvm::ARMBaseInstrInfo const&, llvm::ARMSubtarget const&)"}, + {"_ZN4llvm18ARMGenRegisterInfoC2Eii", "llvm::ARMGenRegisterInfo::ARMGenRegisterInfo(int, int)"}, + {"_ZNK4llvm19ARMBaseRegisterInfo18getCalleeSavedRegsEPKNS_15MachineFunctionE", "llvm::ARMBaseRegisterInfo::getCalleeSavedRegs(llvm::MachineFunction const*) const"}, + {"_ZNK4llvm19ARMBaseRegisterInfo15getReservedRegsERKNS_15MachineFunctionE", "llvm::ARMBaseRegisterInfo::getReservedRegs(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm19ARMBaseRegisterInfo14hasBasePointerERKNS_15MachineFunctionE", "llvm::ARMBaseRegisterInfo::hasBasePointer(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm19ARMBaseRegisterInfo13isReservedRegERKNS_15MachineFunctionEj", "llvm::ARMBaseRegisterInfo::isReservedReg(llvm::MachineFunction const&, unsigned int) const"}, + {"_ZNK4llvm19ARMBaseRegisterInfo24getMatchingSuperRegClassEPKNS_19TargetRegisterClassES3_j", "llvm::ARMBaseRegisterInfo::getMatchingSuperRegClass(llvm::TargetRegisterClass const*, llvm::TargetRegisterClass const*, unsigned int) const"}, + {"_ZNK4llvm19ARMBaseRegisterInfo23canCombineSubRegIndicesEPKNS_19TargetRegisterClassERNS_15SmallVectorImplIjEERj", "llvm::ARMBaseRegisterInfo::canCombineSubRegIndices(llvm::TargetRegisterClass const*, llvm::SmallVectorImpl&, unsigned int&) const"}, + {"_ZNK4llvm19ARMBaseRegisterInfo18getPointerRegClassEj", "llvm::ARMBaseRegisterInfo::getPointerRegClass(unsigned int) const"}, + {"_ZNK4llvm19ARMBaseRegisterInfo18getAllocationOrderEPKNS_19TargetRegisterClassEjjRKNS_15MachineFunctionE", "llvm::ARMBaseRegisterInfo::getAllocationOrder(llvm::TargetRegisterClass const*, unsigned int, unsigned int, llvm::MachineFunction const&) const"}, + {"_ZNK4llvm19ARMBaseRegisterInfo19getRegisterPairEvenEjRKNS_15MachineFunctionE", "llvm::ARMBaseRegisterInfo::getRegisterPairEven(unsigned int, llvm::MachineFunction const&) const"}, + {"_ZNK4llvm19ARMBaseRegisterInfo18getRegisterPairOddEjRKNS_15MachineFunctionE", "llvm::ARMBaseRegisterInfo::getRegisterPairOdd(unsigned int, llvm::MachineFunction const&) const"}, + {"_ZNK4llvm19ARMBaseRegisterInfo19ResolveRegAllocHintEjjRKNS_15MachineFunctionE", "llvm::ARMBaseRegisterInfo::ResolveRegAllocHint(unsigned int, unsigned int, llvm::MachineFunction const&) const"}, + {"_ZNK4llvm19ARMBaseRegisterInfo18UpdateRegAllocHintEjjRNS_15MachineFunctionE", "llvm::ARMBaseRegisterInfo::UpdateRegAllocHint(unsigned int, unsigned int, llvm::MachineFunction&) const"}, + {"_ZNK4llvm19ARMBaseRegisterInfo15canRealignStackERKNS_15MachineFunctionE", "llvm::ARMBaseRegisterInfo::canRealignStack(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm19ARMBaseRegisterInfo21needsStackRealignmentERKNS_15MachineFunctionE", "llvm::ARMBaseRegisterInfo::needsStackRealignment(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm19ARMBaseRegisterInfo20cannotEliminateFrameERKNS_15MachineFunctionE", "llvm::ARMBaseRegisterInfo::cannotEliminateFrame(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm19ARMBaseRegisterInfo13getRARegisterEv", "llvm::ARMBaseRegisterInfo::getRARegister() const"}, + {"_ZNK4llvm19ARMBaseRegisterInfo16getFrameRegisterERKNS_15MachineFunctionE", "llvm::ARMBaseRegisterInfo::getFrameRegister(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm19ARMBaseRegisterInfo22getEHExceptionRegisterEv", "llvm::ARMBaseRegisterInfo::getEHExceptionRegister() const"}, + {"_ZNK4llvm19ARMBaseRegisterInfo20getEHHandlerRegisterEv", "llvm::ARMBaseRegisterInfo::getEHHandlerRegister() const"}, + {"_ZNK4llvm19ARMBaseRegisterInfo14getDwarfRegNumEjb", "llvm::ARMBaseRegisterInfo::getDwarfRegNum(unsigned int, bool) const"}, + {"_ZNK4llvm18ARMGenRegisterInfo18getDwarfRegNumFullEjj", "llvm::ARMGenRegisterInfo::getDwarfRegNumFull(unsigned int, unsigned int) const"}, + {"_ZNK4llvm19ARMBaseRegisterInfo17emitLoadConstPoolERNS_17MachineBasicBlockERNS_14ilist_iteratorINS_12MachineInstrEEENS_8DebugLocEjjiNS_5ARMCC9CondCodesEj", "llvm::ARMBaseRegisterInfo::emitLoadConstPool(llvm::MachineBasicBlock&, llvm::ilist_iterator&, llvm::DebugLoc, unsigned int, unsigned int, int, llvm::ARMCC::CondCodes, unsigned int) const"}, + {"_ZNK4llvm19ARMBaseRegisterInfo26requiresRegisterScavengingERKNS_15MachineFunctionE", "llvm::ARMBaseRegisterInfo::requiresRegisterScavenging(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm19ARMBaseRegisterInfo28requiresFrameIndexScavengingERKNS_15MachineFunctionE", "llvm::ARMBaseRegisterInfo::requiresFrameIndexScavenging(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm19ARMBaseRegisterInfo28requiresVirtualBaseRegistersERKNS_15MachineFunctionE", "llvm::ARMBaseRegisterInfo::requiresVirtualBaseRegisters(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm19ARMBaseRegisterInfo29eliminateCallFramePseudoInstrERNS_15MachineFunctionERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEE", "llvm::ARMBaseRegisterInfo::eliminateCallFramePseudoInstr(llvm::MachineFunction&, llvm::MachineBasicBlock&, llvm::ilist_iterator) const"}, + {"_ZNK4llvm19ARMBaseRegisterInfo24getFrameIndexInstrOffsetEPKNS_12MachineInstrEi", "llvm::ARMBaseRegisterInfo::getFrameIndexInstrOffset(llvm::MachineInstr const*, int) const"}, + {"_ZNK4llvm19ARMBaseRegisterInfo17needsFrameBaseRegEPNS_12MachineInstrEx", "llvm::ARMBaseRegisterInfo::needsFrameBaseReg(llvm::MachineInstr*, long long) const"}, + {"_ZNK4llvm19ARMBaseRegisterInfo28materializeFrameBaseRegisterEPNS_17MachineBasicBlockEjix", "llvm::ARMBaseRegisterInfo::materializeFrameBaseRegister(llvm::MachineBasicBlock*, unsigned int, int, long long) const"}, + {"_ZNK4llvm19ARMBaseRegisterInfo17resolveFrameIndexENS_14ilist_iteratorINS_12MachineInstrEEEjx", "llvm::ARMBaseRegisterInfo::resolveFrameIndex(llvm::ilist_iterator, unsigned int, long long) const"}, + {"_ZNK4llvm19ARMBaseRegisterInfo18isFrameOffsetLegalEPKNS_12MachineInstrEx", "llvm::ARMBaseRegisterInfo::isFrameOffsetLegal(llvm::MachineInstr const*, long long) const"}, + {"_ZNK4llvm19ARMBaseRegisterInfo19eliminateFrameIndexENS_14ilist_iteratorINS_12MachineInstrEEEiPNS_12RegScavengerE", "llvm::ARMBaseRegisterInfo::eliminateFrameIndex(llvm::ilist_iterator, int, llvm::RegScavenger*) const"}, + {"_ZN4llvm3ARM8CCRClassC1Ev", "llvm::ARM::CCRClass::CCRClass()"}, + {"_ZN4llvm3ARM8DPRClassC1Ev", "llvm::ARM::DPRClass::DPRClass()"}, + {"_ZN4llvm3ARM10DPR_8ClassC1Ev", "llvm::ARM::DPR_8Class::DPR_8Class()"}, + {"_ZN4llvm3ARM13DPR_VFP2ClassC1Ev", "llvm::ARM::DPR_VFP2Class::DPR_VFP2Class()"}, + {"_ZN4llvm3ARM8GPRClassC1Ev", "llvm::ARM::GPRClass::GPRClass()"}, + {"_ZN4llvm3ARM8QPRClassC1Ev", "llvm::ARM::QPRClass::QPRClass()"}, + {"_ZN4llvm3ARM10QPR_8ClassC1Ev", "llvm::ARM::QPR_8Class::QPR_8Class()"}, + {"_ZN4llvm3ARM13QPR_VFP2ClassC1Ev", "llvm::ARM::QPR_VFP2Class::QPR_VFP2Class()"}, + {"_ZN4llvm3ARM9QQPRClassC1Ev", "llvm::ARM::QQPRClass::QQPRClass()"}, + {"_ZN4llvm3ARM14QQPR_VFP2ClassC1Ev", "llvm::ARM::QQPR_VFP2Class::QQPR_VFP2Class()"}, + {"_ZN4llvm3ARM11QQQQPRClassC1Ev", "llvm::ARM::QQQQPRClass::QQQQPRClass()"}, + {"_ZN4llvm3ARM8SPRClassC1Ev", "llvm::ARM::SPRClass::SPRClass()"}, + {"_ZN4llvm3ARM10SPR_8ClassC1Ev", "llvm::ARM::SPR_8Class::SPR_8Class()"}, + {"_ZN4llvm3ARM9rGPRClassC1Ev", "llvm::ARM::rGPRClass::rGPRClass()"}, + {"_ZN4llvm3ARM9tGPRClassC1Ev", "llvm::ARM::tGPRClass::tGPRClass()"}, + {"_ZN4llvm3ARM10tcGPRClassC1Ev", "llvm::ARM::tcGPRClass::tcGPRClass()"}, + {"_ZN4llvm3ARM8CCRClassC2Ev", "llvm::ARM::CCRClass::CCRClass()"}, + {"_ZNK4llvm3ARM8DPRClass22allocation_order_beginERKNS_15MachineFunctionE", "llvm::ARM::DPRClass::allocation_order_begin(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm3ARM8DPRClass20allocation_order_endERKNS_15MachineFunctionE", "llvm::ARM::DPRClass::allocation_order_end(llvm::MachineFunction const&) const"}, + {"_ZN4llvm3ARM8DPRClassC2Ev", "llvm::ARM::DPRClass::DPRClass()"}, + {"_ZN4llvm3ARM10DPR_8ClassC2Ev", "llvm::ARM::DPR_8Class::DPR_8Class()"}, + {"_ZN4llvm3ARM13DPR_VFP2ClassC2Ev", "llvm::ARM::DPR_VFP2Class::DPR_VFP2Class()"}, + {"_ZNK4llvm3ARM8GPRClass22allocation_order_beginERKNS_15MachineFunctionE", "llvm::ARM::GPRClass::allocation_order_begin(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm3ARM8GPRClass20allocation_order_endERKNS_15MachineFunctionE", "llvm::ARM::GPRClass::allocation_order_end(llvm::MachineFunction const&) const"}, + {"_ZN4llvm3ARM8GPRClassC2Ev", "llvm::ARM::GPRClass::GPRClass()"}, + {"_ZNK4llvm3ARM8QPRClass22allocation_order_beginERKNS_15MachineFunctionE", "llvm::ARM::QPRClass::allocation_order_begin(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm3ARM8QPRClass20allocation_order_endERKNS_15MachineFunctionE", "llvm::ARM::QPRClass::allocation_order_end(llvm::MachineFunction const&) const"}, + {"_ZN4llvm3ARM8QPRClassC2Ev", "llvm::ARM::QPRClass::QPRClass()"}, + {"_ZN4llvm3ARM10QPR_8ClassC2Ev", "llvm::ARM::QPR_8Class::QPR_8Class()"}, + {"_ZN4llvm3ARM13QPR_VFP2ClassC2Ev", "llvm::ARM::QPR_VFP2Class::QPR_VFP2Class()"}, + {"_ZNK4llvm3ARM9QQPRClass22allocation_order_beginERKNS_15MachineFunctionE", "llvm::ARM::QQPRClass::allocation_order_begin(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm3ARM9QQPRClass20allocation_order_endERKNS_15MachineFunctionE", "llvm::ARM::QQPRClass::allocation_order_end(llvm::MachineFunction const&) const"}, + {"_ZN4llvm3ARM9QQPRClassC2Ev", "llvm::ARM::QQPRClass::QQPRClass()"}, + {"_ZN4llvm3ARM14QQPR_VFP2ClassC2Ev", "llvm::ARM::QQPR_VFP2Class::QQPR_VFP2Class()"}, + {"_ZNK4llvm3ARM11QQQQPRClass22allocation_order_beginERKNS_15MachineFunctionE", "llvm::ARM::QQQQPRClass::allocation_order_begin(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm3ARM11QQQQPRClass20allocation_order_endERKNS_15MachineFunctionE", "llvm::ARM::QQQQPRClass::allocation_order_end(llvm::MachineFunction const&) const"}, + {"_ZN4llvm3ARM11QQQQPRClassC2Ev", "llvm::ARM::QQQQPRClass::QQQQPRClass()"}, + {"_ZN4llvm3ARM8SPRClassC2Ev", "llvm::ARM::SPRClass::SPRClass()"}, + {"_ZN4llvm3ARM10SPR_8ClassC2Ev", "llvm::ARM::SPR_8Class::SPR_8Class()"}, + {"_ZNK4llvm3ARM9rGPRClass22allocation_order_beginERKNS_15MachineFunctionE", "llvm::ARM::rGPRClass::allocation_order_begin(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm3ARM9rGPRClass20allocation_order_endERKNS_15MachineFunctionE", "llvm::ARM::rGPRClass::allocation_order_end(llvm::MachineFunction const&) const"}, + {"_ZN4llvm3ARM9rGPRClassC2Ev", "llvm::ARM::rGPRClass::rGPRClass()"}, + {"_ZN4llvm3ARM9tGPRClassC2Ev", "llvm::ARM::tGPRClass::tGPRClass()"}, + {"_ZNK4llvm3ARM10tcGPRClass22allocation_order_beginERKNS_15MachineFunctionE", "llvm::ARM::tcGPRClass::allocation_order_begin(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm3ARM10tcGPRClass20allocation_order_endERKNS_15MachineFunctionE", "llvm::ARM::tcGPRClass::allocation_order_end(llvm::MachineFunction const&) const"}, + {"_ZN4llvm3ARM10tcGPRClassC2Ev", "llvm::ARM::tcGPRClass::tcGPRClass()"}, + {"_ZNK4llvm18ARMGenRegisterInfo9getSubRegEjj", "llvm::ARMGenRegisterInfo::getSubReg(unsigned int, unsigned int) const"}, + {"_ZNK4llvm18ARMGenRegisterInfo14getSubRegIndexEjj", "llvm::ARMGenRegisterInfo::getSubRegIndex(unsigned int, unsigned int) const"}, + {"_ZNK4llvm18ARMGenRegisterInfo20composeSubRegIndicesEjj", "llvm::ARMGenRegisterInfo::composeSubRegIndices(unsigned int, unsigned int) const"}, + {"_ZN4llvm18ARMGenRegisterInfoC1Eii", "llvm::ARMGenRegisterInfo::ARMGenRegisterInfo(int, int)"}, + {"_ZN4llvm3ARM8CCRClassD1Ev", "llvm::ARM::CCRClass::~CCRClass()"}, + {"_ZN4llvm3ARM8DPRClassD1Ev", "llvm::ARM::DPRClass::~DPRClass()"}, + {"_ZN4llvm3ARM10DPR_8ClassD1Ev", "llvm::ARM::DPR_8Class::~DPR_8Class()"}, + {"_ZN4llvm3ARM13DPR_VFP2ClassD1Ev", "llvm::ARM::DPR_VFP2Class::~DPR_VFP2Class()"}, + {"_ZN4llvm3ARM8GPRClassD1Ev", "llvm::ARM::GPRClass::~GPRClass()"}, + {"_ZN4llvm3ARM8QPRClassD1Ev", "llvm::ARM::QPRClass::~QPRClass()"}, + {"_ZN4llvm3ARM10QPR_8ClassD1Ev", "llvm::ARM::QPR_8Class::~QPR_8Class()"}, + {"_ZN4llvm3ARM13QPR_VFP2ClassD1Ev", "llvm::ARM::QPR_VFP2Class::~QPR_VFP2Class()"}, + {"_ZN4llvm3ARM9QQPRClassD1Ev", "llvm::ARM::QQPRClass::~QQPRClass()"}, + {"_ZN4llvm3ARM14QQPR_VFP2ClassD1Ev", "llvm::ARM::QQPR_VFP2Class::~QQPR_VFP2Class()"}, + {"_ZN4llvm3ARM11QQQQPRClassD1Ev", "llvm::ARM::QQQQPRClass::~QQQQPRClass()"}, + {"_ZN4llvm3ARM8SPRClassD1Ev", "llvm::ARM::SPRClass::~SPRClass()"}, + {"_ZN4llvm3ARM10SPR_8ClassD1Ev", "llvm::ARM::SPR_8Class::~SPR_8Class()"}, + {"_ZN4llvm3ARM9rGPRClassD1Ev", "llvm::ARM::rGPRClass::~rGPRClass()"}, + {"_ZN4llvm3ARM9tGPRClassD1Ev", "llvm::ARM::tGPRClass::~tGPRClass()"}, + {"_ZN4llvm3ARM10tcGPRClassD1Ev", "llvm::ARM::tcGPRClass::~tcGPRClass()"}, + {"_ZN4llvm19TargetRegisterClassC2EjPKcPKNS_3EVTEPKPKS0_S9_S9_S9_jjiPKjSB_", "llvm::TargetRegisterClass::TargetRegisterClass(unsigned int, char const*, llvm::EVT const*, llvm::TargetRegisterClass const* const*, llvm::TargetRegisterClass const* const*, llvm::TargetRegisterClass const* const*, llvm::TargetRegisterClass const* const*, unsigned int, unsigned int, int, unsigned int const*, unsigned int const*)"}, + {"_ZN4llvm3ARM8DPRClassD0Ev", "llvm::ARM::DPRClass::~DPRClass()"}, + {"_ZN4llvm3ARM8GPRClassD0Ev", "llvm::ARM::GPRClass::~GPRClass()"}, + {"_ZN4llvm3ARM8QPRClassD0Ev", "llvm::ARM::QPRClass::~QPRClass()"}, + {"_ZN4llvm3ARM9QQPRClassD0Ev", "llvm::ARM::QQPRClass::~QQPRClass()"}, + {"_ZN4llvm3ARM11QQQQPRClassD0Ev", "llvm::ARM::QQQQPRClass::~QQQQPRClass()"}, + {"_ZN4llvm3ARM9rGPRClassD0Ev", "llvm::ARM::rGPRClass::~rGPRClass()"}, + {"_ZN4llvm3ARM10tcGPRClassD0Ev", "llvm::ARM::tcGPRClass::~tcGPRClass()"}, + {"_ZN4llvm3ARM9tGPRClassD0Ev", "llvm::ARM::tGPRClass::~tGPRClass()"}, + {"_ZNK4llvm19TargetRegisterClass22allocation_order_beginERKNS_15MachineFunctionE", "llvm::TargetRegisterClass::allocation_order_begin(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm19TargetRegisterClass20allocation_order_endERKNS_15MachineFunctionE", "llvm::TargetRegisterClass::allocation_order_end(llvm::MachineFunction const&) const"}, + {"_ZN4llvm3ARM10SPR_8ClassD0Ev", "llvm::ARM::SPR_8Class::~SPR_8Class()"}, + {"_ZN4llvm3ARM8SPRClassD0Ev", "llvm::ARM::SPRClass::~SPRClass()"}, + {"_ZN4llvm3ARM14QQPR_VFP2ClassD0Ev", "llvm::ARM::QQPR_VFP2Class::~QQPR_VFP2Class()"}, + {"_ZN4llvm3ARM13QPR_VFP2ClassD0Ev", "llvm::ARM::QPR_VFP2Class::~QPR_VFP2Class()"}, + {"_ZN4llvm3ARM10QPR_8ClassD0Ev", "llvm::ARM::QPR_8Class::~QPR_8Class()"}, + {"_ZN4llvm3ARM13DPR_VFP2ClassD0Ev", "llvm::ARM::DPR_VFP2Class::~DPR_VFP2Class()"}, + {"_ZN4llvm3ARM10DPR_8ClassD0Ev", "llvm::ARM::DPR_8Class::~DPR_8Class()"}, + {"_ZN4llvm3ARM8CCRClassD0Ev", "llvm::ARM::CCRClass::~CCRClass()"}, + {"_ZN4llvm19TargetRegisterClassD1Ev", "llvm::TargetRegisterClass::~TargetRegisterClass()"}, + {"_ZN4llvm19TargetRegisterClassD0Ev", "llvm::TargetRegisterClass::~TargetRegisterClass()"}, + {"_ZN4llvm27createARMJITCodeEmitterPassERNS_20ARMBaseTargetMachineERNS_14JITCodeEmitterE", "llvm::createARMJITCodeEmitterPass(llvm::ARMBaseTargetMachine&, llvm::JITCodeEmitter&)"}, + {"_ZN12_GLOBAL__N_114ARMCodeEmitterD1Ev", "(anonymous namespace)::ARMCodeEmitter::~ARMCodeEmitter()"}, + {"_ZN12_GLOBAL__N_114ARMCodeEmitterD0Ev", "(anonymous namespace)::ARMCodeEmitter::~ARMCodeEmitter()"}, + {"_ZNK12_GLOBAL__N_114ARMCodeEmitter11getPassNameEv", "(anonymous namespace)::ARMCodeEmitter::getPassName() const"}, + {"_ZNK12_GLOBAL__N_114ARMCodeEmitter16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::ARMCodeEmitter::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_114ARMCodeEmitter20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::ARMCodeEmitter::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN12_GLOBAL__N_114ARMCodeEmitter15emitInstructionERKN4llvm12MachineInstrE", "(anonymous namespace)::ARMCodeEmitter::emitInstruction(llvm::MachineInstr const&)"}, + {"_ZN12_GLOBAL__N_114ARMCodeEmitter25emitLEApcrelJTInstructionERKN4llvm12MachineInstrE", "(anonymous namespace)::ARMCodeEmitter::emitLEApcrelJTInstruction(llvm::MachineInstr const&)"}, + {"_ZN12_GLOBAL__N_114ARMCodeEmitter29emitDataProcessingInstructionERKN4llvm12MachineInstrEjj", "(anonymous namespace)::ARMCodeEmitter::emitDataProcessingInstruction(llvm::MachineInstr const&, unsigned int, unsigned int)"}, + {"_ZN12_GLOBAL__N_114ARMCodeEmitter24emitLoadStoreInstructionERKN4llvm12MachineInstrEjj", "(anonymous namespace)::ARMCodeEmitter::emitLoadStoreInstruction(llvm::MachineInstr const&, unsigned int, unsigned int)"}, + {"_ZN12_GLOBAL__N_114ARMCodeEmitter28emitMiscLoadStoreInstructionERKN4llvm12MachineInstrEj", "(anonymous namespace)::ARMCodeEmitter::emitMiscLoadStoreInstruction(llvm::MachineInstr const&, unsigned int)"}, + {"_ZN12_GLOBAL__N_114ARMCodeEmitter25emitMiscBranchInstructionERKN4llvm12MachineInstrE", "(anonymous namespace)::ARMCodeEmitter::emitMiscBranchInstruction(llvm::MachineInstr const&)"}, + {"_ZNK12_GLOBAL__N_114ARMCodeEmitter21getBinaryCodeForInstrERKN4llvm12MachineInstrE", "(anonymous namespace)::ARMCodeEmitter::getBinaryCodeForInstr(llvm::MachineInstr const&) const"}, + {"_Z12encodeNEONRdRKN4llvm12MachineInstrEj", "encodeNEONRd(llvm::MachineInstr const&, unsigned int)"}, + {"_Z12encodeNEONRnRKN4llvm12MachineInstrEj", "encodeNEONRn(llvm::MachineInstr const&, unsigned int)"}, + {"_Z12encodeNEONRmRKN4llvm12MachineInstrEj", "encodeNEONRm(llvm::MachineInstr const&, unsigned int)"}, + {"_ZNK12_GLOBAL__N_114ARMCodeEmitter17getMachineOpValueERKN4llvm12MachineInstrERKNS1_14MachineOperandE", "(anonymous namespace)::ARMCodeEmitter::getMachineOpValue(llvm::MachineInstr const&, llvm::MachineOperand const&) const"}, + {"_ZNK12_GLOBAL__N_114ARMCodeEmitter23getAddrModeImm12OpValueERKN4llvm12MachineInstrEj", "(anonymous namespace)::ARMCodeEmitter::getAddrModeImm12OpValue(llvm::MachineInstr const&, unsigned int) const"}, + {"_ZNK12_GLOBAL__N_114ARMCodeEmitter19getAddrMode5OpValueERKN4llvm12MachineInstrEj", "(anonymous namespace)::ARMCodeEmitter::getAddrMode5OpValue(llvm::MachineInstr const&, unsigned int) const"}, + {"_ZN12_GLOBAL__N_114ARMCodeEmitter19emitInlineJumpTableEj", "(anonymous namespace)::ARMCodeEmitter::emitInlineJumpTable(unsigned int)"}, + {"_ZN12_GLOBAL__N_114ARMCodeEmitter14getMovi32ValueERKN4llvm12MachineInstrERKNS1_14MachineOperandEj", "(anonymous namespace)::ARMCodeEmitter::getMovi32Value(llvm::MachineInstr const&, llvm::MachineOperand const&, unsigned int)"}, + {"_ZN4llvm8DenseMapIjlNS_12DenseMapInfoIjEENS1_IlEEE6insertERKSt4pairIjlE", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIjlNS_12DenseMapInfoIjEENS1_IlEEE16InsertIntoBucketERKjRKlPSt4pairIjlE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(unsigned int const&, long const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIjlNS_12DenseMapInfoIjEENS1_IlEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm15SmallVectorImplIlE6resizeEj", "llvm::SmallVectorImpl::resize(unsigned int)"}, + {"_ZN4llvm27createARMConstantIslandPassEv", "llvm::createARMConstantIslandPass()"}, + {"_ZN12_GLOBAL__N_118ARMConstantIslandsD1Ev", "(anonymous namespace)::ARMConstantIslands::~ARMConstantIslands()"}, + {"_ZN12_GLOBAL__N_118ARMConstantIslandsD0Ev", "(anonymous namespace)::ARMConstantIslands::~ARMConstantIslands()"}, + {"_ZNK12_GLOBAL__N_118ARMConstantIslands11getPassNameEv", "(anonymous namespace)::ARMConstantIslands::getPassName() const"}, + {"_ZN12_GLOBAL__N_118ARMConstantIslands20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::ARMConstantIslands::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN12_GLOBAL__N_118ARMConstantIslands12CPEIsInRangeEPN4llvm12MachineInstrEjS3_jbb", "(anonymous namespace)::ARMConstantIslands::CPEIsInRange(llvm::MachineInstr*, unsigned int, llvm::MachineInstr*, unsigned int, bool, bool)"}, + {"_ZN12_GLOBAL__N_118ARMConstantIslands20AdjustBBOffsetsAfterEPN4llvm17MachineBasicBlockEi", "(anonymous namespace)::ARMConstantIslands::AdjustBBOffsetsAfter(llvm::MachineBasicBlock*, int)"}, + {"_ZN12_GLOBAL__N_118ARMConstantIslands21SplitBlockBeforeInstrEPN4llvm12MachineInstrE", "(anonymous namespace)::ARMConstantIslands::SplitBlockBeforeInstr(llvm::MachineInstr*)"}, + {"_ZNSt6vectorIN12_GLOBAL__N_118ARMConstantIslands9ImmBranchESaIS2_EE9push_backERKS2_", "std::vector<(anonymous namespace)::ARMConstantIslands::ImmBranch, std::allocator<(anonymous namespace)::ARMConstantIslands::ImmBranch>>::push_back((anonymous namespace)::ARMConstantIslands::ImmBranch const&)"}, + {"_ZN12_GLOBAL__N_118ARMConstantIslands17DecrementOldEntryEjPN4llvm12MachineInstrE", "(anonymous namespace)::ARMConstantIslands::DecrementOldEntry(unsigned int, llvm::MachineInstr*)"}, + {"_ZNSt6vectorIN12_GLOBAL__N_118ARMConstantIslands7CPEntryESaIS2_EE9push_backERKS2_", "std::vector<(anonymous namespace)::ARMConstantIslands::CPEntry, std::allocator<(anonymous namespace)::ARMConstantIslands::CPEntry>>::push_back((anonymous namespace)::ARMConstantIslands::CPEntry const&)"}, + {"_ZNSt6vectorIN12_GLOBAL__N_118ARMConstantIslands7CPEntryESaIS2_EEC1ERKS4_", "std::vector<(anonymous namespace)::ARMConstantIslands::CPEntry, std::allocator<(anonymous namespace)::ARMConstantIslands::CPEntry>>::vector(std::vector<(anonymous namespace)::ARMConstantIslands::CPEntry, std::allocator<(anonymous namespace)::ARMConstantIslands::CPEntry>> const&)"}, + {"_ZNSt6vectorIPN4llvm17MachineBasicBlockESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::MachineBasicBlock* const&)"}, + + // {"_ZSt6__findIN9__gnu_cxx17__normal_iteratorIPPN4llvm17MachineBasicBlockESt6vectorIS4_SaIS4_EEEES4_ET_SA_SA_RKT0_St26random_access_iterator_tag", + // "__gnu_cxx::__normal_iterator>> std::__find<__gnu_cxx::__normal_iterator>>, llvm::MachineBasicBlock*>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, llvm::MachineBasicBlock* const&, std::random_access_iterator_tag)"}, + // got error + + {"_ZN4llvm20ARMConstantPoolValueC1EPKNS_8ConstantEjNS_5ARMCP9ARMCPKindEhNS4_13ARMCPModifierEb", "llvm::ARMConstantPoolValue::ARMConstantPoolValue(llvm::Constant const*, unsigned int, llvm::ARMCP::ARMCPKind, unsigned char, llvm::ARMCP::ARMCPModifier, bool)"}, + {"_ZN4llvm20ARMConstantPoolValueC2EPKNS_8ConstantEjNS_5ARMCP9ARMCPKindEhNS4_13ARMCPModifierEb", "llvm::ARMConstantPoolValue::ARMConstantPoolValue(llvm::Constant const*, unsigned int, llvm::ARMCP::ARMCPKind, unsigned char, llvm::ARMCP::ARMCPModifier, bool)"}, + {"_ZN4llvm20ARMConstantPoolValueC1ERNS_11LLVMContextEPKcjhNS_5ARMCP13ARMCPModifierEb", "llvm::ARMConstantPoolValue::ARMConstantPoolValue(llvm::LLVMContext&, char const*, unsigned int, unsigned char, llvm::ARMCP::ARMCPModifier, bool)"}, + {"_ZN4llvm20ARMConstantPoolValueC2ERNS_11LLVMContextEPKcjhNS_5ARMCP13ARMCPModifierEb", "llvm::ARMConstantPoolValue::ARMConstantPoolValue(llvm::LLVMContext&, char const*, unsigned int, unsigned char, llvm::ARMCP::ARMCPModifier, bool)"}, + {"_ZN4llvm20ARMConstantPoolValueC1EPKNS_11GlobalValueENS_5ARMCP13ARMCPModifierE", "llvm::ARMConstantPoolValue::ARMConstantPoolValue(llvm::GlobalValue const*, llvm::ARMCP::ARMCPModifier)"}, + {"_ZN4llvm20ARMConstantPoolValueC2EPKNS_11GlobalValueENS_5ARMCP13ARMCPModifierE", "llvm::ARMConstantPoolValue::ARMConstantPoolValue(llvm::GlobalValue const*, llvm::ARMCP::ARMCPModifier)"}, + {"_ZNK4llvm20ARMConstantPoolValue5getGVEv", "llvm::ARMConstantPoolValue::getGV() const"}, + {"_ZNK4llvm20ARMConstantPoolValue15getBlockAddressEv", "llvm::ARMConstantPoolValue::getBlockAddress() const"}, + {"_ZN4llvm20ARMConstantPoolValue25getExistingMachineCPValueEPNS_19MachineConstantPoolEj", "llvm::ARMConstantPoolValue::getExistingMachineCPValue(llvm::MachineConstantPool*, unsigned int)"}, + {"_ZN4llvm20ARMConstantPoolValueD0Ev", "llvm::ARMConstantPoolValue::~ARMConstantPoolValue()"}, + {"_ZN4llvm20ARMConstantPoolValueD1Ev", "llvm::ARMConstantPoolValue::~ARMConstantPoolValue()"}, + {"_ZN4llvm20ARMConstantPoolValueD2Ev", "llvm::ARMConstantPoolValue::~ARMConstantPoolValue()"}, + {"_ZN4llvm20ARMConstantPoolValue20AddSelectionDAGCSEIdERNS_16FoldingSetNodeIDE", "llvm::ARMConstantPoolValue::AddSelectionDAGCSEId(llvm::FoldingSetNodeID&)"}, + {"_ZN4llvm20ARMConstantPoolValue12hasSameValueEPS0_", "llvm::ARMConstantPoolValue::hasSameValue(llvm::ARMConstantPoolValue*)"}, + {"_ZNK4llvm20ARMConstantPoolValue4dumpEv", "llvm::ARMConstantPoolValue::dump() const"}, + {"_ZNK4llvm20ARMConstantPoolValue5printERNS_11raw_ostreamE", "llvm::ARMConstantPoolValue::print(llvm::raw_ostream&) const"}, + {"_ZNK4llvm20ARMConstantPoolValue17getRelocationInfoEv", "llvm::ARMConstantPoolValue::getRelocationInfo() const"}, + {"_ZNSt6vectorIN4llvm24MachineConstantPoolEntryESaIS1_EEC2ERKS3_", "std::vector>::vector(std::vector> const&)"}, + {"_ZN4llvm24MachineConstantPoolValueD1Ev", "llvm::MachineConstantPoolValue::~MachineConstantPoolValue()"}, + {"_ZN4llvm24MachineConstantPoolValueD0Ev", "llvm::MachineConstantPoolValue::~MachineConstantPoolValue()"}, + {"_ZN4llvm16ARMELFWriterInfoC1ERNS_13TargetMachineE", "llvm::ARMELFWriterInfo::ARMELFWriterInfo(llvm::TargetMachine&)"}, + {"_ZN4llvm16ARMELFWriterInfoC2ERNS_13TargetMachineE", "llvm::ARMELFWriterInfo::ARMELFWriterInfo(llvm::TargetMachine&)"}, + {"_ZN4llvm16ARMELFWriterInfoD0Ev", "llvm::ARMELFWriterInfo::~ARMELFWriterInfo()"}, + {"_ZN4llvm16ARMELFWriterInfoD1Ev", "llvm::ARMELFWriterInfo::~ARMELFWriterInfo()"}, + {"_ZN4llvm16ARMELFWriterInfoD2Ev", "llvm::ARMELFWriterInfo::~ARMELFWriterInfo()"}, + {"_ZNK4llvm16ARMELFWriterInfo17getRelocationTypeEj", "llvm::ARMELFWriterInfo::getRelocationType(unsigned int) const"}, + {"_ZNK4llvm16ARMELFWriterInfo24getDefaultAddendForRelTyEjl", "llvm::ARMELFWriterInfo::getDefaultAddendForRelTy(unsigned int, long) const"}, + {"_ZNK4llvm16ARMELFWriterInfo19getRelocationTySizeEj", "llvm::ARMELFWriterInfo::getRelocationTySize(unsigned int) const"}, + {"_ZNK4llvm16ARMELFWriterInfo15isPCRelativeRelEj", "llvm::ARMELFWriterInfo::isPCRelativeRel(unsigned int) const"}, + {"_ZNK4llvm16ARMELFWriterInfo28getAbsoluteLabelMachineRelTyEv", "llvm::ARMELFWriterInfo::getAbsoluteLabelMachineRelTy() const"}, + {"_ZNK4llvm16ARMELFWriterInfo17computeRelocationEjjj", "llvm::ARMELFWriterInfo::computeRelocation(unsigned int, unsigned int, unsigned int) const"}, + {"_ZNK4llvm16ARMELFWriterInfo19hasRelocationAddendEv", "llvm::ARMELFWriterInfo::hasRelocationAddend() const"}, + {"_ZN4llvm25createARMExpandPseudoPassEv", "llvm::createARMExpandPseudoPass()"}, + {"_ZN12_GLOBAL__N_115ARMExpandPseudoD1Ev", "(anonymous namespace)::ARMExpandPseudo::~ARMExpandPseudo()"}, + {"_ZN12_GLOBAL__N_115ARMExpandPseudoD0Ev", "(anonymous namespace)::ARMExpandPseudo::~ARMExpandPseudo()"}, + {"_ZNK12_GLOBAL__N_115ARMExpandPseudo11getPassNameEv", "(anonymous namespace)::ARMExpandPseudo::getPassName() const"}, + {"_ZN12_GLOBAL__N_115ARMExpandPseudo20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::ARMExpandPseudo::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN12_GLOBAL__N_115ARMExpandPseudo8ExpandMIERN4llvm17MachineBasicBlockENS1_14ilist_iteratorINS1_12MachineInstrEEE", "(anonymous namespace)::ARMExpandPseudo::ExpandMI(llvm::MachineBasicBlock&, llvm::ilist_iterator)"}, + {"_ZN12_GLOBAL__N_115ARMExpandPseudo10ExpandVTBLERN4llvm14ilist_iteratorINS1_12MachineInstrEEEjbj", "(anonymous namespace)::ARMExpandPseudo::ExpandVTBL(llvm::ilist_iterator&, unsigned int, bool, unsigned int)"}, + {"_Z11GetDSubRegsjN12_GLOBAL__N_114NEONRegSpacingEPKN4llvm18TargetRegisterInfoERjS5_S5_S5_", "GetDSubRegs(unsigned int, (anonymous namespace)::NEONRegSpacing, llvm::TargetRegisterInfo const*, unsigned int&, unsigned int&, unsigned int&, unsigned int&)"}, + {"_ZN4llvm3ARM14createFastISelERNS_20FunctionLoweringInfoE", "llvm::ARM::createFastISel(llvm::FunctionLoweringInfo&)"}, + {"_ZN12_GLOBAL__N_111ARMFastISelD1Ev", "(anonymous namespace)::ARMFastISel::~ARMFastISel()"}, + {"_ZN12_GLOBAL__N_111ARMFastISelD0Ev", "(anonymous namespace)::ARMFastISel::~ARMFastISel()"}, + {"_ZN12_GLOBAL__N_111ARMFastISel23TargetSelectInstructionEPKN4llvm11InstructionE", "(anonymous namespace)::ARMFastISel::TargetSelectInstruction(llvm::Instruction const*)"}, + {"_ZN12_GLOBAL__N_111ARMFastISel10FastEmit_rEN4llvm3MVTES2_jjb", "(anonymous namespace)::ARMFastISel::FastEmit_r(llvm::MVT, llvm::MVT, unsigned int, unsigned int, bool)"}, + {"_ZN12_GLOBAL__N_111ARMFastISel11FastEmit_rrEN4llvm3MVTES2_jjbjb", "(anonymous namespace)::ARMFastISel::FastEmit_rr(llvm::MVT, llvm::MVT, unsigned int, unsigned int, bool, unsigned int, bool)"}, + {"_ZN12_GLOBAL__N_111ARMFastISel11FastEmit_riEN4llvm3MVTES2_jjby", "(anonymous namespace)::ARMFastISel::FastEmit_ri(llvm::MVT, llvm::MVT, unsigned int, unsigned int, bool, unsigned long long)"}, + {"_ZN12_GLOBAL__N_111ARMFastISel10FastEmit_iEN4llvm3MVTES2_jy", "(anonymous namespace)::ARMFastISel::FastEmit_i(llvm::MVT, llvm::MVT, unsigned int, unsigned long long)"}, + {"_ZN12_GLOBAL__N_111ARMFastISel25TargetMaterializeConstantEPKN4llvm8ConstantE", "(anonymous namespace)::ARMFastISel::TargetMaterializeConstant(llvm::Constant const*)"}, + {"_ZN12_GLOBAL__N_111ARMFastISel23TargetMaterializeAllocaEPKN4llvm10AllocaInstE", "(anonymous namespace)::ARMFastISel::TargetMaterializeAlloca(llvm::AllocaInst const*)"}, + {"_ZN12_GLOBAL__N_111ARMFastISel13FastEmitInst_EjPKN4llvm19TargetRegisterClassE", "(anonymous namespace)::ARMFastISel::FastEmitInst_(unsigned int, llvm::TargetRegisterClass const*)"}, + {"_ZN12_GLOBAL__N_111ARMFastISel14FastEmitInst_rEjPKN4llvm19TargetRegisterClassEjb", "(anonymous namespace)::ARMFastISel::FastEmitInst_r(unsigned int, llvm::TargetRegisterClass const*, unsigned int, bool)"}, + {"_ZN12_GLOBAL__N_111ARMFastISel15FastEmitInst_rrEjPKN4llvm19TargetRegisterClassEjbjb", "(anonymous namespace)::ARMFastISel::FastEmitInst_rr(unsigned int, llvm::TargetRegisterClass const*, unsigned int, bool, unsigned int, bool)"}, + {"_ZN12_GLOBAL__N_111ARMFastISel15FastEmitInst_riEjPKN4llvm19TargetRegisterClassEjby", "(anonymous namespace)::ARMFastISel::FastEmitInst_ri(unsigned int, llvm::TargetRegisterClass const*, unsigned int, bool, unsigned long long)"}, + {"_ZN12_GLOBAL__N_111ARMFastISel15FastEmitInst_rfEjPKN4llvm19TargetRegisterClassEjbPKNS1_10ConstantFPE", "(anonymous namespace)::ARMFastISel::FastEmitInst_rf(unsigned int, llvm::TargetRegisterClass const*, unsigned int, bool, llvm::ConstantFP const*)"}, + {"_ZN12_GLOBAL__N_111ARMFastISel14FastEmitInst_iEjPKN4llvm19TargetRegisterClassEy", "(anonymous namespace)::ARMFastISel::FastEmitInst_i(unsigned int, llvm::TargetRegisterClass const*, unsigned long long)"}, + {"_ZN12_GLOBAL__N_111ARMFastISel16FastEmitInst_rriEjPKN4llvm19TargetRegisterClassEjbjby", "(anonymous namespace)::ARMFastISel::FastEmitInst_rri(unsigned int, llvm::TargetRegisterClass const*, unsigned int, bool, unsigned int, bool, unsigned long long)"}, + {"_ZN12_GLOBAL__N_111ARMFastISel26FastEmitInst_extractsubregEN4llvm3MVTEjbj", "(anonymous namespace)::ARMFastISel::FastEmitInst_extractsubreg(llvm::MVT, unsigned int, bool, unsigned int)"}, + {"_ZN12_GLOBAL__N_111ARMFastISel15AddOptionalDefsERKN4llvm19MachineInstrBuilderE", "(anonymous namespace)::ARMFastISel::AddOptionalDefs(llvm::MachineInstrBuilder const&)"}, + {"_ZN12_GLOBAL__N_111ARMFastISel16ARMMaterializeGVEPKN4llvm11GlobalValueENS1_3EVTE", "(anonymous namespace)::ARMFastISel::ARMMaterializeGV(llvm::GlobalValue const*, llvm::EVT)"}, + {"_ZN12_GLOBAL__N_111ARMFastISel14SelectBinaryOpEPKN4llvm11InstructionEj", "(anonymous namespace)::ARMFastISel::SelectBinaryOp(llvm::Instruction const*, unsigned int)"}, + {"_Z19RetCC_ARM_AAPCS_VFPjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateE", "RetCC_ARM_AAPCS_VFP(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)"}, + {"_Z16CC_ARM_AAPCS_VFPjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateE", "CC_ARM_AAPCS_VFP(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)"}, + {"_Z15RetCC_ARM_AAPCSjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateE", "RetCC_ARM_AAPCS(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)"}, + {"_Z12CC_ARM_AAPCSjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateE", "CC_ARM_AAPCS(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)"}, + {"_Z14RetCC_ARM_APCSjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateE", "RetCC_ARM_APCS(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)"}, + {"_Z11CC_ARM_APCSjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateE", "CC_ARM_APCS(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)"}, + {"_ZN4llvm13f64AssignAPCSERjRNS_3MVTES2_RNS_11CCValAssign7LocInfoERNS_7CCStateEb", "llvm::f64AssignAPCS(unsigned int&, llvm::MVT&, llvm::MVT&, llvm::CCValAssign::LocInfo&, llvm::CCState&, bool)"}, + {"_ZN4llvm12f64RetAssignERjRNS_3MVTES2_RNS_11CCValAssign7LocInfoERNS_7CCStateE", "llvm::f64RetAssign(unsigned int&, llvm::MVT&, llvm::MVT&, llvm::CCValAssign::LocInfo&, llvm::CCState&)"}, + {"_Z19CC_ARM_AAPCS_CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateE", "CC_ARM_AAPCS_Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)"}, + {"_ZN4llvm14f64AssignAAPCSERjRNS_3MVTES2_RNS_11CCValAssign7LocInfoERNS_7CCStateEb", "llvm::f64AssignAAPCS(unsigned int&, llvm::MVT&, llvm::MVT&, llvm::CCValAssign::LocInfo&, llvm::CCState&, bool)"}, + {"_Z22RetCC_ARM_AAPCS_CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateE", "RetCC_ARM_AAPCS_Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)"}, + {"_ZN12_GLOBAL__N_111ARMFastISel15ProcessCallArgsERN4llvm15SmallVectorImplIPNS1_5ValueEEERNS2_IjEERNS2_INS1_3MVTEEERNS2_INS1_3ISD10ArgFlagsTyEEES8_NS1_11CallingConv2IDERj", "(anonymous namespace)::ARMFastISel::ProcessCallArgs(llvm::SmallVectorImpl&, llvm::SmallVectorImpl&, llvm::SmallVectorImpl&, llvm::SmallVectorImpl&, llvm::SmallVectorImpl&, llvm::CallingConv::ID, unsigned int&)"}, + {"_ZN12_GLOBAL__N_111ARMFastISel10FinishCallEN4llvm3MVTERNS1_15SmallVectorImplIjEEPKNS1_11InstructionENS1_11CallingConv2IDERj", "(anonymous namespace)::ARMFastISel::FinishCall(llvm::MVT, llvm::SmallVectorImpl&, llvm::Instruction const*, llvm::CallingConv::ID, unsigned int&)"}, + {"_ZN12_GLOBAL__N_111ARMFastISel12ARMEmitStoreEN4llvm3EVTEjRNS_7AddressE", "(anonymous namespace)::ARMFastISel::ARMEmitStore(llvm::EVT, unsigned int, (anonymous namespace)::Address&)"}, + {"_ZN12_GLOBAL__N_111ARMFastISel18ARMSimplifyAddressERNS_7AddressEN4llvm3EVTE", "(anonymous namespace)::ARMFastISel::ARMSimplifyAddress((anonymous namespace)::Address&, llvm::EVT)"}, + {"_ZN12_GLOBAL__N_111ARMFastISel20AddLoadStoreOperandsEN4llvm3EVTERNS_7AddressERKNS1_19MachineInstrBuilderE", "(anonymous namespace)::ARMFastISel::AddLoadStoreOperands(llvm::EVT, (anonymous namespace)::Address&, llvm::MachineInstrBuilder const&)"}, + {"_ZN12_GLOBAL__N_111ARMFastISel14ARMEmitLibcallEPKN4llvm11InstructionENS1_5RTLIB7LibcallE", "(anonymous namespace)::ARMFastISel::ARMEmitLibcall(llvm::Instruction const*, llvm::RTLIB::Libcall)"}, + {"_ZN12_GLOBAL__N_111ARMFastISel17ARMComputeAddressEPKN4llvm5ValueERNS_7AddressE", "(anonymous namespace)::ARMFastISel::ARMComputeAddress(llvm::Value const*, (anonymous namespace)::Address&)"}, + {"_ZN4llvm8FastISel13TryToFoldLoadEPNS_12MachineInstrEjPKNS_8LoadInstE", "llvm::FastISel::TryToFoldLoad(llvm::MachineInstr*, unsigned int, llvm::LoadInst const*)"}, + {"_ZN4llvm23SmallVectorTemplateBaseINS_3ISD10ArgFlagsTyELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN4llvm23SmallVectorTemplateBaseINS_3MVTELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZNK4llvm16ARMFrameLowering5hasFPERKNS_15MachineFunctionE", "llvm::ARMFrameLowering::hasFP(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm16ARMFrameLowering20hasReservedCallFrameERKNS_15MachineFunctionE", "llvm::ARMFrameLowering::hasReservedCallFrame(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm16ARMFrameLowering27canSimplifyCallFramePseudosERKNS_15MachineFunctionE", "llvm::ARMFrameLowering::canSimplifyCallFramePseudos(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm16ARMFrameLowering12emitPrologueERNS_15MachineFunctionE", "llvm::ARMFrameLowering::emitPrologue(llvm::MachineFunction&) const"}, + {"_ZNK4llvm16ARMFrameLowering12emitEpilogueERNS_15MachineFunctionERNS_17MachineBasicBlockE", "llvm::ARMFrameLowering::emitEpilogue(llvm::MachineFunction&, llvm::MachineBasicBlock&) const"}, + {"_ZNK4llvm16ARMFrameLowering22getFrameIndexReferenceERKNS_15MachineFunctionEiRj", "llvm::ARMFrameLowering::getFrameIndexReference(llvm::MachineFunction const&, int, unsigned int&) const"}, + {"_ZNK4llvm16ARMFrameLowering26ResolveFrameIndexReferenceERKNS_15MachineFunctionEiRji", "llvm::ARMFrameLowering::ResolveFrameIndexReference(llvm::MachineFunction const&, int, unsigned int&, int) const"}, + {"_ZNK4llvm16ARMFrameLowering19getFrameIndexOffsetERKNS_15MachineFunctionEi", "llvm::ARMFrameLowering::getFrameIndexOffset(llvm::MachineFunction const&, int) const"}, + {"_ZNK4llvm16ARMFrameLowering12emitPushInstERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEERKSt6vectorINS_15CalleeSavedInfoESaIS7_EEjjbPFbjbE", "llvm::ARMFrameLowering::emitPushInst(llvm::MachineBasicBlock&, llvm::ilist_iterator, std::vector> const&, unsigned int, unsigned int, bool, bool (*)(unsigned int, bool)) const"}, + {"_ZNK4llvm16ARMFrameLowering11emitPopInstERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEERKSt6vectorINS_15CalleeSavedInfoESaIS7_EEjjbbPFbjbE", "llvm::ARMFrameLowering::emitPopInst(llvm::MachineBasicBlock&, llvm::ilist_iterator, std::vector> const&, unsigned int, unsigned int, bool, bool, bool (*)(unsigned int, bool)) const"}, + {"_ZNK4llvm16ARMFrameLowering25spillCalleeSavedRegistersERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEERKSt6vectorINS_15CalleeSavedInfoESaIS7_EEPKNS_18TargetRegisterInfoE", "llvm::ARMFrameLowering::spillCalleeSavedRegisters(llvm::MachineBasicBlock&, llvm::ilist_iterator, std::vector> const&, llvm::TargetRegisterInfo const*) const"}, + {"_ZN4llvm18isARMArea1RegisterEjb", "llvm::isARMArea1Register(unsigned int, bool)"}, + {"_ZN4llvm18isARMArea2RegisterEjb", "llvm::isARMArea2Register(unsigned int, bool)"}, + {"_ZN4llvm18isARMArea3RegisterEjb", "llvm::isARMArea3Register(unsigned int, bool)"}, + {"_ZNK4llvm16ARMFrameLowering27restoreCalleeSavedRegistersERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEERKSt6vectorINS_15CalleeSavedInfoESaIS7_EEPKNS_18TargetRegisterInfoE", "llvm::ARMFrameLowering::restoreCalleeSavedRegisters(llvm::MachineBasicBlock&, llvm::ilist_iterator, std::vector> const&, llvm::TargetRegisterInfo const*) const"}, + {"_ZNK4llvm16ARMFrameLowering36processFunctionBeforeCalleeSavedScanERNS_15MachineFunctionEPNS_12RegScavengerE", "llvm::ARMFrameLowering::processFunctionBeforeCalleeSavedScan(llvm::MachineFunction&, llvm::RegScavenger*) const"}, + + // {"_ZSt6__findIPjjET_S1_S1_RKT0_St26random_access_iterator_tag", + // "unsigned int* std::__find(unsigned int*, unsigned int*, unsigned int const&, std::random_access_iterator_tag)"}, + // got error + + {"_ZNSt6vectorIN4llvm16MachineFrameInfo11StackObjectESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::MachineFrameInfo::StackObject const&)"}, + {"_ZN4llvm24createARMGlobalMergePassEPKNS_14TargetLoweringE", "llvm::createARMGlobalMergePass(llvm::TargetLowering const*)"}, + {"_ZN12_GLOBAL__N_114ARMGlobalMergeD1Ev", "(anonymous namespace)::ARMGlobalMerge::~ARMGlobalMerge()"}, + {"_ZN12_GLOBAL__N_114ARMGlobalMergeD0Ev", "(anonymous namespace)::ARMGlobalMerge::~ARMGlobalMerge()"}, + {"_ZNK12_GLOBAL__N_114ARMGlobalMerge11getPassNameEv", "(anonymous namespace)::ARMGlobalMerge::getPassName() const"}, + {"_ZNK12_GLOBAL__N_114ARMGlobalMerge16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::ARMGlobalMerge::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_114ARMGlobalMerge16doInitializationERN4llvm6ModuleE", "(anonymous namespace)::ARMGlobalMerge::doInitialization(llvm::Module&)"}, + {"_ZN12_GLOBAL__N_114ARMGlobalMerge13runOnFunctionERN4llvm8FunctionE", "(anonymous namespace)::ARMGlobalMerge::runOnFunction(llvm::Function&)"}, + {"_ZNK12_GLOBAL__N_114ARMGlobalMerge7doMergeERN4llvm15SmallVectorImplIPNS1_14GlobalVariableEEERNS1_6ModuleEb", "(anonymous namespace)::ARMGlobalMerge::doMerge(llvm::SmallVectorImpl&, llvm::Module&, bool) const"}, + + // {"_ZSt21__inplace_stable_sortIPPN4llvm14GlobalVariableEN12_GLOBAL__N_114ARMGlobalMerge9GlobalCmpEEvT_S7_T0_", + // "void std::__inplace_stable_sort(llvm::GlobalVariable**, llvm::GlobalVariable**, (anonymous namespace)::ARMGlobalMerge::GlobalCmp)"}, + // got error + + + // {"_ZSt22__stable_sort_adaptiveIPPN4llvm14GlobalVariableES3_lN12_GLOBAL__N_114ARMGlobalMerge9GlobalCmpEEvT_S7_T0_T1_T2_", + // "void std::__stable_sort_adaptive(llvm::GlobalVariable**, llvm::GlobalVariable**, llvm::GlobalVariable**, long, (anonymous namespace)::ARMGlobalMerge::GlobalCmp)"}, + // got error + + + // {"_ZSt24__merge_sort_with_bufferIPPN4llvm14GlobalVariableES3_N12_GLOBAL__N_114ARMGlobalMerge9GlobalCmpEEvT_S7_T0_T1_", + // "void std::__merge_sort_with_buffer(llvm::GlobalVariable**, llvm::GlobalVariable**, llvm::GlobalVariable**, (anonymous namespace)::ARMGlobalMerge::GlobalCmp)"}, + // got error + + + // {"_ZSt16__merge_adaptiveIPPN4llvm14GlobalVariableElS3_N12_GLOBAL__N_114ARMGlobalMerge9GlobalCmpEEvT_S7_S7_T0_S8_T1_S8_T2_", + // "void std::__merge_adaptive(llvm::GlobalVariable**, llvm::GlobalVariable**, llvm::GlobalVariable**, long, long, llvm::GlobalVariable**, long, (anonymous namespace)::ARMGlobalMerge::GlobalCmp)"}, + // got error + + + // {"_ZSt16__insertion_sortIPPN4llvm14GlobalVariableEN12_GLOBAL__N_114ARMGlobalMerge9GlobalCmpEEvT_S7_T0_", + // "void std::__insertion_sort(llvm::GlobalVariable**, llvm::GlobalVariable**, (anonymous namespace)::ARMGlobalMerge::GlobalCmp)"}, + // got error + + + // {"_ZSt22__merge_without_bufferIPPN4llvm14GlobalVariableElN12_GLOBAL__N_114ARMGlobalMerge9GlobalCmpEEvT_S7_S7_T0_S8_T1_", + // "void std::__merge_without_buffer(llvm::GlobalVariable**, llvm::GlobalVariable**, llvm::GlobalVariable**, long, long, (anonymous namespace)::ARMGlobalMerge::GlobalCmp)"}, + // got error + + + // {"_ZSt8__rotateIPPN4llvm14GlobalVariableEEvT_S4_S4_St26random_access_iterator_tag", + // "void std::__rotate(llvm::GlobalVariable**, llvm::GlobalVariable**, llvm::GlobalVariable**, std::random_access_iterator_tag)"}, + // got error + + {"_ZN4llvm19ARMHazardRecognizer13getHazardTypeEPNS_5SUnitEi", "llvm::ARMHazardRecognizer::getHazardType(llvm::SUnit*, int)"}, + {"_ZN4llvm19ARMHazardRecognizer5ResetEv", "llvm::ARMHazardRecognizer::Reset()"}, + {"_ZN4llvm19ARMHazardRecognizer15EmitInstructionEPNS_5SUnitE", "llvm::ARMHazardRecognizer::EmitInstruction(llvm::SUnit*)"}, + {"_ZN4llvm19ARMHazardRecognizer12AdvanceCycleEv", "llvm::ARMHazardRecognizer::AdvanceCycle()"}, + {"_ZN4llvm19ARMHazardRecognizer11RecedeCycleEv", "llvm::ARMHazardRecognizer::RecedeCycle()"}, + {"_ZN4llvm19ARMHazardRecognizerD1Ev", "llvm::ARMHazardRecognizer::~ARMHazardRecognizer()"}, + {"_ZN4llvm19ARMHazardRecognizerD0Ev", "llvm::ARMHazardRecognizer::~ARMHazardRecognizer()"}, + {"_ZN4llvm16createARMISelDagERNS_20ARMBaseTargetMachineENS_10CodeGenOpt5LevelE", "llvm::createARMISelDag(llvm::ARMBaseTargetMachine&, llvm::CodeGenOpt::Level)"}, + {"_ZN12_GLOBAL__N_115ARMDAGToDAGISelD1Ev", "(anonymous namespace)::ARMDAGToDAGISel::~ARMDAGToDAGISel()"}, + {"_ZN12_GLOBAL__N_115ARMDAGToDAGISelD0Ev", "(anonymous namespace)::ARMDAGToDAGISel::~ARMDAGToDAGISel()"}, + {"_ZNK12_GLOBAL__N_115ARMDAGToDAGISel11getPassNameEv", "(anonymous namespace)::ARMDAGToDAGISel::getPassName() const"}, + {"_ZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeE", "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)"}, + {"_ZN12_GLOBAL__N_115ARMDAGToDAGISel28SelectInlineAsmMemoryOperandERKN4llvm7SDValueEcRSt6vectorIS2_SaIS2_EE", "(anonymous namespace)::ARMDAGToDAGISel::SelectInlineAsmMemoryOperand(llvm::SDValue const&, char, std::vector>&)"}, + {"_ZNK12_GLOBAL__N_115ARMDAGToDAGISel21CheckPatternPredicateEj", "(anonymous namespace)::ARMDAGToDAGISel::CheckPatternPredicate(unsigned int) const"}, + {"_ZNK12_GLOBAL__N_115ARMDAGToDAGISel18CheckNodePredicateEPN4llvm6SDNodeEj", "(anonymous namespace)::ARMDAGToDAGISel::CheckNodePredicate(llvm::SDNode*, unsigned int) const"}, + {"_ZN12_GLOBAL__N_115ARMDAGToDAGISel19CheckComplexPatternEPN4llvm6SDNodeES3_NS1_7SDValueEjRNS1_15SmallVectorImplISt4pairIS4_S3_EEE", "(anonymous namespace)::ARMDAGToDAGISel::CheckComplexPattern(llvm::SDNode*, llvm::SDNode*, llvm::SDValue, unsigned int, llvm::SmallVectorImpl>&)"}, + {"_ZN12_GLOBAL__N_115ARMDAGToDAGISel14RunSDNodeXFormEN4llvm7SDValueEj", "(anonymous namespace)::ARMDAGToDAGISel::RunSDNodeXForm(llvm::SDValue, unsigned int)"}, + {"_ZN12_GLOBAL__N_115ARMDAGToDAGISel23SelectShifterOperandRegEN4llvm7SDValueERS2_S3_S3_", "(anonymous namespace)::ARMDAGToDAGISel::SelectShifterOperandReg(llvm::SDValue, llvm::SDValue&, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN12_GLOBAL__N_115ARMDAGToDAGISel20SelectT2AddrModeImm8EN4llvm7SDValueERS2_S3_", "(anonymous namespace)::ARMDAGToDAGISel::SelectT2AddrModeImm8(llvm::SDValue, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN12_GLOBAL__N_115ARMDAGToDAGISel21SelectThumbAddrModeSPEN4llvm7SDValueERS2_S3_", "(anonymous namespace)::ARMDAGToDAGISel::SelectThumbAddrModeSP(llvm::SDValue, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN12_GLOBAL__N_115ARMDAGToDAGISel15SelectAddrMode6EPN4llvm6SDNodeENS1_7SDValueERS4_S5_", "(anonymous namespace)::ARMDAGToDAGISel::SelectAddrMode6(llvm::SDNode*, llvm::SDValue, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN12_GLOBAL__N_115ARMDAGToDAGISel21SelectAddrMode2OffsetEPN4llvm6SDNodeENS1_7SDValueERS4_S5_", "(anonymous namespace)::ARMDAGToDAGISel::SelectAddrMode2Offset(llvm::SDNode*, llvm::SDValue, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN12_GLOBAL__N_115ARMDAGToDAGISel21SelectAddrMode3OffsetEPN4llvm6SDNodeENS1_7SDValueERS4_S5_", "(anonymous namespace)::ARMDAGToDAGISel::SelectAddrMode3Offset(llvm::SDNode*, llvm::SDValue, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN12_GLOBAL__N_115ARMDAGToDAGISel26SelectT2AddrModeImm8OffsetEPN4llvm6SDNodeENS1_7SDValueERS4_", "(anonymous namespace)::ARMDAGToDAGISel::SelectT2AddrModeImm8Offset(llvm::SDNode*, llvm::SDValue, llvm::SDValue&)"}, + {"_ZN12_GLOBAL__N_115ARMDAGToDAGISel24SelectThumbAddrModeImm5SEN4llvm7SDValueEjRS2_S3_", "(anonymous namespace)::ARMDAGToDAGISel::SelectThumbAddrModeImm5S(llvm::SDValue, unsigned int, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN12_GLOBAL__N_115ARMDAGToDAGISel21SelectThumbAddrModeRIEN4llvm7SDValueERS2_S3_j", "(anonymous namespace)::ARMDAGToDAGISel::SelectThumbAddrModeRI(llvm::SDValue, llvm::SDValue&, llvm::SDValue&, unsigned int)"}, + {"_ZN4llvm6ARM_AM16decodeNEONModImmEjRj", "llvm::ARM_AM::decodeNEONModImm(unsigned int, unsigned int&)"}, + {"_ZNK12_GLOBAL__N_115ARMDAGToDAGISel18hasNoVMLxHazardUseEPN4llvm6SDNodeE", "(anonymous namespace)::ARMDAGToDAGISel::hasNoVMLxHazardUse(llvm::SDNode*) const"}, + {"_ZN4llvm6ARM_AM17isSOImmTwoPartValEj", "llvm::ARM_AM::isSOImmTwoPartVal(unsigned int)"}, + {"_ZN12_GLOBAL__N_115ARMDAGToDAGISel27SelectV6T2BitfieldExtractOpEPN4llvm6SDNodeEb", "(anonymous namespace)::ARMDAGToDAGISel::SelectV6T2BitfieldExtractOp(llvm::SDNode*, bool)"}, + {"_ZN12_GLOBAL__N_115ARMDAGToDAGISel12SelectVLDDupEPN4llvm6SDNodeEbjPj", "(anonymous namespace)::ARMDAGToDAGISel::SelectVLDDup(llvm::SDNode*, bool, unsigned int, unsigned int*)"}, + {"_ZN12_GLOBAL__N_115ARMDAGToDAGISel9SelectVLDEPN4llvm6SDNodeEbjPjS4_S4_", "(anonymous namespace)::ARMDAGToDAGISel::SelectVLD(llvm::SDNode*, bool, unsigned int, unsigned int*, unsigned int*, unsigned int*)"}, + {"_ZN12_GLOBAL__N_115ARMDAGToDAGISel15SelectVLDSTLaneEPN4llvm6SDNodeEbbjPjS4_", "(anonymous namespace)::ARMDAGToDAGISel::SelectVLDSTLane(llvm::SDNode*, bool, bool, unsigned int, unsigned int*, unsigned int*)"}, + {"_ZN12_GLOBAL__N_115ARMDAGToDAGISel9SelectVSTEPN4llvm6SDNodeEbjPjS4_S4_", "(anonymous namespace)::ARMDAGToDAGISel::SelectVST(llvm::SDNode*, bool, unsigned int, unsigned int*, unsigned int*, unsigned int*)"}, + {"_ZN12_GLOBAL__N_115ARMDAGToDAGISel10SelectVTBLEPN4llvm6SDNodeEbjj", "(anonymous namespace)::ARMDAGToDAGISel::SelectVTBL(llvm::SDNode*, bool, unsigned int, unsigned int)"}, + {"_ZN12_GLOBAL__N_115ARMDAGToDAGISel9QuadDRegsEN4llvm3EVTENS1_7SDValueES3_S3_S3_", "(anonymous namespace)::ARMDAGToDAGISel::QuadDRegs(llvm::EVT, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::SDValue)"}, + {"_ZN12_GLOBAL__N_115ARMDAGToDAGISel9QuadQRegsEN4llvm3EVTENS1_7SDValueES3_S3_S3_", "(anonymous namespace)::ARMDAGToDAGISel::QuadQRegs(llvm::EVT, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::SDValue)"}, + {"_ZN12_GLOBAL__N_115ARMDAGToDAGISel19SelectT2CMOVShiftOpEPN4llvm6SDNodeENS1_7SDValueES4_NS1_5ARMCC9CondCodesES4_S4_", "(anonymous namespace)::ARMDAGToDAGISel::SelectT2CMOVShiftOp(llvm::SDNode*, llvm::SDValue, llvm::SDValue, llvm::ARMCC::CondCodes, llvm::SDValue, llvm::SDValue)"}, + {"_ZN12_GLOBAL__N_115ARMDAGToDAGISel20SelectARMCMOVShiftOpEPN4llvm6SDNodeENS1_7SDValueES4_NS1_5ARMCC9CondCodesES4_S4_", "(anonymous namespace)::ARMDAGToDAGISel::SelectARMCMOVShiftOp(llvm::SDNode*, llvm::SDValue, llvm::SDValue, llvm::ARMCC::CondCodes, llvm::SDValue, llvm::SDValue)"}, + {"_ZN12_GLOBAL__N_115ARMDAGToDAGISel17SelectT2CMOVImmOpEPN4llvm6SDNodeENS1_7SDValueES4_NS1_5ARMCC9CondCodesES4_S4_", "(anonymous namespace)::ARMDAGToDAGISel::SelectT2CMOVImmOp(llvm::SDNode*, llvm::SDValue, llvm::SDValue, llvm::ARMCC::CondCodes, llvm::SDValue, llvm::SDValue)"}, + {"_ZN12_GLOBAL__N_115ARMDAGToDAGISel18SelectARMCMOVImmOpEPN4llvm6SDNodeENS1_7SDValueES4_NS1_5ARMCC9CondCodesES4_S4_", "(anonymous namespace)::ARMDAGToDAGISel::SelectARMCMOVImmOp(llvm::SDNode*, llvm::SDValue, llvm::SDValue, llvm::ARMCC::CondCodes, llvm::SDValue, llvm::SDValue)"}, + {"_ZN4llvm16SelectionDAGISel21EmitFunctionEntryCodeEv", "llvm::SelectionDAGISel::EmitFunctionEntryCode()"}, + {"_ZN4llvm16SelectionDAGISel17PreprocessISelDAGEv", "llvm::SelectionDAGISel::PreprocessISelDAG()"}, + {"_ZN4llvm16SelectionDAGISel18PostprocessISelDAGEv", "llvm::SelectionDAGISel::PostprocessISelDAG()"}, + {"_ZN4llvm15SmallVectorImplISt4pairINS_7SDValueEPNS_6SDNodeEEE6resizeEj", "llvm::SmallVectorImpl>::resize(unsigned int)"}, + {"_ZN4llvm16SelectionDAGISel11ISelUpdaterD1Ev", "llvm::SelectionDAGISel::ISelUpdater::~ISelUpdater()"}, + {"_ZN4llvm16SelectionDAGISel11ISelUpdaterD0Ev", "llvm::SelectionDAGISel::ISelUpdater::~ISelUpdater()"}, + {"_ZN4llvm16SelectionDAGISel11ISelUpdater11NodeDeletedEPNS_6SDNodeES3_", "llvm::SelectionDAGISel::ISelUpdater::NodeDeleted(llvm::SDNode*, llvm::SDNode*)"}, + {"_ZN4llvm16SelectionDAGISel11ISelUpdater11NodeUpdatedEPNS_6SDNodeE", "llvm::SelectionDAGISel::ISelUpdater::NodeUpdated(llvm::SDNode*)"}, + {"_ZN4llvm17ARMTargetLowering14addTypeForNEONENS_3EVTES1_S1_", "llvm::ARMTargetLowering::addTypeForNEON(llvm::EVT, llvm::EVT, llvm::EVT)"}, + {"_ZN4llvm17ARMTargetLowering16addDRTypeForNEONENS_3EVTE", "llvm::ARMTargetLowering::addDRTypeForNEON(llvm::EVT)"}, + {"_ZN4llvm17ARMTargetLowering16addQRTypeForNEONENS_3EVTE", "llvm::ARMTargetLowering::addQRTypeForNEON(llvm::EVT)"}, + {"_ZN4llvm17ARMTargetLoweringC1ERNS_13TargetMachineE", "llvm::ARMTargetLowering::ARMTargetLowering(llvm::TargetMachine&)"}, + {"_ZN4llvm17ARMTargetLoweringC2ERNS_13TargetMachineE", "llvm::ARMTargetLowering::ARMTargetLowering(llvm::TargetMachine&)"}, + {"_ZNK4llvm17ARMTargetLowering23findRepresentativeClassENS_3EVTE", "llvm::ARMTargetLowering::findRepresentativeClass(llvm::EVT) const"}, + {"_ZNK4llvm17ARMTargetLowering17getTargetNodeNameEj", "llvm::ARMTargetLowering::getTargetNodeName(unsigned int) const"}, + {"_ZNK4llvm17ARMTargetLowering14getRegClassForENS_3EVTE", "llvm::ARMTargetLowering::getRegClassFor(llvm::EVT) const"}, + {"_ZNK4llvm17ARMTargetLowering14createFastISelERNS_20FunctionLoweringInfoE", "llvm::ARMTargetLowering::createFastISel(llvm::FunctionLoweringInfo&) const"}, + {"_ZNK4llvm17ARMTargetLowering20getFunctionAlignmentEPKNS_8FunctionE", "llvm::ARMTargetLowering::getFunctionAlignment(llvm::Function const*) const"}, + {"_ZNK4llvm17ARMTargetLowering22getMaximalGlobalOffsetEv", "llvm::ARMTargetLowering::getMaximalGlobalOffset() const"}, + {"_ZNK4llvm17ARMTargetLowering23getSchedulingPreferenceEPNS_6SDNodeE", "llvm::ARMTargetLowering::getSchedulingPreference(llvm::SDNode*) const"}, + {"_ZNK4llvm17ARMTargetLowering19getRegPressureLimitEPKNS_19TargetRegisterClassERNS_15MachineFunctionE", "llvm::ARMTargetLowering::getRegPressureLimit(llvm::TargetRegisterClass const*, llvm::MachineFunction&) const"}, + {"_ZNK4llvm17ARMTargetLowering17CCAssignFnForNodeENS_11CallingConv2IDEbb", "llvm::ARMTargetLowering::CCAssignFnForNode(llvm::CallingConv::ID, bool, bool) const"}, + {"_Z18RetFastCC_ARM_APCSjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateE", "RetFastCC_ARM_APCS(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)"}, + {"_Z15FastCC_ARM_APCSjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateE", "FastCC_ARM_APCS(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)"}, + {"_Z19RetCC_ARM_AAPCS_VFPjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateE", "RetCC_ARM_AAPCS_VFP(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)"}, + {"_Z16CC_ARM_AAPCS_VFPjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateE", "CC_ARM_AAPCS_VFP(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)"}, + {"_Z14RetCC_ARM_APCSjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateE", "RetCC_ARM_APCS(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)"}, + {"_Z11CC_ARM_APCSjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateE", "CC_ARM_APCS(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)"}, + {"_Z15RetCC_ARM_AAPCSjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateE", "RetCC_ARM_AAPCS(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)"}, + {"_Z12CC_ARM_AAPCSjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateE", "CC_ARM_AAPCS(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)"}, + {"_ZNK4llvm17ARMTargetLowering15LowerCallResultENS_7SDValueES1_NS_11CallingConv2IDEbRKNS_15SmallVectorImplINS_3ISD8InputArgEEENS_8DebugLocERNS_12SelectionDAGERNS4_IS1_EE", "llvm::ARMTargetLowering::LowerCallResult(llvm::SDValue, llvm::SDValue, llvm::CallingConv::ID, bool, llvm::SmallVectorImpl const&, llvm::DebugLoc, llvm::SelectionDAG&, llvm::SmallVectorImpl&) const"}, + {"_ZNK4llvm17ARMTargetLowering16LowerMemOpCallToENS_7SDValueES1_S1_NS_8DebugLocERNS_12SelectionDAGERKNS_11CCValAssignENS_3ISD10ArgFlagsTyE", "llvm::ARMTargetLowering::LowerMemOpCallTo(llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::DebugLoc, llvm::SelectionDAG&, llvm::CCValAssign const&, llvm::ISD::ArgFlagsTy) const"}, + + // {"_ZNK4llvm17ARMTargetLowering16PassF64ArgInRegsENS_8DebugLocERNS_12SelectionDAGENS_7SDValueERS4_RNS_11SmallVectorISt4pairIjS4_ELj8EEERNS_11CCValAssignESC_S5_RNS6_IS4_Lj8EEENS_3ISD10ArgFlagsTyE", + // "llvm::ARMTargetLowering::PassF64ArgInRegs(llvm::DebugLoc, llvm::SelectionDAG&, llvm::SDValue, llvm::SDValue&, llvm::SmallVector, 8u>&, llvm::CCValAssign&, llvm::CCValAssign&, llvm::SDValue&, llvm::SmallVector&, llvm::ISD::ArgFlagsTy) const"}, + // "llvm::ARMTargetLowering::PassF64ArgInRegs(llvm::DebugLoc, llvm::SelectionDAG&, llvm::SDValue, llvm::SDValue&, llvm::SmallVector, 8>&, llvm::CCValAssign&, llvm::CCValAssign&, llvm::SDValue&, llvm::SmallVector&, llvm::ISD::ArgFlagsTy) const" was returned + + {"_ZNK4llvm17ARMTargetLowering9LowerCallENS_7SDValueES1_NS_11CallingConv2IDEbRbRKNS_15SmallVectorImplINS_3ISD9OutputArgEEERKNS5_IS1_EERKNS5_INS6_8InputArgEEENS_8DebugLocERNS_12SelectionDAGERSB_", "llvm::ARMTargetLowering::LowerCall(llvm::SDValue, llvm::SDValue, llvm::CallingConv::ID, bool, bool&, llvm::SmallVectorImpl const&, llvm::SmallVectorImpl const&, llvm::SmallVectorImpl const&, llvm::DebugLoc, llvm::SelectionDAG&, llvm::SmallVectorImpl&) const"}, + {"_ZNK4llvm17ARMTargetLowering33IsEligibleForTailCallOptimizationENS_7SDValueENS_11CallingConv2IDEbbbRKNS_15SmallVectorImplINS_3ISD9OutputArgEEERKNS4_IS1_EERKNS4_INS5_8InputArgEEERNS_12SelectionDAGE", "llvm::ARMTargetLowering::IsEligibleForTailCallOptimization(llvm::SDValue, llvm::CallingConv::ID, bool, bool, bool, llvm::SmallVectorImpl const&, llvm::SmallVectorImpl const&, llvm::SmallVectorImpl const&, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17ARMTargetLowering11LowerReturnENS_7SDValueENS_11CallingConv2IDEbRKNS_15SmallVectorImplINS_3ISD9OutputArgEEERKNS4_IS1_EENS_8DebugLocERNS_12SelectionDAGE", "llvm::ARMTargetLowering::LowerReturn(llvm::SDValue, llvm::CallingConv::ID, bool, llvm::SmallVectorImpl const&, llvm::SmallVectorImpl const&, llvm::DebugLoc, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17ARMTargetLowering18isUsedByReturnOnlyEPNS_6SDNodeE", "llvm::ARMTargetLowering::isUsedByReturnOnly(llvm::SDNode*) const"}, + {"_ZNK4llvm17ARMTargetLowering20getJumpTableEncodingEv", "llvm::ARMTargetLowering::getJumpTableEncoding() const"}, + {"_ZNK4llvm17ARMTargetLowering17LowerBlockAddressENS_7SDValueERNS_12SelectionDAGE", "llvm::ARMTargetLowering::LowerBlockAddress(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17ARMTargetLowering29LowerToTLSGeneralDynamicModelEPNS_19GlobalAddressSDNodeERNS_12SelectionDAGE", "llvm::ARMTargetLowering::LowerToTLSGeneralDynamicModel(llvm::GlobalAddressSDNode*, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17ARMTargetLowering20LowerToTLSExecModelsEPNS_19GlobalAddressSDNodeERNS_12SelectionDAGE", "llvm::ARMTargetLowering::LowerToTLSExecModels(llvm::GlobalAddressSDNode*, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17ARMTargetLowering21LowerGlobalTLSAddressENS_7SDValueERNS_12SelectionDAGE", "llvm::ARMTargetLowering::LowerGlobalTLSAddress(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17ARMTargetLowering21LowerGlobalAddressELFENS_7SDValueERNS_12SelectionDAGE", "llvm::ARMTargetLowering::LowerGlobalAddressELF(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17ARMTargetLowering24LowerGlobalAddressDarwinENS_7SDValueERNS_12SelectionDAGE", "llvm::ARMTargetLowering::LowerGlobalAddressDarwin(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17ARMTargetLowering24LowerGLOBAL_OFFSET_TABLEENS_7SDValueERNS_12SelectionDAGE", "llvm::ARMTargetLowering::LowerGLOBAL_OFFSET_TABLE(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17ARMTargetLowering26LowerEH_SJLJ_DISPATCHSETUPENS_7SDValueERNS_12SelectionDAGE", "llvm::ARMTargetLowering::LowerEH_SJLJ_DISPATCHSETUP(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17ARMTargetLowering19LowerEH_SJLJ_SETJMPENS_7SDValueERNS_12SelectionDAGE", "llvm::ARMTargetLowering::LowerEH_SJLJ_SETJMP(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17ARMTargetLowering20LowerEH_SJLJ_LONGJMPENS_7SDValueERNS_12SelectionDAGE", "llvm::ARMTargetLowering::LowerEH_SJLJ_LONGJMP(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17ARMTargetLowering23LowerINTRINSIC_WO_CHAINENS_7SDValueERNS_12SelectionDAGEPKNS_12ARMSubtargetE", "llvm::ARMTargetLowering::LowerINTRINSIC_WO_CHAIN(llvm::SDValue, llvm::SelectionDAG&, llvm::ARMSubtarget const*) const"}, + {"_ZNK4llvm17ARMTargetLowering20GetF64FormalArgumentERNS_11CCValAssignES2_RNS_7SDValueERNS_12SelectionDAGENS_8DebugLocE", "llvm::ARMTargetLowering::GetF64FormalArgument(llvm::CCValAssign&, llvm::CCValAssign&, llvm::SDValue&, llvm::SelectionDAG&, llvm::DebugLoc) const"}, + {"_ZNK4llvm17ARMTargetLowering20LowerFormalArgumentsENS_7SDValueENS_11CallingConv2IDEbRKNS_15SmallVectorImplINS_3ISD8InputArgEEENS_8DebugLocERNS_12SelectionDAGERNS4_IS1_EE", "llvm::ARMTargetLowering::LowerFormalArguments(llvm::SDValue, llvm::CallingConv::ID, bool, llvm::SmallVectorImpl const&, llvm::DebugLoc, llvm::SelectionDAG&, llvm::SmallVectorImpl&) const"}, + {"_ZNK4llvm17ARMTargetLowering9getARMCmpENS_7SDValueES1_NS_3ISD8CondCodeERS1_RNS_12SelectionDAGENS_8DebugLocE", "llvm::ARMTargetLowering::getARMCmp(llvm::SDValue, llvm::SDValue, llvm::ISD::CondCode, llvm::SDValue&, llvm::SelectionDAG&, llvm::DebugLoc) const"}, + {"_ZNK4llvm17ARMTargetLowering9getVFPCmpENS_7SDValueES1_RNS_12SelectionDAGENS_8DebugLocE", "llvm::ARMTargetLowering::getVFPCmp(llvm::SDValue, llvm::SDValue, llvm::SelectionDAG&, llvm::DebugLoc) const"}, + {"_ZNK4llvm17ARMTargetLowering11LowerSELECTENS_7SDValueERNS_12SelectionDAGE", "llvm::ARMTargetLowering::LowerSELECT(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17ARMTargetLowering14LowerSELECT_CCENS_7SDValueERNS_12SelectionDAGE", "llvm::ARMTargetLowering::LowerSELECT_CC(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17ARMTargetLowering17OptimizeVFPBrcondENS_7SDValueERNS_12SelectionDAGE", "llvm::ARMTargetLowering::OptimizeVFPBrcond(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_Z14canChangeToIntN4llvm7SDValueERbPKNS_12ARMSubtargetE", "canChangeToInt(llvm::SDValue, bool&, llvm::ARMSubtarget const*)"}, + {"_Z15bitcastf32Toi32N4llvm7SDValueERNS_12SelectionDAGE", "bitcastf32Toi32(llvm::SDValue, llvm::SelectionDAG&)"}, + {"_Z14expandf64Toi32N4llvm7SDValueERNS_12SelectionDAGERS0_S3_", "expandf64Toi32(llvm::SDValue, llvm::SelectionDAG&, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZNK4llvm17ARMTargetLowering10LowerBR_CCENS_7SDValueERNS_12SelectionDAGE", "llvm::ARMTargetLowering::LowerBR_CC(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17ARMTargetLowering10LowerBR_JTENS_7SDValueERNS_12SelectionDAGE", "llvm::ARMTargetLowering::LowerBR_JT(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17ARMTargetLowering14LowerFCOPYSIGNENS_7SDValueERNS_12SelectionDAGE", "llvm::ARMTargetLowering::LowerFCOPYSIGN(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17ARMTargetLowering15LowerRETURNADDRENS_7SDValueERNS_12SelectionDAGE", "llvm::ARMTargetLowering::LowerRETURNADDR(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17ARMTargetLowering14LowerFRAMEADDRENS_7SDValueERNS_12SelectionDAGE", "llvm::ARMTargetLowering::LowerFRAMEADDR(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17ARMTargetLowering20LowerShiftRightPartsENS_7SDValueERNS_12SelectionDAGE", "llvm::ARMTargetLowering::LowerShiftRightParts(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17ARMTargetLowering19LowerShiftLeftPartsENS_7SDValueERNS_12SelectionDAGE", "llvm::ARMTargetLowering::LowerShiftLeftParts(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17ARMTargetLowering16LowerFLT_ROUNDS_ENS_7SDValueERNS_12SelectionDAGE", "llvm::ARMTargetLowering::LowerFLT_ROUNDS_(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17ARMTargetLowering17LowerBUILD_VECTORENS_7SDValueERNS_12SelectionDAGEPKNS_12ARMSubtargetE", "llvm::ARMTargetLowering::LowerBUILD_VECTOR(llvm::SDValue, llvm::SelectionDAG&, llvm::ARMSubtarget const*) const"}, + {"_Z17isNEONModifiedImmyyjRN4llvm12SelectionDAGERNS_3EVTEbNS_14NEONModImmTypeE", "isNEONModifiedImm(unsigned long long, unsigned long long, unsigned int, llvm::SelectionDAG&, llvm::EVT&, bool, llvm::NEONModImmType)"}, + {"_ZNK4llvm17ARMTargetLowering18ReconstructShuffleENS_7SDValueERNS_12SelectionDAGE", "llvm::ARMTargetLowering::ReconstructShuffle(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17ARMTargetLowering18isShuffleMaskLegalERKNS_15SmallVectorImplIiEENS_3EVTE", "llvm::ARMTargetLowering::isShuffleMaskLegal(llvm::SmallVectorImpl const&, llvm::EVT) const"}, + {"_Z10isVREVMaskRKN4llvm15SmallVectorImplIiEENS_3EVTEj", "isVREVMask(llvm::SmallVectorImpl const&, llvm::EVT, unsigned int)"}, + {"_Z10isVTRNMaskRKN4llvm15SmallVectorImplIiEENS_3EVTERj", "isVTRNMask(llvm::SmallVectorImpl const&, llvm::EVT, unsigned int&)"}, + {"_Z10isVUZPMaskRKN4llvm15SmallVectorImplIiEENS_3EVTERj", "isVUZPMask(llvm::SmallVectorImpl const&, llvm::EVT, unsigned int&)"}, + {"_Z10isVZIPMaskRKN4llvm15SmallVectorImplIiEENS_3EVTERj", "isVZIPMask(llvm::SmallVectorImpl const&, llvm::EVT, unsigned int&)"}, + {"_Z19isVTRN_v_undef_MaskRKN4llvm15SmallVectorImplIiEENS_3EVTERj", "isVTRN_v_undef_Mask(llvm::SmallVectorImpl const&, llvm::EVT, unsigned int&)"}, + {"_Z19isVUZP_v_undef_MaskRKN4llvm15SmallVectorImplIiEENS_3EVTERj", "isVUZP_v_undef_Mask(llvm::SmallVectorImpl const&, llvm::EVT, unsigned int&)"}, + {"_Z19isVZIP_v_undef_MaskRKN4llvm15SmallVectorImplIiEENS_3EVTERj", "isVZIP_v_undef_Mask(llvm::SmallVectorImpl const&, llvm::EVT, unsigned int&)"}, + {"_ZNK4llvm17ARMTargetLowering14LowerOperationENS_7SDValueERNS_12SelectionDAGE", "llvm::ARMTargetLowering::LowerOperation(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_Z13ExpandBITCASTPN4llvm6SDNodeERNS_12SelectionDAGE", "ExpandBITCAST(llvm::SDNode*, llvm::SelectionDAG&)"}, + {"_ZNK4llvm17ARMTargetLowering18ReplaceNodeResultsEPNS_6SDNodeERNS_15SmallVectorImplINS_7SDValueEEERNS_12SelectionDAGE", "llvm::ARMTargetLowering::ReplaceNodeResults(llvm::SDNode*, llvm::SmallVectorImpl&, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17ARMTargetLowering17EmitAtomicCmpSwapEPNS_12MachineInstrEPNS_17MachineBasicBlockEj", "llvm::ARMTargetLowering::EmitAtomicCmpSwap(llvm::MachineInstr*, llvm::MachineBasicBlock*, unsigned int) const"}, + {"_ZNK4llvm17ARMTargetLowering16EmitAtomicBinaryEPNS_12MachineInstrEPNS_17MachineBasicBlockEjj", "llvm::ARMTargetLowering::EmitAtomicBinary(llvm::MachineInstr*, llvm::MachineBasicBlock*, unsigned int, unsigned int) const"}, + {"_ZNK4llvm17ARMTargetLowering27EmitInstrWithCustomInserterEPNS_12MachineInstrEPNS_17MachineBasicBlockE", "llvm::ARMTargetLowering::EmitInstrWithCustomInserter(llvm::MachineInstr*, llvm::MachineBasicBlock*) const"}, + {"_ZNK4llvm17ARMTargetLowering17PerformDAGCombineEPNS_6SDNodeERNS_14TargetLowering15DAGCombinerInfoE", "llvm::ARMTargetLowering::PerformDAGCombine(llvm::SDNode*, llvm::TargetLowering::DAGCombinerInfo&) const"}, + {"_Z21PerformVMOVDRRCombinePN4llvm6SDNodeERNS_12SelectionDAGE", "PerformVMOVDRRCombine(llvm::SDNode*, llvm::SelectionDAG&)"}, + {"_Z17CombineBaseUpdatePN4llvm6SDNodeERNS_14TargetLowering15DAGCombinerInfoE", "CombineBaseUpdate(llvm::SDNode*, llvm::TargetLowering::DAGCombinerInfo&)"}, + {"_ZNK4llvm17ARMTargetLowering33isDesirableToTransformToIntegerOpEjNS_3EVTE", "llvm::ARMTargetLowering::isDesirableToTransformToIntegerOp(unsigned int, llvm::EVT) const"}, + {"_ZNK4llvm17ARMTargetLowering29allowsUnalignedMemoryAccessesENS_3EVTE", "llvm::ARMTargetLowering::allowsUnalignedMemoryAccesses(llvm::EVT) const"}, + {"_ZNK4llvm17ARMTargetLowering29isLegalT2ScaledAddressingModeERKNS_14TargetLowering8AddrModeENS_3EVTE", "llvm::ARMTargetLowering::isLegalT2ScaledAddressingMode(llvm::TargetLowering::AddrMode const&, llvm::EVT) const"}, + {"_ZNK4llvm17ARMTargetLowering21isLegalAddressingModeERKNS_14TargetLowering8AddrModeEPKNS_4TypeE", "llvm::ARMTargetLowering::isLegalAddressingMode(llvm::TargetLowering::AddrMode const&, llvm::Type const*) const"}, + {"_ZNK4llvm17ARMTargetLowering20isLegalICmpImmediateEx", "llvm::ARMTargetLowering::isLegalICmpImmediate(long long) const"}, + {"_ZNK4llvm17ARMTargetLowering25getPreIndexedAddressPartsEPNS_6SDNodeERNS_7SDValueES4_RNS_3ISD14MemIndexedModeERNS_12SelectionDAGE", "llvm::ARMTargetLowering::getPreIndexedAddressParts(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&, llvm::ISD::MemIndexedMode&, llvm::SelectionDAG&) const"}, + {"_Z24getT2IndexedAddressPartsPN4llvm6SDNodeENS_3EVTEbRNS_7SDValueES4_RbRNS_12SelectionDAGE", "getT2IndexedAddressParts(llvm::SDNode*, llvm::EVT, bool, llvm::SDValue&, llvm::SDValue&, bool&, llvm::SelectionDAG&)"}, + {"_Z25getARMIndexedAddressPartsPN4llvm6SDNodeENS_3EVTEbRNS_7SDValueES4_RbRNS_12SelectionDAGE", "getARMIndexedAddressParts(llvm::SDNode*, llvm::EVT, bool, llvm::SDValue&, llvm::SDValue&, bool&, llvm::SelectionDAG&)"}, + {"_ZNK4llvm17ARMTargetLowering26getPostIndexedAddressPartsEPNS_6SDNodeES2_RNS_7SDValueES4_RNS_3ISD14MemIndexedModeERNS_12SelectionDAGE", "llvm::ARMTargetLowering::getPostIndexedAddressParts(llvm::SDNode*, llvm::SDNode*, llvm::SDValue&, llvm::SDValue&, llvm::ISD::MemIndexedMode&, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17ARMTargetLowering30computeMaskedBitsForTargetNodeENS_7SDValueERKNS_5APIntERS2_S5_RKNS_12SelectionDAGEj", "llvm::ARMTargetLowering::computeMaskedBitsForTargetNode(llvm::SDValue, llvm::APInt const&, llvm::APInt&, llvm::APInt&, llvm::SelectionDAG const&, unsigned int) const"}, + {"_ZNK4llvm17ARMTargetLowering15ExpandInlineAsmEPNS_8CallInstE", "llvm::ARMTargetLowering::ExpandInlineAsm(llvm::CallInst*) const"}, + {"_ZNK4llvm17ARMTargetLowering17getConstraintTypeERKSs", "llvm::ARMTargetLowering::getConstraintType(std::string const&) const"}, + {"_ZNK4llvm17ARMTargetLowering30getSingleConstraintMatchWeightERNS_14TargetLowering14AsmOperandInfoEPKc", "llvm::ARMTargetLowering::getSingleConstraintMatchWeight(llvm::TargetLowering::AsmOperandInfo&, char const*) const"}, + {"_ZNK4llvm17ARMTargetLowering28getRegForInlineAsmConstraintERKSsNS_3EVTE", "llvm::ARMTargetLowering::getRegForInlineAsmConstraint(std::string const&, llvm::EVT) const"}, + {"_ZNK4llvm17ARMTargetLowering33getRegClassForInlineAsmConstraintERKSsNS_3EVTE", "llvm::ARMTargetLowering::getRegClassForInlineAsmConstraint(std::string const&, llvm::EVT) const"}, + {"_ZNK4llvm17ARMTargetLowering28LowerAsmOperandForConstraintENS_7SDValueEcRSt6vectorIS1_SaIS1_EERNS_12SelectionDAGE", "llvm::ARMTargetLowering::LowerAsmOperandForConstraint(llvm::SDValue, char, std::vector>&, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm17ARMTargetLowering20isOffsetFoldingLegalEPKNS_19GlobalAddressSDNodeE", "llvm::ARMTargetLowering::isOffsetFoldingLegal(llvm::GlobalAddressSDNode const*) const"}, + {"_ZN4llvm3ARM12getVFPf32ImmERKNS_7APFloatE", "llvm::ARM::getVFPf32Imm(llvm::APFloat const&)"}, + {"_ZN4llvm3ARM12getVFPf64ImmERKNS_7APFloatE", "llvm::ARM::getVFPf64Imm(llvm::APFloat const&)"}, + {"_ZN4llvm3ARM22isBitFieldInvertedMaskEj", "llvm::ARM::isBitFieldInvertedMask(unsigned int)"}, + {"_ZNK4llvm17ARMTargetLowering12isFPImmLegalERKNS_7APFloatENS_3EVTE", "llvm::ARMTargetLowering::isFPImmLegal(llvm::APFloat const&, llvm::EVT) const"}, + {"_ZNK4llvm17ARMTargetLowering18getTgtMemIntrinsicERNS_14TargetLowering13IntrinsicInfoERKNS_8CallInstEj", "llvm::ARMTargetLowering::getTgtMemIntrinsic(llvm::TargetLowering::IntrinsicInfo&, llvm::CallInst const&, unsigned int) const"}, + {"_Z12getVShiftImmN4llvm7SDValueEjRx", "getVShiftImm(llvm::SDValue, unsigned int, long long&)"}, + {"_Z19combineSelectAndUsePN4llvm6SDNodeENS_7SDValueES2_RNS_14TargetLowering15DAGCombinerInfoE", "combineSelectAndUse(llvm::SDNode*, llvm::SDValue, llvm::SDValue, llvm::TargetLowering::DAGCombinerInfo&)"}, + {"_Z13SkipExtensionPN4llvm6SDNodeERNS_12SelectionDAGE", "SkipExtension(llvm::SDNode*, llvm::SelectionDAG&)"}, + {"_Z22isExtendedBUILD_VECTORPN4llvm6SDNodeERNS_12SelectionDAGEb", "isExtendedBUILD_VECTOR(llvm::SDNode*, llvm::SelectionDAG&, bool)"}, + {"_Z22GeneratePerfectShufflejN4llvm7SDValueES0_RNS_12SelectionDAGENS_8DebugLocE", "GeneratePerfectShuffle(unsigned int, llvm::SDValue, llvm::SDValue, llvm::SelectionDAG&, llvm::DebugLoc)"}, + {"_Z19CC_ARM_AAPCS_CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateE", "CC_ARM_AAPCS_Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)"}, + {"_ZN4llvm14f64AssignAAPCSERjRNS_3MVTES2_RNS_11CCValAssign7LocInfoERNS_7CCStateEb", "llvm::f64AssignAAPCS(unsigned int&, llvm::MVT&, llvm::MVT&, llvm::CCValAssign::LocInfo&, llvm::CCState&, bool)"}, + {"_Z22RetCC_ARM_AAPCS_CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateE", "RetCC_ARM_AAPCS_Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)"}, + {"_ZN4llvm12f64RetAssignERjRNS_3MVTES2_RNS_11CCValAssign7LocInfoERNS_7CCStateE", "llvm::f64RetAssign(unsigned int&, llvm::MVT&, llvm::MVT&, llvm::CCValAssign::LocInfo&, llvm::CCState&)"}, + {"_ZN4llvm13f64AssignAPCSERjRNS_3MVTES2_RNS_11CCValAssign7LocInfoERNS_7CCStateEb", "llvm::f64AssignAPCS(unsigned int&, llvm::MVT&, llvm::MVT&, llvm::CCValAssign::LocInfo&, llvm::CCState&, bool)"}, + {"_ZN4llvm12SelectionDAG14getCALLSEQ_ENDENS_7SDValueES1_S1_S1_", "llvm::SelectionDAG::getCALLSEQ_END(llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::SDValue)"}, + {"_ZN4llvm11make_vectorIjEESt6vectorIT_SaIS2_EES2_z", "std::vector> llvm::make_vector(unsigned int, ...)"}, + {"_ZNSt6vectorIN4llvm14TargetLowering12ArgListEntryESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::TargetLowering::ArgListEntry const&)"}, + {"_ZN4llvm5APInt11flipAllBitsEv", "llvm::APInt::flipAllBits()"}, + {"_ZNK4llvm19ShuffleVectorSDNode7getMaskERNS_15SmallVectorImplIiEE", "llvm::ShuffleVectorSDNode::getMask(llvm::SmallVectorImpl&) const"}, + {"_ZN4llvm23SmallVectorTemplateBaseINS_11CCValAssignELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZNK4llvm24TargetLoweringObjectFile26shouldEmitUsedDirectiveForEPKNS_11GlobalValueEPNS_7ManglerE", "llvm::TargetLoweringObjectFile::shouldEmitUsedDirectiveFor(llvm::GlobalValue const*, llvm::Mangler*) const"}, + {"_ZNK4llvm24TargetLoweringObjectFile29getSpecialCasedSectionGlobalsEPKNS_11GlobalValueEPNS_7ManglerENS_11SectionKindE", "llvm::TargetLoweringObjectFile::getSpecialCasedSectionGlobals(llvm::GlobalValue const*, llvm::Mangler*, llvm::SectionKind) const"}, + {"_ZNK4llvm22ARMElfTargetObjectFile20getAttributesSectionEv", "llvm::ARMElfTargetObjectFile::getAttributesSection() const"}, + {"_ZN4llvm27TargetLoweringObjectFileELFD1Ev", "llvm::TargetLoweringObjectFileELF::~TargetLoweringObjectFileELF()"}, + {"_ZN4llvm27TargetLoweringObjectFileELFD0Ev", "llvm::TargetLoweringObjectFileELF::~TargetLoweringObjectFileELF()"}, + {"_ZN4llvm29TargetLoweringObjectFileMachOD1Ev", "llvm::TargetLoweringObjectFileMachO::~TargetLoweringObjectFileMachO()"}, + {"_ZN4llvm29TargetLoweringObjectFileMachOD0Ev", "llvm::TargetLoweringObjectFileMachO::~TargetLoweringObjectFileMachO()"}, + {"_ZNSt6vectorISt4pairIN4llvm3EVTEPNS1_19TargetRegisterClassEESaIS5_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS5_S7_EERKS5_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + + // {"_ZNSt8_Rb_treeISt4pairIjN4llvm3MVT15SimpleValueTypeEES0_IKS4_S3_ESt10_Select1stIS6_ESt4lessIS4_ESaIS6_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS6_ERKS6_", + // "std::_Rb_tree, std::pair const, llvm::MVT::SimpleValueType>, std::_Select1st const, llvm::MVT::SimpleValueType>>, std::less>, std::allocator const, llvm::MVT::SimpleValueType>>>::_M_insert_unique(std::_Rb_tree_iterator const, llvm::MVT::SimpleValueType>>, std::pair const, llvm::MVT::SimpleValueType> const&)"}, + // "std::_Rb_tree, std::pair const, llvm::MVT::SimpleValueType>, std::_Select1st< const, llvm::MVT::SimpleValueType>>, std::less>, std::allocator< const, llvm::MVT::SimpleValueType>>>::_M_insert_unique(std::_Rb_tree_iterator< const, llvm::MVT::SimpleValueType>>, const, llvm::MVT::SimpleValueType> const&)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairIjN4llvm3MVT15SimpleValueTypeEES0_IKS4_S3_ESt10_Select1stIS6_ESt4lessIS4_ESaIS6_EE16_M_insert_uniqueERKS6_", + // "std::_Rb_tree, std::pair const, llvm::MVT::SimpleValueType>, std::_Select1st const, llvm::MVT::SimpleValueType>>, std::less>, std::allocator const, llvm::MVT::SimpleValueType>>>::_M_insert_unique(std::pair const, llvm::MVT::SimpleValueType> const&)"}, + // "std::_Rb_tree, std::pair const, llvm::MVT::SimpleValueType>, std::_Select1st< const, llvm::MVT::SimpleValueType>>, std::less>, std::allocator< const, llvm::MVT::SimpleValueType>>>::_M_insert_unique( const, llvm::MVT::SimpleValueType> const&)" was returned + + {"_ZN4llvm12ARMInstrInfoC1ERKNS_12ARMSubtargetE", "llvm::ARMInstrInfo::ARMInstrInfo(llvm::ARMSubtarget const&)"}, + {"_ZN4llvm12ARMInstrInfoC2ERKNS_12ARMSubtargetE", "llvm::ARMInstrInfo::ARMInstrInfo(llvm::ARMSubtarget const&)"}, + {"_ZNK4llvm12ARMInstrInfo18getUnindexedOpcodeEj", "llvm::ARMInstrInfo::getUnindexedOpcode(unsigned int) const"}, + {"_ZN4llvm10ARMJITInfo29replaceMachineCodeForFunctionEPvS1_", "llvm::ARMJITInfo::replaceMachineCodeForFunction(void*, void*)"}, + {"_ZN4llvm10ARMJITInfo23getLazyResolverFunctionEPFPvS1_E", "llvm::ARMJITInfo::getLazyResolverFunction(void* (*)(void*))"}, + {"_ZN4llvm10ARMJITInfo26emitGlobalValueIndirectSymEPKNS_11GlobalValueEPvRNS_14JITCodeEmitterE", "llvm::ARMJITInfo::emitGlobalValueIndirectSym(llvm::GlobalValue const*, void*, llvm::JITCodeEmitter&)"}, + {"_ZN4llvm10ARMJITInfo13getStubLayoutEv", "llvm::ARMJITInfo::getStubLayout()"}, + {"_ZN4llvm10ARMJITInfo16emitFunctionStubEPKNS_8FunctionEPvRNS_14JITCodeEmitterE", "llvm::ARMJITInfo::emitFunctionStub(llvm::Function const*, void*, llvm::JITCodeEmitter&)"}, + {"_ZNK4llvm10ARMJITInfo20resolveRelocDestAddrEPNS_17MachineRelocationE", "llvm::ARMJITInfo::resolveRelocDestAddr(llvm::MachineRelocation*) const"}, + {"_ZN4llvm10ARMJITInfo8relocateEPvPNS_17MachineRelocationEjPh", "llvm::ARMJITInfo::relocate(void*, llvm::MachineRelocation*, unsigned int, unsigned char*)"}, + {"_ZN4llvm8DenseMapIPvlNS_12DenseMapInfoIS1_EENS2_IlEEE6insertERKSt4pairIS1_lE", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPvlNS_12DenseMapInfoIS1_EENS2_IlEEE16InsertIntoBucketERKS1_RKlPSt4pairIS1_lE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(void* const&, long const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPvlNS_12DenseMapInfoIS1_EENS2_IlEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm6ARM_AM27getLoadStoreMultipleSubModeEi", "llvm::ARM_AM::getLoadStoreMultipleSubMode(int)"}, + {"_ZN4llvm34createARMLoadStoreOptimizationPassEb", "llvm::createARMLoadStoreOptimizationPass(bool)"}, + {"_ZN12_GLOBAL__N_115ARMLoadStoreOptD1Ev", "(anonymous namespace)::ARMLoadStoreOpt::~ARMLoadStoreOpt()"}, + {"_ZN12_GLOBAL__N_115ARMLoadStoreOptD0Ev", "(anonymous namespace)::ARMLoadStoreOpt::~ARMLoadStoreOpt()"}, + {"_ZNK12_GLOBAL__N_115ARMLoadStoreOpt11getPassNameEv", "(anonymous namespace)::ARMLoadStoreOpt::getPassName() const"}, + {"_ZN12_GLOBAL__N_115ARMLoadStoreOpt20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::ARMLoadStoreOpt::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_Z10isMemoryOpPKN4llvm12MachineInstrE", "isMemoryOp(llvm::MachineInstr const*)"}, + + // {"_ZN12_GLOBAL__N_115ARMLoadStoreOpt12MergeLDR_STRERN4llvm17MachineBasicBlockEjjijNS1_5ARMCC9CondCodesEjjRNS1_11SmallVectorINS0_15MemOpQueueEntryELj8EEERNS6_INS1_14ilist_iteratorINS1_12MachineInstrEEELj4EEE", + // "(anonymous namespace)::ARMLoadStoreOpt::MergeLDR_STR(llvm::MachineBasicBlock&, unsigned int, unsigned int, int, unsigned int, llvm::ARMCC::CondCodes, unsigned int, unsigned int, llvm::SmallVector<(anonymous namespace)::ARMLoadStoreOpt::MemOpQueueEntry, 8u>&, llvm::SmallVector, 4u>&)"}, + // "(anonymous namespace)::ARMLoadStoreOpt::MergeLDR_STR(llvm::MachineBasicBlock&, unsigned int, unsigned int, int, unsigned int, llvm::ARMCC::CondCodes, unsigned int, unsigned int, llvm::SmallVector<(anonymous namespace)::ARMLoadStoreOpt::MemOpQueueEntry, 8>&, llvm::SmallVector, 4>&)" was returned + + {"_ZN12_GLOBAL__N_115ARMLoadStoreOpt24MergeBaseUpdateLoadStoreERN4llvm17MachineBasicBlockENS1_14ilist_iteratorINS1_12MachineInstrEEEPKNS1_15TargetInstrInfoERbRS6_", "(anonymous namespace)::ARMLoadStoreOpt::MergeBaseUpdateLoadStore(llvm::MachineBasicBlock&, llvm::ilist_iterator, llvm::TargetInstrInfo const*, bool&, llvm::ilist_iterator&)"}, + + // {"_ZN12_GLOBAL__N_115ARMLoadStoreOpt14MergeOpsUpdateERN4llvm17MachineBasicBlockERNS1_11SmallVectorINS0_15MemOpQueueEntryELj8EEEjjjijbiNS1_5ARMCC9CondCodesEjjNS1_8DebugLocERNS4_INS1_14ilist_iteratorINS1_12MachineInstrEEELj4EEE", + // "(anonymous namespace)::ARMLoadStoreOpt::MergeOpsUpdate(llvm::MachineBasicBlock&, llvm::SmallVector<(anonymous namespace)::ARMLoadStoreOpt::MemOpQueueEntry, 8u>&, unsigned int, unsigned int, unsigned int, int, unsigned int, bool, int, llvm::ARMCC::CondCodes, unsigned int, unsigned int, llvm::DebugLoc, llvm::SmallVector, 4u>&)"}, + // "(anonymous namespace)::ARMLoadStoreOpt::MergeOpsUpdate(llvm::MachineBasicBlock&, llvm::SmallVector<(anonymous namespace)::ARMLoadStoreOpt::MemOpQueueEntry, 8>&, unsigned int, unsigned int, unsigned int, int, unsigned int, bool, int, llvm::ARMCC::CondCodes, unsigned int, unsigned int, llvm::DebugLoc, llvm::SmallVector, 4>&)" was returned + + {"_Z13InsertLDR_STRRN4llvm17MachineBasicBlockERNS_14ilist_iteratorINS_12MachineInstrEEEibNS_8DebugLocEjjbbjbbbbNS_5ARMCC9CondCodesEjPKNS_15TargetInstrInfoEb", "InsertLDR_STR(llvm::MachineBasicBlock&, llvm::ilist_iterator&, int, bool, llvm::DebugLoc, unsigned int, unsigned int, bool, bool, unsigned int, bool, bool, bool, bool, llvm::ARMCC::CondCodes, unsigned int, llvm::TargetInstrInfo const*, bool)"}, + {"_ZN12_GLOBAL__N_123ARMPreAllocLoadStoreOptD1Ev", "(anonymous namespace)::ARMPreAllocLoadStoreOpt::~ARMPreAllocLoadStoreOpt()"}, + {"_ZN12_GLOBAL__N_123ARMPreAllocLoadStoreOptD0Ev", "(anonymous namespace)::ARMPreAllocLoadStoreOpt::~ARMPreAllocLoadStoreOpt()"}, + {"_ZNK12_GLOBAL__N_123ARMPreAllocLoadStoreOpt11getPassNameEv", "(anonymous namespace)::ARMPreAllocLoadStoreOpt::getPassName() const"}, + {"_ZN12_GLOBAL__N_123ARMPreAllocLoadStoreOpt20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::ARMPreAllocLoadStoreOpt::runOnMachineFunction(llvm::MachineFunction&)"}, + + // {"_ZN12_GLOBAL__N_123ARMPreAllocLoadStoreOpt13RescheduleOpsEPN4llvm17MachineBasicBlockERNS1_11SmallVectorIPNS1_12MachineInstrELj4EEEjbRNS1_8DenseMapIS6_jNS1_12DenseMapInfoIS6_EENSA_IjEEEE", + // "(anonymous namespace)::ARMPreAllocLoadStoreOpt::RescheduleOps(llvm::MachineBasicBlock*, llvm::SmallVector&, unsigned int, bool, llvm::DenseMap, llvm::DenseMapInfo>&)"}, + // "(anonymous namespace)::ARMPreAllocLoadStoreOpt::RescheduleOps(llvm::MachineBasicBlock*, llvm::SmallVector&, unsigned int, bool, llvm::DenseMap, llvm::DenseMapInfo>&)" was returned + + + // {"_ZSt16__introsort_loopIPPN4llvm12MachineInstrElN12_GLOBAL__N_113OffsetCompareEEvT_S6_T0_T1_", + // "void std::__introsort_loop(llvm::MachineInstr**, llvm::MachineInstr**, long, (anonymous namespace)::OffsetCompare)"}, + // got error + + {"_ZNK12_GLOBAL__N_113OffsetCompareclEPKN4llvm12MachineInstrES4_", "(anonymous namespace)::OffsetCompare::operator()(llvm::MachineInstr const*, llvm::MachineInstr const*) const"}, + + // {"_ZSt13__adjust_heapIPPN4llvm12MachineInstrElS2_N12_GLOBAL__N_113OffsetCompareEEvT_T0_S7_T1_T2_", + // "void std::__adjust_heap(llvm::MachineInstr**, long, long, llvm::MachineInstr*, (anonymous namespace)::OffsetCompare)"}, + // got error + + {"_ZN4llvm23SmallVectorTemplateBaseINS_14ilist_iteratorINS_12MachineInstrEEELb0EE4growEm", "llvm::SmallVectorTemplateBase, false>::grow(unsigned long)"}, + + // {"_ZN4llvm8DenseMapIjNS_11SmallVectorIPNS_12MachineInstrELj4EEENS_12DenseMapInfoIjEENS5_IS4_EEE5clearEv", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::clear()"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::clear()" was returned + + + // {"_ZN4llvm8DenseMapIjNS_11SmallVectorIPNS_12MachineInstrELj4EEENS_12DenseMapInfoIjEENS5_IS4_EEE16shrink_and_clearEv", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::shrink_and_clear()"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::shrink_and_clear()" was returned + + {"_ZN4llvm15SmallVectorImplIPNS_12MachineInstrEEaSERKS3_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + + // {"_ZN4llvm8DenseMapIjNS_11SmallVectorIPNS_12MachineInstrELj4EEENS_12DenseMapInfoIjEENS5_IS4_EEE16FindAndConstructERKj", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::FindAndConstruct(unsigned int const&)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::FindAndConstruct(unsigned int const&)" was returned + + + // {"_ZN4llvm8DenseMapIjNS_11SmallVectorIPNS_12MachineInstrELj4EEENS_12DenseMapInfoIjEENS5_IS4_EEE16InsertIntoBucketERKjRKS4_PSt4pairIjS4_E", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(unsigned int const&, llvm::SmallVector const&, std::pair>*)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(unsigned int const&, llvm::SmallVector const&, std::pair>*)" was returned + + + // {"_ZN4llvm8DenseMapIjNS_11SmallVectorIPNS_12MachineInstrELj4EEENS_12DenseMapInfoIjEENS5_IS4_EEE4growEj", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)" was returned + + {"_ZN4llvm8DenseMapIPNS_12MachineInstrEjNS_12DenseMapInfoIS2_EENS3_IjEEE16InsertIntoBucketERKS2_RKjPSt4pairIS2_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::MachineInstr* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_12MachineInstrEjNS_12DenseMapInfoIS2_EENS3_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm18ARMMCAsmInfoDarwinC1Ev", "llvm::ARMMCAsmInfoDarwin::ARMMCAsmInfoDarwin()"}, + {"_ZN4llvm18ARMMCAsmInfoDarwinC2Ev", "llvm::ARMMCAsmInfoDarwin::ARMMCAsmInfoDarwin()"}, + {"_ZN4llvm15ARMELFMCAsmInfoC1Ev", "llvm::ARMELFMCAsmInfo::ARMELFMCAsmInfo()"}, + {"_ZN4llvm15ARMELFMCAsmInfoC2Ev", "llvm::ARMELFMCAsmInfo::ARMELFMCAsmInfo()"}, + {"_ZN4llvm15ARMELFMCAsmInfoD1Ev", "llvm::ARMELFMCAsmInfo::~ARMELFMCAsmInfo()"}, + {"_ZN4llvm15ARMELFMCAsmInfoD0Ev", "llvm::ARMELFMCAsmInfo::~ARMELFMCAsmInfo()"}, + {"_ZN4llvm18ARMMCAsmInfoDarwinD1Ev", "llvm::ARMMCAsmInfoDarwin::~ARMMCAsmInfoDarwin()"}, + {"_ZN4llvm18ARMMCAsmInfoDarwinD0Ev", "llvm::ARMMCAsmInfoDarwin::~ARMMCAsmInfoDarwin()"}, + {"_ZN4llvm22createARMMCCodeEmitterERKNS_6TargetERNS_13TargetMachineERNS_9MCContextE", "llvm::createARMMCCodeEmitter(llvm::Target const&, llvm::TargetMachine&, llvm::MCContext&)"}, + {"_ZN12_GLOBAL__N_116ARMMCCodeEmitterD1Ev", "(anonymous namespace)::ARMMCCodeEmitter::~ARMMCCodeEmitter()"}, + {"_ZN12_GLOBAL__N_116ARMMCCodeEmitterD0Ev", "(anonymous namespace)::ARMMCCodeEmitter::~ARMMCCodeEmitter()"}, + {"_ZNK12_GLOBAL__N_116ARMMCCodeEmitter17EncodeInstructionERKN4llvm6MCInstERNS1_11raw_ostreamERNS1_15SmallVectorImplINS1_7MCFixupEEE", "(anonymous namespace)::ARMMCCodeEmitter::EncodeInstruction(llvm::MCInst const&, llvm::raw_ostream&, llvm::SmallVectorImpl&) const"}, + {"_ZNK12_GLOBAL__N_116ARMMCCodeEmitter21getBinaryCodeForInstrERKN4llvm6MCInstERNS1_15SmallVectorImplINS1_7MCFixupEEE", "(anonymous namespace)::ARMMCCodeEmitter::getBinaryCodeForInstr(llvm::MCInst const&, llvm::SmallVectorImpl&) const"}, + {"_ZNK12_GLOBAL__N_116ARMMCCodeEmitter17getMachineOpValueERKN4llvm6MCInstERKNS1_9MCOperandERNS1_15SmallVectorImplINS1_7MCFixupEEE", "(anonymous namespace)::ARMMCCodeEmitter::getMachineOpValue(llvm::MCInst const&, llvm::MCOperand const&, llvm::SmallVectorImpl&) const"}, + {"_ZNK12_GLOBAL__N_116ARMMCCodeEmitter15getSORegOpValueERKN4llvm6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEE", "(anonymous namespace)::ARMMCCodeEmitter::getSORegOpValue(llvm::MCInst const&, unsigned int, llvm::SmallVectorImpl&) const"}, + {"_ZNK12_GLOBAL__N_116ARMMCCodeEmitter17getT2SORegOpValueERKN4llvm6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEE", "(anonymous namespace)::ARMMCCodeEmitter::getT2SORegOpValue(llvm::MCInst const&, unsigned int, llvm::SmallVectorImpl&) const"}, + {"_ZNK12_GLOBAL__N_116ARMMCCodeEmitter17getT2SOImmOpValueERKN4llvm6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEE", "(anonymous namespace)::ARMMCCodeEmitter::getT2SOImmOpValue(llvm::MCInst const&, unsigned int, llvm::SmallVectorImpl&) const"}, + {"_ZNK12_GLOBAL__N_116ARMMCCodeEmitter19getHiLo16ImmOpValueERKN4llvm6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEE", "(anonymous namespace)::ARMMCCodeEmitter::getHiLo16ImmOpValue(llvm::MCInst const&, unsigned int, llvm::SmallVectorImpl&) const"}, + {"_ZNK12_GLOBAL__N_116ARMMCCodeEmitter22getRegisterListOpValueERKN4llvm6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEE", "(anonymous namespace)::ARMMCCodeEmitter::getRegisterListOpValue(llvm::MCInst const&, unsigned int, llvm::SmallVectorImpl&) const"}, + {"_ZNK12_GLOBAL__N_116ARMMCCodeEmitter23getAddrModeImm12OpValueERKN4llvm6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEE", "(anonymous namespace)::ARMMCCodeEmitter::getAddrModeImm12OpValue(llvm::MCInst const&, unsigned int, llvm::SmallVectorImpl&) const"}, + {"_ZNK12_GLOBAL__N_116ARMMCCodeEmitter25getT2AddrModeSORegOpValueERKN4llvm6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEE", "(anonymous namespace)::ARMMCCodeEmitter::getT2AddrModeSORegOpValue(llvm::MCInst const&, unsigned int, llvm::SmallVectorImpl&) const"}, + {"_ZNK12_GLOBAL__N_116ARMMCCodeEmitter25getARMBranchTargetOpValueERKN4llvm6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEE", "(anonymous namespace)::ARMMCCodeEmitter::getARMBranchTargetOpValue(llvm::MCInst const&, unsigned int, llvm::SmallVectorImpl&) const"}, + {"_ZNK12_GLOBAL__N_116ARMMCCodeEmitter19getAddrMode5OpValueERKN4llvm6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEE", "(anonymous namespace)::ARMMCCodeEmitter::getAddrMode5OpValue(llvm::MCInst const&, unsigned int, llvm::SmallVectorImpl&) const"}, + {"_ZNK12_GLOBAL__N_116ARMMCCodeEmitter19getLdStSORegOpValueERKN4llvm6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEE", "(anonymous namespace)::ARMMCCodeEmitter::getLdStSORegOpValue(llvm::MCInst const&, unsigned int, llvm::SmallVectorImpl&) const"}, + {"_ZNK12_GLOBAL__N_116ARMMCCodeEmitter19getAddrMode3OpValueERKN4llvm6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEE", "(anonymous namespace)::ARMMCCodeEmitter::getAddrMode3OpValue(llvm::MCInst const&, unsigned int, llvm::SmallVectorImpl&) const"}, + {"_ZNK12_GLOBAL__N_116ARMMCCodeEmitter25getAddrMode2OffsetOpValueERKN4llvm6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEE", "(anonymous namespace)::ARMMCCodeEmitter::getAddrMode2OffsetOpValue(llvm::MCInst const&, unsigned int, llvm::SmallVectorImpl&) const"}, + {"_ZNK12_GLOBAL__N_116ARMMCCodeEmitter25getAddrMode3OffsetOpValueERKN4llvm6MCInstEjRNS1_15SmallVectorImplINS1_7MCFixupEEE", "(anonymous namespace)::ARMMCCodeEmitter::getAddrMode3OffsetOpValue(llvm::MCInst const&, unsigned int, llvm::SmallVectorImpl&) const"}, + {"_ZNK12_GLOBAL__N_116ARMMCCodeEmitter22EncodeAddrModeOpValuesERKN4llvm6MCInstEjRjS5_RNS1_15SmallVectorImplINS1_7MCFixupEEE", "(anonymous namespace)::ARMMCCodeEmitter::EncodeAddrModeOpValues(llvm::MCInst const&, unsigned int, unsigned int&, unsigned int&, llvm::SmallVectorImpl&) const"}, + {"_ZN4llvm23SmallVectorTemplateBaseINS_7MCFixupELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN4llvm9ARMMCExpr6CreateENS0_11VariantKindEPKNS_6MCExprERNS_9MCContextE", "llvm::ARMMCExpr::Create(llvm::ARMMCExpr::VariantKind, llvm::MCExpr const*, llvm::MCContext&)"}, + {"_ZNK4llvm9ARMMCExpr9PrintImplERNS_11raw_ostreamE", "llvm::ARMMCExpr::PrintImpl(llvm::raw_ostream&) const"}, + {"_ZNK4llvm9ARMMCExpr25EvaluateAsRelocatableImplERNS_7MCValueEPKNS_11MCAsmLayoutE", "llvm::ARMMCExpr::EvaluateAsRelocatableImpl(llvm::MCValue&, llvm::MCAsmLayout const*) const"}, + {"_ZNK4llvm9ARMMCExpr15AddValueSymbolsEPNS_11MCAssemblerE", "llvm::ARMMCExpr::AddValueSymbols(llvm::MCAssembler*) const"}, + {"_Z16AddValueSymbols_PKN4llvm6MCExprEPNS_11MCAssemblerE", "AddValueSymbols_(llvm::MCExpr const*, llvm::MCAssembler*)"}, + {"_ZN4llvm9ARMMCExprD1Ev", "llvm::ARMMCExpr::~ARMMCExpr()"}, + {"_ZN4llvm9ARMMCExprD0Ev", "llvm::ARMMCExpr::~ARMMCExpr()"}, + {"_ZN4llvm28LowerARMMachineInstrToMCInstEPKNS_12MachineInstrERNS_6MCInstERNS_13ARMAsmPrinterE", "llvm::LowerARMMachineInstrToMCInst(llvm::MachineInstr const*, llvm::MCInst&, llvm::ARMAsmPrinter&)"}, + {"_Z12GetSymbolRefRKN4llvm14MachineOperandEPKNS_8MCSymbolERNS_13ARMAsmPrinterE", "GetSymbolRef(llvm::MachineOperand const&, llvm::MCSymbol const*, llvm::ARMAsmPrinter&)"}, + {"_ZN4llvm15ARMRegisterInfoC1ERKNS_16ARMBaseInstrInfoERKNS_12ARMSubtargetE", "llvm::ARMRegisterInfo::ARMRegisterInfo(llvm::ARMBaseInstrInfo const&, llvm::ARMSubtarget const&)"}, + {"_ZN4llvm15ARMRegisterInfoC2ERKNS_16ARMBaseInstrInfoERKNS_12ARMSubtargetE", "llvm::ARMRegisterInfo::ARMRegisterInfo(llvm::ARMBaseInstrInfo const&, llvm::ARMSubtarget const&)"}, + {"_ZN4llvm19ARMSelectionDAGInfoC1ERKNS_13TargetMachineE", "llvm::ARMSelectionDAGInfo::ARMSelectionDAGInfo(llvm::TargetMachine const&)"}, + {"_ZN4llvm19ARMSelectionDAGInfoC2ERKNS_13TargetMachineE", "llvm::ARMSelectionDAGInfo::ARMSelectionDAGInfo(llvm::TargetMachine const&)"}, + {"_ZN4llvm19ARMSelectionDAGInfoD0Ev", "llvm::ARMSelectionDAGInfo::~ARMSelectionDAGInfo()"}, + {"_ZN4llvm19ARMSelectionDAGInfoD1Ev", "llvm::ARMSelectionDAGInfo::~ARMSelectionDAGInfo()"}, + {"_ZN4llvm19ARMSelectionDAGInfoD2Ev", "llvm::ARMSelectionDAGInfo::~ARMSelectionDAGInfo()"}, + {"_ZNK4llvm19ARMSelectionDAGInfo23EmitTargetCodeForMemcpyERNS_12SelectionDAGENS_8DebugLocENS_7SDValueES4_S4_S4_jbbNS_18MachinePointerInfoES5_", "llvm::ARMSelectionDAGInfo::EmitTargetCodeForMemcpy(llvm::SelectionDAG&, llvm::DebugLoc, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::SDValue, unsigned int, bool, bool, llvm::MachinePointerInfo, llvm::MachinePointerInfo) const"}, + {"_ZNK4llvm22TargetSelectionDAGInfo24EmitTargetCodeForMemmoveERNS_12SelectionDAGENS_8DebugLocENS_7SDValueES4_S4_S4_jbNS_18MachinePointerInfoES5_", "llvm::TargetSelectionDAGInfo::EmitTargetCodeForMemmove(llvm::SelectionDAG&, llvm::DebugLoc, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::SDValue, unsigned int, bool, llvm::MachinePointerInfo, llvm::MachinePointerInfo) const"}, + {"_ZNK4llvm22TargetSelectionDAGInfo23EmitTargetCodeForMemsetERNS_12SelectionDAGENS_8DebugLocENS_7SDValueES4_S4_S4_jbNS_18MachinePointerInfoE", "llvm::TargetSelectionDAGInfo::EmitTargetCodeForMemset(llvm::SelectionDAG&, llvm::DebugLoc, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::SDValue, unsigned int, bool, llvm::MachinePointerInfo) const"}, + + // {"_ZN4llvm12ARMSubtarget22ParseSubtargetFeaturesERKSsS2_", + // "llvm::ARMSubtarget::ParseSubtargetFeatures(std::string const&, std::string const&)"}, + // "llvm::ARMSubtarget::ParseSubtargetFeatures(std::string const&, std::string const)" was returned + + + // {"_ZN4llvm12ARMSubtargetC1ERKSsS2_b", + // "llvm::ARMSubtarget::ARMSubtarget(std::string const&, std::string const&, bool)"}, + // "llvm::ARMSubtarget::ARMSubtarget(std::string const&, std::string const, bool)" was returned + + + // {"_ZN4llvm12ARMSubtargetC2ERKSsS2_b", + // "llvm::ARMSubtarget::ARMSubtarget(std::string const&, std::string const&, bool)"}, + // "llvm::ARMSubtarget::ARMSubtarget(std::string const&, std::string const, bool)" was returned + + {"_ZN4llvm12ARMSubtarget17computeIssueWidthEv", "llvm::ARMSubtarget::computeIssueWidth()"}, + {"_ZNK4llvm12ARMSubtarget18GVIsIndirectSymbolEPKNS_11GlobalValueENS_5Reloc5ModelE", "llvm::ARMSubtarget::GVIsIndirectSymbol(llvm::GlobalValue const*, llvm::Reloc::Model) const"}, + {"_ZNK4llvm12ARMSubtarget23getMispredictionPenaltyEv", "llvm::ARMSubtarget::getMispredictionPenalty() const"}, + {"_ZNK4llvm12ARMSubtarget21enablePostRASchedulerENS_10CodeGenOpt5LevelERNS_15TargetSubtarget16AntiDepBreakModeERNS_15SmallVectorImplIPNS_19TargetRegisterClassEEE", "llvm::ARMSubtarget::enablePostRAScheduler(llvm::CodeGenOpt::Level, llvm::TargetSubtarget::AntiDepBreakMode&, llvm::SmallVectorImpl&) const"}, + {"_Z15createMCAsmInfoRKN4llvm6TargetENS_9StringRefE", "createMCAsmInfo(llvm::Target const&, llvm::StringRef)"}, + {"_Z16createMCStreamerRKN4llvm6TargetERKSsRNS_9MCContextERNS_16TargetAsmBackendERNS_11raw_ostreamEPNS_13MCCodeEmitterEbb", "createMCStreamer(llvm::Target const&, std::string const&, llvm::MCContext&, llvm::TargetAsmBackend&, llvm::raw_ostream&, llvm::MCCodeEmitter*, bool, bool)"}, + + // {"_ZN4llvm20ARMBaseTargetMachineC1ERKNS_6TargetERKSsS5_b", + // "llvm::ARMBaseTargetMachine::ARMBaseTargetMachine(llvm::Target const&, std::string const&, std::string const&, bool)"}, + // "llvm::ARMBaseTargetMachine::ARMBaseTargetMachine(llvm::Target const&, std::string const&, std::string const, bool)" was returned + + + // {"_ZN4llvm20ARMBaseTargetMachineC2ERKNS_6TargetERKSsS5_b", + // "llvm::ARMBaseTargetMachine::ARMBaseTargetMachine(llvm::Target const&, std::string const&, std::string const&, bool)"}, + // "llvm::ARMBaseTargetMachine::ARMBaseTargetMachine(llvm::Target const&, std::string const&, std::string const, bool)" was returned + + + // {"_ZN4llvm16ARMTargetMachineC1ERKNS_6TargetERKSsS5_", + // "llvm::ARMTargetMachine::ARMTargetMachine(llvm::Target const&, std::string const&, std::string const&)"}, + // "llvm::ARMTargetMachine::ARMTargetMachine(llvm::Target const&, std::string const&, std::string const)" was returned + + + // {"_ZN4llvm16ARMTargetMachineC2ERKNS_6TargetERKSsS5_", + // "llvm::ARMTargetMachine::ARMTargetMachine(llvm::Target const&, std::string const&, std::string const&)"}, + // "llvm::ARMTargetMachine::ARMTargetMachine(llvm::Target const&, std::string const&, std::string const)" was returned + + + // {"_ZN4llvm18ThumbTargetMachineC1ERKNS_6TargetERKSsS5_", + // "llvm::ThumbTargetMachine::ThumbTargetMachine(llvm::Target const&, std::string const&, std::string const&)"}, + // "llvm::ThumbTargetMachine::ThumbTargetMachine(llvm::Target const&, std::string const&, std::string const)" was returned + + + // {"_ZN4llvm18ThumbTargetMachineC2ERKNS_6TargetERKSsS5_", + // "llvm::ThumbTargetMachine::ThumbTargetMachine(llvm::Target const&, std::string const&, std::string const&)"}, + // "llvm::ThumbTargetMachine::ThumbTargetMachine(llvm::Target const&, std::string const&, std::string const)" was returned + + {"_ZN4llvm20ARMBaseTargetMachine10addPreISelERNS_15PassManagerBaseENS_10CodeGenOpt5LevelE", "llvm::ARMBaseTargetMachine::addPreISel(llvm::PassManagerBase&, llvm::CodeGenOpt::Level)"}, + {"_ZN4llvm20ARMBaseTargetMachine15addInstSelectorERNS_15PassManagerBaseENS_10CodeGenOpt5LevelE", "llvm::ARMBaseTargetMachine::addInstSelector(llvm::PassManagerBase&, llvm::CodeGenOpt::Level)"}, + {"_ZN4llvm20ARMBaseTargetMachine14addPreRegAllocERNS_15PassManagerBaseENS_10CodeGenOpt5LevelE", "llvm::ARMBaseTargetMachine::addPreRegAlloc(llvm::PassManagerBase&, llvm::CodeGenOpt::Level)"}, + {"_ZN4llvm20ARMBaseTargetMachine12addPreSched2ERNS_15PassManagerBaseENS_10CodeGenOpt5LevelE", "llvm::ARMBaseTargetMachine::addPreSched2(llvm::PassManagerBase&, llvm::CodeGenOpt::Level)"}, + {"_ZN4llvm20ARMBaseTargetMachine14addPreEmitPassERNS_15PassManagerBaseENS_10CodeGenOpt5LevelE", "llvm::ARMBaseTargetMachine::addPreEmitPass(llvm::PassManagerBase&, llvm::CodeGenOpt::Level)"}, + {"_ZN4llvm20ARMBaseTargetMachine14addCodeEmitterERNS_15PassManagerBaseENS_10CodeGenOpt5LevelERNS_14JITCodeEmitterE", "llvm::ARMBaseTargetMachine::addCodeEmitter(llvm::PassManagerBase&, llvm::CodeGenOpt::Level, llvm::JITCodeEmitter&)"}, + {"_ZNK4llvm20ARMBaseTargetMachine16getSubtargetImplEv", "llvm::ARMBaseTargetMachine::getSubtargetImpl() const"}, + {"_ZN4llvm20ARMBaseTargetMachineD1Ev", "llvm::ARMBaseTargetMachine::~ARMBaseTargetMachine()"}, + {"_ZN4llvm20ARMBaseTargetMachineD0Ev", "llvm::ARMBaseTargetMachine::~ARMBaseTargetMachine()"}, + {"_ZNK4llvm13TargetMachine12getInstrInfoEv", "llvm::TargetMachine::getInstrInfo() const"}, + {"_ZNK4llvm13TargetMachine16getFrameLoweringEv", "llvm::TargetMachine::getFrameLowering() const"}, + {"_ZNK4llvm13TargetMachine17getTargetLoweringEv", "llvm::TargetMachine::getTargetLowering() const"}, + {"_ZNK4llvm13TargetMachine19getSelectionDAGInfoEv", "llvm::TargetMachine::getSelectionDAGInfo() const"}, + {"_ZNK4llvm13TargetMachine13getDataLayoutEv", "llvm::TargetMachine::getDataLayout() const"}, + {"_ZNK4llvm13TargetMachine15getRegisterInfoEv", "llvm::TargetMachine::getRegisterInfo() const"}, + {"_ZNK4llvm13TargetMachine16getIntrinsicInfoEv", "llvm::TargetMachine::getIntrinsicInfo() const"}, + {"_ZN4llvm20ARMBaseTargetMachine10getJITInfoEv", "llvm::ARMBaseTargetMachine::getJITInfo()"}, + {"_ZNK4llvm20ARMBaseTargetMachine21getInstrItineraryDataEv", "llvm::ARMBaseTargetMachine::getInstrItineraryData() const"}, + {"_ZNK4llvm13TargetMachine16getELFWriterInfoEv", "llvm::TargetMachine::getELFWriterInfo() const"}, + {"_ZNK4llvm17LLVMTargetMachine25getEnableTailMergeDefaultEv", "llvm::LLVMTargetMachine::getEnableTailMergeDefault() const"}, + {"_ZN4llvm17LLVMTargetMachine15addPostRegAllocERNS_15PassManagerBaseENS_10CodeGenOpt5LevelE", "llvm::LLVMTargetMachine::addPostRegAlloc(llvm::PassManagerBase&, llvm::CodeGenOpt::Level)"}, + {"_ZN4llvm18ThumbTargetMachineD1Ev", "llvm::ThumbTargetMachine::~ThumbTargetMachine()"}, + {"_ZN4llvm18ThumbTargetMachineD0Ev", "llvm::ThumbTargetMachine::~ThumbTargetMachine()"}, + {"_ZNK4llvm18ThumbTargetMachine12getInstrInfoEv", "llvm::ThumbTargetMachine::getInstrInfo() const"}, + {"_ZNK4llvm18ThumbTargetMachine16getFrameLoweringEv", "llvm::ThumbTargetMachine::getFrameLowering() const"}, + {"_ZNK4llvm18ThumbTargetMachine17getTargetLoweringEv", "llvm::ThumbTargetMachine::getTargetLowering() const"}, + {"_ZNK4llvm18ThumbTargetMachine19getSelectionDAGInfoEv", "llvm::ThumbTargetMachine::getSelectionDAGInfo() const"}, + {"_ZNK4llvm18ThumbTargetMachine13getDataLayoutEv", "llvm::ThumbTargetMachine::getDataLayout() const"}, + {"_ZNK4llvm18ThumbTargetMachine15getRegisterInfoEv", "llvm::ThumbTargetMachine::getRegisterInfo() const"}, + {"_ZNK4llvm18ThumbTargetMachine16getELFWriterInfoEv", "llvm::ThumbTargetMachine::getELFWriterInfo() const"}, + {"_ZN4llvm16ARMTargetMachineD1Ev", "llvm::ARMTargetMachine::~ARMTargetMachine()"}, + {"_ZN4llvm16ARMTargetMachineD0Ev", "llvm::ARMTargetMachine::~ARMTargetMachine()"}, + {"_ZNK4llvm16ARMTargetMachine12getInstrInfoEv", "llvm::ARMTargetMachine::getInstrInfo() const"}, + {"_ZNK4llvm16ARMTargetMachine16getFrameLoweringEv", "llvm::ARMTargetMachine::getFrameLowering() const"}, + {"_ZNK4llvm16ARMTargetMachine17getTargetLoweringEv", "llvm::ARMTargetMachine::getTargetLowering() const"}, + {"_ZNK4llvm16ARMTargetMachine19getSelectionDAGInfoEv", "llvm::ARMTargetMachine::getSelectionDAGInfo() const"}, + {"_ZNK4llvm16ARMTargetMachine13getDataLayoutEv", "llvm::ARMTargetMachine::getDataLayout() const"}, + {"_ZNK4llvm16ARMTargetMachine15getRegisterInfoEv", "llvm::ARMTargetMachine::getRegisterInfo() const"}, + {"_ZNK4llvm16ARMTargetMachine16getELFWriterInfoEv", "llvm::ARMTargetMachine::getELFWriterInfo() const"}, + {"_ZN4llvm16ARMTargetMachineD2Ev", "llvm::ARMTargetMachine::~ARMTargetMachine()"}, + {"_ZN4llvm16ARMFrameLoweringD1Ev", "llvm::ARMFrameLowering::~ARMFrameLowering()"}, + {"_ZN4llvm17ARMTargetLoweringD1Ev", "llvm::ARMTargetLowering::~ARMTargetLowering()"}, + {"_ZN4llvm12ARMInstrInfoD1Ev", "llvm::ARMInstrInfo::~ARMInstrInfo()"}, + {"_ZN4llvm20ARMBaseTargetMachineD2Ev", "llvm::ARMBaseTargetMachine::~ARMBaseTargetMachine()"}, + {"_ZN4llvm10ARMJITInfoD1Ev", "llvm::ARMJITInfo::~ARMJITInfo()"}, + {"_ZN4llvm12ARMSubtargetD1Ev", "llvm::ARMSubtarget::~ARMSubtarget()"}, + {"_ZNK4llvm13TargetMachine16getSubtargetImplEv", "llvm::TargetMachine::getSubtargetImpl() const"}, + {"_ZN4llvm17LLVMTargetMachineD1Ev", "llvm::LLVMTargetMachine::~LLVMTargetMachine()"}, + {"_ZN4llvm17LLVMTargetMachineD0Ev", "llvm::LLVMTargetMachine::~LLVMTargetMachine()"}, + {"_ZN4llvm13TargetMachine10getJITInfoEv", "llvm::TargetMachine::getJITInfo()"}, + {"_ZNK4llvm13TargetMachine21getInstrItineraryDataEv", "llvm::TargetMachine::getInstrItineraryData() const"}, + {"_ZN4llvm17LLVMTargetMachine10addPreISelERNS_15PassManagerBaseENS_10CodeGenOpt5LevelE", "llvm::LLVMTargetMachine::addPreISel(llvm::PassManagerBase&, llvm::CodeGenOpt::Level)"}, + {"_ZN4llvm17LLVMTargetMachine15addInstSelectorERNS_15PassManagerBaseENS_10CodeGenOpt5LevelE", "llvm::LLVMTargetMachine::addInstSelector(llvm::PassManagerBase&, llvm::CodeGenOpt::Level)"}, + {"_ZN4llvm17LLVMTargetMachine14addPreRegAllocERNS_15PassManagerBaseENS_10CodeGenOpt5LevelE", "llvm::LLVMTargetMachine::addPreRegAlloc(llvm::PassManagerBase&, llvm::CodeGenOpt::Level)"}, + {"_ZN4llvm17LLVMTargetMachine12addPreSched2ERNS_15PassManagerBaseENS_10CodeGenOpt5LevelE", "llvm::LLVMTargetMachine::addPreSched2(llvm::PassManagerBase&, llvm::CodeGenOpt::Level)"}, + {"_ZN4llvm17LLVMTargetMachine14addPreEmitPassERNS_15PassManagerBaseENS_10CodeGenOpt5LevelE", "llvm::LLVMTargetMachine::addPreEmitPass(llvm::PassManagerBase&, llvm::CodeGenOpt::Level)"}, + {"_ZN4llvm17LLVMTargetMachine14addCodeEmitterERNS_15PassManagerBaseENS_10CodeGenOpt5LevelERNS_14JITCodeEmitterE", "llvm::LLVMTargetMachine::addCodeEmitter(llvm::PassManagerBase&, llvm::CodeGenOpt::Level, llvm::JITCodeEmitter&)"}, + {"_ZN4llvm12ARMSubtargetD0Ev", "llvm::ARMSubtarget::~ARMSubtarget()"}, + {"_ZNK4llvm15TargetSubtarget24getSpecialAddressLatencyEv", "llvm::TargetSubtarget::getSpecialAddressLatency() const"}, + {"_ZNK4llvm15TargetSubtarget21adjustSchedDependencyEPNS_5SUnitES2_RNS_4SDepE", "llvm::TargetSubtarget::adjustSchedDependency(llvm::SUnit*, llvm::SUnit*, llvm::SDep&) const"}, + {"_ZN4llvm10ARMJITInfoD0Ev", "llvm::ARMJITInfo::~ARMJITInfo()"}, + {"_ZN4llvm13TargetJITInfo20getPICJumpTableEntryEmm", "llvm::TargetJITInfo::getPICJumpTableEntry(unsigned long, unsigned long)"}, + {"_ZN4llvm13TargetJITInfo25allocateThreadLocalMemoryEm", "llvm::TargetJITInfo::allocateThreadLocalMemory(unsigned long)"}, + {"_ZNK4llvm10ARMJITInfo21hasCustomConstantPoolEv", "llvm::ARMJITInfo::hasCustomConstantPool() const"}, + {"_ZNK4llvm10ARMJITInfo19hasCustomJumpTablesEv", "llvm::ARMJITInfo::hasCustomJumpTables() const"}, + {"_ZNK4llvm10ARMJITInfo24allocateSeparateGVMemoryEv", "llvm::ARMJITInfo::allocateSeparateGVMemory() const"}, + {"_ZN4llvm13TargetJITInfoD1Ev", "llvm::TargetJITInfo::~TargetJITInfo()"}, + {"_ZN4llvm13TargetJITInfoD0Ev", "llvm::TargetJITInfo::~TargetJITInfo()"}, + {"_ZN4llvm13TargetJITInfo26emitGlobalValueIndirectSymEPKNS_11GlobalValueEPvRNS_14JITCodeEmitterE", "llvm::TargetJITInfo::emitGlobalValueIndirectSym(llvm::GlobalValue const*, void*, llvm::JITCodeEmitter&)"}, + {"_ZN4llvm13TargetJITInfo13getStubLayoutEv", "llvm::TargetJITInfo::getStubLayout()"}, + {"_ZN4llvm13TargetJITInfo16emitFunctionStubEPKNS_8FunctionEPvRNS_14JITCodeEmitterE", "llvm::TargetJITInfo::emitFunctionStub(llvm::Function const*, void*, llvm::JITCodeEmitter&)"}, + {"_ZN4llvm13TargetJITInfo23getLazyResolverFunctionEPFPvS1_E", "llvm::TargetJITInfo::getLazyResolverFunction(void* (*)(void*))"}, + {"_ZN4llvm13TargetJITInfo8relocateEPvPNS_17MachineRelocationEjPh", "llvm::TargetJITInfo::relocate(void*, llvm::MachineRelocation*, unsigned int, unsigned char*)"}, + {"_ZNK4llvm13TargetJITInfo21hasCustomConstantPoolEv", "llvm::TargetJITInfo::hasCustomConstantPool() const"}, + {"_ZNK4llvm13TargetJITInfo19hasCustomJumpTablesEv", "llvm::TargetJITInfo::hasCustomJumpTables() const"}, + {"_ZNK4llvm13TargetJITInfo24allocateSeparateGVMemoryEv", "llvm::TargetJITInfo::allocateSeparateGVMemory() const"}, + {"_ZN4llvm15ARMRegisterInfoD1Ev", "llvm::ARMRegisterInfo::~ARMRegisterInfo()"}, + {"_ZN4llvm12ARMInstrInfoD0Ev", "llvm::ARMInstrInfo::~ARMInstrInfo()"}, + {"_ZNK4llvm15TargetInstrInfo33isReallyTriviallyReMaterializableEPKNS_12MachineInstrEPNS_13AliasAnalysisE", "llvm::TargetInstrInfo::isReallyTriviallyReMaterializable(llvm::MachineInstr const*, llvm::AliasAnalysis*) const"}, + {"_ZNK4llvm15TargetInstrInfo21isCoalescableExtInstrERKNS_12MachineInstrERjS4_S4_", "llvm::TargetInstrInfo::isCoalescableExtInstr(llvm::MachineInstr const&, unsigned int&, unsigned int&, unsigned int&) const"}, + {"_ZNK4llvm15TargetInstrInfo25isLoadFromStackSlotPostFEEPKNS_12MachineInstrERi", "llvm::TargetInstrInfo::isLoadFromStackSlotPostFE(llvm::MachineInstr const*, int&) const"}, + {"_ZNK4llvm15TargetInstrInfo20hasLoadFromStackSlotEPKNS_12MachineInstrERPKNS_17MachineMemOperandERi", "llvm::TargetInstrInfo::hasLoadFromStackSlot(llvm::MachineInstr const*, llvm::MachineMemOperand const*&, int&) const"}, + {"_ZNK4llvm15TargetInstrInfo24isStoreToStackSlotPostFEEPKNS_12MachineInstrERi", "llvm::TargetInstrInfo::isStoreToStackSlotPostFE(llvm::MachineInstr const*, int&) const"}, + {"_ZNK4llvm15TargetInstrInfo19hasStoreToStackSlotEPKNS_12MachineInstrERPKNS_17MachineMemOperandERi", "llvm::TargetInstrInfo::hasStoreToStackSlot(llvm::MachineInstr const*, llvm::MachineMemOperand const*&, int&) const"}, + {"_ZNK4llvm15TargetInstrInfo21scheduleTwoAddrSourceEPNS_12MachineInstrES2_RKNS_18TargetRegisterInfoE", "llvm::TargetInstrInfo::scheduleTwoAddrSource(llvm::MachineInstr*, llvm::MachineInstr*, llvm::TargetRegisterInfo const&) const"}, + {"_ZNK4llvm15TargetInstrInfo19isLegalToSplitMBBAtERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEE", "llvm::TargetInstrInfo::isLegalToSplitMBBAt(llvm::MachineBasicBlock&, llvm::ilist_iterator) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo25isProfitableToDupForIfCvtERNS_17MachineBasicBlockEjff", "llvm::ARMBaseInstrInfo::isProfitableToDupForIfCvt(llvm::MachineBasicBlock&, unsigned int, float, float) const"}, + {"_ZNK4llvm15TargetInstrInfo21foldMemoryOperandImplERNS_15MachineFunctionEPNS_12MachineInstrERKNS_15SmallVectorImplIjEEi", "llvm::TargetInstrInfo::foldMemoryOperandImpl(llvm::MachineFunction&, llvm::MachineInstr*, llvm::SmallVectorImpl const&, int) const"}, + {"_ZNK4llvm15TargetInstrInfo21foldMemoryOperandImplERNS_15MachineFunctionEPNS_12MachineInstrERKNS_15SmallVectorImplIjEES4_", "llvm::TargetInstrInfo::foldMemoryOperandImpl(llvm::MachineFunction&, llvm::MachineInstr*, llvm::SmallVectorImpl const&, llvm::MachineInstr*) const"}, + {"_ZNK4llvm15TargetInstrInfo19unfoldMemoryOperandERNS_15MachineFunctionEPNS_12MachineInstrEjbbRNS_15SmallVectorImplIS4_EE", "llvm::TargetInstrInfo::unfoldMemoryOperand(llvm::MachineFunction&, llvm::MachineInstr*, unsigned int, bool, bool, llvm::SmallVectorImpl&) const"}, + {"_ZNK4llvm15TargetInstrInfo19unfoldMemoryOperandERNS_12SelectionDAGEPNS_6SDNodeERNS_15SmallVectorImplIS4_EE", "llvm::TargetInstrInfo::unfoldMemoryOperand(llvm::SelectionDAG&, llvm::SDNode*, llvm::SmallVectorImpl&) const"}, + {"_ZNK4llvm15TargetInstrInfo26getOpcodeAfterMemoryUnfoldEjbbPj", "llvm::TargetInstrInfo::getOpcodeAfterMemoryUnfold(unsigned int, bool, bool, unsigned int*) const"}, + {"_ZNK4llvm15TargetInstrInfo21getNoopForMachoTargetERNS_6MCInstE", "llvm::TargetInstrInfo::getNoopForMachoTarget(llvm::MCInst&) const"}, + {"_ZNK4llvm16ARMBaseInstrInfo12isPredicatedEPKNS_12MachineInstrE", "llvm::ARMBaseInstrInfo::isPredicated(llvm::MachineInstr const*) const"}, + {"_ZNK4llvm15TargetInstrInfo24isSafeToMoveRegClassDefsEPKNS_19TargetRegisterClassE", "llvm::TargetInstrInfo::isSafeToMoveRegClassDefs(llvm::TargetRegisterClass const*) const"}, + {"_ZNK4llvm12ARMInstrInfo15getRegisterInfoEv", "llvm::ARMInstrInfo::getRegisterInfo() const"}, + {"_ZN4llvm16ARMBaseInstrInfoD1Ev", "llvm::ARMBaseInstrInfo::~ARMBaseInstrInfo()"}, + {"_ZN4llvm16ARMBaseInstrInfoD0Ev", "llvm::ARMBaseInstrInfo::~ARMBaseInstrInfo()"}, + {"_ZN4llvm19TargetInstrInfoImplD1Ev", "llvm::TargetInstrInfoImpl::~TargetInstrInfoImpl()"}, + {"_ZN4llvm19TargetInstrInfoImplD0Ev", "llvm::TargetInstrInfoImpl::~TargetInstrInfoImpl()"}, + {"_ZNK4llvm15TargetInstrInfo19isLoadFromStackSlotEPKNS_12MachineInstrERi", "llvm::TargetInstrInfo::isLoadFromStackSlot(llvm::MachineInstr const*, int&) const"}, + {"_ZNK4llvm15TargetInstrInfo18isStoreToStackSlotEPKNS_12MachineInstrERi", "llvm::TargetInstrInfo::isStoreToStackSlot(llvm::MachineInstr const*, int&) const"}, + {"_ZNK4llvm15TargetInstrInfo21convertToThreeAddressERNS_14ilist_iteratorINS_17MachineBasicBlockEEERNS1_INS_12MachineInstrEEEPNS_13LiveVariablesE", "llvm::TargetInstrInfo::convertToThreeAddress(llvm::ilist_iterator&, llvm::ilist_iterator&, llvm::LiveVariables*) const"}, + {"_ZNK4llvm15TargetInstrInfo13analyzeBranchERNS_17MachineBasicBlockERPS1_S4_RNS_15SmallVectorImplINS_14MachineOperandEEEb", "llvm::TargetInstrInfo::analyzeBranch(llvm::MachineBasicBlock&, llvm::MachineBasicBlock*&, llvm::MachineBasicBlock*&, llvm::SmallVectorImpl&, bool) const"}, + {"_ZNK4llvm15TargetInstrInfo12removeBranchERNS_17MachineBasicBlockE", "llvm::TargetInstrInfo::removeBranch(llvm::MachineBasicBlock&) const"}, + {"_ZNK4llvm15TargetInstrInfo12insertBranchERNS_17MachineBasicBlockEPS1_S3_RKNS_15SmallVectorImplINS_14MachineOperandEEENS_8DebugLocE", "llvm::TargetInstrInfo::insertBranch(llvm::MachineBasicBlock&, llvm::MachineBasicBlock*, llvm::MachineBasicBlock*, llvm::SmallVectorImpl const&, llvm::DebugLoc) const"}, + {"_ZNK4llvm15TargetInstrInfo19isProfitableToIfCvtERNS_17MachineBasicBlockEjjff", "llvm::TargetInstrInfo::isProfitableToIfCvt(llvm::MachineBasicBlock&, unsigned int, unsigned int, float, float) const"}, + {"_ZNK4llvm15TargetInstrInfo19isProfitableToIfCvtERNS_17MachineBasicBlockEjjS2_jjff", "llvm::TargetInstrInfo::isProfitableToIfCvt(llvm::MachineBasicBlock&, unsigned int, unsigned int, llvm::MachineBasicBlock&, unsigned int, unsigned int, float, float) const"}, + {"_ZNK4llvm15TargetInstrInfo25isProfitableToDupForIfCvtERNS_17MachineBasicBlockEjff", "llvm::TargetInstrInfo::isProfitableToDupForIfCvt(llvm::MachineBasicBlock&, unsigned int, float, float) const"}, + {"_ZNK4llvm15TargetInstrInfo11copyPhysRegERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEENS_8DebugLocEjjb", "llvm::TargetInstrInfo::copyPhysReg(llvm::MachineBasicBlock&, llvm::ilist_iterator, llvm::DebugLoc, unsigned int, unsigned int, bool) const"}, + {"_ZNK4llvm15TargetInstrInfo19storeRegToStackSlotERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEEjbiPKNS_19TargetRegisterClassEPKNS_18TargetRegisterInfoE", "llvm::TargetInstrInfo::storeRegToStackSlot(llvm::MachineBasicBlock&, llvm::ilist_iterator, unsigned int, bool, int, llvm::TargetRegisterClass const*, llvm::TargetRegisterInfo const*) const"}, + {"_ZNK4llvm15TargetInstrInfo20loadRegFromStackSlotERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEEjiPKNS_19TargetRegisterClassEPKNS_18TargetRegisterInfoE", "llvm::TargetInstrInfo::loadRegFromStackSlot(llvm::MachineBasicBlock&, llvm::ilist_iterator, unsigned int, int, llvm::TargetRegisterClass const*, llvm::TargetRegisterInfo const*) const"}, + {"_ZNK4llvm15TargetInstrInfo24emitFrameIndexDebugValueERNS_15MachineFunctionEiyPKNS_6MDNodeENS_8DebugLocE", "llvm::TargetInstrInfo::emitFrameIndexDebugValue(llvm::MachineFunction&, int, unsigned long long, llvm::MDNode const*, llvm::DebugLoc) const"}, + {"_ZNK4llvm15TargetInstrInfo23areLoadsFromSameBasePtrEPNS_6SDNodeES2_RxS3_", "llvm::TargetInstrInfo::areLoadsFromSameBasePtr(llvm::SDNode*, llvm::SDNode*, long long&, long long&) const"}, + {"_ZNK4llvm15TargetInstrInfo23shouldScheduleLoadsNearEPNS_6SDNodeES2_xxj", "llvm::TargetInstrInfo::shouldScheduleLoadsNear(llvm::SDNode*, llvm::SDNode*, long long, long long, unsigned int) const"}, + {"_ZNK4llvm15TargetInstrInfo22ReverseBranchConditionERNS_15SmallVectorImplINS_14MachineOperandEEE", "llvm::TargetInstrInfo::ReverseBranchCondition(llvm::SmallVectorImpl&) const"}, + {"_ZNK4llvm15TargetInstrInfo12isPredicatedEPKNS_12MachineInstrE", "llvm::TargetInstrInfo::isPredicated(llvm::MachineInstr const*) const"}, + {"_ZNK4llvm15TargetInstrInfo17SubsumesPredicateERKNS_15SmallVectorImplINS_14MachineOperandEEES5_", "llvm::TargetInstrInfo::SubsumesPredicate(llvm::SmallVectorImpl const&, llvm::SmallVectorImpl const&) const"}, + {"_ZNK4llvm15TargetInstrInfo16DefinesPredicateEPNS_12MachineInstrERSt6vectorINS_14MachineOperandESaIS4_EE", "llvm::TargetInstrInfo::DefinesPredicate(llvm::MachineInstr*, std::vector>&) const"}, + {"_ZNK4llvm15TargetInstrInfo12isPredicableEPNS_12MachineInstrE", "llvm::TargetInstrInfo::isPredicable(llvm::MachineInstr*) const"}, + {"_ZNK4llvm15TargetInstrInfo14AnalyzeCompareEPKNS_12MachineInstrERjRiS5_", "llvm::TargetInstrInfo::AnalyzeCompare(llvm::MachineInstr const*, unsigned int&, int&, int&) const"}, + {"_ZNK4llvm15TargetInstrInfo20OptimizeCompareInstrEPNS_12MachineInstrEjiiPKNS_19MachineRegisterInfoE", "llvm::TargetInstrInfo::OptimizeCompareInstr(llvm::MachineInstr*, unsigned int, int, int, llvm::MachineRegisterInfo const*) const"}, + {"_ZNK4llvm15TargetInstrInfo13FoldImmediateEPNS_12MachineInstrES2_jPNS_19MachineRegisterInfoE", "llvm::TargetInstrInfo::FoldImmediate(llvm::MachineInstr*, llvm::MachineInstr*, unsigned int, llvm::MachineRegisterInfo*) const"}, + {"_ZNK4llvm15TargetInstrInfo21hasHighOperandLatencyEPKNS_18InstrItineraryDataEPKNS_19MachineRegisterInfoEPKNS_12MachineInstrEjS9_j", "llvm::TargetInstrInfo::hasHighOperandLatency(llvm::InstrItineraryData const*, llvm::MachineRegisterInfo const*, llvm::MachineInstr const*, unsigned int, llvm::MachineInstr const*, unsigned int) const"}, + {"_ZNSt8_Rb_treeIjjSt9_IdentityIjESt4lessIjESaIjEE8_M_eraseEPSt13_Rb_tree_nodeIjE", "std::_Rb_tree, std::less, std::allocator>::_M_erase(std::_Rb_tree_node*)"}, + {"_ZN4llvm15ARMRegisterInfoD0Ev", "llvm::ARMRegisterInfo::~ARMRegisterInfo()"}, + {"_ZNK4llvm18TargetRegisterInfo20getCrossCopyRegClassEPKNS_19TargetRegisterClassE", "llvm::TargetRegisterInfo::getCrossCopyRegClass(llvm::TargetRegisterClass const*) const"}, + {"_ZNK4llvm18TargetRegisterInfo20hasReservedSpillSlotERKNS_15MachineFunctionEjRi", "llvm::TargetRegisterInfo::hasReservedSpillSlot(llvm::MachineFunction const&, unsigned int, int&) const"}, + {"_ZNK4llvm18TargetRegisterInfo21saveScavengerRegisterERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEERS5_PKNS_19TargetRegisterClassEj", "llvm::TargetRegisterInfo::saveScavengerRegister(llvm::MachineBasicBlock&, llvm::ilist_iterator, llvm::ilist_iterator&, llvm::TargetRegisterClass const*, unsigned int) const"}, + {"_ZN4llvm19ARMBaseRegisterInfoD1Ev", "llvm::ARMBaseRegisterInfo::~ARMBaseRegisterInfo()"}, + {"_ZN4llvm19ARMBaseRegisterInfoD0Ev", "llvm::ARMBaseRegisterInfo::~ARMBaseRegisterInfo()"}, + {"_ZN4llvm18ARMGenRegisterInfoD1Ev", "llvm::ARMGenRegisterInfo::~ARMGenRegisterInfo()"}, + {"_ZN4llvm18ARMGenRegisterInfoD0Ev", "llvm::ARMGenRegisterInfo::~ARMGenRegisterInfo()"}, + {"_ZNK4llvm18TargetRegisterInfo23canCombineSubRegIndicesEPKNS_19TargetRegisterClassERNS_15SmallVectorImplIjEERj", "llvm::TargetRegisterInfo::canCombineSubRegIndices(llvm::TargetRegisterClass const*, llvm::SmallVectorImpl&, unsigned int&) const"}, + {"_ZNK4llvm18TargetRegisterInfo24getMatchingSuperRegClassEPKNS_19TargetRegisterClassES3_j", "llvm::TargetRegisterInfo::getMatchingSuperRegClass(llvm::TargetRegisterClass const*, llvm::TargetRegisterClass const*, unsigned int) const"}, + {"_ZNK4llvm18TargetRegisterInfo18getPointerRegClassEj", "llvm::TargetRegisterInfo::getPointerRegClass(unsigned int) const"}, + {"_ZNK4llvm18TargetRegisterInfo18getAllocationOrderEPKNS_19TargetRegisterClassEjjRKNS_15MachineFunctionE", "llvm::TargetRegisterInfo::getAllocationOrder(llvm::TargetRegisterClass const*, unsigned int, unsigned int, llvm::MachineFunction const&) const"}, + {"_ZNK4llvm18TargetRegisterInfo19ResolveRegAllocHintEjjRKNS_15MachineFunctionE", "llvm::TargetRegisterInfo::ResolveRegAllocHint(unsigned int, unsigned int, llvm::MachineFunction const&) const"}, + {"_ZNK4llvm18TargetRegisterInfo18UpdateRegAllocHintEjjRNS_15MachineFunctionE", "llvm::TargetRegisterInfo::UpdateRegAllocHint(unsigned int, unsigned int, llvm::MachineFunction&) const"}, + {"_ZNK4llvm18TargetRegisterInfo26requiresRegisterScavengingERKNS_15MachineFunctionE", "llvm::TargetRegisterInfo::requiresRegisterScavenging(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm18TargetRegisterInfo28requiresFrameIndexScavengingERKNS_15MachineFunctionE", "llvm::TargetRegisterInfo::requiresFrameIndexScavenging(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm18TargetRegisterInfo28requiresVirtualBaseRegistersERKNS_15MachineFunctionE", "llvm::TargetRegisterInfo::requiresVirtualBaseRegisters(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm18ARMGenRegisterInfo21needsStackRealignmentERKNS_15MachineFunctionE", "llvm::ARMGenRegisterInfo::needsStackRealignment(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm18TargetRegisterInfo24getFrameIndexInstrOffsetEPKNS_12MachineInstrEi", "llvm::TargetRegisterInfo::getFrameIndexInstrOffset(llvm::MachineInstr const*, int) const"}, + {"_ZNK4llvm18TargetRegisterInfo17needsFrameBaseRegEPNS_12MachineInstrEx", "llvm::TargetRegisterInfo::needsFrameBaseReg(llvm::MachineInstr*, long long) const"}, + {"_ZNK4llvm18TargetRegisterInfo28materializeFrameBaseRegisterEPNS_17MachineBasicBlockEjix", "llvm::TargetRegisterInfo::materializeFrameBaseRegister(llvm::MachineBasicBlock*, unsigned int, int, long long) const"}, + {"_ZNK4llvm18TargetRegisterInfo17resolveFrameIndexENS_14ilist_iteratorINS_12MachineInstrEEEjx", "llvm::TargetRegisterInfo::resolveFrameIndex(llvm::ilist_iterator, unsigned int, long long) const"}, + {"_ZNK4llvm18TargetRegisterInfo18isFrameOffsetLegalEPKNS_12MachineInstrEx", "llvm::TargetRegisterInfo::isFrameOffsetLegal(llvm::MachineInstr const*, long long) const"}, + {"_ZNK4llvm18TargetRegisterInfo29eliminateCallFramePseudoInstrERNS_15MachineFunctionERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEE", "llvm::TargetRegisterInfo::eliminateCallFramePseudoInstr(llvm::MachineFunction&, llvm::MachineBasicBlock&, llvm::ilist_iterator) const"}, + {"_ZN4llvm17ARMTargetLoweringD0Ev", "llvm::ARMTargetLowering::~ARMTargetLowering()"}, + {"_ZNK4llvm14TargetLowering17getRepRegClassForENS_3EVTE", "llvm::TargetLowering::getRepRegClassFor(llvm::EVT) const"}, + {"_ZNK4llvm14TargetLowering21getRepRegClassCostForENS_3EVTE", "llvm::TargetLowering::getRepRegClassCostFor(llvm::EVT) const"}, + {"_ZNK4llvm14TargetLowering22isVectorClearMaskLegalERKNS_15SmallVectorImplIiEENS_3EVTE", "llvm::TargetLowering::isVectorClearMaskLegal(llvm::SmallVectorImpl const&, llvm::EVT) const"}, + {"_ZNK4llvm14TargetLowering22ShouldShrinkFPConstantENS_3EVTE", "llvm::TargetLowering::ShouldShrinkFPConstant(llvm::EVT) const"}, + {"_ZNK4llvm14TargetLowering19getOptimalMemOpTypeEyjjbbRNS_15MachineFunctionE", "llvm::TargetLowering::getOptimalMemOpType(unsigned long long, unsigned int, unsigned int, bool, bool, llvm::MachineFunction&) const"}, + {"_ZNK4llvm14TargetLowering25LowerCustomJumpTableEntryEPKNS_20MachineJumpTableInfoEPKNS_17MachineBasicBlockEjRNS_9MCContextE", "llvm::TargetLowering::LowerCustomJumpTableEntry(llvm::MachineJumpTableInfo const*, llvm::MachineBasicBlock const*, unsigned int, llvm::MCContext&) const"}, + {"_ZNK4llvm14TargetLowering22getStackCookieLocationERjS1_", "llvm::TargetLowering::getStackCookieLocation(unsigned int&, unsigned int&) const"}, + {"_ZNK4llvm14TargetLowering20isTypeDesirableForOpEjNS_3EVTE", "llvm::TargetLowering::isTypeDesirableForOp(unsigned int, llvm::EVT) const"}, + {"_ZNK4llvm14TargetLowering22IsDesirableToPromoteOpENS_7SDValueERNS_3EVTE", "llvm::TargetLowering::IsDesirableToPromoteOp(llvm::SDValue, llvm::EVT&) const"}, + {"_ZNK4llvm14TargetLowering14CanLowerReturnENS_11CallingConv2IDEbRKNS_15SmallVectorImplINS_3ISD9OutputArgEEERNS_11LLVMContextE", "llvm::TargetLowering::CanLowerReturn(llvm::CallingConv::ID, bool, llvm::SmallVectorImpl const&, llvm::LLVMContext&) const"}, + {"_ZNK4llvm14TargetLowering14isTruncateFreeEPKNS_4TypeES3_", "llvm::TargetLowering::isTruncateFree(llvm::Type const*, llvm::Type const*) const"}, + {"_ZNK4llvm14TargetLowering14isTruncateFreeENS_3EVTES1_", "llvm::TargetLowering::isTruncateFree(llvm::EVT, llvm::EVT) const"}, + {"_ZNK4llvm14TargetLowering10isZExtFreeEPKNS_4TypeES3_", "llvm::TargetLowering::isZExtFree(llvm::Type const*, llvm::Type const*) const"}, + {"_ZNK4llvm14TargetLowering10isZExtFreeENS_3EVTES1_", "llvm::TargetLowering::isZExtFree(llvm::EVT, llvm::EVT) const"}, + {"_ZNK4llvm14TargetLowering21isNarrowingProfitableENS_3EVTES1_", "llvm::TargetLowering::isNarrowingProfitable(llvm::EVT, llvm::EVT) const"}, + {"_ZN4llvm16ARMFrameLoweringD0Ev", "llvm::ARMFrameLowering::~ARMFrameLowering()"}, + {"_ZNK4llvm19TargetFrameLowering24getCalleeSavedSpillSlotsERj", "llvm::TargetFrameLowering::getCalleeSavedSpillSlots(unsigned int&) const"}, + {"_ZNK4llvm19TargetFrameLowering31targetHandlesStackFrameRoundingEv", "llvm::TargetFrameLowering::targetHandlesStackFrameRounding() const"}, + {"_ZNK4llvm19TargetFrameLowering35processFunctionBeforeFrameFinalizedERNS_15MachineFunctionE", "llvm::TargetFrameLowering::processFunctionBeforeFrameFinalized(llvm::MachineFunction&) const"}, + + // {"_ZN4llvm21RegisterTargetMachineINS_18ThumbTargetMachineEE9AllocatorERKNS_6TargetERKSsS7_", + // "llvm::RegisterTargetMachine::Allocator(llvm::Target const&, std::string const&, std::string const&)"}, + // "llvm::RegisterTargetMachine::Allocator(llvm::Target const&, std::string const&, std::string const)" was returned + + + // {"_ZN4llvm21RegisterTargetMachineINS_16ARMTargetMachineEE9AllocatorERKNS_6TargetERKSsS7_", + // "llvm::RegisterTargetMachine::Allocator(llvm::Target const&, std::string const&, std::string const&)"}, + // "llvm::RegisterTargetMachine::Allocator(llvm::Target const&, std::string const&, std::string const)" was returned + + {"_ZNK4llvm19TargetFrameLowering25spillCalleeSavedRegistersERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEERKSt6vectorINS_15CalleeSavedInfoESaIS7_EEPKNS_18TargetRegisterInfoE", "llvm::TargetFrameLowering::spillCalleeSavedRegisters(llvm::MachineBasicBlock&, llvm::ilist_iterator, std::vector> const&, llvm::TargetRegisterInfo const*) const"}, + {"_ZNK4llvm19TargetFrameLowering27restoreCalleeSavedRegistersERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEERKSt6vectorINS_15CalleeSavedInfoESaIS7_EEPKNS_18TargetRegisterInfoE", "llvm::TargetFrameLowering::restoreCalleeSavedRegisters(llvm::MachineBasicBlock&, llvm::ilist_iterator, std::vector> const&, llvm::TargetRegisterInfo const*) const"}, + {"_ZNK4llvm19TargetFrameLowering20hasReservedCallFrameERKNS_15MachineFunctionE", "llvm::TargetFrameLowering::hasReservedCallFrame(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm19TargetFrameLowering27canSimplifyCallFramePseudosERKNS_15MachineFunctionE", "llvm::TargetFrameLowering::canSimplifyCallFramePseudos(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm19TargetFrameLowering36processFunctionBeforeCalleeSavedScanERNS_15MachineFunctionEPNS_12RegScavengerE", "llvm::TargetFrameLowering::processFunctionBeforeCalleeSavedScan(llvm::MachineFunction&, llvm::RegScavenger*) const"}, + {"_ZN4llvm13ImmutablePass18getAsImmutablePassEv", "llvm::ImmutablePass::getAsImmutablePass()"}, + {"_ZN4llvm13ImmutablePass11runOnModuleERNS_6ModuleE", "llvm::ImmutablePass::runOnModule(llvm::Module&)"}, + {"_ZN4llvm10ARMJITInfoC2Ev", "llvm::ARMJITInfo::ARMJITInfo()"}, + {"_ZN4llvm22ARMElfTargetObjectFile10InitializeERNS_9MCContextERKNS_13TargetMachineE", "llvm::ARMElfTargetObjectFile::Initialize(llvm::MCContext&, llvm::TargetMachine const&)"}, + {"_ZN4llvm22ARMElfTargetObjectFileD1Ev", "llvm::ARMElfTargetObjectFile::~ARMElfTargetObjectFile()"}, + {"_ZN4llvm22ARMElfTargetObjectFileD0Ev", "llvm::ARMElfTargetObjectFile::~ARMElfTargetObjectFile()"}, + {"_ZN4llvm22createMLxExpansionPassEv", "llvm::createMLxExpansionPass()"}, + {"_ZN12_GLOBAL__N_112MLxExpansionD1Ev", "(anonymous namespace)::MLxExpansion::~MLxExpansion()"}, + {"_ZN12_GLOBAL__N_112MLxExpansionD0Ev", "(anonymous namespace)::MLxExpansion::~MLxExpansion()"}, + {"_ZNK12_GLOBAL__N_112MLxExpansion11getPassNameEv", "(anonymous namespace)::MLxExpansion::getPassName() const"}, + {"_ZN12_GLOBAL__N_112MLxExpansion20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::MLxExpansion::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN4llvm21createNEONMoveFixPassEv", "llvm::createNEONMoveFixPass()"}, + {"_ZN12_GLOBAL__N_115NEONMoveFixPassD1Ev", "(anonymous namespace)::NEONMoveFixPass::~NEONMoveFixPass()"}, + {"_ZN12_GLOBAL__N_115NEONMoveFixPassD0Ev", "(anonymous namespace)::NEONMoveFixPass::~NEONMoveFixPass()"}, + {"_ZNK12_GLOBAL__N_115NEONMoveFixPass11getPassNameEv", "(anonymous namespace)::NEONMoveFixPass::getPassName() const"}, + {"_ZN12_GLOBAL__N_115NEONMoveFixPass20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::NEONMoveFixPass::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN4llvm8DenseMapIjPKNS_12MachineInstrENS_12DenseMapInfoIjEENS4_IS3_EEE16InsertIntoBucketERKjRKS3_PSt4pairIjS3_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(unsigned int const&, llvm::MachineInstr const* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIjPKNS_12MachineInstrENS_12DenseMapInfoIjEENS4_IS3_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNK4llvm19Thumb1FrameLowering20hasReservedCallFrameERKNS_15MachineFunctionE", "llvm::Thumb1FrameLowering::hasReservedCallFrame(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm19Thumb1FrameLowering12emitPrologueERNS_15MachineFunctionE", "llvm::Thumb1FrameLowering::emitPrologue(llvm::MachineFunction&) const"}, + {"_ZNK4llvm19Thumb1FrameLowering12emitEpilogueERNS_15MachineFunctionERNS_17MachineBasicBlockE", "llvm::Thumb1FrameLowering::emitEpilogue(llvm::MachineFunction&, llvm::MachineBasicBlock&) const"}, + {"_ZNK4llvm19Thumb1FrameLowering25spillCalleeSavedRegistersERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEERKSt6vectorINS_15CalleeSavedInfoESaIS7_EEPKNS_18TargetRegisterInfoE", "llvm::Thumb1FrameLowering::spillCalleeSavedRegisters(llvm::MachineBasicBlock&, llvm::ilist_iterator, std::vector> const&, llvm::TargetRegisterInfo const*) const"}, + {"_ZNK4llvm19Thumb1FrameLowering27restoreCalleeSavedRegistersERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEERKSt6vectorINS_15CalleeSavedInfoESaIS7_EEPKNS_18TargetRegisterInfoE", "llvm::Thumb1FrameLowering::restoreCalleeSavedRegisters(llvm::MachineBasicBlock&, llvm::ilist_iterator, std::vector> const&, llvm::TargetRegisterInfo const*) const"}, + {"_ZN4llvm19Thumb1FrameLoweringD1Ev", "llvm::Thumb1FrameLowering::~Thumb1FrameLowering()"}, + {"_ZN4llvm19Thumb1FrameLoweringD0Ev", "llvm::Thumb1FrameLowering::~Thumb1FrameLowering()"}, + {"_ZNSt6vectorIjSaIjEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPjS1_EERKj", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, unsigned int const&)"}, + {"_ZN4llvm9BitVector6resizeEjb", "llvm::BitVector::resize(unsigned int, bool)"}, + {"_ZN4llvm15Thumb1InstrInfoC1ERKNS_12ARMSubtargetE", "llvm::Thumb1InstrInfo::Thumb1InstrInfo(llvm::ARMSubtarget const&)"}, + {"_ZN4llvm15Thumb1InstrInfoC2ERKNS_12ARMSubtargetE", "llvm::Thumb1InstrInfo::Thumb1InstrInfo(llvm::ARMSubtarget const&)"}, + {"_ZNK4llvm15Thumb1InstrInfo18getUnindexedOpcodeEj", "llvm::Thumb1InstrInfo::getUnindexedOpcode(unsigned int) const"}, + {"_ZNK4llvm15Thumb1InstrInfo11copyPhysRegERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEENS_8DebugLocEjjb", "llvm::Thumb1InstrInfo::copyPhysReg(llvm::MachineBasicBlock&, llvm::ilist_iterator, llvm::DebugLoc, unsigned int, unsigned int, bool) const"}, + {"_ZNK4llvm15Thumb1InstrInfo19storeRegToStackSlotERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEEjbiPKNS_19TargetRegisterClassEPKNS_18TargetRegisterInfoE", "llvm::Thumb1InstrInfo::storeRegToStackSlot(llvm::MachineBasicBlock&, llvm::ilist_iterator, unsigned int, bool, int, llvm::TargetRegisterClass const*, llvm::TargetRegisterInfo const*) const"}, + {"_ZNK4llvm15Thumb1InstrInfo20loadRegFromStackSlotERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEEjiPKNS_19TargetRegisterClassEPKNS_18TargetRegisterInfoE", "llvm::Thumb1InstrInfo::loadRegFromStackSlot(llvm::MachineBasicBlock&, llvm::ilist_iterator, unsigned int, int, llvm::TargetRegisterClass const*, llvm::TargetRegisterInfo const*) const"}, + {"_ZN4llvm15Thumb1InstrInfoD1Ev", "llvm::Thumb1InstrInfo::~Thumb1InstrInfo()"}, + {"_ZN4llvm15Thumb1InstrInfoD0Ev", "llvm::Thumb1InstrInfo::~Thumb1InstrInfo()"}, + {"_ZNK4llvm15Thumb1InstrInfo15getRegisterInfoEv", "llvm::Thumb1InstrInfo::getRegisterInfo() const"}, + {"_ZN4llvm18Thumb1RegisterInfoD1Ev", "llvm::Thumb1RegisterInfo::~Thumb1RegisterInfo()"}, + {"_ZN4llvm18Thumb1RegisterInfoD0Ev", "llvm::Thumb1RegisterInfo::~Thumb1RegisterInfo()"}, + {"_ZN4llvm18Thumb1RegisterInfoC1ERKNS_16ARMBaseInstrInfoERKNS_12ARMSubtargetE", "llvm::Thumb1RegisterInfo::Thumb1RegisterInfo(llvm::ARMBaseInstrInfo const&, llvm::ARMSubtarget const&)"}, + {"_ZN4llvm18Thumb1RegisterInfoC2ERKNS_16ARMBaseInstrInfoERKNS_12ARMSubtargetE", "llvm::Thumb1RegisterInfo::Thumb1RegisterInfo(llvm::ARMBaseInstrInfo const&, llvm::ARMSubtarget const&)"}, + {"_ZNK4llvm18Thumb1RegisterInfo17emitLoadConstPoolERNS_17MachineBasicBlockERNS_14ilist_iteratorINS_12MachineInstrEEENS_8DebugLocEjjiNS_5ARMCC9CondCodesEj", "llvm::Thumb1RegisterInfo::emitLoadConstPool(llvm::MachineBasicBlock&, llvm::ilist_iterator&, llvm::DebugLoc, unsigned int, unsigned int, int, llvm::ARMCC::CondCodes, unsigned int) const"}, + {"_ZN4llvm25emitThumbRegPlusImmediateERNS_17MachineBasicBlockERNS_14ilist_iteratorINS_12MachineInstrEEEjjiRKNS_15TargetInstrInfoERKNS_19ARMBaseRegisterInfoENS_8DebugLocE", "llvm::emitThumbRegPlusImmediate(llvm::MachineBasicBlock&, llvm::ilist_iterator&, unsigned int, unsigned int, int, llvm::TargetInstrInfo const&, llvm::ARMBaseRegisterInfo const&, llvm::DebugLoc)"}, + {"_Z24emitThumbRegPlusImmInRegRN4llvm17MachineBasicBlockERNS_14ilist_iteratorINS_12MachineInstrEEEjjibRKNS_15TargetInstrInfoERKNS_19ARMBaseRegisterInfoENS_8DebugLocE", "emitThumbRegPlusImmInReg(llvm::MachineBasicBlock&, llvm::ilist_iterator&, unsigned int, unsigned int, int, bool, llvm::TargetInstrInfo const&, llvm::ARMBaseRegisterInfo const&, llvm::DebugLoc)"}, + {"_ZNK4llvm18Thumb1RegisterInfo29eliminateCallFramePseudoInstrERNS_15MachineFunctionERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEE", "llvm::Thumb1RegisterInfo::eliminateCallFramePseudoInstr(llvm::MachineFunction&, llvm::MachineBasicBlock&, llvm::ilist_iterator) const"}, + {"_ZNK4llvm18Thumb1RegisterInfo17rewriteFrameIndexENS_14ilist_iteratorINS_12MachineInstrEEEjjRiRKNS_16ARMBaseInstrInfoE", "llvm::Thumb1RegisterInfo::rewriteFrameIndex(llvm::ilist_iterator, unsigned int, unsigned int, int&, llvm::ARMBaseInstrInfo const&) const"}, + {"_ZNK4llvm18Thumb1RegisterInfo17resolveFrameIndexENS_14ilist_iteratorINS_12MachineInstrEEEjx", "llvm::Thumb1RegisterInfo::resolveFrameIndex(llvm::ilist_iterator, unsigned int, long long) const"}, + {"_ZNK4llvm18Thumb1RegisterInfo21saveScavengerRegisterERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEERS5_PKNS_19TargetRegisterClassEj", "llvm::Thumb1RegisterInfo::saveScavengerRegister(llvm::MachineBasicBlock&, llvm::ilist_iterator, llvm::ilist_iterator&, llvm::TargetRegisterClass const*, unsigned int) const"}, + {"_ZNK4llvm18Thumb1RegisterInfo19eliminateFrameIndexENS_14ilist_iteratorINS_12MachineInstrEEEiPNS_12RegScavengerE", "llvm::Thumb1RegisterInfo::eliminateFrameIndex(llvm::ilist_iterator, int, llvm::RegScavenger*) const"}, + {"_ZN4llvm23createThumb2ITBlockPassEv", "llvm::createThumb2ITBlockPass()"}, + {"_ZN12_GLOBAL__N_117Thumb2ITBlockPassD1Ev", "(anonymous namespace)::Thumb2ITBlockPass::~Thumb2ITBlockPass()"}, + {"_ZN12_GLOBAL__N_117Thumb2ITBlockPassD0Ev", "(anonymous namespace)::Thumb2ITBlockPass::~Thumb2ITBlockPass()"}, + {"_ZNK12_GLOBAL__N_117Thumb2ITBlockPass11getPassNameEv", "(anonymous namespace)::Thumb2ITBlockPass::getPassName() const"}, + {"_ZN12_GLOBAL__N_117Thumb2ITBlockPass20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::Thumb2ITBlockPass::runOnMachineFunction(llvm::MachineFunction&)"}, + + // {"_Z12TrackDefUsesPN4llvm12MachineInstrERNS_8SmallSetIjLj4EEES4_PKNS_18TargetRegisterInfoE", + // "TrackDefUses(llvm::MachineInstr*, llvm::SmallSet&, llvm::SmallSet&, llvm::TargetRegisterInfo const*)"}, + // "TrackDefUses(llvm::MachineInstr*, llvm::SmallSet&, llvm::SmallSet&, llvm::TargetRegisterInfo const*)" was returned + + + // {"_ZN4llvm8SmallSetIjLj4EE6insertERKj", + // "llvm::SmallSet::insert(unsigned int const&)"}, + // "llvm::SmallSet::insert(unsigned int const&)" was returned + + {"_ZN4llvm15Thumb2InstrInfoC1ERKNS_12ARMSubtargetE", "llvm::Thumb2InstrInfo::Thumb2InstrInfo(llvm::ARMSubtarget const&)"}, + {"_ZN4llvm15Thumb2InstrInfoC2ERKNS_12ARMSubtargetE", "llvm::Thumb2InstrInfo::Thumb2InstrInfo(llvm::ARMSubtarget const&)"}, + {"_ZNK4llvm15Thumb2InstrInfo18getUnindexedOpcodeEj", "llvm::Thumb2InstrInfo::getUnindexedOpcode(unsigned int) const"}, + {"_ZNK4llvm15Thumb2InstrInfo23ReplaceTailWithBranchToENS_14ilist_iteratorINS_12MachineInstrEEEPNS_17MachineBasicBlockE", "llvm::Thumb2InstrInfo::ReplaceTailWithBranchTo(llvm::ilist_iterator, llvm::MachineBasicBlock*) const"}, + {"_ZNK4llvm15Thumb2InstrInfo19isLegalToSplitMBBAtERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEE", "llvm::Thumb2InstrInfo::isLegalToSplitMBBAt(llvm::MachineBasicBlock&, llvm::ilist_iterator) const"}, + {"_ZN4llvm19getITInstrPredicateEPKNS_12MachineInstrERj", "llvm::getITInstrPredicate(llvm::MachineInstr const*, unsigned int&)"}, + {"_ZNK4llvm15Thumb2InstrInfo11copyPhysRegERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEENS_8DebugLocEjjb", "llvm::Thumb2InstrInfo::copyPhysReg(llvm::MachineBasicBlock&, llvm::ilist_iterator, llvm::DebugLoc, unsigned int, unsigned int, bool) const"}, + {"_ZNK4llvm15Thumb2InstrInfo19storeRegToStackSlotERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEEjbiPKNS_19TargetRegisterClassEPKNS_18TargetRegisterInfoE", "llvm::Thumb2InstrInfo::storeRegToStackSlot(llvm::MachineBasicBlock&, llvm::ilist_iterator, unsigned int, bool, int, llvm::TargetRegisterClass const*, llvm::TargetRegisterInfo const*) const"}, + {"_ZNK4llvm15Thumb2InstrInfo20loadRegFromStackSlotERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEEjiPKNS_19TargetRegisterClassEPKNS_18TargetRegisterInfoE", "llvm::Thumb2InstrInfo::loadRegFromStackSlot(llvm::MachineBasicBlock&, llvm::ilist_iterator, unsigned int, int, llvm::TargetRegisterClass const*, llvm::TargetRegisterInfo const*) const"}, + {"_ZN4llvm22emitT2RegPlusImmediateERNS_17MachineBasicBlockERNS_14ilist_iteratorINS_12MachineInstrEEENS_8DebugLocEjjiNS_5ARMCC9CondCodesEjRKNS_16ARMBaseInstrInfoE", "llvm::emitT2RegPlusImmediate(llvm::MachineBasicBlock&, llvm::ilist_iterator&, llvm::DebugLoc, unsigned int, unsigned int, int, llvm::ARMCC::CondCodes, unsigned int, llvm::ARMBaseInstrInfo const&)"}, + {"_ZN4llvm19rewriteT2FrameIndexERNS_12MachineInstrEjjRiRKNS_16ARMBaseInstrInfoE", "llvm::rewriteT2FrameIndex(llvm::MachineInstr&, unsigned int, unsigned int, int&, llvm::ARMBaseInstrInfo const&)"}, + {"_ZNK4llvm15Thumb2InstrInfo21scheduleTwoAddrSourceEPNS_12MachineInstrES2_RKNS_18TargetRegisterInfoE", "llvm::Thumb2InstrInfo::scheduleTwoAddrSource(llvm::MachineInstr*, llvm::MachineInstr*, llvm::TargetRegisterInfo const&) const"}, + {"_ZN4llvm15Thumb2InstrInfoD1Ev", "llvm::Thumb2InstrInfo::~Thumb2InstrInfo()"}, + {"_ZN4llvm15Thumb2InstrInfoD0Ev", "llvm::Thumb2InstrInfo::~Thumb2InstrInfo()"}, + {"_ZNK4llvm15Thumb2InstrInfo15getRegisterInfoEv", "llvm::Thumb2InstrInfo::getRegisterInfo() const"}, + {"_ZN4llvm18Thumb2RegisterInfoD1Ev", "llvm::Thumb2RegisterInfo::~Thumb2RegisterInfo()"}, + {"_ZN4llvm18Thumb2RegisterInfoD0Ev", "llvm::Thumb2RegisterInfo::~Thumb2RegisterInfo()"}, + {"_ZN4llvm18Thumb2RegisterInfoC1ERKNS_16ARMBaseInstrInfoERKNS_12ARMSubtargetE", "llvm::Thumb2RegisterInfo::Thumb2RegisterInfo(llvm::ARMBaseInstrInfo const&, llvm::ARMSubtarget const&)"}, + {"_ZN4llvm18Thumb2RegisterInfoC2ERKNS_16ARMBaseInstrInfoERKNS_12ARMSubtargetE", "llvm::Thumb2RegisterInfo::Thumb2RegisterInfo(llvm::ARMBaseInstrInfo const&, llvm::ARMSubtarget const&)"}, + {"_ZNK4llvm18Thumb2RegisterInfo17emitLoadConstPoolERNS_17MachineBasicBlockERNS_14ilist_iteratorINS_12MachineInstrEEENS_8DebugLocEjjiNS_5ARMCC9CondCodesEj", "llvm::Thumb2RegisterInfo::emitLoadConstPool(llvm::MachineBasicBlock&, llvm::ilist_iterator&, llvm::DebugLoc, unsigned int, unsigned int, int, llvm::ARMCC::CondCodes, unsigned int) const"}, + {"_ZN4llvm29createThumb2SizeReductionPassEv", "llvm::createThumb2SizeReductionPass()"}, + {"_ZN12_GLOBAL__N_116Thumb2SizeReduceD1Ev", "(anonymous namespace)::Thumb2SizeReduce::~Thumb2SizeReduce()"}, + {"_ZN12_GLOBAL__N_116Thumb2SizeReduceD0Ev", "(anonymous namespace)::Thumb2SizeReduce::~Thumb2SizeReduce()"}, + {"_ZNK12_GLOBAL__N_116Thumb2SizeReduce11getPassNameEv", "(anonymous namespace)::Thumb2SizeReduce::getPassName() const"}, + {"_ZN12_GLOBAL__N_116Thumb2SizeReduce20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::Thumb2SizeReduce::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN12_GLOBAL__N_116Thumb2SizeReduce13ReduceTo2AddrERN4llvm17MachineBasicBlockEPNS1_12MachineInstrERKNS_11ReduceEntryEb", "(anonymous namespace)::Thumb2SizeReduce::ReduceTo2Addr(llvm::MachineBasicBlock&, llvm::MachineInstr*, (anonymous namespace)::ReduceEntry const&, bool)"}, + {"_ZN12_GLOBAL__N_116Thumb2SizeReduce14ReduceToNarrowERN4llvm17MachineBasicBlockEPNS1_12MachineInstrERKNS_11ReduceEntryEb", "(anonymous namespace)::Thumb2SizeReduce::ReduceToNarrow(llvm::MachineBasicBlock&, llvm::MachineInstr*, (anonymous namespace)::ReduceEntry const&, bool)"}, + {"_ZN4llvm14TargetLowering15DAGCombinerInfo13AddToWorklistEPNS_6SDNodeE", "llvm::TargetLowering::DAGCombinerInfo::AddToWorklist(llvm::SDNode*)"}, + {"_ZN12_GLOBAL__N_111DAGCombiner13AddToWorkListEPN4llvm6SDNodeE", "(anonymous namespace)::DAGCombiner::AddToWorkList(llvm::SDNode*)"}, + {"_ZN4llvm14TargetLowering15DAGCombinerInfo9CombineToEPNS_6SDNodeERKSt6vectorINS_7SDValueESaIS5_EEb", "llvm::TargetLowering::DAGCombinerInfo::CombineTo(llvm::SDNode*, std::vector> const&, bool)"}, + {"_ZN12_GLOBAL__N_111DAGCombiner9CombineToEPN4llvm6SDNodeEPKNS1_7SDValueEjb", "(anonymous namespace)::DAGCombiner::CombineTo(llvm::SDNode*, llvm::SDValue const*, unsigned int, bool)"}, + {"_ZN4llvm14TargetLowering15DAGCombinerInfo9CombineToEPNS_6SDNodeENS_7SDValueEb", "llvm::TargetLowering::DAGCombinerInfo::CombineTo(llvm::SDNode*, llvm::SDValue, bool)"}, + {"_ZN4llvm14TargetLowering15DAGCombinerInfo9CombineToEPNS_6SDNodeENS_7SDValueES4_b", "llvm::TargetLowering::DAGCombinerInfo::CombineTo(llvm::SDNode*, llvm::SDValue, llvm::SDValue, bool)"}, + {"_ZN4llvm14TargetLowering15DAGCombinerInfo23CommitTargetLoweringOptERKNS0_17TargetLoweringOptE", "llvm::TargetLowering::DAGCombinerInfo::CommitTargetLoweringOpt(llvm::TargetLowering::TargetLoweringOpt const&)"}, + {"_ZN12_GLOBAL__N_111DAGCombiner23CommitTargetLoweringOptERKN4llvm14TargetLowering17TargetLoweringOptE", "(anonymous namespace)::DAGCombiner::CommitTargetLoweringOpt(llvm::TargetLowering::TargetLoweringOpt const&)"}, + {"_ZN4llvm12SelectionDAG7CombineENS_12CombineLevelERNS_13AliasAnalysisENS_10CodeGenOpt5LevelE", "llvm::SelectionDAG::Combine(llvm::CombineLevel, llvm::AliasAnalysis&, llvm::CodeGenOpt::Level)"}, + {"_ZN12_GLOBAL__N_111DAGCombiner7combineEPN4llvm6SDNodeE", "(anonymous namespace)::DAGCombiner::combine(llvm::SDNode*)"}, + {"_ZN12_GLOBAL__N_115WorkListRemoverD1Ev", "(anonymous namespace)::WorkListRemover::~WorkListRemover()"}, + {"_ZN12_GLOBAL__N_115WorkListRemoverD0Ev", "(anonymous namespace)::WorkListRemover::~WorkListRemover()"}, + {"_ZN12_GLOBAL__N_115WorkListRemover11NodeDeletedEPN4llvm6SDNodeES3_", "(anonymous namespace)::WorkListRemover::NodeDeleted(llvm::SDNode*, llvm::SDNode*)"}, + {"_ZN12_GLOBAL__N_115WorkListRemover11NodeUpdatedEPN4llvm6SDNodeE", "(anonymous namespace)::WorkListRemover::NodeUpdated(llvm::SDNode*)"}, + {"_ZN12_GLOBAL__N_111DAGCombiner5visitEPN4llvm6SDNodeE", "(anonymous namespace)::DAGCombiner::visit(llvm::SDNode*)"}, + {"_ZN12_GLOBAL__N_111DAGCombiner18SExtPromoteOperandEN4llvm7SDValueENS1_3EVTE", "(anonymous namespace)::DAGCombiner::SExtPromoteOperand(llvm::SDValue, llvm::EVT)"}, + {"_ZN12_GLOBAL__N_111DAGCombiner18ZExtPromoteOperandEN4llvm7SDValueENS1_3EVTE", "(anonymous namespace)::DAGCombiner::ZExtPromoteOperand(llvm::SDValue, llvm::EVT)"}, + {"_ZN12_GLOBAL__N_111DAGCombiner14PromoteOperandEN4llvm7SDValueENS1_3EVTERb", "(anonymous namespace)::DAGCombiner::PromoteOperand(llvm::SDValue, llvm::EVT, bool&)"}, + {"_ZN12_GLOBAL__N_111DAGCombiner27ReplaceLoadWithPromotedLoadEPN4llvm6SDNodeES3_", "(anonymous namespace)::DAGCombiner::ReplaceLoadWithPromotedLoad(llvm::SDNode*, llvm::SDNode*)"}, + {"_ZN12_GLOBAL__N_111DAGCombiner8visitXOREPN4llvm6SDNodeE", "(anonymous namespace)::DAGCombiner::visitXOR(llvm::SDNode*)"}, + {"_ZN12_GLOBAL__N_111DAGCombiner15FindBetterChainEPN4llvm6SDNodeENS1_7SDValueE", "(anonymous namespace)::DAGCombiner::FindBetterChain(llvm::SDNode*, llvm::SDValue)"}, + {"_ZN12_GLOBAL__N_111DAGCombiner28CombineToPreIndexedLoadStoreEPN4llvm6SDNodeE", "(anonymous namespace)::DAGCombiner::CombineToPreIndexedLoadStore(llvm::SDNode*)"}, + {"_ZN12_GLOBAL__N_111DAGCombiner29CombineToPostIndexedLoadStoreEPN4llvm6SDNodeE", "(anonymous namespace)::DAGCombiner::CombineToPostIndexedLoadStore(llvm::SDNode*)"}, + {"_ZN12_GLOBAL__N_111DAGCombiner15GetDemandedBitsEN4llvm7SDValueERKNS1_5APIntE", "(anonymous namespace)::DAGCombiner::GetDemandedBits(llvm::SDValue, llvm::APInt const&)"}, + {"_ZN12_GLOBAL__N_111DAGCombiner20SimplifyDemandedBitsEN4llvm7SDValueERKNS1_5APIntE", "(anonymous namespace)::DAGCombiner::SimplifyDemandedBits(llvm::SDValue, llvm::APInt const&)"}, + {"_Z18CheckForMaskedLoadN4llvm7SDValueES0_S0_", "CheckForMaskedLoad(llvm::SDValue, llvm::SDValue, llvm::SDValue)"}, + {"_Z31ShrinkLoadReplaceStoreWithStoreRKSt4pairIjjEN4llvm7SDValueEPNS3_11StoreSDNodeEPN12_GLOBAL__N_111DAGCombinerE", "ShrinkLoadReplaceStoreWithStore(std::pair const&, llvm::SDValue, llvm::StoreSDNode*, (anonymous namespace)::DAGCombiner*)"}, + {"_ZNK12_GLOBAL__N_111DAGCombiner13FindAliasInfoEPN4llvm6SDNodeERNS1_7SDValueERxRPKNS1_5ValueERiRjRPKNS1_6MDNodeE", "(anonymous namespace)::DAGCombiner::FindAliasInfo(llvm::SDNode*, llvm::SDValue&, long long&, llvm::Value const*&, int&, unsigned int&, llvm::MDNode const*&) const"}, + {"_Z18isNegatibleForFreeN4llvm7SDValueEbj", "isNegatibleForFree(llvm::SDValue, bool, unsigned int)"}, + {"_Z20GetNegatedExpressionN4llvm7SDValueERNS_12SelectionDAGEbj", "GetNegatedExpression(llvm::SDValue, llvm::SelectionDAG&, bool, unsigned int)"}, + {"_ZN12_GLOBAL__N_111DAGCombiner14SimplifyVBinOpEPN4llvm6SDNodeE", "(anonymous namespace)::DAGCombiner::SimplifyVBinOp(llvm::SDNode*)"}, + {"_ZN12_GLOBAL__N_111DAGCombiner23CombineConsecutiveLoadsEPN4llvm6SDNodeENS1_3EVTE", "(anonymous namespace)::DAGCombiner::CombineConsecutiveLoads(llvm::SDNode*, llvm::EVT)"}, + {"_ZN12_GLOBAL__N_111DAGCombiner33ConstantFoldBITCASTofBUILD_VECTOREPN4llvm6SDNodeENS1_3EVTE", "(anonymous namespace)::DAGCombiner::ConstantFoldBITCASTofBUILD_VECTOR(llvm::SDNode*, llvm::EVT)"}, + {"_ZN12_GLOBAL__N_111DAGCombiner15ReduceLoadWidthEPN4llvm6SDNodeE", "(anonymous namespace)::DAGCombiner::ReduceLoadWidth(llvm::SDNode*)"}, + {"_ZN12_GLOBAL__N_111DAGCombiner20SimplifyDemandedBitsEN4llvm7SDValueE", "(anonymous namespace)::DAGCombiner::SimplifyDemandedBits(llvm::SDValue)"}, + + // {"_Z23ExtendUsesToFormExtLoadPN4llvm6SDNodeENS_7SDValueEjRNS_11SmallVectorIS1_Lj4EEERKNS_14TargetLoweringE", + // "ExtendUsesToFormExtLoad(llvm::SDNode*, llvm::SDValue, unsigned int, llvm::SmallVector&, llvm::TargetLowering const&)"}, + // "ExtendUsesToFormExtLoad(llvm::SDNode*, llvm::SDValue, unsigned int, llvm::SmallVector&, llvm::TargetLowering const&)" was returned + + {"_ZN12_GLOBAL__N_111DAGCombiner16SimplifySelectCCEN4llvm8DebugLocENS1_7SDValueES3_S3_S3_NS1_3ISD8CondCodeEb", "(anonymous namespace)::DAGCombiner::SimplifySelectCC(llvm::DebugLoc, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::ISD::CondCode, bool)"}, + {"_ZN12_GLOBAL__N_111DAGCombiner17SimplifySelectOpsEPN4llvm6SDNodeENS1_7SDValueES4_", "(anonymous namespace)::DAGCombiner::SimplifySelectOps(llvm::SDNode*, llvm::SDValue, llvm::SDValue)"}, + {"_ZN12_GLOBAL__N_111DAGCombiner20visitShiftByConstantEPN4llvm6SDNodeEj", "(anonymous namespace)::DAGCombiner::visitShiftByConstant(llvm::SDNode*, unsigned int)"}, + {"_ZN12_GLOBAL__N_111DAGCombiner14ReassociateOpsEjN4llvm8DebugLocENS1_7SDValueES3_", "(anonymous namespace)::DAGCombiner::ReassociateOps(unsigned int, llvm::DebugLoc, llvm::SDValue, llvm::SDValue)"}, + {"_Z17isSetCCEquivalentN4llvm7SDValueERS0_S1_S1_", "isSetCCEquivalent(llvm::SDValue, llvm::SDValue&, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN12_GLOBAL__N_111DAGCombiner32SimplifyBinOpWithSameOpcodeHandsEPN4llvm6SDNodeE", "(anonymous namespace)::DAGCombiner::SimplifyBinOpWithSameOpcodeHands(llvm::SDNode*)"}, + {"_ZN12_GLOBAL__N_111DAGCombiner26SimplifyNodeWithTwoResultsEPN4llvm6SDNodeEjj", "(anonymous namespace)::DAGCombiner::SimplifyNodeWithTwoResults(llvm::SDNode*, unsigned int, unsigned int)"}, + {"_Z21combineShlAddConstantN4llvm8DebugLocENS_7SDValueES1_RNS_12SelectionDAGE", "combineShlAddConstant(llvm::DebugLoc, llvm::SDValue, llvm::SDValue, llvm::SelectionDAG&)"}, + + // {"_ZSt6__findIN9__gnu_cxx17__normal_iteratorIPPN4llvm6SDNodeESt6vectorIS4_SaIS4_EEEES4_ET_SA_SA_RKT0_St26random_access_iterator_tag", + // "__gnu_cxx::__normal_iterator>> std::__find<__gnu_cxx::__normal_iterator>>, llvm::SDNode*>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, llvm::SDNode* const&, std::random_access_iterator_tag)"}, + // got error + + {"_ZNK4llvm3EVT6bitsGEES0_", "llvm::EVT::bitsGE(llvm::EVT) const"}, + + // {"_ZSt6__findIPPN4llvm6SDNodeES2_ET_S4_S4_RKT0_St26random_access_iterator_tag", + // "llvm::SDNode** std::__find(llvm::SDNode**, llvm::SDNode**, llvm::SDNode* const&, std::random_access_iterator_tag)"}, + // got error + + {"_ZN4llvm8FastISel13startNewBlockEv", "llvm::FastISel::startNewBlock()"}, + {"_ZNK4llvm8FastISel14hasTrivialKillEPKNS_5ValueE", "llvm::FastISel::hasTrivialKill(llvm::Value const*) const"}, + {"_ZN4llvm8FastISel14getRegForValueEPKNS_5ValueE", "llvm::FastISel::getRegForValue(llvm::Value const*)"}, + {"_ZN4llvm8FastISel19enterLocalValueAreaEv", "llvm::FastISel::enterLocalValueArea()"}, + {"_ZN4llvm8FastISel22materializeRegForValueEPKNS_5ValueENS_3MVTE", "llvm::FastISel::materializeRegForValue(llvm::Value const*, llvm::MVT)"}, + {"_ZN4llvm8FastISel19leaveLocalValueAreaENS0_9SavePointE", "llvm::FastISel::leaveLocalValueArea(llvm::FastISel::SavePoint)"}, + {"_ZN4llvm8FastISel14SelectOperatorEPKNS_4UserEj", "llvm::FastISel::SelectOperator(llvm::User const*, unsigned int)"}, + {"_ZN4llvm8FastISel17lookUpRegForValueEPKNS_5ValueE", "llvm::FastISel::lookUpRegForValue(llvm::Value const*)"}, + {"_ZN4llvm8FastISel15createResultRegEPKNS_19TargetRegisterClassE", "llvm::FastISel::createResultReg(llvm::TargetRegisterClass const*)"}, + {"_ZN4llvm8FastISel14UpdateValueMapEPKNS_5ValueEj", "llvm::FastISel::UpdateValueMap(llvm::Value const*, unsigned int)"}, + {"_ZN4llvm8FastISel17getRegForGEPIndexEPKNS_5ValueE", "llvm::FastISel::getRegForGEPIndex(llvm::Value const*)"}, + {"_ZN4llvm8FastISel17recomputeInsertPtEv", "llvm::FastISel::recomputeInsertPt()"}, + {"_ZN4llvm8FastISel14SelectBinaryOpEPKNS_4UserEj", "llvm::FastISel::SelectBinaryOp(llvm::User const*, unsigned int)"}, + {"_ZN4llvm8FastISel19SelectGetElementPtrEPKNS_4UserE", "llvm::FastISel::SelectGetElementPtr(llvm::User const*)"}, + {"_ZN4llvm8FastISel12FastEmit_ri_ENS_3MVTEjjbyS1_", "llvm::FastISel::FastEmit_ri_(llvm::MVT, unsigned int, unsigned int, bool, unsigned long long, llvm::MVT)"}, + {"_ZN4llvm8FastISel10SelectCallEPKNS_4UserE", "llvm::FastISel::SelectCall(llvm::User const*)"}, + {"_ZN4llvm8FastISel10SelectCastEPKNS_4UserEj", "llvm::FastISel::SelectCast(llvm::User const*, unsigned int)"}, + {"_ZN4llvm8FastISel18FastEmitZExtFromI1ENS_3MVTEjb", "llvm::FastISel::FastEmitZExtFromI1(llvm::MVT, unsigned int, bool)"}, + {"_ZN4llvm8FastISel13SelectBitCastEPKNS_4UserE", "llvm::FastISel::SelectBitCast(llvm::User const*)"}, + {"_ZN4llvm8FastISel17SelectInstructionEPKNS_11InstructionE", "llvm::FastISel::SelectInstruction(llvm::Instruction const*)"}, + {"_ZN4llvm8FastISel31HandlePHINodesInSuccessorBlocksEPKNS_10BasicBlockE", "llvm::FastISel::HandlePHINodesInSuccessorBlocks(llvm::BasicBlock const*)"}, + {"_ZN4llvm8FastISel14FastEmitBranchEPNS_17MachineBasicBlockENS_8DebugLocE", "llvm::FastISel::FastEmitBranch(llvm::MachineBasicBlock*, llvm::DebugLoc)"}, + {"_ZN4llvm8FastISel10SelectFNegEPKNS_4UserE", "llvm::FastISel::SelectFNeg(llvm::User const*)"}, + {"_ZN4llvm8FastISelC1ERNS_20FunctionLoweringInfoE", "llvm::FastISel::FastISel(llvm::FunctionLoweringInfo&)"}, + {"_ZN4llvm8FastISelC2ERNS_20FunctionLoweringInfoE", "llvm::FastISel::FastISel(llvm::FunctionLoweringInfo&)"}, + {"_ZN4llvm8FastISelD0Ev", "llvm::FastISel::~FastISel()"}, + {"_ZN4llvm8FastISelD1Ev", "llvm::FastISel::~FastISel()"}, + {"_ZN4llvm8FastISelD2Ev", "llvm::FastISel::~FastISel()"}, + {"_ZN4llvm8FastISel9FastEmit_ENS_3MVTES1_j", "llvm::FastISel::FastEmit_(llvm::MVT, llvm::MVT, unsigned int)"}, + {"_ZN4llvm8FastISel10FastEmit_rENS_3MVTES1_jjb", "llvm::FastISel::FastEmit_r(llvm::MVT, llvm::MVT, unsigned int, unsigned int, bool)"}, + {"_ZN4llvm8FastISel11FastEmit_rrENS_3MVTES1_jjbjb", "llvm::FastISel::FastEmit_rr(llvm::MVT, llvm::MVT, unsigned int, unsigned int, bool, unsigned int, bool)"}, + {"_ZN4llvm8FastISel10FastEmit_iENS_3MVTES1_jy", "llvm::FastISel::FastEmit_i(llvm::MVT, llvm::MVT, unsigned int, unsigned long long)"}, + {"_ZN4llvm8FastISel10FastEmit_fENS_3MVTES1_jPKNS_10ConstantFPE", "llvm::FastISel::FastEmit_f(llvm::MVT, llvm::MVT, unsigned int, llvm::ConstantFP const*)"}, + {"_ZN4llvm8FastISel11FastEmit_riENS_3MVTES1_jjby", "llvm::FastISel::FastEmit_ri(llvm::MVT, llvm::MVT, unsigned int, unsigned int, bool, unsigned long long)"}, + {"_ZN4llvm8FastISel11FastEmit_rfENS_3MVTES1_jjbPKNS_10ConstantFPE", "llvm::FastISel::FastEmit_rf(llvm::MVT, llvm::MVT, unsigned int, unsigned int, bool, llvm::ConstantFP const*)"}, + {"_ZN4llvm8FastISel12FastEmit_rriENS_3MVTES1_jjbjby", "llvm::FastISel::FastEmit_rri(llvm::MVT, llvm::MVT, unsigned int, unsigned int, bool, unsigned int, bool, unsigned long long)"}, + {"_ZN4llvm8FastISel12FastEmit_rf_ENS_3MVTEjjbPKNS_10ConstantFPES1_", "llvm::FastISel::FastEmit_rf_(llvm::MVT, unsigned int, unsigned int, bool, llvm::ConstantFP const*, llvm::MVT)"}, + {"_ZN4llvm8FastISel13FastEmitInst_EjPKNS_19TargetRegisterClassE", "llvm::FastISel::FastEmitInst_(unsigned int, llvm::TargetRegisterClass const*)"}, + {"_ZN4llvm8FastISel14FastEmitInst_rEjPKNS_19TargetRegisterClassEjb", "llvm::FastISel::FastEmitInst_r(unsigned int, llvm::TargetRegisterClass const*, unsigned int, bool)"}, + {"_ZN4llvm8FastISel15FastEmitInst_rrEjPKNS_19TargetRegisterClassEjbjb", "llvm::FastISel::FastEmitInst_rr(unsigned int, llvm::TargetRegisterClass const*, unsigned int, bool, unsigned int, bool)"}, + {"_ZN4llvm8FastISel15FastEmitInst_riEjPKNS_19TargetRegisterClassEjby", "llvm::FastISel::FastEmitInst_ri(unsigned int, llvm::TargetRegisterClass const*, unsigned int, bool, unsigned long long)"}, + {"_ZN4llvm8FastISel15FastEmitInst_rfEjPKNS_19TargetRegisterClassEjbPKNS_10ConstantFPE", "llvm::FastISel::FastEmitInst_rf(unsigned int, llvm::TargetRegisterClass const*, unsigned int, bool, llvm::ConstantFP const*)"}, + {"_ZN4llvm8FastISel16FastEmitInst_rriEjPKNS_19TargetRegisterClassEjbjby", "llvm::FastISel::FastEmitInst_rri(unsigned int, llvm::TargetRegisterClass const*, unsigned int, bool, unsigned int, bool, unsigned long long)"}, + {"_ZN4llvm8FastISel14FastEmitInst_iEjPKNS_19TargetRegisterClassEy", "llvm::FastISel::FastEmitInst_i(unsigned int, llvm::TargetRegisterClass const*, unsigned long long)"}, + {"_ZN4llvm8FastISel26FastEmitInst_extractsubregENS_3MVTEjbj", "llvm::FastISel::FastEmitInst_extractsubreg(llvm::MVT, unsigned int, bool, unsigned int)"}, + {"_ZN4llvm8FastISel25TargetMaterializeConstantEPKNS_8ConstantE", "llvm::FastISel::TargetMaterializeConstant(llvm::Constant const*)"}, + {"_ZN4llvm8FastISel23TargetMaterializeAllocaEPKNS_10AllocaInstE", "llvm::FastISel::TargetMaterializeAlloca(llvm::AllocaInst const*)"}, + {"_ZNSt6vectorISt4pairIPN4llvm12MachineInstrEjESaIS4_EE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPS4_S6_EEmRKS4_", "std::vector, std::allocator>>::_M_fill_insert(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, unsigned long, std::pair const&)"}, + {"_ZN4llvm20FunctionLoweringInfoC1ERKNS_14TargetLoweringE", "llvm::FunctionLoweringInfo::FunctionLoweringInfo(llvm::TargetLowering const&)"}, + {"_ZN4llvm20FunctionLoweringInfoC2ERKNS_14TargetLoweringE", "llvm::FunctionLoweringInfo::FunctionLoweringInfo(llvm::TargetLowering const&)"}, + {"_ZN4llvm20FunctionLoweringInfo3setERKNS_8FunctionERNS_15MachineFunctionE", "llvm::FunctionLoweringInfo::set(llvm::Function const&, llvm::MachineFunction&)"}, + {"_ZN4llvm20FunctionLoweringInfo5clearEv", "llvm::FunctionLoweringInfo::clear()"}, + {"_ZN4llvm20FunctionLoweringInfo9CreateRegENS_3EVTE", "llvm::FunctionLoweringInfo::CreateReg(llvm::EVT)"}, + {"_ZN4llvm20FunctionLoweringInfo10CreateRegsEPKNS_4TypeE", "llvm::FunctionLoweringInfo::CreateRegs(llvm::Type const*)"}, + {"_ZN4llvm20FunctionLoweringInfo26setByValArgumentFrameIndexEPKNS_8ArgumentEi", "llvm::FunctionLoweringInfo::setByValArgumentFrameIndex(llvm::Argument const*, int)"}, + {"_ZN4llvm20FunctionLoweringInfo26getByValArgumentFrameIndexEPKNS_8ArgumentE", "llvm::FunctionLoweringInfo::getByValArgumentFrameIndex(llvm::Argument const*)"}, + {"_ZN4llvm12AddCatchInfoERKNS_8CallInstEPNS_17MachineModuleInfoEPNS_17MachineBasicBlockE", "llvm::AddCatchInfo(llvm::CallInst const&, llvm::MachineModuleInfo*, llvm::MachineBasicBlock*)"}, + {"_ZN4llvm13CopyCatchInfoEPKNS_10BasicBlockES2_PNS_17MachineModuleInfoERNS_20FunctionLoweringInfoE", "llvm::CopyCatchInfo(llvm::BasicBlock const*, llvm::BasicBlock const*, llvm::MachineModuleInfo*, llvm::FunctionLoweringInfo&)"}, + {"_ZN4llvm8DenseMapIPKNS_8ArgumentEiNS_12DenseMapInfoIS3_EENS4_IiEEE16InsertIntoBucketERKS3_RKiPSt4pairIS3_iE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::Argument const* const&, int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_8ArgumentEiNS_12DenseMapInfoIS3_EENS4_IiEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKNS_8ArgumentEiNS_12DenseMapInfoIS3_EENS4_IiEEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm8DenseMapIPKNS_10AllocaInstEiNS_12DenseMapInfoIS3_EENS4_IiEEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm8DenseMapIPKNS_10BasicBlockEPNS_17MachineBasicBlockENS_12DenseMapInfoIS3_EENS6_IS5_EEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm12InstrEmitter12CountResultsEPNS_6SDNodeE", "llvm::InstrEmitter::CountResults(llvm::SDNode*)"}, + {"_ZN4llvm12InstrEmitter13CountOperandsEPNS_6SDNodeE", "llvm::InstrEmitter::CountOperands(llvm::SDNode*)"}, + {"_ZN4llvm12InstrEmitter15EmitCopyFromRegEPNS_6SDNodeEjbbjRNS_8DenseMapINS_7SDValueEjNS_12DenseMapInfoIS4_EENS5_IjEEEE", "llvm::InstrEmitter::EmitCopyFromReg(llvm::SDNode*, unsigned int, bool, bool, unsigned int, llvm::DenseMap, llvm::DenseMapInfo>&)"}, + {"_ZNK4llvm12InstrEmitter24getDstOfOnlyCopyToRegUseEPNS_6SDNodeEj", "llvm::InstrEmitter::getDstOfOnlyCopyToRegUse(llvm::SDNode*, unsigned int) const"}, + {"_ZN4llvm12InstrEmitter22CreateVirtualRegistersEPNS_6SDNodeEPNS_12MachineInstrERKNS_15TargetInstrDescEbbRNS_8DenseMapINS_7SDValueEjNS_12DenseMapInfoIS9_EENSA_IjEEEE", "llvm::InstrEmitter::CreateVirtualRegisters(llvm::SDNode*, llvm::MachineInstr*, llvm::TargetInstrDesc const&, bool, bool, llvm::DenseMap, llvm::DenseMapInfo>&)"}, + {"_ZN4llvm12InstrEmitter5getVRENS_7SDValueERNS_8DenseMapIS1_jNS_12DenseMapInfoIS1_EENS3_IjEEEE", "llvm::InstrEmitter::getVR(llvm::SDValue, llvm::DenseMap, llvm::DenseMapInfo>&)"}, + {"_ZN4llvm12InstrEmitter18AddRegisterOperandEPNS_12MachineInstrENS_7SDValueEjPKNS_15TargetInstrDescERNS_8DenseMapIS3_jNS_12DenseMapInfoIS3_EENS8_IjEEEEbbb", "llvm::InstrEmitter::AddRegisterOperand(llvm::MachineInstr*, llvm::SDValue, unsigned int, llvm::TargetInstrDesc const*, llvm::DenseMap, llvm::DenseMapInfo>&, bool, bool, bool)"}, + {"_ZN4llvm12InstrEmitter10AddOperandEPNS_12MachineInstrENS_7SDValueEjPKNS_15TargetInstrDescERNS_8DenseMapIS3_jNS_12DenseMapInfoIS3_EENS8_IjEEEEbbb", "llvm::InstrEmitter::AddOperand(llvm::MachineInstr*, llvm::SDValue, unsigned int, llvm::TargetInstrDesc const*, llvm::DenseMap, llvm::DenseMapInfo>&, bool, bool, bool)"}, + {"_ZN4llvm12InstrEmitter14EmitSubregNodeEPNS_6SDNodeERNS_8DenseMapINS_7SDValueEjNS_12DenseMapInfoIS4_EENS5_IjEEEEbb", "llvm::InstrEmitter::EmitSubregNode(llvm::SDNode*, llvm::DenseMap, llvm::DenseMapInfo>&, bool, bool)"}, + {"_ZN4llvm12InstrEmitter22EmitCopyToRegClassNodeEPNS_6SDNodeERNS_8DenseMapINS_7SDValueEjNS_12DenseMapInfoIS4_EENS5_IjEEEE", "llvm::InstrEmitter::EmitCopyToRegClassNode(llvm::SDNode*, llvm::DenseMap, llvm::DenseMapInfo>&)"}, + {"_ZN4llvm12InstrEmitter15EmitRegSequenceEPNS_6SDNodeERNS_8DenseMapINS_7SDValueEjNS_12DenseMapInfoIS4_EENS5_IjEEEEbb", "llvm::InstrEmitter::EmitRegSequence(llvm::SDNode*, llvm::DenseMap, llvm::DenseMapInfo>&, bool, bool)"}, + {"_ZN4llvm12InstrEmitter12EmitDbgValueEPNS_10SDDbgValueERNS_8DenseMapINS_7SDValueEjNS_12DenseMapInfoIS4_EENS5_IjEEEE", "llvm::InstrEmitter::EmitDbgValue(llvm::SDDbgValue*, llvm::DenseMap, llvm::DenseMapInfo>&)"}, + {"_ZN4llvm12InstrEmitter15EmitMachineNodeEPNS_6SDNodeEbbRNS_8DenseMapINS_7SDValueEjNS_12DenseMapInfoIS4_EENS5_IjEEEE", "llvm::InstrEmitter::EmitMachineNode(llvm::SDNode*, bool, bool, llvm::DenseMap, llvm::DenseMapInfo>&)"}, + {"_ZN4llvm12InstrEmitter15EmitSpecialNodeEPNS_6SDNodeEbbRNS_8DenseMapINS_7SDValueEjNS_12DenseMapInfoIS4_EENS5_IjEEEE", "llvm::InstrEmitter::EmitSpecialNode(llvm::SDNode*, bool, bool, llvm::DenseMap, llvm::DenseMapInfo>&)"}, + {"_ZN4llvm12InstrEmitterC1EPNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEE", "llvm::InstrEmitter::InstrEmitter(llvm::MachineBasicBlock*, llvm::ilist_iterator)"}, + {"_ZN4llvm12InstrEmitterC2EPNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEE", "llvm::InstrEmitter::InstrEmitter(llvm::MachineBasicBlock*, llvm::ilist_iterator)"}, + {"_ZN4llvm8DenseMapINS_7SDValueEjNS_12DenseMapInfoIS1_EENS2_IjEEE6insertERKSt4pairIS1_jE", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapINS_7SDValueEjNS_12DenseMapInfoIS1_EENS2_IjEEE4findERKS1_", "llvm::DenseMap, llvm::DenseMapInfo>::find(llvm::SDValue const&)"}, + {"_ZN4llvm8DenseMapINS_7SDValueEjNS_12DenseMapInfoIS1_EENS2_IjEEE16InsertIntoBucketERKS1_RKjPSt4pairIS1_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::SDValue const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapINS_7SDValueEjNS_12DenseMapInfoIS1_EENS2_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm12SelectionDAG8LegalizeENS_10CodeGenOpt5LevelE", "llvm::SelectionDAG::Legalize(llvm::CodeGenOpt::Level)"}, + {"_ZN12_GLOBAL__N_120SelectionDAGLegalize10LegalizeOpEN4llvm7SDValueE", "(anonymous namespace)::SelectionDAGLegalize::LegalizeOp(llvm::SDValue)"}, + {"_ZN12_GLOBAL__N_120SelectionDAGLegalize10ExpandNodeEPN4llvm6SDNodeERNS1_15SmallVectorImplINS1_7SDValueEEE", "(anonymous namespace)::SelectionDAGLegalize::ExpandNode(llvm::SDNode*, llvm::SmallVectorImpl&)"}, + {"_Z24FindCallEndFromCallStartPN4llvm6SDNodeEi", "FindCallEndFromCallStart(llvm::SDNode*, int)"}, + + // {"_ZN12_GLOBAL__N_120SelectionDAGLegalize28LegalizeAllNodesNotLeadingToEPN4llvm6SDNodeES3_RNS1_11SmallPtrSetIS3_Lj32EEE", + // "(anonymous namespace)::SelectionDAGLegalize::LegalizeAllNodesNotLeadingTo(llvm::SDNode*, llvm::SDNode*, llvm::SmallPtrSet&)"}, + // "(anonymous namespace)::SelectionDAGLegalize::LegalizeAllNodesNotLeadingTo(llvm::SDNode*, llvm::SDNode*, llvm::SmallPtrSet&)" was returned + + {"_Z19ExpandUnalignedLoadPN4llvm10LoadSDNodeERNS_12SelectionDAGERKNS_14TargetLoweringE", "ExpandUnalignedLoad(llvm::LoadSDNode*, llvm::SelectionDAG&, llvm::TargetLowering const&)"}, + {"_Z20ExpandUnalignedStorePN4llvm11StoreSDNodeERNS_12SelectionDAGERKNS_14TargetLoweringE", "ExpandUnalignedStore(llvm::StoreSDNode*, llvm::SelectionDAG&, llvm::TargetLowering const&)"}, + {"_ZN12_GLOBAL__N_120SelectionDAGLegalize29ExpandVectorBuildThroughStackEPN4llvm6SDNodeE", "(anonymous namespace)::SelectionDAGLegalize::ExpandVectorBuildThroughStack(llvm::SDNode*)"}, + {"_ZN12_GLOBAL__N_120SelectionDAGLegalize16EmitStackConvertEN4llvm7SDValueENS1_3EVTES3_NS1_8DebugLocE", "(anonymous namespace)::SelectionDAGLegalize::EmitStackConvert(llvm::SDValue, llvm::EVT, llvm::EVT, llvm::DebugLoc)"}, + {"_ZN12_GLOBAL__N_120SelectionDAGLegalize35ExpandExtractFromVectorThroughStackEN4llvm7SDValueE", "(anonymous namespace)::SelectionDAGLegalize::ExpandExtractFromVectorThroughStack(llvm::SDValue)"}, + {"_ZN12_GLOBAL__N_120SelectionDAGLegalize13ExpandLibCallEN4llvm5RTLIB7LibcallEPNS1_6SDNodeEb", "(anonymous namespace)::SelectionDAGLegalize::ExpandLibCall(llvm::RTLIB::Libcall, llvm::SDNode*, bool)"}, + {"_ZN12_GLOBAL__N_120SelectionDAGLegalize21LegalizeSetCCCondCodeEN4llvm3EVTERNS1_7SDValueES4_S4_NS1_8DebugLocE", "(anonymous namespace)::SelectionDAGLegalize::LegalizeSetCCCondCode(llvm::EVT, llvm::SDValue&, llvm::SDValue&, llvm::SDValue&, llvm::DebugLoc)"}, + {"_ZN12_GLOBAL__N_120SelectionDAGLegalize18ExpandChainLibCallEN4llvm5RTLIB7LibcallEPNS1_6SDNodeEb", "(anonymous namespace)::SelectionDAGLegalize::ExpandChainLibCall(llvm::RTLIB::Libcall, llvm::SDNode*, bool)"}, + {"_Z9SplatBytejh", "SplatByte(unsigned int, unsigned char)"}, + {"_ZN4llvm8DenseMapINS_7SDValueES1_NS_12DenseMapInfoIS1_EES3_E16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZNK4llvm14TargetLowering18getTypeToPromoteToEjNS_3EVTE", "llvm::TargetLowering::getTypeToPromoteTo(unsigned int, llvm::EVT) const"}, + {"_ZNK4llvm3EVT21getHalfSizedIntegerVTERNS_11LLVMContextE", "llvm::EVT::getHalfSizedIntegerVT(llvm::LLVMContext&) const"}, + {"_ZN4llvm8DenseMapINS_7SDValueES1_NS_12DenseMapInfoIS1_EES3_E6insertERKSt4pairIS1_S1_E", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm16DAGTypeLegalizer17SoftenFloatResultEPNS_6SDNodeEj", "llvm::DAGTypeLegalizer::SoftenFloatResult(llvm::SDNode*, unsigned int)"}, + {"_ZN4llvm16DAGTypeLegalizer22SoftenFloatRes_BITCASTEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatRes_BITCAST(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer25SoftenFloatRes_BUILD_PAIREPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatRes_BUILD_PAIR(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer25SoftenFloatRes_ConstantFPEPNS_16ConstantFPSDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatRes_ConstantFP(llvm::ConstantFPSDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer33SoftenFloatRes_EXTRACT_VECTOR_ELTEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatRes_EXTRACT_VECTOR_ELT(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer19SoftenFloatRes_FABSEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatRes_FABS(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer19SoftenFloatRes_FADDEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatRes_FADD(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer20SoftenFloatRes_FCEILEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatRes_FCEIL(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer24SoftenFloatRes_FCOPYSIGNEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatRes_FCOPYSIGN(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer19SoftenFloatRes_FCOSEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatRes_FCOS(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer19SoftenFloatRes_FDIVEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatRes_FDIV(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer19SoftenFloatRes_FEXPEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatRes_FEXP(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer20SoftenFloatRes_FEXP2EPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatRes_FEXP2(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer21SoftenFloatRes_FFLOOREPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatRes_FFLOOR(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer19SoftenFloatRes_FLOGEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatRes_FLOG(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer20SoftenFloatRes_FLOG2EPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatRes_FLOG2(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer21SoftenFloatRes_FLOG10EPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatRes_FLOG10(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer19SoftenFloatRes_FMULEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatRes_FMUL(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer25SoftenFloatRes_FNEARBYINTEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatRes_FNEARBYINT(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer19SoftenFloatRes_FNEGEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatRes_FNEG(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer24SoftenFloatRes_FP_EXTENDEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatRes_FP_EXTEND(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer23SoftenFloatRes_FP_ROUNDEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatRes_FP_ROUND(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer27SoftenFloatRes_FP16_TO_FP32EPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatRes_FP16_TO_FP32(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer19SoftenFloatRes_FPOWEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatRes_FPOW(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer20SoftenFloatRes_FPOWIEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatRes_FPOWI(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer19SoftenFloatRes_FREMEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatRes_FREM(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer20SoftenFloatRes_FRINTEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatRes_FRINT(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer19SoftenFloatRes_FSINEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatRes_FSIN(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer20SoftenFloatRes_FSQRTEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatRes_FSQRT(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer19SoftenFloatRes_FSUBEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatRes_FSUB(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer21SoftenFloatRes_FTRUNCEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatRes_FTRUNC(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer19SoftenFloatRes_LOADEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatRes_LOAD(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer21SoftenFloatRes_SELECTEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatRes_SELECT(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer24SoftenFloatRes_SELECT_CCEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatRes_SELECT_CC(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer25SoftenFloatRes_XINT_TO_FPEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatRes_XINT_TO_FP(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer20SoftenFloatRes_UNDEFEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatRes_UNDEF(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer20SoftenFloatRes_VAARGEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatRes_VAARG(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer18SoftenFloatOperandEPNS_6SDNodeEj", "llvm::DAGTypeLegalizer::SoftenFloatOperand(llvm::SDNode*, unsigned int)"}, + {"_ZN4llvm16DAGTypeLegalizer21SoftenFloatOp_BITCASTEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatOp_BITCAST(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer19SoftenFloatOp_BR_CCEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatOp_BR_CC(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer22SoftenFloatOp_FP_ROUNDEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatOp_FP_ROUND(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer24SoftenFloatOp_FP_TO_SINTEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatOp_FP_TO_SINT(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer24SoftenFloatOp_FP_TO_UINTEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatOp_FP_TO_UINT(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer26SoftenFloatOp_FP32_TO_FP16EPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatOp_FP32_TO_FP16(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer23SoftenFloatOp_SELECT_CCEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatOp_SELECT_CC(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer19SoftenFloatOp_SETCCEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SoftenFloatOp_SETCC(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer19SoftenFloatOp_STOREEPNS_6SDNodeEj", "llvm::DAGTypeLegalizer::SoftenFloatOp_STORE(llvm::SDNode*, unsigned int)"}, + {"_ZN4llvm16DAGTypeLegalizer19SoftenSetCCOperandsERNS_7SDValueES2_RNS_3ISD8CondCodeENS_8DebugLocE", "llvm::DAGTypeLegalizer::SoftenSetCCOperands(llvm::SDValue&, llvm::SDValue&, llvm::ISD::CondCode&, llvm::DebugLoc)"}, + {"_ZN4llvm16DAGTypeLegalizer17ExpandFloatResultEPNS_6SDNodeEj", "llvm::DAGTypeLegalizer::ExpandFloatResult(llvm::SDNode*, unsigned int)"}, + {"_ZN4llvm16DAGTypeLegalizer25ExpandFloatRes_ConstantFPEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandFloatRes_ConstantFP(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer19ExpandFloatRes_FABSEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandFloatRes_FABS(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer19ExpandFloatRes_FADDEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandFloatRes_FADD(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer20ExpandFloatRes_FCEILEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandFloatRes_FCEIL(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer24ExpandFloatRes_FCOPYSIGNEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandFloatRes_FCOPYSIGN(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer19ExpandFloatRes_FCOSEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandFloatRes_FCOS(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer19ExpandFloatRes_FDIVEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandFloatRes_FDIV(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer19ExpandFloatRes_FEXPEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandFloatRes_FEXP(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer20ExpandFloatRes_FEXP2EPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandFloatRes_FEXP2(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer21ExpandFloatRes_FFLOOREPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandFloatRes_FFLOOR(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer19ExpandFloatRes_FLOGEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandFloatRes_FLOG(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer20ExpandFloatRes_FLOG2EPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandFloatRes_FLOG2(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer21ExpandFloatRes_FLOG10EPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandFloatRes_FLOG10(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer19ExpandFloatRes_FMULEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandFloatRes_FMUL(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer25ExpandFloatRes_FNEARBYINTEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandFloatRes_FNEARBYINT(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer19ExpandFloatRes_FNEGEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandFloatRes_FNEG(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer24ExpandFloatRes_FP_EXTENDEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandFloatRes_FP_EXTEND(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer19ExpandFloatRes_FPOWEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandFloatRes_FPOW(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer20ExpandFloatRes_FPOWIEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandFloatRes_FPOWI(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer20ExpandFloatRes_FRINTEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandFloatRes_FRINT(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer19ExpandFloatRes_FSINEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandFloatRes_FSIN(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer20ExpandFloatRes_FSQRTEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandFloatRes_FSQRT(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer19ExpandFloatRes_FSUBEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandFloatRes_FSUB(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer21ExpandFloatRes_FTRUNCEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandFloatRes_FTRUNC(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer19ExpandFloatRes_LOADEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandFloatRes_LOAD(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer25ExpandFloatRes_XINT_TO_FPEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandFloatRes_XINT_TO_FP(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer18ExpandFloatOperandEPNS_6SDNodeEj", "llvm::DAGTypeLegalizer::ExpandFloatOperand(llvm::SDNode*, unsigned int)"}, + {"_ZN4llvm16DAGTypeLegalizer19ExpandFloatOp_BR_CCEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ExpandFloatOp_BR_CC(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer22ExpandFloatOp_FP_ROUNDEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ExpandFloatOp_FP_ROUND(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer24ExpandFloatOp_FP_TO_SINTEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ExpandFloatOp_FP_TO_SINT(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer24ExpandFloatOp_FP_TO_UINTEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ExpandFloatOp_FP_TO_UINT(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer23ExpandFloatOp_SELECT_CCEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ExpandFloatOp_SELECT_CC(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer19ExpandFloatOp_SETCCEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ExpandFloatOp_SETCC(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer19ExpandFloatOp_STOREEPNS_6SDNodeEj", "llvm::DAGTypeLegalizer::ExpandFloatOp_STORE(llvm::SDNode*, unsigned int)"}, + {"_ZN4llvm16DAGTypeLegalizer24FloatExpandSetCCOperandsERNS_7SDValueES2_RNS_3ISD8CondCodeENS_8DebugLocE", "llvm::DAGTypeLegalizer::FloatExpandSetCCOperands(llvm::SDValue&, llvm::SDValue&, llvm::ISD::CondCode&, llvm::DebugLoc)"}, + {"_ZN4llvm16DAGTypeLegalizer20PromoteIntegerResultEPNS_6SDNodeEj", "llvm::DAGTypeLegalizer::PromoteIntegerResult(llvm::SDNode*, unsigned int)"}, + {"_ZN4llvm16DAGTypeLegalizer24PromoteIntRes_AssertSextEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntRes_AssertSext(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer24PromoteIntRes_AssertZextEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntRes_AssertZext(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer21PromoteIntRes_BITCASTEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntRes_BITCAST(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer19PromoteIntRes_BSWAPEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntRes_BSWAP(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer24PromoteIntRes_BUILD_PAIREPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntRes_BUILD_PAIR(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer22PromoteIntRes_ConstantEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntRes_Constant(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer28PromoteIntRes_CONVERT_RNDSATEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntRes_CONVERT_RNDSAT(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer18PromoteIntRes_CTLZEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntRes_CTLZ(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer19PromoteIntRes_CTPOPEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntRes_CTPOP(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer18PromoteIntRes_CTTZEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntRes_CTTZ(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer32PromoteIntRes_EXTRACT_VECTOR_ELTEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntRes_EXTRACT_VECTOR_ELT(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer18PromoteIntRes_LOADEPNS_10LoadSDNodeE", "llvm::DAGTypeLegalizer::PromoteIntRes_LOAD(llvm::LoadSDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer20PromoteIntRes_SELECTEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntRes_SELECT(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer23PromoteIntRes_SELECT_CCEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntRes_SELECT_CC(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer19PromoteIntRes_SETCCEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntRes_SETCC(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer17PromoteIntRes_SHLEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntRes_SHL(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer31PromoteIntRes_SIGN_EXTEND_INREGEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntRes_SIGN_EXTEND_INREG(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer17PromoteIntRes_SRAEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntRes_SRA(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer17PromoteIntRes_SRLEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntRes_SRL(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer22PromoteIntRes_TRUNCATEEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntRes_TRUNCATE(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer19PromoteIntRes_UNDEFEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntRes_UNDEF(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer19PromoteIntRes_VAARGEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntRes_VAARG(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer24PromoteIntRes_INT_EXTENDEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntRes_INT_EXTEND(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer24PromoteIntRes_FP_TO_XINTEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntRes_FP_TO_XINT(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer26PromoteIntRes_FP32_TO_FP16EPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntRes_FP32_TO_FP16(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer28PromoteIntRes_SimpleIntBinOpEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntRes_SimpleIntBinOp(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer18PromoteIntRes_SDIVEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntRes_SDIV(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer18PromoteIntRes_UDIVEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntRes_UDIV(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer22PromoteIntRes_SADDSUBOEPNS_6SDNodeEj", "llvm::DAGTypeLegalizer::PromoteIntRes_SADDSUBO(llvm::SDNode*, unsigned int)"}, + {"_ZN4llvm16DAGTypeLegalizer22PromoteIntRes_UADDSUBOEPNS_6SDNodeEj", "llvm::DAGTypeLegalizer::PromoteIntRes_UADDSUBO(llvm::SDNode*, unsigned int)"}, + {"_ZN4llvm16DAGTypeLegalizer19PromoteIntRes_XMULOEPNS_6SDNodeEj", "llvm::DAGTypeLegalizer::PromoteIntRes_XMULO(llvm::SDNode*, unsigned int)"}, + {"_ZN4llvm16DAGTypeLegalizer21PromoteIntRes_Atomic1EPNS_12AtomicSDNodeE", "llvm::DAGTypeLegalizer::PromoteIntRes_Atomic1(llvm::AtomicSDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer21PromoteIntRes_Atomic2EPNS_12AtomicSDNodeE", "llvm::DAGTypeLegalizer::PromoteIntRes_Atomic2(llvm::AtomicSDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer22PromoteIntRes_OverflowEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntRes_Overflow(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer21PromoteIntegerOperandEPNS_6SDNodeEj", "llvm::DAGTypeLegalizer::PromoteIntegerOperand(llvm::SDNode*, unsigned int)"}, + {"_ZN4llvm16DAGTypeLegalizer23PromoteIntOp_ANY_EXTENDEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntOp_ANY_EXTEND(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer20PromoteIntOp_BITCASTEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntOp_BITCAST(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer18PromoteIntOp_BR_CCEPNS_6SDNodeEj", "llvm::DAGTypeLegalizer::PromoteIntOp_BR_CC(llvm::SDNode*, unsigned int)"}, + {"_ZN4llvm16DAGTypeLegalizer19PromoteIntOp_BRCONDEPNS_6SDNodeEj", "llvm::DAGTypeLegalizer::PromoteIntOp_BRCOND(llvm::SDNode*, unsigned int)"}, + {"_ZN4llvm16DAGTypeLegalizer23PromoteIntOp_BUILD_PAIREPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntOp_BUILD_PAIR(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer25PromoteIntOp_BUILD_VECTOREPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntOp_BUILD_VECTOR(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer27PromoteIntOp_CONVERT_RNDSATEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntOp_CONVERT_RNDSAT(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer30PromoteIntOp_INSERT_VECTOR_ELTEPNS_6SDNodeEj", "llvm::DAGTypeLegalizer::PromoteIntOp_INSERT_VECTOR_ELT(llvm::SDNode*, unsigned int)"}, + {"_ZN4llvm16DAGTypeLegalizer23PromoteIntOp_MEMBARRIEREPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntOp_MEMBARRIER(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer29PromoteIntOp_SCALAR_TO_VECTOREPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntOp_SCALAR_TO_VECTOR(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer19PromoteIntOp_SELECTEPNS_6SDNodeEj", "llvm::DAGTypeLegalizer::PromoteIntOp_SELECT(llvm::SDNode*, unsigned int)"}, + {"_ZN4llvm16DAGTypeLegalizer22PromoteIntOp_SELECT_CCEPNS_6SDNodeEj", "llvm::DAGTypeLegalizer::PromoteIntOp_SELECT_CC(llvm::SDNode*, unsigned int)"}, + {"_ZN4llvm16DAGTypeLegalizer18PromoteIntOp_SETCCEPNS_6SDNodeEj", "llvm::DAGTypeLegalizer::PromoteIntOp_SETCC(llvm::SDNode*, unsigned int)"}, + {"_ZN4llvm16DAGTypeLegalizer24PromoteIntOp_SIGN_EXTENDEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntOp_SIGN_EXTEND(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer23PromoteIntOp_SINT_TO_FPEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntOp_SINT_TO_FP(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer18PromoteIntOp_STOREEPNS_11StoreSDNodeEj", "llvm::DAGTypeLegalizer::PromoteIntOp_STORE(llvm::StoreSDNode*, unsigned int)"}, + {"_ZN4llvm16DAGTypeLegalizer21PromoteIntOp_TRUNCATEEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntOp_TRUNCATE(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer23PromoteIntOp_UINT_TO_FPEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntOp_UINT_TO_FP(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer24PromoteIntOp_ZERO_EXTENDEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntOp_ZERO_EXTEND(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer18PromoteIntOp_ShiftEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::PromoteIntOp_Shift(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer20PromoteSetCCOperandsERNS_7SDValueES2_NS_3ISD8CondCodeE", "llvm::DAGTypeLegalizer::PromoteSetCCOperands(llvm::SDValue&, llvm::SDValue&, llvm::ISD::CondCode)"}, + {"_ZN4llvm16DAGTypeLegalizer19ExpandIntegerResultEPNS_6SDNodeEj", "llvm::DAGTypeLegalizer::ExpandIntegerResult(llvm::SDNode*, unsigned int)"}, + {"_ZN4llvm16DAGTypeLegalizer23ExpandIntRes_ANY_EXTENDEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandIntRes_ANY_EXTEND(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer23ExpandIntRes_AssertSextEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandIntRes_AssertSext(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer23ExpandIntRes_AssertZextEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandIntRes_AssertZext(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer18ExpandIntRes_BSWAPEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandIntRes_BSWAP(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer21ExpandIntRes_ConstantEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandIntRes_Constant(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer17ExpandIntRes_CTLZEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandIntRes_CTLZ(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer18ExpandIntRes_CTPOPEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandIntRes_CTPOP(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer17ExpandIntRes_CTTZEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandIntRes_CTTZ(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer23ExpandIntRes_FP_TO_SINTEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandIntRes_FP_TO_SINT(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer23ExpandIntRes_FP_TO_UINTEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandIntRes_FP_TO_UINT(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer17ExpandIntRes_LOADEPNS_10LoadSDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandIntRes_LOAD(llvm::LoadSDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer16ExpandIntRes_MULEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandIntRes_MUL(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer17ExpandIntRes_SDIVEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandIntRes_SDIV(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer24ExpandIntRes_SIGN_EXTENDEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandIntRes_SIGN_EXTEND(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer30ExpandIntRes_SIGN_EXTEND_INREGEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandIntRes_SIGN_EXTEND_INREG(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer17ExpandIntRes_SREMEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandIntRes_SREM(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer21ExpandIntRes_TRUNCATEEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandIntRes_TRUNCATE(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer17ExpandIntRes_UDIVEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandIntRes_UDIV(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer17ExpandIntRes_UREMEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandIntRes_UREM(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer24ExpandIntRes_ZERO_EXTENDEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandIntRes_ZERO_EXTEND(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer12ExpandAtomicEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ExpandAtomic(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer20ExpandIntRes_LogicalEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandIntRes_Logical(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer19ExpandIntRes_ADDSUBEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandIntRes_ADDSUB(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer20ExpandIntRes_ADDSUBCEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandIntRes_ADDSUBC(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer20ExpandIntRes_ADDSUBEEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandIntRes_ADDSUBE(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer18ExpandIntRes_ShiftEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandIntRes_Shift(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer21ExpandIntRes_SADDSUBOEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandIntRes_SADDSUBO(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer21ExpandIntRes_UADDSUBOEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandIntRes_UADDSUBO(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer22ExpandIntRes_UMULSMULOEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandIntRes_UMULSMULO(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer21ExpandShiftByConstantEPNS_6SDNodeEjRNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandShiftByConstant(llvm::SDNode*, unsigned int, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer29ExpandShiftWithKnownAmountBitEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandShiftWithKnownAmountBit(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer31ExpandShiftWithUnknownAmountBitEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandShiftWithUnknownAmountBit(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer20ExpandIntegerOperandEPNS_6SDNodeEj", "llvm::DAGTypeLegalizer::ExpandIntegerOperand(llvm::SDNode*, unsigned int)"}, + {"_ZN4llvm16DAGTypeLegalizer17ExpandIntOp_BR_CCEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ExpandIntOp_BR_CC(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer21ExpandIntOp_SELECT_CCEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ExpandIntOp_SELECT_CC(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer17ExpandIntOp_SETCCEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ExpandIntOp_SETCC(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer22ExpandIntOp_SINT_TO_FPEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ExpandIntOp_SINT_TO_FP(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer17ExpandIntOp_STOREEPNS_11StoreSDNodeEj", "llvm::DAGTypeLegalizer::ExpandIntOp_STORE(llvm::StoreSDNode*, unsigned int)"}, + {"_ZN4llvm16DAGTypeLegalizer20ExpandIntOp_TRUNCATEEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ExpandIntOp_TRUNCATE(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer22ExpandIntOp_UINT_TO_FPEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ExpandIntOp_UINT_TO_FP(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer17ExpandIntOp_ShiftEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ExpandIntOp_Shift(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer22ExpandIntOp_RETURNADDREPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ExpandIntOp_RETURNADDR(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer26IntegerExpandSetCCOperandsERNS_7SDValueES2_RNS_3ISD8CondCodeENS_8DebugLocE", "llvm::DAGTypeLegalizer::IntegerExpandSetCCOperands(llvm::SDValue&, llvm::SDValue&, llvm::ISD::CondCode&, llvm::DebugLoc)"}, + {"_ZN4llvm16DAGTypeLegalizer22PerformExpensiveChecksEv", "llvm::DAGTypeLegalizer::PerformExpensiveChecks()"}, + {"_ZN4llvm16DAGTypeLegalizer3runEv", "llvm::DAGTypeLegalizer::run()"}, + {"_ZN4llvm16DAGTypeLegalizer14AnalyzeNewNodeEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::AnalyzeNewNode(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer16ReplaceValueWithENS_7SDValueES1_", "llvm::DAGTypeLegalizer::ReplaceValueWith(llvm::SDValue, llvm::SDValue)"}, + {"_ZN4llvm16DAGTypeLegalizer11ExpungeNodeEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ExpungeNode(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer15AnalyzeNewValueERNS_7SDValueE", "llvm::DAGTypeLegalizer::AnalyzeNewValue(llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer10RemapValueERNS_7SDValueE", "llvm::DAGTypeLegalizer::RemapValue(llvm::SDValue&)"}, + {"_ZN12_GLOBAL__N_118NodeUpdateListenerD1Ev", "(anonymous namespace)::NodeUpdateListener::~NodeUpdateListener()"}, + {"_ZN4llvm16DAGTypeLegalizer18SetPromotedIntegerENS_7SDValueES1_", "llvm::DAGTypeLegalizer::SetPromotedInteger(llvm::SDValue, llvm::SDValue)"}, + {"_ZN4llvm16DAGTypeLegalizer16SetSoftenedFloatENS_7SDValueES1_", "llvm::DAGTypeLegalizer::SetSoftenedFloat(llvm::SDValue, llvm::SDValue)"}, + {"_ZN4llvm16DAGTypeLegalizer19SetScalarizedVectorENS_7SDValueES1_", "llvm::DAGTypeLegalizer::SetScalarizedVector(llvm::SDValue, llvm::SDValue)"}, + {"_ZN4llvm16DAGTypeLegalizer18GetExpandedIntegerENS_7SDValueERS1_S2_", "llvm::DAGTypeLegalizer::GetExpandedInteger(llvm::SDValue, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer18SetExpandedIntegerENS_7SDValueES1_S1_", "llvm::DAGTypeLegalizer::SetExpandedInteger(llvm::SDValue, llvm::SDValue, llvm::SDValue)"}, + {"_ZN4llvm16DAGTypeLegalizer16GetExpandedFloatENS_7SDValueERS1_S2_", "llvm::DAGTypeLegalizer::GetExpandedFloat(llvm::SDValue, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer16SetExpandedFloatENS_7SDValueES1_S1_", "llvm::DAGTypeLegalizer::SetExpandedFloat(llvm::SDValue, llvm::SDValue, llvm::SDValue)"}, + {"_ZN4llvm16DAGTypeLegalizer14GetSplitVectorENS_7SDValueERS1_S2_", "llvm::DAGTypeLegalizer::GetSplitVector(llvm::SDValue, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer14SetSplitVectorENS_7SDValueES1_S1_", "llvm::DAGTypeLegalizer::SetSplitVector(llvm::SDValue, llvm::SDValue, llvm::SDValue)"}, + {"_ZN4llvm16DAGTypeLegalizer16SetWidenedVectorENS_7SDValueES1_", "llvm::DAGTypeLegalizer::SetWidenedVector(llvm::SDValue, llvm::SDValue)"}, + {"_ZN4llvm16DAGTypeLegalizer19BitConvertToIntegerENS_7SDValueE", "llvm::DAGTypeLegalizer::BitConvertToInteger(llvm::SDValue)"}, + {"_ZN4llvm16DAGTypeLegalizer31BitConvertVectorToIntegerVectorENS_7SDValueE", "llvm::DAGTypeLegalizer::BitConvertVectorToIntegerVector(llvm::SDValue)"}, + {"_ZN4llvm16DAGTypeLegalizer20CreateStackStoreLoadENS_7SDValueENS_3EVTE", "llvm::DAGTypeLegalizer::CreateStackStoreLoad(llvm::SDValue, llvm::EVT)"}, + {"_ZN4llvm16DAGTypeLegalizer15CustomLowerNodeEPNS_6SDNodeENS_3EVTEb", "llvm::DAGTypeLegalizer::CustomLowerNode(llvm::SDNode*, llvm::EVT, bool)"}, + {"_ZN4llvm16DAGTypeLegalizer20CustomWidenLowerNodeEPNS_6SDNodeENS_3EVTE", "llvm::DAGTypeLegalizer::CustomWidenLowerNode(llvm::SDNode*, llvm::EVT)"}, + {"_ZN4llvm16DAGTypeLegalizer15GetSplitDestVTsENS_3EVTERS1_S2_", "llvm::DAGTypeLegalizer::GetSplitDestVTs(llvm::EVT, llvm::EVT&, llvm::EVT&)"}, + {"_ZN4llvm16DAGTypeLegalizer15GetPairElementsENS_7SDValueERS1_S2_", "llvm::DAGTypeLegalizer::GetPairElements(llvm::SDValue, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer23GetVectorElementPointerENS_7SDValueENS_3EVTES1_", "llvm::DAGTypeLegalizer::GetVectorElementPointer(llvm::SDValue, llvm::EVT, llvm::SDValue)"}, + {"_ZN4llvm16DAGTypeLegalizer12JoinIntegersENS_7SDValueES1_", "llvm::DAGTypeLegalizer::JoinIntegers(llvm::SDValue, llvm::SDValue)"}, + {"_ZN4llvm16DAGTypeLegalizer10LibCallifyENS_5RTLIB7LibcallEPNS_6SDNodeEb", "llvm::DAGTypeLegalizer::LibCallify(llvm::RTLIB::Libcall, llvm::SDNode*, bool)"}, + {"_ZN4llvm16DAGTypeLegalizer11MakeLibCallENS_5RTLIB7LibcallENS_3EVTEPKNS_7SDValueEjbNS_8DebugLocE", "llvm::DAGTypeLegalizer::MakeLibCall(llvm::RTLIB::Libcall, llvm::EVT, llvm::SDValue const*, unsigned int, bool, llvm::DebugLoc)"}, + {"_ZN4llvm16DAGTypeLegalizer18ExpandChainLibCallENS_5RTLIB7LibcallEPNS_6SDNodeEb", "llvm::DAGTypeLegalizer::ExpandChainLibCall(llvm::RTLIB::Libcall, llvm::SDNode*, bool)"}, + {"_ZN4llvm16DAGTypeLegalizer20PromoteTargetBooleanENS_7SDValueENS_3EVTE", "llvm::DAGTypeLegalizer::PromoteTargetBoolean(llvm::SDValue, llvm::EVT)"}, + {"_ZN4llvm16DAGTypeLegalizer12SplitIntegerENS_7SDValueENS_3EVTES2_RS1_S3_", "llvm::DAGTypeLegalizer::SplitInteger(llvm::SDValue, llvm::EVT, llvm::EVT, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer12SplitIntegerENS_7SDValueERS1_S2_", "llvm::DAGTypeLegalizer::SplitInteger(llvm::SDValue, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm12SelectionDAG13LegalizeTypesEv", "llvm::SelectionDAG::LegalizeTypes()"}, + {"_ZN12_GLOBAL__N_118NodeUpdateListenerD0Ev", "(anonymous namespace)::NodeUpdateListener::~NodeUpdateListener()"}, + {"_ZN12_GLOBAL__N_118NodeUpdateListener11NodeDeletedEPN4llvm6SDNodeES3_", "(anonymous namespace)::NodeUpdateListener::NodeDeleted(llvm::SDNode*, llvm::SDNode*)"}, + {"_ZN12_GLOBAL__N_118NodeUpdateListener11NodeUpdatedEPN4llvm6SDNodeE", "(anonymous namespace)::NodeUpdateListener::NodeUpdated(llvm::SDNode*)"}, + {"_ZN4llvm8DenseMapINS_7SDValueES1_NS_12DenseMapInfoIS1_EES3_E4findERKS1_", "llvm::DenseMap, llvm::DenseMapInfo>::find(llvm::SDValue const&)"}, + {"_ZN4llvm8DenseMapINS_7SDValueESt4pairIS1_S1_ENS_12DenseMapInfoIS1_EENS4_IS3_EEE4findERKS1_", "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::find(llvm::SDValue const&)"}, + {"_ZNK4llvm16DAGTypeLegalizer13getTypeActionENS_3EVTE", "llvm::DAGTypeLegalizer::getTypeAction(llvm::EVT) const"}, + {"_ZN4llvm8DenseMapINS_7SDValueESt4pairIS1_S1_ENS_12DenseMapInfoIS1_EENS4_IS3_EEE16FindAndConstructERKS1_", "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::FindAndConstruct(llvm::SDValue const&)"}, + + // {"_ZN4llvm8DenseMapINS_7SDValueESt4pairIS1_S1_ENS_12DenseMapInfoIS1_EENS4_IS3_EEE16InsertIntoBucketERKS1_RKS3_PS2_IS1_S3_E", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(llvm::SDValue const&, std::pair const&, std::pair>*)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(llvm::SDValue const&, std::pair const&, std::pair*>)" was returned + + {"_ZN4llvm8DenseMapINS_7SDValueESt4pairIS1_S1_ENS_12DenseMapInfoIS1_EENS4_IS3_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapINS_7SDValueES1_NS_12DenseMapInfoIS1_EES3_E16FindAndConstructERKS1_", "llvm::DenseMap, llvm::DenseMapInfo>::FindAndConstruct(llvm::SDValue const&)"}, + {"_ZN4llvm8DenseMapINS_7SDValueES1_NS_12DenseMapInfoIS1_EES3_E16InsertIntoBucketERKS1_S6_PSt4pairIS1_S1_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::SDValue const&, llvm::SDValue const&, std::pair*)"}, + {"_ZN4llvm8DenseMapINS_7SDValueES1_NS_12DenseMapInfoIS1_EES3_E4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm16DAGTypeLegalizerD2Ev", "llvm::DAGTypeLegalizer::~DAGTypeLegalizer()"}, + {"_ZN4llvm16DAGTypeLegalizerC2ERNS_12SelectionDAGE", "llvm::DAGTypeLegalizer::DAGTypeLegalizer(llvm::SelectionDAG&)"}, + {"_ZN4llvm16DAGTypeLegalizer17ExpandRes_BITCASTEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandRes_BITCAST(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer20ExpandRes_BUILD_PAIREPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandRes_BUILD_PAIR(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer25ExpandRes_EXTRACT_ELEMENTEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandRes_EXTRACT_ELEMENT(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer28ExpandRes_EXTRACT_VECTOR_ELTEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandRes_EXTRACT_VECTOR_ELT(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer20ExpandRes_NormalLoadEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandRes_NormalLoad(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer15ExpandRes_VAARGEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::ExpandRes_VAARG(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer16ExpandOp_BITCASTEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ExpandOp_BITCAST(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer21ExpandOp_BUILD_VECTOREPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ExpandOp_BUILD_VECTOR(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer24ExpandOp_EXTRACT_ELEMENTEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ExpandOp_EXTRACT_ELEMENT(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer26ExpandOp_INSERT_VECTOR_ELTEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ExpandOp_INSERT_VECTOR_ELT(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer25ExpandOp_SCALAR_TO_VECTOREPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ExpandOp_SCALAR_TO_VECTOR(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer20ExpandOp_NormalStoreEPNS_6SDNodeEj", "llvm::DAGTypeLegalizer::ExpandOp_NormalStore(llvm::SDNode*, unsigned int)"}, + {"_ZN4llvm16DAGTypeLegalizer21SplitRes_MERGE_VALUESEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::SplitRes_MERGE_VALUES(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer15SplitRes_SELECTEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::SplitRes_SELECT(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer18SplitRes_SELECT_CCEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::SplitRes_SELECT_CC(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer14SplitRes_UNDEFEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::SplitRes_UNDEF(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZNSt6vectorIN4llvm7SDValueESaIS1_EE7reserveEm", "std::vector>::reserve(unsigned long)"}, + {"_ZN4llvm16DAGTypeLegalizer10GetSplitOpENS_7SDValueERS1_S2_", "llvm::DAGTypeLegalizer::GetSplitOp(llvm::SDValue, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm12SelectionDAG15LegalizeVectorsEv", "llvm::SelectionDAG::LegalizeVectors()"}, + {"_ZN12_GLOBAL__N_115VectorLegalizer10LegalizeOpEN4llvm7SDValueE", "(anonymous namespace)::VectorLegalizer::LegalizeOp(llvm::SDValue)"}, + {"_ZN4llvm16DAGTypeLegalizer21ScalarizeVectorResultEPNS_6SDNodeEj", "llvm::DAGTypeLegalizer::ScalarizeVectorResult(llvm::SDNode*, unsigned int)"}, + {"_ZN4llvm16DAGTypeLegalizer23ScalarizeVecRes_BITCASTEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ScalarizeVecRes_BITCAST(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer30ScalarizeVecRes_CONVERT_RNDSATEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ScalarizeVecRes_CONVERT_RNDSAT(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer33ScalarizeVecRes_EXTRACT_SUBVECTOREPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ScalarizeVecRes_EXTRACT_SUBVECTOR(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer23ScalarizeVecRes_InregOpEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ScalarizeVecRes_InregOp(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer21ScalarizeVecRes_FPOWIEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ScalarizeVecRes_FPOWI(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer33ScalarizeVecRes_INSERT_VECTOR_ELTEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ScalarizeVecRes_INSERT_VECTOR_ELT(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer20ScalarizeVecRes_LOADEPNS_10LoadSDNodeE", "llvm::DAGTypeLegalizer::ScalarizeVecRes_LOAD(llvm::LoadSDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer32ScalarizeVecRes_SCALAR_TO_VECTOREPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ScalarizeVecRes_SCALAR_TO_VECTOR(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer22ScalarizeVecRes_SELECTEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ScalarizeVecRes_SELECT(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer25ScalarizeVecRes_SELECT_CCEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ScalarizeVecRes_SELECT_CC(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer21ScalarizeVecRes_SETCCEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ScalarizeVecRes_SETCC(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer21ScalarizeVecRes_UNDEFEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ScalarizeVecRes_UNDEF(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer30ScalarizeVecRes_VECTOR_SHUFFLEEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ScalarizeVecRes_VECTOR_SHUFFLE(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer22ScalarizeVecRes_VSETCCEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ScalarizeVecRes_VSETCC(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer23ScalarizeVecRes_UnaryOpEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ScalarizeVecRes_UnaryOp(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer21ScalarizeVecRes_BinOpEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ScalarizeVecRes_BinOp(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer22ScalarizeVectorOperandEPNS_6SDNodeEj", "llvm::DAGTypeLegalizer::ScalarizeVectorOperand(llvm::SDNode*, unsigned int)"}, + {"_ZN4llvm16DAGTypeLegalizer22ScalarizeVecOp_BITCASTEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ScalarizeVecOp_BITCAST(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer29ScalarizeVecOp_CONCAT_VECTORSEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ScalarizeVecOp_CONCAT_VECTORS(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer33ScalarizeVecOp_EXTRACT_VECTOR_ELTEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::ScalarizeVecOp_EXTRACT_VECTOR_ELT(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer20ScalarizeVecOp_STOREEPNS_11StoreSDNodeEj", "llvm::DAGTypeLegalizer::ScalarizeVecOp_STORE(llvm::StoreSDNode*, unsigned int)"}, + {"_ZN4llvm16DAGTypeLegalizer17SplitVectorResultEPNS_6SDNodeEj", "llvm::DAGTypeLegalizer::SplitVectorResult(llvm::SDNode*, unsigned int)"}, + {"_ZN4llvm16DAGTypeLegalizer19SplitVecRes_BITCASTEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::SplitVecRes_BITCAST(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer24SplitVecRes_BUILD_VECTOREPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::SplitVecRes_BUILD_VECTOR(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer26SplitVecRes_CONCAT_VECTORSEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::SplitVecRes_CONCAT_VECTORS(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer26SplitVecRes_CONVERT_RNDSATEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::SplitVecRes_CONVERT_RNDSAT(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer29SplitVecRes_EXTRACT_SUBVECTOREPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::SplitVecRes_EXTRACT_SUBVECTOR(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer19SplitVecRes_InregOpEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::SplitVecRes_InregOp(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer17SplitVecRes_FPOWIEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::SplitVecRes_FPOWI(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer29SplitVecRes_INSERT_VECTOR_ELTEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::SplitVecRes_INSERT_VECTOR_ELT(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer28SplitVecRes_SCALAR_TO_VECTOREPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::SplitVecRes_SCALAR_TO_VECTOR(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer16SplitVecRes_LOADEPNS_10LoadSDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::SplitVecRes_LOAD(llvm::LoadSDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer17SplitVecRes_SETCCEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::SplitVecRes_SETCC(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer26SplitVecRes_VECTOR_SHUFFLEEPNS_19ShuffleVectorSDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::SplitVecRes_VECTOR_SHUFFLE(llvm::ShuffleVectorSDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer19SplitVecRes_UnaryOpEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::SplitVecRes_UnaryOp(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer17SplitVecRes_BinOpEPNS_6SDNodeERNS_7SDValueES4_", "llvm::DAGTypeLegalizer::SplitVecRes_BinOp(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZN4llvm16DAGTypeLegalizer18SplitVectorOperandEPNS_6SDNodeEj", "llvm::DAGTypeLegalizer::SplitVectorOperand(llvm::SDNode*, unsigned int)"}, + {"_ZN4llvm16DAGTypeLegalizer18SplitVecOp_BITCASTEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SplitVecOp_BITCAST(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer28SplitVecOp_EXTRACT_SUBVECTOREPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SplitVecOp_EXTRACT_SUBVECTOR(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer29SplitVecOp_EXTRACT_VECTOR_ELTEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SplitVecOp_EXTRACT_VECTOR_ELT(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer25SplitVecOp_CONCAT_VECTORSEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SplitVecOp_CONCAT_VECTORS(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer16SplitVecOp_STOREEPNS_11StoreSDNodeEj", "llvm::DAGTypeLegalizer::SplitVecOp_STORE(llvm::StoreSDNode*, unsigned int)"}, + {"_ZN4llvm16DAGTypeLegalizer18SplitVecOp_UnaryOpEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::SplitVecOp_UnaryOp(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer17WidenVectorResultEPNS_6SDNodeEj", "llvm::DAGTypeLegalizer::WidenVectorResult(llvm::SDNode*, unsigned int)"}, + {"_ZN4llvm16DAGTypeLegalizer19WidenVecRes_BITCASTEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::WidenVecRes_BITCAST(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer24WidenVecRes_BUILD_VECTOREPNS_6SDNodeE", "llvm::DAGTypeLegalizer::WidenVecRes_BUILD_VECTOR(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer26WidenVecRes_CONCAT_VECTORSEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::WidenVecRes_CONCAT_VECTORS(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer26WidenVecRes_CONVERT_RNDSATEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::WidenVecRes_CONVERT_RNDSAT(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer29WidenVecRes_EXTRACT_SUBVECTOREPNS_6SDNodeE", "llvm::DAGTypeLegalizer::WidenVecRes_EXTRACT_SUBVECTOR(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer19WidenVecRes_InregOpEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::WidenVecRes_InregOp(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer29WidenVecRes_INSERT_VECTOR_ELTEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::WidenVecRes_INSERT_VECTOR_ELT(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer16WidenVecRes_LOADEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::WidenVecRes_LOAD(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer28WidenVecRes_SCALAR_TO_VECTOREPNS_6SDNodeE", "llvm::DAGTypeLegalizer::WidenVecRes_SCALAR_TO_VECTOR(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer18WidenVecRes_SELECTEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::WidenVecRes_SELECT(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer21WidenVecRes_SELECT_CCEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::WidenVecRes_SELECT_CC(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer17WidenVecRes_SETCCEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::WidenVecRes_SETCC(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer17WidenVecRes_UNDEFEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::WidenVecRes_UNDEF(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer26WidenVecRes_VECTOR_SHUFFLEEPNS_19ShuffleVectorSDNodeE", "llvm::DAGTypeLegalizer::WidenVecRes_VECTOR_SHUFFLE(llvm::ShuffleVectorSDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer18WidenVecRes_VSETCCEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::WidenVecRes_VSETCC(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer18WidenVecRes_BinaryEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::WidenVecRes_Binary(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer16WidenVecRes_POWIEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::WidenVecRes_POWI(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer17WidenVecRes_ShiftEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::WidenVecRes_Shift(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer19WidenVecRes_ConvertEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::WidenVecRes_Convert(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer17WidenVecRes_UnaryEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::WidenVecRes_Unary(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer12ModifyToTypeENS_7SDValueENS_3EVTE", "llvm::DAGTypeLegalizer::ModifyToType(llvm::SDValue, llvm::EVT)"}, + + // {"_ZN4llvm16DAGTypeLegalizer22GenWidenVectorExtLoadsERNS_11SmallVectorINS_7SDValueELj16EEEPNS_10LoadSDNodeENS_3ISD11LoadExtTypeE", + // "llvm::DAGTypeLegalizer::GenWidenVectorExtLoads(llvm::SmallVector&, llvm::LoadSDNode*, llvm::ISD::LoadExtType)"}, + // "llvm::DAGTypeLegalizer::GenWidenVectorExtLoads(llvm::SmallVector&, llvm::LoadSDNode*, llvm::ISD::LoadExtType)" was returned + + + // {"_ZN4llvm16DAGTypeLegalizer19GenWidenVectorLoadsERNS_11SmallVectorINS_7SDValueELj16EEEPNS_10LoadSDNodeE", + // "llvm::DAGTypeLegalizer::GenWidenVectorLoads(llvm::SmallVector&, llvm::LoadSDNode*)"}, + // "llvm::DAGTypeLegalizer::GenWidenVectorLoads(llvm::SmallVector&, llvm::LoadSDNode*)" was returned + + {"_ZN4llvm16DAGTypeLegalizer18WidenVectorOperandEPNS_6SDNodeEj", "llvm::DAGTypeLegalizer::WidenVectorOperand(llvm::SDNode*, unsigned int)"}, + {"_ZN4llvm16DAGTypeLegalizer18WidenVecOp_BITCASTEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::WidenVecOp_BITCAST(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer25WidenVecOp_CONCAT_VECTORSEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::WidenVecOp_CONCAT_VECTORS(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer28WidenVecOp_EXTRACT_SUBVECTOREPNS_6SDNodeE", "llvm::DAGTypeLegalizer::WidenVecOp_EXTRACT_SUBVECTOR(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer29WidenVecOp_EXTRACT_VECTOR_ELTEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::WidenVecOp_EXTRACT_VECTOR_ELT(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer16WidenVecOp_STOREEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::WidenVecOp_STORE(llvm::SDNode*)"}, + {"_ZN4llvm16DAGTypeLegalizer18WidenVecOp_ConvertEPNS_6SDNodeE", "llvm::DAGTypeLegalizer::WidenVecOp_Convert(llvm::SDNode*)"}, + + // {"_ZN4llvm16DAGTypeLegalizer25GenWidenVectorTruncStoresERNS_11SmallVectorINS_7SDValueELj16EEEPNS_11StoreSDNodeE", + // "llvm::DAGTypeLegalizer::GenWidenVectorTruncStores(llvm::SmallVector&, llvm::StoreSDNode*)"}, + // "llvm::DAGTypeLegalizer::GenWidenVectorTruncStores(llvm::SmallVector&, llvm::StoreSDNode*)" was returned + + + // {"_ZN4llvm16DAGTypeLegalizer20GenWidenVectorStoresERNS_11SmallVectorINS_7SDValueELj16EEEPNS_11StoreSDNodeE", + // "llvm::DAGTypeLegalizer::GenWidenVectorStores(llvm::SmallVector&, llvm::StoreSDNode*)"}, + // "llvm::DAGTypeLegalizer::GenWidenVectorStores(llvm::SmallVector&, llvm::StoreSDNode*)" was returned + + {"_Z11FindMemTypeRN4llvm12SelectionDAGERKNS_14TargetLoweringEjNS_3EVTEjj", "FindMemType(llvm::SelectionDAG&, llvm::TargetLowering const&, unsigned int, llvm::EVT, unsigned int, unsigned int)"}, + + // {"_Z21BuildVectorFromScalarRN4llvm12SelectionDAGENS_3EVTERNS_11SmallVectorINS_7SDValueELj16EEEjj", + // "BuildVectorFromScalar(llvm::SelectionDAG&, llvm::EVT, llvm::SmallVector&, unsigned int, unsigned int)"}, + // "BuildVectorFromScalar(llvm::SelectionDAG&, llvm::EVT, llvm::SmallVector&, unsigned int, unsigned int)" was returned + + {"_ZN4llvm16DAGTypeLegalizer13GetExpandedOpENS_7SDValueERS1_S2_", "llvm::DAGTypeLegalizer::GetExpandedOp(llvm::SDValue, llvm::SDValue&, llvm::SDValue&)"}, + {"_ZNK4llvm3EVT6bitsEqES0_", "llvm::EVT::bitsEq(llvm::EVT) const"}, + {"_ZN4llvm24createTDListDAGSchedulerEPNS_16SelectionDAGISelENS_10CodeGenOpt5LevelE", "llvm::createTDListDAGScheduler(llvm::SelectionDAGISel*, llvm::CodeGenOpt::Level)"}, + {"_ZN12_GLOBAL__N_115ScheduleDAGListD1Ev", "(anonymous namespace)::ScheduleDAGList::~ScheduleDAGList()"}, + {"_ZN12_GLOBAL__N_115ScheduleDAGListD0Ev", "(anonymous namespace)::ScheduleDAGList::~ScheduleDAGList()"}, + {"_ZN12_GLOBAL__N_115ScheduleDAGList8ScheduleEv", "(anonymous namespace)::ScheduleDAGList::Schedule()"}, + {"_ZN12_GLOBAL__N_115ScheduleDAGList17ReleaseSuccessorsEPN4llvm5SUnitE", "(anonymous namespace)::ScheduleDAGList::ReleaseSuccessors(llvm::SUnit*)"}, + {"_ZN4llvm26createBURRListDAGSchedulerEPNS_16SelectionDAGISelENS_10CodeGenOpt5LevelE", "llvm::createBURRListDAGScheduler(llvm::SelectionDAGISel*, llvm::CodeGenOpt::Level)"}, + {"_ZN4llvm26createTDRRListDAGSchedulerEPNS_16SelectionDAGISelENS_10CodeGenOpt5LevelE", "llvm::createTDRRListDAGScheduler(llvm::SelectionDAGISel*, llvm::CodeGenOpt::Level)"}, + {"_ZN4llvm28createSourceListDAGSchedulerEPNS_16SelectionDAGISelENS_10CodeGenOpt5LevelE", "llvm::createSourceListDAGScheduler(llvm::SelectionDAGISel*, llvm::CodeGenOpt::Level)"}, + {"_ZN4llvm28createHybridListDAGSchedulerEPNS_16SelectionDAGISelENS_10CodeGenOpt5LevelE", "llvm::createHybridListDAGScheduler(llvm::SelectionDAGISel*, llvm::CodeGenOpt::Level)"}, + {"_ZN4llvm25createILPListDAGSchedulerEPNS_16SelectionDAGISelENS_10CodeGenOpt5LevelE", "llvm::createILPListDAGScheduler(llvm::SelectionDAGISel*, llvm::CodeGenOpt::Level)"}, + {"_ZN12_GLOBAL__N_117ScheduleDAGRRListC1ERN4llvm15MachineFunctionEbPNS1_23SchedulingPriorityQueueENS1_10CodeGenOpt5LevelE", "(anonymous namespace)::ScheduleDAGRRList::ScheduleDAGRRList(llvm::MachineFunction&, bool, llvm::SchedulingPriorityQueue*, llvm::CodeGenOpt::Level)"}, + {"_ZN12_GLOBAL__N_118RegReductionPQBaseC2ERN4llvm15MachineFunctionEbbPKNS1_15TargetInstrInfoEPKNS1_18TargetRegisterInfoEPKNS1_14TargetLoweringE", "(anonymous namespace)::RegReductionPQBase::RegReductionPQBase(llvm::MachineFunction&, bool, bool, llvm::TargetInstrInfo const*, llvm::TargetRegisterInfo const*, llvm::TargetLowering const*)"}, + {"_ZN12_GLOBAL__N_125RegReductionPriorityQueueINS_14ilp_ls_rr_sortEED1Ev", "(anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::ilp_ls_rr_sort>::~RegReductionPriorityQueue()"}, + {"_ZN12_GLOBAL__N_125RegReductionPriorityQueueINS_14ilp_ls_rr_sortEED0Ev", "(anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::ilp_ls_rr_sort>::~RegReductionPriorityQueue()"}, + {"_ZNK12_GLOBAL__N_125RegReductionPriorityQueueINS_14ilp_ls_rr_sortEE10isBottomUpEv", "(anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::ilp_ls_rr_sort>::isBottomUp() const"}, + {"_ZN12_GLOBAL__N_118RegReductionPQBase9initNodesERSt6vectorIN4llvm5SUnitESaIS3_EE", "(anonymous namespace)::RegReductionPQBase::initNodes(std::vector>&)"}, + {"_ZN12_GLOBAL__N_118RegReductionPQBase7addNodeEPKN4llvm5SUnitE", "(anonymous namespace)::RegReductionPQBase::addNode(llvm::SUnit const*)"}, + {"_ZN12_GLOBAL__N_118RegReductionPQBase10updateNodeEPKN4llvm5SUnitE", "(anonymous namespace)::RegReductionPQBase::updateNode(llvm::SUnit const*)"}, + {"_ZN12_GLOBAL__N_118RegReductionPQBase12releaseStateEv", "(anonymous namespace)::RegReductionPQBase::releaseState()"}, + {"_ZNK12_GLOBAL__N_118RegReductionPQBase5emptyEv", "(anonymous namespace)::RegReductionPQBase::empty() const"}, + {"_ZNK12_GLOBAL__N_118RegReductionPQBase17tracksRegPressureEv", "(anonymous namespace)::RegReductionPQBase::tracksRegPressure() const"}, + {"_ZNK12_GLOBAL__N_125RegReductionPriorityQueueINS_14ilp_ls_rr_sortEE7isReadyEPN4llvm5SUnitE", "(anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::ilp_ls_rr_sort>::isReady(llvm::SUnit*) const"}, + {"_ZN12_GLOBAL__N_118RegReductionPQBase4pushEPN4llvm5SUnitE", "(anonymous namespace)::RegReductionPQBase::push(llvm::SUnit*)"}, + {"_ZN12_GLOBAL__N_125RegReductionPriorityQueueINS_14ilp_ls_rr_sortEE3popEv", "(anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::ilp_ls_rr_sort>::pop()"}, + {"_ZN12_GLOBAL__N_118RegReductionPQBase6removeEPN4llvm5SUnitE", "(anonymous namespace)::RegReductionPQBase::remove(llvm::SUnit*)"}, + {"_ZNK12_GLOBAL__N_125RegReductionPriorityQueueINS_14ilp_ls_rr_sortEE4dumpEPN4llvm11ScheduleDAGE", "(anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::ilp_ls_rr_sort>::dump(llvm::ScheduleDAG*) const"}, + {"_ZN12_GLOBAL__N_118RegReductionPQBase13ScheduledNodeEPN4llvm5SUnitE", "(anonymous namespace)::RegReductionPQBase::ScheduledNode(llvm::SUnit*)"}, + {"_ZN12_GLOBAL__N_118RegReductionPQBase15UnscheduledNodeEPN4llvm5SUnitE", "(anonymous namespace)::RegReductionPQBase::UnscheduledNode(llvm::SUnit*)"}, + {"_ZN12_GLOBAL__N_125RegReductionPriorityQueueINS_14ilp_ls_rr_sortEE12popFromQueueERSt6vectorIPN4llvm5SUnitESaIS6_EERS1_", "(anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::ilp_ls_rr_sort>::popFromQueue(std::vector>&, (anonymous namespace)::ilp_ls_rr_sort&)"}, + {"_Z8BURRSortPN4llvm5SUnitES1_PN12_GLOBAL__N_118RegReductionPQBaseE", "BURRSort(llvm::SUnit*, llvm::SUnit*, (anonymous namespace)::RegReductionPQBase*)"}, + {"_ZNK12_GLOBAL__N_118RegReductionPQBase15HighRegPressureEPKN4llvm5SUnitE", "(anonymous namespace)::RegReductionPQBase::HighRegPressure(llvm::SUnit const*) const"}, + {"_Z11closestSuccPKN4llvm5SUnitE", "closestSucc(llvm::SUnit const*)"}, + {"_Z16BUCompareLatencyPN4llvm5SUnitES1_bPN12_GLOBAL__N_118RegReductionPQBaseE", "BUCompareLatency(llvm::SUnit*, llvm::SUnit*, bool, (anonymous namespace)::RegReductionPQBase*)"}, + {"_Z25CalcNodeSethiUllmanNumberPKN4llvm5SUnitERSt6vectorIjSaIjEE", "CalcNodeSethiUllmanNumber(llvm::SUnit const*, std::vector>&)"}, + {"_Z21canClobberPhysRegDefsPKN4llvm5SUnitES2_PKNS_15TargetInstrInfoEPKNS_18TargetRegisterInfoE", "canClobberPhysRegDefs(llvm::SUnit const*, llvm::SUnit const*, llvm::TargetInstrInfo const*, llvm::TargetRegisterInfo const*)"}, + {"_ZN12_GLOBAL__N_118RegReductionPQBaseD1Ev", "(anonymous namespace)::RegReductionPQBase::~RegReductionPQBase()"}, + {"_ZN12_GLOBAL__N_118RegReductionPQBaseD0Ev", "(anonymous namespace)::RegReductionPQBase::~RegReductionPQBase()"}, + {"_ZN12_GLOBAL__N_125RegReductionPriorityQueueINS_17hybrid_ls_rr_sortEED1Ev", "(anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::hybrid_ls_rr_sort>::~RegReductionPriorityQueue()"}, + {"_ZN12_GLOBAL__N_125RegReductionPriorityQueueINS_17hybrid_ls_rr_sortEED0Ev", "(anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::hybrid_ls_rr_sort>::~RegReductionPriorityQueue()"}, + {"_ZNK12_GLOBAL__N_125RegReductionPriorityQueueINS_17hybrid_ls_rr_sortEE10isBottomUpEv", "(anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::hybrid_ls_rr_sort>::isBottomUp() const"}, + {"_ZNK12_GLOBAL__N_125RegReductionPriorityQueueINS_17hybrid_ls_rr_sortEE7isReadyEPN4llvm5SUnitE", "(anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::hybrid_ls_rr_sort>::isReady(llvm::SUnit*) const"}, + {"_ZN12_GLOBAL__N_125RegReductionPriorityQueueINS_17hybrid_ls_rr_sortEE3popEv", "(anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::hybrid_ls_rr_sort>::pop()"}, + {"_ZNK12_GLOBAL__N_125RegReductionPriorityQueueINS_17hybrid_ls_rr_sortEE4dumpEPN4llvm11ScheduleDAGE", "(anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::hybrid_ls_rr_sort>::dump(llvm::ScheduleDAG*) const"}, + {"_ZN12_GLOBAL__N_125RegReductionPriorityQueueINS_17hybrid_ls_rr_sortEE12popFromQueueERSt6vectorIPN4llvm5SUnitESaIS6_EERS1_", "(anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::hybrid_ls_rr_sort>::popFromQueue(std::vector>&, (anonymous namespace)::hybrid_ls_rr_sort&)"}, + {"_ZN12_GLOBAL__N_125RegReductionPriorityQueueINS_14src_ls_rr_sortEED1Ev", "(anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::src_ls_rr_sort>::~RegReductionPriorityQueue()"}, + {"_ZN12_GLOBAL__N_125RegReductionPriorityQueueINS_14src_ls_rr_sortEED0Ev", "(anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::src_ls_rr_sort>::~RegReductionPriorityQueue()"}, + {"_ZNK12_GLOBAL__N_125RegReductionPriorityQueueINS_14src_ls_rr_sortEE10isBottomUpEv", "(anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::src_ls_rr_sort>::isBottomUp() const"}, + {"_ZNK12_GLOBAL__N_125RegReductionPriorityQueueINS_14src_ls_rr_sortEE7isReadyEPN4llvm5SUnitE", "(anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::src_ls_rr_sort>::isReady(llvm::SUnit*) const"}, + {"_ZN12_GLOBAL__N_125RegReductionPriorityQueueINS_14src_ls_rr_sortEE3popEv", "(anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::src_ls_rr_sort>::pop()"}, + {"_ZNK12_GLOBAL__N_125RegReductionPriorityQueueINS_14src_ls_rr_sortEE4dumpEPN4llvm11ScheduleDAGE", "(anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::src_ls_rr_sort>::dump(llvm::ScheduleDAG*) const"}, + {"_ZN12_GLOBAL__N_125RegReductionPriorityQueueINS_14src_ls_rr_sortEE12popFromQueueERSt6vectorIPN4llvm5SUnitESaIS6_EERS1_", "(anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::src_ls_rr_sort>::popFromQueue(std::vector>&, (anonymous namespace)::src_ls_rr_sort&)"}, + {"_ZN12_GLOBAL__N_125RegReductionPriorityQueueINS_13td_ls_rr_sortEED1Ev", "(anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::td_ls_rr_sort>::~RegReductionPriorityQueue()"}, + {"_ZN12_GLOBAL__N_125RegReductionPriorityQueueINS_13td_ls_rr_sortEED0Ev", "(anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::td_ls_rr_sort>::~RegReductionPriorityQueue()"}, + {"_ZNK12_GLOBAL__N_125RegReductionPriorityQueueINS_13td_ls_rr_sortEE10isBottomUpEv", "(anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::td_ls_rr_sort>::isBottomUp() const"}, + {"_ZNK12_GLOBAL__N_125RegReductionPriorityQueueINS_13td_ls_rr_sortEE7isReadyEPN4llvm5SUnitE", "(anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::td_ls_rr_sort>::isReady(llvm::SUnit*) const"}, + {"_ZN12_GLOBAL__N_125RegReductionPriorityQueueINS_13td_ls_rr_sortEE3popEv", "(anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::td_ls_rr_sort>::pop()"}, + {"_ZNK12_GLOBAL__N_125RegReductionPriorityQueueINS_13td_ls_rr_sortEE4dumpEPN4llvm11ScheduleDAGE", "(anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::td_ls_rr_sort>::dump(llvm::ScheduleDAG*) const"}, + {"_ZN12_GLOBAL__N_125RegReductionPriorityQueueINS_13td_ls_rr_sortEE12popFromQueueERSt6vectorIPN4llvm5SUnitESaIS6_EERS1_", "(anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::td_ls_rr_sort>::popFromQueue(std::vector>&, (anonymous namespace)::td_ls_rr_sort&)"}, + {"_ZN12_GLOBAL__N_125RegReductionPriorityQueueINS_13bu_ls_rr_sortEED1Ev", "(anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::bu_ls_rr_sort>::~RegReductionPriorityQueue()"}, + {"_ZN12_GLOBAL__N_125RegReductionPriorityQueueINS_13bu_ls_rr_sortEED0Ev", "(anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::bu_ls_rr_sort>::~RegReductionPriorityQueue()"}, + {"_ZNK12_GLOBAL__N_125RegReductionPriorityQueueINS_13bu_ls_rr_sortEE10isBottomUpEv", "(anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::bu_ls_rr_sort>::isBottomUp() const"}, + {"_ZNK12_GLOBAL__N_125RegReductionPriorityQueueINS_13bu_ls_rr_sortEE7isReadyEPN4llvm5SUnitE", "(anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::bu_ls_rr_sort>::isReady(llvm::SUnit*) const"}, + {"_ZN12_GLOBAL__N_125RegReductionPriorityQueueINS_13bu_ls_rr_sortEE3popEv", "(anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::bu_ls_rr_sort>::pop()"}, + {"_ZNK12_GLOBAL__N_125RegReductionPriorityQueueINS_13bu_ls_rr_sortEE4dumpEPN4llvm11ScheduleDAGE", "(anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::bu_ls_rr_sort>::dump(llvm::ScheduleDAG*) const"}, + {"_ZN12_GLOBAL__N_117ScheduleDAGRRListD1Ev", "(anonymous namespace)::ScheduleDAGRRList::~ScheduleDAGRRList()"}, + {"_ZN12_GLOBAL__N_117ScheduleDAGRRListD0Ev", "(anonymous namespace)::ScheduleDAGRRList::~ScheduleDAGRRList()"}, + {"_ZN12_GLOBAL__N_117ScheduleDAGRRList8ScheduleEv", "(anonymous namespace)::ScheduleDAGRRList::Schedule()"}, + {"_ZNK12_GLOBAL__N_117ScheduleDAGRRList18ForceUnitLatenciesEv", "(anonymous namespace)::ScheduleDAGRRList::ForceUnitLatencies() const"}, + {"_ZN12_GLOBAL__N_117ScheduleDAGRRList20ListScheduleBottomUpEv", "(anonymous namespace)::ScheduleDAGRRList::ListScheduleBottomUp()"}, + {"_ZN12_GLOBAL__N_117ScheduleDAGRRList19ReleasePredecessorsEPN4llvm5SUnitE", "(anonymous namespace)::ScheduleDAGRRList::ReleasePredecessors(llvm::SUnit*)"}, + {"_ZN12_GLOBAL__N_117ScheduleDAGRRList14AdvanceToCycleEj", "(anonymous namespace)::ScheduleDAGRRList::AdvanceToCycle(unsigned int)"}, + {"_ZN12_GLOBAL__N_117ScheduleDAGRRList14ReleasePendingEv", "(anonymous namespace)::ScheduleDAGRRList::ReleasePending()"}, + {"_ZN12_GLOBAL__N_117ScheduleDAGRRList8EmitNodeEPN4llvm5SUnitE", "(anonymous namespace)::ScheduleDAGRRList::EmitNode(llvm::SUnit*)"}, + + // {"_Z18CheckForLiveRegDefPN4llvm5SUnitEjRSt6vectorIS1_SaIS1_EERNS_8SmallSetIjLj4EEERNS_11SmallVectorIjLj4EEEPKNS_18TargetRegisterInfoE", + // "CheckForLiveRegDef(llvm::SUnit*, unsigned int, std::vector>&, llvm::SmallSet&, llvm::SmallVector&, llvm::TargetRegisterInfo const*)"}, + // "CheckForLiveRegDef(llvm::SUnit*, unsigned int, std::vector>&, llvm::SmallSet&, llvm::SmallVector&, llvm::TargetRegisterInfo const*)" was returned + + + // {"_ZSt6__findIN9__gnu_cxx17__normal_iteratorIPPN4llvm5SUnitESt6vectorIS4_SaIS4_EEEES4_ET_SA_SA_RKT0_St26random_access_iterator_tag", + // "__gnu_cxx::__normal_iterator>> std::__find<__gnu_cxx::__normal_iterator>>, llvm::SUnit*>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, llvm::SUnit* const&, std::random_access_iterator_tag)"}, + // got error + + {"_ZNSt6vectorIjSaIjEE14_M_fill_assignEmRKj", "std::vector>::_M_fill_assign(unsigned long, unsigned int const&)"}, + {"_ZNK4llvm18ScheduleDAGSDNodes21ComputeOperandLatencyEPNS_5SUnitES2_RNS_4SDepE", "llvm::ScheduleDAGSDNodes::ComputeOperandLatency(llvm::SUnit*, llvm::SUnit*, llvm::SDep&) const"}, + + // {"_ZN4llvm8DenseMapIPNS_5SUnitENS_11SmallVectorIjLj4EEENS_12DenseMapInfoIS2_EENS5_IS4_EEE6insertERKSt4pairIS2_S4_E", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::insert(std::pair> const&)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::insert(std::pair> const&)" was returned + + + // {"_ZN4llvm8DenseMapIPNS_5SUnitENS_11SmallVectorIjLj4EEENS_12DenseMapInfoIS2_EENS5_IS4_EEE16FindAndConstructERKS2_", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::FindAndConstruct(llvm::SUnit* const&)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::FindAndConstruct(llvm::SUnit* const&)" was returned + + + // {"_ZN4llvm8DenseMapIPNS_5SUnitENS_11SmallVectorIjLj4EEENS_12DenseMapInfoIS2_EENS5_IS4_EEE16InsertIntoBucketERKS2_RKS4_PSt4pairIS2_S4_E", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(llvm::SUnit* const&, llvm::SmallVector const&, std::pair>*)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(llvm::SUnit* const&, llvm::SmallVector const&, std::pair>*)" was returned + + + // {"_ZN4llvm8DenseMapIPNS_5SUnitENS_11SmallVectorIjLj4EEENS_12DenseMapInfoIS2_EENS5_IS4_EEE4growEj", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)" was returned + + {"_ZNSt6vectorIPN4llvm5SUnitESaIS2_EE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPS2_S4_EEmRKS2_", "std::vector>::_M_fill_insert(__gnu_cxx::__normal_iterator>>, unsigned long, llvm::SUnit* const&)"}, + {"_ZN4llvm18ScheduleDAGSDNodesD1Ev", "llvm::ScheduleDAGSDNodes::~ScheduleDAGSDNodes()"}, + {"_ZN4llvm18ScheduleDAGSDNodesD0Ev", "llvm::ScheduleDAGSDNodes::~ScheduleDAGSDNodes()"}, + {"_ZN4llvm18ScheduleDAGSDNodesC1ERNS_15MachineFunctionE", "llvm::ScheduleDAGSDNodes::ScheduleDAGSDNodes(llvm::MachineFunction&)"}, + {"_ZN4llvm18ScheduleDAGSDNodesC2ERNS_15MachineFunctionE", "llvm::ScheduleDAGSDNodes::ScheduleDAGSDNodes(llvm::MachineFunction&)"}, + {"_ZN4llvm18ScheduleDAGSDNodes3RunEPNS_12SelectionDAGEPNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEE", "llvm::ScheduleDAGSDNodes::Run(llvm::SelectionDAG*, llvm::MachineBasicBlock*, llvm::ilist_iterator)"}, + {"_ZN4llvm18ScheduleDAGSDNodes8NewSUnitEPNS_6SDNodeE", "llvm::ScheduleDAGSDNodes::NewSUnit(llvm::SDNode*)"}, + {"_ZN4llvm18ScheduleDAGSDNodes5CloneEPNS_5SUnitE", "llvm::ScheduleDAGSDNodes::Clone(llvm::SUnit*)"}, + {"_ZN4llvm18ScheduleDAGSDNodes23ClusterNeighboringLoadsEPNS_6SDNodeE", "llvm::ScheduleDAGSDNodes::ClusterNeighboringLoads(llvm::SDNode*)"}, + {"_Z7AddGluePN4llvm6SDNodeENS_7SDValueEbPNS_12SelectionDAGE", "AddGlue(llvm::SDNode*, llvm::SDValue, bool, llvm::SelectionDAG*)"}, + {"_ZN4llvm18ScheduleDAGSDNodes12ClusterNodesEv", "llvm::ScheduleDAGSDNodes::ClusterNodes()"}, + {"_ZN4llvm18ScheduleDAGSDNodes15BuildSchedUnitsEv", "llvm::ScheduleDAGSDNodes::BuildSchedUnits()"}, + {"_ZN4llvm18ScheduleDAGSDNodes18InitNumRegDefsLeftEPNS_5SUnitE", "llvm::ScheduleDAGSDNodes::InitNumRegDefsLeft(llvm::SUnit*)"}, + {"_ZN4llvm18ScheduleDAGSDNodes13AddSchedEdgesEv", "llvm::ScheduleDAGSDNodes::AddSchedEdges()"}, + {"_ZN4llvm18ScheduleDAGSDNodes15BuildSchedGraphEPNS_13AliasAnalysisE", "llvm::ScheduleDAGSDNodes::BuildSchedGraph(llvm::AliasAnalysis*)"}, + {"_ZN4llvm18ScheduleDAGSDNodes10RegDefIter15InitNodeNumDefsEv", "llvm::ScheduleDAGSDNodes::RegDefIter::InitNodeNumDefs()"}, + {"_ZN4llvm18ScheduleDAGSDNodes10RegDefIterC1EPKNS_5SUnitEPKS0_", "llvm::ScheduleDAGSDNodes::RegDefIter::RegDefIter(llvm::SUnit const*, llvm::ScheduleDAGSDNodes const*)"}, + {"_ZN4llvm18ScheduleDAGSDNodes10RegDefIterC2EPKNS_5SUnitEPKS0_", "llvm::ScheduleDAGSDNodes::RegDefIter::RegDefIter(llvm::SUnit const*, llvm::ScheduleDAGSDNodes const*)"}, + {"_ZN4llvm18ScheduleDAGSDNodes10RegDefIter7AdvanceEv", "llvm::ScheduleDAGSDNodes::RegDefIter::Advance()"}, + {"_ZN4llvm18ScheduleDAGSDNodes14ComputeLatencyEPNS_5SUnitE", "llvm::ScheduleDAGSDNodes::ComputeLatency(llvm::SUnit*)"}, + {"_ZNK4llvm18ScheduleDAGSDNodes21ComputeOperandLatencyEPNS_6SDNodeES2_jRNS_4SDepE", "llvm::ScheduleDAGSDNodes::ComputeOperandLatency(llvm::SDNode*, llvm::SDNode*, unsigned int, llvm::SDep&) const"}, + {"_ZNK4llvm18ScheduleDAGSDNodes8dumpNodeEPKNS_5SUnitE", "llvm::ScheduleDAGSDNodes::dumpNode(llvm::SUnit const*) const"}, + {"_ZN4llvm18ScheduleDAGSDNodes12EmitScheduleEv", "llvm::ScheduleDAGSDNodes::EmitSchedule()"}, + + // {"_Z17ProcessSourceNodePN4llvm6SDNodeEPNS_12SelectionDAGERNS_12InstrEmitterERNS_8DenseMapINS_7SDValueEjNS_12DenseMapInfoIS7_EENS8_IjEEEERNS_11SmallVectorISt4pairIjPNS_12MachineInstrEELj32EEERNS_8SmallSetIjLj8EEE", + // "ProcessSourceNode(llvm::SDNode*, llvm::SelectionDAG*, llvm::InstrEmitter&, llvm::DenseMap, llvm::DenseMapInfo>&, llvm::SmallVector, 32u>&, llvm::SmallSet&)"}, + // "ProcessSourceNode(llvm::SDNode*, llvm::SelectionDAG*, llvm::InstrEmitter&, llvm::DenseMap, llvm::DenseMapInfo>&, llvm::SmallVector, 32>&, llvm::SmallSet&)" was returned + + + // {"_ZSt16__introsort_loopIPSt4pairIjPN4llvm12MachineInstrEElN12_GLOBAL__N_111OrderSorterEEvT_S8_T0_T1_", + // "void std::__introsort_loop*, long, (anonymous namespace)::OrderSorter>(std::pair*, std::pair*, long, (anonymous namespace)::OrderSorter)"}, + // "void std::__introsort_loop*, long, (anonymous namespace)::OrderSorter>(unsigned int, unsigned int, llvm::MachineInstr*, std::pair*)" was returned + + + // {"_ZSt16__insertion_sortIPSt4pairIjPN4llvm12MachineInstrEEN12_GLOBAL__N_111OrderSorterEEvT_S8_T0_", + // "void std::__insertion_sort*, (anonymous namespace)::OrderSorter>(std::pair*, std::pair*, (anonymous namespace)::OrderSorter)"}, + // "void std::__insertion_sort*, (anonymous namespace)::OrderSorter>(unsigned int, unsigned int, llvm::MachineInstr*)" was returned + + + // {"_Z18ProcessSDDbgValuesPN4llvm6SDNodeEPNS_12SelectionDAGERNS_12InstrEmitterERNS_11SmallVectorISt4pairIjPNS_12MachineInstrEELj32EEERNS_8DenseMapINS_7SDValueEjNS_12DenseMapInfoISE_EENSF_IjEEEEj", + // "ProcessSDDbgValues(llvm::SDNode*, llvm::SelectionDAG*, llvm::InstrEmitter&, llvm::SmallVector, 32u>&, llvm::DenseMap, llvm::DenseMapInfo>&, unsigned int)"}, + // "ProcessSDDbgValues(llvm::SDNode*, llvm::SelectionDAG*, llvm::InstrEmitter&, llvm::SmallVector, 32>&, llvm::DenseMap, llvm::DenseMapInfo>&, unsigned int)" was returned + + {"_ZN4llvm8DenseMapIxPNS_6SDNodeENS_12DenseMapInfoIxEENS3_IS2_EEE6insertERKSt4pairIxS2_E", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIxPNS_6SDNodeENS_12DenseMapInfoIxEENS3_IS2_EEE16InsertIntoBucketERKxRKS2_PSt4pairIxS2_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(long long const&, llvm::SDNode* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIxPNS_6SDNodeENS_12DenseMapInfoIxEENS3_IS2_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + + // {"_ZSt16__introsort_loopIPxlEvT_S1_T0_", + // "void std::__introsort_loop(long long*, long long*, long)"}, + // got error + + + // {"_ZSt22__final_insertion_sortIPxEvT_S1_", + // "void std::__final_insertion_sort(long long*, long long*)"}, + // got error + + + // {"_ZSt13__heap_selectIPxEvT_S1_S1_", + // "void std::__heap_select(long long*, long long*, long long*)"}, + // got error + + + // {"_ZSt9sort_heapIPxEvT_S1_", + // "void std::sort_heap(long long*, long long*)"}, + // got error + + + // {"_ZSt9make_heapIPxEvT_S1_", + // "void std::make_heap(long long*, long long*)"}, + // got error + + {"_ZN4llvm12SelectionDAG17DAGUpdateListenerD0Ev", "llvm::SelectionDAG::DAGUpdateListener::~DAGUpdateListener()"}, + {"_ZN4llvm12SelectionDAG17DAGUpdateListenerD1Ev", "llvm::SelectionDAG::DAGUpdateListener::~DAGUpdateListener()"}, + {"_ZN4llvm12SelectionDAG17DAGUpdateListenerD2Ev", "llvm::SelectionDAG::DAGUpdateListener::~DAGUpdateListener()"}, + {"_ZNK4llvm16ConstantFPSDNode14isExactlyValueERKNS_7APFloatE", "llvm::ConstantFPSDNode::isExactlyValue(llvm::APFloat const&) const"}, + {"_ZN4llvm16ConstantFPSDNode19isValueValidForTypeENS_3EVTERKNS_7APFloatE", "llvm::ConstantFPSDNode::isValueValidForType(llvm::EVT, llvm::APFloat const&)"}, + {"_ZN4llvm3ISD20isBuildVectorAllOnesEPKNS_6SDNodeE", "llvm::ISD::isBuildVectorAllOnes(llvm::SDNode const*)"}, + {"_ZN4llvm3ISD21isBuildVectorAllZerosEPKNS_6SDNodeE", "llvm::ISD::isBuildVectorAllZeros(llvm::SDNode const*)"}, + {"_ZN4llvm3ISD16isScalarToVectorEPKNS_6SDNodeE", "llvm::ISD::isScalarToVector(llvm::SDNode const*)"}, + {"_ZN4llvm3ISD23getSetCCSwappedOperandsENS0_8CondCodeE", "llvm::ISD::getSetCCSwappedOperands(llvm::ISD::CondCode)"}, + {"_ZN4llvm3ISD15getSetCCInverseENS0_8CondCodeEb", "llvm::ISD::getSetCCInverse(llvm::ISD::CondCode, bool)"}, + {"_ZN4llvm3ISD19getSetCCOrOperationENS0_8CondCodeES1_b", "llvm::ISD::getSetCCOrOperation(llvm::ISD::CondCode, llvm::ISD::CondCode, bool)"}, + {"_ZN4llvm3ISD20getSetCCAndOperationENS0_8CondCodeES1_b", "llvm::ISD::getSetCCAndOperation(llvm::ISD::CondCode, llvm::ISD::CondCode, bool)"}, + {"_ZN4llvm12SelectionDAG15RemoveDeadNodesEv", "llvm::SelectionDAG::RemoveDeadNodes()"}, + {"_ZN4llvm12SelectionDAG15RemoveDeadNodesERNS_15SmallVectorImplIPNS_6SDNodeEEEPNS0_17DAGUpdateListenerE", "llvm::SelectionDAG::RemoveDeadNodes(llvm::SmallVectorImpl&, llvm::SelectionDAG::DAGUpdateListener*)"}, + {"_ZN4llvm12HandleSDNodeD1Ev", "llvm::HandleSDNode::~HandleSDNode()"}, + {"_ZN4llvm12SelectionDAG21RemoveNodeFromCSEMapsEPNS_6SDNodeE", "llvm::SelectionDAG::RemoveNodeFromCSEMaps(llvm::SDNode*)"}, + {"_ZN4llvm12SelectionDAG14DeallocateNodeEPNS_6SDNodeE", "llvm::SelectionDAG::DeallocateNode(llvm::SDNode*)"}, + {"_ZN4llvm12SelectionDAG14RemoveDeadNodeEPNS_6SDNodeEPNS0_17DAGUpdateListenerE", "llvm::SelectionDAG::RemoveDeadNode(llvm::SDNode*, llvm::SelectionDAG::DAGUpdateListener*)"}, + {"_ZN4llvm12SelectionDAG10DeleteNodeEPNS_6SDNodeE", "llvm::SelectionDAG::DeleteNode(llvm::SDNode*)"}, + {"_ZN4llvm12SelectionDAG22DeleteNodeNotInCSEMapsEPNS_6SDNodeE", "llvm::SelectionDAG::DeleteNodeNotInCSEMaps(llvm::SDNode*)"}, + {"_ZN4llvm6SDNode12DropOperandsEv", "llvm::SDNode::DropOperands()"}, + {"_ZN4llvm12SelectionDAG24AddModifiedNodeToCSEMapsEPNS_6SDNodeEPNS0_17DAGUpdateListenerE", "llvm::SelectionDAG::AddModifiedNodeToCSEMaps(llvm::SDNode*, llvm::SelectionDAG::DAGUpdateListener*)"}, + {"_ZN4llvm12SelectionDAG18ReplaceAllUsesWithEPNS_6SDNodeES2_PNS0_17DAGUpdateListenerE", "llvm::SelectionDAG::ReplaceAllUsesWith(llvm::SDNode*, llvm::SDNode*, llvm::SelectionDAG::DAGUpdateListener*)"}, + {"_ZN4llvm12SelectionDAG20FindModifiedNodeSlotEPNS_6SDNodeENS_7SDValueERPv", "llvm::SelectionDAG::FindModifiedNodeSlot(llvm::SDNode*, llvm::SDValue, void*&)"}, + {"_Z15AddNodeIDCustomRN4llvm16FoldingSetNodeIDEPKNS_6SDNodeE", "AddNodeIDCustom(llvm::FoldingSetNodeID&, llvm::SDNode const*)"}, + {"_ZN4llvm12SelectionDAG20FindModifiedNodeSlotEPNS_6SDNodeENS_7SDValueES3_RPv", "llvm::SelectionDAG::FindModifiedNodeSlot(llvm::SDNode*, llvm::SDValue, llvm::SDValue, void*&)"}, + {"_ZN4llvm12SelectionDAG20FindModifiedNodeSlotEPNS_6SDNodeEPKNS_7SDValueEjRPv", "llvm::SelectionDAG::FindModifiedNodeSlot(llvm::SDNode*, llvm::SDValue const*, unsigned int, void*&)"}, + {"_ZNK4llvm12SelectionDAG15getEVTAlignmentENS_3EVTE", "llvm::SelectionDAG::getEVTAlignment(llvm::EVT) const"}, + {"_ZN4llvm12SelectionDAGC1ERKNS_13TargetMachineE", "llvm::SelectionDAG::SelectionDAG(llvm::TargetMachine const&)"}, + {"_ZN4llvm12SelectionDAGC2ERKNS_13TargetMachineE", "llvm::SelectionDAG::SelectionDAG(llvm::TargetMachine const&)"}, + {"_ZN4llvm12SelectionDAG9getVTListENS_3EVTE", "llvm::SelectionDAG::getVTList(llvm::EVT)"}, + {"_ZN4llvm12SelectionDAG4initERNS_15MachineFunctionE", "llvm::SelectionDAG::init(llvm::MachineFunction&)"}, + {"_ZN4llvm12SelectionDAGD1Ev", "llvm::SelectionDAG::~SelectionDAG()"}, + {"_ZN4llvm12SelectionDAGD2Ev", "llvm::SelectionDAG::~SelectionDAG()"}, + {"_ZN4llvm12SelectionDAG14allnodes_clearEv", "llvm::SelectionDAG::allnodes_clear()"}, + {"_ZN4llvm12SelectionDAG5clearEv", "llvm::SelectionDAG::clear()"}, + {"_ZN4llvm12SelectionDAG14getSExtOrTruncENS_7SDValueENS_8DebugLocENS_3EVTE", "llvm::SelectionDAG::getSExtOrTrunc(llvm::SDValue, llvm::DebugLoc, llvm::EVT)"}, + {"_ZN4llvm12SelectionDAG7getNodeEjNS_8DebugLocENS_3EVTENS_7SDValueE", "llvm::SelectionDAG::getNode(unsigned int, llvm::DebugLoc, llvm::EVT, llvm::SDValue)"}, + {"_ZN4llvm12SelectionDAG14getZExtOrTruncENS_7SDValueENS_8DebugLocENS_3EVTE", "llvm::SelectionDAG::getZExtOrTrunc(llvm::SDValue, llvm::DebugLoc, llvm::EVT)"}, + {"_ZN4llvm12SelectionDAG18getZeroExtendInRegENS_7SDValueENS_8DebugLocENS_3EVTE", "llvm::SelectionDAG::getZeroExtendInReg(llvm::SDValue, llvm::DebugLoc, llvm::EVT)"}, + {"_ZN4llvm12SelectionDAG7getNodeEjNS_8DebugLocENS_3EVTENS_7SDValueES3_", "llvm::SelectionDAG::getNode(unsigned int, llvm::DebugLoc, llvm::EVT, llvm::SDValue, llvm::SDValue)"}, + {"_ZN4llvm12SelectionDAG11getConstantERKNS_5APIntENS_3EVTEb", "llvm::SelectionDAG::getConstant(llvm::APInt const&, llvm::EVT, bool)"}, + {"_ZN4llvm12SelectionDAG6getNOTENS_8DebugLocENS_7SDValueENS_3EVTE", "llvm::SelectionDAG::getNOT(llvm::DebugLoc, llvm::SDValue, llvm::EVT)"}, + {"_ZN4llvm12SelectionDAG11getConstantEyNS_3EVTEb", "llvm::SelectionDAG::getConstant(unsigned long long, llvm::EVT, bool)"}, + {"_ZN4llvm12SelectionDAG11getConstantERKNS_11ConstantIntENS_3EVTEb", "llvm::SelectionDAG::getConstant(llvm::ConstantInt const&, llvm::EVT, bool)"}, + {"_ZN4llvm12SelectionDAG7getNodeEjNS_8DebugLocENS_3EVTEPKNS_7SDValueEj", "llvm::SelectionDAG::getNode(unsigned int, llvm::DebugLoc, llvm::EVT, llvm::SDValue const*, unsigned int)"}, + {"_ZN4llvm12SelectionDAG17getIntPtrConstantEyb", "llvm::SelectionDAG::getIntPtrConstant(unsigned long long, bool)"}, + {"_ZN4llvm12SelectionDAG13getConstantFPERKNS_7APFloatENS_3EVTEb", "llvm::SelectionDAG::getConstantFP(llvm::APFloat const&, llvm::EVT, bool)"}, + {"_ZN4llvm12SelectionDAG13getConstantFPERKNS_10ConstantFPENS_3EVTEb", "llvm::SelectionDAG::getConstantFP(llvm::ConstantFP const&, llvm::EVT, bool)"}, + {"_ZN4llvm12SelectionDAG13getConstantFPEdNS_3EVTEb", "llvm::SelectionDAG::getConstantFP(double, llvm::EVT, bool)"}, + {"_ZN4llvm12SelectionDAG16getGlobalAddressEPKNS_11GlobalValueENS_8DebugLocENS_3EVTExbh", "llvm::SelectionDAG::getGlobalAddress(llvm::GlobalValue const*, llvm::DebugLoc, llvm::EVT, long long, bool, unsigned char)"}, + {"_ZN4llvm19GlobalAddressSDNodeC1EjNS_8DebugLocEPKNS_11GlobalValueENS_3EVTExh", "llvm::GlobalAddressSDNode::GlobalAddressSDNode(unsigned int, llvm::DebugLoc, llvm::GlobalValue const*, llvm::EVT, long long, unsigned char)"}, + {"_ZN4llvm12SelectionDAG13getFrameIndexEiNS_3EVTEb", "llvm::SelectionDAG::getFrameIndex(int, llvm::EVT, bool)"}, + {"_ZN4llvm12SelectionDAG12getJumpTableEiNS_3EVTEbh", "llvm::SelectionDAG::getJumpTable(int, llvm::EVT, bool, unsigned char)"}, + {"_ZN4llvm12SelectionDAG15getConstantPoolEPKNS_8ConstantENS_3EVTEjibh", "llvm::SelectionDAG::getConstantPool(llvm::Constant const*, llvm::EVT, unsigned int, int, bool, unsigned char)"}, + {"_ZN4llvm12SelectionDAG15getConstantPoolEPNS_24MachineConstantPoolValueENS_3EVTEjibh", "llvm::SelectionDAG::getConstantPool(llvm::MachineConstantPoolValue*, llvm::EVT, unsigned int, int, bool, unsigned char)"}, + {"_ZN4llvm12SelectionDAG13getBasicBlockEPNS_17MachineBasicBlockE", "llvm::SelectionDAG::getBasicBlock(llvm::MachineBasicBlock*)"}, + {"_ZN4llvm12SelectionDAG12getValueTypeENS_3EVTE", "llvm::SelectionDAG::getValueType(llvm::EVT)"}, + {"_ZN4llvm12SelectionDAG17getExternalSymbolEPKcNS_3EVTE", "llvm::SelectionDAG::getExternalSymbol(char const*, llvm::EVT)"}, + {"_ZN4llvm12SelectionDAG23getTargetExternalSymbolEPKcNS_3EVTEh", "llvm::SelectionDAG::getTargetExternalSymbol(char const*, llvm::EVT, unsigned char)"}, + {"_ZN4llvm12SelectionDAG11getCondCodeENS_3ISD8CondCodeE", "llvm::SelectionDAG::getCondCode(llvm::ISD::CondCode)"}, + {"_ZN4llvm12SelectionDAG16getVectorShuffleENS_3EVTENS_8DebugLocENS_7SDValueES3_PKi", "llvm::SelectionDAG::getVectorShuffle(llvm::EVT, llvm::DebugLoc, llvm::SDValue, llvm::SDValue, int const*)"}, + {"_ZN4llvm12SelectionDAG16getConvertRndSatENS_3EVTENS_8DebugLocENS_7SDValueES3_S3_S3_S3_NS_3ISD7CvtCodeE", "llvm::SelectionDAG::getConvertRndSat(llvm::EVT, llvm::DebugLoc, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::ISD::CvtCode)"}, + {"_ZN4llvm12SelectionDAG11getRegisterEjNS_3EVTE", "llvm::SelectionDAG::getRegister(unsigned int, llvm::EVT)"}, + {"_ZN4llvm12SelectionDAG10getEHLabelENS_8DebugLocENS_7SDValueEPNS_8MCSymbolE", "llvm::SelectionDAG::getEHLabel(llvm::DebugLoc, llvm::SDValue, llvm::MCSymbol*)"}, + {"_ZN4llvm12SelectionDAG15getBlockAddressEPKNS_12BlockAddressENS_3EVTEbh", "llvm::SelectionDAG::getBlockAddress(llvm::BlockAddress const*, llvm::EVT, bool, unsigned char)"}, + {"_ZN4llvm12SelectionDAG11getSrcValueEPKNS_5ValueE", "llvm::SelectionDAG::getSrcValue(llvm::Value const*)"}, + {"_ZN4llvm12SelectionDAG9getMDNodeEPKNS_6MDNodeE", "llvm::SelectionDAG::getMDNode(llvm::MDNode const*)"}, + {"_ZN4llvm12SelectionDAG21getShiftAmountOperandENS_7SDValueE", "llvm::SelectionDAG::getShiftAmountOperand(llvm::SDValue)"}, + {"_ZN4llvm12SelectionDAG20CreateStackTemporaryENS_3EVTEj", "llvm::SelectionDAG::CreateStackTemporary(llvm::EVT, unsigned int)"}, + {"_ZN4llvm12SelectionDAG20CreateStackTemporaryENS_3EVTES1_", "llvm::SelectionDAG::CreateStackTemporary(llvm::EVT, llvm::EVT)"}, + {"_ZN4llvm12SelectionDAG9FoldSetCCENS_3EVTENS_7SDValueES2_NS_3ISD8CondCodeENS_8DebugLocE", "llvm::SelectionDAG::FoldSetCC(llvm::EVT, llvm::SDValue, llvm::SDValue, llvm::ISD::CondCode, llvm::DebugLoc)"}, + {"_ZNK4llvm12SelectionDAG13SignBitIsZeroENS_7SDValueEj", "llvm::SelectionDAG::SignBitIsZero(llvm::SDValue, unsigned int) const"}, + {"_ZNK4llvm12SelectionDAG17MaskedValueIsZeroENS_7SDValueERKNS_5APIntEj", "llvm::SelectionDAG::MaskedValueIsZero(llvm::SDValue, llvm::APInt const&, unsigned int) const"}, + {"_ZNK4llvm12SelectionDAG17ComputeMaskedBitsENS_7SDValueERKNS_5APIntERS2_S5_j", "llvm::SelectionDAG::ComputeMaskedBits(llvm::SDValue, llvm::APInt const&, llvm::APInt&, llvm::APInt&, unsigned int) const"}, + {"_ZNK4llvm12SelectionDAG18ComputeNumSignBitsENS_7SDValueEj", "llvm::SelectionDAG::ComputeNumSignBits(llvm::SDValue, unsigned int) const"}, + {"_ZNK4llvm12SelectionDAG15isKnownNeverNaNENS_7SDValueE", "llvm::SelectionDAG::isKnownNeverNaN(llvm::SDValue) const"}, + {"_ZNK4llvm12SelectionDAG16isKnownNeverZeroENS_7SDValueE", "llvm::SelectionDAG::isKnownNeverZero(llvm::SDValue) const"}, + {"_ZNK4llvm12SelectionDAG9isEqualToENS_7SDValueES1_", "llvm::SelectionDAG::isEqualTo(llvm::SDValue, llvm::SDValue) const"}, + {"_ZNK4llvm12SelectionDAG23isVerifiedDebugInfoDescENS_7SDValueE", "llvm::SelectionDAG::isVerifiedDebugInfoDesc(llvm::SDValue) const"}, + {"_ZN4llvm12SelectionDAG7getNodeEjNS_8DebugLocENS_3EVTE", "llvm::SelectionDAG::getNode(unsigned int, llvm::DebugLoc, llvm::EVT)"}, + {"_ZN4llvm12SelectionDAG22FoldConstantArithmeticEjNS_3EVTEPNS_14ConstantSDNodeES3_", "llvm::SelectionDAG::FoldConstantArithmetic(unsigned int, llvm::EVT, llvm::ConstantSDNode*, llvm::ConstantSDNode*)"}, + {"_ZN4llvm12SelectionDAG7getNodeEjNS_8DebugLocENS_3EVTENS_7SDValueES3_S3_", "llvm::SelectionDAG::getNode(unsigned int, llvm::DebugLoc, llvm::EVT, llvm::SDValue, llvm::SDValue, llvm::SDValue)"}, + {"_ZN4llvm12SelectionDAG7getNodeEjNS_8DebugLocENS_3EVTENS_7SDValueES3_S3_S3_", "llvm::SelectionDAG::getNode(unsigned int, llvm::DebugLoc, llvm::EVT, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::SDValue)"}, + {"_ZN4llvm12SelectionDAG7getNodeEjNS_8DebugLocENS_3EVTENS_7SDValueES3_S3_S3_S3_", "llvm::SelectionDAG::getNode(unsigned int, llvm::DebugLoc, llvm::EVT, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::SDValue)"}, + {"_ZN4llvm12SelectionDAG27getStackArgumentTokenFactorENS_7SDValueE", "llvm::SelectionDAG::getStackArgumentTokenFactor(llvm::SDValue)"}, + {"_ZN4llvm12SelectionDAG9getMemcpyENS_7SDValueENS_8DebugLocES1_S1_S1_jbbNS_18MachinePointerInfoES3_", "llvm::SelectionDAG::getMemcpy(llvm::SDValue, llvm::DebugLoc, llvm::SDValue, llvm::SDValue, llvm::SDValue, unsigned int, bool, bool, llvm::MachinePointerInfo, llvm::MachinePointerInfo)"}, + {"_Z23getMemcpyLoadsAndStoresRN4llvm12SelectionDAGENS_8DebugLocENS_7SDValueES3_S3_yjbbNS_18MachinePointerInfoES4_", "getMemcpyLoadsAndStores(llvm::SelectionDAG&, llvm::DebugLoc, llvm::SDValue, llvm::SDValue, llvm::SDValue, unsigned long long, unsigned int, bool, bool, llvm::MachinePointerInfo, llvm::MachinePointerInfo)"}, + {"_ZN4llvm12SelectionDAG10getMemmoveENS_7SDValueENS_8DebugLocES1_S1_S1_jbNS_18MachinePointerInfoES3_", "llvm::SelectionDAG::getMemmove(llvm::SDValue, llvm::DebugLoc, llvm::SDValue, llvm::SDValue, llvm::SDValue, unsigned int, bool, llvm::MachinePointerInfo, llvm::MachinePointerInfo)"}, + {"_ZN4llvm12SelectionDAG9getMemsetENS_7SDValueENS_8DebugLocES1_S1_S1_jbNS_18MachinePointerInfoE", "llvm::SelectionDAG::getMemset(llvm::SDValue, llvm::DebugLoc, llvm::SDValue, llvm::SDValue, llvm::SDValue, unsigned int, bool, llvm::MachinePointerInfo)"}, + {"_ZN4llvm12SelectionDAG9getAtomicEjNS_8DebugLocENS_3EVTENS_7SDValueES3_S3_S3_NS_18MachinePointerInfoEj", "llvm::SelectionDAG::getAtomic(unsigned int, llvm::DebugLoc, llvm::EVT, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::MachinePointerInfo, unsigned int)"}, + {"_ZN4llvm12SelectionDAG9getAtomicEjNS_8DebugLocENS_3EVTENS_7SDValueES3_S3_S3_PNS_17MachineMemOperandE", "llvm::SelectionDAG::getAtomic(unsigned int, llvm::DebugLoc, llvm::EVT, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::MachineMemOperand*)"}, + {"_ZN4llvm12SelectionDAG9getVTListENS_3EVTES1_", "llvm::SelectionDAG::getVTList(llvm::EVT, llvm::EVT)"}, + {"_ZN4llvm12SelectionDAG9getAtomicEjNS_8DebugLocENS_3EVTENS_7SDValueES3_S3_PKNS_5ValueEj", "llvm::SelectionDAG::getAtomic(unsigned int, llvm::DebugLoc, llvm::EVT, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::Value const*, unsigned int)"}, + {"_ZN4llvm12SelectionDAG9getAtomicEjNS_8DebugLocENS_3EVTENS_7SDValueES3_S3_PNS_17MachineMemOperandE", "llvm::SelectionDAG::getAtomic(unsigned int, llvm::DebugLoc, llvm::EVT, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::MachineMemOperand*)"}, + {"_ZN4llvm12SelectionDAG14getMergeValuesEPKNS_7SDValueEjNS_8DebugLocE", "llvm::SelectionDAG::getMergeValues(llvm::SDValue const*, unsigned int, llvm::DebugLoc)"}, + {"_ZN4llvm12SelectionDAG7getNodeEjNS_8DebugLocENS_8SDVTListEPKNS_7SDValueEj", "llvm::SelectionDAG::getNode(unsigned int, llvm::DebugLoc, llvm::SDVTList, llvm::SDValue const*, unsigned int)"}, + {"_ZN4llvm12SelectionDAG9getVTListEPKNS_3EVTEj", "llvm::SelectionDAG::getVTList(llvm::EVT const*, unsigned int)"}, + {"_ZN4llvm12SelectionDAG19getMemIntrinsicNodeEjNS_8DebugLocEPKNS_3EVTEjPKNS_7SDValueEjS2_NS_18MachinePointerInfoEjbbb", "llvm::SelectionDAG::getMemIntrinsicNode(unsigned int, llvm::DebugLoc, llvm::EVT const*, unsigned int, llvm::SDValue const*, unsigned int, llvm::EVT, llvm::MachinePointerInfo, unsigned int, bool, bool, bool)"}, + {"_ZN4llvm12SelectionDAG19getMemIntrinsicNodeEjNS_8DebugLocENS_8SDVTListEPKNS_7SDValueEjNS_3EVTENS_18MachinePointerInfoEjbbb", "llvm::SelectionDAG::getMemIntrinsicNode(unsigned int, llvm::DebugLoc, llvm::SDVTList, llvm::SDValue const*, unsigned int, llvm::EVT, llvm::MachinePointerInfo, unsigned int, bool, bool, bool)"}, + {"_ZN4llvm12SelectionDAG19getMemIntrinsicNodeEjNS_8DebugLocENS_8SDVTListEPKNS_7SDValueEjNS_3EVTEPNS_17MachineMemOperandE", "llvm::SelectionDAG::getMemIntrinsicNode(unsigned int, llvm::DebugLoc, llvm::SDVTList, llvm::SDValue const*, unsigned int, llvm::EVT, llvm::MachineMemOperand*)"}, + {"_ZN4llvm12SelectionDAG7getLoadENS_3ISD14MemIndexedModeENS1_11LoadExtTypeENS_3EVTENS_8DebugLocENS_7SDValueES6_S6_NS_18MachinePointerInfoES4_bbjPKNS_6MDNodeE", "llvm::SelectionDAG::getLoad(llvm::ISD::MemIndexedMode, llvm::ISD::LoadExtType, llvm::EVT, llvm::DebugLoc, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::MachinePointerInfo, llvm::EVT, bool, bool, unsigned int, llvm::MDNode const*)"}, + {"_ZN4llvm12SelectionDAG7getLoadENS_3ISD14MemIndexedModeENS1_11LoadExtTypeENS_3EVTENS_8DebugLocENS_7SDValueES6_S6_S4_PNS_17MachineMemOperandE", "llvm::SelectionDAG::getLoad(llvm::ISD::MemIndexedMode, llvm::ISD::LoadExtType, llvm::EVT, llvm::DebugLoc, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::EVT, llvm::MachineMemOperand*)"}, + {"_ZN4llvm12SelectionDAG9getVTListENS_3EVTES1_S1_", "llvm::SelectionDAG::getVTList(llvm::EVT, llvm::EVT, llvm::EVT)"}, + {"_ZN4llvm12SelectionDAG7getLoadENS_3EVTENS_8DebugLocENS_7SDValueES3_NS_18MachinePointerInfoEbbjPKNS_6MDNodeE", "llvm::SelectionDAG::getLoad(llvm::EVT, llvm::DebugLoc, llvm::SDValue, llvm::SDValue, llvm::MachinePointerInfo, bool, bool, unsigned int, llvm::MDNode const*)"}, + {"_ZN4llvm12SelectionDAG10getExtLoadENS_3ISD11LoadExtTypeENS_3EVTENS_8DebugLocENS_7SDValueES5_NS_18MachinePointerInfoES3_bbjPKNS_6MDNodeE", "llvm::SelectionDAG::getExtLoad(llvm::ISD::LoadExtType, llvm::EVT, llvm::DebugLoc, llvm::SDValue, llvm::SDValue, llvm::MachinePointerInfo, llvm::EVT, bool, bool, unsigned int, llvm::MDNode const*)"}, + {"_ZN4llvm12SelectionDAG14getIndexedLoadENS_7SDValueENS_8DebugLocES1_S1_NS_3ISD14MemIndexedModeE", "llvm::SelectionDAG::getIndexedLoad(llvm::SDValue, llvm::DebugLoc, llvm::SDValue, llvm::SDValue, llvm::ISD::MemIndexedMode)"}, + {"_ZN4llvm12SelectionDAG8getStoreENS_7SDValueENS_8DebugLocES1_S1_NS_18MachinePointerInfoEbbjPKNS_6MDNodeE", "llvm::SelectionDAG::getStore(llvm::SDValue, llvm::DebugLoc, llvm::SDValue, llvm::SDValue, llvm::MachinePointerInfo, bool, bool, unsigned int, llvm::MDNode const*)"}, + {"_Z16InferPointerInfoN4llvm7SDValueEx", "InferPointerInfo(llvm::SDValue, long long)"}, + {"_ZN4llvm12SelectionDAG8getStoreENS_7SDValueENS_8DebugLocES1_S1_PNS_17MachineMemOperandE", "llvm::SelectionDAG::getStore(llvm::SDValue, llvm::DebugLoc, llvm::SDValue, llvm::SDValue, llvm::MachineMemOperand*)"}, + {"_ZN4llvm12SelectionDAG13getTruncStoreENS_7SDValueENS_8DebugLocES1_S1_NS_18MachinePointerInfoENS_3EVTEbbjPKNS_6MDNodeE", "llvm::SelectionDAG::getTruncStore(llvm::SDValue, llvm::DebugLoc, llvm::SDValue, llvm::SDValue, llvm::MachinePointerInfo, llvm::EVT, bool, bool, unsigned int, llvm::MDNode const*)"}, + {"_ZN4llvm12SelectionDAG13getTruncStoreENS_7SDValueENS_8DebugLocES1_S1_NS_3EVTEPNS_17MachineMemOperandE", "llvm::SelectionDAG::getTruncStore(llvm::SDValue, llvm::DebugLoc, llvm::SDValue, llvm::SDValue, llvm::EVT, llvm::MachineMemOperand*)"}, + {"_ZN4llvm12SelectionDAG15getIndexedStoreENS_7SDValueENS_8DebugLocES1_S1_NS_3ISD14MemIndexedModeE", "llvm::SelectionDAG::getIndexedStore(llvm::SDValue, llvm::DebugLoc, llvm::SDValue, llvm::SDValue, llvm::ISD::MemIndexedMode)"}, + {"_ZN4llvm12SelectionDAG8getVAArgENS_3EVTENS_8DebugLocENS_7SDValueES3_S3_j", "llvm::SelectionDAG::getVAArg(llvm::EVT, llvm::DebugLoc, llvm::SDValue, llvm::SDValue, llvm::SDValue, unsigned int)"}, + {"_ZN4llvm12SelectionDAG7getNodeEjNS_8DebugLocENS_3EVTEPKNS_5SDUseEj", "llvm::SelectionDAG::getNode(unsigned int, llvm::DebugLoc, llvm::EVT, llvm::SDUse const*, unsigned int)"}, + {"_ZN4llvm12SelectionDAG7getNodeEjNS_8DebugLocERKSt6vectorINS_3EVTESaIS3_EEPKNS_7SDValueEj", "llvm::SelectionDAG::getNode(unsigned int, llvm::DebugLoc, std::vector> const&, llvm::SDValue const*, unsigned int)"}, + {"_ZN4llvm12SelectionDAG7getNodeEjNS_8DebugLocEPKNS_3EVTEjPKNS_7SDValueEj", "llvm::SelectionDAG::getNode(unsigned int, llvm::DebugLoc, llvm::EVT const*, unsigned int, llvm::SDValue const*, unsigned int)"}, + {"_ZN4llvm12SelectionDAG7getNodeEjNS_8DebugLocENS_8SDVTListE", "llvm::SelectionDAG::getNode(unsigned int, llvm::DebugLoc, llvm::SDVTList)"}, + {"_ZN4llvm12SelectionDAG7getNodeEjNS_8DebugLocENS_8SDVTListENS_7SDValueE", "llvm::SelectionDAG::getNode(unsigned int, llvm::DebugLoc, llvm::SDVTList, llvm::SDValue)"}, + {"_ZN4llvm12SelectionDAG7getNodeEjNS_8DebugLocENS_8SDVTListENS_7SDValueES3_", "llvm::SelectionDAG::getNode(unsigned int, llvm::DebugLoc, llvm::SDVTList, llvm::SDValue, llvm::SDValue)"}, + {"_ZN4llvm12SelectionDAG7getNodeEjNS_8DebugLocENS_8SDVTListENS_7SDValueES3_S3_", "llvm::SelectionDAG::getNode(unsigned int, llvm::DebugLoc, llvm::SDVTList, llvm::SDValue, llvm::SDValue, llvm::SDValue)"}, + {"_ZN4llvm12SelectionDAG7getNodeEjNS_8DebugLocENS_8SDVTListENS_7SDValueES3_S3_S3_", "llvm::SelectionDAG::getNode(unsigned int, llvm::DebugLoc, llvm::SDVTList, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::SDValue)"}, + {"_ZN4llvm12SelectionDAG7getNodeEjNS_8DebugLocENS_8SDVTListENS_7SDValueES3_S3_S3_S3_", "llvm::SelectionDAG::getNode(unsigned int, llvm::DebugLoc, llvm::SDVTList, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::SDValue)"}, + {"_ZN4llvm6SDNode16getValueTypeListENS_3EVTE", "llvm::SDNode::getValueTypeList(llvm::EVT)"}, + {"_ZN4llvm12SelectionDAG9getVTListENS_3EVTES1_S1_S1_", "llvm::SelectionDAG::getVTList(llvm::EVT, llvm::EVT, llvm::EVT, llvm::EVT)"}, + {"_ZN4llvm12SelectionDAG18UpdateNodeOperandsEPNS_6SDNodeENS_7SDValueE", "llvm::SelectionDAG::UpdateNodeOperands(llvm::SDNode*, llvm::SDValue)"}, + {"_ZN4llvm12SelectionDAG18UpdateNodeOperandsEPNS_6SDNodeENS_7SDValueES3_", "llvm::SelectionDAG::UpdateNodeOperands(llvm::SDNode*, llvm::SDValue, llvm::SDValue)"}, + {"_ZN4llvm12SelectionDAG18UpdateNodeOperandsEPNS_6SDNodeENS_7SDValueES3_S3_", "llvm::SelectionDAG::UpdateNodeOperands(llvm::SDNode*, llvm::SDValue, llvm::SDValue, llvm::SDValue)"}, + {"_ZN4llvm12SelectionDAG18UpdateNodeOperandsEPNS_6SDNodeEPKNS_7SDValueEj", "llvm::SelectionDAG::UpdateNodeOperands(llvm::SDNode*, llvm::SDValue const*, unsigned int)"}, + {"_ZN4llvm12SelectionDAG18UpdateNodeOperandsEPNS_6SDNodeENS_7SDValueES3_S3_S3_", "llvm::SelectionDAG::UpdateNodeOperands(llvm::SDNode*, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::SDValue)"}, + {"_ZN4llvm12SelectionDAG18UpdateNodeOperandsEPNS_6SDNodeENS_7SDValueES3_S3_S3_S3_", "llvm::SelectionDAG::UpdateNodeOperands(llvm::SDNode*, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::SDValue)"}, + {"_ZN4llvm12SelectionDAG12SelectNodeToEPNS_6SDNodeEjNS_3EVTE", "llvm::SelectionDAG::SelectNodeTo(llvm::SDNode*, unsigned int, llvm::EVT)"}, + {"_ZN4llvm12SelectionDAG12SelectNodeToEPNS_6SDNodeEjNS_8SDVTListEPKNS_7SDValueEj", "llvm::SelectionDAG::SelectNodeTo(llvm::SDNode*, unsigned int, llvm::SDVTList, llvm::SDValue const*, unsigned int)"}, + {"_ZN4llvm12SelectionDAG12SelectNodeToEPNS_6SDNodeEjNS_3EVTENS_7SDValueE", "llvm::SelectionDAG::SelectNodeTo(llvm::SDNode*, unsigned int, llvm::EVT, llvm::SDValue)"}, + {"_ZN4llvm12SelectionDAG12SelectNodeToEPNS_6SDNodeEjNS_3EVTENS_7SDValueES4_", "llvm::SelectionDAG::SelectNodeTo(llvm::SDNode*, unsigned int, llvm::EVT, llvm::SDValue, llvm::SDValue)"}, + {"_ZN4llvm12SelectionDAG12SelectNodeToEPNS_6SDNodeEjNS_3EVTENS_7SDValueES4_S4_", "llvm::SelectionDAG::SelectNodeTo(llvm::SDNode*, unsigned int, llvm::EVT, llvm::SDValue, llvm::SDValue, llvm::SDValue)"}, + {"_ZN4llvm12SelectionDAG12SelectNodeToEPNS_6SDNodeEjNS_3EVTEPKNS_7SDValueEj", "llvm::SelectionDAG::SelectNodeTo(llvm::SDNode*, unsigned int, llvm::EVT, llvm::SDValue const*, unsigned int)"}, + {"_ZN4llvm12SelectionDAG12SelectNodeToEPNS_6SDNodeEjNS_3EVTES3_PKNS_7SDValueEj", "llvm::SelectionDAG::SelectNodeTo(llvm::SDNode*, unsigned int, llvm::EVT, llvm::EVT, llvm::SDValue const*, unsigned int)"}, + {"_ZN4llvm12SelectionDAG12SelectNodeToEPNS_6SDNodeEjNS_3EVTES3_", "llvm::SelectionDAG::SelectNodeTo(llvm::SDNode*, unsigned int, llvm::EVT, llvm::EVT)"}, + {"_ZN4llvm12SelectionDAG12SelectNodeToEPNS_6SDNodeEjNS_3EVTES3_S3_PKNS_7SDValueEj", "llvm::SelectionDAG::SelectNodeTo(llvm::SDNode*, unsigned int, llvm::EVT, llvm::EVT, llvm::EVT, llvm::SDValue const*, unsigned int)"}, + {"_ZN4llvm12SelectionDAG12SelectNodeToEPNS_6SDNodeEjNS_3EVTES3_S3_S3_PKNS_7SDValueEj", "llvm::SelectionDAG::SelectNodeTo(llvm::SDNode*, unsigned int, llvm::EVT, llvm::EVT, llvm::EVT, llvm::EVT, llvm::SDValue const*, unsigned int)"}, + {"_ZN4llvm12SelectionDAG12SelectNodeToEPNS_6SDNodeEjNS_3EVTES3_NS_7SDValueE", "llvm::SelectionDAG::SelectNodeTo(llvm::SDNode*, unsigned int, llvm::EVT, llvm::EVT, llvm::SDValue)"}, + {"_ZN4llvm12SelectionDAG12SelectNodeToEPNS_6SDNodeEjNS_3EVTES3_NS_7SDValueES4_", "llvm::SelectionDAG::SelectNodeTo(llvm::SDNode*, unsigned int, llvm::EVT, llvm::EVT, llvm::SDValue, llvm::SDValue)"}, + {"_ZN4llvm12SelectionDAG12SelectNodeToEPNS_6SDNodeEjNS_3EVTES3_NS_7SDValueES4_S4_", "llvm::SelectionDAG::SelectNodeTo(llvm::SDNode*, unsigned int, llvm::EVT, llvm::EVT, llvm::SDValue, llvm::SDValue, llvm::SDValue)"}, + {"_ZN4llvm12SelectionDAG12SelectNodeToEPNS_6SDNodeEjNS_3EVTES3_S3_NS_7SDValueES4_S4_", "llvm::SelectionDAG::SelectNodeTo(llvm::SDNode*, unsigned int, llvm::EVT, llvm::EVT, llvm::EVT, llvm::SDValue, llvm::SDValue, llvm::SDValue)"}, + {"_ZN4llvm12SelectionDAG11MorphNodeToEPNS_6SDNodeEjNS_8SDVTListEPKNS_7SDValueEj", "llvm::SelectionDAG::MorphNodeTo(llvm::SDNode*, unsigned int, llvm::SDVTList, llvm::SDValue const*, unsigned int)"}, + {"_ZN4llvm12SelectionDAG14getMachineNodeEjNS_8DebugLocENS_3EVTE", "llvm::SelectionDAG::getMachineNode(unsigned int, llvm::DebugLoc, llvm::EVT)"}, + {"_ZN4llvm12SelectionDAG14getMachineNodeEjNS_8DebugLocENS_8SDVTListEPKNS_7SDValueEj", "llvm::SelectionDAG::getMachineNode(unsigned int, llvm::DebugLoc, llvm::SDVTList, llvm::SDValue const*, unsigned int)"}, + {"_ZN4llvm12SelectionDAG14getMachineNodeEjNS_8DebugLocENS_3EVTENS_7SDValueE", "llvm::SelectionDAG::getMachineNode(unsigned int, llvm::DebugLoc, llvm::EVT, llvm::SDValue)"}, + {"_ZN4llvm12SelectionDAG14getMachineNodeEjNS_8DebugLocENS_3EVTENS_7SDValueES3_", "llvm::SelectionDAG::getMachineNode(unsigned int, llvm::DebugLoc, llvm::EVT, llvm::SDValue, llvm::SDValue)"}, + {"_ZN4llvm12SelectionDAG14getMachineNodeEjNS_8DebugLocENS_3EVTENS_7SDValueES3_S3_", "llvm::SelectionDAG::getMachineNode(unsigned int, llvm::DebugLoc, llvm::EVT, llvm::SDValue, llvm::SDValue, llvm::SDValue)"}, + {"_ZN4llvm12SelectionDAG14getMachineNodeEjNS_8DebugLocENS_3EVTEPKNS_7SDValueEj", "llvm::SelectionDAG::getMachineNode(unsigned int, llvm::DebugLoc, llvm::EVT, llvm::SDValue const*, unsigned int)"}, + {"_ZN4llvm12SelectionDAG14getMachineNodeEjNS_8DebugLocENS_3EVTES2_", "llvm::SelectionDAG::getMachineNode(unsigned int, llvm::DebugLoc, llvm::EVT, llvm::EVT)"}, + {"_ZN4llvm12SelectionDAG14getMachineNodeEjNS_8DebugLocENS_3EVTES2_NS_7SDValueE", "llvm::SelectionDAG::getMachineNode(unsigned int, llvm::DebugLoc, llvm::EVT, llvm::EVT, llvm::SDValue)"}, + {"_ZN4llvm12SelectionDAG14getMachineNodeEjNS_8DebugLocENS_3EVTES2_NS_7SDValueES3_", "llvm::SelectionDAG::getMachineNode(unsigned int, llvm::DebugLoc, llvm::EVT, llvm::EVT, llvm::SDValue, llvm::SDValue)"}, + {"_ZN4llvm12SelectionDAG14getMachineNodeEjNS_8DebugLocENS_3EVTES2_NS_7SDValueES3_S3_", "llvm::SelectionDAG::getMachineNode(unsigned int, llvm::DebugLoc, llvm::EVT, llvm::EVT, llvm::SDValue, llvm::SDValue, llvm::SDValue)"}, + {"_ZN4llvm12SelectionDAG14getMachineNodeEjNS_8DebugLocENS_3EVTES2_PKNS_7SDValueEj", "llvm::SelectionDAG::getMachineNode(unsigned int, llvm::DebugLoc, llvm::EVT, llvm::EVT, llvm::SDValue const*, unsigned int)"}, + {"_ZN4llvm12SelectionDAG14getMachineNodeEjNS_8DebugLocENS_3EVTES2_S2_NS_7SDValueES3_", "llvm::SelectionDAG::getMachineNode(unsigned int, llvm::DebugLoc, llvm::EVT, llvm::EVT, llvm::EVT, llvm::SDValue, llvm::SDValue)"}, + {"_ZN4llvm12SelectionDAG14getMachineNodeEjNS_8DebugLocENS_3EVTES2_S2_NS_7SDValueES3_S3_", "llvm::SelectionDAG::getMachineNode(unsigned int, llvm::DebugLoc, llvm::EVT, llvm::EVT, llvm::EVT, llvm::SDValue, llvm::SDValue, llvm::SDValue)"}, + {"_ZN4llvm12SelectionDAG14getMachineNodeEjNS_8DebugLocENS_3EVTES2_S2_PKNS_7SDValueEj", "llvm::SelectionDAG::getMachineNode(unsigned int, llvm::DebugLoc, llvm::EVT, llvm::EVT, llvm::EVT, llvm::SDValue const*, unsigned int)"}, + {"_ZN4llvm12SelectionDAG14getMachineNodeEjNS_8DebugLocENS_3EVTES2_S2_S2_PKNS_7SDValueEj", "llvm::SelectionDAG::getMachineNode(unsigned int, llvm::DebugLoc, llvm::EVT, llvm::EVT, llvm::EVT, llvm::EVT, llvm::SDValue const*, unsigned int)"}, + {"_ZN4llvm12SelectionDAG14getMachineNodeEjNS_8DebugLocERKSt6vectorINS_3EVTESaIS3_EEPKNS_7SDValueEj", "llvm::SelectionDAG::getMachineNode(unsigned int, llvm::DebugLoc, std::vector> const&, llvm::SDValue const*, unsigned int)"}, + {"_ZN4llvm12SelectionDAG22getTargetExtractSubregEiNS_8DebugLocENS_3EVTENS_7SDValueE", "llvm::SelectionDAG::getTargetExtractSubreg(int, llvm::DebugLoc, llvm::EVT, llvm::SDValue)"}, + {"_ZN4llvm12SelectionDAG21getTargetInsertSubregEiNS_8DebugLocENS_3EVTENS_7SDValueES3_", "llvm::SelectionDAG::getTargetInsertSubreg(int, llvm::DebugLoc, llvm::EVT, llvm::SDValue, llvm::SDValue)"}, + {"_ZN4llvm12SelectionDAG15getNodeIfExistsEjNS_8SDVTListEPKNS_7SDValueEj", "llvm::SelectionDAG::getNodeIfExists(unsigned int, llvm::SDVTList, llvm::SDValue const*, unsigned int)"}, + {"_ZN4llvm12SelectionDAG11getDbgValueEPNS_6MDNodeEPNS_6SDNodeEjyNS_8DebugLocEj", "llvm::SelectionDAG::getDbgValue(llvm::MDNode*, llvm::SDNode*, unsigned int, unsigned long long, llvm::DebugLoc, unsigned int)"}, + {"_ZN4llvm12SelectionDAG11getDbgValueEPNS_6MDNodeEPKNS_5ValueEyNS_8DebugLocEj", "llvm::SelectionDAG::getDbgValue(llvm::MDNode*, llvm::Value const*, unsigned long long, llvm::DebugLoc, unsigned int)"}, + {"_ZN4llvm12SelectionDAG11getDbgValueEPNS_6MDNodeEjyNS_8DebugLocEj", "llvm::SelectionDAG::getDbgValue(llvm::MDNode*, unsigned int, unsigned long long, llvm::DebugLoc, unsigned int)"}, + {"_ZN4llvm12SelectionDAG18ReplaceAllUsesWithENS_7SDValueES1_PNS0_17DAGUpdateListenerE", "llvm::SelectionDAG::ReplaceAllUsesWith(llvm::SDValue, llvm::SDValue, llvm::SelectionDAG::DAGUpdateListener*)"}, + {"_ZN12_GLOBAL__N_118RAUWUpdateListenerD1Ev", "(anonymous namespace)::RAUWUpdateListener::~RAUWUpdateListener()"}, + {"_ZN4llvm12SelectionDAG18ReplaceAllUsesWithEPNS_6SDNodeEPKNS_7SDValueEPNS0_17DAGUpdateListenerE", "llvm::SelectionDAG::ReplaceAllUsesWith(llvm::SDNode*, llvm::SDValue const*, llvm::SelectionDAG::DAGUpdateListener*)"}, + {"_ZN4llvm12SelectionDAG25ReplaceAllUsesOfValueWithENS_7SDValueES1_PNS0_17DAGUpdateListenerE", "llvm::SelectionDAG::ReplaceAllUsesOfValueWith(llvm::SDValue, llvm::SDValue, llvm::SelectionDAG::DAGUpdateListener*)"}, + {"_ZN4llvm12SelectionDAG26ReplaceAllUsesOfValuesWithEPKNS_7SDValueES3_jPNS0_17DAGUpdateListenerE", "llvm::SelectionDAG::ReplaceAllUsesOfValuesWith(llvm::SDValue const*, llvm::SDValue const*, unsigned int, llvm::SelectionDAG::DAGUpdateListener*)"}, + {"_ZN4llvm12SelectionDAG22AssignTopologicalOrderEv", "llvm::SelectionDAG::AssignTopologicalOrder()"}, + {"_ZN4llvm14checkForCyclesEPKNS_6SDNodeE", "llvm::checkForCycles(llvm::SDNode const*)"}, + {"_ZN4llvm12SelectionDAG14AssignOrderingEPKNS_6SDNodeEj", "llvm::SelectionDAG::AssignOrdering(llvm::SDNode const*, unsigned int)"}, + {"_ZNK4llvm12SelectionDAG11GetOrderingEPKNS_6SDNodeE", "llvm::SelectionDAG::GetOrdering(llvm::SDNode const*) const"}, + {"_ZN4llvm12SelectionDAG11AddDbgValueEPNS_10SDDbgValueEPNS_6SDNodeEb", "llvm::SelectionDAG::AddDbgValue(llvm::SDDbgValue*, llvm::SDNode*, bool)"}, + {"_ZN4llvm12SelectionDAG17TransferDbgValuesENS_7SDValueES1_", "llvm::SelectionDAG::TransferDbgValues(llvm::SDValue, llvm::SDValue)"}, + {"_ZN4llvm12HandleSDNodeD2Ev", "llvm::HandleSDNode::~HandleSDNode()"}, + {"_ZN4llvm19GlobalAddressSDNodeC2EjNS_8DebugLocEPKNS_11GlobalValueENS_3EVTExh", "llvm::GlobalAddressSDNode::GlobalAddressSDNode(unsigned int, llvm::DebugLoc, llvm::GlobalValue const*, llvm::EVT, long long, unsigned char)"}, + {"_ZN4llvm9MemSDNodeC1EjNS_8DebugLocENS_8SDVTListENS_3EVTEPNS_17MachineMemOperandE", "llvm::MemSDNode::MemSDNode(unsigned int, llvm::DebugLoc, llvm::SDVTList, llvm::EVT, llvm::MachineMemOperand*)"}, + {"_ZN4llvm9MemSDNodeC2EjNS_8DebugLocENS_8SDVTListENS_3EVTEPNS_17MachineMemOperandE", "llvm::MemSDNode::MemSDNode(unsigned int, llvm::DebugLoc, llvm::SDVTList, llvm::EVT, llvm::MachineMemOperand*)"}, + {"_ZN4llvm9MemSDNodeC1EjNS_8DebugLocENS_8SDVTListEPKNS_7SDValueEjNS_3EVTEPNS_17MachineMemOperandE", "llvm::MemSDNode::MemSDNode(unsigned int, llvm::DebugLoc, llvm::SDVTList, llvm::SDValue const*, unsigned int, llvm::EVT, llvm::MachineMemOperand*)"}, + {"_ZN4llvm9MemSDNodeC2EjNS_8DebugLocENS_8SDVTListEPKNS_7SDValueEjNS_3EVTEPNS_17MachineMemOperandE", "llvm::MemSDNode::MemSDNode(unsigned int, llvm::DebugLoc, llvm::SDVTList, llvm::SDValue const*, unsigned int, llvm::EVT, llvm::MachineMemOperand*)"}, + {"_ZNK4llvm6SDNode7ProfileERNS_16FoldingSetNodeIDE", "llvm::SDNode::Profile(llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm6SDNode15hasNUsesOfValueEjj", "llvm::SDNode::hasNUsesOfValue(unsigned int, unsigned int) const"}, + {"_ZNK4llvm6SDNode16hasAnyUseOfValueEj", "llvm::SDNode::hasAnyUseOfValue(unsigned int) const"}, + {"_ZNK4llvm6SDNode12isOnlyUserOfEPS0_", "llvm::SDNode::isOnlyUserOf(llvm::SDNode*) const"}, + {"_ZNK4llvm7SDValue11isOperandOfEPNS_6SDNodeE", "llvm::SDValue::isOperandOf(llvm::SDNode*) const"}, + {"_ZNK4llvm6SDNode11isOperandOfEPS0_", "llvm::SDNode::isOperandOf(llvm::SDNode*) const"}, + {"_ZNK4llvm7SDValue30reachesChainWithoutSideEffectsES0_j", "llvm::SDValue::reachesChainWithoutSideEffects(llvm::SDValue, unsigned int) const"}, + {"_ZNK4llvm6SDNode15isPredecessorOfEPS0_", "llvm::SDNode::isPredecessorOf(llvm::SDNode*) const"}, + {"_ZNK4llvm6SDNode21getConstantOperandValEj", "llvm::SDNode::getConstantOperandVal(unsigned int) const"}, + {"_ZNK4llvm6SDNode16getOperationNameEPKNS_12SelectionDAGE", "llvm::SDNode::getOperationName(llvm::SelectionDAG const*) const"}, + {"_ZN4llvm6SDNode18getIndexedModeNameENS_3ISD14MemIndexedModeE", "llvm::SDNode::getIndexedModeName(llvm::ISD::MemIndexedMode)"}, + {"_ZN4llvm3ISD10ArgFlagsTy17getArgFlagsStringEv", "llvm::ISD::ArgFlagsTy::getArgFlagsString()"}, + {"_ZNK4llvm6SDNode4dumpEv", "llvm::SDNode::dump() const"}, + {"_ZNK4llvm6SDNode4dumpEPKNS_12SelectionDAGE", "llvm::SDNode::dump(llvm::SelectionDAG const*) const"}, + {"_ZNK4llvm6SDNode5printERNS_11raw_ostreamEPKNS_12SelectionDAGE", "llvm::SDNode::print(llvm::raw_ostream&, llvm::SelectionDAG const*) const"}, + {"_ZNK4llvm6SDNode11print_typesERNS_11raw_ostreamEPKNS_12SelectionDAGE", "llvm::SDNode::print_types(llvm::raw_ostream&, llvm::SelectionDAG const*) const"}, + {"_ZNK4llvm6SDNode13print_detailsERNS_11raw_ostreamEPKNS_12SelectionDAGE", "llvm::SDNode::print_details(llvm::raw_ostream&, llvm::SelectionDAG const*) const"}, + {"_ZNK4llvm6SDNode15printrWithDepthERNS_11raw_ostreamEPKNS_12SelectionDAGEj", "llvm::SDNode::printrWithDepth(llvm::raw_ostream&, llvm::SelectionDAG const*, unsigned int) const"}, + {"_Z21printrWithDepthHelperRN4llvm11raw_ostreamEPKNS_6SDNodeEPKNS_12SelectionDAGEjj", "printrWithDepthHelper(llvm::raw_ostream&, llvm::SDNode const*, llvm::SelectionDAG const*, unsigned int, unsigned int)"}, + {"_ZNK4llvm6SDNode10printrFullERNS_11raw_ostreamEPKNS_12SelectionDAGE", "llvm::SDNode::printrFull(llvm::raw_ostream&, llvm::SelectionDAG const*) const"}, + {"_ZNK4llvm6SDNode14dumprWithDepthEPKNS_12SelectionDAGEj", "llvm::SDNode::dumprWithDepth(llvm::SelectionDAG const*, unsigned int) const"}, + {"_ZNK4llvm6SDNode9dumprFullEPKNS_12SelectionDAGE", "llvm::SDNode::dumprFull(llvm::SelectionDAG const*) const"}, + {"_ZN4llvm12SelectionDAG14UnrollVectorOpEPNS_6SDNodeEj", "llvm::SelectionDAG::UnrollVectorOp(llvm::SDNode*, unsigned int)"}, + {"_ZNK4llvm12SelectionDAG17isConsecutiveLoadEPNS_10LoadSDNodeES2_ji", "llvm::SelectionDAG::isConsecutiveLoad(llvm::LoadSDNode*, llvm::LoadSDNode*, unsigned int, int) const"}, + {"_ZNK4llvm12SelectionDAG17InferPtrAlignmentENS_7SDValueE", "llvm::SelectionDAG::InferPtrAlignment(llvm::SDValue) const"}, + {"_ZNK4llvm12SelectionDAG4dumpEv", "llvm::SelectionDAG::dump() const"}, + {"_Z9DumpNodesPKN4llvm6SDNodeEjPKNS_12SelectionDAGE", "DumpNodes(llvm::SDNode const*, unsigned int, llvm::SelectionDAG const*)"}, + {"_ZNK4llvm6SDNode6printrERNS_11raw_ostreamEPKNS_12SelectionDAGE", "llvm::SDNode::printr(llvm::raw_ostream&, llvm::SelectionDAG const*) const"}, + {"_ZNK4llvm6SDNode5dumprEv", "llvm::SDNode::dumpr() const"}, + + // {"_Z10DumpNodesrRN4llvm11raw_ostreamEPKNS_6SDNodeEjPKNS_12SelectionDAGERNS_11SmallPtrSetIS4_Lj128EEE", + // "DumpNodesr(llvm::raw_ostream&, llvm::SDNode const*, unsigned int, llvm::SelectionDAG const*, llvm::SmallPtrSet&)"}, + // "DumpNodesr(llvm::raw_ostream&, llvm::SDNode const*, unsigned int, llvm::SelectionDAG const*, llvm::SmallPtrSet&)" was returned + + {"_ZNK4llvm6SDNode5dumprEPKNS_12SelectionDAGE", "llvm::SDNode::dumpr(llvm::SelectionDAG const*) const"}, + {"_ZNK4llvm19GlobalAddressSDNode15getAddressSpaceEv", "llvm::GlobalAddressSDNode::getAddressSpace() const"}, + {"_ZNK4llvm18ConstantPoolSDNode7getTypeEv", "llvm::ConstantPoolSDNode::getType() const"}, + {"_ZN4llvm17BuildVectorSDNode15isConstantSplatERNS_5APIntES2_RjRbjb", "llvm::BuildVectorSDNode::isConstantSplat(llvm::APInt&, llvm::APInt&, unsigned int&, bool&, unsigned int, bool)"}, + {"_ZN4llvm19ShuffleVectorSDNode11isSplatMaskEPKiNS_3EVTE", "llvm::ShuffleVectorSDNode::isSplatMask(int const*, llvm::EVT)"}, + {"_ZN4llvm14checkForCyclesEPKNS_12SelectionDAGE", "llvm::checkForCycles(llvm::SelectionDAG const*)"}, + {"_ZN4llvm14object_creatorIN12_GLOBAL__N_18EVTArrayEEEPvv", "void* llvm::object_creator<(anonymous namespace)::EVTArray>()"}, + {"_ZN4llvm14object_deleterIN12_GLOBAL__N_18EVTArrayEE4callEPv", "llvm::object_deleter<(anonymous namespace)::EVTArray>::call(void*)"}, + + // {"_ZSt16__introsort_loopIPN12_GLOBAL__N_17UseMemoElEvT_S3_T0_", + // "void std::__introsort_loop<(anonymous namespace)::UseMemo*, long>((anonymous namespace)::UseMemo*, (anonymous namespace)::UseMemo*, long)"}, + // got error + + + // {"_ZSt16__insertion_sortIPN12_GLOBAL__N_17UseMemoEEvT_S3_", + // "void std::__insertion_sort<(anonymous namespace)::UseMemo*>((anonymous namespace)::UseMemo*, (anonymous namespace)::UseMemo*)"}, + // got error + + {"_ZN12_GLOBAL__N_118RAUWUpdateListenerD0Ev", "(anonymous namespace)::RAUWUpdateListener::~RAUWUpdateListener()"}, + {"_ZN12_GLOBAL__N_118RAUWUpdateListener11NodeDeletedEPN4llvm6SDNodeES3_", "(anonymous namespace)::RAUWUpdateListener::NodeDeleted(llvm::SDNode*, llvm::SDNode*)"}, + {"_ZN12_GLOBAL__N_118RAUWUpdateListener11NodeUpdatedEPN4llvm6SDNodeE", "(anonymous namespace)::RAUWUpdateListener::NodeUpdated(llvm::SDNode*)"}, + {"_Z24FindOptimalMemOpLoweringRSt6vectorIN4llvm3EVTESaIS1_EEjyjjbbRNS0_12SelectionDAGERKNS0_14TargetLoweringE", "FindOptimalMemOpLowering(std::vector>&, unsigned int, unsigned long long, unsigned int, unsigned int, bool, bool, llvm::SelectionDAG&, llvm::TargetLowering const&)"}, + {"_Z14getMemsetValueN4llvm7SDValueENS_3EVTERNS_12SelectionDAGENS_8DebugLocE", "getMemsetValue(llvm::SDValue, llvm::EVT, llvm::SelectionDAG&, llvm::DebugLoc)"}, + {"_Z9SplatBytejh", "SplatByte(unsigned int, unsigned char)"}, + {"_ZN4llvm10FoldingSetINS_6SDNodeEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + + // {"_ZNSt3mapISt4pairISshEPN4llvm6SDNodeESt4lessIS1_ESaIS0_IKS1_S4_EEEixERS7_", + // "std::map, llvm::SDNode*, std::less>, std::allocator const, llvm::SDNode*>>>::operator[](std::pair const&)"}, + // "std::map, llvm::SDNode*, std::less, std::allocator>>::operator[](std::less&)" was returned + + {"_ZNK4llvm5APInt4sremERKS0_", "llvm::APInt::srem(llvm::APInt const&) const"}, + {"_ZN4llvm9SDDbgInfo3addEPNS_10SDDbgValueEPKNS_6SDNodeEb", "llvm::SDDbgInfo::add(llvm::SDDbgValue*, llvm::SDNode const*, bool)"}, + {"_ZN4llvm6SDNodeC2EjNS_8DebugLocENS_8SDVTListEPKNS_7SDValueEj", "llvm::SDNode::SDNode(unsigned int, llvm::DebugLoc, llvm::SDVTList, llvm::SDValue const*, unsigned int)"}, + {"_ZNSt6vectorIN4llvm3EVTESaIS1_EE7reserveEm", "std::vector>::reserve(unsigned long)"}, + {"_ZNSt8_Rb_treeIN4llvm3EVTES1_St9_IdentityIS1_ENS1_14compareRawBitsESaIS1_EE16_M_insert_uniqueERKS1_", "std::_Rb_tree, llvm::EVT::compareRawBits, std::allocator>::_M_insert_unique(llvm::EVT const&)"}, + {"_ZN4llvm14object_creatorISt3setINS_3EVTENS2_14compareRawBitsESaIS2_EEEEPvv", "void* llvm::object_creator>>()"}, + {"_ZN4llvm14object_deleterISt3setINS_3EVTENS2_14compareRawBitsESaIS2_EEE4callEPv", "llvm::object_deleter>>::call(void*)"}, + {"_ZNSt8_Rb_treeIN4llvm3EVTES1_St9_IdentityIS1_ENS1_14compareRawBitsESaIS1_EE8_M_eraseEPSt13_Rb_tree_nodeIS1_E", "std::_Rb_tree, llvm::EVT::compareRawBits, std::allocator>::_M_erase(std::_Rb_tree_node*)"}, + {"_ZNSt6vectorIN4llvm8SDVTListESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::SDVTList const&)"}, + {"_ZN4llvm23SmallVectorTemplateBaseINS_3EVTELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZNSt6vectorIPN4llvm14CondCodeSDNodeESaIS2_EE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPS2_S4_EEmRKS2_", "std::vector>::_M_fill_insert(__gnu_cxx::__normal_iterator>>, unsigned long, llvm::CondCodeSDNode* const&)"}, + + // {"_ZNSt8_Rb_treeISt4pairISshES0_IKS1_PN4llvm6SDNodeEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS6_ERKS6_", + // "std::_Rb_tree, std::pair const, llvm::SDNode*>, std::_Select1st const, llvm::SDNode*>>, std::less>, std::allocator const, llvm::SDNode*>>>::_M_insert_unique(std::_Rb_tree_iterator const, llvm::SDNode*>>, std::pair const, llvm::SDNode*> const&)"}, + // "std::_Rb_tree, std::pair, std::_Select1st, std::less, std::allocator>::_M_insert_unique(std::_Rb_tree_iterator, llvm::SDNode* const&)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairISshES0_IKS1_PN4llvm6SDNodeEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE9_M_insertEPSt18_Rb_tree_node_baseSE_RKS6_", + // "std::_Rb_tree, std::pair const, llvm::SDNode*>, std::_Select1st const, llvm::SDNode*>>, std::less>, std::allocator const, llvm::SDNode*>>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair const, llvm::SDNode*> const&)"}, + // "std::_Rb_tree, std::pair, std::_Select1st, std::less, std::allocator>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base, llvm::SDNode* const&)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairISshES0_IKS1_PN4llvm6SDNodeEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE16_M_insert_uniqueERKS6_", + // "std::_Rb_tree, std::pair const, llvm::SDNode*>, std::_Select1st const, llvm::SDNode*>>, std::less>, std::allocator const, llvm::SDNode*>>>::_M_insert_unique(std::pair const, llvm::SDNode*> const&)"}, + // "std::_Rb_tree, std::pair, std::_Select1st, std::less, std::allocator>::_M_insert_unique(llvm::SDNode* const&)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairISshES0_IKS1_PN4llvm6SDNodeEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE11lower_boundERS2_", + // "std::_Rb_tree, std::pair const, llvm::SDNode*>, std::_Select1st const, llvm::SDNode*>>, std::less>, std::allocator const, llvm::SDNode*>>>::lower_bound(std::pair const&)"}, + // "std::_Rb_tree, std::pair, std::_Select1st, std::less, std::allocator>::lower_bound(std::pair&)" was returned + + {"_ZN4llvm9StringMapIPNS_6SDNodeENS_15MallocAllocatorEE16GetOrCreateValueIS2_EERNS_14StringMapEntryIS2_EENS_9StringRefET_", "llvm::StringMapEntry& llvm::StringMap::GetOrCreateValue(llvm::StringRef, llvm::SDNode*)"}, + {"_ZNSt8_Rb_treeIN4llvm3EVTESt4pairIKS1_PNS0_6SDNodeEESt10_Select1stIS6_ENS1_14compareRawBitsESaIS6_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS6_ERKS6_", "std::_Rb_tree, std::_Select1st>, llvm::EVT::compareRawBits, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIN4llvm3EVTESt4pairIKS1_PNS0_6SDNodeEESt10_Select1stIS6_ENS1_14compareRawBitsESaIS6_EE16_M_insert_uniqueERKS6_", "std::_Rb_tree, std::_Select1st>, llvm::EVT::compareRawBits, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZNSt6vectorIPN4llvm6SDNodeESaIS2_EE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPS2_S4_EEmRKS2_", "std::vector>::_M_fill_insert(__gnu_cxx::__normal_iterator>>, unsigned long, llvm::SDNode* const&)"}, + + // {"_ZNSt8_Rb_treeISt4pairISshES0_IKS1_PN4llvm6SDNodeEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE8_M_eraseEPSt13_Rb_tree_nodeIS6_E", + // "std::_Rb_tree, std::pair const, llvm::SDNode*>, std::_Select1st const, llvm::SDNode*>>, std::less>, std::allocator const, llvm::SDNode*>>>::_M_erase(std::_Rb_tree_node const, llvm::SDNode*>>*)"}, + // "std::_Rb_tree, std::pair, std::_Select1st, std::less, std::allocator>::_M_erase(std::_Rb_tree_node*)" was returned + + {"_ZNSt8_Rb_treeIN4llvm3EVTESt4pairIKS1_PNS0_6SDNodeEESt10_Select1stIS6_ENS1_14compareRawBitsESaIS6_EE8_M_eraseEPSt13_Rb_tree_nodeIS6_E", "std::_Rb_tree, std::_Select1st>, llvm::EVT::compareRawBits, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZN4llvm10FoldingSetINS_6SDNodeEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetINS_6SDNodeEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetINS_6SDNodeEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS6_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetINS_6SDNodeEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNSt8_Rb_treeIN4llvm3EVTESt4pairIKS1_PNS0_6SDNodeEESt10_Select1stIS6_ENS1_14compareRawBitsESaIS6_EE5eraseESt17_Rb_tree_iteratorIS6_ESD_", "std::_Rb_tree, std::_Select1st>, llvm::EVT::compareRawBits, std::allocator>>::erase(std::_Rb_tree_iterator>, std::_Rb_tree_iterator>)"}, + + // {"_ZNSt8_Rb_treeISt4pairISshES0_IKS1_PN4llvm6SDNodeEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE5eraseESt17_Rb_tree_iteratorIS6_ESE_", + // "std::_Rb_tree, std::pair const, llvm::SDNode*>, std::_Select1st const, llvm::SDNode*>>, std::less>, std::allocator const, llvm::SDNode*>>>::erase(std::_Rb_tree_iterator const, llvm::SDNode*>>, std::_Rb_tree_iterator const, llvm::SDNode*>>)"}, + // "std::_Rb_tree, std::pair, std::_Select1st, std::less, std::allocator>::erase(std::_Rb_tree_iterator, std::_Rb_tree_iterator)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairISshES0_IKS1_PN4llvm6SDNodeEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE11upper_boundERS2_", + // "std::_Rb_tree, std::pair const, llvm::SDNode*>, std::_Select1st const, llvm::SDNode*>>, std::less>, std::allocator const, llvm::SDNode*>>>::upper_bound(std::pair const&)"}, + // "std::_Rb_tree, std::pair, std::_Select1st, std::less, std::allocator>::upper_bound(std::pair&)" was returned + + + // {"_ZN4llvm11SmallVectorIPNS_6SDNodeELj16EEC2EjRKS2_", + // "llvm::SmallVector::SmallVector(unsigned int, llvm::SDNode* const&)"}, + // "llvm::SmallVector::SmallVector(unsigned int, llvm::SDNode* const&)" was returned + + + // {"_ZN4llvm8DenseMapIPKNS_6SDNodeENS_11SmallVectorIPNS_10SDDbgValueELj2EEENS_12DenseMapInfoIS3_EENS8_IS7_EEE16FindAndConstructERKS3_", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::FindAndConstruct(llvm::SDNode const* const&)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::FindAndConstruct(llvm::SDNode const* const&)" was returned + + + // {"_ZN4llvm8DenseMapIPKNS_6SDNodeENS_11SmallVectorIPNS_10SDDbgValueELj2EEENS_12DenseMapInfoIS3_EENS8_IS7_EEE16InsertIntoBucketERKS3_RKS7_PSt4pairIS3_S7_E", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(llvm::SDNode const* const&, llvm::SmallVector const&, std::pair>*)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(llvm::SDNode const* const&, llvm::SmallVector const&, std::pair>*)" was returned + + + // {"_ZN4llvm8DenseMapIPKNS_6SDNodeENS_11SmallVectorIPNS_10SDDbgValueELj2EEENS_12DenseMapInfoIS3_EENS8_IS7_EEE4growEj", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)" was returned + + {"_ZN4llvm15SmallVectorImplIPNS_10SDDbgValueEEaSERKS3_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + {"_ZN4llvm8DenseMapIPKNS_6SDNodeEjNS_12DenseMapInfoIS3_EENS4_IjEEE16InsertIntoBucketERKS3_RKjPSt4pairIS3_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::SDNode const* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_6SDNodeEjNS_12DenseMapInfoIS3_EENS4_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm12LSBaseSDNodeC2ENS_3ISD8NodeTypeENS_8DebugLocEPNS_7SDValueEjNS_8SDVTListENS1_14MemIndexedModeENS_3EVTEPNS_17MachineMemOperandE", "llvm::LSBaseSDNode::LSBaseSDNode(llvm::ISD::NodeType, llvm::DebugLoc, llvm::SDValue*, unsigned int, llvm::SDVTList, llvm::ISD::MemIndexedMode, llvm::EVT, llvm::MachineMemOperand*)"}, + {"_ZN4llvm12AtomicSDNodeC2EjNS_8DebugLocENS_8SDVTListENS_3EVTENS_7SDValueES4_S4_PNS_17MachineMemOperandE", "llvm::AtomicSDNode::AtomicSDNode(unsigned int, llvm::DebugLoc, llvm::SDVTList, llvm::EVT, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::MachineMemOperand*)"}, + {"_ZN4llvm12AtomicSDNodeC2EjNS_8DebugLocENS_8SDVTListENS_3EVTENS_7SDValueES4_S4_S4_PNS_17MachineMemOperandE", "llvm::AtomicSDNode::AtomicSDNode(unsigned int, llvm::DebugLoc, llvm::SDVTList, llvm::EVT, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::MachineMemOperand*)"}, + {"_ZN4llvm13TernarySDNodeC2EjNS_8DebugLocENS_8SDVTListENS_7SDValueES3_S3_", "llvm::TernarySDNode::TernarySDNode(unsigned int, llvm::DebugLoc, llvm::SDVTList, llvm::SDValue, llvm::SDValue, llvm::SDValue)"}, + + // {"_ZN4llvm8DenseMapIPKNS_6SDNodeENS_11SmallVectorIPNS_10SDDbgValueELj2EEENS_12DenseMapInfoIS3_EENS8_IS7_EEE5clearEv", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::clear()"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::clear()" was returned + + + // {"_ZN4llvm8DenseMapIPKNS_6SDNodeENS_11SmallVectorIPNS_10SDDbgValueELj2EEENS_12DenseMapInfoIS3_EENS8_IS7_EEE16shrink_and_clearEv", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::shrink_and_clear()"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::shrink_and_clear()" was returned + + {"_ZN4llvm8DenseMapIPKNS_6SDNodeEjNS_12DenseMapInfoIS3_EENS4_IjEEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm19SelectionDAGBuilder4initEPNS_14GCFunctionInfoERNS_13AliasAnalysisE", "llvm::SelectionDAGBuilder::init(llvm::GCFunctionInfo*, llvm::AliasAnalysis&)"}, + {"_ZN4llvm19SelectionDAGBuilder5clearEv", "llvm::SelectionDAGBuilder::clear()"}, + {"_ZN4llvm19SelectionDAGBuilder7getRootEv", "llvm::SelectionDAGBuilder::getRoot()"}, + {"_ZN4llvm19SelectionDAGBuilder14getControlRootEv", "llvm::SelectionDAGBuilder::getControlRoot()"}, + {"_ZN4llvm19SelectionDAGBuilder20AssignOrderingToNodeEPKNS_6SDNodeE", "llvm::SelectionDAGBuilder::AssignOrderingToNode(llvm::SDNode const*)"}, + {"_ZN4llvm19SelectionDAGBuilder5visitERKNS_11InstructionE", "llvm::SelectionDAGBuilder::visit(llvm::Instruction const&)"}, + {"_ZN4llvm19SelectionDAGBuilder31HandlePHINodesInSuccessorBlocksEPKNS_10BasicBlockE", "llvm::SelectionDAGBuilder::HandlePHINodesInSuccessorBlocks(llvm::BasicBlock const*)"}, + {"_ZN4llvm19SelectionDAGBuilder5visitEjRKNS_4UserE", "llvm::SelectionDAGBuilder::visit(unsigned int, llvm::User const&)"}, + {"_ZN4llvm19SelectionDAGBuilder24CopyToExportRegsIfNeededEPKNS_5ValueE", "llvm::SelectionDAGBuilder::CopyToExportRegsIfNeeded(llvm::Value const*)"}, + {"_ZN4llvm19SelectionDAGBuilder8visitPHIERKNS_7PHINodeE", "llvm::SelectionDAGBuilder::visitPHI(llvm::PHINode const&)"}, + {"_ZN4llvm19SelectionDAGBuilder8visitRetERKNS_10ReturnInstE", "llvm::SelectionDAGBuilder::visitRet(llvm::ReturnInst const&)"}, + {"_ZN4llvm19SelectionDAGBuilder7visitBrERKNS_10BranchInstE", "llvm::SelectionDAGBuilder::visitBr(llvm::BranchInst const&)"}, + {"_ZN4llvm19SelectionDAGBuilder11visitSwitchERKNS_10SwitchInstE", "llvm::SelectionDAGBuilder::visitSwitch(llvm::SwitchInst const&)"}, + {"_ZN4llvm19SelectionDAGBuilder15visitIndirectBrERKNS_14IndirectBrInstE", "llvm::SelectionDAGBuilder::visitIndirectBr(llvm::IndirectBrInst const&)"}, + {"_ZN4llvm19SelectionDAGBuilder11visitInvokeERKNS_10InvokeInstE", "llvm::SelectionDAGBuilder::visitInvoke(llvm::InvokeInst const&)"}, + {"_ZN4llvm19SelectionDAGBuilder11visitUnwindERKNS_10UnwindInstE", "llvm::SelectionDAGBuilder::visitUnwind(llvm::UnwindInst const&)"}, + {"_ZN4llvm19SelectionDAGBuilder9visitFSubERKNS_4UserE", "llvm::SelectionDAGBuilder::visitFSub(llvm::User const&)"}, + {"_ZN4llvm19SelectionDAGBuilder11visitAllocaERKNS_10AllocaInstE", "llvm::SelectionDAGBuilder::visitAlloca(llvm::AllocaInst const&)"}, + {"_ZN4llvm19SelectionDAGBuilder9visitLoadERKNS_8LoadInstE", "llvm::SelectionDAGBuilder::visitLoad(llvm::LoadInst const&)"}, + {"_ZN4llvm19SelectionDAGBuilder10visitStoreERKNS_9StoreInstE", "llvm::SelectionDAGBuilder::visitStore(llvm::StoreInst const&)"}, + {"_ZN4llvm19SelectionDAGBuilder18visitGetElementPtrERKNS_4UserE", "llvm::SelectionDAGBuilder::visitGetElementPtr(llvm::User const&)"}, + {"_ZN4llvm19SelectionDAGBuilder10visitTruncERKNS_4UserE", "llvm::SelectionDAGBuilder::visitTrunc(llvm::User const&)"}, + {"_ZN4llvm19SelectionDAGBuilder9visitZExtERKNS_4UserE", "llvm::SelectionDAGBuilder::visitZExt(llvm::User const&)"}, + {"_ZN4llvm19SelectionDAGBuilder9visitSExtERKNS_4UserE", "llvm::SelectionDAGBuilder::visitSExt(llvm::User const&)"}, + {"_ZN4llvm19SelectionDAGBuilder11visitFPToUIERKNS_4UserE", "llvm::SelectionDAGBuilder::visitFPToUI(llvm::User const&)"}, + {"_ZN4llvm19SelectionDAGBuilder11visitFPToSIERKNS_4UserE", "llvm::SelectionDAGBuilder::visitFPToSI(llvm::User const&)"}, + {"_ZN4llvm19SelectionDAGBuilder11visitUIToFPERKNS_4UserE", "llvm::SelectionDAGBuilder::visitUIToFP(llvm::User const&)"}, + {"_ZN4llvm19SelectionDAGBuilder11visitSIToFPERKNS_4UserE", "llvm::SelectionDAGBuilder::visitSIToFP(llvm::User const&)"}, + {"_ZN4llvm19SelectionDAGBuilder12visitFPTruncERKNS_4UserE", "llvm::SelectionDAGBuilder::visitFPTrunc(llvm::User const&)"}, + {"_ZN4llvm19SelectionDAGBuilder10visitFPExtERKNS_4UserE", "llvm::SelectionDAGBuilder::visitFPExt(llvm::User const&)"}, + {"_ZN4llvm19SelectionDAGBuilder13visitPtrToIntERKNS_4UserE", "llvm::SelectionDAGBuilder::visitPtrToInt(llvm::User const&)"}, + {"_ZN4llvm19SelectionDAGBuilder13visitIntToPtrERKNS_4UserE", "llvm::SelectionDAGBuilder::visitIntToPtr(llvm::User const&)"}, + {"_ZN4llvm19SelectionDAGBuilder12visitBitCastERKNS_4UserE", "llvm::SelectionDAGBuilder::visitBitCast(llvm::User const&)"}, + {"_ZN4llvm19SelectionDAGBuilder9visitICmpERKNS_4UserE", "llvm::SelectionDAGBuilder::visitICmp(llvm::User const&)"}, + {"_ZN4llvm19SelectionDAGBuilder9visitFCmpERKNS_4UserE", "llvm::SelectionDAGBuilder::visitFCmp(llvm::User const&)"}, + {"_ZN4llvm19SelectionDAGBuilder9visitCallERKNS_8CallInstE", "llvm::SelectionDAGBuilder::visitCall(llvm::CallInst const&)"}, + {"_ZN4llvm19SelectionDAGBuilder11visitSelectERKNS_4UserE", "llvm::SelectionDAGBuilder::visitSelect(llvm::User const&)"}, + {"_ZN4llvm19SelectionDAGBuilder10visitVAArgERKNS_9VAArgInstE", "llvm::SelectionDAGBuilder::visitVAArg(llvm::VAArgInst const&)"}, + {"_ZN4llvm19SelectionDAGBuilder19visitExtractElementERKNS_4UserE", "llvm::SelectionDAGBuilder::visitExtractElement(llvm::User const&)"}, + {"_ZN4llvm19SelectionDAGBuilder18visitInsertElementERKNS_4UserE", "llvm::SelectionDAGBuilder::visitInsertElement(llvm::User const&)"}, + {"_ZN4llvm19SelectionDAGBuilder18visitShuffleVectorERKNS_4UserE", "llvm::SelectionDAGBuilder::visitShuffleVector(llvm::User const&)"}, + {"_ZN4llvm19SelectionDAGBuilder17visitExtractValueERKNS_16ExtractValueInstE", "llvm::SelectionDAGBuilder::visitExtractValue(llvm::ExtractValueInst const&)"}, + {"_ZN4llvm19SelectionDAGBuilder16visitInsertValueERKNS_15InsertValueInstE", "llvm::SelectionDAGBuilder::visitInsertValue(llvm::InsertValueInst const&)"}, + {"_ZN4llvm19SelectionDAGBuilder8getValueEPKNS_5ValueE", "llvm::SelectionDAGBuilder::getValue(llvm::Value const*)"}, + {"_ZN4llvm19SelectionDAGBuilder24resolveDanglingDebugInfoEPKNS_5ValueENS_7SDValueE", "llvm::SelectionDAGBuilder::resolveDanglingDebugInfo(llvm::Value const*, llvm::SDValue)"}, + {"_ZN4llvm19SelectionDAGBuilder24EmitFuncArgumentDbgValueEPKNS_5ValueEPNS_6MDNodeExRKNS_7SDValueE", "llvm::SelectionDAGBuilder::EmitFuncArgumentDbgValue(llvm::Value const*, llvm::MDNode*, long long, llvm::SDValue const&)"}, + {"_ZN12_GLOBAL__N_112RegsForValueC1ERN4llvm11LLVMContextERKNS1_14TargetLoweringEjPKNS1_4TypeE", "(anonymous namespace)::RegsForValue::RegsForValue(llvm::LLVMContext&, llvm::TargetLowering const&, unsigned int, llvm::Type const*)"}, + {"_ZNK12_GLOBAL__N_112RegsForValue15getCopyFromRegsERN4llvm12SelectionDAGERNS1_20FunctionLoweringInfoENS1_8DebugLocERNS1_7SDValueEPS7_", "(anonymous namespace)::RegsForValue::getCopyFromRegs(llvm::SelectionDAG&, llvm::FunctionLoweringInfo&, llvm::DebugLoc, llvm::SDValue&, llvm::SDValue*) const"}, + {"_ZN4llvm19SelectionDAGBuilder12getValueImplEPKNS_5ValueE", "llvm::SelectionDAGBuilder::getValueImpl(llvm::Value const*)"}, + {"_ZN4llvm19SelectionDAGBuilder19getNonRegisterValueEPKNS_5ValueE", "llvm::SelectionDAGBuilder::getNonRegisterValue(llvm::Value const*)"}, + {"_Z14getCopyToPartsRN4llvm12SelectionDAGENS_8DebugLocENS_7SDValueEPS3_jNS_3EVTENS_3ISD8NodeTypeE", "getCopyToParts(llvm::SelectionDAG&, llvm::DebugLoc, llvm::SDValue, llvm::SDValue*, unsigned int, llvm::EVT, llvm::ISD::NodeType)"}, + {"_ZN4llvm19SelectionDAGBuilder26CopyValueToVirtualRegisterEPKNS_5ValueEj", "llvm::SelectionDAGBuilder::CopyValueToVirtualRegister(llvm::Value const*, unsigned int)"}, + {"_ZN4llvm19SelectionDAGBuilder22ExportFromCurrentBlockEPKNS_5ValueE", "llvm::SelectionDAGBuilder::ExportFromCurrentBlock(llvm::Value const*)"}, + {"_ZN4llvm19SelectionDAGBuilder28isExportableFromCurrentBlockEPKNS_5ValueEPKNS_10BasicBlockE", "llvm::SelectionDAGBuilder::isExportableFromCurrentBlock(llvm::Value const*, llvm::BasicBlock const*)"}, + {"_ZN4llvm19SelectionDAGBuilder28EmitBranchForMergedConditionEPKNS_5ValueEPNS_17MachineBasicBlockES5_S5_S5_", "llvm::SelectionDAGBuilder::EmitBranchForMergedCondition(llvm::Value const*, llvm::MachineBasicBlock*, llvm::MachineBasicBlock*, llvm::MachineBasicBlock*, llvm::MachineBasicBlock*)"}, + {"_ZN4llvm19SelectionDAGBuilder20FindMergedConditionsEPKNS_5ValueEPNS_17MachineBasicBlockES5_S5_S5_j", "llvm::SelectionDAGBuilder::FindMergedConditions(llvm::Value const*, llvm::MachineBasicBlock*, llvm::MachineBasicBlock*, llvm::MachineBasicBlock*, llvm::MachineBasicBlock*, unsigned int)"}, + {"_ZN4llvm19SelectionDAGBuilder20ShouldEmitAsBranchesERKSt6vectorINS0_9CaseBlockESaIS2_EE", "llvm::SelectionDAGBuilder::ShouldEmitAsBranches(std::vector> const&)"}, + {"_ZN4llvm19SelectionDAGBuilder15visitSwitchCaseERNS0_9CaseBlockEPNS_17MachineBasicBlockE", "llvm::SelectionDAGBuilder::visitSwitchCase(llvm::SelectionDAGBuilder::CaseBlock&, llvm::MachineBasicBlock*)"}, + {"_ZN4llvm19SelectionDAGBuilder14visitJumpTableERNS0_9JumpTableE", "llvm::SelectionDAGBuilder::visitJumpTable(llvm::SelectionDAGBuilder::JumpTable&)"}, + {"_ZN4llvm19SelectionDAGBuilder20visitJumpTableHeaderERNS0_9JumpTableERNS0_15JumpTableHeaderEPNS_17MachineBasicBlockE", "llvm::SelectionDAGBuilder::visitJumpTableHeader(llvm::SelectionDAGBuilder::JumpTable&, llvm::SelectionDAGBuilder::JumpTableHeader&, llvm::MachineBasicBlock*)"}, + {"_ZN4llvm19SelectionDAGBuilder18visitBitTestHeaderERNS0_12BitTestBlockEPNS_17MachineBasicBlockE", "llvm::SelectionDAGBuilder::visitBitTestHeader(llvm::SelectionDAGBuilder::BitTestBlock&, llvm::MachineBasicBlock*)"}, + {"_ZN4llvm19SelectionDAGBuilder16visitBitTestCaseERNS0_12BitTestBlockEPNS_17MachineBasicBlockEjRNS0_11BitTestCaseES4_", "llvm::SelectionDAGBuilder::visitBitTestCase(llvm::SelectionDAGBuilder::BitTestBlock&, llvm::MachineBasicBlock*, unsigned int, llvm::SelectionDAGBuilder::BitTestCase&, llvm::MachineBasicBlock*)"}, + {"_ZN4llvm19SelectionDAGBuilder14visitInlineAsmENS_17ImmutableCallSiteE", "llvm::SelectionDAGBuilder::visitInlineAsm(llvm::ImmutableCallSite)"}, + {"_ZN4llvm19SelectionDAGBuilder11LowerCallToENS_17ImmutableCallSiteENS_7SDValueEbPNS_17MachineBasicBlockE", "llvm::SelectionDAGBuilder::LowerCallTo(llvm::ImmutableCallSite, llvm::SDValue, bool, llvm::MachineBasicBlock*)"}, + {"_ZN4llvm19SelectionDAGBuilder22handleSmallSwitchRangeERNS0_7CaseRecERSt6vectorIS1_SaIS1_EEPKNS_5ValueEPNS_17MachineBasicBlockESB_", "llvm::SelectionDAGBuilder::handleSmallSwitchRange(llvm::SelectionDAGBuilder::CaseRec&, std::vector>&, llvm::Value const*, llvm::MachineBasicBlock*, llvm::MachineBasicBlock*)"}, + {"_ZN4llvm19SelectionDAGBuilder18handleJTSwitchCaseERNS0_7CaseRecERSt6vectorIS1_SaIS1_EEPKNS_5ValueEPNS_17MachineBasicBlockESB_", "llvm::SelectionDAGBuilder::handleJTSwitchCase(llvm::SelectionDAGBuilder::CaseRec&, std::vector>&, llvm::Value const*, llvm::MachineBasicBlock*, llvm::MachineBasicBlock*)"}, + {"_Z12ComputeRangeRKN4llvm5APIntES2_", "ComputeRange(llvm::APInt const&, llvm::APInt const&)"}, + {"_ZN4llvm19SelectionDAGBuilder23handleBTSplitSwitchCaseERNS0_7CaseRecERSt6vectorIS1_SaIS1_EEPKNS_5ValueEPNS_17MachineBasicBlockESB_", "llvm::SelectionDAGBuilder::handleBTSplitSwitchCase(llvm::SelectionDAGBuilder::CaseRec&, std::vector>&, llvm::Value const*, llvm::MachineBasicBlock*, llvm::MachineBasicBlock*)"}, + {"_ZN4llvm19SelectionDAGBuilder24handleBitTestsSwitchCaseERNS0_7CaseRecERSt6vectorIS1_SaIS1_EEPKNS_5ValueEPNS_17MachineBasicBlockESB_", "llvm::SelectionDAGBuilder::handleBitTestsSwitchCase(llvm::SelectionDAGBuilder::CaseRec&, std::vector>&, llvm::Value const*, llvm::MachineBasicBlock*, llvm::MachineBasicBlock*)"}, + {"_ZN4llvm19SelectionDAGBuilder10ClusterifyERSt6vectorINS0_4CaseESaIS2_EERKNS_10SwitchInstE", "llvm::SelectionDAGBuilder::Clusterify(std::vector>&, llvm::SwitchInst const&)"}, + {"_ZN4llvm19SelectionDAGBuilder16UpdateSplitBlockEPNS_17MachineBasicBlockES2_", "llvm::SelectionDAGBuilder::UpdateSplitBlock(llvm::MachineBasicBlock*, llvm::MachineBasicBlock*)"}, + {"_ZN4llvm19SelectionDAGBuilder11visitBinaryERKNS_4UserEj", "llvm::SelectionDAGBuilder::visitBinary(llvm::User const&, unsigned int)"}, + {"_ZN4llvm19SelectionDAGBuilder10visitShiftERKNS_4UserEj", "llvm::SelectionDAGBuilder::visitShift(llvm::User const&, unsigned int)"}, + {"_ZN4llvm19SelectionDAGBuilder20visitTargetIntrinsicERKNS_8CallInstEj", "llvm::SelectionDAGBuilder::visitTargetIntrinsic(llvm::CallInst const&, unsigned int)"}, + {"_ZN4llvm19SelectionDAGBuilder21implVisitBinaryAtomicERKNS_8CallInstENS_3ISD8NodeTypeE", "llvm::SelectionDAGBuilder::implVisitBinaryAtomic(llvm::CallInst const&, llvm::ISD::NodeType)"}, + {"_ZN4llvm19SelectionDAGBuilder20implVisitAluOverflowERKNS_8CallInstENS_3ISD8NodeTypeE", "llvm::SelectionDAGBuilder::implVisitAluOverflow(llvm::CallInst const&, llvm::ISD::NodeType)"}, + {"_ZN4llvm19SelectionDAGBuilder8visitExpERKNS_8CallInstE", "llvm::SelectionDAGBuilder::visitExp(llvm::CallInst const&)"}, + {"_ZN4llvm19SelectionDAGBuilder8visitLogERKNS_8CallInstE", "llvm::SelectionDAGBuilder::visitLog(llvm::CallInst const&)"}, + {"_Z11GetExponentRN4llvm12SelectionDAGENS_7SDValueERKNS_14TargetLoweringENS_8DebugLocE", "GetExponent(llvm::SelectionDAG&, llvm::SDValue, llvm::TargetLowering const&, llvm::DebugLoc)"}, + {"_Z14GetSignificandRN4llvm12SelectionDAGENS_7SDValueENS_8DebugLocE", "GetSignificand(llvm::SelectionDAG&, llvm::SDValue, llvm::DebugLoc)"}, + {"_ZN4llvm19SelectionDAGBuilder9visitLog2ERKNS_8CallInstE", "llvm::SelectionDAGBuilder::visitLog2(llvm::CallInst const&)"}, + {"_ZN4llvm19SelectionDAGBuilder10visitLog10ERKNS_8CallInstE", "llvm::SelectionDAGBuilder::visitLog10(llvm::CallInst const&)"}, + {"_ZN4llvm19SelectionDAGBuilder9visitExp2ERKNS_8CallInstE", "llvm::SelectionDAGBuilder::visitExp2(llvm::CallInst const&)"}, + {"_ZN4llvm19SelectionDAGBuilder8visitPowERKNS_8CallInstE", "llvm::SelectionDAGBuilder::visitPow(llvm::CallInst const&)"}, + {"_ZN4llvm19SelectionDAGBuilder18visitIntrinsicCallERKNS_8CallInstEj", "llvm::SelectionDAGBuilder::visitIntrinsicCall(llvm::CallInst const&, unsigned int)"}, + {"_ZN4llvm19SelectionDAGBuilder12visitVAStartERKNS_8CallInstE", "llvm::SelectionDAGBuilder::visitVAStart(llvm::CallInst const&)"}, + {"_ZN4llvm19SelectionDAGBuilder10visitVAEndERKNS_8CallInstE", "llvm::SelectionDAGBuilder::visitVAEnd(llvm::CallInst const&)"}, + {"_ZN4llvm19SelectionDAGBuilder11visitVACopyERKNS_8CallInstE", "llvm::SelectionDAGBuilder::visitVACopy(llvm::CallInst const&)"}, + {"_ZNK4llvm14TargetLowering11LowerCallToENS_7SDValueEPKNS_4TypeEbbbbjNS_11CallingConv2IDEbbS1_RSt6vectorINS0_12ArgListEntryESaIS8_EERNS_12SelectionDAGENS_8DebugLocE", "llvm::TargetLowering::LowerCallTo(llvm::SDValue, llvm::Type const*, bool, bool, bool, bool, unsigned int, llvm::CallingConv::ID, bool, bool, llvm::SDValue, std::vector>&, llvm::SelectionDAG&, llvm::DebugLoc) const"}, + {"_Z16getCopyFromPartsRN4llvm12SelectionDAGENS_8DebugLocEPKNS_7SDValueEjNS_3EVTES6_NS_3ISD8NodeTypeE", "getCopyFromParts(llvm::SelectionDAG&, llvm::DebugLoc, llvm::SDValue const*, unsigned int, llvm::EVT, llvm::EVT, llvm::ISD::NodeType)"}, + {"_ZN4llvm19SelectionDAGBuilder15visitMemCmpCallERKNS_8CallInstE", "llvm::SelectionDAGBuilder::visitMemCmpCall(llvm::CallInst const&)"}, + {"_Z13getMemCmpLoadPKN4llvm5ValueENS_3MVTEPKNS_4TypeERNS_19SelectionDAGBuilderE", "getMemCmpLoad(llvm::Value const*, llvm::MVT, llvm::Type const*, llvm::SelectionDAGBuilder&)"}, + {"_ZN4llvm19SelectionDAGBuilder20GetRegistersForValueERNS_20SDISelAsmOperandInfoERSt3setIjSt4lessIjESaIjEES8_", "llvm::SelectionDAGBuilder::GetRegistersForValue(llvm::SDISelAsmOperandInfo&, std::set, std::allocator>&, std::set, std::allocator>&)"}, + + // {"_ZN12_GLOBAL__N_112RegsForValueC1ERKN4llvm11SmallVectorIjLj4EEENS1_3EVTES6_", + // "(anonymous namespace)::RegsForValue::RegsForValue(llvm::SmallVector const&, llvm::EVT, llvm::EVT)"}, + // "(anonymous namespace)::RegsForValue::RegsForValue(llvm::SmallVector const&, llvm::EVT, llvm::EVT)" was returned + + {"_ZNK12_GLOBAL__N_112RegsForValue20AddInlineAsmOperandsEjbjRN4llvm12SelectionDAGERSt6vectorINS1_7SDValueESaIS5_EE", "(anonymous namespace)::RegsForValue::AddInlineAsmOperands(unsigned int, bool, unsigned int, llvm::SelectionDAG&, std::vector>&) const"}, + {"_ZNK12_GLOBAL__N_112RegsForValue13getCopyToRegsEN4llvm7SDValueERNS1_12SelectionDAGENS1_8DebugLocERS2_PS2_", "(anonymous namespace)::RegsForValue::getCopyToRegs(llvm::SDValue, llvm::SelectionDAG&, llvm::DebugLoc, llvm::SDValue&, llvm::SDValue*) const"}, + {"_ZNK4llvm14TargetLowering21LowerOperationWrapperEPNS_6SDNodeERNS_15SmallVectorImplINS_7SDValueEEERNS_12SelectionDAGE", "llvm::TargetLowering::LowerOperationWrapper(llvm::SDNode*, llvm::SmallVectorImpl&, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm14TargetLowering14LowerOperationENS_7SDValueERNS_12SelectionDAGE", "llvm::TargetLowering::LowerOperation(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZN4llvm16SelectionDAGISel14LowerArgumentsEPKNS_10BasicBlockE", "llvm::SelectionDAGISel::LowerArguments(llvm::BasicBlock const*)"}, + + // {"_ZSt22__uninitialized_copy_aIPSt4pairIN12_GLOBAL__N_112RegsForValueEPN4llvm5ValueEES7_S6_ET0_T_S9_S8_SaIT1_E", + // "std::pair<(anonymous namespace)::RegsForValue, llvm::Value*>* std::__uninitialized_copy_a*, std::pair<(anonymous namespace)::RegsForValue, llvm::Value*>*, std::pair<(anonymous namespace)::RegsForValue, llvm::Value*>>(std::pair<(anonymous namespace)::RegsForValue, llvm::Value*>*, std::pair<(anonymous namespace)::RegsForValue, llvm::Value*>*, std::pair<(anonymous namespace)::RegsForValue, llvm::Value*>*, std::allocator>)"}, + // got error + + {"_ZN4llvm25array_pod_sort_comparatorIPNS_10BasicBlockEEEiPKvS4_", "int llvm::array_pod_sort_comparator(void const*, void const*)"}, + {"_ZN4llvm19SelectionDAGBuilder12visitUserOp1ERKNS_11InstructionE", "llvm::SelectionDAGBuilder::visitUserOp1(llvm::Instruction const&)"}, + {"_ZN4llvm19SelectionDAGBuilder12visitUserOp2ERKNS_11InstructionE", "llvm::SelectionDAGBuilder::visitUserOp2(llvm::Instruction const&)"}, + {"_ZN4llvm20FunctionLoweringInfo21InitializeRegForValueEPKNS_5ValueE", "llvm::FunctionLoweringInfo::InitializeRegForValue(llvm::Value const*)"}, + + // {"_ZNSt6vectorISt4pairIN4llvm19SelectionDAGBuilder15JumpTableHeaderENS2_9JumpTableEESaIS5_EE9push_backERKS5_", + // "std::vector, std::allocator>>::push_back(std::pair const&)"}, + // got error + + {"_ZNK4llvm5APInt3ugeEy", "llvm::APInt::uge(unsigned long long) const"}, + {"_ZNK4llvm5APInt3sltEy", "llvm::APInt::slt(unsigned long long) const"}, + {"_ZN4llvm17MachineModuleInfo18setVariableDbgInfoEPNS_6MDNodeEjNS_8DebugLocE", "llvm::MachineModuleInfo::setVariableDbgInfo(llvm::MDNode*, unsigned int, llvm::DebugLoc)"}, + {"_ZNSt6vectorIN4llvm14TargetLowering12ArgListEntryESaIS2_EE7reserveEm", "std::vector>::reserve(unsigned long)"}, + + // {"_ZN4llvm8po_beginIPKNS_4TypeEEENS_11po_iteratorIT_NS_11SmallPtrSetIPNS_11GraphTraitsIS5_E8NodeTypeELj8EEELb0ES8_EES5_", + // "llvm::po_iterator::NodeType*, 8u>, false, llvm::GraphTraits> llvm::po_begin(llvm::Type const*)"}, + // "llvm::po_iterator::NodeType*, 8>, false, llvm::GraphTraits::NodeType> llvm::po_begin(llvm::SmallPtrSet)" was returned + + {"_ZNK4llvm20SDISelAsmOperandInfo17MarkAllocatedRegsEbbRSt3setIjSt4lessIjESaIjEES6_RKNS_18TargetRegisterInfoE", "llvm::SDISelAsmOperandInfo::MarkAllocatedRegs(bool, bool, std::set, std::allocator>&, std::set, std::allocator>&, llvm::TargetRegisterInfo const&) const"}, + {"_ZNK4llvm20SDISelAsmOperandInfo20getCallOperandValEVTERNS_11LLVMContextERKNS_14TargetLoweringEPKNS_10DataLayoutE", "llvm::SDISelAsmOperandInfo::getCallOperandValEVT(llvm::LLVMContext&, llvm::TargetLowering const&, llvm::DataLayout const*) const"}, + {"_ZN4llvm8DenseMapIPKNS_8ConstantEjNS_12DenseMapInfoIS3_EENS4_IjEEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZNSt6vectorISt4pairIPN4llvm12MachineInstrEjESaIS4_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS4_S6_EERKS4_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + {"_ZN4llvm8DenseMapIPKNS_8ConstantEjNS_12DenseMapInfoIS3_EENS4_IjEEE16InsertIntoBucketERKS3_RKjPSt4pairIS3_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::Constant const* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_8ConstantEjNS_12DenseMapInfoIS3_EENS4_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm23SmallVectorTemplateBaseINS_3ISD8InputArgELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZNSt6vectorISt4pairIN4llvm7SDValueEPKNS1_5ValueEESaIS6_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS6_S8_EERKS6_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + {"_ZN4llvm23SmallVectorTemplateBaseINS_20SDISelAsmOperandInfoELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN4llvm20SDISelAsmOperandInfoC2ERKS0_", "llvm::SDISelAsmOperandInfo::SDISelAsmOperandInfo(llvm::SDISelAsmOperandInfo const&)"}, + + // {"_ZN4llvm11po_iteratorIPKNS_4TypeENS_11SmallPtrSetIS3_Lj8EEELb0ENS_11GraphTraitsIS3_EEE13traverseChildEv", + // "llvm::po_iterator, false, llvm::GraphTraits>::traverseChild()"}, + // "llvm::po_iterator, false, llvm::GraphTraits>::traverseChild()" was returned + + {"_ZNSt6vectorISt4pairIPKN4llvm4TypeEPNS1_12PATypeHandleEESaIS7_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS7_S9_EERKS7_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + {"_ZN4llvm8DenseMapIPKNS_10AllocaInstEiNS_12DenseMapInfoIS3_EENS4_IiEEE16InsertIntoBucketERKS3_RKiPSt4pairIS3_iE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::AllocaInst const* const&, int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_10AllocaInstEiNS_12DenseMapInfoIS3_EENS4_IiEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + + // {"_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPN4llvm19SelectionDAGBuilder4CaseESt6vectorIS4_SaIS4_EEEElNS3_7CaseCmpEEvT_SB_T0_T1_", + // "void std::__introsort_loop<__gnu_cxx::__normal_iterator>>, long, llvm::SelectionDAGBuilder::CaseCmp>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, long, llvm::SelectionDAGBuilder::CaseCmp)"}, + // got error + + + // {"_ZSt22__final_insertion_sortIN9__gnu_cxx17__normal_iteratorIPN4llvm19SelectionDAGBuilder4CaseESt6vectorIS4_SaIS4_EEEENS3_7CaseCmpEEvT_SB_T0_", + // "void std::__final_insertion_sort<__gnu_cxx::__normal_iterator>>, llvm::SelectionDAGBuilder::CaseCmp>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, llvm::SelectionDAGBuilder::CaseCmp)"}, + // got error + + + // {"_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPN4llvm19SelectionDAGBuilder4CaseESt6vectorIS4_SaIS4_EEEENS3_7CaseCmpEEvT_SB_T0_", + // "void std::__insertion_sort<__gnu_cxx::__normal_iterator>>, llvm::SelectionDAGBuilder::CaseCmp>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, llvm::SelectionDAGBuilder::CaseCmp)"}, + // got error + + + // {"_ZSt21__unguarded_partitionIN9__gnu_cxx17__normal_iteratorIPN4llvm19SelectionDAGBuilder4CaseESt6vectorIS4_SaIS4_EEEES4_NS3_7CaseCmpEET_SB_SB_T0_T1_", + // "__gnu_cxx::__normal_iterator>> std::__unguarded_partition<__gnu_cxx::__normal_iterator>>, llvm::SelectionDAGBuilder::Case, llvm::SelectionDAGBuilder::CaseCmp>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, llvm::SelectionDAGBuilder::Case, llvm::SelectionDAGBuilder::CaseCmp)"}, + // got error + + + // {"_ZSt13__heap_selectIN9__gnu_cxx17__normal_iteratorIPN4llvm19SelectionDAGBuilder4CaseESt6vectorIS4_SaIS4_EEEENS3_7CaseCmpEEvT_SB_SB_T0_", + // "void std::__heap_select<__gnu_cxx::__normal_iterator>>, llvm::SelectionDAGBuilder::CaseCmp>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, llvm::SelectionDAGBuilder::CaseCmp)"}, + // got error + + + // {"_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPN4llvm19SelectionDAGBuilder4CaseESt6vectorIS4_SaIS4_EEEElS4_NS3_7CaseCmpEEvT_T0_SC_T1_T2_", + // "void std::__adjust_heap<__gnu_cxx::__normal_iterator>>, long, llvm::SelectionDAGBuilder::Case, llvm::SelectionDAGBuilder::CaseCmp>(__gnu_cxx::__normal_iterator>>, long, long, llvm::SelectionDAGBuilder::Case, llvm::SelectionDAGBuilder::CaseCmp)"}, + // got error + + {"_ZNSt6vectorIN4llvm19SelectionDAGBuilder4CaseESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::SelectionDAGBuilder::Case const&)"}, + {"_ZN9__gnu_cxx13new_allocatorIN4llvm19SelectionDAGBuilder12BitTestBlockEE9constructEPS3_RKS3_", "__gnu_cxx::new_allocator::construct(llvm::SelectionDAGBuilder::BitTestBlock*, llvm::SelectionDAGBuilder::BitTestBlock const&)"}, + {"_ZNSt6vectorIN4llvm19SelectionDAGBuilder12BitTestBlockESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::SelectionDAGBuilder::BitTestBlock const&)"}, + {"_ZN4llvm19SelectionDAGBuilder12BitTestBlockaSERKS1_", "llvm::SelectionDAGBuilder::BitTestBlock::operator=(llvm::SelectionDAGBuilder::BitTestBlock const&)"}, + + // {"_ZSt24__uninitialized_copy_auxIPN4llvm19SelectionDAGBuilder12BitTestBlockES3_ET0_T_S5_S4_St12__false_type", + // "llvm::SelectionDAGBuilder::BitTestBlock* std::__uninitialized_copy_aux(llvm::SelectionDAGBuilder::BitTestBlock*, llvm::SelectionDAGBuilder::BitTestBlock*, llvm::SelectionDAGBuilder::BitTestBlock*, std::__false_type)"}, + // got error + + {"_ZN4llvm15SmallVectorImplINS_19SelectionDAGBuilder11BitTestCaseEEaSERKS3_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + {"_ZN4llvm23SmallVectorTemplateBaseINS_19SelectionDAGBuilder11BitTestCaseELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + + // {"_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPN4llvm19SelectionDAGBuilder8CaseBitsESt6vectorIS4_SaIS4_EEEElNS3_11CaseBitsCmpEEvT_SB_T0_T1_", + // "void std::__introsort_loop<__gnu_cxx::__normal_iterator>>, long, llvm::SelectionDAGBuilder::CaseBitsCmp>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, long, llvm::SelectionDAGBuilder::CaseBitsCmp)"}, + // got error + + + // {"_ZSt22__final_insertion_sortIN9__gnu_cxx17__normal_iteratorIPN4llvm19SelectionDAGBuilder8CaseBitsESt6vectorIS4_SaIS4_EEEENS3_11CaseBitsCmpEEvT_SB_T0_", + // "void std::__final_insertion_sort<__gnu_cxx::__normal_iterator>>, llvm::SelectionDAGBuilder::CaseBitsCmp>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, llvm::SelectionDAGBuilder::CaseBitsCmp)"}, + // got error + + + // {"_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPN4llvm19SelectionDAGBuilder8CaseBitsESt6vectorIS4_SaIS4_EEEENS3_11CaseBitsCmpEEvT_SB_T0_", + // "void std::__insertion_sort<__gnu_cxx::__normal_iterator>>, llvm::SelectionDAGBuilder::CaseBitsCmp>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, llvm::SelectionDAGBuilder::CaseBitsCmp)"}, + // got error + + + // {"_ZSt13__heap_selectIN9__gnu_cxx17__normal_iteratorIPN4llvm19SelectionDAGBuilder8CaseBitsESt6vectorIS4_SaIS4_EEEENS3_11CaseBitsCmpEEvT_SB_SB_T0_", + // "void std::__heap_select<__gnu_cxx::__normal_iterator>>, llvm::SelectionDAGBuilder::CaseBitsCmp>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, llvm::SelectionDAGBuilder::CaseBitsCmp)"}, + // got error + + + // {"_ZSt9sort_heapIN9__gnu_cxx17__normal_iteratorIPN4llvm19SelectionDAGBuilder8CaseBitsESt6vectorIS4_SaIS4_EEEENS3_11CaseBitsCmpEEvT_SB_T0_", + // "void std::sort_heap<__gnu_cxx::__normal_iterator>>, llvm::SelectionDAGBuilder::CaseBitsCmp>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, llvm::SelectionDAGBuilder::CaseBitsCmp)"}, + // got error + + {"_ZNSt6vectorIN4llvm19SelectionDAGBuilder8CaseBitsESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::SelectionDAGBuilder::CaseBits const&)"}, + {"_ZNSt6vectorIN4llvm19SelectionDAGBuilder7CaseRecESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::SelectionDAGBuilder::CaseRec const&)"}, + + // {"_ZNSt6vectorISt4pairIN4llvm19SelectionDAGBuilder15JumpTableHeaderENS2_9JumpTableEESaIS5_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS5_S7_EERKS5_", + // "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + // got error + + + // {"_ZSt24__uninitialized_copy_auxIPSt4pairIN4llvm19SelectionDAGBuilder15JumpTableHeaderENS2_9JumpTableEES6_ET0_T_S8_S7_St12__false_type", + // "std::pair* std::__uninitialized_copy_aux*, std::pair*>(std::pair*, std::pair*, std::pair*, std::__false_type)"}, + // got error + + + // {"_ZNSt15__copy_backwardILb0ESt26random_access_iterator_tagE8__copy_bIPSt4pairIN4llvm19SelectionDAGBuilder15JumpTableHeaderENS5_9JumpTableEES9_EET0_T_SB_SA_", + // "std::pair* std::__copy_backward::__copy_b*, std::pair*>(std::pair*, std::pair*, std::pair*)"}, + // got error + + {"_ZNSt6vectorIN4llvm19SelectionDAGBuilder9CaseBlockESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::SelectionDAGBuilder::CaseBlock const&)"}, + {"_ZN4llvm8DenseMapIPKNS_5ValueENS_19SelectionDAGBuilder17DanglingDebugInfoENS_12DenseMapInfoIS3_EENS6_IS5_EEE16InsertIntoBucketERKS3_RKS5_PSt4pairIS3_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::Value const* const&, llvm::SelectionDAGBuilder::DanglingDebugInfo const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_5ValueENS_19SelectionDAGBuilder17DanglingDebugInfoENS_12DenseMapInfoIS3_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKNS_5ValueENS_19SelectionDAGBuilder17DanglingDebugInfoENS_12DenseMapInfoIS3_EENS6_IS5_EEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm8DenseMapIPKNS_5ValueENS_7SDValueENS_12DenseMapInfoIS3_EENS5_IS4_EEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm8DenseMapIPKNS_5ValueENS_7SDValueENS_12DenseMapInfoIS3_EENS5_IS4_EEE16InsertIntoBucketERKS3_RKS4_PSt4pairIS3_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::Value const* const&, llvm::SDValue const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_5ValueENS_7SDValueENS_12DenseMapInfoIS3_EENS5_IS4_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm15SmallVectorImplINS_3EVTEEaSERKS2_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + {"_ZN4llvm20SDISelAsmOperandInfoD2Ev", "llvm::SDISelAsmOperandInfo::~SDISelAsmOperandInfo()"}, + {"_ZN4llvm8DenseMapIPNS_8MCSymbolEjNS_12DenseMapInfoIS2_EENS3_IjEEE16InsertIntoBucketERKS2_RKjPSt4pairIS2_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::MCSymbol* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_8MCSymbolEjNS_12DenseMapInfoIS2_EENS3_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNSt6vectorIN4llvm6GCRootESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::GCRoot const&)"}, + {"_ZN4llvm23SmallVectorTemplateBaseISt4pairINS_10TrackingVHINS_6MDNodeEEES1_IjNS_8DebugLocEEELb0EE4growEm", "llvm::SmallVectorTemplateBase, std::pair>, false>::grow(unsigned long)"}, + + // {"_ZN4llvm19SelectionDAGBuilder12BitTestBlockC2ENS_5APIntES2_PKNS_5ValueEjNS_3EVTEbPNS_17MachineBasicBlockES8_RKNS_11SmallVectorINS0_11BitTestCaseELj3EEE", + // "llvm::SelectionDAGBuilder::BitTestBlock::BitTestBlock(llvm::APInt, llvm::APInt, llvm::Value const*, unsigned int, llvm::EVT, bool, llvm::MachineBasicBlock*, llvm::MachineBasicBlock*, llvm::SmallVector const&)"}, + // "llvm::SelectionDAGBuilder::BitTestBlock::BitTestBlock(llvm::APInt, llvm::APInt, llvm::Value const*, unsigned int, llvm::EVT, bool, llvm::MachineBasicBlock*, llvm::MachineBasicBlock*, llvm::SmallVector const&)" was returned + + {"_ZN4llvm22createDefaultSchedulerEPNS_16SelectionDAGISelENS_10CodeGenOpt5LevelE", "llvm::createDefaultScheduler(llvm::SelectionDAGISel*, llvm::CodeGenOpt::Level)"}, + {"_ZNK4llvm14TargetLowering27EmitInstrWithCustomInserterEPNS_12MachineInstrEPNS_17MachineBasicBlockE", "llvm::TargetLowering::EmitInstrWithCustomInserter(llvm::MachineInstr*, llvm::MachineBasicBlock*) const"}, + {"_ZN4llvm16SelectionDAGISelC1ERKNS_13TargetMachineENS_10CodeGenOpt5LevelE", "llvm::SelectionDAGISel::SelectionDAGISel(llvm::TargetMachine const&, llvm::CodeGenOpt::Level)"}, + {"_ZN4llvm16SelectionDAGISelC2ERKNS_13TargetMachineENS_10CodeGenOpt5LevelE", "llvm::SelectionDAGISel::SelectionDAGISel(llvm::TargetMachine const&, llvm::CodeGenOpt::Level)"}, + {"_ZN4llvm16SelectionDAGISelD0Ev", "llvm::SelectionDAGISel::~SelectionDAGISel()"}, + {"_ZN4llvm16SelectionDAGISelD1Ev", "llvm::SelectionDAGISel::~SelectionDAGISel()"}, + {"_ZN4llvm16SelectionDAGISelD2Ev", "llvm::SelectionDAGISel::~SelectionDAGISel()"}, + {"_ZNK4llvm16SelectionDAGISel16getAnalysisUsageERNS_13AnalysisUsageE", "llvm::SelectionDAGISel::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN4llvm16SelectionDAGISel20runOnMachineFunctionERNS_15MachineFunctionE", "llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN4llvm16SelectionDAGISel20SelectAllBasicBlocksERKNS_8FunctionE", "llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&)"}, + {"_ZN4llvm16SelectionDAGISel16SelectBasicBlockENS_14ilist_iteratorIKNS_11InstructionEEES4_Rb", "llvm::SelectionDAGISel::SelectBasicBlock(llvm::ilist_iterator, llvm::ilist_iterator, bool&)"}, + {"_ZN4llvm16SelectionDAGISel17CodeGenAndEmitDAGEv", "llvm::SelectionDAGISel::CodeGenAndEmitDAG()"}, + {"_ZN4llvm16SelectionDAGISel22ComputeLiveOutVRegInfoEv", "llvm::SelectionDAGISel::ComputeLiveOutVRegInfo()"}, + {"_ZN4llvm16SelectionDAGISel22DoInstructionSelectionEv", "llvm::SelectionDAGISel::DoInstructionSelection()"}, + {"_ZN4llvm16SelectionDAGISel15CreateSchedulerEv", "llvm::SelectionDAGISel::CreateScheduler()"}, + {"_ZN4llvm16SelectionDAGISel19PrepareEHLandingPadEv", "llvm::SelectionDAGISel::PrepareEHLandingPad()"}, + {"_ZN4llvm16SelectionDAGISel21TryToFoldFastISelLoadEPKNS_8LoadInstEPNS_8FastISelE", "llvm::SelectionDAGISel::TryToFoldFastISelLoad(llvm::LoadInst const*, llvm::FastISel*)"}, + {"_ZN4llvm16SelectionDAGISel16FinishBasicBlockEv", "llvm::SelectionDAGISel::FinishBasicBlock()"}, + {"_ZNK4llvm16SelectionDAGISel12CheckAndMaskENS_7SDValueEPNS_14ConstantSDNodeEx", "llvm::SelectionDAGISel::CheckAndMask(llvm::SDValue, llvm::ConstantSDNode*, long long) const"}, + {"_ZNK4llvm16SelectionDAGISel11CheckOrMaskENS_7SDValueEPNS_14ConstantSDNodeEx", "llvm::SelectionDAGISel::CheckOrMask(llvm::SDValue, llvm::ConstantSDNode*, long long) const"}, + {"_ZN4llvm16SelectionDAGISel29SelectInlineAsmMemoryOperandsERSt6vectorINS_7SDValueESaIS2_EE", "llvm::SelectionDAGISel::SelectInlineAsmMemoryOperands(std::vector>&)"}, + {"_ZNK4llvm16SelectionDAGISel18IsProfitableToFoldENS_7SDValueEPNS_6SDNodeES3_", "llvm::SelectionDAGISel::IsProfitableToFold(llvm::SDValue, llvm::SDNode*, llvm::SDNode*) const"}, + {"_ZN4llvm16SelectionDAGISel13IsLegalToFoldENS_7SDValueEPNS_6SDNodeES3_NS_10CodeGenOpt5LevelEb", "llvm::SelectionDAGISel::IsLegalToFold(llvm::SDValue, llvm::SDNode*, llvm::SDNode*, llvm::CodeGenOpt::Level, bool)"}, + + // {"_Z13findNonImmUsePN4llvm6SDNodeES1_S1_S1_RNS_11SmallPtrSetIS1_Lj16EEEb", + // "findNonImmUse(llvm::SDNode*, llvm::SDNode*, llvm::SDNode*, llvm::SDNode*, llvm::SmallPtrSet&, bool)"}, + // "findNonImmUse(llvm::SDNode*, llvm::SDNode*, llvm::SDNode*, llvm::SDNode*, llvm::SmallPtrSet&, bool)" was returned + + {"_ZN4llvm16SelectionDAGISel16Select_INLINEASMEPNS_6SDNodeE", "llvm::SelectionDAGISel::Select_INLINEASM(llvm::SDNode*)"}, + {"_ZN4llvm16SelectionDAGISel12Select_UNDEFEPNS_6SDNodeE", "llvm::SelectionDAGISel::Select_UNDEF(llvm::SDNode*)"}, + {"_ZN4llvm16SelectionDAGISel19UpdateChainsAndGlueEPNS_6SDNodeENS_7SDValueERKNS_15SmallVectorImplIS2_EES3_S7_b", "llvm::SelectionDAGISel::UpdateChainsAndGlue(llvm::SDNode*, llvm::SDValue, llvm::SmallVectorImpl const&, llvm::SDValue, llvm::SmallVectorImpl const&, bool)"}, + {"_ZN4llvm16SelectionDAGISel9MorphNodeEPNS_6SDNodeEjNS_8SDVTListEPKNS_7SDValueEjj", "llvm::SelectionDAGISel::MorphNode(llvm::SDNode*, unsigned int, llvm::SDVTList, llvm::SDValue const*, unsigned int, unsigned int)"}, + {"_ZN4llvm16SelectionDAGISel16SelectCodeCommonEPNS_6SDNodeEPKhj", "llvm::SelectionDAGISel::SelectCodeCommon(llvm::SDNode*, unsigned char const*, unsigned int)"}, + {"_Z22HandleMergeInputChainsRN4llvm15SmallVectorImplIPNS_6SDNodeEEEPNS_12SelectionDAGE", "HandleMergeInputChains(llvm::SmallVectorImpl&, llvm::SelectionDAG*)"}, + {"_ZN4llvm16SelectionDAGISel15CannotYetSelectEPNS_6SDNodeE", "llvm::SelectionDAGISel::CannotYetSelect(llvm::SDNode*)"}, + {"_Z14WalkChainUsersPN4llvm6SDNodeERNS_15SmallVectorImplIS1_EES4_", "WalkChainUsers(llvm::SDNode*, llvm::SmallVectorImpl&, llvm::SmallVectorImpl&)"}, + {"_ZN4llvm2cl3optIPFPNS_18ScheduleDAGSDNodesEPNS_16SelectionDAGISelENS_10CodeGenOpt5LevelEELb0ENS_18RegisterPassParserINS_17RegisterSchedulerEEEED1Ev", "llvm::cl::opt>::~opt()"}, + {"_ZN4llvm17RegisterSchedulerD1Ev", "llvm::RegisterScheduler::~RegisterScheduler()"}, + {"_ZN4llvm15SmallVectorImplIPNS_17MachineMemOperandEE6resizeEj", "llvm::SmallVectorImpl::resize(unsigned int)"}, + {"_ZN4llvm16SelectionDAGISel28SelectInlineAsmMemoryOperandERKNS_7SDValueEcRSt6vectorIS1_SaIS1_EE", "llvm::SelectionDAGISel::SelectInlineAsmMemoryOperand(llvm::SDValue const&, char, std::vector>&)"}, + {"_ZNK4llvm16SelectionDAGISel21CheckPatternPredicateEj", "llvm::SelectionDAGISel::CheckPatternPredicate(unsigned int) const"}, + {"_ZNK4llvm16SelectionDAGISel18CheckNodePredicateEPNS_6SDNodeEj", "llvm::SelectionDAGISel::CheckNodePredicate(llvm::SDNode*, unsigned int) const"}, + {"_ZN4llvm16SelectionDAGISel19CheckComplexPatternEPNS_6SDNodeES2_NS_7SDValueEjRNS_15SmallVectorImplISt4pairIS3_S2_EEE", "llvm::SelectionDAGISel::CheckComplexPattern(llvm::SDNode*, llvm::SDNode*, llvm::SDValue, unsigned int, llvm::SmallVectorImpl>&)"}, + {"_ZN4llvm16SelectionDAGISel14RunSDNodeXFormENS_7SDValueEj", "llvm::SelectionDAGISel::RunSDNodeXForm(llvm::SDValue, unsigned int)"}, + {"_ZN4llvm15SmallVectorImplINS_7SDValueEEaSERKS2_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + {"_ZNSt6vectorIjSaIjEE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPjS1_EEmRKj", "std::vector>::_M_fill_insert(__gnu_cxx::__normal_iterator>>, unsigned long, unsigned int const&)"}, + + // {"_ZNSt6vectorIN4llvm7SDValueESaIS1_EE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPS1_S3_EEEEvS8_T_S9_St20forward_iterator_tag", + // "void std::vector>::_M_range_insert<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, std::forward_iterator_tag)"}, + // got error + + {"_ZNSt6vectorIN4llvm19SelectionDAGBuilder12BitTestBlockESaIS2_EE15_M_erase_at_endEPS2_", "std::vector>::_M_erase_at_end(llvm::SelectionDAGBuilder::BitTestBlock*)"}, + {"_ZN4llvm8DenseMapIPKNS_10BasicBlockEPNS_17MachineBasicBlockENS_12DenseMapInfoIS3_EENS6_IS5_EEE16InsertIntoBucketERKS3_RKS5_PSt4pairIS3_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::BasicBlock const* const&, llvm::MachineBasicBlock* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_10BasicBlockEPNS_17MachineBasicBlockENS_12DenseMapInfoIS3_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm10IndexedMapINS_20FunctionLoweringInfo11LiveOutInfoENS_20VirtReg2IndexFunctorEE6resizeEm", "llvm::IndexedMap::resize(unsigned long)"}, + {"_ZNSt6vectorIN4llvm20FunctionLoweringInfo11LiveOutInfoESaIS2_EE6resizeEmS2_", "std::vector>::resize(unsigned long, llvm::FunctionLoweringInfo::LiveOutInfo)"}, + {"_ZNSt6vectorIN4llvm20FunctionLoweringInfo11LiveOutInfoESaIS2_EE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPS2_S4_EEmRKS2_", "std::vector>::_M_fill_insert(__gnu_cxx::__normal_iterator>>, unsigned long, llvm::FunctionLoweringInfo::LiveOutInfo const&)"}, + + // {"_ZSt26__uninitialized_fill_n_auxIPN4llvm20FunctionLoweringInfo11LiveOutInfoEmS2_EvT_T0_RKT1_St12__false_type", + // "void std::__uninitialized_fill_n_aux(llvm::FunctionLoweringInfo::LiveOutInfo*, unsigned long, llvm::FunctionLoweringInfo::LiveOutInfo const&, std::__false_type)"}, + // got error + + + // {"_ZNSt6__fillILb0EE4fillIPN4llvm20FunctionLoweringInfo11LiveOutInfoES4_EEvT_S6_RKT0_", + // "void std::__fill::fill(llvm::FunctionLoweringInfo::LiveOutInfo*, llvm::FunctionLoweringInfo::LiveOutInfo*, llvm::FunctionLoweringInfo::LiveOutInfo const&)"}, + // "void std::__fill::fill(false, false, llvm::FunctionLoweringInfo::LiveOutInfo* const&)" was returned + + + // {"_ZNSt15__copy_backwardILb0ESt26random_access_iterator_tagE8__copy_bIPN4llvm20FunctionLoweringInfo11LiveOutInfoES6_EET0_T_S8_S7_", + // "llvm::FunctionLoweringInfo::LiveOutInfo* std::__copy_backward::__copy_b(llvm::FunctionLoweringInfo::LiveOutInfo*, llvm::FunctionLoweringInfo::LiveOutInfo*, llvm::FunctionLoweringInfo::LiveOutInfo*)"}, + // got error + + {"_ZN4llvm2cl3optIPFPNS_18ScheduleDAGSDNodesEPNS_16SelectionDAGISelENS_10CodeGenOpt5LevelEELb0ENS_18RegisterPassParserINS_17RegisterSchedulerEEEE4doneEv", "llvm::cl::opt>::done()"}, + + // {"_ZN4llvm2cl3optIPFPNS_18ScheduleDAGSDNodesEPNS_16SelectionDAGISelENS_10CodeGenOpt5LevelEELb0ENS_18RegisterPassParserINS_17RegisterSchedulerEEEE16handleOccurrenceEjNS_9StringRefESE_", + // "llvm::cl::opt>::handleOccurrence(unsigned int, llvm::StringRef, llvm::StringRef)"}, + // got error + + {"_ZNK4llvm2cl3optIPFPNS_18ScheduleDAGSDNodesEPNS_16SelectionDAGISelENS_10CodeGenOpt5LevelEELb0ENS_18RegisterPassParserINS_17RegisterSchedulerEEEE27getValueExpectedFlagDefaultEv", "llvm::cl::opt>::getValueExpectedFlagDefault() const"}, + {"_ZNK4llvm2cl3optIPFPNS_18ScheduleDAGSDNodesEPNS_16SelectionDAGISelENS_10CodeGenOpt5LevelEELb0ENS_18RegisterPassParserINS_17RegisterSchedulerEEEE14getOptionWidthEv", "llvm::cl::opt>::getOptionWidth() const"}, + {"_ZNK4llvm2cl3optIPFPNS_18ScheduleDAGSDNodesEPNS_16SelectionDAGISelENS_10CodeGenOpt5LevelEELb0ENS_18RegisterPassParserINS_17RegisterSchedulerEEEE15printOptionInfoEm", "llvm::cl::opt>::printOptionInfo(unsigned long) const"}, + {"_ZN4llvm2cl3optIPFPNS_18ScheduleDAGSDNodesEPNS_16SelectionDAGISelENS_10CodeGenOpt5LevelEELb0ENS_18RegisterPassParserINS_17RegisterSchedulerEEEE19getExtraOptionNamesERNS_15SmallVectorImplIPKcEE", "llvm::cl::opt>::getExtraOptionNames(llvm::SmallVectorImpl&)"}, + {"_ZN4llvm2cl3optIPFPNS_18ScheduleDAGSDNodesEPNS_16SelectionDAGISelENS_10CodeGenOpt5LevelEELb0ENS_18RegisterPassParserINS_17RegisterSchedulerEEEED0Ev", "llvm::cl::opt>::~opt()"}, + + // {"_ZN4llvm2cl6parserIPFPNS_18ScheduleDAGSDNodesEPNS_16SelectionDAGISelENS_10CodeGenOpt5LevelEEE5parseERNS0_6OptionENS_9StringRefESD_RS9_", + // "llvm::cl::parser::parse(llvm::cl::Option&, llvm::StringRef, llvm::StringRef, llvm::ScheduleDAGSDNodes* (*&)(llvm::SelectionDAGISel*, llvm::CodeGenOpt::Level))"}, + // got error + + {"_ZN4llvm23SmallVectorTemplateBaseINS_2cl6parserIPFPNS_18ScheduleDAGSDNodesEPNS_16SelectionDAGISelENS_10CodeGenOpt5LevelEEE10OptionInfoELb0EE4growEm", "llvm::SmallVectorTemplateBase::OptionInfo, false>::grow(unsigned long)"}, + {"_ZN4llvm18RegisterPassParserINS_17RegisterSchedulerEED1Ev", "llvm::RegisterPassParser::~RegisterPassParser()"}, + {"_ZN4llvm18RegisterPassParserINS_17RegisterSchedulerEED0Ev", "llvm::RegisterPassParser::~RegisterPassParser()"}, + {"_ZN4llvm18RegisterPassParserINS_17RegisterSchedulerEE9NotifyAddEPKcPFPvvES4_", "llvm::RegisterPassParser::NotifyAdd(char const*, void* (*)(), char const*)"}, + {"_ZN4llvm18RegisterPassParserINS_17RegisterSchedulerEE12NotifyRemoveEPKc", "llvm::RegisterPassParser::NotifyRemove(char const*)"}, + + // {"_ZThn16_N4llvm18RegisterPassParserINS_17RegisterSchedulerEED1Ev", + // "non-virtual thunk to llvm::RegisterPassParser::~RegisterPassParser()"}, + // "virtual function non-virtual override offset : -16 llvm::RegisterPassParser::~RegisterPassParser()" was returned + + + // {"_ZThn16_N4llvm18RegisterPassParserINS_17RegisterSchedulerEED0Ev", + // "non-virtual thunk to llvm::RegisterPassParser::~RegisterPassParser()"}, + // "virtual function non-virtual override offset : -16 llvm::RegisterPassParser::~RegisterPassParser()" was returned + + {"_ZNK4llvm2cl6parserIPFPNS_18ScheduleDAGSDNodesEPNS_16SelectionDAGISelENS_10CodeGenOpt5LevelEEE13getNumOptionsEv", "llvm::cl::parser::getNumOptions() const"}, + {"_ZNK4llvm2cl6parserIPFPNS_18ScheduleDAGSDNodesEPNS_16SelectionDAGISelENS_10CodeGenOpt5LevelEEE9getOptionEj", "llvm::cl::parser::getOption(unsigned int) const"}, + {"_ZNK4llvm2cl6parserIPFPNS_18ScheduleDAGSDNodesEPNS_16SelectionDAGISelENS_10CodeGenOpt5LevelEEE14getDescriptionEj", "llvm::cl::parser::getDescription(unsigned int) const"}, + {"_ZN4llvm27MachinePassRegistryListenerD1Ev", "llvm::MachinePassRegistryListener::~MachinePassRegistryListener()"}, + {"_ZN4llvm27MachinePassRegistryListenerD0Ev", "llvm::MachinePassRegistryListener::~MachinePassRegistryListener()"}, + {"_ZN4llvm2cl6parserIPFPNS_18ScheduleDAGSDNodesEPNS_16SelectionDAGISelENS_10CodeGenOpt5LevelEEED1Ev", "llvm::cl::parser::~parser()"}, + {"_ZN4llvm2cl6parserIPFPNS_18ScheduleDAGSDNodesEPNS_16SelectionDAGISelENS_10CodeGenOpt5LevelEEED0Ev", "llvm::cl::parser::~parser()"}, + {"_ZN4llvm8DenseMapIPKNS_5ValueEjNS_12DenseMapInfoIS3_EENS4_IjEEE16InsertIntoBucketERKS3_RKjPSt4pairIS3_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::Value const* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_5ValueEjNS_12DenseMapInfoIS3_EENS4_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm20FunctionLoweringInfoD2Ev", "llvm::FunctionLoweringInfo::~FunctionLoweringInfo()"}, + {"_ZNSt6vectorIN4llvm20FunctionLoweringInfo11LiveOutInfoESaIS2_EED2Ev", "std::vector>::~vector()"}, + {"_ZN4llvm19SelectionDAGBuilderD2Ev", "llvm::SelectionDAGBuilder::~SelectionDAGBuilder()"}, + + // {"_ZNSt6vectorISt4pairIN4llvm19SelectionDAGBuilder15JumpTableHeaderENS2_9JumpTableEESaIS5_EED2Ev", + // "std::vector, std::allocator>>::~vector()"}, + // got error + + {"_ZNSt6vectorIN4llvm19SelectionDAGBuilder12BitTestBlockESaIS2_EED2Ev", "std::vector>::~vector()"}, + {"_ZN4llvm19SelectionDAGBuilderC2ERNS_12SelectionDAGERNS_20FunctionLoweringInfoENS_10CodeGenOpt5LevelE", "llvm::SelectionDAGBuilder::SelectionDAGBuilder(llvm::SelectionDAG&, llvm::FunctionLoweringInfo&, llvm::CodeGenOpt::Level)"}, + {"_ZN4llvm14DOTGraphTraitsIPNS_12SelectionDAGEE12getNodeLabelEPKNS_6SDNodeEPKS1_", "llvm::DOTGraphTraits::getNodeLabel(llvm::SDNode const*, llvm::SelectionDAG const*)"}, + {"_ZN4llvm12SelectionDAG9viewGraphERKSs", "llvm::SelectionDAG::viewGraph(std::string const&)"}, + {"_ZN4llvm12SelectionDAG9viewGraphEv", "llvm::SelectionDAG::viewGraph()"}, + {"_ZN4llvm12SelectionDAG15clearGraphAttrsEv", "llvm::SelectionDAG::clearGraphAttrs()"}, + {"_ZN4llvm12SelectionDAG13setGraphAttrsEPKNS_6SDNodeEPKc", "llvm::SelectionDAG::setGraphAttrs(llvm::SDNode const*, char const*)"}, + {"_ZNK4llvm12SelectionDAG13getGraphAttrsEPKNS_6SDNodeE", "llvm::SelectionDAG::getGraphAttrs(llvm::SDNode const*) const"}, + {"_ZN4llvm12SelectionDAG13setGraphColorEPKNS_6SDNodeEPKc", "llvm::SelectionDAG::setGraphColor(llvm::SDNode const*, char const*)"}, + {"_ZN4llvm12SelectionDAG22setSubgraphColorHelperEPNS_6SDNodeEPKcRNS_8DenseSetIS2_NS_12DenseMapInfoIS2_EEEEiRb", "llvm::SelectionDAG::setSubgraphColorHelper(llvm::SDNode*, char const*, llvm::DenseSet>&, int, bool&)"}, + {"_ZN4llvm12SelectionDAG16setSubgraphColorEPNS_6SDNodeEPKc", "llvm::SelectionDAG::setSubgraphColor(llvm::SDNode*, char const*)"}, + {"_ZNK4llvm18ScheduleDAGSDNodes17getGraphNodeLabelEPKNS_5SUnitE", "llvm::ScheduleDAGSDNodes::getGraphNodeLabel(llvm::SUnit const*) const"}, + {"_ZNK4llvm18ScheduleDAGSDNodes22getCustomGraphFeaturesERNS_11GraphWriterIPNS_11ScheduleDAGEEE", "llvm::ScheduleDAGSDNodes::getCustomGraphFeatures(llvm::GraphWriter&) const"}, + + // {"_ZN4llvm11GraphWriterIPNS_11ScheduleDAGEE14emitSimpleNodeEPKvRKSsS7_jPKSt6vectorISsSaISsEE", + // "llvm::GraphWriter::emitSimpleNode(void const*, std::string const&, std::string const&, unsigned int, std::vector> const*)"}, + // "llvm::GraphWriter::emitSimpleNode(void const*, std::string const&, std::string const, unsigned int, std::vector> const*)" was returned + + {"_ZN4llvm11GraphWriterIPNS_11ScheduleDAGEE8emitEdgeEPKviS5_iRKSs", "llvm::GraphWriter::emitEdge(void const*, int, void const*, int, std::string const&)"}, + {"_ZN4llvm11getTLSModelEPKNS_11GlobalValueENS_5Reloc5ModelE", "llvm::getTLSModel(llvm::GlobalValue const*, llvm::Reloc::Model)"}, + {"_ZN4llvm5RTLIB8getFPEXTENS_3EVTES1_", "llvm::RTLIB::getFPEXT(llvm::EVT, llvm::EVT)"}, + {"_ZN4llvm5RTLIB10getFPROUNDENS_3EVTES1_", "llvm::RTLIB::getFPROUND(llvm::EVT, llvm::EVT)"}, + {"_ZN4llvm5RTLIB11getFPTOSINTENS_3EVTES1_", "llvm::RTLIB::getFPTOSINT(llvm::EVT, llvm::EVT)"}, + {"_ZN4llvm5RTLIB11getFPTOUINTENS_3EVTES1_", "llvm::RTLIB::getFPTOUINT(llvm::EVT, llvm::EVT)"}, + {"_ZN4llvm5RTLIB11getSINTTOFPENS_3EVTES1_", "llvm::RTLIB::getSINTTOFP(llvm::EVT, llvm::EVT)"}, + {"_ZN4llvm5RTLIB11getUINTTOFPENS_3EVTES1_", "llvm::RTLIB::getUINTTOFP(llvm::EVT, llvm::EVT)"}, + {"_ZN4llvm14TargetLoweringC1ERKNS_13TargetMachineEPKNS_24TargetLoweringObjectFileE", "llvm::TargetLowering::TargetLowering(llvm::TargetMachine const&, llvm::TargetLoweringObjectFile const*)"}, + {"_ZN4llvm14TargetLoweringC2ERKNS_13TargetMachineEPKNS_24TargetLoweringObjectFileE", "llvm::TargetLowering::TargetLowering(llvm::TargetMachine const&, llvm::TargetLoweringObjectFile const*)"}, + {"_ZN4llvm14TargetLoweringD0Ev", "llvm::TargetLowering::~TargetLowering()"}, + {"_ZN4llvm14TargetLoweringD1Ev", "llvm::TargetLowering::~TargetLowering()"}, + {"_ZN4llvm14TargetLoweringD2Ev", "llvm::TargetLowering::~TargetLowering()"}, + {"_ZNK4llvm14TargetLowering9canOpTrapEjNS_3EVTE", "llvm::TargetLowering::canOpTrap(unsigned int, llvm::EVT) const"}, + {"_ZNK4llvm14TargetLowering9isLegalRCEPKNS_19TargetRegisterClassE", "llvm::TargetLowering::isLegalRC(llvm::TargetRegisterClass const*) const"}, + {"_ZNK4llvm14TargetLowering26hasLegalSuperRegRegClassesEPKNS_19TargetRegisterClassE", "llvm::TargetLowering::hasLegalSuperRegRegClasses(llvm::TargetRegisterClass const*) const"}, + {"_ZNK4llvm14TargetLowering23findRepresentativeClassENS_3EVTE", "llvm::TargetLowering::findRepresentativeClass(llvm::EVT) const"}, + {"_ZN4llvm14TargetLowering25computeRegisterPropertiesEv", "llvm::TargetLowering::computeRegisterProperties()"}, + {"_ZNK4llvm14TargetLowering17getTargetNodeNameEj", "llvm::TargetLowering::getTargetNodeName(unsigned int) const"}, + {"_ZNK4llvm14TargetLowering18getSetCCResultTypeENS_3EVTE", "llvm::TargetLowering::getSetCCResultType(llvm::EVT) const"}, + {"_ZNK4llvm14TargetLowering23getCmpLibcallReturnTypeEv", "llvm::TargetLowering::getCmpLibcallReturnType() const"}, + {"_ZNK4llvm14TargetLowering22getVectorTypeBreakdownERNS_11LLVMContextENS_3EVTERS3_RjS4_", "llvm::TargetLowering::getVectorTypeBreakdown(llvm::LLVMContext&, llvm::EVT, llvm::EVT&, unsigned int&, llvm::EVT&) const"}, + {"_ZN4llvm13GetReturnInfoEPKNS_4TypeEjRNS_15SmallVectorImplINS_3ISD9OutputArgEEERKNS_14TargetLoweringEPNS3_IyEE", "llvm::GetReturnInfo(llvm::Type const*, unsigned int, llvm::SmallVectorImpl&, llvm::TargetLowering const&, llvm::SmallVectorImpl*)"}, + {"_ZNK4llvm14TargetLowering21getByValTypeAlignmentEPKNS_4TypeE", "llvm::TargetLowering::getByValTypeAlignment(llvm::Type const*) const"}, + {"_ZNK4llvm14TargetLowering20getJumpTableEncodingEv", "llvm::TargetLowering::getJumpTableEncoding() const"}, + {"_ZNK4llvm14TargetLowering24getPICJumpTableRelocBaseENS_7SDValueERNS_12SelectionDAGE", "llvm::TargetLowering::getPICJumpTableRelocBase(llvm::SDValue, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm14TargetLowering28getPICJumpTableRelocBaseExprEPKNS_15MachineFunctionEjRNS_9MCContextE", "llvm::TargetLowering::getPICJumpTableRelocBaseExpr(llvm::MachineFunction const*, unsigned int, llvm::MCContext&) const"}, + {"_ZNK4llvm14TargetLowering20isOffsetFoldingLegalEPKNS_19GlobalAddressSDNodeE", "llvm::TargetLowering::isOffsetFoldingLegal(llvm::GlobalAddressSDNode const*) const"}, + {"_ZN4llvm14TargetLowering17TargetLoweringOpt22ShrinkDemandedConstantENS_7SDValueERKNS_5APIntE", "llvm::TargetLowering::TargetLoweringOpt::ShrinkDemandedConstant(llvm::SDValue, llvm::APInt const&)"}, + {"_ZN4llvm14TargetLowering17TargetLoweringOpt16ShrinkDemandedOpENS_7SDValueEjRKNS_5APIntENS_8DebugLocE", "llvm::TargetLowering::TargetLoweringOpt::ShrinkDemandedOp(llvm::SDValue, unsigned int, llvm::APInt const&, llvm::DebugLoc)"}, + {"_ZNK4llvm14TargetLowering20SimplifyDemandedBitsENS_7SDValueERKNS_5APIntERS2_S5_RNS0_17TargetLoweringOptEj", "llvm::TargetLowering::SimplifyDemandedBits(llvm::SDValue, llvm::APInt const&, llvm::APInt&, llvm::APInt&, llvm::TargetLowering::TargetLoweringOpt&, unsigned int) const"}, + {"_ZNK4llvm14TargetLowering30computeMaskedBitsForTargetNodeENS_7SDValueERKNS_5APIntERS2_S5_RKNS_12SelectionDAGEj", "llvm::TargetLowering::computeMaskedBitsForTargetNode(llvm::SDValue, llvm::APInt const&, llvm::APInt&, llvm::APInt&, llvm::SelectionDAG const&, unsigned int) const"}, + {"_ZNK4llvm14TargetLowering31ComputeNumSignBitsForTargetNodeENS_7SDValueEj", "llvm::TargetLowering::ComputeNumSignBitsForTargetNode(llvm::SDValue, unsigned int) const"}, + {"_ZNK4llvm14TargetLowering13SimplifySetCCENS_3EVTENS_7SDValueES2_NS_3ISD8CondCodeEbRNS0_15DAGCombinerInfoENS_8DebugLocE", "llvm::TargetLowering::SimplifySetCC(llvm::EVT, llvm::SDValue, llvm::SDValue, llvm::ISD::CondCode, bool, llvm::TargetLowering::DAGCombinerInfo&, llvm::DebugLoc) const"}, + {"_Z24ValueHasExactlyOneBitSetN4llvm7SDValueERKNS_12SelectionDAGE", "ValueHasExactlyOneBitSet(llvm::SDValue, llvm::SelectionDAG const&)"}, + {"_ZNK4llvm14TargetLowering14isGAPlusOffsetEPNS_6SDNodeERPKNS_11GlobalValueERx", "llvm::TargetLowering::isGAPlusOffset(llvm::SDNode*, llvm::GlobalValue const*&, long long&) const"}, + {"_ZNK4llvm14TargetLowering17PerformDAGCombineEPNS_6SDNodeERNS0_15DAGCombinerInfoE", "llvm::TargetLowering::PerformDAGCombine(llvm::SDNode*, llvm::TargetLowering::DAGCombinerInfo&) const"}, + {"_ZNK4llvm14TargetLowering17getConstraintTypeERKSs", "llvm::TargetLowering::getConstraintType(std::string const&) const"}, + {"_ZNK4llvm14TargetLowering16LowerXConstraintENS_3EVTE", "llvm::TargetLowering::LowerXConstraint(llvm::EVT) const"}, + {"_ZNK4llvm14TargetLowering28LowerAsmOperandForConstraintENS_7SDValueEcRSt6vectorIS1_SaIS1_EERNS_12SelectionDAGE", "llvm::TargetLowering::LowerAsmOperandForConstraint(llvm::SDValue, char, std::vector>&, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm14TargetLowering33getRegClassForInlineAsmConstraintERKSsNS_3EVTE", "llvm::TargetLowering::getRegClassForInlineAsmConstraint(std::string const&, llvm::EVT) const"}, + {"_ZNK4llvm14TargetLowering28getRegForInlineAsmConstraintERKSsNS_3EVTE", "llvm::TargetLowering::getRegForInlineAsmConstraint(std::string const&, llvm::EVT) const"}, + {"_ZNK4llvm14TargetLowering14AsmOperandInfo25isMatchingInputConstraintEv", "llvm::TargetLowering::AsmOperandInfo::isMatchingInputConstraint() const"}, + {"_ZNK4llvm14TargetLowering14AsmOperandInfo17getMatchedOperandEv", "llvm::TargetLowering::AsmOperandInfo::getMatchedOperand() const"}, + {"_ZNK4llvm14TargetLowering16ParseConstraintsENS_17ImmutableCallSiteE", "llvm::TargetLowering::ParseConstraints(llvm::ImmutableCallSite) const"}, + {"_ZNK4llvm14TargetLowering32getMultipleConstraintMatchWeightERNS0_14AsmOperandInfoEi", "llvm::TargetLowering::getMultipleConstraintMatchWeight(llvm::TargetLowering::AsmOperandInfo&, int) const"}, + {"_ZNK4llvm14TargetLowering30getSingleConstraintMatchWeightERNS0_14AsmOperandInfoEPKc", "llvm::TargetLowering::getSingleConstraintMatchWeight(llvm::TargetLowering::AsmOperandInfo&, char const*) const"}, + {"_ZNK4llvm14TargetLowering22ComputeConstraintToUseERNS0_14AsmOperandInfoENS_7SDValueEPNS_12SelectionDAGE", "llvm::TargetLowering::ComputeConstraintToUse(llvm::TargetLowering::AsmOperandInfo&, llvm::SDValue, llvm::SelectionDAG*) const"}, + {"_ZNK4llvm14TargetLowering21isLegalAddressingModeERKNS0_8AddrModeEPKNS_4TypeE", "llvm::TargetLowering::isLegalAddressingMode(llvm::TargetLowering::AddrMode const&, llvm::Type const*) const"}, + {"_ZNK4llvm14TargetLowering9BuildSDIVEPNS_6SDNodeERNS_12SelectionDAGEPSt6vectorIS2_SaIS2_EE", "llvm::TargetLowering::BuildSDIV(llvm::SDNode*, llvm::SelectionDAG&, std::vector>*) const"}, + {"_ZNK4llvm14TargetLowering9BuildUDIVEPNS_6SDNodeERNS_12SelectionDAGEPSt6vectorIS2_SaIS2_EE", "llvm::TargetLowering::BuildUDIV(llvm::SDNode*, llvm::SelectionDAG&, std::vector>*) const"}, + {"_ZNK4llvm14TargetLowering20getTypeToTransformToERNS_11LLVMContextENS_3EVTE", "llvm::TargetLowering::getTypeToTransformTo(llvm::LLVMContext&, llvm::EVT) const"}, + {"_ZNK4llvm14TargetLowering15getRegisterTypeERNS_11LLVMContextENS_3EVTE", "llvm::TargetLowering::getRegisterType(llvm::LLVMContext&, llvm::EVT) const"}, + {"_ZNK4llvm14TargetLowering15getNumRegistersERNS_11LLVMContextENS_3EVTE", "llvm::TargetLowering::getNumRegisters(llvm::LLVMContext&, llvm::EVT) const"}, + {"_ZNK4llvm5APInt10intersectsERKS0_", "llvm::APInt::intersects(llvm::APInt const&) const"}, + {"_ZNK4llvm5APInt6isIntNEj", "llvm::APInt::isIntN(unsigned int) const"}, + {"_ZNK4llvm3EVT6bitsLEES0_", "llvm::EVT::bitsLE(llvm::EVT) const"}, + {"_ZN4llvm5APInt17getSignedMaxValueEj", "llvm::APInt::getSignedMaxValue(unsigned int)"}, + {"_ZNK4llvm5APIntmiEy", "llvm::APInt::operator-(unsigned long long) const"}, + {"_ZNK4llvm14TargetLowering19getRegPressureLimitEPKNS_19TargetRegisterClassERNS_15MachineFunctionE", "llvm::TargetLowering::getRegPressureLimit(llvm::TargetRegisterClass const*, llvm::MachineFunction&) const"}, + {"_ZNK4llvm14TargetLowering12isFPImmLegalERKNS_7APFloatENS_3EVTE", "llvm::TargetLowering::isFPImmLegal(llvm::APFloat const&, llvm::EVT) const"}, + {"_ZNK4llvm14TargetLowering18isShuffleMaskLegalERKNS_15SmallVectorImplIiEENS_3EVTE", "llvm::TargetLowering::isShuffleMaskLegal(llvm::SmallVectorImpl const&, llvm::EVT) const"}, + {"_ZNK4llvm14TargetLowering29allowsUnalignedMemoryAccessesENS_3EVTE", "llvm::TargetLowering::allowsUnalignedMemoryAccesses(llvm::EVT) const"}, + {"_ZNK4llvm14TargetLowering20LowerFormalArgumentsENS_7SDValueENS_11CallingConv2IDEbRKNS_15SmallVectorImplINS_3ISD8InputArgEEENS_8DebugLocERNS_12SelectionDAGERNS4_IS1_EE", "llvm::TargetLowering::LowerFormalArguments(llvm::SDValue, llvm::CallingConv::ID, bool, llvm::SmallVectorImpl const&, llvm::DebugLoc, llvm::SelectionDAG&, llvm::SmallVectorImpl&) const"}, + {"_ZNK4llvm14TargetLowering9LowerCallENS_7SDValueES1_NS_11CallingConv2IDEbRbRKNS_15SmallVectorImplINS_3ISD9OutputArgEEERKNS5_IS1_EERKNS5_INS6_8InputArgEEENS_8DebugLocERNS_12SelectionDAGERSB_", "llvm::TargetLowering::LowerCall(llvm::SDValue, llvm::SDValue, llvm::CallingConv::ID, bool, bool&, llvm::SmallVectorImpl const&, llvm::SmallVectorImpl const&, llvm::SmallVectorImpl const&, llvm::DebugLoc, llvm::SelectionDAG&, llvm::SmallVectorImpl&) const"}, + {"_ZNK4llvm14TargetLowering11LowerReturnENS_7SDValueENS_11CallingConv2IDEbRKNS_15SmallVectorImplINS_3ISD9OutputArgEEERKNS4_IS1_EENS_8DebugLocERNS_12SelectionDAGE", "llvm::TargetLowering::LowerReturn(llvm::SDValue, llvm::CallingConv::ID, bool, llvm::SmallVectorImpl const&, llvm::SmallVectorImpl const&, llvm::DebugLoc, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm14TargetLowering18isUsedByReturnOnlyEPNS_6SDNodeE", "llvm::TargetLowering::isUsedByReturnOnly(llvm::SDNode*) const"}, + {"_ZNK4llvm14TargetLowering18ReplaceNodeResultsEPNS_6SDNodeERNS_15SmallVectorImplINS_7SDValueEEERNS_12SelectionDAGE", "llvm::TargetLowering::ReplaceNodeResults(llvm::SDNode*, llvm::SmallVectorImpl&, llvm::SelectionDAG&) const"}, + {"_ZNK4llvm14TargetLowering14createFastISelERNS_20FunctionLoweringInfoE", "llvm::TargetLowering::createFastISel(llvm::FunctionLoweringInfo&) const"}, + {"_ZNK4llvm14TargetLowering15ExpandInlineAsmEPNS_8CallInstE", "llvm::TargetLowering::ExpandInlineAsm(llvm::CallInst*) const"}, + {"_ZNSt6vectorIPN4llvm6SDNodeESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::SDNode* const&)"}, + {"_ZNSt6vectorIN4llvm14TargetLowering14AsmOperandInfoESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::TargetLowering::AsmOperandInfo const&)"}, + + // {"_ZSt13__destroy_auxIPN4llvm14TargetLowering14AsmOperandInfoEEvT_S4_St12__false_type", + // "void std::__destroy_aux(llvm::TargetLowering::AsmOperandInfo*, llvm::TargetLowering::AsmOperandInfo*, std::__false_type)"}, + // got error + + {"_ZNSt6vectorIN4llvm9InlineAsm17SubConstraintInfoESaIS2_EEaSERKS4_", "std::vector>::operator=(std::vector> const&)"}, + + // {"_ZNSt15__copy_backwardILb0ESt26random_access_iterator_tagE8__copy_bIPN4llvm14TargetLowering14AsmOperandInfoES6_EET0_T_S8_S7_", + // "llvm::TargetLowering::AsmOperandInfo* std::__copy_backward::__copy_b(llvm::TargetLowering::AsmOperandInfo*, llvm::TargetLowering::AsmOperandInfo*, llvm::TargetLowering::AsmOperandInfo*)"}, + // got error + + {"_ZN4llvm23SmallVectorTemplateBaseINS_3ISD9OutputArgELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZNK4llvm3EVT17getPow2VectorTypeERNS_11LLVMContextE", "llvm::EVT::getPow2VectorType(llvm::LLVMContext&) const"}, + {"_ZNK4llvm14TargetLowering19ValueTypeActionImpl21getExtendedTypeActionENS_3EVTE", "llvm::TargetLowering::ValueTypeActionImpl::getExtendedTypeAction(llvm::EVT) const"}, + + // {"_ZNSt8_Rb_treeISt4pairIjN4llvm3MVT15SimpleValueTypeEES0_IKS4_S3_ESt10_Select1stIS6_ESt4lessIS4_ESaIS6_EE8_M_eraseEPSt13_Rb_tree_nodeIS6_E", + // "std::_Rb_tree, std::pair const, llvm::MVT::SimpleValueType>, std::_Select1st const, llvm::MVT::SimpleValueType>>, std::less>, std::allocator const, llvm::MVT::SimpleValueType>>>::_M_erase(std::_Rb_tree_node const, llvm::MVT::SimpleValueType>>*)"}, + // "std::_Rb_tree, std::pair const, llvm::MVT::SimpleValueType>, std::_Select1st< const, llvm::MVT::SimpleValueType>>, std::less>, std::allocator< const, llvm::MVT::SimpleValueType>>>::_M_erase(std::_Rb_tree_node< const, llvm::MVT::SimpleValueType>>*)" was returned + + {"_ZN4llvm22TargetSelectionDAGInfoC1ERKNS_13TargetMachineE", "llvm::TargetSelectionDAGInfo::TargetSelectionDAGInfo(llvm::TargetMachine const&)"}, + {"_ZN4llvm22TargetSelectionDAGInfoC2ERKNS_13TargetMachineE", "llvm::TargetSelectionDAGInfo::TargetSelectionDAGInfo(llvm::TargetMachine const&)"}, + {"_ZN4llvm22TargetSelectionDAGInfoD0Ev", "llvm::TargetSelectionDAGInfo::~TargetSelectionDAGInfo()"}, + {"_ZN4llvm22TargetSelectionDAGInfoD1Ev", "llvm::TargetSelectionDAGInfo::~TargetSelectionDAGInfo()"}, + {"_ZN4llvm22TargetSelectionDAGInfoD2Ev", "llvm::TargetSelectionDAGInfo::~TargetSelectionDAGInfo()"}, + {"_ZNK4llvm22TargetSelectionDAGInfo23EmitTargetCodeForMemcpyERNS_12SelectionDAGENS_8DebugLocENS_7SDValueES4_S4_S4_jbbNS_18MachinePointerInfoES5_", "llvm::TargetSelectionDAGInfo::EmitTargetCodeForMemcpy(llvm::SelectionDAG&, llvm::DebugLoc, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::SDValue, unsigned int, bool, bool, llvm::MachinePointerInfo, llvm::MachinePointerInfo) const"}, + {"_ZN4llvm10AsmPrinterC1ERNS_13TargetMachineERNS_10MCStreamerE", "llvm::AsmPrinter::AsmPrinter(llvm::TargetMachine&, llvm::MCStreamer&)"}, + {"_ZN4llvm10AsmPrinterC2ERNS_13TargetMachineERNS_10MCStreamerE", "llvm::AsmPrinter::AsmPrinter(llvm::TargetMachine&, llvm::MCStreamer&)"}, + {"_ZN4llvm10AsmPrinterD0Ev", "llvm::AsmPrinter::~AsmPrinter()"}, + {"_ZN4llvm10AsmPrinterD1Ev", "llvm::AsmPrinter::~AsmPrinter()"}, + {"_ZN4llvm10AsmPrinterD2Ev", "llvm::AsmPrinter::~AsmPrinter()"}, + {"_ZNK4llvm10AsmPrinter17getFunctionNumberEv", "llvm::AsmPrinter::getFunctionNumber() const"}, + {"_ZNK4llvm10AsmPrinter18getObjFileLoweringEv", "llvm::AsmPrinter::getObjFileLowering() const"}, + {"_ZNK4llvm10AsmPrinter13getDataLayoutEv", "llvm::AsmPrinter::getDataLayout() const"}, + {"_ZNK4llvm10AsmPrinter17getCurrentSectionEv", "llvm::AsmPrinter::getCurrentSection() const"}, + {"_ZNK4llvm10AsmPrinter16getAnalysisUsageERNS_13AnalysisUsageE", "llvm::AsmPrinter::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN4llvm10AsmPrinter16doInitializationERNS_6ModuleE", "llvm::AsmPrinter::doInitialization(llvm::Module&)"}, + {"_ZN4llvm10AsmPrinter20GetOrCreateGCPrinterEPNS_10GCStrategyE", "llvm::AsmPrinter::GetOrCreateGCPrinter(llvm::GCStrategy*)"}, + {"_ZNK4llvm10AsmPrinter11EmitLinkageEjPNS_8MCSymbolE", "llvm::AsmPrinter::EmitLinkage(unsigned int, llvm::MCSymbol*) const"}, + {"_ZN4llvm10AsmPrinter18EmitGlobalVariableEPKNS_14GlobalVariableE", "llvm::AsmPrinter::EmitGlobalVariable(llvm::GlobalVariable const*)"}, + {"_ZN4llvm10AsmPrinter21EmitSpecialLLVMGlobalEPKNS_14GlobalVariableE", "llvm::AsmPrinter::EmitSpecialLLVMGlobal(llvm::GlobalVariable const*)"}, + {"_ZNK4llvm10AsmPrinter14EmitVisibilityEPNS_8MCSymbolEj", "llvm::AsmPrinter::EmitVisibility(llvm::MCSymbol*, unsigned int) const"}, + {"_ZNK4llvm10AsmPrinter13EmitAlignmentEjPKNS_11GlobalValueE", "llvm::AsmPrinter::EmitAlignment(unsigned int, llvm::GlobalValue const*) const"}, + {"_ZN4llvm10AsmPrinter18EmitGlobalConstantEPKNS_8ConstantEj", "llvm::AsmPrinter::EmitGlobalConstant(llvm::Constant const*, unsigned int)"}, + {"_ZNK4llvm10AsmPrinter23GetExternalSymbolSymbolENS_9StringRefE", "llvm::AsmPrinter::GetExternalSymbolSymbol(llvm::StringRef) const"}, + {"_ZN4llvm10AsmPrinter18EmitFunctionHeaderEv", "llvm::AsmPrinter::EmitFunctionHeader()"}, + {"_ZN4llvm10AsmPrinter22EmitFunctionEntryLabelEv", "llvm::AsmPrinter::EmitFunctionEntryLabel()"}, + {"_ZN4llvm10AsmPrinter16EmitFunctionBodyEv", "llvm::AsmPrinter::EmitFunctionBody()"}, + {"_ZNK4llvm10AsmPrinter19EmitBasicBlockStartEPKNS_17MachineBasicBlockE", "llvm::AsmPrinter::EmitBasicBlockStart(llvm::MachineBasicBlock const*) const"}, + {"_ZN4llvm10AsmPrinter17EmitJumpTableInfoEv", "llvm::AsmPrinter::EmitJumpTableInfo()"}, + {"_ZNK4llvm10AsmPrinter21getDebugValueLocationEPKNS_12MachineInstrE", "llvm::AsmPrinter::getDebugValueLocation(llvm::MachineInstr const*) const"}, + {"_ZN4llvm10AsmPrinter14doFinalizationERNS_6ModuleE", "llvm::AsmPrinter::doFinalization(llvm::Module&)"}, + {"_ZN4llvm10AsmPrinter20SetupMachineFunctionERNS_15MachineFunctionE", "llvm::AsmPrinter::SetupMachineFunction(llvm::MachineFunction&)"}, + {"_ZN4llvm10AsmPrinter16EmitConstantPoolEv", "llvm::AsmPrinter::EmitConstantPool()"}, + {"_ZNK4llvm10AsmPrinter12GetCPISymbolEj", "llvm::AsmPrinter::GetCPISymbol(unsigned int) const"}, + {"_ZNK4llvm10AsmPrinter14GetJTSetSymbolEjj", "llvm::AsmPrinter::GetJTSetSymbol(unsigned int, unsigned int) const"}, + {"_ZNK4llvm10AsmPrinter12GetJTISymbolEjb", "llvm::AsmPrinter::GetJTISymbol(unsigned int, bool) const"}, + {"_ZNK4llvm10AsmPrinter18EmitJumpTableEntryEPKNS_20MachineJumpTableInfoEPKNS_17MachineBasicBlockEj", "llvm::AsmPrinter::EmitJumpTableEntry(llvm::MachineJumpTableInfo const*, llvm::MachineBasicBlock const*, unsigned int) const"}, + {"_ZN4llvm10AsmPrinter16EmitLLVMUsedListEPNS_8ConstantE", "llvm::AsmPrinter::EmitLLVMUsedList(llvm::Constant*)"}, + {"_ZN4llvm10AsmPrinter18EmitXXStructorListEPNS_8ConstantE", "llvm::AsmPrinter::EmitXXStructorList(llvm::Constant*)"}, + {"_ZNK4llvm10AsmPrinter8EmitInt8Ei", "llvm::AsmPrinter::EmitInt8(int) const"}, + {"_ZNK4llvm10AsmPrinter9EmitInt16Ei", "llvm::AsmPrinter::EmitInt16(int) const"}, + {"_ZNK4llvm10AsmPrinter9EmitInt32Ei", "llvm::AsmPrinter::EmitInt32(int) const"}, + {"_ZNK4llvm10AsmPrinter19EmitLabelDifferenceEPKNS_8MCSymbolES3_j", "llvm::AsmPrinter::EmitLabelDifference(llvm::MCSymbol const*, llvm::MCSymbol const*, unsigned int) const"}, + {"_ZNK4llvm10AsmPrinter13GetTempSymbolENS_9StringRefEj", "llvm::AsmPrinter::GetTempSymbol(llvm::StringRef, unsigned int) const"}, + {"_ZNK4llvm10AsmPrinter25EmitLabelOffsetDifferenceEPKNS_8MCSymbolEyS3_j", "llvm::AsmPrinter::EmitLabelOffsetDifference(llvm::MCSymbol const*, unsigned long long, llvm::MCSymbol const*, unsigned int) const"}, + {"_ZNK4llvm10AsmPrinter19EmitLabelPlusOffsetEPKNS_8MCSymbolEyj", "llvm::AsmPrinter::EmitLabelPlusOffset(llvm::MCSymbol const*, unsigned long long, unsigned int) const"}, + {"_Z22EmitGlobalConstantImplPKN4llvm8ConstantEjRNS_10AsmPrinterE", "EmitGlobalConstantImpl(llvm::Constant const*, unsigned int, llvm::AsmPrinter&)"}, + {"_ZN4llvm10AsmPrinter28EmitMachineConstantPoolValueEPNS_24MachineConstantPoolValueE", "llvm::AsmPrinter::EmitMachineConstantPoolValue(llvm::MachineConstantPoolValue*)"}, + {"_ZNK4llvm10AsmPrinter11printOffsetExRNS_11raw_ostreamE", "llvm::AsmPrinter::printOffset(long long, llvm::raw_ostream&) const"}, + {"_ZNK4llvm10AsmPrinter13GetTempSymbolENS_9StringRefE", "llvm::AsmPrinter::GetTempSymbol(llvm::StringRef) const"}, + {"_ZNK4llvm10AsmPrinter21GetBlockAddressSymbolEPKNS_12BlockAddressE", "llvm::AsmPrinter::GetBlockAddressSymbol(llvm::BlockAddress const*) const"}, + {"_ZNK4llvm10AsmPrinter21GetBlockAddressSymbolEPKNS_10BasicBlockE", "llvm::AsmPrinter::GetBlockAddressSymbol(llvm::BasicBlock const*) const"}, + {"_ZNK4llvm10AsmPrinter28GetSymbolWithGlobalValueBaseEPKNS_11GlobalValueENS_9StringRefEb", "llvm::AsmPrinter::GetSymbolWithGlobalValueBase(llvm::GlobalValue const*, llvm::StringRef, bool) const"}, + {"_Z26EmitBasicBlockLoopCommentsRKN4llvm17MachineBasicBlockEPKNS_15MachineLoopInfoERKNS_10AsmPrinterE", "EmitBasicBlockLoopComments(llvm::MachineBasicBlock const&, llvm::MachineLoopInfo const*, llvm::AsmPrinter const&)"}, + {"_ZNK4llvm10AsmPrinter33isBlockOnlyReachableByFallthroughEPKNS_17MachineBasicBlockE", "llvm::AsmPrinter::isBlockOnlyReachableByFallthrough(llvm::MachineBasicBlock const*) const"}, + {"_Z22PrintParentLoopCommentRN4llvm11raw_ostreamEPKNS_11MachineLoopEj", "PrintParentLoopComment(llvm::raw_ostream&, llvm::MachineLoop const*, unsigned int)"}, + {"_Z21PrintChildLoopCommentRN4llvm11raw_ostreamEPKNS_11MachineLoopEj", "PrintChildLoopComment(llvm::raw_ostream&, llvm::MachineLoop const*, unsigned int)"}, + {"_Z13LowerConstantPKN4llvm8ConstantERNS_10AsmPrinterE", "LowerConstant(llvm::Constant const*, llvm::AsmPrinter&)"}, + {"_Z12EmitDebugLocN4llvm8DebugLocEPKNS_15MachineFunctionERNS_11raw_ostreamE", "EmitDebugLoc(llvm::DebugLoc, llvm::MachineFunction const*, llvm::raw_ostream&)"}, + {"_ZN4llvm8DenseMapIPNS_10GCStrategyEPNS_17GCMetadataPrinterENS_12DenseMapInfoIS2_EENS5_IS4_EEE6insertERKSt4pairIS2_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm10AsmPrinter20runOnMachineFunctionERNS_15MachineFunctionE", "llvm::AsmPrinter::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN4llvm10AsmPrinter18EmitStartOfAsmFileERNS_6ModuleE", "llvm::AsmPrinter::EmitStartOfAsmFile(llvm::Module&)"}, + {"_ZN4llvm10AsmPrinter16EmitEndOfAsmFileERNS_6ModuleE", "llvm::AsmPrinter::EmitEndOfAsmFile(llvm::Module&)"}, + {"_ZN4llvm10AsmPrinter15EmitInstructionEPKNS_12MachineInstrE", "llvm::AsmPrinter::EmitInstruction(llvm::MachineInstr const*)"}, + {"_ZN4llvm8DenseMapIPNS_10GCStrategyEPNS_17GCMetadataPrinterENS_12DenseMapInfoIS2_EENS5_IS4_EEE16InsertIntoBucketERKS2_RKS4_PSt4pairIS2_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::GCStrategy* const&, llvm::GCMetadataPrinter* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_10GCStrategyEPNS_17GCMetadataPrinterENS_12DenseMapInfoIS2_EENS5_IS4_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm15SmallVectorImplIjEaSERKS1_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + {"_ZN4llvm14format_object1IyED1Ev", "llvm::format_object1::~format_object1()"}, + {"_ZNK4llvm14format_object1IyE7snprintEPcj", "llvm::format_object1::snprint(char*, unsigned int) const"}, + {"_ZN4llvm14format_object1IyED0Ev", "llvm::format_object1::~format_object1()"}, + {"_ZNK4llvm10AsmPrinter11EmitSLEB128EiPKc", "llvm::AsmPrinter::EmitSLEB128(int, char const*) const"}, + {"_ZNK4llvm10AsmPrinter11EmitULEB128EjPKcj", "llvm::AsmPrinter::EmitULEB128(unsigned int, char const*, unsigned int) const"}, + {"_ZNK4llvm10AsmPrinter11EmitCFAByteEj", "llvm::AsmPrinter::EmitCFAByte(unsigned int) const"}, + {"_ZNK4llvm10AsmPrinter16EmitEncodingByteEjPKc", "llvm::AsmPrinter::EmitEncodingByte(unsigned int, char const*) const"}, + {"_ZNK4llvm10AsmPrinter21GetSizeOfEncodedValueEj", "llvm::AsmPrinter::GetSizeOfEncodedValue(unsigned int) const"}, + {"_ZNK4llvm10AsmPrinter13EmitReferenceEPKNS_8MCSymbolEj", "llvm::AsmPrinter::EmitReference(llvm::MCSymbol const*, unsigned int) const"}, + {"_ZNK4llvm10AsmPrinter13EmitReferenceEPKNS_11GlobalValueEj", "llvm::AsmPrinter::EmitReference(llvm::GlobalValue const*, unsigned int) const"}, + {"_ZNK4llvm10AsmPrinter17EmitSectionOffsetEPKNS_8MCSymbolES3_", "llvm::AsmPrinter::EmitSectionOffset(llvm::MCSymbol const*, llvm::MCSymbol const*) const"}, + {"_ZNK4llvm10AsmPrinter14EmitFrameMovesERKSt6vectorINS_11MachineMoveESaIS2_EEPNS_8MCSymbolEb", "llvm::AsmPrinter::EmitFrameMoves(std::vector> const&, llvm::MCSymbol*, bool) const"}, + {"_ZNK4llvm10AsmPrinter17EmitCFIFrameMovesERKSt6vectorINS_11MachineMoveESaIS2_EE", "llvm::AsmPrinter::EmitCFIFrameMoves(std::vector> const&) const"}, + {"_ZNK4llvm10AsmPrinter13EmitInlineAsmENS_9StringRefEPKNS_6MDNodeE", "llvm::AsmPrinter::EmitInlineAsm(llvm::StringRef, llvm::MDNode const*) const"}, + {"_Z17SrcMgrDiagHandlerRKN4llvm12SMDiagnosticEPv", "SrcMgrDiagHandler(llvm::SMDiagnostic const&, void*)"}, + {"_ZNK4llvm10AsmPrinter13EmitInlineAsmEPKNS_12MachineInstrE", "llvm::AsmPrinter::EmitInlineAsm(llvm::MachineInstr const*) const"}, + {"_ZNK4llvm10AsmPrinter12PrintSpecialEPKNS_12MachineInstrERNS_11raw_ostreamEPKc", "llvm::AsmPrinter::PrintSpecial(llvm::MachineInstr const*, llvm::raw_ostream&, char const*) const"}, + {"_ZN4llvm10AsmPrinter15PrintAsmOperandEPKNS_12MachineInstrEjjPKcRNS_11raw_ostreamE", "llvm::AsmPrinter::PrintAsmOperand(llvm::MachineInstr const*, unsigned int, unsigned int, char const*, llvm::raw_ostream&)"}, + {"_ZN4llvm10AsmPrinter21PrintAsmMemoryOperandEPKNS_12MachineInstrEjjPKcRNS_11raw_ostreamE", "llvm::AsmPrinter::PrintAsmMemoryOperand(llvm::MachineInstr const*, unsigned int, unsigned int, char const*, llvm::raw_ostream&)"}, + {"_ZNK4llvm13DIEAbbrevData7ProfileERNS_16FoldingSetNodeIDE", "llvm::DIEAbbrevData::Profile(llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm9DIEAbbrev7ProfileERNS_16FoldingSetNodeIDE", "llvm::DIEAbbrev::Profile(llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm9DIEAbbrev4EmitEPNS_10AsmPrinterE", "llvm::DIEAbbrev::Emit(llvm::AsmPrinter*) const"}, + {"_ZN4llvm3DIED0Ev", "llvm::DIE::~DIE()"}, + {"_ZN4llvm3DIED1Ev", "llvm::DIE::~DIE()"}, + {"_ZN4llvm3DIED2Ev", "llvm::DIE::~DIE()"}, + {"_ZN4llvm3DIE16addSiblingOffsetERNS_16BumpPtrAllocatorE", "llvm::DIE::addSiblingOffset(llvm::BumpPtrAllocator&)"}, + {"_ZNK4llvm10DIEInteger9EmitValueEPNS_10AsmPrinterEj", "llvm::DIEInteger::EmitValue(llvm::AsmPrinter*, unsigned int) const"}, + {"_ZNK4llvm10DIEInteger6SizeOfEPNS_10AsmPrinterEj", "llvm::DIEInteger::SizeOf(llvm::AsmPrinter*, unsigned int) const"}, + {"_ZNK4llvm9DIEString9EmitValueEPNS_10AsmPrinterEj", "llvm::DIEString::EmitValue(llvm::AsmPrinter*, unsigned int) const"}, + {"_ZNK4llvm8DIELabel9EmitValueEPNS_10AsmPrinterEj", "llvm::DIELabel::EmitValue(llvm::AsmPrinter*, unsigned int) const"}, + {"_ZNK4llvm8DIELabel6SizeOfEPNS_10AsmPrinterEj", "llvm::DIELabel::SizeOf(llvm::AsmPrinter*, unsigned int) const"}, + {"_ZNK4llvm8DIEDelta9EmitValueEPNS_10AsmPrinterEj", "llvm::DIEDelta::EmitValue(llvm::AsmPrinter*, unsigned int) const"}, + {"_ZNK4llvm8DIEDelta6SizeOfEPNS_10AsmPrinterEj", "llvm::DIEDelta::SizeOf(llvm::AsmPrinter*, unsigned int) const"}, + {"_ZNK4llvm8DIEEntry9EmitValueEPNS_10AsmPrinterEj", "llvm::DIEEntry::EmitValue(llvm::AsmPrinter*, unsigned int) const"}, + {"_ZN4llvm8DIEBlock11ComputeSizeEPNS_10AsmPrinterE", "llvm::DIEBlock::ComputeSize(llvm::AsmPrinter*)"}, + {"_ZNK4llvm8DIEBlock9EmitValueEPNS_10AsmPrinterEj", "llvm::DIEBlock::EmitValue(llvm::AsmPrinter*, unsigned int) const"}, + {"_ZNK4llvm8DIEBlock6SizeOfEPNS_10AsmPrinterEj", "llvm::DIEBlock::SizeOf(llvm::AsmPrinter*, unsigned int) const"}, + {"_ZN4llvm15SmallVectorImplIPNS_8DIEValueEE6insertEPS2_RKS2_", "llvm::SmallVectorImpl::insert(llvm::DIEValue**, llvm::DIEValue* const&)"}, + {"_ZN4llvm10DIEIntegerD1Ev", "llvm::DIEInteger::~DIEInteger()"}, + {"_ZN4llvm10DIEIntegerD0Ev", "llvm::DIEInteger::~DIEInteger()"}, + {"_ZN4llvm9DIEStringD1Ev", "llvm::DIEString::~DIEString()"}, + {"_ZN4llvm9DIEStringD0Ev", "llvm::DIEString::~DIEString()"}, + {"_ZN4llvm8DIELabelD1Ev", "llvm::DIELabel::~DIELabel()"}, + {"_ZN4llvm8DIELabelD0Ev", "llvm::DIELabel::~DIELabel()"}, + {"_ZN4llvm8DIEDeltaD1Ev", "llvm::DIEDelta::~DIEDelta()"}, + {"_ZN4llvm8DIEDeltaD0Ev", "llvm::DIEDelta::~DIEDelta()"}, + {"_ZN4llvm8DIEEntryD1Ev", "llvm::DIEEntry::~DIEEntry()"}, + {"_ZN4llvm8DIEEntryD0Ev", "llvm::DIEEntry::~DIEEntry()"}, + {"_ZN4llvm15SmallVectorImplINS_13DIEAbbrevDataEE6insertEPS1_RKS1_", "llvm::SmallVectorImpl::insert(llvm::DIEAbbrevData*, llvm::DIEAbbrevData const&)"}, + {"_ZN4llvm17DwarfCFIExceptionC1EPNS_10AsmPrinterE", "llvm::DwarfCFIException::DwarfCFIException(llvm::AsmPrinter*)"}, + {"_ZN4llvm17DwarfCFIExceptionC2EPNS_10AsmPrinterE", "llvm::DwarfCFIException::DwarfCFIException(llvm::AsmPrinter*)"}, + {"_ZN4llvm17DwarfCFIExceptionD0Ev", "llvm::DwarfCFIException::~DwarfCFIException()"}, + {"_ZN4llvm17DwarfCFIExceptionD1Ev", "llvm::DwarfCFIException::~DwarfCFIException()"}, + {"_ZN4llvm17DwarfCFIExceptionD2Ev", "llvm::DwarfCFIException::~DwarfCFIException()"}, + {"_ZN4llvm17DwarfCFIException9EndModuleEv", "llvm::DwarfCFIException::EndModule()"}, + {"_ZN4llvm17DwarfCFIException13BeginFunctionEPKNS_15MachineFunctionE", "llvm::DwarfCFIException::BeginFunction(llvm::MachineFunction const*)"}, + {"_ZN4llvm17DwarfCFIException11EndFunctionEv", "llvm::DwarfCFIException::EndFunction()"}, + {"_ZN4llvm8DbgScopeD0Ev", "llvm::DbgScope::~DbgScope()"}, + {"_ZN4llvm8DbgScopeD1Ev", "llvm::DbgScope::~DbgScope()"}, + {"_ZN4llvm8DbgScopeD2Ev", "llvm::DbgScope::~DbgScope()"}, + {"_ZN4llvm10DwarfDebugC1EPNS_10AsmPrinterEPNS_6ModuleE", "llvm::DwarfDebug::DwarfDebug(llvm::AsmPrinter*, llvm::Module*)"}, + {"_ZN4llvm10DwarfDebugC2EPNS_10AsmPrinterEPNS_6ModuleE", "llvm::DwarfDebug::DwarfDebug(llvm::AsmPrinter*, llvm::Module*)"}, + {"_ZN4llvm10DwarfDebug11beginModuleEPNS_6ModuleE", "llvm::DwarfDebug::beginModule(llvm::Module*)"}, + {"_ZN4llvm10DwarfDebugD1Ev", "llvm::DwarfDebug::~DwarfDebug()"}, + {"_ZN4llvm10DwarfDebugD2Ev", "llvm::DwarfDebug::~DwarfDebug()"}, + {"_ZN4llvm10DwarfDebug18getStringPoolEntryENS_9StringRefE", "llvm::DwarfDebug::getStringPoolEntry(llvm::StringRef)"}, + {"_ZN4llvm10DwarfDebug18assignAbbrevNumberERNS_9DIEAbbrevE", "llvm::DwarfDebug::assignAbbrevNumber(llvm::DIEAbbrev&)"}, + {"_ZN4llvm10DwarfDebug14createDIEEntryEPNS_3DIEE", "llvm::DwarfDebug::createDIEEntry(llvm::DIE*)"}, + {"_ZN4llvm10DwarfDebug7addUIntEPNS_3DIEEjjy", "llvm::DwarfDebug::addUInt(llvm::DIE*, unsigned int, unsigned int, unsigned long long)"}, + {"_ZN4llvm10DwarfDebug7addSIntEPNS_3DIEEjjx", "llvm::DwarfDebug::addSInt(llvm::DIE*, unsigned int, unsigned int, long long)"}, + {"_ZN4llvm10DwarfDebug9addStringEPNS_3DIEEjjNS_9StringRefE", "llvm::DwarfDebug::addString(llvm::DIE*, unsigned int, unsigned int, llvm::StringRef)"}, + {"_ZN4llvm10DwarfDebug8addLabelEPNS_3DIEEjjPKNS_8MCSymbolE", "llvm::DwarfDebug::addLabel(llvm::DIE*, unsigned int, unsigned int, llvm::MCSymbol const*)"}, + {"_ZN4llvm10DwarfDebug8addDeltaEPNS_3DIEEjjPKNS_8MCSymbolES5_", "llvm::DwarfDebug::addDelta(llvm::DIE*, unsigned int, unsigned int, llvm::MCSymbol const*, llvm::MCSymbol const*)"}, + {"_ZN4llvm10DwarfDebug11addDIEEntryEPNS_3DIEEjjS2_", "llvm::DwarfDebug::addDIEEntry(llvm::DIE*, unsigned int, unsigned int, llvm::DIE*)"}, + {"_ZN4llvm10DwarfDebug8addBlockEPNS_3DIEEjjPNS_8DIEBlockE", "llvm::DwarfDebug::addBlock(llvm::DIE*, unsigned int, unsigned int, llvm::DIEBlock*)"}, + {"_ZN4llvm10DwarfDebug13addSourceLineEPNS_3DIEENS_10DIVariableE", "llvm::DwarfDebug::addSourceLine(llvm::DIE*, llvm::DIVariable)"}, + {"_ZN4llvm10DwarfDebug19GetOrCreateSourceIDENS_9StringRefE", "llvm::DwarfDebug::GetOrCreateSourceID(llvm::StringRef)"}, + {"_ZN4llvm10DwarfDebug13addSourceLineEPNS_3DIEENS_16DIGlobalVariableE", "llvm::DwarfDebug::addSourceLine(llvm::DIE*, llvm::DIGlobalVariable)"}, + {"_ZN4llvm10DwarfDebug13addSourceLineEPNS_3DIEENS_12DISubprogramE", "llvm::DwarfDebug::addSourceLine(llvm::DIE*, llvm::DISubprogram)"}, + {"_ZN4llvm10DwarfDebug13addSourceLineEPNS_3DIEENS_6DITypeE", "llvm::DwarfDebug::addSourceLine(llvm::DIE*, llvm::DIType)"}, + {"_ZN4llvm10DwarfDebug13addSourceLineEPNS_3DIEENS_11DINameSpaceE", "llvm::DwarfDebug::addSourceLine(llvm::DIE*, llvm::DINameSpace)"}, + {"_ZN4llvm10DwarfDebug18addVariableAddressERPNS_11DbgVariableEPNS_3DIEEx", "llvm::DwarfDebug::addVariableAddress(llvm::DbgVariable*&, llvm::DIE*, long long)"}, + {"_ZN4llvm10DwarfDebug17addComplexAddressERPNS_11DbgVariableEPNS_3DIEEjRKNS_15MachineLocationE", "llvm::DwarfDebug::addComplexAddress(llvm::DbgVariable*&, llvm::DIE*, unsigned int, llvm::MachineLocation const&)"}, + {"_ZN4llvm10DwarfDebug20addBlockByrefAddressERPNS_11DbgVariableEPNS_3DIEEjRKNS_15MachineLocationE", "llvm::DwarfDebug::addBlockByrefAddress(llvm::DbgVariable*&, llvm::DIE*, unsigned int, llvm::MachineLocation const&)"}, + {"_ZN4llvm10DwarfDebug10addAddressEPNS_3DIEEjRKNS_15MachineLocationE", "llvm::DwarfDebug::addAddress(llvm::DIE*, unsigned int, llvm::MachineLocation const&)"}, + {"_ZN4llvm10DwarfDebug18addRegisterAddressEPNS_3DIEERKNS_14MachineOperandE", "llvm::DwarfDebug::addRegisterAddress(llvm::DIE*, llvm::MachineOperand const&)"}, + {"_ZN4llvm10DwarfDebug16addConstantValueEPNS_3DIEERKNS_14MachineOperandE", "llvm::DwarfDebug::addConstantValue(llvm::DIE*, llvm::MachineOperand const&)"}, + {"_ZN4llvm10DwarfDebug18addConstantFPValueEPNS_3DIEERKNS_14MachineOperandE", "llvm::DwarfDebug::addConstantFPValue(llvm::DIE*, llvm::MachineOperand const&)"}, + {"_ZN4llvm10DwarfDebug16addConstantValueEPNS_3DIEEPNS_11ConstantIntEb", "llvm::DwarfDebug::addConstantValue(llvm::DIE*, llvm::ConstantInt*, bool)"}, + {"_ZN4llvm10DwarfDebug17addToContextOwnerEPNS_3DIEENS_12DIDescriptorE", "llvm::DwarfDebug::addToContextOwner(llvm::DIE*, llvm::DIDescriptor)"}, + {"_ZN4llvm10DwarfDebug18getOrCreateTypeDIEENS_6DITypeE", "llvm::DwarfDebug::getOrCreateTypeDIE(llvm::DIType)"}, + {"_ZN4llvm10DwarfDebug20getOrCreateNameSpaceENS_11DINameSpaceE", "llvm::DwarfDebug::getOrCreateNameSpace(llvm::DINameSpace)"}, + {"_ZN4llvm10DwarfDebug19createSubprogramDIEENS_12DISubprogramE", "llvm::DwarfDebug::createSubprogramDIE(llvm::DISubprogram)"}, + {"_ZNK4llvm10DwarfDebug14getCompileUnitEPKNS_6MDNodeE", "llvm::DwarfDebug::getCompileUnit(llvm::MDNode const*) const"}, + {"_ZN4llvm10DwarfDebug16constructTypeDIEERNS_3DIEENS_11DIBasicTypeE", "llvm::DwarfDebug::constructTypeDIE(llvm::DIE&, llvm::DIBasicType)"}, + {"_ZN4llvm10DwarfDebug16constructTypeDIEERNS_3DIEENS_15DICompositeTypeE", "llvm::DwarfDebug::constructTypeDIE(llvm::DIE&, llvm::DICompositeType)"}, + {"_ZN4llvm10DwarfDebug16constructTypeDIEERNS_3DIEENS_13DIDerivedTypeE", "llvm::DwarfDebug::constructTypeDIE(llvm::DIE&, llvm::DIDerivedType)"}, + {"_ZN4llvm10DwarfDebug7addTypeEPNS_3DIEENS_6DITypeE", "llvm::DwarfDebug::addType(llvm::DIE*, llvm::DIType)"}, + {"_ZN4llvm10DwarfDebug21constructArrayTypeDIEERNS_3DIEEPNS_15DICompositeTypeE", "llvm::DwarfDebug::constructArrayTypeDIE(llvm::DIE&, llvm::DICompositeType*)"}, + {"_ZN4llvm10DwarfDebug20constructEnumTypeDIEENS_12DIEnumeratorE", "llvm::DwarfDebug::constructEnumTypeDIE(llvm::DIEnumerator)"}, + {"_ZN4llvm10DwarfDebug15createMemberDIEENS_13DIDerivedTypeE", "llvm::DwarfDebug::createMemberDIE(llvm::DIDerivedType)"}, + {"_ZN4llvm10DwarfDebug35getOrCreateTemplateTypeParameterDIEENS_23DITemplateTypeParameterE", "llvm::DwarfDebug::getOrCreateTemplateTypeParameterDIE(llvm::DITemplateTypeParameter)"}, + {"_ZN4llvm10DwarfDebug36getOrCreateTemplateValueParameterDIEENS_24DITemplateValueParameterE", "llvm::DwarfDebug::getOrCreateTemplateValueParameterDIE(llvm::DITemplateValueParameter)"}, + {"_ZN4llvm10DwarfDebug20constructSubrangeDIEERNS_3DIEENS_10DISubrangeEPS1_", "llvm::DwarfDebug::constructSubrangeDIE(llvm::DIE&, llvm::DISubrange, llvm::DIE*)"}, + {"_ZN4llvm10DwarfDebug24getOrCreateAbstractScopeEPKNS_6MDNodeE", "llvm::DwarfDebug::getOrCreateAbstractScope(llvm::MDNode const*)"}, + {"_ZN4llvm10DwarfDebug24updateSubprogramScopeDIEEPKNS_6MDNodeE", "llvm::DwarfDebug::updateSubprogramScopeDIE(llvm::MDNode const*)"}, + {"_Z19isSubprogramContextPKN4llvm6MDNodeE", "isSubprogramContext(llvm::MDNode const*)"}, + {"_ZN4llvm10DwarfDebug24constructLexicalScopeDIEEPNS_8DbgScopeE", "llvm::DwarfDebug::constructLexicalScopeDIE(llvm::DbgScope*)"}, + {"_ZN4llvm10DwarfDebug18getLabelBeforeInsnEPKNS_12MachineInstrE", "llvm::DwarfDebug::getLabelBeforeInsn(llvm::MachineInstr const*)"}, + {"_ZN4llvm10DwarfDebug17getLabelAfterInsnEPKNS_12MachineInstrE", "llvm::DwarfDebug::getLabelAfterInsn(llvm::MachineInstr const*)"}, + {"_ZN4llvm10DwarfDebug24constructInlinedScopeDIEEPNS_8DbgScopeE", "llvm::DwarfDebug::constructInlinedScopeDIE(llvm::DbgScope*)"}, + {"_ZN4llvm10DwarfDebug20constructVariableDIEEPNS_11DbgVariableEPNS_8DbgScopeE", "llvm::DwarfDebug::constructVariableDIE(llvm::DbgVariable*, llvm::DbgScope*)"}, + {"_ZN4llvm10DwarfDebug22findVariableFrameIndexEPKNS_11DbgVariableEPi", "llvm::DwarfDebug::findVariableFrameIndex(llvm::DbgVariable const*, int*)"}, + {"_ZN4llvm10DwarfDebug11addPubTypesENS_12DISubprogramE", "llvm::DwarfDebug::addPubTypes(llvm::DISubprogram)"}, + {"_ZN4llvm10DwarfDebug17constructScopeDIEEPNS_8DbgScopeE", "llvm::DwarfDebug::constructScopeDIE(llvm::DbgScope*)"}, + {"_ZN4llvm10DwarfDebug20constructCompileUnitEPKNS_6MDNodeE", "llvm::DwarfDebug::constructCompileUnit(llvm::MDNode const*)"}, + {"_ZN4llvm10DwarfDebug26constructGlobalVariableDIEEPKNS_6MDNodeE", "llvm::DwarfDebug::constructGlobalVariableDIE(llvm::MDNode const*)"}, + {"_Z16isUnsignedDITypeN4llvm6DITypeE", "isUnsignedDIType(llvm::DIType)"}, + {"_ZN4llvm10DwarfDebug22constructSubprogramDIEEPKNS_6MDNodeE", "llvm::DwarfDebug::constructSubprogramDIE(llvm::MDNode const*)"}, + {"_ZN4llvm10DwarfDebug17EmitSectionLabelsEv", "llvm::DwarfDebug::EmitSectionLabels()"}, + {"_ZN4llvm10DwarfDebug9endModuleEv", "llvm::DwarfDebug::endModule()"}, + {"_ZN4llvm10DwarfDebug20emitCommonDebugFrameEv", "llvm::DwarfDebug::emitCommonDebugFrame()"}, + {"_ZN4llvm10DwarfDebug22emitFunctionDebugFrameERKNS0_22FunctionDebugFrameInfoE", "llvm::DwarfDebug::emitFunctionDebugFrame(llvm::DwarfDebug::FunctionDebugFrameInfo const&)"}, + {"_ZN4llvm10DwarfDebug21computeSizeAndOffsetsEv", "llvm::DwarfDebug::computeSizeAndOffsets()"}, + {"_ZN4llvm10DwarfDebug13emitDebugInfoEv", "llvm::DwarfDebug::emitDebugInfo()"}, + {"_ZNK4llvm10DwarfDebug17emitAbbreviationsEv", "llvm::DwarfDebug::emitAbbreviations() const"}, + {"_ZN4llvm10DwarfDebug17emitDebugPubNamesEv", "llvm::DwarfDebug::emitDebugPubNames()"}, + {"_ZN4llvm10DwarfDebug17emitDebugPubTypesEv", "llvm::DwarfDebug::emitDebugPubTypes()"}, + {"_ZN4llvm10DwarfDebug12emitDebugLocEv", "llvm::DwarfDebug::emitDebugLoc()"}, + {"_ZN4llvm10DwarfDebug16EmitDebugARangesEv", "llvm::DwarfDebug::EmitDebugARanges()"}, + {"_ZN4llvm10DwarfDebug15emitDebugRangesEv", "llvm::DwarfDebug::emitDebugRanges()"}, + {"_ZN4llvm10DwarfDebug16emitDebugMacInfoEv", "llvm::DwarfDebug::emitDebugMacInfo()"}, + {"_ZN4llvm10DwarfDebug19emitDebugInlineInfoEv", "llvm::DwarfDebug::emitDebugInlineInfo()"}, + {"_ZN4llvm10DwarfDebug12emitDebugStrEv", "llvm::DwarfDebug::emitDebugStr()"}, + {"_ZN4llvm10DwarfDebug20findAbstractVariableERNS_10DIVariableENS_8DebugLocE", "llvm::DwarfDebug::findAbstractVariable(llvm::DIVariable&, llvm::DebugLoc)"}, + + // {"_ZN4llvm10DwarfDebug31collectVariableInfoFromMMITableEPKNS_15MachineFunctionERNS_11SmallPtrSetIPKNS_6MDNodeELj16EEE", + // "llvm::DwarfDebug::collectVariableInfoFromMMITable(llvm::MachineFunction const*, llvm::SmallPtrSet&)"}, + // "llvm::DwarfDebug::collectVariableInfoFromMMITable(llvm::MachineFunction const*, llvm::SmallPtrSet&)" was returned + + {"_ZN4llvm10DwarfDebug24recordVariableFrameIndexEPKNS_11DbgVariableEi", "llvm::DwarfDebug::recordVariableFrameIndex(llvm::DbgVariable const*, int)"}, + + // {"_ZN4llvm10DwarfDebug19collectVariableInfoEPKNS_15MachineFunctionERNS_11SmallPtrSetIPKNS_6MDNodeELj16EEE", + // "llvm::DwarfDebug::collectVariableInfo(llvm::MachineFunction const*, llvm::SmallPtrSet&)"}, + // "llvm::DwarfDebug::collectVariableInfo(llvm::MachineFunction const*, llvm::SmallPtrSet&)" was returned + + {"_ZN4llvm10DwarfDebug12findDbgScopeEPKNS_12MachineInstrE", "llvm::DwarfDebug::findDbgScope(llvm::MachineInstr const*)"}, + {"_ZN4llvm10DwarfDebug16beginInstructionEPKNS_12MachineInstrE", "llvm::DwarfDebug::beginInstruction(llvm::MachineInstr const*)"}, + {"_ZN4llvm10DwarfDebug16recordSourceLineEjjPKNS_6MDNodeE", "llvm::DwarfDebug::recordSourceLine(unsigned int, unsigned int, llvm::MDNode const*)"}, + {"_ZN4llvm10DwarfDebug14endInstructionEPKNS_12MachineInstrE", "llvm::DwarfDebug::endInstruction(llvm::MachineInstr const*)"}, + {"_ZN4llvm10DwarfDebug19getOrCreateDbgScopeEPKNS_6MDNodeES3_", "llvm::DwarfDebug::getOrCreateDbgScope(llvm::MDNode const*, llvm::MDNode const*)"}, + {"_ZN4llvm10DwarfDebug23extractScopeInformationEv", "llvm::DwarfDebug::extractScopeInformation()"}, + {"_ZN4llvm10DwarfDebug20identifyScopeMarkersEv", "llvm::DwarfDebug::identifyScopeMarkers()"}, + {"_ZN4llvm10DwarfDebug13beginFunctionEPKNS_15MachineFunctionE", "llvm::DwarfDebug::beginFunction(llvm::MachineFunction const*)"}, + {"_ZN4llvm10DwarfDebug11endFunctionEPKNS_15MachineFunctionE", "llvm::DwarfDebug::endFunction(llvm::MachineFunction const*)"}, + {"_ZN4llvm10DwarfDebug20computeSizeAndOffsetEPNS_3DIEEjb", "llvm::DwarfDebug::computeSizeAndOffset(llvm::DIE*, unsigned int, bool)"}, + {"_ZN4llvm10DwarfDebug7emitDIEEPNS_3DIEE", "llvm::DwarfDebug::emitDIE(llvm::DIE*)"}, + {"_ZN4llvm10DwarfDebug19emitEndOfLineMatrixEj", "llvm::DwarfDebug::emitEndOfLineMatrix(unsigned int)"}, + {"_ZN4llvm25array_pod_sort_comparatorISt4pairIjPNS_14StringMapEntryIS1_IPNS_8MCSymbolEjEEEEEEiPKvSA_", "int llvm::array_pod_sort_comparator>*>>(void const*, void const*)"}, + {"_ZN4llvm10FoldingSetINS_9DIEAbbrevEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm11DbgVariable7getTypeEv", "llvm::DbgVariable::getType() const"}, + {"_ZN4llvm8DenseMapIPNS_3DIEEPKNS_6MDNodeENS_12DenseMapInfoIS2_EENS6_IS5_EEE6insertERKSt4pairIS2_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPKNS_6MDNodeEPNS_3DIEENS_12DenseMapInfoIS3_EENS6_IS5_EEE6insertERKSt4pairIS3_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPKNS_6MDNodeEPNS_11CompileUnitENS_12DenseMapInfoIS3_EENS6_IS5_EEE6insertERKSt4pairIS3_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm12UniqueVectorIPKNS_9MCSectionEE6insertERKS3_", "llvm::UniqueVector::insert(llvm::MCSection const* const&)"}, + + // {"_ZN4llvm22DeleteContainerSecondsINS_8DenseMapIPKNS_6MDNodeEPNS_8DbgScopeENS_12DenseMapInfoIS4_EENS7_IS6_EEEEEEvRT_", + // "void llvm::DeleteContainerSeconds, llvm::DenseMapInfo>>(llvm::DenseMap, llvm::DenseMapInfo>&)"}, + // "void llvm::DeleteContainerSeconds, llvm::DenseMapInfo>>(llvm::MDNode const*&)" was returned + + {"_ZN4llvm8DenseMapIPKNS_6MDNodeEPNS_8DbgScopeENS_12DenseMapInfoIS3_EENS6_IS5_EEE6insertERKSt4pairIS3_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPKNS_11DbgVariableEiNS_12DenseMapInfoIS3_EENS4_IiEEE16InsertIntoBucketERKS3_RKiPSt4pairIS3_iE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::DbgVariable const* const&, int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_11DbgVariableEiNS_12DenseMapInfoIS3_EENS4_IiEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKNS_12MachineInstrEPNS_8MCSymbolENS_12DenseMapInfoIS3_EENS6_IS5_EEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm8DenseMapIPKNS_6MDNodeEPNS_11DbgVariableENS_12DenseMapInfoIS3_EENS6_IS5_EEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm8DenseMapIPKNS_6MDNodeEPNS_8DbgScopeENS_12DenseMapInfoIS3_EENS6_IS5_EEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm8DenseMapIPKNS_11DbgVariableEPKNS_12MachineInstrENS_12DenseMapInfoIS3_EENS7_IS6_EEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm8DenseMapIPKNS_11DbgVariableES3_NS_12DenseMapInfoIS3_EES5_E16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm8DenseMapIPKNS_11DbgVariableEiNS_12DenseMapInfoIS3_EENS4_IiEEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZNSt6vectorIN4llvm10DwarfDebug22FunctionDebugFrameInfoESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::DwarfDebug::FunctionDebugFrameInfo const&)"}, + {"_ZNSt6vectorIN4llvm11MachineMoveESaIS1_EEaSERKS3_", "std::vector>::operator=(std::vector> const&)"}, + {"_ZN4llvm8DenseMapIPKNS_12MachineInstrEPNS_8DbgScopeENS_12DenseMapInfoIS3_EENS6_IS5_EEE16InsertIntoBucketERKS3_RKS5_PSt4pairIS3_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::MachineInstr const* const&, llvm::DbgScope* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_12MachineInstrEPNS_8DbgScopeENS_12DenseMapInfoIS3_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKNS_6MDNodeEPNS_8DbgScopeENS_12DenseMapInfoIS3_EENS6_IS5_EEE16InsertIntoBucketERKS3_RKS5_PSt4pairIS3_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::MDNode const* const&, llvm::DbgScope* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_6MDNodeEPNS_8DbgScopeENS_12DenseMapInfoIS3_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKNS_12MachineInstrEPNS_8MCSymbolENS_12DenseMapInfoIS3_EENS6_IS5_EEE16InsertIntoBucketERKS3_RKS5_PSt4pairIS3_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::MachineInstr const* const&, llvm::MCSymbol* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_12MachineInstrEPNS_8MCSymbolENS_12DenseMapInfoIS3_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm23SmallVectorTemplateBaseINS_16DotDebugLocEntryELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN4llvm8DenseMapIPKNS_11DbgVariableEPKNS_12MachineInstrENS_12DenseMapInfoIS3_EENS7_IS6_EEE16InsertIntoBucketERKS3_RKS6_PSt4pairIS3_S6_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::DbgVariable const* const&, llvm::MachineInstr const* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_11DbgVariableEPKNS_12MachineInstrENS_12DenseMapInfoIS3_EENS7_IS6_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKNS_11DbgVariableES3_NS_12DenseMapInfoIS3_EES5_E16InsertIntoBucketERKS3_S8_PSt4pairIS3_S3_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::DbgVariable const* const&, llvm::DbgVariable const* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_11DbgVariableES3_NS_12DenseMapInfoIS3_EES5_E4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKNS_6MDNodeEPNS_11DbgVariableENS_12DenseMapInfoIS3_EENS6_IS5_EEE16InsertIntoBucketERKS3_RKS5_PSt4pairIS3_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::MDNode const* const&, llvm::DbgVariable* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_6MDNodeEPNS_11DbgVariableENS_12DenseMapInfoIS3_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNSt8_Rb_treeIPKN4llvm9MCSectionESt4pairIKS3_jESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS6_ERKS6_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm9MCSectionESt4pairIKS3_jESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE16_M_insert_uniqueERKS6_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPKNS_6MDNodeEPNS_11CompileUnitENS_12DenseMapInfoIS3_EENS6_IS5_EEE16InsertIntoBucketERKS3_RKS5_PSt4pairIS3_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::MDNode const* const&, llvm::CompileUnit* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_6MDNodeEPNS_11CompileUnitENS_12DenseMapInfoIS3_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + + // {"_ZN4llvm8DenseMapIPKNS_6MDNodeENS_11SmallVectorISt4pairIPKNS_8MCSymbolEPNS_3DIEEELj4EEENS_12DenseMapInfoIS3_EENSD_ISC_EEE16FindAndConstructERKS3_", + // "llvm::DenseMap, 4u>, llvm::DenseMapInfo, llvm::DenseMapInfo, 4u>>>::FindAndConstruct(llvm::MDNode const* const&)"}, + // "llvm::DenseMap, 4>, llvm::DenseMapInfo, llvm::DenseMapInfo, 4>>>::FindAndConstruct(llvm::MDNode const* const&)" was returned + + + // {"_ZN4llvm8DenseMapIPKNS_6MDNodeENS_11SmallVectorISt4pairIPKNS_8MCSymbolEPNS_3DIEEELj4EEENS_12DenseMapInfoIS3_EENSD_ISC_EEE16InsertIntoBucketERKS3_RKSC_PS5_IS3_SC_E", + // "llvm::DenseMap, 4u>, llvm::DenseMapInfo, llvm::DenseMapInfo, 4u>>>::InsertIntoBucket(llvm::MDNode const* const&, llvm::SmallVector, 4u> const&, std::pair, 4u>>*)"}, + // "llvm::DenseMap, 4>, llvm::DenseMapInfo, llvm::DenseMapInfo, 4>>>::InsertIntoBucket(llvm::MDNode const* const&, llvm::SmallVector, 4> const&, std::pair*, 4>>)" was returned + + + // {"_ZN4llvm8DenseMapIPKNS_6MDNodeENS_11SmallVectorISt4pairIPKNS_8MCSymbolEPNS_3DIEEELj4EEENS_12DenseMapInfoIS3_EENSD_ISC_EEE4growEj", + // "llvm::DenseMap, 4u>, llvm::DenseMapInfo, llvm::DenseMapInfo, 4u>>>::grow(unsigned int)"}, + // "llvm::DenseMap, 4>, llvm::DenseMapInfo, llvm::DenseMapInfo, 4>>>::grow(unsigned int)" was returned + + {"_ZN4llvm15SmallVectorImplISt4pairIPKNS_8MCSymbolEPNS_3DIEEEEaSERKS8_", "llvm::SmallVectorImpl>::operator=(llvm::SmallVectorImpl> const&)"}, + {"_ZN4llvm8DenseMapIPNS_3DIEEPKNS_6MDNodeENS_12DenseMapInfoIS2_EENS6_IS5_EEE16InsertIntoBucketERKS2_RKS5_PSt4pairIS2_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::DIE* const&, llvm::MDNode const* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_3DIEEPKNS_6MDNodeENS_12DenseMapInfoIS2_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNSt6vectorIPN4llvm8DIEBlockESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::DIEBlock* const&)"}, + {"_ZNSt6vectorIPN4llvm9DIEAbbrevESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::DIEAbbrev* const&)"}, + + // {"_ZN4llvm9StringMapISt4pairIPNS_8MCSymbolEjENS_15MallocAllocatorEE16GetOrCreateValueIS4_EERNS_14StringMapEntryIS4_EENS_9StringRefET_", + // "llvm::StringMapEntry>& llvm::StringMap, llvm::MallocAllocator>::GetOrCreateValue>(llvm::StringRef, std::pair)"}, + // "llvm::StringMapEntry>& llvm::StringMap, llvm::MallocAllocator>::GetOrCreateValue>(llvm::StringRef, llvm::MCSymbol*)" was returned + + {"_ZN4llvm10FoldingSetINS_9DIEAbbrevEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetINS_9DIEAbbrevEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetINS_9DIEAbbrevEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS6_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetINS_9DIEAbbrevEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm8DenseMapIPKNS_6MDNodeEPNS_3DIEENS_12DenseMapInfoIS3_EENS6_IS5_EEE16InsertIntoBucketERKS3_RKS5_PSt4pairIS3_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::MDNode const* const&, llvm::DIE* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_6MDNodeEPNS_3DIEENS_12DenseMapInfoIS3_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm11CompileUnitD2Ev", "llvm::CompileUnit::~CompileUnit()"}, + {"_ZN4llvm9StringMapIPNS_3DIEENS_15MallocAllocatorEE16GetOrCreateValueIS2_EERNS_14StringMapEntryIS2_EENS_9StringRefET_", "llvm::StringMapEntry& llvm::StringMap::GetOrCreateValue(llvm::StringRef, llvm::DIE*)"}, + {"_ZN4llvm11CompileUnitC2EjPNS_3DIEE", "llvm::CompileUnit::CompileUnit(unsigned int, llvm::DIE*)"}, + {"_ZN4llvm8DenseMapIPKNS_6MDNodeEPNS_8DIEEntryENS_12DenseMapInfoIS3_EENS6_IS5_EEE6insertERKSt4pairIS3_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPKNS_6MDNodeEPNS_8DIEEntryENS_12DenseMapInfoIS3_EENS6_IS5_EEE16InsertIntoBucketERKS3_RKS5_PSt4pairIS3_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::MDNode const* const&, llvm::DIEEntry* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_6MDNodeEPNS_8DIEEntryENS_12DenseMapInfoIS3_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm9DIEAbbrevD1Ev", "llvm::DIEAbbrev::~DIEAbbrev()"}, + {"_ZN4llvm9DIEAbbrevD0Ev", "llvm::DIEAbbrev::~DIEAbbrev()"}, + {"_ZNSt6vectorIPN4llvm3DIEESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::DIE* const&)"}, + {"_ZN4llvm8DIEBlockD1Ev", "llvm::DIEBlock::~DIEBlock()"}, + {"_ZN4llvm8DIEBlockD0Ev", "llvm::DIEBlock::~DIEBlock()"}, + + // {"_ZThn16_N4llvm8DIEBlockD1Ev", + // "non-virtual thunk to llvm::DIEBlock::~DIEBlock()"}, + // "virtual function non-virtual override offset : -16 llvm::DIEBlock::~DIEBlock()" was returned + + + // {"_ZThn16_N4llvm8DIEBlockD0Ev", + // "non-virtual thunk to llvm::DIEBlock::~DIEBlock()"}, + // "virtual function non-virtual override offset : -16 llvm::DIEBlock::~DIEBlock()" was returned + + {"_ZN4llvm8DIEValueD1Ev", "llvm::DIEValue::~DIEValue()"}, + {"_ZN4llvm8DIEValueD0Ev", "llvm::DIEValue::~DIEValue()"}, + {"_ZNK4llvm9DIEString6SizeOfEPNS_10AsmPrinterEj", "llvm::DIEString::SizeOf(llvm::AsmPrinter*, unsigned int) const"}, + {"_ZN4llvm23SmallVectorTemplateBaseINS_13DIEAbbrevDataELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZNK4llvm8DIEEntry6SizeOfEPNS_10AsmPrinterEj", "llvm::DIEEntry::SizeOf(llvm::AsmPrinter*, unsigned int) const"}, + {"_ZNSt8_Rb_treeIPKN4llvm9MCSectionESt4pairIKS3_jESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE8_M_eraseEPSt13_Rb_tree_nodeIS6_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZN4llvm14DwarfExceptionC1EPNS_10AsmPrinterE", "llvm::DwarfException::DwarfException(llvm::AsmPrinter*)"}, + {"_ZN4llvm14DwarfExceptionC2EPNS_10AsmPrinterE", "llvm::DwarfException::DwarfException(llvm::AsmPrinter*)"}, + {"_ZN4llvm14DwarfExceptionD0Ev", "llvm::DwarfException::~DwarfException()"}, + {"_ZN4llvm14DwarfExceptionD1Ev", "llvm::DwarfException::~DwarfException()"}, + {"_ZN4llvm14DwarfExceptionD2Ev", "llvm::DwarfException::~DwarfException()"}, + {"_ZN4llvm14DwarfException13SharedTypeIdsEPKNS_14LandingPadInfoES3_", "llvm::DwarfException::SharedTypeIds(llvm::LandingPadInfo const*, llvm::LandingPadInfo const*)"}, + {"_ZN4llvm14DwarfException5PadLTEPKNS_14LandingPadInfoES3_", "llvm::DwarfException::PadLT(llvm::LandingPadInfo const*, llvm::LandingPadInfo const*)"}, + {"_ZN4llvm14DwarfException19ComputeActionsTableERKNS_15SmallVectorImplIPKNS_14LandingPadInfoEEERNS1_INS0_11ActionEntryEEERNS1_IjEE", "llvm::DwarfException::ComputeActionsTable(llvm::SmallVectorImpl const&, llvm::SmallVectorImpl&, llvm::SmallVectorImpl&)"}, + {"_ZN4llvm14DwarfException22CallToNoUnwindFunctionEPKNS_12MachineInstrE", "llvm::DwarfException::CallToNoUnwindFunction(llvm::MachineInstr const*)"}, + {"_ZN4llvm14DwarfException20ComputeCallSiteTableERNS_15SmallVectorImplINS0_13CallSiteEntryEEERKNS_8DenseMapIPNS_8MCSymbolENS0_8PadRangeENS_12DenseMapInfoIS7_EENS9_IS8_EEEERKNS1_IPKNS_14LandingPadInfoEEERKNS1_IjEE", "llvm::DwarfException::ComputeCallSiteTable(llvm::SmallVectorImpl&, llvm::DenseMap, llvm::DenseMapInfo> const&, llvm::SmallVectorImpl const&, llvm::SmallVectorImpl const&)"}, + {"_ZN4llvm14DwarfException18EmitExceptionTableEv", "llvm::DwarfException::EmitExceptionTable()"}, + {"_ZN4llvm14DwarfException9EndModuleEv", "llvm::DwarfException::EndModule()"}, + {"_ZN4llvm14DwarfException13BeginFunctionEPKNS_15MachineFunctionE", "llvm::DwarfException::BeginFunction(llvm::MachineFunction const*)"}, + {"_ZN4llvm14DwarfException11EndFunctionEv", "llvm::DwarfException::EndFunction()"}, + {"_ZN4llvm15SmallVectorImplINS_14DwarfException13CallSiteEntryEE6resizeEj", "llvm::SmallVectorImpl::resize(unsigned int)"}, + {"_ZN4llvm8DenseMapIPNS_8MCSymbolENS_14DwarfException8PadRangeENS_12DenseMapInfoIS2_EENS5_IS4_EEE16InsertIntoBucketERKS2_RKS4_PSt4pairIS2_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::MCSymbol* const&, llvm::DwarfException::PadRange const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_8MCSymbolENS_14DwarfException8PadRangeENS_12DenseMapInfoIS2_EENS5_IS4_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + + // {"_ZSt16__introsort_loopIPPKN4llvm14LandingPadInfoElPFbS3_S3_EEvT_S7_T0_T1_", + // "void std::__introsort_loop(llvm::LandingPadInfo const**, llvm::LandingPadInfo const**, long, bool (*)(llvm::LandingPadInfo const*, llvm::LandingPadInfo const*))"}, + // got error + + + // {"_ZSt22__final_insertion_sortIPPKN4llvm14LandingPadInfoEPFbS3_S3_EEvT_S7_T0_", + // "void std::__final_insertion_sort(llvm::LandingPadInfo const**, llvm::LandingPadInfo const**, bool (*)(llvm::LandingPadInfo const*, llvm::LandingPadInfo const*))"}, + // got error + + + // {"_ZSt16__insertion_sortIPPKN4llvm14LandingPadInfoEPFbS3_S3_EEvT_S7_T0_", + // "void std::__insertion_sort(llvm::LandingPadInfo const**, llvm::LandingPadInfo const**, bool (*)(llvm::LandingPadInfo const*, llvm::LandingPadInfo const*))"}, + // got error + + + // {"_ZSt13__heap_selectIPPKN4llvm14LandingPadInfoEPFbS3_S3_EEvT_S7_S7_T0_", + // "void std::__heap_select(llvm::LandingPadInfo const**, llvm::LandingPadInfo const**, llvm::LandingPadInfo const**, bool (*)(llvm::LandingPadInfo const*, llvm::LandingPadInfo const*))"}, + // got error + + + // {"_ZSt13__adjust_heapIPPKN4llvm14LandingPadInfoElS3_PFbS3_S3_EEvT_T0_S8_T1_T2_", + // "void std::__adjust_heap(llvm::LandingPadInfo const**, long, long, llvm::LandingPadInfo const*, bool (*)(llvm::LandingPadInfo const*, llvm::LandingPadInfo const*))"}, + // got error + + {"_ZN4llvm23SmallVectorTemplateBaseINS_14DwarfException13CallSiteEntryELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN4llvm23SmallVectorTemplateBaseINS_14DwarfException11ActionEntryELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN4llvm19DwarfTableExceptionC1EPNS_10AsmPrinterE", "llvm::DwarfTableException::DwarfTableException(llvm::AsmPrinter*)"}, + {"_ZN4llvm19DwarfTableExceptionC2EPNS_10AsmPrinterE", "llvm::DwarfTableException::DwarfTableException(llvm::AsmPrinter*)"}, + {"_ZN4llvm19DwarfTableExceptionD0Ev", "llvm::DwarfTableException::~DwarfTableException()"}, + {"_ZN4llvm19DwarfTableExceptionD1Ev", "llvm::DwarfTableException::~DwarfTableException()"}, + {"_ZN4llvm19DwarfTableExceptionD2Ev", "llvm::DwarfTableException::~DwarfTableException()"}, + {"_ZN4llvm19DwarfTableException7EmitCIEEPKNS_8FunctionEj", "llvm::DwarfTableException::EmitCIE(llvm::Function const*, unsigned int)"}, + {"_ZN4llvm19DwarfTableException7EmitFDEERKNS0_19FunctionEHFrameInfoE", "llvm::DwarfTableException::EmitFDE(llvm::DwarfTableException::FunctionEHFrameInfo const&)"}, + {"_ZN4llvm19DwarfTableException9EndModuleEv", "llvm::DwarfTableException::EndModule()"}, + {"_ZN4llvm19DwarfTableException13BeginFunctionEPKNS_15MachineFunctionE", "llvm::DwarfTableException::BeginFunction(llvm::MachineFunction const*)"}, + {"_ZN4llvm19DwarfTableException11EndFunctionEv", "llvm::DwarfTableException::EndFunction()"}, + {"_ZNSt6vectorIN4llvm19DwarfTableException19FunctionEHFrameInfoESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::DwarfTableException::FunctionEHFrameInfo const&)"}, + {"_ZN4llvm8AsmLexerC1ERKNS_9MCAsmInfoE", "llvm::AsmLexer::AsmLexer(llvm::MCAsmInfo const&)"}, + {"_ZN4llvm8AsmLexerC2ERKNS_9MCAsmInfoE", "llvm::AsmLexer::AsmLexer(llvm::MCAsmInfo const&)"}, + {"_ZN4llvm8AsmLexerD0Ev", "llvm::AsmLexer::~AsmLexer()"}, + {"_ZN4llvm8AsmLexerD1Ev", "llvm::AsmLexer::~AsmLexer()"}, + {"_ZN4llvm8AsmLexerD2Ev", "llvm::AsmLexer::~AsmLexer()"}, + {"_ZN4llvm8AsmLexer9setBufferEPKNS_12MemoryBufferEPKc", "llvm::AsmLexer::setBuffer(llvm::MemoryBuffer const*, char const*)"}, + {"_ZN4llvm8AsmLexer11ReturnErrorEPKcRKSs", "llvm::AsmLexer::ReturnError(char const*, std::string const&)"}, + {"_ZN4llvm8AsmLexer11getNextCharEv", "llvm::AsmLexer::getNextChar()"}, + {"_ZN4llvm8AsmLexer15LexFloatLiteralEv", "llvm::AsmLexer::LexFloatLiteral()"}, + {"_ZN4llvm8AsmLexer13LexIdentifierEv", "llvm::AsmLexer::LexIdentifier()"}, + {"_ZN4llvm8AsmLexer8LexSlashEv", "llvm::AsmLexer::LexSlash()"}, + {"_ZN4llvm8AsmLexer14LexLineCommentEv", "llvm::AsmLexer::LexLineComment()"}, + {"_ZN4llvm8AsmLexer8LexDigitEv", "llvm::AsmLexer::LexDigit()"}, + {"_ZN4llvm8AsmLexer14LexSingleQuoteEv", "llvm::AsmLexer::LexSingleQuote()"}, + {"_ZN4llvm8AsmLexer8LexQuoteEv", "llvm::AsmLexer::LexQuote()"}, + {"_ZN4llvm8AsmLexer22LexUntilEndOfStatementEv", "llvm::AsmLexer::LexUntilEndOfStatement()"}, + {"_ZN4llvm8AsmLexer18isAtStartOfCommentEc", "llvm::AsmLexer::isAtStartOfComment(char)"}, + {"_ZN4llvm8AsmLexer8LexTokenEv", "llvm::AsmLexer::LexToken()"}, + {"_ZN4llvm17createMCAsmParserERKNS_6TargetERNS_9SourceMgrERNS_9MCContextERNS_10MCStreamerERKNS_9MCAsmInfoE", "llvm::createMCAsmParser(llvm::Target const&, llvm::SourceMgr&, llvm::MCContext&, llvm::MCStreamer&, llvm::MCAsmInfo const&)"}, + {"_ZN12_GLOBAL__N_19AsmParserD1Ev", "(anonymous namespace)::AsmParser::~AsmParser()"}, + {"_ZN12_GLOBAL__N_19AsmParserD0Ev", "(anonymous namespace)::AsmParser::~AsmParser()"}, + {"_ZN12_GLOBAL__N_19AsmParser19AddDirectiveHandlerEPN4llvm20MCAsmParserExtensionENS1_9StringRefEPFbS3_S4_NS1_5SMLocEE", "(anonymous namespace)::AsmParser::AddDirectiveHandler(llvm::MCAsmParserExtension*, llvm::StringRef, bool (*)(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc))"}, + {"_ZN12_GLOBAL__N_19AsmParser16getSourceManagerEv", "(anonymous namespace)::AsmParser::getSourceManager()"}, + {"_ZN12_GLOBAL__N_19AsmParser8getLexerEv", "(anonymous namespace)::AsmParser::getLexer()"}, + {"_ZN12_GLOBAL__N_19AsmParser10getContextEv", "(anonymous namespace)::AsmParser::getContext()"}, + {"_ZN12_GLOBAL__N_19AsmParser11getStreamerEv", "(anonymous namespace)::AsmParser::getStreamer()"}, + {"_ZN12_GLOBAL__N_19AsmParser3RunEbb", "(anonymous namespace)::AsmParser::Run(bool, bool)"}, + {"_ZN12_GLOBAL__N_19AsmParser7WarningEN4llvm5SMLocERKNS1_5TwineE", "(anonymous namespace)::AsmParser::Warning(llvm::SMLoc, llvm::Twine const&)"}, + {"_ZN12_GLOBAL__N_19AsmParser5ErrorEN4llvm5SMLocERKNS1_5TwineE", "(anonymous namespace)::AsmParser::Error(llvm::SMLoc, llvm::Twine const&)"}, + {"_ZN12_GLOBAL__N_19AsmParser3LexEv", "(anonymous namespace)::AsmParser::Lex()"}, + {"_ZN12_GLOBAL__N_19AsmParser15ParseIdentifierERN4llvm9StringRefE", "(anonymous namespace)::AsmParser::ParseIdentifier(llvm::StringRef&)"}, + {"_ZN12_GLOBAL__N_19AsmParser27ParseStringToEndOfStatementEv", "(anonymous namespace)::AsmParser::ParseStringToEndOfStatement()"}, + {"_ZN12_GLOBAL__N_19AsmParser19EatToEndOfStatementEv", "(anonymous namespace)::AsmParser::EatToEndOfStatement()"}, + {"_ZN12_GLOBAL__N_19AsmParser15ParseExpressionERPKN4llvm6MCExprERNS1_5SMLocE", "(anonymous namespace)::AsmParser::ParseExpression(llvm::MCExpr const*&, llvm::SMLoc&)"}, + {"_ZN12_GLOBAL__N_19AsmParser20ParseParenExpressionERPKN4llvm6MCExprERNS1_5SMLocE", "(anonymous namespace)::AsmParser::ParseParenExpression(llvm::MCExpr const*&, llvm::SMLoc&)"}, + {"_ZN12_GLOBAL__N_19AsmParser23ParseAbsoluteExpressionERx", "(anonymous namespace)::AsmParser::ParseAbsoluteExpression(long long&)"}, + {"_ZN12_GLOBAL__N_19AsmParser14ParseParenExprERPKN4llvm6MCExprERNS1_5SMLocE", "(anonymous namespace)::AsmParser::ParseParenExpr(llvm::MCExpr const*&, llvm::SMLoc&)"}, + {"_ZN12_GLOBAL__N_19AsmParser13ParseBinOpRHSEjRPKN4llvm6MCExprERNS1_5SMLocE", "(anonymous namespace)::AsmParser::ParseBinOpRHS(unsigned int, llvm::MCExpr const*&, llvm::SMLoc&)"}, + {"_ZN12_GLOBAL__N_19AsmParser16ParsePrimaryExprERPKN4llvm6MCExprERNS1_5SMLocE", "(anonymous namespace)::AsmParser::ParsePrimaryExpr(llvm::MCExpr const*&, llvm::SMLoc&)"}, + {"_ZN12_GLOBAL__N_19AsmParser19ApplyModifierToExprEPKN4llvm6MCExprENS1_15MCSymbolRefExpr11VariantKindE", "(anonymous namespace)::AsmParser::ApplyModifierToExpr(llvm::MCExpr const*, llvm::MCSymbolRefExpr::VariantKind)"}, + {"_ZN12_GLOBAL__N_19AsmParser14ParseStatementEv", "(anonymous namespace)::AsmParser::ParseStatement()"}, + {"_ZN12_GLOBAL__N_19AsmParser19ParseDirectiveIfdefEN4llvm5SMLocEb", "(anonymous namespace)::AsmParser::ParseDirectiveIfdef(llvm::SMLoc, bool)"}, + {"_ZN12_GLOBAL__N_19AsmParser20CheckForValidSectionEv", "(anonymous namespace)::AsmParser::CheckForValidSection()"}, + {"_ZN12_GLOBAL__N_19AsmParser15ParseAssignmentEN4llvm9StringRefEb", "(anonymous namespace)::AsmParser::ParseAssignment(llvm::StringRef, bool)"}, + {"_ZN12_GLOBAL__N_19AsmParser17ParseDirectiveSetEN4llvm9StringRefEb", "(anonymous namespace)::AsmParser::ParseDirectiveSet(llvm::StringRef, bool)"}, + {"_ZN12_GLOBAL__N_19AsmParser19ParseDirectiveAsciiEN4llvm9StringRefEb", "(anonymous namespace)::AsmParser::ParseDirectiveAscii(llvm::StringRef, bool)"}, + {"_ZN12_GLOBAL__N_19AsmParser19ParseDirectiveValueEj", "(anonymous namespace)::AsmParser::ParseDirectiveValue(unsigned int)"}, + {"_ZN12_GLOBAL__N_19AsmParser23ParseDirectiveRealValueERKN4llvm12fltSemanticsE", "(anonymous namespace)::AsmParser::ParseDirectiveRealValue(llvm::fltSemantics const&)"}, + {"_ZN12_GLOBAL__N_19AsmParser19ParseDirectiveAlignEbj", "(anonymous namespace)::AsmParser::ParseDirectiveAlign(bool, unsigned int)"}, + {"_ZN12_GLOBAL__N_19AsmParser29ParseDirectiveSymbolAttributeEN4llvm12MCSymbolAttrE", "(anonymous namespace)::AsmParser::ParseDirectiveSymbolAttribute(llvm::MCSymbolAttr)"}, + {"_ZN12_GLOBAL__N_19AsmParser18ParseDirectiveCommEb", "(anonymous namespace)::AsmParser::ParseDirectiveComm(bool)"}, + {"_Z8MarkUsedPKN4llvm6MCExprE", "MarkUsed(llvm::MCExpr const*)"}, + {"_ZN12_GLOBAL__N_116GenericAsmParserD1Ev", "(anonymous namespace)::GenericAsmParser::~GenericAsmParser()"}, + {"_ZN12_GLOBAL__N_116GenericAsmParserD0Ev", "(anonymous namespace)::GenericAsmParser::~GenericAsmParser()"}, + {"_ZN12_GLOBAL__N_116GenericAsmParser10InitializeERN4llvm11MCAsmParserE", "(anonymous namespace)::GenericAsmParser::Initialize(llvm::MCAsmParser&)"}, + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_20ParseDirectiveLEB128ENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &(anonymous namespace)::GenericAsmParser::ParseDirectiveLEB128(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_22ParseDirectiveEndMacroENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &(anonymous namespace)::GenericAsmParser::ParseDirectiveEndMacro(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_19ParseDirectiveMacroENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &(anonymous namespace)::GenericAsmParser::ParseDirectiveMacro(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_25ParseDirectiveMacrosOnOffENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &(anonymous namespace)::GenericAsmParser::ParseDirectiveMacrosOnOff(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_29ParseDirectiveCFIRestoreStateENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &(anonymous namespace)::GenericAsmParser::ParseDirectiveCFIRestoreState(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_30ParseDirectiveCFIRememberStateENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &(anonymous namespace)::GenericAsmParser::ParseDirectiveCFIRememberState(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_34ParseDirectiveCFIPersonalityOrLsdaENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &(anonymous namespace)::GenericAsmParser::ParseDirectiveCFIPersonalityOrLsda(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_23ParseDirectiveCFIOffsetENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &(anonymous namespace)::GenericAsmParser::ParseDirectiveCFIOffset(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + {"_ZN12_GLOBAL__N_116GenericAsmParser29ParseRegisterOrRegisterNumberERxN4llvm5SMLocE", "(anonymous namespace)::GenericAsmParser::ParseRegisterOrRegisterNumber(long long&, llvm::SMLoc)"}, + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_31ParseDirectiveCFIDefCfaRegisterENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &(anonymous namespace)::GenericAsmParser::ParseDirectiveCFIDefCfaRegister(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_29ParseDirectiveCFIDefCfaOffsetENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &(anonymous namespace)::GenericAsmParser::ParseDirectiveCFIDefCfaOffset(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_23ParseDirectiveCFIDefCfaENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &(anonymous namespace)::GenericAsmParser::ParseDirectiveCFIDefCfa(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_24ParseDirectiveCFIEndProcENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &(anonymous namespace)::GenericAsmParser::ParseDirectiveCFIEndProc(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_26ParseDirectiveCFIStartProcENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &(anonymous namespace)::GenericAsmParser::ParseDirectiveCFIStartProc(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_19ParseDirectiveStabsENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &(anonymous namespace)::GenericAsmParser::ParseDirectiveStabs(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_17ParseDirectiveLocENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &(anonymous namespace)::GenericAsmParser::ParseDirectiveLoc(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_18ParseDirectiveLineENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &(anonymous namespace)::GenericAsmParser::ParseDirectiveLine(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_18ParseDirectiveFileENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &(anonymous namespace)::GenericAsmParser::ParseDirectiveFile(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + {"_ZNSt6vectorIN4llvm8AsmTokenESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::AsmToken const&)"}, + + // {"_ZNSt6vectorIS_IN4llvm8AsmTokenESaIS1_EESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_", + // "std::vector>, std::allocator>>>::_M_insert_aux(__gnu_cxx::__normal_iterator>*, std::vector>, std::allocator>>>>, std::vector> const&)"}, + // "std::vector>, std::allocator<>>>::_M_insert_aux(__gnu_cxx::__normal_iterator<>*, std::vector>, std::allocator<>>>>, > const&)" was returned + + {"_ZNSt6vectorIN4llvm8AsmTokenESaIS1_EEaSERKS3_", "std::vector>::operator=(std::vector> const&)"}, + {"_ZNSt6vectorIN4llvm8AsmTokenESaIS1_EEC2ERKS3_", "std::vector>::vector(std::vector> const&)"}, + {"_ZNSt6vectorIN4llvm7AsmCondESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::AsmCond const&)"}, + + // {"_ZN4llvm9StringMapISt4pairIPNS_20MCAsmParserExtensionEPFbS3_NS_9StringRefENS_5SMLocEEENS_15MallocAllocatorEE16GetOrCreateValueIS8_EERNS_14StringMapEntryIS8_EES4_T_", + // "llvm::StringMapEntry>& llvm::StringMap, llvm::MallocAllocator>::GetOrCreateValue>(llvm::StringRef, std::pair)"}, + // "llvm::StringMapEntry& llvm::StringMap, llvm::MallocAllocator>::GetOrCreateValue(llvm::StringRef, llvm::MCAsmParserExtension*)" was returned + + {"_ZN4llvm19createCOFFAsmParserEv", "llvm::createCOFFAsmParser()"}, + {"_ZN12_GLOBAL__N_113COFFAsmParserD1Ev", "(anonymous namespace)::COFFAsmParser::~COFFAsmParser()"}, + {"_ZN12_GLOBAL__N_113COFFAsmParserD0Ev", "(anonymous namespace)::COFFAsmParser::~COFFAsmParser()"}, + {"_ZN12_GLOBAL__N_113COFFAsmParser10InitializeERN4llvm11MCAsmParserE", "(anonymous namespace)::COFFAsmParser::Initialize(llvm::MCAsmParser&)"}, + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_113COFFAsmParserEXadL_ZNS3_19ParseDirectiveEndefENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::COFFAsmParser, &(anonymous namespace)::COFFAsmParser::ParseDirectiveEndef(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_113COFFAsmParserEXadL_ZNS3_18ParseDirectiveTypeENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::COFFAsmParser, &(anonymous namespace)::COFFAsmParser::ParseDirectiveType(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_113COFFAsmParserEXadL_ZNS3_17ParseDirectiveSclENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::COFFAsmParser, &(anonymous namespace)::COFFAsmParser::ParseDirectiveScl(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_113COFFAsmParserEXadL_ZNS3_17ParseDirectiveDefENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::COFFAsmParser, &(anonymous namespace)::COFFAsmParser::ParseDirectiveDef(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_113COFFAsmParserEXadL_ZNS3_24ParseSectionDirectiveBSSENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::COFFAsmParser, &(anonymous namespace)::COFFAsmParser::ParseSectionDirectiveBSS(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + {"_ZN12_GLOBAL__N_113COFFAsmParser18ParseSectionSwitchEN4llvm9StringRefEjNS1_11SectionKindE", "(anonymous namespace)::COFFAsmParser::ParseSectionSwitch(llvm::StringRef, unsigned int, llvm::SectionKind)"}, + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_113COFFAsmParserEXadL_ZNS3_25ParseSectionDirectiveDataENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::COFFAsmParser, &(anonymous namespace)::COFFAsmParser::ParseSectionDirectiveData(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_113COFFAsmParserEXadL_ZNS3_25ParseSectionDirectiveTextENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::COFFAsmParser, &(anonymous namespace)::COFFAsmParser::ParseSectionDirectiveText(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + {"_ZN4llvm21createDarwinAsmParserEv", "llvm::createDarwinAsmParser()"}, + {"_ZN12_GLOBAL__N_115DarwinAsmParserD1Ev", "(anonymous namespace)::DarwinAsmParser::~DarwinAsmParser()"}, + {"_ZN12_GLOBAL__N_115DarwinAsmParserD0Ev", "(anonymous namespace)::DarwinAsmParser::~DarwinAsmParser()"}, + {"_ZN12_GLOBAL__N_115DarwinAsmParser10InitializeERN4llvm11MCAsmParserE", "(anonymous namespace)::DarwinAsmParser::Initialize(llvm::MCAsmParser&)"}, + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_24ParseSectionDirectiveTLVENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveTLV(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + {"_ZN12_GLOBAL__N_115DarwinAsmParser18ParseSectionSwitchEPKcS2_jjj", "(anonymous namespace)::DarwinAsmParser::ParseSectionSwitch(char const*, char const*, unsigned int, unsigned int, unsigned int)"}, + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_35ParseSectionDirectiveThreadInitFuncENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveThreadInitFunc(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_25ParseSectionDirectiveTextENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveText(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_26ParseSectionDirectiveTDataENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveTData(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_31ParseSectionDirectiveSymbolStubENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveSymbolStub(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_31ParseSectionDirectiveStaticDataENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveStaticData(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_32ParseSectionDirectiveStaticConstENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveStaticConst(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_34ParseSectionDirectivePICSymbolStubENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectivePICSymbolStub(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_32ParseSectionDirectiveObjCSymbolsENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCSymbols(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_37ParseSectionDirectiveObjCStringObjectENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCStringObject(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_37ParseSectionDirectiveObjCSelectorStrsENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCSelectorStrs(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_33ParseSectionDirectiveObjCProtocolENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCProtocol(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_35ParseSectionDirectiveObjCModuleInfoENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCModuleInfo(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_37ParseSectionDirectiveObjCMethVarTypesENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCMethVarTypes(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_37ParseSectionDirectiveObjCMethVarNamesENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCMethVarNames(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_34ParseSectionDirectiveObjCMetaClassENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCMetaClass(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_36ParseSectionDirectiveObjCMessageRefsENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCMessageRefs(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_37ParseSectionDirectiveObjCInstanceVarsENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCInstanceVars(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_33ParseSectionDirectiveObjCInstMethENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCInstMeth(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_32ParseSectionDirectiveObjCClsRefsENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCClsRefs(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_32ParseSectionDirectiveObjCClsMethENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCClsMeth(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_34ParseSectionDirectiveObjCClassVarsENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCClassVars(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_35ParseSectionDirectiveObjCClassNamesENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCClassNames(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_30ParseSectionDirectiveObjCClassENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCClass(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_33ParseSectionDirectiveObjCCategoryENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCCategory(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_36ParseSectionDirectiveObjCCatInstMethENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCCatInstMeth(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_35ParseSectionDirectiveObjCCatClsMethENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCCatClsMeth(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_42ParseSectionDirectiveNonLazySymbolPointersENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveNonLazySymbolPointers(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_32ParseSectionDirectiveModTermFuncENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveModTermFunc(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_32ParseSectionDirectiveModInitFuncENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveModInitFunc(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_29ParseSectionDirectiveLiteral8ENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveLiteral8(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_29ParseSectionDirectiveLiteral4ENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveLiteral4(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_30ParseSectionDirectiveLiteral16ENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveLiteral16(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_39ParseSectionDirectiveLazySymbolPointersENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveLazySymbolPointers(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_32ParseSectionDirectiveFVMLibInit1ENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveFVMLibInit1(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_32ParseSectionDirectiveFVMLibInit0ENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveFVMLibInit0(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_25ParseSectionDirectiveDyldENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveDyld(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_31ParseSectionDirectiveDestructorENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveDestructor(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_25ParseSectionDirectiveDataENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveData(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_28ParseSectionDirectiveCStringENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveCString(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_32ParseSectionDirectiveConstructorENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveConstructor(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_30ParseSectionDirectiveConstDataENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveConstData(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_26ParseSectionDirectiveConstENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveConst(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_22ParseDirectiveZerofillENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseDirectiveZerofill(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_18ParseDirectiveTBSSENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseDirectiveTBSS(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_28ParseDirectiveSecureLogResetENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseDirectiveSecureLogReset(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_29ParseDirectiveSecureLogUniqueENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseDirectiveSecureLogUnique(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_21ParseDirectiveSectionENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseDirectiveSection(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_24ParseDirectiveDumpOrLoadENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseDirectiveDumpOrLoad(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_35ParseDirectiveSubsectionsViaSymbolsENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseDirectiveSubsectionsViaSymbols(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_18ParseDirectiveLsymENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseDirectiveLsym(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_18ParseDirectiveDescENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseDirectiveDesc(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + {"_ZN4llvm18createELFAsmParserEv", "llvm::createELFAsmParser()"}, + {"_ZN12_GLOBAL__N_112ELFAsmParserD1Ev", "(anonymous namespace)::ELFAsmParser::~ELFAsmParser()"}, + {"_ZN12_GLOBAL__N_112ELFAsmParserD0Ev", "(anonymous namespace)::ELFAsmParser::~ELFAsmParser()"}, + {"_ZN12_GLOBAL__N_112ELFAsmParser10InitializeERN4llvm11MCAsmParserE", "(anonymous namespace)::ELFAsmParser::Initialize(llvm::MCAsmParser&)"}, + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_21ParseDirectiveWeakrefENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &(anonymous namespace)::ELFAsmParser::ParseDirectiveWeakref(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_20ParseDirectiveSymverENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &(anonymous namespace)::ELFAsmParser::ParseDirectiveSymver(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_19ParseDirectiveIdentENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &(anonymous namespace)::ELFAsmParser::ParseDirectiveIdent(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_18ParseDirectiveTypeENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &(anonymous namespace)::ELFAsmParser::ParseDirectiveType(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_22ParseDirectivePreviousENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &(anonymous namespace)::ELFAsmParser::ParseDirectivePrevious(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_18ParseDirectiveSizeENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &(anonymous namespace)::ELFAsmParser::ParseDirectiveSize(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_21ParseDirectiveSectionENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &(anonymous namespace)::ELFAsmParser::ParseDirectiveSection(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_28ParseSectionDirectiveEhFrameENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &(anonymous namespace)::ELFAsmParser::ParseSectionDirectiveEhFrame(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + {"_ZN12_GLOBAL__N_112ELFAsmParser18ParseSectionSwitchEN4llvm9StringRefEjjNS1_11SectionKindE", "(anonymous namespace)::ELFAsmParser::ParseSectionSwitch(llvm::StringRef, unsigned int, unsigned int, llvm::SectionKind)"}, + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_35ParseSectionDirectiveDataRelRoLocalENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &(anonymous namespace)::ELFAsmParser::ParseSectionDirectiveDataRelRoLocal(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_30ParseSectionDirectiveDataRelRoENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &(anonymous namespace)::ELFAsmParser::ParseSectionDirectiveDataRelRo(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_28ParseSectionDirectiveDataRelENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &(anonymous namespace)::ELFAsmParser::ParseSectionDirectiveDataRel(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_25ParseSectionDirectiveTBSSENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &(anonymous namespace)::ELFAsmParser::ParseSectionDirectiveTBSS(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_26ParseSectionDirectiveTDataENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &(anonymous namespace)::ELFAsmParser::ParseSectionDirectiveTData(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_27ParseSectionDirectiveRoDataENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &(anonymous namespace)::ELFAsmParser::ParseSectionDirectiveRoData(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_24ParseSectionDirectiveBSSENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &(anonymous namespace)::ELFAsmParser::ParseSectionDirectiveBSS(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_25ParseSectionDirectiveTextENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &(anonymous namespace)::ELFAsmParser::ParseSectionDirectiveText(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + + // {"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_25ParseSectionDirectiveDataENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", + // "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &(anonymous namespace)::ELFAsmParser::ParseSectionDirectiveData(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"}, + // got error + + {"_ZN4llvm10MCAsmLexerC1Ev", "llvm::MCAsmLexer::MCAsmLexer()"}, + {"_ZN4llvm10MCAsmLexerC2Ev", "llvm::MCAsmLexer::MCAsmLexer()"}, + {"_ZN4llvm10MCAsmLexerD0Ev", "llvm::MCAsmLexer::~MCAsmLexer()"}, + {"_ZN4llvm10MCAsmLexerD1Ev", "llvm::MCAsmLexer::~MCAsmLexer()"}, + {"_ZN4llvm10MCAsmLexerD2Ev", "llvm::MCAsmLexer::~MCAsmLexer()"}, + {"_ZNK4llvm10MCAsmLexer6getLocEv", "llvm::MCAsmLexer::getLoc() const"}, + {"_ZNK4llvm8AsmToken6getLocEv", "llvm::AsmToken::getLoc() const"}, + {"_ZN4llvm11MCAsmParserC1Ev", "llvm::MCAsmParser::MCAsmParser()"}, + {"_ZN4llvm11MCAsmParserC2Ev", "llvm::MCAsmParser::MCAsmParser()"}, + {"_ZN4llvm11MCAsmParserD0Ev", "llvm::MCAsmParser::~MCAsmParser()"}, + {"_ZN4llvm11MCAsmParserD1Ev", "llvm::MCAsmParser::~MCAsmParser()"}, + {"_ZN4llvm11MCAsmParserD2Ev", "llvm::MCAsmParser::~MCAsmParser()"}, + {"_ZN4llvm11MCAsmParser15setTargetParserERNS_15TargetAsmParserE", "llvm::MCAsmParser::setTargetParser(llvm::TargetAsmParser&)"}, + {"_ZN4llvm11MCAsmParser6getTokEv", "llvm::MCAsmParser::getTok()"}, + {"_ZN4llvm11MCAsmParser8TokErrorERKNS_5TwineE", "llvm::MCAsmParser::TokError(llvm::Twine const&)"}, + {"_ZN4llvm11MCAsmParser15ParseExpressionERPKNS_6MCExprE", "llvm::MCAsmParser::ParseExpression(llvm::MCExpr const*&)"}, + {"_ZN4llvm20MCAsmParserExtensionC1Ev", "llvm::MCAsmParserExtension::MCAsmParserExtension()"}, + {"_ZN4llvm20MCAsmParserExtensionC2Ev", "llvm::MCAsmParserExtension::MCAsmParserExtension()"}, + {"_ZN4llvm20MCAsmParserExtensionD0Ev", "llvm::MCAsmParserExtension::~MCAsmParserExtension()"}, + {"_ZN4llvm20MCAsmParserExtensionD1Ev", "llvm::MCAsmParserExtension::~MCAsmParserExtension()"}, + {"_ZN4llvm20MCAsmParserExtensionD2Ev", "llvm::MCAsmParserExtension::~MCAsmParserExtension()"}, + {"_ZN4llvm20MCAsmParserExtension10InitializeERNS_11MCAsmParserE", "llvm::MCAsmParserExtension::Initialize(llvm::MCAsmParser&)"}, + {"_ZN4llvm15TargetAsmParserC1ERKNS_6TargetE", "llvm::TargetAsmParser::TargetAsmParser(llvm::Target const&)"}, + {"_ZN4llvm15TargetAsmParserC2ERKNS_6TargetE", "llvm::TargetAsmParser::TargetAsmParser(llvm::Target const&)"}, + {"_ZN4llvm15TargetAsmParserD0Ev", "llvm::TargetAsmParser::~TargetAsmParser()"}, + {"_ZN4llvm15TargetAsmParserD1Ev", "llvm::TargetAsmParser::~TargetAsmParser()"}, + {"_ZN4llvm15TargetAsmParserD2Ev", "llvm::TargetAsmParser::~TargetAsmParser()"}, + {"_ZN4llvm22AggressiveAntiDepStateC1EjPNS_17MachineBasicBlockE", "llvm::AggressiveAntiDepState::AggressiveAntiDepState(unsigned int, llvm::MachineBasicBlock*)"}, + {"_ZN4llvm22AggressiveAntiDepStateC2EjPNS_17MachineBasicBlockE", "llvm::AggressiveAntiDepState::AggressiveAntiDepState(unsigned int, llvm::MachineBasicBlock*)"}, + {"_ZN4llvm22AggressiveAntiDepState8GetGroupEj", "llvm::AggressiveAntiDepState::GetGroup(unsigned int)"}, + {"_ZN4llvm22AggressiveAntiDepState12GetGroupRegsEjRSt6vectorIjSaIjEEPSt8multimapIjNS0_17RegisterReferenceESt4lessIjESaISt4pairIKjS6_EEE", "llvm::AggressiveAntiDepState::GetGroupRegs(unsigned int, std::vector>&, std::multimap, std::allocator>>*)"}, + {"_ZN4llvm22AggressiveAntiDepState11UnionGroupsEjj", "llvm::AggressiveAntiDepState::UnionGroups(unsigned int, unsigned int)"}, + {"_ZN4llvm22AggressiveAntiDepState10LeaveGroupEj", "llvm::AggressiveAntiDepState::LeaveGroup(unsigned int)"}, + {"_ZN4llvm22AggressiveAntiDepState6IsLiveEj", "llvm::AggressiveAntiDepState::IsLive(unsigned int)"}, + {"_ZN4llvm24AggressiveAntiDepBreakerC1ERNS_15MachineFunctionERNS_15SmallVectorImplIPNS_19TargetRegisterClassEEE", "llvm::AggressiveAntiDepBreaker::AggressiveAntiDepBreaker(llvm::MachineFunction&, llvm::SmallVectorImpl&)"}, + {"_ZN4llvm24AggressiveAntiDepBreakerC2ERNS_15MachineFunctionERNS_15SmallVectorImplIPNS_19TargetRegisterClassEEE", "llvm::AggressiveAntiDepBreaker::AggressiveAntiDepBreaker(llvm::MachineFunction&, llvm::SmallVectorImpl&)"}, + {"_ZN4llvm24AggressiveAntiDepBreakerD0Ev", "llvm::AggressiveAntiDepBreaker::~AggressiveAntiDepBreaker()"}, + {"_ZN4llvm24AggressiveAntiDepBreakerD1Ev", "llvm::AggressiveAntiDepBreaker::~AggressiveAntiDepBreaker()"}, + {"_ZN4llvm24AggressiveAntiDepBreakerD2Ev", "llvm::AggressiveAntiDepBreaker::~AggressiveAntiDepBreaker()"}, + {"_ZN4llvm24AggressiveAntiDepBreaker10StartBlockEPNS_17MachineBasicBlockE", "llvm::AggressiveAntiDepBreaker::StartBlock(llvm::MachineBasicBlock*)"}, + {"_ZN4llvm24AggressiveAntiDepBreaker11FinishBlockEv", "llvm::AggressiveAntiDepBreaker::FinishBlock()"}, + {"_ZN4llvm24AggressiveAntiDepBreaker7ObserveEPNS_12MachineInstrEjj", "llvm::AggressiveAntiDepBreaker::Observe(llvm::MachineInstr*, unsigned int, unsigned int)"}, + {"_ZN4llvm24AggressiveAntiDepBreaker15GetPassthruRegsEPNS_12MachineInstrERSt3setIjSt4lessIjESaIjEE", "llvm::AggressiveAntiDepBreaker::GetPassthruRegs(llvm::MachineInstr*, std::set, std::allocator>&)"}, + {"_ZN4llvm24AggressiveAntiDepBreaker18PrescanInstructionEPNS_12MachineInstrEjRSt3setIjSt4lessIjESaIjEE", "llvm::AggressiveAntiDepBreaker::PrescanInstruction(llvm::MachineInstr*, unsigned int, std::set, std::allocator>&)"}, + {"_ZN4llvm24AggressiveAntiDepBreaker15ScanInstructionEPNS_12MachineInstrEj", "llvm::AggressiveAntiDepBreaker::ScanInstruction(llvm::MachineInstr*, unsigned int)"}, + {"_ZN4llvm24AggressiveAntiDepBreaker16IsImplicitDefUseEPNS_12MachineInstrERNS_14MachineOperandE", "llvm::AggressiveAntiDepBreaker::IsImplicitDefUse(llvm::MachineInstr*, llvm::MachineOperand&)"}, + {"_ZN4llvm24AggressiveAntiDepBreaker13HandleLastUseEjjPKcS2_S2_", "llvm::AggressiveAntiDepBreaker::HandleLastUse(unsigned int, unsigned int, char const*, char const*, char const*)"}, + {"_ZN4llvm24AggressiveAntiDepBreaker18GetRenameRegistersEj", "llvm::AggressiveAntiDepBreaker::GetRenameRegisters(unsigned int)"}, + + // {"_ZN4llvm24AggressiveAntiDepBreaker25FindSuitableFreeRegistersEjRSt3mapIPKNS_19TargetRegisterClassEPKjSt4lessIS4_ESaISt4pairIKS4_S6_EEERS1_IjjS7_IjESaIS9_IS5_jEEE", + // "llvm::AggressiveAntiDepBreaker::FindSuitableFreeRegisters(unsigned int, std::map, std::allocator>>&, std::map, std::allocator>>&)"}, + // "llvm::AggressiveAntiDepBreaker::FindSuitableFreeRegisters(unsigned int, std::map, std::allocator>>&, std::map&, std::allocator>>)" was returned + + {"_ZN4llvm24AggressiveAntiDepBreaker21BreakAntiDependenciesERKSt6vectorINS_5SUnitESaIS2_EENS_14ilist_iteratorINS_12MachineInstrEEES9_j", "llvm::AggressiveAntiDepBreaker::BreakAntiDependencies(std::vector> const&, llvm::ilist_iterator, llvm::ilist_iterator, unsigned int)"}, + {"_ZNSt8_Rb_treeIPN4llvm12MachineInstrESt4pairIKS2_PKNS0_5SUnitEESt10_Select1stIS8_ESt4lessIS2_ESaIS8_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS8_ERKS8_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIPN4llvm12MachineInstrESt4pairIKS2_PKNS0_5SUnitEESt10_Select1stIS8_ESt4lessIS2_ESaIS8_EE16_M_insert_uniqueERKS8_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm19TargetRegisterClassESt4pairIKS3_PKjESt10_Select1stIS8_ESt4lessIS3_ESaIS8_EE5eraseESt17_Rb_tree_iteratorIS8_ESG_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::erase(std::_Rb_tree_iterator>, std::_Rb_tree_iterator>)"}, + {"_ZNSt8_Rb_treeIPKN4llvm19TargetRegisterClassESt4pairIKS3_PKjESt10_Select1stIS8_ESt4lessIS3_ESaIS8_EE8_M_eraseEPSt13_Rb_tree_nodeIS8_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZNSt8_Rb_treeIjSt4pairIKjjESt10_Select1stIS2_ESt4lessIjESaIS2_EE16_M_insert_uniqueERKS2_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZNSt8_Rb_treeIjSt4pairIKjN4llvm9BitVectorEESt10_Select1stIS4_ESt4lessIjESaIS4_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS4_ERKS4_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIjSt4pairIKjN4llvm9BitVectorEESt10_Select1stIS4_ESt4lessIjESaIS4_EE9_M_insertEPSt18_Rb_tree_node_baseSC_RKS4_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair const&)"}, + {"_ZNSt8_Rb_treeIjSt4pairIKjN4llvm9BitVectorEESt10_Select1stIS4_ESt4lessIjESaIS4_EE16_M_insert_uniqueERKS4_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZNSt8_Rb_treeIjSt4pairIKjjESt10_Select1stIS2_ESt4lessIjESaIS2_EE8_M_eraseEPSt13_Rb_tree_nodeIS2_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZNSt8_Rb_treeIPKN4llvm19TargetRegisterClassESt4pairIKS3_PKjESt10_Select1stIS8_ESt4lessIS3_ESaIS8_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS8_ERKS8_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm19TargetRegisterClassESt4pairIKS3_PKjESt10_Select1stIS8_ESt4lessIS3_ESaIS8_EE16_M_insert_uniqueERKS8_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZNSt8_Rb_treeIjSt4pairIKjN4llvm22AggressiveAntiDepState17RegisterReferenceEESt10_Select1stIS5_ESt4lessIjESaIS5_EE5eraseESt17_Rb_tree_iteratorIS5_ESD_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::erase(std::_Rb_tree_iterator>, std::_Rb_tree_iterator>)"}, + {"_ZNSt8_Rb_treeIjSt4pairIKjN4llvm22AggressiveAntiDepState17RegisterReferenceEESt10_Select1stIS5_ESt4lessIjESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZNSt8_Rb_treeIPN4llvm12MachineInstrESt4pairIKS2_PKNS0_5SUnitEESt10_Select1stIS8_ESt4lessIS2_ESaIS8_EE8_M_eraseEPSt13_Rb_tree_nodeIS8_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZNSt6vectorIPKN4llvm4SDepESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::SDep const* const&)"}, + {"_ZNSt8_Rb_treeIjSt4pairIKjN4llvm9BitVectorEESt10_Select1stIS4_ESt4lessIjESaIS4_EE8_M_eraseEPSt13_Rb_tree_nodeIS4_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZN4llvm18ComputeLinearIndexEPKNS_4TypeEPKjS4_j", "llvm::ComputeLinearIndex(llvm::Type const*, unsigned int const*, unsigned int const*, unsigned int)"}, + {"_ZN4llvm15ComputeValueVTsERKNS_14TargetLoweringEPKNS_4TypeERNS_15SmallVectorImplINS_3EVTEEEPNS6_IyEEy", "llvm::ComputeValueVTs(llvm::TargetLowering const&, llvm::Type const*, llvm::SmallVectorImpl&, llvm::SmallVectorImpl*, unsigned long long)"}, + {"_ZN4llvm15ExtractTypeInfoEPNS_5ValueE", "llvm::ExtractTypeInfo(llvm::Value*)"}, + {"_ZN4llvm25hasInlineAsmMemConstraintERSt6vectorINS_9InlineAsm14ConstraintInfoESaIS2_EERKNS_14TargetLoweringE", "llvm::hasInlineAsmMemConstraint(std::vector>&, llvm::TargetLowering const&)"}, + {"_ZN4llvm15getFCmpCondCodeENS_7CmpInst9PredicateE", "llvm::getFCmpCondCode(llvm::CmpInst::Predicate)"}, + {"_ZN4llvm15getICmpCondCodeENS_7CmpInst9PredicateE", "llvm::getICmpCondCode(llvm::CmpInst::Predicate)"}, + {"_ZN4llvm20isInTailCallPositionENS_17ImmutableCallSiteEjRKNS_14TargetLoweringE", "llvm::isInTailCallPosition(llvm::ImmutableCallSite, unsigned int, llvm::TargetLowering const&)"}, + {"_ZN4llvm20isInTailCallPositionERNS_12SelectionDAGEPNS_6SDNodeERKNS_14TargetLoweringE", "llvm::isInTailCallPosition(llvm::SelectionDAG&, llvm::SDNode*, llvm::TargetLowering const&)"}, + {"_ZN4llvm23createBranchFoldingPassEb", "llvm::createBranchFoldingPass(bool)"}, + {"_ZN4llvm12BranchFolderC1Eb", "llvm::BranchFolder::BranchFolder(bool)"}, + {"_ZN4llvm12BranchFolderC2Eb", "llvm::BranchFolder::BranchFolder(bool)"}, + {"_ZN4llvm12BranchFolder15RemoveDeadBlockEPNS_17MachineBasicBlockE", "llvm::BranchFolder::RemoveDeadBlock(llvm::MachineBasicBlock*)"}, + {"_ZN4llvm12BranchFolder20OptimizeImpDefsBlockEPNS_17MachineBasicBlockE", "llvm::BranchFolder::OptimizeImpDefsBlock(llvm::MachineBasicBlock*)"}, + {"_ZN4llvm12BranchFolder16OptimizeFunctionERNS_15MachineFunctionEPKNS_15TargetInstrInfoEPKNS_18TargetRegisterInfoEPNS_17MachineModuleInfoE", "llvm::BranchFolder::OptimizeFunction(llvm::MachineFunction&, llvm::TargetInstrInfo const*, llvm::TargetRegisterInfo const*, llvm::MachineModuleInfo*)"}, + {"_ZN4llvm12BranchFolder15TailMergeBlocksERNS_15MachineFunctionE", "llvm::BranchFolder::TailMergeBlocks(llvm::MachineFunction&)"}, + {"_ZN4llvm12BranchFolder16OptimizeBranchesERNS_15MachineFunctionE", "llvm::BranchFolder::OptimizeBranches(llvm::MachineFunction&)"}, + {"_ZN4llvm12BranchFolder23ReplaceTailWithBranchToENS_14ilist_iteratorINS_12MachineInstrEEEPNS_17MachineBasicBlockE", "llvm::BranchFolder::ReplaceTailWithBranchTo(llvm::ilist_iterator, llvm::MachineBasicBlock*)"}, + {"_ZN4llvm12BranchFolder10SplitMBBAtERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEE", "llvm::BranchFolder::SplitMBBAt(llvm::MachineBasicBlock&, llvm::ilist_iterator)"}, + {"_ZNK4llvm12BranchFolder18MergePotentialsEltltERKS1_", "llvm::BranchFolder::MergePotentialsElt::operator<(llvm::BranchFolder::MergePotentialsElt const&) const"}, + {"_ZN4llvm12BranchFolder16ComputeSameTailsEjjPNS_17MachineBasicBlockES2_", "llvm::BranchFolder::ComputeSameTails(unsigned int, unsigned int, llvm::MachineBasicBlock*, llvm::MachineBasicBlock*)"}, + {"_ZN4llvm12BranchFolder20RemoveBlocksWithHashEjPNS_17MachineBasicBlockES2_", "llvm::BranchFolder::RemoveBlocksWithHash(unsigned int, llvm::MachineBasicBlock*, llvm::MachineBasicBlock*)"}, + {"_Z7FixTailPN4llvm17MachineBasicBlockES1_PKNS_15TargetInstrInfoE", "FixTail(llvm::MachineBasicBlock*, llvm::MachineBasicBlock*, llvm::TargetInstrInfo const*)"}, + {"_ZN4llvm12BranchFolder25CreateCommonTailOnlyBlockERPNS_17MachineBasicBlockEjRj", "llvm::BranchFolder::CreateCommonTailOnlyBlock(llvm::MachineBasicBlock*&, unsigned int, unsigned int&)"}, + {"_ZN4llvm12BranchFolder18TryTailMergeBlocksEPNS_17MachineBasicBlockES2_", "llvm::BranchFolder::TryTailMergeBlocks(llvm::MachineBasicBlock*, llvm::MachineBasicBlock*)"}, + {"_Z12HashEndOfMBBPKN4llvm17MachineBasicBlockE", "HashEndOfMBB(llvm::MachineBasicBlock const*)"}, + {"_ZN4llvm12BranchFolder13OptimizeBlockEPNS_17MachineBasicBlockE", "llvm::BranchFolder::OptimizeBlock(llvm::MachineBasicBlock*)"}, + {"_ZN12_GLOBAL__N_116BranchFolderPassD1Ev", "(anonymous namespace)::BranchFolderPass::~BranchFolderPass()"}, + {"_ZN12_GLOBAL__N_116BranchFolderPassD0Ev", "(anonymous namespace)::BranchFolderPass::~BranchFolderPass()"}, + {"_ZNK12_GLOBAL__N_116BranchFolderPass11getPassNameEv", "(anonymous namespace)::BranchFolderPass::getPassName() const"}, + {"_ZN12_GLOBAL__N_116BranchFolderPass20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::BranchFolderPass::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZNSt6vectorIN4llvm12BranchFolder18MergePotentialsEltESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::BranchFolder::MergePotentialsElt const&)"}, + + // {"_ZSt21__inplace_stable_sortIN9__gnu_cxx17__normal_iteratorIPN4llvm12BranchFolder18MergePotentialsEltESt6vectorIS4_SaIS4_EEEEEvT_SA_", + // "void std::__inplace_stable_sort<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>)"}, + // got error + + + // {"_ZSt22__stable_sort_adaptiveIN9__gnu_cxx17__normal_iteratorIPN4llvm12BranchFolder18MergePotentialsEltESt6vectorIS4_SaIS4_EEEES5_lEvT_SA_T0_T1_", + // "void std::__stable_sort_adaptive<__gnu_cxx::__normal_iterator>>, llvm::BranchFolder::MergePotentialsElt*, long>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, llvm::BranchFolder::MergePotentialsElt*, long)"}, + // got error + + + // {"_ZSt24__merge_sort_with_bufferIN9__gnu_cxx17__normal_iteratorIPN4llvm12BranchFolder18MergePotentialsEltESt6vectorIS4_SaIS4_EEEES5_EvT_SA_T0_", + // "void std::__merge_sort_with_buffer<__gnu_cxx::__normal_iterator>>, llvm::BranchFolder::MergePotentialsElt*>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, llvm::BranchFolder::MergePotentialsElt*)"}, + // got error + + + // {"_ZSt16__merge_adaptiveIN9__gnu_cxx17__normal_iteratorIPN4llvm12BranchFolder18MergePotentialsEltESt6vectorIS4_SaIS4_EEEElS5_EvT_SA_SA_T0_SB_T1_SB_", + // "void std::__merge_adaptive<__gnu_cxx::__normal_iterator>>, long, llvm::BranchFolder::MergePotentialsElt*>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, long, long, llvm::BranchFolder::MergePotentialsElt*, long)"}, + // got error + + + // {"_ZSt5mergeIPN4llvm12BranchFolder18MergePotentialsEltEN9__gnu_cxx17__normal_iteratorIS3_St6vectorIS2_SaIS2_EEEES9_ET1_T_SB_T0_SC_SA_", + // "__gnu_cxx::__normal_iterator>> std::merge>>, __gnu_cxx::__normal_iterator>>>(llvm::BranchFolder::MergePotentialsElt*, llvm::BranchFolder::MergePotentialsElt*, __gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>)"}, + // got error + + + // {"_ZSt16__merge_backwardIN9__gnu_cxx17__normal_iteratorIPN4llvm12BranchFolder18MergePotentialsEltESt6vectorIS4_SaIS4_EEEES5_S9_ET1_T_SB_T0_SC_SA_", + // "__gnu_cxx::__normal_iterator>> std::__merge_backward<__gnu_cxx::__normal_iterator>>, llvm::BranchFolder::MergePotentialsElt*, __gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, llvm::BranchFolder::MergePotentialsElt*, llvm::BranchFolder::MergePotentialsElt*, __gnu_cxx::__normal_iterator>>)"}, + // got error + + + // {"_ZSt17__rotate_adaptiveIN9__gnu_cxx17__normal_iteratorIPN4llvm12BranchFolder18MergePotentialsEltESt6vectorIS4_SaIS4_EEEES5_lET_SA_SA_SA_T1_SB_T0_SB_", + // "__gnu_cxx::__normal_iterator>> std::__rotate_adaptive<__gnu_cxx::__normal_iterator>>, llvm::BranchFolder::MergePotentialsElt*, long>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, long, long, llvm::BranchFolder::MergePotentialsElt*, long)"}, + // got error + + + // {"_ZSt8__rotateIN9__gnu_cxx17__normal_iteratorIPN4llvm12BranchFolder18MergePotentialsEltESt6vectorIS4_SaIS4_EEEEEvT_SA_SA_St26random_access_iterator_tag", + // "void std::__rotate<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, std::random_access_iterator_tag)"}, + // got error + + + // {"_ZSt5mergeIPN4llvm12BranchFolder18MergePotentialsEltES3_N9__gnu_cxx17__normal_iteratorIS3_St6vectorIS2_SaIS2_EEEEET1_T_SB_T0_SC_SA_", + // "__gnu_cxx::__normal_iterator>> std::merge>>>(llvm::BranchFolder::MergePotentialsElt*, llvm::BranchFolder::MergePotentialsElt*, llvm::BranchFolder::MergePotentialsElt*, llvm::BranchFolder::MergePotentialsElt*, __gnu_cxx::__normal_iterator>>)"}, + // got error + + + // {"_ZSt5mergeIN9__gnu_cxx17__normal_iteratorIPN4llvm12BranchFolder18MergePotentialsEltESt6vectorIS4_SaIS4_EEEES9_S5_ET1_T_SB_T0_SC_SA_", + // "llvm::BranchFolder::MergePotentialsElt* std::merge<__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, llvm::BranchFolder::MergePotentialsElt*>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, llvm::BranchFolder::MergePotentialsElt*)"}, + // got error + + + // {"_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPN4llvm12BranchFolder18MergePotentialsEltESt6vectorIS4_SaIS4_EEEEEvT_SA_", + // "void std::__insertion_sort<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>)"}, + // got error + + + // {"_ZSt22__merge_without_bufferIN9__gnu_cxx17__normal_iteratorIPN4llvm12BranchFolder18MergePotentialsEltESt6vectorIS4_SaIS4_EEEElEvT_SA_SA_T0_SB_", + // "void std::__merge_without_buffer<__gnu_cxx::__normal_iterator>>, long>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, long, long)"}, + // got error + + {"_ZNSt6vectorIN4llvm12BranchFolder11SameTailEltESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::BranchFolder::SameTailElt const&)"}, + {"_ZN4llvm35initializeCalculateSpillWeightsPassERNS_12PassRegistryE", "llvm::initializeCalculateSpillWeightsPass(llvm::PassRegistry&)"}, + {"_ZNK4llvm21CalculateSpillWeights16getAnalysisUsageERNS_13AnalysisUsageE", "llvm::CalculateSpillWeights::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN4llvm21CalculateSpillWeights20runOnMachineFunctionERNS_15MachineFunctionE", "llvm::CalculateSpillWeights::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN4llvm14VirtRegAuxInfo22CalculateWeightAndHintERNS_12LiveIntervalE", "llvm::VirtRegAuxInfo::CalculateWeightAndHint(llvm::LiveInterval&)"}, + {"_ZN4llvm14VirtRegAuxInfo17CalculateRegClassEj", "llvm::VirtRegAuxInfo::CalculateRegClass(unsigned int)"}, + {"_ZN4llvm21CalculateSpillWeightsD1Ev", "llvm::CalculateSpillWeights::~CalculateSpillWeights()"}, + {"_ZN4llvm21CalculateSpillWeightsD0Ev", "llvm::CalculateSpillWeights::~CalculateSpillWeights()"}, + {"_ZN4llvm8DenseMapIjfNS_12DenseMapInfoIjEENS1_IfEEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm8DenseMapIjfNS_12DenseMapInfoIjEENS1_IfEEE16InsertIntoBucketERKjRKfPSt4pairIjfE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(unsigned int const&, float const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIjfNS_12DenseMapInfoIjEENS1_IfEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm15callDefaultCtorINS_21CalculateSpillWeightsEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor()"}, + + // {"_ZN4llvm7CCStateC1ENS_11CallingConv2IDEbRKNS_13TargetMachineERNS_11SmallVectorINS_11CCValAssignELj16EEERNS_11LLVMContextE", + // "llvm::CCState::CCState(llvm::CallingConv::ID, bool, llvm::TargetMachine const&, llvm::SmallVector&, llvm::LLVMContext&)"}, + // "llvm::CCState::CCState(llvm::CallingConv::ID, bool, llvm::TargetMachine const&, llvm::SmallVector&, llvm::LLVMContext&)" was returned + + + // {"_ZN4llvm7CCStateC2ENS_11CallingConv2IDEbRKNS_13TargetMachineERNS_11SmallVectorINS_11CCValAssignELj16EEERNS_11LLVMContextE", + // "llvm::CCState::CCState(llvm::CallingConv::ID, bool, llvm::TargetMachine const&, llvm::SmallVector&, llvm::LLVMContext&)"}, + // "llvm::CCState::CCState(llvm::CallingConv::ID, bool, llvm::TargetMachine const&, llvm::SmallVector&, llvm::LLVMContext&)" was returned + + {"_ZN4llvm7CCState11HandleByValEjNS_3MVTES1_NS_11CCValAssign7LocInfoEiiNS_3ISD10ArgFlagsTyE", "llvm::CCState::HandleByVal(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, int, int, llvm::ISD::ArgFlagsTy)"}, + {"_ZN4llvm7CCState13MarkAllocatedEj", "llvm::CCState::MarkAllocated(unsigned int)"}, + {"_ZN4llvm7CCState22AnalyzeFormalArgumentsERKNS_15SmallVectorImplINS_3ISD8InputArgEEEPFbjNS_3MVTES7_NS_11CCValAssign7LocInfoENS2_10ArgFlagsTyERS0_E", "llvm::CCState::AnalyzeFormalArguments(llvm::SmallVectorImpl const&, bool (*)(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&))"}, + {"_ZN4llvm7CCState11CheckReturnERKNS_15SmallVectorImplINS_3ISD9OutputArgEEEPFbjNS_3MVTES7_NS_11CCValAssign7LocInfoENS2_10ArgFlagsTyERS0_E", "llvm::CCState::CheckReturn(llvm::SmallVectorImpl const&, bool (*)(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&))"}, + {"_ZN4llvm7CCState13AnalyzeReturnERKNS_15SmallVectorImplINS_3ISD9OutputArgEEEPFbjNS_3MVTES7_NS_11CCValAssign7LocInfoENS2_10ArgFlagsTyERS0_E", "llvm::CCState::AnalyzeReturn(llvm::SmallVectorImpl const&, bool (*)(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&))"}, + {"_ZN4llvm7CCState19AnalyzeCallOperandsERKNS_15SmallVectorImplINS_3ISD9OutputArgEEEPFbjNS_3MVTES7_NS_11CCValAssign7LocInfoENS2_10ArgFlagsTyERS0_E", "llvm::CCState::AnalyzeCallOperands(llvm::SmallVectorImpl const&, bool (*)(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&))"}, + {"_ZN4llvm7CCState19AnalyzeCallOperandsERNS_15SmallVectorImplINS_3MVTEEERNS1_INS_3ISD10ArgFlagsTyEEEPFbjS2_S2_NS_11CCValAssign7LocInfoES6_RS0_E", "llvm::CCState::AnalyzeCallOperands(llvm::SmallVectorImpl&, llvm::SmallVectorImpl&, bool (*)(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&))"}, + {"_ZN4llvm7CCState17AnalyzeCallResultERKNS_15SmallVectorImplINS_3ISD8InputArgEEEPFbjNS_3MVTES7_NS_11CCValAssign7LocInfoENS2_10ArgFlagsTyERS0_E", "llvm::CCState::AnalyzeCallResult(llvm::SmallVectorImpl const&, bool (*)(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&))"}, + {"_ZN4llvm7CCState17AnalyzeCallResultENS_3MVTEPFbjS1_S1_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERS0_E", "llvm::CCState::AnalyzeCallResult(llvm::MVT, bool (*)(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&))"}, + {"_ZN4llvm26createCodePlacementOptPassEv", "llvm::createCodePlacementOptPass()"}, + {"_ZN12_GLOBAL__N_116CodePlacementOptD1Ev", "(anonymous namespace)::CodePlacementOpt::~CodePlacementOpt()"}, + {"_ZN12_GLOBAL__N_116CodePlacementOptD0Ev", "(anonymous namespace)::CodePlacementOpt::~CodePlacementOpt()"}, + {"_ZNK12_GLOBAL__N_116CodePlacementOpt11getPassNameEv", "(anonymous namespace)::CodePlacementOpt::getPassName() const"}, + {"_ZNK12_GLOBAL__N_116CodePlacementOpt16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::CodePlacementOpt::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_116CodePlacementOpt20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::CodePlacementOpt::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN12_GLOBAL__N_116CodePlacementOpt9AlignLoopERN4llvm15MachineFunctionEPNS1_11MachineLoopEj", "(anonymous namespace)::CodePlacementOpt::AlignLoop(llvm::MachineFunction&, llvm::MachineLoop*, unsigned int)"}, + {"_ZN12_GLOBAL__N_116CodePlacementOpt32OptimizeIntraLoopEdgesInLoopNestERN4llvm15MachineFunctionEPNS1_11MachineLoopE", "(anonymous namespace)::CodePlacementOpt::OptimizeIntraLoopEdgesInLoopNest(llvm::MachineFunction&, llvm::MachineLoop*)"}, + {"_ZN12_GLOBAL__N_116CodePlacementOpt23HasAnalyzableTerminatorEPN4llvm17MachineBasicBlockE", "(anonymous namespace)::CodePlacementOpt::HasAnalyzableTerminator(llvm::MachineBasicBlock*)"}, + {"_ZN4llvm22CriticalAntiDepBreakerC1ERNS_15MachineFunctionE", "llvm::CriticalAntiDepBreaker::CriticalAntiDepBreaker(llvm::MachineFunction&)"}, + {"_ZN4llvm22CriticalAntiDepBreakerC2ERNS_15MachineFunctionE", "llvm::CriticalAntiDepBreaker::CriticalAntiDepBreaker(llvm::MachineFunction&)"}, + {"_ZN4llvm22CriticalAntiDepBreakerD0Ev", "llvm::CriticalAntiDepBreaker::~CriticalAntiDepBreaker()"}, + {"_ZN4llvm22CriticalAntiDepBreakerD1Ev", "llvm::CriticalAntiDepBreaker::~CriticalAntiDepBreaker()"}, + {"_ZN4llvm22CriticalAntiDepBreakerD2Ev", "llvm::CriticalAntiDepBreaker::~CriticalAntiDepBreaker()"}, + {"_ZN4llvm22CriticalAntiDepBreaker10StartBlockEPNS_17MachineBasicBlockE", "llvm::CriticalAntiDepBreaker::StartBlock(llvm::MachineBasicBlock*)"}, + {"_ZN4llvm22CriticalAntiDepBreaker11FinishBlockEv", "llvm::CriticalAntiDepBreaker::FinishBlock()"}, + {"_ZN4llvm22CriticalAntiDepBreaker7ObserveEPNS_12MachineInstrEjj", "llvm::CriticalAntiDepBreaker::Observe(llvm::MachineInstr*, unsigned int, unsigned int)"}, + {"_ZN4llvm22CriticalAntiDepBreaker18PrescanInstructionEPNS_12MachineInstrE", "llvm::CriticalAntiDepBreaker::PrescanInstruction(llvm::MachineInstr*)"}, + {"_ZN4llvm22CriticalAntiDepBreaker15ScanInstructionEPNS_12MachineInstrEj", "llvm::CriticalAntiDepBreaker::ScanInstruction(llvm::MachineInstr*, unsigned int)"}, + {"_ZN4llvm22CriticalAntiDepBreaker23isNewRegClobberedByRefsESt23_Rb_tree_const_iteratorISt4pairIKjPNS_14MachineOperandEEES7_j", "llvm::CriticalAntiDepBreaker::isNewRegClobberedByRefs(std::_Rb_tree_const_iterator>, std::_Rb_tree_const_iterator>, unsigned int)"}, + {"_ZN4llvm22CriticalAntiDepBreaker24findSuitableFreeRegisterESt23_Rb_tree_const_iteratorISt4pairIKjPNS_14MachineOperandEEES7_jjPKNS_19TargetRegisterClassE", "llvm::CriticalAntiDepBreaker::findSuitableFreeRegister(std::_Rb_tree_const_iterator>, std::_Rb_tree_const_iterator>, unsigned int, unsigned int, llvm::TargetRegisterClass const*)"}, + {"_ZN4llvm22CriticalAntiDepBreaker21BreakAntiDependenciesERKSt6vectorINS_5SUnitESaIS2_EENS_14ilist_iteratorINS_12MachineInstrEEES9_j", "llvm::CriticalAntiDepBreaker::BreakAntiDependencies(std::vector> const&, llvm::ilist_iterator, llvm::ilist_iterator, unsigned int)"}, + {"_ZN4llvm8DenseMapIPNS_12MachineInstrEPKNS_5SUnitENS_12DenseMapInfoIS2_EENS6_IS5_EEE16InsertIntoBucketERKS2_RKS5_PSt4pairIS2_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::MachineInstr* const&, llvm::SUnit const* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_12MachineInstrEPKNS_5SUnitENS_12DenseMapInfoIS2_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNSt8_Rb_treeIjSt4pairIKjPN4llvm14MachineOperandEESt10_Select1stIS5_ESt4lessIjESaIS5_EE5eraseESt17_Rb_tree_iteratorIS5_ESD_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::erase(std::_Rb_tree_iterator>, std::_Rb_tree_iterator>)"}, + {"_ZNSt8_Rb_treeIjSt4pairIKjPN4llvm14MachineOperandEESt10_Select1stIS5_ESt4lessIjESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZN4llvm40initializeDeadMachineInstructionElimPassERNS_12PassRegistryE", "llvm::initializeDeadMachineInstructionElimPass(llvm::PassRegistry&)"}, + {"_ZN4llvm36createDeadMachineInstructionElimPassEv", "llvm::createDeadMachineInstructionElimPass()"}, + {"_ZN12_GLOBAL__N_126DeadMachineInstructionElimD1Ev", "(anonymous namespace)::DeadMachineInstructionElim::~DeadMachineInstructionElim()"}, + {"_ZN12_GLOBAL__N_126DeadMachineInstructionElimD0Ev", "(anonymous namespace)::DeadMachineInstructionElim::~DeadMachineInstructionElim()"}, + {"_ZN12_GLOBAL__N_126DeadMachineInstructionElim20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::DeadMachineInstructionElim::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_126DeadMachineInstructionElimEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::DeadMachineInstructionElim>()"}, + {"_ZN4llvm17createDwarfEHPassEPKNS_13TargetMachineE", "llvm::createDwarfEHPass(llvm::TargetMachine const*)"}, + {"_ZN12_GLOBAL__N_114DwarfEHPrepareD1Ev", "(anonymous namespace)::DwarfEHPrepare::~DwarfEHPrepare()"}, + {"_ZN12_GLOBAL__N_114DwarfEHPrepareD0Ev", "(anonymous namespace)::DwarfEHPrepare::~DwarfEHPrepare()"}, + {"_ZNK12_GLOBAL__N_114DwarfEHPrepare11getPassNameEv", "(anonymous namespace)::DwarfEHPrepare::getPassName() const"}, + {"_ZNK12_GLOBAL__N_114DwarfEHPrepare16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::DwarfEHPrepare::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_114DwarfEHPrepare13runOnFunctionERN4llvm8FunctionE", "(anonymous namespace)::DwarfEHPrepare::runOnFunction(llvm::Function&)"}, + + // {"_ZN12_GLOBAL__N_114DwarfEHPrepare16CleanupSelectorsERN4llvm11SmallPtrSetIPNS1_13IntrinsicInstELj32EEE", + // "(anonymous namespace)::DwarfEHPrepare::CleanupSelectors(llvm::SmallPtrSet&)"}, + // "(anonymous namespace)::DwarfEHPrepare::CleanupSelectors(llvm::SmallPtrSet&)" was returned + + + // {"_ZN12_GLOBAL__N_114DwarfEHPrepare19FindSelectorAndURoREPN4llvm11InstructionERbRNS1_11SmallPtrSetIPNS1_13IntrinsicInstELj8EEE", + // "(anonymous namespace)::DwarfEHPrepare::FindSelectorAndURoR(llvm::Instruction*, bool&, llvm::SmallPtrSet&)"}, + // "(anonymous namespace)::DwarfEHPrepare::FindSelectorAndURoR(llvm::Instruction*, bool&, llvm::SmallPtrSet&)" was returned + + {"_ZN12_GLOBAL__N_114DwarfEHPrepare24CreateExceptionValueCallEPN4llvm10BasicBlockE", "(anonymous namespace)::DwarfEHPrepare::CreateExceptionValueCall(llvm::BasicBlock*)"}, + + // {"_ZN4llvm17DominatorTreeBaseINS_10BasicBlockEE5SplitINS_7InverseIPS1_EENS_11GraphTraitsIS6_EEEEvRNS0_INT0_8NodeTypeEEEPSA_", + // "void llvm::DominatorTreeBase::Split, llvm::GraphTraits>>(llvm::DominatorTreeBase>::NodeType>&, llvm::GraphTraits>::NodeType*)"}, + // "void llvm::DominatorTreeBase::Split, llvm::GraphTraits>>(llvm::DominatorTreeBase&, llvm::DominatorTreeBase*)" was returned + + + // {"_ZN4llvm17DominatorTreeBaseINS_10BasicBlockEE5SplitIPS1_NS_11GraphTraitsIS4_EEEEvRNS0_INT0_8NodeTypeEEEPS8_", + // "void llvm::DominatorTreeBase::Split>(llvm::DominatorTreeBase::NodeType>&, llvm::GraphTraits::NodeType*)"}, + // "void llvm::DominatorTreeBase::Split>(llvm::DominatorTreeBase&, llvm::DominatorTreeBase*)" was returned + + {"_ZNSt6vectorIPN4llvm15DomTreeNodeBaseINS0_10BasicBlockEEESaIS4_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS4_S6_EERKS4_", "std::vector*, std::allocator*>>::_M_insert_aux(__gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>, llvm::DomTreeNodeBase* const&)"}, + + // {"_ZSt6__findIN9__gnu_cxx17__normal_iteratorIPPN4llvm15DomTreeNodeBaseINS2_10BasicBlockEEESt6vectorIS6_SaIS6_EEEES6_ET_SC_SC_RKT0_St26random_access_iterator_tag", + // "__gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>> std::__find<__gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>, llvm::DomTreeNodeBase*>(__gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>, __gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>, llvm::DomTreeNodeBase* const&, std::random_access_iterator_tag)"}, + // got error + + {"_ZN4llvm8DenseMapIPNS_10BasicBlockEPNS_15DomTreeNodeBaseIS1_EENS_12DenseMapInfoIS2_EENS6_IS5_EEE16InsertIntoBucketERKS2_RKS5_PSt4pairIS2_S5_E", "llvm::DenseMap*, llvm::DenseMapInfo, llvm::DenseMapInfo*>>::InsertIntoBucket(llvm::BasicBlock* const&, llvm::DomTreeNodeBase* const&, std::pair*>*)"}, + {"_ZN4llvm8DenseMapIPNS_10BasicBlockEPNS_15DomTreeNodeBaseIS1_EENS_12DenseMapInfoIS2_EENS6_IS5_EEE4growEj", "llvm::DenseMap*, llvm::DenseMapInfo, llvm::DenseMapInfo*>>::grow(unsigned int)"}, + {"_ZNSt6vectorIPN4llvm10BasicBlockESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::BasicBlock* const&)"}, + {"_ZN4llvm25initializeEdgeBundlesPassERNS_12PassRegistryE", "llvm::initializeEdgeBundlesPass(llvm::PassRegistry&)"}, + {"_ZNK4llvm11EdgeBundles16getAnalysisUsageERNS_13AnalysisUsageE", "llvm::EdgeBundles::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN4llvm11EdgeBundles20runOnMachineFunctionERNS_15MachineFunctionE", "llvm::EdgeBundles::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZNK4llvm11EdgeBundles4viewEv", "llvm::EdgeBundles::view() const"}, + {"_ZN4llvm10WriteGraphERNS_11raw_ostreamERKNS_11EdgeBundlesEbRKSs", "llvm::WriteGraph(llvm::raw_ostream&, llvm::EdgeBundles const&, bool, std::string const&)"}, + {"_ZN4llvm11EdgeBundlesD1Ev", "llvm::EdgeBundles::~EdgeBundles()"}, + {"_ZN4llvm11EdgeBundlesD0Ev", "llvm::EdgeBundles::~EdgeBundles()"}, + {"_ZN4llvm10WriteGraphINS_11EdgeBundlesEEENS_3sys4PathERKT_RKSsbS8_", "llvm::sys::Path llvm::WriteGraph(llvm::EdgeBundles const&, std::string const&, bool, std::string const&)"}, + {"_ZN4llvm15callDefaultCtorINS_11EdgeBundlesEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor()"}, + {"_ZN4llvm31initializeExpandISelPseudosPassERNS_12PassRegistryE", "llvm::initializeExpandISelPseudosPass(llvm::PassRegistry&)"}, + {"_ZN4llvm27createExpandISelPseudosPassEv", "llvm::createExpandISelPseudosPass()"}, + {"_ZN12_GLOBAL__N_117ExpandISelPseudosD1Ev", "(anonymous namespace)::ExpandISelPseudos::~ExpandISelPseudos()"}, + {"_ZN12_GLOBAL__N_117ExpandISelPseudosD0Ev", "(anonymous namespace)::ExpandISelPseudos::~ExpandISelPseudos()"}, + {"_ZNK12_GLOBAL__N_117ExpandISelPseudos11getPassNameEv", "(anonymous namespace)::ExpandISelPseudos::getPassName() const"}, + {"_ZNK12_GLOBAL__N_117ExpandISelPseudos16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::ExpandISelPseudos::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_117ExpandISelPseudos20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::ExpandISelPseudos::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_117ExpandISelPseudosEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::ExpandISelPseudos>()"}, + {"_ZN4llvm26initializeGCModuleInfoPassERNS_12PassRegistryE", "llvm::initializeGCModuleInfoPass(llvm::PassRegistry&)"}, + {"_ZN4llvm14GCFunctionInfoC1ERKNS_8FunctionERNS_10GCStrategyE", "llvm::GCFunctionInfo::GCFunctionInfo(llvm::Function const&, llvm::GCStrategy&)"}, + {"_ZN4llvm14GCFunctionInfoC2ERKNS_8FunctionERNS_10GCStrategyE", "llvm::GCFunctionInfo::GCFunctionInfo(llvm::Function const&, llvm::GCStrategy&)"}, + {"_ZN4llvm14GCFunctionInfoD1Ev", "llvm::GCFunctionInfo::~GCFunctionInfo()"}, + {"_ZN4llvm14GCFunctionInfoD2Ev", "llvm::GCFunctionInfo::~GCFunctionInfo()"}, + {"_ZN4llvm12GCModuleInfoC1Ev", "llvm::GCModuleInfo::GCModuleInfo()"}, + {"_ZN4llvm12GCModuleInfoC2Ev", "llvm::GCModuleInfo::GCModuleInfo()"}, + {"_ZN4llvm12GCModuleInfoD0Ev", "llvm::GCModuleInfo::~GCModuleInfo()"}, + {"_ZN4llvm12GCModuleInfoD1Ev", "llvm::GCModuleInfo::~GCModuleInfo()"}, + {"_ZN4llvm12GCModuleInfoD2Ev", "llvm::GCModuleInfo::~GCModuleInfo()"}, + {"_ZN4llvm12GCModuleInfo5clearEv", "llvm::GCModuleInfo::clear()"}, + {"_ZN4llvm12GCModuleInfo19getOrCreateStrategyEPKNS_6ModuleERKSs", "llvm::GCModuleInfo::getOrCreateStrategy(llvm::Module const*, std::string const&)"}, + {"_ZN4llvm12GCModuleInfo15getFunctionInfoERKNS_8FunctionE", "llvm::GCModuleInfo::getFunctionInfo(llvm::Function const&)"}, + {"_ZN4llvm19createGCInfoPrinterERNS_11raw_ostreamE", "llvm::createGCInfoPrinter(llvm::raw_ostream&)"}, + {"_ZN4llvm19createGCInfoDeleterEv", "llvm::createGCInfoDeleter()"}, + {"_ZN12_GLOBAL__N_17DeleterD1Ev", "(anonymous namespace)::Deleter::~Deleter()"}, + {"_ZN12_GLOBAL__N_17DeleterD0Ev", "(anonymous namespace)::Deleter::~Deleter()"}, + {"_ZNK12_GLOBAL__N_17Deleter11getPassNameEv", "(anonymous namespace)::Deleter::getPassName() const"}, + {"_ZNK12_GLOBAL__N_17Deleter16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::Deleter::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_17Deleter13runOnFunctionERN4llvm8FunctionE", "(anonymous namespace)::Deleter::runOnFunction(llvm::Function&)"}, + {"_ZN12_GLOBAL__N_17Deleter14doFinalizationERN4llvm6ModuleE", "(anonymous namespace)::Deleter::doFinalization(llvm::Module&)"}, + {"_ZN12_GLOBAL__N_17PrinterD1Ev", "(anonymous namespace)::Printer::~Printer()"}, + {"_ZN12_GLOBAL__N_17PrinterD0Ev", "(anonymous namespace)::Printer::~Printer()"}, + {"_ZNK12_GLOBAL__N_17Printer11getPassNameEv", "(anonymous namespace)::Printer::getPassName() const"}, + {"_ZNK12_GLOBAL__N_17Printer16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::Printer::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_17Printer13runOnFunctionERN4llvm8FunctionE", "(anonymous namespace)::Printer::runOnFunction(llvm::Function&)"}, + {"_ZN4llvm8DenseMapIPKNS_8FunctionEPNS_14GCFunctionInfoENS_12DenseMapInfoIS3_EENS6_IS5_EEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm8DenseMapIPKNS_8FunctionEPNS_14GCFunctionInfoENS_12DenseMapInfoIS3_EENS6_IS5_EEE16InsertIntoBucketERKS3_RKS5_PSt4pairIS3_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::Function const* const&, llvm::GCFunctionInfo* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_8FunctionEPNS_14GCFunctionInfoENS_12DenseMapInfoIS3_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNSt6vectorIPN4llvm10GCStrategyESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::GCStrategy* const&)"}, + {"_ZN4llvm9StringMapIPNS_10GCStrategyENS_15MallocAllocatorEE16GetOrCreateValueIS2_EERNS_14StringMapEntryIS2_EENS_9StringRefET_", "llvm::StringMapEntry& llvm::StringMap::GetOrCreateValue(llvm::StringRef, llvm::GCStrategy*)"}, + {"_ZN4llvm15callDefaultCtorINS_12GCModuleInfoEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor()"}, + {"_ZN4llvm10GCStrategyC1Ev", "llvm::GCStrategy::GCStrategy()"}, + {"_ZN4llvm10GCStrategyC2Ev", "llvm::GCStrategy::GCStrategy()"}, + {"_ZN4llvm10GCStrategyD0Ev", "llvm::GCStrategy::~GCStrategy()"}, + {"_ZN4llvm10GCStrategyD1Ev", "llvm::GCStrategy::~GCStrategy()"}, + {"_ZN4llvm10GCStrategyD2Ev", "llvm::GCStrategy::~GCStrategy()"}, + {"_ZN4llvm10GCStrategy24initializeCustomLoweringERNS_6ModuleE", "llvm::GCStrategy::initializeCustomLowering(llvm::Module&)"}, + {"_ZN4llvm10GCStrategy21performCustomLoweringERNS_8FunctionE", "llvm::GCStrategy::performCustomLowering(llvm::Function&)"}, + {"_ZN4llvm10GCStrategy18insertFunctionInfoERKNS_8FunctionE", "llvm::GCStrategy::insertFunctionInfo(llvm::Function const&)"}, + {"_ZN4llvm29initializeLowerIntrinsicsPassERNS_12PassRegistryE", "llvm::initializeLowerIntrinsicsPass(llvm::PassRegistry&)"}, + {"_ZN4llvm20createGCLoweringPassEv", "llvm::createGCLoweringPass()"}, + {"_ZN4llvm31createGCMachineCodeAnalysisPassEv", "llvm::createGCMachineCodeAnalysisPass()"}, + {"_ZN12_GLOBAL__N_119MachineCodeAnalysisD1Ev", "(anonymous namespace)::MachineCodeAnalysis::~MachineCodeAnalysis()"}, + {"_ZN12_GLOBAL__N_119MachineCodeAnalysisD0Ev", "(anonymous namespace)::MachineCodeAnalysis::~MachineCodeAnalysis()"}, + {"_ZNK12_GLOBAL__N_119MachineCodeAnalysis11getPassNameEv", "(anonymous namespace)::MachineCodeAnalysis::getPassName() const"}, + {"_ZNK12_GLOBAL__N_119MachineCodeAnalysis16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::MachineCodeAnalysis::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_119MachineCodeAnalysis20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::MachineCodeAnalysis::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZNK12_GLOBAL__N_119MachineCodeAnalysis11InsertLabelERN4llvm17MachineBasicBlockENS1_14ilist_iteratorINS1_12MachineInstrEEENS1_8DebugLocE", "(anonymous namespace)::MachineCodeAnalysis::InsertLabel(llvm::MachineBasicBlock&, llvm::ilist_iterator, llvm::DebugLoc) const"}, + {"_ZN12_GLOBAL__N_115LowerIntrinsicsD1Ev", "(anonymous namespace)::LowerIntrinsics::~LowerIntrinsics()"}, + {"_ZN12_GLOBAL__N_115LowerIntrinsicsD0Ev", "(anonymous namespace)::LowerIntrinsics::~LowerIntrinsics()"}, + {"_ZNK12_GLOBAL__N_115LowerIntrinsics11getPassNameEv", "(anonymous namespace)::LowerIntrinsics::getPassName() const"}, + {"_ZNK12_GLOBAL__N_115LowerIntrinsics16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::LowerIntrinsics::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_115LowerIntrinsics16doInitializationERN4llvm6ModuleE", "(anonymous namespace)::LowerIntrinsics::doInitialization(llvm::Module&)"}, + {"_ZN12_GLOBAL__N_115LowerIntrinsics13runOnFunctionERN4llvm8FunctionE", "(anonymous namespace)::LowerIntrinsics::runOnFunction(llvm::Function&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_115LowerIntrinsicsEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::LowerIntrinsics>()"}, + {"_ZNSt6vectorIPN4llvm14GCFunctionInfoESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::GCFunctionInfo* const&)"}, + {"_ZNSt6vectorIN4llvm7GCPointESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::GCPoint const&)"}, + + // {"_ZN4llvm17DominatorTreeBaseINS_10BasicBlockEE11recalculateINS_8FunctionEEEvRT_", + // "void llvm::DominatorTreeBase::recalculate(llvm::Function&)"}, + // "void llvm::DominatorTreeBase::recalculate(llvm::BasicBlock&)" was returned + + {"_ZN4llvm8DenseMapIPNS_10BasicBlockES2_NS_12DenseMapInfoIS2_EES4_E16InsertIntoBucketERKS2_S7_PSt4pairIS2_S2_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::BasicBlock* const&, llvm::BasicBlock* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_10BasicBlockES2_NS_12DenseMapInfoIS2_EES4_E4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPNS_10BasicBlockES2_NS_12DenseMapInfoIS2_EES4_E16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm8DenseMapIPNS_10BasicBlockEPNS_15DomTreeNodeBaseIS1_EENS_12DenseMapInfoIS2_EENS6_IS5_EEE16shrink_and_clearEv", "llvm::DenseMap*, llvm::DenseMapInfo, llvm::DenseMapInfo*>>::shrink_and_clear()"}, + {"_ZN4llvm25initializeIfConverterPassERNS_12PassRegistryE", "llvm::initializeIfConverterPass(llvm::PassRegistry&)"}, + {"_ZN4llvm21createIfConverterPassEv", "llvm::createIfConverterPass()"}, + {"_ZN12_GLOBAL__N_111IfConverterD1Ev", "(anonymous namespace)::IfConverter::~IfConverter()"}, + {"_ZN12_GLOBAL__N_111IfConverterD0Ev", "(anonymous namespace)::IfConverter::~IfConverter()"}, + {"_ZNK12_GLOBAL__N_111IfConverter11getPassNameEv", "(anonymous namespace)::IfConverter::getPassName() const"}, + {"_ZNK12_GLOBAL__N_111IfConverter16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::IfConverter::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_111IfConverter20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::IfConverter::runOnMachineFunction(llvm::MachineFunction&)"}, + + // {"_ZN12_GLOBAL__N_111IfConverter14PredicateBlockERNS0_6BBInfoEN4llvm14ilist_iteratorINS3_12MachineInstrEEERNS3_15SmallVectorImplINS3_14MachineOperandEEERNS3_8SmallSetIjLj4EEE", + // "(anonymous namespace)::IfConverter::PredicateBlock((anonymous namespace)::IfConverter::BBInfo&, llvm::ilist_iterator, llvm::SmallVectorImpl&, llvm::SmallSet&)"}, + // "(anonymous namespace)::IfConverter::PredicateBlock((anonymous namespace)::IfConverter::BBInfo&, llvm::ilist_iterator, llvm::SmallVectorImpl&, llvm::SmallSet&)" was returned + + {"_ZN12_GLOBAL__N_111IfConverter11MergeBlocksERNS0_6BBInfoES2_b", "(anonymous namespace)::IfConverter::MergeBlocks((anonymous namespace)::IfConverter::BBInfo&, (anonymous namespace)::IfConverter::BBInfo&, bool)"}, + {"_ZN12_GLOBAL__N_111IfConverter6BBInfoC1ERKS1_", "(anonymous namespace)::IfConverter::BBInfo::BBInfo((anonymous namespace)::IfConverter::BBInfo const&)"}, + {"_ZN12_GLOBAL__N_111IfConverter16RemoveExtraEdgesERNS0_6BBInfoE", "(anonymous namespace)::IfConverter::RemoveExtraEdges((anonymous namespace)::IfConverter::BBInfo&)"}, + + // {"_Z16UpdatePredRedefsPN4llvm12MachineInstrERNS_8SmallSetIjLj4EEEPKNS_18TargetRegisterInfoEb", + // "UpdatePredRedefs(llvm::MachineInstr*, llvm::SmallSet&, llvm::TargetRegisterInfo const*, bool)"}, + // "UpdatePredRedefs(llvm::MachineInstr*, llvm::SmallSet&, llvm::TargetRegisterInfo const*, bool)" was returned + + + // {"_ZN12_GLOBAL__N_111IfConverter21CopyAndPredicateBlockERNS0_6BBInfoES2_RN4llvm15SmallVectorImplINS3_14MachineOperandEEERNS3_8SmallSetIjLj4EEEb", + // "(anonymous namespace)::IfConverter::CopyAndPredicateBlock((anonymous namespace)::IfConverter::BBInfo&, (anonymous namespace)::IfConverter::BBInfo&, llvm::SmallVectorImpl&, llvm::SmallSet&, bool)"}, + // "(anonymous namespace)::IfConverter::CopyAndPredicateBlock((anonymous namespace)::IfConverter::BBInfo&, (anonymous namespace)::IfConverter::BBInfo&, llvm::SmallVectorImpl&, llvm::SmallSet&, bool)" was returned + + {"_ZN12_GLOBAL__N_111IfConverter12AnalyzeBlockEPN4llvm17MachineBasicBlockERSt6vectorIPNS0_10IfcvtTokenESaIS6_EE", "(anonymous namespace)::IfConverter::AnalyzeBlock(llvm::MachineBasicBlock*, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>&)"}, + + // {"_ZSt21__inplace_stable_sortIN9__gnu_cxx17__normal_iteratorIPPN12_GLOBAL__N_111IfConverter10IfcvtTokenESt6vectorIS5_SaIS5_EEEEPFbS5_S5_EEvT_SD_T0_", + // "void std::__inplace_stable_sort<__gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>, bool (*)((anonymous namespace)::IfConverter::IfcvtToken*, (anonymous namespace)::IfConverter::IfcvtToken*)>(__gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>, __gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>, bool (*)((anonymous namespace)::IfConverter::IfcvtToken*, (anonymous namespace)::IfConverter::IfcvtToken*))"}, + // got error + + + // {"_ZSt22__stable_sort_adaptiveIN9__gnu_cxx17__normal_iteratorIPPN12_GLOBAL__N_111IfConverter10IfcvtTokenESt6vectorIS5_SaIS5_EEEES6_lPFbS5_S5_EEvT_SD_T0_T1_T2_", + // "void std::__stable_sort_adaptive<__gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>, (anonymous namespace)::IfConverter::IfcvtToken**, long, bool (*)((anonymous namespace)::IfConverter::IfcvtToken*, (anonymous namespace)::IfConverter::IfcvtToken*)>(__gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>, __gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>, (anonymous namespace)::IfConverter::IfcvtToken**, long, bool (*)((anonymous namespace)::IfConverter::IfcvtToken*, (anonymous namespace)::IfConverter::IfcvtToken*))"}, + // got error + + + // {"_ZSt24__merge_sort_with_bufferIN9__gnu_cxx17__normal_iteratorIPPN12_GLOBAL__N_111IfConverter10IfcvtTokenESt6vectorIS5_SaIS5_EEEES6_PFbS5_S5_EEvT_SD_T0_T1_", + // "void std::__merge_sort_with_buffer<__gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>, (anonymous namespace)::IfConverter::IfcvtToken**, bool (*)((anonymous namespace)::IfConverter::IfcvtToken*, (anonymous namespace)::IfConverter::IfcvtToken*)>(__gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>, __gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>, (anonymous namespace)::IfConverter::IfcvtToken**, bool (*)((anonymous namespace)::IfConverter::IfcvtToken*, (anonymous namespace)::IfConverter::IfcvtToken*))"}, + // got error + + + // {"_ZSt16__merge_adaptiveIN9__gnu_cxx17__normal_iteratorIPPN12_GLOBAL__N_111IfConverter10IfcvtTokenESt6vectorIS5_SaIS5_EEEElS6_PFbS5_S5_EEvT_SD_SD_T0_SE_T1_SE_T2_", + // "void std::__merge_adaptive<__gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>, long, (anonymous namespace)::IfConverter::IfcvtToken**, bool (*)((anonymous namespace)::IfConverter::IfcvtToken*, (anonymous namespace)::IfConverter::IfcvtToken*)>(__gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>, __gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>, __gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>, long, long, (anonymous namespace)::IfConverter::IfcvtToken**, long, bool (*)((anonymous namespace)::IfConverter::IfcvtToken*, (anonymous namespace)::IfConverter::IfcvtToken*))"}, + // got error + + + // {"_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPPN12_GLOBAL__N_111IfConverter10IfcvtTokenESt6vectorIS5_SaIS5_EEEES5_PFbS5_S5_EET_SD_SD_RKT0_T1_", + // "__gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>> std::lower_bound<__gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>, (anonymous namespace)::IfConverter::IfcvtToken*, bool (*)((anonymous namespace)::IfConverter::IfcvtToken*, (anonymous namespace)::IfConverter::IfcvtToken*)>(__gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>, __gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>, (anonymous namespace)::IfConverter::IfcvtToken* const&, bool (*)((anonymous namespace)::IfConverter::IfcvtToken*, (anonymous namespace)::IfConverter::IfcvtToken*))"}, + // got error + + + // {"_ZSt11upper_boundIN9__gnu_cxx17__normal_iteratorIPPN12_GLOBAL__N_111IfConverter10IfcvtTokenESt6vectorIS5_SaIS5_EEEES5_PFbS5_S5_EET_SD_SD_RKT0_T1_", + // "__gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>> std::upper_bound<__gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>, (anonymous namespace)::IfConverter::IfcvtToken*, bool (*)((anonymous namespace)::IfConverter::IfcvtToken*, (anonymous namespace)::IfConverter::IfcvtToken*)>(__gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>, __gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>, (anonymous namespace)::IfConverter::IfcvtToken* const&, bool (*)((anonymous namespace)::IfConverter::IfcvtToken*, (anonymous namespace)::IfConverter::IfcvtToken*))"}, + // got error + + + // {"_ZSt6rotateIN9__gnu_cxx17__normal_iteratorIPPN12_GLOBAL__N_111IfConverter10IfcvtTokenESt6vectorIS5_SaIS5_EEEEEvT_SB_SB_", + // "void std::rotate<__gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>>(__gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>, __gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>, __gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>)"}, + // got error + + + // {"_ZSt5mergeIPPN12_GLOBAL__N_111IfConverter10IfcvtTokenES4_N9__gnu_cxx17__normal_iteratorIS4_St6vectorIS3_SaIS3_EEEEPFbS3_S3_EET1_T_SE_T0_SF_SD_T2_", + // "__gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>> std::merge<(anonymous namespace)::IfConverter::IfcvtToken**, (anonymous namespace)::IfConverter::IfcvtToken**, __gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>, bool (*)((anonymous namespace)::IfConverter::IfcvtToken*, (anonymous namespace)::IfConverter::IfcvtToken*)>((anonymous namespace)::IfConverter::IfcvtToken**, (anonymous namespace)::IfConverter::IfcvtToken**, (anonymous namespace)::IfConverter::IfcvtToken**, (anonymous namespace)::IfConverter::IfcvtToken**, __gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>, bool (*)((anonymous namespace)::IfConverter::IfcvtToken*, (anonymous namespace)::IfConverter::IfcvtToken*))"}, + // got error + + + // {"_ZSt5mergeIN9__gnu_cxx17__normal_iteratorIPPN12_GLOBAL__N_111IfConverter10IfcvtTokenESt6vectorIS5_SaIS5_EEEESA_S6_PFbS5_S5_EET1_T_SE_T0_SF_SD_T2_", + // "(anonymous namespace)::IfConverter::IfcvtToken** std::merge<__gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>, __gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>, (anonymous namespace)::IfConverter::IfcvtToken**, bool (*)((anonymous namespace)::IfConverter::IfcvtToken*, (anonymous namespace)::IfConverter::IfcvtToken*)>(__gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>, __gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>, __gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>, __gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>, (anonymous namespace)::IfConverter::IfcvtToken**, bool (*)((anonymous namespace)::IfConverter::IfcvtToken*, (anonymous namespace)::IfConverter::IfcvtToken*))"}, + // got error + + + // {"_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPPN12_GLOBAL__N_111IfConverter10IfcvtTokenESt6vectorIS5_SaIS5_EEEEPFbS5_S5_EEvT_SD_T0_", + // "void std::__insertion_sort<__gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>, bool (*)((anonymous namespace)::IfConverter::IfcvtToken*, (anonymous namespace)::IfConverter::IfcvtToken*)>(__gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>, __gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>, bool (*)((anonymous namespace)::IfConverter::IfcvtToken*, (anonymous namespace)::IfConverter::IfcvtToken*))"}, + // got error + + + // {"_ZSt22__merge_without_bufferIN9__gnu_cxx17__normal_iteratorIPPN12_GLOBAL__N_111IfConverter10IfcvtTokenESt6vectorIS5_SaIS5_EEEElPFbS5_S5_EEvT_SD_SD_T0_SE_T1_", + // "void std::__merge_without_buffer<__gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>, long, bool (*)((anonymous namespace)::IfConverter::IfcvtToken*, (anonymous namespace)::IfConverter::IfcvtToken*)>(__gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>, __gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>, __gnu_cxx::__normal_iterator<(anonymous namespace)::IfConverter::IfcvtToken**, std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>>, long, long, bool (*)((anonymous namespace)::IfConverter::IfcvtToken*, (anonymous namespace)::IfConverter::IfcvtToken*))"}, + // got error + + {"_ZN12_GLOBAL__N_111IfConverter19FeasibilityAnalysisERNS0_6BBInfoERN4llvm15SmallVectorImplINS3_14MachineOperandEEEbb", "(anonymous namespace)::IfConverter::FeasibilityAnalysis((anonymous namespace)::IfConverter::BBInfo&, llvm::SmallVectorImpl&, bool, bool)"}, + {"_ZNSt6vectorIPN12_GLOBAL__N_111IfConverter10IfcvtTokenESaIS3_EE9push_backERKS3_", "std::vector<(anonymous namespace)::IfConverter::IfcvtToken*, std::allocator<(anonymous namespace)::IfConverter::IfcvtToken*>>::push_back((anonymous namespace)::IfConverter::IfcvtToken* const&)"}, + {"_ZNK12_GLOBAL__N_111IfConverter13ValidTriangleERNS0_6BBInfoES2_bRjff", "(anonymous namespace)::IfConverter::ValidTriangle((anonymous namespace)::IfConverter::BBInfo&, (anonymous namespace)::IfConverter::BBInfo&, bool, unsigned int&, float, float) const"}, + + // {"_ZSt4fillIPN12_GLOBAL__N_111IfConverter6BBInfoES2_EvT_S4_RKT0_", + // "void std::fill<(anonymous namespace)::IfConverter::BBInfo*, (anonymous namespace)::IfConverter::BBInfo>((anonymous namespace)::IfConverter::BBInfo*, (anonymous namespace)::IfConverter::BBInfo*, (anonymous namespace)::IfConverter::BBInfo const&)"}, + // got error + + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_111IfConverterEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::IfConverter>()"}, + {"_ZN4llvm15SmallVectorImplINS_14MachineOperandEEaSERKS2_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + + // {"_ZN4llvm8SmallSetIjLj4EE5eraseERKj", + // "llvm::SmallSet::erase(unsigned int const&)"}, + // "llvm::SmallSet::erase(unsigned int const&)" was returned + + {"_ZNSt8_Rb_treeIjjSt9_IdentityIjESt4lessIjESaIjEE5eraseESt17_Rb_tree_iteratorIjES7_", "std::_Rb_tree, std::less, std::allocator>::erase(std::_Rb_tree_iterator, std::_Rb_tree_iterator)"}, + + // {"_ZN4llvm13idf_ext_beginIPNS_17MachineBasicBlockESt3setIS2_St4lessIS2_ESaIS2_EEEENS_16idf_ext_iteratorIT_T0_EERKS9_RSA_", + // "llvm::idf_ext_iterator, std::allocator>> llvm::idf_ext_begin, std::allocator>>(llvm::MachineBasicBlock* const&, std::set, std::allocator>&)"}, + // "llvm::idf_ext_iterator> llvm::idf_ext_begin, std::allocator>>(llvm::idf_ext_iterator> const&, llvm::idf_ext_iterator> const&)" was returned + + {"_ZNSt8_Rb_treeIPN4llvm17MachineBasicBlockES2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE8_M_eraseEPSt13_Rb_tree_nodeIS2_E", "std::_Rb_tree, std::less, std::allocator>::_M_erase(std::_Rb_tree_node*)"}, + {"_ZN4llvm11df_iteratorINS_7InverseIPNS_17MachineBasicBlockEEESt3setIS3_St4lessIS3_ESaIS3_EELb1ENS_11GraphTraitsIS4_EEE6toNextEv", "llvm::df_iterator, std::set, std::allocator>, true, llvm::GraphTraits>>::toNext()"}, + {"_ZNSt8_Rb_treeIPN4llvm17MachineBasicBlockES2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE16_M_insert_uniqueERKS2_", "std::_Rb_tree, std::less, std::allocator>::_M_insert_unique(llvm::MachineBasicBlock* const&)"}, + {"_ZN4llvm19createInlineSpillerERNS_19MachineFunctionPassERNS_15MachineFunctionERNS_10VirtRegMapE", "llvm::createInlineSpiller(llvm::MachineFunctionPass&, llvm::MachineFunction&, llvm::VirtRegMap&)"}, + {"_ZN12_GLOBAL__N_113InlineSpillerD1Ev", "(anonymous namespace)::InlineSpiller::~InlineSpiller()"}, + {"_ZN12_GLOBAL__N_113InlineSpillerD0Ev", "(anonymous namespace)::InlineSpiller::~InlineSpiller()"}, + {"_ZN12_GLOBAL__N_113InlineSpiller5spillEPN4llvm12LiveIntervalERNS1_15SmallVectorImplIS3_EERKS5_", "(anonymous namespace)::InlineSpiller::spill(llvm::LiveInterval*, llvm::SmallVectorImpl&, llvm::SmallVectorImpl const&)"}, + {"_ZN12_GLOBAL__N_113InlineSpiller17foldMemoryOperandEN4llvm14ilist_iteratorINS1_12MachineInstrEEERKNS1_15SmallVectorImplIjEEPS3_", "(anonymous namespace)::InlineSpiller::foldMemoryOperand(llvm::ilist_iterator, llvm::SmallVectorImpl const&, llvm::MachineInstr*)"}, + {"_ZN4llvm17IntrinsicLowering13AddPrototypesERNS_6ModuleE", "llvm::IntrinsicLowering::AddPrototypes(llvm::Module&)"}, + + // {"_Z20EnsureFunctionExistsIN4llvm14ilist_iteratorINS0_8ArgumentEEEEvRNS0_6ModuleEPKcT_S8_PKNS0_4TypeE", + // "void EnsureFunctionExists>(llvm::Module&, char const*, llvm::ilist_iterator, llvm::ilist_iterator, llvm::Type const*)"}, + // got error + + {"_Z23EnsureFPIntrinsicsExistRN4llvm6ModuleEPNS_8FunctionEPKcS5_S5_", "EnsureFPIntrinsicsExist(llvm::Module&, llvm::Function*, char const*, char const*, char const*)"}, + {"_ZN4llvm17IntrinsicLowering18LowerIntrinsicCallEPNS_8CallInstE", "llvm::IntrinsicLowering::LowerIntrinsicCall(llvm::CallInst*)"}, + + // {"_Z15ReplaceCallWithIPN4llvm3UseEEPNS0_8CallInstEPKcS4_T_S7_PKNS0_4TypeE", + // "llvm::CallInst* ReplaceCallWith(char const*, llvm::CallInst*, llvm::Use*, llvm::Use*, llvm::Type const*)"}, + // got error + + {"_Z10LowerCTPOPRN4llvm11LLVMContextEPNS_5ValueEPNS_11InstructionE", "LowerCTPOP(llvm::LLVMContext&, llvm::Value*, llvm::Instruction*)"}, + + // {"_Z15ReplaceCallWithIPPN4llvm5ValueEEPNS0_8CallInstEPKcS5_T_S8_PKNS0_4TypeE", + // "llvm::CallInst* ReplaceCallWith(char const*, llvm::CallInst*, llvm::Value**, llvm::Value**, llvm::Type const*)"}, + // got error + + {"_Z26ReplaceFPIntrinsicWithCallPN4llvm8CallInstEPKcS3_S3_", "ReplaceFPIntrinsicWithCall(llvm::CallInst*, char const*, char const*, char const*)"}, + {"_ZN4llvm17IntrinsicLowering15LowerToByteSwapEPNS_8CallInstE", "llvm::IntrinsicLowering::LowerToByteSwap(llvm::CallInst*)"}, + {"_ZN4llvm9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEE9CreateNotEPNS_5ValueERKNS_5TwineE", "llvm::IRBuilder>::CreateNot(llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEE9CreateSubEPNS_5ValueES6_RKNS_5TwineE", "llvm::IRBuilder>::CreateSub(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEE9CreateAndEPNS_5ValueES6_RKNS_5TwineE", "llvm::IRBuilder>::CreateAnd(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEE13CreateIntCastEPNS_5ValueEPKNS_4TypeEbRKNS_5TwineE", "llvm::IRBuilder>::CreateIntCast(llvm::Value*, llvm::Type const*, bool, llvm::Twine const&)"}, + + // {"_ZN4llvm9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEE10CreateCallIPPNS_5ValueEEEPNS_8CallInstES7_T_SB_RKNS_5TwineE", + // "llvm::CallInst* llvm::IRBuilder>::CreateCall(llvm::Value*, llvm::Value**, llvm::Value**, llvm::Twine const&)"}, + // "llvm::CallInst* llvm::IRBuilder>::CreateCall(llvm::Value*, true, true, llvm::Twine const&)" was returned + + {"_ZN4llvm9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEE9CreateAddEPNS_5ValueES6_RKNS_5TwineE", "llvm::IRBuilder>::CreateAdd(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm17LLVMTargetMachineC1ERKNS_6TargetERKSs", "llvm::LLVMTargetMachine::LLVMTargetMachine(llvm::Target const&, std::string const&)"}, + {"_ZN4llvm17LLVMTargetMachineC2ERKNS_6TargetERKSs", "llvm::LLVMTargetMachine::LLVMTargetMachine(llvm::Target const&, std::string const&)"}, + {"_ZN4llvm17LLVMTargetMachine18setCodeModelForJITEv", "llvm::LLVMTargetMachine::setCodeModelForJIT()"}, + {"_ZN4llvm17LLVMTargetMachine21setCodeModelForStaticEv", "llvm::LLVMTargetMachine::setCodeModelForStatic()"}, + {"_ZN4llvm17LLVMTargetMachine19addPassesToEmitFileERNS_15PassManagerBaseERNS_21formatted_raw_ostreamENS_13TargetMachine15CodeGenFileTypeENS_10CodeGenOpt5LevelEb", "llvm::LLVMTargetMachine::addPassesToEmitFile(llvm::PassManagerBase&, llvm::formatted_raw_ostream&, llvm::TargetMachine::CodeGenFileType, llvm::CodeGenOpt::Level, bool)"}, + {"_ZN4llvm17LLVMTargetMachine22addCommonCodeGenPassesERNS_15PassManagerBaseENS_10CodeGenOpt5LevelEbRPNS_9MCContextE", "llvm::LLVMTargetMachine::addCommonCodeGenPasses(llvm::PassManagerBase&, llvm::CodeGenOpt::Level, bool, llvm::MCContext*&)"}, + {"_ZN4llvm17LLVMTargetMachine26addPassesToEmitMachineCodeERNS_15PassManagerBaseERNS_14JITCodeEmitterENS_10CodeGenOpt5LevelEb", "llvm::LLVMTargetMachine::addPassesToEmitMachineCode(llvm::PassManagerBase&, llvm::JITCodeEmitter&, llvm::CodeGenOpt::Level, bool)"}, + {"_ZN4llvm17LLVMTargetMachine17addPassesToEmitMCERNS_15PassManagerBaseERPNS_9MCContextENS_10CodeGenOpt5LevelEb", "llvm::LLVMTargetMachine::addPassesToEmitMC(llvm::PassManagerBase&, llvm::MCContext*&, llvm::CodeGenOpt::Level, bool)"}, + {"_Z14printAndVerifyRN4llvm15PassManagerBaseEPKc", "printAndVerify(llvm::PassManagerBase&, char const*)"}, + {"_Z13printNoVerifyRN4llvm15PassManagerBaseEPKc", "printNoVerify(llvm::PassManagerBase&, char const*)"}, + {"_ZN4llvm2cl3optINS0_13boolOrDefaultELb0ENS0_6parserIS2_EEED1Ev", "llvm::cl::opt>::~opt()"}, + {"_ZN4llvm2cl3optINS0_13boolOrDefaultELb0ENS0_6parserIS2_EEE16handleOccurrenceEjNS_9StringRefES6_", "llvm::cl::opt>::handleOccurrence(unsigned int, llvm::StringRef, llvm::StringRef)"}, + {"_ZNK4llvm2cl3optINS0_13boolOrDefaultELb0ENS0_6parserIS2_EEE27getValueExpectedFlagDefaultEv", "llvm::cl::opt>::getValueExpectedFlagDefault() const"}, + {"_ZNK4llvm2cl3optINS0_13boolOrDefaultELb0ENS0_6parserIS2_EEE14getOptionWidthEv", "llvm::cl::opt>::getOptionWidth() const"}, + {"_ZNK4llvm2cl3optINS0_13boolOrDefaultELb0ENS0_6parserIS2_EEE15printOptionInfoEm", "llvm::cl::opt>::printOptionInfo(unsigned long) const"}, + {"_ZN4llvm2cl3optINS0_13boolOrDefaultELb0ENS0_6parserIS2_EEE19getExtraOptionNamesERNS_15SmallVectorImplIPKcEE", "llvm::cl::opt>::getExtraOptionNames(llvm::SmallVectorImpl&)"}, + {"_ZN4llvm2cl3optINS0_13boolOrDefaultELb0ENS0_6parserIS2_EEED0Ev", "llvm::cl::opt>::~opt()"}, + {"_ZNK4llvm12latency_sortclEPKNS_5SUnitES3_", "llvm::latency_sort::operator()(llvm::SUnit const*, llvm::SUnit const*) const"}, + {"_ZN4llvm20LatencyPriorityQueue24getSingleUnscheduledPredEPNS_5SUnitE", "llvm::LatencyPriorityQueue::getSingleUnscheduledPred(llvm::SUnit*)"}, + {"_ZN4llvm20LatencyPriorityQueue4pushEPNS_5SUnitE", "llvm::LatencyPriorityQueue::push(llvm::SUnit*)"}, + {"_ZN4llvm20LatencyPriorityQueue13ScheduledNodeEPNS_5SUnitE", "llvm::LatencyPriorityQueue::ScheduledNode(llvm::SUnit*)"}, + {"_ZN4llvm20LatencyPriorityQueue32AdjustPriorityOfUnscheduledPredsEPNS_5SUnitE", "llvm::LatencyPriorityQueue::AdjustPriorityOfUnscheduledPreds(llvm::SUnit*)"}, + {"_ZN4llvm20LatencyPriorityQueue3popEv", "llvm::LatencyPriorityQueue::pop()"}, + {"_ZN4llvm20LatencyPriorityQueue6removeEPNS_5SUnitE", "llvm::LatencyPriorityQueue::remove(llvm::SUnit*)"}, + {"_ZNK4llvm20LatencyPriorityQueue4dumpEPNS_11ScheduleDAGE", "llvm::LatencyPriorityQueue::dump(llvm::ScheduleDAG*) const"}, + {"_ZN4llvm32initializeLiveDebugVariablesPassERNS_12PassRegistryE", "llvm::initializeLiveDebugVariablesPass(llvm::PassRegistry&)"}, + {"_ZNK4llvm18LiveDebugVariables16getAnalysisUsageERNS_13AnalysisUsageE", "llvm::LiveDebugVariables::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN4llvm18LiveDebugVariablesC1Ev", "llvm::LiveDebugVariables::LiveDebugVariables()"}, + {"_ZN4llvm18LiveDebugVariablesC2Ev", "llvm::LiveDebugVariables::LiveDebugVariables()"}, + {"_ZN4llvm18LiveDebugVariables20runOnMachineFunctionERNS_15MachineFunctionE", "llvm::LiveDebugVariables::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN4llvm18LiveDebugVariables13releaseMemoryEv", "llvm::LiveDebugVariables::releaseMemory()"}, + {"_ZN12_GLOBAL__N_17LDVImpl5clearEv", "(anonymous namespace)::LDVImpl::clear()"}, + {"_ZN4llvm18LiveDebugVariablesD0Ev", "llvm::LiveDebugVariables::~LiveDebugVariables()"}, + {"_ZN4llvm18LiveDebugVariablesD1Ev", "llvm::LiveDebugVariables::~LiveDebugVariables()"}, + {"_ZN4llvm18LiveDebugVariablesD2Ev", "llvm::LiveDebugVariables::~LiveDebugVariables()"}, + {"_ZN4llvm18LiveDebugVariables14renameRegisterEjjj", "llvm::LiveDebugVariables::renameRegister(unsigned int, unsigned int, unsigned int)"}, + {"_ZN4llvm18LiveDebugVariables15emitDebugValuesEPNS_10VirtRegMapE", "llvm::LiveDebugVariables::emitDebugValues(llvm::VirtRegMap*)"}, + {"_ZN12_GLOBAL__N_19UserValue16insertDebugValueEPN4llvm17MachineBasicBlockENS1_9SlotIndexEjRNS1_13LiveIntervalsERKNS1_15TargetInstrInfoE", "(anonymous namespace)::UserValue::insertDebugValue(llvm::MachineBasicBlock*, llvm::SlotIndex, unsigned int, llvm::LiveIntervals&, llvm::TargetInstrInfo const&)"}, + {"_Z18findInsertLocationPN4llvm17MachineBasicBlockENS_9SlotIndexERNS_13LiveIntervalsE", "findInsertLocation(llvm::MachineBasicBlock*, llvm::SlotIndex, llvm::LiveIntervals&)"}, + {"_ZN12_GLOBAL__N_19UserValue16coalesceLocationEj", "(anonymous namespace)::UserValue::coalesceLocation(unsigned int)"}, + {"_ZN12_GLOBAL__N_17LDVImpl10mapVirtRegEjPNS_9UserValueE", "(anonymous namespace)::LDVImpl::mapVirtReg(unsigned int, (anonymous namespace)::UserValue*)"}, + {"_ZN12_GLOBAL__N_19UserValue9extendDefEN4llvm9SlotIndexEjPNS1_12LiveIntervalEPKNS1_6VNInfoERNS1_13LiveIntervalsERNS1_20MachineDominatorTreeE", "(anonymous namespace)::UserValue::extendDef(llvm::SlotIndex, unsigned int, llvm::LiveInterval*, llvm::VNInfo const*, llvm::LiveIntervals&, llvm::MachineDominatorTree&)"}, + + // {"_ZN4llvm11IntervalMapINS_9SlotIndexEjLj4ENS_15IntervalMapInfoIS1_EEE14const_iterator7setRootEj", + // "llvm::IntervalMap>::const_iterator::setRoot(unsigned int)"}, + // "llvm::IntervalMap>::const_iterator::setRoot(unsigned int)" was returned + + {"_ZN4llvm15IntervalMapImpl4Path8fillLeftEj", "llvm::IntervalMapImpl::Path::fillLeft(unsigned int)"}, + {"_ZN4llvm23SmallVectorTemplateBaseINS_15IntervalMapImpl4Path5EntryELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN4llvm15SmallVectorImplINS_15IntervalMapImpl4Path5EntryEEaSERKS4_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + + // {"_ZN4llvm11IntervalMapINS_9SlotIndexEjLj4ENS_15IntervalMapInfoIS1_EEE8iterator8setValueEj", + // "llvm::IntervalMap>::iterator::setValue(unsigned int)"}, + // "llvm::IntervalMap>::iterator::setValue(unsigned int)" was returned + + + // {"_ZN4llvm11IntervalMapINS_9SlotIndexEjLj4ENS_15IntervalMapInfoIS1_EEE8iterator16canCoalesceRightES1_j", + // "llvm::IntervalMap>::iterator::canCoalesceRight(llvm::SlotIndex, unsigned int)"}, + // "llvm::IntervalMap>::iterator::canCoalesceRight(llvm::SlotIndex, unsigned int)" was returned + + + // {"_ZN4llvm11IntervalMapINS_9SlotIndexEjLj4ENS_15IntervalMapInfoIS1_EEE8iterator15canCoalesceLeftES1_j", + // "llvm::IntervalMap>::iterator::canCoalesceLeft(llvm::SlotIndex, unsigned int)"}, + // "llvm::IntervalMap>::iterator::canCoalesceLeft(llvm::SlotIndex, unsigned int)" was returned + + + // {"_ZN4llvm11IntervalMapINS_9SlotIndexEjLj4ENS_15IntervalMapInfoIS1_EEE8iterator9treeEraseEb", + // "llvm::IntervalMap>::iterator::treeErase(bool)"}, + // "llvm::IntervalMap>::iterator::treeErase(bool)" was returned + + + // {"_ZN4llvm11IntervalMapINS_9SlotIndexEjLj4ENS_15IntervalMapInfoIS1_EEE8iterator9eraseNodeEj", + // "llvm::IntervalMap>::iterator::eraseNode(unsigned int)"}, + // "llvm::IntervalMap>::iterator::eraseNode(unsigned int)" was returned + + + // {"_ZN4llvm11IntervalMapINS_9SlotIndexEjLj4ENS_15IntervalMapInfoIS1_EEE16switchRootToLeafEv", + // "llvm::IntervalMap>::switchRootToLeaf()"}, + // "llvm::IntervalMap>::switchRootToLeaf()" was returned + + + // {"_ZN4llvm11IntervalMapINS_9SlotIndexEjLj4ENS_15IntervalMapInfoIS1_EEE10visitNodesEMS4_FvNS_15IntervalMapImpl7NodeRefEjE", + // "llvm::IntervalMap>::visitNodes(void (llvm::IntervalMap>::*)(llvm::IntervalMapImpl::NodeRef, unsigned int))"}, + // "llvm::IntervalMap>::visitNodes(void (llvm::IntervalMap>::*)(llvm::IntervalMapImpl::NodeRef, unsigned int))" was returned + + + // {"_ZN4llvm11IntervalMapINS_9SlotIndexEjLj4ENS_15IntervalMapInfoIS1_EEE10deleteNodeENS_15IntervalMapImpl7NodeRefEj", + // "llvm::IntervalMap>::deleteNode(llvm::IntervalMapImpl::NodeRef, unsigned int)"}, + // "llvm::IntervalMap>::deleteNode(llvm::IntervalMapImpl::NodeRef, unsigned int)" was returned + + {"_ZN4llvm15SmallVectorImplINS_15IntervalMapImpl7NodeRefEE4swapERS3_", "llvm::SmallVectorImpl::swap(llvm::SmallVectorImpl&)"}, + {"_ZN4llvm23SmallVectorTemplateBaseINS_15IntervalMapImpl7NodeRefELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + + // {"_ZN4llvm11IntervalMapINS_9SlotIndexEjLj4ENS_15IntervalMapInfoIS1_EEE8iterator6insertES1_S1_j", + // "llvm::IntervalMap>::iterator::insert(llvm::SlotIndex, llvm::SlotIndex, unsigned int)"}, + // "llvm::IntervalMap>::iterator::insert(llvm::SlotIndex, llvm::SlotIndex, unsigned int)" was returned + + + // {"_ZN4llvm11IntervalMapINS_9SlotIndexEjLj4ENS_15IntervalMapInfoIS1_EEE8iterator10treeInsertES1_S1_j", + // "llvm::IntervalMap>::iterator::treeInsert(llvm::SlotIndex, llvm::SlotIndex, unsigned int)"}, + // "llvm::IntervalMap>::iterator::treeInsert(llvm::SlotIndex, llvm::SlotIndex, unsigned int)" was returned + + + // {"_ZN4llvm15IntervalMapImpl8LeafNodeINS_9SlotIndexEjLj4ENS_15IntervalMapInfoIS2_EEE10insertFromERjjS2_S2_j", + // "llvm::IntervalMapImpl::LeafNode>::insertFrom(unsigned int&, unsigned int, llvm::SlotIndex, llvm::SlotIndex, unsigned int)"}, + // "llvm::IntervalMapImpl::LeafNode>::insertFrom(unsigned int&, unsigned int, llvm::SlotIndex, llvm::SlotIndex, unsigned int)" was returned + + + // {"_ZN4llvm11IntervalMapINS_9SlotIndexEjLj4ENS_15IntervalMapInfoIS1_EEE10branchRootEj", + // "llvm::IntervalMap>::branchRoot(unsigned int)"}, + // "llvm::IntervalMap>::branchRoot(unsigned int)" was returned + + + // {"_ZN4llvm11IntervalMapINS_9SlotIndexEjLj4ENS_15IntervalMapInfoIS1_EEE18switchRootToBranchEv", + // "llvm::IntervalMap>::switchRootToBranch()"}, + // "llvm::IntervalMap>::switchRootToBranch()" was returned + + + // {"_ZN4llvm15IntervalMapImpl8NodeBaseISt4pairINS_9SlotIndexES3_EjLj9EEC2Ev", + // "llvm::IntervalMapImpl::NodeBase, unsigned int, 9u>::NodeBase()"}, + // "llvm::IntervalMapImpl::NodeBase, unsigned int, 9>::NodeBase()" was returned + + + // {"_ZN4llvm15IntervalMapImpl8LeafNodeINS_9SlotIndexEjLj9ENS_15IntervalMapInfoIS2_EEE10insertFromERjjS2_S2_j", + // "llvm::IntervalMapImpl::LeafNode>::insertFrom(unsigned int&, unsigned int, llvm::SlotIndex, llvm::SlotIndex, unsigned int)"}, + // "llvm::IntervalMapImpl::LeafNode>::insertFrom(unsigned int&, unsigned int, llvm::SlotIndex, llvm::SlotIndex, unsigned int)" was returned + + + // {"_ZN4llvm11IntervalMapINS_9SlotIndexEjLj4ENS_15IntervalMapInfoIS1_EEE8iterator8overflowINS_15IntervalMapImpl8LeafNodeIS1_jLj9ES3_EEEEbj", + // "bool llvm::IntervalMap>::iterator::overflow>>(unsigned int)"}, + // "bool llvm::IntervalMap>::iterator::overflow>>(unsigned int)" was returned + + + // {"_ZN4llvm15IntervalMapImpl18adjustSiblingSizesINS0_8LeafNodeINS_9SlotIndexEjLj9ENS_15IntervalMapInfoIS3_EEEEEEvPPT_jPjPKj", + // "void llvm::IntervalMapImpl::adjustSiblingSizes>>(llvm::IntervalMapImpl::LeafNode>**, unsigned int, unsigned int*, unsigned int const*)"}, + // "void llvm::IntervalMapImpl::adjustSiblingSizes>>(llvm::SlotIndex**, unsigned int, unsigned int*, unsigned int const*)" was returned + + + // {"_ZN4llvm11IntervalMapINS_9SlotIndexEjLj4ENS_15IntervalMapInfoIS1_EEE8iterator10insertNodeEjNS_15IntervalMapImpl7NodeRefES1_", + // "llvm::IntervalMap>::iterator::insertNode(unsigned int, llvm::IntervalMapImpl::NodeRef, llvm::SlotIndex)"}, + // "llvm::IntervalMap>::iterator::insertNode(unsigned int, llvm::IntervalMapImpl::NodeRef, llvm::SlotIndex)" was returned + + + // {"_ZN4llvm11IntervalMapINS_9SlotIndexEjLj4ENS_15IntervalMapInfoIS1_EEE9splitRootEj", + // "llvm::IntervalMap>::splitRoot(unsigned int)"}, + // "llvm::IntervalMap>::splitRoot(unsigned int)" was returned + + + // {"_ZN4llvm11IntervalMapINS_9SlotIndexEjLj4ENS_15IntervalMapInfoIS1_EEE8iterator8overflowINS_15IntervalMapImpl10BranchNodeIS1_jLj12ES3_EEEEbj", + // "bool llvm::IntervalMap>::iterator::overflow>>(unsigned int)"}, + // "bool llvm::IntervalMap>::iterator::overflow>>(unsigned int)" was returned + + + // {"_ZN4llvm11IntervalMapINS_9SlotIndexEjLj4ENS_15IntervalMapInfoIS1_EEE7newNodeINS_15IntervalMapImpl10BranchNodeIS1_jLj12ES3_EEEEPT_v", + // "llvm::IntervalMapImpl::BranchNode>* llvm::IntervalMap>::newNode>>()"}, + // "llvm::SlotIndex* llvm::IntervalMap>::newNode>>()" was returned + + + // {"_ZN4llvm15IntervalMapImpl18adjustSiblingSizesINS0_10BranchNodeINS_9SlotIndexEjLj12ENS_15IntervalMapInfoIS3_EEEEEEvPPT_jPjPKj", + // "void llvm::IntervalMapImpl::adjustSiblingSizes>>(llvm::IntervalMapImpl::BranchNode>**, unsigned int, unsigned int*, unsigned int const*)"}, + // "void llvm::IntervalMapImpl::adjustSiblingSizes>>(llvm::SlotIndex**, unsigned int, unsigned int*, unsigned int const*)" was returned + + + // {"_ZN4llvm15IntervalMapImpl8NodeBaseINS0_7NodeRefENS_9SlotIndexELj12EE17adjustFromLeftSibEjRS4_ji", + // "llvm::IntervalMapImpl::NodeBase::adjustFromLeftSib(unsigned int, llvm::IntervalMapImpl::NodeBase&, unsigned int, int)"}, + // "llvm::IntervalMapImpl::NodeBase::adjustFromLeftSib(unsigned int, llvm::IntervalMapImpl::NodeBase&, unsigned int, int)" was returned + + + // {"_ZN4llvm15IntervalMapImpl8NodeBaseISt4pairINS_9SlotIndexES3_EjLj9EE17adjustFromLeftSibEjRS5_ji", + // "llvm::IntervalMapImpl::NodeBase, unsigned int, 9u>::adjustFromLeftSib(unsigned int, llvm::IntervalMapImpl::NodeBase, unsigned int, 9u>&, unsigned int, int)"}, + // "llvm::IntervalMapImpl::NodeBase, unsigned int, 9>::adjustFromLeftSib(unsigned int, llvm::IntervalMapImpl::NodeBase, unsigned int, 9>&, unsigned int, int)" was returned + + + // {"_ZN4llvm11IntervalMapINS_9SlotIndexEjLj4ENS_15IntervalMapInfoIS1_EEE14const_iterator4findES1_", + // "llvm::IntervalMap>::const_iterator::find(llvm::SlotIndex)"}, + // "llvm::IntervalMap>::const_iterator::find(llvm::SlotIndex)" was returned + + + // {"_ZN4llvm11IntervalMapINS_9SlotIndexEjLj4ENS_15IntervalMapInfoIS1_EEE14const_iterator8treeFindES1_", + // "llvm::IntervalMap>::const_iterator::treeFind(llvm::SlotIndex)"}, + // "llvm::IntervalMap>::const_iterator::treeFind(llvm::SlotIndex)" was returned + + + // {"_ZN4llvm11IntervalMapINS_9SlotIndexEjLj4ENS_15IntervalMapInfoIS1_EEE14const_iterator12pathFillFindES1_", + // "llvm::IntervalMap>::const_iterator::pathFillFind(llvm::SlotIndex)"}, + // "llvm::IntervalMap>::const_iterator::pathFillFind(llvm::SlotIndex)" was returned + + + // {"_ZN4llvm11IntervalMapINS_9SlotIndexEjLj4ENS_15IntervalMapInfoIS1_EEEC2ERNS_18RecyclingAllocatorINS_16BumpPtrAllocatorEcLm192ELm64EEE", + // "llvm::IntervalMap>::IntervalMap(llvm::RecyclingAllocator&)"}, + // "llvm::IntervalMap>::IntervalMap(llvm::RecyclingAllocator&)" was returned + + {"_ZN4llvm15callDefaultCtorINS_18LiveDebugVariablesEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor()"}, + {"_ZN4llvm12LiveInterval4findENS_9SlotIndexE", "llvm::LiveInterval::find(llvm::SlotIndex)"}, + {"_ZNK4llvm12LiveInterval13killedInRangeENS_9SlotIndexES1_", "llvm::LiveInterval::killedInRange(llvm::SlotIndex, llvm::SlotIndex) const"}, + {"_ZNK4llvm12LiveInterval12overlapsFromERKS0_PKNS_9LiveRangeE", "llvm::LiveInterval::overlapsFrom(llvm::LiveInterval const&, llvm::LiveRange const*) const"}, + {"_ZNK4llvm12LiveInterval8overlapsENS_9SlotIndexES1_", "llvm::LiveInterval::overlaps(llvm::SlotIndex, llvm::SlotIndex) const"}, + {"_ZN4llvm12LiveInterval20markValNoForDeletionEPNS_6VNInfoE", "llvm::LiveInterval::markValNoForDeletion(llvm::VNInfo*)"}, + {"_ZN4llvm12LiveInterval14RenumberValuesERNS_13LiveIntervalsE", "llvm::LiveInterval::RenumberValues(llvm::LiveIntervals&)"}, + {"_ZN4llvm12LiveInterval19extendIntervalEndToEPNS_9LiveRangeENS_9SlotIndexE", "llvm::LiveInterval::extendIntervalEndTo(llvm::LiveRange*, llvm::SlotIndex)"}, + {"_ZN4llvm12LiveInterval21extendIntervalStartToEPNS_9LiveRangeENS_9SlotIndexE", "llvm::LiveInterval::extendIntervalStartTo(llvm::LiveRange*, llvm::SlotIndex)"}, + {"_ZN4llvm12LiveInterval12addRangeFromENS_9LiveRangeEPS1_", "llvm::LiveInterval::addRangeFrom(llvm::LiveRange, llvm::LiveRange*)"}, + {"_ZN4llvm12LiveInterval11removeRangeENS_9SlotIndexES1_b", "llvm::LiveInterval::removeRange(llvm::SlotIndex, llvm::SlotIndex, bool)"}, + {"_ZN4llvm12LiveInterval11removeValNoEPNS_6VNInfoE", "llvm::LiveInterval::removeValNo(llvm::VNInfo*)"}, + {"_ZNK4llvm12LiveInterval26findDefinedVNInfoForRegIntENS_9SlotIndexE", "llvm::LiveInterval::findDefinedVNInfoForRegInt(llvm::SlotIndex) const"}, + + // {"_ZN4llvm12LiveInterval4joinERS0_PKiS3_RNS_11SmallVectorIPNS_6VNInfoELj16EEEPNS_19MachineRegisterInfoE", + // "llvm::LiveInterval::join(llvm::LiveInterval&, int const*, int const*, llvm::SmallVector&, llvm::MachineRegisterInfo*)"}, + // "llvm::LiveInterval::join(llvm::LiveInterval&, int const*, int const*, llvm::SmallVector&, llvm::MachineRegisterInfo*)" was returned + + {"_ZN4llvm12LiveInterval19ComputeJoinedWeightERKS0_", "llvm::LiveInterval::ComputeJoinedWeight(llvm::LiveInterval const&)"}, + {"_ZN4llvm12LiveInterval20MergeRangesInAsValueERKS0_PNS_6VNInfoE", "llvm::LiveInterval::MergeRangesInAsValue(llvm::LiveInterval const&, llvm::VNInfo*)"}, + {"_ZN4llvm12LiveInterval19MergeValueInAsValueERKS0_PKNS_6VNInfoEPS3_", "llvm::LiveInterval::MergeValueInAsValue(llvm::LiveInterval const&, llvm::VNInfo const*, llvm::VNInfo*)"}, + {"_ZN4llvm12LiveInterval20MergeValueNumberIntoEPNS_6VNInfoES2_", "llvm::LiveInterval::MergeValueNumberInto(llvm::VNInfo*, llvm::VNInfo*)"}, + {"_ZN4llvm12LiveInterval4CopyERKS0_PNS_19MachineRegisterInfoERNS_16BumpPtrAllocatorE", "llvm::LiveInterval::Copy(llvm::LiveInterval const&, llvm::MachineRegisterInfo*, llvm::BumpPtrAllocator&)"}, + {"_ZNK4llvm12LiveInterval7getSizeEv", "llvm::LiveInterval::getSize() const"}, + {"_ZN4llvmlsERNS_11raw_ostreamERKNS_9LiveRangeE", "llvm::operator<<(llvm::raw_ostream&, llvm::LiveRange const&)"}, + {"_ZNK4llvm9LiveRange4dumpEv", "llvm::LiveRange::dump() const"}, + {"_ZNK4llvm12LiveInterval5printERNS_11raw_ostreamEPKNS_18TargetRegisterInfoE", "llvm::LiveInterval::print(llvm::raw_ostream&, llvm::TargetRegisterInfo const*) const"}, + {"_ZNK4llvm12LiveInterval4dumpEv", "llvm::LiveInterval::dump() const"}, + {"_ZNK4llvm9LiveRange5printERNS_11raw_ostreamE", "llvm::LiveRange::print(llvm::raw_ostream&) const"}, + {"_ZN4llvm24ConnectedVNInfoEqClasses8ClassifyEPKNS_12LiveIntervalE", "llvm::ConnectedVNInfoEqClasses::Classify(llvm::LiveInterval const*)"}, + {"_ZN4llvm24ConnectedVNInfoEqClasses10DistributeEPPNS_12LiveIntervalE", "llvm::ConnectedVNInfoEqClasses::Distribute(llvm::LiveInterval**)"}, + {"_ZN4llvm15SmallVectorImplINS_9LiveRangeEE6insertEPS1_RKS1_", "llvm::SmallVectorImpl::insert(llvm::LiveRange*, llvm::LiveRange const&)"}, + {"_ZN4llvm15SmallVectorImplIPNS_6VNInfoEE6resizeEj", "llvm::SmallVectorImpl::resize(unsigned int)"}, + {"_ZNK4llvm12LiveInterval23FindLiveRangeContainingENS_9SlotIndexE", "llvm::LiveInterval::FindLiveRangeContaining(llvm::SlotIndex) const"}, + {"_ZN4llvm27initializeLiveIntervalsPassERNS_12PassRegistryE", "llvm::initializeLiveIntervalsPass(llvm::PassRegistry&)"}, + {"_ZNK4llvm13LiveIntervals16getAnalysisUsageERNS_13AnalysisUsageE", "llvm::LiveIntervals::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN4llvm13LiveIntervals13releaseMemoryEv", "llvm::LiveIntervals::releaseMemory()"}, + {"_ZN4llvm13LiveIntervals20runOnMachineFunctionERNS_15MachineFunctionE", "llvm::LiveIntervals::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN4llvm13LiveIntervals16computeIntervalsEv", "llvm::LiveIntervals::computeIntervals()"}, + {"_ZNK4llvm13LiveIntervals5printERNS_11raw_ostreamEPKNS_6ModuleE", "llvm::LiveIntervals::print(llvm::raw_ostream&, llvm::Module const*) const"}, + {"_ZNK4llvm13LiveIntervals11printInstrsERNS_11raw_ostreamE", "llvm::LiveIntervals::printInstrs(llvm::raw_ostream&) const"}, + {"_ZNK4llvm13LiveIntervals10dumpInstrsEv", "llvm::LiveIntervals::dumpInstrs() const"}, + {"_ZN4llvm13LiveIntervals20conflictsWithPhysRegERKNS_12LiveIntervalERNS_10VirtRegMapEj", "llvm::LiveIntervals::conflictsWithPhysReg(llvm::LiveInterval const&, llvm::VirtRegMap&, unsigned int)"}, + + // {"_ZN4llvm13LiveIntervals21conflictsWithAliasRefERNS_12LiveIntervalEjRNS_11SmallPtrSetIPNS_12MachineInstrELj32EEE", + // "llvm::LiveIntervals::conflictsWithAliasRef(llvm::LiveInterval&, unsigned int, llvm::SmallPtrSet&)"}, + // "llvm::LiveIntervals::conflictsWithAliasRef(llvm::LiveInterval&, unsigned int, llvm::SmallPtrSet&)" was returned + + {"_ZN4llvm13LiveIntervals14isPartialRedefENS_9SlotIndexERNS_14MachineOperandERNS_12LiveIntervalE", "llvm::LiveIntervals::isPartialRedef(llvm::SlotIndex, llvm::MachineOperand&, llvm::LiveInterval&)"}, + {"_ZN4llvm13LiveIntervals24handleVirtualRegisterDefEPNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEENS_9SlotIndexERNS_14MachineOperandEjRNS_12LiveIntervalE", "llvm::LiveIntervals::handleVirtualRegisterDef(llvm::MachineBasicBlock*, llvm::ilist_iterator, llvm::SlotIndex, llvm::MachineOperand&, unsigned int, llvm::LiveInterval&)"}, + {"_ZN4llvm13LiveIntervals25handlePhysicalRegisterDefEPNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEENS_9SlotIndexERNS_14MachineOperandERNS_12LiveIntervalEPS4_", "llvm::LiveIntervals::handlePhysicalRegisterDef(llvm::MachineBasicBlock*, llvm::ilist_iterator, llvm::SlotIndex, llvm::MachineOperand&, llvm::LiveInterval&, llvm::MachineInstr*)"}, + {"_ZN4llvm13LiveIntervals17handleRegisterDefEPNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEENS_9SlotIndexERNS_14MachineOperandEj", "llvm::LiveIntervals::handleRegisterDef(llvm::MachineBasicBlock*, llvm::ilist_iterator, llvm::SlotIndex, llvm::MachineOperand&, unsigned int)"}, + {"_ZN4llvm13LiveIntervals20handleLiveInRegisterEPNS_17MachineBasicBlockENS_9SlotIndexERNS_12LiveIntervalEb", "llvm::LiveIntervals::handleLiveInRegister(llvm::MachineBasicBlock*, llvm::SlotIndex, llvm::LiveInterval&, bool)"}, + {"_ZN4llvm13LiveIntervals14createIntervalEj", "llvm::LiveIntervals::createInterval(unsigned int)"}, + {"_ZN4llvm13LiveIntervals11dupIntervalEPNS_12LiveIntervalE", "llvm::LiveIntervals::dupInterval(llvm::LiveInterval*)"}, + {"_ZN4llvm13LiveIntervals12shrinkToUsesEPNS_12LiveIntervalE", "llvm::LiveIntervals::shrinkToUses(llvm::LiveInterval*)"}, + {"_ZNK4llvm13LiveIntervals17getLastSplitPointERKNS_12LiveIntervalEPNS_17MachineBasicBlockE", "llvm::LiveIntervals::getLastSplitPoint(llvm::LiveInterval const&, llvm::MachineBasicBlock*) const"}, + {"_ZN4llvm13LiveIntervals12addKillFlagsEv", "llvm::LiveIntervals::addKillFlags()"}, + {"_ZNK4llvm13LiveIntervals19getReMatImplicitUseERKNS_12LiveIntervalEPNS_12MachineInstrE", "llvm::LiveIntervals::getReMatImplicitUse(llvm::LiveInterval const&, llvm::MachineInstr*) const"}, + {"_ZNK4llvm13LiveIntervals18isValNoAvailableAtERKNS_12LiveIntervalEPNS_12MachineInstrENS_9SlotIndexE", "llvm::LiveIntervals::isValNoAvailableAt(llvm::LiveInterval const&, llvm::MachineInstr*, llvm::SlotIndex) const"}, + + // {"_ZN4llvm13LiveIntervals18isReMaterializableERKNS_12LiveIntervalEPKNS_6VNInfoEPNS_12MachineInstrERKNS_15SmallVectorImplIPS1_EERb", + // "llvm::LiveIntervals::isReMaterializable(llvm::LiveInterval const&, llvm::VNInfo const*, llvm::MachineInstr*, llvm::SmallVectorImpl const&, bool&)"}, + // "llvm::LiveIntervals::isReMaterializable(llvm::LiveInterval const&, llvm::VNInfo const*, llvm::MachineInstr*, llvm::SmallVectorImpl const&, bool&)" was returned + + {"_ZN4llvm13LiveIntervals18isReMaterializableERKNS_12LiveIntervalEPKNS_6VNInfoEPNS_12MachineInstrE", "llvm::LiveIntervals::isReMaterializable(llvm::LiveInterval const&, llvm::VNInfo const*, llvm::MachineInstr*)"}, + + // {"_ZN4llvm13LiveIntervals18isReMaterializableERKNS_12LiveIntervalERKNS_15SmallVectorImplIPS1_EERb", + // "llvm::LiveIntervals::isReMaterializable(llvm::LiveInterval const&, llvm::SmallVectorImpl const&, bool&)"}, + // "llvm::LiveIntervals::isReMaterializable(llvm::LiveInterval const&, llvm::SmallVectorImpl const&, bool&)" was returned + + + // {"_ZN4llvm13LiveIntervals20tryFoldMemoryOperandERPNS_12MachineInstrERNS_10VirtRegMapES2_NS_9SlotIndexERNS_11SmallVectorIjLj2EEEbij", + // "llvm::LiveIntervals::tryFoldMemoryOperand(llvm::MachineInstr*&, llvm::VirtRegMap&, llvm::MachineInstr*, llvm::SlotIndex, llvm::SmallVector&, bool, int, unsigned int)"}, + // "llvm::LiveIntervals::tryFoldMemoryOperand(llvm::MachineInstr*&, llvm::VirtRegMap&, llvm::MachineInstr*, llvm::SlotIndex, llvm::SmallVector&, bool, int, unsigned int)" was returned + + + // {"_Z15FilterFoldedOpsPN4llvm12MachineInstrERNS_11SmallVectorIjLj2EEERjS4_", + // "FilterFoldedOps(llvm::MachineInstr*, llvm::SmallVector&, unsigned int&, llvm::SmallVector&)"}, + // "FilterFoldedOps(llvm::MachineInstr*, llvm::SmallVector&, unsigned int&, llvm::SmallVector&)" was returned + + + // {"_ZNK4llvm13LiveIntervals20canFoldMemoryOperandEPNS_12MachineInstrERNS_11SmallVectorIjLj2EEEb", + // "llvm::LiveIntervals::canFoldMemoryOperand(llvm::MachineInstr*, llvm::SmallVector&, bool) const"}, + // "llvm::LiveIntervals::canFoldMemoryOperand(llvm::MachineInstr*, llvm::SmallVector&, bool) const" was returned + + {"_ZNK4llvm13LiveIntervals18intervalIsInOneMBBERKNS_12LiveIntervalE", "llvm::LiveIntervals::intervalIsInOneMBB(llvm::LiveInterval const&) const"}, + {"_ZN4llvm13LiveIntervals18rewriteImplicitOpsERKNS_12LiveIntervalEPNS_12MachineInstrEjRNS_10VirtRegMapE", "llvm::LiveIntervals::rewriteImplicitOps(llvm::LiveInterval const&, llvm::MachineInstr*, unsigned int, llvm::VirtRegMap&)"}, + + // {"_ZN4llvm13LiveIntervals27rewriteInstructionForSpillsERKNS_12LiveIntervalEPKNS_6VNInfoEbNS_9SlotIndexES7_PNS_12MachineInstrES9_S9_jibbbbRNS_10VirtRegMapEPKNS_19TargetRegisterClassERNS_11SmallVectorIiLj4EEEPKNS_15MachineLoopInfoERjjRbSM_RNS_8DenseMapIjjNS_12DenseMapInfoIjEESP_EERSt6vectorIPS1_SaIST_EE", + // "llvm::LiveIntervals::rewriteInstructionForSpills(llvm::LiveInterval const&, llvm::VNInfo const*, bool, llvm::SlotIndex, llvm::SlotIndex, llvm::MachineInstr*, llvm::MachineInstr*, llvm::MachineInstr*, unsigned int, int, bool, bool, bool, bool, llvm::VirtRegMap&, llvm::TargetRegisterClass const*, llvm::SmallVector&, llvm::MachineLoopInfo const*, unsigned int&, unsigned int, bool&, bool&, llvm::DenseMap, llvm::DenseMapInfo>&, std::vector>&)"}, + // got error + + {"_ZNK4llvm13LiveIntervals20anyKillInMBBAfterIdxERKNS_12LiveIntervalEPKNS_6VNInfoEPNS_17MachineBasicBlockENS_9SlotIndexE", "llvm::LiveIntervals::anyKillInMBBAfterIdx(llvm::LiveInterval const&, llvm::VNInfo const*, llvm::MachineBasicBlock*, llvm::SlotIndex) const"}, + + // {"_ZN4llvm13LiveIntervals28rewriteInstructionsForSpillsERKNS_12LiveIntervalEbRPKNS_9LiveRangeEPNS_12MachineInstrES9_jibbbbRNS_10VirtRegMapEPKNS_19TargetRegisterClassERNS_11SmallVectorIiLj4EEEPKNS_15MachineLoopInfoERNS_9BitVectorERNS_8DenseMapIjSt6vectorINS0_6SRInfoESaISP_EENS_12DenseMapInfoIjEENSS_ISR_EEEESM_SW_RNSN_IjjST_ST_EERSO_IPS1_SaISZ_EE", + // "llvm::LiveIntervals::rewriteInstructionsForSpills(llvm::LiveInterval const&, bool, llvm::LiveRange const*&, llvm::MachineInstr*, llvm::MachineInstr*, unsigned int, int, bool, bool, bool, bool, llvm::VirtRegMap&, llvm::TargetRegisterClass const*, llvm::SmallVector&, llvm::MachineLoopInfo const*, llvm::BitVector&, llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>&, llvm::BitVector&, llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>&, llvm::DenseMap, llvm::DenseMapInfo>&, std::vector>&)"}, + // got error + + {"_ZN4llvm13LiveIntervals14getSpillWeightEbbj", "llvm::LiveIntervals::getSpillWeight(bool, bool, unsigned int)"}, + {"_ZN4llvm13LiveIntervals16alsoFoldARestoreEiNS_9SlotIndexEjRNS_9BitVectorERNS_8DenseMapIjSt6vectorINS0_6SRInfoESaIS6_EENS_12DenseMapInfoIjEENS9_IS8_EEEE", "llvm::LiveIntervals::alsoFoldARestore(int, llvm::SlotIndex, unsigned int, llvm::BitVector&, llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>&)"}, + {"_ZN4llvm13LiveIntervals16eraseRestoreInfoEiNS_9SlotIndexEjRNS_9BitVectorERNS_8DenseMapIjSt6vectorINS0_6SRInfoESaIS6_EENS_12DenseMapInfoIjEENS9_IS8_EEEE", "llvm::LiveIntervals::eraseRestoreInfo(int, llvm::SlotIndex, unsigned int, llvm::BitVector&, llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>&)"}, + + // {"_ZN4llvm13LiveIntervals20handleSpilledImpDefsERKNS_12LiveIntervalERNS_10VirtRegMapEPKNS_19TargetRegisterClassERSt6vectorIPS1_SaISA_EE", + // "llvm::LiveIntervals::handleSpilledImpDefs(llvm::LiveInterval const&, llvm::VirtRegMap&, llvm::TargetRegisterClass const*, std::vector>&)"}, + // got error + + + // {"_ZN4llvm13LiveIntervals21normalizeSpillWeightsERSt6vectorIPNS_12LiveIntervalESaIS3_EE", + // "llvm::LiveIntervals::normalizeSpillWeights(std::vector>&)"}, + // got error + + + // {"_ZN4llvm13LiveIntervals21addIntervalsForSpillsERKNS_12LiveIntervalERKNS_15SmallVectorImplIPS1_EEPKNS_15MachineLoopInfoERNS_10VirtRegMapE", + // "llvm::LiveIntervals::addIntervalsForSpills(llvm::LiveInterval const&, llvm::SmallVectorImpl const&, llvm::MachineLoopInfo const*, llvm::VirtRegMap&)"}, + // "llvm::LiveIntervals::addIntervalsForSpills(llvm::LiveInterval const&, llvm::SmallVectorImpl const&, llvm::MachineLoopInfo const*, llvm::VirtRegMap&)" was returned + + {"_ZNK4llvm13LiveIntervals22hasAllocatableSuperRegEj", "llvm::LiveIntervals::hasAllocatableSuperReg(unsigned int) const"}, + {"_ZNK4llvm13LiveIntervals20getRepresentativeRegEj", "llvm::LiveIntervals::getRepresentativeReg(unsigned int) const"}, + {"_ZNK4llvm13LiveIntervals26getNumConflictsWithPhysRegERKNS_12LiveIntervalEj", "llvm::LiveIntervals::getNumConflictsWithPhysReg(llvm::LiveInterval const&, unsigned int) const"}, + {"_ZN4llvm13LiveIntervals29spillPhysRegAroundRegDefsUsesERKNS_12LiveIntervalEjRNS_10VirtRegMapE", "llvm::LiveIntervals::spillPhysRegAroundRegDefsUses(llvm::LiveInterval const&, unsigned int, llvm::VirtRegMap&)"}, + {"_ZN4llvm13LiveIntervals24addLiveRangeToEndOfBlockEjPNS_12MachineInstrE", "llvm::LiveIntervals::addLiveRangeToEndOfBlock(unsigned int, llvm::MachineInstr*)"}, + + // {"_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_111RewriteInfoESt6vectorIS3_SaIS3_EEEElNS2_18RewriteInfoCompareEEvT_SA_T0_T1_", + // "void std::__introsort_loop<__gnu_cxx::__normal_iterator<(anonymous namespace)::RewriteInfo*, std::vector<(anonymous namespace)::RewriteInfo, std::allocator<(anonymous namespace)::RewriteInfo>>>, long, (anonymous namespace)::RewriteInfoCompare>(__gnu_cxx::__normal_iterator<(anonymous namespace)::RewriteInfo*, std::vector<(anonymous namespace)::RewriteInfo, std::allocator<(anonymous namespace)::RewriteInfo>>>, __gnu_cxx::__normal_iterator<(anonymous namespace)::RewriteInfo*, std::vector<(anonymous namespace)::RewriteInfo, std::allocator<(anonymous namespace)::RewriteInfo>>>, long, (anonymous namespace)::RewriteInfoCompare)"}, + // got error + + + // {"_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_111RewriteInfoESt6vectorIS3_SaIS3_EEEENS2_18RewriteInfoCompareEEvT_SA_T0_", + // "void std::__insertion_sort<__gnu_cxx::__normal_iterator<(anonymous namespace)::RewriteInfo*, std::vector<(anonymous namespace)::RewriteInfo, std::allocator<(anonymous namespace)::RewriteInfo>>>, (anonymous namespace)::RewriteInfoCompare>(__gnu_cxx::__normal_iterator<(anonymous namespace)::RewriteInfo*, std::vector<(anonymous namespace)::RewriteInfo, std::allocator<(anonymous namespace)::RewriteInfo>>>, __gnu_cxx::__normal_iterator<(anonymous namespace)::RewriteInfo*, std::vector<(anonymous namespace)::RewriteInfo, std::allocator<(anonymous namespace)::RewriteInfo>>>, (anonymous namespace)::RewriteInfoCompare)"}, + // got error + + + // {"_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_111RewriteInfoESt6vectorIS3_SaIS3_EEEElS3_NS2_18RewriteInfoCompareEEvT_T0_SB_T1_T2_", + // "void std::__adjust_heap<__gnu_cxx::__normal_iterator<(anonymous namespace)::RewriteInfo*, std::vector<(anonymous namespace)::RewriteInfo, std::allocator<(anonymous namespace)::RewriteInfo>>>, long, (anonymous namespace)::RewriteInfo, (anonymous namespace)::RewriteInfoCompare>(__gnu_cxx::__normal_iterator<(anonymous namespace)::RewriteInfo*, std::vector<(anonymous namespace)::RewriteInfo, std::allocator<(anonymous namespace)::RewriteInfo>>>, long, long, (anonymous namespace)::RewriteInfo, (anonymous namespace)::RewriteInfoCompare)"}, + // got error + + {"_ZN4llvm13LiveIntervals19getOrCreateIntervalEj", "llvm::LiveIntervals::getOrCreateInterval(unsigned int)"}, + {"_ZN4llvm15SmallVectorImplINS_9LiveRangeEE4swapERS2_", "llvm::SmallVectorImpl::swap(llvm::SmallVectorImpl&)"}, + {"_ZNK4llvm13LiveIntervals13isLiveInToMBBERKNS_12LiveIntervalEPKNS_17MachineBasicBlockE", "llvm::LiveIntervals::isLiveInToMBB(llvm::LiveInterval const&, llvm::MachineBasicBlock const*) const"}, + {"_ZN4llvm10VirtRegMap16transferSpillPtsEPNS_12MachineInstrES2_", "llvm::VirtRegMap::transferSpillPts(llvm::MachineInstr*, llvm::MachineInstr*)"}, + {"_ZN4llvm10VirtRegMap18transferRestorePtsEPNS_12MachineInstrES2_", "llvm::VirtRegMap::transferRestorePts(llvm::MachineInstr*, llvm::MachineInstr*)"}, + {"_ZN4llvm10VirtRegMap23transferEmergencySpillsEPNS_12MachineInstrES2_", "llvm::VirtRegMap::transferEmergencySpills(llvm::MachineInstr*, llvm::MachineInstr*)"}, + + // {"_ZNK4llvm11SlotIndexes19getMBBCoveringRangeENS_9SlotIndexES1_", + // "llvm::SlotIndexes::getMBBCoveringRange(llvm::SlotIndex, llvm::SlotIndex) const"}, + // got error + + {"_ZN4llvm8DenseMapIjSt6vectorINS_13LiveIntervals6SRInfoESaIS3_EENS_12DenseMapInfoIjEENS6_IS5_EEE6insertERKSt4pairIjS5_E", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::insert(std::pair>> const&)"}, + {"_ZN4llvm15SmallVectorImplIPNS_12MachineInstrEE6resizeEjRKS2_", "llvm::SmallVectorImpl::resize(unsigned int, llvm::MachineInstr* const&)"}, + {"_ZN4llvm15SmallVectorImplIiE6resizeEjRKi", "llvm::SmallVectorImpl::resize(unsigned int, int const&)"}, + {"_ZN4llvm10VirtRegMap13addSpillPointEjbPNS_12MachineInstrE", "llvm::VirtRegMap::addSpillPoint(unsigned int, bool, llvm::MachineInstr*)"}, + {"_ZN4llvm10VirtRegMap15addRestorePointEjPNS_12MachineInstrE", "llvm::VirtRegMap::addRestorePoint(unsigned int, llvm::MachineInstr*)"}, + {"_ZN4llvm10VirtRegMap17addEmergencySpillEjPNS_12MachineInstrE", "llvm::VirtRegMap::addEmergencySpill(unsigned int, llvm::MachineInstr*)"}, + {"_ZN4llvm13LiveIntervalsD1Ev", "llvm::LiveIntervals::~LiveIntervals()"}, + {"_ZN4llvm13LiveIntervalsD0Ev", "llvm::LiveIntervals::~LiveIntervals()"}, + {"_ZN4llvm8DenseMapIjSt6vectorINS_13LiveIntervals6SRInfoESaIS3_EENS_12DenseMapInfoIjEENS6_IS5_EEE16FindAndConstructERKj", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::FindAndConstruct(unsigned int const&)"}, + {"_ZN4llvm8DenseMapIjSt6vectorINS_13LiveIntervals6SRInfoESaIS3_EENS_12DenseMapInfoIjEENS6_IS5_EEE16InsertIntoBucketERKjRKS5_PSt4pairIjS5_E", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::InsertIntoBucket(unsigned int const&, std::vector> const&, std::pair>>*)"}, + {"_ZN4llvm8DenseMapIjSt6vectorINS_13LiveIntervals6SRInfoESaIS3_EENS_12DenseMapInfoIjEENS6_IS5_EEE4growEj", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::grow(unsigned int)"}, + {"_ZNSt6vectorIN4llvm13LiveIntervals6SRInfoESaIS2_EEC2ERKS4_", "std::vector>::vector(std::vector> const&)"}, + {"_ZNSt6vectorIN4llvm13LiveIntervals6SRInfoESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::LiveIntervals::SRInfo const&)"}, + {"_ZN4llvm8DenseMapIjPNS_12LiveIntervalENS_12DenseMapInfoIjEENS3_IS2_EEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZNSt8_Rb_treeIPN4llvm12MachineInstrESt4pairIKS2_St6vectorIjSaIjEEESt10_Select1stIS8_ESt4lessIS2_ESaIS8_EE16_M_insert_uniqueERKS8_", "std::_Rb_tree>>, std::_Select1st>>>, std::less, std::allocator>>>>::_M_insert_unique(std::pair>> const&)"}, + {"_ZNSt8_Rb_treeIPN4llvm12MachineInstrESt4pairIKS2_St6vectorIjSaIjEEESt10_Select1stIS8_ESt4lessIS2_ESaIS8_EE14_M_create_nodeERKS8_", "std::_Rb_tree>>, std::_Select1st>>>, std::less, std::allocator>>>>::_M_create_node(std::pair>> const&)"}, + {"_ZNSt8_Rb_treeIPN4llvm12MachineInstrESt4pairIKS2_St6vectorIjSaIjEEESt10_Select1stIS8_ESt4lessIS2_ESaIS8_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS8_ERKS8_", "std::_Rb_tree>>, std::_Select1st>>>, std::less, std::allocator>>>>::_M_insert_unique(std::_Rb_tree_iterator>>>, std::pair>> const&)"}, + {"_ZNSt6vectorISt4pairIjbESaIS1_EEC2ERKS3_", "std::vector, std::allocator>>::vector(std::vector, std::allocator>> const&)"}, + + // {"_ZNSt8_Rb_treeIPN4llvm12MachineInstrESt4pairIKS2_St6vectorIS3_IjbESaIS6_EEESt10_Select1stIS9_ESt4lessIS2_ESaIS9_EE16_M_insert_uniqueERKS9_", + // "std::_Rb_tree, std::allocator>>>, std::_Select1st, std::allocator>>>>, std::less, std::allocator, std::allocator>>>>>::_M_insert_unique(std::pair, std::allocator>>> const&)"}, + // "std::_Rb_tree, std::allocator<>>>, std::_Select1st, std::allocator<>>>>, std::less, std::allocator, std::allocator<>>>>>::_M_insert_unique(std::pair, std::allocator<>>> const&)" was returned + + {"_ZNSt6vectorISt4pairIjbESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + {"_ZN4llvm11SlotIndexes25replaceMachineInstrInMapsEPNS_12MachineInstrES2_", "llvm::SlotIndexes::replaceMachineInstrInMaps(llvm::MachineInstr*, llvm::MachineInstr*)"}, + {"_ZN4llvm8DenseMapIjPNS_12LiveIntervalENS_12DenseMapInfoIjEENS3_IS2_EEE6insertERKSt4pairIjS2_E", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIjPNS_12LiveIntervalENS_12DenseMapInfoIjEENS3_IS2_EEE16InsertIntoBucketERKjRKS2_PSt4pairIjS2_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(unsigned int const&, llvm::LiveInterval* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIjPNS_12LiveIntervalENS_12DenseMapInfoIjEENS3_IS2_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm15callDefaultCtorINS_13LiveIntervalsEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor()"}, + {"_ZN4llvm13LiveIntervalsC2Ev", "llvm::LiveIntervals::LiveIntervals()"}, + {"_ZN4llvm13LiveRangeEdit6createERNS_19MachineRegisterInfoERNS_13LiveIntervalsERNS_10VirtRegMapE", "llvm::LiveRangeEdit::create(llvm::MachineRegisterInfo&, llvm::LiveIntervals&, llvm::VirtRegMap&)"}, + {"_ZN4llvm13LiveRangeEdit14scanRemattableERNS_13LiveIntervalsERKNS_15TargetInstrInfoEPNS_13AliasAnalysisE", "llvm::LiveRangeEdit::scanRemattable(llvm::LiveIntervals&, llvm::TargetInstrInfo const&, llvm::AliasAnalysis*)"}, + {"_ZN4llvm13LiveRangeEdit19anyRematerializableERNS_13LiveIntervalsERKNS_15TargetInstrInfoEPNS_13AliasAnalysisE", "llvm::LiveRangeEdit::anyRematerializable(llvm::LiveIntervals&, llvm::TargetInstrInfo const&, llvm::AliasAnalysis*)"}, + {"_ZN4llvm13LiveRangeEdit18allUsesAvailableAtEPKNS_12MachineInstrENS_9SlotIndexES4_RNS_13LiveIntervalsE", "llvm::LiveRangeEdit::allUsesAvailableAt(llvm::MachineInstr const*, llvm::SlotIndex, llvm::SlotIndex, llvm::LiveIntervals&)"}, + {"_ZN4llvm13LiveRangeEdit18canRematerializeAtERNS0_5RematENS_9SlotIndexEbRNS_13LiveIntervalsE", "llvm::LiveRangeEdit::canRematerializeAt(llvm::LiveRangeEdit::Remat&, llvm::SlotIndex, bool, llvm::LiveIntervals&)"}, + {"_ZN4llvm13LiveRangeEdit15rematerializeAtERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEEjRKNS0_5RematERNS_13LiveIntervalsERKNS_15TargetInstrInfoERKNS_18TargetRegisterInfoE", "llvm::LiveRangeEdit::rematerializeAt(llvm::MachineBasicBlock&, llvm::ilist_iterator, unsigned int, llvm::LiveRangeEdit::Remat const&, llvm::LiveIntervals&, llvm::TargetInstrInfo const&, llvm::TargetRegisterInfo const&)"}, + {"_ZN4llvm24initializeLiveStacksPassERNS_12PassRegistryE", "llvm::initializeLiveStacksPass(llvm::PassRegistry&)"}, + {"_ZNK4llvm10LiveStacks16getAnalysisUsageERNS_13AnalysisUsageE", "llvm::LiveStacks::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN4llvm10LiveStacks13releaseMemoryEv", "llvm::LiveStacks::releaseMemory()"}, + {"_ZN4llvm10LiveStacks20runOnMachineFunctionERNS_15MachineFunctionE", "llvm::LiveStacks::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN4llvm10LiveStacks19getOrCreateIntervalEiPKNS_19TargetRegisterClassE", "llvm::LiveStacks::getOrCreateInterval(int, llvm::TargetRegisterClass const*)"}, + {"_ZNK4llvm10LiveStacks5printERNS_11raw_ostreamEPKNS_6ModuleE", "llvm::LiveStacks::print(llvm::raw_ostream&, llvm::Module const*) const"}, + {"_ZN4llvm10LiveStacksD1Ev", "llvm::LiveStacks::~LiveStacks()"}, + {"_ZN4llvm10LiveStacksD0Ev", "llvm::LiveStacks::~LiveStacks()"}, + {"_ZNSt8_Rb_treeIiSt4pairIKiPKN4llvm19TargetRegisterClassEESt10_Select1stIS6_ESt4lessIiESaIS6_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS6_ERKS6_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIiSt4pairIKiPKN4llvm19TargetRegisterClassEESt10_Select1stIS6_ESt4lessIiESaIS6_EE16_M_insert_uniqueERKS6_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZN4llvm15SmallVectorImplIPNS_6VNInfoEEaSERKS3_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + {"_ZN4llvm15SmallVectorImplINS_9LiveRangeEEaSERKS2_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + {"_ZNSt8_Rb_treeIiSt4pairIKiN4llvm12LiveIntervalEESt10_Select1stIS4_ESt4lessIiESaIS4_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS4_ERKS4_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIiSt4pairIKiN4llvm12LiveIntervalEESt10_Select1stIS4_ESt4lessIiESaIS4_EE16_M_insert_uniqueERKS4_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZNSt8_Rb_treeIiSt4pairIKiN4llvm12LiveIntervalEESt10_Select1stIS4_ESt4lessIiESaIS4_EE14_M_create_nodeERKS4_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_create_node(std::pair const&)"}, + {"_ZNSt8_Rb_treeIiSt4pairIKiPKN4llvm19TargetRegisterClassEESt10_Select1stIS6_ESt4lessIiESaIS6_EE8_M_eraseEPSt13_Rb_tree_nodeIS6_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZNSt8_Rb_treeIiSt4pairIKiN4llvm12LiveIntervalEESt10_Select1stIS4_ESt4lessIiESaIS4_EE8_M_eraseEPSt13_Rb_tree_nodeIS4_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZN4llvm15callDefaultCtorINS_10LiveStacksEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor()"}, + {"_ZN4llvm27initializeLiveVariablesPassERNS_12PassRegistryE", "llvm::initializeLiveVariablesPass(llvm::PassRegistry&)"}, + {"_ZNK4llvm13LiveVariables16getAnalysisUsageERNS_13AnalysisUsageE", "llvm::LiveVariables::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZNK4llvm13LiveVariables7VarInfo8findKillEPKNS_17MachineBasicBlockE", "llvm::LiveVariables::VarInfo::findKill(llvm::MachineBasicBlock const*) const"}, + {"_ZNK4llvm13LiveVariables7VarInfo4dumpEv", "llvm::LiveVariables::VarInfo::dump() const"}, + {"_ZN4llvm13LiveVariables10getVarInfoEj", "llvm::LiveVariables::getVarInfo(unsigned int)"}, + {"_ZN4llvm13LiveVariables23MarkVirtRegAliveInBlockERNS0_7VarInfoEPNS_17MachineBasicBlockES4_RSt6vectorIS4_SaIS4_EE", "llvm::LiveVariables::MarkVirtRegAliveInBlock(llvm::LiveVariables::VarInfo&, llvm::MachineBasicBlock*, llvm::MachineBasicBlock*, std::vector>&)"}, + {"_ZN4llvm13LiveVariables23MarkVirtRegAliveInBlockERNS0_7VarInfoEPNS_17MachineBasicBlockES4_", "llvm::LiveVariables::MarkVirtRegAliveInBlock(llvm::LiveVariables::VarInfo&, llvm::MachineBasicBlock*, llvm::MachineBasicBlock*)"}, + {"_ZN4llvm13LiveVariables16HandleVirtRegUseEjPNS_17MachineBasicBlockEPNS_12MachineInstrE", "llvm::LiveVariables::HandleVirtRegUse(unsigned int, llvm::MachineBasicBlock*, llvm::MachineInstr*)"}, + {"_ZN4llvm13LiveVariables16HandleVirtRegDefEjPNS_12MachineInstrE", "llvm::LiveVariables::HandleVirtRegDef(unsigned int, llvm::MachineInstr*)"}, + + // {"_ZN4llvm13LiveVariables18FindLastPartialDefEjRNS_8SmallSetIjLj4EEE", + // "llvm::LiveVariables::FindLastPartialDef(unsigned int, llvm::SmallSet&)"}, + // "llvm::LiveVariables::FindLastPartialDef(unsigned int, llvm::SmallSet&)" was returned + + {"_ZN4llvm13LiveVariables16HandlePhysRegUseEjPNS_12MachineInstrE", "llvm::LiveVariables::HandlePhysRegUse(unsigned int, llvm::MachineInstr*)"}, + {"_ZN4llvm13LiveVariables20FindLastRefOrPartRefEj", "llvm::LiveVariables::FindLastRefOrPartRef(unsigned int)"}, + {"_ZN4llvm13LiveVariables17HandlePhysRegKillEjPNS_12MachineInstrE", "llvm::LiveVariables::HandlePhysRegKill(unsigned int, llvm::MachineInstr*)"}, + + // {"_ZN4llvm13LiveVariables16HandlePhysRegDefEjPNS_12MachineInstrERNS_11SmallVectorIjLj4EEE", + // "llvm::LiveVariables::HandlePhysRegDef(unsigned int, llvm::MachineInstr*, llvm::SmallVector&)"}, + // "llvm::LiveVariables::HandlePhysRegDef(unsigned int, llvm::MachineInstr*, llvm::SmallVector&)" was returned + + + // {"_ZN4llvm13LiveVariables17UpdatePhysRegDefsEPNS_12MachineInstrERNS_11SmallVectorIjLj4EEE", + // "llvm::LiveVariables::UpdatePhysRegDefs(llvm::MachineInstr*, llvm::SmallVector&)"}, + // "llvm::LiveVariables::UpdatePhysRegDefs(llvm::MachineInstr*, llvm::SmallVector&)" was returned + + {"_ZN4llvm13LiveVariables20runOnMachineFunctionERNS_15MachineFunctionE", "llvm::LiveVariables::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN4llvm13LiveVariables15analyzePHINodesERKNS_15MachineFunctionE", "llvm::LiveVariables::analyzePHINodes(llvm::MachineFunction const&)"}, + {"_ZN4llvm13LiveVariables22replaceKillInstructionEjPNS_12MachineInstrES2_", "llvm::LiveVariables::replaceKillInstruction(unsigned int, llvm::MachineInstr*, llvm::MachineInstr*)"}, + {"_ZN4llvm13LiveVariables28removeVirtualRegistersKilledEPNS_12MachineInstrE", "llvm::LiveVariables::removeVirtualRegistersKilled(llvm::MachineInstr*)"}, + {"_ZN4llvm13LiveVariables7VarInfo8isLiveInERKNS_17MachineBasicBlockEjRNS_19MachineRegisterInfoE", "llvm::LiveVariables::VarInfo::isLiveIn(llvm::MachineBasicBlock const&, unsigned int, llvm::MachineRegisterInfo&)"}, + {"_ZN4llvm13LiveVariables9isLiveOutEjRKNS_17MachineBasicBlockE", "llvm::LiveVariables::isLiveOut(unsigned int, llvm::MachineBasicBlock const&)"}, + {"_ZN4llvm13LiveVariables11addNewBlockEPNS_17MachineBasicBlockES2_S2_", "llvm::LiveVariables::addNewBlock(llvm::MachineBasicBlock*, llvm::MachineBasicBlock*, llvm::MachineBasicBlock*)"}, + + // {"_ZN4llvm15SparseBitVectorILj128EE4testEj", + // "llvm::SparseBitVector<128u>::test(unsigned int)"}, + // "llvm::SparseBitVector<128>::test(unsigned int)" was returned + + + // {"_ZN4llvm15SparseBitVectorILj128EE3setEj", + // "llvm::SparseBitVector<128u>::set(unsigned int)"}, + // "llvm::SparseBitVector<128>::set(unsigned int)" was returned + + + // {"_ZN4llvm8SmallSetIjLj8EE5eraseERKj", + // "llvm::SmallSet::erase(unsigned int const&)"}, + // "llvm::SmallSet::erase(unsigned int const&)" was returned + + + // {"_ZN4llvm8SmallSetIjLj32EE6insertERKj", + // "llvm::SmallSet::insert(unsigned int const&)"}, + // "llvm::SmallSet::insert(unsigned int const&)" was returned + + {"_ZN4llvm8DenseMapIPNS_12MachineInstrEjNS_12DenseMapInfoIS2_EENS3_IjEEE6insertERKSt4pairIS2_jE", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm13LiveVariablesD1Ev", "llvm::LiveVariables::~LiveVariables()"}, + {"_ZN4llvm13LiveVariablesD0Ev", "llvm::LiveVariables::~LiveVariables()"}, + {"_ZN4llvm13LiveVariables13releaseMemoryEv", "llvm::LiveVariables::releaseMemory()"}, + + // {"_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN4llvm17MachineBasicBlockESt6vectorIS4_SaIS4_EEEElEvT_SA_T0_", + // "void std::__introsort_loop<__gnu_cxx::__normal_iterator>>, long>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, long)"}, + // got error + + + // {"_ZSt22__final_insertion_sortIN9__gnu_cxx17__normal_iteratorIPPN4llvm17MachineBasicBlockESt6vectorIS4_SaIS4_EEEEEvT_SA_", + // "void std::__final_insertion_sort<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>)"}, + // got error + + + // {"_ZSt13__heap_selectIN9__gnu_cxx17__normal_iteratorIPPN4llvm17MachineBasicBlockESt6vectorIS4_SaIS4_EEEEEvT_SA_SA_", + // "void std::__heap_select<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>)"}, + // got error + + + // {"_ZSt9sort_heapIN9__gnu_cxx17__normal_iteratorIPPN4llvm17MachineBasicBlockESt6vectorIS4_SaIS4_EEEEEvT_SA_", + // "void std::sort_heap<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>)"}, + // got error + + + // {"_ZSt9make_heapIN9__gnu_cxx17__normal_iteratorIPPN4llvm17MachineBasicBlockESt6vectorIS4_SaIS4_EEEEEvT_SA_", + // "void std::make_heap<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>)"}, + // got error + + {"_ZN4llvm8DenseMapIPNS_12MachineInstrEjNS_12DenseMapInfoIS2_EENS3_IjEEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm10IndexedMapINS_13LiveVariables7VarInfoENS_20VirtReg2IndexFunctorEE6resizeEm", "llvm::IndexedMap::resize(unsigned long)"}, + {"_ZNSt6vectorIN4llvm13LiveVariables7VarInfoESaIS2_EE6resizeEmS2_", "std::vector>::resize(unsigned long, llvm::LiveVariables::VarInfo)"}, + + // {"_ZN4llvm6iplistINS_22SparseBitVectorElementILj128EEENS_12ilist_traitsIS2_EEED2Ev", + // "llvm::iplist, llvm::ilist_traits>>::~iplist()"}, + // "llvm::iplist, llvm::ilist_traits>>::~iplist()" was returned + + + // {"_ZN4llvm15SparseBitVectorILj128EEC2ERKS1_", + // "llvm::SparseBitVector<128u>::SparseBitVector(llvm::SparseBitVector<128u> const&)"}, + // "llvm::SparseBitVector<128>::SparseBitVector(llvm::SparseBitVector<128> const&)" was returned + + + // {"_ZN4llvm5ilistINS_22SparseBitVectorElementILj128EEEE9push_backERKS2_", + // "llvm::ilist>::push_back(llvm::SparseBitVectorElement<128u> const&)"}, + // "llvm::ilist>::push_back(llvm::SparseBitVectorElement<128> const&)" was returned + + {"_ZNSt6vectorIN4llvm13LiveVariables7VarInfoESaIS2_EE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPS2_S4_EEmRKS2_", "std::vector>::_M_fill_insert(__gnu_cxx::__normal_iterator>>, unsigned long, llvm::LiveVariables::VarInfo const&)"}, + + // {"_ZSt26__uninitialized_fill_n_auxIPN4llvm13LiveVariables7VarInfoEmS2_EvT_T0_RKT1_St12__false_type", + // "void std::__uninitialized_fill_n_aux(llvm::LiveVariables::VarInfo*, unsigned long, llvm::LiveVariables::VarInfo const&, std::__false_type)"}, + // got error + + + // {"_ZN4llvm15SparseBitVectorILj128EEaSERKS1_", + // "llvm::SparseBitVector<128u>::operator=(llvm::SparseBitVector<128u> const&)"}, + // "llvm::SparseBitVector<128>::operator=(llvm::SparseBitVector<128> const&)" was returned + + {"_ZNSt6vectorIPN4llvm12MachineInstrESaIS2_EEaSERKS4_", "std::vector>::operator=(std::vector> const&)"}, + + // {"_ZN4llvm15SparseBitVectorILj128EE23SparseBitVectorIterator20AdvanceToNextNonZeroEv", + // "llvm::SparseBitVector<128u>::SparseBitVectorIterator::AdvanceToNextNonZero()"}, + // "llvm::SparseBitVector<128>::SparseBitVectorIterator::AdvanceToNextNonZero()" was returned + + + // {"_ZN4llvm15SparseBitVectorILj128EE23SparseBitVectorIteratorC2EPKS1_b", + // "llvm::SparseBitVector<128u>::SparseBitVectorIterator::SparseBitVectorIterator(llvm::SparseBitVector<128u> const*, bool)"}, + // "llvm::SparseBitVector<128>::SparseBitVectorIterator::SparseBitVectorIterator(llvm::SparseBitVector<128> const*, bool)" was returned + + + // {"_ZN4llvm15SparseBitVectorILj128EE14FindLowerBoundEj", + // "llvm::SparseBitVector<128u>::FindLowerBound(unsigned int)"}, + // "llvm::SparseBitVector<128>::FindLowerBound(unsigned int)" was returned + + {"_ZN4llvm13LiveVariablesD2Ev", "llvm::LiveVariables::~LiveVariables()"}, + {"_ZN4llvm15callDefaultCtorINS_13LiveVariablesEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor()"}, + {"_ZN4llvm13LiveVariablesC2Ev", "llvm::LiveVariables::LiveVariables()"}, + {"_ZN4llvm34createLocalStackSlotAllocationPassEv", "llvm::createLocalStackSlotAllocationPass()"}, + {"_ZN12_GLOBAL__N_118LocalStackSlotPassD1Ev", "(anonymous namespace)::LocalStackSlotPass::~LocalStackSlotPass()"}, + {"_ZN12_GLOBAL__N_118LocalStackSlotPassD0Ev", "(anonymous namespace)::LocalStackSlotPass::~LocalStackSlotPass()"}, + {"_ZNK12_GLOBAL__N_118LocalStackSlotPass11getPassNameEv", "(anonymous namespace)::LocalStackSlotPass::getPassName() const"}, + {"_ZNK12_GLOBAL__N_118LocalStackSlotPass16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::LocalStackSlotPass::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_118LocalStackSlotPass20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::LocalStackSlotPass::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN4llvm25array_pod_sort_comparatorIN12_GLOBAL__N_18FrameRefEEEiPKvS4_", "int llvm::array_pod_sort_comparator<(anonymous namespace)::FrameRef>(void const*, void const*)"}, + {"_ZN12_GLOBAL__N_118LocalStackSlotPass17AdjustStackOffsetEPN4llvm16MachineFrameInfoEiRxbRj", "(anonymous namespace)::LocalStackSlotPass::AdjustStackOffset(llvm::MachineFrameInfo*, int, long long&, bool, unsigned int&)"}, + {"_ZN4llvm15SmallVectorImplIxE6resizeEj", "llvm::SmallVectorImpl::resize(unsigned int)"}, + {"_ZN4llvm22createLowerSubregsPassEv", "llvm::createLowerSubregsPass()"}, + {"_ZN12_GLOBAL__N_127LowerSubregsInstructionPassD1Ev", "(anonymous namespace)::LowerSubregsInstructionPass::~LowerSubregsInstructionPass()"}, + {"_ZN12_GLOBAL__N_127LowerSubregsInstructionPassD0Ev", "(anonymous namespace)::LowerSubregsInstructionPass::~LowerSubregsInstructionPass()"}, + {"_ZNK12_GLOBAL__N_127LowerSubregsInstructionPass11getPassNameEv", "(anonymous namespace)::LowerSubregsInstructionPass::getPassName() const"}, + {"_ZNK12_GLOBAL__N_127LowerSubregsInstructionPass16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::LowerSubregsInstructionPass::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_127LowerSubregsInstructionPass20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::LowerSubregsInstructionPass::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN4llvm17MachineBasicBlockC1ERNS_15MachineFunctionEPKNS_10BasicBlockE", "llvm::MachineBasicBlock::MachineBasicBlock(llvm::MachineFunction&, llvm::BasicBlock const*)"}, + {"_ZN4llvm17MachineBasicBlockC2ERNS_15MachineFunctionEPKNS_10BasicBlockE", "llvm::MachineBasicBlock::MachineBasicBlock(llvm::MachineFunction&, llvm::BasicBlock const*)"}, + {"_ZN4llvm17MachineBasicBlockD1Ev", "llvm::MachineBasicBlock::~MachineBasicBlock()"}, + {"_ZN4llvm17MachineBasicBlockD2Ev", "llvm::MachineBasicBlock::~MachineBasicBlock()"}, + {"_ZNK4llvm17MachineBasicBlock9getSymbolEv", "llvm::MachineBasicBlock::getSymbol() const"}, + {"_ZN4llvmlsERNS_11raw_ostreamERKNS_17MachineBasicBlockE", "llvm::operator<<(llvm::raw_ostream&, llvm::MachineBasicBlock const&)"}, + {"_ZNK4llvm17MachineBasicBlock5printERNS_11raw_ostreamEPNS_11SlotIndexesE", "llvm::MachineBasicBlock::print(llvm::raw_ostream&, llvm::SlotIndexes*) const"}, + {"_ZN4llvm12ilist_traitsINS_17MachineBasicBlockEE13addNodeToListEPS1_", "llvm::ilist_traits::addNodeToList(llvm::MachineBasicBlock*)"}, + {"_ZN4llvm12ilist_traitsINS_17MachineBasicBlockEE18removeNodeFromListEPS1_", "llvm::ilist_traits::removeNodeFromList(llvm::MachineBasicBlock*)"}, + {"_ZN4llvm12ilist_traitsINS_12MachineInstrEE13addNodeToListEPS1_", "llvm::ilist_traits::addNodeToList(llvm::MachineInstr*)"}, + {"_ZN4llvm12ilist_traitsINS_12MachineInstrEE18removeNodeFromListEPS1_", "llvm::ilist_traits::removeNodeFromList(llvm::MachineInstr*)"}, + {"_ZN4llvm12ilist_traitsINS_12MachineInstrEE21transferNodesFromListERS2_NS_14ilist_iteratorIS1_EES5_", "llvm::ilist_traits::transferNodesFromList(llvm::ilist_traits&, llvm::ilist_iterator, llvm::ilist_iterator)"}, + {"_ZN4llvm12ilist_traitsINS_12MachineInstrEE10deleteNodeEPS1_", "llvm::ilist_traits::deleteNode(llvm::MachineInstr*)"}, + {"_ZN4llvm17MachineBasicBlock14getFirstNonPHIEv", "llvm::MachineBasicBlock::getFirstNonPHI()"}, + {"_ZN4llvm17MachineBasicBlock17SkipPHIsAndLabelsENS_14ilist_iteratorINS_12MachineInstrEEE", "llvm::MachineBasicBlock::SkipPHIsAndLabels(llvm::ilist_iterator)"}, + {"_ZN4llvm17MachineBasicBlock18getFirstTerminatorEv", "llvm::MachineBasicBlock::getFirstTerminator()"}, + {"_ZN4llvm17MachineBasicBlock20getLastNonDebugInstrEv", "llvm::MachineBasicBlock::getLastNonDebugInstr()"}, + {"_ZNK4llvm17MachineBasicBlock22getLandingPadSuccessorEv", "llvm::MachineBasicBlock::getLandingPadSuccessor() const"}, + {"_ZNK4llvm17MachineBasicBlock4dumpEv", "llvm::MachineBasicBlock::dump() const"}, + {"_ZNK4llvm17MachineBasicBlock7getNameEv", "llvm::MachineBasicBlock::getName() const"}, + {"_ZN4llvm17MachineBasicBlock12removeLiveInEj", "llvm::MachineBasicBlock::removeLiveIn(unsigned int)"}, + {"_ZNK4llvm17MachineBasicBlock8isLiveInEj", "llvm::MachineBasicBlock::isLiveIn(unsigned int) const"}, + {"_ZN4llvm17MachineBasicBlock10moveBeforeEPS0_", "llvm::MachineBasicBlock::moveBefore(llvm::MachineBasicBlock*)"}, + {"_ZN4llvm17MachineBasicBlock9moveAfterEPS0_", "llvm::MachineBasicBlock::moveAfter(llvm::MachineBasicBlock*)"}, + {"_ZN4llvm17MachineBasicBlock16updateTerminatorEv", "llvm::MachineBasicBlock::updateTerminator()"}, + {"_ZNK4llvm17MachineBasicBlock17isLayoutSuccessorEPKS0_", "llvm::MachineBasicBlock::isLayoutSuccessor(llvm::MachineBasicBlock const*) const"}, + {"_ZN4llvm17MachineBasicBlock12addSuccessorEPS0_", "llvm::MachineBasicBlock::addSuccessor(llvm::MachineBasicBlock*)"}, + {"_ZN4llvm17MachineBasicBlock14addPredecessorEPS0_", "llvm::MachineBasicBlock::addPredecessor(llvm::MachineBasicBlock*)"}, + {"_ZN4llvm17MachineBasicBlock15removeSuccessorEPS0_", "llvm::MachineBasicBlock::removeSuccessor(llvm::MachineBasicBlock*)"}, + {"_ZN4llvm17MachineBasicBlock17removePredecessorEPS0_", "llvm::MachineBasicBlock::removePredecessor(llvm::MachineBasicBlock*)"}, + {"_ZN4llvm17MachineBasicBlock15removeSuccessorEN9__gnu_cxx17__normal_iteratorIPPS0_St6vectorIS3_SaIS3_EEEE", "llvm::MachineBasicBlock::removeSuccessor(__gnu_cxx::__normal_iterator>>)"}, + {"_ZN4llvm17MachineBasicBlock18transferSuccessorsEPS0_", "llvm::MachineBasicBlock::transferSuccessors(llvm::MachineBasicBlock*)"}, + {"_ZN4llvm17MachineBasicBlock31transferSuccessorsAndUpdatePHIsEPS0_", "llvm::MachineBasicBlock::transferSuccessorsAndUpdatePHIs(llvm::MachineBasicBlock*)"}, + {"_ZNK4llvm17MachineBasicBlock11isSuccessorEPKS0_", "llvm::MachineBasicBlock::isSuccessor(llvm::MachineBasicBlock const*) const"}, + {"_ZN4llvm17MachineBasicBlock14canFallThroughEv", "llvm::MachineBasicBlock::canFallThrough()"}, + {"_ZN4llvm17MachineBasicBlock17SplitCriticalEdgeEPS0_PNS_4PassE", "llvm::MachineBasicBlock::SplitCriticalEdge(llvm::MachineBasicBlock*, llvm::Pass*)"}, + {"_ZN4llvm17MachineBasicBlock22ReplaceUsesOfBlockWithEPS0_S1_", "llvm::MachineBasicBlock::ReplaceUsesOfBlockWith(llvm::MachineBasicBlock*, llvm::MachineBasicBlock*)"}, + {"_ZN4llvm17MachineBasicBlock16removeFromParentEv", "llvm::MachineBasicBlock::removeFromParent()"}, + {"_ZN4llvm17MachineBasicBlock15eraseFromParentEv", "llvm::MachineBasicBlock::eraseFromParent()"}, + {"_ZN4llvm17MachineBasicBlock20CorrectExtraCFGEdgesEPS0_S1_b", "llvm::MachineBasicBlock::CorrectExtraCFGEdges(llvm::MachineBasicBlock*, llvm::MachineBasicBlock*, bool)"}, + {"_ZN4llvm17MachineBasicBlock12findDebugLocERNS_14ilist_iteratorINS_12MachineInstrEEE", "llvm::MachineBasicBlock::findDebugLoc(llvm::ilist_iterator&)"}, + {"_ZN4llvm14WriteAsOperandERNS_11raw_ostreamEPKNS_17MachineBasicBlockEb", "llvm::WriteAsOperand(llvm::raw_ostream&, llvm::MachineBasicBlock const*, bool)"}, + {"_ZN4llvm8LoopBaseINS_17MachineBasicBlockENS_11MachineLoopEE19addBasicBlockToLoopEPS1_RNS_12LoopInfoBaseIS1_S2_EE", "llvm::LoopBase::addBasicBlockToLoop(llvm::MachineBasicBlock*, llvm::LoopInfoBase&)"}, + {"_ZN4llvm8DenseMapIPNS_17MachineBasicBlockEPNS_11MachineLoopENS_12DenseMapInfoIS2_EENS5_IS4_EEE16InsertIntoBucketERKS2_RKS4_PSt4pairIS2_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::MachineBasicBlock* const&, llvm::MachineLoop* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_17MachineBasicBlockEPNS_11MachineLoopENS_12DenseMapInfoIS2_EENS5_IS4_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + + // {"_ZSt6__findIN9__gnu_cxx17__normal_iteratorIPKPN4llvm17MachineBasicBlockESt6vectorIS4_SaIS4_EEEEPKS3_ET_SD_SD_RKT0_St26random_access_iterator_tag", + // "__gnu_cxx::__normal_iterator>> std::__find<__gnu_cxx::__normal_iterator>>, llvm::MachineBasicBlock const*>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, llvm::MachineBasicBlock const* const&, std::random_access_iterator_tag)"}, + // got error + + + // {"_ZSt6__findIN9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEEjET_S8_S8_RKT0_St26random_access_iterator_tag", + // "__gnu_cxx::__normal_iterator>> std::__find<__gnu_cxx::__normal_iterator>>, unsigned int>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, unsigned int const&, std::random_access_iterator_tag)"}, + // got error + + + // {"_ZSt6__findIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEjET_S7_S7_RKT0_St26random_access_iterator_tag", + // "__gnu_cxx::__normal_iterator>> std::__find<__gnu_cxx::__normal_iterator>>, unsigned int>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, unsigned int const&, std::random_access_iterator_tag)"}, + // got error + + {"_ZNSt6vectorIPN4llvm15DomTreeNodeBaseINS0_17MachineBasicBlockEEESaIS4_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS4_S6_EERKS4_", "std::vector*, std::allocator*>>::_M_insert_aux(__gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>, llvm::DomTreeNodeBase* const&)"}, + + // {"_ZSt6__findIN9__gnu_cxx17__normal_iteratorIPPN4llvm15DomTreeNodeBaseINS2_17MachineBasicBlockEEESt6vectorIS6_SaIS6_EEEES6_ET_SC_SC_RKT0_St26random_access_iterator_tag", + // "__gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>> std::__find<__gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>, llvm::DomTreeNodeBase*>(__gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>, __gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>, llvm::DomTreeNodeBase* const&, std::random_access_iterator_tag)"}, + // got error + + {"_ZN4llvm8DenseMapIPNS_17MachineBasicBlockEPNS_15DomTreeNodeBaseIS1_EENS_12DenseMapInfoIS2_EENS6_IS5_EEE16InsertIntoBucketERKS2_RKS5_PSt4pairIS2_S5_E", "llvm::DenseMap*, llvm::DenseMapInfo, llvm::DenseMapInfo*>>::InsertIntoBucket(llvm::MachineBasicBlock* const&, llvm::DomTreeNodeBase* const&, std::pair*>*)"}, + {"_ZN4llvm8DenseMapIPNS_17MachineBasicBlockEPNS_15DomTreeNodeBaseIS1_EENS_12DenseMapInfoIS2_EENS6_IS5_EEE4growEj", "llvm::DenseMap*, llvm::DenseMapInfo, llvm::DenseMapInfo*>>::grow(unsigned int)"}, + {"_ZN4llvm23SmallVectorTemplateBaseISt4pairIPNS_15DomTreeNodeBaseINS_17MachineBasicBlockEEEN9__gnu_cxx17__normal_iteratorIPS5_St6vectorIS5_SaIS5_EEEEELb0EE4growEm", "llvm::SmallVectorTemplateBase*, __gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>>, false>::grow(unsigned long)"}, + {"_ZN4llvm6iplistINS_17MachineBasicBlockENS_12ilist_traitsIS1_EEE6insertENS_14ilist_iteratorIS1_EEPS1_", "llvm::iplist>::insert(llvm::ilist_iterator, llvm::MachineBasicBlock*)"}, + {"_ZN4llvm24initializeMachineCSEPassERNS_12PassRegistryE", "llvm::initializeMachineCSEPass(llvm::PassRegistry&)"}, + {"_ZN4llvm20createMachineCSEPassEv", "llvm::createMachineCSEPass()"}, + {"_ZN12_GLOBAL__N_110MachineCSEC1Ev", "(anonymous namespace)::MachineCSE::MachineCSE()"}, + {"_ZN12_GLOBAL__N_110MachineCSED1Ev", "(anonymous namespace)::MachineCSE::~MachineCSE()"}, + {"_ZN12_GLOBAL__N_110MachineCSED0Ev", "(anonymous namespace)::MachineCSE::~MachineCSE()"}, + {"_ZNK12_GLOBAL__N_110MachineCSE16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::MachineCSE::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_110MachineCSE13releaseMemoryEv", "(anonymous namespace)::MachineCSE::releaseMemory()"}, + {"_ZN12_GLOBAL__N_110MachineCSE20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::MachineCSE::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN12_GLOBAL__N_110MachineCSE9ExitScopeEPN4llvm17MachineBasicBlockE", "(anonymous namespace)::MachineCSE::ExitScope(llvm::MachineBasicBlock*)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_110MachineCSEEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::MachineCSE>()"}, + + // {"_ZN4llvm20ScopedHashTableScopeIPNS_12MachineInstrEjNS_27MachineInstrExpressionTraitENS_18RecyclingAllocatorINS_16BumpPtrAllocatorENS_18ScopedHashTableValIS2_jEELm32ELm8EEEED2Ev", + // "llvm::ScopedHashTableScope, 32ul, 8ul>>::~ScopedHashTableScope()"}, + // "llvm::ScopedHashTableScope, 32, 8>>::~ScopedHashTableScope()" was returned + + {"_ZNK4llvm8DenseMapIPNS_12MachineInstrEPNS_18ScopedHashTableValIS2_jEENS_27MachineInstrExpressionTraitENS_12DenseMapInfoIS5_EEE15LookupBucketForERKS2_RPSt4pairIS2_S5_E", "llvm::DenseMap*, llvm::MachineInstrExpressionTrait, llvm::DenseMapInfo*>>::LookupBucketFor(llvm::MachineInstr* const&, std::pair*>*&) const"}, + {"_ZN4llvm8DenseMapIPNS_12MachineInstrEPNS_18ScopedHashTableValIS2_jEENS_27MachineInstrExpressionTraitENS_12DenseMapInfoIS5_EEE16InsertIntoBucketERKS2_RKS5_PSt4pairIS2_S5_E", "llvm::DenseMap*, llvm::MachineInstrExpressionTrait, llvm::DenseMapInfo*>>::InsertIntoBucket(llvm::MachineInstr* const&, llvm::ScopedHashTableVal* const&, std::pair*>*)"}, + {"_ZN4llvm8DenseMapIPNS_12MachineInstrEPNS_18ScopedHashTableValIS2_jEENS_27MachineInstrExpressionTraitENS_12DenseMapInfoIS5_EEE4growEj", "llvm::DenseMap*, llvm::MachineInstrExpressionTrait, llvm::DenseMapInfo*>>::grow(unsigned int)"}, + + // {"_ZN4llvm15ScopedHashTableIPNS_12MachineInstrEjNS_27MachineInstrExpressionTraitENS_18RecyclingAllocatorINS_16BumpPtrAllocatorENS_18ScopedHashTableValIS2_jEELm32ELm8EEEE6insertERKS2_RKj", + // "llvm::ScopedHashTable, 32ul, 8ul>>::insert(llvm::MachineInstr* const&, unsigned int const&)"}, + // "llvm::ScopedHashTable, 32, 8>>::insert(llvm::MachineInstr* const&, unsigned int const&)" was returned + + + // {"_ZN4llvm8DenseMapIPNS_17MachineBasicBlockEPNS_20ScopedHashTableScopeIPNS_12MachineInstrEjNS_27MachineInstrExpressionTraitENS_18RecyclingAllocatorINS_16BumpPtrAllocatorENS_18ScopedHashTableValIS5_jEELm32ELm8EEEEENS_12DenseMapInfoIS2_EENSE_ISD_EEE16InsertIntoBucketERKS2_RKSD_PSt4pairIS2_SD_E", + // "llvm::DenseMap, 32ul, 8ul>>*, llvm::DenseMapInfo, llvm::DenseMapInfo, 32ul, 8ul>>*>>::InsertIntoBucket(llvm::MachineBasicBlock* const&, llvm::ScopedHashTableScope, 32ul, 8ul>>* const&, std::pair, 32ul, 8ul>>*>*)"}, + // "llvm::DenseMap, 32, 8>>*, llvm::DenseMapInfo, llvm::DenseMapInfo, 32, 8>>*>>::InsertIntoBucket(llvm::MachineBasicBlock* const&, llvm::ScopedHashTableScope, 32, 8>>* const&, std::pair, 32, 8>>*>*)" was returned + + + // {"_ZN4llvm8DenseMapIPNS_17MachineBasicBlockEPNS_20ScopedHashTableScopeIPNS_12MachineInstrEjNS_27MachineInstrExpressionTraitENS_18RecyclingAllocatorINS_16BumpPtrAllocatorENS_18ScopedHashTableValIS5_jEELm32ELm8EEEEENS_12DenseMapInfoIS2_EENSE_ISD_EEE4growEj", + // "llvm::DenseMap, 32ul, 8ul>>*, llvm::DenseMapInfo, llvm::DenseMapInfo, 32ul, 8ul>>*>>::grow(unsigned int)"}, + // "llvm::DenseMap, 32, 8>>*, llvm::DenseMapInfo, llvm::DenseMapInfo, 32, 8>>*>>::grow(unsigned int)" was returned + + {"_ZN4llvm8DenseMapIPNS_15DomTreeNodeBaseINS_17MachineBasicBlockEEES4_NS_12DenseMapInfoIS4_EES6_E16InsertIntoBucketERKS4_S9_PSt4pairIS4_S4_E", "llvm::DenseMap*, llvm::DomTreeNodeBase*, llvm::DenseMapInfo*>, llvm::DenseMapInfo*>>::InsertIntoBucket(llvm::DomTreeNodeBase* const&, llvm::DomTreeNodeBase* const&, std::pair*, llvm::DomTreeNodeBase*>*)"}, + {"_ZN4llvm8DenseMapIPNS_15DomTreeNodeBaseINS_17MachineBasicBlockEEES4_NS_12DenseMapInfoIS4_EES6_E4growEj", "llvm::DenseMap*, llvm::DomTreeNodeBase*, llvm::DenseMapInfo*>, llvm::DenseMapInfo*>>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPNS_15DomTreeNodeBaseINS_17MachineBasicBlockEEEjNS_12DenseMapInfoIS4_EENS5_IjEEE16InsertIntoBucketERKS4_RKjPSt4pairIS4_jE", "llvm::DenseMap*, unsigned int, llvm::DenseMapInfo*>, llvm::DenseMapInfo>::InsertIntoBucket(llvm::DomTreeNodeBase* const&, unsigned int const&, std::pair*, unsigned int>*)"}, + {"_ZN4llvm8DenseMapIPNS_15DomTreeNodeBaseINS_17MachineBasicBlockEEEjNS_12DenseMapInfoIS4_EENS5_IjEEE4growEj", "llvm::DenseMap*, unsigned int, llvm::DenseMapInfo*>, llvm::DenseMapInfo>::grow(unsigned int)"}, + + // {"_ZN4llvm8DenseMapIPNS_17MachineBasicBlockEPNS_20ScopedHashTableScopeIPNS_12MachineInstrEjNS_27MachineInstrExpressionTraitENS_18RecyclingAllocatorINS_16BumpPtrAllocatorENS_18ScopedHashTableValIS5_jEELm32ELm8EEEEENS_12DenseMapInfoIS2_EENSE_ISD_EEE16shrink_and_clearEv", + // "llvm::DenseMap, 32ul, 8ul>>*, llvm::DenseMapInfo, llvm::DenseMapInfo, 32ul, 8ul>>*>>::shrink_and_clear()"}, + // "llvm::DenseMap, 32, 8>>*, llvm::DenseMapInfo, llvm::DenseMapInfo, 32, 8>>*>>::shrink_and_clear()" was returned + + + // {"_ZN4llvm15ScopedHashTableIPNS_12MachineInstrEjNS_27MachineInstrExpressionTraitENS_18RecyclingAllocatorINS_16BumpPtrAllocatorENS_18ScopedHashTableValIS2_jEELm32ELm8EEEED2Ev", + // "llvm::ScopedHashTable, 32ul, 8ul>>::~ScopedHashTable()"}, + // "llvm::ScopedHashTable, 32, 8>>::~ScopedHashTable()" was returned + + {"_ZN4llvm12PrintDomTreeINS_17MachineBasicBlockEEEvPKNS_15DomTreeNodeBaseIT_EERNS_11raw_ostreamEj", "void llvm::PrintDomTree(llvm::DomTreeNodeBase const*, llvm::raw_ostream&, unsigned int)"}, + {"_ZN4llvm34initializeMachineDominatorTreePassERNS_12PassRegistryE", "llvm::initializeMachineDominatorTreePass(llvm::PassRegistry&)"}, + {"_ZNK4llvm20MachineDominatorTree16getAnalysisUsageERNS_13AnalysisUsageE", "llvm::MachineDominatorTree::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN4llvm20MachineDominatorTree20runOnMachineFunctionERNS_15MachineFunctionE", "llvm::MachineDominatorTree::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN4llvm20MachineDominatorTreeC1Ev", "llvm::MachineDominatorTree::MachineDominatorTree()"}, + {"_ZN4llvm20MachineDominatorTreeC2Ev", "llvm::MachineDominatorTree::MachineDominatorTree()"}, + {"_ZN4llvm20MachineDominatorTreeD0Ev", "llvm::MachineDominatorTree::~MachineDominatorTree()"}, + {"_ZN4llvm20MachineDominatorTreeD1Ev", "llvm::MachineDominatorTree::~MachineDominatorTree()"}, + {"_ZN4llvm20MachineDominatorTreeD2Ev", "llvm::MachineDominatorTree::~MachineDominatorTree()"}, + {"_ZN4llvm20MachineDominatorTree13releaseMemoryEv", "llvm::MachineDominatorTree::releaseMemory()"}, + {"_ZNK4llvm20MachineDominatorTree5printERNS_11raw_ostreamEPKNS_6ModuleE", "llvm::MachineDominatorTree::print(llvm::raw_ostream&, llvm::Module const*) const"}, + {"_ZN4llvm15DomTreeNodeBaseINS_17MachineBasicBlockEE5beginEv", "llvm::DomTreeNodeBase::begin()"}, + {"_ZN4llvm15DomTreeNodeBaseINS_17MachineBasicBlockEE3endEv", "llvm::DomTreeNodeBase::end()"}, + {"_ZNK4llvm15DomTreeNodeBaseINS_17MachineBasicBlockEE5beginEv", "llvm::DomTreeNodeBase::begin() const"}, + {"_ZNK4llvm15DomTreeNodeBaseINS_17MachineBasicBlockEE3endEv", "llvm::DomTreeNodeBase::end() const"}, + {"_ZNK4llvm15DomTreeNodeBaseINS_17MachineBasicBlockEE8getBlockEv", "llvm::DomTreeNodeBase::getBlock() const"}, + {"_ZNK4llvm15DomTreeNodeBaseINS_17MachineBasicBlockEE7getIDomEv", "llvm::DomTreeNodeBase::getIDom() const"}, + {"_ZNK4llvm15DomTreeNodeBaseINS_17MachineBasicBlockEE11getChildrenEv", "llvm::DomTreeNodeBase::getChildren() const"}, + {"_ZN4llvm15DomTreeNodeBaseINS_17MachineBasicBlockEEC1EPS1_PS2_", "llvm::DomTreeNodeBase::DomTreeNodeBase(llvm::MachineBasicBlock*, llvm::DomTreeNodeBase*)"}, + {"_ZN4llvm15DomTreeNodeBaseINS_17MachineBasicBlockEEC2EPS1_PS2_", "llvm::DomTreeNodeBase::DomTreeNodeBase(llvm::MachineBasicBlock*, llvm::DomTreeNodeBase*)"}, + {"_ZN4llvm15DomTreeNodeBaseINS_17MachineBasicBlockEE8addChildEPS2_", "llvm::DomTreeNodeBase::addChild(llvm::DomTreeNodeBase*)"}, + {"_ZNK4llvm15DomTreeNodeBaseINS_17MachineBasicBlockEE14getNumChildrenEv", "llvm::DomTreeNodeBase::getNumChildren() const"}, + {"_ZN4llvm15DomTreeNodeBaseINS_17MachineBasicBlockEE16clearAllChildrenEv", "llvm::DomTreeNodeBase::clearAllChildren()"}, + {"_ZN4llvm15DomTreeNodeBaseINS_17MachineBasicBlockEE7compareEPS2_", "llvm::DomTreeNodeBase::compare(llvm::DomTreeNodeBase*)"}, + {"_ZN4llvm15DomTreeNodeBaseINS_17MachineBasicBlockEE7setIDomEPS2_", "llvm::DomTreeNodeBase::setIDom(llvm::DomTreeNodeBase*)"}, + {"_ZNK4llvm15DomTreeNodeBaseINS_17MachineBasicBlockEE11getDFSNumInEv", "llvm::DomTreeNodeBase::getDFSNumIn() const"}, + {"_ZNK4llvm15DomTreeNodeBaseINS_17MachineBasicBlockEE12getDFSNumOutEv", "llvm::DomTreeNodeBase::getDFSNumOut() const"}, + {"_ZNK4llvm15DomTreeNodeBaseINS_17MachineBasicBlockEE11DominatedByEPKS2_", "llvm::DomTreeNodeBase::DominatedBy(llvm::DomTreeNodeBase const*) const"}, + {"_ZN4llvm17DominatorTreeBaseINS_17MachineBasicBlockEE7InfoRecC1Ev", "llvm::DominatorTreeBase::InfoRec::InfoRec()"}, + {"_ZN4llvm17DominatorTreeBaseINS_17MachineBasicBlockEE7InfoRecC2Ev", "llvm::DominatorTreeBase::InfoRec::InfoRec()"}, + {"_ZN4llvm17DominatorTreeBaseINS_17MachineBasicBlockEE5resetEv", "llvm::DominatorTreeBase::reset()"}, + {"_ZN4llvm17DominatorTreeBaseINS_17MachineBasicBlockEEC1Eb", "llvm::DominatorTreeBase::DominatorTreeBase(bool)"}, + {"_ZN4llvm17DominatorTreeBaseINS_17MachineBasicBlockEEC2Eb", "llvm::DominatorTreeBase::DominatorTreeBase(bool)"}, + {"_ZN4llvm17DominatorTreeBaseINS_17MachineBasicBlockEED0Ev", "llvm::DominatorTreeBase::~DominatorTreeBase()"}, + {"_ZN4llvm17DominatorTreeBaseINS_17MachineBasicBlockEED1Ev", "llvm::DominatorTreeBase::~DominatorTreeBase()"}, + {"_ZN4llvm17DominatorTreeBaseINS_17MachineBasicBlockEED2Ev", "llvm::DominatorTreeBase::~DominatorTreeBase()"}, + {"_ZNK4llvm17DominatorTreeBaseINS_17MachineBasicBlockEE7compareERS2_", "llvm::DominatorTreeBase::compare(llvm::DominatorTreeBase&) const"}, + {"_ZN4llvm17DominatorTreeBaseINS_17MachineBasicBlockEE13releaseMemoryEv", "llvm::DominatorTreeBase::releaseMemory()"}, + {"_ZNK4llvm17DominatorTreeBaseINS_17MachineBasicBlockEE7getNodeEPS1_", "llvm::DominatorTreeBase::getNode(llvm::MachineBasicBlock*) const"}, + {"_ZN4llvm17DominatorTreeBaseINS_17MachineBasicBlockEE11getRootNodeEv", "llvm::DominatorTreeBase::getRootNode()"}, + {"_ZNK4llvm17DominatorTreeBaseINS_17MachineBasicBlockEE11getRootNodeEv", "llvm::DominatorTreeBase::getRootNode() const"}, + {"_ZNK4llvm17DominatorTreeBaseINS_17MachineBasicBlockEE17properlyDominatesEPKNS_15DomTreeNodeBaseIS1_EES6_", "llvm::DominatorTreeBase::properlyDominates(llvm::DomTreeNodeBase const*, llvm::DomTreeNodeBase const*) const"}, + {"_ZNK4llvm17DominatorTreeBaseINS_17MachineBasicBlockEE23dominatedBySlowTreeWalkEPKNS_15DomTreeNodeBaseIS1_EES6_", "llvm::DominatorTreeBase::dominatedBySlowTreeWalk(llvm::DomTreeNodeBase const*, llvm::DomTreeNodeBase const*) const"}, + {"_ZN4llvm17DominatorTreeBaseINS_17MachineBasicBlockEE17properlyDominatesEPKS1_S4_", "llvm::DominatorTreeBase::properlyDominates(llvm::MachineBasicBlock const*, llvm::MachineBasicBlock const*)"}, + {"_ZN4llvm17DominatorTreeBaseINS_17MachineBasicBlockEE20isReachableFromEntryEPKS1_", "llvm::DominatorTreeBase::isReachableFromEntry(llvm::MachineBasicBlock const*)"}, + {"_ZN4llvm17DominatorTreeBaseINS_17MachineBasicBlockEE9dominatesEPKS1_S4_", "llvm::DominatorTreeBase::dominates(llvm::MachineBasicBlock const*, llvm::MachineBasicBlock const*)"}, + {"_ZN4llvm17DominatorTreeBaseINS_17MachineBasicBlockEE9dominatesEPKNS_15DomTreeNodeBaseIS1_EES6_", "llvm::DominatorTreeBase::dominates(llvm::DomTreeNodeBase const*, llvm::DomTreeNodeBase const*)"}, + {"_ZN4llvm17DominatorTreeBaseINS_17MachineBasicBlockEE16updateDFSNumbersEv", "llvm::DominatorTreeBase::updateDFSNumbers()"}, + {"_ZNK4llvm17DominatorTreeBaseINS_17MachineBasicBlockEE7getRootEv", "llvm::DominatorTreeBase::getRoot() const"}, + {"_ZN4llvm17DominatorTreeBaseINS_17MachineBasicBlockEE26findNearestCommonDominatorEPS1_S3_", "llvm::DominatorTreeBase::findNearestCommonDominator(llvm::MachineBasicBlock*, llvm::MachineBasicBlock*)"}, + {"_ZN4llvm17DominatorTreeBaseINS_17MachineBasicBlockEE26findNearestCommonDominatorEPKS1_S4_", "llvm::DominatorTreeBase::findNearestCommonDominator(llvm::MachineBasicBlock const*, llvm::MachineBasicBlock const*)"}, + {"_ZN4llvm17DominatorTreeBaseINS_17MachineBasicBlockEE11addNewBlockEPS1_S3_", "llvm::DominatorTreeBase::addNewBlock(llvm::MachineBasicBlock*, llvm::MachineBasicBlock*)"}, + {"_ZN4llvm17DominatorTreeBaseINS_17MachineBasicBlockEE24changeImmediateDominatorEPNS_15DomTreeNodeBaseIS1_EES5_", "llvm::DominatorTreeBase::changeImmediateDominator(llvm::DomTreeNodeBase*, llvm::DomTreeNodeBase*)"}, + {"_ZN4llvm17DominatorTreeBaseINS_17MachineBasicBlockEE24changeImmediateDominatorEPS1_S3_", "llvm::DominatorTreeBase::changeImmediateDominator(llvm::MachineBasicBlock*, llvm::MachineBasicBlock*)"}, + {"_ZN4llvm17DominatorTreeBaseINS_17MachineBasicBlockEE9eraseNodeEPS1_", "llvm::DominatorTreeBase::eraseNode(llvm::MachineBasicBlock*)"}, + {"_ZN4llvm17DominatorTreeBaseINS_17MachineBasicBlockEE10removeNodeEPS1_", "llvm::DominatorTreeBase::removeNode(llvm::MachineBasicBlock*)"}, + {"_ZN4llvm17DominatorTreeBaseINS_17MachineBasicBlockEE10splitBlockEPS1_", "llvm::DominatorTreeBase::splitBlock(llvm::MachineBasicBlock*)"}, + + // {"_ZN4llvm17DominatorTreeBaseINS_17MachineBasicBlockEE5SplitINS_7InverseIPS1_EENS_11GraphTraitsIS6_EEEEvRNS0_INT0_8NodeTypeEEEPSA_", + // "void llvm::DominatorTreeBase::Split, llvm::GraphTraits>>(llvm::DominatorTreeBase>::NodeType>&, llvm::GraphTraits>::NodeType*)"}, + // "void llvm::DominatorTreeBase::Split, llvm::GraphTraits>>(llvm::DominatorTreeBase&, llvm::DominatorTreeBase*)" was returned + + + // {"_ZN4llvm17DominatorTreeBaseINS_17MachineBasicBlockEE5SplitIPS1_NS_11GraphTraitsIS4_EEEEvRNS0_INT0_8NodeTypeEEEPS8_", + // "void llvm::DominatorTreeBase::Split>(llvm::DominatorTreeBase::NodeType>&, llvm::GraphTraits::NodeType*)"}, + // "void llvm::DominatorTreeBase::Split>(llvm::DominatorTreeBase&, llvm::DominatorTreeBase*)" was returned + + {"_ZNK4llvm17DominatorTreeBaseINS_17MachineBasicBlockEE5printERNS_11raw_ostreamE", "llvm::DominatorTreeBase::print(llvm::raw_ostream&) const"}, + {"_ZN4llvm17DominatorTreeBaseINS_17MachineBasicBlockEE15getNodeForBlockEPS1_", "llvm::DominatorTreeBase::getNodeForBlock(llvm::MachineBasicBlock*)"}, + {"_ZNK4llvm17DominatorTreeBaseINS_17MachineBasicBlockEE7getIDomEPS1_", "llvm::DominatorTreeBase::getIDom(llvm::MachineBasicBlock*) const"}, + + // {"_ZN4llvm17DominatorTreeBaseINS_17MachineBasicBlockEE11recalculateINS_15MachineFunctionEEEvRT_", + // "void llvm::DominatorTreeBase::recalculate(llvm::MachineFunction&)"}, + // "void llvm::DominatorTreeBase::recalculate(llvm::MachineBasicBlock&)" was returned + + {"_ZN4llvm9CalculateINS_15MachineFunctionEPNS_17MachineBasicBlockEEEvRNS_17DominatorTreeBaseINS_11GraphTraitsIT0_E8NodeTypeEEERT_", "void llvm::Calculate(llvm::DominatorTreeBase::NodeType>&, llvm::MachineFunction&)"}, + + // {"_ZN4llvm9CalculateINS_15MachineFunctionENS_7InverseIPNS_17MachineBasicBlockEEEEEvRNS_17DominatorTreeBaseINS_11GraphTraitsIT0_E8NodeTypeEEERT_", + // "void llvm::Calculate>(llvm::DominatorTreeBase>::NodeType>&, llvm::MachineFunction&)"}, + // "void llvm::Calculate>(llvm::DominatorTreeBase::NodeType>&, llvm::MachineFunction&)" was returned + + + // {"_ZN4llvm7DFSPassINS_11GraphTraitsINS_7InverseIPNS_17MachineBasicBlockEEEEEEEjRNS_17DominatorTreeBaseINT_8NodeTypeEEEPS9_j", + // "unsigned int llvm::DFSPass>>(llvm::DominatorTreeBase>::NodeType>&, llvm::GraphTraits>::NodeType*, unsigned int)"}, + // "unsigned int llvm::DFSPass>>(llvm::DominatorTreeBase&, llvm::DominatorTreeBase*, unsigned int)" was returned + + {"_ZN4llvm15SmallVectorImplIjE6resizeEj", "llvm::SmallVectorImpl::resize(unsigned int)"}, + + // {"_ZN4llvm4EvalINS_11GraphTraitsINS_7InverseIPNS_17MachineBasicBlockEEEEEEEPNT_8NodeTypeERNS_17DominatorTreeBaseIS8_EES9_j", + // "llvm::GraphTraits>::NodeType* llvm::Eval>>(llvm::DominatorTreeBase>::NodeType>&, llvm::GraphTraits>::NodeType*, unsigned int)"}, + // "llvm::MachineBasicBlock*::NodeType* llvm::Eval>>(llvm::DominatorTreeBase&, llvm::DominatorTreeBase, unsigned int)" was returned + + {"_ZN4llvm8DenseMapIPNS_17MachineBasicBlockENS_17DominatorTreeBaseIS1_E7InfoRecENS_12DenseMapInfoIS2_EENS6_IS5_EEE16shrink_and_clearEv", "llvm::DenseMap::InfoRec, llvm::DenseMapInfo, llvm::DenseMapInfo::InfoRec>>::shrink_and_clear()"}, + {"_ZN4llvm23SmallVectorTemplateBaseISt4pairIPNS_17MachineBasicBlockEN9__gnu_cxx17__normal_iteratorIPS3_St6vectorIS3_SaIS3_EEEEELb0EE4growEm", "llvm::SmallVectorTemplateBase>>>, false>::grow(unsigned long)"}, + {"_ZN4llvm8DenseMapIPNS_17MachineBasicBlockENS_17DominatorTreeBaseIS1_E7InfoRecENS_12DenseMapInfoIS2_EENS6_IS5_EEE16InsertIntoBucketERKS2_RKS5_PSt4pairIS2_S5_E", "llvm::DenseMap::InfoRec, llvm::DenseMapInfo, llvm::DenseMapInfo::InfoRec>>::InsertIntoBucket(llvm::MachineBasicBlock* const&, llvm::DominatorTreeBase::InfoRec const&, std::pair::InfoRec>*)"}, + {"_ZN4llvm8DenseMapIPNS_17MachineBasicBlockENS_17DominatorTreeBaseIS1_E7InfoRecENS_12DenseMapInfoIS2_EENS6_IS5_EEE4growEj", "llvm::DenseMap::InfoRec, llvm::DenseMapInfo, llvm::DenseMapInfo::InfoRec>>::grow(unsigned int)"}, + + // {"_ZN4llvm7DFSPassINS_11GraphTraitsIPNS_17MachineBasicBlockEEEEEjRNS_17DominatorTreeBaseINT_8NodeTypeEEEPS7_j", + // "unsigned int llvm::DFSPass>(llvm::DominatorTreeBase::NodeType>&, llvm::GraphTraits::NodeType*, unsigned int)"}, + // "unsigned int llvm::DFSPass>(llvm::DominatorTreeBase&, llvm::DominatorTreeBase*, unsigned int)" was returned + + + // {"_ZN4llvm4EvalINS_11GraphTraitsIPNS_17MachineBasicBlockEEEEEPNT_8NodeTypeERNS_17DominatorTreeBaseIS6_EES7_j", + // "llvm::GraphTraits::NodeType* llvm::Eval>(llvm::DominatorTreeBase::NodeType>&, llvm::GraphTraits::NodeType*, unsigned int)"}, + // "llvm::MachineBasicBlock*::NodeType* llvm::Eval>(llvm::DominatorTreeBase&, llvm::DominatorTreeBase, unsigned int)" was returned + + {"_ZN4llvm8DenseMapIPNS_17MachineBasicBlockES2_NS_12DenseMapInfoIS2_EES4_E16InsertIntoBucketERKS2_S7_PSt4pairIS2_S2_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::MachineBasicBlock* const&, llvm::MachineBasicBlock* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_17MachineBasicBlockES2_NS_12DenseMapInfoIS2_EES4_E4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPNS_17MachineBasicBlockES2_NS_12DenseMapInfoIS2_EES4_E16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm8DenseMapIPNS_17MachineBasicBlockEPNS_15DomTreeNodeBaseIS1_EENS_12DenseMapInfoIS2_EENS6_IS5_EEE16shrink_and_clearEv", "llvm::DenseMap*, llvm::DenseMapInfo, llvm::DenseMapInfo*>>::shrink_and_clear()"}, + {"_ZN4llvm15callDefaultCtorINS_20MachineDominatorTreeEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor()"}, + {"_ZN4llvm19MachineFunctionInfoD0Ev", "llvm::MachineFunctionInfo::~MachineFunctionInfo()"}, + {"_ZN4llvm19MachineFunctionInfoD1Ev", "llvm::MachineFunctionInfo::~MachineFunctionInfo()"}, + {"_ZN4llvm19MachineFunctionInfoD2Ev", "llvm::MachineFunctionInfo::~MachineFunctionInfo()"}, + {"_ZN4llvm12ilist_traitsINS_17MachineBasicBlockEE10deleteNodeEPS1_", "llvm::ilist_traits::deleteNode(llvm::MachineBasicBlock*)"}, + {"_ZN4llvm15MachineFunction23DeleteMachineBasicBlockEPNS_17MachineBasicBlockE", "llvm::MachineFunction::DeleteMachineBasicBlock(llvm::MachineBasicBlock*)"}, + {"_ZN4llvm15MachineFunctionC1EPKNS_8FunctionERKNS_13TargetMachineEjRNS_17MachineModuleInfoEPNS_12GCModuleInfoE", "llvm::MachineFunction::MachineFunction(llvm::Function const*, llvm::TargetMachine const&, unsigned int, llvm::MachineModuleInfo&, llvm::GCModuleInfo*)"}, + {"_ZN4llvm15MachineFunctionC2EPKNS_8FunctionERKNS_13TargetMachineEjRNS_17MachineModuleInfoEPNS_12GCModuleInfoE", "llvm::MachineFunction::MachineFunction(llvm::Function const*, llvm::TargetMachine const&, unsigned int, llvm::MachineModuleInfo&, llvm::GCModuleInfo*)"}, + {"_ZN4llvm15MachineFunctionD1Ev", "llvm::MachineFunction::~MachineFunction()"}, + {"_ZN4llvm15MachineFunctionD2Ev", "llvm::MachineFunction::~MachineFunction()"}, + {"_ZN4llvm19MachineConstantPoolD1Ev", "llvm::MachineConstantPool::~MachineConstantPool()"}, + {"_ZN4llvm15MachineFunction24getOrCreateJumpTableInfoEj", "llvm::MachineFunction::getOrCreateJumpTableInfo(unsigned int)"}, + {"_ZN4llvm15MachineFunction14RenumberBlocksEPNS_17MachineBasicBlockE", "llvm::MachineFunction::RenumberBlocks(llvm::MachineBasicBlock*)"}, + {"_ZN4llvm15MachineFunction18CreateMachineInstrERKNS_15TargetInstrDescENS_8DebugLocEb", "llvm::MachineFunction::CreateMachineInstr(llvm::TargetInstrDesc const&, llvm::DebugLoc, bool)"}, + {"_ZN4llvm15MachineFunction17CloneMachineInstrEPKNS_12MachineInstrE", "llvm::MachineFunction::CloneMachineInstr(llvm::MachineInstr const*)"}, + {"_ZN4llvm15MachineFunction18DeleteMachineInstrEPNS_12MachineInstrE", "llvm::MachineFunction::DeleteMachineInstr(llvm::MachineInstr*)"}, + {"_ZN4llvm15MachineFunction23CreateMachineBasicBlockEPKNS_10BasicBlockE", "llvm::MachineFunction::CreateMachineBasicBlock(llvm::BasicBlock const*)"}, + {"_ZN4llvm15MachineFunction20getMachineMemOperandENS_18MachinePointerInfoEjyjPKNS_6MDNodeE", "llvm::MachineFunction::getMachineMemOperand(llvm::MachinePointerInfo, unsigned int, unsigned long long, unsigned int, llvm::MDNode const*)"}, + {"_ZN4llvm15MachineFunction20getMachineMemOperandEPKNS_17MachineMemOperandExy", "llvm::MachineFunction::getMachineMemOperand(llvm::MachineMemOperand const*, long long, unsigned long long)"}, + {"_ZN4llvm15MachineFunction20allocateMemRefsArrayEm", "llvm::MachineFunction::allocateMemRefsArray(unsigned long)"}, + {"_ZN4llvm15MachineFunction18extractLoadMemRefsEPPNS_17MachineMemOperandES3_", "llvm::MachineFunction::extractLoadMemRefs(llvm::MachineMemOperand**, llvm::MachineMemOperand**)"}, + {"_ZN4llvm15MachineFunction19extractStoreMemRefsEPPNS_17MachineMemOperandES3_", "llvm::MachineFunction::extractStoreMemRefs(llvm::MachineMemOperand**, llvm::MachineMemOperand**)"}, + {"_ZNK4llvm15MachineFunction4dumpEv", "llvm::MachineFunction::dump() const"}, + {"_ZNK4llvm15MachineFunction5printERNS_11raw_ostreamEPNS_11SlotIndexesE", "llvm::MachineFunction::print(llvm::raw_ostream&, llvm::SlotIndexes*) const"}, + {"_ZNK4llvm16MachineFrameInfo5printERKNS_15MachineFunctionERNS_11raw_ostreamE", "llvm::MachineFrameInfo::print(llvm::MachineFunction const&, llvm::raw_ostream&) const"}, + {"_ZNK4llvm20MachineJumpTableInfo5printERNS_11raw_ostreamE", "llvm::MachineJumpTableInfo::print(llvm::raw_ostream&) const"}, + {"_ZNK4llvm19MachineConstantPool5printERNS_11raw_ostreamE", "llvm::MachineConstantPool::print(llvm::raw_ostream&) const"}, + {"_ZNK4llvm15MachineFunction7viewCFGEv", "llvm::MachineFunction::viewCFG() const"}, + {"_ZNK4llvm15MachineFunction11viewCFGOnlyEv", "llvm::MachineFunction::viewCFGOnly() const"}, + {"_ZN4llvm15MachineFunction9addLiveInEjPKNS_19TargetRegisterClassENS_8DebugLocE", "llvm::MachineFunction::addLiveIn(unsigned int, llvm::TargetRegisterClass const*, llvm::DebugLoc)"}, + {"_ZNK4llvm15MachineFunction12getJTISymbolEjRNS_9MCContextEb", "llvm::MachineFunction::getJTISymbol(unsigned int, llvm::MCContext&, bool) const"}, + {"_ZNK4llvm15MachineFunction16getPICBaseSymbolEv", "llvm::MachineFunction::getPICBaseSymbol() const"}, + {"_ZN4llvm16MachineFrameInfo17CreateFixedObjectEyxb", "llvm::MachineFrameInfo::CreateFixedObject(unsigned long long, long long, bool)"}, + {"_ZNK4llvm16MachineFrameInfo15getPristineRegsEPKNS_17MachineBasicBlockE", "llvm::MachineFrameInfo::getPristineRegs(llvm::MachineBasicBlock const*) const"}, + {"_ZNK4llvm16MachineFrameInfo4dumpERKNS_15MachineFunctionE", "llvm::MachineFrameInfo::dump(llvm::MachineFunction const&) const"}, + {"_ZNK4llvm20MachineJumpTableInfo12getEntrySizeERKNS_10DataLayoutE", "llvm::MachineJumpTableInfo::getEntrySize(llvm::DataLayout const&) const"}, + {"_ZNK4llvm20MachineJumpTableInfo17getEntryAlignmentERKNS_10DataLayoutE", "llvm::MachineJumpTableInfo::getEntryAlignment(llvm::DataLayout const&) const"}, + {"_ZN4llvm20MachineJumpTableInfo20createJumpTableIndexERKSt6vectorIPNS_17MachineBasicBlockESaIS3_EE", "llvm::MachineJumpTableInfo::createJumpTableIndex(std::vector> const&)"}, + {"_ZN4llvm20MachineJumpTableInfo22ReplaceMBBInJumpTablesEPNS_17MachineBasicBlockES2_", "llvm::MachineJumpTableInfo::ReplaceMBBInJumpTables(llvm::MachineBasicBlock*, llvm::MachineBasicBlock*)"}, + {"_ZN4llvm20MachineJumpTableInfo21ReplaceMBBInJumpTableEjPNS_17MachineBasicBlockES2_", "llvm::MachineJumpTableInfo::ReplaceMBBInJumpTable(unsigned int, llvm::MachineBasicBlock*, llvm::MachineBasicBlock*)"}, + {"_ZNK4llvm20MachineJumpTableInfo4dumpEv", "llvm::MachineJumpTableInfo::dump() const"}, + {"_ZNK4llvm24MachineConstantPoolEntry7getTypeEv", "llvm::MachineConstantPoolEntry::getType() const"}, + {"_ZNK4llvm24MachineConstantPoolEntry17getRelocationInfoEv", "llvm::MachineConstantPoolEntry::getRelocationInfo() const"}, + {"_ZN4llvm19MachineConstantPoolD2Ev", "llvm::MachineConstantPool::~MachineConstantPool()"}, + {"_ZN4llvm19MachineConstantPool20getConstantPoolIndexEPKNS_8ConstantEj", "llvm::MachineConstantPool::getConstantPoolIndex(llvm::Constant const*, unsigned int)"}, + {"_Z25CanShareConstantPoolEntryPKN4llvm8ConstantES2_PKNS_10DataLayoutE", "CanShareConstantPoolEntry(llvm::Constant const*, llvm::Constant const*, llvm::DataLayout const*)"}, + {"_ZN4llvm19MachineConstantPool20getConstantPoolIndexEPNS_24MachineConstantPoolValueEj", "llvm::MachineConstantPool::getConstantPoolIndex(llvm::MachineConstantPoolValue*, unsigned int)"}, + {"_ZNK4llvm19MachineConstantPool4dumpEv", "llvm::MachineConstantPool::dump() const"}, + {"_ZN4llvm6iplistINS_17MachineBasicBlockENS_12ilist_traitsIS1_EEE5clearEv", "llvm::iplist>::clear()"}, + {"_ZNSt6vectorIN4llvm21MachineJumpTableEntryESaIS1_EE9push_backERKS1_", "std::vector>::push_back(llvm::MachineJumpTableEntry const&)"}, + {"_ZNSt6vectorIN4llvm24MachineConstantPoolEntryESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::MachineConstantPoolEntry const&)"}, + {"_ZNSt6vectorIN4llvm21MachineJumpTableEntryESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::MachineJumpTableEntry const&)"}, + {"_ZNSt6vectorIPN4llvm17MachineBasicBlockESaIS2_EEaSERKS4_", "std::vector>::operator=(std::vector> const&)"}, + {"_ZNSt6vectorIPN4llvm17MachineBasicBlockESaIS2_EE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPS2_S4_EEmRKS2_", "std::vector>::_M_fill_insert(__gnu_cxx::__normal_iterator>>, unsigned long, llvm::MachineBasicBlock* const&)"}, + {"_ZN4llvm8DenseMapIjNS_8DebugLocENS_12DenseMapInfoIjEENS2_IS1_EEE16InsertIntoBucketERKjRKS1_PSt4pairIjS1_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(unsigned int const&, llvm::DebugLoc const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIjNS_8DebugLocENS_12DenseMapInfoIjEENS2_IS1_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNSt6vectorISt4pairIjjESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + {"_ZN4llvm23MachineFunctionAnalysisC1ERKNS_13TargetMachineENS_10CodeGenOpt5LevelE", "llvm::MachineFunctionAnalysis::MachineFunctionAnalysis(llvm::TargetMachine const&, llvm::CodeGenOpt::Level)"}, + {"_ZN4llvm23MachineFunctionAnalysisC2ERKNS_13TargetMachineENS_10CodeGenOpt5LevelE", "llvm::MachineFunctionAnalysis::MachineFunctionAnalysis(llvm::TargetMachine const&, llvm::CodeGenOpt::Level)"}, + {"_ZN4llvm23MachineFunctionAnalysisD0Ev", "llvm::MachineFunctionAnalysis::~MachineFunctionAnalysis()"}, + {"_ZN4llvm23MachineFunctionAnalysisD1Ev", "llvm::MachineFunctionAnalysis::~MachineFunctionAnalysis()"}, + {"_ZN4llvm23MachineFunctionAnalysisD2Ev", "llvm::MachineFunctionAnalysis::~MachineFunctionAnalysis()"}, + {"_ZNK4llvm23MachineFunctionAnalysis16getAnalysisUsageERNS_13AnalysisUsageE", "llvm::MachineFunctionAnalysis::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN4llvm23MachineFunctionAnalysis16doInitializationERNS_6ModuleE", "llvm::MachineFunctionAnalysis::doInitialization(llvm::Module&)"}, + {"_ZN4llvm23MachineFunctionAnalysis13runOnFunctionERNS_8FunctionE", "llvm::MachineFunctionAnalysis::runOnFunction(llvm::Function&)"}, + {"_ZN4llvm23MachineFunctionAnalysis13releaseMemoryEv", "llvm::MachineFunctionAnalysis::releaseMemory()"}, + {"_ZNK4llvm23MachineFunctionAnalysis11getPassNameEv", "llvm::MachineFunctionAnalysis::getPassName() const"}, + {"_ZNK4llvm19MachineFunctionPass17createPrinterPassERNS_11raw_ostreamERKSs", "llvm::MachineFunctionPass::createPrinterPass(llvm::raw_ostream&, std::string const&) const"}, + {"_ZN4llvm19MachineFunctionPass13runOnFunctionERNS_8FunctionE", "llvm::MachineFunctionPass::runOnFunction(llvm::Function&)"}, + {"_ZNK4llvm19MachineFunctionPass16getAnalysisUsageERNS_13AnalysisUsageE", "llvm::MachineFunctionPass::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN4llvm32createMachineFunctionPrinterPassERNS_11raw_ostreamERKSs", "llvm::createMachineFunctionPrinterPass(llvm::raw_ostream&, std::string const&)"}, + {"_ZN12_GLOBAL__N_126MachineFunctionPrinterPassD1Ev", "(anonymous namespace)::MachineFunctionPrinterPass::~MachineFunctionPrinterPass()"}, + {"_ZN12_GLOBAL__N_126MachineFunctionPrinterPassD0Ev", "(anonymous namespace)::MachineFunctionPrinterPass::~MachineFunctionPrinterPass()"}, + {"_ZNK12_GLOBAL__N_126MachineFunctionPrinterPass11getPassNameEv", "(anonymous namespace)::MachineFunctionPrinterPass::getPassName() const"}, + {"_ZNK12_GLOBAL__N_126MachineFunctionPrinterPass16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::MachineFunctionPrinterPass::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_126MachineFunctionPrinterPass20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::MachineFunctionPrinterPass::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN4llvm14MachineOperand22AddRegOperandToRegInfoEPNS_19MachineRegisterInfoE", "llvm::MachineOperand::AddRegOperandToRegInfo(llvm::MachineRegisterInfo*)"}, + {"_ZN4llvm14MachineOperand27RemoveRegOperandFromRegInfoEv", "llvm::MachineOperand::RemoveRegOperandFromRegInfo()"}, + {"_ZN4llvm14MachineOperand6setRegEj", "llvm::MachineOperand::setReg(unsigned int)"}, + {"_ZN4llvm14MachineOperand12substVirtRegEjjRKNS_18TargetRegisterInfoE", "llvm::MachineOperand::substVirtReg(unsigned int, unsigned int, llvm::TargetRegisterInfo const&)"}, + {"_ZN4llvm14MachineOperand12substPhysRegEjRKNS_18TargetRegisterInfoE", "llvm::MachineOperand::substPhysReg(unsigned int, llvm::TargetRegisterInfo const&)"}, + {"_ZN4llvm14MachineOperand17ChangeToImmediateEx", "llvm::MachineOperand::ChangeToImmediate(long long)"}, + {"_ZN4llvm14MachineOperand16ChangeToRegisterEjbbbbbb", "llvm::MachineOperand::ChangeToRegister(unsigned int, bool, bool, bool, bool, bool, bool)"}, + {"_ZNK4llvm14MachineOperand13isIdenticalToERKS0_", "llvm::MachineOperand::isIdenticalTo(llvm::MachineOperand const&) const"}, + {"_ZNK4llvm14MachineOperand5printERNS_11raw_ostreamEPKNS_13TargetMachineE", "llvm::MachineOperand::print(llvm::raw_ostream&, llvm::TargetMachine const*) const"}, + {"_ZNK4llvm18MachinePointerInfo12getAddrSpaceEv", "llvm::MachinePointerInfo::getAddrSpace() const"}, + {"_ZN4llvm18MachinePointerInfo15getConstantPoolEv", "llvm::MachinePointerInfo::getConstantPool()"}, + {"_ZN4llvm18MachinePointerInfo13getFixedStackEix", "llvm::MachinePointerInfo::getFixedStack(int, long long)"}, + {"_ZN4llvm18MachinePointerInfo12getJumpTableEv", "llvm::MachinePointerInfo::getJumpTable()"}, + {"_ZN4llvm18MachinePointerInfo6getGOTEv", "llvm::MachinePointerInfo::getGOT()"}, + {"_ZN4llvm18MachinePointerInfo8getStackEx", "llvm::MachinePointerInfo::getStack(long long)"}, + {"_ZN4llvm17MachineMemOperandC1ENS_18MachinePointerInfoEjyjPKNS_6MDNodeE", "llvm::MachineMemOperand::MachineMemOperand(llvm::MachinePointerInfo, unsigned int, unsigned long long, unsigned int, llvm::MDNode const*)"}, + {"_ZN4llvm17MachineMemOperandC2ENS_18MachinePointerInfoEjyjPKNS_6MDNodeE", "llvm::MachineMemOperand::MachineMemOperand(llvm::MachinePointerInfo, unsigned int, unsigned long long, unsigned int, llvm::MDNode const*)"}, + {"_ZNK4llvm17MachineMemOperand7ProfileERNS_16FoldingSetNodeIDE", "llvm::MachineMemOperand::Profile(llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm17MachineMemOperand15refineAlignmentEPKS0_", "llvm::MachineMemOperand::refineAlignment(llvm::MachineMemOperand const*)"}, + {"_ZNK4llvm17MachineMemOperand12getAlignmentEv", "llvm::MachineMemOperand::getAlignment() const"}, + {"_ZN4llvmlsERNS_11raw_ostreamERKNS_17MachineMemOperandE", "llvm::operator<<(llvm::raw_ostream&, llvm::MachineMemOperand const&)"}, + {"_ZN4llvm12MachineInstrC1Ev", "llvm::MachineInstr::MachineInstr()"}, + {"_ZN4llvm12MachineInstrC2Ev", "llvm::MachineInstr::MachineInstr()"}, + {"_ZN4llvm12MachineInstr25addImplicitDefUseOperandsEv", "llvm::MachineInstr::addImplicitDefUseOperands()"}, + {"_ZN4llvm12MachineInstr10addOperandERKNS_14MachineOperandE", "llvm::MachineInstr::addOperand(llvm::MachineOperand const&)"}, + {"_ZN4llvm12MachineInstrC1ERKNS_15TargetInstrDescEb", "llvm::MachineInstr::MachineInstr(llvm::TargetInstrDesc const&, bool)"}, + {"_ZN4llvm12MachineInstrC2ERKNS_15TargetInstrDescEb", "llvm::MachineInstr::MachineInstr(llvm::TargetInstrDesc const&, bool)"}, + {"_ZN4llvm12MachineInstrC1ERKNS_15TargetInstrDescENS_8DebugLocEb", "llvm::MachineInstr::MachineInstr(llvm::TargetInstrDesc const&, llvm::DebugLoc, bool)"}, + {"_ZN4llvm12MachineInstrC2ERKNS_15TargetInstrDescENS_8DebugLocEb", "llvm::MachineInstr::MachineInstr(llvm::TargetInstrDesc const&, llvm::DebugLoc, bool)"}, + {"_ZN4llvm12MachineInstrC1EPNS_17MachineBasicBlockERKNS_15TargetInstrDescE", "llvm::MachineInstr::MachineInstr(llvm::MachineBasicBlock*, llvm::TargetInstrDesc const&)"}, + {"_ZN4llvm12MachineInstrC2EPNS_17MachineBasicBlockERKNS_15TargetInstrDescE", "llvm::MachineInstr::MachineInstr(llvm::MachineBasicBlock*, llvm::TargetInstrDesc const&)"}, + {"_ZN4llvm12MachineInstrC1EPNS_17MachineBasicBlockENS_8DebugLocERKNS_15TargetInstrDescE", "llvm::MachineInstr::MachineInstr(llvm::MachineBasicBlock*, llvm::DebugLoc, llvm::TargetInstrDesc const&)"}, + {"_ZN4llvm12MachineInstrC2EPNS_17MachineBasicBlockENS_8DebugLocERKNS_15TargetInstrDescE", "llvm::MachineInstr::MachineInstr(llvm::MachineBasicBlock*, llvm::DebugLoc, llvm::TargetInstrDesc const&)"}, + {"_ZN4llvm12MachineInstrC1ERNS_15MachineFunctionERKS0_", "llvm::MachineInstr::MachineInstr(llvm::MachineFunction&, llvm::MachineInstr const&)"}, + {"_ZN4llvm12MachineInstrC2ERNS_15MachineFunctionERKS0_", "llvm::MachineInstr::MachineInstr(llvm::MachineFunction&, llvm::MachineInstr const&)"}, + {"_ZN4llvm12MachineInstrD1Ev", "llvm::MachineInstr::~MachineInstr()"}, + {"_ZN4llvm12MachineInstrD2Ev", "llvm::MachineInstr::~MachineInstr()"}, + {"_ZN4llvm12MachineInstr10getRegInfoEv", "llvm::MachineInstr::getRegInfo()"}, + {"_ZN4llvm12MachineInstr29RemoveRegOperandsFromUseListsEv", "llvm::MachineInstr::RemoveRegOperandsFromUseLists()"}, + {"_ZN4llvm12MachineInstr24AddRegOperandsToUseListsERNS_19MachineRegisterInfoE", "llvm::MachineInstr::AddRegOperandsToUseLists(llvm::MachineRegisterInfo&)"}, + {"_ZN4llvm12MachineInstr13RemoveOperandEj", "llvm::MachineInstr::RemoveOperand(unsigned int)"}, + {"_ZN4llvm12MachineInstr13addMemOperandERNS_15MachineFunctionEPNS_17MachineMemOperandE", "llvm::MachineInstr::addMemOperand(llvm::MachineFunction&, llvm::MachineMemOperand*)"}, + {"_ZNK4llvm12MachineInstr13isIdenticalToEPKS0_NS0_11MICheckTypeE", "llvm::MachineInstr::isIdenticalTo(llvm::MachineInstr const*, llvm::MachineInstr::MICheckType) const"}, + {"_ZN4llvm12MachineInstr16removeFromParentEv", "llvm::MachineInstr::removeFromParent()"}, + {"_ZN4llvm12MachineInstr15eraseFromParentEv", "llvm::MachineInstr::eraseFromParent()"}, + {"_ZNK4llvm12MachineInstr16OperandsCompleteEv", "llvm::MachineInstr::OperandsComplete() const"}, + {"_ZNK4llvm12MachineInstr22getNumExplicitOperandsEv", "llvm::MachineInstr::getNumExplicitOperands() const"}, + {"_ZNK4llvm12MachineInstr24isStackAligningInlineAsmEv", "llvm::MachineInstr::isStackAligningInlineAsm() const"}, + {"_ZNK4llvm12MachineInstr25findRegisterUseOperandIdxEjbPKNS_18TargetRegisterInfoE", "llvm::MachineInstr::findRegisterUseOperandIdx(unsigned int, bool, llvm::TargetRegisterInfo const*) const"}, + {"_ZNK4llvm12MachineInstr26readsWritesVirtualRegisterEjPNS_15SmallVectorImplIjEE", "llvm::MachineInstr::readsWritesVirtualRegister(unsigned int, llvm::SmallVectorImpl*) const"}, + {"_ZNK4llvm12MachineInstr25findRegisterDefOperandIdxEjbbPKNS_18TargetRegisterInfoE", "llvm::MachineInstr::findRegisterDefOperandIdx(unsigned int, bool, bool, llvm::TargetRegisterInfo const*) const"}, + {"_ZNK4llvm12MachineInstr23findFirstPredOperandIdxEv", "llvm::MachineInstr::findFirstPredOperandIdx() const"}, + {"_ZNK4llvm12MachineInstr21isRegTiedToUseOperandEjPj", "llvm::MachineInstr::isRegTiedToUseOperand(unsigned int, unsigned int*) const"}, + {"_ZNK4llvm12MachineInstr21isRegTiedToDefOperandEjPj", "llvm::MachineInstr::isRegTiedToDefOperand(unsigned int, unsigned int*) const"}, + {"_ZN4llvm12MachineInstr13clearKillInfoEv", "llvm::MachineInstr::clearKillInfo()"}, + {"_ZN4llvm12MachineInstr16copyKillDeadInfoEPKS0_", "llvm::MachineInstr::copyKillDeadInfo(llvm::MachineInstr const*)"}, + {"_ZN4llvm12MachineInstr14copyPredicatesEPKS0_", "llvm::MachineInstr::copyPredicates(llvm::MachineInstr const*)"}, + {"_ZN4llvm12MachineInstr18substituteRegisterEjjjRKNS_18TargetRegisterInfoE", "llvm::MachineInstr::substituteRegister(unsigned int, unsigned int, unsigned int, llvm::TargetRegisterInfo const&)"}, + {"_ZNK4llvm12MachineInstr12isSafeToMoveEPKNS_15TargetInstrInfoEPNS_13AliasAnalysisERb", "llvm::MachineInstr::isSafeToMove(llvm::TargetInstrInfo const*, llvm::AliasAnalysis*, bool&) const"}, + {"_ZNK4llvm12MachineInstr23hasUnmodeledSideEffectsEv", "llvm::MachineInstr::hasUnmodeledSideEffects() const"}, + {"_ZNK4llvm12MachineInstr15isInvariantLoadEPNS_13AliasAnalysisE", "llvm::MachineInstr::isInvariantLoad(llvm::AliasAnalysis*) const"}, + {"_ZNK4llvm12MachineInstr20hasVolatileMemoryRefEv", "llvm::MachineInstr::hasVolatileMemoryRef() const"}, + {"_ZNK4llvm12MachineInstr13isSafeToReMatEPKNS_15TargetInstrInfoEPNS_13AliasAnalysisEj", "llvm::MachineInstr::isSafeToReMat(llvm::TargetInstrInfo const*, llvm::AliasAnalysis*, unsigned int) const"}, + {"_ZNK4llvm12MachineInstr18isConstantValuePHIEv", "llvm::MachineInstr::isConstantValuePHI() const"}, + {"_ZNK4llvm12MachineInstr14allDefsAreDeadEv", "llvm::MachineInstr::allDefsAreDead() const"}, + {"_ZN4llvm12MachineInstr15copyImplicitOpsEPKS0_", "llvm::MachineInstr::copyImplicitOps(llvm::MachineInstr const*)"}, + {"_ZNK4llvm12MachineInstr4dumpEv", "llvm::MachineInstr::dump() const"}, + {"_ZNK4llvm12MachineInstr5printERNS_11raw_ostreamEPKNS_13TargetMachineE", "llvm::MachineInstr::print(llvm::raw_ostream&, llvm::TargetMachine const*) const"}, + {"_Z13printDebugLocN4llvm8DebugLocEPKNS_15MachineFunctionERNS_11raw_ostreamE", "printDebugLoc(llvm::DebugLoc, llvm::MachineFunction const*, llvm::raw_ostream&)"}, + {"_ZN4llvm12MachineInstr17addRegisterKilledEjPKNS_18TargetRegisterInfoEb", "llvm::MachineInstr::addRegisterKilled(unsigned int, llvm::TargetRegisterInfo const*, bool)"}, + {"_ZN4llvm12MachineInstr15addRegisterDeadEjPKNS_18TargetRegisterInfoEb", "llvm::MachineInstr::addRegisterDead(unsigned int, llvm::TargetRegisterInfo const*, bool)"}, + {"_ZN4llvm12MachineInstr18addRegisterDefinedEjPKNS_18TargetRegisterInfoE", "llvm::MachineInstr::addRegisterDefined(unsigned int, llvm::TargetRegisterInfo const*)"}, + {"_ZN4llvm12MachineInstr21setPhysRegsDeadExceptERKNS_15SmallVectorImplIjEERKNS_18TargetRegisterInfoE", "llvm::MachineInstr::setPhysRegsDeadExcept(llvm::SmallVectorImpl const&, llvm::TargetRegisterInfo const&)"}, + {"_ZN4llvm27MachineInstrExpressionTrait12getHashValueERKPKNS_12MachineInstrE", "llvm::MachineInstrExpressionTrait::getHashValue(llvm::MachineInstr const* const&)"}, + {"_ZNSt6vectorIN4llvm14MachineOperandESaIS1_EE7reserveEm", "std::vector>::reserve(unsigned long)"}, + {"_ZN4llvm25initializeMachineLICMPassERNS_12PassRegistryE", "llvm::initializeMachineLICMPass(llvm::PassRegistry&)"}, + {"_ZN4llvm21createMachineLICMPassEb", "llvm::createMachineLICMPass(bool)"}, + {"_ZN12_GLOBAL__N_111MachineLICMD1Ev", "(anonymous namespace)::MachineLICM::~MachineLICM()"}, + {"_ZN12_GLOBAL__N_111MachineLICMD0Ev", "(anonymous namespace)::MachineLICM::~MachineLICM()"}, + {"_ZNK12_GLOBAL__N_111MachineLICM11getPassNameEv", "(anonymous namespace)::MachineLICM::getPassName() const"}, + {"_ZNK12_GLOBAL__N_111MachineLICM16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::MachineLICM::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_111MachineLICM13releaseMemoryEv", "(anonymous namespace)::MachineLICM::releaseMemory()"}, + {"_ZN12_GLOBAL__N_111MachineLICM20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::MachineLICM::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN12_GLOBAL__N_111MachineLICM11HoistRegionEPN4llvm15DomTreeNodeBaseINS1_17MachineBasicBlockEEEb", "(anonymous namespace)::MachineLICM::HoistRegion(llvm::DomTreeNodeBase*, bool)"}, + {"_ZN12_GLOBAL__N_111MachineLICM15getCurPreheaderEv", "(anonymous namespace)::MachineLICM::getCurPreheader()"}, + {"_ZN12_GLOBAL__N_111MachineLICM15InitRegPressureEPN4llvm17MachineBasicBlockE", "(anonymous namespace)::MachineLICM::InitRegPressure(llvm::MachineBasicBlock*)"}, + {"_ZN12_GLOBAL__N_111MachineLICM17UpdateRegPressureEPKN4llvm12MachineInstrE", "(anonymous namespace)::MachineLICM::UpdateRegPressure(llvm::MachineInstr const*)"}, + {"_ZN12_GLOBAL__N_111MachineLICM19IsLoopInvariantInstERN4llvm12MachineInstrE", "(anonymous namespace)::MachineLICM::IsLoopInvariantInst(llvm::MachineInstr&)"}, + {"_ZN12_GLOBAL__N_111MachineLICM19IsProfitableToHoistERN4llvm12MachineInstrE", "(anonymous namespace)::MachineLICM::IsProfitableToHoist(llvm::MachineInstr&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_111MachineLICMEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::MachineLICM>()"}, + {"_ZN4llvm8DenseMapIjSt6vectorIPKNS_12MachineInstrESaIS4_EENS_12DenseMapInfoIjEENS7_IS6_EEE5clearEv", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::clear()"}, + {"_ZN4llvm8DenseMapIjSt6vectorIPKNS_12MachineInstrESaIS4_EENS_12DenseMapInfoIjEENS7_IS6_EEE16shrink_and_clearEv", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::shrink_and_clear()"}, + {"_ZN4llvm8DenseMapIjSt6vectorIPKNS_12MachineInstrESaIS4_EENS_12DenseMapInfoIjEENS7_IS6_EEE6insertERKSt4pairIjS6_E", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::insert(std::pair>> const&)"}, + {"_ZN4llvm8DenseMapIjSt6vectorIPKNS_12MachineInstrESaIS4_EENS_12DenseMapInfoIjEENS7_IS6_EEE16InsertIntoBucketERKjRKS6_PSt4pairIjS6_E", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::InsertIntoBucket(unsigned int const&, std::vector> const&, std::pair>>*)"}, + {"_ZN4llvm8DenseMapIjSt6vectorIPKNS_12MachineInstrESaIS4_EENS_12DenseMapInfoIjEENS7_IS6_EEE4growEj", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::grow(unsigned int)"}, + {"_ZNSt6vectorIPKN4llvm12MachineInstrESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::MachineInstr const* const&)"}, + {"_ZN4llvm8DenseMapIjiNS_12DenseMapInfoIjEENS1_IiEEE6insertERKSt4pairIjiE", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIjiNS_12DenseMapInfoIjEENS1_IiEEE16InsertIntoBucketERKjRKiPSt4pairIjiE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(unsigned int const&, int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIjiNS_12DenseMapInfoIjEENS1_IiEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + + // {"_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorIjLj8EEELb0EE4growEm", + // "llvm::SmallVectorTemplateBase, false>::grow(unsigned long)"}, + // "llvm::SmallVectorTemplateBase, false>::grow(unsigned long)" was returned + + {"_ZNSt8_Rb_treeIiiSt9_IdentityIiESt4lessIiESaIiEE8_M_eraseEPSt13_Rb_tree_nodeIiE", "std::_Rb_tree, std::less, std::allocator>::_M_erase(std::_Rb_tree_node*)"}, + + // {"_ZN4llvm8SmallSetIiLj32EE6insertERKi", + // "llvm::SmallSet::insert(int const&)"}, + // "llvm::SmallSet::insert(int const&)" was returned + + {"_ZNSt8_Rb_treeIiiSt9_IdentityIiESt4lessIiESaIiEE16_M_insert_uniqueERKi", "std::_Rb_tree, std::less, std::allocator>::_M_insert_unique(int const&)"}, + {"_ZN4llvm29initializeMachineLoopInfoPassERNS_12PassRegistryE", "llvm::initializeMachineLoopInfoPass(llvm::PassRegistry&)"}, + {"_ZN4llvm15MachineLoopInfo20runOnMachineFunctionERNS_15MachineFunctionE", "llvm::MachineLoopInfo::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZNK4llvm15MachineLoopInfo16getAnalysisUsageERNS_13AnalysisUsageE", "llvm::MachineLoopInfo::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN4llvm11MachineLoop11getTopBlockEv", "llvm::MachineLoop::getTopBlock()"}, + {"_ZN4llvm11MachineLoop14getBottomBlockEv", "llvm::MachineLoop::getBottomBlock()"}, + {"_ZNK4llvm11MachineLoop4dumpEv", "llvm::MachineLoop::dump() const"}, + {"_ZN4llvm8LoopBaseINS_17MachineBasicBlockENS_11MachineLoopEEC1Ev", "llvm::LoopBase::LoopBase()"}, + {"_ZN4llvm8LoopBaseINS_17MachineBasicBlockENS_11MachineLoopEEC2Ev", "llvm::LoopBase::LoopBase()"}, + {"_ZN4llvm8LoopBaseINS_17MachineBasicBlockENS_11MachineLoopEED1Ev", "llvm::LoopBase::~LoopBase()"}, + {"_ZN4llvm8LoopBaseINS_17MachineBasicBlockENS_11MachineLoopEED2Ev", "llvm::LoopBase::~LoopBase()"}, + {"_ZNK4llvm8LoopBaseINS_17MachineBasicBlockENS_11MachineLoopEE12getLoopDepthEv", "llvm::LoopBase::getLoopDepth() const"}, + {"_ZNK4llvm8LoopBaseINS_17MachineBasicBlockENS_11MachineLoopEE9getHeaderEv", "llvm::LoopBase::getHeader() const"}, + {"_ZNK4llvm8LoopBaseINS_17MachineBasicBlockENS_11MachineLoopEE13getParentLoopEv", "llvm::LoopBase::getParentLoop() const"}, + {"_ZNK4llvm8LoopBaseINS_17MachineBasicBlockENS_11MachineLoopEE8containsEPKS2_", "llvm::LoopBase::contains(llvm::MachineLoop const*) const"}, + {"_ZNK4llvm8LoopBaseINS_17MachineBasicBlockENS_11MachineLoopEE8containsEPKS1_", "llvm::LoopBase::contains(llvm::MachineBasicBlock const*) const"}, + {"_ZNK4llvm8LoopBaseINS_17MachineBasicBlockENS_11MachineLoopEE11block_beginEv", "llvm::LoopBase::block_begin() const"}, + {"_ZNK4llvm8LoopBaseINS_17MachineBasicBlockENS_11MachineLoopEE9block_endEv", "llvm::LoopBase::block_end() const"}, + {"_ZNK4llvm8LoopBaseINS_17MachineBasicBlockENS_11MachineLoopEE11getSubLoopsEv", "llvm::LoopBase::getSubLoops() const"}, + {"_ZNK4llvm8LoopBaseINS_17MachineBasicBlockENS_11MachineLoopEE5beginEv", "llvm::LoopBase::begin() const"}, + {"_ZNK4llvm8LoopBaseINS_17MachineBasicBlockENS_11MachineLoopEE3endEv", "llvm::LoopBase::end() const"}, + {"_ZNK4llvm8LoopBaseINS_17MachineBasicBlockENS_11MachineLoopEE5emptyEv", "llvm::LoopBase::empty() const"}, + {"_ZNK4llvm8LoopBaseINS_17MachineBasicBlockENS_11MachineLoopEE9getBlocksEv", "llvm::LoopBase::getBlocks() const"}, + {"_ZNK4llvm8LoopBaseINS_17MachineBasicBlockENS_11MachineLoopEE13isLoopExitingEPKS1_", "llvm::LoopBase::isLoopExiting(llvm::MachineBasicBlock const*) const"}, + {"_ZNK4llvm8LoopBaseINS_17MachineBasicBlockENS_11MachineLoopEE15getNumBackEdgesEv", "llvm::LoopBase::getNumBackEdges() const"}, + {"_ZNK4llvm8LoopBaseINS_17MachineBasicBlockENS_11MachineLoopEE16getExitingBlocksERNS_15SmallVectorImplIPS1_EE", "llvm::LoopBase::getExitingBlocks(llvm::SmallVectorImpl&) const"}, + {"_ZNK4llvm8LoopBaseINS_17MachineBasicBlockENS_11MachineLoopEE15getExitingBlockEv", "llvm::LoopBase::getExitingBlock() const"}, + {"_ZNK4llvm8LoopBaseINS_17MachineBasicBlockENS_11MachineLoopEE13getExitBlocksERNS_15SmallVectorImplIPS1_EE", "llvm::LoopBase::getExitBlocks(llvm::SmallVectorImpl&) const"}, + {"_ZNK4llvm8LoopBaseINS_17MachineBasicBlockENS_11MachineLoopEE12getExitBlockEv", "llvm::LoopBase::getExitBlock() const"}, + {"_ZNK4llvm8LoopBaseINS_17MachineBasicBlockENS_11MachineLoopEE16getLoopPreheaderEv", "llvm::LoopBase::getLoopPreheader() const"}, + {"_ZNK4llvm8LoopBaseINS_17MachineBasicBlockENS_11MachineLoopEE18getLoopPredecessorEv", "llvm::LoopBase::getLoopPredecessor() const"}, + {"_ZNK4llvm8LoopBaseINS_17MachineBasicBlockENS_11MachineLoopEE12getLoopLatchEv", "llvm::LoopBase::getLoopLatch() const"}, + {"_ZN4llvm8LoopBaseINS_17MachineBasicBlockENS_11MachineLoopEE20replaceChildLoopWithEPS2_S4_", "llvm::LoopBase::replaceChildLoopWith(llvm::MachineLoop*, llvm::MachineLoop*)"}, + {"_ZN4llvm8LoopBaseINS_17MachineBasicBlockENS_11MachineLoopEE12addChildLoopEPS2_", "llvm::LoopBase::addChildLoop(llvm::MachineLoop*)"}, + {"_ZN4llvm8LoopBaseINS_17MachineBasicBlockENS_11MachineLoopEE15removeChildLoopEN9__gnu_cxx17__normal_iteratorIPKPS2_St6vectorIS6_SaIS6_EEEE", "llvm::LoopBase::removeChildLoop(__gnu_cxx::__normal_iterator>>)"}, + {"_ZN4llvm8LoopBaseINS_17MachineBasicBlockENS_11MachineLoopEE13addBlockEntryEPS1_", "llvm::LoopBase::addBlockEntry(llvm::MachineBasicBlock*)"}, + {"_ZN4llvm8LoopBaseINS_17MachineBasicBlockENS_11MachineLoopEE12moveToHeaderEPS1_", "llvm::LoopBase::moveToHeader(llvm::MachineBasicBlock*)"}, + {"_ZN4llvm8LoopBaseINS_17MachineBasicBlockENS_11MachineLoopEE19removeBlockFromLoopEPS1_", "llvm::LoopBase::removeBlockFromLoop(llvm::MachineBasicBlock*)"}, + {"_ZNK4llvm8LoopBaseINS_17MachineBasicBlockENS_11MachineLoopEE10verifyLoopEv", "llvm::LoopBase::verifyLoop() const"}, + {"_ZNK4llvm8LoopBaseINS_17MachineBasicBlockENS_11MachineLoopEE14verifyLoopNestEv", "llvm::LoopBase::verifyLoopNest() const"}, + {"_ZNK4llvm8LoopBaseINS_17MachineBasicBlockENS_11MachineLoopEE5printERNS_11raw_ostreamEj", "llvm::LoopBase::print(llvm::raw_ostream&, unsigned int) const"}, + {"_ZN4llvm8LoopBaseINS_17MachineBasicBlockENS_11MachineLoopEEC1EPS1_", "llvm::LoopBase::LoopBase(llvm::MachineBasicBlock*)"}, + {"_ZN4llvm8LoopBaseINS_17MachineBasicBlockENS_11MachineLoopEEC2EPS1_", "llvm::LoopBase::LoopBase(llvm::MachineBasicBlock*)"}, + {"_ZN4llvm12LoopInfoBaseINS_17MachineBasicBlockENS_11MachineLoopEEC1Ev", "llvm::LoopInfoBase::LoopInfoBase()"}, + {"_ZN4llvm12LoopInfoBaseINS_17MachineBasicBlockENS_11MachineLoopEEC2Ev", "llvm::LoopInfoBase::LoopInfoBase()"}, + {"_ZN4llvm12LoopInfoBaseINS_17MachineBasicBlockENS_11MachineLoopEED1Ev", "llvm::LoopInfoBase::~LoopInfoBase()"}, + {"_ZN4llvm12LoopInfoBaseINS_17MachineBasicBlockENS_11MachineLoopEED2Ev", "llvm::LoopInfoBase::~LoopInfoBase()"}, + {"_ZN4llvm12LoopInfoBaseINS_17MachineBasicBlockENS_11MachineLoopEE13releaseMemoryEv", "llvm::LoopInfoBase::releaseMemory()"}, + {"_ZNK4llvm12LoopInfoBaseINS_17MachineBasicBlockENS_11MachineLoopEE5beginEv", "llvm::LoopInfoBase::begin() const"}, + {"_ZNK4llvm12LoopInfoBaseINS_17MachineBasicBlockENS_11MachineLoopEE3endEv", "llvm::LoopInfoBase::end() const"}, + {"_ZNK4llvm12LoopInfoBaseINS_17MachineBasicBlockENS_11MachineLoopEE5emptyEv", "llvm::LoopInfoBase::empty() const"}, + {"_ZNK4llvm12LoopInfoBaseINS_17MachineBasicBlockENS_11MachineLoopEE10getLoopForEPKS1_", "llvm::LoopInfoBase::getLoopFor(llvm::MachineBasicBlock const*) const"}, + {"_ZNK4llvm12LoopInfoBaseINS_17MachineBasicBlockENS_11MachineLoopEEixEPKS1_", "llvm::LoopInfoBase::operator[](llvm::MachineBasicBlock const*) const"}, + {"_ZNK4llvm12LoopInfoBaseINS_17MachineBasicBlockENS_11MachineLoopEE12getLoopDepthEPKS1_", "llvm::LoopInfoBase::getLoopDepth(llvm::MachineBasicBlock const*) const"}, + {"_ZNK4llvm12LoopInfoBaseINS_17MachineBasicBlockENS_11MachineLoopEE12isLoopHeaderEPS1_", "llvm::LoopInfoBase::isLoopHeader(llvm::MachineBasicBlock*) const"}, + {"_ZN4llvm12LoopInfoBaseINS_17MachineBasicBlockENS_11MachineLoopEE10removeLoopEN9__gnu_cxx17__normal_iteratorIPKPS2_St6vectorIS6_SaIS6_EEEE", "llvm::LoopInfoBase::removeLoop(__gnu_cxx::__normal_iterator>>)"}, + {"_ZN4llvm12LoopInfoBaseINS_17MachineBasicBlockENS_11MachineLoopEE13changeLoopForEPS1_PS2_", "llvm::LoopInfoBase::changeLoopFor(llvm::MachineBasicBlock*, llvm::MachineLoop*)"}, + {"_ZN4llvm12LoopInfoBaseINS_17MachineBasicBlockENS_11MachineLoopEE18changeTopLevelLoopEPS2_S4_", "llvm::LoopInfoBase::changeTopLevelLoop(llvm::MachineLoop*, llvm::MachineLoop*)"}, + {"_ZN4llvm12LoopInfoBaseINS_17MachineBasicBlockENS_11MachineLoopEE15addTopLevelLoopEPS2_", "llvm::LoopInfoBase::addTopLevelLoop(llvm::MachineLoop*)"}, + {"_ZN4llvm12LoopInfoBaseINS_17MachineBasicBlockENS_11MachineLoopEE11removeBlockEPS1_", "llvm::LoopInfoBase::removeBlock(llvm::MachineBasicBlock*)"}, + {"_ZN4llvm12LoopInfoBaseINS_17MachineBasicBlockENS_11MachineLoopEE23isNotAlreadyContainedInEPKS2_S5_", "llvm::LoopInfoBase::isNotAlreadyContainedIn(llvm::MachineLoop const*, llvm::MachineLoop const*)"}, + {"_ZN4llvm12LoopInfoBaseINS_17MachineBasicBlockENS_11MachineLoopEE9CalculateERNS_17DominatorTreeBaseIS1_EE", "llvm::LoopInfoBase::Calculate(llvm::DominatorTreeBase&)"}, + {"_ZN4llvm12LoopInfoBaseINS_17MachineBasicBlockENS_11MachineLoopEE15ConsiderForLoopEPS1_RNS_17DominatorTreeBaseIS1_EE", "llvm::LoopInfoBase::ConsiderForLoop(llvm::MachineBasicBlock*, llvm::DominatorTreeBase&)"}, + {"_ZN4llvm8DenseMapIPNS_17MachineBasicBlockEPNS_11MachineLoopENS_12DenseMapInfoIS2_EENS5_IS4_EEE6insertERKSt4pairIS2_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm12LoopInfoBaseINS_17MachineBasicBlockENS_11MachineLoopEE19MoveSiblingLoopIntoEPS2_S4_", "llvm::LoopInfoBase::MoveSiblingLoopInto(llvm::MachineLoop*, llvm::MachineLoop*)"}, + {"_ZN4llvm12LoopInfoBaseINS_17MachineBasicBlockENS_11MachineLoopEE14InsertLoopIntoEPS2_S4_", "llvm::LoopInfoBase::InsertLoopInto(llvm::MachineLoop*, llvm::MachineLoop*)"}, + {"_ZNK4llvm12LoopInfoBaseINS_17MachineBasicBlockENS_11MachineLoopEE5printERNS_11raw_ostreamE", "llvm::LoopInfoBase::print(llvm::raw_ostream&) const"}, + {"_ZN4llvm15MachineLoopInfoD1Ev", "llvm::MachineLoopInfo::~MachineLoopInfo()"}, + {"_ZN4llvm15MachineLoopInfoD0Ev", "llvm::MachineLoopInfo::~MachineLoopInfo()"}, + {"_ZN4llvm15MachineLoopInfo13releaseMemoryEv", "llvm::MachineLoopInfo::releaseMemory()"}, + {"_ZNSt8_Rb_treeIPN4llvm17MachineBasicBlockESt4pairIKS2_PNS0_11MachineLoopEESt10_Select1stIS7_ESt4lessIS2_ESaIS7_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS7_ERKS7_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIPN4llvm17MachineBasicBlockESt4pairIKS2_PNS0_11MachineLoopEESt10_Select1stIS7_ESt4lessIS2_ESaIS7_EE16_M_insert_uniqueERKS7_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + + // {"_ZNSt6vectorIPN4llvm17MachineBasicBlockESaIS2_EE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPS2_S4_EEEEvS9_T_SA_St20forward_iterator_tag", + // "void std::vector>::_M_range_insert<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, std::forward_iterator_tag)"}, + // got error + + + // {"_ZN4llvm11df_iteratorIPNS_17MachineBasicBlockENS_11SmallPtrSetIS2_Lj8EEELb0ENS_11GraphTraitsIS2_EEE6toNextEv", + // "llvm::df_iterator, false, llvm::GraphTraits>::toNext()"}, + // "llvm::df_iterator, false, llvm::GraphTraits>::toNext()" was returned + + {"_ZN4llvm8DenseMapIPNS_17MachineBasicBlockEPNS_11MachineLoopENS_12DenseMapInfoIS2_EENS5_IS4_EEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZNSt6vectorIPN4llvm11MachineLoopESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::MachineLoop* const&)"}, + + // {"_ZSt6__findIN9__gnu_cxx17__normal_iteratorIPPN4llvm11MachineLoopESt6vectorIS4_SaIS4_EEEES4_ET_SA_SA_RKT0_St26random_access_iterator_tag", + // "__gnu_cxx::__normal_iterator>> std::__find<__gnu_cxx::__normal_iterator>>, llvm::MachineLoop*>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, llvm::MachineLoop* const&, std::random_access_iterator_tag)"}, + // got error + + + // {"_ZSt16__introsort_loopIPPN4llvm17MachineBasicBlockElEvT_S4_T0_", + // "void std::__introsort_loop(llvm::MachineBasicBlock**, llvm::MachineBasicBlock**, long)"}, + // got error + + + // {"_ZSt22__final_insertion_sortIPPN4llvm17MachineBasicBlockEEvT_S4_", + // "void std::__final_insertion_sort(llvm::MachineBasicBlock**, llvm::MachineBasicBlock**)"}, + // got error + + + // {"_ZSt13__heap_selectIPPN4llvm17MachineBasicBlockEEvT_S4_S4_", + // "void std::__heap_select(llvm::MachineBasicBlock**, llvm::MachineBasicBlock**, llvm::MachineBasicBlock**)"}, + // got error + + + // {"_ZSt9sort_heapIPPN4llvm17MachineBasicBlockEEvT_S4_", + // "void std::sort_heap(llvm::MachineBasicBlock**, llvm::MachineBasicBlock**)"}, + // got error + + + // {"_ZSt9make_heapIPPN4llvm17MachineBasicBlockEEvT_S4_", + // "void std::make_heap(llvm::MachineBasicBlock**, llvm::MachineBasicBlock**)"}, + // got error + + {"_ZN4llvm15callDefaultCtorINS_15MachineLoopInfoEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor()"}, + {"_ZN4llvm15MachineLoopInfoC2Ev", "llvm::MachineLoopInfo::MachineLoopInfo()"}, + {"_ZNSt8_Rb_treeIPN4llvm17MachineBasicBlockESt4pairIKS2_PNS0_11MachineLoopEESt10_Select1stIS7_ESt4lessIS2_ESaIS7_EE8_M_eraseEPSt13_Rb_tree_nodeIS7_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZN4llvm31initializeMachineModuleInfoPassERNS_12PassRegistryE", "llvm::initializeMachineModuleInfoPass(llvm::PassRegistry&)"}, + {"_ZN4llvm21MachineModuleInfoImplD0Ev", "llvm::MachineModuleInfoImpl::~MachineModuleInfoImpl()"}, + {"_ZN4llvm21MachineModuleInfoImplD1Ev", "llvm::MachineModuleInfoImpl::~MachineModuleInfoImpl()"}, + {"_ZN4llvm21MachineModuleInfoImplD2Ev", "llvm::MachineModuleInfoImpl::~MachineModuleInfoImpl()"}, + {"_ZN4llvm15MMIAddrLabelMap18getAddrLabelSymbolEPNS_10BasicBlockE", "llvm::MMIAddrLabelMap::getAddrLabelSymbol(llvm::BasicBlock*)"}, + {"_ZN4llvm15MMIAddrLabelMap24getAddrLabelSymbolToEmitEPNS_10BasicBlockE", "llvm::MMIAddrLabelMap::getAddrLabelSymbolToEmit(llvm::BasicBlock*)"}, + {"_ZN4llvm15MMIAddrLabelMap29takeDeletedSymbolsForFunctionEPNS_8FunctionERSt6vectorIPNS_8MCSymbolESaIS5_EE", "llvm::MMIAddrLabelMap::takeDeletedSymbolsForFunction(llvm::Function*, std::vector>&)"}, + {"_ZN4llvm15MMIAddrLabelMap21UpdateForDeletedBlockEPNS_10BasicBlockE", "llvm::MMIAddrLabelMap::UpdateForDeletedBlock(llvm::BasicBlock*)"}, + {"_ZN4llvm15MMIAddrLabelMap18UpdateForRAUWBlockEPNS_10BasicBlockES2_", "llvm::MMIAddrLabelMap::UpdateForRAUWBlock(llvm::BasicBlock*, llvm::BasicBlock*)"}, + {"_ZN4llvm26MMIAddrLabelMapCallbackPtr7deletedEv", "llvm::MMIAddrLabelMapCallbackPtr::deleted()"}, + {"_ZN4llvm26MMIAddrLabelMapCallbackPtr19allUsesReplacedWithEPNS_5ValueE", "llvm::MMIAddrLabelMapCallbackPtr::allUsesReplacedWith(llvm::Value*)"}, + {"_ZN4llvm17MachineModuleInfoC1ERKNS_9MCAsmInfoEPKNS_13TargetAsmInfoE", "llvm::MachineModuleInfo::MachineModuleInfo(llvm::MCAsmInfo const&, llvm::TargetAsmInfo const*)"}, + {"_ZN4llvm17MachineModuleInfoC2ERKNS_9MCAsmInfoEPKNS_13TargetAsmInfoE", "llvm::MachineModuleInfo::MachineModuleInfo(llvm::MCAsmInfo const&, llvm::TargetAsmInfo const*)"}, + {"_ZN4llvm17MachineModuleInfoC1Ev", "llvm::MachineModuleInfo::MachineModuleInfo()"}, + {"_ZN4llvm17MachineModuleInfoC2Ev", "llvm::MachineModuleInfo::MachineModuleInfo()"}, + {"_ZN4llvm17MachineModuleInfoD0Ev", "llvm::MachineModuleInfo::~MachineModuleInfo()"}, + {"_ZN4llvm17MachineModuleInfoD1Ev", "llvm::MachineModuleInfo::~MachineModuleInfo()"}, + {"_ZN4llvm17MachineModuleInfoD2Ev", "llvm::MachineModuleInfo::~MachineModuleInfo()"}, + {"_ZN4llvm17MachineModuleInfo16doInitializationEv", "llvm::MachineModuleInfo::doInitialization()"}, + {"_ZN4llvm17MachineModuleInfo14doFinalizationEv", "llvm::MachineModuleInfo::doFinalization()"}, + {"_ZN4llvm17MachineModuleInfo11EndFunctionEv", "llvm::MachineModuleInfo::EndFunction()"}, + {"_ZN4llvm17MachineModuleInfo13AnalyzeModuleERKNS_6ModuleE", "llvm::MachineModuleInfo::AnalyzeModule(llvm::Module const&)"}, + {"_ZN4llvm17MachineModuleInfo18getAddrLabelSymbolEPKNS_10BasicBlockE", "llvm::MachineModuleInfo::getAddrLabelSymbol(llvm::BasicBlock const*)"}, + {"_ZN4llvm17MachineModuleInfo24getAddrLabelSymbolToEmitEPKNS_10BasicBlockE", "llvm::MachineModuleInfo::getAddrLabelSymbolToEmit(llvm::BasicBlock const*)"}, + {"_ZN4llvm17MachineModuleInfo29takeDeletedSymbolsForFunctionEPKNS_8FunctionERSt6vectorIPNS_8MCSymbolESaIS6_EE", "llvm::MachineModuleInfo::takeDeletedSymbolsForFunction(llvm::Function const*, std::vector>&)"}, + {"_ZN4llvm17MachineModuleInfo25getOrCreateLandingPadInfoEPNS_17MachineBasicBlockE", "llvm::MachineModuleInfo::getOrCreateLandingPadInfo(llvm::MachineBasicBlock*)"}, + {"_ZN4llvm17MachineModuleInfo9addInvokeEPNS_17MachineBasicBlockEPNS_8MCSymbolES4_", "llvm::MachineModuleInfo::addInvoke(llvm::MachineBasicBlock*, llvm::MCSymbol*, llvm::MCSymbol*)"}, + {"_ZN4llvm17MachineModuleInfo13addLandingPadEPNS_17MachineBasicBlockE", "llvm::MachineModuleInfo::addLandingPad(llvm::MachineBasicBlock*)"}, + {"_ZN4llvm17MachineModuleInfo14addPersonalityEPNS_17MachineBasicBlockEPKNS_8FunctionE", "llvm::MachineModuleInfo::addPersonality(llvm::MachineBasicBlock*, llvm::Function const*)"}, + {"_ZN4llvm17MachineModuleInfo16addCatchTypeInfoEPNS_17MachineBasicBlockERSt6vectorIPKNS_14GlobalVariableESaIS6_EE", "llvm::MachineModuleInfo::addCatchTypeInfo(llvm::MachineBasicBlock*, std::vector>&)"}, + {"_ZN4llvm17MachineModuleInfo12getTypeIDForEPKNS_14GlobalVariableE", "llvm::MachineModuleInfo::getTypeIDFor(llvm::GlobalVariable const*)"}, + {"_ZN4llvm17MachineModuleInfo17addFilterTypeInfoEPNS_17MachineBasicBlockERSt6vectorIPKNS_14GlobalVariableESaIS6_EE", "llvm::MachineModuleInfo::addFilterTypeInfo(llvm::MachineBasicBlock*, std::vector>&)"}, + {"_ZN4llvm17MachineModuleInfo14getFilterIDForERSt6vectorIjSaIjEE", "llvm::MachineModuleInfo::getFilterIDFor(std::vector>&)"}, + {"_ZN4llvm17MachineModuleInfo10addCleanupEPNS_17MachineBasicBlockE", "llvm::MachineModuleInfo::addCleanup(llvm::MachineBasicBlock*)"}, + {"_ZN4llvm17MachineModuleInfo15TidyLandingPadsEPNS_8DenseMapIPNS_8MCSymbolEmNS_12DenseMapInfoIS3_EENS4_ImEEEE", "llvm::MachineModuleInfo::TidyLandingPads(llvm::DenseMap, llvm::DenseMapInfo>*)"}, + {"_ZNK4llvm17MachineModuleInfo14getPersonalityEv", "llvm::MachineModuleInfo::getPersonality() const"}, + {"_ZNK4llvm17MachineModuleInfo19getPersonalityIndexEv", "llvm::MachineModuleInfo::getPersonalityIndex() const"}, + {"_ZN4llvm26MMIAddrLabelMapCallbackPtrD1Ev", "llvm::MMIAddrLabelMapCallbackPtr::~MMIAddrLabelMapCallbackPtr()"}, + {"_ZNSt6vectorIPN4llvm8MCSymbolESaIS2_EEaSERKS4_", "std::vector>::operator=(std::vector> const&)"}, + {"_ZNSt6vectorIN4llvm14LandingPadInfoESaIS1_EE5clearEv", "std::vector>::clear()"}, + {"_ZNSt6vectorIN4llvm14LandingPadInfoESaIS1_EE5eraseEN9__gnu_cxx17__normal_iteratorIPS1_S3_EE", "std::vector>::erase(__gnu_cxx::__normal_iterator>>)"}, + {"_ZN4llvm26MMIAddrLabelMapCallbackPtrD0Ev", "llvm::MMIAddrLabelMapCallbackPtr::~MMIAddrLabelMapCallbackPtr()"}, + {"_ZNSt6vectorIPKN4llvm14GlobalVariableESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::GlobalVariable const* const&)"}, + + // {"_ZNSt6__copyILb0ESt26random_access_iterator_tagE4copyIPN4llvm14LandingPadInfoES5_EET0_T_S7_S6_", + // "llvm::LandingPadInfo* std::__copy::copy(llvm::LandingPadInfo*, llvm::LandingPadInfo*, llvm::LandingPadInfo*)"}, + // got error + + {"_ZNSt6vectorIiSaIiEEaSERKS1_", "std::vector>::operator=(std::vector> const&)"}, + {"_ZN4llvm15SmallVectorImplIPNS_8MCSymbolEEaSERKS3_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + {"_ZN4llvm8DenseMapIPNS_8MCSymbolEmNS_12DenseMapInfoIS2_EENS3_ImEEE16InsertIntoBucketERKS2_RKmPSt4pairIS2_mE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::MCSymbol* const&, unsigned long const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_8MCSymbolEmNS_12DenseMapInfoIS2_EENS3_ImEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNSt6vectorIiSaIiEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPiS1_EERKi", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, int const&)"}, + {"_ZNSt6vectorIN4llvm14LandingPadInfoESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::LandingPadInfo const&)"}, + + // {"_ZNSt15__copy_backwardILb0ESt26random_access_iterator_tagE8__copy_bIPN4llvm14LandingPadInfoES5_EET0_T_S7_S6_", + // "llvm::LandingPadInfo* std::__copy_backward::__copy_b(llvm::LandingPadInfo*, llvm::LandingPadInfo*, llvm::LandingPadInfo*)"}, + // got error + + {"_ZN4llvm14LandingPadInfoC2ERKS0_", "llvm::LandingPadInfo::LandingPadInfo(llvm::LandingPadInfo const&)"}, + {"_ZN4llvm8DenseMapIPNS_8MCSymbolEjNS_12DenseMapInfoIS2_EENS3_IjEEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZNSt6vectorIPKN4llvm8FunctionESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::Function const* const&)"}, + {"_ZNSt6vectorIN4llvm14LandingPadInfoESaIS1_EED2Ev", "std::vector>::~vector()"}, + + // {"_ZNSt6vectorIPN4llvm8MCSymbolESaIS2_EE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPS2_S4_EEEEvS9_T_SA_St20forward_iterator_tag", + // "void std::vector>::_M_range_insert<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, std::forward_iterator_tag)"}, + // got error + + {"_ZN4llvm8DenseMapINS_11AssertingVHINS_8FunctionEEESt6vectorIPNS_8MCSymbolESaIS6_EENS_12DenseMapInfoIS3_EENS9_IS8_EEE16FindAndConstructERKS3_", "llvm::DenseMap, std::vector>, llvm::DenseMapInfo>, llvm::DenseMapInfo>>>::FindAndConstruct(llvm::AssertingVH const&)"}, + {"_ZN4llvm8DenseMapINS_11AssertingVHINS_8FunctionEEESt6vectorIPNS_8MCSymbolESaIS6_EENS_12DenseMapInfoIS3_EENS9_IS8_EEE16InsertIntoBucketERKS3_RKS8_PSt4pairIS3_S8_E", "llvm::DenseMap, std::vector>, llvm::DenseMapInfo>, llvm::DenseMapInfo>>>::InsertIntoBucket(llvm::AssertingVH const&, std::vector> const&, std::pair, std::vector>>*)"}, + {"_ZN4llvm8DenseMapINS_11AssertingVHINS_8FunctionEEESt6vectorIPNS_8MCSymbolESaIS6_EENS_12DenseMapInfoIS3_EENS9_IS8_EEE4growEj", "llvm::DenseMap, std::vector>, llvm::DenseMapInfo>, llvm::DenseMapInfo>>>::grow(unsigned int)"}, + {"_ZNSt6vectorIPN4llvm8MCSymbolESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::MCSymbol* const&)"}, + {"_ZNSt6vectorIN4llvm26MMIAddrLabelMapCallbackPtrESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::MMIAddrLabelMapCallbackPtr const&)"}, + + // {"_ZNSt15__copy_backwardILb0ESt26random_access_iterator_tagE8__copy_bIPN4llvm26MMIAddrLabelMapCallbackPtrES5_EET0_T_S7_S6_", + // "llvm::MMIAddrLabelMapCallbackPtr* std::__copy_backward::__copy_b(llvm::MMIAddrLabelMapCallbackPtr*, llvm::MMIAddrLabelMapCallbackPtr*, llvm::MMIAddrLabelMapCallbackPtr*)"}, + // got error + + {"_ZN4llvm8DenseMapINS_11AssertingVHINS_10BasicBlockEEENS_15MMIAddrLabelMap17AddrLabelSymEntryENS_12DenseMapInfoIS3_EENS6_IS5_EEE16InsertIntoBucketERKS3_RKS5_PSt4pairIS3_S5_E", "llvm::DenseMap, llvm::MMIAddrLabelMap::AddrLabelSymEntry, llvm::DenseMapInfo>, llvm::DenseMapInfo>::InsertIntoBucket(llvm::AssertingVH const&, llvm::MMIAddrLabelMap::AddrLabelSymEntry const&, std::pair, llvm::MMIAddrLabelMap::AddrLabelSymEntry>*)"}, + {"_ZN4llvm8DenseMapINS_11AssertingVHINS_10BasicBlockEEENS_15MMIAddrLabelMap17AddrLabelSymEntryENS_12DenseMapInfoIS3_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::MMIAddrLabelMap::AddrLabelSymEntry, llvm::DenseMapInfo>, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm15MMIAddrLabelMapC2ERNS_9MCContextE", "llvm::MMIAddrLabelMap::MMIAddrLabelMap(llvm::MCContext&)"}, + {"_ZN4llvm15MMIAddrLabelMapD2Ev", "llvm::MMIAddrLabelMap::~MMIAddrLabelMap()"}, + {"_ZN4llvm15callDefaultCtorINS_17MachineModuleInfoEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor()"}, + {"_ZN4llvm22MachineModuleInfoMachO6AnchorEv", "llvm::MachineModuleInfoMachO::Anchor()"}, + {"_ZN4llvm20MachineModuleInfoELF6AnchorEv", "llvm::MachineModuleInfoELF::Anchor()"}, + + // {"_ZN4llvm21MachineModuleInfoImpl14GetSortedStubsERKNS_8DenseMapIPNS_8MCSymbolENS_14PointerIntPairIS3_Lj1EbNS_21PointerLikeTypeTraitsIS3_EEEENS_12DenseMapInfoIS3_EENS8_IS7_EEEE", + // "llvm::MachineModuleInfoImpl::GetSortedStubs(llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>> const&)"}, + // "llvm::MachineModuleInfoImpl::GetSortedStubs(llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>> const&)" was returned + + {"_Z14SortSymbolPairPKvS0_", "SortSymbolPair(void const*, void const*)"}, + {"_ZN4llvm22MachineModuleInfoMachOD1Ev", "llvm::MachineModuleInfoMachO::~MachineModuleInfoMachO()"}, + {"_ZN4llvm22MachineModuleInfoMachOD0Ev", "llvm::MachineModuleInfoMachO::~MachineModuleInfoMachO()"}, + {"_ZN4llvm20MachineModuleInfoELFD1Ev", "llvm::MachineModuleInfoELF::~MachineModuleInfoELF()"}, + {"_ZN4llvm20MachineModuleInfoELFD0Ev", "llvm::MachineModuleInfoELF::~MachineModuleInfoELF()"}, + + // {"_ZNSt6vectorISt4pairIPN4llvm8MCSymbolENS1_14PointerIntPairIS3_Lj1EbNS1_21PointerLikeTypeTraitsIS3_EEEEESaIS8_EE19_M_range_initializeINS1_16DenseMapIteratorIS3_S7_NS1_12DenseMapInfoIS3_EENSD_IS7_EELb1EEEEEvT_SH_St20forward_iterator_tag", + // "void std::vector>>, std::allocator>>>>::_M_range_initialize>, llvm::DenseMapInfo, llvm::DenseMapInfo>>, true>>(llvm::DenseMapIterator>, llvm::DenseMapInfo, llvm::DenseMapInfo>>, true>, llvm::DenseMapIterator>, llvm::DenseMapInfo, llvm::DenseMapInfo>>, true>, std::forward_iterator_tag)"}, + // got error + + {"_ZN4llvm19MachinePassRegistry6RemoveEPNS_23MachinePassRegistryNodeE", "llvm::MachinePassRegistry::Remove(llvm::MachinePassRegistryNode*)"}, + {"_ZN4llvm19MachineRegisterInfoC1ERKNS_18TargetRegisterInfoE", "llvm::MachineRegisterInfo::MachineRegisterInfo(llvm::TargetRegisterInfo const&)"}, + {"_ZN4llvm19MachineRegisterInfoC2ERKNS_18TargetRegisterInfoE", "llvm::MachineRegisterInfo::MachineRegisterInfo(llvm::TargetRegisterInfo const&)"}, + {"_ZN4llvm19MachineRegisterInfoD1Ev", "llvm::MachineRegisterInfo::~MachineRegisterInfo()"}, + {"_ZN4llvm19MachineRegisterInfoD2Ev", "llvm::MachineRegisterInfo::~MachineRegisterInfo()"}, + {"_ZN4llvm19MachineRegisterInfo11setRegClassEjPKNS_19TargetRegisterClassE", "llvm::MachineRegisterInfo::setRegClass(unsigned int, llvm::TargetRegisterClass const*)"}, + {"_ZN4llvm19MachineRegisterInfo17constrainRegClassEjPKNS_19TargetRegisterClassE", "llvm::MachineRegisterInfo::constrainRegClass(unsigned int, llvm::TargetRegisterClass const*)"}, + {"_ZN4llvm19MachineRegisterInfo21createVirtualRegisterEPKNS_19TargetRegisterClassE", "llvm::MachineRegisterInfo::createVirtualRegister(llvm::TargetRegisterClass const*)"}, + {"_ZN4llvm19MachineRegisterInfo26HandleVRegListReallocationEv", "llvm::MachineRegisterInfo::HandleVRegListReallocation()"}, + {"_ZN4llvm19MachineRegisterInfo14replaceRegWithEjj", "llvm::MachineRegisterInfo::replaceRegWith(unsigned int, unsigned int)"}, + {"_ZNK4llvm19MachineRegisterInfo10getVRegDefEj", "llvm::MachineRegisterInfo::getVRegDef(unsigned int) const"}, + {"_ZNK4llvm19MachineRegisterInfo9hasOneUseEj", "llvm::MachineRegisterInfo::hasOneUse(unsigned int) const"}, + {"_ZNK4llvm19MachineRegisterInfo15hasOneNonDBGUseEj", "llvm::MachineRegisterInfo::hasOneNonDBGUse(unsigned int) const"}, + {"_ZNK4llvm19MachineRegisterInfo14clearKillFlagsEj", "llvm::MachineRegisterInfo::clearKillFlags(unsigned int) const"}, + {"_ZNK4llvm19MachineRegisterInfo8isLiveInEj", "llvm::MachineRegisterInfo::isLiveIn(unsigned int) const"}, + {"_ZNK4llvm19MachineRegisterInfo9isLiveOutEj", "llvm::MachineRegisterInfo::isLiveOut(unsigned int) const"}, + {"_ZNK4llvm19MachineRegisterInfo16getLiveInPhysRegEj", "llvm::MachineRegisterInfo::getLiveInPhysReg(unsigned int) const"}, + {"_ZNK4llvm19MachineRegisterInfo16getLiveInVirtRegEj", "llvm::MachineRegisterInfo::getLiveInVirtReg(unsigned int) const"}, + {"_ZN4llvm19MachineRegisterInfo16EmitLiveInCopiesEPNS_17MachineBasicBlockERKNS_18TargetRegisterInfoERKNS_15TargetInstrInfoE", "llvm::MachineRegisterInfo::EmitLiveInCopies(llvm::MachineBasicBlock*, llvm::TargetRegisterInfo const&, llvm::TargetInstrInfo const&)"}, + {"_ZN4llvm19MachineRegisterInfo17closePhysRegsUsedERKNS_18TargetRegisterInfoE", "llvm::MachineRegisterInfo::closePhysRegsUsed(llvm::TargetRegisterInfo const&)"}, + {"_ZNSt6vectorISt4pairIjjESaIS1_EE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPS1_S3_EEmRKS1_", "std::vector, std::allocator>>::_M_fill_insert(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, unsigned long, std::pair const&)"}, + {"_ZNSt6vectorISt4pairIPKN4llvm19TargetRegisterClassEPNS1_14MachineOperandEESaIS7_EE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPS7_S9_EEmRKS7_", "std::vector, std::allocator>>::_M_fill_insert(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, unsigned long, std::pair const&)"}, + {"_ZNSt6vectorISt4pairIjjESaIS1_EE7reserveEm", "std::vector, std::allocator>>::reserve(unsigned long)"}, + {"_ZNSt6vectorISt4pairIPKN4llvm19TargetRegisterClassEPNS1_14MachineOperandEESaIS7_EE7reserveEm", "std::vector, std::allocator>>::reserve(unsigned long)"}, + {"_ZN4llvm17MachineSSAUpdaterC1ERNS_15MachineFunctionEPNS_15SmallVectorImplIPNS_12MachineInstrEEE", "llvm::MachineSSAUpdater::MachineSSAUpdater(llvm::MachineFunction&, llvm::SmallVectorImpl*)"}, + {"_ZN4llvm17MachineSSAUpdaterC2ERNS_15MachineFunctionEPNS_15SmallVectorImplIPNS_12MachineInstrEEE", "llvm::MachineSSAUpdater::MachineSSAUpdater(llvm::MachineFunction&, llvm::SmallVectorImpl*)"}, + {"_ZN4llvm17MachineSSAUpdaterD1Ev", "llvm::MachineSSAUpdater::~MachineSSAUpdater()"}, + {"_ZN4llvm17MachineSSAUpdaterD2Ev", "llvm::MachineSSAUpdater::~MachineSSAUpdater()"}, + {"_ZN4llvm17MachineSSAUpdater10InitializeEj", "llvm::MachineSSAUpdater::Initialize(unsigned int)"}, + {"_ZNK4llvm17MachineSSAUpdater16HasValueForBlockEPNS_17MachineBasicBlockE", "llvm::MachineSSAUpdater::HasValueForBlock(llvm::MachineBasicBlock*) const"}, + {"_ZN4llvm17MachineSSAUpdater17AddAvailableValueEPNS_17MachineBasicBlockEj", "llvm::MachineSSAUpdater::AddAvailableValue(llvm::MachineBasicBlock*, unsigned int)"}, + {"_ZN4llvm17MachineSSAUpdater20GetValueAtEndOfBlockEPNS_17MachineBasicBlockE", "llvm::MachineSSAUpdater::GetValueAtEndOfBlock(llvm::MachineBasicBlock*)"}, + {"_ZN4llvm17MachineSSAUpdater28GetValueAtEndOfBlockInternalEPNS_17MachineBasicBlockE", "llvm::MachineSSAUpdater::GetValueAtEndOfBlockInternal(llvm::MachineBasicBlock*)"}, + {"_ZN4llvm17MachineSSAUpdater23GetValueInMiddleOfBlockEPNS_17MachineBasicBlockE", "llvm::MachineSSAUpdater::GetValueInMiddleOfBlock(llvm::MachineBasicBlock*)"}, + {"_Z12InsertNewDefjPN4llvm17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEEPKNS_19TargetRegisterClassEPNS_19MachineRegisterInfoEPKNS_15TargetInstrInfoE", "InsertNewDef(unsigned int, llvm::MachineBasicBlock*, llvm::ilist_iterator, llvm::TargetRegisterClass const*, llvm::MachineRegisterInfo*, llvm::TargetInstrInfo const*)"}, + {"_ZN4llvm17MachineSSAUpdater10RewriteUseERNS_14MachineOperandE", "llvm::MachineSSAUpdater::RewriteUse(llvm::MachineOperand&)"}, + {"_ZN4llvm17MachineSSAUpdater14ReplaceRegWithEjj", "llvm::MachineSSAUpdater::ReplaceRegWith(unsigned int, unsigned int)"}, + {"_ZN4llvm14SSAUpdaterImplINS_17MachineSSAUpdaterEE8GetValueEPNS_17MachineBasicBlockE", "llvm::SSAUpdaterImpl::GetValue(llvm::MachineBasicBlock*)"}, + {"_ZN4llvm14SSAUpdaterImplINS_17MachineSSAUpdaterEE14BuildBlockListEPNS_17MachineBasicBlockEPNS_15SmallVectorImplIPNS2_6BBInfoEEE", "llvm::SSAUpdaterImpl::BuildBlockList(llvm::MachineBasicBlock*, llvm::SmallVectorImpl::BBInfo*>*)"}, + {"_ZN4llvm14SSAUpdaterImplINS_17MachineSSAUpdaterEE14FindDominatorsEPNS_15SmallVectorImplIPNS2_6BBInfoEEES5_", "llvm::SSAUpdaterImpl::FindDominators(llvm::SmallVectorImpl::BBInfo*>*, llvm::SSAUpdaterImpl::BBInfo*)"}, + {"_ZN4llvm14SSAUpdaterImplINS_17MachineSSAUpdaterEE17FindAvailableValsEPNS_15SmallVectorImplIPNS2_6BBInfoEEE", "llvm::SSAUpdaterImpl::FindAvailableVals(llvm::SmallVectorImpl::BBInfo*>*)"}, + {"_ZN4llvm8DenseMapIPNS_17MachineBasicBlockEPNS_14SSAUpdaterImplINS_17MachineSSAUpdaterEE6BBInfoENS_12DenseMapInfoIS2_EENS8_IS7_EEE16InsertIntoBucketERKS2_RKS7_PSt4pairIS2_S7_E", "llvm::DenseMap::BBInfo*, llvm::DenseMapInfo, llvm::DenseMapInfo::BBInfo*>>::InsertIntoBucket(llvm::MachineBasicBlock* const&, llvm::SSAUpdaterImpl::BBInfo* const&, std::pair::BBInfo*>*)"}, + {"_ZN4llvm8DenseMapIPNS_17MachineBasicBlockEPNS_14SSAUpdaterImplINS_17MachineSSAUpdaterEE6BBInfoENS_12DenseMapInfoIS2_EENS8_IS7_EEE4growEj", "llvm::DenseMap::BBInfo*, llvm::DenseMapInfo, llvm::DenseMapInfo::BBInfo*>>::grow(unsigned int)"}, + {"_ZN4llvm14SSAUpdaterImplINS_17MachineSSAUpdaterEE17CheckIfPHIMatchesEPNS_12MachineInstrE", "llvm::SSAUpdaterImpl::CheckIfPHIMatches(llvm::MachineInstr*)"}, + {"_ZN4llvm14SSAUpdaterImplINS_17MachineSSAUpdaterEE17RecordMatchingPHIEPNS_12MachineInstrE", "llvm::SSAUpdaterImpl::RecordMatchingPHI(llvm::MachineInstr*)"}, + {"_ZN4llvm8DenseMapIPNS_17MachineBasicBlockEjNS_12DenseMapInfoIS2_EENS3_IjEEE16InsertIntoBucketERKS2_RKjPSt4pairIS2_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::MachineBasicBlock* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_17MachineBasicBlockEjNS_12DenseMapInfoIS2_EENS3_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPNS_17MachineBasicBlockEjNS_12DenseMapInfoIS2_EENS3_IjEEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm28initializeMachineSinkingPassERNS_12PassRegistryE", "llvm::initializeMachineSinkingPass(llvm::PassRegistry&)"}, + {"_ZN4llvm24createMachineSinkingPassEv", "llvm::createMachineSinkingPass()"}, + {"_ZN12_GLOBAL__N_114MachineSinkingD1Ev", "(anonymous namespace)::MachineSinking::~MachineSinking()"}, + {"_ZN12_GLOBAL__N_114MachineSinkingD0Ev", "(anonymous namespace)::MachineSinking::~MachineSinking()"}, + {"_ZNK12_GLOBAL__N_114MachineSinking16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::MachineSinking::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_114MachineSinking13releaseMemoryEv", "(anonymous namespace)::MachineSinking::releaseMemory()"}, + {"_ZN12_GLOBAL__N_114MachineSinking20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::MachineSinking::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZNK12_GLOBAL__N_114MachineSinking23AllUsesDominatedByBlockEjPN4llvm17MachineBasicBlockES3_RbS4_", "(anonymous namespace)::MachineSinking::AllUsesDominatedByBlock(unsigned int, llvm::MachineBasicBlock*, llvm::MachineBasicBlock*, bool&, bool&) const"}, + {"_ZN12_GLOBAL__N_114MachineSinking17SplitCriticalEdgeEPN4llvm12MachineInstrEPNS1_17MachineBasicBlockES5_b", "(anonymous namespace)::MachineSinking::SplitCriticalEdge(llvm::MachineInstr*, llvm::MachineBasicBlock*, llvm::MachineBasicBlock*, bool)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_114MachineSinkingEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::MachineSinking>()"}, + + // {"_ZN4llvm8SmallSetISt4pairIPNS_17MachineBasicBlockES3_ELj8EE6insertERKS4_", + // "llvm::SmallSet, 8u>::insert(std::pair const&)"}, + // "llvm::SmallSet, 8>::insert(std::pair const&)" was returned + + {"_ZNSt8_Rb_treeISt4pairIPN4llvm17MachineBasicBlockES3_ES4_St9_IdentityIS4_ESt4lessIS4_ESaIS4_EE16_M_insert_uniqueERKS4_", "std::_Rb_tree, std::pair, std::_Identity>, std::less>, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZNSt8_Rb_treeISt4pairIPN4llvm17MachineBasicBlockES3_ES4_St9_IdentityIS4_ESt4lessIS4_ESaIS4_EE8_M_eraseEPSt13_Rb_tree_nodeIS4_E", "std::_Rb_tree, std::pair, std::_Identity>, std::less>, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZN4llvm33initializeMachineVerifierPassPassERNS_12PassRegistryE", "llvm::initializeMachineVerifierPassPass(llvm::PassRegistry&)"}, + {"_ZN4llvm25createMachineVerifierPassEPKc", "llvm::createMachineVerifierPass(char const*)"}, + {"_ZNK4llvm15MachineFunction6verifyEPNS_4PassEPKc", "llvm::MachineFunction::verify(llvm::Pass*, char const*) const"}, + {"_ZN12_GLOBAL__N_115MachineVerifier20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::MachineVerifier::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN12_GLOBAL__N_115MachineVerifier6reportEPKcPKN4llvm17MachineBasicBlockE", "(anonymous namespace)::MachineVerifier::report(char const*, llvm::MachineBasicBlock const*)"}, + {"_ZN12_GLOBAL__N_115MachineVerifier25visitMachineFunctionAfterEv", "(anonymous namespace)::MachineVerifier::visitMachineFunctionAfter()"}, + {"_ZN4llvm8DenseMapIPKNS_17MachineBasicBlockEN12_GLOBAL__N_115MachineVerifier6BBInfoENS_12DenseMapInfoIS3_EENS7_IS6_EEEixERKS3_", "llvm::DenseMap, llvm::DenseMapInfo<(anonymous namespace)::MachineVerifier::BBInfo>>::operator[](llvm::MachineBasicBlock const* const&)"}, + {"_ZN12_GLOBAL__N_115MachineVerifier6reportEPKcPKN4llvm15MachineFunctionE", "(anonymous namespace)::MachineVerifier::report(char const*, llvm::MachineFunction const*)"}, + {"_ZN12_GLOBAL__N_115MachineVerifier6reportEPKcPKN4llvm12MachineInstrE", "(anonymous namespace)::MachineVerifier::report(char const*, llvm::MachineInstr const*)"}, + {"_ZN12_GLOBAL__N_115MachineVerifier6BBInfo9addPassedERKN4llvm8DenseSetIjNS2_12DenseMapInfoIjEEEE", "(anonymous namespace)::MachineVerifier::BBInfo::addPassed(llvm::DenseSet> const&)"}, + {"_ZN12_GLOBAL__N_115MachineVerifier13markReachableEPKN4llvm17MachineBasicBlockE", "(anonymous namespace)::MachineVerifier::markReachable(llvm::MachineBasicBlock const*)"}, + {"_ZN12_GLOBAL__N_119MachineVerifierPassD1Ev", "(anonymous namespace)::MachineVerifierPass::~MachineVerifierPass()"}, + {"_ZN12_GLOBAL__N_119MachineVerifierPassD0Ev", "(anonymous namespace)::MachineVerifierPass::~MachineVerifierPass()"}, + {"_ZNK12_GLOBAL__N_119MachineVerifierPass16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::MachineVerifierPass::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_119MachineVerifierPass20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::MachineVerifierPass::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_119MachineVerifierPassEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::MachineVerifierPass>()"}, + {"_ZN4llvm8DenseMapIjcNS_12DenseMapInfoIjEENS1_IcEEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZNK4llvm11SlotIndexes15getMBBFromIndexENS_9SlotIndexE", "llvm::SlotIndexes::getMBBFromIndex(llvm::SlotIndex) const"}, + {"_ZN4llvm8DenseMapIPKNS_17MachineBasicBlockEcNS_12DenseMapInfoIS3_EENS4_IcEEE6insertERKSt4pairIS3_cE", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPKNS_17MachineBasicBlockEcNS_12DenseMapInfoIS3_EENS4_IcEEE16InsertIntoBucketERKS3_RKcPSt4pairIS3_cE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::MachineBasicBlock const* const&, char const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_17MachineBasicBlockEcNS_12DenseMapInfoIS3_EENS4_IcEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIjcNS_12DenseMapInfoIjEENS1_IcEEE8CopyFromERKS4_", "llvm::DenseMap, llvm::DenseMapInfo>::CopyFrom(llvm::DenseMap, llvm::DenseMapInfo> const&)"}, + {"_ZN4llvm8DenseMapIjPKNS_12MachineInstrENS_12DenseMapInfoIjEENS4_IS3_EEE8CopyFromERKS7_", "llvm::DenseMap, llvm::DenseMapInfo>::CopyFrom(llvm::DenseMap, llvm::DenseMapInfo> const&)"}, + {"_ZN4llvm8DenseMapIjPKNS_12MachineInstrENS_12DenseMapInfoIjEENS4_IS3_EEE6insertERKSt4pairIjS3_E", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + + // {"_ZSt6__findIN9__gnu_cxx17__normal_iteratorIPPN4llvm12MachineInstrESt6vectorIS4_SaIS4_EEEEPKS3_ET_SC_SC_RKT0_St26random_access_iterator_tag", + // "__gnu_cxx::__normal_iterator>> std::__find<__gnu_cxx::__normal_iterator>>, llvm::MachineInstr const*>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, llvm::MachineInstr const* const&, std::random_access_iterator_tag)"}, + // got error + + {"_ZN4llvm26initializeOptimizePHIsPassERNS_12PassRegistryE", "llvm::initializeOptimizePHIsPass(llvm::PassRegistry&)"}, + {"_ZN4llvm22createOptimizePHIsPassEv", "llvm::createOptimizePHIsPass()"}, + {"_ZN12_GLOBAL__N_112OptimizePHIsD1Ev", "(anonymous namespace)::OptimizePHIs::~OptimizePHIs()"}, + {"_ZN12_GLOBAL__N_112OptimizePHIsD0Ev", "(anonymous namespace)::OptimizePHIs::~OptimizePHIs()"}, + {"_ZNK12_GLOBAL__N_112OptimizePHIs16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::OptimizePHIs::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_112OptimizePHIs20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::OptimizePHIs::runOnMachineFunction(llvm::MachineFunction&)"}, + + // {"_ZN12_GLOBAL__N_112OptimizePHIs21IsSingleValuePHICycleEPN4llvm12MachineInstrERjRNS1_11SmallPtrSetIS3_Lj16EEE", + // "(anonymous namespace)::OptimizePHIs::IsSingleValuePHICycle(llvm::MachineInstr*, unsigned int&, llvm::SmallPtrSet&)"}, + // "(anonymous namespace)::OptimizePHIs::IsSingleValuePHICycle(llvm::MachineInstr*, unsigned int&, llvm::SmallPtrSet&)" was returned + + + // {"_ZN12_GLOBAL__N_112OptimizePHIs14IsDeadPHICycleEPN4llvm12MachineInstrERNS1_11SmallPtrSetIS3_Lj16EEE", + // "(anonymous namespace)::OptimizePHIs::IsDeadPHICycle(llvm::MachineInstr*, llvm::SmallPtrSet&)"}, + // "(anonymous namespace)::OptimizePHIs::IsDeadPHICycle(llvm::MachineInstr*, llvm::SmallPtrSet&)" was returned + + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_112OptimizePHIsEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::OptimizePHIs>()"}, + {"_ZN4llvm28initializePHIEliminationPassERNS_12PassRegistryE", "llvm::initializePHIEliminationPass(llvm::PassRegistry&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_114PHIEliminationEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::PHIElimination>()"}, + {"_ZN12_GLOBAL__N_114PHIEliminationD1Ev", "(anonymous namespace)::PHIElimination::~PHIElimination()"}, + {"_ZN12_GLOBAL__N_114PHIEliminationD0Ev", "(anonymous namespace)::PHIElimination::~PHIElimination()"}, + {"_ZNK12_GLOBAL__N_114PHIElimination16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::PHIElimination::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_114PHIElimination20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::PHIElimination::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN4llvm8DenseMapISt4pairIjjEjNS_12DenseMapInfoIS2_EENS3_IjEEE5clearEv", "llvm::DenseMap, unsigned int, llvm::DenseMapInfo>, llvm::DenseMapInfo>::clear()"}, + {"_ZN4llvm8DenseMapISt4pairIjjEjNS_12DenseMapInfoIS2_EENS3_IjEEE16shrink_and_clearEv", "llvm::DenseMap, unsigned int, llvm::DenseMapInfo>, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm8DenseMapIPNS_12MachineInstrEjNS_27MachineInstrExpressionTraitENS_12DenseMapInfoIjEEE16shrink_and_clearEv", "llvm::DenseMap>::shrink_and_clear()"}, + + // {"_ZN4llvm15SparseBitVectorILj128EE5resetEj", + // "llvm::SparseBitVector<128u>::reset(unsigned int)"}, + // "llvm::SparseBitVector<128>::reset(unsigned int)" was returned + + + // {"_ZNK4llvm8DenseMapISt4pairIjjEjNS_12DenseMapInfoIS2_EENS3_IjEEE15LookupBucketForERKS2_RPS1_IS2_jE", + // "llvm::DenseMap, unsigned int, llvm::DenseMapInfo>, llvm::DenseMapInfo>::LookupBucketFor(std::pair const&, std::pair, unsigned int>*&) const"}, + // "llvm::DenseMap, unsigned int, llvm::DenseMapInfo>, llvm::DenseMapInfo>::LookupBucketFor(std::pair const&, std::pair*&, unsigned int>) const" was returned + + + // {"_ZN4llvm8DenseMapISt4pairIjjEjNS_12DenseMapInfoIS2_EENS3_IjEEE16InsertIntoBucketERKS2_RKjPS1_IS2_jE", + // "llvm::DenseMap, unsigned int, llvm::DenseMapInfo>, llvm::DenseMapInfo>::InsertIntoBucket(std::pair const&, unsigned int const&, std::pair, unsigned int>*)"}, + // "llvm::DenseMap, unsigned int, llvm::DenseMapInfo>, llvm::DenseMapInfo>::InsertIntoBucket(std::pair const&, unsigned int const&, std::pair*, unsigned int>)" was returned + + {"_ZN4llvm8DenseMapISt4pairIjjEjNS_12DenseMapInfoIS2_EENS3_IjEEE4growEj", "llvm::DenseMap, unsigned int, llvm::DenseMapInfo>, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNK4llvm8DenseMapIPNS_12MachineInstrEjNS_27MachineInstrExpressionTraitENS_12DenseMapInfoIjEEE15LookupBucketForERKS2_RPSt4pairIS2_jE", "llvm::DenseMap>::LookupBucketFor(llvm::MachineInstr* const&, std::pair*&) const"}, + {"_ZN4llvm8DenseMapIPNS_12MachineInstrEjNS_27MachineInstrExpressionTraitENS_12DenseMapInfoIjEEE16InsertIntoBucketERKS2_RKjPSt4pairIS2_jE", "llvm::DenseMap>::InsertIntoBucket(llvm::MachineInstr* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_12MachineInstrEjNS_27MachineInstrExpressionTraitENS_12DenseMapInfoIjEEE4growEj", "llvm::DenseMap>::grow(unsigned int)"}, + {"_ZN4llvm22findPHICopyInsertPointEPNS_17MachineBasicBlockES1_j", "llvm::findPHICopyInsertPoint(llvm::MachineBasicBlock*, llvm::MachineBasicBlock*, unsigned int)"}, + {"_Z30createDefaultRegisterAllocatorv", "createDefaultRegisterAllocator()"}, + {"_ZN4llvm23createRegisterAllocatorENS_10CodeGenOpt5LevelE", "llvm::createRegisterAllocator(llvm::CodeGenOpt::Level)"}, + {"_ZN4llvm16RegisterRegAllocD1Ev", "llvm::RegisterRegAlloc::~RegisterRegAlloc()"}, + {"_ZN4llvm2cl3optIPFPNS_12FunctionPassEvELb0ENS_18RegisterPassParserINS_16RegisterRegAllocEEEED1Ev", "llvm::cl::opt>::~opt()"}, + {"_ZN4llvm2cl3optIPFPNS_12FunctionPassEvELb0ENS_18RegisterPassParserINS_16RegisterRegAllocEEEE4doneEv", "llvm::cl::opt>::done()"}, + + // {"_ZN4llvm2cl3optIPFPNS_12FunctionPassEvELb0ENS_18RegisterPassParserINS_16RegisterRegAllocEEEE16handleOccurrenceEjNS_9StringRefESA_", + // "llvm::cl::opt>::handleOccurrence(unsigned int, llvm::StringRef, llvm::StringRef)"}, + // got error + + {"_ZNK4llvm2cl3optIPFPNS_12FunctionPassEvELb0ENS_18RegisterPassParserINS_16RegisterRegAllocEEEE27getValueExpectedFlagDefaultEv", "llvm::cl::opt>::getValueExpectedFlagDefault() const"}, + {"_ZNK4llvm2cl3optIPFPNS_12FunctionPassEvELb0ENS_18RegisterPassParserINS_16RegisterRegAllocEEEE14getOptionWidthEv", "llvm::cl::opt>::getOptionWidth() const"}, + {"_ZNK4llvm2cl3optIPFPNS_12FunctionPassEvELb0ENS_18RegisterPassParserINS_16RegisterRegAllocEEEE15printOptionInfoEm", "llvm::cl::opt>::printOptionInfo(unsigned long) const"}, + {"_ZN4llvm2cl3optIPFPNS_12FunctionPassEvELb0ENS_18RegisterPassParserINS_16RegisterRegAllocEEEE19getExtraOptionNamesERNS_15SmallVectorImplIPKcEE", "llvm::cl::opt>::getExtraOptionNames(llvm::SmallVectorImpl&)"}, + {"_ZN4llvm2cl3optIPFPNS_12FunctionPassEvELb0ENS_18RegisterPassParserINS_16RegisterRegAllocEEEED0Ev", "llvm::cl::opt>::~opt()"}, + + // {"_ZN4llvm2cl6parserIPFPNS_12FunctionPassEvEE5parseERNS0_6OptionENS_9StringRefES9_RS5_", + // "llvm::cl::parser::parse(llvm::cl::Option&, llvm::StringRef, llvm::StringRef, llvm::FunctionPass* (*&)())"}, + // got error + + {"_ZN4llvm23SmallVectorTemplateBaseINS_2cl6parserIPFPNS_12FunctionPassEvEE10OptionInfoELb0EE4growEm", "llvm::SmallVectorTemplateBase::OptionInfo, false>::grow(unsigned long)"}, + {"_ZN4llvm18RegisterPassParserINS_16RegisterRegAllocEED1Ev", "llvm::RegisterPassParser::~RegisterPassParser()"}, + {"_ZN4llvm18RegisterPassParserINS_16RegisterRegAllocEED0Ev", "llvm::RegisterPassParser::~RegisterPassParser()"}, + {"_ZN4llvm18RegisterPassParserINS_16RegisterRegAllocEE9NotifyAddEPKcPFPvvES4_", "llvm::RegisterPassParser::NotifyAdd(char const*, void* (*)(), char const*)"}, + {"_ZN4llvm18RegisterPassParserINS_16RegisterRegAllocEE12NotifyRemoveEPKc", "llvm::RegisterPassParser::NotifyRemove(char const*)"}, + + // {"_ZThn16_N4llvm18RegisterPassParserINS_16RegisterRegAllocEED1Ev", + // "non-virtual thunk to llvm::RegisterPassParser::~RegisterPassParser()"}, + // "virtual function non-virtual override offset : -16 llvm::RegisterPassParser::~RegisterPassParser()" was returned + + + // {"_ZThn16_N4llvm18RegisterPassParserINS_16RegisterRegAllocEED0Ev", + // "non-virtual thunk to llvm::RegisterPassParser::~RegisterPassParser()"}, + // "virtual function non-virtual override offset : -16 llvm::RegisterPassParser::~RegisterPassParser()" was returned + + {"_ZNK4llvm2cl6parserIPFPNS_12FunctionPassEvEE13getNumOptionsEv", "llvm::cl::parser::getNumOptions() const"}, + {"_ZNK4llvm2cl6parserIPFPNS_12FunctionPassEvEE9getOptionEj", "llvm::cl::parser::getOption(unsigned int) const"}, + {"_ZNK4llvm2cl6parserIPFPNS_12FunctionPassEvEE14getDescriptionEj", "llvm::cl::parser::getDescription(unsigned int) const"}, + {"_ZN4llvm2cl6parserIPFPNS_12FunctionPassEvEED1Ev", "llvm::cl::parser::~parser()"}, + {"_ZN4llvm2cl6parserIPFPNS_12FunctionPassEvEED0Ev", "llvm::cl::parser::~parser()"}, + {"_ZN4llvm31initializePeepholeOptimizerPassERNS_12PassRegistryE", "llvm::initializePeepholeOptimizerPass(llvm::PassRegistry&)"}, + {"_ZN4llvm27createPeepholeOptimizerPassEv", "llvm::createPeepholeOptimizerPass()"}, + {"_ZN12_GLOBAL__N_117PeepholeOptimizerD1Ev", "(anonymous namespace)::PeepholeOptimizer::~PeepholeOptimizer()"}, + {"_ZN12_GLOBAL__N_117PeepholeOptimizerD0Ev", "(anonymous namespace)::PeepholeOptimizer::~PeepholeOptimizer()"}, + {"_ZNK12_GLOBAL__N_117PeepholeOptimizer16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::PeepholeOptimizer::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_117PeepholeOptimizer20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::PeepholeOptimizer::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_117PeepholeOptimizerEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::PeepholeOptimizer>()"}, + {"_ZN4llvm8DenseMapIjPNS_12MachineInstrENS_12DenseMapInfoIjEENS3_IS2_EEE6insertERKSt4pairIjS2_E", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIjPNS_12MachineInstrENS_12DenseMapInfoIjEENS3_IS2_EEE16InsertIntoBucketERKjRKS2_PSt4pairIjS2_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(unsigned int const&, llvm::MachineInstr* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIjPNS_12MachineInstrENS_12DenseMapInfoIjEENS3_IS2_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIjPNS_12MachineInstrENS_12DenseMapInfoIjEENS3_IS2_EEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm14AntiDepBreakerD0Ev", "llvm::AntiDepBreaker::~AntiDepBreaker()"}, + {"_ZN4llvm14AntiDepBreakerD1Ev", "llvm::AntiDepBreaker::~AntiDepBreaker()"}, + {"_ZN4llvm14AntiDepBreakerD2Ev", "llvm::AntiDepBreaker::~AntiDepBreaker()"}, + {"_ZN4llvm21createPostRASchedulerENS_10CodeGenOpt5LevelE", "llvm::createPostRAScheduler(llvm::CodeGenOpt::Level)"}, + {"_ZN12_GLOBAL__N_115PostRASchedulerD1Ev", "(anonymous namespace)::PostRAScheduler::~PostRAScheduler()"}, + {"_ZN12_GLOBAL__N_115PostRASchedulerD0Ev", "(anonymous namespace)::PostRAScheduler::~PostRAScheduler()"}, + {"_ZNK12_GLOBAL__N_115PostRAScheduler11getPassNameEv", "(anonymous namespace)::PostRAScheduler::getPassName() const"}, + {"_ZNK12_GLOBAL__N_115PostRAScheduler16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::PostRAScheduler::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_115PostRAScheduler20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::PostRAScheduler::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN12_GLOBAL__N_120SchedulePostRATDList10StartBlockEPN4llvm17MachineBasicBlockE", "(anonymous namespace)::SchedulePostRATDList::StartBlock(llvm::MachineBasicBlock*)"}, + {"_ZN12_GLOBAL__N_120SchedulePostRATDList11FinishBlockEv", "(anonymous namespace)::SchedulePostRATDList::FinishBlock()"}, + {"_ZN12_GLOBAL__N_120SchedulePostRATDListD1Ev", "(anonymous namespace)::SchedulePostRATDList::~SchedulePostRATDList()"}, + {"_ZN12_GLOBAL__N_120SchedulePostRATDListD0Ev", "(anonymous namespace)::SchedulePostRATDList::~SchedulePostRATDList()"}, + {"_ZN12_GLOBAL__N_120SchedulePostRATDList8ScheduleEv", "(anonymous namespace)::SchedulePostRATDList::Schedule()"}, + {"_ZN12_GLOBAL__N_120SchedulePostRATDList17ReleaseSuccessorsEPN4llvm5SUnitE", "(anonymous namespace)::SchedulePostRATDList::ReleaseSuccessors(llvm::SUnit*)"}, + + // {"_ZN4llvm2cl3optISsLb0ENS0_6parserISsEEEC2IA24_cNS0_4descENS0_11initializerIA5_cEENS0_12OptionHiddenEEERKT_RKT0_RKT1_RKT2_", + // "llvm::cl::opt>::opt, llvm::cl::OptionHidden>(char const (&) [24], llvm::cl::desc const&, llvm::cl::initializer const&, llvm::cl::OptionHidden const&)"}, + // "std::string const& llvm::cl::opt>::string, llvm::cl::OptionHidden>(false const&, llvm::cl::parser const&, char [24] const&)" was returned + + {"_ZN4llvm20LatencyPriorityQueueD1Ev", "llvm::LatencyPriorityQueue::~LatencyPriorityQueue()"}, + {"_ZN4llvm17ScheduleDAGInstrsD2Ev", "llvm::ScheduleDAGInstrs::~ScheduleDAGInstrs()"}, + {"_ZNK4llvm11ScheduleDAG22addCustomGraphFeaturesERNS_11GraphWriterIPS0_EE", "llvm::ScheduleDAG::addCustomGraphFeatures(llvm::GraphWriter&) const"}, + {"_ZNK4llvm11ScheduleDAG18ForceUnitLatenciesEv", "llvm::ScheduleDAG::ForceUnitLatencies() const"}, + {"_ZNSt6vectorIPN4llvm5SUnitESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::SUnit* const&)"}, + {"_ZN4llvm15SmallVectorImplINS_4SDepEEaSERKS2_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + {"_ZNSt6vectorIN4llvm5SUnitESaIS1_EE15_M_erase_at_endEPS1_", "std::vector>::_M_erase_at_end(llvm::SUnit*)"}, + {"_ZN4llvm17ScheduleDAGInstrsD1Ev", "llvm::ScheduleDAGInstrs::~ScheduleDAGInstrs()"}, + {"_ZN4llvm17ScheduleDAGInstrsD0Ev", "llvm::ScheduleDAGInstrs::~ScheduleDAGInstrs()"}, + {"_ZNSt8_Rb_treeIjSt4pairIKjS0_IPKN4llvm14MachineOperandEjEESt10_Select1stIS7_ESt4lessIjESaIS7_EE8_M_eraseEPSt13_Rb_tree_nodeIS7_E", "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_erase(std::_Rb_tree_node>>*)"}, + {"_ZN4llvm20LatencyPriorityQueueD0Ev", "llvm::LatencyPriorityQueue::~LatencyPriorityQueue()"}, + {"_ZNK4llvm20LatencyPriorityQueue10isBottomUpEv", "llvm::LatencyPriorityQueue::isBottomUp() const"}, + {"_ZN4llvm20LatencyPriorityQueue9initNodesERSt6vectorINS_5SUnitESaIS2_EE", "llvm::LatencyPriorityQueue::initNodes(std::vector>&)"}, + {"_ZN4llvm20LatencyPriorityQueue7addNodeEPKNS_5SUnitE", "llvm::LatencyPriorityQueue::addNode(llvm::SUnit const*)"}, + {"_ZN4llvm20LatencyPriorityQueue10updateNodeEPKNS_5SUnitE", "llvm::LatencyPriorityQueue::updateNode(llvm::SUnit const*)"}, + {"_ZN4llvm20LatencyPriorityQueue12releaseStateEv", "llvm::LatencyPriorityQueue::releaseState()"}, + {"_ZNK4llvm20LatencyPriorityQueue5emptyEv", "llvm::LatencyPriorityQueue::empty() const"}, + {"_ZNK4llvm23SchedulingPriorityQueue17tracksRegPressureEv", "llvm::SchedulingPriorityQueue::tracksRegPressure() const"}, + {"_ZNK4llvm23SchedulingPriorityQueue7isReadyEPNS_5SUnitE", "llvm::SchedulingPriorityQueue::isReady(llvm::SUnit*) const"}, + {"_ZN4llvm23SchedulingPriorityQueue15UnscheduledNodeEPNS_5SUnitE", "llvm::SchedulingPriorityQueue::UnscheduledNode(llvm::SUnit*)"}, + {"_ZN4llvm23SchedulingPriorityQueueD1Ev", "llvm::SchedulingPriorityQueue::~SchedulingPriorityQueue()"}, + {"_ZN4llvm23SchedulingPriorityQueueD0Ev", "llvm::SchedulingPriorityQueue::~SchedulingPriorityQueue()"}, + {"_ZNK4llvm23SchedulingPriorityQueue4dumpEPNS_11ScheduleDAGE", "llvm::SchedulingPriorityQueue::dump(llvm::ScheduleDAG*) const"}, + {"_ZN4llvm23SchedulingPriorityQueue13ScheduledNodeEPNS_5SUnitE", "llvm::SchedulingPriorityQueue::ScheduledNode(llvm::SUnit*)"}, + {"_ZN4llvm31initializePreAllocSplittingPassERNS_12PassRegistryE", "llvm::initializePreAllocSplittingPass(llvm::PassRegistry&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_117PreAllocSplittingEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::PreAllocSplitting>()"}, + {"_ZN12_GLOBAL__N_117PreAllocSplittingD1Ev", "(anonymous namespace)::PreAllocSplitting::~PreAllocSplitting()"}, + {"_ZN12_GLOBAL__N_117PreAllocSplittingD0Ev", "(anonymous namespace)::PreAllocSplitting::~PreAllocSplitting()"}, + {"_ZNK12_GLOBAL__N_117PreAllocSplitting11getPassNameEv", "(anonymous namespace)::PreAllocSplitting::getPassName() const"}, + {"_ZNK12_GLOBAL__N_117PreAllocSplitting5printERN4llvm11raw_ostreamEPKNS1_6ModuleE", "(anonymous namespace)::PreAllocSplitting::print(llvm::raw_ostream&, llvm::Module const*) const"}, + {"_ZNK12_GLOBAL__N_117PreAllocSplitting16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::PreAllocSplitting::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_117PreAllocSplitting13releaseMemoryEv", "(anonymous namespace)::PreAllocSplitting::releaseMemory()"}, + {"_ZN12_GLOBAL__N_117PreAllocSplitting20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::PreAllocSplitting::runOnMachineFunction(llvm::MachineFunction&)"}, + + // {"_ZN12_GLOBAL__N_117PreAllocSplitting9FoldSpillEjPKN4llvm19TargetRegisterClassEPNS1_12MachineInstrES6_PNS1_17MachineBasicBlockERiRNS1_11SmallPtrSetIS6_Lj4EEE", + // "(anonymous namespace)::PreAllocSplitting::FoldSpill(unsigned int, llvm::TargetRegisterClass const*, llvm::MachineInstr*, llvm::MachineInstr*, llvm::MachineBasicBlock*, int&, llvm::SmallPtrSet&)"}, + // "(anonymous namespace)::PreAllocSplitting::FoldSpill(unsigned int, llvm::TargetRegisterClass const*, llvm::MachineInstr*, llvm::MachineInstr*, llvm::MachineBasicBlock*, int&, llvm::SmallPtrSet&)" was returned + + + // {"_ZN12_GLOBAL__N_117PreAllocSplitting14findSpillPointEPN4llvm17MachineBasicBlockEPNS1_12MachineInstrES5_RNS1_11SmallPtrSetIS5_Lj4EEE", + // "(anonymous namespace)::PreAllocSplitting::findSpillPoint(llvm::MachineBasicBlock*, llvm::MachineInstr*, llvm::MachineInstr*, llvm::SmallPtrSet&)"}, + // "(anonymous namespace)::PreAllocSplitting::findSpillPoint(llvm::MachineBasicBlock*, llvm::MachineInstr*, llvm::MachineInstr*, llvm::SmallPtrSet&)" was returned + + {"_ZN12_GLOBAL__N_117PreAllocSplitting20CreateSpillStackSlotEjPKN4llvm19TargetRegisterClassE", "(anonymous namespace)::PreAllocSplitting::CreateSpillStackSlot(unsigned int, llvm::TargetRegisterClass const*)"}, + {"_ZN12_GLOBAL__N_117PreAllocSplitting23UpdateSpillSlotIntervalEPN4llvm6VNInfoENS1_9SlotIndexES4_", "(anonymous namespace)::PreAllocSplitting::UpdateSpillSlotInterval(llvm::VNInfo*, llvm::SlotIndex, llvm::SlotIndex)"}, + {"_ZN12_GLOBAL__N_117PreAllocSplitting23ReconstructLiveIntervalEPN4llvm12LiveIntervalE", "(anonymous namespace)::PreAllocSplitting::ReconstructLiveInterval(llvm::LiveInterval*)"}, + {"_ZN12_GLOBAL__N_117PreAllocSplitting13RenumberValnoEPN4llvm6VNInfoE", "(anonymous namespace)::PreAllocSplitting::RenumberValno(llvm::VNInfo*)"}, + + // {"_ZN12_GLOBAL__N_117PreAllocSplitting22PerformPHIConstructionEN4llvm14ilist_iteratorINS1_12MachineInstrEEEPNS1_17MachineBasicBlockEPNS1_12LiveIntervalERNS1_11SmallPtrSetIPS3_Lj4EEERNS1_8DenseMapIS6_NS9_ISA_Lj2EEENS1_12DenseMapInfoIS6_EENSF_ISE_EEEESJ_RNSD_ISA_PNS1_6VNInfoENSF_ISA_EENSF_ISL_EEEERNSD_IS6_SL_SG_SN_EESR_bb", + // "(anonymous namespace)::PreAllocSplitting::PerformPHIConstruction(llvm::ilist_iterator, llvm::MachineBasicBlock*, llvm::LiveInterval*, llvm::SmallPtrSet&, llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>&, llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>&, llvm::DenseMap, llvm::DenseMapInfo>&, llvm::DenseMap, llvm::DenseMapInfo>&, llvm::DenseMap, llvm::DenseMapInfo>&, bool, bool)"}, + // "(anonymous namespace)::PreAllocSplitting::PerformPHIConstruction(llvm::ilist_iterator, llvm::MachineBasicBlock*, llvm::LiveInterval*, llvm::SmallPtrSet&, llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>&, llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>&, llvm::DenseMap, llvm::DenseMapInfo>&, llvm::DenseMap, llvm::DenseMapInfo>&, llvm::DenseMap, llvm::DenseMapInfo>&, bool, bool)" was returned + + + // {"_ZN12_GLOBAL__N_117PreAllocSplitting30PerformPHIConstructionFallBackEN4llvm14ilist_iteratorINS1_12MachineInstrEEEPNS1_17MachineBasicBlockEPNS1_12LiveIntervalERNS1_11SmallPtrSetIPS3_Lj4EEERNS1_8DenseMapIS6_NS9_ISA_Lj2EEENS1_12DenseMapInfoIS6_EENSF_ISE_EEEESJ_RNSD_ISA_PNS1_6VNInfoENSF_ISA_EENSF_ISL_EEEERNSD_IS6_SL_SG_SN_EESR_bb", + // "(anonymous namespace)::PreAllocSplitting::PerformPHIConstructionFallBack(llvm::ilist_iterator, llvm::MachineBasicBlock*, llvm::LiveInterval*, llvm::SmallPtrSet&, llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>&, llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>&, llvm::DenseMap, llvm::DenseMapInfo>&, llvm::DenseMap, llvm::DenseMapInfo>&, llvm::DenseMap, llvm::DenseMapInfo>&, bool, bool)"}, + // "(anonymous namespace)::PreAllocSplitting::PerformPHIConstructionFallBack(llvm::ilist_iterator, llvm::MachineBasicBlock*, llvm::LiveInterval*, llvm::SmallPtrSet&, llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>&, llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>&, llvm::DenseMap, llvm::DenseMapInfo>&, llvm::DenseMap, llvm::DenseMapInfo>&, llvm::DenseMap, llvm::DenseMapInfo>&, bool, bool)" was returned + + + // {"_ZN4llvm8DenseMapIPNS_6VNInfoENS_11SmallPtrSetIPNS_12MachineInstrELj4EEENS_12DenseMapInfoIS2_EENS7_IS6_EEE16FindAndConstructERKS2_", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::FindAndConstruct(llvm::VNInfo* const&)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::FindAndConstruct(llvm::VNInfo* const&)" was returned + + + // {"_ZN4llvm8DenseMapIPNS_6VNInfoENS_11SmallPtrSetIPNS_12MachineInstrELj4EEENS_12DenseMapInfoIS2_EENS7_IS6_EEE16InsertIntoBucketERKS2_RKS6_PSt4pairIS2_S6_E", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(llvm::VNInfo* const&, llvm::SmallPtrSet const&, std::pair>*)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(llvm::VNInfo* const&, llvm::SmallPtrSet const&, std::pair>*)" was returned + + + // {"_ZN4llvm8DenseMapIPNS_6VNInfoENS_11SmallPtrSetIPNS_12MachineInstrELj4EEENS_12DenseMapInfoIS2_EENS7_IS6_EEE4growEj", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)" was returned + + + // {"_ZSt6__findIPPN4llvm6VNInfoES2_ET_S4_S4_RKT0_St26random_access_iterator_tag", + // "llvm::VNInfo** std::__find(llvm::VNInfo**, llvm::VNInfo**, llvm::VNInfo* const&, std::random_access_iterator_tag)"}, + // got error + + {"_ZN4llvm8DenseMapIPNS_17MachineBasicBlockEPNS_6VNInfoENS_12DenseMapInfoIS2_EENS5_IS4_EEE16InsertIntoBucketERKS2_RKS4_PSt4pairIS2_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::MachineBasicBlock* const&, llvm::VNInfo* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_17MachineBasicBlockEPNS_6VNInfoENS_12DenseMapInfoIS2_EENS5_IS4_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPNS_12MachineInstrEPNS_6VNInfoENS_12DenseMapInfoIS2_EENS5_IS4_EEE16InsertIntoBucketERKS2_RKS4_PSt4pairIS2_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::MachineInstr* const&, llvm::VNInfo* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_12MachineInstrEPNS_6VNInfoENS_12DenseMapInfoIS2_EENS5_IS4_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + + // {"_ZN4llvm8DenseMapIPNS_17MachineBasicBlockENS_11SmallPtrSetIPNS_12MachineInstrELj2EEENS_12DenseMapInfoIS2_EENS7_IS6_EEE16FindAndConstructERKS2_", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::FindAndConstruct(llvm::MachineBasicBlock* const&)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::FindAndConstruct(llvm::MachineBasicBlock* const&)" was returned + + + // {"_ZN4llvm8DenseMapIPNS_17MachineBasicBlockENS_11SmallPtrSetIPNS_12MachineInstrELj2EEENS_12DenseMapInfoIS2_EENS7_IS6_EEE16InsertIntoBucketERKS2_RKS6_PSt4pairIS2_S6_E", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(llvm::MachineBasicBlock* const&, llvm::SmallPtrSet const&, std::pair>*)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(llvm::MachineBasicBlock* const&, llvm::SmallPtrSet const&, std::pair>*)" was returned + + + // {"_ZN4llvm8DenseMapIPNS_17MachineBasicBlockENS_11SmallPtrSetIPNS_12MachineInstrELj2EEENS_12DenseMapInfoIS2_EENS7_IS6_EEE4growEj", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)" was returned + + {"_ZNK4llvm8DenseMapINS_9SlotIndexES1_NS_12DenseMapInfoIS1_EES3_E15LookupBucketForERKS1_RPSt4pairIS1_S1_E", "llvm::DenseMap, llvm::DenseMapInfo>::LookupBucketFor(llvm::SlotIndex const&, std::pair*&) const"}, + {"_ZN4llvm8DenseMapINS_9SlotIndexES1_NS_12DenseMapInfoIS1_EES3_E16InsertIntoBucketERKS1_S6_PSt4pairIS1_S1_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::SlotIndex const&, llvm::SlotIndex const&, std::pair*)"}, + {"_ZN4llvm8DenseMapINS_9SlotIndexES1_NS_12DenseMapInfoIS1_EES3_E4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNK4llvm8DenseMapINS_9SlotIndexES1_NS_12DenseMapInfoIS1_EES3_E4findERKS1_", "llvm::DenseMap, llvm::DenseMapInfo>::find(llvm::SlotIndex const&) const"}, + {"_ZN4llvm8DenseMapINS_9SlotIndexES1_NS_12DenseMapInfoIS1_EES3_E5clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::clear()"}, + {"_ZN4llvm8DenseMapINS_9SlotIndexES1_NS_12DenseMapInfoIS1_EES3_E16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm8DenseMapIjiNS_12DenseMapInfoIjEENS1_IiEEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm33initializeProcessImplicitDefsPassERNS_12PassRegistryE", "llvm::initializeProcessImplicitDefsPass(llvm::PassRegistry&)"}, + {"_ZNK4llvm19ProcessImplicitDefs16getAnalysisUsageERNS_13AnalysisUsageE", "llvm::ProcessImplicitDefs::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + + // {"_ZN4llvm19ProcessImplicitDefs22CanTurnIntoImplicitDefEPNS_12MachineInstrEjjPKNS_15TargetInstrInfoERNS_8SmallSetIjLj8EEE", + // "llvm::ProcessImplicitDefs::CanTurnIntoImplicitDef(llvm::MachineInstr*, unsigned int, unsigned int, llvm::TargetInstrInfo const*, llvm::SmallSet&)"}, + // "llvm::ProcessImplicitDefs::CanTurnIntoImplicitDef(llvm::MachineInstr*, unsigned int, unsigned int, llvm::TargetInstrInfo const*, llvm::SmallSet&)" was returned + + {"_ZN4llvm19ProcessImplicitDefs20runOnMachineFunctionERNS_15MachineFunctionE", "llvm::ProcessImplicitDefs::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN4llvm19ProcessImplicitDefsD1Ev", "llvm::ProcessImplicitDefs::~ProcessImplicitDefs()"}, + {"_ZN4llvm19ProcessImplicitDefsD0Ev", "llvm::ProcessImplicitDefs::~ProcessImplicitDefs()"}, + {"_ZN4llvm15callDefaultCtorINS_19ProcessImplicitDefsEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor()"}, + {"_ZN4llvm17initializePEIPassERNS_12PassRegistryE", "llvm::initializePEIPass(llvm::PassRegistry&)"}, + {"_ZN4llvm30createPrologEpilogCodeInserterEv", "llvm::createPrologEpilogCodeInserter()"}, + {"_ZN4llvm3PEI20runOnMachineFunctionERNS_15MachineFunctionE", "llvm::PEI::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN4llvm3PEI25calculateCallsInformationERNS_15MachineFunctionE", "llvm::PEI::calculateCallsInformation(llvm::MachineFunction&)"}, + {"_ZN4llvm3PEI29calculateCalleeSavedRegistersERNS_15MachineFunctionE", "llvm::PEI::calculateCalleeSavedRegisters(llvm::MachineFunction&)"}, + {"_ZN4llvm3PEI26insertCSRSpillsAndRestoresERNS_15MachineFunctionE", "llvm::PEI::insertCSRSpillsAndRestores(llvm::MachineFunction&)"}, + {"_ZN4llvm3PEI27calculateFrameObjectOffsetsERNS_15MachineFunctionE", "llvm::PEI::calculateFrameObjectOffsets(llvm::MachineFunction&)"}, + {"_ZN4llvm3PEI22insertPrologEpilogCodeERNS_15MachineFunctionE", "llvm::PEI::insertPrologEpilogCode(llvm::MachineFunction&)"}, + {"_ZN4llvm3PEI19replaceFrameIndicesERNS_15MachineFunctionE", "llvm::PEI::replaceFrameIndices(llvm::MachineFunction&)"}, + {"_ZN4llvm3PEI24scavengeFrameVirtualRegsERNS_15MachineFunctionE", "llvm::PEI::scavengeFrameVirtualRegs(llvm::MachineFunction&)"}, + + // {"_ZN4llvm8SmallSetIiLj16EE6insertERKi", + // "llvm::SmallSet::insert(int const&)"}, + // "llvm::SmallSet::insert(int const&)" was returned + + {"_ZNSt6vectorIN4llvm15CalleeSavedInfoESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::CalleeSavedInfo const&)"}, + {"_ZNSt6vectorIN4llvm14ilist_iteratorINS0_12MachineInstrEEESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, llvm::ilist_iterator const&)"}, + {"_ZNSt6vectorIN4llvm15CalleeSavedInfoESaIS1_EEaSERKS3_", "std::vector>::operator=(std::vector> const&)"}, + {"_ZN4llvm3PEIC2Ev", "llvm::PEI::PEI()"}, + {"_ZNK4llvm3PEI11getPassNameEv", "llvm::PEI::getPassName() const"}, + {"_ZN4llvm15callDefaultCtorINS_3PEIEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor()"}, + {"_ZN4llvm17PseudoSourceValue8getStackEv", "llvm::PseudoSourceValue::getStack()"}, + {"_ZN4llvm17PseudoSourceValue6getGOTEv", "llvm::PseudoSourceValue::getGOT()"}, + {"_ZN4llvm17PseudoSourceValue12getJumpTableEv", "llvm::PseudoSourceValue::getJumpTable()"}, + {"_ZN4llvm17PseudoSourceValue15getConstantPoolEv", "llvm::PseudoSourceValue::getConstantPool()"}, + {"_ZN4llvm17PseudoSourceValueC1ENS_5Value7ValueTyE", "llvm::PseudoSourceValue::PseudoSourceValue(llvm::Value::ValueTy)"}, + {"_ZN4llvm17PseudoSourceValueC2ENS_5Value7ValueTyE", "llvm::PseudoSourceValue::PseudoSourceValue(llvm::Value::ValueTy)"}, + {"_ZNK4llvm17PseudoSourceValue11printCustomERNS_11raw_ostreamE", "llvm::PseudoSourceValue::printCustom(llvm::raw_ostream&) const"}, + {"_ZN4llvm17PseudoSourceValue13getFixedStackEi", "llvm::PseudoSourceValue::getFixedStack(int)"}, + {"_ZNK4llvm17PseudoSourceValue10isConstantEPKNS_16MachineFrameInfoE", "llvm::PseudoSourceValue::isConstant(llvm::MachineFrameInfo const*) const"}, + {"_ZNK4llvm17PseudoSourceValue9isAliasedEPKNS_16MachineFrameInfoE", "llvm::PseudoSourceValue::isAliased(llvm::MachineFrameInfo const*) const"}, + {"_ZNK4llvm17PseudoSourceValue8mayAliasEPKNS_16MachineFrameInfoE", "llvm::PseudoSourceValue::mayAlias(llvm::MachineFrameInfo const*) const"}, + {"_ZNK4llvm27FixedStackPseudoSourceValue10isConstantEPKNS_16MachineFrameInfoE", "llvm::FixedStackPseudoSourceValue::isConstant(llvm::MachineFrameInfo const*) const"}, + {"_ZNK4llvm27FixedStackPseudoSourceValue9isAliasedEPKNS_16MachineFrameInfoE", "llvm::FixedStackPseudoSourceValue::isAliased(llvm::MachineFrameInfo const*) const"}, + {"_ZNK4llvm27FixedStackPseudoSourceValue8mayAliasEPKNS_16MachineFrameInfoE", "llvm::FixedStackPseudoSourceValue::mayAlias(llvm::MachineFrameInfo const*) const"}, + {"_ZNK4llvm27FixedStackPseudoSourceValue11printCustomERNS_11raw_ostreamE", "llvm::FixedStackPseudoSourceValue::printCustom(llvm::raw_ostream&) const"}, + {"_ZN4llvm14object_creatorIN12_GLOBAL__N_112PSVGlobalsTyEEEPvv", "void* llvm::object_creator<(anonymous namespace)::PSVGlobalsTy>()"}, + {"_ZN4llvm14object_deleterIN12_GLOBAL__N_112PSVGlobalsTyEE4callEPv", "llvm::object_deleter<(anonymous namespace)::PSVGlobalsTy>::call(void*)"}, + {"_ZN4llvm17PseudoSourceValueD1Ev", "llvm::PseudoSourceValue::~PseudoSourceValue()"}, + {"_ZN4llvm17PseudoSourceValueD0Ev", "llvm::PseudoSourceValue::~PseudoSourceValue()"}, + {"_ZN4llvm27FixedStackPseudoSourceValueD1Ev", "llvm::FixedStackPseudoSourceValue::~FixedStackPseudoSourceValue()"}, + {"_ZN4llvm27FixedStackPseudoSourceValueD0Ev", "llvm::FixedStackPseudoSourceValue::~FixedStackPseudoSourceValue()"}, + {"_ZNSt8_Rb_treeIiSt4pairIKiPKN4llvm17PseudoSourceValueEESt10_Select1stIS6_ESt4lessIiESaIS6_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS6_ERKS6_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIiSt4pairIKiPKN4llvm17PseudoSourceValueEESt10_Select1stIS6_ESt4lessIiESaIS6_EE16_M_insert_uniqueERKS6_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZNSt8_Rb_treeIiSt4pairIKiPKN4llvm17PseudoSourceValueEESt10_Select1stIS6_ESt4lessIiESaIS6_EE8_M_eraseEPSt13_Rb_tree_nodeIS6_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZN4llvm27createFastRegisterAllocatorEv", "llvm::createFastRegisterAllocator()"}, + {"_ZN12_GLOBAL__N_16RAFastD1Ev", "(anonymous namespace)::RAFast::~RAFast()"}, + {"_ZN12_GLOBAL__N_16RAFastD0Ev", "(anonymous namespace)::RAFast::~RAFast()"}, + {"_ZNK12_GLOBAL__N_16RAFast11getPassNameEv", "(anonymous namespace)::RAFast::getPassName() const"}, + {"_ZNK12_GLOBAL__N_16RAFast16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::RAFast::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_16RAFast20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::RAFast::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN12_GLOBAL__N_16RAFast13definePhysRegEPN4llvm12MachineInstrEjNS0_8RegStateE", "(anonymous namespace)::RAFast::definePhysReg(llvm::MachineInstr*, unsigned int, (anonymous namespace)::RAFast::RegState)"}, + {"_ZN12_GLOBAL__N_16RAFast10setPhysRegEPN4llvm12MachineInstrEjj", "(anonymous namespace)::RAFast::setPhysReg(llvm::MachineInstr*, unsigned int, unsigned int)"}, + {"_ZN12_GLOBAL__N_16RAFast13reloadVirtRegEPN4llvm12MachineInstrEjjj", "(anonymous namespace)::RAFast::reloadVirtReg(llvm::MachineInstr*, unsigned int, unsigned int, unsigned int)"}, + {"_ZN12_GLOBAL__N_16RAFast8spillAllEPN4llvm12MachineInstrE", "(anonymous namespace)::RAFast::spillAll(llvm::MachineInstr*)"}, + {"_ZN12_GLOBAL__N_16RAFast13defineVirtRegEPN4llvm12MachineInstrEjjj", "(anonymous namespace)::RAFast::defineVirtReg(llvm::MachineInstr*, unsigned int, unsigned int, unsigned int)"}, + {"_ZN4llvm8DenseMapIjN12_GLOBAL__N_16RAFast7LiveRegENS_12DenseMapInfoIjEENS4_IS3_EEE6insertERKSt4pairIjS3_E", "llvm::DenseMap, llvm::DenseMapInfo<(anonymous namespace)::RAFast::LiveReg>>::insert(std::pair const&)"}, + {"_ZN12_GLOBAL__N_16RAFast12allocVirtRegEPN4llvm12MachineInstrERSt4pairIjNS0_7LiveRegEEj", "(anonymous namespace)::RAFast::allocVirtReg(llvm::MachineInstr*, std::pair&, unsigned int)"}, + {"_ZNK12_GLOBAL__N_16RAFast13calcSpillCostEj", "(anonymous namespace)::RAFast::calcSpillCost(unsigned int) const"}, + {"_ZN12_GLOBAL__N_16RAFast12spillVirtRegEN4llvm14ilist_iteratorINS1_12MachineInstrEEENS1_16DenseMapIteratorIjNS0_7LiveRegENS1_12DenseMapInfoIjEENS7_IS6_EELb0EEE", "(anonymous namespace)::RAFast::spillVirtReg(llvm::ilist_iterator, llvm::DenseMapIterator, llvm::DenseMapInfo<(anonymous namespace)::RAFast::LiveReg>, false>)"}, + {"_ZN4llvm33createLinearScanRegisterAllocatorEv", "llvm::createLinearScanRegisterAllocator()"}, + {"_ZN4llvm23initializeRALinScanPassERNS_12PassRegistryE", "llvm::initializeRALinScanPass(llvm::PassRegistry&)"}, + {"_ZN12_GLOBAL__N_19RALinScanC1Ev", "(anonymous namespace)::RALinScan::RALinScan()"}, + {"_ZN12_GLOBAL__N_19RALinScanD1Ev", "(anonymous namespace)::RALinScan::~RALinScan()"}, + {"_ZN12_GLOBAL__N_19RALinScanD0Ev", "(anonymous namespace)::RALinScan::~RALinScan()"}, + {"_ZNK12_GLOBAL__N_19RALinScan11getPassNameEv", "(anonymous namespace)::RALinScan::getPassName() const"}, + {"_ZNK12_GLOBAL__N_19RALinScan16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::RALinScan::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_19RALinScan20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::RALinScan::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN12_GLOBAL__N_19RALinScan30assignRegOrStackSlotAtIntervalEPN4llvm12LiveIntervalE", "(anonymous namespace)::RALinScan::assignRegOrStackSlotAtInterval(llvm::LiveInterval*)"}, + {"_ZN12_GLOBAL__N_19RALinScan14getFreePhysRegEPN4llvm12LiveIntervalE", "(anonymous namespace)::RALinScan::getFreePhysReg(llvm::LiveInterval*)"}, + {"_ZN12_GLOBAL__N_19RALinScan18updateSpillWeightsERSt6vectorIfSaIfEEjfPKN4llvm19TargetRegisterClassE", "(anonymous namespace)::RALinScan::updateSpillWeights(std::vector>&, unsigned int, float, llvm::TargetRegisterClass const*)"}, + + // {"_ZSt4sortIPPN4llvm12LiveIntervalEN12_GLOBAL__N_18LISorterEEvT_S6_T0_", + // "void std::sort(llvm::LiveInterval**, llvm::LiveInterval**, (anonymous namespace)::LISorter)"}, + // got error + + {"_Z17getConflictWeightPN4llvm12LiveIntervalEjPNS_13LiveIntervalsEPNS_19MachineRegisterInfoEPNS_15MachineLoopInfoE", "getConflictWeight(llvm::LiveInterval*, unsigned int, llvm::LiveIntervals*, llvm::MachineRegisterInfo*, llvm::MachineLoopInfo*)"}, + + // {"_ZSt16__introsort_loopIPPN4llvm12LiveIntervalElN12_GLOBAL__N_18LISorterEEvT_S6_T0_T1_", + // "void std::__introsort_loop(llvm::LiveInterval**, llvm::LiveInterval**, long, (anonymous namespace)::LISorter)"}, + // got error + + + // {"_ZSt16__insertion_sortIPPN4llvm12LiveIntervalEN12_GLOBAL__N_18LISorterEEvT_S6_T0_", + // "void std::__insertion_sort(llvm::LiveInterval**, llvm::LiveInterval**, (anonymous namespace)::LISorter)"}, + // got error + + + // {"_ZSt25__unguarded_linear_insertIPPN4llvm12LiveIntervalES2_N12_GLOBAL__N_18LISorterEEvT_T0_T1_", + // "void std::__unguarded_linear_insert(llvm::LiveInterval**, llvm::LiveInterval*, (anonymous namespace)::LISorter)"}, + // got error + + + // {"_ZSt13__adjust_heapIPPN4llvm12LiveIntervalElS2_N12_GLOBAL__N_18LISorterEEvT_T0_S7_T1_T2_", + // "void std::__adjust_heap(llvm::LiveInterval**, long, long, llvm::LiveInterval*, (anonymous namespace)::LISorter)"}, + // got error + + + // {"_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPSt4pairIjfESt6vectorIS3_SaIS3_EEEElN12_GLOBAL__N_113WeightCompareEEvT_SB_T0_T1_", + // "void std::__introsort_loop<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long, (anonymous namespace)::WeightCompare>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long, (anonymous namespace)::WeightCompare)"}, + // "void std::__introsort_loop<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long, (anonymous namespace)::WeightCompare>(unsigned int, unsigned int, float, std::pair*)" was returned + + + // {"_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIjfESt6vectorIS3_SaIS3_EEEEN12_GLOBAL__N_113WeightCompareEEvT_SB_T0_", + // "void std::__insertion_sort<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, (anonymous namespace)::WeightCompare>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, (anonymous namespace)::WeightCompare)"}, + // "void std::__insertion_sort<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, (anonymous namespace)::WeightCompare>(unsigned int, unsigned int, float)" was returned + + + // {"_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPSt4pairIjfESt6vectorIS3_SaIS3_EEEElS3_N12_GLOBAL__N_113WeightCompareEEvT_T0_SC_T1_T2_", + // "void std::__adjust_heap<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long, std::pair, (anonymous namespace)::WeightCompare>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long, long, std::pair, (anonymous namespace)::WeightCompare)"}, + // "void std::__adjust_heap<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long, std::pair, (anonymous namespace)::WeightCompare>(unsigned int, float, float, std::pair*, std::allocator>)" was returned + + + // {"_ZN12_GLOBAL__N_19RALinScan14getFreePhysRegEPN4llvm12LiveIntervalEPKNS1_19TargetRegisterClassEjRNS1_11SmallVectorIjLj256EEEb", + // "(anonymous namespace)::RALinScan::getFreePhysReg(llvm::LiveInterval*, llvm::TargetRegisterClass const*, unsigned int, llvm::SmallVector&, bool)"}, + // "(anonymous namespace)::RALinScan::getFreePhysReg(llvm::LiveInterval*, llvm::TargetRegisterClass const*, unsigned int, llvm::SmallVector&, bool)" was returned + + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_19RALinScanEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::RALinScan>()"}, + {"_ZN4llvm15SmallVectorImplIjE6resizeEjRKj", "llvm::SmallVectorImpl::resize(unsigned int, unsigned int const&)"}, + + // {"_ZNK4llvm11SlotIndexes14findLiveInMBBsENS_9SlotIndexES1_RNS_15SmallVectorImplIPNS_17MachineBasicBlockEEE", + // "llvm::SlotIndexes::findLiveInMBBs(llvm::SlotIndex, llvm::SlotIndex, llvm::SmallVectorImpl&) const"}, + // got error + + + // {"_ZNSt14priority_queueIPN4llvm12LiveIntervalENS0_11SmallVectorIS2_Lj64EEENS0_11greater_ptrIS1_EEE4pushERKS2_", + // "std::priority_queue, llvm::greater_ptr>::push(llvm::LiveInterval* const&)"}, + // "std::priority_queue, llvm::greater_ptr>::push(llvm::LiveInterval* const&)" was returned + + + // {"_ZSt6__findIPKjjET_S2_S2_RKT0_St26random_access_iterator_tag", + // "unsigned int const* std::__find(unsigned int const*, unsigned int const*, unsigned int const&, std::random_access_iterator_tag)"}, + // got error + + {"_ZN4llvm8DenseMapIjPKNS_19TargetRegisterClassENS_12DenseMapInfoIjEENS4_IS3_EEE16InsertIntoBucketERKjRKS3_PSt4pairIjS3_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(unsigned int const&, llvm::TargetRegisterClass const* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIjPKNS_19TargetRegisterClassENS_12DenseMapInfoIjEENS4_IS3_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNSt6vectorISt4pairIjfESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + {"_ZNK4llvm18EquivalenceClassesIPKNS_19TargetRegisterClassEE7ECValue9getLeaderEv", "llvm::EquivalenceClasses::ECValue::getLeader() const"}, + + // {"_ZSt13__adjust_heapIPPN4llvm12LiveIntervalElS2_NS0_11greater_ptrIS1_EEEvT_T0_S7_T1_T2_", + // "void std::__adjust_heap>(llvm::LiveInterval**, long, long, llvm::LiveInterval*, llvm::greater_ptr)"}, + // got error + + {"_ZN4llvm18EquivalenceClassesIPKNS_19TargetRegisterClassEE9unionSetsERKS3_S6_", "llvm::EquivalenceClasses::unionSets(llvm::TargetRegisterClass const* const&, llvm::TargetRegisterClass const* const&)"}, + {"_ZNSt8_Rb_treeIN4llvm18EquivalenceClassesIPKNS0_19TargetRegisterClassEE7ECValueES6_St9_IdentityIS6_ESt4lessIS6_ESaIS6_EE16_M_insert_uniqueERKS6_", "std::_Rb_tree::ECValue, llvm::EquivalenceClasses::ECValue, std::_Identity::ECValue>, std::less::ECValue>, std::allocator::ECValue>>::_M_insert_unique(llvm::EquivalenceClasses::ECValue const&)"}, + {"_ZNSt8_Rb_treeIN4llvm18EquivalenceClassesIPKNS0_19TargetRegisterClassEE7ECValueES6_St9_IdentityIS6_ESt4lessIS6_ESaIS6_EE8_M_eraseEPSt13_Rb_tree_nodeIS6_E", "std::_Rb_tree::ECValue, llvm::EquivalenceClasses::ECValue, std::_Identity::ECValue>, std::less::ECValue>, std::allocator::ECValue>>::_M_erase(std::_Rb_tree_node::ECValue>*)"}, + + // {"_ZNSt14priority_queueIPN4llvm12LiveIntervalENS0_11SmallVectorIS2_Lj64EEENS0_11greater_ptrIS1_EEEC2ERKS6_RKS4_", + // "std::priority_queue, llvm::greater_ptr>::priority_queue(llvm::greater_ptr const&, llvm::SmallVector const&)"}, + // "std::priority_queue, llvm::greater_ptr>::priority_queue(llvm::greater_ptr const&, llvm::SmallVector const&)" was returned + + {"_ZN4llvm40initializeRegisterCoalescerAnalysisGroupERNS_12PassRegistryE", "llvm::initializeRegisterCoalescerAnalysisGroup(llvm::PassRegistry&)"}, + {"_ZN4llvm17RegisterCoalescerD0Ev", "llvm::RegisterCoalescer::~RegisterCoalescer()"}, + {"_ZN4llvm17RegisterCoalescerD1Ev", "llvm::RegisterCoalescer::~RegisterCoalescer()"}, + {"_ZN4llvm17RegisterCoalescerD2Ev", "llvm::RegisterCoalescer::~RegisterCoalescer()"}, + {"_ZNK4llvm13CoalescerPair7composeEjj", "llvm::CoalescerPair::compose(unsigned int, unsigned int) const"}, + {"_ZNK4llvm13CoalescerPair11isMoveInstrEPKNS_12MachineInstrERjS4_S4_S4_", "llvm::CoalescerPair::isMoveInstr(llvm::MachineInstr const*, unsigned int&, unsigned int&, unsigned int&, unsigned int&) const"}, + {"_ZN4llvm13CoalescerPair12setRegistersEPKNS_12MachineInstrE", "llvm::CoalescerPair::setRegisters(llvm::MachineInstr const*)"}, + {"_ZN4llvm13CoalescerPair4flipEv", "llvm::CoalescerPair::flip()"}, + {"_ZNK4llvm13CoalescerPair13isCoalescableEPKNS_12MachineInstrE", "llvm::CoalescerPair::isCoalescable(llvm::MachineInstr const*) const"}, + {"_ZN4llvm12RegScavenger7setUsedEj", "llvm::RegScavenger::setUsed(unsigned int)"}, + {"_ZNK4llvm12RegScavenger11isAliasUsedEj", "llvm::RegScavenger::isAliasUsed(unsigned int) const"}, + {"_ZN4llvm12RegScavenger12initRegStateEv", "llvm::RegScavenger::initRegState()"}, + {"_ZN4llvm12RegScavenger15enterBasicBlockEPNS_17MachineBasicBlockE", "llvm::RegScavenger::enterBasicBlock(llvm::MachineBasicBlock*)"}, + {"_ZN4llvm12RegScavenger17addRegWithSubRegsERNS_9BitVectorEj", "llvm::RegScavenger::addRegWithSubRegs(llvm::BitVector&, unsigned int)"}, + {"_ZN4llvm12RegScavenger17addRegWithAliasesERNS_9BitVectorEj", "llvm::RegScavenger::addRegWithAliases(llvm::BitVector&, unsigned int)"}, + {"_ZN4llvm12RegScavenger7forwardEv", "llvm::RegScavenger::forward()"}, + {"_ZN4llvm12RegScavenger11getRegsUsedERNS_9BitVectorEb", "llvm::RegScavenger::getRegsUsed(llvm::BitVector&, bool)"}, + {"_ZNK4llvm12RegScavenger13FindUnusedRegEPKNS_19TargetRegisterClassE", "llvm::RegScavenger::FindUnusedReg(llvm::TargetRegisterClass const*) const"}, + {"_ZN4llvm12RegScavenger16getRegsAvailableEPKNS_19TargetRegisterClassERNS_9BitVectorE", "llvm::RegScavenger::getRegsAvailable(llvm::TargetRegisterClass const*, llvm::BitVector&)"}, + {"_ZN4llvm12RegScavenger15findSurvivorRegENS_14ilist_iteratorINS_12MachineInstrEEERNS_9BitVectorEjRS3_", "llvm::RegScavenger::findSurvivorReg(llvm::ilist_iterator, llvm::BitVector&, unsigned int, llvm::ilist_iterator&)"}, + {"_ZN4llvm12RegScavenger16scavengeRegisterEPKNS_19TargetRegisterClassENS_14ilist_iteratorINS_12MachineInstrEEEi", "llvm::RegScavenger::scavengeRegister(llvm::TargetRegisterClass const*, llvm::ilist_iterator, int)"}, + {"_ZN4llvm9BitVectoraSERKS0_", "llvm::BitVector::operator=(llvm::BitVector const&)"}, + {"_ZN4llvm12RegScavenger7setUsedERNS_9BitVectorE", "llvm::RegScavenger::setUsed(llvm::BitVector&)"}, + {"_ZNK4llvm9BitVectorcoEv", "llvm::BitVector::operator~() const"}, + {"_ZN4llvm11ScheduleDAGC1ERNS_15MachineFunctionE", "llvm::ScheduleDAG::ScheduleDAG(llvm::MachineFunction&)"}, + {"_ZN4llvm11ScheduleDAGC2ERNS_15MachineFunctionE", "llvm::ScheduleDAG::ScheduleDAG(llvm::MachineFunction&)"}, + {"_ZN4llvm11ScheduleDAGD0Ev", "llvm::ScheduleDAG::~ScheduleDAG()"}, + {"_ZN4llvm11ScheduleDAGD1Ev", "llvm::ScheduleDAG::~ScheduleDAG()"}, + {"_ZN4llvm11ScheduleDAGD2Ev", "llvm::ScheduleDAG::~ScheduleDAG()"}, + {"_ZNK4llvm11ScheduleDAG11getNodeDescEPKNS_6SDNodeE", "llvm::ScheduleDAG::getNodeDesc(llvm::SDNode const*) const"}, + {"_ZNK4llvm11ScheduleDAG12dumpScheduleEv", "llvm::ScheduleDAG::dumpSchedule() const"}, + {"_ZNK4llvm5SUnit4dumpEPKNS_11ScheduleDAGE", "llvm::SUnit::dump(llvm::ScheduleDAG const*) const"}, + {"_ZN4llvm11ScheduleDAG3RunEPNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEE", "llvm::ScheduleDAG::Run(llvm::MachineBasicBlock*, llvm::ilist_iterator)"}, + {"_ZN4llvm5SUnit7addPredERKNS_4SDepE", "llvm::SUnit::addPred(llvm::SDep const&)"}, + {"_ZN4llvm5SUnit13setDepthDirtyEv", "llvm::SUnit::setDepthDirty()"}, + {"_ZN4llvm5SUnit14setHeightDirtyEv", "llvm::SUnit::setHeightDirty()"}, + {"_ZN4llvm5SUnit10removePredERKNS_4SDepE", "llvm::SUnit::removePred(llvm::SDep const&)"}, + {"_ZN4llvm5SUnit17setDepthToAtLeastEj", "llvm::SUnit::setDepthToAtLeast(unsigned int)"}, + {"_ZN4llvm5SUnit18setHeightToAtLeastEj", "llvm::SUnit::setHeightToAtLeast(unsigned int)"}, + {"_ZN4llvm5SUnit12ComputeDepthEv", "llvm::SUnit::ComputeDepth()"}, + {"_ZN4llvm5SUnit13ComputeHeightEv", "llvm::SUnit::ComputeHeight()"}, + {"_ZNK4llvm5SUnit7dumpAllEPKNS_11ScheduleDAGE", "llvm::SUnit::dumpAll(llvm::ScheduleDAG const*) const"}, + {"_ZN4llvm26ScheduleDAGTopologicalSort25InitDAGTopologicalSortingEv", "llvm::ScheduleDAGTopologicalSort::InitDAGTopologicalSorting()"}, + {"_ZN4llvm26ScheduleDAGTopologicalSort8AllocateEii", "llvm::ScheduleDAGTopologicalSort::Allocate(int, int)"}, + {"_ZN4llvm26ScheduleDAGTopologicalSort7AddPredEPNS_5SUnitES2_", "llvm::ScheduleDAGTopologicalSort::AddPred(llvm::SUnit*, llvm::SUnit*)"}, + {"_ZN4llvm26ScheduleDAGTopologicalSort3DFSEPKNS_5SUnitEiRb", "llvm::ScheduleDAGTopologicalSort::DFS(llvm::SUnit const*, int, bool&)"}, + {"_ZN4llvm26ScheduleDAGTopologicalSort5ShiftERNS_9BitVectorEii", "llvm::ScheduleDAGTopologicalSort::Shift(llvm::BitVector&, int, int)"}, + {"_ZN4llvm26ScheduleDAGTopologicalSort10RemovePredEPNS_5SUnitES2_", "llvm::ScheduleDAGTopologicalSort::RemovePred(llvm::SUnit*, llvm::SUnit*)"}, + {"_ZN4llvm26ScheduleDAGTopologicalSort15WillCreateCycleEPNS_5SUnitES2_", "llvm::ScheduleDAGTopologicalSort::WillCreateCycle(llvm::SUnit*, llvm::SUnit*)"}, + {"_ZN4llvm26ScheduleDAGTopologicalSort11IsReachableEPKNS_5SUnitES3_", "llvm::ScheduleDAGTopologicalSort::IsReachable(llvm::SUnit const*, llvm::SUnit const*)"}, + {"_ZN4llvm26ScheduleDAGTopologicalSortC1ERSt6vectorINS_5SUnitESaIS2_EE", "llvm::ScheduleDAGTopologicalSort::ScheduleDAGTopologicalSort(std::vector>&)"}, + {"_ZN4llvm26ScheduleDAGTopologicalSortC2ERSt6vectorINS_5SUnitESaIS2_EE", "llvm::ScheduleDAGTopologicalSort::ScheduleDAGTopologicalSort(std::vector>&)"}, + {"_ZN4llvm24ScheduleHazardRecognizerD0Ev", "llvm::ScheduleHazardRecognizer::~ScheduleHazardRecognizer()"}, + {"_ZN4llvm24ScheduleHazardRecognizerD1Ev", "llvm::ScheduleHazardRecognizer::~ScheduleHazardRecognizer()"}, + {"_ZN4llvm24ScheduleHazardRecognizerD2Ev", "llvm::ScheduleHazardRecognizer::~ScheduleHazardRecognizer()"}, + {"_ZNK4llvm11ScheduleDAG21ComputeOperandLatencyEPNS_5SUnitES2_RNS_4SDepE", "llvm::ScheduleDAG::ComputeOperandLatency(llvm::SUnit*, llvm::SUnit*, llvm::SDep&) const"}, + {"_ZNSt6vectorIPKN4llvm5SUnitESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::SUnit const* const&)"}, + {"_ZNSt6vectorIiSaIiEE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPiS1_EEmRKi", "std::vector>::_M_fill_insert(__gnu_cxx::__normal_iterator>>, unsigned long, int const&)"}, + {"_ZNSt6vectorIN4llvm5SUnitESaIS1_EED2Ev", "std::vector>::~vector()"}, + {"_ZN4llvm11ScheduleDAG8EmitNoopEv", "llvm::ScheduleDAG::EmitNoop()"}, + {"_ZN4llvm11ScheduleDAG15EmitPhysRegCopyEPNS_5SUnitERNS_8DenseMapIS2_jNS_12DenseMapInfoIS2_EENS4_IjEEEE", "llvm::ScheduleDAG::EmitPhysRegCopy(llvm::SUnit*, llvm::DenseMap, llvm::DenseMapInfo>&)"}, + {"_ZN4llvm8DenseMapIPNS_5SUnitEjNS_12DenseMapInfoIS2_EENS3_IjEEE6insertERKSt4pairIS2_jE", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPNS_5SUnitEjNS_12DenseMapInfoIS2_EENS3_IjEEE16InsertIntoBucketERKS2_RKjPSt4pairIS2_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::SUnit* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_5SUnitEjNS_12DenseMapInfoIS2_EENS3_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm17ScheduleDAGInstrsC1ERNS_15MachineFunctionERKNS_15MachineLoopInfoERKNS_20MachineDominatorTreeE", "llvm::ScheduleDAGInstrs::ScheduleDAGInstrs(llvm::MachineFunction&, llvm::MachineLoopInfo const&, llvm::MachineDominatorTree const&)"}, + {"_ZN4llvm17ScheduleDAGInstrsC2ERNS_15MachineFunctionERKNS_15MachineLoopInfoERKNS_20MachineDominatorTreeE", "llvm::ScheduleDAGInstrs::ScheduleDAGInstrs(llvm::MachineFunction&, llvm::MachineLoopInfo const&, llvm::MachineDominatorTree const&)"}, + {"_ZN4llvm17ScheduleDAGInstrs3RunEPNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEES5_j", "llvm::ScheduleDAGInstrs::Run(llvm::MachineBasicBlock*, llvm::ilist_iterator, llvm::ilist_iterator, unsigned int)"}, + {"_ZN4llvm17ScheduleDAGInstrs10StartBlockEPNS_17MachineBasicBlockE", "llvm::ScheduleDAGInstrs::StartBlock(llvm::MachineBasicBlock*)"}, + {"_ZN4llvm17ScheduleDAGInstrs19AddSchedBarrierDepsEv", "llvm::ScheduleDAGInstrs::AddSchedBarrierDeps()"}, + {"_ZN4llvm17ScheduleDAGInstrs15BuildSchedGraphEPNS_13AliasAnalysisE", "llvm::ScheduleDAGInstrs::BuildSchedGraph(llvm::AliasAnalysis*)"}, + {"_Z27getUnderlyingObjectForInstrPKN4llvm12MachineInstrEPKNS_16MachineFrameInfoERb", "getUnderlyingObjectForInstr(llvm::MachineInstr const*, llvm::MachineFrameInfo const*, bool&)"}, + {"_ZN4llvm17ScheduleDAGInstrs11FinishBlockEv", "llvm::ScheduleDAGInstrs::FinishBlock()"}, + {"_ZN4llvm17ScheduleDAGInstrs14ComputeLatencyEPNS_5SUnitE", "llvm::ScheduleDAGInstrs::ComputeLatency(llvm::SUnit*)"}, + {"_ZNK4llvm17ScheduleDAGInstrs21ComputeOperandLatencyEPNS_5SUnitES2_RNS_4SDepE", "llvm::ScheduleDAGInstrs::ComputeOperandLatency(llvm::SUnit*, llvm::SUnit*, llvm::SDep&) const"}, + {"_ZNK4llvm17ScheduleDAGInstrs8dumpNodeEPKNS_5SUnitE", "llvm::ScheduleDAGInstrs::dumpNode(llvm::SUnit const*) const"}, + {"_ZNK4llvm17ScheduleDAGInstrs17getGraphNodeLabelEPKNS_5SUnitE", "llvm::ScheduleDAGInstrs::getGraphNodeLabel(llvm::SUnit const*) const"}, + {"_ZN4llvm17ScheduleDAGInstrs12EmitScheduleEv", "llvm::ScheduleDAGInstrs::EmitSchedule()"}, + {"_ZN4llvm16LoopDependencies9VisitLoopEPKNS_11MachineLoopE", "llvm::LoopDependencies::VisitLoop(llvm::MachineLoop const*)"}, + {"_ZNSt6vectorIN4llvm5SUnitESaIS1_EE7reserveEm", "std::vector>::reserve(unsigned long)"}, + {"_ZN4llvm17ScheduleDAGInstrs8NewSUnitEPNS_12MachineInstrE", "llvm::ScheduleDAGInstrs::NewSUnit(llvm::MachineInstr*)"}, + {"_ZNSt8_Rb_treeIPKN4llvm5ValueESt4pairIKS3_St6vectorIPNS0_5SUnitESaIS8_EEESt10_Select1stISB_ESt4lessIS3_ESaISB_EE16_M_insert_uniqueESt17_Rb_tree_iteratorISB_ERKSB_", "std::_Rb_tree>>, std::_Select1st>>>, std::less, std::allocator>>>>::_M_insert_unique(std::_Rb_tree_iterator>>>, std::pair>> const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm5ValueESt4pairIKS3_St6vectorIPNS0_5SUnitESaIS8_EEESt10_Select1stISB_ESt4lessIS3_ESaISB_EE16_M_insert_uniqueERKSB_", "std::_Rb_tree>>, std::_Select1st>>>, std::less, std::allocator>>>>::_M_insert_unique(std::pair>> const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm5ValueESt4pairIKS3_St6vectorIPNS0_5SUnitESaIS8_EEESt10_Select1stISB_ESt4lessIS3_ESaISB_EE14_M_create_nodeERKSB_", "std::_Rb_tree>>, std::_Select1st>>>, std::less, std::allocator>>>>::_M_create_node(std::pair>> const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm5ValueESt4pairIKS3_PNS0_5SUnitEESt10_Select1stIS8_ESt4lessIS3_ESaIS8_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS8_ERKS8_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm5ValueESt4pairIKS3_PNS0_5SUnitEESt10_Select1stIS8_ESt4lessIS3_ESaIS8_EE16_M_insert_uniqueERKS8_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm5ValueESt4pairIKS3_St6vectorIPNS0_5SUnitESaIS8_EEESt10_Select1stISB_ESt4lessIS3_ESaISB_EE8_M_eraseEPSt13_Rb_tree_nodeISB_E", "std::_Rb_tree>>, std::_Select1st>>>, std::less, std::allocator>>>>::_M_erase(std::_Rb_tree_node>>>*)"}, + {"_ZNSt8_Rb_treeIPKN4llvm5ValueESt4pairIKS3_PNS0_5SUnitEESt10_Select1stIS8_ESt4lessIS3_ESaIS8_EE8_M_eraseEPSt13_Rb_tree_nodeIS8_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZN4llvm5SUnitC2ERKS0_", "llvm::SUnit::SUnit(llvm::SUnit const&)"}, + + // {"_ZSt26__uninitialized_fill_n_auxIPSt6vectorIPN4llvm5SUnitESaIS3_EEmS5_EvT_T0_RKT1_St12__false_type", + // "void std::__uninitialized_fill_n_aux>*, unsigned long, std::vector>>(std::vector>*, unsigned long, std::vector> const&, std::__false_type)"}, + // "void std::__uninitialized_fill_n_aux>*, unsigned long, std::vector>>(llvm::SUnit*, std::allocator, std::vector>* const&, std::__false_type)" was returned + + {"_ZNSt6vectorIN4llvm5SUnitESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::SUnit const&)"}, + {"_ZN4llvm5SUnitaSERKS0_", "llvm::SUnit::operator=(llvm::SUnit const&)"}, + + // {"_ZN4llvm16LoopDependencies11VisitRegionEPKNS_15DomTreeNodeBaseINS_17MachineBasicBlockEEEPKS2_PKNS_11MachineLoopERKNS_8SmallSetIjLj8EEE", + // "llvm::LoopDependencies::VisitRegion(llvm::DomTreeNodeBase const*, llvm::MachineBasicBlock const*, llvm::MachineLoop const*, llvm::SmallSet const&)"}, + // "llvm::LoopDependencies::VisitRegion(llvm::DomTreeNodeBase const*, llvm::MachineBasicBlock const*, llvm::MachineLoop const*, llvm::SmallSet const&)" was returned + + {"_ZNSt8_Rb_treeIjSt4pairIKjS0_IPKN4llvm14MachineOperandEjEESt10_Select1stIS7_ESt4lessIjESaIS7_EE16_M_insert_uniqueERKS7_", "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_insert_unique(std::pair> const&)"}, + {"_ZN4llvm26ScoreboardHazardRecognizerC1EPKNS_18InstrItineraryDataEPKNS_11ScheduleDAGEPKc", "llvm::ScoreboardHazardRecognizer::ScoreboardHazardRecognizer(llvm::InstrItineraryData const*, llvm::ScheduleDAG const*, char const*)"}, + {"_ZN4llvm26ScoreboardHazardRecognizerC2EPKNS_18InstrItineraryDataEPKNS_11ScheduleDAGEPKc", "llvm::ScoreboardHazardRecognizer::ScoreboardHazardRecognizer(llvm::InstrItineraryData const*, llvm::ScheduleDAG const*, char const*)"}, + {"_ZN4llvm26ScoreboardHazardRecognizer5ResetEv", "llvm::ScoreboardHazardRecognizer::Reset()"}, + {"_ZNK4llvm26ScoreboardHazardRecognizer10Scoreboard4dumpEv", "llvm::ScoreboardHazardRecognizer::Scoreboard::dump() const"}, + {"_ZNK4llvm26ScoreboardHazardRecognizer12atIssueLimitEv", "llvm::ScoreboardHazardRecognizer::atIssueLimit() const"}, + {"_ZN4llvm26ScoreboardHazardRecognizer13getHazardTypeEPNS_5SUnitEi", "llvm::ScoreboardHazardRecognizer::getHazardType(llvm::SUnit*, int)"}, + {"_ZN4llvm26ScoreboardHazardRecognizer15EmitInstructionEPNS_5SUnitE", "llvm::ScoreboardHazardRecognizer::EmitInstruction(llvm::SUnit*)"}, + {"_ZN4llvm26ScoreboardHazardRecognizer12AdvanceCycleEv", "llvm::ScoreboardHazardRecognizer::AdvanceCycle()"}, + {"_ZN4llvm26ScoreboardHazardRecognizer11RecedeCycleEv", "llvm::ScoreboardHazardRecognizer::RecedeCycle()"}, + {"_ZN4llvm26ScoreboardHazardRecognizerD1Ev", "llvm::ScoreboardHazardRecognizer::~ScoreboardHazardRecognizer()"}, + {"_ZN4llvm26ScoreboardHazardRecognizerD0Ev", "llvm::ScoreboardHazardRecognizer::~ScoreboardHazardRecognizer()"}, + {"_ZNK4llvm3PEI16getAnalysisUsageERNS_13AnalysisUsageE", "llvm::PEI::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN4llvm3PEI24getTopLevelLoopPreheaderEPNS_11MachineLoopE", "llvm::PEI::getTopLevelLoopPreheader(llvm::MachineLoop*)"}, + {"_ZN4llvm3PEI21getTopLevelLoopParentEPNS_11MachineLoopE", "llvm::PEI::getTopLevelLoopParent(llvm::MachineLoop*)"}, + {"_ZN4llvm3PEI13isReturnBlockEPNS_17MachineBasicBlockE", "llvm::PEI::isReturnBlock(llvm::MachineBasicBlock*)"}, + {"_ZN4llvm3PEI19clearAnticAvailSetsEv", "llvm::PEI::clearAnticAvailSets()"}, + {"_ZN4llvm3PEI12clearAllSetsEv", "llvm::PEI::clearAllSets()"}, + {"_ZN4llvm3PEI22initShrinkWrappingInfoEv", "llvm::PEI::initShrinkWrappingInfo()"}, + {"_ZN4llvm3PEI25placeCSRSpillsAndRestoresERNS_15MachineFunctionE", "llvm::PEI::placeCSRSpillsAndRestores(llvm::MachineFunction&)"}, + {"_ZN4llvm3PEI13calculateSetsERNS_15MachineFunctionE", "llvm::PEI::calculateSets(llvm::MachineFunction&)"}, + {"_ZN4llvm3PEI22placeSpillsAndRestoresERNS_15MachineFunctionE", "llvm::PEI::placeSpillsAndRestores(llvm::MachineFunction&)"}, + {"_ZN4llvm3PEI14calcAnticInOutEPNS_17MachineBasicBlockE", "llvm::PEI::calcAnticInOut(llvm::MachineBasicBlock*)"}, + {"_ZN4llvm3PEI14calcAvailInOutEPNS_17MachineBasicBlockE", "llvm::PEI::calcAvailInOut(llvm::MachineBasicBlock*)"}, + {"_ZN4llvm3PEI19calculateAnticAvailERNS_15MachineFunctionE", "llvm::PEI::calculateAnticAvail(llvm::MachineFunction&)"}, + {"_ZN4llvm3PEI23propagateUsesAroundLoopEPNS_17MachineBasicBlockEPNS_11MachineLoopE", "llvm::PEI::propagateUsesAroundLoop(llvm::MachineBasicBlock*, llvm::MachineLoop*)"}, + + // {"_ZN4llvm3PEI20addUsesForMEMERegionEPNS_17MachineBasicBlockERNS_11SmallVectorIS2_Lj4EEE", + // "llvm::PEI::addUsesForMEMERegion(llvm::MachineBasicBlock*, llvm::SmallVector&)"}, + // "llvm::PEI::addUsesForMEMERegion(llvm::MachineBasicBlock*, llvm::SmallVector&)" was returned + + + // {"_ZN4llvm3PEI23addUsesForTopLevelLoopsERNS_11SmallVectorIPNS_17MachineBasicBlockELj4EEE", + // "llvm::PEI::addUsesForTopLevelLoops(llvm::SmallVector&)"}, + // "llvm::PEI::addUsesForTopLevelLoops(llvm::SmallVector&)" was returned + + + // {"_ZN4llvm3PEI19calcSpillPlacementsEPNS_17MachineBasicBlockERNS_11SmallVectorIS2_Lj4EEERNS_8DenseMapIS2_NS_15SparseBitVectorILj128EEENS_12DenseMapInfoIS2_EENS9_IS8_EEEE", + // "llvm::PEI::calcSpillPlacements(llvm::MachineBasicBlock*, llvm::SmallVector&, llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>&)"}, + // "llvm::PEI::calcSpillPlacements(llvm::MachineBasicBlock*, llvm::SmallVector&, llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>&)" was returned + + + // {"_ZN4llvm3PEI21calcRestorePlacementsEPNS_17MachineBasicBlockERNS_11SmallVectorIS2_Lj4EEERNS_8DenseMapIS2_NS_15SparseBitVectorILj128EEENS_12DenseMapInfoIS2_EENS9_IS8_EEEE", + // "llvm::PEI::calcRestorePlacements(llvm::MachineBasicBlock*, llvm::SmallVector&, llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>&)"}, + // "llvm::PEI::calcRestorePlacements(llvm::MachineBasicBlock*, llvm::SmallVector&, llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>&)" was returned + + {"_ZN4llvm2cl3optI20ShrinkWrapDebugLevelLb0ENS0_6parserIS2_EEED1Ev", "llvm::cl::opt>::~opt()"}, + + // {"_ZN4llvm8DenseMapIPNS_17MachineBasicBlockENS_15SparseBitVectorILj128EEENS_12DenseMapInfoIS2_EENS5_IS4_EEE5clearEv", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::clear()"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::clear()" was returned + + + // {"_ZN4llvm15SparseBitVectorILj128EEaNERKS1_", + // "llvm::SparseBitVector<128u>::operator&=(llvm::SparseBitVector<128u> const&)"}, + // "llvm::SparseBitVector<128>::operator&=(llvm::SparseBitVector<128> const&)" was returned + + + // {"_ZN4llvm15SparseBitVectorILj128EEoRERKS1_", + // "llvm::SparseBitVector<128u>::operator|=(llvm::SparseBitVector<128u> const&)"}, + // "llvm::SparseBitVector<128>::operator|=(llvm::SparseBitVector<128> const&)" was returned + + + // {"_ZNK4llvm15SparseBitVectorILj128EEeqERKS1_", + // "llvm::SparseBitVector<128u>::operator==(llvm::SparseBitVector<128u> const&) const"}, + // "llvm::SparseBitVector<128>::operator==(llvm::SparseBitVector<128> const&) const" was returned + + + // {"_ZNK4llvm15SparseBitVectorILj128EE10intersectsERKS1_", + // "llvm::SparseBitVector<128u>::intersects(llvm::SparseBitVector<128u> const&) const"}, + // "llvm::SparseBitVector<128>::intersects(llvm::SparseBitVector<128> const&) const" was returned + + + // {"_ZNK4llvm15SparseBitVectorILj128EE5countEv", + // "llvm::SparseBitVector<128u>::count() const"}, + // "llvm::SparseBitVector<128>::count() const" was returned + + {"_ZN4llvm3PEID1Ev", "llvm::PEI::~PEI()"}, + {"_ZN4llvm3PEID0Ev", "llvm::PEI::~PEI()"}, + {"_ZN4llvm15SmallVectorImplIPNS_17MachineBasicBlockEEaSERKS3_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + + // {"_ZN4llvm15SparseBitVectorILj128EE23intersectWithComplementERKS1_S3_", + // "llvm::SparseBitVector<128u>::intersectWithComplement(llvm::SparseBitVector<128u> const&, llvm::SparseBitVector<128u> const&)"}, + // "llvm::SparseBitVector<128>::intersectWithComplement(llvm::SparseBitVector<128> const&, llvm::SparseBitVector<128> const&)" was returned + + {"_ZNSt6vectorIN4llvm15CalleeSavedInfoESaIS1_EEC2ERKS3_", "std::vector>::vector(std::vector> const&)"}, + + // {"_ZN4llvm8DenseMapIPNS_17MachineBasicBlockENS_15SparseBitVectorILj128EEENS_12DenseMapInfoIS2_EENS5_IS4_EEE16FindAndConstructERKS2_", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::FindAndConstruct(llvm::MachineBasicBlock* const&)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::FindAndConstruct(llvm::MachineBasicBlock* const&)" was returned + + + // {"_ZN4llvm8DenseMapIPNS_17MachineBasicBlockENS_15SparseBitVectorILj128EEENS_12DenseMapInfoIS2_EENS5_IS4_EEE16InsertIntoBucketERKS2_RKS4_PSt4pairIS2_S4_E", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(llvm::MachineBasicBlock* const&, llvm::SparseBitVector<128u> const&, std::pair>*)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(llvm::MachineBasicBlock* const&, llvm::SparseBitVector<128> const&, std::pair>*)" was returned + + + // {"_ZN4llvm8DenseMapIPNS_17MachineBasicBlockENS_15SparseBitVectorILj128EEENS_12DenseMapInfoIS2_EENS5_IS4_EEE4growEj", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)" was returned + + + // {"_ZN4llvm8DenseMapIPNS_17MachineBasicBlockENS_15SparseBitVectorILj128EEENS_12DenseMapInfoIS2_EENS5_IS4_EEE16shrink_and_clearEv", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::shrink_and_clear()"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::shrink_and_clear()" was returned + + {"_ZN4llvm2cl3optI20ShrinkWrapDebugLevelLb0ENS0_6parserIS2_EEE16handleOccurrenceEjNS_9StringRefES6_", "llvm::cl::opt>::handleOccurrence(unsigned int, llvm::StringRef, llvm::StringRef)"}, + {"_ZNK4llvm2cl3optI20ShrinkWrapDebugLevelLb0ENS0_6parserIS2_EEE27getValueExpectedFlagDefaultEv", "llvm::cl::opt>::getValueExpectedFlagDefault() const"}, + {"_ZNK4llvm2cl3optI20ShrinkWrapDebugLevelLb0ENS0_6parserIS2_EEE14getOptionWidthEv", "llvm::cl::opt>::getOptionWidth() const"}, + {"_ZNK4llvm2cl3optI20ShrinkWrapDebugLevelLb0ENS0_6parserIS2_EEE15printOptionInfoEm", "llvm::cl::opt>::printOptionInfo(unsigned long) const"}, + {"_ZN4llvm2cl3optI20ShrinkWrapDebugLevelLb0ENS0_6parserIS2_EEE19getExtraOptionNamesERNS_15SmallVectorImplIPKcEE", "llvm::cl::opt>::getExtraOptionNames(llvm::SmallVectorImpl&)"}, + {"_ZN4llvm2cl3optI20ShrinkWrapDebugLevelLb0ENS0_6parserIS2_EEED0Ev", "llvm::cl::opt>::~opt()"}, + {"_ZN4llvm2cl6parserI20ShrinkWrapDebugLevelE5parseERNS0_6OptionENS_9StringRefES6_RS2_", "llvm::cl::parser::parse(llvm::cl::Option&, llvm::StringRef, llvm::StringRef, ShrinkWrapDebugLevel&)"}, + + // {"_ZNK4llvm2cl11ValuesClassIiE5applyINS0_3optI20ShrinkWrapDebugLevelLb0ENS0_6parserIS5_EEEEEEvRT_", + // "void llvm::cl::ValuesClass::apply>>(llvm::cl::opt>&) const"}, + // "void llvm::cl::ValuesClass::apply>>(int&) const" was returned + + {"_ZN4llvm23SmallVectorTemplateBaseINS_2cl6parserI20ShrinkWrapDebugLevelE10OptionInfoELb0EE4growEm", "llvm::SmallVectorTemplateBase::OptionInfo, false>::grow(unsigned long)"}, + {"_ZN4llvm2cl6parserI20ShrinkWrapDebugLevelED1Ev", "llvm::cl::parser::~parser()"}, + {"_ZN4llvm2cl6parserI20ShrinkWrapDebugLevelED0Ev", "llvm::cl::parser::~parser()"}, + {"_ZNK4llvm2cl6parserI20ShrinkWrapDebugLevelE13getNumOptionsEv", "llvm::cl::parser::getNumOptions() const"}, + {"_ZNK4llvm2cl6parserI20ShrinkWrapDebugLevelE9getOptionEj", "llvm::cl::parser::getOption(unsigned int) const"}, + {"_ZNK4llvm2cl6parserI20ShrinkWrapDebugLevelE14getDescriptionEj", "llvm::cl::parser::getDescription(unsigned int) const"}, + + // {"_ZN4llvm2cl3optISsLb0ENS0_6parserISsEEEC2IA17_cNS0_12OptionHiddenENS0_4descENS0_10value_descENS0_11initializerIA1_cEEEERKT_RKT0_RKT1_RKT2_RKT3_", + // "llvm::cl::opt>::opt>(char const (&) [17], llvm::cl::OptionHidden const&, llvm::cl::desc const&, llvm::cl::value_desc const&, llvm::cl::initializer const&)"}, + // "std::string const& llvm::cl::opt>::string>(false const&, llvm::cl::parser const&, char [17] const&, llvm::cl::OptionHidden const&)" was returned + + {"_ZN4llvm3PEID2Ev", "llvm::PEI::~PEI()"}, + {"_ZN4llvm38initializeSimpleRegisterCoalescingPassERNS_12PassRegistryE", "llvm::initializeSimpleRegisterCoalescingPass(llvm::PassRegistry&)"}, + + // {"_ZThn32_NK4llvm24SimpleRegisterCoalescing16getAnalysisUsageERNS_13AnalysisUsageE", + // "non-virtual thunk to llvm::SimpleRegisterCoalescing::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + // "virtual function non-virtual override offset : -32 llvm::SimpleRegisterCoalescing::getAnalysisUsage(llvm::AnalysisUsage&) const" was returned + + {"_ZNK4llvm24SimpleRegisterCoalescing16getAnalysisUsageERNS_13AnalysisUsageE", "llvm::SimpleRegisterCoalescing::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN4llvm24SimpleRegisterCoalescing20AdjustCopiesBackFromERKNS_13CoalescerPairEPNS_12MachineInstrE", "llvm::SimpleRegisterCoalescing::AdjustCopiesBackFrom(llvm::CoalescerPair const&, llvm::MachineInstr*)"}, + {"_ZN4llvm24SimpleRegisterCoalescing25TrimLiveIntervalToLastUseENS_9SlotIndexEPNS_17MachineBasicBlockERNS_12LiveIntervalEPKNS_9LiveRangeE", "llvm::SimpleRegisterCoalescing::TrimLiveIntervalToLastUse(llvm::SlotIndex, llvm::MachineBasicBlock*, llvm::LiveInterval&, llvm::LiveRange const*)"}, + {"_ZN4llvm24SimpleRegisterCoalescing20HasOtherReachingDefsERNS_12LiveIntervalES2_PNS_6VNInfoES4_", "llvm::SimpleRegisterCoalescing::HasOtherReachingDefs(llvm::LiveInterval&, llvm::LiveInterval&, llvm::VNInfo*, llvm::VNInfo*)"}, + {"_ZN4llvm24SimpleRegisterCoalescing24RemoveCopyByCommutingDefERKNS_13CoalescerPairEPNS_12MachineInstrE", "llvm::SimpleRegisterCoalescing::RemoveCopyByCommutingDef(llvm::CoalescerPair const&, llvm::MachineInstr*)"}, + {"_ZNK4llvm24SimpleRegisterCoalescing15lastRegisterUseENS_9SlotIndexES1_jRS1_", "llvm::SimpleRegisterCoalescing::lastRegisterUse(llvm::SlotIndex, llvm::SlotIndex, unsigned int, llvm::SlotIndex&) const"}, + {"_Z21isSameOrFallThroughBBPN4llvm17MachineBasicBlockES1_PKNS_15TargetInstrInfoE", "isSameOrFallThroughBB(llvm::MachineBasicBlock*, llvm::MachineBasicBlock*, llvm::TargetInstrInfo const*)"}, + {"_Z11removeRangeRN4llvm12LiveIntervalENS_9SlotIndexES2_PNS_13LiveIntervalsEPKNS_18TargetRegisterInfoE", "removeRange(llvm::LiveInterval&, llvm::SlotIndex, llvm::SlotIndex, llvm::LiveIntervals*, llvm::TargetRegisterInfo const*)"}, + {"_ZN4llvm24SimpleRegisterCoalescing23ReMaterializeTrivialDefERNS_12LiveIntervalEbjjPNS_12MachineInstrE", "llvm::SimpleRegisterCoalescing::ReMaterializeTrivialDef(llvm::LiveInterval&, bool, unsigned int, unsigned int, llvm::MachineInstr*)"}, + {"_ZN4llvm24SimpleRegisterCoalescing14RemoveCopyFlagEjPKNS_12MachineInstrE", "llvm::SimpleRegisterCoalescing::RemoveCopyFlag(unsigned int, llvm::MachineInstr const*)"}, + {"_ZN4llvm24SimpleRegisterCoalescing17UpdateRegDefsUsesERKNS_13CoalescerPairE", "llvm::SimpleRegisterCoalescing::UpdateRegDefsUses(llvm::CoalescerPair const&)"}, + {"_ZN4llvm24SimpleRegisterCoalescing24ShortenDeadCopyLiveRangeERNS_12LiveIntervalEPNS_12MachineInstrE", "llvm::SimpleRegisterCoalescing::ShortenDeadCopyLiveRange(llvm::LiveInterval&, llvm::MachineInstr*)"}, + {"_Z21removeIntervalIfEmptyRN4llvm12LiveIntervalEPNS_13LiveIntervalsEPKNS_18TargetRegisterInfoE", "removeIntervalIfEmpty(llvm::LiveInterval&, llvm::LiveIntervals*, llvm::TargetRegisterInfo const*)"}, + {"_ZN4llvm24SimpleRegisterCoalescing13RemoveDeadDefERNS_12LiveIntervalEPNS_12MachineInstrE", "llvm::SimpleRegisterCoalescing::RemoveDeadDef(llvm::LiveInterval&, llvm::MachineInstr*)"}, + {"_ZN4llvm24SimpleRegisterCoalescing27ShortenDeadCopySrcLiveRangeERNS_12LiveIntervalEPNS_12MachineInstrE", "llvm::SimpleRegisterCoalescing::ShortenDeadCopySrcLiveRange(llvm::LiveInterval&, llvm::MachineInstr*)"}, + {"_ZN4llvm24SimpleRegisterCoalescing21isWinToJoinCrossClassEjjPKNS_19TargetRegisterClassES3_S3_", "llvm::SimpleRegisterCoalescing::isWinToJoinCrossClass(unsigned int, unsigned int, llvm::TargetRegisterClass const*, llvm::TargetRegisterClass const*, llvm::TargetRegisterClass const*)"}, + {"_ZN4llvm24SimpleRegisterCoalescing8JoinCopyERNS_7CopyRecERb", "llvm::SimpleRegisterCoalescing::JoinCopy(llvm::CopyRec&, bool&)"}, + {"_ZN4llvm24SimpleRegisterCoalescing13JoinIntervalsERNS_13CoalescerPairE", "llvm::SimpleRegisterCoalescing::JoinIntervals(llvm::CoalescerPair&)"}, + + // {"_Z17ComputeUltimateVNPN4llvm6VNInfoERNS_11SmallVectorIS1_Lj16EEERNS_8DenseMapIS1_S1_NS_12DenseMapInfoIS1_EES7_EES9_RNS2_IiLj16EEESB_", + // "ComputeUltimateVN(llvm::VNInfo*, llvm::SmallVector&, llvm::DenseMap, llvm::DenseMapInfo>&, llvm::DenseMap, llvm::DenseMapInfo>&, llvm::SmallVector&, llvm::SmallVector&)"}, + // "ComputeUltimateVN(llvm::VNInfo*, llvm::SmallVector&, llvm::DenseMap, llvm::DenseMapInfo>&, llvm::DenseMap, llvm::DenseMapInfo>&, llvm::SmallVector&, llvm::SmallVector&)" was returned + + {"_ZN4llvm24SimpleRegisterCoalescing17CopyCoalesceInMBBEPNS_17MachineBasicBlockERSt6vectorINS_7CopyRecESaIS4_EE", "llvm::SimpleRegisterCoalescing::CopyCoalesceInMBB(llvm::MachineBasicBlock*, std::vector>&)"}, + {"_ZN4llvm24SimpleRegisterCoalescing13joinIntervalsEv", "llvm::SimpleRegisterCoalescing::joinIntervals()"}, + {"_ZNK4llvm24SimpleRegisterCoalescing24differingRegisterClassesEjj", "llvm::SimpleRegisterCoalescing::differingRegisterClasses(unsigned int, unsigned int) const"}, + {"_ZN4llvm24SimpleRegisterCoalescing13releaseMemoryEv", "llvm::SimpleRegisterCoalescing::releaseMemory()"}, + {"_ZN4llvm24SimpleRegisterCoalescing20runOnMachineFunctionERNS_15MachineFunctionE", "llvm::SimpleRegisterCoalescing::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZNK4llvm24SimpleRegisterCoalescing5printERNS_11raw_ostreamEPKNS_6ModuleE", "llvm::SimpleRegisterCoalescing::print(llvm::raw_ostream&, llvm::Module const*) const"}, + {"_ZN4llvm29createSimpleRegisterCoalescerEv", "llvm::createSimpleRegisterCoalescer()"}, + + // {"_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPSt4pairIjPN4llvm17MachineBasicBlockEESt6vectorIS6_SaIS6_EEEElN12_GLOBAL__N_115DepthMBBCompareEEvT_SE_T0_T1_", + // "void std::__introsort_loop<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long, (anonymous namespace)::DepthMBBCompare>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long, (anonymous namespace)::DepthMBBCompare)"}, + // "void std::__introsort_loop<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long, (anonymous namespace)::DepthMBBCompare>(unsigned int, unsigned int, llvm::MachineBasicBlock*, std::pair*)" was returned + + + // {"_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIjPN4llvm17MachineBasicBlockEESt6vectorIS6_SaIS6_EEEEN12_GLOBAL__N_115DepthMBBCompareEEvT_SE_T0_", + // "void std::__insertion_sort<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, (anonymous namespace)::DepthMBBCompare>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, (anonymous namespace)::DepthMBBCompare)"}, + // "void std::__insertion_sort<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, (anonymous namespace)::DepthMBBCompare>(unsigned int, unsigned int, llvm::MachineBasicBlock*)" was returned + + + // {"_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPSt4pairIjPN4llvm17MachineBasicBlockEESt6vectorIS6_SaIS6_EEEElS6_N12_GLOBAL__N_115DepthMBBCompareEEvT_T0_SF_T1_T2_", + // "void std::__adjust_heap<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long, std::pair, (anonymous namespace)::DepthMBBCompare>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long, long, std::pair, (anonymous namespace)::DepthMBBCompare)"}, + // got error + + {"_ZN4llvm13LiveIntervals14removeIntervalEj", "llvm::LiveIntervals::removeInterval(unsigned int)"}, + {"_ZN4llvm24SimpleRegisterCoalescingD1Ev", "llvm::SimpleRegisterCoalescing::~SimpleRegisterCoalescing()"}, + {"_ZN4llvm24SimpleRegisterCoalescingD0Ev", "llvm::SimpleRegisterCoalescing::~SimpleRegisterCoalescing()"}, + {"_ZN4llvm24SimpleRegisterCoalescing16coalesceFunctionERNS_15MachineFunctionERNS_13RegallocQueryE", "llvm::SimpleRegisterCoalescing::coalesceFunction(llvm::MachineFunction&, llvm::RegallocQuery&)"}, + + // {"_ZThn32_N4llvm24SimpleRegisterCoalescingD1Ev", + // "non-virtual thunk to llvm::SimpleRegisterCoalescing::~SimpleRegisterCoalescing()"}, + // "virtual function non-virtual override offset : -32 llvm::SimpleRegisterCoalescing::~SimpleRegisterCoalescing()" was returned + + + // {"_ZThn32_N4llvm24SimpleRegisterCoalescingD0Ev", + // "non-virtual thunk to llvm::SimpleRegisterCoalescing::~SimpleRegisterCoalescing()"}, + // "virtual function non-virtual override offset : -32 llvm::SimpleRegisterCoalescing::~SimpleRegisterCoalescing()" was returned + + + // {"_ZThn32_N4llvm24SimpleRegisterCoalescing16coalesceFunctionERNS_15MachineFunctionERNS_13RegallocQueryE", + // "non-virtual thunk to llvm::SimpleRegisterCoalescing::coalesceFunction(llvm::MachineFunction&, llvm::RegallocQuery&)"}, + // "virtual function non-virtual override offset : -32 llvm::SimpleRegisterCoalescing::coalesceFunction(llvm::MachineFunction&, llvm::RegallocQuery&)" was returned + + {"_ZN4llvm17RegisterCoalescer5resetERNS_15MachineFunctionE", "llvm::RegisterCoalescer::reset(llvm::MachineFunction&)"}, + {"_ZNSt6vectorISt4pairIjPN4llvm17MachineBasicBlockEESaIS4_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS4_S6_EERKS4_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + {"_ZNSt6vectorIN4llvm7CopyRecESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::CopyRec const&)"}, + {"_ZN4llvm8DenseMapIPNS_6VNInfoES2_NS_12DenseMapInfoIS2_EES4_E16InsertIntoBucketERKS2_S7_PSt4pairIS2_S2_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::VNInfo* const&, llvm::VNInfo* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_6VNInfoES2_NS_12DenseMapInfoIS2_EES4_E4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm24SimpleRegisterCoalescingD2Ev", "llvm::SimpleRegisterCoalescing::~SimpleRegisterCoalescing()"}, + {"_ZN4llvm24SimpleRegisterCoalescingC2Ev", "llvm::SimpleRegisterCoalescing::SimpleRegisterCoalescing()"}, + {"_ZNK4llvm17RegisterCoalescer16getAnalysisUsageERNS_13AnalysisUsageE", "llvm::RegisterCoalescer::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN4llvm15callDefaultCtorINS_24SimpleRegisterCoalescingEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor()"}, + {"_ZN4llvm16createSjLjEHPassEPKNS_14TargetLoweringE", "llvm::createSjLjEHPass(llvm::TargetLowering const*)"}, + {"_ZN12_GLOBAL__N_110SjLjEHPassD1Ev", "(anonymous namespace)::SjLjEHPass::~SjLjEHPass()"}, + {"_ZN12_GLOBAL__N_110SjLjEHPassD0Ev", "(anonymous namespace)::SjLjEHPass::~SjLjEHPass()"}, + {"_ZNK12_GLOBAL__N_110SjLjEHPass11getPassNameEv", "(anonymous namespace)::SjLjEHPass::getPassName() const"}, + {"_ZNK12_GLOBAL__N_110SjLjEHPass16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::SjLjEHPass::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_110SjLjEHPass16doInitializationERN4llvm6ModuleE", "(anonymous namespace)::SjLjEHPass::doInitialization(llvm::Module&)"}, + {"_ZN12_GLOBAL__N_110SjLjEHPass13runOnFunctionERN4llvm8FunctionE", "(anonymous namespace)::SjLjEHPass::runOnFunction(llvm::Function&)"}, + {"_Z16MarkBlocksLiveInPN4llvm10BasicBlockERSt3setIS1_St4lessIS1_ESaIS1_EE", "MarkBlocksLiveIn(llvm::BasicBlock*, std::set, std::allocator>&)"}, + {"_ZN4llvm8ICmpInstC2EPNS_11InstructionENS_7CmpInst9PredicateEPNS_5ValueES6_RKNS_5TwineE", "llvm::ICmpInst::ICmpInst(llvm::Instruction*, llvm::CmpInst::Predicate, llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + + // {"_ZN4llvm17GetElementPtrInstC2IPPNS_5ValueEEES3_T_S5_jRKNS_5TwineEPNS_11InstructionE", + // "llvm::GetElementPtrInst::GetElementPtrInst(llvm::Value*, llvm::Value**, llvm::Value**, unsigned int, llvm::Twine const&, llvm::Instruction*)"}, + // got error + + {"_ZNSt8_Rb_treeIPN4llvm10BasicBlockES2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE8_M_eraseEPSt13_Rb_tree_nodeIS2_E", "std::_Rb_tree, std::less, std::allocator>::_M_erase(std::_Rb_tree_node*)"}, + {"_ZNSt8_Rb_treeIPN4llvm10BasicBlockES2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE16_M_insert_uniqueERKS2_", "std::_Rb_tree, std::less, std::allocator>::_M_insert_unique(llvm::BasicBlock* const&)"}, + + // {"_ZN4llvm16ExtractValueInstC2IPjEEPNS_5ValueET_S5_RKNS_5TwineEPNS_11InstructionE", + // "llvm::ExtractValueInst::ExtractValueInst(llvm::Value*, unsigned int*, unsigned int*, llvm::Twine const&, llvm::Instruction*)"}, + // got error + + {"_ZN4llvm25initializeSlotIndexesPassERNS_12PassRegistryE", "llvm::initializeSlotIndexesPass(llvm::PassRegistry&)"}, + {"_ZN4llvm14IndexListEntry16getEmptyKeyEntryEv", "llvm::IndexListEntry::getEmptyKeyEntry()"}, + {"_ZN4llvm14IndexListEntry20getTombstoneKeyEntryEv", "llvm::IndexListEntry::getTombstoneKeyEntry()"}, + {"_ZNK4llvm11SlotIndexes16getAnalysisUsageERNS_13AnalysisUsageE", "llvm::SlotIndexes::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN4llvm11SlotIndexes13releaseMemoryEv", "llvm::SlotIndexes::releaseMemory()"}, + {"_ZN4llvm11SlotIndexes20runOnMachineFunctionERNS_15MachineFunctionE", "llvm::SlotIndexes::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN4llvm11SlotIndexes15renumberIndexesEv", "llvm::SlotIndexes::renumberIndexes()"}, + {"_ZNK4llvm11SlotIndexes4dumpEv", "llvm::SlotIndexes::dump() const"}, + {"_ZNK4llvm9SlotIndex5printERNS_11raw_ostreamE", "llvm::SlotIndex::print(llvm::raw_ostream&) const"}, + {"_ZNK4llvm9SlotIndex4dumpEv", "llvm::SlotIndex::dump() const"}, + {"_ZN4llvm14object_creatorIN12_GLOBAL__N_123TombstoneIndexListEntryEEEPvv", "void* llvm::object_creator<(anonymous namespace)::TombstoneIndexListEntry>()"}, + {"_ZN4llvm14object_deleterIN12_GLOBAL__N_123TombstoneIndexListEntryEE4callEPv", "llvm::object_deleter<(anonymous namespace)::TombstoneIndexListEntry>::call(void*)"}, + {"_ZN4llvm14object_creatorIN12_GLOBAL__N_119EmptyIndexListEntryEEEPvv", "void* llvm::object_creator<(anonymous namespace)::EmptyIndexListEntry>()"}, + {"_ZN4llvm14object_deleterIN12_GLOBAL__N_119EmptyIndexListEntryEE4callEPv", "llvm::object_deleter<(anonymous namespace)::EmptyIndexListEntry>::call(void*)"}, + {"_ZN4llvm8DenseMapIPKNS_12MachineInstrENS_9SlotIndexENS_12DenseMapInfoIS3_EENS5_IS4_EEE6insertERKSt4pairIS3_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + + // {"_ZN4llvm8DenseMapIPKNS_17MachineBasicBlockESt4pairINS_9SlotIndexES5_ENS_12DenseMapInfoIS3_EENS7_IS6_EEE6insertERKS4_IS3_S6_E", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::insert(std::pair> const&)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::insert(std::pair const&>)" was returned + + {"_ZN4llvm11SlotIndexesD1Ev", "llvm::SlotIndexes::~SlotIndexes()"}, + {"_ZN4llvm11SlotIndexesD0Ev", "llvm::SlotIndexes::~SlotIndexes()"}, + {"_ZN4llvm8DenseMapIPKNS_17MachineBasicBlockESt4pairINS_9SlotIndexES5_ENS_12DenseMapInfoIS3_EENS7_IS6_EEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::shrink_and_clear()"}, + {"_ZN4llvm8DenseMapIPKNS_12MachineInstrENS_9SlotIndexENS_12DenseMapInfoIS3_EENS5_IS4_EEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + + // {"_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4llvm9SlotIndexEPNS3_17MachineBasicBlockEESt6vectorIS7_SaIS7_EEEElNS3_14Idx2MBBCompareEEvT_SE_T0_T1_", + // "void std::__introsort_loop<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long, llvm::Idx2MBBCompare>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long, llvm::Idx2MBBCompare)"}, + // got error + + + // {"_ZSt22__final_insertion_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4llvm9SlotIndexEPNS3_17MachineBasicBlockEESt6vectorIS7_SaIS7_EEEENS3_14Idx2MBBCompareEEvT_SE_T0_", + // "void std::__final_insertion_sort<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, llvm::Idx2MBBCompare>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, llvm::Idx2MBBCompare)"}, + // got error + + + // {"_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4llvm9SlotIndexEPNS3_17MachineBasicBlockEESt6vectorIS7_SaIS7_EEEENS3_14Idx2MBBCompareEEvT_SE_T0_", + // "void std::__insertion_sort<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, llvm::Idx2MBBCompare>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, llvm::Idx2MBBCompare)"}, + // got error + + + // {"_ZSt21__unguarded_partitionIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4llvm9SlotIndexEPNS3_17MachineBasicBlockEESt6vectorIS7_SaIS7_EEEES7_NS3_14Idx2MBBCompareEET_SE_SE_T0_T1_", + // "__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>> std::__unguarded_partition<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair, llvm::Idx2MBBCompare>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair, llvm::Idx2MBBCompare)"}, + // got error + + + // {"_ZSt13__heap_selectIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4llvm9SlotIndexEPNS3_17MachineBasicBlockEESt6vectorIS7_SaIS7_EEEENS3_14Idx2MBBCompareEEvT_SE_SE_T0_", + // "void std::__heap_select<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, llvm::Idx2MBBCompare>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, llvm::Idx2MBBCompare)"}, + // got error + + + // {"_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4llvm9SlotIndexEPNS3_17MachineBasicBlockEESt6vectorIS7_SaIS7_EEEElS7_NS3_14Idx2MBBCompareEEvT_T0_SF_T1_T2_", + // "void std::__adjust_heap<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long, std::pair, llvm::Idx2MBBCompare>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long, long, std::pair, llvm::Idx2MBBCompare)"}, + // got error + + {"_ZNSt6vectorISt4pairIN4llvm9SlotIndexEPNS1_17MachineBasicBlockEESaIS5_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS5_S7_EERKS5_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + + // {"_ZN4llvm8DenseMapIPKNS_17MachineBasicBlockESt4pairINS_9SlotIndexES5_ENS_12DenseMapInfoIS3_EENS7_IS6_EEE16InsertIntoBucketERKS3_RKS6_PS4_IS3_S6_E", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(llvm::MachineBasicBlock const* const&, std::pair const&, std::pair>*)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(llvm::MachineBasicBlock const* const&, std::pair const&, std::pair*>)" was returned + + {"_ZN4llvm8DenseMapIPKNS_17MachineBasicBlockESt4pairINS_9SlotIndexES5_ENS_12DenseMapInfoIS3_EENS7_IS6_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKNS_12MachineInstrENS_9SlotIndexENS_12DenseMapInfoIS3_EENS5_IS4_EEE16InsertIntoBucketERKS3_RKS4_PSt4pairIS3_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::MachineInstr const* const&, llvm::SlotIndex const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_12MachineInstrENS_9SlotIndexENS_12DenseMapInfoIS3_EENS5_IS4_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm15callDefaultCtorINS_11SlotIndexesEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor()"}, + {"_ZN4llvm11SlotIndexesC2Ev", "llvm::SlotIndexes::SlotIndexes()"}, + {"_ZN4llvm2cl3optIN12_GLOBAL__N_111SpillerNameELb0ENS0_6parserIS3_EEED1Ev", "llvm::cl::opt<(anonymous namespace)::SpillerName, false, llvm::cl::parser<(anonymous namespace)::SpillerName>>::~opt()"}, + {"_ZN4llvm7SpillerD0Ev", "llvm::Spiller::~Spiller()"}, + {"_ZN4llvm7SpillerD1Ev", "llvm::Spiller::~Spiller()"}, + {"_ZN4llvm7SpillerD2Ev", "llvm::Spiller::~Spiller()"}, + {"_ZN4llvm13createSpillerERNS_19MachineFunctionPassERNS_15MachineFunctionERNS_10VirtRegMapE", "llvm::createSpiller(llvm::MachineFunctionPass&, llvm::MachineFunction&, llvm::VirtRegMap&)"}, + {"_ZN4llvm2cl3optIN12_GLOBAL__N_111SpillerNameELb0ENS0_6parserIS3_EEE16handleOccurrenceEjNS_9StringRefES7_", "llvm::cl::opt<(anonymous namespace)::SpillerName, false, llvm::cl::parser<(anonymous namespace)::SpillerName>>::handleOccurrence(unsigned int, llvm::StringRef, llvm::StringRef)"}, + {"_ZNK4llvm2cl3optIN12_GLOBAL__N_111SpillerNameELb0ENS0_6parserIS3_EEE27getValueExpectedFlagDefaultEv", "llvm::cl::opt<(anonymous namespace)::SpillerName, false, llvm::cl::parser<(anonymous namespace)::SpillerName>>::getValueExpectedFlagDefault() const"}, + {"_ZNK4llvm2cl3optIN12_GLOBAL__N_111SpillerNameELb0ENS0_6parserIS3_EEE14getOptionWidthEv", "llvm::cl::opt<(anonymous namespace)::SpillerName, false, llvm::cl::parser<(anonymous namespace)::SpillerName>>::getOptionWidth() const"}, + {"_ZNK4llvm2cl3optIN12_GLOBAL__N_111SpillerNameELb0ENS0_6parserIS3_EEE15printOptionInfoEm", "llvm::cl::opt<(anonymous namespace)::SpillerName, false, llvm::cl::parser<(anonymous namespace)::SpillerName>>::printOptionInfo(unsigned long) const"}, + {"_ZN4llvm2cl3optIN12_GLOBAL__N_111SpillerNameELb0ENS0_6parserIS3_EEE19getExtraOptionNamesERNS_15SmallVectorImplIPKcEE", "llvm::cl::opt<(anonymous namespace)::SpillerName, false, llvm::cl::parser<(anonymous namespace)::SpillerName>>::getExtraOptionNames(llvm::SmallVectorImpl&)"}, + {"_ZN4llvm2cl3optIN12_GLOBAL__N_111SpillerNameELb0ENS0_6parserIS3_EEED0Ev", "llvm::cl::opt<(anonymous namespace)::SpillerName, false, llvm::cl::parser<(anonymous namespace)::SpillerName>>::~opt()"}, + {"_ZN4llvm2cl6parserIN12_GLOBAL__N_111SpillerNameEED1Ev", "llvm::cl::parser<(anonymous namespace)::SpillerName>::~parser()"}, + {"_ZN4llvm2cl6parserIN12_GLOBAL__N_111SpillerNameEED0Ev", "llvm::cl::parser<(anonymous namespace)::SpillerName>::~parser()"}, + {"_ZNK4llvm2cl6parserIN12_GLOBAL__N_111SpillerNameEE13getNumOptionsEv", "llvm::cl::parser<(anonymous namespace)::SpillerName>::getNumOptions() const"}, + {"_ZNK4llvm2cl6parserIN12_GLOBAL__N_111SpillerNameEE9getOptionEj", "llvm::cl::parser<(anonymous namespace)::SpillerName>::getOption(unsigned int) const"}, + {"_ZNK4llvm2cl6parserIN12_GLOBAL__N_111SpillerNameEE14getDescriptionEj", "llvm::cl::parser<(anonymous namespace)::SpillerName>::getDescription(unsigned int) const"}, + {"_ZN12_GLOBAL__N_115StandardSpillerD1Ev", "(anonymous namespace)::StandardSpiller::~StandardSpiller()"}, + {"_ZN12_GLOBAL__N_115StandardSpillerD0Ev", "(anonymous namespace)::StandardSpiller::~StandardSpiller()"}, + {"_ZN12_GLOBAL__N_115StandardSpiller5spillEPN4llvm12LiveIntervalERNS1_15SmallVectorImplIS3_EERKS5_", "(anonymous namespace)::StandardSpiller::spill(llvm::LiveInterval*, llvm::SmallVectorImpl&, llvm::SmallVectorImpl const&)"}, + {"_ZN12_GLOBAL__N_114TrivialSpillerD1Ev", "(anonymous namespace)::TrivialSpiller::~TrivialSpiller()"}, + {"_ZN12_GLOBAL__N_114TrivialSpillerD0Ev", "(anonymous namespace)::TrivialSpiller::~TrivialSpiller()"}, + {"_ZN12_GLOBAL__N_114TrivialSpiller5spillEPN4llvm12LiveIntervalERNS1_15SmallVectorImplIS3_EERKS5_", "(anonymous namespace)::TrivialSpiller::spill(llvm::LiveInterval*, llvm::SmallVectorImpl&, llvm::SmallVectorImpl const&)"}, + {"_ZN12_GLOBAL__N_111SpillerBaseD1Ev", "(anonymous namespace)::SpillerBase::~SpillerBase()"}, + {"_ZN12_GLOBAL__N_111SpillerBaseD0Ev", "(anonymous namespace)::SpillerBase::~SpillerBase()"}, + + // {"_ZN4llvm15SmallVectorImplIPNS_12LiveIntervalEE6insertIN9__gnu_cxx17__normal_iteratorIPS2_St6vectorIS2_SaIS2_EEEEEES7_S7_T_SC_", + // "llvm::LiveInterval** llvm::SmallVectorImpl::insert<__gnu_cxx::__normal_iterator>>>(llvm::LiveInterval**, __gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>)"}, + // got error + + {"_ZN4llvm11SlotIndexes24insertMachineInstrInMapsEPNS_12MachineInstrEPb", "llvm::SlotIndexes::insertMachineInstrInMaps(llvm::MachineInstr*, bool*)"}, + {"_ZN4llvm28initializeStackProtectorPassERNS_12PassRegistryE", "llvm::initializeStackProtectorPass(llvm::PassRegistry&)"}, + {"_ZN4llvm24createStackProtectorPassEPKNS_14TargetLoweringE", "llvm::createStackProtectorPass(llvm::TargetLowering const*)"}, + {"_ZN12_GLOBAL__N_114StackProtectorD1Ev", "(anonymous namespace)::StackProtector::~StackProtector()"}, + {"_ZN12_GLOBAL__N_114StackProtectorD0Ev", "(anonymous namespace)::StackProtector::~StackProtector()"}, + {"_ZNK12_GLOBAL__N_114StackProtector16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::StackProtector::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_114StackProtector13runOnFunctionERN4llvm8FunctionE", "(anonymous namespace)::StackProtector::runOnFunction(llvm::Function&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_114StackProtectorEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::StackProtector>()"}, + {"_ZN4llvm8ICmpInstC2ERNS_10BasicBlockENS_7CmpInst9PredicateEPNS_5ValueES6_RKNS_5TwineE", "llvm::ICmpInst::ICmpInst(llvm::BasicBlock&, llvm::CmpInst::Predicate, llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm31initializeStackSlotColoringPassERNS_12PassRegistryE", "llvm::initializeStackSlotColoringPass(llvm::PassRegistry&)"}, + {"_ZN4llvm27createStackSlotColoringPassEb", "llvm::createStackSlotColoringPass(bool)"}, + {"_ZN12_GLOBAL__N_117StackSlotColoringD1Ev", "(anonymous namespace)::StackSlotColoring::~StackSlotColoring()"}, + {"_ZN12_GLOBAL__N_117StackSlotColoringD0Ev", "(anonymous namespace)::StackSlotColoring::~StackSlotColoring()"}, + {"_ZNK12_GLOBAL__N_117StackSlotColoring11getPassNameEv", "(anonymous namespace)::StackSlotColoring::getPassName() const"}, + {"_ZNK12_GLOBAL__N_117StackSlotColoring16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::StackSlotColoring::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_117StackSlotColoring20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::StackSlotColoring::runOnMachineFunction(llvm::MachineFunction&)"}, + + // {"_ZSt21__inplace_stable_sortIN9__gnu_cxx17__normal_iteratorIPPN4llvm12LiveIntervalESt6vectorIS4_SaIS4_EEEEN12_GLOBAL__N_114IntervalSorterEEvT_SC_T0_", + // "void std::__inplace_stable_sort<__gnu_cxx::__normal_iterator>>, (anonymous namespace)::IntervalSorter>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, (anonymous namespace)::IntervalSorter)"}, + // got error + + + // {"_ZSt22__stable_sort_adaptiveIN9__gnu_cxx17__normal_iteratorIPPN4llvm12LiveIntervalESt6vectorIS4_SaIS4_EEEES5_lN12_GLOBAL__N_114IntervalSorterEEvT_SC_T0_T1_T2_", + // "void std::__stable_sort_adaptive<__gnu_cxx::__normal_iterator>>, llvm::LiveInterval**, long, (anonymous namespace)::IntervalSorter>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, llvm::LiveInterval**, long, (anonymous namespace)::IntervalSorter)"}, + // got error + + + // {"_ZSt24__merge_sort_with_bufferIN9__gnu_cxx17__normal_iteratorIPPN4llvm12LiveIntervalESt6vectorIS4_SaIS4_EEEES5_N12_GLOBAL__N_114IntervalSorterEEvT_SC_T0_T1_", + // "void std::__merge_sort_with_buffer<__gnu_cxx::__normal_iterator>>, llvm::LiveInterval**, (anonymous namespace)::IntervalSorter>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, llvm::LiveInterval**, (anonymous namespace)::IntervalSorter)"}, + // got error + + + // {"_ZSt16__merge_adaptiveIN9__gnu_cxx17__normal_iteratorIPPN4llvm12LiveIntervalESt6vectorIS4_SaIS4_EEEElS5_N12_GLOBAL__N_114IntervalSorterEEvT_SC_SC_T0_SD_T1_SD_T2_", + // "void std::__merge_adaptive<__gnu_cxx::__normal_iterator>>, long, llvm::LiveInterval**, (anonymous namespace)::IntervalSorter>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, long, long, llvm::LiveInterval**, long, (anonymous namespace)::IntervalSorter)"}, + // got error + + + // {"_ZSt22__merge_without_bufferIN9__gnu_cxx17__normal_iteratorIPPN4llvm12LiveIntervalESt6vectorIS4_SaIS4_EEEElN12_GLOBAL__N_114IntervalSorterEEvT_SC_SC_T0_SD_T1_", + // "void std::__merge_without_buffer<__gnu_cxx::__normal_iterator>>, long, (anonymous namespace)::IntervalSorter>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, long, long, (anonymous namespace)::IntervalSorter)"}, + // got error + + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_117StackSlotColoringEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::StackSlotColoring>()"}, + + // {"_ZN4llvm15SmallVectorImplINS_8SmallSetIjLj4EEEED2Ev", + // "llvm::SmallVectorImpl>::~SmallVectorImpl()"}, + // "llvm::SmallVectorImpl>::~SmallVectorImpl()" was returned + + + // {"_ZN4llvm15SmallVectorImplINS_8SmallSetIjLj4EEEE9push_backERKS2_", + // "llvm::SmallVectorImpl>::push_back(llvm::SmallSet const&)"}, + // "llvm::SmallVectorImpl>::push_back(llvm::SmallSet const&)" was returned + + + // {"_ZN4llvm23SmallVectorTemplateBaseINS_8SmallSetIjLj4EEELb0EE4growEm", + // "llvm::SmallVectorTemplateBase, false>::grow(unsigned long)"}, + // "llvm::SmallVectorTemplateBase, false>::grow(unsigned long)" was returned + + + // {"_ZSt24__uninitialized_copy_auxIPN4llvm8SmallSetIjLj4EEES3_ET0_T_S5_S4_St12__false_type", + // "llvm::SmallSet* std::__uninitialized_copy_aux*, llvm::SmallSet*>(llvm::SmallSet*, llvm::SmallSet*, llvm::SmallSet*, std::__false_type)"}, + // "4 std::__uninitialized_copy_aux*, llvm::SmallSet*>(unsigned int, unsigned int, 4, std::__false_type)" was returned + + {"_ZNSt8_Rb_treeIjjSt9_IdentityIjESt4lessIjESaIjEE7_M_copyEPKSt13_Rb_tree_nodeIjEPS7_", "std::_Rb_tree, std::less, std::allocator>::_M_copy(std::_Rb_tree_node const*, std::_Rb_tree_node*)"}, + {"_ZN4llvm10VirtRegMap22getFirstUnusedRegisterEPKNS_19TargetRegisterClassE", "llvm::VirtRegMap::getFirstUnusedRegister(llvm::TargetRegisterClass const*)"}, + {"_ZN4llvm8DenseMapIPKNS_19TargetRegisterClassENS_9BitVectorENS_12DenseMapInfoIS3_EENS5_IS4_EEE16FindAndConstructERKS3_", "llvm::DenseMap, llvm::DenseMapInfo>::FindAndConstruct(llvm::TargetRegisterClass const* const&)"}, + {"_ZN4llvm8DenseMapIPKNS_19TargetRegisterClassENS_9BitVectorENS_12DenseMapInfoIS3_EENS5_IS4_EEE16InsertIntoBucketERKS3_RKS4_PSt4pairIS3_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::TargetRegisterClass const* const&, llvm::BitVector const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_19TargetRegisterClassENS_9BitVectorENS_12DenseMapInfoIS3_EENS5_IS4_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + + // {"_ZSt8__rotateIN9__gnu_cxx17__normal_iteratorIPPN4llvm12LiveIntervalESt6vectorIS4_SaIS4_EEEEEvT_SA_SA_St26random_access_iterator_tag", + // "void std::__rotate<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, std::random_access_iterator_tag)"}, + // got error + + + // {"_ZN4llvm11SmallVectorINS0_IiLj4EEELj16EEC2EjRKS1_", + // "llvm::SmallVector, 16u>::SmallVector(unsigned int, llvm::SmallVector const&)"}, + // "llvm::SmallVector, 16>::SmallVector(unsigned int, llvm::SmallVector const&)" was returned + + + // {"_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorIiLj4EEELb0EE4growEm", + // "llvm::SmallVectorTemplateBase, false>::grow(unsigned long)"}, + // "llvm::SmallVectorTemplateBase, false>::grow(unsigned long)" was returned + + {"_ZN4llvm15SmallVectorImplIiEaSERKS1_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + + // {"_ZN4llvm11SmallVectorIfLj16EEC2EjRKf", + // "llvm::SmallVector::SmallVector(unsigned int, float const&)"}, + // "llvm::SmallVector::SmallVector(unsigned int, float const&)" was returned + + + // {"_ZN4llvm11SmallVectorIiLj16EEC2EjRKi", + // "llvm::SmallVector::SmallVector(unsigned int, int const&)"}, + // "llvm::SmallVector::SmallVector(unsigned int, int const&)" was returned + + + // {"_ZN4llvm15SmallVectorImplINS_11SmallVectorIPNS_12LiveIntervalELj4EEEE6resizeEj", + // "llvm::SmallVectorImpl>::resize(unsigned int)"}, + // "llvm::SmallVectorImpl>::resize(unsigned int)" was returned + + {"_ZNSt6vectorIPN4llvm12LiveIntervalESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::LiveInterval* const&)"}, + + // {"_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorIPNS_12LiveIntervalELj4EEELb0EE4growEm", + // "llvm::SmallVectorTemplateBase, false>::grow(unsigned long)"}, + // "llvm::SmallVectorTemplateBase, false>::grow(unsigned long)" was returned + + {"_ZN4llvm15SmallVectorImplIPNS_12LiveIntervalEEaSERKS3_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + + // {"_ZN4llvm15SmallVectorImplINS_11SmallVectorIPNS_12MachineInstrELj8EEEE6resizeEj", + // "llvm::SmallVectorImpl>::resize(unsigned int)"}, + // "llvm::SmallVectorImpl>::resize(unsigned int)" was returned + + + // {"_ZN4llvm23SmallVectorTemplateBaseINS_11SmallVectorIPNS_12MachineInstrELj8EEELb0EE4growEm", + // "llvm::SmallVectorTemplateBase, false>::grow(unsigned long)"}, + // "llvm::SmallVectorTemplateBase, false>::grow(unsigned long)" was returned + + {"_ZN4llvm34initializeStrongPHIEliminationPassERNS_12PassRegistryE", "llvm::initializeStrongPHIEliminationPass(llvm::PassRegistry&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_120StrongPHIEliminationEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::StrongPHIElimination>()"}, + {"_ZN12_GLOBAL__N_120StrongPHIEliminationD1Ev", "(anonymous namespace)::StrongPHIElimination::~StrongPHIElimination()"}, + {"_ZN12_GLOBAL__N_120StrongPHIEliminationD0Ev", "(anonymous namespace)::StrongPHIElimination::~StrongPHIElimination()"}, + {"_ZNK12_GLOBAL__N_120StrongPHIElimination16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::StrongPHIElimination::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_120StrongPHIElimination20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::StrongPHIElimination::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN12_GLOBAL__N_120StrongPHIElimination9unionRegsEjj", "(anonymous namespace)::StrongPHIElimination::unionRegs(unsigned int, unsigned int)"}, + {"_ZN4llvm8DenseMapIjPN12_GLOBAL__N_120StrongPHIElimination4NodeENS_12DenseMapInfoIjEENS5_IS4_EEE5clearEv", "llvm::DenseMap, llvm::DenseMapInfo<(anonymous namespace)::StrongPHIElimination::Node*>>::clear()"}, + {"_ZN12_GLOBAL__N_120StrongPHIElimination11getRegColorEj", "(anonymous namespace)::StrongPHIElimination::getRegColor(unsigned int)"}, + {"_ZN12_GLOBAL__N_120StrongPHIElimination17MergeLIsAndRenameEjj", "(anonymous namespace)::StrongPHIElimination::MergeLIsAndRename(unsigned int, unsigned int)"}, + {"_ZN4llvm8DenseMapIjPN12_GLOBAL__N_120StrongPHIElimination4NodeENS_12DenseMapInfoIjEENS5_IS4_EEEixERKj", "llvm::DenseMap, llvm::DenseMapInfo<(anonymous namespace)::StrongPHIElimination::Node*>>::operator[](unsigned int const&)"}, + + // {"_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN4llvm12MachineInstrESt6vectorIS4_SaIS4_EEEElN12_GLOBAL__N_114MIIndexCompareEEvT_SC_T0_T1_", + // "void std::__introsort_loop<__gnu_cxx::__normal_iterator>>, long, (anonymous namespace)::MIIndexCompare>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, long, (anonymous namespace)::MIIndexCompare)"}, + // got error + + + // {"_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPPN4llvm12MachineInstrESt6vectorIS4_SaIS4_EEEEN12_GLOBAL__N_114MIIndexCompareEEvT_SC_T0_", + // "void std::__insertion_sort<__gnu_cxx::__normal_iterator>>, (anonymous namespace)::MIIndexCompare>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, (anonymous namespace)::MIIndexCompare)"}, + // got error + + {"_ZNK12_GLOBAL__N_114MIIndexCompareclEPKN4llvm12MachineInstrES4_", "(anonymous namespace)::MIIndexCompare::operator()(llvm::MachineInstr const*, llvm::MachineInstr const*) const"}, + + // {"_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN4llvm12MachineInstrESt6vectorIS4_SaIS4_EEEElS4_N12_GLOBAL__N_114MIIndexCompareEEvT_T0_SD_T1_T2_", + // "void std::__adjust_heap<__gnu_cxx::__normal_iterator>>, long, llvm::MachineInstr*, (anonymous namespace)::MIIndexCompare>(__gnu_cxx::__normal_iterator>>, long, long, llvm::MachineInstr*, (anonymous namespace)::MIIndexCompare)"}, + // got error + + {"_ZN4llvm8DenseMapIPNS_17MachineBasicBlockESt6vectorIPNS_12MachineInstrESaIS5_EENS_12DenseMapInfoIS2_EENS8_IS7_EEE5clearEv", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::clear()"}, + {"_ZN4llvm8DenseMapISt4pairIPNS_17MachineBasicBlockEjEPNS_12MachineInstrENS_12DenseMapInfoIS4_EENS7_IS6_EEE5clearEv", "llvm::DenseMap, llvm::MachineInstr*, llvm::DenseMapInfo>, llvm::DenseMapInfo>::clear()"}, + {"_ZN4llvm8DenseMapISt4pairIPNS_17MachineBasicBlockEjEPNS_12MachineInstrENS_12DenseMapInfoIS4_EENS7_IS6_EEE16shrink_and_clearEv", "llvm::DenseMap, llvm::MachineInstr*, llvm::DenseMapInfo>, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm8DenseMapISt4pairIPNS_17MachineBasicBlockEjEcNS_12DenseMapInfoIS4_EENS5_IcEEE5clearEv", "llvm::DenseMap, char, llvm::DenseMapInfo>, llvm::DenseMapInfo>::clear()"}, + {"_ZN4llvm8DenseMapISt4pairIPNS_17MachineBasicBlockEjEcNS_12DenseMapInfoIS4_EENS5_IcEEE16shrink_and_clearEv", "llvm::DenseMap, char, llvm::DenseMapInfo>, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm8DenseMapIPNS_17MachineBasicBlockESt6vectorIPNS_12MachineInstrESaIS5_EENS_12DenseMapInfoIS2_EENS8_IS7_EEE16shrink_and_clearEv", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::shrink_and_clear()"}, + + // {"_ZNK4llvm8DenseMapISt4pairIPNS_17MachineBasicBlockEjEPNS_12MachineInstrENS_12DenseMapInfoIS4_EENS7_IS6_EEE15LookupBucketForERKS4_RPS1_IS4_S6_E", + // "llvm::DenseMap, llvm::MachineInstr*, llvm::DenseMapInfo>, llvm::DenseMapInfo>::LookupBucketFor(std::pair const&, std::pair, llvm::MachineInstr*>*&) const"}, + // "llvm::DenseMap, llvm::MachineInstr*, llvm::DenseMapInfo>, llvm::DenseMapInfo>::LookupBucketFor(std::pair const&, std::pair*&, llvm::MachineInstr*>) const" was returned + + + // {"_ZN4llvm8DenseMapISt4pairIPNS_17MachineBasicBlockEjEPNS_12MachineInstrENS_12DenseMapInfoIS4_EENS7_IS6_EEE16InsertIntoBucketERKS4_RKS6_PS1_IS4_S6_E", + // "llvm::DenseMap, llvm::MachineInstr*, llvm::DenseMapInfo>, llvm::DenseMapInfo>::InsertIntoBucket(std::pair const&, llvm::MachineInstr* const&, std::pair, llvm::MachineInstr*>*)"}, + // "llvm::DenseMap, llvm::MachineInstr*, llvm::DenseMapInfo>, llvm::DenseMapInfo>::InsertIntoBucket(std::pair const&, llvm::MachineInstr* const&, std::pair*, llvm::MachineInstr*>)" was returned + + {"_ZN4llvm8DenseMapISt4pairIPNS_17MachineBasicBlockEjEPNS_12MachineInstrENS_12DenseMapInfoIS4_EENS7_IS6_EEE4growEj", "llvm::DenseMap, llvm::MachineInstr*, llvm::DenseMapInfo>, llvm::DenseMapInfo>::grow(unsigned int)"}, + + // {"_ZN4llvm8DenseMapISt4pairIPNS_17MachineBasicBlockEjEcNS_12DenseMapInfoIS4_EENS5_IcEEE6insertERKS1_IS4_cE", + // "llvm::DenseMap, char, llvm::DenseMapInfo>, llvm::DenseMapInfo>::insert(std::pair, char> const&)"}, + // "llvm::DenseMap, char, llvm::DenseMapInfo>, llvm::DenseMapInfo>::insert(std::pair const&, char>)" was returned + + + // {"_ZNK4llvm8DenseMapISt4pairIPNS_17MachineBasicBlockEjEcNS_12DenseMapInfoIS4_EENS5_IcEEE15LookupBucketForERKS4_RPS1_IS4_cE", + // "llvm::DenseMap, char, llvm::DenseMapInfo>, llvm::DenseMapInfo>::LookupBucketFor(std::pair const&, std::pair, char>*&) const"}, + // "llvm::DenseMap, char, llvm::DenseMapInfo>, llvm::DenseMapInfo>::LookupBucketFor(std::pair const&, std::pair*&, char>) const" was returned + + + // {"_ZN4llvm8DenseMapISt4pairIPNS_17MachineBasicBlockEjEcNS_12DenseMapInfoIS4_EENS5_IcEEE16InsertIntoBucketERKS4_RKcPS1_IS4_cE", + // "llvm::DenseMap, char, llvm::DenseMapInfo>, llvm::DenseMapInfo>::InsertIntoBucket(std::pair const&, char const&, std::pair, char>*)"}, + // "llvm::DenseMap, char, llvm::DenseMapInfo>, llvm::DenseMapInfo>::InsertIntoBucket(std::pair const&, char const&, std::pair*, char>)" was returned + + {"_ZN4llvm8DenseMapISt4pairIPNS_17MachineBasicBlockEjEcNS_12DenseMapInfoIS4_EENS5_IcEEE4growEj", "llvm::DenseMap, char, llvm::DenseMapInfo>, llvm::DenseMapInfo>::grow(unsigned int)"}, + + // {"_ZN4llvm11df_iteratorIPNS_15DomTreeNodeBaseINS_17MachineBasicBlockEEENS_11SmallPtrSetIS4_Lj8EEELb0ENS_11GraphTraitsIS4_EEE6toNextEv", + // "llvm::df_iterator*, llvm::SmallPtrSet*, 8u>, false, llvm::GraphTraits*>>::toNext()"}, + // "llvm::df_iterator*, llvm::SmallPtrSet*, 8>, false, llvm::GraphTraits*>>::toNext()" was returned + + + // {"_ZNSt6vectorISt4pairIN4llvm14PointerIntPairIPNS1_15DomTreeNodeBaseINS1_17MachineBasicBlockEEELj1EjNS1_21PointerLikeTypeTraitsIS6_EEEEN9__gnu_cxx17__normal_iteratorIPS6_S_IS6_SaIS6_EEEEESaISG_EE13_M_insert_auxENSB_IPSG_SI_EERKSG_", + // "std::vector*, 1u, unsigned int, llvm::PointerLikeTypeTraits*>>, __gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>>, std::allocator*, 1u, unsigned int, llvm::PointerLikeTypeTraits*>>, __gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>>>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, 1u, unsigned int, llvm::PointerLikeTypeTraits*>>, __gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>>*, std::vector*, 1u, unsigned int, llvm::PointerLikeTypeTraits*>>, __gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>>, std::allocator*, 1u, unsigned int, llvm::PointerLikeTypeTraits*>>, __gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>>>>>, std::pair*, 1u, unsigned int, llvm::PointerLikeTypeTraits*>>, __gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>> const&)"}, + // "std::vector*, 1, unsigned int, llvm::PointerLikeTypeTraits*>>, __gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>>, std::allocator*, 1, unsigned int, llvm::PointerLikeTypeTraits*>>, __gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>>>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, 1, unsigned int, llvm::PointerLikeTypeTraits*>>, __gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>>*, std::vector*, 1, unsigned int, llvm::PointerLikeTypeTraits*>>, __gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>>, std::allocator*, 1, unsigned int, llvm::PointerLikeTypeTraits*>>, __gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>>>>>, std::pair*, 1, unsigned int, llvm::PointerLikeTypeTraits*>>, __gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>> const&)" was returned + + {"_ZNK4llvm13LiveIntervals14isLiveOutOfMBBERKNS_12LiveIntervalEPKNS_17MachineBasicBlockE", "llvm::LiveIntervals::isLiveOutOfMBB(llvm::LiveInterval const&, llvm::MachineBasicBlock const*) const"}, + + // {"_ZN4llvm8DenseMapIjSt4pairIPNS_12MachineInstrEjENS_12DenseMapInfoIjEENS5_IS4_EEE16InsertIntoBucketERKjRKS4_PS1_IjS4_E", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(unsigned int const&, std::pair const&, std::pair>*)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(unsigned int const&, std::pair const&, std::pair*>)" was returned + + {"_ZN4llvm8DenseMapIjSt4pairIPNS_12MachineInstrEjENS_12DenseMapInfoIjEENS5_IS4_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIjSt4pairIPNS_12MachineInstrEjENS_12DenseMapInfoIjEENS5_IS4_EEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::shrink_and_clear()"}, + {"_ZN4llvm8DenseMapIPNS_17MachineBasicBlockESt6vectorIPNS_12MachineInstrESaIS5_EENS_12DenseMapInfoIS2_EENS8_IS7_EEE16FindAndConstructERKS2_", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::FindAndConstruct(llvm::MachineBasicBlock* const&)"}, + {"_ZN4llvm8DenseMapIPNS_17MachineBasicBlockESt6vectorIPNS_12MachineInstrESaIS5_EENS_12DenseMapInfoIS2_EENS8_IS7_EEE16InsertIntoBucketERKS2_RKS7_PSt4pairIS2_S7_E", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::InsertIntoBucket(llvm::MachineBasicBlock* const&, std::vector> const&, std::pair>>*)"}, + {"_ZN4llvm8DenseMapIPNS_17MachineBasicBlockESt6vectorIPNS_12MachineInstrESaIS5_EENS_12DenseMapInfoIS2_EENS8_IS7_EEE4growEj", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::grow(unsigned int)"}, + {"_ZN4llvm23createTailDuplicatePassEb", "llvm::createTailDuplicatePass(bool)"}, + {"_ZN12_GLOBAL__N_117TailDuplicatePassD1Ev", "(anonymous namespace)::TailDuplicatePass::~TailDuplicatePass()"}, + {"_ZN12_GLOBAL__N_117TailDuplicatePassD0Ev", "(anonymous namespace)::TailDuplicatePass::~TailDuplicatePass()"}, + {"_ZNK12_GLOBAL__N_117TailDuplicatePass11getPassNameEv", "(anonymous namespace)::TailDuplicatePass::getPassName() const"}, + {"_ZN12_GLOBAL__N_117TailDuplicatePass20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::TailDuplicatePass::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_Z10VerifyPHIsRN4llvm15MachineFunctionEb", "VerifyPHIs(llvm::MachineFunction&, bool)"}, + + // {"_ZN12_GLOBAL__N_117TailDuplicatePass10ProcessPHIEPN4llvm12MachineInstrEPNS1_17MachineBasicBlockES5_RNS1_8DenseMapIjjNS1_12DenseMapInfoIjEES8_EERNS1_11SmallVectorISt4pairIjjELj4EEE", + // "(anonymous namespace)::TailDuplicatePass::ProcessPHI(llvm::MachineInstr*, llvm::MachineBasicBlock*, llvm::MachineBasicBlock*, llvm::DenseMap, llvm::DenseMapInfo>&, llvm::SmallVector, 4u>&)"}, + // "(anonymous namespace)::TailDuplicatePass::ProcessPHI(llvm::MachineInstr*, llvm::MachineBasicBlock*, llvm::MachineBasicBlock*, llvm::DenseMap, llvm::DenseMapInfo>&, llvm::SmallVector, 4>&)" was returned + + {"_ZN12_GLOBAL__N_117TailDuplicatePass20DuplicateInstructionEPN4llvm12MachineInstrEPNS1_17MachineBasicBlockES5_RNS1_15MachineFunctionERNS1_8DenseMapIjjNS1_12DenseMapInfoIjEESA_EE", "(anonymous namespace)::TailDuplicatePass::DuplicateInstruction(llvm::MachineInstr*, llvm::MachineBasicBlock*, llvm::MachineBasicBlock*, llvm::MachineFunction&, llvm::DenseMap, llvm::DenseMapInfo>&)"}, + {"_ZN12_GLOBAL__N_117TailDuplicatePass17AddSSAUpdateEntryEjjPN4llvm17MachineBasicBlockE", "(anonymous namespace)::TailDuplicatePass::AddSSAUpdateEntry(unsigned int, unsigned int, llvm::MachineBasicBlock*)"}, + {"_ZN4llvm8DenseMapIjSt6vectorISt4pairIPNS_17MachineBasicBlockEjESaIS5_EENS_12DenseMapInfoIjEENS8_IS7_EEE5clearEv", "llvm::DenseMap, std::allocator>>, llvm::DenseMapInfo, llvm::DenseMapInfo, std::allocator>>>>::clear()"}, + {"_ZN4llvm8DenseMapIjSt6vectorISt4pairIPNS_17MachineBasicBlockEjESaIS5_EENS_12DenseMapInfoIjEENS8_IS7_EEE16shrink_and_clearEv", "llvm::DenseMap, std::allocator>>, llvm::DenseMapInfo, llvm::DenseMapInfo, std::allocator>>>>::shrink_and_clear()"}, + + // {"_ZN4llvm8DenseMapIjSt6vectorISt4pairIPNS_17MachineBasicBlockEjESaIS5_EENS_12DenseMapInfoIjEENS8_IS7_EEE6insertERKS2_IjS7_E", + // "llvm::DenseMap, std::allocator>>, llvm::DenseMapInfo, llvm::DenseMapInfo, std::allocator>>>>::insert(std::pair, std::allocator>>> const&)"}, + // "llvm::DenseMap, std::allocator>>, llvm::DenseMapInfo, llvm::DenseMapInfo, std::allocator>>>>::insert(std::pair const&, std::allocator>>>)" was returned + + {"_ZNSt6vectorISt4pairIPN4llvm17MachineBasicBlockEjESaIS4_EEC2ERKS6_", "std::vector, std::allocator>>::vector(std::vector, std::allocator>> const&)"}, + + // {"_ZN4llvm8DenseMapIjSt6vectorISt4pairIPNS_17MachineBasicBlockEjESaIS5_EENS_12DenseMapInfoIjEENS8_IS7_EEE16InsertIntoBucketERKjRKS7_PS2_IjS7_E", + // "llvm::DenseMap, std::allocator>>, llvm::DenseMapInfo, llvm::DenseMapInfo, std::allocator>>>>::InsertIntoBucket(unsigned int const&, std::vector, std::allocator>> const&, std::pair, std::allocator>>>*)"}, + // "llvm::DenseMap, std::allocator>>, llvm::DenseMapInfo, llvm::DenseMapInfo, std::allocator>>>>::InsertIntoBucket(unsigned int const&, std::vector, std::allocator>> const&, std::pair*, std::allocator>>>)" was returned + + {"_ZN4llvm8DenseMapIjSt6vectorISt4pairIPNS_17MachineBasicBlockEjESaIS5_EENS_12DenseMapInfoIjEENS8_IS7_EEE4growEj", "llvm::DenseMap, std::allocator>>, llvm::DenseMapInfo, llvm::DenseMapInfo, std::allocator>>>>::grow(unsigned int)"}, + {"_ZNSt6vectorISt4pairIPN4llvm17MachineBasicBlockEjESaIS4_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS4_S6_EERKS4_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + + // {"_ZN4llvm14SmallSetVectorIPNS_17MachineBasicBlockELj8EEC2IN9__gnu_cxx17__normal_iteratorIPS2_St6vectorIS2_SaIS2_EEEEEET_SC_", + // "llvm::SmallSetVector::SmallSetVector<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>)"}, + // got error + + {"_ZNK4llvm19TargetInstrInfoImpl23ReplaceTailWithBranchToENS_14ilist_iteratorINS_12MachineInstrEEEPNS_17MachineBasicBlockE", "llvm::TargetInstrInfoImpl::ReplaceTailWithBranchTo(llvm::ilist_iterator, llvm::MachineBasicBlock*) const"}, + {"_ZNK4llvm19TargetInstrInfoImpl18commuteInstructionEPNS_12MachineInstrEb", "llvm::TargetInstrInfoImpl::commuteInstruction(llvm::MachineInstr*, bool) const"}, + {"_ZNK4llvm19TargetInstrInfoImpl21findCommutedOpIndicesEPNS_12MachineInstrERjS3_", "llvm::TargetInstrInfoImpl::findCommutedOpIndices(llvm::MachineInstr*, unsigned int&, unsigned int&) const"}, + {"_ZNK4llvm19TargetInstrInfoImpl20PredicateInstructionEPNS_12MachineInstrERKNS_15SmallVectorImplINS_14MachineOperandEEE", "llvm::TargetInstrInfoImpl::PredicateInstruction(llvm::MachineInstr*, llvm::SmallVectorImpl const&) const"}, + {"_ZNK4llvm19TargetInstrInfoImpl13reMaterializeERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEEjjPKS4_RKNS_18TargetRegisterInfoE", "llvm::TargetInstrInfoImpl::reMaterialize(llvm::MachineBasicBlock&, llvm::ilist_iterator, unsigned int, unsigned int, llvm::MachineInstr const*, llvm::TargetRegisterInfo const&) const"}, + {"_ZNK4llvm19TargetInstrInfoImpl16produceSameValueEPKNS_12MachineInstrES3_PKNS_19MachineRegisterInfoE", "llvm::TargetInstrInfoImpl::produceSameValue(llvm::MachineInstr const*, llvm::MachineInstr const*, llvm::MachineRegisterInfo const*) const"}, + {"_ZNK4llvm19TargetInstrInfoImpl9duplicateEPNS_12MachineInstrERNS_15MachineFunctionE", "llvm::TargetInstrInfoImpl::duplicate(llvm::MachineInstr*, llvm::MachineFunction&) const"}, + {"_ZNK4llvm19TargetInstrInfoImpl20canFoldMemoryOperandEPKNS_12MachineInstrERKNS_15SmallVectorImplIjEE", "llvm::TargetInstrInfoImpl::canFoldMemoryOperand(llvm::MachineInstr const*, llvm::SmallVectorImpl const&) const"}, + {"_Z11canFoldCopyPKN4llvm12MachineInstrEj", "canFoldCopy(llvm::MachineInstr const*, unsigned int)"}, + {"_ZNK4llvm15TargetInstrInfo17foldMemoryOperandENS_14ilist_iteratorINS_12MachineInstrEEERKNS_15SmallVectorImplIjEEi", "llvm::TargetInstrInfo::foldMemoryOperand(llvm::ilist_iterator, llvm::SmallVectorImpl const&, int) const"}, + {"_ZNK4llvm15TargetInstrInfo17foldMemoryOperandENS_14ilist_iteratorINS_12MachineInstrEEERKNS_15SmallVectorImplIjEEPS2_", "llvm::TargetInstrInfo::foldMemoryOperand(llvm::ilist_iterator, llvm::SmallVectorImpl const&, llvm::MachineInstr*) const"}, + {"_ZNK4llvm15TargetInstrInfo40isReallyTriviallyReMaterializableGenericEPKNS_12MachineInstrEPNS_13AliasAnalysisE", "llvm::TargetInstrInfo::isReallyTriviallyReMaterializableGeneric(llvm::MachineInstr const*, llvm::AliasAnalysis*) const"}, + {"_ZNK4llvm19TargetInstrInfoImpl20isSchedulingBoundaryEPKNS_12MachineInstrEPKNS_17MachineBasicBlockERKNS_15MachineFunctionE", "llvm::TargetInstrInfoImpl::isSchedulingBoundary(llvm::MachineInstr const*, llvm::MachineBasicBlock const*, llvm::MachineFunction const&) const"}, + {"_ZNK4llvm19TargetInstrInfoImpl24usePreRAHazardRecognizerEv", "llvm::TargetInstrInfoImpl::usePreRAHazardRecognizer() const"}, + {"_ZNK4llvm19TargetInstrInfoImpl28CreateTargetHazardRecognizerEPKNS_13TargetMachineEPKNS_11ScheduleDAGE", "llvm::TargetInstrInfoImpl::CreateTargetHazardRecognizer(llvm::TargetMachine const*, llvm::ScheduleDAG const*) const"}, + {"_ZNK4llvm19TargetInstrInfoImpl34CreateTargetPostRAHazardRecognizerEPKNS_18InstrItineraryDataEPKNS_11ScheduleDAGE", "llvm::TargetInstrInfoImpl::CreateTargetPostRAHazardRecognizer(llvm::InstrItineraryData const*, llvm::ScheduleDAG const*) const"}, + {"_ZNK4llvm24ScheduleHazardRecognizer12atIssueLimitEv", "llvm::ScheduleHazardRecognizer::atIssueLimit() const"}, + {"_ZN4llvm24ScheduleHazardRecognizer13getHazardTypeEPNS_5SUnitEi", "llvm::ScheduleHazardRecognizer::getHazardType(llvm::SUnit*, int)"}, + {"_ZN4llvm24ScheduleHazardRecognizer5ResetEv", "llvm::ScheduleHazardRecognizer::Reset()"}, + {"_ZN4llvm24ScheduleHazardRecognizer15EmitInstructionEPNS_5SUnitE", "llvm::ScheduleHazardRecognizer::EmitInstruction(llvm::SUnit*)"}, + {"_ZN4llvm24ScheduleHazardRecognizer12AdvanceCycleEv", "llvm::ScheduleHazardRecognizer::AdvanceCycle()"}, + {"_ZN4llvm24ScheduleHazardRecognizer11RecedeCycleEv", "llvm::ScheduleHazardRecognizer::RecedeCycle()"}, + {"_ZN4llvm27TargetLoweringObjectFileELF10InitializeERNS_9MCContextERKNS_13TargetMachineE", "llvm::TargetLoweringObjectFileELF::Initialize(llvm::MCContext&, llvm::TargetMachine const&)"}, + {"_ZNK4llvm27TargetLoweringObjectFileELF17getEHFrameSectionEv", "llvm::TargetLoweringObjectFileELF::getEHFrameSection() const"}, + {"_ZNK4llvm27TargetLoweringObjectFileELF24getExplicitSectionGlobalEPKNS_11GlobalValueENS_11SectionKindEPNS_7ManglerERKNS_13TargetMachineE", "llvm::TargetLoweringObjectFileELF::getExplicitSectionGlobal(llvm::GlobalValue const*, llvm::SectionKind, llvm::Mangler*, llvm::TargetMachine const&) const"}, + {"_ZNK4llvm27TargetLoweringObjectFileELF22SelectSectionForGlobalEPKNS_11GlobalValueENS_11SectionKindEPNS_7ManglerERKNS_13TargetMachineE", "llvm::TargetLoweringObjectFileELF::SelectSectionForGlobal(llvm::GlobalValue const*, llvm::SectionKind, llvm::Mangler*, llvm::TargetMachine const&) const"}, + {"_ZNK4llvm27TargetLoweringObjectFileELF21getSectionForConstantENS_11SectionKindE", "llvm::TargetLoweringObjectFileELF::getSectionForConstant(llvm::SectionKind) const"}, + {"_ZNK4llvm27TargetLoweringObjectFileELF30getExprForDwarfGlobalReferenceEPKNS_11GlobalValueEPNS_7ManglerEPNS_17MachineModuleInfoEjRNS_10MCStreamerE", "llvm::TargetLoweringObjectFileELF::getExprForDwarfGlobalReference(llvm::GlobalValue const*, llvm::Mangler*, llvm::MachineModuleInfo*, unsigned int, llvm::MCStreamer&) const"}, + {"_ZN4llvm29TargetLoweringObjectFileMachO10InitializeERNS_9MCContextERKNS_13TargetMachineE", "llvm::TargetLoweringObjectFileMachO::Initialize(llvm::MCContext&, llvm::TargetMachine const&)"}, + {"_ZNK4llvm29TargetLoweringObjectFileMachO17getEHFrameSectionEv", "llvm::TargetLoweringObjectFileMachO::getEHFrameSection() const"}, + {"_ZNK4llvm29TargetLoweringObjectFileMachO24getExplicitSectionGlobalEPKNS_11GlobalValueENS_11SectionKindEPNS_7ManglerERKNS_13TargetMachineE", "llvm::TargetLoweringObjectFileMachO::getExplicitSectionGlobal(llvm::GlobalValue const*, llvm::SectionKind, llvm::Mangler*, llvm::TargetMachine const&) const"}, + {"_ZNK4llvm29TargetLoweringObjectFileMachO22SelectSectionForGlobalEPKNS_11GlobalValueENS_11SectionKindEPNS_7ManglerERKNS_13TargetMachineE", "llvm::TargetLoweringObjectFileMachO::SelectSectionForGlobal(llvm::GlobalValue const*, llvm::SectionKind, llvm::Mangler*, llvm::TargetMachine const&) const"}, + {"_ZNK4llvm29TargetLoweringObjectFileMachO21getSectionForConstantENS_11SectionKindE", "llvm::TargetLoweringObjectFileMachO::getSectionForConstant(llvm::SectionKind) const"}, + {"_ZNK4llvm29TargetLoweringObjectFileMachO26shouldEmitUsedDirectiveForEPKNS_11GlobalValueEPNS_7ManglerE", "llvm::TargetLoweringObjectFileMachO::shouldEmitUsedDirectiveFor(llvm::GlobalValue const*, llvm::Mangler*) const"}, + {"_ZNK4llvm29TargetLoweringObjectFileMachO30getExprForDwarfGlobalReferenceEPKNS_11GlobalValueEPNS_7ManglerEPNS_17MachineModuleInfoEjRNS_10MCStreamerE", "llvm::TargetLoweringObjectFileMachO::getExprForDwarfGlobalReference(llvm::GlobalValue const*, llvm::Mangler*, llvm::MachineModuleInfo*, unsigned int, llvm::MCStreamer&) const"}, + {"_ZNK4llvm29TargetLoweringObjectFileMachO22getPersonalityEncodingEv", "llvm::TargetLoweringObjectFileMachO::getPersonalityEncoding() const"}, + {"_ZNK4llvm29TargetLoweringObjectFileMachO15getLSDAEncodingEv", "llvm::TargetLoweringObjectFileMachO::getLSDAEncoding() const"}, + {"_ZNK4llvm29TargetLoweringObjectFileMachO14getFDEEncodingEv", "llvm::TargetLoweringObjectFileMachO::getFDEEncoding() const"}, + {"_ZNK4llvm29TargetLoweringObjectFileMachO16getTTypeEncodingEv", "llvm::TargetLoweringObjectFileMachO::getTTypeEncoding() const"}, + {"_ZN4llvm28TargetLoweringObjectFileCOFF10InitializeERNS_9MCContextERKNS_13TargetMachineE", "llvm::TargetLoweringObjectFileCOFF::Initialize(llvm::MCContext&, llvm::TargetMachine const&)"}, + {"_ZNK4llvm28TargetLoweringObjectFileCOFF17getEHFrameSectionEv", "llvm::TargetLoweringObjectFileCOFF::getEHFrameSection() const"}, + {"_ZNK4llvm28TargetLoweringObjectFileCOFF24getExplicitSectionGlobalEPKNS_11GlobalValueENS_11SectionKindEPNS_7ManglerERKNS_13TargetMachineE", "llvm::TargetLoweringObjectFileCOFF::getExplicitSectionGlobal(llvm::GlobalValue const*, llvm::SectionKind, llvm::Mangler*, llvm::TargetMachine const&) const"}, + {"_ZNK4llvm28TargetLoweringObjectFileCOFF22SelectSectionForGlobalEPKNS_11GlobalValueENS_11SectionKindEPNS_7ManglerERKNS_13TargetMachineE", "llvm::TargetLoweringObjectFileCOFF::SelectSectionForGlobal(llvm::GlobalValue const*, llvm::SectionKind, llvm::Mangler*, llvm::TargetMachine const&) const"}, + {"_ZN4llvm39initializeTwoAddressInstructionPassPassERNS_12PassRegistryE", "llvm::initializeTwoAddressInstructionPassPass(llvm::PassRegistry&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_125TwoAddressInstructionPassEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::TwoAddressInstructionPass>()"}, + {"_ZN12_GLOBAL__N_125TwoAddressInstructionPassD1Ev", "(anonymous namespace)::TwoAddressInstructionPass::~TwoAddressInstructionPass()"}, + {"_ZN12_GLOBAL__N_125TwoAddressInstructionPassD0Ev", "(anonymous namespace)::TwoAddressInstructionPass::~TwoAddressInstructionPass()"}, + {"_ZNK12_GLOBAL__N_125TwoAddressInstructionPass16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::TwoAddressInstructionPass::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_125TwoAddressInstructionPass20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::TwoAddressInstructionPass::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN12_GLOBAL__N_125TwoAddressInstructionPass23TryInstructionTransformERN4llvm14ilist_iteratorINS1_12MachineInstrEEES5_RNS2_INS1_17MachineBasicBlockEEEjjj", "(anonymous namespace)::TwoAddressInstructionPass::TryInstructionTransform(llvm::ilist_iterator&, llvm::ilist_iterator&, llvm::ilist_iterator&, unsigned int, unsigned int, unsigned int)"}, + {"_Z8isKilledRN4llvm12MachineInstrEjPKNS_19MachineRegisterInfoEPKNS_15TargetInstrInfoE", "isKilled(llvm::MachineInstr&, unsigned int, llvm::MachineRegisterInfo const*, llvm::TargetInstrInfo const*)"}, + {"_ZN12_GLOBAL__N_125TwoAddressInstructionPass17NoUseAfterLastDefEjPN4llvm17MachineBasicBlockEjRj", "(anonymous namespace)::TwoAddressInstructionPass::NoUseAfterLastDef(unsigned int, llvm::MachineBasicBlock*, unsigned int, unsigned int&)"}, + + // {"_ZN4llvm8DenseMapIjNS_11SmallVectorISt4pairIjjELj4EEENS_12DenseMapInfoIjEENS5_IS4_EEE6insertERKS2_IjS4_E", + // "llvm::DenseMap, 4u>, llvm::DenseMapInfo, llvm::DenseMapInfo, 4u>>>::insert(std::pair, 4u>> const&)"}, + // "llvm::DenseMap, 4>, llvm::DenseMapInfo, llvm::DenseMapInfo, 4>>>::insert(std::pair const&, 4>>)" was returned + + + // {"_ZN4llvm8DenseMapIjNS_11SmallVectorISt4pairIjjELj4EEENS_12DenseMapInfoIjEENS5_IS4_EEE5clearEv", + // "llvm::DenseMap, 4u>, llvm::DenseMapInfo, llvm::DenseMapInfo, 4u>>>::clear()"}, + // "llvm::DenseMap, 4>, llvm::DenseMapInfo, llvm::DenseMapInfo, 4>>>::clear()" was returned + + + // {"_ZSt16__introsort_loopIPjlEvT_S1_T0_", + // "void std::__introsort_loop(unsigned int*, unsigned int*, long)"}, + // got error + + + // {"_ZSt22__final_insertion_sortIPjEvT_S1_", + // "void std::__final_insertion_sort(unsigned int*, unsigned int*)"}, + // got error + + + // {"_ZSt13__heap_selectIPjEvT_S1_S1_", + // "void std::__heap_select(unsigned int*, unsigned int*, unsigned int*)"}, + // got error + + + // {"_ZSt9sort_heapIPjEvT_S1_", + // "void std::sort_heap(unsigned int*, unsigned int*)"}, + // got error + + + // {"_ZSt9make_heapIPjEvT_S1_", + // "void std::make_heap(unsigned int*, unsigned int*)"}, + // got error + + + // {"_ZN4llvm8DenseMapIjNS_11SmallVectorISt4pairIjjELj4EEENS_12DenseMapInfoIjEENS5_IS4_EEE16shrink_and_clearEv", + // "llvm::DenseMap, 4u>, llvm::DenseMapInfo, llvm::DenseMapInfo, 4u>>>::shrink_and_clear()"}, + // "llvm::DenseMap, 4>, llvm::DenseMapInfo, llvm::DenseMapInfo, 4>>>::shrink_and_clear()" was returned + + {"_ZN4llvm15SmallVectorImplISt4pairIjjEEaSERKS3_", "llvm::SmallVectorImpl>::operator=(llvm::SmallVectorImpl> const&)"}, + + // {"_ZN4llvm8DenseMapIjNS_11SmallVectorISt4pairIjjELj4EEENS_12DenseMapInfoIjEENS5_IS4_EEE16InsertIntoBucketERKjRKS4_PS2_IjS4_E", + // "llvm::DenseMap, 4u>, llvm::DenseMapInfo, llvm::DenseMapInfo, 4u>>>::InsertIntoBucket(unsigned int const&, llvm::SmallVector, 4u> const&, std::pair, 4u>>*)"}, + // "llvm::DenseMap, 4>, llvm::DenseMapInfo, llvm::DenseMapInfo, 4>>>::InsertIntoBucket(unsigned int const&, llvm::SmallVector, 4> const&, std::pair*, 4>>)" was returned + + + // {"_ZN4llvm8DenseMapIjNS_11SmallVectorISt4pairIjjELj4EEENS_12DenseMapInfoIjEENS5_IS4_EEE4growEj", + // "llvm::DenseMap, 4u>, llvm::DenseMapInfo, llvm::DenseMapInfo, 4u>>>::grow(unsigned int)"}, + // "llvm::DenseMap, 4>, llvm::DenseMapInfo, llvm::DenseMapInfo, 4>>>::grow(unsigned int)" was returned + + {"_ZN4llvm34initializeUnreachableBlockElimPassERNS_12PassRegistryE", "llvm::initializeUnreachableBlockElimPass(llvm::PassRegistry&)"}, + {"_ZN4llvm37createUnreachableBlockEliminationPassEv", "llvm::createUnreachableBlockEliminationPass()"}, + {"_ZN4llvm41initializeUnreachableMachineBlockElimPassERNS_12PassRegistryE", "llvm::initializeUnreachableMachineBlockElimPass(llvm::PassRegistry&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_127UnreachableMachineBlockElimEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::UnreachableMachineBlockElim>()"}, + {"_ZN12_GLOBAL__N_127UnreachableMachineBlockElimD1Ev", "(anonymous namespace)::UnreachableMachineBlockElim::~UnreachableMachineBlockElim()"}, + {"_ZN12_GLOBAL__N_127UnreachableMachineBlockElimD0Ev", "(anonymous namespace)::UnreachableMachineBlockElim::~UnreachableMachineBlockElim()"}, + {"_ZNK12_GLOBAL__N_127UnreachableMachineBlockElim16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::UnreachableMachineBlockElim::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_127UnreachableMachineBlockElim20runOnMachineFunctionERN4llvm15MachineFunctionE", "(anonymous namespace)::UnreachableMachineBlockElim::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN12_GLOBAL__N_120UnreachableBlockElimD1Ev", "(anonymous namespace)::UnreachableBlockElim::~UnreachableBlockElim()"}, + {"_ZN12_GLOBAL__N_120UnreachableBlockElimD0Ev", "(anonymous namespace)::UnreachableBlockElim::~UnreachableBlockElim()"}, + {"_ZNK12_GLOBAL__N_120UnreachableBlockElim16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::UnreachableBlockElim::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_120UnreachableBlockElim13runOnFunctionERN4llvm8FunctionE", "(anonymous namespace)::UnreachableBlockElim::runOnFunction(llvm::Function&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_120UnreachableBlockElimEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::UnreachableBlockElim>()"}, + + // {"_ZN4llvm12df_ext_beginIPNS_15MachineFunctionENS_11SmallPtrSetIPNS_17MachineBasicBlockELj8EEEEENS_15df_ext_iteratorIT_T0_EERKS8_RS9_", + // "llvm::df_ext_iterator> llvm::df_ext_begin>(llvm::MachineFunction* const&, llvm::SmallPtrSet&)"}, + // "llvm::df_ext_iterator llvm::df_ext_begin>(llvm::df_ext_iterator const&, llvm::df_ext_iterator const&)" was returned + + + // {"_ZN4llvm11df_iteratorIPNS_15MachineFunctionENS_11SmallPtrSetIPNS_17MachineBasicBlockELj8EEELb1ENS_11GraphTraitsIS2_EEE6toNextEv", + // "llvm::df_iterator, true, llvm::GraphTraits>::toNext()"}, + // "llvm::df_iterator, true, llvm::GraphTraits>::toNext()" was returned + + + // {"_ZN4llvm11df_iteratorIPNS_15MachineFunctionENS_11SmallPtrSetIPNS_17MachineBasicBlockELj8EEELb1ENS_11GraphTraitsIS2_EEEC2ES5_RS6_", + // "llvm::df_iterator, true, llvm::GraphTraits>::df_iterator(llvm::MachineBasicBlock*, llvm::SmallPtrSet&)"}, + // "llvm::df_iterator, true, llvm::GraphTraits>::df_iterator(llvm::MachineBasicBlock*, llvm::SmallPtrSet&)" was returned + + + // {"_ZN4llvm12df_ext_beginIPNS_8FunctionENS_11SmallPtrSetIPNS_10BasicBlockELj8EEEEENS_15df_ext_iteratorIT_T0_EERKS8_RS9_", + // "llvm::df_ext_iterator> llvm::df_ext_begin>(llvm::Function* const&, llvm::SmallPtrSet&)"}, + // "llvm::df_ext_iterator llvm::df_ext_begin>(llvm::df_ext_iterator const&, llvm::df_ext_iterator const&)" was returned + + + // {"_ZN4llvm11df_iteratorIPNS_8FunctionENS_11SmallPtrSetIPNS_10BasicBlockELj8EEELb1ENS_11GraphTraitsIS2_EEE6toNextEv", + // "llvm::df_iterator, true, llvm::GraphTraits>::toNext()"}, + // "llvm::df_iterator, true, llvm::GraphTraits>::toNext()" was returned + + + // {"_ZNSt6vectorISt4pairIN4llvm14PointerIntPairIPNS1_10BasicBlockELj1EjNS1_21PointerLikeTypeTraitsIS4_EEEENS1_12SuccIteratorIPNS1_14TerminatorInstES3_EEESaISC_EEC2ERKSE_", + // "std::vector>, llvm::SuccIterator>, std::allocator>, llvm::SuccIterator>>>::vector(std::vector>, llvm::SuccIterator>, std::allocator>, llvm::SuccIterator>>> const&)"}, + // "std::vector>, llvm::SuccIterator>, std::allocator>, llvm::SuccIterator>>>::vector(std::vector>, llvm::SuccIterator>, std::allocator>, llvm::SuccIterator>>> const&)" was returned + + + // {"_ZN4llvm11df_iteratorIPNS_8FunctionENS_11SmallPtrSetIPNS_10BasicBlockELj8EEELb1ENS_11GraphTraitsIS2_EEEC2ES5_RS6_", + // "llvm::df_iterator, true, llvm::GraphTraits>::df_iterator(llvm::BasicBlock*, llvm::SmallPtrSet&)"}, + // "llvm::df_iterator, true, llvm::GraphTraits>::df_iterator(llvm::BasicBlock*, llvm::SmallPtrSet&)" was returned + + {"_ZN4llvm24initializeVirtRegMapPassERNS_12PassRegistryE", "llvm::initializeVirtRegMapPass(llvm::PassRegistry&)"}, + {"_ZN4llvm10VirtRegMap20runOnMachineFunctionERNS_15MachineFunctionE", "llvm::VirtRegMap::runOnMachineFunction(llvm::MachineFunction&)"}, + {"_ZN4llvm10VirtRegMap4growEv", "llvm::VirtRegMap::grow()"}, + {"_ZN4llvm10VirtRegMap15createSpillSlotEPKNS_19TargetRegisterClassE", "llvm::VirtRegMap::createSpillSlot(llvm::TargetRegisterClass const*)"}, + {"_ZN4llvm10VirtRegMap15getRegAllocPrefEj", "llvm::VirtRegMap::getRegAllocPref(unsigned int)"}, + {"_ZN4llvm10VirtRegMap20assignVirt2StackSlotEj", "llvm::VirtRegMap::assignVirt2StackSlot(unsigned int)"}, + {"_ZN4llvm10VirtRegMap20assignVirt2StackSlotEji", "llvm::VirtRegMap::assignVirt2StackSlot(unsigned int, int)"}, + {"_ZN4llvm10VirtRegMap17assignVirtReMatIdEj", "llvm::VirtRegMap::assignVirtReMatId(unsigned int)"}, + {"_ZN4llvm10VirtRegMap17assignVirtReMatIdEji", "llvm::VirtRegMap::assignVirtReMatId(unsigned int, int)"}, + {"_ZN4llvm10VirtRegMap21getEmergencySpillSlotEPKNS_19TargetRegisterClassE", "llvm::VirtRegMap::getEmergencySpillSlot(llvm::TargetRegisterClass const*)"}, + {"_ZN4llvm10VirtRegMap15addSpillSlotUseEiPNS_12MachineInstrE", "llvm::VirtRegMap::addSpillSlotUse(int, llvm::MachineInstr*)"}, + {"_ZN4llvm10VirtRegMap10virtFoldedEjPNS_12MachineInstrES2_NS0_6ModRefE", "llvm::VirtRegMap::virtFolded(unsigned int, llvm::MachineInstr*, llvm::MachineInstr*, llvm::VirtRegMap::ModRef)"}, + {"_ZN4llvm10VirtRegMap10virtFoldedEjPNS_12MachineInstrENS0_6ModRefE", "llvm::VirtRegMap::virtFolded(unsigned int, llvm::MachineInstr*, llvm::VirtRegMap::ModRef)"}, + {"_ZN4llvm10VirtRegMap26RemoveMachineInstrFromMapsEPNS_12MachineInstrE", "llvm::VirtRegMap::RemoveMachineInstrFromMaps(llvm::MachineInstr*)"}, + {"_ZN4llvm10VirtRegMap19FindUnusedRegistersEPNS_13LiveIntervalsE", "llvm::VirtRegMap::FindUnusedRegisters(llvm::LiveIntervals*)"}, + {"_ZNK4llvm10VirtRegMap5printERNS_11raw_ostreamEPKNS_6ModuleE", "llvm::VirtRegMap::print(llvm::raw_ostream&, llvm::Module const*) const"}, + {"_ZNK4llvm10VirtRegMap4dumpEv", "llvm::VirtRegMap::dump() const"}, + + // {"_ZN4llvm15SmallVectorImplINS_11SmallPtrSetIPNS_12MachineInstrELj4EEEE6resizeEj", + // "llvm::SmallVectorImpl>::resize(unsigned int)"}, + // "llvm::SmallVectorImpl>::resize(unsigned int)" was returned + + {"_ZN4llvm8DenseMapIPKNS_19TargetRegisterClassENS_9BitVectorENS_12DenseMapInfoIS3_EENS5_IS4_EEE5clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::clear()"}, + {"_ZN4llvm8DenseMapIPKNS_19TargetRegisterClassENS_9BitVectorENS_12DenseMapInfoIS3_EENS5_IS4_EEE6insertERKSt4pairIS3_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm10VirtRegMapD1Ev", "llvm::VirtRegMap::~VirtRegMap()"}, + {"_ZN4llvm10VirtRegMapD0Ev", "llvm::VirtRegMap::~VirtRegMap()"}, + {"_ZNK4llvm10VirtRegMap16getAnalysisUsageERNS_13AnalysisUsageE", "llvm::VirtRegMap::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZNSt8_Rb_treeIPN4llvm12MachineInstrESt4pairIKS2_St6vectorIjSaIjEEESt10_Select1stIS8_ESt4lessIS2_ESaIS8_EE5eraseESt17_Rb_tree_iteratorIS8_ESG_", "std::_Rb_tree>>, std::_Select1st>>>, std::less, std::allocator>>>>::erase(std::_Rb_tree_iterator>>>, std::_Rb_tree_iterator>>>)"}, + {"_ZNSt8_Rb_treeIPN4llvm12MachineInstrESt4pairIKS2_St6vectorIjSaIjEEESt10_Select1stIS8_ESt4lessIS2_ESaIS8_EE8_M_eraseEPSt13_Rb_tree_nodeIS8_E", "std::_Rb_tree>>, std::_Select1st>>>, std::less, std::allocator>>>>::_M_erase(std::_Rb_tree_node>>>*)"}, + + // {"_ZNSt8_Rb_treeIPN4llvm12MachineInstrESt4pairIKS2_St6vectorIS3_IjbESaIS6_EEESt10_Select1stIS9_ESt4lessIS2_ESaIS9_EE5eraseESt17_Rb_tree_iteratorIS9_ESH_", + // "std::_Rb_tree, std::allocator>>>, std::_Select1st, std::allocator>>>>, std::less, std::allocator, std::allocator>>>>>::erase(std::_Rb_tree_iterator, std::allocator>>>>, std::_Rb_tree_iterator, std::allocator>>>>)"}, + // "std::_Rb_tree, std::allocator<>>>, std::_Select1st, std::allocator<>>>>, std::less, std::allocator, std::allocator<>>>>>::erase(std::_Rb_tree_iterator, std::allocator<>>>>, std::_Rb_tree_iterator, std::allocator<>>>>)" was returned + + + // {"_ZNSt8_Rb_treeIPN4llvm12MachineInstrESt4pairIKS2_St6vectorIS3_IjbESaIS6_EEESt10_Select1stIS9_ESt4lessIS2_ESaIS9_EE8_M_eraseEPSt13_Rb_tree_nodeIS9_E", + // "std::_Rb_tree, std::allocator>>>, std::_Select1st, std::allocator>>>>, std::less, std::allocator, std::allocator>>>>>::_M_erase(std::_Rb_tree_node, std::allocator>>>>*)"}, + // "std::_Rb_tree, std::allocator<>>>, std::_Select1st, std::allocator<>>>>, std::less, std::allocator, std::allocator<>>>>>::_M_erase(std::_Rb_tree_node, std::allocator<>>>>*)" was returned + + {"_ZNSt8_Rb_treeIPN4llvm12MachineInstrESt4pairIKS2_S3_IjNS0_10VirtRegMap6ModRefEEESt10_Select1stIS8_ESt4lessIS2_ESaIS8_EE5eraseESt17_Rb_tree_iteratorIS8_ESG_", "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::erase(std::_Rb_tree_iterator>>, std::_Rb_tree_iterator>>)"}, + {"_ZNSt8_Rb_treeIPN4llvm12MachineInstrESt4pairIKS2_S3_IjNS0_10VirtRegMap6ModRefEEESt10_Select1stIS8_ESt4lessIS2_ESaIS8_EE8_M_eraseEPSt13_Rb_tree_nodeIS8_E", "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_erase(std::_Rb_tree_node>>*)"}, + {"_ZNSt8_Rb_treeIPN4llvm12MachineInstrESt4pairIKS2_S3_IjNS0_10VirtRegMap6ModRefEEESt10_Select1stIS8_ESt4lessIS2_ESaIS8_EE15_M_insert_equalESt17_Rb_tree_iteratorIS8_ERKS8_", "std::_Rb_tree>, std::_Select1st>>, std::less, std::allocator>>>::_M_insert_equal(std::_Rb_tree_iterator>>, std::pair> const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm19TargetRegisterClassESt4pairIKS3_iESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS6_ERKS6_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm19TargetRegisterClassESt4pairIKS3_iESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE16_M_insert_uniqueERKS6_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZNSt6vectorIPN4llvm12MachineInstrESaIS2_EE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPS2_S4_EEmRKS2_", "std::vector>::_M_fill_insert(__gnu_cxx::__normal_iterator>>, unsigned long, llvm::MachineInstr* const&)"}, + {"_ZNSt6vectorIN4llvm9SlotIndexESaIS1_EE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPS1_S3_EEmRKS1_", "std::vector>::_M_fill_insert(__gnu_cxx::__normal_iterator>>, unsigned long, llvm::SlotIndex const&)"}, + {"_ZN4llvm8DenseMapIPKNS_19TargetRegisterClassENS_9BitVectorENS_12DenseMapInfoIS3_EENS5_IS4_EEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + + // {"_ZN4llvm23SmallVectorTemplateBaseINS_11SmallPtrSetIPNS_12MachineInstrELj4EEELb0EE4growEm", + // "llvm::SmallVectorTemplateBase, false>::grow(unsigned long)"}, + // "llvm::SmallVectorTemplateBase, false>::grow(unsigned long)" was returned + + {"_ZNSt8_Rb_treeIPKN4llvm19TargetRegisterClassESt4pairIKS3_iESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE8_M_eraseEPSt13_Rb_tree_nodeIS6_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZN4llvm10VirtRegMapD2Ev", "llvm::VirtRegMap::~VirtRegMap()"}, + {"_ZN4llvm15callDefaultCtorINS_10VirtRegMapEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor()"}, + {"_ZN4llvm10VirtRegMapC2Ev", "llvm::VirtRegMap::VirtRegMap()"}, + {"_ZN4llvm2cl3optIN12_GLOBAL__N_112RewriterNameELb0ENS0_6parserIS3_EEED1Ev", "llvm::cl::opt<(anonymous namespace)::RewriterName, false, llvm::cl::parser<(anonymous namespace)::RewriterName>>::~opt()"}, + {"_ZN4llvm15VirtRegRewriterD0Ev", "llvm::VirtRegRewriter::~VirtRegRewriter()"}, + {"_ZN4llvm15VirtRegRewriterD1Ev", "llvm::VirtRegRewriter::~VirtRegRewriter()"}, + {"_ZN4llvm15VirtRegRewriterD2Ev", "llvm::VirtRegRewriter::~VirtRegRewriter()"}, + {"_ZN4llvm21createVirtRegRewriterEv", "llvm::createVirtRegRewriter()"}, + {"_ZN4llvm2cl3optIN12_GLOBAL__N_112RewriterNameELb0ENS0_6parserIS3_EEE16handleOccurrenceEjNS_9StringRefES7_", "llvm::cl::opt<(anonymous namespace)::RewriterName, false, llvm::cl::parser<(anonymous namespace)::RewriterName>>::handleOccurrence(unsigned int, llvm::StringRef, llvm::StringRef)"}, + {"_ZNK4llvm2cl3optIN12_GLOBAL__N_112RewriterNameELb0ENS0_6parserIS3_EEE27getValueExpectedFlagDefaultEv", "llvm::cl::opt<(anonymous namespace)::RewriterName, false, llvm::cl::parser<(anonymous namespace)::RewriterName>>::getValueExpectedFlagDefault() const"}, + {"_ZNK4llvm2cl3optIN12_GLOBAL__N_112RewriterNameELb0ENS0_6parserIS3_EEE14getOptionWidthEv", "llvm::cl::opt<(anonymous namespace)::RewriterName, false, llvm::cl::parser<(anonymous namespace)::RewriterName>>::getOptionWidth() const"}, + {"_ZNK4llvm2cl3optIN12_GLOBAL__N_112RewriterNameELb0ENS0_6parserIS3_EEE15printOptionInfoEm", "llvm::cl::opt<(anonymous namespace)::RewriterName, false, llvm::cl::parser<(anonymous namespace)::RewriterName>>::printOptionInfo(unsigned long) const"}, + {"_ZN4llvm2cl3optIN12_GLOBAL__N_112RewriterNameELb0ENS0_6parserIS3_EEE19getExtraOptionNamesERNS_15SmallVectorImplIPKcEE", "llvm::cl::opt<(anonymous namespace)::RewriterName, false, llvm::cl::parser<(anonymous namespace)::RewriterName>>::getExtraOptionNames(llvm::SmallVectorImpl&)"}, + {"_ZN4llvm2cl3optIN12_GLOBAL__N_112RewriterNameELb0ENS0_6parserIS3_EEED0Ev", "llvm::cl::opt<(anonymous namespace)::RewriterName, false, llvm::cl::parser<(anonymous namespace)::RewriterName>>::~opt()"}, + {"_ZN4llvm2cl6parserIN12_GLOBAL__N_112RewriterNameEED1Ev", "llvm::cl::parser<(anonymous namespace)::RewriterName>::~parser()"}, + {"_ZN4llvm2cl6parserIN12_GLOBAL__N_112RewriterNameEED0Ev", "llvm::cl::parser<(anonymous namespace)::RewriterName>::~parser()"}, + {"_ZNK4llvm2cl6parserIN12_GLOBAL__N_112RewriterNameEE13getNumOptionsEv", "llvm::cl::parser<(anonymous namespace)::RewriterName>::getNumOptions() const"}, + {"_ZNK4llvm2cl6parserIN12_GLOBAL__N_112RewriterNameEE9getOptionEj", "llvm::cl::parser<(anonymous namespace)::RewriterName>::getOption(unsigned int) const"}, + {"_ZNK4llvm2cl6parserIN12_GLOBAL__N_112RewriterNameEE14getDescriptionEj", "llvm::cl::parser<(anonymous namespace)::RewriterName>::getDescription(unsigned int) const"}, + {"_ZN12_GLOBAL__N_115TrivialRewriterD1Ev", "(anonymous namespace)::TrivialRewriter::~TrivialRewriter()"}, + {"_ZN12_GLOBAL__N_115TrivialRewriterD0Ev", "(anonymous namespace)::TrivialRewriter::~TrivialRewriter()"}, + {"_ZN12_GLOBAL__N_115TrivialRewriter20runOnMachineFunctionERN4llvm15MachineFunctionERNS1_10VirtRegMapEPNS1_13LiveIntervalsE", "(anonymous namespace)::TrivialRewriter::runOnMachineFunction(llvm::MachineFunction&, llvm::VirtRegMap&, llvm::LiveIntervals*)"}, + {"_Z17substitutePhysRegRN4llvm14MachineOperandEjRKNS_18TargetRegisterInfoE", "substitutePhysReg(llvm::MachineOperand&, unsigned int, llvm::TargetRegisterInfo const&)"}, + {"_ZN12_GLOBAL__N_113LocalRewriterD1Ev", "(anonymous namespace)::LocalRewriter::~LocalRewriter()"}, + {"_ZN12_GLOBAL__N_113LocalRewriterD0Ev", "(anonymous namespace)::LocalRewriter::~LocalRewriter()"}, + {"_ZN12_GLOBAL__N_113LocalRewriter20runOnMachineFunctionERN4llvm15MachineFunctionERNS1_10VirtRegMapEPNS1_13LiveIntervalsE", "(anonymous namespace)::LocalRewriter::runOnMachineFunction(llvm::MachineFunction&, llvm::VirtRegMap&, llvm::LiveIntervals*)"}, + {"_ZN12_GLOBAL__N_113LocalRewriter10RewriteMBBEPN4llvm13LiveIntervalsERNS_15AvailableSpillsERNS1_9BitVectorERSt6vectorIPNS1_14MachineOperandESaISA_EE", "(anonymous namespace)::LocalRewriter::RewriteMBB(llvm::LiveIntervals*, (anonymous namespace)::AvailableSpills&, llvm::BitVector&, std::vector>&)"}, + {"_ZN12_GLOBAL__N_113LocalRewriter10EraseInstrEPN4llvm12MachineInstrE", "(anonymous namespace)::LocalRewriter::EraseInstr(llvm::MachineInstr*)"}, + {"_Z22ResurrectConfirmedKilljPKN4llvm18TargetRegisterInfoERNS_9BitVectorERSt6vectorIPNS_14MachineOperandESaIS7_EE", "ResurrectConfirmedKill(unsigned int, llvm::TargetRegisterInfo const*, llvm::BitVector&, std::vector>&)"}, + {"_ZN12_GLOBAL__N_115AvailableSpills18ClobberPhysRegOnlyEj", "(anonymous namespace)::AvailableSpills::ClobberPhysRegOnly(unsigned int)"}, + + // {"_Z15InvalidateKillsRN4llvm12MachineInstrEPKNS_18TargetRegisterInfoERNS_9BitVectorERSt6vectorIPNS_14MachineOperandESaIS9_EEPNS_11SmallVectorIjLj2EEE", + // "InvalidateKills(llvm::MachineInstr&, llvm::TargetRegisterInfo const*, llvm::BitVector&, std::vector>&, llvm::SmallVector*)"}, + // "InvalidateKills(llvm::MachineInstr&, llvm::TargetRegisterInfo const*, llvm::BitVector&, std::vector>&, llvm::SmallVector*)" was returned + + {"_ZN12_GLOBAL__N_115AvailableSpills22ModifyStackSlotOrReMatEi", "(anonymous namespace)::AvailableSpills::ModifyStackSlotOrReMat(int)"}, + {"_ZN12_GLOBAL__N_115AvailableSpills12addAvailableEijb", "(anonymous namespace)::AvailableSpills::addAvailable(int, unsigned int, bool)"}, + {"_Z11UpdateKillsRN4llvm12MachineInstrEPKNS_18TargetRegisterInfoERNS_9BitVectorERSt6vectorIPNS_14MachineOperandESaIS9_EE", "UpdateKills(llvm::MachineInstr&, llvm::TargetRegisterInfo const*, llvm::BitVector&, std::vector>&)"}, + {"_Z14isSafeToDeleteRN4llvm12MachineInstrE", "isSafeToDelete(llvm::MachineInstr&)"}, + {"_Z13ResurrectKillRN4llvm12MachineInstrEjPKNS_18TargetRegisterInfoERNS_9BitVectorERSt6vectorIPNS_14MachineOperandESaIS9_EE", "ResurrectKill(llvm::MachineInstr&, unsigned int, llvm::TargetRegisterInfo const*, llvm::BitVector&, std::vector>&)"}, + + // {"_ZN12_GLOBAL__N_19ReuseInfo15GetRegForReloadEPKN4llvm19TargetRegisterClassEjRNS1_15MachineFunctionEPNS1_12MachineInstrERNS_15AvailableSpillsERSt6vectorIS8_SaIS8_EERNS1_8SmallSetIjLj8EEERNS1_9BitVectorERSB_IPNS1_14MachineOperandESaISL_EERNS1_10VirtRegMapE", + // "(anonymous namespace)::ReuseInfo::GetRegForReload(llvm::TargetRegisterClass const*, unsigned int, llvm::MachineFunction&, llvm::MachineInstr*, (anonymous namespace)::AvailableSpills&, std::vector>&, llvm::SmallSet&, llvm::BitVector&, std::vector>&, llvm::VirtRegMap&)"}, + // "(anonymous namespace)::ReuseInfo::GetRegForReload(llvm::TargetRegisterClass const*, unsigned int, llvm::MachineFunction&, llvm::MachineInstr*, (anonymous namespace)::AvailableSpills&, std::vector>&, llvm::SmallSet&, llvm::BitVector&, std::vector&>, llvm::VirtRegMap&)" was returned + + {"_Z16ComputeReloadLocN4llvm14ilist_iteratorINS_12MachineInstrEEES2_jPKNS_18TargetRegisterInfoEbiPKNS_15TargetInstrInfoERKNS_15MachineFunctionE", "ComputeReloadLoc(llvm::ilist_iterator, llvm::ilist_iterator, unsigned int, llvm::TargetRegisterInfo const*, bool, int, llvm::TargetInstrInfo const*, llvm::MachineFunction const&)"}, + {"_Z13ReMaterializeRN4llvm17MachineBasicBlockERNS_14ilist_iteratorINS_12MachineInstrEEEjjPKNS_15TargetInstrInfoEPKNS_18TargetRegisterInfoERNS_10VirtRegMapE", "ReMaterialize(llvm::MachineBasicBlock&, llvm::ilist_iterator&, unsigned int, unsigned int, llvm::TargetInstrInfo const*, llvm::TargetRegisterInfo const*, llvm::VirtRegMap&)"}, + + // {"_ZSt16__introsort_loopIPSt4pairIPN4llvm12MachineInstrEiElN12_GLOBAL__N_19RefSorterEEvT_S8_T0_T1_", + // "void std::__introsort_loop*, long, (anonymous namespace)::RefSorter>(std::pair*, std::pair*, long, (anonymous namespace)::RefSorter)"}, + // got error + + + // {"_ZSt16__insertion_sortIPSt4pairIPN4llvm12MachineInstrEiEN12_GLOBAL__N_19RefSorterEEvT_S8_T0_", + // "void std::__insertion_sort*, (anonymous namespace)::RefSorter>(std::pair*, std::pair*, (anonymous namespace)::RefSorter)"}, + // got error + + {"_ZN12_GLOBAL__N_115AvailableSpills26disallowClobberPhysRegOnlyEj", "(anonymous namespace)::AvailableSpills::disallowClobberPhysRegOnly(unsigned int)"}, + {"_Z20FoldsStackSlotModRefRN4llvm12MachineInstrEijPKNS_15TargetInstrInfoEPKNS_18TargetRegisterInfoERNS_10VirtRegMapE", "FoldsStackSlotModRef(llvm::MachineInstr&, int, unsigned int, llvm::TargetInstrInfo const*, llvm::TargetRegisterInfo const*, llvm::VirtRegMap&)"}, + + // {"_ZN4llvm8DenseMapIiNS_11SmallVectorIPNS_12MachineInstrELj4EEENS_12DenseMapInfoIiEENS5_IS4_EEE5clearEv", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::clear()"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::clear()" was returned + + {"_ZNSt8_Rb_treeIiSt4pairIKijESt10_Select1stIS2_ESt4lessIiESaIS2_EE8_M_eraseEPSt13_Rb_tree_nodeIS2_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZNSt8_Rb_treeIjSt4pairIKjiESt10_Select1stIS2_ESt4lessIjESaIS2_EE8_M_eraseEPSt13_Rb_tree_nodeIS2_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + + // {"_ZN4llvm8DenseMapIiNS_11SmallVectorIPNS_12MachineInstrELj4EEENS_12DenseMapInfoIiEENS5_IS4_EEE16shrink_and_clearEv", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::shrink_and_clear()"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::shrink_and_clear()" was returned + + + // {"_ZN4llvm8DenseMapIiNS_11SmallVectorIPNS_12MachineInstrELj4EEENS_12DenseMapInfoIiEENS5_IS4_EEE16FindAndConstructERKi", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::FindAndConstruct(int const&)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::FindAndConstruct(int const&)" was returned + + + // {"_ZN4llvm8DenseMapIiNS_11SmallVectorIPNS_12MachineInstrELj4EEENS_12DenseMapInfoIiEENS5_IS4_EEE16InsertIntoBucketERKiRKS4_PSt4pairIiS4_E", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(int const&, llvm::SmallVector const&, std::pair>*)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(int const&, llvm::SmallVector const&, std::pair>*)" was returned + + + // {"_ZN4llvm8DenseMapIiNS_11SmallVectorIPNS_12MachineInstrELj4EEENS_12DenseMapInfoIiEENS5_IS4_EEE4growEj", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)" was returned + + {"_ZNSt8_Rb_treeIiSt4pairIKijESt10_Select1stIS2_ESt4lessIiESaIS2_EE5eraseESt17_Rb_tree_iteratorIS2_ESA_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::erase(std::_Rb_tree_iterator>, std::_Rb_tree_iterator>)"}, + + // {"_ZN4llvm8SmallSetIiLj2EE6insertERKi", + // "llvm::SmallSet::insert(int const&)"}, + // "llvm::SmallSet::insert(int const&)" was returned + + {"_ZNSt8_Rb_treeIiSt4pairIKijESt10_Select1stIS2_ESt4lessIiESaIS2_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS2_ERKS2_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIiSt4pairIKijESt10_Select1stIS2_ESt4lessIiESaIS2_EE16_M_insert_uniqueERKS2_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + + // {"_ZN4llvm8SmallSetIjLj2EE6insertERKj", + // "llvm::SmallSet::insert(unsigned int const&)"}, + // "llvm::SmallSet::insert(unsigned int const&)" was returned + + + // {"_ZNSt8_Rb_treeIPN4llvm12MachineInstrESt4pairIKS2_St6vectorIS3_IjbESaIS6_EEESt10_Select1stIS9_ESt4lessIS2_ESaIS9_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS9_ERKS9_", + // "std::_Rb_tree, std::allocator>>>, std::_Select1st, std::allocator>>>>, std::less, std::allocator, std::allocator>>>>>::_M_insert_unique(std::_Rb_tree_iterator, std::allocator>>>>, std::pair, std::allocator>>> const&)"}, + // "std::_Rb_tree, std::allocator<>>>, std::_Select1st, std::allocator<>>>>, std::less, std::allocator, std::allocator<>>>>>::_M_insert_unique(std::_Rb_tree_iterator, std::allocator<>>>>, std::pair, std::allocator<>>> const&)" was returned + + + // {"_ZN4llvm8SmallSetIiLj4EE6insertERKi", + // "llvm::SmallSet::insert(int const&)"}, + // "llvm::SmallSet::insert(int const&)" was returned + + {"_ZNSt6vectorIPN4llvm14MachineOperandESaIS2_EE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPS2_S4_EEmRKS2_", "std::vector>::_M_fill_insert(__gnu_cxx::__normal_iterator>>, unsigned long, llvm::MachineOperand* const&)"}, + {"_ZN4llvm18initializeADCEPassERNS_12PassRegistryE", "llvm::initializeADCEPass(llvm::PassRegistry&)"}, + {"_ZN4llvm23createAggressiveDCEPassEv", "llvm::createAggressiveDCEPass()"}, + {"_ZN12_GLOBAL__N_14ADCED1Ev", "(anonymous namespace)::ADCE::~ADCE()"}, + {"_ZN12_GLOBAL__N_14ADCED0Ev", "(anonymous namespace)::ADCE::~ADCE()"}, + {"_ZNK12_GLOBAL__N_14ADCE16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::ADCE::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_14ADCE13runOnFunctionERN4llvm8FunctionE", "(anonymous namespace)::ADCE::runOnFunction(llvm::Function&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_14ADCEEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::ADCE>()"}, + {"_ZN4llvm28initializeCodeGenPreparePassERNS_12PassRegistryE", "llvm::initializeCodeGenPreparePass(llvm::PassRegistry&)"}, + {"_ZN4llvm24createCodeGenPreparePassEPKNS_14TargetLoweringE", "llvm::createCodeGenPreparePass(llvm::TargetLowering const*)"}, + {"_ZN12_GLOBAL__N_114CodeGenPrepareC1EPKN4llvm14TargetLoweringE", "(anonymous namespace)::CodeGenPrepare::CodeGenPrepare(llvm::TargetLowering const*)"}, + {"_ZN12_GLOBAL__N_114CodeGenPrepareD1Ev", "(anonymous namespace)::CodeGenPrepare::~CodeGenPrepare()"}, + {"_ZN12_GLOBAL__N_114CodeGenPrepareD0Ev", "(anonymous namespace)::CodeGenPrepare::~CodeGenPrepare()"}, + {"_ZNK12_GLOBAL__N_114CodeGenPrepare16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::CodeGenPrepare::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_114CodeGenPrepare13releaseMemoryEv", "(anonymous namespace)::CodeGenPrepare::releaseMemory()"}, + {"_ZN12_GLOBAL__N_114CodeGenPrepare13runOnFunctionERN4llvm8FunctionE", "(anonymous namespace)::CodeGenPrepare::runOnFunction(llvm::Function&)"}, + {"_ZN12_GLOBAL__N_114CodeGenPrepare12OptimizeInstEPN4llvm11InstructionE", "(anonymous namespace)::CodeGenPrepare::OptimizeInst(llvm::Instruction*)"}, + {"_ZN12_GLOBAL__N_114CodeGenPrepare18OptimizeMemoryInstEPN4llvm11InstructionEPNS1_5ValueEPKNS1_4TypeE", "(anonymous namespace)::CodeGenPrepare::OptimizeMemoryInst(llvm::Instruction*, llvm::Value*, llvm::Type const*)"}, + {"_ZN12_GLOBAL__N_131CodeGenPrepareFortifiedLibCallsD1Ev", "(anonymous namespace)::CodeGenPrepareFortifiedLibCalls::~CodeGenPrepareFortifiedLibCalls()"}, + {"_ZN12_GLOBAL__N_131CodeGenPrepareFortifiedLibCalls11replaceCallEPN4llvm5ValueE", "(anonymous namespace)::CodeGenPrepareFortifiedLibCalls::replaceCall(llvm::Value*)"}, + {"_ZNK12_GLOBAL__N_131CodeGenPrepareFortifiedLibCalls10isFoldableEjjb", "(anonymous namespace)::CodeGenPrepareFortifiedLibCalls::isFoldable(unsigned int, unsigned int, bool) const"}, + {"_ZN12_GLOBAL__N_131CodeGenPrepareFortifiedLibCallsD0Ev", "(anonymous namespace)::CodeGenPrepareFortifiedLibCalls::~CodeGenPrepareFortifiedLibCalls()"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_114CodeGenPrepareEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::CodeGenPrepare>()"}, + {"_ZN4llvm8DenseMapIPNS_5ValueES2_NS_12DenseMapInfoIS2_EES4_E16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm8DenseMapIPNS_5ValueES2_NS_12DenseMapInfoIS2_EES4_E16InsertIntoBucketERKS2_S7_PSt4pairIS2_S2_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::Value* const&, llvm::Value* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_5ValueES2_NS_12DenseMapInfoIS2_EES4_E4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm15SmallVectorImplIPNS_11InstructionEEaSERKS3_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + {"_ZN4llvm8DenseMapIPNS_10BasicBlockEPNS_7CmpInstENS_12DenseMapInfoIS2_EENS5_IS4_EEE16InsertIntoBucketERKS2_RKS4_PSt4pairIS2_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::BasicBlock* const&, llvm::CmpInst* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_10BasicBlockEPNS_7CmpInstENS_12DenseMapInfoIS2_EENS5_IS4_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPNS_10BasicBlockEPNS_11InstructionENS_12DenseMapInfoIS2_EENS5_IS4_EEE16InsertIntoBucketERKS2_RKS4_PSt4pairIS2_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::BasicBlock* const&, llvm::Instruction* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_10BasicBlockEPNS_11InstructionENS_12DenseMapInfoIS2_EENS5_IS4_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPNS_10BasicBlockEPNS_8CastInstENS_12DenseMapInfoIS2_EENS5_IS4_EEE16InsertIntoBucketERKS2_RKS4_PSt4pairIS2_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::BasicBlock* const&, llvm::CastInst* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_10BasicBlockEPNS_8CastInstENS_12DenseMapInfoIS2_EENS5_IS4_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + + // {"_ZNK4llvm8SmallSetISt4pairIPKNS_10BasicBlockES4_ELj8EE5countERKS5_", + // "llvm::SmallSet, 8u>::count(std::pair const&) const"}, + // "llvm::SmallSet, 8>::count(std::pair const&) const" was returned + + + // {"_ZN4llvm8SmallSetISt4pairIPKNS_10BasicBlockES4_ELj8EE6insertERKS5_", + // "llvm::SmallSet, 8u>::insert(std::pair const&)"}, + // "llvm::SmallSet, 8>::insert(std::pair const&)" was returned + + {"_ZNSt8_Rb_treeISt4pairIPKN4llvm10BasicBlockES4_ES5_St9_IdentityIS5_ESt4lessIS5_ESaIS5_EE16_M_insert_uniqueERKS5_", "std::_Rb_tree, std::pair, std::_Identity>, std::less>, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZNSt8_Rb_treeISt4pairIPKN4llvm10BasicBlockES4_ES5_St9_IdentityIS5_ESt4lessIS5_ESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E", "std::_Rb_tree, std::pair, std::_Identity>, std::less>, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZN4llvm40initializeCorrelatedValuePropagationPassERNS_12PassRegistryE", "llvm::initializeCorrelatedValuePropagationPass(llvm::PassRegistry&)"}, + {"_ZN4llvm36createCorrelatedValuePropagationPassEv", "llvm::createCorrelatedValuePropagationPass()"}, + {"_ZN12_GLOBAL__N_126CorrelatedValuePropagationD1Ev", "(anonymous namespace)::CorrelatedValuePropagation::~CorrelatedValuePropagation()"}, + {"_ZN12_GLOBAL__N_126CorrelatedValuePropagationD0Ev", "(anonymous namespace)::CorrelatedValuePropagation::~CorrelatedValuePropagation()"}, + {"_ZNK12_GLOBAL__N_126CorrelatedValuePropagation16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::CorrelatedValuePropagation::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_126CorrelatedValuePropagation13runOnFunctionERN4llvm8FunctionE", "(anonymous namespace)::CorrelatedValuePropagation::runOnFunction(llvm::Function&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_126CorrelatedValuePropagationEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::CorrelatedValuePropagation>()"}, + {"_ZN4llvm17initializeDSEPassERNS_12PassRegistryE", "llvm::initializeDSEPass(llvm::PassRegistry&)"}, + {"_ZN4llvm30createDeadStoreEliminationPassEv", "llvm::createDeadStoreEliminationPass()"}, + {"_ZN12_GLOBAL__N_13DSED1Ev", "(anonymous namespace)::DSE::~DSE()"}, + {"_ZN12_GLOBAL__N_13DSED0Ev", "(anonymous namespace)::DSE::~DSE()"}, + {"_ZNK12_GLOBAL__N_13DSE16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::DSE::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_13DSE13runOnFunctionERN4llvm8FunctionE", "(anonymous namespace)::DSE::runOnFunction(llvm::Function&)"}, + + // {"_Z21DeleteDeadInstructionPN4llvm11InstructionERNS_24MemoryDependenceAnalysisEPNS_11SmallPtrSetIPNS_5ValueELj16EEE", + // "DeleteDeadInstruction(llvm::Instruction*, llvm::MemoryDependenceAnalysis&, llvm::SmallPtrSet*)"}, + // "DeleteDeadInstruction(llvm::Instruction*, llvm::MemoryDependenceAnalysis&, llvm::SmallPtrSet*)" was returned + + {"_Z14getLocForWritePN4llvm11InstructionERNS_13AliasAnalysisE", "getLocForWrite(llvm::Instruction*, llvm::AliasAnalysis&)"}, + {"_Z14getPointerSizePN4llvm5ValueERNS_13AliasAnalysisE", "getPointerSize(llvm::Value*, llvm::AliasAnalysis&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_13DSEEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::DSE>()"}, + {"_ZN4llvm18createEarlyCSEPassEv", "llvm::createEarlyCSEPass()"}, + {"_ZN4llvm22initializeEarlyCSEPassERNS_12PassRegistryE", "llvm::initializeEarlyCSEPass(llvm::PassRegistry&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_18EarlyCSEEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::EarlyCSE>()"}, + {"_ZN12_GLOBAL__N_18EarlyCSED1Ev", "(anonymous namespace)::EarlyCSE::~EarlyCSE()"}, + {"_ZN12_GLOBAL__N_18EarlyCSED0Ev", "(anonymous namespace)::EarlyCSE::~EarlyCSE()"}, + {"_ZNK12_GLOBAL__N_18EarlyCSE16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::EarlyCSE::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_18EarlyCSE13runOnFunctionERN4llvm8FunctionE", "(anonymous namespace)::EarlyCSE::runOnFunction(llvm::Function&)"}, + {"_ZN12_GLOBAL__N_18EarlyCSE11processNodeEPN4llvm15DomTreeNodeBaseINS1_10BasicBlockEEE", "(anonymous namespace)::EarlyCSE::processNode(llvm::DomTreeNodeBase*)"}, + {"_ZN4llvm8DenseMapIN12_GLOBAL__N_111SimpleValueEPNS_18ScopedHashTableValIS2_PNS_5ValueEEENS_12DenseMapInfoIS2_EENS8_IS7_EEEixERKS2_", "llvm::DenseMap<(anonymous namespace)::SimpleValue, llvm::ScopedHashTableVal<(anonymous namespace)::SimpleValue, llvm::Value*>*, llvm::DenseMapInfo<(anonymous namespace)::SimpleValue>, llvm::DenseMapInfo*>>::operator[]((anonymous namespace)::SimpleValue const&)"}, + {"_ZNK4llvm8DenseMapIN12_GLOBAL__N_111SimpleValueEPNS_18ScopedHashTableValIS2_PNS_5ValueEEENS_12DenseMapInfoIS2_EENS8_IS7_EEE15LookupBucketForERKS2_RPSt4pairIS2_S7_E", "llvm::DenseMap<(anonymous namespace)::SimpleValue, llvm::ScopedHashTableVal<(anonymous namespace)::SimpleValue, llvm::Value*>*, llvm::DenseMapInfo<(anonymous namespace)::SimpleValue>, llvm::DenseMapInfo*>>::LookupBucketFor((anonymous namespace)::SimpleValue const&, std::pair<(anonymous namespace)::SimpleValue, llvm::ScopedHashTableVal<(anonymous namespace)::SimpleValue, llvm::Value*>*>*&) const"}, + {"_ZN4llvm8DenseMapIN12_GLOBAL__N_19CallValueEPNS_18ScopedHashTableValIS2_St4pairIPNS_5ValueEjEEENS_12DenseMapInfoIS2_EENSA_IS9_EEEixERKS2_", "llvm::DenseMap<(anonymous namespace)::CallValue, llvm::ScopedHashTableVal<(anonymous namespace)::CallValue, std::pair>*, llvm::DenseMapInfo<(anonymous namespace)::CallValue>, llvm::DenseMapInfo>*>>::operator[]((anonymous namespace)::CallValue const&)"}, + + // {"_ZNK4llvm8DenseMapIN12_GLOBAL__N_19CallValueEPNS_18ScopedHashTableValIS2_St4pairIPNS_5ValueEjEEENS_12DenseMapInfoIS2_EENSA_IS9_EEE15LookupBucketForERKS2_RPS4_IS2_S9_E", + // "llvm::DenseMap<(anonymous namespace)::CallValue, llvm::ScopedHashTableVal<(anonymous namespace)::CallValue, std::pair>*, llvm::DenseMapInfo<(anonymous namespace)::CallValue>, llvm::DenseMapInfo>*>>::LookupBucketFor((anonymous namespace)::CallValue const&, std::pair<(anonymous namespace)::CallValue, llvm::ScopedHashTableVal<(anonymous namespace)::CallValue, std::pair>*>*&) const"}, + // "llvm::DenseMap<(anonymous namespace)::CallValue, llvm::ScopedHashTableVal<(anonymous namespace)::CallValue, std::pair>*, llvm::DenseMapInfo<(anonymous namespace)::CallValue>, llvm::DenseMapInfo>*>>::LookupBucketFor((anonymous namespace)::CallValue const&, std::pair*&<(anonymous namespace)::CallValue, llvm::ScopedHashTableVal<(anonymous namespace)::CallValue, std::pair>*>) const" was returned + + + // {"_ZN4llvm15ScopedHashTableIPNS_5ValueESt4pairIS2_jENS_12DenseMapInfoIS2_EENS_18RecyclingAllocatorINS_16BumpPtrAllocatorENS_18ScopedHashTableValIS2_S4_EELm40ELm8EEEED2Ev", + // "llvm::ScopedHashTable, llvm::DenseMapInfo, llvm::RecyclingAllocator>, 40ul, 8ul>>::~ScopedHashTable()"}, + // "llvm::ScopedHashTable, llvm::DenseMapInfo, llvm::RecyclingAllocator>, 40, 8>>::~ScopedHashTable()" was returned + + + // {"_ZN4llvm15ScopedHashTableIPNS_5ValueESt4pairIS2_jENS_12DenseMapInfoIS2_EENS_18RecyclingAllocatorINS_16BumpPtrAllocatorENS_18ScopedHashTableValIS2_S4_EELm40ELm8EEEE6insertERKS2_RKS4_", + // "llvm::ScopedHashTable, llvm::DenseMapInfo, llvm::RecyclingAllocator>, 40ul, 8ul>>::insert(llvm::Value* const&, std::pair const&)"}, + // "llvm::ScopedHashTable, llvm::DenseMapInfo, llvm::RecyclingAllocator>, 40, 8>>::insert(llvm::Value* const&, std::pair const&)" was returned + + + // {"_ZN4llvm20ScopedHashTableScopeIPNS_5ValueESt4pairIS2_jENS_12DenseMapInfoIS2_EENS_18RecyclingAllocatorINS_16BumpPtrAllocatorENS_18ScopedHashTableValIS2_S4_EELm40ELm8EEEED2Ev", + // "llvm::ScopedHashTableScope, llvm::DenseMapInfo, llvm::RecyclingAllocator>, 40ul, 8ul>>::~ScopedHashTableScope()"}, + // "llvm::ScopedHashTableScope, llvm::DenseMapInfo, llvm::RecyclingAllocator>, 40, 8>>::~ScopedHashTableScope()" was returned + + + // {"_ZN4llvm8DenseMapIPNS_5ValueEPNS_18ScopedHashTableValIS2_St4pairIS2_jEEENS_12DenseMapInfoIS2_EENS8_IS7_EEE16InsertIntoBucketERKS2_RKS7_PS4_IS2_S7_E", + // "llvm::DenseMap>*, llvm::DenseMapInfo, llvm::DenseMapInfo>*>>::InsertIntoBucket(llvm::Value* const&, llvm::ScopedHashTableVal>* const&, std::pair>*>*)"}, + // "llvm::DenseMap>*, llvm::DenseMapInfo, llvm::DenseMapInfo>*>>::InsertIntoBucket(llvm::Value* const&, llvm::ScopedHashTableVal>* const&, std::pair*>*>)" was returned + + {"_ZN4llvm8DenseMapIPNS_5ValueEPNS_18ScopedHashTableValIS2_St4pairIS2_jEEENS_12DenseMapInfoIS2_EENS8_IS7_EEE4growEj", "llvm::DenseMap>*, llvm::DenseMapInfo, llvm::DenseMapInfo>*>>::grow(unsigned int)"}, + {"_ZN4llvm25initializeGEPSplitterPassERNS_12PassRegistryE", "llvm::initializeGEPSplitterPass(llvm::PassRegistry&)"}, + {"_ZN4llvm21createGEPSplitterPassEv", "llvm::createGEPSplitterPass()"}, + {"_ZN12_GLOBAL__N_111GEPSplitterD1Ev", "(anonymous namespace)::GEPSplitter::~GEPSplitter()"}, + {"_ZN12_GLOBAL__N_111GEPSplitterD0Ev", "(anonymous namespace)::GEPSplitter::~GEPSplitter()"}, + {"_ZNK12_GLOBAL__N_111GEPSplitter16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::GEPSplitter::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_111GEPSplitter13runOnFunctionERN4llvm8FunctionE", "(anonymous namespace)::GEPSplitter::runOnFunction(llvm::Function&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_111GEPSplitterEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::GEPSplitter>()"}, + {"_ZN4llvm13createGVNPassEb", "llvm::createGVNPass(bool)"}, + {"_ZN12_GLOBAL__N_13GVNC1Eb", "(anonymous namespace)::GVN::GVN(bool)"}, + {"_ZN4llvm17initializeGVNPassERNS_12PassRegistryE", "llvm::initializeGVNPass(llvm::PassRegistry&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_13GVNEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::GVN>()"}, + {"_ZN12_GLOBAL__N_13GVND1Ev", "(anonymous namespace)::GVN::~GVN()"}, + {"_ZN12_GLOBAL__N_13GVND0Ev", "(anonymous namespace)::GVN::~GVN()"}, + {"_ZNK12_GLOBAL__N_13GVN16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::GVN::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_13GVN13runOnFunctionERN4llvm8FunctionE", "(anonymous namespace)::GVN::runOnFunction(llvm::Function&)"}, + {"_ZN12_GLOBAL__N_13GVN17cleanupGlobalSetsEv", "(anonymous namespace)::GVN::cleanupGlobalSets()"}, + {"_ZN12_GLOBAL__N_13GVN10findLeaderEPN4llvm10BasicBlockEj", "(anonymous namespace)::GVN::findLeader(llvm::BasicBlock*, unsigned int)"}, + {"_ZN4llvm8DenseMapIjN12_GLOBAL__N_13GVN16LeaderTableEntryENS_12DenseMapInfoIjEENS4_IS3_EEEixERKj", "llvm::DenseMap, llvm::DenseMapInfo<(anonymous namespace)::GVN::LeaderTableEntry>>::operator[](unsigned int const&)"}, + {"_ZN12_GLOBAL__N_13GVN18processInstructionEPN4llvm11InstructionERNS1_15SmallVectorImplIS3_EE", "(anonymous namespace)::GVN::processInstruction(llvm::Instruction*, llvm::SmallVectorImpl&)"}, + {"_ZN12_GLOBAL__N_110ValueTable13lookup_or_addEPN4llvm5ValueE", "(anonymous namespace)::ValueTable::lookup_or_add(llvm::Value*)"}, + {"_ZN12_GLOBAL__N_110ValueTable17create_expressionEPN4llvm11InstructionE", "(anonymous namespace)::ValueTable::create_expression(llvm::Instruction*)"}, + {"_ZN4llvm8DenseMapIN12_GLOBAL__N_110ExpressionEjNS_12DenseMapInfoIS2_EENS3_IjEEEixERKS2_", "llvm::DenseMap<(anonymous namespace)::Expression, unsigned int, llvm::DenseMapInfo<(anonymous namespace)::Expression>, llvm::DenseMapInfo>::operator[]((anonymous namespace)::Expression const&)"}, + {"_ZNK4llvm8DenseMapIN12_GLOBAL__N_110ExpressionEjNS_12DenseMapInfoIS2_EENS3_IjEEE15LookupBucketForERKS2_RPSt4pairIS2_jE", "llvm::DenseMap<(anonymous namespace)::Expression, unsigned int, llvm::DenseMapInfo<(anonymous namespace)::Expression>, llvm::DenseMapInfo>::LookupBucketFor((anonymous namespace)::Expression const&, std::pair<(anonymous namespace)::Expression, unsigned int>*&) const"}, + {"_Z30AnalyzeLoadFromClobberingStorePKN4llvm4TypeEPNS_5ValueEPNS_9StoreInstERKNS_10DataLayoutE", "AnalyzeLoadFromClobberingStore(llvm::Type const*, llvm::Value*, llvm::StoreInst*, llvm::DataLayout const&)"}, + {"_Z20GetStoreValueForLoadPN4llvm5ValueEjPKNS_4TypeEPNS_11InstructionERKNS_10DataLayoutE", "GetStoreValueForLoad(llvm::Value*, unsigned int, llvm::Type const*, llvm::Instruction*, llvm::DataLayout const&)"}, + {"_Z32AnalyzeLoadFromClobberingMemInstPKN4llvm4TypeEPNS_5ValueEPNS_12MemIntrinsicERKNS_10DataLayoutE", "AnalyzeLoadFromClobberingMemInst(llvm::Type const*, llvm::Value*, llvm::MemIntrinsic*, llvm::DataLayout const&)"}, + {"_Z22GetMemInstValueForLoadPN4llvm12MemIntrinsicEjPKNS_4TypeEPNS_11InstructionERKNS_10DataLayoutE", "GetMemInstValueForLoad(llvm::MemIntrinsic*, unsigned int, llvm::Type const*, llvm::Instruction*, llvm::DataLayout const&)"}, + {"_Z30CoerceAvailableValueToLoadTypePN4llvm5ValueEPKNS_4TypeEPNS_11InstructionERKNS_10DataLayoutE", "CoerceAvailableValueToLoadType(llvm::Value*, llvm::Type const*, llvm::Instruction*, llvm::DataLayout const&)"}, + {"_Z31CanCoerceMustAliasedValueToLoadPN4llvm5ValueEPKNS_4TypeERKNS_10DataLayoutE", "CanCoerceMustAliasedValueToLoad(llvm::Value*, llvm::Type const*, llvm::DataLayout const&)"}, + {"_ZN4llvm15SmallVectorImplIN12_GLOBAL__N_121AvailableValueInBlockEE9push_backERKS2_", "llvm::SmallVectorImpl<(anonymous namespace)::AvailableValueInBlock>::push_back((anonymous namespace)::AvailableValueInBlock const&)"}, + {"_Z22ConstructSSAForLoadSetPN4llvm8LoadInstERNS_15SmallVectorImplIN12_GLOBAL__N_121AvailableValueInBlockEEEPKNS_10DataLayoutERKNS_13DominatorTreeEPNS_13AliasAnalysisE", "ConstructSSAForLoadSet(llvm::LoadInst*, llvm::SmallVectorImpl<(anonymous namespace)::AvailableValueInBlock>&, llvm::DataLayout const*, llvm::DominatorTree const&, llvm::AliasAnalysis*)"}, + {"_Z28IsValueFullyAvailableInBlockPN4llvm10BasicBlockERNS_8DenseMapIS1_cNS_12DenseMapInfoIS1_EENS3_IcEEEE", "IsValueFullyAvailableInBlock(llvm::BasicBlock*, llvm::DenseMap, llvm::DenseMapInfo>&)"}, + {"_ZNK12_GLOBAL__N_121AvailableValueInBlock24MaterializeAdjustedValueEPKN4llvm4TypeEPKNS1_10DataLayoutE", "(anonymous namespace)::AvailableValueInBlock::MaterializeAdjustedValue(llvm::Type const*, llvm::DataLayout const*) const"}, + {"_Z30AnalyzeLoadFromClobberingWritePKN4llvm4TypeEPNS_5ValueES4_yRKNS_10DataLayoutE", "AnalyzeLoadFromClobberingWrite(llvm::Type const*, llvm::Value*, llvm::Value*, unsigned long long, llvm::DataLayout const&)"}, + {"_ZN4llvm8DenseMapIPNS_5ValueEjNS_12DenseMapInfoIS2_EENS3_IjEEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm7PHINode11addIncomingEPNS_5ValueEPNS_10BasicBlockE", "llvm::PHINode::addIncoming(llvm::Value*, llvm::BasicBlock*)"}, + + // {"_ZN4llvm11df_iteratorIPNS_10BasicBlockENS_11SmallPtrSetIS2_Lj8EEELb0ENS_11GraphTraitsIS2_EEE6toNextEv", + // "llvm::df_iterator, false, llvm::GraphTraits>::toNext()"}, + // "llvm::df_iterator, false, llvm::GraphTraits>::toNext()" was returned + + + // {"_ZNSt6vectorISt4pairIN4llvm14PointerIntPairIPNS1_10BasicBlockELj1EjNS1_21PointerLikeTypeTraitsIS4_EEEENS1_12SuccIteratorIPNS1_14TerminatorInstES3_EEESaISC_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPSC_SE_EERKSC_", + // "std::vector>, llvm::SuccIterator>, std::allocator>, llvm::SuccIterator>>>::_M_insert_aux(__gnu_cxx::__normal_iterator>, llvm::SuccIterator>*, std::vector>, llvm::SuccIterator>, std::allocator>, llvm::SuccIterator>>>>, std::pair>, llvm::SuccIterator> const&)"}, + // "std::vector>, llvm::SuccIterator>, std::allocator>, llvm::SuccIterator>>>::_M_insert_aux(__gnu_cxx::__normal_iterator>, llvm::SuccIterator>*, std::vector>, llvm::SuccIterator>, std::allocator>, llvm::SuccIterator>>>>, std::pair>, llvm::SuccIterator> const&)" was returned + + {"_ZN4llvm8DenseMapIPNS_5ValueEjNS_12DenseMapInfoIS2_EENS3_IjEEE6insertERKSt4pairIS2_jE", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPNS_5ValueEjNS_12DenseMapInfoIS2_EENS3_IjEEE16InsertIntoBucketERKS2_RKjPSt4pairIS2_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::Value* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_5ValueEjNS_12DenseMapInfoIS2_EENS3_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPNS_10BasicBlockEPNS_5ValueENS_12DenseMapInfoIS2_EENS5_IS4_EEE16InsertIntoBucketERKS2_RKS4_PSt4pairIS2_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::BasicBlock* const&, llvm::Value* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_10BasicBlockEPNS_5ValueENS_12DenseMapInfoIS2_EENS5_IS4_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm23SmallVectorTemplateBaseISt4pairIPNS_15DomTreeNodeBaseINS_10BasicBlockEEEN9__gnu_cxx17__normal_iteratorIPS5_St6vectorIS5_SaIS5_EEEEELb0EE4growEm", "llvm::SmallVectorTemplateBase*, __gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>>, false>::grow(unsigned long)"}, + {"_ZN4llvm8DenseMapIPNS_10BasicBlockEPNS_5ValueENS_12DenseMapInfoIS2_EENS5_IS4_EEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + + // {"_ZN4llvm11df_iteratorIPNS_15DomTreeNodeBaseINS_10BasicBlockEEENS_11SmallPtrSetIS4_Lj8EEELb0ENS_11GraphTraitsIS4_EEE6toNextEv", + // "llvm::df_iterator*, llvm::SmallPtrSet*, 8u>, false, llvm::GraphTraits*>>::toNext()"}, + // "llvm::df_iterator*, llvm::SmallPtrSet*, 8>, false, llvm::GraphTraits*>>::toNext()" was returned + + + // {"_ZNSt6vectorISt4pairIN4llvm14PointerIntPairIPNS1_15DomTreeNodeBaseINS1_10BasicBlockEEELj1EjNS1_21PointerLikeTypeTraitsIS6_EEEEN9__gnu_cxx17__normal_iteratorIPS6_S_IS6_SaIS6_EEEEESaISG_EE13_M_insert_auxENSB_IPSG_SI_EERKSG_", + // "std::vector*, 1u, unsigned int, llvm::PointerLikeTypeTraits*>>, __gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>>, std::allocator*, 1u, unsigned int, llvm::PointerLikeTypeTraits*>>, __gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>>>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, 1u, unsigned int, llvm::PointerLikeTypeTraits*>>, __gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>>*, std::vector*, 1u, unsigned int, llvm::PointerLikeTypeTraits*>>, __gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>>, std::allocator*, 1u, unsigned int, llvm::PointerLikeTypeTraits*>>, __gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>>>>>, std::pair*, 1u, unsigned int, llvm::PointerLikeTypeTraits*>>, __gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>> const&)"}, + // "std::vector*, 1, unsigned int, llvm::PointerLikeTypeTraits*>>, __gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>>, std::allocator*, 1, unsigned int, llvm::PointerLikeTypeTraits*>>, __gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>>>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, 1, unsigned int, llvm::PointerLikeTypeTraits*>>, __gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>>*, std::vector*, 1, unsigned int, llvm::PointerLikeTypeTraits*>>, __gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>>, std::allocator*, 1, unsigned int, llvm::PointerLikeTypeTraits*>>, __gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>>>>>, std::pair*, 1, unsigned int, llvm::PointerLikeTypeTraits*>>, __gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>> const&)" was returned + + {"_ZN4llvm8DenseMapIPNS_10BasicBlockEcNS_12DenseMapInfoIS2_EENS3_IcEEE6insertERKSt4pairIS2_cE", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPNS_10BasicBlockEcNS_12DenseMapInfoIS2_EENS3_IcEEE16InsertIntoBucketERKS2_RKcPSt4pairIS2_cE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::BasicBlock* const&, char const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_10BasicBlockEcNS_12DenseMapInfoIS2_EENS3_IcEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEE8CreateOrEPNS_5ValueES6_RKNS_5TwineE", "llvm::IRBuilder>::CreateOr(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEE9CreateShlEPNS_5ValueES6_RKNS_5TwineE", "llvm::IRBuilder>::CreateShl(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEE10CreateCastENS_11Instruction7CastOpsEPNS_5ValueEPKNS_4TypeERKNS_5TwineE", "llvm::IRBuilder>::CreateCast(llvm::Instruction::CastOps, llvm::Value*, llvm::Type const*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEE10CreateLShrEPNS_5ValueES6_RKNS_5TwineEb", "llvm::IRBuilder>::CreateLShr(llvm::Value*, llvm::Value*, llvm::Twine const&, bool)"}, + {"_ZN4llvm28initializeIndVarSimplifyPassERNS_12PassRegistryE", "llvm::initializeIndVarSimplifyPass(llvm::PassRegistry&)"}, + {"_ZN4llvm24createIndVarSimplifyPassEv", "llvm::createIndVarSimplifyPass()"}, + {"_ZN12_GLOBAL__N_114IndVarSimplifyD1Ev", "(anonymous namespace)::IndVarSimplify::~IndVarSimplify()"}, + {"_ZN12_GLOBAL__N_114IndVarSimplifyD0Ev", "(anonymous namespace)::IndVarSimplify::~IndVarSimplify()"}, + {"_ZNK12_GLOBAL__N_114IndVarSimplify16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::IndVarSimplify::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_114IndVarSimplify9runOnLoopEPN4llvm4LoopERNS1_13LPPassManagerE", "(anonymous namespace)::IndVarSimplify::runOnLoop(llvm::Loop*, llvm::LPPassManager&)"}, + {"_Z6isSafePKN4llvm4SCEVEPKNS_4LoopEPNS_15ScalarEvolutionE", "isSafe(llvm::SCEV const*, llvm::Loop const*, llvm::ScalarEvolution*)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_114IndVarSimplifyEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::IndVarSimplify>()"}, + {"_ZN4llvm27initializeJumpThreadingPassERNS_12PassRegistryE", "llvm::initializeJumpThreadingPass(llvm::PassRegistry&)"}, + {"_ZN4llvm23createJumpThreadingPassEv", "llvm::createJumpThreadingPass()"}, + {"_ZN12_GLOBAL__N_113JumpThreadingC1Ev", "(anonymous namespace)::JumpThreading::JumpThreading()"}, + {"_ZN12_GLOBAL__N_113JumpThreadingD1Ev", "(anonymous namespace)::JumpThreading::~JumpThreading()"}, + {"_ZN12_GLOBAL__N_113JumpThreadingD0Ev", "(anonymous namespace)::JumpThreading::~JumpThreading()"}, + {"_ZNK12_GLOBAL__N_113JumpThreading16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::JumpThreading::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_113JumpThreading13runOnFunctionERN4llvm8FunctionE", "(anonymous namespace)::JumpThreading::runOnFunction(llvm::Function&)"}, + {"_Z25GetBestDestForJumpOnUndefPN4llvm10BasicBlockE", "GetBestDestForJumpOnUndef(llvm::BasicBlock*)"}, + {"_ZN12_GLOBAL__N_113JumpThreading22ProcessThreadableEdgesEPN4llvm5ValueEPNS1_10BasicBlockENS_18ConstantPreferenceE", "(anonymous namespace)::JumpThreading::ProcessThreadableEdges(llvm::Value*, llvm::BasicBlock*, (anonymous namespace)::ConstantPreference)"}, + {"_ZN12_GLOBAL__N_113JumpThreading31ComputeValueKnownInPredecessorsEPN4llvm5ValueEPNS1_10BasicBlockERNS1_15SmallVectorImplISt4pairIPNS1_8ConstantES5_EEENS_18ConstantPreferenceE", "(anonymous namespace)::JumpThreading::ComputeValueKnownInPredecessors(llvm::Value*, llvm::BasicBlock*, llvm::SmallVectorImpl>&, (anonymous namespace)::ConstantPreference)"}, + {"_ZN12_GLOBAL__N_113JumpThreading32DuplicateCondBranchOnPHIIntoPredEPN4llvm10BasicBlockERKNS1_15SmallVectorImplIS3_EE", "(anonymous namespace)::JumpThreading::DuplicateCondBranchOnPHIIntoPred(llvm::BasicBlock*, llvm::SmallVectorImpl const&)"}, + {"_Z28getJumpThreadDuplicationCostPKN4llvm10BasicBlockE", "getJumpThreadDuplicationCost(llvm::BasicBlock const*)"}, + {"_Z31AddPHINodeEntriesForMappedBlockPN4llvm10BasicBlockES1_S1_RNS_8DenseMapIPNS_11InstructionEPNS_5ValueENS_12DenseMapInfoIS4_EENS7_IS6_EEEE", "AddPHINodeEntriesForMappedBlock(llvm::BasicBlock*, llvm::BasicBlock*, llvm::BasicBlock*, llvm::DenseMap, llvm::DenseMapInfo>&)"}, + {"_ZN4llvm25array_pod_sort_comparatorISt4pairIPNS_10BasicBlockEPNS_5ValueEEEEiPKvS8_", "int llvm::array_pod_sort_comparator>(void const*, void const*)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_113JumpThreadingEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::JumpThreading>()"}, + {"_ZN4llvm8DenseMapIPNS_11InstructionEPNS_5ValueENS_12DenseMapInfoIS2_EENS5_IS4_EEE16InsertIntoBucketERKS2_RKS4_PSt4pairIS2_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::Instruction* const&, llvm::Value* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_11InstructionEPNS_5ValueENS_12DenseMapInfoIS2_EENS5_IS4_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + + // {"_ZNK4llvm8DenseMapISt4pairIPNS_5ValueEPNS_10BasicBlockEEcNS_12DenseMapInfoIS6_EENS7_IcEEE15LookupBucketForERKS6_RPS1_IS6_cE", + // "llvm::DenseMap, char, llvm::DenseMapInfo>, llvm::DenseMapInfo>::LookupBucketFor(std::pair const&, std::pair, char>*&) const"}, + // "llvm::DenseMap, char, llvm::DenseMapInfo>, llvm::DenseMapInfo>::LookupBucketFor(std::pair const&, std::pair*&, char>) const" was returned + + + // {"_ZN4llvm8DenseMapISt4pairIPNS_5ValueEPNS_10BasicBlockEEcNS_12DenseMapInfoIS6_EENS7_IcEEE6insertERKS1_IS6_cE", + // "llvm::DenseMap, char, llvm::DenseMapInfo>, llvm::DenseMapInfo>::insert(std::pair, char> const&)"}, + // "llvm::DenseMap, char, llvm::DenseMapInfo>, llvm::DenseMapInfo>::insert(std::pair const&, char>)" was returned + + + // {"_ZN4llvm8DenseMapISt4pairIPNS_5ValueEPNS_10BasicBlockEEcNS_12DenseMapInfoIS6_EENS7_IcEEE16InsertIntoBucketERKS6_RKcPS1_IS6_cE", + // "llvm::DenseMap, char, llvm::DenseMapInfo>, llvm::DenseMapInfo>::InsertIntoBucket(std::pair const&, char const&, std::pair, char>*)"}, + // "llvm::DenseMap, char, llvm::DenseMapInfo>, llvm::DenseMapInfo>::InsertIntoBucket(std::pair const&, char const&, std::pair*, char>)" was returned + + {"_ZN4llvm8DenseMapISt4pairIPNS_5ValueEPNS_10BasicBlockEEcNS_12DenseMapInfoIS6_EENS7_IcEEE4growEj", "llvm::DenseMap, char, llvm::DenseMapInfo>, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm15SmallVectorImplIPNS_10BasicBlockEE6resizeEj", "llvm::SmallVectorImpl::resize(unsigned int)"}, + + // {"_ZSt6__findIPPN4llvm10BasicBlockES2_ET_S4_S4_RKT0_St26random_access_iterator_tag", + // "llvm::BasicBlock** std::__find(llvm::BasicBlock**, llvm::BasicBlock**, llvm::BasicBlock* const&, std::random_access_iterator_tag)"}, + // got error + + {"_ZN4llvm18initializeLICMPassERNS_12PassRegistryE", "llvm::initializeLICMPass(llvm::PassRegistry&)"}, + {"_ZN4llvm14createLICMPassEv", "llvm::createLICMPass()"}, + {"_ZN12_GLOBAL__N_14LICMD1Ev", "(anonymous namespace)::LICM::~LICM()"}, + {"_ZN12_GLOBAL__N_14LICMD0Ev", "(anonymous namespace)::LICM::~LICM()"}, + {"_ZNK12_GLOBAL__N_14LICM16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::LICM::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_14LICM9runOnLoopEPN4llvm4LoopERNS1_13LPPassManagerE", "(anonymous namespace)::LICM::runOnLoop(llvm::Loop*, llvm::LPPassManager&)"}, + {"_ZN12_GLOBAL__N_14LICM14doFinalizationEv", "(anonymous namespace)::LICM::doFinalization()"}, + {"_ZN12_GLOBAL__N_14LICM23cloneBasicBlockAnalysisEPN4llvm10BasicBlockES3_PNS1_4LoopE", "(anonymous namespace)::LICM::cloneBasicBlockAnalysis(llvm::BasicBlock*, llvm::BasicBlock*, llvm::Loop*)"}, + {"_ZN12_GLOBAL__N_14LICM19deleteAnalysisValueEPN4llvm5ValueEPNS1_4LoopE", "(anonymous namespace)::LICM::deleteAnalysisValue(llvm::Value*, llvm::Loop*)"}, + {"_ZN12_GLOBAL__N_14LICM10SinkRegionEPN4llvm15DomTreeNodeBaseINS1_10BasicBlockEEE", "(anonymous namespace)::LICM::SinkRegion(llvm::DomTreeNodeBase*)"}, + {"_ZN12_GLOBAL__N_14LICM11HoistRegionEPN4llvm15DomTreeNodeBaseINS1_10BasicBlockEEE", "(anonymous namespace)::LICM::HoistRegion(llvm::DomTreeNodeBase*)"}, + {"_ZN12_GLOBAL__N_14LICM30isSafeToExecuteUnconditionallyERN4llvm11InstructionE", "(anonymous namespace)::LICM::isSafeToExecuteUnconditionally(llvm::Instruction&)"}, + {"_ZN12_GLOBAL__N_112LoopPromoterD1Ev", "(anonymous namespace)::LoopPromoter::~LoopPromoter()"}, + {"_ZN12_GLOBAL__N_112LoopPromoterD0Ev", "(anonymous namespace)::LoopPromoter::~LoopPromoter()"}, + {"_ZNK12_GLOBAL__N_112LoopPromoter12isInstInListEPN4llvm11InstructionERKNS1_15SmallVectorImplIS3_EE", "(anonymous namespace)::LoopPromoter::isInstInList(llvm::Instruction*, llvm::SmallVectorImpl const&) const"}, + {"_ZNK12_GLOBAL__N_112LoopPromoter34doExtraRewritesBeforeFinalDeletionEv", "(anonymous namespace)::LoopPromoter::doExtraRewritesBeforeFinalDeletion() const"}, + {"_ZNK12_GLOBAL__N_112LoopPromoter20replaceLoadWithValueEPN4llvm8LoadInstEPNS1_5ValueE", "(anonymous namespace)::LoopPromoter::replaceLoadWithValue(llvm::LoadInst*, llvm::Value*) const"}, + {"_ZNK12_GLOBAL__N_112LoopPromoter18instructionDeletedEPN4llvm11InstructionE", "(anonymous namespace)::LoopPromoter::instructionDeleted(llvm::Instruction*) const"}, + {"_ZN12_GLOBAL__N_14LICM18canSinkOrHoistInstERN4llvm11InstructionE", "(anonymous namespace)::LICM::canSinkOrHoistInst(llvm::Instruction&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_14LICMEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::LICM>()"}, + {"_ZN4llvm6iplistINS_8AliasSetENS_12ilist_traitsIS1_EEE3endEv", "llvm::iplist>::end()"}, + {"_ZN4llvm6iplistINS_8AliasSetENS_12ilist_traitsIS1_EEED2Ev", "llvm::iplist>::~iplist()"}, + + // {"_ZN4llvm8DenseMapINS_15AliasSetTracker13ASTCallbackVHEPNS_8AliasSet10PointerRecENS1_25ASTCallbackVHDenseMapInfoENS_12DenseMapInfoIS5_EEED2Ev", + // "llvm::DenseMap>::~DenseMap()"}, + // "llvm::DenseMap>::~DenseMap()" was returned + + {"_ZN4llvm15AliasSetTracker13ASTCallbackVHD1Ev", "llvm::AliasSetTracker::ASTCallbackVH::~ASTCallbackVH()"}, + {"_ZN4llvm15AliasSetTracker13ASTCallbackVHD0Ev", "llvm::AliasSetTracker::ASTCallbackVH::~ASTCallbackVH()"}, + {"_ZN4llvm8DenseMapIPNS_4LoopEPNS_15AliasSetTrackerENS_12DenseMapInfoIS2_EENS5_IS4_EEE16InsertIntoBucketERKS2_RKS4_PSt4pairIS2_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::Loop* const&, llvm::AliasSetTracker* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_4LoopEPNS_15AliasSetTrackerENS_12DenseMapInfoIS2_EENS5_IS4_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + + // {"_ZN4llvm8DenseMapINS_15AliasSetTracker13ASTCallbackVHEPNS_8AliasSet10PointerRecENS1_25ASTCallbackVHDenseMapInfoENS_12DenseMapInfoIS5_EEE4initEj", + // "llvm::DenseMap>::init(unsigned int)"}, + // "llvm::DenseMap>::init(unsigned int)" was returned + + {"_ZN4llvm26initializeLoopDeletionPassERNS_12PassRegistryE", "llvm::initializeLoopDeletionPass(llvm::PassRegistry&)"}, + {"_ZN4llvm22createLoopDeletionPassEv", "llvm::createLoopDeletionPass()"}, + {"_ZN12_GLOBAL__N_112LoopDeletionD1Ev", "(anonymous namespace)::LoopDeletion::~LoopDeletion()"}, + {"_ZN12_GLOBAL__N_112LoopDeletionD0Ev", "(anonymous namespace)::LoopDeletion::~LoopDeletion()"}, + {"_ZNK12_GLOBAL__N_112LoopDeletion16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::LoopDeletion::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_112LoopDeletion9runOnLoopEPN4llvm4LoopERNS1_13LPPassManagerE", "(anonymous namespace)::LoopDeletion::runOnLoop(llvm::Loop*, llvm::LPPassManager&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_112LoopDeletionEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::LoopDeletion>()"}, + + // {"_ZN4llvm15SmallVectorImplIPNS_15DomTreeNodeBaseINS_10BasicBlockEEEE6insertIN9__gnu_cxx17__normal_iteratorIPS4_St6vectorIS4_SaIS4_EEEEEES9_S9_T_SE_", + // "llvm::DomTreeNodeBase** llvm::SmallVectorImpl*>::insert<__gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>>(llvm::DomTreeNodeBase**, __gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>, __gnu_cxx::__normal_iterator**, std::vector*, std::allocator*>>>)"}, + // got error + + {"_ZN4llvm32initializeLoopIdiomRecognizePassERNS_12PassRegistryE", "llvm::initializeLoopIdiomRecognizePass(llvm::PassRegistry&)"}, + {"_ZN4llvm19createLoopIdiomPassEv", "llvm::createLoopIdiomPass()"}, + {"_ZN12_GLOBAL__N_118LoopIdiomRecognizeD1Ev", "(anonymous namespace)::LoopIdiomRecognize::~LoopIdiomRecognize()"}, + {"_ZN12_GLOBAL__N_118LoopIdiomRecognizeD0Ev", "(anonymous namespace)::LoopIdiomRecognize::~LoopIdiomRecognize()"}, + {"_ZNK12_GLOBAL__N_118LoopIdiomRecognize16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::LoopIdiomRecognize::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_118LoopIdiomRecognize9runOnLoopEPN4llvm4LoopERNS1_13LPPassManagerE", "(anonymous namespace)::LoopIdiomRecognize::runOnLoop(llvm::Loop*, llvm::LPPassManager&)"}, + {"_ZN12_GLOBAL__N_118LoopIdiomRecognize28processLoopStoreOfSplatValueEPN4llvm5ValueEjjS3_PNS1_11InstructionEPKNS1_14SCEVAddRecExprEPKNS1_4SCEVE", "(anonymous namespace)::LoopIdiomRecognize::processLoopStoreOfSplatValue(llvm::Value*, unsigned int, unsigned int, llvm::Value*, llvm::Instruction*, llvm::SCEVAddRecExpr const*, llvm::SCEV const*)"}, + {"_Z21mayLoopAccessLocationPN4llvm5ValueENS_13AliasAnalysis12ModRefResultEPNS_4LoopEPKNS_4SCEVEjRS2_PNS_11InstructionE", "mayLoopAccessLocation(llvm::Value*, llvm::AliasAnalysis::ModRefResult, llvm::Loop*, llvm::SCEV const*, unsigned int, llvm::AliasAnalysis&, llvm::Instruction*)"}, + {"_Z21DeleteDeadInstructionPN4llvm11InstructionERNS_15ScalarEvolutionE", "DeleteDeadInstruction(llvm::Instruction*, llvm::ScalarEvolution&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_118LoopIdiomRecognizeEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::LoopIdiomRecognize>()"}, + {"_ZN4llvm24initializeLoopRotatePassERNS_12PassRegistryE", "llvm::initializeLoopRotatePass(llvm::PassRegistry&)"}, + {"_ZN4llvm20createLoopRotatePassEv", "llvm::createLoopRotatePass()"}, + {"_ZN12_GLOBAL__N_110LoopRotateD1Ev", "(anonymous namespace)::LoopRotate::~LoopRotate()"}, + {"_ZN12_GLOBAL__N_110LoopRotateD0Ev", "(anonymous namespace)::LoopRotate::~LoopRotate()"}, + {"_ZNK12_GLOBAL__N_110LoopRotate16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::LoopRotate::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_110LoopRotate9runOnLoopEPN4llvm4LoopERNS1_13LPPassManagerE", "(anonymous namespace)::LoopRotate::runOnLoop(llvm::Loop*, llvm::LPPassManager&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_110LoopRotateEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::LoopRotate>()"}, + + // {"_ZN4llvm8ValueMapIPKNS_5ValueENS_10TrackingVHIS1_EENS_14ValueMapConfigIS3_EENS_12DenseMapInfoIS5_EEEixERKS3_", + // "llvm::ValueMap, llvm::ValueMapConfig, llvm::DenseMapInfo>>::operator[](llvm::Value const* const&)"}, + // "llvm::ValueMap, llvm::ValueMapConfig, llvm::DenseMapInfo>::operator[](llvm::TrackingVH const&)" was returned + + + // {"_ZN4llvm8DenseMapINS_18ValueMapCallbackVHIPKNS_5ValueENS_10TrackingVHIS2_EENS_14ValueMapConfigIS4_EENS_12DenseMapInfoIS6_EEEES6_NS9_ISB_EESA_ED2Ev", + // "llvm::DenseMap, llvm::ValueMapConfig, llvm::DenseMapInfo>>, llvm::TrackingVH, llvm::DenseMapInfo, llvm::ValueMapConfig, llvm::DenseMapInfo>>>, llvm::DenseMapInfo>>::~DenseMap()"}, + // got error + + + // {"_ZN4llvm18ValueMapCallbackVHIPKNS_5ValueENS_10TrackingVHIS1_EENS_14ValueMapConfigIS3_EENS_12DenseMapInfoIS5_EEED1Ev", + // "llvm::ValueMapCallbackVH, llvm::ValueMapConfig, llvm::DenseMapInfo>>::~ValueMapCallbackVH()"}, + // "llvm::ValueMapCallbackVH, llvm::ValueMapConfig, llvm::DenseMapInfo>::~ValueMapCallbackVH()" was returned + + + // {"_ZN4llvm18ValueMapCallbackVHIPKNS_5ValueENS_10TrackingVHIS1_EENS_14ValueMapConfigIS3_EENS_12DenseMapInfoIS5_EEED0Ev", + // "llvm::ValueMapCallbackVH, llvm::ValueMapConfig, llvm::DenseMapInfo>>::~ValueMapCallbackVH()"}, + // "llvm::ValueMapCallbackVH, llvm::ValueMapConfig, llvm::DenseMapInfo>::~ValueMapCallbackVH()" was returned + + + // {"_ZN4llvm18ValueMapCallbackVHIPKNS_5ValueENS_10TrackingVHIS1_EENS_14ValueMapConfigIS3_EENS_12DenseMapInfoIS5_EEE7deletedEv", + // "llvm::ValueMapCallbackVH, llvm::ValueMapConfig, llvm::DenseMapInfo>>::deleted()"}, + // "llvm::ValueMapCallbackVH, llvm::ValueMapConfig, llvm::DenseMapInfo>::deleted()" was returned + + + // {"_ZN4llvm18ValueMapCallbackVHIPKNS_5ValueENS_10TrackingVHIS1_EENS_14ValueMapConfigIS3_EENS_12DenseMapInfoIS5_EEE19allUsesReplacedWithEPS1_", + // "llvm::ValueMapCallbackVH, llvm::ValueMapConfig, llvm::DenseMapInfo>>::allUsesReplacedWith(llvm::Value*)"}, + // "llvm::ValueMapCallbackVH, llvm::ValueMapConfig, llvm::DenseMapInfo>::allUsesReplacedWith(llvm::Value const*)" was returned + + + // {"_ZN4llvm8DenseMapINS_18ValueMapCallbackVHIPKNS_5ValueENS_10TrackingVHIS2_EENS_14ValueMapConfigIS4_EENS_12DenseMapInfoIS6_EEEES6_NS9_ISB_EESA_E4findERKSB_", + // "llvm::DenseMap, llvm::ValueMapConfig, llvm::DenseMapInfo>>, llvm::TrackingVH, llvm::DenseMapInfo, llvm::ValueMapConfig, llvm::DenseMapInfo>>>, llvm::DenseMapInfo>>::find(llvm::ValueMapCallbackVH, llvm::ValueMapConfig, llvm::DenseMapInfo>> const&)"}, + // got error + + + // {"_ZN4llvm8DenseMapINS_18ValueMapCallbackVHIPKNS_5ValueENS_10TrackingVHIS2_EENS_14ValueMapConfigIS4_EENS_12DenseMapInfoIS6_EEEES6_NS9_ISB_EESA_E5eraseENS_16DenseMapIteratorISB_S6_SC_SA_Lb0EEE", + // "llvm::DenseMap, llvm::ValueMapConfig, llvm::DenseMapInfo>>, llvm::TrackingVH, llvm::DenseMapInfo, llvm::ValueMapConfig, llvm::DenseMapInfo>>>, llvm::DenseMapInfo>>::erase(llvm::DenseMapIterator, llvm::ValueMapConfig, llvm::DenseMapInfo>>, llvm::TrackingVH, llvm::DenseMapInfo, llvm::ValueMapConfig, llvm::DenseMapInfo>>>, llvm::DenseMapInfo>, false>)"}, + // got error + + + // {"_ZN4llvm8ValueMapIPKNS_5ValueENS_10TrackingVHIS1_EENS_14ValueMapConfigIS3_EENS_12DenseMapInfoIS5_EEE6insertERKSt4pairIS3_S5_E", + // "llvm::ValueMap, llvm::ValueMapConfig, llvm::DenseMapInfo>>::insert(std::pair> const&)"}, + // "llvm::ValueMap, llvm::ValueMapConfig, llvm::DenseMapInfo>::insert(std::pair const&)" was returned + + + // {"_ZN4llvm8DenseMapINS_18ValueMapCallbackVHIPKNS_5ValueENS_10TrackingVHIS2_EENS_14ValueMapConfigIS4_EENS_12DenseMapInfoIS6_EEEES6_NS9_ISB_EESA_E6insertERKSt4pairISB_S6_E", + // "llvm::DenseMap, llvm::ValueMapConfig, llvm::DenseMapInfo>>, llvm::TrackingVH, llvm::DenseMapInfo, llvm::ValueMapConfig, llvm::DenseMapInfo>>>, llvm::DenseMapInfo>>::insert(std::pair, llvm::ValueMapConfig, llvm::DenseMapInfo>>, llvm::TrackingVH> const&)"}, + // got error + + + // {"_ZNK4llvm8DenseMapINS_18ValueMapCallbackVHIPKNS_5ValueENS_10TrackingVHIS2_EENS_14ValueMapConfigIS4_EENS_12DenseMapInfoIS6_EEEES6_NS9_ISB_EESA_E15LookupBucketForERKSB_RPSt4pairISB_S6_E", + // "llvm::DenseMap, llvm::ValueMapConfig, llvm::DenseMapInfo>>, llvm::TrackingVH, llvm::DenseMapInfo, llvm::ValueMapConfig, llvm::DenseMapInfo>>>, llvm::DenseMapInfo>>::LookupBucketFor(llvm::ValueMapCallbackVH, llvm::ValueMapConfig, llvm::DenseMapInfo>> const&, std::pair, llvm::ValueMapConfig, llvm::DenseMapInfo>>, llvm::TrackingVH>*&) const"}, + // got error + + + // {"_ZN4llvm8DenseMapINS_18ValueMapCallbackVHIPKNS_5ValueENS_10TrackingVHIS2_EENS_14ValueMapConfigIS4_EENS_12DenseMapInfoIS6_EEEES6_NS9_ISB_EESA_E16InsertIntoBucketERKSB_RKS6_PSt4pairISB_S6_E", + // "llvm::DenseMap, llvm::ValueMapConfig, llvm::DenseMapInfo>>, llvm::TrackingVH, llvm::DenseMapInfo, llvm::ValueMapConfig, llvm::DenseMapInfo>>>, llvm::DenseMapInfo>>::InsertIntoBucket(llvm::ValueMapCallbackVH, llvm::ValueMapConfig, llvm::DenseMapInfo>> const&, llvm::TrackingVH const&, std::pair, llvm::ValueMapConfig, llvm::DenseMapInfo>>, llvm::TrackingVH>*)"}, + // got error + + + // {"_ZN4llvm8DenseMapINS_18ValueMapCallbackVHIPKNS_5ValueENS_10TrackingVHIS2_EENS_14ValueMapConfigIS4_EENS_12DenseMapInfoIS6_EEEES6_NS9_ISB_EESA_E4growEj", + // "llvm::DenseMap, llvm::ValueMapConfig, llvm::DenseMapInfo>>, llvm::TrackingVH, llvm::DenseMapInfo, llvm::ValueMapConfig, llvm::DenseMapInfo>>>, llvm::DenseMapInfo>>::grow(unsigned int)"}, + // got error + + + // {"_ZN4llvm8DenseMapINS_18ValueMapCallbackVHIPKNS_5ValueENS_10TrackingVHIS2_EENS_14ValueMapConfigIS4_EENS_12DenseMapInfoIS6_EEEES6_NS9_ISB_EESA_E5eraseERKSB_", + // "llvm::DenseMap, llvm::ValueMapConfig, llvm::DenseMapInfo>>, llvm::TrackingVH, llvm::DenseMapInfo, llvm::ValueMapConfig, llvm::DenseMapInfo>>>, llvm::DenseMapInfo>>::erase(llvm::ValueMapCallbackVH, llvm::ValueMapConfig, llvm::DenseMapInfo>> const&)"}, + // got error + + + // {"_ZN4llvm8DenseMapINS_18ValueMapCallbackVHIPKNS_5ValueENS_10TrackingVHIS2_EENS_14ValueMapConfigIS4_EENS_12DenseMapInfoIS6_EEEES6_NS9_ISB_EESA_E4initEj", + // "llvm::DenseMap, llvm::ValueMapConfig, llvm::DenseMapInfo>>, llvm::TrackingVH, llvm::DenseMapInfo, llvm::ValueMapConfig, llvm::DenseMapInfo>>>, llvm::DenseMapInfo>>::init(unsigned int)"}, + // got error + + {"_ZN4llvm32initializeLoopStrengthReducePassERNS_12PassRegistryE", "llvm::initializeLoopStrengthReducePass(llvm::PassRegistry&)"}, + {"_ZN4llvm28createLoopStrengthReducePassEPKNS_14TargetLoweringE", "llvm::createLoopStrengthReducePass(llvm::TargetLowering const*)"}, + {"_ZN12_GLOBAL__N_118LoopStrengthReduceD1Ev", "(anonymous namespace)::LoopStrengthReduce::~LoopStrengthReduce()"}, + {"_ZN12_GLOBAL__N_118LoopStrengthReduceD0Ev", "(anonymous namespace)::LoopStrengthReduce::~LoopStrengthReduce()"}, + {"_ZNK12_GLOBAL__N_118LoopStrengthReduce16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::LoopStrengthReduce::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_118LoopStrengthReduce9runOnLoopEPN4llvm4LoopERNS1_13LPPassManagerE", "(anonymous namespace)::LoopStrengthReduce::runOnLoop(llvm::Loop*, llvm::LPPassManager&)"}, + {"_ZN12_GLOBAL__N_16LSRUseD1Ev", "(anonymous namespace)::LSRUse::~LSRUse()"}, + {"_ZN12_GLOBAL__N_111LSRInstanceC2EPKN4llvm14TargetLoweringEPNS1_4LoopEPNS1_4PassE", "(anonymous namespace)::LSRInstance::LSRInstance(llvm::TargetLowering const*, llvm::Loop*, llvm::Pass*)"}, + {"_ZN12_GLOBAL__N_111LSRInstance24GenerateAllReuseFormulaeEv", "(anonymous namespace)::LSRInstance::GenerateAllReuseFormulae()"}, + {"_ZN12_GLOBAL__N_111LSRInstance38FilterOutUndesirableDedicatedRegistersEv", "(anonymous namespace)::LSRInstance::FilterOutUndesirableDedicatedRegisters()"}, + {"_ZNK12_GLOBAL__N_111LSRInstance6ExpandERKNS_8LSRFixupERKNS_7FormulaEN4llvm14ilist_iteratorINS7_11InstructionEEERNS7_12SCEVExpanderERNS7_15SmallVectorImplINS7_6WeakVHEEE", "(anonymous namespace)::LSRInstance::Expand((anonymous namespace)::LSRFixup const&, (anonymous namespace)::Formula const&, llvm::ilist_iterator, llvm::SCEVExpander&, llvm::SmallVectorImpl&) const"}, + {"_ZNK12_GLOBAL__N_18LSRFixup21isUseFullyOutsideLoopEPKN4llvm4LoopE", "(anonymous namespace)::LSRFixup::isUseFullyOutsideLoop(llvm::Loop const*) const"}, + + // {"_ZNK12_GLOBAL__N_111LSRInstance12SolveRecurseERN4llvm15SmallVectorImplIPKNS_7FormulaEEERNS_4CostES7_RKS8_RKNS1_11SmallPtrSetIPKNS1_4SCEVELj16EEERNS1_8DenseSetISF_NS1_12DenseMapInfoISF_EEEE", + // "(anonymous namespace)::LSRInstance::SolveRecurse(llvm::SmallVectorImpl<(anonymous namespace)::Formula const*>&, (anonymous namespace)::Cost&, llvm::SmallVectorImpl<(anonymous namespace)::Formula const*>&, (anonymous namespace)::Cost const&, llvm::SmallPtrSet const&, llvm::DenseSet>&) const"}, + // "(anonymous namespace)::LSRInstance::SolveRecurse(llvm::SmallVectorImpl<(anonymous namespace)::Formula const*>&, (anonymous namespace)::Cost&, llvm::SmallVectorImpl<(anonymous namespace)::Formula const*>&, (anonymous namespace)::Cost const&, llvm::SmallPtrSet const&, llvm::DenseSet>&) const" was returned + + + // {"_ZN12_GLOBAL__N_14Cost11RateFormulaERKNS_7FormulaERN4llvm11SmallPtrSetIPKNS4_4SCEVELj16EEERKNS4_8DenseSetIS8_NS4_12DenseMapInfoIS8_EEEEPKNS4_4LoopERKNS4_15SmallVectorImplIxEERNS4_15ScalarEvolutionERNS4_13DominatorTreeE", + // "(anonymous namespace)::Cost::RateFormula((anonymous namespace)::Formula const&, llvm::SmallPtrSet&, llvm::DenseSet> const&, llvm::Loop const*, llvm::SmallVectorImpl const&, llvm::ScalarEvolution&, llvm::DominatorTree&)"}, + // "(anonymous namespace)::Cost::RateFormula((anonymous namespace)::Formula const&, llvm::SmallPtrSet&, llvm::DenseSet> const&, llvm::Loop const*, llvm::SmallVectorImpl const&, llvm::ScalarEvolution&, llvm::DominatorTree&)" was returned + + + // {"_ZN12_GLOBAL__N_14Cost12RateRegisterEPKN4llvm4SCEVERNS1_11SmallPtrSetIS4_Lj16EEEPKNS1_4LoopERNS1_15ScalarEvolutionERNS1_13DominatorTreeE", + // "(anonymous namespace)::Cost::RateRegister(llvm::SCEV const*, llvm::SmallPtrSet&, llvm::Loop const*, llvm::ScalarEvolution&, llvm::DominatorTree&)"}, + // "(anonymous namespace)::Cost::RateRegister(llvm::SCEV const*, llvm::SmallPtrSet&, llvm::Loop const*, llvm::ScalarEvolution&, llvm::DominatorTree&)" was returned + + {"_ZN12_GLOBAL__N_16LSRUse13RecomputeRegsEmRNS_13RegUseTrackerE", "(anonymous namespace)::LSRUse::RecomputeRegs(unsigned long, (anonymous namespace)::RegUseTracker&)"}, + {"_ZN12_GLOBAL__N_111LSRInstance18reconcileNewOffsetERNS_6LSRUseExbNS1_8KindTypeEPKN4llvm4TypeE", "(anonymous namespace)::LSRInstance::reconcileNewOffset((anonymous namespace)::LSRUse&, long long, bool, (anonymous namespace)::LSRUse::KindType, llvm::Type const*)"}, + {"_ZN4llvm15SmallVectorImplIN12_GLOBAL__N_17FormulaEEaSERKS3_", "llvm::SmallVectorImpl<(anonymous namespace)::Formula>::operator=(llvm::SmallVectorImpl<(anonymous namespace)::Formula> const&)"}, + {"_ZN4llvm23SmallVectorTemplateBaseIN12_GLOBAL__N_17FormulaELb0EE4growEm", "llvm::SmallVectorTemplateBase<(anonymous namespace)::Formula, false>::grow(unsigned long)"}, + + // {"_ZN4llvm8DenseMapINS_11SmallVectorIPKNS_4SCEVELj2EEEcN12_GLOBAL__N_122UniquifierDenseMapInfoENS_12DenseMapInfoIcEEE8CopyFromERKSA_", + // "llvm::DenseMap, char, (anonymous namespace)::UniquifierDenseMapInfo, llvm::DenseMapInfo>::CopyFrom(llvm::DenseMap, char, (anonymous namespace)::UniquifierDenseMapInfo, llvm::DenseMapInfo> const&)"}, + // "llvm::DenseMap, char, (anonymous namespace)::UniquifierDenseMapInfo, llvm::DenseMapInfo>::CopyFrom(llvm::DenseMap, char, (anonymous namespace)::UniquifierDenseMapInfo, llvm::DenseMapInfo> const&)" was returned + + {"_Z10isLegalUseRKN4llvm14TargetLowering8AddrModeEN12_GLOBAL__N_16LSRUse8KindTypeEPKNS_4TypeEPKS0_", "isLegalUse(llvm::TargetLowering::AddrMode const&, (anonymous namespace)::LSRUse::KindType, llvm::Type const*, llvm::TargetLowering const*)"}, + {"_ZNK12_GLOBAL__N_16LSRUse22HasFormulaWithSameRegsERKNS_7FormulaE", "(anonymous namespace)::LSRUse::HasFormulaWithSameRegs((anonymous namespace)::Formula const&) const"}, + + // {"_ZNK4llvm8DenseMapINS_11SmallVectorIPKNS_4SCEVELj2EEEcN12_GLOBAL__N_122UniquifierDenseMapInfoENS_12DenseMapInfoIcEEE15LookupBucketForERKS5_RPSt4pairIS5_cE", + // "llvm::DenseMap, char, (anonymous namespace)::UniquifierDenseMapInfo, llvm::DenseMapInfo>::LookupBucketFor(llvm::SmallVector const&, std::pair, char>*&) const"}, + // "llvm::DenseMap, char, (anonymous namespace)::UniquifierDenseMapInfo, llvm::DenseMapInfo>::LookupBucketFor(llvm::SmallVector const&, std::pair, char>*&) const" was returned + + {"_ZNK12_GLOBAL__N_113RegUseTracker24isRegUsedByUsesOtherThanEPKN4llvm4SCEVEm", "(anonymous namespace)::RegUseTracker::isRegUsedByUsesOtherThan(llvm::SCEV const*, unsigned long) const"}, + + // {"_ZNK4llvm8DenseMapINS_11SmallVectorIPKNS_4SCEVELj2EEEmN12_GLOBAL__N_122UniquifierDenseMapInfoENS_12DenseMapInfoImEEE15LookupBucketForERKS5_RPSt4pairIS5_mE", + // "llvm::DenseMap, unsigned long, (anonymous namespace)::UniquifierDenseMapInfo, llvm::DenseMapInfo>::LookupBucketFor(llvm::SmallVector const&, std::pair, unsigned long>*&) const"}, + // "llvm::DenseMap, unsigned long, (anonymous namespace)::UniquifierDenseMapInfo, llvm::DenseMapInfo>::LookupBucketFor(llvm::SmallVector const&, std::pair, unsigned long>*&) const" was returned + + + // {"_ZN4llvm16DenseMapIteratorINS_11SmallVectorIPKNS_4SCEVELj2EEEmN12_GLOBAL__N_122UniquifierDenseMapInfoENS_12DenseMapInfoImEELb0EEC1EPSt4pairIS5_mESD_", + // "llvm::DenseMapIterator, unsigned long, (anonymous namespace)::UniquifierDenseMapInfo, llvm::DenseMapInfo, false>::DenseMapIterator(std::pair, unsigned long>*, std::pair, unsigned long>*)"}, + // "llvm::DenseMapIterator, unsigned long, (anonymous namespace)::UniquifierDenseMapInfo, llvm::DenseMapInfo, false>::DenseMapIterator(std::pair, unsigned long>*, std::pair, unsigned long>*)" was returned + + {"_ZN12_GLOBAL__N_111LSRInstance22GenerateReassociationsERNS_6LSRUseEjNS_7FormulaEj", "(anonymous namespace)::LSRInstance::GenerateReassociations((anonymous namespace)::LSRUse&, unsigned int, (anonymous namespace)::Formula, unsigned int)"}, + {"_Z16ExtractImmediateRPKN4llvm4SCEVERNS_15ScalarEvolutionE", "ExtractImmediate(llvm::SCEV const*&, llvm::ScalarEvolution&)"}, + {"_ZN12_GLOBAL__N_111LSRInstance13InsertFormulaERNS_6LSRUseEjRKNS_7FormulaE", "(anonymous namespace)::LSRInstance::InsertFormula((anonymous namespace)::LSRUse&, unsigned int, (anonymous namespace)::Formula const&)"}, + {"_ZN12_GLOBAL__N_113RegUseTracker13CountRegisterEPKN4llvm4SCEVEm", "(anonymous namespace)::RegUseTracker::CountRegister(llvm::SCEV const*, unsigned long)"}, + + // {"_ZN4llvm16DenseMapIteratorINS_11SmallVectorIPKNS_4SCEVELj2EEEcN12_GLOBAL__N_122UniquifierDenseMapInfoENS_12DenseMapInfoIcEELb0EEC1EPSt4pairIS5_cESD_", + // "llvm::DenseMapIterator, char, (anonymous namespace)::UniquifierDenseMapInfo, llvm::DenseMapInfo, false>::DenseMapIterator(std::pair, char>*, std::pair, char>*)"}, + // "llvm::DenseMapIterator, char, (anonymous namespace)::UniquifierDenseMapInfo, llvm::DenseMapInfo, false>::DenseMapIterator(std::pair, char>*, std::pair, char>*)" was returned + + {"_Z12getExactSDivPKN4llvm4SCEVES2_RNS_15ScalarEvolutionEb", "getExactSDiv(llvm::SCEV const*, llvm::SCEV const*, llvm::ScalarEvolution&, bool)"}, + {"_Z13ExtractSymbolRPKN4llvm4SCEVERNS_15ScalarEvolutionE", "ExtractSymbol(llvm::SCEV const*&, llvm::ScalarEvolution&)"}, + {"_Z15CollectSubexprsPKN4llvm4SCEVEPKNS_12SCEVConstantERNS_15SmallVectorImplIS2_EEPKNS_4LoopERNS_15ScalarEvolutionE", "CollectSubexprs(llvm::SCEV const*, llvm::SCEVConstant const*, llvm::SmallVectorImpl&, llvm::Loop const*, llvm::ScalarEvolution&)"}, + {"_Z16isAlwaysFoldablePKN4llvm4SCEVExxbN12_GLOBAL__N_16LSRUse8KindTypeEPKNS_4TypeEPKNS_14TargetLoweringERNS_15ScalarEvolutionE", "isAlwaysFoldable(llvm::SCEV const*, long long, long long, bool, (anonymous namespace)::LSRUse::KindType, llvm::Type const*, llvm::TargetLowering const*, llvm::ScalarEvolution&)"}, + {"_ZN12_GLOBAL__N_111LSRInstance11getNewFixupEv", "(anonymous namespace)::LSRInstance::getNewFixup()"}, + {"_ZN12_GLOBAL__N_111LSRInstance6getUseERPKN4llvm4SCEVENS_6LSRUse8KindTypeEPKNS1_4TypeE", "(anonymous namespace)::LSRInstance::getUse(llvm::SCEV const*&, (anonymous namespace)::LSRUse::KindType, llvm::Type const*)"}, + {"_Z13getAccessTypePKN4llvm11InstructionE", "getAccessType(llvm::Instruction const*)"}, + {"_Z14DoInitialMatchPKN4llvm4SCEVEPNS_4LoopERNS_15SmallVectorImplIS2_EES7_RNS_15ScalarEvolutionE", "DoInitialMatch(llvm::SCEV const*, llvm::Loop*, llvm::SmallVectorImpl&, llvm::SmallVectorImpl&, llvm::ScalarEvolution&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_118LoopStrengthReduceEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::LoopStrengthReduce>()"}, + {"_ZNK4llvm8LoopPass27getPotentialPassManagerTypeEv", "llvm::LoopPass::getPotentialPassManagerType() const"}, + {"_ZN4llvm8LoopPass16doInitializationEPNS_4LoopERNS_13LPPassManagerE", "llvm::LoopPass::doInitialization(llvm::Loop*, llvm::LPPassManager&)"}, + {"_ZN4llvm8LoopPass14doFinalizationEv", "llvm::LoopPass::doFinalization()"}, + {"_ZN4llvm8LoopPass23cloneBasicBlockAnalysisEPNS_10BasicBlockES2_PNS_4LoopE", "llvm::LoopPass::cloneBasicBlockAnalysis(llvm::BasicBlock*, llvm::BasicBlock*, llvm::Loop*)"}, + {"_ZN4llvm8LoopPass19deleteAnalysisValueEPNS_5ValueEPNS_4LoopE", "llvm::LoopPass::deleteAnalysisValue(llvm::Value*, llvm::Loop*)"}, + {"_ZNSt8_Rb_treeIxxSt9_IdentityIxESt4lessIxESaIxEE8_M_eraseEPSt13_Rb_tree_nodeIxE", "std::_Rb_tree, std::less, std::allocator>::_M_erase(std::_Rb_tree_node*)"}, + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm4SCEVEPNS1_11InstructionEES0_IKS7_NS1_11AssertingVHINS1_5ValueEEEESt10_Select1stISC_ESt4lessIS7_ESaISC_EE8_M_eraseEPSt13_Rb_tree_nodeISC_E", + // "std::_Rb_tree, std::pair const, llvm::AssertingVH>, std::_Select1st const, llvm::AssertingVH>>, std::less>, std::allocator const, llvm::AssertingVH>>>::_M_erase(std::_Rb_tree_node const, llvm::AssertingVH>>*)"}, + // "std::_Rb_tree, std::pair const, llvm::AssertingVH>, std::_Select1st< const, llvm::AssertingVH>>, std::less>, std::allocator< const, llvm::AssertingVH>>>::_M_erase(std::_Rb_tree_node< const, llvm::AssertingVH>>*)" was returned + + {"_ZNSt8_Rb_treeIN4llvm11AssertingVHINS0_5ValueEEES3_St9_IdentityIS3_ESt4lessIS3_ESaIS3_EE8_M_eraseEPSt13_Rb_tree_nodeIS3_E", "std::_Rb_tree, llvm::AssertingVH, std::_Identity>, std::less>, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZN4llvm23SmallVectorTemplateBaseINS_6WeakVHELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN4llvm15ScalarEvolution10getMulExprEPKNS_4SCEVES3_bb", "llvm::ScalarEvolution::getMulExpr(llvm::SCEV const*, llvm::SCEV const*, bool, bool)"}, + {"_ZNK4llvm8LoopBaseINS_10BasicBlockENS_4LoopEE12getLoopLatchEv", "llvm::LoopBase::getLoopLatch() const"}, + {"_ZNK4llvm8LoopBaseINS_10BasicBlockENS_4LoopEE16getExitingBlocksERNS_15SmallVectorImplIPS1_EE", "llvm::LoopBase::getExitingBlocks(llvm::SmallVectorImpl&) const"}, + + // {"_ZSt16__introsort_loopIPPN4llvm10BasicBlockElEvT_S4_T0_", + // "void std::__introsort_loop(llvm::BasicBlock**, llvm::BasicBlock**, long)"}, + // got error + + + // {"_ZSt22__final_insertion_sortIPPN4llvm10BasicBlockEEvT_S4_", + // "void std::__final_insertion_sort(llvm::BasicBlock**, llvm::BasicBlock**)"}, + // got error + + + // {"_ZSt13__heap_selectIPPN4llvm10BasicBlockEEvT_S4_S4_", + // "void std::__heap_select(llvm::BasicBlock**, llvm::BasicBlock**, llvm::BasicBlock**)"}, + // got error + + + // {"_ZSt9sort_heapIPPN4llvm10BasicBlockEEvT_S4_", + // "void std::sort_heap(llvm::BasicBlock**, llvm::BasicBlock**)"}, + // got error + + + // {"_ZSt9make_heapIPPN4llvm10BasicBlockEEvT_S4_", + // "void std::make_heap(llvm::BasicBlock**, llvm::BasicBlock**)"}, + // got error + + + // {"_ZSt6__findIN9__gnu_cxx17__normal_iteratorIPKPN4llvm10BasicBlockESt6vectorIS4_SaIS4_EEEEPKS3_ET_SD_SD_RKT0_St26random_access_iterator_tag", + // "__gnu_cxx::__normal_iterator>> std::__find<__gnu_cxx::__normal_iterator>>, llvm::BasicBlock const*>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, llvm::BasicBlock const* const&, std::random_access_iterator_tag)"}, + // got error + + {"_ZN4llvm8DenseMapIPNS_10BasicBlockEPNS_5ValueENS_12DenseMapInfoIS2_EENS5_IS4_EEE6insertERKSt4pairIS2_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm12SCEVExpanderC2ERNS_15ScalarEvolutionE", "llvm::SCEVExpander::SCEVExpander(llvm::ScalarEvolution&)"}, + {"_ZN4llvm8DenseMapIPKNS_4SCEVEcNS_12DenseMapInfoIS3_EENS4_IcEEE6insertERKSt4pairIS3_cE", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPKNS_4SCEVEcNS_12DenseMapInfoIS3_EENS4_IcEEE16InsertIntoBucketERKS3_RKcPSt4pairIS3_cE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::SCEV const* const&, char const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_4SCEVEcNS_12DenseMapInfoIS3_EENS4_IcEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + + // {"_ZSt6__findIPKPKN4llvm4SCEVES3_ET_S6_S6_RKT0_St26random_access_iterator_tag", + // "llvm::SCEV const* const* std::__find(llvm::SCEV const* const*, llvm::SCEV const* const*, llvm::SCEV const* const&, std::random_access_iterator_tag)"}, + // got error + + {"_ZN4llvm15SmallVectorImplIPKNS_4SCEVEEaSERKS4_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + {"_ZN4llvm14SmallBitVector9referenceaSEb", "llvm::SmallBitVector::reference::operator=(bool)"}, + {"_ZN4llvm14SmallBitVector6resizeEjb", "llvm::SmallBitVector::resize(unsigned int, bool)"}, + {"_ZN4llvm15SmallVectorImplIxEaSERKS1_", "llvm::SmallVectorImpl::operator=(llvm::SmallVectorImpl const&)"}, + + // {"_ZSt16__introsort_loopIPPKN4llvm4SCEVElEvT_S5_T0_", + // "void std::__introsort_loop(llvm::SCEV const**, llvm::SCEV const**, long)"}, + // got error + + + // {"_ZSt22__final_insertion_sortIPPKN4llvm4SCEVEEvT_S5_", + // "void std::__final_insertion_sort(llvm::SCEV const**, llvm::SCEV const**)"}, + // got error + + + // {"_ZSt13__heap_selectIPPKN4llvm4SCEVEEvT_S5_S5_", + // "void std::__heap_select(llvm::SCEV const**, llvm::SCEV const**, llvm::SCEV const**)"}, + // got error + + + // {"_ZSt9sort_heapIPPKN4llvm4SCEVEEvT_S5_", + // "void std::sort_heap(llvm::SCEV const**, llvm::SCEV const**)"}, + // got error + + + // {"_ZSt9make_heapIPPKN4llvm4SCEVEEvT_S5_", + // "void std::make_heap(llvm::SCEV const**, llvm::SCEV const**)"}, + // got error + + {"_ZNK4llvm14SmallBitVector9find_nextEj", "llvm::SmallBitVector::find_next(unsigned int) const"}, + + // {"_ZN4llvm8DenseMapIPKNS_4SCEVESt3mapIxS3_St4lessIxESaISt4pairIKxS3_EEENS_12DenseMapInfoIS3_EENSC_ISB_EEE6insertERKS7_IS3_SB_E", + // "llvm::DenseMap, std::allocator>>, llvm::DenseMapInfo, llvm::DenseMapInfo, std::allocator>>>>::insert(std::pair, std::allocator>>> const&)"}, + // "llvm::DenseMap, std::allocator>>, llvm::DenseMapInfo, llvm::DenseMapInfo, std::allocator>>>>::insert(std::pair const&, std::allocator>>>)" was returned + + {"_ZN4llvm14SmallBitVectoroRERKS0_", "llvm::SmallBitVector::operator|=(llvm::SmallBitVector const&)"}, + + // {"_ZN4llvm8SmallSetISt4pairImxELj32EE6insertERKS2_", + // "llvm::SmallSet, 32u>::insert(std::pair const&)"}, + // "llvm::SmallSet, 32>::insert(std::pair const&)" was returned + + {"_ZN4llvm8DenseMapIPKNS_4SCEVESt3mapIxS3_St4lessIxESaISt4pairIKxS3_EEENS_12DenseMapInfoIS3_EENSC_ISB_EEE5clearEv", "llvm::DenseMap, std::allocator>>, llvm::DenseMapInfo, llvm::DenseMapInfo, std::allocator>>>>::clear()"}, + {"_ZN4llvm8DenseMapIPKNS_4SCEVENS_14SmallBitVectorENS_12DenseMapInfoIS3_EENS5_IS4_EEE5clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::clear()"}, + {"_ZN4llvm15ScalarEvolution10getAddExprEPKNS_4SCEVES3_bb", "llvm::ScalarEvolution::getAddExpr(llvm::SCEV const*, llvm::SCEV const*, bool, bool)"}, + {"_ZNK4llvm5APInt3uleEy", "llvm::APInt::ule(unsigned long long) const"}, + {"_ZNSt8_Rb_treeISt4pairImxES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE8_M_eraseEPSt13_Rb_tree_nodeIS1_E", "std::_Rb_tree, std::pair, std::_Identity>, std::less>, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZN4llvm8DenseMapIPKNS_4SCEVENS_14SmallBitVectorENS_12DenseMapInfoIS3_EENS5_IS4_EEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm8DenseMapIPKNS_4SCEVESt3mapIxS3_St4lessIxESaISt4pairIKxS3_EEENS_12DenseMapInfoIS3_EENSC_ISB_EEE16shrink_and_clearEv", "llvm::DenseMap, std::allocator>>, llvm::DenseMapInfo, llvm::DenseMapInfo, std::allocator>>>>::shrink_and_clear()"}, + {"_ZNSt8_Rb_treeISt4pairImxES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE16_M_insert_uniqueERKS1_", "std::_Rb_tree, std::pair, std::_Identity>, std::less>, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPKNS_4SCEVENS_14SmallBitVectorENS_12DenseMapInfoIS3_EENS5_IS4_EEE16FindAndConstructERKS3_", "llvm::DenseMap, llvm::DenseMapInfo>::FindAndConstruct(llvm::SCEV const* const&)"}, + {"_ZN4llvm8DenseMapIPKNS_4SCEVENS_14SmallBitVectorENS_12DenseMapInfoIS3_EENS5_IS4_EEE16InsertIntoBucketERKS3_RKS4_PSt4pairIS3_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::SCEV const* const&, llvm::SmallBitVector const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_4SCEVENS_14SmallBitVectorENS_12DenseMapInfoIS3_EENS5_IS4_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNSt8_Rb_treeIxSt4pairIKxPKN4llvm4SCEVEESt10_Select1stIS6_ESt4lessIxESaIS6_EE16_M_insert_uniqueERKS6_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZNSt8_Rb_treeIxSt4pairIKxPKN4llvm4SCEVEESt10_Select1stIS6_ESt4lessIxESaIS6_EE8_M_eraseEPSt13_Rb_tree_nodeIS6_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZNSt8_Rb_treeIxSt4pairIKxPKN4llvm4SCEVEESt10_Select1stIS6_ESt4lessIxESaIS6_EE7_M_copyEPKSt13_Rb_tree_nodeIS6_EPSE_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_copy(std::_Rb_tree_node> const*, std::_Rb_tree_node>*)"}, + + // {"_ZN4llvm8DenseMapIPKNS_4SCEVESt3mapIxS3_St4lessIxESaISt4pairIKxS3_EEENS_12DenseMapInfoIS3_EENSC_ISB_EEE16InsertIntoBucketERKS3_RKSB_PS7_IS3_SB_E", + // "llvm::DenseMap, std::allocator>>, llvm::DenseMapInfo, llvm::DenseMapInfo, std::allocator>>>>::InsertIntoBucket(llvm::SCEV const* const&, std::map, std::allocator>> const&, std::pair, std::allocator>>>*)"}, + // "llvm::DenseMap, std::allocator>>, llvm::DenseMapInfo, llvm::DenseMapInfo, std::allocator>>>>::InsertIntoBucket(llvm::SCEV const* const&, std::map, std::allocator>> const&, std::pair*, std::allocator>>>)" was returned + + {"_ZN4llvm8DenseMapIPKNS_4SCEVESt3mapIxS3_St4lessIxESaISt4pairIKxS3_EEENS_12DenseMapInfoIS3_EENSC_ISB_EEE4growEj", "llvm::DenseMap, std::allocator>>, llvm::DenseMapInfo, llvm::DenseMapInfo, std::allocator>>>>::grow(unsigned int)"}, + {"_ZNK4llvm14SCEVAddRecExpr17getStepRecurrenceERNS_15ScalarEvolutionE", "llvm::SCEVAddRecExpr::getStepRecurrence(llvm::ScalarEvolution&) const"}, + {"_ZN4llvm15ScalarEvolution13getAddRecExprERKNS_15SmallVectorImplIPKNS_4SCEVEEEPKNS_4LoopEbb", "llvm::ScalarEvolution::getAddRecExpr(llvm::SmallVectorImpl const&, llvm::Loop const*, bool, bool)"}, + + // {"_ZN4llvm8SmallSetIxLj8EE6insertERKx", + // "llvm::SmallSet::insert(long long const&)"}, + // "llvm::SmallSet::insert(long long const&)" was returned + + {"_ZNSt8_Rb_treeIxxSt9_IdentityIxESt4lessIxESaIxEE16_M_insert_uniqueERKx", "std::_Rb_tree, std::less, std::allocator>::_M_insert_unique(long long const&)"}, + {"_ZNK4llvm8LoopBaseINS_10BasicBlockENS_4LoopEE18getLoopPredecessorEv", "llvm::LoopBase::getLoopPredecessor() const"}, + {"_ZN4llvm8LoopPassD1Ev", "llvm::LoopPass::~LoopPass()"}, + {"_ZN4llvm8LoopPassD0Ev", "llvm::LoopPass::~LoopPass()"}, + {"_ZN4llvm24initializeLoopUnrollPassERNS_12PassRegistryE", "llvm::initializeLoopUnrollPass(llvm::PassRegistry&)"}, + {"_ZN4llvm20createLoopUnrollPassEv", "llvm::createLoopUnrollPass()"}, + {"_ZN12_GLOBAL__N_110LoopUnrollD1Ev", "(anonymous namespace)::LoopUnroll::~LoopUnroll()"}, + {"_ZN12_GLOBAL__N_110LoopUnrollD0Ev", "(anonymous namespace)::LoopUnroll::~LoopUnroll()"}, + {"_ZNK12_GLOBAL__N_110LoopUnroll16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::LoopUnroll::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_110LoopUnroll9runOnLoopEPN4llvm4LoopERNS1_13LPPassManagerE", "(anonymous namespace)::LoopUnroll::runOnLoop(llvm::Loop*, llvm::LPPassManager&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_110LoopUnrollEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::LoopUnroll>()"}, + {"_ZN4llvm26initializeLoopUnswitchPassERNS_12PassRegistryE", "llvm::initializeLoopUnswitchPass(llvm::PassRegistry&)"}, + {"_ZN4llvm22createLoopUnswitchPassEb", "llvm::createLoopUnswitchPass(bool)"}, + {"_ZN12_GLOBAL__N_112LoopUnswitchD1Ev", "(anonymous namespace)::LoopUnswitch::~LoopUnswitch()"}, + {"_ZN12_GLOBAL__N_112LoopUnswitchD0Ev", "(anonymous namespace)::LoopUnswitch::~LoopUnswitch()"}, + {"_ZNK12_GLOBAL__N_112LoopUnswitch16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::LoopUnswitch::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_112LoopUnswitch13releaseMemoryEv", "(anonymous namespace)::LoopUnswitch::releaseMemory()"}, + {"_ZN12_GLOBAL__N_112LoopUnswitch9runOnLoopEPN4llvm4LoopERNS1_13LPPassManagerE", "(anonymous namespace)::LoopUnswitch::runOnLoop(llvm::Loop*, llvm::LPPassManager&)"}, + {"_Z20FindLIVLoopConditionPN4llvm5ValueEPNS_4LoopERb", "FindLIVLoopCondition(llvm::Value*, llvm::Loop*, bool&)"}, + {"_ZN12_GLOBAL__N_112LoopUnswitch20UnswitchIfProfitableEPN4llvm5ValueEPNS1_8ConstantE", "(anonymous namespace)::LoopUnswitch::UnswitchIfProfitable(llvm::Value*, llvm::Constant*)"}, + + // {"_Z9CloneLoopPN4llvm4LoopES1_RNS_8ValueMapIPKNS_5ValueENS_10TrackingVHIS3_EENS_14ValueMapConfigIS5_EENS_12DenseMapInfoIS7_EEEEPNS_8LoopInfoEPNS_13LPPassManagerE", + // "CloneLoop(llvm::Loop*, llvm::Loop*, llvm::ValueMap, llvm::ValueMapConfig, llvm::DenseMapInfo>>&, llvm::LoopInfo*, llvm::LPPassManager*)"}, + // "CloneLoop(llvm::Loop*, llvm::Loop*, llvm::ValueMap, llvm::ValueMapConfig, llvm::DenseMapInfo>&, llvm::LoopInfo*, llvm::LPPassManager*)" was returned + + {"_ZN12_GLOBAL__N_112LoopUnswitch30EmitPreheaderBranchOnConditionEPN4llvm5ValueEPNS1_8ConstantEPNS1_10BasicBlockES7_PNS1_11InstructionE", "(anonymous namespace)::LoopUnswitch::EmitPreheaderBranchOnCondition(llvm::Value*, llvm::Constant*, llvm::BasicBlock*, llvm::BasicBlock*, llvm::Instruction*)"}, + {"_ZN12_GLOBAL__N_112LoopUnswitch36RewriteLoopBodyWithConditionConstantEPN4llvm4LoopEPNS1_5ValueEPNS1_8ConstantEb", "(anonymous namespace)::LoopUnswitch::RewriteLoopBodyWithConditionConstant(llvm::Loop*, llvm::Value*, llvm::Constant*, bool)"}, + {"_ZN12_GLOBAL__N_112LoopUnswitch12SimplifyCodeERSt6vectorIPN4llvm11InstructionESaIS4_EEPNS2_4LoopE", "(anonymous namespace)::LoopUnswitch::SimplifyCode(std::vector>&, llvm::Loop*)"}, + {"_Z18RemoveFromWorklistPN4llvm11InstructionERSt6vectorIS1_SaIS1_EE", "RemoveFromWorklist(llvm::Instruction*, std::vector>&)"}, + {"_Z17ReplaceUsesOfWithPN4llvm11InstructionEPNS_5ValueERSt6vectorIS1_SaIS1_EEPNS_4LoopEPNS_13LPPassManagerE", "ReplaceUsesOfWith(llvm::Instruction*, llvm::Value*, std::vector>&, llvm::Loop*, llvm::LPPassManager*)"}, + {"_Z28isTrivialLoopExitBlockHelperPN4llvm4LoopEPNS_10BasicBlockERS3_RSt3setIS3_St4lessIS3_ESaIS3_EE", "isTrivialLoopExitBlockHelper(llvm::Loop*, llvm::BasicBlock*, llvm::BasicBlock*&, std::set, std::allocator>&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_112LoopUnswitchEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::LoopUnswitch>()"}, + + // {"_ZSt6__findIN9__gnu_cxx17__normal_iteratorIPPN4llvm11InstructionESt6vectorIS4_SaIS4_EEEES4_ET_SA_SA_RKT0_St26random_access_iterator_tag", + // "__gnu_cxx::__normal_iterator>> std::__find<__gnu_cxx::__normal_iterator>>, llvm::Instruction*>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, llvm::Instruction* const&, std::random_access_iterator_tag)"}, + // got error + + + // {"_ZNSt6vectorIPN4llvm4UserESaIS2_EEC2INS0_18value_use_iteratorIS1_EEEET_S8_RKS3_", + // "std::vector>::vector>(llvm::value_use_iterator, llvm::value_use_iterator, std::allocator const&)"}, + // got error + + + // {"_ZNSt6vectorIPN4llvm10BasicBlockESaIS2_EE15_M_range_insertIPS2_EEvN9__gnu_cxx17__normal_iteratorIS6_S4_EET_SA_St20forward_iterator_tag", + // "void std::vector>::_M_range_insert(__gnu_cxx::__normal_iterator>>, llvm::BasicBlock**, llvm::BasicBlock**, std::forward_iterator_tag)"}, + // got error + + + // {"_ZNSt6vectorIPN4llvm10BasicBlockESaIS2_EE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPKS2_S4_EEEEvNS7_IPS2_S4_EET_SD_St20forward_iterator_tag", + // "void std::vector>::_M_range_insert<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, std::forward_iterator_tag)"}, + // got error + + {"_ZN4llvm19createMemCpyOptPassEv", "llvm::createMemCpyOptPass()"}, + {"_ZN4llvm23initializeMemCpyOptPassERNS_12PassRegistryE", "llvm::initializeMemCpyOptPass(llvm::PassRegistry&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_19MemCpyOptEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::MemCpyOpt>()"}, + {"_ZN12_GLOBAL__N_19MemCpyOptD1Ev", "(anonymous namespace)::MemCpyOpt::~MemCpyOpt()"}, + {"_ZN12_GLOBAL__N_19MemCpyOptD0Ev", "(anonymous namespace)::MemCpyOpt::~MemCpyOpt()"}, + {"_ZNK12_GLOBAL__N_19MemCpyOpt16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::MemCpyOpt::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_19MemCpyOpt13runOnFunctionERN4llvm8FunctionE", "(anonymous namespace)::MemCpyOpt::runOnFunction(llvm::Function&)"}, + {"_ZN12_GLOBAL__N_19MemCpyOpt20performCallSlotOptznEPN4llvm11InstructionEPNS1_5ValueES5_yPNS1_8CallInstE", "(anonymous namespace)::MemCpyOpt::performCallSlotOptzn(llvm::Instruction*, llvm::Value*, llvm::Value*, unsigned long long, llvm::CallInst*)"}, + {"_ZN12_GLOBAL__N_19MemCpyOpt20tryMergingIntoMemsetEPN4llvm11InstructionEPNS1_5ValueES5_", "(anonymous namespace)::MemCpyOpt::tryMergingIntoMemset(llvm::Instruction*, llvm::Value*, llvm::Value*)"}, + {"_Z15IsPointerOffsetPN4llvm5ValueES1_RxRKNS_10DataLayoutE", "IsPointerOffset(llvm::Value*, llvm::Value*, long long&, llvm::DataLayout const&)"}, + {"_ZN12_GLOBAL__N_112MemsetRanges8addStoreExPN4llvm9StoreInstE", "(anonymous namespace)::MemsetRanges::addStore(long long, llvm::StoreInst*)"}, + {"_ZN12_GLOBAL__N_112MemsetRanges8addRangeExxPN4llvm5ValueEjPNS1_11InstructionE", "(anonymous namespace)::MemsetRanges::addRange(long long, long long, llvm::Value*, unsigned int, llvm::Instruction*)"}, + {"_Z18GetOffsetFromIndexPKN4llvm17GetElementPtrInstEjRbRKNS_10DataLayoutE", "GetOffsetFromIndex(llvm::GetElementPtrInst const*, unsigned int, bool&, llvm::DataLayout const&)"}, + + // {"_ZN4llvm15SmallVectorImplIPNS_4UserEE6appendINS_18value_use_iteratorIS1_EEEEvT_S7_", + // "void llvm::SmallVectorImpl::append>(llvm::value_use_iterator, llvm::value_use_iterator)"}, + // got error + + {"_ZN4llvm25initializeReassociatePassERNS_12PassRegistryE", "llvm::initializeReassociatePass(llvm::PassRegistry&)"}, + {"_ZN4llvm21createReassociatePassEv", "llvm::createReassociatePass()"}, + {"_ZN12_GLOBAL__N_111ReassociateC1Ev", "(anonymous namespace)::Reassociate::Reassociate()"}, + {"_ZN12_GLOBAL__N_111ReassociateD1Ev", "(anonymous namespace)::Reassociate::~Reassociate()"}, + {"_ZN12_GLOBAL__N_111ReassociateD0Ev", "(anonymous namespace)::Reassociate::~Reassociate()"}, + {"_ZNK12_GLOBAL__N_111Reassociate16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::Reassociate::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_111Reassociate13runOnFunctionERN4llvm8FunctionE", "(anonymous namespace)::Reassociate::runOnFunction(llvm::Function&)"}, + {"_Z21LowerNegateToMultiplyPN4llvm11InstructionERNS_8DenseMapINS_11AssertingVHINS_5ValueEEEjNS_12DenseMapInfoIS5_EENS6_IjEEEE", "LowerNegateToMultiply(llvm::Instruction*, llvm::DenseMap, unsigned int, llvm::DenseMapInfo>, llvm::DenseMapInfo>&)"}, + {"_ZN12_GLOBAL__N_111Reassociate21ReassociateExpressionEPN4llvm14BinaryOperatorE", "(anonymous namespace)::Reassociate::ReassociateExpression(llvm::BinaryOperator*)"}, + {"_ZN12_GLOBAL__N_111Reassociate17LinearizeExprTreeEPN4llvm14BinaryOperatorERNS1_15SmallVectorImplINS_10ValueEntryEEE", "(anonymous namespace)::Reassociate::LinearizeExprTree(llvm::BinaryOperator*, llvm::SmallVectorImpl<(anonymous namespace)::ValueEntry>&)"}, + {"_ZN12_GLOBAL__N_111Reassociate18OptimizeExpressionEPN4llvm14BinaryOperatorERNS1_15SmallVectorImplINS_10ValueEntryEEE", "(anonymous namespace)::Reassociate::OptimizeExpression(llvm::BinaryOperator*, llvm::SmallVectorImpl<(anonymous namespace)::ValueEntry>&)"}, + {"_ZN12_GLOBAL__N_111Reassociate18RemoveDeadBinaryOpEPN4llvm5ValueE", "(anonymous namespace)::Reassociate::RemoveDeadBinaryOp(llvm::Value*)"}, + {"_ZN4llvm15SmallVectorImplIN12_GLOBAL__N_110ValueEntryEE6insertEPS2_RKS2_", "llvm::SmallVectorImpl<(anonymous namespace)::ValueEntry>::insert((anonymous namespace)::ValueEntry*, (anonymous namespace)::ValueEntry const&)"}, + {"_ZN12_GLOBAL__N_111Reassociate15RewriteExprTreeEPN4llvm14BinaryOperatorERNS1_15SmallVectorImplINS_10ValueEntryEEEj", "(anonymous namespace)::Reassociate::RewriteExprTree(llvm::BinaryOperator*, llvm::SmallVectorImpl<(anonymous namespace)::ValueEntry>&, unsigned int)"}, + {"_ZN12_GLOBAL__N_111Reassociate7getRankEPN4llvm5ValueE", "(anonymous namespace)::Reassociate::getRank(llvm::Value*)"}, + {"_Z28FindSingleUseMultiplyFactorsPN4llvm5ValueERNS_15SmallVectorImplIS1_EERKNS2_IN12_GLOBAL__N_110ValueEntryEEEb", "FindSingleUseMultiplyFactors(llvm::Value*, llvm::SmallVectorImpl&, llvm::SmallVectorImpl<(anonymous namespace)::ValueEntry> const&, bool)"}, + {"_Z19EmitAddTreeOfValuesPN4llvm11InstructionERNS_15SmallVectorImplIPNS_5ValueEEE", "EmitAddTreeOfValues(llvm::Instruction*, llvm::SmallVectorImpl&)"}, + + // {"_ZSt21__inplace_stable_sortIPN12_GLOBAL__N_110ValueEntryEEvT_S3_", + // "void std::__inplace_stable_sort<(anonymous namespace)::ValueEntry*>((anonymous namespace)::ValueEntry*, (anonymous namespace)::ValueEntry*)"}, + // got error + + + // {"_ZSt22__stable_sort_adaptiveIPN12_GLOBAL__N_110ValueEntryES2_lEvT_S3_T0_T1_", + // "void std::__stable_sort_adaptive<(anonymous namespace)::ValueEntry*, (anonymous namespace)::ValueEntry*, long>((anonymous namespace)::ValueEntry*, (anonymous namespace)::ValueEntry*, (anonymous namespace)::ValueEntry*, long)"}, + // got error + + + // {"_ZSt24__merge_sort_with_bufferIPN12_GLOBAL__N_110ValueEntryES2_EvT_S3_T0_", + // "void std::__merge_sort_with_buffer<(anonymous namespace)::ValueEntry*, (anonymous namespace)::ValueEntry*>((anonymous namespace)::ValueEntry*, (anonymous namespace)::ValueEntry*, (anonymous namespace)::ValueEntry*)"}, + // got error + + + // {"_ZSt16__merge_adaptiveIPN12_GLOBAL__N_110ValueEntryElS2_EvT_S3_S3_T0_S4_T1_S4_", + // "void std::__merge_adaptive<(anonymous namespace)::ValueEntry*, long, (anonymous namespace)::ValueEntry*>((anonymous namespace)::ValueEntry*, (anonymous namespace)::ValueEntry*, (anonymous namespace)::ValueEntry*, long, long, (anonymous namespace)::ValueEntry*, long)"}, + // got error + + + // {"_ZSt6rotateIPN12_GLOBAL__N_110ValueEntryEEvT_S3_S3_", + // "void std::rotate<(anonymous namespace)::ValueEntry*>((anonymous namespace)::ValueEntry*, (anonymous namespace)::ValueEntry*, (anonymous namespace)::ValueEntry*)"}, + // got error + + + // {"_ZSt16__insertion_sortIPN12_GLOBAL__N_110ValueEntryEEvT_S3_", + // "void std::__insertion_sort<(anonymous namespace)::ValueEntry*>((anonymous namespace)::ValueEntry*, (anonymous namespace)::ValueEntry*)"}, + // got error + + + // {"_ZSt22__merge_without_bufferIPN12_GLOBAL__N_110ValueEntryElEvT_S3_S3_T0_S4_", + // "void std::__merge_without_buffer<(anonymous namespace)::ValueEntry*, long>((anonymous namespace)::ValueEntry*, (anonymous namespace)::ValueEntry*, (anonymous namespace)::ValueEntry*, long, long)"}, + // got error + + {"_Z11NegateValuePN4llvm5ValueEPNS_11InstructionE", "NegateValue(llvm::Value*, llvm::Instruction*)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_111ReassociateEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::Reassociate>()"}, + {"_ZN4llvm8DenseMapINS_11AssertingVHINS_5ValueEEEjNS_12DenseMapInfoIS3_EENS4_IjEEE16shrink_and_clearEv", "llvm::DenseMap, unsigned int, llvm::DenseMapInfo>, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm8DenseMapINS_11AssertingVHINS_5ValueEEEjNS_12DenseMapInfoIS3_EENS4_IjEEE16InsertIntoBucketERKS3_RKjPSt4pairIS3_jE", "llvm::DenseMap, unsigned int, llvm::DenseMapInfo>, llvm::DenseMapInfo>::InsertIntoBucket(llvm::AssertingVH const&, unsigned int const&, std::pair, unsigned int>*)"}, + {"_ZN4llvm8DenseMapINS_11AssertingVHINS_5ValueEEEjNS_12DenseMapInfoIS3_EENS4_IjEEE4growEj", "llvm::DenseMap, unsigned int, llvm::DenseMapInfo>, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm25ReversePostOrderTraversalIPNS_8FunctionENS_11GraphTraitsIS2_EEEC2ES2_", "llvm::ReversePostOrderTraversal>::ReversePostOrderTraversal(llvm::Function*)"}, + + // {"_ZSt4copyIN4llvm11po_iteratorIPNS0_10BasicBlockENS0_11SmallPtrSetIS3_Lj8EEELb0ENS0_11GraphTraitsIS3_EEEESt20back_insert_iteratorISt6vectorIS3_SaIS3_EEEET0_T_SF_SE_", + // "std::back_insert_iterator>> std::copy, false, llvm::GraphTraits>, std::back_insert_iterator>>>(llvm::po_iterator, false, llvm::GraphTraits>, llvm::po_iterator, false, llvm::GraphTraits>, std::back_insert_iterator>>)"}, + // got error + + + // {"_ZN4llvm8po_beginIPNS_10BasicBlockEEENS_11po_iteratorIT_NS_11SmallPtrSetIPNS_11GraphTraitsIS4_E8NodeTypeELj8EEELb0ES7_EES4_", + // "llvm::po_iterator::NodeType*, 8u>, false, llvm::GraphTraits> llvm::po_begin(llvm::BasicBlock*)"}, + // "llvm::po_iterator::NodeType*, 8>, false, llvm::GraphTraits::NodeType> llvm::po_begin(llvm::SmallPtrSet)" was returned + + + // {"_ZN4llvm11po_iteratorIPNS_10BasicBlockENS_11SmallPtrSetIS2_Lj8EEELb0ENS_11GraphTraitsIS2_EEE13traverseChildEv", + // "llvm::po_iterator, false, llvm::GraphTraits>::traverseChild()"}, + // "llvm::po_iterator, false, llvm::GraphTraits>::traverseChild()" was returned + + {"_ZNSt6vectorISt4pairIPN4llvm10BasicBlockENS1_12SuccIteratorIPNS1_14TerminatorInstES2_EEESaIS8_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS8_SA_EERKS8_", "std::vector>, std::allocator>>>::_M_insert_aux(__gnu_cxx::__normal_iterator>*, std::vector>, std::allocator>>>>, std::pair> const&)"}, + + // {"_ZNSt13__copy_normalILb0ELb0EE8__copy_nIN4llvm11po_iteratorIPNS2_10BasicBlockENS2_11SmallPtrSetIS5_Lj8EEELb0ENS2_11GraphTraitsIS5_EEEESt20back_insert_iteratorISt6vectorIS5_SaIS5_EEEEET0_T_SH_SG_", + // "std::back_insert_iterator>> std::__copy_normal::__copy_n, false, llvm::GraphTraits>, std::back_insert_iterator>>>(llvm::po_iterator, false, llvm::GraphTraits>, llvm::po_iterator, false, llvm::GraphTraits>, std::back_insert_iterator>>)"}, + // got error + + {"_ZNSt6vectorISt4pairIPN4llvm10BasicBlockENS1_12SuccIteratorIPNS1_14TerminatorInstES2_EEESaIS8_EEC2ERKSA_", "std::vector>, std::allocator>>>::vector(std::vector>, std::allocator>>> const&)"}, + + // {"_ZSt10__copy_auxIN4llvm11po_iteratorIPNS0_10BasicBlockENS0_11SmallPtrSetIS3_Lj8EEELb0ENS0_11GraphTraitsIS3_EEEESt20back_insert_iteratorISt6vectorIS3_SaIS3_EEEET0_T_SF_SE_", + // "std::back_insert_iterator>> std::__copy_aux, false, llvm::GraphTraits>, std::back_insert_iterator>>>(llvm::po_iterator, false, llvm::GraphTraits>, llvm::po_iterator, false, llvm::GraphTraits>, std::back_insert_iterator>>)"}, + // got error + + + // {"_ZNSt6__copyILb0ESt20forward_iterator_tagE4copyIN4llvm11po_iteratorIPNS3_10BasicBlockENS3_11SmallPtrSetIS6_Lj8EEELb0ENS3_11GraphTraitsIS6_EEEESt20back_insert_iteratorISt6vectorIS6_SaIS6_EEEEET0_T_SI_SH_", + // "std::back_insert_iterator>> std::__copy::copy, false, llvm::GraphTraits>, std::back_insert_iterator>>>(llvm::po_iterator, false, llvm::GraphTraits>, llvm::po_iterator, false, llvm::GraphTraits>, std::back_insert_iterator>>)"}, + // got error + + {"_ZN4llvm18initializeSCCPPassERNS_12PassRegistryE", "llvm::initializeSCCPPass(llvm::PassRegistry&)"}, + {"_ZN4llvm14createSCCPPassEv", "llvm::createSCCPPass()"}, + {"_ZN4llvm20initializeIPSCCPPassERNS_12PassRegistryE", "llvm::initializeIPSCCPPass(llvm::PassRegistry&)"}, + {"_ZN4llvm16createIPSCCPPassEv", "llvm::createIPSCCPPass()"}, + {"_ZN12_GLOBAL__N_16IPSCCPD1Ev", "(anonymous namespace)::IPSCCP::~IPSCCP()"}, + {"_ZN12_GLOBAL__N_16IPSCCPD0Ev", "(anonymous namespace)::IPSCCP::~IPSCCP()"}, + {"_ZN12_GLOBAL__N_16IPSCCP11runOnModuleERN4llvm6ModuleE", "(anonymous namespace)::IPSCCP::runOnModule(llvm::Module&)"}, + {"_ZN12_GLOBAL__N_110SCCPSolverC1EPKN4llvm10DataLayoutE", "(anonymous namespace)::SCCPSolver::SCCPSolver(llvm::DataLayout const*)"}, + {"_Z14AddressIsTakenPKN4llvm11GlobalValueE", "AddressIsTaken(llvm::GlobalValue const*)"}, + {"_ZN12_GLOBAL__N_110SCCPSolver23markAnythingOverdefinedEPN4llvm5ValueE", "(anonymous namespace)::SCCPSolver::markAnythingOverdefined(llvm::Value*)"}, + {"_ZN12_GLOBAL__N_110SCCPSolver5SolveEv", "(anonymous namespace)::SCCPSolver::Solve()"}, + {"_ZN12_GLOBAL__N_110SCCPSolver16ResolvedUndefsInERN4llvm8FunctionE", "(anonymous namespace)::SCCPSolver::ResolvedUndefsIn(llvm::Function&)"}, + {"_Z24DeleteInstructionInBlockPN4llvm10BasicBlockE", "DeleteInstructionInBlock(llvm::BasicBlock*)"}, + {"_ZN12_GLOBAL__N_110SCCPSolverD1Ev", "(anonymous namespace)::SCCPSolver::~SCCPSolver()"}, + {"_ZN12_GLOBAL__N_110SCCPSolver19getStructValueStateEPN4llvm5ValueEj", "(anonymous namespace)::SCCPSolver::getStructValueState(llvm::Value*, unsigned int)"}, + {"_ZN12_GLOBAL__N_110SCCPSolver13getValueStateEPN4llvm5ValueE", "(anonymous namespace)::SCCPSolver::getValueState(llvm::Value*)"}, + {"_ZN12_GLOBAL__N_110SCCPSolver18markForcedConstantEPN4llvm5ValueEPNS1_8ConstantE", "(anonymous namespace)::SCCPSolver::markForcedConstant(llvm::Value*, llvm::Constant*)"}, + {"_ZN12_GLOBAL__N_110SCCPSolver15markOverdefinedEPN4llvm5ValueE", "(anonymous namespace)::SCCPSolver::markOverdefined(llvm::Value*)"}, + {"_ZN12_GLOBAL__N_110SCCPSolver18markEdgeExecutableEPN4llvm10BasicBlockES3_", "(anonymous namespace)::SCCPSolver::markEdgeExecutable(llvm::BasicBlock*, llvm::BasicBlock*)"}, + {"_ZN12_GLOBAL__N_110SCCPSolver12visitPHINodeERN4llvm7PHINodeE", "(anonymous namespace)::SCCPSolver::visitPHINode(llvm::PHINode&)"}, + {"_ZN12_GLOBAL__N_110SCCPSolver12markConstantEPN4llvm5ValueEPNS1_8ConstantE", "(anonymous namespace)::SCCPSolver::markConstant(llvm::Value*, llvm::Constant*)"}, + {"_ZN4llvm8DenseMapIPNS_5ValueEN12_GLOBAL__N_110LatticeValENS_12DenseMapInfoIS2_EENS5_IS4_EEE16InsertIntoBucketERKS2_RKS4_PSt4pairIS2_S4_E", "llvm::DenseMap, llvm::DenseMapInfo<(anonymous namespace)::LatticeVal>>::InsertIntoBucket(llvm::Value* const&, (anonymous namespace)::LatticeVal const&, std::pair*)"}, + {"_ZN4llvm11InstVisitorIN12_GLOBAL__N_110SCCPSolverEvE5visitERNS_11InstructionE", "llvm::InstVisitor<(anonymous namespace)::SCCPSolver, void>::visit(llvm::Instruction&)"}, + {"_ZN12_GLOBAL__N_110SCCPSolver12mergeInValueERNS_10LatticeValEPN4llvm5ValueES1_", "(anonymous namespace)::SCCPSolver::mergeInValue((anonymous namespace)::LatticeVal&, llvm::Value*, (anonymous namespace)::LatticeVal)"}, + {"_ZN12_GLOBAL__N_110SCCPSolver12mergeInValueEPN4llvm5ValueENS_10LatticeValE", "(anonymous namespace)::SCCPSolver::mergeInValue(llvm::Value*, (anonymous namespace)::LatticeVal)"}, + {"_ZN12_GLOBAL__N_110SCCPSolver13visitCallSiteEN4llvm8CallSiteE", "(anonymous namespace)::SCCPSolver::visitCallSite(llvm::CallSite)"}, + + // {"_ZNK4llvm8DenseMapISt4pairIPNS_8FunctionEjEN12_GLOBAL__N_110LatticeValENS_12DenseMapInfoIS4_EENS7_IS6_EEE15LookupBucketForERKS4_RPS1_IS4_S6_E", + // "llvm::DenseMap, (anonymous namespace)::LatticeVal, llvm::DenseMapInfo>, llvm::DenseMapInfo<(anonymous namespace)::LatticeVal>>::LookupBucketFor(std::pair const&, std::pair, (anonymous namespace)::LatticeVal>*&) const"}, + // "llvm::DenseMap, (anonymous namespace)::LatticeVal, llvm::DenseMapInfo>, llvm::DenseMapInfo<(anonymous namespace)::LatticeVal>>::LookupBucketFor(std::pair const&, std::pair*&, (anonymous namespace)::LatticeVal>) const" was returned + + + // {"_ZN4llvm8DenseMapISt4pairIPNS_8FunctionEjEN12_GLOBAL__N_110LatticeValENS_12DenseMapInfoIS4_EENS7_IS6_EEE16InsertIntoBucketERKS4_RKS6_PS1_IS4_S6_E", + // "llvm::DenseMap, (anonymous namespace)::LatticeVal, llvm::DenseMapInfo>, llvm::DenseMapInfo<(anonymous namespace)::LatticeVal>>::InsertIntoBucket(std::pair const&, (anonymous namespace)::LatticeVal const&, std::pair, (anonymous namespace)::LatticeVal>*)"}, + // "llvm::DenseMap, (anonymous namespace)::LatticeVal, llvm::DenseMapInfo>, llvm::DenseMapInfo<(anonymous namespace)::LatticeVal>>::InsertIntoBucket(std::pair const&, (anonymous namespace)::LatticeVal const&, std::pair*, (anonymous namespace)::LatticeVal>)" was returned + + {"_ZN12_GLOBAL__N_110SCCPSolver12visitCmpInstERN4llvm7CmpInstE", "(anonymous namespace)::SCCPSolver::visitCmpInst(llvm::CmpInst&)"}, + {"_ZN12_GLOBAL__N_110SCCPSolver23InsertInOverdefinedPHIsEPN4llvm11InstructionEPNS1_7PHINodeE", "(anonymous namespace)::SCCPSolver::InsertInOverdefinedPHIs(llvm::Instruction*, llvm::PHINode*)"}, + {"_ZN12_GLOBAL__N_110SCCPSolver25RemoveFromOverdefinedPHIsEPN4llvm11InstructionEPNS1_7PHINodeE", "(anonymous namespace)::SCCPSolver::RemoveFromOverdefinedPHIs(llvm::Instruction*, llvm::PHINode*)"}, + {"_ZN12_GLOBAL__N_110SCCPSolver13visitCastInstERN4llvm8CastInstE", "(anonymous namespace)::SCCPSolver::visitCastInst(llvm::CastInst&)"}, + {"_ZN12_GLOBAL__N_110SCCPSolver19visitBinaryOperatorERN4llvm11InstructionE", "(anonymous namespace)::SCCPSolver::visitBinaryOperator(llvm::Instruction&)"}, + {"_ZN12_GLOBAL__N_110SCCPSolver19visitTerminatorInstERN4llvm14TerminatorInstE", "(anonymous namespace)::SCCPSolver::visitTerminatorInst(llvm::TerminatorInst&)"}, + + // {"_ZNK4llvm8DenseMapISt4pairIPNS_5ValueEjEN12_GLOBAL__N_110LatticeValENS_12DenseMapInfoIS4_EENS7_IS6_EEE15LookupBucketForERKS4_RPS1_IS4_S6_E", + // "llvm::DenseMap, (anonymous namespace)::LatticeVal, llvm::DenseMapInfo>, llvm::DenseMapInfo<(anonymous namespace)::LatticeVal>>::LookupBucketFor(std::pair const&, std::pair, (anonymous namespace)::LatticeVal>*&) const"}, + // "llvm::DenseMap, (anonymous namespace)::LatticeVal, llvm::DenseMapInfo>, llvm::DenseMapInfo<(anonymous namespace)::LatticeVal>>::LookupBucketFor(std::pair const&, std::pair*&, (anonymous namespace)::LatticeVal>) const" was returned + + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_16IPSCCPEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::IPSCCP>()"}, + {"_ZN12_GLOBAL__N_14SCCPD1Ev", "(anonymous namespace)::SCCP::~SCCP()"}, + {"_ZN12_GLOBAL__N_14SCCPD0Ev", "(anonymous namespace)::SCCP::~SCCP()"}, + {"_ZN12_GLOBAL__N_14SCCP13runOnFunctionERN4llvm8FunctionE", "(anonymous namespace)::SCCP::runOnFunction(llvm::Function&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_14SCCPEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::SCCP>()"}, + {"_ZNSt8_Rb_treeIPN4llvm7PHINodeESt4pairIKS2_PNS0_11InstructionEESt10_Select1stIS7_ESt4lessIS2_ESaIS7_EE8_M_eraseEPSt13_Rb_tree_nodeIS7_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + + // {"_ZN4llvm8DenseMapISt4pairIPNS_10BasicBlockES3_EcNS_12DenseMapInfoIS4_EENS5_IcEEE6insertERKS1_IS4_cE", + // "llvm::DenseMap, char, llvm::DenseMapInfo>, llvm::DenseMapInfo>::insert(std::pair, char> const&)"}, + // "llvm::DenseMap, char, llvm::DenseMapInfo>, llvm::DenseMapInfo>::insert(std::pair const&, char>)" was returned + + + // {"_ZNK4llvm8DenseMapISt4pairIPNS_10BasicBlockES3_EcNS_12DenseMapInfoIS4_EENS5_IcEEE15LookupBucketForERKS4_RPS1_IS4_cE", + // "llvm::DenseMap, char, llvm::DenseMapInfo>, llvm::DenseMapInfo>::LookupBucketFor(std::pair const&, std::pair, char>*&) const"}, + // "llvm::DenseMap, char, llvm::DenseMapInfo>, llvm::DenseMapInfo>::LookupBucketFor(std::pair const&, std::pair*&, char>) const" was returned + + + // {"_ZN4llvm8DenseMapISt4pairIPNS_10BasicBlockES3_EcNS_12DenseMapInfoIS4_EENS5_IcEEE16InsertIntoBucketERKS4_RKcPS1_IS4_cE", + // "llvm::DenseMap, char, llvm::DenseMapInfo>, llvm::DenseMapInfo>::InsertIntoBucket(std::pair const&, char const&, std::pair, char>*)"}, + // "llvm::DenseMap, char, llvm::DenseMapInfo>, llvm::DenseMapInfo>::InsertIntoBucket(std::pair const&, char const&, std::pair*, char>)" was returned + + {"_ZN4llvm8DenseMapISt4pairIPNS_10BasicBlockES3_EcNS_12DenseMapInfoIS4_EENS5_IcEEE4growEj", "llvm::DenseMap, char, llvm::DenseMapInfo>, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm21initializeSROA_DTPassERNS_12PassRegistryE", "llvm::initializeSROA_DTPass(llvm::PassRegistry&)"}, + {"_ZN4llvm24initializeSROA_SSAUpPassERNS_12PassRegistryE", "llvm::initializeSROA_SSAUpPass(llvm::PassRegistry&)"}, + {"_ZN4llvm30createScalarReplAggregatesPassEib", "llvm::createScalarReplAggregatesPass(int, bool)"}, + {"_ZN12_GLOBAL__N_110SROA_SSAUpD1Ev", "(anonymous namespace)::SROA_SSAUp::~SROA_SSAUp()"}, + {"_ZN12_GLOBAL__N_110SROA_SSAUpD0Ev", "(anonymous namespace)::SROA_SSAUp::~SROA_SSAUp()"}, + {"_ZNK12_GLOBAL__N_110SROA_SSAUp16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::SROA_SSAUp::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_14SROA13runOnFunctionERN4llvm8FunctionE", "(anonymous namespace)::SROA::runOnFunction(llvm::Function&)"}, + {"_ZN12_GLOBAL__N_14SROA16performPromotionERN4llvm8FunctionE", "(anonymous namespace)::SROA::performPromotion(llvm::Function&)"}, + {"_ZN12_GLOBAL__N_119ConvertToScalarInfo18CanConvertToScalarEPN4llvm5ValueEy", "(anonymous namespace)::ConvertToScalarInfo::CanConvertToScalar(llvm::Value*, unsigned long long)"}, + {"_ZN12_GLOBAL__N_119ConvertToScalarInfo19ConvertUsesToScalarEPN4llvm5ValueEPNS1_10AllocaInstEy", "(anonymous namespace)::ConvertToScalarInfo::ConvertUsesToScalar(llvm::Value*, llvm::AllocaInst*, unsigned long long)"}, + {"_ZN12_GLOBAL__N_119ConvertToScalarInfo26ConvertScalar_ExtractValueEPN4llvm5ValueEPKNS1_4TypeEyRNS1_9IRBuilderILb1ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb1EEEEE", "(anonymous namespace)::ConvertToScalarInfo::ConvertScalar_ExtractValue(llvm::Value*, llvm::Type const*, unsigned long long, llvm::IRBuilder>&)"}, + {"_ZN12_GLOBAL__N_119ConvertToScalarInfo25ConvertScalar_InsertValueEPN4llvm5ValueES3_yRNS1_9IRBuilderILb1ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb1EEEEE", "(anonymous namespace)::ConvertToScalarInfo::ConvertScalar_InsertValue(llvm::Value*, llvm::Value*, unsigned long long, llvm::IRBuilder>&)"}, + {"_ZN12_GLOBAL__N_119ConvertToScalarInfo11MergeInTypeEPKN4llvm4TypeEy", "(anonymous namespace)::ConvertToScalarInfo::MergeInType(llvm::Type const*, unsigned long long)"}, + + // {"_ZN12_GLOBAL__N_14SROA20RewriteForScalarReplEPN4llvm11InstructionEPNS1_10AllocaInstEyRNS1_11SmallVectorIS5_Lj32EEE", + // "(anonymous namespace)::SROA::RewriteForScalarRepl(llvm::Instruction*, llvm::AllocaInst*, unsigned long long, llvm::SmallVector&)"}, + // "(anonymous namespace)::SROA::RewriteForScalarRepl(llvm::Instruction*, llvm::AllocaInst*, unsigned long long, llvm::SmallVector&)" was returned + + {"_ZN12_GLOBAL__N_14SROA20FindElementAndOffsetERPKN4llvm4TypeERyS5_", "(anonymous namespace)::SROA::FindElementAndOffset(llvm::Type const*&, unsigned long long&, llvm::Type const*&)"}, + {"_ZN12_GLOBAL__N_14SROA19isSafeForScalarReplEPN4llvm11InstructionEyRNS0_10AllocaInfoE", "(anonymous namespace)::SROA::isSafeForScalarRepl(llvm::Instruction*, unsigned long long, (anonymous namespace)::SROA::AllocaInfo&)"}, + {"_ZN12_GLOBAL__N_14SROA15isSafeMemAccessEyyPKN4llvm4TypeEbRNS0_10AllocaInfoEPNS1_11InstructionEb", "(anonymous namespace)::SROA::isSafeMemAccess(unsigned long long, unsigned long long, llvm::Type const*, bool, (anonymous namespace)::SROA::AllocaInfo&, llvm::Instruction*, bool)"}, + {"_ZN12_GLOBAL__N_14SROA31isSafePHISelectUseForScalarReplEPN4llvm11InstructionEyRNS0_10AllocaInfoE", "(anonymous namespace)::SROA::isSafePHISelectUseForScalarRepl(llvm::Instruction*, unsigned long long, (anonymous namespace)::SROA::AllocaInfo&)"}, + {"_ZN12_GLOBAL__N_14SROA16TypeHasComponentEPKN4llvm4TypeEyy", "(anonymous namespace)::SROA::TypeHasComponent(llvm::Type const*, unsigned long long, unsigned long long)"}, + {"_Z30isOnlyCopiedFromConstantGlobalPN4llvm5ValueERPNS_15MemTransferInstEb", "isOnlyCopiedFromConstantGlobal(llvm::Value*, llvm::MemTransferInst*&, bool)"}, + {"_Z27tryToMakeAllocaBePromotablePN4llvm10AllocaInstEPKNS_10DataLayoutE", "tryToMakeAllocaBePromotable(llvm::AllocaInst*, llvm::DataLayout const*)"}, + {"_ZN12_GLOBAL__N_114AllocaPromoterD1Ev", "(anonymous namespace)::AllocaPromoter::~AllocaPromoter()"}, + {"_ZN12_GLOBAL__N_114AllocaPromoterD0Ev", "(anonymous namespace)::AllocaPromoter::~AllocaPromoter()"}, + {"_ZNK12_GLOBAL__N_114AllocaPromoter12isInstInListEPN4llvm11InstructionERKNS1_15SmallVectorImplIS3_EE", "(anonymous namespace)::AllocaPromoter::isInstInList(llvm::Instruction*, llvm::SmallVectorImpl const&) const"}, + {"_ZN12_GLOBAL__N_14SROAD1Ev", "(anonymous namespace)::SROA::~SROA()"}, + {"_ZN12_GLOBAL__N_14SROAD0Ev", "(anonymous namespace)::SROA::~SROA()"}, + {"_ZN12_GLOBAL__N_17SROA_DTD1Ev", "(anonymous namespace)::SROA_DT::~SROA_DT()"}, + {"_ZN12_GLOBAL__N_17SROA_DTD0Ev", "(anonymous namespace)::SROA_DT::~SROA_DT()"}, + {"_ZNK12_GLOBAL__N_17SROA_DT16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::SROA_DT::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_110SROA_SSAUpEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::SROA_SSAUp>()"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_17SROA_DTEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::SROA_DT>()"}, + {"_ZN4llvm9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEE10CreateLoadEPNS_5ValueERKNS_5TwineE", "llvm::IRBuilder>::CreateLoad(llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEE19CreateInsertElementEPNS_5ValueES6_S6_RKNS_5TwineE", "llvm::IRBuilder>::CreateInsertElement(llvm::Value*, llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEE18CreateExtractValueEPNS_5ValueEjRKNS_5TwineE", "llvm::IRBuilder>::CreateExtractValue(llvm::Value*, unsigned int, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEE20CreateExtractElementEPNS_5ValueES6_RKNS_5TwineE", "llvm::IRBuilder>::CreateExtractElement(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEE17CreateInsertValueEPNS_5ValueES6_jRKNS_5TwineE", "llvm::IRBuilder>::CreateInsertValue(llvm::Value*, llvm::Value*, unsigned int, llvm::Twine const&)"}, + + // {"_ZN4llvm11SmallVectorIPNS_8ConstantELj16EEC2EjRKS2_", + // "llvm::SmallVector::SmallVector(unsigned int, llvm::Constant* const&)"}, + // "llvm::SmallVector::SmallVector(unsigned int, llvm::Constant* const&)" was returned + + {"_ZNSt6vectorIPN4llvm10AllocaInstESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::AllocaInst* const&)"}, + {"_ZN4llvm8DenseMapIPNS_10BasicBlockEPNS_8LoadInstENS_12DenseMapInfoIS2_EENS5_IS4_EEE16InsertIntoBucketERKS2_RKS4_PSt4pairIS2_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::BasicBlock* const&, llvm::LoadInst* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_10BasicBlockEPNS_8LoadInstENS_12DenseMapInfoIS2_EENS5_IS4_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm29initializeCFGSimplifyPassPassERNS_12PassRegistryE", "llvm::initializeCFGSimplifyPassPass(llvm::PassRegistry&)"}, + {"_ZN4llvm27createCFGSimplificationPassEv", "llvm::createCFGSimplificationPass()"}, + {"_ZN12_GLOBAL__N_115CFGSimplifyPassD1Ev", "(anonymous namespace)::CFGSimplifyPass::~CFGSimplifyPass()"}, + {"_ZN12_GLOBAL__N_115CFGSimplifyPassD0Ev", "(anonymous namespace)::CFGSimplifyPass::~CFGSimplifyPass()"}, + {"_ZN12_GLOBAL__N_115CFGSimplifyPass13runOnFunctionERN4llvm8FunctionE", "(anonymous namespace)::CFGSimplifyPass::runOnFunction(llvm::Function&)"}, + {"_Z29RemoveUnreachableBlocksFromFnRN4llvm8FunctionE", "RemoveUnreachableBlocksFromFn(llvm::Function&)"}, + {"_Z20IterativeSimplifyCFGRN4llvm8FunctionEPKNS_10DataLayoutE", "IterativeSimplifyCFG(llvm::Function&, llvm::DataLayout const*)"}, + {"_Z19ChangeToUnreachablePN4llvm11InstructionEb", "ChangeToUnreachable(llvm::Instruction*, bool)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_115CFGSimplifyPassEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::CFGSimplifyPass>()"}, + {"_ZN4llvm30initializeSimplifyLibCallsPassERNS_12PassRegistryE", "llvm::initializeSimplifyLibCallsPass(llvm::PassRegistry&)"}, + {"_ZN4llvm26createSimplifyLibCallsPassEv", "llvm::createSimplifyLibCallsPass()"}, + {"_ZN12_GLOBAL__N_116SimplifyLibCallsD1Ev", "(anonymous namespace)::SimplifyLibCalls::~SimplifyLibCalls()"}, + {"_ZN12_GLOBAL__N_116SimplifyLibCallsD0Ev", "(anonymous namespace)::SimplifyLibCalls::~SimplifyLibCalls()"}, + {"_ZNK12_GLOBAL__N_116SimplifyLibCalls16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::SimplifyLibCalls::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_116SimplifyLibCalls16doInitializationERN4llvm6ModuleE", "(anonymous namespace)::SimplifyLibCalls::doInitialization(llvm::Module&)"}, + {"_ZN12_GLOBAL__N_116SimplifyLibCalls13runOnFunctionERN4llvm8FunctionE", "(anonymous namespace)::SimplifyLibCalls::runOnFunction(llvm::Function&)"}, + {"_ZN4llvm9StringMapIPN12_GLOBAL__N_119LibCallOptimizationENS_15MallocAllocatorEEixENS_9StringRefE", "llvm::StringMap<(anonymous namespace)::LibCallOptimization*, llvm::MallocAllocator>::operator[](llvm::StringRef)"}, + {"_ZN12_GLOBAL__N_116SimplifyLibCalls15setDoesNotThrowERN4llvm8FunctionE", "(anonymous namespace)::SimplifyLibCalls::setDoesNotThrow(llvm::Function&)"}, + {"_ZN12_GLOBAL__N_116SimplifyLibCalls15setDoesNotAliasERN4llvm8FunctionEj", "(anonymous namespace)::SimplifyLibCalls::setDoesNotAlias(llvm::Function&, unsigned int)"}, + {"_ZN12_GLOBAL__N_116SimplifyLibCalls22setDoesNotAccessMemoryERN4llvm8FunctionE", "(anonymous namespace)::SimplifyLibCalls::setDoesNotAccessMemory(llvm::Function&)"}, + {"_ZN12_GLOBAL__N_17PutsOptD1Ev", "(anonymous namespace)::PutsOpt::~PutsOpt()"}, + {"_ZN12_GLOBAL__N_110FPrintFOptD1Ev", "(anonymous namespace)::FPrintFOpt::~FPrintFOpt()"}, + {"_ZN12_GLOBAL__N_18FPutsOptD1Ev", "(anonymous namespace)::FPutsOpt::~FPutsOpt()"}, + {"_ZN12_GLOBAL__N_19FWriteOptD1Ev", "(anonymous namespace)::FWriteOpt::~FWriteOpt()"}, + {"_ZN12_GLOBAL__N_19PrintFOptD1Ev", "(anonymous namespace)::PrintFOpt::~PrintFOpt()"}, + {"_ZN12_GLOBAL__N_110SPrintFOptD1Ev", "(anonymous namespace)::SPrintFOpt::~SPrintFOpt()"}, + {"_ZN12_GLOBAL__N_110ToAsciiOptD1Ev", "(anonymous namespace)::ToAsciiOpt::~ToAsciiOpt()"}, + {"_ZN12_GLOBAL__N_110IsAsciiOptD1Ev", "(anonymous namespace)::IsAsciiOpt::~IsAsciiOpt()"}, + {"_ZN12_GLOBAL__N_110IsDigitOptD1Ev", "(anonymous namespace)::IsDigitOpt::~IsDigitOpt()"}, + {"_ZN12_GLOBAL__N_16AbsOptD1Ev", "(anonymous namespace)::AbsOpt::~AbsOpt()"}, + {"_ZN12_GLOBAL__N_16FFSOptD1Ev", "(anonymous namespace)::FFSOpt::~FFSOpt()"}, + {"_ZN12_GLOBAL__N_116UnaryDoubleFPOptD1Ev", "(anonymous namespace)::UnaryDoubleFPOpt::~UnaryDoubleFPOpt()"}, + {"_ZN12_GLOBAL__N_17Exp2OptD1Ev", "(anonymous namespace)::Exp2Opt::~Exp2Opt()"}, + {"_ZN12_GLOBAL__N_16PowOptD1Ev", "(anonymous namespace)::PowOpt::~PowOpt()"}, + {"_ZN12_GLOBAL__N_19MemSetOptD1Ev", "(anonymous namespace)::MemSetOpt::~MemSetOpt()"}, + {"_ZN12_GLOBAL__N_110MemMoveOptD1Ev", "(anonymous namespace)::MemMoveOpt::~MemMoveOpt()"}, + {"_ZN12_GLOBAL__N_19MemCpyOptD1Ev", "(anonymous namespace)::MemCpyOpt::~MemCpyOpt()"}, + {"_ZN12_GLOBAL__N_19MemCmpOptD1Ev", "(anonymous namespace)::MemCmpOpt::~MemCmpOpt()"}, + {"_ZN12_GLOBAL__N_19StrStrOptD1Ev", "(anonymous namespace)::StrStrOpt::~StrStrOpt()"}, + {"_ZN12_GLOBAL__N_110StrCSpnOptD1Ev", "(anonymous namespace)::StrCSpnOpt::~StrCSpnOpt()"}, + {"_ZN12_GLOBAL__N_19StrSpnOptD1Ev", "(anonymous namespace)::StrSpnOpt::~StrSpnOpt()"}, + {"_ZN12_GLOBAL__N_18StrToOptD1Ev", "(anonymous namespace)::StrToOpt::~StrToOpt()"}, + {"_ZN12_GLOBAL__N_110StrPBrkOptD1Ev", "(anonymous namespace)::StrPBrkOpt::~StrPBrkOpt()"}, + {"_ZN12_GLOBAL__N_19StrLenOptD1Ev", "(anonymous namespace)::StrLenOpt::~StrLenOpt()"}, + {"_ZN12_GLOBAL__N_110StrNCpyOptD1Ev", "(anonymous namespace)::StrNCpyOpt::~StrNCpyOpt()"}, + {"_ZN12_GLOBAL__N_19StrCpyOptD1Ev", "(anonymous namespace)::StrCpyOpt::~StrCpyOpt()"}, + {"_ZN12_GLOBAL__N_110StrNCmpOptD1Ev", "(anonymous namespace)::StrNCmpOpt::~StrNCmpOpt()"}, + {"_ZN12_GLOBAL__N_19StrCmpOptD1Ev", "(anonymous namespace)::StrCmpOpt::~StrCmpOpt()"}, + {"_ZN12_GLOBAL__N_110StrRChrOptD1Ev", "(anonymous namespace)::StrRChrOpt::~StrRChrOpt()"}, + {"_ZN12_GLOBAL__N_19StrChrOptD1Ev", "(anonymous namespace)::StrChrOpt::~StrChrOpt()"}, + {"_ZN12_GLOBAL__N_110StrNCatOptD1Ev", "(anonymous namespace)::StrNCatOpt::~StrNCatOpt()"}, + {"_ZN12_GLOBAL__N_19StrCatOptD1Ev", "(anonymous namespace)::StrCatOpt::~StrCatOpt()"}, + {"_ZN12_GLOBAL__N_19StrCatOptD0Ev", "(anonymous namespace)::StrCatOpt::~StrCatOpt()"}, + {"_ZN12_GLOBAL__N_19StrCatOpt13CallOptimizerEPN4llvm8FunctionEPNS1_8CallInstERNS1_9IRBuilderILb1ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb1EEEEE", "(anonymous namespace)::StrCatOpt::CallOptimizer(llvm::Function*, llvm::CallInst*, llvm::IRBuilder>&)"}, + {"_ZN12_GLOBAL__N_119LibCallOptimizationD1Ev", "(anonymous namespace)::LibCallOptimization::~LibCallOptimization()"}, + {"_ZN12_GLOBAL__N_119LibCallOptimizationD0Ev", "(anonymous namespace)::LibCallOptimization::~LibCallOptimization()"}, + {"_ZN12_GLOBAL__N_110StrNCatOptD0Ev", "(anonymous namespace)::StrNCatOpt::~StrNCatOpt()"}, + {"_ZN12_GLOBAL__N_110StrNCatOpt13CallOptimizerEPN4llvm8FunctionEPNS1_8CallInstERNS1_9IRBuilderILb1ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb1EEEEE", "(anonymous namespace)::StrNCatOpt::CallOptimizer(llvm::Function*, llvm::CallInst*, llvm::IRBuilder>&)"}, + {"_ZN12_GLOBAL__N_19StrChrOptD0Ev", "(anonymous namespace)::StrChrOpt::~StrChrOpt()"}, + {"_ZN12_GLOBAL__N_19StrChrOpt13CallOptimizerEPN4llvm8FunctionEPNS1_8CallInstERNS1_9IRBuilderILb1ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb1EEEEE", "(anonymous namespace)::StrChrOpt::CallOptimizer(llvm::Function*, llvm::CallInst*, llvm::IRBuilder>&)"}, + {"_ZN12_GLOBAL__N_110StrRChrOptD0Ev", "(anonymous namespace)::StrRChrOpt::~StrRChrOpt()"}, + {"_ZN12_GLOBAL__N_110StrRChrOpt13CallOptimizerEPN4llvm8FunctionEPNS1_8CallInstERNS1_9IRBuilderILb1ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb1EEEEE", "(anonymous namespace)::StrRChrOpt::CallOptimizer(llvm::Function*, llvm::CallInst*, llvm::IRBuilder>&)"}, + {"_ZN12_GLOBAL__N_19StrCmpOptD0Ev", "(anonymous namespace)::StrCmpOpt::~StrCmpOpt()"}, + {"_ZN12_GLOBAL__N_19StrCmpOpt13CallOptimizerEPN4llvm8FunctionEPNS1_8CallInstERNS1_9IRBuilderILb1ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb1EEEEE", "(anonymous namespace)::StrCmpOpt::CallOptimizer(llvm::Function*, llvm::CallInst*, llvm::IRBuilder>&)"}, + {"_ZN12_GLOBAL__N_110StrNCmpOptD0Ev", "(anonymous namespace)::StrNCmpOpt::~StrNCmpOpt()"}, + {"_ZN12_GLOBAL__N_110StrNCmpOpt13CallOptimizerEPN4llvm8FunctionEPNS1_8CallInstERNS1_9IRBuilderILb1ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb1EEEEE", "(anonymous namespace)::StrNCmpOpt::CallOptimizer(llvm::Function*, llvm::CallInst*, llvm::IRBuilder>&)"}, + {"_ZN12_GLOBAL__N_19StrCpyOptD0Ev", "(anonymous namespace)::StrCpyOpt::~StrCpyOpt()"}, + {"_ZN12_GLOBAL__N_19StrCpyOpt13CallOptimizerEPN4llvm8FunctionEPNS1_8CallInstERNS1_9IRBuilderILb1ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb1EEEEE", "(anonymous namespace)::StrCpyOpt::CallOptimizer(llvm::Function*, llvm::CallInst*, llvm::IRBuilder>&)"}, + {"_ZN12_GLOBAL__N_110StrNCpyOptD0Ev", "(anonymous namespace)::StrNCpyOpt::~StrNCpyOpt()"}, + {"_ZN12_GLOBAL__N_110StrNCpyOpt13CallOptimizerEPN4llvm8FunctionEPNS1_8CallInstERNS1_9IRBuilderILb1ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb1EEEEE", "(anonymous namespace)::StrNCpyOpt::CallOptimizer(llvm::Function*, llvm::CallInst*, llvm::IRBuilder>&)"}, + {"_ZN12_GLOBAL__N_19StrLenOptD0Ev", "(anonymous namespace)::StrLenOpt::~StrLenOpt()"}, + {"_ZN12_GLOBAL__N_19StrLenOpt13CallOptimizerEPN4llvm8FunctionEPNS1_8CallInstERNS1_9IRBuilderILb1ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb1EEEEE", "(anonymous namespace)::StrLenOpt::CallOptimizer(llvm::Function*, llvm::CallInst*, llvm::IRBuilder>&)"}, + {"_ZN12_GLOBAL__N_110StrPBrkOptD0Ev", "(anonymous namespace)::StrPBrkOpt::~StrPBrkOpt()"}, + {"_ZN12_GLOBAL__N_110StrPBrkOpt13CallOptimizerEPN4llvm8FunctionEPNS1_8CallInstERNS1_9IRBuilderILb1ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb1EEEEE", "(anonymous namespace)::StrPBrkOpt::CallOptimizer(llvm::Function*, llvm::CallInst*, llvm::IRBuilder>&)"}, + {"_ZN12_GLOBAL__N_18StrToOptD0Ev", "(anonymous namespace)::StrToOpt::~StrToOpt()"}, + {"_ZN12_GLOBAL__N_18StrToOpt13CallOptimizerEPN4llvm8FunctionEPNS1_8CallInstERNS1_9IRBuilderILb1ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb1EEEEE", "(anonymous namespace)::StrToOpt::CallOptimizer(llvm::Function*, llvm::CallInst*, llvm::IRBuilder>&)"}, + {"_ZN12_GLOBAL__N_19StrSpnOptD0Ev", "(anonymous namespace)::StrSpnOpt::~StrSpnOpt()"}, + {"_ZN12_GLOBAL__N_19StrSpnOpt13CallOptimizerEPN4llvm8FunctionEPNS1_8CallInstERNS1_9IRBuilderILb1ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb1EEEEE", "(anonymous namespace)::StrSpnOpt::CallOptimizer(llvm::Function*, llvm::CallInst*, llvm::IRBuilder>&)"}, + {"_ZN12_GLOBAL__N_110StrCSpnOptD0Ev", "(anonymous namespace)::StrCSpnOpt::~StrCSpnOpt()"}, + {"_ZN12_GLOBAL__N_110StrCSpnOpt13CallOptimizerEPN4llvm8FunctionEPNS1_8CallInstERNS1_9IRBuilderILb1ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb1EEEEE", "(anonymous namespace)::StrCSpnOpt::CallOptimizer(llvm::Function*, llvm::CallInst*, llvm::IRBuilder>&)"}, + {"_ZN12_GLOBAL__N_19StrStrOptD0Ev", "(anonymous namespace)::StrStrOpt::~StrStrOpt()"}, + {"_ZN12_GLOBAL__N_19StrStrOpt13CallOptimizerEPN4llvm8FunctionEPNS1_8CallInstERNS1_9IRBuilderILb1ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb1EEEEE", "(anonymous namespace)::StrStrOpt::CallOptimizer(llvm::Function*, llvm::CallInst*, llvm::IRBuilder>&)"}, + {"_ZN12_GLOBAL__N_19MemCmpOptD0Ev", "(anonymous namespace)::MemCmpOpt::~MemCmpOpt()"}, + {"_ZN12_GLOBAL__N_19MemCmpOpt13CallOptimizerEPN4llvm8FunctionEPNS1_8CallInstERNS1_9IRBuilderILb1ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb1EEEEE", "(anonymous namespace)::MemCmpOpt::CallOptimizer(llvm::Function*, llvm::CallInst*, llvm::IRBuilder>&)"}, + {"_ZN12_GLOBAL__N_19MemCpyOptD0Ev", "(anonymous namespace)::MemCpyOpt::~MemCpyOpt()"}, + {"_ZN12_GLOBAL__N_19MemCpyOpt13CallOptimizerEPN4llvm8FunctionEPNS1_8CallInstERNS1_9IRBuilderILb1ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb1EEEEE", "(anonymous namespace)::MemCpyOpt::CallOptimizer(llvm::Function*, llvm::CallInst*, llvm::IRBuilder>&)"}, + {"_ZN12_GLOBAL__N_110MemMoveOptD0Ev", "(anonymous namespace)::MemMoveOpt::~MemMoveOpt()"}, + {"_ZN12_GLOBAL__N_110MemMoveOpt13CallOptimizerEPN4llvm8FunctionEPNS1_8CallInstERNS1_9IRBuilderILb1ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb1EEEEE", "(anonymous namespace)::MemMoveOpt::CallOptimizer(llvm::Function*, llvm::CallInst*, llvm::IRBuilder>&)"}, + {"_ZN12_GLOBAL__N_19MemSetOptD0Ev", "(anonymous namespace)::MemSetOpt::~MemSetOpt()"}, + {"_ZN12_GLOBAL__N_19MemSetOpt13CallOptimizerEPN4llvm8FunctionEPNS1_8CallInstERNS1_9IRBuilderILb1ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb1EEEEE", "(anonymous namespace)::MemSetOpt::CallOptimizer(llvm::Function*, llvm::CallInst*, llvm::IRBuilder>&)"}, + {"_ZN12_GLOBAL__N_16PowOptD0Ev", "(anonymous namespace)::PowOpt::~PowOpt()"}, + {"_ZN12_GLOBAL__N_16PowOpt13CallOptimizerEPN4llvm8FunctionEPNS1_8CallInstERNS1_9IRBuilderILb1ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb1EEEEE", "(anonymous namespace)::PowOpt::CallOptimizer(llvm::Function*, llvm::CallInst*, llvm::IRBuilder>&)"}, + {"_ZN12_GLOBAL__N_17Exp2OptD0Ev", "(anonymous namespace)::Exp2Opt::~Exp2Opt()"}, + {"_ZN12_GLOBAL__N_17Exp2Opt13CallOptimizerEPN4llvm8FunctionEPNS1_8CallInstERNS1_9IRBuilderILb1ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb1EEEEE", "(anonymous namespace)::Exp2Opt::CallOptimizer(llvm::Function*, llvm::CallInst*, llvm::IRBuilder>&)"}, + {"_ZN12_GLOBAL__N_116UnaryDoubleFPOptD0Ev", "(anonymous namespace)::UnaryDoubleFPOpt::~UnaryDoubleFPOpt()"}, + {"_ZN12_GLOBAL__N_116UnaryDoubleFPOpt13CallOptimizerEPN4llvm8FunctionEPNS1_8CallInstERNS1_9IRBuilderILb1ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb1EEEEE", "(anonymous namespace)::UnaryDoubleFPOpt::CallOptimizer(llvm::Function*, llvm::CallInst*, llvm::IRBuilder>&)"}, + {"_ZN12_GLOBAL__N_16FFSOptD0Ev", "(anonymous namespace)::FFSOpt::~FFSOpt()"}, + {"_ZN12_GLOBAL__N_16FFSOpt13CallOptimizerEPN4llvm8FunctionEPNS1_8CallInstERNS1_9IRBuilderILb1ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb1EEEEE", "(anonymous namespace)::FFSOpt::CallOptimizer(llvm::Function*, llvm::CallInst*, llvm::IRBuilder>&)"}, + {"_ZN12_GLOBAL__N_16AbsOptD0Ev", "(anonymous namespace)::AbsOpt::~AbsOpt()"}, + {"_ZN12_GLOBAL__N_16AbsOpt13CallOptimizerEPN4llvm8FunctionEPNS1_8CallInstERNS1_9IRBuilderILb1ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb1EEEEE", "(anonymous namespace)::AbsOpt::CallOptimizer(llvm::Function*, llvm::CallInst*, llvm::IRBuilder>&)"}, + {"_ZN12_GLOBAL__N_110IsDigitOptD0Ev", "(anonymous namespace)::IsDigitOpt::~IsDigitOpt()"}, + {"_ZN12_GLOBAL__N_110IsDigitOpt13CallOptimizerEPN4llvm8FunctionEPNS1_8CallInstERNS1_9IRBuilderILb1ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb1EEEEE", "(anonymous namespace)::IsDigitOpt::CallOptimizer(llvm::Function*, llvm::CallInst*, llvm::IRBuilder>&)"}, + {"_ZN12_GLOBAL__N_110IsAsciiOptD0Ev", "(anonymous namespace)::IsAsciiOpt::~IsAsciiOpt()"}, + {"_ZN12_GLOBAL__N_110IsAsciiOpt13CallOptimizerEPN4llvm8FunctionEPNS1_8CallInstERNS1_9IRBuilderILb1ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb1EEEEE", "(anonymous namespace)::IsAsciiOpt::CallOptimizer(llvm::Function*, llvm::CallInst*, llvm::IRBuilder>&)"}, + {"_ZN12_GLOBAL__N_110ToAsciiOptD0Ev", "(anonymous namespace)::ToAsciiOpt::~ToAsciiOpt()"}, + {"_ZN12_GLOBAL__N_110ToAsciiOpt13CallOptimizerEPN4llvm8FunctionEPNS1_8CallInstERNS1_9IRBuilderILb1ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb1EEEEE", "(anonymous namespace)::ToAsciiOpt::CallOptimizer(llvm::Function*, llvm::CallInst*, llvm::IRBuilder>&)"}, + {"_ZN12_GLOBAL__N_110SPrintFOptD0Ev", "(anonymous namespace)::SPrintFOpt::~SPrintFOpt()"}, + {"_ZN12_GLOBAL__N_110SPrintFOpt13CallOptimizerEPN4llvm8FunctionEPNS1_8CallInstERNS1_9IRBuilderILb1ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb1EEEEE", "(anonymous namespace)::SPrintFOpt::CallOptimizer(llvm::Function*, llvm::CallInst*, llvm::IRBuilder>&)"}, + {"_ZN12_GLOBAL__N_19PrintFOptD0Ev", "(anonymous namespace)::PrintFOpt::~PrintFOpt()"}, + {"_ZN12_GLOBAL__N_19PrintFOpt13CallOptimizerEPN4llvm8FunctionEPNS1_8CallInstERNS1_9IRBuilderILb1ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb1EEEEE", "(anonymous namespace)::PrintFOpt::CallOptimizer(llvm::Function*, llvm::CallInst*, llvm::IRBuilder>&)"}, + {"_ZN12_GLOBAL__N_19FWriteOptD0Ev", "(anonymous namespace)::FWriteOpt::~FWriteOpt()"}, + {"_ZN12_GLOBAL__N_19FWriteOpt13CallOptimizerEPN4llvm8FunctionEPNS1_8CallInstERNS1_9IRBuilderILb1ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb1EEEEE", "(anonymous namespace)::FWriteOpt::CallOptimizer(llvm::Function*, llvm::CallInst*, llvm::IRBuilder>&)"}, + {"_ZN12_GLOBAL__N_18FPutsOptD0Ev", "(anonymous namespace)::FPutsOpt::~FPutsOpt()"}, + {"_ZN12_GLOBAL__N_18FPutsOpt13CallOptimizerEPN4llvm8FunctionEPNS1_8CallInstERNS1_9IRBuilderILb1ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb1EEEEE", "(anonymous namespace)::FPutsOpt::CallOptimizer(llvm::Function*, llvm::CallInst*, llvm::IRBuilder>&)"}, + {"_ZN12_GLOBAL__N_110FPrintFOptD0Ev", "(anonymous namespace)::FPrintFOpt::~FPrintFOpt()"}, + {"_ZN12_GLOBAL__N_110FPrintFOpt13CallOptimizerEPN4llvm8FunctionEPNS1_8CallInstERNS1_9IRBuilderILb1ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb1EEEEE", "(anonymous namespace)::FPrintFOpt::CallOptimizer(llvm::Function*, llvm::CallInst*, llvm::IRBuilder>&)"}, + {"_ZN12_GLOBAL__N_17PutsOptD0Ev", "(anonymous namespace)::PutsOpt::~PutsOpt()"}, + {"_ZN12_GLOBAL__N_17PutsOpt13CallOptimizerEPN4llvm8FunctionEPNS1_8CallInstERNS1_9IRBuilderILb1ENS1_14ConstantFolderENS1_24IRBuilderDefaultInserterILb1EEEEE", "(anonymous namespace)::PutsOpt::CallOptimizer(llvm::Function*, llvm::CallInst*, llvm::IRBuilder>&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_116SimplifyLibCallsEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::SimplifyLibCalls>()"}, + {"_ZN4llvm9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEE9CreateGEPEPNS_5ValueES6_RKNS_5TwineE", "llvm::IRBuilder>::CreateGEP(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEE10CreateLoadEPNS_5ValueEPKc", "llvm::IRBuilder>::CreateLoad(llvm::Value*, char const*)"}, + {"_ZN4llvm9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEE10CreateICmpENS_7CmpInst9PredicateEPNS_5ValueES8_RKNS_5TwineE", "llvm::IRBuilder>::CreateICmp(llvm::CmpInst::Predicate, llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEE26CreateConstInBoundsGEP1_64EPNS_5ValueEyRKNS_5TwineE", "llvm::IRBuilder>::CreateConstInBoundsGEP1_64(llvm::Value*, unsigned long long, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEE12CreateSelectEPNS_5ValueES6_S6_RKNS_5TwineE", "llvm::IRBuilder>::CreateSelect(llvm::Value*, llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEE10CreateFMulEPNS_5ValueES6_RKNS_5TwineE", "llvm::IRBuilder>::CreateFMul(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEE10CreateFDivEPNS_5ValueES6_RKNS_5TwineE", "llvm::IRBuilder>::CreateFDiv(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEE10CreateFCmpENS_7CmpInst9PredicateEPNS_5ValueES8_RKNS_5TwineE", "llvm::IRBuilder>::CreateFCmp(llvm::CmpInst::Predicate, llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEE11CreateCall2EPNS_5ValueES6_S6_RKNS_5TwineE", "llvm::IRBuilder>::CreateCall2(llvm::Value*, llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEE10CreateCallEPNS_5ValueES6_RKNS_5TwineE", "llvm::IRBuilder>::CreateCall(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEE9CreateNegEPNS_5ValueERKNS_5TwineE", "llvm::IRBuilder>::CreateNeg(llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEE11CreateStoreEPNS_5ValueES6_b", "llvm::IRBuilder>::CreateStore(llvm::Value*, llvm::Value*, bool)"}, + {"_ZN4llvm26initializeTailCallElimPassERNS_12PassRegistryE", "llvm::initializeTailCallElimPass(llvm::PassRegistry&)"}, + {"_ZN4llvm29createTailCallEliminationPassEv", "llvm::createTailCallEliminationPass()"}, + {"_ZN12_GLOBAL__N_112TailCallElimD1Ev", "(anonymous namespace)::TailCallElim::~TailCallElim()"}, + {"_ZN12_GLOBAL__N_112TailCallElimD0Ev", "(anonymous namespace)::TailCallElim::~TailCallElim()"}, + {"_ZN12_GLOBAL__N_112TailCallElim13runOnFunctionERN4llvm8FunctionE", "(anonymous namespace)::TailCallElim::runOnFunction(llvm::Function&)"}, + {"_ZN12_GLOBAL__N_112TailCallElim16FindTRECandidateEPN4llvm11InstructionEb", "(anonymous namespace)::TailCallElim::FindTRECandidate(llvm::Instruction*, bool)"}, + + // {"_ZN12_GLOBAL__N_112TailCallElim26EliminateRecursiveTailCallEPN4llvm8CallInstEPNS1_10ReturnInstERPNS1_10BasicBlockERbRNS1_11SmallVectorIPNS1_7PHINodeELj8EEEb", + // "(anonymous namespace)::TailCallElim::EliminateRecursiveTailCall(llvm::CallInst*, llvm::ReturnInst*, llvm::BasicBlock*&, bool&, llvm::SmallVector&, bool)"}, + // "(anonymous namespace)::TailCallElim::EliminateRecursiveTailCall(llvm::CallInst*, llvm::ReturnInst*, llvm::BasicBlock*&, bool&, llvm::SmallVector&, bool)" was returned + + {"_Z17isDynamicConstantPN4llvm5ValueEPNS_8CallInstEPNS_10ReturnInstE", "isDynamicConstant(llvm::Value*, llvm::CallInst*, llvm::ReturnInst*)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_112TailCallElimEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::TailCallElim>()"}, + {"_ZN4llvm12InstCombiner24WillNotOverflowSignedAddEPNS_5ValueES2_", "llvm::InstCombiner::WillNotOverflowSignedAdd(llvm::Value*, llvm::Value*)"}, + {"_ZN4llvm12InstCombiner8visitAddERNS_14BinaryOperatorE", "llvm::InstCombiner::visitAdd(llvm::BinaryOperator&)"}, + {"_Z19dyn_castFoldableMulPN4llvm5ValueERPNS_11ConstantIntE", "dyn_castFoldableMul(llvm::Value*, llvm::ConstantInt*&)"}, + {"_ZN4llvm12InstCombiner9visitFAddERNS_14BinaryOperatorE", "llvm::InstCombiner::visitFAdd(llvm::BinaryOperator&)"}, + {"_ZN4llvm12InstCombiner13EmitGEPOffsetEPNS_4UserE", "llvm::InstCombiner::EmitGEPOffset(llvm::User*)"}, + {"_ZN4llvm12InstCombiner25OptimizePointerDifferenceEPNS_5ValueES2_PKNS_4TypeE", "llvm::InstCombiner::OptimizePointerDifference(llvm::Value*, llvm::Value*, llvm::Type const*)"}, + {"_ZN4llvm12InstCombiner8visitSubERNS_14BinaryOperatorE", "llvm::InstCombiner::visitSub(llvm::BinaryOperator&)"}, + {"_ZN4llvm12InstCombiner9visitFSubERNS_14BinaryOperatorE", "llvm::InstCombiner::visitFSub(llvm::BinaryOperator&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_12TargetFolderENS_21InstCombineIRInserterEE12CreateNSWAddEPNS_5ValueES5_RKNS_5TwineE", "llvm::IRBuilder::CreateNSWAdd(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + + // {"_ZN4llvm12PatternMatch15CastClass_matchINS1_INS0_7bind_tyINS_5ValueEEELj39EEELj30EE5matchIS3_EEbPT_", + // "bool llvm::PatternMatch::CastClass_match, 39u>, 30u>::match(llvm::Value*)"}, + // "bool llvm::PatternMatch::CastClass_match, 39>, 30>::match(llvm::Value*)" was returned + + + // {"_ZN4llvm12PatternMatch14BinaryOp_matchINS0_9neg_matchINS0_7bind_tyINS_5ValueEEEEES5_Lj12EE5matchINS_14BinaryOperatorEEEbPT_", + // "bool llvm::PatternMatch::BinaryOp_match>, llvm::PatternMatch::bind_ty, 12u>::match(llvm::BinaryOperator*)"}, + // "bool llvm::PatternMatch::BinaryOp_match>, llvm::PatternMatch::bind_ty, 12>::match(llvm::Value*)" was returned + + {"_ZN4llvm12PatternMatch9neg_matchINS0_7bind_tyINS_5ValueEEEE5matchIS3_EEbPT_", "bool llvm::PatternMatch::neg_match>::match(llvm::Value*)"}, + + // {"_ZN4llvm12PatternMatch9neg_matchINS0_7bind_tyINS_5ValueEEEE5matchINS_8ConstantEEEbPT_", + // "bool llvm::PatternMatch::neg_match>::match(llvm::Constant*)"}, + // "bool llvm::PatternMatch::neg_match>::match(llvm::Value*)" was returned + + + // {"_ZN4llvm12PatternMatch14BinaryOp_matchINS0_7bind_tyINS_5ValueEEENS0_9neg_matchIS4_EELj12EE5matchINS_14BinaryOperatorEEEbPT_", + // "bool llvm::PatternMatch::BinaryOp_match, llvm::PatternMatch::neg_match>, 12u>::match(llvm::BinaryOperator*)"}, + // "bool llvm::PatternMatch::BinaryOp_match, llvm::PatternMatch::neg_match>, 12>::match(llvm::Value*)" was returned + + {"_ZN4llvm12InstCombiner8OptAndOpEPNS_11InstructionEPNS_11ConstantIntES4_RNS_14BinaryOperatorE", "llvm::InstCombiner::OptAndOp(llvm::Instruction*, llvm::ConstantInt*, llvm::ConstantInt*, llvm::BinaryOperator&)"}, + {"_ZN4llvm12InstCombiner15InsertRangeTestEPNS_5ValueEPNS_8ConstantES4_bb", "llvm::InstCombiner::InsertRangeTest(llvm::Value*, llvm::Constant*, llvm::Constant*, bool, bool)"}, + {"_ZN4llvm12InstCombiner18FoldLogicalPlusAndEPNS_5ValueES2_PNS_11ConstantIntEbRNS_11InstructionE", "llvm::InstCombiner::FoldLogicalPlusAnd(llvm::Value*, llvm::Value*, llvm::ConstantInt*, bool, llvm::Instruction&)"}, + {"_ZN4llvm12InstCombiner14FoldAndOfICmpsEPNS_8ICmpInstES2_", "llvm::InstCombiner::FoldAndOfICmps(llvm::ICmpInst*, llvm::ICmpInst*)"}, + {"_Z12getICmpValuebjPN4llvm5ValueES1_PNS_9IRBuilderILb1ENS_12TargetFolderENS_21InstCombineIRInserterEEE", "getICmpValue(bool, unsigned int, llvm::Value*, llvm::Value*, llvm::IRBuilder*)"}, + {"_Z22foldLogOpOfMaskedICmpsPN4llvm8ICmpInstES1_NS_7CmpInst9PredicateEPNS_9IRBuilderILb1ENS_12TargetFolderENS_21InstCombineIRInserterEEE", "foldLogOpOfMaskedICmps(llvm::ICmpInst*, llvm::ICmpInst*, llvm::CmpInst::Predicate, llvm::IRBuilder*)"}, + {"_ZN4llvm12InstCombiner14FoldAndOfFCmpsEPNS_8FCmpInstES2_", "llvm::InstCombiner::FoldAndOfFCmps(llvm::FCmpInst*, llvm::FCmpInst*)"}, + {"_ZN4llvm12InstCombiner8visitAndERNS_14BinaryOperatorE", "llvm::InstCombiner::visitAnd(llvm::BinaryOperator&)"}, + {"_Z14dyn_castNotValPN4llvm5ValueE", "dyn_castNotVal(llvm::Value*)"}, + {"_ZN4llvm12InstCombiner10MatchBSwapERNS_14BinaryOperatorE", "llvm::InstCombiner::MatchBSwap(llvm::BinaryOperator&)"}, + + // {"_Z17CollectBSwapPartsPN4llvm5ValueEijRNS_11SmallVectorIS1_Lj8EEE", + // "CollectBSwapParts(llvm::Value*, int, unsigned int, llvm::SmallVector&)"}, + // "CollectBSwapParts(llvm::Value*, int, unsigned int, llvm::SmallVector&)" was returned + + {"_ZN4llvm12InstCombiner13FoldOrOfICmpsEPNS_8ICmpInstES2_", "llvm::InstCombiner::FoldOrOfICmps(llvm::ICmpInst*, llvm::ICmpInst*)"}, + {"_ZN4llvm12InstCombiner13FoldOrOfFCmpsEPNS_8FCmpInstES2_", "llvm::InstCombiner::FoldOrOfFCmps(llvm::FCmpInst*, llvm::FCmpInst*)"}, + {"_ZN4llvm12InstCombiner19FoldOrWithConstantsERNS_14BinaryOperatorEPNS_5ValueES4_S4_S4_", "llvm::InstCombiner::FoldOrWithConstants(llvm::BinaryOperator&, llvm::Value*, llvm::Value*, llvm::Value*, llvm::Value*)"}, + {"_ZN4llvm12InstCombiner7visitOrERNS_14BinaryOperatorE", "llvm::InstCombiner::visitOr(llvm::BinaryOperator&)"}, + {"_Z20MatchSelectFromAndOrPN4llvm5ValueES1_S1_S1_", "MatchSelectFromAndOr(llvm::Value*, llvm::Value*, llvm::Value*, llvm::Value*)"}, + {"_ZN4llvm12InstCombiner8visitXorERNS_14BinaryOperatorE", "llvm::InstCombiner::visitXor(llvm::BinaryOperator&)"}, + {"_Z19getTypeOfMaskedICmpPN4llvm5ValueES1_S1_NS_7CmpInst9PredicateE", "getTypeOfMaskedICmp(llvm::Value*, llvm::Value*, llvm::Value*, llvm::CmpInst::Predicate)"}, + {"_ZN4llvm9IRBuilderILb1ENS_12TargetFolderENS_21InstCombineIRInserterEE8CreateOrEPNS_5ValueES5_RKNS_5TwineE", "llvm::IRBuilder::CreateOr(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_12TargetFolderENS_21InstCombineIRInserterEE9CreateNegEPNS_5ValueERKNS_5TwineE", "llvm::IRBuilder::CreateNeg(llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_12TargetFolderENS_21InstCombineIRInserterEE20CreateTruncOrBitCastEPNS_5ValueEPKNS_4TypeERKNS_5TwineE", "llvm::IRBuilder::CreateTruncOrBitCast(llvm::Value*, llvm::Type const*, llvm::Twine const&)"}, + {"_ZN4llvm15SmallVectorImplIPNS_5ValueEE6resizeEj", "llvm::SmallVectorImpl::resize(unsigned int)"}, + + // {"_ZN4llvm12PatternMatch9not_matchINS0_14specificval_tyEE5matchINS_8ConstantEEEbPT_", + // "bool llvm::PatternMatch::not_match::match(llvm::Constant*)"}, + // "bool llvm::PatternMatch::not_match::match(llvm::PatternMatch::specificval_ty*)" was returned + + + // {"_ZN4llvm12PatternMatch9not_matchINS0_14BinaryOp_matchINS0_7bind_tyINS_5ValueEEES5_Lj23EEEE10matchIfNotEPS4_S8_", + // "llvm::PatternMatch::not_match, llvm::PatternMatch::bind_ty, 23u>>::matchIfNot(llvm::Value*, llvm::Value*)"}, + // "llvm::PatternMatch::not_match, llvm::PatternMatch::bind_ty, 23>>::matchIfNot(llvm::Value*, llvm::Value*)" was returned + + {"_ZNK4llvm12TargetFolder20CreateTruncOrBitCastEPNS_8ConstantEPKNS_4TypeE", "llvm::TargetFolder::CreateTruncOrBitCast(llvm::Constant*, llvm::Type const*) const"}, + + // {"_ZN4llvm12PatternMatch9not_matchINS0_15CastClass_matchINS0_14specificval_tyELj32EEEE10matchIfNotEPNS_5ValueES7_", + // "llvm::PatternMatch::not_match>::matchIfNot(llvm::Value*, llvm::Value*)"}, + // "llvm::PatternMatch::not_match>::matchIfNot(llvm::Value*, llvm::Value*)" was returned + + {"_ZN4llvm8APIntOps13isShiftedMaskEjRKNS_5APIntE", "llvm::APIntOps::isShiftedMask(unsigned int, llvm::APInt const&)"}, + {"_ZN4llvm12InstCombiner19SimplifyMemTransferEPNS_12MemIntrinsicE", "llvm::InstCombiner::SimplifyMemTransfer(llvm::MemIntrinsic*)"}, + {"_ZN4llvm12InstCombiner14SimplifyMemSetEPNS_10MemSetInstE", "llvm::InstCombiner::SimplifyMemSet(llvm::MemSetInst*)"}, + {"_ZN4llvm12InstCombiner13visitCallInstERNS_8CallInstE", "llvm::InstCombiner::visitCallInst(llvm::CallInst&)"}, + {"_ZN4llvm12InstCombiner13visitCallSiteENS_8CallSiteE", "llvm::InstCombiner::visitCallSite(llvm::CallSite)"}, + {"_ZN4llvm12InstCombiner15visitInvokeInstERNS_10InvokeInstE", "llvm::InstCombiner::visitInvokeInst(llvm::InvokeInst&)"}, + {"_ZN4llvm12InstCombiner15tryOptimizeCallEPNS_8CallInstEPKNS_10DataLayoutE", "llvm::InstCombiner::tryOptimizeCall(llvm::CallInst*, llvm::DataLayout const*)"}, + {"_ZN12_GLOBAL__N_128InstCombineFortifiedLibCallsD1Ev", "(anonymous namespace)::InstCombineFortifiedLibCalls::~InstCombineFortifiedLibCalls()"}, + {"_ZN4llvm12InstCombiner26transformConstExprCastCallENS_8CallSiteE", "llvm::InstCombiner::transformConstExprCastCall(llvm::CallSite)"}, + {"_ZN4llvm12InstCombiner30transformCallThroughTrampolineENS_8CallSiteE", "llvm::InstCombiner::transformCallThroughTrampoline(llvm::CallSite)"}, + {"_ZN12_GLOBAL__N_128InstCombineFortifiedLibCalls11replaceCallEPN4llvm5ValueE", "(anonymous namespace)::InstCombineFortifiedLibCalls::replaceCall(llvm::Value*)"}, + {"_ZNK12_GLOBAL__N_128InstCombineFortifiedLibCalls10isFoldableEjjb", "(anonymous namespace)::InstCombineFortifiedLibCalls::isFoldable(unsigned int, unsigned int, bool) const"}, + {"_ZN12_GLOBAL__N_128InstCombineFortifiedLibCallsD0Ev", "(anonymous namespace)::InstCombineFortifiedLibCalls::~InstCombineFortifiedLibCalls()"}, + {"_ZN4llvm12InstCombiner23PromoteCastOfAllocationERNS_11BitCastInstERNS_10AllocaInstE", "llvm::InstCombiner::PromoteCastOfAllocation(llvm::BitCastInst&, llvm::AllocaInst&)"}, + {"_Z25DecomposeSimpleLinearExprPN4llvm5ValueERjRy", "DecomposeSimpleLinearExpr(llvm::Value*, unsigned int&, unsigned long long&)"}, + {"_ZN4llvm12InstCombiner23EvaluateInDifferentTypeEPNS_5ValueEPKNS_4TypeEb", "llvm::InstCombiner::EvaluateInDifferentType(llvm::Value*, llvm::Type const*, bool)"}, + {"_ZN4llvm12InstCombiner18ShouldOptimizeCastENS_11Instruction7CastOpsEPKNS_5ValueEPKNS_4TypeE", "llvm::InstCombiner::ShouldOptimizeCast(llvm::Instruction::CastOps, llvm::Value const*, llvm::Type const*)"}, + {"_Z20isEliminableCastPairPKN4llvm8CastInstEjPKNS_4TypeEPNS_10DataLayoutE", "isEliminableCastPair(llvm::CastInst const*, unsigned int, llvm::Type const*, llvm::DataLayout*)"}, + {"_ZN4llvm12InstCombiner20commonCastTransformsERNS_8CastInstE", "llvm::InstCombiner::commonCastTransforms(llvm::CastInst&)"}, + {"_ZN4llvm12InstCombiner10visitTruncERNS_9TruncInstE", "llvm::InstCombiner::visitTrunc(llvm::TruncInst&)"}, + {"_Z20CanEvaluateTruncatedPN4llvm5ValueEPKNS_4TypeE", "CanEvaluateTruncated(llvm::Value*, llvm::Type const*)"}, + {"_ZN4llvm12InstCombiner17transformZExtICmpEPNS_8ICmpInstERNS_11InstructionEb", "llvm::InstCombiner::transformZExtICmp(llvm::ICmpInst*, llvm::Instruction&, bool)"}, + {"_ZN4llvm12InstCombiner9visitZExtERNS_8ZExtInstE", "llvm::InstCombiner::visitZExt(llvm::ZExtInst&)"}, + {"_Z16CanEvaluateZExtdPN4llvm5ValueEPKNS_4TypeERj", "CanEvaluateZExtd(llvm::Value*, llvm::Type const*, unsigned int&)"}, + {"_ZN4llvm12InstCombiner9visitSExtERNS_8SExtInstE", "llvm::InstCombiner::visitSExt(llvm::SExtInst&)"}, + {"_Z16CanEvaluateSExtdPN4llvm5ValueEPKNS_4TypeE", "CanEvaluateSExtd(llvm::Value*, llvm::Type const*)"}, + {"_ZN4llvm12InstCombiner12visitFPTruncERNS_11FPTruncInstE", "llvm::InstCombiner::visitFPTrunc(llvm::FPTruncInst&)"}, + {"_Z23LookThroughFPExtensionsPN4llvm5ValueE", "LookThroughFPExtensions(llvm::Value*)"}, + {"_ZN4llvm12InstCombiner10visitFPExtERNS_8CastInstE", "llvm::InstCombiner::visitFPExt(llvm::CastInst&)"}, + {"_ZN4llvm12InstCombiner11visitFPToUIERNS_10FPToUIInstE", "llvm::InstCombiner::visitFPToUI(llvm::FPToUIInst&)"}, + {"_ZN4llvm12InstCombiner11visitFPToSIERNS_10FPToSIInstE", "llvm::InstCombiner::visitFPToSI(llvm::FPToSIInst&)"}, + {"_ZN4llvm12InstCombiner11visitUIToFPERNS_8CastInstE", "llvm::InstCombiner::visitUIToFP(llvm::CastInst&)"}, + {"_ZN4llvm12InstCombiner11visitSIToFPERNS_8CastInstE", "llvm::InstCombiner::visitSIToFP(llvm::CastInst&)"}, + {"_ZN4llvm12InstCombiner13visitIntToPtrERNS_12IntToPtrInstE", "llvm::InstCombiner::visitIntToPtr(llvm::IntToPtrInst&)"}, + {"_ZN4llvm12InstCombiner27commonPointerCastTransformsERNS_8CastInstE", "llvm::InstCombiner::commonPointerCastTransforms(llvm::CastInst&)"}, + {"_ZN4llvm12InstCombiner13visitPtrToIntERNS_12PtrToIntInstE", "llvm::InstCombiner::visitPtrToInt(llvm::PtrToIntInst&)"}, + {"_ZN4llvm12InstCombiner12visitBitCastERNS_11BitCastInstE", "llvm::InstCombiner::visitBitCast(llvm::BitCastInst&)"}, + {"_Z24CollectInsertionElementsPN4llvm5ValueEjRNS_15SmallVectorImplIS1_EEPKNS_4TypeE", "CollectInsertionElements(llvm::Value*, unsigned int, llvm::SmallVectorImpl&, llvm::Type const*)"}, + {"_Z12FitsInFPTypePN4llvm10ConstantFPERKNS_12fltSemanticsE", "FitsInFPType(llvm::ConstantFP*, llvm::fltSemantics const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_12TargetFolderENS_21InstCombineIRInserterEE9CreateAndEPNS_5ValueES5_RKNS_5TwineE", "llvm::IRBuilder::CreateAnd(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_12TargetFolderENS_21InstCombineIRInserterEE10CreateLShrEPNS_5ValueES5_RKNS_5TwineEb", "llvm::IRBuilder::CreateLShr(llvm::Value*, llvm::Value*, llvm::Twine const&, bool)"}, + {"_ZN4llvm9IRBuilderILb1ENS_12TargetFolderENS_21InstCombineIRInserterEE9CreateXorEPNS_5ValueES5_RKNS_5TwineE", "llvm::IRBuilder::CreateXor(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_12TargetFolderENS_21InstCombineIRInserterEE9CreateShlEPNS_5ValueES5_RKNS_5TwineE", "llvm::IRBuilder::CreateShl(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_12TargetFolderENS_21InstCombineIRInserterEE10CreateAShrEPNS_5ValueES5_RKNS_5TwineEb", "llvm::IRBuilder::CreateAShr(llvm::Value*, llvm::Value*, llvm::Twine const&, bool)"}, + {"_ZN4llvm9IRBuilderILb1ENS_12TargetFolderENS_21InstCombineIRInserterEE9CreateNotEPNS_5ValueERKNS_5TwineE", "llvm::IRBuilder::CreateNot(llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_12TargetFolderENS_21InstCombineIRInserterEE20CreateExtractElementEPNS_5ValueES5_RKNS_5TwineE", "llvm::IRBuilder::CreateExtractElement(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + + // {"_ZN4llvm11SmallVectorIPNS_5ValueELj8EEC2EjRKS2_", + // "llvm::SmallVector::SmallVector(unsigned int, llvm::Value* const&)"}, + // "llvm::SmallVector::SmallVector(unsigned int, llvm::Value* const&)" was returned + + + // {"_ZN4llvm12PatternMatch14BinaryOp_matchINS1_INS0_15CastClass_matchINS0_7bind_tyINS_5ValueEEELj30EEENS3_INS_11ConstantIntEEELj20EEES8_Lj22EE5matchIS4_EEbPT_", + // "bool llvm::PatternMatch::BinaryOp_match, 30u>, llvm::PatternMatch::bind_ty, 20u>, llvm::PatternMatch::bind_ty, 22u>::match(llvm::Value*)"}, + // "bool llvm::PatternMatch::BinaryOp_match, 30>, llvm::PatternMatch::bind_ty, 20>, llvm::PatternMatch::bind_ty, 22>::match(llvm::Value*)" was returned + + + // {"_ZN4llvm12PatternMatch14BinaryOp_matchINS0_15CastClass_matchINS0_7bind_tyINS_5ValueEEELj30EEENS3_INS_11ConstantIntEEELj20EE5matchIS4_EEbPT_", + // "bool llvm::PatternMatch::BinaryOp_match, 30u>, llvm::PatternMatch::bind_ty, 20u>::match(llvm::Value*)"}, + // "bool llvm::PatternMatch::BinaryOp_match, 30>, llvm::PatternMatch::bind_ty, 20>::match(llvm::Value*)" was returned + + + // {"_ZN4llvm12PatternMatch14BinaryOp_matchINS0_15CastClass_matchINS0_7bind_tyINS_5ValueEEELj30EEENS3_INS_11ConstantIntEEELj20EE5matchINS_8ConstantEEEbPT_", + // "bool llvm::PatternMatch::BinaryOp_match, 30u>, llvm::PatternMatch::bind_ty, 20u>::match(llvm::Constant*)"}, + // "bool llvm::PatternMatch::BinaryOp_match, 30>, llvm::PatternMatch::bind_ty, 20>::match(llvm::Value*)" was returned + + + // {"_ZN4llvm12PatternMatch9not_matchINS0_7bind_tyINS_5ValueEEEE5matchINS_14BinaryOperatorEEEbPT_", + // "bool llvm::PatternMatch::not_match>::match(llvm::BinaryOperator*)"}, + // "bool llvm::PatternMatch::not_match>::match(llvm::Value*)" was returned + + + // {"_ZN4llvm12PatternMatch14BinaryOp_matchINS0_15CastClass_matchINS0_7bind_tyINS_5ValueEEELj31EEENS3_INS_11ConstantIntEEELj21EE5matchIS4_EEbPT_", + // "bool llvm::PatternMatch::BinaryOp_match, 31u>, llvm::PatternMatch::bind_ty, 21u>::match(llvm::Value*)"}, + // "bool llvm::PatternMatch::BinaryOp_match, 31>, llvm::PatternMatch::bind_ty, 21>::match(llvm::Value*)" was returned + + {"_ZN4llvm9IRBuilderILb1ENS_12TargetFolderENS_21InstCombineIRInserterEE19CreateInsertElementEPNS_5ValueES5_S5_RKNS_5TwineE", "llvm::IRBuilder::CreateInsertElement(llvm::Value*, llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + + // {"_ZN4llvm12PatternMatch14BinaryOp_matchINS0_15CastClass_matchINS0_7bind_tyINS_5ValueEEELj41EEENS3_INS_11ConstantIntEEELj21EE5matchIS4_EEbPT_", + // "bool llvm::PatternMatch::BinaryOp_match, 41u>, llvm::PatternMatch::bind_ty, 21u>::match(llvm::Value*)"}, + // "bool llvm::PatternMatch::BinaryOp_match, 41>, llvm::PatternMatch::bind_ty, 21>::match(llvm::Value*)" was returned + + + // {"_ZN4llvm12PatternMatch14BinaryOp_matchINS0_15CastClass_matchINS0_7bind_tyINS_5ValueEEELj41EEENS3_INS_11ConstantIntEEELj21EE5matchINS_8ConstantEEEbPT_", + // "bool llvm::PatternMatch::BinaryOp_match, 41u>, llvm::PatternMatch::bind_ty, 21u>::match(llvm::Constant*)"}, + // "bool llvm::PatternMatch::BinaryOp_match, 41>, llvm::PatternMatch::bind_ty, 21>::match(llvm::Value*)" was returned + + + // {"_ZN4llvm12PatternMatch15CastClass_matchINS1_INS0_7bind_tyINS_5ValueEEELj41EEELj30EE5matchIS3_EEbPT_", + // "bool llvm::PatternMatch::CastClass_match, 41u>, 30u>::match(llvm::Value*)"}, + // "bool llvm::PatternMatch::CastClass_match, 41>, 30>::match(llvm::Value*)" was returned + + {"_ZN4llvm12InstCombiner28FoldCmpLoadFromIndexedGlobalEPNS_17GetElementPtrInstEPNS_14GlobalVariableERNS_7CmpInstEPNS_11ConstantIntE", "llvm::InstCombiner::FoldCmpLoadFromIndexedGlobal(llvm::GetElementPtrInst*, llvm::GlobalVariable*, llvm::CmpInst&, llvm::ConstantInt*)"}, + {"_ZN4llvm12InstCombiner11FoldGEPICmpEPNS_11GEPOperatorEPNS_5ValueENS_7CmpInst9PredicateERNS_11InstructionE", "llvm::InstCombiner::FoldGEPICmp(llvm::GEPOperator*, llvm::Value*, llvm::CmpInst::Predicate, llvm::Instruction&)"}, + {"_ZN4llvm12InstCombiner16FoldICmpAddOpCstERNS_8ICmpInstEPNS_5ValueEPNS_11ConstantIntENS_7CmpInst9PredicateES4_", "llvm::InstCombiner::FoldICmpAddOpCst(llvm::ICmpInst&, llvm::Value*, llvm::ConstantInt*, llvm::CmpInst::Predicate, llvm::Value*)"}, + {"_ZN4llvm12InstCombiner14FoldICmpDivCstERNS_8ICmpInstEPNS_14BinaryOperatorEPNS_11ConstantIntE", "llvm::InstCombiner::FoldICmpDivCst(llvm::ICmpInst&, llvm::BinaryOperator*, llvm::ConstantInt*)"}, + {"_Z15AddWithOverflowRPN4llvm8ConstantES1_S1_b", "AddWithOverflow(llvm::Constant*&, llvm::Constant*, llvm::Constant*, bool)"}, + {"_ZN4llvm12InstCombiner30visitICmpInstWithInstAndIntCstERNS_8ICmpInstEPNS_11InstructionEPNS_11ConstantIntE", "llvm::InstCombiner::visitICmpInstWithInstAndIntCst(llvm::ICmpInst&, llvm::Instruction*, llvm::ConstantInt*)"}, + {"_Z14isSignBitCheckN4llvm7CmpInst9PredicateEPNS_11ConstantIntERb", "isSignBitCheck(llvm::CmpInst::Predicate, llvm::ConstantInt*, bool&)"}, + {"_ZN4llvm12InstCombiner28visitICmpInstWithCastAndCastERNS_8ICmpInstE", "llvm::InstCombiner::visitICmpInstWithCastAndCast(llvm::ICmpInst&)"}, + {"_ZN4llvm12InstCombiner13visitICmpInstERNS_8ICmpInstE", "llvm::InstCombiner::visitICmpInst(llvm::ICmpInst&)"}, + {"_Z38ComputeSignedMinMaxValuesFromKnownBitsRKN4llvm5APIntES2_RS0_S3_", "ComputeSignedMinMaxValuesFromKnownBits(llvm::APInt const&, llvm::APInt const&, llvm::APInt&, llvm::APInt&)"}, + {"_Z16ProcessUAddIdiomRN4llvm11InstructionEPNS_5ValueERNS_12InstCombinerE", "ProcessUAddIdiom(llvm::Instruction&, llvm::Value*, llvm::InstCombiner&)"}, + {"_ZN4llvm12InstCombiner20FoldFCmp_IntToFP_CstERNS_8FCmpInstEPNS_11InstructionEPNS_8ConstantE", "llvm::InstCombiner::FoldFCmp_IntToFP_Cst(llvm::FCmpInst&, llvm::Instruction*, llvm::Constant*)"}, + {"_ZN4llvm12InstCombiner13visitFCmpInstERNS_8FCmpInstE", "llvm::InstCombiner::visitFCmpInst(llvm::FCmpInst&)"}, + {"_Z14HasAddOverflowPN4llvm11ConstantIntES1_S1_b", "HasAddOverflow(llvm::ConstantInt*, llvm::ConstantInt*, llvm::ConstantInt*, bool)"}, + {"_ZNK4llvm5APInt3sgtEy", "llvm::APInt::sgt(unsigned long long) const"}, + + // {"_ZN4llvm12PatternMatch14BinaryOp_matchINS1_INS0_7bind_tyINS_5ValueEEES4_Lj8EEENS2_INS_11ConstantIntEEELj8EE5matchIS3_EEbPT_", + // "bool llvm::PatternMatch::BinaryOp_match, llvm::PatternMatch::bind_ty, 8u>, llvm::PatternMatch::bind_ty, 8u>::match(llvm::Value*)"}, + // "bool llvm::PatternMatch::BinaryOp_match, llvm::PatternMatch::bind_ty, 8>, llvm::PatternMatch::bind_ty, 8>::match(llvm::Value*)" was returned + + + // {"_ZN4llvm12PatternMatch14BinaryOp_matchINS0_15CastClass_matchINS0_7bind_tyINS_5ValueEEELj39EEES6_Lj24EE5matchINS_11InstructionEEEbPT_", + // "bool llvm::PatternMatch::BinaryOp_match, 39u>, llvm::PatternMatch::CastClass_match, 39u>, 24u>::match(llvm::Instruction*)"}, + // "bool llvm::PatternMatch::BinaryOp_match, 39>, llvm::PatternMatch::CastClass_match, 39>, 24>::match(llvm::Value*)" was returned + + {"_ZN4llvm9IRBuilderILb1ENS_12TargetFolderENS_21InstCombineIRInserterEE18CreateExtractValueEPNS_5ValueEjRKNS_5TwineE", "llvm::IRBuilder::CreateExtractValue(llvm::Value*, unsigned int, llvm::Twine const&)"}, + {"_ZN4llvm12InstCombiner15visitAllocaInstERNS_10AllocaInstE", "llvm::InstCombiner::visitAllocaInst(llvm::AllocaInst&)"}, + {"_ZN4llvm12InstCombiner13visitLoadInstERNS_8LoadInstE", "llvm::InstCombiner::visitLoadInst(llvm::LoadInst&)"}, + {"_Z19InstCombineLoadCastRN4llvm12InstCombinerERNS_8LoadInstEPKNS_10DataLayoutE", "InstCombineLoadCast(llvm::InstCombiner&, llvm::LoadInst&, llvm::DataLayout const*)"}, + {"_ZN4llvm12InstCombiner20hasOneUsePlusDeclareEPNS_5ValueE", "llvm::InstCombiner::hasOneUsePlusDeclare(llvm::Value*)"}, + {"_ZN4llvm12InstCombiner14visitStoreInstERNS_9StoreInstE", "llvm::InstCombiner::visitStoreInst(llvm::StoreInst&)"}, + {"_Z22InstCombineStoreToCastRN4llvm12InstCombinerERNS_9StoreInstE", "InstCombineStoreToCast(llvm::InstCombiner&, llvm::StoreInst&)"}, + {"_ZN4llvm12InstCombiner25SimplifyStoreAtEndOfBlockERNS_9StoreInstE", "llvm::InstCombiner::SimplifyStoreAtEndOfBlock(llvm::StoreInst&)"}, + {"_ZN4llvm12InstCombiner8visitMulERNS_14BinaryOperatorE", "llvm::InstCombiner::visitMul(llvm::BinaryOperator&)"}, + {"_ZN4llvm12InstCombiner9visitFMulERNS_14BinaryOperatorE", "llvm::InstCombiner::visitFMul(llvm::BinaryOperator&)"}, + {"_ZN4llvm12InstCombiner22SimplifyDivRemOfSelectERNS_14BinaryOperatorE", "llvm::InstCombiner::SimplifyDivRemOfSelect(llvm::BinaryOperator&)"}, + {"_ZN4llvm12InstCombiner20commonIDivTransformsERNS_14BinaryOperatorE", "llvm::InstCombiner::commonIDivTransforms(llvm::BinaryOperator&)"}, + {"_ZN4llvm12InstCombiner9visitUDivERNS_14BinaryOperatorE", "llvm::InstCombiner::visitUDiv(llvm::BinaryOperator&)"}, + {"_ZN4llvm12InstCombiner9visitSDivERNS_14BinaryOperatorE", "llvm::InstCombiner::visitSDiv(llvm::BinaryOperator&)"}, + {"_ZN4llvm12InstCombiner9visitFDivERNS_14BinaryOperatorE", "llvm::InstCombiner::visitFDiv(llvm::BinaryOperator&)"}, + {"_ZN4llvm12InstCombiner19commonRemTransformsERNS_14BinaryOperatorE", "llvm::InstCombiner::commonRemTransforms(llvm::BinaryOperator&)"}, + {"_ZN4llvm12InstCombiner20commonIRemTransformsERNS_14BinaryOperatorE", "llvm::InstCombiner::commonIRemTransforms(llvm::BinaryOperator&)"}, + {"_ZN4llvm12InstCombiner9visitURemERNS_14BinaryOperatorE", "llvm::InstCombiner::visitURem(llvm::BinaryOperator&)"}, + {"_ZN4llvm12InstCombiner9visitSRemERNS_14BinaryOperatorE", "llvm::InstCombiner::visitSRem(llvm::BinaryOperator&)"}, + {"_ZN4llvm12InstCombiner9visitFRemERNS_14BinaryOperatorE", "llvm::InstCombiner::visitFRem(llvm::BinaryOperator&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_12TargetFolderENS_21InstCombineIRInserterEE10CreateURemEPNS_5ValueES5_RKNS_5TwineE", "llvm::IRBuilder::CreateURem(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_12TargetFolderENS_21InstCombineIRInserterEE10CreateSRemEPNS_5ValueES5_RKNS_5TwineE", "llvm::IRBuilder::CreateSRem(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_12TargetFolderENS_21InstCombineIRInserterEE9CreateSubEPNS_5ValueES5_RKNS_5TwineE", "llvm::IRBuilder::CreateSub(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm19InstCombineWorklist8AddValueEPNS_5ValueE", "llvm::InstCombineWorklist::AddValue(llvm::Value*)"}, + + // {"_ZN4llvm12PatternMatch14BinaryOp_matchINS0_11cst_pred_tyINS0_6is_oneEEENS0_7bind_tyINS_5ValueEEELj20EE5matchIS6_EEbPT_", + // "bool llvm::PatternMatch::BinaryOp_match, llvm::PatternMatch::bind_ty, 20u>::match(llvm::Value*)"}, + // "bool llvm::PatternMatch::BinaryOp_match, llvm::PatternMatch::bind_ty, 20>::match(llvm::PatternMatch::is_one*)" was returned + + {"_ZN4llvm12InstCombiner22FoldPHIArgBinOpIntoPHIERNS_7PHINodeE", "llvm::InstCombiner::FoldPHIArgBinOpIntoPHI(llvm::PHINode&)"}, + {"_ZN4llvm12InstCombiner20FoldPHIArgGEPIntoPHIERNS_7PHINodeE", "llvm::InstCombiner::FoldPHIArgGEPIntoPHI(llvm::PHINode&)"}, + {"_ZN4llvm12InstCombiner21FoldPHIArgLoadIntoPHIERNS_7PHINodeE", "llvm::InstCombiner::FoldPHIArgLoadIntoPHI(llvm::PHINode&)"}, + {"_Z29isSafeAndProfitableToSinkLoadPN4llvm8LoadInstE", "isSafeAndProfitableToSinkLoad(llvm::LoadInst*)"}, + {"_ZN4llvm12InstCombiner19FoldPHIArgOpIntoPHIERNS_7PHINodeE", "llvm::InstCombiner::FoldPHIArgOpIntoPHI(llvm::PHINode&)"}, + {"_ZN4llvm12InstCombiner24SliceUpIllegalIntegerPHIERNS_7PHINodeE", "llvm::InstCombiner::SliceUpIllegalIntegerPHI(llvm::PHINode&)"}, + {"_ZN4llvm15SmallVectorImplIN12_GLOBAL__N_114PHIUsageRecordEE9push_backERKS2_", "llvm::SmallVectorImpl<(anonymous namespace)::PHIUsageRecord>::push_back((anonymous namespace)::PHIUsageRecord const&)"}, + {"_ZN4llvm8DenseMapIN12_GLOBAL__N_116LoweredPHIRecordEPNS_7PHINodeENS_12DenseMapInfoIS2_EENS5_IS4_EEEixERKS2_", "llvm::DenseMap<(anonymous namespace)::LoweredPHIRecord, llvm::PHINode*, llvm::DenseMapInfo<(anonymous namespace)::LoweredPHIRecord>, llvm::DenseMapInfo>::operator[]((anonymous namespace)::LoweredPHIRecord const&)"}, + {"_ZN4llvm12InstCombiner12visitPHINodeERNS_7PHINodeE", "llvm::InstCombiner::visitPHINode(llvm::PHINode&)"}, + + // {"_Z14PHIsEqualValuePN4llvm7PHINodeEPNS_5ValueERNS_11SmallPtrSetIS1_Lj16EEE", + // "PHIsEqualValue(llvm::PHINode*, llvm::Value*, llvm::SmallPtrSet&)"}, + // "PHIsEqualValue(llvm::PHINode*, llvm::Value*, llvm::SmallPtrSet&)" was returned + + {"_ZNK4llvm8DenseMapIN12_GLOBAL__N_116LoweredPHIRecordEPNS_7PHINodeENS_12DenseMapInfoIS2_EENS5_IS4_EEE15LookupBucketForERKS2_RPSt4pairIS2_S4_E", "llvm::DenseMap<(anonymous namespace)::LoweredPHIRecord, llvm::PHINode*, llvm::DenseMapInfo<(anonymous namespace)::LoweredPHIRecord>, llvm::DenseMapInfo>::LookupBucketFor((anonymous namespace)::LoweredPHIRecord const&, std::pair<(anonymous namespace)::LoweredPHIRecord, llvm::PHINode*>*&) const"}, + {"_ZN4llvm25array_pod_sort_comparatorIN12_GLOBAL__N_114PHIUsageRecordEEEiPKvS4_", "int llvm::array_pod_sort_comparator<(anonymous namespace)::PHIUsageRecord>(void const*, void const*)"}, + + // {"_ZSt6__findIPPN4llvm7PHINodeES2_ET_S4_S4_RKT0_St26random_access_iterator_tag", + // "llvm::PHINode** std::__find(llvm::PHINode**, llvm::PHINode**, llvm::PHINode* const&, std::random_access_iterator_tag)"}, + // got error + + + // {"_ZN4llvm11SmallVectorIPNS_7PHINodeELj16EEC2EjRKS2_", + // "llvm::SmallVector::SmallVector(unsigned int, llvm::PHINode* const&)"}, + // "llvm::SmallVector::SmallVector(unsigned int, llvm::PHINode* const&)" was returned + + {"_ZN4llvm12InstCombiner14FoldSelectOpOpERNS_10SelectInstEPNS_11InstructionES4_", "llvm::InstCombiner::FoldSelectOpOp(llvm::SelectInst&, llvm::Instruction*, llvm::Instruction*)"}, + {"_ZN4llvm12InstCombiner16FoldSelectIntoOpERNS_10SelectInstEPNS_5ValueES4_", "llvm::InstCombiner::FoldSelectIntoOp(llvm::SelectInst&, llvm::Value*, llvm::Value*)"}, + {"_Z25GetSelectFoldableConstantPN4llvm11InstructionE", "GetSelectFoldableConstant(llvm::Instruction*)"}, + {"_Z10isSelect01PN4llvm8ConstantES1_", "isSelect01(llvm::Constant*, llvm::Constant*)"}, + {"_ZN4llvm12InstCombiner23visitSelectInstWithICmpERNS_10SelectInstEPNS_8ICmpInstE", "llvm::InstCombiner::visitSelectInstWithICmp(llvm::SelectInst&, llvm::ICmpInst*)"}, + {"_ZN4llvm12InstCombiner12FoldSPFofSPFEPNS_11InstructionENS_19SelectPatternFlavorEPNS_5ValueES5_RS1_S3_S5_", "llvm::InstCombiner::FoldSPFofSPF(llvm::Instruction*, llvm::SelectPatternFlavor, llvm::Value*, llvm::Value*, llvm::Instruction&, llvm::SelectPatternFlavor, llvm::Value*)"}, + {"_ZN4llvm12InstCombiner15visitSelectInstERNS_10SelectInstE", "llvm::InstCombiner::visitSelectInst(llvm::SelectInst&)"}, + {"_ZN4llvm12InstCombiner21commonShiftTransformsERNS_14BinaryOperatorE", "llvm::InstCombiner::commonShiftTransforms(llvm::BinaryOperator&)"}, + {"_ZN4llvm12InstCombiner19FoldShiftByConstantEPNS_5ValueEPNS_11ConstantIntERNS_14BinaryOperatorE", "llvm::InstCombiner::FoldShiftByConstant(llvm::Value*, llvm::ConstantInt*, llvm::BinaryOperator&)"}, + {"_Z18CanEvaluateShiftedPN4llvm5ValueEjbRNS_12InstCombinerE", "CanEvaluateShifted(llvm::Value*, unsigned int, bool, llvm::InstCombiner&)"}, + {"_Z15GetShiftedValuePN4llvm5ValueEjbRNS_12InstCombinerE", "GetShiftedValue(llvm::Value*, unsigned int, bool, llvm::InstCombiner&)"}, + {"_ZN4llvm12InstCombiner8visitShlERNS_14BinaryOperatorE", "llvm::InstCombiner::visitShl(llvm::BinaryOperator&)"}, + {"_ZN4llvm12InstCombiner9visitLShrERNS_14BinaryOperatorE", "llvm::InstCombiner::visitLShr(llvm::BinaryOperator&)"}, + {"_ZN4llvm12InstCombiner9visitAShrERNS_14BinaryOperatorE", "llvm::InstCombiner::visitAShr(llvm::BinaryOperator&)"}, + + // {"_ZN4llvm12PatternMatch14BinaryOp_matchINS0_12BinOp2_matchINS0_7bind_tyINS_5ValueEEES5_Lj21ELj22EEENS3_INS_11ConstantIntEEELj23EE5matchIS4_EEbPT_", + // "bool llvm::PatternMatch::BinaryOp_match, llvm::PatternMatch::bind_ty, 21u, 22u>, llvm::PatternMatch::bind_ty, 23u>::match(llvm::Value*)"}, + // "bool llvm::PatternMatch::BinaryOp_match, llvm::PatternMatch::bind_ty, 21, 22>, llvm::PatternMatch::bind_ty, 23>::match(llvm::Value*)" was returned + + + // {"_ZN4llvm12PatternMatch14BinaryOp_matchINS0_12BinOp2_matchINS0_7bind_tyINS_5ValueEEENS0_14specificval_tyELj21ELj22EEENS3_INS_11ConstantIntEEELj23EE5matchIS4_EEbPT_", + // "bool llvm::PatternMatch::BinaryOp_match, llvm::PatternMatch::specificval_ty, 21u, 22u>, llvm::PatternMatch::bind_ty, 23u>::match(llvm::Value*)"}, + // "bool llvm::PatternMatch::BinaryOp_match, llvm::PatternMatch::specificval_ty, 21, 22>, llvm::PatternMatch::bind_ty, 23>::match(llvm::Value*)" was returned + + {"_ZN4llvm12InstCombiner31SimplifyDemandedInstructionBitsERNS_11InstructionE", "llvm::InstCombiner::SimplifyDemandedInstructionBits(llvm::Instruction&)"}, + {"_ZN4llvm12InstCombiner23SimplifyDemandedUseBitsEPNS_5ValueENS_5APIntERS3_S4_j", "llvm::InstCombiner::SimplifyDemandedUseBits(llvm::Value*, llvm::APInt, llvm::APInt&, llvm::APInt&, unsigned int)"}, + {"_ZN4llvm12InstCombiner20SimplifyDemandedBitsERNS_3UseENS_5APIntERS3_S4_j", "llvm::InstCombiner::SimplifyDemandedBits(llvm::Use&, llvm::APInt, llvm::APInt&, llvm::APInt&, unsigned int)"}, + {"_Z22ShrinkDemandedConstantPN4llvm11InstructionEjNS_5APIntE", "ShrinkDemandedConstant(llvm::Instruction*, unsigned int, llvm::APInt)"}, + {"_ZN4llvm12InstCombiner26SimplifyDemandedVectorEltsEPNS_5ValueENS_5APIntERS3_j", "llvm::InstCombiner::SimplifyDemandedVectorElts(llvm::Value*, llvm::APInt, llvm::APInt&, unsigned int)"}, + {"_ZN4llvm12InstCombiner23visitExtractElementInstERNS_18ExtractElementInstE", "llvm::InstCombiner::visitExtractElementInst(llvm::ExtractElementInst&)"}, + {"_Z17FindScalarElementPN4llvm5ValueEj", "FindScalarElement(llvm::Value*, unsigned int)"}, + {"_Z16CheapToScalarizePN4llvm5ValueEb", "CheapToScalarize(llvm::Value*, bool)"}, + {"_Z14getShuffleMaskPKN4llvm17ShuffleVectorInstE", "getShuffleMask(llvm::ShuffleVectorInst const*)"}, + {"_ZN4llvm12InstCombiner22visitInsertElementInstERNS_17InsertElementInstE", "llvm::InstCombiner::visitInsertElementInst(llvm::InsertElementInst&)"}, + {"_Z22CollectShuffleElementsPN4llvm5ValueERSt6vectorIPNS_8ConstantESaIS4_EERS1_", "CollectShuffleElements(llvm::Value*, std::vector>&, llvm::Value*&)"}, + {"_ZN4llvm12InstCombiner22visitShuffleVectorInstERNS_17ShuffleVectorInstE", "llvm::InstCombiner::visitShuffleVectorInst(llvm::ShuffleVectorInst&)"}, + {"_Z28CollectSingleShuffleElementsPN4llvm5ValueES1_S1_RSt6vectorIPNS_8ConstantESaIS4_EE", "CollectSingleShuffleElements(llvm::Value*, llvm::Value*, llvm::Value*, std::vector>&)"}, + {"_ZN4llvm21initializeInstCombineERNS_12PassRegistryE", "llvm::initializeInstCombine(llvm::PassRegistry&)"}, + {"_ZN4llvm26initializeInstCombinerPassERNS_12PassRegistryE", "llvm::initializeInstCombinerPass(llvm::PassRegistry&)"}, + {"_ZNK4llvm12InstCombiner16getAnalysisUsageERNS_13AnalysisUsageE", "llvm::InstCombiner::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZNK4llvm12InstCombiner16ShouldChangeTypeEPKNS_4TypeES3_", "llvm::InstCombiner::ShouldChangeType(llvm::Type const*, llvm::Type const*) const"}, + {"_ZN4llvm12InstCombiner32SimplifyAssociativeOrCommutativeERNS_14BinaryOperatorE", "llvm::InstCombiner::SimplifyAssociativeOrCommutative(llvm::BinaryOperator&)"}, + {"_ZN4llvm12InstCombiner29SimplifyUsingDistributiveLawsERNS_14BinaryOperatorE", "llvm::InstCombiner::SimplifyUsingDistributiveLaws(llvm::BinaryOperator&)"}, + {"_ZNK4llvm12InstCombiner14dyn_castNegValEPNS_5ValueE", "llvm::InstCombiner::dyn_castNegVal(llvm::Value*) const"}, + {"_ZNK4llvm12InstCombiner15dyn_castFNegValEPNS_5ValueE", "llvm::InstCombiner::dyn_castFNegVal(llvm::Value*) const"}, + {"_ZN4llvm12InstCombiner16FoldOpIntoSelectERNS_11InstructionEPNS_10SelectInstE", "llvm::InstCombiner::FoldOpIntoSelect(llvm::Instruction&, llvm::SelectInst*)"}, + {"_Z30FoldOperationIntoSelectOperandRN4llvm11InstructionEPNS_5ValueEPNS_12InstCombinerE", "FoldOperationIntoSelectOperand(llvm::Instruction&, llvm::Value*, llvm::InstCombiner*)"}, + {"_ZN4llvm12InstCombiner13FoldOpIntoPhiERNS_11InstructionE", "llvm::InstCombiner::FoldOpIntoPhi(llvm::Instruction&)"}, + {"_ZN4llvm12InstCombiner19FindElementAtOffsetEPKNS_4TypeExRNS_15SmallVectorImplIPNS_5ValueEEE", "llvm::InstCombiner::FindElementAtOffset(llvm::Type const*, long long, llvm::SmallVectorImpl&)"}, + {"_ZN4llvm12InstCombiner22visitGetElementPtrInstERNS_17GetElementPtrInstE", "llvm::InstCombiner::visitGetElementPtrInst(llvm::GetElementPtrInst&)"}, + {"_ZN4llvm12InstCombiner11visitMallocERNS_11InstructionE", "llvm::InstCombiner::visitMalloc(llvm::Instruction&)"}, + {"_ZN4llvm12InstCombiner9visitFreeERNS_8CallInstE", "llvm::InstCombiner::visitFree(llvm::CallInst&)"}, + {"_ZN4llvm12InstCombiner15visitBranchInstERNS_10BranchInstE", "llvm::InstCombiner::visitBranchInst(llvm::BranchInst&)"}, + {"_ZN4llvm12InstCombiner15visitSwitchInstERNS_10SwitchInstE", "llvm::InstCombiner::visitSwitchInst(llvm::SwitchInst&)"}, + {"_ZN4llvm12InstCombiner21visitExtractValueInstERNS_16ExtractValueInstE", "llvm::InstCombiner::visitExtractValueInst(llvm::ExtractValueInst&)"}, + {"_ZN4llvm12InstCombiner14DoOneIterationERNS_8FunctionEj", "llvm::InstCombiner::DoOneIteration(llvm::Function&, unsigned int)"}, + {"_ZN4llvm12InstCombiner13runOnFunctionERNS_8FunctionE", "llvm::InstCombiner::runOnFunction(llvm::Function&)"}, + {"_ZN4llvm30createInstructionCombiningPassEv", "llvm::createInstructionCombiningPass()"}, + {"_ZN4llvm9IRBuilderILb1ENS_12TargetFolderENS_21InstCombineIRInserterEE11CreateBinOpENS_11Instruction9BinaryOpsEPNS_5ValueES7_RKNS_5TwineE", "llvm::IRBuilder::CreateBinOp(llvm::Instruction::BinaryOps, llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm12InstCombiner19InsertNewInstBeforeEPNS_11InstructionERS1_", "llvm::InstCombiner::InsertNewInstBefore(llvm::Instruction*, llvm::Instruction&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_12TargetFolderENS_21InstCombineIRInserterEE12CreateSelectEPNS_5ValueES5_S5_RKNS_5TwineE", "llvm::IRBuilder::CreateSelect(llvm::Value*, llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_12TargetFolderENS_21InstCombineIRInserterEE10CreateICmpENS_7CmpInst9PredicateEPNS_5ValueES7_RKNS_5TwineE", "llvm::IRBuilder::CreateICmp(llvm::CmpInst::Predicate, llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_12TargetFolderENS_21InstCombineIRInserterEE10CreateFCmpENS_7CmpInst9PredicateEPNS_5ValueES7_RKNS_5TwineE", "llvm::IRBuilder::CreateFCmp(llvm::CmpInst::Predicate, llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_12TargetFolderENS_21InstCombineIRInserterEE10CreateCastENS_11Instruction7CastOpsEPNS_5ValueEPKNS_4TypeERKNS_5TwineE", "llvm::IRBuilder::CreateCast(llvm::Instruction::CastOps, llvm::Value*, llvm::Type const*, llvm::Twine const&)"}, + {"_ZN4llvm12InstCombiner19ReplaceInstUsesWithERNS_11InstructionEPNS_5ValueE", "llvm::InstCombiner::ReplaceInstUsesWith(llvm::Instruction&, llvm::Value*)"}, + {"_ZN4llvm12InstCombiner21EraseInstFromFunctionERNS_11InstructionE", "llvm::InstCombiner::EraseInstFromFunction(llvm::Instruction&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_12TargetFolderENS_21InstCombineIRInserterEE13CreateIntCastEPNS_5ValueEPKNS_4TypeEbRKNS_5TwineE", "llvm::IRBuilder::CreateIntCast(llvm::Value*, llvm::Type const*, bool, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_12TargetFolderENS_21InstCombineIRInserterEE9CreateAddEPNS_5ValueES5_RKNS_5TwineE", "llvm::IRBuilder::CreateAdd(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + + // {"_ZN4llvm9IRBuilderILb1ENS_12TargetFolderENS_21InstCombineIRInserterEE17CreateInBoundsGEPIPPNS_5ValueEEES6_S6_T_S8_RKNS_5TwineE", + // "llvm::Value* llvm::IRBuilder::CreateInBoundsGEP(llvm::Value*, llvm::Value**, llvm::Value**, llvm::Twine const&)"}, + // "llvm::Value* llvm::IRBuilder::CreateInBoundsGEP(llvm::Value*, true, true, llvm::Twine const&)" was returned + + + // {"_ZN4llvm9IRBuilderILb1ENS_12TargetFolderENS_21InstCombineIRInserterEE9CreateGEPIPPNS_5ValueEEES6_S6_T_S8_RKNS_5TwineE", + // "llvm::Value* llvm::IRBuilder::CreateGEP(llvm::Value*, llvm::Value**, llvm::Value**, llvm::Twine const&)"}, + // "llvm::Value* llvm::IRBuilder::CreateGEP(llvm::Value*, true, true, llvm::Twine const&)" was returned + + {"_ZN4llvm9IRBuilderILb1ENS_12TargetFolderENS_21InstCombineIRInserterEE9CreateMulEPNS_5ValueES5_RKNS_5TwineE", "llvm::IRBuilder::CreateMul(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + + // {"_ZN4llvm9IRBuilderILb1ENS_12TargetFolderENS_21InstCombineIRInserterEE18CreateExtractValueIPKjEEPNS_5ValueES8_T_S9_RKNS_5TwineE", + // "llvm::Value* llvm::IRBuilder::CreateExtractValue(llvm::Value*, unsigned int const*, unsigned int const*, llvm::Twine const&)"}, + // "llvm::Value* llvm::IRBuilder::CreateExtractValue(llvm::Value*, true, true, llvm::Twine const&)" was returned + + {"_ZN4llvm11InstVisitorINS_12InstCombinerEPNS_11InstructionEE5visitERS2_", "llvm::InstVisitor::visit(llvm::Instruction&)"}, + {"_ZN4llvm19InstCombineWorklist18AddUsersToWorkListERNS_11InstructionE", "llvm::InstCombineWorklist::AddUsersToWorkList(llvm::Instruction&)"}, + {"_ZN4llvm12InstCombinerD1Ev", "llvm::InstCombiner::~InstCombiner()"}, + {"_ZN4llvm12InstCombinerD0Ev", "llvm::InstCombiner::~InstCombiner()"}, + {"_ZNK4llvm21InstCombineIRInserter12InsertHelperEPNS_11InstructionERKNS_5TwineEPNS_10BasicBlockENS_14ilist_iteratorIS1_EE", "llvm::InstCombineIRInserter::InsertHelper(llvm::Instruction*, llvm::Twine const&, llvm::BasicBlock*, llvm::ilist_iterator) const"}, + + // {"_ZN4llvm15InsertValueInstC2IPKjEEPNS_5ValueES5_T_S6_RKNS_5TwineEPNS_11InstructionE", + // "llvm::InsertValueInst::InsertValueInst(llvm::Value*, llvm::Value*, unsigned int const*, unsigned int const*, llvm::Twine const&, llvm::Instruction*)"}, + // got error + + + // {"_ZN4llvm16ExtractValueInstC2IPKjEEPNS_5ValueET_S6_RKNS_5TwineEPNS_11InstructionE", + // "llvm::ExtractValueInst::ExtractValueInst(llvm::Value*, unsigned int const*, unsigned int const*, llvm::Twine const&, llvm::Instruction*)"}, + // got error + + {"_ZN4llvm12PatternMatch9not_matchINS0_7bind_tyINS_5ValueEEEE5matchIS3_EEbPT_", "bool llvm::PatternMatch::not_match>::match(llvm::Value*)"}, + {"_ZNK4llvm12TargetFolder13CreateIntCastEPNS_8ConstantEPKNS_4TypeEb", "llvm::TargetFolder::CreateIntCast(llvm::Constant*, llvm::Type const*, bool) const"}, + {"_ZN4llvm12InstCombinerC2Ev", "llvm::InstCombiner::InstCombiner()"}, + {"_ZN4llvm8DenseMapIPNS_11InstructionEjNS_12DenseMapInfoIS2_EENS3_IjEEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm19InstCombineWorklist15AddInitialGroupEPKPNS_11InstructionEj", "llvm::InstCombineWorklist::AddInitialGroup(llvm::Instruction* const*, unsigned int)"}, + {"_ZN4llvm8DenseMapIPNS_11InstructionEjNS_12DenseMapInfoIS2_EENS3_IjEEE6insertERKSt4pairIS2_jE", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPNS_11InstructionEjNS_12DenseMapInfoIS2_EENS3_IjEEE16InsertIntoBucketERKS2_RKjPSt4pairIS2_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::Instruction* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_11InstructionEjNS_12DenseMapInfoIS2_EENS3_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm15callDefaultCtorINS_12InstCombinerEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor()"}, + {"_ZNK4llvm11ExtAddrMode5printERNS_11raw_ostreamE", "llvm::ExtAddrMode::print(llvm::raw_ostream&) const"}, + {"_ZNK4llvm11ExtAddrMode4dumpEv", "llvm::ExtAddrMode::dump() const"}, + {"_ZN4llvm21AddressingModeMatcher16MatchScaledValueEPNS_5ValueExj", "llvm::AddressingModeMatcher::MatchScaledValue(llvm::Value*, long long, unsigned int)"}, + {"_ZN4llvm21AddressingModeMatcher9MatchAddrEPNS_5ValueEj", "llvm::AddressingModeMatcher::MatchAddr(llvm::Value*, unsigned int)"}, + {"_ZN4llvm21AddressingModeMatcher18MatchOperationAddrEPNS_4UserEjj", "llvm::AddressingModeMatcher::MatchOperationAddr(llvm::User*, unsigned int, unsigned int)"}, + {"_ZN4llvm21AddressingModeMatcher36IsProfitableToFoldIntoAddressingModeEPNS_11InstructionERNS_11ExtAddrModeES4_", "llvm::AddressingModeMatcher::IsProfitableToFoldIntoAddressingMode(llvm::Instruction*, llvm::ExtAddrMode&, llvm::ExtAddrMode&)"}, + {"_ZN4llvm21AddressingModeMatcher22ValueAlreadyLiveAtInstEPNS_5ValueES2_S2_", "llvm::AddressingModeMatcher::ValueAlreadyLiveAtInst(llvm::Value*, llvm::Value*, llvm::Value*)"}, + + // {"_Z17FindAllMemoryUsesPN4llvm11InstructionERNS_15SmallVectorImplISt4pairIS1_jEEERNS_11SmallPtrSetIS1_Lj16EEERKNS_14TargetLoweringE", + // "FindAllMemoryUses(llvm::Instruction*, llvm::SmallVectorImpl>&, llvm::SmallPtrSet&, llvm::TargetLowering const&)"}, + // "FindAllMemoryUses(llvm::Instruction*, llvm::SmallVectorImpl>&, llvm::SmallPtrSet&, llvm::TargetLowering const&)" was returned + + {"_ZN4llvm15SmallVectorImplIPNS_11InstructionEE6resizeEj", "llvm::SmallVectorImpl::resize(unsigned int)"}, + + // {"_ZSt6__findIPPN4llvm11InstructionES2_ET_S4_S4_RKT0_St26random_access_iterator_tag", + // "llvm::Instruction** std::__find(llvm::Instruction**, llvm::Instruction**, llvm::Instruction* const&, std::random_access_iterator_tag)"}, + // got error + + {"_ZN4llvm15DeleteDeadBlockEPNS_10BasicBlockE", "llvm::DeleteDeadBlock(llvm::BasicBlock*)"}, + {"_ZN4llvm23FoldSingleEntryPHINodesEPNS_10BasicBlockEPNS_4PassE", "llvm::FoldSingleEntryPHINodes(llvm::BasicBlock*, llvm::Pass*)"}, + {"_ZN4llvm14DeleteDeadPHIsEPNS_10BasicBlockE", "llvm::DeleteDeadPHIs(llvm::BasicBlock*)"}, + {"_ZN4llvm25MergeBlockIntoPredecessorEPNS_10BasicBlockEPNS_4PassE", "llvm::MergeBlockIntoPredecessor(llvm::BasicBlock*, llvm::Pass*)"}, + {"_ZN4llvm20ReplaceInstWithValueERNS_6iplistINS_11InstructionENS_12ilist_traitsIS1_EEEERNS_14ilist_iteratorIS1_EEPNS_5ValueE", "llvm::ReplaceInstWithValue(llvm::iplist>&, llvm::ilist_iterator&, llvm::Value*)"}, + {"_ZN4llvm19ReplaceInstWithInstERNS_6iplistINS_11InstructionENS_12ilist_traitsIS1_EEEERNS_14ilist_iteratorIS1_EEPS1_", "llvm::ReplaceInstWithInst(llvm::iplist>&, llvm::ilist_iterator&, llvm::Instruction*)"}, + {"_ZN4llvm19ReplaceInstWithInstEPNS_11InstructionES1_", "llvm::ReplaceInstWithInst(llvm::Instruction*, llvm::Instruction*)"}, + {"_ZN4llvm18GetSuccessorNumberEPNS_10BasicBlockES1_", "llvm::GetSuccessorNumber(llvm::BasicBlock*, llvm::BasicBlock*)"}, + {"_ZN4llvm9SplitEdgeEPNS_10BasicBlockES1_PNS_4PassE", "llvm::SplitEdge(llvm::BasicBlock*, llvm::BasicBlock*, llvm::Pass*)"}, + {"_ZN4llvm10SplitBlockEPNS_10BasicBlockEPNS_11InstructionEPNS_4PassE", "llvm::SplitBlock(llvm::BasicBlock*, llvm::Instruction*, llvm::Pass*)"}, + {"_ZN4llvm22SplitBlockPredecessorsEPNS_10BasicBlockEPKS1_jPKcPNS_4PassE", "llvm::SplitBlockPredecessors(llvm::BasicBlock*, llvm::BasicBlock* const*, unsigned int, char const*, llvm::Pass*)"}, + {"_ZN4llvm21FindFunctionBackedgesERKNS_8FunctionERNS_15SmallVectorImplISt4pairIPKNS_10BasicBlockES7_EEE", "llvm::FindFunctionBackedges(llvm::Function const&, llvm::SmallVectorImpl>&)"}, + {"_ZN4llvm26FoldReturnIntoUncondBranchEPNS_10ReturnInstEPNS_10BasicBlockES3_", "llvm::FoldReturnIntoUncondBranch(llvm::ReturnInst*, llvm::BasicBlock*, llvm::BasicBlock*)"}, + + // {"_ZN4llvm8LoopBaseINS_10BasicBlockENS_4LoopEE19addBasicBlockToLoopEPS1_RNS_12LoopInfoBaseIS1_S2_EE", + // "llvm::LoopBase::addBasicBlockToLoop(llvm::BasicBlock*, llvm::LoopInfoBase&)"}, + // "llvm::LoopBase::addBasicBlockToLoop(llvm::BasicBlock*, llvm::LoopInfoBase>&)" was returned + + {"_ZN4llvm23SmallVectorTemplateBaseISt4pairIPKNS_10BasicBlockENS_12SuccIteratorIPKNS_14TerminatorInstES3_EEELb0EE4growEm", "llvm::SmallVectorTemplateBase>, false>::grow(unsigned long)"}, + {"_ZN4llvm8DenseMapIPNS_10BasicBlockEPNS_4LoopENS_12DenseMapInfoIS2_EENS5_IS4_EEE16InsertIntoBucketERKS2_RKS4_PSt4pairIS2_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::BasicBlock* const&, llvm::Loop* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_10BasicBlockEPNS_4LoopENS_12DenseMapInfoIS2_EENS5_IS4_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm12LoopInfoBaseINS_10BasicBlockENS_4LoopEE11removeBlockEPS1_", "llvm::LoopInfoBase::removeBlock(llvm::BasicBlock*)"}, + {"_ZN4llvm8LoopBaseINS_10BasicBlockENS_4LoopEE19removeBlockFromLoopEPS1_", "llvm::LoopBase::removeBlockFromLoop(llvm::BasicBlock*)"}, + + // {"_ZSt6__findIN9__gnu_cxx17__normal_iteratorIPPN4llvm10BasicBlockESt6vectorIS4_SaIS4_EEEES4_ET_SA_SA_RKT0_St26random_access_iterator_tag", + // "__gnu_cxx::__normal_iterator>> std::__find<__gnu_cxx::__normal_iterator>>, llvm::BasicBlock*>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, llvm::BasicBlock* const&, std::random_access_iterator_tag)"}, + // got error + + {"_ZN4llvm32initializeBreakCriticalEdgesPassERNS_12PassRegistryE", "llvm::initializeBreakCriticalEdgesPass(llvm::PassRegistry&)"}, + {"_ZN4llvm28createBreakCriticalEdgesPassEv", "llvm::createBreakCriticalEdgesPass()"}, + {"_ZN4llvm14isCriticalEdgeEPKNS_14TerminatorInstEjb", "llvm::isCriticalEdge(llvm::TerminatorInst const*, unsigned int, bool)"}, + {"_ZN4llvm17SplitCriticalEdgeEPNS_14TerminatorInstEjPNS_4PassEb", "llvm::SplitCriticalEdge(llvm::TerminatorInst*, unsigned int, llvm::Pass*, bool)"}, + {"_Z26CreatePHIsForSplitLoopExitRN4llvm15SmallVectorImplIPNS_10BasicBlockEEES2_S2_", "CreatePHIsForSplitLoopExit(llvm::SmallVectorImpl&, llvm::BasicBlock*, llvm::BasicBlock*)"}, + {"_ZN12_GLOBAL__N_118BreakCriticalEdgesD1Ev", "(anonymous namespace)::BreakCriticalEdges::~BreakCriticalEdges()"}, + {"_ZN12_GLOBAL__N_118BreakCriticalEdgesD0Ev", "(anonymous namespace)::BreakCriticalEdges::~BreakCriticalEdges()"}, + {"_ZNK12_GLOBAL__N_118BreakCriticalEdges16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::BreakCriticalEdges::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_118BreakCriticalEdges13runOnFunctionERN4llvm8FunctionE", "(anonymous namespace)::BreakCriticalEdges::runOnFunction(llvm::Function&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_118BreakCriticalEdgesEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::BreakCriticalEdges>()"}, + {"_ZN4llvm10CastToCStrEPNS_5ValueERNS_9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEEE", "llvm::CastToCStr(llvm::Value*, llvm::IRBuilder>&)"}, + {"_ZN4llvm10EmitStrLenEPNS_5ValueERNS_9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEEEPKNS_10DataLayoutE", "llvm::EmitStrLen(llvm::Value*, llvm::IRBuilder>&, llvm::DataLayout const*)"}, + {"_ZN4llvm10EmitStrChrEPNS_5ValueEcRNS_9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEEEPKNS_10DataLayoutE", "llvm::EmitStrChr(llvm::Value*, char, llvm::IRBuilder>&, llvm::DataLayout const*)"}, + {"_ZN4llvm11EmitStrNCmpEPNS_5ValueES1_S1_RNS_9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEEEPKNS_10DataLayoutE", "llvm::EmitStrNCmp(llvm::Value*, llvm::Value*, llvm::Value*, llvm::IRBuilder>&, llvm::DataLayout const*)"}, + {"_ZN4llvm10EmitStrCpyEPNS_5ValueES1_RNS_9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEEEPKNS_10DataLayoutENS_9StringRefE", "llvm::EmitStrCpy(llvm::Value*, llvm::Value*, llvm::IRBuilder>&, llvm::DataLayout const*, llvm::StringRef)"}, + {"_ZN4llvm11EmitStrNCpyEPNS_5ValueES1_S1_RNS_9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEEEPKNS_10DataLayoutENS_9StringRefE", "llvm::EmitStrNCpy(llvm::Value*, llvm::Value*, llvm::Value*, llvm::IRBuilder>&, llvm::DataLayout const*, llvm::StringRef)"}, + {"_ZN4llvm13EmitMemCpyChkEPNS_5ValueES1_S1_S1_RNS_9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEEEPKNS_10DataLayoutE", "llvm::EmitMemCpyChk(llvm::Value*, llvm::Value*, llvm::Value*, llvm::Value*, llvm::IRBuilder>&, llvm::DataLayout const*)"}, + {"_ZN4llvm10EmitMemChrEPNS_5ValueES1_S1_RNS_9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEEEPKNS_10DataLayoutE", "llvm::EmitMemChr(llvm::Value*, llvm::Value*, llvm::Value*, llvm::IRBuilder>&, llvm::DataLayout const*)"}, + {"_ZN4llvm10EmitMemCmpEPNS_5ValueES1_S1_RNS_9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEEEPKNS_10DataLayoutE", "llvm::EmitMemCmp(llvm::Value*, llvm::Value*, llvm::Value*, llvm::IRBuilder>&, llvm::DataLayout const*)"}, + {"_ZN4llvm20EmitUnaryFloatFnCallEPNS_5ValueEPKcRNS_9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEEERKNS_11AttrListPtrE", "llvm::EmitUnaryFloatFnCall(llvm::Value*, char const*, llvm::IRBuilder>&, llvm::AttrListPtr const&)"}, + {"_ZN4llvm11EmitPutCharEPNS_5ValueERNS_9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEEEPKNS_10DataLayoutE", "llvm::EmitPutChar(llvm::Value*, llvm::IRBuilder>&, llvm::DataLayout const*)"}, + {"_ZN4llvm8EmitPutSEPNS_5ValueERNS_9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEEEPKNS_10DataLayoutE", "llvm::EmitPutS(llvm::Value*, llvm::IRBuilder>&, llvm::DataLayout const*)"}, + {"_ZN4llvm9EmitFPutCEPNS_5ValueES1_RNS_9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEEEPKNS_10DataLayoutE", "llvm::EmitFPutC(llvm::Value*, llvm::Value*, llvm::IRBuilder>&, llvm::DataLayout const*)"}, + {"_ZN4llvm9EmitFPutSEPNS_5ValueES1_RNS_9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEEEPKNS_10DataLayoutE", "llvm::EmitFPutS(llvm::Value*, llvm::Value*, llvm::IRBuilder>&, llvm::DataLayout const*)"}, + {"_ZN4llvm10EmitFWriteEPNS_5ValueES1_S1_RNS_9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEEEPKNS_10DataLayoutE", "llvm::EmitFWrite(llvm::Value*, llvm::Value*, llvm::Value*, llvm::IRBuilder>&, llvm::DataLayout const*)"}, + {"_ZN4llvm25SimplifyFortifiedLibCallsD0Ev", "llvm::SimplifyFortifiedLibCalls::~SimplifyFortifiedLibCalls()"}, + {"_ZN4llvm25SimplifyFortifiedLibCallsD1Ev", "llvm::SimplifyFortifiedLibCalls::~SimplifyFortifiedLibCalls()"}, + {"_ZN4llvm25SimplifyFortifiedLibCallsD2Ev", "llvm::SimplifyFortifiedLibCalls::~SimplifyFortifiedLibCalls()"}, + {"_ZN4llvm25SimplifyFortifiedLibCalls4foldEPNS_8CallInstEPKNS_10DataLayoutE", "llvm::SimplifyFortifiedLibCalls::fold(llvm::CallInst*, llvm::DataLayout const*)"}, + {"_ZN4llvm9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEE11CreateCall3EPNS_5ValueES6_S6_S6_RKNS_5TwineE", "llvm::IRBuilder>::CreateCall3(llvm::Value*, llvm::Value*, llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEE11CreateCall4EPNS_5ValueES6_S6_S6_S6_RKNS_5TwineE", "llvm::IRBuilder>::CreateCall4(llvm::Value*, llvm::Value*, llvm::Value*, llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + + // {"_ZN4llvm15CloneBasicBlockEPKNS_10BasicBlockERNS_8ValueMapIPKNS_5ValueENS_10TrackingVHIS4_EENS_14ValueMapConfigIS6_EENS_12DenseMapInfoIS8_EEEERKNS_5TwineEPNS_8FunctionEPNS_14ClonedCodeInfoE", + // "llvm::CloneBasicBlock(llvm::BasicBlock const*, llvm::ValueMap, llvm::ValueMapConfig, llvm::DenseMapInfo>>&, llvm::Twine const&, llvm::Function*, llvm::ClonedCodeInfo*)"}, + // "llvm::CloneBasicBlock(llvm::BasicBlock const*, llvm::ValueMap, llvm::ValueMapConfig, llvm::DenseMapInfo>&, llvm::Twine const&, llvm::Function*, llvm::ClonedCodeInfo*)" was returned + + + // {"_ZN4llvm17CloneFunctionIntoEPNS_8FunctionEPKS0_RNS_8ValueMapIPKNS_5ValueENS_10TrackingVHIS5_EENS_14ValueMapConfigIS7_EENS_12DenseMapInfoIS9_EEEEbRNS_15SmallVectorImplIPNS_10ReturnInstEEEPKcPNS_14ClonedCodeInfoE", + // "llvm::CloneFunctionInto(llvm::Function*, llvm::Function const*, llvm::ValueMap, llvm::ValueMapConfig, llvm::DenseMapInfo>>&, bool, llvm::SmallVectorImpl&, char const*, llvm::ClonedCodeInfo*)"}, + // "llvm::CloneFunctionInto(llvm::Function*, llvm::Function const*, llvm::ValueMap, llvm::ValueMapConfig, llvm::DenseMapInfo>&, bool, llvm::SmallVectorImpl&, char const*, llvm::ClonedCodeInfo*)" was returned + + + // {"_ZN4llvm13CloneFunctionEPKNS_8FunctionERNS_8ValueMapIPKNS_5ValueENS_10TrackingVHIS4_EENS_14ValueMapConfigIS6_EENS_12DenseMapInfoIS8_EEEEbPNS_14ClonedCodeInfoE", + // "llvm::CloneFunction(llvm::Function const*, llvm::ValueMap, llvm::ValueMapConfig, llvm::DenseMapInfo>>&, bool, llvm::ClonedCodeInfo*)"}, + // "llvm::CloneFunction(llvm::Function const*, llvm::ValueMap, llvm::ValueMapConfig, llvm::DenseMapInfo>&, bool, llvm::ClonedCodeInfo*)" was returned + + + // {"_ZN4llvm25CloneAndPruneFunctionIntoEPNS_8FunctionEPKS0_RNS_8ValueMapIPKNS_5ValueENS_10TrackingVHIS5_EENS_14ValueMapConfigIS7_EENS_12DenseMapInfoIS9_EEEEbRNS_15SmallVectorImplIPNS_10ReturnInstEEEPKcPNS_14ClonedCodeInfoEPKNS_10DataLayoutEPNS_11InstructionE", + // "llvm::CloneAndPruneFunctionInto(llvm::Function*, llvm::Function const*, llvm::ValueMap, llvm::ValueMapConfig, llvm::DenseMapInfo>>&, bool, llvm::SmallVectorImpl&, char const*, llvm::ClonedCodeInfo*, llvm::DataLayout const*, llvm::Instruction*)"}, + // "llvm::CloneAndPruneFunctionInto(llvm::Function*, llvm::Function const*, llvm::ValueMap, llvm::ValueMapConfig, llvm::DenseMapInfo>&, bool, llvm::SmallVectorImpl&, char const*, llvm::ClonedCodeInfo*, llvm::DataLayout const*, llvm::Instruction*)" was returned + + {"_Z19UpdateInlinedAtInfoRKN4llvm8DebugLocES2_RNS_11LLVMContextE", "UpdateInlinedAtInfo(llvm::DebugLoc const&, llvm::DebugLoc const&, llvm::LLVMContext&)"}, + {"_ZNSt6vectorIPKN4llvm10BasicBlockESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::BasicBlock const* const&)"}, + {"_ZN4llvm16DemoteRegToStackERNS_11InstructionEbPS0_", "llvm::DemoteRegToStack(llvm::Instruction&, bool, llvm::Instruction*)"}, + {"_ZN4llvm16DemotePHIToStackEPNS_7PHINodeEPNS_11InstructionE", "llvm::DemotePHIToStack(llvm::PHINode*, llvm::Instruction*)"}, + {"_ZNSt8_Rb_treeIPN4llvm10BasicBlockESt4pairIKS2_PNS0_5ValueEESt10_Select1stIS7_ESt4lessIS2_ESaIS7_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS7_ERKS7_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIPN4llvm10BasicBlockESt4pairIKS2_PNS0_5ValueEESt10_Select1stIS7_ESt4lessIS2_ESaIS7_EE16_M_insert_uniqueERKS7_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZNSt8_Rb_treeIPN4llvm10BasicBlockESt4pairIKS2_PNS0_5ValueEESt10_Select1stIS7_ESt4lessIS2_ESaIS7_EE8_M_eraseEPSt13_Rb_tree_nodeIS7_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZN4llvm14InlineFunctionEPNS_8CallInstERNS_18InlineFunctionInfoE", "llvm::InlineFunction(llvm::CallInst*, llvm::InlineFunctionInfo&)"}, + {"_ZN4llvm14InlineFunctionENS_8CallSiteERNS_18InlineFunctionInfoE", "llvm::InlineFunction(llvm::CallSite, llvm::InlineFunctionInfo&)"}, + {"_ZN4llvm14InlineFunctionEPNS_10InvokeInstERNS_18InlineFunctionInfoE", "llvm::InlineFunction(llvm::InvokeInst*, llvm::InlineFunctionInfo&)"}, + + // {"_ZNSt6vectorISt4pairIN4llvm6WeakVHEPNS1_13CallGraphNodeEESaIS5_EE13_M_assign_auxIN9__gnu_cxx17__normal_iteratorIPS5_S7_EEEEvT_SD_St20forward_iterator_tag", + // "void std::vector, std::allocator>>::_M_assign_aux<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::forward_iterator_tag)"}, + // got error + + + // {"_ZNSt6vectorISt4pairIN4llvm6WeakVHEPNS1_13CallGraphNodeEESaIS5_EE20_M_allocate_and_copyIN9__gnu_cxx17__normal_iteratorIPS5_S7_EEEESB_mT_SD_", + // "std::pair* std::vector, std::allocator>>::_M_allocate_and_copy<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>>(unsigned long, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>)"}, + // got error + + {"_ZN4llvm19initializeLCSSAPassERNS_12PassRegistryE", "llvm::initializeLCSSAPass(llvm::PassRegistry&)"}, + {"_ZN4llvm15createLCSSAPassEv", "llvm::createLCSSAPass()"}, + {"_ZN12_GLOBAL__N_15LCSSAC1Ev", "(anonymous namespace)::LCSSA::LCSSA()"}, + {"_ZN12_GLOBAL__N_15LCSSAD1Ev", "(anonymous namespace)::LCSSA::~LCSSA()"}, + {"_ZN12_GLOBAL__N_15LCSSAD0Ev", "(anonymous namespace)::LCSSA::~LCSSA()"}, + {"_ZNK12_GLOBAL__N_15LCSSA16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::LCSSA::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZNK12_GLOBAL__N_15LCSSA14verifyAnalysisEv", "(anonymous namespace)::LCSSA::verifyAnalysis() const"}, + {"_ZN12_GLOBAL__N_15LCSSA9runOnLoopEPN4llvm4LoopERNS1_13LPPassManagerE", "(anonymous namespace)::LCSSA::runOnLoop(llvm::Loop*, llvm::LPPassManager&)"}, + {"_ZN4llvm25array_pod_sort_comparatorIPNS_10BasicBlockEEEiPKvS4_", "int llvm::array_pod_sort_comparator(void const*, void const*)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_15LCSSAEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::LCSSA>()"}, + {"_ZN4llvm17PredIteratorCache11GetNumPredsEPNS_10BasicBlockE", "llvm::PredIteratorCache::GetNumPreds(llvm::BasicBlock*)"}, + {"_ZN4llvm22ConstantFoldTerminatorEPNS_10BasicBlockE", "llvm::ConstantFoldTerminator(llvm::BasicBlock*)"}, + {"_ZN4llvm26isInstructionTriviallyDeadEPNS_11InstructionE", "llvm::isInstructionTriviallyDead(llvm::Instruction*)"}, + {"_ZN4llvm42RecursivelyDeleteTriviallyDeadInstructionsEPNS_5ValueE", "llvm::RecursivelyDeleteTriviallyDeadInstructions(llvm::Value*)"}, + {"_ZN4llvm28RecursivelyDeleteDeadPHINodeEPNS_7PHINodeE", "llvm::RecursivelyDeleteDeadPHINode(llvm::PHINode*)"}, + {"_ZN4llvm27SimplifyInstructionsInBlockEPNS_10BasicBlockEPKNS_10DataLayoutE", "llvm::SimplifyInstructionsInBlock(llvm::BasicBlock*, llvm::DataLayout const*)"}, + {"_ZN4llvm28RemovePredecessorAndSimplifyEPNS_10BasicBlockES1_PNS_10DataLayoutE", "llvm::RemovePredecessorAndSimplify(llvm::BasicBlock*, llvm::BasicBlock*, llvm::DataLayout*)"}, + {"_ZN4llvm27MergeBasicBlockIntoOnlyPredEPNS_10BasicBlockEPNS_4PassE", "llvm::MergeBasicBlockIntoOnlyPred(llvm::BasicBlock*, llvm::Pass*)"}, + {"_ZN4llvm39TryToSimplifyUncondBranchFromEmptyBlockEPNS_10BasicBlockE", "llvm::TryToSimplifyUncondBranchFromEmptyBlock(llvm::BasicBlock*)"}, + {"_ZN4llvm26EliminateDuplicatePHINodesEPNS_10BasicBlockE", "llvm::EliminateDuplicatePHINodes(llvm::BasicBlock*)"}, + {"_ZN4llvm26getOrEnforceKnownAlignmentEPNS_5ValueEjPKNS_10DataLayoutE", "llvm::getOrEnforceKnownAlignment(llvm::Value*, unsigned int, llvm::DataLayout const*)"}, + {"_ZN4llvm8DenseMapImPNS_7PHINodeENS_12DenseMapInfoImEENS3_IS2_EEE6insertERKSt4pairImS2_E", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPNS_7PHINodeES2_NS_12DenseMapInfoIS2_EES4_E16InsertIntoBucketERKS2_S7_PSt4pairIS2_S2_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::PHINode* const&, llvm::PHINode* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_7PHINodeES2_NS_12DenseMapInfoIS2_EES4_E4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapImPNS_7PHINodeENS_12DenseMapInfoImEENS3_IS2_EEE16InsertIntoBucketERKmRKS2_PSt4pairImS2_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(unsigned long const&, llvm::PHINode* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapImPNS_7PHINodeENS_12DenseMapInfoImEENS3_IS2_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + + // {"_ZN4llvm11SmallPtrSetIPNS_10BasicBlockELj16EEC2INS_12PredIteratorIS1_NS_18value_use_iteratorINS_4UserEEEEEEET_SA_", + // "llvm::SmallPtrSet::SmallPtrSet>>(llvm::PredIterator>, llvm::PredIterator>)"}, + // got error + + {"_ZN4llvm26initializeLoopSimplifyPassERNS_12PassRegistryE", "llvm::initializeLoopSimplifyPass(llvm::PassRegistry&)"}, + {"_ZN4llvm22createLoopSimplifyPassEv", "llvm::createLoopSimplifyPass()"}, + {"_ZN12_GLOBAL__N_112LoopSimplifyD1Ev", "(anonymous namespace)::LoopSimplify::~LoopSimplify()"}, + {"_ZN12_GLOBAL__N_112LoopSimplifyD0Ev", "(anonymous namespace)::LoopSimplify::~LoopSimplify()"}, + {"_ZNK12_GLOBAL__N_112LoopSimplify16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::LoopSimplify::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZNK12_GLOBAL__N_112LoopSimplify14verifyAnalysisEv", "(anonymous namespace)::LoopSimplify::verifyAnalysis() const"}, + {"_ZN12_GLOBAL__N_112LoopSimplify9runOnLoopEPN4llvm4LoopERNS1_13LPPassManagerE", "(anonymous namespace)::LoopSimplify::runOnLoop(llvm::Loop*, llvm::LPPassManager&)"}, + {"_ZN12_GLOBAL__N_112LoopSimplify24PlaceSplitBlockCarefullyEPN4llvm10BasicBlockERNS1_15SmallVectorImplIS3_EEPNS1_4LoopE", "(anonymous namespace)::LoopSimplify::PlaceSplitBlockCarefully(llvm::BasicBlock*, llvm::SmallVectorImpl&, llvm::Loop*)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_112LoopSimplifyEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::LoopSimplify>()"}, + {"_ZNK4llvm8LoopBaseINS_10BasicBlockENS_4LoopEE15getNumBackEdgesEv", "llvm::LoopBase::getNumBackEdges() const"}, + + // {"_ZN4llvm14SmallSetVectorIPNS_10BasicBlockELj8EEC2IPS2_EET_S6_", + // "llvm::SmallSetVector::SmallSetVector(llvm::BasicBlock**, llvm::BasicBlock**)"}, + // got error + + {"_ZN4llvm10UnrollLoopEPNS_4LoopEjPNS_8LoopInfoEPNS_13LPPassManagerE", "llvm::UnrollLoop(llvm::Loop*, unsigned int, llvm::LoopInfo*, llvm::LPPassManager*)"}, + + // {"_ZN4llvm8DenseMapINS_18ValueMapCallbackVHIPKNS_5ValueENS_10TrackingVHIS2_EENS_14ValueMapConfigIS4_EENS_12DenseMapInfoIS6_EEEES6_NS9_ISB_EESA_E5beginEv", + // "llvm::DenseMap, llvm::ValueMapConfig, llvm::DenseMapInfo>>, llvm::TrackingVH, llvm::DenseMapInfo, llvm::ValueMapConfig, llvm::DenseMapInfo>>>, llvm::DenseMapInfo>>::begin()"}, + // got error + + {"_ZNSt6vectorIPN4llvm7PHINodeESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::PHINode* const&)"}, + {"_ZN4llvm25initializeLowerInvokePassERNS_12PassRegistryE", "llvm::initializeLowerInvokePass(llvm::PassRegistry&)"}, + {"_ZN4llvm21createLowerInvokePassEPKNS_14TargetLoweringE", "llvm::createLowerInvokePass(llvm::TargetLowering const*)"}, + {"_ZN4llvm21createLowerInvokePassEPKNS_14TargetLoweringEb", "llvm::createLowerInvokePass(llvm::TargetLowering const*, bool)"}, + {"_ZN12_GLOBAL__N_111LowerInvokeD1Ev", "(anonymous namespace)::LowerInvoke::~LowerInvoke()"}, + {"_ZN12_GLOBAL__N_111LowerInvokeD0Ev", "(anonymous namespace)::LowerInvoke::~LowerInvoke()"}, + {"_ZNK12_GLOBAL__N_111LowerInvoke16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::LowerInvoke::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_111LowerInvoke16doInitializationERN4llvm6ModuleE", "(anonymous namespace)::LowerInvoke::doInitialization(llvm::Module&)"}, + {"_ZN12_GLOBAL__N_111LowerInvoke13runOnFunctionERN4llvm8FunctionE", "(anonymous namespace)::LowerInvoke::runOnFunction(llvm::Function&)"}, + {"_Z16MarkBlocksLiveInPN4llvm10BasicBlockERSt3setIS1_St4lessIS1_ESaIS1_EE", "MarkBlocksLiveIn(llvm::BasicBlock*, std::set, std::allocator>&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_111LowerInvokeEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::LowerInvoke>()"}, + + // {"_ZN4llvm17GetElementPtrInstC2IPPNS_5ValueEEES3_T_S5_jRKNS_5TwineEPNS_10BasicBlockE", + // "llvm::GetElementPtrInst::GetElementPtrInst(llvm::Value*, llvm::Value**, llvm::Value**, unsigned int, llvm::Twine const&, llvm::BasicBlock*)"}, + // got error + + {"_ZNSt8_Rb_treeIPN4llvm10InvokeInstES2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE8_M_eraseEPSt13_Rb_tree_nodeIS2_E", "std::_Rb_tree, std::less, std::allocator>::_M_erase(std::_Rb_tree_node*)"}, + {"_ZN4llvm25initializeLowerSwitchPassERNS_12PassRegistryE", "llvm::initializeLowerSwitchPass(llvm::PassRegistry&)"}, + {"_ZN4llvm21createLowerSwitchPassEv", "llvm::createLowerSwitchPass()"}, + {"_ZlsRN4llvm11raw_ostreamERKSt6vectorIN12_GLOBAL__N_111LowerSwitch9CaseRangeESaIS5_EE", "operator<<(llvm::raw_ostream&, std::vector<(anonymous namespace)::LowerSwitch::CaseRange, std::allocator<(anonymous namespace)::LowerSwitch::CaseRange>> const&)"}, + {"_ZN12_GLOBAL__N_111LowerSwitchD1Ev", "(anonymous namespace)::LowerSwitch::~LowerSwitch()"}, + {"_ZN12_GLOBAL__N_111LowerSwitchD0Ev", "(anonymous namespace)::LowerSwitch::~LowerSwitch()"}, + {"_ZNK12_GLOBAL__N_111LowerSwitch16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::LowerSwitch::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_111LowerSwitch13runOnFunctionERN4llvm8FunctionE", "(anonymous namespace)::LowerSwitch::runOnFunction(llvm::Function&)"}, + {"_ZN12_GLOBAL__N_111LowerSwitch13switchConvertEN9__gnu_cxx17__normal_iteratorIPNS0_9CaseRangeESt6vectorIS3_SaIS3_EEEES8_PN4llvm5ValueEPNS9_10BasicBlockESD_", "(anonymous namespace)::LowerSwitch::switchConvert(__gnu_cxx::__normal_iterator<(anonymous namespace)::LowerSwitch::CaseRange*, std::vector<(anonymous namespace)::LowerSwitch::CaseRange, std::allocator<(anonymous namespace)::LowerSwitch::CaseRange>>>, __gnu_cxx::__normal_iterator<(anonymous namespace)::LowerSwitch::CaseRange*, std::vector<(anonymous namespace)::LowerSwitch::CaseRange, std::allocator<(anonymous namespace)::LowerSwitch::CaseRange>>>, llvm::Value*, llvm::BasicBlock*, llvm::BasicBlock*)"}, + + // {"_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_111LowerSwitch9CaseRangeESt6vectorIS4_SaIS4_EEEElNS2_7CaseCmpEEvT_SB_T0_T1_", + // "void std::__introsort_loop<__gnu_cxx::__normal_iterator<(anonymous namespace)::LowerSwitch::CaseRange*, std::vector<(anonymous namespace)::LowerSwitch::CaseRange, std::allocator<(anonymous namespace)::LowerSwitch::CaseRange>>>, long, (anonymous namespace)::CaseCmp>(__gnu_cxx::__normal_iterator<(anonymous namespace)::LowerSwitch::CaseRange*, std::vector<(anonymous namespace)::LowerSwitch::CaseRange, std::allocator<(anonymous namespace)::LowerSwitch::CaseRange>>>, __gnu_cxx::__normal_iterator<(anonymous namespace)::LowerSwitch::CaseRange*, std::vector<(anonymous namespace)::LowerSwitch::CaseRange, std::allocator<(anonymous namespace)::LowerSwitch::CaseRange>>>, long, (anonymous namespace)::CaseCmp)"}, + // got error + + + // {"_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_111LowerSwitch9CaseRangeESt6vectorIS4_SaIS4_EEEENS2_7CaseCmpEEvT_SB_T0_", + // "void std::__insertion_sort<__gnu_cxx::__normal_iterator<(anonymous namespace)::LowerSwitch::CaseRange*, std::vector<(anonymous namespace)::LowerSwitch::CaseRange, std::allocator<(anonymous namespace)::LowerSwitch::CaseRange>>>, (anonymous namespace)::CaseCmp>(__gnu_cxx::__normal_iterator<(anonymous namespace)::LowerSwitch::CaseRange*, std::vector<(anonymous namespace)::LowerSwitch::CaseRange, std::allocator<(anonymous namespace)::LowerSwitch::CaseRange>>>, __gnu_cxx::__normal_iterator<(anonymous namespace)::LowerSwitch::CaseRange*, std::vector<(anonymous namespace)::LowerSwitch::CaseRange, std::allocator<(anonymous namespace)::LowerSwitch::CaseRange>>>, (anonymous namespace)::CaseCmp)"}, + // got error + + + // {"_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_111LowerSwitch9CaseRangeESt6vectorIS4_SaIS4_EEEElS4_NS2_7CaseCmpEEvT_T0_SC_T1_T2_", + // "void std::__adjust_heap<__gnu_cxx::__normal_iterator<(anonymous namespace)::LowerSwitch::CaseRange*, std::vector<(anonymous namespace)::LowerSwitch::CaseRange, std::allocator<(anonymous namespace)::LowerSwitch::CaseRange>>>, long, (anonymous namespace)::LowerSwitch::CaseRange, (anonymous namespace)::CaseCmp>(__gnu_cxx::__normal_iterator<(anonymous namespace)::LowerSwitch::CaseRange*, std::vector<(anonymous namespace)::LowerSwitch::CaseRange, std::allocator<(anonymous namespace)::LowerSwitch::CaseRange>>>, long, long, (anonymous namespace)::LowerSwitch::CaseRange, (anonymous namespace)::CaseCmp)"}, + // got error + + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_111LowerSwitchEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::LowerSwitch>()"}, + {"_ZN4llvm18isAllocaPromotableEPKNS_10AllocaInstE", "llvm::isAllocaPromotable(llvm::AllocaInst const*)"}, + {"_ZN4llvm15PromoteMemToRegERKSt6vectorIPNS_10AllocaInstESaIS2_EERNS_13DominatorTreeEPNS_15AliasSetTrackerE", "llvm::PromoteMemToReg(std::vector> const&, llvm::DominatorTree&, llvm::AliasSetTracker*)"}, + {"_ZN12_GLOBAL__N_114PromoteMem2Reg3runEv", "(anonymous namespace)::PromoteMem2Reg::run()"}, + {"_ZN12_GLOBAL__N_114PromoteMem2Reg31ConvertDebugDeclareToDebugValueEPN4llvm14DbgDeclareInstEPNS1_9StoreInstE", "(anonymous namespace)::PromoteMem2Reg::ConvertDebugDeclareToDebugValue(llvm::DbgDeclareInst*, llvm::StoreInst*)"}, + {"_ZNSt6vectorIN12_GLOBAL__N_114RenamePassDataESaIS1_EE9push_backERKS1_", "std::vector<(anonymous namespace)::RenamePassData, std::allocator<(anonymous namespace)::RenamePassData>>::push_back((anonymous namespace)::RenamePassData const&)"}, + {"_ZN12_GLOBAL__N_114PromoteMem2Reg11getNumPredsEPKN4llvm10BasicBlockE", "(anonymous namespace)::PromoteMem2Reg::getNumPreds(llvm::BasicBlock const*)"}, + {"_ZN12_GLOBAL__N_114LargeBlockInfo19getInstructionIndexEPKN4llvm11InstructionE", "(anonymous namespace)::LargeBlockInfo::getInstructionIndex(llvm::Instruction const*)"}, + {"_ZN4llvm15SmallVectorImplIPNS_14DbgDeclareInstEE6resizeEj", "llvm::SmallVectorImpl::resize(unsigned int)"}, + {"_ZN4llvm8DenseMapISt4pairIPNS_10BasicBlockEjEPNS_7PHINodeENS_12DenseMapInfoIS4_EENS7_IS6_EEE5clearEv", "llvm::DenseMap, llvm::PHINode*, llvm::DenseMapInfo>, llvm::DenseMapInfo>::clear()"}, + {"_ZN4llvm8DenseMapISt4pairIPNS_10BasicBlockEjEPNS_7PHINodeENS_12DenseMapInfoIS4_EENS7_IS6_EEE16shrink_and_clearEv", "llvm::DenseMap, llvm::PHINode*, llvm::DenseMapInfo>, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm8DenseMapIPNS_7PHINodeEjNS_12DenseMapInfoIS2_EENS3_IjEEE16InsertIntoBucketERKS2_RKjPSt4pairIS2_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::PHINode* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_7PHINodeEjNS_12DenseMapInfoIS2_EENS3_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKNS_11InstructionEjNS_12DenseMapInfoIS3_EENS4_IjEEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm8DenseMapISt4pairIPNS_10BasicBlockEjEPNS_7PHINodeENS_12DenseMapInfoIS4_EENS7_IS6_EEE16FindAndConstructERKS4_", "llvm::DenseMap, llvm::PHINode*, llvm::DenseMapInfo>, llvm::DenseMapInfo>::FindAndConstruct(std::pair const&)"}, + + // {"_ZN4llvm8DenseMapISt4pairIPNS_10BasicBlockEjEPNS_7PHINodeENS_12DenseMapInfoIS4_EENS7_IS6_EEE16InsertIntoBucketERKS4_RKS6_PS1_IS4_S6_E", + // "llvm::DenseMap, llvm::PHINode*, llvm::DenseMapInfo>, llvm::DenseMapInfo>::InsertIntoBucket(std::pair const&, llvm::PHINode* const&, std::pair, llvm::PHINode*>*)"}, + // "llvm::DenseMap, llvm::PHINode*, llvm::DenseMapInfo>, llvm::DenseMapInfo>::InsertIntoBucket(std::pair const&, llvm::PHINode* const&, std::pair*, llvm::PHINode*>)" was returned + + {"_ZN4llvm8DenseMapISt4pairIPNS_10BasicBlockEjEPNS_7PHINodeENS_12DenseMapInfoIS4_EENS7_IS6_EEE4growEj", "llvm::DenseMap, llvm::PHINode*, llvm::DenseMapInfo>, llvm::DenseMapInfo>::grow(unsigned int)"}, + + // {"_ZSt16__introsort_loopIPSt4pairIjPN4llvm10BasicBlockEElEvT_S6_T0_", + // "void std::__introsort_loop*, long>(std::pair*, std::pair*, long)"}, + // "void std::__introsort_loop*, long>(unsigned int, unsigned int, llvm::BasicBlock*)" was returned + + + // {"_ZSt22__final_insertion_sortIPSt4pairIjPN4llvm10BasicBlockEEEvT_S6_", + // "void std::__final_insertion_sort*>(std::pair*, std::pair*)"}, + // "void std::__final_insertion_sort*>(unsigned int, unsigned int)" was returned + + + // {"_ZSt16__insertion_sortIPSt4pairIjPN4llvm10BasicBlockEEEvT_S6_", + // "void std::__insertion_sort*>(std::pair*, std::pair*)"}, + // "void std::__insertion_sort*>(unsigned int, unsigned int)" was returned + + + // {"_ZSt13__heap_selectIPSt4pairIjPN4llvm10BasicBlockEEEvT_S6_S6_", + // "void std::__heap_select*>(std::pair*, std::pair*, std::pair*)"}, + // "void std::__heap_select*>(unsigned int, unsigned int, unsigned int)" was returned + + + // {"_ZSt13__adjust_heapIPSt4pairIjPN4llvm10BasicBlockEElS4_EvT_T0_S7_T1_", + // "void std::__adjust_heap*, long, std::pair>(std::pair*, long, long, std::pair)"}, + // got error + + {"_ZN4llvm15SmallVectorImplISt4pairIPNS_15DomTreeNodeBaseINS_10BasicBlockEEEjEEaSERKS7_", "llvm::SmallVectorImpl*, unsigned int>>::operator=(llvm::SmallVectorImpl*, unsigned int>> const&)"}, + {"_ZN4llvm8DenseMapIPNS_10AllocaInstEjNS_12DenseMapInfoIS2_EENS3_IjEEE16InsertIntoBucketERKS2_RKjPSt4pairIS2_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::AllocaInst* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_10AllocaInstEjNS_12DenseMapInfoIS2_EENS3_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPNS_15DomTreeNodeBaseINS_10BasicBlockEEEjNS_12DenseMapInfoIS4_EENS5_IjEEE16InsertIntoBucketERKS4_RKjPSt4pairIS4_jE", "llvm::DenseMap*, unsigned int, llvm::DenseMapInfo*>, llvm::DenseMapInfo>::InsertIntoBucket(llvm::DomTreeNodeBase* const&, unsigned int const&, std::pair*, unsigned int>*)"}, + {"_ZN4llvm8DenseMapIPNS_15DomTreeNodeBaseINS_10BasicBlockEEEjNS_12DenseMapInfoIS4_EENS5_IjEEE4growEj", "llvm::DenseMap*, unsigned int, llvm::DenseMapInfo*>, llvm::DenseMapInfo>::grow(unsigned int)"}, + + // {"_ZSt16__introsort_loopIPSt4pairIjPN4llvm9StoreInstEElEvT_S6_T0_", + // "void std::__introsort_loop*, long>(std::pair*, std::pair*, long)"}, + // "void std::__introsort_loop*, long>(unsigned int, unsigned int, llvm::StoreInst*)" was returned + + + // {"_ZSt22__final_insertion_sortIPSt4pairIjPN4llvm9StoreInstEEEvT_S6_", + // "void std::__final_insertion_sort*>(std::pair*, std::pair*)"}, + // "void std::__final_insertion_sort*>(unsigned int, unsigned int)" was returned + + + // {"_ZSt16__insertion_sortIPSt4pairIjPN4llvm9StoreInstEEEvT_S6_", + // "void std::__insertion_sort*>(std::pair*, std::pair*)"}, + // "void std::__insertion_sort*>(unsigned int, unsigned int)" was returned + + + // {"_ZSt13__heap_selectIPSt4pairIjPN4llvm9StoreInstEEEvT_S6_S6_", + // "void std::__heap_select*>(std::pair*, std::pair*, std::pair*)"}, + // "void std::__heap_select*>(unsigned int, unsigned int, unsigned int)" was returned + + + // {"_ZSt13__adjust_heapIPSt4pairIjPN4llvm9StoreInstEElS4_EvT_T0_S7_T1_", + // "void std::__adjust_heap*, long, std::pair>(std::pair*, long, long, std::pair)"}, + // got error + + {"_ZN4llvm8DenseMapIPKNS_11InstructionEjNS_12DenseMapInfoIS3_EENS4_IjEEE16InsertIntoBucketERKS3_RKjPSt4pairIS3_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::Instruction const* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_11InstructionEjNS_12DenseMapInfoIS3_EENS4_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm10SSAUpdaterC1EPNS_15SmallVectorImplIPNS_7PHINodeEEE", "llvm::SSAUpdater::SSAUpdater(llvm::SmallVectorImpl*)"}, + {"_ZN4llvm10SSAUpdaterC2EPNS_15SmallVectorImplIPNS_7PHINodeEEE", "llvm::SSAUpdater::SSAUpdater(llvm::SmallVectorImpl*)"}, + {"_ZN4llvm10SSAUpdaterD1Ev", "llvm::SSAUpdater::~SSAUpdater()"}, + {"_ZN4llvm10SSAUpdaterD2Ev", "llvm::SSAUpdater::~SSAUpdater()"}, + {"_ZN4llvm10SSAUpdater10InitializeEPKNS_4TypeENS_9StringRefE", "llvm::SSAUpdater::Initialize(llvm::Type const*, llvm::StringRef)"}, + {"_ZNK4llvm10SSAUpdater16HasValueForBlockEPNS_10BasicBlockE", "llvm::SSAUpdater::HasValueForBlock(llvm::BasicBlock*) const"}, + {"_ZN4llvm10SSAUpdater17AddAvailableValueEPNS_10BasicBlockEPNS_5ValueE", "llvm::SSAUpdater::AddAvailableValue(llvm::BasicBlock*, llvm::Value*)"}, + {"_ZN4llvm10SSAUpdater20GetValueAtEndOfBlockEPNS_10BasicBlockE", "llvm::SSAUpdater::GetValueAtEndOfBlock(llvm::BasicBlock*)"}, + {"_ZN4llvm10SSAUpdater28GetValueAtEndOfBlockInternalEPNS_10BasicBlockE", "llvm::SSAUpdater::GetValueAtEndOfBlockInternal(llvm::BasicBlock*)"}, + {"_ZN4llvm10SSAUpdater23GetValueInMiddleOfBlockEPNS_10BasicBlockE", "llvm::SSAUpdater::GetValueInMiddleOfBlock(llvm::BasicBlock*)"}, + {"_ZN4llvm10SSAUpdater10RewriteUseERNS_3UseE", "llvm::SSAUpdater::RewriteUse(llvm::Use&)"}, + {"_ZN4llvm10SSAUpdater25RewriteUseAfterInsertionsERNS_3UseE", "llvm::SSAUpdater::RewriteUseAfterInsertions(llvm::Use&)"}, + {"_ZN4llvm20LoadAndStorePromoterC1ERKNS_15SmallVectorImplIPNS_11InstructionEEERNS_10SSAUpdaterENS_9StringRefE", "llvm::LoadAndStorePromoter::LoadAndStorePromoter(llvm::SmallVectorImpl const&, llvm::SSAUpdater&, llvm::StringRef)"}, + {"_ZN4llvm20LoadAndStorePromoterC2ERKNS_15SmallVectorImplIPNS_11InstructionEEERNS_10SSAUpdaterENS_9StringRefE", "llvm::LoadAndStorePromoter::LoadAndStorePromoter(llvm::SmallVectorImpl const&, llvm::SSAUpdater&, llvm::StringRef)"}, + {"_ZNK4llvm20LoadAndStorePromoter3runERKNS_15SmallVectorImplIPNS_11InstructionEEE", "llvm::LoadAndStorePromoter::run(llvm::SmallVectorImpl const&) const"}, + {"_ZN4llvm14SSAUpdaterImplINS_10SSAUpdaterEE8GetValueEPNS_10BasicBlockE", "llvm::SSAUpdaterImpl::GetValue(llvm::BasicBlock*)"}, + {"_ZN4llvm20LoadAndStorePromoterD1Ev", "llvm::LoadAndStorePromoter::~LoadAndStorePromoter()"}, + {"_ZN4llvm20LoadAndStorePromoterD0Ev", "llvm::LoadAndStorePromoter::~LoadAndStorePromoter()"}, + {"_ZNK4llvm20LoadAndStorePromoter12isInstInListEPNS_11InstructionERKNS_15SmallVectorImplIS2_EE", "llvm::LoadAndStorePromoter::isInstInList(llvm::Instruction*, llvm::SmallVectorImpl const&) const"}, + {"_ZNK4llvm20LoadAndStorePromoter34doExtraRewritesBeforeFinalDeletionEv", "llvm::LoadAndStorePromoter::doExtraRewritesBeforeFinalDeletion() const"}, + {"_ZNK4llvm20LoadAndStorePromoter20replaceLoadWithValueEPNS_8LoadInstEPNS_5ValueE", "llvm::LoadAndStorePromoter::replaceLoadWithValue(llvm::LoadInst*, llvm::Value*) const"}, + {"_ZNK4llvm20LoadAndStorePromoter18instructionDeletedEPNS_11InstructionE", "llvm::LoadAndStorePromoter::instructionDeleted(llvm::Instruction*) const"}, + {"_ZNSt6vectorIPN4llvm11InstructionESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::Instruction* const&)"}, + {"_ZN4llvm8DenseMapIPNS_10BasicBlockESt6vectorIPNS_11InstructionESaIS5_EENS_12DenseMapInfoIS2_EENS8_IS7_EEE16FindAndConstructERKS2_", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::FindAndConstruct(llvm::BasicBlock* const&)"}, + {"_ZN4llvm8DenseMapIPNS_10BasicBlockESt6vectorIPNS_11InstructionESaIS5_EENS_12DenseMapInfoIS2_EENS8_IS7_EEE16InsertIntoBucketERKS2_RKS7_PSt4pairIS2_S7_E", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::InsertIntoBucket(llvm::BasicBlock* const&, std::vector> const&, std::pair>>*)"}, + {"_ZN4llvm8DenseMapIPNS_10BasicBlockESt6vectorIPNS_11InstructionESaIS5_EENS_12DenseMapInfoIS2_EENS8_IS7_EEE4growEj", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::grow(unsigned int)"}, + + // {"_ZN4llvm14SSAUpdaterImplINS_10SSAUpdaterEE14BuildBlockListEPNS_10BasicBlockEPNS_15SmallVectorImplIPNS2_6BBInfoEEE", + // "llvm::SSAUpdaterImpl::BuildBlockList(llvm::BasicBlock*, llvm::SmallVectorImpl::BBInfo*>*)"}, + // "llvm::SSAUpdaterImpl::BuildBlockList(llvm::BasicBlock*, llvm::SmallVectorImpl*)" was returned + + + // {"_ZN4llvm14SSAUpdaterImplINS_10SSAUpdaterEE14FindDominatorsEPNS_15SmallVectorImplIPNS2_6BBInfoEEES5_", + // "llvm::SSAUpdaterImpl::FindDominators(llvm::SmallVectorImpl::BBInfo*>*, llvm::SSAUpdaterImpl::BBInfo*)"}, + // "llvm::SSAUpdaterImpl::FindDominators(llvm::SmallVectorImpl*, llvm::SmallVectorImpl)" was returned + + + // {"_ZN4llvm14SSAUpdaterImplINS_10SSAUpdaterEE17FindAvailableValsEPNS_15SmallVectorImplIPNS2_6BBInfoEEE", + // "llvm::SSAUpdaterImpl::FindAvailableVals(llvm::SmallVectorImpl::BBInfo*>*)"}, + // "llvm::SSAUpdaterImpl::FindAvailableVals(llvm::SmallVectorImpl*)" was returned + + + // {"_ZN4llvm8DenseMapIPNS_10BasicBlockEPNS_14SSAUpdaterImplINS_10SSAUpdaterEE6BBInfoENS_12DenseMapInfoIS2_EENS8_IS7_EEE16InsertIntoBucketERKS2_RKS7_PSt4pairIS2_S7_E", + // "llvm::DenseMap::BBInfo*, llvm::DenseMapInfo, llvm::DenseMapInfo::BBInfo*>>::InsertIntoBucket(llvm::BasicBlock* const&, llvm::SSAUpdaterImpl::BBInfo* const&, std::pair::BBInfo*>*)"}, + // "llvm::DenseMap::BBInfo*, llvm::DenseMapInfo, llvm::DenseMapInfo>::InsertIntoBucket(llvm::BasicBlock* const&, llvm::DenseMapInfo const&, std::pair*)" was returned + + + // {"_ZN4llvm8DenseMapIPNS_10BasicBlockEPNS_14SSAUpdaterImplINS_10SSAUpdaterEE6BBInfoENS_12DenseMapInfoIS2_EENS8_IS7_EEE4growEj", + // "llvm::DenseMap::BBInfo*, llvm::DenseMapInfo, llvm::DenseMapInfo::BBInfo*>>::grow(unsigned int)"}, + // "llvm::DenseMap::BBInfo*, llvm::DenseMapInfo, llvm::DenseMapInfo>::grow(unsigned int)" was returned + + {"_ZN4llvm14SSAUpdaterImplINS_10SSAUpdaterEE17CheckIfPHIMatchesEPNS_7PHINodeE", "llvm::SSAUpdaterImpl::CheckIfPHIMatches(llvm::PHINode*)"}, + {"_ZN4llvm14SSAUpdaterImplINS_10SSAUpdaterEE17RecordMatchingPHIEPNS_7PHINodeE", "llvm::SSAUpdaterImpl::RecordMatchingPHI(llvm::PHINode*)"}, + + // {"_ZN4llvm16SSAUpdaterTraitsINS_10SSAUpdaterEE21FindPredecessorBlocksEPNS_10BasicBlockEPNS_15SmallVectorImplIS4_EE", + // "llvm::SSAUpdaterTraits::FindPredecessorBlocks(llvm::BasicBlock*, llvm::SmallVectorImpl*)"}, + // "llvm::SSAUpdaterTraits::FindPredecessorBlocks(llvm::BasicBlock*, llvm::SmallVectorImpl*)" was returned + + {"_ZN4llvm22FoldBranchToCommonDestEPNS_10BranchInstE", "llvm::FoldBranchToCommonDest(llvm::BranchInst*)"}, + {"_Z22SafeToMergeTerminatorsPN4llvm14TerminatorInstES1_", "SafeToMergeTerminators(llvm::TerminatorInst*, llvm::TerminatorInst*)"}, + {"_ZN4llvm11SimplifyCFGEPNS_10BasicBlockEPKNS_10DataLayoutE", "llvm::SimplifyCFG(llvm::BasicBlock*, llvm::DataLayout const*)"}, + {"_ZN12_GLOBAL__N_114SimplifyCFGOpt3runEPN4llvm10BasicBlockE", "(anonymous namespace)::SimplifyCFGOpt::run(llvm::BasicBlock*)"}, + {"_Z29EraseTerminatorInstAndDCECondPN4llvm14TerminatorInstE", "EraseTerminatorInstAndDCECond(llvm::TerminatorInst*)"}, + {"_ZN12_GLOBAL__N_114SimplifyCFGOpt25isValueEqualityComparisonEPN4llvm14TerminatorInstE", "(anonymous namespace)::SimplifyCFGOpt::isValueEqualityComparison(llvm::TerminatorInst*)"}, + {"_ZN12_GLOBAL__N_114SimplifyCFGOpt45SimplifyEqualityComparisonWithOnlyPredecessorEPN4llvm14TerminatorInstEPNS1_10BasicBlockE", "(anonymous namespace)::SimplifyCFGOpt::SimplifyEqualityComparisonWithOnlyPredecessor(llvm::TerminatorInst*, llvm::BasicBlock*)"}, + {"_ZN12_GLOBAL__N_114SimplifyCFGOpt35FoldValueComparisonIntoPredecessorsEPN4llvm14TerminatorInstE", "(anonymous namespace)::SimplifyCFGOpt::FoldValueComparisonIntoPredecessors(llvm::TerminatorInst*)"}, + {"_Z24ConstantIntSortPredicatePKvS0_", "ConstantIntSortPredicate(void const*, void const*)"}, + {"_ZN12_GLOBAL__N_114SimplifyCFGOpt31GetValueEqualityComparisonCasesEPN4llvm14TerminatorInstERSt6vectorISt4pairIPNS1_11ConstantIntEPNS1_10BasicBlockEESaISA_EE", "(anonymous namespace)::SimplifyCFGOpt::GetValueEqualityComparisonCases(llvm::TerminatorInst*, std::vector, std::allocator>>&)"}, + {"_ZNSt3setIPN4llvm11ConstantIntEN12_GLOBAL__N_119ConstantIntOrderingESaIS2_EE6insertERKS2_", "std::set>::insert(llvm::ConstantInt* const&)"}, + {"_ZNSt8_Rb_treeIPN4llvm11ConstantIntES2_St9_IdentityIS2_EN12_GLOBAL__N_119ConstantIntOrderingESaIS2_EE8_M_eraseEPSt13_Rb_tree_nodeIS2_E", "std::_Rb_tree, (anonymous namespace)::ConstantIntOrdering, std::allocator>::_M_erase(std::_Rb_tree_node*)"}, + {"_Z14GetConstantIntPN4llvm5ValueEPKNS_10DataLayoutE", "GetConstantInt(llvm::Value*, llvm::DataLayout const*)"}, + {"_ZN4llvm25array_pod_sort_comparatorISt4pairIPNS_11ConstantIntEPNS_10BasicBlockEEEEiPKvS8_", "int llvm::array_pod_sort_comparator>(void const*, void const*)"}, + {"_Z22SpeculativelyExecuteBBPN4llvm10BranchInstEPNS_10BasicBlockE", "SpeculativelyExecuteBB(llvm::BranchInst*, llvm::BasicBlock*)"}, + {"_Z19FoldCondBranchOnPHIPN4llvm10BranchInstEPKNS_10DataLayoutE", "FoldCondBranchOnPHI(llvm::BranchInst*, llvm::DataLayout const*)"}, + {"_Z34BlockIsSimpleEnoughToThreadThroughPN4llvm10BasicBlockE", "BlockIsSimpleEnoughToThreadThrough(llvm::BasicBlock*)"}, + {"_Z19isSafeToHoistInvokePN4llvm10BasicBlockES1_PNS_11InstructionES3_", "isSafeToHoistInvoke(llvm::BasicBlock*, llvm::BasicBlock*, llvm::Instruction*, llvm::Instruction*)"}, + {"_Z22GatherConstantComparesPN4llvm5ValueERSt6vectorIPNS_11ConstantIntESaIS4_EERS1_PKNS_10DataLayoutEbRj", "GatherConstantCompares(llvm::Value*, std::vector>&, llvm::Value*&, llvm::DataLayout const*, bool, unsigned int&)"}, + + // {"_Z19DominatesMergePointPN4llvm5ValueEPNS_10BasicBlockEPNS_11SmallPtrSetIPNS_11InstructionELj4EEE", + // "DominatesMergePoint(llvm::Value*, llvm::BasicBlock*, llvm::SmallPtrSet*)"}, + // "DominatesMergePoint(llvm::Value*, llvm::BasicBlock*, llvm::SmallPtrSet*)" was returned + + {"_ZNSt8_Rb_treeIPN4llvm10BasicBlockESt4pairIKS2_jESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZNSt8_Rb_treeIPN4llvm10BasicBlockESt4pairIKS2_jESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS5_ERKS5_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIPN4llvm10BasicBlockESt4pairIKS2_jESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE16_M_insert_uniqueERKS5_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZNSt6vectorISt4pairIPN4llvm11ConstantIntEPNS1_10BasicBlockEESaIS6_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS6_S8_EERKS6_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + {"_ZNSt6vectorISt4pairIPN4llvm11ConstantIntEPNS1_10BasicBlockEESaIS6_EE7reserveEm", "std::vector, std::allocator>>::reserve(unsigned long)"}, + + // {"_ZNSt8_Rb_treeISt4pairIPN4llvm5ValueES3_ES0_IKS4_PNS1_10SelectInstEESt10_Select1stIS8_ESt4lessIS4_ESaIS8_EE8_M_eraseEPSt13_Rb_tree_nodeIS8_E", + // "std::_Rb_tree, std::pair const, llvm::SelectInst*>, std::_Select1st const, llvm::SelectInst*>>, std::less>, std::allocator const, llvm::SelectInst*>>>::_M_erase(std::_Rb_tree_node const, llvm::SelectInst*>>*)"}, + // "std::_Rb_tree, std::pair const, llvm::SelectInst*>, std::_Select1st< const, llvm::SelectInst*>>, std::less>, std::allocator< const, llvm::SelectInst*>>>::_M_erase(std::_Rb_tree_node< const, llvm::SelectInst*>>*)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairIPN4llvm5ValueES3_ES0_IKS4_PNS1_10SelectInstEESt10_Select1stIS8_ESt4lessIS4_ESaIS8_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS8_ERKS8_", + // "std::_Rb_tree, std::pair const, llvm::SelectInst*>, std::_Select1st const, llvm::SelectInst*>>, std::less>, std::allocator const, llvm::SelectInst*>>>::_M_insert_unique(std::_Rb_tree_iterator const, llvm::SelectInst*>>, std::pair const, llvm::SelectInst*> const&)"}, + // "std::_Rb_tree, std::pair const, llvm::SelectInst*>, std::_Select1st< const, llvm::SelectInst*>>, std::less>, std::allocator< const, llvm::SelectInst*>>>::_M_insert_unique(std::_Rb_tree_iterator< const, llvm::SelectInst*>>, const, llvm::SelectInst*> const&)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairIPN4llvm5ValueES3_ES0_IKS4_PNS1_10SelectInstEESt10_Select1stIS8_ESt4lessIS4_ESaIS8_EE16_M_insert_uniqueERKS8_", + // "std::_Rb_tree, std::pair const, llvm::SelectInst*>, std::_Select1st const, llvm::SelectInst*>>, std::less>, std::allocator const, llvm::SelectInst*>>>::_M_insert_unique(std::pair const, llvm::SelectInst*> const&)"}, + // "std::_Rb_tree, std::pair const, llvm::SelectInst*>, std::_Select1st< const, llvm::SelectInst*>>, std::less>, std::allocator< const, llvm::SelectInst*>>>::_M_insert_unique( const, llvm::SelectInst*> const&)" was returned + + {"_ZNSt6vectorIPN4llvm11ConstantIntESaIS2_EE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPS2_S4_EEmRKS2_", "std::vector>::_M_fill_insert(__gnu_cxx::__normal_iterator>>, unsigned long, llvm::ConstantInt* const&)"}, + {"_ZN4llvm36initializeUnifyFunctionExitNodesPassERNS_12PassRegistryE", "llvm::initializeUnifyFunctionExitNodesPass(llvm::PassRegistry&)"}, + {"_ZN4llvm32createUnifyFunctionExitNodesPassEv", "llvm::createUnifyFunctionExitNodesPass()"}, + {"_ZNK4llvm22UnifyFunctionExitNodes16getAnalysisUsageERNS_13AnalysisUsageE", "llvm::UnifyFunctionExitNodes::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN4llvm22UnifyFunctionExitNodes13runOnFunctionERNS_8FunctionE", "llvm::UnifyFunctionExitNodes::runOnFunction(llvm::Function&)"}, + {"_ZN4llvm22UnifyFunctionExitNodesD1Ev", "llvm::UnifyFunctionExitNodes::~UnifyFunctionExitNodes()"}, + {"_ZN4llvm22UnifyFunctionExitNodesD0Ev", "llvm::UnifyFunctionExitNodes::~UnifyFunctionExitNodes()"}, + {"_ZN4llvm15callDefaultCtorINS_22UnifyFunctionExitNodesEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor()"}, + {"_ZN4llvm8MapValueEPKNS_5ValueERNS_8ValueMapIS2_NS_10TrackingVHIS0_EENS_14ValueMapConfigIS2_EENS_12DenseMapInfoIS5_EEEENS_10RemapFlagsE", "llvm::MapValue(llvm::Value const*, llvm::ValueMap, llvm::ValueMapConfig, llvm::DenseMapInfo>>&, llvm::RemapFlags)"}, + + // {"_ZN4llvm16RemapInstructionEPNS_11InstructionERNS_8ValueMapIPKNS_5ValueENS_10TrackingVHIS3_EENS_14ValueMapConfigIS5_EENS_12DenseMapInfoIS7_EEEENS_10RemapFlagsE", + // "llvm::RemapInstruction(llvm::Instruction*, llvm::ValueMap, llvm::ValueMapConfig, llvm::DenseMapInfo>>&, llvm::RemapFlags)"}, + // "llvm::RemapInstruction(llvm::Instruction*, llvm::ValueMap, llvm::ValueMapConfig, llvm::DenseMapInfo>&, llvm::RemapFlags)" was returned + + {"_ZN4llvm32initializeCallGraphAnalysisGroupERNS_12PassRegistryE", "llvm::initializeCallGraphAnalysisGroup(llvm::PassRegistry&)"}, + {"_ZN4llvm28initializeBasicCallGraphPassERNS_12PassRegistryE", "llvm::initializeBasicCallGraphPass(llvm::PassRegistry&)"}, + {"_ZN4llvm9CallGraph10initializeERNS_6ModuleE", "llvm::CallGraph::initialize(llvm::Module&)"}, + {"_ZN4llvm9CallGraph7destroyEv", "llvm::CallGraph::destroy()"}, + {"_ZNK4llvm9CallGraph5printERNS_11raw_ostreamEPNS_6ModuleE", "llvm::CallGraph::print(llvm::raw_ostream&, llvm::Module*) const"}, + {"_ZNK4llvm13CallGraphNode5printERNS_11raw_ostreamE", "llvm::CallGraphNode::print(llvm::raw_ostream&) const"}, + {"_ZNK4llvm9CallGraph4dumpEv", "llvm::CallGraph::dump() const"}, + {"_ZN4llvm9CallGraph24removeFunctionFromModuleEPNS_13CallGraphNodeE", "llvm::CallGraph::removeFunctionFromModule(llvm::CallGraphNode*)"}, + {"_ZN4llvm9CallGraph14spliceFunctionEPKNS_8FunctionES3_", "llvm::CallGraph::spliceFunction(llvm::Function const*, llvm::Function const*)"}, + {"_ZN4llvm9CallGraph19getOrInsertFunctionEPKNS_8FunctionE", "llvm::CallGraph::getOrInsertFunction(llvm::Function const*)"}, + {"_ZNK4llvm13CallGraphNode4dumpEv", "llvm::CallGraphNode::dump() const"}, + {"_ZN4llvm13CallGraphNode17removeCallEdgeForENS_8CallSiteE", "llvm::CallGraphNode::removeCallEdgeFor(llvm::CallSite)"}, + {"_ZN4llvm13CallGraphNode19removeAnyCallEdgeToEPS0_", "llvm::CallGraphNode::removeAnyCallEdgeTo(llvm::CallGraphNode*)"}, + {"_ZN4llvm13CallGraphNode23removeOneAbstractEdgeToEPS0_", "llvm::CallGraphNode::removeOneAbstractEdgeTo(llvm::CallGraphNode*)"}, + {"_ZN4llvm13CallGraphNode15replaceCallEdgeENS_8CallSiteES1_PS0_", "llvm::CallGraphNode::replaceCallEdge(llvm::CallSite, llvm::CallSite, llvm::CallGraphNode*)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_114BasicCallGraphEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::BasicCallGraph>()"}, + {"_ZN12_GLOBAL__N_114BasicCallGraphD1Ev", "(anonymous namespace)::BasicCallGraph::~BasicCallGraph()"}, + {"_ZN12_GLOBAL__N_114BasicCallGraphD0Ev", "(anonymous namespace)::BasicCallGraph::~BasicCallGraph()"}, + {"_ZNK12_GLOBAL__N_114BasicCallGraph5printERN4llvm11raw_ostreamEPKNS1_6ModuleE", "(anonymous namespace)::BasicCallGraph::print(llvm::raw_ostream&, llvm::Module const*) const"}, + {"_ZNK12_GLOBAL__N_114BasicCallGraph16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::BasicCallGraph::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_114BasicCallGraph13releaseMemoryEv", "(anonymous namespace)::BasicCallGraph::releaseMemory()"}, + {"_ZN12_GLOBAL__N_114BasicCallGraph26getAdjustedAnalysisPointerEPKv", "(anonymous namespace)::BasicCallGraph::getAdjustedAnalysisPointer(void const*)"}, + {"_ZN12_GLOBAL__N_114BasicCallGraph11runOnModuleERN4llvm6ModuleE", "(anonymous namespace)::BasicCallGraph::runOnModule(llvm::Module&)"}, + {"_ZNK12_GLOBAL__N_114BasicCallGraph22getExternalCallingNodeEv", "(anonymous namespace)::BasicCallGraph::getExternalCallingNode() const"}, + {"_ZNK12_GLOBAL__N_114BasicCallGraph20getCallsExternalNodeEv", "(anonymous namespace)::BasicCallGraph::getCallsExternalNode() const"}, + {"_ZN12_GLOBAL__N_114BasicCallGraph7getRootEv", "(anonymous namespace)::BasicCallGraph::getRoot()"}, + {"_ZNK12_GLOBAL__N_114BasicCallGraph7getRootEv", "(anonymous namespace)::BasicCallGraph::getRoot() const"}, + {"_ZN12_GLOBAL__N_114BasicCallGraph7destroyEv", "(anonymous namespace)::BasicCallGraph::destroy()"}, + + // {"_ZThn32_NK12_GLOBAL__N_114BasicCallGraph22getExternalCallingNodeEv", + // "non-virtual thunk to (anonymous namespace)::BasicCallGraph::getExternalCallingNode() const"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::BasicCallGraph::getExternalCallingNode() const" was returned + + + // {"_ZThn32_NK12_GLOBAL__N_114BasicCallGraph20getCallsExternalNodeEv", + // "non-virtual thunk to (anonymous namespace)::BasicCallGraph::getCallsExternalNode() const"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::BasicCallGraph::getCallsExternalNode() const" was returned + + + // {"_ZThn32_N12_GLOBAL__N_114BasicCallGraph7getRootEv", + // "non-virtual thunk to (anonymous namespace)::BasicCallGraph::getRoot()"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::BasicCallGraph::getRoot()" was returned + + + // {"_ZThn32_NK12_GLOBAL__N_114BasicCallGraph7getRootEv", + // "non-virtual thunk to (anonymous namespace)::BasicCallGraph::getRoot() const"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::BasicCallGraph::getRoot() const" was returned + + + // {"_ZThn32_N12_GLOBAL__N_114BasicCallGraphD1Ev", + // "non-virtual thunk to (anonymous namespace)::BasicCallGraph::~BasicCallGraph()"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::BasicCallGraph::~BasicCallGraph()" was returned + + + // {"_ZThn32_N12_GLOBAL__N_114BasicCallGraphD0Ev", + // "non-virtual thunk to (anonymous namespace)::BasicCallGraph::~BasicCallGraph()"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::BasicCallGraph::~BasicCallGraph()" was returned + + + // {"_ZThn32_N12_GLOBAL__N_114BasicCallGraph7destroyEv", + // "non-virtual thunk to (anonymous namespace)::BasicCallGraph::destroy()"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::BasicCallGraph::destroy()" was returned + + {"_ZN4llvm13CallGraphNodeD1Ev", "llvm::CallGraphNode::~CallGraphNode()"}, + {"_ZNK4llvm9CallGraph22getExternalCallingNodeEv", "llvm::CallGraph::getExternalCallingNode() const"}, + {"_ZNK4llvm9CallGraph20getCallsExternalNodeEv", "llvm::CallGraph::getCallsExternalNode() const"}, + {"_ZN4llvm9CallGraph7getRootEv", "llvm::CallGraph::getRoot()"}, + {"_ZNK4llvm9CallGraph7getRootEv", "llvm::CallGraph::getRoot() const"}, + {"_ZN4llvm9CallGraphD1Ev", "llvm::CallGraph::~CallGraph()"}, + {"_ZN4llvm9CallGraphD0Ev", "llvm::CallGraph::~CallGraph()"}, + {"_ZNSt8_Rb_treeIPKN4llvm8FunctionESt4pairIKS3_PNS0_13CallGraphNodeEESt10_Select1stIS8_ESt4lessIS3_ESaIS8_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS8_ERKS8_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm8FunctionESt4pairIKS3_PNS0_13CallGraphNodeEESt10_Select1stIS8_ESt4lessIS3_ESaIS8_EE16_M_insert_uniqueERKS8_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm8FunctionESt4pairIKS3_PNS0_13CallGraphNodeEESt10_Select1stIS8_ESt4lessIS3_ESaIS8_EE5eraseESt17_Rb_tree_iteratorIS8_ESG_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::erase(std::_Rb_tree_iterator>, std::_Rb_tree_iterator>)"}, + {"_ZNSt8_Rb_treeIPKN4llvm8FunctionESt4pairIKS3_PNS0_13CallGraphNodeEESt10_Select1stIS8_ESt4lessIS3_ESaIS8_EE8_M_eraseEPSt13_Rb_tree_nodeIS8_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZN4llvm13CallGraphNode17addCalledFunctionENS_8CallSiteEPS0_", "llvm::CallGraphNode::addCalledFunction(llvm::CallSite, llvm::CallGraphNode*)"}, + {"_ZNSt6vectorISt4pairIN4llvm6WeakVHEPNS1_13CallGraphNodeEESaIS5_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS5_S7_EERKS5_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + + // {"_ZNSt15__copy_backwardILb0ESt26random_access_iterator_tagE8__copy_bIPSt4pairIN4llvm6WeakVHEPNS4_13CallGraphNodeEES9_EET0_T_SB_SA_", + // "std::pair* std::__copy_backward::__copy_b*, std::pair*>(std::pair*, std::pair*, std::pair*)"}, + // got error + + {"_ZN4llvm12CallGraphSCC11ReplaceNodeEPNS_13CallGraphNodeES2_", "llvm::CallGraphSCC::ReplaceNode(llvm::CallGraphNode*, llvm::CallGraphNode*)"}, + {"_ZN4llvm16CallGraphSCCPass17assignPassManagerERNS_7PMStackENS_15PassManagerTypeE", "llvm::CallGraphSCCPass::assignPassManager(llvm::PMStack&, llvm::PassManagerType)"}, + {"_ZNK4llvm16CallGraphSCCPass16getAnalysisUsageERNS_13AnalysisUsageE", "llvm::CallGraphSCCPass::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZNK4llvm16CallGraphSCCPass17createPrinterPassERNS_11raw_ostreamERKSs", "llvm::CallGraphSCCPass::createPrinterPass(llvm::raw_ostream&, std::string const&) const"}, + {"_ZN12_GLOBAL__N_118PrintCallGraphPassD1Ev", "(anonymous namespace)::PrintCallGraphPass::~PrintCallGraphPass()"}, + {"_ZN12_GLOBAL__N_118PrintCallGraphPassD0Ev", "(anonymous namespace)::PrintCallGraphPass::~PrintCallGraphPass()"}, + {"_ZNK12_GLOBAL__N_118PrintCallGraphPass16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::PrintCallGraphPass::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_118PrintCallGraphPass8runOnSCCERN4llvm12CallGraphSCCE", "(anonymous namespace)::PrintCallGraphPass::runOnSCC(llvm::CallGraphSCC&)"}, + {"_ZN12_GLOBAL__N_113CGPassManagerD1Ev", "(anonymous namespace)::CGPassManager::~CGPassManager()"}, + {"_ZN12_GLOBAL__N_113CGPassManagerD0Ev", "(anonymous namespace)::CGPassManager::~CGPassManager()"}, + {"_ZNK12_GLOBAL__N_113CGPassManager11getPassNameEv", "(anonymous namespace)::CGPassManager::getPassName() const"}, + {"_ZNK12_GLOBAL__N_113CGPassManager16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::CGPassManager::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_113CGPassManager18getAsPMDataManagerEv", "(anonymous namespace)::CGPassManager::getAsPMDataManager()"}, + {"_ZN12_GLOBAL__N_113CGPassManager17dumpPassStructureEj", "(anonymous namespace)::CGPassManager::dumpPassStructure(unsigned int)"}, + {"_ZN12_GLOBAL__N_113CGPassManager11runOnModuleERN4llvm6ModuleE", "(anonymous namespace)::CGPassManager::runOnModule(llvm::Module&)"}, + {"_ZN12_GLOBAL__N_113CGPassManager9getAsPassEv", "(anonymous namespace)::CGPassManager::getAsPass()"}, + {"_ZNK12_GLOBAL__N_113CGPassManager18getPassManagerTypeEv", "(anonymous namespace)::CGPassManager::getPassManagerType() const"}, + + // {"_ZThn32_N12_GLOBAL__N_113CGPassManagerD1Ev", + // "non-virtual thunk to (anonymous namespace)::CGPassManager::~CGPassManager()"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::CGPassManager::~CGPassManager()" was returned + + + // {"_ZThn32_N12_GLOBAL__N_113CGPassManagerD0Ev", + // "non-virtual thunk to (anonymous namespace)::CGPassManager::~CGPassManager()"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::CGPassManager::~CGPassManager()" was returned + + + // {"_ZThn32_N12_GLOBAL__N_113CGPassManager9getAsPassEv", + // "non-virtual thunk to (anonymous namespace)::CGPassManager::getAsPass()"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::CGPassManager::getAsPass()" was returned + + + // {"_ZThn32_NK12_GLOBAL__N_113CGPassManager18getPassManagerTypeEv", + // "non-virtual thunk to (anonymous namespace)::CGPassManager::getPassManagerType() const"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::CGPassManager::getPassManagerType() const" was returned + + {"_ZN12_GLOBAL__N_113CGPassManager16RefreshCallGraphERN4llvm12CallGraphSCCERNS1_9CallGraphEb", "(anonymous namespace)::CGPassManager::RefreshCallGraph(llvm::CallGraphSCC&, llvm::CallGraph&, bool)"}, + {"_ZN4llvm12scc_iteratorIPNS_9CallGraphENS_11GraphTraitsIS2_EEE11ReplaceNodeEPNS_13CallGraphNodeES7_", "llvm::scc_iterator>::ReplaceNode(llvm::CallGraphNode*, llvm::CallGraphNode*)"}, + {"_ZN4llvm8DenseMapIPNS_13CallGraphNodeEjNS_12DenseMapInfoIS2_EENS3_IjEEE16InsertIntoBucketERKS2_RKjPSt4pairIS2_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::CallGraphNode* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_13CallGraphNodeEjNS_12DenseMapInfoIS2_EENS3_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + + // {"_ZN4llvm9scc_beginIPNS_9CallGraphEEENS_12scc_iteratorIT_NS_11GraphTraitsIS4_EEEERKS4_", + // "llvm::scc_iterator> llvm::scc_begin(llvm::CallGraph* const&)"}, + // "llvm::scc_iterator> llvm::scc_begin(llvm::GraphTraits const&)" was returned + + {"_ZN4llvm8DenseMapIPNS_5ValueEPNS_13CallGraphNodeENS_12DenseMapInfoIS2_EENS5_IS4_EEE6insertERKSt4pairIS2_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPNS_5ValueEPNS_13CallGraphNodeENS_12DenseMapInfoIS2_EENS5_IS4_EEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm8DenseMapIPNS_5ValueEPNS_13CallGraphNodeENS_12DenseMapInfoIS2_EENS5_IS4_EEE16InsertIntoBucketERKS2_RKS4_PSt4pairIS2_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::Value* const&, llvm::CallGraphNode* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_5ValueEPNS_13CallGraphNodeENS_12DenseMapInfoIS2_EENS5_IS4_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm12scc_iteratorIPNS_9CallGraphENS_11GraphTraitsIS2_EEE10GetNextSCCEv", "llvm::scc_iterator>::GetNextSCC()"}, + {"_ZN4llvm12scc_iteratorIPNS_9CallGraphENS_11GraphTraitsIS2_EEE16DFSVisitChildrenEv", "llvm::scc_iterator>::DFSVisitChildren()"}, + {"_ZNSt6vectorIPN4llvm13CallGraphNodeESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::CallGraphNode* const&)"}, + {"_ZN4llvm12scc_iteratorIPNS_9CallGraphENS_11GraphTraitsIS2_EEE11DFSVisitOneEPNS_13CallGraphNodeE", "llvm::scc_iterator>::DFSVisitOne(llvm::CallGraphNode*)"}, + {"_ZN4llvm11GraphTraitsIPNS_13CallGraphNodeEE8CGNDerefESt4pairINS_6WeakVHES2_E", "llvm::GraphTraits::CGNDeref(std::pair)"}, + + // {"_ZNSt6vectorISt4pairIPN4llvm13CallGraphNodeENS1_15mapped_iteratorIN9__gnu_cxx17__normal_iteratorIPS0_INS1_6WeakVHES3_ES_IS8_SaIS8_EEEESt25pointer_to_unary_functionIS8_S3_EEEESaISG_EE13_M_insert_auxENS6_IPSG_SI_EERKSG_", + // "std::vector*, std::vector, std::allocator>>>, std::pointer_to_unary_function, llvm::CallGraphNode*>>>, std::allocator*, std::vector, std::allocator>>>, std::pointer_to_unary_function, llvm::CallGraphNode*>>>>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pointer_to_unary_function, llvm::CallGraphNode*>>>*, std::vector*, std::vector, std::allocator>>>, std::pointer_to_unary_function, llvm::CallGraphNode*>>>, std::allocator*, std::vector, std::allocator>>>, std::pointer_to_unary_function, llvm::CallGraphNode*>>>>>>, std::pair*, std::vector, std::allocator>>>, std::pointer_to_unary_function, llvm::CallGraphNode*>>> const&)"}, + // "std::vector, std::vector>>, std::pointer_to_unary_function>>, std::allocator, std::vector>>, std::pointer_to_unary_function>>>>::_M_insert_aux(__gnu_cxx::__normal_iterator, std::vector>>, std::pointer_to_unary_function>>*, std::vector, std::vector>>, std::pointer_to_unary_function>>, std::allocator, std::vector>>, std::pointer_to_unary_function>>>>>, std::pair, std::vector>>, std::pointer_to_unary_function>> const&)" was returned + + + // {"_ZNSt6vectorIPN4llvm13CallGraphNodeESaIS2_EE13_M_assign_auxIPKS2_EEvT_S8_St20forward_iterator_tag", + // "void std::vector>::_M_assign_aux(llvm::CallGraphNode* const*, llvm::CallGraphNode* const*, std::forward_iterator_tag)"}, + // got error + + {"_ZN4llvm27initializeFindUsedTypesPassERNS_12PassRegistryE", "llvm::initializeFindUsedTypesPass(llvm::PassRegistry&)"}, + {"_ZN4llvm13FindUsedTypes15IncorporateTypeEPKNS_4TypeE", "llvm::FindUsedTypes::IncorporateType(llvm::Type const*)"}, + {"_ZN4llvm13FindUsedTypes16IncorporateValueEPKNS_5ValueE", "llvm::FindUsedTypes::IncorporateValue(llvm::Value const*)"}, + {"_ZN4llvm13FindUsedTypes11runOnModuleERNS_6ModuleE", "llvm::FindUsedTypes::runOnModule(llvm::Module&)"}, + {"_ZNK4llvm13FindUsedTypes5printERNS_11raw_ostreamEPKNS_6ModuleE", "llvm::FindUsedTypes::print(llvm::raw_ostream&, llvm::Module const*) const"}, + {"_ZN4llvm13FindUsedTypesD1Ev", "llvm::FindUsedTypes::~FindUsedTypes()"}, + {"_ZN4llvm13FindUsedTypesD0Ev", "llvm::FindUsedTypes::~FindUsedTypes()"}, + {"_ZNK4llvm13FindUsedTypes16getAnalysisUsageERNS_13AnalysisUsageE", "llvm::FindUsedTypes::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZNSt8_Rb_treeIPKN4llvm4TypeES3_St9_IdentityIS3_ESt4lessIS3_ESaIS3_EE16_M_insert_uniqueERKS3_", "std::_Rb_tree, std::less, std::allocator>::_M_insert_unique(llvm::Type const* const&)"}, + {"_ZN4llvm15callDefaultCtorINS_13FindUsedTypesEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor()"}, + {"_ZN4llvm36initializeAliasAnalysisAnalysisGroupERNS_12PassRegistryE", "llvm::initializeAliasAnalysisAnalysisGroup(llvm::PassRegistry&)"}, + {"_ZN4llvm13AliasAnalysis5aliasERKNS0_8LocationES3_", "llvm::AliasAnalysis::alias(llvm::AliasAnalysis::Location const&, llvm::AliasAnalysis::Location const&)"}, + {"_ZN4llvm13AliasAnalysis22pointsToConstantMemoryERKNS0_8LocationEb", "llvm::AliasAnalysis::pointsToConstantMemory(llvm::AliasAnalysis::Location const&, bool)"}, + {"_ZN4llvm13AliasAnalysis11deleteValueEPNS_5ValueE", "llvm::AliasAnalysis::deleteValue(llvm::Value*)"}, + {"_ZN4llvm13AliasAnalysis9copyValueEPNS_5ValueES2_", "llvm::AliasAnalysis::copyValue(llvm::Value*, llvm::Value*)"}, + {"_ZN4llvm13AliasAnalysis14addEscapingUseERNS_3UseE", "llvm::AliasAnalysis::addEscapingUse(llvm::Use&)"}, + {"_ZN4llvm13AliasAnalysis13getModRefInfoENS_17ImmutableCallSiteERKNS0_8LocationE", "llvm::AliasAnalysis::getModRefInfo(llvm::ImmutableCallSite, llvm::AliasAnalysis::Location const&)"}, + {"_ZN4llvm13AliasAnalysis13getModRefInfoENS_17ImmutableCallSiteES1_", "llvm::AliasAnalysis::getModRefInfo(llvm::ImmutableCallSite, llvm::ImmutableCallSite)"}, + {"_ZN4llvm13AliasAnalysis17getModRefBehaviorENS_17ImmutableCallSiteE", "llvm::AliasAnalysis::getModRefBehavior(llvm::ImmutableCallSite)"}, + {"_ZN4llvm13AliasAnalysis17getModRefBehaviorEPKNS_8FunctionE", "llvm::AliasAnalysis::getModRefBehavior(llvm::Function const*)"}, + {"_ZN4llvm13AliasAnalysis11getLocationEPKNS_8LoadInstE", "llvm::AliasAnalysis::getLocation(llvm::LoadInst const*)"}, + {"_ZN4llvm13AliasAnalysis16getTypeStoreSizeEPKNS_4TypeE", "llvm::AliasAnalysis::getTypeStoreSize(llvm::Type const*)"}, + {"_ZN4llvm13AliasAnalysis11getLocationEPKNS_9StoreInstE", "llvm::AliasAnalysis::getLocation(llvm::StoreInst const*)"}, + {"_ZN4llvm13AliasAnalysis11getLocationEPKNS_9VAArgInstE", "llvm::AliasAnalysis::getLocation(llvm::VAArgInst const*)"}, + {"_ZN4llvm13AliasAnalysis20getLocationForSourceEPKNS_15MemTransferInstE", "llvm::AliasAnalysis::getLocationForSource(llvm::MemTransferInst const*)"}, + {"_ZN4llvm13AliasAnalysis18getLocationForDestEPKNS_12MemIntrinsicE", "llvm::AliasAnalysis::getLocationForDest(llvm::MemIntrinsic const*)"}, + {"_ZN4llvm13AliasAnalysis13getModRefInfoEPKNS_8LoadInstERKNS0_8LocationE", "llvm::AliasAnalysis::getModRefInfo(llvm::LoadInst const*, llvm::AliasAnalysis::Location const&)"}, + {"_ZN4llvm13AliasAnalysis13getModRefInfoEPKNS_9StoreInstERKNS0_8LocationE", "llvm::AliasAnalysis::getModRefInfo(llvm::StoreInst const*, llvm::AliasAnalysis::Location const&)"}, + {"_ZN4llvm13AliasAnalysis13getModRefInfoEPKNS_9VAArgInstERKNS0_8LocationE", "llvm::AliasAnalysis::getModRefInfo(llvm::VAArgInst const*, llvm::AliasAnalysis::Location const&)"}, + {"_ZN4llvm13AliasAnalysisD0Ev", "llvm::AliasAnalysis::~AliasAnalysis()"}, + {"_ZN4llvm13AliasAnalysisD1Ev", "llvm::AliasAnalysis::~AliasAnalysis()"}, + {"_ZN4llvm13AliasAnalysisD2Ev", "llvm::AliasAnalysis::~AliasAnalysis()"}, + {"_ZN4llvm13AliasAnalysis23InitializeAliasAnalysisEPNS_4PassE", "llvm::AliasAnalysis::InitializeAliasAnalysis(llvm::Pass*)"}, + {"_ZNK4llvm13AliasAnalysis16getAnalysisUsageERNS_13AnalysisUsageE", "llvm::AliasAnalysis::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN4llvm13AliasAnalysis19canBasicBlockModifyERKNS_10BasicBlockERKNS0_8LocationE", "llvm::AliasAnalysis::canBasicBlockModify(llvm::BasicBlock const&, llvm::AliasAnalysis::Location const&)"}, + {"_ZN4llvm13AliasAnalysis25canInstructionRangeModifyERKNS_11InstructionES3_RKNS0_8LocationE", "llvm::AliasAnalysis::canInstructionRangeModify(llvm::Instruction const&, llvm::Instruction const&, llvm::AliasAnalysis::Location const&)"}, + {"_ZN4llvm13isNoAliasCallEPKNS_5ValueE", "llvm::isNoAliasCall(llvm::Value const*)"}, + {"_ZN4llvm18isIdentifiedObjectEPKNS_5ValueE", "llvm::isIdentifiedObject(llvm::Value const*)"}, + {"_ZN4llvm13AliasAnalysis13getModRefInfoEPKNS_11InstructionERKNS0_8LocationE", "llvm::AliasAnalysis::getModRefInfo(llvm::Instruction const*, llvm::AliasAnalysis::Location const&)"}, + {"_ZN4llvm8AliasSet10mergeSetInERS0_RNS_15AliasSetTrackerE", "llvm::AliasSet::mergeSetIn(llvm::AliasSet&, llvm::AliasSetTracker&)"}, + {"_ZN4llvm15AliasSetTracker14removeAliasSetEPNS_8AliasSetE", "llvm::AliasSetTracker::removeAliasSet(llvm::AliasSet*)"}, + {"_ZN4llvm8AliasSet17removeFromTrackerERNS_15AliasSetTrackerE", "llvm::AliasSet::removeFromTracker(llvm::AliasSetTracker&)"}, + {"_ZN4llvm8AliasSet10addPointerERNS_15AliasSetTrackerERNS0_10PointerRecEyPKNS_6MDNodeEb", "llvm::AliasSet::addPointer(llvm::AliasSetTracker&, llvm::AliasSet::PointerRec&, unsigned long long, llvm::MDNode const*, bool)"}, + {"_ZN4llvm8AliasSet11addCallSiteENS_8CallSiteERNS_13AliasAnalysisE", "llvm::AliasSet::addCallSite(llvm::CallSite, llvm::AliasAnalysis&)"}, + {"_ZNK4llvm8AliasSet14aliasesPointerEPKNS_5ValueEyPKNS_6MDNodeERNS_13AliasAnalysisE", "llvm::AliasSet::aliasesPointer(llvm::Value const*, unsigned long long, llvm::MDNode const*, llvm::AliasAnalysis&) const"}, + {"_ZNK4llvm8AliasSet15aliasesCallSiteENS_8CallSiteERNS_13AliasAnalysisE", "llvm::AliasSet::aliasesCallSite(llvm::CallSite, llvm::AliasAnalysis&) const"}, + {"_ZN4llvm15AliasSetTracker5clearEv", "llvm::AliasSetTracker::clear()"}, + {"_ZN4llvm15AliasSetTracker22findAliasSetForPointerEPKNS_5ValueEyPKNS_6MDNodeE", "llvm::AliasSetTracker::findAliasSetForPointer(llvm::Value const*, unsigned long long, llvm::MDNode const*)"}, + {"_ZNK4llvm15AliasSetTracker15containsPointerEPNS_5ValueEyPKNS_6MDNodeE", "llvm::AliasSetTracker::containsPointer(llvm::Value*, unsigned long long, llvm::MDNode const*) const"}, + {"_ZN4llvm15AliasSetTracker23findAliasSetForCallSiteENS_8CallSiteE", "llvm::AliasSetTracker::findAliasSetForCallSite(llvm::CallSite)"}, + {"_ZN4llvm15AliasSetTracker21getAliasSetForPointerEPNS_5ValueEyPKNS_6MDNodeEPb", "llvm::AliasSetTracker::getAliasSetForPointer(llvm::Value*, unsigned long long, llvm::MDNode const*, bool*)"}, + {"_ZN4llvm15AliasSetTracker3addEPNS_5ValueEyPKNS_6MDNodeE", "llvm::AliasSetTracker::add(llvm::Value*, unsigned long long, llvm::MDNode const*)"}, + {"_ZN4llvm15AliasSetTracker3addEPNS_8LoadInstE", "llvm::AliasSetTracker::add(llvm::LoadInst*)"}, + {"_ZN4llvm15AliasSetTracker3addEPNS_9StoreInstE", "llvm::AliasSetTracker::add(llvm::StoreInst*)"}, + {"_ZN4llvm15AliasSetTracker3addEPNS_9VAArgInstE", "llvm::AliasSetTracker::add(llvm::VAArgInst*)"}, + {"_ZN4llvm15AliasSetTracker3addENS_8CallSiteE", "llvm::AliasSetTracker::add(llvm::CallSite)"}, + {"_ZN4llvm15AliasSetTracker3addEPNS_11InstructionE", "llvm::AliasSetTracker::add(llvm::Instruction*)"}, + {"_ZN4llvm15AliasSetTracker3addERNS_10BasicBlockE", "llvm::AliasSetTracker::add(llvm::BasicBlock&)"}, + {"_ZN4llvm15AliasSetTracker3addERKS0_", "llvm::AliasSetTracker::add(llvm::AliasSetTracker const&)"}, + {"_ZN4llvm15AliasSetTracker6removeERNS_8AliasSetE", "llvm::AliasSetTracker::remove(llvm::AliasSet&)"}, + {"_ZN4llvm15AliasSetTracker13ASTCallbackVHC1EPNS_5ValueEPS0_", "llvm::AliasSetTracker::ASTCallbackVH::ASTCallbackVH(llvm::Value*, llvm::AliasSetTracker*)"}, + {"_ZN4llvm15AliasSetTracker6removeEPNS_5ValueEyPKNS_6MDNodeE", "llvm::AliasSetTracker::remove(llvm::Value*, unsigned long long, llvm::MDNode const*)"}, + {"_ZN4llvm15AliasSetTracker6removeEPNS_8LoadInstE", "llvm::AliasSetTracker::remove(llvm::LoadInst*)"}, + {"_ZN4llvm15AliasSetTracker6removeEPNS_9StoreInstE", "llvm::AliasSetTracker::remove(llvm::StoreInst*)"}, + {"_ZN4llvm15AliasSetTracker6removeEPNS_9VAArgInstE", "llvm::AliasSetTracker::remove(llvm::VAArgInst*)"}, + {"_ZN4llvm15AliasSetTracker6removeENS_8CallSiteE", "llvm::AliasSetTracker::remove(llvm::CallSite)"}, + {"_ZN4llvm15AliasSetTracker6removeEPNS_11InstructionE", "llvm::AliasSetTracker::remove(llvm::Instruction*)"}, + {"_ZN4llvm15AliasSetTracker11deleteValueEPNS_5ValueE", "llvm::AliasSetTracker::deleteValue(llvm::Value*)"}, + {"_ZN4llvm15AliasSetTracker9copyValueEPNS_5ValueES2_", "llvm::AliasSetTracker::copyValue(llvm::Value*, llvm::Value*)"}, + {"_ZNK4llvm8AliasSet5printERNS_11raw_ostreamE", "llvm::AliasSet::print(llvm::raw_ostream&) const"}, + {"_ZNK4llvm15AliasSetTracker5printERNS_11raw_ostreamE", "llvm::AliasSetTracker::print(llvm::raw_ostream&) const"}, + {"_ZNK4llvm8AliasSet4dumpEv", "llvm::AliasSet::dump() const"}, + {"_ZNK4llvm15AliasSetTracker4dumpEv", "llvm::AliasSetTracker::dump() const"}, + {"_ZN4llvm15AliasSetTracker13ASTCallbackVH7deletedEv", "llvm::AliasSetTracker::ASTCallbackVH::deleted()"}, + {"_ZN4llvm15AliasSetTracker13ASTCallbackVHC2EPNS_5ValueEPS0_", "llvm::AliasSetTracker::ASTCallbackVH::ASTCallbackVH(llvm::Value*, llvm::AliasSetTracker*)"}, + {"_ZN4llvm15AliasSetTracker13ASTCallbackVHaSEPNS_5ValueE", "llvm::AliasSetTracker::ASTCallbackVH::operator=(llvm::Value*)"}, + {"_ZN4llvm29initializeAliasSetPrinterPassERNS_12PassRegistryE", "llvm::initializeAliasSetPrinterPass(llvm::PassRegistry&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_115AliasSetPrinterEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::AliasSetPrinter>()"}, + {"_ZN12_GLOBAL__N_115AliasSetPrinterD1Ev", "(anonymous namespace)::AliasSetPrinter::~AliasSetPrinter()"}, + {"_ZN12_GLOBAL__N_115AliasSetPrinterD0Ev", "(anonymous namespace)::AliasSetPrinter::~AliasSetPrinter()"}, + {"_ZNK12_GLOBAL__N_115AliasSetPrinter16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::AliasSetPrinter::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_115AliasSetPrinter13runOnFunctionERN4llvm8FunctionE", "(anonymous namespace)::AliasSetPrinter::runOnFunction(llvm::Function&)"}, + + // {"_ZN4llvm8DenseMapINS_15AliasSetTracker13ASTCallbackVHEPNS_8AliasSet10PointerRecENS1_25ASTCallbackVHDenseMapInfoENS_12DenseMapInfoIS5_EEE5beginEv", + // "llvm::DenseMap>::begin()"}, + // "llvm::DenseMap>::begin()" was returned + + + // {"_ZN4llvm8DenseMapINS_15AliasSetTracker13ASTCallbackVHEPNS_8AliasSet10PointerRecENS1_25ASTCallbackVHDenseMapInfoENS_12DenseMapInfoIS5_EEE5clearEv", + // "llvm::DenseMap>::clear()"}, + // "llvm::DenseMap>::clear()" was returned + + {"_ZN4llvm15AliasSetTracker11getEntryForEPNS_5ValueE", "llvm::AliasSetTracker::getEntryFor(llvm::Value*)"}, + {"_ZN4llvm8AliasSet18getForwardedTargetERNS_15AliasSetTrackerE", "llvm::AliasSet::getForwardedTarget(llvm::AliasSetTracker&)"}, + + // {"_ZN4llvm8DenseMapINS_15AliasSetTracker13ASTCallbackVHEPNS_8AliasSet10PointerRecENS1_25ASTCallbackVHDenseMapInfoENS_12DenseMapInfoIS5_EEE5eraseERKS2_", + // "llvm::DenseMap>::erase(llvm::AliasSetTracker::ASTCallbackVH const&)"}, + // "llvm::DenseMap>::erase(llvm::AliasSetTracker::ASTCallbackVH const&)" was returned + + + // {"_ZN4llvm8DenseMapINS_15AliasSetTracker13ASTCallbackVHEPNS_8AliasSet10PointerRecENS1_25ASTCallbackVHDenseMapInfoENS_12DenseMapInfoIS5_EEE4findERKS2_", + // "llvm::DenseMap>::find(llvm::AliasSetTracker::ASTCallbackVH const&)"}, + // "llvm::DenseMap>::find(llvm::AliasSetTracker::ASTCallbackVH const&)" was returned + + + // {"_ZN4llvm8DenseMapINS_15AliasSetTracker13ASTCallbackVHEPNS_8AliasSet10PointerRecENS1_25ASTCallbackVHDenseMapInfoENS_12DenseMapInfoIS5_EEE5eraseENS_16DenseMapIteratorIS2_S5_S6_S8_Lb0EEE", + // "llvm::DenseMap>::erase(llvm::DenseMapIterator, false>)"}, + // "llvm::DenseMap>::erase(llvm::DenseMapIterator>, false>)" was returned + + {"_ZNK4llvm6iplistINS_8AliasSetENS_12ilist_traitsIS1_EEE3endEv", "llvm::iplist>::end() const"}, + + // {"_ZNK4llvm8DenseMapINS_15AliasSetTracker13ASTCallbackVHEPNS_8AliasSet10PointerRecENS1_25ASTCallbackVHDenseMapInfoENS_12DenseMapInfoIS5_EEE15LookupBucketForERKS2_RPSt4pairIS2_S5_E", + // "llvm::DenseMap>::LookupBucketFor(llvm::AliasSetTracker::ASTCallbackVH const&, std::pair*&) const"}, + // "llvm::DenseMap>::LookupBucketFor(llvm::AliasSetTracker::ASTCallbackVH const&, std::pair*&) const" was returned + + + // {"_ZN4llvm8DenseMapINS_15AliasSetTracker13ASTCallbackVHEPNS_8AliasSet10PointerRecENS1_25ASTCallbackVHDenseMapInfoENS_12DenseMapInfoIS5_EEE16shrink_and_clearEv", + // "llvm::DenseMap>::shrink_and_clear()"}, + // "llvm::DenseMap>::shrink_and_clear()" was returned + + {"_ZNSt6vectorIN4llvm11AssertingVHINS0_11InstructionEEESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, llvm::AssertingVH const&)"}, + + // {"_ZNSt6vectorIN4llvm11AssertingVHINS0_11InstructionEEESaIS3_EE15_M_range_insertIN9__gnu_cxx17__normal_iteratorIPS3_S5_EEEEvSA_T_SB_St20forward_iterator_tag", + // "void std::vector, std::allocator>>::_M_range_insert<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::forward_iterator_tag)"}, + // got error + + + // {"_ZN4llvm8DenseMapINS_15AliasSetTracker13ASTCallbackVHEPNS_8AliasSet10PointerRecENS1_25ASTCallbackVHDenseMapInfoENS_12DenseMapInfoIS5_EEE16InsertIntoBucketERKS2_RKS5_PSt4pairIS2_S5_E", + // "llvm::DenseMap>::InsertIntoBucket(llvm::AliasSetTracker::ASTCallbackVH const&, llvm::AliasSet::PointerRec* const&, std::pair*)"}, + // "llvm::DenseMap>::InsertIntoBucket(llvm::AliasSetTracker::ASTCallbackVH const&, llvm::AliasSetTracker::ASTCallbackVHDenseMapInfo const&, std::pair*)" was returned + + + // {"_ZN4llvm8DenseMapINS_15AliasSetTracker13ASTCallbackVHEPNS_8AliasSet10PointerRecENS1_25ASTCallbackVHDenseMapInfoENS_12DenseMapInfoIS5_EEE4growEj", + // "llvm::DenseMap>::grow(unsigned int)"}, + // "llvm::DenseMap>::grow(unsigned int)" was returned + + {"_ZN4llvm32initializeBasicAliasAnalysisPassERNS_12PassRegistryE", "llvm::initializeBasicAliasAnalysisPass(llvm::PassRegistry&)"}, + {"_ZN4llvm28createBasicAliasAnalysisPassEv", "llvm::createBasicAliasAnalysisPass()"}, + {"_ZN12_GLOBAL__N_118BasicAliasAnalysisD1Ev", "(anonymous namespace)::BasicAliasAnalysis::~BasicAliasAnalysis()"}, + {"_ZN12_GLOBAL__N_118BasicAliasAnalysisD0Ev", "(anonymous namespace)::BasicAliasAnalysis::~BasicAliasAnalysis()"}, + {"_ZNK12_GLOBAL__N_118BasicAliasAnalysis16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::BasicAliasAnalysis::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_118BasicAliasAnalysis26getAdjustedAnalysisPointerEPKv", "(anonymous namespace)::BasicAliasAnalysis::getAdjustedAnalysisPointer(void const*)"}, + {"_ZN12_GLOBAL__N_118BasicAliasAnalysis14initializePassEv", "(anonymous namespace)::BasicAliasAnalysis::initializePass()"}, + {"_ZN12_GLOBAL__N_118BasicAliasAnalysis5aliasERKN4llvm13AliasAnalysis8LocationES5_", "(anonymous namespace)::BasicAliasAnalysis::alias(llvm::AliasAnalysis::Location const&, llvm::AliasAnalysis::Location const&)"}, + {"_ZN12_GLOBAL__N_118BasicAliasAnalysis13getModRefInfoEN4llvm17ImmutableCallSiteERKNS1_13AliasAnalysis8LocationE", "(anonymous namespace)::BasicAliasAnalysis::getModRefInfo(llvm::ImmutableCallSite, llvm::AliasAnalysis::Location const&)"}, + {"_ZN12_GLOBAL__N_118BasicAliasAnalysis13getModRefInfoEN4llvm17ImmutableCallSiteES2_", "(anonymous namespace)::BasicAliasAnalysis::getModRefInfo(llvm::ImmutableCallSite, llvm::ImmutableCallSite)"}, + {"_ZN12_GLOBAL__N_118BasicAliasAnalysis22pointsToConstantMemoryERKN4llvm13AliasAnalysis8LocationEb", "(anonymous namespace)::BasicAliasAnalysis::pointsToConstantMemory(llvm::AliasAnalysis::Location const&, bool)"}, + {"_ZN12_GLOBAL__N_118BasicAliasAnalysis17getModRefBehaviorEN4llvm17ImmutableCallSiteE", "(anonymous namespace)::BasicAliasAnalysis::getModRefBehavior(llvm::ImmutableCallSite)"}, + {"_ZN12_GLOBAL__N_118BasicAliasAnalysis17getModRefBehaviorEPKN4llvm8FunctionE", "(anonymous namespace)::BasicAliasAnalysis::getModRefBehavior(llvm::Function const*)"}, + + // {"_ZThn32_NK12_GLOBAL__N_118BasicAliasAnalysis16getAnalysisUsageERN4llvm13AnalysisUsageE", + // "non-virtual thunk to (anonymous namespace)::BasicAliasAnalysis::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::BasicAliasAnalysis::getAnalysisUsage(llvm::AnalysisUsage&) const" was returned + + + // {"_ZThn32_N12_GLOBAL__N_118BasicAliasAnalysisD1Ev", + // "non-virtual thunk to (anonymous namespace)::BasicAliasAnalysis::~BasicAliasAnalysis()"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::BasicAliasAnalysis::~BasicAliasAnalysis()" was returned + + + // {"_ZThn32_N12_GLOBAL__N_118BasicAliasAnalysisD0Ev", + // "non-virtual thunk to (anonymous namespace)::BasicAliasAnalysis::~BasicAliasAnalysis()"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::BasicAliasAnalysis::~BasicAliasAnalysis()" was returned + + + // {"_ZThn32_N12_GLOBAL__N_118BasicAliasAnalysis5aliasERKN4llvm13AliasAnalysis8LocationES5_", + // "non-virtual thunk to (anonymous namespace)::BasicAliasAnalysis::alias(llvm::AliasAnalysis::Location const&, llvm::AliasAnalysis::Location const&)"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::BasicAliasAnalysis::alias(llvm::AliasAnalysis::Location const&, llvm::AliasAnalysis::Location const&)" was returned + + + // {"_ZThn32_N12_GLOBAL__N_118BasicAliasAnalysis22pointsToConstantMemoryERKN4llvm13AliasAnalysis8LocationEb", + // "non-virtual thunk to (anonymous namespace)::BasicAliasAnalysis::pointsToConstantMemory(llvm::AliasAnalysis::Location const&, bool)"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::BasicAliasAnalysis::pointsToConstantMemory(llvm::AliasAnalysis::Location const&, bool)" was returned + + + // {"_ZThn32_N12_GLOBAL__N_118BasicAliasAnalysis17getModRefBehaviorEN4llvm17ImmutableCallSiteE", + // "non-virtual thunk to (anonymous namespace)::BasicAliasAnalysis::getModRefBehavior(llvm::ImmutableCallSite)"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::BasicAliasAnalysis::getModRefBehavior(llvm::ImmutableCallSite)" was returned + + + // {"_ZThn32_N12_GLOBAL__N_118BasicAliasAnalysis17getModRefBehaviorEPKN4llvm8FunctionE", + // "non-virtual thunk to (anonymous namespace)::BasicAliasAnalysis::getModRefBehavior(llvm::Function const*)"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::BasicAliasAnalysis::getModRefBehavior(llvm::Function const*)" was returned + + + // {"_ZThn32_N12_GLOBAL__N_118BasicAliasAnalysis13getModRefInfoEN4llvm17ImmutableCallSiteERKNS1_13AliasAnalysis8LocationE", + // "non-virtual thunk to (anonymous namespace)::BasicAliasAnalysis::getModRefInfo(llvm::ImmutableCallSite, llvm::AliasAnalysis::Location const&)"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::BasicAliasAnalysis::getModRefInfo(llvm::ImmutableCallSite, llvm::AliasAnalysis::Location const&)" was returned + + + // {"_ZThn32_N12_GLOBAL__N_118BasicAliasAnalysis13getModRefInfoEN4llvm17ImmutableCallSiteES2_", + // "non-virtual thunk to (anonymous namespace)::BasicAliasAnalysis::getModRefInfo(llvm::ImmutableCallSite, llvm::ImmutableCallSite)"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::BasicAliasAnalysis::getModRefInfo(llvm::ImmutableCallSite, llvm::ImmutableCallSite)" was returned + + {"_ZN12_GLOBAL__N_118BasicAliasAnalysis10aliasCheckEPKN4llvm5ValueEyPKNS1_6MDNodeES4_yS7_", "(anonymous namespace)::BasicAliasAnalysis::aliasCheck(llvm::Value const*, unsigned long long, llvm::MDNode const*, llvm::Value const*, unsigned long long, llvm::MDNode const*)"}, + {"_Z24isNonEscapingLocalObjectPKN4llvm5ValueE", "isNonEscapingLocalObject(llvm::Value const*)"}, + {"_Z13getObjectSizePKN4llvm5ValueERKNS_10DataLayoutE", "getObjectSize(llvm::Value const*, llvm::DataLayout const&)"}, + {"_Z22DecomposeGEPExpressionPKN4llvm5ValueERxRNS_15SmallVectorImplIN12_GLOBAL__N_116VariableGEPIndexEEEPKNS_10DataLayoutE", "DecomposeGEPExpression(llvm::Value const*, long long&, llvm::SmallVectorImpl<(anonymous namespace)::VariableGEPIndex>&, llvm::DataLayout const*)"}, + {"_ZN4llvm15SmallVectorImplIN12_GLOBAL__N_116VariableGEPIndexEE9push_backERKS2_", "llvm::SmallVectorImpl<(anonymous namespace)::VariableGEPIndex>::push_back((anonymous namespace)::VariableGEPIndex const&)"}, + {"_Z19GetLinearExpressionPN4llvm5ValueERNS_5APIntES3_RN12_GLOBAL__N_113ExtensionKindERKNS_10DataLayoutEj", "GetLinearExpression(llvm::Value*, llvm::APInt&, llvm::APInt&, (anonymous namespace)::ExtensionKind&, llvm::DataLayout const&, unsigned int)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_118BasicAliasAnalysisEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::BasicAliasAnalysis>()"}, + {"_ZN4llvm20PointerMayBeCapturedEPKNS_5ValueEbb", "llvm::PointerMayBeCaptured(llvm::Value const*, bool, bool)"}, + {"_ZN4llvm28ConstantFoldLoadFromConstPtrEPNS_8ConstantEPKNS_10DataLayoutE", "llvm::ConstantFoldLoadFromConstPtr(llvm::Constant*, llvm::DataLayout const*)"}, + {"_ZN4llvm38ConstantFoldLoadThroughGEPConstantExprEPNS_8ConstantEPNS_12ConstantExprE", "llvm::ConstantFoldLoadThroughGEPConstantExpr(llvm::Constant*, llvm::ConstantExpr*)"}, + {"_Z31FoldReinterpretLoadFromConstPtrPN4llvm8ConstantERKNS_10DataLayoutE", "FoldReinterpretLoadFromConstPtr(llvm::Constant*, llvm::DataLayout const&)"}, + {"_ZN4llvm23ConstantFoldInstructionEPNS_11InstructionEPKNS_10DataLayoutE", "llvm::ConstantFoldInstruction(llvm::Instruction*, llvm::DataLayout const*)"}, + {"_ZN4llvm31ConstantFoldCompareInstOperandsEjPNS_8ConstantES1_PKNS_10DataLayoutE", "llvm::ConstantFoldCompareInstOperands(unsigned int, llvm::Constant*, llvm::Constant*, llvm::DataLayout const*)"}, + {"_ZN4llvm24ConstantFoldInstOperandsEjPKNS_4TypeEPKPNS_8ConstantEjPKNS_10DataLayoutE", "llvm::ConstantFoldInstOperands(unsigned int, llvm::Type const*, llvm::Constant* const*, unsigned int, llvm::DataLayout const*)"}, + {"_ZN4llvm30ConstantFoldConstantExpressionEPKNS_12ConstantExprEPKNS_10DataLayoutE", "llvm::ConstantFoldConstantExpression(llvm::ConstantExpr const*, llvm::DataLayout const*)"}, + {"_ZN4llvm21canConstantFoldCallToEPKNS_8FunctionE", "llvm::canConstantFoldCallTo(llvm::Function const*)"}, + {"_ZN4llvm16ConstantFoldCallEPNS_8FunctionEPKPNS_8ConstantEj", "llvm::ConstantFoldCall(llvm::Function*, llvm::Constant* const*, unsigned int)"}, + {"_Z11FoldBitCastPN4llvm8ConstantEPKNS_4TypeERKNS_10DataLayoutE", "FoldBitCast(llvm::Constant*, llvm::Type const*, llvm::DataLayout const&)"}, + {"_Z14ConstantFoldFPPFddEdPKN4llvm4TypeE", "ConstantFoldFP(double (*)(double), double, llvm::Type const*)"}, + {"_Z20ConstantFoldBinaryFPPFdddEddPKN4llvm4TypeE", "ConstantFoldBinaryFP(double (*)(double, double), double, double, llvm::Type const*)"}, + {"_Z26IsConstantOffsetFromGlobalPN4llvm8ConstantERPNS_11GlobalValueERxRKNS_10DataLayoutE", "IsConstantOffsetFromGlobal(llvm::Constant*, llvm::GlobalValue*&, long long&, llvm::DataLayout const&)"}, + {"_Z18ReadDataFromGlobalPN4llvm8ConstantEyPhjRKNS_10DataLayoutE", "ReadDataFromGlobal(llvm::Constant*, unsigned long long, unsigned char*, unsigned int, llvm::DataLayout const&)"}, + {"_ZN4llvm9DIBuilderC1ERNS_6ModuleE", "llvm::DIBuilder::DIBuilder(llvm::Module&)"}, + {"_ZN4llvm9DIBuilderC2ERNS_6ModuleE", "llvm::DIBuilder::DIBuilder(llvm::Module&)"}, + {"_ZN4llvm9DIBuilder17CreateCompileUnitEjNS_9StringRefES1_S1_bS1_j", "llvm::DIBuilder::CreateCompileUnit(unsigned int, llvm::StringRef, llvm::StringRef, llvm::StringRef, bool, llvm::StringRef, unsigned int)"}, + {"_ZN4llvm9DIBuilder10CreateFileENS_9StringRefES1_", "llvm::DIBuilder::CreateFile(llvm::StringRef, llvm::StringRef)"}, + {"_ZN4llvm9DIBuilder16CreateEnumeratorENS_9StringRefEy", "llvm::DIBuilder::CreateEnumerator(llvm::StringRef, unsigned long long)"}, + {"_ZN4llvm9DIBuilder15CreateBasicTypeENS_9StringRefEyyj", "llvm::DIBuilder::CreateBasicType(llvm::StringRef, unsigned long long, unsigned long long, unsigned int)"}, + {"_ZN4llvm9DIBuilder19CreateQualifiedTypeEjNS_6DITypeE", "llvm::DIBuilder::CreateQualifiedType(unsigned int, llvm::DIType)"}, + {"_ZN4llvm9DIBuilder17CreatePointerTypeENS_6DITypeEyyNS_9StringRefE", "llvm::DIBuilder::CreatePointerType(llvm::DIType, unsigned long long, unsigned long long, llvm::StringRef)"}, + {"_ZN4llvm9DIBuilder19CreateReferenceTypeENS_6DITypeE", "llvm::DIBuilder::CreateReferenceType(llvm::DIType)"}, + {"_ZN4llvm9DIBuilder13CreateTypedefENS_6DITypeENS_9StringRefENS_6DIFileEj", "llvm::DIBuilder::CreateTypedef(llvm::DIType, llvm::StringRef, llvm::DIFile, unsigned int)"}, + {"_ZN4llvm9DIBuilder12CreateFriendENS_6DITypeES1_", "llvm::DIBuilder::CreateFriend(llvm::DIType, llvm::DIType)"}, + {"_ZN4llvm9DIBuilder17CreateInheritanceENS_6DITypeES1_yj", "llvm::DIBuilder::CreateInheritance(llvm::DIType, llvm::DIType, unsigned long long, unsigned int)"}, + {"_ZN4llvm9DIBuilder16CreateMemberTypeENS_9StringRefENS_6DIFileEjyyyjNS_6DITypeE", "llvm::DIBuilder::CreateMemberType(llvm::StringRef, llvm::DIFile, unsigned int, unsigned long long, unsigned long long, unsigned long long, unsigned int, llvm::DIType)"}, + {"_ZN4llvm9DIBuilder15CreateClassTypeENS_12DIDescriptorENS_9StringRefENS_6DIFileEjyyyjNS_6DITypeENS_7DIArrayEPNS_6MDNodeES7_", "llvm::DIBuilder::CreateClassType(llvm::DIDescriptor, llvm::StringRef, llvm::DIFile, unsigned int, unsigned long long, unsigned long long, unsigned long long, unsigned int, llvm::DIType, llvm::DIArray, llvm::MDNode*, llvm::MDNode*)"}, + {"_ZN4llvm9DIBuilder27CreateTemplateTypeParameterENS_12DIDescriptorENS_9StringRefENS_6DITypeEPNS_6MDNodeEjj", "llvm::DIBuilder::CreateTemplateTypeParameter(llvm::DIDescriptor, llvm::StringRef, llvm::DIType, llvm::MDNode*, unsigned int, unsigned int)"}, + {"_ZN4llvm9DIBuilder28CreateTemplateValueParameterENS_12DIDescriptorENS_9StringRefENS_6DITypeEyPNS_6MDNodeEjj", "llvm::DIBuilder::CreateTemplateValueParameter(llvm::DIDescriptor, llvm::StringRef, llvm::DIType, unsigned long long, llvm::MDNode*, unsigned int, unsigned int)"}, + {"_ZN4llvm9DIBuilder16CreateStructTypeENS_12DIDescriptorENS_9StringRefENS_6DIFileEjyyjNS_7DIArrayEj", "llvm::DIBuilder::CreateStructType(llvm::DIDescriptor, llvm::StringRef, llvm::DIFile, unsigned int, unsigned long long, unsigned long long, unsigned int, llvm::DIArray, unsigned int)"}, + {"_ZN4llvm9DIBuilder15CreateUnionTypeENS_12DIDescriptorENS_9StringRefENS_6DIFileEjyyjNS_7DIArrayEj", "llvm::DIBuilder::CreateUnionType(llvm::DIDescriptor, llvm::StringRef, llvm::DIFile, unsigned int, unsigned long long, unsigned long long, unsigned int, llvm::DIArray, unsigned int)"}, + {"_ZN4llvm9DIBuilder20CreateSubroutineTypeENS_6DIFileENS_7DIArrayE", "llvm::DIBuilder::CreateSubroutineType(llvm::DIFile, llvm::DIArray)"}, + {"_ZN4llvm9DIBuilder21CreateEnumerationTypeENS_12DIDescriptorENS_9StringRefENS_6DIFileEjyyNS_7DIArrayE", "llvm::DIBuilder::CreateEnumerationType(llvm::DIDescriptor, llvm::StringRef, llvm::DIFile, unsigned int, unsigned long long, unsigned long long, llvm::DIArray)"}, + {"_ZN4llvm9DIBuilder15CreateArrayTypeEyyNS_6DITypeENS_7DIArrayE", "llvm::DIBuilder::CreateArrayType(unsigned long long, unsigned long long, llvm::DIType, llvm::DIArray)"}, + {"_ZN4llvm9DIBuilder16CreateVectorTypeEyyNS_6DITypeENS_7DIArrayE", "llvm::DIBuilder::CreateVectorType(unsigned long long, unsigned long long, llvm::DIType, llvm::DIArray)"}, + {"_ZN4llvm9DIBuilder20CreateArtificialTypeENS_6DITypeE", "llvm::DIBuilder::CreateArtificialType(llvm::DIType)"}, + {"_ZN4llvm9DIBuilder10RetainTypeENS_6DITypeE", "llvm::DIBuilder::RetainType(llvm::DIType)"}, + {"_ZN4llvm9DIBuilder26CreateUnspecifiedParameterEv", "llvm::DIBuilder::CreateUnspecifiedParameter()"}, + {"_ZN4llvm9DIBuilder19CreateTemporaryTypeEv", "llvm::DIBuilder::CreateTemporaryType()"}, + {"_ZN4llvm9DIBuilder19CreateTemporaryTypeENS_6DIFileE", "llvm::DIBuilder::CreateTemporaryType(llvm::DIFile)"}, + {"_ZN4llvm9DIBuilder16GetOrCreateArrayEPKPNS_5ValueEj", "llvm::DIBuilder::GetOrCreateArray(llvm::Value* const*, unsigned int)"}, + {"_ZN4llvm9DIBuilder19GetOrCreateSubrangeExx", "llvm::DIBuilder::GetOrCreateSubrange(long long, long long)"}, + {"_ZN4llvm9DIBuilder20CreateGlobalVariableENS_9StringRefENS_6DIFileEjNS_6DITypeEbPNS_5ValueE", "llvm::DIBuilder::CreateGlobalVariable(llvm::StringRef, llvm::DIFile, unsigned int, llvm::DIType, bool, llvm::Value*)"}, + {"_ZN4llvm9DIBuilder20CreateStaticVariableENS_12DIDescriptorENS_9StringRefES2_NS_6DIFileEjNS_6DITypeEbPNS_5ValueE", "llvm::DIBuilder::CreateStaticVariable(llvm::DIDescriptor, llvm::StringRef, llvm::StringRef, llvm::DIFile, unsigned int, llvm::DIType, bool, llvm::Value*)"}, + {"_ZN4llvm9DIBuilder19CreateLocalVariableEjNS_12DIDescriptorENS_9StringRefENS_6DIFileEjNS_6DITypeEbj", "llvm::DIBuilder::CreateLocalVariable(unsigned int, llvm::DIDescriptor, llvm::StringRef, llvm::DIFile, unsigned int, llvm::DIType, bool, unsigned int)"}, + {"_ZN4llvm9DIBuilder21CreateComplexVariableEjNS_12DIDescriptorENS_9StringRefENS_6DIFileEjNS_6DITypeEPKPNS_5ValueEj", "llvm::DIBuilder::CreateComplexVariable(unsigned int, llvm::DIDescriptor, llvm::StringRef, llvm::DIFile, unsigned int, llvm::DIType, llvm::Value* const*, unsigned int)"}, + {"_ZN4llvm9DIBuilder14CreateFunctionENS_12DIDescriptorENS_9StringRefES2_NS_6DIFileEjNS_6DITypeEbbjbPNS_8FunctionE", "llvm::DIBuilder::CreateFunction(llvm::DIDescriptor, llvm::StringRef, llvm::StringRef, llvm::DIFile, unsigned int, llvm::DIType, bool, bool, unsigned int, bool, llvm::Function*)"}, + {"_ZN4llvm9DIBuilder12CreateMethodENS_12DIDescriptorENS_9StringRefES2_NS_6DIFileEjNS_6DITypeEbbjjPNS_6MDNodeEjbPNS_8FunctionE", "llvm::DIBuilder::CreateMethod(llvm::DIDescriptor, llvm::StringRef, llvm::StringRef, llvm::DIFile, unsigned int, llvm::DIType, bool, bool, unsigned int, unsigned int, llvm::MDNode*, unsigned int, bool, llvm::Function*)"}, + {"_ZN4llvm9DIBuilder15CreateNameSpaceENS_12DIDescriptorENS_9StringRefENS_6DIFileEj", "llvm::DIBuilder::CreateNameSpace(llvm::DIDescriptor, llvm::StringRef, llvm::DIFile, unsigned int)"}, + {"_ZN4llvm9DIBuilder18CreateLexicalBlockENS_12DIDescriptorENS_6DIFileEjj", "llvm::DIBuilder::CreateLexicalBlock(llvm::DIDescriptor, llvm::DIFile, unsigned int, unsigned int)"}, + {"_ZN4llvm9DIBuilder13InsertDeclareEPNS_5ValueENS_10DIVariableEPNS_11InstructionE", "llvm::DIBuilder::InsertDeclare(llvm::Value*, llvm::DIVariable, llvm::Instruction*)"}, + {"_ZN4llvm9DIBuilder13InsertDeclareEPNS_5ValueENS_10DIVariableEPNS_10BasicBlockE", "llvm::DIBuilder::InsertDeclare(llvm::Value*, llvm::DIVariable, llvm::BasicBlock*)"}, + {"_ZN4llvm9DIBuilder23InsertDbgValueIntrinsicEPNS_5ValueEyNS_10DIVariableEPNS_11InstructionE", "llvm::DIBuilder::InsertDbgValueIntrinsic(llvm::Value*, unsigned long long, llvm::DIVariable, llvm::Instruction*)"}, + {"_ZN4llvm9DIBuilder23InsertDbgValueIntrinsicEPNS_5ValueEyNS_10DIVariableEPNS_10BasicBlockE", "llvm::DIBuilder::InsertDbgValueIntrinsic(llvm::Value*, unsigned long long, llvm::DIVariable, llvm::BasicBlock*)"}, + {"_ZN4llvm12DIDescriptorC1ENS_6DIFileE", "llvm::DIDescriptor::DIDescriptor(llvm::DIFile)"}, + {"_ZN4llvm12DIDescriptorC2ENS_6DIFileE", "llvm::DIDescriptor::DIDescriptor(llvm::DIFile)"}, + {"_ZN4llvm12DIDescriptorC1ENS_12DISubprogramE", "llvm::DIDescriptor::DIDescriptor(llvm::DISubprogram)"}, + {"_ZN4llvm12DIDescriptorC2ENS_12DISubprogramE", "llvm::DIDescriptor::DIDescriptor(llvm::DISubprogram)"}, + {"_ZN4llvm12DIDescriptorC1ENS_14DILexicalBlockE", "llvm::DIDescriptor::DIDescriptor(llvm::DILexicalBlock)"}, + {"_ZN4llvm12DIDescriptorC2ENS_14DILexicalBlockE", "llvm::DIDescriptor::DIDescriptor(llvm::DILexicalBlock)"}, + {"_ZN4llvm12DIDescriptorC1ENS_10DIVariableE", "llvm::DIDescriptor::DIDescriptor(llvm::DIVariable)"}, + {"_ZN4llvm12DIDescriptorC2ENS_10DIVariableE", "llvm::DIDescriptor::DIDescriptor(llvm::DIVariable)"}, + {"_ZN4llvm12DIDescriptorC1ENS_6DITypeE", "llvm::DIDescriptor::DIDescriptor(llvm::DIType)"}, + {"_ZN4llvm12DIDescriptorC2ENS_6DITypeE", "llvm::DIDescriptor::DIDescriptor(llvm::DIType)"}, + {"_ZNK4llvm12DIDescriptor14getStringFieldEj", "llvm::DIDescriptor::getStringField(unsigned int) const"}, + {"_ZNK4llvm12DIDescriptor14getUInt64FieldEj", "llvm::DIDescriptor::getUInt64Field(unsigned int) const"}, + {"_ZNK4llvm12DIDescriptor18getDescriptorFieldEj", "llvm::DIDescriptor::getDescriptorField(unsigned int) const"}, + {"_ZNK4llvm12DIDescriptor22getGlobalVariableFieldEj", "llvm::DIDescriptor::getGlobalVariableField(unsigned int) const"}, + {"_ZNK4llvm12DIDescriptor16getConstantFieldEj", "llvm::DIDescriptor::getConstantField(unsigned int) const"}, + {"_ZNK4llvm12DIDescriptor16getFunctionFieldEj", "llvm::DIDescriptor::getFunctionField(unsigned int) const"}, + {"_ZNK4llvm10DIVariable18getNumAddrElementsEv", "llvm::DIVariable::getNumAddrElements() const"}, + {"_ZNK4llvm12DIDescriptor11isBasicTypeEv", "llvm::DIDescriptor::isBasicType() const"}, + {"_ZNK4llvm12DIDescriptor13isDerivedTypeEv", "llvm::DIDescriptor::isDerivedType() const"}, + {"_ZNK4llvm12DIDescriptor15isCompositeTypeEv", "llvm::DIDescriptor::isCompositeType() const"}, + {"_ZNK4llvm12DIDescriptor10isVariableEv", "llvm::DIDescriptor::isVariable() const"}, + {"_ZNK4llvm12DIDescriptor6isTypeEv", "llvm::DIDescriptor::isType() const"}, + {"_ZNK4llvm12DIDescriptor12isSubprogramEv", "llvm::DIDescriptor::isSubprogram() const"}, + {"_ZNK4llvm12DIDescriptor16isGlobalVariableEv", "llvm::DIDescriptor::isGlobalVariable() const"}, + {"_ZNK4llvm12DIDescriptor8isGlobalEv", "llvm::DIDescriptor::isGlobal() const"}, + {"_ZNK4llvm12DIDescriptor22isUnspecifiedParameterEv", "llvm::DIDescriptor::isUnspecifiedParameter() const"}, + {"_ZNK4llvm12DIDescriptor7isScopeEv", "llvm::DIDescriptor::isScope() const"}, + {"_ZNK4llvm12DIDescriptor23isTemplateTypeParameterEv", "llvm::DIDescriptor::isTemplateTypeParameter() const"}, + {"_ZNK4llvm12DIDescriptor24isTemplateValueParameterEv", "llvm::DIDescriptor::isTemplateValueParameter() const"}, + {"_ZNK4llvm12DIDescriptor13isCompileUnitEv", "llvm::DIDescriptor::isCompileUnit() const"}, + {"_ZNK4llvm12DIDescriptor6isFileEv", "llvm::DIDescriptor::isFile() const"}, + {"_ZNK4llvm12DIDescriptor11isNameSpaceEv", "llvm::DIDescriptor::isNameSpace() const"}, + {"_ZNK4llvm12DIDescriptor14isLexicalBlockEv", "llvm::DIDescriptor::isLexicalBlock() const"}, + {"_ZNK4llvm12DIDescriptor10isSubrangeEv", "llvm::DIDescriptor::isSubrange() const"}, + {"_ZNK4llvm12DIDescriptor12isEnumeratorEv", "llvm::DIDescriptor::isEnumerator() const"}, + {"_ZN4llvm6DITypeC1EPKNS_6MDNodeE", "llvm::DIType::DIType(llvm::MDNode const*)"}, + {"_ZN4llvm6DITypeC2EPKNS_6MDNodeE", "llvm::DIType::DIType(llvm::MDNode const*)"}, + {"_ZNK4llvm7DIArray14getNumElementsEv", "llvm::DIArray::getNumElements() const"}, + {"_ZN4llvm6DIType18replaceAllUsesWithERNS_12DIDescriptorE", "llvm::DIType::replaceAllUsesWith(llvm::DIDescriptor&)"}, + {"_ZN4llvm6DIType18replaceAllUsesWithEPNS_6MDNodeE", "llvm::DIType::replaceAllUsesWith(llvm::MDNode*)"}, + {"_ZNK4llvm13DICompileUnit6VerifyEv", "llvm::DICompileUnit::Verify() const"}, + {"_ZNK4llvm6DIType6VerifyEv", "llvm::DIType::Verify() const"}, + {"_ZNK4llvm11DIBasicType6VerifyEv", "llvm::DIBasicType::Verify() const"}, + {"_ZNK4llvm13DIDerivedType6VerifyEv", "llvm::DIDerivedType::Verify() const"}, + {"_ZNK4llvm15DICompositeType6VerifyEv", "llvm::DICompositeType::Verify() const"}, + {"_ZNK4llvm12DISubprogram6VerifyEv", "llvm::DISubprogram::Verify() const"}, + {"_ZNK4llvm16DIGlobalVariable6VerifyEv", "llvm::DIGlobalVariable::Verify() const"}, + {"_ZNK4llvm10DIVariable6VerifyEv", "llvm::DIVariable::Verify() const"}, + {"_ZNK4llvm10DILocation6VerifyEv", "llvm::DILocation::Verify() const"}, + {"_ZNK4llvm11DINameSpace6VerifyEv", "llvm::DINameSpace::Verify() const"}, + {"_ZNK4llvm13DIDerivedType19getOriginalTypeSizeEv", "llvm::DIDerivedType::getOriginalTypeSize() const"}, + {"_ZN4llvm10DIVariable19isInlinedFnArgumentEPKNS_8FunctionE", "llvm::DIVariable::isInlinedFnArgument(llvm::Function const*)"}, + {"_ZN4llvm12DISubprogram9describesEPKNS_8FunctionE", "llvm::DISubprogram::describes(llvm::Function const*)"}, + {"_ZNK4llvm12DISubprogram11isOptimizedEv", "llvm::DISubprogram::isOptimized() const"}, + {"_ZNK4llvm7DIScope11getFilenameEv", "llvm::DIScope::getFilename() const"}, + {"_ZNK4llvm7DIScope12getDirectoryEv", "llvm::DIScope::getDirectory() const"}, + {"_ZNK4llvm12DIDescriptor5printERNS_11raw_ostreamE", "llvm::DIDescriptor::print(llvm::raw_ostream&) const"}, + {"_ZNK4llvm13DICompileUnit5printERNS_11raw_ostreamE", "llvm::DICompileUnit::print(llvm::raw_ostream&) const"}, + {"_ZNK4llvm6DIType5printERNS_11raw_ostreamE", "llvm::DIType::print(llvm::raw_ostream&) const"}, + {"_ZNK4llvm11DIBasicType5printERNS_11raw_ostreamE", "llvm::DIBasicType::print(llvm::raw_ostream&) const"}, + {"_ZNK4llvm13DIDerivedType5printERNS_11raw_ostreamE", "llvm::DIDerivedType::print(llvm::raw_ostream&) const"}, + {"_ZNK4llvm15DICompositeType5printERNS_11raw_ostreamE", "llvm::DICompositeType::print(llvm::raw_ostream&) const"}, + {"_ZNK4llvm12DISubprogram5printERNS_11raw_ostreamE", "llvm::DISubprogram::print(llvm::raw_ostream&) const"}, + {"_ZNK4llvm16DIGlobalVariable5printERNS_11raw_ostreamE", "llvm::DIGlobalVariable::print(llvm::raw_ostream&) const"}, + {"_ZNK4llvm10DIVariable5printERNS_11raw_ostreamE", "llvm::DIVariable::print(llvm::raw_ostream&) const"}, + {"_ZNK4llvm12DIDescriptor4dumpEv", "llvm::DIDescriptor::dump() const"}, + {"_ZNK4llvm13DICompileUnit4dumpEv", "llvm::DICompileUnit::dump() const"}, + {"_ZNK4llvm6DIType4dumpEv", "llvm::DIType::dump() const"}, + {"_ZNK4llvm11DIBasicType4dumpEv", "llvm::DIBasicType::dump() const"}, + {"_ZNK4llvm13DIDerivedType4dumpEv", "llvm::DIDerivedType::dump() const"}, + {"_ZNK4llvm15DICompositeType4dumpEv", "llvm::DICompositeType::dump() const"}, + {"_ZNK4llvm12DISubprogram4dumpEv", "llvm::DISubprogram::dump() const"}, + {"_ZNK4llvm16DIGlobalVariable4dumpEv", "llvm::DIGlobalVariable::dump() const"}, + {"_ZNK4llvm10DIVariable4dumpEv", "llvm::DIVariable::dump() const"}, + {"_ZN4llvm9DIFactoryC1ERNS_6ModuleE", "llvm::DIFactory::DIFactory(llvm::Module&)"}, + {"_ZN4llvm9DIFactoryC2ERNS_6ModuleE", "llvm::DIFactory::DIFactory(llvm::Module&)"}, + {"_ZN4llvm9DIFactory14GetTagConstantEj", "llvm::DIFactory::GetTagConstant(unsigned int)"}, + {"_ZN4llvm9DIFactory16GetOrCreateArrayEPNS_12DIDescriptorEj", "llvm::DIFactory::GetOrCreateArray(llvm::DIDescriptor*, unsigned int)"}, + {"_ZN4llvm9DIFactory19GetOrCreateSubrangeExx", "llvm::DIFactory::GetOrCreateSubrange(long long, long long)"}, + {"_ZN4llvm9DIFactory26CreateUnspecifiedParameterEv", "llvm::DIFactory::CreateUnspecifiedParameter()"}, + {"_ZN4llvm9DIFactory17CreateCompileUnitEjNS_9StringRefES1_S1_bbS1_j", "llvm::DIFactory::CreateCompileUnit(unsigned int, llvm::StringRef, llvm::StringRef, llvm::StringRef, bool, bool, llvm::StringRef, unsigned int)"}, + {"_ZN4llvm9DIFactory10CreateFileENS_9StringRefES1_NS_13DICompileUnitE", "llvm::DIFactory::CreateFile(llvm::StringRef, llvm::StringRef, llvm::DICompileUnit)"}, + {"_ZN4llvm9DIFactory16CreateEnumeratorENS_9StringRefEy", "llvm::DIFactory::CreateEnumerator(llvm::StringRef, unsigned long long)"}, + {"_ZN4llvm9DIFactory15CreateBasicTypeENS_12DIDescriptorENS_9StringRefENS_6DIFileEjyyyjj", "llvm::DIFactory::CreateBasicType(llvm::DIDescriptor, llvm::StringRef, llvm::DIFile, unsigned int, unsigned long long, unsigned long long, unsigned long long, unsigned int, unsigned int)"}, + {"_ZN4llvm9DIFactory17CreateBasicTypeExENS_12DIDescriptorENS_9StringRefENS_6DIFileEjPNS_8ConstantES5_S5_jj", "llvm::DIFactory::CreateBasicTypeEx(llvm::DIDescriptor, llvm::StringRef, llvm::DIFile, unsigned int, llvm::Constant*, llvm::Constant*, llvm::Constant*, unsigned int, unsigned int)"}, + {"_ZN4llvm9DIFactory20CreateArtificialTypeENS_6DITypeE", "llvm::DIFactory::CreateArtificialType(llvm::DIType)"}, + {"_ZN4llvm9DIFactory17CreateDerivedTypeEjNS_12DIDescriptorENS_9StringRefENS_6DIFileEjyyyjNS_6DITypeE", "llvm::DIFactory::CreateDerivedType(unsigned int, llvm::DIDescriptor, llvm::StringRef, llvm::DIFile, unsigned int, unsigned long long, unsigned long long, unsigned long long, unsigned int, llvm::DIType)"}, + {"_ZN4llvm9DIFactory19CreateDerivedTypeExEjNS_12DIDescriptorENS_9StringRefENS_6DIFileEjPNS_8ConstantES5_S5_jNS_6DITypeE", "llvm::DIFactory::CreateDerivedTypeEx(unsigned int, llvm::DIDescriptor, llvm::StringRef, llvm::DIFile, unsigned int, llvm::Constant*, llvm::Constant*, llvm::Constant*, unsigned int, llvm::DIType)"}, + {"_ZN4llvm9DIFactory19CreateCompositeTypeEjNS_12DIDescriptorENS_9StringRefENS_6DIFileEjyyyjNS_6DITypeENS_7DIArrayEjPNS_6MDNodeE", "llvm::DIFactory::CreateCompositeType(unsigned int, llvm::DIDescriptor, llvm::StringRef, llvm::DIFile, unsigned int, unsigned long long, unsigned long long, unsigned long long, unsigned int, llvm::DIType, llvm::DIArray, unsigned int, llvm::MDNode*)"}, + {"_ZN4llvm9DIFactory19CreateTemporaryTypeEv", "llvm::DIFactory::CreateTemporaryType()"}, + {"_ZN4llvm9DIFactory19CreateTemporaryTypeENS_6DIFileE", "llvm::DIFactory::CreateTemporaryType(llvm::DIFile)"}, + {"_ZN4llvm9DIFactory21CreateCompositeTypeExEjNS_12DIDescriptorENS_9StringRefENS_6DIFileEjPNS_8ConstantES5_S5_jNS_6DITypeENS_7DIArrayEjPNS_6MDNodeE", "llvm::DIFactory::CreateCompositeTypeEx(unsigned int, llvm::DIDescriptor, llvm::StringRef, llvm::DIFile, unsigned int, llvm::Constant*, llvm::Constant*, llvm::Constant*, unsigned int, llvm::DIType, llvm::DIArray, unsigned int, llvm::MDNode*)"}, + {"_ZN4llvm9DIFactory16CreateSubprogramENS_12DIDescriptorENS_9StringRefES2_S2_NS_6DIFileEjNS_6DITypeEbbjjS4_jbPNS_8FunctionE", "llvm::DIFactory::CreateSubprogram(llvm::DIDescriptor, llvm::StringRef, llvm::StringRef, llvm::StringRef, llvm::DIFile, unsigned int, llvm::DIType, bool, bool, unsigned int, unsigned int, llvm::DIType, unsigned int, bool, llvm::Function*)"}, + {"_ZN4llvm9DIFactory26CreateSubprogramDefinitionERNS_12DISubprogramE", "llvm::DIFactory::CreateSubprogramDefinition(llvm::DISubprogram&)"}, + {"_ZN4llvm9DIFactory20CreateGlobalVariableENS_12DIDescriptorENS_9StringRefES2_S2_NS_6DIFileEjNS_6DITypeEbbPNS_14GlobalVariableE", "llvm::DIFactory::CreateGlobalVariable(llvm::DIDescriptor, llvm::StringRef, llvm::StringRef, llvm::StringRef, llvm::DIFile, unsigned int, llvm::DIType, bool, bool, llvm::GlobalVariable*)"}, + {"_ZN4llvm9DIFactory20CreateGlobalVariableENS_12DIDescriptorENS_9StringRefES2_S2_NS_6DIFileEjNS_6DITypeEbbPNS_8ConstantE", "llvm::DIFactory::CreateGlobalVariable(llvm::DIDescriptor, llvm::StringRef, llvm::StringRef, llvm::StringRef, llvm::DIFile, unsigned int, llvm::DIType, bool, bool, llvm::Constant*)"}, + {"_ZN4llvm27getOrInsertFnSpecificMDNodeERNS_6ModuleENS_9StringRefE", "llvm::getOrInsertFnSpecificMDNode(llvm::Module&, llvm::StringRef)"}, + {"_ZN4llvm19getFnSpecificMDNodeERKNS_6ModuleENS_9StringRefE", "llvm::getFnSpecificMDNode(llvm::Module const&, llvm::StringRef)"}, + {"_ZN4llvm9DIFactory14CreateVariableEjNS_12DIDescriptorENS_9StringRefENS_6DIFileEjNS_6DITypeEbj", "llvm::DIFactory::CreateVariable(unsigned int, llvm::DIDescriptor, llvm::StringRef, llvm::DIFile, unsigned int, llvm::DIType, bool, unsigned int)"}, + {"_ZN4llvm15getDISubprogramEPKNS_6MDNodeE", "llvm::getDISubprogram(llvm::MDNode const*)"}, + {"_ZN4llvm9DIFactory21CreateComplexVariableEjNS_12DIDescriptorENS_9StringRefENS_6DIFileEjNS_6DITypeEPKPNS_5ValueEj", "llvm::DIFactory::CreateComplexVariable(unsigned int, llvm::DIDescriptor, llvm::StringRef, llvm::DIFile, unsigned int, llvm::DIType, llvm::Value* const*, unsigned int)"}, + {"_ZN4llvm9DIFactory18CreateLexicalBlockENS_12DIDescriptorENS_6DIFileEjj", "llvm::DIFactory::CreateLexicalBlock(llvm::DIDescriptor, llvm::DIFile, unsigned int, unsigned int)"}, + {"_ZN4llvm9DIFactory15CreateNameSpaceENS_12DIDescriptorENS_9StringRefENS_6DIFileEj", "llvm::DIFactory::CreateNameSpace(llvm::DIDescriptor, llvm::StringRef, llvm::DIFile, unsigned int)"}, + {"_ZN4llvm9DIFactory14CreateLocationEjjNS_7DIScopeENS_10DILocationE", "llvm::DIFactory::CreateLocation(unsigned int, unsigned int, llvm::DIScope, llvm::DILocation)"}, + {"_ZN4llvm9DIFactory13InsertDeclareEPNS_5ValueENS_10DIVariableEPNS_11InstructionE", "llvm::DIFactory::InsertDeclare(llvm::Value*, llvm::DIVariable, llvm::Instruction*)"}, + {"_ZN4llvm9DIFactory13InsertDeclareEPNS_5ValueENS_10DIVariableEPNS_10BasicBlockE", "llvm::DIFactory::InsertDeclare(llvm::Value*, llvm::DIVariable, llvm::BasicBlock*)"}, + {"_ZN4llvm9DIFactory23InsertDbgValueIntrinsicEPNS_5ValueEyNS_10DIVariableEPNS_11InstructionE", "llvm::DIFactory::InsertDbgValueIntrinsic(llvm::Value*, unsigned long long, llvm::DIVariable, llvm::Instruction*)"}, + {"_ZN4llvm9DIFactory23InsertDbgValueIntrinsicEPNS_5ValueEyNS_10DIVariableEPNS_10BasicBlockE", "llvm::DIFactory::InsertDbgValueIntrinsic(llvm::Value*, unsigned long long, llvm::DIVariable, llvm::BasicBlock*)"}, + {"_ZN4llvm9DIFactory10RecordTypeENS_6DITypeE", "llvm::DIFactory::RecordType(llvm::DIType)"}, + {"_ZN4llvm15DebugInfoFinder13processModuleERNS_6ModuleE", "llvm::DebugInfoFinder::processModule(llvm::Module&)"}, + {"_ZN4llvm15DebugInfoFinder14processDeclareEPNS_14DbgDeclareInstE", "llvm::DebugInfoFinder::processDeclare(llvm::DbgDeclareInst*)"}, + {"_ZN4llvm15DebugInfoFinder14addCompileUnitENS_13DICompileUnitE", "llvm::DebugInfoFinder::addCompileUnit(llvm::DICompileUnit)"}, + {"_ZN4llvm15DebugInfoFinder17processSubprogramENS_12DISubprogramE", "llvm::DebugInfoFinder::processSubprogram(llvm::DISubprogram)"}, + {"_ZN4llvm15DebugInfoFinder19processLexicalBlockENS_14DILexicalBlockE", "llvm::DebugInfoFinder::processLexicalBlock(llvm::DILexicalBlock)"}, + {"_ZN4llvm15DebugInfoFinder15processLocationENS_10DILocationE", "llvm::DebugInfoFinder::processLocation(llvm::DILocation)"}, + {"_ZN4llvm15DebugInfoFinder17addGlobalVariableENS_16DIGlobalVariableE", "llvm::DebugInfoFinder::addGlobalVariable(llvm::DIGlobalVariable)"}, + {"_ZN4llvm15DebugInfoFinder11processTypeENS_6DITypeE", "llvm::DebugInfoFinder::processType(llvm::DIType)"}, + {"_ZN4llvm15DebugInfoFinder7addTypeENS_6DITypeE", "llvm::DebugInfoFinder::addType(llvm::DIType)"}, + {"_ZN4llvm15DebugInfoFinder13addSubprogramENS_12DISubprogramE", "llvm::DebugInfoFinder::addSubprogram(llvm::DISubprogram)"}, + + // {"_ZN4llvm15getLocationInfoEPKNS_5ValueERSsS3_RjS3_S3_", + // "llvm::getLocationInfo(llvm::Value const*, std::string&, std::string&, unsigned int&, std::string&, std::string&)"}, + // "llvm::getLocationInfo(llvm::Value const*, std::string&, std::string, unsigned int&, std::string, std::string)" was returned + + {"_ZN4llvm18getDICompositeTypeENS_6DITypeE", "llvm::getDICompositeType(llvm::DIType)"}, + {"_ZNK4llvm6DIType11getFilenameEv", "llvm::DIType::getFilename() const"}, + {"_ZNK4llvm6DIType14getCompileUnitEv", "llvm::DIType::getCompileUnit() const"}, + {"_ZN4llvm13DICompileUnitD1Ev", "llvm::DICompileUnit::~DICompileUnit()"}, + {"_ZNK4llvm12DISubprogram14getCompileUnitEv", "llvm::DISubprogram::getCompileUnit() const"}, + {"_ZN4llvm15DICompositeTypeD1Ev", "llvm::DICompositeType::~DICompositeType()"}, + {"_ZNK4llvm16DIGlobalVariable14getCompileUnitEv", "llvm::DIGlobalVariable::getCompileUnit() const"}, + {"_ZN4llvm6DITypeD1Ev", "llvm::DIType::~DIType()"}, + {"_ZNK4llvm10DIVariable14getCompileUnitEv", "llvm::DIVariable::getCompileUnit() const"}, + {"_ZNK4llvm11DINameSpace14getCompileUnitEv", "llvm::DINameSpace::getCompileUnit() const"}, + {"_ZNK4llvm6DIType7isValidEv", "llvm::DIType::isValid() const"}, + {"_ZN4llvm13DIDerivedTypeD1Ev", "llvm::DIDerivedType::~DIDerivedType()"}, + {"_ZNK4llvm14DILexicalBlock11getFilenameEv", "llvm::DILexicalBlock::getFilename() const"}, + {"_ZN4llvm14DILexicalBlockD1Ev", "llvm::DILexicalBlock::~DILexicalBlock()"}, + {"_ZNK4llvm12DISubprogram11getFilenameEv", "llvm::DISubprogram::getFilename() const"}, + {"_ZNK4llvm11DINameSpace11getFilenameEv", "llvm::DINameSpace::getFilename() const"}, + {"_ZN4llvm11DINameSpaceD1Ev", "llvm::DINameSpace::~DINameSpace()"}, + {"_ZN4llvm6DIFileD1Ev", "llvm::DIFile::~DIFile()"}, + {"_ZNK4llvm14DILexicalBlock12getDirectoryEv", "llvm::DILexicalBlock::getDirectory() const"}, + {"_ZNK4llvm12DISubprogram12getDirectoryEv", "llvm::DISubprogram::getDirectory() const"}, + {"_ZNK4llvm11DINameSpace12getDirectoryEv", "llvm::DINameSpace::getDirectory() const"}, + {"_ZNK4llvm6DIType12getDirectoryEv", "llvm::DIType::getDirectory() const"}, + {"_ZN4llvm11DIBasicTypeD1Ev", "llvm::DIBasicType::~DIBasicType()"}, + {"_ZN4llvm6DITypeD0Ev", "llvm::DIType::~DIType()"}, + + // {"_ZN4llvm8CallInstC2IPPNS_5ValueEEES3_T_S5_RKNS_5TwineEPNS_10BasicBlockE", + // "llvm::CallInst::CallInst(llvm::Value*, llvm::Value**, llvm::Value**, llvm::Twine const&, llvm::BasicBlock*)"}, + // got error + + + // {"_ZN4llvm8CallInstC2IPPNS_5ValueEEES3_T_S5_RKNS_5TwineEPNS_11InstructionE", + // "llvm::CallInst::CallInst(llvm::Value*, llvm::Value**, llvm::Value**, llvm::Twine const&, llvm::Instruction*)"}, + // got error + + {"_ZN4llvm15DICompositeTypeD0Ev", "llvm::DICompositeType::~DICompositeType()"}, + {"_ZN4llvm13DIDerivedTypeD0Ev", "llvm::DIDerivedType::~DIDerivedType()"}, + {"_ZN4llvm11DIBasicTypeD0Ev", "llvm::DIBasicType::~DIBasicType()"}, + {"_ZN4llvm6DIFileD0Ev", "llvm::DIFile::~DIFile()"}, + {"_ZN4llvm11DINameSpaceD0Ev", "llvm::DINameSpace::~DINameSpace()"}, + {"_ZN4llvm13DICompileUnitD0Ev", "llvm::DICompileUnit::~DICompileUnit()"}, + {"_ZN4llvm14DILexicalBlockD0Ev", "llvm::DILexicalBlock::~DILexicalBlock()"}, + {"_ZNK4llvm12DIDescriptor10getFieldAsINS_15DICompositeTypeEEET_j", "llvm::DICompositeType llvm::DIDescriptor::getFieldAs(unsigned int) const"}, + {"_ZN4llvm21initializeIVUsersPassERNS_12PassRegistryE", "llvm::initializeIVUsersPass(llvm::PassRegistry&)"}, + {"_ZN4llvm17createIVUsersPassEv", "llvm::createIVUsersPass()"}, + {"_ZN4llvm7IVUsersC1Ev", "llvm::IVUsers::IVUsers()"}, + {"_ZN4llvm7IVUsers21AddUsersIfInterestingEPNS_11InstructionE", "llvm::IVUsers::AddUsersIfInteresting(llvm::Instruction*)"}, + {"_Z13isInterestingPKN4llvm4SCEVEPKNS_11InstructionEPKNS_4LoopEPNS_15ScalarEvolutionE", "isInteresting(llvm::SCEV const*, llvm::Instruction const*, llvm::Loop const*, llvm::ScalarEvolution*)"}, + {"_ZN4llvm7IVUsers7AddUserEPNS_11InstructionEPNS_5ValueE", "llvm::IVUsers::AddUser(llvm::Instruction*, llvm::Value*)"}, + {"_ZN4llvm7IVUsersC2Ev", "llvm::IVUsers::IVUsers()"}, + {"_ZNK4llvm7IVUsers16getAnalysisUsageERNS_13AnalysisUsageE", "llvm::IVUsers::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN4llvm7IVUsers9runOnLoopEPNS_4LoopERNS_13LPPassManagerE", "llvm::IVUsers::runOnLoop(llvm::Loop*, llvm::LPPassManager&)"}, + {"_ZNK4llvm7IVUsers5printERNS_11raw_ostreamEPKNS_6ModuleE", "llvm::IVUsers::print(llvm::raw_ostream&, llvm::Module const*) const"}, + {"_ZNK4llvm7IVUsers18getReplacementExprERKNS_11IVStrideUseE", "llvm::IVUsers::getReplacementExpr(llvm::IVStrideUse const&) const"}, + {"_ZNK4llvm7IVUsers4dumpEv", "llvm::IVUsers::dump() const"}, + {"_ZN4llvm7IVUsers13releaseMemoryEv", "llvm::IVUsers::releaseMemory()"}, + {"_ZNK4llvm7IVUsers7getExprERKNS_11IVStrideUseE", "llvm::IVUsers::getExpr(llvm::IVStrideUse const&) const"}, + {"_ZNK4llvm7IVUsers9getStrideERKNS_11IVStrideUseEPKNS_4LoopE", "llvm::IVUsers::getStride(llvm::IVStrideUse const&, llvm::Loop const*) const"}, + {"_Z17findAddRecForLoopPKN4llvm4SCEVEPKNS_4LoopE", "findAddRecForLoop(llvm::SCEV const*, llvm::Loop const*)"}, + {"_ZN4llvm11IVStrideUse18transformToPostIncEPKNS_4LoopE", "llvm::IVStrideUse::transformToPostInc(llvm::Loop const*)"}, + {"_ZN4llvm11IVStrideUse7deletedEv", "llvm::IVStrideUse::deleted()"}, + {"_ZN4llvm11IVStrideUseD1Ev", "llvm::IVStrideUse::~IVStrideUse()"}, + {"_ZN4llvm11IVStrideUseD0Ev", "llvm::IVStrideUse::~IVStrideUse()"}, + {"_ZN4llvm7IVUsersD1Ev", "llvm::IVUsers::~IVUsers()"}, + {"_ZN4llvm7IVUsersD0Ev", "llvm::IVUsers::~IVUsers()"}, + {"_ZN4llvm15callDefaultCtorINS_7IVUsersEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor()"}, + {"_ZN4llvm11callIsSmallEPKNS_8FunctionE", "llvm::callIsSmall(llvm::Function const*)"}, + {"_ZN4llvm11CodeMetrics17analyzeBasicBlockEPKNS_10BasicBlockE", "llvm::CodeMetrics::analyzeBasicBlock(llvm::BasicBlock const*)"}, + {"_ZN4llvm11CodeMetrics29CountCodeReductionForConstantEPNS_5ValueE", "llvm::CodeMetrics::CountCodeReductionForConstant(llvm::Value*)"}, + {"_ZN4llvm11CodeMetrics27CountCodeReductionForAllocaEPNS_5ValueE", "llvm::CodeMetrics::CountCodeReductionForAlloca(llvm::Value*)"}, + {"_ZN4llvm11CodeMetrics15analyzeFunctionEPNS_8FunctionE", "llvm::CodeMetrics::analyzeFunction(llvm::Function*)"}, + {"_ZN4llvm18InlineCostAnalyzer12FunctionInfo15analyzeFunctionEPNS_8FunctionE", "llvm::InlineCostAnalyzer::FunctionInfo::analyzeFunction(llvm::Function*)"}, + {"_ZN4llvm18InlineCostAnalyzer12FunctionInfo11NeverInlineEv", "llvm::InlineCostAnalyzer::FunctionInfo::NeverInline()"}, + {"_ZN4llvm18InlineCostAnalyzer22getSpecializationBonusEPNS_8FunctionERNS_15SmallVectorImplIjEE", "llvm::InlineCostAnalyzer::getSpecializationBonus(llvm::Function*, llvm::SmallVectorImpl&)"}, + {"_ZN4llvm18InlineCostAnalyzer21CountBonusForConstantEPNS_5ValueEPNS_8ConstantE", "llvm::InlineCostAnalyzer::CountBonusForConstant(llvm::Value*, llvm::Constant*)"}, + {"_ZN4llvm18InlineCostAnalyzer21ConstantFunctionBonusENS_8CallSiteEPNS_8ConstantE", "llvm::InlineCostAnalyzer::ConstantFunctionBonus(llvm::CallSite, llvm::Constant*)"}, + {"_ZN4llvm18InlineCostAnalyzer13getInlineSizeENS_8CallSiteEPNS_8FunctionE", "llvm::InlineCostAnalyzer::getInlineSize(llvm::CallSite, llvm::Function*)"}, + {"_ZN4llvm18InlineCostAnalyzer16getInlineBonusesENS_8CallSiteEPNS_8FunctionE", "llvm::InlineCostAnalyzer::getInlineBonuses(llvm::CallSite, llvm::Function*)"}, + + // {"_ZN4llvm18InlineCostAnalyzer13getInlineCostENS_8CallSiteERNS_11SmallPtrSetIPKNS_8FunctionELj16EEE", + // "llvm::InlineCostAnalyzer::getInlineCost(llvm::CallSite, llvm::SmallPtrSet&)"}, + // "llvm::InlineCostAnalyzer::getInlineCost(llvm::CallSite, llvm::SmallPtrSet&)" was returned + + + // {"_ZN4llvm18InlineCostAnalyzer13getInlineCostENS_8CallSiteEPNS_8FunctionERNS_11SmallPtrSetIPKS2_Lj16EEE", + // "llvm::InlineCostAnalyzer::getInlineCost(llvm::CallSite, llvm::Function*, llvm::SmallPtrSet&)"}, + // "llvm::InlineCostAnalyzer::getInlineCost(llvm::CallSite, llvm::Function*, llvm::SmallPtrSet&)" was returned + + {"_ZN4llvm18InlineCostAnalyzer21getSpecializationCostEPNS_8FunctionERNS_15SmallVectorImplIjEE", "llvm::InlineCostAnalyzer::getSpecializationCost(llvm::Function*, llvm::SmallVectorImpl&)"}, + {"_ZN4llvm18InlineCostAnalyzer20getInlineFudgeFactorENS_8CallSiteE", "llvm::InlineCostAnalyzer::getInlineFudgeFactor(llvm::CallSite)"}, + {"_ZN4llvm18InlineCostAnalyzer18growCachedCostInfoEPNS_8FunctionES2_", "llvm::InlineCostAnalyzer::growCachedCostInfo(llvm::Function*, llvm::Function*)"}, + {"_ZN4llvm18InlineCostAnalyzer5clearEv", "llvm::InlineCostAnalyzer::clear()"}, + {"_ZNSt6vectorIN4llvm18InlineCostAnalyzer7ArgInfoESaIS2_EE7reserveEm", "std::vector>::reserve(unsigned long)"}, + {"_ZN4llvm8DenseMapINS_18ValueMapCallbackVHIPKNS_8FunctionENS_18InlineCostAnalyzer12FunctionInfoENS_14ValueMapConfigIS4_EENS_12DenseMapInfoIS6_EEEES6_NS9_ISB_EESA_E5clearEv", "llvm::DenseMap, llvm::DenseMapInfo>, llvm::InlineCostAnalyzer::FunctionInfo, llvm::DenseMapInfo, llvm::DenseMapInfo>>, llvm::DenseMapInfo>::clear()"}, + {"_ZN4llvm8DenseMapINS_18ValueMapCallbackVHIPKNS_8FunctionENS_18InlineCostAnalyzer12FunctionInfoENS_14ValueMapConfigIS4_EENS_12DenseMapInfoIS6_EEEES6_NS9_ISB_EESA_E16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>, llvm::InlineCostAnalyzer::FunctionInfo, llvm::DenseMapInfo, llvm::DenseMapInfo>>, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZNSt6vectorIN4llvm18InlineCostAnalyzer7ArgInfoESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::InlineCostAnalyzer::ArgInfo const&)"}, + {"_ZN4llvm8DenseMapIPKNS_10BasicBlockEjNS_12DenseMapInfoIS3_EENS4_IjEEE16InsertIntoBucketERKS3_RKjPSt4pairIS3_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::BasicBlock const* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_10BasicBlockEjNS_12DenseMapInfoIS3_EENS4_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm15SimplifyAddInstEPNS_5ValueES1_bbPKNS_10DataLayoutEPKNS_13DominatorTreeE", "llvm::SimplifyAddInst(llvm::Value*, llvm::Value*, bool, bool, llvm::DataLayout const*, llvm::DominatorTree const*)"}, + {"_Z15SimplifyAddInstPN4llvm5ValueES1_bbPKNS_10DataLayoutEPKNS_13DominatorTreeEj", "SimplifyAddInst(llvm::Value*, llvm::Value*, bool, bool, llvm::DataLayout const*, llvm::DominatorTree const*, unsigned int)"}, + {"_ZN4llvm15SimplifySubInstEPNS_5ValueES1_bbPKNS_10DataLayoutEPKNS_13DominatorTreeE", "llvm::SimplifySubInst(llvm::Value*, llvm::Value*, bool, bool, llvm::DataLayout const*, llvm::DominatorTree const*)"}, + {"_Z15SimplifySubInstPN4llvm5ValueES1_bbPKNS_10DataLayoutEPKNS_13DominatorTreeEj", "SimplifySubInst(llvm::Value*, llvm::Value*, bool, bool, llvm::DataLayout const*, llvm::DominatorTree const*, unsigned int)"}, + {"_ZN4llvm15SimplifyMulInstEPNS_5ValueES1_PKNS_10DataLayoutEPKNS_13DominatorTreeE", "llvm::SimplifyMulInst(llvm::Value*, llvm::Value*, llvm::DataLayout const*, llvm::DominatorTree const*)"}, + {"_Z15SimplifyMulInstPN4llvm5ValueES1_PKNS_10DataLayoutEPKNS_13DominatorTreeEj", "SimplifyMulInst(llvm::Value*, llvm::Value*, llvm::DataLayout const*, llvm::DominatorTree const*, unsigned int)"}, + {"_ZN4llvm16SimplifySDivInstEPNS_5ValueES1_PKNS_10DataLayoutEPKNS_13DominatorTreeE", "llvm::SimplifySDivInst(llvm::Value*, llvm::Value*, llvm::DataLayout const*, llvm::DominatorTree const*)"}, + {"_ZN4llvm16SimplifyUDivInstEPNS_5ValueES1_PKNS_10DataLayoutEPKNS_13DominatorTreeE", "llvm::SimplifyUDivInst(llvm::Value*, llvm::Value*, llvm::DataLayout const*, llvm::DominatorTree const*)"}, + {"_ZN4llvm16SimplifyFDivInstEPNS_5ValueES1_PKNS_10DataLayoutEPKNS_13DominatorTreeE", "llvm::SimplifyFDivInst(llvm::Value*, llvm::Value*, llvm::DataLayout const*, llvm::DominatorTree const*)"}, + {"_ZN4llvm15SimplifyShlInstEPNS_5ValueES1_bbPKNS_10DataLayoutEPKNS_13DominatorTreeE", "llvm::SimplifyShlInst(llvm::Value*, llvm::Value*, bool, bool, llvm::DataLayout const*, llvm::DominatorTree const*)"}, + {"_Z15SimplifyShlInstPN4llvm5ValueES1_bbPKNS_10DataLayoutEPKNS_13DominatorTreeEj", "SimplifyShlInst(llvm::Value*, llvm::Value*, bool, bool, llvm::DataLayout const*, llvm::DominatorTree const*, unsigned int)"}, + {"_ZN4llvm16SimplifyLShrInstEPNS_5ValueES1_bPKNS_10DataLayoutEPKNS_13DominatorTreeE", "llvm::SimplifyLShrInst(llvm::Value*, llvm::Value*, bool, llvm::DataLayout const*, llvm::DominatorTree const*)"}, + {"_Z16SimplifyLShrInstPN4llvm5ValueES1_bPKNS_10DataLayoutEPKNS_13DominatorTreeEj", "SimplifyLShrInst(llvm::Value*, llvm::Value*, bool, llvm::DataLayout const*, llvm::DominatorTree const*, unsigned int)"}, + {"_ZN4llvm16SimplifyAShrInstEPNS_5ValueES1_bPKNS_10DataLayoutEPKNS_13DominatorTreeE", "llvm::SimplifyAShrInst(llvm::Value*, llvm::Value*, bool, llvm::DataLayout const*, llvm::DominatorTree const*)"}, + {"_Z16SimplifyAShrInstPN4llvm5ValueES1_bPKNS_10DataLayoutEPKNS_13DominatorTreeEj", "SimplifyAShrInst(llvm::Value*, llvm::Value*, bool, llvm::DataLayout const*, llvm::DominatorTree const*, unsigned int)"}, + {"_ZN4llvm15SimplifyAndInstEPNS_5ValueES1_PKNS_10DataLayoutEPKNS_13DominatorTreeE", "llvm::SimplifyAndInst(llvm::Value*, llvm::Value*, llvm::DataLayout const*, llvm::DominatorTree const*)"}, + {"_Z15SimplifyAndInstPN4llvm5ValueES1_PKNS_10DataLayoutEPKNS_13DominatorTreeEj", "SimplifyAndInst(llvm::Value*, llvm::Value*, llvm::DataLayout const*, llvm::DominatorTree const*, unsigned int)"}, + {"_ZN4llvm14SimplifyOrInstEPNS_5ValueES1_PKNS_10DataLayoutEPKNS_13DominatorTreeE", "llvm::SimplifyOrInst(llvm::Value*, llvm::Value*, llvm::DataLayout const*, llvm::DominatorTree const*)"}, + {"_Z14SimplifyOrInstPN4llvm5ValueES1_PKNS_10DataLayoutEPKNS_13DominatorTreeEj", "SimplifyOrInst(llvm::Value*, llvm::Value*, llvm::DataLayout const*, llvm::DominatorTree const*, unsigned int)"}, + {"_ZN4llvm15SimplifyXorInstEPNS_5ValueES1_PKNS_10DataLayoutEPKNS_13DominatorTreeE", "llvm::SimplifyXorInst(llvm::Value*, llvm::Value*, llvm::DataLayout const*, llvm::DominatorTree const*)"}, + {"_Z15SimplifyXorInstPN4llvm5ValueES1_PKNS_10DataLayoutEPKNS_13DominatorTreeEj", "SimplifyXorInst(llvm::Value*, llvm::Value*, llvm::DataLayout const*, llvm::DominatorTree const*, unsigned int)"}, + {"_ZN4llvm16SimplifyICmpInstEjPNS_5ValueES1_PKNS_10DataLayoutEPKNS_13DominatorTreeE", "llvm::SimplifyICmpInst(unsigned int, llvm::Value*, llvm::Value*, llvm::DataLayout const*, llvm::DominatorTree const*)"}, + {"_Z16SimplifyICmpInstjPN4llvm5ValueES1_PKNS_10DataLayoutEPKNS_13DominatorTreeEj", "SimplifyICmpInst(unsigned int, llvm::Value*, llvm::Value*, llvm::DataLayout const*, llvm::DominatorTree const*, unsigned int)"}, + {"_ZN4llvm16SimplifyFCmpInstEjPNS_5ValueES1_PKNS_10DataLayoutEPKNS_13DominatorTreeE", "llvm::SimplifyFCmpInst(unsigned int, llvm::Value*, llvm::Value*, llvm::DataLayout const*, llvm::DominatorTree const*)"}, + {"_Z16SimplifyFCmpInstjPN4llvm5ValueES1_PKNS_10DataLayoutEPKNS_13DominatorTreeEj", "SimplifyFCmpInst(unsigned int, llvm::Value*, llvm::Value*, llvm::DataLayout const*, llvm::DominatorTree const*, unsigned int)"}, + {"_ZN4llvm18SimplifySelectInstEPNS_5ValueES1_S1_PKNS_10DataLayoutEPKNS_13DominatorTreeE", "llvm::SimplifySelectInst(llvm::Value*, llvm::Value*, llvm::Value*, llvm::DataLayout const*, llvm::DominatorTree const*)"}, + {"_ZN4llvm15SimplifyGEPInstEPKPNS_5ValueEjPKNS_10DataLayoutEPKNS_13DominatorTreeE", "llvm::SimplifyGEPInst(llvm::Value* const*, unsigned int, llvm::DataLayout const*, llvm::DominatorTree const*)"}, + {"_ZN4llvm13SimplifyBinOpEjPNS_5ValueES1_PKNS_10DataLayoutEPKNS_13DominatorTreeE", "llvm::SimplifyBinOp(unsigned int, llvm::Value*, llvm::Value*, llvm::DataLayout const*, llvm::DominatorTree const*)"}, + {"_Z13SimplifyBinOpjPN4llvm5ValueES1_PKNS_10DataLayoutEPKNS_13DominatorTreeEj", "SimplifyBinOp(unsigned int, llvm::Value*, llvm::Value*, llvm::DataLayout const*, llvm::DominatorTree const*, unsigned int)"}, + {"_ZN4llvm15SimplifyCmpInstEjPNS_5ValueES1_PKNS_10DataLayoutEPKNS_13DominatorTreeE", "llvm::SimplifyCmpInst(unsigned int, llvm::Value*, llvm::Value*, llvm::DataLayout const*, llvm::DominatorTree const*)"}, + {"_ZN4llvm19SimplifyInstructionEPNS_11InstructionEPKNS_10DataLayoutEPKNS_13DominatorTreeE", "llvm::SimplifyInstruction(llvm::Instruction*, llvm::DataLayout const*, llvm::DominatorTree const*)"}, + {"_ZN4llvm25ReplaceAndSimplifyAllUsesEPNS_11InstructionEPNS_5ValueEPKNS_10DataLayoutEPKNS_13DominatorTreeE", "llvm::ReplaceAndSimplifyAllUses(llvm::Instruction*, llvm::Value*, llvm::DataLayout const*, llvm::DominatorTree const*)"}, + {"_Z24SimplifyAssociativeBinOpjPN4llvm5ValueES1_PKNS_10DataLayoutEPKNS_13DominatorTreeEj", "SimplifyAssociativeBinOp(unsigned int, llvm::Value*, llvm::Value*, llvm::DataLayout const*, llvm::DominatorTree const*, unsigned int)"}, + {"_Z21ThreadBinOpOverSelectjPN4llvm5ValueES1_PKNS_10DataLayoutEPKNS_13DominatorTreeEj", "ThreadBinOpOverSelect(unsigned int, llvm::Value*, llvm::Value*, llvm::DataLayout const*, llvm::DominatorTree const*, unsigned int)"}, + {"_Z18ThreadBinOpOverPHIjPN4llvm5ValueES1_PKNS_10DataLayoutEPKNS_13DominatorTreeEj", "ThreadBinOpOverPHI(unsigned int, llvm::Value*, llvm::Value*, llvm::DataLayout const*, llvm::DominatorTree const*, unsigned int)"}, + {"_Z19ThreadCmpOverSelectN4llvm7CmpInst9PredicateEPNS_5ValueES3_PKNS_10DataLayoutEPKNS_13DominatorTreeEj", "ThreadCmpOverSelect(llvm::CmpInst::Predicate, llvm::Value*, llvm::Value*, llvm::DataLayout const*, llvm::DominatorTree const*, unsigned int)"}, + {"_Z16ThreadCmpOverPHIN4llvm7CmpInst9PredicateEPNS_5ValueES3_PKNS_10DataLayoutEPKNS_13DominatorTreeEj", "ThreadCmpOverPHI(llvm::CmpInst::Predicate, llvm::Value*, llvm::Value*, llvm::DataLayout const*, llvm::DominatorTree const*, unsigned int)"}, + {"_Z14FactorizeBinOpjPN4llvm5ValueES1_jPKNS_10DataLayoutEPKNS_13DominatorTreeEj", "FactorizeBinOp(unsigned int, llvm::Value*, llvm::Value*, unsigned int, llvm::DataLayout const*, llvm::DominatorTree const*, unsigned int)"}, + {"_Z11ExpandBinOpjPN4llvm5ValueES1_jPKNS_10DataLayoutEPKNS_13DominatorTreeEj", "ExpandBinOp(unsigned int, llvm::Value*, llvm::Value*, unsigned int, llvm::DataLayout const*, llvm::DominatorTree const*, unsigned int)"}, + {"_Z13SimplifyShiftjPN4llvm5ValueES1_PKNS_10DataLayoutEPKNS_13DominatorTreeEj", "SimplifyShift(unsigned int, llvm::Value*, llvm::Value*, llvm::DataLayout const*, llvm::DominatorTree const*, unsigned int)"}, + {"_Z11SimplifyDivN4llvm11Instruction9BinaryOpsEPNS_5ValueES3_PKNS_10DataLayoutEPKNS_13DominatorTreeEj", "SimplifyDiv(llvm::Instruction::BinaryOps, llvm::Value*, llvm::Value*, llvm::DataLayout const*, llvm::DominatorTree const*, unsigned int)"}, + + // {"_ZN4llvm12PatternMatch9not_matchINS0_14specificval_tyEE5matchINS_5ValueEEEbPT_", + // "bool llvm::PatternMatch::not_match::match(llvm::Value*)"}, + // "bool llvm::PatternMatch::not_match::match(llvm::PatternMatch::specificval_ty*)" was returned + + + // {"_ZN4llvm12PatternMatch11cst_pred_tyINS0_11is_all_onesEE5matchINS_5ValueEEEbPT_", + // "bool llvm::PatternMatch::cst_pred_ty::match(llvm::Value*)"}, + // "bool llvm::PatternMatch::cst_pred_ty::match(llvm::PatternMatch::is_all_ones*)" was returned + + + // {"_ZN4llvm12PatternMatch14BinaryOp_matchINS0_14specificval_tyENS0_11cst_pred_tyINS0_6is_oneEEELj20EE5matchINS_5ValueEEEbPT_", + // "bool llvm::PatternMatch::BinaryOp_match, 20u>::match(llvm::Value*)"}, + // "bool llvm::PatternMatch::BinaryOp_match, 20>::match(llvm::PatternMatch::specificval_ty*)" was returned + + + // {"_ZN4llvm12PatternMatch11cst_pred_tyINS0_6is_oneEE5matchINS_8ConstantEEEbPT_", + // "bool llvm::PatternMatch::cst_pred_ty::match(llvm::Constant*)"}, + // "bool llvm::PatternMatch::cst_pred_ty::match(llvm::PatternMatch::is_one*)" was returned + + + // {"_ZN4llvm12PatternMatch14BinaryOp_matchINS0_14specificval_tyENS0_17constantint_matchILx2EEELj12EE5matchINS_5ValueEEEbPT_", + // "bool llvm::PatternMatch::BinaryOp_match, 12u>::match(llvm::Value*)"}, + // "bool llvm::PatternMatch::BinaryOp_match, 12>::match(llvm::PatternMatch::specificval_ty*)" was returned + + {"_ZN4llvm27initializeLazyValueInfoPassERNS_12PassRegistryE", "llvm::initializeLazyValueInfoPass(llvm::PassRegistry&)"}, + {"_ZN4llvm23createLazyValueInfoPassEv", "llvm::createLazyValueInfoPass()"}, + {"_ZN4llvm13LazyValueInfo13runOnFunctionERNS_8FunctionE", "llvm::LazyValueInfo::runOnFunction(llvm::Function&)"}, + {"_Z8getCacheRPv", "getCache(void*&)"}, + {"_ZN4llvm13LazyValueInfo13releaseMemoryEv", "llvm::LazyValueInfo::releaseMemory()"}, + {"_ZN4llvm13LazyValueInfo11getConstantEPNS_5ValueEPNS_10BasicBlockE", "llvm::LazyValueInfo::getConstant(llvm::Value*, llvm::BasicBlock*)"}, + {"_ZN4llvm13LazyValueInfo17getConstantOnEdgeEPNS_5ValueEPNS_10BasicBlockES4_", "llvm::LazyValueInfo::getConstantOnEdge(llvm::Value*, llvm::BasicBlock*, llvm::BasicBlock*)"}, + {"_ZN4llvm13LazyValueInfo18getPredicateOnEdgeEjPNS_5ValueEPNS_8ConstantEPNS_10BasicBlockES6_", "llvm::LazyValueInfo::getPredicateOnEdge(unsigned int, llvm::Value*, llvm::Constant*, llvm::BasicBlock*, llvm::BasicBlock*)"}, + {"_ZN4llvm13LazyValueInfo10threadEdgeEPNS_10BasicBlockES2_S2_", "llvm::LazyValueInfo::threadEdge(llvm::BasicBlock*, llvm::BasicBlock*, llvm::BasicBlock*)"}, + {"_ZN4llvm13LazyValueInfo10eraseBlockEPNS_10BasicBlockE", "llvm::LazyValueInfo::eraseBlock(llvm::BasicBlock*)"}, + {"_ZN12_GLOBAL__N_114LVIValueHandleD1Ev", "(anonymous namespace)::LVIValueHandle::~LVIValueHandle()"}, + {"_ZN12_GLOBAL__N_114LVIValueHandleD0Ev", "(anonymous namespace)::LVIValueHandle::~LVIValueHandle()"}, + {"_ZN12_GLOBAL__N_114LVIValueHandle7deletedEv", "(anonymous namespace)::LVIValueHandle::deleted()"}, + {"_ZN12_GLOBAL__N_114LVIValueHandle19allUsesReplacedWithEPN4llvm5ValueE", "(anonymous namespace)::LVIValueHandle::allUsesReplacedWith(llvm::Value*)"}, + + // {"_ZNK4llvm8DenseMapIN12_GLOBAL__N_114LVIValueHandleESt3mapINS_11AssertingVHINS_10BasicBlockEEENS1_13LVILatticeValESt4lessIS6_ESaISt4pairIKS6_S7_EEENS_12DenseMapInfoIS2_EENSF_ISE_EEE15LookupBucketForERKS2_RPSA_IS2_SE_E", + // "llvm::DenseMap<(anonymous namespace)::LVIValueHandle, std::map, (anonymous namespace)::LVILatticeVal, std::less>, std::allocator const, (anonymous namespace)::LVILatticeVal>>>, llvm::DenseMapInfo<(anonymous namespace)::LVIValueHandle>, llvm::DenseMapInfo, (anonymous namespace)::LVILatticeVal, std::less>, std::allocator const, (anonymous namespace)::LVILatticeVal>>>>>::LookupBucketFor((anonymous namespace)::LVIValueHandle const&, std::pair<(anonymous namespace)::LVIValueHandle, std::map, (anonymous namespace)::LVILatticeVal, std::less>, std::allocator const, (anonymous namespace)::LVILatticeVal>>>>*&) const"}, + // "llvm::DenseMap<(anonymous namespace)::LVIValueHandle, std::map, (anonymous namespace)::LVILatticeVal, std::less>, std::allocator const, (anonymous namespace)::LVILatticeVal>>>, llvm::DenseMapInfo<(anonymous namespace)::LVIValueHandle>, llvm::DenseMapInfo, (anonymous namespace)::LVILatticeVal, std::less>, std::allocator const, (anonymous namespace)::LVILatticeVal>>>>>::LookupBucketFor((anonymous namespace)::LVIValueHandle const&, std::pair*&<(anonymous namespace)::LVIValueHandle, std::map, (anonymous namespace)::LVILatticeVal, std::less>, std::allocator const, (anonymous namespace)::LVILatticeVal>>>>) const" was returned + + {"_ZNSt8_Rb_treeIN4llvm11AssertingVHINS0_10BasicBlockEEESt4pairIKS3_N12_GLOBAL__N_113LVILatticeValEESt10_Select1stIS8_ESt4lessIS3_ESaIS8_EE8_M_eraseEPSt13_Rb_tree_nodeIS8_E", "std::_Rb_tree, std::pair const, (anonymous namespace)::LVILatticeVal>, std::_Select1st const, (anonymous namespace)::LVILatticeVal>>, std::less>, std::allocator const, (anonymous namespace)::LVILatticeVal>>>::_M_erase(std::_Rb_tree_node const, (anonymous namespace)::LVILatticeVal>>*)"}, + {"_ZN4llvm8DenseMapIN12_GLOBAL__N_114LVIValueHandleESt3mapINS_11AssertingVHINS_10BasicBlockEEENS1_13LVILatticeValESt4lessIS6_ESaISt4pairIKS6_S7_EEENS_12DenseMapInfoIS2_EENSF_ISE_EEEixERKS2_", "llvm::DenseMap<(anonymous namespace)::LVIValueHandle, std::map, (anonymous namespace)::LVILatticeVal, std::less>, std::allocator const, (anonymous namespace)::LVILatticeVal>>>, llvm::DenseMapInfo<(anonymous namespace)::LVIValueHandle>, llvm::DenseMapInfo, (anonymous namespace)::LVILatticeVal, std::less>, std::allocator const, (anonymous namespace)::LVILatticeVal>>>>>::operator[]((anonymous namespace)::LVIValueHandle const&)"}, + {"_ZNSt8_Rb_treeIN4llvm11AssertingVHINS0_10BasicBlockEEESt4pairIKS3_N12_GLOBAL__N_113LVILatticeValEESt10_Select1stIS8_ESt4lessIS3_ESaIS8_EE7_M_copyEPKSt13_Rb_tree_nodeIS8_EPSG_", "std::_Rb_tree, std::pair const, (anonymous namespace)::LVILatticeVal>, std::_Select1st const, (anonymous namespace)::LVILatticeVal>>, std::less>, std::allocator const, (anonymous namespace)::LVILatticeVal>>>::_M_copy(std::_Rb_tree_node const, (anonymous namespace)::LVILatticeVal>> const*, std::_Rb_tree_node const, (anonymous namespace)::LVILatticeVal>>*)"}, + {"_ZNSt8_Rb_treeIN4llvm11AssertingVHINS0_10BasicBlockEEESt4pairIKS3_N12_GLOBAL__N_113LVILatticeValEESt10_Select1stIS8_ESt4lessIS3_ESaIS8_EE14_M_create_nodeERKS8_", "std::_Rb_tree, std::pair const, (anonymous namespace)::LVILatticeVal>, std::_Select1st const, (anonymous namespace)::LVILatticeVal>>, std::less>, std::allocator const, (anonymous namespace)::LVILatticeVal>>>::_M_create_node(std::pair const, (anonymous namespace)::LVILatticeVal> const&)"}, + {"_ZN12_GLOBAL__N_118LazyValueInfoCache12getEdgeValueEPN4llvm5ValueEPNS1_10BasicBlockES5_RNS_13LVILatticeValE", "(anonymous namespace)::LazyValueInfoCache::getEdgeValue(llvm::Value*, llvm::BasicBlock*, llvm::BasicBlock*, (anonymous namespace)::LVILatticeVal&)"}, + {"_ZN12_GLOBAL__N_118LazyValueInfoCache5solveEv", "(anonymous namespace)::LazyValueInfoCache::solve()"}, + {"_ZNSt3mapIN4llvm11AssertingVHINS0_10BasicBlockEEEN12_GLOBAL__N_113LVILatticeValESt4lessIS3_ESaISt4pairIKS3_S5_EEEixERS9_", "std::map, (anonymous namespace)::LVILatticeVal, std::less>, std::allocator const, (anonymous namespace)::LVILatticeVal>>>::operator[](llvm::AssertingVH const&)"}, + {"_ZN12_GLOBAL__N_118LazyValueInfoCache13hasBlockValueEPN4llvm5ValueEPNS1_10BasicBlockE", "(anonymous namespace)::LazyValueInfoCache::hasBlockValue(llvm::Value*, llvm::BasicBlock*)"}, + {"_ZN12_GLOBAL__N_118LazyValueInfoCache13getBlockValueEPN4llvm5ValueEPNS1_10BasicBlockE", "(anonymous namespace)::LazyValueInfoCache::getBlockValue(llvm::Value*, llvm::BasicBlock*)"}, + {"_ZN12_GLOBAL__N_113LVILatticeVal17markConstantRangeEN4llvm13ConstantRangeE", "(anonymous namespace)::LVILatticeVal::markConstantRange(llvm::ConstantRange)"}, + {"_ZN12_GLOBAL__N_113LVILatticeVal3getEPN4llvm8ConstantE", "(anonymous namespace)::LVILatticeVal::get(llvm::Constant*)"}, + {"_ZN12_GLOBAL__N_113LVILatticeVal15markNotConstantEPN4llvm8ConstantE", "(anonymous namespace)::LVILatticeVal::markNotConstant(llvm::Constant*)"}, + {"_ZN12_GLOBAL__N_113LVILatticeVal7mergeInERKS0_", "(anonymous namespace)::LVILatticeVal::mergeIn((anonymous namespace)::LVILatticeVal const&)"}, + {"_ZNSt8_Rb_treeIN4llvm11AssertingVHINS0_10BasicBlockEEESt4pairIKS3_N12_GLOBAL__N_113LVILatticeValEESt10_Select1stIS8_ESt4lessIS3_ESaIS8_EE16_M_insert_uniqueERKS8_", "std::_Rb_tree, std::pair const, (anonymous namespace)::LVILatticeVal>, std::_Select1st const, (anonymous namespace)::LVILatticeVal>>, std::less>, std::allocator const, (anonymous namespace)::LVILatticeVal>>>::_M_insert_unique(std::pair const, (anonymous namespace)::LVILatticeVal> const&)"}, + {"_ZN12_GLOBAL__N_113LVILatticeVal8getRangeEN4llvm13ConstantRangeE", "(anonymous namespace)::LVILatticeVal::getRange(llvm::ConstantRange)"}, + {"_ZN4llvm13LazyValueInfoD1Ev", "llvm::LazyValueInfo::~LazyValueInfo()"}, + {"_ZN4llvm13LazyValueInfoD0Ev", "llvm::LazyValueInfo::~LazyValueInfo()"}, + {"_ZNK4llvm13LazyValueInfo16getAnalysisUsageERNS_13AnalysisUsageE", "llvm::LazyValueInfo::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + + // {"_ZNSt6vectorIPN4llvm10BasicBlockESaIS2_EE15_M_range_insertINS0_12SuccIteratorIPNS0_14TerminatorInstES1_EEEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EET_SE_St20forward_iterator_tag", + // "void std::vector>::_M_range_insert>(__gnu_cxx::__normal_iterator>>, llvm::SuccIterator, llvm::SuccIterator, std::forward_iterator_tag)"}, + // got error + + {"_ZN4llvm8DenseMapISt4pairINS_11AssertingVHINS_10BasicBlockEEEPNS_5ValueEEcNS_12DenseMapInfoIS7_EENS8_IcEEE4findERKS7_", "llvm::DenseMap, llvm::Value*>, char, llvm::DenseMapInfo, llvm::Value*>>, llvm::DenseMapInfo>::find(std::pair, llvm::Value*> const&)"}, + {"_ZN4llvm8DenseMapIPNS_5ValueEcNS_12DenseMapInfoIS2_EENS3_IcEEE6insertERKSt4pairIS2_cE", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPNS_5ValueEcNS_12DenseMapInfoIS2_EENS3_IcEEE16InsertIntoBucketERKS2_RKcPSt4pairIS2_cE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::Value* const&, char const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_5ValueEcNS_12DenseMapInfoIS2_EENS3_IcEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNSt5dequeISt4pairIPN4llvm10BasicBlockEPNS1_5ValueEESaIS6_EE9push_backERKS6_", "std::deque, std::allocator>>::push_back(std::pair const&)"}, + {"_ZNSt5dequeISt4pairIPN4llvm10BasicBlockEPNS1_5ValueEESaIS6_EE17_M_reallocate_mapEmb", "std::deque, std::allocator>>::_M_reallocate_map(unsigned long, bool)"}, + + // {"_ZN4llvm8DenseMapISt4pairINS_11AssertingVHINS_10BasicBlockEEEPNS_5ValueEEcNS_12DenseMapInfoIS7_EENS8_IcEEE6insertERKS1_IS7_cE", + // "llvm::DenseMap, llvm::Value*>, char, llvm::DenseMapInfo, llvm::Value*>>, llvm::DenseMapInfo>::insert(std::pair, llvm::Value*>, char> const&)"}, + // "llvm::DenseMap, llvm::Value*>, char, llvm::DenseMapInfo, llvm::Value*>>, llvm::DenseMapInfo>::insert(std::pair const&, llvm::Value*>, char>)" was returned + + + // {"_ZN4llvm8DenseMapISt4pairINS_11AssertingVHINS_10BasicBlockEEEPNS_5ValueEEcNS_12DenseMapInfoIS7_EENS8_IcEEE16InsertIntoBucketERKS7_RKcPS1_IS7_cE", + // "llvm::DenseMap, llvm::Value*>, char, llvm::DenseMapInfo, llvm::Value*>>, llvm::DenseMapInfo>::InsertIntoBucket(std::pair, llvm::Value*> const&, char const&, std::pair, llvm::Value*>, char>*)"}, + // "llvm::DenseMap, llvm::Value*>, char, llvm::DenseMapInfo, llvm::Value*>>, llvm::DenseMapInfo>::InsertIntoBucket(std::pair, llvm::Value*> const&, char const&, std::pair*, llvm::Value*>, char>)" was returned + + {"_ZN4llvm8DenseMapISt4pairINS_11AssertingVHINS_10BasicBlockEEEPNS_5ValueEEcNS_12DenseMapInfoIS7_EENS8_IcEEE4growEj", "llvm::DenseMap, llvm::Value*>, char, llvm::DenseMapInfo, llvm::Value*>>, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseSetISt4pairINS_11AssertingVHINS_10BasicBlockEEEPNS_5ValueEENS_12DenseMapInfoIS7_EEE5clearEv", "llvm::DenseSet, llvm::Value*>, llvm::DenseMapInfo, llvm::Value*>>>::clear()"}, + {"_ZN4llvm8DenseMapISt4pairINS_11AssertingVHINS_10BasicBlockEEEPNS_5ValueEEcNS_12DenseMapInfoIS7_EENS8_IcEEE16shrink_and_clearEv", "llvm::DenseMap, llvm::Value*>, char, llvm::DenseMapInfo, llvm::Value*>>, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZNSt11_Deque_baseISt4pairIPN4llvm10BasicBlockEPNS1_5ValueEESaIS6_EE17_M_initialize_mapEm", "std::_Deque_base, std::allocator>>::_M_initialize_map(unsigned long)"}, + {"_ZNSt5dequeISt4pairIPN4llvm10BasicBlockEPNS1_5ValueEESaIS6_EEC2ERKS8_", "std::deque, std::allocator>>::deque(std::deque, std::allocator>> const&)"}, + {"_ZN4llvm15callDefaultCtorINS_13LazyValueInfoEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor()"}, + {"_ZN4llvm27isSafeToLoadUnconditionallyEPNS_5ValueEPNS_11InstructionEjPKNS_10DataLayoutE", "llvm::isSafeToLoadUnconditionally(llvm::Value*, llvm::Instruction*, unsigned int, llvm::DataLayout const*)"}, + {"_ZN4llvm24FindAvailableLoadedValueEPNS_5ValueEPNS_10BasicBlockERNS_14ilist_iteratorINS_11InstructionEEEjPNS_13AliasAnalysisE", "llvm::FindAvailableLoadedValue(llvm::Value*, llvm::BasicBlock*, llvm::ilist_iterator&, unsigned int, llvm::AliasAnalysis*)"}, + {"_ZN4llvm22initializeLoopInfoPassERNS_12PassRegistryE", "llvm::initializeLoopInfoPass(llvm::PassRegistry&)"}, + {"_ZNK4llvm4Loop15isLoopInvariantEPNS_5ValueE", "llvm::Loop::isLoopInvariant(llvm::Value*) const"}, + {"_ZNK4llvm4Loop24hasLoopInvariantOperandsEPNS_11InstructionE", "llvm::Loop::hasLoopInvariantOperands(llvm::Instruction*) const"}, + {"_ZNK4llvm4Loop17makeLoopInvariantEPNS_5ValueERbPNS_11InstructionE", "llvm::Loop::makeLoopInvariant(llvm::Value*, bool&, llvm::Instruction*) const"}, + {"_ZNK4llvm4Loop17makeLoopInvariantEPNS_11InstructionERbS2_", "llvm::Loop::makeLoopInvariant(llvm::Instruction*, bool&, llvm::Instruction*) const"}, + {"_ZNK4llvm4Loop29getCanonicalInductionVariableEv", "llvm::Loop::getCanonicalInductionVariable() const"}, + {"_ZNK4llvm4Loop12getTripCountEv", "llvm::Loop::getTripCount() const"}, + {"_ZNK4llvm4Loop25getSmallConstantTripCountEv", "llvm::Loop::getSmallConstantTripCount() const"}, + {"_ZNK4llvm4Loop28getSmallConstantTripMultipleEv", "llvm::Loop::getSmallConstantTripMultiple() const"}, + {"_ZNK4llvm4Loop11isLCSSAFormERNS_13DominatorTreeE", "llvm::Loop::isLCSSAForm(llvm::DominatorTree&) const"}, + {"_ZNK4llvm4Loop18isLoopSimplifyFormEv", "llvm::Loop::isLoopSimplifyForm() const"}, + {"_ZNK4llvm4Loop17hasDedicatedExitsEv", "llvm::Loop::hasDedicatedExits() const"}, + {"_ZNK4llvm4Loop19getUniqueExitBlocksERNS_15SmallVectorImplIPNS_10BasicBlockEEE", "llvm::Loop::getUniqueExitBlocks(llvm::SmallVectorImpl&) const"}, + {"_ZNK4llvm4Loop18getUniqueExitBlockEv", "llvm::Loop::getUniqueExitBlock() const"}, + {"_ZNK4llvm4Loop4dumpEv", "llvm::Loop::dump() const"}, + {"_ZN4llvm8LoopInfo13runOnFunctionERNS_8FunctionE", "llvm::LoopInfo::runOnFunction(llvm::Function&)"}, + {"_ZNK4llvm8LoopInfo14verifyAnalysisEv", "llvm::LoopInfo::verifyAnalysis() const"}, + {"_ZNK4llvm8LoopInfo16getAnalysisUsageERNS_13AnalysisUsageE", "llvm::LoopInfo::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZNK4llvm8LoopInfo5printERNS_11raw_ostreamEPKNS_6ModuleE", "llvm::LoopInfo::print(llvm::raw_ostream&, llvm::Module const*) const"}, + {"_ZNK4llvm8LoopBaseINS_10BasicBlockENS_4LoopEE5printERNS_11raw_ostreamEj", "llvm::LoopBase::print(llvm::raw_ostream&, unsigned int) const"}, + {"_ZN4llvm12LoopInfoBaseINS_10BasicBlockENS_4LoopEE9CalculateERNS_17DominatorTreeBaseIS1_EE", "llvm::LoopInfoBase::Calculate(llvm::DominatorTreeBase&)"}, + {"_ZN4llvm8LoopInfoD1Ev", "llvm::LoopInfo::~LoopInfo()"}, + {"_ZN4llvm8LoopInfoD0Ev", "llvm::LoopInfo::~LoopInfo()"}, + {"_ZN4llvm8LoopInfo13releaseMemoryEv", "llvm::LoopInfo::releaseMemory()"}, + {"_ZN4llvm12LoopInfoBaseINS_10BasicBlockENS_4LoopEE15ConsiderForLoopEPS1_RNS_17DominatorTreeBaseIS1_EE", "llvm::LoopInfoBase::ConsiderForLoop(llvm::BasicBlock*, llvm::DominatorTreeBase&)"}, + {"_ZN4llvm8DenseMapIPNS_10BasicBlockEPNS_4LoopENS_12DenseMapInfoIS2_EENS5_IS4_EEE6insertERKSt4pairIS2_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + + // {"_ZN4llvm12LoopInfoBaseINS_10BasicBlockENS_4LoopEE19MoveSiblingLoopIntoEPS2_S4_", + // "llvm::LoopInfoBase::MoveSiblingLoopInto(llvm::Loop*, llvm::Loop*)"}, + // got error + + {"_ZNSt8_Rb_treeIPN4llvm10BasicBlockESt4pairIKS2_PNS0_4LoopEESt10_Select1stIS7_ESt4lessIS2_ESaIS7_EE8_M_eraseEPSt13_Rb_tree_nodeIS7_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + + // {"_ZN4llvm12LoopInfoBaseINS_10BasicBlockENS_4LoopEE14InsertLoopIntoEPS2_S4_", + // "llvm::LoopInfoBase::InsertLoopInto(llvm::Loop*, llvm::Loop*)"}, + // got error + + {"_ZNSt8_Rb_treeIPN4llvm10BasicBlockESt4pairIKS2_PNS0_4LoopEESt10_Select1stIS7_ESt4lessIS2_ESaIS7_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS7_ERKS7_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIPN4llvm10BasicBlockESt4pairIKS2_PNS0_4LoopEESt10_Select1stIS7_ESt4lessIS2_ESaIS7_EE16_M_insert_uniqueERKS7_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + + // {"_ZNSt6vectorIPN4llvm10BasicBlockESaIS2_EE15_M_range_insertINS0_12PredIteratorIS1_NS0_18value_use_iteratorINS0_4UserEEEEEEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EET_SF_St20forward_iterator_tag", + // "void std::vector>::_M_range_insert>>(__gnu_cxx::__normal_iterator>>, llvm::PredIterator>, llvm::PredIterator>, std::forward_iterator_tag)"}, + // got error + + + // {"_ZSt6__findIN9__gnu_cxx17__normal_iteratorIPPN4llvm4LoopESt6vectorIS4_SaIS4_EEEES4_ET_SA_SA_RKT0_St26random_access_iterator_tag", + // "__gnu_cxx::__normal_iterator>> std::__find<__gnu_cxx::__normal_iterator>>, llvm::Loop*>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, llvm::Loop* const&, std::random_access_iterator_tag)"}, + // got error + + {"_ZNK4llvm8LoopBaseINS_10BasicBlockENS_4LoopEE13isLoopExitingEPKS1_", "llvm::LoopBase::isLoopExiting(llvm::BasicBlock const*) const"}, + {"_ZN4llvm12LoopInfoBaseINS_10BasicBlockENS_4LoopEE13releaseMemoryEv", "llvm::LoopInfoBase::releaseMemory()"}, + {"_ZN4llvm8DenseMapIPNS_10BasicBlockEPNS_4LoopENS_12DenseMapInfoIS2_EENS5_IS4_EEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm15callDefaultCtorINS_8LoopInfoEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor()"}, + {"_ZN4llvm8LoopInfoC2Ev", "llvm::LoopInfo::LoopInfo()"}, + {"_ZN4llvm13LPPassManagerC1Ei", "llvm::LPPassManager::LPPassManager(int)"}, + {"_ZN4llvm13LPPassManagerC2Ei", "llvm::LPPassManager::LPPassManager(int)"}, + {"_ZN4llvm13LPPassManager19deleteLoopFromQueueEPNS_4LoopE", "llvm::LPPassManager::deleteLoopFromQueue(llvm::Loop*)"}, + {"_ZN4llvm13LPPassManager10insertLoopEPNS_4LoopES2_", "llvm::LPPassManager::insertLoop(llvm::Loop*, llvm::Loop*)"}, + {"_ZN4llvm13LPPassManager19insertLoopIntoQueueEPNS_4LoopE", "llvm::LPPassManager::insertLoopIntoQueue(llvm::Loop*)"}, + {"_ZN4llvm13LPPassManager8redoLoopEPNS_4LoopE", "llvm::LPPassManager::redoLoop(llvm::Loop*)"}, + {"_ZN4llvm13LPPassManager29cloneBasicBlockSimpleAnalysisEPNS_10BasicBlockES2_PNS_4LoopE", "llvm::LPPassManager::cloneBasicBlockSimpleAnalysis(llvm::BasicBlock*, llvm::BasicBlock*, llvm::Loop*)"}, + {"_ZN4llvm13LPPassManager25deleteSimpleAnalysisValueEPNS_5ValueEPNS_4LoopE", "llvm::LPPassManager::deleteSimpleAnalysisValue(llvm::Value*, llvm::Loop*)"}, + {"_ZNK4llvm13LPPassManager16getAnalysisUsageERNS_13AnalysisUsageE", "llvm::LPPassManager::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN4llvm13LPPassManager13runOnFunctionERNS_8FunctionE", "llvm::LPPassManager::runOnFunction(llvm::Function&)"}, + {"_Z16addLoopIntoQueuePN4llvm4LoopERSt5dequeIS1_SaIS1_EE", "addLoopIntoQueue(llvm::Loop*, std::deque>&)"}, + {"_ZN4llvm13LPPassManager17dumpPassStructureEj", "llvm::LPPassManager::dumpPassStructure(unsigned int)"}, + {"_ZNK4llvm8LoopPass17createPrinterPassERNS_11raw_ostreamERKSs", "llvm::LoopPass::createPrinterPass(llvm::raw_ostream&, std::string const&) const"}, + {"_ZN4llvm8LoopPass18preparePassManagerERNS_7PMStackE", "llvm::LoopPass::preparePassManager(llvm::PMStack&)"}, + {"_ZN4llvm8LoopPass17assignPassManagerERNS_7PMStackENS_15PassManagerTypeE", "llvm::LoopPass::assignPassManager(llvm::PMStack&, llvm::PassManagerType)"}, + {"_ZN12_GLOBAL__N_113PrintLoopPassD1Ev", "(anonymous namespace)::PrintLoopPass::~PrintLoopPass()"}, + {"_ZN12_GLOBAL__N_113PrintLoopPassD0Ev", "(anonymous namespace)::PrintLoopPass::~PrintLoopPass()"}, + {"_ZNK12_GLOBAL__N_113PrintLoopPass16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::PrintLoopPass::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_113PrintLoopPass9runOnLoopEPN4llvm4LoopERNS1_13LPPassManagerE", "(anonymous namespace)::PrintLoopPass::runOnLoop(llvm::Loop*, llvm::LPPassManager&)"}, + {"_ZNSt5dequeIPN4llvm4LoopESaIS2_EE5eraseESt15_Deque_iteratorIS2_RS2_PS2_E", "std::deque>::erase(std::_Deque_iterator)"}, + {"_ZNSt5dequeIPN4llvm4LoopESaIS2_EE9push_backERKS2_", "std::deque>::push_back(llvm::Loop* const&)"}, + {"_ZN4llvm13LPPassManagerD1Ev", "llvm::LPPassManager::~LPPassManager()"}, + {"_ZN4llvm13LPPassManagerD0Ev", "llvm::LPPassManager::~LPPassManager()"}, + {"_ZNK4llvm13LPPassManager11getPassNameEv", "llvm::LPPassManager::getPassName() const"}, + {"_ZN4llvm13LPPassManager18getAsPMDataManagerEv", "llvm::LPPassManager::getAsPMDataManager()"}, + {"_ZN4llvm13LPPassManager9getAsPassEv", "llvm::LPPassManager::getAsPass()"}, + {"_ZNK4llvm13LPPassManager18getPassManagerTypeEv", "llvm::LPPassManager::getPassManagerType() const"}, + + // {"_ZThn32_N4llvm13LPPassManagerD1Ev", + // "non-virtual thunk to llvm::LPPassManager::~LPPassManager()"}, + // "virtual function non-virtual override offset : -32 llvm::LPPassManager::~LPPassManager()" was returned + + + // {"_ZThn32_N4llvm13LPPassManagerD0Ev", + // "non-virtual thunk to llvm::LPPassManager::~LPPassManager()"}, + // "virtual function non-virtual override offset : -32 llvm::LPPassManager::~LPPassManager()" was returned + + + // {"_ZThn32_N4llvm13LPPassManager9getAsPassEv", + // "non-virtual thunk to llvm::LPPassManager::getAsPass()"}, + // "virtual function non-virtual override offset : -32 llvm::LPPassManager::getAsPass()" was returned + + + // {"_ZThn32_NK4llvm13LPPassManager18getPassManagerTypeEv", + // "non-virtual thunk to llvm::LPPassManager::getPassManagerType() const"}, + // "virtual function non-virtual override offset : -32 llvm::LPPassManager::getPassManagerType() const" was returned + + {"_ZNSt5dequeIPN4llvm4LoopESaIS2_EE17_M_reallocate_mapEmb", "std::deque>::_M_reallocate_map(unsigned long, bool)"}, + {"_ZNSt5dequeIPN4llvm4LoopESaIS2_EE14_M_fill_insertESt15_Deque_iteratorIS2_RS2_PS2_EmRKS2_", "std::deque>::_M_fill_insert(std::_Deque_iterator, unsigned long, llvm::Loop* const&)"}, + {"_ZNSt5dequeIPN4llvm4LoopESaIS2_EE13_M_insert_auxESt15_Deque_iteratorIS2_RS2_PS2_EmRKS2_", "std::deque>::_M_insert_aux(std::_Deque_iterator, unsigned long, llvm::Loop* const&)"}, + + // {"_ZSt4fillIPN4llvm4LoopEEvRKSt15_Deque_iteratorIT_RS4_PS4_ES9_RKS4_", + // "void std::fill(std::_Deque_iterator const&, std::_Deque_iterator const&, llvm::Loop* const&)"}, + // got error + + + // {"_ZNSt15__copy_backwardILb0ESt26random_access_iterator_tagE8__copy_bISt15_Deque_iteratorIPN4llvm4LoopERS6_PS6_ES9_EET0_T_SB_SA_", + // "std::_Deque_iterator std::__copy_backward::__copy_b, std::_Deque_iterator>(std::_Deque_iterator, std::_Deque_iterator, std::_Deque_iterator)"}, + // got error + + {"_ZNSt5dequeIPN4llvm4LoopESaIS2_EE23_M_new_elements_at_backEm", "std::deque>::_M_new_elements_at_back(unsigned long)"}, + {"_ZNSt5dequeIPN4llvm4LoopESaIS2_EE24_M_new_elements_at_frontEm", "std::deque>::_M_new_elements_at_front(unsigned long)"}, + {"_ZNSt6vectorIPN4llvm4LoopESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::Loop* const&)"}, + {"_ZNSt11_Deque_baseIPN4llvm4LoopESaIS2_EE17_M_initialize_mapEm", "std::_Deque_base>::_M_initialize_map(unsigned long)"}, + {"_ZN4llvm8LoopBaseINS_10BasicBlockENS_4LoopEED2Ev", "llvm::LoopBase::~LoopBase()"}, + {"_ZN4llvm8isMallocEPKNS_5ValueE", "llvm::isMalloc(llvm::Value const*)"}, + {"_ZN4llvm17extractMallocCallEPKNS_5ValueE", "llvm::extractMallocCall(llvm::Value const*)"}, + {"_ZN4llvm28extractMallocCallFromBitCastEPKNS_5ValueE", "llvm::extractMallocCallFromBitCast(llvm::Value const*)"}, + {"_Z12isMallocCallPKN4llvm8CallInstE", "isMallocCall(llvm::CallInst const*)"}, + {"_ZN4llvm17extractMallocCallEPNS_5ValueE", "llvm::extractMallocCall(llvm::Value*)"}, + {"_ZN4llvm28extractMallocCallFromBitCastEPNS_5ValueE", "llvm::extractMallocCallFromBitCast(llvm::Value*)"}, + {"_ZN4llvm13isArrayMallocEPKNS_5ValueEPKNS_10DataLayoutE", "llvm::isArrayMalloc(llvm::Value const*, llvm::DataLayout const*)"}, + {"_Z16computeArraySizePKN4llvm8CallInstEPKNS_10DataLayoutEb", "computeArraySize(llvm::CallInst const*, llvm::DataLayout const*, bool)"}, + {"_ZN4llvm13getMallocTypeEPKNS_8CallInstE", "llvm::getMallocType(llvm::CallInst const*)"}, + {"_ZN4llvm22getMallocAllocatedTypeEPKNS_8CallInstE", "llvm::getMallocAllocatedType(llvm::CallInst const*)"}, + {"_ZN4llvm18getMallocArraySizeEPNS_8CallInstEPKNS_10DataLayoutEb", "llvm::getMallocArraySize(llvm::CallInst*, llvm::DataLayout const*, bool)"}, + {"_ZN4llvm10isFreeCallEPKNS_5ValueE", "llvm::isFreeCall(llvm::Value const*)"}, + {"_ZN4llvm38initializeMemoryDependenceAnalysisPassERNS_12PassRegistryE", "llvm::initializeMemoryDependenceAnalysisPass(llvm::PassRegistry&)"}, + {"_ZN4llvm24MemoryDependenceAnalysisC1Ev", "llvm::MemoryDependenceAnalysis::MemoryDependenceAnalysis()"}, + {"_ZN4llvm24MemoryDependenceAnalysisC2Ev", "llvm::MemoryDependenceAnalysis::MemoryDependenceAnalysis()"}, + {"_ZN4llvm24MemoryDependenceAnalysisD0Ev", "llvm::MemoryDependenceAnalysis::~MemoryDependenceAnalysis()"}, + {"_ZN4llvm24MemoryDependenceAnalysisD1Ev", "llvm::MemoryDependenceAnalysis::~MemoryDependenceAnalysis()"}, + {"_ZN4llvm24MemoryDependenceAnalysisD2Ev", "llvm::MemoryDependenceAnalysis::~MemoryDependenceAnalysis()"}, + {"_ZN4llvm24MemoryDependenceAnalysis13releaseMemoryEv", "llvm::MemoryDependenceAnalysis::releaseMemory()"}, + {"_ZNK4llvm24MemoryDependenceAnalysis16getAnalysisUsageERNS_13AnalysisUsageE", "llvm::MemoryDependenceAnalysis::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN4llvm24MemoryDependenceAnalysis13runOnFunctionERNS_8FunctionE", "llvm::MemoryDependenceAnalysis::runOnFunction(llvm::Function&)"}, + {"_ZN4llvm24MemoryDependenceAnalysis25getCallSiteDependencyFromENS_8CallSiteEbNS_14ilist_iteratorINS_11InstructionEEEPNS_10BasicBlockE", "llvm::MemoryDependenceAnalysis::getCallSiteDependencyFrom(llvm::CallSite, bool, llvm::ilist_iterator, llvm::BasicBlock*)"}, + {"_Z11GetLocationPKN4llvm11InstructionERNS_13AliasAnalysis8LocationEPS3_", "GetLocation(llvm::Instruction const*, llvm::AliasAnalysis::Location&, llvm::AliasAnalysis*)"}, + {"_ZN4llvm24MemoryDependenceAnalysis24getPointerDependencyFromERKNS_13AliasAnalysis8LocationEbNS_14ilist_iteratorINS_11InstructionEEEPNS_10BasicBlockE", "llvm::MemoryDependenceAnalysis::getPointerDependencyFrom(llvm::AliasAnalysis::Location const&, bool, llvm::ilist_iterator, llvm::BasicBlock*)"}, + {"_ZN4llvm24MemoryDependenceAnalysis13getDependencyEPNS_11InstructionE", "llvm::MemoryDependenceAnalysis::getDependency(llvm::Instruction*)"}, + + // {"_Z20RemoveFromReverseMapIPN4llvm11InstructionEEvRNS0_8DenseMapIS2_NS0_11SmallPtrSetIT_Lj4EEENS0_12DenseMapInfoIS2_EENS7_IS6_EEEES2_S5_", + // "void RemoveFromReverseMap(llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>&, llvm::Instruction*, llvm::Instruction*)"}, + // "void RemoveFromReverseMap(llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>&, llvm::Instruction*, llvm::SmallPtrSet)" was returned + + {"_ZN4llvm24MemoryDependenceAnalysis25getNonLocalCallDependencyENS_8CallSiteE", "llvm::MemoryDependenceAnalysis::getNonLocalCallDependency(llvm::CallSite)"}, + {"_ZN4llvm24MemoryDependenceAnalysis28getNonLocalPointerDependencyERKNS_13AliasAnalysis8LocationEbPNS_10BasicBlockERNS_15SmallVectorImplINS_17NonLocalDepResultEEE", "llvm::MemoryDependenceAnalysis::getNonLocalPointerDependency(llvm::AliasAnalysis::Location const&, bool, llvm::BasicBlock*, llvm::SmallVectorImpl&)"}, + {"_ZN4llvm24MemoryDependenceAnalysis27getNonLocalPointerDepFromBBERKNS_12PHITransAddrERKNS_13AliasAnalysis8LocationEbPNS_10BasicBlockERNS_15SmallVectorImplINS_17NonLocalDepResultEEERNS_8DenseMapIS9_PNS_5ValueENS_12DenseMapInfoIS9_EENSH_ISG_EEEEb", "llvm::MemoryDependenceAnalysis::getNonLocalPointerDepFromBB(llvm::PHITransAddr const&, llvm::AliasAnalysis::Location const&, bool, llvm::BasicBlock*, llvm::SmallVectorImpl&, llvm::DenseMap, llvm::DenseMapInfo>&, bool)"}, + {"_ZN4llvm24MemoryDependenceAnalysis23GetNonLocalInfoForBlockERKNS_13AliasAnalysis8LocationEbPNS_10BasicBlockEPSt6vectorINS_16NonLocalDepEntryESaIS8_EEj", "llvm::MemoryDependenceAnalysis::GetNonLocalInfoForBlock(llvm::AliasAnalysis::Location const&, bool, llvm::BasicBlock*, std::vector>*, unsigned int)"}, + + // {"_Z20RemoveFromReverseMapIN4llvm14PointerIntPairIPKNS0_5ValueELj1EbNS0_21PointerLikeTypeTraitsIS4_EEEEEvRNS0_8DenseMapIPNS0_11InstructionENS0_11SmallPtrSetIT_Lj4EEENS0_12DenseMapInfoISA_EENSE_ISD_EEEESA_SC_", + // "void RemoveFromReverseMap>>(llvm::DenseMap>, 4u>, llvm::DenseMapInfo, llvm::DenseMapInfo>, 4u>>>&, llvm::Instruction*, llvm::PointerIntPair>)"}, + // "void RemoveFromReverseMap>>(llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>&, llvm::Instruction*, llvm::SmallPtrSet)" was returned + + {"_Z24SortNonLocalDepInfoCacheRSt6vectorIN4llvm16NonLocalDepEntryESaIS1_EEj", "SortNonLocalDepInfoCache(std::vector>&, unsigned int)"}, + + // {"_ZN4llvm24MemoryDependenceAnalysis39RemoveCachedNonLocalPointerDependenciesENS_14PointerIntPairIPKNS_5ValueELj1EbNS_21PointerLikeTypeTraitsIS4_EEEE", + // "llvm::MemoryDependenceAnalysis::RemoveCachedNonLocalPointerDependencies(llvm::PointerIntPair>)"}, + // "llvm::MemoryDependenceAnalysis::RemoveCachedNonLocalPointerDependencies(llvm::PointerIntPair>)" was returned + + {"_ZN4llvm24MemoryDependenceAnalysis27invalidateCachedPointerInfoEPNS_5ValueE", "llvm::MemoryDependenceAnalysis::invalidateCachedPointerInfo(llvm::Value*)"}, + {"_ZN4llvm24MemoryDependenceAnalysis28invalidateCachedPredecessorsEv", "llvm::MemoryDependenceAnalysis::invalidateCachedPredecessors()"}, + {"_ZN4llvm24MemoryDependenceAnalysis17removeInstructionEPNS_11InstructionE", "llvm::MemoryDependenceAnalysis::removeInstruction(llvm::Instruction*)"}, + {"_ZNK4llvm24MemoryDependenceAnalysis13verifyRemovedEPNS_11InstructionE", "llvm::MemoryDependenceAnalysis::verifyRemoved(llvm::Instruction*) const"}, + {"_ZN4llvm8DenseMapIPNS_11InstructionESt4pairISt6vectorINS_16NonLocalDepEntryESaIS5_EEbENS_12DenseMapInfoIS2_EENS9_IS8_EEE5clearEv", "llvm::DenseMap>, bool>, llvm::DenseMapInfo, llvm::DenseMapInfo>, bool>>>::clear()"}, + + // {"_ZN4llvm8DenseMapINS_14PointerIntPairIPKNS_5ValueELj1EbNS_21PointerLikeTypeTraitsIS4_EEEENS_24MemoryDependenceAnalysis19NonLocalPointerInfoENS_12DenseMapInfoIS7_EENSA_IS9_EEE5clearEv", + // "llvm::DenseMap>, llvm::MemoryDependenceAnalysis::NonLocalPointerInfo, llvm::DenseMapInfo>>, llvm::DenseMapInfo>::clear()"}, + // "llvm::DenseMap>, llvm::MemoryDependenceAnalysis::NonLocalPointerInfo, llvm::DenseMapInfo>>, llvm::DenseMapInfo>::clear()" was returned + + + // {"_ZN4llvm8DenseMapIPNS_11InstructionENS_11SmallPtrSetIS2_Lj4EEENS_12DenseMapInfoIS2_EENS5_IS4_EEE5clearEv", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::clear()"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::clear()" was returned + + + // {"_ZN4llvm8DenseMapIPNS_11InstructionENS_11SmallPtrSetINS_14PointerIntPairIPKNS_5ValueELj1EbNS_21PointerLikeTypeTraitsIS7_EEEELj4EEENS_12DenseMapInfoIS2_EENSC_ISB_EEE5clearEv", + // "llvm::DenseMap>, 4u>, llvm::DenseMapInfo, llvm::DenseMapInfo>, 4u>>>::clear()"}, + // "llvm::DenseMap>, 4>, llvm::DenseMapInfo, llvm::DenseMapInfo>, 4>>>::clear()" was returned + + {"_ZN4llvm17PredIteratorCache5clearEv", "llvm::PredIteratorCache::clear()"}, + {"_ZN4llvm17PredIteratorCache8GetPredsEPNS_10BasicBlockE", "llvm::PredIteratorCache::GetPreds(llvm::BasicBlock*)"}, + + // {"_ZN4llvm8DenseMapINS_14PointerIntPairIPKNS_5ValueELj1EbNS_21PointerLikeTypeTraitsIS4_EEEENS_24MemoryDependenceAnalysis19NonLocalPointerInfoENS_12DenseMapInfoIS7_EENSA_IS9_EEE6insertERKSt4pairIS7_S9_E", + // "llvm::DenseMap>, llvm::MemoryDependenceAnalysis::NonLocalPointerInfo, llvm::DenseMapInfo>>, llvm::DenseMapInfo>::insert(std::pair>, llvm::MemoryDependenceAnalysis::NonLocalPointerInfo> const&)"}, + // "llvm::DenseMap>, llvm::MemoryDependenceAnalysis::NonLocalPointerInfo, llvm::DenseMapInfo>>, llvm::DenseMapInfo>::insert(std::pair>, llvm::MemoryDependenceAnalysis::NonLocalPointerInfo> const&)" was returned + + + // {"_ZN4llvm8DenseMapINS_14PointerIntPairIPKNS_5ValueELj1EbNS_21PointerLikeTypeTraitsIS4_EEEENS_24MemoryDependenceAnalysis19NonLocalPointerInfoENS_12DenseMapInfoIS7_EENSA_IS9_EEE16FindAndConstructERKS7_", + // "llvm::DenseMap>, llvm::MemoryDependenceAnalysis::NonLocalPointerInfo, llvm::DenseMapInfo>>, llvm::DenseMapInfo>::FindAndConstruct(llvm::PointerIntPair> const&)"}, + // "llvm::DenseMap>, llvm::MemoryDependenceAnalysis::NonLocalPointerInfo, llvm::DenseMapInfo>>, llvm::DenseMapInfo>::FindAndConstruct(llvm::PointerIntPair> const&)" was returned + + + // {"_ZN4llvm8DenseMapINS_14PointerIntPairIPKNS_5ValueELj1EbNS_21PointerLikeTypeTraitsIS4_EEEENS_24MemoryDependenceAnalysis19NonLocalPointerInfoENS_12DenseMapInfoIS7_EENSA_IS9_EEE16InsertIntoBucketERKS7_RKS9_PSt4pairIS7_S9_E", + // "llvm::DenseMap>, llvm::MemoryDependenceAnalysis::NonLocalPointerInfo, llvm::DenseMapInfo>>, llvm::DenseMapInfo>::InsertIntoBucket(llvm::PointerIntPair> const&, llvm::MemoryDependenceAnalysis::NonLocalPointerInfo const&, std::pair>, llvm::MemoryDependenceAnalysis::NonLocalPointerInfo>*)"}, + // "llvm::DenseMap>, llvm::MemoryDependenceAnalysis::NonLocalPointerInfo, llvm::DenseMapInfo>>, llvm::DenseMapInfo>::InsertIntoBucket(llvm::PointerIntPair> const&, llvm::MemoryDependenceAnalysis::NonLocalPointerInfo const&, std::pair>, llvm::MemoryDependenceAnalysis::NonLocalPointerInfo>*)" was returned + + + // {"_ZN4llvm8DenseMapINS_14PointerIntPairIPKNS_5ValueELj1EbNS_21PointerLikeTypeTraitsIS4_EEEENS_24MemoryDependenceAnalysis19NonLocalPointerInfoENS_12DenseMapInfoIS7_EENSA_IS9_EEE4growEj", + // "llvm::DenseMap>, llvm::MemoryDependenceAnalysis::NonLocalPointerInfo, llvm::DenseMapInfo>>, llvm::DenseMapInfo>::grow(unsigned int)"}, + // "llvm::DenseMap>, llvm::MemoryDependenceAnalysis::NonLocalPointerInfo, llvm::DenseMapInfo>>, llvm::DenseMapInfo>::grow(unsigned int)" was returned + + + // {"_ZN4llvm8DenseMapIPNS_11InstructionENS_11SmallPtrSetINS_14PointerIntPairIPKNS_5ValueELj1EbNS_21PointerLikeTypeTraitsIS7_EEEELj4EEENS_12DenseMapInfoIS2_EENSC_ISB_EEE16FindAndConstructERKS2_", + // "llvm::DenseMap>, 4u>, llvm::DenseMapInfo, llvm::DenseMapInfo>, 4u>>>::FindAndConstruct(llvm::Instruction* const&)"}, + // "llvm::DenseMap>, 4>, llvm::DenseMapInfo, llvm::DenseMapInfo>, 4>>>::FindAndConstruct(llvm::Instruction* const&)" was returned + + + // {"_ZN4llvm8DenseMapIPNS_11InstructionENS_11SmallPtrSetINS_14PointerIntPairIPKNS_5ValueELj1EbNS_21PointerLikeTypeTraitsIS7_EEEELj4EEENS_12DenseMapInfoIS2_EENSC_ISB_EEE16InsertIntoBucketERKS2_RKSB_PSt4pairIS2_SB_E", + // "llvm::DenseMap>, 4u>, llvm::DenseMapInfo, llvm::DenseMapInfo>, 4u>>>::InsertIntoBucket(llvm::Instruction* const&, llvm::SmallPtrSet>, 4u> const&, std::pair>, 4u>>*)"}, + // "llvm::DenseMap>, 4>, llvm::DenseMapInfo, llvm::DenseMapInfo>, 4>>>::InsertIntoBucket(llvm::Instruction* const&, llvm::SmallPtrSet>, 4> const&, std::pair>, 4>>*)" was returned + + + // {"_ZN4llvm8DenseMapIPNS_11InstructionENS_11SmallPtrSetINS_14PointerIntPairIPKNS_5ValueELj1EbNS_21PointerLikeTypeTraitsIS7_EEEELj4EEENS_12DenseMapInfoIS2_EENSC_ISB_EEE4growEj", + // "llvm::DenseMap>, 4u>, llvm::DenseMapInfo, llvm::DenseMapInfo>, 4u>>>::grow(unsigned int)"}, + // "llvm::DenseMap>, 4>, llvm::DenseMapInfo, llvm::DenseMapInfo>, 4>>>::grow(unsigned int)" was returned + + {"_ZN4llvm23SmallVectorTemplateBaseINS_17NonLocalDepResultELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZNSt6vectorIN4llvm16NonLocalDepEntryESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::NonLocalDepEntry const&)"}, + + // {"_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPN4llvm16NonLocalDepEntryESt6vectorIS3_SaIS3_EEEElEvT_S9_T0_", + // "void std::__introsort_loop<__gnu_cxx::__normal_iterator>>, long>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, long)"}, + // got error + + + // {"_ZSt22__final_insertion_sortIN9__gnu_cxx17__normal_iteratorIPN4llvm16NonLocalDepEntryESt6vectorIS3_SaIS3_EEEEEvT_S9_", + // "void std::__final_insertion_sort<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>)"}, + // got error + + + // {"_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPN4llvm16NonLocalDepEntryESt6vectorIS3_SaIS3_EEEEEvT_S9_", + // "void std::__insertion_sort<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>)"}, + // got error + + + // {"_ZSt13__heap_selectIN9__gnu_cxx17__normal_iteratorIPN4llvm16NonLocalDepEntryESt6vectorIS3_SaIS3_EEEEEvT_S9_S9_", + // "void std::__heap_select<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>)"}, + // got error + + + // {"_ZSt9sort_heapIN9__gnu_cxx17__normal_iteratorIPN4llvm16NonLocalDepEntryESt6vectorIS3_SaIS3_EEEEEvT_S9_", + // "void std::sort_heap<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>)"}, + // got error + + + // {"_ZSt9make_heapIN9__gnu_cxx17__normal_iteratorIPN4llvm16NonLocalDepEntryESt6vectorIS3_SaIS3_EEEEEvT_S9_", + // "void std::make_heap<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>)"}, + // got error + + {"_ZN4llvm8DenseMapIPNS_11InstructionESt4pairISt6vectorINS_16NonLocalDepEntryESaIS5_EEbENS_12DenseMapInfoIS2_EENS9_IS8_EEE16FindAndConstructERKS2_", "llvm::DenseMap>, bool>, llvm::DenseMapInfo, llvm::DenseMapInfo>, bool>>>::FindAndConstruct(llvm::Instruction* const&)"}, + + // {"_ZN4llvm8DenseMapIPNS_11InstructionESt4pairISt6vectorINS_16NonLocalDepEntryESaIS5_EEbENS_12DenseMapInfoIS2_EENS9_IS8_EEE16InsertIntoBucketERKS2_RKS8_PS3_IS2_S8_E", + // "llvm::DenseMap>, bool>, llvm::DenseMapInfo, llvm::DenseMapInfo>, bool>>>::InsertIntoBucket(llvm::Instruction* const&, std::pair>, bool> const&, std::pair>, bool>>*)"}, + // "llvm::DenseMap>, bool>, llvm::DenseMapInfo, llvm::DenseMapInfo>, bool>>>::InsertIntoBucket(llvm::Instruction* const&, std::pair>, bool> const&, std::pair*>, bool>>)" was returned + + {"_ZN4llvm8DenseMapIPNS_11InstructionESt4pairISt6vectorINS_16NonLocalDepEntryESaIS5_EEbENS_12DenseMapInfoIS2_EENS9_IS8_EEE4growEj", "llvm::DenseMap>, bool>, llvm::DenseMapInfo, llvm::DenseMapInfo>, bool>>>::grow(unsigned int)"}, + {"_ZNSt6vectorIN4llvm16NonLocalDepEntryESaIS1_EEC2ERKS3_", "std::vector>::vector(std::vector> const&)"}, + + // {"_ZN4llvm8DenseMapIPNS_11InstructionENS_11SmallPtrSetIS2_Lj4EEENS_12DenseMapInfoIS2_EENS5_IS4_EEE16FindAndConstructERKS2_", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::FindAndConstruct(llvm::Instruction* const&)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::FindAndConstruct(llvm::Instruction* const&)" was returned + + + // {"_ZN4llvm8DenseMapIPNS_11InstructionENS_11SmallPtrSetIS2_Lj4EEENS_12DenseMapInfoIS2_EENS5_IS4_EEE16InsertIntoBucketERKS2_RKS4_PSt4pairIS2_S4_E", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(llvm::Instruction* const&, llvm::SmallPtrSet const&, std::pair>*)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(llvm::Instruction* const&, llvm::SmallPtrSet const&, std::pair>*)" was returned + + + // {"_ZN4llvm8DenseMapIPNS_11InstructionENS_11SmallPtrSetIS2_Lj4EEENS_12DenseMapInfoIS2_EENS5_IS4_EEE4growEj", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)" was returned + + {"_ZN4llvm8DenseMapIPNS_11InstructionENS_12MemDepResultENS_12DenseMapInfoIS2_EENS4_IS3_EEE16InsertIntoBucketERKS2_RKS3_PSt4pairIS2_S3_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::Instruction* const&, llvm::MemDepResult const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_11InstructionENS_12MemDepResultENS_12DenseMapInfoIS2_EENS4_IS3_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + + // {"_ZN4llvm8DenseMapIPNS_11InstructionENS_11SmallPtrSetINS_14PointerIntPairIPKNS_5ValueELj1EbNS_21PointerLikeTypeTraitsIS7_EEEELj4EEENS_12DenseMapInfoIS2_EENSC_ISB_EEE16shrink_and_clearEv", + // "llvm::DenseMap>, 4u>, llvm::DenseMapInfo, llvm::DenseMapInfo>, 4u>>>::shrink_and_clear()"}, + // "llvm::DenseMap>, 4>, llvm::DenseMapInfo, llvm::DenseMapInfo>, 4>>>::shrink_and_clear()" was returned + + + // {"_ZN4llvm8DenseMapIPNS_11InstructionENS_11SmallPtrSetIS2_Lj4EEENS_12DenseMapInfoIS2_EENS5_IS4_EEE16shrink_and_clearEv", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::shrink_and_clear()"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::shrink_and_clear()" was returned + + + // {"_ZN4llvm8DenseMapINS_14PointerIntPairIPKNS_5ValueELj1EbNS_21PointerLikeTypeTraitsIS4_EEEENS_24MemoryDependenceAnalysis19NonLocalPointerInfoENS_12DenseMapInfoIS7_EENSA_IS9_EEE16shrink_and_clearEv", + // "llvm::DenseMap>, llvm::MemoryDependenceAnalysis::NonLocalPointerInfo, llvm::DenseMapInfo>>, llvm::DenseMapInfo>::shrink_and_clear()"}, + // "llvm::DenseMap>, llvm::MemoryDependenceAnalysis::NonLocalPointerInfo, llvm::DenseMapInfo>>, llvm::DenseMapInfo>::shrink_and_clear()" was returned + + {"_ZN4llvm8DenseMapIPNS_11InstructionESt4pairISt6vectorINS_16NonLocalDepEntryESaIS5_EEbENS_12DenseMapInfoIS2_EENS9_IS8_EEE16shrink_and_clearEv", "llvm::DenseMap>, bool>, llvm::DenseMapInfo, llvm::DenseMapInfo>, bool>>>::shrink_and_clear()"}, + {"_ZN4llvm8DenseMapIPNS_11InstructionENS_12MemDepResultENS_12DenseMapInfoIS2_EENS4_IS3_EEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm8DenseMapIPNS_10BasicBlockEjNS_12DenseMapInfoIS2_EENS3_IjEEE16InsertIntoBucketERKS2_RKjPSt4pairIS2_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::BasicBlock* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_10BasicBlockEjNS_12DenseMapInfoIS2_EENS3_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPNS_10BasicBlockEPS2_NS_12DenseMapInfoIS2_EENS4_IS3_EEE16InsertIntoBucketERKS2_RKS3_PSt4pairIS2_S3_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::BasicBlock* const&, llvm::BasicBlock** const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_10BasicBlockEPS2_NS_12DenseMapInfoIS2_EENS4_IS3_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPNS_10BasicBlockEjNS_12DenseMapInfoIS2_EENS3_IjEEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm8DenseMapIPNS_10BasicBlockEPS2_NS_12DenseMapInfoIS2_EENS4_IS3_EEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm15callDefaultCtorINS_24MemoryDependenceAnalysisEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor()"}, + {"_ZN4llvm18initializeNoAAPassERNS_12PassRegistryE", "llvm::initializeNoAAPass(llvm::PassRegistry&)"}, + {"_ZN4llvm14createNoAAPassEv", "llvm::createNoAAPass()"}, + {"_ZN12_GLOBAL__N_14NoAAD1Ev", "(anonymous namespace)::NoAA::~NoAA()"}, + {"_ZN12_GLOBAL__N_14NoAAD0Ev", "(anonymous namespace)::NoAA::~NoAA()"}, + {"_ZNK12_GLOBAL__N_14NoAA16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::NoAA::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_14NoAA26getAdjustedAnalysisPointerEPKv", "(anonymous namespace)::NoAA::getAdjustedAnalysisPointer(void const*)"}, + {"_ZN12_GLOBAL__N_14NoAA14initializePassEv", "(anonymous namespace)::NoAA::initializePass()"}, + {"_ZN12_GLOBAL__N_14NoAA5aliasERKN4llvm13AliasAnalysis8LocationES5_", "(anonymous namespace)::NoAA::alias(llvm::AliasAnalysis::Location const&, llvm::AliasAnalysis::Location const&)"}, + {"_ZN12_GLOBAL__N_14NoAA17getModRefBehaviorEN4llvm17ImmutableCallSiteE", "(anonymous namespace)::NoAA::getModRefBehavior(llvm::ImmutableCallSite)"}, + {"_ZN12_GLOBAL__N_14NoAA17getModRefBehaviorEPKN4llvm8FunctionE", "(anonymous namespace)::NoAA::getModRefBehavior(llvm::Function const*)"}, + {"_ZN12_GLOBAL__N_14NoAA22pointsToConstantMemoryERKN4llvm13AliasAnalysis8LocationEb", "(anonymous namespace)::NoAA::pointsToConstantMemory(llvm::AliasAnalysis::Location const&, bool)"}, + {"_ZN12_GLOBAL__N_14NoAA13getModRefInfoEN4llvm17ImmutableCallSiteERKNS1_13AliasAnalysis8LocationE", "(anonymous namespace)::NoAA::getModRefInfo(llvm::ImmutableCallSite, llvm::AliasAnalysis::Location const&)"}, + {"_ZN12_GLOBAL__N_14NoAA13getModRefInfoEN4llvm17ImmutableCallSiteES2_", "(anonymous namespace)::NoAA::getModRefInfo(llvm::ImmutableCallSite, llvm::ImmutableCallSite)"}, + {"_ZN12_GLOBAL__N_14NoAA11deleteValueEPN4llvm5ValueE", "(anonymous namespace)::NoAA::deleteValue(llvm::Value*)"}, + {"_ZN12_GLOBAL__N_14NoAA9copyValueEPN4llvm5ValueES3_", "(anonymous namespace)::NoAA::copyValue(llvm::Value*, llvm::Value*)"}, + {"_ZN12_GLOBAL__N_14NoAA14addEscapingUseERN4llvm3UseE", "(anonymous namespace)::NoAA::addEscapingUse(llvm::Use&)"}, + + // {"_ZThn32_NK12_GLOBAL__N_14NoAA16getAnalysisUsageERN4llvm13AnalysisUsageE", + // "non-virtual thunk to (anonymous namespace)::NoAA::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::NoAA::getAnalysisUsage(llvm::AnalysisUsage&) const" was returned + + + // {"_ZThn32_N12_GLOBAL__N_14NoAAD1Ev", + // "non-virtual thunk to (anonymous namespace)::NoAA::~NoAA()"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::NoAA::~NoAA()" was returned + + + // {"_ZThn32_N12_GLOBAL__N_14NoAAD0Ev", + // "non-virtual thunk to (anonymous namespace)::NoAA::~NoAA()"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::NoAA::~NoAA()" was returned + + + // {"_ZThn32_N12_GLOBAL__N_14NoAA5aliasERKN4llvm13AliasAnalysis8LocationES5_", + // "non-virtual thunk to (anonymous namespace)::NoAA::alias(llvm::AliasAnalysis::Location const&, llvm::AliasAnalysis::Location const&)"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::NoAA::alias(llvm::AliasAnalysis::Location const&, llvm::AliasAnalysis::Location const&)" was returned + + + // {"_ZThn32_N12_GLOBAL__N_14NoAA22pointsToConstantMemoryERKN4llvm13AliasAnalysis8LocationEb", + // "non-virtual thunk to (anonymous namespace)::NoAA::pointsToConstantMemory(llvm::AliasAnalysis::Location const&, bool)"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::NoAA::pointsToConstantMemory(llvm::AliasAnalysis::Location const&, bool)" was returned + + + // {"_ZThn32_N12_GLOBAL__N_14NoAA17getModRefBehaviorEN4llvm17ImmutableCallSiteE", + // "non-virtual thunk to (anonymous namespace)::NoAA::getModRefBehavior(llvm::ImmutableCallSite)"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::NoAA::getModRefBehavior(llvm::ImmutableCallSite)" was returned + + + // {"_ZThn32_N12_GLOBAL__N_14NoAA17getModRefBehaviorEPKN4llvm8FunctionE", + // "non-virtual thunk to (anonymous namespace)::NoAA::getModRefBehavior(llvm::Function const*)"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::NoAA::getModRefBehavior(llvm::Function const*)" was returned + + + // {"_ZThn32_N12_GLOBAL__N_14NoAA13getModRefInfoEN4llvm17ImmutableCallSiteERKNS1_13AliasAnalysis8LocationE", + // "non-virtual thunk to (anonymous namespace)::NoAA::getModRefInfo(llvm::ImmutableCallSite, llvm::AliasAnalysis::Location const&)"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::NoAA::getModRefInfo(llvm::ImmutableCallSite, llvm::AliasAnalysis::Location const&)" was returned + + + // {"_ZThn32_N12_GLOBAL__N_14NoAA13getModRefInfoEN4llvm17ImmutableCallSiteES2_", + // "non-virtual thunk to (anonymous namespace)::NoAA::getModRefInfo(llvm::ImmutableCallSite, llvm::ImmutableCallSite)"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::NoAA::getModRefInfo(llvm::ImmutableCallSite, llvm::ImmutableCallSite)" was returned + + + // {"_ZThn32_N12_GLOBAL__N_14NoAA11deleteValueEPN4llvm5ValueE", + // "non-virtual thunk to (anonymous namespace)::NoAA::deleteValue(llvm::Value*)"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::NoAA::deleteValue(llvm::Value*)" was returned + + + // {"_ZThn32_N12_GLOBAL__N_14NoAA9copyValueEPN4llvm5ValueES3_", + // "non-virtual thunk to (anonymous namespace)::NoAA::copyValue(llvm::Value*, llvm::Value*)"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::NoAA::copyValue(llvm::Value*, llvm::Value*)" was returned + + + // {"_ZThn32_N12_GLOBAL__N_14NoAA14addEscapingUseERN4llvm3UseE", + // "non-virtual thunk to (anonymous namespace)::NoAA::addEscapingUse(llvm::Use&)"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::NoAA::addEscapingUse(llvm::Use&)" was returned + + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_14NoAAEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::NoAA>()"}, + {"_ZNK4llvm12PHITransAddr4dumpEv", "llvm::PHITransAddr::dump() const"}, + {"_ZNK4llvm12PHITransAddr6VerifyEv", "llvm::PHITransAddr::Verify() const"}, + {"_Z13VerifySubExprPN4llvm5ValueERNS_15SmallVectorImplIPNS_11InstructionEEE", "VerifySubExpr(llvm::Value*, llvm::SmallVectorImpl&)"}, + {"_ZNK4llvm12PHITransAddr28IsPotentiallyPHITranslatableEv", "llvm::PHITransAddr::IsPotentiallyPHITranslatable() const"}, + {"_ZN4llvm12PHITransAddr19PHITranslateSubExprEPNS_5ValueEPNS_10BasicBlockES4_PKNS_13DominatorTreeE", "llvm::PHITransAddr::PHITranslateSubExpr(llvm::Value*, llvm::BasicBlock*, llvm::BasicBlock*, llvm::DominatorTree const*)"}, + {"_Z16RemoveInstInputsPN4llvm5ValueERNS_15SmallVectorImplIPNS_11InstructionEEE", "RemoveInstInputs(llvm::Value*, llvm::SmallVectorImpl&)"}, + {"_ZN4llvm12PHITransAddr17PHITranslateValueEPNS_10BasicBlockES2_PKNS_13DominatorTreeE", "llvm::PHITransAddr::PHITranslateValue(llvm::BasicBlock*, llvm::BasicBlock*, llvm::DominatorTree const*)"}, + {"_ZN4llvm12PHITransAddr25PHITranslateWithInsertionEPNS_10BasicBlockES2_RKNS_13DominatorTreeERNS_15SmallVectorImplIPNS_11InstructionEEE", "llvm::PHITransAddr::PHITranslateWithInsertion(llvm::BasicBlock*, llvm::BasicBlock*, llvm::DominatorTree const&, llvm::SmallVectorImpl&)"}, + {"_ZN4llvm12PHITransAddr26InsertPHITranslatedSubExprEPNS_5ValueEPNS_10BasicBlockES4_RKNS_13DominatorTreeERNS_15SmallVectorImplIPNS_11InstructionEEE", "llvm::PHITransAddr::InsertPHITranslatedSubExpr(llvm::Value*, llvm::BasicBlock*, llvm::BasicBlock*, llvm::DominatorTree const&, llvm::SmallVectorImpl&)"}, + {"_ZN4llvm34initializeProfileInfoAnalysisGroupERNS_12PassRegistryE", "llvm::initializeProfileInfoAnalysisGroup(llvm::PassRegistry&)"}, + {"_ZN4llvm12ProfileInfoTINS_15MachineFunctionENS_17MachineBasicBlockEEC1Ev", "llvm::ProfileInfoT::ProfileInfoT()"}, + {"_ZN4llvm12ProfileInfoTINS_15MachineFunctionENS_17MachineBasicBlockEEC2Ev", "llvm::ProfileInfoT::ProfileInfoT()"}, + {"_ZN4llvm12ProfileInfoTINS_15MachineFunctionENS_17MachineBasicBlockEED1Ev", "llvm::ProfileInfoT::~ProfileInfoT()"}, + {"_ZN4llvm12ProfileInfoTINS_15MachineFunctionENS_17MachineBasicBlockEED2Ev", "llvm::ProfileInfoT::~ProfileInfoT()"}, + {"_ZN4llvm12ProfileInfoTINS_8FunctionENS_10BasicBlockEEC1Ev", "llvm::ProfileInfoT::ProfileInfoT()"}, + {"_ZN4llvm12ProfileInfoTINS_8FunctionENS_10BasicBlockEEC2Ev", "llvm::ProfileInfoT::ProfileInfoT()"}, + {"_ZN4llvm12ProfileInfoTINS_8FunctionENS_10BasicBlockEED1Ev", "llvm::ProfileInfoT::~ProfileInfoT()"}, + {"_ZN4llvm12ProfileInfoTINS_8FunctionENS_10BasicBlockEED2Ev", "llvm::ProfileInfoT::~ProfileInfoT()"}, + {"_ZN4llvm12ProfileInfoTINS_8FunctionENS_10BasicBlockEE17getExecutionCountEPKS2_", "llvm::ProfileInfoT::getExecutionCount(llvm::BasicBlock const*)"}, + {"_ZN4llvm12ProfileInfoTINS_15MachineFunctionENS_17MachineBasicBlockEE17getExecutionCountEPKS2_", "llvm::ProfileInfoT::getExecutionCount(llvm::MachineBasicBlock const*)"}, + {"_ZN4llvm12ProfileInfoTINS_8FunctionENS_10BasicBlockEE17getExecutionCountEPKS1_", "llvm::ProfileInfoT::getExecutionCount(llvm::Function const*)"}, + {"_ZN4llvm12ProfileInfoTINS_15MachineFunctionENS_17MachineBasicBlockEE17getExecutionCountEPKS1_", "llvm::ProfileInfoT::getExecutionCount(llvm::MachineFunction const*)"}, + {"_ZN4llvm12ProfileInfoTINS_8FunctionENS_10BasicBlockEE17setExecutionCountEPKS2_d", "llvm::ProfileInfoT::setExecutionCount(llvm::BasicBlock const*, double)"}, + {"_ZN4llvm12ProfileInfoTINS_15MachineFunctionENS_17MachineBasicBlockEE17setExecutionCountEPKS2_d", "llvm::ProfileInfoT::setExecutionCount(llvm::MachineBasicBlock const*, double)"}, + {"_ZN4llvm12ProfileInfoTINS_8FunctionENS_10BasicBlockEE13addEdgeWeightESt4pairIPKS2_S6_Ed", "llvm::ProfileInfoT::addEdgeWeight(std::pair, double)"}, + {"_ZN4llvm12ProfileInfoTINS_8FunctionENS_10BasicBlockEE17addExecutionCountEPKS2_d", "llvm::ProfileInfoT::addExecutionCount(llvm::BasicBlock const*, double)"}, + {"_ZN4llvm12ProfileInfoTINS_8FunctionENS_10BasicBlockEE11removeBlockEPKS2_", "llvm::ProfileInfoT::removeBlock(llvm::BasicBlock const*)"}, + {"_ZN4llvm12ProfileInfoTINS_8FunctionENS_10BasicBlockEE10removeEdgeESt4pairIPKS2_S6_E", "llvm::ProfileInfoT::removeEdge(std::pair)"}, + {"_ZN4llvm12ProfileInfoTINS_8FunctionENS_10BasicBlockEE11replaceEdgeERKSt4pairIPKS2_S6_ES9_", "llvm::ProfileInfoT::replaceEdge(std::pair const&, std::pair const&)"}, + {"_ZN4llvm12ProfileInfoTINS_8FunctionENS_10BasicBlockEE7GetPathEPKS2_S5_RSt3mapIS5_S5_St4lessIS5_ESaISt4pairIKS5_S5_EEEj", "llvm::ProfileInfoT::GetPath(llvm::BasicBlock const*, llvm::BasicBlock const*, std::map, std::allocator>>&, unsigned int)"}, + {"_ZN4llvm12ProfileInfoTINS_8FunctionENS_10BasicBlockEE10divertFlowERKSt4pairIPKS2_S6_ES9_", "llvm::ProfileInfoT::divertFlow(std::pair const&, std::pair const&)"}, + {"_ZN4llvm12ProfileInfoTINS_8FunctionENS_10BasicBlockEE14replaceAllUsesEPKS2_S5_", "llvm::ProfileInfoT::replaceAllUses(llvm::BasicBlock const*, llvm::BasicBlock const*)"}, + {"_ZN4llvm12ProfileInfoTINS_8FunctionENS_10BasicBlockEE9splitEdgeEPKS2_S5_S5_b", "llvm::ProfileInfoT::splitEdge(llvm::BasicBlock const*, llvm::BasicBlock const*, llvm::BasicBlock const*, bool)"}, + {"_ZN4llvm12ProfileInfoTINS_8FunctionENS_10BasicBlockEE10splitBlockEPKS2_S5_", "llvm::ProfileInfoT::splitBlock(llvm::BasicBlock const*, llvm::BasicBlock const*)"}, + {"_ZN4llvm12ProfileInfoTINS_8FunctionENS_10BasicBlockEE10splitBlockEPKS2_S5_PKPS2_j", "llvm::ProfileInfoT::splitBlock(llvm::BasicBlock const*, llvm::BasicBlock const*, llvm::BasicBlock* const*, unsigned int)"}, + {"_ZN4llvm12ProfileInfoTINS_8FunctionENS_10BasicBlockEE8transferEPKS1_S5_", "llvm::ProfileInfoT::transfer(llvm::Function const*, llvm::Function const*)"}, + {"_ZN4llvm12ProfileInfoTINS_8FunctionENS_10BasicBlockEE20CalculateMissingEdgeEPKS2_RSt4pairIS5_S5_Eb", "llvm::ProfileInfoT::CalculateMissingEdge(llvm::BasicBlock const*, std::pair&, bool)"}, + {"_ZN4llvm12ProfileInfoTINS_8FunctionENS_10BasicBlockEE20EstimateMissingEdgesEPKS2_", "llvm::ProfileInfoT::EstimateMissingEdges(llvm::BasicBlock const*)"}, + {"_ZN4llvm12ProfileInfoTINS_8FunctionENS_10BasicBlockEE6repairEPKS1_", "llvm::ProfileInfoT::repair(llvm::Function const*)"}, + {"_ZN4llvmlsERNS_11raw_ostreamEPKNS_8FunctionE", "llvm::operator<<(llvm::raw_ostream&, llvm::Function const*)"}, + {"_ZN4llvmlsERNS_11raw_ostreamEPKNS_15MachineFunctionE", "llvm::operator<<(llvm::raw_ostream&, llvm::MachineFunction const*)"}, + {"_ZN4llvmlsERNS_11raw_ostreamEPKNS_10BasicBlockE", "llvm::operator<<(llvm::raw_ostream&, llvm::BasicBlock const*)"}, + {"_ZN4llvmlsERNS_11raw_ostreamEPKNS_17MachineBasicBlockE", "llvm::operator<<(llvm::raw_ostream&, llvm::MachineBasicBlock const*)"}, + {"_ZN4llvmlsERNS_11raw_ostreamESt4pairIPKNS_10BasicBlockES5_E", "llvm::operator<<(llvm::raw_ostream&, std::pair)"}, + {"_ZN4llvmlsERNS_11raw_ostreamESt4pairIPKNS_17MachineBasicBlockES5_E", "llvm::operator<<(llvm::raw_ostream&, std::pair)"}, + {"_ZN4llvm27initializeNoProfileInfoPassERNS_12PassRegistryE", "llvm::initializeNoProfileInfoPass(llvm::PassRegistry&)"}, + {"_ZN4llvm23createNoProfileInfoPassEv", "llvm::createNoProfileInfoPass()"}, + {"_ZN12_GLOBAL__N_113NoProfileInfoD1Ev", "(anonymous namespace)::NoProfileInfo::~NoProfileInfo()"}, + {"_ZN12_GLOBAL__N_113NoProfileInfoD0Ev", "(anonymous namespace)::NoProfileInfo::~NoProfileInfo()"}, + {"_ZNK12_GLOBAL__N_113NoProfileInfo11getPassNameEv", "(anonymous namespace)::NoProfileInfo::getPassName() const"}, + {"_ZN12_GLOBAL__N_113NoProfileInfo26getAdjustedAnalysisPointerEPKv", "(anonymous namespace)::NoProfileInfo::getAdjustedAnalysisPointer(void const*)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_113NoProfileInfoEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::NoProfileInfo>()"}, + {"_ZNK4llvm12ProfileInfoTINS_8FunctionENS_10BasicBlockEE13getEdgeWeightESt4pairIPKS2_S6_E", "llvm::ProfileInfoT::getEdgeWeight(std::pair) const"}, + + // {"_ZNSt3mapIPKN4llvm8FunctionES_IPKNS0_10BasicBlockEdSt4lessIS6_ESaISt4pairIKS6_dEEES7_IS3_ESaIS9_IKS3_SD_EEEixERSF_", + // "std::map, std::allocator>>, std::less, std::allocator, std::allocator>>>>>::operator[](llvm::Function const* const&)"}, + // "std::map, std::allocator>>, std::less, std::allocator, std::allocator>>>>>::operator[](llvm::Function const* const&)" was returned + + + // {"_ZNSt3mapIPKN4llvm15MachineFunctionES_IPKNS0_17MachineBasicBlockEdSt4lessIS6_ESaISt4pairIKS6_dEEES7_IS3_ESaIS9_IKS3_SD_EEEixERSF_", + // "std::map, std::allocator>>, std::less, std::allocator, std::allocator>>>>>::operator[](llvm::MachineFunction const* const&)"}, + // "std::map, std::allocator>>, std::less, std::allocator, std::allocator>>>>>::operator[](llvm::MachineFunction const* const&)" was returned + + + // {"_ZNSt3mapIPKN4llvm8FunctionES_ISt4pairIPKNS0_10BasicBlockES7_EdSt4lessIS8_ESaIS4_IKS8_dEEES9_IS3_ESaIS4_IKS3_SE_EEEixERSG_", + // "std::map, double, std::less>, std::allocator const, double>>>, std::less, std::allocator, double, std::less>, std::allocator const, double>>>>>>::operator[](llvm::Function const* const&)"}, + // "std::map, double, std::less>, std::allocator const, double>>>, std::less, std::allocator, double, std::less>, std::allocator const, double>>>>>>::operator[](llvm::Function const* const&)" was returned + + {"_ZN4llvm12ProfileInfoTINS_8FunctionENS_10BasicBlockEE13setEdgeWeightESt4pairIPKS2_S6_Ed", "llvm::ProfileInfoT::setEdgeWeight(std::pair, double)"}, + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm10BasicBlockES4_ES0_IKS5_dESt10_Select1stIS7_ESt4lessIS5_ESaIS7_EE7_M_copyEPKSt13_Rb_tree_nodeIS7_EPSF_", + // "std::_Rb_tree, std::pair const, double>, std::_Select1st const, double>>, std::less>, std::allocator const, double>>>::_M_copy(std::_Rb_tree_node const, double>> const*, std::_Rb_tree_node const, double>>*)"}, + // "std::_Rb_tree, std::pair const, double>, std::_Select1st< const, double>>, std::less>, std::allocator< const, double>>>::_M_copy(std::_Rb_tree_node< const, double>> const*, std::_Rb_tree_node< const, double>>*)" was returned + + {"_ZNSt8_Rb_treeIPKN4llvm10BasicBlockES3_St9_IdentityIS3_ESt4lessIS3_ESaIS3_EE8_M_eraseEPSt13_Rb_tree_nodeIS3_E", "std::_Rb_tree, std::less, std::allocator>::_M_erase(std::_Rb_tree_node*)"}, + {"_ZNSt8_Rb_treeISt4pairIPKN4llvm10BasicBlockES4_ES5_St9_IdentityIS5_ESt4lessIS5_ESaIS5_EE5eraseESt17_Rb_tree_iteratorIS5_ESD_", "std::_Rb_tree, std::pair, std::_Identity>, std::less>, std::allocator>>::erase(std::_Rb_tree_iterator>, std::_Rb_tree_iterator>)"}, + {"_ZNSt8_Rb_treeIPKN4llvm10BasicBlockES3_St9_IdentityIS3_ESt4lessIS3_ESaIS3_EE5eraseESt17_Rb_tree_iteratorIS3_ESB_", "std::_Rb_tree, std::less, std::allocator>::erase(std::_Rb_tree_iterator, std::_Rb_tree_iterator)"}, + {"_ZNSt8_Rb_treeIPKN4llvm8FunctionESt4pairIKS3_dESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE5eraseESt17_Rb_tree_iteratorIS6_ESE_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::erase(std::_Rb_tree_iterator>, std::_Rb_tree_iterator>)"}, + {"_ZNSt8_Rb_treeIPKN4llvm8FunctionESt4pairIKS3_dESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE8_M_eraseEPSt13_Rb_tree_nodeIS6_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZNSt8_Rb_treeIPKN4llvm8FunctionESt4pairIKS3_St3mapIPKNS0_10BasicBlockEdSt4lessIS9_ESaIS4_IKS9_dEEEESt10_Select1stISG_ESA_IS3_ESaISG_EE5eraseESt17_Rb_tree_iteratorISG_ESN_", "std::_Rb_tree, std::allocator>>>, std::_Select1st, std::allocator>>>>, std::less, std::allocator, std::allocator>>>>>::erase(std::_Rb_tree_iterator, std::allocator>>>>, std::_Rb_tree_iterator, std::allocator>>>>)"}, + {"_ZNSt8_Rb_treeIPKN4llvm10BasicBlockESt4pairIKS3_dESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE8_M_eraseEPSt13_Rb_tree_nodeIS6_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZNSt8_Rb_treeIPKN4llvm8FunctionESt4pairIKS3_St3mapIPKNS0_10BasicBlockEdSt4lessIS9_ESaIS4_IKS9_dEEEESt10_Select1stISG_ESA_IS3_ESaISG_EE8_M_eraseEPSt13_Rb_tree_nodeISG_E", "std::_Rb_tree, std::allocator>>>, std::_Select1st, std::allocator>>>>, std::less, std::allocator, std::allocator>>>>>::_M_erase(std::_Rb_tree_node, std::allocator>>>>*)"}, + + // {"_ZNSt8_Rb_treeIPKN4llvm8FunctionESt4pairIKS3_St3mapIS4_IPKNS0_10BasicBlockES9_EdSt4lessISA_ESaIS4_IKSA_dEEEESt10_Select1stISH_ESB_IS3_ESaISH_EE5eraseESt17_Rb_tree_iteratorISH_ESO_", + // "std::_Rb_tree, double, std::less>, std::allocator const, double>>>>, std::_Select1st, double, std::less>, std::allocator const, double>>>>>, std::less, std::allocator, double, std::less>, std::allocator const, double>>>>>>::erase(std::_Rb_tree_iterator, double, std::less>, std::allocator const, double>>>>>, std::_Rb_tree_iterator, double, std::less>, std::allocator const, double>>>>>)"}, + // "std::_Rb_tree, double, std::less<>, std::allocator const, double>>>>, std::_Select1st, double, std::less<>, std::allocator const, double>>>>>, std::less, std::allocator, double, std::less<>, std::allocator const, double>>>>>>::erase(std::_Rb_tree_iterator, double, std::less<>, std::allocator const, double>>>>>, std::_Rb_tree_iterator, double, std::less<>, std::allocator const, double>>>>>)" was returned + + + // {"_ZNSt8_Rb_treeIPKN4llvm8FunctionESt4pairIKS3_St3mapIS4_IPKNS0_10BasicBlockES9_EdSt4lessISA_ESaIS4_IKSA_dEEEESt10_Select1stISH_ESB_IS3_ESaISH_EE8_M_eraseEPSt13_Rb_tree_nodeISH_E", + // "std::_Rb_tree, double, std::less>, std::allocator const, double>>>>, std::_Select1st, double, std::less>, std::allocator const, double>>>>>, std::less, std::allocator, double, std::less>, std::allocator const, double>>>>>>::_M_erase(std::_Rb_tree_node, double, std::less>, std::allocator const, double>>>>>*)"}, + // "std::_Rb_tree, double, std::less<>, std::allocator const, double>>>>, std::_Select1st, double, std::less<>, std::allocator const, double>>>>>, std::less, std::allocator, double, std::less<>, std::allocator const, double>>>>>>::_M_erase(std::_Rb_tree_node, double, std::less<>, std::allocator const, double>>>>>*)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm10BasicBlockES4_ES0_IKS5_dESt10_Select1stIS7_ESt4lessIS5_ESaIS7_EE8_M_eraseEPSt13_Rb_tree_nodeIS7_E", + // "std::_Rb_tree, std::pair const, double>, std::_Select1st const, double>>, std::less>, std::allocator const, double>>>::_M_erase(std::_Rb_tree_node const, double>>*)"}, + // "std::_Rb_tree, std::pair const, double>, std::_Select1st< const, double>>, std::less>, std::allocator< const, double>>>::_M_erase(std::_Rb_tree_node< const, double>>*)" was returned + + {"_ZNSt8_Rb_treeIPKN4llvm10BasicBlockESt4pairIKS3_S3_ESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS6_ERKS6_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm10BasicBlockESt4pairIKS3_S3_ESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE16_M_insert_uniqueERKS6_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZNSt5dequeIPKN4llvm10BasicBlockESaIS3_EE9push_backERKS3_", "std::deque>::push_back(llvm::BasicBlock const* const&)"}, + {"_ZNSt5dequeIPKN4llvm10BasicBlockESaIS3_EE17_M_reallocate_mapEmb", "std::deque>::_M_reallocate_map(unsigned long, bool)"}, + {"_ZNSt11_Deque_baseIPKN4llvm10BasicBlockESaIS3_EE17_M_initialize_mapEm", "std::_Deque_base>::_M_initialize_map(unsigned long)"}, + {"_ZNSt5dequeIPKN4llvm10BasicBlockESaIS3_EEC2ERKS5_", "std::deque>::deque(std::deque> const&)"}, + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm10BasicBlockES4_ES0_IKS5_dESt10_Select1stIS7_ESt4lessIS5_ESaIS7_EE5eraseESt17_Rb_tree_iteratorIS7_ESF_", + // "std::_Rb_tree, std::pair const, double>, std::_Select1st const, double>>, std::less>, std::allocator const, double>>>::erase(std::_Rb_tree_iterator const, double>>, std::_Rb_tree_iterator const, double>>)"}, + // "std::_Rb_tree, std::pair const, double>, std::_Select1st< const, double>>, std::less>, std::allocator< const, double>>>::erase(std::_Rb_tree_iterator< const, double>>, std::_Rb_tree_iterator< const, double>>)" was returned + + {"_ZNSt8_Rb_treeIPKN4llvm10BasicBlockESt4pairIKS3_dESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE5eraseESt17_Rb_tree_iteratorIS6_ESE_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::erase(std::_Rb_tree_iterator>, std::_Rb_tree_iterator>)"}, + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm10BasicBlockES4_ES0_IKS5_dESt10_Select1stIS7_ESt4lessIS5_ESaIS7_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS7_ERKS7_", + // "std::_Rb_tree, std::pair const, double>, std::_Select1st const, double>>, std::less>, std::allocator const, double>>>::_M_insert_unique(std::_Rb_tree_iterator const, double>>, std::pair const, double> const&)"}, + // "std::_Rb_tree, std::pair const, double>, std::_Select1st< const, double>>, std::less>, std::allocator< const, double>>>::_M_insert_unique(std::_Rb_tree_iterator< const, double>>, const, double> const&)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm10BasicBlockES4_ES0_IKS5_dESt10_Select1stIS7_ESt4lessIS5_ESaIS7_EE16_M_insert_uniqueERKS7_", + // "std::_Rb_tree, std::pair const, double>, std::_Select1st const, double>>, std::less>, std::allocator const, double>>>::_M_insert_unique(std::pair const, double> const&)"}, + // "std::_Rb_tree, std::pair const, double>, std::_Select1st< const, double>>, std::less>, std::allocator< const, double>>>::_M_insert_unique( const, double> const&)" was returned + + + // {"_ZNSt8_Rb_treeIPKN4llvm8FunctionESt4pairIKS3_St3mapIS4_IPKNS0_10BasicBlockES9_EdSt4lessISA_ESaIS4_IKSA_dEEEESt10_Select1stISH_ESB_IS3_ESaISH_EE16_M_insert_uniqueESt17_Rb_tree_iteratorISH_ERKSH_", + // "std::_Rb_tree, double, std::less>, std::allocator const, double>>>>, std::_Select1st, double, std::less>, std::allocator const, double>>>>>, std::less, std::allocator, double, std::less>, std::allocator const, double>>>>>>::_M_insert_unique(std::_Rb_tree_iterator, double, std::less>, std::allocator const, double>>>>>, std::pair, double, std::less>, std::allocator const, double>>>> const&)"}, + // "std::_Rb_tree, double, std::less<>, std::allocator const, double>>>>, std::_Select1st, double, std::less<>, std::allocator const, double>>>>>, std::less, std::allocator, double, std::less<>, std::allocator const, double>>>>>>::_M_insert_unique(std::_Rb_tree_iterator, double, std::less<>, std::allocator const, double>>>>>, std::pair, double, std::less<>, std::allocator const, double>>>> const&)" was returned + + + // {"_ZNSt8_Rb_treeIPKN4llvm8FunctionESt4pairIKS3_St3mapIS4_IPKNS0_10BasicBlockES9_EdSt4lessISA_ESaIS4_IKSA_dEEEESt10_Select1stISH_ESB_IS3_ESaISH_EE9_M_insertEPSt18_Rb_tree_node_baseSO_RKSH_", + // "std::_Rb_tree, double, std::less>, std::allocator const, double>>>>, std::_Select1st, double, std::less>, std::allocator const, double>>>>>, std::less, std::allocator, double, std::less>, std::allocator const, double>>>>>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair, double, std::less>, std::allocator const, double>>>> const&)"}, + // "std::_Rb_tree, double, std::less<>, std::allocator const, double>>>>, std::_Select1st, double, std::less<>, std::allocator const, double>>>>>, std::less, std::allocator, double, std::less<>, std::allocator const, double>>>>>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair, double, std::less<>, std::allocator const, double>>>> const&)" was returned + + + // {"_ZNSt8_Rb_treeIPKN4llvm8FunctionESt4pairIKS3_St3mapIS4_IPKNS0_10BasicBlockES9_EdSt4lessISA_ESaIS4_IKSA_dEEEESt10_Select1stISH_ESB_IS3_ESaISH_EE16_M_insert_uniqueERKSH_", + // "std::_Rb_tree, double, std::less>, std::allocator const, double>>>>, std::_Select1st, double, std::less>, std::allocator const, double>>>>>, std::less, std::allocator, double, std::less>, std::allocator const, double>>>>>>::_M_insert_unique(std::pair, double, std::less>, std::allocator const, double>>>> const&)"}, + // "std::_Rb_tree, double, std::less<>, std::allocator const, double>>>>, std::_Select1st, double, std::less<>, std::allocator const, double>>>>>, std::less, std::allocator, double, std::less<>, std::allocator const, double>>>>>>::_M_insert_unique(std::pair, double, std::less<>, std::allocator const, double>>>> const&)" was returned + + {"_ZNSt8_Rb_treeIPKN4llvm17MachineBasicBlockESt4pairIKS3_dESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS6_ERKS6_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm17MachineBasicBlockESt4pairIKS3_dESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE16_M_insert_uniqueERKS6_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm17MachineBasicBlockESt4pairIKS3_dESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE8_M_eraseEPSt13_Rb_tree_nodeIS6_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZNSt8_Rb_treeIPKN4llvm17MachineBasicBlockESt4pairIKS3_dESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE7_M_copyEPKSt13_Rb_tree_nodeIS6_EPSE_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_copy(std::_Rb_tree_node> const*, std::_Rb_tree_node>*)"}, + {"_ZNSt8_Rb_treeIPKN4llvm15MachineFunctionESt4pairIKS3_St3mapIPKNS0_17MachineBasicBlockEdSt4lessIS9_ESaIS4_IKS9_dEEEESt10_Select1stISG_ESA_IS3_ESaISG_EE16_M_insert_uniqueESt17_Rb_tree_iteratorISG_ERKSG_", "std::_Rb_tree, std::allocator>>>, std::_Select1st, std::allocator>>>>, std::less, std::allocator, std::allocator>>>>>::_M_insert_unique(std::_Rb_tree_iterator, std::allocator>>>>, std::pair, std::allocator>>> const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm15MachineFunctionESt4pairIKS3_St3mapIPKNS0_17MachineBasicBlockEdSt4lessIS9_ESaIS4_IKS9_dEEEESt10_Select1stISG_ESA_IS3_ESaISG_EE9_M_insertEPSt18_Rb_tree_node_baseSN_RKSG_", "std::_Rb_tree, std::allocator>>>, std::_Select1st, std::allocator>>>>, std::less, std::allocator, std::allocator>>>>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair, std::allocator>>> const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm15MachineFunctionESt4pairIKS3_St3mapIPKNS0_17MachineBasicBlockEdSt4lessIS9_ESaIS4_IKS9_dEEEESt10_Select1stISG_ESA_IS3_ESaISG_EE16_M_insert_uniqueERKSG_", "std::_Rb_tree, std::allocator>>>, std::_Select1st, std::allocator>>>>, std::less, std::allocator, std::allocator>>>>>::_M_insert_unique(std::pair, std::allocator>>> const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm15MachineFunctionESt4pairIKS3_dESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS6_ERKS6_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm15MachineFunctionESt4pairIKS3_dESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE16_M_insert_uniqueERKS6_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm8FunctionESt4pairIKS3_dESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS6_ERKS6_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm8FunctionESt4pairIKS3_dESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE16_M_insert_uniqueERKS6_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm10BasicBlockESt4pairIKS3_dESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS6_ERKS6_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm10BasicBlockESt4pairIKS3_dESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE16_M_insert_uniqueERKS6_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm10BasicBlockESt4pairIKS3_dESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE7_M_copyEPKSt13_Rb_tree_nodeIS6_EPSE_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_copy(std::_Rb_tree_node> const*, std::_Rb_tree_node>*)"}, + {"_ZNSt8_Rb_treeIPKN4llvm8FunctionESt4pairIKS3_St3mapIPKNS0_10BasicBlockEdSt4lessIS9_ESaIS4_IKS9_dEEEESt10_Select1stISG_ESA_IS3_ESaISG_EE16_M_insert_uniqueESt17_Rb_tree_iteratorISG_ERKSG_", "std::_Rb_tree, std::allocator>>>, std::_Select1st, std::allocator>>>>, std::less, std::allocator, std::allocator>>>>>::_M_insert_unique(std::_Rb_tree_iterator, std::allocator>>>>, std::pair, std::allocator>>> const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm8FunctionESt4pairIKS3_St3mapIPKNS0_10BasicBlockEdSt4lessIS9_ESaIS4_IKS9_dEEEESt10_Select1stISG_ESA_IS3_ESaISG_EE9_M_insertEPSt18_Rb_tree_node_baseSN_RKSG_", "std::_Rb_tree, std::allocator>>>, std::_Select1st, std::allocator>>>>, std::less, std::allocator, std::allocator>>>>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair, std::allocator>>> const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm8FunctionESt4pairIKS3_St3mapIPKNS0_10BasicBlockEdSt4lessIS9_ESaIS4_IKS9_dEEEESt10_Select1stISG_ESA_IS3_ESaISG_EE16_M_insert_uniqueERKSG_", "std::_Rb_tree, std::allocator>>>, std::_Select1st, std::allocator>>>>, std::less, std::allocator, std::allocator>>>>>::_M_insert_unique(std::pair, std::allocator>>> const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm10BasicBlockES3_St9_IdentityIS3_ESt4lessIS3_ESaIS3_EE16_M_insert_uniqueERKS3_", "std::_Rb_tree, std::less, std::allocator>::_M_insert_unique(llvm::BasicBlock const* const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm10BasicBlockESt4pairIKS3_S3_ESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE8_M_eraseEPSt13_Rb_tree_nodeIS6_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + + // {"_ZNSt8_Rb_treeIPKN4llvm15MachineFunctionESt4pairIKS3_St3mapIS4_IPKNS0_17MachineBasicBlockES9_EdSt4lessISA_ESaIS4_IKSA_dEEEESt10_Select1stISH_ESB_IS3_ESaISH_EE8_M_eraseEPSt13_Rb_tree_nodeISH_E", + // "std::_Rb_tree, double, std::less>, std::allocator const, double>>>>, std::_Select1st, double, std::less>, std::allocator const, double>>>>>, std::less, std::allocator, double, std::less>, std::allocator const, double>>>>>>::_M_erase(std::_Rb_tree_node, double, std::less>, std::allocator const, double>>>>>*)"}, + // "std::_Rb_tree, double, std::less<>, std::allocator const, double>>>>, std::_Select1st, double, std::less<>, std::allocator const, double>>>>>, std::less, std::allocator, double, std::less<>, std::allocator const, double>>>>>>::_M_erase(std::_Rb_tree_node, double, std::less<>, std::allocator const, double>>>>>*)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm17MachineBasicBlockES4_ES0_IKS5_dESt10_Select1stIS7_ESt4lessIS5_ESaIS7_EE8_M_eraseEPSt13_Rb_tree_nodeIS7_E", + // "std::_Rb_tree, std::pair const, double>, std::_Select1st const, double>>, std::less>, std::allocator const, double>>>::_M_erase(std::_Rb_tree_node const, double>>*)"}, + // "std::_Rb_tree, std::pair const, double>, std::_Select1st< const, double>>, std::less>, std::allocator< const, double>>>::_M_erase(std::_Rb_tree_node< const, double>>*)" was returned + + {"_ZNSt8_Rb_treeIPKN4llvm15MachineFunctionESt4pairIKS3_St3mapIPKNS0_17MachineBasicBlockEdSt4lessIS9_ESaIS4_IKS9_dEEEESt10_Select1stISG_ESA_IS3_ESaISG_EE8_M_eraseEPSt13_Rb_tree_nodeISG_E", "std::_Rb_tree, std::allocator>>>, std::_Select1st, std::allocator>>>>, std::less, std::allocator, std::allocator>>>>>::_M_erase(std::_Rb_tree_node, std::allocator>>>>*)"}, + {"_ZNSt8_Rb_treeIPKN4llvm15MachineFunctionESt4pairIKS3_dESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE8_M_eraseEPSt13_Rb_tree_nodeIS6_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZN4llvm29initializeScalarEvolutionPassERNS_12PassRegistryE", "llvm::initializeScalarEvolutionPass(llvm::PassRegistry&)"}, + {"_ZNK4llvm4SCEV4dumpEv", "llvm::SCEV::dump() const"}, + {"_ZNK4llvm4SCEV5printERNS_11raw_ostreamE", "llvm::SCEV::print(llvm::raw_ostream&) const"}, + {"_ZNK4llvm4SCEV7getTypeEv", "llvm::SCEV::getType() const"}, + {"_ZNK4llvm11SCEVUnknown8isSizeOfERPKNS_4TypeE", "llvm::SCEVUnknown::isSizeOf(llvm::Type const*&) const"}, + {"_ZNK4llvm11SCEVUnknown9isAlignOfERPKNS_4TypeE", "llvm::SCEVUnknown::isAlignOf(llvm::Type const*&) const"}, + {"_ZNK4llvm11SCEVUnknown10isOffsetOfERPKNS_4TypeERPNS_8ConstantE", "llvm::SCEVUnknown::isOffsetOf(llvm::Type const*&, llvm::Constant*&) const"}, + {"_ZNK4llvm4SCEV6isZeroEv", "llvm::SCEV::isZero() const"}, + {"_ZNK4llvm4SCEV5isOneEv", "llvm::SCEV::isOne() const"}, + {"_ZNK4llvm4SCEV14isAllOnesValueEv", "llvm::SCEV::isAllOnesValue() const"}, + {"_ZN4llvm19SCEVCouldNotComputeC1Ev", "llvm::SCEVCouldNotCompute::SCEVCouldNotCompute()"}, + {"_ZN4llvm19SCEVCouldNotComputeC2Ev", "llvm::SCEVCouldNotCompute::SCEVCouldNotCompute()"}, + {"_ZN4llvm19SCEVCouldNotCompute7classofEPKNS_4SCEVE", "llvm::SCEVCouldNotCompute::classof(llvm::SCEV const*)"}, + {"_ZN4llvm15ScalarEvolution11getConstantEPNS_11ConstantIntE", "llvm::ScalarEvolution::getConstant(llvm::ConstantInt*)"}, + {"_ZN4llvm15ScalarEvolution11getConstantERKNS_5APIntE", "llvm::ScalarEvolution::getConstant(llvm::APInt const&)"}, + {"_ZN4llvm15ScalarEvolution11getConstantEPKNS_4TypeEyb", "llvm::ScalarEvolution::getConstant(llvm::Type const*, unsigned long long, bool)"}, + {"_ZNK4llvm15ScalarEvolution20getEffectiveSCEVTypeEPKNS_4TypeE", "llvm::ScalarEvolution::getEffectiveSCEVType(llvm::Type const*) const"}, + {"_ZN4llvm12SCEVCastExprC1ENS_19FoldingSetNodeIDRefEjPKNS_4SCEVEPKNS_4TypeE", "llvm::SCEVCastExpr::SCEVCastExpr(llvm::FoldingSetNodeIDRef, unsigned int, llvm::SCEV const*, llvm::Type const*)"}, + {"_ZN4llvm12SCEVCastExprC2ENS_19FoldingSetNodeIDRefEjPKNS_4SCEVEPKNS_4TypeE", "llvm::SCEVCastExpr::SCEVCastExpr(llvm::FoldingSetNodeIDRef, unsigned int, llvm::SCEV const*, llvm::Type const*)"}, + {"_ZN4llvm16SCEVTruncateExprC1ENS_19FoldingSetNodeIDRefEPKNS_4SCEVEPKNS_4TypeE", "llvm::SCEVTruncateExpr::SCEVTruncateExpr(llvm::FoldingSetNodeIDRef, llvm::SCEV const*, llvm::Type const*)"}, + {"_ZN4llvm16SCEVTruncateExprC2ENS_19FoldingSetNodeIDRefEPKNS_4SCEVEPKNS_4TypeE", "llvm::SCEVTruncateExpr::SCEVTruncateExpr(llvm::FoldingSetNodeIDRef, llvm::SCEV const*, llvm::Type const*)"}, + {"_ZN4llvm18SCEVZeroExtendExprC1ENS_19FoldingSetNodeIDRefEPKNS_4SCEVEPKNS_4TypeE", "llvm::SCEVZeroExtendExpr::SCEVZeroExtendExpr(llvm::FoldingSetNodeIDRef, llvm::SCEV const*, llvm::Type const*)"}, + {"_ZN4llvm18SCEVZeroExtendExprC2ENS_19FoldingSetNodeIDRefEPKNS_4SCEVEPKNS_4TypeE", "llvm::SCEVZeroExtendExpr::SCEVZeroExtendExpr(llvm::FoldingSetNodeIDRef, llvm::SCEV const*, llvm::Type const*)"}, + {"_ZN4llvm18SCEVSignExtendExprC1ENS_19FoldingSetNodeIDRefEPKNS_4SCEVEPKNS_4TypeE", "llvm::SCEVSignExtendExpr::SCEVSignExtendExpr(llvm::FoldingSetNodeIDRef, llvm::SCEV const*, llvm::Type const*)"}, + {"_ZN4llvm18SCEVSignExtendExprC2ENS_19FoldingSetNodeIDRefEPKNS_4SCEVEPKNS_4TypeE", "llvm::SCEVSignExtendExpr::SCEVSignExtendExpr(llvm::FoldingSetNodeIDRef, llvm::SCEV const*, llvm::Type const*)"}, + {"_ZN4llvm11SCEVUnknown7deletedEv", "llvm::SCEVUnknown::deleted()"}, + {"_ZN4llvm15ScalarEvolution21forgetMemoizedResultsEPKNS_4SCEVE", "llvm::ScalarEvolution::forgetMemoizedResults(llvm::SCEV const*)"}, + {"_ZN4llvm11SCEVUnknown19allUsesReplacedWithEPNS_5ValueE", "llvm::SCEVUnknown::allUsesReplacedWith(llvm::Value*)"}, + {"_ZNK4llvm14SCEVAddRecExpr19evaluateAtIterationEPKNS_4SCEVERNS_15ScalarEvolutionE", "llvm::SCEVAddRecExpr::evaluateAtIteration(llvm::SCEV const*, llvm::ScalarEvolution&) const"}, + {"_ZN4llvm15ScalarEvolution15getTruncateExprEPKNS_4SCEVEPKNS_4TypeE", "llvm::ScalarEvolution::getTruncateExpr(llvm::SCEV const*, llvm::Type const*)"}, + {"_ZN4llvm15ScalarEvolution23getTruncateOrSignExtendEPKNS_4SCEVEPKNS_4TypeE", "llvm::ScalarEvolution::getTruncateOrSignExtend(llvm::SCEV const*, llvm::Type const*)"}, + {"_ZN4llvm15ScalarEvolution23getTruncateOrZeroExtendEPKNS_4SCEVEPKNS_4TypeE", "llvm::ScalarEvolution::getTruncateOrZeroExtend(llvm::SCEV const*, llvm::Type const*)"}, + {"_ZN4llvm15ScalarEvolution10getAddExprERNS_15SmallVectorImplIPKNS_4SCEVEEEbb", "llvm::ScalarEvolution::getAddExpr(llvm::SmallVectorImpl&, bool, bool)"}, + {"_ZN4llvm15ScalarEvolution10getMulExprERNS_15SmallVectorImplIPKNS_4SCEVEEEbb", "llvm::ScalarEvolution::getMulExpr(llvm::SmallVectorImpl&, bool, bool)"}, + {"_ZN4llvm15ScalarEvolution13getAddRecExprERNS_15SmallVectorImplIPKNS_4SCEVEEEPKNS_4LoopEbb", "llvm::ScalarEvolution::getAddRecExpr(llvm::SmallVectorImpl&, llvm::Loop const*, bool, bool)"}, + {"_ZN4llvm15ScalarEvolution7getSCEVEPNS_5ValueE", "llvm::ScalarEvolution::getSCEV(llvm::Value*)"}, + {"_ZN4llvm15ScalarEvolution17getZeroExtendExprEPKNS_4SCEVEPKNS_4TypeE", "llvm::ScalarEvolution::getZeroExtendExpr(llvm::SCEV const*, llvm::Type const*)"}, + {"_ZN4llvm15ScalarEvolution16getUnsignedRangeEPKNS_4SCEVE", "llvm::ScalarEvolution::getUnsignedRange(llvm::SCEV const*)"}, + {"_ZNK4llvm15ScalarEvolution17getTypeSizeInBitsEPKNS_4TypeE", "llvm::ScalarEvolution::getTypeSizeInBits(llvm::Type const*) const"}, + {"_ZN4llvm15ScalarEvolution13getAddRecExprEPKNS_4SCEVES3_PKNS_4LoopEbb", "llvm::ScalarEvolution::getAddRecExpr(llvm::SCEV const*, llvm::SCEV const*, llvm::Loop const*, bool, bool)"}, + {"_ZN4llvm15ScalarEvolution24getMaxBackedgeTakenCountEPKNS_4LoopE", "llvm::ScalarEvolution::getMaxBackedgeTakenCount(llvm::Loop const*)"}, + {"_ZN4llvm15ScalarEvolution17getSignExtendExprEPKNS_4SCEVEPKNS_4TypeE", "llvm::ScalarEvolution::getSignExtendExpr(llvm::SCEV const*, llvm::Type const*)"}, + {"_ZN4llvm15ScalarEvolution15isKnownPositiveEPKNS_4SCEVE", "llvm::ScalarEvolution::isKnownPositive(llvm::SCEV const*)"}, + {"_ZN4llvm15ScalarEvolution27isLoopBackedgeGuardedByCondEPKNS_4LoopENS_7CmpInst9PredicateEPKNS_4SCEVES8_", "llvm::ScalarEvolution::isLoopBackedgeGuardedByCond(llvm::Loop const*, llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*)"}, + {"_ZN4llvm15ScalarEvolution24isLoopEntryGuardedByCondEPKNS_4LoopENS_7CmpInst9PredicateEPKNS_4SCEVES8_", "llvm::ScalarEvolution::isLoopEntryGuardedByCond(llvm::Loop const*, llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*)"}, + {"_ZN4llvm15ScalarEvolution15isKnownNegativeEPKNS_4SCEVE", "llvm::ScalarEvolution::isKnownNegative(llvm::SCEV const*)"}, + {"_ZN4llvm15ScalarEvolution14getSignedRangeEPKNS_4SCEVE", "llvm::ScalarEvolution::getSignedRange(llvm::SCEV const*)"}, + {"_ZN4llvm15ScalarEvolution18isKnownNonNegativeEPKNS_4SCEVE", "llvm::ScalarEvolution::isKnownNonNegative(llvm::SCEV const*)"}, + {"_ZN4llvm15ScalarEvolution16getAnyExtendExprEPKNS_4SCEVEPKNS_4TypeE", "llvm::ScalarEvolution::getAnyExtendExpr(llvm::SCEV const*, llvm::Type const*)"}, + {"_ZN4llvm15ScalarEvolution17getTruncateOrNoopEPKNS_4SCEVEPKNS_4TypeE", "llvm::ScalarEvolution::getTruncateOrNoop(llvm::SCEV const*, llvm::Type const*)"}, + {"_Z17GroupByComplexityRN4llvm15SmallVectorImplIPKNS_4SCEVEEEPNS_8LoopInfoE", "GroupByComplexity(llvm::SmallVectorImpl&, llvm::LoopInfo*)"}, + + // {"_Z28CollectAddOperandsWithScalesRN4llvm8DenseMapIPKNS_4SCEVENS_5APIntENS_12DenseMapInfoIS3_EENS5_IS4_EEEERNS_11SmallVectorIS3_Lj8EEERS4_PKS3_mRKS4_RNS_15ScalarEvolutionE", + // "CollectAddOperandsWithScales(llvm::DenseMap, llvm::DenseMapInfo>&, llvm::SmallVector&, llvm::APInt&, llvm::SCEV const* const*, unsigned long, llvm::APInt const&, llvm::ScalarEvolution&)"}, + // "CollectAddOperandsWithScales(llvm::DenseMap, llvm::DenseMapInfo>&, llvm::SmallVector&, llvm::APInt&, llvm::SCEV const* const*, unsigned long, llvm::APInt const&, llvm::ScalarEvolution&)" was returned + + {"_ZN4llvm15ScalarEvolution15isLoopInvariantEPKNS_4SCEVEPKNS_4LoopE", "llvm::ScalarEvolution::isLoopInvariant(llvm::SCEV const*, llvm::Loop const*)"}, + {"_ZN4llvm15ScalarEvolution11getUDivExprEPKNS_4SCEVES3_", "llvm::ScalarEvolution::getUDivExpr(llvm::SCEV const*, llvm::SCEV const*)"}, + {"_ZN4llvm15ScalarEvolution11getSMaxExprEPKNS_4SCEVES3_", "llvm::ScalarEvolution::getSMaxExpr(llvm::SCEV const*, llvm::SCEV const*)"}, + {"_ZN4llvm15ScalarEvolution11getSMaxExprERNS_15SmallVectorImplIPKNS_4SCEVEEE", "llvm::ScalarEvolution::getSMaxExpr(llvm::SmallVectorImpl&)"}, + {"_ZN4llvm15ScalarEvolution16isKnownPredicateENS_7CmpInst9PredicateEPKNS_4SCEVES5_", "llvm::ScalarEvolution::isKnownPredicate(llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*)"}, + {"_ZN4llvm15ScalarEvolution11getUMaxExprEPKNS_4SCEVES3_", "llvm::ScalarEvolution::getUMaxExpr(llvm::SCEV const*, llvm::SCEV const*)"}, + {"_ZN4llvm15ScalarEvolution11getUMaxExprERNS_15SmallVectorImplIPKNS_4SCEVEEE", "llvm::ScalarEvolution::getUMaxExpr(llvm::SmallVectorImpl&)"}, + {"_ZN4llvm15ScalarEvolution11getSMinExprEPKNS_4SCEVES3_", "llvm::ScalarEvolution::getSMinExpr(llvm::SCEV const*, llvm::SCEV const*)"}, + {"_ZN4llvm15ScalarEvolution10getNotSCEVEPKNS_4SCEVE", "llvm::ScalarEvolution::getNotSCEV(llvm::SCEV const*)"}, + {"_ZN4llvm15ScalarEvolution11getUMinExprEPKNS_4SCEVES3_", "llvm::ScalarEvolution::getUMinExpr(llvm::SCEV const*, llvm::SCEV const*)"}, + {"_ZN4llvm15ScalarEvolution13getSizeOfExprEPKNS_4TypeE", "llvm::ScalarEvolution::getSizeOfExpr(llvm::Type const*)"}, + {"_ZN4llvm15ScalarEvolution14getAlignOfExprEPKNS_4TypeE", "llvm::ScalarEvolution::getAlignOfExpr(llvm::Type const*)"}, + {"_ZN4llvm15ScalarEvolution15getOffsetOfExprEPKNS_10StructTypeEj", "llvm::ScalarEvolution::getOffsetOfExpr(llvm::StructType const*, unsigned int)"}, + {"_ZN4llvm15ScalarEvolution15getOffsetOfExprEPKNS_4TypeEPNS_8ConstantE", "llvm::ScalarEvolution::getOffsetOfExpr(llvm::Type const*, llvm::Constant*)"}, + {"_ZN4llvm15ScalarEvolution10getUnknownEPNS_5ValueE", "llvm::ScalarEvolution::getUnknown(llvm::Value*)"}, + {"_ZNK4llvm15ScalarEvolution10isSCEVableEPKNS_4TypeE", "llvm::ScalarEvolution::isSCEVable(llvm::Type const*) const"}, + {"_ZN4llvm15ScalarEvolution18getCouldNotComputeEv", "llvm::ScalarEvolution::getCouldNotCompute()"}, + {"_ZN4llvm15ScalarEvolution14SCEVCallbackVHC1EPNS_5ValueEPS0_", "llvm::ScalarEvolution::SCEVCallbackVH::SCEVCallbackVH(llvm::Value*, llvm::ScalarEvolution*)"}, + {"_ZN4llvm15ScalarEvolution10createSCEVEPNS_5ValueE", "llvm::ScalarEvolution::createSCEV(llvm::Value*)"}, + {"_ZN4llvm15ScalarEvolution15getNegativeSCEVEPKNS_4SCEVE", "llvm::ScalarEvolution::getNegativeSCEV(llvm::SCEV const*)"}, + {"_ZN4llvm15ScalarEvolution12getMinusSCEVEPKNS_4SCEVES3_bb", "llvm::ScalarEvolution::getMinusSCEV(llvm::SCEV const*, llvm::SCEV const*, bool, bool)"}, + {"_ZN4llvm15ScalarEvolution19getNoopOrZeroExtendEPKNS_4SCEVEPKNS_4TypeE", "llvm::ScalarEvolution::getNoopOrZeroExtend(llvm::SCEV const*, llvm::Type const*)"}, + {"_ZN4llvm15ScalarEvolution19getNoopOrSignExtendEPKNS_4SCEVEPKNS_4TypeE", "llvm::ScalarEvolution::getNoopOrSignExtend(llvm::SCEV const*, llvm::Type const*)"}, + {"_ZN4llvm15ScalarEvolution18getNoopOrAnyExtendEPKNS_4SCEVEPKNS_4TypeE", "llvm::ScalarEvolution::getNoopOrAnyExtend(llvm::SCEV const*, llvm::Type const*)"}, + {"_ZN4llvm15ScalarEvolution26getUMaxFromMismatchedTypesEPKNS_4SCEVES3_", "llvm::ScalarEvolution::getUMaxFromMismatchedTypes(llvm::SCEV const*, llvm::SCEV const*)"}, + {"_ZN4llvm15ScalarEvolution26getUMinFromMismatchedTypesEPKNS_4SCEVES3_", "llvm::ScalarEvolution::getUMinFromMismatchedTypes(llvm::SCEV const*, llvm::SCEV const*)"}, + {"_ZN4llvm15ScalarEvolution18ForgetSymbolicNameEPNS_11InstructionEPKNS_4SCEVE", "llvm::ScalarEvolution::ForgetSymbolicName(llvm::Instruction*, llvm::SCEV const*)"}, + {"_ZNK4llvm15ScalarEvolution10hasOperandEPKNS_4SCEVES3_", "llvm::ScalarEvolution::hasOperand(llvm::SCEV const*, llvm::SCEV const*) const"}, + {"_ZN4llvm15ScalarEvolution16createNodeForPHIEPNS_7PHINodeE", "llvm::ScalarEvolution::createNodeForPHI(llvm::PHINode*)"}, + {"_ZN4llvm15ScalarEvolution16createNodeForGEPEPNS_11GEPOperatorE", "llvm::ScalarEvolution::createNodeForGEP(llvm::GEPOperator*)"}, + {"_ZN4llvm15ScalarEvolution19GetMinTrailingZerosEPKNS_4SCEVE", "llvm::ScalarEvolution::GetMinTrailingZeros(llvm::SCEV const*)"}, + {"_ZN4llvm15ScalarEvolution18isKnownNonPositiveEPKNS_4SCEVE", "llvm::ScalarEvolution::isKnownNonPositive(llvm::SCEV const*)"}, + {"_ZN4llvm15ScalarEvolution21getBackedgeTakenCountEPKNS_4LoopE", "llvm::ScalarEvolution::getBackedgeTakenCount(llvm::Loop const*)"}, + {"_ZN4llvm15ScalarEvolution20getBackedgeTakenInfoEPKNS_4LoopE", "llvm::ScalarEvolution::getBackedgeTakenInfo(llvm::Loop const*)"}, + {"_ZN4llvm15ScalarEvolution25ComputeBackedgeTakenCountEPKNS_4LoopE", "llvm::ScalarEvolution::ComputeBackedgeTakenCount(llvm::Loop const*)"}, + {"_ZN4llvm15ScalarEvolution10forgetLoopEPKNS_4LoopE", "llvm::ScalarEvolution::forgetLoop(llvm::Loop const*)"}, + {"_ZN4llvm15ScalarEvolution11forgetValueEPNS_5ValueE", "llvm::ScalarEvolution::forgetValue(llvm::Value*)"}, + {"_ZN4llvm15ScalarEvolution33ComputeBackedgeTakenCountFromExitEPKNS_4LoopEPNS_10BasicBlockE", "llvm::ScalarEvolution::ComputeBackedgeTakenCountFromExit(llvm::Loop const*, llvm::BasicBlock*)"}, + {"_ZN4llvm15ScalarEvolution37ComputeBackedgeTakenCountFromExitCondEPKNS_4LoopEPNS_5ValueEPNS_10BasicBlockES7_", "llvm::ScalarEvolution::ComputeBackedgeTakenCountFromExitCond(llvm::Loop const*, llvm::Value*, llvm::BasicBlock*, llvm::BasicBlock*)"}, + {"_ZN4llvm15ScalarEvolution41ComputeBackedgeTakenCountFromExitCondICmpEPKNS_4LoopEPNS_8ICmpInstEPNS_10BasicBlockES7_", "llvm::ScalarEvolution::ComputeBackedgeTakenCountFromExitCondICmp(llvm::Loop const*, llvm::ICmpInst*, llvm::BasicBlock*, llvm::BasicBlock*)"}, + {"_ZN4llvm15ScalarEvolution37ComputeBackedgeTakenCountExhaustivelyEPKNS_4LoopEPNS_5ValueEb", "llvm::ScalarEvolution::ComputeBackedgeTakenCountExhaustively(llvm::Loop const*, llvm::Value*, bool)"}, + {"_ZN4llvm15ScalarEvolution44ComputeLoadConstantCompareBackedgeTakenCountEPNS_8LoadInstEPNS_8ConstantEPKNS_4LoopENS_7CmpInst9PredicateE", "llvm::ScalarEvolution::ComputeLoadConstantCompareBackedgeTakenCount(llvm::LoadInst*, llvm::Constant*, llvm::Loop const*, llvm::CmpInst::Predicate)"}, + {"_ZN4llvm15ScalarEvolution14getSCEVAtScopeEPKNS_4SCEVEPKNS_4LoopE", "llvm::ScalarEvolution::getSCEVAtScope(llvm::SCEV const*, llvm::Loop const*)"}, + {"_ZN4llvm15ScalarEvolution20SimplifyICmpOperandsERNS_7CmpInst9PredicateERPKNS_4SCEVES7_", "llvm::ScalarEvolution::SimplifyICmpOperands(llvm::CmpInst::Predicate&, llvm::SCEV const*&, llvm::SCEV const*&)"}, + {"_ZNK4llvm14SCEVAddRecExpr23getNumIterationsInRangeENS_13ConstantRangeERNS_15ScalarEvolutionE", "llvm::SCEVAddRecExpr::getNumIterationsInRange(llvm::ConstantRange, llvm::ScalarEvolution&) const"}, + {"_ZN4llvm15ScalarEvolution12HowFarToZeroEPKNS_4SCEVEPKNS_4LoopE", "llvm::ScalarEvolution::HowFarToZero(llvm::SCEV const*, llvm::Loop const*)"}, + {"_ZN4llvm15ScalarEvolution15HowFarToNonZeroEPKNS_4SCEVEPKNS_4LoopE", "llvm::ScalarEvolution::HowFarToNonZero(llvm::SCEV const*, llvm::Loop const*)"}, + {"_ZN4llvm15ScalarEvolution16HowManyLessThansEPKNS_4SCEVES3_PKNS_4LoopEb", "llvm::ScalarEvolution::HowManyLessThans(llvm::SCEV const*, llvm::SCEV const*, llvm::Loop const*, bool)"}, + {"_ZN4llvm15ScalarEvolution33getConstantEvolutionLoopExitValueEPNS_7PHINodeERKNS_5APIntEPKNS_4LoopE", "llvm::ScalarEvolution::getConstantEvolutionLoopExitValue(llvm::PHINode*, llvm::APInt const&, llvm::Loop const*)"}, + {"_Z22getConstantEvolvingPHIPN4llvm5ValueEPKNS_4LoopE", "getConstantEvolvingPHI(llvm::Value*, llvm::Loop const*)"}, + {"_Z18EvaluateExpressionPN4llvm5ValueEPNS_8ConstantEPKNS_10DataLayoutE", "EvaluateExpression(llvm::Value*, llvm::Constant*, llvm::DataLayout const*)"}, + {"_ZN4llvm15ScalarEvolution18computeSCEVAtScopeEPKNS_4SCEVEPKNS_4LoopE", "llvm::ScalarEvolution::computeSCEVAtScope(llvm::SCEV const*, llvm::Loop const*)"}, + {"_ZN4llvm15ScalarEvolution14getSCEVAtScopeEPNS_5ValueEPKNS_4LoopE", "llvm::ScalarEvolution::getSCEVAtScope(llvm::Value*, llvm::Loop const*)"}, + {"_Z22SolveQuadraticEquationPKN4llvm14SCEVAddRecExprERNS_15ScalarEvolutionE", "SolveQuadraticEquation(llvm::SCEVAddRecExpr const*, llvm::ScalarEvolution&)"}, + {"_ZN4llvm15ScalarEvolution38getPredecessorWithUniqueSuccessorForBBEPNS_10BasicBlockE", "llvm::ScalarEvolution::getPredecessorWithUniqueSuccessorForBB(llvm::BasicBlock*)"}, + {"_ZN4llvm15ScalarEvolution17properlyDominatesEPKNS_4SCEVEPKNS_10BasicBlockE", "llvm::ScalarEvolution::properlyDominates(llvm::SCEV const*, llvm::BasicBlock const*)"}, + {"_Z12HasSameValuePKN4llvm4SCEVES2_", "HasSameValue(llvm::SCEV const*, llvm::SCEV const*)"}, + {"_ZN4llvm15ScalarEvolution14isKnownNonZeroEPKNS_4SCEVE", "llvm::ScalarEvolution::isKnownNonZero(llvm::SCEV const*)"}, + {"_ZN4llvm15ScalarEvolution26isKnownPredicateWithRangesENS_7CmpInst9PredicateEPKNS_4SCEVES5_", "llvm::ScalarEvolution::isKnownPredicateWithRanges(llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*)"}, + {"_ZN4llvm15ScalarEvolution13isImpliedCondENS_7CmpInst9PredicateEPKNS_4SCEVES5_PNS_5ValueEb", "llvm::ScalarEvolution::isImpliedCond(llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*, llvm::Value*, bool)"}, + {"_ZN4llvm15ScalarEvolution21isImpliedCondOperandsENS_7CmpInst9PredicateEPKNS_4SCEVES5_S5_S5_", "llvm::ScalarEvolution::isImpliedCondOperands(llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*, llvm::SCEV const*, llvm::SCEV const*)"}, + {"_ZN4llvm15ScalarEvolution27isImpliedCondOperandsHelperENS_7CmpInst9PredicateEPKNS_4SCEVES5_S5_S5_", "llvm::ScalarEvolution::isImpliedCondOperandsHelper(llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*, llvm::SCEV const*, llvm::SCEV const*)"}, + {"_ZN4llvm15ScalarEvolution10getBECountEPKNS_4SCEVES3_S3_b", "llvm::ScalarEvolution::getBECount(llvm::SCEV const*, llvm::SCEV const*, llvm::SCEV const*, bool)"}, + {"_ZN4llvm15ScalarEvolution14SCEVCallbackVH7deletedEv", "llvm::ScalarEvolution::SCEVCallbackVH::deleted()"}, + {"_ZN4llvm15ScalarEvolution14SCEVCallbackVH19allUsesReplacedWithEPNS_5ValueE", "llvm::ScalarEvolution::SCEVCallbackVH::allUsesReplacedWith(llvm::Value*)"}, + {"_ZN4llvm15ScalarEvolution14SCEVCallbackVHC2EPNS_5ValueEPS0_", "llvm::ScalarEvolution::SCEVCallbackVH::SCEVCallbackVH(llvm::Value*, llvm::ScalarEvolution*)"}, + {"_ZN4llvm15ScalarEvolutionC1Ev", "llvm::ScalarEvolution::ScalarEvolution()"}, + {"_ZN4llvm15ScalarEvolutionC2Ev", "llvm::ScalarEvolution::ScalarEvolution()"}, + {"_ZN4llvm15ScalarEvolution13runOnFunctionERNS_8FunctionE", "llvm::ScalarEvolution::runOnFunction(llvm::Function&)"}, + {"_ZN4llvm15ScalarEvolution13releaseMemoryEv", "llvm::ScalarEvolution::releaseMemory()"}, + {"_ZNK4llvm15ScalarEvolution16getAnalysisUsageERNS_13AnalysisUsageE", "llvm::ScalarEvolution::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN4llvm15ScalarEvolution34hasLoopInvariantBackedgeTakenCountEPKNS_4LoopE", "llvm::ScalarEvolution::hasLoopInvariantBackedgeTakenCount(llvm::Loop const*)"}, + {"_ZNK4llvm15ScalarEvolution5printERNS_11raw_ostreamEPKNS_6ModuleE", "llvm::ScalarEvolution::print(llvm::raw_ostream&, llvm::Module const*) const"}, + {"_Z13PrintLoopInfoRN4llvm11raw_ostreamEPNS_15ScalarEvolutionEPKNS_4LoopE", "PrintLoopInfo(llvm::raw_ostream&, llvm::ScalarEvolution*, llvm::Loop const*)"}, + {"_ZN4llvm15ScalarEvolution18getLoopDispositionEPKNS_4SCEVEPKNS_4LoopE", "llvm::ScalarEvolution::getLoopDisposition(llvm::SCEV const*, llvm::Loop const*)"}, + {"_ZN4llvm15ScalarEvolution22computeLoopDispositionEPKNS_4SCEVEPKNS_4LoopE", "llvm::ScalarEvolution::computeLoopDisposition(llvm::SCEV const*, llvm::Loop const*)"}, + {"_ZN4llvm15ScalarEvolution26hasComputableLoopEvolutionEPKNS_4SCEVEPKNS_4LoopE", "llvm::ScalarEvolution::hasComputableLoopEvolution(llvm::SCEV const*, llvm::Loop const*)"}, + {"_ZN4llvm15ScalarEvolution19getBlockDispositionEPKNS_4SCEVEPKNS_10BasicBlockE", "llvm::ScalarEvolution::getBlockDisposition(llvm::SCEV const*, llvm::BasicBlock const*)"}, + {"_ZN4llvm15ScalarEvolution23computeBlockDispositionEPKNS_4SCEVEPKNS_10BasicBlockE", "llvm::ScalarEvolution::computeBlockDisposition(llvm::SCEV const*, llvm::BasicBlock const*)"}, + {"_ZN4llvm15ScalarEvolution9dominatesEPKNS_4SCEVEPKNS_10BasicBlockE", "llvm::ScalarEvolution::dominates(llvm::SCEV const*, llvm::BasicBlock const*)"}, + + // {"_ZNSt8_Rb_treeIN4llvm5APIntESt4pairIKS1_NS0_11SmallVectorIPKNS0_4SCEVELj4EEEESt10_Select1stIS9_EN12_GLOBAL__N_112APIntCompareESaIS9_EE9_M_insertEPSt18_Rb_tree_node_baseSH_RKS9_", + // "std::_Rb_tree>, std::_Select1st>>, (anonymous namespace)::APIntCompare, std::allocator>>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair> const&)"}, + // "std::_Rb_tree>, std::_Select1st>>, (anonymous namespace)::APIntCompare, std::allocator>>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair> const&)" was returned + + + // {"_ZNSt8_Rb_treeIN4llvm5APIntESt4pairIKS1_NS0_11SmallVectorIPKNS0_4SCEVELj4EEEESt10_Select1stIS9_EN12_GLOBAL__N_112APIntCompareESaIS9_EE16_M_insert_uniqueERKS9_", + // "std::_Rb_tree>, std::_Select1st>>, (anonymous namespace)::APIntCompare, std::allocator>>>::_M_insert_unique(std::pair> const&)"}, + // "std::_Rb_tree>, std::_Select1st>>, (anonymous namespace)::APIntCompare, std::allocator>>>::_M_insert_unique(std::pair> const&)" was returned + + + // {"_ZNSt8_Rb_treeIN4llvm5APIntESt4pairIKS1_NS0_11SmallVectorIPKNS0_4SCEVELj4EEEESt10_Select1stIS9_EN12_GLOBAL__N_112APIntCompareESaIS9_EE8_M_eraseEPSt13_Rb_tree_nodeIS9_E", + // "std::_Rb_tree>, std::_Select1st>>, (anonymous namespace)::APIntCompare, std::allocator>>>::_M_erase(std::_Rb_tree_node>>*)"}, + // "std::_Rb_tree>, std::_Select1st>>, (anonymous namespace)::APIntCompare, std::allocator>>>::_M_erase(std::_Rb_tree_node>>*)" was returned + + + // {"_ZSt21__inplace_stable_sortIPPKN4llvm4SCEVEN12_GLOBAL__N_121SCEVComplexityCompareEEvT_S7_T0_", + // "void std::__inplace_stable_sort(llvm::SCEV const**, llvm::SCEV const**, (anonymous namespace)::SCEVComplexityCompare)"}, + // got error + + + // {"_ZSt22__stable_sort_adaptiveIPPKN4llvm4SCEVES4_lN12_GLOBAL__N_121SCEVComplexityCompareEEvT_S7_T0_T1_T2_", + // "void std::__stable_sort_adaptive(llvm::SCEV const**, llvm::SCEV const**, llvm::SCEV const**, long, (anonymous namespace)::SCEVComplexityCompare)"}, + // got error + + + // {"_ZSt24__merge_sort_with_bufferIPPKN4llvm4SCEVES4_N12_GLOBAL__N_121SCEVComplexityCompareEEvT_S7_T0_T1_", + // "void std::__merge_sort_with_buffer(llvm::SCEV const**, llvm::SCEV const**, llvm::SCEV const**, (anonymous namespace)::SCEVComplexityCompare)"}, + // got error + + + // {"_ZSt16__merge_adaptiveIPPKN4llvm4SCEVElS4_N12_GLOBAL__N_121SCEVComplexityCompareEEvT_S7_S7_T0_S8_T1_S8_T2_", + // "void std::__merge_adaptive(llvm::SCEV const**, llvm::SCEV const**, llvm::SCEV const**, long, long, llvm::SCEV const**, long, (anonymous namespace)::SCEVComplexityCompare)"}, + // got error + + + // {"_ZSt16__insertion_sortIPPKN4llvm4SCEVEN12_GLOBAL__N_121SCEVComplexityCompareEEvT_S7_T0_", + // "void std::__insertion_sort(llvm::SCEV const**, llvm::SCEV const**, (anonymous namespace)::SCEVComplexityCompare)"}, + // got error + + + // {"_ZSt22__merge_without_bufferIPPKN4llvm4SCEVElN12_GLOBAL__N_121SCEVComplexityCompareEEvT_S7_S7_T0_S8_T1_", + // "void std::__merge_without_buffer(llvm::SCEV const**, llvm::SCEV const**, llvm::SCEV const**, long, long, (anonymous namespace)::SCEVComplexityCompare)"}, + // got error + + {"_ZNK12_GLOBAL__N_121SCEVComplexityCompare7compareEPKN4llvm4SCEVES4_", "(anonymous namespace)::SCEVComplexityCompare::compare(llvm::SCEV const*, llvm::SCEV const*) const"}, + {"_ZN4llvm15ScalarEvolution10getAddExprEPKNS_4SCEVES3_S3_bb", "llvm::ScalarEvolution::getAddExpr(llvm::SCEV const*, llvm::SCEV const*, llvm::SCEV const*, bool, bool)"}, + {"_ZNK4llvm11ConstantInt10isMaxValueEb", "llvm::ConstantInt::isMaxValue(bool) const"}, + {"_ZN4llvm8DenseMapINS_15ScalarEvolution14SCEVCallbackVHEPKNS_4SCEVENS_12DenseMapInfoIPNS_5ValueEEENS6_IS5_EEE4findERKS2_", "llvm::DenseMap, llvm::DenseMapInfo>::find(llvm::ScalarEvolution::SCEVCallbackVH const&)"}, + {"_ZN4llvm15ScalarEvolution14SCEVCallbackVHD1Ev", "llvm::ScalarEvolution::SCEVCallbackVH::~SCEVCallbackVH()"}, + {"_ZN4llvm8DenseMapINS_15ScalarEvolution14SCEVCallbackVHEPKNS_4SCEVENS_12DenseMapInfoIPNS_5ValueEEENS6_IS5_EEE6insertERKSt4pairIS2_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapINS_15ScalarEvolution14SCEVCallbackVHEPKNS_4SCEVENS_12DenseMapInfoIPNS_5ValueEEENS6_IS5_EEE5eraseENS_16DenseMapIteratorIS2_S5_S9_SA_Lb0EEE", "llvm::DenseMap, llvm::DenseMapInfo>::erase(llvm::DenseMapIterator, llvm::DenseMapInfo, false>)"}, + {"_ZN4llvm8LoopInfo29replacementPreservesLCSSAFormEPNS_11InstructionEPNS_5ValueE", "llvm::LoopInfo::replacementPreservesLCSSAForm(llvm::Instruction*, llvm::Value*)"}, + {"_ZN4llvm15ScalarEvolution16setUnsignedRangeEPKNS_4SCEVERKNS_13ConstantRangeE", "llvm::ScalarEvolution::setUnsignedRange(llvm::SCEV const*, llvm::ConstantRange const&)"}, + {"_ZN4llvm15ScalarEvolution14setSignedRangeEPKNS_4SCEVERKNS_13ConstantRangeE", "llvm::ScalarEvolution::setSignedRange(llvm::SCEV const*, llvm::ConstantRange const&)"}, + {"_ZNK4llvm5APInt3ugtEy", "llvm::APInt::ugt(unsigned long long) const"}, + + // {"_ZNSt3mapIPKN4llvm4SCEVES_IPKNS0_4LoopES3_St4lessIS6_ESaISt4pairIKS6_S3_EEES7_IS3_ESaIS9_IKS3_SD_EEEixERSF_", + // "std::map, std::allocator>>, std::less, std::allocator, std::allocator>>>>>::operator[](llvm::SCEV const* const&)"}, + // "std::map, std::allocator>>, std::less, std::allocator, std::allocator>>>>>::operator[](llvm::SCEV const* const&)" was returned + + {"_ZN4llvm8DenseMapINS_15ScalarEvolution14SCEVCallbackVHEPKNS_4SCEVENS_12DenseMapInfoIPNS_5ValueEEENS6_IS5_EEE5eraseERKS2_", "llvm::DenseMap, llvm::DenseMapInfo>::erase(llvm::ScalarEvolution::SCEVCallbackVH const&)"}, + {"_ZN4llvm8DenseMapINS_15ScalarEvolution14SCEVCallbackVHEPKNS_4SCEVENS_12DenseMapInfoIPNS_5ValueEEENS6_IS5_EEE5clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::clear()"}, + {"_ZN4llvm8DenseMapIPKNS_4SCEVENS_13ConstantRangeENS_12DenseMapInfoIS3_EENS5_IS4_EEE5clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::clear()"}, + + // {"_ZNSt3mapIPKN4llvm4SCEVES_IPKNS0_4LoopENS0_15ScalarEvolution15LoopDispositionESt4lessIS6_ESaISt4pairIKS6_S8_EEES9_IS3_ESaISB_IKS3_SF_EEEixERSH_", + // "std::map, std::allocator>>, std::less, std::allocator, std::allocator>>>>>::operator[](llvm::SCEV const* const&)"}, + // "std::map, std::allocator>>, std::less, std::allocator, std::allocator>>>>>::operator[](llvm::SCEV const* const&)" was returned + + + // {"_ZNSt3mapIPKN4llvm4SCEVES_IPKNS0_10BasicBlockENS0_15ScalarEvolution16BlockDispositionESt4lessIS6_ESaISt4pairIKS6_S8_EEES9_IS3_ESaISB_IKS3_SF_EEEixERSH_", + // "std::map, std::allocator>>, std::less, std::allocator, std::allocator>>>>>::operator[](llvm::SCEV const* const&)"}, + // "std::map, std::allocator>>, std::less, std::allocator, std::allocator>>>>>::operator[](llvm::SCEV const* const&)" was returned + + {"_ZN4llvm8DenseMapIPKNS_4SCEVENS_13ConstantRangeENS_12DenseMapInfoIS3_EENS5_IS4_EEE5eraseERKS3_", "llvm::DenseMap, llvm::DenseMapInfo>::erase(llvm::SCEV const* const&)"}, + {"_ZN4llvm11SCEVUnknownD1Ev", "llvm::SCEVUnknown::~SCEVUnknown()"}, + {"_ZN4llvm11SCEVUnknownD0Ev", "llvm::SCEVUnknown::~SCEVUnknown()"}, + {"_ZN4llvm15ScalarEvolution14SCEVCallbackVHD0Ev", "llvm::ScalarEvolution::SCEVCallbackVH::~SCEVCallbackVH()"}, + {"_ZN4llvm15ScalarEvolutionD1Ev", "llvm::ScalarEvolution::~ScalarEvolution()"}, + {"_ZN4llvm15ScalarEvolutionD0Ev", "llvm::ScalarEvolution::~ScalarEvolution()"}, + {"_ZNSt8_Rb_treeIPKN4llvm4SCEVESt4pairIKS3_St3mapIPKNS0_10BasicBlockENS0_15ScalarEvolution16BlockDispositionESt4lessIS9_ESaIS4_IKS9_SB_EEEESt10_Select1stISI_ESC_IS3_ESaISI_EE5eraseESt17_Rb_tree_iteratorISI_ESP_", "std::_Rb_tree, std::allocator>>>, std::_Select1st, std::allocator>>>>, std::less, std::allocator, std::allocator>>>>>::erase(std::_Rb_tree_iterator, std::allocator>>>>, std::_Rb_tree_iterator, std::allocator>>>>)"}, + {"_ZNSt8_Rb_treeIPKN4llvm10BasicBlockESt4pairIKS3_NS0_15ScalarEvolution16BlockDispositionEESt10_Select1stIS8_ESt4lessIS3_ESaIS8_EE8_M_eraseEPSt13_Rb_tree_nodeIS8_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZNSt8_Rb_treeIPKN4llvm4SCEVESt4pairIKS3_St3mapIPKNS0_10BasicBlockENS0_15ScalarEvolution16BlockDispositionESt4lessIS9_ESaIS4_IKS9_SB_EEEESt10_Select1stISI_ESC_IS3_ESaISI_EE8_M_eraseEPSt13_Rb_tree_nodeISI_E", "std::_Rb_tree, std::allocator>>>, std::_Select1st, std::allocator>>>>, std::less, std::allocator, std::allocator>>>>>::_M_erase(std::_Rb_tree_node, std::allocator>>>>*)"}, + {"_ZNSt8_Rb_treeIPKN4llvm4SCEVESt4pairIKS3_St3mapIPKNS0_4LoopENS0_15ScalarEvolution15LoopDispositionESt4lessIS9_ESaIS4_IKS9_SB_EEEESt10_Select1stISI_ESC_IS3_ESaISI_EE5eraseESt17_Rb_tree_iteratorISI_ESP_", "std::_Rb_tree, std::allocator>>>, std::_Select1st, std::allocator>>>>, std::less, std::allocator, std::allocator>>>>>::erase(std::_Rb_tree_iterator, std::allocator>>>>, std::_Rb_tree_iterator, std::allocator>>>>)"}, + {"_ZNSt8_Rb_treeIPKN4llvm4LoopESt4pairIKS3_NS0_15ScalarEvolution15LoopDispositionEESt10_Select1stIS8_ESt4lessIS3_ESaIS8_EE8_M_eraseEPSt13_Rb_tree_nodeIS8_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZNSt8_Rb_treeIPKN4llvm4SCEVESt4pairIKS3_St3mapIPKNS0_4LoopENS0_15ScalarEvolution15LoopDispositionESt4lessIS9_ESaIS4_IKS9_SB_EEEESt10_Select1stISI_ESC_IS3_ESaISI_EE8_M_eraseEPSt13_Rb_tree_nodeISI_E", "std::_Rb_tree, std::allocator>>>, std::_Select1st, std::allocator>>>>, std::less, std::allocator, std::allocator>>>>>::_M_erase(std::_Rb_tree_node, std::allocator>>>>*)"}, + {"_ZNSt8_Rb_treeIPKN4llvm4SCEVESt4pairIKS3_St3mapIPKNS0_4LoopES3_St4lessIS9_ESaIS4_IKS9_S3_EEEESt10_Select1stISG_ESA_IS3_ESaISG_EE5eraseESt17_Rb_tree_iteratorISG_ESN_", "std::_Rb_tree, std::allocator>>>, std::_Select1st, std::allocator>>>>, std::less, std::allocator, std::allocator>>>>>::erase(std::_Rb_tree_iterator, std::allocator>>>>, std::_Rb_tree_iterator, std::allocator>>>>)"}, + {"_ZNSt8_Rb_treeIPKN4llvm4LoopESt4pairIKS3_PKNS0_4SCEVEESt10_Select1stIS9_ESt4lessIS3_ESaIS9_EE8_M_eraseEPSt13_Rb_tree_nodeIS9_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZNSt8_Rb_treeIPKN4llvm4SCEVESt4pairIKS3_St3mapIPKNS0_4LoopES3_St4lessIS9_ESaIS4_IKS9_S3_EEEESt10_Select1stISG_ESA_IS3_ESaISG_EE8_M_eraseEPSt13_Rb_tree_nodeISG_E", "std::_Rb_tree, std::allocator>>>, std::_Select1st, std::allocator>>>>, std::less, std::allocator, std::allocator>>>>>::_M_erase(std::_Rb_tree_node, std::allocator>>>>*)"}, + {"_ZNSt8_Rb_treeIPKN4llvm10BasicBlockESt4pairIKS3_NS0_15ScalarEvolution16BlockDispositionEESt10_Select1stIS8_ESt4lessIS3_ESaIS8_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS8_ERKS8_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm10BasicBlockESt4pairIKS3_NS0_15ScalarEvolution16BlockDispositionEESt10_Select1stIS8_ESt4lessIS3_ESaIS8_EE16_M_insert_uniqueERKS8_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm10BasicBlockESt4pairIKS3_NS0_15ScalarEvolution16BlockDispositionEESt10_Select1stIS8_ESt4lessIS3_ESaIS8_EE7_M_copyEPKSt13_Rb_tree_nodeIS8_EPSG_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_copy(std::_Rb_tree_node> const*, std::_Rb_tree_node>*)"}, + {"_ZNSt8_Rb_treeIPKN4llvm4SCEVESt4pairIKS3_St3mapIPKNS0_10BasicBlockENS0_15ScalarEvolution16BlockDispositionESt4lessIS9_ESaIS4_IKS9_SB_EEEESt10_Select1stISI_ESC_IS3_ESaISI_EE16_M_insert_uniqueESt17_Rb_tree_iteratorISI_ERKSI_", "std::_Rb_tree, std::allocator>>>, std::_Select1st, std::allocator>>>>, std::less, std::allocator, std::allocator>>>>>::_M_insert_unique(std::_Rb_tree_iterator, std::allocator>>>>, std::pair, std::allocator>>> const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm4SCEVESt4pairIKS3_St3mapIPKNS0_10BasicBlockENS0_15ScalarEvolution16BlockDispositionESt4lessIS9_ESaIS4_IKS9_SB_EEEESt10_Select1stISI_ESC_IS3_ESaISI_EE9_M_insertEPSt18_Rb_tree_node_baseSP_RKSI_", "std::_Rb_tree, std::allocator>>>, std::_Select1st, std::allocator>>>>, std::less, std::allocator, std::allocator>>>>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair, std::allocator>>> const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm4SCEVESt4pairIKS3_St3mapIPKNS0_10BasicBlockENS0_15ScalarEvolution16BlockDispositionESt4lessIS9_ESaIS4_IKS9_SB_EEEESt10_Select1stISI_ESC_IS3_ESaISI_EE16_M_insert_uniqueERKSI_", "std::_Rb_tree, std::allocator>>>, std::_Select1st, std::allocator>>>>, std::less, std::allocator, std::allocator>>>>>::_M_insert_unique(std::pair, std::allocator>>> const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm4LoopESt4pairIKS3_NS0_15ScalarEvolution15LoopDispositionEESt10_Select1stIS8_ESt4lessIS3_ESaIS8_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS8_ERKS8_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm4LoopESt4pairIKS3_NS0_15ScalarEvolution15LoopDispositionEESt10_Select1stIS8_ESt4lessIS3_ESaIS8_EE16_M_insert_uniqueERKS8_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm4LoopESt4pairIKS3_NS0_15ScalarEvolution15LoopDispositionEESt10_Select1stIS8_ESt4lessIS3_ESaIS8_EE7_M_copyEPKSt13_Rb_tree_nodeIS8_EPSG_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_copy(std::_Rb_tree_node> const*, std::_Rb_tree_node>*)"}, + {"_ZNSt8_Rb_treeIPKN4llvm4SCEVESt4pairIKS3_St3mapIPKNS0_4LoopENS0_15ScalarEvolution15LoopDispositionESt4lessIS9_ESaIS4_IKS9_SB_EEEESt10_Select1stISI_ESC_IS3_ESaISI_EE16_M_insert_uniqueESt17_Rb_tree_iteratorISI_ERKSI_", "std::_Rb_tree, std::allocator>>>, std::_Select1st, std::allocator>>>>, std::less, std::allocator, std::allocator>>>>>::_M_insert_unique(std::_Rb_tree_iterator, std::allocator>>>>, std::pair, std::allocator>>> const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm4SCEVESt4pairIKS3_St3mapIPKNS0_4LoopENS0_15ScalarEvolution15LoopDispositionESt4lessIS9_ESaIS4_IKS9_SB_EEEESt10_Select1stISI_ESC_IS3_ESaISI_EE9_M_insertEPSt18_Rb_tree_node_baseSP_RKSI_", "std::_Rb_tree, std::allocator>>>, std::_Select1st, std::allocator>>>>, std::less, std::allocator, std::allocator>>>>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair, std::allocator>>> const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm4SCEVESt4pairIKS3_St3mapIPKNS0_4LoopENS0_15ScalarEvolution15LoopDispositionESt4lessIS9_ESaIS4_IKS9_SB_EEEESt10_Select1stISI_ESC_IS3_ESaISI_EE16_M_insert_uniqueERKSI_", "std::_Rb_tree, std::allocator>>>, std::_Select1st, std::allocator>>>>, std::less, std::allocator, std::allocator>>>>>::_M_insert_unique(std::pair, std::allocator>>> const&)"}, + {"_ZN4llvm8DenseMapIPKNS_4SCEVENS_13ConstantRangeENS_12DenseMapInfoIS3_EENS5_IS4_EEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZNSt8_Rb_treeIPN4llvm7PHINodeESt4pairIKS2_PNS0_8ConstantEESt10_Select1stIS7_ESt4lessIS2_ESaIS7_EE8_M_eraseEPSt13_Rb_tree_nodeIS7_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZNSt8_Rb_treeIPKN4llvm4LoopESt4pairIKS3_NS0_15ScalarEvolution17BackedgeTakenInfoEESt10_Select1stIS8_ESt4lessIS3_ESaIS8_EE8_M_eraseEPSt13_Rb_tree_nodeIS8_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZN4llvm8DenseMapINS_15ScalarEvolution14SCEVCallbackVHEPKNS_4SCEVENS_12DenseMapInfoIPNS_5ValueEEENS6_IS5_EEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm10FoldingSetINS_4SCEVEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetINS_4SCEVEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetINS_4SCEVEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetINS_4SCEVEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS6_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetINS_4SCEVEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm8DenseMapINS_15ScalarEvolution14SCEVCallbackVHEPKNS_4SCEVENS_12DenseMapInfoIPNS_5ValueEEENS6_IS5_EEE4initEj", "llvm::DenseMap, llvm::DenseMapInfo>::init(unsigned int)"}, + {"_ZNK4llvm8DenseMapINS_15ScalarEvolution14SCEVCallbackVHEPKNS_4SCEVENS_12DenseMapInfoIPNS_5ValueEEENS6_IS5_EEE15LookupBucketForERKS2_RPSt4pairIS2_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::LookupBucketFor(llvm::ScalarEvolution::SCEVCallbackVH const&, std::pair*&) const"}, + {"_ZNSt8_Rb_treeIPKN4llvm4LoopESt4pairIKS3_PKNS0_4SCEVEESt10_Select1stIS9_ESt4lessIS3_ESaIS9_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS9_ERKS9_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm4LoopESt4pairIKS3_PKNS0_4SCEVEESt10_Select1stIS9_ESt4lessIS3_ESaIS9_EE16_M_insert_uniqueERKS9_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm4LoopESt4pairIKS3_PKNS0_4SCEVEESt10_Select1stIS9_ESt4lessIS3_ESaIS9_EE7_M_copyEPKSt13_Rb_tree_nodeIS9_EPSH_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_copy(std::_Rb_tree_node> const*, std::_Rb_tree_node>*)"}, + {"_ZNSt8_Rb_treeIPKN4llvm4SCEVESt4pairIKS3_St3mapIPKNS0_4LoopES3_St4lessIS9_ESaIS4_IKS9_S3_EEEESt10_Select1stISG_ESA_IS3_ESaISG_EE16_M_insert_uniqueESt17_Rb_tree_iteratorISG_ERKSG_", "std::_Rb_tree, std::allocator>>>, std::_Select1st, std::allocator>>>>, std::less, std::allocator, std::allocator>>>>>::_M_insert_unique(std::_Rb_tree_iterator, std::allocator>>>>, std::pair, std::allocator>>> const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm4SCEVESt4pairIKS3_St3mapIPKNS0_4LoopES3_St4lessIS9_ESaIS4_IKS9_S3_EEEESt10_Select1stISG_ESA_IS3_ESaISG_EE9_M_insertEPSt18_Rb_tree_node_baseSN_RKSG_", "std::_Rb_tree, std::allocator>>>, std::_Select1st, std::allocator>>>>, std::less, std::allocator, std::allocator>>>>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair, std::allocator>>> const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm4SCEVESt4pairIKS3_St3mapIPKNS0_4LoopES3_St4lessIS9_ESaIS4_IKS9_S3_EEEESt10_Select1stISG_ESA_IS3_ESaISG_EE16_M_insert_uniqueERKSG_", "std::_Rb_tree, std::allocator>>>, std::_Select1st, std::allocator>>>>, std::less, std::allocator, std::allocator>>>>>::_M_insert_unique(std::pair, std::allocator>>> const&)"}, + {"_ZNSt8_Rb_treeIPN4llvm7PHINodeESt4pairIKS2_PNS0_8ConstantEESt10_Select1stIS7_ESt4lessIS2_ESaIS7_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS7_ERKS7_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIPN4llvm7PHINodeESt4pairIKS2_PNS0_8ConstantEESt10_Select1stIS7_ESt4lessIS2_ESaIS7_EE16_M_insert_uniqueERKS7_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZNSt6vectorIPN4llvm11ConstantIntESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::ConstantInt* const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm4LoopESt4pairIKS3_NS0_15ScalarEvolution17BackedgeTakenInfoEESt10_Select1stIS8_ESt4lessIS3_ESaIS8_EE5eraseESt17_Rb_tree_iteratorIS8_ESG_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::erase(std::_Rb_tree_iterator>, std::_Rb_tree_iterator>)"}, + {"_ZNSt8_Rb_treeIPN4llvm7PHINodeESt4pairIKS2_PNS0_8ConstantEESt10_Select1stIS7_ESt4lessIS2_ESaIS7_EE5eraseESt17_Rb_tree_iteratorIS7_ESF_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::erase(std::_Rb_tree_iterator>, std::_Rb_tree_iterator>)"}, + {"_ZNSt8_Rb_treeIPKN4llvm4LoopESt4pairIKS3_NS0_15ScalarEvolution17BackedgeTakenInfoEESt10_Select1stIS8_ESt4lessIS3_ESaIS8_EE16_M_insert_uniqueERKS8_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZN4llvm8DenseMapINS_15ScalarEvolution14SCEVCallbackVHEPKNS_4SCEVENS_12DenseMapInfoIPNS_5ValueEEENS6_IS5_EEE16InsertIntoBucketERKS2_RKS5_PSt4pairIS2_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::ScalarEvolution::SCEVCallbackVH const&, llvm::SCEV const* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapINS_15ScalarEvolution14SCEVCallbackVHEPKNS_4SCEVENS_12DenseMapInfoIPNS_5ValueEEENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapINS_15ScalarEvolution14SCEVCallbackVHEPKNS_4SCEVENS_12DenseMapInfoIPNS_5ValueEEENS6_IS5_EEED2Ev", "llvm::DenseMap, llvm::DenseMapInfo>::~DenseMap()"}, + {"_ZN4llvm8DenseMapIPKNS_4SCEVENS_13ConstantRangeENS_12DenseMapInfoIS3_EENS5_IS4_EEED2Ev", "llvm::DenseMap, llvm::DenseMapInfo>::~DenseMap()"}, + {"_ZNK4llvm8LoopBaseINS_10BasicBlockENS_4LoopEE13getExitBlocksERNS_15SmallVectorImplIPS1_EE", "llvm::LoopBase::getExitBlocks(llvm::SmallVectorImpl&) const"}, + {"_ZN4llvm8DenseMapIPKNS_4SCEVENS_13ConstantRangeENS_12DenseMapInfoIS3_EENS5_IS4_EEE6insertERKSt4pairIS3_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPKNS_4SCEVENS_13ConstantRangeENS_12DenseMapInfoIS3_EENS5_IS4_EEE16InsertIntoBucketERKS3_RKS4_PSt4pairIS3_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::SCEV const* const&, llvm::ConstantRange const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_4SCEVENS_13ConstantRangeENS_12DenseMapInfoIS3_EENS5_IS4_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKNS_4SCEVENS_5APIntENS_12DenseMapInfoIS3_EENS5_IS4_EEE6insertERKSt4pairIS3_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPKNS_4SCEVENS_5APIntENS_12DenseMapInfoIS3_EENS5_IS4_EEE16InsertIntoBucketERKS3_RKS4_PSt4pairIS3_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::SCEV const* const&, llvm::APInt const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_4SCEVENS_5APIntENS_12DenseMapInfoIS3_EENS5_IS4_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + + // {"_ZSt8__rotateIPPKN4llvm4SCEVEEvT_S5_S5_St26random_access_iterator_tag", + // "void std::__rotate(llvm::SCEV const**, llvm::SCEV const**, llvm::SCEV const**, std::random_access_iterator_tag)"}, + // got error + + {"_ZN4llvm15callDefaultCtorINS_15ScalarEvolutionEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor()"}, + {"_ZN4llvm12SCEVExpander17ReuseOrCreateCastEPNS_5ValueEPKNS_4TypeENS_11Instruction7CastOpsENS_14ilist_iteratorIS6_EE", "llvm::SCEVExpander::ReuseOrCreateCast(llvm::Value*, llvm::Type const*, llvm::Instruction::CastOps, llvm::ilist_iterator)"}, + {"_ZN4llvm12SCEVExpander19rememberInstructionEPNS_5ValueE", "llvm::SCEVExpander::rememberInstruction(llvm::Value*)"}, + {"_ZN4llvm12SCEVExpander18InsertNoopCastOfToEPNS_5ValueEPKNS_4TypeE", "llvm::SCEVExpander::InsertNoopCastOfTo(llvm::Value*, llvm::Type const*)"}, + {"_ZN4llvm12SCEVExpander11InsertBinopENS_11Instruction9BinaryOpsEPNS_5ValueES4_", "llvm::SCEVExpander::InsertBinop(llvm::Instruction::BinaryOps, llvm::Value*, llvm::Value*)"}, + {"_ZN4llvm12SCEVExpander18restoreInsertPointEPNS_10BasicBlockENS_14ilist_iteratorINS_11InstructionEEE", "llvm::SCEVExpander::restoreInsertPoint(llvm::BasicBlock*, llvm::ilist_iterator)"}, + + // {"_ZN4llvm12SCEVExpander14expandAddToGEPEPKPKNS_4SCEVES5_PKNS_11PointerTypeEPKNS_4TypeEPNS_5ValueE", + // "llvm::SCEVExpander::expandAddToGEP(llvm::SCEV const* const*, llvm::SCEV const* const*, llvm::PointerType const*, llvm::Type const*, llvm::Value*)"}, + // got error + + {"_Z17FactorOutConstantRPKN4llvm4SCEVES3_S2_RNS_15ScalarEvolutionEPKNS_10DataLayoutE", "FactorOutConstant(llvm::SCEV const*&, llvm::SCEV const*&, llvm::SCEV const*, llvm::ScalarEvolution&, llvm::DataLayout const*)"}, + {"_Z19SimplifyAddOperandsRN4llvm15SmallVectorImplIPKNS_4SCEVEEEPKNS_4TypeERNS_15ScalarEvolutionE", "SimplifyAddOperands(llvm::SmallVectorImpl&, llvm::Type const*, llvm::ScalarEvolution&)"}, + {"_ZN4llvm12SCEVExpander13expandCodeForEPKNS_4SCEVEPKNS_4TypeE", "llvm::SCEVExpander::expandCodeFor(llvm::SCEV const*, llvm::Type const*)"}, + {"_ZN4llvm12SCEVExpander6expandEPKNS_4SCEVE", "llvm::SCEVExpander::expand(llvm::SCEV const*)"}, + {"_ZN4llvm12SCEVExpander15getRelevantLoopEPKNS_4SCEVE", "llvm::SCEVExpander::getRelevantLoop(llvm::SCEV const*)"}, + {"_ZN4llvm12SCEVExpander12visitAddExprEPKNS_11SCEVAddExprE", "llvm::SCEVExpander::visitAddExpr(llvm::SCEVAddExpr const*)"}, + {"_ZN4llvm12SCEVExpander12visitMulExprEPKNS_11SCEVMulExprE", "llvm::SCEVExpander::visitMulExpr(llvm::SCEVMulExpr const*)"}, + {"_ZN4llvm12SCEVExpander13visitUDivExprEPKNS_12SCEVUDivExprE", "llvm::SCEVExpander::visitUDivExpr(llvm::SCEVUDivExpr const*)"}, + {"_ZN4llvm12SCEVExpander25getAddRecExprPHILiterallyEPKNS_14SCEVAddRecExprEPKNS_4LoopEPKNS_4TypeES9_", "llvm::SCEVExpander::getAddRecExprPHILiterally(llvm::SCEVAddRecExpr const*, llvm::Loop const*, llvm::Type const*, llvm::Type const*)"}, + {"_ZN4llvm12SCEVExpander13expandCodeForEPKNS_4SCEVEPKNS_4TypeEPNS_11InstructionE", "llvm::SCEVExpander::expandCodeFor(llvm::SCEV const*, llvm::Type const*, llvm::Instruction*)"}, + {"_ZN4llvm12SCEVExpander25expandAddRecExprLiterallyEPKNS_14SCEVAddRecExprE", "llvm::SCEVExpander::expandAddRecExprLiterally(llvm::SCEVAddRecExpr const*)"}, + {"_ZN4llvm12SCEVExpander15visitAddRecExprEPKNS_14SCEVAddRecExprE", "llvm::SCEVExpander::visitAddRecExpr(llvm::SCEVAddRecExpr const*)"}, + {"_Z17ExposePointerBaseRPKN4llvm4SCEVES3_RNS_15ScalarEvolutionE", "ExposePointerBase(llvm::SCEV const*&, llvm::SCEV const*&, llvm::ScalarEvolution&)"}, + {"_ZN4llvm12SCEVExpander17visitTruncateExprEPKNS_16SCEVTruncateExprE", "llvm::SCEVExpander::visitTruncateExpr(llvm::SCEVTruncateExpr const*)"}, + {"_ZN4llvm12SCEVExpander19visitZeroExtendExprEPKNS_18SCEVZeroExtendExprE", "llvm::SCEVExpander::visitZeroExtendExpr(llvm::SCEVZeroExtendExpr const*)"}, + {"_ZN4llvm12SCEVExpander19visitSignExtendExprEPKNS_18SCEVSignExtendExprE", "llvm::SCEVExpander::visitSignExtendExpr(llvm::SCEVSignExtendExpr const*)"}, + {"_ZN4llvm12SCEVExpander13visitSMaxExprEPKNS_12SCEVSMaxExprE", "llvm::SCEVExpander::visitSMaxExpr(llvm::SCEVSMaxExpr const*)"}, + {"_ZN4llvm12SCEVExpander13visitUMaxExprEPKNS_12SCEVUMaxExprE", "llvm::SCEVExpander::visitUMaxExpr(llvm::SCEVUMaxExpr const*)"}, + {"_ZN4llvm12SCEVExpander37getOrInsertCanonicalInductionVariableEPKNS_4LoopEPKNS_4TypeE", "llvm::SCEVExpander::getOrInsertCanonicalInductionVariable(llvm::Loop const*, llvm::Type const*)"}, + + // {"_ZSt21__inplace_stable_sortIPSt4pairIPKN4llvm4LoopEPKNS1_4SCEVEEN12_GLOBAL__N_111LoopCompareEEvT_SC_T0_", + // "void std::__inplace_stable_sort*, (anonymous namespace)::LoopCompare>(std::pair*, std::pair*, (anonymous namespace)::LoopCompare)"}, + // got error + + + // {"_ZSt22__stable_sort_adaptiveIPSt4pairIPKN4llvm4LoopEPKNS1_4SCEVEES9_lN12_GLOBAL__N_111LoopCompareEEvT_SC_T0_T1_T2_", + // "void std::__stable_sort_adaptive*, std::pair*, long, (anonymous namespace)::LoopCompare>(std::pair*, std::pair*, std::pair*, long, (anonymous namespace)::LoopCompare)"}, + // got error + + + // {"_ZSt24__merge_sort_with_bufferIPSt4pairIPKN4llvm4LoopEPKNS1_4SCEVEES9_N12_GLOBAL__N_111LoopCompareEEvT_SC_T0_T1_", + // "void std::__merge_sort_with_buffer*, std::pair*, (anonymous namespace)::LoopCompare>(std::pair*, std::pair*, std::pair*, (anonymous namespace)::LoopCompare)"}, + // got error + + + // {"_ZSt16__merge_adaptiveIPSt4pairIPKN4llvm4LoopEPKNS1_4SCEVEElS9_N12_GLOBAL__N_111LoopCompareEEvT_SC_SC_T0_SD_T1_SD_T2_", + // "void std::__merge_adaptive*, long, std::pair*, (anonymous namespace)::LoopCompare>(std::pair*, std::pair*, std::pair*, long, long, std::pair*, long, (anonymous namespace)::LoopCompare)"}, + // got error + + + // {"_ZSt5mergeIPSt4pairIPKN4llvm4LoopEPKNS1_4SCEVEES9_S9_N12_GLOBAL__N_111LoopCompareEET1_T_SD_T0_SE_SC_T2_", + // "std::pair* std::merge*, std::pair*, std::pair*, (anonymous namespace)::LoopCompare>(std::pair*, std::pair*, std::pair*, std::pair*, std::pair*, (anonymous namespace)::LoopCompare)"}, + // got error + + {"_ZNK12_GLOBAL__N_111LoopCompareclESt4pairIPKN4llvm4LoopEPKNS2_4SCEVEES9_", "(anonymous namespace)::LoopCompare::operator()(std::pair, std::pair) const"}, + + // {"_ZSt16__insertion_sortIPSt4pairIPKN4llvm4LoopEPKNS1_4SCEVEEN12_GLOBAL__N_111LoopCompareEEvT_SC_T0_", + // "void std::__insertion_sort*, (anonymous namespace)::LoopCompare>(std::pair*, std::pair*, (anonymous namespace)::LoopCompare)"}, + // got error + + + // {"_ZSt22__merge_without_bufferIPSt4pairIPKN4llvm4LoopEPKNS1_4SCEVEElN12_GLOBAL__N_111LoopCompareEEvT_SC_SC_T0_SD_T1_", + // "void std::__merge_without_buffer*, long, (anonymous namespace)::LoopCompare>(std::pair*, std::pair*, std::pair*, long, long, (anonymous namespace)::LoopCompare)"}, + // got error + + {"_ZN4llvm9IRBuilderILb1ENS_12TargetFolderENS_24IRBuilderDefaultInserterILb1EEEE11CreateBinOpENS_11Instruction9BinaryOpsEPNS_5ValueES8_RKNS_5TwineE", "llvm::IRBuilder>::CreateBinOp(llvm::Instruction::BinaryOps, llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_12TargetFolderENS_24IRBuilderDefaultInserterILb1EEEE9CreateGEPEPNS_5ValueES6_RKNS_5TwineE", "llvm::IRBuilder>::CreateGEP(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + + // {"_ZN4llvm9IRBuilderILb1ENS_12TargetFolderENS_24IRBuilderDefaultInserterILb1EEEE9CreateGEPIPPNS_5ValueEEES7_S7_T_S9_RKNS_5TwineE", + // "llvm::Value* llvm::IRBuilder>::CreateGEP(llvm::Value*, llvm::Value**, llvm::Value**, llvm::Twine const&)"}, + // "llvm::Value* llvm::IRBuilder>::CreateGEP(llvm::Value*, true, true, llvm::Twine const&)" was returned + + {"_ZN4llvm8DenseMapIPKNS_4SCEVEPKNS_4LoopENS_12DenseMapInfoIS3_EENS7_IS6_EEE6insertERKSt4pairIS3_S6_E", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_12TargetFolderENS_24IRBuilderDefaultInserterILb1EEEE9CreatePHIEPKNS_4TypeERKNS_5TwineE", "llvm::IRBuilder>::CreatePHI(llvm::Type const*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_12TargetFolderENS_24IRBuilderDefaultInserterILb1EEEE9CreateSubEPNS_5ValueES6_RKNS_5TwineE", "llvm::IRBuilder>::CreateSub(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_12TargetFolderENS_24IRBuilderDefaultInserterILb1EEEE9CreateAddEPNS_5ValueES6_RKNS_5TwineE", "llvm::IRBuilder>::CreateAdd(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_12TargetFolderENS_24IRBuilderDefaultInserterILb1EEEE9CreateMulEPNS_5ValueES6_RKNS_5TwineE", "llvm::IRBuilder>::CreateMul(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm9IRBuilderILb1ENS_12TargetFolderENS_24IRBuilderDefaultInserterILb1EEEE12CreateSelectEPNS_5ValueES6_S6_RKNS_5TwineE", "llvm::IRBuilder>::CreateSelect(llvm::Value*, llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm11SCEVVisitorINS_12SCEVExpanderEPNS_5ValueEE5visitEPKNS_4SCEVE", "llvm::SCEVVisitor::visit(llvm::SCEV const*)"}, + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm4SCEVEPNS1_11InstructionEES0_IKS7_NS1_11AssertingVHINS1_5ValueEEEESt10_Select1stISC_ESt4lessIS7_ESaISC_EE16_M_insert_uniqueESt17_Rb_tree_iteratorISC_ERKSC_", + // "std::_Rb_tree, std::pair const, llvm::AssertingVH>, std::_Select1st const, llvm::AssertingVH>>, std::less>, std::allocator const, llvm::AssertingVH>>>::_M_insert_unique(std::_Rb_tree_iterator const, llvm::AssertingVH>>, std::pair const, llvm::AssertingVH> const&)"}, + // "std::_Rb_tree, std::pair const, llvm::AssertingVH>, std::_Select1st< const, llvm::AssertingVH>>, std::less>, std::allocator< const, llvm::AssertingVH>>>::_M_insert_unique(std::_Rb_tree_iterator< const, llvm::AssertingVH>>, const, llvm::AssertingVH> const&)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm4SCEVEPNS1_11InstructionEES0_IKS7_NS1_11AssertingVHINS1_5ValueEEEESt10_Select1stISC_ESt4lessIS7_ESaISC_EE16_M_insert_uniqueERKSC_", + // "std::_Rb_tree, std::pair const, llvm::AssertingVH>, std::_Select1st const, llvm::AssertingVH>>, std::less>, std::allocator const, llvm::AssertingVH>>>::_M_insert_unique(std::pair const, llvm::AssertingVH> const&)"}, + // "std::_Rb_tree, std::pair const, llvm::AssertingVH>, std::_Select1st< const, llvm::AssertingVH>>, std::less>, std::allocator< const, llvm::AssertingVH>>>::_M_insert_unique( const, llvm::AssertingVH> const&)" was returned + + {"_ZN4llvm11SCEVVisitorINS_12SCEVExpanderEPNS_5ValueEE20visitCouldNotComputeEPKNS_19SCEVCouldNotComputeE", "llvm::SCEVVisitor::visitCouldNotCompute(llvm::SCEVCouldNotCompute const*)"}, + {"_ZN4llvm9IRBuilderILb1ENS_12TargetFolderENS_24IRBuilderDefaultInserterILb1EEEE10CreateICmpENS_7CmpInst9PredicateEPNS_5ValueES8_RKNS_5TwineE", "llvm::IRBuilder>::CreateICmp(llvm::CmpInst::Predicate, llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZNK4llvm12TargetFolder12CreateSelectEPNS_8ConstantES2_S2_", "llvm::TargetFolder::CreateSelect(llvm::Constant*, llvm::Constant*, llvm::Constant*) const"}, + {"_ZN4llvm9IRBuilderILb1ENS_12TargetFolderENS_24IRBuilderDefaultInserterILb1EEEE10CreateCastENS_11Instruction7CastOpsEPNS_5ValueEPKNS_4TypeERKNS_5TwineE", "llvm::IRBuilder>::CreateCast(llvm::Instruction::CastOps, llvm::Value*, llvm::Type const*, llvm::Twine const&)"}, + {"_ZNK4llvm12TargetFolder10CreateCastENS_11Instruction7CastOpsEPNS_8ConstantEPKNS_4TypeE", "llvm::TargetFolder::CreateCast(llvm::Instruction::CastOps, llvm::Constant*, llvm::Type const*) const"}, + + // {"_ZN4llvm11SmallVectorIPKNS_4SCEVELj4EEC2EjRKS3_", + // "llvm::SmallVector::SmallVector(unsigned int, llvm::SCEV const* const&)"}, + // "llvm::SmallVector::SmallVector(unsigned int, llvm::SCEV const* const&)" was returned + + {"_ZNSt8_Rb_treeIN4llvm11AssertingVHINS0_5ValueEEES3_St9_IdentityIS3_ESt4lessIS3_ESaIS3_EE16_M_insert_uniqueERKS3_", "std::_Rb_tree, llvm::AssertingVH, std::_Identity>, std::less>, std::allocator>>::_M_insert_unique(llvm::AssertingVH const&)"}, + + // {"_ZSt4copyIPSt4pairIPKN4llvm4LoopEPKNS1_4SCEVEES9_ET0_T_SB_SA_", + // "std::pair* std::copy*, std::pair*>(std::pair*, std::pair*, std::pair*)"}, + // got error + + + // {"_ZSt17__rotate_adaptiveIPSt4pairIPKN4llvm4LoopEPKNS1_4SCEVEES9_lET_SA_SA_SA_T1_SB_T0_SB_", + // "std::pair* std::__rotate_adaptive*, std::pair*, long>(std::pair*, std::pair*, std::pair*, long, long, std::pair*, long)"}, + // got error + + + // {"_ZSt8__rotateIPSt4pairIPKN4llvm4LoopEPKNS1_4SCEVEEEvT_SA_SA_St26random_access_iterator_tag", + // "void std::__rotate*>(std::pair*, std::pair*, std::pair*, std::random_access_iterator_tag)"}, + // got error + + {"_ZN4llvm8DenseMapIPKNS_4SCEVEPKNS_4LoopENS_12DenseMapInfoIS3_EENS7_IS6_EEE16InsertIntoBucketERKS3_RKS6_PSt4pairIS3_S6_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::SCEV const* const&, llvm::Loop const* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_4SCEVEPKNS_4LoopENS_12DenseMapInfoIS3_EENS7_IS6_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + + // {"_ZN4llvm22TransformForPostIncUseENS_13TransformKindEPKNS_4SCEVEPNS_11InstructionEPNS_5ValueERNS_11SmallPtrSetIPKNS_4LoopELj2EEERNS_15ScalarEvolutionERNS_13DominatorTreeE", + // "llvm::TransformForPostIncUse(llvm::TransformKind, llvm::SCEV const*, llvm::Instruction*, llvm::Value*, llvm::SmallPtrSet&, llvm::ScalarEvolution&, llvm::DominatorTree&)"}, + // "llvm::TransformForPostIncUse(llvm::TransformKind, llvm::SCEV const*, llvm::Instruction*, llvm::Value*, llvm::SmallPtrSet&, llvm::ScalarEvolution&, llvm::DominatorTree&)" was returned + + {"_ZN4llvm36initializeTypeBasedAliasAnalysisPassERNS_12PassRegistryE", "llvm::initializeTypeBasedAliasAnalysisPass(llvm::PassRegistry&)"}, + {"_ZN4llvm32createTypeBasedAliasAnalysisPassEv", "llvm::createTypeBasedAliasAnalysisPass()"}, + {"_ZN12_GLOBAL__N_122TypeBasedAliasAnalysisD1Ev", "(anonymous namespace)::TypeBasedAliasAnalysis::~TypeBasedAliasAnalysis()"}, + {"_ZN12_GLOBAL__N_122TypeBasedAliasAnalysisD0Ev", "(anonymous namespace)::TypeBasedAliasAnalysis::~TypeBasedAliasAnalysis()"}, + {"_ZNK12_GLOBAL__N_122TypeBasedAliasAnalysis16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::TypeBasedAliasAnalysis::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_122TypeBasedAliasAnalysis26getAdjustedAnalysisPointerEPKv", "(anonymous namespace)::TypeBasedAliasAnalysis::getAdjustedAnalysisPointer(void const*)"}, + {"_ZN12_GLOBAL__N_122TypeBasedAliasAnalysis14initializePassEv", "(anonymous namespace)::TypeBasedAliasAnalysis::initializePass()"}, + {"_ZN12_GLOBAL__N_122TypeBasedAliasAnalysis5aliasERKN4llvm13AliasAnalysis8LocationES5_", "(anonymous namespace)::TypeBasedAliasAnalysis::alias(llvm::AliasAnalysis::Location const&, llvm::AliasAnalysis::Location const&)"}, + {"_ZN12_GLOBAL__N_122TypeBasedAliasAnalysis22pointsToConstantMemoryERKN4llvm13AliasAnalysis8LocationEb", "(anonymous namespace)::TypeBasedAliasAnalysis::pointsToConstantMemory(llvm::AliasAnalysis::Location const&, bool)"}, + {"_ZN12_GLOBAL__N_122TypeBasedAliasAnalysis17getModRefBehaviorEN4llvm17ImmutableCallSiteE", "(anonymous namespace)::TypeBasedAliasAnalysis::getModRefBehavior(llvm::ImmutableCallSite)"}, + {"_ZN12_GLOBAL__N_122TypeBasedAliasAnalysis17getModRefBehaviorEPKN4llvm8FunctionE", "(anonymous namespace)::TypeBasedAliasAnalysis::getModRefBehavior(llvm::Function const*)"}, + {"_ZN12_GLOBAL__N_122TypeBasedAliasAnalysis13getModRefInfoEN4llvm17ImmutableCallSiteERKNS1_13AliasAnalysis8LocationE", "(anonymous namespace)::TypeBasedAliasAnalysis::getModRefInfo(llvm::ImmutableCallSite, llvm::AliasAnalysis::Location const&)"}, + {"_ZN12_GLOBAL__N_122TypeBasedAliasAnalysis13getModRefInfoEN4llvm17ImmutableCallSiteES2_", "(anonymous namespace)::TypeBasedAliasAnalysis::getModRefInfo(llvm::ImmutableCallSite, llvm::ImmutableCallSite)"}, + + // {"_ZThn32_NK12_GLOBAL__N_122TypeBasedAliasAnalysis16getAnalysisUsageERN4llvm13AnalysisUsageE", + // "non-virtual thunk to (anonymous namespace)::TypeBasedAliasAnalysis::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::TypeBasedAliasAnalysis::getAnalysisUsage(llvm::AnalysisUsage&) const" was returned + + + // {"_ZThn32_N12_GLOBAL__N_122TypeBasedAliasAnalysisD1Ev", + // "non-virtual thunk to (anonymous namespace)::TypeBasedAliasAnalysis::~TypeBasedAliasAnalysis()"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::TypeBasedAliasAnalysis::~TypeBasedAliasAnalysis()" was returned + + + // {"_ZThn32_N12_GLOBAL__N_122TypeBasedAliasAnalysisD0Ev", + // "non-virtual thunk to (anonymous namespace)::TypeBasedAliasAnalysis::~TypeBasedAliasAnalysis()"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::TypeBasedAliasAnalysis::~TypeBasedAliasAnalysis()" was returned + + + // {"_ZThn32_N12_GLOBAL__N_122TypeBasedAliasAnalysis5aliasERKN4llvm13AliasAnalysis8LocationES5_", + // "non-virtual thunk to (anonymous namespace)::TypeBasedAliasAnalysis::alias(llvm::AliasAnalysis::Location const&, llvm::AliasAnalysis::Location const&)"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::TypeBasedAliasAnalysis::alias(llvm::AliasAnalysis::Location const&, llvm::AliasAnalysis::Location const&)" was returned + + + // {"_ZThn32_N12_GLOBAL__N_122TypeBasedAliasAnalysis22pointsToConstantMemoryERKN4llvm13AliasAnalysis8LocationEb", + // "non-virtual thunk to (anonymous namespace)::TypeBasedAliasAnalysis::pointsToConstantMemory(llvm::AliasAnalysis::Location const&, bool)"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::TypeBasedAliasAnalysis::pointsToConstantMemory(llvm::AliasAnalysis::Location const&, bool)" was returned + + + // {"_ZThn32_N12_GLOBAL__N_122TypeBasedAliasAnalysis17getModRefBehaviorEN4llvm17ImmutableCallSiteE", + // "non-virtual thunk to (anonymous namespace)::TypeBasedAliasAnalysis::getModRefBehavior(llvm::ImmutableCallSite)"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::TypeBasedAliasAnalysis::getModRefBehavior(llvm::ImmutableCallSite)" was returned + + + // {"_ZThn32_N12_GLOBAL__N_122TypeBasedAliasAnalysis17getModRefBehaviorEPKN4llvm8FunctionE", + // "non-virtual thunk to (anonymous namespace)::TypeBasedAliasAnalysis::getModRefBehavior(llvm::Function const*)"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::TypeBasedAliasAnalysis::getModRefBehavior(llvm::Function const*)" was returned + + + // {"_ZThn32_N12_GLOBAL__N_122TypeBasedAliasAnalysis13getModRefInfoEN4llvm17ImmutableCallSiteERKNS1_13AliasAnalysis8LocationE", + // "non-virtual thunk to (anonymous namespace)::TypeBasedAliasAnalysis::getModRefInfo(llvm::ImmutableCallSite, llvm::AliasAnalysis::Location const&)"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::TypeBasedAliasAnalysis::getModRefInfo(llvm::ImmutableCallSite, llvm::AliasAnalysis::Location const&)" was returned + + + // {"_ZThn32_N12_GLOBAL__N_122TypeBasedAliasAnalysis13getModRefInfoEN4llvm17ImmutableCallSiteES2_", + // "non-virtual thunk to (anonymous namespace)::TypeBasedAliasAnalysis::getModRefInfo(llvm::ImmutableCallSite, llvm::ImmutableCallSite)"}, + // "virtual function non-virtual override offset : -32 (anonymous namespace)::TypeBasedAliasAnalysis::getModRefInfo(llvm::ImmutableCallSite, llvm::ImmutableCallSite)" was returned + + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_122TypeBasedAliasAnalysisEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::TypeBasedAliasAnalysis>()"}, + {"_ZN4llvm17ComputeMaskedBitsEPNS_5ValueERKNS_5APIntERS2_S5_PKNS_10DataLayoutEj", "llvm::ComputeMaskedBits(llvm::Value*, llvm::APInt const&, llvm::APInt&, llvm::APInt&, llvm::DataLayout const*, unsigned int)"}, + {"_ZN4llvm14ComputeSignBitEPNS_5ValueERbS2_PKNS_10DataLayoutEj", "llvm::ComputeSignBit(llvm::Value*, bool&, bool&, llvm::DataLayout const*, unsigned int)"}, + {"_ZN4llvm12isPowerOfTwoEPNS_5ValueEPKNS_10DataLayoutEj", "llvm::isPowerOfTwo(llvm::Value*, llvm::DataLayout const*, unsigned int)"}, + {"_ZN4llvm14isKnownNonZeroEPNS_5ValueEPKNS_10DataLayoutEj", "llvm::isKnownNonZero(llvm::Value*, llvm::DataLayout const*, unsigned int)"}, + {"_ZN4llvm17MaskedValueIsZeroEPNS_5ValueERKNS_5APIntEPKNS_10DataLayoutEj", "llvm::MaskedValueIsZero(llvm::Value*, llvm::APInt const&, llvm::DataLayout const*, unsigned int)"}, + {"_ZN4llvm18ComputeNumSignBitsEPNS_5ValueEPKNS_10DataLayoutEj", "llvm::ComputeNumSignBits(llvm::Value*, llvm::DataLayout const*, unsigned int)"}, + {"_ZN4llvm15ComputeMultipleEPNS_5ValueEjRS1_bj", "llvm::ComputeMultiple(llvm::Value*, unsigned int, llvm::Value*&, bool, unsigned int)"}, + {"_ZN4llvm20CannotBeNegativeZeroEPKNS_5ValueEj", "llvm::CannotBeNegativeZero(llvm::Value const*, unsigned int)"}, + {"_ZN4llvm15isBytewiseValueEPNS_5ValueE", "llvm::isBytewiseValue(llvm::Value*)"}, + {"_ZN4llvm17FindInsertedValueEPNS_5ValueEPKjS3_PNS_11InstructionE", "llvm::FindInsertedValue(llvm::Value*, unsigned int const*, unsigned int const*, llvm::Instruction*)"}, + {"_ZN4llvm32GetPointerBaseWithConstantOffsetEPNS_5ValueERxRKNS_10DataLayoutE", "llvm::GetPointerBaseWithConstantOffset(llvm::Value*, long long&, llvm::DataLayout const&)"}, + {"_ZN4llvm21GetConstantStringInfoEPKNS_5ValueERSsyb", "llvm::GetConstantStringInfo(llvm::Value const*, std::string&, unsigned long long, bool)"}, + {"_ZN4llvm15GetStringLengthEPNS_5ValueE", "llvm::GetStringLength(llvm::Value*)"}, + + // {"_Z16GetStringLengthHPN4llvm5ValueERNS_11SmallPtrSetIPNS_7PHINodeELj32EEE", + // "GetStringLengthH(llvm::Value*, llvm::SmallPtrSet&)"}, + // "GetStringLengthH(llvm::Value*, llvm::SmallPtrSet&)" was returned + + {"_ZN4llvm19GetUnderlyingObjectEPNS_5ValueEPKNS_10DataLayoutEj", "llvm::GetUnderlyingObject(llvm::Value*, llvm::DataLayout const*, unsigned int)"}, + + // {"_Z17BuildSubAggregatePN4llvm5ValueES1_PKNS_4TypeERNS_11SmallVectorIjLj10EEEjPNS_11InstructionE", + // "BuildSubAggregate(llvm::Value*, llvm::Value*, llvm::Type const*, llvm::SmallVector&, unsigned int, llvm::Instruction*)"}, + // "BuildSubAggregate(llvm::Value*, llvm::Value*, llvm::Type const*, llvm::SmallVector&, unsigned int, llvm::Instruction*)" was returned + + + // {"_ZN4llvm12PatternMatch11cst_pred_tyINS0_11is_sign_bitEE5matchINS_5ValueEEEbPT_", + // "bool llvm::PatternMatch::cst_pred_ty::match(llvm::Value*)"}, + // "bool llvm::PatternMatch::cst_pred_ty::match(llvm::PatternMatch::is_sign_bit*)" was returned + + + // {"_ZN4llvm12PatternMatch11cst_pred_tyINS0_11is_sign_bitEE5matchINS_8ConstantEEEbPT_", + // "bool llvm::PatternMatch::cst_pred_ty::match(llvm::Constant*)"}, + // "bool llvm::PatternMatch::cst_pred_ty::match(llvm::PatternMatch::is_sign_bit*)" was returned + + + // {"_ZN4llvm12PatternMatch14BinaryOp_matchINS0_11cst_pred_tyINS0_6is_oneEEENS0_11class_matchINS_5ValueEEELj20EE5matchIS6_EEbPT_", + // "bool llvm::PatternMatch::BinaryOp_match, llvm::PatternMatch::class_match, 20u>::match(llvm::Value*)"}, + // "bool llvm::PatternMatch::BinaryOp_match, llvm::PatternMatch::class_match, 20>::match(llvm::PatternMatch::is_one*)" was returned + + {"_ZN4llvm7Mangler17getNameWithPrefixERNS_15SmallVectorImplIcEERKNS_5TwineENS0_15ManglerPrefixTyE", "llvm::Mangler::getNameWithPrefix(llvm::SmallVectorImpl&, llvm::Twine const&, llvm::Mangler::ManglerPrefixTy)"}, + {"_ZN4llvm7Mangler17getNameWithPrefixERNS_15SmallVectorImplIcEEPKNS_11GlobalValueEb", "llvm::Mangler::getNameWithPrefix(llvm::SmallVectorImpl&, llvm::GlobalValue const*, bool)"}, + {"_ZN4llvm7Mangler17getNameWithPrefixEPKNS_11GlobalValueEb", "llvm::Mangler::getNameWithPrefix(llvm::GlobalValue const*, bool)"}, + {"_ZN4llvm7Mangler9getSymbolEPKNS_11GlobalValueE", "llvm::Mangler::getSymbol(llvm::GlobalValue const*)"}, + {"_Z12MangleLetterRN4llvm15SmallVectorImplIcEEh", "MangleLetter(llvm::SmallVectorImpl&, unsigned char)"}, + {"_ZN4llvm15SmallVectorImplIcE6insertEPcRKc", "llvm::SmallVectorImpl::insert(char*, char const&)"}, + {"_ZN4llvm8DenseMapIPKNS_11GlobalValueEjNS_12DenseMapInfoIS3_EENS4_IjEEE16InsertIntoBucketERKS3_RKjPSt4pairIS3_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::GlobalValue const* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_11GlobalValueEjNS_12DenseMapInfoIS3_EENS4_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm17SubtargetFeatures10AddFeatureERKSsb", "llvm::SubtargetFeatures::AddFeature(std::string const&, bool)"}, + {"_ZN4llvm15LowercaseStringERKSs", "llvm::LowercaseString(std::string const&)"}, + {"_ZN4llvm17SubtargetFeaturesC1ERKSs", "llvm::SubtargetFeatures::SubtargetFeatures(std::string const&)"}, + {"_ZN4llvm17SubtargetFeaturesC2ERKSs", "llvm::SubtargetFeatures::SubtargetFeatures(std::string const&)"}, + {"_Z5SplitRSt6vectorISsSaISsEERKSs", "Split(std::vector>&, std::string const&)"}, + {"_ZNK4llvm17SubtargetFeatures9getStringEv", "llvm::SubtargetFeatures::getString() const"}, + {"_ZN4llvm17SubtargetFeatures9setStringERKSs", "llvm::SubtargetFeatures::setString(std::string const&)"}, + {"_ZN4llvm17SubtargetFeatures6setCPUERKSs", "llvm::SubtargetFeatures::setCPU(std::string const&)"}, + {"_ZN4llvm17SubtargetFeatures12setCPUIfNoneERKSs", "llvm::SubtargetFeatures::setCPUIfNone(std::string const&)"}, + {"_ZNK4llvm17SubtargetFeatures6getCPUEv", "llvm::SubtargetFeatures::getCPU() const"}, + {"_ZN4llvm17SubtargetFeatures7getBitsEPKNS_18SubtargetFeatureKVEmS3_m", "llvm::SubtargetFeatures::getBits(llvm::SubtargetFeatureKV const*, unsigned long, llvm::SubtargetFeatureKV const*, unsigned long)"}, + {"_Z4HelpPKN4llvm18SubtargetFeatureKVEmS2_m", "Help(llvm::SubtargetFeatureKV const*, unsigned long, llvm::SubtargetFeatureKV const*, unsigned long)"}, + {"_Z14SetImpliedBitsRjPKN4llvm18SubtargetFeatureKVES3_m", "SetImpliedBits(unsigned int&, llvm::SubtargetFeatureKV const*, llvm::SubtargetFeatureKV const*, unsigned long)"}, + {"_Z16ClearImpliedBitsRjPKN4llvm18SubtargetFeatureKVES3_m", "ClearImpliedBits(unsigned int&, llvm::SubtargetFeatureKV const*, llvm::SubtargetFeatureKV const*, unsigned long)"}, + {"_ZN4llvm17SubtargetFeatures7getInfoEPKNS_15SubtargetInfoKVEm", "llvm::SubtargetFeatures::getInfo(llvm::SubtargetInfoKV const*, unsigned long)"}, + {"_ZNK4llvm17SubtargetFeatures5printERNS_11raw_ostreamE", "llvm::SubtargetFeatures::print(llvm::raw_ostream&) const"}, + {"_ZNK4llvm17SubtargetFeatures4dumpEv", "llvm::SubtargetFeatures::dump() const"}, + {"_ZN4llvm17SubtargetFeatures27getDefaultSubtargetFeaturesERKSsRKNS_6TripleE", "llvm::SubtargetFeatures::getDefaultSubtargetFeatures(std::string const&, llvm::Triple const&)"}, + + // {"_Z4FindIN4llvm18SubtargetFeatureKVEEPKT_RKSsS4_m", + // "llvm::SubtargetFeatureKV const* Find(std::string const&, llvm::SubtargetFeatureKV const*, unsigned long)"}, + // "llvm::SubtargetFeatureKV const* Find(std::string const&, std::string, unsigned long)" was returned + + + // {"_Z4FindIN4llvm15SubtargetInfoKVEEPKT_RKSsS4_m", + // "llvm::SubtargetInfoKV const* Find(std::string const&, llvm::SubtargetInfoKV const*, unsigned long)"}, + // "llvm::SubtargetInfoKV const* Find(std::string const&, std::string, unsigned long)" was returned + + {"_ZN4llvm13TargetAsmInfoC1ERKNS_13TargetMachineE", "llvm::TargetAsmInfo::TargetAsmInfo(llvm::TargetMachine const&)"}, + {"_ZN4llvm13TargetAsmInfoC2ERKNS_13TargetMachineE", "llvm::TargetAsmInfo::TargetAsmInfo(llvm::TargetMachine const&)"}, + {"_ZN4llvm14TargetAsmLexerC1ERKNS_6TargetE", "llvm::TargetAsmLexer::TargetAsmLexer(llvm::Target const&)"}, + {"_ZN4llvm14TargetAsmLexerC2ERKNS_6TargetE", "llvm::TargetAsmLexer::TargetAsmLexer(llvm::Target const&)"}, + {"_ZN4llvm14TargetAsmLexerD0Ev", "llvm::TargetAsmLexer::~TargetAsmLexer()"}, + {"_ZN4llvm14TargetAsmLexerD1Ev", "llvm::TargetAsmLexer::~TargetAsmLexer()"}, + {"_ZN4llvm14TargetAsmLexerD2Ev", "llvm::TargetAsmLexer::~TargetAsmLexer()"}, + {"_ZN4llvm24initializeDataLayoutPassERNS_12PassRegistryE", "llvm::initializeDataLayoutPass(llvm::PassRegistry&)"}, + {"_ZN4llvm12StructLayoutC1EPKNS_10StructTypeERKNS_10DataLayoutE", "llvm::StructLayout::StructLayout(llvm::StructType const*, llvm::DataLayout const&)"}, + {"_ZN4llvm12StructLayoutC2EPKNS_10StructTypeERKNS_10DataLayoutE", "llvm::StructLayout::StructLayout(llvm::StructType const*, llvm::DataLayout const&)"}, + {"_ZNK4llvm10DataLayout19getABITypeAlignmentEPKNS_4TypeE", "llvm::DataLayout::getABITypeAlignment(llvm::Type const*) const"}, + {"_ZNK4llvm12StructLayout26getElementContainingOffsetEy", "llvm::StructLayout::getElementContainingOffset(unsigned long long) const"}, + {"_ZN4llvm15TargetAlignElem3getENS_13AlignTypeEnumEjjj", "llvm::TargetAlignElem::get(llvm::AlignTypeEnum, unsigned int, unsigned int, unsigned int)"}, + {"_ZNK4llvm15TargetAlignElemeqERKS0_", "llvm::TargetAlignElem::operator==(llvm::TargetAlignElem const&) const"}, + {"_ZN4llvm10DataLayout4initENS_9StringRefE", "llvm::DataLayout::init(llvm::StringRef)"}, + {"_ZN4llvm10DataLayout12setAlignmentENS_13AlignTypeEnumEjjj", "llvm::DataLayout::setAlignment(llvm::AlignTypeEnum, unsigned int, unsigned int, unsigned int)"}, + {"_ZN4llvm10DataLayoutC1Ev", "llvm::DataLayout::DataLayout()"}, + {"_ZN4llvm10DataLayoutC2Ev", "llvm::DataLayout::DataLayout()"}, + {"_ZN4llvm10DataLayoutC1EPKNS_6ModuleE", "llvm::DataLayout::DataLayout(llvm::Module const*)"}, + {"_ZN4llvm10DataLayoutC2EPKNS_6ModuleE", "llvm::DataLayout::DataLayout(llvm::Module const*)"}, + {"_ZNK4llvm10DataLayout16getAlignmentInfoENS_13AlignTypeEnumEjbPKNS_4TypeE", "llvm::DataLayout::getAlignmentInfo(llvm::AlignTypeEnum, unsigned int, bool, llvm::Type const*) const"}, + {"_ZN4llvm10DataLayoutD0Ev", "llvm::DataLayout::~DataLayout()"}, + {"_ZN4llvm10DataLayoutD1Ev", "llvm::DataLayout::~DataLayout()"}, + {"_ZN4llvm10DataLayoutD2Ev", "llvm::DataLayout::~DataLayout()"}, + {"_ZNK4llvm10DataLayout15getStructLayoutEPKNS_10StructTypeE", "llvm::DataLayout::getStructLayout(llvm::StructType const*) const"}, + {"_ZNK4llvm10DataLayout26InvalidateStructLayoutInfoEPKNS_10StructTypeE", "llvm::DataLayout::InvalidateStructLayoutInfo(llvm::StructType const*) const"}, + {"_ZNK4llvm10DataLayout23getStringRepresentationEv", "llvm::DataLayout::getStringRepresentation() const"}, + {"_ZNK4llvm10DataLayout17getTypeSizeInBitsEPKNS_4TypeE", "llvm::DataLayout::getTypeSizeInBits(llvm::Type const*) const"}, + {"_ZNK4llvm10DataLayout12getAlignmentEPKNS_4TypeEb", "llvm::DataLayout::getAlignment(llvm::Type const*, bool) const"}, + {"_ZNK4llvm10DataLayout26getABIIntegerTypeAlignmentEj", "llvm::DataLayout::getABIIntegerTypeAlignment(unsigned int) const"}, + {"_ZNK4llvm10DataLayout25getCallFrameTypeAlignmentEPKNS_4TypeE", "llvm::DataLayout::getCallFrameTypeAlignment(llvm::Type const*) const"}, + {"_ZNK4llvm10DataLayout20getPrefTypeAlignmentEPKNS_4TypeE", "llvm::DataLayout::getPrefTypeAlignment(llvm::Type const*) const"}, + {"_ZNK4llvm10DataLayout30getPreferredTypeAlignmentShiftEPKNS_4TypeE", "llvm::DataLayout::getPreferredTypeAlignmentShift(llvm::Type const*) const"}, + {"_ZNK4llvm10DataLayout13getIntPtrTypeERNS_11LLVMContextE", "llvm::DataLayout::getIntPtrType(llvm::LLVMContext&) const"}, + {"_ZNK4llvm10DataLayout16getIndexedOffsetEPKNS_4TypeEPKPNS_5ValueEj", "llvm::DataLayout::getIndexedOffset(llvm::Type const*, llvm::Value* const*, unsigned int) const"}, + {"_ZNK4llvm10DataLayout21getPreferredAlignmentEPKNS_14GlobalVariableE", "llvm::DataLayout::getPreferredAlignment(llvm::GlobalVariable const*) const"}, + {"_ZNK4llvm10DataLayout24getPreferredAlignmentLogEPKNS_14GlobalVariableE", "llvm::DataLayout::getPreferredAlignmentLog(llvm::GlobalVariable const*) const"}, + {"_ZN12_GLOBAL__N_115StructLayoutMapD1Ev", "(anonymous namespace)::StructLayoutMap::~StructLayoutMap()"}, + {"_ZN12_GLOBAL__N_115StructLayoutMapD0Ev", "(anonymous namespace)::StructLayoutMap::~StructLayoutMap()"}, + {"_ZN12_GLOBAL__N_115StructLayoutMap18refineAbstractTypeEPKN4llvm11DerivedTypeEPKNS1_4TypeE", "(anonymous namespace)::StructLayoutMap::refineAbstractType(llvm::DerivedType const*, llvm::Type const*)"}, + {"_ZN12_GLOBAL__N_115StructLayoutMap18typeBecameConcreteEPKN4llvm11DerivedTypeE", "(anonymous namespace)::StructLayoutMap::typeBecameConcrete(llvm::DerivedType const*)"}, + {"_ZNK12_GLOBAL__N_115StructLayoutMap4dumpEv", "(anonymous namespace)::StructLayoutMap::dump() const"}, + {"_ZN4llvm23SmallVectorTemplateBaseINS_15TargetAlignElemELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN4llvm12PATypeHolderaSEPKNS_4TypeE", "llvm::PATypeHolder::operator=(llvm::Type const*)"}, + {"_ZN4llvm8DenseMapIPKNS_10StructTypeEPNS_12StructLayoutENS_12DenseMapInfoIS3_EENS6_IS5_EEE16InsertIntoBucketERKS3_RKS5_PSt4pairIS3_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::StructType const* const&, llvm::StructLayout* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_10StructTypeEPNS_12StructLayoutENS_12DenseMapInfoIS3_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm15callDefaultCtorINS_10DataLayoutEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor()"}, + {"_ZN4llvm19TargetELFWriterInfoC1Ebb", "llvm::TargetELFWriterInfo::TargetELFWriterInfo(bool, bool)"}, + {"_ZN4llvm19TargetELFWriterInfoC2Ebb", "llvm::TargetELFWriterInfo::TargetELFWriterInfo(bool, bool)"}, + {"_ZN4llvm19TargetELFWriterInfoD0Ev", "llvm::TargetELFWriterInfo::~TargetELFWriterInfo()"}, + {"_ZN4llvm19TargetELFWriterInfoD1Ev", "llvm::TargetELFWriterInfo::~TargetELFWriterInfo()"}, + {"_ZN4llvm19TargetELFWriterInfoD2Ev", "llvm::TargetELFWriterInfo::~TargetELFWriterInfo()"}, + {"_ZN4llvm19TargetFrameLoweringD0Ev", "llvm::TargetFrameLowering::~TargetFrameLowering()"}, + {"_ZN4llvm19TargetFrameLoweringD1Ev", "llvm::TargetFrameLowering::~TargetFrameLowering()"}, + {"_ZN4llvm19TargetFrameLoweringD2Ev", "llvm::TargetFrameLowering::~TargetFrameLowering()"}, + {"_ZNK4llvm19TargetFrameLowering20getInitialFrameStateERSt6vectorINS_11MachineMoveESaIS2_EE", "llvm::TargetFrameLowering::getInitialFrameState(std::vector>&) const"}, + {"_ZNK4llvm19TargetFrameLowering19getFrameIndexOffsetERKNS_15MachineFunctionEi", "llvm::TargetFrameLowering::getFrameIndexOffset(llvm::MachineFunction const&, int) const"}, + {"_ZNK4llvm19TargetFrameLowering22getFrameIndexReferenceERKNS_15MachineFunctionEiRj", "llvm::TargetFrameLowering::getFrameIndexReference(llvm::MachineFunction const&, int, unsigned int&) const"}, + {"_ZNK4llvm17TargetOperandInfo11getRegClassEPKNS_18TargetRegisterInfoE", "llvm::TargetOperandInfo::getRegClass(llvm::TargetRegisterInfo const*) const"}, + {"_ZN4llvm15TargetInstrInfoC1EPKNS_15TargetInstrDescEj", "llvm::TargetInstrInfo::TargetInstrInfo(llvm::TargetInstrDesc const*, unsigned int)"}, + {"_ZN4llvm15TargetInstrInfoC2EPKNS_15TargetInstrDescEj", "llvm::TargetInstrInfo::TargetInstrInfo(llvm::TargetInstrDesc const*, unsigned int)"}, + {"_ZN4llvm15TargetInstrInfoD0Ev", "llvm::TargetInstrInfo::~TargetInstrInfo()"}, + {"_ZN4llvm15TargetInstrInfoD1Ev", "llvm::TargetInstrInfo::~TargetInstrInfo()"}, + {"_ZN4llvm15TargetInstrInfoD2Ev", "llvm::TargetInstrInfo::~TargetInstrInfo()"}, + {"_ZNK4llvm15TargetInstrInfo14getNumMicroOpsEPKNS_18InstrItineraryDataEPKNS_12MachineInstrE", "llvm::TargetInstrInfo::getNumMicroOps(llvm::InstrItineraryData const*, llvm::MachineInstr const*) const"}, + {"_ZNK4llvm15TargetInstrInfo17getOperandLatencyEPKNS_18InstrItineraryDataEPKNS_12MachineInstrEjS6_j", "llvm::TargetInstrInfo::getOperandLatency(llvm::InstrItineraryData const*, llvm::MachineInstr const*, unsigned int, llvm::MachineInstr const*, unsigned int) const"}, + {"_ZNK4llvm15TargetInstrInfo17getOperandLatencyEPKNS_18InstrItineraryDataEPNS_6SDNodeEjS5_j", "llvm::TargetInstrInfo::getOperandLatency(llvm::InstrItineraryData const*, llvm::SDNode*, unsigned int, llvm::SDNode*, unsigned int) const"}, + {"_ZNK4llvm15TargetInstrInfo15getInstrLatencyEPKNS_18InstrItineraryDataEPKNS_12MachineInstrEPj", "llvm::TargetInstrInfo::getInstrLatency(llvm::InstrItineraryData const*, llvm::MachineInstr const*, unsigned int*) const"}, + {"_ZNK4llvm15TargetInstrInfo15getInstrLatencyEPKNS_18InstrItineraryDataEPNS_6SDNodeE", "llvm::TargetInstrInfo::getInstrLatency(llvm::InstrItineraryData const*, llvm::SDNode*) const"}, + {"_ZNK4llvm15TargetInstrInfo16hasLowDefLatencyEPKNS_18InstrItineraryDataEPKNS_12MachineInstrEj", "llvm::TargetInstrInfo::hasLowDefLatency(llvm::InstrItineraryData const*, llvm::MachineInstr const*, unsigned int) const"}, + {"_ZNK4llvm15TargetInstrInfo10insertNoopERNS_17MachineBasicBlockENS_14ilist_iteratorINS_12MachineInstrEEE", "llvm::TargetInstrInfo::insertNoop(llvm::MachineBasicBlock&, llvm::ilist_iterator) const"}, + {"_ZNK4llvm15TargetInstrInfo24isUnpredicatedTerminatorEPKNS_12MachineInstrE", "llvm::TargetInstrInfo::isUnpredicatedTerminator(llvm::MachineInstr const*) const"}, + {"_ZNK4llvm15TargetInstrInfo18getInlineAsmLengthEPKcRKNS_9MCAsmInfoE", "llvm::TargetInstrInfo::getInlineAsmLength(char const*, llvm::MCAsmInfo const&) const"}, + {"_ZN4llvm24TargetLoweringObjectFileC1Ev", "llvm::TargetLoweringObjectFile::TargetLoweringObjectFile()"}, + {"_ZN4llvm24TargetLoweringObjectFileC2Ev", "llvm::TargetLoweringObjectFile::TargetLoweringObjectFile()"}, + {"_ZN4llvm24TargetLoweringObjectFileD0Ev", "llvm::TargetLoweringObjectFile::~TargetLoweringObjectFile()"}, + {"_ZN4llvm24TargetLoweringObjectFileD1Ev", "llvm::TargetLoweringObjectFile::~TargetLoweringObjectFile()"}, + {"_ZN4llvm24TargetLoweringObjectFileD2Ev", "llvm::TargetLoweringObjectFile::~TargetLoweringObjectFile()"}, + {"_ZN4llvm24TargetLoweringObjectFile16getKindForGlobalEPKNS_11GlobalValueERKNS_13TargetMachineE", "llvm::TargetLoweringObjectFile::getKindForGlobal(llvm::GlobalValue const*, llvm::TargetMachine const&)"}, + {"_ZNK4llvm24TargetLoweringObjectFile16SectionForGlobalEPKNS_11GlobalValueENS_11SectionKindEPNS_7ManglerERKNS_13TargetMachineE", "llvm::TargetLoweringObjectFile::SectionForGlobal(llvm::GlobalValue const*, llvm::SectionKind, llvm::Mangler*, llvm::TargetMachine const&) const"}, + {"_ZNK4llvm24TargetLoweringObjectFile22SelectSectionForGlobalEPKNS_11GlobalValueENS_11SectionKindEPNS_7ManglerERKNS_13TargetMachineE", "llvm::TargetLoweringObjectFile::SelectSectionForGlobal(llvm::GlobalValue const*, llvm::SectionKind, llvm::Mangler*, llvm::TargetMachine const&) const"}, + {"_ZNK4llvm24TargetLoweringObjectFile21getSectionForConstantENS_11SectionKindE", "llvm::TargetLoweringObjectFile::getSectionForConstant(llvm::SectionKind) const"}, + {"_ZNK4llvm24TargetLoweringObjectFile30getExprForDwarfGlobalReferenceEPKNS_11GlobalValueEPNS_7ManglerEPNS_17MachineModuleInfoEjRNS_10MCStreamerE", "llvm::TargetLoweringObjectFile::getExprForDwarfGlobalReference(llvm::GlobalValue const*, llvm::Mangler*, llvm::MachineModuleInfo*, unsigned int, llvm::MCStreamer&) const"}, + {"_ZNK4llvm24TargetLoweringObjectFile24getExprForDwarfReferenceEPKNS_8MCSymbolEPNS_7ManglerEPNS_17MachineModuleInfoEjRNS_10MCStreamerE", "llvm::TargetLoweringObjectFile::getExprForDwarfReference(llvm::MCSymbol const*, llvm::Mangler*, llvm::MachineModuleInfo*, unsigned int, llvm::MCStreamer&) const"}, + {"_ZNK4llvm24TargetLoweringObjectFile22getPersonalityEncodingEv", "llvm::TargetLoweringObjectFile::getPersonalityEncoding() const"}, + {"_ZNK4llvm24TargetLoweringObjectFile15getLSDAEncodingEv", "llvm::TargetLoweringObjectFile::getLSDAEncoding() const"}, + {"_ZNK4llvm24TargetLoweringObjectFile14getFDEEncodingEv", "llvm::TargetLoweringObjectFile::getFDEEncoding() const"}, + {"_ZNK4llvm24TargetLoweringObjectFile16getTTypeEncodingEv", "llvm::TargetLoweringObjectFile::getTTypeEncoding() const"}, + {"_ZN4llvm24TargetLoweringObjectFile10InitializeERNS_9MCContextERKNS_13TargetMachineE", "llvm::TargetLoweringObjectFile::Initialize(llvm::MCContext&, llvm::TargetMachine const&)"}, + {"_ZN4llvm13TargetMachineC1ERKNS_6TargetE", "llvm::TargetMachine::TargetMachine(llvm::Target const&)"}, + {"_ZN4llvm13TargetMachineC2ERKNS_6TargetE", "llvm::TargetMachine::TargetMachine(llvm::Target const&)"}, + {"_ZN4llvm13TargetMachineD0Ev", "llvm::TargetMachine::~TargetMachine()"}, + {"_ZN4llvm13TargetMachineD1Ev", "llvm::TargetMachine::~TargetMachine()"}, + {"_ZN4llvm13TargetMachineD2Ev", "llvm::TargetMachine::~TargetMachine()"}, + {"_ZN4llvm13TargetMachine18getRelocationModelEv", "llvm::TargetMachine::getRelocationModel()"}, + {"_ZN4llvm13TargetMachine18setRelocationModelENS_5Reloc5ModelE", "llvm::TargetMachine::setRelocationModel(llvm::Reloc::Model)"}, + {"_ZN4llvm13TargetMachine12getCodeModelEv", "llvm::TargetMachine::getCodeModel()"}, + {"_ZN4llvm13TargetMachine12setCodeModelENS_9CodeModel5ModelE", "llvm::TargetMachine::setCodeModel(llvm::CodeModel::Model)"}, + {"_ZN4llvm13TargetMachine22getAsmVerbosityDefaultEv", "llvm::TargetMachine::getAsmVerbosityDefault()"}, + {"_ZN4llvm13TargetMachine22setAsmVerbosityDefaultEb", "llvm::TargetMachine::setAsmVerbosityDefault(bool)"}, + {"_ZN4llvm13TargetMachine19getFunctionSectionsEv", "llvm::TargetMachine::getFunctionSections()"}, + {"_ZN4llvm13TargetMachine15getDataSectionsEv", "llvm::TargetMachine::getDataSections()"}, + {"_ZN4llvm13TargetMachine19setFunctionSectionsEb", "llvm::TargetMachine::setFunctionSections(bool)"}, + {"_ZN4llvm13TargetMachine15setDataSectionsEb", "llvm::TargetMachine::setDataSections(bool)"}, + {"_ZN4llvm23DisableFramePointerElimERKNS_15MachineFunctionE", "llvm::DisableFramePointerElim(llvm::MachineFunction const&)"}, + {"_ZN4llvm16LessPreciseFPMADEv", "llvm::LessPreciseFPMAD()"}, + {"_ZN4llvm32HonorSignDependentRoundingFPMathEv", "llvm::HonorSignDependentRoundingFPMath()"}, + {"_ZN4llvm2cl3optIbLb1ENS0_6parserIbEEED1Ev", "llvm::cl::opt>::~opt()"}, + {"_ZN4llvm2cl3optINS_8FloatABI7ABITypeELb1ENS0_6parserIS3_EEED1Ev", "llvm::cl::opt>::~opt()"}, + {"_ZN4llvm2cl3optINS_5Reloc5ModelELb1ENS0_6parserIS3_EEED1Ev", "llvm::cl::opt>::~opt()"}, + {"_ZN4llvm2cl3optINS_9CodeModel5ModelELb1ENS0_6parserIS3_EEED1Ev", "llvm::cl::opt>::~opt()"}, + {"_ZN4llvm2cl3optIjLb1ENS0_6parserIjEEED1Ev", "llvm::cl::opt>::~opt()"}, + {"_ZNK4llvm13TargetMachine25getEnableTailMergeDefaultEv", "llvm::TargetMachine::getEnableTailMergeDefault() const"}, + {"_ZN4llvm13TargetMachine19addPassesToEmitFileERNS_15PassManagerBaseERNS_21formatted_raw_ostreamENS0_15CodeGenFileTypeENS_10CodeGenOpt5LevelEb", "llvm::TargetMachine::addPassesToEmitFile(llvm::PassManagerBase&, llvm::formatted_raw_ostream&, llvm::TargetMachine::CodeGenFileType, llvm::CodeGenOpt::Level, bool)"}, + {"_ZN4llvm13TargetMachine26addPassesToEmitMachineCodeERNS_15PassManagerBaseERNS_14JITCodeEmitterENS_10CodeGenOpt5LevelEb", "llvm::TargetMachine::addPassesToEmitMachineCode(llvm::PassManagerBase&, llvm::JITCodeEmitter&, llvm::CodeGenOpt::Level, bool)"}, + {"_ZN4llvm13TargetMachine17addPassesToEmitMCERNS_15PassManagerBaseERPNS_9MCContextENS_10CodeGenOpt5LevelEb", "llvm::TargetMachine::addPassesToEmitMC(llvm::PassManagerBase&, llvm::MCContext*&, llvm::CodeGenOpt::Level, bool)"}, + {"_ZN4llvm2cl3optIbLb1ENS0_6parserIbEEE16handleOccurrenceEjNS_9StringRefES5_", "llvm::cl::opt>::handleOccurrence(unsigned int, llvm::StringRef, llvm::StringRef)"}, + {"_ZNK4llvm2cl3optIbLb1ENS0_6parserIbEEE27getValueExpectedFlagDefaultEv", "llvm::cl::opt>::getValueExpectedFlagDefault() const"}, + {"_ZNK4llvm2cl3optIbLb1ENS0_6parserIbEEE14getOptionWidthEv", "llvm::cl::opt>::getOptionWidth() const"}, + {"_ZNK4llvm2cl3optIbLb1ENS0_6parserIbEEE15printOptionInfoEm", "llvm::cl::opt>::printOptionInfo(unsigned long) const"}, + {"_ZN4llvm2cl3optIbLb1ENS0_6parserIbEEE19getExtraOptionNamesERNS_15SmallVectorImplIPKcEE", "llvm::cl::opt>::getExtraOptionNames(llvm::SmallVectorImpl&)"}, + {"_ZN4llvm2cl3optIbLb1ENS0_6parserIbEEED0Ev", "llvm::cl::opt>::~opt()"}, + {"_ZN4llvm2cl3optIjLb1ENS0_6parserIjEEE16handleOccurrenceEjNS_9StringRefES5_", "llvm::cl::opt>::handleOccurrence(unsigned int, llvm::StringRef, llvm::StringRef)"}, + {"_ZNK4llvm2cl3optIjLb1ENS0_6parserIjEEE27getValueExpectedFlagDefaultEv", "llvm::cl::opt>::getValueExpectedFlagDefault() const"}, + {"_ZNK4llvm2cl3optIjLb1ENS0_6parserIjEEE14getOptionWidthEv", "llvm::cl::opt>::getOptionWidth() const"}, + {"_ZNK4llvm2cl3optIjLb1ENS0_6parserIjEEE15printOptionInfoEm", "llvm::cl::opt>::printOptionInfo(unsigned long) const"}, + {"_ZN4llvm2cl3optIjLb1ENS0_6parserIjEEE19getExtraOptionNamesERNS_15SmallVectorImplIPKcEE", "llvm::cl::opt>::getExtraOptionNames(llvm::SmallVectorImpl&)"}, + {"_ZN4llvm2cl3optIjLb1ENS0_6parserIjEEED0Ev", "llvm::cl::opt>::~opt()"}, + {"_ZN4llvm2cl3optINS_9CodeModel5ModelELb1ENS0_6parserIS3_EEE16handleOccurrenceEjNS_9StringRefES7_", "llvm::cl::opt>::handleOccurrence(unsigned int, llvm::StringRef, llvm::StringRef)"}, + {"_ZNK4llvm2cl3optINS_9CodeModel5ModelELb1ENS0_6parserIS3_EEE27getValueExpectedFlagDefaultEv", "llvm::cl::opt>::getValueExpectedFlagDefault() const"}, + {"_ZNK4llvm2cl3optINS_9CodeModel5ModelELb1ENS0_6parserIS3_EEE14getOptionWidthEv", "llvm::cl::opt>::getOptionWidth() const"}, + {"_ZNK4llvm2cl3optINS_9CodeModel5ModelELb1ENS0_6parserIS3_EEE15printOptionInfoEm", "llvm::cl::opt>::printOptionInfo(unsigned long) const"}, + {"_ZN4llvm2cl3optINS_9CodeModel5ModelELb1ENS0_6parserIS3_EEE19getExtraOptionNamesERNS_15SmallVectorImplIPKcEE", "llvm::cl::opt>::getExtraOptionNames(llvm::SmallVectorImpl&)"}, + {"_ZN4llvm2cl3optINS_9CodeModel5ModelELb1ENS0_6parserIS3_EEED0Ev", "llvm::cl::opt>::~opt()"}, + {"_ZN4llvm2cl19generic_parser_base19getExtraOptionNamesERNS_15SmallVectorImplIPKcEE", "llvm::cl::generic_parser_base::getExtraOptionNames(llvm::SmallVectorImpl&)"}, + {"_ZN4llvm2cl6parserINS_9CodeModel5ModelEE5parseERNS0_6OptionENS_9StringRefES7_RS3_", "llvm::cl::parser::parse(llvm::cl::Option&, llvm::StringRef, llvm::StringRef, llvm::CodeModel::Model&)"}, + + // {"_ZNK4llvm2cl11ValuesClassIiE5applyINS0_3optINS_9CodeModel5ModelELb1ENS0_6parserIS6_EEEEEEvRT_", + // "void llvm::cl::ValuesClass::apply>>(llvm::cl::opt>&) const"}, + // "void llvm::cl::ValuesClass::apply>>(int&) const" was returned + + {"_ZN4llvm23SmallVectorTemplateBaseINS_2cl6parserINS_9CodeModel5ModelEE10OptionInfoELb0EE4growEm", "llvm::SmallVectorTemplateBase::OptionInfo, false>::grow(unsigned long)"}, + {"_ZN4llvm2cl6parserINS_9CodeModel5ModelEED1Ev", "llvm::cl::parser::~parser()"}, + {"_ZN4llvm2cl6parserINS_9CodeModel5ModelEED0Ev", "llvm::cl::parser::~parser()"}, + {"_ZNK4llvm2cl6parserINS_9CodeModel5ModelEE13getNumOptionsEv", "llvm::cl::parser::getNumOptions() const"}, + {"_ZNK4llvm2cl6parserINS_9CodeModel5ModelEE9getOptionEj", "llvm::cl::parser::getOption(unsigned int) const"}, + {"_ZNK4llvm2cl6parserINS_9CodeModel5ModelEE14getDescriptionEj", "llvm::cl::parser::getDescription(unsigned int) const"}, + {"_ZN4llvm2cl3optINS_5Reloc5ModelELb1ENS0_6parserIS3_EEE16handleOccurrenceEjNS_9StringRefES7_", "llvm::cl::opt>::handleOccurrence(unsigned int, llvm::StringRef, llvm::StringRef)"}, + {"_ZNK4llvm2cl3optINS_5Reloc5ModelELb1ENS0_6parserIS3_EEE27getValueExpectedFlagDefaultEv", "llvm::cl::opt>::getValueExpectedFlagDefault() const"}, + {"_ZNK4llvm2cl3optINS_5Reloc5ModelELb1ENS0_6parserIS3_EEE14getOptionWidthEv", "llvm::cl::opt>::getOptionWidth() const"}, + {"_ZNK4llvm2cl3optINS_5Reloc5ModelELb1ENS0_6parserIS3_EEE15printOptionInfoEm", "llvm::cl::opt>::printOptionInfo(unsigned long) const"}, + {"_ZN4llvm2cl3optINS_5Reloc5ModelELb1ENS0_6parserIS3_EEE19getExtraOptionNamesERNS_15SmallVectorImplIPKcEE", "llvm::cl::opt>::getExtraOptionNames(llvm::SmallVectorImpl&)"}, + {"_ZN4llvm2cl3optINS_5Reloc5ModelELb1ENS0_6parserIS3_EEED0Ev", "llvm::cl::opt>::~opt()"}, + {"_ZN4llvm2cl6parserINS_5Reloc5ModelEE5parseERNS0_6OptionENS_9StringRefES7_RS3_", "llvm::cl::parser::parse(llvm::cl::Option&, llvm::StringRef, llvm::StringRef, llvm::Reloc::Model&)"}, + + // {"_ZNK4llvm2cl11ValuesClassIiE5applyINS0_3optINS_5Reloc5ModelELb1ENS0_6parserIS6_EEEEEEvRT_", + // "void llvm::cl::ValuesClass::apply>>(llvm::cl::opt>&) const"}, + // "void llvm::cl::ValuesClass::apply>>(int&) const" was returned + + {"_ZN4llvm23SmallVectorTemplateBaseINS_2cl6parserINS_5Reloc5ModelEE10OptionInfoELb0EE4growEm", "llvm::SmallVectorTemplateBase::OptionInfo, false>::grow(unsigned long)"}, + {"_ZN4llvm2cl6parserINS_5Reloc5ModelEED1Ev", "llvm::cl::parser::~parser()"}, + {"_ZN4llvm2cl6parserINS_5Reloc5ModelEED0Ev", "llvm::cl::parser::~parser()"}, + {"_ZNK4llvm2cl6parserINS_5Reloc5ModelEE13getNumOptionsEv", "llvm::cl::parser::getNumOptions() const"}, + {"_ZNK4llvm2cl6parserINS_5Reloc5ModelEE9getOptionEj", "llvm::cl::parser::getOption(unsigned int) const"}, + {"_ZNK4llvm2cl6parserINS_5Reloc5ModelEE14getDescriptionEj", "llvm::cl::parser::getDescription(unsigned int) const"}, + {"_ZN4llvm2cl3optINS_8FloatABI7ABITypeELb1ENS0_6parserIS3_EEE16handleOccurrenceEjNS_9StringRefES7_", "llvm::cl::opt>::handleOccurrence(unsigned int, llvm::StringRef, llvm::StringRef)"}, + {"_ZNK4llvm2cl3optINS_8FloatABI7ABITypeELb1ENS0_6parserIS3_EEE27getValueExpectedFlagDefaultEv", "llvm::cl::opt>::getValueExpectedFlagDefault() const"}, + {"_ZNK4llvm2cl3optINS_8FloatABI7ABITypeELb1ENS0_6parserIS3_EEE14getOptionWidthEv", "llvm::cl::opt>::getOptionWidth() const"}, + {"_ZNK4llvm2cl3optINS_8FloatABI7ABITypeELb1ENS0_6parserIS3_EEE15printOptionInfoEm", "llvm::cl::opt>::printOptionInfo(unsigned long) const"}, + {"_ZN4llvm2cl3optINS_8FloatABI7ABITypeELb1ENS0_6parserIS3_EEE19getExtraOptionNamesERNS_15SmallVectorImplIPKcEE", "llvm::cl::opt>::getExtraOptionNames(llvm::SmallVectorImpl&)"}, + {"_ZN4llvm2cl3optINS_8FloatABI7ABITypeELb1ENS0_6parserIS3_EEED0Ev", "llvm::cl::opt>::~opt()"}, + {"_ZN4llvm2cl6parserINS_8FloatABI7ABITypeEE5parseERNS0_6OptionENS_9StringRefES7_RS3_", "llvm::cl::parser::parse(llvm::cl::Option&, llvm::StringRef, llvm::StringRef, llvm::FloatABI::ABIType&)"}, + + // {"_ZNK4llvm2cl11ValuesClassIiE5applyINS0_3optINS_8FloatABI7ABITypeELb1ENS0_6parserIS6_EEEEEEvRT_", + // "void llvm::cl::ValuesClass::apply>>(llvm::cl::opt>&) const"}, + // "void llvm::cl::ValuesClass::apply>>(int&) const" was returned + + {"_ZN4llvm23SmallVectorTemplateBaseINS_2cl6parserINS_8FloatABI7ABITypeEE10OptionInfoELb0EE4growEm", "llvm::SmallVectorTemplateBase::OptionInfo, false>::grow(unsigned long)"}, + {"_ZN4llvm2cl6parserINS_8FloatABI7ABITypeEED1Ev", "llvm::cl::parser::~parser()"}, + {"_ZN4llvm2cl6parserINS_8FloatABI7ABITypeEED0Ev", "llvm::cl::parser::~parser()"}, + {"_ZNK4llvm2cl6parserINS_8FloatABI7ABITypeEE13getNumOptionsEv", "llvm::cl::parser::getNumOptions() const"}, + {"_ZNK4llvm2cl6parserINS_8FloatABI7ABITypeEE9getOptionEj", "llvm::cl::parser::getOption(unsigned int) const"}, + {"_ZNK4llvm2cl6parserINS_8FloatABI7ABITypeEE14getDescriptionEj", "llvm::cl::parser::getDescription(unsigned int) const"}, + {"_ZN4llvm18TargetRegisterInfoC1EPKNS_18TargetRegisterDescEjPKPKNS_19TargetRegisterClassES8_PKPKciiPKjjSE_j", "llvm::TargetRegisterInfo::TargetRegisterInfo(llvm::TargetRegisterDesc const*, unsigned int, llvm::TargetRegisterClass const* const*, llvm::TargetRegisterClass const* const*, char const* const*, int, int, unsigned int const*, unsigned int, unsigned int const*, unsigned int)"}, + {"_ZN4llvm18TargetRegisterInfoC2EPKNS_18TargetRegisterDescEjPKPKNS_19TargetRegisterClassES8_PKPKciiPKjjSE_j", "llvm::TargetRegisterInfo::TargetRegisterInfo(llvm::TargetRegisterDesc const*, unsigned int, llvm::TargetRegisterClass const* const*, llvm::TargetRegisterClass const* const*, char const* const*, int, int, unsigned int const*, unsigned int, unsigned int const*, unsigned int)"}, + {"_ZN4llvm18TargetRegisterInfoD0Ev", "llvm::TargetRegisterInfo::~TargetRegisterInfo()"}, + {"_ZN4llvm18TargetRegisterInfoD1Ev", "llvm::TargetRegisterInfo::~TargetRegisterInfo()"}, + {"_ZN4llvm18TargetRegisterInfoD2Ev", "llvm::TargetRegisterInfo::~TargetRegisterInfo()"}, + {"_ZNK4llvm8PrintReg5printERNS_11raw_ostreamE", "llvm::PrintReg::print(llvm::raw_ostream&) const"}, + {"_ZNK4llvm18TargetRegisterInfo22getMinimalPhysRegClassEjNS_3EVTE", "llvm::TargetRegisterInfo::getMinimalPhysRegClass(unsigned int, llvm::EVT) const"}, + {"_ZNK4llvm18TargetRegisterInfo17getAllocatableSetERKNS_15MachineFunctionEPKNS_19TargetRegisterClassE", "llvm::TargetRegisterInfo::getAllocatableSet(llvm::MachineFunction const&, llvm::TargetRegisterClass const*) const"}, + {"_ZN4llvm17getCommonSubClassEPKNS_19TargetRegisterClassES2_", "llvm::getCommonSubClass(llvm::TargetRegisterClass const*, llvm::TargetRegisterClass const*)"}, + {"_ZNK4llvm18TargetRegisterInfo20composeSubRegIndicesEjj", "llvm::TargetRegisterInfo::composeSubRegIndices(unsigned int, unsigned int) const"}, + {"_ZNK4llvm18TargetRegisterInfo21needsStackRealignmentERKNS_15MachineFunctionE", "llvm::TargetRegisterInfo::needsStackRealignment(llvm::MachineFunction const&) const"}, + {"_ZN4llvm15TargetSubtargetC1Ev", "llvm::TargetSubtarget::TargetSubtarget()"}, + {"_ZN4llvm15TargetSubtargetC2Ev", "llvm::TargetSubtarget::TargetSubtarget()"}, + {"_ZN4llvm15TargetSubtargetD0Ev", "llvm::TargetSubtarget::~TargetSubtarget()"}, + {"_ZN4llvm15TargetSubtargetD1Ev", "llvm::TargetSubtarget::~TargetSubtarget()"}, + {"_ZN4llvm15TargetSubtargetD2Ev", "llvm::TargetSubtarget::~TargetSubtarget()"}, + {"_ZNK4llvm15TargetSubtarget21enablePostRASchedulerENS_10CodeGenOpt5LevelERNS0_16AntiDepBreakModeERNS_15SmallVectorImplIPNS_19TargetRegisterClassEEE", "llvm::TargetSubtarget::enablePostRAScheduler(llvm::CodeGenOpt::Level, llvm::TargetSubtarget::AntiDepBreakMode&, llvm::SmallVectorImpl&) const"}, + {"_ZN4llvm24AssemblyAnnotationWriterD0Ev", "llvm::AssemblyAnnotationWriter::~AssemblyAnnotationWriter()"}, + {"_ZN4llvm24AssemblyAnnotationWriterD1Ev", "llvm::AssemblyAnnotationWriter::~AssemblyAnnotationWriter()"}, + {"_ZN4llvm24AssemblyAnnotationWriterD2Ev", "llvm::AssemblyAnnotationWriter::~AssemblyAnnotationWriter()"}, + {"_ZN4llvm12TypePrinting5clearEv", "llvm::TypePrinting::clear()"}, + {"_ZNK4llvm12TypePrinting11hasTypeNameEPKNS_4TypeE", "llvm::TypePrinting::hasTypeName(llvm::Type const*) const"}, + {"_ZN4llvm12TypePrinting11addTypeNameEPKNS_4TypeERKSs", "llvm::TypePrinting::addTypeName(llvm::Type const*, std::string const&)"}, + {"_ZN4llvm12TypePrintingC1Ev", "llvm::TypePrinting::TypePrinting()"}, + {"_ZN4llvm12TypePrintingC2Ev", "llvm::TypePrinting::TypePrinting()"}, + {"_ZN4llvm12TypePrintingD1Ev", "llvm::TypePrinting::~TypePrinting()"}, + {"_ZN4llvm12TypePrintingD2Ev", "llvm::TypePrinting::~TypePrinting()"}, + + // {"_ZN4llvm12TypePrinting12CalcTypeNameEPKNS_4TypeERNS_15SmallVectorImplIS3_EERNS_11raw_ostreamEb", + // "llvm::TypePrinting::CalcTypeName(llvm::Type const*, llvm::SmallVectorImpl&, llvm::raw_ostream&, bool)"}, + // "llvm::TypePrinting::CalcTypeName(llvm::Type const*, llvm::SmallVectorImpl&, llvm::raw_ostream&, bool)" was returned + + {"_ZN4llvm12TypePrinting5printEPKNS_4TypeERNS_11raw_ostreamEb", "llvm::TypePrinting::print(llvm::Type const*, llvm::raw_ostream&, bool)"}, + {"_ZN4llvm17WriteTypeSymbolicERNS_11raw_ostreamEPKNS_4TypeEPKNS_6ModuleE", "llvm::WriteTypeSymbolic(llvm::raw_ostream&, llvm::Type const*, llvm::Module const*)"}, + + // {"_Z23AddModuleTypesToPrinterRN4llvm12TypePrintingERSt6vectorIPKNS_4TypeESaIS5_EEPKNS_6ModuleE", + // "AddModuleTypesToPrinter(llvm::TypePrinting&, std::vector>&, llvm::Module const*)"}, + // got error + + {"_ZN4llvm14WriteAsOperandERNS_11raw_ostreamEPKNS_5ValueEbPKNS_6ModuleE", "llvm::WriteAsOperand(llvm::raw_ostream&, llvm::Value const*, bool, llvm::Module const*)"}, + {"_Z22WriteAsOperandInternalRN4llvm11raw_ostreamEPKNS_5ValueEPNS_12TypePrintingEPN12_GLOBAL__N_111SlotTrackerEPKNS_6ModuleE", "WriteAsOperandInternal(llvm::raw_ostream&, llvm::Value const*, llvm::TypePrinting*, (anonymous namespace)::SlotTracker*, llvm::Module const*)"}, + {"_ZNK4llvm6Module5printERNS_11raw_ostreamEPNS_24AssemblyAnnotationWriterE", "llvm::Module::print(llvm::raw_ostream&, llvm::AssemblyAnnotationWriter*) const"}, + {"_ZN12_GLOBAL__N_111SlotTrackerC1EPKN4llvm6ModuleE", "(anonymous namespace)::SlotTracker::SlotTracker(llvm::Module const*)"}, + {"_ZNK4llvm11NamedMDNode5printERNS_11raw_ostreamEPNS_24AssemblyAnnotationWriterE", "llvm::NamedMDNode::print(llvm::raw_ostream&, llvm::AssemblyAnnotationWriter*) const"}, + {"_ZN12_GLOBAL__N_114AssemblyWriter16printNamedMDNodeEPKN4llvm11NamedMDNodeE", "(anonymous namespace)::AssemblyWriter::printNamedMDNode(llvm::NamedMDNode const*)"}, + {"_ZNK4llvm4Type5printERNS_11raw_ostreamE", "llvm::Type::print(llvm::raw_ostream&) const"}, + {"_ZNK4llvm5Value5printERNS_11raw_ostreamEPNS_24AssemblyAnnotationWriterE", "llvm::Value::print(llvm::raw_ostream&, llvm::AssemblyAnnotationWriter*) const"}, + {"_ZN12_GLOBAL__N_111SlotTrackerC1EPKN4llvm8FunctionE", "(anonymous namespace)::SlotTracker::SlotTracker(llvm::Function const*)"}, + {"_ZN12_GLOBAL__N_114AssemblyWriter16printInstructionERKN4llvm11InstructionE", "(anonymous namespace)::AssemblyWriter::printInstruction(llvm::Instruction const&)"}, + {"_ZN12_GLOBAL__N_114AssemblyWriter15printBasicBlockEPKN4llvm10BasicBlockE", "(anonymous namespace)::AssemblyWriter::printBasicBlock(llvm::BasicBlock const*)"}, + {"_ZN12_GLOBAL__N_114AssemblyWriter11printGlobalEPKN4llvm14GlobalVariableE", "(anonymous namespace)::AssemblyWriter::printGlobal(llvm::GlobalVariable const*)"}, + {"_ZN12_GLOBAL__N_114AssemblyWriter13printFunctionEPKN4llvm8FunctionE", "(anonymous namespace)::AssemblyWriter::printFunction(llvm::Function const*)"}, + {"_ZN12_GLOBAL__N_114AssemblyWriter10printAliasEPKN4llvm11GlobalAliasE", "(anonymous namespace)::AssemblyWriter::printAlias(llvm::GlobalAlias const*)"}, + {"_ZN12_GLOBAL__N_114AssemblyWriter15printMDNodeBodyEPKN4llvm6MDNodeE", "(anonymous namespace)::AssemblyWriter::printMDNodeBody(llvm::MDNode const*)"}, + {"_Z21WriteConstantInternalRN4llvm11raw_ostreamEPKNS_8ConstantERNS_12TypePrintingEPN12_GLOBAL__N_111SlotTrackerEPKNS_6ModuleE", "WriteConstantInternal(llvm::raw_ostream&, llvm::Constant const*, llvm::TypePrinting&, (anonymous namespace)::SlotTracker*, llvm::Module const*)"}, + {"_ZNK4llvm5Value11printCustomERNS_11raw_ostreamE", "llvm::Value::printCustom(llvm::raw_ostream&) const"}, + {"_ZNK4llvm5Value4dumpEv", "llvm::Value::dump() const"}, + {"_ZNK4llvm4Type4dumpEPKNS_6ModuleE", "llvm::Type::dump(llvm::Module const*) const"}, + {"_ZNK4llvm4Type4dumpEv", "llvm::Type::dump() const"}, + {"_ZNK4llvm6Module4dumpEv", "llvm::Module::dump() const"}, + {"_Z18PrintEscapedStringN4llvm9StringRefERNS_11raw_ostreamE", "PrintEscapedString(llvm::StringRef, llvm::raw_ostream&)"}, + {"_Z21WriteOptimizationInfoRN4llvm11raw_ostreamEPKNS_4UserE", "WriteOptimizationInfo(llvm::raw_ostream&, llvm::User const*)"}, + {"_Z23WriteMDNodeBodyInternalRN4llvm11raw_ostreamEPKNS_6MDNodeEPNS_12TypePrintingEPN12_GLOBAL__N_111SlotTrackerEPKNS_6ModuleE", "WriteMDNodeBodyInternal(llvm::raw_ostream&, llvm::MDNode const*, llvm::TypePrinting*, (anonymous namespace)::SlotTracker*, llvm::Module const*)"}, + {"_Z12PrintLinkageN4llvm11GlobalValue12LinkageTypesERNS_21formatted_raw_ostreamE", "PrintLinkage(llvm::GlobalValue::LinkageTypes, llvm::formatted_raw_ostream&)"}, + {"_ZN12_GLOBAL__N_114AssemblyWriter12writeOperandEPKN4llvm5ValueEb", "(anonymous namespace)::AssemblyWriter::writeOperand(llvm::Value const*, bool)"}, + {"_Z13PrintLLVMNameRN4llvm11raw_ostreamENS_9StringRefE10PrefixType", "PrintLLVMName(llvm::raw_ostream&, llvm::StringRef, PrefixType)"}, + {"_ZN12_GLOBAL__N_111SlotTracker10initializeEv", "(anonymous namespace)::SlotTracker::initialize()"}, + {"_ZN12_GLOBAL__N_111SlotTracker18CreateMetadataSlotEPKN4llvm6MDNodeE", "(anonymous namespace)::SlotTracker::CreateMetadataSlot(llvm::MDNode const*)"}, + {"_ZN12_GLOBAL__N_114AssemblyWriter17writeParamOperandEPKN4llvm5ValueEj", "(anonymous namespace)::AssemblyWriter::writeParamOperand(llvm::Value const*, unsigned int)"}, + {"_ZN12_GLOBAL__N_110TypeFinder15IncorporateTypeEPKN4llvm4TypeE", "(anonymous namespace)::TypeFinder::IncorporateType(llvm::Type const*)"}, + {"_ZN12_GLOBAL__N_110TypeFinder16IncorporateValueEPKN4llvm5ValueE", "(anonymous namespace)::TypeFinder::IncorporateValue(llvm::Value const*)"}, + + // {"_ZN4llvm8DenseMapIPKNS_4TypeESsNS_12DenseMapInfoIS3_EENS4_ISsEEE5clearEv", + // "llvm::DenseMap, llvm::DenseMapInfo>::clear()"}, + // "llvm::DenseMap, std::string>::clear()" was returned + + + // {"_ZN4llvm8DenseMapIPKNS_4TypeESsNS_12DenseMapInfoIS3_EENS4_ISsEEE6insertERKSt4pairIS3_SsE", + // "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + // "llvm::DenseMap, std::string>::insert(std::pair const&)" was returned + + {"_ZN4llvm24AssemblyAnnotationWriter17emitFunctionAnnotEPKNS_8FunctionERNS_21formatted_raw_ostreamE", "llvm::AssemblyAnnotationWriter::emitFunctionAnnot(llvm::Function const*, llvm::formatted_raw_ostream&)"}, + {"_ZN4llvm24AssemblyAnnotationWriter24emitBasicBlockStartAnnotEPKNS_10BasicBlockERNS_21formatted_raw_ostreamE", "llvm::AssemblyAnnotationWriter::emitBasicBlockStartAnnot(llvm::BasicBlock const*, llvm::formatted_raw_ostream&)"}, + {"_ZN4llvm24AssemblyAnnotationWriter22emitBasicBlockEndAnnotEPKNS_10BasicBlockERNS_21formatted_raw_ostreamE", "llvm::AssemblyAnnotationWriter::emitBasicBlockEndAnnot(llvm::BasicBlock const*, llvm::formatted_raw_ostream&)"}, + {"_ZN4llvm24AssemblyAnnotationWriter20emitInstructionAnnotEPKNS_11InstructionERNS_21formatted_raw_ostreamE", "llvm::AssemblyAnnotationWriter::emitInstructionAnnot(llvm::Instruction const*, llvm::formatted_raw_ostream&)"}, + {"_ZN4llvm24AssemblyAnnotationWriter16printInfoCommentERKNS_5ValueERNS_21formatted_raw_ostreamE", "llvm::AssemblyAnnotationWriter::printInfoComment(llvm::Value const&, llvm::formatted_raw_ostream&)"}, + + // {"_ZN4llvm8DenseMapIPKNS_4TypeESsNS_12DenseMapInfoIS3_EENS4_ISsEEE16InsertIntoBucketERKS3_RKSsPSt4pairIS3_SsE", + // "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::Type const* const&, std::string const&, std::pair*)"}, + // "llvm::DenseMap, std::string>::InsertIntoBucket(llvm::Type const* const&, std::string const&, std::pair*)" was returned + + + // {"_ZN4llvm8DenseMapIPKNS_4TypeESsNS_12DenseMapInfoIS3_EENS4_ISsEEE4growEj", + // "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + // "llvm::DenseMap, std::string>::grow(unsigned int)" was returned + + + // {"_ZN4llvm8DenseMapIPKNS_4TypeESsNS_12DenseMapInfoIS3_EENS4_ISsEEE16shrink_and_clearEv", + // "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + // "llvm::DenseMap, std::string>::shrink_and_clear()" was returned + + {"_ZNK4llvm5APInt3ultEy", "llvm::APInt::ult(unsigned long long) const"}, + {"_ZN4llvm8DenseMapIPKNS_5ValueEjNS_12DenseMapInfoIS3_EENS4_IjEEE16shrink_and_clearEv", "llvm::DenseMap, llvm::DenseMapInfo>::shrink_and_clear()"}, + {"_ZN4llvm8DenseMapIPKNS_6MDNodeEjNS_12DenseMapInfoIS3_EENS4_IjEEE16InsertIntoBucketERKS3_RKjPSt4pairIS3_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::MDNode const* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_6MDNodeEjNS_12DenseMapInfoIS3_EENS4_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm15SmallVectorImplIPKNS_6MDNodeEE6resizeEj", "llvm::SmallVectorImpl::resize(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKNS_5ValueEcNS_12DenseMapInfoIS3_EENS4_IcEEE6insertERKSt4pairIS3_cE", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPKNS_5ValueEcNS_12DenseMapInfoIS3_EENS4_IcEEE16InsertIntoBucketERKS3_RKcPSt4pairIS3_cE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::Value const* const&, char const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_5ValueEcNS_12DenseMapInfoIS3_EENS4_IcEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKNS_4TypeEcNS_12DenseMapInfoIS3_EENS4_IcEEE6insertERKSt4pairIS3_cE", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPKNS_4TypeEcNS_12DenseMapInfoIS3_EENS4_IcEEE16InsertIntoBucketERKS3_RKcPSt4pairIS3_cE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::Type const* const&, char const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_4TypeEcNS_12DenseMapInfoIS3_EENS4_IcEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm9Attribute11getAsStringEj", "llvm::Attribute::getAsString(unsigned int)"}, + {"_ZN4llvm9Attribute16typeIncompatibleEPKNS_4TypeE", "llvm::Attribute::typeIncompatible(llvm::Type const*)"}, + {"_ZN4llvm17AttributeListImplD1Ev", "llvm::AttributeListImpl::~AttributeListImpl()"}, + {"_ZN4llvm17AttributeListImplD2Ev", "llvm::AttributeListImpl::~AttributeListImpl()"}, + {"_ZN4llvm11AttrListPtr3getEPKNS_18AttributeWithIndexEj", "llvm::AttrListPtr::get(llvm::AttributeWithIndex const*, unsigned int)"}, + {"_ZN4llvm11AttrListPtrC1EPNS_17AttributeListImplE", "llvm::AttrListPtr::AttrListPtr(llvm::AttributeListImpl*)"}, + {"_ZN4llvm11AttrListPtrC2EPNS_17AttributeListImplE", "llvm::AttrListPtr::AttrListPtr(llvm::AttributeListImpl*)"}, + {"_ZN4llvm11AttrListPtrC1ERKS0_", "llvm::AttrListPtr::AttrListPtr(llvm::AttrListPtr const&)"}, + {"_ZN4llvm11AttrListPtrC2ERKS0_", "llvm::AttrListPtr::AttrListPtr(llvm::AttrListPtr const&)"}, + {"_ZN4llvm11AttrListPtraSERKS0_", "llvm::AttrListPtr::operator=(llvm::AttrListPtr const&)"}, + {"_ZN4llvm11AttrListPtrD1Ev", "llvm::AttrListPtr::~AttrListPtr()"}, + {"_ZN4llvm11AttrListPtrD2Ev", "llvm::AttrListPtr::~AttrListPtr()"}, + {"_ZNK4llvm11AttrListPtr11getNumSlotsEv", "llvm::AttrListPtr::getNumSlots() const"}, + {"_ZNK4llvm11AttrListPtr7getSlotEj", "llvm::AttrListPtr::getSlot(unsigned int) const"}, + {"_ZNK4llvm11AttrListPtr13getAttributesEj", "llvm::AttrListPtr::getAttributes(unsigned int) const"}, + {"_ZNK4llvm11AttrListPtr16hasAttrSomewhereEj", "llvm::AttrListPtr::hasAttrSomewhere(unsigned int) const"}, + {"_ZNK4llvm11AttrListPtr7addAttrEjj", "llvm::AttrListPtr::addAttr(unsigned int, unsigned int) const"}, + {"_ZNK4llvm11AttrListPtr10removeAttrEjj", "llvm::AttrListPtr::removeAttr(unsigned int, unsigned int) const"}, + {"_ZNK4llvm11AttrListPtr4dumpEv", "llvm::AttrListPtr::dump() const"}, + {"_ZN4llvm17AttributeListImpl6AddRefEv", "llvm::AttributeListImpl::AddRef()"}, + {"_ZN4llvm17AttributeListImpl7DropRefEv", "llvm::AttributeListImpl::DropRef()"}, + + // {"_ZN4llvm15SmallVectorImplINS_18AttributeWithIndexEE6insertIPKS1_EEPS1_S6_T_S7_", + // "llvm::AttributeWithIndex* llvm::SmallVectorImpl::insert(llvm::AttributeWithIndex*, llvm::AttributeWithIndex const*, llvm::AttributeWithIndex const*)"}, + // got error + + {"_ZN4llvm23SmallVectorTemplateBaseINS_18AttributeWithIndexELb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN4llvm14object_creatorINS_10FoldingSetINS_17AttributeListImplEEEEEPvv", "void* llvm::object_creator>()"}, + {"_ZN4llvm14object_deleterINS_10FoldingSetINS_17AttributeListImplEEEE4callEPv", "llvm::object_deleter>::call(void*)"}, + {"_ZN4llvm10FoldingSetINS_17AttributeListImplEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm10FoldingSetINS_17AttributeListImplEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetINS_17AttributeListImplEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetINS_17AttributeListImplEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS6_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetINS_17AttributeListImplEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm24UpgradeIntrinsicFunctionEPNS_8FunctionERS1_", "llvm::UpgradeIntrinsicFunction(llvm::Function*, llvm::Function*&)"}, + {"_Z25UpgradeIntrinsicFunction1PN4llvm8FunctionERS1_", "UpgradeIntrinsicFunction1(llvm::Function*, llvm::Function*&)"}, + {"_ZN4llvm21UpgradeGlobalVariableEPNS_14GlobalVariableE", "llvm::UpgradeGlobalVariable(llvm::GlobalVariable*)"}, + {"_ZN4llvm20UpgradeIntrinsicCallEPNS_8CallInstEPNS_8FunctionE", "llvm::UpgradeIntrinsicCall(llvm::CallInst*, llvm::Function*)"}, + {"_Z14ExtendNEONArgsPN4llvm8CallInstEPNS_5ValueES3_RS3_S4_", "ExtendNEONArgs(llvm::CallInst*, llvm::Value*, llvm::Value*, llvm::Value*&, llvm::Value*&)"}, + {"_Z8CallVABDPN4llvm8CallInstEPNS_5ValueES3_", "CallVABD(llvm::CallInst*, llvm::Value*, llvm::Value*)"}, + {"_Z20ConstructNewCallInstPN4llvm8FunctionEPNS_8CallInstEPPNS_5ValueEjb", "ConstructNewCallInst(llvm::Function*, llvm::CallInst*, llvm::Value**, unsigned int, bool)"}, + {"_ZN4llvm23UpgradeCallsToIntrinsicEPNS_8FunctionE", "llvm::UpgradeCallsToIntrinsic(llvm::Function*)"}, + {"_ZN4llvm24CheckDebugInfoIntrinsicsEPNS_6ModuleE", "llvm::CheckDebugInfoIntrinsics(llvm::Module*)"}, + {"_ZN4llvm9IRBuilderILb1ENS_14ConstantFolderENS_24IRBuilderDefaultInserterILb1EEEE19CreateShuffleVectorEPNS_5ValueES6_S6_RKNS_5TwineE", "llvm::IRBuilder>::CreateShuffleVector(llvm::Value*, llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm10BasicBlock19getValueSymbolTableEv", "llvm::BasicBlock::getValueSymbolTable()"}, + {"_ZNK4llvm10BasicBlock10getContextEv", "llvm::BasicBlock::getContext() const"}, + {"_ZN4llvm10BasicBlockC1ERNS_11LLVMContextERKNS_5TwineEPNS_8FunctionEPS0_", "llvm::BasicBlock::BasicBlock(llvm::LLVMContext&, llvm::Twine const&, llvm::Function*, llvm::BasicBlock*)"}, + {"_ZN4llvm10BasicBlockC2ERNS_11LLVMContextERKNS_5TwineEPNS_8FunctionEPS0_", "llvm::BasicBlock::BasicBlock(llvm::LLVMContext&, llvm::Twine const&, llvm::Function*, llvm::BasicBlock*)"}, + {"_ZN4llvm10BasicBlockD0Ev", "llvm::BasicBlock::~BasicBlock()"}, + {"_ZN4llvm10BasicBlockD1Ev", "llvm::BasicBlock::~BasicBlock()"}, + {"_ZN4llvm10BasicBlockD2Ev", "llvm::BasicBlock::~BasicBlock()"}, + {"_ZN4llvm10BasicBlock17dropAllReferencesEv", "llvm::BasicBlock::dropAllReferences()"}, + {"_ZN4llvm10BasicBlock9setParentEPNS_8FunctionE", "llvm::BasicBlock::setParent(llvm::Function*)"}, + {"_ZN4llvm10BasicBlock16removeFromParentEv", "llvm::BasicBlock::removeFromParent()"}, + {"_ZN4llvm10BasicBlock15eraseFromParentEv", "llvm::BasicBlock::eraseFromParent()"}, + {"_ZN4llvm10BasicBlock10moveBeforeEPS0_", "llvm::BasicBlock::moveBefore(llvm::BasicBlock*)"}, + {"_ZN4llvm10BasicBlock9moveAfterEPS0_", "llvm::BasicBlock::moveAfter(llvm::BasicBlock*)"}, + {"_ZN4llvm10BasicBlock13getTerminatorEv", "llvm::BasicBlock::getTerminator()"}, + {"_ZNK4llvm10BasicBlock13getTerminatorEv", "llvm::BasicBlock::getTerminator() const"}, + {"_ZN4llvm10BasicBlock14getFirstNonPHIEv", "llvm::BasicBlock::getFirstNonPHI()"}, + {"_ZN4llvm10BasicBlock19getFirstNonPHIOrDbgEv", "llvm::BasicBlock::getFirstNonPHIOrDbg()"}, + {"_ZN4llvm10BasicBlock20getSinglePredecessorEv", "llvm::BasicBlock::getSinglePredecessor()"}, + {"_ZN4llvm10BasicBlock20getUniquePredecessorEv", "llvm::BasicBlock::getUniquePredecessor()"}, + {"_ZN4llvm10BasicBlock17removePredecessorEPS0_b", "llvm::BasicBlock::removePredecessor(llvm::BasicBlock*, bool)"}, + {"_ZN4llvm10BasicBlock15splitBasicBlockENS_14ilist_iteratorINS_11InstructionEEERKNS_5TwineE", "llvm::BasicBlock::splitBasicBlock(llvm::ilist_iterator, llvm::Twine const&)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_11InstructionENS_10BasicBlockEEC1Ev", "llvm::SymbolTableListTraits::SymbolTableListTraits()"}, + {"_ZN4llvm21SymbolTableListTraitsINS_11InstructionENS_10BasicBlockEEC2Ev", "llvm::SymbolTableListTraits::SymbolTableListTraits()"}, + {"_ZN4llvm21SymbolTableListTraitsINS_11InstructionENS_10BasicBlockEE12getListOwnerEv", "llvm::SymbolTableListTraits::getListOwner()"}, + {"_ZN4llvm21SymbolTableListTraitsINS_11InstructionENS_10BasicBlockEE7getListEPS2_", "llvm::SymbolTableListTraits::getList(llvm::BasicBlock*)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_11InstructionENS_10BasicBlockEE9getSymTabEPS2_", "llvm::SymbolTableListTraits::getSymTab(llvm::BasicBlock*)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_11InstructionENS_10BasicBlockEE5toPtrEPNS_16ValueSymbolTableE", "llvm::SymbolTableListTraits::toPtr(llvm::ValueSymbolTable*)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_11InstructionENS_10BasicBlockEE13addNodeToListEPS1_", "llvm::SymbolTableListTraits::addNodeToList(llvm::Instruction*)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_11InstructionENS_10BasicBlockEE18removeNodeFromListEPS1_", "llvm::SymbolTableListTraits::removeNodeFromList(llvm::Instruction*)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_11InstructionENS_10BasicBlockEE21transferNodesFromListERNS_12ilist_traitsIS1_EENS_14ilist_iteratorIS1_EES8_", "llvm::SymbolTableListTraits::transferNodesFromList(llvm::ilist_traits&, llvm::ilist_iterator, llvm::ilist_iterator)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_11InstructionENS_10BasicBlockEE5toPtrERNS_16ValueSymbolTableE", "llvm::SymbolTableListTraits::toPtr(llvm::ValueSymbolTable&)"}, + + // {"_ZN4llvm21SymbolTableListTraitsINS_11InstructionENS_10BasicBlockEE15setSymTabObjectIPNS_8FunctionEEEvPT_S7_", + // "void llvm::SymbolTableListTraits::setSymTabObject(llvm::Function**, llvm::Function*)"}, + // "void llvm::SymbolTableListTraits::setSymTabObject(llvm::Instruction*, llvm::Instruction*)" was returned + + {"_ZN4llvm6iplistINS_11InstructionENS_12ilist_traitsIS1_EEE5eraseENS_14ilist_iteratorIS1_EE", "llvm::iplist>::erase(llvm::ilist_iterator)"}, + {"_ZN4llvm27ConstantFoldCastInstructionEjPNS_8ConstantEPKNS_4TypeE", "llvm::ConstantFoldCastInstruction(unsigned int, llvm::Constant*, llvm::Type const*)"}, + {"_Z15getFoldedSizeOfPKN4llvm4TypeES2_b", "getFoldedSizeOf(llvm::Type const*, llvm::Type const*, bool)"}, + {"_Z16getFoldedAlignOfPKN4llvm4TypeES2_b", "getFoldedAlignOf(llvm::Type const*, llvm::Type const*, bool)"}, + {"_Z20ExtractConstantBytesPN4llvm8ConstantEjj", "ExtractConstantBytes(llvm::Constant*, unsigned int, unsigned int)"}, + {"_ZN4llvm29ConstantFoldSelectInstructionEPNS_8ConstantES1_S1_", "llvm::ConstantFoldSelectInstruction(llvm::Constant*, llvm::Constant*, llvm::Constant*)"}, + {"_ZN4llvm37ConstantFoldExtractElementInstructionEPNS_8ConstantES1_", "llvm::ConstantFoldExtractElementInstruction(llvm::Constant*, llvm::Constant*)"}, + {"_ZN4llvm36ConstantFoldInsertElementInstructionEPNS_8ConstantES1_S1_", "llvm::ConstantFoldInsertElementInstruction(llvm::Constant*, llvm::Constant*, llvm::Constant*)"}, + {"_ZN4llvm36ConstantFoldShuffleVectorInstructionEPNS_8ConstantES1_S1_", "llvm::ConstantFoldShuffleVectorInstruction(llvm::Constant*, llvm::Constant*, llvm::Constant*)"}, + {"_Z16GetVectorElementPN4llvm8ConstantEj", "GetVectorElement(llvm::Constant*, unsigned int)"}, + {"_ZN4llvm35ConstantFoldExtractValueInstructionEPNS_8ConstantEPKjj", "llvm::ConstantFoldExtractValueInstruction(llvm::Constant*, unsigned int const*, unsigned int)"}, + {"_ZN4llvm34ConstantFoldInsertValueInstructionEPNS_8ConstantES1_PKjj", "llvm::ConstantFoldInsertValueInstruction(llvm::Constant*, llvm::Constant*, unsigned int const*, unsigned int)"}, + {"_ZN4llvm29ConstantFoldBinaryInstructionEjPNS_8ConstantES1_", "llvm::ConstantFoldBinaryInstruction(unsigned int, llvm::Constant*, llvm::Constant*)"}, + {"_ZN4llvm30ConstantFoldCompareInstructionEtPNS_8ConstantES1_", "llvm::ConstantFoldCompareInstruction(unsigned short, llvm::Constant*, llvm::Constant*)"}, + {"_Z20evaluateFCmpRelationPN4llvm8ConstantES1_", "evaluateFCmpRelation(llvm::Constant*, llvm::Constant*)"}, + {"_Z20evaluateICmpRelationPN4llvm8ConstantES1_b", "evaluateICmpRelation(llvm::Constant*, llvm::Constant*, bool)"}, + {"_ZN4llvm25ConstantFoldGetElementPtrEPNS_8ConstantEbPKS1_j", "llvm::ConstantFoldGetElementPtr(llvm::Constant*, bool, llvm::Constant* const*, unsigned int)"}, + {"_ZN4llvm25ConstantFoldGetElementPtrEPNS_8ConstantEbPKPNS_5ValueEj", "llvm::ConstantFoldGetElementPtr(llvm::Constant*, bool, llvm::Value* const*, unsigned int)"}, + {"_Z20isMaybeZeroSizedTypePKN4llvm4TypeE", "isMaybeZeroSizedType(llvm::Type const*)"}, + {"_ZN4llvm8Constant12getNullValueEPKNS_4TypeE", "llvm::Constant::getNullValue(llvm::Type const*)"}, + {"_ZN4llvm11ConstantInt3getEPKNS_4TypeEyb", "llvm::ConstantInt::get(llvm::Type const*, unsigned long long, bool)"}, + {"_ZN4llvm10ConstantFP3getERNS_11LLVMContextERKNS_7APFloatE", "llvm::ConstantFP::get(llvm::LLVMContext&, llvm::APFloat const&)"}, + {"_ZN4llvm19ConstantPointerNull3getEPKNS_11PointerTypeE", "llvm::ConstantPointerNull::get(llvm::PointerType const*)"}, + {"_ZN4llvm21ConstantAggregateZero3getEPKNS_4TypeE", "llvm::ConstantAggregateZero::get(llvm::Type const*)"}, + {"_ZN4llvm8Constant15getIntegerValueEPKNS_4TypeERKNS_5APIntE", "llvm::Constant::getIntegerValue(llvm::Type const*, llvm::APInt const&)"}, + {"_ZN4llvm11ConstantInt3getERNS_11LLVMContextERKNS_5APIntE", "llvm::ConstantInt::get(llvm::LLVMContext&, llvm::APInt const&)"}, + {"_ZN4llvm12ConstantExpr11getIntToPtrEPNS_8ConstantEPKNS_4TypeE", "llvm::ConstantExpr::getIntToPtr(llvm::Constant*, llvm::Type const*)"}, + + // {"_ZN4llvm14ConstantVector3getERKSt6vectorIPNS_8ConstantESaIS3_EE", + // "llvm::ConstantVector::get(std::vector> const&)"}, + // got error + + {"_ZN4llvm8Constant15getAllOnesValueEPKNS_4TypeE", "llvm::Constant::getAllOnesValue(llvm::Type const*)"}, + {"_ZN4llvm8Constant19destroyConstantImplEv", "llvm::Constant::destroyConstantImpl()"}, + {"_ZNK4llvm8Constant7canTrapEv", "llvm::Constant::canTrap() const"}, + {"_ZNK4llvm8Constant14isConstantUsedEv", "llvm::Constant::isConstantUsed() const"}, + {"_ZNK4llvm8Constant17getRelocationInfoEv", "llvm::Constant::getRelocationInfo() const"}, + {"_ZNK4llvm8Constant17getVectorElementsERNS_15SmallVectorImplIPS0_EE", "llvm::Constant::getVectorElements(llvm::SmallVectorImpl&) const"}, + {"_ZN4llvm10UndefValue3getEPKNS_4TypeE", "llvm::UndefValue::get(llvm::Type const*)"}, + {"_ZN4llvm11ConstantIntC1EPKNS_11IntegerTypeERKNS_5APIntE", "llvm::ConstantInt::ConstantInt(llvm::IntegerType const*, llvm::APInt const&)"}, + {"_ZN4llvm11ConstantIntC2EPKNS_11IntegerTypeERKNS_5APIntE", "llvm::ConstantInt::ConstantInt(llvm::IntegerType const*, llvm::APInt const&)"}, + {"_ZN4llvm11ConstantInt7getTrueERNS_11LLVMContextE", "llvm::ConstantInt::getTrue(llvm::LLVMContext&)"}, + {"_ZN4llvm11ConstantInt3getEPKNS_11IntegerTypeEyb", "llvm::ConstantInt::get(llvm::IntegerType const*, unsigned long long, bool)"}, + {"_ZN4llvm11ConstantInt8getFalseERNS_11LLVMContextE", "llvm::ConstantInt::getFalse(llvm::LLVMContext&)"}, + {"_ZN4llvm11ConstantInt9getSignedEPKNS_11IntegerTypeEx", "llvm::ConstantInt::getSigned(llvm::IntegerType const*, long long)"}, + {"_ZN4llvm11ConstantInt9getSignedEPKNS_4TypeEx", "llvm::ConstantInt::getSigned(llvm::Type const*, long long)"}, + {"_ZN4llvm11ConstantInt3getEPKNS_4TypeERKNS_5APIntE", "llvm::ConstantInt::get(llvm::Type const*, llvm::APInt const&)"}, + {"_ZN4llvm11ConstantInt3getEPKNS_11IntegerTypeENS_9StringRefEh", "llvm::ConstantInt::get(llvm::IntegerType const*, llvm::StringRef, unsigned char)"}, + {"_ZN4llvm10ConstantFP3getEPKNS_4TypeEd", "llvm::ConstantFP::get(llvm::Type const*, double)"}, + {"_ZN4llvm10ConstantFP3getEPKNS_4TypeENS_9StringRefE", "llvm::ConstantFP::get(llvm::Type const*, llvm::StringRef)"}, + {"_ZN4llvm10ConstantFP15getNegativeZeroEPKNS_4TypeE", "llvm::ConstantFP::getNegativeZero(llvm::Type const*)"}, + {"_ZN4llvm10ConstantFP23getZeroValueForNegationEPKNS_4TypeE", "llvm::ConstantFP::getZeroValueForNegation(llvm::Type const*)"}, + + // {"_ZN4llvm14ConstantVector3getEPKNS_10VectorTypeERKSt6vectorIPNS_8ConstantESaIS6_EE", + // "llvm::ConstantVector::get(llvm::VectorType const*, std::vector> const&)"}, + // got error + + {"_ZN4llvm10ConstantFPC1EPKNS_4TypeERKNS_7APFloatE", "llvm::ConstantFP::ConstantFP(llvm::Type const*, llvm::APFloat const&)"}, + {"_ZN4llvm10ConstantFP11getInfinityEPKNS_4TypeEb", "llvm::ConstantFP::getInfinity(llvm::Type const*, bool)"}, + {"_ZN4llvm10ConstantFPC2EPKNS_4TypeERKNS_7APFloatE", "llvm::ConstantFP::ConstantFP(llvm::Type const*, llvm::APFloat const&)"}, + {"_ZNK4llvm10ConstantFP11isNullValueEv", "llvm::ConstantFP::isNullValue() const"}, + {"_ZNK4llvm10ConstantFP14isExactlyValueERKNS_7APFloatE", "llvm::ConstantFP::isExactlyValue(llvm::APFloat const&) const"}, + + // {"_ZN4llvm13ConstantArrayC1EPKNS_9ArrayTypeERKSt6vectorIPNS_8ConstantESaIS6_EE", + // "llvm::ConstantArray::ConstantArray(llvm::ArrayType const*, std::vector> const&)"}, + // got error + + + // {"_ZN4llvm13ConstantArrayC2EPKNS_9ArrayTypeERKSt6vectorIPNS_8ConstantESaIS6_EE", + // "llvm::ConstantArray::ConstantArray(llvm::ArrayType const*, std::vector> const&)"}, + // got error + + + // {"_ZN4llvm13ConstantArray3getEPKNS_9ArrayTypeERKSt6vectorIPNS_8ConstantESaIS6_EE", + // "llvm::ConstantArray::get(llvm::ArrayType const*, std::vector> const&)"}, + // got error + + {"_ZN4llvm13ConstantArray3getEPKNS_9ArrayTypeEPKPNS_8ConstantEj", "llvm::ConstantArray::get(llvm::ArrayType const*, llvm::Constant* const*, unsigned int)"}, + {"_ZN4llvm13ConstantArray3getERNS_11LLVMContextENS_9StringRefEb", "llvm::ConstantArray::get(llvm::LLVMContext&, llvm::StringRef, bool)"}, + + // {"_ZN4llvm14ConstantStructC1EPKNS_10StructTypeERKSt6vectorIPNS_8ConstantESaIS6_EE", + // "llvm::ConstantStruct::ConstantStruct(llvm::StructType const*, std::vector> const&)"}, + // got error + + + // {"_ZN4llvm14ConstantStructC2EPKNS_10StructTypeERKSt6vectorIPNS_8ConstantESaIS6_EE", + // "llvm::ConstantStruct::ConstantStruct(llvm::StructType const*, std::vector> const&)"}, + // got error + + + // {"_ZN4llvm14ConstantStruct3getEPKNS_10StructTypeERKSt6vectorIPNS_8ConstantESaIS6_EE", + // "llvm::ConstantStruct::get(llvm::StructType const*, std::vector> const&)"}, + // got error + + + // {"_ZN4llvm14ConstantStruct3getERNS_11LLVMContextERKSt6vectorIPNS_8ConstantESaIS5_EEb", + // "llvm::ConstantStruct::get(llvm::LLVMContext&, std::vector> const&, bool)"}, + // got error + + {"_ZN4llvm14ConstantStruct3getERNS_11LLVMContextEPKPNS_8ConstantEjb", "llvm::ConstantStruct::get(llvm::LLVMContext&, llvm::Constant* const*, unsigned int, bool)"}, + + // {"_ZN4llvm14ConstantVectorC1EPKNS_10VectorTypeERKSt6vectorIPNS_8ConstantESaIS6_EE", + // "llvm::ConstantVector::ConstantVector(llvm::VectorType const*, std::vector> const&)"}, + // got error + + + // {"_ZN4llvm14ConstantVectorC2EPKNS_10VectorTypeERKSt6vectorIPNS_8ConstantESaIS6_EE", + // "llvm::ConstantVector::ConstantVector(llvm::VectorType const*, std::vector> const&)"}, + // got error + + {"_ZN4llvm14ConstantVector3getEPKPNS_8ConstantEj", "llvm::ConstantVector::get(llvm::Constant* const*, unsigned int)"}, + {"_ZN4llvm12ConstantExpr9getNSWNegEPNS_8ConstantE", "llvm::ConstantExpr::getNSWNeg(llvm::Constant*)"}, + + // {"_ZN4llvm12ConstantExpr9getNSWSubEPNS_8ConstantES2_", + // "llvm::ConstantExpr::getNSWSub(llvm::Constant*, llvm::Constant*)"}, + // got error + + {"_ZN4llvm12ConstantExpr9getNUWNegEPNS_8ConstantE", "llvm::ConstantExpr::getNUWNeg(llvm::Constant*)"}, + + // {"_ZN4llvm12ConstantExpr9getNUWSubEPNS_8ConstantES2_", + // "llvm::ConstantExpr::getNUWSub(llvm::Constant*, llvm::Constant*)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr9getNSWAddEPNS_8ConstantES2_", + // "llvm::ConstantExpr::getNSWAdd(llvm::Constant*, llvm::Constant*)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr5getTyEPKNS_4TypeEjPNS_8ConstantES5_j", + // "llvm::ConstantExpr::getTy(llvm::Type const*, unsigned int, llvm::Constant*, llvm::Constant*, unsigned int)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr9getNUWAddEPNS_8ConstantES2_", + // "llvm::ConstantExpr::getNUWAdd(llvm::Constant*, llvm::Constant*)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr9getNSWMulEPNS_8ConstantES2_", + // "llvm::ConstantExpr::getNSWMul(llvm::Constant*, llvm::Constant*)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr9getNUWMulEPNS_8ConstantES2_", + // "llvm::ConstantExpr::getNUWMul(llvm::Constant*, llvm::Constant*)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr9getNSWShlEPNS_8ConstantES2_", + // "llvm::ConstantExpr::getNSWShl(llvm::Constant*, llvm::Constant*)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr9getNUWShlEPNS_8ConstantES2_", + // "llvm::ConstantExpr::getNUWShl(llvm::Constant*, llvm::Constant*)"}, + // got error + + {"_ZNK4llvm12ConstantExpr6isCastEv", "llvm::ConstantExpr::isCast() const"}, + {"_ZNK4llvm12ConstantExpr9isCompareEv", "llvm::ConstantExpr::isCompare() const"}, + {"_ZNK4llvm12ConstantExpr31isGEPWithNoNotionalOverIndexingEv", "llvm::ConstantExpr::isGEPWithNoNotionalOverIndexing() const"}, + {"_ZNK4llvm12ConstantExpr10hasIndicesEv", "llvm::ConstantExpr::hasIndices() const"}, + {"_ZNK4llvm12ConstantExpr10getIndicesEv", "llvm::ConstantExpr::getIndices() const"}, + {"_ZNK4llvm12ConstantExpr12getPredicateEv", "llvm::ConstantExpr::getPredicate() const"}, + {"_ZNK4llvm12ConstantExpr22getWithOperandReplacedEjPNS_8ConstantE", "llvm::ConstantExpr::getWithOperandReplaced(unsigned int, llvm::Constant*) const"}, + {"_ZN4llvm12ConstantExpr7getCastEjPNS_8ConstantEPKNS_4TypeE", "llvm::ConstantExpr::getCast(unsigned int, llvm::Constant*, llvm::Type const*)"}, + + // {"_ZN4llvm12ConstantExpr16getInsertElementEPNS_8ConstantES2_S2_", + // "llvm::ConstantExpr::getInsertElement(llvm::Constant*, llvm::Constant*, llvm::Constant*)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr17getExtractElementEPNS_8ConstantES2_", + // "llvm::ConstantExpr::getExtractElement(llvm::Constant*, llvm::Constant*)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr16getShuffleVectorEPNS_8ConstantES2_S2_", + // "llvm::ConstantExpr::getShuffleVector(llvm::Constant*, llvm::Constant*, llvm::Constant*)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr24getInBoundsGetElementPtrEPNS_8ConstantEPKS2_j", + // "llvm::ConstantExpr::getInBoundsGetElementPtr(llvm::Constant*, llvm::Constant* const*, unsigned int)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr16getGetElementPtrEPNS_8ConstantEPKS2_j", + // "llvm::ConstantExpr::getGetElementPtr(llvm::Constant*, llvm::Constant* const*, unsigned int)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr3getEjPNS_8ConstantES2_j", + // "llvm::ConstantExpr::get(unsigned int, llvm::Constant*, llvm::Constant*, unsigned int)"}, + // got error + + {"_ZNK4llvm12ConstantExpr15getWithOperandsEPKPNS_8ConstantEj", "llvm::ConstantExpr::getWithOperands(llvm::Constant* const*, unsigned int) const"}, + + // {"_ZN4llvm12ConstantExpr10getCompareEtPNS_8ConstantES2_", + // "llvm::ConstantExpr::getCompare(unsigned short, llvm::Constant*, llvm::Constant*)"}, + // got error + + {"_ZN4llvm11ConstantInt19isValueValidForTypeEPKNS_4TypeEy", "llvm::ConstantInt::isValueValidForType(llvm::Type const*, unsigned long long)"}, + {"_ZN4llvm11ConstantInt19isValueValidForTypeEPKNS_4TypeEx", "llvm::ConstantInt::isValueValidForType(llvm::Type const*, long long)"}, + {"_ZN4llvm10ConstantFP19isValueValidForTypeEPKNS_4TypeERKNS_7APFloatE", "llvm::ConstantFP::isValueValidForType(llvm::Type const*, llvm::APFloat const&)"}, + {"_ZN4llvm21ConstantAggregateZero15destroyConstantEv", "llvm::ConstantAggregateZero::destroyConstant()"}, + {"_ZN4llvm13ConstantArray15destroyConstantEv", "llvm::ConstantArray::destroyConstant()"}, + {"_ZNK4llvm13ConstantArray8isStringEv", "llvm::ConstantArray::isString() const"}, + {"_ZNK4llvm13ConstantArray9isCStringEv", "llvm::ConstantArray::isCString() const"}, + {"_ZNK4llvm13ConstantArray11getAsStringEv", "llvm::ConstantArray::getAsString() const"}, + {"_ZN4llvm14ConstantStruct15destroyConstantEv", "llvm::ConstantStruct::destroyConstant()"}, + {"_ZN4llvm14ConstantVector15destroyConstantEv", "llvm::ConstantVector::destroyConstant()"}, + {"_ZNK4llvm14ConstantVector14isAllOnesValueEv", "llvm::ConstantVector::isAllOnesValue() const"}, + {"_ZNK4llvm14ConstantVector13getSplatValueEv", "llvm::ConstantVector::getSplatValue() const"}, + {"_ZN4llvm19ConstantPointerNull15destroyConstantEv", "llvm::ConstantPointerNull::destroyConstant()"}, + {"_ZN4llvm10UndefValue15destroyConstantEv", "llvm::UndefValue::destroyConstant()"}, + {"_ZN4llvm12BlockAddress3getEPNS_10BasicBlockE", "llvm::BlockAddress::get(llvm::BasicBlock*)"}, + {"_ZN4llvm12BlockAddress3getEPNS_8FunctionEPNS_10BasicBlockE", "llvm::BlockAddress::get(llvm::Function*, llvm::BasicBlock*)"}, + {"_ZN4llvm12BlockAddressC1EPNS_8FunctionEPNS_10BasicBlockE", "llvm::BlockAddress::BlockAddress(llvm::Function*, llvm::BasicBlock*)"}, + {"_ZN4llvm12BlockAddressC2EPNS_8FunctionEPNS_10BasicBlockE", "llvm::BlockAddress::BlockAddress(llvm::Function*, llvm::BasicBlock*)"}, + {"_ZN4llvm12BlockAddress15destroyConstantEv", "llvm::BlockAddress::destroyConstant()"}, + {"_ZN4llvm12BlockAddress27replaceUsesOfWithOnConstantEPNS_5ValueES2_PNS_3UseE", "llvm::BlockAddress::replaceUsesOfWithOnConstant(llvm::Value*, llvm::Value*, llvm::Use*)"}, + {"_ZN4llvm12ConstantExpr8getTruncEPNS_8ConstantEPKNS_4TypeE", "llvm::ConstantExpr::getTrunc(llvm::Constant*, llvm::Type const*)"}, + {"_ZN4llvm12ConstantExpr7getZExtEPNS_8ConstantEPKNS_4TypeE", "llvm::ConstantExpr::getZExt(llvm::Constant*, llvm::Type const*)"}, + {"_ZN4llvm12ConstantExpr7getSExtEPNS_8ConstantEPKNS_4TypeE", "llvm::ConstantExpr::getSExt(llvm::Constant*, llvm::Type const*)"}, + {"_ZN4llvm12ConstantExpr10getFPTruncEPNS_8ConstantEPKNS_4TypeE", "llvm::ConstantExpr::getFPTrunc(llvm::Constant*, llvm::Type const*)"}, + {"_ZN4llvm12ConstantExpr11getFPExtendEPNS_8ConstantEPKNS_4TypeE", "llvm::ConstantExpr::getFPExtend(llvm::Constant*, llvm::Type const*)"}, + {"_ZN4llvm12ConstantExpr9getUIToFPEPNS_8ConstantEPKNS_4TypeE", "llvm::ConstantExpr::getUIToFP(llvm::Constant*, llvm::Type const*)"}, + {"_ZN4llvm12ConstantExpr9getSIToFPEPNS_8ConstantEPKNS_4TypeE", "llvm::ConstantExpr::getSIToFP(llvm::Constant*, llvm::Type const*)"}, + {"_ZN4llvm12ConstantExpr9getFPToUIEPNS_8ConstantEPKNS_4TypeE", "llvm::ConstantExpr::getFPToUI(llvm::Constant*, llvm::Type const*)"}, + {"_ZN4llvm12ConstantExpr9getFPToSIEPNS_8ConstantEPKNS_4TypeE", "llvm::ConstantExpr::getFPToSI(llvm::Constant*, llvm::Type const*)"}, + {"_ZN4llvm12ConstantExpr11getPtrToIntEPNS_8ConstantEPKNS_4TypeE", "llvm::ConstantExpr::getPtrToInt(llvm::Constant*, llvm::Type const*)"}, + {"_ZN4llvm12ConstantExpr10getBitCastEPNS_8ConstantEPKNS_4TypeE", "llvm::ConstantExpr::getBitCast(llvm::Constant*, llvm::Type const*)"}, + {"_ZN4llvm12ConstantExpr16getZExtOrBitCastEPNS_8ConstantEPKNS_4TypeE", "llvm::ConstantExpr::getZExtOrBitCast(llvm::Constant*, llvm::Type const*)"}, + {"_ZN4llvm12ConstantExpr16getSExtOrBitCastEPNS_8ConstantEPKNS_4TypeE", "llvm::ConstantExpr::getSExtOrBitCast(llvm::Constant*, llvm::Type const*)"}, + {"_ZN4llvm12ConstantExpr17getTruncOrBitCastEPNS_8ConstantEPKNS_4TypeE", "llvm::ConstantExpr::getTruncOrBitCast(llvm::Constant*, llvm::Type const*)"}, + {"_ZN4llvm12ConstantExpr14getPointerCastEPNS_8ConstantEPKNS_4TypeE", "llvm::ConstantExpr::getPointerCast(llvm::Constant*, llvm::Type const*)"}, + {"_ZN4llvm12ConstantExpr14getIntegerCastEPNS_8ConstantEPKNS_4TypeEb", "llvm::ConstantExpr::getIntegerCast(llvm::Constant*, llvm::Type const*, bool)"}, + {"_ZN4llvm12ConstantExpr9getFPCastEPNS_8ConstantEPKNS_4TypeE", "llvm::ConstantExpr::getFPCast(llvm::Constant*, llvm::Type const*)"}, + {"_Z13getFoldedCastN4llvm11Instruction7CastOpsEPNS_8ConstantEPKNS_4TypeE", "getFoldedCast(llvm::Instruction::CastOps, llvm::Constant*, llvm::Type const*)"}, + + // {"_ZN4llvm12ConstantExpr12getCompareTyEtPNS_8ConstantES2_", + // "llvm::ConstantExpr::getCompareTy(unsigned short, llvm::Constant*, llvm::Constant*)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr7getFCmpEtPNS_8ConstantES2_", + // "llvm::ConstantExpr::getFCmp(unsigned short, llvm::Constant*, llvm::Constant*)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr7getICmpEtPNS_8ConstantES2_", + // "llvm::ConstantExpr::getICmp(unsigned short, llvm::Constant*, llvm::Constant*)"}, + // got error + + {"_ZN4llvm12ConstantExpr9getSizeOfEPKNS_4TypeE", "llvm::ConstantExpr::getSizeOf(llvm::Type const*)"}, + {"_ZN4llvm12ConstantExpr10getAlignOfEPKNS_4TypeE", "llvm::ConstantExpr::getAlignOf(llvm::Type const*)"}, + {"_ZN4llvm12ConstantExpr11getOffsetOfEPKNS_10StructTypeEj", "llvm::ConstantExpr::getOffsetOf(llvm::StructType const*, unsigned int)"}, + {"_ZN4llvm12ConstantExpr11getOffsetOfEPKNS_4TypeEPNS_8ConstantE", "llvm::ConstantExpr::getOffsetOf(llvm::Type const*, llvm::Constant*)"}, + + // {"_ZN4llvm12ConstantExpr11getSelectTyEPKNS_4TypeEPNS_8ConstantES5_S5_", + // "llvm::ConstantExpr::getSelectTy(llvm::Type const*, llvm::Constant*, llvm::Constant*, llvm::Constant*)"}, + // got error + + {"_ZN4llvm12ConstantExpr16getGetElementPtrEPNS_8ConstantEPKPNS_5ValueEj", "llvm::ConstantExpr::getGetElementPtr(llvm::Constant*, llvm::Value* const*, unsigned int)"}, + {"_ZN4llvm12ConstantExpr24getInBoundsGetElementPtrEPNS_8ConstantEPKPNS_5ValueEj", "llvm::ConstantExpr::getInBoundsGetElementPtr(llvm::Constant*, llvm::Value* const*, unsigned int)"}, + + // {"_ZN4llvm12ConstantExpr19getExtractElementTyEPKNS_4TypeEPNS_8ConstantES5_", + // "llvm::ConstantExpr::getExtractElementTy(llvm::Type const*, llvm::Constant*, llvm::Constant*)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr18getInsertElementTyEPKNS_4TypeEPNS_8ConstantES5_S5_", + // "llvm::ConstantExpr::getInsertElementTy(llvm::Type const*, llvm::Constant*, llvm::Constant*, llvm::Constant*)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr18getShuffleVectorTyEPKNS_4TypeEPNS_8ConstantES5_S5_", + // "llvm::ConstantExpr::getShuffleVectorTy(llvm::Type const*, llvm::Constant*, llvm::Constant*, llvm::Constant*)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr16getInsertValueTyEPKNS_4TypeEPNS_8ConstantES5_PKjj", + // "llvm::ConstantExpr::getInsertValueTy(llvm::Type const*, llvm::Constant*, llvm::Constant*, unsigned int const*, unsigned int)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr14getInsertValueEPNS_8ConstantES2_PKjj", + // "llvm::ConstantExpr::getInsertValue(llvm::Constant*, llvm::Constant*, unsigned int const*, unsigned int)"}, + // got error + + {"_ZN4llvm12ConstantExpr17getExtractValueTyEPKNS_4TypeEPNS_8ConstantEPKjj", "llvm::ConstantExpr::getExtractValueTy(llvm::Type const*, llvm::Constant*, unsigned int const*, unsigned int)"}, + {"_ZN4llvm12ConstantExpr15getExtractValueEPNS_8ConstantEPKjj", "llvm::ConstantExpr::getExtractValue(llvm::Constant*, unsigned int const*, unsigned int)"}, + {"_ZN4llvm12ConstantExpr6getNegEPNS_8ConstantE", "llvm::ConstantExpr::getNeg(llvm::Constant*)"}, + {"_ZN4llvm12ConstantExpr7getFNegEPNS_8ConstantE", "llvm::ConstantExpr::getFNeg(llvm::Constant*)"}, + {"_ZN4llvm12ConstantExpr6getNotEPNS_8ConstantE", "llvm::ConstantExpr::getNot(llvm::Constant*)"}, + + // {"_ZN4llvm12ConstantExpr6getAddEPNS_8ConstantES2_", + // "llvm::ConstantExpr::getAdd(llvm::Constant*, llvm::Constant*)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr7getFAddEPNS_8ConstantES2_", + // "llvm::ConstantExpr::getFAdd(llvm::Constant*, llvm::Constant*)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr6getSubEPNS_8ConstantES2_", + // "llvm::ConstantExpr::getSub(llvm::Constant*, llvm::Constant*)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr7getFSubEPNS_8ConstantES2_", + // "llvm::ConstantExpr::getFSub(llvm::Constant*, llvm::Constant*)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr6getMulEPNS_8ConstantES2_", + // "llvm::ConstantExpr::getMul(llvm::Constant*, llvm::Constant*)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr7getFMulEPNS_8ConstantES2_", + // "llvm::ConstantExpr::getFMul(llvm::Constant*, llvm::Constant*)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr7getUDivEPNS_8ConstantES2_b", + // "llvm::ConstantExpr::getUDiv(llvm::Constant*, llvm::Constant*, bool)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr7getSDivEPNS_8ConstantES2_b", + // "llvm::ConstantExpr::getSDiv(llvm::Constant*, llvm::Constant*, bool)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr7getFDivEPNS_8ConstantES2_", + // "llvm::ConstantExpr::getFDiv(llvm::Constant*, llvm::Constant*)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr7getURemEPNS_8ConstantES2_", + // "llvm::ConstantExpr::getURem(llvm::Constant*, llvm::Constant*)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr7getSRemEPNS_8ConstantES2_", + // "llvm::ConstantExpr::getSRem(llvm::Constant*, llvm::Constant*)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr7getFRemEPNS_8ConstantES2_", + // "llvm::ConstantExpr::getFRem(llvm::Constant*, llvm::Constant*)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr6getAndEPNS_8ConstantES2_", + // "llvm::ConstantExpr::getAnd(llvm::Constant*, llvm::Constant*)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr5getOrEPNS_8ConstantES2_", + // "llvm::ConstantExpr::getOr(llvm::Constant*, llvm::Constant*)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr6getXorEPNS_8ConstantES2_", + // "llvm::ConstantExpr::getXor(llvm::Constant*, llvm::Constant*)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr6getShlEPNS_8ConstantES2_", + // "llvm::ConstantExpr::getShl(llvm::Constant*, llvm::Constant*)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr7getLShrEPNS_8ConstantES2_b", + // "llvm::ConstantExpr::getLShr(llvm::Constant*, llvm::Constant*, bool)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr7getAShrEPNS_8ConstantES2_b", + // "llvm::ConstantExpr::getAShr(llvm::Constant*, llvm::Constant*, bool)"}, + // got error + + {"_ZN4llvm12ConstantExpr15destroyConstantEv", "llvm::ConstantExpr::destroyConstant()"}, + {"_ZNK4llvm12ConstantExpr13getOpcodeNameEv", "llvm::ConstantExpr::getOpcodeName() const"}, + {"_ZN4llvm25GetElementPtrConstantExprC1EPNS_8ConstantERKSt6vectorIS2_SaIS2_EEPKNS_4TypeE", "llvm::GetElementPtrConstantExpr::GetElementPtrConstantExpr(llvm::Constant*, std::vector> const&, llvm::Type const*)"}, + {"_ZN4llvm25GetElementPtrConstantExprC2EPNS_8ConstantERKSt6vectorIS2_SaIS2_EEPKNS_4TypeE", "llvm::GetElementPtrConstantExpr::GetElementPtrConstantExpr(llvm::Constant*, std::vector> const&, llvm::Type const*)"}, + {"_ZN4llvm13ConstantArray27replaceUsesOfWithOnConstantEPNS_5ValueES2_PNS_3UseE", "llvm::ConstantArray::replaceUsesOfWithOnConstant(llvm::Value*, llvm::Value*, llvm::Use*)"}, + {"_ZN4llvm14ConstantStruct27replaceUsesOfWithOnConstantEPNS_5ValueES2_PNS_3UseE", "llvm::ConstantStruct::replaceUsesOfWithOnConstant(llvm::Value*, llvm::Value*, llvm::Use*)"}, + {"_ZN4llvm14ConstantVector27replaceUsesOfWithOnConstantEPNS_5ValueES2_PNS_3UseE", "llvm::ConstantVector::replaceUsesOfWithOnConstant(llvm::Value*, llvm::Value*, llvm::Use*)"}, + {"_ZN4llvm12ConstantExpr27replaceUsesOfWithOnConstantEPNS_5ValueES2_PNS_3UseE", "llvm::ConstantExpr::replaceUsesOfWithOnConstant(llvm::Value*, llvm::Value*, llvm::Use*)"}, + + // {"_ZN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_9ArrayTypeENS_13ConstantArrayELb1EE11getOrCreateEPKS6_RKS5_", + // "llvm::ConstantUniqueMap>, llvm::ArrayType, llvm::ConstantArray, true>::getOrCreate(llvm::ArrayType const*, std::vector> const&)"}, + // got error + + + // {"_ZN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_10StructTypeENS_14ConstantStructELb1EE11getOrCreateEPKS6_RKS5_", + // "llvm::ConstantUniqueMap>, llvm::StructType, llvm::ConstantStruct, true>::getOrCreate(llvm::StructType const*, std::vector> const&)"}, + // got error + + + // {"_ZN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_10VectorTypeENS_14ConstantVectorELb0EE11getOrCreateEPKS6_RKS5_", + // "llvm::ConstantUniqueMap>, llvm::VectorType, llvm::ConstantVector, false>::getOrCreate(llvm::VectorType const*, std::vector> const&)"}, + // got error + + {"_ZN4llvm15SmallVectorImplIPNS_8ConstantEE6resizeEj", "llvm::SmallVectorImpl::resize(unsigned int)"}, + {"_ZN4llvm17ConstantUniqueMapIcNS_4TypeENS_21ConstantAggregateZeroELb0EE6removeEPS2_", "llvm::ConstantUniqueMap::remove(llvm::ConstantAggregateZero*)"}, + + // {"_ZN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_9ArrayTypeENS_13ConstantArrayELb1EE6removeEPS7_", + // "llvm::ConstantUniqueMap>, llvm::ArrayType, llvm::ConstantArray, true>::remove(llvm::ConstantArray*)"}, + // got error + + + // {"_ZN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_10StructTypeENS_14ConstantStructELb1EE6removeEPS7_", + // "llvm::ConstantUniqueMap>, llvm::StructType, llvm::ConstantStruct, true>::remove(llvm::ConstantStruct*)"}, + // got error + + + // {"_ZN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_10VectorTypeENS_14ConstantVectorELb0EE6removeEPS7_", + // "llvm::ConstantUniqueMap>, llvm::VectorType, llvm::ConstantVector, false>::remove(llvm::ConstantVector*)"}, + // got error + + {"_ZN4llvm17ConstantUniqueMapIcNS_11PointerTypeENS_19ConstantPointerNullELb0EE6removeEPS2_", "llvm::ConstantUniqueMap::remove(llvm::ConstantPointerNull*)"}, + {"_ZN4llvm17ConstantUniqueMapIcNS_4TypeENS_10UndefValueELb0EE6removeEPS2_", "llvm::ConstantUniqueMap::remove(llvm::UndefValue*)"}, + {"_ZN4llvm17ConstantUniqueMapINS_14ExprMapKeyTypeENS_4TypeENS_12ConstantExprELb0EE11getOrCreateEPKS2_RKS1_", "llvm::ConstantUniqueMap::getOrCreate(llvm::Type const*, llvm::ExprMapKeyType const&)"}, + + // {"_ZN4llvm12ConstantExpr20getGetElementPtrImplIPNS_5ValueEEEPNS_8ConstantES5_PKT_j", + // "llvm::Constant* llvm::ConstantExpr::getGetElementPtrImpl(llvm::Constant*, llvm::Value* const*, unsigned int)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr20getGetElementPtrImplIPNS_8ConstantEEES3_S3_PKT_j", + // "llvm::Constant* llvm::ConstantExpr::getGetElementPtrImpl(llvm::Constant*, llvm::Constant* const*, unsigned int)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr28getInBoundsGetElementPtrImplIPNS_5ValueEEEPNS_8ConstantES5_PKT_j", + // "llvm::Constant* llvm::ConstantExpr::getInBoundsGetElementPtrImpl(llvm::Constant*, llvm::Value* const*, unsigned int)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr28getInBoundsGetElementPtrImplIPNS_8ConstantEEES3_S3_PKT_j", + // "llvm::Constant* llvm::ConstantExpr::getInBoundsGetElementPtrImpl(llvm::Constant*, llvm::Constant* const*, unsigned int)"}, + // got error + + {"_ZN4llvm17ConstantUniqueMapINS_14ExprMapKeyTypeENS_4TypeENS_12ConstantExprELb0EE6removeEPS3_", "llvm::ConstantUniqueMap::remove(llvm::ConstantExpr*)"}, + + // {"_ZN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_9ArrayTypeENS_13ConstantArrayELb1EE15InsertOrGetItemERSt4pairIS9_IPKS6_S5_EPS7_ERb", + // "llvm::ConstantUniqueMap>, llvm::ArrayType, llvm::ConstantArray, true>::InsertOrGetItem(std::pair>>, llvm::ConstantArray*>&, bool&)"}, + // got error + + + // {"_ZN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_9ArrayTypeENS_13ConstantArrayELb1EE21MoveConstantToNewSlotEPS7_St17_Rb_tree_iteratorISt4pairIKSB_IPKS6_S5_ES9_EE", + // "llvm::ConstantUniqueMap>, llvm::ArrayType, llvm::ConstantArray, true>::MoveConstantToNewSlot(llvm::ConstantArray*, std::_Rb_tree_iterator>> const, llvm::ConstantArray*>>)"}, + // got error + + + // {"_ZN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_10StructTypeENS_14ConstantStructELb1EE15InsertOrGetItemERSt4pairIS9_IPKS6_S5_EPS7_ERb", + // "llvm::ConstantUniqueMap>, llvm::StructType, llvm::ConstantStruct, true>::InsertOrGetItem(std::pair>>, llvm::ConstantStruct*>&, bool&)"}, + // got error + + + // {"_ZN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_10StructTypeENS_14ConstantStructELb1EE21MoveConstantToNewSlotEPS7_St17_Rb_tree_iteratorISt4pairIKSB_IPKS6_S5_ES9_EE", + // "llvm::ConstantUniqueMap>, llvm::StructType, llvm::ConstantStruct, true>::MoveConstantToNewSlot(llvm::ConstantStruct*, std::_Rb_tree_iterator>> const, llvm::ConstantStruct*>>)"}, + // got error + + {"_ZN4llvm21ConstantAggregateZeroD1Ev", "llvm::ConstantAggregateZero::~ConstantAggregateZero()"}, + {"_ZN4llvm21ConstantAggregateZeroD0Ev", "llvm::ConstantAggregateZero::~ConstantAggregateZero()"}, + {"_ZNK4llvm21ConstantAggregateZero11isNullValueEv", "llvm::ConstantAggregateZero::isNullValue() const"}, + {"_ZNK4llvm8Constant19isNegativeZeroValueEv", "llvm::Constant::isNegativeZeroValue() const"}, + {"_ZN4llvm8Constant27replaceUsesOfWithOnConstantEPNS_5ValueES2_PNS_3UseE", "llvm::Constant::replaceUsesOfWithOnConstant(llvm::Value*, llvm::Value*, llvm::Use*)"}, + {"_ZN4llvm19ConstantPointerNullD1Ev", "llvm::ConstantPointerNull::~ConstantPointerNull()"}, + {"_ZN4llvm19ConstantPointerNullD0Ev", "llvm::ConstantPointerNull::~ConstantPointerNull()"}, + {"_ZNK4llvm19ConstantPointerNull11isNullValueEv", "llvm::ConstantPointerNull::isNullValue() const"}, + {"_ZN4llvm12ConstantExprD1Ev", "llvm::ConstantExpr::~ConstantExpr()"}, + {"_ZN4llvm12ConstantExprD0Ev", "llvm::ConstantExpr::~ConstantExpr()"}, + {"_ZNK4llvm12ConstantExpr11isNullValueEv", "llvm::ConstantExpr::isNullValue() const"}, + {"_ZN4llvm10UndefValueD1Ev", "llvm::UndefValue::~UndefValue()"}, + {"_ZN4llvm10UndefValueD0Ev", "llvm::UndefValue::~UndefValue()"}, + {"_ZNK4llvm10UndefValue11isNullValueEv", "llvm::UndefValue::isNullValue() const"}, + {"_ZN4llvm10ConstantFPD1Ev", "llvm::ConstantFP::~ConstantFP()"}, + {"_ZN4llvm10ConstantFPD0Ev", "llvm::ConstantFP::~ConstantFP()"}, + {"_ZNK4llvm10ConstantFP19isNegativeZeroValueEv", "llvm::ConstantFP::isNegativeZeroValue() const"}, + {"_ZN4llvm8Constant15destroyConstantEv", "llvm::Constant::destroyConstant()"}, + {"_ZN4llvm13ConstantArrayD1Ev", "llvm::ConstantArray::~ConstantArray()"}, + {"_ZN4llvm13ConstantArrayD0Ev", "llvm::ConstantArray::~ConstantArray()"}, + {"_ZNK4llvm13ConstantArray11isNullValueEv", "llvm::ConstantArray::isNullValue() const"}, + {"_ZN4llvm14ConstantStructD1Ev", "llvm::ConstantStruct::~ConstantStruct()"}, + {"_ZN4llvm14ConstantStructD0Ev", "llvm::ConstantStruct::~ConstantStruct()"}, + {"_ZNK4llvm14ConstantStruct11isNullValueEv", "llvm::ConstantStruct::isNullValue() const"}, + {"_ZN4llvm14ConstantVectorD1Ev", "llvm::ConstantVector::~ConstantVector()"}, + {"_ZN4llvm14ConstantVectorD0Ev", "llvm::ConstantVector::~ConstantVector()"}, + {"_ZNK4llvm14ConstantVector11isNullValueEv", "llvm::ConstantVector::isNullValue() const"}, + {"_ZN4llvm12BlockAddressD1Ev", "llvm::BlockAddress::~BlockAddress()"}, + {"_ZN4llvm12BlockAddressD0Ev", "llvm::BlockAddress::~BlockAddress()"}, + {"_ZNK4llvm12BlockAddress11isNullValueEv", "llvm::BlockAddress::isNullValue() const"}, + {"_ZN4llvm25GetElementPtrConstantExprD1Ev", "llvm::GetElementPtrConstantExpr::~GetElementPtrConstantExpr()"}, + {"_ZN4llvm25GetElementPtrConstantExprD0Ev", "llvm::GetElementPtrConstantExpr::~GetElementPtrConstantExpr()"}, + {"_ZN4llvm11ConstantIntD1Ev", "llvm::ConstantInt::~ConstantInt()"}, + {"_ZN4llvm11ConstantIntD0Ev", "llvm::ConstantInt::~ConstantInt()"}, + {"_ZNK4llvm11ConstantInt11isNullValueEv", "llvm::ConstantInt::isNullValue() const"}, + {"_ZN4llvm8ConstantD1Ev", "llvm::Constant::~Constant()"}, + {"_ZN4llvm8ConstantD0Ev", "llvm::Constant::~Constant()"}, + {"_ZN4llvm4UserD1Ev", "llvm::User::~User()"}, + {"_ZN4llvm4UserD0Ev", "llvm::User::~User()"}, + {"_ZN4llvm17ConstantUniqueMapINS_14ExprMapKeyTypeENS_4TypeENS_12ConstantExprELb0EE19FindExistingElementEPS3_", "llvm::ConstantUniqueMap::FindExistingElement(llvm::ConstantExpr*)"}, + + // {"_ZN4llvm12ConstantExpr26getInBoundsGetElementPtrTyIPNS_8ConstantEEES3_PKNS_4TypeES3_PKT_j", + // "llvm::Constant* llvm::ConstantExpr::getInBoundsGetElementPtrTy(llvm::Type const*, llvm::Constant*, llvm::Constant* const*, unsigned int)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr26getInBoundsGetElementPtrTyIPNS_5ValueEEEPNS_8ConstantEPKNS_4TypeES5_PKT_j", + // "llvm::Constant* llvm::ConstantExpr::getInBoundsGetElementPtrTy(llvm::Type const*, llvm::Constant*, llvm::Value* const*, unsigned int)"}, + // "llvm::Constant* llvm::ConstantExpr::getInBoundsGetElementPtrTy(llvm::Type const*, llvm::Type, llvm::Value* const*, unsigned int)" was returned + + + // {"_ZN4llvm12ConstantExpr18getGetElementPtrTyIPNS_8ConstantEEES3_PKNS_4TypeES3_PKT_j", + // "llvm::Constant* llvm::ConstantExpr::getGetElementPtrTy(llvm::Type const*, llvm::Constant*, llvm::Constant* const*, unsigned int)"}, + // got error + + + // {"_ZN4llvm12ConstantExpr18getGetElementPtrTyIPNS_5ValueEEEPNS_8ConstantEPKNS_4TypeES5_PKT_j", + // "llvm::Constant* llvm::ConstantExpr::getGetElementPtrTy(llvm::Type const*, llvm::Constant*, llvm::Value* const*, unsigned int)"}, + // "llvm::Constant* llvm::ConstantExpr::getGetElementPtrTy(llvm::Type const*, llvm::Type, llvm::Value* const*, unsigned int)" was returned + + + // {"_ZN4llvm17ConstantUniqueMapINS_14ExprMapKeyTypeENS_4TypeENS_12ConstantExprELb0EE6CreateEPKS2_RKS1_St17_Rb_tree_iteratorISt4pairIKSA_IS6_S1_EPS3_EE", + // "llvm::ConstantUniqueMap::Create(llvm::Type const*, llvm::ExprMapKeyType const&, std::_Rb_tree_iterator const, llvm::ConstantExpr*>>)"}, + // "llvm::ConstantUniqueMap::Create(llvm::Type const*, llvm::ExprMapKeyType const&, std::_Rb_tree_iterator, llvm::ConstantExpr*>>)" was returned + + {"_ZN4llvm15ConstantCreatorINS_12ConstantExprENS_4TypeENS_14ExprMapKeyTypeEE6createEPKS2_RKS3_t", "llvm::ConstantCreator::create(llvm::Type const*, llvm::ExprMapKeyType const&, unsigned short)"}, + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm4TypeENS1_14ExprMapKeyTypeEES0_IKS6_PNS1_12ConstantExprEESt10_Select1stISA_ESt4lessIS6_ESaISA_EE16_M_insert_uniqueESt17_Rb_tree_iteratorISA_ERKSA_", + // "std::_Rb_tree, std::pair const, llvm::ConstantExpr*>, std::_Select1st const, llvm::ConstantExpr*>>, std::less>, std::allocator const, llvm::ConstantExpr*>>>::_M_insert_unique(std::_Rb_tree_iterator const, llvm::ConstantExpr*>>, std::pair const, llvm::ConstantExpr*> const&)"}, + // "std::_Rb_tree, std::pair const, llvm::ConstantExpr*>, std::_Select1st< const, llvm::ConstantExpr*>>, std::less>, std::allocator< const, llvm::ConstantExpr*>>>::_M_insert_unique(std::_Rb_tree_iterator< const, llvm::ConstantExpr*>>, const, llvm::ConstantExpr*> const&)" was returned + + {"_ZN4llvm19CompareConstantExprC2EPKNS_4TypeENS_11Instruction8OtherOpsEtPNS_8ConstantES7_", "llvm::CompareConstantExpr::CompareConstantExpr(llvm::Type const*, llvm::Instruction::OtherOps, unsigned short, llvm::Constant*, llvm::Constant*)"}, + {"_ZN4llvm19CompareConstantExprD1Ev", "llvm::CompareConstantExpr::~CompareConstantExpr()"}, + {"_ZN4llvm19CompareConstantExprD0Ev", "llvm::CompareConstantExpr::~CompareConstantExpr()"}, + + // {"_ZN4llvm24ExtractValueConstantExprC2EPNS_8ConstantERKNS_11SmallVectorIjLj4EEEPKNS_4TypeE", + // "llvm::ExtractValueConstantExpr::ExtractValueConstantExpr(llvm::Constant*, llvm::SmallVector const&, llvm::Type const*)"}, + // "llvm::ExtractValueConstantExpr::ExtractValueConstantExpr(llvm::Constant*, llvm::SmallVector const&, llvm::Type const*)" was returned + + {"_ZN4llvm24ExtractValueConstantExprD1Ev", "llvm::ExtractValueConstantExpr::~ExtractValueConstantExpr()"}, + {"_ZN4llvm24ExtractValueConstantExprD0Ev", "llvm::ExtractValueConstantExpr::~ExtractValueConstantExpr()"}, + + // {"_ZN4llvm23InsertValueConstantExprC2EPNS_8ConstantES2_RKNS_11SmallVectorIjLj4EEEPKNS_4TypeE", + // "llvm::InsertValueConstantExpr::InsertValueConstantExpr(llvm::Constant*, llvm::Constant*, llvm::SmallVector const&, llvm::Type const*)"}, + // "llvm::InsertValueConstantExpr::InsertValueConstantExpr(llvm::Constant*, llvm::Constant*, llvm::SmallVector const&, llvm::Type const*)" was returned + + {"_ZN4llvm23InsertValueConstantExprD1Ev", "llvm::InsertValueConstantExpr::~InsertValueConstantExpr()"}, + {"_ZN4llvm23InsertValueConstantExprD0Ev", "llvm::InsertValueConstantExpr::~InsertValueConstantExpr()"}, + {"_ZN4llvm25ShuffleVectorConstantExprC2EPNS_8ConstantES2_S2_", "llvm::ShuffleVectorConstantExpr::ShuffleVectorConstantExpr(llvm::Constant*, llvm::Constant*, llvm::Constant*)"}, + {"_ZN4llvm25ShuffleVectorConstantExprD1Ev", "llvm::ShuffleVectorConstantExpr::~ShuffleVectorConstantExpr()"}, + {"_ZN4llvm25ShuffleVectorConstantExprD0Ev", "llvm::ShuffleVectorConstantExpr::~ShuffleVectorConstantExpr()"}, + {"_ZN4llvm25InsertElementConstantExprC2EPNS_8ConstantES2_S2_", "llvm::InsertElementConstantExpr::InsertElementConstantExpr(llvm::Constant*, llvm::Constant*, llvm::Constant*)"}, + {"_ZN4llvm25InsertElementConstantExprD1Ev", "llvm::InsertElementConstantExpr::~InsertElementConstantExpr()"}, + {"_ZN4llvm25InsertElementConstantExprD0Ev", "llvm::InsertElementConstantExpr::~InsertElementConstantExpr()"}, + {"_ZN4llvm26ExtractElementConstantExprC2EPNS_8ConstantES2_", "llvm::ExtractElementConstantExpr::ExtractElementConstantExpr(llvm::Constant*, llvm::Constant*)"}, + {"_ZN4llvm26ExtractElementConstantExprD1Ev", "llvm::ExtractElementConstantExpr::~ExtractElementConstantExpr()"}, + {"_ZN4llvm26ExtractElementConstantExprD0Ev", "llvm::ExtractElementConstantExpr::~ExtractElementConstantExpr()"}, + {"_ZN4llvm18SelectConstantExprC2EPNS_8ConstantES2_S2_", "llvm::SelectConstantExpr::SelectConstantExpr(llvm::Constant*, llvm::Constant*, llvm::Constant*)"}, + {"_ZN4llvm18SelectConstantExprD1Ev", "llvm::SelectConstantExpr::~SelectConstantExpr()"}, + {"_ZN4llvm18SelectConstantExprD0Ev", "llvm::SelectConstantExpr::~SelectConstantExpr()"}, + {"_ZN4llvm18BinaryConstantExprC2EjPNS_8ConstantES2_j", "llvm::BinaryConstantExpr::BinaryConstantExpr(unsigned int, llvm::Constant*, llvm::Constant*, unsigned int)"}, + {"_ZN4llvm18BinaryConstantExprD1Ev", "llvm::BinaryConstantExpr::~BinaryConstantExpr()"}, + {"_ZN4llvm18BinaryConstantExprD0Ev", "llvm::BinaryConstantExpr::~BinaryConstantExpr()"}, + {"_ZN4llvm17UnaryConstantExprD1Ev", "llvm::UnaryConstantExpr::~UnaryConstantExpr()"}, + {"_ZN4llvm17UnaryConstantExprD0Ev", "llvm::UnaryConstantExpr::~UnaryConstantExpr()"}, + + // {"_ZNK4llvm8DenseMapISt4pairIPNS_8FunctionEPNS_10BasicBlockEEPNS_12BlockAddressENS_12DenseMapInfoIS6_EENS9_IS8_EEE15LookupBucketForERKS6_RPS1_IS6_S8_E", + // "llvm::DenseMap, llvm::BlockAddress*, llvm::DenseMapInfo>, llvm::DenseMapInfo>::LookupBucketFor(std::pair const&, std::pair, llvm::BlockAddress*>*&) const"}, + // "llvm::DenseMap, llvm::BlockAddress*, llvm::DenseMapInfo>, llvm::DenseMapInfo>::LookupBucketFor(std::pair const&, std::pair*&, llvm::BlockAddress*>) const" was returned + + + // {"_ZN4llvm8DenseMapISt4pairIPNS_8FunctionEPNS_10BasicBlockEEPNS_12BlockAddressENS_12DenseMapInfoIS6_EENS9_IS8_EEE16InsertIntoBucketERKS6_RKS8_PS1_IS6_S8_E", + // "llvm::DenseMap, llvm::BlockAddress*, llvm::DenseMapInfo>, llvm::DenseMapInfo>::InsertIntoBucket(std::pair const&, llvm::BlockAddress* const&, std::pair, llvm::BlockAddress*>*)"}, + // "llvm::DenseMap, llvm::BlockAddress*, llvm::DenseMapInfo>, llvm::DenseMapInfo>::InsertIntoBucket(std::pair const&, llvm::BlockAddress* const&, std::pair*, llvm::BlockAddress*>)" was returned + + {"_ZN4llvm8DenseMapISt4pairIPNS_8FunctionEPNS_10BasicBlockEEPNS_12BlockAddressENS_12DenseMapInfoIS6_EENS9_IS8_EEE4growEj", "llvm::DenseMap, llvm::BlockAddress*, llvm::DenseMapInfo>, llvm::DenseMapInfo>::grow(unsigned int)"}, + + // {"_ZN4llvm17ConstantUniqueMapIcNS_4TypeENS_10UndefValueELb0EE6CreateEPKS1_RKcSt17_Rb_tree_iteratorISt4pairIKS9_IS5_cEPS2_EE", + // "llvm::ConstantUniqueMap::Create(llvm::Type const*, char const&, std::_Rb_tree_iterator const, llvm::UndefValue*>>)"}, + // "llvm::ConstantUniqueMap::Create(llvm::Type const*, char const&, std::_Rb_tree_iterator, llvm::UndefValue*>>)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm4TypeEcES0_IKS5_PNS1_10UndefValueEESt10_Select1stIS9_ESt4lessIS5_ESaIS9_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS9_ERKS9_", + // "std::_Rb_tree, std::pair const, llvm::UndefValue*>, std::_Select1st const, llvm::UndefValue*>>, std::less>, std::allocator const, llvm::UndefValue*>>>::_M_insert_unique(std::_Rb_tree_iterator const, llvm::UndefValue*>>, std::pair const, llvm::UndefValue*> const&)"}, + // "std::_Rb_tree, std::pair const, llvm::UndefValue*>, std::_Select1st< const, llvm::UndefValue*>>, std::less>, std::allocator< const, llvm::UndefValue*>>>::_M_insert_unique(std::_Rb_tree_iterator< const, llvm::UndefValue*>>, const, llvm::UndefValue*> const&)" was returned + + + // {"_ZN4llvm17ConstantUniqueMapIcNS_11PointerTypeENS_19ConstantPointerNullELb0EE6CreateEPKS1_RKcSt17_Rb_tree_iteratorISt4pairIKS9_IS5_cEPS2_EE", + // "llvm::ConstantUniqueMap::Create(llvm::PointerType const*, char const&, std::_Rb_tree_iterator const, llvm::ConstantPointerNull*>>)"}, + // "llvm::ConstantUniqueMap::Create(llvm::PointerType const*, char const&, std::_Rb_tree_iterator, llvm::ConstantPointerNull*>>)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm11PointerTypeEcES0_IKS5_PNS1_19ConstantPointerNullEESt10_Select1stIS9_ESt4lessIS5_ESaIS9_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS9_ERKS9_", + // "std::_Rb_tree, std::pair const, llvm::ConstantPointerNull*>, std::_Select1st const, llvm::ConstantPointerNull*>>, std::less>, std::allocator const, llvm::ConstantPointerNull*>>>::_M_insert_unique(std::_Rb_tree_iterator const, llvm::ConstantPointerNull*>>, std::pair const, llvm::ConstantPointerNull*> const&)"}, + // "std::_Rb_tree, std::pair const, llvm::ConstantPointerNull*>, std::_Select1st< const, llvm::ConstantPointerNull*>>, std::less>, std::allocator< const, llvm::ConstantPointerNull*>>>::_M_insert_unique(std::_Rb_tree_iterator< const, llvm::ConstantPointerNull*>>, const, llvm::ConstantPointerNull*> const&)" was returned + + + // {"_ZN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_10VectorTypeENS_14ConstantVectorELb0EE19FindExistingElementEPS7_", + // "llvm::ConstantUniqueMap>, llvm::VectorType, llvm::ConstantVector, false>::FindExistingElement(llvm::ConstantVector*)"}, + // got error + + + // {"_ZNSt8_Rb_treeIPN4llvm14ConstantStructESt4pairIKS2_St17_Rb_tree_iteratorIS3_IKS3_IPKNS0_10StructTypeESt6vectorIPNS0_8ConstantESaISB_EEES2_EEESt10_Select1stISI_ESt4lessIS2_ESaISI_EE5eraseES5_ISI_ESP_", + // "std::_Rb_tree>> const, llvm::ConstantStruct*>>>, std::_Select1st>> const, llvm::ConstantStruct*>>>>, std::less, std::allocator>> const, llvm::ConstantStruct*>>>>>::erase(std::_Rb_tree_iterator>> const, llvm::ConstantStruct*>>>>, std::_Rb_tree_iterator>> const, llvm::ConstantStruct*>>>>)"}, + // got error + + + // {"_ZNSt8_Rb_treeIPN4llvm13ConstantArrayESt4pairIKS2_St17_Rb_tree_iteratorIS3_IKS3_IPKNS0_9ArrayTypeESt6vectorIPNS0_8ConstantESaISB_EEES2_EEESt10_Select1stISI_ESt4lessIS2_ESaISI_EE5eraseES5_ISI_ESP_", + // "std::_Rb_tree>> const, llvm::ConstantArray*>>>, std::_Select1st>> const, llvm::ConstantArray*>>>>, std::less, std::allocator>> const, llvm::ConstantArray*>>>>>::erase(std::_Rb_tree_iterator>> const, llvm::ConstantArray*>>>>, std::_Rb_tree_iterator>> const, llvm::ConstantArray*>>>>)"}, + // got error + + + // {"_ZN4llvm17ConstantUniqueMapIcNS_4TypeENS_21ConstantAggregateZeroELb0EE6CreateEPKS1_RKcSt17_Rb_tree_iteratorISt4pairIKS9_IS5_cEPS2_EE", + // "llvm::ConstantUniqueMap::Create(llvm::Type const*, char const&, std::_Rb_tree_iterator const, llvm::ConstantAggregateZero*>>)"}, + // "llvm::ConstantUniqueMap::Create(llvm::Type const*, char const&, std::_Rb_tree_iterator, llvm::ConstantAggregateZero*>>)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm4TypeEcES0_IKS5_PNS1_21ConstantAggregateZeroEESt10_Select1stIS9_ESt4lessIS5_ESaIS9_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS9_ERKS9_", + // "std::_Rb_tree, std::pair const, llvm::ConstantAggregateZero*>, std::_Select1st const, llvm::ConstantAggregateZero*>>, std::less>, std::allocator const, llvm::ConstantAggregateZero*>>>::_M_insert_unique(std::_Rb_tree_iterator const, llvm::ConstantAggregateZero*>>, std::pair const, llvm::ConstantAggregateZero*> const&)"}, + // "std::_Rb_tree, std::pair const, llvm::ConstantAggregateZero*>, std::_Select1st< const, llvm::ConstantAggregateZero*>>, std::less>, std::allocator< const, llvm::ConstantAggregateZero*>>>::_M_insert_unique(std::_Rb_tree_iterator< const, llvm::ConstantAggregateZero*>>, const, llvm::ConstantAggregateZero*> const&)" was returned + + + // {"_ZN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_10VectorTypeENS_14ConstantVectorELb0EE6CreateEPKS6_RKS5_St17_Rb_tree_iteratorISt4pairIKSE_ISA_S5_EPS7_EE", + // "llvm::ConstantUniqueMap>, llvm::VectorType, llvm::ConstantVector, false>::Create(llvm::VectorType const*, std::vector> const&, std::_Rb_tree_iterator>> const, llvm::ConstantVector*>>)"}, + // got error + + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm10VectorTypeESt6vectorIPNS1_8ConstantESaIS7_EEES0_IKSA_PNS1_14ConstantVectorEESt10_Select1stISE_ESt4lessISA_ESaISE_EE16_M_insert_uniqueESt17_Rb_tree_iteratorISE_ERKSE_", + // "std::_Rb_tree>>, std::pair>> const, llvm::ConstantVector*>, std::_Select1st>> const, llvm::ConstantVector*>>, std::less>>>, std::allocator>> const, llvm::ConstantVector*>>>::_M_insert_unique(std::_Rb_tree_iterator>> const, llvm::ConstantVector*>>, std::pair>> const, llvm::ConstantVector*> const&)"}, + // "std::_Rb_tree>>, std::pair>> const, llvm::ConstantVector*>, std::_Select1st<>> const, llvm::ConstantVector*>>, std::less>>>, std::allocator<>> const, llvm::ConstantVector*>>>::_M_insert_unique(std::_Rb_tree_iterator<>> const, llvm::ConstantVector*>>, >> const, llvm::ConstantVector*> const&)" was returned + + + // {"_ZN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_10StructTypeENS_14ConstantStructELb1EE6CreateEPKS6_RKS5_St17_Rb_tree_iteratorISt4pairIKSE_ISA_S5_EPS7_EE", + // "llvm::ConstantUniqueMap>, llvm::StructType, llvm::ConstantStruct, true>::Create(llvm::StructType const*, std::vector> const&, std::_Rb_tree_iterator>> const, llvm::ConstantStruct*>>)"}, + // got error + + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm10StructTypeESt6vectorIPNS1_8ConstantESaIS7_EEES0_IKSA_PNS1_14ConstantStructEESt10_Select1stISE_ESt4lessISA_ESaISE_EE16_M_insert_uniqueESt17_Rb_tree_iteratorISE_ERKSE_", + // "std::_Rb_tree>>, std::pair>> const, llvm::ConstantStruct*>, std::_Select1st>> const, llvm::ConstantStruct*>>, std::less>>>, std::allocator>> const, llvm::ConstantStruct*>>>::_M_insert_unique(std::_Rb_tree_iterator>> const, llvm::ConstantStruct*>>, std::pair>> const, llvm::ConstantStruct*> const&)"}, + // "std::_Rb_tree>>, std::pair>> const, llvm::ConstantStruct*>, std::_Select1st<>> const, llvm::ConstantStruct*>>, std::less>>>, std::allocator<>> const, llvm::ConstantStruct*>>>::_M_insert_unique(std::_Rb_tree_iterator<>> const, llvm::ConstantStruct*>>, >> const, llvm::ConstantStruct*> const&)" was returned + + + // {"_ZN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_9ArrayTypeENS_13ConstantArrayELb1EE6CreateEPKS6_RKS5_St17_Rb_tree_iteratorISt4pairIKSE_ISA_S5_EPS7_EE", + // "llvm::ConstantUniqueMap>, llvm::ArrayType, llvm::ConstantArray, true>::Create(llvm::ArrayType const*, std::vector> const&, std::_Rb_tree_iterator>> const, llvm::ConstantArray*>>)"}, + // got error + + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm9ArrayTypeESt6vectorIPNS1_8ConstantESaIS7_EEES0_IKSA_PNS1_13ConstantArrayEESt10_Select1stISE_ESt4lessISA_ESaISE_EE16_M_insert_uniqueESt17_Rb_tree_iteratorISE_ERKSE_", + // "std::_Rb_tree>>, std::pair>> const, llvm::ConstantArray*>, std::_Select1st>> const, llvm::ConstantArray*>>, std::less>>>, std::allocator>> const, llvm::ConstantArray*>>>::_M_insert_unique(std::_Rb_tree_iterator>> const, llvm::ConstantArray*>>, std::pair>> const, llvm::ConstantArray*> const&)"}, + // "std::_Rb_tree>>, std::pair>> const, llvm::ConstantArray*>, std::_Select1st<>> const, llvm::ConstantArray*>>, std::less>>>, std::allocator<>> const, llvm::ConstantArray*>>>::_M_insert_unique(std::_Rb_tree_iterator<>> const, llvm::ConstantArray*>>, >> const, llvm::ConstantArray*> const&)" was returned + + {"_ZNK4llvm8DenseMapINS_22DenseMapAPFloatKeyInfo5KeyTyEPNS_10ConstantFPES1_NS_12DenseMapInfoIS4_EEE15LookupBucketForERKS2_RPSt4pairIS2_S4_E", "llvm::DenseMap>::LookupBucketFor(llvm::DenseMapAPFloatKeyInfo::KeyTy const&, std::pair*&) const"}, + {"_ZN4llvm8DenseMapINS_22DenseMapAPFloatKeyInfo5KeyTyEPNS_10ConstantFPES1_NS_12DenseMapInfoIS4_EEE16InsertIntoBucketERKS2_RKS4_PSt4pairIS2_S4_E", "llvm::DenseMap>::InsertIntoBucket(llvm::DenseMapAPFloatKeyInfo::KeyTy const&, llvm::ConstantFP* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapINS_22DenseMapAPFloatKeyInfo5KeyTyEPNS_10ConstantFPES1_NS_12DenseMapInfoIS4_EEE4growEj", "llvm::DenseMap>::grow(unsigned int)"}, + {"_ZNK4llvm8DenseMapINS_20DenseMapAPIntKeyInfo5KeyTyEPNS_11ConstantIntES1_NS_12DenseMapInfoIS4_EEE15LookupBucketForERKS2_RPSt4pairIS2_S4_E", "llvm::DenseMap>::LookupBucketFor(llvm::DenseMapAPIntKeyInfo::KeyTy const&, std::pair*&) const"}, + {"_ZN4llvm8DenseMapINS_20DenseMapAPIntKeyInfo5KeyTyEPNS_11ConstantIntES1_NS_12DenseMapInfoIS4_EEE16InsertIntoBucketERKS2_RKS4_PSt4pairIS2_S4_E", "llvm::DenseMap>::InsertIntoBucket(llvm::DenseMapAPIntKeyInfo::KeyTy const&, llvm::ConstantInt* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapINS_20DenseMapAPIntKeyInfo5KeyTyEPNS_11ConstantIntES1_NS_12DenseMapInfoIS4_EEE4growEj", "llvm::DenseMap>::grow(unsigned int)"}, + {"_ZNSt6vectorIPN4llvm8ConstantESaIS2_EE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPS2_S4_EEmRKS2_", "std::vector>::_M_fill_insert(__gnu_cxx::__normal_iterator>>, unsigned long, llvm::Constant* const&)"}, + {"_ZNK4llvm8DebugLoc8getScopeERKNS_11LLVMContextE", "llvm::DebugLoc::getScope(llvm::LLVMContext const&) const"}, + {"_ZNK4llvm8DebugLoc12getInlinedAtERKNS_11LLVMContextE", "llvm::DebugLoc::getInlinedAt(llvm::LLVMContext const&) const"}, + {"_ZNK4llvm8DebugLoc20getScopeAndInlinedAtERPNS_6MDNodeES3_RKNS_11LLVMContextE", "llvm::DebugLoc::getScopeAndInlinedAt(llvm::MDNode*&, llvm::MDNode*&, llvm::LLVMContext const&) const"}, + {"_ZN4llvm8DebugLoc3getEjjPNS_6MDNodeES2_", "llvm::DebugLoc::get(unsigned int, unsigned int, llvm::MDNode*, llvm::MDNode*)"}, + {"_ZN4llvm15LLVMContextImpl27getOrAddScopeRecordIdxEntryEPNS_6MDNodeEi", "llvm::LLVMContextImpl::getOrAddScopeRecordIdxEntry(llvm::MDNode*, int)"}, + {"_ZN4llvm15LLVMContextImpl30getOrAddScopeInlinedAtIdxEntryEPNS_6MDNodeES2_i", "llvm::LLVMContextImpl::getOrAddScopeInlinedAtIdxEntry(llvm::MDNode*, llvm::MDNode*, int)"}, + {"_ZNK4llvm8DebugLoc11getAsMDNodeERKNS_11LLVMContextE", "llvm::DebugLoc::getAsMDNode(llvm::LLVMContext const&) const"}, + {"_ZN4llvm8DebugLoc17getFromDILocationEPNS_6MDNodeE", "llvm::DebugLoc::getFromDILocation(llvm::MDNode*)"}, + {"_ZN4llvm10DebugRecVH7deletedEv", "llvm::DebugRecVH::deleted()"}, + {"_ZN4llvm10DebugRecVH19allUsesReplacedWithEPNS_5ValueE", "llvm::DebugRecVH::allUsesReplacedWith(llvm::Value*)"}, + {"_ZNSt6vectorIN4llvm10DebugRecVHESaIS1_EE7reserveEm", "std::vector>::reserve(unsigned long)"}, + {"_ZNSt6vectorISt4pairIN4llvm10DebugRecVHES2_ESaIS3_EE7reserveEm", "std::vector, std::allocator>>::reserve(unsigned long)"}, + {"_ZNSt6vectorISt4pairIN4llvm10DebugRecVHES2_ESaIS3_EE9push_backERKS3_", "std::vector, std::allocator>>::push_back(std::pair const&)"}, + + // {"_ZNK4llvm8DenseMapISt4pairIPNS_6MDNodeES3_EiNS_12DenseMapInfoIS4_EENS5_IiEEE15LookupBucketForERKS4_RPS1_IS4_iE", + // "llvm::DenseMap, int, llvm::DenseMapInfo>, llvm::DenseMapInfo>::LookupBucketFor(std::pair const&, std::pair, int>*&) const"}, + // "llvm::DenseMap, int, llvm::DenseMapInfo>, llvm::DenseMapInfo>::LookupBucketFor(std::pair const&, std::pair*&, int>) const" was returned + + {"_ZNSt6vectorISt4pairIN4llvm10DebugRecVHES2_ESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + + // {"_ZSt24__uninitialized_copy_auxIPSt4pairIN4llvm10DebugRecVHES2_ES4_ET0_T_S6_S5_St12__false_type", + // "std::pair* std::__uninitialized_copy_aux*, std::pair*>(std::pair*, std::pair*, std::pair*, std::__false_type)"}, + // got error + + + // {"_ZNSt15__copy_backwardILb0ESt26random_access_iterator_tagE8__copy_bIPSt4pairIN4llvm10DebugRecVHES5_ES7_EET0_T_S9_S8_", + // "std::pair* std::__copy_backward::__copy_b*, std::pair*>(std::pair*, std::pair*, std::pair*)"}, + // got error + + + // {"_ZN4llvm8DenseMapISt4pairIPNS_6MDNodeES3_EiNS_12DenseMapInfoIS4_EENS5_IiEEE16InsertIntoBucketERKS4_RKiPS1_IS4_iE", + // "llvm::DenseMap, int, llvm::DenseMapInfo>, llvm::DenseMapInfo>::InsertIntoBucket(std::pair const&, int const&, std::pair, int>*)"}, + // "llvm::DenseMap, int, llvm::DenseMapInfo>, llvm::DenseMapInfo>::InsertIntoBucket(std::pair const&, int const&, std::pair*, int>)" was returned + + {"_ZN4llvm8DenseMapISt4pairIPNS_6MDNodeES3_EiNS_12DenseMapInfoIS4_EENS5_IiEEE4growEj", "llvm::DenseMap, int, llvm::DenseMapInfo>, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNSt6vectorIN4llvm10DebugRecVHESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::DebugRecVH const&)"}, + + // {"_ZNSt15__copy_backwardILb0ESt26random_access_iterator_tagE8__copy_bIPN4llvm10DebugRecVHES5_EET0_T_S7_S6_", + // "llvm::DebugRecVH* std::__copy_backward::__copy_b(llvm::DebugRecVH*, llvm::DebugRecVH*, llvm::DebugRecVH*)"}, + // got error + + + // {"_ZNSt6vectorIN4llvm10DebugRecVHESaIS1_EE20_M_allocate_and_copyIPS1_EES5_mT_S6_", + // "llvm::DebugRecVH* std::vector>::_M_allocate_and_copy(unsigned long, llvm::DebugRecVH*, llvm::DebugRecVH*)"}, + // got error + + {"_ZN4llvm8DenseMapIPNS_6MDNodeEiNS_12DenseMapInfoIS2_EENS3_IiEEE16InsertIntoBucketERKS2_RKiPSt4pairIS2_iE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::MDNode* const&, int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_6MDNodeEiNS_12DenseMapInfoIS2_EENS3_IiEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm12PrintDomTreeINS_10BasicBlockEEEvPKNS_15DomTreeNodeBaseIT_EERNS_11raw_ostreamEj", "void llvm::PrintDomTree(llvm::DomTreeNodeBase const*, llvm::raw_ostream&, unsigned int)"}, + {"_ZN4llvm27initializeDominatorTreePassERNS_12PassRegistryE", "llvm::initializeDominatorTreePass(llvm::PassRegistry&)"}, + {"_ZN4llvm13DominatorTree13runOnFunctionERNS_8FunctionE", "llvm::DominatorTree::runOnFunction(llvm::Function&)"}, + {"_ZNK4llvm13DominatorTree14verifyAnalysisEv", "llvm::DominatorTree::verifyAnalysis() const"}, + {"_ZNK4llvm13DominatorTree5printERNS_11raw_ostreamEPKNS_6ModuleE", "llvm::DominatorTree::print(llvm::raw_ostream&, llvm::Module const*) const"}, + {"_ZNK4llvm13DominatorTree9dominatesEPKNS_11InstructionES3_", "llvm::DominatorTree::dominates(llvm::Instruction const*, llvm::Instruction const*) const"}, + {"_ZN4llvm15DomTreeNodeBaseINS_10BasicBlockEE5beginEv", "llvm::DomTreeNodeBase::begin()"}, + {"_ZN4llvm15DomTreeNodeBaseINS_10BasicBlockEE3endEv", "llvm::DomTreeNodeBase::end()"}, + {"_ZNK4llvm15DomTreeNodeBaseINS_10BasicBlockEE5beginEv", "llvm::DomTreeNodeBase::begin() const"}, + {"_ZNK4llvm15DomTreeNodeBaseINS_10BasicBlockEE3endEv", "llvm::DomTreeNodeBase::end() const"}, + {"_ZNK4llvm15DomTreeNodeBaseINS_10BasicBlockEE8getBlockEv", "llvm::DomTreeNodeBase::getBlock() const"}, + {"_ZNK4llvm15DomTreeNodeBaseINS_10BasicBlockEE7getIDomEv", "llvm::DomTreeNodeBase::getIDom() const"}, + {"_ZNK4llvm15DomTreeNodeBaseINS_10BasicBlockEE11getChildrenEv", "llvm::DomTreeNodeBase::getChildren() const"}, + {"_ZN4llvm15DomTreeNodeBaseINS_10BasicBlockEEC1EPS1_PS2_", "llvm::DomTreeNodeBase::DomTreeNodeBase(llvm::BasicBlock*, llvm::DomTreeNodeBase*)"}, + {"_ZN4llvm15DomTreeNodeBaseINS_10BasicBlockEEC2EPS1_PS2_", "llvm::DomTreeNodeBase::DomTreeNodeBase(llvm::BasicBlock*, llvm::DomTreeNodeBase*)"}, + {"_ZN4llvm15DomTreeNodeBaseINS_10BasicBlockEE8addChildEPS2_", "llvm::DomTreeNodeBase::addChild(llvm::DomTreeNodeBase*)"}, + {"_ZNK4llvm15DomTreeNodeBaseINS_10BasicBlockEE14getNumChildrenEv", "llvm::DomTreeNodeBase::getNumChildren() const"}, + {"_ZN4llvm15DomTreeNodeBaseINS_10BasicBlockEE16clearAllChildrenEv", "llvm::DomTreeNodeBase::clearAllChildren()"}, + {"_ZN4llvm15DomTreeNodeBaseINS_10BasicBlockEE7compareEPS2_", "llvm::DomTreeNodeBase::compare(llvm::DomTreeNodeBase*)"}, + {"_ZN4llvm15DomTreeNodeBaseINS_10BasicBlockEE7setIDomEPS2_", "llvm::DomTreeNodeBase::setIDom(llvm::DomTreeNodeBase*)"}, + {"_ZNK4llvm15DomTreeNodeBaseINS_10BasicBlockEE11getDFSNumInEv", "llvm::DomTreeNodeBase::getDFSNumIn() const"}, + {"_ZNK4llvm15DomTreeNodeBaseINS_10BasicBlockEE12getDFSNumOutEv", "llvm::DomTreeNodeBase::getDFSNumOut() const"}, + {"_ZNK4llvm15DomTreeNodeBaseINS_10BasicBlockEE11DominatedByEPKS2_", "llvm::DomTreeNodeBase::DominatedBy(llvm::DomTreeNodeBase const*) const"}, + {"_ZN4llvm17DominatorTreeBaseINS_10BasicBlockEE7InfoRecC1Ev", "llvm::DominatorTreeBase::InfoRec::InfoRec()"}, + {"_ZN4llvm17DominatorTreeBaseINS_10BasicBlockEE7InfoRecC2Ev", "llvm::DominatorTreeBase::InfoRec::InfoRec()"}, + {"_ZN4llvm17DominatorTreeBaseINS_10BasicBlockEE5resetEv", "llvm::DominatorTreeBase::reset()"}, + {"_ZN4llvm17DominatorTreeBaseINS_10BasicBlockEEC1Eb", "llvm::DominatorTreeBase::DominatorTreeBase(bool)"}, + {"_ZN4llvm17DominatorTreeBaseINS_10BasicBlockEEC2Eb", "llvm::DominatorTreeBase::DominatorTreeBase(bool)"}, + {"_ZN4llvm17DominatorTreeBaseINS_10BasicBlockEED0Ev", "llvm::DominatorTreeBase::~DominatorTreeBase()"}, + {"_ZN4llvm17DominatorTreeBaseINS_10BasicBlockEED1Ev", "llvm::DominatorTreeBase::~DominatorTreeBase()"}, + {"_ZN4llvm17DominatorTreeBaseINS_10BasicBlockEED2Ev", "llvm::DominatorTreeBase::~DominatorTreeBase()"}, + {"_ZNK4llvm17DominatorTreeBaseINS_10BasicBlockEE7compareERS2_", "llvm::DominatorTreeBase::compare(llvm::DominatorTreeBase&) const"}, + {"_ZN4llvm17DominatorTreeBaseINS_10BasicBlockEE13releaseMemoryEv", "llvm::DominatorTreeBase::releaseMemory()"}, + {"_ZNK4llvm17DominatorTreeBaseINS_10BasicBlockEE7getNodeEPS1_", "llvm::DominatorTreeBase::getNode(llvm::BasicBlock*) const"}, + {"_ZN4llvm17DominatorTreeBaseINS_10BasicBlockEE11getRootNodeEv", "llvm::DominatorTreeBase::getRootNode()"}, + {"_ZNK4llvm17DominatorTreeBaseINS_10BasicBlockEE11getRootNodeEv", "llvm::DominatorTreeBase::getRootNode() const"}, + {"_ZNK4llvm17DominatorTreeBaseINS_10BasicBlockEE17properlyDominatesEPKNS_15DomTreeNodeBaseIS1_EES6_", "llvm::DominatorTreeBase::properlyDominates(llvm::DomTreeNodeBase const*, llvm::DomTreeNodeBase const*) const"}, + {"_ZNK4llvm17DominatorTreeBaseINS_10BasicBlockEE23dominatedBySlowTreeWalkEPKNS_15DomTreeNodeBaseIS1_EES6_", "llvm::DominatorTreeBase::dominatedBySlowTreeWalk(llvm::DomTreeNodeBase const*, llvm::DomTreeNodeBase const*) const"}, + {"_ZN4llvm17DominatorTreeBaseINS_10BasicBlockEE17properlyDominatesEPKS1_S4_", "llvm::DominatorTreeBase::properlyDominates(llvm::BasicBlock const*, llvm::BasicBlock const*)"}, + {"_ZN4llvm17DominatorTreeBaseINS_10BasicBlockEE20isReachableFromEntryEPKS1_", "llvm::DominatorTreeBase::isReachableFromEntry(llvm::BasicBlock const*)"}, + {"_ZN4llvm17DominatorTreeBaseINS_10BasicBlockEE9dominatesEPKS1_S4_", "llvm::DominatorTreeBase::dominates(llvm::BasicBlock const*, llvm::BasicBlock const*)"}, + {"_ZN4llvm17DominatorTreeBaseINS_10BasicBlockEE9dominatesEPKNS_15DomTreeNodeBaseIS1_EES6_", "llvm::DominatorTreeBase::dominates(llvm::DomTreeNodeBase const*, llvm::DomTreeNodeBase const*)"}, + {"_ZN4llvm17DominatorTreeBaseINS_10BasicBlockEE16updateDFSNumbersEv", "llvm::DominatorTreeBase::updateDFSNumbers()"}, + {"_ZNK4llvm17DominatorTreeBaseINS_10BasicBlockEE7getRootEv", "llvm::DominatorTreeBase::getRoot() const"}, + {"_ZN4llvm17DominatorTreeBaseINS_10BasicBlockEE26findNearestCommonDominatorEPS1_S3_", "llvm::DominatorTreeBase::findNearestCommonDominator(llvm::BasicBlock*, llvm::BasicBlock*)"}, + {"_ZN4llvm17DominatorTreeBaseINS_10BasicBlockEE26findNearestCommonDominatorEPKS1_S4_", "llvm::DominatorTreeBase::findNearestCommonDominator(llvm::BasicBlock const*, llvm::BasicBlock const*)"}, + {"_ZN4llvm17DominatorTreeBaseINS_10BasicBlockEE11addNewBlockEPS1_S3_", "llvm::DominatorTreeBase::addNewBlock(llvm::BasicBlock*, llvm::BasicBlock*)"}, + {"_ZN4llvm17DominatorTreeBaseINS_10BasicBlockEE24changeImmediateDominatorEPNS_15DomTreeNodeBaseIS1_EES5_", "llvm::DominatorTreeBase::changeImmediateDominator(llvm::DomTreeNodeBase*, llvm::DomTreeNodeBase*)"}, + {"_ZN4llvm17DominatorTreeBaseINS_10BasicBlockEE24changeImmediateDominatorEPS1_S3_", "llvm::DominatorTreeBase::changeImmediateDominator(llvm::BasicBlock*, llvm::BasicBlock*)"}, + {"_ZN4llvm17DominatorTreeBaseINS_10BasicBlockEE9eraseNodeEPS1_", "llvm::DominatorTreeBase::eraseNode(llvm::BasicBlock*)"}, + {"_ZN4llvm17DominatorTreeBaseINS_10BasicBlockEE10removeNodeEPS1_", "llvm::DominatorTreeBase::removeNode(llvm::BasicBlock*)"}, + {"_ZN4llvm17DominatorTreeBaseINS_10BasicBlockEE10splitBlockEPS1_", "llvm::DominatorTreeBase::splitBlock(llvm::BasicBlock*)"}, + {"_ZNK4llvm17DominatorTreeBaseINS_10BasicBlockEE5printERNS_11raw_ostreamE", "llvm::DominatorTreeBase::print(llvm::raw_ostream&) const"}, + {"_ZN4llvm17DominatorTreeBaseINS_10BasicBlockEE15getNodeForBlockEPS1_", "llvm::DominatorTreeBase::getNodeForBlock(llvm::BasicBlock*)"}, + {"_ZNK4llvm17DominatorTreeBaseINS_10BasicBlockEE7getIDomEPS1_", "llvm::DominatorTreeBase::getIDom(llvm::BasicBlock*) const"}, + {"_ZN4llvm17DominatorTreeBaseINS_10BasicBlockEE7addRootEPS1_", "llvm::DominatorTreeBase::addRoot(llvm::BasicBlock*)"}, + {"_ZN4llvm13DominatorTreeD1Ev", "llvm::DominatorTree::~DominatorTree()"}, + {"_ZN4llvm13DominatorTreeD0Ev", "llvm::DominatorTree::~DominatorTree()"}, + {"_ZNK4llvm13DominatorTree16getAnalysisUsageERNS_13AnalysisUsageE", "llvm::DominatorTree::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN4llvm13DominatorTree13releaseMemoryEv", "llvm::DominatorTree::releaseMemory()"}, + {"_ZN4llvm9CalculateINS_8FunctionEPNS_10BasicBlockEEEvRNS_17DominatorTreeBaseINS_11GraphTraitsIT0_E8NodeTypeEEERT_", "void llvm::Calculate(llvm::DominatorTreeBase::NodeType>&, llvm::Function&)"}, + + // {"_ZN4llvm9CalculateINS_8FunctionENS_7InverseIPNS_10BasicBlockEEEEEvRNS_17DominatorTreeBaseINS_11GraphTraitsIT0_E8NodeTypeEEERT_", + // "void llvm::Calculate>(llvm::DominatorTreeBase>::NodeType>&, llvm::Function&)"}, + // "void llvm::Calculate>(llvm::DominatorTreeBase::NodeType>&, llvm::Function&)" was returned + + + // {"_ZN4llvm7DFSPassINS_11GraphTraitsINS_7InverseIPNS_10BasicBlockEEEEEEEjRNS_17DominatorTreeBaseINT_8NodeTypeEEEPS9_j", + // "unsigned int llvm::DFSPass>>(llvm::DominatorTreeBase>::NodeType>&, llvm::GraphTraits>::NodeType*, unsigned int)"}, + // "unsigned int llvm::DFSPass>>(llvm::DominatorTreeBase&, llvm::DominatorTreeBase*, unsigned int)" was returned + + + // {"_ZN4llvm4EvalINS_11GraphTraitsINS_7InverseIPNS_10BasicBlockEEEEEEEPNT_8NodeTypeERNS_17DominatorTreeBaseIS8_EES9_j", + // "llvm::GraphTraits>::NodeType* llvm::Eval>>(llvm::DominatorTreeBase>::NodeType>&, llvm::GraphTraits>::NodeType*, unsigned int)"}, + // "llvm::BasicBlock*::NodeType* llvm::Eval>>(llvm::DominatorTreeBase&, llvm::DominatorTreeBase, unsigned int)" was returned + + {"_ZN4llvm8DenseMapIPNS_10BasicBlockENS_17DominatorTreeBaseIS1_E7InfoRecENS_12DenseMapInfoIS2_EENS6_IS5_EEE16shrink_and_clearEv", "llvm::DenseMap::InfoRec, llvm::DenseMapInfo, llvm::DenseMapInfo::InfoRec>>::shrink_and_clear()"}, + {"_ZN4llvm23SmallVectorTemplateBaseISt4pairIPNS_10BasicBlockENS_12PredIteratorIS2_NS_18value_use_iteratorINS_4UserEEEEEELb0EE4growEm", "llvm::SmallVectorTemplateBase>>, false>::grow(unsigned long)"}, + {"_ZN4llvm8DenseMapIPNS_10BasicBlockENS_17DominatorTreeBaseIS1_E7InfoRecENS_12DenseMapInfoIS2_EENS6_IS5_EEE16InsertIntoBucketERKS2_RKS5_PSt4pairIS2_S5_E", "llvm::DenseMap::InfoRec, llvm::DenseMapInfo, llvm::DenseMapInfo::InfoRec>>::InsertIntoBucket(llvm::BasicBlock* const&, llvm::DominatorTreeBase::InfoRec const&, std::pair::InfoRec>*)"}, + {"_ZN4llvm8DenseMapIPNS_10BasicBlockENS_17DominatorTreeBaseIS1_E7InfoRecENS_12DenseMapInfoIS2_EENS6_IS5_EEE4growEj", "llvm::DenseMap::InfoRec, llvm::DenseMapInfo, llvm::DenseMapInfo::InfoRec>>::grow(unsigned int)"}, + + // {"_ZN4llvm7DFSPassINS_11GraphTraitsIPNS_10BasicBlockEEEEEjRNS_17DominatorTreeBaseINT_8NodeTypeEEEPS7_j", + // "unsigned int llvm::DFSPass>(llvm::DominatorTreeBase::NodeType>&, llvm::GraphTraits::NodeType*, unsigned int)"}, + // "unsigned int llvm::DFSPass>(llvm::DominatorTreeBase&, llvm::DominatorTreeBase*, unsigned int)" was returned + + + // {"_ZN4llvm4EvalINS_11GraphTraitsIPNS_10BasicBlockEEEEEPNT_8NodeTypeERNS_17DominatorTreeBaseIS6_EES7_j", + // "llvm::GraphTraits::NodeType* llvm::Eval>(llvm::DominatorTreeBase::NodeType>&, llvm::GraphTraits::NodeType*, unsigned int)"}, + // "llvm::BasicBlock*::NodeType* llvm::Eval>(llvm::DominatorTreeBase&, llvm::DominatorTreeBase, unsigned int)" was returned + + {"_ZN4llvm23SmallVectorTemplateBaseISt4pairIPNS_10BasicBlockENS_12SuccIteratorIPNS_14TerminatorInstES2_EEELb0EE4growEm", "llvm::SmallVectorTemplateBase>, false>::grow(unsigned long)"}, + {"_ZN4llvm15callDefaultCtorINS_13DominatorTreeEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor()"}, + {"_ZN4llvm8Argument9setParentEPNS_8FunctionE", "llvm::Argument::setParent(llvm::Function*)"}, + {"_ZN4llvm8ArgumentC1EPKNS_4TypeERKNS_5TwineEPNS_8FunctionE", "llvm::Argument::Argument(llvm::Type const*, llvm::Twine const&, llvm::Function*)"}, + {"_ZN4llvm8ArgumentC2EPKNS_4TypeERKNS_5TwineEPNS_8FunctionE", "llvm::Argument::Argument(llvm::Type const*, llvm::Twine const&, llvm::Function*)"}, + {"_ZNK4llvm8Argument8getArgNoEv", "llvm::Argument::getArgNo() const"}, + {"_ZNK4llvm8Argument12hasByValAttrEv", "llvm::Argument::hasByValAttr() const"}, + {"_ZNK4llvm8Argument11hasNestAttrEv", "llvm::Argument::hasNestAttr() const"}, + {"_ZNK4llvm8Argument14hasNoAliasAttrEv", "llvm::Argument::hasNoAliasAttr() const"}, + {"_ZNK4llvm8Argument16hasNoCaptureAttrEv", "llvm::Argument::hasNoCaptureAttr() const"}, + {"_ZNK4llvm8Argument16hasStructRetAttrEv", "llvm::Argument::hasStructRetAttr() const"}, + {"_ZN4llvm8Argument7addAttrEj", "llvm::Argument::addAttr(unsigned int)"}, + {"_ZN4llvm8Function12addAttributeEjj", "llvm::Function::addAttribute(unsigned int, unsigned int)"}, + {"_ZN4llvm8Argument10removeAttrEj", "llvm::Argument::removeAttr(unsigned int)"}, + {"_ZN4llvm8Function15removeAttributeEjj", "llvm::Function::removeAttribute(unsigned int, unsigned int)"}, + {"_ZNK4llvm8Function10getContextEv", "llvm::Function::getContext() const"}, + {"_ZNK4llvm8Function15getFunctionTypeEv", "llvm::Function::getFunctionType() const"}, + {"_ZNK4llvm8Function8isVarArgEv", "llvm::Function::isVarArg() const"}, + {"_ZNK4llvm8Function13getReturnTypeEv", "llvm::Function::getReturnType() const"}, + {"_ZN4llvm8Function16removeFromParentEv", "llvm::Function::removeFromParent()"}, + {"_ZN4llvm8Function15eraseFromParentEv", "llvm::Function::eraseFromParent()"}, + {"_ZN4llvm8FunctionC1EPKNS_12FunctionTypeENS_11GlobalValue12LinkageTypesERKNS_5TwineEPNS_6ModuleE", "llvm::Function::Function(llvm::FunctionType const*, llvm::GlobalValue::LinkageTypes, llvm::Twine const&, llvm::Module*)"}, + {"_ZN4llvm8FunctionC2EPKNS_12FunctionTypeENS_11GlobalValue12LinkageTypesERKNS_5TwineEPNS_6ModuleE", "llvm::Function::Function(llvm::FunctionType const*, llvm::GlobalValue::LinkageTypes, llvm::Twine const&, llvm::Module*)"}, + {"_ZNK4llvm8Function14getIntrinsicIDEv", "llvm::Function::getIntrinsicID() const"}, + {"_ZN4llvm9Intrinsic13getAttributesENS0_2IDE", "llvm::Intrinsic::getAttributes(llvm::Intrinsic::ID)"}, + {"_ZN4llvm8FunctionD0Ev", "llvm::Function::~Function()"}, + {"_ZN4llvm8FunctionD1Ev", "llvm::Function::~Function()"}, + {"_ZN4llvm8FunctionD2Ev", "llvm::Function::~Function()"}, + {"_ZN4llvm8Function17dropAllReferencesEv", "llvm::Function::dropAllReferences()"}, + {"_ZN4llvm8Function7clearGCEv", "llvm::Function::clearGC()"}, + {"_ZNK4llvm8Function18BuildLazyArgumentsEv", "llvm::Function::BuildLazyArguments() const"}, + {"_ZNK4llvm8Function8arg_sizeEv", "llvm::Function::arg_size() const"}, + {"_ZNK4llvm8Function9arg_emptyEv", "llvm::Function::arg_empty() const"}, + {"_ZN4llvm8Function9setParentEPNS_6ModuleE", "llvm::Function::setParent(llvm::Module*)"}, + {"_ZNK4llvm8Function5hasGCEv", "llvm::Function::hasGC() const"}, + {"_ZNK4llvm8Function5getGCEv", "llvm::Function::getGC() const"}, + {"_ZN4llvm8Function5setGCEPKc", "llvm::Function::setGC(char const*)"}, + {"_ZN4llvm8Function18copyAttributesFromEPKNS_11GlobalValueE", "llvm::Function::copyAttributesFrom(llvm::GlobalValue const*)"}, + {"_ZN4llvm9Intrinsic7getNameENS0_2IDEPPKNS_4TypeEj", "llvm::Intrinsic::getName(llvm::Intrinsic::ID, llvm::Type const**, unsigned int)"}, + {"_ZN4llvm9Intrinsic7getTypeERNS_11LLVMContextENS0_2IDEPPKNS_4TypeEj", "llvm::Intrinsic::getType(llvm::LLVMContext&, llvm::Intrinsic::ID, llvm::Type const**, unsigned int)"}, + {"_ZN4llvm9Intrinsic12isOverloadedENS0_2IDE", "llvm::Intrinsic::isOverloaded(llvm::Intrinsic::ID)"}, + {"_ZN4llvm9Intrinsic14getDeclarationEPNS_6ModuleENS0_2IDEPPKNS_4TypeEj", "llvm::Intrinsic::getDeclaration(llvm::Module*, llvm::Intrinsic::ID, llvm::Type const**, unsigned int)"}, + {"_ZN4llvm9Intrinsic25getIntrinsicForGCCBuiltinEPKcS2_", "llvm::Intrinsic::getIntrinsicForGCCBuiltin(char const*, char const*)"}, + {"_ZNK4llvm8Function15hasAddressTakenEPPKNS_4UserE", "llvm::Function::hasAddressTaken(llvm::User const**) const"}, + {"_ZN4llvm21SymbolTableListTraitsINS_8ArgumentENS_8FunctionEEC1Ev", "llvm::SymbolTableListTraits::SymbolTableListTraits()"}, + {"_ZN4llvm21SymbolTableListTraitsINS_8ArgumentENS_8FunctionEEC2Ev", "llvm::SymbolTableListTraits::SymbolTableListTraits()"}, + {"_ZN4llvm21SymbolTableListTraitsINS_8ArgumentENS_8FunctionEE12getListOwnerEv", "llvm::SymbolTableListTraits::getListOwner()"}, + {"_ZN4llvm21SymbolTableListTraitsINS_8ArgumentENS_8FunctionEE7getListEPS2_", "llvm::SymbolTableListTraits::getList(llvm::Function*)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_8ArgumentENS_8FunctionEE9getSymTabEPS2_", "llvm::SymbolTableListTraits::getSymTab(llvm::Function*)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_8ArgumentENS_8FunctionEE5toPtrERNS_16ValueSymbolTableE", "llvm::SymbolTableListTraits::toPtr(llvm::ValueSymbolTable&)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_8ArgumentENS_8FunctionEE13addNodeToListEPS1_", "llvm::SymbolTableListTraits::addNodeToList(llvm::Argument*)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_8ArgumentENS_8FunctionEE18removeNodeFromListEPS1_", "llvm::SymbolTableListTraits::removeNodeFromList(llvm::Argument*)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_8ArgumentENS_8FunctionEE21transferNodesFromListERNS_12ilist_traitsIS1_EENS_14ilist_iteratorIS1_EES8_", "llvm::SymbolTableListTraits::transferNodesFromList(llvm::ilist_traits&, llvm::ilist_iterator, llvm::ilist_iterator)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_8ArgumentENS_8FunctionEE5toPtrEPNS_16ValueSymbolTableE", "llvm::SymbolTableListTraits::toPtr(llvm::ValueSymbolTable*)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_10BasicBlockENS_8FunctionEEC1Ev", "llvm::SymbolTableListTraits::SymbolTableListTraits()"}, + {"_ZN4llvm21SymbolTableListTraitsINS_10BasicBlockENS_8FunctionEEC2Ev", "llvm::SymbolTableListTraits::SymbolTableListTraits()"}, + {"_ZN4llvm21SymbolTableListTraitsINS_10BasicBlockENS_8FunctionEE12getListOwnerEv", "llvm::SymbolTableListTraits::getListOwner()"}, + {"_ZN4llvm21SymbolTableListTraitsINS_10BasicBlockENS_8FunctionEE7getListEPS2_", "llvm::SymbolTableListTraits::getList(llvm::Function*)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_10BasicBlockENS_8FunctionEE9getSymTabEPS2_", "llvm::SymbolTableListTraits::getSymTab(llvm::Function*)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_10BasicBlockENS_8FunctionEE5toPtrERNS_16ValueSymbolTableE", "llvm::SymbolTableListTraits::toPtr(llvm::ValueSymbolTable&)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_10BasicBlockENS_8FunctionEE13addNodeToListEPS1_", "llvm::SymbolTableListTraits::addNodeToList(llvm::BasicBlock*)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_10BasicBlockENS_8FunctionEE18removeNodeFromListEPS1_", "llvm::SymbolTableListTraits::removeNodeFromList(llvm::BasicBlock*)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_10BasicBlockENS_8FunctionEE21transferNodesFromListERNS_12ilist_traitsIS1_EENS_14ilist_iteratorIS1_EES8_", "llvm::SymbolTableListTraits::transferNodesFromList(llvm::ilist_traits&, llvm::ilist_iterator, llvm::ilist_iterator)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_10BasicBlockENS_8FunctionEE5toPtrEPNS_16ValueSymbolTableE", "llvm::SymbolTableListTraits::toPtr(llvm::ValueSymbolTable*)"}, + {"_ZN4llvm6iplistINS_8ArgumentENS_12ilist_traitsIS1_EEE5clearEv", "llvm::iplist>::clear()"}, + {"_ZN4llvm11GlobalValueD2Ev", "llvm::GlobalValue::~GlobalValue()"}, + {"_ZN4llvm8DenseMapIPKNS_8FunctionENS_15PooledStringPtrENS_12DenseMapInfoIS3_EENS5_IS4_EEE5eraseERKS3_", "llvm::DenseMap, llvm::DenseMapInfo>::erase(llvm::Function const* const&)"}, + {"_ZNK4llvm11GlobalValue11isNullValueEv", "llvm::GlobalValue::isNullValue() const"}, + {"_ZNK4llvm8Function13isDeclarationEv", "llvm::Function::isDeclaration() const"}, + {"_ZN4llvm8ArgumentD1Ev", "llvm::Argument::~Argument()"}, + {"_ZN4llvm8ArgumentD0Ev", "llvm::Argument::~Argument()"}, + {"_ZN4llvm8DenseMapIPKNS_8FunctionENS_15PooledStringPtrENS_12DenseMapInfoIS3_EENS5_IS4_EEED2Ev", "llvm::DenseMap, llvm::DenseMapInfo>::~DenseMap()"}, + {"_ZN4llvm8DenseMapIPKNS_8FunctionENS_15PooledStringPtrENS_12DenseMapInfoIS3_EENS5_IS4_EEE16FindAndConstructERKS3_", "llvm::DenseMap, llvm::DenseMapInfo>::FindAndConstruct(llvm::Function const* const&)"}, + {"_ZN4llvm8DenseMapIPKNS_8FunctionENS_15PooledStringPtrENS_12DenseMapInfoIS3_EENS5_IS4_EEE16InsertIntoBucketERKS3_RKS4_PSt4pairIS3_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::Function const* const&, llvm::PooledStringPtr const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_8FunctionENS_15PooledStringPtrENS_12DenseMapInfoIS3_EENS5_IS4_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm14object_creatorINS_3sys12SmartRWMutexILb1EEEEEPvv", "void* llvm::object_creator>()"}, + {"_ZN4llvm14object_deleterINS_3sys12SmartRWMutexILb1EEEE4callEPv", "llvm::object_deleter>::call(void*)"}, + {"_ZN4llvm6iplistINS_10BasicBlockENS_12ilist_traitsIS1_EEE5eraseENS_14ilist_iteratorIS1_EE", "llvm::iplist>::erase(llvm::ilist_iterator)"}, + {"_ZN4llvm11GlobalValueD1Ev", "llvm::GlobalValue::~GlobalValue()"}, + {"_ZN4llvm11GlobalValueD0Ev", "llvm::GlobalValue::~GlobalValue()"}, + {"_ZN4llvm14GVMaterializerD0Ev", "llvm::GVMaterializer::~GVMaterializer()"}, + {"_ZN4llvm14GVMaterializerD1Ev", "llvm::GVMaterializer::~GVMaterializer()"}, + {"_ZN4llvm14GVMaterializerD2Ev", "llvm::GVMaterializer::~GVMaterializer()"}, + {"_ZNK4llvm11GlobalValue16isMaterializableEv", "llvm::GlobalValue::isMaterializable() const"}, + {"_ZNK4llvm11GlobalValue18isDematerializableEv", "llvm::GlobalValue::isDematerializable() const"}, + {"_ZN4llvm11GlobalValue11MaterializeEPSs", "llvm::GlobalValue::Materialize(std::string*)"}, + {"_ZN4llvm11GlobalValue13DematerializeEv", "llvm::GlobalValue::Dematerialize()"}, + {"_ZNK4llvm11GlobalValue23removeDeadConstantUsersEv", "llvm::GlobalValue::removeDeadConstantUsers() const"}, + {"_Z25removeDeadUsersOfConstantPKN4llvm8ConstantE", "removeDeadUsersOfConstant(llvm::Constant const*)"}, + {"_ZN4llvm11GlobalValue15destroyConstantEv", "llvm::GlobalValue::destroyConstant()"}, + {"_ZN4llvm11GlobalValue18copyAttributesFromEPKS0_", "llvm::GlobalValue::copyAttributesFrom(llvm::GlobalValue const*)"}, + {"_ZN4llvm11GlobalValue12setAlignmentEj", "llvm::GlobalValue::setAlignment(unsigned int)"}, + {"_ZN4llvm14GlobalVariableC1EPKNS_4TypeEbNS_11GlobalValue12LinkageTypesEPNS_8ConstantERKNS_5TwineEbj", "llvm::GlobalVariable::GlobalVariable(llvm::Type const*, bool, llvm::GlobalValue::LinkageTypes, llvm::Constant*, llvm::Twine const&, bool, unsigned int)"}, + {"_ZN4llvm14GlobalVariableC2EPKNS_4TypeEbNS_11GlobalValue12LinkageTypesEPNS_8ConstantERKNS_5TwineEbj", "llvm::GlobalVariable::GlobalVariable(llvm::Type const*, bool, llvm::GlobalValue::LinkageTypes, llvm::Constant*, llvm::Twine const&, bool, unsigned int)"}, + {"_ZN4llvm14GlobalVariableC1ERNS_6ModuleEPKNS_4TypeEbNS_11GlobalValue12LinkageTypesEPNS_8ConstantERKNS_5TwineEPS0_bj", "llvm::GlobalVariable::GlobalVariable(llvm::Module&, llvm::Type const*, bool, llvm::GlobalValue::LinkageTypes, llvm::Constant*, llvm::Twine const&, llvm::GlobalVariable*, bool, unsigned int)"}, + {"_ZN4llvm14GlobalVariableC2ERNS_6ModuleEPKNS_4TypeEbNS_11GlobalValue12LinkageTypesEPNS_8ConstantERKNS_5TwineEPS0_bj", "llvm::GlobalVariable::GlobalVariable(llvm::Module&, llvm::Type const*, bool, llvm::GlobalValue::LinkageTypes, llvm::Constant*, llvm::Twine const&, llvm::GlobalVariable*, bool, unsigned int)"}, + {"_ZN4llvm14GlobalVariable9setParentEPNS_6ModuleE", "llvm::GlobalVariable::setParent(llvm::Module*)"}, + {"_ZN4llvm14GlobalVariable16removeFromParentEv", "llvm::GlobalVariable::removeFromParent()"}, + {"_ZN4llvm14GlobalVariable15eraseFromParentEv", "llvm::GlobalVariable::eraseFromParent()"}, + {"_ZN4llvm14GlobalVariable27replaceUsesOfWithOnConstantEPNS_5ValueES2_PNS_3UseE", "llvm::GlobalVariable::replaceUsesOfWithOnConstant(llvm::Value*, llvm::Value*, llvm::Use*)"}, + {"_ZN4llvm14GlobalVariable14setInitializerEPNS_8ConstantE", "llvm::GlobalVariable::setInitializer(llvm::Constant*)"}, + {"_ZN4llvm14GlobalVariable18copyAttributesFromEPKNS_11GlobalValueE", "llvm::GlobalVariable::copyAttributesFrom(llvm::GlobalValue const*)"}, + {"_ZN4llvm11GlobalAliasC1EPKNS_4TypeENS_11GlobalValue12LinkageTypesERKNS_5TwineEPNS_8ConstantEPNS_6ModuleE", "llvm::GlobalAlias::GlobalAlias(llvm::Type const*, llvm::GlobalValue::LinkageTypes, llvm::Twine const&, llvm::Constant*, llvm::Module*)"}, + {"_ZN4llvm11GlobalAliasC2EPKNS_4TypeENS_11GlobalValue12LinkageTypesERKNS_5TwineEPNS_8ConstantEPNS_6ModuleE", "llvm::GlobalAlias::GlobalAlias(llvm::Type const*, llvm::GlobalValue::LinkageTypes, llvm::Twine const&, llvm::Constant*, llvm::Module*)"}, + {"_ZN4llvm11GlobalAlias9setParentEPNS_6ModuleE", "llvm::GlobalAlias::setParent(llvm::Module*)"}, + {"_ZN4llvm11GlobalAlias16removeFromParentEv", "llvm::GlobalAlias::removeFromParent()"}, + {"_ZN4llvm11GlobalAlias15eraseFromParentEv", "llvm::GlobalAlias::eraseFromParent()"}, + {"_ZNK4llvm11GlobalAlias13isDeclarationEv", "llvm::GlobalAlias::isDeclaration() const"}, + {"_ZNK4llvm11GlobalAlias16getAliasedGlobalEv", "llvm::GlobalAlias::getAliasedGlobal() const"}, + {"_ZN4llvm11GlobalAlias10setAliaseeEPNS_8ConstantE", "llvm::GlobalAlias::setAliasee(llvm::Constant*)"}, + {"_ZNK4llvm11GlobalAlias20resolveAliasedGlobalEb", "llvm::GlobalAlias::resolveAliasedGlobal(bool) const"}, + {"_ZN4llvm6iplistINS_14GlobalVariableENS_12ilist_traitsIS1_EEE9push_backEPS1_", "llvm::iplist>::push_back(llvm::GlobalVariable*)"}, + {"_ZN4llvm6iplistINS_11GlobalAliasENS_12ilist_traitsIS1_EEE9push_backEPS1_", "llvm::iplist>::push_back(llvm::GlobalAlias*)"}, + {"_ZN4llvm14GlobalVariableD1Ev", "llvm::GlobalVariable::~GlobalVariable()"}, + {"_ZN4llvm14GlobalVariableD0Ev", "llvm::GlobalVariable::~GlobalVariable()"}, + {"_ZNK4llvm14GlobalVariable13isDeclarationEv", "llvm::GlobalVariable::isDeclaration() const"}, + {"_ZN4llvm11GlobalAliasD1Ev", "llvm::GlobalAlias::~GlobalAlias()"}, + {"_ZN4llvm11GlobalAliasD0Ev", "llvm::GlobalAlias::~GlobalAlias()"}, + {"_ZN4llvm13IRBuilderBase18CreateGlobalStringEPKcRKNS_5TwineE", "llvm::IRBuilderBase::CreateGlobalString(char const*, llvm::Twine const&)"}, + {"_ZNK4llvm13IRBuilderBase28getCurrentFunctionReturnTypeEv", "llvm::IRBuilderBase::getCurrentFunctionReturnType() const"}, + {"_ZN4llvm13IRBuilderBase21getCastedInt8PtrValueEPNS_5ValueE", "llvm::IRBuilderBase::getCastedInt8PtrValue(llvm::Value*)"}, + {"_ZN4llvm13IRBuilderBase12CreateMemSetEPNS_5ValueES2_S2_jbPNS_6MDNodeE", "llvm::IRBuilderBase::CreateMemSet(llvm::Value*, llvm::Value*, llvm::Value*, unsigned int, bool, llvm::MDNode*)"}, + {"_Z16createCallHelperPN4llvm5ValueEPKS1_jPNS_13IRBuilderBaseE", "createCallHelper(llvm::Value*, llvm::Value* const*, unsigned int, llvm::IRBuilderBase*)"}, + {"_ZN4llvm13IRBuilderBase12CreateMemCpyEPNS_5ValueES2_S2_jbPNS_6MDNodeE", "llvm::IRBuilderBase::CreateMemCpy(llvm::Value*, llvm::Value*, llvm::Value*, unsigned int, bool, llvm::MDNode*)"}, + {"_ZN4llvm13IRBuilderBase13CreateMemMoveEPNS_5ValueES2_S2_jbPNS_6MDNodeE", "llvm::IRBuilderBase::CreateMemMove(llvm::Value*, llvm::Value*, llvm::Value*, unsigned int, bool, llvm::MDNode*)"}, + {"_ZN4llvm9InlineAsmD0Ev", "llvm::InlineAsm::~InlineAsm()"}, + {"_ZN4llvm9InlineAsmD1Ev", "llvm::InlineAsm::~InlineAsm()"}, + {"_ZN4llvm9InlineAsmD2Ev", "llvm::InlineAsm::~InlineAsm()"}, + {"_ZN4llvm9InlineAsm3getEPKNS_12FunctionTypeENS_9StringRefES4_bb", "llvm::InlineAsm::get(llvm::FunctionType const*, llvm::StringRef, llvm::StringRef, bool, bool)"}, + + // {"_ZN4llvm9InlineAsmC1EPKNS_11PointerTypeERKSsS5_bb", + // "llvm::InlineAsm::InlineAsm(llvm::PointerType const*, std::string const&, std::string const&, bool, bool)"}, + // "llvm::InlineAsm::InlineAsm(llvm::PointerType const*, std::string const&, std::string const, bool, bool)" was returned + + + // {"_ZN4llvm9InlineAsmC2EPKNS_11PointerTypeERKSsS5_bb", + // "llvm::InlineAsm::InlineAsm(llvm::PointerType const*, std::string const&, std::string const&, bool, bool)"}, + // "llvm::InlineAsm::InlineAsm(llvm::PointerType const*, std::string const&, std::string const, bool, bool)" was returned + + {"_ZN4llvm9InlineAsm15destroyConstantEv", "llvm::InlineAsm::destroyConstant()"}, + {"_ZNK4llvm9InlineAsm15getFunctionTypeEv", "llvm::InlineAsm::getFunctionType() const"}, + {"_ZN4llvm9InlineAsm14ConstraintInfoC1Ev", "llvm::InlineAsm::ConstraintInfo::ConstraintInfo()"}, + {"_ZN4llvm9InlineAsm14ConstraintInfoC2Ev", "llvm::InlineAsm::ConstraintInfo::ConstraintInfo()"}, + {"_ZN4llvm9InlineAsm14ConstraintInfoC1ERKS1_", "llvm::InlineAsm::ConstraintInfo::ConstraintInfo(llvm::InlineAsm::ConstraintInfo const&)"}, + {"_ZN4llvm9InlineAsm14ConstraintInfoC2ERKS1_", "llvm::InlineAsm::ConstraintInfo::ConstraintInfo(llvm::InlineAsm::ConstraintInfo const&)"}, + {"_ZN4llvm9InlineAsm14ConstraintInfo5ParseENS_9StringRefERSt6vectorIS1_SaIS1_EE", "llvm::InlineAsm::ConstraintInfo::Parse(llvm::StringRef, std::vector>&)"}, + {"_ZN4llvm9InlineAsm14ConstraintInfo17selectAlternativeEj", "llvm::InlineAsm::ConstraintInfo::selectAlternative(unsigned int)"}, + {"_ZN4llvm9InlineAsm16ParseConstraintsENS_9StringRefE", "llvm::InlineAsm::ParseConstraints(llvm::StringRef)"}, + {"_ZN4llvm9InlineAsm6VerifyEPKNS_12FunctionTypeENS_9StringRefE", "llvm::InlineAsm::Verify(llvm::FunctionType const*, llvm::StringRef)"}, + {"_ZN4llvm17ConstantUniqueMapINS_16InlineAsmKeyTypeENS_11PointerTypeENS_9InlineAsmELb0EE11getOrCreateEPKS2_RKS1_", "llvm::ConstantUniqueMap::getOrCreate(llvm::PointerType const*, llvm::InlineAsmKeyType const&)"}, + {"_ZNSt6vectorIN4llvm9InlineAsm14ConstraintInfoESaIS2_EE9push_backERKS2_", "std::vector>::push_back(llvm::InlineAsm::ConstraintInfo const&)"}, + {"_ZNSt6vectorIN4llvm9InlineAsm14ConstraintInfoESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::InlineAsm::ConstraintInfo const&)"}, + + // {"_ZNSt15__copy_backwardILb0ESt26random_access_iterator_tagE8__copy_bIPN4llvm9InlineAsm14ConstraintInfoES6_EET0_T_S8_S7_", + // "llvm::InlineAsm::ConstraintInfo* std::__copy_backward::__copy_b(llvm::InlineAsm::ConstraintInfo*, llvm::InlineAsm::ConstraintInfo*, llvm::InlineAsm::ConstraintInfo*)"}, + // got error + + {"_ZNSt6vectorIN4llvm9InlineAsm14ConstraintInfoESaIS2_EE15_M_erase_at_endEPS2_", "std::vector>::_M_erase_at_end(llvm::InlineAsm::ConstraintInfo*)"}, + {"_ZNSt6vectorIN4llvm9InlineAsm17SubConstraintInfoESaIS2_EE15_M_erase_at_endEPS2_", "std::vector>::_M_erase_at_end(llvm::InlineAsm::SubConstraintInfo*)"}, + {"_ZNSt6vectorIN4llvm9InlineAsm17SubConstraintInfoESaIS2_EE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPS2_S4_EEmRKS2_", "std::vector>::_M_fill_insert(__gnu_cxx::__normal_iterator>>, unsigned long, llvm::InlineAsm::SubConstraintInfo const&)"}, + {"_ZNSt6vectorIN4llvm9InlineAsm17SubConstraintInfoESaIS2_EEC2ERKS4_", "std::vector>::vector(std::vector> const&)"}, + + // {"_ZN4llvm17ConstantUniqueMapINS_16InlineAsmKeyTypeENS_11PointerTypeENS_9InlineAsmELb0EE19FindExistingElementEPS3_", + // "llvm::ConstantUniqueMap::FindExistingElement(llvm::InlineAsm*)"}, + // "llvm::ConstantUniqueMap::FindExistingElement(llvm::ConstantUniqueMap*)" was returned + + + // {"_ZN4llvm17ConstantUniqueMapINS_16InlineAsmKeyTypeENS_11PointerTypeENS_9InlineAsmELb0EE6CreateEPKS2_RKS1_St17_Rb_tree_iteratorISt4pairIKSA_IS6_S1_EPS3_EE", + // "llvm::ConstantUniqueMap::Create(llvm::PointerType const*, llvm::InlineAsmKeyType const&, std::_Rb_tree_iterator const, llvm::InlineAsm*>>)"}, + // got error + + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm11PointerTypeENS1_16InlineAsmKeyTypeEES0_IKS6_PNS1_9InlineAsmEESt10_Select1stISA_ESt4lessIS6_ESaISA_EE16_M_insert_uniqueESt17_Rb_tree_iteratorISA_ERKSA_", + // "std::_Rb_tree, std::pair const, llvm::InlineAsm*>, std::_Select1st const, llvm::InlineAsm*>>, std::less>, std::allocator const, llvm::InlineAsm*>>>::_M_insert_unique(std::_Rb_tree_iterator const, llvm::InlineAsm*>>, std::pair const, llvm::InlineAsm*> const&)"}, + // "std::_Rb_tree, std::pair const, llvm::InlineAsm*>, std::_Select1st, std::less>, std::allocator>::_M_insert_unique(std::_Rb_tree_iterator, std::_Select1st const&)" was returned + + {"_ZN4llvm11InstructionC1EPKNS_4TypeEjPNS_3UseEjPS0_", "llvm::Instruction::Instruction(llvm::Type const*, unsigned int, llvm::Use*, unsigned int, llvm::Instruction*)"}, + {"_ZN4llvm11InstructionC2EPKNS_4TypeEjPNS_3UseEjPS0_", "llvm::Instruction::Instruction(llvm::Type const*, unsigned int, llvm::Use*, unsigned int, llvm::Instruction*)"}, + {"_ZN4llvm11InstructionC1EPKNS_4TypeEjPNS_3UseEjPNS_10BasicBlockE", "llvm::Instruction::Instruction(llvm::Type const*, unsigned int, llvm::Use*, unsigned int, llvm::BasicBlock*)"}, + {"_ZN4llvm11InstructionC2EPKNS_4TypeEjPNS_3UseEjPNS_10BasicBlockE", "llvm::Instruction::Instruction(llvm::Type const*, unsigned int, llvm::Use*, unsigned int, llvm::BasicBlock*)"}, + {"_ZN4llvm11InstructionD0Ev", "llvm::Instruction::~Instruction()"}, + {"_ZN4llvm11InstructionD1Ev", "llvm::Instruction::~Instruction()"}, + {"_ZN4llvm11InstructionD2Ev", "llvm::Instruction::~Instruction()"}, + {"_ZN4llvm11Instruction9setParentEPNS_10BasicBlockE", "llvm::Instruction::setParent(llvm::BasicBlock*)"}, + {"_ZN4llvm11Instruction16removeFromParentEv", "llvm::Instruction::removeFromParent()"}, + {"_ZN4llvm11Instruction15eraseFromParentEv", "llvm::Instruction::eraseFromParent()"}, + {"_ZN4llvm11Instruction12insertBeforeEPS0_", "llvm::Instruction::insertBefore(llvm::Instruction*)"}, + {"_ZN4llvm11Instruction11insertAfterEPS0_", "llvm::Instruction::insertAfter(llvm::Instruction*)"}, + {"_ZN4llvm11Instruction10moveBeforeEPS0_", "llvm::Instruction::moveBefore(llvm::Instruction*)"}, + {"_ZN4llvm11Instruction13getOpcodeNameEj", "llvm::Instruction::getOpcodeName(unsigned int)"}, + {"_ZNK4llvm11Instruction13isIdenticalToEPKS0_", "llvm::Instruction::isIdenticalTo(llvm::Instruction const*) const"}, + {"_ZNK4llvm11Instruction24isIdenticalToWhenDefinedEPKS0_", "llvm::Instruction::isIdenticalToWhenDefined(llvm::Instruction const*) const"}, + {"_ZNK4llvm11Instruction17isSameOperationAsEPKS0_", "llvm::Instruction::isSameOperationAs(llvm::Instruction const*) const"}, + {"_ZNK4llvm11Instruction20isUsedOutsideOfBlockEPKNS_10BasicBlockE", "llvm::Instruction::isUsedOutsideOfBlock(llvm::BasicBlock const*) const"}, + {"_ZNK4llvm11Instruction17mayReadFromMemoryEv", "llvm::Instruction::mayReadFromMemory() const"}, + {"_ZNK4llvm11Instruction16mayWriteToMemoryEv", "llvm::Instruction::mayWriteToMemory() const"}, + {"_ZNK4llvm11Instruction8mayThrowEv", "llvm::Instruction::mayThrow() const"}, + {"_ZN4llvm11Instruction13isAssociativeEj", "llvm::Instruction::isAssociative(unsigned int)"}, + {"_ZN4llvm11Instruction13isCommutativeEj", "llvm::Instruction::isCommutative(unsigned int)"}, + {"_ZNK4llvm11Instruction28isSafeToSpeculativelyExecuteEv", "llvm::Instruction::isSafeToSpeculativelyExecute() const"}, + {"_ZNK4llvm11Instruction5cloneEv", "llvm::Instruction::clone() const"}, + {"_ZNK4llvm8CallSite9getCalleeEv", "llvm::CallSite::getCallee() const"}, + {"_ZN4llvm14TerminatorInstD0Ev", "llvm::TerminatorInst::~TerminatorInst()"}, + {"_ZN4llvm14TerminatorInstD1Ev", "llvm::TerminatorInst::~TerminatorInst()"}, + {"_ZN4llvm14TerminatorInstD2Ev", "llvm::TerminatorInst::~TerminatorInst()"}, + {"_ZN4llvm16UnaryInstructionD0Ev", "llvm::UnaryInstruction::~UnaryInstruction()"}, + {"_ZN4llvm16UnaryInstructionD1Ev", "llvm::UnaryInstruction::~UnaryInstruction()"}, + {"_ZN4llvm16UnaryInstructionD2Ev", "llvm::UnaryInstruction::~UnaryInstruction()"}, + {"_ZN4llvm10SelectInst18areInvalidOperandsEPNS_5ValueES2_S2_", "llvm::SelectInst::areInvalidOperands(llvm::Value*, llvm::Value*, llvm::Value*)"}, + {"_ZN4llvm7PHINodeC1ERKS0_", "llvm::PHINode::PHINode(llvm::PHINode const&)"}, + {"_ZN4llvm7PHINodeC2ERKS0_", "llvm::PHINode::PHINode(llvm::PHINode const&)"}, + {"_ZN4llvm7PHINodeD0Ev", "llvm::PHINode::~PHINode()"}, + {"_ZN4llvm7PHINodeD1Ev", "llvm::PHINode::~PHINode()"}, + {"_ZN4llvm7PHINodeD2Ev", "llvm::PHINode::~PHINode()"}, + {"_ZN4llvm7PHINode19removeIncomingValueEjb", "llvm::PHINode::removeIncomingValue(unsigned int, bool)"}, + {"_ZN4llvm7PHINode14resizeOperandsEj", "llvm::PHINode::resizeOperands(unsigned int)"}, + {"_ZNK4llvm7PHINode16hasConstantValueEv", "llvm::PHINode::hasConstantValue() const"}, + {"_ZN4llvm8CallInstD0Ev", "llvm::CallInst::~CallInst()"}, + {"_ZN4llvm8CallInstD1Ev", "llvm::CallInst::~CallInst()"}, + {"_ZN4llvm8CallInstD2Ev", "llvm::CallInst::~CallInst()"}, + {"_ZN4llvm8CallInst4initEPNS_5ValueEPKS2_j", "llvm::CallInst::init(llvm::Value*, llvm::Value* const*, unsigned int)"}, + {"_ZN4llvm8CallInst4initEPNS_5ValueES2_S2_", "llvm::CallInst::init(llvm::Value*, llvm::Value*, llvm::Value*)"}, + {"_ZN4llvm8CallInst4initEPNS_5ValueES2_", "llvm::CallInst::init(llvm::Value*, llvm::Value*)"}, + {"_ZN4llvm8CallInst4initEPNS_5ValueE", "llvm::CallInst::init(llvm::Value*)"}, + {"_ZN4llvm8CallInstC1EPNS_5ValueES2_RKNS_5TwineEPNS_11InstructionE", "llvm::CallInst::CallInst(llvm::Value*, llvm::Value*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm8CallInstC2EPNS_5ValueES2_RKNS_5TwineEPNS_11InstructionE", "llvm::CallInst::CallInst(llvm::Value*, llvm::Value*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm8CallInstC1EPNS_5ValueES2_RKNS_5TwineEPNS_10BasicBlockE", "llvm::CallInst::CallInst(llvm::Value*, llvm::Value*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm8CallInstC2EPNS_5ValueES2_RKNS_5TwineEPNS_10BasicBlockE", "llvm::CallInst::CallInst(llvm::Value*, llvm::Value*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm8CallInstC1EPNS_5ValueERKNS_5TwineEPNS_11InstructionE", "llvm::CallInst::CallInst(llvm::Value*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm8CallInstC2EPNS_5ValueERKNS_5TwineEPNS_11InstructionE", "llvm::CallInst::CallInst(llvm::Value*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm8CallInstC1EPNS_5ValueERKNS_5TwineEPNS_10BasicBlockE", "llvm::CallInst::CallInst(llvm::Value*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm8CallInstC2EPNS_5ValueERKNS_5TwineEPNS_10BasicBlockE", "llvm::CallInst::CallInst(llvm::Value*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm8CallInstC1ERKS0_", "llvm::CallInst::CallInst(llvm::CallInst const&)"}, + {"_ZN4llvm8CallInstC2ERKS0_", "llvm::CallInst::CallInst(llvm::CallInst const&)"}, + {"_ZN4llvm8CallInst12addAttributeEjj", "llvm::CallInst::addAttribute(unsigned int, unsigned int)"}, + {"_ZN4llvm8CallInst15removeAttributeEjj", "llvm::CallInst::removeAttribute(unsigned int, unsigned int)"}, + {"_ZNK4llvm8CallInst12paramHasAttrEjj", "llvm::CallInst::paramHasAttr(unsigned int, unsigned int) const"}, + {"_ZN4llvm8CallInst12CreateMallocEPNS_11InstructionEPKNS_4TypeES5_PNS_5ValueES7_PNS_8FunctionERKNS_5TwineE", "llvm::CallInst::CreateMalloc(llvm::Instruction*, llvm::Type const*, llvm::Type const*, llvm::Value*, llvm::Value*, llvm::Function*, llvm::Twine const&)"}, + {"_Z12createMallocPN4llvm11InstructionEPNS_10BasicBlockEPKNS_4TypeES6_PNS_5ValueES8_PNS_8FunctionERKNS_5TwineE", "createMalloc(llvm::Instruction*, llvm::BasicBlock*, llvm::Type const*, llvm::Type const*, llvm::Value*, llvm::Value*, llvm::Function*, llvm::Twine const&)"}, + {"_ZN4llvm8CallInst12CreateMallocEPNS_10BasicBlockEPKNS_4TypeES5_PNS_5ValueES7_PNS_8FunctionERKNS_5TwineE", "llvm::CallInst::CreateMalloc(llvm::BasicBlock*, llvm::Type const*, llvm::Type const*, llvm::Value*, llvm::Value*, llvm::Function*, llvm::Twine const&)"}, + {"_ZN4llvm8CallInst10CreateFreeEPNS_5ValueEPNS_11InstructionE", "llvm::CallInst::CreateFree(llvm::Value*, llvm::Instruction*)"}, + {"_Z10createFreePN4llvm5ValueEPNS_11InstructionEPNS_10BasicBlockE", "createFree(llvm::Value*, llvm::Instruction*, llvm::BasicBlock*)"}, + {"_ZN4llvm8CallInst10CreateFreeEPNS_5ValueEPNS_10BasicBlockE", "llvm::CallInst::CreateFree(llvm::Value*, llvm::BasicBlock*)"}, + {"_ZN4llvm10InvokeInst4initEPNS_5ValueEPNS_10BasicBlockES4_PKS2_j", "llvm::InvokeInst::init(llvm::Value*, llvm::BasicBlock*, llvm::BasicBlock*, llvm::Value* const*, unsigned int)"}, + {"_ZN4llvm10InvokeInstC1ERKS0_", "llvm::InvokeInst::InvokeInst(llvm::InvokeInst const&)"}, + {"_ZN4llvm10InvokeInstC2ERKS0_", "llvm::InvokeInst::InvokeInst(llvm::InvokeInst const&)"}, + {"_ZNK4llvm10InvokeInst13getSuccessorVEj", "llvm::InvokeInst::getSuccessorV(unsigned int) const"}, + {"_ZNK4llvm10InvokeInst17getNumSuccessorsVEv", "llvm::InvokeInst::getNumSuccessorsV() const"}, + {"_ZN4llvm10InvokeInst13setSuccessorVEjPNS_10BasicBlockE", "llvm::InvokeInst::setSuccessorV(unsigned int, llvm::BasicBlock*)"}, + {"_ZNK4llvm10InvokeInst12paramHasAttrEjj", "llvm::InvokeInst::paramHasAttr(unsigned int, unsigned int) const"}, + {"_ZN4llvm10InvokeInst12addAttributeEjj", "llvm::InvokeInst::addAttribute(unsigned int, unsigned int)"}, + {"_ZN4llvm10InvokeInst15removeAttributeEjj", "llvm::InvokeInst::removeAttribute(unsigned int, unsigned int)"}, + {"_ZN4llvm10ReturnInstC1ERKS0_", "llvm::ReturnInst::ReturnInst(llvm::ReturnInst const&)"}, + {"_ZN4llvm10ReturnInstC2ERKS0_", "llvm::ReturnInst::ReturnInst(llvm::ReturnInst const&)"}, + {"_ZN4llvm10ReturnInstC1ERNS_11LLVMContextEPNS_5ValueEPNS_11InstructionE", "llvm::ReturnInst::ReturnInst(llvm::LLVMContext&, llvm::Value*, llvm::Instruction*)"}, + {"_ZN4llvm10ReturnInstC2ERNS_11LLVMContextEPNS_5ValueEPNS_11InstructionE", "llvm::ReturnInst::ReturnInst(llvm::LLVMContext&, llvm::Value*, llvm::Instruction*)"}, + {"_ZN4llvm10ReturnInstC1ERNS_11LLVMContextEPNS_5ValueEPNS_10BasicBlockE", "llvm::ReturnInst::ReturnInst(llvm::LLVMContext&, llvm::Value*, llvm::BasicBlock*)"}, + {"_ZN4llvm10ReturnInstC2ERNS_11LLVMContextEPNS_5ValueEPNS_10BasicBlockE", "llvm::ReturnInst::ReturnInst(llvm::LLVMContext&, llvm::Value*, llvm::BasicBlock*)"}, + {"_ZN4llvm10ReturnInstC1ERNS_11LLVMContextEPNS_10BasicBlockE", "llvm::ReturnInst::ReturnInst(llvm::LLVMContext&, llvm::BasicBlock*)"}, + {"_ZN4llvm10ReturnInstC2ERNS_11LLVMContextEPNS_10BasicBlockE", "llvm::ReturnInst::ReturnInst(llvm::LLVMContext&, llvm::BasicBlock*)"}, + {"_ZNK4llvm10ReturnInst17getNumSuccessorsVEv", "llvm::ReturnInst::getNumSuccessorsV() const"}, + {"_ZN4llvm10ReturnInst13setSuccessorVEjPNS_10BasicBlockE", "llvm::ReturnInst::setSuccessorV(unsigned int, llvm::BasicBlock*)"}, + {"_ZNK4llvm10ReturnInst13getSuccessorVEj", "llvm::ReturnInst::getSuccessorV(unsigned int) const"}, + {"_ZN4llvm10ReturnInstD0Ev", "llvm::ReturnInst::~ReturnInst()"}, + {"_ZN4llvm10ReturnInstD1Ev", "llvm::ReturnInst::~ReturnInst()"}, + {"_ZN4llvm10ReturnInstD2Ev", "llvm::ReturnInst::~ReturnInst()"}, + {"_ZN4llvm10UnwindInstC1ERNS_11LLVMContextEPNS_11InstructionE", "llvm::UnwindInst::UnwindInst(llvm::LLVMContext&, llvm::Instruction*)"}, + {"_ZN4llvm10UnwindInstC2ERNS_11LLVMContextEPNS_11InstructionE", "llvm::UnwindInst::UnwindInst(llvm::LLVMContext&, llvm::Instruction*)"}, + {"_ZN4llvm10UnwindInstC1ERNS_11LLVMContextEPNS_10BasicBlockE", "llvm::UnwindInst::UnwindInst(llvm::LLVMContext&, llvm::BasicBlock*)"}, + {"_ZN4llvm10UnwindInstC2ERNS_11LLVMContextEPNS_10BasicBlockE", "llvm::UnwindInst::UnwindInst(llvm::LLVMContext&, llvm::BasicBlock*)"}, + {"_ZNK4llvm10UnwindInst17getNumSuccessorsVEv", "llvm::UnwindInst::getNumSuccessorsV() const"}, + {"_ZN4llvm10UnwindInst13setSuccessorVEjPNS_10BasicBlockE", "llvm::UnwindInst::setSuccessorV(unsigned int, llvm::BasicBlock*)"}, + {"_ZNK4llvm10UnwindInst13getSuccessorVEj", "llvm::UnwindInst::getSuccessorV(unsigned int) const"}, + {"_ZN4llvm15UnreachableInstC1ERNS_11LLVMContextEPNS_11InstructionE", "llvm::UnreachableInst::UnreachableInst(llvm::LLVMContext&, llvm::Instruction*)"}, + {"_ZN4llvm15UnreachableInstC2ERNS_11LLVMContextEPNS_11InstructionE", "llvm::UnreachableInst::UnreachableInst(llvm::LLVMContext&, llvm::Instruction*)"}, + {"_ZN4llvm15UnreachableInstC1ERNS_11LLVMContextEPNS_10BasicBlockE", "llvm::UnreachableInst::UnreachableInst(llvm::LLVMContext&, llvm::BasicBlock*)"}, + {"_ZN4llvm15UnreachableInstC2ERNS_11LLVMContextEPNS_10BasicBlockE", "llvm::UnreachableInst::UnreachableInst(llvm::LLVMContext&, llvm::BasicBlock*)"}, + {"_ZNK4llvm15UnreachableInst17getNumSuccessorsVEv", "llvm::UnreachableInst::getNumSuccessorsV() const"}, + {"_ZN4llvm15UnreachableInst13setSuccessorVEjPNS_10BasicBlockE", "llvm::UnreachableInst::setSuccessorV(unsigned int, llvm::BasicBlock*)"}, + {"_ZNK4llvm15UnreachableInst13getSuccessorVEj", "llvm::UnreachableInst::getSuccessorV(unsigned int) const"}, + {"_ZN4llvm10BranchInst8AssertOKEv", "llvm::BranchInst::AssertOK()"}, + {"_ZN4llvm10BranchInstC1EPNS_10BasicBlockEPNS_11InstructionE", "llvm::BranchInst::BranchInst(llvm::BasicBlock*, llvm::Instruction*)"}, + {"_ZN4llvm10BranchInstC2EPNS_10BasicBlockEPNS_11InstructionE", "llvm::BranchInst::BranchInst(llvm::BasicBlock*, llvm::Instruction*)"}, + {"_ZN4llvm10BranchInstC1EPNS_10BasicBlockES2_PNS_5ValueEPNS_11InstructionE", "llvm::BranchInst::BranchInst(llvm::BasicBlock*, llvm::BasicBlock*, llvm::Value*, llvm::Instruction*)"}, + {"_ZN4llvm10BranchInstC2EPNS_10BasicBlockES2_PNS_5ValueEPNS_11InstructionE", "llvm::BranchInst::BranchInst(llvm::BasicBlock*, llvm::BasicBlock*, llvm::Value*, llvm::Instruction*)"}, + {"_ZN4llvm10BranchInstC1EPNS_10BasicBlockES2_", "llvm::BranchInst::BranchInst(llvm::BasicBlock*, llvm::BasicBlock*)"}, + {"_ZN4llvm10BranchInstC2EPNS_10BasicBlockES2_", "llvm::BranchInst::BranchInst(llvm::BasicBlock*, llvm::BasicBlock*)"}, + {"_ZN4llvm10BranchInstC1EPNS_10BasicBlockES2_PNS_5ValueES2_", "llvm::BranchInst::BranchInst(llvm::BasicBlock*, llvm::BasicBlock*, llvm::Value*, llvm::BasicBlock*)"}, + {"_ZN4llvm10BranchInstC2EPNS_10BasicBlockES2_PNS_5ValueES2_", "llvm::BranchInst::BranchInst(llvm::BasicBlock*, llvm::BasicBlock*, llvm::Value*, llvm::BasicBlock*)"}, + {"_ZN4llvm10BranchInstC1ERKS0_", "llvm::BranchInst::BranchInst(llvm::BranchInst const&)"}, + {"_ZN4llvm10BranchInstC2ERKS0_", "llvm::BranchInst::BranchInst(llvm::BranchInst const&)"}, + {"_ZNK4llvm10BranchInst13getSuccessorVEj", "llvm::BranchInst::getSuccessorV(unsigned int) const"}, + {"_ZNK4llvm10BranchInst17getNumSuccessorsVEv", "llvm::BranchInst::getNumSuccessorsV() const"}, + {"_ZN4llvm10BranchInst13setSuccessorVEjPNS_10BasicBlockE", "llvm::BranchInst::setSuccessorV(unsigned int, llvm::BasicBlock*)"}, + {"_ZN4llvm10AllocaInstC1EPKNS_4TypeEPNS_5ValueERKNS_5TwineEPNS_11InstructionE", "llvm::AllocaInst::AllocaInst(llvm::Type const*, llvm::Value*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm10AllocaInstC2EPKNS_4TypeEPNS_5ValueERKNS_5TwineEPNS_11InstructionE", "llvm::AllocaInst::AllocaInst(llvm::Type const*, llvm::Value*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm10AllocaInst12setAlignmentEj", "llvm::AllocaInst::setAlignment(unsigned int)"}, + {"_ZN4llvm10AllocaInstC1EPKNS_4TypeEPNS_5ValueERKNS_5TwineEPNS_10BasicBlockE", "llvm::AllocaInst::AllocaInst(llvm::Type const*, llvm::Value*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm10AllocaInstC2EPKNS_4TypeEPNS_5ValueERKNS_5TwineEPNS_10BasicBlockE", "llvm::AllocaInst::AllocaInst(llvm::Type const*, llvm::Value*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm10AllocaInstC1EPKNS_4TypeERKNS_5TwineEPNS_11InstructionE", "llvm::AllocaInst::AllocaInst(llvm::Type const*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm10AllocaInstC2EPKNS_4TypeERKNS_5TwineEPNS_11InstructionE", "llvm::AllocaInst::AllocaInst(llvm::Type const*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm10AllocaInstC1EPKNS_4TypeERKNS_5TwineEPNS_10BasicBlockE", "llvm::AllocaInst::AllocaInst(llvm::Type const*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm10AllocaInstC2EPKNS_4TypeERKNS_5TwineEPNS_10BasicBlockE", "llvm::AllocaInst::AllocaInst(llvm::Type const*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm10AllocaInstC1EPKNS_4TypeEPNS_5ValueEjRKNS_5TwineEPNS_11InstructionE", "llvm::AllocaInst::AllocaInst(llvm::Type const*, llvm::Value*, unsigned int, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm10AllocaInstC2EPKNS_4TypeEPNS_5ValueEjRKNS_5TwineEPNS_11InstructionE", "llvm::AllocaInst::AllocaInst(llvm::Type const*, llvm::Value*, unsigned int, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm10AllocaInstC1EPKNS_4TypeEPNS_5ValueEjRKNS_5TwineEPNS_10BasicBlockE", "llvm::AllocaInst::AllocaInst(llvm::Type const*, llvm::Value*, unsigned int, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm10AllocaInstC2EPKNS_4TypeEPNS_5ValueEjRKNS_5TwineEPNS_10BasicBlockE", "llvm::AllocaInst::AllocaInst(llvm::Type const*, llvm::Value*, unsigned int, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm10AllocaInstD0Ev", "llvm::AllocaInst::~AllocaInst()"}, + {"_ZN4llvm10AllocaInstD1Ev", "llvm::AllocaInst::~AllocaInst()"}, + {"_ZN4llvm10AllocaInstD2Ev", "llvm::AllocaInst::~AllocaInst()"}, + {"_ZNK4llvm10AllocaInst17isArrayAllocationEv", "llvm::AllocaInst::isArrayAllocation() const"}, + {"_ZNK4llvm10AllocaInst16getAllocatedTypeEv", "llvm::AllocaInst::getAllocatedType() const"}, + {"_ZNK4llvm10AllocaInst14isStaticAllocaEv", "llvm::AllocaInst::isStaticAlloca() const"}, + {"_ZN4llvm8LoadInst8AssertOKEv", "llvm::LoadInst::AssertOK()"}, + {"_ZN4llvm8LoadInstC1EPNS_5ValueERKNS_5TwineEPNS_11InstructionE", "llvm::LoadInst::LoadInst(llvm::Value*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm8LoadInstC2EPNS_5ValueERKNS_5TwineEPNS_11InstructionE", "llvm::LoadInst::LoadInst(llvm::Value*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm8LoadInst12setAlignmentEj", "llvm::LoadInst::setAlignment(unsigned int)"}, + {"_ZN4llvm8LoadInstC1EPNS_5ValueERKNS_5TwineEPNS_10BasicBlockE", "llvm::LoadInst::LoadInst(llvm::Value*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm8LoadInstC2EPNS_5ValueERKNS_5TwineEPNS_10BasicBlockE", "llvm::LoadInst::LoadInst(llvm::Value*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm8LoadInstC1EPNS_5ValueERKNS_5TwineEbPNS_11InstructionE", "llvm::LoadInst::LoadInst(llvm::Value*, llvm::Twine const&, bool, llvm::Instruction*)"}, + {"_ZN4llvm8LoadInstC2EPNS_5ValueERKNS_5TwineEbPNS_11InstructionE", "llvm::LoadInst::LoadInst(llvm::Value*, llvm::Twine const&, bool, llvm::Instruction*)"}, + {"_ZN4llvm8LoadInstC1EPNS_5ValueERKNS_5TwineEbjPNS_11InstructionE", "llvm::LoadInst::LoadInst(llvm::Value*, llvm::Twine const&, bool, unsigned int, llvm::Instruction*)"}, + {"_ZN4llvm8LoadInstC2EPNS_5ValueERKNS_5TwineEbjPNS_11InstructionE", "llvm::LoadInst::LoadInst(llvm::Value*, llvm::Twine const&, bool, unsigned int, llvm::Instruction*)"}, + {"_ZN4llvm8LoadInstC1EPNS_5ValueERKNS_5TwineEbjPNS_10BasicBlockE", "llvm::LoadInst::LoadInst(llvm::Value*, llvm::Twine const&, bool, unsigned int, llvm::BasicBlock*)"}, + {"_ZN4llvm8LoadInstC2EPNS_5ValueERKNS_5TwineEbjPNS_10BasicBlockE", "llvm::LoadInst::LoadInst(llvm::Value*, llvm::Twine const&, bool, unsigned int, llvm::BasicBlock*)"}, + {"_ZN4llvm8LoadInstC1EPNS_5ValueERKNS_5TwineEbPNS_10BasicBlockE", "llvm::LoadInst::LoadInst(llvm::Value*, llvm::Twine const&, bool, llvm::BasicBlock*)"}, + {"_ZN4llvm8LoadInstC2EPNS_5ValueERKNS_5TwineEbPNS_10BasicBlockE", "llvm::LoadInst::LoadInst(llvm::Value*, llvm::Twine const&, bool, llvm::BasicBlock*)"}, + {"_ZN4llvm8LoadInstC1EPNS_5ValueEPKcPNS_11InstructionE", "llvm::LoadInst::LoadInst(llvm::Value*, char const*, llvm::Instruction*)"}, + {"_ZN4llvm8LoadInstC2EPNS_5ValueEPKcPNS_11InstructionE", "llvm::LoadInst::LoadInst(llvm::Value*, char const*, llvm::Instruction*)"}, + {"_ZN4llvm8LoadInstC1EPNS_5ValueEPKcPNS_10BasicBlockE", "llvm::LoadInst::LoadInst(llvm::Value*, char const*, llvm::BasicBlock*)"}, + {"_ZN4llvm8LoadInstC2EPNS_5ValueEPKcPNS_10BasicBlockE", "llvm::LoadInst::LoadInst(llvm::Value*, char const*, llvm::BasicBlock*)"}, + {"_ZN4llvm8LoadInstC1EPNS_5ValueEPKcbPNS_11InstructionE", "llvm::LoadInst::LoadInst(llvm::Value*, char const*, bool, llvm::Instruction*)"}, + {"_ZN4llvm8LoadInstC2EPNS_5ValueEPKcbPNS_11InstructionE", "llvm::LoadInst::LoadInst(llvm::Value*, char const*, bool, llvm::Instruction*)"}, + {"_ZN4llvm8LoadInstC1EPNS_5ValueEPKcbPNS_10BasicBlockE", "llvm::LoadInst::LoadInst(llvm::Value*, char const*, bool, llvm::BasicBlock*)"}, + {"_ZN4llvm8LoadInstC2EPNS_5ValueEPKcbPNS_10BasicBlockE", "llvm::LoadInst::LoadInst(llvm::Value*, char const*, bool, llvm::BasicBlock*)"}, + {"_ZN4llvm9StoreInst8AssertOKEv", "llvm::StoreInst::AssertOK()"}, + {"_ZN4llvm9StoreInstC1EPNS_5ValueES2_PNS_11InstructionE", "llvm::StoreInst::StoreInst(llvm::Value*, llvm::Value*, llvm::Instruction*)"}, + {"_ZN4llvm9StoreInstC2EPNS_5ValueES2_PNS_11InstructionE", "llvm::StoreInst::StoreInst(llvm::Value*, llvm::Value*, llvm::Instruction*)"}, + {"_ZN4llvm9StoreInst12setAlignmentEj", "llvm::StoreInst::setAlignment(unsigned int)"}, + {"_ZN4llvm9StoreInstC1EPNS_5ValueES2_PNS_10BasicBlockE", "llvm::StoreInst::StoreInst(llvm::Value*, llvm::Value*, llvm::BasicBlock*)"}, + {"_ZN4llvm9StoreInstC2EPNS_5ValueES2_PNS_10BasicBlockE", "llvm::StoreInst::StoreInst(llvm::Value*, llvm::Value*, llvm::BasicBlock*)"}, + {"_ZN4llvm9StoreInstC1EPNS_5ValueES2_bPNS_11InstructionE", "llvm::StoreInst::StoreInst(llvm::Value*, llvm::Value*, bool, llvm::Instruction*)"}, + {"_ZN4llvm9StoreInstC2EPNS_5ValueES2_bPNS_11InstructionE", "llvm::StoreInst::StoreInst(llvm::Value*, llvm::Value*, bool, llvm::Instruction*)"}, + {"_ZN4llvm9StoreInstC1EPNS_5ValueES2_bjPNS_11InstructionE", "llvm::StoreInst::StoreInst(llvm::Value*, llvm::Value*, bool, unsigned int, llvm::Instruction*)"}, + {"_ZN4llvm9StoreInstC2EPNS_5ValueES2_bjPNS_11InstructionE", "llvm::StoreInst::StoreInst(llvm::Value*, llvm::Value*, bool, unsigned int, llvm::Instruction*)"}, + {"_ZN4llvm9StoreInstC1EPNS_5ValueES2_bjPNS_10BasicBlockE", "llvm::StoreInst::StoreInst(llvm::Value*, llvm::Value*, bool, unsigned int, llvm::BasicBlock*)"}, + {"_ZN4llvm9StoreInstC2EPNS_5ValueES2_bjPNS_10BasicBlockE", "llvm::StoreInst::StoreInst(llvm::Value*, llvm::Value*, bool, unsigned int, llvm::BasicBlock*)"}, + {"_ZN4llvm9StoreInstC1EPNS_5ValueES2_bPNS_10BasicBlockE", "llvm::StoreInst::StoreInst(llvm::Value*, llvm::Value*, bool, llvm::BasicBlock*)"}, + {"_ZN4llvm9StoreInstC2EPNS_5ValueES2_bPNS_10BasicBlockE", "llvm::StoreInst::StoreInst(llvm::Value*, llvm::Value*, bool, llvm::BasicBlock*)"}, + {"_ZN4llvm17GetElementPtrInst4initEPNS_5ValueEPKS2_jRKNS_5TwineE", "llvm::GetElementPtrInst::init(llvm::Value*, llvm::Value* const*, unsigned int, llvm::Twine const&)"}, + {"_ZN4llvm17GetElementPtrInst4initEPNS_5ValueES2_RKNS_5TwineE", "llvm::GetElementPtrInst::init(llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm17GetElementPtrInstC1ERKS0_", "llvm::GetElementPtrInst::GetElementPtrInst(llvm::GetElementPtrInst const&)"}, + {"_ZN4llvm17GetElementPtrInstC2ERKS0_", "llvm::GetElementPtrInst::GetElementPtrInst(llvm::GetElementPtrInst const&)"}, + {"_ZN4llvm17GetElementPtrInstC1EPNS_5ValueES2_RKNS_5TwineEPNS_11InstructionE", "llvm::GetElementPtrInst::GetElementPtrInst(llvm::Value*, llvm::Value*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm17GetElementPtrInstC2EPNS_5ValueES2_RKNS_5TwineEPNS_11InstructionE", "llvm::GetElementPtrInst::GetElementPtrInst(llvm::Value*, llvm::Value*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm17GetElementPtrInst14getIndexedTypeEPKNS_4TypeEPNS_5ValueE", "llvm::GetElementPtrInst::getIndexedType(llvm::Type const*, llvm::Value*)"}, + {"_ZN4llvm17GetElementPtrInstC1EPNS_5ValueES2_RKNS_5TwineEPNS_10BasicBlockE", "llvm::GetElementPtrInst::GetElementPtrInst(llvm::Value*, llvm::Value*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm17GetElementPtrInstC2EPNS_5ValueES2_RKNS_5TwineEPNS_10BasicBlockE", "llvm::GetElementPtrInst::GetElementPtrInst(llvm::Value*, llvm::Value*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm17GetElementPtrInst14getIndexedTypeEPKNS_4TypeEPKPNS_5ValueEj", "llvm::GetElementPtrInst::getIndexedType(llvm::Type const*, llvm::Value* const*, unsigned int)"}, + {"_ZN4llvm17GetElementPtrInst14getIndexedTypeEPKNS_4TypeEPKPNS_8ConstantEj", "llvm::GetElementPtrInst::getIndexedType(llvm::Type const*, llvm::Constant* const*, unsigned int)"}, + {"_ZN4llvm17GetElementPtrInst14getIndexedTypeEPKNS_4TypeEPKyj", "llvm::GetElementPtrInst::getIndexedType(llvm::Type const*, unsigned long long const*, unsigned int)"}, + {"_ZNK4llvm17GetElementPtrInst17hasAllZeroIndicesEv", "llvm::GetElementPtrInst::hasAllZeroIndices() const"}, + {"_ZNK4llvm17GetElementPtrInst21hasAllConstantIndicesEv", "llvm::GetElementPtrInst::hasAllConstantIndices() const"}, + {"_ZN4llvm17GetElementPtrInst13setIsInBoundsEb", "llvm::GetElementPtrInst::setIsInBounds(bool)"}, + {"_ZNK4llvm17GetElementPtrInst10isInBoundsEv", "llvm::GetElementPtrInst::isInBounds() const"}, + {"_ZN4llvm18ExtractElementInstC1EPNS_5ValueES2_RKNS_5TwineEPNS_11InstructionE", "llvm::ExtractElementInst::ExtractElementInst(llvm::Value*, llvm::Value*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm18ExtractElementInstC2EPNS_5ValueES2_RKNS_5TwineEPNS_11InstructionE", "llvm::ExtractElementInst::ExtractElementInst(llvm::Value*, llvm::Value*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm18ExtractElementInstC1EPNS_5ValueES2_RKNS_5TwineEPNS_10BasicBlockE", "llvm::ExtractElementInst::ExtractElementInst(llvm::Value*, llvm::Value*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm18ExtractElementInstC2EPNS_5ValueES2_RKNS_5TwineEPNS_10BasicBlockE", "llvm::ExtractElementInst::ExtractElementInst(llvm::Value*, llvm::Value*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm18ExtractElementInst15isValidOperandsEPKNS_5ValueES3_", "llvm::ExtractElementInst::isValidOperands(llvm::Value const*, llvm::Value const*)"}, + {"_ZN4llvm17InsertElementInstC1EPNS_5ValueES2_S2_RKNS_5TwineEPNS_11InstructionE", "llvm::InsertElementInst::InsertElementInst(llvm::Value*, llvm::Value*, llvm::Value*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm17InsertElementInstC2EPNS_5ValueES2_S2_RKNS_5TwineEPNS_11InstructionE", "llvm::InsertElementInst::InsertElementInst(llvm::Value*, llvm::Value*, llvm::Value*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm17InsertElementInstC1EPNS_5ValueES2_S2_RKNS_5TwineEPNS_10BasicBlockE", "llvm::InsertElementInst::InsertElementInst(llvm::Value*, llvm::Value*, llvm::Value*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm17InsertElementInstC2EPNS_5ValueES2_S2_RKNS_5TwineEPNS_10BasicBlockE", "llvm::InsertElementInst::InsertElementInst(llvm::Value*, llvm::Value*, llvm::Value*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm17InsertElementInst15isValidOperandsEPKNS_5ValueES3_S3_", "llvm::InsertElementInst::isValidOperands(llvm::Value const*, llvm::Value const*, llvm::Value const*)"}, + {"_ZN4llvm17ShuffleVectorInstC1EPNS_5ValueES2_S2_RKNS_5TwineEPNS_11InstructionE", "llvm::ShuffleVectorInst::ShuffleVectorInst(llvm::Value*, llvm::Value*, llvm::Value*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm17ShuffleVectorInstC2EPNS_5ValueES2_S2_RKNS_5TwineEPNS_11InstructionE", "llvm::ShuffleVectorInst::ShuffleVectorInst(llvm::Value*, llvm::Value*, llvm::Value*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm17ShuffleVectorInstC1EPNS_5ValueES2_S2_RKNS_5TwineEPNS_10BasicBlockE", "llvm::ShuffleVectorInst::ShuffleVectorInst(llvm::Value*, llvm::Value*, llvm::Value*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm17ShuffleVectorInstC2EPNS_5ValueES2_S2_RKNS_5TwineEPNS_10BasicBlockE", "llvm::ShuffleVectorInst::ShuffleVectorInst(llvm::Value*, llvm::Value*, llvm::Value*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm17ShuffleVectorInst15isValidOperandsEPKNS_5ValueES3_S3_", "llvm::ShuffleVectorInst::isValidOperands(llvm::Value const*, llvm::Value const*, llvm::Value const*)"}, + {"_ZNK4llvm17ShuffleVectorInst12getMaskValueEj", "llvm::ShuffleVectorInst::getMaskValue(unsigned int) const"}, + {"_ZN4llvm15InsertValueInst4initEPNS_5ValueES2_PKjjRKNS_5TwineE", "llvm::InsertValueInst::init(llvm::Value*, llvm::Value*, unsigned int const*, unsigned int, llvm::Twine const&)"}, + {"_ZN4llvm15InsertValueInst4initEPNS_5ValueES2_jRKNS_5TwineE", "llvm::InsertValueInst::init(llvm::Value*, llvm::Value*, unsigned int, llvm::Twine const&)"}, + {"_ZN4llvm15InsertValueInstC1ERKS0_", "llvm::InsertValueInst::InsertValueInst(llvm::InsertValueInst const&)"}, + {"_ZN4llvm15InsertValueInstC2ERKS0_", "llvm::InsertValueInst::InsertValueInst(llvm::InsertValueInst const&)"}, + {"_ZN4llvm15InsertValueInstC1EPNS_5ValueES2_jRKNS_5TwineEPNS_11InstructionE", "llvm::InsertValueInst::InsertValueInst(llvm::Value*, llvm::Value*, unsigned int, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm15InsertValueInstC2EPNS_5ValueES2_jRKNS_5TwineEPNS_11InstructionE", "llvm::InsertValueInst::InsertValueInst(llvm::Value*, llvm::Value*, unsigned int, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm15InsertValueInstC1EPNS_5ValueES2_jRKNS_5TwineEPNS_10BasicBlockE", "llvm::InsertValueInst::InsertValueInst(llvm::Value*, llvm::Value*, unsigned int, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm15InsertValueInstC2EPNS_5ValueES2_jRKNS_5TwineEPNS_10BasicBlockE", "llvm::InsertValueInst::InsertValueInst(llvm::Value*, llvm::Value*, unsigned int, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm16ExtractValueInst4initEPKjjRKNS_5TwineE", "llvm::ExtractValueInst::init(unsigned int const*, unsigned int, llvm::Twine const&)"}, + {"_ZN4llvm16ExtractValueInst4initEjRKNS_5TwineE", "llvm::ExtractValueInst::init(unsigned int, llvm::Twine const&)"}, + {"_ZN4llvm16ExtractValueInstC1ERKS0_", "llvm::ExtractValueInst::ExtractValueInst(llvm::ExtractValueInst const&)"}, + {"_ZN4llvm16ExtractValueInstC2ERKS0_", "llvm::ExtractValueInst::ExtractValueInst(llvm::ExtractValueInst const&)"}, + {"_ZN4llvm16ExtractValueInst14getIndexedTypeEPKNS_4TypeEPKjj", "llvm::ExtractValueInst::getIndexedType(llvm::Type const*, unsigned int const*, unsigned int)"}, + {"_ZN4llvm16ExtractValueInst14getIndexedTypeEPKNS_4TypeEj", "llvm::ExtractValueInst::getIndexedType(llvm::Type const*, unsigned int)"}, + {"_ZN4llvm14BinaryOperatorC1ENS_11Instruction9BinaryOpsEPNS_5ValueES4_PKNS_4TypeERKNS_5TwineEPS1_", "llvm::BinaryOperator::BinaryOperator(llvm::Instruction::BinaryOps, llvm::Value*, llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm14BinaryOperatorC2ENS_11Instruction9BinaryOpsEPNS_5ValueES4_PKNS_4TypeERKNS_5TwineEPS1_", "llvm::BinaryOperator::BinaryOperator(llvm::Instruction::BinaryOps, llvm::Value*, llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm14BinaryOperator4initENS_11Instruction9BinaryOpsE", "llvm::BinaryOperator::init(llvm::Instruction::BinaryOps)"}, + {"_ZN4llvm14BinaryOperatorC1ENS_11Instruction9BinaryOpsEPNS_5ValueES4_PKNS_4TypeERKNS_5TwineEPNS_10BasicBlockE", "llvm::BinaryOperator::BinaryOperator(llvm::Instruction::BinaryOps, llvm::Value*, llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm14BinaryOperatorC2ENS_11Instruction9BinaryOpsEPNS_5ValueES4_PKNS_4TypeERKNS_5TwineEPNS_10BasicBlockE", "llvm::BinaryOperator::BinaryOperator(llvm::Instruction::BinaryOps, llvm::Value*, llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm14BinaryOperator6CreateENS_11Instruction9BinaryOpsEPNS_5ValueES4_RKNS_5TwineEPS1_", "llvm::BinaryOperator::Create(llvm::Instruction::BinaryOps, llvm::Value*, llvm::Value*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm14BinaryOperator6CreateENS_11Instruction9BinaryOpsEPNS_5ValueES4_RKNS_5TwineEPNS_10BasicBlockE", "llvm::BinaryOperator::Create(llvm::Instruction::BinaryOps, llvm::Value*, llvm::Value*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm14BinaryOperator9CreateNegEPNS_5ValueERKNS_5TwineEPNS_11InstructionE", "llvm::BinaryOperator::CreateNeg(llvm::Value*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm14BinaryOperator9CreateNegEPNS_5ValueERKNS_5TwineEPNS_10BasicBlockE", "llvm::BinaryOperator::CreateNeg(llvm::Value*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm14BinaryOperator12CreateNSWNegEPNS_5ValueERKNS_5TwineEPNS_11InstructionE", "llvm::BinaryOperator::CreateNSWNeg(llvm::Value*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm14BinaryOperator12CreateNSWNegEPNS_5ValueERKNS_5TwineEPNS_10BasicBlockE", "llvm::BinaryOperator::CreateNSWNeg(llvm::Value*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm14BinaryOperator12CreateNUWNegEPNS_5ValueERKNS_5TwineEPNS_11InstructionE", "llvm::BinaryOperator::CreateNUWNeg(llvm::Value*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm14BinaryOperator12CreateNUWNegEPNS_5ValueERKNS_5TwineEPNS_10BasicBlockE", "llvm::BinaryOperator::CreateNUWNeg(llvm::Value*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm14BinaryOperator10CreateFNegEPNS_5ValueERKNS_5TwineEPNS_11InstructionE", "llvm::BinaryOperator::CreateFNeg(llvm::Value*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm14BinaryOperator10CreateFNegEPNS_5ValueERKNS_5TwineEPNS_10BasicBlockE", "llvm::BinaryOperator::CreateFNeg(llvm::Value*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm14BinaryOperator9CreateNotEPNS_5ValueERKNS_5TwineEPNS_11InstructionE", "llvm::BinaryOperator::CreateNot(llvm::Value*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm14BinaryOperator9CreateNotEPNS_5ValueERKNS_5TwineEPNS_10BasicBlockE", "llvm::BinaryOperator::CreateNot(llvm::Value*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm14BinaryOperator5isNegEPKNS_5ValueE", "llvm::BinaryOperator::isNeg(llvm::Value const*)"}, + {"_ZN4llvm14BinaryOperator6isFNegEPKNS_5ValueE", "llvm::BinaryOperator::isFNeg(llvm::Value const*)"}, + {"_ZN4llvm14BinaryOperator5isNotEPKNS_5ValueE", "llvm::BinaryOperator::isNot(llvm::Value const*)"}, + {"_ZN4llvm14BinaryOperator14getNegArgumentEPNS_5ValueE", "llvm::BinaryOperator::getNegArgument(llvm::Value*)"}, + {"_ZN4llvm14BinaryOperator14getNegArgumentEPKNS_5ValueE", "llvm::BinaryOperator::getNegArgument(llvm::Value const*)"}, + {"_ZN4llvm14BinaryOperator15getFNegArgumentEPNS_5ValueE", "llvm::BinaryOperator::getFNegArgument(llvm::Value*)"}, + {"_ZN4llvm14BinaryOperator15getFNegArgumentEPKNS_5ValueE", "llvm::BinaryOperator::getFNegArgument(llvm::Value const*)"}, + {"_ZN4llvm14BinaryOperator14getNotArgumentEPNS_5ValueE", "llvm::BinaryOperator::getNotArgument(llvm::Value*)"}, + {"_ZN4llvm14BinaryOperator14getNotArgumentEPKNS_5ValueE", "llvm::BinaryOperator::getNotArgument(llvm::Value const*)"}, + {"_ZN4llvm14BinaryOperator12swapOperandsEv", "llvm::BinaryOperator::swapOperands()"}, + {"_ZN4llvm14BinaryOperator20setHasNoUnsignedWrapEb", "llvm::BinaryOperator::setHasNoUnsignedWrap(bool)"}, + {"_ZN4llvm14BinaryOperator18setHasNoSignedWrapEb", "llvm::BinaryOperator::setHasNoSignedWrap(bool)"}, + {"_ZN4llvm14BinaryOperator10setIsExactEb", "llvm::BinaryOperator::setIsExact(bool)"}, + {"_ZNK4llvm14BinaryOperator17hasNoUnsignedWrapEv", "llvm::BinaryOperator::hasNoUnsignedWrap() const"}, + {"_ZNK4llvm14BinaryOperator15hasNoSignedWrapEv", "llvm::BinaryOperator::hasNoSignedWrap() const"}, + {"_ZNK4llvm14BinaryOperator7isExactEv", "llvm::BinaryOperator::isExact() const"}, + {"_ZNK4llvm8CastInst13isIntegerCastEv", "llvm::CastInst::isIntegerCast() const"}, + {"_ZNK4llvm8CastInst14isLosslessCastEv", "llvm::CastInst::isLosslessCast() const"}, + {"_ZN4llvm8CastInst10isNoopCastENS_11Instruction7CastOpsEPKNS_4TypeES5_S5_", "llvm::CastInst::isNoopCast(llvm::Instruction::CastOps, llvm::Type const*, llvm::Type const*, llvm::Type const*)"}, + {"_ZNK4llvm8CastInst10isNoopCastEPKNS_4TypeE", "llvm::CastInst::isNoopCast(llvm::Type const*) const"}, + {"_ZN4llvm8CastInst20isEliminableCastPairENS_11Instruction7CastOpsES2_PKNS_4TypeES5_S5_S5_", "llvm::CastInst::isEliminableCastPair(llvm::Instruction::CastOps, llvm::Instruction::CastOps, llvm::Type const*, llvm::Type const*, llvm::Type const*, llvm::Type const*)"}, + {"_ZN4llvm8CastInst6CreateENS_11Instruction7CastOpsEPNS_5ValueEPKNS_4TypeERKNS_5TwineEPS1_", "llvm::CastInst::Create(llvm::Instruction::CastOps, llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm9TruncInstC1EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_11InstructionE", "llvm::TruncInst::TruncInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm8ZExtInstC1EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_11InstructionE", "llvm::ZExtInst::ZExtInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm8SExtInstC1EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_11InstructionE", "llvm::SExtInst::SExtInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm11FPTruncInstC1EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_11InstructionE", "llvm::FPTruncInst::FPTruncInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm9FPExtInstC1EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_11InstructionE", "llvm::FPExtInst::FPExtInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm10UIToFPInstC1EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_11InstructionE", "llvm::UIToFPInst::UIToFPInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm10SIToFPInstC1EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_11InstructionE", "llvm::SIToFPInst::SIToFPInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm10FPToUIInstC1EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_11InstructionE", "llvm::FPToUIInst::FPToUIInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm10FPToSIInstC1EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_11InstructionE", "llvm::FPToSIInst::FPToSIInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm12PtrToIntInstC1EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_11InstructionE", "llvm::PtrToIntInst::PtrToIntInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm12IntToPtrInstC1EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_11InstructionE", "llvm::IntToPtrInst::IntToPtrInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm11BitCastInstC1EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_11InstructionE", "llvm::BitCastInst::BitCastInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm8CastInst6CreateENS_11Instruction7CastOpsEPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_10BasicBlockE", "llvm::CastInst::Create(llvm::Instruction::CastOps, llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm9TruncInstC1EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_10BasicBlockE", "llvm::TruncInst::TruncInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm8ZExtInstC1EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_10BasicBlockE", "llvm::ZExtInst::ZExtInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm8SExtInstC1EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_10BasicBlockE", "llvm::SExtInst::SExtInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm11FPTruncInstC1EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_10BasicBlockE", "llvm::FPTruncInst::FPTruncInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm9FPExtInstC1EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_10BasicBlockE", "llvm::FPExtInst::FPExtInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm10UIToFPInstC1EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_10BasicBlockE", "llvm::UIToFPInst::UIToFPInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm10SIToFPInstC1EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_10BasicBlockE", "llvm::SIToFPInst::SIToFPInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm10FPToUIInstC1EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_10BasicBlockE", "llvm::FPToUIInst::FPToUIInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm10FPToSIInstC1EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_10BasicBlockE", "llvm::FPToSIInst::FPToSIInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm12PtrToIntInstC1EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_10BasicBlockE", "llvm::PtrToIntInst::PtrToIntInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm12IntToPtrInstC1EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_10BasicBlockE", "llvm::IntToPtrInst::IntToPtrInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm11BitCastInstC1EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_10BasicBlockE", "llvm::BitCastInst::BitCastInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm8CastInst19CreateZExtOrBitCastEPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_11InstructionE", "llvm::CastInst::CreateZExtOrBitCast(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm8CastInst19CreateZExtOrBitCastEPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_10BasicBlockE", "llvm::CastInst::CreateZExtOrBitCast(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm8CastInst19CreateSExtOrBitCastEPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_11InstructionE", "llvm::CastInst::CreateSExtOrBitCast(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm8CastInst19CreateSExtOrBitCastEPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_10BasicBlockE", "llvm::CastInst::CreateSExtOrBitCast(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm8CastInst20CreateTruncOrBitCastEPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_11InstructionE", "llvm::CastInst::CreateTruncOrBitCast(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm8CastInst20CreateTruncOrBitCastEPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_10BasicBlockE", "llvm::CastInst::CreateTruncOrBitCast(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm8CastInst17CreatePointerCastEPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_10BasicBlockE", "llvm::CastInst::CreatePointerCast(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm8CastInst17CreatePointerCastEPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_11InstructionE", "llvm::CastInst::CreatePointerCast(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm8CastInst17CreateIntegerCastEPNS_5ValueEPKNS_4TypeEbRKNS_5TwineEPNS_11InstructionE", "llvm::CastInst::CreateIntegerCast(llvm::Value*, llvm::Type const*, bool, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm8CastInst17CreateIntegerCastEPNS_5ValueEPKNS_4TypeEbRKNS_5TwineEPNS_10BasicBlockE", "llvm::CastInst::CreateIntegerCast(llvm::Value*, llvm::Type const*, bool, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm8CastInst12CreateFPCastEPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_11InstructionE", "llvm::CastInst::CreateFPCast(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm8CastInst12CreateFPCastEPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_10BasicBlockE", "llvm::CastInst::CreateFPCast(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm8CastInst10isCastableEPKNS_4TypeES3_", "llvm::CastInst::isCastable(llvm::Type const*, llvm::Type const*)"}, + {"_ZN4llvm8CastInst13getCastOpcodeEPKNS_5ValueEbPKNS_4TypeEb", "llvm::CastInst::getCastOpcode(llvm::Value const*, bool, llvm::Type const*, bool)"}, + {"_ZN4llvm8CastInst11castIsValidENS_11Instruction7CastOpsEPNS_5ValueEPKNS_4TypeE", "llvm::CastInst::castIsValid(llvm::Instruction::CastOps, llvm::Value*, llvm::Type const*)"}, + {"_ZN4llvm9TruncInstC2EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_11InstructionE", "llvm::TruncInst::TruncInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm9TruncInstC2EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_10BasicBlockE", "llvm::TruncInst::TruncInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm8ZExtInstC2EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_11InstructionE", "llvm::ZExtInst::ZExtInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm8ZExtInstC2EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_10BasicBlockE", "llvm::ZExtInst::ZExtInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm8SExtInstC2EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_11InstructionE", "llvm::SExtInst::SExtInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm8SExtInstC2EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_10BasicBlockE", "llvm::SExtInst::SExtInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm11FPTruncInstC2EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_11InstructionE", "llvm::FPTruncInst::FPTruncInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm11FPTruncInstC2EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_10BasicBlockE", "llvm::FPTruncInst::FPTruncInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm9FPExtInstC2EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_11InstructionE", "llvm::FPExtInst::FPExtInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm9FPExtInstC2EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_10BasicBlockE", "llvm::FPExtInst::FPExtInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm10UIToFPInstC2EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_11InstructionE", "llvm::UIToFPInst::UIToFPInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm10UIToFPInstC2EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_10BasicBlockE", "llvm::UIToFPInst::UIToFPInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm10SIToFPInstC2EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_11InstructionE", "llvm::SIToFPInst::SIToFPInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm10SIToFPInstC2EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_10BasicBlockE", "llvm::SIToFPInst::SIToFPInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm10FPToUIInstC2EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_11InstructionE", "llvm::FPToUIInst::FPToUIInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm10FPToUIInstC2EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_10BasicBlockE", "llvm::FPToUIInst::FPToUIInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm10FPToSIInstC2EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_11InstructionE", "llvm::FPToSIInst::FPToSIInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm10FPToSIInstC2EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_10BasicBlockE", "llvm::FPToSIInst::FPToSIInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm12PtrToIntInstC2EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_11InstructionE", "llvm::PtrToIntInst::PtrToIntInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm12PtrToIntInstC2EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_10BasicBlockE", "llvm::PtrToIntInst::PtrToIntInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm12IntToPtrInstC2EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_11InstructionE", "llvm::IntToPtrInst::IntToPtrInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm12IntToPtrInstC2EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_10BasicBlockE", "llvm::IntToPtrInst::IntToPtrInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm11BitCastInstC2EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_11InstructionE", "llvm::BitCastInst::BitCastInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm11BitCastInstC2EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_10BasicBlockE", "llvm::BitCastInst::BitCastInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZNK4llvm7CmpInst6AnchorEv", "llvm::CmpInst::Anchor() const"}, + {"_ZN4llvm7CmpInstC1EPKNS_4TypeENS_11Instruction8OtherOpsEtPNS_5ValueES7_RKNS_5TwineEPS4_", "llvm::CmpInst::CmpInst(llvm::Type const*, llvm::Instruction::OtherOps, unsigned short, llvm::Value*, llvm::Value*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm7CmpInstC2EPKNS_4TypeENS_11Instruction8OtherOpsEtPNS_5ValueES7_RKNS_5TwineEPS4_", "llvm::CmpInst::CmpInst(llvm::Type const*, llvm::Instruction::OtherOps, unsigned short, llvm::Value*, llvm::Value*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm7CmpInstC1EPKNS_4TypeENS_11Instruction8OtherOpsEtPNS_5ValueES7_RKNS_5TwineEPNS_10BasicBlockE", "llvm::CmpInst::CmpInst(llvm::Type const*, llvm::Instruction::OtherOps, unsigned short, llvm::Value*, llvm::Value*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm7CmpInstC2EPKNS_4TypeENS_11Instruction8OtherOpsEtPNS_5ValueES7_RKNS_5TwineEPNS_10BasicBlockE", "llvm::CmpInst::CmpInst(llvm::Type const*, llvm::Instruction::OtherOps, unsigned short, llvm::Value*, llvm::Value*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm7CmpInst6CreateENS_11Instruction8OtherOpsEtPNS_5ValueES4_RKNS_5TwineEPS1_", "llvm::CmpInst::Create(llvm::Instruction::OtherOps, unsigned short, llvm::Value*, llvm::Value*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm7CmpInst6CreateENS_11Instruction8OtherOpsEtPNS_5ValueES4_RKNS_5TwineEPNS_10BasicBlockE", "llvm::CmpInst::Create(llvm::Instruction::OtherOps, unsigned short, llvm::Value*, llvm::Value*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm7CmpInst12swapOperandsEv", "llvm::CmpInst::swapOperands()"}, + {"_ZNK4llvm7CmpInst13isCommutativeEv", "llvm::CmpInst::isCommutative() const"}, + {"_ZNK4llvm7CmpInst10isEqualityEv", "llvm::CmpInst::isEquality() const"}, + {"_ZN4llvm7CmpInst19getInversePredicateENS0_9PredicateE", "llvm::CmpInst::getInversePredicate(llvm::CmpInst::Predicate)"}, + {"_ZN4llvm8ICmpInst18getSignedPredicateENS_7CmpInst9PredicateE", "llvm::ICmpInst::getSignedPredicate(llvm::CmpInst::Predicate)"}, + {"_ZN4llvm8ICmpInst20getUnsignedPredicateENS_7CmpInst9PredicateE", "llvm::ICmpInst::getUnsignedPredicate(llvm::CmpInst::Predicate)"}, + {"_ZN4llvm8ICmpInst17makeConstantRangeENS_7CmpInst9PredicateERKNS_5APIntE", "llvm::ICmpInst::makeConstantRange(llvm::CmpInst::Predicate, llvm::APInt const&)"}, + {"_ZN4llvm7CmpInst19getSwappedPredicateENS0_9PredicateE", "llvm::CmpInst::getSwappedPredicate(llvm::CmpInst::Predicate)"}, + {"_ZN4llvm7CmpInst10isUnsignedEt", "llvm::CmpInst::isUnsigned(unsigned short)"}, + {"_ZN4llvm7CmpInst8isSignedEt", "llvm::CmpInst::isSigned(unsigned short)"}, + {"_ZN4llvm7CmpInst9isOrderedEt", "llvm::CmpInst::isOrdered(unsigned short)"}, + {"_ZN4llvm7CmpInst11isUnorderedEt", "llvm::CmpInst::isUnordered(unsigned short)"}, + {"_ZN4llvm7CmpInst15isTrueWhenEqualEt", "llvm::CmpInst::isTrueWhenEqual(unsigned short)"}, + {"_ZN4llvm7CmpInst16isFalseWhenEqualEt", "llvm::CmpInst::isFalseWhenEqual(unsigned short)"}, + {"_ZN4llvm10SwitchInst4initEPNS_5ValueEPNS_10BasicBlockEj", "llvm::SwitchInst::init(llvm::Value*, llvm::BasicBlock*, unsigned int)"}, + {"_ZN4llvm10SwitchInstC1EPNS_5ValueEPNS_10BasicBlockEjPNS_11InstructionE", "llvm::SwitchInst::SwitchInst(llvm::Value*, llvm::BasicBlock*, unsigned int, llvm::Instruction*)"}, + {"_ZN4llvm10SwitchInstC2EPNS_5ValueEPNS_10BasicBlockEjPNS_11InstructionE", "llvm::SwitchInst::SwitchInst(llvm::Value*, llvm::BasicBlock*, unsigned int, llvm::Instruction*)"}, + {"_ZN4llvm10SwitchInstC1EPNS_5ValueEPNS_10BasicBlockEjS4_", "llvm::SwitchInst::SwitchInst(llvm::Value*, llvm::BasicBlock*, unsigned int, llvm::BasicBlock*)"}, + {"_ZN4llvm10SwitchInstC2EPNS_5ValueEPNS_10BasicBlockEjS4_", "llvm::SwitchInst::SwitchInst(llvm::Value*, llvm::BasicBlock*, unsigned int, llvm::BasicBlock*)"}, + {"_ZN4llvm10SwitchInstC1ERKS0_", "llvm::SwitchInst::SwitchInst(llvm::SwitchInst const&)"}, + {"_ZN4llvm10SwitchInstC2ERKS0_", "llvm::SwitchInst::SwitchInst(llvm::SwitchInst const&)"}, + {"_ZN4llvm10SwitchInstD0Ev", "llvm::SwitchInst::~SwitchInst()"}, + {"_ZN4llvm10SwitchInstD1Ev", "llvm::SwitchInst::~SwitchInst()"}, + {"_ZN4llvm10SwitchInstD2Ev", "llvm::SwitchInst::~SwitchInst()"}, + {"_ZN4llvm10SwitchInst7addCaseEPNS_11ConstantIntEPNS_10BasicBlockE", "llvm::SwitchInst::addCase(llvm::ConstantInt*, llvm::BasicBlock*)"}, + {"_ZN4llvm10SwitchInst14resizeOperandsEj", "llvm::SwitchInst::resizeOperands(unsigned int)"}, + {"_ZN4llvm10SwitchInst10removeCaseEj", "llvm::SwitchInst::removeCase(unsigned int)"}, + {"_ZNK4llvm10SwitchInst13getSuccessorVEj", "llvm::SwitchInst::getSuccessorV(unsigned int) const"}, + {"_ZNK4llvm10SwitchInst17getNumSuccessorsVEv", "llvm::SwitchInst::getNumSuccessorsV() const"}, + {"_ZN4llvm10SwitchInst13setSuccessorVEjPNS_10BasicBlockE", "llvm::SwitchInst::setSuccessorV(unsigned int, llvm::BasicBlock*)"}, + {"_ZN4llvm14IndirectBrInst4initEPNS_5ValueEj", "llvm::IndirectBrInst::init(llvm::Value*, unsigned int)"}, + {"_ZN4llvm14IndirectBrInst14resizeOperandsEj", "llvm::IndirectBrInst::resizeOperands(unsigned int)"}, + {"_ZN4llvm14IndirectBrInstC1EPNS_5ValueEjPNS_11InstructionE", "llvm::IndirectBrInst::IndirectBrInst(llvm::Value*, unsigned int, llvm::Instruction*)"}, + {"_ZN4llvm14IndirectBrInstC2EPNS_5ValueEjPNS_11InstructionE", "llvm::IndirectBrInst::IndirectBrInst(llvm::Value*, unsigned int, llvm::Instruction*)"}, + {"_ZN4llvm14IndirectBrInstC1EPNS_5ValueEjPNS_10BasicBlockE", "llvm::IndirectBrInst::IndirectBrInst(llvm::Value*, unsigned int, llvm::BasicBlock*)"}, + {"_ZN4llvm14IndirectBrInstC2EPNS_5ValueEjPNS_10BasicBlockE", "llvm::IndirectBrInst::IndirectBrInst(llvm::Value*, unsigned int, llvm::BasicBlock*)"}, + {"_ZN4llvm14IndirectBrInstC1ERKS0_", "llvm::IndirectBrInst::IndirectBrInst(llvm::IndirectBrInst const&)"}, + {"_ZN4llvm14IndirectBrInstC2ERKS0_", "llvm::IndirectBrInst::IndirectBrInst(llvm::IndirectBrInst const&)"}, + {"_ZN4llvm14IndirectBrInstD0Ev", "llvm::IndirectBrInst::~IndirectBrInst()"}, + {"_ZN4llvm14IndirectBrInstD1Ev", "llvm::IndirectBrInst::~IndirectBrInst()"}, + {"_ZN4llvm14IndirectBrInstD2Ev", "llvm::IndirectBrInst::~IndirectBrInst()"}, + {"_ZN4llvm14IndirectBrInst14addDestinationEPNS_10BasicBlockE", "llvm::IndirectBrInst::addDestination(llvm::BasicBlock*)"}, + {"_ZN4llvm14IndirectBrInst17removeDestinationEj", "llvm::IndirectBrInst::removeDestination(unsigned int)"}, + {"_ZNK4llvm14IndirectBrInst13getSuccessorVEj", "llvm::IndirectBrInst::getSuccessorV(unsigned int) const"}, + {"_ZNK4llvm14IndirectBrInst17getNumSuccessorsVEv", "llvm::IndirectBrInst::getNumSuccessorsV() const"}, + {"_ZN4llvm14IndirectBrInst13setSuccessorVEjPNS_10BasicBlockE", "llvm::IndirectBrInst::setSuccessorV(unsigned int, llvm::BasicBlock*)"}, + {"_ZNK4llvm17GetElementPtrInst10clone_implEv", "llvm::GetElementPtrInst::clone_impl() const"}, + {"_ZNK4llvm14BinaryOperator10clone_implEv", "llvm::BinaryOperator::clone_impl() const"}, + {"_ZNK4llvm8FCmpInst10clone_implEv", "llvm::FCmpInst::clone_impl() const"}, + {"_ZNK4llvm8ICmpInst10clone_implEv", "llvm::ICmpInst::clone_impl() const"}, + {"_ZNK4llvm16ExtractValueInst10clone_implEv", "llvm::ExtractValueInst::clone_impl() const"}, + {"_ZNK4llvm15InsertValueInst10clone_implEv", "llvm::InsertValueInst::clone_impl() const"}, + {"_ZNK4llvm10AllocaInst10clone_implEv", "llvm::AllocaInst::clone_impl() const"}, + {"_ZNK4llvm8LoadInst10clone_implEv", "llvm::LoadInst::clone_impl() const"}, + {"_ZNK4llvm9StoreInst10clone_implEv", "llvm::StoreInst::clone_impl() const"}, + {"_ZNK4llvm9TruncInst10clone_implEv", "llvm::TruncInst::clone_impl() const"}, + {"_ZNK4llvm8ZExtInst10clone_implEv", "llvm::ZExtInst::clone_impl() const"}, + {"_ZNK4llvm8SExtInst10clone_implEv", "llvm::SExtInst::clone_impl() const"}, + {"_ZNK4llvm11FPTruncInst10clone_implEv", "llvm::FPTruncInst::clone_impl() const"}, + {"_ZNK4llvm9FPExtInst10clone_implEv", "llvm::FPExtInst::clone_impl() const"}, + {"_ZNK4llvm10UIToFPInst10clone_implEv", "llvm::UIToFPInst::clone_impl() const"}, + {"_ZNK4llvm10SIToFPInst10clone_implEv", "llvm::SIToFPInst::clone_impl() const"}, + {"_ZNK4llvm10FPToUIInst10clone_implEv", "llvm::FPToUIInst::clone_impl() const"}, + {"_ZNK4llvm10FPToSIInst10clone_implEv", "llvm::FPToSIInst::clone_impl() const"}, + {"_ZNK4llvm12PtrToIntInst10clone_implEv", "llvm::PtrToIntInst::clone_impl() const"}, + {"_ZNK4llvm12IntToPtrInst10clone_implEv", "llvm::IntToPtrInst::clone_impl() const"}, + {"_ZNK4llvm11BitCastInst10clone_implEv", "llvm::BitCastInst::clone_impl() const"}, + {"_ZNK4llvm8CallInst10clone_implEv", "llvm::CallInst::clone_impl() const"}, + {"_ZNK4llvm10SelectInst10clone_implEv", "llvm::SelectInst::clone_impl() const"}, + {"_ZNK4llvm9VAArgInst10clone_implEv", "llvm::VAArgInst::clone_impl() const"}, + {"_ZNK4llvm18ExtractElementInst10clone_implEv", "llvm::ExtractElementInst::clone_impl() const"}, + {"_ZNK4llvm17InsertElementInst10clone_implEv", "llvm::InsertElementInst::clone_impl() const"}, + {"_ZNK4llvm17ShuffleVectorInst10clone_implEv", "llvm::ShuffleVectorInst::clone_impl() const"}, + {"_ZNK4llvm7PHINode10clone_implEv", "llvm::PHINode::clone_impl() const"}, + {"_ZNK4llvm10ReturnInst10clone_implEv", "llvm::ReturnInst::clone_impl() const"}, + {"_ZNK4llvm10BranchInst10clone_implEv", "llvm::BranchInst::clone_impl() const"}, + {"_ZNK4llvm10SwitchInst10clone_implEv", "llvm::SwitchInst::clone_impl() const"}, + {"_ZNK4llvm14IndirectBrInst10clone_implEv", "llvm::IndirectBrInst::clone_impl() const"}, + {"_ZNK4llvm10InvokeInst10clone_implEv", "llvm::InvokeInst::clone_impl() const"}, + {"_ZNK4llvm10UnwindInst10clone_implEv", "llvm::UnwindInst::clone_impl() const"}, + {"_ZNK4llvm15UnreachableInst10clone_implEv", "llvm::UnreachableInst::clone_impl() const"}, + {"_ZN4llvm8CastInstC2EPKNS_4TypeEjPNS_5ValueERKNS_5TwineEPNS_11InstructionE", "llvm::CastInst::CastInst(llvm::Type const*, unsigned int, llvm::Value*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm8CastInstC2EPKNS_4TypeEjPNS_5ValueERKNS_5TwineEPNS_10BasicBlockE", "llvm::CastInst::CastInst(llvm::Type const*, unsigned int, llvm::Value*, llvm::Twine const&, llvm::BasicBlock*)"}, + {"_ZN4llvm17GetElementPtrInstD1Ev", "llvm::GetElementPtrInst::~GetElementPtrInst()"}, + {"_ZN4llvm17GetElementPtrInstD0Ev", "llvm::GetElementPtrInst::~GetElementPtrInst()"}, + {"_ZN4llvm7CmpInstD1Ev", "llvm::CmpInst::~CmpInst()"}, + {"_ZN4llvm7CmpInstD0Ev", "llvm::CmpInst::~CmpInst()"}, + {"_ZN4llvm8ICmpInstD1Ev", "llvm::ICmpInst::~ICmpInst()"}, + {"_ZN4llvm8ICmpInstD0Ev", "llvm::ICmpInst::~ICmpInst()"}, + {"_ZN4llvm8FCmpInstD1Ev", "llvm::FCmpInst::~FCmpInst()"}, + {"_ZN4llvm8FCmpInstD0Ev", "llvm::FCmpInst::~FCmpInst()"}, + {"_ZN4llvm10SelectInstD1Ev", "llvm::SelectInst::~SelectInst()"}, + {"_ZN4llvm10SelectInstD0Ev", "llvm::SelectInst::~SelectInst()"}, + {"_ZN4llvm9VAArgInstD1Ev", "llvm::VAArgInst::~VAArgInst()"}, + {"_ZN4llvm9VAArgInstD0Ev", "llvm::VAArgInst::~VAArgInst()"}, + {"_ZN4llvm18ExtractElementInstD1Ev", "llvm::ExtractElementInst::~ExtractElementInst()"}, + {"_ZN4llvm18ExtractElementInstD0Ev", "llvm::ExtractElementInst::~ExtractElementInst()"}, + {"_ZN4llvm17InsertElementInstD1Ev", "llvm::InsertElementInst::~InsertElementInst()"}, + {"_ZN4llvm17InsertElementInstD0Ev", "llvm::InsertElementInst::~InsertElementInst()"}, + {"_ZN4llvm16ExtractValueInstD1Ev", "llvm::ExtractValueInst::~ExtractValueInst()"}, + {"_ZN4llvm16ExtractValueInstD0Ev", "llvm::ExtractValueInst::~ExtractValueInst()"}, + {"_ZN4llvm15InsertValueInstD1Ev", "llvm::InsertValueInst::~InsertValueInst()"}, + {"_ZN4llvm15InsertValueInstD0Ev", "llvm::InsertValueInst::~InsertValueInst()"}, + {"_ZN4llvm10BranchInstD1Ev", "llvm::BranchInst::~BranchInst()"}, + {"_ZN4llvm10BranchInstD0Ev", "llvm::BranchInst::~BranchInst()"}, + {"_ZN4llvm11BitCastInstD1Ev", "llvm::BitCastInst::~BitCastInst()"}, + {"_ZN4llvm11BitCastInstD0Ev", "llvm::BitCastInst::~BitCastInst()"}, + {"_ZN4llvm10InvokeInstD1Ev", "llvm::InvokeInst::~InvokeInst()"}, + {"_ZN4llvm10InvokeInstD0Ev", "llvm::InvokeInst::~InvokeInst()"}, + {"_ZN4llvm10UnwindInstD1Ev", "llvm::UnwindInst::~UnwindInst()"}, + {"_ZN4llvm10UnwindInstD0Ev", "llvm::UnwindInst::~UnwindInst()"}, + {"_ZN4llvm15UnreachableInstD1Ev", "llvm::UnreachableInst::~UnreachableInst()"}, + {"_ZN4llvm15UnreachableInstD0Ev", "llvm::UnreachableInst::~UnreachableInst()"}, + {"_ZN4llvm8LoadInstD1Ev", "llvm::LoadInst::~LoadInst()"}, + {"_ZN4llvm8LoadInstD0Ev", "llvm::LoadInst::~LoadInst()"}, + {"_ZN4llvm9StoreInstD1Ev", "llvm::StoreInst::~StoreInst()"}, + {"_ZN4llvm9StoreInstD0Ev", "llvm::StoreInst::~StoreInst()"}, + {"_ZN4llvm17ShuffleVectorInstD1Ev", "llvm::ShuffleVectorInst::~ShuffleVectorInst()"}, + {"_ZN4llvm17ShuffleVectorInstD0Ev", "llvm::ShuffleVectorInst::~ShuffleVectorInst()"}, + {"_ZN4llvm14BinaryOperatorD1Ev", "llvm::BinaryOperator::~BinaryOperator()"}, + {"_ZN4llvm14BinaryOperatorD0Ev", "llvm::BinaryOperator::~BinaryOperator()"}, + {"_ZN4llvm9TruncInstD1Ev", "llvm::TruncInst::~TruncInst()"}, + {"_ZN4llvm9TruncInstD0Ev", "llvm::TruncInst::~TruncInst()"}, + {"_ZN4llvm8ZExtInstD1Ev", "llvm::ZExtInst::~ZExtInst()"}, + {"_ZN4llvm8ZExtInstD0Ev", "llvm::ZExtInst::~ZExtInst()"}, + {"_ZN4llvm8SExtInstD1Ev", "llvm::SExtInst::~SExtInst()"}, + {"_ZN4llvm8SExtInstD0Ev", "llvm::SExtInst::~SExtInst()"}, + {"_ZN4llvm11FPTruncInstD1Ev", "llvm::FPTruncInst::~FPTruncInst()"}, + {"_ZN4llvm11FPTruncInstD0Ev", "llvm::FPTruncInst::~FPTruncInst()"}, + {"_ZN4llvm9FPExtInstD1Ev", "llvm::FPExtInst::~FPExtInst()"}, + {"_ZN4llvm9FPExtInstD0Ev", "llvm::FPExtInst::~FPExtInst()"}, + {"_ZN4llvm10UIToFPInstD1Ev", "llvm::UIToFPInst::~UIToFPInst()"}, + {"_ZN4llvm10UIToFPInstD0Ev", "llvm::UIToFPInst::~UIToFPInst()"}, + {"_ZN4llvm10SIToFPInstD1Ev", "llvm::SIToFPInst::~SIToFPInst()"}, + {"_ZN4llvm10SIToFPInstD0Ev", "llvm::SIToFPInst::~SIToFPInst()"}, + {"_ZN4llvm10FPToUIInstD1Ev", "llvm::FPToUIInst::~FPToUIInst()"}, + {"_ZN4llvm10FPToUIInstD0Ev", "llvm::FPToUIInst::~FPToUIInst()"}, + {"_ZN4llvm10FPToSIInstD1Ev", "llvm::FPToSIInst::~FPToSIInst()"}, + {"_ZN4llvm10FPToSIInstD0Ev", "llvm::FPToSIInst::~FPToSIInst()"}, + {"_ZN4llvm12PtrToIntInstD1Ev", "llvm::PtrToIntInst::~PtrToIntInst()"}, + {"_ZN4llvm12PtrToIntInstD0Ev", "llvm::PtrToIntInst::~PtrToIntInst()"}, + {"_ZN4llvm12IntToPtrInstD1Ev", "llvm::IntToPtrInst::~IntToPtrInst()"}, + {"_ZN4llvm12IntToPtrInstD0Ev", "llvm::IntToPtrInst::~IntToPtrInst()"}, + + // {"_ZNSt6__copyILb0ESt26random_access_iterator_tagE4copyIPN4llvm3UseES5_EET0_T_S7_S6_", + // "llvm::Use* std::__copy::copy(llvm::Use*, llvm::Use*, llvm::Use*)"}, + // got error + + {"_ZN4llvm8CastInstD1Ev", "llvm::CastInst::~CastInst()"}, + {"_ZN4llvm8CastInstD0Ev", "llvm::CastInst::~CastInst()"}, + {"_ZN4llvm9VAArgInstC2EPNS_5ValueEPKNS_4TypeERKNS_5TwineEPNS_11InstructionE", "llvm::VAArgInst::VAArgInst(llvm::Value*, llvm::Type const*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm10SelectInstC2EPNS_5ValueES2_S2_RKNS_5TwineEPNS_11InstructionE", "llvm::SelectInst::SelectInst(llvm::Value*, llvm::Value*, llvm::Value*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm10SelectInst4initEPNS_5ValueES2_S2_", "llvm::SelectInst::init(llvm::Value*, llvm::Value*, llvm::Value*)"}, + {"_ZN4llvm8FCmpInstC2ERNS_10BasicBlockENS_7CmpInst9PredicateEPNS_5ValueES6_RKNS_5TwineE", "llvm::FCmpInst::FCmpInst(llvm::BasicBlock&, llvm::CmpInst::Predicate, llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm8FCmpInstC2ENS_7CmpInst9PredicateEPNS_5ValueES4_RKNS_5TwineE", "llvm::FCmpInst::FCmpInst(llvm::CmpInst::Predicate, llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm8FCmpInstC2EPNS_11InstructionENS_7CmpInst9PredicateEPNS_5ValueES6_RKNS_5TwineE", "llvm::FCmpInst::FCmpInst(llvm::Instruction*, llvm::CmpInst::Predicate, llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm8ICmpInstC2ENS_7CmpInst9PredicateEPNS_5ValueES4_RKNS_5TwineE", "llvm::ICmpInst::ICmpInst(llvm::CmpInst::Predicate, llvm::Value*, llvm::Value*, llvm::Twine const&)"}, + {"_ZN4llvm14BinaryOperator9CreateNUWENS_11Instruction9BinaryOpsEPNS_5ValueES4_RKNS_5TwineEPS1_", "llvm::BinaryOperator::CreateNUW(llvm::Instruction::BinaryOps, llvm::Value*, llvm::Value*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm14BinaryOperator9CreateNSWENS_11Instruction9BinaryOpsEPNS_5ValueES4_RKNS_5TwineEPS1_", "llvm::BinaryOperator::CreateNSW(llvm::Instruction::BinaryOps, llvm::Value*, llvm::Value*, llvm::Twine const&, llvm::Instruction*)"}, + {"_ZN4llvm16DbgInfoIntrinsic9StripCastEPNS_5ValueE", "llvm::DbgInfoIntrinsic::StripCast(llvm::Value*)"}, + {"_ZNK4llvm14DbgDeclareInst10getAddressEv", "llvm::DbgDeclareInst::getAddress() const"}, + {"_ZNK4llvm12DbgValueInst8getValueEv", "llvm::DbgValueInst::getValue() const"}, + {"_ZN4llvm12DbgValueInst8getValueEv", "llvm::DbgValueInst::getValue()"}, + {"_ZN4llvm16getGlobalContextEv", "llvm::getGlobalContext()"}, + {"_ZN4llvm11LLVMContextC1Ev", "llvm::LLVMContext::LLVMContext()"}, + {"_ZN4llvm11LLVMContextC2Ev", "llvm::LLVMContext::LLVMContext()"}, + {"_ZNK4llvm11LLVMContext11getMDKindIDENS_9StringRefE", "llvm::LLVMContext::getMDKindID(llvm::StringRef) const"}, + {"_ZN4llvm11LLVMContextD1Ev", "llvm::LLVMContext::~LLVMContext()"}, + {"_ZN4llvm11LLVMContextD2Ev", "llvm::LLVMContext::~LLVMContext()"}, + {"_ZN4llvm11LLVMContext9addModuleEPNS_6ModuleE", "llvm::LLVMContext::addModule(llvm::Module*)"}, + {"_ZN4llvm11LLVMContext12removeModuleEPNS_6ModuleE", "llvm::LLVMContext::removeModule(llvm::Module*)"}, + + // {"_ZN4llvm11LLVMContext29setInlineAsmDiagnosticHandlerEPFvRKNS_12SMDiagnosticEPvjES4_", + // "llvm::LLVMContext::setInlineAsmDiagnosticHandler(void (*)(llvm::SMDiagnostic const&, void*, unsigned int), void*)"}, + // "llvm::LLVMContext::setInlineAsmDiagnosticHandler(void (*)(llvm::SMDiagnostic&, void*, unsigned int), void (*)(llvm::SMDiagnostic&, void*, unsigned int))" was returned + + {"_ZNK4llvm11LLVMContext29getInlineAsmDiagnosticHandlerEv", "llvm::LLVMContext::getInlineAsmDiagnosticHandler() const"}, + {"_ZNK4llvm11LLVMContext29getInlineAsmDiagnosticContextEv", "llvm::LLVMContext::getInlineAsmDiagnosticContext() const"}, + {"_ZN4llvm11LLVMContext9emitErrorENS_9StringRefE", "llvm::LLVMContext::emitError(llvm::StringRef)"}, + {"_ZN4llvm11LLVMContext9emitErrorEjNS_9StringRefE", "llvm::LLVMContext::emitError(unsigned int, llvm::StringRef)"}, + {"_ZN4llvm11LLVMContext9emitErrorEPKNS_11InstructionENS_9StringRefE", "llvm::LLVMContext::emitError(llvm::Instruction const*, llvm::StringRef)"}, + {"_ZNK4llvm11LLVMContext14getMDKindNamesERNS_15SmallVectorImplINS_9StringRefEEE", "llvm::LLVMContext::getMDKindNames(llvm::SmallVectorImpl&) const"}, + {"_ZN4llvm9StringMapIjNS_15MallocAllocatorEE16GetOrCreateValueIjEERNS_14StringMapEntryIjEENS_9StringRefET_", "llvm::StringMapEntry& llvm::StringMap::GetOrCreateValue(llvm::StringRef, unsigned int)"}, + {"_ZN4llvm15SmallVectorImplINS_9StringRefEE6resizeEj", "llvm::SmallVectorImpl::resize(unsigned int)"}, + {"_ZN4llvm14object_creatorINS_11LLVMContextEEEPvv", "void* llvm::object_creator()"}, + {"_ZN4llvm14object_deleterINS_11LLVMContextEE4callEPv", "llvm::object_deleter::call(void*)"}, + {"_ZN4llvm15LLVMContextImplC1ERNS_11LLVMContextE", "llvm::LLVMContextImpl::LLVMContextImpl(llvm::LLVMContext&)"}, + {"_ZN4llvm15LLVMContextImplC2ERNS_11LLVMContextE", "llvm::LLVMContextImpl::LLVMContextImpl(llvm::LLVMContext&)"}, + {"_ZN4llvm15LLVMContextImplD1Ev", "llvm::LLVMContextImpl::~LLVMContextImpl()"}, + {"_ZN4llvm15LLVMContextImplD2Ev", "llvm::LLVMContextImpl::~LLVMContextImpl()"}, + + // {"_ZN4llvm15SmallVectorImplIPNS_6MDNodeEE6appendINS_19SmallPtrSetIteratorIS2_EEEEvT_S7_", + // "void llvm::SmallVectorImpl::append>(llvm::SmallPtrSetIterator, llvm::SmallPtrSetIterator)"}, + // got error + + {"_ZN4llvm11IntegerTypeD1Ev", "llvm::IntegerType::~IntegerType()"}, + {"_ZN4llvm4TypeD1Ev", "llvm::Type::~Type()"}, + {"_ZN4llvm17ConstantUniqueMapINS_16InlineAsmKeyTypeENS_11PointerTypeENS_9InlineAsmELb0EED1Ev", "llvm::ConstantUniqueMap::~ConstantUniqueMap()"}, + {"_ZN4llvm17ConstantUniqueMapINS_14ExprMapKeyTypeENS_4TypeENS_12ConstantExprELb0EED1Ev", "llvm::ConstantUniqueMap::~ConstantUniqueMap()"}, + {"_ZN4llvm17ConstantUniqueMapIcNS_4TypeENS_10UndefValueELb0EED1Ev", "llvm::ConstantUniqueMap::~ConstantUniqueMap()"}, + {"_ZN4llvm17ConstantUniqueMapIcNS_11PointerTypeENS_19ConstantPointerNullELb0EED1Ev", "llvm::ConstantUniqueMap::~ConstantUniqueMap()"}, + + // {"_ZN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_10VectorTypeENS_14ConstantVectorELb0EED1Ev", + // "llvm::ConstantUniqueMap>, llvm::VectorType, llvm::ConstantVector, false>::~ConstantUniqueMap()"}, + // got error + + + // {"_ZN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_10StructTypeENS_14ConstantStructELb1EED1Ev", + // "llvm::ConstantUniqueMap>, llvm::StructType, llvm::ConstantStruct, true>::~ConstantUniqueMap()"}, + // got error + + + // {"_ZN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_9ArrayTypeENS_13ConstantArrayELb1EED1Ev", + // "llvm::ConstantUniqueMap>, llvm::ArrayType, llvm::ConstantArray, true>::~ConstantUniqueMap()"}, + // got error + + {"_ZN4llvm17ConstantUniqueMapIcNS_4TypeENS_21ConstantAggregateZeroELb0EED1Ev", "llvm::ConstantUniqueMap::~ConstantUniqueMap()"}, + {"_ZN4llvm10FoldingSetINS_6MDNodeEED1Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZN4llvm16DenseMapIteratorINS_22DenseMapAPFloatKeyInfo5KeyTyEPNS_10ConstantFPES1_NS_12DenseMapInfoIS4_EELb0EE23AdvancePastEmptyBucketsEv", "llvm::DenseMapIterator, false>::AdvancePastEmptyBuckets()"}, + {"_ZN4llvm16DenseMapIteratorINS_20DenseMapAPIntKeyInfo5KeyTyEPNS_11ConstantIntES1_NS_12DenseMapInfoIS4_EELb0EE23AdvancePastEmptyBucketsEv", "llvm::DenseMapIterator, false>::AdvancePastEmptyBuckets()"}, + + // {"_ZNSt6vectorIPN4llvm6ModuleESaIS2_EE19_M_range_initializeINS0_19SmallPtrSetIteratorIS2_EEEEvT_S8_St20forward_iterator_tag", + // "void std::vector>::_M_range_initialize>(llvm::SmallPtrSetIterator, llvm::SmallPtrSetIterator, std::forward_iterator_tag)"}, + // got error + + {"_ZN4llvm10DebugRecVHD1Ev", "llvm::DebugRecVH::~DebugRecVH()"}, + {"_ZN4llvm10DebugRecVHD0Ev", "llvm::DebugRecVH::~DebugRecVH()"}, + + // {"_ZN4llvm8DenseMapIPKNS_11InstructionENS_11SmallVectorISt4pairIjNS_10TrackingVHINS_6MDNodeEEEELj2EEENS_12DenseMapInfoIS3_EENSB_ISA_EEED2Ev", + // "llvm::DenseMap>, 2u>, llvm::DenseMapInfo, llvm::DenseMapInfo>, 2u>>>::~DenseMap()"}, + // "llvm::DenseMap>, 2>, llvm::DenseMapInfo, llvm::DenseMapInfo>, 2>>>::~DenseMap()" was returned + + {"_ZN4llvm8DenseMapINS_22DenseMapAPFloatKeyInfo5KeyTyEPNS_10ConstantFPES1_NS_12DenseMapInfoIS4_EEED2Ev", "llvm::DenseMap>::~DenseMap()"}, + {"_ZN4llvm8DenseMapINS_20DenseMapAPIntKeyInfo5KeyTyEPNS_11ConstantIntES1_NS_12DenseMapInfoIS4_EEED2Ev", "llvm::DenseMap>::~DenseMap()"}, + {"_ZN4llvm10FoldingSetINS_6MDNodeEED0Ev", "llvm::FoldingSet::~FoldingSet()"}, + {"_ZNK4llvm10FoldingSetINS_6MDNodeEE14GetNodeProfileEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::GetNodeProfile(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetINS_6MDNodeEE10NodeEqualsEPNS_14FoldingSetImpl4NodeERKNS_16FoldingSetNodeIDERS6_", "llvm::FoldingSet::NodeEquals(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID const&, llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm10FoldingSetINS_6MDNodeEE15ComputeNodeHashEPNS_14FoldingSetImpl4NodeERNS_16FoldingSetNodeIDE", "llvm::FoldingSet::ComputeNodeHash(llvm::FoldingSetImpl::Node*, llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm8DenseMapINS_22DenseMapAPFloatKeyInfo5KeyTyEPNS_10ConstantFPES1_NS_12DenseMapInfoIS4_EEE4initEj", "llvm::DenseMap>::init(unsigned int)"}, + {"_ZN4llvm8DenseMapINS_20DenseMapAPIntKeyInfo5KeyTyEPNS_11ConstantIntES1_NS_12DenseMapInfoIS4_EEE4initEj", "llvm::DenseMap>::init(unsigned int)"}, + {"_ZN4llvm17ConstantUniqueMapIcNS_4TypeENS_21ConstantAggregateZeroELb0EED0Ev", "llvm::ConstantUniqueMap::~ConstantUniqueMap()"}, + {"_ZN4llvm17ConstantUniqueMapIcNS_4TypeENS_21ConstantAggregateZeroELb0EE18refineAbstractTypeEPKNS_11DerivedTypeEPKS1_", "llvm::ConstantUniqueMap::refineAbstractType(llvm::DerivedType const*, llvm::Type const*)"}, + {"_ZN4llvm17ConstantUniqueMapIcNS_4TypeENS_21ConstantAggregateZeroELb0EE18typeBecameConcreteEPKNS_11DerivedTypeE", "llvm::ConstantUniqueMap::typeBecameConcrete(llvm::DerivedType const*)"}, + {"_ZNK4llvm17ConstantUniqueMapIcNS_4TypeENS_21ConstantAggregateZeroELb0EE4dumpEv", "llvm::ConstantUniqueMap::dump() const"}, + + // {"_ZN4llvm17ConstantUniqueMapIcNS_4TypeENS_21ConstantAggregateZeroELb0EE21UpdateAbstractTypeMapEPKNS_11DerivedTypeESt17_Rb_tree_iteratorISt4pairIKS8_IPKS1_cEPS2_EE", + // "llvm::ConstantUniqueMap::UpdateAbstractTypeMap(llvm::DerivedType const*, std::_Rb_tree_iterator const, llvm::ConstantAggregateZero*>>)"}, + // "llvm::ConstantUniqueMap::UpdateAbstractTypeMap(llvm::DerivedType const*, std::_Rb_tree_iterator, llvm::ConstantAggregateZero*>>)" was returned + + + // {"_ZNSt8_Rb_treeIPKN4llvm11DerivedTypeESt4pairIKS3_St17_Rb_tree_iteratorIS4_IKS4_IPKNS0_4TypeEcEPNS0_21ConstantAggregateZeroEEEESt10_Select1stISG_ESt4lessIS3_ESaISG_EE16_M_insert_uniqueES6_ISG_ERKSG_", + // "std::_Rb_tree const, llvm::ConstantAggregateZero*>>>, std::_Select1st const, llvm::ConstantAggregateZero*>>>>, std::less, std::allocator const, llvm::ConstantAggregateZero*>>>>>::_M_insert_unique(std::_Rb_tree_iterator const, llvm::ConstantAggregateZero*>>>>, std::pair const, llvm::ConstantAggregateZero*>>> const&)"}, + // "std::_Rb_tree, llvm::ConstantAggregateZero*>>>, std::_Select1st, llvm::ConstantAggregateZero*>>>>, std::less, std::allocator, llvm::ConstantAggregateZero*>>>>>::_M_insert_unique(std::_Rb_tree_iterator, llvm::ConstantAggregateZero*>>>>, std::pair, llvm::ConstantAggregateZero*>>> const&)" was returned + + + // {"_ZNSt8_Rb_treeIPKN4llvm11DerivedTypeESt4pairIKS3_St17_Rb_tree_iteratorIS4_IKS4_IPKNS0_4TypeEcEPNS0_21ConstantAggregateZeroEEEESt10_Select1stISG_ESt4lessIS3_ESaISG_EE16_M_insert_uniqueERKSG_", + // "std::_Rb_tree const, llvm::ConstantAggregateZero*>>>, std::_Select1st const, llvm::ConstantAggregateZero*>>>>, std::less, std::allocator const, llvm::ConstantAggregateZero*>>>>>::_M_insert_unique(std::pair const, llvm::ConstantAggregateZero*>>> const&)"}, + // "std::_Rb_tree, llvm::ConstantAggregateZero*>>>, std::_Select1st, llvm::ConstantAggregateZero*>>>>, std::less, std::allocator, llvm::ConstantAggregateZero*>>>>>::_M_insert_unique(std::pair, llvm::ConstantAggregateZero*>>> const&)" was returned + + + // {"_ZNSt8_Rb_treeIPKN4llvm11DerivedTypeESt4pairIKS3_St17_Rb_tree_iteratorIS4_IKS4_IPKNS0_4TypeEcEPNS0_21ConstantAggregateZeroEEEESt10_Select1stISG_ESt4lessIS3_ESaISG_EE5eraseES6_ISG_ESN_", + // "std::_Rb_tree const, llvm::ConstantAggregateZero*>>>, std::_Select1st const, llvm::ConstantAggregateZero*>>>>, std::less, std::allocator const, llvm::ConstantAggregateZero*>>>>>::erase(std::_Rb_tree_iterator const, llvm::ConstantAggregateZero*>>>>, std::_Rb_tree_iterator const, llvm::ConstantAggregateZero*>>>>)"}, + // "std::_Rb_tree, llvm::ConstantAggregateZero*>>>, std::_Select1st, llvm::ConstantAggregateZero*>>>>, std::less, std::allocator, llvm::ConstantAggregateZero*>>>>>::erase(std::_Rb_tree_iterator, llvm::ConstantAggregateZero*>>>>, , llvm::ConstantAggregateZero*>>>>)" was returned + + + // {"_ZNSt8_Rb_treeIPKN4llvm11DerivedTypeESt4pairIKS3_St17_Rb_tree_iteratorIS4_IKS4_IPKNS0_4TypeEcEPNS0_21ConstantAggregateZeroEEEESt10_Select1stISG_ESt4lessIS3_ESaISG_EE8_M_eraseEPSt13_Rb_tree_nodeISG_E", + // "std::_Rb_tree const, llvm::ConstantAggregateZero*>>>, std::_Select1st const, llvm::ConstantAggregateZero*>>>>, std::less, std::allocator const, llvm::ConstantAggregateZero*>>>>>::_M_erase(std::_Rb_tree_node const, llvm::ConstantAggregateZero*>>>>*)"}, + // "std::_Rb_tree, llvm::ConstantAggregateZero*>>>, std::_Select1st, llvm::ConstantAggregateZero*>>>>, std::less, std::allocator, llvm::ConstantAggregateZero*>>>>>::_M_erase(std::_Rb_tree_node, llvm::ConstantAggregateZero*>>>>*)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm4TypeEcES0_IKS5_PNS1_21ConstantAggregateZeroEESt10_Select1stIS9_ESt4lessIS5_ESaIS9_EE16_M_insert_uniqueERKS9_", + // "std::_Rb_tree, std::pair const, llvm::ConstantAggregateZero*>, std::_Select1st const, llvm::ConstantAggregateZero*>>, std::less>, std::allocator const, llvm::ConstantAggregateZero*>>>::_M_insert_unique(std::pair const, llvm::ConstantAggregateZero*> const&)"}, + // "std::_Rb_tree, std::pair const, llvm::ConstantAggregateZero*>, std::_Select1st< const, llvm::ConstantAggregateZero*>>, std::less>, std::allocator< const, llvm::ConstantAggregateZero*>>>::_M_insert_unique( const, llvm::ConstantAggregateZero*> const&)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm4TypeEcES0_IKS5_PNS1_21ConstantAggregateZeroEESt10_Select1stIS9_ESt4lessIS5_ESaIS9_EE8_M_eraseEPSt13_Rb_tree_nodeIS9_E", + // "std::_Rb_tree, std::pair const, llvm::ConstantAggregateZero*>, std::_Select1st const, llvm::ConstantAggregateZero*>>, std::less>, std::allocator const, llvm::ConstantAggregateZero*>>>::_M_erase(std::_Rb_tree_node const, llvm::ConstantAggregateZero*>>*)"}, + // "std::_Rb_tree, std::pair const, llvm::ConstantAggregateZero*>, std::_Select1st< const, llvm::ConstantAggregateZero*>>, std::less>, std::allocator< const, llvm::ConstantAggregateZero*>>>::_M_erase(std::_Rb_tree_node< const, llvm::ConstantAggregateZero*>>*)" was returned + + + // {"_ZNSt8_Rb_treeIPN4llvm21ConstantAggregateZeroESt4pairIKS2_St17_Rb_tree_iteratorIS3_IKS3_IPKNS0_4TypeEcES2_EEESt10_Select1stISD_ESt4lessIS2_ESaISD_EE8_M_eraseEPSt13_Rb_tree_nodeISD_E", + // "std::_Rb_tree const, llvm::ConstantAggregateZero*>>>, std::_Select1st const, llvm::ConstantAggregateZero*>>>>, std::less, std::allocator const, llvm::ConstantAggregateZero*>>>>>::_M_erase(std::_Rb_tree_node const, llvm::ConstantAggregateZero*>>>>*)"}, + // "std::_Rb_tree, llvm::ConstantAggregateZero*>>>, std::_Select1st, llvm::ConstantAggregateZero*>>>>, std::less, std::allocator, llvm::ConstantAggregateZero*>>>>>::_M_erase(std::_Rb_tree_node, llvm::ConstantAggregateZero*>>>>*)" was returned + + + // {"_ZN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_9ArrayTypeENS_13ConstantArrayELb1EED0Ev", + // "llvm::ConstantUniqueMap>, llvm::ArrayType, llvm::ConstantArray, true>::~ConstantUniqueMap()"}, + // got error + + + // {"_ZN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_9ArrayTypeENS_13ConstantArrayELb1EE18refineAbstractTypeEPKNS_11DerivedTypeEPKNS_4TypeE", + // "llvm::ConstantUniqueMap>, llvm::ArrayType, llvm::ConstantArray, true>::refineAbstractType(llvm::DerivedType const*, llvm::Type const*)"}, + // got error + + + // {"_ZN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_9ArrayTypeENS_13ConstantArrayELb1EE18typeBecameConcreteEPKNS_11DerivedTypeE", + // "llvm::ConstantUniqueMap>, llvm::ArrayType, llvm::ConstantArray, true>::typeBecameConcrete(llvm::DerivedType const*)"}, + // got error + + + // {"_ZNK4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_9ArrayTypeENS_13ConstantArrayELb1EE4dumpEv", + // "llvm::ConstantUniqueMap>, llvm::ArrayType, llvm::ConstantArray, true>::dump() const"}, + // got error + + {"_ZN4llvm15ConstantKeyDataINS_13ConstantArrayEE10getValTypeEPS1_", "llvm::ConstantKeyData::getValType(llvm::ConstantArray*)"}, + + // {"_ZN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_9ArrayTypeENS_13ConstantArrayELb1EE21UpdateAbstractTypeMapEPKNS_11DerivedTypeESt17_Rb_tree_iteratorISt4pairIKSD_IPKS6_S5_EPS7_EE", + // "llvm::ConstantUniqueMap>, llvm::ArrayType, llvm::ConstantArray, true>::UpdateAbstractTypeMap(llvm::DerivedType const*, std::_Rb_tree_iterator>> const, llvm::ConstantArray*>>)"}, + // got error + + + // {"_ZNSt8_Rb_treeIPKN4llvm11DerivedTypeESt4pairIKS3_St17_Rb_tree_iteratorIS4_IKS4_IPKNS0_9ArrayTypeESt6vectorIPNS0_8ConstantESaISC_EEEPNS0_13ConstantArrayEEEESt10_Select1stISL_ESt4lessIS3_ESaISL_EE16_M_insert_uniqueES6_ISL_ERKSL_", + // "std::_Rb_tree>> const, llvm::ConstantArray*>>>, std::_Select1st>> const, llvm::ConstantArray*>>>>, std::less, std::allocator>> const, llvm::ConstantArray*>>>>>::_M_insert_unique(std::_Rb_tree_iterator>> const, llvm::ConstantArray*>>>>, std::pair>> const, llvm::ConstantArray*>>> const&)"}, + // "std::_Rb_tree>>, llvm::ConstantArray*>>>, std::_Select1st>>, llvm::ConstantArray*>>>>, std::less, std::allocator>>, llvm::ConstantArray*>>>>>::_M_insert_unique(std::_Rb_tree_iterator>>, llvm::ConstantArray*>>>>, std::pair>>, llvm::ConstantArray*>>> const&)" was returned + + + // {"_ZNSt8_Rb_treeIPKN4llvm11DerivedTypeESt4pairIKS3_St17_Rb_tree_iteratorIS4_IKS4_IPKNS0_9ArrayTypeESt6vectorIPNS0_8ConstantESaISC_EEEPNS0_13ConstantArrayEEEESt10_Select1stISL_ESt4lessIS3_ESaISL_EE16_M_insert_uniqueERKSL_", + // "std::_Rb_tree>> const, llvm::ConstantArray*>>>, std::_Select1st>> const, llvm::ConstantArray*>>>>, std::less, std::allocator>> const, llvm::ConstantArray*>>>>>::_M_insert_unique(std::pair>> const, llvm::ConstantArray*>>> const&)"}, + // "std::_Rb_tree>>, llvm::ConstantArray*>>>, std::_Select1st>>, llvm::ConstantArray*>>>>, std::less, std::allocator>>, llvm::ConstantArray*>>>>>::_M_insert_unique(std::pair>>, llvm::ConstantArray*>>> const&)" was returned + + + // {"_ZNSt8_Rb_treeIPN4llvm13ConstantArrayESt4pairIKS2_St17_Rb_tree_iteratorIS3_IKS3_IPKNS0_9ArrayTypeESt6vectorIPNS0_8ConstantESaISB_EEES2_EEESt10_Select1stISI_ESt4lessIS2_ESaISI_EE16_M_insert_uniqueES5_ISI_ERKSI_", + // "std::_Rb_tree>> const, llvm::ConstantArray*>>>, std::_Select1st>> const, llvm::ConstantArray*>>>>, std::less, std::allocator>> const, llvm::ConstantArray*>>>>>::_M_insert_unique(std::_Rb_tree_iterator>> const, llvm::ConstantArray*>>>>, std::pair>> const, llvm::ConstantArray*>>> const&)"}, + // "std::_Rb_tree>>, llvm::ConstantArray*>>>, std::_Select1st, std::less, std::allocator>::_M_insert_unique(std::_Rb_tree_iterator, std::_Select1st const&)" was returned + + + // {"_ZNSt8_Rb_treeIPN4llvm13ConstantArrayESt4pairIKS2_St17_Rb_tree_iteratorIS3_IKS3_IPKNS0_9ArrayTypeESt6vectorIPNS0_8ConstantESaISB_EEES2_EEESt10_Select1stISI_ESt4lessIS2_ESaISI_EE16_M_insert_uniqueERKSI_", + // "std::_Rb_tree>> const, llvm::ConstantArray*>>>, std::_Select1st>> const, llvm::ConstantArray*>>>>, std::less, std::allocator>> const, llvm::ConstantArray*>>>>>::_M_insert_unique(std::pair>> const, llvm::ConstantArray*>>> const&)"}, + // "std::_Rb_tree>>, llvm::ConstantArray*>>>, std::_Select1st, std::less, std::allocator>::_M_insert_unique(std::_Select1st const&)" was returned + + + // {"_ZNSt8_Rb_treeIPKN4llvm11DerivedTypeESt4pairIKS3_St17_Rb_tree_iteratorIS4_IKS4_IPKNS0_9ArrayTypeESt6vectorIPNS0_8ConstantESaISC_EEEPNS0_13ConstantArrayEEEESt10_Select1stISL_ESt4lessIS3_ESaISL_EE5eraseES6_ISL_ESS_", + // "std::_Rb_tree>> const, llvm::ConstantArray*>>>, std::_Select1st>> const, llvm::ConstantArray*>>>>, std::less, std::allocator>> const, llvm::ConstantArray*>>>>>::erase(std::_Rb_tree_iterator>> const, llvm::ConstantArray*>>>>, std::_Rb_tree_iterator>> const, llvm::ConstantArray*>>>>)"}, + // "std::_Rb_tree>>, llvm::ConstantArray*>>>, std::_Select1st>>, llvm::ConstantArray*>>>>, std::less, std::allocator>>, llvm::ConstantArray*>>>>>::erase(std::_Rb_tree_iterator>>, llvm::ConstantArray*>>>>, >>, llvm::ConstantArray*>>>>)" was returned + + + // {"_ZNSt8_Rb_treeIPKN4llvm11DerivedTypeESt4pairIKS3_St17_Rb_tree_iteratorIS4_IKS4_IPKNS0_9ArrayTypeESt6vectorIPNS0_8ConstantESaISC_EEEPNS0_13ConstantArrayEEEESt10_Select1stISL_ESt4lessIS3_ESaISL_EE8_M_eraseEPSt13_Rb_tree_nodeISL_E", + // "std::_Rb_tree>> const, llvm::ConstantArray*>>>, std::_Select1st>> const, llvm::ConstantArray*>>>>, std::less, std::allocator>> const, llvm::ConstantArray*>>>>>::_M_erase(std::_Rb_tree_node>> const, llvm::ConstantArray*>>>>*)"}, + // "std::_Rb_tree>>, llvm::ConstantArray*>>>, std::_Select1st>>, llvm::ConstantArray*>>>>, std::less, std::allocator>>, llvm::ConstantArray*>>>>>::_M_erase(std::_Rb_tree_node>>, llvm::ConstantArray*>>>>*)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm9ArrayTypeESt6vectorIPNS1_8ConstantESaIS7_EEES0_IKSA_PNS1_13ConstantArrayEESt10_Select1stISE_ESt4lessISA_ESaISE_EE4findERSB_", + // "std::_Rb_tree>>, std::pair>> const, llvm::ConstantArray*>, std::_Select1st>> const, llvm::ConstantArray*>>, std::less>>>, std::allocator>> const, llvm::ConstantArray*>>>::find(std::pair>> const&)"}, + // "std::_Rb_tree>>, std::pair>> const, llvm::ConstantArray*>, std::_Select1st<>> const, llvm::ConstantArray*>>, std::less>>>, std::allocator<>> const, llvm::ConstantArray*>>>::find(std::pair>> const&)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm9ArrayTypeESt6vectorIPNS1_8ConstantESaIS7_EEES0_IKSA_PNS1_13ConstantArrayEESt10_Select1stISE_ESt4lessISA_ESaISE_EE16_M_insert_uniqueERKSE_", + // "std::_Rb_tree>>, std::pair>> const, llvm::ConstantArray*>, std::_Select1st>> const, llvm::ConstantArray*>>, std::less>>>, std::allocator>> const, llvm::ConstantArray*>>>::_M_insert_unique(std::pair>> const, llvm::ConstantArray*> const&)"}, + // "std::_Rb_tree>>, std::pair>> const, llvm::ConstantArray*>, std::_Select1st<>> const, llvm::ConstantArray*>>, std::less>>>, std::allocator<>> const, llvm::ConstantArray*>>>::_M_insert_unique(>> const, llvm::ConstantArray*> const&)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm9ArrayTypeESt6vectorIPNS1_8ConstantESaIS7_EEES0_IKSA_PNS1_13ConstantArrayEESt10_Select1stISE_ESt4lessISA_ESaISE_EE9_M_insertEPSt18_Rb_tree_node_baseSM_RKSE_", + // "std::_Rb_tree>>, std::pair>> const, llvm::ConstantArray*>, std::_Select1st>> const, llvm::ConstantArray*>>, std::less>>>, std::allocator>> const, llvm::ConstantArray*>>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair>> const, llvm::ConstantArray*> const&)"}, + // "std::_Rb_tree>>, std::pair>> const, llvm::ConstantArray*>, std::_Select1st<>> const, llvm::ConstantArray*>>, std::less>>>, std::allocator<>> const, llvm::ConstantArray*>>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, >> const, llvm::ConstantArray*> const&)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm9ArrayTypeESt6vectorIPNS1_8ConstantESaIS7_EEES0_IKSA_PNS1_13ConstantArrayEESt10_Select1stISE_ESt4lessISA_ESaISE_EE14_M_create_nodeERKSE_", + // "std::_Rb_tree>>, std::pair>> const, llvm::ConstantArray*>, std::_Select1st>> const, llvm::ConstantArray*>>, std::less>>>, std::allocator>> const, llvm::ConstantArray*>>>::_M_create_node(std::pair>> const, llvm::ConstantArray*> const&)"}, + // "std::_Rb_tree>>, std::pair>> const, llvm::ConstantArray*>, std::_Select1st<>> const, llvm::ConstantArray*>>, std::less>>>, std::allocator<>> const, llvm::ConstantArray*>>>::_M_create_node(>> const, llvm::ConstantArray*> const&)" was returned + + {"_ZNSt6vectorIPN4llvm8ConstantESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::Constant* const&)"}, + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm9ArrayTypeESt6vectorIPNS1_8ConstantESaIS7_EEES0_IKSA_PNS1_13ConstantArrayEESt10_Select1stISE_ESt4lessISA_ESaISE_EE8_M_eraseEPSt13_Rb_tree_nodeISE_E", + // "std::_Rb_tree>>, std::pair>> const, llvm::ConstantArray*>, std::_Select1st>> const, llvm::ConstantArray*>>, std::less>>>, std::allocator>> const, llvm::ConstantArray*>>>::_M_erase(std::_Rb_tree_node>> const, llvm::ConstantArray*>>*)"}, + // "std::_Rb_tree>>, std::pair>> const, llvm::ConstantArray*>, std::_Select1st<>> const, llvm::ConstantArray*>>, std::less>>>, std::allocator<>> const, llvm::ConstantArray*>>>::_M_erase(std::_Rb_tree_node<>> const, llvm::ConstantArray*>>*)" was returned + + + // {"_ZNSt8_Rb_treeIPN4llvm13ConstantArrayESt4pairIKS2_St17_Rb_tree_iteratorIS3_IKS3_IPKNS0_9ArrayTypeESt6vectorIPNS0_8ConstantESaISB_EEES2_EEESt10_Select1stISI_ESt4lessIS2_ESaISI_EE8_M_eraseEPSt13_Rb_tree_nodeISI_E", + // "std::_Rb_tree>> const, llvm::ConstantArray*>>>, std::_Select1st>> const, llvm::ConstantArray*>>>>, std::less, std::allocator>> const, llvm::ConstantArray*>>>>>::_M_erase(std::_Rb_tree_node>> const, llvm::ConstantArray*>>>>*)"}, + // "std::_Rb_tree>>, llvm::ConstantArray*>>>, std::_Select1st, std::less, std::allocator>::_M_erase(std::_Rb_tree_node*)" was returned + + + // {"_ZN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_10StructTypeENS_14ConstantStructELb1EED0Ev", + // "llvm::ConstantUniqueMap>, llvm::StructType, llvm::ConstantStruct, true>::~ConstantUniqueMap()"}, + // got error + + + // {"_ZN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_10StructTypeENS_14ConstantStructELb1EE18refineAbstractTypeEPKNS_11DerivedTypeEPKNS_4TypeE", + // "llvm::ConstantUniqueMap>, llvm::StructType, llvm::ConstantStruct, true>::refineAbstractType(llvm::DerivedType const*, llvm::Type const*)"}, + // got error + + + // {"_ZN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_10StructTypeENS_14ConstantStructELb1EE18typeBecameConcreteEPKNS_11DerivedTypeE", + // "llvm::ConstantUniqueMap>, llvm::StructType, llvm::ConstantStruct, true>::typeBecameConcrete(llvm::DerivedType const*)"}, + // got error + + + // {"_ZNK4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_10StructTypeENS_14ConstantStructELb1EE4dumpEv", + // "llvm::ConstantUniqueMap>, llvm::StructType, llvm::ConstantStruct, true>::dump() const"}, + // got error + + {"_ZN4llvm15ConstantKeyDataINS_14ConstantStructEE10getValTypeEPS1_", "llvm::ConstantKeyData::getValType(llvm::ConstantStruct*)"}, + + // {"_ZN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_10StructTypeENS_14ConstantStructELb1EE21UpdateAbstractTypeMapEPKNS_11DerivedTypeESt17_Rb_tree_iteratorISt4pairIKSD_IPKS6_S5_EPS7_EE", + // "llvm::ConstantUniqueMap>, llvm::StructType, llvm::ConstantStruct, true>::UpdateAbstractTypeMap(llvm::DerivedType const*, std::_Rb_tree_iterator>> const, llvm::ConstantStruct*>>)"}, + // got error + + + // {"_ZNSt8_Rb_treeIPKN4llvm11DerivedTypeESt4pairIKS3_St17_Rb_tree_iteratorIS4_IKS4_IPKNS0_10StructTypeESt6vectorIPNS0_8ConstantESaISC_EEEPNS0_14ConstantStructEEEESt10_Select1stISL_ESt4lessIS3_ESaISL_EE16_M_insert_uniqueES6_ISL_ERKSL_", + // "std::_Rb_tree>> const, llvm::ConstantStruct*>>>, std::_Select1st>> const, llvm::ConstantStruct*>>>>, std::less, std::allocator>> const, llvm::ConstantStruct*>>>>>::_M_insert_unique(std::_Rb_tree_iterator>> const, llvm::ConstantStruct*>>>>, std::pair>> const, llvm::ConstantStruct*>>> const&)"}, + // "std::_Rb_tree>>, llvm::ConstantStruct*>>>, std::_Select1st>>, llvm::ConstantStruct*>>>>, std::less, std::allocator>>, llvm::ConstantStruct*>>>>>::_M_insert_unique(std::_Rb_tree_iterator>>, llvm::ConstantStruct*>>>>, std::pair>>, llvm::ConstantStruct*>>> const&)" was returned + + + // {"_ZNSt8_Rb_treeIPKN4llvm11DerivedTypeESt4pairIKS3_St17_Rb_tree_iteratorIS4_IKS4_IPKNS0_10StructTypeESt6vectorIPNS0_8ConstantESaISC_EEEPNS0_14ConstantStructEEEESt10_Select1stISL_ESt4lessIS3_ESaISL_EE16_M_insert_uniqueERKSL_", + // "std::_Rb_tree>> const, llvm::ConstantStruct*>>>, std::_Select1st>> const, llvm::ConstantStruct*>>>>, std::less, std::allocator>> const, llvm::ConstantStruct*>>>>>::_M_insert_unique(std::pair>> const, llvm::ConstantStruct*>>> const&)"}, + // "std::_Rb_tree>>, llvm::ConstantStruct*>>>, std::_Select1st>>, llvm::ConstantStruct*>>>>, std::less, std::allocator>>, llvm::ConstantStruct*>>>>>::_M_insert_unique(std::pair>>, llvm::ConstantStruct*>>> const&)" was returned + + + // {"_ZNSt8_Rb_treeIPN4llvm14ConstantStructESt4pairIKS2_St17_Rb_tree_iteratorIS3_IKS3_IPKNS0_10StructTypeESt6vectorIPNS0_8ConstantESaISB_EEES2_EEESt10_Select1stISI_ESt4lessIS2_ESaISI_EE16_M_insert_uniqueES5_ISI_ERKSI_", + // "std::_Rb_tree>> const, llvm::ConstantStruct*>>>, std::_Select1st>> const, llvm::ConstantStruct*>>>>, std::less, std::allocator>> const, llvm::ConstantStruct*>>>>>::_M_insert_unique(std::_Rb_tree_iterator>> const, llvm::ConstantStruct*>>>>, std::pair>> const, llvm::ConstantStruct*>>> const&)"}, + // "std::_Rb_tree>>, llvm::ConstantStruct*>>>, std::_Select1st, std::less, std::allocator>::_M_insert_unique(std::_Rb_tree_iterator, std::_Select1st const&)" was returned + + + // {"_ZNSt8_Rb_treeIPN4llvm14ConstantStructESt4pairIKS2_St17_Rb_tree_iteratorIS3_IKS3_IPKNS0_10StructTypeESt6vectorIPNS0_8ConstantESaISB_EEES2_EEESt10_Select1stISI_ESt4lessIS2_ESaISI_EE16_M_insert_uniqueERKSI_", + // "std::_Rb_tree>> const, llvm::ConstantStruct*>>>, std::_Select1st>> const, llvm::ConstantStruct*>>>>, std::less, std::allocator>> const, llvm::ConstantStruct*>>>>>::_M_insert_unique(std::pair>> const, llvm::ConstantStruct*>>> const&)"}, + // "std::_Rb_tree>>, llvm::ConstantStruct*>>>, std::_Select1st, std::less, std::allocator>::_M_insert_unique(std::_Select1st const&)" was returned + + + // {"_ZNSt8_Rb_treeIPKN4llvm11DerivedTypeESt4pairIKS3_St17_Rb_tree_iteratorIS4_IKS4_IPKNS0_10StructTypeESt6vectorIPNS0_8ConstantESaISC_EEEPNS0_14ConstantStructEEEESt10_Select1stISL_ESt4lessIS3_ESaISL_EE5eraseES6_ISL_ESS_", + // "std::_Rb_tree>> const, llvm::ConstantStruct*>>>, std::_Select1st>> const, llvm::ConstantStruct*>>>>, std::less, std::allocator>> const, llvm::ConstantStruct*>>>>>::erase(std::_Rb_tree_iterator>> const, llvm::ConstantStruct*>>>>, std::_Rb_tree_iterator>> const, llvm::ConstantStruct*>>>>)"}, + // "std::_Rb_tree>>, llvm::ConstantStruct*>>>, std::_Select1st>>, llvm::ConstantStruct*>>>>, std::less, std::allocator>>, llvm::ConstantStruct*>>>>>::erase(std::_Rb_tree_iterator>>, llvm::ConstantStruct*>>>>, >>, llvm::ConstantStruct*>>>>)" was returned + + + // {"_ZNSt8_Rb_treeIPKN4llvm11DerivedTypeESt4pairIKS3_St17_Rb_tree_iteratorIS4_IKS4_IPKNS0_10StructTypeESt6vectorIPNS0_8ConstantESaISC_EEEPNS0_14ConstantStructEEEESt10_Select1stISL_ESt4lessIS3_ESaISL_EE8_M_eraseEPSt13_Rb_tree_nodeISL_E", + // "std::_Rb_tree>> const, llvm::ConstantStruct*>>>, std::_Select1st>> const, llvm::ConstantStruct*>>>>, std::less, std::allocator>> const, llvm::ConstantStruct*>>>>>::_M_erase(std::_Rb_tree_node>> const, llvm::ConstantStruct*>>>>*)"}, + // "std::_Rb_tree>>, llvm::ConstantStruct*>>>, std::_Select1st>>, llvm::ConstantStruct*>>>>, std::less, std::allocator>>, llvm::ConstantStruct*>>>>>::_M_erase(std::_Rb_tree_node>>, llvm::ConstantStruct*>>>>*)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm10StructTypeESt6vectorIPNS1_8ConstantESaIS7_EEES0_IKSA_PNS1_14ConstantStructEESt10_Select1stISE_ESt4lessISA_ESaISE_EE4findERSB_", + // "std::_Rb_tree>>, std::pair>> const, llvm::ConstantStruct*>, std::_Select1st>> const, llvm::ConstantStruct*>>, std::less>>>, std::allocator>> const, llvm::ConstantStruct*>>>::find(std::pair>> const&)"}, + // "std::_Rb_tree>>, std::pair>> const, llvm::ConstantStruct*>, std::_Select1st<>> const, llvm::ConstantStruct*>>, std::less>>>, std::allocator<>> const, llvm::ConstantStruct*>>>::find(std::pair>> const&)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm10StructTypeESt6vectorIPNS1_8ConstantESaIS7_EEES0_IKSA_PNS1_14ConstantStructEESt10_Select1stISE_ESt4lessISA_ESaISE_EE16_M_insert_uniqueERKSE_", + // "std::_Rb_tree>>, std::pair>> const, llvm::ConstantStruct*>, std::_Select1st>> const, llvm::ConstantStruct*>>, std::less>>>, std::allocator>> const, llvm::ConstantStruct*>>>::_M_insert_unique(std::pair>> const, llvm::ConstantStruct*> const&)"}, + // "std::_Rb_tree>>, std::pair>> const, llvm::ConstantStruct*>, std::_Select1st<>> const, llvm::ConstantStruct*>>, std::less>>>, std::allocator<>> const, llvm::ConstantStruct*>>>::_M_insert_unique(>> const, llvm::ConstantStruct*> const&)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm10StructTypeESt6vectorIPNS1_8ConstantESaIS7_EEES0_IKSA_PNS1_14ConstantStructEESt10_Select1stISE_ESt4lessISA_ESaISE_EE9_M_insertEPSt18_Rb_tree_node_baseSM_RKSE_", + // "std::_Rb_tree>>, std::pair>> const, llvm::ConstantStruct*>, std::_Select1st>> const, llvm::ConstantStruct*>>, std::less>>>, std::allocator>> const, llvm::ConstantStruct*>>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair>> const, llvm::ConstantStruct*> const&)"}, + // "std::_Rb_tree>>, std::pair>> const, llvm::ConstantStruct*>, std::_Select1st<>> const, llvm::ConstantStruct*>>, std::less>>>, std::allocator<>> const, llvm::ConstantStruct*>>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, >> const, llvm::ConstantStruct*> const&)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm10StructTypeESt6vectorIPNS1_8ConstantESaIS7_EEES0_IKSA_PNS1_14ConstantStructEESt10_Select1stISE_ESt4lessISA_ESaISE_EE14_M_create_nodeERKSE_", + // "std::_Rb_tree>>, std::pair>> const, llvm::ConstantStruct*>, std::_Select1st>> const, llvm::ConstantStruct*>>, std::less>>>, std::allocator>> const, llvm::ConstantStruct*>>>::_M_create_node(std::pair>> const, llvm::ConstantStruct*> const&)"}, + // "std::_Rb_tree>>, std::pair>> const, llvm::ConstantStruct*>, std::_Select1st<>> const, llvm::ConstantStruct*>>, std::less>>>, std::allocator<>> const, llvm::ConstantStruct*>>>::_M_create_node(>> const, llvm::ConstantStruct*> const&)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm10StructTypeESt6vectorIPNS1_8ConstantESaIS7_EEES0_IKSA_PNS1_14ConstantStructEESt10_Select1stISE_ESt4lessISA_ESaISE_EE8_M_eraseEPSt13_Rb_tree_nodeISE_E", + // "std::_Rb_tree>>, std::pair>> const, llvm::ConstantStruct*>, std::_Select1st>> const, llvm::ConstantStruct*>>, std::less>>>, std::allocator>> const, llvm::ConstantStruct*>>>::_M_erase(std::_Rb_tree_node>> const, llvm::ConstantStruct*>>*)"}, + // "std::_Rb_tree>>, std::pair>> const, llvm::ConstantStruct*>, std::_Select1st<>> const, llvm::ConstantStruct*>>, std::less>>>, std::allocator<>> const, llvm::ConstantStruct*>>>::_M_erase(std::_Rb_tree_node<>> const, llvm::ConstantStruct*>>*)" was returned + + + // {"_ZNSt8_Rb_treeIPN4llvm14ConstantStructESt4pairIKS2_St17_Rb_tree_iteratorIS3_IKS3_IPKNS0_10StructTypeESt6vectorIPNS0_8ConstantESaISB_EEES2_EEESt10_Select1stISI_ESt4lessIS2_ESaISI_EE8_M_eraseEPSt13_Rb_tree_nodeISI_E", + // "std::_Rb_tree>> const, llvm::ConstantStruct*>>>, std::_Select1st>> const, llvm::ConstantStruct*>>>>, std::less, std::allocator>> const, llvm::ConstantStruct*>>>>>::_M_erase(std::_Rb_tree_node>> const, llvm::ConstantStruct*>>>>*)"}, + // "std::_Rb_tree>>, llvm::ConstantStruct*>>>, std::_Select1st, std::less, std::allocator>::_M_erase(std::_Rb_tree_node*)" was returned + + + // {"_ZN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_10VectorTypeENS_14ConstantVectorELb0EED0Ev", + // "llvm::ConstantUniqueMap>, llvm::VectorType, llvm::ConstantVector, false>::~ConstantUniqueMap()"}, + // got error + + + // {"_ZN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_10VectorTypeENS_14ConstantVectorELb0EE18refineAbstractTypeEPKNS_11DerivedTypeEPKNS_4TypeE", + // "llvm::ConstantUniqueMap>, llvm::VectorType, llvm::ConstantVector, false>::refineAbstractType(llvm::DerivedType const*, llvm::Type const*)"}, + // got error + + + // {"_ZN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_10VectorTypeENS_14ConstantVectorELb0EE18typeBecameConcreteEPKNS_11DerivedTypeE", + // "llvm::ConstantUniqueMap>, llvm::VectorType, llvm::ConstantVector, false>::typeBecameConcrete(llvm::DerivedType const*)"}, + // got error + + + // {"_ZNK4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_10VectorTypeENS_14ConstantVectorELb0EE4dumpEv", + // "llvm::ConstantUniqueMap>, llvm::VectorType, llvm::ConstantVector, false>::dump() const"}, + // got error + + {"_ZN4llvm15ConstantKeyDataINS_14ConstantVectorEE10getValTypeEPS1_", "llvm::ConstantKeyData::getValType(llvm::ConstantVector*)"}, + + // {"_ZN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_10VectorTypeENS_14ConstantVectorELb0EE21UpdateAbstractTypeMapEPKNS_11DerivedTypeESt17_Rb_tree_iteratorISt4pairIKSD_IPKS6_S5_EPS7_EE", + // "llvm::ConstantUniqueMap>, llvm::VectorType, llvm::ConstantVector, false>::UpdateAbstractTypeMap(llvm::DerivedType const*, std::_Rb_tree_iterator>> const, llvm::ConstantVector*>>)"}, + // got error + + + // {"_ZNSt8_Rb_treeIPKN4llvm11DerivedTypeESt4pairIKS3_St17_Rb_tree_iteratorIS4_IKS4_IPKNS0_10VectorTypeESt6vectorIPNS0_8ConstantESaISC_EEEPNS0_14ConstantVectorEEEESt10_Select1stISL_ESt4lessIS3_ESaISL_EE16_M_insert_uniqueES6_ISL_ERKSL_", + // "std::_Rb_tree>> const, llvm::ConstantVector*>>>, std::_Select1st>> const, llvm::ConstantVector*>>>>, std::less, std::allocator>> const, llvm::ConstantVector*>>>>>::_M_insert_unique(std::_Rb_tree_iterator>> const, llvm::ConstantVector*>>>>, std::pair>> const, llvm::ConstantVector*>>> const&)"}, + // "std::_Rb_tree>>, llvm::ConstantVector*>>>, std::_Select1st>>, llvm::ConstantVector*>>>>, std::less, std::allocator>>, llvm::ConstantVector*>>>>>::_M_insert_unique(std::_Rb_tree_iterator>>, llvm::ConstantVector*>>>>, std::pair>>, llvm::ConstantVector*>>> const&)" was returned + + + // {"_ZNSt8_Rb_treeIPKN4llvm11DerivedTypeESt4pairIKS3_St17_Rb_tree_iteratorIS4_IKS4_IPKNS0_10VectorTypeESt6vectorIPNS0_8ConstantESaISC_EEEPNS0_14ConstantVectorEEEESt10_Select1stISL_ESt4lessIS3_ESaISL_EE16_M_insert_uniqueERKSL_", + // "std::_Rb_tree>> const, llvm::ConstantVector*>>>, std::_Select1st>> const, llvm::ConstantVector*>>>>, std::less, std::allocator>> const, llvm::ConstantVector*>>>>>::_M_insert_unique(std::pair>> const, llvm::ConstantVector*>>> const&)"}, + // "std::_Rb_tree>>, llvm::ConstantVector*>>>, std::_Select1st>>, llvm::ConstantVector*>>>>, std::less, std::allocator>>, llvm::ConstantVector*>>>>>::_M_insert_unique(std::pair>>, llvm::ConstantVector*>>> const&)" was returned + + + // {"_ZNSt8_Rb_treeIPKN4llvm11DerivedTypeESt4pairIKS3_St17_Rb_tree_iteratorIS4_IKS4_IPKNS0_10VectorTypeESt6vectorIPNS0_8ConstantESaISC_EEEPNS0_14ConstantVectorEEEESt10_Select1stISL_ESt4lessIS3_ESaISL_EE5eraseES6_ISL_ESS_", + // "std::_Rb_tree>> const, llvm::ConstantVector*>>>, std::_Select1st>> const, llvm::ConstantVector*>>>>, std::less, std::allocator>> const, llvm::ConstantVector*>>>>>::erase(std::_Rb_tree_iterator>> const, llvm::ConstantVector*>>>>, std::_Rb_tree_iterator>> const, llvm::ConstantVector*>>>>)"}, + // "std::_Rb_tree>>, llvm::ConstantVector*>>>, std::_Select1st>>, llvm::ConstantVector*>>>>, std::less, std::allocator>>, llvm::ConstantVector*>>>>>::erase(std::_Rb_tree_iterator>>, llvm::ConstantVector*>>>>, >>, llvm::ConstantVector*>>>>)" was returned + + + // {"_ZNSt8_Rb_treeIPKN4llvm11DerivedTypeESt4pairIKS3_St17_Rb_tree_iteratorIS4_IKS4_IPKNS0_10VectorTypeESt6vectorIPNS0_8ConstantESaISC_EEEPNS0_14ConstantVectorEEEESt10_Select1stISL_ESt4lessIS3_ESaISL_EE8_M_eraseEPSt13_Rb_tree_nodeISL_E", + // "std::_Rb_tree>> const, llvm::ConstantVector*>>>, std::_Select1st>> const, llvm::ConstantVector*>>>>, std::less, std::allocator>> const, llvm::ConstantVector*>>>>>::_M_erase(std::_Rb_tree_node>> const, llvm::ConstantVector*>>>>*)"}, + // "std::_Rb_tree>>, llvm::ConstantVector*>>>, std::_Select1st>>, llvm::ConstantVector*>>>>, std::less, std::allocator>>, llvm::ConstantVector*>>>>>::_M_erase(std::_Rb_tree_node>>, llvm::ConstantVector*>>>>*)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm10VectorTypeESt6vectorIPNS1_8ConstantESaIS7_EEES0_IKSA_PNS1_14ConstantVectorEESt10_Select1stISE_ESt4lessISA_ESaISE_EE4findERSB_", + // "std::_Rb_tree>>, std::pair>> const, llvm::ConstantVector*>, std::_Select1st>> const, llvm::ConstantVector*>>, std::less>>>, std::allocator>> const, llvm::ConstantVector*>>>::find(std::pair>> const&)"}, + // "std::_Rb_tree>>, std::pair>> const, llvm::ConstantVector*>, std::_Select1st<>> const, llvm::ConstantVector*>>, std::less>>>, std::allocator<>> const, llvm::ConstantVector*>>>::find(std::pair>> const&)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm10VectorTypeESt6vectorIPNS1_8ConstantESaIS7_EEES0_IKSA_PNS1_14ConstantVectorEESt10_Select1stISE_ESt4lessISA_ESaISE_EE16_M_insert_uniqueERKSE_", + // "std::_Rb_tree>>, std::pair>> const, llvm::ConstantVector*>, std::_Select1st>> const, llvm::ConstantVector*>>, std::less>>>, std::allocator>> const, llvm::ConstantVector*>>>::_M_insert_unique(std::pair>> const, llvm::ConstantVector*> const&)"}, + // "std::_Rb_tree>>, std::pair>> const, llvm::ConstantVector*>, std::_Select1st<>> const, llvm::ConstantVector*>>, std::less>>>, std::allocator<>> const, llvm::ConstantVector*>>>::_M_insert_unique(>> const, llvm::ConstantVector*> const&)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm10VectorTypeESt6vectorIPNS1_8ConstantESaIS7_EEES0_IKSA_PNS1_14ConstantVectorEESt10_Select1stISE_ESt4lessISA_ESaISE_EE9_M_insertEPSt18_Rb_tree_node_baseSM_RKSE_", + // "std::_Rb_tree>>, std::pair>> const, llvm::ConstantVector*>, std::_Select1st>> const, llvm::ConstantVector*>>, std::less>>>, std::allocator>> const, llvm::ConstantVector*>>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair>> const, llvm::ConstantVector*> const&)"}, + // "std::_Rb_tree>>, std::pair>> const, llvm::ConstantVector*>, std::_Select1st<>> const, llvm::ConstantVector*>>, std::less>>>, std::allocator<>> const, llvm::ConstantVector*>>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, >> const, llvm::ConstantVector*> const&)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm10VectorTypeESt6vectorIPNS1_8ConstantESaIS7_EEES0_IKSA_PNS1_14ConstantVectorEESt10_Select1stISE_ESt4lessISA_ESaISE_EE14_M_create_nodeERKSE_", + // "std::_Rb_tree>>, std::pair>> const, llvm::ConstantVector*>, std::_Select1st>> const, llvm::ConstantVector*>>, std::less>>>, std::allocator>> const, llvm::ConstantVector*>>>::_M_create_node(std::pair>> const, llvm::ConstantVector*> const&)"}, + // "std::_Rb_tree>>, std::pair>> const, llvm::ConstantVector*>, std::_Select1st<>> const, llvm::ConstantVector*>>, std::less>>>, std::allocator<>> const, llvm::ConstantVector*>>>::_M_create_node(>> const, llvm::ConstantVector*> const&)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm10VectorTypeESt6vectorIPNS1_8ConstantESaIS7_EEES0_IKSA_PNS1_14ConstantVectorEESt10_Select1stISE_ESt4lessISA_ESaISE_EE8_M_eraseEPSt13_Rb_tree_nodeISE_E", + // "std::_Rb_tree>>, std::pair>> const, llvm::ConstantVector*>, std::_Select1st>> const, llvm::ConstantVector*>>, std::less>>>, std::allocator>> const, llvm::ConstantVector*>>>::_M_erase(std::_Rb_tree_node>> const, llvm::ConstantVector*>>*)"}, + // "std::_Rb_tree>>, std::pair>> const, llvm::ConstantVector*>, std::_Select1st<>> const, llvm::ConstantVector*>>, std::less>>>, std::allocator<>> const, llvm::ConstantVector*>>>::_M_erase(std::_Rb_tree_node<>> const, llvm::ConstantVector*>>*)" was returned + + + // {"_ZNSt8_Rb_treeIPN4llvm14ConstantVectorESt4pairIKS2_St17_Rb_tree_iteratorIS3_IKS3_IPKNS0_10VectorTypeESt6vectorIPNS0_8ConstantESaISB_EEES2_EEESt10_Select1stISI_ESt4lessIS2_ESaISI_EE8_M_eraseEPSt13_Rb_tree_nodeISI_E", + // "std::_Rb_tree>> const, llvm::ConstantVector*>>>, std::_Select1st>> const, llvm::ConstantVector*>>>>, std::less, std::allocator>> const, llvm::ConstantVector*>>>>>::_M_erase(std::_Rb_tree_node>> const, llvm::ConstantVector*>>>>*)"}, + // "std::_Rb_tree>>, llvm::ConstantVector*>>>, std::_Select1st, std::less, std::allocator>::_M_erase(std::_Rb_tree_node*)" was returned + + {"_ZN4llvm17ConstantUniqueMapIcNS_11PointerTypeENS_19ConstantPointerNullELb0EED0Ev", "llvm::ConstantUniqueMap::~ConstantUniqueMap()"}, + {"_ZN4llvm17ConstantUniqueMapIcNS_11PointerTypeENS_19ConstantPointerNullELb0EE18refineAbstractTypeEPKNS_11DerivedTypeEPKNS_4TypeE", "llvm::ConstantUniqueMap::refineAbstractType(llvm::DerivedType const*, llvm::Type const*)"}, + {"_ZN4llvm17ConstantUniqueMapIcNS_11PointerTypeENS_19ConstantPointerNullELb0EE18typeBecameConcreteEPKNS_11DerivedTypeE", "llvm::ConstantUniqueMap::typeBecameConcrete(llvm::DerivedType const*)"}, + {"_ZNK4llvm17ConstantUniqueMapIcNS_11PointerTypeENS_19ConstantPointerNullELb0EE4dumpEv", "llvm::ConstantUniqueMap::dump() const"}, + + // {"_ZN4llvm17ConstantUniqueMapIcNS_11PointerTypeENS_19ConstantPointerNullELb0EE21UpdateAbstractTypeMapEPKNS_11DerivedTypeESt17_Rb_tree_iteratorISt4pairIKS8_IPKS1_cEPS2_EE", + // "llvm::ConstantUniqueMap::UpdateAbstractTypeMap(llvm::DerivedType const*, std::_Rb_tree_iterator const, llvm::ConstantPointerNull*>>)"}, + // "llvm::ConstantUniqueMap::UpdateAbstractTypeMap(llvm::DerivedType const*, std::_Rb_tree_iterator, llvm::ConstantPointerNull*>>)" was returned + + + // {"_ZNSt8_Rb_treeIPKN4llvm11DerivedTypeESt4pairIKS3_St17_Rb_tree_iteratorIS4_IKS4_IPKNS0_11PointerTypeEcEPNS0_19ConstantPointerNullEEEESt10_Select1stISG_ESt4lessIS3_ESaISG_EE16_M_insert_uniqueES6_ISG_ERKSG_", + // "std::_Rb_tree const, llvm::ConstantPointerNull*>>>, std::_Select1st const, llvm::ConstantPointerNull*>>>>, std::less, std::allocator const, llvm::ConstantPointerNull*>>>>>::_M_insert_unique(std::_Rb_tree_iterator const, llvm::ConstantPointerNull*>>>>, std::pair const, llvm::ConstantPointerNull*>>> const&)"}, + // "std::_Rb_tree, llvm::ConstantPointerNull*>>>, std::_Select1st, llvm::ConstantPointerNull*>>>>, std::less, std::allocator, llvm::ConstantPointerNull*>>>>>::_M_insert_unique(std::_Rb_tree_iterator, llvm::ConstantPointerNull*>>>>, std::pair, llvm::ConstantPointerNull*>>> const&)" was returned + + + // {"_ZNSt8_Rb_treeIPKN4llvm11DerivedTypeESt4pairIKS3_St17_Rb_tree_iteratorIS4_IKS4_IPKNS0_11PointerTypeEcEPNS0_19ConstantPointerNullEEEESt10_Select1stISG_ESt4lessIS3_ESaISG_EE16_M_insert_uniqueERKSG_", + // "std::_Rb_tree const, llvm::ConstantPointerNull*>>>, std::_Select1st const, llvm::ConstantPointerNull*>>>>, std::less, std::allocator const, llvm::ConstantPointerNull*>>>>>::_M_insert_unique(std::pair const, llvm::ConstantPointerNull*>>> const&)"}, + // "std::_Rb_tree, llvm::ConstantPointerNull*>>>, std::_Select1st, llvm::ConstantPointerNull*>>>>, std::less, std::allocator, llvm::ConstantPointerNull*>>>>>::_M_insert_unique(std::pair, llvm::ConstantPointerNull*>>> const&)" was returned + + + // {"_ZNSt8_Rb_treeIPKN4llvm11DerivedTypeESt4pairIKS3_St17_Rb_tree_iteratorIS4_IKS4_IPKNS0_11PointerTypeEcEPNS0_19ConstantPointerNullEEEESt10_Select1stISG_ESt4lessIS3_ESaISG_EE5eraseES6_ISG_ESN_", + // "std::_Rb_tree const, llvm::ConstantPointerNull*>>>, std::_Select1st const, llvm::ConstantPointerNull*>>>>, std::less, std::allocator const, llvm::ConstantPointerNull*>>>>>::erase(std::_Rb_tree_iterator const, llvm::ConstantPointerNull*>>>>, std::_Rb_tree_iterator const, llvm::ConstantPointerNull*>>>>)"}, + // "std::_Rb_tree, llvm::ConstantPointerNull*>>>, std::_Select1st, llvm::ConstantPointerNull*>>>>, std::less, std::allocator, llvm::ConstantPointerNull*>>>>>::erase(std::_Rb_tree_iterator, llvm::ConstantPointerNull*>>>>, , llvm::ConstantPointerNull*>>>>)" was returned + + + // {"_ZNSt8_Rb_treeIPKN4llvm11DerivedTypeESt4pairIKS3_St17_Rb_tree_iteratorIS4_IKS4_IPKNS0_11PointerTypeEcEPNS0_19ConstantPointerNullEEEESt10_Select1stISG_ESt4lessIS3_ESaISG_EE8_M_eraseEPSt13_Rb_tree_nodeISG_E", + // "std::_Rb_tree const, llvm::ConstantPointerNull*>>>, std::_Select1st const, llvm::ConstantPointerNull*>>>>, std::less, std::allocator const, llvm::ConstantPointerNull*>>>>>::_M_erase(std::_Rb_tree_node const, llvm::ConstantPointerNull*>>>>*)"}, + // "std::_Rb_tree, llvm::ConstantPointerNull*>>>, std::_Select1st, llvm::ConstantPointerNull*>>>>, std::less, std::allocator, llvm::ConstantPointerNull*>>>>>::_M_erase(std::_Rb_tree_node, llvm::ConstantPointerNull*>>>>*)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm11PointerTypeEcES0_IKS5_PNS1_19ConstantPointerNullEESt10_Select1stIS9_ESt4lessIS5_ESaIS9_EE16_M_insert_uniqueERKS9_", + // "std::_Rb_tree, std::pair const, llvm::ConstantPointerNull*>, std::_Select1st const, llvm::ConstantPointerNull*>>, std::less>, std::allocator const, llvm::ConstantPointerNull*>>>::_M_insert_unique(std::pair const, llvm::ConstantPointerNull*> const&)"}, + // "std::_Rb_tree, std::pair const, llvm::ConstantPointerNull*>, std::_Select1st< const, llvm::ConstantPointerNull*>>, std::less>, std::allocator< const, llvm::ConstantPointerNull*>>>::_M_insert_unique( const, llvm::ConstantPointerNull*> const&)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm11PointerTypeEcES0_IKS5_PNS1_19ConstantPointerNullEESt10_Select1stIS9_ESt4lessIS5_ESaIS9_EE8_M_eraseEPSt13_Rb_tree_nodeIS9_E", + // "std::_Rb_tree, std::pair const, llvm::ConstantPointerNull*>, std::_Select1st const, llvm::ConstantPointerNull*>>, std::less>, std::allocator const, llvm::ConstantPointerNull*>>>::_M_erase(std::_Rb_tree_node const, llvm::ConstantPointerNull*>>*)"}, + // "std::_Rb_tree, std::pair const, llvm::ConstantPointerNull*>, std::_Select1st< const, llvm::ConstantPointerNull*>>, std::less>, std::allocator< const, llvm::ConstantPointerNull*>>>::_M_erase(std::_Rb_tree_node< const, llvm::ConstantPointerNull*>>*)" was returned + + + // {"_ZNSt8_Rb_treeIPN4llvm19ConstantPointerNullESt4pairIKS2_St17_Rb_tree_iteratorIS3_IKS3_IPKNS0_11PointerTypeEcES2_EEESt10_Select1stISD_ESt4lessIS2_ESaISD_EE8_M_eraseEPSt13_Rb_tree_nodeISD_E", + // "std::_Rb_tree const, llvm::ConstantPointerNull*>>>, std::_Select1st const, llvm::ConstantPointerNull*>>>>, std::less, std::allocator const, llvm::ConstantPointerNull*>>>>>::_M_erase(std::_Rb_tree_node const, llvm::ConstantPointerNull*>>>>*)"}, + // "std::_Rb_tree, llvm::ConstantPointerNull*>>>, std::_Select1st, llvm::ConstantPointerNull*>>>>, std::less, std::allocator, llvm::ConstantPointerNull*>>>>>::_M_erase(std::_Rb_tree_node, llvm::ConstantPointerNull*>>>>*)" was returned + + {"_ZN4llvm17ConstantUniqueMapIcNS_4TypeENS_10UndefValueELb0EED0Ev", "llvm::ConstantUniqueMap::~ConstantUniqueMap()"}, + {"_ZN4llvm17ConstantUniqueMapIcNS_4TypeENS_10UndefValueELb0EE18refineAbstractTypeEPKNS_11DerivedTypeEPKS1_", "llvm::ConstantUniqueMap::refineAbstractType(llvm::DerivedType const*, llvm::Type const*)"}, + {"_ZN4llvm17ConstantUniqueMapIcNS_4TypeENS_10UndefValueELb0EE18typeBecameConcreteEPKNS_11DerivedTypeE", "llvm::ConstantUniqueMap::typeBecameConcrete(llvm::DerivedType const*)"}, + {"_ZNK4llvm17ConstantUniqueMapIcNS_4TypeENS_10UndefValueELb0EE4dumpEv", "llvm::ConstantUniqueMap::dump() const"}, + + // {"_ZN4llvm17ConstantUniqueMapIcNS_4TypeENS_10UndefValueELb0EE21UpdateAbstractTypeMapEPKNS_11DerivedTypeESt17_Rb_tree_iteratorISt4pairIKS8_IPKS1_cEPS2_EE", + // "llvm::ConstantUniqueMap::UpdateAbstractTypeMap(llvm::DerivedType const*, std::_Rb_tree_iterator const, llvm::UndefValue*>>)"}, + // "llvm::ConstantUniqueMap::UpdateAbstractTypeMap(llvm::DerivedType const*, std::_Rb_tree_iterator, llvm::UndefValue*>>)" was returned + + + // {"_ZNSt8_Rb_treeIPKN4llvm11DerivedTypeESt4pairIKS3_St17_Rb_tree_iteratorIS4_IKS4_IPKNS0_4TypeEcEPNS0_10UndefValueEEEESt10_Select1stISG_ESt4lessIS3_ESaISG_EE16_M_insert_uniqueES6_ISG_ERKSG_", + // "std::_Rb_tree const, llvm::UndefValue*>>>, std::_Select1st const, llvm::UndefValue*>>>>, std::less, std::allocator const, llvm::UndefValue*>>>>>::_M_insert_unique(std::_Rb_tree_iterator const, llvm::UndefValue*>>>>, std::pair const, llvm::UndefValue*>>> const&)"}, + // "std::_Rb_tree, llvm::UndefValue*>>>, std::_Select1st, llvm::UndefValue*>>>>, std::less, std::allocator, llvm::UndefValue*>>>>>::_M_insert_unique(std::_Rb_tree_iterator, llvm::UndefValue*>>>>, std::pair, llvm::UndefValue*>>> const&)" was returned + + + // {"_ZNSt8_Rb_treeIPKN4llvm11DerivedTypeESt4pairIKS3_St17_Rb_tree_iteratorIS4_IKS4_IPKNS0_4TypeEcEPNS0_10UndefValueEEEESt10_Select1stISG_ESt4lessIS3_ESaISG_EE16_M_insert_uniqueERKSG_", + // "std::_Rb_tree const, llvm::UndefValue*>>>, std::_Select1st const, llvm::UndefValue*>>>>, std::less, std::allocator const, llvm::UndefValue*>>>>>::_M_insert_unique(std::pair const, llvm::UndefValue*>>> const&)"}, + // "std::_Rb_tree, llvm::UndefValue*>>>, std::_Select1st, llvm::UndefValue*>>>>, std::less, std::allocator, llvm::UndefValue*>>>>>::_M_insert_unique(std::pair, llvm::UndefValue*>>> const&)" was returned + + + // {"_ZNSt8_Rb_treeIPKN4llvm11DerivedTypeESt4pairIKS3_St17_Rb_tree_iteratorIS4_IKS4_IPKNS0_4TypeEcEPNS0_10UndefValueEEEESt10_Select1stISG_ESt4lessIS3_ESaISG_EE5eraseES6_ISG_ESN_", + // "std::_Rb_tree const, llvm::UndefValue*>>>, std::_Select1st const, llvm::UndefValue*>>>>, std::less, std::allocator const, llvm::UndefValue*>>>>>::erase(std::_Rb_tree_iterator const, llvm::UndefValue*>>>>, std::_Rb_tree_iterator const, llvm::UndefValue*>>>>)"}, + // "std::_Rb_tree, llvm::UndefValue*>>>, std::_Select1st, llvm::UndefValue*>>>>, std::less, std::allocator, llvm::UndefValue*>>>>>::erase(std::_Rb_tree_iterator, llvm::UndefValue*>>>>, , llvm::UndefValue*>>>>)" was returned + + + // {"_ZNSt8_Rb_treeIPKN4llvm11DerivedTypeESt4pairIKS3_St17_Rb_tree_iteratorIS4_IKS4_IPKNS0_4TypeEcEPNS0_10UndefValueEEEESt10_Select1stISG_ESt4lessIS3_ESaISG_EE8_M_eraseEPSt13_Rb_tree_nodeISG_E", + // "std::_Rb_tree const, llvm::UndefValue*>>>, std::_Select1st const, llvm::UndefValue*>>>>, std::less, std::allocator const, llvm::UndefValue*>>>>>::_M_erase(std::_Rb_tree_node const, llvm::UndefValue*>>>>*)"}, + // "std::_Rb_tree, llvm::UndefValue*>>>, std::_Select1st, llvm::UndefValue*>>>>, std::less, std::allocator, llvm::UndefValue*>>>>>::_M_erase(std::_Rb_tree_node, llvm::UndefValue*>>>>*)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm4TypeEcES0_IKS5_PNS1_10UndefValueEESt10_Select1stIS9_ESt4lessIS5_ESaIS9_EE16_M_insert_uniqueERKS9_", + // "std::_Rb_tree, std::pair const, llvm::UndefValue*>, std::_Select1st const, llvm::UndefValue*>>, std::less>, std::allocator const, llvm::UndefValue*>>>::_M_insert_unique(std::pair const, llvm::UndefValue*> const&)"}, + // "std::_Rb_tree, std::pair const, llvm::UndefValue*>, std::_Select1st< const, llvm::UndefValue*>>, std::less>, std::allocator< const, llvm::UndefValue*>>>::_M_insert_unique( const, llvm::UndefValue*> const&)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm4TypeEcES0_IKS5_PNS1_10UndefValueEESt10_Select1stIS9_ESt4lessIS5_ESaIS9_EE8_M_eraseEPSt13_Rb_tree_nodeIS9_E", + // "std::_Rb_tree, std::pair const, llvm::UndefValue*>, std::_Select1st const, llvm::UndefValue*>>, std::less>, std::allocator const, llvm::UndefValue*>>>::_M_erase(std::_Rb_tree_node const, llvm::UndefValue*>>*)"}, + // "std::_Rb_tree, std::pair const, llvm::UndefValue*>, std::_Select1st< const, llvm::UndefValue*>>, std::less>, std::allocator< const, llvm::UndefValue*>>>::_M_erase(std::_Rb_tree_node< const, llvm::UndefValue*>>*)" was returned + + + // {"_ZNSt8_Rb_treeIPN4llvm10UndefValueESt4pairIKS2_St17_Rb_tree_iteratorIS3_IKS3_IPKNS0_4TypeEcES2_EEESt10_Select1stISD_ESt4lessIS2_ESaISD_EE8_M_eraseEPSt13_Rb_tree_nodeISD_E", + // "std::_Rb_tree const, llvm::UndefValue*>>>, std::_Select1st const, llvm::UndefValue*>>>>, std::less, std::allocator const, llvm::UndefValue*>>>>>::_M_erase(std::_Rb_tree_node const, llvm::UndefValue*>>>>*)"}, + // "std::_Rb_tree, llvm::UndefValue*>>>, std::_Select1st, llvm::UndefValue*>>>>, std::less, std::allocator, llvm::UndefValue*>>>>>::_M_erase(std::_Rb_tree_node, llvm::UndefValue*>>>>*)" was returned + + {"_ZN4llvm17ConstantUniqueMapINS_14ExprMapKeyTypeENS_4TypeENS_12ConstantExprELb0EED0Ev", "llvm::ConstantUniqueMap::~ConstantUniqueMap()"}, + {"_ZN4llvm17ConstantUniqueMapINS_14ExprMapKeyTypeENS_4TypeENS_12ConstantExprELb0EE18refineAbstractTypeEPKNS_11DerivedTypeEPKS2_", "llvm::ConstantUniqueMap::refineAbstractType(llvm::DerivedType const*, llvm::Type const*)"}, + {"_ZN4llvm17ConstantUniqueMapINS_14ExprMapKeyTypeENS_4TypeENS_12ConstantExprELb0EE18typeBecameConcreteEPKNS_11DerivedTypeE", "llvm::ConstantUniqueMap::typeBecameConcrete(llvm::DerivedType const*)"}, + {"_ZNK4llvm17ConstantUniqueMapINS_14ExprMapKeyTypeENS_4TypeENS_12ConstantExprELb0EE4dumpEv", "llvm::ConstantUniqueMap::dump() const"}, + {"_ZN4llvm15ConstantKeyDataINS_12ConstantExprEE10getValTypeEPS1_", "llvm::ConstantKeyData::getValType(llvm::ConstantExpr*)"}, + + // {"_ZN4llvm17ConstantUniqueMapINS_14ExprMapKeyTypeENS_4TypeENS_12ConstantExprELb0EE21UpdateAbstractTypeMapEPKNS_11DerivedTypeESt17_Rb_tree_iteratorISt4pairIKS9_IPKS2_S1_EPS3_EE", + // "llvm::ConstantUniqueMap::UpdateAbstractTypeMap(llvm::DerivedType const*, std::_Rb_tree_iterator const, llvm::ConstantExpr*>>)"}, + // "llvm::ConstantUniqueMap::UpdateAbstractTypeMap(llvm::DerivedType const*, std::_Rb_tree_iterator, llvm::ConstantExpr*>>)" was returned + + + // {"_ZNSt8_Rb_treeIPKN4llvm11DerivedTypeESt4pairIKS3_St17_Rb_tree_iteratorIS4_IKS4_IPKNS0_4TypeENS0_14ExprMapKeyTypeEEPNS0_12ConstantExprEEEESt10_Select1stISH_ESt4lessIS3_ESaISH_EE16_M_insert_uniqueES6_ISH_ERKSH_", + // "std::_Rb_tree const, llvm::ConstantExpr*>>>, std::_Select1st const, llvm::ConstantExpr*>>>>, std::less, std::allocator const, llvm::ConstantExpr*>>>>>::_M_insert_unique(std::_Rb_tree_iterator const, llvm::ConstantExpr*>>>>, std::pair const, llvm::ConstantExpr*>>> const&)"}, + // "std::_Rb_tree, llvm::ConstantExpr*>>>, std::_Select1st, llvm::ConstantExpr*>>>>, std::less, std::allocator, llvm::ConstantExpr*>>>>>::_M_insert_unique(std::_Rb_tree_iterator, llvm::ConstantExpr*>>>>, std::pair, llvm::ConstantExpr*>>> const&)" was returned + + + // {"_ZNSt8_Rb_treeIPKN4llvm11DerivedTypeESt4pairIKS3_St17_Rb_tree_iteratorIS4_IKS4_IPKNS0_4TypeENS0_14ExprMapKeyTypeEEPNS0_12ConstantExprEEEESt10_Select1stISH_ESt4lessIS3_ESaISH_EE16_M_insert_uniqueERKSH_", + // "std::_Rb_tree const, llvm::ConstantExpr*>>>, std::_Select1st const, llvm::ConstantExpr*>>>>, std::less, std::allocator const, llvm::ConstantExpr*>>>>>::_M_insert_unique(std::pair const, llvm::ConstantExpr*>>> const&)"}, + // "std::_Rb_tree, llvm::ConstantExpr*>>>, std::_Select1st, llvm::ConstantExpr*>>>>, std::less, std::allocator, llvm::ConstantExpr*>>>>>::_M_insert_unique(std::pair, llvm::ConstantExpr*>>> const&)" was returned + + + // {"_ZNSt8_Rb_treeIPKN4llvm11DerivedTypeESt4pairIKS3_St17_Rb_tree_iteratorIS4_IKS4_IPKNS0_4TypeENS0_14ExprMapKeyTypeEEPNS0_12ConstantExprEEEESt10_Select1stISH_ESt4lessIS3_ESaISH_EE5eraseES6_ISH_ESO_", + // "std::_Rb_tree const, llvm::ConstantExpr*>>>, std::_Select1st const, llvm::ConstantExpr*>>>>, std::less, std::allocator const, llvm::ConstantExpr*>>>>>::erase(std::_Rb_tree_iterator const, llvm::ConstantExpr*>>>>, std::_Rb_tree_iterator const, llvm::ConstantExpr*>>>>)"}, + // "std::_Rb_tree, llvm::ConstantExpr*>>>, std::_Select1st, llvm::ConstantExpr*>>>>, std::less, std::allocator, llvm::ConstantExpr*>>>>>::erase(std::_Rb_tree_iterator, llvm::ConstantExpr*>>>>, , llvm::ConstantExpr*>>>>)" was returned + + + // {"_ZNSt8_Rb_treeIPKN4llvm11DerivedTypeESt4pairIKS3_St17_Rb_tree_iteratorIS4_IKS4_IPKNS0_4TypeENS0_14ExprMapKeyTypeEEPNS0_12ConstantExprEEEESt10_Select1stISH_ESt4lessIS3_ESaISH_EE8_M_eraseEPSt13_Rb_tree_nodeISH_E", + // "std::_Rb_tree const, llvm::ConstantExpr*>>>, std::_Select1st const, llvm::ConstantExpr*>>>>, std::less, std::allocator const, llvm::ConstantExpr*>>>>>::_M_erase(std::_Rb_tree_node const, llvm::ConstantExpr*>>>>*)"}, + // "std::_Rb_tree, llvm::ConstantExpr*>>>, std::_Select1st, llvm::ConstantExpr*>>>>, std::less, std::allocator, llvm::ConstantExpr*>>>>>::_M_erase(std::_Rb_tree_node, llvm::ConstantExpr*>>>>*)" was returned + + {"_ZNK4llvm14ExprMapKeyTypeltERKS0_", "llvm::ExprMapKeyType::operator<(llvm::ExprMapKeyType const&) const"}, + + // {"_ZNSt4pairIS_IPKN4llvm4TypeENS0_14ExprMapKeyTypeEEPNS0_12ConstantExprEEC2ERKS5_RKS7_", + // "std::pair, llvm::ConstantExpr*>::pair(std::pair const&, llvm::ConstantExpr* const&)"}, + // "std::pair, llvm::ConstantExpr*>::pair( const&, llvm::ConstantExpr* const&)" was returned + + + // {"_ZNSt4pairIKS_IPKN4llvm4TypeENS0_14ExprMapKeyTypeEEPNS0_12ConstantExprEEC2IS5_S8_EERKS_IT_T0_E", + // "std::pair const, llvm::ConstantExpr*>::pair, llvm::ConstantExpr*>(std::pair, llvm::ConstantExpr*> const&)"}, + // "std::pair const& std::pair, std::pair const::ConstantExpr*>::pair()" was returned + + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm4TypeENS1_14ExprMapKeyTypeEES0_IKS6_PNS1_12ConstantExprEESt10_Select1stISA_ESt4lessIS6_ESaISA_EE16_M_insert_uniqueERKSA_", + // "std::_Rb_tree, std::pair const, llvm::ConstantExpr*>, std::_Select1st const, llvm::ConstantExpr*>>, std::less>, std::allocator const, llvm::ConstantExpr*>>>::_M_insert_unique(std::pair const, llvm::ConstantExpr*> const&)"}, + // "std::_Rb_tree, std::pair const, llvm::ConstantExpr*>, std::_Select1st< const, llvm::ConstantExpr*>>, std::less>, std::allocator< const, llvm::ConstantExpr*>>>::_M_insert_unique( const, llvm::ConstantExpr*> const&)" was returned + + + // {"_ZN9__gnu_cxx13new_allocatorISt4pairIKS1_IPKN4llvm4TypeENS2_14ExprMapKeyTypeEEPNS2_12ConstantExprEEE9constructEPSB_RKSB_", + // "__gnu_cxx::new_allocator const, llvm::ConstantExpr*>>::construct(std::pair const, llvm::ConstantExpr*>*, std::pair const, llvm::ConstantExpr*> const&)"}, + // "__gnu_cxx::new_allocator, std::pair const::ConstantExpr*>>::construct(std::pair, std::pair const::ConstantExpr*>*, std::pair, std::pair const::ConstantExpr*> const&)" was returned + + + // {"_ZN4llvm14ExprMapKeyTypeC2EjRKSt6vectorIPNS_8ConstantESaIS3_EEttRKNS_11SmallVectorIjLj4EEE", + // "llvm::ExprMapKeyType::ExprMapKeyType(unsigned int, std::vector> const&, unsigned short, unsigned short, llvm::SmallVector const&)"}, + // "llvm::ExprMapKeyType::ExprMapKeyType(unsigned int, std::vector> const&, unsigned short, unsigned short, llvm::SmallVector const&)" was returned + + {"_ZNSt4pairIPKN4llvm4TypeENS0_14ExprMapKeyTypeEEC2ERKS3_RKS4_", "std::pair::pair(llvm::Type const* const&, llvm::ExprMapKeyType const&)"}, + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm4TypeENS1_14ExprMapKeyTypeEES0_IKS6_PNS1_12ConstantExprEESt10_Select1stISA_ESt4lessIS6_ESaISA_EE8_M_eraseEPSt13_Rb_tree_nodeISA_E", + // "std::_Rb_tree, std::pair const, llvm::ConstantExpr*>, std::_Select1st const, llvm::ConstantExpr*>>, std::less>, std::allocator const, llvm::ConstantExpr*>>>::_M_erase(std::_Rb_tree_node const, llvm::ConstantExpr*>>*)"}, + // "std::_Rb_tree, std::pair const, llvm::ConstantExpr*>, std::_Select1st< const, llvm::ConstantExpr*>>, std::less>, std::allocator< const, llvm::ConstantExpr*>>>::_M_erase(std::_Rb_tree_node< const, llvm::ConstantExpr*>>*)" was returned + + + // {"_ZNSt8_Rb_treeIPN4llvm12ConstantExprESt4pairIKS2_St17_Rb_tree_iteratorIS3_IKS3_IPKNS0_4TypeENS0_14ExprMapKeyTypeEES2_EEESt10_Select1stISE_ESt4lessIS2_ESaISE_EE8_M_eraseEPSt13_Rb_tree_nodeISE_E", + // "std::_Rb_tree const, llvm::ConstantExpr*>>>, std::_Select1st const, llvm::ConstantExpr*>>>>, std::less, std::allocator const, llvm::ConstantExpr*>>>>>::_M_erase(std::_Rb_tree_node const, llvm::ConstantExpr*>>>>*)"}, + // "std::_Rb_tree, llvm::ConstantExpr*>>>, std::_Select1st, llvm::ConstantExpr*>>>>, std::less, std::allocator, llvm::ConstantExpr*>>>>>::_M_erase(std::_Rb_tree_node, llvm::ConstantExpr*>>>>*)" was returned + + {"_ZN4llvm17ConstantUniqueMapINS_16InlineAsmKeyTypeENS_11PointerTypeENS_9InlineAsmELb0EED0Ev", "llvm::ConstantUniqueMap::~ConstantUniqueMap()"}, + {"_ZN4llvm17ConstantUniqueMapINS_16InlineAsmKeyTypeENS_11PointerTypeENS_9InlineAsmELb0EE18refineAbstractTypeEPKNS_11DerivedTypeEPKNS_4TypeE", "llvm::ConstantUniqueMap::refineAbstractType(llvm::DerivedType const*, llvm::Type const*)"}, + {"_ZN4llvm17ConstantUniqueMapINS_16InlineAsmKeyTypeENS_11PointerTypeENS_9InlineAsmELb0EE18typeBecameConcreteEPKNS_11DerivedTypeE", "llvm::ConstantUniqueMap::typeBecameConcrete(llvm::DerivedType const*)"}, + {"_ZNK4llvm17ConstantUniqueMapINS_16InlineAsmKeyTypeENS_11PointerTypeENS_9InlineAsmELb0EE4dumpEv", "llvm::ConstantUniqueMap::dump() const"}, + + // {"_ZN4llvm17ConstantUniqueMapINS_16InlineAsmKeyTypeENS_11PointerTypeENS_9InlineAsmELb0EE21UpdateAbstractTypeMapEPKNS_11DerivedTypeESt17_Rb_tree_iteratorISt4pairIKS9_IPKS2_S1_EPS3_EE", + // "llvm::ConstantUniqueMap::UpdateAbstractTypeMap(llvm::DerivedType const*, std::_Rb_tree_iterator const, llvm::InlineAsm*>>)"}, + // got error + + + // {"_ZNSt8_Rb_treeIPKN4llvm11DerivedTypeESt4pairIKS3_St17_Rb_tree_iteratorIS4_IKS4_IPKNS0_11PointerTypeENS0_16InlineAsmKeyTypeEEPNS0_9InlineAsmEEEESt10_Select1stISH_ESt4lessIS3_ESaISH_EE16_M_insert_uniqueES6_ISH_ERKSH_", + // "std::_Rb_tree const, llvm::InlineAsm*>>>, std::_Select1st const, llvm::InlineAsm*>>>>, std::less, std::allocator const, llvm::InlineAsm*>>>>>::_M_insert_unique(std::_Rb_tree_iterator const, llvm::InlineAsm*>>>>, std::pair const, llvm::InlineAsm*>>> const&)"}, + // "std::_Rb_tree, llvm::InlineAsm*>>>, std::_Select1st, std::less, std::allocator>::_M_insert_unique(std::_Rb_tree_iterator, std::_Select1st const&)" was returned + + + // {"_ZNSt8_Rb_treeIPKN4llvm11DerivedTypeESt4pairIKS3_St17_Rb_tree_iteratorIS4_IKS4_IPKNS0_11PointerTypeENS0_16InlineAsmKeyTypeEEPNS0_9InlineAsmEEEESt10_Select1stISH_ESt4lessIS3_ESaISH_EE16_M_insert_uniqueERKSH_", + // "std::_Rb_tree const, llvm::InlineAsm*>>>, std::_Select1st const, llvm::InlineAsm*>>>>, std::less, std::allocator const, llvm::InlineAsm*>>>>>::_M_insert_unique(std::pair const, llvm::InlineAsm*>>> const&)"}, + // "std::_Rb_tree, llvm::InlineAsm*>>>, std::_Select1st, std::less, std::allocator>::_M_insert_unique(std::_Select1st const&)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm11PointerTypeENS1_16InlineAsmKeyTypeEES0_IKS6_PNS1_9InlineAsmEESt10_Select1stISA_ESt4lessIS6_ESaISA_EE5eraseESt17_Rb_tree_iteratorISA_E", + // "std::_Rb_tree, std::pair const, llvm::InlineAsm*>, std::_Select1st const, llvm::InlineAsm*>>, std::less>, std::allocator const, llvm::InlineAsm*>>>::erase(std::_Rb_tree_iterator const, llvm::InlineAsm*>>)"}, + // "std::_Rb_tree, std::pair const, llvm::InlineAsm*>, std::_Select1st, std::less>, std::allocator>::erase(std::_Rb_tree_iterator)" was returned + + + // {"_ZNSt8_Rb_treeIPKN4llvm11DerivedTypeESt4pairIKS3_St17_Rb_tree_iteratorIS4_IKS4_IPKNS0_11PointerTypeENS0_16InlineAsmKeyTypeEEPNS0_9InlineAsmEEEESt10_Select1stISH_ESt4lessIS3_ESaISH_EE5eraseES6_ISH_ESO_", + // "std::_Rb_tree const, llvm::InlineAsm*>>>, std::_Select1st const, llvm::InlineAsm*>>>>, std::less, std::allocator const, llvm::InlineAsm*>>>>>::erase(std::_Rb_tree_iterator const, llvm::InlineAsm*>>>>, std::_Rb_tree_iterator const, llvm::InlineAsm*>>>>)"}, + // got error + + + // {"_ZNSt8_Rb_treeIPKN4llvm11DerivedTypeESt4pairIKS3_St17_Rb_tree_iteratorIS4_IKS4_IPKNS0_11PointerTypeENS0_16InlineAsmKeyTypeEEPNS0_9InlineAsmEEEESt10_Select1stISH_ESt4lessIS3_ESaISH_EE8_M_eraseEPSt13_Rb_tree_nodeISH_E", + // "std::_Rb_tree const, llvm::InlineAsm*>>>, std::_Select1st const, llvm::InlineAsm*>>>>, std::less, std::allocator const, llvm::InlineAsm*>>>>>::_M_erase(std::_Rb_tree_node const, llvm::InlineAsm*>>>>*)"}, + // "std::_Rb_tree, llvm::InlineAsm*>>>, std::_Select1st, std::less, std::allocator>::_M_erase(std::_Rb_tree_node*)" was returned + + {"_ZNK4llvm16InlineAsmKeyTypeltERKS0_", "llvm::InlineAsmKeyType::operator<(llvm::InlineAsmKeyType const&) const"}, + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm11PointerTypeENS1_16InlineAsmKeyTypeEES0_IKS6_PNS1_9InlineAsmEESt10_Select1stISA_ESt4lessIS6_ESaISA_EE16_M_insert_uniqueERKSA_", + // "std::_Rb_tree, std::pair const, llvm::InlineAsm*>, std::_Select1st const, llvm::InlineAsm*>>, std::less>, std::allocator const, llvm::InlineAsm*>>>::_M_insert_unique(std::pair const, llvm::InlineAsm*> const&)"}, + // "std::_Rb_tree, std::pair const, llvm::InlineAsm*>, std::_Select1st, std::less>, std::allocator>::_M_insert_unique(std::_Select1st const&)" was returned + + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm11PointerTypeENS1_16InlineAsmKeyTypeEES0_IKS6_PNS1_9InlineAsmEESt10_Select1stISA_ESt4lessIS6_ESaISA_EE9_M_insertEPSt18_Rb_tree_node_baseSI_RKSA_", + // "std::_Rb_tree, std::pair const, llvm::InlineAsm*>, std::_Select1st const, llvm::InlineAsm*>>, std::less>, std::allocator const, llvm::InlineAsm*>>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair const, llvm::InlineAsm*> const&)"}, + // got error + + + // {"_ZNSt8_Rb_treeISt4pairIPKN4llvm11PointerTypeENS1_16InlineAsmKeyTypeEES0_IKS6_PNS1_9InlineAsmEESt10_Select1stISA_ESt4lessIS6_ESaISA_EE8_M_eraseEPSt13_Rb_tree_nodeISA_E", + // "std::_Rb_tree, std::pair const, llvm::InlineAsm*>, std::_Select1st const, llvm::InlineAsm*>>, std::less>, std::allocator const, llvm::InlineAsm*>>>::_M_erase(std::_Rb_tree_node const, llvm::InlineAsm*>>*)"}, + // "std::_Rb_tree, std::pair const, llvm::InlineAsm*>, std::_Select1st, std::less>, std::allocator>::_M_erase(std::_Rb_tree_node*)" was returned + + + // {"_ZNSt8_Rb_treeIPN4llvm9InlineAsmESt4pairIKS2_St17_Rb_tree_iteratorIS3_IKS3_IPKNS0_11PointerTypeENS0_16InlineAsmKeyTypeEES2_EEESt10_Select1stISE_ESt4lessIS2_ESaISE_EE8_M_eraseEPSt13_Rb_tree_nodeISE_E", + // "std::_Rb_tree const, llvm::InlineAsm*>>>, std::_Select1st const, llvm::InlineAsm*>>>>, std::less, std::allocator const, llvm::InlineAsm*>>>>>::_M_erase(std::_Rb_tree_node const, llvm::InlineAsm*>>>>*)"}, + // "std::_Rb_tree, llvm::InlineAsm*>>>, std::_Select1st, llvm::InlineAsm*>>>>, std::less, std::allocator, llvm::InlineAsm*>>>>>::_M_erase(std::_Rb_tree_node, llvm::InlineAsm*>>>>*)" was returned + + {"_ZN4llvm4TypeD0Ev", "llvm::Type::~Type()"}, + {"_ZN4llvm11IntegerTypeD0Ev", "llvm::IntegerType::~IntegerType()"}, + {"_ZNK4llvm11DerivedType4dumpEv", "llvm::DerivedType::dump() const"}, + {"_ZN4llvm11DerivedTypeD1Ev", "llvm::DerivedType::~DerivedType()"}, + {"_ZN4llvm11DerivedTypeD0Ev", "llvm::DerivedType::~DerivedType()"}, + {"_ZN4llvm11TypeMapBaseD2Ev", "llvm::TypeMapBase::~TypeMapBase()"}, + {"_ZNSt8_Rb_treeIjSt4pairIKjN4llvm12PATypeHolderEESt10_Select1stIS4_ESt4lessIjESaIS4_EE8_M_eraseEPSt13_Rb_tree_nodeIS4_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZNSt8_Rb_treeIN4llvm12ArrayValTypeESt4pairIKS1_NS0_12PATypeHolderEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZNSt8_Rb_treeIN4llvm13VectorValTypeESt4pairIKS1_NS0_12PATypeHolderEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZNSt8_Rb_treeIN4llvm14PointerValTypeESt4pairIKS1_NS0_12PATypeHolderEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZNSt8_Rb_treeIN4llvm15FunctionValTypeESt4pairIKS1_NS0_12PATypeHolderEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZNSt8_Rb_treeIN4llvm13StructValTypeESt4pairIKS1_NS0_12PATypeHolderEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZNSt8_Rb_treeIN4llvm14IntegerValTypeESt4pairIKS1_NS0_12PATypeHolderEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE8_M_eraseEPSt13_Rb_tree_nodeIS5_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZN4llvm8MDStringC1ERNS_11LLVMContextENS_9StringRefE", "llvm::MDString::MDString(llvm::LLVMContext&, llvm::StringRef)"}, + {"_ZN4llvm8MDStringC2ERNS_11LLVMContextENS_9StringRefE", "llvm::MDString::MDString(llvm::LLVMContext&, llvm::StringRef)"}, + {"_ZN4llvm8MDString3getERNS_11LLVMContextENS_9StringRefE", "llvm::MDString::get(llvm::LLVMContext&, llvm::StringRef)"}, + {"_ZN4llvm13MDNodeOperand7deletedEv", "llvm::MDNodeOperand::deleted()"}, + {"_ZN4llvm6MDNode14replaceOperandEPNS_13MDNodeOperandEPNS_5ValueE", "llvm::MDNode::replaceOperand(llvm::MDNodeOperand*, llvm::Value*)"}, + {"_ZN4llvm13MDNodeOperand19allUsesReplacedWithEPNS_5ValueE", "llvm::MDNodeOperand::allUsesReplacedWith(llvm::Value*)"}, + {"_ZN4llvm6MDNodeC1ERNS_11LLVMContextEPKPNS_5ValueEjb", "llvm::MDNode::MDNode(llvm::LLVMContext&, llvm::Value* const*, unsigned int, bool)"}, + {"_ZN4llvm6MDNodeC2ERNS_11LLVMContextEPKPNS_5ValueEjb", "llvm::MDNode::MDNode(llvm::LLVMContext&, llvm::Value* const*, unsigned int, bool)"}, + {"_ZN4llvm6MDNodeD0Ev", "llvm::MDNode::~MDNode()"}, + {"_ZN4llvm6MDNodeD1Ev", "llvm::MDNode::~MDNode()"}, + {"_ZN4llvm6MDNodeD2Ev", "llvm::MDNode::~MDNode()"}, + {"_ZNK4llvm6MDNode11getFunctionEv", "llvm::MDNode::getFunction() const"}, + {"_Z19getFunctionForValuePN4llvm5ValueE", "getFunctionForValue(llvm::Value*)"}, + {"_ZNK4llvm6MDNode10getOperandEj", "llvm::MDNode::getOperand(unsigned int) const"}, + {"_ZN4llvm6MDNode7destroyEv", "llvm::MDNode::destroy()"}, + {"_ZN4llvm6MDNode9getMDNodeERNS_11LLVMContextEPKPNS_5ValueEjNS0_17FunctionLocalnessEb", "llvm::MDNode::getMDNode(llvm::LLVMContext&, llvm::Value* const*, unsigned int, llvm::MDNode::FunctionLocalness, bool)"}, + {"_ZN4llvm6MDNode3getERNS_11LLVMContextEPKPNS_5ValueEj", "llvm::MDNode::get(llvm::LLVMContext&, llvm::Value* const*, unsigned int)"}, + {"_ZN4llvm6MDNode21getWhenValsUnresolvedERNS_11LLVMContextEPKPNS_5ValueEjb", "llvm::MDNode::getWhenValsUnresolved(llvm::LLVMContext&, llvm::Value* const*, unsigned int, bool)"}, + {"_ZN4llvm6MDNode11getIfExistsERNS_11LLVMContextEPKPNS_5ValueEj", "llvm::MDNode::getIfExists(llvm::LLVMContext&, llvm::Value* const*, unsigned int)"}, + {"_ZN4llvm6MDNode12getTemporaryERNS_11LLVMContextEPKPNS_5ValueEj", "llvm::MDNode::getTemporary(llvm::LLVMContext&, llvm::Value* const*, unsigned int)"}, + {"_ZN4llvm6MDNode15deleteTemporaryEPS0_", "llvm::MDNode::deleteTemporary(llvm::MDNode*)"}, + {"_ZNK4llvm6MDNode7ProfileERNS_16FoldingSetNodeIDE", "llvm::MDNode::Profile(llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm6MDNode15setIsNotUniquedEv", "llvm::MDNode::setIsNotUniqued()"}, + {"_ZN4llvm11NamedMDNodeC1ERKNS_5TwineE", "llvm::NamedMDNode::NamedMDNode(llvm::Twine const&)"}, + {"_ZN4llvm11NamedMDNodeC2ERKNS_5TwineE", "llvm::NamedMDNode::NamedMDNode(llvm::Twine const&)"}, + {"_ZN4llvm11NamedMDNodeD1Ev", "llvm::NamedMDNode::~NamedMDNode()"}, + {"_ZN4llvm11NamedMDNodeD2Ev", "llvm::NamedMDNode::~NamedMDNode()"}, + {"_ZN4llvm11NamedMDNode17dropAllReferencesEv", "llvm::NamedMDNode::dropAllReferences()"}, + {"_ZNK4llvm11NamedMDNode14getNumOperandsEv", "llvm::NamedMDNode::getNumOperands() const"}, + {"_ZNK4llvm11NamedMDNode10getOperandEj", "llvm::NamedMDNode::getOperand(unsigned int) const"}, + {"_ZN4llvm11NamedMDNode10addOperandEPNS_6MDNodeE", "llvm::NamedMDNode::addOperand(llvm::MDNode*)"}, + {"_ZN4llvm11NamedMDNode15eraseFromParentEv", "llvm::NamedMDNode::eraseFromParent()"}, + {"_ZNK4llvm11NamedMDNode7getNameEv", "llvm::NamedMDNode::getName() const"}, + {"_ZN4llvm11Instruction11setMetadataEPKcPNS_6MDNodeE", "llvm::Instruction::setMetadata(char const*, llvm::MDNode*)"}, + {"_ZN4llvm11Instruction11setMetadataEjPNS_6MDNodeE", "llvm::Instruction::setMetadata(unsigned int, llvm::MDNode*)"}, + {"_ZNK4llvm11Instruction15getMetadataImplEPKc", "llvm::Instruction::getMetadataImpl(char const*) const"}, + {"_ZNK4llvm11Instruction15getMetadataImplEj", "llvm::Instruction::getMetadataImpl(unsigned int) const"}, + {"_ZNK4llvm11Instruction18getAllMetadataImplERNS_15SmallVectorImplISt4pairIjPNS_6MDNodeEEEE", "llvm::Instruction::getAllMetadataImpl(llvm::SmallVectorImpl>&) const"}, + {"_ZNK4llvm11Instruction35getAllMetadataOtherThanDebugLocImplERNS_15SmallVectorImplISt4pairIjPNS_6MDNodeEEEE", "llvm::Instruction::getAllMetadataOtherThanDebugLocImpl(llvm::SmallVectorImpl>&) const"}, + {"_ZN4llvm11Instruction24clearMetadataHashEntriesEv", "llvm::Instruction::clearMetadataHashEntries()"}, + {"_ZN4llvm25array_pod_sort_comparatorISt4pairIjPNS_6MDNodeEEEEiPKvS6_", "int llvm::array_pod_sort_comparator>(void const*, void const*)"}, + + // {"_ZN4llvm8DenseMapIPKNS_11InstructionENS_11SmallVectorISt4pairIjNS_10TrackingVHINS_6MDNodeEEEELj2EEENS_12DenseMapInfoIS3_EENSB_ISA_EEE5eraseERKS3_", + // "llvm::DenseMap>, 2u>, llvm::DenseMapInfo, llvm::DenseMapInfo>, 2u>>>::erase(llvm::Instruction const* const&)"}, + // "llvm::DenseMap>, 2>, llvm::DenseMapInfo, llvm::DenseMapInfo>, 2>>>::erase(llvm::Instruction const* const&)" was returned + + + // {"_ZN4llvm15SmallVectorImplISt4pairIjPNS_6MDNodeEEE6appendIPKS1_IjNS_10TrackingVHIS2_EEEEEvT_SC_", + // "void llvm::SmallVectorImpl>::append> const*>(std::pair> const*, std::pair> const*)"}, + // "void llvm::SmallVectorImpl>::append>>(unsigned int, unsigned int)" was returned + + {"_ZN4llvm13MDNodeOperandD1Ev", "llvm::MDNodeOperand::~MDNodeOperand()"}, + {"_ZN4llvm13MDNodeOperandD0Ev", "llvm::MDNodeOperand::~MDNodeOperand()"}, + {"_ZN4llvm8MDStringD1Ev", "llvm::MDString::~MDString()"}, + {"_ZN4llvm8MDStringD0Ev", "llvm::MDString::~MDString()"}, + {"_ZN4llvm23SmallVectorTemplateBaseISt4pairIjNS_10TrackingVHINS_6MDNodeEEEELb0EE4growEm", "llvm::SmallVectorTemplateBase>, false>::grow(unsigned long)"}, + + // {"_ZN4llvm8DenseMapIPKNS_11InstructionENS_11SmallVectorISt4pairIjNS_10TrackingVHINS_6MDNodeEEEELj2EEENS_12DenseMapInfoIS3_EENSB_ISA_EEE16FindAndConstructERKS3_", + // "llvm::DenseMap>, 2u>, llvm::DenseMapInfo, llvm::DenseMapInfo>, 2u>>>::FindAndConstruct(llvm::Instruction const* const&)"}, + // "llvm::DenseMap>, 2>, llvm::DenseMapInfo, llvm::DenseMapInfo>, 2>>>::FindAndConstruct(llvm::Instruction const* const&)" was returned + + + // {"_ZN4llvm8DenseMapIPKNS_11InstructionENS_11SmallVectorISt4pairIjNS_10TrackingVHINS_6MDNodeEEEELj2EEENS_12DenseMapInfoIS3_EENSB_ISA_EEE16InsertIntoBucketERKS3_RKSA_PS5_IS3_SA_E", + // "llvm::DenseMap>, 2u>, llvm::DenseMapInfo, llvm::DenseMapInfo>, 2u>>>::InsertIntoBucket(llvm::Instruction const* const&, llvm::SmallVector>, 2u> const&, std::pair>, 2u>>*)"}, + // "llvm::DenseMap>, 2>, llvm::DenseMapInfo, llvm::DenseMapInfo>, 2>>>::InsertIntoBucket(llvm::Instruction const* const&, llvm::SmallVector>, 2> const&, std::pair*>, 2>>)" was returned + + + // {"_ZN4llvm8DenseMapIPKNS_11InstructionENS_11SmallVectorISt4pairIjNS_10TrackingVHINS_6MDNodeEEEELj2EEENS_12DenseMapInfoIS3_EENSB_ISA_EEE4growEj", + // "llvm::DenseMap>, 2u>, llvm::DenseMapInfo, llvm::DenseMapInfo>, 2u>>>::grow(unsigned int)"}, + // "llvm::DenseMap>, 2>, llvm::DenseMapInfo, llvm::DenseMapInfo>, 2>>>::grow(unsigned int)" was returned + + {"_ZN4llvm15SmallVectorImplISt4pairIjNS_10TrackingVHINS_6MDNodeEEEEEaSERKS6_", "llvm::SmallVectorImpl>>::operator=(llvm::SmallVectorImpl>> const&)"}, + {"_ZN4llvm23SmallVectorTemplateBaseINS_10TrackingVHINS_6MDNodeEEELb0EE4growEm", "llvm::SmallVectorTemplateBase, false>::grow(unsigned long)"}, + {"_ZN4llvm9StringMapIPNS_8MDStringENS_15MallocAllocatorEE16GetOrCreateValueIS2_EERNS_14StringMapEntryIS2_EENS_9StringRefET_", "llvm::StringMapEntry& llvm::StringMap::GetOrCreateValue(llvm::StringRef, llvm::MDString*)"}, + {"_ZN4llvm10CallbackVH7deletedEv", "llvm::CallbackVH::deleted()"}, + {"_ZN4llvm10CallbackVH19allUsesReplacedWithEPNS_5ValueE", "llvm::CallbackVH::allUsesReplacedWith(llvm::Value*)"}, + {"_ZN4llvm12ilist_traitsINS_14GlobalVariableEE14createSentinelEv", "llvm::ilist_traits::createSentinel()"}, + {"_ZN4llvm12ilist_traitsINS_11GlobalAliasEE14createSentinelEv", "llvm::ilist_traits::createSentinel()"}, + {"_ZN4llvm6ModuleC1ENS_9StringRefERNS_11LLVMContextE", "llvm::Module::Module(llvm::StringRef, llvm::LLVMContext&)"}, + {"_ZN4llvm6ModuleC2ENS_9StringRefERNS_11LLVMContextE", "llvm::Module::Module(llvm::StringRef, llvm::LLVMContext&)"}, + {"_ZN4llvm6ModuleD1Ev", "llvm::Module::~Module()"}, + {"_ZN4llvm6ModuleD2Ev", "llvm::Module::~Module()"}, + {"_ZN4llvm6Module17dropAllReferencesEv", "llvm::Module::dropAllReferences()"}, + {"_ZNK4llvm6Module13getEndiannessEv", "llvm::Module::getEndianness() const"}, + {"_ZNK4llvm6Module14getPointerSizeEv", "llvm::Module::getPointerSize() const"}, + {"_ZNK4llvm6Module13getNamedValueENS_9StringRefE", "llvm::Module::getNamedValue(llvm::StringRef) const"}, + {"_ZNK4llvm6Module11getMDKindIDENS_9StringRefE", "llvm::Module::getMDKindID(llvm::StringRef) const"}, + {"_ZNK4llvm6Module14getMDKindNamesERNS_15SmallVectorImplINS_9StringRefEEE", "llvm::Module::getMDKindNames(llvm::SmallVectorImpl&) const"}, + {"_ZN4llvm6Module19getOrInsertFunctionENS_9StringRefEPKNS_12FunctionTypeENS_11AttrListPtrE", "llvm::Module::getOrInsertFunction(llvm::StringRef, llvm::FunctionType const*, llvm::AttrListPtr)"}, + {"_ZN4llvm6Module19getOrInsertFunctionENS_9StringRefEPKNS_12FunctionTypeE", "llvm::Module::getOrInsertFunction(llvm::StringRef, llvm::FunctionType const*)"}, + {"_ZN4llvm6Module26getOrInsertTargetIntrinsicENS_9StringRefEPKNS_12FunctionTypeENS_11AttrListPtrE", "llvm::Module::getOrInsertTargetIntrinsic(llvm::StringRef, llvm::FunctionType const*, llvm::AttrListPtr)"}, + {"_ZN4llvm6Module19getOrInsertFunctionENS_9StringRefENS_11AttrListPtrEPKNS_4TypeEz", "llvm::Module::getOrInsertFunction(llvm::StringRef, llvm::AttrListPtr, llvm::Type const*, ...)"}, + {"_ZN4llvm6Module19getOrInsertFunctionENS_9StringRefEPKNS_4TypeEz", "llvm::Module::getOrInsertFunction(llvm::StringRef, llvm::Type const*, ...)"}, + {"_ZNK4llvm6Module11getFunctionENS_9StringRefE", "llvm::Module::getFunction(llvm::StringRef) const"}, + {"_ZNK4llvm6Module17getGlobalVariableENS_9StringRefEb", "llvm::Module::getGlobalVariable(llvm::StringRef, bool) const"}, + {"_ZN4llvm6Module17getOrInsertGlobalENS_9StringRefEPKNS_4TypeE", "llvm::Module::getOrInsertGlobal(llvm::StringRef, llvm::Type const*)"}, + {"_ZNK4llvm6Module13getNamedAliasENS_9StringRefE", "llvm::Module::getNamedAlias(llvm::StringRef) const"}, + {"_ZNK4llvm6Module16getNamedMetadataERKNS_5TwineE", "llvm::Module::getNamedMetadata(llvm::Twine const&) const"}, + {"_ZN4llvm6Module24getOrInsertNamedMetadataENS_9StringRefE", "llvm::Module::getOrInsertNamedMetadata(llvm::StringRef)"}, + {"_ZN4llvm6Module18eraseNamedMetadataEPNS_11NamedMDNodeE", "llvm::Module::eraseNamedMetadata(llvm::NamedMDNode*)"}, + {"_ZN4llvm6Module11addTypeNameENS_9StringRefEPKNS_4TypeE", "llvm::Module::addTypeName(llvm::StringRef, llvm::Type const*)"}, + {"_ZNK4llvm6Module13getTypeByNameENS_9StringRefE", "llvm::Module::getTypeByName(llvm::StringRef) const"}, + {"_ZNK4llvm6Module11getTypeNameEPKNS_4TypeE", "llvm::Module::getTypeName(llvm::Type const*) const"}, + {"_ZN4llvm6Module15setMaterializerEPNS_14GVMaterializerE", "llvm::Module::setMaterializer(llvm::GVMaterializer*)"}, + {"_ZNK4llvm6Module16isMaterializableEPKNS_11GlobalValueE", "llvm::Module::isMaterializable(llvm::GlobalValue const*) const"}, + {"_ZNK4llvm6Module18isDematerializableEPKNS_11GlobalValueE", "llvm::Module::isDematerializable(llvm::GlobalValue const*) const"}, + {"_ZN4llvm6Module11MaterializeEPNS_11GlobalValueEPSs", "llvm::Module::Materialize(llvm::GlobalValue*, std::string*)"}, + {"_ZN4llvm6Module13DematerializeEPNS_11GlobalValueE", "llvm::Module::Dematerialize(llvm::GlobalValue*)"}, + {"_ZN4llvm6Module14MaterializeAllEPSs", "llvm::Module::MaterializeAll(std::string*)"}, + {"_ZN4llvm6Module25MaterializeAllPermanentlyEPSs", "llvm::Module::MaterializeAllPermanently(std::string*)"}, + {"_ZN4llvm6Module10addLibraryENS_9StringRefE", "llvm::Module::addLibrary(llvm::StringRef)"}, + {"_ZN4llvm6Module13removeLibraryENS_9StringRefE", "llvm::Module::removeLibrary(llvm::StringRef)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_14GlobalVariableENS_6ModuleEEC1Ev", "llvm::SymbolTableListTraits::SymbolTableListTraits()"}, + {"_ZN4llvm21SymbolTableListTraitsINS_14GlobalVariableENS_6ModuleEEC2Ev", "llvm::SymbolTableListTraits::SymbolTableListTraits()"}, + {"_ZN4llvm21SymbolTableListTraitsINS_14GlobalVariableENS_6ModuleEE12getListOwnerEv", "llvm::SymbolTableListTraits::getListOwner()"}, + {"_ZN4llvm21SymbolTableListTraitsINS_14GlobalVariableENS_6ModuleEE7getListEPS2_", "llvm::SymbolTableListTraits::getList(llvm::Module*)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_14GlobalVariableENS_6ModuleEE9getSymTabEPS2_", "llvm::SymbolTableListTraits::getSymTab(llvm::Module*)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_14GlobalVariableENS_6ModuleEE5toPtrERNS_16ValueSymbolTableE", "llvm::SymbolTableListTraits::toPtr(llvm::ValueSymbolTable&)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_14GlobalVariableENS_6ModuleEE13addNodeToListEPS1_", "llvm::SymbolTableListTraits::addNodeToList(llvm::GlobalVariable*)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_14GlobalVariableENS_6ModuleEE18removeNodeFromListEPS1_", "llvm::SymbolTableListTraits::removeNodeFromList(llvm::GlobalVariable*)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_14GlobalVariableENS_6ModuleEE21transferNodesFromListERNS_12ilist_traitsIS1_EENS_14ilist_iteratorIS1_EES8_", "llvm::SymbolTableListTraits::transferNodesFromList(llvm::ilist_traits&, llvm::ilist_iterator, llvm::ilist_iterator)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_14GlobalVariableENS_6ModuleEE5toPtrEPNS_16ValueSymbolTableE", "llvm::SymbolTableListTraits::toPtr(llvm::ValueSymbolTable*)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_8FunctionENS_6ModuleEEC1Ev", "llvm::SymbolTableListTraits::SymbolTableListTraits()"}, + {"_ZN4llvm21SymbolTableListTraitsINS_8FunctionENS_6ModuleEEC2Ev", "llvm::SymbolTableListTraits::SymbolTableListTraits()"}, + {"_ZN4llvm21SymbolTableListTraitsINS_8FunctionENS_6ModuleEE12getListOwnerEv", "llvm::SymbolTableListTraits::getListOwner()"}, + {"_ZN4llvm21SymbolTableListTraitsINS_8FunctionENS_6ModuleEE7getListEPS2_", "llvm::SymbolTableListTraits::getList(llvm::Module*)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_8FunctionENS_6ModuleEE9getSymTabEPS2_", "llvm::SymbolTableListTraits::getSymTab(llvm::Module*)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_8FunctionENS_6ModuleEE5toPtrERNS_16ValueSymbolTableE", "llvm::SymbolTableListTraits::toPtr(llvm::ValueSymbolTable&)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_8FunctionENS_6ModuleEE13addNodeToListEPS1_", "llvm::SymbolTableListTraits::addNodeToList(llvm::Function*)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_8FunctionENS_6ModuleEE18removeNodeFromListEPS1_", "llvm::SymbolTableListTraits::removeNodeFromList(llvm::Function*)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_8FunctionENS_6ModuleEE21transferNodesFromListERNS_12ilist_traitsIS1_EENS_14ilist_iteratorIS1_EES8_", "llvm::SymbolTableListTraits::transferNodesFromList(llvm::ilist_traits&, llvm::ilist_iterator, llvm::ilist_iterator)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_8FunctionENS_6ModuleEE5toPtrEPNS_16ValueSymbolTableE", "llvm::SymbolTableListTraits::toPtr(llvm::ValueSymbolTable*)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_11GlobalAliasENS_6ModuleEEC1Ev", "llvm::SymbolTableListTraits::SymbolTableListTraits()"}, + {"_ZN4llvm21SymbolTableListTraitsINS_11GlobalAliasENS_6ModuleEEC2Ev", "llvm::SymbolTableListTraits::SymbolTableListTraits()"}, + {"_ZN4llvm21SymbolTableListTraitsINS_11GlobalAliasENS_6ModuleEE12getListOwnerEv", "llvm::SymbolTableListTraits::getListOwner()"}, + {"_ZN4llvm21SymbolTableListTraitsINS_11GlobalAliasENS_6ModuleEE7getListEPS2_", "llvm::SymbolTableListTraits::getList(llvm::Module*)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_11GlobalAliasENS_6ModuleEE9getSymTabEPS2_", "llvm::SymbolTableListTraits::getSymTab(llvm::Module*)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_11GlobalAliasENS_6ModuleEE5toPtrERNS_16ValueSymbolTableE", "llvm::SymbolTableListTraits::toPtr(llvm::ValueSymbolTable&)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_11GlobalAliasENS_6ModuleEE13addNodeToListEPS1_", "llvm::SymbolTableListTraits::addNodeToList(llvm::GlobalAlias*)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_11GlobalAliasENS_6ModuleEE18removeNodeFromListEPS1_", "llvm::SymbolTableListTraits::removeNodeFromList(llvm::GlobalAlias*)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_11GlobalAliasENS_6ModuleEE21transferNodesFromListERNS_12ilist_traitsIS1_EENS_14ilist_iteratorIS1_EES8_", "llvm::SymbolTableListTraits::transferNodesFromList(llvm::ilist_traits&, llvm::ilist_iterator, llvm::ilist_iterator)"}, + {"_ZN4llvm21SymbolTableListTraitsINS_11GlobalAliasENS_6ModuleEE5toPtrEPNS_16ValueSymbolTableE", "llvm::SymbolTableListTraits::toPtr(llvm::ValueSymbolTable*)"}, + {"_ZN4llvm9StringMapIPNS_11NamedMDNodeENS_15MallocAllocatorEE16GetOrCreateValueIS2_EERNS_14StringMapEntryIS2_EENS_9StringRefET_", "llvm::StringMapEntry& llvm::StringMap::GetOrCreateValue(llvm::StringRef, llvm::NamedMDNode*)"}, + {"_ZNSt6vectorIPKN4llvm4TypeESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::Type const* const&)"}, + {"_ZN4llvm21ilist_sentinel_traitsINS_11GlobalAliasEE10ensureHeadERPS1_", "llvm::ilist_sentinel_traits::ensureHead(llvm::GlobalAlias*&)"}, + {"_ZN4llvm6iplistINS_11GlobalAliasENS_12ilist_traitsIS1_EEE5eraseENS_14ilist_iteratorIS1_EE", "llvm::iplist>::erase(llvm::ilist_iterator)"}, + {"_ZN4llvm6iplistINS_8FunctionENS_12ilist_traitsIS1_EEE5eraseENS_14ilist_iteratorIS1_EE", "llvm::iplist>::erase(llvm::ilist_iterator)"}, + {"_ZN4llvm21ilist_sentinel_traitsINS_14GlobalVariableEE10ensureHeadERPS1_", "llvm::ilist_sentinel_traits::ensureHead(llvm::GlobalVariable*&)"}, + {"_ZN4llvm6iplistINS_14GlobalVariableENS_12ilist_traitsIS1_EEE5eraseENS_14ilist_iteratorIS1_EE", "llvm::iplist>::erase(llvm::ilist_iterator)"}, + {"_ZN4llvm6iplistINS_11GlobalAliasENS_12ilist_traitsIS1_EEED2Ev", "llvm::iplist>::~iplist()"}, + {"_ZN4llvm6iplistINS_14GlobalVariableENS_12ilist_traitsIS1_EEED2Ev", "llvm::iplist>::~iplist()"}, + {"_ZN4llvm4PassC1ENS_8PassKindERc", "llvm::Pass::Pass(llvm::PassKind, char&)"}, + {"_ZN4llvm4PassC2ENS_8PassKindERc", "llvm::Pass::Pass(llvm::PassKind, char&)"}, + {"_ZN4llvm4PassD0Ev", "llvm::Pass::~Pass()"}, + {"_ZN4llvm4PassD1Ev", "llvm::Pass::~Pass()"}, + {"_ZN4llvm4PassD2Ev", "llvm::Pass::~Pass()"}, + {"_ZN4llvm10ModulePassD0Ev", "llvm::ModulePass::~ModulePass()"}, + {"_ZN4llvm10ModulePassD1Ev", "llvm::ModulePass::~ModulePass()"}, + {"_ZN4llvm10ModulePassD2Ev", "llvm::ModulePass::~ModulePass()"}, + {"_ZNK4llvm10ModulePass17createPrinterPassERNS_11raw_ostreamERKSs", "llvm::ModulePass::createPrinterPass(llvm::raw_ostream&, std::string const&) const"}, + {"_ZNK4llvm10ModulePass27getPotentialPassManagerTypeEv", "llvm::ModulePass::getPotentialPassManagerType() const"}, + {"_ZNK4llvm4Pass22mustPreserveAnalysisIDERc", "llvm::Pass::mustPreserveAnalysisID(char&) const"}, + {"_ZN4llvm4Pass17dumpPassStructureEj", "llvm::Pass::dumpPassStructure(unsigned int)"}, + {"_ZNK4llvm4Pass11getPassNameEv", "llvm::Pass::getPassName() const"}, + {"_ZN4llvm4Pass18preparePassManagerERNS_7PMStackE", "llvm::Pass::preparePassManager(llvm::PMStack&)"}, + {"_ZNK4llvm4Pass27getPotentialPassManagerTypeEv", "llvm::Pass::getPotentialPassManagerType() const"}, + {"_ZNK4llvm4Pass16getAnalysisUsageERNS_13AnalysisUsageE", "llvm::Pass::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN4llvm4Pass13releaseMemoryEv", "llvm::Pass::releaseMemory()"}, + {"_ZNK4llvm4Pass14verifyAnalysisEv", "llvm::Pass::verifyAnalysis() const"}, + {"_ZN4llvm4Pass26getAdjustedAnalysisPointerEPKv", "llvm::Pass::getAdjustedAnalysisPointer(void const*)"}, + {"_ZN4llvm4Pass18getAsImmutablePassEv", "llvm::Pass::getAsImmutablePass()"}, + {"_ZN4llvm4Pass18getAsPMDataManagerEv", "llvm::Pass::getAsPMDataManager()"}, + {"_ZN4llvm4Pass11setResolverEPNS_16AnalysisResolverE", "llvm::Pass::setResolver(llvm::AnalysisResolver*)"}, + {"_ZNK4llvm4Pass5printERNS_11raw_ostreamEPKNS_6ModuleE", "llvm::Pass::print(llvm::raw_ostream&, llvm::Module const*) const"}, + {"_ZNK4llvm4Pass4dumpEv", "llvm::Pass::dump() const"}, + {"_ZN4llvm13ImmutablePassD0Ev", "llvm::ImmutablePass::~ImmutablePass()"}, + {"_ZN4llvm13ImmutablePassD1Ev", "llvm::ImmutablePass::~ImmutablePass()"}, + {"_ZN4llvm13ImmutablePassD2Ev", "llvm::ImmutablePass::~ImmutablePass()"}, + {"_ZN4llvm13ImmutablePass14initializePassEv", "llvm::ImmutablePass::initializePass()"}, + {"_ZNK4llvm12FunctionPass17createPrinterPassERNS_11raw_ostreamERKSs", "llvm::FunctionPass::createPrinterPass(llvm::raw_ostream&, std::string const&) const"}, + {"_ZN4llvm12FunctionPass16doInitializationERNS_6ModuleE", "llvm::FunctionPass::doInitialization(llvm::Module&)"}, + {"_ZN4llvm12FunctionPass14doFinalizationERNS_6ModuleE", "llvm::FunctionPass::doFinalization(llvm::Module&)"}, + {"_ZNK4llvm12FunctionPass27getPotentialPassManagerTypeEv", "llvm::FunctionPass::getPotentialPassManagerType() const"}, + {"_ZNK4llvm14BasicBlockPass17createPrinterPassERNS_11raw_ostreamERKSs", "llvm::BasicBlockPass::createPrinterPass(llvm::raw_ostream&, std::string const&) const"}, + {"_ZN4llvm14BasicBlockPass16doInitializationERNS_6ModuleE", "llvm::BasicBlockPass::doInitialization(llvm::Module&)"}, + {"_ZN4llvm14BasicBlockPass16doInitializationERNS_8FunctionE", "llvm::BasicBlockPass::doInitialization(llvm::Function&)"}, + {"_ZN4llvm14BasicBlockPass14doFinalizationERNS_8FunctionE", "llvm::BasicBlockPass::doFinalization(llvm::Function&)"}, + {"_ZN4llvm14BasicBlockPass14doFinalizationERNS_6ModuleE", "llvm::BasicBlockPass::doFinalization(llvm::Module&)"}, + {"_ZNK4llvm14BasicBlockPass27getPotentialPassManagerTypeEv", "llvm::BasicBlockPass::getPotentialPassManagerType() const"}, + {"_ZN4llvm4Pass14lookupPassInfoEPKv", "llvm::Pass::lookupPassInfo(void const*)"}, + {"_ZN4llvm4Pass14lookupPassInfoENS_9StringRefE", "llvm::Pass::lookupPassInfo(llvm::StringRef)"}, + {"_ZNK4llvm8PassInfo10createPassEv", "llvm::PassInfo::createPass() const"}, + {"_ZN4llvm14RegisterAGBaseC1EPKcPKvS4_b", "llvm::RegisterAGBase::RegisterAGBase(char const*, void const*, void const*, bool)"}, + {"_ZN4llvm14RegisterAGBaseC2EPKcPKvS4_b", "llvm::RegisterAGBase::RegisterAGBase(char const*, void const*, void const*, bool)"}, + {"_ZN4llvm24PassRegistrationListenerC1Ev", "llvm::PassRegistrationListener::PassRegistrationListener()"}, + {"_ZN4llvm24PassRegistrationListenerD0Ev", "llvm::PassRegistrationListener::~PassRegistrationListener()"}, + {"_ZN4llvm24PassRegistrationListenerD1Ev", "llvm::PassRegistrationListener::~PassRegistrationListener()"}, + {"_ZN4llvm24PassRegistrationListenerD2Ev", "llvm::PassRegistrationListener::~PassRegistrationListener()"}, + + // {"_ZThn16_N4llvm14PassNameParserD0Ev", + // "non-virtual thunk to llvm::PassNameParser::~PassNameParser()"}, + // "virtual function non-virtual override offset : -16 llvm::PassNameParser::~PassNameParser()" was returned + + {"_ZN4llvm14PassNameParserD0Ev", "llvm::PassNameParser::~PassNameParser()"}, + {"_ZN4llvm14PassNameParserD1Ev", "llvm::PassNameParser::~PassNameParser()"}, + + // {"_ZThn16_N4llvm14PassNameParserD1Ev", + // "non-virtual thunk to llvm::PassNameParser::~PassNameParser()"}, + // "virtual function non-virtual override offset : -16 llvm::PassNameParser::~PassNameParser()" was returned + + {"_ZN4llvm14PassNameParserD2Ev", "llvm::PassNameParser::~PassNameParser()"}, + {"_ZN4llvm13AnalysisUsage15setPreservesCFGEv", "llvm::AnalysisUsage::setPreservesCFG()"}, + {"_ZN12_GLOBAL__N_116GetCFGOnlyPassesD1Ev", "(anonymous namespace)::GetCFGOnlyPasses::~GetCFGOnlyPasses()"}, + {"_ZN4llvm13AnalysisUsage12addPreservedENS_9StringRefE", "llvm::AnalysisUsage::addPreserved(llvm::StringRef)"}, + {"_ZN4llvm13AnalysisUsage13addRequiredIDEPKv", "llvm::AnalysisUsage::addRequiredID(void const*)"}, + {"_ZN4llvm13AnalysisUsage13addRequiredIDERc", "llvm::AnalysisUsage::addRequiredID(char&)"}, + {"_ZN4llvm13AnalysisUsage23addRequiredTransitiveIDERc", "llvm::AnalysisUsage::addRequiredTransitiveID(char&)"}, + {"_ZN12_GLOBAL__N_116GetCFGOnlyPassesD0Ev", "(anonymous namespace)::GetCFGOnlyPasses::~GetCFGOnlyPasses()"}, + {"_ZN12_GLOBAL__N_116GetCFGOnlyPasses13passEnumerateEPKN4llvm8PassInfoE", "(anonymous namespace)::GetCFGOnlyPasses::passEnumerate(llvm::PassInfo const*)"}, + {"_ZN4llvm4Pass17assignPassManagerERNS_7PMStackENS_15PassManagerTypeE", "llvm::Pass::assignPassManager(llvm::PMStack&, llvm::PassManagerType)"}, + {"_ZN4llvm14BasicBlockPassD1Ev", "llvm::BasicBlockPass::~BasicBlockPass()"}, + {"_ZN4llvm14BasicBlockPassD0Ev", "llvm::BasicBlockPass::~BasicBlockPass()"}, + {"_ZN4llvm24PassRegistrationListener14passRegisteredEPKNS_8PassInfoE", "llvm::PassRegistrationListener::passRegistered(llvm::PassInfo const*)"}, + {"_ZN4llvm24PassRegistrationListener13passEnumerateEPKNS_8PassInfoE", "llvm::PassRegistrationListener::passEnumerate(llvm::PassInfo const*)"}, + {"_ZN4llvm14PassNameParser14passRegisteredEPKNS_8PassInfoE", "llvm::PassNameParser::passRegistered(llvm::PassInfo const*)"}, + {"_ZN4llvm14PassNameParser13passEnumerateEPKNS_8PassInfoE", "llvm::PassNameParser::passEnumerate(llvm::PassInfo const*)"}, + {"_ZNK4llvm14PassNameParser17ignorablePassImplEPKNS_8PassInfoE", "llvm::PassNameParser::ignorablePassImpl(llvm::PassInfo const*) const"}, + {"_ZNK4llvm14PassNameParser15printOptionInfoERKNS_2cl6OptionEm", "llvm::PassNameParser::printOptionInfo(llvm::cl::Option const&, unsigned long) const"}, + {"_ZNK4llvm2cl6parserIPKNS_8PassInfoEE13getNumOptionsEv", "llvm::cl::parser::getNumOptions() const"}, + {"_ZNK4llvm2cl6parserIPKNS_8PassInfoEE9getOptionEj", "llvm::cl::parser::getOption(unsigned int) const"}, + {"_ZNK4llvm2cl6parserIPKNS_8PassInfoEE14getDescriptionEj", "llvm::cl::parser::getDescription(unsigned int) const"}, + + // {"_ZThn16_NK4llvm14PassNameParser15printOptionInfoERKNS_2cl6OptionEm", + // "non-virtual thunk to llvm::PassNameParser::printOptionInfo(llvm::cl::Option const&, unsigned long) const"}, + // "virtual function non-virtual override offset : -16 llvm::PassNameParser::printOptionInfo(llvm::cl::Option const&, unsigned long) const" was returned + + {"_ZN4llvm14PassNameParser11ValLessThanEPKvS2_", "llvm::PassNameParser::ValLessThan(void const*, void const*)"}, + {"_ZN4llvm23SmallVectorTemplateBaseINS_2cl6parserIPKNS_8PassInfoEE10OptionInfoELb0EE4growEm", "llvm::SmallVectorTemplateBase::OptionInfo, false>::grow(unsigned long)"}, + {"_ZN4llvm2cl6parserIPKNS_8PassInfoEED1Ev", "llvm::cl::parser::~parser()"}, + {"_ZN4llvm2cl6parserIPKNS_8PassInfoEED0Ev", "llvm::cl::parser::~parser()"}, + {"_ZNK4llvm13PMDataManager31isPassDebuggingExecutionsOrMoreEv", "llvm::PMDataManager::isPassDebuggingExecutionsOrMore() const"}, + {"_ZNK4llvm27PassManagerPrettyStackEntry5printERNS_11raw_ostreamE", "llvm::PassManagerPrettyStackEntry::print(llvm::raw_ostream&) const"}, + {"_ZN4llvm17PMTopLevelManagerC1EPNS_13PMDataManagerE", "llvm::PMTopLevelManager::PMTopLevelManager(llvm::PMDataManager*)"}, + {"_ZN4llvm17PMTopLevelManagerC2EPNS_13PMDataManagerE", "llvm::PMTopLevelManager::PMTopLevelManager(llvm::PMDataManager*)"}, + {"_ZN4llvm7PMStack4pushEPNS_13PMDataManagerE", "llvm::PMStack::push(llvm::PMDataManager*)"}, + {"_ZN4llvm17PMTopLevelManager11setLastUserERKNS_15SmallVectorImplIPNS_4PassEEES3_", "llvm::PMTopLevelManager::setLastUser(llvm::SmallVectorImpl const&, llvm::Pass*)"}, + {"_ZN4llvm17PMTopLevelManager17findAnalysisUsageEPNS_4PassE", "llvm::PMTopLevelManager::findAnalysisUsage(llvm::Pass*)"}, + {"_ZN4llvm17PMTopLevelManager16findAnalysisPassEPKv", "llvm::PMTopLevelManager::findAnalysisPass(void const*)"}, + {"_ZN4llvm17PMTopLevelManager15collectLastUsesERNS_15SmallVectorImplIPNS_4PassEEES3_", "llvm::PMTopLevelManager::collectLastUses(llvm::SmallVectorImpl&, llvm::Pass*)"}, + {"_ZN4llvm17PMTopLevelManager12schedulePassEPNS_4PassE", "llvm::PMTopLevelManager::schedulePass(llvm::Pass*)"}, + {"_ZN4llvm13PMDataManager16findAnalysisPassEPKvb", "llvm::PMDataManager::findAnalysisPass(void const*, bool)"}, + {"_ZNK4llvm17PMTopLevelManager10dumpPassesEv", "llvm::PMTopLevelManager::dumpPasses() const"}, + {"_ZNK4llvm17PMTopLevelManager13dumpArgumentsEv", "llvm::PMTopLevelManager::dumpArguments() const"}, + {"_ZNK4llvm13PMDataManager17dumpPassArgumentsEv", "llvm::PMDataManager::dumpPassArguments() const"}, + {"_ZN4llvm17PMTopLevelManager25initializeAllAnalysisInfoEv", "llvm::PMTopLevelManager::initializeAllAnalysisInfo()"}, + {"_ZN4llvm17PMTopLevelManagerD0Ev", "llvm::PMTopLevelManager::~PMTopLevelManager()"}, + {"_ZN4llvm17PMTopLevelManagerD1Ev", "llvm::PMTopLevelManager::~PMTopLevelManager()"}, + {"_ZN4llvm17PMTopLevelManagerD2Ev", "llvm::PMTopLevelManager::~PMTopLevelManager()"}, + {"_ZN4llvm13PMDataManager23recordAvailableAnalysisEPNS_4PassE", "llvm::PMDataManager::recordAvailableAnalysis(llvm::Pass*)"}, + {"_ZN4llvm13PMDataManager27preserveHigherLevelAnalysisEPNS_4PassE", "llvm::PMDataManager::preserveHigherLevelAnalysis(llvm::Pass*)"}, + {"_ZN4llvm13PMDataManager23verifyPreservedAnalysisEPNS_4PassE", "llvm::PMDataManager::verifyPreservedAnalysis(llvm::Pass*)"}, + {"_ZN4llvm12getPassTimerEPNS_4PassE", "llvm::getPassTimer(llvm::Pass*)"}, + {"_ZN4llvm13PMDataManager26removeNotPreservedAnalysisEPNS_4PassE", "llvm::PMDataManager::removeNotPreservedAnalysis(llvm::Pass*)"}, + {"_ZN4llvm13PMDataManager16removeDeadPassesEPNS_4PassENS_9StringRefENS_19PassDebuggingStringE", "llvm::PMDataManager::removeDeadPasses(llvm::Pass*, llvm::StringRef, llvm::PassDebuggingString)"}, + {"_ZN4llvm13PMDataManager8freePassEPNS_4PassENS_9StringRefENS_19PassDebuggingStringE", "llvm::PMDataManager::freePass(llvm::Pass*, llvm::StringRef, llvm::PassDebuggingString)"}, + {"_ZN4llvm13PMDataManager12dumpPassInfoEPNS_4PassENS_19PassDebuggingStringES3_NS_9StringRefE", "llvm::PMDataManager::dumpPassInfo(llvm::Pass*, llvm::PassDebuggingString, llvm::PassDebuggingString, llvm::StringRef)"}, + {"_ZN4llvm13PMDataManager3addEPNS_4PassEb", "llvm::PMDataManager::add(llvm::Pass*, bool)"}, + {"_ZN4llvm13PMDataManager23collectRequiredAnalysisERNS_15SmallVectorImplIPNS_4PassEEERNS1_IPKvEES3_", "llvm::PMDataManager::collectRequiredAnalysis(llvm::SmallVectorImpl&, llvm::SmallVectorImpl&, llvm::Pass*)"}, + {"_ZN4llvm13PMDataManager22initializeAnalysisImplEPNS_4PassE", "llvm::PMDataManager::initializeAnalysisImpl(llvm::Pass*)"}, + {"_ZNK4llvm13PMDataManager12dumpLastUsesEPNS_4PassEj", "llvm::PMDataManager::dumpLastUses(llvm::Pass*, unsigned int) const"}, + {"_ZNK4llvm13PMDataManager15dumpRequiredSetEPKNS_4PassE", "llvm::PMDataManager::dumpRequiredSet(llvm::Pass const*) const"}, + + // {"_ZNK4llvm13PMDataManager17dumpAnalysisUsageENS_9StringRefEPKNS_4PassERKNS_11SmallVectorIPKvLj32EEE", + // "llvm::PMDataManager::dumpAnalysisUsage(llvm::StringRef, llvm::Pass const*, llvm::SmallVector const&) const"}, + // "llvm::PMDataManager::dumpAnalysisUsage(llvm::StringRef, llvm::Pass const*, llvm::SmallVector const&) const" was returned + + {"_ZNK4llvm13PMDataManager16dumpPreservedSetEPKNS_4PassE", "llvm::PMDataManager::dumpPreservedSet(llvm::Pass const*) const"}, + {"_ZN4llvm13PMDataManager25addLowerLevelRequiredPassEPNS_4PassES2_", "llvm::PMDataManager::addLowerLevelRequiredPass(llvm::Pass*, llvm::Pass*)"}, + {"_ZN4llvm13PMDataManager15getOnTheFlyPassEPNS_4PassEPKvRNS_8FunctionE", "llvm::PMDataManager::getOnTheFlyPass(llvm::Pass*, void const*, llvm::Function&)"}, + {"_ZN4llvm13PMDataManagerD0Ev", "llvm::PMDataManager::~PMDataManager()"}, + {"_ZN4llvm13PMDataManagerD1Ev", "llvm::PMDataManager::~PMDataManager()"}, + {"_ZN4llvm13PMDataManagerD2Ev", "llvm::PMDataManager::~PMDataManager()"}, + {"_ZNK4llvm16AnalysisResolver22getAnalysisIfAvailableEPKvb", "llvm::AnalysisResolver::getAnalysisIfAvailable(void const*, bool) const"}, + {"_ZN4llvm16AnalysisResolver12findImplPassEPNS_4PassEPKvRNS_8FunctionE", "llvm::AnalysisResolver::findImplPass(llvm::Pass*, void const*, llvm::Function&)"}, + {"_ZN4llvm19FunctionPassManagerC1EPNS_6ModuleE", "llvm::FunctionPassManager::FunctionPassManager(llvm::Module*)"}, + {"_ZN4llvm19FunctionPassManagerC2EPNS_6ModuleE", "llvm::FunctionPassManager::FunctionPassManager(llvm::Module*)"}, + {"_ZN4llvm19FunctionPassManagerD0Ev", "llvm::FunctionPassManager::~FunctionPassManager()"}, + {"_ZN4llvm19FunctionPassManagerD1Ev", "llvm::FunctionPassManager::~FunctionPassManager()"}, + {"_ZN4llvm19FunctionPassManagerD2Ev", "llvm::FunctionPassManager::~FunctionPassManager()"}, + {"_ZN4llvm15PassManagerBaseD2Ev", "llvm::PassManagerBase::~PassManagerBase()"}, + {"_ZN4llvm19FunctionPassManager7addImplEPNS_4PassE", "llvm::FunctionPassManager::addImpl(llvm::Pass*)"}, + {"_ZN4llvm19FunctionPassManager3addEPNS_4PassE", "llvm::FunctionPassManager::add(llvm::Pass*)"}, + {"_ZN4llvm19FunctionPassManager3runERNS_8FunctionE", "llvm::FunctionPassManager::run(llvm::Function&)"}, + {"_ZN4llvm23FunctionPassManagerImpl3runERNS_8FunctionE", "llvm::FunctionPassManagerImpl::run(llvm::Function&)"}, + {"_ZN4llvm19FunctionPassManager16doInitializationEv", "llvm::FunctionPassManager::doInitialization()"}, + {"_ZN4llvm23FunctionPassManagerImpl16doInitializationERNS_6ModuleE", "llvm::FunctionPassManagerImpl::doInitialization(llvm::Module&)"}, + {"_ZN4llvm19FunctionPassManager14doFinalizationEv", "llvm::FunctionPassManager::doFinalization()"}, + {"_ZN4llvm23FunctionPassManagerImpl14doFinalizationERNS_6ModuleE", "llvm::FunctionPassManagerImpl::doFinalization(llvm::Module&)"}, + {"_ZN4llvm13FPPassManager16doInitializationERNS_6ModuleE", "llvm::FPPassManager::doInitialization(llvm::Module&)"}, + {"_ZN4llvm13FPPassManager14doFinalizationERNS_6ModuleE", "llvm::FPPassManager::doFinalization(llvm::Module&)"}, + {"_ZN4llvm13FPPassManager7cleanupEv", "llvm::FPPassManager::cleanup()"}, + {"_ZN4llvm23FunctionPassManagerImpl21releaseMemoryOnTheFlyEv", "llvm::FunctionPassManagerImpl::releaseMemoryOnTheFly()"}, + {"_ZN4llvm13FPPassManager13runOnFunctionERNS_8FunctionE", "llvm::FPPassManager::runOnFunction(llvm::Function&)"}, + {"_ZN4llvm13FPPassManager17dumpPassStructureEj", "llvm::FPPassManager::dumpPassStructure(unsigned int)"}, + {"_ZN4llvm13FPPassManager11runOnModuleERNS_6ModuleE", "llvm::FPPassManager::runOnModule(llvm::Module&)"}, + {"_ZN4llvm13MPPassManager11runOnModuleERNS_6ModuleE", "llvm::MPPassManager::runOnModule(llvm::Module&)"}, + + // {"_ZThn32_N4llvm13MPPassManager25addLowerLevelRequiredPassEPNS_4PassES2_", + // "non-virtual thunk to llvm::MPPassManager::addLowerLevelRequiredPass(llvm::Pass*, llvm::Pass*)"}, + // "virtual function non-virtual override offset : -32 llvm::MPPassManager::addLowerLevelRequiredPass(llvm::Pass*, llvm::Pass*)" was returned + + {"_ZN4llvm13MPPassManager25addLowerLevelRequiredPassEPNS_4PassES2_", "llvm::MPPassManager::addLowerLevelRequiredPass(llvm::Pass*, llvm::Pass*)"}, + + // {"_ZThn32_N4llvm13MPPassManager15getOnTheFlyPassEPNS_4PassEPKvRNS_8FunctionE", + // "non-virtual thunk to llvm::MPPassManager::getOnTheFlyPass(llvm::Pass*, void const*, llvm::Function&)"}, + // "virtual function non-virtual override offset : -32 llvm::MPPassManager::getOnTheFlyPass(llvm::Pass*, void const*, llvm::Function&)" was returned + + {"_ZN4llvm13MPPassManager15getOnTheFlyPassEPNS_4PassEPKvRNS_8FunctionE", "llvm::MPPassManager::getOnTheFlyPass(llvm::Pass*, void const*, llvm::Function&)"}, + {"_ZN4llvm15PassManagerImpl3runERNS_6ModuleE", "llvm::PassManagerImpl::run(llvm::Module&)"}, + {"_ZN4llvm11PassManagerC1Ev", "llvm::PassManager::PassManager()"}, + {"_ZN4llvm11PassManagerC2Ev", "llvm::PassManager::PassManager()"}, + {"_ZN4llvm11PassManagerD0Ev", "llvm::PassManager::~PassManager()"}, + {"_ZN4llvm11PassManagerD1Ev", "llvm::PassManager::~PassManager()"}, + {"_ZN4llvm11PassManagerD2Ev", "llvm::PassManager::~PassManager()"}, + {"_ZN4llvm11PassManager7addImplEPNS_4PassE", "llvm::PassManager::addImpl(llvm::Pass*)"}, + {"_ZN4llvm11PassManager3addEPNS_4PassE", "llvm::PassManager::add(llvm::Pass*)"}, + {"_ZN4llvm11PassManager3runERNS_6ModuleE", "llvm::PassManager::run(llvm::Module&)"}, + {"_ZN4llvm7PMStack3popEv", "llvm::PMStack::pop()"}, + {"_ZNK4llvm7PMStack4dumpEv", "llvm::PMStack::dump() const"}, + {"_ZN4llvm10ModulePass17assignPassManagerERNS_7PMStackENS_15PassManagerTypeE", "llvm::ModulePass::assignPassManager(llvm::PMStack&, llvm::PassManagerType)"}, + {"_ZN4llvm12FunctionPass17assignPassManagerERNS_7PMStackENS_15PassManagerTypeE", "llvm::FunctionPass::assignPassManager(llvm::PMStack&, llvm::PassManagerType)"}, + {"_ZN4llvm14BasicBlockPass17assignPassManagerERNS_7PMStackENS_15PassManagerTypeE", "llvm::BasicBlockPass::assignPassManager(llvm::PMStack&, llvm::PassManagerType)"}, + {"_ZN4llvm15PassManagerBaseD0Ev", "llvm::PassManagerBase::~PassManagerBase()"}, + {"_ZN4llvm15PassManagerBaseD1Ev", "llvm::PassManagerBase::~PassManagerBase()"}, + {"_ZN12_GLOBAL__N_113BBPassManagerD1Ev", "(anonymous namespace)::BBPassManager::~BBPassManager()"}, + {"_ZN12_GLOBAL__N_113BBPassManagerD0Ev", "(anonymous namespace)::BBPassManager::~BBPassManager()"}, + {"_ZN12_GLOBAL__N_113BBPassManager9getAsPassEv", "(anonymous namespace)::BBPassManager::getAsPass()"}, + {"_ZNK12_GLOBAL__N_113BBPassManager18getPassManagerTypeEv", "(anonymous namespace)::BBPassManager::getPassManagerType() const"}, + {"_ZN12_GLOBAL__N_113BBPassManager13runOnFunctionERN4llvm8FunctionE", "(anonymous namespace)::BBPassManager::runOnFunction(llvm::Function&)"}, + {"_ZNK12_GLOBAL__N_113BBPassManager16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::BBPassManager::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_113BBPassManager16doInitializationERN4llvm6ModuleE", "(anonymous namespace)::BBPassManager::doInitialization(llvm::Module&)"}, + {"_ZN12_GLOBAL__N_113BBPassManager14doFinalizationERN4llvm6ModuleE", "(anonymous namespace)::BBPassManager::doFinalization(llvm::Module&)"}, + {"_ZN12_GLOBAL__N_113BBPassManager18getAsPMDataManagerEv", "(anonymous namespace)::BBPassManager::getAsPMDataManager()"}, + {"_ZNK12_GLOBAL__N_113BBPassManager11getPassNameEv", "(anonymous namespace)::BBPassManager::getPassName() const"}, + {"_ZN12_GLOBAL__N_113BBPassManager17dumpPassStructureEj", "(anonymous namespace)::BBPassManager::dumpPassStructure(unsigned int)"}, + + // {"_ZThn392_N12_GLOBAL__N_113BBPassManagerD1Ev", + // "non-virtual thunk to (anonymous namespace)::BBPassManager::~BBPassManager()"}, + // "virtual function non-virtual override offset : -392 (anonymous namespace)::BBPassManager::~BBPassManager()" was returned + + + // {"_ZThn392_N12_GLOBAL__N_113BBPassManagerD0Ev", + // "non-virtual thunk to (anonymous namespace)::BBPassManager::~BBPassManager()"}, + // "virtual function non-virtual override offset : -392 (anonymous namespace)::BBPassManager::~BBPassManager()" was returned + + + // {"_ZThn392_NK12_GLOBAL__N_113BBPassManager11getPassNameEv", + // "non-virtual thunk to (anonymous namespace)::BBPassManager::getPassName() const"}, + // "virtual function non-virtual override offset : -392 (anonymous namespace)::BBPassManager::getPassName() const" was returned + + + // {"_ZThn392_NK12_GLOBAL__N_113BBPassManager16getAnalysisUsageERN4llvm13AnalysisUsageE", + // "non-virtual thunk to (anonymous namespace)::BBPassManager::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + // "virtual function non-virtual override offset : -392 (anonymous namespace)::BBPassManager::getAnalysisUsage(llvm::AnalysisUsage&) const" was returned + + + // {"_ZThn392_N12_GLOBAL__N_113BBPassManager18getAsPMDataManagerEv", + // "non-virtual thunk to (anonymous namespace)::BBPassManager::getAsPMDataManager()"}, + // "virtual function non-virtual override offset : -392 (anonymous namespace)::BBPassManager::getAsPMDataManager()" was returned + + + // {"_ZThn392_N12_GLOBAL__N_113BBPassManager17dumpPassStructureEj", + // "non-virtual thunk to (anonymous namespace)::BBPassManager::dumpPassStructure(unsigned int)"}, + // "virtual function non-virtual override offset : -392 (anonymous namespace)::BBPassManager::dumpPassStructure(unsigned int)" was returned + + + // {"_ZThn392_N12_GLOBAL__N_113BBPassManager16doInitializationERN4llvm6ModuleE", + // "non-virtual thunk to (anonymous namespace)::BBPassManager::doInitialization(llvm::Module&)"}, + // "virtual function non-virtual override offset : -392 (anonymous namespace)::BBPassManager::doInitialization(llvm::Module&)" was returned + + + // {"_ZThn392_N12_GLOBAL__N_113BBPassManager13runOnFunctionERN4llvm8FunctionE", + // "non-virtual thunk to (anonymous namespace)::BBPassManager::runOnFunction(llvm::Function&)"}, + // "virtual function non-virtual override offset : -392 (anonymous namespace)::BBPassManager::runOnFunction(llvm::Function&)" was returned + + + // {"_ZThn392_N12_GLOBAL__N_113BBPassManager14doFinalizationERN4llvm6ModuleE", + // "non-virtual thunk to (anonymous namespace)::BBPassManager::doFinalization(llvm::Module&)"}, + // "virtual function non-virtual override offset : -392 (anonymous namespace)::BBPassManager::doFinalization(llvm::Module&)" was returned + + {"_ZN4llvm14object_creatorIN12_GLOBAL__N_110TimingInfoEEEPvv", "void* llvm::object_creator<(anonymous namespace)::TimingInfo>()"}, + {"_ZN4llvm14object_deleterIN12_GLOBAL__N_110TimingInfoEE4callEPv", "llvm::object_deleter<(anonymous namespace)::TimingInfo>::call(void*)"}, + {"_ZN4llvm2cl3optINS_14PassDebugLevelELb0ENS0_6parserIS2_EEED1Ev", "llvm::cl::opt>::~opt()"}, + {"_ZN4llvm2cl4listIPKNS_8PassInfoEbNS_14PassNameParserEED1Ev", "llvm::cl::list::~list()"}, + {"_ZN4llvm27PassManagerPrettyStackEntryD1Ev", "llvm::PassManagerPrettyStackEntry::~PassManagerPrettyStackEntry()"}, + {"_ZN4llvm27PassManagerPrettyStackEntryD0Ev", "llvm::PassManagerPrettyStackEntry::~PassManagerPrettyStackEntry()"}, + {"_ZNK4llvm13PMDataManager21getNumContainedPassesEv", "llvm::PMDataManager::getNumContainedPasses() const"}, + {"_ZNK4llvm13PMDataManager18getPassManagerTypeEv", "llvm::PMDataManager::getPassManagerType() const"}, + {"_ZN4llvm13FPPassManagerD1Ev", "llvm::FPPassManager::~FPPassManager()"}, + {"_ZN4llvm13FPPassManagerD0Ev", "llvm::FPPassManager::~FPPassManager()"}, + {"_ZNK4llvm13FPPassManager11getPassNameEv", "llvm::FPPassManager::getPassName() const"}, + {"_ZNK4llvm13FPPassManager16getAnalysisUsageERNS_13AnalysisUsageE", "llvm::FPPassManager::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN4llvm13FPPassManager18getAsPMDataManagerEv", "llvm::FPPassManager::getAsPMDataManager()"}, + {"_ZN4llvm13FPPassManager9getAsPassEv", "llvm::FPPassManager::getAsPass()"}, + {"_ZNK4llvm13FPPassManager18getPassManagerTypeEv", "llvm::FPPassManager::getPassManagerType() const"}, + + // {"_ZThn32_N4llvm13FPPassManagerD1Ev", + // "non-virtual thunk to llvm::FPPassManager::~FPPassManager()"}, + // "virtual function non-virtual override offset : -32 llvm::FPPassManager::~FPPassManager()" was returned + + + // {"_ZThn32_N4llvm13FPPassManagerD0Ev", + // "non-virtual thunk to llvm::FPPassManager::~FPPassManager()"}, + // "virtual function non-virtual override offset : -32 llvm::FPPassManager::~FPPassManager()" was returned + + + // {"_ZThn32_N4llvm13FPPassManager9getAsPassEv", + // "non-virtual thunk to llvm::FPPassManager::getAsPass()"}, + // "virtual function non-virtual override offset : -32 llvm::FPPassManager::getAsPass()" was returned + + + // {"_ZThn32_NK4llvm13FPPassManager18getPassManagerTypeEv", + // "non-virtual thunk to llvm::FPPassManager::getPassManagerType() const"}, + // "virtual function non-virtual override offset : -32 llvm::FPPassManager::getPassManagerType() const" was returned + + {"_ZNK4llvm17PMTopLevelManager23getNumContainedManagersEv", "llvm::PMTopLevelManager::getNumContainedManagers() const"}, + {"_ZN4llvm13MPPassManagerD1Ev", "llvm::MPPassManager::~MPPassManager()"}, + {"_ZN4llvm13MPPassManagerD0Ev", "llvm::MPPassManager::~MPPassManager()"}, + {"_ZNK4llvm13MPPassManager11getPassNameEv", "llvm::MPPassManager::getPassName() const"}, + {"_ZNK4llvm13MPPassManager17createPrinterPassERNS_11raw_ostreamERKSs", "llvm::MPPassManager::createPrinterPass(llvm::raw_ostream&, std::string const&) const"}, + {"_ZNK4llvm13MPPassManager16getAnalysisUsageERNS_13AnalysisUsageE", "llvm::MPPassManager::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN4llvm13MPPassManager18getAsPMDataManagerEv", "llvm::MPPassManager::getAsPMDataManager()"}, + {"_ZN4llvm13MPPassManager17dumpPassStructureEj", "llvm::MPPassManager::dumpPassStructure(unsigned int)"}, + {"_ZN4llvm13MPPassManager9getAsPassEv", "llvm::MPPassManager::getAsPass()"}, + {"_ZNK4llvm13MPPassManager18getPassManagerTypeEv", "llvm::MPPassManager::getPassManagerType() const"}, + + // {"_ZThn32_N4llvm13MPPassManagerD1Ev", + // "non-virtual thunk to llvm::MPPassManager::~MPPassManager()"}, + // "virtual function non-virtual override offset : -32 llvm::MPPassManager::~MPPassManager()" was returned + + + // {"_ZThn32_N4llvm13MPPassManagerD0Ev", + // "non-virtual thunk to llvm::MPPassManager::~MPPassManager()"}, + // "virtual function non-virtual override offset : -32 llvm::MPPassManager::~MPPassManager()" was returned + + + // {"_ZThn32_N4llvm13MPPassManager9getAsPassEv", + // "non-virtual thunk to llvm::MPPassManager::getAsPass()"}, + // "virtual function non-virtual override offset : -32 llvm::MPPassManager::getAsPass()" was returned + + + // {"_ZThn32_NK4llvm13MPPassManager18getPassManagerTypeEv", + // "non-virtual thunk to llvm::MPPassManager::getPassManagerType() const"}, + // "virtual function non-virtual override offset : -32 llvm::MPPassManager::getPassManagerType() const" was returned + + {"_ZNSt6vectorIPN4llvm13PMDataManagerESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::PMDataManager* const&)"}, + {"_ZNSt8_Rb_treeIPN4llvm4PassESt4pairIKS2_PNS0_23FunctionPassManagerImplEESt10_Select1stIS7_ESt4lessIS2_ESaIS7_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS7_ERKS7_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIPN4llvm4PassESt4pairIKS2_PNS0_23FunctionPassManagerImplEESt10_Select1stIS7_ESt4lessIS2_ESaIS7_EE16_M_insert_uniqueERKS7_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZNSt8_Rb_treeIPKvSt4pairIKS1_PN4llvm4PassEESt10_Select1stIS7_ESt4lessIS1_ESaIS7_EE5eraseESt17_Rb_tree_iteratorIS7_ESF_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::erase(std::_Rb_tree_iterator>, std::_Rb_tree_iterator>)"}, + {"_ZNSt8_Rb_treeIPKvSt4pairIKS1_PN4llvm4PassEESt10_Select1stIS7_ESt4lessIS1_ESaIS7_EE8_M_eraseEPSt13_Rb_tree_nodeIS7_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + + // {"_ZSt6__findIPKPKvS1_ET_S4_S4_RKT0_St26random_access_iterator_tag", + // "void const* const* std::__find(void const* const*, void const* const*, void const* const&, std::random_access_iterator_tag)"}, + // got error + + {"_ZNSt8_Rb_treeIPKvSt4pairIKS1_PN4llvm4PassEESt10_Select1stIS7_ESt4lessIS1_ESaIS7_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS7_ERKS7_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIPKvSt4pairIKS1_PN4llvm4PassEESt10_Select1stIS7_ESt4lessIS1_ESaIS7_EE16_M_insert_uniqueERKS7_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + + // {"_ZN4llvm8DenseMapIPNS_4PassENS_11SmallPtrSetIS2_Lj8EEENS_12DenseMapInfoIS2_EENS5_IS4_EEE16FindAndConstructERKS2_", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::FindAndConstruct(llvm::Pass* const&)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::FindAndConstruct(llvm::Pass* const&)" was returned + + + // {"_ZN4llvm8DenseMapIPNS_4PassENS_11SmallPtrSetIS2_Lj8EEENS_12DenseMapInfoIS2_EENS5_IS4_EEE16InsertIntoBucketERKS2_RKS4_PSt4pairIS2_S4_E", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(llvm::Pass* const&, llvm::SmallPtrSet const&, std::pair>*)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::InsertIntoBucket(llvm::Pass* const&, llvm::SmallPtrSet const&, std::pair>*)" was returned + + + // {"_ZN4llvm8DenseMapIPNS_4PassENS_11SmallPtrSetIS2_Lj8EEENS_12DenseMapInfoIS2_EENS5_IS4_EEE4growEj", + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)"}, + // "llvm::DenseMap, llvm::DenseMapInfo, llvm::DenseMapInfo>>::grow(unsigned int)" was returned + + {"_ZN4llvm8DenseMapIPNS_4PassEPNS_13AnalysisUsageENS_12DenseMapInfoIS2_EENS5_IS4_EEE16InsertIntoBucketERKS2_RKS4_PSt4pairIS2_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::Pass* const&, llvm::AnalysisUsage* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_4PassEPNS_13AnalysisUsageENS_12DenseMapInfoIS2_EENS5_IS4_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPNS_4PassES2_NS_12DenseMapInfoIS2_EES4_E16InsertIntoBucketERKS2_S7_PSt4pairIS2_S2_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::Pass* const&, llvm::Pass* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_4PassES2_NS_12DenseMapInfoIS2_EES4_E4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm2cl4listIPKNS_8PassInfoEbNS_14PassNameParserEE16handleOccurrenceEjNS_9StringRefES7_", "llvm::cl::list::handleOccurrence(unsigned int, llvm::StringRef, llvm::StringRef)"}, + {"_ZNK4llvm2cl4listIPKNS_8PassInfoEbNS_14PassNameParserEE27getValueExpectedFlagDefaultEv", "llvm::cl::list::getValueExpectedFlagDefault() const"}, + {"_ZNK4llvm2cl4listIPKNS_8PassInfoEbNS_14PassNameParserEE14getOptionWidthEv", "llvm::cl::list::getOptionWidth() const"}, + {"_ZNK4llvm2cl4listIPKNS_8PassInfoEbNS_14PassNameParserEE15printOptionInfoEm", "llvm::cl::list::printOptionInfo(unsigned long) const"}, + {"_ZN4llvm2cl4listIPKNS_8PassInfoEbNS_14PassNameParserEE19getExtraOptionNamesERNS_15SmallVectorImplIPKcEE", "llvm::cl::list::getExtraOptionNames(llvm::SmallVectorImpl&)"}, + {"_ZN4llvm2cl4listIPKNS_8PassInfoEbNS_14PassNameParserEED0Ev", "llvm::cl::list::~list()"}, + {"_ZN4llvm2cl6parserIPKNS_8PassInfoEE5parseERNS0_6OptionENS_9StringRefES8_RS4_", "llvm::cl::parser::parse(llvm::cl::Option&, llvm::StringRef, llvm::StringRef, llvm::PassInfo const*&)"}, + {"_ZNSt6vectorIPKN4llvm8PassInfoESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::PassInfo const* const&)"}, + {"_ZN4llvm2cl3optINS_14PassDebugLevelELb0ENS0_6parserIS2_EEE16handleOccurrenceEjNS_9StringRefES6_", "llvm::cl::opt>::handleOccurrence(unsigned int, llvm::StringRef, llvm::StringRef)"}, + {"_ZNK4llvm2cl3optINS_14PassDebugLevelELb0ENS0_6parserIS2_EEE27getValueExpectedFlagDefaultEv", "llvm::cl::opt>::getValueExpectedFlagDefault() const"}, + {"_ZNK4llvm2cl3optINS_14PassDebugLevelELb0ENS0_6parserIS2_EEE14getOptionWidthEv", "llvm::cl::opt>::getOptionWidth() const"}, + {"_ZNK4llvm2cl3optINS_14PassDebugLevelELb0ENS0_6parserIS2_EEE15printOptionInfoEm", "llvm::cl::opt>::printOptionInfo(unsigned long) const"}, + {"_ZN4llvm2cl3optINS_14PassDebugLevelELb0ENS0_6parserIS2_EEE19getExtraOptionNamesERNS_15SmallVectorImplIPKcEE", "llvm::cl::opt>::getExtraOptionNames(llvm::SmallVectorImpl&)"}, + {"_ZN4llvm2cl3optINS_14PassDebugLevelELb0ENS0_6parserIS2_EEED0Ev", "llvm::cl::opt>::~opt()"}, + {"_ZN4llvm2cl6parserINS_14PassDebugLevelEE5parseERNS0_6OptionENS_9StringRefES6_RS2_", "llvm::cl::parser::parse(llvm::cl::Option&, llvm::StringRef, llvm::StringRef, llvm::PassDebugLevel&)"}, + + // {"_ZNK4llvm2cl11ValuesClassIiE5applyINS0_3optINS_14PassDebugLevelELb0ENS0_6parserIS5_EEEEEEvRT_", + // "void llvm::cl::ValuesClass::apply>>(llvm::cl::opt>&) const"}, + // "void llvm::cl::ValuesClass::apply>>(int&) const" was returned + + {"_ZN4llvm23SmallVectorTemplateBaseINS_2cl6parserINS_14PassDebugLevelEE10OptionInfoELb0EE4growEm", "llvm::SmallVectorTemplateBase::OptionInfo, false>::grow(unsigned long)"}, + {"_ZN4llvm2cl6parserINS_14PassDebugLevelEED1Ev", "llvm::cl::parser::~parser()"}, + {"_ZN4llvm2cl6parserINS_14PassDebugLevelEED0Ev", "llvm::cl::parser::~parser()"}, + {"_ZNK4llvm2cl6parserINS_14PassDebugLevelEE13getNumOptionsEv", "llvm::cl::parser::getNumOptions() const"}, + {"_ZNK4llvm2cl6parserINS_14PassDebugLevelEE9getOptionEj", "llvm::cl::parser::getOption(unsigned int) const"}, + {"_ZNK4llvm2cl6parserINS_14PassDebugLevelEE14getDescriptionEj", "llvm::cl::parser::getDescription(unsigned int) const"}, + {"_ZN4llvm13MPPassManagerD2Ev", "llvm::MPPassManager::~MPPassManager()"}, + {"_ZNSt8_Rb_treeIPN4llvm4PassESt4pairIKS2_PNS0_23FunctionPassManagerImplEESt10_Select1stIS7_ESt4lessIS2_ESaIS7_EE8_M_eraseEPSt13_Rb_tree_nodeIS7_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZN4llvm8DenseMapIPNS_4PassEPNS_5TimerENS_12DenseMapInfoIS2_EENS5_IS4_EEE16InsertIntoBucketERKS2_RKS4_PSt4pairIS2_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::Pass* const&, llvm::Timer* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_4PassEPNS_5TimerENS_12DenseMapInfoIS2_EENS5_IS4_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm15PassManagerImplC2Ei", "llvm::PassManagerImpl::PassManagerImpl(int)"}, + {"_ZN4llvm15PassManagerImplD1Ev", "llvm::PassManagerImpl::~PassManagerImpl()"}, + {"_ZN4llvm15PassManagerImplD0Ev", "llvm::PassManagerImpl::~PassManagerImpl()"}, + {"_ZNK4llvm15PassManagerImpl17createPrinterPassERNS_11raw_ostreamERKSs", "llvm::PassManagerImpl::createPrinterPass(llvm::raw_ostream&, std::string const&) const"}, + {"_ZNK4llvm15PassManagerImpl16getAnalysisUsageERNS_13AnalysisUsageE", "llvm::PassManagerImpl::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN4llvm15PassManagerImpl18getAsPMDataManagerEv", "llvm::PassManagerImpl::getAsPMDataManager()"}, + {"_ZN4llvm15PassManagerImpl15addTopLevelPassEPNS_4PassE", "llvm::PassManagerImpl::addTopLevelPass(llvm::Pass*)"}, + {"_ZN4llvm15PassManagerImpl9getAsPassEv", "llvm::PassManagerImpl::getAsPass()"}, + + // {"_ZThn32_N4llvm15PassManagerImplD1Ev", + // "non-virtual thunk to llvm::PassManagerImpl::~PassManagerImpl()"}, + // "virtual function non-virtual override offset : -32 llvm::PassManagerImpl::~PassManagerImpl()" was returned + + + // {"_ZThn32_N4llvm15PassManagerImplD0Ev", + // "non-virtual thunk to llvm::PassManagerImpl::~PassManagerImpl()"}, + // "virtual function non-virtual override offset : -32 llvm::PassManagerImpl::~PassManagerImpl()" was returned + + + // {"_ZThn32_N4llvm15PassManagerImpl9getAsPassEv", + // "non-virtual thunk to llvm::PassManagerImpl::getAsPass()"}, + // "virtual function non-virtual override offset : -32 llvm::PassManagerImpl::getAsPass()" was returned + + + // {"_ZThn432_N4llvm15PassManagerImpl15addTopLevelPassEPNS_4PassE", + // "non-virtual thunk to llvm::PassManagerImpl::addTopLevelPass(llvm::Pass*)"}, + // "virtual function non-virtual override offset : -432 llvm::PassManagerImpl::addTopLevelPass(llvm::Pass*)" was returned + + + // {"_ZThn432_N4llvm15PassManagerImplD1Ev", + // "non-virtual thunk to llvm::PassManagerImpl::~PassManagerImpl()"}, + // "virtual function non-virtual override offset : -432 llvm::PassManagerImpl::~PassManagerImpl()" was returned + + + // {"_ZThn432_N4llvm15PassManagerImplD0Ev", + // "non-virtual thunk to llvm::PassManagerImpl::~PassManagerImpl()"}, + // "virtual function non-virtual override offset : -432 llvm::PassManagerImpl::~PassManagerImpl()" was returned + + {"_ZN4llvm23FunctionPassManagerImplC2Ei", "llvm::FunctionPassManagerImpl::FunctionPassManagerImpl(int)"}, + {"_ZN4llvm23FunctionPassManagerImplD1Ev", "llvm::FunctionPassManagerImpl::~FunctionPassManagerImpl()"}, + {"_ZN4llvm23FunctionPassManagerImplD0Ev", "llvm::FunctionPassManagerImpl::~FunctionPassManagerImpl()"}, + {"_ZNK4llvm23FunctionPassManagerImpl17createPrinterPassERNS_11raw_ostreamERKSs", "llvm::FunctionPassManagerImpl::createPrinterPass(llvm::raw_ostream&, std::string const&) const"}, + {"_ZNK4llvm23FunctionPassManagerImpl16getAnalysisUsageERNS_13AnalysisUsageE", "llvm::FunctionPassManagerImpl::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN4llvm23FunctionPassManagerImpl18getAsPMDataManagerEv", "llvm::FunctionPassManagerImpl::getAsPMDataManager()"}, + {"_ZN4llvm23FunctionPassManagerImpl9getAsPassEv", "llvm::FunctionPassManagerImpl::getAsPass()"}, + {"_ZN4llvm23FunctionPassManagerImpl15addTopLevelPassEPNS_4PassE", "llvm::FunctionPassManagerImpl::addTopLevelPass(llvm::Pass*)"}, + + // {"_ZThn32_N4llvm23FunctionPassManagerImplD1Ev", + // "non-virtual thunk to llvm::FunctionPassManagerImpl::~FunctionPassManagerImpl()"}, + // "virtual function non-virtual override offset : -32 llvm::FunctionPassManagerImpl::~FunctionPassManagerImpl()" was returned + + + // {"_ZThn32_N4llvm23FunctionPassManagerImplD0Ev", + // "non-virtual thunk to llvm::FunctionPassManagerImpl::~FunctionPassManagerImpl()"}, + // "virtual function non-virtual override offset : -32 llvm::FunctionPassManagerImpl::~FunctionPassManagerImpl()" was returned + + + // {"_ZThn32_N4llvm23FunctionPassManagerImpl9getAsPassEv", + // "non-virtual thunk to llvm::FunctionPassManagerImpl::getAsPass()"}, + // "virtual function non-virtual override offset : -32 llvm::FunctionPassManagerImpl::getAsPass()" was returned + + + // {"_ZThn432_N4llvm23FunctionPassManagerImpl15addTopLevelPassEPNS_4PassE", + // "non-virtual thunk to llvm::FunctionPassManagerImpl::addTopLevelPass(llvm::Pass*)"}, + // "virtual function non-virtual override offset : -432 llvm::FunctionPassManagerImpl::addTopLevelPass(llvm::Pass*)" was returned + + + // {"_ZThn432_N4llvm23FunctionPassManagerImplD1Ev", + // "non-virtual thunk to llvm::FunctionPassManagerImpl::~FunctionPassManagerImpl()"}, + // "virtual function non-virtual override offset : -432 llvm::FunctionPassManagerImpl::~FunctionPassManagerImpl()" was returned + + + // {"_ZThn432_N4llvm23FunctionPassManagerImplD0Ev", + // "non-virtual thunk to llvm::FunctionPassManagerImpl::~FunctionPassManagerImpl()"}, + // "virtual function non-virtual override offset : -432 llvm::FunctionPassManagerImpl::~FunctionPassManagerImpl()" was returned + + {"_ZNSt6vectorISt4pairIPKvPN4llvm4PassEESaIS6_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS6_S8_EERKS6_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + {"_ZN4llvm12PassRegistryD1Ev", "llvm::PassRegistry::~PassRegistry()"}, + {"_ZN4llvm12PassRegistryD2Ev", "llvm::PassRegistry::~PassRegistry()"}, + {"_ZNK4llvm12PassRegistry11getPassInfoEPKv", "llvm::PassRegistry::getPassInfo(void const*) const"}, + {"_ZNK4llvm12PassRegistry11getPassInfoENS_9StringRefE", "llvm::PassRegistry::getPassInfo(llvm::StringRef) const"}, + {"_ZN4llvm12PassRegistry12registerPassERKNS_8PassInfoEb", "llvm::PassRegistry::registerPass(llvm::PassInfo const&, bool)"}, + {"_ZN4llvm12PassRegistry14unregisterPassERKNS_8PassInfoE", "llvm::PassRegistry::unregisterPass(llvm::PassInfo const&)"}, + {"_ZN4llvm12PassRegistry21registerAnalysisGroupEPKvS2_RNS_8PassInfoEbb", "llvm::PassRegistry::registerAnalysisGroup(void const*, void const*, llvm::PassInfo&, bool, bool)"}, + {"_ZN4llvm12PassRegistry26removeRegistrationListenerEPNS_24PassRegistrationListenerE", "llvm::PassRegistry::removeRegistrationListener(llvm::PassRegistrationListener*)"}, + {"_ZN4llvm8DenseMapIPKvPKNS_8PassInfoENS_12DenseMapInfoIS2_EENS6_IS5_EEE6insertERKSt4pairIS2_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + + // {"_ZSt6__findIN9__gnu_cxx17__normal_iteratorIPPN4llvm24PassRegistrationListenerESt6vectorIS4_SaIS4_EEEES4_ET_SA_SA_RKT0_St26random_access_iterator_tag", + // "__gnu_cxx::__normal_iterator>> std::__find<__gnu_cxx::__normal_iterator>>, llvm::PassRegistrationListener*>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, llvm::PassRegistrationListener* const&, std::random_access_iterator_tag)"}, + // got error + + {"_ZN4llvm9StringMapIPKNS_8PassInfoENS_15MallocAllocatorEE16GetOrCreateValueIS3_EERNS_14StringMapEntryIS3_EENS_9StringRefET_", "llvm::StringMapEntry& llvm::StringMap::GetOrCreateValue(llvm::StringRef, llvm::PassInfo const*)"}, + {"_ZN4llvm8DenseMapIPKvPKNS_8PassInfoENS_12DenseMapInfoIS2_EENS6_IS5_EEE16InsertIntoBucketERKS2_RKS5_PSt4pairIS2_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(void const* const&, llvm::PassInfo const* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKvPKNS_8PassInfoENS_12DenseMapInfoIS2_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm14object_creatorINS_12PassRegistryEEEPvv", "void* llvm::object_creator()"}, + {"_ZN4llvm14object_deleterINS_12PassRegistryEE4callEPv", "llvm::object_deleter::call(void*)"}, + {"_ZN4llvm29initializePrintModulePassPassERNS_12PassRegistryE", "llvm::initializePrintModulePassPass(llvm::PassRegistry&)"}, + {"_ZN4llvm31initializePrintFunctionPassPassERNS_12PassRegistryE", "llvm::initializePrintFunctionPassPass(llvm::PassRegistry&)"}, + {"_ZN4llvm21createPrintModulePassEPNS_11raw_ostreamEbRKSs", "llvm::createPrintModulePass(llvm::raw_ostream*, bool, std::string const&)"}, + {"_ZN4llvm23createPrintFunctionPassERKSsPNS_11raw_ostreamEb", "llvm::createPrintFunctionPass(std::string const&, llvm::raw_ostream*, bool)"}, + {"_ZN12_GLOBAL__N_117PrintFunctionPassD1Ev", "(anonymous namespace)::PrintFunctionPass::~PrintFunctionPass()"}, + {"_ZN12_GLOBAL__N_117PrintFunctionPassD0Ev", "(anonymous namespace)::PrintFunctionPass::~PrintFunctionPass()"}, + {"_ZNK12_GLOBAL__N_117PrintFunctionPass16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::PrintFunctionPass::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_117PrintFunctionPass13runOnFunctionERN4llvm8FunctionE", "(anonymous namespace)::PrintFunctionPass::runOnFunction(llvm::Function&)"}, + {"_ZN12_GLOBAL__N_115PrintModulePassD1Ev", "(anonymous namespace)::PrintModulePass::~PrintModulePass()"}, + {"_ZN12_GLOBAL__N_115PrintModulePassD0Ev", "(anonymous namespace)::PrintModulePass::~PrintModulePass()"}, + {"_ZNK12_GLOBAL__N_115PrintModulePass16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::PrintModulePass::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_115PrintModulePass11runOnModuleERN4llvm6ModuleE", "(anonymous namespace)::PrintModulePass::runOnModule(llvm::Module&)"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_117PrintFunctionPassEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::PrintFunctionPass>()"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_115PrintModulePassEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::PrintModulePass>()"}, + {"_ZN4llvm16AbstractTypeUserD0Ev", "llvm::AbstractTypeUser::~AbstractTypeUser()"}, + {"_ZN4llvm16AbstractTypeUserD1Ev", "llvm::AbstractTypeUser::~AbstractTypeUser()"}, + {"_ZN4llvm16AbstractTypeUserD2Ev", "llvm::AbstractTypeUser::~AbstractTypeUser()"}, + {"_ZN4llvm16AbstractTypeUser7setTypeEPNS_5ValueEPKNS_4TypeE", "llvm::AbstractTypeUser::setType(llvm::Value*, llvm::Type const*)"}, + {"_ZNK4llvm4Type7destroyEv", "llvm::Type::destroy() const"}, + {"_ZN4llvm4Type16getPrimitiveTypeERNS_11LLVMContextENS0_6TypeIDE", "llvm::Type::getPrimitiveType(llvm::LLVMContext&, llvm::Type::TypeID)"}, + {"_ZN4llvm4Type9getVoidTyERNS_11LLVMContextE", "llvm::Type::getVoidTy(llvm::LLVMContext&)"}, + {"_ZN4llvm4Type10getFloatTyERNS_11LLVMContextE", "llvm::Type::getFloatTy(llvm::LLVMContext&)"}, + {"_ZN4llvm4Type11getDoubleTyERNS_11LLVMContextE", "llvm::Type::getDoubleTy(llvm::LLVMContext&)"}, + {"_ZN4llvm4Type13getX86_FP80TyERNS_11LLVMContextE", "llvm::Type::getX86_FP80Ty(llvm::LLVMContext&)"}, + {"_ZN4llvm4Type10getFP128TyERNS_11LLVMContextE", "llvm::Type::getFP128Ty(llvm::LLVMContext&)"}, + {"_ZN4llvm4Type14getPPC_FP128TyERNS_11LLVMContextE", "llvm::Type::getPPC_FP128Ty(llvm::LLVMContext&)"}, + {"_ZN4llvm4Type10getLabelTyERNS_11LLVMContextE", "llvm::Type::getLabelTy(llvm::LLVMContext&)"}, + {"_ZN4llvm4Type13getMetadataTyERNS_11LLVMContextE", "llvm::Type::getMetadataTy(llvm::LLVMContext&)"}, + {"_ZN4llvm4Type12getX86_MMXTyERNS_11LLVMContextE", "llvm::Type::getX86_MMXTy(llvm::LLVMContext&)"}, + {"_ZNK4llvm4Type21getVAArgsPromotedTypeERNS_11LLVMContextE", "llvm::Type::getVAArgsPromotedType(llvm::LLVMContext&) const"}, + {"_ZN4llvm4Type10getInt32TyERNS_11LLVMContextE", "llvm::Type::getInt32Ty(llvm::LLVMContext&)"}, + {"_ZNK4llvm4Type13getScalarTypeEv", "llvm::Type::getScalarType() const"}, + {"_ZNK4llvm4Type11isIntegerTyEj", "llvm::Type::isIntegerTy(unsigned int) const"}, + {"_ZNK4llvm4Type18isIntOrIntVectorTyEv", "llvm::Type::isIntOrIntVectorTy() const"}, + {"_ZNK4llvm4Type16isFPOrFPVectorTyEv", "llvm::Type::isFPOrFPVectorTy() const"}, + {"_ZNK4llvm4Type22canLosslesslyBitCastToEPKS0_", "llvm::Type::canLosslesslyBitCastTo(llvm::Type const*) const"}, + {"_ZNK4llvm4Type22getPrimitiveSizeInBitsEv", "llvm::Type::getPrimitiveSizeInBits() const"}, + {"_ZNK4llvm4Type19getScalarSizeInBitsEv", "llvm::Type::getScalarSizeInBits() const"}, + {"_ZNK4llvm4Type18getFPMantissaWidthEv", "llvm::Type::getFPMantissaWidth() const"}, + {"_ZNK4llvm4Type18isSizedDerivedTypeEv", "llvm::Type::isSizedDerivedType() const"}, + {"_ZNK4llvm4Type24getForwardedTypeInternalEv", "llvm::Type::getForwardedTypeInternal() const"}, + {"_ZN4llvm4Type18refineAbstractTypeEPKNS_11DerivedTypeEPKS0_", "llvm::Type::refineAbstractType(llvm::DerivedType const*, llvm::Type const*)"}, + {"_ZN4llvm4Type18typeBecameConcreteEPKNS_11DerivedTypeE", "llvm::Type::typeBecameConcrete(llvm::DerivedType const*)"}, + {"_ZNK4llvm4Type14getDescriptionEv", "llvm::Type::getDescription() const"}, + {"_ZNK4llvm10StructType10indexValidEPKNS_5ValueE", "llvm::StructType::indexValid(llvm::Value const*) const"}, + {"_ZNK4llvm10StructType10indexValidEj", "llvm::StructType::indexValid(unsigned int) const"}, + {"_ZNK4llvm10StructType14getTypeAtIndexEPKNS_5ValueE", "llvm::StructType::getTypeAtIndex(llvm::Value const*) const"}, + {"_ZNK4llvm10StructType14getTypeAtIndexEj", "llvm::StructType::getTypeAtIndex(unsigned int) const"}, + {"_ZN4llvm4Type9getIntNTyERNS_11LLVMContextEj", "llvm::Type::getIntNTy(llvm::LLVMContext&, unsigned int)"}, + {"_ZN4llvm11IntegerType3getERNS_11LLVMContextEj", "llvm::IntegerType::get(llvm::LLVMContext&, unsigned int)"}, + {"_ZN4llvm4Type9getInt1TyERNS_11LLVMContextE", "llvm::Type::getInt1Ty(llvm::LLVMContext&)"}, + {"_ZN4llvm4Type9getInt8TyERNS_11LLVMContextE", "llvm::Type::getInt8Ty(llvm::LLVMContext&)"}, + {"_ZN4llvm4Type10getInt16TyERNS_11LLVMContextE", "llvm::Type::getInt16Ty(llvm::LLVMContext&)"}, + {"_ZN4llvm4Type10getInt64TyERNS_11LLVMContextE", "llvm::Type::getInt64Ty(llvm::LLVMContext&)"}, + {"_ZN4llvm4Type13getFloatPtrTyERNS_11LLVMContextEj", "llvm::Type::getFloatPtrTy(llvm::LLVMContext&, unsigned int)"}, + {"_ZNK4llvm4Type12getPointerToEj", "llvm::Type::getPointerTo(unsigned int) const"}, + {"_ZN4llvm4Type14getDoublePtrTyERNS_11LLVMContextEj", "llvm::Type::getDoublePtrTy(llvm::LLVMContext&, unsigned int)"}, + {"_ZN4llvm4Type16getX86_FP80PtrTyERNS_11LLVMContextEj", "llvm::Type::getX86_FP80PtrTy(llvm::LLVMContext&, unsigned int)"}, + {"_ZN4llvm4Type13getFP128PtrTyERNS_11LLVMContextEj", "llvm::Type::getFP128PtrTy(llvm::LLVMContext&, unsigned int)"}, + {"_ZN4llvm4Type17getPPC_FP128PtrTyERNS_11LLVMContextEj", "llvm::Type::getPPC_FP128PtrTy(llvm::LLVMContext&, unsigned int)"}, + {"_ZN4llvm4Type15getX86_MMXPtrTyERNS_11LLVMContextEj", "llvm::Type::getX86_MMXPtrTy(llvm::LLVMContext&, unsigned int)"}, + {"_ZN4llvm4Type12getIntNPtrTyERNS_11LLVMContextEjj", "llvm::Type::getIntNPtrTy(llvm::LLVMContext&, unsigned int, unsigned int)"}, + {"_ZN4llvm4Type12getInt1PtrTyERNS_11LLVMContextEj", "llvm::Type::getInt1PtrTy(llvm::LLVMContext&, unsigned int)"}, + {"_ZN4llvm4Type12getInt8PtrTyERNS_11LLVMContextEj", "llvm::Type::getInt8PtrTy(llvm::LLVMContext&, unsigned int)"}, + {"_ZN4llvm4Type13getInt16PtrTyERNS_11LLVMContextEj", "llvm::Type::getInt16PtrTy(llvm::LLVMContext&, unsigned int)"}, + {"_ZN4llvm4Type13getInt32PtrTyERNS_11LLVMContextEj", "llvm::Type::getInt32PtrTy(llvm::LLVMContext&, unsigned int)"}, + {"_ZN4llvm4Type13getInt64PtrTyERNS_11LLVMContextEj", "llvm::Type::getInt64PtrTy(llvm::LLVMContext&, unsigned int)"}, + {"_ZN4llvm12FunctionType17isValidReturnTypeEPKNS_4TypeE", "llvm::FunctionType::isValidReturnType(llvm::Type const*)"}, + {"_ZN4llvm12FunctionType19isValidArgumentTypeEPKNS_4TypeE", "llvm::FunctionType::isValidArgumentType(llvm::Type const*)"}, + {"_ZN4llvm12FunctionTypeC1EPKNS_4TypeERKSt6vectorIS3_SaIS3_EEb", "llvm::FunctionType::FunctionType(llvm::Type const*, std::vector> const&, bool)"}, + {"_ZN4llvm12FunctionTypeC2EPKNS_4TypeERKSt6vectorIS3_SaIS3_EEb", "llvm::FunctionType::FunctionType(llvm::Type const*, std::vector> const&, bool)"}, + {"_ZN4llvm10StructTypeC1ERNS_11LLVMContextERKSt6vectorIPKNS_4TypeESaIS6_EEb", "llvm::StructType::StructType(llvm::LLVMContext&, std::vector> const&, bool)"}, + {"_ZN4llvm10StructTypeC2ERNS_11LLVMContextERKSt6vectorIPKNS_4TypeESaIS6_EEb", "llvm::StructType::StructType(llvm::LLVMContext&, std::vector> const&, bool)"}, + {"_ZN4llvm9ArrayTypeC1EPKNS_4TypeEy", "llvm::ArrayType::ArrayType(llvm::Type const*, unsigned long long)"}, + {"_ZN4llvm9ArrayTypeC2EPKNS_4TypeEy", "llvm::ArrayType::ArrayType(llvm::Type const*, unsigned long long)"}, + {"_ZN4llvm10VectorTypeC1EPKNS_4TypeEj", "llvm::VectorType::VectorType(llvm::Type const*, unsigned int)"}, + {"_ZN4llvm10VectorTypeC2EPKNS_4TypeEj", "llvm::VectorType::VectorType(llvm::Type const*, unsigned int)"}, + {"_ZN4llvm11PointerTypeC1EPKNS_4TypeEj", "llvm::PointerType::PointerType(llvm::Type const*, unsigned int)"}, + {"_ZN4llvm11PointerTypeC2EPKNS_4TypeEj", "llvm::PointerType::PointerType(llvm::Type const*, unsigned int)"}, + {"_ZN4llvm10OpaqueTypeC1ERNS_11LLVMContextE", "llvm::OpaqueType::OpaqueType(llvm::LLVMContext&)"}, + {"_ZN4llvm10OpaqueTypeC2ERNS_11LLVMContextE", "llvm::OpaqueType::OpaqueType(llvm::LLVMContext&)"}, + {"_ZN4llvm12PATypeHolder7destroyEv", "llvm::PATypeHolder::destroy()"}, + {"_ZN4llvm11DerivedType15dropAllTypeUsesEv", "llvm::DerivedType::dropAllTypeUses()"}, + {"_ZN4llvm4Type25PromoteAbstractToConcreteEv", "llvm::Type::PromoteAbstractToConcrete()"}, + {"_ZN4llvm11DerivedType32notifyUsesThatTypeBecameConcreteEv", "llvm::DerivedType::notifyUsesThatTypeBecameConcrete()"}, + {"_ZNK4llvm11IntegerType19isPowerOf2ByteWidthEv", "llvm::IntegerType::isPowerOf2ByteWidth() const"}, + {"_ZNK4llvm11IntegerType7getMaskEv", "llvm::IntegerType::getMask() const"}, + {"_ZN4llvm15FunctionValType3getEPKNS_12FunctionTypeE", "llvm::FunctionValType::get(llvm::FunctionType const*)"}, + {"_ZN4llvm12FunctionType3getEPKNS_4TypeERKSt6vectorIS3_SaIS3_EEb", "llvm::FunctionType::get(llvm::Type const*, std::vector> const&, bool)"}, + {"_ZN4llvm9ArrayType3getEPKNS_4TypeEy", "llvm::ArrayType::get(llvm::Type const*, unsigned long long)"}, + {"_ZN4llvm9ArrayType18isValidElementTypeEPKNS_4TypeE", "llvm::ArrayType::isValidElementType(llvm::Type const*)"}, + {"_ZN4llvm10VectorType3getEPKNS_4TypeEj", "llvm::VectorType::get(llvm::Type const*, unsigned int)"}, + {"_ZN4llvm10VectorType18isValidElementTypeEPKNS_4TypeE", "llvm::VectorType::isValidElementType(llvm::Type const*)"}, + {"_ZN4llvm10StructType3getERNS_11LLVMContextERKSt6vectorIPKNS_4TypeESaIS6_EEb", "llvm::StructType::get(llvm::LLVMContext&, std::vector> const&, bool)"}, + {"_ZN4llvm10StructType3getERNS_11LLVMContextEPKNS_4TypeEz", "llvm::StructType::get(llvm::LLVMContext&, llvm::Type const*, ...)"}, + {"_ZN4llvm10StructType18isValidElementTypeEPKNS_4TypeE", "llvm::StructType::isValidElementType(llvm::Type const*)"}, + {"_ZN4llvm11PointerType3getEPKNS_4TypeEj", "llvm::PointerType::get(llvm::Type const*, unsigned int)"}, + {"_ZN4llvm11PointerType18isValidElementTypeEPKNS_4TypeE", "llvm::PointerType::isValidElementType(llvm::Type const*)"}, + {"_ZN4llvm10OpaqueType3getERNS_11LLVMContextE", "llvm::OpaqueType::get(llvm::LLVMContext&)"}, + {"_ZNK4llvm4Type19addAbstractTypeUserEPNS_16AbstractTypeUserE", "llvm::Type::addAbstractTypeUser(llvm::AbstractTypeUser*) const"}, + {"_ZNK4llvm4Type22removeAbstractTypeUserEPNS_16AbstractTypeUserE", "llvm::Type::removeAbstractTypeUser(llvm::AbstractTypeUser*) const"}, + {"_ZN4llvm11DerivedType20refineAbstractTypeToEPKNS_4TypeE", "llvm::DerivedType::refineAbstractTypeTo(llvm::Type const*)"}, + {"_ZN4llvm12FunctionType18refineAbstractTypeEPKNS_11DerivedTypeEPKNS_4TypeE", "llvm::FunctionType::refineAbstractType(llvm::DerivedType const*, llvm::Type const*)"}, + {"_ZN4llvm12FunctionType18typeBecameConcreteEPKNS_11DerivedTypeE", "llvm::FunctionType::typeBecameConcrete(llvm::DerivedType const*)"}, + {"_ZN4llvm9ArrayType18refineAbstractTypeEPKNS_11DerivedTypeEPKNS_4TypeE", "llvm::ArrayType::refineAbstractType(llvm::DerivedType const*, llvm::Type const*)"}, + {"_ZN4llvm9ArrayType18typeBecameConcreteEPKNS_11DerivedTypeE", "llvm::ArrayType::typeBecameConcrete(llvm::DerivedType const*)"}, + {"_ZN4llvm10VectorType18refineAbstractTypeEPKNS_11DerivedTypeEPKNS_4TypeE", "llvm::VectorType::refineAbstractType(llvm::DerivedType const*, llvm::Type const*)"}, + {"_ZN4llvm10VectorType18typeBecameConcreteEPKNS_11DerivedTypeE", "llvm::VectorType::typeBecameConcrete(llvm::DerivedType const*)"}, + {"_ZN4llvm10StructType18refineAbstractTypeEPKNS_11DerivedTypeEPKNS_4TypeE", "llvm::StructType::refineAbstractType(llvm::DerivedType const*, llvm::Type const*)"}, + {"_ZN4llvm10StructType18typeBecameConcreteEPKNS_11DerivedTypeE", "llvm::StructType::typeBecameConcrete(llvm::DerivedType const*)"}, + {"_ZN4llvm11PointerType18refineAbstractTypeEPKNS_11DerivedTypeEPKNS_4TypeE", "llvm::PointerType::refineAbstractType(llvm::DerivedType const*, llvm::Type const*)"}, + {"_ZN4llvm11PointerType18typeBecameConcreteEPKNS_11DerivedTypeE", "llvm::PointerType::typeBecameConcrete(llvm::DerivedType const*)"}, + {"_ZNK4llvm14SequentialType10indexValidEPKNS_5ValueE", "llvm::SequentialType::indexValid(llvm::Value const*) const"}, + {"_ZN4llvmlsERNS_11raw_ostreamERKNS_4TypeE", "llvm::operator<<(llvm::raw_ostream&, llvm::Type const&)"}, + {"_ZN4llvm25TypeHasCycleThroughItselfEPKNS_4TypeE", "llvm::TypeHasCycleThroughItself(llvm::Type const*)"}, + {"_Z10TypesEqualPKN4llvm4TypeES2_RSt3mapIS2_S2_St4lessIS2_ESaISt4pairIKS2_S2_EEE", "TypesEqual(llvm::Type const*, llvm::Type const*, std::map, std::allocator>>&)"}, + + // {"_Z27AbstractTypeHasCycleThroughPKN4llvm4TypeES2_RNS_11SmallPtrSetIS2_Lj128EEE", + // "AbstractTypeHasCycleThrough(llvm::Type const*, llvm::Type const*, llvm::SmallPtrSet&)"}, + // "AbstractTypeHasCycleThrough(llvm::Type const*, llvm::Type const*, llvm::SmallPtrSet&)" was returned + + + // {"_Z27ConcreteTypeHasCycleThroughPKN4llvm4TypeES2_RNS_11SmallPtrSetIS2_Lj128EEE", + // "ConcreteTypeHasCycleThrough(llvm::Type const*, llvm::Type const*, llvm::SmallPtrSet&)"}, + // "ConcreteTypeHasCycleThrough(llvm::Type const*, llvm::Type const*, llvm::SmallPtrSet&)" was returned + + {"_ZN4llvm12scc_iteratorIN12_GLOBAL__N_118TypePromotionGraphENS_11GraphTraitsIS2_EEE10GetNextSCCEv", "llvm::scc_iterator<(anonymous namespace)::TypePromotionGraph, llvm::GraphTraits<(anonymous namespace)::TypePromotionGraph>>::GetNextSCC()"}, + {"_ZN4llvm12scc_iteratorIN12_GLOBAL__N_118TypePromotionGraphENS_11GraphTraitsIS2_EEE11DFSVisitOneEPNS_4TypeE", "llvm::scc_iterator<(anonymous namespace)::TypePromotionGraph, llvm::GraphTraits<(anonymous namespace)::TypePromotionGraph>>::DFSVisitOne(llvm::Type*)"}, + {"_ZN4llvm12FunctionTypeD1Ev", "llvm::FunctionType::~FunctionType()"}, + {"_ZN4llvm10StructTypeD1Ev", "llvm::StructType::~StructType()"}, + {"_ZNK4llvm10VectorType11getBitWidthEv", "llvm::VectorType::getBitWidth() const"}, + {"_ZNK4llvm4Type16getForwardedTypeEv", "llvm::Type::getForwardedType() const"}, + {"_ZN4llvm14SequentialTypeC2ENS_4Type6TypeIDEPKS1_", "llvm::SequentialType::SequentialType(llvm::Type::TypeID, llvm::Type const*)"}, + {"_ZN4llvm12PATypeHandleaSEPKNS_4TypeE", "llvm::PATypeHandle::operator=(llvm::Type const*)"}, + {"_ZN4llvm7TypeMapINS_14IntegerValTypeENS_11IntegerTypeEE3addERKS1_PS2_", "llvm::TypeMap::add(llvm::IntegerValType const&, llvm::IntegerType*)"}, + {"_ZN4llvm7TypeMapINS_15FunctionValTypeENS_12FunctionTypeEE3addERKS1_PS2_", "llvm::TypeMap::add(llvm::FunctionValType const&, llvm::FunctionType*)"}, + {"_ZN4llvm7TypeMapINS_12ArrayValTypeENS_9ArrayTypeEE3addERKS1_PS2_", "llvm::TypeMap::add(llvm::ArrayValType const&, llvm::ArrayType*)"}, + {"_ZN4llvm7TypeMapINS_13VectorValTypeENS_10VectorTypeEE3addERKS1_PS2_", "llvm::TypeMap::add(llvm::VectorValType const&, llvm::VectorType*)"}, + {"_ZN4llvm7TypeMapINS_13StructValTypeENS_10StructTypeEE3addERKS1_PS2_", "llvm::TypeMap::add(llvm::StructValType const&, llvm::StructType*)"}, + {"_ZN4llvm7TypeMapINS_14PointerValTypeENS_11PointerTypeEE3addERKS1_PS2_", "llvm::TypeMap::add(llvm::PointerValType const&, llvm::PointerType*)"}, + {"_ZN4llvm7TypeMapINS_15FunctionValTypeENS_12FunctionTypeEE18RefineAbstractTypeEPS2_PKNS_11DerivedTypeEPKNS_4TypeE", "llvm::TypeMap::RefineAbstractType(llvm::FunctionType*, llvm::DerivedType const*, llvm::Type const*)"}, + {"_ZN4llvm11TypeMapBase18TypeBecameConcreteEPNS_11DerivedTypeEPKS1_", "llvm::TypeMapBase::TypeBecameConcrete(llvm::DerivedType*, llvm::DerivedType const*)"}, + {"_ZN4llvm7TypeMapINS_12ArrayValTypeENS_9ArrayTypeEE18RefineAbstractTypeEPS2_PKNS_11DerivedTypeEPKNS_4TypeE", "llvm::TypeMap::RefineAbstractType(llvm::ArrayType*, llvm::DerivedType const*, llvm::Type const*)"}, + {"_ZN4llvm7TypeMapINS_13VectorValTypeENS_10VectorTypeEE18RefineAbstractTypeEPS2_PKNS_11DerivedTypeEPKNS_4TypeE", "llvm::TypeMap::RefineAbstractType(llvm::VectorType*, llvm::DerivedType const*, llvm::Type const*)"}, + {"_ZN4llvm7TypeMapINS_13StructValTypeENS_10StructTypeEE18RefineAbstractTypeEPS2_PKNS_11DerivedTypeEPKNS_4TypeE", "llvm::TypeMap::RefineAbstractType(llvm::StructType*, llvm::DerivedType const*, llvm::Type const*)"}, + {"_ZN4llvm7TypeMapINS_14PointerValTypeENS_11PointerTypeEE18RefineAbstractTypeEPS2_PKNS_11DerivedTypeEPKNS_4TypeE", "llvm::TypeMap::RefineAbstractType(llvm::PointerType*, llvm::DerivedType const*, llvm::Type const*)"}, + {"_ZN4llvm14SequentialTypeD1Ev", "llvm::SequentialType::~SequentialType()"}, + {"_ZN4llvm14SequentialTypeD0Ev", "llvm::SequentialType::~SequentialType()"}, + {"_ZNK4llvm14SequentialType14getTypeAtIndexEPKNS_5ValueE", "llvm::SequentialType::getTypeAtIndex(llvm::Value const*) const"}, + {"_ZNK4llvm14SequentialType14getTypeAtIndexEj", "llvm::SequentialType::getTypeAtIndex(unsigned int) const"}, + {"_ZNK4llvm14SequentialType10indexValidEj", "llvm::SequentialType::indexValid(unsigned int) const"}, + {"_ZN4llvm12FunctionTypeD0Ev", "llvm::FunctionType::~FunctionType()"}, + {"_ZN4llvm10StructTypeD0Ev", "llvm::StructType::~StructType()"}, + {"_ZN4llvm9ArrayTypeD1Ev", "llvm::ArrayType::~ArrayType()"}, + {"_ZN4llvm9ArrayTypeD0Ev", "llvm::ArrayType::~ArrayType()"}, + {"_ZN4llvm10VectorTypeD1Ev", "llvm::VectorType::~VectorType()"}, + {"_ZN4llvm10VectorTypeD0Ev", "llvm::VectorType::~VectorType()"}, + {"_ZN4llvm11PointerTypeD1Ev", "llvm::PointerType::~PointerType()"}, + {"_ZN4llvm11PointerTypeD0Ev", "llvm::PointerType::~PointerType()"}, + {"_ZN4llvm10OpaqueTypeD1Ev", "llvm::OpaqueType::~OpaqueType()"}, + {"_ZN4llvm10OpaqueTypeD0Ev", "llvm::OpaqueType::~OpaqueType()"}, + {"_ZN4llvm11TypeMapBase21RemoveFromTypesByHashEjPKNS_4TypeE", "llvm::TypeMapBase::RemoveFromTypesByHash(unsigned int, llvm::Type const*)"}, + {"_ZNSt8_Rb_treeIjSt4pairIKjN4llvm12PATypeHolderEESt10_Select1stIS4_ESt4lessIjESaIS4_EE15_M_insert_equalERKS4_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_equal(std::pair const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm4TypeESt4pairIKS3_S3_ESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE8_M_eraseEPSt13_Rb_tree_nodeIS6_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + {"_ZNSt8_Rb_treeIPKN4llvm4TypeESt4pairIKS3_S3_ESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS6_ERKS6_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + {"_ZNSt8_Rb_treeIPKN4llvm4TypeESt4pairIKS3_S3_ESt10_Select1stIS6_ESt4lessIS3_ESaIS6_EE16_M_insert_uniqueERKS6_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZNSt8_Rb_treeIN4llvm14PointerValTypeESt4pairIKS1_NS0_12PATypeHolderEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE16_M_insert_uniqueERKS5_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZNSt8_Rb_treeIN4llvm14PointerValTypeESt4pairIKS1_NS0_12PATypeHolderEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE9_M_insertEPSt18_Rb_tree_node_baseSD_RKS5_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair const&)"}, + {"_ZNSt8_Rb_treeIN4llvm14PointerValTypeESt4pairIKS1_NS0_12PATypeHolderEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE5eraseESt17_Rb_tree_iteratorIS5_ESD_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::erase(std::_Rb_tree_iterator>, std::_Rb_tree_iterator>)"}, + {"_ZN4llvm13StructValType3getEPKNS_10StructTypeE", "llvm::StructValType::get(llvm::StructType const*)"}, + + // {"_ZNSt4pairIKN4llvm13StructValTypeENS0_12PATypeHolderEEC2IS1_PNS0_10StructTypeEEERKS_IT_T0_E", + // "std::pair::pair(std::pair const&)"}, + // "std::pair const& std::pair::pair()" was returned + + {"_ZNSt8_Rb_treeIN4llvm13StructValTypeESt4pairIKS1_NS0_12PATypeHolderEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE16_M_insert_uniqueERKS5_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZNSt8_Rb_treeIN4llvm13StructValTypeESt4pairIKS1_NS0_12PATypeHolderEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE9_M_insertEPSt18_Rb_tree_node_baseSD_RKS5_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair const&)"}, + {"_ZN9__gnu_cxx13new_allocatorISt4pairIKN4llvm13StructValTypeENS2_12PATypeHolderEEE9constructEPS6_RKS6_", "__gnu_cxx::new_allocator>::construct(std::pair*, std::pair const&)"}, + {"_ZNSt8_Rb_treeIN4llvm13StructValTypeESt4pairIKS1_NS0_12PATypeHolderEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE5eraseERS3_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::erase(llvm::StructValType const&)"}, + {"_ZNSt8_Rb_treeIN4llvm13StructValTypeESt4pairIKS1_NS0_12PATypeHolderEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE5eraseESt17_Rb_tree_iteratorIS5_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::erase(std::_Rb_tree_iterator>)"}, + {"_ZNSt8_Rb_treeIN4llvm13StructValTypeESt4pairIKS1_NS0_12PATypeHolderEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE11lower_boundERS3_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::lower_bound(llvm::StructValType const&)"}, + {"_ZNSt8_Rb_treeIN4llvm13StructValTypeESt4pairIKS1_NS0_12PATypeHolderEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE11upper_boundERS3_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::upper_bound(llvm::StructValType const&)"}, + {"_ZNSt8_Rb_treeIN4llvm13VectorValTypeESt4pairIKS1_NS0_12PATypeHolderEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE16_M_insert_uniqueERKS5_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZNSt8_Rb_treeIN4llvm13VectorValTypeESt4pairIKS1_NS0_12PATypeHolderEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE9_M_insertEPSt18_Rb_tree_node_baseSD_RKS5_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair const&)"}, + {"_ZNSt8_Rb_treeIN4llvm13VectorValTypeESt4pairIKS1_NS0_12PATypeHolderEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE5eraseESt17_Rb_tree_iteratorIS5_ESD_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::erase(std::_Rb_tree_iterator>, std::_Rb_tree_iterator>)"}, + {"_ZNSt8_Rb_treeIN4llvm12ArrayValTypeESt4pairIKS1_NS0_12PATypeHolderEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE16_M_insert_uniqueERKS5_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZNSt8_Rb_treeIN4llvm12ArrayValTypeESt4pairIKS1_NS0_12PATypeHolderEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE9_M_insertEPSt18_Rb_tree_node_baseSD_RKS5_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair const&)"}, + {"_ZNSt8_Rb_treeIN4llvm12ArrayValTypeESt4pairIKS1_NS0_12PATypeHolderEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE5eraseESt17_Rb_tree_iteratorIS5_ESD_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::erase(std::_Rb_tree_iterator>, std::_Rb_tree_iterator>)"}, + + // {"_ZNSt4pairIKN4llvm15FunctionValTypeENS0_12PATypeHolderEEC2IS1_PNS0_12FunctionTypeEEERKS_IT_T0_E", + // "std::pair::pair(std::pair const&)"}, + // "std::pair const& std::pair::pair()" was returned + + {"_ZNSt8_Rb_treeIN4llvm15FunctionValTypeESt4pairIKS1_NS0_12PATypeHolderEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE16_M_insert_uniqueERKS5_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + {"_ZNSt8_Rb_treeIN4llvm15FunctionValTypeESt4pairIKS1_NS0_12PATypeHolderEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE9_M_insertEPSt18_Rb_tree_node_baseSD_RKS5_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair const&)"}, + {"_ZN9__gnu_cxx13new_allocatorISt4pairIKN4llvm15FunctionValTypeENS2_12PATypeHolderEEE9constructEPS6_RKS6_", "__gnu_cxx::new_allocator>::construct(std::pair*, std::pair const&)"}, + {"_ZNSt8_Rb_treeIN4llvm15FunctionValTypeESt4pairIKS1_NS0_12PATypeHolderEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE5eraseERS3_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::erase(llvm::FunctionValType const&)"}, + {"_ZNSt8_Rb_treeIN4llvm15FunctionValTypeESt4pairIKS1_NS0_12PATypeHolderEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE11equal_rangeERS3_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::equal_range(llvm::FunctionValType const&)"}, + {"_ZNSt8_Rb_treeIN4llvm15FunctionValTypeESt4pairIKS1_NS0_12PATypeHolderEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE5eraseESt17_Rb_tree_iteratorIS5_E", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::erase(std::_Rb_tree_iterator>)"}, + {"_ZNSt6vectorIPN4llvm16AbstractTypeUserESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::AbstractTypeUser* const&)"}, + {"_ZNSt8_Rb_treeIN4llvm13StructValTypeESt4pairIKS1_NS0_12PATypeHolderEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE4findERS3_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::find(llvm::StructValType const&)"}, + {"_ZNSt8_Rb_treeIN4llvm15FunctionValTypeESt4pairIKS1_NS0_12PATypeHolderEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE4findERS3_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::find(llvm::FunctionValType const&)"}, + {"_ZNSt8_Rb_treeIN4llvm14IntegerValTypeESt4pairIKS1_NS0_12PATypeHolderEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE16_M_insert_uniqueERKS5_", "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + + // {"_ZSt6__findIN9__gnu_cxx17__normal_iteratorIPPN4llvm4TypeESt6vectorIS4_SaIS4_EEEENS2_12PATypeHandleEET_SB_SB_RKT0_St26random_access_iterator_tag", + // "__gnu_cxx::__normal_iterator>> std::__find<__gnu_cxx::__normal_iterator>>, llvm::PATypeHandle>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, llvm::PATypeHandle const&, std::random_access_iterator_tag)"}, + // got error + + {"_ZNSt6vectorIPN4llvm4TypeESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::Type* const&)"}, + {"_ZN4llvm8DenseMapIPNS_4TypeEjNS_12DenseMapInfoIS2_EENS3_IjEEE16InsertIntoBucketERKS2_RKjPSt4pairIS2_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::Type* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_4TypeEjNS_12DenseMapInfoIS2_EENS3_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNSt6vectorISt4pairIPN4llvm4TypeEPNS1_12PATypeHandleEESaIS6_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS6_S8_EERKS6_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + {"_ZN4llvm13CompositeTypeD1Ev", "llvm::CompositeType::~CompositeType()"}, + {"_ZN4llvm13CompositeTypeD0Ev", "llvm::CompositeType::~CompositeType()"}, + {"_ZN4llvm15TypeSymbolTableD0Ev", "llvm::TypeSymbolTable::~TypeSymbolTable()"}, + {"_ZN4llvm15TypeSymbolTableD1Ev", "llvm::TypeSymbolTable::~TypeSymbolTable()"}, + {"_ZN4llvm15TypeSymbolTableD2Ev", "llvm::TypeSymbolTable::~TypeSymbolTable()"}, + {"_ZNK4llvm15TypeSymbolTable13getUniqueNameENS_9StringRefE", "llvm::TypeSymbolTable::getUniqueName(llvm::StringRef) const"}, + {"_ZNK4llvm15TypeSymbolTable6lookupENS_9StringRefE", "llvm::TypeSymbolTable::lookup(llvm::StringRef) const"}, + {"_ZN4llvm15TypeSymbolTable6removeESt17_Rb_tree_iteratorISt4pairIKSsPKNS_4TypeEEE", "llvm::TypeSymbolTable::remove(std::_Rb_tree_iterator>)"}, + {"_ZN4llvm15TypeSymbolTable6insertENS_9StringRefEPKNS_4TypeE", "llvm::TypeSymbolTable::insert(llvm::StringRef, llvm::Type const*)"}, + {"_ZN4llvm15TypeSymbolTable18refineAbstractTypeEPKNS_11DerivedTypeEPKNS_4TypeE", "llvm::TypeSymbolTable::refineAbstractType(llvm::DerivedType const*, llvm::Type const*)"}, + {"_ZN4llvm15TypeSymbolTable18typeBecameConcreteEPKNS_11DerivedTypeE", "llvm::TypeSymbolTable::typeBecameConcrete(llvm::DerivedType const*)"}, + {"_ZNK4llvm15TypeSymbolTable4dumpEv", "llvm::TypeSymbolTable::dump() const"}, + + // {"_ZNSt8_Rb_treeIKSsSt4pairIS0_PKN4llvm4TypeEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE16_M_insert_uniqueERKS6_", + // "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + // "std::_Rb_tree, std::_Select1st, std::less, std::allocator>::_M_insert_unique(llvm::Type const* const&)" was returned + + + // {"_ZNSt8_Rb_treeIKSsSt4pairIS0_PKN4llvm4TypeEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE9_M_insertEPSt18_Rb_tree_node_baseSE_RKS6_", + // "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair const&)"}, + // "std::_Rb_tree, std::_Select1st, std::less, std::allocator>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base, llvm::Type const* const&)" was returned + + + // {"_ZNKSt8_Rb_treeIKSsSt4pairIS0_PKN4llvm4TypeEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE4findERS0_", + // "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::find(std::string const&) const"}, + // "std::_Rb_tree, std::_Select1st, std::less, std::allocator>::find(std::string&) const" was returned + + + // {"_ZNSt8_Rb_treeIKSsSt4pairIS0_PKN4llvm4TypeEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE8_M_eraseEPSt13_Rb_tree_nodeIS6_E", + // "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + // "std::_Rb_tree, std::_Select1st, std::less, std::allocator>::_M_erase(std::_Rb_tree_node*)" was returned + + {"_ZN4llvm3Use4swapERS0_", "llvm::Use::swap(llvm::Use&)"}, + {"_ZNK4llvm3Use14getImpliedUserEv", "llvm::Use::getImpliedUser() const"}, + {"_ZN4llvm3Use8initTagsEPS0_S1_", "llvm::Use::initTags(llvm::Use*, llvm::Use*)"}, + {"_ZN4llvm3Use3zapEPS0_PKS0_b", "llvm::Use::zap(llvm::Use*, llvm::Use const*, bool)"}, + {"_ZNK4llvm3Use7getUserEv", "llvm::Use::getUser() const"}, + {"_ZN4llvm4User17replaceUsesOfWithEPNS_5ValueES2_", "llvm::User::replaceUsesOfWith(llvm::Value*, llvm::Value*)"}, + {"_ZNK4llvm4User16allocHungoffUsesEj", "llvm::User::allocHungoffUses(unsigned int) const"}, + {"_ZN4llvm4UsernwEmj", "llvm::User::operator new(unsigned long, unsigned int)"}, + {"_ZN4llvm4UserdlEPv", "llvm::User::operator delete(void*)"}, + {"_ZN4llvm5ValueC1EPKNS_4TypeEj", "llvm::Value::Value(llvm::Type const*, unsigned int)"}, + {"_ZN4llvm5ValueC2EPKNS_4TypeEj", "llvm::Value::Value(llvm::Type const*, unsigned int)"}, + {"_ZN4llvm5ValueD0Ev", "llvm::Value::~Value()"}, + {"_ZN4llvm5ValueD1Ev", "llvm::Value::~Value()"}, + {"_ZN4llvm5ValueD2Ev", "llvm::Value::~Value()"}, + {"_ZN4llvm15ValueHandleBase14ValueIsDeletedEPNS_5ValueE", "llvm::ValueHandleBase::ValueIsDeleted(llvm::Value*)"}, + {"_ZNK4llvm5Value8hasNUsesEj", "llvm::Value::hasNUses(unsigned int) const"}, + {"_ZNK4llvm5Value14hasNUsesOrMoreEj", "llvm::Value::hasNUsesOrMore(unsigned int) const"}, + {"_ZNK4llvm5Value18isUsedInBasicBlockEPKNS_10BasicBlockE", "llvm::Value::isUsedInBasicBlock(llvm::BasicBlock const*) const"}, + {"_ZNK4llvm5Value10getNumUsesEv", "llvm::Value::getNumUses() const"}, + {"_ZNK4llvm5Value7getNameEv", "llvm::Value::getName() const"}, + {"_ZNK4llvm5Value10getNameStrEv", "llvm::Value::getNameStr() const"}, + {"_ZN4llvm5Value7setNameERKNS_5TwineE", "llvm::Value::setName(llvm::Twine const&)"}, + {"_ZN4llvm5Value8takeNameEPS0_", "llvm::Value::takeName(llvm::Value*)"}, + {"_ZN4llvm5Value27uncheckedReplaceAllUsesWithEPS0_", "llvm::Value::uncheckedReplaceAllUsesWith(llvm::Value*)"}, + + // {"_ZN4llvm15ValueHandleBase12ValueIsRAUWdEPNS_5ValueES2_", + // "llvm::ValueHandleBase::ValueIsRAUWd(llvm::Value*, llvm::Value*)"}, + // got error + + {"_ZN4llvm5Value18replaceAllUsesWithEPS0_", "llvm::Value::replaceAllUsesWith(llvm::Value*)"}, + {"_ZN4llvm5Value17stripPointerCastsEv", "llvm::Value::stripPointerCasts()"}, + {"_ZNK4llvm5Value24isDereferenceablePointerEv", "llvm::Value::isDereferenceablePointer() const"}, + {"_ZN4llvm5Value16DoPHITranslationEPKNS_10BasicBlockES3_", "llvm::Value::DoPHITranslation(llvm::BasicBlock const*, llvm::BasicBlock const*)"}, + {"_ZNK4llvm5Value10getContextEv", "llvm::Value::getContext() const"}, + {"_ZN4llvm15ValueHandleBase20AddToExistingUseListEPPS0_", "llvm::ValueHandleBase::AddToExistingUseList(llvm::ValueHandleBase**)"}, + {"_ZN4llvm15ValueHandleBase25AddToExistingUseListAfterEPS0_", "llvm::ValueHandleBase::AddToExistingUseListAfter(llvm::ValueHandleBase*)"}, + {"_ZN4llvm15ValueHandleBase12AddToUseListEv", "llvm::ValueHandleBase::AddToUseList()"}, + {"_ZN4llvm15ValueHandleBase17RemoveFromUseListEv", "llvm::ValueHandleBase::RemoveFromUseList()"}, + {"_ZN4llvm10CallbackVHD0Ev", "llvm::CallbackVH::~CallbackVH()"}, + {"_ZN4llvm10CallbackVHD1Ev", "llvm::CallbackVH::~CallbackVH()"}, + {"_ZN4llvm10CallbackVHD2Ev", "llvm::CallbackVH::~CallbackVH()"}, + {"_ZN4llvm8DenseMapIPNS_5ValueEPNS_15ValueHandleBaseENS_12DenseMapInfoIS2_EENS5_IS4_EEE16InsertIntoBucketERKS2_RKS4_PSt4pairIS2_S4_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::Value* const&, llvm::ValueHandleBase* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPNS_5ValueEPNS_15ValueHandleBaseENS_12DenseMapInfoIS2_EENS5_IS4_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm16ValueSymbolTableD1Ev", "llvm::ValueSymbolTable::~ValueSymbolTable()"}, + {"_ZN4llvm16ValueSymbolTableD2Ev", "llvm::ValueSymbolTable::~ValueSymbolTable()"}, + {"_ZN4llvm16ValueSymbolTable13reinsertValueEPNS_5ValueE", "llvm::ValueSymbolTable::reinsertValue(llvm::Value*)"}, + {"_ZN4llvm16ValueSymbolTable15removeValueNameEPNS_14StringMapEntryIPNS_5ValueEEE", "llvm::ValueSymbolTable::removeValueName(llvm::StringMapEntry*)"}, + {"_ZN4llvm16ValueSymbolTable15createValueNameENS_9StringRefEPNS_5ValueE", "llvm::ValueSymbolTable::createValueName(llvm::StringRef, llvm::Value*)"}, + {"_ZNK4llvm16ValueSymbolTable4dumpEv", "llvm::ValueSymbolTable::dump() const"}, + {"_ZN4llvm9StringMapIPNS_5ValueENS_15MallocAllocatorEE16GetOrCreateValueIS2_EERNS_14StringMapEntryIS2_EENS_9StringRefET_", "llvm::StringMapEntry& llvm::StringMap::GetOrCreateValue(llvm::StringRef, llvm::Value*)"}, + {"_ZN4llvm3EVT20getExtendedIntegerVTERNS_11LLVMContextEj", "llvm::EVT::getExtendedIntegerVT(llvm::LLVMContext&, unsigned int)"}, + {"_ZN4llvm3EVT19getExtendedVectorVTERNS_11LLVMContextES0_j", "llvm::EVT::getExtendedVectorVT(llvm::LLVMContext&, llvm::EVT, unsigned int)"}, + {"_ZNK4llvm3EVT13getTypeForEVTERNS_11LLVMContextE", "llvm::EVT::getTypeForEVT(llvm::LLVMContext&) const"}, + {"_ZNK4llvm3EVT23isExtendedFloatingPointEv", "llvm::EVT::isExtendedFloatingPoint() const"}, + {"_ZNK4llvm3EVT17isExtendedIntegerEv", "llvm::EVT::isExtendedInteger() const"}, + {"_ZNK4llvm3EVT16isExtendedVectorEv", "llvm::EVT::isExtendedVector() const"}, + {"_ZNK4llvm3EVT21isExtended64BitVectorEv", "llvm::EVT::isExtended64BitVector() const"}, + {"_ZNK4llvm3EVT22isExtended128BitVectorEv", "llvm::EVT::isExtended128BitVector() const"}, + {"_ZNK4llvm3EVT22isExtended256BitVectorEv", "llvm::EVT::isExtended256BitVector() const"}, + {"_ZNK4llvm3EVT22isExtended512BitVectorEv", "llvm::EVT::isExtended512BitVector() const"}, + {"_ZNK4llvm3EVT28getExtendedVectorElementTypeEv", "llvm::EVT::getExtendedVectorElementType() const"}, + {"_ZN4llvm3EVT6getEVTEPKNS_4TypeEb", "llvm::EVT::getEVT(llvm::Type const*, bool)"}, + {"_ZNK4llvm3EVT28getExtendedVectorNumElementsEv", "llvm::EVT::getExtendedVectorNumElements() const"}, + {"_ZNK4llvm3EVT21getExtendedSizeInBitsEv", "llvm::EVT::getExtendedSizeInBits() const"}, + {"_ZNK4llvm3EVT12getEVTStringEv", "llvm::EVT::getEVTString() const"}, + {"_ZN4llvm25initializePreVerifierPassERNS_12PassRegistryE", "llvm::initializePreVerifierPass(llvm::PassRegistry&)"}, + {"_ZN4llvm22initializeVerifierPassERNS_12PassRegistryE", "llvm::initializeVerifierPass(llvm::PassRegistry&)"}, + {"_ZN4llvm18createVerifierPassENS_21VerifierFailureActionE", "llvm::createVerifierPass(llvm::VerifierFailureAction)"}, + {"_ZN4llvm14verifyFunctionERKNS_8FunctionENS_21VerifierFailureActionE", "llvm::verifyFunction(llvm::Function const&, llvm::VerifierFailureAction)"}, + {"_ZN4llvm12verifyModuleERKNS_6ModuleENS_21VerifierFailureActionEPSs", "llvm::verifyModule(llvm::Module const&, llvm::VerifierFailureAction, std::string*)"}, + {"_ZN12_GLOBAL__N_18VerifierD1Ev", "(anonymous namespace)::Verifier::~Verifier()"}, + {"_ZN12_GLOBAL__N_18VerifierD0Ev", "(anonymous namespace)::Verifier::~Verifier()"}, + {"_ZNK12_GLOBAL__N_18Verifier16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::Verifier::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_18Verifier16doInitializationERN4llvm6ModuleE", "(anonymous namespace)::Verifier::doInitialization(llvm::Module&)"}, + {"_ZN12_GLOBAL__N_18Verifier13runOnFunctionERN4llvm8FunctionE", "(anonymous namespace)::Verifier::runOnFunction(llvm::Function&)"}, + {"_ZN12_GLOBAL__N_18Verifier14doFinalizationERN4llvm6ModuleE", "(anonymous namespace)::Verifier::doFinalization(llvm::Module&)"}, + {"_ZN12_GLOBAL__N_18Verifier16visitGlobalValueERN4llvm11GlobalValueE", "(anonymous namespace)::Verifier::visitGlobalValue(llvm::GlobalValue&)"}, + {"_ZN12_GLOBAL__N_18Verifier13visitFunctionERN4llvm8FunctionE", "(anonymous namespace)::Verifier::visitFunction(llvm::Function&)"}, + {"_ZN12_GLOBAL__N_18Verifier13abortIfBrokenEv", "(anonymous namespace)::Verifier::abortIfBroken()"}, + {"_ZN12_GLOBAL__N_18Verifier11CheckFailedERKN4llvm5TwineEPKNS1_5ValueES7_S7_S7_", "(anonymous namespace)::Verifier::CheckFailed(llvm::Twine const&, llvm::Value const*, llvm::Value const*, llvm::Value const*, llvm::Value const*)"}, + {"_ZN12_GLOBAL__N_18Verifier11visitMDNodeERN4llvm6MDNodeEPNS1_8FunctionE", "(anonymous namespace)::Verifier::visitMDNode(llvm::MDNode&, llvm::Function*)"}, + {"_ZN12_GLOBAL__N_18Verifier11CheckFailedERKN4llvm5TwineEPKNS1_5ValueEPKNS1_4TypeES7_", "(anonymous namespace)::Verifier::CheckFailed(llvm::Twine const&, llvm::Value const*, llvm::Type const*, llvm::Value const*)"}, + {"_ZN12_GLOBAL__N_18Verifier19VerifyFunctionAttrsEPKN4llvm12FunctionTypeERKNS1_11AttrListPtrEPKNS1_5ValueE", "(anonymous namespace)::Verifier::VerifyFunctionAttrs(llvm::FunctionType const*, llvm::AttrListPtr const&, llvm::Value const*)"}, + {"_ZN12_GLOBAL__N_18Verifier20VerifyParameterAttrsEjPKN4llvm4TypeEbPKNS1_5ValueE", "(anonymous namespace)::Verifier::VerifyParameterAttrs(unsigned int, llvm::Type const*, bool, llvm::Value const*)"}, + {"_ZN4llvm11InstVisitorIN12_GLOBAL__N_18VerifierEvE5visitERNS_11InstructionE", "llvm::InstVisitor<(anonymous namespace)::Verifier, void>::visit(llvm::Instruction&)"}, + {"_ZN12_GLOBAL__N_18Verifier16visitInstructionERN4llvm11InstructionE", "(anonymous namespace)::Verifier::visitInstruction(llvm::Instruction&)"}, + {"_ZN12_GLOBAL__N_18Verifier10VerifyTypeEPKN4llvm4TypeE", "(anonymous namespace)::Verifier::VerifyType(llvm::Type const*)"}, + {"_ZN12_GLOBAL__N_18Verifier11CheckFailedERKN4llvm5TwineEPKNS1_4TypeES7_S7_", "(anonymous namespace)::Verifier::CheckFailed(llvm::Twine const&, llvm::Type const*, llvm::Type const*, llvm::Type const*)"}, + {"_ZN12_GLOBAL__N_18Verifier14VerifyCallSiteEN4llvm8CallSiteE", "(anonymous namespace)::Verifier::VerifyCallSite(llvm::CallSite)"}, + {"_ZN12_GLOBAL__N_18Verifier26visitIntrinsicFunctionCallEN4llvm9Intrinsic2IDERNS1_8CallInstE", "(anonymous namespace)::Verifier::visitIntrinsicFunctionCall(llvm::Intrinsic::ID, llvm::CallInst&)"}, + {"_ZN12_GLOBAL__N_18Verifier24VerifyIntrinsicPrototypeEN4llvm9Intrinsic2IDEPNS1_8FunctionEjjz", "(anonymous namespace)::Verifier::VerifyIntrinsicPrototype(llvm::Intrinsic::ID, llvm::Function*, unsigned int, unsigned int, ...)"}, + {"_ZN12_GLOBAL__N_18Verifier16PerformTypeCheckEN4llvm9Intrinsic2IDEPNS1_8FunctionEPKNS1_4TypeEijRSs", "(anonymous namespace)::Verifier::PerformTypeCheck(llvm::Intrinsic::ID, llvm::Function*, llvm::Type const*, int, unsigned int, std::string&)"}, + {"_Z14IntrinsicParamjj", "IntrinsicParam(unsigned int, unsigned int)"}, + {"_ZN12_GLOBAL__N_18Verifier19visitBinaryOperatorERN4llvm14BinaryOperatorE", "(anonymous namespace)::Verifier::visitBinaryOperator(llvm::BinaryOperator&)"}, + {"_ZN12_GLOBAL__N_17TypeSetD1Ev", "(anonymous namespace)::TypeSet::~TypeSet()"}, + {"_ZN12_GLOBAL__N_17TypeSetD0Ev", "(anonymous namespace)::TypeSet::~TypeSet()"}, + {"_ZN12_GLOBAL__N_17TypeSet18refineAbstractTypeEPKN4llvm11DerivedTypeEPKNS1_4TypeE", "(anonymous namespace)::TypeSet::refineAbstractType(llvm::DerivedType const*, llvm::Type const*)"}, + {"_ZN12_GLOBAL__N_17TypeSet18typeBecameConcreteEPKN4llvm11DerivedTypeE", "(anonymous namespace)::TypeSet::typeBecameConcrete(llvm::DerivedType const*)"}, + {"_ZNK12_GLOBAL__N_17TypeSet4dumpEv", "(anonymous namespace)::TypeSet::dump() const"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_18VerifierEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::Verifier>()"}, + {"_ZN4llvm15callDefaultCtorIN12_GLOBAL__N_111PreVerifierEEEPNS_4PassEv", "llvm::Pass* llvm::callDefaultCtor<(anonymous namespace)::PreVerifier>()"}, + {"_ZN12_GLOBAL__N_111PreVerifierD1Ev", "(anonymous namespace)::PreVerifier::~PreVerifier()"}, + {"_ZN12_GLOBAL__N_111PreVerifierD0Ev", "(anonymous namespace)::PreVerifier::~PreVerifier()"}, + {"_ZNK12_GLOBAL__N_111PreVerifier16getAnalysisUsageERN4llvm13AnalysisUsageE", "(anonymous namespace)::PreVerifier::getAnalysisUsage(llvm::AnalysisUsage&) const"}, + {"_ZN12_GLOBAL__N_111PreVerifier13runOnFunctionERN4llvm8FunctionE", "(anonymous namespace)::PreVerifier::runOnFunction(llvm::Function&)"}, + + // {"_ZSt16__introsort_loopIPSt4pairIPN4llvm10BasicBlockEPNS1_5ValueEElEvT_S8_T0_", + // "void std::__introsort_loop*, long>(std::pair*, std::pair*, long)"}, + // got error + + + // {"_ZSt22__final_insertion_sortIPSt4pairIPN4llvm10BasicBlockEPNS1_5ValueEEEvT_S8_", + // "void std::__final_insertion_sort*>(std::pair*, std::pair*)"}, + // got error + + + // {"_ZSt16__insertion_sortIPSt4pairIPN4llvm10BasicBlockEPNS1_5ValueEEEvT_S8_", + // "void std::__insertion_sort*>(std::pair*, std::pair*)"}, + // got error + + + // {"_ZSt13__heap_selectIPSt4pairIPN4llvm10BasicBlockEPNS1_5ValueEEEvT_S8_S8_", + // "void std::__heap_select*>(std::pair*, std::pair*, std::pair*)"}, + // got error + + + // {"_ZSt13__adjust_heapIPSt4pairIPN4llvm10BasicBlockEPNS1_5ValueEElS6_EvT_T0_S9_T1_", + // "void std::__adjust_heap*, long, std::pair>(std::pair*, long, long, std::pair)"}, + // got error + + + // {"_ZN4llvm15SmallVectorImplIPNS_10BasicBlockEE6appendINS_12PredIteratorIS1_NS_18value_use_iteratorINS_4UserEEEEEEEvT_SA_", + // "void llvm::SmallVectorImpl::append>>(llvm::PredIterator>, llvm::PredIterator>)"}, + // got error + + + // {"_ZSt6__findIPPKN4llvm4TypeES3_ET_S5_S5_RKT0_St26random_access_iterator_tag", + // "llvm::Type const** std::__find(llvm::Type const**, llvm::Type const**, llvm::Type const* const&, std::random_access_iterator_tag)"}, + // got error + + {"_ZN4llvm14ARMInstPrinter16printInstructionEPKNS_6MCInstERNS_11raw_ostreamE", "llvm::ARMInstPrinter::printInstruction(llvm::MCInst const*, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter12printOperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printOperand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter24printSBitModifierOperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printSBitModifierOperand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter21printPredicateOperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printPredicateOperand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter17printSORegOperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printSORegOperand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter15printPImmediateEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printPImmediate(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter21printCPSOptionOperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printCPSOptionOperand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter15printMemBOptionEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printMemBOption(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter25printAddrModeImm12OperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printAddrModeImm12Operand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter21printAddrMode2OperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printAddrMode2Operand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter21printLdStmModeOperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printLdStmModeOperand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter18printSetendOperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printSetendOperand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter16printThumbITMaskEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printThumbITMask(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter30printMandatoryPredicateOperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printMandatoryPredicateOperand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter15printCImmediateEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printCImmediate(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter20printNoHashImmediateEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printNoHashImmediate(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter19printMSRMaskOperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printMSRMaskOperand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter22printThumbS4ImmOperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printThumbS4ImmOperand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter17printSOImmOperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printSOImmOperand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter22printNEONModImmOperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printNEONModImmOperand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter21printAddrMode5OperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printAddrMode5Operand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter26printT2AddrModeImm8OperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printT2AddrModeImm8Operand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter27printT2AddrModeSoRegOperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printT2AddrModeSoRegOperand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter17printRegisterListEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printRegisterList(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter30printBitfieldInvMaskImmOperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printBitfieldInvMaskImmOperand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter21printAddrMode3OperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printAddrMode3Operand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter16printT2SOOperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printT2SOOperand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter31printThumbAddrModeImm5S1OperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printThumbAddrModeImm5S1Operand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter27printThumbAddrModeRROperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printThumbAddrModeRROperand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter31printThumbAddrModeImm5S2OperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printThumbAddrModeImm5S2Operand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter31printThumbAddrModeImm5S4OperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printThumbAddrModeImm5S4Operand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter27printThumbAddrModeSPOperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printThumbAddrModeSPOperand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter28printT2AddrModeImm8s4OperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printT2AddrModeImm8s4Operand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter21printVFPf64ImmOperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printVFPf64ImmOperand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter21printVFPf32ImmOperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printVFPf32ImmOperand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter27printAddrMode2OffsetOperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printAddrMode2OffsetOperand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter27printAddrMode3OffsetOperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printAddrMode3OffsetOperand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter32printT2AddrModeImm8OffsetOperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printT2AddrModeImm8OffsetOperand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter20printShiftImmOperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printShiftImmOperand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter21printAddrMode6OperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printAddrMode6Operand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter27printAddrMode6OffsetOperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printAddrMode6OffsetOperand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter34printT2AddrModeImm8s4OffsetOperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printT2AddrModeImm8s4OffsetOperand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter15getRegisterNameEj", "llvm::ARMInstPrinter::getRegisterName(unsigned int)"}, + {"_ZN4llvm14ARMInstPrinter18getInstructionNameEj", "llvm::ARMInstPrinter::getInstructionName(unsigned int)"}, + {"_ZNK4llvm14ARMInstPrinter13getOpcodeNameEj", "llvm::ARMInstPrinter::getOpcodeName(unsigned int) const"}, + {"_ZN4llvm14ARMInstPrinter9printInstEPKNS_6MCInstERNS_11raw_ostreamE", "llvm::ARMInstPrinter::printInst(llvm::MCInst const*, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter19printNegZeroOperandEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printNegZeroOperand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter12printPCLabelEPKNS_6MCInstEjRNS_11raw_ostreamE", "llvm::ARMInstPrinter::printPCLabel(llvm::MCInst const*, unsigned int, llvm::raw_ostream&)"}, + {"_ZN4llvm14ARMInstPrinter30printThumbAddrModeImm5SOperandEPKNS_6MCInstEjRNS_11raw_ostreamEj", "llvm::ARMInstPrinter::printThumbAddrModeImm5SOperand(llvm::MCInst const*, unsigned int, llvm::raw_ostream&, unsigned int)"}, + {"_ZN4llvm14ARMInstPrinterD1Ev", "llvm::ARMInstPrinter::~ARMInstPrinter()"}, + {"_ZN4llvm14ARMInstPrinterD0Ev", "llvm::ARMInstPrinter::~ARMInstPrinter()"}, + + // {"_ZN4llvm14RegisterTargetILNS_6Triple8ArchTypeE14ELb1EE21getTripleMatchQualityERKSs", + // "llvm::RegisterTarget<(llvm::Triple::ArchType)14, true>::getTripleMatchQuality(std::string const&)"}, + // got error + + + // {"_ZN4llvm14RegisterTargetILNS_6Triple8ArchTypeE2ELb1EE21getTripleMatchQualityERKSs", + // "llvm::RegisterTarget<(llvm::Triple::ArchType)2, true>::getTripleMatchQuality(std::string const&)"}, + // got error + + {"_ZN4llvm21createELFObjectWriterEPNS_23MCELFObjectTargetWriterERNS_11raw_ostreamEb", "llvm::createELFObjectWriter(llvm::MCELFObjectTargetWriter*, llvm::raw_ostream&, bool)"}, + {"_ZN12_GLOBAL__N_115ELFObjectWriterC2EPN4llvm23MCELFObjectTargetWriterERNS1_11raw_ostreamEb", "(anonymous namespace)::ELFObjectWriter::ELFObjectWriter(llvm::MCELFObjectTargetWriter*, llvm::raw_ostream&, bool)"}, + {"_ZN12_GLOBAL__N_118X86ELFObjectWriterD1Ev", "(anonymous namespace)::X86ELFObjectWriter::~X86ELFObjectWriter()"}, + {"_ZN12_GLOBAL__N_118X86ELFObjectWriterD0Ev", "(anonymous namespace)::X86ELFObjectWriter::~X86ELFObjectWriter()"}, + {"_ZN12_GLOBAL__N_115ELFObjectWriter24ExecutePostLayoutBindingERN4llvm11MCAssemblerERKNS1_11MCAsmLayoutE", "(anonymous namespace)::ELFObjectWriter::ExecutePostLayoutBinding(llvm::MCAssembler&, llvm::MCAsmLayout const&)"}, + {"_ZN12_GLOBAL__N_115ELFObjectWriter16RecordRelocationERKN4llvm11MCAssemblerERKNS1_11MCAsmLayoutEPKNS1_10MCFragmentERKNS1_7MCFixupENS1_7MCValueERy", "(anonymous namespace)::ELFObjectWriter::RecordRelocation(llvm::MCAssembler const&, llvm::MCAsmLayout const&, llvm::MCFragment const*, llvm::MCFixup const&, llvm::MCValue, unsigned long long&)"}, + {"_ZNK12_GLOBAL__N_115ELFObjectWriter38IsSymbolRefDifferenceFullyResolvedImplERKN4llvm11MCAssemblerERKNS1_12MCSymbolDataERKNS1_10MCFragmentEbb", "(anonymous namespace)::ELFObjectWriter::IsSymbolRefDifferenceFullyResolvedImpl(llvm::MCAssembler const&, llvm::MCSymbolData const&, llvm::MCFragment const&, bool, bool) const"}, + {"_ZN12_GLOBAL__N_115ELFObjectWriter11WriteObjectERN4llvm11MCAssemblerERKNS1_11MCAsmLayoutE", "(anonymous namespace)::ELFObjectWriter::WriteObject(llvm::MCAssembler&, llvm::MCAsmLayout const&)"}, + {"_ZNK12_GLOBAL__N_115ELFObjectWriter14ExplicitRelSymERKN4llvm11MCAssemblerERKNS1_7MCValueERKNS1_10MCFragmentEb", "(anonymous namespace)::ELFObjectWriter::ExplicitRelSym(llvm::MCAssembler const&, llvm::MCValue const&, llvm::MCFragment const&, bool) const"}, + {"_ZN12_GLOBAL__N_115ELFObjectWriter11WriteHeaderEyj", "(anonymous namespace)::ELFObjectWriter::WriteHeader(unsigned long long, unsigned int)"}, + {"_ZN12_GLOBAL__N_115ELFObjectWriter11WriteEFlagsEv", "(anonymous namespace)::ELFObjectWriter::WriteEFlags()"}, + {"_ZN12_GLOBAL__N_115ELFObjectWriter16WriteSymbolEntryEPN4llvm14MCDataFragmentES3_yhyyhjb", "(anonymous namespace)::ELFObjectWriter::WriteSymbolEntry(llvm::MCDataFragment*, llvm::MCDataFragment*, unsigned long long, unsigned char, unsigned long long, unsigned long long, unsigned char, unsigned int, bool)"}, + {"_ZN12_GLOBAL__N_115ELFObjectWriter11WriteSymbolEPN4llvm14MCDataFragmentES3_RNS0_13ELFSymbolDataERKNS1_11MCAsmLayoutE", "(anonymous namespace)::ELFObjectWriter::WriteSymbol(llvm::MCDataFragment*, llvm::MCDataFragment*, (anonymous namespace)::ELFObjectWriter::ELFSymbolData&, llvm::MCAsmLayout const&)"}, + {"_ZN12_GLOBAL__N_115ELFObjectWriter16WriteSymbolTableEPN4llvm14MCDataFragmentES3_RKNS1_11MCAssemblerERKNS1_11MCAsmLayoutERKNS1_8DenseMapIPKNS1_12MCSectionELFEjNS1_12DenseMapInfoISD_EENSE_IjEEEE", "(anonymous namespace)::ELFObjectWriter::WriteSymbolTable(llvm::MCDataFragment*, llvm::MCDataFragment*, llvm::MCAssembler const&, llvm::MCAsmLayout const&, llvm::DenseMap, llvm::DenseMapInfo> const&)"}, + {"_ZN12_GLOBAL__N_115ELFObjectWriter27getSymbolIndexInSymbolTableERKN4llvm11MCAssemblerEPKNS1_8MCSymbolE", "(anonymous namespace)::ELFObjectWriter::getSymbolIndexInSymbolTable(llvm::MCAssembler const&, llvm::MCSymbol const*)"}, + {"_ZN12_GLOBAL__N_115ELFObjectWriter18ComputeSymbolTableERN4llvm11MCAssemblerERKNS1_8DenseMapIPKNS1_12MCSectionELFEjNS1_12DenseMapInfoIS7_EENS8_IjEEEENS4_IPKNS1_8MCSymbolES7_NS8_ISG_EES9_EE", "(anonymous namespace)::ELFObjectWriter::ComputeSymbolTable(llvm::MCAssembler&, llvm::DenseMap, llvm::DenseMapInfo> const&, llvm::DenseMap, llvm::DenseMapInfo>)"}, + {"_ZN12_GLOBAL__N_115ELFObjectWriter15ComputeIndexMapERN4llvm11MCAssemblerERNS1_8DenseMapIPKNS1_12MCSectionELFEjNS1_12DenseMapInfoIS7_EENS8_IjEEEE", "(anonymous namespace)::ELFObjectWriter::ComputeIndexMap(llvm::MCAssembler&, llvm::DenseMap, llvm::DenseMapInfo>&)"}, + {"_ZN12_GLOBAL__N_115ELFObjectWriter15WriteRelocationERN4llvm11MCAssemblerERNS1_11MCAsmLayoutERKNS1_13MCSectionDataE", "(anonymous namespace)::ELFObjectWriter::WriteRelocation(llvm::MCAssembler&, llvm::MCAsmLayout&, llvm::MCSectionData const&)"}, + {"_ZN12_GLOBAL__N_115ELFObjectWriter16WriteRelocationsERN4llvm11MCAssemblerERNS1_11MCAsmLayoutE", "(anonymous namespace)::ELFObjectWriter::WriteRelocations(llvm::MCAssembler&, llvm::MCAsmLayout&)"}, + {"_ZN12_GLOBAL__N_115ELFObjectWriter22CreateMetadataSectionsERN4llvm11MCAssemblerERNS1_11MCAsmLayoutERKNS1_8DenseMapIPKNS1_12MCSectionELFEjNS1_12DenseMapInfoIS9_EENSA_IjEEEE", "(anonymous namespace)::ELFObjectWriter::CreateMetadataSections(llvm::MCAssembler&, llvm::MCAsmLayout&, llvm::DenseMap, llvm::DenseMapInfo> const&)"}, + {"_ZN12_GLOBAL__N_115ELFObjectWriter21CreateIndexedSectionsERN4llvm11MCAssemblerERNS1_11MCAsmLayoutERNS1_8DenseMapIPKNS1_12MCSectionELFEPKNS1_8MCSymbolENS1_12DenseMapInfoIS9_EENSD_ISC_EEEERNS6_ISC_S9_SF_SE_EE", "(anonymous namespace)::ELFObjectWriter::CreateIndexedSections(llvm::MCAssembler&, llvm::MCAsmLayout&, llvm::DenseMap, llvm::DenseMapInfo>&, llvm::DenseMap, llvm::DenseMapInfo>&)"}, + {"_ZN12_GLOBAL__N_115ELFObjectWriter16WriteSecHdrEntryEjjyyyyjjyy", "(anonymous namespace)::ELFObjectWriter::WriteSecHdrEntry(unsigned int, unsigned int, unsigned long long, unsigned long long, unsigned long long, unsigned long long, unsigned int, unsigned int, unsigned long long, unsigned long long)"}, + {"_ZN12_GLOBAL__N_115ELFObjectWriter24WriteRelocationsFragmentERKN4llvm11MCAssemblerEPNS1_14MCDataFragmentEPKNS1_13MCSectionDataE", "(anonymous namespace)::ELFObjectWriter::WriteRelocationsFragment(llvm::MCAssembler const&, llvm::MCDataFragment*, llvm::MCSectionData const*)"}, + {"_ZN12_GLOBAL__N_115ELFObjectWriter12WriteSectionERN4llvm11MCAssemblerERKNS1_8DenseMapIPKNS1_12MCSectionELFEjNS1_12DenseMapInfoIS7_EENS8_IjEEEEjyyyRS6_", "(anonymous namespace)::ELFObjectWriter::WriteSection(llvm::MCAssembler&, llvm::DenseMap, llvm::DenseMapInfo> const&, unsigned int, unsigned long long, unsigned long long, unsigned long long, llvm::MCSectionELF const&)"}, + {"_ZN12_GLOBAL__N_118X86ELFObjectWriter12GetRelocTypeERKN4llvm7MCValueERKNS1_7MCFixupEbbx", "(anonymous namespace)::X86ELFObjectWriter::GetRelocType(llvm::MCValue const&, llvm::MCFixup const&, bool, bool, long long)"}, + {"_ZN4llvm8DenseMapIPKNS_13MCSectionDataESt6vectorIN12_GLOBAL__N_115ELFObjectWriter18ELFRelocationEntryESaIS7_EENS_12DenseMapInfoIS3_EENSA_IS9_EEEixERKS3_", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::operator[](llvm::MCSectionData const* const&)"}, + {"_ZN12_GLOBAL__N_115ELFObjectWriter8String64ERN4llvm14MCDataFragmentEy", "(anonymous namespace)::ELFObjectWriter::String64(llvm::MCDataFragment&, unsigned long long)"}, + {"_ZN4llvm25array_pod_sort_comparatorIN12_GLOBAL__N_115ELFObjectWriter18ELFRelocationEntryEEEiPKvS5_", "int llvm::array_pod_sort_comparator<(anonymous namespace)::ELFObjectWriter::ELFRelocationEntry>(void const*, void const*)"}, + {"_ZNSt6vectorIN12_GLOBAL__N_115ELFObjectWriter13ELFSymbolDataESaIS2_EE9push_backERKS2_", "std::vector<(anonymous namespace)::ELFObjectWriter::ELFSymbolData, std::allocator<(anonymous namespace)::ELFObjectWriter::ELFSymbolData>>::push_back((anonymous namespace)::ELFObjectWriter::ELFSymbolData const&)"}, + {"_ZN4llvm25array_pod_sort_comparatorIN12_GLOBAL__N_115ELFObjectWriter13ELFSymbolDataEEEiPKvS5_", "int llvm::array_pod_sort_comparator<(anonymous namespace)::ELFObjectWriter::ELFSymbolData>(void const*, void const*)"}, + {"_Z15DataSectionSizeRKN4llvm13MCSectionDataE", "DataSectionSize(llvm::MCSectionData const&)"}, + {"_ZN12_GLOBAL__N_115ELFObjectWriterD2Ev", "(anonymous namespace)::ELFObjectWriter::~ELFObjectWriter()"}, + {"_ZN12_GLOBAL__N_115ELFObjectWriterD1Ev", "(anonymous namespace)::ELFObjectWriter::~ELFObjectWriter()"}, + {"_ZN12_GLOBAL__N_115ELFObjectWriterD0Ev", "(anonymous namespace)::ELFObjectWriter::~ELFObjectWriter()"}, + {"_ZN12_GLOBAL__N_121MBlazeELFObjectWriterD1Ev", "(anonymous namespace)::MBlazeELFObjectWriter::~MBlazeELFObjectWriter()"}, + {"_ZN12_GLOBAL__N_121MBlazeELFObjectWriterD0Ev", "(anonymous namespace)::MBlazeELFObjectWriter::~MBlazeELFObjectWriter()"}, + {"_ZN12_GLOBAL__N_121MBlazeELFObjectWriter12GetRelocTypeERKN4llvm7MCValueERKNS1_7MCFixupEbbx", "(anonymous namespace)::MBlazeELFObjectWriter::GetRelocType(llvm::MCValue const&, llvm::MCFixup const&, bool, bool, long long)"}, + {"_ZN12_GLOBAL__N_118ARMELFObjectWriterD1Ev", "(anonymous namespace)::ARMELFObjectWriter::~ARMELFObjectWriter()"}, + {"_ZN12_GLOBAL__N_118ARMELFObjectWriterD0Ev", "(anonymous namespace)::ARMELFObjectWriter::~ARMELFObjectWriter()"}, + {"_ZNK12_GLOBAL__N_118ARMELFObjectWriter14ExplicitRelSymERKN4llvm11MCAssemblerERKNS1_7MCValueERKNS1_10MCFragmentEb", "(anonymous namespace)::ARMELFObjectWriter::ExplicitRelSym(llvm::MCAssembler const&, llvm::MCValue const&, llvm::MCFragment const&, bool) const"}, + {"_ZN12_GLOBAL__N_118ARMELFObjectWriter11WriteEFlagsEv", "(anonymous namespace)::ARMELFObjectWriter::WriteEFlags()"}, + {"_ZN12_GLOBAL__N_118ARMELFObjectWriter12GetRelocTypeERKN4llvm7MCValueERKNS1_7MCFixupEbbx", "(anonymous namespace)::ARMELFObjectWriter::GetRelocType(llvm::MCValue const&, llvm::MCFixup const&, bool, bool, long long)"}, + {"_ZN4llvm8DenseMapIPKNS_9MCSectionEyNS_12DenseMapInfoIS3_EENS4_IyEEE16InsertIntoBucketERKS3_RKyPSt4pairIS3_yE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::MCSection const* const&, unsigned long long const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_9MCSectionEyNS_12DenseMapInfoIS3_EENS4_IyEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKNS_12MCSectionELFEPKNS_8MCSymbolENS_12DenseMapInfoIS3_EENS7_IS6_EEE16InsertIntoBucketERKS3_RKS6_PSt4pairIS3_S6_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::MCSectionELF const* const&, llvm::MCSymbol const* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_12MCSectionELFEPKNS_8MCSymbolENS_12DenseMapInfoIS3_EENS7_IS6_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKNS_8MCSymbolEPKNS_12MCSectionELFENS_12DenseMapInfoIS3_EENS7_IS6_EEE16InsertIntoBucketERKS3_RKS6_PSt4pairIS3_S6_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::MCSymbol const* const&, llvm::MCSectionELF const* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_8MCSymbolEPKNS_12MCSectionELFENS_12DenseMapInfoIS3_EENS7_IS6_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS3_EENS4_IjEEE16InsertIntoBucketERKS3_RKjPSt4pairIS3_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::MCSectionELF const* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_12MCSectionELFEjNS_12DenseMapInfoIS3_EENS4_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNSt6vectorIPKN4llvm12MCSectionELFESaIS3_EE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPS3_S5_EEmRKS3_", "std::vector>::_M_fill_insert(__gnu_cxx::__normal_iterator>>, unsigned long, llvm::MCSectionELF const* const&)"}, + {"_ZN4llvm8DenseMapIPKNS_8MCSymbolEPKNS_12MCSectionELFENS_12DenseMapInfoIS3_EENS7_IS6_EEE8CopyFromERKSA_", "llvm::DenseMap, llvm::DenseMapInfo>::CopyFrom(llvm::DenseMap, llvm::DenseMapInfo> const&)"}, + {"_ZN4llvm8DenseMapIPKNS_8MCSymbolES3_NS_12DenseMapInfoIS3_EES5_E6insertERKSt4pairIS3_S3_E", "llvm::DenseMap, llvm::DenseMapInfo>::insert(std::pair const&)"}, + {"_ZN4llvm8DenseMapIPKNS_8MCSymbolES3_NS_12DenseMapInfoIS3_EES5_E16InsertIntoBucketERKS3_S8_PSt4pairIS3_S3_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::MCSymbol const* const&, llvm::MCSymbol const* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_8MCSymbolES3_NS_12DenseMapInfoIS3_EES5_E4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm9MCAsmInfoC1Ev", "llvm::MCAsmInfo::MCAsmInfo()"}, + {"_ZN4llvm9MCAsmInfoC2Ev", "llvm::MCAsmInfo::MCAsmInfo()"}, + {"_ZN4llvm9MCAsmInfoD0Ev", "llvm::MCAsmInfo::~MCAsmInfo()"}, + {"_ZN4llvm9MCAsmInfoD1Ev", "llvm::MCAsmInfo::~MCAsmInfo()"}, + {"_ZN4llvm9MCAsmInfoD2Ev", "llvm::MCAsmInfo::~MCAsmInfo()"}, + {"_ZN4llvm9MCAsmInfo14getULEB128SizeEj", "llvm::MCAsmInfo::getULEB128Size(unsigned int)"}, + {"_ZN4llvm9MCAsmInfo14getSLEB128SizeEi", "llvm::MCAsmInfo::getSLEB128Size(int)"}, + {"_ZN4llvm13MCAsmInfoCOFFC1Ev", "llvm::MCAsmInfoCOFF::MCAsmInfoCOFF()"}, + {"_ZN4llvm13MCAsmInfoCOFFC2Ev", "llvm::MCAsmInfoCOFF::MCAsmInfoCOFF()"}, + {"_ZN4llvm15MCAsmInfoDarwinC1Ev", "llvm::MCAsmInfoDarwin::MCAsmInfoDarwin()"}, + {"_ZN4llvm15MCAsmInfoDarwinC2Ev", "llvm::MCAsmInfoDarwin::MCAsmInfoDarwin()"}, + {"_ZN4llvm17createAsmStreamerERNS_9MCContextERNS_21formatted_raw_ostreamEbbPNS_13MCInstPrinterEPNS_13MCCodeEmitterEPNS_16TargetAsmBackendEb", "llvm::createAsmStreamer(llvm::MCContext&, llvm::formatted_raw_ostream&, bool, bool, llvm::MCInstPrinter*, llvm::MCCodeEmitter*, llvm::TargetAsmBackend*, bool)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamerD1Ev", "(anonymous namespace)::MCAsmStreamer::~MCAsmStreamer()"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamerD0Ev", "(anonymous namespace)::MCAsmStreamer::~MCAsmStreamer()"}, + {"_ZNK12_GLOBAL__N_113MCAsmStreamer12isVerboseAsmEv", "(anonymous namespace)::MCAsmStreamer::isVerboseAsm() const"}, + {"_ZNK12_GLOBAL__N_113MCAsmStreamer17hasRawTextSupportEv", "(anonymous namespace)::MCAsmStreamer::hasRawTextSupport() const"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer10AddCommentERKN4llvm5TwineE", "(anonymous namespace)::MCAsmStreamer::AddComment(llvm::Twine const&)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer12GetCommentOSEv", "(anonymous namespace)::MCAsmStreamer::GetCommentOS()"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer12AddBlankLineEv", "(anonymous namespace)::MCAsmStreamer::AddBlankLine()"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer13SwitchSectionEPKN4llvm9MCSectionE", "(anonymous namespace)::MCAsmStreamer::SwitchSection(llvm::MCSection const*)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer12InitSectionsEv", "(anonymous namespace)::MCAsmStreamer::InitSections()"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer9EmitLabelEPN4llvm8MCSymbolE", "(anonymous namespace)::MCAsmStreamer::EmitLabel(llvm::MCSymbol*)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer17EmitAssemblerFlagEN4llvm15MCAssemblerFlagE", "(anonymous namespace)::MCAsmStreamer::EmitAssemblerFlag(llvm::MCAssemblerFlag)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer13EmitThumbFuncEPN4llvm8MCSymbolE", "(anonymous namespace)::MCAsmStreamer::EmitThumbFunc(llvm::MCSymbol*)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer14EmitAssignmentEPN4llvm8MCSymbolEPKNS1_6MCExprE", "(anonymous namespace)::MCAsmStreamer::EmitAssignment(llvm::MCSymbol*, llvm::MCExpr const*)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer17EmitWeakReferenceEPN4llvm8MCSymbolEPKS2_", "(anonymous namespace)::MCAsmStreamer::EmitWeakReference(llvm::MCSymbol*, llvm::MCSymbol const*)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer19EmitSymbolAttributeEPN4llvm8MCSymbolENS1_12MCSymbolAttrE", "(anonymous namespace)::MCAsmStreamer::EmitSymbolAttribute(llvm::MCSymbol*, llvm::MCSymbolAttr)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer14EmitSymbolDescEPN4llvm8MCSymbolEj", "(anonymous namespace)::MCAsmStreamer::EmitSymbolDesc(llvm::MCSymbol*, unsigned int)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer18BeginCOFFSymbolDefEPKN4llvm8MCSymbolE", "(anonymous namespace)::MCAsmStreamer::BeginCOFFSymbolDef(llvm::MCSymbol const*)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer26EmitCOFFSymbolStorageClassEi", "(anonymous namespace)::MCAsmStreamer::EmitCOFFSymbolStorageClass(int)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer18EmitCOFFSymbolTypeEi", "(anonymous namespace)::MCAsmStreamer::EmitCOFFSymbolType(int)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer16EndCOFFSymbolDefEv", "(anonymous namespace)::MCAsmStreamer::EndCOFFSymbolDef()"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer11EmitELFSizeEPN4llvm8MCSymbolEPKNS1_6MCExprE", "(anonymous namespace)::MCAsmStreamer::EmitELFSize(llvm::MCSymbol*, llvm::MCExpr const*)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer16EmitCommonSymbolEPN4llvm8MCSymbolEyj", "(anonymous namespace)::MCAsmStreamer::EmitCommonSymbol(llvm::MCSymbol*, unsigned long long, unsigned int)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer21EmitLocalCommonSymbolEPN4llvm8MCSymbolEy", "(anonymous namespace)::MCAsmStreamer::EmitLocalCommonSymbol(llvm::MCSymbol*, unsigned long long)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer12EmitZerofillEPKN4llvm9MCSectionEPNS1_8MCSymbolEjj", "(anonymous namespace)::MCAsmStreamer::EmitZerofill(llvm::MCSection const*, llvm::MCSymbol*, unsigned int, unsigned int)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer14EmitTBSSSymbolEPKN4llvm9MCSectionEPNS1_8MCSymbolEyj", "(anonymous namespace)::MCAsmStreamer::EmitTBSSSymbol(llvm::MCSection const*, llvm::MCSymbol*, unsigned long long, unsigned int)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer9EmitBytesEN4llvm9StringRefEj", "(anonymous namespace)::MCAsmStreamer::EmitBytes(llvm::StringRef, unsigned int)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer13EmitValueImplEPKN4llvm6MCExprEjbj", "(anonymous namespace)::MCAsmStreamer::EmitValueImpl(llvm::MCExpr const*, unsigned int, bool, unsigned int)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer12EmitIntValueEyjj", "(anonymous namespace)::MCAsmStreamer::EmitIntValue(unsigned long long, unsigned int, unsigned int)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer16EmitULEB128ValueEPKN4llvm6MCExprEj", "(anonymous namespace)::MCAsmStreamer::EmitULEB128Value(llvm::MCExpr const*, unsigned int)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer16EmitSLEB128ValueEPKN4llvm6MCExprEj", "(anonymous namespace)::MCAsmStreamer::EmitSLEB128Value(llvm::MCExpr const*, unsigned int)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer16EmitGPRel32ValueEPKN4llvm6MCExprE", "(anonymous namespace)::MCAsmStreamer::EmitGPRel32Value(llvm::MCExpr const*)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer8EmitFillEyhj", "(anonymous namespace)::MCAsmStreamer::EmitFill(unsigned long long, unsigned char, unsigned int)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer20EmitValueToAlignmentEjxjj", "(anonymous namespace)::MCAsmStreamer::EmitValueToAlignment(unsigned int, long long, unsigned int, unsigned int)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer17EmitCodeAlignmentEjj", "(anonymous namespace)::MCAsmStreamer::EmitCodeAlignment(unsigned int, unsigned int)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer17EmitValueToOffsetEPKN4llvm6MCExprEh", "(anonymous namespace)::MCAsmStreamer::EmitValueToOffset(llvm::MCExpr const*, unsigned char)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer17EmitFileDirectiveEN4llvm9StringRefE", "(anonymous namespace)::MCAsmStreamer::EmitFileDirective(llvm::StringRef)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer22EmitDwarfFileDirectiveEjN4llvm9StringRefE", "(anonymous namespace)::MCAsmStreamer::EmitDwarfFileDirective(unsigned int, llvm::StringRef)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer21EmitDwarfLocDirectiveEjjjjjj", "(anonymous namespace)::MCAsmStreamer::EmitDwarfLocDirective(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer24EmitDwarfAdvanceLineAddrExPKN4llvm8MCSymbolES4_", "(anonymous namespace)::MCAsmStreamer::EmitDwarfAdvanceLineAddr(long long, llvm::MCSymbol const*, llvm::MCSymbol const*)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer16EmitCFIStartProcEv", "(anonymous namespace)::MCAsmStreamer::EmitCFIStartProc()"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer14EmitCFIEndProcEv", "(anonymous namespace)::MCAsmStreamer::EmitCFIEndProc()"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer19EmitCFIDefCfaOffsetEx", "(anonymous namespace)::MCAsmStreamer::EmitCFIDefCfaOffset(long long)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer21EmitCFIDefCfaRegisterEx", "(anonymous namespace)::MCAsmStreamer::EmitCFIDefCfaRegister(long long)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer13EmitCFIOffsetExx", "(anonymous namespace)::MCAsmStreamer::EmitCFIOffset(long long, long long)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer18EmitCFIPersonalityEPKN4llvm8MCSymbolEj", "(anonymous namespace)::MCAsmStreamer::EmitCFIPersonality(llvm::MCSymbol const*, unsigned int)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer11EmitCFILsdaEPKN4llvm8MCSymbolEj", "(anonymous namespace)::MCAsmStreamer::EmitCFILsda(llvm::MCSymbol const*, unsigned int)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer15EmitInstructionERKN4llvm6MCInstE", "(anonymous namespace)::MCAsmStreamer::EmitInstruction(llvm::MCInst const&)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer11EmitRawTextEN4llvm9StringRefE", "(anonymous namespace)::MCAsmStreamer::EmitRawText(llvm::StringRef)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer6FinishEv", "(anonymous namespace)::MCAsmStreamer::Finish()"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer18AddEncodingCommentERKN4llvm6MCInstE", "(anonymous namespace)::MCAsmStreamer::AddEncodingComment(llvm::MCInst const&)"}, + {"_ZN12_GLOBAL__N_113MCAsmStreamer7EmitEOLEv", "(anonymous namespace)::MCAsmStreamer::EmitEOL()"}, + {"_Z17PrintQuotedStringN4llvm9StringRefERNS_11raw_ostreamE", "PrintQuotedString(llvm::StringRef, llvm::raw_ostream&)"}, + {"_ZN4llvm14format_object1IhED1Ev", "llvm::format_object1::~format_object1()"}, + {"_ZNK4llvm14format_object1IhE7snprintEPcj", "llvm::format_object1::snprint(char*, unsigned int) const"}, + {"_ZN4llvm14format_object1IhED0Ev", "llvm::format_object1::~format_object1()"}, + {"_ZN4llvm11MCAsmLayoutC1ERNS_11MCAssemblerE", "llvm::MCAsmLayout::MCAsmLayout(llvm::MCAssembler&)"}, + {"_ZN4llvm11MCAsmLayoutC2ERNS_11MCAssemblerE", "llvm::MCAsmLayout::MCAsmLayout(llvm::MCAssembler&)"}, + {"_ZNK4llvm11MCAsmLayout18isFragmentUpToDateEPKNS_10MCFragmentE", "llvm::MCAsmLayout::isFragmentUpToDate(llvm::MCFragment const*) const"}, + {"_ZN4llvm11MCAsmLayout10InvalidateEPNS_10MCFragmentE", "llvm::MCAsmLayout::Invalidate(llvm::MCFragment*)"}, + {"_ZNK4llvm11MCAsmLayout11EnsureValidEPKNS_10MCFragmentE", "llvm::MCAsmLayout::EnsureValid(llvm::MCFragment const*) const"}, + {"_ZN4llvm11MCAsmLayout14LayoutFragmentEPNS_10MCFragmentE", "llvm::MCAsmLayout::LayoutFragment(llvm::MCFragment*)"}, + {"_ZNK4llvm11MCAsmLayout17getFragmentOffsetEPKNS_10MCFragmentE", "llvm::MCAsmLayout::getFragmentOffset(llvm::MCFragment const*) const"}, + {"_ZNK4llvm11MCAsmLayout15getSymbolOffsetEPKNS_12MCSymbolDataE", "llvm::MCAsmLayout::getSymbolOffset(llvm::MCSymbolData const*) const"}, + {"_ZNK4llvm11MCAsmLayout21getSectionAddressSizeEPKNS_13MCSectionDataE", "llvm::MCAsmLayout::getSectionAddressSize(llvm::MCSectionData const*) const"}, + {"_ZNK4llvm11MCAssembler19ComputeFragmentSizeERKNS_11MCAsmLayoutERKNS_10MCFragmentE", "llvm::MCAssembler::ComputeFragmentSize(llvm::MCAsmLayout const&, llvm::MCFragment const&) const"}, + {"_ZNK4llvm11MCAsmLayout18getSectionFileSizeEPKNS_13MCSectionDataE", "llvm::MCAsmLayout::getSectionFileSize(llvm::MCSectionData const*) const"}, + {"_ZN4llvm10MCFragmentC1Ev", "llvm::MCFragment::MCFragment()"}, + {"_ZN4llvm10MCFragmentC2Ev", "llvm::MCFragment::MCFragment()"}, + {"_ZN4llvm10MCFragmentD0Ev", "llvm::MCFragment::~MCFragment()"}, + {"_ZN4llvm10MCFragmentD1Ev", "llvm::MCFragment::~MCFragment()"}, + {"_ZN4llvm10MCFragmentD2Ev", "llvm::MCFragment::~MCFragment()"}, + {"_ZN4llvm10MCFragmentC1ENS0_12FragmentTypeEPNS_13MCSectionDataE", "llvm::MCFragment::MCFragment(llvm::MCFragment::FragmentType, llvm::MCSectionData*)"}, + {"_ZN4llvm10MCFragmentC2ENS0_12FragmentTypeEPNS_13MCSectionDataE", "llvm::MCFragment::MCFragment(llvm::MCFragment::FragmentType, llvm::MCSectionData*)"}, + {"_ZN4llvm13MCSectionDataC1Ev", "llvm::MCSectionData::MCSectionData()"}, + {"_ZN4llvm13MCSectionDataC2Ev", "llvm::MCSectionData::MCSectionData()"}, + {"_ZN4llvm13MCSectionDataC1ERKNS_9MCSectionEPNS_11MCAssemblerE", "llvm::MCSectionData::MCSectionData(llvm::MCSection const&, llvm::MCAssembler*)"}, + {"_ZN4llvm13MCSectionDataC2ERKNS_9MCSectionEPNS_11MCAssemblerE", "llvm::MCSectionData::MCSectionData(llvm::MCSection const&, llvm::MCAssembler*)"}, + {"_ZN4llvm12MCSymbolDataC1Ev", "llvm::MCSymbolData::MCSymbolData()"}, + {"_ZN4llvm12MCSymbolDataC2Ev", "llvm::MCSymbolData::MCSymbolData()"}, + {"_ZN4llvm12MCSymbolDataC1ERKNS_8MCSymbolEPNS_10MCFragmentEyPNS_11MCAssemblerE", "llvm::MCSymbolData::MCSymbolData(llvm::MCSymbol const&, llvm::MCFragment*, unsigned long long, llvm::MCAssembler*)"}, + {"_ZN4llvm12MCSymbolDataC2ERKNS_8MCSymbolEPNS_10MCFragmentEyPNS_11MCAssemblerE", "llvm::MCSymbolData::MCSymbolData(llvm::MCSymbol const&, llvm::MCFragment*, unsigned long long, llvm::MCAssembler*)"}, + {"_ZN4llvm11MCAssemblerC1ERNS_9MCContextERNS_16TargetAsmBackendERNS_13MCCodeEmitterERNS_14MCObjectWriterERNS_11raw_ostreamE", "llvm::MCAssembler::MCAssembler(llvm::MCContext&, llvm::TargetAsmBackend&, llvm::MCCodeEmitter&, llvm::MCObjectWriter&, llvm::raw_ostream&)"}, + {"_ZN4llvm11MCAssemblerC2ERNS_9MCContextERNS_16TargetAsmBackendERNS_13MCCodeEmitterERNS_14MCObjectWriterERNS_11raw_ostreamE", "llvm::MCAssembler::MCAssembler(llvm::MCContext&, llvm::TargetAsmBackend&, llvm::MCCodeEmitter&, llvm::MCObjectWriter&, llvm::raw_ostream&)"}, + {"_ZN4llvm11MCAssemblerD1Ev", "llvm::MCAssembler::~MCAssembler()"}, + {"_ZN4llvm11MCAssemblerD2Ev", "llvm::MCAssembler::~MCAssembler()"}, + {"_ZNK4llvm11MCAssembler21isSymbolLinkerVisibleERKNS_8MCSymbolE", "llvm::MCAssembler::isSymbolLinkerVisible(llvm::MCSymbol const&) const"}, + {"_ZNK4llvm11MCAssembler7getAtomEPKNS_12MCSymbolDataE", "llvm::MCAssembler::getAtom(llvm::MCSymbolData const*) const"}, + {"_ZNK4llvm11MCAssembler13EvaluateFixupERKNS_11MCAsmLayoutERKNS_7MCFixupEPKNS_10MCFragmentERNS_7MCValueERy", "llvm::MCAssembler::EvaluateFixup(llvm::MCAsmLayout const&, llvm::MCFixup const&, llvm::MCFragment const*, llvm::MCValue&, unsigned long long&) const"}, + {"_ZNK4llvm11MCAssembler16WriteSectionDataEPKNS_13MCSectionDataERKNS_11MCAsmLayoutE", "llvm::MCAssembler::WriteSectionData(llvm::MCSectionData const*, llvm::MCAsmLayout const&) const"}, + {"_ZN4llvm11MCAssembler11HandleFixupERKNS_11MCAsmLayoutERNS_10MCFragmentERKNS_7MCFixupE", "llvm::MCAssembler::HandleFixup(llvm::MCAsmLayout const&, llvm::MCFragment&, llvm::MCFixup const&)"}, + {"_ZN4llvm11MCAssembler6FinishEv", "llvm::MCAssembler::Finish()"}, + {"_ZN4llvm11MCAssembler10LayoutOnceERNS_11MCAsmLayoutE", "llvm::MCAssembler::LayoutOnce(llvm::MCAsmLayout&)"}, + {"_ZN4llvm11MCAssembler12FinishLayoutERNS_11MCAsmLayoutE", "llvm::MCAssembler::FinishLayout(llvm::MCAsmLayout&)"}, + {"_ZNK4llvm11MCAssembler20FixupNeedsRelaxationERKNS_7MCFixupEPKNS_10MCFragmentERKNS_11MCAsmLayoutE", "llvm::MCAssembler::FixupNeedsRelaxation(llvm::MCFixup const&, llvm::MCFragment const*, llvm::MCAsmLayout const&) const"}, + {"_ZNK4llvm11MCAssembler23FragmentNeedsRelaxationEPKNS_14MCInstFragmentERKNS_11MCAsmLayoutE", "llvm::MCAssembler::FragmentNeedsRelaxation(llvm::MCInstFragment const*, llvm::MCAsmLayout const&) const"}, + {"_ZN4llvm11MCAssembler16RelaxInstructionERNS_11MCAsmLayoutERNS_14MCInstFragmentE", "llvm::MCAssembler::RelaxInstruction(llvm::MCAsmLayout&, llvm::MCInstFragment&)"}, + {"_ZN4llvm11MCAssembler8RelaxLEBERNS_11MCAsmLayoutERNS_13MCLEBFragmentE", "llvm::MCAssembler::RelaxLEB(llvm::MCAsmLayout&, llvm::MCLEBFragment&)"}, + {"_ZN4llvm11MCAssembler18RelaxDwarfLineAddrERNS_11MCAsmLayoutERNS_23MCDwarfLineAddrFragmentE", "llvm::MCAssembler::RelaxDwarfLineAddr(llvm::MCAsmLayout&, llvm::MCDwarfLineAddrFragment&)"}, + {"_ZN4llvm11MCAssembler27RelaxDwarfCallFrameFragmentERNS_11MCAsmLayoutERNS_24MCDwarfCallFrameFragmentE", "llvm::MCAssembler::RelaxDwarfCallFrameFragment(llvm::MCAsmLayout&, llvm::MCDwarfCallFrameFragment&)"}, + {"_ZN4llvm11MCAssembler17LayoutSectionOnceERNS_11MCAsmLayoutERNS_13MCSectionDataE", "llvm::MCAssembler::LayoutSectionOnce(llvm::MCAsmLayout&, llvm::MCSectionData&)"}, + {"_ZN4llvmlsERNS_11raw_ostreamERKNS_7MCFixupE", "llvm::operator<<(llvm::raw_ostream&, llvm::MCFixup const&)"}, + {"_ZN4llvm10MCFragment4dumpEv", "llvm::MCFragment::dump()"}, + {"_ZN4llvm13MCSectionData4dumpEv", "llvm::MCSectionData::dump()"}, + {"_ZN4llvm12MCSymbolData4dumpEv", "llvm::MCSymbolData::dump()"}, + {"_ZN4llvm11MCAssembler4dumpEv", "llvm::MCAssembler::dump()"}, + {"_ZN4llvm6iplistINS_12MCSymbolDataENS_12ilist_traitsIS1_EEED2Ev", "llvm::iplist>::~iplist()"}, + {"_ZN4llvm6iplistINS_13MCSectionDataENS_12ilist_traitsIS1_EEED2Ev", "llvm::iplist>::~iplist()"}, + {"_ZN4llvm6iplistINS_10MCFragmentENS_12ilist_traitsIS1_EEED2Ev", "llvm::iplist>::~iplist()"}, + {"_ZN4llvm8DenseMapIPKNS_13MCSectionDataEPNS_10MCFragmentENS_12DenseMapInfoIS3_EENS6_IS5_EEE16InsertIntoBucketERKS3_RKS5_PSt4pairIS3_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::MCSectionData const* const&, llvm::MCFragment* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_13MCSectionDataEPNS_10MCFragmentENS_12DenseMapInfoIS3_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm14MCObjectWriter10WriteZerosEj", "llvm::MCObjectWriter::WriteZeros(unsigned int)"}, + {"_ZN4llvm13MCCodeEmitterC1Ev", "llvm::MCCodeEmitter::MCCodeEmitter()"}, + {"_ZN4llvm13MCCodeEmitterC2Ev", "llvm::MCCodeEmitter::MCCodeEmitter()"}, + {"_ZN4llvm13MCCodeEmitterD0Ev", "llvm::MCCodeEmitter::~MCCodeEmitter()"}, + {"_ZN4llvm13MCCodeEmitterD1Ev", "llvm::MCCodeEmitter::~MCCodeEmitter()"}, + {"_ZN4llvm13MCCodeEmitterD2Ev", "llvm::MCCodeEmitter::~MCCodeEmitter()"}, + {"_ZN4llvm9MCContextC1ERKNS_9MCAsmInfoEPKNS_13TargetAsmInfoE", "llvm::MCContext::MCContext(llvm::MCAsmInfo const&, llvm::TargetAsmInfo const*)"}, + {"_ZN4llvm9MCContextC2ERKNS_9MCAsmInfoEPKNS_13TargetAsmInfoE", "llvm::MCContext::MCContext(llvm::MCAsmInfo const&, llvm::TargetAsmInfo const*)"}, + {"_ZN4llvm9MCContextD1Ev", "llvm::MCContext::~MCContext()"}, + {"_ZN4llvm9MCContextD2Ev", "llvm::MCContext::~MCContext()"}, + {"_ZN4llvm9MCContext17GetOrCreateSymbolENS_9StringRefE", "llvm::MCContext::GetOrCreateSymbol(llvm::StringRef)"}, + {"_ZN4llvm9MCContext12CreateSymbolENS_9StringRefE", "llvm::MCContext::CreateSymbol(llvm::StringRef)"}, + {"_ZN4llvm9MCContext17GetOrCreateSymbolERKNS_5TwineE", "llvm::MCContext::GetOrCreateSymbol(llvm::Twine const&)"}, + {"_ZN4llvm9MCContext16CreateTempSymbolEv", "llvm::MCContext::CreateTempSymbol()"}, + {"_ZN4llvm9MCContext12NextInstanceEx", "llvm::MCContext::NextInstance(long long)"}, + {"_ZN4llvm9MCContext11GetInstanceEx", "llvm::MCContext::GetInstance(long long)"}, + {"_ZN4llvm9MCContext28CreateDirectionalLocalSymbolEx", "llvm::MCContext::CreateDirectionalLocalSymbol(long long)"}, + {"_ZN4llvm9MCContext25GetDirectionalLocalSymbolExi", "llvm::MCContext::GetDirectionalLocalSymbol(long long, int)"}, + {"_ZNK4llvm9MCContext12LookupSymbolENS_9StringRefE", "llvm::MCContext::LookupSymbol(llvm::StringRef) const"}, + {"_ZN4llvm9MCContext15getMachOSectionENS_9StringRefES1_jjNS_11SectionKindE", "llvm::MCContext::getMachOSection(llvm::StringRef, llvm::StringRef, unsigned int, unsigned int, llvm::SectionKind)"}, + {"_ZN4llvm9MCContext13getELFSectionENS_9StringRefEjjNS_11SectionKindE", "llvm::MCContext::getELFSection(llvm::StringRef, unsigned int, unsigned int, llvm::SectionKind)"}, + {"_ZN4llvm9MCContext13getELFSectionENS_9StringRefEjjNS_11SectionKindEjS1_", "llvm::MCContext::getELFSection(llvm::StringRef, unsigned int, unsigned int, llvm::SectionKind, unsigned int, llvm::StringRef)"}, + {"_ZN4llvm9MCContext21CreateELFGroupSectionEv", "llvm::MCContext::CreateELFGroupSection()"}, + {"_ZN4llvm9MCContext14getCOFFSectionENS_9StringRefEjiNS_11SectionKindE", "llvm::MCContext::getCOFFSection(llvm::StringRef, unsigned int, int, llvm::SectionKind)"}, + {"_ZN4llvm9MCContext12GetDwarfFileENS_9StringRefEj", "llvm::MCContext::GetDwarfFile(llvm::StringRef, unsigned int)"}, + {"_ZN4llvm9MCContext22isValidDwarfFileNumberEj", "llvm::MCContext::isValidDwarfFileNumber(unsigned int)"}, + {"_ZNSt6vectorIN4llvm9StringRefESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::StringRef const&)"}, + {"_ZNSt6vectorIPN4llvm11MCDwarfFileESaIS2_EE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPS2_S4_EEmRKS2_", "std::vector>::_M_fill_insert(__gnu_cxx::__normal_iterator>>, unsigned long, llvm::MCDwarfFile* const&)"}, + {"_ZN4llvm9StringMapIPKNS_13MCSectionCOFFENS_15MallocAllocatorEE16GetOrCreateValueIS3_EERNS_14StringMapEntryIS3_EENS_9StringRefET_", "llvm::StringMapEntry& llvm::StringMap::GetOrCreateValue(llvm::StringRef, llvm::MCSectionCOFF const*)"}, + {"_ZN4llvm9StringMapIPKNS_12MCSectionELFENS_15MallocAllocatorEE16GetOrCreateValueIS3_EERNS_14StringMapEntryIS3_EENS_9StringRefET_", "llvm::StringMapEntry& llvm::StringMap::GetOrCreateValue(llvm::StringRef, llvm::MCSectionELF const*)"}, + {"_ZN4llvm9StringMapIPKNS_14MCSectionMachOENS_15MallocAllocatorEE16GetOrCreateValueIS3_EERNS_14StringMapEntryIS3_EENS_9StringRefET_", "llvm::StringMapEntry& llvm::StringMap::GetOrCreateValue(llvm::StringRef, llvm::MCSectionMachO const*)"}, + {"_ZN4llvm8DenseMapIjPNS_7MCLabelENS_12DenseMapInfoIjEENS3_IS2_EEE16InsertIntoBucketERKjRKS2_PSt4pairIjS2_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(unsigned int const&, llvm::MCLabel* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIjPNS_7MCLabelENS_12DenseMapInfoIjEENS3_IS2_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm9StringMapIbNS_15MallocAllocatorEE16GetOrCreateValueIbEERNS_14StringMapEntryIbEENS_9StringRefET_", "llvm::StringMapEntry& llvm::StringMap::GetOrCreateValue(llvm::StringRef, bool)"}, + {"_ZN4llvm9StringMapIPNS_8MCSymbolENS_15MallocAllocatorEE16GetOrCreateValueIS2_EERNS_14StringMapEntryIS2_EENS_9StringRefET_", "llvm::StringMapEntry& llvm::StringMap::GetOrCreateValue(llvm::StringRef, llvm::MCSymbol*)"}, + {"_ZNK4llvm9MCSection22isBaseAddressKnownZeroEv", "llvm::MCSection::isBaseAddressKnownZero() const"}, + {"_ZNK4llvm12MCSectionELF22isBaseAddressKnownZeroEv", "llvm::MCSectionELF::isBaseAddressKnownZero() const"}, + {"_ZN4llvm11MCLineEntry4MakeEPNS_10MCStreamerEPKNS_9MCSectionE", "llvm::MCLineEntry::Make(llvm::MCStreamer*, llvm::MCSection const*)"}, + {"_ZN4llvm16MCDwarfFileTable4EmitEPNS_10MCStreamerE", "llvm::MCDwarfFileTable::Emit(llvm::MCStreamer*)"}, + {"_ZN4llvm15MCDwarfLineAddr4EmitEPNS_10MCStreamerExy", "llvm::MCDwarfLineAddr::Emit(llvm::MCStreamer*, long long, unsigned long long)"}, + {"_ZN4llvm15MCDwarfLineAddr5WriteEPNS_14MCObjectWriterExy", "llvm::MCDwarfLineAddr::Write(llvm::MCObjectWriter*, long long, unsigned long long)"}, + {"_ZN4llvm15MCDwarfLineAddr6EncodeExyRNS_11raw_ostreamE", "llvm::MCDwarfLineAddr::Encode(long long, unsigned long long, llvm::raw_ostream&)"}, + {"_ZNK4llvm11MCDwarfFile5printERNS_11raw_ostreamE", "llvm::MCDwarfFile::print(llvm::raw_ostream&) const"}, + {"_ZNK4llvm11MCDwarfFile4dumpEv", "llvm::MCDwarfFile::dump() const"}, + {"_ZN4llvm19MCDwarfFrameEmitter4EmitERNS_10MCStreamerE", "llvm::MCDwarfFrameEmitter::Emit(llvm::MCStreamer&)"}, + {"_ZN4llvm19MCDwarfFrameEmitter14EmitAdvanceLocERNS_10MCStreamerEy", "llvm::MCDwarfFrameEmitter::EmitAdvanceLoc(llvm::MCStreamer&, unsigned long long)"}, + {"_ZN4llvm19MCDwarfFrameEmitter16EncodeAdvanceLocEyRNS_11raw_ostreamE", "llvm::MCDwarfFrameEmitter::EncodeAdvanceLoc(unsigned long long, llvm::raw_ostream&)"}, + {"_ZNK4llvm8DenseMapIN12_GLOBAL__N_16CIEKeyEPKNS_8MCSymbolENS_12DenseMapInfoIS2_EENS6_IS5_EEE15LookupBucketForERKS2_RPSt4pairIS2_S5_E", "llvm::DenseMap<(anonymous namespace)::CIEKey, llvm::MCSymbol const*, llvm::DenseMapInfo<(anonymous namespace)::CIEKey>, llvm::DenseMapInfo>::LookupBucketFor((anonymous namespace)::CIEKey const&, std::pair<(anonymous namespace)::CIEKey, llvm::MCSymbol const*>*&) const"}, + {"_Z19EmitCFIInstructionsRN4llvm10MCStreamerERKSt6vectorINS_16MCCFIInstructionESaIS3_EEPNS_8MCSymbolE", "EmitCFIInstructions(llvm::MCStreamer&, std::vector> const&, llvm::MCSymbol*)"}, + {"_ZN4llvm9MCContext16addMCLineSectionEPKNS_9MCSectionEPNS_13MCLineSectionE", "llvm::MCContext::addMCLineSection(llvm::MCSection const*, llvm::MCLineSection*)"}, + {"_ZNSt6vectorIN4llvm11MachineMoveESaIS1_EEC2ERKS3_", "std::vector>::vector(std::vector> const&)"}, + {"_ZNSt6vectorIN4llvm11MCLineEntryESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::MCLineEntry const&)"}, + {"_ZNSt6vectorIPKN4llvm9MCSectionESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::MCSection const* const&)"}, + {"_ZN4llvm8DenseMapIPKNS_9MCSectionEPNS_13MCLineSectionENS_12DenseMapInfoIS3_EENS6_IS5_EEE16InsertIntoBucketERKS3_RKS5_PSt4pairIS3_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::MCSection const* const&, llvm::MCLineSection* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_9MCSectionEPNS_13MCLineSectionENS_12DenseMapInfoIS3_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm23MCELFObjectTargetWriterC1EbNS_6Triple6OSTypeEtb", "llvm::MCELFObjectTargetWriter::MCELFObjectTargetWriter(bool, llvm::Triple::OSType, unsigned short, bool)"}, + {"_ZN4llvm23MCELFObjectTargetWriterC2EbNS_6Triple6OSTypeEtb", "llvm::MCELFObjectTargetWriter::MCELFObjectTargetWriter(bool, llvm::Triple::OSType, unsigned short, bool)"}, + {"_ZN4llvm23MCELFObjectTargetWriterD0Ev", "llvm::MCELFObjectTargetWriter::~MCELFObjectTargetWriter()"}, + {"_ZN4llvm23MCELFObjectTargetWriterD1Ev", "llvm::MCELFObjectTargetWriter::~MCELFObjectTargetWriter()"}, + {"_ZN4llvm23MCELFObjectTargetWriterD2Ev", "llvm::MCELFObjectTargetWriter::~MCELFObjectTargetWriter()"}, + {"_ZN4llvm17createELFStreamerERNS_9MCContextERNS_16TargetAsmBackendERNS_11raw_ostreamEPNS_13MCCodeEmitterEbb", "llvm::createELFStreamer(llvm::MCContext&, llvm::TargetAsmBackend&, llvm::raw_ostream&, llvm::MCCodeEmitter*, bool, bool)"}, + {"_ZN12_GLOBAL__N_113MCELFStreamerD1Ev", "(anonymous namespace)::MCELFStreamer::~MCELFStreamer()"}, + {"_ZN12_GLOBAL__N_113MCELFStreamerD0Ev", "(anonymous namespace)::MCELFStreamer::~MCELFStreamer()"}, + {"_ZN12_GLOBAL__N_113MCELFStreamer13SwitchSectionEPKN4llvm9MCSectionE", "(anonymous namespace)::MCELFStreamer::SwitchSection(llvm::MCSection const*)"}, + {"_ZN12_GLOBAL__N_113MCELFStreamer12InitSectionsEv", "(anonymous namespace)::MCELFStreamer::InitSections()"}, + {"_ZN12_GLOBAL__N_113MCELFStreamer9EmitLabelEPN4llvm8MCSymbolE", "(anonymous namespace)::MCELFStreamer::EmitLabel(llvm::MCSymbol*)"}, + {"_ZN12_GLOBAL__N_113MCELFStreamer17EmitAssemblerFlagEN4llvm15MCAssemblerFlagE", "(anonymous namespace)::MCELFStreamer::EmitAssemblerFlag(llvm::MCAssemblerFlag)"}, + {"_ZN12_GLOBAL__N_113MCELFStreamer13EmitThumbFuncEPN4llvm8MCSymbolE", "(anonymous namespace)::MCELFStreamer::EmitThumbFunc(llvm::MCSymbol*)"}, + {"_ZN12_GLOBAL__N_113MCELFStreamer14EmitAssignmentEPN4llvm8MCSymbolEPKNS1_6MCExprE", "(anonymous namespace)::MCELFStreamer::EmitAssignment(llvm::MCSymbol*, llvm::MCExpr const*)"}, + {"_ZN12_GLOBAL__N_113MCELFStreamer17EmitWeakReferenceEPN4llvm8MCSymbolEPKS2_", "(anonymous namespace)::MCELFStreamer::EmitWeakReference(llvm::MCSymbol*, llvm::MCSymbol const*)"}, + {"_ZN12_GLOBAL__N_113MCELFStreamer19EmitSymbolAttributeEPN4llvm8MCSymbolENS1_12MCSymbolAttrE", "(anonymous namespace)::MCELFStreamer::EmitSymbolAttribute(llvm::MCSymbol*, llvm::MCSymbolAttr)"}, + {"_ZN12_GLOBAL__N_113MCELFStreamer14EmitSymbolDescEPN4llvm8MCSymbolEj", "(anonymous namespace)::MCELFStreamer::EmitSymbolDesc(llvm::MCSymbol*, unsigned int)"}, + {"_ZN12_GLOBAL__N_113MCELFStreamer18BeginCOFFSymbolDefEPKN4llvm8MCSymbolE", "(anonymous namespace)::MCELFStreamer::BeginCOFFSymbolDef(llvm::MCSymbol const*)"}, + {"_ZN12_GLOBAL__N_113MCELFStreamer26EmitCOFFSymbolStorageClassEi", "(anonymous namespace)::MCELFStreamer::EmitCOFFSymbolStorageClass(int)"}, + {"_ZN12_GLOBAL__N_113MCELFStreamer18EmitCOFFSymbolTypeEi", "(anonymous namespace)::MCELFStreamer::EmitCOFFSymbolType(int)"}, + {"_ZN12_GLOBAL__N_113MCELFStreamer16EndCOFFSymbolDefEv", "(anonymous namespace)::MCELFStreamer::EndCOFFSymbolDef()"}, + {"_ZN12_GLOBAL__N_113MCELFStreamer11EmitELFSizeEPN4llvm8MCSymbolEPKNS1_6MCExprE", "(anonymous namespace)::MCELFStreamer::EmitELFSize(llvm::MCSymbol*, llvm::MCExpr const*)"}, + {"_ZN12_GLOBAL__N_113MCELFStreamer16EmitCommonSymbolEPN4llvm8MCSymbolEyj", "(anonymous namespace)::MCELFStreamer::EmitCommonSymbol(llvm::MCSymbol*, unsigned long long, unsigned int)"}, + {"_ZN12_GLOBAL__N_113MCELFStreamer21EmitLocalCommonSymbolEPN4llvm8MCSymbolEy", "(anonymous namespace)::MCELFStreamer::EmitLocalCommonSymbol(llvm::MCSymbol*, unsigned long long)"}, + {"_ZN12_GLOBAL__N_113MCELFStreamer12EmitZerofillEPKN4llvm9MCSectionEPNS1_8MCSymbolEjj", "(anonymous namespace)::MCELFStreamer::EmitZerofill(llvm::MCSection const*, llvm::MCSymbol*, unsigned int, unsigned int)"}, + {"_ZN12_GLOBAL__N_113MCELFStreamer14EmitTBSSSymbolEPKN4llvm9MCSectionEPNS1_8MCSymbolEyj", "(anonymous namespace)::MCELFStreamer::EmitTBSSSymbol(llvm::MCSection const*, llvm::MCSymbol*, unsigned long long, unsigned int)"}, + {"_ZN12_GLOBAL__N_113MCELFStreamer9EmitBytesEN4llvm9StringRefEj", "(anonymous namespace)::MCELFStreamer::EmitBytes(llvm::StringRef, unsigned int)"}, + {"_ZN12_GLOBAL__N_113MCELFStreamer20EmitValueToAlignmentEjxjj", "(anonymous namespace)::MCELFStreamer::EmitValueToAlignment(unsigned int, long long, unsigned int, unsigned int)"}, + {"_ZN12_GLOBAL__N_113MCELFStreamer17EmitCodeAlignmentEjj", "(anonymous namespace)::MCELFStreamer::EmitCodeAlignment(unsigned int, unsigned int)"}, + {"_ZN12_GLOBAL__N_113MCELFStreamer17EmitFileDirectiveEN4llvm9StringRefE", "(anonymous namespace)::MCELFStreamer::EmitFileDirective(llvm::StringRef)"}, + {"_ZN12_GLOBAL__N_113MCELFStreamer6FinishEv", "(anonymous namespace)::MCELFStreamer::Finish()"}, + {"_ZN12_GLOBAL__N_113MCELFStreamer14EmitInstToDataERKN4llvm6MCInstE", "(anonymous namespace)::MCELFStreamer::EmitInstToData(llvm::MCInst const&)"}, + {"_ZN12_GLOBAL__N_113MCELFStreamer18EmitInstToFragmentERKN4llvm6MCInstE", "(anonymous namespace)::MCELFStreamer::EmitInstToFragment(llvm::MCInst const&)"}, + {"_ZN12_GLOBAL__N_113MCELFStreamer21fixSymbolsInTLSFixupsEPKN4llvm6MCExprE", "(anonymous namespace)::MCELFStreamer::fixSymbolsInTLSFixups(llvm::MCExpr const*)"}, + {"_ZNK4llvm6MCExpr5printERNS_11raw_ostreamE", "llvm::MCExpr::print(llvm::raw_ostream&) const"}, + {"_ZN4llvm15MCSymbolRefExpr18getVariantKindNameENS0_11VariantKindE", "llvm::MCSymbolRefExpr::getVariantKindName(llvm::MCSymbolRefExpr::VariantKind)"}, + {"_ZNK4llvm6MCExpr4dumpEv", "llvm::MCExpr::dump() const"}, + {"_ZN4llvm12MCBinaryExpr6CreateENS0_6OpcodeEPKNS_6MCExprES4_RNS_9MCContextE", "llvm::MCBinaryExpr::Create(llvm::MCBinaryExpr::Opcode, llvm::MCExpr const*, llvm::MCExpr const*, llvm::MCContext&)"}, + {"_ZN4llvm11MCUnaryExpr6CreateENS0_6OpcodeEPKNS_6MCExprERNS_9MCContextE", "llvm::MCUnaryExpr::Create(llvm::MCUnaryExpr::Opcode, llvm::MCExpr const*, llvm::MCContext&)"}, + {"_ZN4llvm14MCConstantExpr6CreateExRNS_9MCContextE", "llvm::MCConstantExpr::Create(long long, llvm::MCContext&)"}, + {"_ZN4llvm15MCSymbolRefExpr6CreateEPKNS_8MCSymbolENS0_11VariantKindERNS_9MCContextE", "llvm::MCSymbolRefExpr::Create(llvm::MCSymbol const*, llvm::MCSymbolRefExpr::VariantKind, llvm::MCContext&)"}, + {"_ZN4llvm15MCSymbolRefExpr6CreateENS_9StringRefENS0_11VariantKindERNS_9MCContextE", "llvm::MCSymbolRefExpr::Create(llvm::StringRef, llvm::MCSymbolRefExpr::VariantKind, llvm::MCContext&)"}, + {"_ZN4llvm15MCSymbolRefExpr21getVariantKindForNameENS_9StringRefE", "llvm::MCSymbolRefExpr::getVariantKindForName(llvm::StringRef)"}, + {"_ZN4llvm12MCTargetExpr6AnchorEv", "llvm::MCTargetExpr::Anchor()"}, + {"_ZNK4llvm6MCExpr18EvaluateAsAbsoluteERx", "llvm::MCExpr::EvaluateAsAbsolute(long long&) const"}, + {"_ZNK4llvm6MCExpr18EvaluateAsAbsoluteERxPKNS_11MCAssemblerEPKNS_11MCAsmLayoutEPKNS_8DenseMapIPKNS_13MCSectionDataEyNS_12DenseMapInfoISB_EENSC_IyEEEE", "llvm::MCExpr::EvaluateAsAbsolute(long long&, llvm::MCAssembler const*, llvm::MCAsmLayout const*, llvm::DenseMap, llvm::DenseMapInfo> const*) const"}, + {"_ZNK4llvm6MCExpr18EvaluateAsAbsoluteERxRKNS_11MCAsmLayoutE", "llvm::MCExpr::EvaluateAsAbsolute(long long&, llvm::MCAsmLayout const&) const"}, + {"_ZNK4llvm6MCExpr18EvaluateAsAbsoluteERxRKNS_11MCAsmLayoutERKNS_8DenseMapIPKNS_13MCSectionDataEyNS_12DenseMapInfoIS8_EENS9_IyEEEE", "llvm::MCExpr::EvaluateAsAbsolute(long long&, llvm::MCAsmLayout const&, llvm::DenseMap, llvm::DenseMapInfo> const&) const"}, + {"_ZNK4llvm6MCExpr18EvaluateAsAbsoluteERxRKNS_11MCAssemblerE", "llvm::MCExpr::EvaluateAsAbsolute(long long&, llvm::MCAssembler const&) const"}, + {"_ZNK4llvm6MCExpr25EvaluateAsRelocatableImplERNS_7MCValueEPKNS_11MCAssemblerEPKNS_11MCAsmLayoutEPKNS_8DenseMapIPKNS_13MCSectionDataEyNS_12DenseMapInfoISC_EENSD_IyEEEEb", "llvm::MCExpr::EvaluateAsRelocatableImpl(llvm::MCValue&, llvm::MCAssembler const*, llvm::MCAsmLayout const*, llvm::DenseMap, llvm::DenseMapInfo> const*, bool) const"}, + {"_ZNK4llvm6MCExpr21EvaluateAsRelocatableERNS_7MCValueERKNS_11MCAsmLayoutE", "llvm::MCExpr::EvaluateAsRelocatable(llvm::MCValue&, llvm::MCAsmLayout const&) const"}, + {"_Z19EvaluateSymbolicAddPKN4llvm11MCAssemblerEPKNS_11MCAsmLayoutEPKNS_8DenseMapIPKNS_13MCSectionDataEyNS_12DenseMapInfoIS9_EENSA_IyEEEEbRKNS_7MCValueEPKNS_15MCSymbolRefExprESL_xRSG_", "EvaluateSymbolicAdd(llvm::MCAssembler const*, llvm::MCAsmLayout const*, llvm::DenseMap, llvm::DenseMapInfo> const*, bool, llvm::MCValue const&, llvm::MCSymbolRefExpr const*, llvm::MCSymbolRefExpr const*, long long, llvm::MCValue&)"}, + {"_Z35AttemptToFoldSymbolOffsetDifferencePKN4llvm11MCAssemblerEPKNS_11MCAsmLayoutEPKNS_8DenseMapIPKNS_13MCSectionDataEyNS_12DenseMapInfoIS9_EENSA_IyEEEEbRPKNS_15MCSymbolRefExprESJ_Rx", "AttemptToFoldSymbolOffsetDifference(llvm::MCAssembler const*, llvm::MCAsmLayout const*, llvm::DenseMap, llvm::DenseMapInfo> const*, bool, llvm::MCSymbolRefExpr const*&, llvm::MCSymbolRefExpr const*&, long long&)"}, + {"_ZN4llvm12MCTargetExprD1Ev", "llvm::MCTargetExpr::~MCTargetExpr()"}, + {"_ZN4llvm12MCTargetExprD0Ev", "llvm::MCTargetExpr::~MCTargetExpr()"}, + {"_ZNK4llvm9MCOperand5printERNS_11raw_ostreamEPKNS_9MCAsmInfoE", "llvm::MCOperand::print(llvm::raw_ostream&, llvm::MCAsmInfo const*) const"}, + {"_ZNK4llvm9MCOperand4dumpEv", "llvm::MCOperand::dump() const"}, + {"_ZNK4llvm6MCInst5printERNS_11raw_ostreamEPKNS_9MCAsmInfoE", "llvm::MCInst::print(llvm::raw_ostream&, llvm::MCAsmInfo const*) const"}, + {"_ZNK4llvm6MCInst11dump_prettyERNS_11raw_ostreamEPKNS_9MCAsmInfoEPKNS_13MCInstPrinterENS_9StringRefE", "llvm::MCInst::dump_pretty(llvm::raw_ostream&, llvm::MCAsmInfo const*, llvm::MCInstPrinter const*, llvm::StringRef) const"}, + {"_ZNK4llvm6MCInst4dumpEv", "llvm::MCInst::dump() const"}, + {"_ZN4llvm13MCInstPrinterD0Ev", "llvm::MCInstPrinter::~MCInstPrinter()"}, + {"_ZN4llvm13MCInstPrinterD1Ev", "llvm::MCInstPrinter::~MCInstPrinter()"}, + {"_ZN4llvm13MCInstPrinterD2Ev", "llvm::MCInstPrinter::~MCInstPrinter()"}, + {"_ZNK4llvm13MCInstPrinter13getOpcodeNameEj", "llvm::MCInstPrinter::getOpcodeName(unsigned int) const"}, + {"_ZN4llvm21createLoggingStreamerEPNS_10MCStreamerERNS_11raw_ostreamE", "llvm::createLoggingStreamer(llvm::MCStreamer*, llvm::raw_ostream&)"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamerD1Ev", "(anonymous namespace)::MCLoggingStreamer::~MCLoggingStreamer()"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamerD0Ev", "(anonymous namespace)::MCLoggingStreamer::~MCLoggingStreamer()"}, + {"_ZNK12_GLOBAL__N_117MCLoggingStreamer12isVerboseAsmEv", "(anonymous namespace)::MCLoggingStreamer::isVerboseAsm() const"}, + {"_ZNK12_GLOBAL__N_117MCLoggingStreamer17hasRawTextSupportEv", "(anonymous namespace)::MCLoggingStreamer::hasRawTextSupport() const"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer10AddCommentERKN4llvm5TwineE", "(anonymous namespace)::MCLoggingStreamer::AddComment(llvm::Twine const&)"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer12GetCommentOSEv", "(anonymous namespace)::MCLoggingStreamer::GetCommentOS()"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer12AddBlankLineEv", "(anonymous namespace)::MCLoggingStreamer::AddBlankLine()"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer13SwitchSectionEPKN4llvm9MCSectionE", "(anonymous namespace)::MCLoggingStreamer::SwitchSection(llvm::MCSection const*)"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer12InitSectionsEv", "(anonymous namespace)::MCLoggingStreamer::InitSections()"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer9EmitLabelEPN4llvm8MCSymbolE", "(anonymous namespace)::MCLoggingStreamer::EmitLabel(llvm::MCSymbol*)"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer17EmitAssemblerFlagEN4llvm15MCAssemblerFlagE", "(anonymous namespace)::MCLoggingStreamer::EmitAssemblerFlag(llvm::MCAssemblerFlag)"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer13EmitThumbFuncEPN4llvm8MCSymbolE", "(anonymous namespace)::MCLoggingStreamer::EmitThumbFunc(llvm::MCSymbol*)"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer14EmitAssignmentEPN4llvm8MCSymbolEPKNS1_6MCExprE", "(anonymous namespace)::MCLoggingStreamer::EmitAssignment(llvm::MCSymbol*, llvm::MCExpr const*)"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer17EmitWeakReferenceEPN4llvm8MCSymbolEPKS2_", "(anonymous namespace)::MCLoggingStreamer::EmitWeakReference(llvm::MCSymbol*, llvm::MCSymbol const*)"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer19EmitSymbolAttributeEPN4llvm8MCSymbolENS1_12MCSymbolAttrE", "(anonymous namespace)::MCLoggingStreamer::EmitSymbolAttribute(llvm::MCSymbol*, llvm::MCSymbolAttr)"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer14EmitSymbolDescEPN4llvm8MCSymbolEj", "(anonymous namespace)::MCLoggingStreamer::EmitSymbolDesc(llvm::MCSymbol*, unsigned int)"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer18BeginCOFFSymbolDefEPKN4llvm8MCSymbolE", "(anonymous namespace)::MCLoggingStreamer::BeginCOFFSymbolDef(llvm::MCSymbol const*)"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer26EmitCOFFSymbolStorageClassEi", "(anonymous namespace)::MCLoggingStreamer::EmitCOFFSymbolStorageClass(int)"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer18EmitCOFFSymbolTypeEi", "(anonymous namespace)::MCLoggingStreamer::EmitCOFFSymbolType(int)"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer16EndCOFFSymbolDefEv", "(anonymous namespace)::MCLoggingStreamer::EndCOFFSymbolDef()"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer11EmitELFSizeEPN4llvm8MCSymbolEPKNS1_6MCExprE", "(anonymous namespace)::MCLoggingStreamer::EmitELFSize(llvm::MCSymbol*, llvm::MCExpr const*)"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer16EmitCommonSymbolEPN4llvm8MCSymbolEyj", "(anonymous namespace)::MCLoggingStreamer::EmitCommonSymbol(llvm::MCSymbol*, unsigned long long, unsigned int)"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer21EmitLocalCommonSymbolEPN4llvm8MCSymbolEy", "(anonymous namespace)::MCLoggingStreamer::EmitLocalCommonSymbol(llvm::MCSymbol*, unsigned long long)"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer12EmitZerofillEPKN4llvm9MCSectionEPNS1_8MCSymbolEjj", "(anonymous namespace)::MCLoggingStreamer::EmitZerofill(llvm::MCSection const*, llvm::MCSymbol*, unsigned int, unsigned int)"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer14EmitTBSSSymbolEPKN4llvm9MCSectionEPNS1_8MCSymbolEyj", "(anonymous namespace)::MCLoggingStreamer::EmitTBSSSymbol(llvm::MCSection const*, llvm::MCSymbol*, unsigned long long, unsigned int)"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer9EmitBytesEN4llvm9StringRefEj", "(anonymous namespace)::MCLoggingStreamer::EmitBytes(llvm::StringRef, unsigned int)"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer13EmitValueImplEPKN4llvm6MCExprEjbj", "(anonymous namespace)::MCLoggingStreamer::EmitValueImpl(llvm::MCExpr const*, unsigned int, bool, unsigned int)"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer16EmitULEB128ValueEPKN4llvm6MCExprEj", "(anonymous namespace)::MCLoggingStreamer::EmitULEB128Value(llvm::MCExpr const*, unsigned int)"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer16EmitSLEB128ValueEPKN4llvm6MCExprEj", "(anonymous namespace)::MCLoggingStreamer::EmitSLEB128Value(llvm::MCExpr const*, unsigned int)"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer16EmitGPRel32ValueEPKN4llvm6MCExprE", "(anonymous namespace)::MCLoggingStreamer::EmitGPRel32Value(llvm::MCExpr const*)"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer8EmitFillEyhj", "(anonymous namespace)::MCLoggingStreamer::EmitFill(unsigned long long, unsigned char, unsigned int)"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer20EmitValueToAlignmentEjxjj", "(anonymous namespace)::MCLoggingStreamer::EmitValueToAlignment(unsigned int, long long, unsigned int, unsigned int)"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer17EmitCodeAlignmentEjj", "(anonymous namespace)::MCLoggingStreamer::EmitCodeAlignment(unsigned int, unsigned int)"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer17EmitValueToOffsetEPKN4llvm6MCExprEh", "(anonymous namespace)::MCLoggingStreamer::EmitValueToOffset(llvm::MCExpr const*, unsigned char)"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer17EmitFileDirectiveEN4llvm9StringRefE", "(anonymous namespace)::MCLoggingStreamer::EmitFileDirective(llvm::StringRef)"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer22EmitDwarfFileDirectiveEjN4llvm9StringRefE", "(anonymous namespace)::MCLoggingStreamer::EmitDwarfFileDirective(unsigned int, llvm::StringRef)"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer21EmitDwarfLocDirectiveEjjjjjj", "(anonymous namespace)::MCLoggingStreamer::EmitDwarfLocDirective(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int)"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer24EmitDwarfAdvanceLineAddrExPKN4llvm8MCSymbolES4_", "(anonymous namespace)::MCLoggingStreamer::EmitDwarfAdvanceLineAddr(long long, llvm::MCSymbol const*, llvm::MCSymbol const*)"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer15EmitInstructionERKN4llvm6MCInstE", "(anonymous namespace)::MCLoggingStreamer::EmitInstruction(llvm::MCInst const&)"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer11EmitRawTextEN4llvm9StringRefE", "(anonymous namespace)::MCLoggingStreamer::EmitRawText(llvm::StringRef)"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer6FinishEv", "(anonymous namespace)::MCLoggingStreamer::Finish()"}, + {"_ZN12_GLOBAL__N_117MCLoggingStreamer7LogCallEPKcRKN4llvm5TwineE", "(anonymous namespace)::MCLoggingStreamer::LogCall(char const*, llvm::Twine const&)"}, + {"_ZN4llvm19createMachOStreamerERNS_9MCContextERNS_16TargetAsmBackendERNS_11raw_ostreamEPNS_13MCCodeEmitterEb", "llvm::createMachOStreamer(llvm::MCContext&, llvm::TargetAsmBackend&, llvm::raw_ostream&, llvm::MCCodeEmitter*, bool)"}, + {"_ZN12_GLOBAL__N_115MCMachOStreamerD1Ev", "(anonymous namespace)::MCMachOStreamer::~MCMachOStreamer()"}, + {"_ZN12_GLOBAL__N_115MCMachOStreamerD0Ev", "(anonymous namespace)::MCMachOStreamer::~MCMachOStreamer()"}, + {"_ZN12_GLOBAL__N_115MCMachOStreamer12InitSectionsEv", "(anonymous namespace)::MCMachOStreamer::InitSections()"}, + {"_ZN12_GLOBAL__N_115MCMachOStreamer9EmitLabelEPN4llvm8MCSymbolE", "(anonymous namespace)::MCMachOStreamer::EmitLabel(llvm::MCSymbol*)"}, + {"_ZN12_GLOBAL__N_115MCMachOStreamer17EmitAssemblerFlagEN4llvm15MCAssemblerFlagE", "(anonymous namespace)::MCMachOStreamer::EmitAssemblerFlag(llvm::MCAssemblerFlag)"}, + {"_ZN12_GLOBAL__N_115MCMachOStreamer13EmitThumbFuncEPN4llvm8MCSymbolE", "(anonymous namespace)::MCMachOStreamer::EmitThumbFunc(llvm::MCSymbol*)"}, + {"_ZN12_GLOBAL__N_115MCMachOStreamer14EmitAssignmentEPN4llvm8MCSymbolEPKNS1_6MCExprE", "(anonymous namespace)::MCMachOStreamer::EmitAssignment(llvm::MCSymbol*, llvm::MCExpr const*)"}, + {"_ZN12_GLOBAL__N_115MCMachOStreamer19EmitSymbolAttributeEPN4llvm8MCSymbolENS1_12MCSymbolAttrE", "(anonymous namespace)::MCMachOStreamer::EmitSymbolAttribute(llvm::MCSymbol*, llvm::MCSymbolAttr)"}, + {"_ZN12_GLOBAL__N_115MCMachOStreamer14EmitSymbolDescEPN4llvm8MCSymbolEj", "(anonymous namespace)::MCMachOStreamer::EmitSymbolDesc(llvm::MCSymbol*, unsigned int)"}, + {"_ZN12_GLOBAL__N_115MCMachOStreamer18BeginCOFFSymbolDefEPKN4llvm8MCSymbolE", "(anonymous namespace)::MCMachOStreamer::BeginCOFFSymbolDef(llvm::MCSymbol const*)"}, + {"_ZN12_GLOBAL__N_115MCMachOStreamer26EmitCOFFSymbolStorageClassEi", "(anonymous namespace)::MCMachOStreamer::EmitCOFFSymbolStorageClass(int)"}, + {"_ZN12_GLOBAL__N_115MCMachOStreamer18EmitCOFFSymbolTypeEi", "(anonymous namespace)::MCMachOStreamer::EmitCOFFSymbolType(int)"}, + {"_ZN12_GLOBAL__N_115MCMachOStreamer16EndCOFFSymbolDefEv", "(anonymous namespace)::MCMachOStreamer::EndCOFFSymbolDef()"}, + {"_ZN12_GLOBAL__N_115MCMachOStreamer11EmitELFSizeEPN4llvm8MCSymbolEPKNS1_6MCExprE", "(anonymous namespace)::MCMachOStreamer::EmitELFSize(llvm::MCSymbol*, llvm::MCExpr const*)"}, + {"_ZN12_GLOBAL__N_115MCMachOStreamer16EmitCommonSymbolEPN4llvm8MCSymbolEyj", "(anonymous namespace)::MCMachOStreamer::EmitCommonSymbol(llvm::MCSymbol*, unsigned long long, unsigned int)"}, + {"_ZN12_GLOBAL__N_115MCMachOStreamer21EmitLocalCommonSymbolEPN4llvm8MCSymbolEy", "(anonymous namespace)::MCMachOStreamer::EmitLocalCommonSymbol(llvm::MCSymbol*, unsigned long long)"}, + {"_ZN12_GLOBAL__N_115MCMachOStreamer12EmitZerofillEPKN4llvm9MCSectionEPNS1_8MCSymbolEjj", "(anonymous namespace)::MCMachOStreamer::EmitZerofill(llvm::MCSection const*, llvm::MCSymbol*, unsigned int, unsigned int)"}, + {"_ZN12_GLOBAL__N_115MCMachOStreamer14EmitTBSSSymbolEPKN4llvm9MCSectionEPNS1_8MCSymbolEyj", "(anonymous namespace)::MCMachOStreamer::EmitTBSSSymbol(llvm::MCSection const*, llvm::MCSymbol*, unsigned long long, unsigned int)"}, + {"_ZN12_GLOBAL__N_115MCMachOStreamer9EmitBytesEN4llvm9StringRefEj", "(anonymous namespace)::MCMachOStreamer::EmitBytes(llvm::StringRef, unsigned int)"}, + {"_ZN12_GLOBAL__N_115MCMachOStreamer20EmitValueToAlignmentEjxjj", "(anonymous namespace)::MCMachOStreamer::EmitValueToAlignment(unsigned int, long long, unsigned int, unsigned int)"}, + {"_ZN12_GLOBAL__N_115MCMachOStreamer17EmitCodeAlignmentEjj", "(anonymous namespace)::MCMachOStreamer::EmitCodeAlignment(unsigned int, unsigned int)"}, + {"_ZN12_GLOBAL__N_115MCMachOStreamer17EmitFileDirectiveEN4llvm9StringRefE", "(anonymous namespace)::MCMachOStreamer::EmitFileDirective(llvm::StringRef)"}, + {"_ZN12_GLOBAL__N_115MCMachOStreamer6FinishEv", "(anonymous namespace)::MCMachOStreamer::Finish()"}, + {"_ZN12_GLOBAL__N_115MCMachOStreamer14EmitInstToDataERKN4llvm6MCInstE", "(anonymous namespace)::MCMachOStreamer::EmitInstToData(llvm::MCInst const&)"}, + {"_ZNSt6vectorIN4llvm7MCFixupESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::MCFixup const&)"}, + {"_ZN4llvm8DenseMapIPKNS_10MCFragmentEPNS_12MCSymbolDataENS_12DenseMapInfoIS3_EENS6_IS5_EEE16InsertIntoBucketERKS3_RKS5_PSt4pairIS3_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::MCFragment const* const&, llvm::MCSymbolData* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_10MCFragmentEPNS_12MCSymbolDataENS_12DenseMapInfoIS3_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm15MCAlignFragmentD1Ev", "llvm::MCAlignFragment::~MCAlignFragment()"}, + {"_ZN4llvm15MCAlignFragmentD0Ev", "llvm::MCAlignFragment::~MCAlignFragment()"}, + {"_ZN4llvm11MCAssembler22getOrCreateSectionDataERKNS_9MCSectionEPb", "llvm::MCAssembler::getOrCreateSectionData(llvm::MCSection const&, bool*)"}, + {"_ZN4llvm11MCAssembler21getOrCreateSymbolDataERKNS_8MCSymbolEPb", "llvm::MCAssembler::getOrCreateSymbolData(llvm::MCSymbol const&, bool*)"}, + {"_ZN4llvm14MCFillFragmentD1Ev", "llvm::MCFillFragment::~MCFillFragment()"}, + {"_ZN4llvm14MCFillFragmentD0Ev", "llvm::MCFillFragment::~MCFillFragment()"}, + {"_ZN4llvm8DenseMapIPKNS_8MCSymbolEPNS_12MCSymbolDataENS_12DenseMapInfoIS3_EENS6_IS5_EEE16InsertIntoBucketERKS3_RKS5_PSt4pairIS3_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::MCSymbol const* const&, llvm::MCSymbolData* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_8MCSymbolEPNS_12MCSymbolDataENS_12DenseMapInfoIS3_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKNS_9MCSectionEPNS_13MCSectionDataENS_12DenseMapInfoIS3_EENS6_IS5_EEE16InsertIntoBucketERKS3_RKS5_PSt4pairIS3_S5_E", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::MCSection const* const&, llvm::MCSectionData* const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_9MCSectionEPNS_13MCSectionDataENS_12DenseMapInfoIS3_EENS6_IS5_EEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZNSt6vectorIN4llvm18IndirectSymbolDataESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::IndirectSymbolData const&)"}, + {"_ZN4llvm14MCDataFragmentD1Ev", "llvm::MCDataFragment::~MCDataFragment()"}, + {"_ZN4llvm14MCDataFragmentD0Ev", "llvm::MCDataFragment::~MCDataFragment()"}, + {"_ZN4llvm24MCMachObjectTargetWriterC1Ebjjb", "llvm::MCMachObjectTargetWriter::MCMachObjectTargetWriter(bool, unsigned int, unsigned int, bool)"}, + {"_ZN4llvm24MCMachObjectTargetWriterC2Ebjjb", "llvm::MCMachObjectTargetWriter::MCMachObjectTargetWriter(bool, unsigned int, unsigned int, bool)"}, + {"_ZN4llvm24MCMachObjectTargetWriterD0Ev", "llvm::MCMachObjectTargetWriter::~MCMachObjectTargetWriter()"}, + {"_ZN4llvm24MCMachObjectTargetWriterD1Ev", "llvm::MCMachObjectTargetWriter::~MCMachObjectTargetWriter()"}, + {"_ZN4llvm24MCMachObjectTargetWriterD2Ev", "llvm::MCMachObjectTargetWriter::~MCMachObjectTargetWriter()"}, + {"_ZN4llvm18createNullStreamerERNS_9MCContextE", "llvm::createNullStreamer(llvm::MCContext&)"}, + {"_ZN12_GLOBAL__N_114MCNullStreamerD1Ev", "(anonymous namespace)::MCNullStreamer::~MCNullStreamer()"}, + {"_ZN12_GLOBAL__N_114MCNullStreamerD0Ev", "(anonymous namespace)::MCNullStreamer::~MCNullStreamer()"}, + {"_ZN12_GLOBAL__N_114MCNullStreamer13SwitchSectionEPKN4llvm9MCSectionE", "(anonymous namespace)::MCNullStreamer::SwitchSection(llvm::MCSection const*)"}, + {"_ZN12_GLOBAL__N_114MCNullStreamer12InitSectionsEv", "(anonymous namespace)::MCNullStreamer::InitSections()"}, + {"_ZN12_GLOBAL__N_114MCNullStreamer9EmitLabelEPN4llvm8MCSymbolE", "(anonymous namespace)::MCNullStreamer::EmitLabel(llvm::MCSymbol*)"}, + {"_ZN12_GLOBAL__N_114MCNullStreamer17EmitAssemblerFlagEN4llvm15MCAssemblerFlagE", "(anonymous namespace)::MCNullStreamer::EmitAssemblerFlag(llvm::MCAssemblerFlag)"}, + {"_ZN12_GLOBAL__N_114MCNullStreamer13EmitThumbFuncEPN4llvm8MCSymbolE", "(anonymous namespace)::MCNullStreamer::EmitThumbFunc(llvm::MCSymbol*)"}, + {"_ZN12_GLOBAL__N_114MCNullStreamer14EmitAssignmentEPN4llvm8MCSymbolEPKNS1_6MCExprE", "(anonymous namespace)::MCNullStreamer::EmitAssignment(llvm::MCSymbol*, llvm::MCExpr const*)"}, + {"_ZN12_GLOBAL__N_114MCNullStreamer17EmitWeakReferenceEPN4llvm8MCSymbolEPKS2_", "(anonymous namespace)::MCNullStreamer::EmitWeakReference(llvm::MCSymbol*, llvm::MCSymbol const*)"}, + {"_ZN12_GLOBAL__N_114MCNullStreamer19EmitSymbolAttributeEPN4llvm8MCSymbolENS1_12MCSymbolAttrE", "(anonymous namespace)::MCNullStreamer::EmitSymbolAttribute(llvm::MCSymbol*, llvm::MCSymbolAttr)"}, + {"_ZN12_GLOBAL__N_114MCNullStreamer14EmitSymbolDescEPN4llvm8MCSymbolEj", "(anonymous namespace)::MCNullStreamer::EmitSymbolDesc(llvm::MCSymbol*, unsigned int)"}, + {"_ZN12_GLOBAL__N_114MCNullStreamer18BeginCOFFSymbolDefEPKN4llvm8MCSymbolE", "(anonymous namespace)::MCNullStreamer::BeginCOFFSymbolDef(llvm::MCSymbol const*)"}, + {"_ZN12_GLOBAL__N_114MCNullStreamer26EmitCOFFSymbolStorageClassEi", "(anonymous namespace)::MCNullStreamer::EmitCOFFSymbolStorageClass(int)"}, + {"_ZN12_GLOBAL__N_114MCNullStreamer18EmitCOFFSymbolTypeEi", "(anonymous namespace)::MCNullStreamer::EmitCOFFSymbolType(int)"}, + {"_ZN12_GLOBAL__N_114MCNullStreamer16EndCOFFSymbolDefEv", "(anonymous namespace)::MCNullStreamer::EndCOFFSymbolDef()"}, + {"_ZN12_GLOBAL__N_114MCNullStreamer11EmitELFSizeEPN4llvm8MCSymbolEPKNS1_6MCExprE", "(anonymous namespace)::MCNullStreamer::EmitELFSize(llvm::MCSymbol*, llvm::MCExpr const*)"}, + {"_ZN12_GLOBAL__N_114MCNullStreamer16EmitCommonSymbolEPN4llvm8MCSymbolEyj", "(anonymous namespace)::MCNullStreamer::EmitCommonSymbol(llvm::MCSymbol*, unsigned long long, unsigned int)"}, + {"_ZN12_GLOBAL__N_114MCNullStreamer21EmitLocalCommonSymbolEPN4llvm8MCSymbolEy", "(anonymous namespace)::MCNullStreamer::EmitLocalCommonSymbol(llvm::MCSymbol*, unsigned long long)"}, + {"_ZN12_GLOBAL__N_114MCNullStreamer12EmitZerofillEPKN4llvm9MCSectionEPNS1_8MCSymbolEjj", "(anonymous namespace)::MCNullStreamer::EmitZerofill(llvm::MCSection const*, llvm::MCSymbol*, unsigned int, unsigned int)"}, + {"_ZN12_GLOBAL__N_114MCNullStreamer14EmitTBSSSymbolEPKN4llvm9MCSectionEPNS1_8MCSymbolEyj", "(anonymous namespace)::MCNullStreamer::EmitTBSSSymbol(llvm::MCSection const*, llvm::MCSymbol*, unsigned long long, unsigned int)"}, + {"_ZN12_GLOBAL__N_114MCNullStreamer9EmitBytesEN4llvm9StringRefEj", "(anonymous namespace)::MCNullStreamer::EmitBytes(llvm::StringRef, unsigned int)"}, + {"_ZN12_GLOBAL__N_114MCNullStreamer13EmitValueImplEPKN4llvm6MCExprEjbj", "(anonymous namespace)::MCNullStreamer::EmitValueImpl(llvm::MCExpr const*, unsigned int, bool, unsigned int)"}, + {"_ZN12_GLOBAL__N_114MCNullStreamer16EmitULEB128ValueEPKN4llvm6MCExprEj", "(anonymous namespace)::MCNullStreamer::EmitULEB128Value(llvm::MCExpr const*, unsigned int)"}, + {"_ZN12_GLOBAL__N_114MCNullStreamer16EmitSLEB128ValueEPKN4llvm6MCExprEj", "(anonymous namespace)::MCNullStreamer::EmitSLEB128Value(llvm::MCExpr const*, unsigned int)"}, + {"_ZN12_GLOBAL__N_114MCNullStreamer16EmitGPRel32ValueEPKN4llvm6MCExprE", "(anonymous namespace)::MCNullStreamer::EmitGPRel32Value(llvm::MCExpr const*)"}, + {"_ZN12_GLOBAL__N_114MCNullStreamer20EmitValueToAlignmentEjxjj", "(anonymous namespace)::MCNullStreamer::EmitValueToAlignment(unsigned int, long long, unsigned int, unsigned int)"}, + {"_ZN12_GLOBAL__N_114MCNullStreamer17EmitCodeAlignmentEjj", "(anonymous namespace)::MCNullStreamer::EmitCodeAlignment(unsigned int, unsigned int)"}, + {"_ZN12_GLOBAL__N_114MCNullStreamer17EmitValueToOffsetEPKN4llvm6MCExprEh", "(anonymous namespace)::MCNullStreamer::EmitValueToOffset(llvm::MCExpr const*, unsigned char)"}, + {"_ZN12_GLOBAL__N_114MCNullStreamer17EmitFileDirectiveEN4llvm9StringRefE", "(anonymous namespace)::MCNullStreamer::EmitFileDirective(llvm::StringRef)"}, + {"_ZN12_GLOBAL__N_114MCNullStreamer22EmitDwarfFileDirectiveEjN4llvm9StringRefE", "(anonymous namespace)::MCNullStreamer::EmitDwarfFileDirective(unsigned int, llvm::StringRef)"}, + {"_ZN12_GLOBAL__N_114MCNullStreamer21EmitDwarfLocDirectiveEjjjjjj", "(anonymous namespace)::MCNullStreamer::EmitDwarfLocDirective(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int)"}, + {"_ZN12_GLOBAL__N_114MCNullStreamer24EmitDwarfAdvanceLineAddrExPKN4llvm8MCSymbolES4_", "(anonymous namespace)::MCNullStreamer::EmitDwarfAdvanceLineAddr(long long, llvm::MCSymbol const*, llvm::MCSymbol const*)"}, + {"_ZN12_GLOBAL__N_114MCNullStreamer15EmitInstructionERKN4llvm6MCInstE", "(anonymous namespace)::MCNullStreamer::EmitInstruction(llvm::MCInst const&)"}, + {"_ZN12_GLOBAL__N_114MCNullStreamer6FinishEv", "(anonymous namespace)::MCNullStreamer::Finish()"}, + {"_ZNK4llvm10MCStreamer12isVerboseAsmEv", "llvm::MCStreamer::isVerboseAsm() const"}, + {"_ZNK4llvm10MCStreamer17hasRawTextSupportEv", "llvm::MCStreamer::hasRawTextSupport() const"}, + {"_ZN4llvm10MCStreamer10AddCommentERKNS_5TwineE", "llvm::MCStreamer::AddComment(llvm::Twine const&)"}, + {"_ZN4llvm10MCStreamer12AddBlankLineEv", "llvm::MCStreamer::AddBlankLine()"}, + {"_ZN4llvm10MCStreamer25EmitDwarfAdvanceFrameAddrEPKNS_8MCSymbolES3_", "llvm::MCStreamer::EmitDwarfAdvanceFrameAddr(llvm::MCSymbol const*, llvm::MCSymbol const*)"}, + {"_ZN4llvm16MCObjectStreamerC1ERNS_9MCContextERNS_16TargetAsmBackendERNS_11raw_ostreamEPNS_13MCCodeEmitterE", "llvm::MCObjectStreamer::MCObjectStreamer(llvm::MCContext&, llvm::TargetAsmBackend&, llvm::raw_ostream&, llvm::MCCodeEmitter*)"}, + {"_ZN4llvm16MCObjectStreamerC2ERNS_9MCContextERNS_16TargetAsmBackendERNS_11raw_ostreamEPNS_13MCCodeEmitterE", "llvm::MCObjectStreamer::MCObjectStreamer(llvm::MCContext&, llvm::TargetAsmBackend&, llvm::raw_ostream&, llvm::MCCodeEmitter*)"}, + {"_ZN4llvm16MCObjectStreamerD0Ev", "llvm::MCObjectStreamer::~MCObjectStreamer()"}, + {"_ZN4llvm16MCObjectStreamerD1Ev", "llvm::MCObjectStreamer::~MCObjectStreamer()"}, + {"_ZN4llvm16MCObjectStreamerD2Ev", "llvm::MCObjectStreamer::~MCObjectStreamer()"}, + {"_ZNK4llvm16MCObjectStreamer18getCurrentFragmentEv", "llvm::MCObjectStreamer::getCurrentFragment() const"}, + {"_ZNK4llvm16MCObjectStreamer23getOrCreateDataFragmentEv", "llvm::MCObjectStreamer::getOrCreateDataFragment() const"}, + {"_ZN4llvm16MCObjectStreamer15AddValueSymbolsEPKNS_6MCExprE", "llvm::MCObjectStreamer::AddValueSymbols(llvm::MCExpr const*)"}, + {"_ZN4llvm16MCObjectStreamer13EmitValueImplEPKNS_6MCExprEjbj", "llvm::MCObjectStreamer::EmitValueImpl(llvm::MCExpr const*, unsigned int, bool, unsigned int)"}, + {"_ZN4llvm16MCObjectStreamer9EmitLabelEPNS_8MCSymbolE", "llvm::MCObjectStreamer::EmitLabel(llvm::MCSymbol*)"}, + {"_ZN4llvm16MCObjectStreamer16EmitULEB128ValueEPKNS_6MCExprEj", "llvm::MCObjectStreamer::EmitULEB128Value(llvm::MCExpr const*, unsigned int)"}, + {"_ZN4llvm16MCObjectStreamer16EmitSLEB128ValueEPKNS_6MCExprEj", "llvm::MCObjectStreamer::EmitSLEB128Value(llvm::MCExpr const*, unsigned int)"}, + {"_ZN4llvm16MCObjectStreamer17EmitWeakReferenceEPNS_8MCSymbolEPKS1_", "llvm::MCObjectStreamer::EmitWeakReference(llvm::MCSymbol*, llvm::MCSymbol const*)"}, + {"_ZN4llvm16MCObjectStreamer13SwitchSectionEPKNS_9MCSectionE", "llvm::MCObjectStreamer::SwitchSection(llvm::MCSection const*)"}, + {"_ZN4llvm16MCObjectStreamer15EmitInstructionERKNS_6MCInstE", "llvm::MCObjectStreamer::EmitInstruction(llvm::MCInst const&)"}, + {"_ZN4llvm16MCObjectStreamer18EmitInstToFragmentERKNS_6MCInstE", "llvm::MCObjectStreamer::EmitInstToFragment(llvm::MCInst const&)"}, + {"_ZN4llvm16MCObjectStreamer24EmitDwarfAdvanceLineAddrExPKNS_8MCSymbolES3_", "llvm::MCObjectStreamer::EmitDwarfAdvanceLineAddr(long long, llvm::MCSymbol const*, llvm::MCSymbol const*)"}, + {"_ZN4llvm16MCObjectStreamer25EmitDwarfAdvanceFrameAddrEPKNS_8MCSymbolES3_", "llvm::MCObjectStreamer::EmitDwarfAdvanceFrameAddr(llvm::MCSymbol const*, llvm::MCSymbol const*)"}, + {"_ZN4llvm16MCObjectStreamer17EmitValueToOffsetEPKNS_6MCExprEh", "llvm::MCObjectStreamer::EmitValueToOffset(llvm::MCExpr const*, unsigned char)"}, + {"_ZN4llvm16MCObjectStreamer6FinishEv", "llvm::MCObjectStreamer::Finish()"}, + {"_ZN4llvm13MCOrgFragmentD1Ev", "llvm::MCOrgFragment::~MCOrgFragment()"}, + {"_ZN4llvm13MCOrgFragmentD0Ev", "llvm::MCOrgFragment::~MCOrgFragment()"}, + {"_ZN4llvm24MCDwarfCallFrameFragmentD1Ev", "llvm::MCDwarfCallFrameFragment::~MCDwarfCallFrameFragment()"}, + {"_ZN4llvm24MCDwarfCallFrameFragmentD0Ev", "llvm::MCDwarfCallFrameFragment::~MCDwarfCallFrameFragment()"}, + {"_ZN4llvm23MCDwarfLineAddrFragmentD1Ev", "llvm::MCDwarfLineAddrFragment::~MCDwarfLineAddrFragment()"}, + {"_ZN4llvm23MCDwarfLineAddrFragmentD0Ev", "llvm::MCDwarfLineAddrFragment::~MCDwarfLineAddrFragment()"}, + {"_ZN4llvm13MCLEBFragmentD1Ev", "llvm::MCLEBFragment::~MCLEBFragment()"}, + {"_ZN4llvm13MCLEBFragmentD0Ev", "llvm::MCLEBFragment::~MCLEBFragment()"}, + {"_ZN4llvm14MCObjectWriterD0Ev", "llvm::MCObjectWriter::~MCObjectWriter()"}, + {"_ZN4llvm14MCObjectWriterD1Ev", "llvm::MCObjectWriter::~MCObjectWriter()"}, + {"_ZN4llvm14MCObjectWriterD2Ev", "llvm::MCObjectWriter::~MCObjectWriter()"}, + {"_ZN4llvm14MCObjectWriter13EncodeSLEB128ExRNS_11raw_ostreamE", "llvm::MCObjectWriter::EncodeSLEB128(long long, llvm::raw_ostream&)"}, + {"_ZN4llvm14MCObjectWriter13EncodeULEB128EyRNS_11raw_ostreamE", "llvm::MCObjectWriter::EncodeULEB128(unsigned long long, llvm::raw_ostream&)"}, + {"_ZNK4llvm14MCObjectWriter34IsSymbolRefDifferenceFullyResolvedERKNS_11MCAssemblerEPKNS_15MCSymbolRefExprES6_b", "llvm::MCObjectWriter::IsSymbolRefDifferenceFullyResolved(llvm::MCAssembler const&, llvm::MCSymbolRefExpr const*, llvm::MCSymbolRefExpr const*, bool) const"}, + {"_ZN4llvm9MCSectionD0Ev", "llvm::MCSection::~MCSection()"}, + {"_ZN4llvm9MCSectionD1Ev", "llvm::MCSection::~MCSection()"}, + {"_ZN4llvm9MCSectionD2Ev", "llvm::MCSection::~MCSection()"}, + {"_ZN4llvm13MCSectionCOFFD0Ev", "llvm::MCSectionCOFF::~MCSectionCOFF()"}, + {"_ZN4llvm13MCSectionCOFFD1Ev", "llvm::MCSectionCOFF::~MCSectionCOFF()"}, + {"_ZN4llvm13MCSectionCOFFD2Ev", "llvm::MCSectionCOFF::~MCSectionCOFF()"}, + {"_ZNK4llvm13MCSectionCOFF26ShouldOmitSectionDirectiveENS_9StringRefERKNS_9MCAsmInfoE", "llvm::MCSectionCOFF::ShouldOmitSectionDirective(llvm::StringRef, llvm::MCAsmInfo const&) const"}, + {"_ZNK4llvm13MCSectionCOFF20PrintSwitchToSectionERKNS_9MCAsmInfoERNS_11raw_ostreamE", "llvm::MCSectionCOFF::PrintSwitchToSection(llvm::MCAsmInfo const&, llvm::raw_ostream&) const"}, + {"_ZNK4llvm13MCSectionCOFF12UseCodeAlignEv", "llvm::MCSectionCOFF::UseCodeAlign() const"}, + {"_ZNK4llvm13MCSectionCOFF16isVirtualSectionEv", "llvm::MCSectionCOFF::isVirtualSection() const"}, + {"_ZN4llvm12MCSectionELFD0Ev", "llvm::MCSectionELF::~MCSectionELF()"}, + {"_ZN4llvm12MCSectionELFD1Ev", "llvm::MCSectionELF::~MCSectionELF()"}, + {"_ZN4llvm12MCSectionELFD2Ev", "llvm::MCSectionELF::~MCSectionELF()"}, + {"_ZNK4llvm12MCSectionELF26ShouldOmitSectionDirectiveENS_9StringRefERKNS_9MCAsmInfoE", "llvm::MCSectionELF::ShouldOmitSectionDirective(llvm::StringRef, llvm::MCAsmInfo const&) const"}, + {"_ZNK4llvm12MCSectionELF20PrintSwitchToSectionERKNS_9MCAsmInfoERNS_11raw_ostreamE", "llvm::MCSectionELF::PrintSwitchToSection(llvm::MCAsmInfo const&, llvm::raw_ostream&) const"}, + {"_ZNK4llvm12MCSectionELF12UseCodeAlignEv", "llvm::MCSectionELF::UseCodeAlign() const"}, + {"_ZNK4llvm12MCSectionELF16isVirtualSectionEv", "llvm::MCSectionELF::isVirtualSection() const"}, + {"_ZNK4llvm12MCSectionELF16HasCommonSymbolsEv", "llvm::MCSectionELF::HasCommonSymbols() const"}, + {"_ZN4llvm12MCSectionELF18DetermineEntrySizeENS_11SectionKindE", "llvm::MCSectionELF::DetermineEntrySize(llvm::SectionKind)"}, + {"_ZN4llvm14MCSectionMachOC1ENS_9StringRefES1_jjNS_11SectionKindE", "llvm::MCSectionMachO::MCSectionMachO(llvm::StringRef, llvm::StringRef, unsigned int, unsigned int, llvm::SectionKind)"}, + {"_ZN4llvm14MCSectionMachOC2ENS_9StringRefES1_jjNS_11SectionKindE", "llvm::MCSectionMachO::MCSectionMachO(llvm::StringRef, llvm::StringRef, unsigned int, unsigned int, llvm::SectionKind)"}, + {"_ZNK4llvm14MCSectionMachO20PrintSwitchToSectionERKNS_9MCAsmInfoERNS_11raw_ostreamE", "llvm::MCSectionMachO::PrintSwitchToSection(llvm::MCAsmInfo const&, llvm::raw_ostream&) const"}, + {"_ZNK4llvm14MCSectionMachO12UseCodeAlignEv", "llvm::MCSectionMachO::UseCodeAlign() const"}, + {"_ZNK4llvm14MCSectionMachO16isVirtualSectionEv", "llvm::MCSectionMachO::isVirtualSection() const"}, + {"_ZN4llvm14MCSectionMachO21ParseSectionSpecifierENS_9StringRefERS1_S2_RjS3_", "llvm::MCSectionMachO::ParseSectionSpecifier(llvm::StringRef, llvm::StringRef&, llvm::StringRef&, unsigned int&, unsigned int&)"}, + {"_Z11StripSpacesRN4llvm9StringRefE", "StripSpaces(llvm::StringRef&)"}, + {"_ZN4llvm14MCSectionMachOD1Ev", "llvm::MCSectionMachO::~MCSectionMachO()"}, + {"_ZN4llvm14MCSectionMachOD0Ev", "llvm::MCSectionMachO::~MCSectionMachO()"}, + {"_ZN4llvm10MCStreamerC1ERNS_9MCContextE", "llvm::MCStreamer::MCStreamer(llvm::MCContext&)"}, + {"_ZN4llvm10MCStreamerC2ERNS_9MCContextE", "llvm::MCStreamer::MCStreamer(llvm::MCContext&)"}, + {"_ZN4llvm10MCStreamerD0Ev", "llvm::MCStreamer::~MCStreamer()"}, + {"_ZN4llvm10MCStreamerD1Ev", "llvm::MCStreamer::~MCStreamer()"}, + {"_ZN4llvm10MCStreamerD2Ev", "llvm::MCStreamer::~MCStreamer()"}, + {"_ZN4llvm10MCStreamer12GetCommentOSEv", "llvm::MCStreamer::GetCommentOS()"}, + {"_ZN4llvm10MCStreamer20EmitDwarfSetLineAddrExPKNS_8MCSymbolEi", "llvm::MCStreamer::EmitDwarfSetLineAddr(long long, llvm::MCSymbol const*, int)"}, + {"_ZN4llvm10MCStreamer19EmitULEB128IntValueEyj", "llvm::MCStreamer::EmitULEB128IntValue(unsigned long long, unsigned int)"}, + {"_ZN4llvm10MCStreamer15EmitSymbolValueEPKNS_8MCSymbolEjj", "llvm::MCStreamer::EmitSymbolValue(llvm::MCSymbol const*, unsigned int, unsigned int)"}, + {"_ZN4llvm10MCStreamer12EmitIntValueEyjj", "llvm::MCStreamer::EmitIntValue(unsigned long long, unsigned int, unsigned int)"}, + {"_ZN4llvm10MCStreamer19EmitSLEB128IntValueExj", "llvm::MCStreamer::EmitSLEB128IntValue(long long, unsigned int)"}, + {"_ZN4llvm10MCStreamer12EmitAbsValueEPKNS_6MCExprEjj", "llvm::MCStreamer::EmitAbsValue(llvm::MCExpr const*, unsigned int, unsigned int)"}, + {"_ZN4llvm10MCStreamer9EmitValueEPKNS_6MCExprEjj", "llvm::MCStreamer::EmitValue(llvm::MCExpr const*, unsigned int, unsigned int)"}, + {"_ZN4llvm10MCStreamer14EmitPCRelValueEPKNS_6MCExprEjj", "llvm::MCStreamer::EmitPCRelValue(llvm::MCExpr const*, unsigned int, unsigned int)"}, + {"_ZN4llvm10MCStreamer15EmitSymbolValueEPKNS_8MCSymbolEjbj", "llvm::MCStreamer::EmitSymbolValue(llvm::MCSymbol const*, unsigned int, bool, unsigned int)"}, + {"_ZN4llvm10MCStreamer20EmitPCRelSymbolValueEPKNS_8MCSymbolEjj", "llvm::MCStreamer::EmitPCRelSymbolValue(llvm::MCSymbol const*, unsigned int, unsigned int)"}, + {"_ZN4llvm10MCStreamer16EmitGPRel32ValueEPKNS_6MCExprE", "llvm::MCStreamer::EmitGPRel32Value(llvm::MCExpr const*)"}, + {"_ZN4llvm10MCStreamer8EmitFillEyhj", "llvm::MCStreamer::EmitFill(unsigned long long, unsigned char, unsigned int)"}, + {"_ZN4llvm10MCStreamer22EmitDwarfFileDirectiveEjNS_9StringRefE", "llvm::MCStreamer::EmitDwarfFileDirective(unsigned int, llvm::StringRef)"}, + {"_ZN4llvm10MCStreamer21EmitDwarfLocDirectiveEjjjjjj", "llvm::MCStreamer::EmitDwarfLocDirective(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int)"}, + {"_ZN4llvm10MCStreamer19getCurrentFrameInfoEv", "llvm::MCStreamer::getCurrentFrameInfo()"}, + {"_ZN4llvm10MCStreamer16EnsureValidFrameEv", "llvm::MCStreamer::EnsureValidFrame()"}, + {"_ZN4llvm10MCStreamer16EmitCFIStartProcEv", "llvm::MCStreamer::EmitCFIStartProc()"}, + {"_ZN4llvm10MCStreamer14EmitCFIEndProcEv", "llvm::MCStreamer::EmitCFIEndProc()"}, + {"_ZN4llvm10MCStreamer13EmitCFIDefCfaExx", "llvm::MCStreamer::EmitCFIDefCfa(long long, long long)"}, + {"_ZN4llvm10MCStreamer19EmitCFIDefCfaOffsetEx", "llvm::MCStreamer::EmitCFIDefCfaOffset(long long)"}, + {"_ZN4llvm10MCStreamer21EmitCFIDefCfaRegisterEx", "llvm::MCStreamer::EmitCFIDefCfaRegister(long long)"}, + {"_ZN4llvm10MCStreamer13EmitCFIOffsetExx", "llvm::MCStreamer::EmitCFIOffset(long long, long long)"}, + {"_ZN4llvm10MCStreamer18EmitCFIPersonalityEPKNS_8MCSymbolEj", "llvm::MCStreamer::EmitCFIPersonality(llvm::MCSymbol const*, unsigned int)"}, + {"_ZN4llvm10MCStreamer11EmitCFILsdaEPKNS_8MCSymbolEj", "llvm::MCStreamer::EmitCFILsda(llvm::MCSymbol const*, unsigned int)"}, + {"_ZN4llvm10MCStreamer20EmitCFIRememberStateEv", "llvm::MCStreamer::EmitCFIRememberState()"}, + {"_ZN4llvm10MCStreamer19EmitCFIRestoreStateEv", "llvm::MCStreamer::EmitCFIRestoreState()"}, + {"_ZN4llvm10MCStreamer11EmitRawTextENS_9StringRefE", "llvm::MCStreamer::EmitRawText(llvm::StringRef)"}, + {"_ZN4llvm10MCStreamer11EmitRawTextERKNS_5TwineE", "llvm::MCStreamer::EmitRawText(llvm::Twine const&)"}, + {"_ZNSt6vectorIN4llvm16MCCFIInstructionESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::MCCFIInstruction const&)"}, + {"_ZNSt6vectorIN4llvm16MCDwarfFrameInfoESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::MCDwarfFrameInfo const&)"}, + {"_ZNSt6vectorIN4llvm16MCCFIInstructionESaIS1_EEaSERKS3_", "std::vector>::operator=(std::vector> const&)"}, + {"_ZNSt6vectorIN4llvm16MCCFIInstructionESaIS1_EEC2ERKS3_", "std::vector>::vector(std::vector> const&)"}, + {"_ZNK4llvm8MCSymbol13AliasedSymbolEv", "llvm::MCSymbol::AliasedSymbol() const"}, + {"_ZN4llvm8MCSymbol16setVariableValueEPKNS_6MCExprE", "llvm::MCSymbol::setVariableValue(llvm::MCExpr const*)"}, + {"_ZNK4llvm8MCSymbol5printERNS_11raw_ostreamE", "llvm::MCSymbol::print(llvm::raw_ostream&) const"}, + {"_ZNK4llvm8MCSymbol4dumpEv", "llvm::MCSymbol::dump() const"}, + {"_ZN4llvm22createMachObjectWriterEPNS_24MCMachObjectTargetWriterERNS_11raw_ostreamEb", "llvm::createMachObjectWriter(llvm::MCMachObjectTargetWriter*, llvm::raw_ostream&, bool)"}, + {"_ZN12_GLOBAL__N_116MachObjectWriterD1Ev", "(anonymous namespace)::MachObjectWriter::~MachObjectWriter()"}, + {"_ZN12_GLOBAL__N_116MachObjectWriterD0Ev", "(anonymous namespace)::MachObjectWriter::~MachObjectWriter()"}, + {"_ZN12_GLOBAL__N_116MachObjectWriter24ExecutePostLayoutBindingERN4llvm11MCAssemblerERKNS1_11MCAsmLayoutE", "(anonymous namespace)::MachObjectWriter::ExecutePostLayoutBinding(llvm::MCAssembler&, llvm::MCAsmLayout const&)"}, + {"_ZN12_GLOBAL__N_116MachObjectWriter16RecordRelocationERKN4llvm11MCAssemblerERKNS1_11MCAsmLayoutEPKNS1_10MCFragmentERKNS1_7MCFixupENS1_7MCValueERy", "(anonymous namespace)::MachObjectWriter::RecordRelocation(llvm::MCAssembler const&, llvm::MCAsmLayout const&, llvm::MCFragment const*, llvm::MCFixup const&, llvm::MCValue, unsigned long long&)"}, + {"_ZNK12_GLOBAL__N_116MachObjectWriter38IsSymbolRefDifferenceFullyResolvedImplERKN4llvm11MCAssemblerERKNS1_12MCSymbolDataERKNS1_10MCFragmentEbb", "(anonymous namespace)::MachObjectWriter::IsSymbolRefDifferenceFullyResolvedImpl(llvm::MCAssembler const&, llvm::MCSymbolData const&, llvm::MCFragment const&, bool, bool) const"}, + {"_ZN12_GLOBAL__N_116MachObjectWriter11WriteObjectERN4llvm11MCAssemblerERKNS1_11MCAsmLayoutE", "(anonymous namespace)::MachObjectWriter::WriteObject(llvm::MCAssembler&, llvm::MCAsmLayout const&)"}, + {"_ZNK12_GLOBAL__N_116MachObjectWriter14getPaddingSizeEPKN4llvm13MCSectionDataERKNS1_11MCAsmLayoutE", "(anonymous namespace)::MachObjectWriter::getPaddingSize(llvm::MCSectionData const*, llvm::MCAsmLayout const&) const"}, + {"_ZN12_GLOBAL__N_116MachObjectWriter10WriteNlistERNS0_14MachSymbolDataERKN4llvm11MCAsmLayoutE", "(anonymous namespace)::MachObjectWriter::WriteNlist((anonymous namespace)::MachObjectWriter::MachSymbolData&, llvm::MCAsmLayout const&)"}, + {"_ZN12_GLOBAL__N_116MachObjectWriter25RecordScatteredRelocationERKN4llvm11MCAssemblerERKNS1_11MCAsmLayoutEPKNS1_10MCFragmentERKNS1_7MCFixupENS1_7MCValueEjRy", "(anonymous namespace)::MachObjectWriter::RecordScatteredRelocation(llvm::MCAssembler const&, llvm::MCAsmLayout const&, llvm::MCFragment const*, llvm::MCFixup const&, llvm::MCValue, unsigned int, unsigned long long&)"}, + {"_ZN12_GLOBAL__N_116MachObjectWriter28RecordARMScatteredRelocationERKN4llvm11MCAssemblerERKNS1_11MCAsmLayoutEPKNS1_10MCFragmentERKNS1_7MCFixupENS1_7MCValueEjRy", "(anonymous namespace)::MachObjectWriter::RecordARMScatteredRelocation(llvm::MCAssembler const&, llvm::MCAsmLayout const&, llvm::MCFragment const*, llvm::MCFixup const&, llvm::MCValue, unsigned int, unsigned long long&)"}, + {"_ZNSt6vectorIN12_GLOBAL__N_116MachObjectWriter14MachSymbolDataESaIS2_EE9push_backERKS2_", "std::vector<(anonymous namespace)::MachObjectWriter::MachSymbolData, std::allocator<(anonymous namespace)::MachObjectWriter::MachSymbolData>>::push_back((anonymous namespace)::MachObjectWriter::MachSymbolData const&)"}, + + // {"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_116MachObjectWriter14MachSymbolDataESt6vectorIS4_SaIS4_EEEEEvT_SA_", + // "void std::sort<__gnu_cxx::__normal_iterator<(anonymous namespace)::MachObjectWriter::MachSymbolData*, std::vector<(anonymous namespace)::MachObjectWriter::MachSymbolData, std::allocator<(anonymous namespace)::MachObjectWriter::MachSymbolData>>>>(__gnu_cxx::__normal_iterator<(anonymous namespace)::MachObjectWriter::MachSymbolData*, std::vector<(anonymous namespace)::MachObjectWriter::MachSymbolData, std::allocator<(anonymous namespace)::MachObjectWriter::MachSymbolData>>>, __gnu_cxx::__normal_iterator<(anonymous namespace)::MachObjectWriter::MachSymbolData*, std::vector<(anonymous namespace)::MachObjectWriter::MachSymbolData, std::allocator<(anonymous namespace)::MachObjectWriter::MachSymbolData>>>)"}, + // got error + + + // {"_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_116MachObjectWriter14MachSymbolDataESt6vectorIS4_SaIS4_EEEElEvT_SA_T0_", + // "void std::__introsort_loop<__gnu_cxx::__normal_iterator<(anonymous namespace)::MachObjectWriter::MachSymbolData*, std::vector<(anonymous namespace)::MachObjectWriter::MachSymbolData, std::allocator<(anonymous namespace)::MachObjectWriter::MachSymbolData>>>, long>(__gnu_cxx::__normal_iterator<(anonymous namespace)::MachObjectWriter::MachSymbolData*, std::vector<(anonymous namespace)::MachObjectWriter::MachSymbolData, std::allocator<(anonymous namespace)::MachObjectWriter::MachSymbolData>>>, __gnu_cxx::__normal_iterator<(anonymous namespace)::MachObjectWriter::MachSymbolData*, std::vector<(anonymous namespace)::MachObjectWriter::MachSymbolData, std::allocator<(anonymous namespace)::MachObjectWriter::MachSymbolData>>>, long)"}, + // got error + + + // {"_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_116MachObjectWriter14MachSymbolDataESt6vectorIS4_SaIS4_EEEEEvT_SA_", + // "void std::__insertion_sort<__gnu_cxx::__normal_iterator<(anonymous namespace)::MachObjectWriter::MachSymbolData*, std::vector<(anonymous namespace)::MachObjectWriter::MachSymbolData, std::allocator<(anonymous namespace)::MachObjectWriter::MachSymbolData>>>>(__gnu_cxx::__normal_iterator<(anonymous namespace)::MachObjectWriter::MachSymbolData*, std::vector<(anonymous namespace)::MachObjectWriter::MachSymbolData, std::allocator<(anonymous namespace)::MachObjectWriter::MachSymbolData>>>, __gnu_cxx::__normal_iterator<(anonymous namespace)::MachObjectWriter::MachSymbolData*, std::vector<(anonymous namespace)::MachObjectWriter::MachSymbolData, std::allocator<(anonymous namespace)::MachObjectWriter::MachSymbolData>>>)"}, + // got error + + + // {"_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_116MachObjectWriter14MachSymbolDataESt6vectorIS4_SaIS4_EEEElS4_EvT_T0_SB_T1_", + // "void std::__adjust_heap<__gnu_cxx::__normal_iterator<(anonymous namespace)::MachObjectWriter::MachSymbolData*, std::vector<(anonymous namespace)::MachObjectWriter::MachSymbolData, std::allocator<(anonymous namespace)::MachObjectWriter::MachSymbolData>>>, long, (anonymous namespace)::MachObjectWriter::MachSymbolData>(__gnu_cxx::__normal_iterator<(anonymous namespace)::MachObjectWriter::MachSymbolData*, std::vector<(anonymous namespace)::MachObjectWriter::MachSymbolData, std::allocator<(anonymous namespace)::MachObjectWriter::MachSymbolData>>>, long, long, (anonymous namespace)::MachObjectWriter::MachSymbolData)"}, + // got error + + {"_ZN4llvm8DenseMapIPKNS_13MCSectionDataESt6vectorINS_6object5macho15RelocationEntryESaIS7_EENS_12DenseMapInfoIS3_EENSA_IS9_EEE16FindAndConstructERKS3_", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::FindAndConstruct(llvm::MCSectionData const* const&)"}, + {"_ZN4llvm8DenseMapIPKNS_13MCSectionDataESt6vectorINS_6object5macho15RelocationEntryESaIS7_EENS_12DenseMapInfoIS3_EENSA_IS9_EEE16InsertIntoBucketERKS3_RKS9_PSt4pairIS3_S9_E", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::InsertIntoBucket(llvm::MCSectionData const* const&, std::vector> const&, std::pair>>*)"}, + {"_ZN4llvm8DenseMapIPKNS_13MCSectionDataESt6vectorINS_6object5macho15RelocationEntryESaIS7_EENS_12DenseMapInfoIS3_EENSA_IS9_EEE4growEj", "llvm::DenseMap>, llvm::DenseMapInfo, llvm::DenseMapInfo>>>::grow(unsigned int)"}, + {"_ZNSt6vectorIN4llvm6object5macho15RelocationEntryESaIS3_EEC2ERKS5_", "std::vector>::vector(std::vector> const&)"}, + {"_ZNSt6vectorIN4llvm6object5macho15RelocationEntryESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::object::macho::RelocationEntry const&)"}, + {"_ZN4llvm9StringMapIyNS_15MallocAllocatorEE16GetOrCreateValueIyEERNS_14StringMapEntryIyEENS_9StringRefET_", "llvm::StringMapEntry& llvm::StringMap::GetOrCreateValue(llvm::StringRef, unsigned long long)"}, + {"_ZN4llvm8DenseMapIPKNS_9MCSectionEhNS_12DenseMapInfoIS3_EENS4_IhEEE16InsertIntoBucketERKS3_RKhPSt4pairIS3_hE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::MCSection const* const&, unsigned char const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_9MCSectionEhNS_12DenseMapInfoIS3_EENS4_IhEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKNS_13MCSectionDataEjNS_12DenseMapInfoIS3_EENS4_IjEEE16InsertIntoBucketERKS3_RKjPSt4pairIS3_jE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::MCSectionData const* const&, unsigned int const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_13MCSectionDataEjNS_12DenseMapInfoIS3_EENS4_IjEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm8DenseMapIPKNS_13MCSectionDataEyNS_12DenseMapInfoIS3_EENS4_IyEEE16InsertIntoBucketERKS3_RKyPSt4pairIS3_yE", "llvm::DenseMap, llvm::DenseMapInfo>::InsertIntoBucket(llvm::MCSectionData const* const&, unsigned long long const&, std::pair*)"}, + {"_ZN4llvm8DenseMapIPKNS_13MCSectionDataEyNS_12DenseMapInfoIS3_EENS4_IyEEE4growEj", "llvm::DenseMap, llvm::DenseMapInfo>::grow(unsigned int)"}, + {"_ZN4llvm16TargetAsmBackendC1Ev", "llvm::TargetAsmBackend::TargetAsmBackend()"}, + {"_ZN4llvm16TargetAsmBackendC2Ev", "llvm::TargetAsmBackend::TargetAsmBackend()"}, + {"_ZN4llvm16TargetAsmBackendD0Ev", "llvm::TargetAsmBackend::~TargetAsmBackend()"}, + {"_ZN4llvm16TargetAsmBackendD1Ev", "llvm::TargetAsmBackend::~TargetAsmBackend()"}, + {"_ZN4llvm16TargetAsmBackendD2Ev", "llvm::TargetAsmBackend::~TargetAsmBackend()"}, + {"_ZNK4llvm16TargetAsmBackend16getFixupKindInfoENS_11MCFixupKindE", "llvm::TargetAsmBackend::getFixupKindInfo(llvm::MCFixupKind) const"}, + {"_ZN4llvm25createWinCOFFObjectWriterERNS_11raw_ostreamEb", "llvm::createWinCOFFObjectWriter(llvm::raw_ostream&, bool)"}, + {"_ZN12_GLOBAL__N_119WinCOFFObjectWriterD1Ev", "(anonymous namespace)::WinCOFFObjectWriter::~WinCOFFObjectWriter()"}, + {"_ZN12_GLOBAL__N_119WinCOFFObjectWriterD0Ev", "(anonymous namespace)::WinCOFFObjectWriter::~WinCOFFObjectWriter()"}, + {"_ZN12_GLOBAL__N_119WinCOFFObjectWriter24ExecutePostLayoutBindingERN4llvm11MCAssemblerERKNS1_11MCAsmLayoutE", "(anonymous namespace)::WinCOFFObjectWriter::ExecutePostLayoutBinding(llvm::MCAssembler&, llvm::MCAsmLayout const&)"}, + {"_ZN12_GLOBAL__N_119WinCOFFObjectWriter16RecordRelocationERKN4llvm11MCAssemblerERKNS1_11MCAsmLayoutEPKNS1_10MCFragmentERKNS1_7MCFixupENS1_7MCValueERy", "(anonymous namespace)::WinCOFFObjectWriter::RecordRelocation(llvm::MCAssembler const&, llvm::MCAsmLayout const&, llvm::MCFragment const*, llvm::MCFixup const&, llvm::MCValue, unsigned long long&)"}, + {"_ZNK12_GLOBAL__N_119WinCOFFObjectWriter38IsSymbolRefDifferenceFullyResolvedImplERKN4llvm11MCAssemblerERKNS1_12MCSymbolDataERKNS1_10MCFragmentEbb", "(anonymous namespace)::WinCOFFObjectWriter::IsSymbolRefDifferenceFullyResolvedImpl(llvm::MCAssembler const&, llvm::MCSymbolData const&, llvm::MCFragment const&, bool, bool) const"}, + {"_ZN12_GLOBAL__N_119WinCOFFObjectWriter11WriteObjectERN4llvm11MCAssemblerERKNS1_11MCAsmLayoutE", "(anonymous namespace)::WinCOFFObjectWriter::WriteObject(llvm::MCAssembler&, llvm::MCAsmLayout const&)"}, + {"_ZN4llvm8DenseMapIPKNS_9MCSectionEPN12_GLOBAL__N_111COFFSectionENS_12DenseMapInfoIS3_EENS7_IS6_EEEixERKS3_", "llvm::DenseMap, llvm::DenseMapInfo<(anonymous namespace)::COFFSection*>>::operator[](llvm::MCSection const* const&)"}, + {"_ZN12_GLOBAL__N_111StringTable6insertEN4llvm9StringRefE", "(anonymous namespace)::StringTable::insert(llvm::StringRef)"}, + {"_ZN4llvm8DenseMapIPKNS_8MCSymbolEPN12_GLOBAL__N_110COFFSymbolENS_12DenseMapInfoIS3_EENS7_IS6_EEEixERKS3_", "llvm::DenseMap, llvm::DenseMapInfo<(anonymous namespace)::COFFSymbol*>>::operator[](llvm::MCSymbol const* const&)"}, + {"_ZN12_GLOBAL__N_119WinCOFFObjectWriter21GetOrCreateCOFFSymbolEPKN4llvm8MCSymbolE", "(anonymous namespace)::WinCOFFObjectWriter::GetOrCreateCOFFSymbol(llvm::MCSymbol const*)"}, + {"_ZN4llvm15SmallVectorImplIN12_GLOBAL__N_19AuxSymbolEE6resizeEj", "llvm::SmallVectorImpl<(anonymous namespace)::AuxSymbol>::resize(unsigned int)"}, + + // {"_ZN12_GLOBAL__N_119WinCOFFObjectWriter16createCOFFEntityINS_10COFFSymbolESt6vectorIPS2_SaIS4_EEEEPT_N4llvm9StringRefERT0_", + // "(anonymous namespace)::COFFSymbol* (anonymous namespace)::WinCOFFObjectWriter::createCOFFEntity<(anonymous namespace)::COFFSymbol, std::vector<(anonymous namespace)::COFFSymbol*, std::allocator<(anonymous namespace)::COFFSymbol*>>>(llvm::StringRef, std::vector<(anonymous namespace)::COFFSymbol*, std::allocator<(anonymous namespace)::COFFSymbol*>>&)"}, + // "(anonymous namespace)::COFFSymbol* (anonymous namespace)::WinCOFFObjectWriter::createCOFFEntity<(anonymous namespace)::COFFSymbol, std::vector<(anonymous namespace)::COFFSymbol*, std::allocator<(anonymous namespace)::COFFSymbol*>>>(llvm::StringRef, (anonymous namespace)::COFFSymbol*&)" was returned + + {"_ZN4llvm9StringMapImNS_15MallocAllocatorEE16GetOrCreateValueImEERNS_14StringMapEntryImEENS_9StringRefET_", "llvm::StringMapEntry& llvm::StringMap::GetOrCreateValue(llvm::StringRef, unsigned long)"}, + {"_ZNSt6vectorIcSaIcEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPcS1_EERKc", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, char const&)"}, + + // {"_ZNSt6vectorIcSaIcEE15_M_range_insertIPKcEEvN9__gnu_cxx17__normal_iteratorIPcS1_EET_S9_St20forward_iterator_tag", + // "void std::vector>::_M_range_insert(__gnu_cxx::__normal_iterator>>, char const*, char const*, std::forward_iterator_tag)"}, + // got error + + {"_ZN4llvm21createWinCOFFStreamerERNS_9MCContextERNS_16TargetAsmBackendERNS_13MCCodeEmitterERNS_11raw_ostreamEb", "llvm::createWinCOFFStreamer(llvm::MCContext&, llvm::TargetAsmBackend&, llvm::MCCodeEmitter&, llvm::raw_ostream&, bool)"}, + {"_ZN12_GLOBAL__N_115WinCOFFStreamerD1Ev", "(anonymous namespace)::WinCOFFStreamer::~WinCOFFStreamer()"}, + {"_ZN12_GLOBAL__N_115WinCOFFStreamerD0Ev", "(anonymous namespace)::WinCOFFStreamer::~WinCOFFStreamer()"}, + {"_ZN12_GLOBAL__N_115WinCOFFStreamer12InitSectionsEv", "(anonymous namespace)::WinCOFFStreamer::InitSections()"}, + {"_ZN12_GLOBAL__N_115WinCOFFStreamer9EmitLabelEPN4llvm8MCSymbolE", "(anonymous namespace)::WinCOFFStreamer::EmitLabel(llvm::MCSymbol*)"}, + {"_ZN12_GLOBAL__N_115WinCOFFStreamer17EmitAssemblerFlagEN4llvm15MCAssemblerFlagE", "(anonymous namespace)::WinCOFFStreamer::EmitAssemblerFlag(llvm::MCAssemblerFlag)"}, + {"_ZN12_GLOBAL__N_115WinCOFFStreamer13EmitThumbFuncEPN4llvm8MCSymbolE", "(anonymous namespace)::WinCOFFStreamer::EmitThumbFunc(llvm::MCSymbol*)"}, + {"_ZN12_GLOBAL__N_115WinCOFFStreamer14EmitAssignmentEPN4llvm8MCSymbolEPKNS1_6MCExprE", "(anonymous namespace)::WinCOFFStreamer::EmitAssignment(llvm::MCSymbol*, llvm::MCExpr const*)"}, + {"_ZN12_GLOBAL__N_115WinCOFFStreamer19EmitSymbolAttributeEPN4llvm8MCSymbolENS1_12MCSymbolAttrE", "(anonymous namespace)::WinCOFFStreamer::EmitSymbolAttribute(llvm::MCSymbol*, llvm::MCSymbolAttr)"}, + {"_ZN12_GLOBAL__N_115WinCOFFStreamer14EmitSymbolDescEPN4llvm8MCSymbolEj", "(anonymous namespace)::WinCOFFStreamer::EmitSymbolDesc(llvm::MCSymbol*, unsigned int)"}, + {"_ZN12_GLOBAL__N_115WinCOFFStreamer18BeginCOFFSymbolDefEPKN4llvm8MCSymbolE", "(anonymous namespace)::WinCOFFStreamer::BeginCOFFSymbolDef(llvm::MCSymbol const*)"}, + {"_ZN12_GLOBAL__N_115WinCOFFStreamer26EmitCOFFSymbolStorageClassEi", "(anonymous namespace)::WinCOFFStreamer::EmitCOFFSymbolStorageClass(int)"}, + {"_ZN12_GLOBAL__N_115WinCOFFStreamer18EmitCOFFSymbolTypeEi", "(anonymous namespace)::WinCOFFStreamer::EmitCOFFSymbolType(int)"}, + {"_ZN12_GLOBAL__N_115WinCOFFStreamer16EndCOFFSymbolDefEv", "(anonymous namespace)::WinCOFFStreamer::EndCOFFSymbolDef()"}, + {"_ZN12_GLOBAL__N_115WinCOFFStreamer11EmitELFSizeEPN4llvm8MCSymbolEPKNS1_6MCExprE", "(anonymous namespace)::WinCOFFStreamer::EmitELFSize(llvm::MCSymbol*, llvm::MCExpr const*)"}, + {"_ZN12_GLOBAL__N_115WinCOFFStreamer16EmitCommonSymbolEPN4llvm8MCSymbolEyj", "(anonymous namespace)::WinCOFFStreamer::EmitCommonSymbol(llvm::MCSymbol*, unsigned long long, unsigned int)"}, + {"_ZN12_GLOBAL__N_115WinCOFFStreamer21EmitLocalCommonSymbolEPN4llvm8MCSymbolEy", "(anonymous namespace)::WinCOFFStreamer::EmitLocalCommonSymbol(llvm::MCSymbol*, unsigned long long)"}, + {"_ZN12_GLOBAL__N_115WinCOFFStreamer12EmitZerofillEPKN4llvm9MCSectionEPNS1_8MCSymbolEjj", "(anonymous namespace)::WinCOFFStreamer::EmitZerofill(llvm::MCSection const*, llvm::MCSymbol*, unsigned int, unsigned int)"}, + {"_ZN12_GLOBAL__N_115WinCOFFStreamer14EmitTBSSSymbolEPKN4llvm9MCSectionEPNS1_8MCSymbolEyj", "(anonymous namespace)::WinCOFFStreamer::EmitTBSSSymbol(llvm::MCSection const*, llvm::MCSymbol*, unsigned long long, unsigned int)"}, + {"_ZN12_GLOBAL__N_115WinCOFFStreamer9EmitBytesEN4llvm9StringRefEj", "(anonymous namespace)::WinCOFFStreamer::EmitBytes(llvm::StringRef, unsigned int)"}, + {"_ZN12_GLOBAL__N_115WinCOFFStreamer20EmitValueToAlignmentEjxjj", "(anonymous namespace)::WinCOFFStreamer::EmitValueToAlignment(unsigned int, long long, unsigned int, unsigned int)"}, + {"_ZN12_GLOBAL__N_115WinCOFFStreamer17EmitCodeAlignmentEjj", "(anonymous namespace)::WinCOFFStreamer::EmitCodeAlignment(unsigned int, unsigned int)"}, + {"_ZN12_GLOBAL__N_115WinCOFFStreamer17EmitFileDirectiveEN4llvm9StringRefE", "(anonymous namespace)::WinCOFFStreamer::EmitFileDirective(llvm::StringRef)"}, + {"_ZN12_GLOBAL__N_115WinCOFFStreamer15EmitInstructionERKN4llvm6MCInstE", "(anonymous namespace)::WinCOFFStreamer::EmitInstruction(llvm::MCInst const&)"}, + {"_ZN12_GLOBAL__N_115WinCOFFStreamer6FinishEv", "(anonymous namespace)::WinCOFFStreamer::Finish()"}, + {"_ZN12_GLOBAL__N_115WinCOFFStreamer14EmitInstToDataERKN4llvm6MCInstE", "(anonymous namespace)::WinCOFFStreamer::EmitInstToData(llvm::MCInst const&)"}, + {"_ZN12_GLOBAL__N_115WinCOFFStreamer18EmitInstToFragmentERKN4llvm6MCInstE", "(anonymous namespace)::WinCOFFStreamer::EmitInstToFragment(llvm::MCInst const&)"}, + {"_ZN12_GLOBAL__N_115WinCOFFStreamer15AddCommonSymbolEPN4llvm8MCSymbolEyjb", "(anonymous namespace)::WinCOFFStreamer::AddCommonSymbol(llvm::MCSymbol*, unsigned long long, unsigned int, bool)"}, + {"_ZN4llvm14MCInstFragmentD1Ev", "llvm::MCInstFragment::~MCInstFragment()"}, + {"_ZN4llvm14MCInstFragmentD0Ev", "llvm::MCInstFragment::~MCInstFragment()"}, + {"_ZN4llvm7APFloat10initializeEPKNS_12fltSemanticsE", "llvm::APFloat::initialize(llvm::fltSemantics const*)"}, + {"_ZNK4llvm7APFloat9partCountEv", "llvm::APFloat::partCount() const"}, + {"_ZN4llvm7APFloat15freeSignificandEv", "llvm::APFloat::freeSignificand()"}, + {"_ZN4llvm7APFloat6assignERKS0_", "llvm::APFloat::assign(llvm::APFloat const&)"}, + {"_ZN4llvm7APFloat15copySignificandERKS0_", "llvm::APFloat::copySignificand(llvm::APFloat const&)"}, + {"_ZN4llvm7APFloat16significandPartsEv", "llvm::APFloat::significandParts()"}, + {"_ZNK4llvm7APFloat16significandPartsEv", "llvm::APFloat::significandParts() const"}, + {"_ZN4llvm7APFloat7makeNaNEbbPKNS_5APIntE", "llvm::APFloat::makeNaN(bool, bool, llvm::APInt const*)"}, + {"_ZN4llvm7APFloat7makeNaNERKNS_12fltSemanticsEbbPKNS_5APIntE", "llvm::APFloat::makeNaN(llvm::fltSemantics const&, bool, bool, llvm::APInt const*)"}, + {"_ZN4llvm7APFloatC1ERKNS_12fltSemanticsENS0_16uninitializedTagE", "llvm::APFloat::APFloat(llvm::fltSemantics const&, llvm::APFloat::uninitializedTag)"}, + {"_ZN4llvm7APFloatD1Ev", "llvm::APFloat::~APFloat()"}, + {"_ZN4llvm7APFloataSERKS0_", "llvm::APFloat::operator=(llvm::APFloat const&)"}, + {"_ZNK4llvm7APFloat14bitwiseIsEqualERKS0_", "llvm::APFloat::bitwiseIsEqual(llvm::APFloat const&) const"}, + {"_ZN4llvm7APFloatC1ERKNS_12fltSemanticsEy", "llvm::APFloat::APFloat(llvm::fltSemantics const&, unsigned long long)"}, + {"_ZN4llvm7APFloatC2ERKNS_12fltSemanticsEy", "llvm::APFloat::APFloat(llvm::fltSemantics const&, unsigned long long)"}, + {"_ZN4llvm7APFloat15zeroSignificandEv", "llvm::APFloat::zeroSignificand()"}, + {"_ZN4llvm7APFloat9normalizeENS0_12roundingModeENS_12lostFractionE", "llvm::APFloat::normalize(llvm::APFloat::roundingMode, llvm::lostFraction)"}, + {"_ZN4llvm7APFloatC1ERKNS_12fltSemanticsE", "llvm::APFloat::APFloat(llvm::fltSemantics const&)"}, + {"_ZN4llvm7APFloatC2ERKNS_12fltSemanticsE", "llvm::APFloat::APFloat(llvm::fltSemantics const&)"}, + {"_ZN4llvm7APFloatC2ERKNS_12fltSemanticsENS0_16uninitializedTagE", "llvm::APFloat::APFloat(llvm::fltSemantics const&, llvm::APFloat::uninitializedTag)"}, + {"_ZN4llvm7APFloatC1ERKNS_12fltSemanticsENS0_11fltCategoryEb", "llvm::APFloat::APFloat(llvm::fltSemantics const&, llvm::APFloat::fltCategory, bool)"}, + {"_ZN4llvm7APFloatC2ERKNS_12fltSemanticsENS0_11fltCategoryEb", "llvm::APFloat::APFloat(llvm::fltSemantics const&, llvm::APFloat::fltCategory, bool)"}, + {"_ZN4llvm7APFloatC1ERKNS_12fltSemanticsENS_9StringRefE", "llvm::APFloat::APFloat(llvm::fltSemantics const&, llvm::StringRef)"}, + {"_ZN4llvm7APFloatC2ERKNS_12fltSemanticsENS_9StringRefE", "llvm::APFloat::APFloat(llvm::fltSemantics const&, llvm::StringRef)"}, + {"_ZN4llvm7APFloat17convertFromStringENS_9StringRefENS0_12roundingModeE", "llvm::APFloat::convertFromString(llvm::StringRef, llvm::APFloat::roundingMode)"}, + {"_ZN4llvm7APFloatC1ERKS0_", "llvm::APFloat::APFloat(llvm::APFloat const&)"}, + {"_ZN4llvm7APFloatC2ERKS0_", "llvm::APFloat::APFloat(llvm::APFloat const&)"}, + {"_ZN4llvm7APFloatD2Ev", "llvm::APFloat::~APFloat()"}, + {"_ZNK4llvm7APFloat7ProfileERNS_16FoldingSetNodeIDE", "llvm::APFloat::Profile(llvm::FoldingSetNodeID&) const"}, + {"_ZNK4llvm7APFloat14bitcastToAPIntEv", "llvm::APFloat::bitcastToAPInt() const"}, + {"_ZN4llvm7APFloat18semanticsPrecisionERKNS_12fltSemanticsE", "llvm::APFloat::semanticsPrecision(llvm::fltSemantics const&)"}, + {"_ZN4llvm7APFloat20incrementSignificandEv", "llvm::APFloat::incrementSignificand()"}, + {"_ZN4llvm7APFloat14addSignificandERKS0_", "llvm::APFloat::addSignificand(llvm::APFloat const&)"}, + {"_ZN4llvm7APFloat19subtractSignificandERKS0_y", "llvm::APFloat::subtractSignificand(llvm::APFloat const&, unsigned long long)"}, + {"_ZN4llvm7APFloat19multiplySignificandERKS0_PS1_", "llvm::APFloat::multiplySignificand(llvm::APFloat const&, llvm::APFloat const*)"}, + {"_ZN4llvm7APFloat7convertERKNS_12fltSemanticsENS0_12roundingModeEPb", "llvm::APFloat::convert(llvm::fltSemantics const&, llvm::APFloat::roundingMode, bool*)"}, + {"_ZN4llvm7APFloat24addOrSubtractSignificandERKS0_b", "llvm::APFloat::addOrSubtractSignificand(llvm::APFloat const&, bool)"}, + {"_ZN4llvm7APFloat17divideSignificandERKS0_", "llvm::APFloat::divideSignificand(llvm::APFloat const&)"}, + {"_ZNK4llvm7APFloat14significandMSBEv", "llvm::APFloat::significandMSB() const"}, + {"_ZNK4llvm7APFloat14significandLSBEv", "llvm::APFloat::significandLSB() const"}, + {"_ZN4llvm7APFloat21shiftSignificandRightEj", "llvm::APFloat::shiftSignificandRight(unsigned int)"}, + {"_ZN4llvm7APFloat20shiftSignificandLeftEj", "llvm::APFloat::shiftSignificandLeft(unsigned int)"}, + {"_ZNK4llvm7APFloat20compareAbsoluteValueERKS0_", "llvm::APFloat::compareAbsoluteValue(llvm::APFloat const&) const"}, + {"_ZN4llvm7APFloat14handleOverflowENS0_12roundingModeE", "llvm::APFloat::handleOverflow(llvm::APFloat::roundingMode)"}, + {"_ZNK4llvm7APFloat17roundAwayFromZeroENS0_12roundingModeENS_12lostFractionEj", "llvm::APFloat::roundAwayFromZero(llvm::APFloat::roundingMode, llvm::lostFraction, unsigned int) const"}, + {"_ZN4llvm7APFloat21addOrSubtractSpecialsERKS0_b", "llvm::APFloat::addOrSubtractSpecials(llvm::APFloat const&, bool)"}, + {"_ZN4llvm7APFloat16multiplySpecialsERKS0_", "llvm::APFloat::multiplySpecials(llvm::APFloat const&)"}, + {"_ZN4llvm7APFloat14divideSpecialsERKS0_", "llvm::APFloat::divideSpecials(llvm::APFloat const&)"}, + {"_ZN4llvm7APFloat11modSpecialsERKS0_", "llvm::APFloat::modSpecials(llvm::APFloat const&)"}, + {"_ZN4llvm7APFloat10changeSignEv", "llvm::APFloat::changeSign()"}, + {"_ZN4llvm7APFloat9clearSignEv", "llvm::APFloat::clearSign()"}, + {"_ZN4llvm7APFloat8copySignERKS0_", "llvm::APFloat::copySign(llvm::APFloat const&)"}, + {"_ZN4llvm7APFloat13addOrSubtractERKS0_NS0_12roundingModeEb", "llvm::APFloat::addOrSubtract(llvm::APFloat const&, llvm::APFloat::roundingMode, bool)"}, + {"_ZN4llvm7APFloat3addERKS0_NS0_12roundingModeE", "llvm::APFloat::add(llvm::APFloat const&, llvm::APFloat::roundingMode)"}, + {"_ZN4llvm7APFloat8subtractERKS0_NS0_12roundingModeE", "llvm::APFloat::subtract(llvm::APFloat const&, llvm::APFloat::roundingMode)"}, + {"_ZN4llvm7APFloat8multiplyERKS0_NS0_12roundingModeE", "llvm::APFloat::multiply(llvm::APFloat const&, llvm::APFloat::roundingMode)"}, + {"_ZN4llvm7APFloat6divideERKS0_NS0_12roundingModeE", "llvm::APFloat::divide(llvm::APFloat const&, llvm::APFloat::roundingMode)"}, + {"_ZN4llvm7APFloat9remainderERKS0_", "llvm::APFloat::remainder(llvm::APFloat const&)"}, + {"_ZNK4llvm7APFloat16convertToIntegerEPyjbNS0_12roundingModeEPb", "llvm::APFloat::convertToInteger(unsigned long long*, unsigned int, bool, llvm::APFloat::roundingMode, bool*) const"}, + {"_ZN4llvm7APFloat30convertFromZeroExtendedIntegerEPKyjbNS0_12roundingModeE", "llvm::APFloat::convertFromZeroExtendedInteger(unsigned long long const*, unsigned int, bool, llvm::APFloat::roundingMode)"}, + {"_ZN4llvm7APFloat3modERKS0_NS0_12roundingModeE", "llvm::APFloat::mod(llvm::APFloat const&, llvm::APFloat::roundingMode)"}, + {"_ZN4llvm7APFloat16fusedMultiplyAddERKS0_S2_NS0_12roundingModeE", "llvm::APFloat::fusedMultiplyAdd(llvm::APFloat const&, llvm::APFloat const&, llvm::APFloat::roundingMode)"}, + {"_ZNK4llvm7APFloat7compareERKS0_", "llvm::APFloat::compare(llvm::APFloat const&) const"}, + {"_ZNK4llvm7APFloat28convertToSignExtendedIntegerEPyjbNS0_12roundingModeEPb", "llvm::APFloat::convertToSignExtendedInteger(unsigned long long*, unsigned int, bool, llvm::APFloat::roundingMode, bool*) const"}, + {"_ZN4llvm7APFloat24convertFromUnsignedPartsEPKyjNS0_12roundingModeE", "llvm::APFloat::convertFromUnsignedParts(unsigned long long const*, unsigned int, llvm::APFloat::roundingMode)"}, + {"_ZN4llvm7APFloat16convertFromAPIntERKNS_5APIntEbNS0_12roundingModeE", "llvm::APFloat::convertFromAPInt(llvm::APInt const&, bool, llvm::APFloat::roundingMode)"}, + {"_ZN4llvm7APFloat30convertFromSignExtendedIntegerEPKyjbNS0_12roundingModeE", "llvm::APFloat::convertFromSignExtendedInteger(unsigned long long const*, unsigned int, bool, llvm::APFloat::roundingMode)"}, + {"_ZN4llvm7APFloat28convertFromHexadecimalStringENS_9StringRefENS0_12roundingModeE", "llvm::APFloat::convertFromHexadecimalString(llvm::StringRef, llvm::APFloat::roundingMode)"}, + {"_ZN4llvm7APFloat28roundSignificandWithExponentEPKyjiNS0_12roundingModeE", "llvm::APFloat::roundSignificandWithExponent(unsigned long long const*, unsigned int, int, llvm::APFloat::roundingMode)"}, + {"_ZN4llvm7APFloat24convertFromDecimalStringENS_9StringRefENS0_12roundingModeE", "llvm::APFloat::convertFromDecimalString(llvm::StringRef, llvm::APFloat::roundingMode)"}, + {"_ZNK4llvm7APFloat18convertToHexStringEPcjbNS0_12roundingModeE", "llvm::APFloat::convertToHexString(char*, unsigned int, bool, llvm::APFloat::roundingMode) const"}, + {"_ZNK4llvm7APFloat24convertNormalToHexStringEPcjbNS0_12roundingModeE", "llvm::APFloat::convertNormalToHexString(char*, unsigned int, bool, llvm::APFloat::roundingMode) const"}, + {"_ZNK4llvm7APFloat12getHashValueEv", "llvm::APFloat::getHashValue() const"}, + {"_ZNK4llvm7APFloat34convertF80LongDoubleAPFloatToAPIntEv", "llvm::APFloat::convertF80LongDoubleAPFloatToAPInt() const"}, + {"_ZNK4llvm7APFloat36convertPPCDoubleDoubleAPFloatToAPIntEv", "llvm::APFloat::convertPPCDoubleDoubleAPFloatToAPInt() const"}, + {"_ZNK4llvm7APFloat30convertQuadrupleAPFloatToAPIntEv", "llvm::APFloat::convertQuadrupleAPFloatToAPInt() const"}, + {"_ZNK4llvm7APFloat27convertDoubleAPFloatToAPIntEv", "llvm::APFloat::convertDoubleAPFloatToAPInt() const"}, + {"_ZNK4llvm7APFloat26convertFloatAPFloatToAPIntEv", "llvm::APFloat::convertFloatAPFloatToAPInt() const"}, + {"_ZNK4llvm7APFloat25convertHalfAPFloatToAPIntEv", "llvm::APFloat::convertHalfAPFloatToAPInt() const"}, + {"_ZNK4llvm7APFloat14convertToFloatEv", "llvm::APFloat::convertToFloat() const"}, + {"_ZNK4llvm7APFloat15convertToDoubleEv", "llvm::APFloat::convertToDouble() const"}, + {"_ZN4llvm7APFloat26initFromF80LongDoubleAPIntERKNS_5APIntE", "llvm::APFloat::initFromF80LongDoubleAPInt(llvm::APInt const&)"}, + {"_ZN4llvm7APFloat28initFromPPCDoubleDoubleAPIntERKNS_5APIntE", "llvm::APFloat::initFromPPCDoubleDoubleAPInt(llvm::APInt const&)"}, + {"_ZN4llvm7APFloat22initFromQuadrupleAPIntERKNS_5APIntE", "llvm::APFloat::initFromQuadrupleAPInt(llvm::APInt const&)"}, + {"_ZN4llvm7APFloat19initFromDoubleAPIntERKNS_5APIntE", "llvm::APFloat::initFromDoubleAPInt(llvm::APInt const&)"}, + {"_ZN4llvm7APFloat18initFromFloatAPIntERKNS_5APIntE", "llvm::APFloat::initFromFloatAPInt(llvm::APInt const&)"}, + {"_ZN4llvm7APFloat17initFromHalfAPIntERKNS_5APIntE", "llvm::APFloat::initFromHalfAPInt(llvm::APInt const&)"}, + {"_ZN4llvm7APFloat13initFromAPIntERKNS_5APIntEb", "llvm::APFloat::initFromAPInt(llvm::APInt const&, bool)"}, + {"_ZN4llvm7APFloat10getLargestERKNS_12fltSemanticsEb", "llvm::APFloat::getLargest(llvm::fltSemantics const&, bool)"}, + {"_ZN4llvm7APFloat11getSmallestERKNS_12fltSemanticsEb", "llvm::APFloat::getSmallest(llvm::fltSemantics const&, bool)"}, + {"_ZN4llvm7APFloat21getSmallestNormalizedERKNS_12fltSemanticsEb", "llvm::APFloat::getSmallestNormalized(llvm::fltSemantics const&, bool)"}, + {"_ZN4llvm7APFloatC1ERKNS_5APIntEb", "llvm::APFloat::APFloat(llvm::APInt const&, bool)"}, + {"_ZN4llvm7APFloatC2ERKNS_5APIntEb", "llvm::APFloat::APFloat(llvm::APInt const&, bool)"}, + {"_ZN4llvm7APFloatC1Ef", "llvm::APFloat::APFloat(float)"}, + {"_ZN4llvm7APFloatC2Ef", "llvm::APFloat::APFloat(float)"}, + {"_ZN4llvm7APFloatC1Ed", "llvm::APFloat::APFloat(double)"}, + {"_ZN4llvm7APFloatC2Ed", "llvm::APFloat::APFloat(double)"}, + + // {"_ZN4llvm7APFloatC1EDF16_", + // "llvm::APFloat::APFloat(_Float16)"}, + // got error + + + // {"_ZN4llvm7APFloatC2EDF16_", + // "llvm::APFloat::APFloat(_Float16)"}, + // got error + + {"_ZNK4llvm7APFloat8toStringERNS_15SmallVectorImplIcEEjj", "llvm::APFloat::toString(llvm::SmallVectorImpl&, unsigned int, unsigned int) const"}, + {"_ZNK4llvm5APIntngEv", "llvm::APInt::operator-() const"}, + {"_ZN4llvm5APIntlSEj", "llvm::APInt::operator<<=(unsigned int)"}, + {"_ZN4llvm5APInt12initSlowCaseEjyb", "llvm::APInt::initSlowCase(unsigned int, unsigned long long, bool)"}, + {"_ZN4llvm5APInt12initSlowCaseERKS0_", "llvm::APInt::initSlowCase(llvm::APInt const&)"}, + {"_ZN4llvm5APIntC1EjjPKy", "llvm::APInt::APInt(unsigned int, unsigned int, unsigned long long const*)"}, + {"_ZN4llvm5APIntC2EjjPKy", "llvm::APInt::APInt(unsigned int, unsigned int, unsigned long long const*)"}, + {"_ZN4llvm5APIntC1EjNS_9StringRefEh", "llvm::APInt::APInt(unsigned int, llvm::StringRef, unsigned char)"}, + {"_ZN4llvm5APIntC2EjNS_9StringRefEh", "llvm::APInt::APInt(unsigned int, llvm::StringRef, unsigned char)"}, + {"_ZN4llvm5APInt10fromStringEjNS_9StringRefEh", "llvm::APInt::fromString(unsigned int, llvm::StringRef, unsigned char)"}, + {"_ZN4llvm5APInt14AssignSlowCaseERKS0_", "llvm::APInt::AssignSlowCase(llvm::APInt const&)"}, + {"_ZN4llvm5APIntaSEy", "llvm::APInt::operator=(unsigned long long)"}, + {"_ZNK4llvm5APInt7ProfileERNS_16FoldingSetNodeIDE", "llvm::APInt::Profile(llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm5APIntppEv", "llvm::APInt::operator++()"}, + {"_ZN4llvm5APIntmmEv", "llvm::APInt::operator--()"}, + {"_ZN4llvm5APIntpLERKS0_", "llvm::APInt::operator+=(llvm::APInt const&)"}, + {"_ZN4llvm5APIntmIERKS0_", "llvm::APInt::operator-=(llvm::APInt const&)"}, + {"_ZN4llvm5APIntmLERKS0_", "llvm::APInt::operator*=(llvm::APInt const&)"}, + {"_ZN4llvm5APIntaNERKS0_", "llvm::APInt::operator&=(llvm::APInt const&)"}, + {"_ZN4llvm5APIntoRERKS0_", "llvm::APInt::operator|=(llvm::APInt const&)"}, + {"_ZN4llvm5APInteOERKS0_", "llvm::APInt::operator^=(llvm::APInt const&)"}, + {"_ZNK4llvm5APInt11AndSlowCaseERKS0_", "llvm::APInt::AndSlowCase(llvm::APInt const&) const"}, + {"_ZNK4llvm5APInt10OrSlowCaseERKS0_", "llvm::APInt::OrSlowCase(llvm::APInt const&) const"}, + {"_ZNK4llvm5APInt11XorSlowCaseERKS0_", "llvm::APInt::XorSlowCase(llvm::APInt const&) const"}, + {"_ZNK4llvm5APIntntEv", "llvm::APInt::operator!() const"}, + {"_ZNK4llvm5APIntmlERKS0_", "llvm::APInt::operator*(llvm::APInt const&) const"}, + {"_ZNK4llvm5APIntplERKS0_", "llvm::APInt::operator+(llvm::APInt const&) const"}, + {"_ZNK4llvm5APIntmiERKS0_", "llvm::APInt::operator-(llvm::APInt const&) const"}, + {"_ZNK4llvm5APIntixEj", "llvm::APInt::operator[](unsigned int) const"}, + {"_ZNK4llvm5APInt13EqualSlowCaseERKS0_", "llvm::APInt::EqualSlowCase(llvm::APInt const&) const"}, + {"_ZNK4llvm5APInt13EqualSlowCaseEy", "llvm::APInt::EqualSlowCase(unsigned long long) const"}, + {"_ZNK4llvm5APInt3ultERKS0_", "llvm::APInt::ult(llvm::APInt const&) const"}, + {"_ZNK4llvm5APInt3sltERKS0_", "llvm::APInt::slt(llvm::APInt const&) const"}, + {"_ZN4llvm5APInt6setBitEj", "llvm::APInt::setBit(unsigned int)"}, + {"_ZN4llvm5APInt8clearBitEj", "llvm::APInt::clearBit(unsigned int)"}, + {"_ZN4llvm5APInt7flipBitEj", "llvm::APInt::flipBit(unsigned int)"}, + {"_ZN4llvm5APInt13getBitsNeededENS_9StringRefEh", "llvm::APInt::getBitsNeeded(llvm::StringRef, unsigned char)"}, + {"_ZNK4llvm5APInt12getHashValueEv", "llvm::APInt::getHashValue() const"}, + {"_ZNK4llvm5APInt9getHiBitsEj", "llvm::APInt::getHiBits(unsigned int) const"}, + {"_ZNK4llvm5APInt9getLoBitsEj", "llvm::APInt::getLoBits(unsigned int) const"}, + {"_ZNK4llvm5APInt25countLeadingZerosSlowCaseEv", "llvm::APInt::countLeadingZerosSlowCase() const"}, + {"_ZNK4llvm5APInt16countLeadingOnesEv", "llvm::APInt::countLeadingOnes() const"}, + {"_ZNK4llvm5APInt18countTrailingZerosEv", "llvm::APInt::countTrailingZeros() const"}, + {"_ZNK4llvm5APInt25countTrailingOnesSlowCaseEv", "llvm::APInt::countTrailingOnesSlowCase() const"}, + {"_ZNK4llvm5APInt23countPopulationSlowCaseEv", "llvm::APInt::countPopulationSlowCase() const"}, + {"_ZNK4llvm5APInt8byteSwapEv", "llvm::APInt::byteSwap() const"}, + + // {"_ZN4llvm8APIntOps21GreatestCommonDivisorERKNS_5APIntES3_", + // "llvm::APIntOps::GreatestCommonDivisor(llvm::APInt const&, llvm::APInt const&)"}, + // got error + + {"_ZN4llvm8APIntOps18RoundDoubleToAPIntEdj", "llvm::APIntOps::RoundDoubleToAPInt(double, unsigned int)"}, + {"_ZNK4llvm5APInt13roundToDoubleEb", "llvm::APInt::roundToDouble(bool) const"}, + {"_ZNK4llvm5APInt5truncEj", "llvm::APInt::trunc(unsigned int) const"}, + {"_ZNK4llvm5APInt4sextEj", "llvm::APInt::sext(unsigned int) const"}, + {"_ZNK4llvm5APInt4zextEj", "llvm::APInt::zext(unsigned int) const"}, + {"_ZNK4llvm5APInt11zextOrTruncEj", "llvm::APInt::zextOrTrunc(unsigned int) const"}, + {"_ZNK4llvm5APInt11sextOrTruncEj", "llvm::APInt::sextOrTrunc(unsigned int) const"}, + {"_ZNK4llvm5APInt4ashrERKS0_", "llvm::APInt::ashr(llvm::APInt const&) const"}, + {"_ZNK4llvm5APInt4ashrEj", "llvm::APInt::ashr(unsigned int) const"}, + {"_ZNK4llvm5APInt4lshrERKS0_", "llvm::APInt::lshr(llvm::APInt const&) const"}, + {"_ZNK4llvm5APInt4lshrEj", "llvm::APInt::lshr(unsigned int) const"}, + {"_ZNK4llvm5APInt3shlERKS0_", "llvm::APInt::shl(llvm::APInt const&) const"}, + {"_ZNK4llvm5APInt11shlSlowCaseEj", "llvm::APInt::shlSlowCase(unsigned int) const"}, + {"_ZNK4llvm5APInt4rotlERKS0_", "llvm::APInt::rotl(llvm::APInt const&) const"}, + {"_ZNK4llvm5APInt4rotlEj", "llvm::APInt::rotl(unsigned int) const"}, + {"_ZNK4llvm5APInt4rotrERKS0_", "llvm::APInt::rotr(llvm::APInt const&) const"}, + {"_ZNK4llvm5APInt4rotrEj", "llvm::APInt::rotr(unsigned int) const"}, + {"_ZNK4llvm5APInt4sqrtEv", "llvm::APInt::sqrt() const"}, + {"_ZNK4llvm5APInt4udivERKS0_", "llvm::APInt::udiv(llvm::APInt const&) const"}, + {"_ZNK4llvm5APInt21multiplicativeInverseERKS0_", "llvm::APInt::multiplicativeInverse(llvm::APInt const&) const"}, + {"_ZN4llvm5APInt7udivremERKS0_S2_RS0_S3_", "llvm::APInt::udivrem(llvm::APInt const&, llvm::APInt const&, llvm::APInt&, llvm::APInt&)"}, + {"_ZNK4llvm5APInt5magicEv", "llvm::APInt::magic() const"}, + {"_ZNK4llvm5APInt4uremERKS0_", "llvm::APInt::urem(llvm::APInt const&) const"}, + {"_ZNK4llvm5APInt6magicuEv", "llvm::APInt::magicu() const"}, + {"_ZN4llvm5APInt6divideES0_jRKS0_jPS0_S3_", "llvm::APInt::divide(llvm::APInt, unsigned int, llvm::APInt const&, unsigned int, llvm::APInt*, llvm::APInt*)"}, + {"_ZNK4llvm5APInt7sadd_ovERKS0_Rb", "llvm::APInt::sadd_ov(llvm::APInt const&, bool&) const"}, + {"_ZNK4llvm5APInt7uadd_ovERKS0_Rb", "llvm::APInt::uadd_ov(llvm::APInt const&, bool&) const"}, + {"_ZNK4llvm5APInt7ssub_ovERKS0_Rb", "llvm::APInt::ssub_ov(llvm::APInt const&, bool&) const"}, + {"_ZNK4llvm5APInt7usub_ovERKS0_Rb", "llvm::APInt::usub_ov(llvm::APInt const&, bool&) const"}, + {"_ZNK4llvm5APInt7sdiv_ovERKS0_Rb", "llvm::APInt::sdiv_ov(llvm::APInt const&, bool&) const"}, + {"_ZNK4llvm5APInt7smul_ovERKS0_Rb", "llvm::APInt::smul_ov(llvm::APInt const&, bool&) const"}, + {"_ZNK4llvm5APInt7sshl_ovEjRb", "llvm::APInt::sshl_ov(unsigned int, bool&) const"}, + {"_ZNK4llvm5APInt8toStringERNS_15SmallVectorImplIcEEjb", "llvm::APInt::toString(llvm::SmallVectorImpl&, unsigned int, bool) const"}, + {"_ZNK4llvm5APInt8toStringEjb", "llvm::APInt::toString(unsigned int, bool) const"}, + {"_ZNK4llvm5APInt4dumpEv", "llvm::APInt::dump() const"}, + {"_ZNK4llvm5APInt5printERNS_11raw_ostreamEb", "llvm::APInt::print(llvm::raw_ostream&, bool) const"}, + {"_ZN4llvm5APInt5tcSetEPyyj", "llvm::APInt::tcSet(unsigned long long*, unsigned long long, unsigned int)"}, + {"_ZN4llvm5APInt8tcAssignEPyPKyj", "llvm::APInt::tcAssign(unsigned long long*, unsigned long long const*, unsigned int)"}, + {"_ZN4llvm5APInt8tcIsZeroEPKyj", "llvm::APInt::tcIsZero(unsigned long long const*, unsigned int)"}, + {"_ZN4llvm5APInt12tcExtractBitEPKyj", "llvm::APInt::tcExtractBit(unsigned long long const*, unsigned int)"}, + {"_ZN4llvm5APInt8tcSetBitEPyj", "llvm::APInt::tcSetBit(unsigned long long*, unsigned int)"}, + {"_ZN4llvm5APInt10tcClearBitEPyj", "llvm::APInt::tcClearBit(unsigned long long*, unsigned int)"}, + {"_ZN4llvm5APInt5tcLSBEPKyj", "llvm::APInt::tcLSB(unsigned long long const*, unsigned int)"}, + {"_ZN4llvm5APInt5tcMSBEPKyj", "llvm::APInt::tcMSB(unsigned long long const*, unsigned int)"}, + {"_ZN4llvm5APInt9tcExtractEPyjPKyjj", "llvm::APInt::tcExtract(unsigned long long*, unsigned int, unsigned long long const*, unsigned int, unsigned int)"}, + {"_ZN4llvm5APInt12tcShiftRightEPyjj", "llvm::APInt::tcShiftRight(unsigned long long*, unsigned int, unsigned int)"}, + {"_ZN4llvm5APInt5tcAddEPyPKyyj", "llvm::APInt::tcAdd(unsigned long long*, unsigned long long const*, unsigned long long, unsigned int)"}, + {"_ZN4llvm5APInt10tcSubtractEPyPKyyj", "llvm::APInt::tcSubtract(unsigned long long*, unsigned long long const*, unsigned long long, unsigned int)"}, + {"_ZN4llvm5APInt8tcNegateEPyj", "llvm::APInt::tcNegate(unsigned long long*, unsigned int)"}, + {"_ZN4llvm5APInt12tcComplementEPyj", "llvm::APInt::tcComplement(unsigned long long*, unsigned int)"}, + {"_ZN4llvm5APInt11tcIncrementEPyj", "llvm::APInt::tcIncrement(unsigned long long*, unsigned int)"}, + {"_ZN4llvm5APInt14tcMultiplyPartEPyPKyyyjjb", "llvm::APInt::tcMultiplyPart(unsigned long long*, unsigned long long const*, unsigned long long, unsigned long long, unsigned int, unsigned int, bool)"}, + {"_ZN4llvm5APInt10tcMultiplyEPyPKyS3_j", "llvm::APInt::tcMultiply(unsigned long long*, unsigned long long const*, unsigned long long const*, unsigned int)"}, + {"_ZN4llvm5APInt14tcFullMultiplyEPyPKyS3_jj", "llvm::APInt::tcFullMultiply(unsigned long long*, unsigned long long const*, unsigned long long const*, unsigned int, unsigned int)"}, + {"_ZN4llvm5APInt8tcDivideEPyPKyS1_S1_j", "llvm::APInt::tcDivide(unsigned long long*, unsigned long long const*, unsigned long long*, unsigned long long*, unsigned int)"}, + {"_ZN4llvm5APInt11tcShiftLeftEPyjj", "llvm::APInt::tcShiftLeft(unsigned long long*, unsigned int, unsigned int)"}, + {"_ZN4llvm5APInt9tcCompareEPKyS2_j", "llvm::APInt::tcCompare(unsigned long long const*, unsigned long long const*, unsigned int)"}, + {"_ZN4llvm5APInt5tcAndEPyPKyj", "llvm::APInt::tcAnd(unsigned long long*, unsigned long long const*, unsigned int)"}, + {"_ZN4llvm5APInt4tcOrEPyPKyj", "llvm::APInt::tcOr(unsigned long long*, unsigned long long const*, unsigned int)"}, + {"_ZN4llvm5APInt5tcXorEPyPKyj", "llvm::APInt::tcXor(unsigned long long*, unsigned long long const*, unsigned int)"}, + {"_ZN4llvm5APInt25tcSetLeastSignificantBitsEPyjj", "llvm::APInt::tcSetLeastSignificantBits(unsigned long long*, unsigned int, unsigned int)"}, + {"_ZN4llvm5APIntppEi", "llvm::APInt::operator++(int)"}, + {"_ZNK4llvm5APInt3absEv", "llvm::APInt::abs() const"}, + {"_ZNK4llvm5APInteqERKS0_", "llvm::APInt::operator==(llvm::APInt const&) const"}, + {"_ZNK4llvm5APInt16isMinSignedValueEv", "llvm::APInt::isMinSignedValue() const"}, + {"_ZNK4llvm5APInt4sdivERKS0_", "llvm::APInt::sdiv(llvm::APInt const&) const"}, + {"_ZNK4llvm5APInt17countLeadingZerosEv", "llvm::APInt::countLeadingZeros() const"}, + {"_ZN4llvm5APIntmmEi", "llvm::APInt::operator--(int)"}, + {"_ZN4llvm5APIntC2Ejyb", "llvm::APInt::APInt(unsigned int, unsigned long long, bool)"}, + {"_ZNK4llvm6APSInt7ProfileERNS_16FoldingSetNodeIDE", "llvm::APSInt::Profile(llvm::FoldingSetNodeID&) const"}, + {"_ZN4llvm16BumpPtrAllocatorC1EmmRNS_13SlabAllocatorE", "llvm::BumpPtrAllocator::BumpPtrAllocator(unsigned long, unsigned long, llvm::SlabAllocator&)"}, + {"_ZN4llvm16BumpPtrAllocatorC2EmmRNS_13SlabAllocatorE", "llvm::BumpPtrAllocator::BumpPtrAllocator(unsigned long, unsigned long, llvm::SlabAllocator&)"}, + {"_ZN4llvm16BumpPtrAllocatorD1Ev", "llvm::BumpPtrAllocator::~BumpPtrAllocator()"}, + {"_ZN4llvm16BumpPtrAllocatorD2Ev", "llvm::BumpPtrAllocator::~BumpPtrAllocator()"}, + {"_ZN4llvm16BumpPtrAllocator15DeallocateSlabsEPNS_7MemSlabE", "llvm::BumpPtrAllocator::DeallocateSlabs(llvm::MemSlab*)"}, + {"_ZN4llvm16BumpPtrAllocator8AlignPtrEPcm", "llvm::BumpPtrAllocator::AlignPtr(char*, unsigned long)"}, + {"_ZN4llvm16BumpPtrAllocator12StartNewSlabEv", "llvm::BumpPtrAllocator::StartNewSlab()"}, + {"_ZN4llvm16BumpPtrAllocator5ResetEv", "llvm::BumpPtrAllocator::Reset()"}, + {"_ZN4llvm16BumpPtrAllocator8AllocateEmm", "llvm::BumpPtrAllocator::Allocate(unsigned long, unsigned long)"}, + {"_ZNK4llvm16BumpPtrAllocator11GetNumSlabsEv", "llvm::BumpPtrAllocator::GetNumSlabs() const"}, + {"_ZNK4llvm16BumpPtrAllocator10PrintStatsEv", "llvm::BumpPtrAllocator::PrintStats() const"}, + {"_ZN4llvm19MallocSlabAllocatorD1Ev", "llvm::MallocSlabAllocator::~MallocSlabAllocator()"}, + {"_ZN4llvm13SlabAllocatorD0Ev", "llvm::SlabAllocator::~SlabAllocator()"}, + {"_ZN4llvm13SlabAllocatorD1Ev", "llvm::SlabAllocator::~SlabAllocator()"}, + {"_ZN4llvm13SlabAllocatorD2Ev", "llvm::SlabAllocator::~SlabAllocator()"}, + {"_ZN4llvm19MallocSlabAllocatorD0Ev", "llvm::MallocSlabAllocator::~MallocSlabAllocator()"}, + {"_ZN4llvm19MallocSlabAllocatorD2Ev", "llvm::MallocSlabAllocator::~MallocSlabAllocator()"}, + {"_ZN4llvm19MallocSlabAllocator8AllocateEm", "llvm::MallocSlabAllocator::Allocate(unsigned long)"}, + {"_ZN4llvm19MallocSlabAllocator10DeallocateEPNS_7MemSlabE", "llvm::MallocSlabAllocator::Deallocate(llvm::MemSlab*)"}, + {"_ZN4llvm18PrintRecyclerStatsEmmm", "llvm::PrintRecyclerStats(unsigned long, unsigned long, unsigned long)"}, + {"_ZN4llvm3sys14CompareAndSwapEPVjjj", "llvm::sys::CompareAndSwap(unsigned int volatile*, unsigned int, unsigned int)"}, + {"_ZN4llvm3sys15AtomicIncrementEPVj", "llvm::sys::AtomicIncrement(unsigned int volatile*)"}, + {"_ZN4llvm3sys15AtomicDecrementEPVj", "llvm::sys::AtomicDecrement(unsigned int volatile*)"}, + {"_ZN4llvm3sys9AtomicAddEPVjj", "llvm::sys::AtomicAdd(unsigned int volatile*, unsigned int)"}, + {"_ZN4llvm3sys9AtomicMulEPVjj", "llvm::sys::AtomicMul(unsigned int volatile*, unsigned int)"}, + {"_ZN4llvm3sys9AtomicDivEPVjj", "llvm::sys::AtomicDiv(unsigned int volatile*, unsigned int)"}, + {"_ZN4llvm2cl6parserIjE5parseERNS0_6OptionENS_9StringRefES5_Rj", "llvm::cl::parser::parse(llvm::cl::Option&, llvm::StringRef, llvm::StringRef, unsigned int&)"}, + {"_ZNK4llvm2cl17basic_parser_impl14getOptionWidthERKNS0_6OptionE", "llvm::cl::basic_parser_impl::getOptionWidth(llvm::cl::Option const&) const"}, + {"_ZNK4llvm2cl17basic_parser_impl15printOptionInfoERKNS0_6OptionEm", "llvm::cl::basic_parser_impl::printOptionInfo(llvm::cl::Option const&, unsigned long) const"}, + {"_ZN4llvm2cl6parserIiE5parseERNS0_6OptionENS_9StringRefES5_Ri", "llvm::cl::parser::parse(llvm::cl::Option&, llvm::StringRef, llvm::StringRef, int&)"}, + {"_ZN4llvm2cl6parserIbE5parseERNS0_6OptionENS_9StringRefES5_Rb", "llvm::cl::parser::parse(llvm::cl::Option&, llvm::StringRef, llvm::StringRef, bool&)"}, + {"_ZN4llvm2cl6Option6anchorEv", "llvm::cl::Option::anchor()"}, + {"_ZN4llvm2cl17basic_parser_impl6anchorEv", "llvm::cl::basic_parser_impl::anchor()"}, + {"_ZN4llvm2cl6parserIbE6anchorEv", "llvm::cl::parser::anchor()"}, + {"_ZN4llvm2cl6parserINS0_13boolOrDefaultEE6anchorEv", "llvm::cl::parser::anchor()"}, + {"_ZN4llvm2cl6parserIiE6anchorEv", "llvm::cl::parser::anchor()"}, + {"_ZN4llvm2cl6parserIjE6anchorEv", "llvm::cl::parser::anchor()"}, + {"_ZN4llvm2cl6parserIdE6anchorEv", "llvm::cl::parser::anchor()"}, + {"_ZN4llvm2cl6parserIfE6anchorEv", "llvm::cl::parser::anchor()"}, + {"_ZN4llvm2cl6parserISsE6anchorEv", "llvm::cl::parser::anchor()"}, + {"_ZN4llvm2cl6parserIcE6anchorEv", "llvm::cl::parser::anchor()"}, + {"_ZN4llvm2cl9extrahelpC1EPKc", "llvm::cl::extrahelp::extrahelp(char const*)"}, + {"_ZN4llvm2cl9extrahelpC2EPKc", "llvm::cl::extrahelp::extrahelp(char const*)"}, + {"_ZN4llvm2cl23ParseEnvironmentOptionsEPKcS2_S2_b", "llvm::cl::ParseEnvironmentOptions(char const*, char const*, char const*, bool)"}, + {"_Z18ParseCStringVectorRSt6vectorIPcSaIS0_EEPKc", "ParseCStringVector(std::vector>&, char const*)"}, + {"_ZN4llvm2cl23ParseCommandLineOptionsEiPPcPKcb", "llvm::cl::ParseCommandLineOptions(int, char**, char const*, bool)"}, + {"_Z13GetOptionInfoRN4llvm15SmallVectorImplIPNS_2cl6OptionEEES5_RNS_9StringMapIS3_NS_15MallocAllocatorEEE", "GetOptionInfo(llvm::SmallVectorImpl&, llvm::SmallVectorImpl&, llvm::StringMap&)"}, + {"_ZN4llvm2cl6Option5errorERKNS_5TwineENS_9StringRefE", "llvm::cl::Option::error(llvm::Twine const&, llvm::StringRef)"}, + {"_Z12LookupOptionRN4llvm9StringRefES1_RKNS_9StringMapIPNS_2cl6OptionENS_15MallocAllocatorEEE", "LookupOption(llvm::StringRef&, llvm::StringRef&, llvm::StringMap const&)"}, + {"_ZN4llvm2cl6Option13addOccurrenceEjNS_9StringRefES2_b", "llvm::cl::Option::addOccurrence(unsigned int, llvm::StringRef, llvm::StringRef, bool)"}, + {"_Z13ProvideOptionPN4llvm2cl6OptionENS_9StringRefES3_iPPcRi", "ProvideOption(llvm::cl::Option*, llvm::StringRef, llvm::StringRef, int, char**, int&)"}, + {"_ZNK4llvm2cl5alias14getOptionWidthEv", "llvm::cl::alias::getOptionWidth() const"}, + {"_ZNK4llvm2cl5alias15printOptionInfoEm", "llvm::cl::alias::printOptionInfo(unsigned long) const"}, + {"_ZN4llvm2cl6parserINS0_13boolOrDefaultEE5parseERNS0_6OptionENS_9StringRefES6_RS2_", "llvm::cl::parser::parse(llvm::cl::Option&, llvm::StringRef, llvm::StringRef, llvm::cl::boolOrDefault&)"}, + {"_ZN4llvm2cl6parserIdE5parseERNS0_6OptionENS_9StringRefES5_Rd", "llvm::cl::parser::parse(llvm::cl::Option&, llvm::StringRef, llvm::StringRef, double&)"}, + {"_Z11parseDoubleRN4llvm2cl6OptionENS_9StringRefERd", "parseDouble(llvm::cl::Option&, llvm::StringRef, double&)"}, + {"_ZN4llvm2cl6parserIfE5parseERNS0_6OptionENS_9StringRefES5_Rf", "llvm::cl::parser::parse(llvm::cl::Option&, llvm::StringRef, llvm::StringRef, float&)"}, + {"_ZN4llvm2cl19generic_parser_base10findOptionEPKc", "llvm::cl::generic_parser_base::findOption(char const*)"}, + {"_ZNK4llvm2cl19generic_parser_base14getOptionWidthERKNS0_6OptionE", "llvm::cl::generic_parser_base::getOptionWidth(llvm::cl::Option const&) const"}, + {"_ZNK4llvm2cl19generic_parser_base15printOptionInfoERKNS0_6OptionEm", "llvm::cl::generic_parser_base::printOptionInfo(llvm::cl::Option const&, unsigned long) const"}, + {"_ZN4llvm2cl3optIN12_GLOBAL__N_111HelpPrinterELb1ENS0_6parserIbEEED1Ev", "llvm::cl::opt<(anonymous namespace)::HelpPrinter, true, llvm::cl::parser>::~opt()"}, + {"_ZN4llvm2cl3optIN12_GLOBAL__N_114VersionPrinterELb1ENS0_6parserIbEEED1Ev", "llvm::cl::opt<(anonymous namespace)::VersionPrinter, true, llvm::cl::parser>::~opt()"}, + {"_ZN4llvm2cl16PrintHelpMessageEv", "llvm::cl::PrintHelpMessage()"}, + {"_ZN12_GLOBAL__N_111HelpPrinteraSEb", "(anonymous namespace)::HelpPrinter::operator=(bool)"}, + {"_ZN4llvm2cl19PrintVersionMessageEv", "llvm::cl::PrintVersionMessage()"}, + {"_ZN12_GLOBAL__N_114VersionPrinter5printEv", "(anonymous namespace)::VersionPrinter::print()"}, + {"_ZN4llvm2cl17SetVersionPrinterEPFvvE", "llvm::cl::SetVersionPrinter(void (*)())"}, + {"_ZN4llvm2cl3optIN12_GLOBAL__N_114VersionPrinterELb1ENS0_6parserIbEEE16handleOccurrenceEjNS_9StringRefES7_", "llvm::cl::opt<(anonymous namespace)::VersionPrinter, true, llvm::cl::parser>::handleOccurrence(unsigned int, llvm::StringRef, llvm::StringRef)"}, + {"_ZNK4llvm2cl3optIN12_GLOBAL__N_114VersionPrinterELb1ENS0_6parserIbEEE27getValueExpectedFlagDefaultEv", "llvm::cl::opt<(anonymous namespace)::VersionPrinter, true, llvm::cl::parser>::getValueExpectedFlagDefault() const"}, + {"_ZNK4llvm2cl3optIN12_GLOBAL__N_114VersionPrinterELb1ENS0_6parserIbEEE14getOptionWidthEv", "llvm::cl::opt<(anonymous namespace)::VersionPrinter, true, llvm::cl::parser>::getOptionWidth() const"}, + {"_ZNK4llvm2cl3optIN12_GLOBAL__N_114VersionPrinterELb1ENS0_6parserIbEEE15printOptionInfoEm", "llvm::cl::opt<(anonymous namespace)::VersionPrinter, true, llvm::cl::parser>::printOptionInfo(unsigned long) const"}, + {"_ZN4llvm2cl3optIN12_GLOBAL__N_114VersionPrinterELb1ENS0_6parserIbEEE19getExtraOptionNamesERNS_15SmallVectorImplIPKcEE", "llvm::cl::opt<(anonymous namespace)::VersionPrinter, true, llvm::cl::parser>::getExtraOptionNames(llvm::SmallVectorImpl&)"}, + {"_ZN4llvm2cl3optIN12_GLOBAL__N_114VersionPrinterELb1ENS0_6parserIbEEED0Ev", "llvm::cl::opt<(anonymous namespace)::VersionPrinter, true, llvm::cl::parser>::~opt()"}, + {"_ZN4llvm2cl3optIN12_GLOBAL__N_111HelpPrinterELb1ENS0_6parserIbEEE16handleOccurrenceEjNS_9StringRefES7_", "llvm::cl::opt<(anonymous namespace)::HelpPrinter, true, llvm::cl::parser>::handleOccurrence(unsigned int, llvm::StringRef, llvm::StringRef)"}, + {"_ZNK4llvm2cl3optIN12_GLOBAL__N_111HelpPrinterELb1ENS0_6parserIbEEE27getValueExpectedFlagDefaultEv", "llvm::cl::opt<(anonymous namespace)::HelpPrinter, true, llvm::cl::parser>::getValueExpectedFlagDefault() const"}, + {"_ZNK4llvm2cl3optIN12_GLOBAL__N_111HelpPrinterELb1ENS0_6parserIbEEE14getOptionWidthEv", "llvm::cl::opt<(anonymous namespace)::HelpPrinter, true, llvm::cl::parser>::getOptionWidth() const"}, + {"_ZNK4llvm2cl3optIN12_GLOBAL__N_111HelpPrinterELb1ENS0_6parserIbEEE15printOptionInfoEm", "llvm::cl::opt<(anonymous namespace)::HelpPrinter, true, llvm::cl::parser>::printOptionInfo(unsigned long) const"}, + {"_ZN4llvm2cl3optIN12_GLOBAL__N_111HelpPrinterELb1ENS0_6parserIbEEE19getExtraOptionNamesERNS_15SmallVectorImplIPKcEE", "llvm::cl::opt<(anonymous namespace)::HelpPrinter, true, llvm::cl::parser>::getExtraOptionNames(llvm::SmallVectorImpl&)"}, + {"_ZN4llvm2cl3optIN12_GLOBAL__N_111HelpPrinterELb1ENS0_6parserIbEEED0Ev", "llvm::cl::opt<(anonymous namespace)::HelpPrinter, true, llvm::cl::parser>::~opt()"}, + {"_Z17TargetArraySortFnPKvS0_", "TargetArraySortFn(void const*, void const*)"}, + {"_Z14OptNameComparePKvS0_", "OptNameCompare(void const*, void const*)"}, + {"_Z28CommaSeparateAndAddOccurencePN4llvm2cl6OptionEjNS_9StringRefES3_b", "CommaSeparateAndAddOccurence(llvm::cl::Option*, unsigned int, llvm::StringRef, llvm::StringRef, bool)"}, + + // {"_Z13getOptionPredN4llvm9StringRefERmPFbPKNS_2cl6OptionEERKNS_9StringMapIPS3_NS_15MallocAllocatorEEE", + // "getOptionPred(llvm::StringRef, unsigned long&, bool (*)(llvm::cl::Option const*), llvm::StringMap const&)"}, + // "getOptionPred(llvm::StringRef, unsigned long&, bool (*)(llvm::cl::Option*), llvm::StringMap const&)" was returned + + {"_Z20isPrefixedOrGroupingPKN4llvm2cl6OptionE", "isPrefixedOrGrouping(llvm::cl::Option const*)"}, + {"_Z10isGroupingPKN4llvm2cl6OptionE", "isGrouping(llvm::cl::Option const*)"}, + {"_ZN4llvm2cl3optIjLb0ENS0_6parserIjEEE16handleOccurrenceEjNS_9StringRefES5_", "llvm::cl::opt>::handleOccurrence(unsigned int, llvm::StringRef, llvm::StringRef)"}, + {"_ZNK4llvm2cl3optIjLb0ENS0_6parserIjEEE27getValueExpectedFlagDefaultEv", "llvm::cl::opt>::getValueExpectedFlagDefault() const"}, + {"_ZN4llvm2cl3optIjLb0ENS0_6parserIjEEE19getExtraOptionNamesERNS_15SmallVectorImplIPKcEE", "llvm::cl::opt>::getExtraOptionNames(llvm::SmallVectorImpl&)"}, + {"_ZNK4llvm2cl3optIjLb0ENS0_6parserIjEEE14getOptionWidthEv", "llvm::cl::opt>::getOptionWidth() const"}, + {"_ZNK4llvm2cl3optIjLb0ENS0_6parserIjEEE15printOptionInfoEm", "llvm::cl::opt>::printOptionInfo(unsigned long) const"}, + {"_ZN4llvm2cl3optIjLb0ENS0_6parserIjEEE4doneEv", "llvm::cl::opt>::done()"}, + {"_ZN4llvm2cl3optIjLb0ENS0_6parserIjEEE15setInitialValueERKj", "llvm::cl::opt>::setInitialValue(unsigned int const&)"}, + {"_ZN4llvm2cl3optIjLb0ENS0_6parserIjEEE9getParserEv", "llvm::cl::opt>::getParser()"}, + {"_ZN4llvm2cl3optIiLb0ENS0_6parserIiEEE16handleOccurrenceEjNS_9StringRefES5_", "llvm::cl::opt>::handleOccurrence(unsigned int, llvm::StringRef, llvm::StringRef)"}, + {"_ZNK4llvm2cl3optIiLb0ENS0_6parserIiEEE27getValueExpectedFlagDefaultEv", "llvm::cl::opt>::getValueExpectedFlagDefault() const"}, + {"_ZN4llvm2cl3optIiLb0ENS0_6parserIiEEE19getExtraOptionNamesERNS_15SmallVectorImplIPKcEE", "llvm::cl::opt>::getExtraOptionNames(llvm::SmallVectorImpl&)"}, + {"_ZNK4llvm2cl3optIiLb0ENS0_6parserIiEEE14getOptionWidthEv", "llvm::cl::opt>::getOptionWidth() const"}, + {"_ZNK4llvm2cl3optIiLb0ENS0_6parserIiEEE15printOptionInfoEm", "llvm::cl::opt>::printOptionInfo(unsigned long) const"}, + {"_ZN4llvm2cl3optIiLb0ENS0_6parserIiEEE4doneEv", "llvm::cl::opt>::done()"}, + {"_ZN4llvm2cl3optIiLb0ENS0_6parserIiEEE15setInitialValueERKi", "llvm::cl::opt>::setInitialValue(int const&)"}, + {"_ZN4llvm2cl3optIiLb0ENS0_6parserIiEEE9getParserEv", "llvm::cl::opt>::getParser()"}, + + // {"_ZN4llvm2cl3optISsLb0ENS0_6parserISsEEE16handleOccurrenceEjNS_9StringRefES5_", + // "llvm::cl::opt>::handleOccurrence(unsigned int, llvm::StringRef, llvm::StringRef)"}, + // "llvm::cl::opt>::handleOccurrence(unsigned int, llvm::StringRef, llvm::cl::opt>)" was returned + + {"_ZNK4llvm2cl3optISsLb0ENS0_6parserISsEEE27getValueExpectedFlagDefaultEv", "llvm::cl::opt>::getValueExpectedFlagDefault() const"}, + {"_ZN4llvm2cl3optISsLb0ENS0_6parserISsEEE19getExtraOptionNamesERNS_15SmallVectorImplIPKcEE", "llvm::cl::opt>::getExtraOptionNames(llvm::SmallVectorImpl&)"}, + {"_ZNK4llvm2cl3optISsLb0ENS0_6parserISsEEE14getOptionWidthEv", "llvm::cl::opt>::getOptionWidth() const"}, + {"_ZNK4llvm2cl3optISsLb0ENS0_6parserISsEEE15printOptionInfoEm", "llvm::cl::opt>::printOptionInfo(unsigned long) const"}, + {"_ZN4llvm2cl3optISsLb0ENS0_6parserISsEEE4doneEv", "llvm::cl::opt>::done()"}, + {"_ZN4llvm2cl3optISsLb0ENS0_6parserISsEEE15setInitialValueERKSs", "llvm::cl::opt>::setInitialValue(std::string const&)"}, + {"_ZN4llvm2cl3optISsLb0ENS0_6parserISsEEE9getParserEv", "llvm::cl::opt>::getParser()"}, + {"_ZN4llvm2cl3optIcLb0ENS0_6parserIcEEE16handleOccurrenceEjNS_9StringRefES5_", "llvm::cl::opt>::handleOccurrence(unsigned int, llvm::StringRef, llvm::StringRef)"}, + {"_ZNK4llvm2cl3optIcLb0ENS0_6parserIcEEE27getValueExpectedFlagDefaultEv", "llvm::cl::opt>::getValueExpectedFlagDefault() const"}, + {"_ZN4llvm2cl3optIcLb0ENS0_6parserIcEEE19getExtraOptionNamesERNS_15SmallVectorImplIPKcEE", "llvm::cl::opt>::getExtraOptionNames(llvm::SmallVectorImpl&)"}, + {"_ZNK4llvm2cl3optIcLb0ENS0_6parserIcEEE14getOptionWidthEv", "llvm::cl::opt>::getOptionWidth() const"}, + {"_ZNK4llvm2cl3optIcLb0ENS0_6parserIcEEE15printOptionInfoEm", "llvm::cl::opt>::printOptionInfo(unsigned long) const"}, + {"_ZN4llvm2cl3optIcLb0ENS0_6parserIcEEE4doneEv", "llvm::cl::opt>::done()"}, + {"_ZN4llvm2cl3optIcLb0ENS0_6parserIcEEE15setInitialValueERKc", "llvm::cl::opt>::setInitialValue(char const&)"}, + {"_ZN4llvm2cl3optIcLb0ENS0_6parserIcEEE9getParserEv", "llvm::cl::opt>::getParser()"}, + {"_ZN4llvm2cl3optIbLb0ENS0_6parserIbEEE16handleOccurrenceEjNS_9StringRefES5_", "llvm::cl::opt>::handleOccurrence(unsigned int, llvm::StringRef, llvm::StringRef)"}, + {"_ZNK4llvm2cl3optIbLb0ENS0_6parserIbEEE27getValueExpectedFlagDefaultEv", "llvm::cl::opt>::getValueExpectedFlagDefault() const"}, + {"_ZN4llvm2cl3optIbLb0ENS0_6parserIbEEE19getExtraOptionNamesERNS_15SmallVectorImplIPKcEE", "llvm::cl::opt>::getExtraOptionNames(llvm::SmallVectorImpl&)"}, + {"_ZNK4llvm2cl3optIbLb0ENS0_6parserIbEEE14getOptionWidthEv", "llvm::cl::opt>::getOptionWidth() const"}, + {"_ZNK4llvm2cl3optIbLb0ENS0_6parserIbEEE15printOptionInfoEm", "llvm::cl::opt>::printOptionInfo(unsigned long) const"}, + {"_ZN4llvm2cl3optIbLb0ENS0_6parserIbEEE4doneEv", "llvm::cl::opt>::done()"}, + {"_ZN4llvm2cl3optIbLb0ENS0_6parserIbEEE15setInitialValueERKb", "llvm::cl::opt>::setInitialValue(bool const&)"}, + {"_ZN4llvm2cl3optIbLb0ENS0_6parserIbEEE9getParserEv", "llvm::cl::opt>::getParser()"}, + {"_ZN4llvm2cl19generic_parser_baseD1Ev", "llvm::cl::generic_parser_base::~generic_parser_base()"}, + {"_ZN4llvm2cl19generic_parser_baseD0Ev", "llvm::cl::generic_parser_base::~generic_parser_base()"}, + {"_ZN4llvm2cl12basic_parserIbED1Ev", "llvm::cl::basic_parser::~basic_parser()"}, + {"_ZN4llvm2cl12basic_parserIbED0Ev", "llvm::cl::basic_parser::~basic_parser()"}, + {"_ZN4llvm2cl12basic_parserINS0_13boolOrDefaultEED1Ev", "llvm::cl::basic_parser::~basic_parser()"}, + {"_ZN4llvm2cl12basic_parserINS0_13boolOrDefaultEED0Ev", "llvm::cl::basic_parser::~basic_parser()"}, + {"_ZN4llvm2cl12basic_parserIiED1Ev", "llvm::cl::basic_parser::~basic_parser()"}, + {"_ZN4llvm2cl12basic_parserIiED0Ev", "llvm::cl::basic_parser::~basic_parser()"}, + {"_ZN4llvm2cl12basic_parserIjED1Ev", "llvm::cl::basic_parser::~basic_parser()"}, + {"_ZN4llvm2cl12basic_parserIjED0Ev", "llvm::cl::basic_parser::~basic_parser()"}, + {"_ZN4llvm2cl12basic_parserIdED1Ev", "llvm::cl::basic_parser::~basic_parser()"}, + {"_ZN4llvm2cl12basic_parserIdED0Ev", "llvm::cl::basic_parser::~basic_parser()"}, + {"_ZN4llvm2cl12basic_parserIfED1Ev", "llvm::cl::basic_parser::~basic_parser()"}, + {"_ZN4llvm2cl12basic_parserIfED0Ev", "llvm::cl::basic_parser::~basic_parser()"}, + + // {"_ZN4llvm2cl12basic_parserISsED1Ev", + // "llvm::cl::basic_parser::~basic_parser()"}, + // "llvm::cl::basic_parser::~string()" was returned + + + // {"_ZN4llvm2cl12basic_parserISsED0Ev", + // "llvm::cl::basic_parser::~basic_parser()"}, + // "llvm::cl::basic_parser::~string()" was returned + + {"_ZN4llvm2cl12basic_parserIcED1Ev", "llvm::cl::basic_parser::~basic_parser()"}, + {"_ZN4llvm2cl12basic_parserIcED0Ev", "llvm::cl::basic_parser::~basic_parser()"}, + {"_ZN4llvm2cl3optIjLb0ENS0_6parserIjEEED1Ev", "llvm::cl::opt>::~opt()"}, + {"_ZN4llvm2cl3optIjLb0ENS0_6parserIjEEED0Ev", "llvm::cl::opt>::~opt()"}, + {"_ZN4llvm2cl3optIiLb0ENS0_6parserIiEEED1Ev", "llvm::cl::opt>::~opt()"}, + {"_ZN4llvm2cl3optIiLb0ENS0_6parserIiEEED0Ev", "llvm::cl::opt>::~opt()"}, + + // {"_ZN4llvm2cl3optISsLb0ENS0_6parserISsEEED1Ev", + // "llvm::cl::opt>::~opt()"}, + // "llvm::cl::opt>::~string()" was returned + + + // {"_ZN4llvm2cl3optISsLb0ENS0_6parserISsEEED0Ev", + // "llvm::cl::opt>::~opt()"}, + // "llvm::cl::opt>::~string()" was returned + + {"_ZN4llvm2cl3optIcLb0ENS0_6parserIcEEED1Ev", "llvm::cl::opt>::~opt()"}, + {"_ZN4llvm2cl3optIcLb0ENS0_6parserIcEEED0Ev", "llvm::cl::opt>::~opt()"}, + {"_ZN4llvm2cl3optIbLb0ENS0_6parserIbEEED0Ev", "llvm::cl::opt>::~opt()"}, + {"_ZN4llvm2cl6parserINS0_13boolOrDefaultEED1Ev", "llvm::cl::parser::~parser()"}, + {"_ZN4llvm2cl6parserINS0_13boolOrDefaultEED0Ev", "llvm::cl::parser::~parser()"}, + {"_ZNK4llvm2cl6parserINS0_13boolOrDefaultEE12getValueNameEv", "llvm::cl::parser::getValueName() const"}, + {"_ZN4llvm2cl6parserIiED1Ev", "llvm::cl::parser::~parser()"}, + {"_ZN4llvm2cl6parserIiED0Ev", "llvm::cl::parser::~parser()"}, + {"_ZNK4llvm2cl6parserIiE12getValueNameEv", "llvm::cl::parser::getValueName() const"}, + {"_ZN4llvm2cl6parserIjED1Ev", "llvm::cl::parser::~parser()"}, + {"_ZN4llvm2cl6parserIjED0Ev", "llvm::cl::parser::~parser()"}, + {"_ZNK4llvm2cl6parserIjE12getValueNameEv", "llvm::cl::parser::getValueName() const"}, + {"_ZN4llvm2cl6parserIdED1Ev", "llvm::cl::parser::~parser()"}, + {"_ZN4llvm2cl6parserIdED0Ev", "llvm::cl::parser::~parser()"}, + {"_ZNK4llvm2cl6parserIdE12getValueNameEv", "llvm::cl::parser::getValueName() const"}, + {"_ZN4llvm2cl6parserIfED1Ev", "llvm::cl::parser::~parser()"}, + {"_ZN4llvm2cl6parserIfED0Ev", "llvm::cl::parser::~parser()"}, + {"_ZNK4llvm2cl6parserIfE12getValueNameEv", "llvm::cl::parser::getValueName() const"}, + {"_ZN4llvm2cl6parserIcED1Ev", "llvm::cl::parser::~parser()"}, + {"_ZN4llvm2cl6parserIcED0Ev", "llvm::cl::parser::~parser()"}, + {"_ZNK4llvm2cl6parserIcE12getValueNameEv", "llvm::cl::parser::getValueName() const"}, + {"_ZN4llvm2cl5alias16handleOccurrenceEjNS_9StringRefES2_", "llvm::cl::alias::handleOccurrence(unsigned int, llvm::StringRef, llvm::StringRef)"}, + {"_ZN4llvm2cl5aliasD1Ev", "llvm::cl::alias::~alias()"}, + {"_ZN4llvm2cl5aliasD0Ev", "llvm::cl::alias::~alias()"}, + {"_ZNSt6vectorIPcSaIS0_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS0_S2_EERKS0_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, char* const&)"}, + {"_ZN4llvm14object_creatorISt6vectorIPKcSaIS3_EEEEPvv", "void* llvm::object_creator>>()"}, + {"_ZN4llvm14object_deleterISt6vectorIPKcSaIS3_EEE4callEPv", "llvm::object_deleter>>::call(void*)"}, + {"_ZNSt6vectorISt4pairIPKcPKN4llvm6TargetEESaIS7_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS7_S9_EERKS7_", "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + {"_ZN4llvm9StringMapIPNS_2cl6OptionENS_15MallocAllocatorEE16GetOrCreateValueIS3_EERNS_14StringMapEntryIS3_EENS_9StringRefET_", "llvm::StringMapEntry& llvm::StringMap::GetOrCreateValue(llvm::StringRef, llvm::cl::Option*)"}, + {"_ZN4llvm13ConstantRangeC1Ejb", "llvm::ConstantRange::ConstantRange(unsigned int, bool)"}, + {"_ZN4llvm13ConstantRangeC2Ejb", "llvm::ConstantRange::ConstantRange(unsigned int, bool)"}, + {"_ZN4llvm13ConstantRangeC1ERKNS_5APIntE", "llvm::ConstantRange::ConstantRange(llvm::APInt const&)"}, + {"_ZN4llvm13ConstantRangeC2ERKNS_5APIntE", "llvm::ConstantRange::ConstantRange(llvm::APInt const&)"}, + {"_ZN4llvm13ConstantRangeC1ERKNS_5APIntES3_", "llvm::ConstantRange::ConstantRange(llvm::APInt const&, llvm::APInt const&)"}, + {"_ZN4llvm13ConstantRangeC2ERKNS_5APIntES3_", "llvm::ConstantRange::ConstantRange(llvm::APInt const&, llvm::APInt const&)"}, + {"_ZN4llvm13ConstantRange14makeICmpRegionEjRKS0_", "llvm::ConstantRange::makeICmpRegion(unsigned int, llvm::ConstantRange const&)"}, + {"_ZNK4llvm13ConstantRange10isEmptySetEv", "llvm::ConstantRange::isEmptySet() const"}, + {"_ZNK4llvm13ConstantRange14getUnsignedMaxEv", "llvm::ConstantRange::getUnsignedMax() const"}, + {"_ZNK4llvm13ConstantRange12getSignedMaxEv", "llvm::ConstantRange::getSignedMax() const"}, + {"_ZNK4llvm13ConstantRange14getUnsignedMinEv", "llvm::ConstantRange::getUnsignedMin() const"}, + {"_ZNK4llvm13ConstantRange12getSignedMinEv", "llvm::ConstantRange::getSignedMin() const"}, + {"_ZNK4llvm13ConstantRange9isFullSetEv", "llvm::ConstantRange::isFullSet() const"}, + {"_ZNK4llvm13ConstantRange12isWrappedSetEv", "llvm::ConstantRange::isWrappedSet() const"}, + {"_ZNK4llvm13ConstantRange16isSignWrappedSetEv", "llvm::ConstantRange::isSignWrappedSet() const"}, + {"_ZNK4llvm13ConstantRange8containsERKNS_5APIntE", "llvm::ConstantRange::contains(llvm::APInt const&) const"}, + {"_ZNK4llvm13ConstantRange10getSetSizeEv", "llvm::ConstantRange::getSetSize() const"}, + {"_ZNK4llvm13ConstantRange8containsERKS0_", "llvm::ConstantRange::contains(llvm::ConstantRange const&) const"}, + {"_ZNK4llvm13ConstantRange8subtractERKNS_5APIntE", "llvm::ConstantRange::subtract(llvm::APInt const&) const"}, + {"_ZNK4llvm13ConstantRange13intersectWithERKS0_", "llvm::ConstantRange::intersectWith(llvm::ConstantRange const&) const"}, + {"_ZNK4llvm13ConstantRange9unionWithERKS0_", "llvm::ConstantRange::unionWith(llvm::ConstantRange const&) const"}, + {"_ZNK4llvm13ConstantRange10zeroExtendEj", "llvm::ConstantRange::zeroExtend(unsigned int) const"}, + {"_ZNK4llvm13ConstantRange10signExtendEj", "llvm::ConstantRange::signExtend(unsigned int) const"}, + {"_ZNK4llvm13ConstantRange8truncateEj", "llvm::ConstantRange::truncate(unsigned int) const"}, + {"_ZNK4llvm13ConstantRange11zextOrTruncEj", "llvm::ConstantRange::zextOrTrunc(unsigned int) const"}, + {"_ZNK4llvm13ConstantRange11sextOrTruncEj", "llvm::ConstantRange::sextOrTrunc(unsigned int) const"}, + {"_ZNK4llvm13ConstantRange3addERKS0_", "llvm::ConstantRange::add(llvm::ConstantRange const&) const"}, + {"_ZNK4llvm13ConstantRange3subERKS0_", "llvm::ConstantRange::sub(llvm::ConstantRange const&) const"}, + {"_ZNK4llvm13ConstantRange8multiplyERKS0_", "llvm::ConstantRange::multiply(llvm::ConstantRange const&) const"}, + {"_ZNK4llvm13ConstantRange4smaxERKS0_", "llvm::ConstantRange::smax(llvm::ConstantRange const&) const"}, + {"_ZNK4llvm13ConstantRange4umaxERKS0_", "llvm::ConstantRange::umax(llvm::ConstantRange const&) const"}, + {"_ZNK4llvm13ConstantRange4udivERKS0_", "llvm::ConstantRange::udiv(llvm::ConstantRange const&) const"}, + {"_ZNK4llvm13ConstantRange9binaryAndERKS0_", "llvm::ConstantRange::binaryAnd(llvm::ConstantRange const&) const"}, + {"_ZNK4llvm13ConstantRange8binaryOrERKS0_", "llvm::ConstantRange::binaryOr(llvm::ConstantRange const&) const"}, + {"_ZNK4llvm13ConstantRange3shlERKS0_", "llvm::ConstantRange::shl(llvm::ConstantRange const&) const"}, + {"_ZNK4llvm13ConstantRange4lshrERKS0_", "llvm::ConstantRange::lshr(llvm::ConstantRange const&) const"}, + {"_ZNK4llvm13ConstantRange7inverseEv", "llvm::ConstantRange::inverse() const"}, + {"_ZNK4llvm13ConstantRange5printERNS_11raw_ostreamE", "llvm::ConstantRange::print(llvm::raw_ostream&) const"}, + {"_ZNK4llvm13ConstantRange4dumpEv", "llvm::ConstantRange::dump() const"}, + {"_ZN4llvm3sys11ThreadLocalIKN12_GLOBAL__N_124CrashRecoveryContextImplEED1Ev", "llvm::sys::ThreadLocal<(anonymous namespace)::CrashRecoveryContextImpl const>::~ThreadLocal()"}, + {"_ZN4llvm20CrashRecoveryContextD1Ev", "llvm::CrashRecoveryContext::~CrashRecoveryContext()"}, + {"_ZN4llvm20CrashRecoveryContextD2Ev", "llvm::CrashRecoveryContext::~CrashRecoveryContext()"}, + {"_ZN4llvm20CrashRecoveryContext10GetCurrentEv", "llvm::CrashRecoveryContext::GetCurrent()"}, + {"_ZN4llvm20CrashRecoveryContext6EnableEv", "llvm::CrashRecoveryContext::Enable()"}, + {"_Z26CrashRecoverySignalHandleri", "CrashRecoverySignalHandler(int)"}, + {"_ZN4llvm20CrashRecoveryContext7DisableEv", "llvm::CrashRecoveryContext::Disable()"}, + {"_ZN4llvm20CrashRecoveryContext9RunSafelyEPFvPvES1_", "llvm::CrashRecoveryContext::RunSafely(void (*)(void*), void*)"}, + {"_ZN4llvm20CrashRecoveryContext11HandleCrashEv", "llvm::CrashRecoveryContext::HandleCrash()"}, + {"_ZNK4llvm20CrashRecoveryContext12getBacktraceEv", "llvm::CrashRecoveryContext::getBacktrace() const"}, + {"_ZN4llvm20CrashRecoveryContext17RunSafelyOnThreadEPFvPvES1_j", "llvm::CrashRecoveryContext::RunSafelyOnThread(void (*)(void*), void*, unsigned int)"}, + {"_Z26RunSafelyOnThread_DispatchPv", "RunSafelyOnThread_Dispatch(void*)"}, + {"_ZN4llvm3sys11ThreadLocalIKN12_GLOBAL__N_124CrashRecoveryContextImplEED0Ev", "llvm::sys::ThreadLocal<(anonymous namespace)::CrashRecoveryContextImpl const>::~ThreadLocal()"}, + {"_ZN4llvm3sys10SmartMutexILb0EED1Ev", "llvm::sys::SmartMutex::~SmartMutex()"}, + {"_ZN4llvm4dbgsEv", "llvm::dbgs()"}, + {"_ZN4llvm5dwarf9TagStringEj", "llvm::dwarf::TagString(unsigned int)"}, + {"_ZN4llvm5dwarf14ChildrenStringEj", "llvm::dwarf::ChildrenString(unsigned int)"}, + {"_ZN4llvm5dwarf15AttributeStringEj", "llvm::dwarf::AttributeString(unsigned int)"}, + {"_ZN4llvm5dwarf18FormEncodingStringEj", "llvm::dwarf::FormEncodingString(unsigned int)"}, + {"_ZN4llvm5dwarf23OperationEncodingStringEj", "llvm::dwarf::OperationEncodingString(unsigned int)"}, + {"_ZN4llvm5dwarf23AttributeEncodingStringEj", "llvm::dwarf::AttributeEncodingString(unsigned int)"}, + {"_ZN4llvm5dwarf17DecimalSignStringEj", "llvm::dwarf::DecimalSignString(unsigned int)"}, + {"_ZN4llvm5dwarf15EndianityStringEj", "llvm::dwarf::EndianityString(unsigned int)"}, + {"_ZN4llvm5dwarf19AccessibilityStringEj", "llvm::dwarf::AccessibilityString(unsigned int)"}, + {"_ZN4llvm5dwarf16VisibilityStringEj", "llvm::dwarf::VisibilityString(unsigned int)"}, + {"_ZN4llvm5dwarf16VirtualityStringEj", "llvm::dwarf::VirtualityString(unsigned int)"}, + {"_ZN4llvm5dwarf14LanguageStringEj", "llvm::dwarf::LanguageString(unsigned int)"}, + {"_ZN4llvm5dwarf10CaseStringEj", "llvm::dwarf::CaseString(unsigned int)"}, + {"_ZN4llvm5dwarf16ConventionStringEj", "llvm::dwarf::ConventionString(unsigned int)"}, + {"_ZN4llvm5dwarf16InlineCodeStringEj", "llvm::dwarf::InlineCodeString(unsigned int)"}, + {"_ZN4llvm5dwarf16ArrayOrderStringEj", "llvm::dwarf::ArrayOrderString(unsigned int)"}, + {"_ZN4llvm5dwarf18DiscriminantStringEj", "llvm::dwarf::DiscriminantString(unsigned int)"}, + {"_ZN4llvm5dwarf16LNStandardStringEj", "llvm::dwarf::LNStandardString(unsigned int)"}, + {"_ZN4llvm5dwarf16LNExtendedStringEj", "llvm::dwarf::LNExtendedString(unsigned int)"}, + {"_ZN4llvm5dwarf13MacinfoStringEj", "llvm::dwarf::MacinfoString(unsigned int)"}, + {"_ZN4llvm5dwarf15CallFrameStringEj", "llvm::dwarf::CallFrameString(unsigned int)"}, + {"_ZN12_GLOBAL__N_122ExplicitSymbolsDeleterD1Ev", "(anonymous namespace)::ExplicitSymbolsDeleter::~ExplicitSymbolsDeleter()"}, + {"_ZN4llvm3sys14DynamicLibrary9AddSymbolEPKcPv", "llvm::sys::DynamicLibrary::AddSymbol(char const*, void*)"}, + {"_ZN4llvm3sys14DynamicLibrary22LoadLibraryPermanentlyEPKcPSs", "llvm::sys::DynamicLibrary::LoadLibraryPermanently(char const*, std::string*)"}, + {"_ZN4llvm3sys14DynamicLibrary24SearchForAddressOfSymbolEPKc", "llvm::sys::DynamicLibrary::SearchForAddressOfSymbol(char const*)"}, + + // {"_ZNSt3mapISsPvSt4lessISsESaISt4pairIKSsS0_EEEixERS4_", + // "std::map, std::allocator>>::operator[](std::string const&)"}, + // "std::map, std::allocator>>::operator[](std::pair&)" was returned + + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsPvESt10_Select1stIS3_ESt4lessISsESaIS3_EE4findERS1_", + // "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::find(std::string const&)"}, + // "std::_Rb_tree, std::_Select1st, std::less, std::allocator>::find(std::pair&)" was returned + + {"_ZNSt6vectorIPvSaIS0_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS0_S2_EERKS0_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, void* const&)"}, + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsPvESt10_Select1stIS3_ESt4lessISsESaIS3_EE16_M_insert_uniqueESt17_Rb_tree_iteratorIS3_ERKS3_", + // "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::_Rb_tree_iterator>, std::pair const&)"}, + // "std::_Rb_tree, std::_Select1st, std::less, std::allocator>::_M_insert_unique(std::_Rb_tree_iterator, void* const&)" was returned + + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsPvESt10_Select1stIS3_ESt4lessISsESaIS3_EE9_M_insertEPSt18_Rb_tree_node_baseSB_RKS3_", + // "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair const&)"}, + // "std::_Rb_tree, std::_Select1st, std::less, std::allocator>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base, void* const&)" was returned + + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsPvESt10_Select1stIS3_ESt4lessISsESaIS3_EE16_M_insert_uniqueERKS3_", + // "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_insert_unique(std::pair const&)"}, + // "std::_Rb_tree, std::_Select1st, std::less, std::allocator>::_M_insert_unique(void* const&)" was returned + + + // {"_ZNSt8_Rb_treeISsSt4pairIKSsPvESt10_Select1stIS3_ESt4lessISsESaIS3_EE8_M_eraseEPSt13_Rb_tree_nodeIS3_E", + // "std::_Rb_tree, std::_Select1st>, std::less, std::allocator>>::_M_erase(std::_Rb_tree_node>*)"}, + // "std::_Rb_tree, std::_Select1st, std::less, std::allocator>::_M_erase(std::_Rb_tree_node*)" was returned + + {"_ZN4llvm3sys8StrErrorEv", "llvm::sys::StrError()"}, + {"_ZN4llvm3sys8StrErrorEi", "llvm::sys::StrError(int)"}, + + // {"_ZN4llvm27install_fatal_error_handlerEPFvPvRKSsES0_", + // "llvm::install_fatal_error_handler(void (*)(void*, std::string const&), void*)"}, + // "llvm::install_fatal_error_handler(void (*)(void*, std::string&), void*)" was returned + + {"_ZN4llvm26remove_fatal_error_handlerEv", "llvm::remove_fatal_error_handler()"}, + {"_ZN4llvm18report_fatal_errorEPKc", "llvm::report_fatal_error(char const*)"}, + {"_ZN4llvm18report_fatal_errorERKNS_5TwineE", "llvm::report_fatal_error(llvm::Twine const&)"}, + {"_ZN4llvm18report_fatal_errorERKSs", "llvm::report_fatal_error(std::string const&)"}, + {"_ZN4llvm18report_fatal_errorENS_9StringRefE", "llvm::report_fatal_error(llvm::StringRef)"}, + {"_ZN4llvm25llvm_unreachable_internalEPKcS1_j", "llvm::llvm_unreachable_internal(char const*, char const*, unsigned int)"}, + {"_ZNK4llvm19FoldingSetNodeIDRef11ComputeHashEv", "llvm::FoldingSetNodeIDRef::ComputeHash() const"}, + {"_ZNK4llvm19FoldingSetNodeIDRefeqES0_", "llvm::FoldingSetNodeIDRef::operator==(llvm::FoldingSetNodeIDRef) const"}, + {"_ZN4llvm16FoldingSetNodeID10AddPointerEPKv", "llvm::FoldingSetNodeID::AddPointer(void const*)"}, + {"_ZN4llvm16FoldingSetNodeID10AddIntegerEi", "llvm::FoldingSetNodeID::AddInteger(int)"}, + {"_ZN4llvm16FoldingSetNodeID10AddIntegerEj", "llvm::FoldingSetNodeID::AddInteger(unsigned int)"}, + {"_ZN4llvm16FoldingSetNodeID10AddIntegerEl", "llvm::FoldingSetNodeID::AddInteger(long)"}, + {"_ZN4llvm16FoldingSetNodeID10AddIntegerEm", "llvm::FoldingSetNodeID::AddInteger(unsigned long)"}, + {"_ZN4llvm16FoldingSetNodeID10AddIntegerEy", "llvm::FoldingSetNodeID::AddInteger(unsigned long long)"}, + {"_ZN4llvm16FoldingSetNodeID10AddIntegerEx", "llvm::FoldingSetNodeID::AddInteger(long long)"}, + {"_ZN4llvm16FoldingSetNodeID9AddStringENS_9StringRefE", "llvm::FoldingSetNodeID::AddString(llvm::StringRef)"}, + {"_ZNK4llvm16FoldingSetNodeID11ComputeHashEv", "llvm::FoldingSetNodeID::ComputeHash() const"}, + {"_ZNK4llvm16FoldingSetNodeIDeqERKS0_", "llvm::FoldingSetNodeID::operator==(llvm::FoldingSetNodeID const&) const"}, + {"_ZNK4llvm16FoldingSetNodeIDeqENS_19FoldingSetNodeIDRefE", "llvm::FoldingSetNodeID::operator==(llvm::FoldingSetNodeIDRef) const"}, + {"_ZNK4llvm16FoldingSetNodeID6InternERNS_16BumpPtrAllocatorE", "llvm::FoldingSetNodeID::Intern(llvm::BumpPtrAllocator&) const"}, + {"_ZN4llvm14FoldingSetImplC1Ej", "llvm::FoldingSetImpl::FoldingSetImpl(unsigned int)"}, + {"_ZN4llvm14FoldingSetImplC2Ej", "llvm::FoldingSetImpl::FoldingSetImpl(unsigned int)"}, + {"_ZN4llvm14FoldingSetImplD0Ev", "llvm::FoldingSetImpl::~FoldingSetImpl()"}, + {"_ZN4llvm14FoldingSetImplD1Ev", "llvm::FoldingSetImpl::~FoldingSetImpl()"}, + {"_ZN4llvm14FoldingSetImplD2Ev", "llvm::FoldingSetImpl::~FoldingSetImpl()"}, + {"_ZN4llvm14FoldingSetImpl5clearEv", "llvm::FoldingSetImpl::clear()"}, + {"_ZN4llvm14FoldingSetImpl13GrowHashTableEv", "llvm::FoldingSetImpl::GrowHashTable()"}, + {"_ZN4llvm14FoldingSetImpl10InsertNodeEPNS0_4NodeEPv", "llvm::FoldingSetImpl::InsertNode(llvm::FoldingSetImpl::Node*, void*)"}, + {"_ZN4llvm14FoldingSetImpl19FindNodeOrInsertPosERKNS_16FoldingSetNodeIDERPv", "llvm::FoldingSetImpl::FindNodeOrInsertPos(llvm::FoldingSetNodeID const&, void*&)"}, + {"_ZN4llvm14FoldingSetImpl10RemoveNodeEPNS0_4NodeE", "llvm::FoldingSetImpl::RemoveNode(llvm::FoldingSetImpl::Node*)"}, + {"_ZN4llvm14FoldingSetImpl15GetOrInsertNodeEPNS0_4NodeE", "llvm::FoldingSetImpl::GetOrInsertNode(llvm::FoldingSetImpl::Node*)"}, + {"_ZN4llvm22FoldingSetIteratorImplC1EPPv", "llvm::FoldingSetIteratorImpl::FoldingSetIteratorImpl(void**)"}, + {"_ZN4llvm22FoldingSetIteratorImplC2EPPv", "llvm::FoldingSetIteratorImpl::FoldingSetIteratorImpl(void**)"}, + {"_ZN4llvm22FoldingSetIteratorImpl7advanceEv", "llvm::FoldingSetIteratorImpl::advance()"}, + {"_ZN4llvm28FoldingSetBucketIteratorImplC1EPPv", "llvm::FoldingSetBucketIteratorImpl::FoldingSetBucketIteratorImpl(void**)"}, + {"_ZN4llvm28FoldingSetBucketIteratorImplC2EPPv", "llvm::FoldingSetBucketIteratorImpl::FoldingSetBucketIteratorImpl(void**)"}, + {"_ZN4llvm21formatted_raw_ostream13ComputeColumnEPKcm", "llvm::formatted_raw_ostream::ComputeColumn(char const*, unsigned long)"}, + {"_ZN4llvm21formatted_raw_ostream11PadToColumnEj", "llvm::formatted_raw_ostream::PadToColumn(unsigned int)"}, + {"_ZN4llvm21formatted_raw_ostream10write_implEPKcm", "llvm::formatted_raw_ostream::write_impl(char const*, unsigned long)"}, + {"_ZN4llvm5foutsEv", "llvm::fouts()"}, + {"_ZN4llvm5ferrsEv", "llvm::ferrs()"}, + {"_ZN4llvm5fdbgsEv", "llvm::fdbgs()"}, + {"_ZN4llvm3DOT12EscapeStringERKSs", "llvm::DOT::EscapeString(std::string const&)"}, + {"_ZN4llvm12DisplayGraphERKNS_3sys4PathEbNS_12GraphProgram4NameE", "llvm::DisplayGraph(llvm::sys::Path const&, bool, llvm::GraphProgram::Name)"}, + {"_ZN4llvm3sys13getHostTripleEv", "llvm::sys::getHostTriple()"}, + {"_ZN4llvm3sys14getHostCPUNameEv", "llvm::sys::getHostCPUName()"}, + {"_ZN4llvm3sys18getHostCPUFeaturesERNS_9StringMapIbNS_15MallocAllocatorEEE", "llvm::sys::getHostCPUFeatures(llvm::StringMap&)"}, + {"_ZN4llvm12IntEqClasses4growEj", "llvm::IntEqClasses::grow(unsigned int)"}, + {"_ZN4llvm12IntEqClasses4joinEjj", "llvm::IntEqClasses::join(unsigned int, unsigned int)"}, + {"_ZNK4llvm12IntEqClasses10findLeaderEj", "llvm::IntEqClasses::findLeader(unsigned int) const"}, + {"_ZN4llvm12IntEqClasses8compressEv", "llvm::IntEqClasses::compress()"}, + {"_ZN4llvm12IntEqClasses10uncompressEv", "llvm::IntEqClasses::uncompress()"}, + {"_ZN4llvm15IntervalMapImpl4Path11replaceRootEPvjSt4pairIjjE", "llvm::IntervalMapImpl::Path::replaceRoot(void*, unsigned int, std::pair)"}, + {"_ZNK4llvm15IntervalMapImpl4Path14getLeftSiblingEj", "llvm::IntervalMapImpl::Path::getLeftSibling(unsigned int) const"}, + {"_ZN4llvm15IntervalMapImpl4Path8moveLeftEj", "llvm::IntervalMapImpl::Path::moveLeft(unsigned int)"}, + {"_ZNK4llvm15IntervalMapImpl4Path15getRightSiblingEj", "llvm::IntervalMapImpl::Path::getRightSibling(unsigned int) const"}, + {"_ZN4llvm15IntervalMapImpl4Path9moveRightEj", "llvm::IntervalMapImpl::Path::moveRight(unsigned int)"}, + {"_ZN4llvm15IntervalMapImpl10distributeEjjjPKjPjjb", "llvm::IntervalMapImpl::distribute(unsigned int, unsigned int, unsigned int, unsigned int const*, unsigned int*, unsigned int, bool)"}, + {"_ZN4llvm15SmallVectorImplINS_15IntervalMapImpl4Path5EntryEE6insertEPS3_RKS3_", "llvm::SmallVectorImpl::insert(llvm::IntervalMapImpl::Path::Entry*, llvm::IntervalMapImpl::Path::Entry const&)"}, + {"_ZN4llvm15SmallVectorImplINS_15IntervalMapImpl4Path5EntryEE6resizeEjRKS3_", "llvm::SmallVectorImpl::resize(unsigned int, llvm::IntervalMapImpl::Path::Entry const&)"}, + {"_ZNK4llvm17ManagedStaticBase7destroyEv", "llvm::ManagedStaticBase::destroy() const"}, + {"_ZN4llvm13llvm_shutdownEv", "llvm::llvm_shutdown()"}, + {"_ZN4llvm3sys6Memory11AllocateRWXEmPKNS0_11MemoryBlockEPSs", "llvm::sys::Memory::AllocateRWX(unsigned long, llvm::sys::MemoryBlock const*, std::string*)"}, + {"_Z10MakeErrMsgPSsRKSsi", "MakeErrMsg(std::string*, std::string const&, int)"}, + {"_ZN4llvm3sys6Memory10ReleaseRWXERNS0_11MemoryBlockEPSs", "llvm::sys::Memory::ReleaseRWX(llvm::sys::MemoryBlock&, std::string*)"}, + {"_ZN4llvm3sys6Memory11setWritableERNS0_11MemoryBlockEPSs", "llvm::sys::Memory::setWritable(llvm::sys::MemoryBlock&, std::string*)"}, + {"_ZN4llvm3sys6Memory13setExecutableERNS0_11MemoryBlockEPSs", "llvm::sys::Memory::setExecutable(llvm::sys::MemoryBlock&, std::string*)"}, + {"_ZN4llvm3sys6Memory16setRangeWritableEPKvm", "llvm::sys::Memory::setRangeWritable(void const*, unsigned long)"}, + {"_ZN4llvm3sys6Memory18setRangeExecutableEPKvm", "llvm::sys::Memory::setRangeExecutable(void const*, unsigned long)"}, + {"_ZN4llvm3sys6Memory26InvalidateInstructionCacheEPKvm", "llvm::sys::Memory::InvalidateInstructionCache(void const*, unsigned long)"}, + {"_ZN4llvm12MemoryBufferD0Ev", "llvm::MemoryBuffer::~MemoryBuffer()"}, + {"_ZN4llvm12MemoryBufferD1Ev", "llvm::MemoryBuffer::~MemoryBuffer()"}, + {"_ZN4llvm12MemoryBufferD2Ev", "llvm::MemoryBuffer::~MemoryBuffer()"}, + {"_ZN4llvm12MemoryBuffer4initEPKcS2_", "llvm::MemoryBuffer::init(char const*, char const*)"}, + {"_ZN4llvm12MemoryBuffer12getMemBufferENS_9StringRefES1_", "llvm::MemoryBuffer::getMemBuffer(llvm::StringRef, llvm::StringRef)"}, + {"_ZN4llvm12MemoryBuffer16getMemBufferCopyENS_9StringRefES1_", "llvm::MemoryBuffer::getMemBufferCopy(llvm::StringRef, llvm::StringRef)"}, + {"_ZN4llvm12MemoryBuffer21getNewUninitMemBufferEmNS_9StringRefE", "llvm::MemoryBuffer::getNewUninitMemBuffer(unsigned long, llvm::StringRef)"}, + {"_ZN4llvm12MemoryBuffer15getNewMemBufferEmNS_9StringRefE", "llvm::MemoryBuffer::getNewMemBuffer(unsigned long, llvm::StringRef)"}, + {"_ZN4llvm12MemoryBuffer14getFileOrSTDINENS_9StringRefERNS_9OwningPtrIS0_EEx", "llvm::MemoryBuffer::getFileOrSTDIN(llvm::StringRef, llvm::OwningPtr&, long long)"}, + {"_ZN4llvm12MemoryBuffer8getSTDINERNS_9OwningPtrIS0_EE", "llvm::MemoryBuffer::getSTDIN(llvm::OwningPtr&)"}, + {"_ZN4llvm12MemoryBuffer7getFileENS_9StringRefERNS_9OwningPtrIS0_EEx", "llvm::MemoryBuffer::getFile(llvm::StringRef, llvm::OwningPtr&, long long)"}, + {"_ZN4llvm12MemoryBuffer14getFileOrSTDINEPKcRNS_9OwningPtrIS0_EEx", "llvm::MemoryBuffer::getFileOrSTDIN(char const*, llvm::OwningPtr&, long long)"}, + {"_ZN4llvm12MemoryBuffer7getFileEPKcRNS_9OwningPtrIS0_EEx", "llvm::MemoryBuffer::getFile(char const*, llvm::OwningPtr&, long long)"}, + {"_ZN4llvm12MemoryBuffer11getOpenFileEiPKcRNS_9OwningPtrIS0_EEx", "llvm::MemoryBuffer::getOpenFile(int, char const*, llvm::OwningPtr&, long long)"}, + {"_ZN12_GLOBAL__N_120MemoryBufferMMapFileD1Ev", "(anonymous namespace)::MemoryBufferMMapFile::~MemoryBufferMMapFile()"}, + {"_ZN12_GLOBAL__N_120MemoryBufferMMapFileD0Ev", "(anonymous namespace)::MemoryBufferMMapFile::~MemoryBufferMMapFile()"}, + {"_ZNK12_GLOBAL__N_115MemoryBufferMem19getBufferIdentifierEv", "(anonymous namespace)::MemoryBufferMem::getBufferIdentifier() const"}, + {"_ZN12_GLOBAL__N_115MemoryBufferMemD1Ev", "(anonymous namespace)::MemoryBufferMem::~MemoryBufferMem()"}, + {"_ZN12_GLOBAL__N_115MemoryBufferMemD0Ev", "(anonymous namespace)::MemoryBufferMem::~MemoryBufferMem()"}, + {"_ZNK4llvm12MemoryBuffer19getBufferIdentifierEv", "llvm::MemoryBuffer::getBufferIdentifier() const"}, + {"_ZN4llvm3sys9MutexImplC1Eb", "llvm::sys::MutexImpl::MutexImpl(bool)"}, + {"_ZN4llvm3sys9MutexImplD1Ev", "llvm::sys::MutexImpl::~MutexImpl()"}, + {"_ZN4llvm3sys9MutexImplD2Ev", "llvm::sys::MutexImpl::~MutexImpl()"}, + {"_ZN4llvm3sys9MutexImpl10tryacquireEv", "llvm::sys::MutexImpl::tryacquire()"}, + {"_ZNK4llvm3sys4PatheqERKS1_", "llvm::sys::Path::operator==(llvm::sys::Path const&) const"}, + {"_ZNK4llvm3sys4PathltERKS1_", "llvm::sys::Path::operator<(llvm::sys::Path const&) const"}, + {"_ZN4llvm3sys4Path16GetLLVMConfigDirEv", "llvm::sys::Path::GetLLVMConfigDir()"}, + {"_ZN4llvm3sys4Path3setENS_9StringRefE", "llvm::sys::Path::set(llvm::StringRef)"}, + {"_ZN4llvm3sys4Path23GetLLVMDefaultConfigDirEv", "llvm::sys::Path::GetLLVMDefaultConfigDir()"}, + {"_ZN4llvm3sys16IdentifyFileTypeEPKcj", "llvm::sys::IdentifyFileType(char const*, unsigned int)"}, + {"_ZNK4llvm3sys4Path9isArchiveEv", "llvm::sys::Path::isArchive() const"}, + {"_ZNK4llvm3sys4Path16isDynamicLibraryEv", "llvm::sys::Path::isDynamicLibrary() const"}, + {"_ZNK4llvm3sys4Path12isObjectFileEv", "llvm::sys::Path::isObjectFile() const"}, + {"_ZN4llvm3sys4Path11FindLibraryERSs", "llvm::sys::Path::FindLibrary(std::string&)"}, + {"_ZN4llvm3sys4Path21GetSystemLibraryPathsERSt6vectorIS1_SaIS1_EE", "llvm::sys::Path::GetSystemLibraryPaths(std::vector>&)"}, + {"_ZN4llvm3sys4Path15appendComponentENS_9StringRefE", "llvm::sys::Path::appendComponent(llvm::StringRef)"}, + {"_ZN4llvm3sys4Path11eraseSuffixEv", "llvm::sys::Path::eraseSuffix()"}, + {"_ZN4llvm3sys4Path12appendSuffixENS_9StringRefE", "llvm::sys::Path::appendSuffix(llvm::StringRef)"}, + {"_ZN4llvm3sys4Path12GetDLLSuffixEv", "llvm::sys::Path::GetDLLSuffix()"}, + {"_ZNK4llvm3sys4Path13isBitcodeFileEv", "llvm::sys::Path::isBitcodeFile() const"}, + {"_ZNK4llvm3sys4Path14hasMagicNumberENS_9StringRefE", "llvm::sys::Path::hasMagicNumber(llvm::StringRef) const"}, + {"_ZNK4llvm3sys4Path14getMagicNumberERSsj", "llvm::sys::Path::getMagicNumber(std::string&, unsigned int) const"}, + {"_ZN4llvm3sys4Path12GetEXESuffixEv", "llvm::sys::Path::GetEXESuffix()"}, + {"_ZN4llvm3sys4PathC1ENS_9StringRefE", "llvm::sys::Path::Path(llvm::StringRef)"}, + {"_ZN4llvm3sys4PathC2ENS_9StringRefE", "llvm::sys::Path::Path(llvm::StringRef)"}, + {"_ZN4llvm3sys4PathC1EPKcj", "llvm::sys::Path::Path(char const*, unsigned int)"}, + {"_ZN4llvm3sys4PathC2EPKcj", "llvm::sys::Path::Path(char const*, unsigned int)"}, + {"_ZN4llvm3sys4PathaSENS_9StringRefE", "llvm::sys::Path::operator=(llvm::StringRef)"}, + {"_ZNK4llvm3sys4Path7isValidEv", "llvm::sys::Path::isValid() const"}, + {"_ZN4llvm3sys4Path10isAbsoluteEPKcj", "llvm::sys::Path::isAbsolute(char const*, unsigned int)"}, + {"_ZNK4llvm3sys4Path10isAbsoluteEv", "llvm::sys::Path::isAbsolute() const"}, + {"_ZN4llvm3sys4Path16GetRootDirectoryEv", "llvm::sys::Path::GetRootDirectory()"}, + {"_ZN4llvm3sys4Path21GetTemporaryDirectoryEPSs", "llvm::sys::Path::GetTemporaryDirectory(std::string*)"}, + {"_Z10MakeErrMsgPSsRKSsi", "MakeErrMsg(std::string*, std::string const&, int)"}, + {"_Z11getPathListPKcRSt6vectorIN4llvm3sys4PathESaIS4_EE", "getPathList(char const*, std::vector>&)"}, + {"_ZN4llvm3sys4Path22GetBitcodeLibraryPathsERSt6vectorIS1_SaIS1_EE", "llvm::sys::Path::GetBitcodeLibraryPaths(std::vector>&)"}, + {"_ZNK4llvm3sys4Path7canReadEv", "llvm::sys::Path::canRead() const"}, + {"_ZN4llvm3sys4Path20GetUserHomeDirectoryEv", "llvm::sys::Path::GetUserHomeDirectory()"}, + {"_ZN4llvm3sys4Path19GetCurrentDirectoryEv", "llvm::sys::Path::GetCurrentDirectory()"}, + {"_ZN4llvm3sys4Path17GetMainExecutableEPKcPv", "llvm::sys::Path::GetMainExecutable(char const*, void*)"}, + {"_ZNK4llvm3sys4Path10getDirnameEv", "llvm::sys::Path::getDirname() const"}, + {"_ZNK4llvm3sys4Path11getBasenameEv", "llvm::sys::Path::getBasename() const"}, + {"_ZNK4llvm3sys4Path9getSuffixEv", "llvm::sys::Path::getSuffix() const"}, + {"_ZNK4llvm3sys4Path6existsEv", "llvm::sys::Path::exists() const"}, + {"_ZNK4llvm3sys4Path11isDirectoryEv", "llvm::sys::Path::isDirectory() const"}, + {"_ZNK4llvm3sys4Path9isSymLinkEv", "llvm::sys::Path::isSymLink() const"}, + {"_ZNK4llvm3sys4Path8canWriteEv", "llvm::sys::Path::canWrite() const"}, + {"_ZNK4llvm3sys4Path13isRegularFileEv", "llvm::sys::Path::isRegularFile() const"}, + {"_ZNK4llvm3sys4Path10canExecuteEv", "llvm::sys::Path::canExecute() const"}, + {"_ZNK4llvm3sys4Path7getLastEv", "llvm::sys::Path::getLast() const"}, + {"_ZNK4llvm3sys14PathWithStatus13getFileStatusEbPSs", "llvm::sys::PathWithStatus::getFileStatus(bool, std::string*) const"}, + {"_ZN4llvm3sys4Path18makeReadableOnDiskEPSs", "llvm::sys::Path::makeReadableOnDisk(std::string*)"}, + {"_ZN4llvm3sys4Path19makeWriteableOnDiskEPSs", "llvm::sys::Path::makeWriteableOnDisk(std::string*)"}, + {"_ZN4llvm3sys4Path20makeExecutableOnDiskEPSs", "llvm::sys::Path::makeExecutableOnDisk(std::string*)"}, + {"_ZNK4llvm3sys4Path20getDirectoryContentsERSt3setIS1_St4lessIS1_ESaIS1_EEPSs", "llvm::sys::Path::getDirectoryContents(std::set, std::allocator>&, std::string*) const"}, + {"_ZN4llvm3sys4Path14eraseComponentEv", "llvm::sys::Path::eraseComponent()"}, + {"_ZN4llvm3sys4Path21createDirectoryOnDiskEbPSs", "llvm::sys::Path::createDirectoryOnDisk(bool, std::string*)"}, + {"_ZN4llvm21createDirectoryHelperEPcS0_b", "llvm::createDirectoryHelper(char*, char*, bool)"}, + {"_ZN4llvm3sys4Path16createFileOnDiskEPSs", "llvm::sys::Path::createFileOnDisk(std::string*)"}, + {"_ZN4llvm3sys4Path25createTemporaryFileOnDiskEbPSs", "llvm::sys::Path::createTemporaryFileOnDisk(bool, std::string*)"}, + {"_ZN4llvm3sys4Path10makeUniqueEbPSs", "llvm::sys::Path::makeUnique(bool, std::string*)"}, + {"_ZNK4llvm3sys4Path13eraseFromDiskEbPSs", "llvm::sys::Path::eraseFromDisk(bool, std::string*) const"}, + {"_ZN4llvm3sys4Path16renamePathOnDiskERKS1_PSs", "llvm::sys::Path::renamePathOnDisk(llvm::sys::Path const&, std::string*)"}, + {"_ZNK4llvm3sys4Path19setStatusInfoOnDiskERKNS0_10FileStatusEPSs", "llvm::sys::Path::setStatusInfoOnDisk(llvm::sys::FileStatus const&, std::string*) const"}, + {"_ZN4llvm3sys8CopyFileERKNS0_4PathES3_PSs", "llvm::sys::CopyFile(llvm::sys::Path const&, llvm::sys::Path const&, std::string*)"}, + {"_ZN4llvm3sys4Path14MapInFilePagesEiy", "llvm::sys::Path::MapInFilePages(int, unsigned long long)"}, + {"_ZN4llvm3sys4Path14UnMapFilePagesEPKcy", "llvm::sys::Path::UnMapFilePages(char const*, unsigned long long)"}, + {"_ZNSt6vectorIcSaIcEE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPcS1_EEmRKc", "std::vector>::_M_fill_insert(__gnu_cxx::__normal_iterator>>, unsigned long, char const&)"}, + {"_ZNSt8_Rb_treeIN4llvm3sys4PathES2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE16_M_insert_uniqueERKS2_", "std::_Rb_tree, std::less, std::allocator>::_M_insert_unique(llvm::sys::Path const&)"}, + {"_ZNSt8_Rb_treeIN4llvm3sys4PathES2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE9_M_insertEPSt18_Rb_tree_node_baseSA_RKS2_", "std::_Rb_tree, std::less, std::allocator>::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, llvm::sys::Path const&)"}, + {"_ZNSt8_Rb_treeIN4llvm3sys4PathES2_St9_IdentityIS2_ESt4lessIS2_ESaIS2_EE8_M_eraseEPSt13_Rb_tree_nodeIS2_E", "std::_Rb_tree, std::less, std::allocator>::_M_erase(std::_Rb_tree_node*)"}, + {"_ZN4llvm3sys4path5beginENS_9StringRefE", "llvm::sys::path::begin(llvm::StringRef)"}, + {"_ZN4llvm3sys4path3endENS_9StringRefE", "llvm::sys::path::end(llvm::StringRef)"}, + {"_ZN4llvm3sys4path14const_iteratorppEv", "llvm::sys::path::const_iterator::operator++()"}, + {"_ZN4llvm3sys4path14const_iteratormmEv", "llvm::sys::path::const_iterator::operator--()"}, + {"_ZNK4llvm3sys4path14const_iteratoreqERKS2_", "llvm::sys::path::const_iterator::operator==(llvm::sys::path::const_iterator const&) const"}, + {"_ZNK4llvm3sys4path14const_iteratorneERKS2_", "llvm::sys::path::const_iterator::operator!=(llvm::sys::path::const_iterator const&) const"}, + {"_ZNK4llvm3sys4path14const_iteratormiERKS2_", "llvm::sys::path::const_iterator::operator-(llvm::sys::path::const_iterator const&) const"}, + {"_ZN4llvm3sys4path9root_pathENS_9StringRefE", "llvm::sys::path::root_path(llvm::StringRef)"}, + {"_ZN4llvm3sys4path9root_nameENS_9StringRefE", "llvm::sys::path::root_name(llvm::StringRef)"}, + {"_ZN4llvm3sys4path14root_directoryENS_9StringRefE", "llvm::sys::path::root_directory(llvm::StringRef)"}, + {"_ZN4llvm3sys4path13relative_pathENS_9StringRefE", "llvm::sys::path::relative_path(llvm::StringRef)"}, + {"_ZN4llvm3sys4path6appendERNS_15SmallVectorImplIcEERKNS_5TwineES7_S7_S7_", "llvm::sys::path::append(llvm::SmallVectorImpl&, llvm::Twine const&, llvm::Twine const&, llvm::Twine const&, llvm::Twine const&)"}, + {"_ZN4llvm3sys4path13has_root_nameERKNS_5TwineE", "llvm::sys::path::has_root_name(llvm::Twine const&)"}, + {"_ZN4llvm3sys4path11parent_pathENS_9StringRefE", "llvm::sys::path::parent_path(llvm::StringRef)"}, + {"_ZN12_GLOBAL__N_115parent_path_endEN4llvm9StringRefE", "(anonymous namespace)::parent_path_end(llvm::StringRef)"}, + {"_ZN4llvm3sys4path15remove_filenameERNS_15SmallVectorImplIcEE", "llvm::sys::path::remove_filename(llvm::SmallVectorImpl&)"}, + {"_ZN4llvm3sys4path17replace_extensionERNS_15SmallVectorImplIcEERKNS_5TwineE", "llvm::sys::path::replace_extension(llvm::SmallVectorImpl&, llvm::Twine const&)"}, + {"_ZN4llvm3sys4path6nativeERKNS_5TwineERNS_15SmallVectorImplIcEE", "llvm::sys::path::native(llvm::Twine const&, llvm::SmallVectorImpl&)"}, + {"_ZN4llvm3sys4path8filenameENS_9StringRefE", "llvm::sys::path::filename(llvm::StringRef)"}, + {"_ZN4llvm3sys4path4stemENS_9StringRefE", "llvm::sys::path::stem(llvm::StringRef)"}, + {"_ZN4llvm3sys4path9extensionENS_9StringRefE", "llvm::sys::path::extension(llvm::StringRef)"}, + {"_ZN4llvm3sys4path18has_root_directoryERKNS_5TwineE", "llvm::sys::path::has_root_directory(llvm::Twine const&)"}, + {"_ZN4llvm3sys4path13has_root_pathERKNS_5TwineE", "llvm::sys::path::has_root_path(llvm::Twine const&)"}, + {"_ZN4llvm3sys4path17has_relative_pathERKNS_5TwineE", "llvm::sys::path::has_relative_path(llvm::Twine const&)"}, + {"_ZN4llvm3sys4path12has_filenameERKNS_5TwineE", "llvm::sys::path::has_filename(llvm::Twine const&)"}, + {"_ZN4llvm3sys4path15has_parent_pathERKNS_5TwineE", "llvm::sys::path::has_parent_path(llvm::Twine const&)"}, + {"_ZN4llvm3sys4path8has_stemERKNS_5TwineE", "llvm::sys::path::has_stem(llvm::Twine const&)"}, + {"_ZN4llvm3sys4path13has_extensionERKNS_5TwineE", "llvm::sys::path::has_extension(llvm::Twine const&)"}, + {"_ZN4llvm3sys4path11is_absoluteERKNS_5TwineE", "llvm::sys::path::is_absolute(llvm::Twine const&)"}, + {"_ZN4llvm3sys4path11is_relativeERKNS_5TwineE", "llvm::sys::path::is_relative(llvm::Twine const&)"}, + {"_ZN4llvm3sys2fs13make_absoluteERNS_15SmallVectorImplIcEE", "llvm::sys::fs::make_absolute(llvm::SmallVectorImpl&)"}, + {"_ZN4llvm3sys2fs12current_pathERNS_15SmallVectorImplIcEE", "llvm::sys::fs::current_path(llvm::SmallVectorImpl&)"}, + {"_ZN4llvm3sys2fs18create_directoriesERKNS_5TwineERb", "llvm::sys::fs::create_directories(llvm::Twine const&, bool&)"}, + {"_ZN4llvm3sys2fs6existsERKNS_5TwineERb", "llvm::sys::fs::exists(llvm::Twine const&, bool&)"}, + {"_ZN4llvm3sys2fs16create_directoryERKNS_5TwineERb", "llvm::sys::fs::create_directory(llvm::Twine const&, bool&)"}, + {"_ZN4llvm3sys2fs6existsENS1_11file_statusE", "llvm::sys::fs::exists(llvm::sys::fs::file_status)"}, + {"_ZN4llvm3sys2fs12status_knownENS1_11file_statusE", "llvm::sys::fs::status_known(llvm::sys::fs::file_status)"}, + {"_ZN4llvm3sys2fs12is_directoryENS1_11file_statusE", "llvm::sys::fs::is_directory(llvm::sys::fs::file_status)"}, + {"_ZN4llvm3sys2fs12is_directoryERKNS_5TwineERb", "llvm::sys::fs::is_directory(llvm::Twine const&, bool&)"}, + {"_ZN4llvm3sys2fs6statusERKNS_5TwineERNS1_11file_statusE", "llvm::sys::fs::status(llvm::Twine const&, llvm::sys::fs::file_status&)"}, + {"_ZN4llvm3sys2fs15is_regular_fileENS1_11file_statusE", "llvm::sys::fs::is_regular_file(llvm::sys::fs::file_status)"}, + {"_ZN4llvm3sys2fs15is_regular_fileERKNS_5TwineERb", "llvm::sys::fs::is_regular_file(llvm::Twine const&, bool&)"}, + {"_ZN4llvm3sys2fs10is_symlinkENS1_11file_statusE", "llvm::sys::fs::is_symlink(llvm::sys::fs::file_status)"}, + {"_ZN4llvm3sys2fs10is_symlinkERKNS_5TwineERb", "llvm::sys::fs::is_symlink(llvm::Twine const&, bool&)"}, + {"_ZN4llvm3sys2fs8is_otherENS1_11file_statusE", "llvm::sys::fs::is_other(llvm::sys::fs::file_status)"}, + {"_ZN4llvm3sys2fs15directory_entry16replace_filenameERKNS_5TwineENS1_11file_statusES6_", "llvm::sys::fs::directory_entry::replace_filename(llvm::Twine const&, llvm::sys::fs::file_status, llvm::sys::fs::file_status)"}, + {"_ZN4llvm3sys2fs9has_magicERKNS_5TwineES4_Rb", "llvm::sys::fs::has_magic(llvm::Twine const&, llvm::Twine const&, bool&)"}, + {"_ZN4llvm3sys2fs9get_magicERKNS_5TwineEjRNS_15SmallVectorImplIcEE", "llvm::sys::fs::get_magic(llvm::Twine const&, unsigned int, llvm::SmallVectorImpl&)"}, + {"_ZN4llvm3sys2fs14identify_magicERKNS_5TwineERNS0_12LLVMFileTypeE", "llvm::sys::fs::identify_magic(llvm::Twine const&, llvm::sys::LLVMFileType&)"}, + {"_ZN4llvm3sys2fs10remove_allERKNS_5TwineERj", "llvm::sys::fs::remove_all(llvm::Twine const&, unsigned int&)"}, + {"_ZN4llvm3sys2fs12_GLOBAL__N_112remove_all_rENS_9StringRefENS1_9file_typeERj", "llvm::sys::fs::(anonymous namespace)::remove_all_r(llvm::StringRef, llvm::sys::fs::file_type, unsigned int&)"}, + {"_ZNK4llvm3sys2fs15directory_entry6statusERNS1_11file_statusE", "llvm::sys::fs::directory_entry::status(llvm::sys::fs::file_status&) const"}, + {"_ZN4llvm3sys2fs9copy_fileERKNS_5TwineES4_NS1_11copy_optionE", "llvm::sys::fs::copy_file(llvm::Twine const&, llvm::Twine const&, llvm::sys::fs::copy_option)"}, + {"_ZN4llvm3sys2fs16create_hard_linkERKNS_5TwineES4_", "llvm::sys::fs::create_hard_link(llvm::Twine const&, llvm::Twine const&)"}, + {"_ZN4llvm3sys2fs14create_symlinkERKNS_5TwineES4_", "llvm::sys::fs::create_symlink(llvm::Twine const&, llvm::Twine const&)"}, + {"_ZN4llvm3sys2fs6removeERKNS_5TwineERb", "llvm::sys::fs::remove(llvm::Twine const&, bool&)"}, + {"_ZN4llvm3sys2fs6renameERKNS_5TwineES4_", "llvm::sys::fs::rename(llvm::Twine const&, llvm::Twine const&)"}, + {"_ZN4llvm3sys2fs11resize_fileERKNS_5TwineEy", "llvm::sys::fs::resize_file(llvm::Twine const&, unsigned long long)"}, + {"_ZN4llvm3sys2fs10equivalentERKNS_5TwineES4_Rb", "llvm::sys::fs::equivalent(llvm::Twine const&, llvm::Twine const&, bool&)"}, + {"_ZN4llvm3sys2fs9file_sizeERKNS_5TwineERy", "llvm::sys::fs::file_size(llvm::Twine const&, unsigned long long&)"}, + {"_ZN4llvm3sys2fs11unique_fileERKNS_5TwineERiRNS_15SmallVectorImplIcEE", "llvm::sys::fs::unique_file(llvm::Twine const&, int&, llvm::SmallVectorImpl&)"}, + {"_ZN4llvm3sys2fs28directory_iterator_constructERNS1_18directory_iteratorENS_9StringRefE", "llvm::sys::fs::directory_iterator_construct(llvm::sys::fs::directory_iterator&, llvm::StringRef)"}, + {"_ZN4llvm3sys2fs28directory_iterator_incrementERNS1_18directory_iteratorE", "llvm::sys::fs::directory_iterator_increment(llvm::sys::fs::directory_iterator&)"}, + {"_ZN4llvm3sys2fs27directory_iterator_destructERNS1_18directory_iteratorE", "llvm::sys::fs::directory_iterator_destruct(llvm::sys::fs::directory_iterator&)"}, + {"_ZN4llvm3sys4path9canonicalEPKcRNS_15SmallVectorImplIcEE", "llvm::sys::path::canonical(char const*, llvm::SmallVectorImpl&)"}, + {"_ZN4llvm15SmallVectorImplIcE4swapERS1_", "llvm::SmallVectorImpl::swap(llvm::SmallVectorImpl&)"}, + {"_ZN4llvm21PrettyStackTraceEntryC1Ev", "llvm::PrettyStackTraceEntry::PrettyStackTraceEntry()"}, + {"_ZN4llvm21PrettyStackTraceEntryC2Ev", "llvm::PrettyStackTraceEntry::PrettyStackTraceEntry()"}, + {"_ZN4llvm21PrettyStackTraceEntryD0Ev", "llvm::PrettyStackTraceEntry::~PrettyStackTraceEntry()"}, + {"_ZN4llvm21PrettyStackTraceEntryD1Ev", "llvm::PrettyStackTraceEntry::~PrettyStackTraceEntry()"}, + {"_ZN4llvm21PrettyStackTraceEntryD2Ev", "llvm::PrettyStackTraceEntry::~PrettyStackTraceEntry()"}, + {"_ZNK4llvm22PrettyStackTraceString5printERNS_11raw_ostreamE", "llvm::PrettyStackTraceString::print(llvm::raw_ostream&) const"}, + {"_ZNK4llvm23PrettyStackTraceProgram5printERNS_11raw_ostreamE", "llvm::PrettyStackTraceProgram::print(llvm::raw_ostream&) const"}, + {"_Z12CrashHandlerPv", "CrashHandler(void*)"}, + {"_Z10PrintStackPKN4llvm21PrettyStackTraceEntryERNS_11raw_ostreamE", "PrintStack(llvm::PrettyStackTraceEntry const*, llvm::raw_ostream&)"}, + {"_ZN4llvm3sys11ThreadLocalIKNS_21PrettyStackTraceEntryEED1Ev", "llvm::sys::ThreadLocal::~ThreadLocal()"}, + {"_ZN4llvm3sys11ThreadLocalIKNS_21PrettyStackTraceEntryEED0Ev", "llvm::sys::ThreadLocal::~ThreadLocal()"}, + {"_ZN4llvm3sys7Process11GetPageSizeEv", "llvm::sys::Process::GetPageSize()"}, + {"_ZN4llvm3sys7Process14GetMallocUsageEv", "llvm::sys::Process::GetMallocUsage()"}, + {"_ZN4llvm3sys7Process19GetTotalMemoryUsageEv", "llvm::sys::Process::GetTotalMemoryUsage()"}, + {"_ZN4llvm3sys7Process12GetTimeUsageERNS0_9TimeValueES3_S3_", "llvm::sys::Process::GetTimeUsage(llvm::sys::TimeValue&, llvm::sys::TimeValue&, llvm::sys::TimeValue&)"}, + {"_ZN4llvm3sys7Process16GetCurrentUserIdEv", "llvm::sys::Process::GetCurrentUserId()"}, + {"_ZN4llvm3sys7Process17GetCurrentGroupIdEv", "llvm::sys::Process::GetCurrentGroupId()"}, + {"_ZN4llvm3sys7Process16PreventCoreFilesEv", "llvm::sys::Process::PreventCoreFiles()"}, + {"_ZN4llvm3sys7Process21StandardInIsUserInputEv", "llvm::sys::Process::StandardInIsUserInput()"}, + {"_ZN4llvm3sys7Process25FileDescriptorIsDisplayedEi", "llvm::sys::Process::FileDescriptorIsDisplayed(int)"}, + {"_ZN4llvm3sys7Process22StandardOutIsDisplayedEv", "llvm::sys::Process::StandardOutIsDisplayed()"}, + {"_ZN4llvm3sys7Process22StandardErrIsDisplayedEv", "llvm::sys::Process::StandardErrIsDisplayed()"}, + {"_ZN4llvm3sys7Process18StandardOutColumnsEv", "llvm::sys::Process::StandardOutColumns()"}, + {"_ZN4llvm3sys7Process18StandardErrColumnsEv", "llvm::sys::Process::StandardErrColumns()"}, + {"_ZN4llvm3sys7Process20StandardOutHasColorsEv", "llvm::sys::Process::StandardOutHasColors()"}, + {"_ZN4llvm3sys7Process20StandardErrHasColorsEv", "llvm::sys::Process::StandardErrHasColors()"}, + {"_ZN4llvm3sys7Process15ColorNeedsFlushEv", "llvm::sys::Process::ColorNeedsFlush()"}, + {"_ZN4llvm3sys7Process11OutputColorEcbb", "llvm::sys::Process::OutputColor(char, bool, bool)"}, + {"_ZN4llvm3sys7Process10OutputBoldEb", "llvm::sys::Process::OutputBold(bool)"}, + {"_ZN4llvm3sys7Process10ResetColorEv", "llvm::sys::Process::ResetColor()"}, + {"_ZN4llvm3sys7Program14ExecuteAndWaitERKNS0_4PathEPPKcS7_PPS3_jjPSs", "llvm::sys::Program::ExecuteAndWait(llvm::sys::Path const&, char const**, char const**, llvm::sys::Path const**, unsigned int, unsigned int, std::string*)"}, + {"_ZN4llvm3sys7ProgramC1Ev", "llvm::sys::Program::Program()"}, + {"_ZN4llvm3sys7Program7ExecuteERKNS0_4PathEPPKcS7_PPS3_jPSs", "llvm::sys::Program::Execute(llvm::sys::Path const&, char const**, char const**, llvm::sys::Path const**, unsigned int, std::string*)"}, + {"_ZN4llvm3sys7Program4WaitERKNS0_4PathEjPSs", "llvm::sys::Program::Wait(llvm::sys::Path const&, unsigned int, std::string*)"}, + {"_ZN4llvm3sys7ProgramD1Ev", "llvm::sys::Program::~Program()"}, + {"_ZN4llvm3sys7Program13ExecuteNoWaitERKNS0_4PathEPPKcS7_PPS3_jPSs", "llvm::sys::Program::ExecuteNoWait(llvm::sys::Path const&, char const**, char const**, llvm::sys::Path const**, unsigned int, std::string*)"}, + {"_ZN4llvm3sys7ProgramC2Ev", "llvm::sys::Program::Program()"}, + {"_ZN4llvm3sys7ProgramD2Ev", "llvm::sys::Program::~Program()"}, + {"_ZNK4llvm3sys7Program6GetPidEv", "llvm::sys::Program::GetPid() const"}, + {"_ZN4llvm3sys7Program17FindProgramByNameERKSs", "llvm::sys::Program::FindProgramByName(std::string const&)"}, + {"_ZN4llvm13RedirectIO_PSEPKNS_3sys4PathEiPSsRPv", "llvm::RedirectIO_PS(llvm::sys::Path const*, int, std::string*, void*&)"}, + {"_Z10MakeErrMsgPSsRKSsi", "MakeErrMsg(std::string*, std::string const&, int)"}, + {"_ZN4llvm10RedirectIOEPKNS_3sys4PathEiPSs", "llvm::RedirectIO(llvm::sys::Path const*, int, std::string*)"}, + {"_ZN4llvm14TimeOutHandlerEi", "llvm::TimeOutHandler(int)"}, + {"_ZN4llvm3sys7Program4KillEPSs", "llvm::sys::Program::Kill(std::string*)"}, + {"_ZN4llvm3sys7Program19ChangeStdinToBinaryEv", "llvm::sys::Program::ChangeStdinToBinary()"}, + {"_ZN4llvm3sys7Program20ChangeStdoutToBinaryEv", "llvm::sys::Program::ChangeStdoutToBinary()"}, + {"_ZN4llvm3sys7Program20ChangeStderrToBinaryEv", "llvm::sys::Program::ChangeStderrToBinary()"}, + {"_ZN4llvm3sys11RWMutexImplC1Ev", "llvm::sys::RWMutexImpl::RWMutexImpl()"}, + {"_ZN4llvm3sys11RWMutexImplC2Ev", "llvm::sys::RWMutexImpl::RWMutexImpl()"}, + {"_ZN4llvm3sys11RWMutexImplD1Ev", "llvm::sys::RWMutexImpl::~RWMutexImpl()"}, + {"_ZN4llvm3sys11RWMutexImplD2Ev", "llvm::sys::RWMutexImpl::~RWMutexImpl()"}, + {"_ZN4llvm3sys11RWMutexImpl14reader_acquireEv", "llvm::sys::RWMutexImpl::reader_acquire()"}, + {"_ZN4llvm3sys11RWMutexImpl14reader_releaseEv", "llvm::sys::RWMutexImpl::reader_release()"}, + {"_ZN4llvm3sys11RWMutexImpl14writer_acquireEv", "llvm::sys::RWMutexImpl::writer_acquire()"}, + {"_ZN4llvm3sys11RWMutexImpl14writer_releaseEv", "llvm::sys::RWMutexImpl::writer_release()"}, + {"_ZN4llvm5RegexC1ENS_9StringRefEj", "llvm::Regex::Regex(llvm::StringRef, unsigned int)"}, + {"_ZN4llvm5RegexC2ENS_9StringRefEj", "llvm::Regex::Regex(llvm::StringRef, unsigned int)"}, + {"_ZN4llvm5RegexD1Ev", "llvm::Regex::~Regex()"}, + {"_ZN4llvm5RegexD2Ev", "llvm::Regex::~Regex()"}, + {"_ZN4llvm5Regex7isValidERSs", "llvm::Regex::isValid(std::string&)"}, + {"_ZNK4llvm5Regex13getNumMatchesEv", "llvm::Regex::getNumMatches() const"}, + {"_ZN4llvm5Regex5matchENS_9StringRefEPNS_15SmallVectorImplIS1_EE", "llvm::Regex::match(llvm::StringRef, llvm::SmallVectorImpl*)"}, + {"_ZN4llvm5Regex3subENS_9StringRefES1_PSs", "llvm::Regex::sub(llvm::StringRef, llvm::StringRef, std::string*)"}, + {"_ZN4llvm15SmallVectorImplI15llvm_regmatch_tE6resizeEj", "llvm::SmallVectorImpl::resize(unsigned int)"}, + {"_ZN4llvm23SmallVectorTemplateBaseI15llvm_regmatch_tLb0EE4growEm", "llvm::SmallVectorTemplateBase::grow(unsigned long)"}, + {"_ZN4llvm31SearchForAddressOfSpecialSymbolEPKc", "llvm::SearchForAddressOfSpecialSymbol(char const*)"}, + {"_ZN4llvm3sys20RunInterruptHandlersEv", "llvm::sys::RunInterruptHandlers()"}, + {"_ZN4llvm3sys20SetInterruptFunctionEPFvvE", "llvm::sys::SetInterruptFunction(void (*)())"}, + {"_ZN4llvm3sys18RemoveFileOnSignalERKNS0_4PathEPSs", "llvm::sys::RemoveFileOnSignal(llvm::sys::Path const&, std::string*)"}, + {"_ZN4llvm3sys22DontRemoveFileOnSignalERKNS0_4PathE", "llvm::sys::DontRemoveFileOnSignal(llvm::sys::Path const&)"}, + {"_ZN4llvm3sys16AddSignalHandlerEPFvPvES1_", "llvm::sys::AddSignalHandler(void (*)(void*), void*)"}, + {"_ZN4llvm3sys28PrintStackTraceOnErrorSignalEv", "llvm::sys::PrintStackTraceOnErrorSignal()"}, + {"_Z15PrintStackTracePv", "PrintStackTrace(void*)"}, + {"_Z12__assert_rtnPKcS0_iS0_", "__assert_rtn(char const*, char const*, int, char const*)"}, + {"_Z13SignalHandleri", "SignalHandler(int)"}, + {"_ZN4llvm3sys10SmartMutexILb1EED1Ev", "llvm::sys::SmartMutex::~SmartMutex()"}, + {"_ZNSt6vectorIN4llvm3sys4PathESaIS2_EED1Ev", "std::vector>::~vector()"}, + + // {"_ZNSt6vectorISt4pairIPFvPvES1_ESaIS4_EED1Ev", + // "std::vector, std::allocator>>::~vector()"}, + // got error + + + // {"_ZNSt6vectorISt4pairIPFvPvES1_ESaIS4_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS4_S6_EERKS4_", + // "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + // got error + + + // {"_ZSt6__findISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPN4llvm3sys4PathESt6vectorIS5_SaIS5_EEEEES5_ET_SC_SC_RKT0_St26random_access_iterator_tag", + // "std::reverse_iterator<__gnu_cxx::__normal_iterator>>> std::__find>>>, llvm::sys::Path>(std::reverse_iterator<__gnu_cxx::__normal_iterator>>>, std::reverse_iterator<__gnu_cxx::__normal_iterator>>>, llvm::sys::Path const&, std::random_access_iterator_tag)"}, + // got error + + {"_ZNSt6vectorIN4llvm3sys4PathESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::sys::Path const&)"}, + + // {"_ZSt6__findIPKiiET_S2_S2_RKT0_St26random_access_iterator_tag", + // "int const* std::__find(int const*, int const*, int const&, std::random_access_iterator_tag)"}, + // got error + + {"_ZN4llvm15SmallPtrSetImpl16shrink_and_clearEv", "llvm::SmallPtrSetImpl::shrink_and_clear()"}, + {"_ZN4llvm15SmallPtrSetImpl10insert_impEPKv", "llvm::SmallPtrSetImpl::insert_imp(void const*)"}, + {"_ZN4llvm15SmallPtrSetImpl4GrowEv", "llvm::SmallPtrSetImpl::Grow()"}, + {"_ZNK4llvm15SmallPtrSetImpl13FindBucketForEPKv", "llvm::SmallPtrSetImpl::FindBucketFor(void const*) const"}, + {"_ZN4llvm15SmallPtrSetImpl9erase_impEPKv", "llvm::SmallPtrSetImpl::erase_imp(void const*)"}, + {"_ZN4llvm15SmallPtrSetImplC1EPPKvRKS0_", "llvm::SmallPtrSetImpl::SmallPtrSetImpl(void const**, llvm::SmallPtrSetImpl const&)"}, + {"_ZN4llvm15SmallPtrSetImplC2EPPKvRKS0_", "llvm::SmallPtrSetImpl::SmallPtrSetImpl(void const**, llvm::SmallPtrSetImpl const&)"}, + {"_ZN4llvm15SmallPtrSetImpl8CopyFromERKS0_", "llvm::SmallPtrSetImpl::CopyFrom(llvm::SmallPtrSetImpl const&)"}, + {"_ZN4llvm15SmallPtrSetImplD1Ev", "llvm::SmallPtrSetImpl::~SmallPtrSetImpl()"}, + {"_ZN4llvm15SmallPtrSetImplD2Ev", "llvm::SmallPtrSetImpl::~SmallPtrSetImpl()"}, + {"_ZN4llvm9SourceMgrD1Ev", "llvm::SourceMgr::~SourceMgr()"}, + {"_ZN4llvm9SourceMgrD2Ev", "llvm::SourceMgr::~SourceMgr()"}, + {"_ZN4llvm9SourceMgr14AddIncludeFileERKSsNS_5SMLocE", "llvm::SourceMgr::AddIncludeFile(std::string const&, llvm::SMLoc)"}, + {"_ZNK4llvm9SourceMgr23FindBufferContainingLocENS_5SMLocE", "llvm::SourceMgr::FindBufferContainingLoc(llvm::SMLoc) const"}, + {"_ZNK4llvm9SourceMgr14FindLineNumberENS_5SMLocEi", "llvm::SourceMgr::FindLineNumber(llvm::SMLoc, int) const"}, + {"_ZNK4llvm9SourceMgr17PrintIncludeStackENS_5SMLocERNS_11raw_ostreamE", "llvm::SourceMgr::PrintIncludeStack(llvm::SMLoc, llvm::raw_ostream&) const"}, + {"_ZNK4llvm9SourceMgr10GetMessageENS_5SMLocERKNS_5TwineEPKcb", "llvm::SourceMgr::GetMessage(llvm::SMLoc, llvm::Twine const&, char const*, bool) const"}, + {"_ZNK4llvm9SourceMgr12PrintMessageENS_5SMLocERKNS_5TwineEPKcb", "llvm::SourceMgr::PrintMessage(llvm::SMLoc, llvm::Twine const&, char const*, bool) const"}, + {"_ZNK4llvm12SMDiagnostic5PrintEPKcRNS_11raw_ostreamE", "llvm::SMDiagnostic::Print(char const*, llvm::raw_ostream&) const"}, + {"_ZN4llvm9Statistic17RegisterStatisticEv", "llvm::Statistic::RegisterStatistic()"}, + {"_ZN4llvm16EnableStatisticsEv", "llvm::EnableStatistics()"}, + {"_ZN4llvm15PrintStatisticsERNS_11raw_ostreamE", "llvm::PrintStatistics(llvm::raw_ostream&)"}, + {"_ZN4llvm15PrintStatisticsEv", "llvm::PrintStatistics()"}, + + // {"_ZSt21__inplace_stable_sortIN9__gnu_cxx17__normal_iteratorIPPKN4llvm9StatisticESt6vectorIS5_SaIS5_EEEEN12_GLOBAL__N_111NameCompareEEvT_SD_T0_", + // "void std::__inplace_stable_sort<__gnu_cxx::__normal_iterator>>, (anonymous namespace)::NameCompare>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, (anonymous namespace)::NameCompare)"}, + // got error + + + // {"_ZSt22__stable_sort_adaptiveIN9__gnu_cxx17__normal_iteratorIPPKN4llvm9StatisticESt6vectorIS5_SaIS5_EEEES6_lN12_GLOBAL__N_111NameCompareEEvT_SD_T0_T1_T2_", + // "void std::__stable_sort_adaptive<__gnu_cxx::__normal_iterator>>, llvm::Statistic const**, long, (anonymous namespace)::NameCompare>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, llvm::Statistic const**, long, (anonymous namespace)::NameCompare)"}, + // got error + + + // {"_ZSt24__merge_sort_with_bufferIN9__gnu_cxx17__normal_iteratorIPPKN4llvm9StatisticESt6vectorIS5_SaIS5_EEEES6_N12_GLOBAL__N_111NameCompareEEvT_SD_T0_T1_", + // "void std::__merge_sort_with_buffer<__gnu_cxx::__normal_iterator>>, llvm::Statistic const**, (anonymous namespace)::NameCompare>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, llvm::Statistic const**, (anonymous namespace)::NameCompare)"}, + // got error + + + // {"_ZSt16__merge_adaptiveIN9__gnu_cxx17__normal_iteratorIPPKN4llvm9StatisticESt6vectorIS5_SaIS5_EEEElS6_N12_GLOBAL__N_111NameCompareEEvT_SD_SD_T0_SE_T1_SE_T2_", + // "void std::__merge_adaptive<__gnu_cxx::__normal_iterator>>, long, llvm::Statistic const**, (anonymous namespace)::NameCompare>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, long, long, llvm::Statistic const**, long, (anonymous namespace)::NameCompare)"}, + // got error + + + // {"_ZSt5mergeIPPKN4llvm9StatisticES4_N9__gnu_cxx17__normal_iteratorIS4_St6vectorIS3_SaIS3_EEEEN12_GLOBAL__N_111NameCompareEET1_T_SE_T0_SF_SD_T2_", + // "__gnu_cxx::__normal_iterator>> std::merge>>, (anonymous namespace)::NameCompare>(llvm::Statistic const**, llvm::Statistic const**, llvm::Statistic const**, llvm::Statistic const**, __gnu_cxx::__normal_iterator>>, (anonymous namespace)::NameCompare)"}, + // got error + + + // {"_ZSt5mergeIN9__gnu_cxx17__normal_iteratorIPPKN4llvm9StatisticESt6vectorIS5_SaIS5_EEEESA_S6_N12_GLOBAL__N_111NameCompareEET1_T_SE_T0_SF_SD_T2_", + // "llvm::Statistic const** std::merge<__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, llvm::Statistic const**, (anonymous namespace)::NameCompare>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, llvm::Statistic const**, (anonymous namespace)::NameCompare)"}, + // got error + + + // {"_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPPKN4llvm9StatisticESt6vectorIS5_SaIS5_EEEEN12_GLOBAL__N_111NameCompareEEvT_SD_T0_", + // "void std::__insertion_sort<__gnu_cxx::__normal_iterator>>, (anonymous namespace)::NameCompare>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, (anonymous namespace)::NameCompare)"}, + // got error + + + // {"_ZSt22__merge_without_bufferIN9__gnu_cxx17__normal_iteratorIPPKN4llvm9StatisticESt6vectorIS5_SaIS5_EEEElN12_GLOBAL__N_111NameCompareEEvT_SD_SD_T0_SE_T1_", + // "void std::__merge_without_buffer<__gnu_cxx::__normal_iterator>>, long, (anonymous namespace)::NameCompare>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, long, long, (anonymous namespace)::NameCompare)"}, + // got error + + {"_ZN4llvm14object_creatorIN12_GLOBAL__N_113StatisticInfoEEEPvv", "void* llvm::object_creator<(anonymous namespace)::StatisticInfo>()"}, + {"_ZN4llvm14object_deleterIN12_GLOBAL__N_113StatisticInfoEE4callEPv", "llvm::object_deleter<(anonymous namespace)::StatisticInfo>::call(void*)"}, + + // {"_ZSt8__rotateIN9__gnu_cxx17__normal_iteratorIPPKN4llvm9StatisticESt6vectorIS5_SaIS5_EEEEEvT_SB_SB_St26random_access_iterator_tag", + // "void std::__rotate<__gnu_cxx::__normal_iterator>>>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, std::random_access_iterator_tag)"}, + // got error + + {"_ZNSt6vectorIPKN4llvm9StatisticESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::Statistic const* const&)"}, + {"_ZN4llvm14StrInStrNoCaseENS_9StringRefES0_", "llvm::StrInStrNoCase(llvm::StringRef, llvm::StringRef)"}, + {"_ZN4llvm8getTokenENS_9StringRefES0_", "llvm::getToken(llvm::StringRef, llvm::StringRef)"}, + {"_ZN4llvm11SplitStringENS_9StringRefERNS_15SmallVectorImplIS0_EES0_", "llvm::SplitString(llvm::StringRef, llvm::SmallVectorImpl&, llvm::StringRef)"}, + {"_ZNK4llvm9StringRef5splitERNS_15SmallVectorImplIS0_EES0_ib", "llvm::StringRef::split(llvm::SmallVectorImpl&, llvm::StringRef, int, bool) const"}, + {"_ZN4llvm13StringMapImplC1Ejj", "llvm::StringMapImpl::StringMapImpl(unsigned int, unsigned int)"}, + {"_ZN4llvm13StringMapImplC2Ejj", "llvm::StringMapImpl::StringMapImpl(unsigned int, unsigned int)"}, + {"_ZN4llvm13StringMapImpl4initEj", "llvm::StringMapImpl::init(unsigned int)"}, + {"_ZN4llvm13StringMapImpl15LookupBucketForENS_9StringRefE", "llvm::StringMapImpl::LookupBucketFor(llvm::StringRef)"}, + {"_ZNK4llvm13StringMapImpl7FindKeyENS_9StringRefE", "llvm::StringMapImpl::FindKey(llvm::StringRef) const"}, + {"_ZN4llvm13StringMapImpl9RemoveKeyEPNS_18StringMapEntryBaseE", "llvm::StringMapImpl::RemoveKey(llvm::StringMapEntryBase*)"}, + {"_ZN4llvm13StringMapImpl9RemoveKeyENS_9StringRefE", "llvm::StringMapImpl::RemoveKey(llvm::StringRef)"}, + {"_ZN4llvm13StringMapImpl11RehashTableEv", "llvm::StringMapImpl::RehashTable()"}, + {"_ZN4llvm10StringPoolC1Ev", "llvm::StringPool::StringPool()"}, + {"_ZN4llvm10StringPoolC2Ev", "llvm::StringPool::StringPool()"}, + {"_ZN4llvm10StringPoolD1Ev", "llvm::StringPool::~StringPool()"}, + {"_ZN4llvm10StringPoolD2Ev", "llvm::StringPool::~StringPool()"}, + {"_ZN4llvm10StringPool6internENS_9StringRefE", "llvm::StringPool::intern(llvm::StringRef)"}, + {"_ZNK4llvm9StringRef13compare_lowerES0_", "llvm::StringRef::compare_lower(llvm::StringRef) const"}, + {"_ZNK4llvm9StringRef15compare_numericES0_", "llvm::StringRef::compare_numeric(llvm::StringRef) const"}, + {"_ZN4llvm9StringRef13edit_distanceES0_bj", "llvm::StringRef::edit_distance(llvm::StringRef, bool, unsigned int)"}, + {"_ZNK4llvm9StringRef4findES0_m", "llvm::StringRef::find(llvm::StringRef, unsigned long) const"}, + {"_ZNK4llvm9StringRef5rfindES0_", "llvm::StringRef::rfind(llvm::StringRef) const"}, + {"_ZNK4llvm9StringRef13find_first_ofES0_m", "llvm::StringRef::find_first_of(llvm::StringRef, unsigned long) const"}, + {"_ZNK4llvm9StringRef17find_first_not_ofEcm", "llvm::StringRef::find_first_not_of(char, unsigned long) const"}, + {"_ZNK4llvm9StringRef17find_first_not_ofES0_m", "llvm::StringRef::find_first_not_of(llvm::StringRef, unsigned long) const"}, + {"_ZNK4llvm9StringRef12find_last_ofES0_m", "llvm::StringRef::find_last_of(llvm::StringRef, unsigned long) const"}, + {"_ZNK4llvm9StringRef5countES0_", "llvm::StringRef::count(llvm::StringRef) const"}, + {"_ZNK4llvm9StringRef12getAsIntegerEjRy", "llvm::StringRef::getAsInteger(unsigned int, unsigned long long&) const"}, + {"_Z20GetAsUnsignedIntegerN4llvm9StringRefEjRy", "GetAsUnsignedInteger(llvm::StringRef, unsigned int, unsigned long long&)"}, + {"_ZNK4llvm9StringRef12getAsIntegerEjRx", "llvm::StringRef::getAsInteger(unsigned int, long long&) const"}, + {"_ZNK4llvm9StringRef12getAsIntegerEjRi", "llvm::StringRef::getAsInteger(unsigned int, int&) const"}, + {"_ZNK4llvm9StringRef12getAsIntegerEjRj", "llvm::StringRef::getAsInteger(unsigned int, unsigned int&) const"}, + {"_ZNK4llvm9StringRef12getAsIntegerEjRNS_5APIntE", "llvm::StringRef::getAsInteger(unsigned int, llvm::APInt&) const"}, + {"_ZN4llvm14TargetRegistry5beginEv", "llvm::TargetRegistry::begin()"}, + {"_ZN4llvm14TargetRegistry12lookupTargetERKSsRSs", "llvm::TargetRegistry::lookupTarget(std::string const&, std::string&)"}, + + // {"_ZN4llvm14TargetRegistry14RegisterTargetERNS_6TargetEPKcS4_PFjRKSsEb", + // "llvm::TargetRegistry::RegisterTarget(llvm::Target&, char const*, char const*, unsigned int (*)(std::string const&), bool)"}, + // got error + + {"_ZN4llvm14TargetRegistry22getClosestTargetForJITERSs", "llvm::TargetRegistry::getClosestTargetForJIT(std::string&)"}, + {"_ZN4llvm3sys15ThreadLocalImplC1Ev", "llvm::sys::ThreadLocalImpl::ThreadLocalImpl()"}, + {"_ZN4llvm3sys15ThreadLocalImplD0Ev", "llvm::sys::ThreadLocalImpl::~ThreadLocalImpl()"}, + {"_ZN4llvm3sys15ThreadLocalImplD1Ev", "llvm::sys::ThreadLocalImpl::~ThreadLocalImpl()"}, + {"_ZN4llvm3sys15ThreadLocalImplD2Ev", "llvm::sys::ThreadLocalImpl::~ThreadLocalImpl()"}, + {"_ZN4llvm3sys15ThreadLocalImpl11setInstanceEPKv", "llvm::sys::ThreadLocalImpl::setInstance(void const*)"}, + {"_ZN4llvm3sys15ThreadLocalImpl11getInstanceEv", "llvm::sys::ThreadLocalImpl::getInstance()"}, + {"_ZN4llvm3sys15ThreadLocalImpl14removeInstanceEv", "llvm::sys::ThreadLocalImpl::removeInstance()"}, + {"_ZN4llvm24llvm_start_multithreadedEv", "llvm::llvm_start_multithreaded()"}, + {"_ZN4llvm23llvm_stop_multithreadedEv", "llvm::llvm_stop_multithreaded()"}, + {"_ZN4llvm22llvm_execute_on_threadEPFvPvES0_j", "llvm::llvm_execute_on_thread(void (*)(void*), void*, unsigned int)"}, + {"_Z24ExecuteOnThread_DispatchPv", "ExecuteOnThread_Dispatch(void*)"}, + {"_ZN4llvm3sys9TimeValue9normalizeEv", "llvm::sys::TimeValue::normalize()"}, + {"_ZNK4llvm3sys9TimeValue3strEv", "llvm::sys::TimeValue::str() const"}, + {"_ZN4llvm3sys9TimeValue3nowEv", "llvm::sys::TimeValue::now()"}, + {"_ZN4llvm20CreateInfoOutputFileEv", "llvm::CreateInfoOutputFile()"}, + {"_ZN4llvm5Timer4initENS_9StringRefE", "llvm::Timer::init(llvm::StringRef)"}, + {"_ZN4llvm10TimerGroup8addTimerERNS_5TimerE", "llvm::TimerGroup::addTimer(llvm::Timer&)"}, + {"_ZN4llvm5Timer4initENS_9StringRefERNS_10TimerGroupE", "llvm::Timer::init(llvm::StringRef, llvm::TimerGroup&)"}, + {"_ZN4llvm5TimerD1Ev", "llvm::Timer::~Timer()"}, + {"_ZN4llvm5TimerD2Ev", "llvm::Timer::~Timer()"}, + {"_ZN4llvm10TimerGroup11removeTimerERNS_5TimerE", "llvm::TimerGroup::removeTimer(llvm::Timer&)"}, + {"_ZN4llvm10TimeRecord14getCurrentTimeEb", "llvm::TimeRecord::getCurrentTime(bool)"}, + {"_ZN4llvm5Timer10startTimerEv", "llvm::Timer::startTimer()"}, + {"_ZN4llvm5Timer9stopTimerEv", "llvm::Timer::stopTimer()"}, + {"_ZNK4llvm10TimeRecord5printERKS0_RNS_11raw_ostreamE", "llvm::TimeRecord::print(llvm::TimeRecord const&, llvm::raw_ostream&) const"}, + {"_Z8printValddRN4llvm11raw_ostreamE", "printVal(double, double, llvm::raw_ostream&)"}, + {"_ZN4llvm16NamedRegionTimerC1ENS_9StringRefEb", "llvm::NamedRegionTimer::NamedRegionTimer(llvm::StringRef, bool)"}, + {"_ZN4llvm16NamedRegionTimerC2ENS_9StringRefEb", "llvm::NamedRegionTimer::NamedRegionTimer(llvm::StringRef, bool)"}, + {"_ZN4llvm16NamedRegionTimerC1ENS_9StringRefES1_b", "llvm::NamedRegionTimer::NamedRegionTimer(llvm::StringRef, llvm::StringRef, bool)"}, + {"_ZN4llvm16NamedRegionTimerC2ENS_9StringRefES1_b", "llvm::NamedRegionTimer::NamedRegionTimer(llvm::StringRef, llvm::StringRef, bool)"}, + {"_ZN4llvm10TimerGroupC1ENS_9StringRefE", "llvm::TimerGroup::TimerGroup(llvm::StringRef)"}, + {"_ZN4llvm10TimerGroupC2ENS_9StringRefE", "llvm::TimerGroup::TimerGroup(llvm::StringRef)"}, + {"_ZN4llvm10TimerGroupD1Ev", "llvm::TimerGroup::~TimerGroup()"}, + {"_ZN4llvm10TimerGroupD2Ev", "llvm::TimerGroup::~TimerGroup()"}, + {"_ZN4llvm10TimerGroup17PrintQueuedTimersERNS_11raw_ostreamE", "llvm::TimerGroup::PrintQueuedTimers(llvm::raw_ostream&)"}, + {"_ZN4llvm10TimerGroup5printERNS_11raw_ostreamE", "llvm::TimerGroup::print(llvm::raw_ostream&)"}, + {"_ZN4llvm10TimerGroup8printAllERNS_11raw_ostreamE", "llvm::TimerGroup::printAll(llvm::raw_ostream&)"}, + {"_ZN4llvm14object_creatorIN12_GLOBAL__N_112Name2PairMapEEEPvv", "void* llvm::object_creator<(anonymous namespace)::Name2PairMap>()"}, + {"_ZN4llvm14object_deleterIN12_GLOBAL__N_112Name2PairMapEE4callEPv", "llvm::object_deleter<(anonymous namespace)::Name2PairMap>::call(void*)"}, + {"_ZN4llvm2cl3optIbLb0ENS0_6parserIbEEED1Ev", "llvm::cl::opt>::~opt()"}, + + // {"_ZN4llvm2cl3optISsLb1ENS0_6parserISsEEED1Ev", + // "llvm::cl::opt>::~opt()"}, + // "llvm::cl::opt>::~string()" was returned + + {"_ZN4llvm14format_object1IxED1Ev", "llvm::format_object1::~format_object1()"}, + {"_ZN4llvm14format_object1IdED1Ev", "llvm::format_object1::~format_object1()"}, + + // {"_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4llvm10TimeRecordESsESt6vectorIS5_SaIS5_EEEElEvT_SB_T0_", + // "void std::__introsort_loop<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long)"}, + // "void std::__introsort_loop<__gnu_cxx::__normal_iterator*, std::vector>>, long>(llvm::TimeRecord, __gnu_cxx::__normal_iterator*, std::vector>>, std::string)" was returned + + + // {"_ZSt22__final_insertion_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4llvm10TimeRecordESsESt6vectorIS5_SaIS5_EEEEEvT_SB_", + // "void std::__final_insertion_sort<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>)"}, + // "void std::__final_insertion_sort<__gnu_cxx::__normal_iterator*, std::vector>>>(llvm::TimeRecord, __gnu_cxx::__normal_iterator*, std::vector>>)" was returned + + + // {"_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4llvm10TimeRecordESsESt6vectorIS5_SaIS5_EEEEEvT_SB_", + // "void std::__insertion_sort<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>)"}, + // "void std::__insertion_sort<__gnu_cxx::__normal_iterator*, std::vector>>>(llvm::TimeRecord, __gnu_cxx::__normal_iterator*, std::vector>>)" was returned + + + // {"_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4llvm10TimeRecordESsESt6vectorIS5_SaIS5_EEEES5_EvT_T0_", + // "void std::__unguarded_linear_insert<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair)"}, + // "void std::__unguarded_linear_insert<__gnu_cxx::__normal_iterator*, std::vector>>, std::string>(llvm::TimeRecord, std::string)" was returned + + + // {"_ZSt21__unguarded_partitionIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4llvm10TimeRecordESsESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_T0_", + // "__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>> std::__unguarded_partition<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair)"}, + // "llvm::TimeRecord std::__unguarded_partition<__gnu_cxx::__normal_iterator*, std::vector>>, std::string>(__gnu_cxx::__normal_iterator*, std::vector>>, __gnu_cxx::__normal_iterator*, std::vector>>, std::string)" was returned + + + // {"_ZSt8__medianISt4pairIN4llvm10TimeRecordESsEERKT_S6_S6_S6_", + // "std::pair const& std::__median>(std::pair const&, std::pair const&, std::pair const&)"}, + // "llvm::TimeRecord const& std::__median>(llvm::TimeRecord const&, llvm::TimeRecord const&, llvm::TimeRecord const&)" was returned + + + // {"_ZSt13__heap_selectIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4llvm10TimeRecordESsESt6vectorIS5_SaIS5_EEEEEvT_SB_SB_", + // "void std::__heap_select<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>)"}, + // "void std::__heap_select<__gnu_cxx::__normal_iterator*, std::vector>>>(llvm::TimeRecord, __gnu_cxx::__normal_iterator*, std::vector>>, __gnu_cxx::__normal_iterator*, std::vector>>)" was returned + + + // {"_ZSt8pop_heapIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4llvm10TimeRecordESsESt6vectorIS5_SaIS5_EEEEEvT_SB_", + // "void std::pop_heap<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>)"}, + // "void std::pop_heap<__gnu_cxx::__normal_iterator*, std::vector>>>(llvm::TimeRecord, __gnu_cxx::__normal_iterator*, std::vector>>)" was returned + + + // {"_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4llvm10TimeRecordESsESt6vectorIS5_SaIS5_EEEElS5_EvT_T0_SC_T1_", + // "void std::__adjust_heap<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long, std::pair>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long, long, std::pair)"}, + // got error + + + // {"_ZSt11__push_heapIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4llvm10TimeRecordESsESt6vectorIS5_SaIS5_EEEElS5_EvT_T0_SC_T1_", + // "void std::__push_heap<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long, std::pair>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, long, long, std::pair)"}, + // got error + + + // {"_ZSt9make_heapIN9__gnu_cxx17__normal_iteratorIPSt4pairIN4llvm10TimeRecordESsESt6vectorIS5_SaIS5_EEEEEvT_SB_", + // "void std::make_heap<__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, __gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>)"}, + // "void std::make_heap<__gnu_cxx::__normal_iterator*, std::vector>>>(llvm::TimeRecord, __gnu_cxx::__normal_iterator*, std::vector>>)" was returned + + + // {"_ZNSt6vectorISt4pairIN4llvm10TimeRecordESsESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_", + // "std::vector, std::allocator>>::_M_insert_aux(__gnu_cxx::__normal_iterator*, std::vector, std::allocator>>>, std::pair const&)"}, + // "std::vector, std::allocator>::_M_insert_aux(__gnu_cxx::__normal_iterator>, std::string const&)" was returned + + + // {"_ZN4llvm9StringMapISt4pairIPNS_10TimerGroupENS0_INS_5TimerENS_15MallocAllocatorEEEES5_ED2Ev", + // "llvm::StringMap>, llvm::MallocAllocator>::~StringMap()"}, + // "llvm::StringMap>, llvm::StringMap>::~StringMap()" was returned + + {"_ZN4llvm9StringMapINS_5TimerENS_15MallocAllocatorEE5clearEv", "llvm::StringMap::clear()"}, + {"_ZN4llvm14object_creatorINS_3sys10SmartMutexILb1EEEEEPvv", "void* llvm::object_creator>()"}, + {"_ZN4llvm14object_deleterINS_3sys10SmartMutexILb1EEEE4callEPv", "llvm::object_deleter>::call(void*)"}, + {"_ZNK4llvm14format_object1IxE7snprintEPcj", "llvm::format_object1::snprint(char*, unsigned int) const"}, + {"_ZN4llvm14format_object1IxED0Ev", "llvm::format_object1::~format_object1()"}, + {"_ZN4llvm18format_object_baseD1Ev", "llvm::format_object_base::~format_object_base()"}, + {"_ZN4llvm18format_object_baseD0Ev", "llvm::format_object_base::~format_object_base()"}, + {"_ZNK4llvm14format_object1IdE7snprintEPcj", "llvm::format_object1::snprint(char*, unsigned int) const"}, + {"_ZN4llvm14format_object1IdED0Ev", "llvm::format_object1::~format_object1()"}, + + // {"_ZSt6__findIN9__gnu_cxx17__normal_iteratorIPPN4llvm5TimerESt6vectorIS4_SaIS4_EEEES4_ET_SA_SA_RKT0_St26random_access_iterator_tag", + // "__gnu_cxx::__normal_iterator>> std::__find<__gnu_cxx::__normal_iterator>>, llvm::Timer*>(__gnu_cxx::__normal_iterator>>, __gnu_cxx::__normal_iterator>>, llvm::Timer* const&, std::random_access_iterator_tag)"}, + // got error + + {"_ZNSt6vectorIPN4llvm5TimerESaIS2_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS2_S4_EERKS2_", "std::vector>::_M_insert_aux(__gnu_cxx::__normal_iterator>>, llvm::Timer* const&)"}, + {"_ZN4llvm14object_creatorISt6vectorIPNS_5TimerESaIS3_EEEEPvv", "void* llvm::object_creator>>()"}, + {"_ZN4llvm14object_deleterISt6vectorIPNS_5TimerESaIS3_EEE4callEPv", "llvm::object_deleter>>::call(void*)"}, + + // {"_ZN4llvm2cl3optISsLb1ENS0_6parserISsEEE16handleOccurrenceEjNS_9StringRefES5_", + // "llvm::cl::opt>::handleOccurrence(unsigned int, llvm::StringRef, llvm::StringRef)"}, + // "llvm::cl::opt>::handleOccurrence(unsigned int, llvm::StringRef, llvm::cl::opt>)" was returned + + {"_ZNK4llvm2cl3optISsLb1ENS0_6parserISsEEE27getValueExpectedFlagDefaultEv", "llvm::cl::opt>::getValueExpectedFlagDefault() const"}, + {"_ZNK4llvm2cl3optISsLb1ENS0_6parserISsEEE14getOptionWidthEv", "llvm::cl::opt>::getOptionWidth() const"}, + {"_ZNK4llvm2cl3optISsLb1ENS0_6parserISsEEE15printOptionInfoEm", "llvm::cl::opt>::printOptionInfo(unsigned long) const"}, + {"_ZN4llvm2cl3optISsLb1ENS0_6parserISsEEE19getExtraOptionNamesERNS_15SmallVectorImplIPKcEE", "llvm::cl::opt>::getExtraOptionNames(llvm::SmallVectorImpl&)"}, + + // {"_ZN4llvm2cl3optISsLb1ENS0_6parserISsEEED0Ev", + // "llvm::cl::opt>::~opt()"}, + // "llvm::cl::opt>::~string()" was returned + + + // {"_ZN4llvm2cl6parserISsED1Ev", + // "llvm::cl::parser::~parser()"}, + // "llvm::cl::parser::~string()" was returned + + + // {"_ZN4llvm2cl6parserISsED0Ev", + // "llvm::cl::parser::~parser()"}, + // "llvm::cl::parser::~string()" was returned + + {"_ZNK4llvm2cl6parserISsE12getValueNameEv", "llvm::cl::parser::getValueName() const"}, + {"_ZN4llvm2cl17basic_parser_implD1Ev", "llvm::cl::basic_parser_impl::~basic_parser_impl()"}, + {"_ZN4llvm2cl17basic_parser_implD0Ev", "llvm::cl::basic_parser_impl::~basic_parser_impl()"}, + {"_ZNK4llvm2cl17basic_parser_impl12getValueNameEv", "llvm::cl::basic_parser_impl::getValueName() const"}, + {"_ZNK4llvm2cl6Option27getValueExpectedFlagDefaultEv", "llvm::cl::Option::getValueExpectedFlagDefault() const"}, + {"_ZN4llvm2cl6Option19getExtraOptionNamesERNS_15SmallVectorImplIPKcEE", "llvm::cl::Option::getExtraOptionNames(llvm::SmallVectorImpl&)"}, + {"_ZN4llvm2cl6OptionD1Ev", "llvm::cl::Option::~Option()"}, + {"_ZN4llvm2cl6OptionD0Ev", "llvm::cl::Option::~Option()"}, + {"_ZN4llvm2cl6parserIbED1Ev", "llvm::cl::parser::~parser()"}, + {"_ZN4llvm2cl6parserIbED0Ev", "llvm::cl::parser::~parser()"}, + {"_ZNK4llvm2cl6parserIbE12getValueNameEv", "llvm::cl::parser::getValueName() const"}, + {"_ZN4llvm9StringMapINS_5TimerENS_15MallocAllocatorEE16GetOrCreateValueIS1_EERNS_14StringMapEntryIS1_EENS_9StringRefET_", "llvm::StringMapEntry& llvm::StringMap::GetOrCreateValue(llvm::StringRef, llvm::Timer)"}, + + // {"_ZN4llvm9StringMapISt4pairIPNS_10TimerGroupENS0_INS_5TimerENS_15MallocAllocatorEEEES5_E16GetOrCreateValueIS7_EERNS_14StringMapEntryIS7_EENS_9StringRefET_", + // "llvm::StringMapEntry>>& llvm::StringMap>, llvm::MallocAllocator>::GetOrCreateValue>>(llvm::StringRef, std::pair>)"}, + // "llvm::StringMapEntry>, llvm::StringMap>>& llvm::StringMap>, llvm::StringMap>::GetOrCreateValue>, llvm::StringMap>>(llvm::StringRef, llvm::TimerGroup*)" was returned + + + // {"_ZN4llvm14StringMapEntryISt4pairIPNS_10TimerGroupENS_9StringMapINS_5TimerENS_15MallocAllocatorEEEEE6CreateIS6_S8_EEPS9_PKcSD_RT_T0_", + // "llvm::StringMapEntry>>* llvm::StringMapEntry>>::Create>>(char const*, char const*, llvm::MallocAllocator&, std::pair>)"}, + // got error + + {"_ZN4llvm14object_creatorINS_9StringMapINS_5TimerENS_15MallocAllocatorEEEEEPvv", "void* llvm::object_creator>()"}, + {"_ZN4llvm14object_deleterINS_9StringMapINS_5TimerENS_15MallocAllocatorEEEE4callEPv", "llvm::object_deleter>::call(void*)"}, + {"_ZN4llvm14object_creatorISsEEPvv", "void* llvm::object_creator()"}, + {"_ZN4llvm14object_deleterISsE4callEPv", "llvm::object_deleter::call(void*)"}, + {"_ZN4llvm6Triple15getArchTypeNameENS0_8ArchTypeE", "llvm::Triple::getArchTypeName(llvm::Triple::ArchType)"}, + {"_ZN4llvm6Triple17getArchTypePrefixENS0_8ArchTypeE", "llvm::Triple::getArchTypePrefix(llvm::Triple::ArchType)"}, + {"_ZN4llvm6Triple17getVendorTypeNameENS0_10VendorTypeE", "llvm::Triple::getVendorTypeName(llvm::Triple::VendorType)"}, + {"_ZN4llvm6Triple13getOSTypeNameENS0_6OSTypeE", "llvm::Triple::getOSTypeName(llvm::Triple::OSType)"}, + {"_ZN4llvm6Triple22getEnvironmentTypeNameENS0_15EnvironmentTypeE", "llvm::Triple::getEnvironmentTypeName(llvm::Triple::EnvironmentType)"}, + {"_ZN4llvm6Triple22getArchTypeForLLVMNameENS_9StringRefE", "llvm::Triple::getArchTypeForLLVMName(llvm::StringRef)"}, + {"_ZN4llvm6Triple28getArchTypeForDarwinArchNameENS_9StringRefE", "llvm::Triple::getArchTypeForDarwinArchName(llvm::StringRef)"}, + {"_ZN4llvm6Triple23getArchNameForAssemblerEv", "llvm::Triple::getArchNameForAssembler()"}, + {"_ZNK4llvm6Triple11getArchNameEv", "llvm::Triple::getArchName() const"}, + {"_ZN4llvm6Triple9ParseArchENS_9StringRefE", "llvm::Triple::ParseArch(llvm::StringRef)"}, + {"_ZN4llvm6Triple11ParseVendorENS_9StringRefE", "llvm::Triple::ParseVendor(llvm::StringRef)"}, + {"_ZN4llvm6Triple7ParseOSENS_9StringRefE", "llvm::Triple::ParseOS(llvm::StringRef)"}, + {"_ZN4llvm6Triple16ParseEnvironmentENS_9StringRefE", "llvm::Triple::ParseEnvironment(llvm::StringRef)"}, + {"_ZNK4llvm6Triple5ParseEv", "llvm::Triple::Parse() const"}, + {"_ZNK4llvm6Triple13getVendorNameEv", "llvm::Triple::getVendorName() const"}, + {"_ZNK4llvm6Triple9getOSNameEv", "llvm::Triple::getOSName() const"}, + {"_ZNK4llvm6Triple18getEnvironmentNameEv", "llvm::Triple::getEnvironmentName() const"}, + {"_ZN4llvm6Triple9normalizeENS_9StringRefE", "llvm::Triple::normalize(llvm::StringRef)"}, + {"_ZNK4llvm6Triple23getOSAndEnvironmentNameEv", "llvm::Triple::getOSAndEnvironmentName() const"}, + {"_ZNK4llvm6Triple15getDarwinNumberERjS1_S1_", "llvm::Triple::getDarwinNumber(unsigned int&, unsigned int&, unsigned int&) const"}, + {"_ZN4llvm6Triple9setTripleERKNS_5TwineE", "llvm::Triple::setTriple(llvm::Twine const&)"}, + {"_ZN4llvm6Triple7setArchENS0_8ArchTypeE", "llvm::Triple::setArch(llvm::Triple::ArchType)"}, + {"_ZN4llvm6Triple11setArchNameENS_9StringRefE", "llvm::Triple::setArchName(llvm::StringRef)"}, + {"_ZN4llvm6Triple9setVendorENS0_10VendorTypeE", "llvm::Triple::setVendor(llvm::Triple::VendorType)"}, + {"_ZN4llvm6Triple13setVendorNameENS_9StringRefE", "llvm::Triple::setVendorName(llvm::StringRef)"}, + {"_ZN4llvm6Triple5setOSENS0_6OSTypeE", "llvm::Triple::setOS(llvm::Triple::OSType)"}, + {"_ZN4llvm6Triple9setOSNameENS_9StringRefE", "llvm::Triple::setOSName(llvm::StringRef)"}, + {"_ZN4llvm6Triple14setEnvironmentENS0_15EnvironmentTypeE", "llvm::Triple::setEnvironment(llvm::Triple::EnvironmentType)"}, + {"_ZN4llvm6Triple18setEnvironmentNameENS_9StringRefE", "llvm::Triple::setEnvironmentName(llvm::StringRef)"}, + {"_ZN4llvm6Triple23setOSAndEnvironmentNameENS_9StringRefE", "llvm::Triple::setOSAndEnvironmentName(llvm::StringRef)"}, + {"_ZNK4llvm5Twine3strEv", "llvm::Twine::str() const"}, + {"_ZNK4llvm5Twine11toStringRefERNS_15SmallVectorImplIcEE", "llvm::Twine::toStringRef(llvm::SmallVectorImpl&) const"}, + {"_ZNK4llvm5Twine8toVectorERNS_15SmallVectorImplIcEE", "llvm::Twine::toVector(llvm::SmallVectorImpl&) const"}, + {"_ZNK4llvm5Twine5printERNS_11raw_ostreamE", "llvm::Twine::print(llvm::raw_ostream&) const"}, + {"_ZNK4llvm5Twine25toNullTerminatedStringRefERNS_15SmallVectorImplIcEE", "llvm::Twine::toNullTerminatedStringRef(llvm::SmallVectorImpl&) const"}, + {"_ZNK4llvm5Twine13printOneChildERNS_11raw_ostreamEPKvNS0_8NodeKindE", "llvm::Twine::printOneChild(llvm::raw_ostream&, void const*, llvm::Twine::NodeKind) const"}, + {"_ZNK4llvm5Twine17printOneChildReprERNS_11raw_ostreamEPKvNS0_8NodeKindE", "llvm::Twine::printOneChildRepr(llvm::raw_ostream&, void const*, llvm::Twine::NodeKind) const"}, + {"_ZNK4llvm5Twine9printReprERNS_11raw_ostreamE", "llvm::Twine::printRepr(llvm::raw_ostream&) const"}, + {"_ZNK4llvm5Twine4dumpEv", "llvm::Twine::dump() const"}, + {"_ZNK4llvm5Twine8dumpReprEv", "llvm::Twine::dumpRepr() const"}, + {"_ZN4llvm3sys17RunningOnValgrindEv", "llvm::sys::RunningOnValgrind()"}, + {"_ZN4llvm3sys27ValgrindDiscardTranslationsEPKvm", "llvm::sys::ValgrindDiscardTranslations(void const*, unsigned long)"}, + {"_ZN4llvm11raw_ostreamD0Ev", "llvm::raw_ostream::~raw_ostream()"}, + {"_ZN4llvm11raw_ostreamD1Ev", "llvm::raw_ostream::~raw_ostream()"}, + {"_ZN4llvm11raw_ostreamD2Ev", "llvm::raw_ostream::~raw_ostream()"}, + {"_ZN4llvm11raw_ostream6handleEv", "llvm::raw_ostream::handle()"}, + {"_ZNK4llvm11raw_ostream21preferred_buffer_sizeEv", "llvm::raw_ostream::preferred_buffer_size() const"}, + {"_ZN4llvm11raw_ostream11SetBufferedEv", "llvm::raw_ostream::SetBuffered()"}, + {"_ZN4llvm11raw_ostream16SetBufferAndModeEPcmNS0_10BufferKindE", "llvm::raw_ostream::SetBufferAndMode(char*, unsigned long, llvm::raw_ostream::BufferKind)"}, + {"_ZN4llvm11raw_ostreamlsEm", "llvm::raw_ostream::operator<<(unsigned long)"}, + {"_ZN4llvm11raw_ostream5writeEPKcm", "llvm::raw_ostream::write(char const*, unsigned long)"}, + {"_ZN4llvm11raw_ostreamlsEl", "llvm::raw_ostream::operator<<(long)"}, + {"_ZN4llvm11raw_ostreamlsEy", "llvm::raw_ostream::operator<<(unsigned long long)"}, + {"_ZN4llvm11raw_ostreamlsEx", "llvm::raw_ostream::operator<<(long long)"}, + {"_ZN4llvm11raw_ostream9write_hexEy", "llvm::raw_ostream::write_hex(unsigned long long)"}, + {"_ZN4llvm11raw_ostream13write_escapedENS_9StringRefEb", "llvm::raw_ostream::write_escaped(llvm::StringRef, bool)"}, + {"_ZN4llvm11raw_ostreamlsEPKv", "llvm::raw_ostream::operator<<(void const*)"}, + {"_ZN4llvm11raw_ostreamlsEd", "llvm::raw_ostream::operator<<(double)"}, + {"_ZN4llvm11raw_ostreamlsERKNS_18format_object_baseE", "llvm::raw_ostream::operator<<(llvm::format_object_base const&)"}, + {"_ZN4llvm11raw_ostream14flush_nonemptyEv", "llvm::raw_ostream::flush_nonempty()"}, + {"_ZN4llvm11raw_ostream5writeEh", "llvm::raw_ostream::write(unsigned char)"}, + {"_ZN4llvm11raw_ostream14copy_to_bufferEPKcm", "llvm::raw_ostream::copy_to_buffer(char const*, unsigned long)"}, + {"_ZN4llvm11raw_ostream6indentEj", "llvm::raw_ostream::indent(unsigned int)"}, + {"_ZN4llvm18format_object_base4homeEv", "llvm::format_object_base::home()"}, + {"_ZN4llvm14raw_fd_ostreamC1EPKcRSsj", "llvm::raw_fd_ostream::raw_fd_ostream(char const*, std::string&, unsigned int)"}, + {"_ZN4llvm14raw_fd_ostreamC2EPKcRSsj", "llvm::raw_fd_ostream::raw_fd_ostream(char const*, std::string&, unsigned int)"}, + {"_ZN4llvm14raw_fd_ostreamC1Eibb", "llvm::raw_fd_ostream::raw_fd_ostream(int, bool, bool)"}, + {"_ZN4llvm14raw_fd_ostreamC2Eibb", "llvm::raw_fd_ostream::raw_fd_ostream(int, bool, bool)"}, + {"_ZN4llvm14raw_fd_ostreamD0Ev", "llvm::raw_fd_ostream::~raw_fd_ostream()"}, + {"_ZN4llvm14raw_fd_ostreamD1Ev", "llvm::raw_fd_ostream::~raw_fd_ostream()"}, + {"_ZN4llvm14raw_fd_ostreamD2Ev", "llvm::raw_fd_ostream::~raw_fd_ostream()"}, + {"_ZN4llvm14raw_fd_ostream10write_implEPKcm", "llvm::raw_fd_ostream::write_impl(char const*, unsigned long)"}, + {"_ZN4llvm14raw_fd_ostream5closeEv", "llvm::raw_fd_ostream::close()"}, + {"_ZN4llvm14raw_fd_ostream4seekEy", "llvm::raw_fd_ostream::seek(unsigned long long)"}, + {"_ZNK4llvm14raw_fd_ostream21preferred_buffer_sizeEv", "llvm::raw_fd_ostream::preferred_buffer_size() const"}, + {"_ZN4llvm14raw_fd_ostream11changeColorENS_11raw_ostream6ColorsEbb", "llvm::raw_fd_ostream::changeColor(llvm::raw_ostream::Colors, bool, bool)"}, + {"_ZN4llvm14raw_fd_ostream10resetColorEv", "llvm::raw_fd_ostream::resetColor()"}, + {"_ZNK4llvm14raw_fd_ostream12is_displayedEv", "llvm::raw_fd_ostream::is_displayed() const"}, + {"_ZN4llvm4outsEv", "llvm::outs()"}, + {"_ZN4llvm4errsEv", "llvm::errs()"}, + {"_ZN4llvm5nullsEv", "llvm::nulls()"}, + {"_ZN4llvm16raw_null_ostreamD1Ev", "llvm::raw_null_ostream::~raw_null_ostream()"}, + {"_ZN4llvm18raw_string_ostreamD0Ev", "llvm::raw_string_ostream::~raw_string_ostream()"}, + {"_ZN4llvm18raw_string_ostreamD1Ev", "llvm::raw_string_ostream::~raw_string_ostream()"}, + {"_ZN4llvm18raw_string_ostreamD2Ev", "llvm::raw_string_ostream::~raw_string_ostream()"}, + {"_ZN4llvm18raw_string_ostream10write_implEPKcm", "llvm::raw_string_ostream::write_impl(char const*, unsigned long)"}, + {"_ZN4llvm19raw_svector_ostreamC1ERNS_15SmallVectorImplIcEE", "llvm::raw_svector_ostream::raw_svector_ostream(llvm::SmallVectorImpl&)"}, + {"_ZN4llvm19raw_svector_ostreamC2ERNS_15SmallVectorImplIcEE", "llvm::raw_svector_ostream::raw_svector_ostream(llvm::SmallVectorImpl&)"}, + {"_ZN4llvm19raw_svector_ostreamD0Ev", "llvm::raw_svector_ostream::~raw_svector_ostream()"}, + {"_ZN4llvm19raw_svector_ostreamD1Ev", "llvm::raw_svector_ostream::~raw_svector_ostream()"}, + {"_ZN4llvm19raw_svector_ostreamD2Ev", "llvm::raw_svector_ostream::~raw_svector_ostream()"}, + {"_ZN4llvm19raw_svector_ostream6resyncEv", "llvm::raw_svector_ostream::resync()"}, + {"_ZN4llvm19raw_svector_ostream10write_implEPKcm", "llvm::raw_svector_ostream::write_impl(char const*, unsigned long)"}, + {"_ZNK4llvm19raw_svector_ostream11current_posEv", "llvm::raw_svector_ostream::current_pos() const"}, + {"_ZN4llvm19raw_svector_ostream3strEv", "llvm::raw_svector_ostream::str()"}, + {"_ZN4llvm16raw_null_ostreamD0Ev", "llvm::raw_null_ostream::~raw_null_ostream()"}, + {"_ZN4llvm16raw_null_ostreamD2Ev", "llvm::raw_null_ostream::~raw_null_ostream()"}, + {"_ZN4llvm16raw_null_ostream10write_implEPKcm", "llvm::raw_null_ostream::write_impl(char const*, unsigned long)"}, + {"_ZNK4llvm16raw_null_ostream11current_posEv", "llvm::raw_null_ostream::current_pos() const"}, + {"_ZNK4llvm14raw_fd_ostream11current_posEv", "llvm::raw_fd_ostream::current_pos() const"}, + {"_ZN4llvm14error_categoryC1Ev", "llvm::error_category::error_category()"}, + {"_ZN4llvm14error_categoryC2Ev", "llvm::error_category::error_category()"}, + {"_ZN4llvm14error_categoryD0Ev", "llvm::error_category::~error_category()"}, + {"_ZN4llvm14error_categoryD1Ev", "llvm::error_category::~error_category()"}, + {"_ZN4llvm14error_categoryD2Ev", "llvm::error_category::~error_category()"}, + {"_ZNK4llvm14error_category23default_error_conditionEi", "llvm::error_category::default_error_condition(int) const"}, + {"_ZNK4llvm14error_category10equivalentEiRKNS_15error_conditionE", "llvm::error_category::equivalent(int, llvm::error_condition const&) const"}, + {"_ZNK4llvm14error_category10equivalentERKNS_10error_codeEi", "llvm::error_category::equivalent(llvm::error_code const&, int) const"}, + {"_ZNK4llvm11_do_message7messageEi", "llvm::_do_message::message(int) const"}, + {"_ZNK4llvm23_generic_error_category4nameEv", "llvm::_generic_error_category::name() const"}, + {"_ZNK4llvm23_generic_error_category7messageEi", "llvm::_generic_error_category::message(int) const"}, + {"_ZN4llvm16generic_categoryEv", "llvm::generic_category()"}, + {"_ZNK4llvm22_system_error_category4nameEv", "llvm::_system_error_category::name() const"}, + {"_ZN4llvm14posix_categoryEv", "llvm::posix_category()"}, + {"_ZNK4llvm15error_condition7messageEv", "llvm::error_condition::message() const"}, + {"_ZNK4llvm10error_code7messageEv", "llvm::error_code::message() const"}, + {"_ZNK4llvm22_system_error_category7messageEi", "llvm::_system_error_category::message(int) const"}, + {"_ZNK4llvm22_system_error_category23default_error_conditionEi", "llvm::_system_error_category::default_error_condition(int) const"}, + {"_ZN4llvm23_generic_error_categoryD1Ev", "llvm::_generic_error_category::~_generic_error_category()"}, + {"_ZN4llvm22_system_error_categoryD1Ev", "llvm::_system_error_category::~_system_error_category()"}, + {"_ZN4llvm11_do_messageD1Ev", "llvm::_do_message::~_do_message()"}, + {"_ZN4llvm11_do_messageD0Ev", "llvm::_do_message::~_do_message()"}, + {"_ZN4llvm23_generic_error_categoryD0Ev", "llvm::_generic_error_category::~_generic_error_category()"}, + {"_ZN4llvm22_system_error_categoryD0Ev", "llvm::_system_error_category::~_system_error_category()"}, + {"_ZZN4llvm3sys4Path21GetTemporaryDirectoryEPSsE8pathname", "llvm::sys::Path::GetTemporaryDirectory(std::string*)::pathname"}, + {"_ZZN5clang6Parser30ParseTemplateTemplateParameterEjjE7EndToks", "clang::Parser::ParseTemplateTemplateParameter(unsigned int, unsigned int)::EndToks"}, + {"_ZZN5clang4Sema27SemaBuiltinAtomicOverloadedENS_12ActionResultIPNS_4ExprELb1EEEE14BuiltinIndices", "clang::Sema::SemaBuiltinAtomicOverloaded(clang::ActionResult)::BuiltinIndices"}, + {"_ZZN5clang21GetConversionCategoryENS_22ImplicitConversionKindEE8Category", "clang::GetConversionCategory(clang::ImplicitConversionKind)::Category"}, + {"_ZZN5clang17GetConversionRankENS_22ImplicitConversionKindEE4Rank", "clang::GetConversionRank(clang::ImplicitConversionKind)::Rank"}, + {"_ZZN5clang12_GLOBAL__N_130BuiltinOperatorOverloadBuilder17getArithmeticTypeEjE15ArithmeticTypes", "clang::(anonymous namespace)::BuiltinOperatorOverloadBuilder::getArithmeticType(unsigned int)::ArithmeticTypes"}, + {"_ZZN5clang12_GLOBAL__N_130BuiltinOperatorOverloadBuilder29getUsualArithmeticConversionsEjjE16ConversionsTable", "clang::(anonymous namespace)::BuiltinOperatorOverloadBuilder::getUsualArithmeticConversions(unsigned int, unsigned int)::ConversionsTable"}, + {"_ZZ15GetCFNumberSizeRN5clang10ASTContextEyE9FixedSize", "GetCFNumberSize(clang::ASTContext&, unsigned long long)::FixedSize"}, + {"_ZZN5clang15DeclarationName21getUsingDirectiveNameEvE9UDirExtra", "clang::DeclarationName::getUsingDirectiveName()::UDirExtra"}, + {"_ZZN5clang14BinaryOperator21getOverloadedOperatorENS_18BinaryOperatorKindEE7OverOps", "clang::BinaryOperator::getOverloadedOperator(clang::BinaryOperatorKind)::OverOps"}, + + // {"_ZZ15EncodeUCNEscapeRPKcS0_RPcRbN5clang13FullSourceLocEbPNS5_10DiagnosticERKNS5_11LangOptionsEE13firstByteMark", + // "EncodeUCNEscape(char const*&, char const*, char*&, bool&, clang::FullSourceLoc, bool, clang::Diagnostic*, clang::LangOptions const&)::firstByteMark"}, + // "EncodeUCNEscape(char const*&, char const, char*&, bool&, clang::FullSourceLoc, bool, bool&::Diagnostic*, bool&::LangOptions const&)::firstByteMark" was returned + + {"_ZZN5clang10TargetInfo9setCXXABIERKSsE7Unknown", "clang::TargetInfo::setCXXABI(std::string const&)::Unknown"}, + + // {"_ZZNK12_GLOBAL__N_113X86AsmBackend12WriteNopDataEyPN4llvm14MCObjectWriterEE4Nops", + // "(anonymous namespace)::X86AsmBackend::WriteNopData(unsigned long long, llvm::MCObjectWriter*) const::Nops"}, + // "(anonymous namespace)::X86AsmBackend::WriteNopData(unsigned long long, llvm::MCObjectWriter*)::Nops const" was returned + + {"_ZZN4llvm13X86AsmPrinter16EmitEndOfAsmFileERNS_6ModuleEE8HltInsts", "llvm::X86AsmPrinter::EmitEndOfAsmFile(llvm::Module&)::HltInsts"}, + {"_ZZN12_GLOBAL__N_17EmitterIN4llvm14JITCodeEmitterEE16emitMemModRMByteERKNS1_12MachineInstrEjjlE7SSTable", "(anonymous namespace)::Emitter::emitMemModRMByte(llvm::MachineInstr const&, unsigned int, unsigned int, long)::SSTable"}, + + // {"_ZZ14RetCC_X86_32_CjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "RetCC_X86_32_C(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "RetCC_X86_32_C(unsigned int, llvm::MVT, llvm, RetCC_X86_32_C::CCValAssign::LocInfo, RetCC_X86_32_C::ISD::ArgFlagsTy, RetCC_X86_32_C::CCState&)::RegList1" was returned + + + // {"_ZZ14RetCC_X86_32_CjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList2", + // "RetCC_X86_32_C(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList2"}, + // "RetCC_X86_32_C(unsigned int, llvm::MVT, llvm, RetCC_X86_32_C::CCValAssign::LocInfo, RetCC_X86_32_C::ISD::ArgFlagsTy, RetCC_X86_32_C::CCState&)::RegList2" was returned + + + // {"_ZZ15RetCC_X86CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "RetCC_X86Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "RetCC_X86Common(unsigned int, llvm::MVT, llvm, RetCC_X86Common::CCValAssign::LocInfo, RetCC_X86Common::ISD::ArgFlagsTy, RetCC_X86Common::CCState&)::RegList1" was returned + + + // {"_ZZ15RetCC_X86CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList2", + // "RetCC_X86Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList2"}, + // "RetCC_X86Common(unsigned int, llvm::MVT, llvm, RetCC_X86Common::CCValAssign::LocInfo, RetCC_X86Common::ISD::ArgFlagsTy, RetCC_X86Common::CCState&)::RegList2" was returned + + + // {"_ZZ15RetCC_X86CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList3", + // "RetCC_X86Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList3"}, + // "RetCC_X86Common(unsigned int, llvm::MVT, llvm, RetCC_X86Common::CCValAssign::LocInfo, RetCC_X86Common::ISD::ArgFlagsTy, RetCC_X86Common::CCState&)::RegList3" was returned + + + // {"_ZZ15RetCC_X86CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList4", + // "RetCC_X86Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList4"}, + // "RetCC_X86Common(unsigned int, llvm::MVT, llvm, RetCC_X86Common::CCValAssign::LocInfo, RetCC_X86Common::ISD::ArgFlagsTy, RetCC_X86Common::CCState&)::RegList4" was returned + + + // {"_ZZ15RetCC_X86CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList5", + // "RetCC_X86Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList5"}, + // "RetCC_X86Common(unsigned int, llvm::MVT, llvm, RetCC_X86Common::CCValAssign::LocInfo, RetCC_X86Common::ISD::ArgFlagsTy, RetCC_X86Common::CCState&)::RegList5" was returned + + + // {"_ZZ15RetCC_X86CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList6", + // "RetCC_X86Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList6"}, + // "RetCC_X86Common(unsigned int, llvm::MVT, llvm, RetCC_X86Common::CCValAssign::LocInfo, RetCC_X86Common::ISD::ArgFlagsTy, RetCC_X86Common::CCState&)::RegList6" was returned + + + // {"_ZZ15RetCC_X86CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList7", + // "RetCC_X86Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList7"}, + // "RetCC_X86Common(unsigned int, llvm::MVT, llvm, RetCC_X86Common::CCValAssign::LocInfo, RetCC_X86Common::ISD::ArgFlagsTy, RetCC_X86Common::CCState&)::RegList7" was returned + + + // {"_ZZ17RetCC_X86_32_FastjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "RetCC_X86_32_Fast(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "RetCC_X86_32_Fast(unsigned int, llvm::MVT, llvm, RetCC_X86_32_Fast::CCValAssign::LocInfo, RetCC_X86_32_Fast::ISD::ArgFlagsTy, RetCC_X86_32_Fast::CCState&)::RegList1" was returned + + + // {"_ZZ17RetCC_X86_32_FastjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList2", + // "RetCC_X86_32_Fast(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList2"}, + // "RetCC_X86_32_Fast(unsigned int, llvm::MVT, llvm, RetCC_X86_32_Fast::CCValAssign::LocInfo, RetCC_X86_32_Fast::ISD::ArgFlagsTy, RetCC_X86_32_Fast::CCState&)::RegList2" was returned + + + // {"_ZZ17RetCC_X86_32_FastjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList3", + // "RetCC_X86_32_Fast(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList3"}, + // "RetCC_X86_32_Fast(unsigned int, llvm::MVT, llvm, RetCC_X86_32_Fast::CCValAssign::LocInfo, RetCC_X86_32_Fast::ISD::ArgFlagsTy, RetCC_X86_32_Fast::CCState&)::RegList3" was returned + + + // {"_ZZ17RetCC_X86_32_FastjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList4", + // "RetCC_X86_32_Fast(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList4"}, + // "RetCC_X86_32_Fast(unsigned int, llvm::MVT, llvm, RetCC_X86_32_Fast::CCValAssign::LocInfo, RetCC_X86_32_Fast::ISD::ArgFlagsTy, RetCC_X86_32_Fast::CCState&)::RegList4" was returned + + + // {"_ZZ17RetCC_X86_32_FastjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList5", + // "RetCC_X86_32_Fast(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList5"}, + // "RetCC_X86_32_Fast(unsigned int, llvm::MVT, llvm, RetCC_X86_32_Fast::CCValAssign::LocInfo, RetCC_X86_32_Fast::ISD::ArgFlagsTy, RetCC_X86_32_Fast::CCState&)::RegList5" was returned + + + // {"_ZZ14RetCC_X86_64_CjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "RetCC_X86_64_C(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "RetCC_X86_64_C(unsigned int, llvm::MVT, llvm, RetCC_X86_64_C::CCValAssign::LocInfo, RetCC_X86_64_C::ISD::ArgFlagsTy, RetCC_X86_64_C::CCState&)::RegList1" was returned + + + // {"_ZZ14RetCC_X86_64_CjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList2", + // "RetCC_X86_64_C(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList2"}, + // "RetCC_X86_64_C(unsigned int, llvm::MVT, llvm, RetCC_X86_64_C::CCValAssign::LocInfo, RetCC_X86_64_C::ISD::ArgFlagsTy, RetCC_X86_64_C::CCState&)::RegList2" was returned + + + // {"_ZZ14RetCC_X86_64_CjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList3", + // "RetCC_X86_64_C(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList3"}, + // "RetCC_X86_64_C(unsigned int, llvm::MVT, llvm, RetCC_X86_64_C::CCValAssign::LocInfo, RetCC_X86_64_C::ISD::ArgFlagsTy, RetCC_X86_64_C::CCState&)::RegList3" was returned + + + // {"_ZZ11CC_X86_32_CjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "CC_X86_32_C(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "CC_X86_32_C(unsigned int, llvm::MVT, llvm, CC_X86_32_C::CCValAssign::LocInfo, CC_X86_32_C::ISD::ArgFlagsTy, CC_X86_32_C::CCState&)::RegList1" was returned + + + // {"_ZZ16CC_X86_32_CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "CC_X86_32_Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "CC_X86_32_Common(unsigned int, llvm::MVT, llvm, CC_X86_32_Common::CCValAssign::LocInfo, CC_X86_32_Common::ISD::ArgFlagsTy, CC_X86_32_Common::CCState&)::RegList1" was returned + + + // {"_ZZ16CC_X86_32_CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList2", + // "CC_X86_32_Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList2"}, + // "CC_X86_32_Common(unsigned int, llvm::MVT, llvm, CC_X86_32_Common::CCValAssign::LocInfo, CC_X86_32_Common::ISD::ArgFlagsTy, CC_X86_32_Common::CCState&)::RegList2" was returned + + + // {"_ZZ16CC_X86_32_CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList6", + // "CC_X86_32_Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList6"}, + // "CC_X86_32_Common(unsigned int, llvm::MVT, llvm, CC_X86_32_Common::CCValAssign::LocInfo, CC_X86_32_Common::ISD::ArgFlagsTy, CC_X86_32_Common::CCState&)::RegList6" was returned + + + // {"_ZZ16CC_X86_32_CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList7", + // "CC_X86_32_Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList7"}, + // "CC_X86_32_Common(unsigned int, llvm::MVT, llvm, CC_X86_32_Common::CCValAssign::LocInfo, CC_X86_32_Common::ISD::ArgFlagsTy, CC_X86_32_Common::CCState&)::RegList7" was returned + + + // {"_ZZ13CC_X86_32_GHCjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "CC_X86_32_GHC(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "CC_X86_32_GHC(unsigned int, llvm::MVT, llvm, CC_X86_32_GHC::CCValAssign::LocInfo, CC_X86_32_GHC::ISD::ArgFlagsTy, CC_X86_32_GHC::CCState&)::RegList1" was returned + + + // {"_ZZ16CC_X86_32_FastCCjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "CC_X86_32_FastCC(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "CC_X86_32_FastCC(unsigned int, llvm::MVT, llvm, CC_X86_32_FastCC::CCValAssign::LocInfo, CC_X86_32_FastCC::ISD::ArgFlagsTy, CC_X86_32_FastCC::CCState&)::RegList1" was returned + + + // {"_ZZ16CC_X86_32_FastCCjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList2", + // "CC_X86_32_FastCC(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList2"}, + // "CC_X86_32_FastCC(unsigned int, llvm::MVT, llvm, CC_X86_32_FastCC::CCValAssign::LocInfo, CC_X86_32_FastCC::ISD::ArgFlagsTy, CC_X86_32_FastCC::CCState&)::RegList2" was returned + + + // {"_ZZ18CC_X86_32_FastCalljN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "CC_X86_32_FastCall(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "CC_X86_32_FastCall(unsigned int, llvm::MVT, llvm, CC_X86_32_FastCall::CCValAssign::LocInfo, CC_X86_32_FastCall::ISD::ArgFlagsTy, CC_X86_32_FastCall::CCState&)::RegList1" was returned + + + // {"_ZZ11CC_X86_64_CjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "CC_X86_64_C(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "CC_X86_64_C(unsigned int, llvm::MVT, llvm, CC_X86_64_C::CCValAssign::LocInfo, CC_X86_64_C::ISD::ArgFlagsTy, CC_X86_64_C::CCState&)::RegList1" was returned + + + // {"_ZZ11CC_X86_64_CjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList2", + // "CC_X86_64_C(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList2"}, + // "CC_X86_64_C(unsigned int, llvm::MVT, llvm, CC_X86_64_C::CCValAssign::LocInfo, CC_X86_64_C::ISD::ArgFlagsTy, CC_X86_64_C::CCState&)::RegList2" was returned + + + // {"_ZZ11CC_X86_64_CjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList3", + // "CC_X86_64_C(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList3"}, + // "CC_X86_64_C(unsigned int, llvm::MVT, llvm, CC_X86_64_C::CCValAssign::LocInfo, CC_X86_64_C::ISD::ArgFlagsTy, CC_X86_64_C::CCState&)::RegList3" was returned + + + // {"_ZZ11CC_X86_64_CjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList4", + // "CC_X86_64_C(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList4"}, + // "CC_X86_64_C(unsigned int, llvm::MVT, llvm, CC_X86_64_C::CCValAssign::LocInfo, CC_X86_64_C::ISD::ArgFlagsTy, CC_X86_64_C::CCState&)::RegList4" was returned + + + // {"_ZZ14CC_X86_Win64_CjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "CC_X86_Win64_C(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "CC_X86_Win64_C(unsigned int, llvm::MVT, llvm, CC_X86_Win64_C::CCValAssign::LocInfo, CC_X86_Win64_C::ISD::ArgFlagsTy, CC_X86_Win64_C::CCState&)::RegList1" was returned + + + // {"_ZZ14CC_X86_Win64_CjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList2", + // "CC_X86_Win64_C(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList2"}, + // "CC_X86_Win64_C(unsigned int, llvm::MVT, llvm, CC_X86_Win64_C::CCValAssign::LocInfo, CC_X86_Win64_C::ISD::ArgFlagsTy, CC_X86_Win64_C::CCState&)::RegList2" was returned + + + // {"_ZZ14CC_X86_Win64_CjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList3", + // "CC_X86_Win64_C(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList3"}, + // "CC_X86_Win64_C(unsigned int, llvm::MVT, llvm, CC_X86_Win64_C::CCValAssign::LocInfo, CC_X86_Win64_C::ISD::ArgFlagsTy, CC_X86_Win64_C::CCState&)::RegList3" was returned + + + // {"_ZZ14CC_X86_Win64_CjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList4", + // "CC_X86_Win64_C(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList4"}, + // "CC_X86_Win64_C(unsigned int, llvm::MVT, llvm, CC_X86_Win64_C::CCValAssign::LocInfo, CC_X86_Win64_C::ISD::ArgFlagsTy, CC_X86_Win64_C::CCState&)::RegList4" was returned + + + // {"_ZZ14CC_X86_Win64_CjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList5", + // "CC_X86_Win64_C(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList5"}, + // "CC_X86_Win64_C(unsigned int, llvm::MVT, llvm, CC_X86_Win64_C::CCValAssign::LocInfo, CC_X86_Win64_C::ISD::ArgFlagsTy, CC_X86_Win64_C::CCState&)::RegList5" was returned + + + // {"_ZZ14CC_X86_Win64_CjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList6", + // "CC_X86_Win64_C(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList6"}, + // "CC_X86_Win64_C(unsigned int, llvm::MVT, llvm, CC_X86_Win64_C::CCValAssign::LocInfo, CC_X86_Win64_C::ISD::ArgFlagsTy, CC_X86_Win64_C::CCState&)::RegList6" was returned + + + // {"_ZZ13CC_X86_64_GHCjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "CC_X86_64_GHC(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "CC_X86_64_GHC(unsigned int, llvm::MVT, llvm, CC_X86_64_GHC::CCValAssign::LocInfo, CC_X86_64_GHC::ISD::ArgFlagsTy, CC_X86_64_GHC::CCState&)::RegList1" was returned + + + // {"_ZZ13CC_X86_64_GHCjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList2", + // "CC_X86_64_GHC(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList2"}, + // "CC_X86_64_GHC(unsigned int, llvm::MVT, llvm, CC_X86_64_GHC::CCValAssign::LocInfo, CC_X86_64_GHC::ISD::ArgFlagsTy, CC_X86_64_GHC::CCState&)::RegList2" was returned + + + // {"_ZZ22findDeadCallerSavedRegRN4llvm17MachineBasicBlockERNS_14ilist_iteratorINS_12MachineInstrEEERKNS_18TargetRegisterInfoEbE20CallerSavedRegs32Bit", + // "findDeadCallerSavedReg(llvm::MachineBasicBlock&, llvm::ilist_iterator&, llvm::TargetRegisterInfo const&, bool)::CallerSavedRegs32Bit"}, + // "findDeadCallerSavedReg(llvm::MachineBasicBlock&, findDeadCallerSavedReg::ilist_iterator&, findDeadCallerSavedReg::TargetRegisterInfo const&, bool)::CallerSavedRegs32Bit" was returned + + + // {"_ZZ22findDeadCallerSavedRegRN4llvm17MachineBasicBlockERNS_14ilist_iteratorINS_12MachineInstrEEERKNS_18TargetRegisterInfoEbE20CallerSavedRegs64Bit", + // "findDeadCallerSavedReg(llvm::MachineBasicBlock&, llvm::ilist_iterator&, llvm::TargetRegisterInfo const&, bool)::CallerSavedRegs64Bit"}, + // "findDeadCallerSavedReg(llvm::MachineBasicBlock&, findDeadCallerSavedReg::ilist_iterator&, findDeadCallerSavedReg::TargetRegisterInfo const&, bool)::CallerSavedRegs64Bit" was returned + + {"_ZZN12_GLOBAL__N_115X86DAGToDAGISel10SelectCodeEPN4llvm6SDNodeEE12MatcherTable", "(anonymous namespace)::X86DAGToDAGISel::SelectCode(llvm::SDNode*)::MatcherTable"}, + + // {"_ZZNK4llvm17X86TargetLowering20LowerFormalArgumentsENS_7SDValueENS_11CallingConv2IDEbRKNS_15SmallVectorImplINS_3ISD8InputArgEEENS_8DebugLocERNS_12SelectionDAGERNS4_IS1_EEE17GPR64ArgRegsWin64", + // "llvm::X86TargetLowering::LowerFormalArguments(llvm::SDValue, llvm::CallingConv::ID, bool, llvm::SmallVectorImpl const&, llvm::DebugLoc, llvm::SelectionDAG&, llvm::SmallVectorImpl&) const::GPR64ArgRegsWin64"}, + // "llvm::X86TargetLowering::LowerFormalArguments(llvm::SDValue, llvm::CallingConv::ID, bool, llvm::SmallVectorImpl const&, llvm::DebugLoc, llvm::SelectionDAG&, llvm::CallingConv::ID&)::GPR64ArgRegsWin64 const" was returned + + + // {"_ZZNK4llvm17X86TargetLowering20LowerFormalArgumentsENS_7SDValueENS_11CallingConv2IDEbRKNS_15SmallVectorImplINS_3ISD8InputArgEEENS_8DebugLocERNS_12SelectionDAGERNS4_IS1_EEE17GPR64ArgRegs64Bit", + // "llvm::X86TargetLowering::LowerFormalArguments(llvm::SDValue, llvm::CallingConv::ID, bool, llvm::SmallVectorImpl const&, llvm::DebugLoc, llvm::SelectionDAG&, llvm::SmallVectorImpl&) const::GPR64ArgRegs64Bit"}, + // "llvm::X86TargetLowering::LowerFormalArguments(llvm::SDValue, llvm::CallingConv::ID, bool, llvm::SmallVectorImpl const&, llvm::DebugLoc, llvm::SelectionDAG&, llvm::CallingConv::ID&)::GPR64ArgRegs64Bit const" was returned + + + // {"_ZZNK4llvm17X86TargetLowering20LowerFormalArgumentsENS_7SDValueENS_11CallingConv2IDEbRKNS_15SmallVectorImplINS_3ISD8InputArgEEENS_8DebugLocERNS_12SelectionDAGERNS4_IS1_EEE15XMMArgRegs64Bit", + // "llvm::X86TargetLowering::LowerFormalArguments(llvm::SDValue, llvm::CallingConv::ID, bool, llvm::SmallVectorImpl const&, llvm::DebugLoc, llvm::SelectionDAG&, llvm::SmallVectorImpl&) const::XMMArgRegs64Bit"}, + // "llvm::X86TargetLowering::LowerFormalArguments(llvm::SDValue, llvm::CallingConv::ID, bool, llvm::SmallVectorImpl const&, llvm::DebugLoc, llvm::SelectionDAG&, llvm::CallingConv::ID&)::XMMArgRegs64Bit const" was returned + + + // {"_ZZNK4llvm17X86TargetLowering9LowerCallENS_7SDValueES1_NS_11CallingConv2IDEbRbRKNS_15SmallVectorImplINS_3ISD9OutputArgEEERKNS5_IS1_EERKNS5_INS6_8InputArgEEENS_8DebugLocERNS_12SelectionDAGERSB_E10XMMArgRegs", + // "llvm::X86TargetLowering::LowerCall(llvm::SDValue, llvm::SDValue, llvm::CallingConv::ID, bool, bool&, llvm::SmallVectorImpl const&, llvm::SmallVectorImpl const&, llvm::SmallVectorImpl const&, llvm::DebugLoc, llvm::SelectionDAG&, llvm::SmallVectorImpl&) const::XMMArgRegs"}, + // "llvm::X86TargetLowering::LowerCall(llvm::SDValue, llvm::X86TargetLowering::LowerCall, llvm::CallingConv::ID, bool, bool&, llvm::SmallVectorImpl const&, bool& const&, bool& const&, llvm::DebugLoc, llvm::SelectionDAG&, llvm::SmallVectorImpl const&&)::XMMArgRegs const" was returned + + + // {"_ZZ11CC_X86_32_CjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "CC_X86_32_C(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "CC_X86_32_C(unsigned int, llvm::MVT, llvm, CC_X86_32_C::CCValAssign::LocInfo, CC_X86_32_C::ISD::ArgFlagsTy, CC_X86_32_C::CCState&)::RegList1" was returned + + + // {"_ZZ16CC_X86_32_CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "CC_X86_32_Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "CC_X86_32_Common(unsigned int, llvm::MVT, llvm, CC_X86_32_Common::CCValAssign::LocInfo, CC_X86_32_Common::ISD::ArgFlagsTy, CC_X86_32_Common::CCState&)::RegList1" was returned + + + // {"_ZZ16CC_X86_32_CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList2", + // "CC_X86_32_Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList2"}, + // "CC_X86_32_Common(unsigned int, llvm::MVT, llvm, CC_X86_32_Common::CCValAssign::LocInfo, CC_X86_32_Common::ISD::ArgFlagsTy, CC_X86_32_Common::CCState&)::RegList2" was returned + + + // {"_ZZ16CC_X86_32_CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList6", + // "CC_X86_32_Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList6"}, + // "CC_X86_32_Common(unsigned int, llvm::MVT, llvm, CC_X86_32_Common::CCValAssign::LocInfo, CC_X86_32_Common::ISD::ArgFlagsTy, CC_X86_32_Common::CCState&)::RegList6" was returned + + + // {"_ZZ16CC_X86_32_CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList7", + // "CC_X86_32_Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList7"}, + // "CC_X86_32_Common(unsigned int, llvm::MVT, llvm, CC_X86_32_Common::CCValAssign::LocInfo, CC_X86_32_Common::ISD::ArgFlagsTy, CC_X86_32_Common::CCState&)::RegList7" was returned + + + // {"_ZZ13CC_X86_32_GHCjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "CC_X86_32_GHC(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "CC_X86_32_GHC(unsigned int, llvm::MVT, llvm, CC_X86_32_GHC::CCValAssign::LocInfo, CC_X86_32_GHC::ISD::ArgFlagsTy, CC_X86_32_GHC::CCState&)::RegList1" was returned + + + // {"_ZZ16CC_X86_32_FastCCjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "CC_X86_32_FastCC(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "CC_X86_32_FastCC(unsigned int, llvm::MVT, llvm, CC_X86_32_FastCC::CCValAssign::LocInfo, CC_X86_32_FastCC::ISD::ArgFlagsTy, CC_X86_32_FastCC::CCState&)::RegList1" was returned + + + // {"_ZZ16CC_X86_32_FastCCjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList2", + // "CC_X86_32_FastCC(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList2"}, + // "CC_X86_32_FastCC(unsigned int, llvm::MVT, llvm, CC_X86_32_FastCC::CCValAssign::LocInfo, CC_X86_32_FastCC::ISD::ArgFlagsTy, CC_X86_32_FastCC::CCState&)::RegList2" was returned + + + // {"_ZZ18CC_X86_32_FastCalljN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "CC_X86_32_FastCall(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "CC_X86_32_FastCall(unsigned int, llvm::MVT, llvm, CC_X86_32_FastCall::CCValAssign::LocInfo, CC_X86_32_FastCall::ISD::ArgFlagsTy, CC_X86_32_FastCall::CCState&)::RegList1" was returned + + + // {"_ZZ11CC_X86_64_CjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "CC_X86_64_C(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "CC_X86_64_C(unsigned int, llvm::MVT, llvm, CC_X86_64_C::CCValAssign::LocInfo, CC_X86_64_C::ISD::ArgFlagsTy, CC_X86_64_C::CCState&)::RegList1" was returned + + + // {"_ZZ11CC_X86_64_CjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList2", + // "CC_X86_64_C(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList2"}, + // "CC_X86_64_C(unsigned int, llvm::MVT, llvm, CC_X86_64_C::CCValAssign::LocInfo, CC_X86_64_C::ISD::ArgFlagsTy, CC_X86_64_C::CCState&)::RegList2" was returned + + + // {"_ZZ11CC_X86_64_CjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList3", + // "CC_X86_64_C(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList3"}, + // "CC_X86_64_C(unsigned int, llvm::MVT, llvm, CC_X86_64_C::CCValAssign::LocInfo, CC_X86_64_C::ISD::ArgFlagsTy, CC_X86_64_C::CCState&)::RegList3" was returned + + + // {"_ZZ11CC_X86_64_CjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList4", + // "CC_X86_64_C(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList4"}, + // "CC_X86_64_C(unsigned int, llvm::MVT, llvm, CC_X86_64_C::CCValAssign::LocInfo, CC_X86_64_C::ISD::ArgFlagsTy, CC_X86_64_C::CCState&)::RegList4" was returned + + + // {"_ZZ14CC_X86_Win64_CjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "CC_X86_Win64_C(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "CC_X86_Win64_C(unsigned int, llvm::MVT, llvm, CC_X86_Win64_C::CCValAssign::LocInfo, CC_X86_Win64_C::ISD::ArgFlagsTy, CC_X86_Win64_C::CCState&)::RegList1" was returned + + + // {"_ZZ14CC_X86_Win64_CjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList2", + // "CC_X86_Win64_C(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList2"}, + // "CC_X86_Win64_C(unsigned int, llvm::MVT, llvm, CC_X86_Win64_C::CCValAssign::LocInfo, CC_X86_Win64_C::ISD::ArgFlagsTy, CC_X86_Win64_C::CCState&)::RegList2" was returned + + + // {"_ZZ14CC_X86_Win64_CjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList3", + // "CC_X86_Win64_C(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList3"}, + // "CC_X86_Win64_C(unsigned int, llvm::MVT, llvm, CC_X86_Win64_C::CCValAssign::LocInfo, CC_X86_Win64_C::ISD::ArgFlagsTy, CC_X86_Win64_C::CCState&)::RegList3" was returned + + + // {"_ZZ14CC_X86_Win64_CjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList4", + // "CC_X86_Win64_C(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList4"}, + // "CC_X86_Win64_C(unsigned int, llvm::MVT, llvm, CC_X86_Win64_C::CCValAssign::LocInfo, CC_X86_Win64_C::ISD::ArgFlagsTy, CC_X86_Win64_C::CCState&)::RegList4" was returned + + + // {"_ZZ14CC_X86_Win64_CjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList5", + // "CC_X86_Win64_C(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList5"}, + // "CC_X86_Win64_C(unsigned int, llvm::MVT, llvm, CC_X86_Win64_C::CCValAssign::LocInfo, CC_X86_Win64_C::ISD::ArgFlagsTy, CC_X86_Win64_C::CCState&)::RegList5" was returned + + + // {"_ZZ14CC_X86_Win64_CjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList6", + // "CC_X86_Win64_C(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList6"}, + // "CC_X86_Win64_C(unsigned int, llvm::MVT, llvm, CC_X86_Win64_C::CCValAssign::LocInfo, CC_X86_Win64_C::ISD::ArgFlagsTy, CC_X86_Win64_C::CCState&)::RegList6" was returned + + + // {"_ZZ13CC_X86_64_GHCjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "CC_X86_64_GHC(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "CC_X86_64_GHC(unsigned int, llvm::MVT, llvm, CC_X86_64_GHC::CCValAssign::LocInfo, CC_X86_64_GHC::ISD::ArgFlagsTy, CC_X86_64_GHC::CCState&)::RegList1" was returned + + + // {"_ZZ13CC_X86_64_GHCjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList2", + // "CC_X86_64_GHC(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList2"}, + // "CC_X86_64_GHC(unsigned int, llvm::MVT, llvm, CC_X86_64_GHC::CCValAssign::LocInfo, CC_X86_64_GHC::ISD::ArgFlagsTy, CC_X86_64_GHC::CCState&)::RegList2" was returned + + + // {"_ZZ14RetCC_X86_32_CjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "RetCC_X86_32_C(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "RetCC_X86_32_C(unsigned int, llvm::MVT, llvm, RetCC_X86_32_C::CCValAssign::LocInfo, RetCC_X86_32_C::ISD::ArgFlagsTy, RetCC_X86_32_C::CCState&)::RegList1" was returned + + + // {"_ZZ14RetCC_X86_32_CjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList2", + // "RetCC_X86_32_C(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList2"}, + // "RetCC_X86_32_C(unsigned int, llvm::MVT, llvm, RetCC_X86_32_C::CCValAssign::LocInfo, RetCC_X86_32_C::ISD::ArgFlagsTy, RetCC_X86_32_C::CCState&)::RegList2" was returned + + + // {"_ZZ15RetCC_X86CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "RetCC_X86Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "RetCC_X86Common(unsigned int, llvm::MVT, llvm, RetCC_X86Common::CCValAssign::LocInfo, RetCC_X86Common::ISD::ArgFlagsTy, RetCC_X86Common::CCState&)::RegList1" was returned + + + // {"_ZZ15RetCC_X86CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList2", + // "RetCC_X86Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList2"}, + // "RetCC_X86Common(unsigned int, llvm::MVT, llvm, RetCC_X86Common::CCValAssign::LocInfo, RetCC_X86Common::ISD::ArgFlagsTy, RetCC_X86Common::CCState&)::RegList2" was returned + + + // {"_ZZ15RetCC_X86CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList3", + // "RetCC_X86Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList3"}, + // "RetCC_X86Common(unsigned int, llvm::MVT, llvm, RetCC_X86Common::CCValAssign::LocInfo, RetCC_X86Common::ISD::ArgFlagsTy, RetCC_X86Common::CCState&)::RegList3" was returned + + + // {"_ZZ15RetCC_X86CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList4", + // "RetCC_X86Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList4"}, + // "RetCC_X86Common(unsigned int, llvm::MVT, llvm, RetCC_X86Common::CCValAssign::LocInfo, RetCC_X86Common::ISD::ArgFlagsTy, RetCC_X86Common::CCState&)::RegList4" was returned + + + // {"_ZZ15RetCC_X86CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList5", + // "RetCC_X86Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList5"}, + // "RetCC_X86Common(unsigned int, llvm::MVT, llvm, RetCC_X86Common::CCValAssign::LocInfo, RetCC_X86Common::ISD::ArgFlagsTy, RetCC_X86Common::CCState&)::RegList5" was returned + + + // {"_ZZ15RetCC_X86CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList6", + // "RetCC_X86Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList6"}, + // "RetCC_X86Common(unsigned int, llvm::MVT, llvm, RetCC_X86Common::CCValAssign::LocInfo, RetCC_X86Common::ISD::ArgFlagsTy, RetCC_X86Common::CCState&)::RegList6" was returned + + + // {"_ZZ15RetCC_X86CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList7", + // "RetCC_X86Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList7"}, + // "RetCC_X86Common(unsigned int, llvm::MVT, llvm, RetCC_X86Common::CCValAssign::LocInfo, RetCC_X86Common::ISD::ArgFlagsTy, RetCC_X86Common::CCState&)::RegList7" was returned + + + // {"_ZZ17RetCC_X86_32_FastjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "RetCC_X86_32_Fast(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "RetCC_X86_32_Fast(unsigned int, llvm::MVT, llvm, RetCC_X86_32_Fast::CCValAssign::LocInfo, RetCC_X86_32_Fast::ISD::ArgFlagsTy, RetCC_X86_32_Fast::CCState&)::RegList1" was returned + + + // {"_ZZ17RetCC_X86_32_FastjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList2", + // "RetCC_X86_32_Fast(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList2"}, + // "RetCC_X86_32_Fast(unsigned int, llvm::MVT, llvm, RetCC_X86_32_Fast::CCValAssign::LocInfo, RetCC_X86_32_Fast::ISD::ArgFlagsTy, RetCC_X86_32_Fast::CCState&)::RegList2" was returned + + + // {"_ZZ17RetCC_X86_32_FastjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList3", + // "RetCC_X86_32_Fast(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList3"}, + // "RetCC_X86_32_Fast(unsigned int, llvm::MVT, llvm, RetCC_X86_32_Fast::CCValAssign::LocInfo, RetCC_X86_32_Fast::ISD::ArgFlagsTy, RetCC_X86_32_Fast::CCState&)::RegList3" was returned + + + // {"_ZZ17RetCC_X86_32_FastjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList4", + // "RetCC_X86_32_Fast(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList4"}, + // "RetCC_X86_32_Fast(unsigned int, llvm::MVT, llvm, RetCC_X86_32_Fast::CCValAssign::LocInfo, RetCC_X86_32_Fast::ISD::ArgFlagsTy, RetCC_X86_32_Fast::CCState&)::RegList4" was returned + + + // {"_ZZ17RetCC_X86_32_FastjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList5", + // "RetCC_X86_32_Fast(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList5"}, + // "RetCC_X86_32_Fast(unsigned int, llvm::MVT, llvm, RetCC_X86_32_Fast::CCValAssign::LocInfo, RetCC_X86_32_Fast::ISD::ArgFlagsTy, RetCC_X86_32_Fast::CCState&)::RegList5" was returned + + + // {"_ZZ14RetCC_X86_64_CjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "RetCC_X86_64_C(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "RetCC_X86_64_C(unsigned int, llvm::MVT, llvm, RetCC_X86_64_C::CCValAssign::LocInfo, RetCC_X86_64_C::ISD::ArgFlagsTy, RetCC_X86_64_C::CCState&)::RegList1" was returned + + + // {"_ZZ14RetCC_X86_64_CjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList2", + // "RetCC_X86_64_C(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList2"}, + // "RetCC_X86_64_C(unsigned int, llvm::MVT, llvm, RetCC_X86_64_C::CCValAssign::LocInfo, RetCC_X86_64_C::ISD::ArgFlagsTy, RetCC_X86_64_C::CCState&)::RegList2" was returned + + + // {"_ZZ14RetCC_X86_64_CjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList3", + // "RetCC_X86_64_C(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList3"}, + // "RetCC_X86_64_C(unsigned int, llvm::MVT, llvm, RetCC_X86_64_C::CCValAssign::LocInfo, RetCC_X86_64_C::ISD::ArgFlagsTy, RetCC_X86_64_C::CCState&)::RegList3" was returned + + {"_ZZN4llvm12X86InstrInfoC1ERNS_16X86TargetMachineEE10OpTbl2Addr", "llvm::X86InstrInfo::X86InstrInfo(llvm::X86TargetMachine&)::OpTbl2Addr"}, + {"_ZZN4llvm12X86InstrInfoC1ERNS_16X86TargetMachineEE6OpTbl0", "llvm::X86InstrInfo::X86InstrInfo(llvm::X86TargetMachine&)::OpTbl0"}, + {"_ZZN4llvm12X86InstrInfoC1ERNS_16X86TargetMachineEE6OpTbl1", "llvm::X86InstrInfo::X86InstrInfo(llvm::X86TargetMachine&)::OpTbl1"}, + {"_ZZN4llvm12X86InstrInfoC1ERNS_16X86TargetMachineEE6OpTbl2", "llvm::X86InstrInfo::X86InstrInfo(llvm::X86TargetMachine&)::OpTbl2"}, + + // {"_ZZNK12_GLOBAL__N_116X86MCCodeEmitter16EmitMemModRMByteERKN4llvm6MCInstEjjyRjRNS1_11raw_ostreamERNS1_15SmallVectorImplINS1_7MCFixupEEEE7SSTable", + // "(anonymous namespace)::X86MCCodeEmitter::EmitMemModRMByte(llvm::MCInst const&, unsigned int, unsigned int, unsigned long long, unsigned int&, llvm::raw_ostream&, llvm::SmallVectorImpl&) const::SSTable"}, + // "(anonymous namespace)::X86MCCodeEmitter::EmitMemModRMByte(llvm::MCInst const&, unsigned int, unsigned int, unsigned long long, unsigned int&, (anonymous namespace)::X86MCCodeEmitter::EmitMemModRMByte::raw_ostream&, (anonymous namespace)::X86MCCodeEmitter::EmitMemModRMByte::SmallVectorImpl<(anonymous namespace)::X86MCCodeEmitter::EmitMemModRMByte::MCFixup>&)::SSTable const" was returned + + + // {"_ZZNK4llvm15X86RegisterInfo18getCalleeSavedRegsEPKNS_15MachineFunctionEE18GhcCalleeSavedRegs", + // "llvm::X86RegisterInfo::getCalleeSavedRegs(llvm::MachineFunction const*) const::GhcCalleeSavedRegs"}, + // "llvm::X86RegisterInfo::getCalleeSavedRegs(llvm::MachineFunction const*)::GhcCalleeSavedRegs const" was returned + + + // {"_ZZNK4llvm15X86RegisterInfo18getCalleeSavedRegsEPKNS_15MachineFunctionEE20CalleeSavedRegs32Bit", + // "llvm::X86RegisterInfo::getCalleeSavedRegs(llvm::MachineFunction const*) const::CalleeSavedRegs32Bit"}, + // "llvm::X86RegisterInfo::getCalleeSavedRegs(llvm::MachineFunction const*)::CalleeSavedRegs32Bit const" was returned + + + // {"_ZZNK4llvm15X86RegisterInfo18getCalleeSavedRegsEPKNS_15MachineFunctionEE22CalleeSavedRegs32EHRet", + // "llvm::X86RegisterInfo::getCalleeSavedRegs(llvm::MachineFunction const*) const::CalleeSavedRegs32EHRet"}, + // "llvm::X86RegisterInfo::getCalleeSavedRegs(llvm::MachineFunction const*)::CalleeSavedRegs32EHRet const" was returned + + + // {"_ZZNK4llvm15X86RegisterInfo18getCalleeSavedRegsEPKNS_15MachineFunctionEE20CalleeSavedRegs64Bit", + // "llvm::X86RegisterInfo::getCalleeSavedRegs(llvm::MachineFunction const*) const::CalleeSavedRegs64Bit"}, + // "llvm::X86RegisterInfo::getCalleeSavedRegs(llvm::MachineFunction const*)::CalleeSavedRegs64Bit const" was returned + + + // {"_ZZNK4llvm15X86RegisterInfo18getCalleeSavedRegsEPKNS_15MachineFunctionEE22CalleeSavedRegs64EHRet", + // "llvm::X86RegisterInfo::getCalleeSavedRegs(llvm::MachineFunction const*) const::CalleeSavedRegs64EHRet"}, + // "llvm::X86RegisterInfo::getCalleeSavedRegs(llvm::MachineFunction const*)::CalleeSavedRegs64EHRet const" was returned + + + // {"_ZZNK4llvm15X86RegisterInfo18getCalleeSavedRegsEPKNS_15MachineFunctionEE20CalleeSavedRegsWin64", + // "llvm::X86RegisterInfo::getCalleeSavedRegs(llvm::MachineFunction const*) const::CalleeSavedRegsWin64"}, + // "llvm::X86RegisterInfo::getCalleeSavedRegs(llvm::MachineFunction const*)::CalleeSavedRegsWin64 const" was returned + + {"_ZZN4llvm17X86ATTInstPrinter16printInstructionEPKNS_6MCInstERNS_11raw_ostreamEE6OpInfo", "llvm::X86ATTInstPrinter::printInstruction(llvm::MCInst const*, llvm::raw_ostream&)::OpInfo"}, + {"_ZZN4llvm17X86ATTInstPrinter15getRegisterNameEjE12RegAsmOffset", "llvm::X86ATTInstPrinter::getRegisterName(unsigned int)::RegAsmOffset"}, + {"_ZZN4llvm17X86ATTInstPrinter18getInstructionNameEjE13InstAsmOffset", "llvm::X86ATTInstPrinter::getInstructionName(unsigned int)::InstAsmOffset"}, + {"_ZZN4llvm19X86IntelInstPrinter16printInstructionEPKNS_6MCInstERNS_11raw_ostreamEE6OpInfo", "llvm::X86IntelInstPrinter::printInstruction(llvm::MCInst const*, llvm::raw_ostream&)::OpInfo"}, + {"_ZZN4llvm19X86IntelInstPrinter15getRegisterNameEjE12RegAsmOffset", "llvm::X86IntelInstPrinter::getRegisterName(unsigned int)::RegAsmOffset"}, + {"_ZZN4llvm19X86IntelInstPrinter18getInstructionNameEjE13InstAsmOffset", "llvm::X86IntelInstPrinter::getInstructionName(unsigned int)::InstAsmOffset"}, + + // {"_ZZNK4llvm19ARMBaseRegisterInfo18getCalleeSavedRegsEPKNS_15MachineFunctionEE15CalleeSavedRegs", + // "llvm::ARMBaseRegisterInfo::getCalleeSavedRegs(llvm::MachineFunction const*) const::CalleeSavedRegs"}, + // "llvm::ARMBaseRegisterInfo::getCalleeSavedRegs(llvm::MachineFunction const*)::CalleeSavedRegs const" was returned + + + // {"_ZZNK4llvm19ARMBaseRegisterInfo18getCalleeSavedRegsEPKNS_15MachineFunctionEE21DarwinCalleeSavedRegs", + // "llvm::ARMBaseRegisterInfo::getCalleeSavedRegs(llvm::MachineFunction const*) const::DarwinCalleeSavedRegs"}, + // "llvm::ARMBaseRegisterInfo::getCalleeSavedRegs(llvm::MachineFunction const*)::DarwinCalleeSavedRegs const" was returned + + + // {"_ZZNK4llvm19ARMBaseRegisterInfo18getAllocationOrderEPKNS_19TargetRegisterClassEjjRKNS_15MachineFunctionEE8GPREven1", + // "llvm::ARMBaseRegisterInfo::getAllocationOrder(llvm::TargetRegisterClass const*, unsigned int, unsigned int, llvm::MachineFunction const&) const::GPREven1"}, + // "llvm::ARMBaseRegisterInfo::getAllocationOrder(llvm::TargetRegisterClass const*, unsigned int, unsigned int, llvm::MachineFunction const&)::GPREven1 const" was returned + + + // {"_ZZNK4llvm19ARMBaseRegisterInfo18getAllocationOrderEPKNS_19TargetRegisterClassEjjRKNS_15MachineFunctionEE7GPROdd1", + // "llvm::ARMBaseRegisterInfo::getAllocationOrder(llvm::TargetRegisterClass const*, unsigned int, unsigned int, llvm::MachineFunction const&) const::GPROdd1"}, + // "llvm::ARMBaseRegisterInfo::getAllocationOrder(llvm::TargetRegisterClass const*, unsigned int, unsigned int, llvm::MachineFunction const&)::GPROdd1 const" was returned + + + // {"_ZZNK4llvm19ARMBaseRegisterInfo18getAllocationOrderEPKNS_19TargetRegisterClassEjjRKNS_15MachineFunctionEE8GPREven2", + // "llvm::ARMBaseRegisterInfo::getAllocationOrder(llvm::TargetRegisterClass const*, unsigned int, unsigned int, llvm::MachineFunction const&) const::GPREven2"}, + // "llvm::ARMBaseRegisterInfo::getAllocationOrder(llvm::TargetRegisterClass const*, unsigned int, unsigned int, llvm::MachineFunction const&)::GPREven2 const" was returned + + + // {"_ZZNK4llvm19ARMBaseRegisterInfo18getAllocationOrderEPKNS_19TargetRegisterClassEjjRKNS_15MachineFunctionEE7GPROdd2", + // "llvm::ARMBaseRegisterInfo::getAllocationOrder(llvm::TargetRegisterClass const*, unsigned int, unsigned int, llvm::MachineFunction const&) const::GPROdd2"}, + // "llvm::ARMBaseRegisterInfo::getAllocationOrder(llvm::TargetRegisterClass const*, unsigned int, unsigned int, llvm::MachineFunction const&)::GPROdd2 const" was returned + + + // {"_ZZNK4llvm19ARMBaseRegisterInfo18getAllocationOrderEPKNS_19TargetRegisterClassEjjRKNS_15MachineFunctionEE8GPREven3", + // "llvm::ARMBaseRegisterInfo::getAllocationOrder(llvm::TargetRegisterClass const*, unsigned int, unsigned int, llvm::MachineFunction const&) const::GPREven3"}, + // "llvm::ARMBaseRegisterInfo::getAllocationOrder(llvm::TargetRegisterClass const*, unsigned int, unsigned int, llvm::MachineFunction const&)::GPREven3 const" was returned + + + // {"_ZZNK4llvm19ARMBaseRegisterInfo18getAllocationOrderEPKNS_19TargetRegisterClassEjjRKNS_15MachineFunctionEE7GPROdd3", + // "llvm::ARMBaseRegisterInfo::getAllocationOrder(llvm::TargetRegisterClass const*, unsigned int, unsigned int, llvm::MachineFunction const&) const::GPROdd3"}, + // "llvm::ARMBaseRegisterInfo::getAllocationOrder(llvm::TargetRegisterClass const*, unsigned int, unsigned int, llvm::MachineFunction const&)::GPROdd3 const" was returned + + + // {"_ZZNK4llvm19ARMBaseRegisterInfo18getAllocationOrderEPKNS_19TargetRegisterClassEjjRKNS_15MachineFunctionEE8GPREven4", + // "llvm::ARMBaseRegisterInfo::getAllocationOrder(llvm::TargetRegisterClass const*, unsigned int, unsigned int, llvm::MachineFunction const&) const::GPREven4"}, + // "llvm::ARMBaseRegisterInfo::getAllocationOrder(llvm::TargetRegisterClass const*, unsigned int, unsigned int, llvm::MachineFunction const&)::GPREven4 const" was returned + + + // {"_ZZNK4llvm19ARMBaseRegisterInfo18getAllocationOrderEPKNS_19TargetRegisterClassEjjRKNS_15MachineFunctionEE7GPROdd4", + // "llvm::ARMBaseRegisterInfo::getAllocationOrder(llvm::TargetRegisterClass const*, unsigned int, unsigned int, llvm::MachineFunction const&) const::GPROdd4"}, + // "llvm::ARMBaseRegisterInfo::getAllocationOrder(llvm::TargetRegisterClass const*, unsigned int, unsigned int, llvm::MachineFunction const&)::GPROdd4 const" was returned + + + // {"_ZZNK4llvm19ARMBaseRegisterInfo18getAllocationOrderEPKNS_19TargetRegisterClassEjjRKNS_15MachineFunctionEE8GPREven5", + // "llvm::ARMBaseRegisterInfo::getAllocationOrder(llvm::TargetRegisterClass const*, unsigned int, unsigned int, llvm::MachineFunction const&) const::GPREven5"}, + // "llvm::ARMBaseRegisterInfo::getAllocationOrder(llvm::TargetRegisterClass const*, unsigned int, unsigned int, llvm::MachineFunction const&)::GPREven5 const" was returned + + + // {"_ZZNK4llvm19ARMBaseRegisterInfo18getAllocationOrderEPKNS_19TargetRegisterClassEjjRKNS_15MachineFunctionEE7GPROdd5", + // "llvm::ARMBaseRegisterInfo::getAllocationOrder(llvm::TargetRegisterClass const*, unsigned int, unsigned int, llvm::MachineFunction const&) const::GPROdd5"}, + // "llvm::ARMBaseRegisterInfo::getAllocationOrder(llvm::TargetRegisterClass const*, unsigned int, unsigned int, llvm::MachineFunction const&)::GPROdd5 const" was returned + + + // {"_ZZNK4llvm19ARMBaseRegisterInfo18getAllocationOrderEPKNS_19TargetRegisterClassEjjRKNS_15MachineFunctionEE8GPREven6", + // "llvm::ARMBaseRegisterInfo::getAllocationOrder(llvm::TargetRegisterClass const*, unsigned int, unsigned int, llvm::MachineFunction const&) const::GPREven6"}, + // "llvm::ARMBaseRegisterInfo::getAllocationOrder(llvm::TargetRegisterClass const*, unsigned int, unsigned int, llvm::MachineFunction const&)::GPREven6 const" was returned + + + // {"_ZZNK4llvm19ARMBaseRegisterInfo18getAllocationOrderEPKNS_19TargetRegisterClassEjjRKNS_15MachineFunctionEE7GPROdd6", + // "llvm::ARMBaseRegisterInfo::getAllocationOrder(llvm::TargetRegisterClass const*, unsigned int, unsigned int, llvm::MachineFunction const&) const::GPROdd6"}, + // "llvm::ARMBaseRegisterInfo::getAllocationOrder(llvm::TargetRegisterClass const*, unsigned int, unsigned int, llvm::MachineFunction const&)::GPROdd6 const" was returned + + + // {"_ZZNK12_GLOBAL__N_114ARMCodeEmitter21getBinaryCodeForInstrERKN4llvm12MachineInstrEE8InstBits", + // "(anonymous namespace)::ARMCodeEmitter::getBinaryCodeForInstr(llvm::MachineInstr const&) const::InstBits"}, + // "(anonymous namespace)::ARMCodeEmitter::getBinaryCodeForInstr(llvm::MachineInstr const&)::InstBits const" was returned + + + // {"_ZZ11CC_ARM_APCSjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "CC_ARM_APCS(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "CC_ARM_APCS(unsigned int, llvm::MVT, llvm, CC_ARM_APCS::CCValAssign::LocInfo, CC_ARM_APCS::ISD::ArgFlagsTy, CC_ARM_APCS::CCState&)::RegList1" was returned + + + // {"_ZZN4llvm13f64AssignAPCSERjRNS_3MVTES2_RNS_11CCValAssign7LocInfoERNS_7CCStateEbE7RegList", + // "llvm::f64AssignAPCS(unsigned int&, llvm::MVT&, llvm::MVT&, llvm::CCValAssign::LocInfo&, llvm::CCState&, bool)::RegList"}, + // "llvm::f64AssignAPCS(unsigned int&, llvm::MVT&, llvm::MVT, llvm::CCValAssign::LocInfo&, llvm::CCState&, bool)::RegList" was returned + + + // {"_ZZ14RetCC_ARM_APCSjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "RetCC_ARM_APCS(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "RetCC_ARM_APCS(unsigned int, llvm::MVT, llvm, RetCC_ARM_APCS::CCValAssign::LocInfo, RetCC_ARM_APCS::ISD::ArgFlagsTy, RetCC_ARM_APCS::CCState&)::RegList1" was returned + + + // {"_ZZ14RetCC_ARM_APCSjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList2", + // "RetCC_ARM_APCS(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList2"}, + // "RetCC_ARM_APCS(unsigned int, llvm::MVT, llvm, RetCC_ARM_APCS::CCValAssign::LocInfo, RetCC_ARM_APCS::ISD::ArgFlagsTy, RetCC_ARM_APCS::CCState&)::RegList2" was returned + + + // {"_ZZN4llvm12f64RetAssignERjRNS_3MVTES2_RNS_11CCValAssign7LocInfoERNS_7CCStateEE9HiRegList", + // "llvm::f64RetAssign(unsigned int&, llvm::MVT&, llvm::MVT&, llvm::CCValAssign::LocInfo&, llvm::CCState&)::HiRegList"}, + // "llvm::f64RetAssign(unsigned int&, llvm::MVT&, llvm::MVT, llvm::CCValAssign::LocInfo&, llvm::CCState&)::HiRegList" was returned + + + // {"_ZZN4llvm12f64RetAssignERjRNS_3MVTES2_RNS_11CCValAssign7LocInfoERNS_7CCStateEE9LoRegList", + // "llvm::f64RetAssign(unsigned int&, llvm::MVT&, llvm::MVT&, llvm::CCValAssign::LocInfo&, llvm::CCState&)::LoRegList"}, + // "llvm::f64RetAssign(unsigned int&, llvm::MVT&, llvm::MVT, llvm::CCValAssign::LocInfo&, llvm::CCState&)::LoRegList" was returned + + + // {"_ZZ19CC_ARM_AAPCS_CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "CC_ARM_AAPCS_Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "CC_ARM_AAPCS_Common(unsigned int, llvm::MVT, llvm, CC_ARM_AAPCS_Common::CCValAssign::LocInfo, CC_ARM_AAPCS_Common::ISD::ArgFlagsTy, CC_ARM_AAPCS_Common::CCState&)::RegList1" was returned + + + // {"_ZZ19CC_ARM_AAPCS_CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList2", + // "CC_ARM_AAPCS_Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList2"}, + // "CC_ARM_AAPCS_Common(unsigned int, llvm::MVT, llvm, CC_ARM_AAPCS_Common::CCValAssign::LocInfo, CC_ARM_AAPCS_Common::ISD::ArgFlagsTy, CC_ARM_AAPCS_Common::CCState&)::RegList2" was returned + + + // {"_ZZ19CC_ARM_AAPCS_CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList3", + // "CC_ARM_AAPCS_Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList3"}, + // "CC_ARM_AAPCS_Common(unsigned int, llvm::MVT, llvm, CC_ARM_AAPCS_Common::CCValAssign::LocInfo, CC_ARM_AAPCS_Common::ISD::ArgFlagsTy, CC_ARM_AAPCS_Common::CCState&)::RegList3" was returned + + + // {"_ZZN4llvm14f64AssignAAPCSERjRNS_3MVTES2_RNS_11CCValAssign7LocInfoERNS_7CCStateEbE9HiRegList", + // "llvm::f64AssignAAPCS(unsigned int&, llvm::MVT&, llvm::MVT&, llvm::CCValAssign::LocInfo&, llvm::CCState&, bool)::HiRegList"}, + // "llvm::f64AssignAAPCS(unsigned int&, llvm::MVT&, llvm::MVT, llvm::CCValAssign::LocInfo&, llvm::CCState&, bool)::HiRegList" was returned + + + // {"_ZZN4llvm14f64AssignAAPCSERjRNS_3MVTES2_RNS_11CCValAssign7LocInfoERNS_7CCStateEbE9LoRegList", + // "llvm::f64AssignAAPCS(unsigned int&, llvm::MVT&, llvm::MVT&, llvm::CCValAssign::LocInfo&, llvm::CCState&, bool)::LoRegList"}, + // "llvm::f64AssignAAPCS(unsigned int&, llvm::MVT&, llvm::MVT, llvm::CCValAssign::LocInfo&, llvm::CCState&, bool)::LoRegList" was returned + + + // {"_ZZN4llvm14f64AssignAAPCSERjRNS_3MVTES2_RNS_11CCValAssign7LocInfoERNS_7CCStateEbE13ShadowRegList", + // "llvm::f64AssignAAPCS(unsigned int&, llvm::MVT&, llvm::MVT&, llvm::CCValAssign::LocInfo&, llvm::CCState&, bool)::ShadowRegList"}, + // "llvm::f64AssignAAPCS(unsigned int&, llvm::MVT&, llvm::MVT, llvm::CCValAssign::LocInfo&, llvm::CCState&, bool)::ShadowRegList" was returned + + + // {"_ZZ22RetCC_ARM_AAPCS_CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "RetCC_ARM_AAPCS_Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "RetCC_ARM_AAPCS_Common(unsigned int, llvm::MVT, llvm, RetCC_ARM_AAPCS_Common::CCValAssign::LocInfo, RetCC_ARM_AAPCS_Common::ISD::ArgFlagsTy, RetCC_ARM_AAPCS_Common::CCState&)::RegList1" was returned + + + // {"_ZZ22RetCC_ARM_AAPCS_CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList2", + // "RetCC_ARM_AAPCS_Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList2"}, + // "RetCC_ARM_AAPCS_Common(unsigned int, llvm::MVT, llvm, RetCC_ARM_AAPCS_Common::CCValAssign::LocInfo, RetCC_ARM_AAPCS_Common::ISD::ArgFlagsTy, RetCC_ARM_AAPCS_Common::CCState&)::RegList2" was returned + + + // {"_ZZ22RetCC_ARM_AAPCS_CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList3", + // "RetCC_ARM_AAPCS_Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList3"}, + // "RetCC_ARM_AAPCS_Common(unsigned int, llvm::MVT, llvm, RetCC_ARM_AAPCS_Common::CCValAssign::LocInfo, RetCC_ARM_AAPCS_Common::ISD::ArgFlagsTy, RetCC_ARM_AAPCS_Common::CCState&)::RegList3" was returned + + + // {"_ZZ16CC_ARM_AAPCS_VFPjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "CC_ARM_AAPCS_VFP(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "CC_ARM_AAPCS_VFP(unsigned int, llvm::MVT, llvm, CC_ARM_AAPCS_VFP::CCValAssign::LocInfo, CC_ARM_AAPCS_VFP::ISD::ArgFlagsTy, CC_ARM_AAPCS_VFP::CCState&)::RegList1" was returned + + + // {"_ZZ16CC_ARM_AAPCS_VFPjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList2", + // "CC_ARM_AAPCS_VFP(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList2"}, + // "CC_ARM_AAPCS_VFP(unsigned int, llvm::MVT, llvm, CC_ARM_AAPCS_VFP::CCValAssign::LocInfo, CC_ARM_AAPCS_VFP::ISD::ArgFlagsTy, CC_ARM_AAPCS_VFP::CCState&)::RegList2" was returned + + + // {"_ZZ16CC_ARM_AAPCS_VFPjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList3", + // "CC_ARM_AAPCS_VFP(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList3"}, + // "CC_ARM_AAPCS_VFP(unsigned int, llvm::MVT, llvm, CC_ARM_AAPCS_VFP::CCValAssign::LocInfo, CC_ARM_AAPCS_VFP::ISD::ArgFlagsTy, CC_ARM_AAPCS_VFP::CCState&)::RegList3" was returned + + + // {"_ZZ19RetCC_ARM_AAPCS_VFPjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "RetCC_ARM_AAPCS_VFP(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "RetCC_ARM_AAPCS_VFP(unsigned int, llvm::MVT, llvm, RetCC_ARM_AAPCS_VFP::CCValAssign::LocInfo, RetCC_ARM_AAPCS_VFP::ISD::ArgFlagsTy, RetCC_ARM_AAPCS_VFP::CCState&)::RegList1" was returned + + + // {"_ZZ19RetCC_ARM_AAPCS_VFPjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList2", + // "RetCC_ARM_AAPCS_VFP(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList2"}, + // "RetCC_ARM_AAPCS_VFP(unsigned int, llvm::MVT, llvm, RetCC_ARM_AAPCS_VFP::CCValAssign::LocInfo, RetCC_ARM_AAPCS_VFP::ISD::ArgFlagsTy, RetCC_ARM_AAPCS_VFP::CCState&)::RegList2" was returned + + + // {"_ZZ19RetCC_ARM_AAPCS_VFPjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList3", + // "RetCC_ARM_AAPCS_VFP(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList3"}, + // "RetCC_ARM_AAPCS_VFP(unsigned int, llvm::MVT, llvm, RetCC_ARM_AAPCS_VFP::CCValAssign::LocInfo, RetCC_ARM_AAPCS_VFP::ISD::ArgFlagsTy, RetCC_ARM_AAPCS_VFP::CCState&)::RegList3" was returned + + {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE7Opcodes", "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::Opcodes"}, + {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE8DOpcodes", "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::DOpcodes"}, + {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE8QOpcodes", "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::QOpcodes"}, + {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE9QOpcodes1", "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::QOpcodes1"}, + {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel10SelectCodeEPN4llvm6SDNodeEE12MatcherTable", "(anonymous namespace)::ARMDAGToDAGISel::SelectCode(llvm::SDNode*)::MatcherTable"}, + + // {"_ZZNK4llvm17ARMTargetLowering20LowerFormalArgumentsENS_7SDValueENS_11CallingConv2IDEbRKNS_15SmallVectorImplINS_3ISD8InputArgEEENS_8DebugLocERNS_12SelectionDAGERNS4_IS1_EEE10GPRArgRegs", + // "llvm::ARMTargetLowering::LowerFormalArguments(llvm::SDValue, llvm::CallingConv::ID, bool, llvm::SmallVectorImpl const&, llvm::DebugLoc, llvm::SelectionDAG&, llvm::SmallVectorImpl&) const::GPRArgRegs"}, + // "llvm::ARMTargetLowering::LowerFormalArguments(llvm::SDValue, llvm::CallingConv::ID, bool, llvm::SmallVectorImpl const&, llvm::DebugLoc, llvm::SelectionDAG&, llvm::CallingConv::ID&)::GPRArgRegs const" was returned + + + // {"_ZZ19CC_ARM_AAPCS_CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "CC_ARM_AAPCS_Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "CC_ARM_AAPCS_Common(unsigned int, llvm::MVT, llvm, CC_ARM_AAPCS_Common::CCValAssign::LocInfo, CC_ARM_AAPCS_Common::ISD::ArgFlagsTy, CC_ARM_AAPCS_Common::CCState&)::RegList1" was returned + + + // {"_ZZ19CC_ARM_AAPCS_CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList2", + // "CC_ARM_AAPCS_Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList2"}, + // "CC_ARM_AAPCS_Common(unsigned int, llvm::MVT, llvm, CC_ARM_AAPCS_Common::CCValAssign::LocInfo, CC_ARM_AAPCS_Common::ISD::ArgFlagsTy, CC_ARM_AAPCS_Common::CCState&)::RegList2" was returned + + + // {"_ZZ19CC_ARM_AAPCS_CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList3", + // "CC_ARM_AAPCS_Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList3"}, + // "CC_ARM_AAPCS_Common(unsigned int, llvm::MVT, llvm, CC_ARM_AAPCS_Common::CCValAssign::LocInfo, CC_ARM_AAPCS_Common::ISD::ArgFlagsTy, CC_ARM_AAPCS_Common::CCState&)::RegList3" was returned + + + // {"_ZZN4llvm14f64AssignAAPCSERjRNS_3MVTES2_RNS_11CCValAssign7LocInfoERNS_7CCStateEbE9HiRegList", + // "llvm::f64AssignAAPCS(unsigned int&, llvm::MVT&, llvm::MVT&, llvm::CCValAssign::LocInfo&, llvm::CCState&, bool)::HiRegList"}, + // "llvm::f64AssignAAPCS(unsigned int&, llvm::MVT&, llvm::MVT, llvm::CCValAssign::LocInfo&, llvm::CCState&, bool)::HiRegList" was returned + + + // {"_ZZN4llvm14f64AssignAAPCSERjRNS_3MVTES2_RNS_11CCValAssign7LocInfoERNS_7CCStateEbE9LoRegList", + // "llvm::f64AssignAAPCS(unsigned int&, llvm::MVT&, llvm::MVT&, llvm::CCValAssign::LocInfo&, llvm::CCState&, bool)::LoRegList"}, + // "llvm::f64AssignAAPCS(unsigned int&, llvm::MVT&, llvm::MVT, llvm::CCValAssign::LocInfo&, llvm::CCState&, bool)::LoRegList" was returned + + + // {"_ZZN4llvm14f64AssignAAPCSERjRNS_3MVTES2_RNS_11CCValAssign7LocInfoERNS_7CCStateEbE13ShadowRegList", + // "llvm::f64AssignAAPCS(unsigned int&, llvm::MVT&, llvm::MVT&, llvm::CCValAssign::LocInfo&, llvm::CCState&, bool)::ShadowRegList"}, + // "llvm::f64AssignAAPCS(unsigned int&, llvm::MVT&, llvm::MVT, llvm::CCValAssign::LocInfo&, llvm::CCState&, bool)::ShadowRegList" was returned + + + // {"_ZZ22RetCC_ARM_AAPCS_CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "RetCC_ARM_AAPCS_Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "RetCC_ARM_AAPCS_Common(unsigned int, llvm::MVT, llvm, RetCC_ARM_AAPCS_Common::CCValAssign::LocInfo, RetCC_ARM_AAPCS_Common::ISD::ArgFlagsTy, RetCC_ARM_AAPCS_Common::CCState&)::RegList1" was returned + + + // {"_ZZ22RetCC_ARM_AAPCS_CommonjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList2", + // "RetCC_ARM_AAPCS_Common(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList2"}, + // "RetCC_ARM_AAPCS_Common(unsigned int, llvm::MVT, llvm, RetCC_ARM_AAPCS_Common::CCValAssign::LocInfo, RetCC_ARM_AAPCS_Common::ISD::ArgFlagsTy, RetCC_ARM_AAPCS_Common::CCState&)::RegList2" was returned + + + // {"_ZZN4llvm12f64RetAssignERjRNS_3MVTES2_RNS_11CCValAssign7LocInfoERNS_7CCStateEE9HiRegList", + // "llvm::f64RetAssign(unsigned int&, llvm::MVT&, llvm::MVT&, llvm::CCValAssign::LocInfo&, llvm::CCState&)::HiRegList"}, + // "llvm::f64RetAssign(unsigned int&, llvm::MVT&, llvm::MVT, llvm::CCValAssign::LocInfo&, llvm::CCState&)::HiRegList" was returned + + + // {"_ZZN4llvm12f64RetAssignERjRNS_3MVTES2_RNS_11CCValAssign7LocInfoERNS_7CCStateEE9LoRegList", + // "llvm::f64RetAssign(unsigned int&, llvm::MVT&, llvm::MVT&, llvm::CCValAssign::LocInfo&, llvm::CCState&)::LoRegList"}, + // "llvm::f64RetAssign(unsigned int&, llvm::MVT&, llvm::MVT, llvm::CCValAssign::LocInfo&, llvm::CCState&)::LoRegList" was returned + + + // {"_ZZ11CC_ARM_APCSjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "CC_ARM_APCS(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "CC_ARM_APCS(unsigned int, llvm::MVT, llvm, CC_ARM_APCS::CCValAssign::LocInfo, CC_ARM_APCS::ISD::ArgFlagsTy, CC_ARM_APCS::CCState&)::RegList1" was returned + + + // {"_ZZN4llvm13f64AssignAPCSERjRNS_3MVTES2_RNS_11CCValAssign7LocInfoERNS_7CCStateEbE7RegList", + // "llvm::f64AssignAPCS(unsigned int&, llvm::MVT&, llvm::MVT&, llvm::CCValAssign::LocInfo&, llvm::CCState&, bool)::RegList"}, + // "llvm::f64AssignAPCS(unsigned int&, llvm::MVT&, llvm::MVT, llvm::CCValAssign::LocInfo&, llvm::CCState&, bool)::RegList" was returned + + + // {"_ZZ14RetCC_ARM_APCSjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "RetCC_ARM_APCS(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "RetCC_ARM_APCS(unsigned int, llvm::MVT, llvm, RetCC_ARM_APCS::CCValAssign::LocInfo, RetCC_ARM_APCS::ISD::ArgFlagsTy, RetCC_ARM_APCS::CCState&)::RegList1" was returned + + + // {"_ZZ14RetCC_ARM_APCSjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList2", + // "RetCC_ARM_APCS(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList2"}, + // "RetCC_ARM_APCS(unsigned int, llvm::MVT, llvm, RetCC_ARM_APCS::CCValAssign::LocInfo, RetCC_ARM_APCS::ISD::ArgFlagsTy, RetCC_ARM_APCS::CCState&)::RegList2" was returned + + + // {"_ZZ14RetCC_ARM_APCSjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList3", + // "RetCC_ARM_APCS(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList3"}, + // "RetCC_ARM_APCS(unsigned int, llvm::MVT, llvm, RetCC_ARM_APCS::CCValAssign::LocInfo, RetCC_ARM_APCS::ISD::ArgFlagsTy, RetCC_ARM_APCS::CCState&)::RegList3" was returned + + + // {"_ZZ16CC_ARM_AAPCS_VFPjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "CC_ARM_AAPCS_VFP(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "CC_ARM_AAPCS_VFP(unsigned int, llvm::MVT, llvm, CC_ARM_AAPCS_VFP::CCValAssign::LocInfo, CC_ARM_AAPCS_VFP::ISD::ArgFlagsTy, CC_ARM_AAPCS_VFP::CCState&)::RegList1" was returned + + + // {"_ZZ16CC_ARM_AAPCS_VFPjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList2", + // "CC_ARM_AAPCS_VFP(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList2"}, + // "CC_ARM_AAPCS_VFP(unsigned int, llvm::MVT, llvm, CC_ARM_AAPCS_VFP::CCValAssign::LocInfo, CC_ARM_AAPCS_VFP::ISD::ArgFlagsTy, CC_ARM_AAPCS_VFP::CCState&)::RegList2" was returned + + + // {"_ZZ16CC_ARM_AAPCS_VFPjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList3", + // "CC_ARM_AAPCS_VFP(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList3"}, + // "CC_ARM_AAPCS_VFP(unsigned int, llvm::MVT, llvm, CC_ARM_AAPCS_VFP::CCValAssign::LocInfo, CC_ARM_AAPCS_VFP::ISD::ArgFlagsTy, CC_ARM_AAPCS_VFP::CCState&)::RegList3" was returned + + + // {"_ZZ19RetCC_ARM_AAPCS_VFPjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "RetCC_ARM_AAPCS_VFP(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "RetCC_ARM_AAPCS_VFP(unsigned int, llvm::MVT, llvm, RetCC_ARM_AAPCS_VFP::CCValAssign::LocInfo, RetCC_ARM_AAPCS_VFP::ISD::ArgFlagsTy, RetCC_ARM_AAPCS_VFP::CCState&)::RegList1" was returned + + + // {"_ZZ19RetCC_ARM_AAPCS_VFPjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList2", + // "RetCC_ARM_AAPCS_VFP(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList2"}, + // "RetCC_ARM_AAPCS_VFP(unsigned int, llvm::MVT, llvm, RetCC_ARM_AAPCS_VFP::CCValAssign::LocInfo, RetCC_ARM_AAPCS_VFP::ISD::ArgFlagsTy, RetCC_ARM_AAPCS_VFP::CCState&)::RegList2" was returned + + + // {"_ZZ19RetCC_ARM_AAPCS_VFPjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList3", + // "RetCC_ARM_AAPCS_VFP(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList3"}, + // "RetCC_ARM_AAPCS_VFP(unsigned int, llvm::MVT, llvm, RetCC_ARM_AAPCS_VFP::CCValAssign::LocInfo, RetCC_ARM_AAPCS_VFP::ISD::ArgFlagsTy, RetCC_ARM_AAPCS_VFP::CCState&)::RegList3" was returned + + + // {"_ZZ15FastCC_ARM_APCSjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "FastCC_ARM_APCS(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "FastCC_ARM_APCS(unsigned int, llvm::MVT, llvm, FastCC_ARM_APCS::CCValAssign::LocInfo, FastCC_ARM_APCS::ISD::ArgFlagsTy, FastCC_ARM_APCS::CCState&)::RegList1" was returned + + + // {"_ZZ15FastCC_ARM_APCSjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList2", + // "FastCC_ARM_APCS(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList2"}, + // "FastCC_ARM_APCS(unsigned int, llvm::MVT, llvm, FastCC_ARM_APCS::CCValAssign::LocInfo, FastCC_ARM_APCS::ISD::ArgFlagsTy, FastCC_ARM_APCS::CCState&)::RegList2" was returned + + + // {"_ZZ15FastCC_ARM_APCSjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList3", + // "FastCC_ARM_APCS(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList3"}, + // "FastCC_ARM_APCS(unsigned int, llvm::MVT, llvm, FastCC_ARM_APCS::CCValAssign::LocInfo, FastCC_ARM_APCS::ISD::ArgFlagsTy, FastCC_ARM_APCS::CCState&)::RegList3" was returned + + + // {"_ZZ18RetFastCC_ARM_APCSjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList1", + // "RetFastCC_ARM_APCS(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList1"}, + // "RetFastCC_ARM_APCS(unsigned int, llvm::MVT, llvm, RetFastCC_ARM_APCS::CCValAssign::LocInfo, RetFastCC_ARM_APCS::ISD::ArgFlagsTy, RetFastCC_ARM_APCS::CCState&)::RegList1" was returned + + + // {"_ZZ18RetFastCC_ARM_APCSjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList2", + // "RetFastCC_ARM_APCS(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList2"}, + // "RetFastCC_ARM_APCS(unsigned int, llvm::MVT, llvm, RetFastCC_ARM_APCS::CCValAssign::LocInfo, RetFastCC_ARM_APCS::ISD::ArgFlagsTy, RetFastCC_ARM_APCS::CCState&)::RegList2" was returned + + + // {"_ZZ18RetFastCC_ARM_APCSjN4llvm3MVTES0_NS_11CCValAssign7LocInfoENS_3ISD10ArgFlagsTyERNS_7CCStateEE8RegList3", + // "RetFastCC_ARM_APCS(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)::RegList3"}, + // "RetFastCC_ARM_APCS(unsigned int, llvm::MVT, llvm, RetFastCC_ARM_APCS::CCValAssign::LocInfo, RetFastCC_ARM_APCS::ISD::ArgFlagsTy, RetFastCC_ARM_APCS::CCState&)::RegList3" was returned + + + // {"_ZZNK12_GLOBAL__N_116ARMMCCodeEmitter21getBinaryCodeForInstrERKN4llvm6MCInstERNS1_15SmallVectorImplINS1_7MCFixupEEEE8InstBits", + // "(anonymous namespace)::ARMMCCodeEmitter::getBinaryCodeForInstr(llvm::MCInst const&, llvm::SmallVectorImpl&) const::InstBits"}, + // "(anonymous namespace)::ARMMCCodeEmitter::getBinaryCodeForInstr(llvm::MCInst const&, (anonymous namespace)::ARMMCCodeEmitter::getBinaryCodeForInstr::SmallVectorImpl<(anonymous namespace)::ARMMCCodeEmitter::getBinaryCodeForInstr::MCFixup>&)::InstBits const" was returned + + + // {"_ZZN12_GLOBAL__N_116Thumb2SizeReduce13ReduceSpecialERN4llvm17MachineBasicBlockEPNS1_12MachineInstrERKNS_11ReduceEntryEbE11NarrowEntry", + // "(anonymous namespace)::Thumb2SizeReduce::ReduceSpecial(llvm::MachineBasicBlock&, llvm::MachineInstr*, (anonymous namespace)::ReduceEntry const&, bool)::NarrowEntry"}, + // "(anonymous namespace)::Thumb2SizeReduce::ReduceSpecial(llvm::MachineBasicBlock&, (anonymous namespace)::Thumb2SizeReduce::ReduceSpecial::MachineInstr*, (anonymous namespace)::ReduceEntry const&, bool)::NarrowEntry" was returned + + + // {"_ZZN12_GLOBAL__N_120SelectionDAGLegalize10ExpandNodeEPN4llvm6SDNodeERNS1_15SmallVectorImplINS1_7SDValueEEEE3Ops", + // "(anonymous namespace)::SelectionDAGLegalize::ExpandNode(llvm::SDNode*, llvm::SmallVectorImpl&)::Ops"}, + // "(anonymous namespace)::SelectionDAGLegalize::ExpandNode(llvm::SDNode*, (anonymous namespace)::SelectionDAGLegalize::ExpandNode::SmallVectorImpl<(anonymous namespace)::SelectionDAGLegalize::ExpandNode::SDValue>&)::Ops" was returned + + + // {"_ZZN4llvm16DAGTypeLegalizer25ExpandFloatRes_XINT_TO_FPEPNS_6SDNodeERNS_7SDValueES4_E6TwoE32", + // "llvm::DAGTypeLegalizer::ExpandFloatRes_XINT_TO_FP(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)::TwoE32"}, + // "llvm::DAGTypeLegalizer::ExpandFloatRes_XINT_TO_FP(llvm::SDNode*, llvm::SDValue&, llvm::SDValue)::TwoE32" was returned + + + // {"_ZZN4llvm16DAGTypeLegalizer25ExpandFloatRes_XINT_TO_FPEPNS_6SDNodeERNS_7SDValueES4_E6TwoE64", + // "llvm::DAGTypeLegalizer::ExpandFloatRes_XINT_TO_FP(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)::TwoE64"}, + // "llvm::DAGTypeLegalizer::ExpandFloatRes_XINT_TO_FP(llvm::SDNode*, llvm::SDValue&, llvm::SDValue)::TwoE64" was returned + + + // {"_ZZN4llvm16DAGTypeLegalizer25ExpandFloatRes_XINT_TO_FPEPNS_6SDNodeERNS_7SDValueES4_E7TwoE128", + // "llvm::DAGTypeLegalizer::ExpandFloatRes_XINT_TO_FP(llvm::SDNode*, llvm::SDValue&, llvm::SDValue&)::TwoE128"}, + // "llvm::DAGTypeLegalizer::ExpandFloatRes_XINT_TO_FP(llvm::SDNode*, llvm::SDValue&, llvm::SDValue)::TwoE128" was returned + + {"_ZZN4llvm16DAGTypeLegalizer24ExpandFloatOp_FP_TO_UINTEPNS_6SDNodeEE6TwoE31", "llvm::DAGTypeLegalizer::ExpandFloatOp_FP_TO_UINT(llvm::SDNode*)::TwoE31"}, + + // {"_ZZ10LowerCTPOPRN4llvm11LLVMContextEPNS_5ValueEPNS_11InstructionEE10MaskValues", + // "LowerCTPOP(llvm::LLVMContext&, llvm::Value*, llvm::Instruction*)::MaskValues"}, + // "LowerCTPOP(llvm::LLVMContext&, LowerCTPOP::Value*, LowerCTPOP::Instruction*)::MaskValues" was returned + + {"_ZN4llvm24RegisterCoalescerLinkVarE", "llvm::RegisterCoalescerLinkVar"}, + {"_ZN4llvm31SimpleRegisterCoalescingLinkVarE", "llvm::SimpleRegisterCoalescingLinkVar"}, + {"_ZN4llvm16CallGraphLinkVarE", "llvm::CallGraphLinkVar"}, + {"_ZN4llvm12ProfileInfoTINS_8FunctionENS_10BasicBlockEE12MissingValueE", "llvm::ProfileInfoT::MissingValue"}, + {"_ZN4llvm12ProfileInfoTINS_15MachineFunctionENS_17MachineBasicBlockEE12MissingValueE", "llvm::ProfileInfoT::MissingValue"}, + {"_ZTSN4llvm5ValueE", "typeinfo name for llvm::Value"}, + {"_ZTSN4llvm4TypeE", "typeinfo name for llvm::Type"}, + {"_ZTSN4llvm24AssemblyAnnotationWriterE", "typeinfo name for llvm::AssemblyAnnotationWriter"}, + {"_ZTSN4llvm10FoldingSetINS_17AttributeListImplEEE", "typeinfo name for llvm::FoldingSet"}, + {"_ZTSN4llvm10BasicBlockE", "typeinfo name for llvm::BasicBlock"}, + {"_ZTSN4llvm10ilist_nodeINS_10BasicBlockEEE", "typeinfo name for llvm::ilist_node"}, + {"_ZTSN4llvm15ilist_half_nodeINS_10BasicBlockEEE", "typeinfo name for llvm::ilist_half_node"}, + {"_ZTSN4llvm21ConstantAggregateZeroE", "typeinfo name for llvm::ConstantAggregateZero"}, + {"_ZTSN4llvm19ConstantPointerNullE", "typeinfo name for llvm::ConstantPointerNull"}, + {"_ZTSN4llvm12ConstantExprE", "typeinfo name for llvm::ConstantExpr"}, + {"_ZTSN4llvm10UndefValueE", "typeinfo name for llvm::UndefValue"}, + {"_ZTSN4llvm10ConstantFPE", "typeinfo name for llvm::ConstantFP"}, + {"_ZTSN4llvm13ConstantArrayE", "typeinfo name for llvm::ConstantArray"}, + {"_ZTSN4llvm14ConstantStructE", "typeinfo name for llvm::ConstantStruct"}, + {"_ZTSN4llvm14ConstantVectorE", "typeinfo name for llvm::ConstantVector"}, + {"_ZTSN4llvm12BlockAddressE", "typeinfo name for llvm::BlockAddress"}, + {"_ZTSN4llvm8ConstantE", "typeinfo name for llvm::Constant"}, + {"_ZTSN4llvm25GetElementPtrConstantExprE", "typeinfo name for llvm::GetElementPtrConstantExpr"}, + {"_ZTSN4llvm11ConstantIntE", "typeinfo name for llvm::ConstantInt"}, + {"_ZTSN4llvm19CompareConstantExprE", "typeinfo name for llvm::CompareConstantExpr"}, + {"_ZTSN4llvm24ExtractValueConstantExprE", "typeinfo name for llvm::ExtractValueConstantExpr"}, + {"_ZTSN4llvm23InsertValueConstantExprE", "typeinfo name for llvm::InsertValueConstantExpr"}, + {"_ZTSN4llvm25ShuffleVectorConstantExprE", "typeinfo name for llvm::ShuffleVectorConstantExpr"}, + {"_ZTSN4llvm25InsertElementConstantExprE", "typeinfo name for llvm::InsertElementConstantExpr"}, + {"_ZTSN4llvm26ExtractElementConstantExprE", "typeinfo name for llvm::ExtractElementConstantExpr"}, + {"_ZTSN4llvm18SelectConstantExprE", "typeinfo name for llvm::SelectConstantExpr"}, + {"_ZTSN4llvm18BinaryConstantExprE", "typeinfo name for llvm::BinaryConstantExpr"}, + {"_ZTSN4llvm17UnaryConstantExprE", "typeinfo name for llvm::UnaryConstantExpr"}, + {"_ZTSN4llvm10DebugRecVHE", "typeinfo name for llvm::DebugRecVH"}, + {"_ZTSN4llvm17DominatorTreeBaseINS_10BasicBlockEEE", "typeinfo name for llvm::DominatorTreeBase"}, + {"_ZTSN4llvm13DominatorBaseINS_10BasicBlockEEE", "typeinfo name for llvm::DominatorBase"}, + {"_ZTSN4llvm13DominatorTreeE", "typeinfo name for llvm::DominatorTree"}, + {"_ZZN4llvm9Intrinsic12isOverloadedENS0_2IDEE6OTable", "llvm::Intrinsic::isOverloaded(llvm::Intrinsic::ID)::OTable"}, + {"_ZTSN4llvm8FunctionE", "typeinfo name for llvm::Function"}, + {"_ZTSN4llvm10ilist_nodeINS_8FunctionEEE", "typeinfo name for llvm::ilist_node"}, + {"_ZTSN4llvm15ilist_half_nodeINS_8FunctionEEE", "typeinfo name for llvm::ilist_half_node"}, + {"_ZTSN4llvm8ArgumentE", "typeinfo name for llvm::Argument"}, + {"_ZTSN4llvm10ilist_nodeINS_8ArgumentEEE", "typeinfo name for llvm::ilist_node"}, + {"_ZTSN4llvm15ilist_half_nodeINS_8ArgumentEEE", "typeinfo name for llvm::ilist_half_node"}, + {"_ZTSN4llvm14GVMaterializerE", "typeinfo name for llvm::GVMaterializer"}, + {"_ZTSN4llvm11GlobalValueE", "typeinfo name for llvm::GlobalValue"}, + {"_ZTSN4llvm14GlobalVariableE", "typeinfo name for llvm::GlobalVariable"}, + {"_ZTSN4llvm11GlobalAliasE", "typeinfo name for llvm::GlobalAlias"}, + {"_ZTSN4llvm10ilist_nodeINS_14GlobalVariableEEE", "typeinfo name for llvm::ilist_node"}, + {"_ZTSN4llvm15ilist_half_nodeINS_14GlobalVariableEEE", "typeinfo name for llvm::ilist_half_node"}, + {"_ZTSN4llvm10ilist_nodeINS_11GlobalAliasEEE", "typeinfo name for llvm::ilist_node"}, + {"_ZTSN4llvm15ilist_half_nodeINS_11GlobalAliasEEE", "typeinfo name for llvm::ilist_half_node"}, + {"_ZTSN4llvm9InlineAsmE", "typeinfo name for llvm::InlineAsm"}, + {"_ZTSN4llvm11InstructionE", "typeinfo name for llvm::Instruction"}, + {"_ZTSN4llvm4UserE", "typeinfo name for llvm::User"}, + {"_ZTSN4llvm10ilist_nodeINS_11InstructionEEE", "typeinfo name for llvm::ilist_node"}, + {"_ZTSN4llvm15ilist_half_nodeINS_11InstructionEEE", "typeinfo name for llvm::ilist_half_node"}, + + // {"_ZZN4llvm8CastInst20isEliminableCastPairENS_11Instruction7CastOpsES2_PKNS_4TypeES5_S5_S5_E11CastResults", + // "llvm::CastInst::isEliminableCastPair(llvm::Instruction::CastOps, llvm::Instruction::CastOps, llvm::Type const*, llvm::Type const*, llvm::Type const*, llvm::Type const*)::CastResults"}, + // "llvm::CastInst::isEliminableCastPair(llvm::Instruction::CastOps, llvm::Instruction, llvm::Type const*, llvm::Type const, llvm::Type const, llvm::Type const)::CastResults" was returned + + {"_ZTSN4llvm14TerminatorInstE", "typeinfo name for llvm::TerminatorInst"}, + {"_ZTSN4llvm16UnaryInstructionE", "typeinfo name for llvm::UnaryInstruction"}, + {"_ZTSN4llvm17GetElementPtrInstE", "typeinfo name for llvm::GetElementPtrInst"}, + {"_ZTSN4llvm7CmpInstE", "typeinfo name for llvm::CmpInst"}, + {"_ZTSN4llvm8ICmpInstE", "typeinfo name for llvm::ICmpInst"}, + {"_ZTSN4llvm8FCmpInstE", "typeinfo name for llvm::FCmpInst"}, + {"_ZTSN4llvm8CallInstE", "typeinfo name for llvm::CallInst"}, + {"_ZTSN4llvm10SelectInstE", "typeinfo name for llvm::SelectInst"}, + {"_ZTSN4llvm9VAArgInstE", "typeinfo name for llvm::VAArgInst"}, + {"_ZTSN4llvm18ExtractElementInstE", "typeinfo name for llvm::ExtractElementInst"}, + {"_ZTSN4llvm17InsertElementInstE", "typeinfo name for llvm::InsertElementInst"}, + {"_ZTSN4llvm16ExtractValueInstE", "typeinfo name for llvm::ExtractValueInst"}, + {"_ZTSN4llvm15InsertValueInstE", "typeinfo name for llvm::InsertValueInst"}, + {"_ZTSN4llvm7PHINodeE", "typeinfo name for llvm::PHINode"}, + {"_ZTSN4llvm10ReturnInstE", "typeinfo name for llvm::ReturnInst"}, + {"_ZTSN4llvm10BranchInstE", "typeinfo name for llvm::BranchInst"}, + {"_ZTSN4llvm10SwitchInstE", "typeinfo name for llvm::SwitchInst"}, + {"_ZTSN4llvm14IndirectBrInstE", "typeinfo name for llvm::IndirectBrInst"}, + {"_ZTSN4llvm11BitCastInstE", "typeinfo name for llvm::BitCastInst"}, + {"_ZTSN4llvm10InvokeInstE", "typeinfo name for llvm::InvokeInst"}, + {"_ZTSN4llvm10UnwindInstE", "typeinfo name for llvm::UnwindInst"}, + {"_ZTSN4llvm15UnreachableInstE", "typeinfo name for llvm::UnreachableInst"}, + {"_ZTSN4llvm10AllocaInstE", "typeinfo name for llvm::AllocaInst"}, + {"_ZTSN4llvm8LoadInstE", "typeinfo name for llvm::LoadInst"}, + {"_ZTSN4llvm9StoreInstE", "typeinfo name for llvm::StoreInst"}, + {"_ZTSN4llvm17ShuffleVectorInstE", "typeinfo name for llvm::ShuffleVectorInst"}, + {"_ZTSN4llvm14BinaryOperatorE", "typeinfo name for llvm::BinaryOperator"}, + {"_ZTSN4llvm9TruncInstE", "typeinfo name for llvm::TruncInst"}, + {"_ZTSN4llvm8ZExtInstE", "typeinfo name for llvm::ZExtInst"}, + {"_ZTSN4llvm8SExtInstE", "typeinfo name for llvm::SExtInst"}, + {"_ZTSN4llvm11FPTruncInstE", "typeinfo name for llvm::FPTruncInst"}, + {"_ZTSN4llvm9FPExtInstE", "typeinfo name for llvm::FPExtInst"}, + {"_ZTSN4llvm10UIToFPInstE", "typeinfo name for llvm::UIToFPInst"}, + {"_ZTSN4llvm10SIToFPInstE", "typeinfo name for llvm::SIToFPInst"}, + {"_ZTSN4llvm10FPToUIInstE", "typeinfo name for llvm::FPToUIInst"}, + {"_ZTSN4llvm10FPToSIInstE", "typeinfo name for llvm::FPToSIInst"}, + {"_ZTSN4llvm12PtrToIntInstE", "typeinfo name for llvm::PtrToIntInst"}, + {"_ZTSN4llvm12IntToPtrInstE", "typeinfo name for llvm::IntToPtrInst"}, + {"_ZTSN4llvm8CastInstE", "typeinfo name for llvm::CastInst"}, + {"_ZTSN4llvm10FoldingSetINS_6MDNodeEEE", "typeinfo name for llvm::FoldingSet"}, + {"_ZTSN4llvm17ConstantUniqueMapIcNS_4TypeENS_21ConstantAggregateZeroELb0EEE", "typeinfo name for llvm::ConstantUniqueMap"}, + + // {"_ZTSN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_9ArrayTypeENS_13ConstantArrayELb1EEE", + // "typeinfo name for llvm::ConstantUniqueMap>, llvm::ArrayType, llvm::ConstantArray, true>"}, + // got error + + + // {"_ZTSN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_10StructTypeENS_14ConstantStructELb1EEE", + // "typeinfo name for llvm::ConstantUniqueMap>, llvm::StructType, llvm::ConstantStruct, true>"}, + // got error + + + // {"_ZTSN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_10VectorTypeENS_14ConstantVectorELb0EEE", + // "typeinfo name for llvm::ConstantUniqueMap>, llvm::VectorType, llvm::ConstantVector, false>"}, + // got error + + {"_ZTSN4llvm17ConstantUniqueMapIcNS_11PointerTypeENS_19ConstantPointerNullELb0EEE", "typeinfo name for llvm::ConstantUniqueMap"}, + {"_ZTSN4llvm17ConstantUniqueMapIcNS_4TypeENS_10UndefValueELb0EEE", "typeinfo name for llvm::ConstantUniqueMap"}, + {"_ZTSN4llvm17ConstantUniqueMapINS_14ExprMapKeyTypeENS_4TypeENS_12ConstantExprELb0EEE", "typeinfo name for llvm::ConstantUniqueMap"}, + {"_ZTSN4llvm17ConstantUniqueMapINS_16InlineAsmKeyTypeENS_11PointerTypeENS_9InlineAsmELb0EEE", "typeinfo name for llvm::ConstantUniqueMap"}, + {"_ZTSN4llvm11IntegerTypeE", "typeinfo name for llvm::IntegerType"}, + {"_ZTSN4llvm11DerivedTypeE", "typeinfo name for llvm::DerivedType"}, + {"_ZTSN4llvm13MDNodeOperandE", "typeinfo name for llvm::MDNodeOperand"}, + {"_ZTSN4llvm6MDNodeE", "typeinfo name for llvm::MDNode"}, + {"_ZTSN4llvm15ValueHandleBaseE", "typeinfo name for llvm::ValueHandleBase"}, + {"_ZTSN4llvm14FoldingSetImpl4NodeE", "typeinfo name for llvm::FoldingSetImpl::Node"}, + {"_ZTSN4llvm8MDStringE", "typeinfo name for llvm::MDString"}, + {"_ZTSN4llvm4PassE", "typeinfo name for llvm::Pass"}, + {"_ZTSN4llvm10ModulePassE", "typeinfo name for llvm::ModulePass"}, + {"_ZTSN4llvm13ImmutablePassE", "typeinfo name for llvm::ImmutablePass"}, + {"_ZTSN4llvm12FunctionPassE", "typeinfo name for llvm::FunctionPass"}, + {"_ZTSN4llvm14BasicBlockPassE", "typeinfo name for llvm::BasicBlockPass"}, + {"_ZTSN4llvm24PassRegistrationListenerE", "typeinfo name for llvm::PassRegistrationListener"}, + {"_ZTSN4llvm14PassNameParserE", "typeinfo name for llvm::PassNameParser"}, + {"_ZTSN12_GLOBAL__N_116GetCFGOnlyPassesE", "typeinfo name for (anonymous namespace)::GetCFGOnlyPasses"}, + {"_ZTSN4llvm2cl6parserIPKNS_8PassInfoEEE", "typeinfo name for llvm::cl::parser"}, + {"_ZTSN4llvm27PassManagerPrettyStackEntryE", "typeinfo name for llvm::PassManagerPrettyStackEntry"}, + {"_ZTSN4llvm13PMDataManagerE", "typeinfo name for llvm::PMDataManager"}, + {"_ZTSN4llvm13FPPassManagerE", "typeinfo name for llvm::FPPassManager"}, + {"_ZTSN4llvm17PMTopLevelManagerE", "typeinfo name for llvm::PMTopLevelManager"}, + {"_ZTSN4llvm13MPPassManagerE", "typeinfo name for llvm::MPPassManager"}, + {"_ZTSN4llvm15PassManagerBaseE", "typeinfo name for llvm::PassManagerBase"}, + {"_ZTSN4llvm19FunctionPassManagerE", "typeinfo name for llvm::FunctionPassManager"}, + {"_ZTSN4llvm11PassManagerE", "typeinfo name for llvm::PassManager"}, + {"_ZTSN12_GLOBAL__N_113BBPassManagerE", "typeinfo name for (anonymous namespace)::BBPassManager"}, + {"_ZTSN4llvm2cl3optIbLb1ENS0_6parserIbEEEE", "typeinfo name for llvm::cl::opt>"}, + {"_ZTSN4llvm2cl11opt_storageIbLb1ELb0EEE", "typeinfo name for llvm::cl::opt_storage"}, + {"_ZTSN4llvm2cl4listIPKNS_8PassInfoEbNS_14PassNameParserEEE", "typeinfo name for llvm::cl::list"}, + {"_ZTSN4llvm2cl12list_storageIPKNS_8PassInfoEbEE", "typeinfo name for llvm::cl::list_storage"}, + {"_ZTSSt6vectorIPKN4llvm8PassInfoESaIS3_EE", "typeinfo name for std::vector>"}, + {"_ZTSSt12_Vector_baseIPKN4llvm8PassInfoESaIS3_EE", "typeinfo name for std::_Vector_base>"}, + {"_ZTSN4llvm2cl3optINS_14PassDebugLevelELb0ENS0_6parserIS2_EEEE", "typeinfo name for llvm::cl::opt>"}, + {"_ZTSN4llvm2cl11opt_storageINS_14PassDebugLevelELb0ELb0EEE", "typeinfo name for llvm::cl::opt_storage"}, + {"_ZTSN4llvm2cl6parserINS_14PassDebugLevelEEE", "typeinfo name for llvm::cl::parser"}, + {"_ZTSN4llvm15PassManagerImplE", "typeinfo name for llvm::PassManagerImpl"}, + {"_ZTSN4llvm23FunctionPassManagerImplE", "typeinfo name for llvm::FunctionPassManagerImpl"}, + {"_ZTSN12_GLOBAL__N_117PrintFunctionPassE", "typeinfo name for (anonymous namespace)::PrintFunctionPass"}, + {"_ZTSN12_GLOBAL__N_115PrintModulePassE", "typeinfo name for (anonymous namespace)::PrintModulePass"}, + {"_ZTSN4llvm16AbstractTypeUserE", "typeinfo name for llvm::AbstractTypeUser"}, + {"_ZTSN4llvm14SequentialTypeE", "typeinfo name for llvm::SequentialType"}, + {"_ZTSN4llvm12FunctionTypeE", "typeinfo name for llvm::FunctionType"}, + {"_ZTSN4llvm10StructTypeE", "typeinfo name for llvm::StructType"}, + {"_ZTSN4llvm9ArrayTypeE", "typeinfo name for llvm::ArrayType"}, + {"_ZTSN4llvm10VectorTypeE", "typeinfo name for llvm::VectorType"}, + {"_ZTSN4llvm11PointerTypeE", "typeinfo name for llvm::PointerType"}, + {"_ZTSN4llvm13CompositeTypeE", "typeinfo name for llvm::CompositeType"}, + {"_ZTSN4llvm10OpaqueTypeE", "typeinfo name for llvm::OpaqueType"}, + {"_ZTSN4llvm15TypeSymbolTableE", "typeinfo name for llvm::TypeSymbolTable"}, + + // {"_ZZN4llvm3Use8initTagsEPS0_S1_E4tags", + // "llvm::Use::initTags(llvm::Use*, llvm::Use*)::tags"}, + // "llvm::Use::initTags(llvm::Use*, llvm::Use::initTags)::tags" was returned + + {"_ZTSN4llvm10CallbackVHE", "typeinfo name for llvm::CallbackVH"}, + {"_ZTSN12_GLOBAL__N_18VerifierE", "typeinfo name for (anonymous namespace)::Verifier"}, + {"_ZTSN4llvm11InstVisitorIN12_GLOBAL__N_18VerifierEvEE", "typeinfo name for llvm::InstVisitor<(anonymous namespace)::Verifier, void>"}, + {"_ZTSN12_GLOBAL__N_17TypeSetE", "typeinfo name for (anonymous namespace)::TypeSet"}, + {"_ZTSN12_GLOBAL__N_111PreVerifierE", "typeinfo name for (anonymous namespace)::PreVerifier"}, + {"_ZZN4llvm14ARMInstPrinter16printInstructionEPKNS_6MCInstERNS_11raw_ostreamEE6OpInfo", "llvm::ARMInstPrinter::printInstruction(llvm::MCInst const*, llvm::raw_ostream&)::OpInfo"}, + {"_ZZN4llvm14ARMInstPrinter15getRegisterNameEjE12RegAsmOffset", "llvm::ARMInstPrinter::getRegisterName(unsigned int)::RegAsmOffset"}, + {"_ZZN4llvm14ARMInstPrinter18getInstructionNameEjE13InstAsmOffset", "llvm::ARMInstPrinter::getInstructionName(unsigned int)::InstAsmOffset"}, + {"_ZZN4llvm14MCObjectWriter10WriteZerosEjE5Zeros", "llvm::MCObjectWriter::WriteZeros(unsigned int)::Zeros"}, + {"_ZZN4llvm14MCObjectWriter10WriteZerosEjE5Zeros", "llvm::MCObjectWriter::WriteZeros(unsigned int)::Zeros"}, + {"_ZZN4llvm14MCObjectWriter10WriteZerosEjE5Zeros", "llvm::MCObjectWriter::WriteZeros(unsigned int)::Zeros"}, + {"_ZZN4llvm14MCObjectWriter10WriteZerosEjE5Zeros", "llvm::MCObjectWriter::WriteZeros(unsigned int)::Zeros"}, + {"_ZZN4llvm14MCObjectWriter10WriteZerosEjE5Zeros", "llvm::MCObjectWriter::WriteZeros(unsigned int)::Zeros"}, + {"_ZZN4llvm7APFloat28roundSignificandWithExponentEPKyjiNS0_12roundingModeEE13calcSemantics", "llvm::APFloat::roundSignificandWithExponent(unsigned long long const*, unsigned int, int, llvm::APFloat::roundingMode)::calcSemantics"}, + {"_ZZ8powerOf5PyjE16firstEightPowers", "powerOf5(unsigned long long*, unsigned int)::firstEightPowers"}, + + // {"_ZZNK4llvm5APInt4sqrtEvE7results", + // "llvm::APInt::sqrt() const::results"}, + // "llvm::APInt::sqrt()::results const" was returned + + + // {"_ZZNK4llvm5APInt8toStringERNS_15SmallVectorImplIcEEjbE6Digits", + // "llvm::APInt::toString(llvm::SmallVectorImpl&, unsigned int, bool) const::Digits"}, + // "llvm::APInt::toString(llvm::SmallVectorImpl&, unsigned int, bool)::Digits const" was returned + + {"_ZTSN4llvm13SlabAllocatorE", "typeinfo name for llvm::SlabAllocator"}, + {"_ZTSN4llvm19MallocSlabAllocatorE", "typeinfo name for llvm::MallocSlabAllocator"}, + {"_ZTSN4llvm2cl6OptionE", "typeinfo name for llvm::cl::Option"}, + {"_ZTSN4llvm2cl19generic_parser_baseE", "typeinfo name for llvm::cl::generic_parser_base"}, + {"_ZTSN4llvm2cl17basic_parser_implE", "typeinfo name for llvm::cl::basic_parser_impl"}, + {"_ZTSN4llvm2cl6parserIbEE", "typeinfo name for llvm::cl::parser"}, + {"_ZTSN4llvm2cl6parserINS0_13boolOrDefaultEEE", "typeinfo name for llvm::cl::parser"}, + {"_ZTSN4llvm2cl6parserIiEE", "typeinfo name for llvm::cl::parser"}, + {"_ZTSN4llvm2cl6parserIjEE", "typeinfo name for llvm::cl::parser"}, + {"_ZTSN4llvm2cl6parserIdEE", "typeinfo name for llvm::cl::parser"}, + {"_ZTSN4llvm2cl6parserIfEE", "typeinfo name for llvm::cl::parser"}, + {"_ZTSN4llvm2cl6parserISsEE", "typeinfo name for llvm::cl::parser"}, + {"_ZTSN4llvm2cl6parserIcEE", "typeinfo name for llvm::cl::parser"}, + {"_ZTSN4llvm2cl5aliasE", "typeinfo name for llvm::cl::alias"}, + {"_ZTSN4llvm2cl3optIN12_GLOBAL__N_114VersionPrinterELb1ENS0_6parserIbEEEE", "typeinfo name for llvm::cl::opt<(anonymous namespace)::VersionPrinter, true, llvm::cl::parser>"}, + {"_ZTSN4llvm2cl11opt_storageIN12_GLOBAL__N_114VersionPrinterELb1ELb1EEE", "typeinfo name for llvm::cl::opt_storage<(anonymous namespace)::VersionPrinter, true, true>"}, + {"_ZTSN4llvm2cl3optIN12_GLOBAL__N_111HelpPrinterELb1ENS0_6parserIbEEEE", "typeinfo name for llvm::cl::opt<(anonymous namespace)::HelpPrinter, true, llvm::cl::parser>"}, + {"_ZTSN4llvm2cl11opt_storageIN12_GLOBAL__N_111HelpPrinterELb1ELb1EEE", "typeinfo name for llvm::cl::opt_storage<(anonymous namespace)::HelpPrinter, true, true>"}, + {"_ZTSN4llvm2cl12basic_parserIbEE", "typeinfo name for llvm::cl::basic_parser"}, + {"_ZTSN4llvm2cl12basic_parserINS0_13boolOrDefaultEEE", "typeinfo name for llvm::cl::basic_parser"}, + {"_ZTSN4llvm2cl12basic_parserIiEE", "typeinfo name for llvm::cl::basic_parser"}, + {"_ZTSN4llvm2cl12basic_parserIjEE", "typeinfo name for llvm::cl::basic_parser"}, + {"_ZTSN4llvm2cl12basic_parserIdEE", "typeinfo name for llvm::cl::basic_parser"}, + {"_ZTSN4llvm2cl12basic_parserIfEE", "typeinfo name for llvm::cl::basic_parser"}, + {"_ZTSN4llvm2cl12basic_parserISsEE", "typeinfo name for llvm::cl::basic_parser"}, + {"_ZTSN4llvm2cl12basic_parserIcEE", "typeinfo name for llvm::cl::basic_parser"}, + {"_ZTSN4llvm2cl3optIjLb0ENS0_6parserIjEEEE", "typeinfo name for llvm::cl::opt>"}, + {"_ZTSN4llvm2cl11opt_storageIjLb0ELb0EEE", "typeinfo name for llvm::cl::opt_storage"}, + {"_ZTSN4llvm2cl3optIiLb0ENS0_6parserIiEEEE", "typeinfo name for llvm::cl::opt>"}, + {"_ZTSN4llvm2cl11opt_storageIiLb0ELb0EEE", "typeinfo name for llvm::cl::opt_storage"}, + {"_ZTSN4llvm2cl3optISsLb0ENS0_6parserISsEEEE", "typeinfo name for llvm::cl::opt>"}, + {"_ZTSN4llvm2cl11opt_storageISsLb0ELb1EEE", "typeinfo name for llvm::cl::opt_storage"}, + {"_ZTSSs", "typeinfo name for std::string"}, + {"_ZTSN4llvm2cl3optIcLb0ENS0_6parserIcEEEE", "typeinfo name for llvm::cl::opt>"}, + {"_ZTSN4llvm2cl11opt_storageIcLb0ELb0EEE", "typeinfo name for llvm::cl::opt_storage"}, + {"_ZTSN4llvm2cl3optIbLb0ENS0_6parserIbEEEE", "typeinfo name for llvm::cl::opt>"}, + {"_ZTSN4llvm2cl11opt_storageIbLb0ELb0EEE", "typeinfo name for llvm::cl::opt_storage"}, + {"_ZTSN4llvm3sys11ThreadLocalIKN12_GLOBAL__N_124CrashRecoveryContextImplEEE", "typeinfo name for llvm::sys::ThreadLocal<(anonymous namespace)::CrashRecoveryContextImpl const>"}, + {"_ZTSN4llvm14FoldingSetImplE", "typeinfo name for llvm::FoldingSetImpl"}, + {"_ZTSN4llvm21formatted_raw_ostreamE", "typeinfo name for llvm::formatted_raw_ostream"}, + {"_ZTSN4llvm12MemoryBufferE", "typeinfo name for llvm::MemoryBuffer"}, + {"_ZTSN12_GLOBAL__N_120MemoryBufferMMapFileE", "typeinfo name for (anonymous namespace)::MemoryBufferMMapFile"}, + {"_ZTSN12_GLOBAL__N_115MemoryBufferMemE", "typeinfo name for (anonymous namespace)::MemoryBufferMem"}, + {"_ZN4llvm3sys13PathSeparatorE", "llvm::sys::PathSeparator"}, + {"_ZTSN4llvm21PrettyStackTraceEntryE", "typeinfo name for llvm::PrettyStackTraceEntry"}, + {"_ZTSN4llvm22PrettyStackTraceStringE", "typeinfo name for llvm::PrettyStackTraceString"}, + {"_ZTSN4llvm23PrettyStackTraceProgramE", "typeinfo name for llvm::PrettyStackTraceProgram"}, + {"_ZTSN4llvm3sys11ThreadLocalIKNS_21PrettyStackTraceEntryEEE", "typeinfo name for llvm::sys::ThreadLocal"}, + {"_ZN4llvm9StringRef4nposE", "llvm::StringRef::npos"}, + {"_ZTSN4llvm3sys15ThreadLocalImplE", "typeinfo name for llvm::sys::ThreadLocalImpl"}, + {"_ZTSN4llvm14format_object1IxEE", "typeinfo name for llvm::format_object1"}, + {"_ZTSN4llvm14format_object1IdEE", "typeinfo name for llvm::format_object1"}, + {"_ZTSN4llvm2cl3optISsLb1ENS0_6parserISsEEEE", "typeinfo name for llvm::cl::opt>"}, + {"_ZTSN4llvm2cl11opt_storageISsLb1ELb1EEE", "typeinfo name for llvm::cl::opt_storage"}, + {"_ZZN4llvm11raw_ostream6indentEjE6Spaces", "llvm::raw_ostream::indent(unsigned int)::Spaces"}, + {"_ZTSN4llvm11raw_ostreamE", "typeinfo name for llvm::raw_ostream"}, + {"_ZTSN4llvm18raw_string_ostreamE", "typeinfo name for llvm::raw_string_ostream"}, + {"_ZTSN4llvm16raw_null_ostreamE", "typeinfo name for llvm::raw_null_ostream"}, + {"_ZTSN4llvm18format_object_baseE", "typeinfo name for llvm::format_object_base"}, + {"_ZTSN4llvm14raw_fd_ostreamE", "typeinfo name for llvm::raw_fd_ostream"}, + {"_ZTSN4llvm19raw_svector_ostreamE", "typeinfo name for llvm::raw_svector_ostream"}, + {"_ZTSN4llvm14error_categoryE", "typeinfo name for llvm::error_category"}, + {"_ZTSN4llvm11_do_messageE", "typeinfo name for llvm::_do_message"}, + {"_ZTSN4llvm23_generic_error_categoryE", "typeinfo name for llvm::_generic_error_category"}, + {"_ZTSN4llvm22_system_error_categoryE", "typeinfo name for llvm::_system_error_category"}, + {"_ZTVN12_GLOBAL__N_110ASTDumpXMLE", "vtable for (anonymous namespace)::ASTDumpXML"}, + {"_ZTVN12_GLOBAL__N_117InheritanceViewerE", "vtable for (anonymous namespace)::InheritanceViewer"}, + {"_ZTVN12_GLOBAL__N_118DeclContextPrinterE", "vtable for (anonymous namespace)::DeclContextPrinter"}, + {"_ZTVN12_GLOBAL__N_19ASTViewerE", "vtable for (anonymous namespace)::ASTViewer"}, + {"_ZTVN12_GLOBAL__N_113ASTPrinterXMLE", "vtable for (anonymous namespace)::ASTPrinterXML"}, + {"_ZTVN12_GLOBAL__N_110ASTPrinterE", "vtable for (anonymous namespace)::ASTPrinter"}, + {"_ZTVN5clang14ASTMergeActionE", "vtable for clang::ASTMergeAction"}, + {"_ZTVN12_GLOBAL__N_129AugmentedCodeCompleteConsumerE", "vtable for (anonymous namespace)::AugmentedCodeCompleteConsumer"}, + {"_ZTVN12_GLOBAL__N_122StoredDiagnosticClientE", "vtable for (anonymous namespace)::StoredDiagnosticClient"}, + {"_ZTVN12_GLOBAL__N_124PrecompilePreambleActionE", "vtable for (anonymous namespace)::PrecompilePreambleAction"}, + {"_ZTVN12_GLOBAL__N_126PrecompilePreambleConsumerE", "vtable for (anonymous namespace)::PrecompilePreambleConsumer"}, + {"_ZTVN12_GLOBAL__N_125TopLevelDeclTrackerActionE", "vtable for (anonymous namespace)::TopLevelDeclTrackerAction"}, + {"_ZTVN12_GLOBAL__N_127TopLevelDeclTrackerConsumerE", "vtable for (anonymous namespace)::TopLevelDeclTrackerConsumer"}, + {"_ZTVN12_GLOBAL__N_116ASTInfoCollectorE", "vtable for (anonymous namespace)::ASTInfoCollector"}, + {"_ZTVN5clang14BoostConActionE", "vtable for clang::BoostConAction"}, + {"_ZTVN12_GLOBAL__N_119BoostConASTConsumerE", "vtable for (anonymous namespace)::BoostConASTConsumer"}, + {"_ZTVN12_GLOBAL__N_112StatListenerE", "vtable for (anonymous namespace)::StatListener"}, + {"_ZTVN12_GLOBAL__N_122DependencyFileCallbackE", "vtable for (anonymous namespace)::DependencyFileCallback"}, + {"_ZTVN5clang14FrontendActionE", "vtable for clang::FrontendAction"}, + {"_ZTVN5clang17ASTFrontendActionE", "vtable for clang::ASTFrontendAction"}, + {"_ZTVN5clang26PreprocessorFrontendActionE", "vtable for clang::PreprocessorFrontendAction"}, + {"_ZTVN12_GLOBAL__N_124DeserializedDeclsCheckerE", "vtable for (anonymous namespace)::DeserializedDeclsChecker"}, + {"_ZTVN12_GLOBAL__N_123DeserializedDeclsDumperE", "vtable for (anonymous namespace)::DeserializedDeclsDumper"}, + {"_ZTVN5clang14InitOnlyActionE", "vtable for clang::InitOnlyAction"}, + {"_ZTVN5clang14ASTPrintActionE", "vtable for clang::ASTPrintAction"}, + {"_ZTVN5clang17ASTPrintXMLActionE", "vtable for clang::ASTPrintXMLAction"}, + {"_ZTVN5clang13ASTDumpActionE", "vtable for clang::ASTDumpAction"}, + {"_ZTVN5clang16ASTDumpXMLActionE", "vtable for clang::ASTDumpXMLAction"}, + {"_ZTVN5clang13ASTViewActionE", "vtable for clang::ASTViewAction"}, + {"_ZTVN5clang22DeclContextPrintActionE", "vtable for clang::DeclContextPrintAction"}, + {"_ZTVN5clang17GeneratePCHActionE", "vtable for clang::GeneratePCHAction"}, + {"_ZTVN5clang21InheritanceViewActionE", "vtable for clang::InheritanceViewAction"}, + {"_ZTVN5clang16SyntaxOnlyActionE", "vtable for clang::SyntaxOnlyAction"}, + {"_ZTVN5clang19PrintPreambleActionE", "vtable for clang::PrintPreambleAction"}, + {"_ZTVN5clang19DumpRawTokensActionE", "vtable for clang::DumpRawTokensAction"}, + {"_ZTVN5clang16DumpTokensActionE", "vtable for clang::DumpTokensAction"}, + {"_ZTVN5clang17GeneratePTHActionE", "vtable for clang::GeneratePTHAction"}, + {"_ZTVN5clang20PreprocessOnlyActionE", "vtable for clang::PreprocessOnlyAction"}, + {"_ZTVN5clang23PrintPreprocessedActionE", "vtable for clang::PrintPreprocessedAction"}, + {"_ZTVN12_GLOBAL__N_122HeaderIncludesCallbackE", "vtable for (anonymous namespace)::HeaderIncludesCallback"}, + {"_ZTVN5clang35MultiplexASTDeserializationListenerE", "vtable for clang::MultiplexASTDeserializationListener"}, + {"_ZTVN5clang28MultiplexASTMutationListenerE", "vtable for clang::MultiplexASTMutationListener"}, + {"_ZTVN5clang17MultiplexConsumerE", "vtable for clang::MultiplexConsumer"}, + {"_ZTVN12_GLOBAL__N_120UnknownPragmaHandlerE", "vtable for (anonymous namespace)::UnknownPragmaHandler"}, + {"_ZTVN12_GLOBAL__N_124PrintPPOutputPPCallbacksE", "vtable for (anonymous namespace)::PrintPPOutputPPCallbacks"}, + {"_ZTVN5clang20TextDiagnosticBufferE", "vtable for clang::TextDiagnosticBuffer"}, + {"_ZTVN5clang21TextDiagnosticPrinterE", "vtable for clang::TextDiagnosticPrinter"}, + {"_ZTVN5clang23VerifyDiagnosticsClientE", "vtable for clang::VerifyDiagnosticsClient"}, + {"_ZTVN12_GLOBAL__N_117StandardDirectiveE", "vtable for (anonymous namespace)::StandardDirective"}, + {"_ZTVN12_GLOBAL__N_19DirectiveE", "vtable for (anonymous namespace)::Directive"}, + {"_ZTVN12_GLOBAL__N_114RegexDirectiveE", "vtable for (anonymous namespace)::RegexDirective"}, + {"_ZTVN5clang6driver6ActionE", "vtable for clang::driver::Action"}, + {"_ZTVN5clang6driver7ArgListE", "vtable for clang::driver::ArgList"}, + {"_ZTVN5clang6driver12InputArgListE", "vtable for clang::driver::InputArgList"}, + {"_ZTVN5clang6driver14DerivedArgListE", "vtable for clang::driver::DerivedArgList"}, + {"_ZTVN5clang6driver8HostInfoE", "vtable for clang::driver::HostInfo"}, + {"_ZTVN12_GLOBAL__N_115UnknownHostInfoE", "vtable for (anonymous namespace)::UnknownHostInfo"}, + {"_ZTVN12_GLOBAL__N_113MinGWHostInfoE", "vtable for (anonymous namespace)::MinGWHostInfo"}, + {"_ZTVN12_GLOBAL__N_115WindowsHostInfoE", "vtable for (anonymous namespace)::WindowsHostInfo"}, + {"_ZTVN12_GLOBAL__N_111TCEHostInfoE", "vtable for (anonymous namespace)::TCEHostInfo"}, + {"_ZTVN12_GLOBAL__N_113LinuxHostInfoE", "vtable for (anonymous namespace)::LinuxHostInfo"}, + {"_ZTVN12_GLOBAL__N_117DragonFlyHostInfoE", "vtable for (anonymous namespace)::DragonFlyHostInfo"}, + {"_ZTVN12_GLOBAL__N_113MinixHostInfoE", "vtable for (anonymous namespace)::MinixHostInfo"}, + {"_ZTVN12_GLOBAL__N_114NetBSDHostInfoE", "vtable for (anonymous namespace)::NetBSDHostInfo"}, + {"_ZTVN12_GLOBAL__N_115FreeBSDHostInfoE", "vtable for (anonymous namespace)::FreeBSDHostInfo"}, + {"_ZTVN12_GLOBAL__N_115OpenBSDHostInfoE", "vtable for (anonymous namespace)::OpenBSDHostInfo"}, + {"_ZTVN12_GLOBAL__N_114DarwinHostInfoE", "vtable for (anonymous namespace)::DarwinHostInfo"}, + {"_ZTVN12_GLOBAL__N_116AuroraUXHostInfoE", "vtable for (anonymous namespace)::AuroraUXHostInfo"}, + {"_ZTVN5clang6driver3JobE", "vtable for clang::driver::Job"}, + {"_ZTVN5clang6driver7JobListE", "vtable for clang::driver::JobList"}, + {"_ZTVN5clang6driver6OptionE", "vtable for clang::driver::Option"}, + {"_ZTVN5clang6driver11OptionGroupE", "vtable for clang::driver::OptionGroup"}, + {"_ZTVN5clang6driver11InputOptionE", "vtable for clang::driver::InputOption"}, + {"_ZTVN5clang6driver13UnknownOptionE", "vtable for clang::driver::UnknownOption"}, + {"_ZTVN5clang6driver10FlagOptionE", "vtable for clang::driver::FlagOption"}, + {"_ZTVN5clang6driver12JoinedOptionE", "vtable for clang::driver::JoinedOption"}, + {"_ZTVN5clang6driver17CommaJoinedOptionE", "vtable for clang::driver::CommaJoinedOption"}, + {"_ZTVN5clang6driver14SeparateOptionE", "vtable for clang::driver::SeparateOption"}, + {"_ZTVN5clang6driver14MultiArgOptionE", "vtable for clang::driver::MultiArgOption"}, + {"_ZTVN5clang6driver22JoinedOrSeparateOptionE", "vtable for clang::driver::JoinedOrSeparateOption"}, + {"_ZTVN5clang6driver23JoinedAndSeparateOptionE", "vtable for clang::driver::JoinedAndSeparateOption"}, + {"_ZTVN5clang6driver4ToolE", "vtable for clang::driver::Tool"}, + {"_ZTVN5clang6driver9ToolChainE", "vtable for clang::driver::ToolChain"}, + {"_ZTVN5clang6driver10toolchains6DarwinE", "vtable for clang::driver::toolchains::Darwin"}, + {"_ZTVN5clang6driver10toolchains9DarwinGCCE", "vtable for clang::driver::toolchains::DarwinGCC"}, + {"_ZTVN5clang6driver10toolchains11DarwinClangE", "vtable for clang::driver::toolchains::DarwinClang"}, + {"_ZTVN5clang6driver10toolchains11Generic_GCCE", "vtable for clang::driver::toolchains::Generic_GCC"}, + {"_ZTVN5clang6driver10toolchains12TCEToolChainE", "vtable for clang::driver::toolchains::TCEToolChain"}, + {"_ZTVN5clang6driver10toolchains7OpenBSDE", "vtable for clang::driver::toolchains::OpenBSD"}, + {"_ZTVN5clang6driver10toolchains7FreeBSDE", "vtable for clang::driver::toolchains::FreeBSD"}, + {"_ZTVN5clang6driver10toolchains6NetBSDE", "vtable for clang::driver::toolchains::NetBSD"}, + {"_ZTVN5clang6driver10toolchains5MinixE", "vtable for clang::driver::toolchains::Minix"}, + {"_ZTVN5clang6driver10toolchains8AuroraUXE", "vtable for clang::driver::toolchains::AuroraUX"}, + {"_ZTVN5clang6driver10toolchains5LinuxE", "vtable for clang::driver::toolchains::Linux"}, + {"_ZZN5clang6driver10toolchains5LinuxC1ERKNS0_8HostInfoERKN4llvm6TripleEE11GccVersions", "clang::driver::toolchains::Linux::Linux(clang::driver::HostInfo const&, llvm::Triple const&)::GccVersions"}, + {"_ZTVN5clang6driver10toolchains9DragonFlyE", "vtable for clang::driver::toolchains::DragonFly"}, + {"_ZTVN5clang6driver10toolchains7WindowsE", "vtable for clang::driver::toolchains::Windows"}, + {"_ZTVN5clang6driver10toolchains18Darwin_Generic_GCCE", "vtable for clang::driver::toolchains::Darwin_Generic_GCC"}, + {"_ZTVN5clang6driver5tools5ClangE", "vtable for clang::driver::tools::Clang"}, + {"_ZTVN5clang6driver5tools7ClangAsE", "vtable for clang::driver::tools::ClangAs"}, + {"_ZTVN5clang6driver5tools3gcc6CommonE", "vtable for clang::driver::tools::gcc::Common"}, + {"_ZTVN5clang6driver5tools3gcc10PreprocessE", "vtable for clang::driver::tools::gcc::Preprocess"}, + {"_ZTVN5clang6driver5tools3gcc10PrecompileE", "vtable for clang::driver::tools::gcc::Precompile"}, + {"_ZTVN5clang6driver5tools3gcc7CompileE", "vtable for clang::driver::tools::gcc::Compile"}, + {"_ZTVN5clang6driver5tools3gcc8AssembleE", "vtable for clang::driver::tools::gcc::Assemble"}, + {"_ZTVN5clang6driver5tools3gcc4LinkE", "vtable for clang::driver::tools::gcc::Link"}, + {"_ZTVN5clang6driver5tools6darwin10PreprocessE", "vtable for clang::driver::tools::darwin::Preprocess"}, + {"_ZTVN5clang6driver5tools6darwin7CompileE", "vtable for clang::driver::tools::darwin::Compile"}, + {"_ZTVN5clang6driver5tools6darwin8AssembleE", "vtable for clang::driver::tools::darwin::Assemble"}, + {"_ZTVN5clang6driver5tools6darwin4LinkE", "vtable for clang::driver::tools::darwin::Link"}, + {"_ZTVN5clang6driver5tools6darwin4LipoE", "vtable for clang::driver::tools::darwin::Lipo"}, + {"_ZTVN5clang6driver5tools6darwin8DsymutilE", "vtable for clang::driver::tools::darwin::Dsymutil"}, + {"_ZTVN5clang6driver5tools7openbsd8AssembleE", "vtable for clang::driver::tools::openbsd::Assemble"}, + {"_ZTVN5clang6driver5tools7openbsd4LinkE", "vtable for clang::driver::tools::openbsd::Link"}, + {"_ZTVN5clang6driver5tools7freebsd8AssembleE", "vtable for clang::driver::tools::freebsd::Assemble"}, + {"_ZTVN5clang6driver5tools7freebsd4LinkE", "vtable for clang::driver::tools::freebsd::Link"}, + {"_ZTVN5clang6driver5tools6netbsd8AssembleE", "vtable for clang::driver::tools::netbsd::Assemble"}, + {"_ZTVN5clang6driver5tools6netbsd4LinkE", "vtable for clang::driver::tools::netbsd::Link"}, + {"_ZTVN5clang6driver5tools10linuxtools8AssembleE", "vtable for clang::driver::tools::linuxtools::Assemble"}, + {"_ZTVN5clang6driver5tools10linuxtools4LinkE", "vtable for clang::driver::tools::linuxtools::Link"}, + {"_ZTVN5clang6driver5tools5minix8AssembleE", "vtable for clang::driver::tools::minix::Assemble"}, + {"_ZTVN5clang6driver5tools5minix4LinkE", "vtable for clang::driver::tools::minix::Link"}, + {"_ZTVN5clang6driver5tools8auroraux8AssembleE", "vtable for clang::driver::tools::auroraux::Assemble"}, + {"_ZTVN5clang6driver5tools8auroraux4LinkE", "vtable for clang::driver::tools::auroraux::Link"}, + {"_ZTVN5clang6driver5tools9dragonfly8AssembleE", "vtable for clang::driver::tools::dragonfly::Assemble"}, + {"_ZTVN5clang6driver5tools9dragonfly4LinkE", "vtable for clang::driver::tools::dragonfly::Link"}, + {"_ZTVN5clang6driver5tools12visualstudio4LinkE", "vtable for clang::driver::tools::visualstudio::Link"}, + {"_ZTVN5clang26ASTDeserializationListenerE", "vtable for clang::ASTDeserializationListener"}, + {"_ZTVN5clang17ASTReaderListenerE", "vtable for clang::ASTReaderListener"}, + {"_ZTVN5clang21ASTIdentifierIteratorE", "vtable for clang::ASTIdentifierIterator"}, + {"_ZTVN5clang9ASTReaderE", "vtable for clang::ASTReader"}, + {"_ZTVN5clang12PCHValidatorE", "vtable for clang::PCHValidator"}, + {"_ZTVN12_GLOBAL__N_112ASTStatCacheE", "vtable for (anonymous namespace)::ASTStatCache"}, + {"_ZTVN5clang9ASTWriterE", "vtable for clang::ASTWriter"}, + {"_ZTVN5clang24ASTSerializationListenerE", "vtable for clang::ASTSerializationListener"}, + {"_ZTVN5clang12PCHGeneratorE", "vtable for clang::PCHGenerator"}, + {"_ZTVN5clang7CodeGen8CGCXXABIE", "vtable for clang::CodeGen::CGCXXABI"}, + {"_ZTVN12_GLOBAL__N_113CallLocalDtorE", "vtable for (anonymous namespace)::CallLocalDtor"}, + {"_ZTVN12_GLOBAL__N_113CallFieldDtorE", "vtable for (anonymous namespace)::CallFieldDtor"}, + {"_ZTVN12_GLOBAL__N_118CallArrayFieldDtorE", "vtable for (anonymous namespace)::CallArrayFieldDtor"}, + {"_ZTVN12_GLOBAL__N_114CallDtorDeleteE", "vtable for (anonymous namespace)::CallDtorDelete"}, + {"_ZTVN12_GLOBAL__N_112CallBaseDtorE", "vtable for (anonymous namespace)::CallBaseDtor"}, + {"_ZTVN12_GLOBAL__N_114CallMemberDtorE", "vtable for (anonymous namespace)::CallMemberDtor"}, + {"_ZTVN5clang7CodeGen12EHScopeStack7CleanupE", "vtable for clang::CodeGen::EHScopeStack::Cleanup"}, + {"_ZTVN12_GLOBAL__N_116CallBlockReleaseE", "vtable for (anonymous namespace)::CallBlockRelease"}, + {"_ZTVN12_GLOBAL__N_119CallCleanupFunctionE", "vtable for (anonymous namespace)::CallCleanupFunction"}, + {"_ZTVN12_GLOBAL__N_111CallVarDtorE", "vtable for (anonymous namespace)::CallVarDtor"}, + {"_ZTVN12_GLOBAL__N_113CallArrayDtorE", "vtable for (anonymous namespace)::CallArrayDtor"}, + {"_ZTVN12_GLOBAL__N_116CallStackRestoreE", "vtable for (anonymous namespace)::CallStackRestore"}, + {"_ZTVN12_GLOBAL__N_114PerformFinallyE", "vtable for (anonymous namespace)::PerformFinally"}, + {"_ZTVN12_GLOBAL__N_122CallEndCatchForFinallyE", "vtable for (anonymous namespace)::CallEndCatchForFinally"}, + {"_ZTVN12_GLOBAL__N_111CallRethrowE", "vtable for (anonymous namespace)::CallRethrow"}, + {"_ZTVN12_GLOBAL__N_112CallEndCatchE", "vtable for (anonymous namespace)::CallEndCatch"}, + {"_ZTVN12_GLOBAL__N_116CallObjectDeleteE", "vtable for (anonymous namespace)::CallObjectDelete"}, + {"_ZTVN12_GLOBAL__N_115CallArrayDeleteE", "vtable for (anonymous namespace)::CallArrayDelete"}, + {"_ZTVN12_GLOBAL__N_130CallDeleteDuringConditionalNewE", "vtable for (anonymous namespace)::CallDeleteDuringConditionalNew"}, + {"_ZTVN12_GLOBAL__N_119CallDeleteDuringNewE", "vtable for (anonymous namespace)::CallDeleteDuringNew"}, + {"_ZTVN5clang7CodeGen13CGObjCRuntimeE", "vtable for clang::CodeGen::CGObjCRuntime"}, + {"_ZTVN12_GLOBAL__N_19CGObjCGNUE", "vtable for (anonymous namespace)::CGObjCGNU"}, + {"_ZTVN12_GLOBAL__N_112CallSyncExitE", "vtable for (anonymous namespace)::CallSyncExit"}, + {"_ZTVN12_GLOBAL__N_122CGObjCNonFragileABIMacE", "vtable for (anonymous namespace)::CGObjCNonFragileABIMac"}, + {"_ZTVN12_GLOBAL__N_116CallObjCEndCatchE", "vtable for (anonymous namespace)::CallObjCEndCatch"}, + {"_ZTVN12_GLOBAL__N_112CallSyncExitE", "vtable for (anonymous namespace)::CallSyncExit"}, + {"_ZTVN12_GLOBAL__N_115CGObjCCommonMacE", "vtable for (anonymous namespace)::CGObjCCommonMac"}, + {"_ZTVN12_GLOBAL__N_19CGObjCMacE", "vtable for (anonymous namespace)::CGObjCMac"}, + {"_ZTVN12_GLOBAL__N_121PerformFragileFinallyE", "vtable for (anonymous namespace)::PerformFragileFinally"}, + {"_ZTVN5clang13CodeGenActionE", "vtable for clang::CodeGenAction"}, + {"_ZTVN12_GLOBAL__N_19ARMCXXABIE", "vtable for (anonymous namespace)::ARMCXXABI"}, + {"_ZTVN12_GLOBAL__N_114CallGuardAbortE", "vtable for (anonymous namespace)::CallGuardAbort"}, + {"_ZTVN12_GLOBAL__N_113ItaniumCXXABIE", "vtable for (anonymous namespace)::ItaniumCXXABI"}, + {"_ZTVN12_GLOBAL__N_115MicrosoftCXXABIE", "vtable for (anonymous namespace)::MicrosoftCXXABI"}, + {"_ZTVN12_GLOBAL__N_117CodeGeneratorImplE", "vtable for (anonymous namespace)::CodeGeneratorImpl"}, + {"_ZTVN5clang7ABIInfoE", "vtable for clang::ABIInfo"}, + {"_ZTVN5clang17TargetCodeGenInfoE", "vtable for clang::TargetCodeGenInfo"}, + {"_ZTVN12_GLOBAL__N_123X86_64TargetCodeGenInfoE", "vtable for (anonymous namespace)::X86_64TargetCodeGenInfo"}, + {"_ZTVN12_GLOBAL__N_113X86_64ABIInfoE", "vtable for (anonymous namespace)::X86_64ABIInfo"}, + {"_ZTVN12_GLOBAL__N_126WinX86_64TargetCodeGenInfoE", "vtable for (anonymous namespace)::WinX86_64TargetCodeGenInfo"}, + {"_ZTVN12_GLOBAL__N_116WinX86_64ABIInfoE", "vtable for (anonymous namespace)::WinX86_64ABIInfo"}, + {"_ZTVN12_GLOBAL__N_123X86_32TargetCodeGenInfoE", "vtable for (anonymous namespace)::X86_32TargetCodeGenInfo"}, + {"_ZTVN12_GLOBAL__N_113X86_32ABIInfoE", "vtable for (anonymous namespace)::X86_32ABIInfo"}, + {"_ZTVN12_GLOBAL__N_123MSP430TargetCodeGenInfoE", "vtable for (anonymous namespace)::MSP430TargetCodeGenInfo"}, + {"_ZTVN12_GLOBAL__N_114DefaultABIInfoE", "vtable for (anonymous namespace)::DefaultABIInfo"}, + {"_ZTVN12_GLOBAL__N_123MBlazeTargetCodeGenInfoE", "vtable for (anonymous namespace)::MBlazeTargetCodeGenInfo"}, + {"_ZTVN12_GLOBAL__N_113MBlazeABIInfoE", "vtable for (anonymous namespace)::MBlazeABIInfo"}, + {"_ZTVN12_GLOBAL__N_124SystemZTargetCodeGenInfoE", "vtable for (anonymous namespace)::SystemZTargetCodeGenInfo"}, + {"_ZTVN12_GLOBAL__N_114SystemZABIInfoE", "vtable for (anonymous namespace)::SystemZABIInfo"}, + {"_ZTVN12_GLOBAL__N_122PPC32TargetCodeGenInfoE", "vtable for (anonymous namespace)::PPC32TargetCodeGenInfo"}, + {"_ZTVN12_GLOBAL__N_124DefaultTargetCodeGenInfoE", "vtable for (anonymous namespace)::DefaultTargetCodeGenInfo"}, + {"_ZTVN12_GLOBAL__N_120ARMTargetCodeGenInfoE", "vtable for (anonymous namespace)::ARMTargetCodeGenInfo"}, + {"_ZTVN12_GLOBAL__N_110ARMABIInfoE", "vtable for (anonymous namespace)::ARMABIInfo"}, + {"_ZTVN12_GLOBAL__N_121MIPSTargetCodeGenInfoE", "vtable for (anonymous namespace)::MIPSTargetCodeGenInfo"}, + {"_ZTVN5clang6Parser21LateParsedDeclarationE", "vtable for clang::Parser::LateParsedDeclaration"}, + {"_ZTVN5clang6Parser15LateParsedClassE", "vtable for clang::Parser::LateParsedClass"}, + {"_ZTVN5clang6Parser11LexedMethodE", "vtable for clang::Parser::LexedMethod"}, + {"_ZTVN5clang6Parser27LateParsedMethodDeclarationE", "vtable for clang::Parser::LateParsedMethodDeclaration"}, + {"_ZTVZN5clang6Parser20ParseStructUnionBodyENS_14SourceLocationEjPNS_4DeclEE14CFieldCallback", "vtable for clang::Parser::ParseStructUnionBody(clang::SourceLocation, unsigned int, clang::Decl*)::CFieldCallback"}, + {"_ZTVZN5clang6Parser31ParseObjCClassInstanceVariablesEPNS_4DeclENS_3tok15ObjCKeywordKindENS_14SourceLocationEE16ObjCIvarCallback", "vtable for clang::Parser::ParseObjCClassInstanceVariables(clang::Decl*, clang::tok::ObjCKeywordKind, clang::SourceLocation)::ObjCIvarCallback"}, + {"_ZTVN5clang18PragmaAlignHandlerE", "vtable for clang::PragmaAlignHandler"}, + {"_ZTVN5clang26PragmaGCCVisibilityHandlerE", "vtable for clang::PragmaGCCVisibilityHandler"}, + {"_ZTVN5clang20PragmaOptionsHandlerE", "vtable for clang::PragmaOptionsHandler"}, + {"_ZTVN5clang17PragmaPackHandlerE", "vtable for clang::PragmaPackHandler"}, + {"_ZTVN5clang19PragmaUnusedHandlerE", "vtable for clang::PragmaUnusedHandler"}, + {"_ZTVN5clang17PragmaWeakHandlerE", "vtable for clang::PragmaWeakHandler"}, + {"_ZTVN5clang6ParserE", "vtable for clang::Parser"}, + {"_ZTVN5clang27PrettyStackTraceParserEntryE", "vtable for clang::PrettyStackTraceParserEntry"}, + {"_ZTVN5clang6Parser13FieldCallbackE", "vtable for clang::Parser::FieldCallback"}, + {"_ZTVN12_GLOBAL__N_122UninitValsDiagReporterE", "vtable for (anonymous namespace)::UninitValsDiagReporter"}, + {"_ZTVN12_GLOBAL__N_122UnreachableCodeHandlerE", "vtable for (anonymous namespace)::UnreachableCodeHandler"}, + {"_ZTVN5clang20CodeCompleteConsumerE", "vtable for clang::CodeCompleteConsumer"}, + {"_ZTVN5clang28PrintingCodeCompleteConsumerE", "vtable for clang::PrintingCodeCompleteConsumer"}, + {"_ZTVN5clang4sema17FunctionScopeInfoE", "vtable for clang::sema::FunctionScopeInfo"}, + {"_ZTVN5clang4sema14BlockScopeInfoE", "vtable for clang::sema::BlockScopeInfo"}, + {"_ZTVN5clang18ExternalSemaSourceE", "vtable for clang::ExternalSemaSource"}, + {"_ZTVN5clang25PrettyDeclStackTraceEntryE", "vtable for clang::PrettyDeclStackTraceEntry"}, + {"_ZTVN12_GLOBAL__N_117CheckScanfHandlerE", "vtable for (anonymous namespace)::CheckScanfHandler"}, + {"_ZTVN12_GLOBAL__N_118CheckFormatHandlerE", "vtable for (anonymous namespace)::CheckFormatHandler"}, + {"_ZTVN12_GLOBAL__N_118CheckPrintfHandlerE", "vtable for (anonymous namespace)::CheckPrintfHandler"}, + {"_ZTVN12_GLOBAL__N_126CodeCompletionDeclConsumerE", "vtable for (anonymous namespace)::CodeCompletionDeclConsumer"}, + {"_ZTVN5clang19VisibleDeclConsumerE", "vtable for clang::VisibleDeclConsumer"}, + {"_ZZN5clang4Sema11CorrectTypoERNS_12LookupResultEPNS_5ScopeEPNS_12CXXScopeSpecEPNS_11DeclContextEbNS0_18CorrectTypoContextEPKNS_21ObjCObjectPointerTypeEE10CTypeSpecs", "clang::Sema::CorrectTypo(clang::LookupResult&, clang::Scope*, clang::CXXScopeSpec*, clang::DeclContext*, bool, clang::Sema::CorrectTypoContext, clang::ObjCObjectPointerType const*)::CTypeSpecs"}, + {"_ZZN5clang4Sema11CorrectTypoERNS_12LookupResultEPNS_5ScopeEPNS_12CXXScopeSpecEPNS_11DeclContextEbNS0_18CorrectTypoContextEPKNS_21ObjCObjectPointerTypeEE6CStmts", "clang::Sema::CorrectTypo(clang::LookupResult&, clang::Scope*, clang::CXXScopeSpec*, clang::DeclContext*, bool, clang::Sema::CorrectTypoContext, clang::ObjCObjectPointerType const*)::CStmts"}, + {"_ZTVN12_GLOBAL__N_122TypoCorrectionConsumerE", "vtable for (anonymous namespace)::TypoCorrectionConsumer"}, + {"_ZZN5clang25GetImplicitConversionNameENS_22ImplicitConversionKindEE4Name", "clang::GetImplicitConversionName(clang::ImplicitConversionKind)::Name"}, + {"_ZTVN5clang20TargetAttributesSemaE", "vtable for clang::TargetAttributesSema"}, + {"_ZTVN12_GLOBAL__N_117X86AttributesSemaE", "vtable for (anonymous namespace)::X86AttributesSema"}, + {"_ZTVN12_GLOBAL__N_120MBlazeAttributesSemaE", "vtable for (anonymous namespace)::MBlazeAttributesSema"}, + {"_ZTVN12_GLOBAL__N_120MSP430AttributesSemaE", "vtable for (anonymous namespace)::MSP430AttributesSema"}, + {"_ZTVN12_GLOBAL__N_126AdjustedReturnValueCheckerE", "vtable for (anonymous namespace)::AdjustedReturnValueChecker"}, + {"_ZTVN12_GLOBAL__N_111UbigraphVizE", "vtable for (anonymous namespace)::UbigraphViz"}, + {"_ZTVN12_GLOBAL__N_116AnalysisConsumerE", "vtable for (anonymous namespace)::AnalysisConsumer"}, + {"_ZTVN12_GLOBAL__N_120AnalyzerStatsCheckerE", "vtable for (anonymous namespace)::AnalyzerStatsChecker"}, + {"_ZTVN12_GLOBAL__N_117ArrayBoundCheckerE", "vtable for (anonymous namespace)::ArrayBoundChecker"}, + {"_ZTVN12_GLOBAL__N_119ArrayBoundCheckerV2E", "vtable for (anonymous namespace)::ArrayBoundCheckerV2"}, + {"_ZTVN12_GLOBAL__N_118AttrNonNullCheckerE", "vtable for (anonymous namespace)::AttrNonNullChecker"}, + {"_ZTVN12_GLOBAL__N_119ClassReleaseCheckerE", "vtable for (anonymous namespace)::ClassReleaseChecker"}, + {"_ZTVN12_GLOBAL__N_19APIMisuseE", "vtable for (anonymous namespace)::APIMisuse"}, + {"_ZTVN12_GLOBAL__N_122CFRetainReleaseCheckerE", "vtable for (anonymous namespace)::CFRetainReleaseChecker"}, + {"_ZTVN12_GLOBAL__N_121CFNumberCreateCheckerE", "vtable for (anonymous namespace)::CFNumberCreateChecker"}, + {"_ZTVN12_GLOBAL__N_113NilArgCheckerE", "vtable for (anonymous namespace)::NilArgChecker"}, + {"_ZTVN12_GLOBAL__N_122BuiltinFunctionCheckerE", "vtable for (anonymous namespace)::BuiltinFunctionChecker"}, + {"_ZTVN12_GLOBAL__N_114CStringCheckerE", "vtable for (anonymous namespace)::CStringChecker"}, + {"_ZTVN12_GLOBAL__N_121CallAndMessageCheckerE", "vtable for (anonymous namespace)::CallAndMessageChecker"}, + {"_ZTVN12_GLOBAL__N_115CastSizeCheckerE", "vtable for (anonymous namespace)::CastSizeChecker"}, + {"_ZTVN12_GLOBAL__N_119CastToStructCheckerE", "vtable for (anonymous namespace)::CastToStructChecker"}, + + // {"_ZZN12_GLOBAL__N_17WalkAST14CheckCall_randEPKN5clang8CallExprEPKNS1_12FunctionDeclEE11identifiers", + // "(anonymous namespace)::WalkAST::CheckCall_rand(clang::CallExpr const*, clang::FunctionDecl const*)::identifiers"}, + // "(anonymous namespace)::WalkAST::CheckCall_rand(clang::CallExpr const*, (anonymous namespace)::WalkAST::CheckCall_rand::FunctionDecl const*)::identifiers" was returned + + {"_ZTVN12_GLOBAL__N_113ChrootCheckerE", "vtable for (anonymous namespace)::ChrootChecker"}, + {"_ZTVN12_GLOBAL__N_112DeadStoreObsE", "vtable for (anonymous namespace)::DeadStoreObs"}, + {"_ZTVN12_GLOBAL__N_118DereferenceCheckerE", "vtable for (anonymous namespace)::DereferenceChecker"}, + {"_ZTVN12_GLOBAL__N_114DivZeroCheckerE", "vtable for (anonymous namespace)::DivZeroChecker"}, + {"_ZTVN5clang4ento10ExprEngineE", "vtable for clang::ento::ExprEngine"}, + {"_ZTVN12_GLOBAL__N_119FixedAddressCheckerE", "vtable for (anonymous namespace)::FixedAddressChecker"}, + {"_ZTVN5clang4ento14AnalysisActionE", "vtable for clang::ento::AnalysisAction"}, + {"_ZTVN12_GLOBAL__N_126IdempotentOperationCheckerE", "vtable for (anonymous namespace)::IdempotentOperationChecker"}, + + // {"_ZTVZN12_GLOBAL__N_126IdempotentOperationChecker25PathWasCompletelyAnalyzedEPKN5clang3CFGEPKNS1_8CFGBlockEPKNS1_10CFGStmtMapERKNS1_4ento10CoreEngineEE7VisitWL", + // "vtable for (anonymous namespace)::IdempotentOperationChecker::PathWasCompletelyAnalyzed(clang::CFG const*, clang::CFGBlock const*, clang::CFGStmtMap const*, clang::ento::CoreEngine const&)::VisitWL"}, + // "vtable for (anonymous namespace)::IdempotentOperationChecker::PathWasCompletelyAnalyzed(clang::CFG const*, (anonymous namespace)::IdempotentOperationChecker::PathWasCompletelyAnalyzed::CFGBlock const*, (anonymous namespace)::IdempotentOperationChecker::PathWasCompletelyAnalyzed::CFGStmtMap const*, (anonymous namespace)::IdempotentOperationChecker::PathWasCompletelyAnalyzed::ento::CoreEngine const&)::VisitWL" was returned + + {"_ZTVN12_GLOBAL__N_116MacOSXAPICheckerE", "vtable for (anonymous namespace)::MacOSXAPIChecker"}, + {"_ZTVN12_GLOBAL__N_113MallocCheckerE", "vtable for (anonymous namespace)::MallocChecker"}, + {"_ZTVN12_GLOBAL__N_124NSAutoreleasePoolCheckerE", "vtable for (anonymous namespace)::NSAutoreleasePoolChecker"}, + {"_ZTVN12_GLOBAL__N_114NSErrorCheckerE", "vtable for (anonymous namespace)::NSErrorChecker"}, + {"_ZTVN12_GLOBAL__N_123NoReturnFunctionCheckerE", "vtable for (anonymous namespace)::NoReturnFunctionChecker"}, + {"_ZTVN12_GLOBAL__N_115OSAtomicCheckerE", "vtable for (anonymous namespace)::OSAtomicChecker"}, + {"_ZTVN12_GLOBAL__N_117ObjCAtSyncCheckerE", "vtable for (anonymous namespace)::ObjCAtSyncChecker"}, + {"_ZTVN12_GLOBAL__N_119ObjCSelfInitCheckerE", "vtable for (anonymous namespace)::ObjCSelfInitChecker"}, + {"_ZTVN12_GLOBAL__N_111InitSelfBugE", "vtable for (anonymous namespace)::InitSelfBug"}, + {"_ZTVN12_GLOBAL__N_119PointerArithCheckerE", "vtable for (anonymous namespace)::PointerArithChecker"}, + {"_ZTVN12_GLOBAL__N_117PointerSubCheckerE", "vtable for (anonymous namespace)::PointerSubChecker"}, + {"_ZTVN12_GLOBAL__N_118PthreadLockCheckerE", "vtable for (anonymous namespace)::PthreadLockChecker"}, + {"_ZTVN12_GLOBAL__N_125ReturnPointerRangeCheckerE", "vtable for (anonymous namespace)::ReturnPointerRangeChecker"}, + {"_ZTVN12_GLOBAL__N_118ReturnUndefCheckerE", "vtable for (anonymous namespace)::ReturnUndefChecker"}, + {"_ZTVN12_GLOBAL__N_120StackAddrLeakCheckerE", "vtable for (anonymous namespace)::StackAddrLeakChecker"}, + + // {"_ZTVZN12_GLOBAL__N_120StackAddrLeakChecker11evalEndPathERN5clang4ento24EndOfFunctionNodeBuilderEPvRNS2_10ExprEngineEE8CallBack", + // "vtable for (anonymous namespace)::StackAddrLeakChecker::evalEndPath(clang::ento::EndOfFunctionNodeBuilder&, void*, clang::ento::ExprEngine&)::CallBack"}, + // "vtable for (anonymous namespace)::StackAddrLeakChecker::evalEndPath(clang::ento::EndOfFunctionNodeBuilder&, void*, clang::ExprEngine&)::CallBack" was returned + + {"_ZTVN12_GLOBAL__N_113StreamCheckerE", "vtable for (anonymous namespace)::StreamChecker"}, + {"_ZTVN12_GLOBAL__N_118UndefBranchCheckerE", "vtable for (anonymous namespace)::UndefBranchChecker"}, + {"_ZTVN12_GLOBAL__N_128UndefCapturedBlockVarCheckerE", "vtable for (anonymous namespace)::UndefCapturedBlockVarChecker"}, + {"_ZTVN12_GLOBAL__N_118UndefResultCheckerE", "vtable for (anonymous namespace)::UndefResultChecker"}, + {"_ZTVN12_GLOBAL__N_130UndefinedArraySubscriptCheckerE", "vtable for (anonymous namespace)::UndefinedArraySubscriptChecker"}, + {"_ZTVN12_GLOBAL__N_126UndefinedAssignmentCheckerE", "vtable for (anonymous namespace)::UndefinedAssignmentChecker"}, + {"_ZTVN12_GLOBAL__N_114UnixAPICheckerE", "vtable for (anonymous namespace)::UnixAPIChecker"}, + {"_ZTVN12_GLOBAL__N_122UnreachableCodeCheckerE", "vtable for (anonymous namespace)::UnreachableCodeChecker"}, + {"_ZTVN12_GLOBAL__N_114VLASizeCheckerE", "vtable for (anonymous namespace)::VLASizeChecker"}, + {"_ZTVN12_GLOBAL__N_122BasicConstraintManagerE", "vtable for (anonymous namespace)::BasicConstraintManager"}, + {"_ZTVN5clang4ento12StoreManager15BindingsHandlerE", "vtable for clang::ento::StoreManager::BindingsHandler"}, + {"_ZTVN12_GLOBAL__N_117BasicStoreManagerE", "vtable for (anonymous namespace)::BasicStoreManager"}, + {"_ZTVN12_GLOBAL__N_122BasicStoreSubRegionMapE", "vtable for (anonymous namespace)::BasicStoreSubRegionMap"}, + {"_ZTVN5clang4ento18BugReporterVisitorE", "vtable for clang::ento::BugReporterVisitor"}, + {"_ZTVN5clang4ento18BugReporterContextE", "vtable for clang::ento::BugReporterContext"}, + {"_ZTVN5clang4ento7BugTypeE", "vtable for clang::ento::BugType"}, + {"_ZTVN5clang4ento9BugReportE", "vtable for clang::ento::BugReport"}, + {"_ZTVN5clang4ento15RangedBugReportE", "vtable for clang::ento::RangedBugReport"}, + {"_ZTVN5clang4ento13GRBugReporterE", "vtable for clang::ento::GRBugReporter"}, + {"_ZTVN5clang4ento15BugReporterDataE", "vtable for clang::ento::BugReporterData"}, + {"_ZTVN5clang4ento11BugReporterE", "vtable for clang::ento::BugReporter"}, + {"_ZTVN12_GLOBAL__N_121PathDiagnosticBuilderE", "vtable for (anonymous namespace)::PathDiagnosticBuilder"}, + {"_ZTVN12_GLOBAL__N_114NodeMapClosureE", "vtable for (anonymous namespace)::NodeMapClosure"}, + {"_ZTVN12_GLOBAL__N_118ScanNotableSymbolsE", "vtable for (anonymous namespace)::ScanNotableSymbols"}, + {"_ZTVN12_GLOBAL__N_120NotableSymbolHandlerE", "vtable for (anonymous namespace)::NotableSymbolHandler"}, + {"_ZTVN12_GLOBAL__N_118NilReceiverVisitorE", "vtable for (anonymous namespace)::NilReceiverVisitor"}, + {"_ZTVN12_GLOBAL__N_122FindLastStoreBRVisitorE", "vtable for (anonymous namespace)::FindLastStoreBRVisitor"}, + {"_ZTVN12_GLOBAL__N_124TrackConstraintBRVisitorE", "vtable for (anonymous namespace)::TrackConstraintBRVisitor"}, + {"_ZTVN12_GLOBAL__N_110CFRefCountE", "vtable for (anonymous namespace)::CFRefCount"}, + {"_ZTVN12_GLOBAL__N_111CFRefReportE", "vtable for (anonymous namespace)::CFRefReport"}, + {"_ZTVN12_GLOBAL__N_115CFRefLeakReportE", "vtable for (anonymous namespace)::CFRefLeakReport"}, + {"_ZTVN12_GLOBAL__N_117FindUniqueBindingE", "vtable for (anonymous namespace)::FindUniqueBinding"}, + {"_ZTVN12_GLOBAL__N_120StopTrackingCallbackE", "vtable for (anonymous namespace)::StopTrackingCallback"}, + {"_ZTVN12_GLOBAL__N_120RetainReleaseCheckerE", "vtable for (anonymous namespace)::RetainReleaseChecker"}, + {"_ZTVN12_GLOBAL__N_118LeakWithinFunctionE", "vtable for (anonymous namespace)::LeakWithinFunction"}, + {"_ZTVN12_GLOBAL__N_18CFRefBugE", "vtable for (anonymous namespace)::CFRefBug"}, + {"_ZTVN12_GLOBAL__N_112LeakAtReturnE", "vtable for (anonymous namespace)::LeakAtReturn"}, + {"_ZTVN12_GLOBAL__N_124ReturnedNotOwnedForOwnedE", "vtable for (anonymous namespace)::ReturnedNotOwnedForOwned"}, + {"_ZTVN12_GLOBAL__N_115OverAutoreleaseE", "vtable for (anonymous namespace)::OverAutorelease"}, + {"_ZTVN12_GLOBAL__N_115DeallocNotOwnedE", "vtable for (anonymous namespace)::DeallocNotOwned"}, + {"_ZTVN12_GLOBAL__N_19DeallocGCE", "vtable for (anonymous namespace)::DeallocGC"}, + {"_ZTVN12_GLOBAL__N_110BadReleaseE", "vtable for (anonymous namespace)::BadRelease"}, + {"_ZTVN12_GLOBAL__N_115UseAfterReleaseE", "vtable for (anonymous namespace)::UseAfterRelease"}, + {"_ZTVN12_GLOBAL__N_110CFRefCount15BindingsPrinterE", "vtable for (anonymous namespace)::CFRefCount::BindingsPrinter"}, + {"_ZTVN5clang4ento7CheckerE", "vtable for clang::ento::Checker"}, + {"_ZTVN5clang4ento8WorkList7VisitorE", "vtable for clang::ento::WorkList::Visitor"}, + {"_ZTVN5clang4ento8WorkListE", "vtable for clang::ento::WorkList"}, + {"_ZTVN12_GLOBAL__N_119BFSBlockDFSContentsE", "vtable for (anonymous namespace)::BFSBlockDFSContents"}, + {"_ZTVN12_GLOBAL__N_13BFSE", "vtable for (anonymous namespace)::BFS"}, + {"_ZTVN12_GLOBAL__N_13DFSE", "vtable for (anonymous namespace)::DFS"}, + {"_ZTVN12_GLOBAL__N_116MarkLiveCallbackE", "vtable for (anonymous namespace)::MarkLiveCallback"}, + {"_ZTVN5clang4ento12ExplodedNode7AuditorE", "vtable for clang::ento::ExplodedNode::Auditor"}, + {"_ZTVN12_GLOBAL__N_116FlatStoreManagerE", "vtable for (anonymous namespace)::FlatStoreManager"}, + {"_ZTVN5clang4ento17ConstraintManagerE", "vtable for clang::ento::ConstraintManager"}, + {"_ZTVN12_GLOBAL__N_120ScanReachableSymbolsE", "vtable for (anonymous namespace)::ScanReachableSymbols"}, + {"_ZTVN12_GLOBAL__N_115HTMLDiagnosticsE", "vtable for (anonymous namespace)::HTMLDiagnostics"}, + {"_ZTVN5clang4ento9MemRegionE", "vtable for clang::ento::MemRegion"}, + {"_ZTVN5clang4ento14MemSpaceRegionE", "vtable for clang::ento::MemSpaceRegion"}, + {"_ZTVN5clang4ento23StaticGlobalSpaceRegionE", "vtable for clang::ento::StaticGlobalSpaceRegion"}, + {"_ZTVN5clang4ento26NonStaticGlobalSpaceRegionE", "vtable for clang::ento::NonStaticGlobalSpaceRegion"}, + {"_ZTVN5clang4ento16StackSpaceRegionE", "vtable for clang::ento::StackSpaceRegion"}, + {"_ZTVN5clang4ento9SubRegionE", "vtable for clang::ento::SubRegion"}, + {"_ZTVN5clang4ento12AllocaRegionE", "vtable for clang::ento::AllocaRegion"}, + {"_ZTVN5clang4ento18FunctionTextRegionE", "vtable for clang::ento::FunctionTextRegion"}, + {"_ZTVN5clang4ento15BlockTextRegionE", "vtable for clang::ento::BlockTextRegion"}, + {"_ZTVN5clang4ento15BlockDataRegionE", "vtable for clang::ento::BlockDataRegion"}, + {"_ZTVN5clang4ento14SymbolicRegionE", "vtable for clang::ento::SymbolicRegion"}, + {"_ZTVN5clang4ento12StringRegionE", "vtable for clang::ento::StringRegion"}, + {"_ZTVN5clang4ento21CompoundLiteralRegionE", "vtable for clang::ento::CompoundLiteralRegion"}, + {"_ZTVN5clang4ento10DeclRegionE", "vtable for clang::ento::DeclRegion"}, + {"_ZTVN5clang4ento9VarRegionE", "vtable for clang::ento::VarRegion"}, + {"_ZTVN5clang4ento13CXXThisRegionE", "vtable for clang::ento::CXXThisRegion"}, + {"_ZTVN5clang4ento11FieldRegionE", "vtable for clang::ento::FieldRegion"}, + {"_ZTVN5clang4ento14ObjCIvarRegionE", "vtable for clang::ento::ObjCIvarRegion"}, + {"_ZTVN5clang4ento13ElementRegionE", "vtable for clang::ento::ElementRegion"}, + {"_ZTVN5clang4ento19CXXTempObjectRegionE", "vtable for clang::ento::CXXTempObjectRegion"}, + {"_ZTVN5clang4ento19CXXBaseObjectRegionE", "vtable for clang::ento::CXXBaseObjectRegion"}, + {"_ZTVN5clang4ento19PathDiagnosticPieceE", "vtable for clang::ento::PathDiagnosticPiece"}, + {"_ZTVN5clang4ento24PathDiagnosticEventPieceE", "vtable for clang::ento::PathDiagnosticEventPiece"}, + {"_ZTVN5clang4ento30PathDiagnosticControlFlowPieceE", "vtable for clang::ento::PathDiagnosticControlFlowPiece"}, + {"_ZTVN5clang4ento24PathDiagnosticMacroPieceE", "vtable for clang::ento::PathDiagnosticMacroPiece"}, + {"_ZTVN5clang4ento20PathDiagnosticClientE", "vtable for clang::ento::PathDiagnosticClient"}, + {"_ZTVN5clang4ento23PathDiagnosticSpotPieceE", "vtable for clang::ento::PathDiagnosticSpotPiece"}, + {"_ZTVN12_GLOBAL__N_116PlistDiagnosticsE", "vtable for (anonymous namespace)::PlistDiagnostics"}, + {"_ZTVN12_GLOBAL__N_122RangeConstraintManagerE", "vtable for (anonymous namespace)::RangeConstraintManager"}, + {"_ZTVN12_GLOBAL__N_118RegionStoreManagerE", "vtable for (anonymous namespace)::RegionStoreManager"}, + {"_ZTVN12_GLOBAL__N_123RegionStoreSubRegionMapE", "vtable for (anonymous namespace)::RegionStoreSubRegionMap"}, + {"_ZTVN5clang4ento23SimpleConstraintManagerE", "vtable for clang::ento::SimpleConstraintManager"}, + {"_ZTVN12_GLOBAL__N_117SimpleSValBuilderE", "vtable for (anonymous namespace)::SimpleSValBuilder"}, + {"_ZTVN5clang4ento12StoreManagerE", "vtable for clang::ento::StoreManager"}, + {"_ZTVN5clang4ento13SymbolVisitorE", "vtable for clang::ento::SymbolVisitor"}, + {"_ZTVN5clang4ento17SymbolRegionValueE", "vtable for clang::ento::SymbolRegionValue"}, + {"_ZTVN5clang4ento14SymbolConjuredE", "vtable for clang::ento::SymbolConjured"}, + {"_ZTVN5clang4ento13SymbolDerivedE", "vtable for clang::ento::SymbolDerived"}, + {"_ZTVN5clang4ento12SymbolExtentE", "vtable for clang::ento::SymbolExtent"}, + {"_ZTVN5clang4ento14SymbolMetadataE", "vtable for clang::ento::SymbolMetadata"}, + {"_ZTVN5clang4ento10SymIntExprE", "vtable for clang::ento::SymIntExpr"}, + {"_ZTVN5clang4ento10SymSymExprE", "vtable for clang::ento::SymSymExpr"}, + {"_ZTVN12_GLOBAL__N_119TextPathDiagnosticsE", "vtable for (anonymous namespace)::TextPathDiagnostics"}, + {"_ZTVN5clang15LocationContextE", "vtable for clang::LocationContext"}, + {"_ZTVN5clang17StackFrameContextE", "vtable for clang::StackFrameContext"}, + {"_ZTVN5clang12ScopeContextE", "vtable for clang::ScopeContext"}, + {"_ZTVN5clang22BlockInvocationContextE", "vtable for clang::BlockInvocationContext"}, + {"_ZTVN12_GLOBAL__N_117StmtPrinterHelperE", "vtable for (anonymous namespace)::StmtPrinterHelper"}, + {"_ZTVN5clang21analyze_format_string19FormatStringHandlerE", "vtable for clang::analyze_format_string::FormatStringHandler"}, + {"_ZTVN5clang30UninitializedValues_ValueTypes10ObserverTyE", "vtable for clang::UninitializedValues_ValueTypes::ObserverTy"}, + {"_ZTVN12_GLOBAL__N_126UninitializedValuesCheckerE", "vtable for (anonymous namespace)::UninitializedValuesChecker"}, + {"_ZTVN5clang22UninitVariablesHandlerE", "vtable for clang::UninitVariablesHandler"}, + {"_ZTVN5clang3idx13EntityHandlerE", "vtable for clang::idx::EntityHandler"}, + {"_ZTVN5clang3idx22TranslationUnitHandlerE", "vtable for clang::idx::TranslationUnitHandler"}, + {"_ZTVN5clang3idx17TULocationHandlerE", "vtable for clang::idx::TULocationHandler"}, + {"_ZTVN5clang3idx13IndexProviderE", "vtable for clang::idx::IndexProvider"}, + {"_ZTVN5clang3idx7IndexerE", "vtable for clang::idx::Indexer"}, + {"_ZTVN12_GLOBAL__N_113EntityIndexerE", "vtable for (anonymous namespace)::EntityIndexer"}, + {"_ZTVN5clang3idx15TranslationUnitE", "vtable for clang::idx::TranslationUnit"}, + {"_ZTVN5clang13FixItRewriterE", "vtable for clang::FixItRewriter"}, + {"_ZTVN5clang12FixItOptionsE", "vtable for clang::FixItOptions"}, + {"_ZTVN5clang11FixItActionE", "vtable for clang::FixItAction"}, + {"_ZTVN5clang15HTMLPrintActionE", "vtable for clang::HTMLPrintAction"}, + {"_ZTVN5clang17RewriteObjCActionE", "vtable for clang::RewriteObjCAction"}, + {"_ZTVN5clang19RewriteMacrosActionE", "vtable for clang::RewriteMacrosAction"}, + {"_ZTVN5clang17RewriteTestActionE", "vtable for clang::RewriteTestAction"}, + {"_ZTVN12_GLOBAL__N_119FixItRewriteInPlaceE", "vtable for (anonymous namespace)::FixItRewriteInPlace"}, + {"_ZTVN12_GLOBAL__N_125FixItActionSuffixInserterE", "vtable for (anonymous namespace)::FixItActionSuffixInserter"}, + {"_ZTVN12_GLOBAL__N_111HTMLPrinterE", "vtable for (anonymous namespace)::HTMLPrinter"}, + {"_ZTVN12_GLOBAL__N_118IgnoringDiagClientE", "vtable for (anonymous namespace)::IgnoringDiagClient"}, + {"_ZTVN12_GLOBAL__N_111RewriteObjCE", "vtable for (anonymous namespace)::RewriteObjC"}, + {"_ZTVN5clang11ASTConsumerE", "vtable for clang::ASTConsumer"}, + {"_ZTVN5clang17ExternalASTSourceE", "vtable for clang::ExternalASTSource"}, + {"_ZTVN5clang19ASTMutationListenerE", "vtable for clang::ASTMutationListener"}, + {"_ZTVN5clang6CXXABIE", "vtable for clang::CXXABI"}, + {"_ZTVN5clang11ASTImporterE", "vtable for clang::ASTImporter"}, + {"_ZTVN5clang4AttrE", "vtable for clang::Attr"}, + {"_ZTVN5clang9AliasAttrE", "vtable for clang::AliasAttr"}, + {"_ZTVN5clang15AlignMac68kAttrE", "vtable for clang::AlignMac68kAttr"}, + {"_ZTVN5clang11AlignedAttrE", "vtable for clang::AlignedAttr"}, + {"_ZTVN5clang16AlwaysInlineAttrE", "vtable for clang::AlwaysInlineAttr"}, + {"_ZTVN5clang20AnalyzerNoReturnAttrE", "vtable for clang::AnalyzerNoReturnAttr"}, + {"_ZTVN5clang12AnnotateAttrE", "vtable for clang::AnnotateAttr"}, + {"_ZTVN5clang12AsmLabelAttrE", "vtable for clang::AsmLabelAttr"}, + {"_ZTVN5clang10BlocksAttrE", "vtable for clang::BlocksAttr"}, + {"_ZTVN5clang9CDeclAttrE", "vtable for clang::CDeclAttr"}, + {"_ZTVN5clang14CFConsumedAttrE", "vtable for clang::CFConsumedAttr"}, + {"_ZTVN5clang24CFReturnsNotRetainedAttrE", "vtable for clang::CFReturnsNotRetainedAttr"}, + {"_ZTVN5clang21CFReturnsRetainedAttrE", "vtable for clang::CFReturnsRetainedAttr"}, + {"_ZTVN5clang16CUDAConstantAttrE", "vtable for clang::CUDAConstantAttr"}, + {"_ZTVN5clang14CUDADeviceAttrE", "vtable for clang::CUDADeviceAttr"}, + {"_ZTVN5clang14CUDAGlobalAttrE", "vtable for clang::CUDAGlobalAttr"}, + {"_ZTVN5clang12CUDAHostAttrE", "vtable for clang::CUDAHostAttr"}, + {"_ZTVN5clang20CUDALaunchBoundsAttrE", "vtable for clang::CUDALaunchBoundsAttr"}, + {"_ZTVN5clang14CUDASharedAttrE", "vtable for clang::CUDASharedAttr"}, + {"_ZTVN5clang21CarriesDependencyAttrE", "vtable for clang::CarriesDependencyAttr"}, + {"_ZTVN5clang11CleanupAttrE", "vtable for clang::CleanupAttr"}, + {"_ZTVN5clang10CommonAttrE", "vtable for clang::CommonAttr"}, + {"_ZTVN5clang9ConstAttrE", "vtable for clang::ConstAttr"}, + {"_ZTVN5clang15ConstructorAttrE", "vtable for clang::ConstructorAttr"}, + {"_ZTVN5clang13DLLExportAttrE", "vtable for clang::DLLExportAttr"}, + {"_ZTVN5clang13DLLImportAttrE", "vtable for clang::DLLImportAttr"}, + {"_ZTVN5clang14DeprecatedAttrE", "vtable for clang::DeprecatedAttr"}, + {"_ZTVN5clang14DestructorAttrE", "vtable for clang::DestructorAttr"}, + {"_ZTVN5clang12ExplicitAttrE", "vtable for clang::ExplicitAttr"}, + {"_ZTVN5clang12FastCallAttrE", "vtable for clang::FastCallAttr"}, + {"_ZTVN5clang9FinalAttrE", "vtable for clang::FinalAttr"}, + {"_ZTVN5clang10FormatAttrE", "vtable for clang::FormatAttr"}, + {"_ZTVN5clang13FormatArgAttrE", "vtable for clang::FormatArgAttr"}, + {"_ZTVN5clang13GNUInlineAttrE", "vtable for clang::GNUInlineAttr"}, + {"_ZTVN5clang12IBActionAttrE", "vtable for clang::IBActionAttr"}, + {"_ZTVN5clang12IBOutletAttrE", "vtable for clang::IBOutletAttr"}, + {"_ZTVN5clang22IBOutletCollectionAttrE", "vtable for clang::IBOutletCollectionAttr"}, + {"_ZTVN5clang16InitPriorityAttrE", "vtable for clang::InitPriorityAttr"}, + {"_ZTVN5clang26MBlazeInterruptHandlerAttrE", "vtable for clang::MBlazeInterruptHandlerAttr"}, + {"_ZTVN5clang23MBlazeSaveVolatilesAttrE", "vtable for clang::MBlazeSaveVolatilesAttr"}, + {"_ZTVN5clang19MSP430InterruptAttrE", "vtable for clang::MSP430InterruptAttr"}, + {"_ZTVN5clang10MallocAttrE", "vtable for clang::MallocAttr"}, + {"_ZTVN5clang21MaxFieldAlignmentAttrE", "vtable for clang::MaxFieldAlignmentAttr"}, + {"_ZTVN5clang12MayAliasAttrE", "vtable for clang::MayAliasAttr"}, + {"_ZTVN5clang14NSConsumedAttrE", "vtable for clang::NSConsumedAttr"}, + {"_ZTVN5clang18NSConsumesSelfAttrE", "vtable for clang::NSConsumesSelfAttr"}, + {"_ZTVN5clang25NSReturnsAutoreleasedAttrE", "vtable for clang::NSReturnsAutoreleasedAttr"}, + {"_ZTVN5clang24NSReturnsNotRetainedAttrE", "vtable for clang::NSReturnsNotRetainedAttr"}, + {"_ZTVN5clang21NSReturnsRetainedAttrE", "vtable for clang::NSReturnsRetainedAttr"}, + {"_ZTVN5clang9NakedAttrE", "vtable for clang::NakedAttr"}, + {"_ZTVN5clang12NoCommonAttrE", "vtable for clang::NoCommonAttr"}, + {"_ZTVN5clang11NoDebugAttrE", "vtable for clang::NoDebugAttr"}, + {"_ZTVN5clang12NoInlineAttrE", "vtable for clang::NoInlineAttr"}, + {"_ZTVN5clang24NoInstrumentFunctionAttrE", "vtable for clang::NoInstrumentFunctionAttr"}, + {"_ZTVN5clang12NoReturnAttrE", "vtable for clang::NoReturnAttr"}, + {"_ZTVN5clang11NoThrowAttrE", "vtable for clang::NoThrowAttr"}, + {"_ZTVN5clang11NonNullAttrE", "vtable for clang::NonNullAttr"}, + {"_ZTVN5clang17ObjCExceptionAttrE", "vtable for clang::ObjCExceptionAttr"}, + {"_ZTVN5clang16ObjCNSObjectAttrE", "vtable for clang::ObjCNSObjectAttr"}, + {"_ZTVN5clang16OverloadableAttrE", "vtable for clang::OverloadableAttr"}, + {"_ZTVN5clang12OverrideAttrE", "vtable for clang::OverrideAttr"}, + {"_ZTVN5clang13OwnershipAttrE", "vtable for clang::OwnershipAttr"}, + {"_ZTVN5clang10PackedAttrE", "vtable for clang::PackedAttr"}, + {"_ZTVN5clang10PascalAttrE", "vtable for clang::PascalAttr"}, + {"_ZTVN5clang8PureAttrE", "vtable for clang::PureAttr"}, + {"_ZTVN5clang11RegparmAttrE", "vtable for clang::RegparmAttr"}, + {"_ZTVN5clang21ReqdWorkGroupSizeAttrE", "vtable for clang::ReqdWorkGroupSizeAttr"}, + {"_ZTVN5clang11SectionAttrE", "vtable for clang::SectionAttr"}, + {"_ZTVN5clang12SentinelAttrE", "vtable for clang::SentinelAttr"}, + {"_ZTVN5clang11StdCallAttrE", "vtable for clang::StdCallAttr"}, + {"_ZTVN5clang12ThisCallAttrE", "vtable for clang::ThisCallAttr"}, + {"_ZTVN5clang20TransparentUnionAttrE", "vtable for clang::TransparentUnionAttr"}, + {"_ZTVN5clang15UnavailableAttrE", "vtable for clang::UnavailableAttr"}, + {"_ZTVN5clang10UnusedAttrE", "vtable for clang::UnusedAttr"}, + {"_ZTVN5clang8UsedAttrE", "vtable for clang::UsedAttr"}, + {"_ZTVN5clang8UuidAttrE", "vtable for clang::UuidAttr"}, + {"_ZTVN5clang13VecReturnAttrE", "vtable for clang::VecReturnAttr"}, + {"_ZTVN5clang14VisibilityAttrE", "vtable for clang::VisibilityAttr"}, + {"_ZTVN5clang20WarnUnusedResultAttrE", "vtable for clang::WarnUnusedResultAttr"}, + {"_ZTVN5clang8WeakAttrE", "vtable for clang::WeakAttr"}, + {"_ZTVN5clang14WeakImportAttrE", "vtable for clang::WeakImportAttr"}, + {"_ZTVN5clang11WeakRefAttrE", "vtable for clang::WeakRefAttr"}, + {"_ZTVN5clang27X86ForceAlignArgPointerAttrE", "vtable for clang::X86ForceAlignArgPointerAttr"}, + {"_ZTVN5clang10RecordDeclE", "vtable for clang::RecordDecl"}, + {"_ZTVN5clang7VarDeclE", "vtable for clang::VarDecl"}, + {"_ZTVN5clang12FunctionDeclE", "vtable for clang::FunctionDecl"}, + {"_ZTVN5clang16EnumConstantDeclE", "vtable for clang::EnumConstantDecl"}, + {"_ZTVN5clang7TagDeclE", "vtable for clang::TagDecl"}, + {"_ZTVN5clang9BlockDeclE", "vtable for clang::BlockDecl"}, + {"_ZTVN5clang4DeclE", "vtable for clang::Decl"}, + {"_ZTVN5clang20PrettyStackTraceDeclE", "vtable for clang::PrettyStackTraceDecl"}, + {"_ZTVN5clang13CXXRecordDeclE", "vtable for clang::CXXRecordDecl"}, + {"_ZTVN5clang13ObjCClassDeclE", "vtable for clang::ObjCClassDecl"}, + {"_ZTVN5clang14ObjCMethodDeclE", "vtable for clang::ObjCMethodDecl"}, + {"_ZTVN5clang20ObjCPropertyImplDeclE", "vtable for clang::ObjCPropertyImplDecl"}, + {"_ZTVN5clang23NonTypeTemplateParmDeclE", "vtable for clang::NonTypeTemplateParmDecl"}, + {"_ZTVN5clang31ClassTemplateSpecializationDeclE", "vtable for clang::ClassTemplateSpecializationDecl"}, + {"_ZTVN5clang24RedeclarableTemplateDeclE", "vtable for clang::RedeclarableTemplateDecl"}, + {"_ZTVN5clang20FunctionTemplateDeclE", "vtable for clang::FunctionTemplateDecl"}, + {"_ZTVN5clang17ClassTemplateDeclE", "vtable for clang::ClassTemplateDecl"}, + + // {"_ZZNK5clang15DeclarationName9printNameERN4llvm11raw_ostreamEE13OperatorNames", + // "clang::DeclarationName::printName(llvm::raw_ostream&) const::OperatorNames"}, + // "clang::DeclarationName::printName(llvm::raw_ostream&)::OperatorNames const" was returned + + {"_ZTVN12_GLOBAL__N_19ARMCXXABIE", "vtable for (anonymous namespace)::ARMCXXABI"}, + {"_ZTVN12_GLOBAL__N_113ItaniumCXXABIE", "vtable for (anonymous namespace)::ItaniumCXXABI"}, + {"_ZTVN12_GLOBAL__N_120ItaniumMangleContextE", "vtable for (anonymous namespace)::ItaniumMangleContext"}, + {"_ZTVN12_GLOBAL__N_115MicrosoftCXXABIE", "vtable for (anonymous namespace)::MicrosoftCXXABI"}, + {"_ZTVN12_GLOBAL__N_122MicrosoftMangleContextE", "vtable for (anonymous namespace)::MicrosoftMangleContext"}, + {"_ZTVN12_GLOBAL__N_119RecordLayoutBuilderE", "vtable for (anonymous namespace)::RecordLayoutBuilder"}, + {"_ZTVN12_GLOBAL__N_121MSRecordLayoutBuilderE", "vtable for (anonymous namespace)::MSRecordLayoutBuilder"}, + {"_ZTVN5clang13PrinterHelperE", "vtable for clang::PrinterHelper"}, + {"_ZZN12_GLOBAL__N_111StmtPrinter24VisitCXXOperatorCallExprEPN5clang19CXXOperatorCallExprEE9OpStrings", "(anonymous namespace)::StmtPrinter::VisitCXXOperatorCallExpr(clang::CXXOperatorCallExpr*)::OpStrings"}, + {"_ZTVN5clang11PPCallbacksE", "vtable for clang::PPCallbacks"}, + + // {"_ZZ16ComputeDATE_TIMERN5clang14SourceLocationES1_RNS_12PreprocessorEE6Months", + // "ComputeDATE_TIME(clang::SourceLocation&, clang::SourceLocation&, clang::Preprocessor&)::Months"}, + // "ComputeDATE_TIME(clang::SourceLocation&, clang::SourceLocation, ComputeDATE_TIME::Preprocessor&)::Months" was returned + + {"_ZTVN5clang8PTHLexerE", "vtable for clang::PTHLexer"}, + {"_ZTVN5clang10PTHManagerE", "vtable for clang::PTHManager"}, + {"_ZTVN12_GLOBAL__N_112PTHStatCacheE", "vtable for (anonymous namespace)::PTHStatCache"}, + {"_ZTVN5clang13PragmaHandlerE", "vtable for clang::PragmaHandler"}, + {"_ZTVN5clang18EmptyPragmaHandlerE", "vtable for clang::EmptyPragmaHandler"}, + {"_ZTVN5clang15PragmaNamespaceE", "vtable for clang::PragmaNamespace"}, + {"_ZTVN12_GLOBAL__N_120PragmaCommentHandlerE", "vtable for (anonymous namespace)::PragmaCommentHandler"}, + {"_ZTVN12_GLOBAL__N_125PragmaSTDC_UnknownHandlerE", "vtable for (anonymous namespace)::PragmaSTDC_UnknownHandler"}, + {"_ZTVN12_GLOBAL__N_134PragmaSTDC_CX_LIMITED_RANGEHandlerE", "vtable for (anonymous namespace)::PragmaSTDC_CX_LIMITED_RANGEHandler"}, + {"_ZTVN12_GLOBAL__N_129PragmaSTDC_FENV_ACCESSHandlerE", "vtable for (anonymous namespace)::PragmaSTDC_FENV_ACCESSHandler"}, + {"_ZTVN12_GLOBAL__N_129PragmaSTDC_FP_CONTRACTHandlerE", "vtable for (anonymous namespace)::PragmaSTDC_FP_CONTRACTHandler"}, + {"_ZTVN12_GLOBAL__N_118PragmaDebugHandlerE", "vtable for (anonymous namespace)::PragmaDebugHandler"}, + {"_ZTVN12_GLOBAL__N_123PragmaDiagnosticHandlerE", "vtable for (anonymous namespace)::PragmaDiagnosticHandler"}, + {"_ZTVN12_GLOBAL__N_123PragmaDependencyHandlerE", "vtable for (anonymous namespace)::PragmaDependencyHandler"}, + {"_ZTVN12_GLOBAL__N_125PragmaSystemHeaderHandlerE", "vtable for (anonymous namespace)::PragmaSystemHeaderHandler"}, + {"_ZTVN12_GLOBAL__N_119PragmaPoisonHandlerE", "vtable for (anonymous namespace)::PragmaPoisonHandler"}, + {"_ZTVN12_GLOBAL__N_120PragmaMessageHandlerE", "vtable for (anonymous namespace)::PragmaMessageHandler"}, + {"_ZTVN12_GLOBAL__N_121PragmaPopMacroHandlerE", "vtable for (anonymous namespace)::PragmaPopMacroHandler"}, + {"_ZTVN12_GLOBAL__N_122PragmaPushMacroHandlerE", "vtable for (anonymous namespace)::PragmaPushMacroHandler"}, + {"_ZTVN12_GLOBAL__N_117PragmaMarkHandlerE", "vtable for (anonymous namespace)::PragmaMarkHandler"}, + {"_ZTVN12_GLOBAL__N_117PragmaOnceHandlerE", "vtable for (anonymous namespace)::PragmaOnceHandler"}, + {"_ZTVN5clang33ExternalPreprocessingRecordSourceE", "vtable for clang::ExternalPreprocessingRecordSource"}, + {"_ZTVN5clang19PreprocessingRecordE", "vtable for clang::PreprocessingRecord"}, + {"_ZTVN5clang26ExternalPreprocessorSourceE", "vtable for clang::ExternalPreprocessorSource"}, + {"_ZTVN5clang14CommentHandlerE", "vtable for clang::CommentHandler"}, + {"_ZTVN5clang21CodeCompletionHandlerE", "vtable for clang::CodeCompletionHandler"}, + {"_ZTVN5clang16DiagnosticClientE", "vtable for clang::DiagnosticClient"}, + {"_ZZN5clang13DiagnosticIDs21getCategoryNameFromIDEjE17CategoryNameTable", "clang::DiagnosticIDs::getCategoryNameFromID(unsigned int)::CategoryNameTable"}, + {"_ZTVN5clang17MemorizeStatCallsE", "vtable for clang::MemorizeStatCalls"}, + {"_ZTVN5clang18IdentifierIteratorE", "vtable for clang::IdentifierIterator"}, + {"_ZTVN5clang20IdentifierInfoLookupE", "vtable for clang::IdentifierInfoLookup"}, + {"_ZTVN5clang24ExternalIdentifierLookupE", "vtable for clang::ExternalIdentifierLookup"}, + {"_ZTVN12_GLOBAL__N_119EmptyLookupIteratorE", "vtable for (anonymous namespace)::EmptyLookupIterator"}, + {"_ZTVN5clang19PrettyStackTraceLocE", "vtable for clang::PrettyStackTraceLoc"}, + {"_ZTVN5clang23ExternalSLocEntrySourceE", "vtable for clang::ExternalSLocEntrySource"}, + {"_ZTVN5clang10TargetInfoE", "vtable for clang::TargetInfo"}, + {"_ZTVN12_GLOBAL__N_116X86_64TargetInfoE", "vtable for (anonymous namespace)::X86_64TargetInfo"}, + {"_ZTVN12_GLOBAL__N_113X86TargetInfoE", "vtable for (anonymous namespace)::X86TargetInfo"}, + {"_ZTVN12_GLOBAL__N_135VisualStudioWindowsX86_64TargetInfoE", "vtable for (anonymous namespace)::VisualStudioWindowsX86_64TargetInfo"}, + {"_ZTVN12_GLOBAL__N_121MinGWX86_64TargetInfoE", "vtable for (anonymous namespace)::MinGWX86_64TargetInfo"}, + {"_ZTVN12_GLOBAL__N_117SolarisTargetInfoINS_16X86_64TargetInfoEEE", "vtable for (anonymous namespace)::SolarisTargetInfo<(anonymous namespace)::X86_64TargetInfo>"}, + {"_ZTVN12_GLOBAL__N_117FreeBSDTargetInfoINS_16X86_64TargetInfoEEE", "vtable for (anonymous namespace)::FreeBSDTargetInfo<(anonymous namespace)::X86_64TargetInfo>"}, + {"_ZTVN12_GLOBAL__N_123OpenBSDX86_64TargetInfoE", "vtable for (anonymous namespace)::OpenBSDX86_64TargetInfo"}, + {"_ZTVN12_GLOBAL__N_116NetBSDTargetInfoINS_16X86_64TargetInfoEEE", "vtable for (anonymous namespace)::NetBSDTargetInfo<(anonymous namespace)::X86_64TargetInfo>"}, + {"_ZTVN12_GLOBAL__N_122DragonFlyBSDTargetInfoINS_16X86_64TargetInfoEEE", "vtable for (anonymous namespace)::DragonFlyBSDTargetInfo<(anonymous namespace)::X86_64TargetInfo>"}, + {"_ZTVN12_GLOBAL__N_115LinuxTargetInfoINS_16X86_64TargetInfoEEE", "vtable for (anonymous namespace)::LinuxTargetInfo<(anonymous namespace)::X86_64TargetInfo>"}, + {"_ZTVN12_GLOBAL__N_122DarwinX86_64TargetInfoE", "vtable for (anonymous namespace)::DarwinX86_64TargetInfo"}, + {"_ZTVN12_GLOBAL__N_116DarwinTargetInfoINS_16X86_64TargetInfoEEE", "vtable for (anonymous namespace)::DarwinTargetInfo<(anonymous namespace)::X86_64TargetInfo>"}, + {"_ZTVN12_GLOBAL__N_118AuroraUXTargetInfoINS_16X86_64TargetInfoEEE", "vtable for (anonymous namespace)::AuroraUXTargetInfo<(anonymous namespace)::X86_64TargetInfo>"}, + {"_ZTVN12_GLOBAL__N_116X86_32TargetInfoE", "vtable for (anonymous namespace)::X86_32TargetInfo"}, + {"_ZTVN12_GLOBAL__N_121HaikuX86_32TargetInfoE", "vtable for (anonymous namespace)::HaikuX86_32TargetInfo"}, + {"_ZTVN12_GLOBAL__N_135VisualStudioWindowsX86_32TargetInfoE", "vtable for (anonymous namespace)::VisualStudioWindowsX86_32TargetInfo"}, + {"_ZTVN12_GLOBAL__N_121MinGWX86_32TargetInfoE", "vtable for (anonymous namespace)::MinGWX86_32TargetInfo"}, + {"_ZTVN12_GLOBAL__N_122CygwinX86_32TargetInfoE", "vtable for (anonymous namespace)::CygwinX86_32TargetInfo"}, + {"_ZTVN12_GLOBAL__N_117SolarisTargetInfoINS_16X86_32TargetInfoEEE", "vtable for (anonymous namespace)::SolarisTargetInfo<(anonymous namespace)::X86_32TargetInfo>"}, + {"_ZTVN12_GLOBAL__N_115MinixTargetInfoINS_16X86_32TargetInfoEEE", "vtable for (anonymous namespace)::MinixTargetInfo<(anonymous namespace)::X86_32TargetInfo>"}, + {"_ZTVN12_GLOBAL__N_117FreeBSDTargetInfoINS_16X86_32TargetInfoEEE", "vtable for (anonymous namespace)::FreeBSDTargetInfo<(anonymous namespace)::X86_32TargetInfo>"}, + {"_ZTVN12_GLOBAL__N_121OpenBSDI386TargetInfoE", "vtable for (anonymous namespace)::OpenBSDI386TargetInfo"}, + {"_ZTVN12_GLOBAL__N_116NetBSDTargetInfoINS_16X86_32TargetInfoEEE", "vtable for (anonymous namespace)::NetBSDTargetInfo<(anonymous namespace)::X86_32TargetInfo>"}, + {"_ZTVN12_GLOBAL__N_122DragonFlyBSDTargetInfoINS_16X86_32TargetInfoEEE", "vtable for (anonymous namespace)::DragonFlyBSDTargetInfo<(anonymous namespace)::X86_32TargetInfo>"}, + {"_ZTVN12_GLOBAL__N_115LinuxTargetInfoINS_16X86_32TargetInfoEEE", "vtable for (anonymous namespace)::LinuxTargetInfo<(anonymous namespace)::X86_32TargetInfo>"}, + {"_ZTVN12_GLOBAL__N_120DarwinI386TargetInfoE", "vtable for (anonymous namespace)::DarwinI386TargetInfo"}, + {"_ZTVN12_GLOBAL__N_116DarwinTargetInfoINS_16X86_32TargetInfoEEE", "vtable for (anonymous namespace)::DarwinTargetInfo<(anonymous namespace)::X86_32TargetInfo>"}, + {"_ZTVN12_GLOBAL__N_118AuroraUXTargetInfoINS_16X86_32TargetInfoEEE", "vtable for (anonymous namespace)::AuroraUXTargetInfo<(anonymous namespace)::X86_32TargetInfo>"}, + {"_ZTVN12_GLOBAL__N_113TCETargetInfoE", "vtable for (anonymous namespace)::TCETargetInfo"}, + {"_ZTVN12_GLOBAL__N_117SystemZTargetInfoE", "vtable for (anonymous namespace)::SystemZTargetInfo"}, + {"_ZN12_GLOBAL__N_117SystemZTargetInfo11GCCRegNamesE", "(anonymous namespace)::SystemZTargetInfo::GCCRegNames"}, + {"_ZTVN12_GLOBAL__N_116PS3SPUTargetInfoINS_15PPC64TargetInfoEEE", "vtable for (anonymous namespace)::PS3SPUTargetInfo<(anonymous namespace)::PPC64TargetInfo>"}, + {"_ZN12_GLOBAL__N_113PPCTargetInfo11GCCRegNamesE", "(anonymous namespace)::PPCTargetInfo::GCCRegNames"}, + {"_ZTVN12_GLOBAL__N_115PPC64TargetInfoE", "vtable for (anonymous namespace)::PPC64TargetInfo"}, + {"_ZTVN12_GLOBAL__N_113PPCTargetInfoE", "vtable for (anonymous namespace)::PPCTargetInfo"}, + {"_ZTVN12_GLOBAL__N_117SparcV8TargetInfoE", "vtable for (anonymous namespace)::SparcV8TargetInfo"}, + {"_ZN12_GLOBAL__N_117SparcV8TargetInfo11GCCRegNamesE", "(anonymous namespace)::SparcV8TargetInfo::GCCRegNames"}, + {"_ZTVN12_GLOBAL__N_124SolarisSparcV8TargetInfoE", "vtable for (anonymous namespace)::SolarisSparcV8TargetInfo"}, + {"_ZTVN12_GLOBAL__N_125AuroraUXSparcV8TargetInfoE", "vtable for (anonymous namespace)::AuroraUXSparcV8TargetInfo"}, + {"_ZTVN12_GLOBAL__N_116MBlazeTargetInfoE", "vtable for (anonymous namespace)::MBlazeTargetInfo"}, + {"_ZN12_GLOBAL__N_116MBlazeTargetInfo11GCCRegNamesE", "(anonymous namespace)::MBlazeTargetInfo::GCCRegNames"}, + {"_ZTVN12_GLOBAL__N_117FreeBSDTargetInfoINS_15PPC64TargetInfoEEE", "vtable for (anonymous namespace)::FreeBSDTargetInfo<(anonymous namespace)::PPC64TargetInfo>"}, + {"_ZTVN12_GLOBAL__N_116PS3PPUTargetInfoINS_15PPC64TargetInfoEEE", "vtable for (anonymous namespace)::PS3PPUTargetInfo<(anonymous namespace)::PPC64TargetInfo>"}, + {"_ZTVN12_GLOBAL__N_121DarwinPPC64TargetInfoE", "vtable for (anonymous namespace)::DarwinPPC64TargetInfo"}, + {"_ZTVN12_GLOBAL__N_116DarwinTargetInfoINS_15PPC64TargetInfoEEE", "vtable for (anonymous namespace)::DarwinTargetInfo<(anonymous namespace)::PPC64TargetInfo>"}, + {"_ZTVN12_GLOBAL__N_115PPC32TargetInfoE", "vtable for (anonymous namespace)::PPC32TargetInfo"}, + {"_ZTVN12_GLOBAL__N_117FreeBSDTargetInfoINS_15PPC32TargetInfoEEE", "vtable for (anonymous namespace)::FreeBSDTargetInfo<(anonymous namespace)::PPC32TargetInfo>"}, + {"_ZTVN12_GLOBAL__N_121DarwinPPC32TargetInfoE", "vtable for (anonymous namespace)::DarwinPPC32TargetInfo"}, + {"_ZTVN12_GLOBAL__N_116DarwinTargetInfoINS_15PPC32TargetInfoEEE", "vtable for (anonymous namespace)::DarwinTargetInfo<(anonymous namespace)::PPC32TargetInfo>"}, + {"_ZTVN12_GLOBAL__N_116MipselTargetInfoE", "vtable for (anonymous namespace)::MipselTargetInfo"}, + {"_ZN12_GLOBAL__N_114MipsTargetInfo11GCCRegNamesE", "(anonymous namespace)::MipsTargetInfo::GCCRegNames"}, + {"_ZTVN12_GLOBAL__N_114MipsTargetInfoE", "vtable for (anonymous namespace)::MipsTargetInfo"}, + {"_ZTVN12_GLOBAL__N_115LinuxTargetInfoINS_16MipselTargetInfoEEE", "vtable for (anonymous namespace)::LinuxTargetInfo<(anonymous namespace)::MipselTargetInfo>"}, + {"_ZTVN12_GLOBAL__N_113PSPTargetInfoINS_16MipselTargetInfoEEE", "vtable for (anonymous namespace)::PSPTargetInfo<(anonymous namespace)::MipselTargetInfo>"}, + {"_ZTVN12_GLOBAL__N_115LinuxTargetInfoINS_14MipsTargetInfoEEE", "vtable for (anonymous namespace)::LinuxTargetInfo<(anonymous namespace)::MipsTargetInfo>"}, + {"_ZTVN12_GLOBAL__N_113PSPTargetInfoINS_14MipsTargetInfoEEE", "vtable for (anonymous namespace)::PSPTargetInfo<(anonymous namespace)::MipsTargetInfo>"}, + {"_ZTVN12_GLOBAL__N_116MSP430TargetInfoE", "vtable for (anonymous namespace)::MSP430TargetInfo"}, + {"_ZN12_GLOBAL__N_116MSP430TargetInfo11GCCRegNamesE", "(anonymous namespace)::MSP430TargetInfo::GCCRegNames"}, + {"_ZTVN12_GLOBAL__N_118BlackfinTargetInfoE", "vtable for (anonymous namespace)::BlackfinTargetInfo"}, + {"_ZN12_GLOBAL__N_118BlackfinTargetInfo11GCCRegNamesE", "(anonymous namespace)::BlackfinTargetInfo::GCCRegNames"}, + {"_ZTVN12_GLOBAL__N_113ARMTargetInfoE", "vtable for (anonymous namespace)::ARMTargetInfo"}, + {"_ZN12_GLOBAL__N_113ARMTargetInfo11GCCRegNamesE", "(anonymous namespace)::ARMTargetInfo::GCCRegNames"}, + {"_ZTVN12_GLOBAL__N_117FreeBSDTargetInfoINS_13ARMTargetInfoEEE", "vtable for (anonymous namespace)::FreeBSDTargetInfo<(anonymous namespace)::ARMTargetInfo>"}, + {"_ZTVN12_GLOBAL__N_119DarwinARMTargetInfoE", "vtable for (anonymous namespace)::DarwinARMTargetInfo"}, + {"_ZTVN12_GLOBAL__N_116DarwinTargetInfoINS_13ARMTargetInfoEEE", "vtable for (anonymous namespace)::DarwinTargetInfo<(anonymous namespace)::ARMTargetInfo>"}, + {"_ZTVN12_GLOBAL__N_115LinuxTargetInfoINS_13ARMTargetInfoEEE", "vtable for (anonymous namespace)::LinuxTargetInfo<(anonymous namespace)::ARMTargetInfo>"}, + {"_ZTVN12_GLOBAL__N_112ArgPromotionE", "vtable for (anonymous namespace)::ArgPromotion"}, + {"_ZTVN12_GLOBAL__N_113ConstantMergeE", "vtable for (anonymous namespace)::ConstantMerge"}, + {"_ZTVN12_GLOBAL__N_13DAHE", "vtable for (anonymous namespace)::DAH"}, + {"_ZTVN12_GLOBAL__N_13DAEE", "vtable for (anonymous namespace)::DAE"}, + {"_ZTVN12_GLOBAL__N_13DTEE", "vtable for (anonymous namespace)::DTE"}, + {"_ZTVN12_GLOBAL__N_113FunctionAttrsE", "vtable for (anonymous namespace)::FunctionAttrs"}, + {"_ZTVN12_GLOBAL__N_19GlobalDCEE", "vtable for (anonymous namespace)::GlobalDCE"}, + {"_ZTVN12_GLOBAL__N_19GlobalOptE", "vtable for (anonymous namespace)::GlobalOpt"}, + {"_ZTVN12_GLOBAL__N_113AlwaysInlinerE", "vtable for (anonymous namespace)::AlwaysInliner"}, + {"_ZTVN12_GLOBAL__N_113SimpleInlinerE", "vtable for (anonymous namespace)::SimpleInliner"}, + {"_ZTVN4llvm7InlinerE", "vtable for llvm::Inliner"}, + {"_ZTVN12_GLOBAL__N_17PruneEHE", "vtable for (anonymous namespace)::PruneEH"}, + {"_ZTVN12_GLOBAL__N_123StripDeadPrototypesPassE", "vtable for (anonymous namespace)::StripDeadPrototypesPass"}, + {"_ZTVN12_GLOBAL__N_116WriteBitcodePassE", "vtable for (anonymous namespace)::WriteBitcodePass"}, + {"_ZTVN4llvm13BitcodeReaderE", "vtable for llvm::BitcodeReader"}, + {"_ZTVN4llvm12_GLOBAL__N_119ConstantPlaceHolderE", "vtable for llvm::(anonymous namespace)::ConstantPlaceHolder"}, + {"_ZTVN12_GLOBAL__N_111X86AsmLexerE", "vtable for (anonymous namespace)::X86AsmLexer"}, + {"_ZTVN12_GLOBAL__N_118X86_64ATTAsmParserE", "vtable for (anonymous namespace)::X86_64ATTAsmParser"}, + {"_ZTVN12_GLOBAL__N_110X86OperandE", "vtable for (anonymous namespace)::X86Operand"}, + {"_ZTVN12_GLOBAL__N_115X86ATTAsmParserE", "vtable for (anonymous namespace)::X86ATTAsmParser"}, + {"_ZTVN12_GLOBAL__N_118X86_32ATTAsmParserE", "vtable for (anonymous namespace)::X86_32ATTAsmParser"}, + {"_ZTVN12_GLOBAL__N_116SSEDomainFixPassE", "vtable for (anonymous namespace)::SSEDomainFixPass"}, + {"_ZTVN12_GLOBAL__N_119ELFX86_64AsmBackendE", "vtable for (anonymous namespace)::ELFX86_64AsmBackend"}, + + // {"_ZZNK12_GLOBAL__N_113X86AsmBackend16getFixupKindInfoEN4llvm11MCFixupKindEE5Infos", + // "(anonymous namespace)::X86AsmBackend::getFixupKindInfo(llvm::MCFixupKind) const::Infos"}, + // "(anonymous namespace)::X86AsmBackend::getFixupKindInfo(llvm::MCFixupKind)::Infos const" was returned + + {"_ZTVN12_GLOBAL__N_118X86ELFObjectWriterE", "vtable for (anonymous namespace)::X86ELFObjectWriter"}, + {"_ZTVN12_GLOBAL__N_113X86AsmBackendE", "vtable for (anonymous namespace)::X86AsmBackend"}, + {"_ZTVN12_GLOBAL__N_122DarwinX86_64AsmBackendE", "vtable for (anonymous namespace)::DarwinX86_64AsmBackend"}, + {"_ZTVN12_GLOBAL__N_119ELFX86_32AsmBackendE", "vtable for (anonymous namespace)::ELFX86_32AsmBackend"}, + {"_ZTVN12_GLOBAL__N_120WindowsX86AsmBackendE", "vtable for (anonymous namespace)::WindowsX86AsmBackend"}, + {"_ZTVN12_GLOBAL__N_122DarwinX86_32AsmBackendE", "vtable for (anonymous namespace)::DarwinX86_32AsmBackend"}, + {"_ZTVN4llvm13X86AsmPrinterE", "vtable for llvm::X86AsmPrinter"}, + {"_ZTVN4llvm24X86COFFMachineModuleInfoE", "vtable for llvm::X86COFFMachineModuleInfo"}, + {"_ZTVN12_GLOBAL__N_17EmitterIN4llvm14JITCodeEmitterEEE", "vtable for (anonymous namespace)::Emitter"}, + {"_ZTVN4llvm16X86ELFWriterInfoE", "vtable for llvm::X86ELFWriterInfo"}, + {"_ZTVN12_GLOBAL__N_111X86FastISelE", "vtable for (anonymous namespace)::X86FastISel"}, + {"_ZTVN12_GLOBAL__N_13FPSE", "vtable for (anonymous namespace)::FPS"}, + {"_ZTVN4llvm16X86FrameLoweringE", "vtable for llvm::X86FrameLowering"}, + {"_ZTVN12_GLOBAL__N_115X86DAGToDAGISelE", "vtable for (anonymous namespace)::X86DAGToDAGISel"}, + {"_ZTVN4llvm17X86TargetLoweringE", "vtable for llvm::X86TargetLowering"}, + {"_ZTVN4llvm12X86InstrInfoE", "vtable for llvm::X86InstrInfo"}, + {"_ZTVN12_GLOBAL__N_14CGBRE", "vtable for (anonymous namespace)::CGBR"}, + {"_ZTVN4llvm10X86JITInfoE", "vtable for llvm::X86JITInfo"}, + {"_ZTVN4llvm15X86ELFMCAsmInfoE", "vtable for llvm::X86ELFMCAsmInfo"}, + {"_ZTVN12_GLOBAL__N_116X86MCCodeEmitterE", "vtable for (anonymous namespace)::X86MCCodeEmitter"}, + {"_ZTVN12_GLOBAL__N_119X86MachObjectWriterE", "vtable for (anonymous namespace)::X86MachObjectWriter"}, + {"_ZTVN4llvm15X86RegisterInfoE", "vtable for llvm::X86RegisterInfo"}, + {"_ZTVN4llvm3X868CCRClassE", "vtable for llvm::X86::CCRClass"}, + {"_ZTVN4llvm3X869FR32ClassE", "vtable for llvm::X86::FR32Class"}, + {"_ZTVN4llvm3X869FR64ClassE", "vtable for llvm::X86::FR64Class"}, + {"_ZTVN4llvm3X869GR16ClassE", "vtable for llvm::X86::GR16Class"}, + {"_ZTVN4llvm3X8615GR16_NOREXClassE", "vtable for llvm::X86::GR16_NOREXClass"}, + {"_ZTVN4llvm3X869GR32ClassE", "vtable for llvm::X86::GR32Class"}, + {"_ZTVN4llvm3X8615GR32_NOREXClassE", "vtable for llvm::X86::GR32_NOREXClass"}, + {"_ZTVN4llvm3X8614GR32_NOSPClassE", "vtable for llvm::X86::GR32_NOSPClass"}, + {"_ZTVN4llvm3X869GR64ClassE", "vtable for llvm::X86::GR64Class"}, + {"_ZTVN4llvm3X8615GR64_NOREXClassE", "vtable for llvm::X86::GR64_NOREXClass"}, + {"_ZTVN4llvm3X8620GR64_NOREX_NOSPClassE", "vtable for llvm::X86::GR64_NOREX_NOSPClass"}, + {"_ZTVN4llvm3X8614GR64_NOSPClassE", "vtable for llvm::X86::GR64_NOSPClass"}, + {"_ZTVN4llvm3X868GR8ClassE", "vtable for llvm::X86::GR8Class"}, + {"_ZTVN4llvm3X8614GR8_NOREXClassE", "vtable for llvm::X86::GR8_NOREXClass"}, + {"_ZTVN4llvm3X868RSTClassE", "vtable for llvm::X86::RSTClass"}, + {"_ZTVN4llvm3X8610VR128ClassE", "vtable for llvm::X86::VR128Class"}, + {"_ZTVN4llvm3X8610VR256ClassE", "vtable for llvm::X86::VR256Class"}, + {"_ZTVN4llvm18X86GenRegisterInfoE", "vtable for llvm::X86GenRegisterInfo"}, + {"_ZTVN12_GLOBAL__N_14MSAHE", "vtable for (anonymous namespace)::MSAH"}, + {"_ZTVN4llvm19X86SelectionDAGInfoE", "vtable for llvm::X86SelectionDAGInfo"}, + {"_ZTVN4llvm12X86SubtargetE", "vtable for llvm::X86Subtarget"}, + {"_ZTVN4llvm16X86TargetMachineE", "vtable for llvm::X86TargetMachine"}, + {"_ZTVN4llvm25X8632_ELFTargetObjectFileE", "vtable for llvm::X8632_ELFTargetObjectFile"}, + {"_ZTVN4llvm25X8664_ELFTargetObjectFileE", "vtable for llvm::X8664_ELFTargetObjectFile"}, + {"_ZTVN4llvm27X8664_MachoTargetObjectFileE", "vtable for llvm::X8664_MachoTargetObjectFile"}, + {"_ZTVN4llvm17X86ATTInstPrinterE", "vtable for llvm::X86ATTInstPrinter"}, + {"_ZTVN4llvm19X86IntelInstPrinterE", "vtable for llvm::X86IntelInstPrinter"}, + {"_ZTVN12_GLOBAL__N_113ThumbAsmLexerE", "vtable for (anonymous namespace)::ThumbAsmLexer"}, + {"_ZTVN12_GLOBAL__N_115ARMBaseAsmLexerE", "vtable for (anonymous namespace)::ARMBaseAsmLexer"}, + {"_ZTVN12_GLOBAL__N_111ARMAsmLexerE", "vtable for (anonymous namespace)::ARMAsmLexer"}, + {"_ZTVN12_GLOBAL__N_112ARMAsmParserE", "vtable for (anonymous namespace)::ARMAsmParser"}, + {"_ZTVN12_GLOBAL__N_110ARMOperandE", "vtable for (anonymous namespace)::ARMOperand"}, + {"_ZTVN12_GLOBAL__N_116ELFARMAsmBackendE", "vtable for (anonymous namespace)::ELFARMAsmBackend"}, + + // {"_ZZNK12_GLOBAL__N_113ARMAsmBackend16getFixupKindInfoEN4llvm11MCFixupKindEE5Infos", + // "(anonymous namespace)::ARMAsmBackend::getFixupKindInfo(llvm::MCFixupKind) const::Infos"}, + // "(anonymous namespace)::ARMAsmBackend::getFixupKindInfo(llvm::MCFixupKind)::Infos const" was returned + + {"_ZTVN12_GLOBAL__N_118ARMELFObjectWriterE", "vtable for (anonymous namespace)::ARMELFObjectWriter"}, + {"_ZTVN12_GLOBAL__N_113ARMAsmBackendE", "vtable for (anonymous namespace)::ARMAsmBackend"}, + {"_ZTVN12_GLOBAL__N_119DarwinARMAsmBackendE", "vtable for (anonymous namespace)::DarwinARMAsmBackend"}, + {"_ZTVN12_GLOBAL__N_119ARMMachObjectWriterE", "vtable for (anonymous namespace)::ARMMachObjectWriter"}, + {"_ZTVN4llvm13ARMAsmPrinterE", "vtable for llvm::ARMAsmPrinter"}, + {"_ZTVN12_GLOBAL__N_122ObjectAttributeEmitterE", "vtable for (anonymous namespace)::ObjectAttributeEmitter"}, + {"_ZTVN12_GLOBAL__N_116AttributeEmitterE", "vtable for (anonymous namespace)::AttributeEmitter"}, + {"_ZTVN12_GLOBAL__N_119AsmAttributeEmitterE", "vtable for (anonymous namespace)::AsmAttributeEmitter"}, + {"_ZTVN4llvm16ARMBaseInstrInfoE", "vtable for llvm::ARMBaseInstrInfo"}, + {"_ZTVN4llvm19ARMBaseRegisterInfoE", "vtable for llvm::ARMBaseRegisterInfo"}, + {"_ZTVN4llvm3ARM8DPRClassE", "vtable for llvm::ARM::DPRClass"}, + {"_ZTVN4llvm3ARM8GPRClassE", "vtable for llvm::ARM::GPRClass"}, + {"_ZTVN4llvm3ARM8QPRClassE", "vtable for llvm::ARM::QPRClass"}, + {"_ZTVN4llvm3ARM9QQPRClassE", "vtable for llvm::ARM::QQPRClass"}, + {"_ZTVN4llvm3ARM11QQQQPRClassE", "vtable for llvm::ARM::QQQQPRClass"}, + {"_ZTVN4llvm3ARM9rGPRClassE", "vtable for llvm::ARM::rGPRClass"}, + {"_ZTVN4llvm3ARM10tcGPRClassE", "vtable for llvm::ARM::tcGPRClass"}, + {"_ZTVN4llvm18ARMGenRegisterInfoE", "vtable for llvm::ARMGenRegisterInfo"}, + {"_ZTVN12_GLOBAL__N_114ARMCodeEmitterE", "vtable for (anonymous namespace)::ARMCodeEmitter"}, + {"_ZTVN12_GLOBAL__N_118ARMConstantIslandsE", "vtable for (anonymous namespace)::ARMConstantIslands"}, + {"_ZTVN4llvm20ARMConstantPoolValueE", "vtable for llvm::ARMConstantPoolValue"}, + {"_ZTVN4llvm16ARMELFWriterInfoE", "vtable for llvm::ARMELFWriterInfo"}, + {"_ZTVN12_GLOBAL__N_115ARMExpandPseudoE", "vtable for (anonymous namespace)::ARMExpandPseudo"}, + {"_ZTVN12_GLOBAL__N_111ARMFastISelE", "vtable for (anonymous namespace)::ARMFastISel"}, + {"_ZTVN4llvm16ARMFrameLoweringE", "vtable for llvm::ARMFrameLowering"}, + {"_ZTVN12_GLOBAL__N_114ARMGlobalMergeE", "vtable for (anonymous namespace)::ARMGlobalMerge"}, + {"_ZTVN4llvm19ARMHazardRecognizerE", "vtable for llvm::ARMHazardRecognizer"}, + {"_ZTVN12_GLOBAL__N_115ARMDAGToDAGISelE", "vtable for (anonymous namespace)::ARMDAGToDAGISel"}, + {"_ZTVN4llvm17ARMTargetLoweringE", "vtable for llvm::ARMTargetLowering"}, + {"_ZTVN4llvm12ARMInstrInfoE", "vtable for llvm::ARMInstrInfo"}, + {"_ZTVN4llvm10ARMJITInfoE", "vtable for llvm::ARMJITInfo"}, + {"_ZTVN12_GLOBAL__N_115ARMLoadStoreOptE", "vtable for (anonymous namespace)::ARMLoadStoreOpt"}, + {"_ZTVN12_GLOBAL__N_123ARMPreAllocLoadStoreOptE", "vtable for (anonymous namespace)::ARMPreAllocLoadStoreOpt"}, + {"_ZTVN12_GLOBAL__N_116ARMMCCodeEmitterE", "vtable for (anonymous namespace)::ARMMCCodeEmitter"}, + {"_ZTVN4llvm9ARMMCExprE", "vtable for llvm::ARMMCExpr"}, + {"_ZTVN4llvm19ARMSelectionDAGInfoE", "vtable for llvm::ARMSelectionDAGInfo"}, + {"_ZTVN4llvm12ARMSubtargetE", "vtable for llvm::ARMSubtarget"}, + {"_ZTVN4llvm20ARMBaseTargetMachineE", "vtable for llvm::ARMBaseTargetMachine"}, + {"_ZTVN4llvm22ARMElfTargetObjectFileE", "vtable for llvm::ARMElfTargetObjectFile"}, + {"_ZTVN12_GLOBAL__N_112MLxExpansionE", "vtable for (anonymous namespace)::MLxExpansion"}, + {"_ZTVN12_GLOBAL__N_115NEONMoveFixPassE", "vtable for (anonymous namespace)::NEONMoveFixPass"}, + {"_ZTVN4llvm19Thumb1FrameLoweringE", "vtable for llvm::Thumb1FrameLowering"}, + {"_ZTVN4llvm15Thumb1InstrInfoE", "vtable for llvm::Thumb1InstrInfo"}, + {"_ZTVN4llvm18Thumb1RegisterInfoE", "vtable for llvm::Thumb1RegisterInfo"}, + {"_ZTVN12_GLOBAL__N_117Thumb2ITBlockPassE", "vtable for (anonymous namespace)::Thumb2ITBlockPass"}, + {"_ZTVN4llvm15Thumb2InstrInfoE", "vtable for llvm::Thumb2InstrInfo"}, + {"_ZTVN4llvm18Thumb2RegisterInfoE", "vtable for llvm::Thumb2RegisterInfo"}, + {"_ZTVN12_GLOBAL__N_116Thumb2SizeReduceE", "vtable for (anonymous namespace)::Thumb2SizeReduce"}, + {"_ZTVN12_GLOBAL__N_115WorkListRemoverE", "vtable for (anonymous namespace)::WorkListRemover"}, + {"_ZTVN4llvm8FastISelE", "vtable for llvm::FastISel"}, + {"_ZTVN12_GLOBAL__N_118NodeUpdateListenerE", "vtable for (anonymous namespace)::NodeUpdateListener"}, + {"_ZTVN12_GLOBAL__N_115ScheduleDAGListE", "vtable for (anonymous namespace)::ScheduleDAGList"}, + {"_ZTVN12_GLOBAL__N_125RegReductionPriorityQueueINS_14ilp_ls_rr_sortEEE", "vtable for (anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::ilp_ls_rr_sort>"}, + {"_ZTVN12_GLOBAL__N_118RegReductionPQBaseE", "vtable for (anonymous namespace)::RegReductionPQBase"}, + {"_ZTVN12_GLOBAL__N_125RegReductionPriorityQueueINS_17hybrid_ls_rr_sortEEE", "vtable for (anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::hybrid_ls_rr_sort>"}, + {"_ZTVN12_GLOBAL__N_125RegReductionPriorityQueueINS_14src_ls_rr_sortEEE", "vtable for (anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::src_ls_rr_sort>"}, + {"_ZTVN12_GLOBAL__N_125RegReductionPriorityQueueINS_13td_ls_rr_sortEEE", "vtable for (anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::td_ls_rr_sort>"}, + {"_ZTVN12_GLOBAL__N_125RegReductionPriorityQueueINS_13bu_ls_rr_sortEEE", "vtable for (anonymous namespace)::RegReductionPriorityQueue<(anonymous namespace)::bu_ls_rr_sort>"}, + {"_ZTVN12_GLOBAL__N_117ScheduleDAGRRListE", "vtable for (anonymous namespace)::ScheduleDAGRRList"}, + {"_ZTVN4llvm18ScheduleDAGSDNodesE", "vtable for llvm::ScheduleDAGSDNodes"}, + {"_ZTVN4llvm12SelectionDAG17DAGUpdateListenerE", "vtable for llvm::SelectionDAG::DAGUpdateListener"}, + {"_ZTVN12_GLOBAL__N_118RAUWUpdateListenerE", "vtable for (anonymous namespace)::RAUWUpdateListener"}, + {"_ZTVN4llvm16SelectionDAGISelE", "vtable for llvm::SelectionDAGISel"}, + {"_ZZ19FunctionCallsSetJmpPKN4llvm8FunctionEE15ReturnsTwiceFns", "FunctionCallsSetJmp(llvm::Function const*)::ReturnsTwiceFns"}, + {"_ZTVN4llvm14TargetLoweringE", "vtable for llvm::TargetLowering"}, + {"_ZTVN4llvm22TargetSelectionDAGInfoE", "vtable for llvm::TargetSelectionDAGInfo"}, + {"_ZTVN4llvm10AsmPrinterE", "vtable for llvm::AsmPrinter"}, + {"_ZTVN4llvm3DIEE", "vtable for llvm::DIE"}, + {"_ZTVN4llvm10DIEIntegerE", "vtable for llvm::DIEInteger"}, + {"_ZTVN4llvm9DIEStringE", "vtable for llvm::DIEString"}, + {"_ZTVN4llvm8DIELabelE", "vtable for llvm::DIELabel"}, + {"_ZTVN4llvm8DIEDeltaE", "vtable for llvm::DIEDelta"}, + {"_ZTVN4llvm8DIEEntryE", "vtable for llvm::DIEEntry"}, + {"_ZTVN4llvm8DIEBlockE", "vtable for llvm::DIEBlock"}, + {"_ZTVN4llvm17DwarfCFIExceptionE", "vtable for llvm::DwarfCFIException"}, + {"_ZTVN4llvm8DbgScopeE", "vtable for llvm::DbgScope"}, + {"_ZTVN4llvm14DwarfExceptionE", "vtable for llvm::DwarfException"}, + {"_ZTVN4llvm19DwarfTableExceptionE", "vtable for llvm::DwarfTableException"}, + {"_ZTVN4llvm8AsmLexerE", "vtable for llvm::AsmLexer"}, + {"_ZTVN12_GLOBAL__N_19AsmParserE", "vtable for (anonymous namespace)::AsmParser"}, + {"_ZTVN12_GLOBAL__N_116GenericAsmParserE", "vtable for (anonymous namespace)::GenericAsmParser"}, + {"_ZTVN12_GLOBAL__N_113COFFAsmParserE", "vtable for (anonymous namespace)::COFFAsmParser"}, + {"_ZTVN12_GLOBAL__N_115DarwinAsmParserE", "vtable for (anonymous namespace)::DarwinAsmParser"}, + {"_ZTVN12_GLOBAL__N_112ELFAsmParserE", "vtable for (anonymous namespace)::ELFAsmParser"}, + {"_ZTVN4llvm10MCAsmLexerE", "vtable for llvm::MCAsmLexer"}, + {"_ZTVN4llvm11MCAsmParserE", "vtable for llvm::MCAsmParser"}, + {"_ZTVN4llvm20MCAsmParserExtensionE", "vtable for llvm::MCAsmParserExtension"}, + {"_ZTVN4llvm15TargetAsmParserE", "vtable for llvm::TargetAsmParser"}, + {"_ZTVN4llvm24AggressiveAntiDepBreakerE", "vtable for llvm::AggressiveAntiDepBreaker"}, + {"_ZTVN12_GLOBAL__N_116BranchFolderPassE", "vtable for (anonymous namespace)::BranchFolderPass"}, + {"_ZTVN4llvm21CalculateSpillWeightsE", "vtable for llvm::CalculateSpillWeights"}, + {"_ZTVN12_GLOBAL__N_116CodePlacementOptE", "vtable for (anonymous namespace)::CodePlacementOpt"}, + {"_ZTVN4llvm22CriticalAntiDepBreakerE", "vtable for llvm::CriticalAntiDepBreaker"}, + {"_ZTVN12_GLOBAL__N_126DeadMachineInstructionElimE", "vtable for (anonymous namespace)::DeadMachineInstructionElim"}, + {"_ZTVN12_GLOBAL__N_114DwarfEHPrepareE", "vtable for (anonymous namespace)::DwarfEHPrepare"}, + {"_ZN4llvm13EdgeBundlesIDE", "llvm::EdgeBundlesID"}, + {"_ZTVN4llvm11EdgeBundlesE", "vtable for llvm::EdgeBundles"}, + {"_ZTVN12_GLOBAL__N_117ExpandISelPseudosE", "vtable for (anonymous namespace)::ExpandISelPseudos"}, + {"_ZTVN4llvm12GCModuleInfoE", "vtable for llvm::GCModuleInfo"}, + {"_ZTVN12_GLOBAL__N_17DeleterE", "vtable for (anonymous namespace)::Deleter"}, + {"_ZTVN12_GLOBAL__N_17PrinterE", "vtable for (anonymous namespace)::Printer"}, + {"_ZTVN4llvm10GCStrategyE", "vtable for llvm::GCStrategy"}, + {"_ZTVN12_GLOBAL__N_119MachineCodeAnalysisE", "vtable for (anonymous namespace)::MachineCodeAnalysis"}, + {"_ZTVN12_GLOBAL__N_115LowerIntrinsicsE", "vtable for (anonymous namespace)::LowerIntrinsics"}, + {"_ZTVN12_GLOBAL__N_111IfConverterE", "vtable for (anonymous namespace)::IfConverter"}, + {"_ZTVN12_GLOBAL__N_113InlineSpillerE", "vtable for (anonymous namespace)::InlineSpiller"}, + {"_ZTVN4llvm17LLVMTargetMachineE", "vtable for llvm::LLVMTargetMachine"}, + {"_ZTVN4llvm20LatencyPriorityQueueE", "vtable for llvm::LatencyPriorityQueue"}, + {"_ZTVN4llvm18LiveDebugVariablesE", "vtable for llvm::LiveDebugVariables"}, + {"_ZTVN4llvm13LiveIntervalsE", "vtable for llvm::LiveIntervals"}, + {"_ZN4llvm12LiveStacksIDE", "llvm::LiveStacksID"}, + {"_ZTVN4llvm10LiveStacksE", "vtable for llvm::LiveStacks"}, + {"_ZTVN4llvm13LiveVariablesE", "vtable for llvm::LiveVariables"}, + {"_ZTVN12_GLOBAL__N_118LocalStackSlotPassE", "vtable for (anonymous namespace)::LocalStackSlotPass"}, + {"_ZTVN12_GLOBAL__N_127LowerSubregsInstructionPassE", "vtable for (anonymous namespace)::LowerSubregsInstructionPass"}, + {"_ZTVN12_GLOBAL__N_110MachineCSEE", "vtable for (anonymous namespace)::MachineCSE"}, + {"_ZN4llvm19MachineDominatorsIDE", "llvm::MachineDominatorsID"}, + {"_ZTVN4llvm20MachineDominatorTreeE", "vtable for llvm::MachineDominatorTree"}, + {"_ZTVN4llvm19MachineFunctionInfoE", "vtable for llvm::MachineFunctionInfo"}, + {"_ZTVN4llvm23MachineFunctionAnalysisE", "vtable for llvm::MachineFunctionAnalysis"}, + {"_ZTVN4llvm19MachineFunctionPassE", "vtable for llvm::MachineFunctionPass"}, + {"_ZTVN12_GLOBAL__N_126MachineFunctionPrinterPassE", "vtable for (anonymous namespace)::MachineFunctionPrinterPass"}, + {"_ZTVN12_GLOBAL__N_111MachineLICME", "vtable for (anonymous namespace)::MachineLICM"}, + {"_ZN4llvm17MachineLoopInfoIDE", "llvm::MachineLoopInfoID"}, + {"_ZTVN4llvm15MachineLoopInfoE", "vtable for llvm::MachineLoopInfo"}, + {"_ZTVN4llvm21MachineModuleInfoImplE", "vtable for llvm::MachineModuleInfoImpl"}, + {"_ZTVN4llvm17MachineModuleInfoE", "vtable for llvm::MachineModuleInfo"}, + {"_ZTVN4llvm26MMIAddrLabelMapCallbackPtrE", "vtable for llvm::MMIAddrLabelMapCallbackPtr"}, + {"_ZTVN4llvm22MachineModuleInfoMachOE", "vtable for llvm::MachineModuleInfoMachO"}, + {"_ZTVN4llvm20MachineModuleInfoELFE", "vtable for llvm::MachineModuleInfoELF"}, + {"_ZTVN12_GLOBAL__N_114MachineSinkingE", "vtable for (anonymous namespace)::MachineSinking"}, + {"_ZTVN12_GLOBAL__N_119MachineVerifierPassE", "vtable for (anonymous namespace)::MachineVerifierPass"}, + {"_ZTVN12_GLOBAL__N_112OptimizePHIsE", "vtable for (anonymous namespace)::OptimizePHIs"}, + {"_ZN4llvm16PHIEliminationIDE", "llvm::PHIEliminationID"}, + {"_ZTVN12_GLOBAL__N_114PHIEliminationE", "vtable for (anonymous namespace)::PHIElimination"}, + {"_ZTVN12_GLOBAL__N_117PeepholeOptimizerE", "vtable for (anonymous namespace)::PeepholeOptimizer"}, + {"_ZTVN4llvm14AntiDepBreakerE", "vtable for llvm::AntiDepBreaker"}, + {"_ZTVN12_GLOBAL__N_115PostRASchedulerE", "vtable for (anonymous namespace)::PostRAScheduler"}, + {"_ZTVN12_GLOBAL__N_120SchedulePostRATDListE", "vtable for (anonymous namespace)::SchedulePostRATDList"}, + {"_ZN4llvm19PreAllocSplittingIDE", "llvm::PreAllocSplittingID"}, + {"_ZTVN12_GLOBAL__N_117PreAllocSplittingE", "vtable for (anonymous namespace)::PreAllocSplitting"}, + {"_ZTVN4llvm19ProcessImplicitDefsE", "vtable for llvm::ProcessImplicitDefs"}, + {"_ZTVN4llvm17PseudoSourceValueE", "vtable for llvm::PseudoSourceValue"}, + {"_ZTVN4llvm27FixedStackPseudoSourceValueE", "vtable for llvm::FixedStackPseudoSourceValue"}, + {"_ZTVN12_GLOBAL__N_16RAFastE", "vtable for (anonymous namespace)::RAFast"}, + {"_ZTVN12_GLOBAL__N_19RALinScanE", "vtable for (anonymous namespace)::RALinScan"}, + {"_ZTVN4llvm17RegisterCoalescerE", "vtable for llvm::RegisterCoalescer"}, + {"_ZTVN4llvm11ScheduleDAGE", "vtable for llvm::ScheduleDAG"}, + {"_ZTVN4llvm24ScheduleHazardRecognizerE", "vtable for llvm::ScheduleHazardRecognizer"}, + {"_ZTVN4llvm17ScheduleDAGInstrsE", "vtable for llvm::ScheduleDAGInstrs"}, + {"_ZTVN4llvm26ScoreboardHazardRecognizerE", "vtable for llvm::ScoreboardHazardRecognizer"}, + {"_ZTVN4llvm3PEIE", "vtable for llvm::PEI"}, + {"_ZN4llvm26SimpleRegisterCoalescingIDE", "llvm::SimpleRegisterCoalescingID"}, + {"_ZTVN4llvm24SimpleRegisterCoalescingE", "vtable for llvm::SimpleRegisterCoalescing"}, + {"_ZTVN12_GLOBAL__N_110SjLjEHPassE", "vtable for (anonymous namespace)::SjLjEHPass"}, + {"_ZTVN4llvm11SlotIndexesE", "vtable for llvm::SlotIndexes"}, + {"_ZTVN12_GLOBAL__N_115StandardSpillerE", "vtable for (anonymous namespace)::StandardSpiller"}, + {"_ZTVN12_GLOBAL__N_114TrivialSpillerE", "vtable for (anonymous namespace)::TrivialSpiller"}, + {"_ZTVN12_GLOBAL__N_111SpillerBaseE", "vtable for (anonymous namespace)::SpillerBase"}, + {"_ZTVN12_GLOBAL__N_114StackProtectorE", "vtable for (anonymous namespace)::StackProtector"}, + {"_ZTVN12_GLOBAL__N_117StackSlotColoringE", "vtable for (anonymous namespace)::StackSlotColoring"}, + {"_ZN4llvm22StrongPHIEliminationIDE", "llvm::StrongPHIEliminationID"}, + {"_ZTVN12_GLOBAL__N_120StrongPHIEliminationE", "vtable for (anonymous namespace)::StrongPHIElimination"}, + {"_ZTVN12_GLOBAL__N_117TailDuplicatePassE", "vtable for (anonymous namespace)::TailDuplicatePass"}, + {"_ZTVN4llvm19TargetInstrInfoImplE", "vtable for llvm::TargetInstrInfoImpl"}, + {"_ZTVN4llvm27TargetLoweringObjectFileELFE", "vtable for llvm::TargetLoweringObjectFileELF"}, + {"_ZTVN4llvm29TargetLoweringObjectFileMachOE", "vtable for llvm::TargetLoweringObjectFileMachO"}, + {"_ZTVN4llvm28TargetLoweringObjectFileCOFFE", "vtable for llvm::TargetLoweringObjectFileCOFF"}, + {"_ZN4llvm27TwoAddressInstructionPassIDE", "llvm::TwoAddressInstructionPassID"}, + {"_ZTVN12_GLOBAL__N_125TwoAddressInstructionPassE", "vtable for (anonymous namespace)::TwoAddressInstructionPass"}, + {"_ZN4llvm29UnreachableMachineBlockElimIDE", "llvm::UnreachableMachineBlockElimID"}, + {"_ZTVN12_GLOBAL__N_127UnreachableMachineBlockElimE", "vtable for (anonymous namespace)::UnreachableMachineBlockElim"}, + {"_ZTVN12_GLOBAL__N_120UnreachableBlockElimE", "vtable for (anonymous namespace)::UnreachableBlockElim"}, + {"_ZTVN4llvm10VirtRegMapE", "vtable for llvm::VirtRegMap"}, + {"_ZTVN4llvm15VirtRegRewriterE", "vtable for llvm::VirtRegRewriter"}, + {"_ZTVN12_GLOBAL__N_115TrivialRewriterE", "vtable for (anonymous namespace)::TrivialRewriter"}, + {"_ZTVN12_GLOBAL__N_113LocalRewriterE", "vtable for (anonymous namespace)::LocalRewriter"}, + {"_ZTVN12_GLOBAL__N_14ADCEE", "vtable for (anonymous namespace)::ADCE"}, + {"_ZTVN12_GLOBAL__N_114CodeGenPrepareE", "vtable for (anonymous namespace)::CodeGenPrepare"}, + {"_ZTVN12_GLOBAL__N_131CodeGenPrepareFortifiedLibCallsE", "vtable for (anonymous namespace)::CodeGenPrepareFortifiedLibCalls"}, + {"_ZTVN12_GLOBAL__N_126CorrelatedValuePropagationE", "vtable for (anonymous namespace)::CorrelatedValuePropagation"}, + {"_ZTVN12_GLOBAL__N_13DSEE", "vtable for (anonymous namespace)::DSE"}, + {"_ZTVN12_GLOBAL__N_18EarlyCSEE", "vtable for (anonymous namespace)::EarlyCSE"}, + {"_ZTVN12_GLOBAL__N_111GEPSplitterE", "vtable for (anonymous namespace)::GEPSplitter"}, + {"_ZTVN12_GLOBAL__N_13GVNE", "vtable for (anonymous namespace)::GVN"}, + {"_ZTVN12_GLOBAL__N_114IndVarSimplifyE", "vtable for (anonymous namespace)::IndVarSimplify"}, + {"_ZTVN12_GLOBAL__N_113JumpThreadingE", "vtable for (anonymous namespace)::JumpThreading"}, + {"_ZTVN12_GLOBAL__N_14LICME", "vtable for (anonymous namespace)::LICM"}, + {"_ZTVN12_GLOBAL__N_112LoopPromoterE", "vtable for (anonymous namespace)::LoopPromoter"}, + {"_ZTVN12_GLOBAL__N_112LoopDeletionE", "vtable for (anonymous namespace)::LoopDeletion"}, + {"_ZTVN12_GLOBAL__N_118LoopIdiomRecognizeE", "vtable for (anonymous namespace)::LoopIdiomRecognize"}, + {"_ZTVN12_GLOBAL__N_110LoopRotateE", "vtable for (anonymous namespace)::LoopRotate"}, + {"_ZTVN12_GLOBAL__N_118LoopStrengthReduceE", "vtable for (anonymous namespace)::LoopStrengthReduce"}, + {"_ZTVN12_GLOBAL__N_110LoopUnrollE", "vtable for (anonymous namespace)::LoopUnroll"}, + {"_ZTVN12_GLOBAL__N_112LoopUnswitchE", "vtable for (anonymous namespace)::LoopUnswitch"}, + {"_ZTVN12_GLOBAL__N_19MemCpyOptE", "vtable for (anonymous namespace)::MemCpyOpt"}, + {"_ZTVN12_GLOBAL__N_111ReassociateE", "vtable for (anonymous namespace)::Reassociate"}, + {"_ZTVN12_GLOBAL__N_16IPSCCPE", "vtable for (anonymous namespace)::IPSCCP"}, + {"_ZTVN12_GLOBAL__N_14SCCPE", "vtable for (anonymous namespace)::SCCP"}, + {"_ZTVN12_GLOBAL__N_110SROA_SSAUpE", "vtable for (anonymous namespace)::SROA_SSAUp"}, + {"_ZTVN12_GLOBAL__N_114AllocaPromoterE", "vtable for (anonymous namespace)::AllocaPromoter"}, + {"_ZTVN12_GLOBAL__N_14SROAE", "vtable for (anonymous namespace)::SROA"}, + {"_ZTVN12_GLOBAL__N_17SROA_DTE", "vtable for (anonymous namespace)::SROA_DT"}, + {"_ZTVN12_GLOBAL__N_115CFGSimplifyPassE", "vtable for (anonymous namespace)::CFGSimplifyPass"}, + {"_ZTVN12_GLOBAL__N_116SimplifyLibCallsE", "vtable for (anonymous namespace)::SimplifyLibCalls"}, + {"_ZTVN12_GLOBAL__N_19StrCatOptE", "vtable for (anonymous namespace)::StrCatOpt"}, + {"_ZTVN12_GLOBAL__N_119LibCallOptimizationE", "vtable for (anonymous namespace)::LibCallOptimization"}, + {"_ZTVN12_GLOBAL__N_110StrNCatOptE", "vtable for (anonymous namespace)::StrNCatOpt"}, + {"_ZTVN12_GLOBAL__N_19StrChrOptE", "vtable for (anonymous namespace)::StrChrOpt"}, + {"_ZTVN12_GLOBAL__N_110StrRChrOptE", "vtable for (anonymous namespace)::StrRChrOpt"}, + {"_ZTVN12_GLOBAL__N_19StrCmpOptE", "vtable for (anonymous namespace)::StrCmpOpt"}, + {"_ZTVN12_GLOBAL__N_110StrNCmpOptE", "vtable for (anonymous namespace)::StrNCmpOpt"}, + {"_ZTVN12_GLOBAL__N_19StrCpyOptE", "vtable for (anonymous namespace)::StrCpyOpt"}, + {"_ZTVN12_GLOBAL__N_110StrNCpyOptE", "vtable for (anonymous namespace)::StrNCpyOpt"}, + {"_ZTVN12_GLOBAL__N_19StrLenOptE", "vtable for (anonymous namespace)::StrLenOpt"}, + {"_ZTVN12_GLOBAL__N_110StrPBrkOptE", "vtable for (anonymous namespace)::StrPBrkOpt"}, + {"_ZTVN12_GLOBAL__N_18StrToOptE", "vtable for (anonymous namespace)::StrToOpt"}, + {"_ZTVN12_GLOBAL__N_19StrSpnOptE", "vtable for (anonymous namespace)::StrSpnOpt"}, + {"_ZTVN12_GLOBAL__N_110StrCSpnOptE", "vtable for (anonymous namespace)::StrCSpnOpt"}, + {"_ZTVN12_GLOBAL__N_19StrStrOptE", "vtable for (anonymous namespace)::StrStrOpt"}, + {"_ZTVN12_GLOBAL__N_19MemCmpOptE", "vtable for (anonymous namespace)::MemCmpOpt"}, + {"_ZTVN12_GLOBAL__N_19MemCpyOptE", "vtable for (anonymous namespace)::MemCpyOpt"}, + {"_ZTVN12_GLOBAL__N_110MemMoveOptE", "vtable for (anonymous namespace)::MemMoveOpt"}, + {"_ZTVN12_GLOBAL__N_19MemSetOptE", "vtable for (anonymous namespace)::MemSetOpt"}, + {"_ZTVN12_GLOBAL__N_16PowOptE", "vtable for (anonymous namespace)::PowOpt"}, + {"_ZTVN12_GLOBAL__N_17Exp2OptE", "vtable for (anonymous namespace)::Exp2Opt"}, + {"_ZTVN12_GLOBAL__N_116UnaryDoubleFPOptE", "vtable for (anonymous namespace)::UnaryDoubleFPOpt"}, + {"_ZTVN12_GLOBAL__N_16FFSOptE", "vtable for (anonymous namespace)::FFSOpt"}, + {"_ZTVN12_GLOBAL__N_16AbsOptE", "vtable for (anonymous namespace)::AbsOpt"}, + {"_ZTVN12_GLOBAL__N_110IsDigitOptE", "vtable for (anonymous namespace)::IsDigitOpt"}, + {"_ZTVN12_GLOBAL__N_110IsAsciiOptE", "vtable for (anonymous namespace)::IsAsciiOpt"}, + {"_ZTVN12_GLOBAL__N_110ToAsciiOptE", "vtable for (anonymous namespace)::ToAsciiOpt"}, + {"_ZTVN12_GLOBAL__N_110SPrintFOptE", "vtable for (anonymous namespace)::SPrintFOpt"}, + {"_ZTVN12_GLOBAL__N_19PrintFOptE", "vtable for (anonymous namespace)::PrintFOpt"}, + {"_ZTVN12_GLOBAL__N_19FWriteOptE", "vtable for (anonymous namespace)::FWriteOpt"}, + {"_ZTVN12_GLOBAL__N_18FPutsOptE", "vtable for (anonymous namespace)::FPutsOpt"}, + {"_ZTVN12_GLOBAL__N_110FPrintFOptE", "vtable for (anonymous namespace)::FPrintFOpt"}, + {"_ZTVN12_GLOBAL__N_17PutsOptE", "vtable for (anonymous namespace)::PutsOpt"}, + {"_ZTVN12_GLOBAL__N_112TailCallElimE", "vtable for (anonymous namespace)::TailCallElim"}, + {"_ZTVN12_GLOBAL__N_128InstCombineFortifiedLibCallsE", "vtable for (anonymous namespace)::InstCombineFortifiedLibCalls"}, + {"_ZTVN4llvm12InstCombinerE", "vtable for llvm::InstCombiner"}, + {"_ZN4llvm20BreakCriticalEdgesIDE", "llvm::BreakCriticalEdgesID"}, + {"_ZTVN12_GLOBAL__N_118BreakCriticalEdgesE", "vtable for (anonymous namespace)::BreakCriticalEdges"}, + {"_ZTVN4llvm25SimplifyFortifiedLibCallsE", "vtable for llvm::SimplifyFortifiedLibCalls"}, + {"_ZN4llvm7LCSSAIDE", "llvm::LCSSAID"}, + {"_ZTVN12_GLOBAL__N_15LCSSAE", "vtable for (anonymous namespace)::LCSSA"}, + {"_ZN4llvm14LoopSimplifyIDE", "llvm::LoopSimplifyID"}, + {"_ZTVN12_GLOBAL__N_112LoopSimplifyE", "vtable for (anonymous namespace)::LoopSimplify"}, + {"_ZN4llvm17LowerInvokePassIDE", "llvm::LowerInvokePassID"}, + {"_ZTVN12_GLOBAL__N_111LowerInvokeE", "vtable for (anonymous namespace)::LowerInvoke"}, + {"_ZN4llvm13LowerSwitchIDE", "llvm::LowerSwitchID"}, + {"_ZTVN12_GLOBAL__N_111LowerSwitchE", "vtable for (anonymous namespace)::LowerSwitch"}, + {"_ZTVN4llvm22UnifyFunctionExitNodesE", "vtable for llvm::UnifyFunctionExitNodes"}, + {"_ZTVN4llvm9CallGraphE", "vtable for llvm::CallGraph"}, + {"_ZTVN12_GLOBAL__N_114BasicCallGraphE", "vtable for (anonymous namespace)::BasicCallGraph"}, + {"_ZTVN4llvm16CallGraphSCCPassE", "vtable for llvm::CallGraphSCCPass"}, + {"_ZTVN12_GLOBAL__N_118PrintCallGraphPassE", "vtable for (anonymous namespace)::PrintCallGraphPass"}, + {"_ZTVN12_GLOBAL__N_113CGPassManagerE", "vtable for (anonymous namespace)::CGPassManager"}, + {"_ZTVN4llvm13FindUsedTypesE", "vtable for llvm::FindUsedTypes"}, + {"_ZTVN4llvm13AliasAnalysisE", "vtable for llvm::AliasAnalysis"}, + {"_ZTVN4llvm15AliasSetTracker13ASTCallbackVHE", "vtable for llvm::AliasSetTracker::ASTCallbackVH"}, + {"_ZTVN12_GLOBAL__N_115AliasSetPrinterE", "vtable for (anonymous namespace)::AliasSetPrinter"}, + {"_ZTVN12_GLOBAL__N_118BasicAliasAnalysisE", "vtable for (anonymous namespace)::BasicAliasAnalysis"}, + {"_ZTVN4llvm7IVUsersE", "vtable for llvm::IVUsers"}, + {"_ZTVN4llvm11IVStrideUseE", "vtable for llvm::IVStrideUse"}, + {"_ZTVN4llvm13LazyValueInfoE", "vtable for llvm::LazyValueInfo"}, + {"_ZTVN12_GLOBAL__N_114LVIValueHandleE", "vtable for (anonymous namespace)::LVIValueHandle"}, + {"_ZTVN4llvm8LoopInfoE", "vtable for llvm::LoopInfo"}, + {"_ZTVN4llvm13LPPassManagerE", "vtable for llvm::LPPassManager"}, + {"_ZTVN4llvm8LoopPassE", "vtable for llvm::LoopPass"}, + {"_ZTVN12_GLOBAL__N_113PrintLoopPassE", "vtable for (anonymous namespace)::PrintLoopPass"}, + {"_ZTVN4llvm24MemoryDependenceAnalysisE", "vtable for llvm::MemoryDependenceAnalysis"}, + {"_ZTVN12_GLOBAL__N_14NoAAE", "vtable for (anonymous namespace)::NoAA"}, + {"_ZTVN12_GLOBAL__N_113NoProfileInfoE", "vtable for (anonymous namespace)::NoProfileInfo"}, + {"_ZTVN4llvm15ScalarEvolution14SCEVCallbackVHE", "vtable for llvm::ScalarEvolution::SCEVCallbackVH"}, + {"_ZTVN4llvm15ScalarEvolutionE", "vtable for llvm::ScalarEvolution"}, + {"_ZTVN4llvm11SCEVUnknownE", "vtable for llvm::SCEVUnknown"}, + {"_ZTVN12_GLOBAL__N_122TypeBasedAliasAnalysisE", "vtable for (anonymous namespace)::TypeBasedAliasAnalysis"}, + {"_ZTVN4llvm14TargetAsmLexerE", "vtable for llvm::TargetAsmLexer"}, + {"_ZTVN4llvm10DataLayoutE", "vtable for llvm::DataLayout"}, + {"_ZTVN12_GLOBAL__N_115StructLayoutMapE", "vtable for (anonymous namespace)::StructLayoutMap"}, + {"_ZTVN4llvm19TargetELFWriterInfoE", "vtable for llvm::TargetELFWriterInfo"}, + {"_ZTVN4llvm19TargetFrameLoweringE", "vtable for llvm::TargetFrameLowering"}, + {"_ZTVN4llvm15TargetInstrInfoE", "vtable for llvm::TargetInstrInfo"}, + {"_ZTVN4llvm24TargetLoweringObjectFileE", "vtable for llvm::TargetLoweringObjectFile"}, + {"_ZTVN4llvm13TargetMachineE", "vtable for llvm::TargetMachine"}, + {"_ZTVN4llvm18TargetRegisterInfoE", "vtable for llvm::TargetRegisterInfo"}, + {"_ZTVN4llvm15TargetSubtargetE", "vtable for llvm::TargetSubtarget"}, + {"_ZTVN4llvm24AssemblyAnnotationWriterE", "vtable for llvm::AssemblyAnnotationWriter"}, + {"_ZTVN4llvm5ValueE", "vtable for llvm::Value"}, + {"_ZTIN4llvm5ValueE", "typeinfo for llvm::Value"}, + {"_ZTVN4llvm4TypeE", "vtable for llvm::Type"}, + {"_ZTIN4llvm4TypeE", "typeinfo for llvm::Type"}, + {"_ZTIN4llvm24AssemblyAnnotationWriterE", "typeinfo for llvm::AssemblyAnnotationWriter"}, + {"_ZTVN4llvm10BasicBlockE", "vtable for llvm::BasicBlock"}, + {"_ZTIN4llvm10BasicBlockE", "typeinfo for llvm::BasicBlock"}, + {"_ZTVN4llvm10ConstantFPE", "vtable for llvm::ConstantFP"}, + {"_ZTVN4llvm13ConstantArrayE", "vtable for llvm::ConstantArray"}, + {"_ZTVN4llvm14ConstantStructE", "vtable for llvm::ConstantStruct"}, + {"_ZTVN4llvm14ConstantVectorE", "vtable for llvm::ConstantVector"}, + {"_ZTVN4llvm12BlockAddressE", "vtable for llvm::BlockAddress"}, + {"_ZTVN4llvm21ConstantAggregateZeroE", "vtable for llvm::ConstantAggregateZero"}, + {"_ZTIN4llvm21ConstantAggregateZeroE", "typeinfo for llvm::ConstantAggregateZero"}, + {"_ZTVN4llvm19ConstantPointerNullE", "vtable for llvm::ConstantPointerNull"}, + {"_ZTIN4llvm19ConstantPointerNullE", "typeinfo for llvm::ConstantPointerNull"}, + {"_ZTVN4llvm12ConstantExprE", "vtable for llvm::ConstantExpr"}, + {"_ZTIN4llvm12ConstantExprE", "typeinfo for llvm::ConstantExpr"}, + {"_ZTVN4llvm10UndefValueE", "vtable for llvm::UndefValue"}, + {"_ZTIN4llvm10UndefValueE", "typeinfo for llvm::UndefValue"}, + {"_ZTIN4llvm10ConstantFPE", "typeinfo for llvm::ConstantFP"}, + {"_ZTIN4llvm13ConstantArrayE", "typeinfo for llvm::ConstantArray"}, + {"_ZTIN4llvm14ConstantStructE", "typeinfo for llvm::ConstantStruct"}, + {"_ZTIN4llvm14ConstantVectorE", "typeinfo for llvm::ConstantVector"}, + {"_ZTIN4llvm12BlockAddressE", "typeinfo for llvm::BlockAddress"}, + {"_ZTVN4llvm10DebugRecVHE", "vtable for llvm::DebugRecVH"}, + {"_ZTIN4llvm10DebugRecVHE", "typeinfo for llvm::DebugRecVH"}, + {"_ZTVN4llvm13DominatorTreeE", "vtable for llvm::DominatorTree"}, + {"_ZTIN4llvm13DominatorTreeE", "typeinfo for llvm::DominatorTree"}, + {"_ZTVN4llvm8FunctionE", "vtable for llvm::Function"}, + {"_ZZN4llvm9Intrinsic7getNameENS0_2IDEPPKNS_4TypeEjE5Table", "llvm::Intrinsic::getName(llvm::Intrinsic::ID, llvm::Type const**, unsigned int)::Table"}, + {"_ZTIN4llvm8FunctionE", "typeinfo for llvm::Function"}, + {"_ZTVN4llvm14GVMaterializerE", "vtable for llvm::GVMaterializer"}, + {"_ZTIN4llvm14GVMaterializerE", "typeinfo for llvm::GVMaterializer"}, + {"_ZTVN4llvm14GlobalVariableE", "vtable for llvm::GlobalVariable"}, + {"_ZTVN4llvm11GlobalAliasE", "vtable for llvm::GlobalAlias"}, + {"_ZTVN4llvm11GlobalValueE", "vtable for llvm::GlobalValue"}, + {"_ZTIN4llvm11GlobalValueE", "typeinfo for llvm::GlobalValue"}, + {"_ZTIN4llvm14GlobalVariableE", "typeinfo for llvm::GlobalVariable"}, + {"_ZTIN4llvm11GlobalAliasE", "typeinfo for llvm::GlobalAlias"}, + {"_ZTVN4llvm9InlineAsmE", "vtable for llvm::InlineAsm"}, + {"_ZTIN4llvm9InlineAsmE", "typeinfo for llvm::InlineAsm"}, + {"_ZTVN4llvm11InstructionE", "vtable for llvm::Instruction"}, + {"_ZTIN4llvm11InstructionE", "typeinfo for llvm::Instruction"}, + {"_ZTVN4llvm14TerminatorInstE", "vtable for llvm::TerminatorInst"}, + {"_ZTVN4llvm16UnaryInstructionE", "vtable for llvm::UnaryInstruction"}, + {"_ZTVN4llvm7PHINodeE", "vtable for llvm::PHINode"}, + {"_ZTVN4llvm8CallInstE", "vtable for llvm::CallInst"}, + {"_ZTVN4llvm10InvokeInstE", "vtable for llvm::InvokeInst"}, + {"_ZTVN4llvm10ReturnInstE", "vtable for llvm::ReturnInst"}, + {"_ZTVN4llvm10UnwindInstE", "vtable for llvm::UnwindInst"}, + {"_ZTVN4llvm15UnreachableInstE", "vtable for llvm::UnreachableInst"}, + {"_ZTVN4llvm10BranchInstE", "vtable for llvm::BranchInst"}, + {"_ZTVN4llvm10AllocaInstE", "vtable for llvm::AllocaInst"}, + {"_ZTVN4llvm8LoadInstE", "vtable for llvm::LoadInst"}, + {"_ZTVN4llvm9StoreInstE", "vtable for llvm::StoreInst"}, + {"_ZTVN4llvm17GetElementPtrInstE", "vtable for llvm::GetElementPtrInst"}, + {"_ZTVN4llvm18ExtractElementInstE", "vtable for llvm::ExtractElementInst"}, + {"_ZTVN4llvm17InsertElementInstE", "vtable for llvm::InsertElementInst"}, + {"_ZTVN4llvm17ShuffleVectorInstE", "vtable for llvm::ShuffleVectorInst"}, + {"_ZTVN4llvm15InsertValueInstE", "vtable for llvm::InsertValueInst"}, + {"_ZTVN4llvm16ExtractValueInstE", "vtable for llvm::ExtractValueInst"}, + {"_ZTVN4llvm14BinaryOperatorE", "vtable for llvm::BinaryOperator"}, + {"_ZTVN4llvm9TruncInstE", "vtable for llvm::TruncInst"}, + {"_ZTVN4llvm8ZExtInstE", "vtable for llvm::ZExtInst"}, + {"_ZTVN4llvm8SExtInstE", "vtable for llvm::SExtInst"}, + {"_ZTVN4llvm11FPTruncInstE", "vtable for llvm::FPTruncInst"}, + {"_ZTVN4llvm9FPExtInstE", "vtable for llvm::FPExtInst"}, + {"_ZTVN4llvm10UIToFPInstE", "vtable for llvm::UIToFPInst"}, + {"_ZTVN4llvm10SIToFPInstE", "vtable for llvm::SIToFPInst"}, + {"_ZTVN4llvm10FPToUIInstE", "vtable for llvm::FPToUIInst"}, + {"_ZTVN4llvm10FPToSIInstE", "vtable for llvm::FPToSIInst"}, + {"_ZTVN4llvm12PtrToIntInstE", "vtable for llvm::PtrToIntInst"}, + {"_ZTVN4llvm12IntToPtrInstE", "vtable for llvm::IntToPtrInst"}, + {"_ZTVN4llvm11BitCastInstE", "vtable for llvm::BitCastInst"}, + {"_ZTVN4llvm7CmpInstE", "vtable for llvm::CmpInst"}, + {"_ZTVN4llvm10SwitchInstE", "vtable for llvm::SwitchInst"}, + {"_ZTVN4llvm14IndirectBrInstE", "vtable for llvm::IndirectBrInst"}, + {"_ZTIN4llvm14TerminatorInstE", "typeinfo for llvm::TerminatorInst"}, + {"_ZTIN4llvm16UnaryInstructionE", "typeinfo for llvm::UnaryInstruction"}, + {"_ZTIN4llvm17GetElementPtrInstE", "typeinfo for llvm::GetElementPtrInst"}, + {"_ZTIN4llvm7CmpInstE", "typeinfo for llvm::CmpInst"}, + {"_ZTVN4llvm8ICmpInstE", "vtable for llvm::ICmpInst"}, + {"_ZTIN4llvm8ICmpInstE", "typeinfo for llvm::ICmpInst"}, + {"_ZTVN4llvm8FCmpInstE", "vtable for llvm::FCmpInst"}, + {"_ZTIN4llvm8FCmpInstE", "typeinfo for llvm::FCmpInst"}, + {"_ZTIN4llvm8CallInstE", "typeinfo for llvm::CallInst"}, + {"_ZTVN4llvm10SelectInstE", "vtable for llvm::SelectInst"}, + {"_ZTIN4llvm10SelectInstE", "typeinfo for llvm::SelectInst"}, + {"_ZTVN4llvm9VAArgInstE", "vtable for llvm::VAArgInst"}, + {"_ZTIN4llvm9VAArgInstE", "typeinfo for llvm::VAArgInst"}, + {"_ZTIN4llvm18ExtractElementInstE", "typeinfo for llvm::ExtractElementInst"}, + {"_ZTIN4llvm17InsertElementInstE", "typeinfo for llvm::InsertElementInst"}, + {"_ZTIN4llvm16ExtractValueInstE", "typeinfo for llvm::ExtractValueInst"}, + {"_ZTIN4llvm15InsertValueInstE", "typeinfo for llvm::InsertValueInst"}, + {"_ZTIN4llvm7PHINodeE", "typeinfo for llvm::PHINode"}, + {"_ZTIN4llvm10ReturnInstE", "typeinfo for llvm::ReturnInst"}, + {"_ZTIN4llvm10BranchInstE", "typeinfo for llvm::BranchInst"}, + {"_ZTIN4llvm10SwitchInstE", "typeinfo for llvm::SwitchInst"}, + {"_ZTIN4llvm14IndirectBrInstE", "typeinfo for llvm::IndirectBrInst"}, + {"_ZTIN4llvm11BitCastInstE", "typeinfo for llvm::BitCastInst"}, + {"_ZTIN4llvm10InvokeInstE", "typeinfo for llvm::InvokeInst"}, + {"_ZTIN4llvm10UnwindInstE", "typeinfo for llvm::UnwindInst"}, + {"_ZTIN4llvm15UnreachableInstE", "typeinfo for llvm::UnreachableInst"}, + {"_ZTIN4llvm10AllocaInstE", "typeinfo for llvm::AllocaInst"}, + {"_ZTIN4llvm8LoadInstE", "typeinfo for llvm::LoadInst"}, + {"_ZTIN4llvm9StoreInstE", "typeinfo for llvm::StoreInst"}, + {"_ZTIN4llvm17ShuffleVectorInstE", "typeinfo for llvm::ShuffleVectorInst"}, + {"_ZTIN4llvm14BinaryOperatorE", "typeinfo for llvm::BinaryOperator"}, + {"_ZTIN4llvm9TruncInstE", "typeinfo for llvm::TruncInst"}, + {"_ZTIN4llvm8ZExtInstE", "typeinfo for llvm::ZExtInst"}, + {"_ZTIN4llvm8SExtInstE", "typeinfo for llvm::SExtInst"}, + {"_ZTIN4llvm11FPTruncInstE", "typeinfo for llvm::FPTruncInst"}, + {"_ZTIN4llvm9FPExtInstE", "typeinfo for llvm::FPExtInst"}, + {"_ZTIN4llvm10UIToFPInstE", "typeinfo for llvm::UIToFPInst"}, + {"_ZTIN4llvm10SIToFPInstE", "typeinfo for llvm::SIToFPInst"}, + {"_ZTIN4llvm10FPToUIInstE", "typeinfo for llvm::FPToUIInst"}, + {"_ZTIN4llvm10FPToSIInstE", "typeinfo for llvm::FPToSIInst"}, + {"_ZTIN4llvm12PtrToIntInstE", "typeinfo for llvm::PtrToIntInst"}, + {"_ZTIN4llvm12IntToPtrInstE", "typeinfo for llvm::IntToPtrInst"}, + {"_ZTVN4llvm6MDNodeE", "vtable for llvm::MDNode"}, + {"_ZTVN4llvm13MDNodeOperandE", "vtable for llvm::MDNodeOperand"}, + {"_ZTIN4llvm13MDNodeOperandE", "typeinfo for llvm::MDNodeOperand"}, + {"_ZTIN4llvm6MDNodeE", "typeinfo for llvm::MDNode"}, + {"_ZTVN4llvm4PassE", "vtable for llvm::Pass"}, + {"_ZTVN4llvm10ModulePassE", "vtable for llvm::ModulePass"}, + {"_ZTVN4llvm13ImmutablePassE", "vtable for llvm::ImmutablePass"}, + {"_ZTVN4llvm24PassRegistrationListenerE", "vtable for llvm::PassRegistrationListener"}, + {"_ZTVN4llvm14PassNameParserE", "vtable for llvm::PassNameParser"}, + {"_ZTIN4llvm4PassE", "typeinfo for llvm::Pass"}, + {"_ZTIN4llvm10ModulePassE", "typeinfo for llvm::ModulePass"}, + {"_ZTIN4llvm13ImmutablePassE", "typeinfo for llvm::ImmutablePass"}, + {"_ZTVN4llvm12FunctionPassE", "vtable for llvm::FunctionPass"}, + {"_ZTIN4llvm12FunctionPassE", "typeinfo for llvm::FunctionPass"}, + {"_ZTVN4llvm14BasicBlockPassE", "vtable for llvm::BasicBlockPass"}, + {"_ZTIN4llvm14BasicBlockPassE", "typeinfo for llvm::BasicBlockPass"}, + {"_ZTIN4llvm24PassRegistrationListenerE", "typeinfo for llvm::PassRegistrationListener"}, + {"_ZTIN4llvm14PassNameParserE", "typeinfo for llvm::PassNameParser"}, + {"_ZTVN12_GLOBAL__N_116GetCFGOnlyPassesE", "vtable for (anonymous namespace)::GetCFGOnlyPasses"}, + {"_ZTIN12_GLOBAL__N_116GetCFGOnlyPassesE", "typeinfo for (anonymous namespace)::GetCFGOnlyPasses"}, + {"_ZTVN4llvm17PMTopLevelManagerE", "vtable for llvm::PMTopLevelManager"}, + {"_ZTVN4llvm13PMDataManagerE", "vtable for llvm::PMDataManager"}, + {"_ZTVN4llvm19FunctionPassManagerE", "vtable for llvm::FunctionPassManager"}, + {"_ZTVN4llvm11PassManagerE", "vtable for llvm::PassManager"}, + {"_ZTVN4llvm15PassManagerBaseE", "vtable for llvm::PassManagerBase"}, + {"_ZTVN4llvm27PassManagerPrettyStackEntryE", "vtable for llvm::PassManagerPrettyStackEntry"}, + {"_ZTIN4llvm27PassManagerPrettyStackEntryE", "typeinfo for llvm::PassManagerPrettyStackEntry"}, + {"_ZTIN4llvm13PMDataManagerE", "typeinfo for llvm::PMDataManager"}, + {"_ZTVN4llvm13FPPassManagerE", "vtable for llvm::FPPassManager"}, + {"_ZTIN4llvm13FPPassManagerE", "typeinfo for llvm::FPPassManager"}, + {"_ZTIN4llvm17PMTopLevelManagerE", "typeinfo for llvm::PMTopLevelManager"}, + {"_ZTVN4llvm13MPPassManagerE", "vtable for llvm::MPPassManager"}, + {"_ZTIN4llvm13MPPassManagerE", "typeinfo for llvm::MPPassManager"}, + {"_ZTIN4llvm15PassManagerBaseE", "typeinfo for llvm::PassManagerBase"}, + {"_ZTIN4llvm19FunctionPassManagerE", "typeinfo for llvm::FunctionPassManager"}, + {"_ZTIN4llvm11PassManagerE", "typeinfo for llvm::PassManager"}, + {"_ZTVN12_GLOBAL__N_113BBPassManagerE", "vtable for (anonymous namespace)::BBPassManager"}, + {"_ZTIN12_GLOBAL__N_113BBPassManagerE", "typeinfo for (anonymous namespace)::BBPassManager"}, + {"_ZTVN12_GLOBAL__N_117PrintFunctionPassE", "vtable for (anonymous namespace)::PrintFunctionPass"}, + {"_ZTIN12_GLOBAL__N_117PrintFunctionPassE", "typeinfo for (anonymous namespace)::PrintFunctionPass"}, + {"_ZTVN12_GLOBAL__N_115PrintModulePassE", "vtable for (anonymous namespace)::PrintModulePass"}, + {"_ZTIN12_GLOBAL__N_115PrintModulePassE", "typeinfo for (anonymous namespace)::PrintModulePass"}, + {"_ZTVN4llvm16AbstractTypeUserE", "vtable for llvm::AbstractTypeUser"}, + {"_ZTVN4llvm12FunctionTypeE", "vtable for llvm::FunctionType"}, + {"_ZTVN4llvm10StructTypeE", "vtable for llvm::StructType"}, + {"_ZTVN4llvm9ArrayTypeE", "vtable for llvm::ArrayType"}, + {"_ZTVN4llvm10VectorTypeE", "vtable for llvm::VectorType"}, + {"_ZTVN4llvm11PointerTypeE", "vtable for llvm::PointerType"}, + {"_ZTIN4llvm16AbstractTypeUserE", "typeinfo for llvm::AbstractTypeUser"}, + {"_ZTVN4llvm14SequentialTypeE", "vtable for llvm::SequentialType"}, + {"_ZTIN4llvm14SequentialTypeE", "typeinfo for llvm::SequentialType"}, + {"_ZTIN4llvm12FunctionTypeE", "typeinfo for llvm::FunctionType"}, + {"_ZTIN4llvm10StructTypeE", "typeinfo for llvm::StructType"}, + {"_ZTIN4llvm9ArrayTypeE", "typeinfo for llvm::ArrayType"}, + {"_ZTIN4llvm10VectorTypeE", "typeinfo for llvm::VectorType"}, + {"_ZTIN4llvm11PointerTypeE", "typeinfo for llvm::PointerType"}, + {"_ZTVN4llvm15TypeSymbolTableE", "vtable for llvm::TypeSymbolTable"}, + {"_ZTIN4llvm15TypeSymbolTableE", "typeinfo for llvm::TypeSymbolTable"}, + {"_ZTVN4llvm10CallbackVHE", "vtable for llvm::CallbackVH"}, + {"_ZTIN4llvm10CallbackVHE", "typeinfo for llvm::CallbackVH"}, + {"_ZTVN12_GLOBAL__N_18VerifierE", "vtable for (anonymous namespace)::Verifier"}, + {"_ZTIN4llvm11InstVisitorIN12_GLOBAL__N_18VerifierEvEE", "typeinfo for llvm::InstVisitor<(anonymous namespace)::Verifier, void>"}, + {"_ZTIN12_GLOBAL__N_18VerifierE", "typeinfo for (anonymous namespace)::Verifier"}, + {"_ZTVN12_GLOBAL__N_17TypeSetE", "vtable for (anonymous namespace)::TypeSet"}, + {"_ZTIN12_GLOBAL__N_17TypeSetE", "typeinfo for (anonymous namespace)::TypeSet"}, + {"_ZTVN12_GLOBAL__N_111PreVerifierE", "vtable for (anonymous namespace)::PreVerifier"}, + {"_ZTIN12_GLOBAL__N_111PreVerifierE", "typeinfo for (anonymous namespace)::PreVerifier"}, + {"_ZTVN4llvm14ARMInstPrinterE", "vtable for llvm::ARMInstPrinter"}, + {"_ZTVN12_GLOBAL__N_118X86ELFObjectWriterE", "vtable for (anonymous namespace)::X86ELFObjectWriter"}, + {"_ZTVN12_GLOBAL__N_115ELFObjectWriterE", "vtable for (anonymous namespace)::ELFObjectWriter"}, + {"_ZTVN12_GLOBAL__N_121MBlazeELFObjectWriterE", "vtable for (anonymous namespace)::MBlazeELFObjectWriter"}, + {"_ZTVN12_GLOBAL__N_118ARMELFObjectWriterE", "vtable for (anonymous namespace)::ARMELFObjectWriter"}, + {"_ZTVN4llvm9MCAsmInfoE", "vtable for llvm::MCAsmInfo"}, + {"_ZTVN12_GLOBAL__N_113MCAsmStreamerE", "vtable for (anonymous namespace)::MCAsmStreamer"}, + {"_ZTVN4llvm10MCFragmentE", "vtable for llvm::MCFragment"}, + {"_ZTVN4llvm13MCCodeEmitterE", "vtable for llvm::MCCodeEmitter"}, + {"_ZTVN4llvm23MCELFObjectTargetWriterE", "vtable for llvm::MCELFObjectTargetWriter"}, + {"_ZTVN12_GLOBAL__N_113MCELFStreamerE", "vtable for (anonymous namespace)::MCELFStreamer"}, + {"_ZTVN4llvm12MCTargetExprE", "vtable for llvm::MCTargetExpr"}, + {"_ZTVN4llvm13MCInstPrinterE", "vtable for llvm::MCInstPrinter"}, + {"_ZTVN12_GLOBAL__N_117MCLoggingStreamerE", "vtable for (anonymous namespace)::MCLoggingStreamer"}, + {"_ZTVN12_GLOBAL__N_115MCMachOStreamerE", "vtable for (anonymous namespace)::MCMachOStreamer"}, + {"_ZTVN4llvm24MCMachObjectTargetWriterE", "vtable for llvm::MCMachObjectTargetWriter"}, + {"_ZTVN12_GLOBAL__N_114MCNullStreamerE", "vtable for (anonymous namespace)::MCNullStreamer"}, + {"_ZTVN4llvm16MCObjectStreamerE", "vtable for llvm::MCObjectStreamer"}, + {"_ZTVN4llvm14MCObjectWriterE", "vtable for llvm::MCObjectWriter"}, + {"_ZTVN4llvm9MCSectionE", "vtable for llvm::MCSection"}, + {"_ZTVN4llvm13MCSectionCOFFE", "vtable for llvm::MCSectionCOFF"}, + {"_ZTVN4llvm12MCSectionELFE", "vtable for llvm::MCSectionELF"}, + {"_ZTVN4llvm14MCSectionMachOE", "vtable for llvm::MCSectionMachO"}, + {"_ZTVN4llvm10MCStreamerE", "vtable for llvm::MCStreamer"}, + {"_ZTVN12_GLOBAL__N_116MachObjectWriterE", "vtable for (anonymous namespace)::MachObjectWriter"}, + {"_ZTVN4llvm16TargetAsmBackendE", "vtable for llvm::TargetAsmBackend"}, + + // {"_ZZNK4llvm16TargetAsmBackend16getFixupKindInfoENS_11MCFixupKindEE8Builtins", + // "llvm::TargetAsmBackend::getFixupKindInfo(llvm::MCFixupKind) const::Builtins"}, + // "llvm::TargetAsmBackend::getFixupKindInfo(llvm::MCFixupKind)::Builtins const" was returned + + {"_ZTVN12_GLOBAL__N_119WinCOFFObjectWriterE", "vtable for (anonymous namespace)::WinCOFFObjectWriter"}, + {"_ZTVN12_GLOBAL__N_115WinCOFFStreamerE", "vtable for (anonymous namespace)::WinCOFFStreamer"}, + {"_ZTVN4llvm13SlabAllocatorE", "vtable for llvm::SlabAllocator"}, + {"_ZTVN4llvm19MallocSlabAllocatorE", "vtable for llvm::MallocSlabAllocator"}, + {"_ZTIN4llvm13SlabAllocatorE", "typeinfo for llvm::SlabAllocator"}, + {"_ZTIN4llvm19MallocSlabAllocatorE", "typeinfo for llvm::MallocSlabAllocator"}, + {"_ZTVN4llvm2cl6OptionE", "vtable for llvm::cl::Option"}, + {"_ZTIN4llvm2cl6OptionE", "typeinfo for llvm::cl::Option"}, + {"_ZTVN4llvm2cl19generic_parser_baseE", "vtable for llvm::cl::generic_parser_base"}, + {"_ZTIN4llvm2cl19generic_parser_baseE", "typeinfo for llvm::cl::generic_parser_base"}, + {"_ZTIN4llvm2cl17basic_parser_implE", "typeinfo for llvm::cl::basic_parser_impl"}, + {"_ZTVN4llvm2cl17basic_parser_implE", "vtable for llvm::cl::basic_parser_impl"}, + {"_ZTVN4llvm2cl6parserIbEE", "vtable for llvm::cl::parser"}, + {"_ZTIN4llvm2cl6parserIbEE", "typeinfo for llvm::cl::parser"}, + {"_ZTVN4llvm2cl6parserINS0_13boolOrDefaultEEE", "vtable for llvm::cl::parser"}, + {"_ZTIN4llvm2cl6parserINS0_13boolOrDefaultEEE", "typeinfo for llvm::cl::parser"}, + {"_ZTVN4llvm2cl6parserIiEE", "vtable for llvm::cl::parser"}, + {"_ZTIN4llvm2cl6parserIiEE", "typeinfo for llvm::cl::parser"}, + {"_ZTVN4llvm2cl6parserIjEE", "vtable for llvm::cl::parser"}, + {"_ZTIN4llvm2cl6parserIjEE", "typeinfo for llvm::cl::parser"}, + {"_ZTVN4llvm2cl6parserIdEE", "vtable for llvm::cl::parser"}, + {"_ZTIN4llvm2cl6parserIdEE", "typeinfo for llvm::cl::parser"}, + {"_ZTVN4llvm2cl6parserIfEE", "vtable for llvm::cl::parser"}, + {"_ZTIN4llvm2cl6parserIfEE", "typeinfo for llvm::cl::parser"}, + {"_ZTVN4llvm2cl6parserISsEE", "vtable for llvm::cl::parser"}, + {"_ZTIN4llvm2cl6parserISsEE", "typeinfo for llvm::cl::parser"}, + {"_ZTVN4llvm2cl6parserIcEE", "vtable for llvm::cl::parser"}, + {"_ZTIN4llvm2cl6parserIcEE", "typeinfo for llvm::cl::parser"}, + {"_ZTVN4llvm2cl5aliasE", "vtable for llvm::cl::alias"}, + {"_ZTIN4llvm2cl5aliasE", "typeinfo for llvm::cl::alias"}, + {"_ZTIN4llvm2cl11opt_storageIN12_GLOBAL__N_114VersionPrinterELb1ELb1EEE", "typeinfo for llvm::cl::opt_storage<(anonymous namespace)::VersionPrinter, true, true>"}, + {"_ZTIN4llvm2cl3optIN12_GLOBAL__N_114VersionPrinterELb1ENS0_6parserIbEEEE", "typeinfo for llvm::cl::opt<(anonymous namespace)::VersionPrinter, true, llvm::cl::parser>"}, + {"_ZTIN4llvm2cl11opt_storageIN12_GLOBAL__N_111HelpPrinterELb1ELb1EEE", "typeinfo for llvm::cl::opt_storage<(anonymous namespace)::HelpPrinter, true, true>"}, + {"_ZTIN4llvm2cl3optIN12_GLOBAL__N_111HelpPrinterELb1ENS0_6parserIbEEEE", "typeinfo for llvm::cl::opt<(anonymous namespace)::HelpPrinter, true, llvm::cl::parser>"}, + {"_ZTIN4llvm3sys11ThreadLocalIKN12_GLOBAL__N_124CrashRecoveryContextImplEEE", "typeinfo for llvm::sys::ThreadLocal<(anonymous namespace)::CrashRecoveryContextImpl const>"}, + {"_ZTVN4llvm14FoldingSetImplE", "vtable for llvm::FoldingSetImpl"}, + {"_ZTIN4llvm14FoldingSetImplE", "typeinfo for llvm::FoldingSetImpl"}, + {"_ZTVN4llvm21formatted_raw_ostreamE", "vtable for llvm::formatted_raw_ostream"}, + {"_ZTIN4llvm21formatted_raw_ostreamE", "typeinfo for llvm::formatted_raw_ostream"}, + {"_ZTVN4llvm12MemoryBufferE", "vtable for llvm::MemoryBuffer"}, + {"_ZTIN4llvm12MemoryBufferE", "typeinfo for llvm::MemoryBuffer"}, + {"_ZTVN12_GLOBAL__N_120MemoryBufferMMapFileE", "vtable for (anonymous namespace)::MemoryBufferMMapFile"}, + {"_ZTIN12_GLOBAL__N_115MemoryBufferMemE", "typeinfo for (anonymous namespace)::MemoryBufferMem"}, + {"_ZTIN12_GLOBAL__N_120MemoryBufferMMapFileE", "typeinfo for (anonymous namespace)::MemoryBufferMMapFile"}, + {"_ZTVN12_GLOBAL__N_115MemoryBufferMemE", "vtable for (anonymous namespace)::MemoryBufferMem"}, + {"_ZTVN4llvm21PrettyStackTraceEntryE", "vtable for llvm::PrettyStackTraceEntry"}, + {"_ZTIN4llvm21PrettyStackTraceEntryE", "typeinfo for llvm::PrettyStackTraceEntry"}, + {"_ZTVN4llvm22PrettyStackTraceStringE", "vtable for llvm::PrettyStackTraceString"}, + {"_ZTIN4llvm22PrettyStackTraceStringE", "typeinfo for llvm::PrettyStackTraceString"}, + {"_ZTVN4llvm23PrettyStackTraceProgramE", "vtable for llvm::PrettyStackTraceProgram"}, + {"_ZTIN4llvm23PrettyStackTraceProgramE", "typeinfo for llvm::PrettyStackTraceProgram"}, + {"_ZTVN4llvm3sys15ThreadLocalImplE", "vtable for llvm::sys::ThreadLocalImpl"}, + {"_ZTIN4llvm3sys15ThreadLocalImplE", "typeinfo for llvm::sys::ThreadLocalImpl"}, + {"_ZTVN4llvm11raw_ostreamE", "vtable for llvm::raw_ostream"}, + {"_ZTVN4llvm14raw_fd_ostreamE", "vtable for llvm::raw_fd_ostream"}, + {"_ZTVN4llvm18raw_string_ostreamE", "vtable for llvm::raw_string_ostream"}, + {"_ZTVN4llvm19raw_svector_ostreamE", "vtable for llvm::raw_svector_ostream"}, + {"_ZTVN4llvm16raw_null_ostreamE", "vtable for llvm::raw_null_ostream"}, + {"_ZTIN4llvm11raw_ostreamE", "typeinfo for llvm::raw_ostream"}, + {"_ZTIN4llvm18raw_string_ostreamE", "typeinfo for llvm::raw_string_ostream"}, + {"_ZTIN4llvm16raw_null_ostreamE", "typeinfo for llvm::raw_null_ostream"}, + {"_ZTVN4llvm18format_object_baseE", "vtable for llvm::format_object_base"}, + {"_ZTIN4llvm18format_object_baseE", "typeinfo for llvm::format_object_base"}, + {"_ZTIN4llvm14raw_fd_ostreamE", "typeinfo for llvm::raw_fd_ostream"}, + {"_ZTIN4llvm19raw_svector_ostreamE", "typeinfo for llvm::raw_svector_ostream"}, + {"_ZTVN4llvm14error_categoryE", "vtable for llvm::error_category"}, + {"_ZTIN4llvm14error_categoryE", "typeinfo for llvm::error_category"}, + {"_ZTVN4llvm11_do_messageE", "vtable for llvm::_do_message"}, + {"_ZTIN4llvm11_do_messageE", "typeinfo for llvm::_do_message"}, + {"_ZTVN4llvm23_generic_error_categoryE", "vtable for llvm::_generic_error_category"}, + {"_ZTIN4llvm23_generic_error_categoryE", "typeinfo for llvm::_generic_error_category"}, + {"_ZTVN4llvm22_system_error_categoryE", "vtable for llvm::_system_error_category"}, + {"_ZTIN4llvm22_system_error_categoryE", "typeinfo for llvm::_system_error_category"}, + {"_ZTVN5clang17PreprocessorLexerE", "vtable for clang::PreprocessorLexer"}, + {"_ZTVN5clang6driver5tools6darwin10DarwinToolE", "vtable for clang::driver::tools::darwin::DarwinTool"}, + {"_ZTVN5clang6driver5tools6darwin3CC1E", "vtable for clang::driver::tools::darwin::CC1"}, + {"_ZTVN5clang19FileSystemStatCacheE", "vtable for clang::FileSystemStatCache"}, + {"_ZTVN5clang13CodeGeneratorE", "vtable for clang::CodeGenerator"}, + {"_ZTVN5clang14reachable_code8CallbackE", "vtable for clang::reachable_code::Callback"}, + {"_ZTVN5clang15InheritableAttrE", "vtable for clang::InheritableAttr"}, + {"_ZTVN5clang4ento9SubEngineE", "vtable for clang::ento::SubEngine"}, + {"_ZTVN5clang4ento12SubRegionMapE", "vtable for clang::ento::SubRegionMap"}, + {"_ZTVN5clang4ento9BugReport12NodeResolverE", "vtable for clang::ento::BugReport::NodeResolver"}, + {"_ZTVN5clang4ento7GRState7PrinterE", "vtable for clang::ento::GRState::Printer"}, + {"_ZTVN5clang4ento12SubRegionMap7VisitorE", "vtable for clang::ento::SubRegionMap::Visitor"}, + {"_ZTVN5clang4ento11TypedRegionE", "vtable for clang::ento::TypedRegion"}, + {"_ZTVN5clang4ento14CodeTextRegionE", "vtable for clang::ento::CodeTextRegion"}, + {"_ZTVN5clang4ento11SValBuilderE", "vtable for clang::ento::SValBuilder"}, + {"_ZTVN5clang4ento7SymExprE", "vtable for clang::ento::SymExpr"}, + {"_ZTVN5clang4ento10SymbolDataE", "vtable for clang::ento::SymbolData"}, + {"_ZTVN5clang13MangleContextE", "vtable for clang::MangleContext"}, + {"_ZTVN4llvm18MCParsedAsmOperandE", "vtable for llvm::MCParsedAsmOperand"}, + {"_ZTVN4llvm24MachineConstantPoolValueE", "vtable for llvm::MachineConstantPoolValue"}, + {"_ZTVN4llvm13TargetJITInfoE", "vtable for llvm::TargetJITInfo"}, + {"_ZTVN4llvm27MachinePassRegistryListenerE", "vtable for llvm::MachinePassRegistryListener"}, + {"_ZTVN4llvm8DIEValueE", "vtable for llvm::DIEValue"}, + {"_ZTVN4llvm23SchedulingPriorityQueueE", "vtable for llvm::SchedulingPriorityQueue"}, + {"_ZTVN4llvm7SpillerE", "vtable for llvm::Spiller"}, + {"_ZTIN4llvm10FoldingSetINS_17AttributeListImplEEE", "typeinfo for llvm::FoldingSet"}, + {"_ZTIN4llvm15ilist_half_nodeINS_10BasicBlockEEE", "typeinfo for llvm::ilist_half_node"}, + {"_ZTIN4llvm10ilist_nodeINS_10BasicBlockEEE", "typeinfo for llvm::ilist_node"}, + {"_ZTIN4llvm4UserE", "typeinfo for llvm::User"}, + {"_ZTIN4llvm8ConstantE", "typeinfo for llvm::Constant"}, + {"_ZTIN4llvm25GetElementPtrConstantExprE", "typeinfo for llvm::GetElementPtrConstantExpr"}, + {"_ZTIN4llvm11ConstantIntE", "typeinfo for llvm::ConstantInt"}, + {"_ZTVN4llvm8ConstantE", "vtable for llvm::Constant"}, + {"_ZTIN4llvm19CompareConstantExprE", "typeinfo for llvm::CompareConstantExpr"}, + {"_ZTIN4llvm24ExtractValueConstantExprE", "typeinfo for llvm::ExtractValueConstantExpr"}, + {"_ZTIN4llvm23InsertValueConstantExprE", "typeinfo for llvm::InsertValueConstantExpr"}, + {"_ZTIN4llvm25ShuffleVectorConstantExprE", "typeinfo for llvm::ShuffleVectorConstantExpr"}, + {"_ZTIN4llvm25InsertElementConstantExprE", "typeinfo for llvm::InsertElementConstantExpr"}, + {"_ZTIN4llvm26ExtractElementConstantExprE", "typeinfo for llvm::ExtractElementConstantExpr"}, + {"_ZTIN4llvm18SelectConstantExprE", "typeinfo for llvm::SelectConstantExpr"}, + {"_ZTIN4llvm18BinaryConstantExprE", "typeinfo for llvm::BinaryConstantExpr"}, + {"_ZTIN4llvm17UnaryConstantExprE", "typeinfo for llvm::UnaryConstantExpr"}, + {"_ZTIN4llvm13DominatorBaseINS_10BasicBlockEEE", "typeinfo for llvm::DominatorBase"}, + {"_ZTIN4llvm17DominatorTreeBaseINS_10BasicBlockEEE", "typeinfo for llvm::DominatorTreeBase"}, + {"_ZTIN4llvm15ilist_half_nodeINS_8FunctionEEE", "typeinfo for llvm::ilist_half_node"}, + {"_ZTIN4llvm10ilist_nodeINS_8FunctionEEE", "typeinfo for llvm::ilist_node"}, + {"_ZTIN4llvm15ilist_half_nodeINS_8ArgumentEEE", "typeinfo for llvm::ilist_half_node"}, + {"_ZTIN4llvm10ilist_nodeINS_8ArgumentEEE", "typeinfo for llvm::ilist_node"}, + {"_ZTIN4llvm8ArgumentE", "typeinfo for llvm::Argument"}, + {"_ZTIN4llvm15ilist_half_nodeINS_14GlobalVariableEEE", "typeinfo for llvm::ilist_half_node"}, + {"_ZTIN4llvm10ilist_nodeINS_14GlobalVariableEEE", "typeinfo for llvm::ilist_node"}, + {"_ZTIN4llvm15ilist_half_nodeINS_11GlobalAliasEEE", "typeinfo for llvm::ilist_half_node"}, + {"_ZTIN4llvm10ilist_nodeINS_11GlobalAliasEEE", "typeinfo for llvm::ilist_node"}, + {"_ZTIN4llvm15ilist_half_nodeINS_11InstructionEEE", "typeinfo for llvm::ilist_half_node"}, + {"_ZTIN4llvm10ilist_nodeINS_11InstructionEEE", "typeinfo for llvm::ilist_node"}, + {"_ZTIN4llvm8CastInstE", "typeinfo for llvm::CastInst"}, + {"_ZTVN4llvm8CastInstE", "vtable for llvm::CastInst"}, + {"_ZTIN4llvm15ValueHandleBaseE", "typeinfo for llvm::ValueHandleBase"}, + {"_ZTIN4llvm10FoldingSetINS_6MDNodeEEE", "typeinfo for llvm::FoldingSet"}, + {"_ZTIN4llvm17ConstantUniqueMapIcNS_4TypeENS_21ConstantAggregateZeroELb0EEE", "typeinfo for llvm::ConstantUniqueMap"}, + + // {"_ZTIN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_9ArrayTypeENS_13ConstantArrayELb1EEE", + // "typeinfo for llvm::ConstantUniqueMap>, llvm::ArrayType, llvm::ConstantArray, true>"}, + // got error + + + // {"_ZTIN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_10StructTypeENS_14ConstantStructELb1EEE", + // "typeinfo for llvm::ConstantUniqueMap>, llvm::StructType, llvm::ConstantStruct, true>"}, + // got error + + + // {"_ZTIN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_10VectorTypeENS_14ConstantVectorELb0EEE", + // "typeinfo for llvm::ConstantUniqueMap>, llvm::VectorType, llvm::ConstantVector, false>"}, + // got error + + {"_ZTIN4llvm17ConstantUniqueMapIcNS_11PointerTypeENS_19ConstantPointerNullELb0EEE", "typeinfo for llvm::ConstantUniqueMap"}, + {"_ZTIN4llvm17ConstantUniqueMapIcNS_4TypeENS_10UndefValueELb0EEE", "typeinfo for llvm::ConstantUniqueMap"}, + {"_ZTIN4llvm17ConstantUniqueMapINS_14ExprMapKeyTypeENS_4TypeENS_12ConstantExprELb0EEE", "typeinfo for llvm::ConstantUniqueMap"}, + {"_ZTIN4llvm17ConstantUniqueMapINS_16InlineAsmKeyTypeENS_11PointerTypeENS_9InlineAsmELb0EEE", "typeinfo for llvm::ConstantUniqueMap"}, + {"_ZTIN4llvm11DerivedTypeE", "typeinfo for llvm::DerivedType"}, + {"_ZTIN4llvm11IntegerTypeE", "typeinfo for llvm::IntegerType"}, + {"_ZTIN4llvm14FoldingSetImpl4NodeE", "typeinfo for llvm::FoldingSetImpl::Node"}, + {"_ZTIN4llvm8MDStringE", "typeinfo for llvm::MDString"}, + {"_ZTIN4llvm2cl6parserIPKNS_8PassInfoEEE", "typeinfo for llvm::cl::parser"}, + {"_ZTIN4llvm2cl11opt_storageIbLb1ELb0EEE", "typeinfo for llvm::cl::opt_storage"}, + {"_ZTIN4llvm2cl3optIbLb1ENS0_6parserIbEEEE", "typeinfo for llvm::cl::opt>"}, + {"_ZTISt12_Vector_baseIPKN4llvm8PassInfoESaIS3_EE", "typeinfo for std::_Vector_base>"}, + {"_ZTISt6vectorIPKN4llvm8PassInfoESaIS3_EE", "typeinfo for std::vector>"}, + {"_ZTIN4llvm2cl12list_storageIPKNS_8PassInfoEbEE", "typeinfo for llvm::cl::list_storage"}, + {"_ZTIN4llvm2cl4listIPKNS_8PassInfoEbNS_14PassNameParserEEE", "typeinfo for llvm::cl::list"}, + {"_ZTIN4llvm2cl11opt_storageINS_14PassDebugLevelELb0ELb0EEE", "typeinfo for llvm::cl::opt_storage"}, + {"_ZTIN4llvm2cl3optINS_14PassDebugLevelELb0ENS0_6parserIS2_EEEE", "typeinfo for llvm::cl::opt>"}, + {"_ZTIN4llvm2cl6parserINS_14PassDebugLevelEEE", "typeinfo for llvm::cl::parser"}, + {"_ZTIN4llvm15PassManagerImplE", "typeinfo for llvm::PassManagerImpl"}, + {"_ZTIN4llvm23FunctionPassManagerImplE", "typeinfo for llvm::FunctionPassManagerImpl"}, + {"_ZTIN4llvm13CompositeTypeE", "typeinfo for llvm::CompositeType"}, + {"_ZTIN4llvm10OpaqueTypeE", "typeinfo for llvm::OpaqueType"}, + {"_ZTVN4llvm13CompositeTypeE", "vtable for llvm::CompositeType"}, + {"_ZTIN4llvm2cl12basic_parserIbEE", "typeinfo for llvm::cl::basic_parser"}, + {"_ZTIN4llvm2cl12basic_parserINS0_13boolOrDefaultEEE", "typeinfo for llvm::cl::basic_parser"}, + {"_ZTIN4llvm2cl12basic_parserIiEE", "typeinfo for llvm::cl::basic_parser"}, + {"_ZTIN4llvm2cl12basic_parserIjEE", "typeinfo for llvm::cl::basic_parser"}, + {"_ZTIN4llvm2cl12basic_parserIdEE", "typeinfo for llvm::cl::basic_parser"}, + {"_ZTIN4llvm2cl12basic_parserIfEE", "typeinfo for llvm::cl::basic_parser"}, + {"_ZTIN4llvm2cl12basic_parserISsEE", "typeinfo for llvm::cl::basic_parser"}, + {"_ZTIN4llvm2cl12basic_parserIcEE", "typeinfo for llvm::cl::basic_parser"}, + {"_ZTIN4llvm2cl11opt_storageIjLb0ELb0EEE", "typeinfo for llvm::cl::opt_storage"}, + {"_ZTIN4llvm2cl3optIjLb0ENS0_6parserIjEEEE", "typeinfo for llvm::cl::opt>"}, + {"_ZTIN4llvm2cl11opt_storageIiLb0ELb0EEE", "typeinfo for llvm::cl::opt_storage"}, + {"_ZTIN4llvm2cl3optIiLb0ENS0_6parserIiEEEE", "typeinfo for llvm::cl::opt>"}, + {"_ZTISs", "typeinfo for std::string"}, + {"_ZTIN4llvm2cl11opt_storageISsLb0ELb1EEE", "typeinfo for llvm::cl::opt_storage"}, + {"_ZTIN4llvm2cl3optISsLb0ENS0_6parserISsEEEE", "typeinfo for llvm::cl::opt>"}, + {"_ZTIN4llvm2cl11opt_storageIcLb0ELb0EEE", "typeinfo for llvm::cl::opt_storage"}, + {"_ZTIN4llvm2cl3optIcLb0ENS0_6parserIcEEEE", "typeinfo for llvm::cl::opt>"}, + {"_ZTIN4llvm2cl11opt_storageIbLb0ELb0EEE", "typeinfo for llvm::cl::opt_storage"}, + {"_ZTIN4llvm2cl3optIbLb0ENS0_6parserIbEEEE", "typeinfo for llvm::cl::opt>"}, + {"_ZTIN4llvm3sys11ThreadLocalIKNS_21PrettyStackTraceEntryEEE", "typeinfo for llvm::sys::ThreadLocal"}, + {"_ZTIN4llvm14format_object1IxEE", "typeinfo for llvm::format_object1"}, + {"_ZTIN4llvm14format_object1IdEE", "typeinfo for llvm::format_object1"}, + {"_ZTIN4llvm2cl11opt_storageISsLb1ELb1EEE", "typeinfo for llvm::cl::opt_storage"}, + {"_ZTIN4llvm2cl3optISsLb1ENS0_6parserISsEEEE", "typeinfo for llvm::cl::opt>"}, + {"_ZN4llvm8RegistryIN5clang15PluginASTActionENS_14RegistryTraitsIS2_EEE4HeadE", "llvm::Registry>::Head"}, + {"_ZTVN5clang23ChainedDiagnosticClientE", "vtable for clang::ChainedDiagnosticClient"}, + {"_ZTVN5clang5LexerE", "vtable for clang::Lexer"}, + {"_ZTVN5clang12SemaConsumerE", "vtable for clang::SemaConsumer"}, + {"_ZTVN5clang6driver11InputActionE", "vtable for clang::driver::InputAction"}, + {"_ZTVN5clang6driver14BindArchActionE", "vtable for clang::driver::BindArchAction"}, + {"_ZTVN5clang6driver9JobActionE", "vtable for clang::driver::JobAction"}, + {"_ZTVN5clang6driver19PreprocessJobActionE", "vtable for clang::driver::PreprocessJobAction"}, + {"_ZTVN5clang6driver19PrecompileJobActionE", "vtable for clang::driver::PrecompileJobAction"}, + {"_ZTVN5clang6driver16AnalyzeJobActionE", "vtable for clang::driver::AnalyzeJobAction"}, + {"_ZTVN5clang6driver16CompileJobActionE", "vtable for clang::driver::CompileJobAction"}, + {"_ZTVN5clang6driver17AssembleJobActionE", "vtable for clang::driver::AssembleJobAction"}, + {"_ZTVN5clang6driver13LinkJobActionE", "vtable for clang::driver::LinkJobAction"}, + {"_ZTVN5clang6driver13LipoJobActionE", "vtable for clang::driver::LipoJobAction"}, + {"_ZTVN5clang6driver17DsymutilJobActionE", "vtable for clang::driver::DsymutilJobAction"}, + {"_ZTVN5clang6driver7CommandE", "vtable for clang::driver::Command"}, + {"_ZTVN5clang6driver10toolchains11Generic_ELFE", "vtable for clang::driver::toolchains::Generic_ELF"}, + {"_ZTVN5clang7CodeGen12EHScopeStack19ConditionalCleanup1IN12_GLOBAL__N_113FreeExceptionEPN4llvm5ValueEEE", "vtable for clang::CodeGen::EHScopeStack::ConditionalCleanup1<(anonymous namespace)::FreeException, llvm::Value*>"}, + {"_ZTVN5clang7CodeGen12EHScopeStack21UnconditionalCleanup1IN12_GLOBAL__N_113FreeExceptionEPN4llvm5ValueEEE", "vtable for clang::CodeGen::EHScopeStack::UnconditionalCleanup1<(anonymous namespace)::FreeException, llvm::Value*>"}, + {"_ZTVN5clang7CodeGen12EHScopeStack19ConditionalCleanup2IN12_GLOBAL__N_116DestroyTemporaryEPKNS_17CXXDestructorDeclEPN4llvm5ValueEEE", "vtable for clang::CodeGen::EHScopeStack::ConditionalCleanup2<(anonymous namespace)::DestroyTemporary, clang::CXXDestructorDecl const*, llvm::Value*>"}, + {"_ZTVN5clang7CodeGen12EHScopeStack21UnconditionalCleanup2IN12_GLOBAL__N_116DestroyTemporaryEPKNS_17CXXDestructorDeclEPN4llvm5ValueEEE", "vtable for clang::CodeGen::EHScopeStack::UnconditionalCleanup2<(anonymous namespace)::DestroyTemporary, clang::CXXDestructorDecl const*, llvm::Value*>"}, + {"_ZTVN5clang18EmitAssemblyActionE", "vtable for clang::EmitAssemblyAction"}, + {"_ZTVN5clang12EmitBCActionE", "vtable for clang::EmitBCAction"}, + {"_ZTVN5clang14EmitLLVMActionE", "vtable for clang::EmitLLVMAction"}, + {"_ZTVN5clang18EmitLLVMOnlyActionE", "vtable for clang::EmitLLVMOnlyAction"}, + {"_ZTVN5clang21EmitCodeGenOnlyActionE", "vtable for clang::EmitCodeGenOnlyAction"}, + {"_ZTVN5clang13EmitObjActionE", "vtable for clang::EmitObjAction"}, + {"_ZTVN5clang15BackendConsumerE", "vtable for clang::BackendConsumer"}, + {"_ZTVN4llvm10FoldingSetIN5clang7CodeGen14CGFunctionInfoEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN5clang6Parser20ObjCPropertyCallbackE", "vtable for clang::Parser::ObjCPropertyCallback"}, + {"_ZTVN5clang15UsingShadowDeclE", "vtable for clang::UsingShadowDecl"}, + {"_ZTVN5clang14AccessSpecDeclE", "vtable for clang::AccessSpecDecl"}, + {"_ZTVN5clang4ento14CheckerVisitorIN12_GLOBAL__N_126AdjustedReturnValueCheckerEEE", "vtable for clang::ento::CheckerVisitor<(anonymous namespace)::AdjustedReturnValueChecker>"}, + {"_ZTVN5clang4ento15AnalysisManagerE", "vtable for clang::ento::AnalysisManager"}, + {"_ZTVN4llvm10FoldingSetIN5clang15LocationContextEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN5clang4ento14CheckerVisitorIN12_GLOBAL__N_120AnalyzerStatsCheckerEEE", "vtable for clang::ento::CheckerVisitor<(anonymous namespace)::AnalyzerStatsChecker>"}, + {"_ZTVN5clang4ento14CheckerVisitorIN12_GLOBAL__N_117ArrayBoundCheckerEEE", "vtable for clang::ento::CheckerVisitor<(anonymous namespace)::ArrayBoundChecker>"}, + {"_ZTVN5clang4ento10BuiltinBugE", "vtable for clang::ento::BuiltinBug"}, + {"_ZTVN5clang4ento14CheckerVisitorIN12_GLOBAL__N_119ArrayBoundCheckerV2EEE", "vtable for clang::ento::CheckerVisitor<(anonymous namespace)::ArrayBoundCheckerV2>"}, + {"_ZTVN5clang4ento14CheckerVisitorIN12_GLOBAL__N_118AttrNonNullCheckerEEE", "vtable for clang::ento::CheckerVisitor<(anonymous namespace)::AttrNonNullChecker>"}, + {"_ZTVN5clang4ento14CheckerVisitorIN12_GLOBAL__N_119ClassReleaseCheckerEEE", "vtable for clang::ento::CheckerVisitor<(anonymous namespace)::ClassReleaseChecker>"}, + {"_ZTVN5clang4ento14CheckerVisitorIN12_GLOBAL__N_122CFRetainReleaseCheckerEEE", "vtable for clang::ento::CheckerVisitor<(anonymous namespace)::CFRetainReleaseChecker>"}, + {"_ZTVN5clang4ento14CheckerVisitorIN12_GLOBAL__N_121CFNumberCreateCheckerEEE", "vtable for clang::ento::CheckerVisitor<(anonymous namespace)::CFNumberCreateChecker>"}, + {"_ZTVN5clang4ento14CheckerVisitorIN12_GLOBAL__N_113NilArgCheckerEEE", "vtable for clang::ento::CheckerVisitor<(anonymous namespace)::NilArgChecker>"}, + {"_ZTVN5clang4ento14CheckerVisitorIN12_GLOBAL__N_114CStringCheckerEEE", "vtable for clang::ento::CheckerVisitor<(anonymous namespace)::CStringChecker>"}, + {"_ZTVN5clang4ento14CheckerVisitorIN12_GLOBAL__N_121CallAndMessageCheckerEEE", "vtable for clang::ento::CheckerVisitor<(anonymous namespace)::CallAndMessageChecker>"}, + {"_ZTVN5clang4ento14CheckerVisitorIN12_GLOBAL__N_115CastSizeCheckerEEE", "vtable for clang::ento::CheckerVisitor<(anonymous namespace)::CastSizeChecker>"}, + {"_ZTVN5clang4ento14CheckerVisitorIN12_GLOBAL__N_119CastToStructCheckerEEE", "vtable for clang::ento::CheckerVisitor<(anonymous namespace)::CastToStructChecker>"}, + {"_ZTVN5clang4ento14CheckerVisitorIN12_GLOBAL__N_113ChrootCheckerEEE", "vtable for clang::ento::CheckerVisitor<(anonymous namespace)::ChrootChecker>"}, + {"_ZTVN5clang24LiveVariables_ValueTypes10ObserverTyE", "vtable for clang::LiveVariables_ValueTypes::ObserverTy"}, + {"_ZTVN5clang4ento14CheckerVisitorIN12_GLOBAL__N_114DivZeroCheckerEEE", "vtable for clang::ento::CheckerVisitor<(anonymous namespace)::DivZeroChecker>"}, + {"_ZTVN4llvm10FoldingSetIN5clang4ento7GRStateEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang4ento12ExplodedNodeEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN5clang4ento14CheckerVisitorIN12_GLOBAL__N_119FixedAddressCheckerEEE", "vtable for clang::ento::CheckerVisitor<(anonymous namespace)::FixedAddressChecker>"}, + {"_ZTVN5clang4ento14CheckerVisitorIN12_GLOBAL__N_126IdempotentOperationCheckerEEE", "vtable for clang::ento::CheckerVisitor<(anonymous namespace)::IdempotentOperationChecker>"}, + {"_ZTVN5clang4ento14CheckerVisitorIN12_GLOBAL__N_116MacOSXAPICheckerEEE", "vtable for clang::ento::CheckerVisitor<(anonymous namespace)::MacOSXAPIChecker>"}, + {"_ZTVN5clang4ento14CheckerVisitorIN12_GLOBAL__N_113MallocCheckerEEE", "vtable for clang::ento::CheckerVisitor<(anonymous namespace)::MallocChecker>"}, + {"_ZTVN5clang4ento14CheckerVisitorIN12_GLOBAL__N_124NSAutoreleasePoolCheckerEEE", "vtable for clang::ento::CheckerVisitor<(anonymous namespace)::NSAutoreleasePoolChecker>"}, + {"_ZTVN5clang4ento14CheckerVisitorIN12_GLOBAL__N_123NoReturnFunctionCheckerEEE", "vtable for clang::ento::CheckerVisitor<(anonymous namespace)::NoReturnFunctionChecker>"}, + {"_ZTVN5clang4ento14CheckerVisitorIN12_GLOBAL__N_117ObjCAtSyncCheckerEEE", "vtable for clang::ento::CheckerVisitor<(anonymous namespace)::ObjCAtSyncChecker>"}, + {"_ZZN5clang4ento12GRStateTraitIN4llvm12ImmutableMapIPKNS0_10SymbolDataEjNS2_16ImutKeyValueInfoIS6_jEEEEE8GDMIndexEvE5index", "clang::ento::GRStateTrait>>::GDMIndex()::index"}, + {"_ZTVN4llvm10FoldingSetIN5clang4ento19BugReportEquivClassEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN5clang4ento17EnhancedBugReportE", "vtable for clang::ento::EnhancedBugReport"}, + {"_ZTVN5clang4ento14CheckerVisitorIN12_GLOBAL__N_119ObjCSelfInitCheckerEEE", "vtable for clang::ento::CheckerVisitor<(anonymous namespace)::ObjCSelfInitChecker>"}, + {"_ZTVN5clang4ento14CheckerVisitorIN12_GLOBAL__N_119PointerArithCheckerEEE", "vtable for clang::ento::CheckerVisitor<(anonymous namespace)::PointerArithChecker>"}, + {"_ZTVN5clang4ento14CheckerVisitorIN12_GLOBAL__N_117PointerSubCheckerEEE", "vtable for clang::ento::CheckerVisitor<(anonymous namespace)::PointerSubChecker>"}, + {"_ZTVN5clang4ento14CheckerVisitorIN12_GLOBAL__N_118PthreadLockCheckerEEE", "vtable for clang::ento::CheckerVisitor<(anonymous namespace)::PthreadLockChecker>"}, + {"_ZTVN5clang4ento14CheckerVisitorIN12_GLOBAL__N_125ReturnPointerRangeCheckerEEE", "vtable for clang::ento::CheckerVisitor<(anonymous namespace)::ReturnPointerRangeChecker>"}, + {"_ZTVN5clang4ento14CheckerVisitorIN12_GLOBAL__N_118ReturnUndefCheckerEEE", "vtable for clang::ento::CheckerVisitor<(anonymous namespace)::ReturnUndefChecker>"}, + {"_ZTVN5clang4ento14CheckerVisitorIN12_GLOBAL__N_120StackAddrLeakCheckerEEE", "vtable for clang::ento::CheckerVisitor<(anonymous namespace)::StackAddrLeakChecker>"}, + {"_ZTVN5clang4ento14CheckerVisitorIN12_GLOBAL__N_113StreamCheckerEEE", "vtable for clang::ento::CheckerVisitor<(anonymous namespace)::StreamChecker>"}, + {"_ZTVN5clang4ento14CheckerVisitorIN12_GLOBAL__N_128UndefCapturedBlockVarCheckerEEE", "vtable for clang::ento::CheckerVisitor<(anonymous namespace)::UndefCapturedBlockVarChecker>"}, + {"_ZTVN5clang4ento14CheckerVisitorIN12_GLOBAL__N_118UndefResultCheckerEEE", "vtable for clang::ento::CheckerVisitor<(anonymous namespace)::UndefResultChecker>"}, + {"_ZTVN5clang4ento14CheckerVisitorIN12_GLOBAL__N_130UndefinedArraySubscriptCheckerEEE", "vtable for clang::ento::CheckerVisitor<(anonymous namespace)::UndefinedArraySubscriptChecker>"}, + {"_ZTVN5clang4ento14CheckerVisitorIN12_GLOBAL__N_126UndefinedAssignmentCheckerEEE", "vtable for clang::ento::CheckerVisitor<(anonymous namespace)::UndefinedAssignmentChecker>"}, + {"_ZTVN5clang4ento14CheckerVisitorIN12_GLOBAL__N_114UnixAPICheckerEEE", "vtable for clang::ento::CheckerVisitor<(anonymous namespace)::UnixAPIChecker>"}, + {"_ZTVN5clang4ento14CheckerVisitorIN12_GLOBAL__N_114VLASizeCheckerEEE", "vtable for clang::ento::CheckerVisitor<(anonymous namespace)::VLASizeChecker>"}, + {"_ZTVN4llvm21FoldingSetNodeWrapperISt4pairIN5clang4ento4SValES4_EEE", "vtable for llvm::FoldingSetNodeWrapper>"}, + {"_ZTVN4llvm10FoldingSetINS_21FoldingSetNodeWrapperISt4pairIN5clang4ento4SValES5_EEEEE", "vtable for llvm::FoldingSet>>"}, + {"_ZTVN4llvm21FoldingSetNodeWrapperISt4pairIN5clang4ento4SValEmEEE", "vtable for llvm::FoldingSetNodeWrapper>"}, + {"_ZTVN4llvm10FoldingSetINS_21FoldingSetNodeWrapperISt4pairIN5clang4ento4SValEmEEEEE", "vtable for llvm::FoldingSet>>"}, + {"_ZTVN4llvm21FoldingSetNodeWrapperINS_6APSIntEEE", "vtable for llvm::FoldingSetNodeWrapper"}, + {"_ZTVN4llvm10FoldingSetINS_17ImmutableListImplIN5clang4ento4SValEEEEE", "vtable for llvm::FoldingSet>"}, + {"_ZTVN4llvm10FoldingSetINS_21FoldingSetNodeWrapperINS_6APSIntEEEEE", "vtable for llvm::FoldingSet>"}, + {"_ZTVN4llvm10FoldingSetIN5clang4ento15CompoundValDataEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang4ento19LazyCompoundValDataEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetINS_17ImmutableListImplIPN5clang4ento18BugReporterVisitorEEEEE", "vtable for llvm::FoldingSet>"}, + {"_ZTVN5clang4ento13DiagBugReportE", "vtable for clang::ento::DiagBugReport"}, + {"_ZTVN4llvm10FoldingSetIN12_GLOBAL__N_113DiagCacheItemEEE", "vtable for llvm::FoldingSet<(anonymous namespace)::DiagCacheItem>"}, + {"_ZTVN4llvm10FoldingSetIN5clang4ento18BugReporterVisitorEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetINS_17ImmutableListImplIPKN5clang4ento10SymbolDataEEEEE", "vtable for llvm::FoldingSet>"}, + {"_ZTVN5clang4ento14CheckerVisitorIN12_GLOBAL__N_120RetainReleaseCheckerEEE", "vtable for clang::ento::CheckerVisitor<(anonymous namespace)::RetainReleaseChecker>"}, + {"_ZTVN5clang4ento13TransferFuncsE", "vtable for clang::ento::TransferFuncs"}, + {"_ZTVN5clang4ento21InterExplodedGraphMapE", "vtable for clang::ento::InterExplodedGraphMap"}, + {"_ZTVN5clang4ento18UnknownSpaceRegionE", "vtable for clang::ento::UnknownSpaceRegion"}, + {"_ZTVN5clang4ento15HeapSpaceRegionE", "vtable for clang::ento::HeapSpaceRegion"}, + {"_ZTVN5clang4ento18GlobalsSpaceRegionE", "vtable for clang::ento::GlobalsSpaceRegion"}, + {"_ZTVN5clang4ento25StackArgumentsSpaceRegionE", "vtable for clang::ento::StackArgumentsSpaceRegion"}, + {"_ZTVN5clang4ento22StackLocalsSpaceRegionE", "vtable for clang::ento::StackLocalsSpaceRegion"}, + {"_ZTVN4llvm10FoldingSetIN5clang4ento9MemRegionEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang4ento7SymExprEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN5clang24LiveVariables_ValueTypes14AnalysisDataTyE", "vtable for clang::LiveVariables_ValueTypes::AnalysisDataTy"}, + {"_ZTVN5clang23StmtDeclBitVector_Types14AnalysisDataTyE", "vtable for clang::StmtDeclBitVector_Types::AnalysisDataTy"}, + {"_ZTVN5clang19DeclBitVector_Types14AnalysisDataTyE", "vtable for clang::DeclBitVector_Types::AnalysisDataTy"}, + {"_ZTVN4llvm14format_object1IjEE", "vtable for llvm::format_object1"}, + {"_ZTVN5clang30UninitializedValues_ValueTypes14AnalysisDataTyE", "vtable for clang::UninitializedValues_ValueTypes::AnalysisDataTy"}, + {"_ZTVN4llvm10FoldingSetIN5clang3idx10EntityImplEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang10ASTContext29CanonicalTemplateTemplateParmEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang19NestedNameSpecifierEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang36SubstTemplateTemplateParmPackStorageEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang21DependentTemplateNameEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang21QualifiedTemplateNameEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang14AttributedTypeEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang21ObjCObjectPointerTypeEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang18ObjCObjectTypeImplEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang17PackExpansionTypeEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang17DependentNameTypeEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang14ElaboratedTypeEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang9ParenTypeEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang29SubstTemplateTypeParmPackTypeEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang25SubstTemplateTypeParmTypeEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang20TemplateTypeParmTypeEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang21DependentDecltypeTypeEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang23DependentTypeOfExprTypeEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang17FunctionProtoTypeEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang19FunctionNoProtoTypeEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang10VectorTypeEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang27DependentSizedExtVectorTypeEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang23DependentSizedArrayTypeEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang19IncompleteArrayTypeEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang17ConstantArrayTypeEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang17MemberPointerTypeEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang19RValueReferenceTypeEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang19LValueReferenceTypeEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang16BlockPointerTypeEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang11PointerTypeEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang11ComplexTypeEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang8ExtQualsEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm20ContextualFoldingSetIN5clang35DependentTemplateSpecializationTypeERNS1_10ASTContextEEE", "vtable for llvm::ContextualFoldingSet"}, + {"_ZTVN4llvm20ContextualFoldingSetIN5clang26TemplateSpecializationTypeERNS1_10ASTContextEEE", "vtable for llvm::ContextualFoldingSet"}, + {"_ZTVN5clang8TypeDeclE", "vtable for clang::TypeDecl"}, + {"_ZTVN5clang9NamedDeclE", "vtable for clang::NamedDecl"}, + {"_ZTVN5clang9ValueDeclE", "vtable for clang::ValueDecl"}, + {"_ZTVN5clang14DeclaratorDeclE", "vtable for clang::DeclaratorDecl"}, + {"_ZTVN5clang16FileScopeAsmDeclE", "vtable for clang::FileScopeAsmDecl"}, + {"_ZTVN5clang11TypedefDeclE", "vtable for clang::TypedefDecl"}, + {"_ZTVN5clang17IndirectFieldDeclE", "vtable for clang::IndirectFieldDecl"}, + {"_ZTVN5clang17ImplicitParamDeclE", "vtable for clang::ImplicitParamDecl"}, + {"_ZTVN5clang13NamespaceDeclE", "vtable for clang::NamespaceDecl"}, + {"_ZTVN5clang19TranslationUnitDeclE", "vtable for clang::TranslationUnitDecl"}, + {"_ZTVN5clang8EnumDeclE", "vtable for clang::EnumDecl"}, + {"_ZTVN5clang9FieldDeclE", "vtable for clang::FieldDecl"}, + {"_ZTVN5clang11ParmVarDeclE", "vtable for clang::ParmVarDecl"}, + {"_ZTVN5clang16StaticAssertDeclE", "vtable for clang::StaticAssertDecl"}, + {"_ZTVN5clang27UnresolvedUsingTypenameDeclE", "vtable for clang::UnresolvedUsingTypenameDecl"}, + {"_ZTVN5clang24UnresolvedUsingValueDeclE", "vtable for clang::UnresolvedUsingValueDecl"}, + {"_ZTVN5clang9UsingDeclE", "vtable for clang::UsingDecl"}, + {"_ZTVN5clang18NamespaceAliasDeclE", "vtable for clang::NamespaceAliasDecl"}, + {"_ZTVN5clang18UsingDirectiveDeclE", "vtable for clang::UsingDirectiveDecl"}, + {"_ZTVN5clang15LinkageSpecDeclE", "vtable for clang::LinkageSpecDecl"}, + {"_ZTVN5clang17CXXConversionDeclE", "vtable for clang::CXXConversionDecl"}, + {"_ZTVN5clang13CXXMethodDeclE", "vtable for clang::CXXMethodDecl"}, + {"_ZTVN5clang17CXXDestructorDeclE", "vtable for clang::CXXDestructorDecl"}, + {"_ZTVN5clang18CXXConstructorDeclE", "vtable for clang::CXXConstructorDecl"}, + {"_ZTVN5clang10FriendDeclE", "vtable for clang::FriendDecl"}, + {"_ZTVN5clang17ObjCInterfaceDeclE", "vtable for clang::ObjCInterfaceDecl"}, + {"_ZTVN5clang23ObjCForwardProtocolDeclE", "vtable for clang::ObjCForwardProtocolDecl"}, + {"_ZTVN5clang17ObjCContainerDeclE", "vtable for clang::ObjCContainerDecl"}, + {"_ZTVN5clang16ObjCPropertyDeclE", "vtable for clang::ObjCPropertyDecl"}, + {"_ZTVN5clang23ObjCCompatibleAliasDeclE", "vtable for clang::ObjCCompatibleAliasDecl"}, + {"_ZTVN5clang22ObjCImplementationDeclE", "vtable for clang::ObjCImplementationDecl"}, + {"_ZTVN5clang12ObjCImplDeclE", "vtable for clang::ObjCImplDecl"}, + {"_ZTVN5clang20ObjCCategoryImplDeclE", "vtable for clang::ObjCCategoryImplDecl"}, + {"_ZTVN5clang16ObjCCategoryDeclE", "vtable for clang::ObjCCategoryDecl"}, + {"_ZTVN5clang16ObjCProtocolDeclE", "vtable for clang::ObjCProtocolDecl"}, + {"_ZTVN5clang19ObjCAtDefsFieldDeclE", "vtable for clang::ObjCAtDefsFieldDecl"}, + {"_ZTVN5clang12ObjCIvarDeclE", "vtable for clang::ObjCIvarDecl"}, + {"_ZTVN5clang12TemplateDeclE", "vtable for clang::TemplateDecl"}, + {"_ZTVN5clang18FriendTemplateDeclE", "vtable for clang::FriendTemplateDecl"}, + {"_ZTVN5clang38ClassTemplatePartialSpecializationDeclE", "vtable for clang::ClassTemplatePartialSpecializationDecl"}, + {"_ZTVN5clang24TemplateTemplateParmDeclE", "vtable for clang::TemplateTemplateParmDecl"}, + {"_ZTVN5clang20TemplateTypeParmDeclE", "vtable for clang::TemplateTypeParmDecl"}, + {"_ZTVN4llvm10FoldingSetIN5clang38ClassTemplatePartialSpecializationDeclEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang31ClassTemplateSpecializationDeclEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang34FunctionTemplateSpecializationInfoEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang24CXXLiteralOperatorIdNameEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm10FoldingSetIN5clang14CXXSpecialNameEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN5clang18PPChainedCallbacksE", "vtable for clang::PPChainedCallbacks"}, + {"_ZTVN4llvm10FoldingSetIN5clang20MultiKeywordSelectorEEE", "vtable for llvm::FoldingSet"}, + {"_ZN12_GLOBAL__N_113PPCTargetInfo11BuiltinInfoE", "(anonymous namespace)::PPCTargetInfo::BuiltinInfo"}, + {"_ZN12_GLOBAL__N_113ARMTargetInfo11BuiltinInfoE", "(anonymous namespace)::ARMTargetInfo::BuiltinInfo"}, + {"_ZN12_GLOBAL__N_113PPCTargetInfo13GCCRegAliasesE", "(anonymous namespace)::PPCTargetInfo::GCCRegAliases"}, + {"_ZN12_GLOBAL__N_117SparcV8TargetInfo13GCCRegAliasesE", "(anonymous namespace)::SparcV8TargetInfo::GCCRegAliases"}, + {"_ZN12_GLOBAL__N_116MBlazeTargetInfo13GCCRegAliasesE", "(anonymous namespace)::MBlazeTargetInfo::GCCRegAliases"}, + {"_ZN12_GLOBAL__N_114MipsTargetInfo13GCCRegAliasesE", "(anonymous namespace)::MipsTargetInfo::GCCRegAliases"}, + {"_ZN12_GLOBAL__N_113ARMTargetInfo13GCCRegAliasesE", "(anonymous namespace)::ARMTargetInfo::GCCRegAliases"}, + {"_ZTVN4llvm18ValueMapCallbackVHIPKNS_8FunctionENS_18InlineCostAnalyzer12FunctionInfoENS_14ValueMapConfigIS3_EENS_12DenseMapInfoIS5_EEEE", "vtable for llvm::ValueMapCallbackVH, llvm::DenseMapInfo>"}, + {"_ZTVN4llvm12DISubprogramE", "vtable for llvm::DISubprogram"}, + {"_ZTVN4llvm7DIScopeE", "vtable for llvm::DIScope"}, + {"_ZTVN4llvm22X86MachineFunctionInfoE", "vtable for llvm::X86MachineFunctionInfo"}, + {"_ZTVN4llvm18X86MCAsmInfoDarwinE", "vtable for llvm::X86MCAsmInfoDarwin"}, + {"_ZTVN4llvm16X86MCAsmInfoCOFFE", "vtable for llvm::X86MCAsmInfoCOFF"}, + {"_ZTVN4llvm15MCAsmInfoDarwinE", "vtable for llvm::MCAsmInfoDarwin"}, + {"_ZTVN4llvm13MCAsmInfoCOFFE", "vtable for llvm::MCAsmInfoCOFF"}, + {"_ZTVN4llvm2cl3optI17AsmWriterFlavorTyLb0ENS0_6parserIS2_EEEE", "vtable for llvm::cl::opt>"}, + {"_ZTVN4llvm2cl6parserI17AsmWriterFlavorTyEE", "vtable for llvm::cl::parser"}, + {"_ZTVN4llvm3X8616CONTROL_REGClassE", "vtable for llvm::X86::CONTROL_REGClass"}, + {"_ZTVN4llvm3X8614DEBUG_REGClassE", "vtable for llvm::X86::DEBUG_REGClass"}, + {"_ZTVN4llvm3X8614GR16_ABCDClassE", "vtable for llvm::X86::GR16_ABCDClass"}, + {"_ZTVN4llvm3X8614GR32_ABCDClassE", "vtable for llvm::X86::GR32_ABCDClass"}, + {"_ZTVN4llvm3X8612GR32_ADClassE", "vtable for llvm::X86::GR32_ADClass"}, + {"_ZTVN4llvm3X8612GR32_TCClassE", "vtable for llvm::X86::GR32_TCClass"}, + {"_ZTVN4llvm3X8614GR64_ABCDClassE", "vtable for llvm::X86::GR64_ABCDClass"}, + {"_ZTVN4llvm3X8612GR64_TCClassE", "vtable for llvm::X86::GR64_TCClass"}, + {"_ZTVN4llvm3X8615GR64_TCW64ClassE", "vtable for llvm::X86::GR64_TCW64Class"}, + {"_ZTVN4llvm3X8615GR8_ABCD_HClassE", "vtable for llvm::X86::GR8_ABCD_HClass"}, + {"_ZTVN4llvm3X8615GR8_ABCD_LClassE", "vtable for llvm::X86::GR8_ABCD_LClass"}, + {"_ZTVN4llvm3X8610RFP32ClassE", "vtable for llvm::X86::RFP32Class"}, + {"_ZTVN4llvm3X8610RFP64ClassE", "vtable for llvm::X86::RFP64Class"}, + {"_ZTVN4llvm3X8610RFP80ClassE", "vtable for llvm::X86::RFP80Class"}, + {"_ZTVN4llvm3X8616SEGMENT_REGClassE", "vtable for llvm::X86::SEGMENT_REGClass"}, + {"_ZTVN4llvm3X869VR64ClassE", "vtable for llvm::X86::VR64Class"}, + {"_ZTVN4llvm19X86_32TargetMachineE", "vtable for llvm::X86_32TargetMachine"}, + {"_ZTVN4llvm19X86_64TargetMachineE", "vtable for llvm::X86_64TargetMachine"}, + {"_ZN4llvm15TheX86_32TargetE", "llvm::TheX86_32Target"}, + {"_ZN4llvm15TheX86_64TargetE", "llvm::TheX86_64Target"}, + {"_ZTVN4llvm15ARMFunctionInfoE", "vtable for llvm::ARMFunctionInfo"}, + {"_ZTVN4llvm3ARM8CCRClassE", "vtable for llvm::ARM::CCRClass"}, + {"_ZTVN4llvm3ARM10DPR_8ClassE", "vtable for llvm::ARM::DPR_8Class"}, + {"_ZTVN4llvm3ARM13DPR_VFP2ClassE", "vtable for llvm::ARM::DPR_VFP2Class"}, + {"_ZTVN4llvm3ARM10QPR_8ClassE", "vtable for llvm::ARM::QPR_8Class"}, + {"_ZTVN4llvm3ARM13QPR_VFP2ClassE", "vtable for llvm::ARM::QPR_VFP2Class"}, + {"_ZTVN4llvm3ARM14QQPR_VFP2ClassE", "vtable for llvm::ARM::QQPR_VFP2Class"}, + {"_ZTVN4llvm3ARM8SPRClassE", "vtable for llvm::ARM::SPRClass"}, + {"_ZTVN4llvm3ARM10SPR_8ClassE", "vtable for llvm::ARM::SPR_8Class"}, + {"_ZTVN4llvm3ARM9tGPRClassE", "vtable for llvm::ARM::tGPRClass"}, + {"_ZTVN4llvm19TargetRegisterClassE", "vtable for llvm::TargetRegisterClass"}, + {"_ZTVN4llvm16SelectionDAGISel11ISelUpdaterE", "vtable for llvm::SelectionDAGISel::ISelUpdater"}, + {"_ZTVN4llvm18ARMMCAsmInfoDarwinE", "vtable for llvm::ARMMCAsmInfoDarwin"}, + {"_ZTVN4llvm15ARMELFMCAsmInfoE", "vtable for llvm::ARMELFMCAsmInfo"}, + {"_ZTVN4llvm16ARMTargetMachineE", "vtable for llvm::ARMTargetMachine"}, + {"_ZTVN4llvm18ThumbTargetMachineE", "vtable for llvm::ThumbTargetMachine"}, + {"_ZTVN4llvm15ARMRegisterInfoE", "vtable for llvm::ARMRegisterInfo"}, + {"_ZTVN4llvm10FoldingSetINS_6SDNodeEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm2cl3optIPFPNS_18ScheduleDAGSDNodesEPNS_16SelectionDAGISelENS_10CodeGenOpt5LevelEELb0ENS_18RegisterPassParserINS_17RegisterSchedulerEEEEE", "vtable for llvm::cl::opt>"}, + {"_ZTVN4llvm18RegisterPassParserINS_17RegisterSchedulerEEE", "vtable for llvm::RegisterPassParser"}, + {"_ZTVN4llvm2cl6parserIPFPNS_18ScheduleDAGSDNodesEPNS_16SelectionDAGISelENS_10CodeGenOpt5LevelEEEE", "vtable for llvm::cl::parser"}, + {"_ZN4llvm8RegistryINS_17GCMetadataPrinterENS_14RegistryTraitsIS1_EEE4HeadE", "llvm::Registry>::Head"}, + {"_ZTVN4llvm14format_object1IyEE", "vtable for llvm::format_object1"}, + {"_ZTVN4llvm10FoldingSetINS_9DIEAbbrevEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm9DIEAbbrevE", "vtable for llvm::DIEAbbrev"}, + {"_ZN4llvm8RegistryINS_10GCStrategyENS_14RegistryTraitsIS1_EEE4HeadE", "llvm::Registry>::Head"}, + {"_ZTVN4llvm2cl3optINS0_13boolOrDefaultELb0ENS0_6parserIS2_EEEE", "vtable for llvm::cl::opt>"}, + {"_ZTVN4llvm17DominatorTreeBaseINS_17MachineBasicBlockEEE", "vtable for llvm::DominatorTreeBase"}, + {"_ZTVN4llvm2cl3optIPFPNS_12FunctionPassEvELb0ENS_18RegisterPassParserINS_16RegisterRegAllocEEEEE", "vtable for llvm::cl::opt>"}, + {"_ZTVN4llvm18RegisterPassParserINS_16RegisterRegAllocEEE", "vtable for llvm::RegisterPassParser"}, + {"_ZTVN4llvm2cl6parserIPFPNS_12FunctionPassEvEEE", "vtable for llvm::cl::parser"}, + {"_ZTVN4llvm2cl3optI20ShrinkWrapDebugLevelLb0ENS0_6parserIS2_EEEE", "vtable for llvm::cl::opt>"}, + {"_ZTVN4llvm2cl6parserI20ShrinkWrapDebugLevelEE", "vtable for llvm::cl::parser"}, + {"_ZTVN4llvm2cl3optIN12_GLOBAL__N_111SpillerNameELb0ENS0_6parserIS3_EEEE", "vtable for llvm::cl::opt<(anonymous namespace)::SpillerName, false, llvm::cl::parser<(anonymous namespace)::SpillerName>>"}, + {"_ZTVN4llvm2cl6parserIN12_GLOBAL__N_111SpillerNameEEE", "vtable for llvm::cl::parser<(anonymous namespace)::SpillerName>"}, + {"_ZTVN4llvm2cl3optIN12_GLOBAL__N_112RewriterNameELb0ENS0_6parserIS3_EEEE", "vtable for llvm::cl::opt<(anonymous namespace)::RewriterName, false, llvm::cl::parser<(anonymous namespace)::RewriterName>>"}, + {"_ZTVN4llvm2cl6parserIN12_GLOBAL__N_112RewriterNameEEE", "vtable for llvm::cl::parser<(anonymous namespace)::RewriterName>"}, + + // {"_ZTVN4llvm18ValueMapCallbackVHIPKNS_5ValueENS_10TrackingVHIS1_EENS_14ValueMapConfigIS3_EENS_12DenseMapInfoIS5_EEEE", + // "vtable for llvm::ValueMapCallbackVH, llvm::ValueMapConfig, llvm::DenseMapInfo>>"}, + // "vtable for llvm::ValueMapCallbackVH, llvm::ValueMapConfig, llvm::DenseMapInfo>" was returned + + {"_ZTVN4llvm20LoadAndStorePromoterE", "vtable for llvm::LoadAndStorePromoter"}, + {"_ZTVN4llvm6DITypeE", "vtable for llvm::DIType"}, + {"_ZTVN4llvm15DICompositeTypeE", "vtable for llvm::DICompositeType"}, + {"_ZTVN4llvm13DIDerivedTypeE", "vtable for llvm::DIDerivedType"}, + {"_ZTVN4llvm11DIBasicTypeE", "vtable for llvm::DIBasicType"}, + {"_ZTVN4llvm6DIFileE", "vtable for llvm::DIFile"}, + {"_ZTVN4llvm11DINameSpaceE", "vtable for llvm::DINameSpace"}, + {"_ZTVN4llvm13DICompileUnitE", "vtable for llvm::DICompileUnit"}, + {"_ZTVN4llvm14DILexicalBlockE", "vtable for llvm::DILexicalBlock"}, + {"_ZTVN4llvm10FoldingSetINS_4SCEVEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm2cl3optIbLb1ENS0_6parserIbEEEE", "vtable for llvm::cl::opt>"}, + {"_ZTVN4llvm2cl3optIjLb1ENS0_6parserIjEEEE", "vtable for llvm::cl::opt>"}, + {"_ZTVN4llvm2cl3optINS_9CodeModel5ModelELb1ENS0_6parserIS3_EEEE", "vtable for llvm::cl::opt>"}, + {"_ZTVN4llvm2cl6parserINS_9CodeModel5ModelEEE", "vtable for llvm::cl::parser"}, + {"_ZTVN4llvm2cl3optINS_5Reloc5ModelELb1ENS0_6parserIS3_EEEE", "vtable for llvm::cl::opt>"}, + {"_ZTVN4llvm2cl6parserINS_5Reloc5ModelEEE", "vtable for llvm::cl::parser"}, + {"_ZTVN4llvm2cl3optINS_8FloatABI7ABITypeELb1ENS0_6parserIS3_EEEE", "vtable for llvm::cl::opt>"}, + {"_ZTVN4llvm2cl6parserINS_8FloatABI7ABITypeEEE", "vtable for llvm::cl::parser"}, + {"_ZTVN4llvm10FoldingSetINS_17AttributeListImplEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm11ConstantIntE", "vtable for llvm::ConstantInt"}, + {"_ZTVN4llvm25GetElementPtrConstantExprE", "vtable for llvm::GetElementPtrConstantExpr"}, + {"_ZTVN4llvm4UserE", "vtable for llvm::User"}, + {"_ZTVN4llvm19CompareConstantExprE", "vtable for llvm::CompareConstantExpr"}, + {"_ZTVN4llvm24ExtractValueConstantExprE", "vtable for llvm::ExtractValueConstantExpr"}, + {"_ZTVN4llvm23InsertValueConstantExprE", "vtable for llvm::InsertValueConstantExpr"}, + {"_ZTVN4llvm25ShuffleVectorConstantExprE", "vtable for llvm::ShuffleVectorConstantExpr"}, + {"_ZTVN4llvm25InsertElementConstantExprE", "vtable for llvm::InsertElementConstantExpr"}, + {"_ZTVN4llvm26ExtractElementConstantExprE", "vtable for llvm::ExtractElementConstantExpr"}, + {"_ZTVN4llvm18SelectConstantExprE", "vtable for llvm::SelectConstantExpr"}, + {"_ZTVN4llvm18BinaryConstantExprE", "vtable for llvm::BinaryConstantExpr"}, + {"_ZTVN4llvm17UnaryConstantExprE", "vtable for llvm::UnaryConstantExpr"}, + {"_ZTVN4llvm17DominatorTreeBaseINS_10BasicBlockEEE", "vtable for llvm::DominatorTreeBase"}, + {"_ZTVN4llvm8ArgumentE", "vtable for llvm::Argument"}, + {"_ZTVN4llvm10FoldingSetINS_6MDNodeEEE", "vtable for llvm::FoldingSet"}, + {"_ZTVN4llvm17ConstantUniqueMapIcNS_4TypeENS_21ConstantAggregateZeroELb0EEE", "vtable for llvm::ConstantUniqueMap"}, + + // {"_ZTVN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_9ArrayTypeENS_13ConstantArrayELb1EEE", + // "vtable for llvm::ConstantUniqueMap>, llvm::ArrayType, llvm::ConstantArray, true>"}, + // got error + + + // {"_ZTVN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_10StructTypeENS_14ConstantStructELb1EEE", + // "vtable for llvm::ConstantUniqueMap>, llvm::StructType, llvm::ConstantStruct, true>"}, + // got error + + + // {"_ZTVN4llvm17ConstantUniqueMapISt6vectorIPNS_8ConstantESaIS3_EENS_10VectorTypeENS_14ConstantVectorELb0EEE", + // "vtable for llvm::ConstantUniqueMap>, llvm::VectorType, llvm::ConstantVector, false>"}, + // got error + + {"_ZTVN4llvm17ConstantUniqueMapIcNS_11PointerTypeENS_19ConstantPointerNullELb0EEE", "vtable for llvm::ConstantUniqueMap"}, + {"_ZTVN4llvm17ConstantUniqueMapIcNS_4TypeENS_10UndefValueELb0EEE", "vtable for llvm::ConstantUniqueMap"}, + {"_ZTVN4llvm17ConstantUniqueMapINS_14ExprMapKeyTypeENS_4TypeENS_12ConstantExprELb0EEE", "vtable for llvm::ConstantUniqueMap"}, + {"_ZTVN4llvm17ConstantUniqueMapINS_16InlineAsmKeyTypeENS_11PointerTypeENS_9InlineAsmELb0EEE", "vtable for llvm::ConstantUniqueMap"}, + {"_ZTVN4llvm11IntegerTypeE", "vtable for llvm::IntegerType"}, + {"_ZTVN4llvm11DerivedTypeE", "vtable for llvm::DerivedType"}, + {"_ZTVN4llvm8MDStringE", "vtable for llvm::MDString"}, + {"_ZTVN4llvm2cl6parserIPKNS_8PassInfoEEE", "vtable for llvm::cl::parser"}, + {"_ZTVN4llvm2cl4listIPKNS_8PassInfoEbNS_14PassNameParserEEE", "vtable for llvm::cl::list"}, + {"_ZTVN4llvm2cl3optINS_14PassDebugLevelELb0ENS0_6parserIS2_EEEE", "vtable for llvm::cl::opt>"}, + {"_ZTVN4llvm2cl6parserINS_14PassDebugLevelEEE", "vtable for llvm::cl::parser"}, + {"_ZTVN4llvm15PassManagerImplE", "vtable for llvm::PassManagerImpl"}, + {"_ZTVN4llvm23FunctionPassManagerImplE", "vtable for llvm::FunctionPassManagerImpl"}, + {"_ZTVN4llvm10OpaqueTypeE", "vtable for llvm::OpaqueType"}, + {"_ZN4llvm12TheARMTargetE", "llvm::TheARMTarget"}, + {"_ZN4llvm14TheThumbTargetE", "llvm::TheThumbTarget"}, + {"_ZTVN4llvm14format_object1IhEE", "vtable for llvm::format_object1"}, + {"_ZTVN4llvm15MCAlignFragmentE", "vtable for llvm::MCAlignFragment"}, + {"_ZTVN4llvm14MCFillFragmentE", "vtable for llvm::MCFillFragment"}, + {"_ZTVN4llvm14MCDataFragmentE", "vtable for llvm::MCDataFragment"}, + {"_ZTVN4llvm13MCOrgFragmentE", "vtable for llvm::MCOrgFragment"}, + {"_ZTVN4llvm24MCDwarfCallFrameFragmentE", "vtable for llvm::MCDwarfCallFrameFragment"}, + {"_ZTVN4llvm23MCDwarfLineAddrFragmentE", "vtable for llvm::MCDwarfLineAddrFragment"}, + {"_ZTVN4llvm13MCLEBFragmentE", "vtable for llvm::MCLEBFragment"}, + {"_ZN4llvm8MCSymbol21AbsolutePseudoSectionE", "llvm::MCSymbol::AbsolutePseudoSection"}, + {"_ZTVN4llvm14MCInstFragmentE", "vtable for llvm::MCInstFragment"}, + {"_ZN4llvm7APFloat8IEEEhalfE", "llvm::APFloat::IEEEhalf"}, + {"_ZN4llvm7APFloat10IEEEsingleE", "llvm::APFloat::IEEEsingle"}, + {"_ZN4llvm7APFloat10IEEEdoubleE", "llvm::APFloat::IEEEdouble"}, + {"_ZN4llvm7APFloat8IEEEquadE", "llvm::APFloat::IEEEquad"}, + {"_ZN4llvm7APFloat17x87DoubleExtendedE", "llvm::APFloat::x87DoubleExtended"}, + {"_ZN4llvm7APFloat5BogusE", "llvm::APFloat::Bogus"}, + {"_ZN4llvm7APFloat15PPCDoubleDoubleE", "llvm::APFloat::PPCDoubleDouble"}, + {"_ZTVN4llvm2cl12basic_parserIbEE", "vtable for llvm::cl::basic_parser"}, + {"_ZTVN4llvm2cl12basic_parserINS0_13boolOrDefaultEEE", "vtable for llvm::cl::basic_parser"}, + {"_ZTVN4llvm2cl12basic_parserIiEE", "vtable for llvm::cl::basic_parser"}, + {"_ZTVN4llvm2cl12basic_parserIjEE", "vtable for llvm::cl::basic_parser"}, + {"_ZTVN4llvm2cl12basic_parserIdEE", "vtable for llvm::cl::basic_parser"}, + {"_ZTVN4llvm2cl12basic_parserIfEE", "vtable for llvm::cl::basic_parser"}, + {"_ZTVN4llvm2cl12basic_parserISsEE", "vtable for llvm::cl::basic_parser"}, + {"_ZTVN4llvm2cl12basic_parserIcEE", "vtable for llvm::cl::basic_parser"}, + {"_ZTVN4llvm2cl3optIjLb0ENS0_6parserIjEEEE", "vtable for llvm::cl::opt>"}, + {"_ZTVN4llvm2cl3optIiLb0ENS0_6parserIiEEEE", "vtable for llvm::cl::opt>"}, + {"_ZTVN4llvm2cl3optISsLb0ENS0_6parserISsEEEE", "vtable for llvm::cl::opt>"}, + {"_ZTVN4llvm2cl3optIcLb0ENS0_6parserIcEEEE", "vtable for llvm::cl::opt>"}, + {"_ZTVN4llvm2cl3optIbLb0ENS0_6parserIbEEEE", "vtable for llvm::cl::opt>"}, + {"_ZTVN4llvm2cl3optIN12_GLOBAL__N_114VersionPrinterELb1ENS0_6parserIbEEEE", "vtable for llvm::cl::opt<(anonymous namespace)::VersionPrinter, true, llvm::cl::parser>"}, + {"_ZTVN4llvm2cl3optIN12_GLOBAL__N_111HelpPrinterELb1ENS0_6parserIbEEEE", "vtable for llvm::cl::opt<(anonymous namespace)::HelpPrinter, true, llvm::cl::parser>"}, + {"_ZTVN4llvm3sys11ThreadLocalIKN12_GLOBAL__N_124CrashRecoveryContextImplEEE", "vtable for llvm::sys::ThreadLocal<(anonymous namespace)::CrashRecoveryContextImpl const>"}, + {"_ZTVN4llvm3sys11ThreadLocalIKNS_21PrettyStackTraceEntryEEE", "vtable for llvm::sys::ThreadLocal"}, + {"_ZN4llvm3sys9TimeValue7MinTimeE", "llvm::sys::TimeValue::MinTime"}, + {"_ZN4llvm3sys9TimeValue7MaxTimeE", "llvm::sys::TimeValue::MaxTime"}, + {"_ZN4llvm3sys9TimeValue13PosixZeroTimeE", "llvm::sys::TimeValue::PosixZeroTime"}, + {"_ZN4llvm3sys9TimeValue13Win32ZeroTimeE", "llvm::sys::TimeValue::Win32ZeroTime"}, + {"_ZTVN4llvm14format_object1IxEE", "vtable for llvm::format_object1"}, + {"_ZTVN4llvm14format_object1IdEE", "vtable for llvm::format_object1"}, + {"_ZTVN4llvm2cl3optISsLb1ENS0_6parserISsEEEE", "vtable for llvm::cl::opt>"}, + {"_ZZN5clang12_GLOBAL__N_18getNewIdENS0_7tIdTypeEE8idCounts", "clang::(anonymous namespace)::getNewId(clang::(anonymous namespace)::tIdType)::idCounts"}, + {"_ZZN12_GLOBAL__N_126AdjustedReturnValueChecker6getTagEvE1x", "(anonymous namespace)::AdjustedReturnValueChecker::getTag()::x"}, + {"_ZZN12_GLOBAL__N_120AnalyzerStatsChecker6getTagEvE1x", "(anonymous namespace)::AnalyzerStatsChecker::getTag()::x"}, + {"_ZZN12_GLOBAL__N_117ArrayBoundChecker6getTagEvE1x", "(anonymous namespace)::ArrayBoundChecker::getTag()::x"}, + {"_ZZN12_GLOBAL__N_119ArrayBoundCheckerV26getTagEvE1x", "(anonymous namespace)::ArrayBoundCheckerV2::getTag()::x"}, + {"_ZZN12_GLOBAL__N_118AttrNonNullChecker6getTagEvE1x", "(anonymous namespace)::AttrNonNullChecker::getTag()::x"}, + {"_ZZN12_GLOBAL__N_119ClassReleaseChecker6getTagEvE1x", "(anonymous namespace)::ClassReleaseChecker::getTag()::x"}, + {"_ZZN12_GLOBAL__N_122CFRetainReleaseChecker6getTagEvE1x", "(anonymous namespace)::CFRetainReleaseChecker::getTag()::x"}, + {"_ZZN12_GLOBAL__N_121CFNumberCreateChecker6getTagEvE1x", "(anonymous namespace)::CFNumberCreateChecker::getTag()::x"}, + {"_ZZN12_GLOBAL__N_113NilArgChecker6getTagEvE1x", "(anonymous namespace)::NilArgChecker::getTag()::x"}, + {"_ZZN12_GLOBAL__N_122BuiltinFunctionChecker6getTagEvE3tag", "(anonymous namespace)::BuiltinFunctionChecker::getTag()::tag"}, + {"_ZZN12_GLOBAL__N_114CStringChecker6getTagEvE3tag", "(anonymous namespace)::CStringChecker::getTag()::tag"}, + {"_ZZN12_GLOBAL__N_121CallAndMessageChecker6getTagEvE1x", "(anonymous namespace)::CallAndMessageChecker::getTag()::x"}, + {"_ZZN12_GLOBAL__N_115CastSizeChecker6getTagEvE1x", "(anonymous namespace)::CastSizeChecker::getTag()::x"}, + {"_ZZN12_GLOBAL__N_119CastToStructChecker6getTagEvE1x", "(anonymous namespace)::CastToStructChecker::getTag()::x"}, + {"_ZZN12_GLOBAL__N_113ChrootChecker6getTagEvE1x", "(anonymous namespace)::ChrootChecker::getTag()::x"}, + {"_ZZN12_GLOBAL__N_118DereferenceChecker6getTagEvE3tag", "(anonymous namespace)::DereferenceChecker::getTag()::tag"}, + {"_ZZN12_GLOBAL__N_114DivZeroChecker6getTagEvE1x", "(anonymous namespace)::DivZeroChecker::getTag()::x"}, + {"_ZZN5clang4ento10ExprEngine23processCFGBlockEntranceERNS0_15ExplodedNodeSetERNS0_18GenericNodeBuilderINS_13BlockEntranceEEEE3tag", "clang::ento::ExprEngine::processCFGBlockEntrance(clang::ento::ExplodedNodeSet&, clang::ento::GenericNodeBuilder&)::tag"}, + {"_ZZN5clang4ento10ExprEngine8evalLoadERNS0_15ExplodedNodeSetEPKNS_4ExprEPNS0_12ExplodedNodeEPKNS0_7GRStateENS0_4SValEPKvNS_8QualTypeEE16loadReferenceTag", "clang::ento::ExprEngine::evalLoad(clang::ento::ExplodedNodeSet&, clang::Expr const*, clang::ento::ExplodedNode*, clang::ento::GRState const*, clang::ento::SVal, void const*, clang::QualType)::loadReferenceTag"}, + {"_ZZN5clang4ento10ExprEngine15VisitReturnStmtEPKNS_10ReturnStmtEPNS0_12ExplodedNodeERNS0_15ExplodedNodeSetEE3tag", "clang::ento::ExprEngine::VisitReturnStmt(clang::ReturnStmt const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&)::tag"}, + {"_ZN12_GLOBAL__N_110ReturnExpr6TagIntE", "(anonymous namespace)::ReturnExpr::TagInt"}, + {"_ZZN12_GLOBAL__N_119FixedAddressChecker6getTagEvE1x", "(anonymous namespace)::FixedAddressChecker::getTag()::x"}, + {"_ZZN12_GLOBAL__N_126IdempotentOperationChecker6getTagEvE1x", "(anonymous namespace)::IdempotentOperationChecker::getTag()::x"}, + {"_ZZN12_GLOBAL__N_116MacOSXAPIChecker6getTagEvE3tag", "(anonymous namespace)::MacOSXAPIChecker::getTag()::tag"}, + {"_ZZN12_GLOBAL__N_113MallocChecker6getTagEvE1x", "(anonymous namespace)::MallocChecker::getTag()::x"}, + {"_ZZN12_GLOBAL__N_124NSAutoreleasePoolChecker6getTagEvE1x", "(anonymous namespace)::NSAutoreleasePoolChecker::getTag()::x"}, + {"_ZZN12_GLOBAL__N_123NoReturnFunctionChecker6getTagEvE3tag", "(anonymous namespace)::NoReturnFunctionChecker::getTag()::tag"}, + {"_ZZN12_GLOBAL__N_115OSAtomicChecker6getTagEvE3tag", "(anonymous namespace)::OSAtomicChecker::getTag()::tag"}, + + // {"_ZZN12_GLOBAL__N_115OSAtomicChecker26evalOSAtomicCompareAndSwapERN5clang4ento14CheckerContextEPKNS1_8CallExprEE10magic_load", + // "(anonymous namespace)::OSAtomicChecker::evalOSAtomicCompareAndSwap(clang::ento::CheckerContext&, clang::CallExpr const*)::magic_load"}, + // "(anonymous namespace)::OSAtomicChecker::evalOSAtomicCompareAndSwap(clang::ento::CheckerContext&, (anonymous namespace)::OSAtomicChecker::evalOSAtomicCompareAndSwap::CallExpr const*)::magic_load" was returned + + + // {"_ZZN12_GLOBAL__N_115OSAtomicChecker26evalOSAtomicCompareAndSwapERN5clang4ento14CheckerContextEPKNS1_8CallExprEE11magic_store", + // "(anonymous namespace)::OSAtomicChecker::evalOSAtomicCompareAndSwap(clang::ento::CheckerContext&, clang::CallExpr const*)::magic_store"}, + // "(anonymous namespace)::OSAtomicChecker::evalOSAtomicCompareAndSwap(clang::ento::CheckerContext&, (anonymous namespace)::OSAtomicChecker::evalOSAtomicCompareAndSwap::CallExpr const*)::magic_store" was returned + + {"_ZZN12_GLOBAL__N_117ObjCAtSyncChecker6getTagEvE3tag", "(anonymous namespace)::ObjCAtSyncChecker::getTag()::tag"}, + {"_ZZN12_GLOBAL__N_119ObjCSelfInitChecker6getTagEvE3tag", "(anonymous namespace)::ObjCSelfInitChecker::getTag()::tag"}, + {"_ZZN12_GLOBAL__N_119PointerArithChecker6getTagEvE1x", "(anonymous namespace)::PointerArithChecker::getTag()::x"}, + {"_ZZN12_GLOBAL__N_117PointerSubChecker6getTagEvE1x", "(anonymous namespace)::PointerSubChecker::getTag()::x"}, + {"_ZZN12_GLOBAL__N_118PthreadLockChecker6getTagEvE1x", "(anonymous namespace)::PthreadLockChecker::getTag()::x"}, + {"_ZZN12_GLOBAL__N_125ReturnPointerRangeChecker6getTagEvE1x", "(anonymous namespace)::ReturnPointerRangeChecker::getTag()::x"}, + {"_ZZN12_GLOBAL__N_118ReturnUndefChecker6getTagEvE1x", "(anonymous namespace)::ReturnUndefChecker::getTag()::x"}, + {"_ZZN12_GLOBAL__N_120StackAddrLeakChecker6getTagEvE1x", "(anonymous namespace)::StackAddrLeakChecker::getTag()::x"}, + {"_ZZN12_GLOBAL__N_113StreamChecker6getTagEvE1x", "(anonymous namespace)::StreamChecker::getTag()::x"}, + {"_ZZN12_GLOBAL__N_118UndefBranchChecker6getTagEvE1x", "(anonymous namespace)::UndefBranchChecker::getTag()::x"}, + {"_ZZN12_GLOBAL__N_128UndefCapturedBlockVarChecker6getTagEvE3tag", "(anonymous namespace)::UndefCapturedBlockVarChecker::getTag()::tag"}, + {"_ZZN12_GLOBAL__N_118UndefResultChecker6getTagEvE3tag", "(anonymous namespace)::UndefResultChecker::getTag()::tag"}, + {"_ZZN12_GLOBAL__N_130UndefinedArraySubscriptChecker6getTagEvE1x", "(anonymous namespace)::UndefinedArraySubscriptChecker::getTag()::x"}, + {"_ZZN12_GLOBAL__N_126UndefinedAssignmentChecker6getTagEvE1x", "(anonymous namespace)::UndefinedAssignmentChecker::getTag()::x"}, + {"_ZZN12_GLOBAL__N_114UnixAPIChecker6getTagEvE3tag", "(anonymous namespace)::UnixAPIChecker::getTag()::tag"}, + {"_ZZN12_GLOBAL__N_122UnreachableCodeChecker6getTagEvE1x", "(anonymous namespace)::UnreachableCodeChecker::getTag()::x"}, + {"_ZZN12_GLOBAL__N_114VLASizeChecker6getTagEvE3tag", "(anonymous namespace)::VLASizeChecker::getTag()::tag"}, + + // {"_ZZ18IsCachedDiagnosticPN5clang4ento9BugReportEPNS0_14PathDiagnosticEE2DC", + // "IsCachedDiagnostic(clang::ento::BugReport*, clang::ento::PathDiagnostic*)::DC"}, + // "IsCachedDiagnostic(clang::ento::BugReport*, clang::PathDiagnostic*)::DC" was returned + + + // {"_ZGVZ18IsCachedDiagnosticPN5clang4ento9BugReportEPNS0_14PathDiagnosticEE2DC", + // "guard variable for IsCachedDiagnostic(clang::ento::BugReport*, clang::ento::PathDiagnostic*)::DC"}, + // "guard variable for IsCachedDiagnostic(clang::ento::BugReport*, clang::PathDiagnostic*)::DC" was returned + + + // {"_ZZNK12_GLOBAL__N_118NilReceiverVisitor7ProfileERN4llvm16FoldingSetNodeIDEE1x", + // "(anonymous namespace)::NilReceiverVisitor::Profile(llvm::FoldingSetNodeID&) const::x"}, + // "(anonymous namespace)::NilReceiverVisitor::Profile(llvm::FoldingSetNodeID&)::x const" was returned + + + // {"_ZZNK12_GLOBAL__N_122FindLastStoreBRVisitor7ProfileERN4llvm16FoldingSetNodeIDEE3tag", + // "(anonymous namespace)::FindLastStoreBRVisitor::Profile(llvm::FoldingSetNodeID&) const::tag"}, + // "(anonymous namespace)::FindLastStoreBRVisitor::Profile(llvm::FoldingSetNodeID&)::tag const" was returned + + + // {"_ZZNK12_GLOBAL__N_124TrackConstraintBRVisitor7ProfileERN4llvm16FoldingSetNodeIDEE3tag", + // "(anonymous namespace)::TrackConstraintBRVisitor::Profile(llvm::FoldingSetNodeID&) const::tag"}, + // "(anonymous namespace)::TrackConstraintBRVisitor::Profile(llvm::FoldingSetNodeID&)::tag const" was returned + + {"_ZZN5clang4ento12GRStateTraitIN4llvm12ImmutableMapIPKNS0_10SymbolDataEN12_GLOBAL__N_16RefValENS2_16ImutKeyValueInfoIS6_S8_EEEEE8GDMIndexEvE9RefBIndex", "clang::ento::GRStateTrait>>::GDMIndex()::RefBIndex"}, + + // {"_ZZN12_GLOBAL__N_110CFRefCount10evalReturnERN5clang4ento15ExplodedNodeSetERNS2_10ExprEngineERNS2_15StmtNodeBuilderEPKNS1_10ReturnStmtEPNS2_12ExplodedNodeEE14autoreleasetag", + // "(anonymous namespace)::CFRefCount::evalReturn(clang::ento::ExplodedNodeSet&, clang::ento::ExprEngine&, clang::ento::StmtNodeBuilder&, clang::ReturnStmt const*, clang::ento::ExplodedNode*)::autoreleasetag"}, + // "(anonymous namespace)::CFRefCount::evalReturn(clang::ento::ExplodedNodeSet&, clang::ExprEngine&, clang::StmtNodeBuilder&, (anonymous namespace)::CFRefCount::evalReturn::ReturnStmt const*, clang::ExplodedNode*)::autoreleasetag" was returned + + + // {"_ZZN12_GLOBAL__N_110CFRefCount10evalReturnERN5clang4ento15ExplodedNodeSetERNS2_10ExprEngineERNS2_15StmtNodeBuilderEPKNS1_10ReturnStmtEPNS2_12ExplodedNodeEE16ReturnOwnLeakTag", + // "(anonymous namespace)::CFRefCount::evalReturn(clang::ento::ExplodedNodeSet&, clang::ento::ExprEngine&, clang::ento::StmtNodeBuilder&, clang::ReturnStmt const*, clang::ento::ExplodedNode*)::ReturnOwnLeakTag"}, + // "(anonymous namespace)::CFRefCount::evalReturn(clang::ento::ExplodedNodeSet&, clang::ExprEngine&, clang::StmtNodeBuilder&, (anonymous namespace)::CFRefCount::evalReturn::ReturnStmt const*, clang::ExplodedNode*)::ReturnOwnLeakTag" was returned + + + // {"_ZZN12_GLOBAL__N_110CFRefCount10evalReturnERN5clang4ento15ExplodedNodeSetERNS2_10ExprEngineERNS2_15StmtNodeBuilderEPKNS1_10ReturnStmtEPNS2_12ExplodedNodeEE25ReturnNotOwnedForOwnedTag", + // "(anonymous namespace)::CFRefCount::evalReturn(clang::ento::ExplodedNodeSet&, clang::ento::ExprEngine&, clang::ento::StmtNodeBuilder&, clang::ReturnStmt const*, clang::ento::ExplodedNode*)::ReturnNotOwnedForOwnedTag"}, + // "(anonymous namespace)::CFRefCount::evalReturn(clang::ento::ExplodedNodeSet&, clang::ExprEngine&, clang::StmtNodeBuilder&, (anonymous namespace)::CFRefCount::evalReturn::ReturnStmt const*, clang::ExplodedNode*)::ReturnNotOwnedForOwnedTag" was returned + + + // {"_ZZN12_GLOBAL__N_110CFRefCount15evalDeadSymbolsERN5clang4ento15ExplodedNodeSetERNS2_10ExprEngineERNS2_15StmtNodeBuilderEPNS2_12ExplodedNodeEPKNS2_7GRStateERNS2_12SymbolReaperEE9LeakPPTag", + // "(anonymous namespace)::CFRefCount::evalDeadSymbols(clang::ento::ExplodedNodeSet&, clang::ento::ExprEngine&, clang::ento::StmtNodeBuilder&, clang::ento::ExplodedNode*, clang::ento::GRState const*, clang::ento::SymbolReaper&)::LeakPPTag"}, + // "(anonymous namespace)::CFRefCount::evalDeadSymbols(clang::ento::ExplodedNodeSet&, clang::ExprEngine&, clang::StmtNodeBuilder&, clang::ExplodedNode*, clang::GRState const*, clang::SymbolReaper&)::LeakPPTag" was returned + + {"_ZZN12_GLOBAL__N_120RetainReleaseChecker6getTagEvE1x", "(anonymous namespace)::RetainReleaseChecker::getTag()::x"}, + {"_ZZN5clang4ento14CheckerContextD1EvE17autoTransitionTag", "clang::ento::CheckerContext::~CheckerContext()::autoTransitionTag"}, + {"_ZZN12_GLOBAL__N_111RewriteObjC38RewriteFunctionBodyOrGlobalInitializerEPN5clang4StmtEE20uniqueByrefDeclCount", "(anonymous namespace)::RewriteObjC::RewriteFunctionBodyOrGlobalInitializer(clang::Stmt*)::uniqueByrefDeclCount"}, + {"_ZZN5clang22getClangRepositoryPathEvE13SVNRepository", "clang::getClangRepositoryPath()::SVNRepository"}, + {"_ZGVZN5clang22getClangRepositoryPathEvE13SVNRepository", "guard variable for clang::getClangRepositoryPath()::SVNRepository"}, + {"_ZZN4llvm26initializeArgPromotionPassERNS_12PassRegistryEE11initialized", "llvm::initializeArgPromotionPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_112ArgPromotion2IDE", "(anonymous namespace)::ArgPromotion::ID"}, + {"_ZZN4llvm27initializeConstantMergePassERNS_12PassRegistryEE11initialized", "llvm::initializeConstantMergePass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_113ConstantMerge2IDE", "(anonymous namespace)::ConstantMerge::ID"}, + {"_ZZN4llvm17initializeDAEPassERNS_12PassRegistryEE11initialized", "llvm::initializeDAEPass(llvm::PassRegistry&)::initialized"}, + {"_ZZN4llvm17initializeDAHPassERNS_12PassRegistryEE11initialized", "llvm::initializeDAHPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_13DAH2IDE", "(anonymous namespace)::DAH::ID"}, + {"_ZN12_GLOBAL__N_13DAE2IDE", "(anonymous namespace)::DAE::ID"}, + {"_ZZN4llvm17initializeDTEPassERNS_12PassRegistryEE11initialized", "llvm::initializeDTEPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_13DTE2IDE", "(anonymous namespace)::DTE::ID"}, + {"_ZZN4llvm27initializeFunctionAttrsPassERNS_12PassRegistryEE11initialized", "llvm::initializeFunctionAttrsPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_113FunctionAttrs2IDE", "(anonymous namespace)::FunctionAttrs::ID"}, + {"_ZZN4llvm23initializeGlobalDCEPassERNS_12PassRegistryEE11initialized", "llvm::initializeGlobalDCEPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_19GlobalDCE2IDE", "(anonymous namespace)::GlobalDCE::ID"}, + {"_ZZN4llvm23initializeGlobalOptPassERNS_12PassRegistryEE11initialized", "llvm::initializeGlobalOptPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_19GlobalOpt2IDE", "(anonymous namespace)::GlobalOpt::ID"}, + {"_ZZN4llvm27initializeAlwaysInlinerPassERNS_12PassRegistryEE11initialized", "llvm::initializeAlwaysInlinerPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_113AlwaysInliner2IDE", "(anonymous namespace)::AlwaysInliner::ID"}, + {"_ZZN4llvm27initializeSimpleInlinerPassERNS_12PassRegistryEE11initialized", "llvm::initializeSimpleInlinerPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_113SimpleInliner2IDE", "(anonymous namespace)::SimpleInliner::ID"}, + {"_ZZN4llvm21initializePruneEHPassERNS_12PassRegistryEE11initialized", "llvm::initializePruneEHPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_17PruneEH2IDE", "(anonymous namespace)::PruneEH::ID"}, + {"_ZZN4llvm37initializeStripDeadPrototypesPassPassERNS_12PassRegistryEE11initialized", "llvm::initializeStripDeadPrototypesPassPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_123StripDeadPrototypesPass2IDE", "(anonymous namespace)::StripDeadPrototypesPass::ID"}, + {"_ZN12_GLOBAL__N_116WriteBitcodePass2IDE", "(anonymous namespace)::WriteBitcodePass::ID"}, + {"_ZN12_GLOBAL__N_116SSEDomainFixPass2IDE", "(anonymous namespace)::SSEDomainFixPass::ID"}, + {"_ZN12_GLOBAL__N_17EmitterIN4llvm14JITCodeEmitterEE2IDE", "(anonymous namespace)::Emitter::ID"}, + {"_ZN12_GLOBAL__N_13FPS2IDE", "(anonymous namespace)::FPS::ID"}, + {"_ZZN4llvm17X86TargetLoweringC1ERNS_16X86TargetMachineEE6IntVTs", "llvm::X86TargetLowering::X86TargetLowering(llvm::X86TargetMachine&)::IntVTs"}, + {"_ZGVZN4llvm17X86TargetLoweringC1ERNS_16X86TargetMachineEE6IntVTs", "guard variable for llvm::X86TargetLowering::X86TargetLowering(llvm::X86TargetMachine&)::IntVTs"}, + {"_ZN12_GLOBAL__N_14CGBR2IDE", "(anonymous namespace)::CGBR::ID"}, + {"_ZN12_GLOBAL__N_14MSAH2IDE", "(anonymous namespace)::MSAH::ID"}, + {"_ZN12_GLOBAL__N_114ARMCodeEmitter2IDE", "(anonymous namespace)::ARMCodeEmitter::ID"}, + {"_ZN12_GLOBAL__N_118ARMConstantIslands2IDE", "(anonymous namespace)::ARMConstantIslands::ID"}, + {"_ZN12_GLOBAL__N_115ARMExpandPseudo2IDE", "(anonymous namespace)::ARMExpandPseudo::ID"}, + {"_ZN12_GLOBAL__N_114ARMGlobalMerge2IDE", "(anonymous namespace)::ARMGlobalMerge::ID"}, + {"_ZN12_GLOBAL__N_115ARMLoadStoreOpt2IDE", "(anonymous namespace)::ARMLoadStoreOpt::ID"}, + {"_ZN12_GLOBAL__N_123ARMPreAllocLoadStoreOpt2IDE", "(anonymous namespace)::ARMPreAllocLoadStoreOpt::ID"}, + {"_ZN12_GLOBAL__N_112MLxExpansion2IDE", "(anonymous namespace)::MLxExpansion::ID"}, + {"_ZN12_GLOBAL__N_115NEONMoveFixPass2IDE", "(anonymous namespace)::NEONMoveFixPass::ID"}, + {"_ZN12_GLOBAL__N_117Thumb2ITBlockPass2IDE", "(anonymous namespace)::Thumb2ITBlockPass::ID"}, + {"_ZN12_GLOBAL__N_116Thumb2SizeReduce2IDE", "(anonymous namespace)::Thumb2SizeReduce::ID"}, + {"_ZZN12_GLOBAL__N_120SelectionDAGLegalize10LegalizeOpEN4llvm7SDValueEE5depth", "(anonymous namespace)::SelectionDAGLegalize::LegalizeOp(llvm::SDValue)::depth"}, + {"_ZZN4llvm10DwarfDebug21computeSizeAndOffsetsEvE6Offset", "llvm::DwarfDebug::computeSizeAndOffsets()::Offset"}, + {"_ZGVZN4llvm10DwarfDebug21computeSizeAndOffsetsEvE6Offset", "guard variable for llvm::DwarfDebug::computeSizeAndOffsets()::Offset"}, + {"_ZN12_GLOBAL__N_116BranchFolderPass2IDE", "(anonymous namespace)::BranchFolderPass::ID"}, + {"_ZZN4llvm35initializeCalculateSpillWeightsPassERNS_12PassRegistryEE11initialized", "llvm::initializeCalculateSpillWeightsPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_116CodePlacementOpt2IDE", "(anonymous namespace)::CodePlacementOpt::ID"}, + {"_ZZN4llvm40initializeDeadMachineInstructionElimPassERNS_12PassRegistryEE11initialized", "llvm::initializeDeadMachineInstructionElimPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_126DeadMachineInstructionElim2IDE", "(anonymous namespace)::DeadMachineInstructionElim::ID"}, + {"_ZN12_GLOBAL__N_114DwarfEHPrepare2IDE", "(anonymous namespace)::DwarfEHPrepare::ID"}, + {"_ZZN4llvm25initializeEdgeBundlesPassERNS_12PassRegistryEE11initialized", "llvm::initializeEdgeBundlesPass(llvm::PassRegistry&)::initialized"}, + {"_ZZN4llvm31initializeExpandISelPseudosPassERNS_12PassRegistryEE11initialized", "llvm::initializeExpandISelPseudosPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_117ExpandISelPseudos2IDE", "(anonymous namespace)::ExpandISelPseudos::ID"}, + {"_ZZN4llvm26initializeGCModuleInfoPassERNS_12PassRegistryEE11initialized", "llvm::initializeGCModuleInfoPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_17Deleter2IDE", "(anonymous namespace)::Deleter::ID"}, + {"_ZN12_GLOBAL__N_17Printer2IDE", "(anonymous namespace)::Printer::ID"}, + {"_ZZN4llvm29initializeLowerIntrinsicsPassERNS_12PassRegistryEE11initialized", "llvm::initializeLowerIntrinsicsPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_119MachineCodeAnalysis2IDE", "(anonymous namespace)::MachineCodeAnalysis::ID"}, + {"_ZN12_GLOBAL__N_115LowerIntrinsics2IDE", "(anonymous namespace)::LowerIntrinsics::ID"}, + {"_ZZN4llvm25initializeIfConverterPassERNS_12PassRegistryEE11initialized", "llvm::initializeIfConverterPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_111IfConverter2IDE", "(anonymous namespace)::IfConverter::ID"}, + {"_ZZN4llvm32initializeLiveDebugVariablesPassERNS_12PassRegistryEE11initialized", "llvm::initializeLiveDebugVariablesPass(llvm::PassRegistry&)::initialized"}, + {"_ZZN4llvm27initializeLiveIntervalsPassERNS_12PassRegistryEE11initialized", "llvm::initializeLiveIntervalsPass(llvm::PassRegistry&)::initialized"}, + {"_ZZN4llvm24initializeLiveStacksPassERNS_12PassRegistryEE11initialized", "llvm::initializeLiveStacksPass(llvm::PassRegistry&)::initialized"}, + {"_ZZN4llvm27initializeLiveVariablesPassERNS_12PassRegistryEE11initialized", "llvm::initializeLiveVariablesPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_118LocalStackSlotPass2IDE", "(anonymous namespace)::LocalStackSlotPass::ID"}, + {"_ZN12_GLOBAL__N_127LowerSubregsInstructionPass2IDE", "(anonymous namespace)::LowerSubregsInstructionPass::ID"}, + {"_ZZN4llvm24initializeMachineCSEPassERNS_12PassRegistryEE11initialized", "llvm::initializeMachineCSEPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_110MachineCSE2IDE", "(anonymous namespace)::MachineCSE::ID"}, + {"_ZZN4llvm34initializeMachineDominatorTreePassERNS_12PassRegistryEE11initialized", "llvm::initializeMachineDominatorTreePass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_126MachineFunctionPrinterPass2IDE", "(anonymous namespace)::MachineFunctionPrinterPass::ID"}, + {"_ZZN4llvm25initializeMachineLICMPassERNS_12PassRegistryEE11initialized", "llvm::initializeMachineLICMPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_111MachineLICM2IDE", "(anonymous namespace)::MachineLICM::ID"}, + {"_ZZN4llvm29initializeMachineLoopInfoPassERNS_12PassRegistryEE11initialized", "llvm::initializeMachineLoopInfoPass(llvm::PassRegistry&)::initialized"}, + {"_ZZN4llvm31initializeMachineModuleInfoPassERNS_12PassRegistryEE11initialized", "llvm::initializeMachineModuleInfoPass(llvm::PassRegistry&)::initialized"}, + {"_ZZN4llvm28initializeMachineSinkingPassERNS_12PassRegistryEE11initialized", "llvm::initializeMachineSinkingPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_114MachineSinking2IDE", "(anonymous namespace)::MachineSinking::ID"}, + {"_ZZN4llvm33initializeMachineVerifierPassPassERNS_12PassRegistryEE11initialized", "llvm::initializeMachineVerifierPassPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_119MachineVerifierPass2IDE", "(anonymous namespace)::MachineVerifierPass::ID"}, + {"_ZZN4llvm26initializeOptimizePHIsPassERNS_12PassRegistryEE11initialized", "llvm::initializeOptimizePHIsPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_112OptimizePHIs2IDE", "(anonymous namespace)::OptimizePHIs::ID"}, + {"_ZZN4llvm28initializePHIEliminationPassERNS_12PassRegistryEE11initialized", "llvm::initializePHIEliminationPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_114PHIElimination2IDE", "(anonymous namespace)::PHIElimination::ID"}, + {"_ZZN4llvm31initializePeepholeOptimizerPassERNS_12PassRegistryEE11initialized", "llvm::initializePeepholeOptimizerPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_117PeepholeOptimizer2IDE", "(anonymous namespace)::PeepholeOptimizer::ID"}, + {"_ZN12_GLOBAL__N_115PostRAScheduler2IDE", "(anonymous namespace)::PostRAScheduler::ID"}, + {"_ZZN4llvm31initializePreAllocSplittingPassERNS_12PassRegistryEE11initialized", "llvm::initializePreAllocSplittingPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_117PreAllocSplitting2IDE", "(anonymous namespace)::PreAllocSplitting::ID"}, + {"_ZZN4llvm33initializeProcessImplicitDefsPassERNS_12PassRegistryEE11initialized", "llvm::initializeProcessImplicitDefsPass(llvm::PassRegistry&)::initialized"}, + {"_ZZN4llvm17initializePEIPassERNS_12PassRegistryEE11initialized", "llvm::initializePEIPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_16RAFast2IDE", "(anonymous namespace)::RAFast::ID"}, + {"_ZZN4llvm23initializeRALinScanPassERNS_12PassRegistryEE11initialized", "llvm::initializeRALinScanPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_19RALinScan2IDE", "(anonymous namespace)::RALinScan::ID"}, + {"_ZZN4llvm40initializeRegisterCoalescerAnalysisGroupERNS_12PassRegistryEE11initialized", "llvm::initializeRegisterCoalescerAnalysisGroup(llvm::PassRegistry&)::initialized"}, + {"_ZZN4llvm38initializeSimpleRegisterCoalescingPassERNS_12PassRegistryEE11initialized", "llvm::initializeSimpleRegisterCoalescingPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_110SjLjEHPass2IDE", "(anonymous namespace)::SjLjEHPass::ID"}, + {"_ZN12_GLOBAL__N_122IndexListEntryEmptyKeyE", "(anonymous namespace)::IndexListEntryEmptyKey"}, + {"_ZN12_GLOBAL__N_126IndexListEntryTombstoneKeyE", "(anonymous namespace)::IndexListEntryTombstoneKey"}, + {"_ZZN4llvm25initializeSlotIndexesPassERNS_12PassRegistryEE11initialized", "llvm::initializeSlotIndexesPass(llvm::PassRegistry&)::initialized"}, + {"_ZZN4llvm28initializeStackProtectorPassERNS_12PassRegistryEE11initialized", "llvm::initializeStackProtectorPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_114StackProtector2IDE", "(anonymous namespace)::StackProtector::ID"}, + {"_ZZN4llvm31initializeStackSlotColoringPassERNS_12PassRegistryEE11initialized", "llvm::initializeStackSlotColoringPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_117StackSlotColoring2IDE", "(anonymous namespace)::StackSlotColoring::ID"}, + {"_ZZN4llvm34initializeStrongPHIEliminationPassERNS_12PassRegistryEE11initialized", "llvm::initializeStrongPHIEliminationPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_120StrongPHIElimination2IDE", "(anonymous namespace)::StrongPHIElimination::ID"}, + {"_ZN12_GLOBAL__N_117TailDuplicatePass2IDE", "(anonymous namespace)::TailDuplicatePass::ID"}, + {"_ZZN4llvm39initializeTwoAddressInstructionPassPassERNS_12PassRegistryEE11initialized", "llvm::initializeTwoAddressInstructionPassPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_125TwoAddressInstructionPass2IDE", "(anonymous namespace)::TwoAddressInstructionPass::ID"}, + {"_ZZN4llvm34initializeUnreachableBlockElimPassERNS_12PassRegistryEE11initialized", "llvm::initializeUnreachableBlockElimPass(llvm::PassRegistry&)::initialized"}, + {"_ZZN4llvm41initializeUnreachableMachineBlockElimPassERNS_12PassRegistryEE11initialized", "llvm::initializeUnreachableMachineBlockElimPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_127UnreachableMachineBlockElim2IDE", "(anonymous namespace)::UnreachableMachineBlockElim::ID"}, + {"_ZN12_GLOBAL__N_120UnreachableBlockElim2IDE", "(anonymous namespace)::UnreachableBlockElim::ID"}, + {"_ZZN4llvm24initializeVirtRegMapPassERNS_12PassRegistryEE11initialized", "llvm::initializeVirtRegMapPass(llvm::PassRegistry&)::initialized"}, + {"_ZZN4llvm18initializeADCEPassERNS_12PassRegistryEE11initialized", "llvm::initializeADCEPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_14ADCE2IDE", "(anonymous namespace)::ADCE::ID"}, + {"_ZZN4llvm28initializeCodeGenPreparePassERNS_12PassRegistryEE11initialized", "llvm::initializeCodeGenPreparePass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_114CodeGenPrepare2IDE", "(anonymous namespace)::CodeGenPrepare::ID"}, + {"_ZZN4llvm40initializeCorrelatedValuePropagationPassERNS_12PassRegistryEE11initialized", "llvm::initializeCorrelatedValuePropagationPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_126CorrelatedValuePropagation2IDE", "(anonymous namespace)::CorrelatedValuePropagation::ID"}, + {"_ZZN4llvm17initializeDSEPassERNS_12PassRegistryEE11initialized", "llvm::initializeDSEPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_13DSE2IDE", "(anonymous namespace)::DSE::ID"}, + {"_ZZN4llvm22initializeEarlyCSEPassERNS_12PassRegistryEE11initialized", "llvm::initializeEarlyCSEPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_18EarlyCSE2IDE", "(anonymous namespace)::EarlyCSE::ID"}, + {"_ZZN4llvm25initializeGEPSplitterPassERNS_12PassRegistryEE11initialized", "llvm::initializeGEPSplitterPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_111GEPSplitter2IDE", "(anonymous namespace)::GEPSplitter::ID"}, + {"_ZZN4llvm17initializeGVNPassERNS_12PassRegistryEE11initialized", "llvm::initializeGVNPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_13GVN2IDE", "(anonymous namespace)::GVN::ID"}, + {"_ZZN4llvm28initializeIndVarSimplifyPassERNS_12PassRegistryEE11initialized", "llvm::initializeIndVarSimplifyPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_114IndVarSimplify2IDE", "(anonymous namespace)::IndVarSimplify::ID"}, + {"_ZZN4llvm27initializeJumpThreadingPassERNS_12PassRegistryEE11initialized", "llvm::initializeJumpThreadingPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_113JumpThreading2IDE", "(anonymous namespace)::JumpThreading::ID"}, + {"_ZZN4llvm18initializeLICMPassERNS_12PassRegistryEE11initialized", "llvm::initializeLICMPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_14LICM2IDE", "(anonymous namespace)::LICM::ID"}, + {"_ZZN4llvm26initializeLoopDeletionPassERNS_12PassRegistryEE11initialized", "llvm::initializeLoopDeletionPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_112LoopDeletion2IDE", "(anonymous namespace)::LoopDeletion::ID"}, + {"_ZZN4llvm32initializeLoopIdiomRecognizePassERNS_12PassRegistryEE11initialized", "llvm::initializeLoopIdiomRecognizePass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_118LoopIdiomRecognize2IDE", "(anonymous namespace)::LoopIdiomRecognize::ID"}, + {"_ZZN4llvm24initializeLoopRotatePassERNS_12PassRegistryEE11initialized", "llvm::initializeLoopRotatePass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_110LoopRotate2IDE", "(anonymous namespace)::LoopRotate::ID"}, + {"_ZZN4llvm32initializeLoopStrengthReducePassERNS_12PassRegistryEE11initialized", "llvm::initializeLoopStrengthReducePass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_118LoopStrengthReduce2IDE", "(anonymous namespace)::LoopStrengthReduce::ID"}, + {"_ZZN4llvm24initializeLoopUnrollPassERNS_12PassRegistryEE11initialized", "llvm::initializeLoopUnrollPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_110LoopUnroll2IDE", "(anonymous namespace)::LoopUnroll::ID"}, + {"_ZZN4llvm26initializeLoopUnswitchPassERNS_12PassRegistryEE11initialized", "llvm::initializeLoopUnswitchPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_112LoopUnswitch2IDE", "(anonymous namespace)::LoopUnswitch::ID"}, + {"_ZZN4llvm23initializeMemCpyOptPassERNS_12PassRegistryEE11initialized", "llvm::initializeMemCpyOptPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_19MemCpyOpt2IDE", "(anonymous namespace)::MemCpyOpt::ID"}, + {"_ZZN4llvm25initializeReassociatePassERNS_12PassRegistryEE11initialized", "llvm::initializeReassociatePass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_111Reassociate2IDE", "(anonymous namespace)::Reassociate::ID"}, + {"_ZZN4llvm18initializeSCCPPassERNS_12PassRegistryEE11initialized", "llvm::initializeSCCPPass(llvm::PassRegistry&)::initialized"}, + {"_ZZN4llvm20initializeIPSCCPPassERNS_12PassRegistryEE11initialized", "llvm::initializeIPSCCPPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_16IPSCCP2IDE", "(anonymous namespace)::IPSCCP::ID"}, + {"_ZN12_GLOBAL__N_14SCCP2IDE", "(anonymous namespace)::SCCP::ID"}, + {"_ZZN4llvm21initializeSROA_DTPassERNS_12PassRegistryEE11initialized", "llvm::initializeSROA_DTPass(llvm::PassRegistry&)::initialized"}, + {"_ZZN4llvm24initializeSROA_SSAUpPassERNS_12PassRegistryEE11initialized", "llvm::initializeSROA_SSAUpPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_110SROA_SSAUp2IDE", "(anonymous namespace)::SROA_SSAUp::ID"}, + {"_ZN12_GLOBAL__N_17SROA_DT2IDE", "(anonymous namespace)::SROA_DT::ID"}, + {"_ZZN4llvm29initializeCFGSimplifyPassPassERNS_12PassRegistryEE11initialized", "llvm::initializeCFGSimplifyPassPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_115CFGSimplifyPass2IDE", "(anonymous namespace)::CFGSimplifyPass::ID"}, + {"_ZZN4llvm30initializeSimplifyLibCallsPassERNS_12PassRegistryEE11initialized", "llvm::initializeSimplifyLibCallsPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_116SimplifyLibCalls2IDE", "(anonymous namespace)::SimplifyLibCalls::ID"}, + {"_ZZN4llvm26initializeTailCallElimPassERNS_12PassRegistryEE11initialized", "llvm::initializeTailCallElimPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_112TailCallElim2IDE", "(anonymous namespace)::TailCallElim::ID"}, + {"_ZZN4llvm26initializeInstCombinerPassERNS_12PassRegistryEE11initialized", "llvm::initializeInstCombinerPass(llvm::PassRegistry&)::initialized"}, + {"_ZZN4llvm32initializeBreakCriticalEdgesPassERNS_12PassRegistryEE11initialized", "llvm::initializeBreakCriticalEdgesPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_118BreakCriticalEdges2IDE", "(anonymous namespace)::BreakCriticalEdges::ID"}, + {"_ZZN4llvm19initializeLCSSAPassERNS_12PassRegistryEE11initialized", "llvm::initializeLCSSAPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_15LCSSA2IDE", "(anonymous namespace)::LCSSA::ID"}, + {"_ZZN4llvm26initializeLoopSimplifyPassERNS_12PassRegistryEE11initialized", "llvm::initializeLoopSimplifyPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_112LoopSimplify2IDE", "(anonymous namespace)::LoopSimplify::ID"}, + {"_ZZN4llvm25initializeLowerInvokePassERNS_12PassRegistryEE11initialized", "llvm::initializeLowerInvokePass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_111LowerInvoke2IDE", "(anonymous namespace)::LowerInvoke::ID"}, + {"_ZZN4llvm25initializeLowerSwitchPassERNS_12PassRegistryEE11initialized", "llvm::initializeLowerSwitchPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_111LowerSwitch2IDE", "(anonymous namespace)::LowerSwitch::ID"}, + {"_ZZN4llvm36initializeUnifyFunctionExitNodesPassERNS_12PassRegistryEE11initialized", "llvm::initializeUnifyFunctionExitNodesPass(llvm::PassRegistry&)::initialized"}, + {"_ZZN4llvm32initializeCallGraphAnalysisGroupERNS_12PassRegistryEE11initialized", "llvm::initializeCallGraphAnalysisGroup(llvm::PassRegistry&)::initialized"}, + {"_ZZN4llvm28initializeBasicCallGraphPassERNS_12PassRegistryEE11initialized", "llvm::initializeBasicCallGraphPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_114BasicCallGraph2IDE", "(anonymous namespace)::BasicCallGraph::ID"}, + {"_ZN12_GLOBAL__N_118PrintCallGraphPass2IDE", "(anonymous namespace)::PrintCallGraphPass::ID"}, + {"_ZN12_GLOBAL__N_113CGPassManager2IDE", "(anonymous namespace)::CGPassManager::ID"}, + {"_ZZN4llvm27initializeFindUsedTypesPassERNS_12PassRegistryEE11initialized", "llvm::initializeFindUsedTypesPass(llvm::PassRegistry&)::initialized"}, + {"_ZZN4llvm36initializeAliasAnalysisAnalysisGroupERNS_12PassRegistryEE11initialized", "llvm::initializeAliasAnalysisAnalysisGroup(llvm::PassRegistry&)::initialized"}, + {"_ZZN4llvm29initializeAliasSetPrinterPassERNS_12PassRegistryEE11initialized", "llvm::initializeAliasSetPrinterPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_115AliasSetPrinter2IDE", "(anonymous namespace)::AliasSetPrinter::ID"}, + {"_ZZN4llvm32initializeBasicAliasAnalysisPassERNS_12PassRegistryEE11initialized", "llvm::initializeBasicAliasAnalysisPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_118BasicAliasAnalysis2IDE", "(anonymous namespace)::BasicAliasAnalysis::ID"}, + {"_ZZN4llvm9DIBuilder18CreateLexicalBlockENS_12DIDescriptorENS_6DIFileEjjE9unique_id", "llvm::DIBuilder::CreateLexicalBlock(llvm::DIDescriptor, llvm::DIFile, unsigned int, unsigned int)::unique_id"}, + {"_ZZN4llvm9DIFactory18CreateLexicalBlockENS_12DIDescriptorENS_6DIFileEjjE9unique_id", "llvm::DIFactory::CreateLexicalBlock(llvm::DIDescriptor, llvm::DIFile, unsigned int, unsigned int)::unique_id"}, + {"_ZZN4llvm21initializeIVUsersPassERNS_12PassRegistryEE11initialized", "llvm::initializeIVUsersPass(llvm::PassRegistry&)::initialized"}, + {"_ZZN4llvm27initializeLazyValueInfoPassERNS_12PassRegistryEE11initialized", "llvm::initializeLazyValueInfoPass(llvm::PassRegistry&)::initialized"}, + {"_ZZN4llvm22initializeLoopInfoPassERNS_12PassRegistryEE11initialized", "llvm::initializeLoopInfoPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_113PrintLoopPass2IDE", "(anonymous namespace)::PrintLoopPass::ID"}, + {"_ZZN4llvm38initializeMemoryDependenceAnalysisPassERNS_12PassRegistryEE11initialized", "llvm::initializeMemoryDependenceAnalysisPass(llvm::PassRegistry&)::initialized"}, + {"_ZZN4llvm18initializeNoAAPassERNS_12PassRegistryEE11initialized", "llvm::initializeNoAAPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_14NoAA2IDE", "(anonymous namespace)::NoAA::ID"}, + {"_ZZN4llvm34initializeProfileInfoAnalysisGroupERNS_12PassRegistryEE11initialized", "llvm::initializeProfileInfoAnalysisGroup(llvm::PassRegistry&)::initialized"}, + {"_ZZN4llvm27initializeNoProfileInfoPassERNS_12PassRegistryEE11initialized", "llvm::initializeNoProfileInfoPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_113NoProfileInfo2IDE", "(anonymous namespace)::NoProfileInfo::ID"}, + {"_ZZN4llvm29initializeScalarEvolutionPassERNS_12PassRegistryEE11initialized", "llvm::initializeScalarEvolutionPass(llvm::PassRegistry&)::initialized"}, + {"_ZZN4llvm36initializeTypeBasedAliasAnalysisPassERNS_12PassRegistryEE11initialized", "llvm::initializeTypeBasedAliasAnalysisPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_122TypeBasedAliasAnalysis2IDE", "(anonymous namespace)::TypeBasedAliasAnalysis::ID"}, + {"_ZZN4llvm24initializeDataLayoutPassERNS_12PassRegistryEE11initialized", "llvm::initializeDataLayoutPass(llvm::PassRegistry&)::initialized"}, + {"_ZZN4llvm27initializeDominatorTreePassERNS_12PassRegistryEE11initialized", "llvm::initializeDominatorTreePass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_113BBPassManager2IDE", "(anonymous namespace)::BBPassManager::ID"}, + {"_ZZN12_GLOBAL__N_110TimingInfo17createTheTimeInfoEvE3TTI", "(anonymous namespace)::TimingInfo::createTheTimeInfo()::TTI"}, + {"_ZZN4llvm29initializePrintModulePassPassERNS_12PassRegistryEE11initialized", "llvm::initializePrintModulePassPass(llvm::PassRegistry&)::initialized"}, + {"_ZZN4llvm31initializePrintFunctionPassPassERNS_12PassRegistryEE11initialized", "llvm::initializePrintFunctionPassPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_117PrintFunctionPass2IDE", "(anonymous namespace)::PrintFunctionPass::ID"}, + {"_ZN12_GLOBAL__N_115PrintModulePass2IDE", "(anonymous namespace)::PrintModulePass::ID"}, + {"_ZZN4llvm25initializePreVerifierPassERNS_12PassRegistryEE11initialized", "llvm::initializePreVerifierPass(llvm::PassRegistry&)::initialized"}, + {"_ZZN4llvm22initializeVerifierPassERNS_12PassRegistryEE11initialized", "llvm::initializeVerifierPass(llvm::PassRegistry&)::initialized"}, + {"_ZN12_GLOBAL__N_18Verifier2IDE", "(anonymous namespace)::Verifier::ID"}, + {"_ZN12_GLOBAL__N_111PreVerifier2IDE", "(anonymous namespace)::PreVerifier::ID"}, + {"_ZZ8getMutexvE12HandlesMutex", "getMutex()::HandlesMutex"}, + {"_ZGVZ8getMutexvE12HandlesMutex", "guard variable for getMutex()::HandlesMutex"}, + {"_ZZN4llvm5foutsEvE1S", "llvm::fouts()::S"}, + {"_ZGVZN4llvm5foutsEvE1S", "guard variable for llvm::fouts()::S"}, + {"_ZZN4llvm5ferrsEvE1S", "llvm::ferrs()::S"}, + {"_ZGVZN4llvm5ferrsEvE1S", "guard variable for llvm::ferrs()::S"}, + {"_ZZN4llvm5fdbgsEvE1S", "llvm::fdbgs()::S"}, + {"_ZGVZN4llvm5fdbgsEvE1S", "guard variable for llvm::fdbgs()::S"}, + {"_ZGVZN4llvm21PrettyStackTraceEntryC1EvE17HandlerRegistered", "guard variable for llvm::PrettyStackTraceEntry::PrettyStackTraceEntry()::HandlerRegistered"}, + {"_ZZ15PrintStackTracePvE10StackTrace", "PrintStackTrace(void*)::StackTrace"}, + {"_ZZN4llvm4outsEvE1S", "llvm::outs()::S"}, + {"_ZGVZN4llvm4outsEvE1S", "guard variable for llvm::outs()::S"}, + {"_ZZN4llvm4errsEvE1S", "llvm::errs()::S"}, + {"_ZGVZN4llvm4errsEvE1S", "guard variable for llvm::errs()::S"}, + {"_ZZN4llvm5nullsEvE1S", "llvm::nulls()::S"}, + {"_ZGVZN4llvm5nullsEvE1S", "guard variable for llvm::nulls()::S"}, + {"_ZZN4llvm16generic_categoryEvE1s", "llvm::generic_category()::s"}, + {"_ZGVZN4llvm16generic_categoryEvE1s", "guard variable for llvm::generic_category()::s"}, + {"_ZZN4llvm15system_categoryEvE1s", "llvm::system_category()::s"}, + {"_ZGVZN4llvm15system_categoryEvE1s", "guard variable for llvm::system_category()::s"}, + {"_ZN5clang7CodeGen13EHPersonality5GNU_CE", "clang::CodeGen::EHPersonality::GNU_C"}, + {"_ZN5clang7CodeGen13EHPersonality10GNU_C_SJLJE", "clang::CodeGen::EHPersonality::GNU_C_SJLJ"}, + {"_ZN5clang7CodeGen13EHPersonality9NeXT_ObjCE", "clang::CodeGen::EHPersonality::NeXT_ObjC"}, + {"_ZN5clang7CodeGen13EHPersonality13GNU_CPlusPlusE", "clang::CodeGen::EHPersonality::GNU_CPlusPlus"}, + {"_ZN5clang7CodeGen13EHPersonality18GNU_CPlusPlus_SJLJE", "clang::CodeGen::EHPersonality::GNU_CPlusPlus_SJLJ"}, + {"_ZN5clang7CodeGen13EHPersonality8GNU_ObjCE", "clang::CodeGen::EHPersonality::GNU_ObjC"}, + {"_ZN5clang4ento15ManagerRegistry15StoreMgrCreatorE", "clang::ento::ManagerRegistry::StoreMgrCreator"}, + {"_ZN5clang4ento15ManagerRegistry20ConstraintMgrCreatorE", "clang::ento::ManagerRegistry::ConstraintMgrCreator"}, + {"_ZN5clang10ASTContext30NumImplicitDefaultConstructorsE", "clang::ASTContext::NumImplicitDefaultConstructors"}, + {"_ZN5clang10ASTContext38NumImplicitDefaultConstructorsDeclaredE", "clang::ASTContext::NumImplicitDefaultConstructorsDeclared"}, + {"_ZN5clang10ASTContext27NumImplicitCopyConstructorsE", "clang::ASTContext::NumImplicitCopyConstructors"}, + {"_ZN5clang10ASTContext35NumImplicitCopyConstructorsDeclaredE", "clang::ASTContext::NumImplicitCopyConstructorsDeclared"}, + {"_ZN5clang10ASTContext34NumImplicitCopyAssignmentOperatorsE", "clang::ASTContext::NumImplicitCopyAssignmentOperators"}, + {"_ZN5clang10ASTContext42NumImplicitCopyAssignmentOperatorsDeclaredE", "clang::ASTContext::NumImplicitCopyAssignmentOperatorsDeclared"}, + {"_ZN5clang10ASTContext22NumImplicitDestructorsE", "clang::ASTContext::NumImplicitDestructors"}, + {"_ZN5clang10ASTContext30NumImplicitDestructorsDeclaredE", "clang::ASTContext::NumImplicitDestructorsDeclared"}, + {"_ZN4llvm3X8611GR8RegClassE", "llvm::X86::GR8RegClass"}, + {"_ZN4llvm3X8618GR8_ABCD_LRegClassE", "llvm::X86::GR8_ABCD_LRegClass"}, + {"_ZN4llvm3X8618GR8_ABCD_HRegClassE", "llvm::X86::GR8_ABCD_HRegClass"}, + {"_ZN4llvm3X8612GR64RegClassE", "llvm::X86::GR64RegClass"}, + {"_ZN4llvm3X8617GR64_ABCDRegClassE", "llvm::X86::GR64_ABCDRegClass"}, + {"_ZN4llvm3X8618GR64_NOREXRegClassE", "llvm::X86::GR64_NOREXRegClass"}, + {"_ZN4llvm3X8617GR64_NOSPRegClassE", "llvm::X86::GR64_NOSPRegClass"}, + {"_ZN4llvm3X8623GR64_NOREX_NOSPRegClassE", "llvm::X86::GR64_NOREX_NOSPRegClass"}, + {"_ZN4llvm3X8612GR32RegClassE", "llvm::X86::GR32RegClass"}, + {"_ZN4llvm3X8617GR32_ABCDRegClassE", "llvm::X86::GR32_ABCDRegClass"}, + {"_ZN4llvm3X8618GR32_NOREXRegClassE", "llvm::X86::GR32_NOREXRegClass"}, + {"_ZN4llvm3X8617GR32_NOSPRegClassE", "llvm::X86::GR32_NOSPRegClass"}, + {"_ZN4llvm3X8612GR16RegClassE", "llvm::X86::GR16RegClass"}, + {"_ZN4llvm3X8617GR16_ABCDRegClassE", "llvm::X86::GR16_ABCDRegClass"}, + {"_ZN4llvm3X8618GR16_NOREXRegClassE", "llvm::X86::GR16_NOREXRegClass"}, + {"_ZN4llvm3X8617GR8_NOREXRegClassE", "llvm::X86::GR8_NOREXRegClass"}, + {"_ZN4llvm3X8612FR32RegClassE", "llvm::X86::FR32RegClass"}, + {"_ZN4llvm3X8612FR64RegClassE", "llvm::X86::FR64RegClass"}, + {"_ZN4llvm3X8613VR128RegClassE", "llvm::X86::VR128RegClass"}, + {"_ZN4llvm3X8618GR64_TCW64RegClassE", "llvm::X86::GR64_TCW64RegClass"}, + {"_ZN4llvm3X8615GR64_TCRegClassE", "llvm::X86::GR64_TCRegClass"}, + {"_ZN4llvm3X8615GR32_TCRegClassE", "llvm::X86::GR32_TCRegClass"}, + {"_ZN4llvm3X8611CCRRegClassE", "llvm::X86::CCRRegClass"}, + {"_ZN4llvm3X8619CONTROL_REGRegClassE", "llvm::X86::CONTROL_REGRegClass"}, + {"_ZN4llvm3X8617DEBUG_REGRegClassE", "llvm::X86::DEBUG_REGRegClass"}, + {"_ZN4llvm3X8615GR32_ADRegClassE", "llvm::X86::GR32_ADRegClass"}, + {"_ZN4llvm3X8613RFP32RegClassE", "llvm::X86::RFP32RegClass"}, + {"_ZN4llvm3X8613RFP64RegClassE", "llvm::X86::RFP64RegClass"}, + {"_ZN4llvm3X8613RFP80RegClassE", "llvm::X86::RFP80RegClass"}, + {"_ZN4llvm3X8611RSTRegClassE", "llvm::X86::RSTRegClass"}, + {"_ZN4llvm3X8619SEGMENT_REGRegClassE", "llvm::X86::SEGMENT_REGRegClass"}, + {"_ZN4llvm3X8613VR256RegClassE", "llvm::X86::VR256RegClass"}, + {"_ZN4llvm3X8612VR64RegClassE", "llvm::X86::VR64RegClass"}, + {"_ZN4llvm3ARM13SPR_8RegClassE", "llvm::ARM::SPR_8RegClass"}, + {"_ZN4llvm3ARM13DPR_8RegClassE", "llvm::ARM::DPR_8RegClass"}, + {"_ZN4llvm3ARM16DPR_VFP2RegClassE", "llvm::ARM::DPR_VFP2RegClass"}, + {"_ZN4llvm3ARM13QPR_8RegClassE", "llvm::ARM::QPR_8RegClass"}, + {"_ZN4llvm3ARM16QPR_VFP2RegClassE", "llvm::ARM::QPR_VFP2RegClass"}, + {"_ZN4llvm3ARM17QQPR_VFP2RegClassE", "llvm::ARM::QQPR_VFP2RegClass"}, + {"_ZN4llvm3ARM11DPRRegClassE", "llvm::ARM::DPRRegClass"}, + {"_ZN4llvm3ARM11QPRRegClassE", "llvm::ARM::QPRRegClass"}, + {"_ZN4llvm3ARM11CCRRegClassE", "llvm::ARM::CCRRegClass"}, + {"_ZN4llvm3ARM11GPRRegClassE", "llvm::ARM::GPRRegClass"}, + {"_ZN4llvm3ARM12QQPRRegClassE", "llvm::ARM::QQPRRegClass"}, + {"_ZN4llvm3ARM14QQQQPRRegClassE", "llvm::ARM::QQQQPRRegClass"}, + {"_ZN4llvm3ARM11SPRRegClassE", "llvm::ARM::SPRRegClass"}, + {"_ZN4llvm3ARM12rGPRRegClassE", "llvm::ARM::rGPRRegClass"}, + {"_ZN4llvm3ARM12tGPRRegClassE", "llvm::ARM::tGPRRegClass"}, + {"_ZN4llvm3ARM13tcGPRRegClassE", "llvm::ARM::tcGPRRegClass"}, + {"_ZN4llvm17RegisterScheduler8RegistryE", "llvm::RegisterScheduler::Registry"}, + {"_ZN4llvm16SelectionDAGISel2IDE", "llvm::SelectionDAGISel::ID"}, + {"_ZN4llvm10AsmPrinter2IDE", "llvm::AsmPrinter::ID"}, + {"_ZN4llvm21CalculateSpillWeights2IDE", "llvm::CalculateSpillWeights::ID"}, + {"_ZN4llvm11EdgeBundles2IDE", "llvm::EdgeBundles::ID"}, + {"_ZN4llvm12GCModuleInfo2IDE", "llvm::GCModuleInfo::ID"}, + {"_ZN4llvm14EnableFastISelE", "llvm::EnableFastISel"}, + {"_ZN4llvm18LiveDebugVariables2IDE", "llvm::LiveDebugVariables::ID"}, + {"_ZN4llvm13LiveIntervals2IDE", "llvm::LiveIntervals::ID"}, + {"_ZN4llvm10LiveStacks2IDE", "llvm::LiveStacks::ID"}, + {"_ZN4llvm13LiveVariables2IDE", "llvm::LiveVariables::ID"}, + {"_ZN4llvm20MachineDominatorTree2IDE", "llvm::MachineDominatorTree::ID"}, + {"_ZN4llvm23MachineFunctionAnalysis2IDE", "llvm::MachineFunctionAnalysis::ID"}, + {"_ZN4llvm15MachineLoopInfo2IDE", "llvm::MachineLoopInfo::ID"}, + {"_ZN4llvm17MachineModuleInfo2IDE", "llvm::MachineModuleInfo::ID"}, + {"_ZN4llvm16RegisterRegAlloc8RegistryE", "llvm::RegisterRegAlloc::Registry"}, + {"_ZN4llvm19ProcessImplicitDefs2IDE", "llvm::ProcessImplicitDefs::ID"}, + {"_ZN4llvm3PEI2IDE", "llvm::PEI::ID"}, + {"_ZN4llvm17RegisterCoalescer2IDE", "llvm::RegisterCoalescer::ID"}, + {"_ZN4llvm24SimpleRegisterCoalescing2IDE", "llvm::SimpleRegisterCoalescing::ID"}, + {"_ZN4llvm11SlotIndexes2IDE", "llvm::SlotIndexes::ID"}, + {"_ZN4llvm10VirtRegMap2IDE", "llvm::VirtRegMap::ID"}, + {"_ZN4llvm12InstCombiner2IDE", "llvm::InstCombiner::ID"}, + {"_ZN4llvm22UnifyFunctionExitNodes2IDE", "llvm::UnifyFunctionExitNodes::ID"}, + {"_ZN4llvm9CallGraph2IDE", "llvm::CallGraph::ID"}, + {"_ZN4llvm13FindUsedTypes2IDE", "llvm::FindUsedTypes::ID"}, + {"_ZN4llvm13AliasAnalysis2IDE", "llvm::AliasAnalysis::ID"}, + {"_ZN4llvm7IVUsers2IDE", "llvm::IVUsers::ID"}, + {"_ZN4llvm13LazyValueInfo2IDE", "llvm::LazyValueInfo::ID"}, + {"_ZN4llvm8LoopInfo2IDE", "llvm::LoopInfo::ID"}, + {"_ZN4llvm13LPPassManager2IDE", "llvm::LPPassManager::ID"}, + {"_ZN4llvm24MemoryDependenceAnalysis2IDE", "llvm::MemoryDependenceAnalysis::ID"}, + {"_ZN4llvm12ProfileInfoTINS_8FunctionENS_10BasicBlockEE2IDE", "llvm::ProfileInfoT::ID"}, + {"_ZN4llvm12ProfileInfoTINS_15MachineFunctionENS_17MachineBasicBlockEE2IDE", "llvm::ProfileInfoT::ID"}, + {"_ZN4llvm15ScalarEvolution2IDE", "llvm::ScalarEvolution::ID"}, + {"_ZN4llvm10DataLayout2IDE", "llvm::DataLayout::ID"}, + {"_ZN4llvm10DataLayout20InvalidAlignmentElemE", "llvm::DataLayout::InvalidAlignmentElem"}, + {"_ZN4llvm22LessPreciseFPMADOptionE", "llvm::LessPreciseFPMADOption"}, + {"_ZN4llvm16PrintMachineCodeE", "llvm::PrintMachineCode"}, + {"_ZN4llvm18NoFramePointerElimE", "llvm::NoFramePointerElim"}, + {"_ZN4llvm25NoFramePointerElimNonLeafE", "llvm::NoFramePointerElimNonLeaf"}, + {"_ZN4llvm19NoExcessFPPrecisionE", "llvm::NoExcessFPPrecision"}, + {"_ZN4llvm12UnsafeFPMathE", "llvm::UnsafeFPMath"}, + {"_ZN4llvm12NoInfsFPMathE", "llvm::NoInfsFPMath"}, + {"_ZN4llvm12NoNaNsFPMathE", "llvm::NoNaNsFPMath"}, + {"_ZN4llvm38HonorSignDependentRoundingFPMathOptionE", "llvm::HonorSignDependentRoundingFPMathOption"}, + {"_ZN4llvm12UseSoftFloatE", "llvm::UseSoftFloat"}, + {"_ZN4llvm12FloatABITypeE", "llvm::FloatABIType"}, + {"_ZN4llvm15NoImplicitFloatE", "llvm::NoImplicitFloat"}, + {"_ZN4llvm12NoZerosInBSSE", "llvm::NoZerosInBSS"}, + {"_ZN4llvm20JITExceptionHandlingE", "llvm::JITExceptionHandling"}, + {"_ZN4llvm16JITEmitDebugInfoE", "llvm::JITEmitDebugInfo"}, + {"_ZN4llvm22JITEmitDebugInfoToDiskE", "llvm::JITEmitDebugInfoToDisk"}, + {"_ZN4llvm21UnwindTablesMandatoryE", "llvm::UnwindTablesMandatory"}, + {"_ZN4llvm15RelocationModelE", "llvm::RelocationModel"}, + {"_ZN4llvm7CMModelE", "llvm::CMModel"}, + {"_ZN4llvm21GuaranteedTailCallOptE", "llvm::GuaranteedTailCallOpt"}, + {"_ZN4llvm14StackAlignmentE", "llvm::StackAlignment"}, + {"_ZN4llvm12RealignStackE", "llvm::RealignStack"}, + {"_ZN4llvm17DisableJumpTablesE", "llvm::DisableJumpTables"}, + {"_ZN4llvm13StrongPHIElimE", "llvm::StrongPHIElim"}, + {"_ZN4llvm19AsmVerbosityDefaultE", "llvm::AsmVerbosityDefault"}, + {"_ZN4llvm13DominatorTree2IDE", "llvm::DominatorTree::ID"}, + {"_ZN4llvm23FunctionPassManagerImpl2IDE", "llvm::FunctionPassManagerImpl::ID"}, + {"_ZN4llvm13MPPassManager2IDE", "llvm::MPPassManager::ID"}, + {"_ZN4llvm15PassManagerImpl2IDE", "llvm::PassManagerImpl::ID"}, + {"_ZN4llvm13FPPassManager2IDE", "llvm::FPPassManager::ID"}, + {"_ZN4llvm19TimePassesIsEnabledE", "llvm::TimePassesIsEnabled"}, + {"_ZN4llvm16BumpPtrAllocator20DefaultSlabAllocatorE", "llvm::BumpPtrAllocator::DefaultSlabAllocator"}, + {"_ZN4llvm20EnableDebugBufferingE", "llvm::EnableDebugBuffering"}, + {"_ZN4llvm23DisablePrettyStackTraceE", "llvm::DisablePrettyStackTrace"}, + {"_ZN4llvm3sys9TimeValue8ZeroTimeE", "llvm::sys::TimeValue::ZeroTime"}, + {"_ZNKSs13find_first_ofEPKcmm", "std::string::find_first_of(char const*, unsigned long, unsigned long) const"}, + {"_ZNKSs4copyEPcmm", "std::string::copy(char*, unsigned long, unsigned long) const"}, + {"_ZNKSs4findEPKcmm", "std::string::find(char const*, unsigned long, unsigned long) const"}, + {"_ZNKSs4findEcm", "std::string::find(char, unsigned long) const"}, + {"_ZNKSs5rfindEPKcmm", "std::string::rfind(char const*, unsigned long, unsigned long) const"}, + {"_ZNKSs5rfindEcm", "std::string::rfind(char, unsigned long) const"}, + {"_ZNKSs7compareEPKc", "std::string::compare(char const*) const"}, + {"_ZNKSs7compareEmmPKc", "std::string::compare(unsigned long, unsigned long, char const*) const"}, + {"_ZNKSs7compareEmmPKcm", "std::string::compare(unsigned long, unsigned long, char const*, unsigned long) const"}, + {"_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc", "std::basic_ios>::widen(char) const"}, + + // {"_ZNSo3putEc", + // "std::ostream::put(char)"}, + // "std::basic_ostream>::put(char)" was returned + + + // {"_ZNSo5flushEv", + // "std::ostream::flush()"}, + // "std::basic_ostream>::flush()" was returned + + {"_ZNSs12_M_leak_hardEv", "std::string::_M_leak_hard()"}, + {"_ZNSs14_M_replace_auxEmmmc", "std::string::_M_replace_aux(unsigned long, unsigned long, unsigned long, char)"}, + {"_ZNSs4_Rep10_M_destroyERKSaIcE", "std::string::_Rep::_M_destroy(std::allocator const&)"}, + {"_ZNSs4_Rep11_S_terminalE", "std::string::_Rep::_S_terminal"}, + {"_ZNSs4_Rep20_S_empty_rep_storageE", "std::string::_Rep::_S_empty_rep_storage"}, + {"_ZNSs4_Rep9_S_createEmmRKSaIcE", "std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator const&)"}, + {"_ZNSs4swapERSs", "std::string::swap(std::string&)"}, + {"_ZNSs6appendEPKcm", "std::string::append(char const*, unsigned long)"}, + {"_ZNSs6appendERKSs", "std::string::append(std::string const&)"}, + {"_ZNSs6appendEmc", "std::string::append(unsigned long, char)"}, + {"_ZNSs6assignEPKcm", "std::string::assign(char const*, unsigned long)"}, + {"_ZNSs6assignERKSs", "std::string::assign(std::string const&)"}, + {"_ZNSs6resizeEmc", "std::string::resize(unsigned long, char)"}, + {"_ZNSs7replaceEmmPKcm", "std::string::replace(unsigned long, unsigned long, char const*, unsigned long)"}, + {"_ZNSs7reserveEm", "std::string::reserve(unsigned long)"}, + {"_ZNSs9_M_mutateEmmm", "std::string::_M_mutate(unsigned long, unsigned long, unsigned long)"}, + + // {"_ZNSsC1EPKcRKSaIcE", + // "std::basic_string, std::allocator>::basic_string(char const*, std::allocator const&)"}, + // "std::string::string(char const*, std::allocator const&)" was returned + + + // {"_ZNSsC1EPKcmRKSaIcE", + // "std::basic_string, std::allocator>::basic_string(char const*, unsigned long, std::allocator const&)"}, + // "std::string::string(char const*, unsigned long, std::allocator const&)" was returned + + + // {"_ZNSsC1ERKSs", + // "std::basic_string, std::allocator>::basic_string(std::string const&)"}, + // "std::string::string(std::string const&)" was returned + + + // {"_ZNSsC1ERKSsmm", + // "std::basic_string, std::allocator>::basic_string(std::string const&, unsigned long, unsigned long)"}, + // "std::string::string(std::string const&, unsigned long, unsigned long)" was returned + + + // {"_ZNSsC1EmcRKSaIcE", + // "std::basic_string, std::allocator>::basic_string(unsigned long, char, std::allocator const&)"}, + // "std::string::string(unsigned long, char, std::allocator const&)" was returned + + {"_ZNSsixEm", "std::string::operator[](unsigned long)"}, + {"_ZNSspLEPKc", "std::string::operator+=(char const*)"}, + {"_ZNSspLEc", "std::string::operator+=(char)"}, + {"_ZNSt15_List_node_base4hookEPS_", "std::_List_node_base::hook(std::_List_node_base*)"}, + {"_ZNSt15_List_node_base4swapERS_S0_", "std::_List_node_base::swap(std::_List_node_base&, std::_List_node_base&)"}, + {"_ZNSt15_List_node_base6unhookEv", "std::_List_node_base::unhook()"}, + {"_ZNSt8ios_base4InitC1Ev", "std::ios_base::Init::Init()"}, + {"_ZNSt8ios_base4InitD1Ev", "std::ios_base::Init::~Init()"}, + + // {"_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l", + // "std::basic_ostream>& std::__ostream_insert>(std::basic_ostream>&, char const*, long)"}, + // got error + + {"_ZSt17__throw_bad_allocv", "std::__throw_bad_alloc()"}, + {"_ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base", "std::_Rb_tree_decrement(std::_Rb_tree_node_base const*)"}, + {"_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base", "std::_Rb_tree_decrement(std::_Rb_tree_node_base*)"}, + {"_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base", "std::_Rb_tree_increment(std::_Rb_tree_node_base const*)"}, + {"_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base", "std::_Rb_tree_increment(std::_Rb_tree_node_base*)"}, + {"_ZSt19__throw_logic_errorPKc", "std::__throw_logic_error(char const*)"}, + {"_ZSt20__throw_length_errorPKc", "std::__throw_length_error(char const*)"}, + {"_ZSt20__throw_out_of_rangePKc", "std::__throw_out_of_range(char const*)"}, + {"_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_", "std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)"}, + {"_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_", "std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)"}, + {"_ZSt4cout", "std::cout"}, + {"_ZSt7nothrow", "std::nothrow"}, + {"_ZTVN10__cxxabiv117__class_type_infoE", "vtable for __cxxabiv1::__class_type_info"}, + {"_ZTVN10__cxxabiv120__si_class_type_infoE", "vtable for __cxxabiv1::__si_class_type_info"}, + {"_ZTVN10__cxxabiv121__vmi_class_type_infoE", "vtable for __cxxabiv1::__vmi_class_type_info"}, + + // {"_ZdaPv", + // "operator delete[](void*)"}, + // "operator delete [](void*)" was returned + + {"_ZdlPv", "operator delete(void*)"}, + {"_ZdlPvRKSt9nothrow_t", "operator delete(void*, std::nothrow_t const&)"}, + + // {"_Znam", + // "operator new[](unsigned long)"}, + // "operator new [](unsigned long)" was returned + + {"_Znwm", "operator new(unsigned long)"}, + {"_ZnwmRKSt9nothrow_t", "operator new(unsigned long, std::nothrow_t const&)"}, + {"_ZStL8__ioinit", "std::__ioinit"}, + {"_ZL4NaNU", "NaNU"}, + {"_ZL4NaNL", "NaNL"}, + {"_ZL8CharInfo", "CharInfo"}, + {"_ZL13DiagSubGroup0", "DiagSubGroup0"}, + {"_ZL10DiagArray1", "DiagArray1"}, + {"_ZL10DiagArray2", "DiagArray2"}, + {"_ZL10DiagArray5", "DiagArray5"}, + {"_ZL13DiagSubGroup7", "DiagSubGroup7"}, + {"_ZL10DiagArray8", "DiagArray8"}, + {"_ZL13DiagSubGroup9", "DiagSubGroup9"}, + {"_ZL11DiagArray12", "DiagArray12"}, + {"_ZL11DiagArray13", "DiagArray13"}, + {"_ZL11DiagArray14", "DiagArray14"}, + {"_ZL11DiagArray15", "DiagArray15"}, + {"_ZL11DiagArray16", "DiagArray16"}, + {"_ZL11DiagArray17", "DiagArray17"}, + {"_ZL14DiagSubGroup17", "DiagSubGroup17"}, + {"_ZL11DiagArray18", "DiagArray18"}, + {"_ZL11DiagArray19", "DiagArray19"}, + {"_ZL11DiagArray22", "DiagArray22"}, + {"_ZL11DiagArray23", "DiagArray23"}, + {"_ZL14DiagSubGroup24", "DiagSubGroup24"}, + {"_ZL11DiagArray25", "DiagArray25"}, + {"_ZL11DiagArray26", "DiagArray26"}, + {"_ZL11DiagArray27", "DiagArray27"}, + {"_ZL14DiagSubGroup27", "DiagSubGroup27"}, + {"_ZL11DiagArray29", "DiagArray29"}, + {"_ZL11DiagArray30", "DiagArray30"}, + {"_ZL11DiagArray31", "DiagArray31"}, + {"_ZL14DiagSubGroup31", "DiagSubGroup31"}, + {"_ZL11DiagArray32", "DiagArray32"}, + {"_ZL11DiagArray33", "DiagArray33"}, + {"_ZL11DiagArray38", "DiagArray38"}, + {"_ZL14DiagSubGroup39", "DiagSubGroup39"}, + {"_ZL14DiagSubGroup40", "DiagSubGroup40"}, + {"_ZL11DiagArray41", "DiagArray41"}, + {"_ZL11DiagArray42", "DiagArray42"}, + {"_ZL11DiagArray43", "DiagArray43"}, + {"_ZL14DiagSubGroup43", "DiagSubGroup43"}, + {"_ZL11DiagArray44", "DiagArray44"}, + {"_ZL11DiagArray45", "DiagArray45"}, + {"_ZL14DiagSubGroup45", "DiagSubGroup45"}, + {"_ZL11DiagArray46", "DiagArray46"}, + {"_ZL14DiagSubGroup46", "DiagSubGroup46"}, + {"_ZL14DiagSubGroup47", "DiagSubGroup47"}, + {"_ZL11DiagArray48", "DiagArray48"}, + {"_ZL14DiagSubGroup49", "DiagSubGroup49"}, + {"_ZL11DiagArray50", "DiagArray50"}, + {"_ZL11DiagArray51", "DiagArray51"}, + {"_ZL11DiagArray52", "DiagArray52"}, + {"_ZL14DiagSubGroup52", "DiagSubGroup52"}, + {"_ZL11DiagArray53", "DiagArray53"}, + {"_ZL11DiagArray54", "DiagArray54"}, + {"_ZL11DiagArray55", "DiagArray55"}, + {"_ZL14DiagSubGroup56", "DiagSubGroup56"}, + {"_ZL11DiagArray57", "DiagArray57"}, + {"_ZL11DiagArray58", "DiagArray58"}, + {"_ZL11DiagArray59", "DiagArray59"}, + {"_ZL11DiagArray62", "DiagArray62"}, + {"_ZL11DiagArray65", "DiagArray65"}, + {"_ZL11DiagArray66", "DiagArray66"}, + {"_ZL11DiagArray68", "DiagArray68"}, + {"_ZL11DiagArray69", "DiagArray69"}, + {"_ZL11DiagArray70", "DiagArray70"}, + {"_ZL11DiagArray71", "DiagArray71"}, + {"_ZL11DiagArray72", "DiagArray72"}, + {"_ZL11DiagArray73", "DiagArray73"}, + {"_ZL11DiagArray75", "DiagArray75"}, + {"_ZL11DiagArray76", "DiagArray76"}, + {"_ZL11DiagArray77", "DiagArray77"}, + {"_ZL11DiagArray78", "DiagArray78"}, + {"_ZL11DiagArray79", "DiagArray79"}, + {"_ZL11DiagArray80", "DiagArray80"}, + {"_ZL11DiagArray83", "DiagArray83"}, + {"_ZL11DiagArray84", "DiagArray84"}, + {"_ZL14DiagSubGroup85", "DiagSubGroup85"}, + {"_ZL11DiagArray86", "DiagArray86"}, + {"_ZL14DiagSubGroup89", "DiagSubGroup89"}, + {"_ZL11DiagArray90", "DiagArray90"}, + {"_ZL11DiagArray91", "DiagArray91"}, + {"_ZL11DiagArray92", "DiagArray92"}, + {"_ZL11DiagArray93", "DiagArray93"}, + {"_ZL11DiagArray95", "DiagArray95"}, + {"_ZL11DiagArray98", "DiagArray98"}, + {"_ZL12DiagArray100", "DiagArray100"}, + {"_ZL12DiagArray101", "DiagArray101"}, + {"_ZL12DiagArray102", "DiagArray102"}, + {"_ZL12DiagArray103", "DiagArray103"}, + {"_ZL12DiagArray104", "DiagArray104"}, + {"_ZL15DiagSubGroup104", "DiagSubGroup104"}, + {"_ZL12DiagArray105", "DiagArray105"}, + {"_ZL12DiagArray106", "DiagArray106"}, + {"_ZL12DiagArray108", "DiagArray108"}, + {"_ZL12DiagArray109", "DiagArray109"}, + {"_ZL12DiagArray111", "DiagArray111"}, + {"_ZL12DiagArray112", "DiagArray112"}, + {"_ZL12DiagArray113", "DiagArray113"}, + {"_ZL12DiagArray114", "DiagArray114"}, + {"_ZL12DiagArray115", "DiagArray115"}, + {"_ZL12DiagArray117", "DiagArray117"}, + {"_ZL12DiagArray118", "DiagArray118"}, + {"_ZL12DiagArray119", "DiagArray119"}, + {"_ZL12DiagArray134", "DiagArray134"}, + {"_ZL12DiagArray135", "DiagArray135"}, + {"_ZL12DiagArray136", "DiagArray136"}, + {"_ZL15DiagSubGroup136", "DiagSubGroup136"}, + {"_ZL12DiagArray138", "DiagArray138"}, + {"_ZL12DiagArray140", "DiagArray140"}, + {"_ZL12DiagArray141", "DiagArray141"}, + {"_ZL12DiagArray143", "DiagArray143"}, + {"_ZL12DiagArray144", "DiagArray144"}, + {"_ZL12DiagArray145", "DiagArray145"}, + {"_ZL12DiagArray146", "DiagArray146"}, + {"_ZL12DiagArray147", "DiagArray147"}, + {"_ZL12DiagArray148", "DiagArray148"}, + {"_ZL12DiagArray149", "DiagArray149"}, + {"_ZL12DiagArray150", "DiagArray150"}, + {"_ZL12DiagArray151", "DiagArray151"}, + {"_ZL12DiagArray152", "DiagArray152"}, + {"_ZL15DiagSubGroup153", "DiagSubGroup153"}, + {"_ZL12DiagArray155", "DiagArray155"}, + {"_ZL12DiagArray156", "DiagArray156"}, + {"_ZL12DiagArray157", "DiagArray157"}, + {"_ZL12DiagArray158", "DiagArray158"}, + {"_ZL12DiagArray159", "DiagArray159"}, + {"_ZL12DiagArray160", "DiagArray160"}, + {"_ZL12DiagArray161", "DiagArray161"}, + {"_ZL12DiagArray162", "DiagArray162"}, + {"_ZL12DiagArray163", "DiagArray163"}, + {"_ZL12DiagArray164", "DiagArray164"}, + {"_ZL12DiagArray165", "DiagArray165"}, + {"_ZL12DiagArray166", "DiagArray166"}, + {"_ZL12DiagArray168", "DiagArray168"}, + {"_ZN4llvmL13ImplicitList1E", "llvm::ImplicitList1"}, + {"_ZN4llvmL13ImplicitList2E", "llvm::ImplicitList2"}, + {"_ZN4llvmL13ImplicitList3E", "llvm::ImplicitList3"}, + {"_ZN4llvmL13ImplicitList4E", "llvm::ImplicitList4"}, + {"_ZN4llvmL13ImplicitList5E", "llvm::ImplicitList5"}, + {"_ZN4llvmL13ImplicitList6E", "llvm::ImplicitList6"}, + {"_ZN4llvmL13ImplicitList7E", "llvm::ImplicitList7"}, + {"_ZN4llvmL13ImplicitList8E", "llvm::ImplicitList8"}, + {"_ZN4llvmL13ImplicitList9E", "llvm::ImplicitList9"}, + {"_ZN4llvmL14ImplicitList10E", "llvm::ImplicitList10"}, + {"_ZN4llvmL14ImplicitList11E", "llvm::ImplicitList11"}, + {"_ZN4llvmL14ImplicitList12E", "llvm::ImplicitList12"}, + {"_ZN4llvmL14ImplicitList13E", "llvm::ImplicitList13"}, + {"_ZN4llvmL14ImplicitList14E", "llvm::ImplicitList14"}, + {"_ZN4llvmL14ImplicitList15E", "llvm::ImplicitList15"}, + {"_ZN4llvmL14ImplicitList16E", "llvm::ImplicitList16"}, + {"_ZN4llvmL14ImplicitList17E", "llvm::ImplicitList17"}, + {"_ZN4llvmL14ImplicitList18E", "llvm::ImplicitList18"}, + {"_ZN4llvmL14ImplicitList19E", "llvm::ImplicitList19"}, + {"_ZN4llvmL14ImplicitList20E", "llvm::ImplicitList20"}, + {"_ZN4llvmL14ImplicitList21E", "llvm::ImplicitList21"}, + {"_ZN4llvmL14ImplicitList22E", "llvm::ImplicitList22"}, + {"_ZN4llvmL14ImplicitList23E", "llvm::ImplicitList23"}, + {"_ZN4llvmL14ImplicitList24E", "llvm::ImplicitList24"}, + {"_ZN4llvmL14ImplicitList25E", "llvm::ImplicitList25"}, + {"_ZN4llvmL14ImplicitList26E", "llvm::ImplicitList26"}, + {"_ZN4llvmL14ImplicitList27E", "llvm::ImplicitList27"}, + {"_ZN4llvmL14ImplicitList28E", "llvm::ImplicitList28"}, + {"_ZN4llvmL14ImplicitList29E", "llvm::ImplicitList29"}, + {"_ZN4llvmL14ImplicitList30E", "llvm::ImplicitList30"}, + {"_ZN4llvmL14ImplicitList31E", "llvm::ImplicitList31"}, + {"_ZN4llvmL14ImplicitList32E", "llvm::ImplicitList32"}, + {"_ZN4llvmL14ImplicitList33E", "llvm::ImplicitList33"}, + {"_ZN4llvmL14ImplicitList34E", "llvm::ImplicitList34"}, + {"_ZN4llvmL14ImplicitList35E", "llvm::ImplicitList35"}, + {"_ZN4llvmL14ImplicitList36E", "llvm::ImplicitList36"}, + {"_ZN4llvmL14ImplicitList37E", "llvm::ImplicitList37"}, + {"_ZN4llvmL14ImplicitList38E", "llvm::ImplicitList38"}, + {"_ZN4llvmL14ImplicitList39E", "llvm::ImplicitList39"}, + {"_ZN4llvmL14ImplicitList40E", "llvm::ImplicitList40"}, + {"_ZN4llvmL14ImplicitList41E", "llvm::ImplicitList41"}, + {"_ZN4llvmL14ImplicitList42E", "llvm::ImplicitList42"}, + {"_ZN4llvmL14ImplicitList43E", "llvm::ImplicitList43"}, + {"_ZN4llvmL14ImplicitList44E", "llvm::ImplicitList44"}, + {"_ZN4llvmL14ImplicitList45E", "llvm::ImplicitList45"}, + {"_ZN4llvmL14ImplicitList46E", "llvm::ImplicitList46"}, + {"_ZN4llvmL14ImplicitList47E", "llvm::ImplicitList47"}, + {"_ZN4llvmL14ImplicitList48E", "llvm::ImplicitList48"}, + {"_ZN4llvmL14ImplicitList49E", "llvm::ImplicitList49"}, + {"_ZN4llvmL14ImplicitList50E", "llvm::ImplicitList50"}, + {"_ZN4llvmL14ImplicitList51E", "llvm::ImplicitList51"}, + {"_ZN4llvmL14ImplicitList52E", "llvm::ImplicitList52"}, + {"_ZN4llvmL14ImplicitList53E", "llvm::ImplicitList53"}, + {"_ZN4llvmL14ImplicitList54E", "llvm::ImplicitList54"}, + {"_ZN4llvmL14ImplicitList55E", "llvm::ImplicitList55"}, + {"_ZN4llvmL14ImplicitList56E", "llvm::ImplicitList56"}, + {"_ZN4llvmL14ImplicitList57E", "llvm::ImplicitList57"}, + {"_ZN4llvmL14ImplicitList58E", "llvm::ImplicitList58"}, + {"_ZN4llvmL14ImplicitList59E", "llvm::ImplicitList59"}, + {"_ZN4llvmL14ImplicitList60E", "llvm::ImplicitList60"}, + {"_ZN4llvmL14ImplicitList61E", "llvm::ImplicitList61"}, + {"_ZN4llvmL14ImplicitList62E", "llvm::ImplicitList62"}, + {"_ZN4llvmL14ImplicitList63E", "llvm::ImplicitList63"}, + {"_ZN4llvmL14ImplicitList64E", "llvm::ImplicitList64"}, + {"_ZN4llvmL14ImplicitList65E", "llvm::ImplicitList65"}, + {"_ZL17ReplaceableInstrs", "ReplaceableInstrs"}, + {"_ZN4llvm3X86L18CCRSuperRegClassesE", "llvm::X86::CCRSuperRegClasses"}, + {"_ZN4llvm3X86L26CONTROL_REGSuperRegClassesE", "llvm::X86::CONTROL_REGSuperRegClasses"}, + {"_ZN4llvm3X86L24DEBUG_REGSuperRegClassesE", "llvm::X86::DEBUG_REGSuperRegClasses"}, + {"_ZN4llvm3X86L22GR32_ADSuperRegClassesE", "llvm::X86::GR32_ADSuperRegClasses"}, + {"_ZN4llvm3X86L19GR64SuperRegClassesE", "llvm::X86::GR64SuperRegClasses"}, + {"_ZN4llvm3X86L24GR64_ABCDSuperRegClassesE", "llvm::X86::GR64_ABCDSuperRegClasses"}, + {"_ZN4llvm3X86L25GR64_NOREXSuperRegClassesE", "llvm::X86::GR64_NOREXSuperRegClasses"}, + {"_ZN4llvm3X86L30GR64_NOREX_NOSPSuperRegClassesE", "llvm::X86::GR64_NOREX_NOSPSuperRegClasses"}, + {"_ZN4llvm3X86L24GR64_NOSPSuperRegClassesE", "llvm::X86::GR64_NOSPSuperRegClasses"}, + {"_ZN4llvm3X86L22GR64_TCSuperRegClassesE", "llvm::X86::GR64_TCSuperRegClasses"}, + {"_ZN4llvm3X86L25GR64_TCW64SuperRegClassesE", "llvm::X86::GR64_TCW64SuperRegClasses"}, + {"_ZN4llvm3X86L20RFP32SuperRegClassesE", "llvm::X86::RFP32SuperRegClasses"}, + {"_ZN4llvm3X86L20RFP64SuperRegClassesE", "llvm::X86::RFP64SuperRegClasses"}, + {"_ZN4llvm3X86L20RFP80SuperRegClassesE", "llvm::X86::RFP80SuperRegClasses"}, + {"_ZN4llvm3X86L18RSTSuperRegClassesE", "llvm::X86::RSTSuperRegClasses"}, + {"_ZN4llvm3X86L26SEGMENT_REGSuperRegClassesE", "llvm::X86::SEGMENT_REGSuperRegClasses"}, + {"_ZN4llvm3X86L20VR256SuperRegClassesE", "llvm::X86::VR256SuperRegClasses"}, + {"_ZN4llvm3X86L19VR64SuperRegClassesE", "llvm::X86::VR64SuperRegClasses"}, + {"_ZN4llvm3X86L13CCRSubclassesE", "llvm::X86::CCRSubclasses"}, + {"_ZN4llvm3X86L21CONTROL_REGSubclassesE", "llvm::X86::CONTROL_REGSubclasses"}, + {"_ZN4llvm3X86L19DEBUG_REGSubclassesE", "llvm::X86::DEBUG_REGSubclasses"}, + {"_ZN4llvm3X86L19GR16_ABCDSubclassesE", "llvm::X86::GR16_ABCDSubclasses"}, + {"_ZN4llvm3X86L17GR32_ADSubclassesE", "llvm::X86::GR32_ADSubclasses"}, + {"_ZN4llvm3X86L19GR64_ABCDSubclassesE", "llvm::X86::GR64_ABCDSubclasses"}, + {"_ZN4llvm3X86L20GR64_TCW64SubclassesE", "llvm::X86::GR64_TCW64Subclasses"}, + {"_ZN4llvm3X86L20GR8_ABCD_HSubclassesE", "llvm::X86::GR8_ABCD_HSubclasses"}, + {"_ZN4llvm3X86L20GR8_ABCD_LSubclassesE", "llvm::X86::GR8_ABCD_LSubclasses"}, + {"_ZN4llvm3X86L15RFP80SubclassesE", "llvm::X86::RFP80Subclasses"}, + {"_ZN4llvm3X86L13RSTSubclassesE", "llvm::X86::RSTSubclasses"}, + {"_ZN4llvm3X86L21SEGMENT_REGSubclassesE", "llvm::X86::SEGMENT_REGSubclasses"}, + {"_ZN4llvm3X86L15VR128SubclassesE", "llvm::X86::VR128Subclasses"}, + {"_ZN4llvm3X86L15VR256SubclassesE", "llvm::X86::VR256Subclasses"}, + {"_ZN4llvm3X86L14VR64SubclassesE", "llvm::X86::VR64Subclasses"}, + {"_ZN4llvm3X86L15CCRSuperclassesE", "llvm::X86::CCRSuperclasses"}, + {"_ZN4llvm3X86L23CONTROL_REGSuperclassesE", "llvm::X86::CONTROL_REGSuperclasses"}, + {"_ZN4llvm3X86L21DEBUG_REGSuperclassesE", "llvm::X86::DEBUG_REGSuperclasses"}, + {"_ZN4llvm3X86L16FR32SuperclassesE", "llvm::X86::FR32Superclasses"}, + {"_ZN4llvm3X86L16GR16SuperclassesE", "llvm::X86::GR16Superclasses"}, + {"_ZN4llvm3X86L16GR32SuperclassesE", "llvm::X86::GR32Superclasses"}, + {"_ZN4llvm3X86L16GR64SuperclassesE", "llvm::X86::GR64Superclasses"}, + {"_ZN4llvm3X86L15GR8SuperclassesE", "llvm::X86::GR8Superclasses"}, + {"_ZN4llvm3X86L17RFP32SuperclassesE", "llvm::X86::RFP32Superclasses"}, + {"_ZN4llvm3X86L15RSTSuperclassesE", "llvm::X86::RSTSuperclasses"}, + {"_ZN4llvm3X86L23SEGMENT_REGSuperclassesE", "llvm::X86::SEGMENT_REGSuperclasses"}, + {"_ZN4llvm3X86L17VR256SuperclassesE", "llvm::X86::VR256Superclasses"}, + {"_ZN4llvm3X86L16VR64SuperclassesE", "llvm::X86::VR64Superclasses"}, + {"_ZN4llvm3X86L16CCRSubRegClassesE", "llvm::X86::CCRSubRegClasses"}, + {"_ZN4llvm12_GLOBAL__N_1L3CCRE", "llvm::(anonymous namespace)::CCR"}, + {"_ZN4llvm3X86L24CONTROL_REGSubRegClassesE", "llvm::X86::CONTROL_REGSubRegClasses"}, + {"_ZN4llvm12_GLOBAL__N_1L11CONTROL_REGE", "llvm::(anonymous namespace)::CONTROL_REG"}, + {"_ZN4llvm3X86L22DEBUG_REGSubRegClassesE", "llvm::X86::DEBUG_REGSubRegClasses"}, + {"_ZN4llvm12_GLOBAL__N_1L9DEBUG_REGE", "llvm::(anonymous namespace)::DEBUG_REG"}, + {"_ZN4llvm3X86L17FR32SubRegClassesE", "llvm::X86::FR32SubRegClasses"}, + {"_ZN4llvm12_GLOBAL__N_1L4FR32E", "llvm::(anonymous namespace)::FR32"}, + {"_ZN4llvm3X86L17FR64SubRegClassesE", "llvm::X86::FR64SubRegClasses"}, + {"_ZN4llvm12_GLOBAL__N_1L4FR64E", "llvm::(anonymous namespace)::FR64"}, + {"_ZN4llvm3X86L14X86_GR16_AO_64E", "llvm::X86::X86_GR16_AO_64"}, + {"_ZN4llvm12_GLOBAL__N_1L4GR16E", "llvm::(anonymous namespace)::GR16"}, + {"_ZN4llvm12_GLOBAL__N_1L9GR16_ABCDE", "llvm::(anonymous namespace)::GR16_ABCD"}, + {"_ZN4llvm12_GLOBAL__N_1L10GR16_NOREXE", "llvm::(anonymous namespace)::GR16_NOREX"}, + {"_ZN4llvm3X86L14X86_GR32_AO_64E", "llvm::X86::X86_GR32_AO_64"}, + {"_ZN4llvm12_GLOBAL__N_1L4GR32E", "llvm::(anonymous namespace)::GR32"}, + {"_ZN4llvm12_GLOBAL__N_1L9GR32_ABCDE", "llvm::(anonymous namespace)::GR32_ABCD"}, + {"_ZN4llvm12_GLOBAL__N_1L7GR32_ADE", "llvm::(anonymous namespace)::GR32_AD"}, + {"_ZN4llvm12_GLOBAL__N_1L10GR32_NOREXE", "llvm::(anonymous namespace)::GR32_NOREX"}, + {"_ZN4llvm3X86L19X86_GR32_NOSP_AO_64E", "llvm::X86::X86_GR32_NOSP_AO_64"}, + {"_ZN4llvm12_GLOBAL__N_1L9GR32_NOSPE", "llvm::(anonymous namespace)::GR32_NOSP"}, + {"_ZN4llvm12_GLOBAL__N_1L7GR32_TCE", "llvm::(anonymous namespace)::GR32_TC"}, + {"_ZN4llvm12_GLOBAL__N_1L4GR64E", "llvm::(anonymous namespace)::GR64"}, + {"_ZN4llvm12_GLOBAL__N_1L9GR64_ABCDE", "llvm::(anonymous namespace)::GR64_ABCD"}, + {"_ZN4llvm12_GLOBAL__N_1L10GR64_NOREXE", "llvm::(anonymous namespace)::GR64_NOREX"}, + {"_ZN4llvm12_GLOBAL__N_1L15GR64_NOREX_NOSPE", "llvm::(anonymous namespace)::GR64_NOREX_NOSP"}, + {"_ZN4llvm12_GLOBAL__N_1L9GR64_NOSPE", "llvm::(anonymous namespace)::GR64_NOSP"}, + {"_ZN4llvm12_GLOBAL__N_1L7GR64_TCE", "llvm::(anonymous namespace)::GR64_TC"}, + {"_ZN4llvm3X86L23GR64_TCW64SubRegClassesE", "llvm::X86::GR64_TCW64SubRegClasses"}, + {"_ZN4llvm12_GLOBAL__N_1L10GR64_TCW64E", "llvm::(anonymous namespace)::GR64_TCW64"}, + {"_ZN4llvm3X86L13X86_GR8_AO_64E", "llvm::X86::X86_GR8_AO_64"}, + {"_ZN4llvm3X86L16GR8SubRegClassesE", "llvm::X86::GR8SubRegClasses"}, + {"_ZN4llvm12_GLOBAL__N_1L3GR8E", "llvm::(anonymous namespace)::GR8"}, + {"_ZN4llvm3X86L23GR8_ABCD_HSubRegClassesE", "llvm::X86::GR8_ABCD_HSubRegClasses"}, + {"_ZN4llvm12_GLOBAL__N_1L10GR8_ABCD_HE", "llvm::(anonymous namespace)::GR8_ABCD_H"}, + {"_ZN4llvm3X86L23GR8_ABCD_LSubRegClassesE", "llvm::X86::GR8_ABCD_LSubRegClasses"}, + {"_ZN4llvm12_GLOBAL__N_1L10GR8_ABCD_LE", "llvm::(anonymous namespace)::GR8_ABCD_L"}, + {"_ZN4llvm3X86L19X86_GR8_NOREX_AO_64E", "llvm::X86::X86_GR8_NOREX_AO_64"}, + {"_ZN4llvm3X86L22GR8_NOREXSubRegClassesE", "llvm::X86::GR8_NOREXSubRegClasses"}, + {"_ZN4llvm12_GLOBAL__N_1L9GR8_NOREXE", "llvm::(anonymous namespace)::GR8_NOREX"}, + {"_ZN4llvm3X86L18RFP32SubRegClassesE", "llvm::X86::RFP32SubRegClasses"}, + {"_ZN4llvm12_GLOBAL__N_1L5RFP32E", "llvm::(anonymous namespace)::RFP32"}, + {"_ZN4llvm3X86L18RFP64SubRegClassesE", "llvm::X86::RFP64SubRegClasses"}, + {"_ZN4llvm12_GLOBAL__N_1L5RFP64E", "llvm::(anonymous namespace)::RFP64"}, + {"_ZN4llvm3X86L18RFP80SubRegClassesE", "llvm::X86::RFP80SubRegClasses"}, + {"_ZN4llvm12_GLOBAL__N_1L5RFP80E", "llvm::(anonymous namespace)::RFP80"}, + {"_ZN4llvm3X86L16RSTSubRegClassesE", "llvm::X86::RSTSubRegClasses"}, + {"_ZN4llvm12_GLOBAL__N_1L3RSTE", "llvm::(anonymous namespace)::RST"}, + {"_ZN4llvm3X86L24SEGMENT_REGSubRegClassesE", "llvm::X86::SEGMENT_REGSubRegClasses"}, + {"_ZN4llvm12_GLOBAL__N_1L11SEGMENT_REGE", "llvm::(anonymous namespace)::SEGMENT_REG"}, + {"_ZN4llvm12_GLOBAL__N_1L5VR128E", "llvm::(anonymous namespace)::VR128"}, + {"_ZN4llvm12_GLOBAL__N_1L5VR256E", "llvm::(anonymous namespace)::VR256"}, + {"_ZN4llvm3X86L17VR64SubRegClassesE", "llvm::X86::VR64SubRegClasses"}, + {"_ZN4llvm12_GLOBAL__N_1L4VR64E", "llvm::(anonymous namespace)::VR64"}, + {"_ZN4llvm12_GLOBAL__N_1L15SubregHashTableE", "llvm::(anonymous namespace)::SubregHashTable"}, + {"_ZN4llvm12_GLOBAL__N_1L16AliasesHashTableE", "llvm::(anonymous namespace)::AliasesHashTable"}, + {"_ZN4llvm12_GLOBAL__N_1L11AH_OverlapsE", "llvm::(anonymous namespace)::AH_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16Empty_SubRegsSetE", "llvm::(anonymous namespace)::Empty_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L15AH_SuperRegsSetE", "llvm::(anonymous namespace)::AH_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11AL_OverlapsE", "llvm::(anonymous namespace)::AL_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15AL_SuperRegsSetE", "llvm::(anonymous namespace)::AL_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11AX_OverlapsE", "llvm::(anonymous namespace)::AX_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L13AX_SubRegsSetE", "llvm::(anonymous namespace)::AX_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L15AX_SuperRegsSetE", "llvm::(anonymous namespace)::AX_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11BH_OverlapsE", "llvm::(anonymous namespace)::BH_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15BH_SuperRegsSetE", "llvm::(anonymous namespace)::BH_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11BL_OverlapsE", "llvm::(anonymous namespace)::BL_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15BL_SuperRegsSetE", "llvm::(anonymous namespace)::BL_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11BP_OverlapsE", "llvm::(anonymous namespace)::BP_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L13BP_SubRegsSetE", "llvm::(anonymous namespace)::BP_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L15BP_SuperRegsSetE", "llvm::(anonymous namespace)::BP_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12BPL_OverlapsE", "llvm::(anonymous namespace)::BPL_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16BPL_SuperRegsSetE", "llvm::(anonymous namespace)::BPL_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11BX_OverlapsE", "llvm::(anonymous namespace)::BX_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L13BX_SubRegsSetE", "llvm::(anonymous namespace)::BX_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L15BX_SuperRegsSetE", "llvm::(anonymous namespace)::BX_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11CH_OverlapsE", "llvm::(anonymous namespace)::CH_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15CH_SuperRegsSetE", "llvm::(anonymous namespace)::CH_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11CL_OverlapsE", "llvm::(anonymous namespace)::CL_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15CL_SuperRegsSetE", "llvm::(anonymous namespace)::CL_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12CR0_OverlapsE", "llvm::(anonymous namespace)::CR0_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L18Empty_SuperRegsSetE", "llvm::(anonymous namespace)::Empty_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12CR1_OverlapsE", "llvm::(anonymous namespace)::CR1_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12CR2_OverlapsE", "llvm::(anonymous namespace)::CR2_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12CR3_OverlapsE", "llvm::(anonymous namespace)::CR3_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12CR4_OverlapsE", "llvm::(anonymous namespace)::CR4_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12CR5_OverlapsE", "llvm::(anonymous namespace)::CR5_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12CR6_OverlapsE", "llvm::(anonymous namespace)::CR6_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12CR7_OverlapsE", "llvm::(anonymous namespace)::CR7_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12CR8_OverlapsE", "llvm::(anonymous namespace)::CR8_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12CR9_OverlapsE", "llvm::(anonymous namespace)::CR9_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L13CR10_OverlapsE", "llvm::(anonymous namespace)::CR10_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L13CR11_OverlapsE", "llvm::(anonymous namespace)::CR11_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L13CR12_OverlapsE", "llvm::(anonymous namespace)::CR12_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L13CR13_OverlapsE", "llvm::(anonymous namespace)::CR13_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L13CR14_OverlapsE", "llvm::(anonymous namespace)::CR14_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L13CR15_OverlapsE", "llvm::(anonymous namespace)::CR15_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L11CS_OverlapsE", "llvm::(anonymous namespace)::CS_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L11CX_OverlapsE", "llvm::(anonymous namespace)::CX_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L13CX_SubRegsSetE", "llvm::(anonymous namespace)::CX_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L15CX_SuperRegsSetE", "llvm::(anonymous namespace)::CX_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11DH_OverlapsE", "llvm::(anonymous namespace)::DH_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15DH_SuperRegsSetE", "llvm::(anonymous namespace)::DH_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11DI_OverlapsE", "llvm::(anonymous namespace)::DI_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L13DI_SubRegsSetE", "llvm::(anonymous namespace)::DI_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L15DI_SuperRegsSetE", "llvm::(anonymous namespace)::DI_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12DIL_OverlapsE", "llvm::(anonymous namespace)::DIL_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16DIL_SuperRegsSetE", "llvm::(anonymous namespace)::DIL_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11DL_OverlapsE", "llvm::(anonymous namespace)::DL_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15DL_SuperRegsSetE", "llvm::(anonymous namespace)::DL_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12DR0_OverlapsE", "llvm::(anonymous namespace)::DR0_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12DR1_OverlapsE", "llvm::(anonymous namespace)::DR1_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12DR2_OverlapsE", "llvm::(anonymous namespace)::DR2_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12DR3_OverlapsE", "llvm::(anonymous namespace)::DR3_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12DR4_OverlapsE", "llvm::(anonymous namespace)::DR4_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12DR5_OverlapsE", "llvm::(anonymous namespace)::DR5_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12DR6_OverlapsE", "llvm::(anonymous namespace)::DR6_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12DR7_OverlapsE", "llvm::(anonymous namespace)::DR7_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L11DS_OverlapsE", "llvm::(anonymous namespace)::DS_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L11DX_OverlapsE", "llvm::(anonymous namespace)::DX_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L13DX_SubRegsSetE", "llvm::(anonymous namespace)::DX_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L15DX_SuperRegsSetE", "llvm::(anonymous namespace)::DX_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12EAX_OverlapsE", "llvm::(anonymous namespace)::EAX_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14EAX_SubRegsSetE", "llvm::(anonymous namespace)::EAX_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L16EAX_SuperRegsSetE", "llvm::(anonymous namespace)::EAX_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12EBP_OverlapsE", "llvm::(anonymous namespace)::EBP_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14EBP_SubRegsSetE", "llvm::(anonymous namespace)::EBP_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L16EBP_SuperRegsSetE", "llvm::(anonymous namespace)::EBP_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12EBX_OverlapsE", "llvm::(anonymous namespace)::EBX_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14EBX_SubRegsSetE", "llvm::(anonymous namespace)::EBX_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L16EBX_SuperRegsSetE", "llvm::(anonymous namespace)::EBX_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12ECX_OverlapsE", "llvm::(anonymous namespace)::ECX_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14ECX_SubRegsSetE", "llvm::(anonymous namespace)::ECX_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L16ECX_SuperRegsSetE", "llvm::(anonymous namespace)::ECX_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12EDI_OverlapsE", "llvm::(anonymous namespace)::EDI_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14EDI_SubRegsSetE", "llvm::(anonymous namespace)::EDI_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L16EDI_SuperRegsSetE", "llvm::(anonymous namespace)::EDI_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12EDX_OverlapsE", "llvm::(anonymous namespace)::EDX_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14EDX_SubRegsSetE", "llvm::(anonymous namespace)::EDX_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L16EDX_SuperRegsSetE", "llvm::(anonymous namespace)::EDX_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L15EFLAGS_OverlapsE", "llvm::(anonymous namespace)::EFLAGS_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12EIP_OverlapsE", "llvm::(anonymous namespace)::EIP_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14EIP_SubRegsSetE", "llvm::(anonymous namespace)::EIP_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L16EIP_SuperRegsSetE", "llvm::(anonymous namespace)::EIP_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12EIZ_OverlapsE", "llvm::(anonymous namespace)::EIZ_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L11ES_OverlapsE", "llvm::(anonymous namespace)::ES_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12ESI_OverlapsE", "llvm::(anonymous namespace)::ESI_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14ESI_SubRegsSetE", "llvm::(anonymous namespace)::ESI_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L16ESI_SuperRegsSetE", "llvm::(anonymous namespace)::ESI_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12ESP_OverlapsE", "llvm::(anonymous namespace)::ESP_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14ESP_SubRegsSetE", "llvm::(anonymous namespace)::ESP_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L16ESP_SuperRegsSetE", "llvm::(anonymous namespace)::ESP_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12FP0_OverlapsE", "llvm::(anonymous namespace)::FP0_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12FP1_OverlapsE", "llvm::(anonymous namespace)::FP1_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12FP2_OverlapsE", "llvm::(anonymous namespace)::FP2_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12FP3_OverlapsE", "llvm::(anonymous namespace)::FP3_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12FP4_OverlapsE", "llvm::(anonymous namespace)::FP4_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12FP5_OverlapsE", "llvm::(anonymous namespace)::FP5_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12FP6_OverlapsE", "llvm::(anonymous namespace)::FP6_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L11FS_OverlapsE", "llvm::(anonymous namespace)::FS_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L11GS_OverlapsE", "llvm::(anonymous namespace)::GS_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L11IP_OverlapsE", "llvm::(anonymous namespace)::IP_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15IP_SuperRegsSetE", "llvm::(anonymous namespace)::IP_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12MM0_OverlapsE", "llvm::(anonymous namespace)::MM0_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12MM1_OverlapsE", "llvm::(anonymous namespace)::MM1_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12MM2_OverlapsE", "llvm::(anonymous namespace)::MM2_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12MM3_OverlapsE", "llvm::(anonymous namespace)::MM3_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12MM4_OverlapsE", "llvm::(anonymous namespace)::MM4_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12MM5_OverlapsE", "llvm::(anonymous namespace)::MM5_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12MM6_OverlapsE", "llvm::(anonymous namespace)::MM6_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12MM7_OverlapsE", "llvm::(anonymous namespace)::MM7_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L11R8_OverlapsE", "llvm::(anonymous namespace)::R8_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L13R8_SubRegsSetE", "llvm::(anonymous namespace)::R8_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12R8B_OverlapsE", "llvm::(anonymous namespace)::R8B_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16R8B_SuperRegsSetE", "llvm::(anonymous namespace)::R8B_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12R8D_OverlapsE", "llvm::(anonymous namespace)::R8D_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14R8D_SubRegsSetE", "llvm::(anonymous namespace)::R8D_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L16R8D_SuperRegsSetE", "llvm::(anonymous namespace)::R8D_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12R8W_OverlapsE", "llvm::(anonymous namespace)::R8W_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14R8W_SubRegsSetE", "llvm::(anonymous namespace)::R8W_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L16R8W_SuperRegsSetE", "llvm::(anonymous namespace)::R8W_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11R9_OverlapsE", "llvm::(anonymous namespace)::R9_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L13R9_SubRegsSetE", "llvm::(anonymous namespace)::R9_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12R9B_OverlapsE", "llvm::(anonymous namespace)::R9B_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16R9B_SuperRegsSetE", "llvm::(anonymous namespace)::R9B_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12R9D_OverlapsE", "llvm::(anonymous namespace)::R9D_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14R9D_SubRegsSetE", "llvm::(anonymous namespace)::R9D_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L16R9D_SuperRegsSetE", "llvm::(anonymous namespace)::R9D_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12R9W_OverlapsE", "llvm::(anonymous namespace)::R9W_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14R9W_SubRegsSetE", "llvm::(anonymous namespace)::R9W_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L16R9W_SuperRegsSetE", "llvm::(anonymous namespace)::R9W_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12R10_OverlapsE", "llvm::(anonymous namespace)::R10_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14R10_SubRegsSetE", "llvm::(anonymous namespace)::R10_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L13R10B_OverlapsE", "llvm::(anonymous namespace)::R10B_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L17R10B_SuperRegsSetE", "llvm::(anonymous namespace)::R10B_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L13R10D_OverlapsE", "llvm::(anonymous namespace)::R10D_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15R10D_SubRegsSetE", "llvm::(anonymous namespace)::R10D_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L17R10D_SuperRegsSetE", "llvm::(anonymous namespace)::R10D_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L13R10W_OverlapsE", "llvm::(anonymous namespace)::R10W_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15R10W_SubRegsSetE", "llvm::(anonymous namespace)::R10W_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L17R10W_SuperRegsSetE", "llvm::(anonymous namespace)::R10W_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12R11_OverlapsE", "llvm::(anonymous namespace)::R11_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14R11_SubRegsSetE", "llvm::(anonymous namespace)::R11_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L13R11B_OverlapsE", "llvm::(anonymous namespace)::R11B_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L17R11B_SuperRegsSetE", "llvm::(anonymous namespace)::R11B_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L13R11D_OverlapsE", "llvm::(anonymous namespace)::R11D_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15R11D_SubRegsSetE", "llvm::(anonymous namespace)::R11D_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L17R11D_SuperRegsSetE", "llvm::(anonymous namespace)::R11D_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L13R11W_OverlapsE", "llvm::(anonymous namespace)::R11W_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15R11W_SubRegsSetE", "llvm::(anonymous namespace)::R11W_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L17R11W_SuperRegsSetE", "llvm::(anonymous namespace)::R11W_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12R12_OverlapsE", "llvm::(anonymous namespace)::R12_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14R12_SubRegsSetE", "llvm::(anonymous namespace)::R12_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L13R12B_OverlapsE", "llvm::(anonymous namespace)::R12B_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L17R12B_SuperRegsSetE", "llvm::(anonymous namespace)::R12B_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L13R12D_OverlapsE", "llvm::(anonymous namespace)::R12D_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15R12D_SubRegsSetE", "llvm::(anonymous namespace)::R12D_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L17R12D_SuperRegsSetE", "llvm::(anonymous namespace)::R12D_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L13R12W_OverlapsE", "llvm::(anonymous namespace)::R12W_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15R12W_SubRegsSetE", "llvm::(anonymous namespace)::R12W_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L17R12W_SuperRegsSetE", "llvm::(anonymous namespace)::R12W_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12R13_OverlapsE", "llvm::(anonymous namespace)::R13_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14R13_SubRegsSetE", "llvm::(anonymous namespace)::R13_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L13R13B_OverlapsE", "llvm::(anonymous namespace)::R13B_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L17R13B_SuperRegsSetE", "llvm::(anonymous namespace)::R13B_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L13R13D_OverlapsE", "llvm::(anonymous namespace)::R13D_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15R13D_SubRegsSetE", "llvm::(anonymous namespace)::R13D_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L17R13D_SuperRegsSetE", "llvm::(anonymous namespace)::R13D_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L13R13W_OverlapsE", "llvm::(anonymous namespace)::R13W_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15R13W_SubRegsSetE", "llvm::(anonymous namespace)::R13W_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L17R13W_SuperRegsSetE", "llvm::(anonymous namespace)::R13W_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12R14_OverlapsE", "llvm::(anonymous namespace)::R14_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14R14_SubRegsSetE", "llvm::(anonymous namespace)::R14_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L13R14B_OverlapsE", "llvm::(anonymous namespace)::R14B_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L17R14B_SuperRegsSetE", "llvm::(anonymous namespace)::R14B_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L13R14D_OverlapsE", "llvm::(anonymous namespace)::R14D_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15R14D_SubRegsSetE", "llvm::(anonymous namespace)::R14D_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L17R14D_SuperRegsSetE", "llvm::(anonymous namespace)::R14D_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L13R14W_OverlapsE", "llvm::(anonymous namespace)::R14W_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15R14W_SubRegsSetE", "llvm::(anonymous namespace)::R14W_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L17R14W_SuperRegsSetE", "llvm::(anonymous namespace)::R14W_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12R15_OverlapsE", "llvm::(anonymous namespace)::R15_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14R15_SubRegsSetE", "llvm::(anonymous namespace)::R15_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L13R15B_OverlapsE", "llvm::(anonymous namespace)::R15B_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L17R15B_SuperRegsSetE", "llvm::(anonymous namespace)::R15B_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L13R15D_OverlapsE", "llvm::(anonymous namespace)::R15D_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15R15D_SubRegsSetE", "llvm::(anonymous namespace)::R15D_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L17R15D_SuperRegsSetE", "llvm::(anonymous namespace)::R15D_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L13R15W_OverlapsE", "llvm::(anonymous namespace)::R15W_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15R15W_SubRegsSetE", "llvm::(anonymous namespace)::R15W_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L17R15W_SuperRegsSetE", "llvm::(anonymous namespace)::R15W_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12RAX_OverlapsE", "llvm::(anonymous namespace)::RAX_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14RAX_SubRegsSetE", "llvm::(anonymous namespace)::RAX_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12RBP_OverlapsE", "llvm::(anonymous namespace)::RBP_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14RBP_SubRegsSetE", "llvm::(anonymous namespace)::RBP_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12RBX_OverlapsE", "llvm::(anonymous namespace)::RBX_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14RBX_SubRegsSetE", "llvm::(anonymous namespace)::RBX_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12RCX_OverlapsE", "llvm::(anonymous namespace)::RCX_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14RCX_SubRegsSetE", "llvm::(anonymous namespace)::RCX_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12RDI_OverlapsE", "llvm::(anonymous namespace)::RDI_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14RDI_SubRegsSetE", "llvm::(anonymous namespace)::RDI_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12RDX_OverlapsE", "llvm::(anonymous namespace)::RDX_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14RDX_SubRegsSetE", "llvm::(anonymous namespace)::RDX_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12RIP_OverlapsE", "llvm::(anonymous namespace)::RIP_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14RIP_SubRegsSetE", "llvm::(anonymous namespace)::RIP_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12RIZ_OverlapsE", "llvm::(anonymous namespace)::RIZ_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12RSI_OverlapsE", "llvm::(anonymous namespace)::RSI_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14RSI_SubRegsSetE", "llvm::(anonymous namespace)::RSI_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12RSP_OverlapsE", "llvm::(anonymous namespace)::RSP_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14RSP_SubRegsSetE", "llvm::(anonymous namespace)::RSP_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11SI_OverlapsE", "llvm::(anonymous namespace)::SI_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L13SI_SubRegsSetE", "llvm::(anonymous namespace)::SI_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L15SI_SuperRegsSetE", "llvm::(anonymous namespace)::SI_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12SIL_OverlapsE", "llvm::(anonymous namespace)::SIL_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16SIL_SuperRegsSetE", "llvm::(anonymous namespace)::SIL_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11SP_OverlapsE", "llvm::(anonymous namespace)::SP_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L13SP_SubRegsSetE", "llvm::(anonymous namespace)::SP_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L15SP_SuperRegsSetE", "llvm::(anonymous namespace)::SP_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12SPL_OverlapsE", "llvm::(anonymous namespace)::SPL_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16SPL_SuperRegsSetE", "llvm::(anonymous namespace)::SPL_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11SS_OverlapsE", "llvm::(anonymous namespace)::SS_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12ST0_OverlapsE", "llvm::(anonymous namespace)::ST0_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12ST1_OverlapsE", "llvm::(anonymous namespace)::ST1_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12ST2_OverlapsE", "llvm::(anonymous namespace)::ST2_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12ST3_OverlapsE", "llvm::(anonymous namespace)::ST3_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12ST4_OverlapsE", "llvm::(anonymous namespace)::ST4_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12ST5_OverlapsE", "llvm::(anonymous namespace)::ST5_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12ST6_OverlapsE", "llvm::(anonymous namespace)::ST6_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12ST7_OverlapsE", "llvm::(anonymous namespace)::ST7_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L13XMM0_OverlapsE", "llvm::(anonymous namespace)::XMM0_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L17XMM0_SuperRegsSetE", "llvm::(anonymous namespace)::XMM0_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L13XMM1_OverlapsE", "llvm::(anonymous namespace)::XMM1_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L17XMM1_SuperRegsSetE", "llvm::(anonymous namespace)::XMM1_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L13XMM2_OverlapsE", "llvm::(anonymous namespace)::XMM2_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L17XMM2_SuperRegsSetE", "llvm::(anonymous namespace)::XMM2_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L13XMM3_OverlapsE", "llvm::(anonymous namespace)::XMM3_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L17XMM3_SuperRegsSetE", "llvm::(anonymous namespace)::XMM3_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L13XMM4_OverlapsE", "llvm::(anonymous namespace)::XMM4_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L17XMM4_SuperRegsSetE", "llvm::(anonymous namespace)::XMM4_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L13XMM5_OverlapsE", "llvm::(anonymous namespace)::XMM5_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L17XMM5_SuperRegsSetE", "llvm::(anonymous namespace)::XMM5_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L13XMM6_OverlapsE", "llvm::(anonymous namespace)::XMM6_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L17XMM6_SuperRegsSetE", "llvm::(anonymous namespace)::XMM6_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L13XMM7_OverlapsE", "llvm::(anonymous namespace)::XMM7_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L17XMM7_SuperRegsSetE", "llvm::(anonymous namespace)::XMM7_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L13XMM8_OverlapsE", "llvm::(anonymous namespace)::XMM8_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L17XMM8_SuperRegsSetE", "llvm::(anonymous namespace)::XMM8_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L13XMM9_OverlapsE", "llvm::(anonymous namespace)::XMM9_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L17XMM9_SuperRegsSetE", "llvm::(anonymous namespace)::XMM9_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L14XMM10_OverlapsE", "llvm::(anonymous namespace)::XMM10_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L18XMM10_SuperRegsSetE", "llvm::(anonymous namespace)::XMM10_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L14XMM11_OverlapsE", "llvm::(anonymous namespace)::XMM11_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L18XMM11_SuperRegsSetE", "llvm::(anonymous namespace)::XMM11_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L14XMM12_OverlapsE", "llvm::(anonymous namespace)::XMM12_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L18XMM12_SuperRegsSetE", "llvm::(anonymous namespace)::XMM12_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L14XMM13_OverlapsE", "llvm::(anonymous namespace)::XMM13_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L18XMM13_SuperRegsSetE", "llvm::(anonymous namespace)::XMM13_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L14XMM14_OverlapsE", "llvm::(anonymous namespace)::XMM14_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L18XMM14_SuperRegsSetE", "llvm::(anonymous namespace)::XMM14_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L14XMM15_OverlapsE", "llvm::(anonymous namespace)::XMM15_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L18XMM15_SuperRegsSetE", "llvm::(anonymous namespace)::XMM15_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L13YMM0_OverlapsE", "llvm::(anonymous namespace)::YMM0_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15YMM0_SubRegsSetE", "llvm::(anonymous namespace)::YMM0_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L13YMM1_OverlapsE", "llvm::(anonymous namespace)::YMM1_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15YMM1_SubRegsSetE", "llvm::(anonymous namespace)::YMM1_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L13YMM2_OverlapsE", "llvm::(anonymous namespace)::YMM2_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15YMM2_SubRegsSetE", "llvm::(anonymous namespace)::YMM2_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L13YMM3_OverlapsE", "llvm::(anonymous namespace)::YMM3_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15YMM3_SubRegsSetE", "llvm::(anonymous namespace)::YMM3_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L13YMM4_OverlapsE", "llvm::(anonymous namespace)::YMM4_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15YMM4_SubRegsSetE", "llvm::(anonymous namespace)::YMM4_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L13YMM5_OverlapsE", "llvm::(anonymous namespace)::YMM5_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15YMM5_SubRegsSetE", "llvm::(anonymous namespace)::YMM5_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L13YMM6_OverlapsE", "llvm::(anonymous namespace)::YMM6_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15YMM6_SubRegsSetE", "llvm::(anonymous namespace)::YMM6_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L13YMM7_OverlapsE", "llvm::(anonymous namespace)::YMM7_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15YMM7_SubRegsSetE", "llvm::(anonymous namespace)::YMM7_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L13YMM8_OverlapsE", "llvm::(anonymous namespace)::YMM8_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15YMM8_SubRegsSetE", "llvm::(anonymous namespace)::YMM8_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L13YMM9_OverlapsE", "llvm::(anonymous namespace)::YMM9_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15YMM9_SubRegsSetE", "llvm::(anonymous namespace)::YMM9_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L14YMM10_OverlapsE", "llvm::(anonymous namespace)::YMM10_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16YMM10_SubRegsSetE", "llvm::(anonymous namespace)::YMM10_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L14YMM11_OverlapsE", "llvm::(anonymous namespace)::YMM11_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16YMM11_SubRegsSetE", "llvm::(anonymous namespace)::YMM11_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L14YMM12_OverlapsE", "llvm::(anonymous namespace)::YMM12_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16YMM12_SubRegsSetE", "llvm::(anonymous namespace)::YMM12_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L14YMM13_OverlapsE", "llvm::(anonymous namespace)::YMM13_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16YMM13_SubRegsSetE", "llvm::(anonymous namespace)::YMM13_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L14YMM14_OverlapsE", "llvm::(anonymous namespace)::YMM14_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16YMM14_SubRegsSetE", "llvm::(anonymous namespace)::YMM14_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L14YMM15_OverlapsE", "llvm::(anonymous namespace)::YMM15_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16YMM15_SubRegsSetE", "llvm::(anonymous namespace)::YMM15_SubRegsSet"}, + {"_ZN4llvmL13ImplicitList1E", "llvm::ImplicitList1"}, + {"_ZN4llvmL13ImplicitList2E", "llvm::ImplicitList2"}, + {"_ZN4llvmL13ImplicitList3E", "llvm::ImplicitList3"}, + {"_ZN4llvmL13ImplicitList4E", "llvm::ImplicitList4"}, + {"_ZN4llvmL13ImplicitList5E", "llvm::ImplicitList5"}, + {"_ZN4llvmL13ImplicitList6E", "llvm::ImplicitList6"}, + {"_ZN4llvmL13ImplicitList7E", "llvm::ImplicitList7"}, + {"_ZN4llvmL13ImplicitList8E", "llvm::ImplicitList8"}, + {"_ZN4llvmL13ImplicitList9E", "llvm::ImplicitList9"}, + {"_ZN4llvmL14ImplicitList10E", "llvm::ImplicitList10"}, + {"_ZN4llvmL14ImplicitList11E", "llvm::ImplicitList11"}, + {"_ZN4llvmL14ImplicitList12E", "llvm::ImplicitList12"}, + {"_ZN4llvmL14ImplicitList13E", "llvm::ImplicitList13"}, + {"_ZN4llvmL14ImplicitList14E", "llvm::ImplicitList14"}, + {"_ZN4llvmL14ImplicitList15E", "llvm::ImplicitList15"}, + {"_ZN4llvmL14ImplicitList16E", "llvm::ImplicitList16"}, + {"_ZN4llvm3ARML18CCRSuperRegClassesE", "llvm::ARM::CCRSuperRegClasses"}, + {"_ZN4llvm3ARML18GPRSuperRegClassesE", "llvm::ARM::GPRSuperRegClasses"}, + {"_ZN4llvm3ARML20QPR_8SuperRegClassesE", "llvm::ARM::QPR_8SuperRegClasses"}, + {"_ZN4llvm3ARML19QQPRSuperRegClassesE", "llvm::ARM::QQPRSuperRegClasses"}, + {"_ZN4llvm3ARML24QQPR_VFP2SuperRegClassesE", "llvm::ARM::QQPR_VFP2SuperRegClasses"}, + {"_ZN4llvm3ARML21QQQQPRSuperRegClassesE", "llvm::ARM::QQQQPRSuperRegClasses"}, + {"_ZN4llvm3ARML19rGPRSuperRegClassesE", "llvm::ARM::rGPRSuperRegClasses"}, + {"_ZN4llvm3ARML19tGPRSuperRegClassesE", "llvm::ARM::tGPRSuperRegClasses"}, + {"_ZN4llvm3ARML20tcGPRSuperRegClassesE", "llvm::ARM::tcGPRSuperRegClasses"}, + {"_ZN4llvm3ARML13CCRSubclassesE", "llvm::ARM::CCRSubclasses"}, + {"_ZN4llvm3ARML15DPR_8SubclassesE", "llvm::ARM::DPR_8Subclasses"}, + {"_ZN4llvm3ARML15QPR_8SubclassesE", "llvm::ARM::QPR_8Subclasses"}, + {"_ZN4llvm3ARML19QQPR_VFP2SubclassesE", "llvm::ARM::QQPR_VFP2Subclasses"}, + {"_ZN4llvm3ARML16QQQQPRSubclassesE", "llvm::ARM::QQQQPRSubclasses"}, + {"_ZN4llvm3ARML15SPR_8SubclassesE", "llvm::ARM::SPR_8Subclasses"}, + {"_ZN4llvm3ARML14tGPRSubclassesE", "llvm::ARM::tGPRSubclasses"}, + {"_ZN4llvm3ARML15tcGPRSubclassesE", "llvm::ARM::tcGPRSubclasses"}, + {"_ZN4llvm3ARML15CCRSuperclassesE", "llvm::ARM::CCRSuperclasses"}, + {"_ZN4llvm3ARML15DPRSuperclassesE", "llvm::ARM::DPRSuperclasses"}, + {"_ZN4llvm3ARML15GPRSuperclassesE", "llvm::ARM::GPRSuperclasses"}, + {"_ZN4llvm3ARML15QPRSuperclassesE", "llvm::ARM::QPRSuperclasses"}, + {"_ZN4llvm3ARML16QQPRSuperclassesE", "llvm::ARM::QQPRSuperclasses"}, + {"_ZN4llvm3ARML18QQQQPRSuperclassesE", "llvm::ARM::QQQQPRSuperclasses"}, + {"_ZN4llvm3ARML15SPRSuperclassesE", "llvm::ARM::SPRSuperclasses"}, + {"_ZN4llvm3ARML16CCRSubRegClassesE", "llvm::ARM::CCRSubRegClasses"}, + {"_ZN4llvm12_GLOBAL__N_1L3CCRE", "llvm::(anonymous namespace)::CCR"}, + {"_ZN4llvm3ARML12ARM_DPR_VFP3E", "llvm::ARM::ARM_DPR_VFP3"}, + {"_ZN4llvm3ARML12ARM_DPR_VFP2E", "llvm::ARM::ARM_DPR_VFP2"}, + {"_ZN4llvm3ARML16DPRSubRegClassesE", "llvm::ARM::DPRSubRegClasses"}, + {"_ZN4llvm12_GLOBAL__N_1L3DPRE", "llvm::(anonymous namespace)::DPR"}, + {"_ZN4llvm12_GLOBAL__N_1L5DPR_8E", "llvm::(anonymous namespace)::DPR_8"}, + {"_ZN4llvm12_GLOBAL__N_1L8DPR_VFP2E", "llvm::(anonymous namespace)::DPR_VFP2"}, + {"_ZN4llvm3ARML12THUMB_GPR_AOE", "llvm::ARM::THUMB_GPR_AO"}, + {"_ZN4llvm3ARML10ARM_GPR_AOE", "llvm::ARM::ARM_GPR_AO"}, + {"_ZN4llvm3ARML16GPRSubRegClassesE", "llvm::ARM::GPRSubRegClasses"}, + {"_ZN4llvm12_GLOBAL__N_1L3GPRE", "llvm::(anonymous namespace)::GPR"}, + {"_ZN4llvm3ARML7ARM_QPRE", "llvm::ARM::ARM_QPR"}, + {"_ZN4llvm12_GLOBAL__N_1L3QPRE", "llvm::(anonymous namespace)::QPR"}, + {"_ZN4llvm12_GLOBAL__N_1L5QPR_8E", "llvm::(anonymous namespace)::QPR_8"}, + {"_ZN4llvm12_GLOBAL__N_1L8QPR_VFP2E", "llvm::(anonymous namespace)::QPR_VFP2"}, + {"_ZN4llvm3ARML8ARM_QQPRE", "llvm::ARM::ARM_QQPR"}, + {"_ZN4llvm12_GLOBAL__N_1L4QQPRE", "llvm::(anonymous namespace)::QQPR"}, + {"_ZN4llvm12_GLOBAL__N_1L9QQPR_VFP2E", "llvm::(anonymous namespace)::QQPR_VFP2"}, + {"_ZN4llvm3ARML10ARM_QQQQPRE", "llvm::ARM::ARM_QQQQPR"}, + {"_ZN4llvm12_GLOBAL__N_1L6QQQQPRE", "llvm::(anonymous namespace)::QQQQPR"}, + {"_ZN4llvm3ARML16SPRSubRegClassesE", "llvm::ARM::SPRSubRegClasses"}, + {"_ZN4llvm12_GLOBAL__N_1L3SPRE", "llvm::(anonymous namespace)::SPR"}, + {"_ZN4llvm3ARML18SPR_8SubRegClassesE", "llvm::ARM::SPR_8SubRegClasses"}, + {"_ZN4llvm12_GLOBAL__N_1L5SPR_8E", "llvm::(anonymous namespace)::SPR_8"}, + {"_ZN4llvm3ARML13THUMB_rGPR_AOE", "llvm::ARM::THUMB_rGPR_AO"}, + {"_ZN4llvm3ARML11ARM_rGPR_AOE", "llvm::ARM::ARM_rGPR_AO"}, + {"_ZN4llvm3ARML17rGPRSubRegClassesE", "llvm::ARM::rGPRSubRegClasses"}, + {"_ZN4llvm12_GLOBAL__N_1L4rGPRE", "llvm::(anonymous namespace)::rGPR"}, + {"_ZN4llvm3ARML17tGPRSubRegClassesE", "llvm::ARM::tGPRSubRegClasses"}, + {"_ZN4llvm12_GLOBAL__N_1L4tGPRE", "llvm::(anonymous namespace)::tGPR"}, + {"_ZN4llvm3ARML15THUMB_GPR_AO_TCE", "llvm::ARM::THUMB_GPR_AO_TC"}, + {"_ZN4llvm3ARML13ARM_GPR_R9_TCE", "llvm::ARM::ARM_GPR_R9_TC"}, + {"_ZN4llvm3ARML15ARM_GPR_NOR9_TCE", "llvm::ARM::ARM_GPR_NOR9_TC"}, + {"_ZN4llvm3ARML18tcGPRSubRegClassesE", "llvm::ARM::tcGPRSubRegClasses"}, + {"_ZN4llvm12_GLOBAL__N_1L5tcGPRE", "llvm::(anonymous namespace)::tcGPR"}, + {"_ZN4llvm12_GLOBAL__N_1L15SubregHashTableE", "llvm::(anonymous namespace)::SubregHashTable"}, + {"_ZN4llvm12_GLOBAL__N_1L16AliasesHashTableE", "llvm::(anonymous namespace)::AliasesHashTable"}, + {"_ZN4llvm12_GLOBAL__N_1L13CPSR_OverlapsE", "llvm::(anonymous namespace)::CPSR_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16Empty_SubRegsSetE", "llvm::(anonymous namespace)::Empty_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L18Empty_SuperRegsSetE", "llvm::(anonymous namespace)::Empty_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11D0_OverlapsE", "llvm::(anonymous namespace)::D0_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L13D0_SubRegsSetE", "llvm::(anonymous namespace)::D0_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L15D0_SuperRegsSetE", "llvm::(anonymous namespace)::D0_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11D1_OverlapsE", "llvm::(anonymous namespace)::D1_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L13D1_SubRegsSetE", "llvm::(anonymous namespace)::D1_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L15D1_SuperRegsSetE", "llvm::(anonymous namespace)::D1_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11D2_OverlapsE", "llvm::(anonymous namespace)::D2_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L13D2_SubRegsSetE", "llvm::(anonymous namespace)::D2_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L15D2_SuperRegsSetE", "llvm::(anonymous namespace)::D2_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11D3_OverlapsE", "llvm::(anonymous namespace)::D3_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L13D3_SubRegsSetE", "llvm::(anonymous namespace)::D3_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L15D3_SuperRegsSetE", "llvm::(anonymous namespace)::D3_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11D4_OverlapsE", "llvm::(anonymous namespace)::D4_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L13D4_SubRegsSetE", "llvm::(anonymous namespace)::D4_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L15D4_SuperRegsSetE", "llvm::(anonymous namespace)::D4_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11D5_OverlapsE", "llvm::(anonymous namespace)::D5_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L13D5_SubRegsSetE", "llvm::(anonymous namespace)::D5_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L15D5_SuperRegsSetE", "llvm::(anonymous namespace)::D5_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11D6_OverlapsE", "llvm::(anonymous namespace)::D6_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L13D6_SubRegsSetE", "llvm::(anonymous namespace)::D6_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L15D6_SuperRegsSetE", "llvm::(anonymous namespace)::D6_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11D7_OverlapsE", "llvm::(anonymous namespace)::D7_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L13D7_SubRegsSetE", "llvm::(anonymous namespace)::D7_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L15D7_SuperRegsSetE", "llvm::(anonymous namespace)::D7_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11D8_OverlapsE", "llvm::(anonymous namespace)::D8_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L13D8_SubRegsSetE", "llvm::(anonymous namespace)::D8_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L15D8_SuperRegsSetE", "llvm::(anonymous namespace)::D8_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11D9_OverlapsE", "llvm::(anonymous namespace)::D9_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L13D9_SubRegsSetE", "llvm::(anonymous namespace)::D9_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L15D9_SuperRegsSetE", "llvm::(anonymous namespace)::D9_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12D10_OverlapsE", "llvm::(anonymous namespace)::D10_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14D10_SubRegsSetE", "llvm::(anonymous namespace)::D10_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L16D10_SuperRegsSetE", "llvm::(anonymous namespace)::D10_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12D11_OverlapsE", "llvm::(anonymous namespace)::D11_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14D11_SubRegsSetE", "llvm::(anonymous namespace)::D11_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L16D11_SuperRegsSetE", "llvm::(anonymous namespace)::D11_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12D12_OverlapsE", "llvm::(anonymous namespace)::D12_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14D12_SubRegsSetE", "llvm::(anonymous namespace)::D12_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L16D12_SuperRegsSetE", "llvm::(anonymous namespace)::D12_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12D13_OverlapsE", "llvm::(anonymous namespace)::D13_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14D13_SubRegsSetE", "llvm::(anonymous namespace)::D13_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L16D13_SuperRegsSetE", "llvm::(anonymous namespace)::D13_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12D14_OverlapsE", "llvm::(anonymous namespace)::D14_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14D14_SubRegsSetE", "llvm::(anonymous namespace)::D14_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L16D14_SuperRegsSetE", "llvm::(anonymous namespace)::D14_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12D15_OverlapsE", "llvm::(anonymous namespace)::D15_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14D15_SubRegsSetE", "llvm::(anonymous namespace)::D15_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L16D15_SuperRegsSetE", "llvm::(anonymous namespace)::D15_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12D16_OverlapsE", "llvm::(anonymous namespace)::D16_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16D16_SuperRegsSetE", "llvm::(anonymous namespace)::D16_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12D17_OverlapsE", "llvm::(anonymous namespace)::D17_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16D17_SuperRegsSetE", "llvm::(anonymous namespace)::D17_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12D18_OverlapsE", "llvm::(anonymous namespace)::D18_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16D18_SuperRegsSetE", "llvm::(anonymous namespace)::D18_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12D19_OverlapsE", "llvm::(anonymous namespace)::D19_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16D19_SuperRegsSetE", "llvm::(anonymous namespace)::D19_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12D20_OverlapsE", "llvm::(anonymous namespace)::D20_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16D20_SuperRegsSetE", "llvm::(anonymous namespace)::D20_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12D21_OverlapsE", "llvm::(anonymous namespace)::D21_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16D21_SuperRegsSetE", "llvm::(anonymous namespace)::D21_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12D22_OverlapsE", "llvm::(anonymous namespace)::D22_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16D22_SuperRegsSetE", "llvm::(anonymous namespace)::D22_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12D23_OverlapsE", "llvm::(anonymous namespace)::D23_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16D23_SuperRegsSetE", "llvm::(anonymous namespace)::D23_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12D24_OverlapsE", "llvm::(anonymous namespace)::D24_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16D24_SuperRegsSetE", "llvm::(anonymous namespace)::D24_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12D25_OverlapsE", "llvm::(anonymous namespace)::D25_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16D25_SuperRegsSetE", "llvm::(anonymous namespace)::D25_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12D26_OverlapsE", "llvm::(anonymous namespace)::D26_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16D26_SuperRegsSetE", "llvm::(anonymous namespace)::D26_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12D27_OverlapsE", "llvm::(anonymous namespace)::D27_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16D27_SuperRegsSetE", "llvm::(anonymous namespace)::D27_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12D28_OverlapsE", "llvm::(anonymous namespace)::D28_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16D28_SuperRegsSetE", "llvm::(anonymous namespace)::D28_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12D29_OverlapsE", "llvm::(anonymous namespace)::D29_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16D29_SuperRegsSetE", "llvm::(anonymous namespace)::D29_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12D30_OverlapsE", "llvm::(anonymous namespace)::D30_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16D30_SuperRegsSetE", "llvm::(anonymous namespace)::D30_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12D31_OverlapsE", "llvm::(anonymous namespace)::D31_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16D31_SuperRegsSetE", "llvm::(anonymous namespace)::D31_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L14FPEXC_OverlapsE", "llvm::(anonymous namespace)::FPEXC_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14FPSCR_OverlapsE", "llvm::(anonymous namespace)::FPSCR_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14FPSID_OverlapsE", "llvm::(anonymous namespace)::FPSID_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16ITSTATE_OverlapsE", "llvm::(anonymous namespace)::ITSTATE_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L11LR_OverlapsE", "llvm::(anonymous namespace)::LR_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L11PC_OverlapsE", "llvm::(anonymous namespace)::PC_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L11Q0_OverlapsE", "llvm::(anonymous namespace)::Q0_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L13Q0_SubRegsSetE", "llvm::(anonymous namespace)::Q0_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L15Q0_SuperRegsSetE", "llvm::(anonymous namespace)::Q0_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11Q1_OverlapsE", "llvm::(anonymous namespace)::Q1_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L13Q1_SubRegsSetE", "llvm::(anonymous namespace)::Q1_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L15Q1_SuperRegsSetE", "llvm::(anonymous namespace)::Q1_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11Q2_OverlapsE", "llvm::(anonymous namespace)::Q2_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L13Q2_SubRegsSetE", "llvm::(anonymous namespace)::Q2_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L15Q2_SuperRegsSetE", "llvm::(anonymous namespace)::Q2_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11Q3_OverlapsE", "llvm::(anonymous namespace)::Q3_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L13Q3_SubRegsSetE", "llvm::(anonymous namespace)::Q3_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L15Q3_SuperRegsSetE", "llvm::(anonymous namespace)::Q3_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11Q4_OverlapsE", "llvm::(anonymous namespace)::Q4_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L13Q4_SubRegsSetE", "llvm::(anonymous namespace)::Q4_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L15Q4_SuperRegsSetE", "llvm::(anonymous namespace)::Q4_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11Q5_OverlapsE", "llvm::(anonymous namespace)::Q5_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L13Q5_SubRegsSetE", "llvm::(anonymous namespace)::Q5_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L15Q5_SuperRegsSetE", "llvm::(anonymous namespace)::Q5_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11Q6_OverlapsE", "llvm::(anonymous namespace)::Q6_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L13Q6_SubRegsSetE", "llvm::(anonymous namespace)::Q6_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L15Q6_SuperRegsSetE", "llvm::(anonymous namespace)::Q6_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11Q7_OverlapsE", "llvm::(anonymous namespace)::Q7_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L13Q7_SubRegsSetE", "llvm::(anonymous namespace)::Q7_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L15Q7_SuperRegsSetE", "llvm::(anonymous namespace)::Q7_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11Q8_OverlapsE", "llvm::(anonymous namespace)::Q8_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L13Q8_SubRegsSetE", "llvm::(anonymous namespace)::Q8_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L15Q8_SuperRegsSetE", "llvm::(anonymous namespace)::Q8_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11Q9_OverlapsE", "llvm::(anonymous namespace)::Q9_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L13Q9_SubRegsSetE", "llvm::(anonymous namespace)::Q9_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L15Q9_SuperRegsSetE", "llvm::(anonymous namespace)::Q9_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12Q10_OverlapsE", "llvm::(anonymous namespace)::Q10_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14Q10_SubRegsSetE", "llvm::(anonymous namespace)::Q10_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L16Q10_SuperRegsSetE", "llvm::(anonymous namespace)::Q10_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12Q11_OverlapsE", "llvm::(anonymous namespace)::Q11_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14Q11_SubRegsSetE", "llvm::(anonymous namespace)::Q11_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L16Q11_SuperRegsSetE", "llvm::(anonymous namespace)::Q11_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12Q12_OverlapsE", "llvm::(anonymous namespace)::Q12_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14Q12_SubRegsSetE", "llvm::(anonymous namespace)::Q12_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L16Q12_SuperRegsSetE", "llvm::(anonymous namespace)::Q12_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12Q13_OverlapsE", "llvm::(anonymous namespace)::Q13_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14Q13_SubRegsSetE", "llvm::(anonymous namespace)::Q13_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L16Q13_SuperRegsSetE", "llvm::(anonymous namespace)::Q13_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12Q14_OverlapsE", "llvm::(anonymous namespace)::Q14_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14Q14_SubRegsSetE", "llvm::(anonymous namespace)::Q14_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L16Q14_SuperRegsSetE", "llvm::(anonymous namespace)::Q14_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12Q15_OverlapsE", "llvm::(anonymous namespace)::Q15_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14Q15_SubRegsSetE", "llvm::(anonymous namespace)::Q15_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L16Q15_SuperRegsSetE", "llvm::(anonymous namespace)::Q15_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12QQ0_OverlapsE", "llvm::(anonymous namespace)::QQ0_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14QQ0_SubRegsSetE", "llvm::(anonymous namespace)::QQ0_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L16QQ0_SuperRegsSetE", "llvm::(anonymous namespace)::QQ0_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12QQ1_OverlapsE", "llvm::(anonymous namespace)::QQ1_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14QQ1_SubRegsSetE", "llvm::(anonymous namespace)::QQ1_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L16QQ1_SuperRegsSetE", "llvm::(anonymous namespace)::QQ1_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12QQ2_OverlapsE", "llvm::(anonymous namespace)::QQ2_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14QQ2_SubRegsSetE", "llvm::(anonymous namespace)::QQ2_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L16QQ2_SuperRegsSetE", "llvm::(anonymous namespace)::QQ2_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12QQ3_OverlapsE", "llvm::(anonymous namespace)::QQ3_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14QQ3_SubRegsSetE", "llvm::(anonymous namespace)::QQ3_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L16QQ3_SuperRegsSetE", "llvm::(anonymous namespace)::QQ3_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12QQ4_OverlapsE", "llvm::(anonymous namespace)::QQ4_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14QQ4_SubRegsSetE", "llvm::(anonymous namespace)::QQ4_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L16QQ4_SuperRegsSetE", "llvm::(anonymous namespace)::QQ4_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12QQ5_OverlapsE", "llvm::(anonymous namespace)::QQ5_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14QQ5_SubRegsSetE", "llvm::(anonymous namespace)::QQ5_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L16QQ5_SuperRegsSetE", "llvm::(anonymous namespace)::QQ5_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12QQ6_OverlapsE", "llvm::(anonymous namespace)::QQ6_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14QQ6_SubRegsSetE", "llvm::(anonymous namespace)::QQ6_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L16QQ6_SuperRegsSetE", "llvm::(anonymous namespace)::QQ6_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12QQ7_OverlapsE", "llvm::(anonymous namespace)::QQ7_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L14QQ7_SubRegsSetE", "llvm::(anonymous namespace)::QQ7_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L16QQ7_SuperRegsSetE", "llvm::(anonymous namespace)::QQ7_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L14QQQQ0_OverlapsE", "llvm::(anonymous namespace)::QQQQ0_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16QQQQ0_SubRegsSetE", "llvm::(anonymous namespace)::QQQQ0_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L14QQQQ1_OverlapsE", "llvm::(anonymous namespace)::QQQQ1_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16QQQQ1_SubRegsSetE", "llvm::(anonymous namespace)::QQQQ1_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L14QQQQ2_OverlapsE", "llvm::(anonymous namespace)::QQQQ2_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16QQQQ2_SubRegsSetE", "llvm::(anonymous namespace)::QQQQ2_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L14QQQQ3_OverlapsE", "llvm::(anonymous namespace)::QQQQ3_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16QQQQ3_SubRegsSetE", "llvm::(anonymous namespace)::QQQQ3_SubRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11R0_OverlapsE", "llvm::(anonymous namespace)::R0_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L11R1_OverlapsE", "llvm::(anonymous namespace)::R1_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L11R2_OverlapsE", "llvm::(anonymous namespace)::R2_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L11R3_OverlapsE", "llvm::(anonymous namespace)::R3_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L11R4_OverlapsE", "llvm::(anonymous namespace)::R4_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L11R5_OverlapsE", "llvm::(anonymous namespace)::R5_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L11R6_OverlapsE", "llvm::(anonymous namespace)::R6_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L11R7_OverlapsE", "llvm::(anonymous namespace)::R7_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L11R8_OverlapsE", "llvm::(anonymous namespace)::R8_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L11R9_OverlapsE", "llvm::(anonymous namespace)::R9_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12R10_OverlapsE", "llvm::(anonymous namespace)::R10_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12R11_OverlapsE", "llvm::(anonymous namespace)::R11_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L12R12_OverlapsE", "llvm::(anonymous namespace)::R12_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L11S0_OverlapsE", "llvm::(anonymous namespace)::S0_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15S0_SuperRegsSetE", "llvm::(anonymous namespace)::S0_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11S1_OverlapsE", "llvm::(anonymous namespace)::S1_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15S1_SuperRegsSetE", "llvm::(anonymous namespace)::S1_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11S2_OverlapsE", "llvm::(anonymous namespace)::S2_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15S2_SuperRegsSetE", "llvm::(anonymous namespace)::S2_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11S3_OverlapsE", "llvm::(anonymous namespace)::S3_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15S3_SuperRegsSetE", "llvm::(anonymous namespace)::S3_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11S4_OverlapsE", "llvm::(anonymous namespace)::S4_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15S4_SuperRegsSetE", "llvm::(anonymous namespace)::S4_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11S5_OverlapsE", "llvm::(anonymous namespace)::S5_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15S5_SuperRegsSetE", "llvm::(anonymous namespace)::S5_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11S6_OverlapsE", "llvm::(anonymous namespace)::S6_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15S6_SuperRegsSetE", "llvm::(anonymous namespace)::S6_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11S7_OverlapsE", "llvm::(anonymous namespace)::S7_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15S7_SuperRegsSetE", "llvm::(anonymous namespace)::S7_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11S8_OverlapsE", "llvm::(anonymous namespace)::S8_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15S8_SuperRegsSetE", "llvm::(anonymous namespace)::S8_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11S9_OverlapsE", "llvm::(anonymous namespace)::S9_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L15S9_SuperRegsSetE", "llvm::(anonymous namespace)::S9_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12S10_OverlapsE", "llvm::(anonymous namespace)::S10_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16S10_SuperRegsSetE", "llvm::(anonymous namespace)::S10_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12S11_OverlapsE", "llvm::(anonymous namespace)::S11_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16S11_SuperRegsSetE", "llvm::(anonymous namespace)::S11_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12S12_OverlapsE", "llvm::(anonymous namespace)::S12_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16S12_SuperRegsSetE", "llvm::(anonymous namespace)::S12_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12S13_OverlapsE", "llvm::(anonymous namespace)::S13_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16S13_SuperRegsSetE", "llvm::(anonymous namespace)::S13_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12S14_OverlapsE", "llvm::(anonymous namespace)::S14_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16S14_SuperRegsSetE", "llvm::(anonymous namespace)::S14_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12S15_OverlapsE", "llvm::(anonymous namespace)::S15_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16S15_SuperRegsSetE", "llvm::(anonymous namespace)::S15_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12S16_OverlapsE", "llvm::(anonymous namespace)::S16_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16S16_SuperRegsSetE", "llvm::(anonymous namespace)::S16_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12S17_OverlapsE", "llvm::(anonymous namespace)::S17_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16S17_SuperRegsSetE", "llvm::(anonymous namespace)::S17_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12S18_OverlapsE", "llvm::(anonymous namespace)::S18_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16S18_SuperRegsSetE", "llvm::(anonymous namespace)::S18_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12S19_OverlapsE", "llvm::(anonymous namespace)::S19_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16S19_SuperRegsSetE", "llvm::(anonymous namespace)::S19_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12S20_OverlapsE", "llvm::(anonymous namespace)::S20_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16S20_SuperRegsSetE", "llvm::(anonymous namespace)::S20_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12S21_OverlapsE", "llvm::(anonymous namespace)::S21_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16S21_SuperRegsSetE", "llvm::(anonymous namespace)::S21_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12S22_OverlapsE", "llvm::(anonymous namespace)::S22_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16S22_SuperRegsSetE", "llvm::(anonymous namespace)::S22_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12S23_OverlapsE", "llvm::(anonymous namespace)::S23_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16S23_SuperRegsSetE", "llvm::(anonymous namespace)::S23_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12S24_OverlapsE", "llvm::(anonymous namespace)::S24_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16S24_SuperRegsSetE", "llvm::(anonymous namespace)::S24_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12S25_OverlapsE", "llvm::(anonymous namespace)::S25_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16S25_SuperRegsSetE", "llvm::(anonymous namespace)::S25_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12S26_OverlapsE", "llvm::(anonymous namespace)::S26_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16S26_SuperRegsSetE", "llvm::(anonymous namespace)::S26_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12S27_OverlapsE", "llvm::(anonymous namespace)::S27_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16S27_SuperRegsSetE", "llvm::(anonymous namespace)::S27_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12S28_OverlapsE", "llvm::(anonymous namespace)::S28_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16S28_SuperRegsSetE", "llvm::(anonymous namespace)::S28_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12S29_OverlapsE", "llvm::(anonymous namespace)::S29_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16S29_SuperRegsSetE", "llvm::(anonymous namespace)::S29_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12S30_OverlapsE", "llvm::(anonymous namespace)::S30_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16S30_SuperRegsSetE", "llvm::(anonymous namespace)::S30_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L12S31_OverlapsE", "llvm::(anonymous namespace)::S31_Overlaps"}, + {"_ZN4llvm12_GLOBAL__N_1L16S31_SuperRegsSetE", "llvm::(anonymous namespace)::S31_SuperRegsSet"}, + {"_ZN4llvm12_GLOBAL__N_1L11SP_OverlapsE", "llvm::(anonymous namespace)::SP_Overlaps"}, + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE7Opcodes8", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::Opcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE7Opcodes9", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::Opcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE7Opcodes10", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::Opcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE7Opcodes11", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::Opcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE7Opcodes12", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::Opcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE8DOpcodes13", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::DOpcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE8QOpcodes14", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::QOpcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE8DOpcodes15", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::DOpcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE8DOpcodes16", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::DOpcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE9QOpcodes118", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::QOpcodes1"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE8DOpcodes19", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::DOpcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE8DOpcodes21", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::DOpcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE8DOpcodes23", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::DOpcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE8DOpcodes25", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::DOpcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE8QOpcodes26", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::QOpcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE8DOpcodes27", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::DOpcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE8QOpcodes28", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::QOpcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE8DOpcodes29", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::DOpcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE9QOpcodes131", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::QOpcodes1"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE8DOpcodes32", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::DOpcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE9QOpcodes134", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::QOpcodes1"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE8DOpcodes35", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::DOpcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE8DOpcodes37", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::DOpcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE8DOpcodes39", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::DOpcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE8DOpcodes41", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::DOpcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE8QOpcodes42", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::QOpcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE8DOpcodes43", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::DOpcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE8QOpcodes44", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::QOpcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE8DOpcodes45", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::DOpcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE9QOpcodes046", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::QOpcodes0"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE9QOpcodes147", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::QOpcodes1"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE8DOpcodes48", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::DOpcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE9QOpcodes049", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::QOpcodes0"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE9QOpcodes150", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::QOpcodes1"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE8DOpcodes51", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::DOpcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE8DOpcodes53", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::DOpcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE8DOpcodes55", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::DOpcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE8DOpcodes57", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::DOpcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE8QOpcodes58", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::QOpcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE8DOpcodes59", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::DOpcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE8QOpcodes60", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::QOpcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE8DOpcodes61", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::DOpcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE9QOpcodes062", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::QOpcodes0"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE9QOpcodes163", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::QOpcodes1"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE8DOpcodes64", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::DOpcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE9QOpcodes065", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::QOpcodes0"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE9QOpcodes166", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::QOpcodes1"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE8DOpcodes67", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::DOpcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE8DOpcodes69", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::DOpcodes"}, + // got error + + + // {"_ZZN12_GLOBAL__N_115ARMDAGToDAGISel6SelectEPN4llvm6SDNodeEE8DOpcodes71", + // "(anonymous namespace)::ARMDAGToDAGISel::Select(llvm::SDNode*)::DOpcodes"}, + // got error + + {"_ZL19PerfectShuffleTable", "PerfectShuffleTable"}, + {"_ZL13OperandCycles", "OperandCycles"}, + {"_ZL16ForwardingPathes", "ForwardingPathes"}, + + // {"_ZZN12_GLOBAL__N_116Thumb2SizeReduce13ReduceSpecialERN4llvm17MachineBasicBlockEPNS1_12MachineInstrERKNS_11ReduceEntryEbE11NarrowEntry11", + // "(anonymous namespace)::Thumb2SizeReduce::ReduceSpecial(llvm::MachineBasicBlock&, llvm::MachineInstr*, (anonymous namespace)::ReduceEntry const&, bool)::NarrowEntry"}, + // got error + + {"_ZN4llvm9AttributeL20MutuallyIncompatibleE", "llvm::Attribute::MutuallyIncompatible"}, + {"_ZL14hexDigitsUpper", "hexDigitsUpper"}, + {"_ZL14hexDigitsLower", "hexDigitsLower"}, + {"_ZL10colorcodes", "colorcodes"}, + {"_ZL7IntSigs", "IntSigs"}, + {"_ZL8KillSigs", "KillSigs"}, + {"_ZN12_GLOBAL__N_1L11GCCRegNamesE", "(anonymous namespace)::GCCRegNames"}, + {"_ZL8TokNames", "TokNames"}, + {"_ZN4llvmL16CallGraphLinkObjE", "llvm::CallGraphLinkObj"}, + {"_ZN4llvmL16CallGraphLinkObjE", "llvm::CallGraphLinkObj"}, + {"_ZN4llvmL16CallGraphLinkObjE", "llvm::CallGraphLinkObj"}, + {"_ZN4llvmL16CallGraphLinkObjE", "llvm::CallGraphLinkObj"}, + {"_ZN4llvmL16CallGraphLinkObjE", "llvm::CallGraphLinkObj"}, + {"_ZN4llvmL16CallGraphLinkObjE", "llvm::CallGraphLinkObj"}, + {"_ZL13x86_asm_table", "x86_asm_table"}, + {"_ZN4llvm3X86L19FR32SuperRegClassesE", "llvm::X86::FR32SuperRegClasses"}, + {"_ZN4llvm3X86L19FR64SuperRegClassesE", "llvm::X86::FR64SuperRegClasses"}, + {"_ZN4llvm3X86L19GR16SuperRegClassesE", "llvm::X86::GR16SuperRegClasses"}, + {"_ZN4llvm3X86L24GR16_ABCDSuperRegClassesE", "llvm::X86::GR16_ABCDSuperRegClasses"}, + {"_ZN4llvm3X86L25GR16_NOREXSuperRegClassesE", "llvm::X86::GR16_NOREXSuperRegClasses"}, + {"_ZN4llvm3X86L19GR32SuperRegClassesE", "llvm::X86::GR32SuperRegClasses"}, + {"_ZN4llvm3X86L24GR32_ABCDSuperRegClassesE", "llvm::X86::GR32_ABCDSuperRegClasses"}, + {"_ZN4llvm3X86L25GR32_NOREXSuperRegClassesE", "llvm::X86::GR32_NOREXSuperRegClasses"}, + {"_ZN4llvm3X86L24GR32_NOSPSuperRegClassesE", "llvm::X86::GR32_NOSPSuperRegClasses"}, + {"_ZN4llvm3X86L22GR32_TCSuperRegClassesE", "llvm::X86::GR32_TCSuperRegClasses"}, + {"_ZN4llvm3X86L18GR8SuperRegClassesE", "llvm::X86::GR8SuperRegClasses"}, + {"_ZN4llvm3X86L25GR8_ABCD_HSuperRegClassesE", "llvm::X86::GR8_ABCD_HSuperRegClasses"}, + {"_ZN4llvm3X86L25GR8_ABCD_LSuperRegClassesE", "llvm::X86::GR8_ABCD_LSuperRegClasses"}, + {"_ZN4llvm3X86L24GR8_NOREXSuperRegClassesE", "llvm::X86::GR8_NOREXSuperRegClasses"}, + {"_ZN4llvm3X86L20VR128SuperRegClassesE", "llvm::X86::VR128SuperRegClasses"}, + {"_ZN4llvm3X86L14FR32SubclassesE", "llvm::X86::FR32Subclasses"}, + {"_ZN4llvm3X86L14FR64SubclassesE", "llvm::X86::FR64Subclasses"}, + {"_ZN4llvm3X86L14GR16SubclassesE", "llvm::X86::GR16Subclasses"}, + {"_ZN4llvm3X86L20GR16_NOREXSubclassesE", "llvm::X86::GR16_NOREXSubclasses"}, + {"_ZN4llvm3X86L14GR32SubclassesE", "llvm::X86::GR32Subclasses"}, + {"_ZN4llvm3X86L19GR32_ABCDSubclassesE", "llvm::X86::GR32_ABCDSubclasses"}, + {"_ZN4llvm3X86L20GR32_NOREXSubclassesE", "llvm::X86::GR32_NOREXSubclasses"}, + {"_ZN4llvm3X86L19GR32_NOSPSubclassesE", "llvm::X86::GR32_NOSPSubclasses"}, + {"_ZN4llvm3X86L17GR32_TCSubclassesE", "llvm::X86::GR32_TCSubclasses"}, + {"_ZN4llvm3X86L14GR64SubclassesE", "llvm::X86::GR64Subclasses"}, + {"_ZN4llvm3X86L20GR64_NOREXSubclassesE", "llvm::X86::GR64_NOREXSubclasses"}, + {"_ZN4llvm3X86L25GR64_NOREX_NOSPSubclassesE", "llvm::X86::GR64_NOREX_NOSPSubclasses"}, + {"_ZN4llvm3X86L19GR64_NOSPSubclassesE", "llvm::X86::GR64_NOSPSubclasses"}, + {"_ZN4llvm3X86L17GR64_TCSubclassesE", "llvm::X86::GR64_TCSubclasses"}, + {"_ZN4llvm3X86L13GR8SubclassesE", "llvm::X86::GR8Subclasses"}, + {"_ZN4llvm3X86L19GR8_NOREXSubclassesE", "llvm::X86::GR8_NOREXSubclasses"}, + {"_ZN4llvm3X86L15RFP32SubclassesE", "llvm::X86::RFP32Subclasses"}, + {"_ZN4llvm3X86L15RFP64SubclassesE", "llvm::X86::RFP64Subclasses"}, + {"_ZN4llvm3X86L16FR64SuperclassesE", "llvm::X86::FR64Superclasses"}, + {"_ZN4llvm3X86L21GR16_ABCDSuperclassesE", "llvm::X86::GR16_ABCDSuperclasses"}, + {"_ZN4llvm3X86L22GR16_NOREXSuperclassesE", "llvm::X86::GR16_NOREXSuperclasses"}, + {"_ZN4llvm3X86L21GR32_ABCDSuperclassesE", "llvm::X86::GR32_ABCDSuperclasses"}, + {"_ZN4llvm3X86L19GR32_ADSuperclassesE", "llvm::X86::GR32_ADSuperclasses"}, + {"_ZN4llvm3X86L22GR32_NOREXSuperclassesE", "llvm::X86::GR32_NOREXSuperclasses"}, + {"_ZN4llvm3X86L21GR32_NOSPSuperclassesE", "llvm::X86::GR32_NOSPSuperclasses"}, + {"_ZN4llvm3X86L19GR32_TCSuperclassesE", "llvm::X86::GR32_TCSuperclasses"}, + {"_ZN4llvm3X86L21GR64_ABCDSuperclassesE", "llvm::X86::GR64_ABCDSuperclasses"}, + {"_ZN4llvm3X86L22GR64_NOREXSuperclassesE", "llvm::X86::GR64_NOREXSuperclasses"}, + {"_ZN4llvm3X86L27GR64_NOREX_NOSPSuperclassesE", "llvm::X86::GR64_NOREX_NOSPSuperclasses"}, + {"_ZN4llvm3X86L21GR64_NOSPSuperclassesE", "llvm::X86::GR64_NOSPSuperclasses"}, + {"_ZN4llvm3X86L19GR64_TCSuperclassesE", "llvm::X86::GR64_TCSuperclasses"}, + {"_ZN4llvm3X86L22GR64_TCW64SuperclassesE", "llvm::X86::GR64_TCW64Superclasses"}, + {"_ZN4llvm3X86L22GR8_ABCD_HSuperclassesE", "llvm::X86::GR8_ABCD_HSuperclasses"}, + {"_ZN4llvm3X86L22GR8_ABCD_LSuperclassesE", "llvm::X86::GR8_ABCD_LSuperclasses"}, + {"_ZN4llvm3X86L21GR8_NOREXSuperclassesE", "llvm::X86::GR8_NOREXSuperclasses"}, + {"_ZN4llvm3X86L17RFP64SuperclassesE", "llvm::X86::RFP64Superclasses"}, + {"_ZN4llvm3X86L17RFP80SuperclassesE", "llvm::X86::RFP80Superclasses"}, + {"_ZN4llvm3X86L17VR128SuperclassesE", "llvm::X86::VR128Superclasses"}, + {"_ZN4llvm3X86L17GR16SubRegClassesE", "llvm::X86::GR16SubRegClasses"}, + {"_ZN4llvm3X86L22GR16_ABCDSubRegClassesE", "llvm::X86::GR16_ABCDSubRegClasses"}, + {"_ZN4llvm3X86L23GR16_NOREXSubRegClassesE", "llvm::X86::GR16_NOREXSubRegClasses"}, + {"_ZN4llvm3X86L17GR32SubRegClassesE", "llvm::X86::GR32SubRegClasses"}, + {"_ZN4llvm3X86L22GR32_ABCDSubRegClassesE", "llvm::X86::GR32_ABCDSubRegClasses"}, + {"_ZN4llvm3X86L20GR32_ADSubRegClassesE", "llvm::X86::GR32_ADSubRegClasses"}, + {"_ZN4llvm3X86L23GR32_NOREXSubRegClassesE", "llvm::X86::GR32_NOREXSubRegClasses"}, + {"_ZN4llvm3X86L22GR32_NOSPSubRegClassesE", "llvm::X86::GR32_NOSPSubRegClasses"}, + {"_ZN4llvm3X86L20GR32_TCSubRegClassesE", "llvm::X86::GR32_TCSubRegClasses"}, + {"_ZN4llvm3X86L17GR64SubRegClassesE", "llvm::X86::GR64SubRegClasses"}, + {"_ZN4llvm3X86L22GR64_ABCDSubRegClassesE", "llvm::X86::GR64_ABCDSubRegClasses"}, + {"_ZN4llvm3X86L23GR64_NOREXSubRegClassesE", "llvm::X86::GR64_NOREXSubRegClasses"}, + {"_ZN4llvm3X86L28GR64_NOREX_NOSPSubRegClassesE", "llvm::X86::GR64_NOREX_NOSPSubRegClasses"}, + {"_ZN4llvm3X86L22GR64_NOSPSubRegClassesE", "llvm::X86::GR64_NOSPSubRegClasses"}, + {"_ZN4llvm3X86L20GR64_TCSubRegClassesE", "llvm::X86::GR64_TCSubRegClasses"}, + {"_ZN4llvm3X86L18VR128SubRegClassesE", "llvm::X86::VR128SubRegClasses"}, + {"_ZN4llvm3X86L18VR256SubRegClassesE", "llvm::X86::VR256SubRegClasses"}, + {"_ZN4llvm12_GLOBAL__N_1L15RegisterClassesE", "llvm::(anonymous namespace)::RegisterClasses"}, + {"_ZN4llvm12_GLOBAL__N_1L16SubRegIndexTableE", "llvm::(anonymous namespace)::SubRegIndexTable"}, + {"_ZN4llvm3ARML18DPRSuperRegClassesE", "llvm::ARM::DPRSuperRegClasses"}, + {"_ZN4llvm3ARML20DPR_8SuperRegClassesE", "llvm::ARM::DPR_8SuperRegClasses"}, + {"_ZN4llvm3ARML23DPR_VFP2SuperRegClassesE", "llvm::ARM::DPR_VFP2SuperRegClasses"}, + {"_ZN4llvm3ARML18QPRSuperRegClassesE", "llvm::ARM::QPRSuperRegClasses"}, + {"_ZN4llvm3ARML23QPR_VFP2SuperRegClassesE", "llvm::ARM::QPR_VFP2SuperRegClasses"}, + {"_ZN4llvm3ARML18SPRSuperRegClassesE", "llvm::ARM::SPRSuperRegClasses"}, + {"_ZN4llvm3ARML20SPR_8SuperRegClassesE", "llvm::ARM::SPR_8SuperRegClasses"}, + {"_ZN4llvm3ARML13DPRSubclassesE", "llvm::ARM::DPRSubclasses"}, + {"_ZN4llvm3ARML18DPR_VFP2SubclassesE", "llvm::ARM::DPR_VFP2Subclasses"}, + {"_ZN4llvm3ARML13GPRSubclassesE", "llvm::ARM::GPRSubclasses"}, + {"_ZN4llvm3ARML13QPRSubclassesE", "llvm::ARM::QPRSubclasses"}, + {"_ZN4llvm3ARML18QPR_VFP2SubclassesE", "llvm::ARM::QPR_VFP2Subclasses"}, + {"_ZN4llvm3ARML14QQPRSubclassesE", "llvm::ARM::QQPRSubclasses"}, + {"_ZN4llvm3ARML13SPRSubclassesE", "llvm::ARM::SPRSubclasses"}, + {"_ZN4llvm3ARML14rGPRSubclassesE", "llvm::ARM::rGPRSubclasses"}, + {"_ZN4llvm3ARML17DPR_8SuperclassesE", "llvm::ARM::DPR_8Superclasses"}, + {"_ZN4llvm3ARML20DPR_VFP2SuperclassesE", "llvm::ARM::DPR_VFP2Superclasses"}, + {"_ZN4llvm3ARML17QPR_8SuperclassesE", "llvm::ARM::QPR_8Superclasses"}, + {"_ZN4llvm3ARML20QPR_VFP2SuperclassesE", "llvm::ARM::QPR_VFP2Superclasses"}, + {"_ZN4llvm3ARML21QQPR_VFP2SuperclassesE", "llvm::ARM::QQPR_VFP2Superclasses"}, + {"_ZN4llvm3ARML17SPR_8SuperclassesE", "llvm::ARM::SPR_8Superclasses"}, + {"_ZN4llvm3ARML16rGPRSuperclassesE", "llvm::ARM::rGPRSuperclasses"}, + {"_ZN4llvm3ARML16tGPRSuperclassesE", "llvm::ARM::tGPRSuperclasses"}, + {"_ZN4llvm3ARML17tcGPRSuperclassesE", "llvm::ARM::tcGPRSuperclasses"}, + {"_ZN4llvm3ARML18DPR_8SubRegClassesE", "llvm::ARM::DPR_8SubRegClasses"}, + {"_ZN4llvm3ARML21DPR_VFP2SubRegClassesE", "llvm::ARM::DPR_VFP2SubRegClasses"}, + {"_ZN4llvm3ARML16QPRSubRegClassesE", "llvm::ARM::QPRSubRegClasses"}, + {"_ZN4llvm3ARML18QPR_8SubRegClassesE", "llvm::ARM::QPR_8SubRegClasses"}, + {"_ZN4llvm3ARML21QPR_VFP2SubRegClassesE", "llvm::ARM::QPR_VFP2SubRegClasses"}, + {"_ZN4llvm3ARML17QQPRSubRegClassesE", "llvm::ARM::QQPRSubRegClasses"}, + {"_ZN4llvm3ARML22QQPR_VFP2SubRegClassesE", "llvm::ARM::QQPR_VFP2SubRegClasses"}, + {"_ZN4llvm3ARML19QQQQPRSubRegClassesE", "llvm::ARM::QQQQPRSubRegClasses"}, + {"_ZN4llvm12_GLOBAL__N_1L15RegisterClassesE", "llvm::(anonymous namespace)::RegisterClasses"}, + {"_ZN4llvm12_GLOBAL__N_1L16SubRegIndexTableE", "llvm::(anonymous namespace)::SubRegIndexTable"}, + {"_ZL13arm_asm_table", "arm_asm_table"}, + {"_ZN4llvmL24RegisterCoalescerLinkObjE", "llvm::RegisterCoalescerLinkObj"}, + {"_ZN4llvmL31SimpleRegisterCoalescingLinkObjE", "llvm::SimpleRegisterCoalescingLinkObj"}, + {"_ZL8PSVNames", "PSVNames"}, + {"_ZN4llvmL24RegisterCoalescerLinkObjE", "llvm::RegisterCoalescerLinkObj"}, + {"_ZN4llvmL31SimpleRegisterCoalescingLinkObjE", "llvm::SimpleRegisterCoalescingLinkObj"}, + {"_ZN4llvmL24RegisterCoalescerLinkObjE", "llvm::RegisterCoalescerLinkObj"}, + {"_ZN4llvmL31SimpleRegisterCoalescingLinkObjE", "llvm::SimpleRegisterCoalescingLinkObj"}, + {"_ZN4llvmL24RegisterCoalescerLinkObjE", "llvm::RegisterCoalescerLinkObj"}, + {"_ZN4llvmL31SimpleRegisterCoalescingLinkObjE", "llvm::SimpleRegisterCoalescingLinkObj"}, + {"_ZN4llvmL16CallGraphLinkObjE", "llvm::CallGraphLinkObj"}, + {"_ZN4llvmL16CallGraphLinkObjE", "llvm::CallGraphLinkObj"}, + {"_ZN4llvmL16CallGraphLinkObjE", "llvm::CallGraphLinkObj"}, + {"_ZL22SectionTypeDescriptors", "SectionTypeDescriptors"}, + {"_ZL22SectionAttrDescriptors", "SectionAttrDescriptors"}, + {"_ZL9Lang_cuda", "Lang_cuda"}, + {"_ZL11Lang_opencl", "Lang_opencl"}, + {"_ZL13Lang_gnucxx0x", "Lang_gnucxx0x"}, + {"_ZL10Lang_cxx0x", "Lang_cxx0x"}, + {"_ZL13Lang_gnucxx98", "Lang_gnucxx98"}, + {"_ZL10Lang_cxx98", "Lang_cxx98"}, + {"_ZL10Lang_gnu9x", "Lang_gnu9x"}, + {"_ZL10Lang_gnu99", "Lang_gnu99"}, + {"_ZL17Lang_iso9899_199x", "Lang_iso9899_199x"}, + {"_ZL17Lang_iso9899_1999", "Lang_iso9899_1999"}, + {"_ZL8Lang_c9x", "Lang_c9x"}, + {"_ZL8Lang_c99", "Lang_c99"}, + {"_ZL10Lang_gnu89", "Lang_gnu89"}, + {"_ZL8Lang_c94", "Lang_c94"}, + {"_ZL17Lang_iso9899_1990", "Lang_iso9899_1990"}, + {"_ZL8Lang_c90", "Lang_c90"}, + {"_ZL8Lang_c89", "Lang_c89"}, + {"_ZL14CC1AsInfoTable", "CC1AsInfoTable"}, + {"_ZL12CC1InfoTable", "CC1InfoTable"}, + {"_ZL9InfoTable", "InfoTable"}, + {"_ZL9TypeInfos", "TypeInfos"}, + {"_ZL16EagerlyAssumeTag", "EagerlyAssumeTag"}, + {"_ZL4Msgs", "Msgs"}, + {"_ZL11BuiltinInfo", "BuiltinInfo"}, + {"_ZL14StaticDiagInfo", "StaticDiagInfo"}, + {"_ZL11OptionTable", "OptionTable"}, + {"_ZN12_GLOBAL__N_1L11BuiltinInfoE", "(anonymous namespace)::BuiltinInfo"}, + {"_ZN12_GLOBAL__N_1L13GCCRegAliasesE", "(anonymous namespace)::GCCRegAliases"}, + {"_ZL21NumAggregatesPromoted", "NumAggregatesPromoted"}, + {"_ZL20NumArgumentsPromoted", "NumArgumentsPromoted"}, + {"_ZL16NumArgumentsDead", "NumArgumentsDead"}, + {"_ZL20NumByValArgsPromoted", "NumByValArgsPromoted"}, + {"_ZL9NumMerged", "NumMerged"}, + {"_ZL29NumArgumentsReplacedWithUndef", "NumArgumentsReplacedWithUndef"}, + {"_ZL22NumArgumentsEliminated", "NumArgumentsEliminated"}, + {"_ZL20NumRetValsEliminated", "NumRetValsEliminated"}, + {"_ZL9NumKilled", "NumKilled"}, + {"_ZL10NumNoAlias", "NumNoAlias"}, + {"_ZL12NumNoCapture", "NumNoCapture"}, + {"_ZL11NumReadNone", "NumReadNone"}, + {"_ZL11NumReadOnly", "NumReadOnly"}, + {"_ZL10NumAliases", "NumAliases"}, + {"_ZL12NumVariables", "NumVariables"}, + {"_ZL12NumFunctions", "NumFunctions"}, + {"_ZL17NumAliasesRemoved", "NumAliasesRemoved"}, + {"_ZL18NumAliasesResolved", "NumAliasesResolved"}, + {"_ZL15NumShrunkToBool", "NumShrunkToBool"}, + {"_ZL10NumHeapSRA", "NumHeapSRA"}, + {"_ZL11NumGlobUses", "NumGlobUses"}, + {"_ZL13NumSubstitute", "NumSubstitute"}, + {"_ZL6NumSRA", "NumSRA"}, + {"_ZL9NumMarked", "NumMarked"}, + {"_ZL12NumLocalized", "NumLocalized"}, + {"_ZL10NumUnnamed", "NumUnnamed"}, + {"_ZL10NumDeleted", "NumDeleted"}, + {"_ZL17NumCtorsEvaluated", "NumCtorsEvaluated"}, + {"_ZL14NumNestRemoved", "NumNestRemoved"}, + {"_ZL14NumFastCallFns", "NumFastCallFns"}, + {"_ZL12NumFnDeleted", "NumFnDeleted"}, + {"_ZL10NumDeleted", "NumDeleted"}, + {"_ZL10NumInlined", "NumInlined"}, + {"_ZL16NumMergedAllocas", "NumMergedAllocas"}, + {"_ZL15NumCallsDeleted", "NumCallsDeleted"}, + {"_ZL10NumUnreach", "NumUnreach"}, + {"_ZL10NumRemoved", "NumRemoved"}, + {"_ZL17NumDeadPrototypes", "NumDeadPrototypes"}, + {"_ZL10MatchTable", "MatchTable"}, + {"_ZL10NumEmitted", "NumEmitted"}, + {"_ZL7NumFXCH", "NumFXCH"}, + {"_ZL8PopTable", "PopTable"}, + {"_ZL11OpcodeTable", "OpcodeTable"}, + {"_ZL15ForwardST0Table", "ForwardST0Table"}, + {"_ZL15ReverseST0Table", "ReverseST0Table"}, + {"_ZL15ForwardSTiTable", "ForwardSTiTable"}, + {"_ZL15ReverseSTiTable", "ReverseSTiTable"}, + {"_ZL5NumFP", "NumFP"}, + {"_ZL12NumLoadMoved", "NumLoadMoved"}, + {"_ZL12NumTailCalls", "NumTailCalls"}, + {"_ZN4llvmL9Barriers1E", "llvm::Barriers1"}, + {"_ZN4llvmL9Barriers2E", "llvm::Barriers2"}, + {"_ZN4llvmL9Barriers3E", "llvm::Barriers3"}, + {"_ZN4llvmL9Barriers4E", "llvm::Barriers4"}, + {"_ZN4llvmL9Barriers5E", "llvm::Barriers5"}, + {"_ZN4llvmL9Barriers6E", "llvm::Barriers6"}, + {"_ZN4llvmL9Barriers7E", "llvm::Barriers7"}, + {"_ZN4llvmL9Barriers8E", "llvm::Barriers8"}, + {"_ZN4llvmL12OperandInfo2E", "llvm::OperandInfo2"}, + {"_ZN4llvmL12OperandInfo3E", "llvm::OperandInfo3"}, + {"_ZN4llvmL12OperandInfo4E", "llvm::OperandInfo4"}, + {"_ZN4llvmL12OperandInfo5E", "llvm::OperandInfo5"}, + {"_ZN4llvmL12OperandInfo6E", "llvm::OperandInfo6"}, + {"_ZN4llvmL12OperandInfo7E", "llvm::OperandInfo7"}, + {"_ZN4llvmL12OperandInfo8E", "llvm::OperandInfo8"}, + {"_ZN4llvmL12OperandInfo9E", "llvm::OperandInfo9"}, + {"_ZN4llvmL13OperandInfo10E", "llvm::OperandInfo10"}, + {"_ZN4llvmL13OperandInfo11E", "llvm::OperandInfo11"}, + {"_ZN4llvmL13OperandInfo12E", "llvm::OperandInfo12"}, + {"_ZN4llvmL13OperandInfo13E", "llvm::OperandInfo13"}, + {"_ZN4llvmL13OperandInfo14E", "llvm::OperandInfo14"}, + {"_ZN4llvmL13OperandInfo15E", "llvm::OperandInfo15"}, + {"_ZN4llvmL13OperandInfo16E", "llvm::OperandInfo16"}, + {"_ZN4llvmL13OperandInfo17E", "llvm::OperandInfo17"}, + {"_ZN4llvmL13OperandInfo18E", "llvm::OperandInfo18"}, + {"_ZN4llvmL13OperandInfo19E", "llvm::OperandInfo19"}, + {"_ZN4llvmL13OperandInfo20E", "llvm::OperandInfo20"}, + {"_ZN4llvmL13OperandInfo21E", "llvm::OperandInfo21"}, + {"_ZN4llvmL13OperandInfo22E", "llvm::OperandInfo22"}, + {"_ZN4llvmL13OperandInfo23E", "llvm::OperandInfo23"}, + {"_ZN4llvmL13OperandInfo24E", "llvm::OperandInfo24"}, + {"_ZN4llvmL13OperandInfo25E", "llvm::OperandInfo25"}, + {"_ZN4llvmL13OperandInfo26E", "llvm::OperandInfo26"}, + {"_ZN4llvmL13OperandInfo27E", "llvm::OperandInfo27"}, + {"_ZN4llvmL13OperandInfo28E", "llvm::OperandInfo28"}, + {"_ZN4llvmL13OperandInfo29E", "llvm::OperandInfo29"}, + {"_ZN4llvmL13OperandInfo30E", "llvm::OperandInfo30"}, + {"_ZN4llvmL13OperandInfo31E", "llvm::OperandInfo31"}, + {"_ZN4llvmL13OperandInfo32E", "llvm::OperandInfo32"}, + {"_ZN4llvmL13OperandInfo33E", "llvm::OperandInfo33"}, + {"_ZN4llvmL13OperandInfo34E", "llvm::OperandInfo34"}, + {"_ZN4llvmL13OperandInfo35E", "llvm::OperandInfo35"}, + {"_ZN4llvmL13OperandInfo36E", "llvm::OperandInfo36"}, + {"_ZN4llvmL13OperandInfo37E", "llvm::OperandInfo37"}, + {"_ZN4llvmL13OperandInfo38E", "llvm::OperandInfo38"}, + {"_ZN4llvmL13OperandInfo39E", "llvm::OperandInfo39"}, + {"_ZN4llvmL13OperandInfo40E", "llvm::OperandInfo40"}, + {"_ZN4llvmL13OperandInfo41E", "llvm::OperandInfo41"}, + {"_ZN4llvmL13OperandInfo42E", "llvm::OperandInfo42"}, + {"_ZN4llvmL13OperandInfo43E", "llvm::OperandInfo43"}, + {"_ZN4llvmL13OperandInfo44E", "llvm::OperandInfo44"}, + {"_ZN4llvmL13OperandInfo45E", "llvm::OperandInfo45"}, + {"_ZN4llvmL13OperandInfo46E", "llvm::OperandInfo46"}, + {"_ZN4llvmL13OperandInfo47E", "llvm::OperandInfo47"}, + {"_ZN4llvmL13OperandInfo48E", "llvm::OperandInfo48"}, + {"_ZN4llvmL13OperandInfo49E", "llvm::OperandInfo49"}, + {"_ZN4llvmL13OperandInfo50E", "llvm::OperandInfo50"}, + {"_ZN4llvmL13OperandInfo51E", "llvm::OperandInfo51"}, + {"_ZN4llvmL13OperandInfo52E", "llvm::OperandInfo52"}, + {"_ZN4llvmL13OperandInfo53E", "llvm::OperandInfo53"}, + {"_ZN4llvmL13OperandInfo54E", "llvm::OperandInfo54"}, + {"_ZN4llvmL13OperandInfo55E", "llvm::OperandInfo55"}, + {"_ZN4llvmL13OperandInfo56E", "llvm::OperandInfo56"}, + {"_ZN4llvmL13OperandInfo57E", "llvm::OperandInfo57"}, + {"_ZN4llvmL13OperandInfo58E", "llvm::OperandInfo58"}, + {"_ZN4llvmL13OperandInfo59E", "llvm::OperandInfo59"}, + {"_ZN4llvmL13OperandInfo60E", "llvm::OperandInfo60"}, + {"_ZN4llvmL13OperandInfo61E", "llvm::OperandInfo61"}, + {"_ZN4llvmL13OperandInfo62E", "llvm::OperandInfo62"}, + {"_ZN4llvmL13OperandInfo63E", "llvm::OperandInfo63"}, + {"_ZN4llvmL13OperandInfo64E", "llvm::OperandInfo64"}, + {"_ZN4llvmL13OperandInfo65E", "llvm::OperandInfo65"}, + {"_ZN4llvmL13OperandInfo66E", "llvm::OperandInfo66"}, + {"_ZN4llvmL13OperandInfo67E", "llvm::OperandInfo67"}, + {"_ZN4llvmL13OperandInfo68E", "llvm::OperandInfo68"}, + {"_ZN4llvmL13OperandInfo69E", "llvm::OperandInfo69"}, + {"_ZN4llvmL13OperandInfo70E", "llvm::OperandInfo70"}, + {"_ZN4llvmL13OperandInfo71E", "llvm::OperandInfo71"}, + {"_ZN4llvmL13OperandInfo72E", "llvm::OperandInfo72"}, + {"_ZN4llvmL13OperandInfo73E", "llvm::OperandInfo73"}, + {"_ZN4llvmL13OperandInfo74E", "llvm::OperandInfo74"}, + {"_ZN4llvmL13OperandInfo75E", "llvm::OperandInfo75"}, + {"_ZN4llvmL13OperandInfo76E", "llvm::OperandInfo76"}, + {"_ZN4llvmL13OperandInfo77E", "llvm::OperandInfo77"}, + {"_ZN4llvmL13OperandInfo78E", "llvm::OperandInfo78"}, + {"_ZN4llvmL13OperandInfo79E", "llvm::OperandInfo79"}, + {"_ZN4llvmL13OperandInfo80E", "llvm::OperandInfo80"}, + {"_ZN4llvmL13OperandInfo81E", "llvm::OperandInfo81"}, + {"_ZN4llvmL13OperandInfo82E", "llvm::OperandInfo82"}, + {"_ZN4llvmL13OperandInfo83E", "llvm::OperandInfo83"}, + {"_ZN4llvmL13OperandInfo84E", "llvm::OperandInfo84"}, + {"_ZN4llvmL13OperandInfo85E", "llvm::OperandInfo85"}, + {"_ZN4llvmL13OperandInfo86E", "llvm::OperandInfo86"}, + {"_ZN4llvmL13OperandInfo87E", "llvm::OperandInfo87"}, + {"_ZN4llvmL13OperandInfo88E", "llvm::OperandInfo88"}, + {"_ZN4llvmL13OperandInfo89E", "llvm::OperandInfo89"}, + {"_ZN4llvmL13OperandInfo90E", "llvm::OperandInfo90"}, + {"_ZN4llvmL13OperandInfo91E", "llvm::OperandInfo91"}, + {"_ZN4llvmL13OperandInfo92E", "llvm::OperandInfo92"}, + {"_ZN4llvmL13OperandInfo93E", "llvm::OperandInfo93"}, + {"_ZN4llvmL13OperandInfo94E", "llvm::OperandInfo94"}, + {"_ZN4llvmL13OperandInfo95E", "llvm::OperandInfo95"}, + {"_ZN4llvmL13OperandInfo96E", "llvm::OperandInfo96"}, + {"_ZN4llvmL13OperandInfo97E", "llvm::OperandInfo97"}, + {"_ZN4llvmL13OperandInfo98E", "llvm::OperandInfo98"}, + {"_ZN4llvmL13OperandInfo99E", "llvm::OperandInfo99"}, + {"_ZN4llvmL14OperandInfo100E", "llvm::OperandInfo100"}, + {"_ZN4llvmL14OperandInfo101E", "llvm::OperandInfo101"}, + {"_ZN4llvmL14OperandInfo102E", "llvm::OperandInfo102"}, + {"_ZN4llvmL14OperandInfo103E", "llvm::OperandInfo103"}, + {"_ZN4llvmL14OperandInfo104E", "llvm::OperandInfo104"}, + {"_ZN4llvmL14OperandInfo105E", "llvm::OperandInfo105"}, + {"_ZN4llvmL14OperandInfo106E", "llvm::OperandInfo106"}, + {"_ZN4llvmL14OperandInfo107E", "llvm::OperandInfo107"}, + {"_ZN4llvmL14OperandInfo108E", "llvm::OperandInfo108"}, + {"_ZN4llvmL14OperandInfo109E", "llvm::OperandInfo109"}, + {"_ZN4llvmL14OperandInfo110E", "llvm::OperandInfo110"}, + {"_ZN4llvmL14OperandInfo111E", "llvm::OperandInfo111"}, + {"_ZN4llvmL14OperandInfo112E", "llvm::OperandInfo112"}, + {"_ZN4llvmL14OperandInfo113E", "llvm::OperandInfo113"}, + {"_ZN4llvmL14OperandInfo114E", "llvm::OperandInfo114"}, + {"_ZN4llvmL14OperandInfo115E", "llvm::OperandInfo115"}, + {"_ZN4llvmL14OperandInfo116E", "llvm::OperandInfo116"}, + {"_ZN4llvmL14OperandInfo117E", "llvm::OperandInfo117"}, + {"_ZN4llvmL14OperandInfo118E", "llvm::OperandInfo118"}, + {"_ZN4llvmL14OperandInfo119E", "llvm::OperandInfo119"}, + {"_ZN4llvmL14OperandInfo120E", "llvm::OperandInfo120"}, + {"_ZN4llvmL14OperandInfo121E", "llvm::OperandInfo121"}, + {"_ZN4llvmL14OperandInfo122E", "llvm::OperandInfo122"}, + {"_ZN4llvmL14OperandInfo123E", "llvm::OperandInfo123"}, + {"_ZN4llvmL14OperandInfo124E", "llvm::OperandInfo124"}, + {"_ZN4llvmL14OperandInfo125E", "llvm::OperandInfo125"}, + {"_ZN4llvmL14OperandInfo126E", "llvm::OperandInfo126"}, + {"_ZN4llvmL14OperandInfo127E", "llvm::OperandInfo127"}, + {"_ZN4llvmL14OperandInfo128E", "llvm::OperandInfo128"}, + {"_ZN4llvmL14OperandInfo129E", "llvm::OperandInfo129"}, + {"_ZN4llvmL14OperandInfo130E", "llvm::OperandInfo130"}, + {"_ZN4llvmL14OperandInfo131E", "llvm::OperandInfo131"}, + {"_ZN4llvmL14OperandInfo132E", "llvm::OperandInfo132"}, + {"_ZN4llvmL14OperandInfo133E", "llvm::OperandInfo133"}, + {"_ZN4llvmL14OperandInfo134E", "llvm::OperandInfo134"}, + {"_ZN4llvmL14OperandInfo135E", "llvm::OperandInfo135"}, + {"_ZN4llvmL14OperandInfo136E", "llvm::OperandInfo136"}, + {"_ZN4llvmL14OperandInfo137E", "llvm::OperandInfo137"}, + {"_ZN4llvmL14OperandInfo138E", "llvm::OperandInfo138"}, + {"_ZN4llvmL14OperandInfo139E", "llvm::OperandInfo139"}, + {"_ZN4llvmL14OperandInfo140E", "llvm::OperandInfo140"}, + {"_ZN4llvmL14OperandInfo141E", "llvm::OperandInfo141"}, + {"_ZN4llvmL14OperandInfo142E", "llvm::OperandInfo142"}, + {"_ZN4llvmL14OperandInfo143E", "llvm::OperandInfo143"}, + {"_ZN4llvmL14OperandInfo144E", "llvm::OperandInfo144"}, + {"_ZN4llvmL14OperandInfo145E", "llvm::OperandInfo145"}, + {"_ZN4llvmL14OperandInfo146E", "llvm::OperandInfo146"}, + {"_ZN4llvmL14OperandInfo147E", "llvm::OperandInfo147"}, + {"_ZN4llvmL14OperandInfo148E", "llvm::OperandInfo148"}, + {"_ZN4llvmL14OperandInfo149E", "llvm::OperandInfo149"}, + {"_ZN4llvmL14OperandInfo150E", "llvm::OperandInfo150"}, + {"_ZN4llvmL14OperandInfo151E", "llvm::OperandInfo151"}, + {"_ZN4llvmL14OperandInfo152E", "llvm::OperandInfo152"}, + {"_ZN4llvmL14OperandInfo153E", "llvm::OperandInfo153"}, + {"_ZN4llvmL14OperandInfo154E", "llvm::OperandInfo154"}, + {"_ZN4llvmL14OperandInfo155E", "llvm::OperandInfo155"}, + {"_ZN4llvmL14OperandInfo156E", "llvm::OperandInfo156"}, + {"_ZN4llvmL14OperandInfo157E", "llvm::OperandInfo157"}, + {"_ZN4llvmL14OperandInfo158E", "llvm::OperandInfo158"}, + {"_ZN4llvmL14OperandInfo159E", "llvm::OperandInfo159"}, + {"_ZN4llvmL14OperandInfo160E", "llvm::OperandInfo160"}, + {"_ZN4llvmL14OperandInfo161E", "llvm::OperandInfo161"}, + {"_ZN4llvmL14OperandInfo162E", "llvm::OperandInfo162"}, + {"_ZN4llvmL14OperandInfo163E", "llvm::OperandInfo163"}, + {"_ZN4llvmL14OperandInfo164E", "llvm::OperandInfo164"}, + {"_ZN4llvmL14OperandInfo165E", "llvm::OperandInfo165"}, + {"_ZN4llvmL14OperandInfo166E", "llvm::OperandInfo166"}, + {"_ZN4llvmL14OperandInfo167E", "llvm::OperandInfo167"}, + {"_ZN4llvmL14OperandInfo168E", "llvm::OperandInfo168"}, + {"_ZN4llvmL14OperandInfo169E", "llvm::OperandInfo169"}, + {"_ZN4llvmL14OperandInfo170E", "llvm::OperandInfo170"}, + {"_ZN4llvmL14OperandInfo171E", "llvm::OperandInfo171"}, + {"_ZN4llvmL14OperandInfo172E", "llvm::OperandInfo172"}, + {"_ZN4llvmL14OperandInfo173E", "llvm::OperandInfo173"}, + {"_ZN4llvmL14OperandInfo174E", "llvm::OperandInfo174"}, + {"_ZN4llvmL14OperandInfo175E", "llvm::OperandInfo175"}, + {"_ZN4llvmL14OperandInfo176E", "llvm::OperandInfo176"}, + {"_ZN4llvmL14OperandInfo177E", "llvm::OperandInfo177"}, + {"_ZN4llvmL14OperandInfo178E", "llvm::OperandInfo178"}, + {"_ZN4llvmL14OperandInfo179E", "llvm::OperandInfo179"}, + {"_ZN4llvmL14OperandInfo180E", "llvm::OperandInfo180"}, + {"_ZN4llvmL14OperandInfo181E", "llvm::OperandInfo181"}, + {"_ZN4llvmL14OperandInfo182E", "llvm::OperandInfo182"}, + {"_ZN4llvmL14OperandInfo183E", "llvm::OperandInfo183"}, + {"_ZN4llvmL14OperandInfo184E", "llvm::OperandInfo184"}, + {"_ZN4llvmL14OperandInfo185E", "llvm::OperandInfo185"}, + {"_ZN4llvmL14OperandInfo186E", "llvm::OperandInfo186"}, + {"_ZN4llvmL14OperandInfo187E", "llvm::OperandInfo187"}, + {"_ZN4llvmL14OperandInfo188E", "llvm::OperandInfo188"}, + {"_ZN4llvmL14OperandInfo189E", "llvm::OperandInfo189"}, + {"_ZN4llvmL14OperandInfo190E", "llvm::OperandInfo190"}, + {"_ZN4llvmL14OperandInfo191E", "llvm::OperandInfo191"}, + {"_ZN4llvmL14OperandInfo192E", "llvm::OperandInfo192"}, + {"_ZN4llvmL14OperandInfo193E", "llvm::OperandInfo193"}, + {"_ZN4llvmL14OperandInfo194E", "llvm::OperandInfo194"}, + {"_ZN4llvmL14OperandInfo195E", "llvm::OperandInfo195"}, + {"_ZN4llvmL14OperandInfo196E", "llvm::OperandInfo196"}, + {"_ZN4llvmL14OperandInfo197E", "llvm::OperandInfo197"}, + {"_ZN4llvmL14OperandInfo198E", "llvm::OperandInfo198"}, + {"_ZN4llvmL14OperandInfo199E", "llvm::OperandInfo199"}, + {"_ZN4llvmL14OperandInfo200E", "llvm::OperandInfo200"}, + {"_ZN4llvmL14OperandInfo201E", "llvm::OperandInfo201"}, + {"_ZN4llvmL14OperandInfo202E", "llvm::OperandInfo202"}, + {"_ZN4llvmL14OperandInfo203E", "llvm::OperandInfo203"}, + {"_ZN4llvmL14OperandInfo204E", "llvm::OperandInfo204"}, + {"_ZN4llvmL14OperandInfo205E", "llvm::OperandInfo205"}, + {"_ZN4llvmL14OperandInfo206E", "llvm::OperandInfo206"}, + {"_ZN4llvmL14OperandInfo207E", "llvm::OperandInfo207"}, + {"_ZN4llvmL14OperandInfo208E", "llvm::OperandInfo208"}, + {"_ZN4llvmL14OperandInfo209E", "llvm::OperandInfo209"}, + {"_ZN4llvmL14OperandInfo210E", "llvm::OperandInfo210"}, + {"_ZN4llvmL14OperandInfo211E", "llvm::OperandInfo211"}, + {"_ZN4llvmL14OperandInfo212E", "llvm::OperandInfo212"}, + {"_ZN4llvmL14OperandInfo213E", "llvm::OperandInfo213"}, + {"_ZN4llvmL14OperandInfo214E", "llvm::OperandInfo214"}, + {"_ZN4llvmL14OperandInfo215E", "llvm::OperandInfo215"}, + {"_ZN4llvmL14OperandInfo216E", "llvm::OperandInfo216"}, + {"_ZN4llvmL14OperandInfo217E", "llvm::OperandInfo217"}, + {"_ZN4llvmL14OperandInfo218E", "llvm::OperandInfo218"}, + {"_ZN4llvmL14OperandInfo219E", "llvm::OperandInfo219"}, + {"_ZN4llvmL14OperandInfo220E", "llvm::OperandInfo220"}, + {"_ZN4llvmL14OperandInfo221E", "llvm::OperandInfo221"}, + {"_ZN4llvmL14OperandInfo222E", "llvm::OperandInfo222"}, + {"_ZN4llvmL14OperandInfo223E", "llvm::OperandInfo223"}, + {"_ZN4llvmL14OperandInfo224E", "llvm::OperandInfo224"}, + {"_ZN4llvmL14OperandInfo225E", "llvm::OperandInfo225"}, + {"_ZN4llvmL14OperandInfo226E", "llvm::OperandInfo226"}, + {"_ZN4llvmL14OperandInfo227E", "llvm::OperandInfo227"}, + {"_ZN4llvmL14OperandInfo228E", "llvm::OperandInfo228"}, + {"_ZN4llvmL14OperandInfo229E", "llvm::OperandInfo229"}, + {"_ZN4llvmL14OperandInfo230E", "llvm::OperandInfo230"}, + {"_ZN4llvmL14OperandInfo231E", "llvm::OperandInfo231"}, + {"_ZN4llvmL14OperandInfo232E", "llvm::OperandInfo232"}, + {"_ZN4llvmL14OperandInfo233E", "llvm::OperandInfo233"}, + {"_ZN4llvmL14OperandInfo234E", "llvm::OperandInfo234"}, + {"_ZN4llvmL14OperandInfo235E", "llvm::OperandInfo235"}, + {"_ZN4llvmL14OperandInfo236E", "llvm::OperandInfo236"}, + {"_ZN4llvmL14OperandInfo237E", "llvm::OperandInfo237"}, + {"_ZN4llvmL14OperandInfo238E", "llvm::OperandInfo238"}, + {"_ZN4llvmL14OperandInfo239E", "llvm::OperandInfo239"}, + {"_ZN4llvmL14OperandInfo240E", "llvm::OperandInfo240"}, + {"_ZN4llvmL14OperandInfo241E", "llvm::OperandInfo241"}, + {"_ZN4llvmL14OperandInfo242E", "llvm::OperandInfo242"}, + {"_ZN4llvmL14OperandInfo243E", "llvm::OperandInfo243"}, + {"_ZN4llvmL14OperandInfo244E", "llvm::OperandInfo244"}, + {"_ZN4llvmL14OperandInfo245E", "llvm::OperandInfo245"}, + {"_ZN4llvmL14OperandInfo246E", "llvm::OperandInfo246"}, + {"_ZN4llvmL14OperandInfo247E", "llvm::OperandInfo247"}, + {"_ZN4llvmL14OperandInfo248E", "llvm::OperandInfo248"}, + {"_ZN4llvmL14OperandInfo249E", "llvm::OperandInfo249"}, + {"_ZN4llvmL14OperandInfo250E", "llvm::OperandInfo250"}, + {"_ZN4llvmL14OperandInfo251E", "llvm::OperandInfo251"}, + {"_ZN4llvmL14OperandInfo252E", "llvm::OperandInfo252"}, + {"_ZN4llvmL14OperandInfo253E", "llvm::OperandInfo253"}, + {"_ZN4llvmL14OperandInfo254E", "llvm::OperandInfo254"}, + {"_ZN4llvmL14OperandInfo255E", "llvm::OperandInfo255"}, + {"_ZN4llvmL14OperandInfo256E", "llvm::OperandInfo256"}, + {"_ZN4llvmL14OperandInfo257E", "llvm::OperandInfo257"}, + {"_ZN4llvmL14OperandInfo258E", "llvm::OperandInfo258"}, + {"_ZN4llvmL14OperandInfo259E", "llvm::OperandInfo259"}, + {"_ZN4llvmL14OperandInfo260E", "llvm::OperandInfo260"}, + {"_ZN4llvmL14OperandInfo261E", "llvm::OperandInfo261"}, + {"_ZN4llvmL8X86InstsE", "llvm::X86Insts"}, + {"_ZN4llvm12_GLOBAL__N_1L19RegisterDescriptorsE", "llvm::(anonymous namespace)::RegisterDescriptors"}, + {"_ZL9SubTypeKV", "SubTypeKV"}, + {"_ZL9FeatureKV", "FeatureKV"}, + {"_ZL10MatchTable", "MatchTable"}, + {"_ZL17OperandMatchTable", "OperandMatchTable"}, + {"_ZN4llvmL9Barriers1E", "llvm::Barriers1"}, + {"_ZN4llvmL9Barriers2E", "llvm::Barriers2"}, + {"_ZN4llvmL9Barriers3E", "llvm::Barriers3"}, + {"_ZN4llvmL9Barriers4E", "llvm::Barriers4"}, + {"_ZN4llvmL9Barriers5E", "llvm::Barriers5"}, + {"_ZN4llvmL9Barriers6E", "llvm::Barriers6"}, + {"_ZN4llvmL9Barriers7E", "llvm::Barriers7"}, + {"_ZN4llvmL9Barriers8E", "llvm::Barriers8"}, + {"_ZN4llvmL12OperandInfo2E", "llvm::OperandInfo2"}, + {"_ZN4llvmL12OperandInfo3E", "llvm::OperandInfo3"}, + {"_ZN4llvmL12OperandInfo4E", "llvm::OperandInfo4"}, + {"_ZN4llvmL12OperandInfo5E", "llvm::OperandInfo5"}, + {"_ZN4llvmL12OperandInfo6E", "llvm::OperandInfo6"}, + {"_ZN4llvmL12OperandInfo7E", "llvm::OperandInfo7"}, + {"_ZN4llvmL12OperandInfo8E", "llvm::OperandInfo8"}, + {"_ZN4llvmL12OperandInfo9E", "llvm::OperandInfo9"}, + {"_ZN4llvmL13OperandInfo10E", "llvm::OperandInfo10"}, + {"_ZN4llvmL13OperandInfo11E", "llvm::OperandInfo11"}, + {"_ZN4llvmL13OperandInfo12E", "llvm::OperandInfo12"}, + {"_ZN4llvmL13OperandInfo13E", "llvm::OperandInfo13"}, + {"_ZN4llvmL13OperandInfo14E", "llvm::OperandInfo14"}, + {"_ZN4llvmL13OperandInfo15E", "llvm::OperandInfo15"}, + {"_ZN4llvmL13OperandInfo16E", "llvm::OperandInfo16"}, + {"_ZN4llvmL13OperandInfo17E", "llvm::OperandInfo17"}, + {"_ZN4llvmL13OperandInfo18E", "llvm::OperandInfo18"}, + {"_ZN4llvmL13OperandInfo19E", "llvm::OperandInfo19"}, + {"_ZN4llvmL13OperandInfo20E", "llvm::OperandInfo20"}, + {"_ZN4llvmL13OperandInfo21E", "llvm::OperandInfo21"}, + {"_ZN4llvmL13OperandInfo22E", "llvm::OperandInfo22"}, + {"_ZN4llvmL13OperandInfo23E", "llvm::OperandInfo23"}, + {"_ZN4llvmL13OperandInfo24E", "llvm::OperandInfo24"}, + {"_ZN4llvmL13OperandInfo25E", "llvm::OperandInfo25"}, + {"_ZN4llvmL13OperandInfo26E", "llvm::OperandInfo26"}, + {"_ZN4llvmL13OperandInfo27E", "llvm::OperandInfo27"}, + {"_ZN4llvmL13OperandInfo28E", "llvm::OperandInfo28"}, + {"_ZN4llvmL13OperandInfo29E", "llvm::OperandInfo29"}, + {"_ZN4llvmL13OperandInfo30E", "llvm::OperandInfo30"}, + {"_ZN4llvmL13OperandInfo31E", "llvm::OperandInfo31"}, + {"_ZN4llvmL13OperandInfo32E", "llvm::OperandInfo32"}, + {"_ZN4llvmL13OperandInfo33E", "llvm::OperandInfo33"}, + {"_ZN4llvmL13OperandInfo34E", "llvm::OperandInfo34"}, + {"_ZN4llvmL13OperandInfo35E", "llvm::OperandInfo35"}, + {"_ZN4llvmL13OperandInfo36E", "llvm::OperandInfo36"}, + {"_ZN4llvmL13OperandInfo37E", "llvm::OperandInfo37"}, + {"_ZN4llvmL13OperandInfo38E", "llvm::OperandInfo38"}, + {"_ZN4llvmL13OperandInfo39E", "llvm::OperandInfo39"}, + {"_ZN4llvmL13OperandInfo40E", "llvm::OperandInfo40"}, + {"_ZN4llvmL13OperandInfo41E", "llvm::OperandInfo41"}, + {"_ZN4llvmL13OperandInfo42E", "llvm::OperandInfo42"}, + {"_ZN4llvmL13OperandInfo43E", "llvm::OperandInfo43"}, + {"_ZN4llvmL13OperandInfo44E", "llvm::OperandInfo44"}, + {"_ZN4llvmL13OperandInfo45E", "llvm::OperandInfo45"}, + {"_ZN4llvmL13OperandInfo46E", "llvm::OperandInfo46"}, + {"_ZN4llvmL13OperandInfo47E", "llvm::OperandInfo47"}, + {"_ZN4llvmL13OperandInfo48E", "llvm::OperandInfo48"}, + {"_ZN4llvmL13OperandInfo49E", "llvm::OperandInfo49"}, + {"_ZN4llvmL13OperandInfo50E", "llvm::OperandInfo50"}, + {"_ZN4llvmL13OperandInfo51E", "llvm::OperandInfo51"}, + {"_ZN4llvmL13OperandInfo52E", "llvm::OperandInfo52"}, + {"_ZN4llvmL13OperandInfo53E", "llvm::OperandInfo53"}, + {"_ZN4llvmL13OperandInfo54E", "llvm::OperandInfo54"}, + {"_ZN4llvmL13OperandInfo55E", "llvm::OperandInfo55"}, + {"_ZN4llvmL13OperandInfo56E", "llvm::OperandInfo56"}, + {"_ZN4llvmL13OperandInfo57E", "llvm::OperandInfo57"}, + {"_ZN4llvmL13OperandInfo58E", "llvm::OperandInfo58"}, + {"_ZN4llvmL13OperandInfo59E", "llvm::OperandInfo59"}, + {"_ZN4llvmL13OperandInfo60E", "llvm::OperandInfo60"}, + {"_ZN4llvmL13OperandInfo61E", "llvm::OperandInfo61"}, + {"_ZN4llvmL13OperandInfo62E", "llvm::OperandInfo62"}, + {"_ZN4llvmL13OperandInfo63E", "llvm::OperandInfo63"}, + {"_ZN4llvmL13OperandInfo64E", "llvm::OperandInfo64"}, + {"_ZN4llvmL13OperandInfo65E", "llvm::OperandInfo65"}, + {"_ZN4llvmL13OperandInfo66E", "llvm::OperandInfo66"}, + {"_ZN4llvmL13OperandInfo67E", "llvm::OperandInfo67"}, + {"_ZN4llvmL13OperandInfo68E", "llvm::OperandInfo68"}, + {"_ZN4llvmL13OperandInfo69E", "llvm::OperandInfo69"}, + {"_ZN4llvmL13OperandInfo70E", "llvm::OperandInfo70"}, + {"_ZN4llvmL13OperandInfo71E", "llvm::OperandInfo71"}, + {"_ZN4llvmL13OperandInfo72E", "llvm::OperandInfo72"}, + {"_ZN4llvmL13OperandInfo73E", "llvm::OperandInfo73"}, + {"_ZN4llvmL13OperandInfo74E", "llvm::OperandInfo74"}, + {"_ZN4llvmL13OperandInfo75E", "llvm::OperandInfo75"}, + {"_ZN4llvmL13OperandInfo76E", "llvm::OperandInfo76"}, + {"_ZN4llvmL13OperandInfo77E", "llvm::OperandInfo77"}, + {"_ZN4llvmL13OperandInfo78E", "llvm::OperandInfo78"}, + {"_ZN4llvmL13OperandInfo79E", "llvm::OperandInfo79"}, + {"_ZN4llvmL13OperandInfo80E", "llvm::OperandInfo80"}, + {"_ZN4llvmL13OperandInfo81E", "llvm::OperandInfo81"}, + {"_ZN4llvmL13OperandInfo82E", "llvm::OperandInfo82"}, + {"_ZN4llvmL13OperandInfo83E", "llvm::OperandInfo83"}, + {"_ZN4llvmL13OperandInfo84E", "llvm::OperandInfo84"}, + {"_ZN4llvmL13OperandInfo85E", "llvm::OperandInfo85"}, + {"_ZN4llvmL13OperandInfo86E", "llvm::OperandInfo86"}, + {"_ZN4llvmL13OperandInfo87E", "llvm::OperandInfo87"}, + {"_ZN4llvmL13OperandInfo88E", "llvm::OperandInfo88"}, + {"_ZN4llvmL13OperandInfo89E", "llvm::OperandInfo89"}, + {"_ZN4llvmL13OperandInfo90E", "llvm::OperandInfo90"}, + {"_ZN4llvmL13OperandInfo91E", "llvm::OperandInfo91"}, + {"_ZN4llvmL13OperandInfo92E", "llvm::OperandInfo92"}, + {"_ZN4llvmL13OperandInfo93E", "llvm::OperandInfo93"}, + {"_ZN4llvmL13OperandInfo94E", "llvm::OperandInfo94"}, + {"_ZN4llvmL13OperandInfo95E", "llvm::OperandInfo95"}, + {"_ZN4llvmL13OperandInfo96E", "llvm::OperandInfo96"}, + {"_ZN4llvmL13OperandInfo97E", "llvm::OperandInfo97"}, + {"_ZN4llvmL13OperandInfo98E", "llvm::OperandInfo98"}, + {"_ZN4llvmL13OperandInfo99E", "llvm::OperandInfo99"}, + {"_ZN4llvmL14OperandInfo100E", "llvm::OperandInfo100"}, + {"_ZN4llvmL14OperandInfo101E", "llvm::OperandInfo101"}, + {"_ZN4llvmL14OperandInfo102E", "llvm::OperandInfo102"}, + {"_ZN4llvmL14OperandInfo103E", "llvm::OperandInfo103"}, + {"_ZN4llvmL14OperandInfo104E", "llvm::OperandInfo104"}, + {"_ZN4llvmL14OperandInfo105E", "llvm::OperandInfo105"}, + {"_ZN4llvmL14OperandInfo106E", "llvm::OperandInfo106"}, + {"_ZN4llvmL14OperandInfo107E", "llvm::OperandInfo107"}, + {"_ZN4llvmL14OperandInfo108E", "llvm::OperandInfo108"}, + {"_ZN4llvmL14OperandInfo109E", "llvm::OperandInfo109"}, + {"_ZN4llvmL14OperandInfo110E", "llvm::OperandInfo110"}, + {"_ZN4llvmL14OperandInfo111E", "llvm::OperandInfo111"}, + {"_ZN4llvmL14OperandInfo112E", "llvm::OperandInfo112"}, + {"_ZN4llvmL14OperandInfo113E", "llvm::OperandInfo113"}, + {"_ZN4llvmL14OperandInfo114E", "llvm::OperandInfo114"}, + {"_ZN4llvmL14OperandInfo115E", "llvm::OperandInfo115"}, + {"_ZN4llvmL14OperandInfo116E", "llvm::OperandInfo116"}, + {"_ZN4llvmL14OperandInfo117E", "llvm::OperandInfo117"}, + {"_ZN4llvmL14OperandInfo118E", "llvm::OperandInfo118"}, + {"_ZN4llvmL14OperandInfo119E", "llvm::OperandInfo119"}, + {"_ZN4llvmL14OperandInfo120E", "llvm::OperandInfo120"}, + {"_ZN4llvmL14OperandInfo121E", "llvm::OperandInfo121"}, + {"_ZN4llvmL14OperandInfo122E", "llvm::OperandInfo122"}, + {"_ZN4llvmL14OperandInfo123E", "llvm::OperandInfo123"}, + {"_ZN4llvmL14OperandInfo124E", "llvm::OperandInfo124"}, + {"_ZN4llvmL14OperandInfo125E", "llvm::OperandInfo125"}, + {"_ZN4llvmL14OperandInfo126E", "llvm::OperandInfo126"}, + {"_ZN4llvmL14OperandInfo127E", "llvm::OperandInfo127"}, + {"_ZN4llvmL14OperandInfo128E", "llvm::OperandInfo128"}, + {"_ZN4llvmL14OperandInfo129E", "llvm::OperandInfo129"}, + {"_ZN4llvmL14OperandInfo130E", "llvm::OperandInfo130"}, + {"_ZN4llvmL14OperandInfo131E", "llvm::OperandInfo131"}, + {"_ZN4llvmL14OperandInfo132E", "llvm::OperandInfo132"}, + {"_ZN4llvmL14OperandInfo133E", "llvm::OperandInfo133"}, + {"_ZN4llvmL14OperandInfo134E", "llvm::OperandInfo134"}, + {"_ZN4llvmL14OperandInfo135E", "llvm::OperandInfo135"}, + {"_ZN4llvmL14OperandInfo136E", "llvm::OperandInfo136"}, + {"_ZN4llvmL14OperandInfo137E", "llvm::OperandInfo137"}, + {"_ZN4llvmL14OperandInfo138E", "llvm::OperandInfo138"}, + {"_ZN4llvmL14OperandInfo139E", "llvm::OperandInfo139"}, + {"_ZN4llvmL14OperandInfo140E", "llvm::OperandInfo140"}, + {"_ZN4llvmL14OperandInfo141E", "llvm::OperandInfo141"}, + {"_ZN4llvmL14OperandInfo142E", "llvm::OperandInfo142"}, + {"_ZN4llvmL14OperandInfo143E", "llvm::OperandInfo143"}, + {"_ZN4llvmL14OperandInfo144E", "llvm::OperandInfo144"}, + {"_ZN4llvmL14OperandInfo145E", "llvm::OperandInfo145"}, + {"_ZN4llvmL14OperandInfo146E", "llvm::OperandInfo146"}, + {"_ZN4llvmL14OperandInfo147E", "llvm::OperandInfo147"}, + {"_ZN4llvmL14OperandInfo148E", "llvm::OperandInfo148"}, + {"_ZN4llvmL14OperandInfo149E", "llvm::OperandInfo149"}, + {"_ZN4llvmL14OperandInfo150E", "llvm::OperandInfo150"}, + {"_ZN4llvmL14OperandInfo151E", "llvm::OperandInfo151"}, + {"_ZN4llvmL14OperandInfo152E", "llvm::OperandInfo152"}, + {"_ZN4llvmL14OperandInfo153E", "llvm::OperandInfo153"}, + {"_ZN4llvmL14OperandInfo154E", "llvm::OperandInfo154"}, + {"_ZN4llvmL14OperandInfo155E", "llvm::OperandInfo155"}, + {"_ZN4llvmL14OperandInfo156E", "llvm::OperandInfo156"}, + {"_ZN4llvmL14OperandInfo157E", "llvm::OperandInfo157"}, + {"_ZN4llvmL14OperandInfo158E", "llvm::OperandInfo158"}, + {"_ZN4llvmL14OperandInfo159E", "llvm::OperandInfo159"}, + {"_ZN4llvmL14OperandInfo160E", "llvm::OperandInfo160"}, + {"_ZN4llvmL14OperandInfo161E", "llvm::OperandInfo161"}, + {"_ZN4llvmL14OperandInfo162E", "llvm::OperandInfo162"}, + {"_ZN4llvmL14OperandInfo163E", "llvm::OperandInfo163"}, + {"_ZN4llvmL14OperandInfo164E", "llvm::OperandInfo164"}, + {"_ZN4llvmL14OperandInfo165E", "llvm::OperandInfo165"}, + {"_ZN4llvmL14OperandInfo166E", "llvm::OperandInfo166"}, + {"_ZN4llvmL14OperandInfo167E", "llvm::OperandInfo167"}, + {"_ZN4llvmL14OperandInfo168E", "llvm::OperandInfo168"}, + {"_ZN4llvmL14OperandInfo169E", "llvm::OperandInfo169"}, + {"_ZN4llvmL14OperandInfo170E", "llvm::OperandInfo170"}, + {"_ZN4llvmL14OperandInfo171E", "llvm::OperandInfo171"}, + {"_ZN4llvmL14OperandInfo172E", "llvm::OperandInfo172"}, + {"_ZN4llvmL14OperandInfo173E", "llvm::OperandInfo173"}, + {"_ZN4llvmL14OperandInfo174E", "llvm::OperandInfo174"}, + {"_ZN4llvmL14OperandInfo175E", "llvm::OperandInfo175"}, + {"_ZN4llvmL14OperandInfo176E", "llvm::OperandInfo176"}, + {"_ZN4llvmL14OperandInfo177E", "llvm::OperandInfo177"}, + {"_ZN4llvmL14OperandInfo178E", "llvm::OperandInfo178"}, + {"_ZN4llvmL14OperandInfo179E", "llvm::OperandInfo179"}, + {"_ZN4llvmL14OperandInfo180E", "llvm::OperandInfo180"}, + {"_ZN4llvmL14OperandInfo181E", "llvm::OperandInfo181"}, + {"_ZN4llvmL14OperandInfo182E", "llvm::OperandInfo182"}, + {"_ZN4llvmL14OperandInfo183E", "llvm::OperandInfo183"}, + {"_ZN4llvmL14OperandInfo184E", "llvm::OperandInfo184"}, + {"_ZN4llvmL14OperandInfo185E", "llvm::OperandInfo185"}, + {"_ZN4llvmL14OperandInfo186E", "llvm::OperandInfo186"}, + {"_ZN4llvmL14OperandInfo187E", "llvm::OperandInfo187"}, + {"_ZN4llvmL14OperandInfo188E", "llvm::OperandInfo188"}, + {"_ZN4llvmL14OperandInfo189E", "llvm::OperandInfo189"}, + {"_ZN4llvmL14OperandInfo190E", "llvm::OperandInfo190"}, + {"_ZN4llvmL14OperandInfo191E", "llvm::OperandInfo191"}, + {"_ZN4llvmL14OperandInfo192E", "llvm::OperandInfo192"}, + {"_ZN4llvmL14OperandInfo193E", "llvm::OperandInfo193"}, + {"_ZN4llvmL14OperandInfo194E", "llvm::OperandInfo194"}, + {"_ZN4llvmL14OperandInfo195E", "llvm::OperandInfo195"}, + {"_ZN4llvmL14OperandInfo196E", "llvm::OperandInfo196"}, + {"_ZN4llvmL14OperandInfo197E", "llvm::OperandInfo197"}, + {"_ZN4llvmL14OperandInfo198E", "llvm::OperandInfo198"}, + {"_ZN4llvmL14OperandInfo199E", "llvm::OperandInfo199"}, + {"_ZN4llvmL14OperandInfo200E", "llvm::OperandInfo200"}, + {"_ZN4llvmL14OperandInfo201E", "llvm::OperandInfo201"}, + {"_ZN4llvmL14OperandInfo202E", "llvm::OperandInfo202"}, + {"_ZN4llvmL14OperandInfo203E", "llvm::OperandInfo203"}, + {"_ZN4llvmL14OperandInfo204E", "llvm::OperandInfo204"}, + {"_ZN4llvmL14OperandInfo205E", "llvm::OperandInfo205"}, + {"_ZN4llvmL14OperandInfo206E", "llvm::OperandInfo206"}, + {"_ZN4llvmL14OperandInfo207E", "llvm::OperandInfo207"}, + {"_ZN4llvmL14OperandInfo208E", "llvm::OperandInfo208"}, + {"_ZN4llvmL14OperandInfo209E", "llvm::OperandInfo209"}, + {"_ZN4llvmL14OperandInfo210E", "llvm::OperandInfo210"}, + {"_ZN4llvmL14OperandInfo211E", "llvm::OperandInfo211"}, + {"_ZN4llvmL14OperandInfo212E", "llvm::OperandInfo212"}, + {"_ZN4llvmL14OperandInfo213E", "llvm::OperandInfo213"}, + {"_ZN4llvmL14OperandInfo214E", "llvm::OperandInfo214"}, + {"_ZN4llvmL14OperandInfo215E", "llvm::OperandInfo215"}, + {"_ZN4llvmL14OperandInfo216E", "llvm::OperandInfo216"}, + {"_ZN4llvmL14OperandInfo217E", "llvm::OperandInfo217"}, + {"_ZN4llvmL14OperandInfo218E", "llvm::OperandInfo218"}, + {"_ZN4llvmL14OperandInfo219E", "llvm::OperandInfo219"}, + {"_ZN4llvmL14OperandInfo220E", "llvm::OperandInfo220"}, + {"_ZN4llvmL14OperandInfo221E", "llvm::OperandInfo221"}, + {"_ZN4llvmL14OperandInfo222E", "llvm::OperandInfo222"}, + {"_ZN4llvmL14OperandInfo223E", "llvm::OperandInfo223"}, + {"_ZN4llvmL14OperandInfo224E", "llvm::OperandInfo224"}, + {"_ZN4llvmL14OperandInfo225E", "llvm::OperandInfo225"}, + {"_ZN4llvmL14OperandInfo226E", "llvm::OperandInfo226"}, + {"_ZN4llvmL14OperandInfo227E", "llvm::OperandInfo227"}, + {"_ZN4llvmL14OperandInfo228E", "llvm::OperandInfo228"}, + {"_ZN4llvmL14OperandInfo229E", "llvm::OperandInfo229"}, + {"_ZN4llvmL14OperandInfo230E", "llvm::OperandInfo230"}, + {"_ZN4llvmL14OperandInfo231E", "llvm::OperandInfo231"}, + {"_ZN4llvmL14OperandInfo232E", "llvm::OperandInfo232"}, + {"_ZN4llvmL14OperandInfo233E", "llvm::OperandInfo233"}, + {"_ZN4llvmL14OperandInfo234E", "llvm::OperandInfo234"}, + {"_ZN4llvmL14OperandInfo235E", "llvm::OperandInfo235"}, + {"_ZN4llvmL14OperandInfo236E", "llvm::OperandInfo236"}, + {"_ZN4llvmL14OperandInfo237E", "llvm::OperandInfo237"}, + {"_ZN4llvmL14OperandInfo238E", "llvm::OperandInfo238"}, + {"_ZN4llvmL14OperandInfo239E", "llvm::OperandInfo239"}, + {"_ZN4llvmL14OperandInfo240E", "llvm::OperandInfo240"}, + {"_ZN4llvmL14OperandInfo241E", "llvm::OperandInfo241"}, + {"_ZN4llvmL14OperandInfo242E", "llvm::OperandInfo242"}, + {"_ZN4llvmL14OperandInfo243E", "llvm::OperandInfo243"}, + {"_ZN4llvmL14OperandInfo244E", "llvm::OperandInfo244"}, + {"_ZN4llvmL14OperandInfo245E", "llvm::OperandInfo245"}, + {"_ZN4llvmL14OperandInfo246E", "llvm::OperandInfo246"}, + {"_ZN4llvmL14OperandInfo247E", "llvm::OperandInfo247"}, + {"_ZN4llvmL14OperandInfo248E", "llvm::OperandInfo248"}, + {"_ZN4llvmL14OperandInfo249E", "llvm::OperandInfo249"}, + {"_ZN4llvmL14OperandInfo250E", "llvm::OperandInfo250"}, + {"_ZN4llvmL14OperandInfo251E", "llvm::OperandInfo251"}, + {"_ZN4llvmL14OperandInfo252E", "llvm::OperandInfo252"}, + {"_ZN4llvmL14OperandInfo253E", "llvm::OperandInfo253"}, + {"_ZN4llvmL14OperandInfo254E", "llvm::OperandInfo254"}, + {"_ZN4llvmL14OperandInfo255E", "llvm::OperandInfo255"}, + {"_ZN4llvmL14OperandInfo256E", "llvm::OperandInfo256"}, + {"_ZN4llvmL14OperandInfo257E", "llvm::OperandInfo257"}, + {"_ZN4llvmL14OperandInfo258E", "llvm::OperandInfo258"}, + {"_ZN4llvmL14OperandInfo259E", "llvm::OperandInfo259"}, + {"_ZN4llvmL14OperandInfo260E", "llvm::OperandInfo260"}, + {"_ZN4llvmL8ARMInstsE", "llvm::ARMInsts"}, + {"_ZL12ARM_MLxTable", "ARM_MLxTable"}, + {"_ZN4llvm12_GLOBAL__N_1L19RegisterDescriptorsE", "llvm::(anonymous namespace)::RegisterDescriptors"}, + {"_ZL10NumEmitted", "NumEmitted"}, + {"_ZL6NumTBs", "NumTBs"}, + {"_ZL6NumCBZ", "NumCBZ"}, + {"_ZL13NumT2BrShrunk", "NumT2BrShrunk"}, + {"_ZL13NumT2CPShrunk", "NumT2CPShrunk"}, + {"_ZL8NumSplit", "NumSplit"}, + {"_ZL11NumCBrFixed", "NumCBrFixed"}, + {"_ZL11NumUBrFixed", "NumUBrFixed"}, + {"_ZL7NumCPEs", "NumCPEs"}, + {"_ZL13NumJTInserted", "NumJTInserted"}, + {"_ZL10NumJTMoved", "NumJTMoved"}, + {"_ZL13NEONLdStTable", "NEONLdStTable"}, + {"_ZL11NumMovwMovt", "NumMovwMovt"}, + {"_ZL12NumTailCalls", "NumTailCalls"}, + {"_ZL12NumVSTMGened", "NumVSTMGened"}, + {"_ZL12NumVLDMGened", "NumVLDMGened"}, + {"_ZL11NumSTMGened", "NumSTMGened"}, + {"_ZL11NumLDMGened", "NumLDMGened"}, + {"_ZL11NumSTRD2STR", "NumSTRD2STR"}, + {"_ZL11NumLDRD2LDR", "NumLDRD2LDR"}, + {"_ZL11NumSTRD2STM", "NumSTRD2STM"}, + {"_ZL11NumLDRD2LDM", "NumLDRD2LDM"}, + {"_ZL12NumLdStMoved", "NumLdStMoved"}, + {"_ZL13NumSTRDFormed", "NumSTRDFormed"}, + {"_ZL13NumLDRDFormed", "NumLDRDFormed"}, + {"_ZL12MCNumEmitted", "MCNumEmitted"}, + {"_ZL18MCNumCPRelocations", "MCNumCPRelocations"}, + {"_ZL9SubTypeKV", "SubTypeKV"}, + {"_ZL9FeatureKV", "FeatureKV"}, + {"_ZL10ProcItinKV", "ProcItinKV"}, + {"_ZL6Stages", "Stages"}, + {"_ZL18GenericItineraries", "GenericItineraries"}, + {"_ZL16ARMV6Itineraries", "ARMV6Itineraries"}, + {"_ZL19CortexA8Itineraries", "CortexA8Itineraries"}, + {"_ZL19CortexA9Itineraries", "CortexA9Itineraries"}, + {"_ZL9NumExpand", "NumExpand"}, + {"_ZL8NumVMovs", "NumVMovs"}, + {"_ZL6NumITs", "NumITs"}, + {"_ZL13NumMovedInsts", "NumMovedInsts"}, + {"_ZL10NumNarrows", "NumNarrows"}, + {"_ZL9Num2Addrs", "Num2Addrs"}, + {"_ZL8NumLdSts", "NumLdSts"}, + {"_ZN12_GLOBAL__N_1L11ReduceTableE", "(anonymous namespace)::ReduceTable"}, + {"_ZL13NodesCombined", "NodesCombined"}, + {"_ZL11OpsNarrowed", "OpsNarrowed"}, + {"_ZL16PostIndexedNodes", "PostIndexedNodes"}, + {"_ZL15PreIndexedNodes", "PreIndexedNodes"}, + {"_ZL10LdStFP2Int", "LdStFP2Int"}, + {"_ZL8NumNoops", "NumNoops"}, + {"_ZL9NumStalls", "NumStalls"}, + {"_ZL11NumPRCopies", "NumPRCopies"}, + {"_ZL7NumDups", "NumDups"}, + {"_ZL10NumUnfolds", "NumUnfolds"}, + {"_ZL13NumBacktracks", "NumBacktracks"}, + {"_ZL14LoadsClustered", "LoadsClustered"}, + {"_ZL17NumDAGIselRetries", "NumDAGIselRetries"}, + {"_ZL17NumFastIselBlocks", "NumFastIselBlocks"}, + {"_ZL12NumDAGBlocks", "NumDAGBlocks"}, + {"_ZL19NumFastIselFailures", "NumFastIselFailures"}, + {"_ZL12EmittedInsts", "EmittedInsts"}, + {"_ZL13NumBranchOpts", "NumBranchOpts"}, + {"_ZL13NumDeadBlocks", "NumDeadBlocks"}, + {"_ZL12NumTailMerge", "NumTailMerge"}, + {"_ZL15NumLoopsAligned", "NumLoopsAligned"}, + {"_ZL13NumIntraMoved", "NumIntraMoved"}, + {"_ZL12NumIntraElim", "NumIntraElim"}, + {"_ZL10NumDeletes", "NumDeletes"}, + {"_ZL23NumExceptionValuesMoved", "NumExceptionValuesMoved"}, + {"_ZL17NumUnwindsLowered", "NumUnwindsLowered"}, + {"_ZL19NumLandingPadsSplit", "NumLandingPadsSplit"}, + {"_ZL12NumIfConvBBs", "NumIfConvBBs"}, + {"_ZL9NumDupBBs", "NumDupBBs"}, + {"_ZL11NumDiamonds", "NumDiamonds"}, + {"_ZL15NumTriangleFRev", "NumTriangleFRev"}, + {"_ZL16NumTriangleFalse", "NumTriangleFalse"}, + {"_ZL14NumTriangleRev", "NumTriangleRev"}, + {"_ZL11NumTriangle", "NumTriangle"}, + {"_ZL14NumSimpleFalse", "NumSimpleFalse"}, + {"_ZL9NumSimple", "NumSimple"}, + {"_ZL9numSplits", "numSplits"}, + {"_ZL8numFolds", "numFolds"}, + {"_ZL12numIntervals", "numIntervals"}, + {"_ZL15NumReplacements", "NumReplacements"}, + {"_ZL16NumBaseRegisters", "NumBaseRegisters"}, + {"_ZL14NumAllocations", "NumAllocations"}, + {"_ZL11NumCommutes", "NumCommutes"}, + {"_ZL11NumPhysCSEs", "NumPhysCSEs"}, + {"_ZL7NumCSEs", "NumCSEs"}, + {"_ZL12NumCoalesces", "NumCoalesces"}, + {"_ZL10NumHoisted", "NumHoisted"}, + {"_ZL8NumCSEed", "NumCSEed"}, + {"_ZL8NumLowRP", "NumLowRP"}, + {"_ZL14NumHighLatency", "NumHighLatency"}, + {"_ZL16NumPostRAHoisted", "NumPostRAHoisted"}, + {"_ZL7NumSunk", "NumSunk"}, + {"_ZL8NumSplit", "NumSplit"}, + {"_ZL12NumCoalesces", "NumCoalesces"}, + {"_ZL16NumDeadPHICycles", "NumDeadPHICycles"}, + {"_ZL12NumPHICycles", "NumPHICycles"}, + {"_ZL9NumReused", "NumReused"}, + {"_ZL9NumAtomic", "NumAtomic"}, + {"_ZL10NumImmFold", "NumImmFold"}, + {"_ZL8NumReuse", "NumReuse"}, + {"_ZL13NumEliminated", "NumEliminated"}, + {"_ZL8NumNoops", "NumNoops"}, + {"_ZL9NumStalls", "NumStalls"}, + {"_ZL12NumFixedAnti", "NumFixedAnti"}, + {"_ZL13NumDeadSpills", "NumDeadSpills"}, + {"_ZL12NumRenumbers", "NumRenumbers"}, + {"_ZL15NumRestoreFolds", "NumRestoreFolds"}, + {"_ZL8NumFolds", "NumFolds"}, + {"_ZL9NumRemats", "NumRemats"}, + {"_ZL9NumSplits", "NumSplits"}, + {"_ZL16NumScavengedRegs", "NumScavengedRegs"}, + {"_ZL19NumVirtualFrameRegs", "NumVirtualFrameRegs"}, + {"_ZL9NumCopies", "NumCopies"}, + {"_ZL9NumStores", "NumStores"}, + {"_ZL8NumLoads", "NumLoads"}, + {"_ZL11NumCoalesce", "NumCoalesce"}, + {"_ZL13NumBacktracks", "NumBacktracks"}, + {"_ZL12NumDowngrade", "NumDowngrade"}, + {"_ZL8NumIters", "NumIters"}, + {"_ZL12numSRReduced", "numSRReduced"}, + {"_ZL7numPeep", "numPeep"}, + {"_ZL8numJoins", "numJoins"}, + {"_ZL11numCrossRCs", "numCrossRCs"}, + {"_ZL9numAborts", "numAborts"}, + {"_ZL12numDeadValNo", "numDeadValNo"}, + {"_ZL9NumReMats", "NumReMats"}, + {"_ZL11numCommutes", "numCommutes"}, + {"_ZL10numExtends", "numExtends"}, + {"_ZL10NumSpilled", "NumSpilled"}, + {"_ZL10NumUnwinds", "NumUnwinds"}, + {"_ZL10NumInvokes", "NumInvokes"}, + {"_ZL7NumDead", "NumDead"}, + {"_ZL12NumStoreElim", "NumStoreElim"}, + {"_ZL10NumRegRepl", "NumRegRepl"}, + {"_ZL11NumLoadElim", "NumLoadElim"}, + {"_ZL13NumEliminated", "NumEliminated"}, + {"_ZL13NumDeadBlocks", "NumDeadBlocks"}, + {"_ZL12NumInstrDups", "NumInstrDups"}, + {"_ZL11NumTailDups", "NumTailDups"}, + {"_ZL8NumTails", "NumTails"}, + {"_ZL9NumReMats", "NumReMats"}, + {"_ZL19NumConvertedTo3Addr", "NumConvertedTo3Addr"}, + {"_ZL12Num3AddrSunk", "Num3AddrSunk"}, + {"_ZL15NumAggrCommuted", "NumAggrCommuted"}, + {"_ZL11NumCommuted", "NumCommuted"}, + {"_ZL10NumDeletes", "NumDeletes"}, + {"_ZL19NumTwoAddressInstrs", "NumTwoAddressInstrs"}, + {"_ZL9NumSpills", "NumSpills"}, + {"_ZL6NumDSS", "NumDSS"}, + {"_ZL9NumStores", "NumStores"}, + {"_ZL6NumDRM", "NumDRM"}, + {"_ZL9NumReused", "NumReused"}, + {"_ZL8NumLoads", "NumLoads"}, + {"_ZL9NumReMats", "NumReMats"}, + {"_ZL6NumDCE", "NumDCE"}, + {"_ZL11NumCommutes", "NumCommutes"}, + {"_ZL6NumDSE", "NumDSE"}, + {"_ZL10NumSUnfold", "NumSUnfold"}, + {"_ZL10NumAvoided", "NumAvoided"}, + {"_ZL11NumCopified", "NumCopified"}, + {"_ZL10NumOmitted", "NumOmitted"}, + {"_ZL10NumPSpills", "NumPSpills"}, + {"_ZL15NumModRefUnfold", "NumModRefUnfold"}, + {"_ZL10NumRemoved", "NumRemoved"}, + {"_ZL11NumGEPsElim", "NumGEPsElim"}, + {"_ZL14NumMemoryInsts", "NumMemoryInsts"}, + {"_ZL10NumCmpUses", "NumCmpUses"}, + {"_ZL10NumExtUses", "NumExtUses"}, + {"_ZL12NumExtsMoved", "NumExtsMoved"}, + {"_ZL11NumCastUses", "NumCastUses"}, + {"_ZL11NumPHIsElim", "NumPHIsElim"}, + {"_ZL13NumBlocksElim", "NumBlocksElim"}, + {"_ZL12NumMemAccess", "NumMemAccess"}, + {"_ZL7NumCmps", "NumCmps"}, + {"_ZL7NumPhis", "NumPhis"}, + {"_ZL10NumSelects", "NumSelects"}, + {"_ZL12NumFastOther", "NumFastOther"}, + {"_ZL13NumFastStores", "NumFastStores"}, + {"_ZL6NumDSE", "NumDSE"}, + {"_ZL10NumCSECall", "NumCSECall"}, + {"_ZL10NumCSELoad", "NumCSELoad"}, + {"_ZL6NumCSE", "NumCSE"}, + {"_ZL11NumSimplify", "NumSimplify"}, + {"_ZL9NumGVNPRE", "NumGVNPRE"}, + {"_ZL11NumGVNInstr", "NumGVNInstr"}, + {"_ZL10NumPRELoad", "NumPRELoad"}, + {"_ZL10NumGVNLoad", "NumGVNLoad"}, + {"_ZL12NumGVNBlocks", "NumGVNBlocks"}, + {"_ZL10NumRemoved", "NumRemoved"}, + {"_ZL7NumLFTR", "NumLFTR"}, + {"_ZL11NumInserted", "NumInserted"}, + {"_ZL11NumReplaced", "NumReplaced"}, + {"_ZL8NumDupes", "NumDupes"}, + {"_ZL10NumThreads", "NumThreads"}, + {"_ZL8NumFolds", "NumFolds"}, + {"_ZL11NumPromoted", "NumPromoted"}, + {"_ZL10NumHoisted", "NumHoisted"}, + {"_ZL13NumMovedCalls", "NumMovedCalls"}, + {"_ZL13NumMovedLoads", "NumMovedLoads"}, + {"_ZL7NumSunk", "NumSunk"}, + {"_ZL10NumDeleted", "NumDeleted"}, + {"_ZL9NumMemSet", "NumMemSet"}, + {"_ZL9NumMemCpy", "NumMemCpy"}, + {"_ZL10NumRotated", "NumRotated"}, + {"_ZL10NumSelects", "NumSelects"}, + {"_ZL11NumSwitches", "NumSwitches"}, + {"_ZL11NumBranches", "NumBranches"}, + {"_ZL11NumSimplify", "NumSimplify"}, + {"_ZL10NumTrivial", "NumTrivial"}, + {"_ZL14NumMemCpyInstr", "NumMemCpyInstr"}, + {"_ZL12NumMoveToCpy", "NumMoveToCpy"}, + {"_ZL11NumCpyToSet", "NumCpyToSet"}, + {"_ZL14NumMemSetInfer", "NumMemSetInfer"}, + {"_ZL10NumChanged", "NumChanged"}, + {"_ZL10NumAnnihil", "NumAnnihil"}, + {"_ZL9NumFactor", "NumFactor"}, + {"_ZL9NumLinear", "NumLinear"}, + {"_ZL16IPNumGlobalConst", "IPNumGlobalConst"}, + {"_ZL16IPNumInstRemoved", "IPNumInstRemoved"}, + {"_ZL14NumInstRemoved", "NumInstRemoved"}, + {"_ZL13NumDeadBlocks", "NumDeadBlocks"}, + {"_ZL15IPNumArgsElimed", "IPNumArgsElimed"}, + {"_ZL12NumConverted", "NumConverted"}, + {"_ZL11NumReplaced", "NumReplaced"}, + {"_ZL10NumGlobals", "NumGlobals"}, + {"_ZL11NumPromoted", "NumPromoted"}, + {"_ZL11NumAdjusted", "NumAdjusted"}, + {"_ZL8NumSimpl", "NumSimpl"}, + {"_ZL13NumSimplified", "NumSimplified"}, + {"_ZL12NumAnnotated", "NumAnnotated"}, + {"_ZL11NumRetDuped", "NumRetDuped"}, + {"_ZL13NumEliminated", "NumEliminated"}, + {"_ZL13NumAccumAdded", "NumAccumAdded"}, + {"_ZL12NumDeadStore", "NumDeadStore"}, + {"_ZL11NumCombined", "NumCombined"}, + {"_ZL11NumSunkInst", "NumSunkInst"}, + {"_ZL12NumConstProp", "NumConstProp"}, + {"_ZL11NumDeadInst", "NumDeadInst"}, + {"_ZL9NumExpand", "NumExpand"}, + {"_ZL9NumFactor", "NumFactor"}, + {"_ZL10NumReassoc", "NumReassoc"}, + {"_ZL9NumBroken", "NumBroken"}, + {"_ZL8NumLCSSA", "NumLCSSA"}, + {"_ZL9NumNested", "NumNested"}, + {"_ZL11NumInserted", "NumInserted"}, + {"_ZL11NumUnrolled", "NumUnrolled"}, + {"_ZL21NumCompletelyUnrolled", "NumCompletelyUnrolled"}, + {"_ZL10NumUnwinds", "NumUnwinds"}, + {"_ZL10NumInvokes", "NumInvokes"}, + {"_ZL10NumSpilled", "NumSpilled"}, + {"_ZL12NumPHIInsert", "NumPHIInsert"}, + {"_ZL16NumLocalPromoted", "NumLocalPromoted"}, + {"_ZL14NumSingleStore", "NumSingleStore"}, + {"_ZL13NumDeadAlloca", "NumDeadAlloca"}, + {"_ZL15NumSpeculations", "NumSpeculations"}, + {"_ZL16MaxSCCIterations", "MaxSCCIterations"}, + {"_ZL10NumReassoc", "NumReassoc"}, + {"_ZL9NumFactor", "NumFactor"}, + {"_ZL9NumExpand", "NumExpand"}, + {"_ZL27NumCacheCompleteNonLocalPtr", "NumCacheCompleteNonLocalPtr"}, + {"_ZL21NumUncacheNonLocalPtr", "NumUncacheNonLocalPtr"}, + {"_ZL24NumCacheDirtyNonLocalPtr", "NumCacheDirtyNonLocalPtr"}, + {"_ZL19NumCacheNonLocalPtr", "NumCacheNonLocalPtr"}, + {"_ZL18NumUncacheNonLocal", "NumUncacheNonLocal"}, + {"_ZL21NumCacheDirtyNonLocal", "NumCacheDirtyNonLocal"}, + {"_ZL16NumCacheNonLocal", "NumCacheNonLocal"}, + {"_ZL31NumBruteForceTripCountsComputed", "NumBruteForceTripCountsComputed"}, + {"_ZL19NumArrayLenItCounts", "NumArrayLenItCounts"}, + {"_ZL24NumTripCountsNotComputed", "NumTripCountsNotComputed"}, + {"_ZL21NumTripCountsComputed", "NumTripCountsComputed"}, + {"_ZN12_GLOBAL__N_15statsL15RelaxationStepsE", "(anonymous namespace)::stats::RelaxationSteps"}, + {"_ZN12_GLOBAL__N_15statsL19RelaxedInstructionsE", "(anonymous namespace)::stats::RelaxedInstructions"}, + {"_ZN12_GLOBAL__N_15statsL11ObjectBytesE", "(anonymous namespace)::stats::ObjectBytes"}, + {"_ZN12_GLOBAL__N_15statsL16EmittedFragmentsE", "(anonymous namespace)::stats::EmittedFragments"}, + {"_ZN12_GLOBAL__N_15statsL15FragmentLayoutsE", "(anonymous namespace)::stats::FragmentLayouts"}, + {"_ZN12_GLOBAL__N_15statsL13EvaluateFixupE", "(anonymous namespace)::stats::EvaluateFixup"}, + {"_ZN12_GLOBAL__N_15statsL14MCExprEvaluateE", "(anonymous namespace)::stats::MCExprEvaluate"}, + {"_ZL11ProgramName", "ProgramName"}, + {"_ZL20ActiveASTUnitObjects", "ActiveASTUnitObjects"}, + {"_ZL12ConstEqIndex", "ConstEqIndex"}, + {"_ZL15ConstNotEqIndex", "ConstNotEqIndex"}, + {"_ZL11AutoRCIndex", "AutoRCIndex"}, + {"_ZL11AutoRBIndex", "AutoRBIndex"}, + {"_ZL20ConstraintRangeIndex", "ConstraintRangeIndex"}, + {"_ZL12nAccessSpecs", "nAccessSpecs"}, + {"_ZL7nBlocks", "nBlocks"}, + {"_ZL14nFileScopeAsms", "nFileScopeAsms"}, + {"_ZL8nFriends", "nFriends"}, + {"_ZL16nFriendTemplates", "nFriendTemplates"}, + {"_ZL13nLinkageSpecs", "nLinkageSpecs"}, + {"_ZL11nNamespaces", "nNamespaces"}, + {"_ZL16nNamespaceAliass", "nNamespaceAliass"}, + {"_ZL21nObjCCompatibleAliass", "nObjCCompatibleAliass"}, + {"_ZL14nObjCCategorys", "nObjCCategorys"}, + {"_ZL18nObjCCategoryImpls", "nObjCCategoryImpls"}, + {"_ZL20nObjCImplementations", "nObjCImplementations"}, + {"_ZL15nObjCInterfaces", "nObjCInterfaces"}, + {"_ZL14nObjCProtocols", "nObjCProtocols"}, + {"_ZL12nObjCMethods", "nObjCMethods"}, + {"_ZL14nObjCPropertys", "nObjCPropertys"}, + {"_ZL15nClassTemplates", "nClassTemplates"}, + {"_ZL18nFunctionTemplates", "nFunctionTemplates"}, + {"_ZL22nTemplateTemplateParms", "nTemplateTemplateParms"}, + {"_ZL6nEnums", "nEnums"}, + {"_ZL8nRecords", "nRecords"}, + {"_ZL11nCXXRecords", "nCXXRecords"}, + {"_ZL29nClassTemplateSpecializations", "nClassTemplateSpecializations"}, + {"_ZL36nClassTemplatePartialSpecializations", "nClassTemplatePartialSpecializations"}, + {"_ZL18nTemplateTypeParms", "nTemplateTypeParms"}, + {"_ZL9nTypedefs", "nTypedefs"}, + {"_ZL25nUnresolvedUsingTypenames", "nUnresolvedUsingTypenames"}, + {"_ZL7nUsings", "nUsings"}, + {"_ZL16nUsingDirectives", "nUsingDirectives"}, + {"_ZL13nUsingShadows", "nUsingShadows"}, + {"_ZL7nFields", "nFields"}, + {"_ZL17nObjCAtDefsFields", "nObjCAtDefsFields"}, + {"_ZL10nObjCIvars", "nObjCIvars"}, + {"_ZL10nFunctions", "nFunctions"}, + {"_ZL11nCXXMethods", "nCXXMethods"}, + {"_ZL16nCXXConstructors", "nCXXConstructors"}, + {"_ZL15nCXXConversions", "nCXXConversions"}, + {"_ZL15nCXXDestructors", "nCXXDestructors"}, + {"_ZL21nNonTypeTemplateParms", "nNonTypeTemplateParms"}, + {"_ZL5nVars", "nVars"}, + {"_ZL15nImplicitParams", "nImplicitParams"}, + {"_ZL9nParmVars", "nParmVars"}, + {"_ZL14nEnumConstants", "nEnumConstants"}, + {"_ZL15nIndirectFields", "nIndirectFields"}, + {"_ZL22nUnresolvedUsingValues", "nUnresolvedUsingValues"}, + {"_ZL11nObjCClasss", "nObjCClasss"}, + {"_ZL21nObjCForwardProtocols", "nObjCForwardProtocols"}, + {"_ZL18nObjCPropertyImpls", "nObjCPropertyImpls"}, + {"_ZL14nStaticAsserts", "nStaticAsserts"}, + {"_ZL17nTranslationUnits", "nTranslationUnits"}, + {"_ZL13StmtClassInfo", "StmtClassInfo"}, + {"_ZL11InlineLimit", "InlineLimit"}, + {"_ZL13HintThreshold", "HintThreshold"}, + {"_ZL13Disable256Bit", "Disable256Bit"}, + {"_ZL8NoFusing", "NoFusing"}, + {"_ZL17PrintFailedFusing", "PrintFailedFusing"}, + {"_ZL16ReMatPICStubLoad", "ReMatPICStubLoad"}, + {"_ZL19JITCompilerFunction", "JITCompilerFunction"}, + {"_ZL15AsmWriterFlavor", "AsmWriterFlavor"}, + {"_ZN4llvm12_GLOBAL__N_1L6CCRVTsE", "llvm::(anonymous namespace)::CCRVTs"}, + {"_ZN4llvm12_GLOBAL__N_1L14CONTROL_REGVTsE", "llvm::(anonymous namespace)::CONTROL_REGVTs"}, + {"_ZN4llvm12_GLOBAL__N_1L12DEBUG_REGVTsE", "llvm::(anonymous namespace)::DEBUG_REGVTs"}, + {"_ZN4llvm12_GLOBAL__N_1L7FR32VTsE", "llvm::(anonymous namespace)::FR32VTs"}, + {"_ZN4llvm12_GLOBAL__N_1L7FR64VTsE", "llvm::(anonymous namespace)::FR64VTs"}, + {"_ZN4llvm12_GLOBAL__N_1L7GR16VTsE", "llvm::(anonymous namespace)::GR16VTs"}, + {"_ZN4llvm12_GLOBAL__N_1L12GR16_ABCDVTsE", "llvm::(anonymous namespace)::GR16_ABCDVTs"}, + {"_ZN4llvm12_GLOBAL__N_1L13GR16_NOREXVTsE", "llvm::(anonymous namespace)::GR16_NOREXVTs"}, + {"_ZN4llvm12_GLOBAL__N_1L7GR32VTsE", "llvm::(anonymous namespace)::GR32VTs"}, + {"_ZN4llvm12_GLOBAL__N_1L12GR32_ABCDVTsE", "llvm::(anonymous namespace)::GR32_ABCDVTs"}, + {"_ZN4llvm12_GLOBAL__N_1L10GR32_ADVTsE", "llvm::(anonymous namespace)::GR32_ADVTs"}, + {"_ZN4llvm12_GLOBAL__N_1L13GR32_NOREXVTsE", "llvm::(anonymous namespace)::GR32_NOREXVTs"}, + {"_ZN4llvm12_GLOBAL__N_1L12GR32_NOSPVTsE", "llvm::(anonymous namespace)::GR32_NOSPVTs"}, + {"_ZN4llvm12_GLOBAL__N_1L10GR32_TCVTsE", "llvm::(anonymous namespace)::GR32_TCVTs"}, + {"_ZN4llvm12_GLOBAL__N_1L7GR64VTsE", "llvm::(anonymous namespace)::GR64VTs"}, + {"_ZN4llvm12_GLOBAL__N_1L12GR64_ABCDVTsE", "llvm::(anonymous namespace)::GR64_ABCDVTs"}, + {"_ZN4llvm12_GLOBAL__N_1L13GR64_NOREXVTsE", "llvm::(anonymous namespace)::GR64_NOREXVTs"}, + {"_ZN4llvm12_GLOBAL__N_1L18GR64_NOREX_NOSPVTsE", "llvm::(anonymous namespace)::GR64_NOREX_NOSPVTs"}, + {"_ZN4llvm12_GLOBAL__N_1L12GR64_NOSPVTsE", "llvm::(anonymous namespace)::GR64_NOSPVTs"}, + {"_ZN4llvm12_GLOBAL__N_1L10GR64_TCVTsE", "llvm::(anonymous namespace)::GR64_TCVTs"}, + {"_ZN4llvm12_GLOBAL__N_1L13GR64_TCW64VTsE", "llvm::(anonymous namespace)::GR64_TCW64VTs"}, + {"_ZN4llvm12_GLOBAL__N_1L6GR8VTsE", "llvm::(anonymous namespace)::GR8VTs"}, + {"_ZN4llvm12_GLOBAL__N_1L13GR8_ABCD_HVTsE", "llvm::(anonymous namespace)::GR8_ABCD_HVTs"}, + {"_ZN4llvm12_GLOBAL__N_1L13GR8_ABCD_LVTsE", "llvm::(anonymous namespace)::GR8_ABCD_LVTs"}, + {"_ZN4llvm12_GLOBAL__N_1L12GR8_NOREXVTsE", "llvm::(anonymous namespace)::GR8_NOREXVTs"}, + {"_ZN4llvm12_GLOBAL__N_1L8RFP32VTsE", "llvm::(anonymous namespace)::RFP32VTs"}, + {"_ZN4llvm12_GLOBAL__N_1L8RFP64VTsE", "llvm::(anonymous namespace)::RFP64VTs"}, + {"_ZN4llvm12_GLOBAL__N_1L8RFP80VTsE", "llvm::(anonymous namespace)::RFP80VTs"}, + {"_ZN4llvm12_GLOBAL__N_1L6RSTVTsE", "llvm::(anonymous namespace)::RSTVTs"}, + {"_ZN4llvm12_GLOBAL__N_1L14SEGMENT_REGVTsE", "llvm::(anonymous namespace)::SEGMENT_REGVTs"}, + {"_ZN4llvm12_GLOBAL__N_1L8VR128VTsE", "llvm::(anonymous namespace)::VR128VTs"}, + {"_ZN4llvm12_GLOBAL__N_1L8VR256VTsE", "llvm::(anonymous namespace)::VR256VTs"}, + {"_ZN4llvm12_GLOBAL__N_1L7VR64VTsE", "llvm::(anonymous namespace)::VR64VTs"}, + {"_ZL14EnableARM3Addr", "EnableARM3Addr"}, + {"_ZL20ForceAllBaseRegAlloc", "ForceAllBaseRegAlloc"}, + {"_ZL21EnableLocalStackAlloc", "EnableLocalStackAlloc"}, + {"_ZL17EnableBasePointer", "EnableBasePointer"}, + {"_ZN4llvm12_GLOBAL__N_1L6CCRVTsE", "llvm::(anonymous namespace)::CCRVTs"}, + {"_ZN4llvm12_GLOBAL__N_1L6DPRVTsE", "llvm::(anonymous namespace)::DPRVTs"}, + {"_ZN4llvm12_GLOBAL__N_1L8DPR_8VTsE", "llvm::(anonymous namespace)::DPR_8VTs"}, + {"_ZN4llvm12_GLOBAL__N_1L11DPR_VFP2VTsE", "llvm::(anonymous namespace)::DPR_VFP2VTs"}, + {"_ZN4llvm12_GLOBAL__N_1L6GPRVTsE", "llvm::(anonymous namespace)::GPRVTs"}, + {"_ZN4llvm12_GLOBAL__N_1L6QPRVTsE", "llvm::(anonymous namespace)::QPRVTs"}, + {"_ZN4llvm12_GLOBAL__N_1L8QPR_8VTsE", "llvm::(anonymous namespace)::QPR_8VTs"}, + {"_ZN4llvm12_GLOBAL__N_1L11QPR_VFP2VTsE", "llvm::(anonymous namespace)::QPR_VFP2VTs"}, + {"_ZN4llvm12_GLOBAL__N_1L7QQPRVTsE", "llvm::(anonymous namespace)::QQPRVTs"}, + {"_ZN4llvm12_GLOBAL__N_1L12QQPR_VFP2VTsE", "llvm::(anonymous namespace)::QQPR_VFP2VTs"}, + {"_ZN4llvm12_GLOBAL__N_1L9QQQQPRVTsE", "llvm::(anonymous namespace)::QQQQPRVTs"}, + {"_ZN4llvm12_GLOBAL__N_1L6SPRVTsE", "llvm::(anonymous namespace)::SPRVTs"}, + {"_ZN4llvm12_GLOBAL__N_1L8SPR_8VTsE", "llvm::(anonymous namespace)::SPR_8VTs"}, + {"_ZN4llvm12_GLOBAL__N_1L7rGPRVTsE", "llvm::(anonymous namespace)::rGPRVTs"}, + {"_ZN4llvm12_GLOBAL__N_1L7tGPRVTsE", "llvm::(anonymous namespace)::tGPRVTs"}, + {"_ZN4llvm12_GLOBAL__N_1L8tcGPRVTsE", "llvm::(anonymous namespace)::tcGPRVTs"}, + {"_ZL21AdjustJumpTableBlocks", "AdjustJumpTableBlocks"}, + {"_ZL18DisableARMFastISel", "DisableARMFastISel"}, + {"_ZL16DisableShifterOp", "DisableShifterOp"}, + {"_ZL15CheckVMLxHazard", "CheckVMLxHazard"}, + {"_ZL18EnableARMTailCalls", "EnableARMTailCalls"}, + {"_ZL15ARMInterworking", "ARMInterworking"}, + {"_ZL19JITCompilerFunction", "JITCompilerFunction"}, + {"_ZL9ReserveR9", "ReserveR9"}, + {"_ZL13DarwinUseMOVT", "DarwinUseMOVT"}, + {"_ZL11StrictAlign", "StrictAlign"}, + {"_ZL9ExpandMLx", "ExpandMLx"}, + {"_ZL11ForceExapnd", "ForceExapnd"}, + {"_ZL11ExpandLimit", "ExpandLimit"}, + {"_ZL10OldT2IfCvt", "OldT2IfCvt"}, + {"_ZL11ReduceLimit", "ReduceLimit"}, + {"_ZL16ReduceLimit2Addr", "ReduceLimit2Addr"}, + {"_ZL15ReduceLimitLdSt", "ReduceLimitLdSt"}, + {"_ZN12_GLOBAL__N_1L10CombinerAAE", "(anonymous namespace)::CombinerAA"}, + {"_ZN12_GLOBAL__N_1L16CombinerGlobalAAE", "(anonymous namespace)::CombinerGlobalAA"}, + {"_ZL21EnableExpensiveChecks", "EnableExpensiveChecks"}, + {"_ZL18tdListDAGScheduler", "tdListDAGScheduler"}, + {"_ZL20burrListDAGScheduler", "burrListDAGScheduler"}, + {"_ZL20tdrListrDAGScheduler", "tdrListrDAGScheduler"}, + {"_ZL22sourceListDAGScheduler", "sourceListDAGScheduler"}, + {"_ZL22hybridListDAGScheduler", "hybridListDAGScheduler"}, + {"_ZL19ILPListDAGScheduler", "ILPListDAGScheduler"}, + {"_ZL18DisableSchedCycles", "DisableSchedCycles"}, + {"_ZL4EVTs", "EVTs"}, + {"_ZL13SimpleVTArray", "SimpleVTArray"}, + {"_ZL7VTMutex", "VTMutex"}, + {"_ZL16LimitFPPrecision", "LimitFPPrecision"}, + {"_ZL19LimitFloatPrecision", "LimitFloatPrecision"}, + {"_ZL17MaxParallelChains", "MaxParallelChains"}, + {"_ZL21EnableFastISelVerbose", "EnableFastISelVerbose"}, + {"_ZL19EnableFastISelAbort", "EnableFastISelAbort"}, + {"_ZL11ISHeuristic", "ISHeuristic"}, + {"_ZL23defaultListDAGScheduler", "defaultListDAGScheduler"}, + {"_ZL13PrintDbgScope", "PrintDbgScope"}, + {"_ZL24DisableDebugInfoPrinting", "DisableDebugInfoPrinting"}, + {"_ZL16UnknownLocations", "UnknownLocations"}, + {"_ZL8DebugDiv", "DebugDiv"}, + {"_ZL8DebugMod", "DebugMod"}, + {"_ZL19FlagEnableTailMerge", "FlagEnableTailMerge"}, + {"_ZL18TailMergeThreshold", "TailMergeThreshold"}, + {"_ZL13TailMergeSize", "TailMergeSize"}, + {"_ZL15ViewEdgeBundles", "ViewEdgeBundles"}, + {"_ZL12IfCvtFnStart", "IfCvtFnStart"}, + {"_ZL11IfCvtFnStop", "IfCvtFnStop"}, + {"_ZL10IfCvtLimit", "IfCvtLimit"}, + {"_ZL13DisableSimple", "DisableSimple"}, + {"_ZL14DisableSimpleF", "DisableSimpleF"}, + {"_ZL15DisableTriangle", "DisableTriangle"}, + {"_ZL16DisableTriangleR", "DisableTriangleR"}, + {"_ZL16DisableTriangleF", "DisableTriangleF"}, + {"_ZL17DisableTriangleFR", "DisableTriangleFR"}, + {"_ZL14DisableDiamond", "DisableDiamond"}, + {"_ZL15IfCvtBranchFold", "IfCvtBranchFold"}, + {"_ZL12VerifySpills", "VerifySpills"}, + {"_ZL13DisablePostRA", "DisablePostRA"}, + {"_ZL17DisableBranchFold", "DisableBranchFold"}, + {"_ZL20DisableTailDuplicate", "DisableTailDuplicate"}, + {"_ZL19DisableEarlyTailDup", "DisableEarlyTailDup"}, + {"_ZL16DisableCodePlace", "DisableCodePlace"}, + {"_ZL10DisableSSC", "DisableSSC"}, + {"_ZL18DisableMachineLICM", "DisableMachineLICM"}, + {"_ZL24DisablePostRAMachineLICM", "DisablePostRAMachineLICM"}, + {"_ZL18DisableMachineSink", "DisableMachineSink"}, + {"_ZL10DisableLSR", "DisableLSR"}, + {"_ZL10DisableCGP", "DisableCGP"}, + {"_ZL8PrintLSR", "PrintLSR"}, + {"_ZL14PrintISelInput", "PrintISelInput"}, + {"_ZL11PrintGCInfo", "PrintGCInfo"}, + {"_ZL14ShowMCEncoding", "ShowMCEncoding"}, + {"_ZL10ShowMCInst", "ShowMCInst"}, + {"_ZL15EnableMCLogging", "EnableMCLogging"}, + {"_ZL17VerifyMachineCode", "VerifyMachineCode"}, + {"_ZL10AsmVerbose", "AsmVerbose"}, + {"_ZL20EnableFastISelOption", "EnableFastISelOption"}, + {"_ZL17EnableSplitGEPGVN", "EnableSplitGEPGVN"}, + {"_ZL9EnableLDV", "EnableLDV"}, + {"_ZL12DisableReMat", "DisableReMat"}, + {"_ZL10SplitEdges", "SplitEdges"}, + {"_ZL15defaultRegAlloc", "defaultRegAlloc"}, + {"_ZL8RegAlloc", "RegAlloc"}, + {"_ZL10Aggressive", "Aggressive"}, + {"_ZL15DisablePeephole", "DisablePeephole"}, + {"_ZL21EnablePostRAScheduler", "EnablePostRAScheduler"}, + {"_ZL21EnableAntiDepBreaking", "EnableAntiDepBreaking"}, + {"_ZL8DebugDiv", "DebugDiv"}, + {"_ZL8DebugMod", "DebugMod"}, + {"_ZL13PreSplitLimit", "PreSplitLimit"}, + {"_ZL14DeadSplitLimit", "DeadSplitLimit"}, + {"_ZL16RestoreFoldLimit", "RestoreFoldLimit"}, + {"_ZN12_GLOBAL__N_1L10PSVGlobalsE", "(anonymous namespace)::PSVGlobals"}, + {"_ZL12fastRegAlloc", "fastRegAlloc"}, + {"_ZL12NewHeuristic", "NewHeuristic"}, + {"_ZL17PreSplitIntervals", "PreSplitIntervals"}, + {"_ZL16TrivCoalesceEnds", "TrivCoalesceEnds"}, + {"_ZL18linearscanRegAlloc", "linearscanRegAlloc"}, + {"_ZN12_GLOBAL__N_1L19NumRecentlyUsedRegsE", "(anonymous namespace)::NumRecentlyUsedRegs"}, + {"_ZL14ShrinkWrapping", "ShrinkWrapping"}, + {"_ZL14ShrinkWrapFunc", "ShrinkWrapFunc"}, + {"_ZL19ShrinkWrapDebugging", "ShrinkWrapDebugging"}, + {"_ZL13EnableJoining", "EnableJoining"}, + {"_ZL21DisableCrossClassJoin", "DisableCrossClassJoin"}, + {"_ZL19DisablePhysicalJoin", "DisablePhysicalJoin"}, + {"_ZL16VerifyCoalescing", "VerifyCoalescing"}, + {"_ZL10spillerOpt", "spillerOpt"}, + {"_ZL13SSPBufferSize", "SSPBufferSize"}, + {"_ZL14DisableSharing", "DisableSharing"}, + {"_ZL16ColorWithRegsOpt", "ColorWithRegsOpt"}, + {"_ZL8DCELimit", "DCELimit"}, + {"_ZL17TailDuplicateSize", "TailDuplicateSize"}, + {"_ZL13TailDupVerify", "TailDupVerify"}, + {"_ZL12TailDupLimit", "TailDupLimit"}, + {"_ZL23DisableHazardRecognizer", "DisableHazardRecognizer"}, + {"_ZL11RewriterOpt", "RewriterOpt"}, + {"_ZL14ScheduleSpills", "ScheduleSpills"}, + {"_ZL17CriticalEdgeSplit", "CriticalEdgeSplit"}, + {"_ZL9EnablePRE", "EnablePRE"}, + {"_ZL13EnableLoadPRE", "EnableLoadPRE"}, + {"_ZL9Threshold", "Threshold"}, + {"_ZL16DisablePromotion", "DisablePromotion"}, + {"_ZL15UnrollThreshold", "UnrollThreshold"}, + {"_ZL11UnrollCount", "UnrollCount"}, + {"_ZL18UnrollAllowPartial", "UnrollAllowPartial"}, + {"_ZL9Threshold", "Threshold"}, + {"_ZL18ExpensiveEHSupport", "ExpensiveEHSupport"}, + {"_ZL6DupRet", "DupRet"}, + {"_ZL13MaxIterations", "MaxIterations"}, + {"_ZL14VerifyLoopInfo", "VerifyLoopInfo"}, + {"_ZL15VerifyLoopInfoX", "VerifyLoopInfoX"}, + {"_ZL23MaxBruteForceIterations", "MaxBruteForceIterations"}, + {"_ZL10EnableTBAA", "EnableTBAA"}, + {"_ZL9PrintCode", "PrintCode"}, + {"_ZL13DisableFPElim", "DisableFPElim"}, + {"_ZL20DisableFPElimNonLeaf", "DisableFPElimNonLeaf"}, + {"_ZL22DisableExcessPrecision", "DisableExcessPrecision"}, + {"_ZL11EnableFPMAD", "EnableFPMAD"}, + {"_ZL18EnableUnsafeFPMath", "EnableUnsafeFPMath"}, + {"_ZL18EnableNoInfsFPMath", "EnableNoInfsFPMath"}, + {"_ZL18EnableNoNaNsFPMath", "EnableNoNaNsFPMath"}, + {"_ZL38EnableHonorSignDependentRoundingFPMath", "EnableHonorSignDependentRoundingFPMath"}, + {"_ZL22GenerateSoftFloatCalls", "GenerateSoftFloatCalls"}, + {"_ZL16FloatABIForCalls", "FloatABIForCalls"}, + {"_ZL19DontPlaceZerosInBSS", "DontPlaceZerosInBSS"}, + {"_ZL26EnableJITExceptionHandling", "EnableJITExceptionHandling"}, + {"_ZL16EmitJitDebugInfo", "EmitJitDebugInfo"}, + {"_ZL22EmitJitDebugInfoToDisk", "EmitJitDebugInfoToDisk"}, + {"_ZL18EnableUnwindTables", "EnableUnwindTables"}, + {"_ZL18DefRelocationModel", "DefRelocationModel"}, + {"_ZL12DefCodeModel", "DefCodeModel"}, + {"_ZL27EnableGuaranteedTailCallOpt", "EnableGuaranteedTailCallOpt"}, + {"_ZL22OverrideStackAlignment", "OverrideStackAlignment"}, + {"_ZL18EnableRealignStack", "EnableRealignStack"}, + {"_ZL19DisableSwitchTables", "DisableSwitchTables"}, + {"_ZL19EnableStrongPHIElim", "EnableStrongPHIElim"}, + {"_ZL12DataSections", "DataSections"}, + {"_ZL16FunctionSections", "FunctionSections"}, + {"_ZL15AttributesLists", "AttributesLists"}, + {"_ZN4llvmL7ALMutexE", "llvm::ALMutex"}, + {"_ZL13VerifyDomInfo", "VerifyDomInfo"}, + {"_ZL14VerifyDomInfoX", "VerifyDomInfoX"}, + {"_ZL6GCLock", "GCLock"}, + {"_ZL7GCNames", "GCNames"}, + {"_ZL10GCNamePool", "GCNamePool"}, + {"_ZL13GlobalContext", "GlobalContext"}, + {"_ZN4llvmL13PassDebuggingE", "llvm::PassDebugging"}, + {"_ZN4llvmL11PrintBeforeE", "llvm::PrintBefore"}, + {"_ZN4llvmL10PrintAfterE", "llvm::PrintAfter"}, + {"_ZN4llvmL14PrintBeforeAllE", "llvm::PrintBeforeAll"}, + {"_ZN4llvmL13PrintAfterAllE", "llvm::PrintAfterAll"}, + {"_ZN12_GLOBAL__N_1L15TimingInfoMutexE", "(anonymous namespace)::TimingInfoMutex"}, + {"_ZL12EnableTiming", "EnableTiming"}, + {"_ZL11TheTimeInfo", "TheTimeInfo"}, + {"_ZL15PassRegistryObj", "PassRegistryObj"}, + {"_ZL4Lock", "Lock"}, + {"_ZL8MoreHelp", "MoreHelp"}, + {"_ZL20RegisteredOptionList", "RegisteredOptionList"}, + {"_ZL15ProgramOverview", "ProgramOverview"}, + {"_ZL13NormalPrinter", "NormalPrinter"}, + {"_ZL13HiddenPrinter", "HiddenPrinter"}, + {"_ZL3HOp", "HOp"}, + {"_ZL4HHOp", "HHOp"}, + {"_ZL6VersOp", "VersOp"}, + {"_ZL22VersionPrinterInstance", "VersionPrinterInstance"}, + {"_ZL22OverrideVersionPrinter", "OverrideVersionPrinter"}, + {"_ZN12_GLOBAL__N_1L14CurrentContextE", "(anonymous namespace)::CurrentContext"}, + {"_ZL25gCrashRecoveryContexMutex", "gCrashRecoveryContexMutex"}, + {"_ZL11PrevActions", "PrevActions"}, + {"_ZL5Dummy", "Dummy"}, + {"_ZL15ExplicitSymbols", "ExplicitSymbols"}, + {"_ZL13OpenedHandles", "OpenedHandles"}, + {"_ZL12ErrorHandler", "ErrorHandler"}, + {"_ZL20ErrorHandlerUserData", "ErrorHandlerUserData"}, + {"_ZL10StaticList", "StaticList"}, + {"_ZN12_GLOBAL__N_1L7successE", "(anonymous namespace)::success"}, + {"_ZN12_GLOBAL__N_1L10separatorsE", "(anonymous namespace)::separators"}, + {"_ZN12_GLOBAL__N_1L7successE", "(anonymous namespace)::success"}, + {"_ZL20PrettyStackTraceHead", "PrettyStackTraceHead"}, + {"_ZL12SignalsMutex", "SignalsMutex"}, + {"_ZL13FilesToRemove", "FilesToRemove"}, + {"_ZL14CallBacksToRun", "CallBacksToRun"}, + {"_ZL17InterruptFunction", "InterruptFunction"}, + {"_ZL20NumRegisteredSignals", "NumRegisteredSignals"}, + {"_ZL20RegisteredSignalInfo", "RegisteredSignalInfo"}, + {"_ZL7Enabled", "Enabled"}, + {"_ZL8StatInfo", "StatInfo"}, + {"_ZL8StatLock", "StatLock"}, + {"_ZL11FirstTarget", "FirstTarget"}, + {"_ZL11global_lock", "global_lock"}, + {"_ZL28LibSupportInfoOutputFilename", "LibSupportInfoOutputFilename"}, + {"_ZL9TimerLock", "TimerLock"}, + {"_ZN12_GLOBAL__N_1L10TrackSpaceE", "(anonymous namespace)::TrackSpace"}, + {"_ZN12_GLOBAL__N_1L18InfoOutputFilenameE", "(anonymous namespace)::InfoOutputFilename"}, + {"_ZL12ActiveTimers", "ActiveTimers"}, + {"_ZL11NamedTimers", "NamedTimers"}, + {"_ZL18NamedGroupedTimers", "NamedGroupedTimers"}, + {"_ZL14TimerGroupList", "TimerGroupList"}, + {"_ZL17DefaultTimerGroup", "DefaultTimerGroup"}, + {"_ZL16NotUnderValgrind", "NotUnderValgrind"}, + + // {"_ZN8Blizzard6Memory12voidp_returncvPT_IcEEv", + // "Blizzard::Memory::voidp_return::operator char*()"}, + // got error + + {"_Z2f0PU3AS1c", "f0(char AS1*)"}, + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXleT_Li4EEvE4typeE", + // "void Casts::implicit<4u>(enable_if<4u <= 4, void>::type*)"}, + // "void Casts::implicit<4>(enable_if<4<=4, void>::type*)" was returned + + + // {"_ZN5Casts6cstyleILj4EEEvPN9enable_ifIXleT_cvjLi4EEvE4typeE", + // "void Casts::cstyle<4u>(enable_if<4u <= (unsigned int)(4), void>::type*)"}, + // got error + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXaaT_Li4EEvE4typeE", + // "void Casts::implicit<4u>(enable_if<4u && 4, void>::type*)"}, + // "void Casts::implicit<4>(enable_if<4&&4, void>::type*)" was returned + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXaNT_Li4EEvE4typeE", + // "void Casts::implicit<4u>(enable_if<4u &= 4, void>::type*)"}, + // "void Casts::implicit<4>(enable_if<4&=4, void>::type*)" was returned + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXaST_Li4EEvE4typeE", + // "void Casts::implicit<4u>(enable_if<4u = 4, void>::type*)"}, + // "void Casts::implicit<4>(enable_if<4=4, void>::type*)" was returned + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXstT_EvE4typeE", + // "void Casts::implicit<4u>(enable_if::type*)"}, + // "void Casts::implicit<4>(enable_if<4, void>::type*)" was returned + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXszT_EvE4typeE", + // "void Casts::implicit<4u>(enable_if::type*)"}, + // got error + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXatT_EvE4typeE", + // "void Casts::implicit<4u>(enable_if::type*)"}, + // got error + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXazT_EvE4typeE", + // "void Casts::implicit<4u>(enable_if::type*)"}, + // got error + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXcmT_Li4EEvE4typeE", + // "void Casts::implicit<4u>(enable_if<(4u, 4), void>::type*)"}, + // "void Casts::implicit<4>(enable_if<4,4, void>::type*)" was returned + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXplLi1EcmT_Li4EEvE4typeE", + // "void Casts::implicit<4u>(enable_if<1 + (4u, 4), void>::type*)"}, + // "void Casts::implicit<4>(enable_if<1+4,4, void>::type*)" was returned + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXcoT_EvE4typeE", + // "void Casts::implicit<4u>(enable_if<~4u, void>::type*)"}, + // got error + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXdeT_EvE4typeE", + // "void Casts::implicit<4u>(enable_if<*4u, void>::type*)"}, + // "void Casts::implicit<4>(enable_if<4*, void>::type*)" was returned + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXdvT_Li4EEvE4typeE", + // "void Casts::implicit<4u>(enable_if<4u / 4, void>::type*)"}, + // "void Casts::implicit<4>(enable_if<4/4, void>::type*)" was returned + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXdVT_Li4EEvE4typeE", + // "void Casts::implicit<4u>(enable_if<4u /= 4, void>::type*)"}, + // "void Casts::implicit<4>(enable_if<4/=4, void>::type*)" was returned + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXeoT_Li4EEvE4typeE", + // "void Casts::implicit<4u>(enable_if<4u ^ 4, void>::type*)"}, + // "void Casts::implicit<4>(enable_if<4^4, void>::type*)" was returned + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXeOT_Li4EEvE4typeE", + // "void Casts::implicit<4u>(enable_if<4u ^= 4, void>::type*)"}, + // "void Casts::implicit<4>(enable_if<4^=4, void>::type*)" was returned + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXeqT_Li4EEvE4typeE", + // "void Casts::implicit<4u>(enable_if<4u == 4, void>::type*)"}, + // "void Casts::implicit<4>(enable_if<4==4, void>::type*)" was returned + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXgeT_Li4EEvE4typeE", + // "void Casts::implicit<4u>(enable_if<4u >= 4, void>::type*)"}, + // "void Casts::implicit<4>(enable_if<4>=4, void>::type*)" was returned + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXgtT_Li4EEvE4typeE", + // "void Casts::implicit<4u>(enable_if<(4u > 4), void>::type*)"}, + // "void Casts::implicit<4>(enable_if<4>4, void>::type*)" was returned + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXngorLi0EgtT_Li4EEvE4typeE", + // "void Casts::implicit<4u>(enable_if<-(0 | 4u > 4), void>::type*)"}, + // "void Casts::implicit<4>(enable_if<0|4>4-, void>::type*)" was returned + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXlsT_Li4EEvE4typeE", + // "void Casts::implicit<4u>(enable_if<4u << 4, void>::type*)"}, + // "void Casts::implicit<4>(enable_if<4<<4, void>::type*)" was returned + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXlST_Li4EEvE4typeE", + // "void Casts::implicit<4u>(enable_if<4u <<= 4, void>::type*)"}, + // "void Casts::implicit<4>(enable_if<4<<=4, void>::type*)" was returned + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXltT_Li4EEvE4typeE", + // "void Casts::implicit<4u>(enable_if<4u < 4, void>::type*)"}, + // "void Casts::implicit<4>(enable_if<4<4, void>::type*)" was returned + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXmiT_Li4EEvE4typeE", + // "void Casts::implicit<4u>(enable_if<4u - 4, void>::type*)"}, + // "void Casts::implicit<4>(enable_if<4-4, void>::type*)" was returned + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXmIT_Li4EEvE4typeE", + // "void Casts::implicit<4u>(enable_if<4u -= 4, void>::type*)"}, + // "void Casts::implicit<4>(enable_if<4-=4, void>::type*)" was returned + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXmlT_Li4EEvE4typeE", + // "void Casts::implicit<4u>(enable_if<4u * 4, void>::type*)"}, + // "void Casts::implicit<4>(enable_if<4*4, void>::type*)" was returned + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXmLT_Li4EEvE4typeE", + // "void Casts::implicit<4u>(enable_if<4u *= 4, void>::type*)"}, + // "void Casts::implicit<4>(enable_if<4*=4, void>::type*)" was returned + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXmmT_EvE4typeE", + // "void Casts::implicit<4u>(enable_if<4u--, void>::type*)"}, + // got error + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXneT_Li4EEvE4typeE", + // "void Casts::implicit<4u>(enable_if<4u != 4, void>::type*)"}, + // "void Casts::implicit<4>(enable_if<4!=4, void>::type*)" was returned + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXngT_EvE4typeE", + // "void Casts::implicit<4u>(enable_if<-4u, void>::type*)"}, + // "void Casts::implicit<4>(enable_if<4-, void>::type*)" was returned + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXntT_EvE4typeE", + // "void Casts::implicit<4u>(enable_if::type*)"}, + // got error + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXooT_Li4EEvE4typeE", + // "void Casts::implicit<4u>(enable_if<4u || 4, void>::type*)"}, + // "void Casts::implicit<4>(enable_if<4||4, void>::type*)" was returned + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXorT_Li4EEvE4typeE", + // "void Casts::implicit<4u>(enable_if<4u | 4, void>::type*)"}, + // "void Casts::implicit<4>(enable_if<4|4, void>::type*)" was returned + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXoRT_Li4EEvE4typeE", + // "void Casts::implicit<4u>(enable_if<4u |= 4, void>::type*)"}, + // "void Casts::implicit<4>(enable_if<4|=4, void>::type*)" was returned + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXpmT_Li4EEvE4typeE", + // "void Casts::implicit<4u>(enable_if<4u->*4, void>::type*)"}, + // "void Casts::implicit<4>(enable_if<4->*4, void>::type*)" was returned + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXplT_Li4EEvE4typeE", + // "void Casts::implicit<4u>(enable_if<4u + 4, void>::type*)"}, + // "void Casts::implicit<4>(enable_if<4+4, void>::type*)" was returned + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXpLT_Li4EEvE4typeE", + // "void Casts::implicit<4u>(enable_if<4u += 4, void>::type*)"}, + // "void Casts::implicit<4>(enable_if<4+=4, void>::type*)" was returned + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXppT_EvE4typeE", + // "void Casts::implicit<4u>(enable_if<4u++, void>::type*)"}, + // got error + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXpsT_EvE4typeE", + // "void Casts::implicit<4u>(enable_if<+4u, void>::type*)"}, + // "void Casts::implicit<4>(enable_if<4+, void>::type*)" was returned + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXptT_Li4EEvE4typeE", + // "void Casts::implicit<4u>(enable_if<4u->4, void>::type*)"}, + // "void Casts::implicit<4>(enable_if<4->4, void>::type*)" was returned + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXquT_Li4ELi5EEvE4typeE", + // "void Casts::implicit<4u>(enable_if<4u ? 4 : 5, void>::type*)"}, + // "void Casts::implicit<4>(enable_if<4?4:5, void>::type*)" was returned + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXrmT_Li4EEvE4typeE", + // "void Casts::implicit<4u>(enable_if<4u % 4, void>::type*)"}, + // "void Casts::implicit<4>(enable_if<4%4, void>::type*)" was returned + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXrMT_Li4EEvE4typeE", + // "void Casts::implicit<4u>(enable_if<4u %= 4, void>::type*)"}, + // "void Casts::implicit<4>(enable_if<4%=4, void>::type*)" was returned + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXrsT_Li4EEvE4typeE", + // "void Casts::implicit<4u>(enable_if<(4u >> 4), void>::type*)"}, + // "void Casts::implicit<4>(enable_if<4>>4, void>::type*)" was returned + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXrST_Li4EEvE4typeE", + // "void Casts::implicit<4u>(enable_if<4u >>= 4, void>::type*)"}, + // "void Casts::implicit<4>(enable_if<4>>=4, void>::type*)" was returned + + {"_Z1fPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP1XS13_S12_S11_S10_SZ_SY_SX_SW_SV_SU_ST_SS_SR_SQ_SP_SO_SN_SM_SL_SK_SJ_SI_SH_SG_SF_SE_SD_SC_SB_SA_S9_S8_S7_S6_S5_S4_S3_S2_S1_S0_S_", "f(X****************************************, X****************************************, X***************************************, X**************************************, X*************************************, X************************************, X***********************************, X**********************************, X*********************************, X********************************, X*******************************, X******************************, X*****************************, X****************************, X***************************, X**************************, X*************************, X************************, X***********************, X**********************, X*********************, X********************, X*******************, X******************, X*****************, X****************, X***************, X**************, X*************, X************, X***********, X**********, X*********, X********, X*******, X******, X*****, X****, X***, X**, X*, X)"}, + {"_ZZN1J1KEvENK1C1FEv", "J::K()::C::F() const"}, + + // {"_ZZNVK1J1KEvENK1C1FEv", + // "J::K() const volatile::C::F() const"}, + // "J::K()::C::F() volatile const" was returned + + {"_Z1fM1AKFvvE", "f(void (A::*)() const)"}, + {"_ZNR1X1fEv", "X::f() &"}, + {"_ZNKO1X1hEv", "X::h() const &&"}, + + // {"_ZN5test12f0ENS_1TILZNS_1xEEEE", + // "test1::f0(test1::T)"}, + // got error + + + // {"_ZN5test12f1ENS_2t1ILZNS_2f0EfEEE", + // "test1::f1(test1::t1)"}, + // got error + + + // {"_ZN5test22f1ENS_2t1IXadL_ZNS_2f0EfEEEE", + // "test2::f1(test2::t1<&test2::f0(float)>)"}, + // got error + + + // {"_ZN5test32f1ENS_2t1ILZ8test3_f0EEE", + // "test3::f1(test3::t1)"}, + // got error + + + // {"_ZN5test42f1ENS_2t1IXadL_Z8test4_f0EEEE", + // "test4::f1(test4::t1<&test4_f0>)"}, + // "test4::f1(test4::t1)" was returned + + + // {"_ZN5test52f1ENS_2t1ILZ8test5_f0EEE", + // "test5::f1(test5::t1)"}, + // got error + + + // {"_ZN5test52f2ENS_2t2ILZ4mainEEE", + // "test5::f2(test5::t2
)"}, + // got error + + + // {"_ZN5test52f2ENS_2t2ILZ4mainEEE", + // "test5::f2(test5::t2
)"}, + // got error + + + // {"_ZN5test62f0ENS_1TIXadL_ZNS_1A3im0EfEEEE", + // "test6::f0(test6::T<&test6::A::im0(float)>)"}, + // got error + + + // {"_ZN5test71XIiEC1IdEEPT_PNS_5int_cIXplL_ZNS_4metaIiE5valueEEsrNS6_IS3_EE5valueEE4typeE", + // "test7::X::X(double*, test7::int_c::value + test7::meta::value>::type*)"}, + // "int* test7::X::X(test7::int_c::value+test7::metavalue>::type*)" was returned + + + // {"_ZN5test81fIiEEvNS_5int_cIXsrNS_4metaIT_E4typeE5valueEEE", + // "void test8::f(test8::int_c::type::value>)"}, + // "void test8::f(test8::int_c::typevalue>)" was returned + + {"_ZN5test91fIiNS_1XEEENS_9supermetaIT_E5applyIT0_E4typeEv", "test9::supermeta::apply::type test9::f()"}, + {"_ZN6test101fIidEENS_1XIT_E10definitionIT0_EES2_S5_", "test10::X::definition test10::f(int, double)"}, + {"_ZZ2f5vE1a", "f5()::a"}, + {"_ZZ2f6vE1b", "f6()::b"}, + {"_ZNV3$_35test9Ev", "$_3::test9() volatile"}, + {"_ZN5Test8I3$_2EC1ES0_", "Test8<$_2>::Test8($_2)"}, + + // {"_Z3fooIZN3BarC1EvE3$_0EvT_", + // "void foo(Bar::Bar()::$_0)"}, + // "void foo(Bar::foo()::$_0)" was returned + + {"_ZGVZN1N1gEvE1a", "guard variable for N::g()::a"}, + + // {"_ZplRK1YRA100_P1X", + // "operator+(Y const&, X* (&) [100])"}, + // "operator+(Y const&, X* [100]&)" was returned + + {"_Z1fno", "f(__int128, unsigned __int128)"}, + {"_Z1fM1SKFvvE", "f(void (S::*)() const)"}, + + // {"_Z3ft7IiEN11__enable_ifIXsr16__is_scalar_typeIT_EE7__valueEvE6__typeEv", + // "__enable_if<__is_scalar_type::__value, void>::__type ft7()"}, + // got error + + + // {"_Z3ft7IPvEN11__enable_ifIXsr16__is_scalar_typeIT_EE7__valueEvE6__typeEv", + // "__enable_if<__is_scalar_type::__value, void>::__type ft7()"}, + // got error + + + // {"_ZN6PR57968__fill_aIiEENS_11__enable_ifIXntsrNS_11__is_scalarIT_EE7__valueEvE6__typeEv", + // "PR5796::__enable_if::__value, void>::__type PR5796::__fill_a()"}, + // got error + + + // {"_ZN11Expressions2f1ILi1EEEvPAplngT_Li2E_i", + // "void Expressions::f1<1>(int (*) [-1 + 2])"}, + // "void Expressions::f1<1>(int [1-+2]*)" was returned + + + // {"_ZN11Expressions2f2ILi1EEEvPApsT__i", + // "void Expressions::f2<1>(int (*) [+1])"}, + // "void Expressions::f2<1>(int [1+]*)" was returned + + + // {"_ZN11Expressions2f3ILi1EEEvPAplT_T__i", + // "void Expressions::f3<1>(int (*) [1 + 1])"}, + // "void Expressions::f3<1>(int [1+1]*)" was returned + + + // {"_ZN11Expressions2f4ILi1EEEvPAplplLi2ET_T__i", + // "void Expressions::f4<1>(int (*) [2 + 1 + 1])"}, + // "void Expressions::f4<1>(int [2+1+1]*)" was returned + + + // {"_ZN11Expressions2f4ILi1EEEvPAplLi2EplT_T__i", + // "void Expressions::f4<1>(int (*) [2 + (1 + 1)])"}, + // "void Expressions::f4<1>(int [2+1+1]*)" was returned + + {"_ZN3OpsplERKS_", "Ops::operator+(Ops const&)"}, + {"_ZN6PR58615AllocIcNS_6PolicyINS_1PELb1EEEE8allocateEiPKv", "PR5861::Alloc>::allocate(int, void const*)"}, + + // {"_ZN5test01fIdEEvT_RAszcl3ovlcvS1__EE_c", + // "void test0::f(double, char (&) [sizeof (ovl((double)()))])"}, + // got error + + + // {"_ZN5test01fIiEEvT_RAszcl3ovlcvS1__EE_c", + // "void test0::f(int, char (&) [sizeof (ovl((int)()))])"}, + // got error + + + // {"_ZN5test01jINS_1AEEEvRAszdtcvT__E6buffer_c", + // "void test0::j(char (&) [sizeof (((test0::A)()).buffer)])"}, + // got error + + {"_ZN5test11fINS_1XEiEEvT_IT0_E", "void test1::f(test1::X)"}, + + // {"_ZN5test211read_memberINS_1AEEEDtptcvPT_Li0E6memberERS2_", + // "decltype(((test2::A*)(0))->member) test2::read_member(test2::A&)"}, + // got error + + + // {"_ZN5test37get_p_1INS_7DerivedEEEDtptcvPT_Li0EsrNS_5Path1E1pERS2_", + // "decltype(((test3::Derived*)(0))->test3::Path1::p) test3::get_p_1(test3::Derived&)"}, + // got error + + + // {"_ZN5test37get_p_1INS_7DerivedEEEDtptcvPT_Li0EsrNS_5Path2E1pERS2_", + // "decltype(((test3::Derived*)(0))->test3::Path2::p) test3::get_p_1(test3::Derived&)"}, + // got error + + + // {"_ZN5test41gEPNS_3zedIXadL_ZNS_3foo3barEEEEE", + // "test4::g(test4::zed<&test4::foo::bar>*)"}, + // "test4::g(test4::zed*)" was returned + + + // {"_ZN5test51gEPNS_3zedIXadL_ZNS_3foo3barEEEEE", + // "test5::g(test5::zed<&test5::foo::bar>*)"}, + // "test5::g(test5::zed*)" was returned + + + // {"_ZN5test71gEPNS_3zedIXadL_ZNS_3foo3barEvEEEE", + // "test7::g(test7::zed<&test7::foo::bar()>*)"}, + // got error + + {"_ZN5test91fIiNS_3barEEEvRKNT0_3baz1XE", "void test9::f(test9::bar::baz::X const&)"}, + + // {"_ZN6test101fILc3EEEvNS_1SIXquLb0ELc97ET_EEE", + // "void test10::f<(char)3>(test10::S)"}, + // got error + + {"_ZN6test111fEz", "test11::f(...)"}, + + // {"_ZN6test121fENS_1AILt33000EEE", + // "test12::f(test12::A<(unsigned short)33000>)"}, + // "test12::f(test12::A<33000>)" was returned + + + // {"_ZN6test151fILi7EEEvNS_1SIXplT_LNS_1EE3EEEE", + // "void test15::f<7>(test15::S<7 + (test15::E)3>)"}, + // got error + + + // {"_ZN6test174funcINS_1BEEENS_1AIXszclsrT_3fooEEEEv", + // "test17::A test17::func()"}, + // got error + + + // {"_ZN6test181fINS_1AEEEvNS_1SIXadsrT_plEEE", + // "void test18::f(test18::S<&test18::A::operator+>)"}, + // "void test18::f(test18::S)" was returned + + + // {"_ZN6test181fINS_1AEEEvNS_1SIXadsrT_anEEE", + // "void test18::f(test18::S<&test18::A::operator&>)"}, + // "void test18::f(test18::S)" was returned + + + // {"_ZN6test191gINS_1AEEEvNS_1SIXadsrT_1fIiEEEE", + // "void test19::g(test19::S<&test19::A::f>)"}, + // "void test19::g(test19::S&>)" was returned + + + // {"_ZN6test191gINS_1AEEEvNS_1SIXadsrT_plEEE", + // "void test19::g(test19::S<&test19::A::operator+>)"}, + // "void test19::g(test19::S)" was returned + + + // {"_ZN6test191gINS_1AEEEvNS_1SIXadsrT_cviEEE", + // "void test19::g(test19::S<&test19::A::operator int>)"}, + // "void test19::g(test19::S)" was returned + + + // {"_ZN6test191gINS_1AEEEvNS_1SIXadsrT_miIdEEEE", + // "void test19::g(test19::S<&test19::A::operator->)"}, + // "void test19::g(test19::S&>)" was returned + + + // {"_ZN6test205test0IiEEvDTcl1fIPT_ELi0EEE", + // "void test20::test0(decltype(f(0)))"}, + // got error + + + // {"_ZN6test2112vla_arg_funcEiPA_i", + // "test21::vla_arg_func(int, int (*) [])"}, + // "test21::vla_arg_func(int, int []*)" was returned + + + // {"_ZN6test221fEDn", + // "test22::f(std::nullptr_t)"}, + // "test22::f(decltype(nullptr))" was returned + + + // {"_ZN6test231fERA10_KPv", + // "test23::f(void* const (&) [10])"}, + // "test23::f(void* const [10]&)" was returned + + + // {"_ZN6test231fERA10_A5_VKPv", + // "test23::f(void* const volatile (&) [10][5])"}, + // "test23::f(void* const volatile [5] [10]&)" was returned + + + // {"_Z4testIcLj5ELj10ELj15EEvRAT0__AT1__AT2__T_", + // "void test(char (&) [5u][10u][15u])"}, + // "void test(char [15] [10] [5]&)" was returned + + + // {"_ZN6test205test1IiEEvDTcl1fIEcvT__EEE", + // "void test20::test1(decltype(f<>((int)())))"}, + // got error + + + // {"_Z2f0IJEEv1XIXsZT_EJDpRT_EE", + // "void f0<>(X)"}, + // got error + + + // {"_Z2f0IJifdEEv1XIXsZT_EJDpRT_EE", + // "void f0(X)"}, + // got error + + + // {"_Z2f1IJEEvv", + // "void f1<>()"}, + // got error + + + // {"_Z2f1IJiEEvv", + // "void f1()"}, + // got error + + + // {"_Z2f1IJifEEvv", + // "void f1()"}, + // got error + + + // {"_Z2f2IJEEvDpT_", + // "void f2<>()"}, + // got error + + + // {"_Z2f2IJiEEvDpT_", + // "void f2(int)"}, + // got error + + + // {"_Z2f2IJifEEvDpT_", + // "void f2(int, float)"}, + // got error + + + // {"_Z2f3IJEEvDpPKT_", + // "void f3<>()"}, + // got error + + + // {"_Z2f3IJiEEvDpPKT_", + // "void f3(int const*)"}, + // got error + + + // {"_Z2f3IJifEEvDpPKT_", + // "void f3(int const*, float const*)"}, + // got error + + + // {"_Z10float16addDF16_DF16_", + // "float16add(_Float16, _Float16)"}, + // got error + + + // {"_Z2f4IJifdEE5tupleIJDpT_EEv", + // "tuple f4()"}, + // got error + + + // {"_Z2f5IiJifdEE8identityIFT_DpT0_EEv", + // "identity f5()"}, + // got error + + + // {"_Z2f6IJLi1ELi2ELi3EEE9int_tupleIJXspT_EEEv", + // "int_tuple<1, 2, 3> f6<1, 2, 3>()"}, + // got error + + + // {"_Z2f7IJ8identity13add_referenceEE14template_tupleIJDpT_EEv", + // "template_tuple f7()"}, + // got error + + + // {"_ZNK10__cxxabiv111__libcxxabi5__sub20first_demangled_nameEPc.eh", + // "__cxxabiv1::__libcxxabi::__sub::first_demangled_name(char*) const (.eh)"}, + // got error + + + // {"_ZSt13copy_backwardIN9__gnu_cxx17__normal_iteratorIPNS0_19_Hashtable_iteratorISt4pairIK16CSCppSymbolOwnerP20CSCppSymbolOwnerDataES4_27CSCppSymbolOwnerHashFunctorSt10_Select1stIS8_E29CSCppSymbolOwnerEqualsFunctorSaIS7_EEESt6vectorISE_SaISE_EEEESJ_ET0_T_SL_SK_", + // "__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_iterator, CSCppSymbolOwner, CSCppSymbolOwnerHashFunctor, std::_Select1st>, CSCppSymbolOwnerEqualsFunctor, std::allocator>*, std::vector<__gnu_cxx::_Hashtable_iterator, CSCppSymbolOwner, CSCppSymbolOwnerHashFunctor, std::_Select1st>, CSCppSymbolOwnerEqualsFunctor, std::allocator>, std::allocator<__gnu_cxx::_Hashtable_iterator, CSCppSymbolOwner, CSCppSymbolOwnerHashFunctor, std::_Select1st>, CSCppSymbolOwnerEqualsFunctor, std::allocator>>>> std::copy_backward<__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_iterator, CSCppSymbolOwner, CSCppSymbolOwnerHashFunctor, std::_Select1st>, CSCppSymbolOwnerEqualsFunctor, std::allocator>*, std::vector<__gnu_cxx::_Hashtable_iterator, CSCppSymbolOwner, CSCppSymbolOwnerHashFunctor, std::_Select1st>, CSCppSymbolOwnerEqualsFunctor, std::allocator>, std::allocator<__gnu_cxx::_Hashtable_iterator, CSCppSymbolOwner, CSCppSymbolOwnerHashFunctor, std::_Select1st>, CSCppSymbolOwnerEqualsFunctor, std::allocator>>>>, __gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_iterator, CSCppSymbolOwner, CSCppSymbolOwnerHashFunctor, std::_Select1st>, CSCppSymbolOwnerEqualsFunctor, std::allocator>*, std::vector<__gnu_cxx::_Hashtable_iterator, CSCppSymbolOwner, CSCppSymbolOwnerHashFunctor, std::_Select1st>, CSCppSymbolOwnerEqualsFunctor, std::allocator>, std::allocator<__gnu_cxx::_Hashtable_iterator, CSCppSymbolOwner, CSCppSymbolOwnerHashFunctor, std::_Select1st>, CSCppSymbolOwnerEqualsFunctor, std::allocator>>>>>(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_iterator, CSCppSymbolOwner, CSCppSymbolOwnerHashFunctor, std::_Select1st>, CSCppSymbolOwnerEqualsFunctor, std::allocator>*, std::vector<__gnu_cxx::_Hashtable_iterator, CSCppSymbolOwner, CSCppSymbolOwnerHashFunctor, std::_Select1st>, CSCppSymbolOwnerEqualsFunctor, std::allocator>, std::allocator<__gnu_cxx::_Hashtable_iterator, CSCppSymbolOwner, CSCppSymbolOwnerHashFunctor, std::_Select1st>, CSCppSymbolOwnerEqualsFunctor, std::allocator>>>>, __gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_iterator, CSCppSymbolOwner, CSCppSymbolOwnerHashFunctor, std::_Select1st>, CSCppSymbolOwnerEqualsFunctor, std::allocator>*, std::vector<__gnu_cxx::_Hashtable_iterator, CSCppSymbolOwner, CSCppSymbolOwnerHashFunctor, std::_Select1st>, CSCppSymbolOwnerEqualsFunctor, std::allocator>, std::allocator<__gnu_cxx::_Hashtable_iterator, CSCppSymbolOwner, CSCppSymbolOwnerHashFunctor, std::_Select1st>, CSCppSymbolOwnerEqualsFunctor, std::allocator>>>>, __gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_iterator, CSCppSymbolOwner, CSCppSymbolOwnerHashFunctor, std::_Select1st>, CSCppSymbolOwnerEqualsFunctor, std::allocator>*, std::vector<__gnu_cxx::_Hashtable_iterator, CSCppSymbolOwner, CSCppSymbolOwnerHashFunctor, std::_Select1st>, CSCppSymbolOwnerEqualsFunctor, std::allocator>, std::allocator<__gnu_cxx::_Hashtable_iterator, CSCppSymbolOwner, CSCppSymbolOwnerHashFunctor, std::_Select1st>, CSCppSymbolOwnerEqualsFunctor, std::allocator>>>>)"}, + // got error + + {"_ZTC14SSDatabaseImpl0_N8Security10CssmClient6DbImplE", "construction vtable for Security::CssmClient::DbImpl-in-SSDatabaseImpl"}, + + // {"_ZGRZN1N1gEvE1a", + // "reference temporary for N::g()::a"}, + // got error + + + // {"_ZN5boost4bindIvN10libtorrent15peer_connectionEiRKNS1_11disk_io_jobENS1_12peer_requestENS_10shared_ptrINS1_7torrentEEENS_13intrusive_ptrIS2_EENS_3argILi1EEENSC_ILi2EEES6_S9_EENS_3_bi6bind_tIT_NS_4_mfi3mf4ISH_T0_T1_T2_T3_T4_EENSF_9list_av_5IT5_T6_T7_T8_T9_E4typeEEEMSK_FSH_SL_SM_SN_SO_ESR_SS_ST_SU_SV_", + // "boost::_bi::bind_t>, boost::_bi::list_av_5, boost::arg<1>, boost::arg<2>, libtorrent::peer_request, boost::shared_ptr>::type> boost::bind, boost::intrusive_ptr, boost::arg<1>, boost::arg<2>, libtorrent::peer_request, boost::shared_ptr>(void (libtorrent::peer_connection::*)(int, libtorrent::disk_io_job const&, libtorrent::peer_request, boost::shared_ptr), boost::intrusive_ptr, boost::arg<1>, boost::arg<2>, libtorrent::peer_request, boost::shared_ptr)"}, + // got error + + + // {"_ZN7WebCore20createFileThreadTaskINS_15FileStreamProxyEN3WTF6StringERKS3_ddEENS2_10PassOwnPtrINS_10FileThread4TaskEEEPT_MSA_FvT1_T3_ERKT0_RKT2_", + // "WTF::PassOwnPtr WebCore::createFileThreadTask(WebCore::FileStreamProxy*, void (WebCore::FileStreamProxy::*)(WTF::String const&, double), WTF::String const&, double const&)"}, + // "WTF::PassOwnPtr WebCore::createFileThreadTask(WebCore::FileStreamProxy*, void (WebCore::FileStreamProxy*::*)(WTF::String const&, WebCore::FileThread::Task), WTF::String const&, double const&)" was returned + + + // {"_ZN3WTF15deleteAllValuesIPN7WebCore5XPath4Step8NodeTestEKNS_9HashTableIS5_S5_NS_17IdentityExtractorENS_7PtrHashIS5_EENS_10HashTraitsIS5_EESB_EEEEvRT0_", + // "void WTF::deleteAllValues, WTF::HashTraits, WTF::HashTraits> const>(WTF::HashTable, WTF::HashTraits, WTF::HashTraits> const&)"}, + // "void WTF::deleteAllValues, WTF::HashTraits, WTF::HashTraits> const>(WTF::IdentityExtractor&)" was returned + + + // {"_Z13JVTLib_103270ILi1EEvPsDv2_xS1_", + // "void JVTLib_103270<1>(short*, long long vector[2], long long vector[2])"}, + // "void JVTLib_103270<1>(short*, long long __vector(2), long long __vector(2))" was returned + + + // {"_ZN8platform20split_string_convertIcPFiRKSsEiSaIiESt6vectorEEjPKT_S9_S7_T0_RT3_IT1_T2_E", + // "unsigned int platform::split_string_convert, std::vector>(char const*, char const*, char, int (*)(std::string const&), std::vector>&)"}, + // got error + + {"_ZN2MF12_GLOBAL__N_114WeakCallHelperINS0_15DecodeQueueImplEEEvRKN5boost8functionIFvvEEERKNS3_8weak_ptrIT_EE", "void MF::(anonymous namespace)::WeakCallHelper(boost::function const&, boost::weak_ptr const&)"}, + + // {"_ZZN4NIds4NStr14TCStrAggregateINS0_13TCTCStrTraitsINS0_11TCStrTraitsIcNS0_17CDefaultStrParamsEEENS0_14TCStrImp_FixedIS5_Lx256EEEEEE21f_AddFromIteratorUTF8INS0_16CStrIteratorUTF8EEEvRxRKT_ENKSA_ISB_EUlmE0_clEm", + // "void NIds::NStr::TCStrAggregate, NIds::NStr::TCStrImp_Fixed, 256ll>>>::f_AddFromIteratorUTF8(long long&, NIds::NStr::CStrIteratorUTF8 const&)::NIds::NStr::TCStrAggregate, NIds::NStr::TCStrImp_Fixed, 256ll>>>::f_AddFromIteratorUTF8::\'lambda0\'(unsigned long)::operator()(unsigned long) const"}, + // got error + + + // {"_ZZN4NIds4NStr14TCStrAggregateINS0_13TCTCStrTraitsINS0_11TCStrTraitsIcNS0_17CDefaultStrParamsEEENS0_14TCStrImp_FixedIS5_Lx256EEEEEE21f_AddFromIteratorUTF8INS0_16CStrIteratorUTF8EEEvRxRKT_ENKSA_ISB_EUt0_clEm", + // "void NIds::NStr::TCStrAggregate, NIds::NStr::TCStrImp_Fixed, 256ll>>>::f_AddFromIteratorUTF8(long long&, NIds::NStr::CStrIteratorUTF8 const&)::NIds::NStr::TCStrAggregate, NIds::NStr::TCStrImp_Fixed, 256ll>>>::f_AddFromIteratorUTF8::\'unnamed0\'::operator()(unsigned long) const"}, + // got error + + + // {"_ZNK3com9markzware2js11cJSArgumentcvRKT_I8cMyClassEEv", + // "com::markzware::js::cJSArgument::operator cMyClass const&() const"}, + // got error + + + // {"_ZNKSt3__110__function6__funcIZN4DLCL8DLFutureIP15AnalysenManagerE3setINS_8functionIFS5_vEEEJEEEvT_DpOT0_EUlvE_NS_9allocatorISF_EEFvvEE7__cloneEv", + // "std::__1::__function::__func::set>(std::__1::function)::\'lambda\'(), std::__1::allocator::set>(std::__1::function)::\'lambda\'()>, void ()>::__clone() const"}, + // got error + + + // {"___ZN19URLConnectionClient33_clientInterface_cancelConnectionEP16dispatch_queue_sU13block_pointerFvvE_block_invoke14", + // "invocation function for block in URLConnectionClient::_clientInterface_cancelConnection(dispatch_queue_s*, void () block_pointer)"}, + // got error + + + // {"_Z1fIJicdEEPFvDpT_EPFvDpRPS0_ES8_S1_DpS4_S6_", + // "void (*f(void (*)(int*&, char*&, double*&), void (*)(int*&, char*&, double*&), int, char, double, int*, char*, double*, int*&, char*&, double*&))(int, char, double)"}, + // got error + + + // {"_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKSbIS2_St11char_traitsIS2_ESaIS2_EESA_", + // "__gnu_cxx::__enable_if<__is_char::__value, bool>::__type std::operator==(std::basic_string, std::allocator> const&, std::basic_string, std::allocator> const&)"}, + // got error + + + // {"_ZZ10+[Foo bar]E3Baz", + // "+[Foo bar]::Baz"}, + // got error + + + // {"_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairISsbESt6vectorIS2_SaIS2_EEEC5ERKS4_", + // "__gnu_cxx::__normal_iterator const*, std::vector, std::allocator>>>::__normal_iterator(std::pair const* const&)"}, + // got error + + + // {"_Z1fIiEDTeqfp_LDnEEPT_", + // "decltype(fp == nullptr) f(int*)"}, + // got error + + + // {"_Z1fIiEDTeqfp1_LDnEEicPT_", + // "decltype(fp1 == nullptr) f(int, char, int*)"}, + // got error + + + // {"_ZZN1S1fEiiEd0_NKUlvE_clEv", + // "S::f(int, int)::\'lambda\'()::operator()() const"}, + // got error + + + // {"_Z3fooPM2ABi", + // "foo(int AB::**)"}, + // "foo(int AB::*)" was returned + + + // {"_Z1rM1GFivEMS_KFivES_M1HFivES1_4whatIKS_E5what2IS8_ES3_", + // "r(int (G::*)(), int (G::*)() const, G, int (H::*)(), int (G::*)(), what, what2, int (G::*)() const)"}, + // got error + + + // {"_Z1fPU11objcproto1A11objc_object", + // "f(id)"}, + // "f(objc_object objcproto1A*)" was returned + + + // {"_Z1fPKU11objcproto1A7NSArray", + // "f(NSArray const*)"}, + // "f(NSArray objcproto1A const*)" was returned + + + // {"_ZNK1AIJ1Z1Y1XEEcv1BIJDpPT_EEIJS2_S1_S0_EEEv", + // "A::operator B() const"}, + // got error + + + // {"_ZNK3Ncr6Silver7Utility6detail12CallOnThreadIZ53-[DeploymentSetupController handleManualServerEntry:]E3$_5EclIJEEEDTclclL_ZNS2_4getTIS4_EERT_vEEspclsr3stdE7forwardIT_Efp_EEEDpOSA_", + // "decltype(-[DeploymentSetupController handleManualServerEntry:]::$_5& Ncr::Silver::Utility::detail::getT<-[DeploymentSetupController handleManualServerEntry:]::$_5>()()()) Ncr::Silver::Utility::detail::CallOnThread<-[DeploymentSetupController handleManualServerEntry:]::$_5>::operator()<>() const"}, + // got error + + + // {"_Zli2_xy", + // "operator\"\" _x(unsigned long long)"}, + // got error + + {"_Z1fIiEDcT_", "decltype(auto) f(int)"}, + {"_ZZ4testvEN1g3fooE5Point", "test()::g::foo(Point)"}, + + // {"_ZThn12_NSt9strstreamD0Ev", + // "non-virtual thunk to std::strstream::~strstream()"}, + // "virtual function non-virtual override offset : -12 std::strstream::~strstream()" was returned + + + // {"_ZTv0_n12_NSt9strstreamD0Ev", + // "virtual thunk to std::strstream::~strstream()"}, + // got error + + {"_ZTIU4_farrVKPi", "typeinfo for int* const volatile restrict _far"}, + {"i", "int"}, + {"PKFvRiE", "void (*)(int&) const"}, + {"PVFvRmOE", "void (*)(unsigned long&) volatile &&"}, + {"PFvRmOE", "void (*)(unsigned long&) &&"}, + + // {"_ZTW1x", + // "thread-local wrapper routine for x"}, + // "TLS wrapper function for x" was returned + + + // {"_ZTHN3fooE", + // "thread-local initialization routine for foo"}, + // "TLS init function for foo" was returned + + + // {"_Z1fB3foov", + // "f[abi:foo]()"}, + // got error + + + // {"_Z1fB3fooB3barv", + // "f[abi:foo][abi:bar]()"}, + // got error + + + // {"_ZN1SB5outer1fB5innerEv", + // "S[abi:outer]::f[abi:inner]()"}, + // got error + + + // {"_ZN1SC2B8ctor_tagEv", + // "S::S[abi:ctor_tag]()"}, + // got error + + + // {"_ZplB4MERP1SS_", + // "operator+[abi:MERP](S, S)"}, + // got error + + + // {"_Z1fIJifcEEvDp5unaryIT_E", + // "void f(unary, unary, unary)"}, + // got error + + + // {"_Z1fIJEJiEEvDpT_DpT0_", + // "void f(int)"}, + // got error + + + // {"_Z1fIJicEEvDp7MuncherIAstT__S1_E", + // "void f(Muncher, Muncher)"}, + // got error + + + // {"_ZN1SIJifcEE1fIJdjEEEiDp4MerpIJifcT_EE", + // "int S::f(Merp, Merp)"}, + // got error + + + // {"_Z1pIJicEEiDp4MerpIXsZT_EJT_EE", + // "int p(Merp, Merp)"}, + // got error + + + // {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXleT_Li4EEvE4typeE", + // "void Casts::implicit<4u>(enable_if<4u <= 4, void>::type*)"}, + // "void Casts::implicit<4>(enable_if<4<=4, void>::type*)" was returned + + + // {"_ZN5Casts6cstyleILj4EEEvPN9enable_ifIXleT_cvjLi4EEvE4typeE", + // "void Casts::cstyle<4u>(enable_if<4u <= (unsigned int)(4), void>::type*)"}, + // got error + + + // {"_ZN5Casts10functionalILj4EEEvPN9enable_ifIXleT_cvjLi4EEvE4typeE", + // "void Casts::functional<4u>(enable_if<4u <= (unsigned int)(4), void>::type*)"}, + // got error + + + // {"_ZN5Casts7static_ILj4EEEvPN9enable_ifIXleT_scjLi4EEvE4typeE", + // "void Casts::static_<4u>(enable_if<4u <= static_cast(4), void>::type*)"}, + // got error + + + // {"_ZN5Casts12reinterpret_ILj4EiEEvPN9enable_ifIXleT_szrcPT0_Li0EEvE4typeE", + // "void Casts::reinterpret_<4u, int>(enable_if<4u <= sizeof (reinterpret_cast(0)), void>::type*)"}, + // got error + + + // {"_ZN5Casts6const_IiXadL_ZNS_1iEEEEEvPN9enable_ifIXleLi0EszccPT_T0_EvE4typeE", + // "void Casts::const_(enable_if<0 <= sizeof (const_cast(&Casts::i)), void>::type*)"}, + // got error + + + // {"_ZN5Casts8dynamic_INS_1SEXadL_ZNS_1sEEEEEvPN9enable_ifIXleLi0EszdcPT_T0_EvE4typeE", + // "void Casts::dynamic_(enable_if<0 <= sizeof (dynamic_cast(&Casts::s)), void>::type*)"}, + // got error + + {"_ZN5Casts1fILi6EEENS_1TIXT_EEEv", "Casts::T<6> Casts::f<6>()"}, + + // {"_ZN5Casts5auto_IiEEvDTnw_DapicvT__EEE", + // "void Casts::auto_(decltype(new auto((int)())))"}, + // got error + + + // {"_ZN5Casts7scalar_IiEEvDTcmcvT__Ecvi_EE", + // "void Casts::scalar_(decltype((int)(), (int)()))"}, + // got error + + + // {"_ZN5test11aIsEEDTcl3foocvT__EEES1_", + // "decltype(foo((short)())) test1::a(short)"}, + // got error + + + // {"_ZN5test21aIPFfvEEEvT_DTclfL0p_EE", + // "void test2::a(float (*)(), decltype(fp()))"}, + // got error + + + // {"_ZN5test21bIPFfvEEEDTclfp_EET_", + // "decltype(fp()) test2::b(float (*)())"}, + // got error + + + // {"_ZN5test21cIPFfvEEEvT_PFvDTclfL1p_EEE", + // "void test2::c(float (*)(), void (*)(decltype(fp())))"}, + // got error + + + // {"_ZN5test21dIPFfvEEEvT_PFDTclfL0p_EEvE", + // "void test2::d(float (*)(), decltype(fp()) (*)())"}, + // got error + + + // {"_ZN5test21eIPFfvEEEvPFDTclfp_EET_E", + // "void test2::e(decltype(fp()) (*)(float (*)()))"}, + // got error + + + // {"_ZN5test21fIPFfvEEEvPFvT_DTclfL0p_EEE", + // "void test2::f(void (*)(float (*)(), decltype(fp())))"}, + // got error + + + // {"_ZN5test21gIPFfvEEEvT_DTclfL0p_EE", + // "void test2::g(float (*)(), decltype(fp()))"}, + // got error + + + // {"_ZN5test21hIPFfvEEEvT_DTcvPFDTclfL0p_EEvELi0EE", + // "void test2::h(float (*)(), decltype((decltype(fp()) (*)())(0)))"}, + // got error + + + // {"_ZN5test21iIPFfvEEEvDTcvPFDTclfp_EET_ELi0EE", + // "void test2::i(decltype((decltype(fp()) (*)(float (*)()))(0)))"}, + // got error + + + // {"_ZZN5test21gIPFfvEEEvT_DTclfL0p_EEE8variable", + // "void test2::g(float (*)(), decltype(fp()))::variable"}, + // got error + + + // {"_ZN5test31aINS_1XEMS1_PiEEvT_T0_DTdsfL0p_fL0p0_E", + // "void test3::a(test3::X, int* test3::X::*, decltype(fp.*fp0))"}, + // got error + + + // {"_ZN5test43tf1INS_1XEEEvDTnw_T_piLi1EEE", + // "void test4::tf1(decltype(new test4::X(1)))"}, + // got error + + + // {"_ZN5test51aIiEEvDTnxcvT__EE", + // "void test5::a(decltype(noexcept ((int)())))"}, + // got error + + + // {"_ZN5test62f1IiEEvDTcvT_dtdtL_ZNS_1zEE2ua1iE", + // "void test6::f1(decltype((int)(test6::z.ua.i)))"}, + // got error + + + // {"_ZN5test62f2IiEEvDTcvT_dtdtL_ZNS_1zEE2ub1iE", + // "void test6::f2(decltype((int)(test6::z.ub.i)))"}, + // got error + + + // {"_ZN5test62f3IiEEvDTcvT_dtdtL_ZNS_1zEE1s1iE", + // "void test6::f3(decltype((int)(test6::z.s.i)))"}, + // got error + + + // {"_ZN5test62f4IiEEvDTcvT_dtdtL_ZNS_1zEE4uuss1iE", + // "void test6::f4(decltype((int)(test6::z.uuss.i)))"}, + // got error + + + // {"_ZN5test62f5IiEEvDTcvT_dtptL_ZNS_2zpEE2ua1iE", + // "void test6::f5(decltype((int)(test6::zp->ua.i)))"}, + // got error + + + // {"_ZN5test62f6IiEEvDTcvT_dtptL_ZNS_2zpEE2ub1iE", + // "void test6::f6(decltype((int)(test6::zp->ub.i)))"}, + // got error + + + // {"_ZN5test62f7IiEEvDTcvT_dtptL_ZNS_2zpEE1s1iE", + // "void test6::f7(decltype((int)(test6::zp->s.i)))"}, + // got error + + + // {"_ZN5test62f8IiEEvDTcvT_dtptL_ZNS_2zpEE4uuss1iE", + // "void test6::f8(decltype((int)(test6::zp->uuss.i)))"}, + // got error + + + // {"_ZN5test73fD2IiEEDTcmcvNS_1DEL_ZNS_1bEEcvT__EES2_", + // "decltype((test7::D)(test7::b), (int)()) test7::fD2(int)"}, + // got error + + + // {"_ZN5test73fT2IiEEDTcvT__EES1_", + // "decltype((int)()) test7::fT2(int)"}, + // got error + + + // {"_ZN5test73fT4IiEEDTcvT_Li1EES1_", + // "decltype((int)(1)) test7::fT4(int)"}, + // got error + + + // {"_ZN5test73fT6INS_1BEEEDTcvT__Li1ELi2EEES2_", + // "decltype((test7::B)(1, 2)) test7::fT6(test7::B)"}, + // got error + + + // {"_ZNK5test81XIiE3barIiEEDTcl3fooIT_EEEv", + // "decltype(foo()) test8::X::bar() const"}, + // got error + + + // {"_Z1fPU3AS1KiS0_", + // "f(int const AS1*, int const AS1*)"}, + // "f(int const AS1*, int const AS1)" was returned + + + // {"_ZN6test471fINS_1SEEEvPTsNT_1cE", + // "void test47::f(struct test47::S::c*)"}, + // got error + + + // {"_ZN6test481fINS_1SEEEvPTuNT_1uE", + // "void test48::f(union test48::S::u*)"}, + // got error + + + // {"_ZN6test451fINS_1SEEEvPTeNT_1eE", + // "void test45::f(enum test45::S::e*)"}, + // got error + + + // {"_Z1fIcEvDTcv3StrIT_ELA6_KcEE", + // "void f(decltype((Str)(\"\")))"}, + // got error + + + // {"_ZN5test43tf2INS_1XEEEvDTnw_T_piilLi1EEEE", + // "void test4::tf2(decltype(new test4::X({1})))"}, + // got error + + + // {"_ZN5test73fA1IiEEDTcmtlNS_1AELi1ELi2EEcvT__EES2_", + // "decltype(test7::A{1, 2}, (int)()) test7::fA1(int)"}, + // got error + + + // {"_ZN5test73fA2IiEEDTcmcvNS_1AEilLi1ELi2EEcvT__EES2_", + // "decltype((test7::A)({1, 2}), (int)()) test7::fA2(int)"}, + // got error + + + // {"_ZN5test73fB1IiEEDTcmtlNS_1BELi1ELi2EEcvT__EES2_", + // "decltype(test7::B{1, 2}, (int)()) test7::fB1(int)"}, + // got error + + + // {"_ZN5test73fB2IiEEDTcmcvNS_1BEilLi1ELi2EEcvT__EES2_", + // "decltype((test7::B)({1, 2}), (int)()) test7::fB2(int)"}, + // got error + + + // {"_ZN5test73fC1IiEEDTcmtlNS_1CEilLi1ELi2EEEcvT__EES2_", + // "decltype(test7::C{{1, 2}}, (int)()) test7::fC1(int)"}, + // got error + + + // {"_ZN5test73fC2IiEEDTcmcvNS_1CEilLi1ELi2EEcvT__EES2_", + // "decltype((test7::C)({1, 2}), (int)()) test7::fC2(int)"}, + // got error + + + // {"_ZN5test73fD1IiEEDTcmtlNS_1DEL_ZNS_1bEEEcvT__EES2_", + // "decltype(test7::D{test7::b}, (int)()) test7::fD1(int)"}, + // got error + + + // {"_ZN5test73fE1IiEEDTcmtlNS_1EELi1ELi2EEcvT__EES2_", + // "decltype(test7::E{1, 2}, (int)()) test7::fE1(int)"}, + // got error + + + // {"_ZN5test73fE2IiEEDTcmcvNS_1EEilLi1ELi2EEcvT__EES2_", + // "decltype((test7::E)({1, 2}), (int)()) test7::fE2(int)"}, + // got error + + + // {"_ZN5test73fF1IiEEDTcmtlNS_1FEilLi1ELi2EEEcvT__EES2_", + // "decltype(test7::F{{1, 2}}, (int)()) test7::fF1(int)"}, + // got error + + + // {"_ZN5test73fF2IiEEDTcmcvNS_1FEilLi1ELi2EEcvT__EES2_", + // "decltype((test7::F)({1, 2}), (int)()) test7::fF2(int)"}, + // got error + + + // {"_ZN5test73fT1IiEEDTtlT_EES1_", + // "decltype(int{}) test7::fT1(int)"}, + // got error + + + // {"_ZN5test73fT3IiEEDTtlT_Li1EEES1_", + // "decltype(int{1}) test7::fT3(int)"}, + // got error + + + // {"_ZN5test73fT5INS_1BEEEDTtlT_Li1ELi2EEES2_", + // "decltype(test7::B{1, 2}) test7::fT5(test7::B)"}, + // got error + + + // {"_ZN5test73fT7INS_1AEEEDTtlT_ilEEES2_", + // "decltype(test7::A{{}}) test7::fT7(test7::A)"}, + // got error + + + // {"_ZN5test73fT8INS_1AEEEDTcvT_ilEES2_", + // "decltype((test7::A)({})) test7::fT8(test7::A)"}, + // got error + + + // {"_ZN5test73fT9INS_1AEEEDTtlT_ilLi1EEEES2_", + // "decltype(test7::A{{1}}) test7::fT9(test7::A)"}, + // got error + + + // {"_ZN5test73fTAINS_1AEEEDTcvT_ilLi1EEES2_", + // "decltype((test7::A)({1})) test7::fTA(test7::A)"}, + // got error + + + // {"_ZN5test73fTBINS_1CEEEDTtlT_ilLi1ELi2EEEES2_", + // "decltype(test7::C{{1, 2}}) test7::fTB(test7::C)"}, + // got error + + + // {"_ZN5test73fTCINS_1CEEEDTcvT_ilLi1ELi2EEES2_", + // "decltype((test7::C)({1, 2})) test7::fTC(test7::C)"}, + // got error + + + // {"_ZN15designated_init1fINS_1AEEEvDTtlT_di1adi1bdxLi3EdXLi1ELi4ELi9EEE", + // "void designated_init::f(decltype(designated_init::A{.a.b[3][1 ... 4] = 9}))"}, + // got error + + + // {"_Z1fIXtl1Xdi1adi1bdxLi3ELi1EEEE", + // "f"}, + // got error + + + // {"_ZN1BCI21AEi", + // "B::B(int)"}, + // got error + + + // {"_ZN1DCI21CIiEET_", + // "D::D(int)"}, + // got error + + + // {"_Z1bPDoFivE", + // "b(int (*)() noexcept)"}, + // got error + + + // {"_Z1fILb0EEvPDOT_EFivE", + // "void f(int (*)() noexcept(false))"}, + // got error + + + // {"_Z1fILb1EEvPDOT_EFivE", + // "void f(int (*)() noexcept(true))"}, + // got error + + + // {"_Z1gIJEEvPDwDpT_EFivE", + // "void g<>(int (*)() throw())"}, + // got error + + + // {"_Z1gIJfEEvPDwDpT_EFivE", + // "void g(int (*)() throw(float))"}, + // got error + + + // {"_Z1hIJEEPDwDpT_iEFivEPDwiS1_EFivE", + // "int (*h<>(int (*)() throw(int)))() throw(int)"}, + // got error + + + // {"_Z1hIJfEEPDwDpT_iEFivEPDwiS1_EFivE", + // "int (*h(int (*)() throw(int, float)))() throw(float, int)"}, + // got error + + + // {"_Z1iIJEEPDwiDpT_EFivEPS2_", + // "int (*i<>(int (*)() throw(int)))() throw(int)"}, + // got error + + + // {"_Z1iIJEEPDwiDpT_EFivES3_", + // "int (*i<>(int (*)() throw(int)))() throw(int)"}, + // got error + + + // {"_Z1iIJfEEPDwiDpT_EFivEPS2_", + // "int (*i(int (*)() throw(int, float)))() throw(int, float)"}, + // got error + + + // {"_Z1iIJfEEPDwiDpT_EFivES3_", + // "int (*i(int (*)() throw(int, float)))() throw(int, float)"}, + // got error + + + // {"_Z1pILb1EEiM1SKDOT_EFivRE", + // "int p(int (S::*)() const & noexcept(true))"}, + // got error + + + // {"_Z1pIJicfEEiM1SVKDwDpT_EFivOE", + // "int p(int (S::*)() const volatile && throw(int, char, float))"}, + // got error + + + // {"_Z1pM1SDoFivE", + // "p(int (S::*)() noexcept)"}, + // got error + + {"_ZNKR4llvm8OptionalINS_11MCFixupKindEEdeEv", "llvm::Optional::operator*() const &"}, + + // {"_ZZL23isValidCoroutineContextRN5clang4SemaENS_14SourceLocationEN4llvm9StringRefEENK3$_4clEZL23isValidCoroutineContextS1_S2_S4_E15InvalidFuncDiag", + // "isValidCoroutineContext(clang::Sema&, clang::SourceLocation, llvm::StringRef)::$_4::operator()(isValidCoroutineContext(clang::Sema&, clang::SourceLocation, llvm::StringRef)::InvalidFuncDiag) const"}, + // "isValidCoroutineContext(clang::Sema&, isValidCoroutineContext::SourceLocation, llvm::StringRef)::$_4::operator()(isValidCoroutineContext(clang::Sema, clang::Sema&, llvm)::InvalidFuncDiag) const" was returned + + + // {"_Z1fSsB1XS_", + // "f(std::string[abi:X], std::string[abi:X])"}, + // got error + + + // {"___Z10blocksNRVOv_block_invoke", + // "invocation function for block in blocksNRVO()"}, + // got error + + + // {"_ZDC2a12a2E", + // "[a1, a2]"}, + // got error + + + // {"_ZN2NSDC1x1yEE", + // "NS::[x, y]"}, + // got error + + + // {"_ZGRDC1x1yE_", + // "reference temporary for [x, y]"}, + // got error + + + // {"_ZGR1bIvE2_", + // "reference temporary for b"}, + // got error + + + // {"_ZZ18test_assign_throwsI20small_throws_on_copyLb0EEvvENKUlRNSt3__13anyEOT_E_clIRS0_EEDaS3_S5_", + // "auto void test_assign_throws()::\'lambda\'(std::__1::any&, auto&&)::operator()(std::__1::any&, auto&&) const"}, + // got error + + + // {"_Z1fUa9enable_ifIXLi1EEEv", + // "f() [enable_if:1]"}, + // got error + + + // {"_ZN5test4IdE1fEUa9enable_ifIXeqfL0p_Li1EEXeqfL0p0_Li2EEEi", + // "test4::f(int) [enable_if:fp == 1, fp0 == 2]"}, + // got error + + + // {"_Z3quxUa9enable_ifIXLi1EEXL_Z9TRUEFACTSEEEi", + // "qux(int) [enable_if:1, TRUEFACTS]"}, + // got error + + + // {"_ZN5OuterI4MarpEcv7MuncherIJT_T0_DpT1_EEI4MerpS0_JicfEEEv", + // "Outer::operator Muncher()"}, + // got error + + + // {"_ZN5OuterI4MarpEcvT_I4MerpEEv", + // "Outer::operator Merp()"}, + // got error + + + // {"_ZZN5OuterI4MarpEcv7MuncherIJT_T0_DpT1_EEI4MerpS0_JicfEEEvEN1ScvS9_Ev", + // "Outer::operator Muncher()::S::operator Merp()"}, + // got error + + + // {"_ZN1Scv7MuncherIJDpPT_EEIJFivEA_iEEEv", + // "S::operator Muncher()"}, + // got error + + + // {"_Z2f8IiJ8identityIiES0_IfEEEvRAsPiDpT0_T_DpNS3_4typeEE_i", + // "void f8, identity>(int (&) [sizeof... (int, identity, identity, int, identity::type, identity::type)])"}, + // got error + + + // {"_ZNK13StaticMembersIfE1xMUlvE_clEv", + // "StaticMembers::x::\'lambda\'()::operator()() const"}, + // got error + + + // {"_ZNK10inline_varMUlvE_clEv", + // "inline_var::\'lambda\'()::operator()() const"}, + // got error + + + // {"_Z6foldl1IJLi1ELi2ELi3EEEv1AIXfLplLi1ET_EE", + // "void foldl1<1, 2, 3>(A<(1 + ... + (1, 2, 3))>)"}, + // got error + + + // {"_Z6foldr1IJLi1ELi2ELi3EEEv1AIXfRplT_Li1EEE", + // "void foldr1<1, 2, 3>(A<((1, 2, 3) + ... + 1)>)"}, + // got error + + + // {"_Z5foldlIJLi1ELi2ELi3EEEv1AIXflplT_EE", + // "void foldl<1, 2, 3>(A<(... + (1, 2, 3))>)"}, + // got error + + + // {"_Z5foldrIJLi1ELi2ELi3EEEv1AIXfrplT_EE", + // "void foldr<1, 2, 3>(A<((1, 2, 3) + ...)>)"}, + // got error + + + // {"_ZN7PartialIJLi1ELi2EEE5foldrIJLi3ELi4EEEEv1AIXplLi1EplLi2EfRplT_plLi1EplLi2EfrplT_EE", + // "void Partial<1, 2>::foldr<3, 4>(A<1 + (2 + ((3, 4) + ... + (1 + (2 + ((3, 4) + ...)))))>)"}, + // got error + + + // {"_ZN7PartialIJLi1ELi2EEE5foldrIJLi3ELi4EEEEv1AIXplplLi1ELi2EfRplT_plplLi1ELi2EflplT_EE", + // "void Partial<1, 2>::foldr<3, 4>(A<1 + 2 + ((3, 4) + ... + (1 + 2 + (... + (3, 4))))>)"}, + // got error + + + // {"_Z1fIXfLpm1x1yEEvv", + // "void f<(x ->* ... ->* (y...))>()"}, + // got error + + + // {"_Z1fIXfLds1x1yEEvv", + // "void f<(x .* ... .* (y...))>()"}, + // got error + + + // {"_Z1fIR1SEiOT_", + // "int f(S&)"}, + // "int f(S&&&)" was returned + + + // {"_Z1fIJR1SS0_EEiDpOT_", + // "int f(S&, S&&)"}, + // got error + + + // {"___Z3foo_block_invoke.25", + // "invocation function for block in foo"}, + // got error + + + // {"____Z3foo_block_invoke.25", + // "invocation function for block in foo"}, + // got error + + + // {"__Z1fv", + // "f()"}, + // got error + + + // {"_Z2tfIZUb_E1SEiv", + // "int tf<\'block-literal\'::S>()"}, + // got error + + {"_Z1fu3fooS_", "f(foo, foo)"}, + + // {"_Z2f1IiEvDTatT_E", + // "void f1(decltype(alignof (int)))"}, + // got error + + + // {"_Z2f3IiEvDTazcvT_Li0EE", + // "void f3(decltype(alignof ((int)(0))))"}, + // got error + + + // {"_Z2f2IiEvDTu11__alignof__T_EE", + // "void f2(decltype(__alignof__(int)))"}, + // got error + + + // {"_Z2f4IiEvDTu11__alignof__XcvT_Li0EEEE", + // "void f4(decltype(__alignof__((int)(0))))"}, + // got error + + + // {"_Z15test_uuidofTypeI10TestStructEvDTu8__uuidoftT_E", + // "void test_uuidofType(decltype(__uuidof(TestStruct)))"}, + // got error + + + // {"_Z15test_uuidofExprI9HasMemberEvDTu8__uuidofXsrT_6memberEEE", + // "void test_uuidofExpr(decltype(__uuidof(HasMember::member)))"}, + // got error + + + // {"_Z15test_uuidofTypeI10TestStructEvDTu8__uuidofT_EE", + // "void test_uuidofType(decltype(__uuidof(TestStruct)))"}, + // got error + + + // {"_Z15test_uuidofExprI9HasMemberEvDTu8__uuidofXsrT_6memberEEE", + // "void test_uuidofExpr(decltype(__uuidof(HasMember::member)))"}, + // got error + + + // {"_ZTSPDu", + // "typeinfo name for char8_t*"}, + // got error + + + // {"_ZNK1xMUlTyT_E_clIiEEDaS_", + // "auto x::\'lambda\'($T)::operator()(x) const"}, + // got error + + + // {"_ZNK1xMUlTnPA3_ivE_clILS0_0EEEDav", + // "auto x::\'lambda\'()::operator()<(int [3])0>() const"}, + // got error + + + // {"_ZNK1xMUlTyTtTyTnT_TpTnPA3_TL0__ETpTyvE_clIi1XJfEEEDav", + // "auto x::\'lambda\' typename $TT, typename ...$T1>()::operator()() const"}, + // got error + + + // {"_ZN1AIiE1fIfEEvDTLUlTyTtTyTnTL1__ETL0_1_T_TL0__E_EE", + // "void A::f(decltype([] typename $TT>(auto, float, $T){...}))"}, + // got error + + + // {"_ZN1S1fILb1EEEv1XILUlvE_EE", + // "void S::f(X<[](){...}>)"}, + // got error + + + // {"_ZN1S1fILb1EEEv1XILUlvE0_EE", + // "void S::f(X<[](){...}>)"}, + // got error + + + // {"_ZZ11inline_funcvENKUlTyTyT_T0_E_clIiiEEDaS_S0_", + // "auto inline_func()::\'lambda\'($T, $T0)::operator()($T, $T0) const"}, + // got error + + + // {"_ZZ11inline_funcvENKUlTyTyT_T1_T0_E_clIiiiEEDaS_S0_S1_", + // "auto inline_func()::\'lambda\'($T, auto, $T0)::operator()($T, auto, $T0) const"}, + // got error + + + // {"_ZN1XIZ1fIiEvOT_EUlOT_DpT0_E_EclIJEEEvDpT_", + // "void X(int&&)::\'lambda\'(auto&&, auto...)>::operator()<>()"}, + // got error + + + // {"_ZN1XIZ1fIiEvOT_EUlS2_DpT0_E_EclIJEEEvDpT_", + // "void X(int&&)::\'lambda\'(int&&, auto...)>::operator()<>()"}, + // got error + + + // {"_ZZZZN6abcdef9abcdefghi29abcdefabcdefabcdefabcefabcdef27xxxxxxxxxxxxxxxxxxxxxxxxxxxEN4absl8DurationERKNSt3__u12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEPNS1_19yyyyyyyyyyyyyyyyyyyEENK3$_5clEvENKUlvE_clEvE6zzzzzz", + // "abcdef::abcdefghi::abcdefabcdefabcdefabcefabcdef::xxxxxxxxxxxxxxxxxxxxxxxxxxx(absl::Duration, std::__u::basic_string, std::__u::allocator> const&, abcdef::abcdefghi::abcdefabcdefabcdefabcefabcdef::yyyyyyyyyyyyyyyyyyy*)::$_5::operator()() const::\'lambda\'()::operator()() const::zzzzzz"}, + // got error + + + // {"_Z1fIXtl1BLPi0ELi1EEEEvv", + // "void f()"}, + // got error + + + // {"_Z1fIXtl1BLPi32EEEEvv", + // "void f()"}, + // got error + + + // {"_Z1fIXtl1BrcPiLi0EEEEvv", + // "void f(0)}>()"}, + // got error + + + // {"_Z1fIXtl1BadsoiL_Z6nestedE_EEEEvv", + // "void f}>()"}, + // got error + + + // {"_Z1fIXtl1BadsoiL_Z6nestedE16_0pEEEEvv", + // "void f}>()"}, + // got error + + + // {"_Z1fIXtl2BRsoiL_Z7derivedE4EEEEvv", + // "void f}>()"}, + // got error + + + // {"_Z1fIXtl1BcvPiplcvPcadL_Z7derivedELl16EEEEvv", + // "void f()"}, + // got error + + + // {"_Z1fIXtl1CadsoKiL_Z7derivedE4EEEEvv", + // "void f}>()"}, + // got error + + + // {"_Z1fIXtl1DLM7DerivedKi0ELi1EEEEvv", + // "void f()"}, + // got error + + + // {"_Z1fIXtl1DmcM7DerivedKiadL_ZN11MoreDerived1zEEn8EEEEvv", + // "void f()"}, + // got error + + + // {"_Z1fIXtl1Edi1nLi42EEEEvv", + // "void f()"}, + // got error + + + // {"_ZTAXtl1StlA32_cLc104ELc101ELc108ELc108ELc111ELc32ELc119ELc111ELc114ELc108ELc100EEEE", + // "template parameter object for S{char [32]{(char)104, (char)101, (char)108, (char)108, (char)111, (char)32, (char)119, (char)111, (char)114, (char)108, (char)100}}"}, + // got error + + + // {"_Z1h1XIJZ1fIiEDaOT_E1AZ1gIdEDaS2_E1BEE", + // "h(X(int&&)::A, auto g(int&&)::B>)"}, + // got error + + + // {"_Z1fIL4Enumn1EEvv", + // "void f<(Enum)-1>()"}, + // got error + + + // {"_ZN1A1gIiEEDTcldtptfpT1b1fIT_EEEv", + // "decltype(this->b.f()) A::g()"}, + // got error + + + // {"_Z3fooILi79EEbU7_ExtIntIXT_EEi", + // "bool foo<79>(int _ExtInt<79>)"}, + // "bool foo<79>(<79> _ExtInt, int)" was returned + + + // {"_ZN3xxx3yyyIvNS_1AILm0EEEZNS_2bb2cc2ddILNS_1eE1EEEvRKNS_1fERKNS_1g1hINS_1iEEERKNS_1jEfRKNS_1kEiPhEUlvE_JEEEvT1_DpT2_", + // "void xxx::yyy, void xxx::bb::cc::dd<(xxx::e)1>(xxx::f const&, xxx::g::h const&, xxx::j const&, float, xxx::k const&, int, unsigned char*)::\'lambda\'()>(void xxx::bb::cc::dd<(xxx::e)1>(xxx::f const&, xxx::g::h const&, xxx::j const&, float, xxx::k const&, int, unsigned char*)::\'lambda\'())"}, + // got error + + + // {"_Zcv1BIRT_EIS1_E", + // "operator B<><>"}, + // got error + + + // {"_ZN2FnIXgs4BaseEX4BaseEEEvv", + // "void Fn<::Base, Base>()"}, + // got error + + + // {"_ZN2FnIXgsnw_iEEXna_ipiLi4EEEEEvv", + // "void Fn<::new int, new[] int(4)>()"}, + // got error + + + // {"_ZN2FnIXnwLj4E_iEEXgsnaLj4E_ipiLi4EEEEEvv", + // "void Fn()"}, + // got error + + + // {"_ZN2FnIXgsdlLi4EEXdaLi4EEEEvv", + // "void Fn<::delete 4, delete[] 4>()"}, + // got error + + + // {"_ZN2FnIXdlLj4EEXgsdaLj4EEEEvv", + // "void Fn()"}, + // got error + + {"_Z3TPLIiET_S0_", "int TPL(int)"}, + + // {"_ZN1XawEv", + // "X::operator co_await()"}, + // got error + + + // {"_ZN5Outer5InnerW3FOO2FnERNS0_1XE", + // "Outer::Inner::Fn@FOO(Outer::Inner::X&)"}, + // got error + + + // {"_ZN5OuterW3FOO5Inner2FnERNS1_1XE", + // "Outer::Inner@FOO::Fn(Outer::Inner@FOO::X&)"}, + // got error + + + // {"_ZN4Quux4TotoW3FooW3Bar3BazEPNS0_S2_5PlughE", + // "Quux::Toto::Baz@Foo.Bar(Quux::Toto::Plugh@Foo.Bar*)"}, + // got error + + + // {"_ZW6Module1fNS_1a1bENS0_1cE", + // "f@Module(a@Module::b, a@Module::c)"}, + // got error + + + // {"_ZN3BobW3FOOW3BAR3BarEPS1_1APNS_S1_1BE", + // "Bob::Bar@FOO.BAR(A@FOO.BAR*, Bob::B@FOO.BAR*)"}, + // got error + + + // {"_ZW3FOOW3BAR3FooPS0_1APN3BobS0_1BE", + // "Foo@FOO.BAR(A@FOO.BAR*, Bob::B@FOO.BAR*)"}, + // got error + + + // {"_ZN3BobW3FOOW3BAZ3FooEPS0_W3BAR1APNS_S2_1BE", + // "Bob::Foo@FOO.BAZ(A@FOO.BAR*, Bob::B@FOO.BAR*)"}, + // got error + + + // {"_ZW3FOOW3BAZ3BarPS_W3BAR1APN3BobS1_1BE", + // "Bar@FOO.BAZ(A@FOO.BAR*, Bob::B@FOO.BAR*)"}, + // got error + + + // {"_ZNW3FOO3TPLIS_3OneE1MEPS1_", + // "TPL@FOO::M(One@FOO*)"}, + // got error + + + // {"_ZNW3FOO3TPLIS_3OneE1NIS_3TwoEEvPS1_PT_", + // "void TPL@FOO::N(One@FOO*, Two@FOO*)"}, + // got error + + + // {"_ZN3NMSW3FOO3TPLINS_S0_3OneEE1MEPS2_", + // "NMS::TPL@FOO::M(NMS::One@FOO*)"}, + // got error + + + // {"_ZN3NMSW3FOO3TPLINS_S0_3OneEE1NINS_S0_3TwoEEEvPS2_PT_", + // "void NMS::TPL@FOO::N(NMS::One@FOO*, NMS::Two@FOO*)"}, + // got error + + + // {"_ZNStW3STD9allocatorIiE1MEPi", + // "std::allocator@STD::M(int*)"}, + // got error + + + // {"_ZNStW3STD9allocatorIiE1NIfEEPT_Pi", + // "float* std::allocator@STD::N(int*)"}, + // got error + + + // {"_ZNStW3STD9allocatorI4PoohE1MEPS1_", + // "std::allocator@STD::M(Pooh*)"}, + // got error + + + // {"_ZNStW3STD9allocatorI4PoohE1NI6PigletEEPT_PS1_", + // "Piglet* std::allocator@STD::N(Pooh*)"}, + // got error + + + // {"_ZW3FooDC1a1bE", + // "[a, b]@Foo"}, + // got error + + + // {"_ZN1NW3FooDC1a1bEE", + // "N::[a, b]@Foo"}, + // got error + + + // {"_ZN3NMSW3MOD3FooB3ABIEv", + // "NMS::Foo@MOD[abi:ABI]()"}, + // got error + + + // {"_ZGIW3Foo", + // "initializer for module Foo"}, + // got error + + + // {"_ZGIW3FooW3Bar", + // "initializer for module Foo.Bar"}, + // got error + + + // {"_ZGIW3FooWP3BarW3Baz", + // "initializer for module Foo:Bar.Baz"}, + // got error + + + // {"_ZW1ML4Oink", + // "Oink@M"}, + // got error + + + // {"_ZW1ML1fi", + // "f@M(int)"}, + // got error + + {"_Z1fSaIiE", "f(std::allocator)"}, + {"_Z1fSbIiE", "f(std::basic_string)"}, + + // {"_Z1fSd", + // "f(std::iostream)"}, + // "f(std::basic_iostream>)" was returned + + + // {"_Z1fSi", + // "f(std::istream)"}, + // "f(std::basic_istream>)" was returned + + + // {"_Z1fSo", + // "f(std::ostream)"}, + // "f(std::basic_ostream>)" was returned + + {"_Z1fSs", "f(std::string)"}, + {"_Z1fNSaIiE1gE", "f(std::allocator::g)"}, + {"_Z1fNSbIiE1gE", "f(std::basic_string::g)"}, + + // {"_Z1fNSd1gE", + // "f(std::iostream::g)"}, + // "f(std::basic_iostream>::g)" was returned + + + // {"_Z1fNSi1gE", + // "f(std::istream::g)"}, + // "f(std::basic_istream>::g)" was returned + + + // {"_Z1fNSo1gE", + // "f(std::ostream::g)"}, + // "f(std::basic_ostream>::g)" was returned + + {"_Z1fNSs1gE", "f(std::string::g)"}, + + // {"_ZNSaIiED1Ev", + // "std::allocator::~allocator()"}, + // got error + + + // {"_ZNSbIiED1Ev", + // "std::basic_string::~basic_string()"}, + // got error + + {"_ZNSdC1Ev", "std::basic_iostream>::basic_iostream()"}, + {"_ZNSiC1Ev", "std::basic_istream>::basic_istream()"}, + {"_ZNSoC1Ev", "std::basic_ostream>::basic_ostream()"}, + + // {"_ZNSsC1Ev", + // "std::basic_string, std::allocator>::basic_string()"}, + // "std::string::string()" was returned + + + // {"_ZN1SB8ctor_tagC2Ev", + // "S[abi:ctor_tag]::S()"}, + // got error + + + // {"_ZN1SB8ctor_tagD2Ev", + // "S[abi:ctor_tag]::~S()"}, + // got error + +}; diff --git a/test/libc/str/demangle_test.c b/test/libc/str/demangle_test.c new file mode 100644 index 000000000..45fd272e4 --- /dev/null +++ b/test/libc/str/demangle_test.c @@ -0,0 +1,58 @@ +/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│ +│ vi: set et ft=c ts=2 sts=2 sw=2 fenc=utf-8 :vi │ +╞══════════════════════════════════════════════════════════════════════════════╡ +│ Copyright 2024 Justine Alexandra Roberts Tunney │ +│ │ +│ Permission to use, copy, modify, and/or distribute this software for │ +│ any purpose with or without fee is hereby granted, provided that the │ +│ above copyright notice and this permission notice appear in all copies. │ +│ │ +│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │ +│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │ +│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │ +│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │ +│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │ +│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │ +│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ +│ PERFORMANCE OF THIS SOFTWARE. │ +╚─────────────────────────────────────────────────────────────────────────────*/ +#include "demangle_cases.inc" +#include "libc/cosmo.h" +#include "libc/macros.internal.h" +#include "libc/stdio/internal.h" +#include "libc/str/str.h" + +char got[65536]; + +static void regenerate_cases(void) { + FILE *f = fopen("demangle_cases.inc", "w"); + fprintf(f, "const char* demangle_cases[][2] = {\n"); + for (int i = 0; i < ARRAYLEN(demangle_cases); ++i) { + const char *input = demangle_cases[i][0]; + const char *want = demangle_cases[i][1]; + if (__demangle(got, input, sizeof(got)) == -1) { + fprintf(f, "\n // {%`'s,\n // %`'s},\n // got error\n\n", input, + want); + } else if (!strcmp(want, got)) { + fprintf(f, " {%`'s, %`'s},\n", input, got); + } else { + fprintf(f, + "\n // {%`'s,\n // %`'s},\n // %`'s was returned\n\n", + input, want, got); + } + fflush(f); + } + fprintf(f, "};\n"); + fclose(f); +} + +int main() { + for (int i = 0; i < ARRAYLEN(demangle_cases); ++i) { + const char *input = demangle_cases[i][0]; + const char *want = demangle_cases[i][1]; + if (__demangle(got, input, sizeof(got)) == -1) + return 1; + if (strcmp(want, got)) + return 2; + } +} diff --git a/test/posix/BUILD.mk b/test/posix/BUILD.mk index ba418c314..69fe69be9 100644 --- a/test/posix/BUILD.mk +++ b/test/posix/BUILD.mk @@ -33,6 +33,7 @@ TEST_POSIX_DIRECTDEPS = \ LIBC_PROC \ LIBC_RUNTIME \ LIBC_STDIO \ + LIBC_STR \ LIBC_SYSV \ LIBC_THREAD From 7d31fc311a68aadd805ea555150c7d76c8f6ad4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C5=8Dshin?= Date: Tue, 7 May 2024 17:42:18 -0700 Subject: [PATCH 037/123] Loaders rewrite argv[0] for old binaries (#1170) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For this to work, a loader has to be able to tell the difference between an ‘old’ and a ‘new’ binary. This is achieved via a repurposing of ELF’s e_flags field. We previously tried to use the padding in e_ident for it, but binutils was resetting it to zero in e.g. strip. This introduces one new ELF flag for cosmopolitan binaries. It is called `EF_APE_MODERN`. We choose 0x101ca75, "lol cat 5". It should now be safe to install the ape loader binfmt registration with the `P` flag. --- ape/ape-m1.c | 9 ++++++++- ape/ape.S | 4 ++-- ape/loader.c | 7 +++++++ libc/elf/def.h | 4 ++++ tool/build/fixupobj.c | 6 ++++++ 5 files changed, 27 insertions(+), 3 deletions(-) diff --git a/ape/ape-m1.c b/ape/ape-m1.c index b81bebb71..8d188404a 100644 --- a/ape/ape-m1.c +++ b/ape/ape-m1.c @@ -146,6 +146,9 @@ struct Syslib { #define AT_RANDOM 25 #define AT_EXECFN 31 +#define EF_APE_MODERN 0x101ca75 +#define EF_APE_MODERN_MASK 0x1ffffff + #define AUXV_WORDS 31 /* from the xnu codebase */ @@ -799,7 +802,7 @@ __attribute__((__noreturn__)) static void Spawn(const char *exe, int fd, } static const char *TryElf(struct ApeLoader *M, union ElfEhdrBuf *ebuf, - const char *exe, int fd, long *sp, long *auxv, + char *exe, int fd, long *sp, long *auxv, char *execfn) { long i, rc; unsigned size; @@ -820,6 +823,10 @@ static const char *TryElf(struct ApeLoader *M, union ElfEhdrBuf *ebuf, if (e->e_machine != EM_AARCH64) { return "couldn't find ELF header with ARM64 machine type"; } + if ((e->e_flags & EF_APE_MODERN_MASK) != EF_APE_MODERN && sp[0] > 0) { + /* change argv[0] to resolved path for older binaries */ + ((char **)(sp + 1))[0] = exe; + } if (e->e_phentsize != sizeof(struct ElfPhdr)) { Pexit(exe, 0, "e_phentsize is wrong"); } diff --git a/ape/ape.S b/ape/ape.S index b98f341c8..f97383aca 100644 --- a/ape/ape.S +++ b/ape/ape.S @@ -196,7 +196,7 @@ ape_mz: .quad ape_elf_entry // 18: e_entry .quad ape_elf_phoff // 20: e_phoff .quad ape_elf_shoff // 28: e_shoff - .long 0 // 30: e_flags + .long 0x101ca75 // 30: ape e_flags .short 64 // 34: e_ehsize .short 56 // 36: e_phentsize .short ape_elf_phnum // 38: e_phnum @@ -669,7 +669,7 @@ apesh: .ascii "\n@\n#'\"\n" // sixth edition shebang .shstub ape_elf_entry,8 // 18: e_entry .shstub ape_elf_phoff,8 // 20: e_phoff .shstub ape_elf_shoff,8 // 28: e_shoff - .ascii "\\0\\0\\0\\0" // 30: e_flags + .ascii "\\165\\312\\1\\1" // 30: ape e_flags .ascii "\\100\\0" // 34: e_ehsize .ascii "\\070\\0" // 36: e_phentsize .shstub ape_elf_phnum,2 // 38: e_phnum diff --git a/ape/loader.c b/ape/loader.c index 8b35e3a30..b68493497 100644 --- a/ape/loader.c +++ b/ape/loader.c @@ -152,6 +152,9 @@ #define PR_SET_MM 35 #define PR_SET_MM_EXE_FILE 13 +#define EF_APE_MODERN 0x101ca75 +#define EF_APE_MODERN_MASK 0x1ffffff + #define READ32(S) \ ((unsigned)(255 & (S)[3]) << 030 | (unsigned)(255 & (S)[2]) << 020 | \ (unsigned)(255 & (S)[1]) << 010 | (unsigned)(255 & (S)[0]) << 000) @@ -834,6 +837,10 @@ static const char *TryElf(struct ApeLoader *M, union ElfEhdrBuf *ebuf, return "couldn't find ELF header with x86-64 machine type"; } #endif + if ((e->e_flags & EF_APE_MODERN_MASK) != EF_APE_MODERN && sp[0] > 0) { + /* change argv[0] to resolved path for older binaries */ + ((char **)(sp + 1))[0] = exe; + } if (e->e_phentsize != sizeof(struct ElfPhdr)) { Pexit(os, exe, 0, "e_phentsize is wrong"); } diff --git a/libc/elf/def.h b/libc/elf/def.h index 63655bdd4..8530592c0 100644 --- a/libc/elf/def.h +++ b/libc/elf/def.h @@ -85,6 +85,10 @@ #define EM_RISCV 243 #define EM_BPF 247 +/* the ape flag, "lol cat 5" */ +#define EF_APE_MODERN 0x101ca75 +#define EF_APE_MODERN_MASK 0x1ffffff + #define GRP_COMDAT 1 #define STN_UNDEF 0 diff --git a/tool/build/fixupobj.c b/tool/build/fixupobj.c index fc2d53cf5..570cd3e4c 100644 --- a/tool/build/fixupobj.c +++ b/tool/build/fixupobj.c @@ -327,6 +327,11 @@ static void UseFreebsdOsAbi(void) { elf->e_ident[EI_OSABI] = ELFOSABI_FREEBSD; } +static void WriteApeFlags(void) { + /* try to be forward-compatible */ + elf->e_flags = (elf->e_flags & ~EF_APE_MODERN_MASK) | EF_APE_MODERN; +} + /** * Improve GCC11 `-fpatchable-function-entry` codegen. * @@ -668,6 +673,7 @@ static void FixupObject(void) { UseFreebsdOsAbi(); } if (elf->e_type != ET_REL) { + WriteApeFlags(); PurgeIfuncSections(); RelinkZipFiles(); } From 19c81863a31fd39abf0f55162761f8a4001ff56f Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Tue, 7 May 2024 17:36:17 -0700 Subject: [PATCH 038/123] Improve crash backtrace reliability We're now able to pretty print a C++ backtrace upon crashing in pretty much any runtime execution scenario. The default pledge sandbox policy on Linux is now to return EPERM. If you call pledge and have debugging functions linked (e.g. GetSymbolTable) then the symbol table shall get loaded before any security policy is put in place. This change updates build/bootstrap/fixupobj too and fixes some other sneaky build errors. --- build/bootstrap/ape.aarch64 | Bin 8304 -> 8360 bytes build/bootstrap/ape.elf | Bin 9249 -> 9249 bytes build/bootstrap/ape.macho | Bin 9249 -> 9249 bytes build/bootstrap/fixupobj | Bin 246854 -> 206739 bytes examples/crashreport2.cc | 12 ++++++++++++ libc/calls/pledge.c | 28 ++++++++++++++++------------ libc/intrin/promises.c | 2 +- libc/intrin/x86.h | 6 +++--- libc/log/addr2linepath.c | 16 ++++++++++------ libc/log/backtrace2.c | 2 +- libc/log/backtrace3.c | 16 ++++++++++++++-- libc/log/oncrash_arm64.c | 29 +++++++++++++---------------- libc/mem/tinymalloc.inc | 18 +++++++++++++----- libc/runtime/getsymboltable.c | 3 +++ libc/str/demangle.c | 27 +++++++++------------------ libc/testlib/testmain.c | 6 ++++++ test/libc/calls/unveil_test.c | 2 ++ 17 files changed, 103 insertions(+), 64 deletions(-) diff --git a/build/bootstrap/ape.aarch64 b/build/bootstrap/ape.aarch64 index 27fd3d7fba464b1cf42921bfb0c31aa0d67a0a0e..832fb1ad198a2a60795b0ab1924b090ea19f12bf 100755 GIT binary patch delta 2050 zcmZWqZ)}rA7=P})u79?5ZP$%V$QQ$Zd2T%047WRVynF4B0^qO2no{rNmeN$l!pz|pQBjr*a< z%XfLLTtT^MTy)c=irXua^wWseL8BTq`R{KwM1NI`*B?}amW)6=0T80Nd(Ha}v{Hk^ z)EP_A62C~Nd;Ui66~N+mDZ~ev(DveM>$L-lK-tIL(PcI~3lb##lvp?6;pUGrc1WdPx@Y8eKL@b$E<}=zzpGD9Kis>V|?2BB67emCeD{J z@v8BXqheB%Lh!QMR#RnZu?aNy0^r@~Q^E!~pFlasB=(wSlz&^uXX9+cVHRy7wt-bJ z<@!TVYn{AWTrhbJh9X`m#!yg;xJNk5RR%*bw~MFE9>T;6=5^)!iutVvX;;t)d~_K2 zWf=>3_hIf8h*3Zco2N!f{A&RG5>*4Jg@EJZ57Ip&SU)O^f1NqI-Ni4VA6ZksD{x&> zpV8O3_<7V9qm85xU}w;6P=ju&mfk^3nW6@Pg1^zL1{2#L&Ma!M9MsZ;Kp8QLAbZIO z!9>uw&ki9;b)`uSVo?uCGOU=0OsLVuv_Gf|OQ6I*g2mpakj@$fOMtStEZ)@xSc@hW zcbl6oGBDS>sc$v|z_D!hj_RhUn#Z)&d2kF#?^GbS^PG~`xtNf_Bcy0=*~mQ54w1aU zRYXZG<~#StC>-P|LUADI`~C z5F(wcJ!lko2e}wchZ4xu+qehh^;TsSNAsq&?6UHEy6U!--_hk21$<1Gr`z}~UGBH> zlrA^h`88d>Cd%?h$QOcGXDW4GQDc2C|C*N%W5fh?`WwY*YnAe&TcoT@?C0J5=0v&& zuSY+Y-B41r6wH)&>stl04Y+ne94XkXEO(0r+w)4ZSA1w|RqjrR%eM7orD(NRlIKL& z&ZbRxc_RkDPu;P#csI#peG?Ggo&5>A*4U?ti}vr38tzy`dXE0$SZZ|WuLuH=XJ)8cy4dJG@3?KsYUSG_U!Q$qS&6G8-Tuw}7;Cm28=OpQKi{*RU66V)x;y{(5DW@be~iJLE!_xKLU{x&-ma?<|k2 zWo3SL&wTl4V(Z5){pi`3OC`2%uxC6x68DU*7u@3_T}Pvys|tBT@Uog*{a`blVxX+v tqMxTtSbPnZ_DMhOq6KIAX|{+xz5r%+7QeTJr95Cc<(1I^UJ;Hm-@hZ{aSQ+e delta 1981 zcmZWqYfMx}6h1SvFCM$>^12JVx{F{Ti>;JWkf`AbCR!7#l8wcr30Rv*B+*dYRHJb( zwpI)2V;oZwu>orz?zV}xXk~4hVEV&QVq<9&n`rAkq*~XA7!2I_*q*!WZ5ukt+?hEu z-|Ey%NDf{h8QGd=HoY1Z!Kyxj4BoY#m+V5^?r%V1}7}Y6lBG+-V42rKa0YDnX40Abg_<)Cho|A!5r{ zc0?-8QI;2qFsJWuGTE!*4kaLmA20|-P917iMozxg0MHSw1-~~>uJ;(AbD$3UrSfjD zzy??bxtgtAvz5!cJ=bXG<~j)Yy*qFaflfu=EZ@P$lSygWPI>pS0J!>@z4KjtuHC`^ zz`0032`AB6qz=@rOO>%Ui!yf8t{g4PlhtWv3`Oc>b&8onG3E|MSwSey3?UPeWyHFP z!4asLIoHo1QBuRezd!_yuD}A^t`$s)J803Cn$61CLbQz%F=_;Vgv#nbHk_?Q zP9CM)7KHAw{L$@2D^-G+j(ICpEAr$4W1`dw{--5)KE>az0{$h2P4=?B-#q-G;I}{){NHxD5k&{3%gysqmKNa~C4+qu&X} zLao%8I6=VQW{|_f0JUDxWoh>g<#Y8(Qff8iAWKJcfR>RJl&!_JFRYzmQ)=djVoRW~2o6H%kVkd73K4 zQ%I{!mF5Tq-wHRjdmt=lD9v6_iX(jx)@TZ#g7E-Gt$|DIs1M3sYF3&tSI0CxBn(6g z=th&Q#xZY8a%44zIeeUwo=OTw6efqYoQ$GYidhazmd0OXu+&adPqmCJOw;+*U6qYN zB}-PLnQ#Vm@1c;{bBSj4tRZCdJjw44#Fm2E$g)OT2~Diw`;Ts8a3)Cu_g}$8n8@8< zY=ivn8v!|dz$~jjk%FFK3f(c5<0C+N{=}dn%oaL8jonRn+PeoW!HIqdCn__8*B>W) zC;H{^-Gi%x8k>pAHNjz>(ccRB`^ek`ld65UP{(cpXOlFiV;E(L_sQYdK3Qmvub>kR z3~Z)0B?U-a5#yOl$zP%*%N1xv3O~^>dl17U461lk3rc1MJ-Vc!w2wBLmUD^3U&hTf z%!SlpB%gwX6V-;~6ToQ<^IB`)TyrR=dNv~MTd!~uIL*(`!~nYhJmyN6b}MV8}x za!!mmR*}yJ9l7gF4*f;IxKgEMu+wQKn}*D@L+t_4o{%>Dzy4cv`>%8Ct8fv4$>dzO z>(llM@pI7^MN@N7nrDW0wNvn7iD+vISSHBgLa|h&@BF&92+Idp?T`sAViMQ3hz!?a z{MNe`7wL~wY8ie$$C`_=mx(TyRHR4hO;3M^?W~`#ads~DM}2lM>bglujTo7~I8zUM uDpycXZH9hEr&!^s%cw{{krko~M{;_EXYe#&e8k&8hQtc|9u!^P^1lHWhF(wr diff --git a/build/bootstrap/ape.elf b/build/bootstrap/ape.elf index 6a87fd728effd415b1df1d88a5adae83ac440eeb..5ffffe84bd8ed17dcfaf9d99e9b196dc2f35ac57 100755 GIT binary patch delta 1210 zcmXw2Uu;uV7(b^gZP&HCx7~1Ck=VkW7B&-W#<*2sopjr&yNi85-DUzaiwmI(VWVRL zWq-WAk&~ODaEOV%VT^&87@!aGN6os(g2NbCd>}kH9*DVf6E|z-AgtH#+{OEF@;l$( z-}!ytJx|V)PkP+JN@RV(%F74$VgLWvbt6K-%G`aN!FZLuQ}QnEX1S7fTe*1F9>j~e zkbRqNw1G@`9|jO2bg$$h<}HQBr7(d*BwMr6C8)zM@=$7g_h^gKN@zjQPB;-78?j>{ zdmND7DyoL9PhG{rM@Qh^r;hk{3)+C?dWq1r4*GMgX_|P~&sIu~&h z>vipLH%Nr0r6AE(*cYxaChWFr=V(_oLi3l_pqPGKB>L;Xwn!q=L`zFz+5?2%;sGD? z0Q`8+%Xy0g|3ae0Bi!51y#wIwp!o#O4|)~7UlKd;d?K2+0uJ(kBm^YrQw5&40);}4 z5}`#hu^|&cY`nB8V6_PFn29|&LGSX3#FS`8im@xDTk4WlO$8eyWRU0*5!$9nG%h8r z`XOFF&&4nyiJ7G}@UR;93vL@YTC^1*dx*W^ZmqLFHqHG&_+Ax4&7Fkaq*IoBKAt+^ zodGk^U@HV|jool7epyiKY+!?7R;w}=G%u?u3kzwfn!q&Rhy{s$l(m=b#4)Cp?RhP! zY$dKFjAs%?nv6qUoJaP=Vev9t_`}9m|C(lZ7qsOn_QdtQQvWe7;yGsX3~o*u?}MLC zX_J=m*=OKk^-q8ul!~!4o)`UhLA>U!=5DBPtPAqyHnKaOSNpPH-nX9{%fa~hMuh0p z{5g0pmqaEiyg;6x26@%>eZ!;|_Gu{4d=&%LYb9_*W+N-cDL$K$RP{nzT=-#q&A9y< zY!ot5Y{2^*?qp}Y+Z|yAD1}+xTNMlV5n9*_GnY!+*|wdWt$klr==n<2Al zVGO^`+C&-eU}NGTe4G6xZo^-)8sA0R{Q~>ZC)?(hS_?|DA cW@Of?L1^B1xXhOP-{a2QHx=7GSArq?e|{Xl6aWAK delta 1165 zcmXw&YfKbZ6vyW-%kHx5diUXD3pIdF6#)~Lv^bkm%fc=_TL!zSBo!N#Xkv`0HG)Bt z4Pb_8y_s(MxSxz|jNhp32XzyX)HVw#q)ADG^pW%to3xD?3T|33xKeR??vl=j$?u*s z=k>p5uEJG#zuTP;N`)sMym9;>3H*OtGfGlEnE9Ec2$|t;6un6rc&4b`cAtJ|uOwe( zs_Z*#gLRPh{#hnTz&d3YSYN9wCMN-3KG-@eU&lP+P=B`N!tTMi+6HWi>U*7%G&Eo* zbog~7qs^z8wxe2}(0AJLd{i39r-qI{N0s7-T50vPIRmm<%{ojMJrxMsIu%|{!u8SGNg&>vv)xoCCGfylF^enxYb4XGm zGD&p-bhKRwXCX2^PyszNiqW}2(pHM-@Gt1oR%~kkR(Af^csNT(_bO^+g7-LglGpep z=K?v*-*&y=Zjyne@YEh%@L6Uew)5^}sJu!kQnDNm*a zzPf5z3HC%ydyQr6uPT?QT7Y!%6&$T2GTlL2ry(*0v~4O88SnMr(1l#abyuBL-#)Ue{asj5tV4Iq=#)>K7joR;HJ&q@!Azr{P3YNzF}4xs ztX;vzFqOi`JUauAQQc@)bU$V|--U6`jXdvpG4UCi4;~W6b!eQ}AW3Xuj^n68p?c7; zd1dY!R9jnHKmtc_v(A=9Zxd{FtO#G>+3>P?ou|Cd63#DqD@c-$d20?NRji#f-Yu*k zupD5^E;Cn*lBA1U0+KZU5<*hI^9Y9p)FSi>*n;qpfM*bH3Gg9&C%}oYm}y?;B#z(l zH#Qr12W@nW2>gRH+TdtikN71Yr<;8p!g}!`?#hu>cF*kQIXXlJ_**`O9N;6qQ)G#6 z^6wziJnH|%W_!pN{EE%F$hQUR%76L?^^A|8FhLaNu3reFvis~e^AAVZlSgEbz0+E#tDvdaD+*6FLc diff --git a/build/bootstrap/ape.macho b/build/bootstrap/ape.macho index 42b153c6a3e5b19d4002365c756b1e48a364bf7f..d6d22567b6973a512ce50f79b7bfcf37e21e2750 100755 GIT binary patch delta 1218 zcmZuxUu;uV7(b^gYuB~Ax7~1Uk=VkW7B-DFW8A8+PP*;X-NinjZZnaY#f8{~u+cGr zvOnJ5xRaZqc!-I-VGMzg7@!aGN6os(g2NbCd>}kH9*DVf6E|z-AgtH#bWbMs;pBI| zzrXYQzS}e84Ec226R1M}`30&joqhrTk2!k}r!ih-Z z75Y1&4`X^}J?D)lrb)C(VLV@oP&{%&(DKY}+vK2 z^>bVd6Ox!&=7Wd%9M3r{;AqxXgv4g z1dL}AMw*C0UW`X}$6)c&T=;{=*?&y4s}tIC6}w~lUa9X07x5IcI0rT-jQ7D$r?knU z@#&}FVResz9h8c)lg{TocR;+R&ZaJ?aHJFR<~Fk1&R2RfV19QWH&%f0^hSi})ch%U zFPB6nD!f3Rp9Xo=^?k#n2li>u-*g27)vG0NglEGm#yFo%Nz%K}8WX->Uo&pM3LAxt zB)50iz zi?xa}-oZx21NavEQ{0BXVm|kI%e_4N!7W?nmRZ4F*M4akL~T9?>QsU{=iOW#h5kn8 zj1zyErlKFesUJTV{_z?Lz+%w53N085OU0e|s2HnFet275Z5%3x>_Il<+3$WfZ<^uR aVhuub#)DF7{~7^r7flPl-8FHW+-~62)IzP;cdnor7b=k7uQUZiHp-{V$4vt2nJ0W zz+CRe$z8LT^GUbG_>Jj4xRHotZYj+mOGXxCFUelwl5H`Ufz1X6k%@QDDW8_?ez^Ia z=ef_@|2+3HT!wds{L2C9KhJXDlZ#K1|1ppJMAC#z^OuTVCJlU~sLghVzGn}SFGs5E zJ8b=Rkn#ReE=j;TWEWUpsVpw10AD`XIw)Vm8sboYrse$Z{)E~JY?12woRT!qXD4*< zMI@uur`;(aU;o&lprb{RM28<^H?d}LYiemZ(e zLI1nxPjuZ?qUTp7yCn5~2gcqIuvK7>jI>-AHwFtqD*LmYO_`@3S{CS8I+S-vQZh0@ zbpdp=O$lcqGTv7SUDJxuu|d*Sis<0a=+jngYXDYu?w3S3OGo!9Y9zPgc!CruY($)*hK^r?DxBOag74Oh(4LJvekB*Lo3^iIF6`C6vad z(z3$8FWHg+)i@#hRANGv36Z~m?wN#0T!unyTvYr_=wM+`QX5z1hL>9Gq^A;$Sg9I49(|$!k2PH-ni$Kg;Raf-$}k=d4}9 z#xRw_$2>dz4^Z7`XY>GOIM<1B&W(K8^Gxz%G{1647}udOw?UFvZkFSyLZN!luz6+n zYgAiXTR;LwakI{pM{f{pb*ucq>VYk9lhjrc|t*GTthzAh0}O z%PuotjFM!ETl|tV_bft6z*7iE1k@sQ3)q72fq=<_$!Xd@I0-urSiR&Pg1<;qPoV z@OIkh7#8?DXSBf)TaWk!AE%pr?ZP^A4|nD0D!XkS=6O0m`uJ-;g&gF=zEfn8Zz|hC zrg*gMBb)6WpD$Bv&IP{BUsv(t->7F|7=;O-Ft^HtFe{TJD)SbLPyM zGiT16IrmEKChfMbLrT*ES3aJ(s^79MLGzti%i3)s@)EM8)?TaMTKlNw#;>G{)3vu# zMQ2&|%#<&Cs;WE7KYMPJy6;w~NhMLgU+gjmkD16SPi@;m*ZO%`ebh#HT&+vZ7|^e8 zA3gsmTw;0BoR!wMZ@-T=`xVj1)Xe^U`=ve9l-eh~Px>~8Uzcs80&f4Gdv2Q=cvhF1 znVO!~@1c%q{WDY1vTj>V&^xK8i1()ziry*(Q1jv`UgA(x0BK}xLugcjujUV=A8*L_ zkr4y05u)E#7u=;25xlhrSRYlG4=oDfM;$^mv~BAsK0Gc_-Zp+MLw zHDHIAy&YR2@iF2ge2V%Xz5Vpr?@Y)Da-6as z{Ai;3+bns-4u5J>pXe56oboJ5B@)~xqMBn^hmg+MizCK<{<=pYpY9(Gv z?e`FwVyS%Xlpli^=zVn`9T5eQ9So*e3Ziy-PXXO?*un)o1uz@C&r*^E&7a=TMNKm2ow zu;4bdSG(5faF+ZB_)%?W|91b&;_0?eLX*RGUfTBaef9qGRtS?XXNO{hekyHz4tqvR zX9wvcyqxqAWxs0a4BD<0;YAaIhN*4oTB>diB7}Y2L}S^_c611x%KC-VQ9_$AW(%i! zdaZ1CIPEG}(@Z6ymt*5b6(NicnhKJc@VV=F2YM)(!`aJtH?S^QJmnltsOwzs4(#d3x$3wF$Ur=g} zFgf@L_6+h&pvke&j8Ubf0rTun_s=lLLYUK@B>kS_DDw7s^sdKaDt2i%-GJfbW`3?MzQLT4 zw0%%L>h{}$wy2&Riljqn57rb(ufa|)MbY%2v?P;cPSTr-n^Dw+09?GQ;GtsY1nfF)l)C9Lipdr72o-QnU$6gNLX$IaabSW9a}YGF5vzY;b;F zCsRN^R?CGI&d)*D98O!113O&H*I=pq&Ml8;>J$vk)mf0^7@xFg4cF#&wxK;;9+xlA z1%Y&=*ri}QL}G$HZbL-y5?R|0v}e21(4%3BVJdj6nS!3@bu7OF9W<{9_!%=fwhgc^ z=?IaIG;GJTxpFd0cFZHAp%$99do7Tf3SnWESVKAYHx=-iFwxW|c@tkJ)xv1^h#YOD z*YG&Lg8M3YA-mpz#?#5HZ5-|9my!puQkWr*Mv1ZQ2ytg&X;XLsJ5V!_7rLV`iWd@5 zF!MqT3R`(042Au?;E%!=Wjo`jKlM8tj!}Zx+Z}0tKN~N9!Y*{Aef`?QMaVl?OgxPX zOXm23o3NR}d(zKx1{)qvZFC|#7Ed#1`VKvPl77jS=xJB_7JE@o_Xj7~1=)rocsDYNya zL&Iq44v`vx8!poMl>Wg!G|(AB+}tv4Hhq?cW`w}`+OW72b1U^_Zw{j)X}fpbf@qR- zCNfVB)dd%L@e%-wH`17ikD(M`_Fq62z_(q%OkQsT|33kzR}~2}kjm0O zL{h6x-qT~47oi7z;hnu ze*dUBsOkew6kT-1L=qy zZ(;*;=}=uL>RS5`P_}8|kMPEt2q4(jT-v_vy_Fz!Wc>o5Evu8yj$ns#X{_}J1)ct- zxAh=^JPM1RE8)m$S5s!!e}&^XP`Z5CC9^o}g!oN7A^SAt-6f zMhwoZ(U$Du^KzsI0ww(*yLq2h^KgP?!#P%lF7b61Wu~71AXJdepz~^e4<~ws-55#7 z7-xHlMghR5ar2Y~h>p#%6U5r$Jm|S9_FHt&2k?z@Id4#M8xXIk$zAvp*K7Y37=^dK%MQCTe@@TZ59~XES%gdv)+Wah% z8*jN^%X9QRzXI)_AEKnSPsDU{7uH5&vNn@S^KahVm`9VW&!glBfG>Cv1sKb6 z06CBgsh9({p~wdqhg0t`zb;e}mx0J{jP+G33(@Mur2uEj@^}bY8C12Hcj|~v##B$< zpsWyZ)!O$%!MO{MMMHpaAm%wter(%l8rSug^06u}+lnVx8x8ERFE%bVRDj-8)(s6%}S_j8Ui;M1sXnm zZJ9Vwo1!`Q94md44i|PkS9b1E#18^SzmQL3L_T_+bnM1kc~bJOC4$(nA8hAkl@V?6 zZj@4ggdD4ZZ{2X~fy4?}fWn5GB(i~HXiD20R6*Di0Ipd6Whh%QhK}s>{gar0!M-jG zw}mXs$>1>d!M;fbkNctgLST@LeMYMmrwmuc#!+K<)^|8<`{X#LZ_3GxM#D5TOdm(%wN5n1>jvPAi%VV%wvKUhuyqqm zEiY3B-M@Li$48Zfq#cgrnkcaxMhr2Zo1(or5(Jf;U^wRU;v&q#k-h;S^@Jnq4PJ%D zvN&mG4Jd0kWd}#rCbY<7M4&x9)Y2B^Aw;VB07|q(>mv=zb7*wDa%`BM zToQ>i%!Fc!*n600uwPZ1)4*Qu(H(~AnCwTRP4+K5#?%uF1h@zzYnVWTha5^nlf!u2 zBn>N=JT=FW-t`kgnlvx{D2UV&Ab&iWZ@txhlso7Nht6tlu#-4Si0&LBx6DoTHV$sHpg-8AZNRtEp^}IZK z5{mFzYE#K%YLepo!Eo|p(`#xblxKY?@*ai>hVgvOCSz)$b%Lk{qhp#orv;JUK6u|j zFfH{hAlUs$G%^1IN(j2@0OY5jOxzicXs!;@*emFxwv{iq%Wjhlar z%T#^Q&!o}?g5F+#FHf2s2G6=lz)e-sTt0p6iXelwXc|s|s%}4H)W(B2vC zK$gpI`w%)WVwb$#hfsSFdt|#0af8pf#BxAh?n7MkB3$w;AL6tZaa_*#AzU0`EwP-E zhx#xddP&a7y?lt*fXH*q-KhlPm*g+Uphxv3=qJwowE&m!H12aFDBJ~I*(=YnxI8cO z4|B4-rw{zN{jOk*HE1ihByolFT?HrT(T&;z7F^v9V>$euiA|h}w8S)UYxtZ8MIj|8i@{3qRbE7i$S+MJL<(5onOt*nf+P>-1%5kc|uyp6X6U1jV9nm&7&(R~f0NBxv z#d`d%_ULM$7)dktV?r=K$g$}(a{srh5R1n7zk`#pNn5!U%fz%ZXrzi4QfAOzeS4sr z$uZ%0j&$9lyTvP>W9|=4_WLRedx+7;Z-J52voj=Mn`Y4XF55s_(QpsxQ{7G!y}XI% z8&k;yc+F#ols&q$ZxQy@460X+f19xDGidL)N^B;6J;iR{k75`Xl;`j~x;~)Inn`1l zUI8Ax^Q1XQydBF)(i39CAn(5g*H@#48&QGTQ!|nNIxj+UO;6CXikY;BwE+f(Era8* zA3t*~VTXHwq#_Xyk1ikmt45-D%y^uFN}lW`iuVfqy+_yaP35F+11C|z2|cv%&kRi3g_a+EuaKf`vZ5E+8GFGKZN4#wn%h6z>b%w4k6aB$+wj{^TlZ8-{ ztWx-MrXJmAZxXh%fO>@PZ?G3<(X`(G*$u7;xRCMAmA=QF*ie3LoQQZQ{l;klVeBwM z_^CP$iOsRNGqSt0=vp;7mo1j9olTDjfHkNjSVxo_iWGf0i-mX8#I za`4HoVi^0;J|}7_-z`MAs|SaM$A&1(?^orc25PyJ0fCiAW9O0i^!YSa&u4_eKbg;0 z&3=u$?5$`ls26cvk}o7MHlN0)DpZ;jG{_$(5He*3TzDdvq~sGmj>%q=Vv;^-K8vFC z374H+olnz+ULx!G1Wgb^GnwHDni8>X1-cafXnxWp{aj@Nnf&!ow(bcmGd+U^nGQeF zq84ZO`;m5xZo3Wo_vZ0Q23?=*@Jsx2A@Mz*Yh-pX9a-H@taQh;F} zEuiz%DwN9N7Sc^rs7Pn;E~2?ze_bMo4gbO9=4FweEN!)AnsdNZ*9Vn+>Q9n(-L-o{ zExOH`tQT3#Vww@EdXbPlVU{79(ZAS%Ag%fXp}I7v6v-v zpf!NOeH=Pv32)N;wF7ThEJ5-OWH%coVI8!GG`|A(35q21h^0f5rcNOVmrsGD$Yr_J z&!3u`&^}%H-&;*l}LTld`-c6O6)&*I<$6c|v1BW6-uWVvUP80Tp7{G(9R; zGHN$#R_|axFQKbb?!5ppa!V}H=8!6pn_gFNa8L1?VI0aZqgjZ8*)vONd+V2=&OBlc zhOD0}MN2G18I5*t=d&4bzAo&7fj}8N#~Kbn^jeKSYSiuTscHC(8`1is-0mKV;STfN zQV|j1?R@see#KDb?l?Q(_0B95#OVsgD#v(HCm*23<;&SPGLU_d?;+`1HJQ)h4J-%D z`ZZ9=x;ShQWoB=nuXkQMc}byMIGFc6uke_f>O!QaY?1NfqjrUI~W)dtXwyQU0Oyvhy1tzi&QeP~a z!8?MJrp)W`DOsqw;6>b7a^PPcMCL9-K(%?C{Zf@JblNsT^!6{q+&P06Swy>sT9Rrt zC!fHcQo4VI?)OoHOJWHtXa^y38ymU;0pLa;r5`-H8P8*CJTfVn+o(8%*3F++c*`&$ zxB3@9Zy=kIr%L~K1>}@0dkmYAZ=6t`Cm9b64%8MM!X6nMWQliJ%1y{7%kM{GZye#F zPH~;K_(QZdFixV@7UuxUQ;^TLdNpw$mLRuaP9}SnnhR|SwPl^3&pkr%r?7BDVdc2z z?@9epxmCl``2qJM2$YC&qe7B0y7)KqGY0J;qbD!39#`pH?TDlNn8AS`o+sgbi$&%y zZg54;?Ru2f7=gET%q>|b=SW9#B;zhqNt(a>UVmIM9mZY8O-7Gfr`Q6ruySo0U#mal zk8!1I(o{RK541%~;h$jKRj6g2(>^x~Rb@W#&h6!n*bWVoVY&(`^+!3BBSrurt57o7 zzxLR&takJz7F~|^P}XV`jYS@9Q4(m33q5n>hHiv-T$TX)m!1YKkcOt=ngDZfjA;Q89@FLxaSC!u{HYdbj~^7B0MeXX^~gH(xofWqYK zt(=MZ0-~-1j`Wx}U_Qs>!$4xY)_3Kq&=%bQSKB3O`BZtaV=An1&lrtYm-+MKH;b?d zSfgX~0h7bBM>aq{ym!JVmO=73$ZT)!Y>r(OVsF-1qU86lV%Sc0mc5d86qe<)Q|oCT z-7&0-$uYVdQ$KF9w|LgY$V;xWcUMwFyoJ9t<4s6v!+ltyM;AAlbLB^J5aVWbeU16A zqM2>tI1w_tc%34T$z+eLqUoddf6P^BvDpSuD0gR`G`iH19e5PZJ`BVyZmj$5>& zrE9tNdmc-Co})0@9kW?wmjegWl`=<~wes0t*cYp4r;H!EC`J)zvLE*}?7$=+D0Uc} zY00_+6#-bP)Vdq{EBWFhD<{o$$v1Q?c{S~xJaUVo;{y%;Xq4Myi)LNH!D&ubgnmH> zq+cYnfK(W#V{fdcnZn+I?0;6%gtjlEkyA;mnKRI@R373`#_o<~Ds`l9dQDm1u0X=VES#41XCfR=qm;#GRd_{-*L|btykCkL9aaLIPW7t+#F`R9fT9J0t^~HgCa)5jHR1- z4lyiO`pR}&ZRuS;ZIQ@#k2ydl@bTCW4>0f-c=LkyFUI5Yr)bMV$|FBdx{h1iXsKm> zZy1~R^;!2huwS2t&#;f6tZUh{OO^9A^ad1hYnnrAU|^?xwWXpx)ejTgP<*^?9b%(Hzu z`*Z{CXx;KJsEQ00%<)#g`^PPv+`)s@W`D)rD0&o`#=!$HKbQ6Ak~_1aaG4 z^muBJCK;p|j^4}tWXciV_`C3YzVD9Q7j3pd{;QtR9#VOdKJRl8x^_%&KG7g?9$#I+ zl-HEw_JBEI3H+s7@-j3u4O6Skd3=B1i-0hXE>uFhcZ2ljH*WcV+Aw_)jj;9y@dK5H z;#BrBj|WMdi0rCp3;tjx}0|HXl-=dyd zec3Nhm0Sn}E))ja;3OPxU!Z{(gS16e_*6+L<0Uz)7y@3?=Q{F|!VJ=P9^L3o>}U~9 zO8l)JQ|y_G7sk=<&bfFij&y5`FsdlwGpxJr1NaYMw%FtavnQnAl!mMd-!tD z@-Xe;OJOU55X`^oXPHNr2V^J|Ct-nF~s)u*cT1|#`F>X+V4(@PtmXzGz8!54K4G{xTGsf-Gt@$^x``W$ILAVT&X$3_ai?i8WX)2lC40GE?K3i z3|5+M$>FJr+6U(q-oU+&4@nO5>ktoZ5YtS3PY?}C8m+1bA(o-mPi>Uu1sJ6#)e|d0 z=2}49qbjvNX0_Hn3bzqnZVDrX%EvAAZ*FgRxdpaz8>0-3Yhn99eliaan>^J$tTMvK z_(_GYxoxG+hnVgis4Gr7#lfjG|JpBzwN?_8BNYVXNb~X9LJWi7^+1${tB|y^gRg5R zbWJ^hy%kxR=tG5hxy4pMJBS7@=19LIoV|31_ik)>llSiGBfSERS0GH|F9yG>?Bm03 zOHdHq**b~#m>vET_nNit5sr07bEFG7(y#b%0CLEE`9a9nJ5)NKYyZk4H^#yQJNvZr z#XdpgGl!BXS1?yiLlmZvYrpR?|3@yw38x%KVZB)JX4+4^2pw4VW~9n25D0wD2zNBe zz&b|%Js`)+wC2&D_-~sy8?SQNbY@(HhaTRf?HX5mIqf7KQX7*WM-Yf2o{a0(Bn=j_N-1u!GyPT@4%_Vn5wTL znVIE}ift&h;5#mBSi>BwgZ#l6_Q`Yfym0QjvR6v!G%9G;vfECY8~HZYG1v1Ij+*0n z_%=zZUG6VW|CUX8o=z7|>RI{oG%;}4Q;2h4gfJ{{8(vhUJ;lasqdMW$r`Y^$(8~Fz z*bWX44q`{Q(S%1U*I?H0@QQD4!NJbGsYiG9Z?trqpF$5>=7RqO3Ar?12w)hGPt%kn zdnZlc7M8$h2Nm}|BBQ-x#_kqG&xu@|`X+?7mK1|SR2wRJ^Ro=el}^1`B_N%~ZZeu- zY#0bx92NwS>yVQkeNs9i|BOY!;zBw6rc>`O;5W8ie5D-g%H_e>NN!`35&43lNX6^T zneyvw*-rXI){xc8wEFM^7ptg|SM%UfI``lh;#1{PBgMDCORJY^6v{_3*{mHjAzb_? zx&s)n#+@|D+OqP$cwfr+C+{n;<4-}<@FxW22eV0P@v8L$V7;dxNcM7)uUknRnt$;+ z4mWQXUpsP`|77v9^OG8uAJsQRl9&Rw{npKFBCK(r>2;qB3ZzYd#;qJai;aR`KPTbW8@G_#G$i7IZ_xxxPzcPtdQGlRoV?Np!#4` zll_;whH^e0Og>3E=6IHiU@Ccz14q@}DpWFWE!P+%;$D&~9k;sA?M9Ob9=K?fW)-GI8k%@aYL%KNm~Q<7eHg||)#J3KM@*T=EkW8t zbqF4c>&z-#vZXuaoIU(M>%QSNXG%Q+%dlj8| z2I~SRc1*Q=rpbQwuH?d}v9wvL);`Y#R!(EB@w8VrS%_FOrKkT^ihH0Oz@>(7z?tOk zt-M6|IZwJ^lB`DA`~LGNZXvk!%kFk^LRYS}q$0lD?o$wJ>Xg=mPK#o9_&U62PyJAS z1S-xp43_%p8v-SesnO`0wxyK;t@mMm!QPT|>XH@(u%gT2g?(?hHMQy0&s8 zl|r|pWN+zdNwncR49j$nOVSi`F2^*_18|{u7N#Mb!o{DkWL5UWh;Z*{U+!y{PsKq9 z7|WSsnrz@Wg*(Djl8=#fV}Q_B604-?ffC-iCj;Q6(m()%-80Y}mVS7iij<>zMXAarcDm<-jU)<4g@zIMRqY-JVqnG%G?hf#TyZ^w8RM{1w949RXugg*_un)4H%^qFOQgBxy0cQT0 zE*55XV3&TTEh<7d(e)3nJvy&Ham7TMw%Hvpf zmuCkCY0hs)gcIfqnSVgVmf>d(b!g7Mg17&E7QYkj!6)2l_IkBhb3(fB9(1C{+wa|n z`@P}o7vjJR6{TN@ThnlNVU?$0cp|J8z5S*84N17)*G!nr6~k|q(w#Agw1#;3P3HXi z`s5hrA7#CDTE zMkk(&ECdsG`y?fub53anF}E?;OQ++3HI)QMmOKd*u?H zG^VBop)60+JK{cC2XmIrdcSWmB%C)#J2cM%C!GmaU_xzXqqg`h7?QF0^6Cz`g-5Yk zhn|0Ewf=<)%ehQDTW>u9!AjQRdg6FtHJ&Dq%RI!Ewf`mP$*le7#5?3|xW`ZrW#DEVnFU>QnHM^u&w=~O4prM1`=L2?jp;CFa@%AyBfLsRV<^SoQ% zApeu&FI`ReLHo1^5rs5nAje+r4;0DQlzD@I8QGa#-s50}sL z#;jQ0m|+><(9KsG-96D)Fo$x^*au5-K)9pPL;V2tDo+Dx`pdC=z$s0dnd5izIYzq!n>5~HicjWVT;>d02A6pcr|x0Ppysx= zj6idUEh7jS$+IqCd;V{s*Z$9rtF%Yj*Uw?(UcS#?zCZFyB3HRcF+up@K=icQsP%%Re; zhWrjN=%z~cS0gpV&cqcQHWORr@tmmH?2qJK&|r-@O@6tO8Bme8RfFXphN>@Sz6#FBJdO z#T?<#?Z@@NQ2Z@_ZJmP_VvgiSht$U3=T^hU7=m}oNlJ6ht-73qi}DJfl&NToK7*X{ zr5Hw=kQ3_`!(y9omh3}2?zp%My1>h^?qrT5gZt}t9KY@)$76{>A=Q{g>6kau?vlU3 zr1{e8_fT_Stww^IMZlx%wMqfwNaqngeE=e(v<~l+=PT_ohV|=+2d&S9)M_ShR6`Vx zZlM`Imj@mI->9RB!z$(&?w7R<>GUGkC_W(eI`1{H?K zw%Z8D;(g6<4IFckU(Zu%)WEWxR497nw^x*9H7A;G5qyS9%rS`GhL#8-{+(8?cG%~S zl)RV0uORp^ICuRqUUFApapOQSsw5{FHwk(8Kd9uGK%sjKC{oXmQQ0lgf$ zp!q!ZP$6kQ3r!B)8;`T2ZG_Q6_~R^GDzd`G zer&o{=+I{WJdB<>BESs&9h=Xd)e0GLVb2PXcj|-V)#S)e;SxeIV;^TfX@%w8CKzx@ zl1@l}^1Ol)!XabhoCsdNM2-@2L_dRN^|TeDfAfJkU3=mtEGqYd9Fp8*2v ze;&Y>u;RMow=HSiU3m%q85jaOxdefbWV|asahok}Cv=RqfjqbHeop2MnA6jog(Gw= z0DH5Y&?$KWN|hoeYbrdID}ARp5PCLO`d0n`Ym6RgoYW1{?0ai5ZjI$Cf+g>FcfL6H zAsJr8Ckb4J0X`YF@w)NuiJB(OnIiDX4~MmeJkFMd3*FTlIc8V5po_rpibIT+PmaS9 zv~^@1oX1Xt3rXs9PIEn6=oE1%kVgQxXqg2^f4r`(livy~ONkKTXnbdk(y9rE?$ic2 z|0DQh)tkck*H|`3Cm4G8&BmU?zkFNQTz&wS0@F9*1&7^ZU8RzmYqXyogFD@+Eh{3= zBiq$3Qs~0+BZb(mY5d|0idm2KRTP-B? z;~%gtAkv@6e+R$>IAe&Sl@Eae34A#WJ>8M=yS^$#l?~MhaY?qUeKrA?MoohgSCe39AZYX>zOO8%wJe1WXxv$1B9Mhe!oC^7*j>g^-yxk^CX{8>Z$@VoA?zFPjZD)4_F#aNJn1XC!;Q*KHOC9zdmkxym48aCwYxRKuxx6o7!aaBtL<=Eh`f9BIPdJ7tNs$ zmcnFr4OWg7TUOH==x9Z>FeoHsDkAbJwyY01=5Vx-r25oU#V$k(z1j@qJ4*Qm)S;O< zwJa`1xa3#niVa59E|Ja93sY!ER<0L1Y0`aD@}8hcMmTb;^oO-d_w~1h%IXl=!m&rc^}l9YVyr~b4(86?g;%7+au}1Uvk+@ivT7=IM>Imkun;>MK;M zVgv9=ZtppBSN0}m^BVG`WziyHSw8E@IZGC^kO4wUSoW~xYnGbxmp`%i3G)*x=dLKr zA0V9dXBk6ZyQ70Y$(q zfa3wDp?yAJ1p2K3OaguruLI8jLs0(^@G|O^fF}XJylM4#wxi(!5Zi%h1XQDb7w{nJ zdVGy_6M_u^d<*z#fY$(*01igG1XzUntAKX_s{wNWe*%03?SBB80q+Cm0iT2~<2pdV zfq;3y=UP#?ivjq*l79sR#enajVFzFc;KzV(0iFc>3Gfo&ctHN)-XcI9-luH=90s@@ zd}aX_0dD4az}=A^Xm|wB3^*UK2N;(EehYXI zFa(lc1XKfRa5&!uJ{IsY`lkSfw}77lI3D#?fHy(!1pE~6T@HJYexw|Q zlOX&Oa4i~s2Fw9$08|5d0FMI3Ar3kSy4>4ke~u77Qn3!JRO367Af#dWPyX^Hg>zS| z$Y1{C<4S$RT=Rq#bC*9dYw_Gkr0lai;ddG^&OFD2ow|t8M+KdB^sJ>5pP0Mq(Rst4 zSTxtTnr(YjNDUn~*F0>=lPi`inma6?u+V&AqI%KXxl7p#`NFC}`rqM+eLus_@UlSq zJcOGJTo`cTL%8&xDbW)Fn>NmB`}ObsoK5L})pz;oANb&>K6ugxFZy7k531c>evv-d z#|LwKaE1>q^+GGz=tI2Zg9m)@3m?4fgSUM!nqPVF)7b~JeQ>M~F89GrKDg5d_xRvp zA3Ux=EB1vCA^Tvn4+h~+neZRI4-WLfkv=%q2j}_VY9HL}gKzoZVINeO;Zf=`$N_oaBPlNK*DbEhdv%T`vE6;G{nW#MDx^NC@#DwQnnvZ9tnm-dr0iMgr zQam>(&u`VcP!!pjSl=htc*%BPj*Q=}B-bg~Q2Vajv2@+?(zOgp9QB70Cir#wH@l%u>~c?J+( zj`ruzeG2A1<@tf~%pqfW!~05QTo+z`hScM^s0)8O;pGjaFNwzU3-x3?8wh_|y71>3 zavaaRF8oOduH4=q%4W<|MX^UG2-(RhoBl%;jTreh4Y1ino7xs;L&0WKZ?vf&bYTB8 zL3k`l&=0n!L!@vZ+oB*+Gv-bQgdX`SJP$-*y zJ8VLVYF9I1-EBg8PU|1@YK3qN$`5yY$O01m%ienHAME9&iHMLf|h z+y$J7&L2M`ZX>P~XZ;A$!t11M$h9VF$o2$c8!O@$SJo&nXdDItY~#|xl+I2e zBfBMGPG_f@*y=dVh#<0E5BP5kT0cl^xez2)kkyvvdI5|Bfonr5ZmLK(F3@@ee#&4W zU7Sf6Cma1J_;lcOL8Rq|idgr7@LvxI^PYI2aO#g+thSbr4}E4b7b!Spkij%}Y*rJ-hqP!mCeSp6B5_;biRm{E%s)&95(Bg0`cMg7Q-|FftI?xqLA!((2 zy|dH0Irl@o_~0t)=|bZCg3k<$FRG%uJq||ySfab#*sx+DYv@%p)DIvn2)4ZH)c169 z1};C$R&9MgKAK!#f6p^snT;xPUmEBisD5&HR#hzQ9@HL4KE($O2fI6afC*7Ue`>O9 z_X7qo`;fZ%n?YC)_VPv{HC)ljsUFSe$M*4o~RpshP~XIVSiR|?^X%Ae|WTW{hVh&$J;;lBhHU8*ZS?A zG-ZA_`#Hb9%lelJWBm)@z6lP7=SqdsR#Z-r`Y`A2RR;d?PK8n@ZJoQz#1_F{7c^3MUM#VB+t&=LH^ z>s8+=^!06>yN;2T0N{5Y6I*tDDYm>Ku#Ve=Nbe*`M<O^cRN}`%FHx+e`Sg8#mP5Q{gglG@JdnU5M>=JiEmv5C?avdjrULPRkEkvk>9XV>Y(2 zLzRByWHyU`L5LiAD!TPgI6mXNu$f?jH zrnvWXDX|f^L`YPCV>tfqOnL$ za%LY)c52X{Z=`7SgT;)sQ+A&TvHk`wU1JQ3-zlV8lhNUASF)2c>WngHQVRy0VbSGe zCuhi+@lc90`->k%fCUgjPszdAl$2&8w?@ex!~@jPDL|}%*MM0FUm{&y!BtIMGs`*T z0vD*s>3E|0wHiC#Mr_tPzCRN5wwJ6SgmF*AYJGI=6v(|JP$@LWo&l*q{=+!TQnyiLKoN%ycB>DT_UI4XVIyqn;=z zuU7@`bK^Z7_YU>2(jXG_(GYMS?)sBx3 zBiA=znFRfYm$I=m8_=g7TH?!q3GBZB&BkL=)u7!C&Bhb;tcCMYnSCU_ykLG(`Ata3 z&&G1h23M_pE(n9rsgC=TR-w4$d{+Dhl;WG!Owc2%{0~)AECc?aQxw~>Q|Q1Crvvn| zk#E3K5{6sk3X*A{g#R6g#)NB0&Wo7(lSF{3-P%Rd7lroJ#fH5oJeKUrj4vb0suASl zbaBo?oJrNL%=PU^#n6MmW7SB2i`Bd+BwNcdLDwD6!JTN_-cGD|{a0^LfIzTYy-K(5 z0B^_5s{r>FLR^_PTm=g{iWLL_VL?YyQ4ou%!gO{C7*r<9&^}&|DU*;i=kr|2{-0_^h?TI*h|8Ij;>5aq?@4p5#s-k>wyiUp2^o3@Y56E-z9QI!nSNzWSA-2z*s5kvU4@V9 zhe@vZJ&C=1Rd_)-r77zx3&W|ETfDM**kJ{#<^eGJZv4W!8)|_7jbx9J-zXHp3b4Aw z2A_faf`EJKOjkem31w|?XTAK?H)Q^W4BYmX?E;Pq*1EGM1dxb_>wH44TiBh!A}jn= z=%P{Bvgdvkq9VK;_|`dxt2RCx-Pg;X9sX5_Z4-j%pew(AW0BAKvx~n9y{z}(a`AEq zHu%{C8|2%T+aXu!b|D^q0So;pS%%y5`1o?)%&-C+XMm*mXvz6PJL0@x<-1C^ua-w4 zNNC^`91o)za}g)t?jw3f0u17fFZ3DP+l4s`B3&79_g2N2;jT0JR{RT>uX|6|D2@cC zt0XrrfFT!~@L$9Fz%&hNJ}?UtNFeb}TocBU z)j1UjVZ@1mZLAv#fJ0nXAN6|dy{8MSA9$?FSwDxFPgjkNg5xpz@Log0motpOZ>fFmmheynDaLwsyk=*4Ons3BqiO6e=i?Z z&sPmBxd^Ruj!em6-~1+|TNlAR_)-=?>pP&`T^f>hNFW2IKyHG`u0$tSBADT1e}=cK z;VXbslzA=PNqS_rT#X{zSE0=X*TrcmXcIK>FHmrNSbSzQob#nFq9VX5D4X|<#EM;1 zMUCH=Fee?_kL<;*S+9@21Fyj&+%S^4fDd}x!v!kE zb;F7LiqqC#U_bt@_?lb43yD^2T1@&t0Td!4@}MyFp)l)u%va0j13&k0_k#Wcg1Co| zyQ;mEkWx;=oj^jLcGxcQ&I?!{;11k-x_S>u%WmNZ46pO`6$u%DZ5Y9=wu?f9jzr9E z`5c}29QZlSJMvC*z_`dZl-2wpbQyRx<8?TPS&*$DKy2YoU>0~Lf@cEO94F?2U1&S9 zR@`<$rP;?X$iWzANfSKU;7h$IkT;T}Mz-X-&`ASs5QCwpLvj9y3S8e8B=E(-ZGwpdV}Vr;w7OKcEC}yNviZtlkL0fJ+b;EuqvK(D78|Z-22Fe+sc(F8$?UJg=bM zWH@ZYej@Ai-xiSO{%3*bUVbjbeH-Gw{wKcMx|%T)s@(-~FR9c@#`H-)cIHo^N5tRW z9lF_fi8LSj^e^_v4WXm;12E#}_hpr8pAGY$4Tjn9?kX&R5#GJZrB}RrHWsT8-aUK% zC1n&5Lbr~Ri^G=hLY}?ogwy+B<8lej12DPL1n?BVvlDn)!7~tk6(KQm-w?8}L-hxE zRCpCJkqiO1#ALTLK%ieS4L7V{3yz)=4RSQe-W%~1Rq(#cs-S(B5bj)51;C^D3QH3^pBsJ}c>g_uAgwESa}(0<_M3@g_%<`49NIWXK#Fx=OPYQY6)Uh5_Q z2VR6uTpAL=!kUHH4E=!{2rGG96b=W$O(g+-AmL`ZQg{>LQ}}3pK>~ zxQ5Mc#^n?L?tC-22vareoo1m|w>I$N=a1;!4X|o+A&zU27 z>^5G*?xSC?lQ%sK3D9=<_#w)LGJgTUPk%lauC_wVhsW7(64HO9h7E6le=+bq4F}3C zi=P}cl)-RwRicokjP84O% zchj94z-t$dwDXD_75`WouA4jENk9u%R(tHHKU#$LZS|!Yg}t43yiVd>N-xe~5 z{HaDp#$V*YW!fcGRJRR6Vh}%Rpp0&AoFqy}gGt!@$oTCLI1z)sAcz$Pz_V)h{B11# zDK-1~wh$Rr33@(Z8zw?1>8}TkzOXk7z9S?E2h^;)ItkN1QgVFw7-o%={VA-v3@?hEO?vw3$C?s#}3 z&El-@d(!wd51-=j)aL2S7;-%iJnswrLR}g49#6U&esE5Ni+yrmFtP%bD&mkwC{n$f z6RV;uU#0598t)4sJ3NBAtVmF8^heM|ld_pMNR`U+f>g_`@P1e|erMpGfMwp54jiCu(!pi^Z8>Kn~|aQ+2F z><^u4P+NT?IgnFv8caosa)6Nyid3bA9!MxRwp6z=SR1KI8f3>=Kid!f_OAaj9CqVp z2{?Z5KJg9Wl!c%i&->5fuPO?PV6wi~N}OluaQ0)Q>Rk1wOP zqC}*i{R9^J6n>|1dOurT*DPCI{y-bEcToMLK2ZCLkrl?N#$kdZpD?md;#A$Cfi7y> z*jm0*<5ca@QkycIX*;S$zx!54mB{L6s1n;=%mDwi_?rm3u@3X*Uu5AkRsRoHcL5Yf z7d;9dx8Uv)2<{NvHMoZ0Zo%E5ae}+M1$TFMCpZaC(BQ7y-~RX2d;6xU>(}SpGu;fM zJ@@up8sZ(EO$Z2UurEYC7<_<(Kf{Fge{|&Q89-~1L4!T(|BWF4d)NQhFaqTNU4xgp z@f8X$_1OSg6cQ>`!4Mjp2qP8jr^ibTF$7c4E%S!Z{NRYeRB*)LOAEXy^dMAfsRgtW z95V!q*LQ~&BW|c+_*8#kDAQD32WYGmXJ~vVo|IH0V<@adbW}Mg%al|vXJ|3tMjxEq z0epH?8bFEs_bYDLhEO8xpf+GE3+e;Lrl6-_oeSs-XcXuT*q#E4492yfE@0dbDgnj| zpf;d;pq!xhpuu1}B>2XR4aR7oji3|{;MlxIuz?9o=zpV-1;)jooM7Dms1N88=p^U`C^jez_}L{2looUWtQQAm z1h20F3Il2e`Wwtgf>wfY{(mu8UkiXMNnpbaC?l9S1r-1bUO}_Km>4{}juVVIKy5%} zLHEGCDd-F6f2ZsbgZXk$MsPc$|HYt}pj4m;FW~mTI$BV9P##bT(Eq0UaRJ)_Z*V0T zT*(5}1sj?`VL)d(FRreFa(C^Fa}3AzC8SQ#`4)ErbD%m;(YgLSoU zsa9^#hW`!COG#~Yhb9IFQ^9{G#Q$8dK^VcMHtqer7xMp0g8Y}402j>+@Mit*^#7X& zUk@N4GQpeuf7OF8L=d!D;LZ8J>cLNM5a`+9{qjHc7XNSae>*4w7oHsOj`+Ve^xqB* zbKl=t|F8T4nE#OnKGgq@JUW;=1sB$W|NkF^fcrns-7QEgF53U^8*Z@d|9AOc`Tynr zYW$yp9^kNC=KmQ;^4k-d0D#Ab48>279VRmC+a92$&K z@Nvp8^TNojGHWDJ=J>d^s^i%)xx8!L?BuMxwaSLI_Hv91VLg>!h^uKVRL-!0DxQ*D z1k*&`u-cmn`f;WGrK6mohu(AJq-Oa~O^1Q-$^k~o-`N`;dVZ(UApjd?Gr4U+NcWra zCJ9bbV!i2s%bok?iu-#i(>SA4PvOGDa#EjppG^wOGt-zI>l4Yo&TE}|rqb($(Uc$4 zYVK$54>N1rPp%e6zwhVX;~cH_uCk$&nU`-!B=`Hy$xF2phLpm{0t^(QQ+58X?rAj~ zuVb!|HO>g~F6N*tZUVRWg71F6Ha%B2-S;cC_Wzc*Juf_jZb~l_>H*JLWPt{3FG9Ij zN<9k^=3e^V`PIg|6O<>8HPe;vIeBmAVR7Evr0>f-b*8quIEcaY%jO^Rw}c+X{Y?WI z%zG{y_l0;4Zk4MPYW}{j$u21UaJsazYK1*(}S_Av_ivzZ0| zocw#iaiSaGI=b}bnm#;v;YT2?cE%L>h1|P34M+w~JCkQy{6=KCBqEg-uDP=wQVj&3x>SSkle8XMl zvq`?bzc<0J2?e?YVuB0F+&TtL>5}+w;+=ZE_~%TAe;t^&C&Vzce@|3d7|7m*HX*p%L80=V75jYWVFM%(g$b8 zM@U``1r%JyrppB>juxoY{_K|8oonmES|FFUco;5SKaq->u++)4yh26{ zJ{O1jhU^WKDUU)Qi3Lv&J$g8xx>wFFG|V_^C@WoYccb4TX&w9K? z;K)+MSUy?_j)=K>iMVqjOj0yB+Rxcvaz1H2cD3$Po070@AcG>=g26-g?U!tnsA|>; zpQGs|m}W;y5J;iu4^i8w11^PHU4A^lVgZQr6|OZQ=4)kOm5_>k9BB@IdC6 z25PbADiUi|D=41vDdLT77#G1jL4Icbw$~Q6_{Ul59ZxR$Z20%xsMrLXlu>On%nr9i^_HSpNiD zSI`^piXT%^p9Vd-5pKlY8EG!5`<}6w|6y`1jnVpfGlN7i3Xsh z{jS+N2*el_OI8Nn$^K>K>_;-JiMCYGcpD~zdCDlgL%dPw-lJFfesnA4y6c6@;*oGE-@|vl-&(aC^<}M_#F!Y_wNT0 zmp{fyR*cox!+*w|GcqLe3+a zvePS_g_ojT2seFP&WE{05~2j~P{4uVlawVNtHCtaN@)G|6q(4Jk?Nnf&6~#`(!a~b8WZtgepR8fDy^yGTf54k{ zMd!;ZUGFenmKD_a*p$`?q|5uu2MOb#Yw%NeHcyE~uj?16Y}m<{$e$rR1wN9x!pu7s z3mwo*++LAg7mo}jyi4SM6EVV+t+}pthcRE3HhwAKj3?ql{3h6(LpprTtnVKyx<`^8 z<)}atk`NFD<@JbVcgr|_ffS2T;l7Y)*W2#+&SW>5_9smteu2dfz#sk@okx1y1*;Qf z_yKMx;5$0DnuyVg7V|~xMsmh42G6I6F92QXxA3#3K=V2HN%91W1>WmMM77m{UovyIGN;^~@p}n!DD=K4w`I#P&)1#rdg>FINdD|rN&-e! z7pzvS7BCIy1DLXPz`W50y^P%g6#{nt4HDYtxc*Vc3QGOBZ@GNX1VgraTmf24M4}6i zWwRugv?G7}r242nIVfyVR8lKL+GpV%ekj@ty$hvFo6W6}mZ{Y$M+xpy4l1AyEbW0; zv6|Tm$V_)}#Dvv7BbMLj#`79PTaFM2;<(;JAWdE6ZZgR@0M2L?S)5~siTY!=uBn?$ z4w-ut{Ght}>;U2lJWewYcA`l*lm%HP_$L%vi^PF1c)arQT8b&GXMgUrpf(cGjk15X zRHO5#Ss%-ia*=p)kZaCI8nS<&aR@tL8XU7ptLz<%HT<}3$|tWs6plju9+e1{hAhvu zKJfQ|%X!8*6KKP0&De15^olMei@ig%jy1AI=?ZLc9i(TYvO|bEzFH%-@9IVci z5AYPPFnl>aZE?%xd7R#uN0@PjpCW~Vr$y@_r|CIzVt~}jw8EoKlZT)C$@)5k+KqyU zNVG~`n3|*zmax;ECLYQ;T;g77%e<9Y3y5f<(Q9T$la^|!8lCjBKSuV65$5u|`@epq zrNHaedyP$;6jD+*Xv!ayG-r9lP4!7{O1nMO{TgP*Ctzrv#FF&$^4Xps?oDB-{H|F# z4#IByCam+0VtfFh*Qn-yk?wCJmZV6N9K-}vgUl7GC1hr$ukc21iz#Wfk+ z_eu(D9tDq$?43nNkp82IwbVbc3XLRUeq`$F5<0SEjHUX8^wq198AvsLFS71np&u%U zG{;DI?Fb%oQIHi)_@;w8pb?%JEH^`4kcj=PX1`79@3la^b8Ufur%<6Zv9JQfapv)sz>zV zsEV3Q%2AWbNqsK}njPPIS;~Y}xK6L;AfbYv<<%Ocl*j8lK|8aC)2U@ zWc@HL9evn~&+w^stO>a~~i zm!`~m{4%;pseXk3TAb4G1$Z&lN~3QO4mN6>#A{MA+pLQn_L&W7D1p zn9+2x2<7Am>QU`wQ3)`oJ2q(;1LJA8o{VU z%5Ak)QOC3F@1#({!ijHJ8Pl^SSs;ZXyNyT*$)jClOXL&o(QuKhAfRQU()C z5GOTZc}5o8CSKDFCgSMM0c)!C#E8MP@>CqgCed4n@W%ker_X-VsX`IZgn+Q92)S%% zSlVD8f+g#BV=K=;KQbx_0|l|%C)Iy(Mk_pgKeQ_toOFpa)%Z7fJ7g38sSHZN&7?tQ zxNLq(nZIeS)r{9D0a2d5<7@gFr(qJJ4E92BjBwYc?<=V=NttQ6o5A8g@AI~U-`>-0 z2j^XP8aCQ9&bk6+u_E?ZVQ&C7Ub-B;&to>{>lagU5y;$GBWzofCZ$!6r;}d;AUIALG6uRATWfFI;Mn^AXRU`4VPpN!_@-{1gf>|9mTd4n+Ue zA}URQ2b)ih`@m+&#|b%w;6Y$%U%aQ7Epzkr(tp)OFp~G?+rW19#l}M)TL1(81`*5q zKJwUrqpqQcI?E;|EjDw(+lx9<)UnTZcQa@|DHfCS@<>VD!;cp%2#&r3N7#gVqOZfq zV}|?Rr)Y(5djTN{r-OaKpp*6E;GG`2i!XJ8m=BK+JD$&jh;Wp%RB#%U=y^qbygl2i z7@q)wz8#_}!pmq0%*4p~?;qB#zmYSqNxLU5X85#ua8WI^B(*iA7M`f%)3e!-x>tGe zYPp=~H)sCl8WH2R_RYZL#~vMy+c7&x<^^692GT(= zdNzAL;zTzGd2+`=Sfho{H!SOlbNw$~bFB0izLar`9Z}T7b|F*pVS=c0hWRU(90KV^ zz{m`#lJU!p-e68^_ipR-Zc;p@`(LVw+J@bqWmLR}#r_yq@F6#Wg>mlqzN|ysH<-g+ zY~AJ8HHpM9xw#@hXjcqh(2R=7%88~GYXDj9uHAsv1z*JH{mxV3M}gtC!RXikc(>)I zk7Ky=(brJvOjJ=L(A|?p9EZe@a71^ls6Lrrg8UUAx%Q{>!+p1F+g_v|bEgx}LkPRh z%(6aP&du51iHw|*rkxrDF_U#7Y?&eLc8HKcKdJm?+C3NtmJ(;#Hr;Lc@gDGRHdh`* zN<|TZgIfbn?DV#-%*ph3Y7vgz3o#HE_<|DOk(=ZD&f?dc-zQrLS09AR-bYh_ z@+Y_#g+6YeG-JNHANP7tAMa*y_5-O;?U?RLzj>6jF&!1JD4FS9*_FF%{>x_EKg5=W zw}{k~8-%i|=ccCU@9d|a84ho6Q-@TnFCdZr`Lk%8qzgZ_FBi+@V^EZ^JosZ1;^N-2 z34Zr`bPmwJNtW;WLpl2pkI9}{E8HMVG0hFLP7EjlhIe~J5d&FOY(&q-xRp?~kiUyl zBMHcUP;m5FcqJb0AziqN^IEHH;)xB5TxYma{M|(*|Ea~4&!oNk`{+b!=`aR+N_AOvHqiC zz;`CG`JwWy7mV;d$V&lILnb^kj$_E*`qoDPA9x;nW4$kCuYm!Im@nB$thLp_Xq^=n zLO6w^9!U=Yooc@uqdd!_c59gwray=o8{l0}sAq^^vK^Su29G{bWw08@N;+bXGt)f6 zZn0)kPTCt12fgXse6D@hJY4B_f#^~%$$)CRIQqW+te4SA=rL`g+B;a>X^}rUQ)1f; z@aX9We7<N|56-49szQgx#eh zf$v~S;$g;l?jW!mxzUf@Q{Pe)yOV4E_JNG!jef6k*f;xQyMb)H815Fo|0Z;Y-!+*x zZmMXEKwSer0wK|vH~)3MYFX|oM3^@Mu<G`?`{ zXTF6wz2TXi-D1hBZ!P^=U+bt02&o@|G<^)Ryz?c26^Lu4a6ZkA3i{=;$I!d47`Kew z{;ejI^vc&}gx3Qd_8}co=ztIBt^N30nbs9x1mGqL?H^t1|NEW5_$c0s7Z92ai1JVp zJzIR}9{OgKi+NrlCaP>WDcZTI@T%HbBRja-H-JB2-g)t^!rZ?ZuRa>18Bc~cHZy6T z*ayEmf*_cKSHHFFjvYm=!M@HQCb)(5(W`-3gfTMlsp0mguuM^pu+FGnbOO?Atj4*P z5z+%@aop#4MRK7BPuYu}8JZ_DV7oPdyDbWu(wfdCNsic%>*~kvxj!_s;kteNTF`pM zMedCHA_VZ$-o~?Qs^?Phdt(;Dg4=8*JQ>Fd!;+np?t4();5 zmwW~t_?Wtvsx24liA~Fg)WrRYHIH>DPcb4Ex%i&>;SsexN83)eucW}QVUw~e3k+X{ z-@pHm`3t&lN@R~8X_9U>Xo@IyHD{ygu8za9zsH>e%Mw@ITnmsWd>1%aJYHlW`W;G0 zt}e1_HAYc{hkGiM>1acu8lCp0H>ST}Qbqpek~e2kB`h1wXm525{0ffY3swB->efKW zN@9`Wuz5C_Gju z>bjD`eZjO9SNxd{_Kk+|j0l(gX~REfAbfr+srR^bn*JwZrn@y$jO0LoxR8ML%y62Ypi3nidYv6K%tF<5Uu{ z8@YHqNn9)iY@qoGbtSX+IUQjP!p=GNY@6)y|1C72G=C137e4K1ME1E8o3W_lin>Rf zmM->2@9-84YO#L*d^i#2415}Vn)!(87vahjyLTDiwQJmC?Jf6p-8=GdXsc!Wvpw`o zWoOt!=x|ayb3^QqgPUSEGiJlpY)-G|r2g~}JK5|r@E$bu`S4~@%h8s>Ax-f9?bA!I zD@8}_;+%jhDvHUeIO>nT`<@rQ#ujnd&%&l1@svb$HDZxZnL`b~i5A*f5=zikRnL=v zDG%{1-m6-G_B_ZWk>Cf)?>^_mN;j#?17WAj7b@>q<8$iaN}|6KJI!L@v( zIcgy$2F3*%7J6P@xoPfwFT!MAAFmVjDV&MV<^Ea)bjcl#gyoA{3(+-qG9sSqc;p`C z%NJ|ZnaRMNGt6>a5CG4Pn|MYYc*-?EXsa{nr3H4k0Msk%>ZRg>J92Z7z@jU%mswlD zsz=US?`*v92z9i{!Ousmny{%TF0YXE_J| zDV0qdJi&iVZmOQwJd$|II2pL9&S4X4Mf2@ryH?iCT8>UILt5@SjQgAwI+dI{q#MT7 zrRCV}e8;vi>rOR00cN{@!zKaQHOPRPBva_%fco} z8~5fm2@|uBl|xgXP13QL6Rd1fcwi4Rx7^)xtup$fqI>%qj?Y&6noia&x<7$Tb_2>! z<;}^Pt|OJ*_8)ZW)h#xKDPA2b3#PXD(k=A9jTapK?5(r{<`6O=CfTIPN#!wOmJAmK}0ODY+}nHT93(f3$EV`5kn5=M3xl@O)az`Q@Ts5rXGCpd+jw5jwH%0;+Aw_9Utdzywz`3e z88-53$FH{ZizJhc3m0zRITA_E&*9+UT$>P6Bn}5jmC8ylm!Q@^noZj!6=!BW73WNh zj4y5NolZ+mmt7cCX1oC!e5XJ(llpf~`yv7}7W?|<)g1 z{4}mN2b;7ijlK z{v>#)*LpI%sQ9hh^@CnO=Bq>uQjc5+%eQT^vI`vgmr$g4v5*?oZ4)um4c?RU4{-MC zD0@!7b>9qRJGyjbj-0oNlA6LD8ub~zdfYazzi##_tncdb2-~JQZ}&F}PKTWQ{O86j zV7~U|H~LNtRe85@v)*?LY}TbB2;|tYe1rNI5xAURJT+e;9r7M@m8;nAep>UL^uZ4H zP46$-bkO_#aa%^`+Pn0h>#g_5h<6E9)3-Q6gqRA4e;blG@0$m!2a^I9_kRO^)$28; z4?Q>yR#g47i|r~yAM5`oN^eQW_%lN9mbBc3;zYSPJDPhvlZ(;>2UzOR)2PhU`-cqshjJf*eGT?Cf# z8@mN!sa}*PUpQY-+j;O{W=d+44 zlRj|-pKu27@1Z z1`ND3yop6FbV&7S%2Z)RFKn4Mw*OdG!uVO9Yrj5&^8nhoLz6>dCM7RS`>r^C;zHyk zjFu{#gCLyBo?0@GWa_6Ac0lVg91m(t=1VM+lnFQ>Yp)7V^sr;dn!?N>bwQ)(a6M7@ z_1M=S&JARF_1*TdXE)`r_1?t3Kaj<433ptg;)`%RaLai!%O&cke%iTbddax#{THrU z0ifCmNPT&K>v_Mte}81TK7U8Yi|s!Yx~o2*J8AA9xwD_3x`mp466$dd{C-+%#Ix;~ zQCne#e(}7RrLK4Vej`oMwRhPshslDhNmy^zp9xID?qt$xZ6Lovb@3Zb{?tzx-Y`vf zN}28o{I!hUbG!Kb=FqDsb?W4CxjuHemA3dq=}}Yn_Q(c#yQ$aJg6SnK@oDeahn3J4THnpD4-V)-nXXwmWZD_VU5Ojl=pwBBmH1Zi3(_0K z{`Gou_0Y+|WnS1;EGR6fu!4F^T?xX`#ZidxCDq-Z%ux1A?6buy_m`g{#rm5){|us; z{mUs>O>fR_kci&AJRFA=S)>+9-3uYrS9*?3<_a#*Sn_-esq+X#tV35ug zcX>F+)rmPe@*PZcx|(NTWxmA?;bMYLvo3v%^~=5@P|S*Vo=WVgn|?cMposzmVdb^5q{HvfkHp{_dyL$lI&slh7Sl1+ z_81n51_3Mgx>Ut|fLvx`7L6Q&E)vEU2FaHvl&@^(1uw07w=tg(aSw>hXM5Wz-d$gj zd&EBtP3kz}(UMZZ529m3{aCdc41DDchWpLO>e9dB>^K_JwKaU%RhD@5u?)9B_aWN< zSWwckk2ra+=sV*)Z1dC4{&h>Ca@A$b-g#obgJOa}c2NVt&E-*w9PM6_FvhICic{Cs z%#F{LP%veW4OOg4&=x>ncx*u_KYXT~KYa+_bmKDqgmwbXxiXInU7bHt@^a~VoUroE zlBnM*5|^{KiteYMVi_?vxbm`W8uUYC_)YH;#(@;TFEdw7l+)(58J%o5XlX8!w#q}s zTMILcX{(sFne1TUN&l5g%p5s)BbX3WuynnMqF-QO@bD4a3{J8pg><+=f z4Rv%kW|*{pKGe!Z>=vp(3hwtFT=>00k>^N|Ca5zv8M9W*FU!&7RI3p3KZGy!&6vT< zX+*@Aw}1TB?gdXb)QZelt`deoNy<~krazQ7@wEh15oyN1S}GbPDQ{7P6^evA?0r_`-K+7;Yvt4kNdkQ!bS*X^s0itxvb?zKTO>Dc-xDlHc}FZZ%$e z-Iqe`aaQ^f4=SJZmd{9I-||WFzJd=2?h>DWNxiUMI`yKXA=Z=`dI9j!W^70HVR^8c z>m!tBw%-@ftSG_J60_EBn1AU0h(}10=x9xd^|9*5D9mS|eT~-Nx1r|g=P#@C;~-?} zUu6b;eYzDG>P|hQ9R-7I`3OI|O;fqLkjN*4a76H}pU`Q8h6orrSVDUm+H1v&RYvRv z3@Jl~`PBYSB^ASk9yElaZ!E>W{|LlOZS@Nts;@+^8Zaegex*|$|5IZlfD31KQe64< z>cith*26;)uz1$!#?RhmI3qFPSgR}VA>VHBqjCw$a7-54yUMMFRo?O|`94&Un~e%x z8-XbaTCkB*?2=@iG(e1IEHeFL@T+_t|ipHp6-9{CIw2_Bl!6ip6N@gQ9oA(jvpNx zM6+y?qLFRUi*5_8475&fW>?u!ift<{889k8^DR`oSsE6fl%d`}HNFpzKU;h%z1(+T zB}4{@fT-sI?w+QR8pUeOXA0Unud^*eci5cJ7&v@bzPYPw-7qhAC*8R@5@;{;^?T`8IffNK#L8##6-$R3JIj;tYSDG{pNStbFI-TzMZaFI{e*Yp z&mi;`JTpKYw!j++$`7{PbX_A^_H4I+C(ON-1^}r%g4ey$r*okfEW0I zL6qpuy$_T67hP`evBah~0hwM_c6?H-^tadT#a6%v`6GvFaO2R7^$TxcSg}3BS`RVm zNTGXbDxUb~i{s?9mQr8oXjzH#Fq&`B=n8AOeh3(qOQa$$KI|Xm(I^7xga=&y!rr1O z0C(O&izgQ+pDF;$TH(2KXgE60Y>Vk^)W-tk^Z-=&*WEvMz6%d+SW!x>_Dd(}(OTzc z|LR7NXMKOa{_Yjs+^}u1pG2BVM%N1#k#MVxfjLqCXeIZ6yas{W7rH}9hfLJ<2{2qt)vT7(4{hf%N z;mZ;>nYRbhYhABgfL>b%q3^G1akseQ#J%L zbV0Ee-OkyXh&#@W@KsuK#PkO7AK)53(`aciYpI|t)>cnU$dxum@4f5dq;8 zbDBJ`D^7MMi_nfDGD8W^y2*W4(n!qtW`%1$o_tqY2k!7T z(!c>#^%D|wV&wN)s=lDeC~}|2Qb3VbzWfP8I3%QyYD~(Cs-vYBX3_Zi6ynXIX+9tZ zzp_A#=JvN(q11PuacGmVBu@D{tY{0tC8^04=QvnhS6kcg#eYkMQ8a)s`$XpBhK~0*1(}02N_|20+ zz-MRFY)g~C98Smt|J7MKN5Sv)(b>_V8kaDCPZ04TNz&@D3hBWEt&*UvpUnDPl!?$9 zG2RMyA;C_=$MFz`dyy)5okkd(|IjmQ*v;E!>)UjLi#M{&;V@i-G9?JqsQy)?&M;})+Vj!Wg~hXp1r4!-O{_x=Vvh{ zqlMh~b2DM}H^w$3ASOoPH24*yplK32zSAB-JGC_XbDze%V$9q%uSj`|D|<66y%EDI!m2bzw@2v5fqG|$IrviDUi$KPnt}H?Q^kZdO z@JtftTmp4k66sniF66#`x-*UB^bxXn;JJTZGrm>k+!8KVNz+_Wa|=@FP&OB7skF%S zd6c7c2TxE)>KYu8t;uqS0$icoadD9mHq9Ed$t*+TIcFyBuu7t>y*)Sk{u!Yj$=>zA zNS9)2D;KF!N=~j9Bp@GQvN@3LT#|&EJo5b&j*lu|zc>dA2_uwGZfnfneaAYG>yG5B zv@AhchjK)c<;K9M?QbsZ5{6qDak7tzu>t7f_p^Ll$VeWnut+YqR34GYnVed)v{v7h zm1vxHI>TB#<#`*3;jMwOi6TGgVa8=PW-4xF(;Fq>HE>>8NvnP zn$agxk>LF(3Vbh}7de@448Cqtet<<_J0&M#3+(DZum?Oem=dUaGYFy;vbEXJuo*rR zCL!igz2b%8r!CHzk`3bl%-34ASOhvld-WJtTIN0SC6YY3BE{oAf|cz2KjI(o9^GnH zYQ-!wCT=y$!jP%GjWMr7!z^F+=pL-Ex1q!IN>uyp`FPU8+BkG zpz522007tHjc^Gb?MrhhvvuA)%Z@y3B4(&vQw(tOo5qm8@%_uRyl6LWfDDvANy>vF zy9MiP0;fvWGqm_Wjt>Lb;aK(^+fa+<@PI4qC=>iT>`dW~S+C`G=v!T@?*a2J{!*#@ z;UjA|%XZ_o4xIl-BcONxLngn7Pw&G=+4FP<7Qm!Y!=Am{w=0`+&mALdp9%MP5!H=a zUl}}sz|&*G-aoeG@Z0ILe^|%(r&WpBab@+q42NYcYTbt@TdLsW&<6i&x>~Aacw<`n z*{{6kJ-!2?G1uBcIYt+mLG5`q`?E}u zsK@CI8ZT|}0oNS|#M^E8DQF9*hH~=;F+hV}UU3WMEbvF7E!joTc3ME*r?jAyrYGvN zea^nD+oNxI3Rp!*Q*QHqX=p6BVs%olcrsWwL*)v$O;M3Si|a?6UlMd!LMT)=D=n%x zTS&Nxa7tjxTXY3t4~f4-)F%_QE%92G*_B5#6(67|{vc!RNEq_Ss%zKRp}H(_X$1KF z*xmTOORkn9;`RyP_w7aMFG~)Kl@-Ot>vX@BWmeKCExmO=w6=Ms8bcv;;l3QAv33+Iq zZG(}FUB#^;|3C`U)c4Uw?Nz9*T5x1xVB@nAR*`St_O!?OyS3jRZOp%Xj{(zJOt}^4FAV?2@}xgM6@CEdNCE~G(o?308Nb*8noi;) z8X9}zIbA%SeM=!a$4yn85WVvJP%h~uS93NQvno0S@O_4Uu&CR===8=07Z?O%Mw=D_ zRZ>QcDl*^$6aTp(zNpc-k`5~E*UF>nNp@god%?QZmH3M+xs}d)w*7=?UjF&`4fhX2 zqJ(oTa^j#ywm$JT#-zT=Su!0FAmznjYzmU`YBpT5xTrE3 zWpfcqd`|j;R*DOW*>I1ZaHFJ&ATiN)(DxfJbyQs4@G6d(WhdX)8jH1`KaWTa?Z~R= zRi@2f$>c9wXe~~2=-u^i0*mdoM$_R6T0w&`0s}jX93Kco#_>zLTOojN|6)=<1YanB zCJE;&6B?XAXzpJ?$NTuB7osx!1qw!SSqcgTQNFB5O>`brFu5uY)hAF=?DNl^5F}Tl zNpplTT!dqeatmDqDB+YTh_sQT4~fP2bVUq$3b>$)Bo7VoK4(AO9_W zF@PkXJKg1An@BGXVl3>F2Sstgk{|YCRResu zIzLaco*_PE0#-Rlgqr@3gV4I@nq3fbmp0ovj8g9fLZ+qm^MORY#ybo5N?4SNN0wl6x+!!aZvGJ>8~e>zF}8>)b|$_@r_Z- zZ}@dSN~xtlu3ex38FD6jd#m-EHf84b!k`M{vnpYW!Q`*K!(F`fQQx9fmbK9kcdOpi zaX3~k9EAsCuI-661$3AEO(DJ~L+QL0;lq|P$4T3x&|m|AWmYZCf zrFgethxzY4QZm&dEL{lHNaKd*9M≶q9e~E&bfQK_%g5uR{6T-=6+bGJ*43yal?& zCvn2;ZwBRKdHzY}VK}e~?>u~o3u{GjT2C=og>jX?l&6zC+NX2$$-VtZ)u;bq5X*3{y4;&T6D zujOqK;xC!ciTLoj1>U(7S7FiOcXRKZ{z7_pa?Z2}pjx|WbQgI{xq$iK2Xa<7XJYy$ z9=5NR9g!H@jMF@;3Z3=M8aOs)s*hsv^{OT1XNCP-W>#5*2hr9iJEC}DpLZ>of~XBr zBFE)*5`P81WB= z4z^w~?37>YZGnyIM@x12`3sHjf5Zrt#ovTmvib_r1>6m5fBFPi2+=O3i9rTm$X`*? zwNk%sBuM-%oQHlDt-HZ=KXXpAKAT^`P#Cm3Z~?X<=jMHaHfXWZ!b{!ga>g*^ya+Q@vQ(ZTS(rIW|Ouo0@7-O{3Ne>EU9hGu^urSx5KE(OdiU;R4;5eHo zZ-4N^@Ovxzv}zWVm|l?C?r*+(F+}K;xXwg~53{#s1U_bo&)5Ud{l}PmT+$M^2(M#< zdYphITB*fYVtWh9KXt4a%pmof+0b)qY)41tgD3nX^f@FqwXSi*51I24eSxXo+v`mz z3edJWl$cCVxQgOz@DMx;#nIAXZu;6r5dZM-KjC#VVnweO!Kn3Nc*>>?Da)5C=^(l z*GeKTcja_>$%Fbq-Kc|z#-{Eai>n-wT4Z=E83M8U!(7=VG}nsb+v*ve9lLv!-rpUk zZ?_Rg8sxT_^C5(uRzj`B$TJbk-{n65qsAhOaeSsW;%%`E|B$+djw$mol?;9K2I9Ic zQdj$cpw-_@Rcb2@_EJi;` zoA${$^*AcI2-1p$oFuXRgix^+Q&gA7kFv!pBFTI*vYQk*UZa{$G&nwk-lxg{YepEP z#kB+EFI2DQX@xl)DAZ<*;ay6A zFw*=+;ON1W0;5R&ViNUJBE2TqGBRHl5W#zy=ZMsZqayx}t)VR=B}&3bqP*6nP-r=yu91h;C2b_8JWrBw-=+U z59jaHr2$!{aAHOAepm&8PIP)BLslDfpCH z{X8YilQm%W)_~bx1Lo-(FwfS2dA z=fdOst_@QhJ#^K>u6pR~Wl#H!M-RJm=U1GUL5!y+XgAj@<2qc$_XB@cFU8r|JZrL2 zNRmyC&Yq7RI!)J|3^b4yR}d zYCN)0rC?Pf0LvA~U`2#0i|AOy=VA~}q!bJU!3W84T6^|~XZuf>LWGnV)rfl34s|&! z8})=4(hXXfM0l6LUvbT9@Nooo&tn4vdnd&R;w~X^8vOk z!&Ei$paQu8sst#%#zB?ZNYjc-wwow`Cjr{;Q-LC!RbUZqn_z#C1yFi1ck!T#_Uuep z;kqXqjCa8wt7fWLLqF+k)9dB2MN3z=X=viT;ynDQ+Kwn|0?Wy;R)dUjy0Qut2lb&k za*@FM{_@7NRWw#GWi>nv^4x@9>4XN_%N;OAI=E(~ zV-}0F6nl3~iGds}YR}C&-|AI16h35zb6GAfbq({%QVnZGYdI}xhdvF~DvPQ{LTLw! zz33SQBw8CSKjxV95GBR!4m%-QqzS#&o(0vG-idPLw=AA8tia2jjX?%7bwt@R_W=(J zYNflLS`mL?d(>lhE!EQf=c|^)TP$&OG8op&I|imV3~)SSqWe!$GowK+j2apC`A{Wx zFj3q%C{1z%(9KE>&abl6T{4i&iC&BPNH9;blIQQvveZ3GN!eh^-|!|NWuDX33v~1JT~VU*tdpmyMv4f~c{(-IOJEc(3*@MVieS)r`qNxMp>rsbW1g9{ zm_mO;=jqS$LSmJf3$7W3MmQ4$;VoH?_h^OEkuHrI;aX4DGn%@%zQsM(CYgiii7v&3 zJj-eEEk0J|iF-G&7Qq-?VsU{Blk9~DH&G$dp{JbAp-3R=6Ki41syz$&PfKq2)oqG3 zw-FxGSkUL6bifi3G()W5H*xxIswdZ?3TJr@P3i}fD7Sg(JB zuZ2IL=vV87ZqX20za=KyR!X-JBEE~IRV@-MkhrMT;PBM~g`Wh|pzzfKC2wSDfHK7f zn|%OG2hS3<5|y9*f`XNKtILaTf!WK8yw&CLGOoQe=Ge-r?|$i}RGO7L{>+`yiM`SC&=rGGd|pSyqbbaRq)Q(rZKUP`&*!m0ryl1h--JyHWWOI3yx$shpz2jTL1POe<(SeSqEkVHINZWW^0S`4*KJL4jq7MMM@G2Wn~2$|R^N7K$~ zkTAGVHgBSki%O5lSm6kkufS`$tJoMV?^?FI{EL2~q*a61^v&%g;EsRcPCmoCB+kTR z6C9`Lj2X_*z?Bwf5~wehYo60Ug+2j*4G-9f!9Gn})Z-!I}(eHo0e!*oeb4 z($-={oZIbnYDJ6D@rQr*)f;R>zI~B>uN2lBT9d5?yga)QL0SO(G3)H9AocK`3DzOh z{}M$jV69$Z>qwo;AcDq68J@P6hqG0iGqn7{g;3s%BGsa+u-|}g?X;&WyNQt`+A`5; z3zl&i+ynhBWrdn3`kq|+qnKl`LJF>k`!sY;wJh9Is*A;B7V&?vXNg6PB9dP+74FHn zqYBdFBrp6f9a#Iy zIqEIAr4i-PyZaX}6cjyhnB9Tk<+==Mo z0i;eG-2SG^4Zio48{u02{nuY?wf#G?$4TYq4RQ4&Pd9-`b^9XQ4^&R0xcq?bL0&>z z5A^LqAEY^%F*9W74)%|&cI>!E=IxV!_+%%R`q>MBGY)@nULJB5_qDRyiX`1Vaip51 z6vs&>-C9`TdKo3*df8*Udc<=&k;QQOwN|Yty4ca;rh^&}C^in8-{Wp#=4gM7qJ^-~ z=vWusD7?jluz325XT4}Cc&T(-_V2gZ0*x6k3t}hLyy}GrB{EVlc}b^KSE$^j#Z*9e zv1=)+aFc&ccHBpqpEZhe#9eRZp^y4K>z|KK*oWQi&K`aq_t~>;?b_IN&RfuIA9p_& z`+>I8#1VIk?N;;&bqa90Ve1;g^@3&21@xJL+A;z4dO#6_8G0hWVIOfPv(v=i-RAc8 z_GcqXVNHn~g&58Yw40(>WdVVm#PER{z~Ekz?BIU}1!)aUfylk5L|)dB7YlbzK)+0lBkxC_T&G%RqGsf{?CJJHOQ zH(7tqM4a2=4q??KzWyAIxXY8YG`I3d&sz6p^WHDG!wO}xSk80~k&rX%byK$iL5E<3 zXjCJngM)xX4~P6Ra(&_4PdI3XML1 z3VMPhIB(@HD7597Q3TS6`_F0t5un-xYXGl^%+Z9TjrfIjt;}q+7CTVw+BY>v6-ux+ zTB=&v@Enclo+73=$eYropt*D7g|QgiooytAj3AnV6TGG+OoPM)dngrx=+8jD00n;; z;xGf`7q+_FCOF6u!=rJwSi%Sqd(mh-fY42sF2#M%+{`43-EADadL^RB0(6bI>8LJ2 zirEi?Tg%Il^4g%l^JH7%Fr6)sA}5OQZlx34-{M^ug-@DHS&ztX32Lrwy`K8OVD0QL ze|;St_cmZzn1$U~S>THU+BE)w0$_h29lv^m1&j|UM7pFMvIrwCa9mbKrqhQ+6J-v0 zh*NS@!)XhA@m>EAlqWteM2hy=A)VpwQk`_akv>2ZZEaC48=p2d4vSxlqDyQWpFVAr zFSu>AH!!NiW`wBVH#~1VEqyskRRQ`j`)1OQV?jKd*n(2(RyFz`tDvfi2P;PT{;2Bh zyCt4**7@p_Qm%Q$!$UK&tR&a}P*xQhLnq>o^o>0e>RGCOb=pUMta2ZrVgK5YsaMy> QM(2h97nUanmf4U10PUo_8vpurj}-5u4xy;884*{G?1R2 zrnR+t{8YPZyX|M~vb(lhiI-pi6)-c@Qp>jRl0MUPK`lf}=l6P_XHeVEe*gJd&htL! zywCl8-sgQe=eY6X_`U0;4OwxkvKBt@&_g$OoBw>?mxKeu<9`@%P! zBcAuaG3>n&x*obuKOL(3V1)i<=)#8JFWaL`wWg@QRr_7t@0_XC?%((2^0s?j%ZoDzHa zzvtXIC+=wC*xSZtWQ@HbW7h3iW0A6EV`I1f9h<>S;!oE%-w0A{6oDBLMnr~ed`sBI zSGterxiy?^emJ^fs_@@Jz@z5R%3V|zmVJr&`0 zQ32s5(f8d>qr|SSDc=YaN;Lk~tc(;9H7gN=|GU0vgn&Ov4Ehr>^3EmMMtpPv}tBGAtvKq@t?NI%pPMIT5L4i-))@9Kf+|1Z1O*#os4Ef zqrS+~pVVSwSVh#H5&B8(*%&rA%0EJ{)V_;h-d^{bOuzhQ;f25a9MgDH^ks?lZPlKN zWw*z*#hDhFR>kOxwE9@~w*jpqq-6iX1oXCIp||a4X{i63HR)+4rG{(kJ`L>%ka^K=}I2c~&xPm^gwZ&Q>O*NsgZ7;}fov^ZjR zDErUDnMvVahqB)U5XydaIMbGOW4Ex$+8?^HKmQ*h4ATn@vq6O60q>%O5@herMhu%D zj_)Fcig5S_dee4wXU>R>_>BiyUoAPFEsc0>uJ*flc5~#0D3i7;o{b+6e`kcL1XbPY zdT^zS`q7TR`6#Mg>y^NUbt3}HKvYJAHZg$>NT4uLI@K~?TbRIJN$OfXh!KCnVL{Jn zy}FuBh0vc2rcLj`ZtvCA>}wRvHttLqZm|>{jLnekIbC0naLr5k5xulS5}Vqsv$s)5 zXYXydSlB$)t1H5YHkpv{a!o3EZ#IFA)t2>UQzFhtn!h(oX1lkY z=*`k2Jfjp}!s!7ZWn?a)bdWA%E}-d!}F7 zHa*8_ZO}&cW24zLZFWEQEqg$ll*F>TjZanh>eOVVI;2%6u{4&i{XL0|i(Z{%G6mk$ zf=O&(^h$!c7T=#GMgNxICE6|h*}xJX!9`a>AqW4(=}S;M(9V?a9Vy=`KJy>Z#bWFJ zVySSyV%@7qllD5S^~>VXc~M#)%H=C$4t|hE9F1F@nxnngpAEGuPW9nbi<9X}imq7O z6>0Kb#cE4cL}nXRxswJYgj^19eNJ#oM?n;G4N=s>B+(O^(|qlh{_N&%!+~wD?vSb$ zX`=_QNh5E*6bjvkCj8vbWRhnod=GCB1KXVn^d)?UXr&s&AXQ(~{xEj= zwWTI`bC^^etNk*7rFC1Knxv@t$%?u{yKNvF$8xkK16kpC#W_rgEy3*hG36yTgY!Mgmwyz)%3M63`#O`vh1393~(J z!1?!YVlgcGB-Xk;t$~s~o}xTZ$=u{g0rXvMc;ceZKbh zA*_O})y5>V95z>5l*}Gw7qp|vES>GwSPFY1BH~Bw?G%<15p!NUlfp&~{OlZt*S-a# z)ElF85FDI0IQbd=mHxgqdMHa8&>ILyc~hiR`&YJlJ14H_j+ozT_YGx>dQQC%3S}M= zSrlHc$Dh}Z4P_s&ifu0qW4FX_wDd^Z<{!f*S~Pzhn-FO;nO@3gc2=@&Qa)S6*jeo# zGMg81dEYjvfURQ*8S!AO6`0VOj@qPce=cN2tk*PqB-l{mB7CIGot9?`O zcq=~I5IgJdi3Akuidk%04Ez)5!aEW+q*ClXb*81VsdmzD`6B;v9HRm9tJ!fa5Ju!f!5BxieCgq!?_oE_xQIVmx7)$@5BeU`r zn`&E2Wf0loaRx9F!122gGj#D|wTEW`=)c%rJC0&3i>K7yLdY?TC)Tc?DVt`QPbSHz z?(RB2hNm*5yJXX{}JpA z=~y9U=6MB?Cae8*SF{4!3*J%(o?-%9-aZ?+VB%`x;B;oHT|_zUe>IuvXhrI`t;TjU zcZ+rI>(XR(-9{9y;nfU<{tp^MsH`x-L39-C@kPv zfP6csw#*LRq^AQ*;pTUM=HR;(15qQy@l-zcn5upR0JX@|E3;!xJ_3FV&dD5b^8 zPbz#b{|d#-p^B&dp7x~Ou5NX25z>!9!rE~1AM~64$7J$|?C(&@V5BH&_U*{Dy<$|M z(JDpFOQceAHi?Gy1Z>o}hq8QwJsnvhDOSz<_7o5!HG$X(*g*V}5bF)Z&nZ^TYs6R(Th|^BbDFFoA(-`BBW}D<_Abl zLW7oxjCuFchd1bTFKT{;O_U=Mmb{;1u$3jpu|Jr*A!4CABPn`e^&zRM9tjJ*m(NL6 z+XzL?zHm}B_X~WaZHM#~FKYP?Ho(&=qO#Ovjn9E5kw#!seS_q=X0 zEij1hkyWVDyC*5|69gAjF%0+%)%;$Nd?4<;K$6I=1xjSpaH6f_7`g}`NZTflw>C*@>C`Y}{U zlJUuG5u~jDNlcJ^6Og59C+4KCUlua-h^0k!+L=2%3dqYE9ZSBTS&$IWq$w=LbG}W~ zcN`ym)y5kdwTtR|7fjH*GK#tDF*i*H>Q?$-ihBdwXxd>y*;2fr+krpG!)mRiaa z6*b{`fquX-(w(GOk1UH1rq$_$Kb!E?Vc8E*I%`$f0SGqB;+<-tMM*#Cur`->tBa&A zWNL?|u={&VluZ|25B|Zaj{fv3G+uVHLH+*%Nb=6aT6Qei3rWXbp+uUuQ1WsoOZBV= zq{f1i{1yNPbrC-L8^1%nf^M*g^QZzD6Ssr(ySj=|1t$H>Kf=M<`A9Y59!8v!7Ydn7 z%e&PrrcCk3WX}vabMqols^onOL+)78l!OMvA!4DbL~H$v+2Hgqz6>|w0sxF6h4lo{ zh$bT5{k5XjFZXKq6=OcuQsHYzhQNAJ6X%{ovGr$@9p2rMYPJ)hV&3Ug*Hk#X{wSxK zI31(-i9cp$-4m| zNO~cKe+Wiq)k4K=_Ars%>yK3G&m`OUCL_2v&goOBD200~p4Fb5%CaIVzSZ8D%92Jn z{*5ksJ>#!nc%Gvkq(Ovts@XE)9lrNL`VsoBsoD=yS>K)sh@;L)+w$*_(#-SPwZ7BX zq=*si+vZJ!%rjC{;cfFP{OE<(9nA0KCmd|IgUd;^)DS0cy70P_4}a-6rg=jN>oe$4 zKwYb>(pY6n5QSBC(Wm)KSX$3J5XAfs!w0-tf7+*ADq%&Qk3UDNW$zjb^q7$#qT(*?|!i9ZUXi&yDwu|ed<{4X|B6=WLLbqTn9d%x zo6&#$_YHy(eJF=^gJa|e-*T$Mmm-5)`;T|eo|)A}$foWc5Q|n51$sOC0%0d1OhT_; zJ0>Xf8GJHZ)Vwz-h*7+gP_2!?^b_VFHE#n_^xWqV9U`$&s+tD@u&#;P(Fg5Nd=GlC z58or-E65BK;BuC|y3g}GByVHLE+@r)%cdO=LR-|c) z@6}QHSZX#k?{x$fK9CoVSIwUY_?`@2=v2+yD9}`xTw#+X0iN3u6S5YCCEAKKf8gE@iiRejFW%A^s~*E8^!EfCqH}Pb*vLT6_Fk0r;uZY%dF?N z(A3l*#6T{`ZlD#_eBW*Hk)|zCE{ke@5eV96r7Sz*{VkehCQI}<`-9WEGD~a6P{a7w z)9=E5mXAn9#SZY5zV8D>gRe#@zFAD+gI^pQX_|G<+{VTZa|^&I*R7>Hw&?k$?I=c2 zml)JP#xm0mirM}*PrfOXcr;E7a&imhdtT)0Us~6ODWN?2V+EjJofn$s237!UEUj4^ zB~yxAD$gJ?n1ykw7>?>tWRv+(Kt$x!u3WH=#RzN9&tyX%o&gB*svRGF>f1sKY%<@5 zPz7eOrUIIYO&xtPlaS15h?YC{M7W$aRM0b8h|0wvn2_!=FOHfMj9hGd-h*Hh40GPbZOs@DkiWk`UQ^dcds(Ue_ zbvf9%_1phOgAG}oxP|>%^iLkFP;jJ8if_#Z{S^#A71Bo_9g#KqGvSCtBVx0@DjX4I zL~PL)g(EIdH+}A{`rYA(lSYJJpA?QbXhbyY+2II3MfCHzTlLg%3^sWxfvY?Mj_d~*JPFYm1eOUf zkHA?1oI_x-0DnUuh#R=82^=RtPT(j3K22bX0AC@Hb{93Fjlk{#{E0w7CjHG_sGr9| z%Wm8+80_8hOk=6=pD|Q9svUBMeZRupew%M)h?h1Om!0LsyBzhWEpiAVK=Bq=H}JGA zQ+@Ht!AP(@1pI2Tr3gDIQa9UF`+l{w*_qx(vK_Z?)qQ`(+`*Ctg-)s($56j&-{n+` zH+$QpP_rw+p4s7Dvp*zDFYXPd5d?EtnSH-K^E;)!4Kr@eOo=pgf zQdM^nDr*k8x7N|}l<$;h+SpZ_TD%M5pj-;g_vGJEvv+rL$nRdRpZpEUi7j3a)c{#k zbRh>Vrxv62xwW+SQPX+xR{it;Mb?lX?RM=&TemtnO13wPnw0wQEs^e|MT9TkNfq+* zG>ZDNYxTLFcT_e}da?Cv`7>Rt!EILfv7(?A;gDxLOGXveMnx)aRO(L*fh12usjy>; zwONs-)hpJ9)vb!^MkBt`>;6<13O0aZZ)DKgpgC-CMBmL??i|)X@|H-Z-8~08;JQ&@ zcTy%8NU{>wP=hsr@lPy3>^k#i{66SZM-88k*kbjOWc*zjO8iR%gN9z$i(O-5*cnWy z6T-+jq-AzUwa3I!B^3fYcq7~lp!^xWyw|tS{qM(mR_uTD)D`XA`CGJ6f5eOw70vN6y zb^A)OpEf}|3?*)7Oxtu1OOAXlf@wSNVPobj!rCS)5}1A|K$33Af}0jf?8O*OKkOPi zh9cGhc85PpDcw8?s3_3M7o?^sO}5lzSen3^>yV|RF$&v6DayCq3wv}v7>a5>3WC(U z_p(u*jeyVxlOBV$43*rnV-!%f55-R?@fqZ=D+1VLZw6@6Pd*}$h8TVLER@(862fT@ z@ciwB7)qQ;d1e6A-!qW!gj8@p5n2ruL5TAR@hIP$XJY8zicH>Mq-`(Hm$eCV*`Qca z(nS-~9+=BQ5eXr!Y#z%R^N*{@?^8_{21)2MScc@9t26Q;hi5;MhE4APY$e1Iro*pr zmwxqM+TM9=b(9~*kZqIhV+|1zJGO4?_5jOd+9;WI_wY~U8L+Gqwo=&`l2CT#DHCKf zaFI0qZ7^~y{u;duiytPJ@VdEb(QE!dLQfO-E4k)f1F%mHg6!jlCE8qzki*w!kWvO# z-)2#)t>wcrJ8Tf%=7H@h{7cAH`ys?Y<9&1txCrf%#{(Z>^oxC2gKYe=lAE{$Wk}wC zB2HOyC=J`^Vnirq1C+9YDC{2=Q808m41x8Fax>_)e6Z7c0opE9-rf|~Be;U#a)RT7 zOPtnI<=q_Cz2#;b4+Nv})4eDaX^&zE*B7Nq@0SlJF9KTWv^G1XNzKUYfKz~&h*;bO z$Mn~r(-IG%_M;mx>82lW@{jd5Zxyp2FNc}}6CjRe9uG!(KMd))#Cy~=HTv6c0r2il zp)IC>KnwS^(G zifnTmOF{jzSZT0S5Y2+$nf!HCAQqbSonU9QSz54kUP6ZXvJAtFzVsIDt1>nuQ(&1h zkf7UcF_~u1!?L*rA;q_o>Q=msX$s$2Lm=NtM5B#a09o<9m$iipSV~0i-)VdSOY8GW zBeGN2+ga3?-ve()#l z{zWXuGx8^sX^X`@L3%%NI6&)Vcb^9pHEMVU=AvEkDzhR2Q&AX_V<`FPer3ze2)mPA!z2=({WPvE4Vq>g06Y1(z-Qnu7w^~bjh)EIsw`l1P zu@Q;OQ3mX@ry@J*qg=nK@3eH7@BdL-@DLjnwW$_;e&HdOAMwKl?Z`v$Ll4(buqjuT z>fDg;SF+IF$}=G>N3wrA#O)+9wKlj1b(k-o*FId#2Btmwf#{hl zQc-Ugbnf&$s_TPcoRciot1!n4LkUBHqxD$A`bKO%uZ>v3R(gh?M+FX_JINJaXCkWG zx)BooY=Z({2MnruXctk{$k2yw`594CmEScE4IJOi)fer#0Go}q!POn$cLH<|pp5~U zj1uRe6tZ}m3lK#s`h9d}uUSHfX@ehTgQ94iXn7CAHS*<7u^?%Q_J>0ayzi51G1E)* z{(r(sSex{zN*vHIjrYC+;XC|mpPVV2gnH=v8hjpC-DIIvv(jn}l1kFXK( zr*_afEB!W<`1tqQ+(%f=sNRTyD+YelbKo3yg#6$Y!8|?grx3JazZ_fdn(jSSSCLTl zgC;-9dMAFe9Rn?L96*j}R`+l!&eU$a{$feG* zAF$ule;rLaU5+zy^yhJ4?A*Ooeg-}oUb@AJ-DZ58RP{#`K0ZpSF2PrS63#fIBTFHe z>jTLL?9IEC8sJW-$crODs@@GMgC%c^Q+036JYHN4F%_E>ZS-a!KvD8YRnG~W&=QUD@Okx7;_*}Znm#SLBT{ZrPwL;-#~AmA^#YboDOs3_n=(VzX%Knq{k4n9+Q4M z8$r=A@X~?$dUP%zR6L@A%;WkBikO1cqdx*j_8tgT`OWp=x;p?k<{;w#r6~EjYzq}ZjNAIcEFR<;>dSHbR0INL|ycPk2>(yPRcD4w%J?sHn(g7}-sbKsLBj zv09RyBr6Yt{wH*yX17$#zjb)8gxmw2YFSb+u_8ClB_dps{=cWRQOnq{#8)2@1Q7=l zT`2Gp`bOiaEm(%V{MHn0-7+?E_{W%BQ1;dU3>VnPQ%t73ud&6rhKp9UCL>Z#(T)N& z;<;ok%Ehb^=YOwFbg`74N03NZym~ceP|r-(9(S=}o~IC9OT=eH=;@eMq&y!sM!O47L)gQ6wyzUZhD| zYX!=hCn2jaH@XH{J$c_;M*I6%^FGH{dcp4v4U%4Hh-;PJ_j}t|qjK?xqQ)pG?JkQV z?eg;m9RK)Nzh%LYzcJI_sFXq7g`Kif?NhyZJ;^~$yssKnU9qmv#F+}GGjmNMW{foy zr+d-AD!)6^q2}lKreVVKOBByxeG7B-cBmyeqDji(wss}1U{)~RJHfOS`>6ieK-y&H zQgxaB>bwQi+)?V(rLgu5S7*A0B`!vcdqAn8&Rnz=Hn*=8>!;;$3frexzma~2jA&(3 zxP77u?`7udhoTO-dzLC5>_^{Wq~?bEOMNb-#)%C?X=+4TNIBftuA~g^B}JO_-$3Am zBB-Bwk)|_o65^EVL#}~}TF?okS+lUZGbu9H0_U=NS8T9NuLmyN?Pnp&1(p~B>m`LB z08<(75poZ;+S@cse;&1AsGu7isB7nB;PX)1jQ#8es|B>#RFM&$nG%qDQZdf19J8s9 z#X8FNC~BWQ^Q#L@YGITz%zP`PX165!ibGxF3;o!kM&XbV=C0nO#2ta~{!Uh^`v)~r z;VNOZD<3Pg-n)jYqG*yWN~4==PB4b>1MRZTz%=tJfqZctQUG$ITY zt@2wP%Y=V0i1>i-gRS`R_mc1nPx^bQ`06v<;1|`Djuwnj)DMoKJ~5~~9P8?#n$KKB zDbB~O zCGH|t+B;8_xPKrC%SSyyr?Zf4`w-N9;Vq-1ygCC>s^|`{&Ji%Rm8S5q_(+p#3|Dvt zU!*~UVnBI9t<-)G!o$oX&^lF&gv;!0j(|$m%(w`XW#1TTF@pMla`dBeH_gO#IZNS( zuT$i@dvPo&yQ%}^Fd4+_;0OyXMo}lvB5sx`HjD%u)mo{j9?#N1Bvv?aezyhTMVW_c zF)pUSm_dl;O@TN1kcpetV<{AGGT2$TTj!Zc$9!;Re@0tuCVtGacXpqH?#O&xHkRK!jJk|c~oZ0utbN^#4aSs)kq@Vnm2ve&5n#jGZ$va-KGn3n_m-R!8YQCv^ zqzP<+Lz^XzB~|YPrp!C^`$Qvl>&KrLcoTr90tx+uxNee#@7{6vEQqU*vDA@rpVPO< z@627C=9=tLm1gfHwql~9DxHezC~;O_a`i$WiQF0Kw0MRo$?oL#P=2fa6zV{SZ2UZq zTKxn2HT5nRk->qA)x5h~BrNc#H2A7M3z6;4xV%M(BX@+2{E-k&2}J-k6P z5|&4+c{6^*L}uTLU;Pe{mXv0+h}MxwO6zJ?T355ux|)^N)vUCxW~FsC%ahjCE)-_8 z3k8*+M8yY7`8>D}OK)HdE3rJk))k!p!!-6#v;Ta7cHy~!GSClgQi4wJF6K=*KE@Bo zr4Ih7Qg&3HL5>Xv|8csYU%2TL@A@UeRB=a?bCz0QagV9#^LW14>0|XTf1owvzZTP5 zoM^(iCVR8~GE7ZQSY%6_{G2$7dTG&)m-9gdXF&KDpnHUcv3vCKN!n&N>r*iNGZGeS zN>&@i_fxY^LoKXJz<}w0LND}p31P4i@mL?x>l>`CfnA#o*=>@b?qA7nM~@k@n}(VA zFS6TS?0ITl%lATd^Gqb9uegE!qgy|X6_z2ekPt?`sVD$JX zSJe18cVDIKkm79#1x`^}Wrs3b0-dYtLi(FWL+}du*3E}#CZ*+9NNLIjDXnC)ls0Rt zls4Zlr7ddpNNG#kq_maoHYp86nWk9qQ<99ISsD15pO2qKCHPr7A3rOXD!$1$UzvZ* zsVZ$wwM2KSv)Uo~IJX$wVTaDeU?5mQnbLVxWRpiF3SS!6B8A{!=vXJbpb30oC z1F3r-9l->xs=lO$b5oni?kZu>$EYI3OAeLH!I^!H(%42}%v z^Y~pUMw!h|)`hMWmHIexR!D2m^u&2OWv7XYaSF!Z|-5@Jt+2UN#nqy>h91Q$m zjQ+r@TGJ{v_Ku-(H;Dhw2@dc<8;lJ4ax52V$Elt&-@R;L<*88UN(j4^Yl^g^t=lq5 zfA|yawkO!o{&}B3khlZ+aK7?%w{i=zSeA9u7k#2V`UH-@Ueq={!ETR;{zPki0@k~) zu?p1pT2cOXlOk)Eo?zofly^twSu$xwD(Gft{+9%aLvHG|>*Uqz21@6oz+34Ow zfQ#ksdykrkeNyiit-XWkPN0@$u ziB*_YWvyT}>+R8<-Dq!~WSKJ?`2tx~S8TYz6KEhNY5adH&?u=E#rskAqg3|Z=(xH+ z!MtMU3uEp4(WsKerr_qsq%xd4--r=Z971Amy7$BVNHh$8^zXyLLsmNK@ z9{4i~uN@G^or&yZ5Fxtwv^FIid)qQ?_8K-e;*o=zZw>3`SV2+~%}E0PN(`c7E+}V2 zcm$rkK!-OcSRL9=vl8P% zq=X&DeD*w!Y88K>mL5~xxPGuY$x?X&mo*@Ae4%HoqtO)SLtPNI%{zfBP@LAYt^xYm z9#n(*FNlRdC&>b$-ln02JrKD8kv9HtQWPXPW6LKY$Qv?C>&{{GHI;JGb%aX;P7D}O zL#bD4z=B*O;1$>Pf1~JNcNflyBk+N!2S7ZCMd45vro*W?7e|s?8eJU%rA?sNb!DV^ z-Bq0AIix(~H|={lSGkz&L6``&^idR9@7k-s?jdBvm?&ne>%9`iXFulj6}J(eFLC

n#8?AXcAPo3b%R<4_>d?yJ0F>Ok55EIL?61_Hh5I;fF9H=48L43&OJD(dtzX`! zz5EpWDq_sOZBKgHy)2^7$J%FA%+a@C35Y9n0DCw&a-bHL$LQ}iYdO_yZbY_A)2i9f zF+)GX;6=t7-ZBM3sTkuvh;0#j!?mb55v4U$vq}BUfHC~}bkvkq&q5>DqaSH0Ph%)8 z2efJQZGKK$^E7NMzum8Gei~AJHc-=r*KrUU{2OP6Fep!NB?5!r-53-a8!-fYosF`n zPmA&4>!@&q#IW$m8vxD{MNX~&D29bkUJo!0{YOocw*nU9!Y6M5NKHiSW`JT?_~cCh z#jxRtt)RDN%2!&$7trS!o$E`={!6iR##Qq#J^9Mw!) z$b$+Ww5I|x5H%^88j5yt5ZBjo*z$v`XX13%F!S%f(7t<`4T5ebYw_#Yt^Kd!{z0e( zhBb@A?VH_cvYHsXF`0Av6%;DSHm>{Ic6c$d>az~Fb_ z7o|107!sUM=J;>O=s-@{6XAAf;U!bDApE{PSLLme)bHBo<#|Bi|u5%vn^kPAHXKD5|-g!jE4M zi*$0K{i=x1JvWvy7;Onm=)zIWB7AFCSa7pmK)F_D0^#@QN{3g3!myYBx{jFZS-N=Q zFV|`XA)7ig?as`(t1@>EwTs+mq_iGx(4!>aiNg&*ij z?`p}|!#9?3m2f8hCywcQ2XLdHNy~YLP4HwG-f@1Rw#Qi6R01m}$L5RM2=7h@@qVTM zC5`$6kL&ZapG* z+_5{pL`Tphh!>q*UBnpt^DgasAG^u(Ti}}9X-(!806-@=X!%eWf`@N8z=JU0?lu30 zB7?oXc~b$H+})bY1z|LA-fbcZZ7>%Bs>p#409rHTg~XupOz3tt7iNuBX2PGq;Q z!CloN*tio0cqqdiquptUz`!MRLs+UUVm#sWw-F}qrP1!86;DK%+;c;IZvGTeXw*r3 zs8KR>0pangZgJ<;jz*1G>_~42r|V-@pb_8(N1DvPLmXiQ`;c2(;fb#yLaH@+xOp`o zoF;bTgA-HF;3IoOcepGzewCO8ytW{!bB(C`0=4KT!OnsM6h3$xVv*+)d?-)I{63&yv|LB)V~&k?UbmGs zhK8SLgkCuO6n?#VGf<7mm0#om;bTZBl&aey>?!GkANT?1DNYL*#o&aGISI8& zRg+Kx@rU|Aq*Cdj>ma5TqhO@~{j5xKSUcUl>cGT9hnrIJn$e#CX>ty}61Km|mcV$* zOjbp8Wd_dLxq47W2Un0PTY~urr8#{{S}}Nd0s?UQ`d!lylU&UA!IxG{X~3cM@0_Zf z>~Z=Wgye3s!+p#L2$AF%nq-4>2iQeLxlwyMpDi@G?=9l-A8o0ehl7mqcqwrN3 z=wmXf!huJ=DjAU!0nH}l8jlEIOv?z4#rcj-=6B8=K$JgqvqyV=O&NZnh7|?ujtwJuGsW*N9KzJoAQF+dMw18FX+7djM^XKaeM1U1}-7*NB9#=LocO%B(nA@jHck`PX}lbG>IIoD=9 z%b<+gK|0|^PUVA)8PD#E#s(jJUXR`K=ubTi1l`l>r24zzWUXXhXhWU3ZHN-Mx$8MC3_Tapy` zg$7F$8Osk~KO9?miB|ZE;nD}^wvP~rhwFym>+KklelGnY?!^YN*?CVeU)HLixt5aX z+RW!?$sB`roA}Zkl#V_s$^4vrxXo7GWW)7B-tJEE&72bVaS=BbXjeOV-XD+`jmZd3 zD^kacDZupKIg&k#@ZV8L`M)_ty96@E@(9T6%2TT$A=(AsPXhmkurs@SGdD~)fqFbt7 zPm2ZI*ms`=C$AyiUOWx~6rkc86ysEv#X5Prw=EJ6Pe|4G0@vX^17zE{twp{*x8X3d z^wcCOA$RcRGg#|=!J?d?4Zt3J-S`TbP`q@YPRCMebiw8_1wAvSHaHO>ET!q7xfVBE zUQq~s3z zNN`op49wrBg014+fkUn*)j~{nJ#rI{vAzaiebopi;K%wB$SLLzpeY24mE1XkouWH; zB?l+amRls25Tdb!3IsPT0P&Q7c}_=z4$+E1%Xk4rq$!?o3{VO(aO?s~gMF)l6ZHCn zkoD+<2=)dX%X9nTu-K}kXTJ>Ecd(1aAoyawCjc)5q>gr_UXSJVpqE?o1i25zHFH7k zII8PyACg|L9R5c5JH01adc7~cC}8+5KER>6z&*6GAv`}nYax8?(f6{txvW<%^!C)i#JdzDdK5hxY z6NR3tg_u^H187h{_}-I|?%R|~Az4UI_o6+|H#ruMg-B1C#Rh0Dp%T-tD$MT@4}lbX z9)R!+G+HcI%d;pA97B2qW`?QaC@#^Y!_^MKGM(C_r(E{V4;_zI+lZ@j;`otAM5IO6qcC_Gbv7 zW#MHEPDL$EhxzK#kmWg|fmy#U9Ve4${3fCBZi@GTSTOE{7pM@P{THf)%uC2;_keN5 zQE!ZnQE$KzmH-8x)r5HzOxURw#L69h$P7&gIdJ{Y$?$dx+Ov(q{5-ZqN4nU<9hIHN z9*#WN!|#Gb*Xr)ILoDBhl*BkHlFaB1>=sU50IMFIS-@VBgbd(3`&?O0Y%C7$K(fOE z9xPSSHg8jla*A^M2(BSje}G}3osfg(fIrQ_RuBG!0Ji!T7fi2nz@NTw@|I%X zZ0z(7kq*Jn0sb_ba6BaVwG{LCR8iBbD2i$VIwU%yHaA#Q{J#wrMO(s?gkThT9S1zh zAMWH-9wo3-5{Ke~c+ly{ElGCA5*t*AMIA!V!JY283EZRQ2Y1szMO>W(n9 z>BL-$@HUmu=7;rZJz5@eU#hZ?F%8TG}HelOl^QnS5Zq2+4c z3-n1J`~fIcN&ixx2A8;=+llP#n0qkT(Y=&zHM{Xy)*b2>U5H01@SCGLjHUFVpH5-n zloyT5i++O1z+p%Mbnl|WyaI(sxO+G%J-_Ja2#`g0p^* z3=G_i>$^Oz*!OU1KZp10cDy4XZlwoEcH`|h$`R?BbP?~PFjnug#l_it@i1Cr$bI9* zUf~4aS0`IYS#nyN+&!d!9pKqjD8dtfNBp{aRfPZ~`DI8c#<4SRaf}!zu>y@ir#nv_xfA7SG zN3v}>zJnh^qLYt)0-wN%Xh<*#(*ahuNL6DI;>{P2r8LutLI?GWWZ`z`-fO2aA38=Fuew62qt^ zVKJ`eV-NtgClEm1!$@@U!E2}_-WZ4` zk8tHL#5kaW;duy(SIzV2qA~QV&K?HGcpdRxhWXk3J5uc7lLtLe5C$S4dSqc_NA9RL=O?`*Z ztu78pzl81hunvacizc^r2wueEQ3%FF}anP&oEom>LZeOlZYyTc|gf1_Bpe$ zq8eyL;nWMi8&ms)CFqg6j4IJiUp|&pm(c}g0$7i*jQM4!Z!#v@0}2gcH&LH}>`;K( zL(pw-#OV&wa&8wZ3XoJq3rbyyb#gb>Nz@gg<&4GkE$LsKkRyclV&mq1XlC#sb)^T0 zldmHVE#iIl2vH+V$(4m_gGKu|RuopGliyFejTP}2hC79BV@L(0aD~?o@qs(BprA1u z3koZXA|TGLu+TOTW}kt-;nTnh=jKW zO;qy`3WC;2vL6OXt;m;!2~21|LhR*Zi1gW42;^kKiMIsrMlLK|Vv!Ko_aOMIyeDPG#7Ljr%wkl$j2PMofK%4#7dqZjn1cpbw&{H#m}KW z!sdZtJV(qb9j3+JDEQQ;sMhy*8~l;6P!+rD-9<^x?(Jdr)VeGN-QEQ>oX7bIB4_zATE_9?~MM2LB(C_*(?0e^=MUW%xE%FDB5e45OY@r&gr z`~^T2mww?<@c_mX5rl7;wiK`5LfrfZhj01Tpe-y#yX=YzrUI$U7mwNd*nJi@_>THm z_vnff%$4S_wwDhhspcjpI}b^E8cG%NO-Zbib?8Ie(f=95jC1qGBS|#)HmW(zgYf|e z8mCw-uI^nT`}v?nU794r+~++Ji=%hQxt(+dr`od^H;dz(k$1)tfSGqd#&2=MlovG| zorALA@D;oRs`<5*0nESGYYs4UJQYg)DwYbGbstWsN*;@O5LTR{Nshe@`5ivlB1=7G zi)2aYgLuG>WDI2|Rt1Lg56{tng(OH@Ocwf;9tlqU+ND8X@Y zRiR!Oe`TJZLpmy$A1q~R;uENsU#h;$o7^d0|CBiRQH*V^tARZ6ZlItQ8Dx^`Bepzn z(@wIu>IOHhr_MwC#_=YY62$vK*1cqo@-z#3ln##SN5{tF+0+o3qb>)JqM8P@0H&t= zB>WZTr~>LZ*$t@E7Ca^eD*{!FRoQkBZLog23@#D#w}43q07nGW#ofd%#}huLD1K+G z;BFqUw_q=QQw}cyndp7AAMEH@1YMN_rFN7hyi_RPTxx3#VVGMXJ7A zQ1xNNDBe?@f|NmO7?2fX&<3cO1xdx=ABlLO0CmZS{k9bIIFuPkLdIf{Y%xeSK-K~X zaY-KJ5mq0#ZfH`&jyxHmusugO@(i;`wqeitw{XDB`cKad*>i*+&tJ^#CTIfgeDS&q zAWR1uXj2Pdw}B6E7TIkK+p@s%l@IhhPQ)IW;wPz>a0n0naf3i~Q- ztHVUVxQ9s~*GzaK!WPZzlGtgu(8xz4^jgD7b4{;>n4nj@2g z75+9pDcKMeg|DW;eUmM&p@?UFDs0$^+0^DcVZ%1s8}v*qQu~NBGGcc>7?1_Skkg?; zbV7`CfN6v^0Bk$1OqxID?-IeBYWzMSfHK%cnf%hv!|N0@7jCo+8ZwRf1m1^q_22au(z6V497zi{Re z4slmf;1o#NSm~$QgyrT~U=_-MliY#ZZ0&H9r(baT7Gxyj_$6Hu9&a&hPkBIcdeVol zqQ#Mk0PqwN0tS!yi2USpXo(1E8GdqOlNco)Pg0lthhy}s{U~9sKo2`cOT_Y;0?lU` zR@Y}Z1WT_j@oDJzD(sjzi%4gN)F*S`|AzWu9VD1Gq)GKjEW1LX>Od8GGMU&h+&qO) zg}{?8{f8>F3aXGyIEE@@6(!@04V7%@HAcbiJF#pGy=K0^dB?y3|ED6!)nh11gEBin zD+2SH+c$=KSBVTt?!07oAM)``O%5(otO!X0hKT{n(ZaOgJOtA~=-3aIp;?A|6yrXX zBG9Q0a-Ba8jH$wP4n@a9OclD%)oZ?U^Q#{c_ar5#-td-A0T>bZ9XPn6mcw_x7k2R8 zB+Xb8Hvrdt7v4E~Ok^5dAwEzV&GQJN6>J?`CL*WDx-Fy%44z@2X4A*&G0((T^5W?{ zJn*2me1p9r9k5eP7>xvn^&qinbDWW9fcQ}Ho%_PY)6r!f6&d)E8bn?{Pz;EO_(tVb z5(-v;Xh8a~#6u^(!4m&>ln@y05mZA9qTCWl7F1INswoH69CW2a+5I)u(8)3NiSXPS zJH0R<0ugirM;k~1bn}Fu8yo4#LWTZ+(~alaxeL(bYd4f`HA=^YZ=zOG3{bB@fnLX`k73=wcF?;IZ|t6`J(SWDlv*ASWEU=%SqR z|D>G%Fu{{fLK7Pvd585g^0b>DLbc*FA7%mGmU2wXukeVRXjbyXUfCt?c}61Jf0y@q zBITOAXL#Vq6DRy{Nda+eRumb__d&h7!O?y&%)pz3H{DD8J01RRTzS1je)c|(2hGAv z1V4MWXKORgpJCojd^(1AN*ewq^Mi-aR$t|p_)+-S3#P=u;$p1NYZ71fDr6%+AW3{# zT@v4AlK8$cBt9r+O+eGD6m?A>UB|QsH4mI(5`#2#>EXEH_y9HQ@XXg~A%LF#EQ_PMbu zoWu%>pt=8&^t#tikw}M!4nL%5*GeX3e2lk(X3#@A(a<<7nJ| zAmgbG;(V#=1fDMM6nn+@n11r=)8KhKnbO~n^8ln{DCrGO>q)#_@rgd6kR;F_^kST| zFnl@2UKUW$YVF)_aS(m*_#5s@#emDiBVwoj0UQgg{Fy%Jm^T<3>K(+D%(ME4d~ASF zu4Qo!_^P-hLubI?YRwGYsU|#!q4Bmv=;G~RFV4dc)6e6SBAy!mJ07^Oxbg3|(14M& zLl+MI=*g{vZ)6S~i!f4fVv#gg{b?lBH33(DcVc+Yy<6r-;U}Rhhj#uEy;6kze-8Xmt~3Py>x*wizNle0 zJonZedpni&&K-5Qn*89gYm=efEVG^-apIYmzHa08E#iSGVryoYh8;Y#5OPQLC2;*3 z^ua@~a)~#z+NGyXBU0IcSo{e;c7U`o3ZvB|J+%kPyjkY^>)?ujKQ|KZu!%!6bW=*7 zmygWczR6ZS{GjJ=@a?6_9lIr|Y6BIDcfU{~1h^*q7Al?2JuC!eF7d9}Vp^GkSNyi% z;8(#mXzP7YWi&RSJOnCoqG8#f0=#RsnxyqMfM_)-KHoLc^u(z4O`&E5PiWh>O4Y*& zQ}l}Jz)9jYI74wvv35#Nbw?78!mN6OFi2G(1U$A|o+=(3)1QFH2Zk+nO!{2|{o5o@ z?WG+KvV8Ri05B=}xFN8Cp7zYX@-~Li+T@T5$)y5w%n&gzlj#{gyh=8td}* z&a-hgZ~>^YyEeYh44zg=$F|ZX?-N(QMB~bW$ZNLD#CJBCnTYs2x(D1kb9kmq?-;m|G3K|;6_d3yvfhqRjRw~{pwC=;}ga_eR zTD{0oAHoTi%Z{=JoKO-3$L%$$eKQUf;on$*8v~8$Fb|?SrD~Ec=ovITdb0)f+j!|_ zwfJqd^mWW=jc&`uK!OuURqK&SvD#~-suz(%k0t?J`rt#kmgEfMu@0vy-tKW6KI6b! zj84hcE*ejZt~RQ|WHDy{$aoY~hKoFxmU(QvL-x%KRql;M^2&7Uk@DeoynuJ{b2;U_ z>~n`~?8wsI%90k$TtaP4gef;ude(>HLVi1}4r=zBi1X0P5y~bR=16N3PH8XcOv68s zGT{r^+rXCgmD!=CJ?$wCc6g3h%hG6DZv2GRQ|aHhIfzrVpbvvA9za1hwZzCYQT9y= z$*ke=e!(ni4uvWkL=#hGYeV@E`Qn$d&mOX;oVT%7&r(aF&z5M)`#E$Lk48+BP*yXLh6n=uG0HY zrDiIdT!sW;6WjUyEiDTNzXz%6xF@KiKn*F z77yA~g}0zx#cIM-TJoqDdramb+GSAH+uoL5I-@+G9`{o+Zt#Q3PRKY>u%-sjbiPf; zuTYczDfT)1V>B3|W;9OcA6sQ;r7 zaTf|l6>=%cMDd%&=`Nz>azWg_$bpYK(jrW~-!Y@Vm%=`UcDyc9d`? ztODer2XJs107Hk1DLbMJIlD;@?Zce+roF43v?K!KP+TqDAJj(;_ox|{v@^)|;`Y)xr(MeEJa zUAy#+rzRkl^U~93m+s2L4lOny{gN^1x{4HR0@Zl#Tz?+ff&;Ltebr$;3f7G+LjSvr zWAbMG^8cXfO&Gc)2nQ(89jz}Al^FXVZGv=ylHMTb5D(pAQ-`HFQ*3dN%&zZ@VpH_R z$AH0=_rkICadcV(+`rt6z17uIPw=4JIX4_e!!ZnFKdArN;;8=x`@tD~Ne-A?SttHA zg2&$_ovaem;#l%Av6ZEWP|A8*53hbqwtlj@mnuhD8`t&&40%N={>9xBG5je0iHfO> zK{G!FIf`u49p*E;sK;X!&n7&bfOl04PK!r<>d#u}JsO4``iOYVaB4eFo$3Eh6kHwa z&w+R7=#8w|PTp}3B)n_yzz4>lU18$D0Ig}qBy{SIe40IXCuYB0|0f8LrgQ=##f&N* z-wcciSpIh9K)#7zg`L>ow1E|1-YD&oT!Zz2*3fm53|v6%3?{p~j-J@yRp}dQ%e);UKC=U7ZZa)9y6=Jz6H8gy#!SJjakl|4O^`PCxer zqjg@=MB_12Tw&7}fVSv(>yi>~-;JZS=+blrdj9nJ02blzQk4^ST-El2$)U{ zxyX!Grz?p=%QM1eoo=ijr}CQ-;4oCXQxtbuL5-FX@bdDt$Rpvlj%!dl4sIDs5p*S} z%xkh^3pCq3E%vIm1ZUj7d_yL!SsV($D4vR4p7(`fI@4n5+k`~hB9%Mv`T zl_%V|Du0k?MQ=ObJ4^KJ&3a!>MbUvC@zujoo!a~H5F+aZ^t5JuQ*|KLh^>hw0DBk0 zzRg>nO zbQOsXuVoOvf-(7noY4hUD@Q9X2xkrRIC`6LV{N&`I&1CsL z*Jvp_m1b2u)qGK2Y}&$-KoZy_LEuffJP%`%q>Gl`3P&B~Sn zrqJ?XWc5~XPGj=+K$UcLL?8v^SgF5#5i5&OW%(N}Mp&Y-A)?@;Z^}dZ`#u#96Kpv- zmUVuzm*eg$_j7GH%(&g3Nli%B?Nqhje{ra!6wE_FG3|deIAdjt2I1`Qd8F!u5nR=( zpJiMsOzs12`Y6!V=rx@?;)O7FXMOFhc%#$T>4zE5&Q7z}6oBFKTLc*#Mqy(8#L1?_ zDaV+*xO=J4EA|EHrT+%1hGE+F}mww_sea5u>U-1=r4GGk3p5gj+}{i z!S|EA(QBrL&b4a7`)R_jhAoP(%?#!hLH|{h(mY#SLVKRwRmbD1g64`ihj+xl-+;yM zAqqZZMyr!60@yiv{z+Fh&Wqj&eYFpuC1)*Bk)U-Flwt&ZyTeH3YL^RPjjQtc*g>=* z!)0ZEv)4qwyU;G7?uxHD0>mkP`COok%OYk-qCYwJ@fgcEWUn)IjKxW(ov~vqasjHd zdwl0HmUXxSQDZHS0V`fM3=Q;6Ix7+(x#D}S;xg7B{+&oJKG4VPde@%UNB_mfyNSa> z?IY1zZV}58<87Q-l{4jHCuz#*n2fz6e)C7B(y^~!OQ(2y@+&(7P}XLzx-g8D;aLB8 zQWkpp88Qos^)#U_(C{&WWcjv6ic5wy&AZ~fKZ&Fa<9YvMB5%g@xtp}uzr4KypUxO| z_Ri+Ff5UxwB1H^W`#Zb>Xp{o7ruuIs&s)bnw5jG6lKD3bX2>Li|9O(h&34WE@foKe zJWCV&*I&(hfJOq>op-fwjT9xSlpI67**}f86nMvF=6MI9y!y}4D_R}zHI1>@o|4J! zN?8en^(K*qFb40#z8+3yV6mfV^5w?LFJ%$uV2+FD@Z%ZdvT517=Ox)}7caGPj$zVz zrKUAKZ@iKEx3_iz?^VWYuTw#4F%$#+TAPQE$G?l$HI354=AWui)Utk%PSBJ8r9st4 z+faGYM`8h?R+QtwS0QvS|4y025aFC_rpf29L(0ipm!Uz*#phT{gz&t{!$NsA-#9z_ zp9H7g9=zsrhE20Wd7awx(vJ&kR-C?*qprr+cPNOfO~Q9OOL;OO-CF3achgX@5hchG zWi$2{-oL4S5JK;`rW+@pIAKU!{-rY9UW*qaiUXODcX^V1mgNM?Uvs^T=8Z<$E(0Yk zB3i(jR~{vreKRccNqq@fGC1&1L|il?BAVM|;Hv_I{Cz>+K8xg)zxG3tt;W?-kqp|- z$XcMg!(;g`I2G`|0B_O<2FPv!K#kA@19>6z!9s@NK}sXxHc3IVW1HU-3DHU9p4YP4 z$k*pl0o<`^;j$Lm&~~P9&3y<$%N)X)S@&6{|H&0@%|6qHerqlJa;;mhoWI1so1@iC z(CiuBXG5GqgSkV8wQ!RFdpv7$m+#BX6#VVWoxzhv9B(AYAW_X4e+I0)p)z*J*}6>AB6kMXR{_@{uqG%YQ&5Df*g$RR51~ z**?pEBFN;=c)u%5REA!{%h!Be#sy(}`*dT0mFKzYk0j;e1J1a;mi0Kb_UE`Ck&qZ? z*V+3lt0hQlf1I+;?y)+1?6ur4Asi$JxCsrcIJ>7?{1cX9{LY2`M$A-s-k~UB`|>{} znp~Q5l$}c=u-~on1;1s-m+!KEa$B-z~o-knV3Gs|YNkFgY;iY4!UFb9k6QQG5#5l($@>2zPdx zlu*cRX7R4-IXM0IWebJu_0rHfj$OTsHN_lXeIHn&+3_`blID)lNUY}2yIl4|cQ7e< z^4~CQm@uVSXY=c&Q(ffl(aBu;1)=BH`v=hoE;%gld?@QVvA@Xi?))eHUv`tuKJ1G1 zk91=L{D%yN_m(G7FzWdx8#;!+bGZFadN~vH;n@5)c*mMVXiv^8e|Hpn!?3o)$hUHf z|92Z$+Q~6tx|zSFz>{BG;JIrC#XTu|%UdYxb+e>hQ}G5fsAso7X=f-jxyJPmXHmhv ze1nt7+{1tB%}{8p<&V%we6@{^#dr4dQuoR&G@v5KKP*y<^Ew*4#XI7WCqc}yjTo&e znUXP;ck#dfFgjue(?z4)&qT}SjA8)Kb+q#i@#P6s66eWx)%yzw0h@+E+7jc;wYx)F ze$RhE$M&kz7wuK=m<&;RX?Xp2gF1G&$^@AhgTC^=%0$iK=imO5O4>av?rdM+f?Y@j}eJ{2~Xdy@{D(3Th>cZv)4A zEm82pxsL;#{2!pS1a_gHRK4wptcc}na3ac>h&sOI;rTZ7zJ01Qwi1~da>=x9@TS46 z{?!@CAMc1SF%{=m|Dz(R^N3Dj3d)Y+$@s4_`gr$?!VM_oq*xl_==SHVQbUc5vdw>5 zz!*ktjNSc{)-%ML#8vxDp@Yt-$`52+V|=&RZ-sM=WhPWH+GH_q_OEf$o?%DE1O_o! zaYpX5RiAaK+H1Pq^Ec`Uue91Zv8eo?Gj#_(^c?Dt+wC6_;Jah3Hedg6gzw$8TF}I0 z7QT0Cxt98|0lsf)wdMM-;XCK8^Z;sPH%*vA<>bUqP4W zIw}8uWI*D_{C&WYJNqwGkpwxtU6CBfBvkGfa%Z;?>RVjL_glxq*nT%TWVKpP34tpv z$-1*P8<$LzDV0QA{m>R!!G>EgSz5uJT1G1zkyda=&hmuz1HD0y#VoxW+yt^p=Ye|je0`6 z?dFf}N7OBcF1&pvtQ8LVYxrY;_Vi=U6t5+fFwaMw4Vb=n%$fL_XQ4n=X3KjQl)cR` z4g39N!!!hs@7NRCfL`l*(bhE&LE+vfmW%FyAiBYweQ`4htiNNYGXv91MGrYT_vX{Y z`=^n?IEd~4jkIVdwVZ7=RU~>2^|Rd1s?r(j?;{cD_Dr!O$|%TwcJBku+2=Ul_D_s> z>3{Rr(?#Rc$Ie6%56gwrCCVR1w*zxYZ*?a7)9`q2@A3r=7!y+w<4rn*%agztJ8aGg zeqCa-%O!Gj#VBvmYer6^=v?KWZ4CYTkVy*1wqI+uii8ish-5 zE?yn(;?dth3>oxmiZJc__=Ja|{hg&bMQ1HuDlk{11Uj9yxD98&NLNk_rN-;rqopgq zm&60zqcvxodvqt7^XH|$#ZU5?kz?z9o+q^-uF+D<)sYYPU5AI;u^4$JA5eXPbM1tT z+3RVIpYjoFgCreq#aHx@yIc{&k&CU2{#1VXF-lCHH`BN|n-!wAEZXx|{~uqHZ&r?b z!o4~d&i{#9b+I&XW%VF-s+^s$&w0#72J9lLax|>tu86`+KPbRe1ai_9l3vRKyy=k9 zrYB->fBOP~i4vGbpyv+>Mp*bRak)q!lBLj7VvT=lzaU~ovSQQIo3QO&2p^SA+>X@ zWaZnkGiwihNRScZt&uETEIAbmQjGtR7fD_Dw&3XU$&B~l4uZ+sZeM?UoC42`|CP&yxy6IoWdiCOKzpf7PQA#j|H>`iL+pTA76DoCVut1 z__)({Xf78t8O)R2$H;b(@c7k#mU5V-Tb#4Ay8r?=W#?$re_i%)!2P|~JbLhAX#DFv zt@P{Y7w!}6y|G*fA8O0~DO~>>5+KS(HfnmyvQF8r0q$QGn4WDlQ*hV7ygYBx_Qyyh zCND#VS6+IUIGGF;IBvl4I!)&CMy|zrjP(hD zlCkOsi?d50+s;Ar>%v_v@aD!egC)MH=RObc-vGbAE&(E!{3zq?mbVO`5_dV;2rX&u&cf5A|v)^sG`vG zqkIi1DbEw~Ph>}_x+T752jTwx4MO4<{K@?xF5|NcHRmZo?gk#sTMaWjYrez#nDLBU zyuOlr&2xD3!rz!F_wab%lpOx^$O)#kt0I25NHLS`s~O6(vq}K_BtVDcLk-~!&*Bf4 zvyO7wqb?O&g}0*tQ^QruvT3wYe?_vxTXUW=9ju6KYKbcbht;l@q=ZvqD-dFpk628Y z(Jl*;yqc>Xc~qv%VJ$fxvw5HdEYW6?3%|KC%*HZonq;m;XD+tf?d?DwxKKK6w z6(d&p1^@$pr|Z)8n!L9?=CAQjx5jVa)$Jo$hd8!L$orRt?72mb5Qgtv<0P2>LD-Ph z7-tP`VfVCv*Ao%#T#Aq-`Bug{DqD@KW7!eSIuOSthu2MF>0Nsu{5W0O>%iV07hrbA2c`;@0`mr1?n)`tb{bA9S zTqydvV13sI=cb?B{1ltg=XkmF;&{jIAEF&u-|#t+MZ7J*cn7VQ_;3Ir9GUnB@APYqx%-T2-Z3Tyl2l%7S?vwi@26U${_!-#vFnrJfBNgH zzxT@hx&H3|yZVR!pVn_w6RF?V&djY}neI#ey*5+7N%JlLy;i1u;rsOWS})fuD`=>E zdn%It(ornVcwe#rowZz#B5Zd4tV27zKKZB;FPBf1YvOi_$D6&TN|rbN=lWs#VV#H_ zwT>dsS}vfLn%P2GV`M_RlXPd>A10k><&h7fcx_CgtED8q`*PN@-^j!*#F0$H$i$FI ze0x4QxieJU6cG8!!s?vM@}m=FLs@JhkIjDm*XS$VBiH0^!s8wvRnaBDF`-%1@qjZW zk*|VuxdZpv-48gsustwhAiUQy*EemwW>5W{oISDlznU8gy}ReJXzr$u9cOV4_m|K0 zZClSJw%)G3L+iD>TwGIzdG4m6g`V4ZcVeck&~uNY(6exAp=a5QLXWGM6WnvSwrY{X zvk>dt1~=ry)uYG>z;B-vuqICyxU1{M?Um29tlnY-hcCL%vN6ST(R~&d-Dh#peHItp zXU#bjpT#}*Si|(_EZ9L?n`z*QWK1(jTUu^?#6y8SR?Tu(0 zGSI_X9!q)wP55l9UNPcqD}yb23-BBlE1MRQ9&0l@4ypHIh91WES7ZZ?`#IV$^(Hv& z>U_M*^6vlDo&5h#T*)uj@y}r|YldqmFMBbAI2@7t_|f3Gg(oaT43nIEi-GUhUbPpE zlq*fOitY}tWj7wIwN3TgR~3Hh(9ETZf5WGkv55KHl}sV<>88-!WHo=Zn)Z zyPiC6Q?EbA!x5h^N6de{z<53VvpXPqV>>j|W-!mqp`;~5$@R0&IR6A@nRB0bQaEYk z`8a&YGZf-fgPc+n&A6ahiK>9@OXS@}IT7$Z*7ISX*yF9A7HVyV{?GP%;h4bEnjtmUI?3V?QcgJHI5uvb;#JOhTWa^5K(kU*;dQ#0gImfT7H391(h-%TShH6aKze*Q)cnXhj@W z*A9qDle?3&{f;Z;Lc!f+8|et`lM^m{6Ndu(QDA|qD#)3~o>I2w5T{7w6UF~9u2J}; z(2E7P#R=QWE3gL&I8x~xv@8K=cJ}9K;o#%n0{yrx2?Ac|OvZs?yO7Wy0$t?x1Z3vn z02blDaNav1uzfPeMeADRRkpg;m_uQM373~~-vIk`RK?nIv3YWQo_{jt6yrT=`(rs~ z+2x35Ex&Aji=S_hRLq`juR>XI-fj0@iw;z%{oTKjogCyrq1c;mn4Rk_%txC#f7YgJ z75zL1uA6F}eXcd+sz~-ujbrxn4o{Fw^NdVRSJyxi@1pYhSXYO3C~&ZVcRLHU{ei9p zp_YQG))d)zH;#V)%zoaaoE4y}EY!XYUX#nNjg#eawqp~=u@%i;GyWM!6~!LW?U{j=6soO^Y&KtNUnxzw_1I9Or(SKGl)M(g22NZ-_%C31tE#(y0 zUuY$m6NAkERymc5A?d;@u3tNA(e7u_ z$j$s-%RF$*X9#Y2YxoZ~au{z4G}~6ncI1~a{{KMyhx1GJE0f+LyJOc24dFk>xf71V zyr}zEe@w4*x}1hi~DV6KV0k~n0;7IwP;A$lvmL#IEFG;eKxcjx{M+FEVgt~YZYJpGrt=8qibJ{L;Z?N4U>-M@R1 z7XeujB{uV0hp^X0Q+MwkoIa(L8|(J9b8tW8yKSTP*wv$9ka)`;=7*OS361K)C_Ok` zkL?Fmd__ZwRJA4qP7ixG{!fQ}`peq*Bth5B-e_JYab_a%`1WAZ^2I)FlXj(RO;|}Y zL~1igSC`M&oJf(Z9n-ali+d0|91mHO+nqzZ`KC{BOCkzakv8MW7B zb%gd{)rxt=EX|AMJotVt*sMB!p{kv?u3Cx3D1w|C^4Pk87nX(D^Be-DSM;F z7w%P{4!6wX+_QLTBKHm2q)klyYz5ZO@OLi16oHI^yU=9$m{8xZH)+*9k7q+uRGQ)7 zi|R7<$sIaJW#Y_wM(dmW3a&|O^7<>|0A`LTJ%5zQyPsi$VNSNs`;3;RAB*6Xk z9vJ6~d6uszzt+h&@mX!;wYPXJ+a3`jJ)UMiP=PB&k)rpwD z?a)U0iZ*LcPwiMl-Ryr{P7hc8$kL%=wdRqa2`k8s|=XMar_5_>Byc4_=S z-Q-*Lnl{LsDKXEyrY$s|py@lWXw+6}zSifp9wz_8*ZK0E*PhakU+X*myjFNa^CCe) zI*br@#X@53abV(-nrCT$|LeDy;V$Xp26wr$$38?Qwk=v}!e2kI(cL2)=EQb2Yj?IiMtJeRfeMiH&qy3d{ zLr1Y&OkBLqo|vpAxrW-a^1R=RS42yt%Z%Es?oadHX5RfpC*HvC!uMLPDE-T#x1U1Td@pYv_DmnektS6rMbrEN{xBS@A&Gi&|U30JRNfX z!2ynd?G|OC&9$d_(PLcf=ptj-wH}uc9pWdUD%Yd{+LMz{9j)9Mj5XVr0(f&BeFhPm>^?`h)*Q1JG0 zUKVk9^3TY8lYc&t!DMuJDKzWtas&{W$vA*7v)Qn39G+XwaL@fUQv5KS93e_tC&`&$ z9K%S(>3pM|j$J!u{MV@*Yu(?tuyDWQT=^OKv@7*c0_GOWe97cVS^)45-v$RWe?`9N zVfVbt#U5M;VDz7*>m4^y8@w!Ec`&v$=iUdsEo#t`Z@U{8-MtAAKE(4C^2E53^)m+_ zy7K37xggiG4wPgb%TPe%{>KjNdRAWW|3o6TO#N#>ttbD2|J*mezc*-oQx4xtsbv>A z!p)TP9v+bLXMiv91+8EI=WxAcgHRl0heU7XQ-KbRdyzi$5B!I8C#gn~{)(hIQ*iNl zit^j{L`VcU$1u(V-dqz$7YZAce?{)KnZJifZ0a(2IfY|bzCop?dJ(!4=Jy1l3+ zCBEaf8R8|yug_;hyLq$!G1GVbi(006ilixhQR|m@BkE&7USM$Q-jQMu@Q*O<{QZks zA1zI4>A-|HsU0d3t3d*d0`1pN^8IC-W_Ly33H5bFfjqx!JB)$UHb#nFC(jvKunCn~ zMf>l`(G}GsD?vWK(1wnAM)(N2Y;*shd0Kn25pJ&9+u2`3@Vn?0u4N|dZt-vKqm(D( zcUG(Je58!e*n2MS{wk{Kv+*|f`))@kU(rii(jDx(D_%I3y$VmL$;@_adsnzZ8qdO3 zNIls-o-zK>8UGe0UgiH(*3Aa%-j8WMa9yFd{|68oM-eLcrdA;Q8tdo&d7XVPzN8Iz zb(!=tjdAD>`ZKx}O1dzyBf_2iI0f(uZu`y9>m_+|R<@$Q&&i#wFKO51ZcshuiaoT z_(Q0Ff#L7EHZdn@=+y3^{$mWksaTb&sA4{DkY)G}jIJ+zditElLj8Lh{+LB^C;B|M zhzdIy{%%itUj4(?kBJY?kOp<%;%WUu1LraOx8pa4f0qlgyQwESUMT4=1V(6cS17Gp z_nx6ApECHRnmLvL{*L1mrPZogV_IM7RkGCu}aS_!X&;CnJX{$Rsfo#6N z{7D-d*O&fP-0sePcQGNocWRlYzMsG4%iXD6-8EDADCXYK4BqZpeEUwMH88_6Ix?3C6@5Z^PH|>Zk3>~DB?*}OxwH@a)7RFPrW#cqo`EG4Uzp*w- zH$>Vm6Rzt>IBlA*k%ZPS$9E)@#us=FV5>X7RBUyYrTV##@A9?p)+YK+w`zIACBgKm z-agOW!x!n2&d>@ul*bF)!pvDWgv&v1nnLqDt?umIr1Ra=s`VZFG_H;tRK3+P@--vR z)Nz3*Ptt?L$QprboG_ev&Z7ZqdoU^9cOWW$r>A(j-Ph8prF1Es&i7zgy?MR~9NDw; z<~`b$INzC_TB0dF&9*c20czyVoFiJZ$yGL|yzIWY3+}O&SeKQ|b(Sx&mMvT`Yp!$d z!Ufi4bLP$~w^l5ex3KKK@>#K}#OW-bzsPBIF0?LK`oMy+ne!`VhGPe1SxXjN3bf8C zpEt`ocY$?DdC4s6{Drg1|Hr&8ivE|(3l=&r6|igxO^TFIws7hEg(b6QExC5y+y&)U zRla1&!X?*-E43~vSunTkdaGJk;j}KCZJl2}f8mk`VpWVaM$Mdg|E#48XO>AXX5Lfo zbk3b$t_lmL+%jY4wO1#MRM*TZzyBKLbUvUKRLq;_>-CW~sJDG;!Bvx|Uv=Bu1y|)R zTvC43bb34Is(Hh%y7sD}JEwo7{WUsa=&)sL^9eO3P-I&-P{gUCY{8{CDk; z$@Nt`)Wl!x7h%{V0?$XnJN(+e#D5lve>Vb8SB3L`8G)m#!~UE82lz=i-Efr|NzlU^ z&X5~{yf&=lZ)pTpN8lE(?eW7}pDUlc5RUH>fx{v&Cju8np!PF% zfq6tM1{P8AN}!qe-vVa={|J1M_?Lj+0pA3^0Xz)+HSwo`dE`3_EF#?U9e%cU?btF zz#;f=06OvC4tx*)Jm9my6~KoG-v}(E0XxM{_+A%|Aw--8z6aFLf_r;CkRG((MiIT=JRrn(3y& zQ>NcOCD%I0zNiG*XubC8p;@uH3l}}GWbQq4oYrfH4jXB`apA&y=9Lez7Az>cI(ClJ zxoGM2*IaYYT<4sM(yPlB&cEg!BmNpgM*3F&r+%AD#l{NT-G+p{X@MOXR=#wp;lHmu z=YfddK5t$)&1GTJk<9bTCD{18vD|sf(()x!O6Hf}CIRHUwYS zf?4y*mk^s1nM#V)4K&hS5rgN#TkzPs@{{u@A@shy4 zbOOR(T>ly~bxC>I+@-%vAbE?J8>W^x=NK&${~QtjxeFIK%a>y(f+#KpcC^6AHn;4) z+=UejoFj)zqRAzTZk=1c?55dLeg1MnZmuX_^1#&cC9@YUnJ+yu5*r=-*O&=Q$`@CZ zFDQF}T+_;LT2#J33XxK$NlSbme5v)aPAi{RUb3`&ding4MRUMhIC^Qt{PJ*veV=`) z_3fPNTrw|$N#D6IwOgIa^7M43+S3`?+ByvyJ)WUH7;s|s`U`Ls2|HWS)@xK*;??vF>BJhg{ zRFlKyc8$P{2pk@PQ^L@tN+SUeMc{8D@Yx956@l+Zpg#ijDd7rIB5-5`=0#v}1TKoe zwGsGS1nx4ROR4>lfD;jDzA0RAVgwF~!0RKhFaqz6z~vEG7lE51@J|ug8i5~0;Aatd zRv`7OuCj&CpEUwUM&Q&4ERH~D1U?jjk3`__BCsI>--y8XBhVj#7bDQ9jK^AjQop)F zompg8DaLb}@k}^o4Ne)D#o zhm7ZG(|+71O^0|MHOq5Aw~u*hN}g55bA|C7Fi=9?H~V>>k4ji#S6`@vB`$(g3ZCng zmFGy~Ie(zI?=zksn1|v%Y&;)SHrylBRGzuUbEENGYnG7ihPy@0!2PlDeAzMw_Y1}| zMu|HmTAmF?$cyrvsa`TXc}Da$!##bVBzjn_9(ysx#}3%e=JGGwbG`i|m;m?fc?u?asR&iNW4%lt@0woN!7T z_qldJ8yK7NM@>SkHn&F6{Dq6vEpAP9>zH>9@s)o`{lpOu&~N)HE%%%>sy;| zg{J4Hj=0T+mv<&2u&5~PUv%5fR!yJK=XW-JkZG4o^Id7vN8~l0HxjE3h|D+sq+amBskPQERZUm0L^9k7)lKY6 zh21IDa;!bAS@rNiy7ZbC_@bmg9Aa4&=x~aOhv9{pxSX+}?UU9xnSHbdLgmqO--+TrXCG#rYjmA?5XOA8)0O-(506BhvehBee20ps#e-ChWNHCRFE{` zq6@p$o{psXB!#%t%i^|ot^Io>?!=9@;Dr=*V_jR{%MujD*M8KIAk`K;Ims5BO(Ary zLFsBo8wg5^QH#@mrHb0R+JY+6_CVTswRm@~?~7c0u)ZS2cSW9Fs#m1=9?a8IUC)r0 zo9P;gO{(#@Kp8E6eC^9=s;)&>!|NG(kRD7_`N6g;Y{3(KZ9&tVrMsl;I`W<*&uLT7 zhU2EhhG>vIoBXr*?M+FjtrtCXOAPnN-F^Ee==1ff`uaxRs1HbEQFW*XU8*}V zzBa|=KC+F3=jk>}nnSO*jrXm%QO}PyaxO~p?YmL8Pv1*Dg2YP=7?N1a{Zh#ps{RPv zy`4`}*0x=zg1$a<>pELd!iDnFcO}*?BJ6l*!;v(OL={*fl-8E$yVIfH)qOn$`)^`2 zFNPYAlW|L5-vNi7ag9;?(4^W&s3eA_o}h^*mD*lLMN1#<^^{vTd2{ZuH9f~D?p0Yk zdll#wO&@0VWlYqs?N?5f{d(BK9Qs~T?bvt~oNY3BrGu?{ly~#4B;T@$dWoLb$M?61 z`tLe#q?n}%DwwXad@CmDSJ@IM;W~1iVDww`9^N{B$ElwLwVjCjPS_5V6=y(&=)#bC zQ882`sI7ZHsrGk;`l7)_B;>08MVP#;@A%di>Vvze zV5lfvgSUIDG4J>e7wWyDCXvLp*Y{1K{&3f6xUHB|gd!{Z_#U3DPfR!PRNb?dJH(Q6 z%&OZ=n{9Dr2Rp}IQG1iGeX>3_oNUV#wKtHgT-lnMRm^>iWti({B-f7iYyAs>jcABPO->j4%Bry@yMas2S?(ONEb4t^Mpm zDEZqc`&JX<2zND|K)jrTqJJTJ3R7!8C7s0Yh*Gt0(AWAWLc@*z%}K5O3voZKcx&rV zCRO`wXBB)LqAO0lF$nQB%1n^~YQODla|K1F{!?cl=vaccmRrXI8GmIQVLDsyRCNUm@RbZqlbkQ|KY3uJ?U@lYZER z=ZtFWT)T0Z@zIwi!>{6MH}13rsUc|ii}Am9ncs^4gUkH3e~GWhpB#>_H_EYv%V~+L zl`=P`Mf`5F%Lp(ksizSGZA~NyHv+$6q|-2RZq!v#eY`D*`|B2nqa(d$mgzur!j&l1tGiTGAEvyu%9dSQe^4PUe$FV3QL2xT4zV9@L<^0k zVhW7(&?wJnXbEL8E-KAx`b#kks@$4UrluVVb>4D*fH4de_udmf&ehw4%(999P zEejfQuahCz1d$5i)-SWCG`*ly-AgcQFW}WbhJ5w(Mm?G5+cRAs5p8&Wo#zWp*OLml zK+>m!NExZ0R=l|tq_5S^tU4krtx|G>-%i)ICXO@JwwcsHSnn~3|Nc&WtLmK_bh8g8 z^T*a0RTN7ZzTzT1snnVqWE(fQ6g5LIUVMX+QC_PubHn~A5&xiwe`3TxBsW;xUGk{4 zNkb)0twj_E)$rWl6_j&@mNL>PXLPRbuSNO*eO#_DRHXNH<>dxnLt{y|knbEh_LVknk$S2drb(iIH_s|bZKC`mL zHJ#Gba4I>Jex|E$*=_nT7kb3@&BNnrrF8Vd?NahyN|jowXT*taxLs-xy-{kI5UC-- zsNpT6W$M|QBlVVNzmZznZruG%8`_58PRq;}h;U@}u~dz*Yiftl!+D)+PnfiZQ)Q~~ zQqzZ0u*`NcVjY#TvB6aNMtG`(r|Kx|aXqV6cAE?=U zWAD`O>~9;BwiA{5r%(}sptb}hM>E^TROZAsjc+7eWNnPi_aAra{jV7SRk!>YYJ8H& zx}1qk8@>n&cC?ehZKkA#z7mh#UW~E>dHUjirS~eQe7{=k4$FUJb!zQ84!(UC?ViR( ziph|OQ76gAxG7fF5=cuUj}>VtMY)7gi7!4E8d2QW)}&B+iu@lg3t5-3hoYiMC+> zKB}>ljPE3>;B$nnGR2IlA>2hl+-p_jA)iZi3fO3L4vJ2?(!CRC;LJAD*Z!`ms658L zwV8&u^ioBeXjncC%TPAgt2zv?%}GC>MrPQxs1mEbBXiEX)|C=RCL<5T z9_&X2Rg?intW;{Fa^0+Ll{zvm zxcD3-i;kI!OX|$3C|8+p9zf=_hxDyw4<$@5L&cDSK-tZk@o!dryO$};;2i5asrd;V zVQCW9S;A_Vv~wPcpPr*klX8nxx17&sMBY^hoAtdCYrxkI#Wd#$ahWoK3% zZFZ@sd(+WhRuyJ=H>;?@Rm$Y8L8{q?Xwa{=)dZ@grBd(-Q@CMKYWp)Y$A6Drr6nM86Ko;|Uu@wCa*@C=w;b-{JC`n>C? zi&m`L1W}9!1IH<7qo4^C)q^T6QQMjpX~1Ts4;Hy1C_KF=w&`*-&W8Bzh4|=9puUSL zD!q*OV!sYGmi`Oz3C&pJp_6WC;w~Wy#%BV=S4t}nP~qjoR|=7x_-ClG6~Yr@bi$TV ziT16>C`83knGhunevXFeU&W9574b3?rMsDc;F^x<;5DUr#bPlLy`Tm5G=yi13w`B9 zOfIU&LG4A2*~%8YBq%AEabMRQr@r3p4;h5{?}$)_#|Ed!a9JYQS_KB&G`NZm2`5z2 zxO50tX16pj-4d;eB;P6*mAH)+C5bMhZs7rQtIKPd@$}!g-l? zM=KS)Lr*hsr)etK>3C>|V5If4_)#27O`gzA1-TX>c>u68@FW}(=8nCor79!Vb%L>E zwU{huE~ns9>>&Rq6+QNKXh(O+M`iutn9nG9vvq&!JF0)I&`0Zu_)$NwDxW~7yrdHt zz`p^wfeuUO7;aba1cIiV9-JhRPH#@=s?mb~9sCoIg&Jo=JnuZT^5|w;r`j4M;3g_G zXolGV0y5k-Sa&A$^G_Szr*i2>8%T;jH=foA93pK`4-h`DakM5Ri$tpL;sD&;wk>?_vuM?kRaKhFq|Af|w(+g#&nv)-g6$levrX zRwJ#(YvusTO_429nYi;ozZHK2Y*h@M)I&JJVpbYw_+c^eOHV`ed=6|?qU+vb#q>;% zi|Mfyw4({UYNhAW$yey4bl_#6xsxm0n~q-Od><;BrH4^h4C(}>9R=Aa#2qO_@1%le z8uv#jB!ZESG6sDcDzcGJ8kI()JP@apDMKN{P(}k~C{RIOdcJ_WnVRZW-?>zR1M~O2o-tZM(EVTvd_Y< zR@}#!k`H_vl5uTPC>x5QHPZ+g+LEtBMHU*uk?Z7Vkrh^ChO+K;rMi_hwjP18mI%pU zVdksGolgUhaLF?MGS-=uD8Tp+oC!7dr-FK9f`W%(+e?+Sz#$#CViNtdqRCK(gZG)YJ_r}wu_vom7Ms&Qum`6ns77JO zvbIsi+F6w3BnlJ-`Nt~}GU$$H8M5NLZCkNRbz2&1lcTrYS7~bGouWf%DWfpcA54q0 zeN)%fwk}a6dh5Eo*H^ltu!1tl%rvX76+C?GI6Hgs4`-la<%on$j6NUO)EIu;5G*y3yZ`GtN?oyPGOH z4ck?Aw*{Yv^-36;jj&~Z+?7|@!hYh#f83PZa4J4(>*CI;?$mX*pv|O4oE&8fR;y&M z?PWV`nd~}fdsz!ErE-pr?cmL?WGSSwliDE_Xz^+X_aGaM>K~Z{@=X@+b2RK2jj>(U zuzK7fDwcV~8gd-fCSgXTaUC{g?21JxXigfM(~oFUwrE?^hKF7H)~BvlO=&9S-i-*4 zJ8v56RVrn$-K2SCC~VQH$$5`%5iRH_6|XCfQ{M3=&CnZ*(RdP}BPT=Y?y9kNy`o_Q7@I;Rr=gDuU?Na3Sw*!}Eb4?c z>sqsFg?2WYRpTQNwX$i(T2@v>rEnH+NT2x#3$ILYn_=T`(WdsrBL6XbBnrQN+ldv9 zE>x}usyK)_3)W;kU}(lV{t|e+QcoEP-yb>0jCmYMC{k>^N_v6ScadBL6YPtha)qN2S!bafEHad=1UzV!xtIQpq(-5l6*A;g?- zX_!f&bLhPb$kkY~z77^MraM?#yH(P`<1D3ZoNRwGR@HHz&IrLoRIK}mn?^ws2cRGL{e%K*JMRJOCTn4(oWoW`?1@_mL=Jzou%rCK_i z(#r2-v_6R?)?mBRVj-gG1~v{iCtXjZuvyBr1K?9^5Dz z3*#=_PypeTys8DuAgZz{q@fY%u#l_=g?n;9<%x9Fn3rhV`Uonzuv`foGa<#+G$1`? zR8+be=~Cvv9&4C@R{=}t)Ml0B!Ww}F1UfcRp$qCPu41yGC+Se@EM_sr6M{r#f*@x> zj8=xhO&$}}t(e(FyD5esH|Sa*=Q=bbFp$m=O8O@#x0pN~OD`G9I!O;^+YBOf8B_>G zs^P`-N^CW2nXQ_m)GNpDV4njEovP0Zy6;epveli2QCj4EA9{UHl&$H*yH#!7KOb7R zuM^wfQ8pT(0$U+u88RW%x!2QEutxHO#WYAbDuV`=(kP*UI_CdZZL~-T?B`bf_eR}E zqeO7XP<7}49TSc;LO4bmvg)ziqa7U6@|nnv^uY>61h($1L!_n%7g&I$U3ITZ*kAy^ znT%NrJ#K|UCqStgjAOA`U2COb(o!3;Us^AXmHqb)Y(*h(WF4pr%HafK0kWFKjPw!; zFN47I$S0_ma%Pb~V~+K_bQmSpmF&LgIQp3>@nFY1y?>Z0l4 zy&l2VeUMpoE}k;TE0bGQp=#{UgqOBbE#7Q)IVRO)yt96DLLIXm`xyL0PH$$0E2YO` z$;uIV0CrZv1*?ig3)b1~H#KaMnJ@tYON1+ym!21vG$-W#P_5kSO&3EutjgSAEl`cs z$cj~zUo>#Fr=s*R@*6#ru)(kNuTn~GW}`1qHh#^NY=pN1WSJy(4h zD(Z&`WCtm!=SlMhTWW}svyfK#W*b0q+>PvJo8M+XfIAP3` z%Ik_!K@oUD2N|TJ5iVmDs^iHaacNg+h#trR)wD8bQAys*g-k{aLI&&T21GX6O;H{K z<`LAYSn|xTFn6~Y0K!5xOrc_=y_E45UP7I;n2)FYys#K z;UyP&gC^#PG?w>%Fk1}!37abBiT=zR&tO+9b}<$kl8cvdb~jaWbptA{8lnKVomo-VK^N{W4)c6eWB_qxwy&UdTYy>w_i z7}$%Bv6;2O-h|cbrS}t5luS|q*IsMY`gaM~*P?0#Rc%bI9jG#cs*Q->do#MSm0&SM zu!vF-!<`YoHj8arB|X*TpSv`^awmF+@pi( zdGTH?SaCo@l)GI==Dx25EyHWp-@D1wl-5UmZFAdyXfs7MRH0IpvOTu(g8is%OH20d z1kI~xsB*6wC&apu-fmWEq@extID{43nQc_+f>n!0sG=4y)2d7d?KD`CrbQaaFP|Z4 zWoTwHEQ79gLH&%&iO9I58w$lc%;8GRD)*+3VYS1MU9Sx_cz8f!#FlUI~xQ_HPZ`|`iXgEvsN$CI4vFT_j>1ZkG zXeK4hf&-9J$HBlm^k6drXfu2sgHS5P{~3bkXCYz)dSram14{W*z88HBP z;L$DKLCAw+V5{YZum!whPvBAHK?d@`C7S{=5s0y1Jc@zU#^wP_ZW*uQJT?|sLT6C; zet4eYxU?sbK}Ciic_3!lX5_(K(4GO;h^!a+{!D}u^5^uwq%jQy!?WR_h{ojV_IX5Q z+MuHE-90X>GF7YS!NLVmpn5i_-V;%o%A;rm0%Qzm6zxbfB7Il%D72zOq7{iIw1-0} zWes+;-oyq!>%3`-dW`=Jyw z%S;oh)1PGeOl>%6Ml)g&ngsEg;1FdrGU;F$tfecH*KRT$yoI=2h^kEXdEM%8ab`<) z9^6xgK(iY}$ypbUjVR`aoQQA}O{>_2s&xm8%?DAnW|~ys-Tw#`J&3Bs%go6_G)%LH zgm6SLS(B+q%u5M2<`@rpjUK~D-i zvprNK=~@HfJREsI6}k}4fRQMuHv8h5sQD_veyPRMyApoIU1O%Om$|ll zNK5ufR>EcMc1zrVK`q(BL1n{Rvc+FLv?aR)wk{nV_V2B3n9wxHa9FyHLdbOA)UaQKN2wlD`*2a%FM?!3o9Xb%8DW1`UQ70k zZTjJdeiinYQKq9!JG`Pe?9ahp(54PQI7|F4wRRu@6RoQDfjQv>6KmS0>_Aj5pBMIL z;nx`7WsAc882tA;!|u@PwkZ|M!|uQ1c0Lq#zlnRPJM4ZM_mb+cdj;;rkA~fM;9lhV zb=Wfo&+N5fcM9&B1huWaF6=+|NZXXE7;W3EC&T`a@Hg~U+sd8}`*+~~yHjl|tq=R_ z@c%GNZ7X@UCHsn7)V8Jgw_3Gr(}17O)3yx*p8u7$Edl6CoUCn=ak(~MZM%n_xmNvV z9OE)&XisfhHSnHQza1wi6tr3S_3L$Guq*>H+D&cC?WAq9xvR$+^9J_bU(6f2b`YZT zin{I}m_J`Qv8*&Rqc^4Tspj&|sgG1!kqk2KbZmziHImu=-?jnO=WS~R?)0J;hb6qoMLk!{oGhU+mLoy!hU4QO(;xDc`Unt%KCjG=EH`CX|z# zfEM8O2&r-~kdB(2ZnjOr3ch$V!-RQfeL6-5IeTqIdrm*^aviP5h!n*H^I2!vos4Rz zm)!bR&PLD_ut|Q?U)XVGE^sT7Fui;Xpx@TA}F=t-$+F*5Y`Ffa4I_; zm{D~ItDj)Wu;YncuQe4*_s!M#tFh~$l0jE*r<$Rwa9EmzL04}_=t`fY%Ob^vU9UA0 zbDJ{7Qdws+gjEVnRLSNrL{$$_&4dd!VyhLR%3)?KV+}8j6oP^fgPXy~Ghk#H4V7uR zA3YXL`EzJM7Av{k{B-&dcL5!gF=T>n2Fw-z|I7L zqNi@<4n_;G)NXM_0UlUJ!E~5 zEQ-sfuBx#g{x|Vk=z!GIfw3zuxG8I^Pk$6{77pk`aTIye3XgJeUGDj%OJ9A|0!S&J@3B*ihC6HEaR~ zI~EQ%(g+(%V_7iF-4H4=Lv*Jhx|2fPta$cg#jJtw!Uqxhbgx24&AN=}HbZn}5ZJ8C zh>oz%vk0rkmRzkYld2%PYG}@697<5#U1eqxAi-osG82N^4BzKMbX0h6C6;9IU*WM_pB@=#RRL^}0C#?-$jOse@4boOr0Acbieq%ez{`5lCd?}MWEY%uUlP`eZMB1ak{hx%9?$I!7V=wX)7gE?kY)fIHk#WKrA zL61<7tka4!*x{fuDbOqhwVA%2(?iT@_N_u(5)TU*i%=UJQ5*#|vwwVy%I(m`D*Q8< zUT1aXwU|_~l=KMaL3o+T=ce-Kda51L7{#e7mttvb1#KOLWiTn^Qn4(LV`S3#Z>!@y zsqVtUVU(4V)|Oi01-aV@sgu%akv!GshH zhslnbiK%x_Y87s+c^Sg$i1dR_7Ls!0=R#}q7EYY^YP8dz{M)0H7!D_Ndb zL0mnMeoLolTgBqx=8Yg_R)^iJf)taFfr0bJ^2+FK%el~S!G`qM*fC)#cP@ez&Y!46 zX_d@w(kl&Z#>|W-4Ux)i?DbSqc|QbESwxk}L_p`Ti8VUCFo> zBc#eATXb&OqC*6WCM80t2gCF@!&TfJEsDmw4ufj3ZeVh65DUj|@Mj{K1|pa?2tgt~ ztz_&Vp4A8yD=aI9M4%5W_}>v`18E1G5BY>XdLT@Yh6k6zmU6D^a}&$-??NNo zFUiJokAv=)G~;+i4=R?SnniDaM?N>4@Ho@B>@V9`|9Rc9SR!F1)G2xb55u>Wu#WWP zT}~}1)ab9MR8BD!U;oRV3(qT7J}pMidjzbw-==596#mG+^t=pyuQ~7I=dq;nQtfJg(zisbiI02Trg1`>jKB>o#As}RP?3v0&pcy9MpbY?J^ zF#-0&3qC*sJY#ntYY9zBY=#i;lWT~lI5*%d5RZejNjl3&LI0B;gDfQ{@bJ(R(HTEr z*?HXL zQLc0Z4oTwCK5#o}$Q|BI1(-(~J3Pp45i$vlhjGe+_486#MTgOGnz~oLSV*s^$ctHMv3Z4_ns_!mAy(oCiC zo)p3rk~CA2-N%QWBPz)gvcoo?T0+`Js7c4Ti-mnHSlz_}sx!eKl2}42QwSY{PlMvX zVq&DQR$XFBGo}?oNRKGP~{z{La2kb#Q%~ev$5DCDM8hDMW6eVGD3ul zD^m;$PXIGJ7wMT!_-k?F^4;UlpUeJG@oc2TGFqgv&{N zh^u4GWGd|X?>P@@WwJDJOtWUmCy^O)q=LLYF(PMAT361M(l%CNb4-ga&w0S>Ln)q% z4Shh!T#HQ?31MXZ-;D=wn>j;@rJA(e@qf=>`iFooEG`Z!r`y80SEYu}sX+47&io;!;W`$O!NIk#U!z27JOhq&{KDrWESFyfnW$ z3!+$#VMaopp$F=*(FP@@mqC>+VT$q6nDuZk2?EdzM*6sZk498jlpF{5vT4d_J(4Ee zMOltqwu-#4bAK4&i>5asXW}}_#mHwQ1q2q$N>gL>f%Gs+R*Yy7OIGeUkX{d@Kl%q2 z*RbS*8o?9zUg}G{=Z>~zDMrocK)nb(rh>cxJMiI^Y+1QFRCqI%*S-n%pfQMFVx!A< zoWbIi*kB$*M6Q-CUr@IiE(tbFHCiI^>I$c-31?Ek4@&-MhkzUm?>i`>MoYM?uq_|$ zcGCeZnu&491mMDjH1k4rdB{#fu`MVn2(VNlNKkwuT|mcyHJ$hD7Vt z!{QOnCk#i7YlF_ze1ZtkhR7HvGM-`uM5*j<<|LG=1?gw7sFLyc2I&+*n!HmFyTM2} z_dyTF1X~WUBuHd~oTNeO02+h-Cwg4iHOkaAo=AYYVH2pNiAG8IfEcKDw9$YM5G2V5 z2=WAR@{LJwL5MXZ?OUN;Vt~*A20lsm&PvkTzjZsAYHH%xzFLrEG}nf`s|h zZX@E}V@&3Z?=Jrj<3fxKzxzI~r@mx^<+LdhBgCK*{{3xyz5EHJd zL;$lDM=~(D_Q$md%9#sD{3PUq-mCr1%t?E!J3h6I&4T_?EeMBFz669+@KFt@lQJ5i zHoRPio|I$am>sK;F&L&smzWuv4l)FL5!oPa2VFPM00%M>x6vG=mN-*~ zu-Ov#4NY+mG9%Ukl3h_W5Me`;SYrrS7w0^1CwZLMC2oytE_OMJmt6210#OYGj`L7R zV2f@9(&8OYKIoWjj7$dJPtBpEnB)Wg-o;oXD&bO64kW{!iw6{sm5j4c)mX53x{-qv z*)eWOnAHY(pb@%LDk)JU8plQcM|W?||KSTVlloVl*cgg#2k#fCOPstybm%P2D?u>X zka;YX&%`pl@|p2e`$G7^k5_3RO^)xVj-MKS38+{@vjb}}#s@IJvjS;z6?rAzl$1PD zv<>5sq#Xa-EeXRSMl3G28!-+%hDbPMglVse`kUq8tO^r$ytSk$-^*tr&sYcjPuk0IiTYLa-k{}USySh9Ra zQ53a;bV6MzPE!+yEz|&kJ$Q#uQpnaSSb^DxJLY_ZXS$hH!;m4|`#<&J^}G-TO8IXl zAv{75@<4Af1moOe>7-l?0W|&!qQKojsd6Hh>$cspu&tCnYAQM=U!D8BXJJU`PqJ5(d;kV!~i`-Y@7| zXM!Z1O^LT)lZ0b}C~q|4I*1YIY4h5NoD$}6k*;vOnP-0*g6kGUb{Q60XZ8np3a^li9=4o=S7T$mKG_zhC7-7 z&z`ISy$Pa9rbrD^ELDI@3NlSutgeW~h80QVT1o@gy;cy3h*Ra2*g|B96nLSB418+v zhO@`-ZYkg+Tw4r=dkdtn=4U8EyJUZvCnN%{je{*16cJU%&>Lf()$_8~Z|Ni~GK?cq zK$uHif$#VOKCA|mNdy8B@ICJ#V%jcZWbz}Vs3M_^T|S9qSp#vx7d$kIGk!H)DRVQ5 z(l7=>MRBU+9?OvQSjgrW*21SkPO$?QUIo_wssAVTma@ zgZD3>?zvp*eyuT5Fhh7G!thlHYU*G~zYK`*;Gi?qaII7mjFT2f{2edHL3D(szz`C^ zp{a4T*0|=e?h`A>L8H0&5E>AN*Rsexh~WfkQQLPYn0u0s!>EyuccAgG0DMPGfj{=he(NK3uc zN_~xX37M(e+Nm#atp~|sAX(rGXTlp?25M0SAF_^A|9@J!T1Wy>JRT(F{=GFgSKSoT zRAqVm{=Rn}Ws)QK_dWPxV-2a#AWkJCZ0cg-Fxk&gl+ikuqUIPl9-*O^Nj`8_cIE@i|f8fgpD>KU&LS z9+E;irk*5vLn=Z)2X*3FLed^m5BT4F0D=gYAPGcxRGTTWZe7vkVzDGnYrW;}YMb!G z;sZ1!HUbeQAj<+TF*K}G^LC*Oo&ORGQ9K-D!jH0QN6)HhTj=xzDwPLGAgd$fKFxzp z05g$$AnRAsOJXB9ZBt5!cS|WC$b;d+``gJ3;*S-T@80(dUTLNx(LU@9C|k{8(2zTg zhw?_j7=_~7ich{F28Vbx-;kI~UI{L3?tm1D5U|uui8&|X z$96cOX`KtA-xpXl*`2{r1;^h10`o*MB5s#pKp z7W1dEwYUkAu2>GyXvYVB;sdpKsSYkR!5#}!0v>iY5k9HIm;&eR))?0!l*url_w8Je zmOGL6=eUkP#QgHlCo3OoSr2hx0m7+kSEfe*mqBjNChsOhFZKp)G_>nbR209M*4TR8WRACky||5t4lz*Ka2hDYHZi$g!NXJwqEwhptEcMX# z;ozJ&DVui0(TcKuXC;a2TX)xo9$_5G3*<$_@C9-4y!?cI7)K7BN+ud`DjN0RNbooD z@>z@NRBVS#CMzFtuyo?a;0@P?CpxlDWrtb$bBZ}D*Ewd-JRat*i}(oIEP{27(1jP3 zi-oFqI^VsnTkn%0ao0zxwkP~QFkOjz9V->)v&21K2HSTi<*{I<)4#|WdP)W1Frin# zALN6eK#@D40RF^*JL;#gwPE>`3J6sQNpZlKaW?LYx9R*f>0X8-G0G3nR%i2UmJQ4@-9+c_`iu{*@DJjS}C2J<0_hDuP@24c2 zMVS%ugPe|%;gC=@oD2i$Jz3_#P-OOWgdj`w4MXIUgd|Wwd;$^~=WtY3=1eUi_rkBJ zrxG5ZV0Qx+6lH+MOzgfK6trRa`(d`v#b zvWE&7R@jQ6Kv1@X%jG*_5k(Q9scK?aNKXdf@J%q!JuZv}#Kou<9LwQiQmIhZ0^8lz z-3X9DO!8k^evwLug=uet5bb@=1@y;h&iy-HMRWhQamO;b_btq`PUf>u0@0uidNI}_> z`#_vnL-W6$S&<2=DbFGsUKME*sytQ5$Vlav8S^a4aC0XV%;R`$HtT7O1@T%1kt6Cj z8!6hSam@n)*d>#10!Vd=OkZL3j2N2nD3eS$vQ3vXJ{jfrxKAjh3UZ5)#Spr))lIQN zuwpf+_ER-WlQ|84kG$Z37f5s>7y7?D4xnbZ0kas=+uQJXAn#*xFbr{Mkb?$IAvL6j zVjk$3LlWac_z9F!B)LQsYnb?B2uu{z!SRHPCl>X^XqUKmxKH#yiQ19yv2uZg4|+hBy-sS7N-2Fy0`op$mqTh@oWMeKEX* z3anvMOF-3e*%)Ht{~Kl#@=J;L|Ka3U>yk3;@vWgr{ud?=${`Qlz~!A2@jSRG`i6{=!d<| z#kEagxK-pCAtjY()vkdh1Tw}m&_hy>=xpLXad^GN zP9u?Hu^#U!~{qe73>5gzE43yx72i;qZk3phhY+)+9xmf%%-$Kyg zL2C{75U(y}Cq0rGMIsbEj0F$1&{{#G``ox5 zM?n(Vgi~Rma}ncDB%l~)UjkcqEGmFwF$HMqDg-YabXB9*8611PA9O@B15vpZr{ugN=GjKWmAJTTmxoa37#Lz$2dV&%q}j2{ok zQZn5!0HRWV3I_VnYDT2F2WW~kO)2Q465mwFARiq~imBeyY1Q}E0yiIe98(6~B)s8{ z;lzrPAX}O;IZIP!h(D%N=qwD@y|Q?cz=V`e@>~kG0{6t!e5jL3ZMJG3f>RVd@T?4{ zX^^^@AhmPhU7=o~4oAa69gMj@U1gpi!I#!0 z*(~rt@Hd{ZwF#yZs99J-R49B!!T=tM3aLNfmw^Ol2s5Oi-EPe%nf;XJvw#ih4pCBE z$^_rnNIi=oB3&ZN3Ea|76b~trA;vhEO_8URjsAyrE3|4C;3d*c684Zx3cb;AB9xGW zA3apV&pZomx(E8=4pl;wjR)G)#dszA(HawnqS5&c2rA$mYkbI>QaAf0N1~&p`Q#o! z&>E8t>&Wgo;RNwKpnLKuIO<0m_ofQPzW+2E!8<>C?)-rb-J$jA7$nj|vV208LfQ}@ zR!x~&G9Ugs57Z*hfJq@0ie(jk_p*u(r5i{Xr$5>tF8agnsaFb=qF|dpt)8HoBf>-9B#79{3GM{a9BH!A57-9Ma~ZH-vInLsWLiq5 zq?VYr90TqsZ>JzGxtohy5cN+cEUSZO!Y5gpb%${}3c{W_sAq`~HMv(SzQ=Nq*i>;( zz+tsERO%z5*<}6=ga09^6N?f1Ly}N5)({K6qbmr!3W&lU0dB$?AUwnFlLLrlA^`}E5d4isnR9(l)ZehpJ8FY+whFfPsV-5>@XzSYd zRdX}@r+NlnY{`vy&=RlS(4vb9)}3}~R-JKGNWeYfi=L98i)1KVd&Sm*(Q zd%COtkNZ4?s+ivYE{VV-lJHk`1BQiAiwu*9VdW?F=T{fXlS2e3M4%+vtcUTs9ScKu zOy~8VatbLIq~qYneF=+T z&Pi1Et8)o^Kfl$HbQV!jYJi-!i)+OR1x~g`c z82mq^g^4Au6hV@B86@FJ38sXU2@>38oK!k;Y6(HG11=W44e?*1fVp(8y-KCNCe9_y z9n74wa4gR3lBNWQm(wcrJz2r!<+LV!UsmvZIX#l)Am|-TYq=mJBpv)|_zmqn!Mk12 zJVdUP#S4&xH-VoxTTG`;B*3b^B8iYF;F|m;4dQf=5hb1V!l;s?_V#0cI6e^-OzSSG zl;9#}L!|;;xM^Uu0mPFcs+`cn8hLnJ=rag#5a>jLmpGu8xb<`p3taH4RwRI2saYye zU-QALVj4tnQcDHx!Sp~2s*o%)5+Z341VAu^=?tUUl%ix&zvl>-6mu_w)Q;|XLm}-y zRWLh*wxCza3O0p+D8aIVLm~7adX}uQnt>7lX$&rn*QfsUyn`UUePXPURW8eP6mbQIA?kjg3|P5%utkl_{c z=ozc_OpwV^n+oH=CeTQy1;cOe70O%FEd+EjnYPzZQjPxbu<$V~%~_o<1A@JOXH{gLwm+VkZ-~8r!DY2UAkXrRvnzY`pxQG=xFrn33^27qf!Bw( zhJwS#1NMY`WiT7-0=>-T{JqT4cn}vPmWESjhbj4+Nbkscwk+8yw?+sD5#GrfaHPGC zIj@CGa@_l1PLCu6NjpA&wNp!|f%ydwon$!p$lvaj7f3`>rwJqr!|n=b2%PA}<0QX9 zSxiEAD)j)a3Hwu6lDBr9S~3QIS&K|4{_u*}lq1;~E?zA>Zbi(f2ybC1&Ugg6n-jN> zhx6*4f%O>{9(V?N2yTSZ!xfq-Xbr-4K#g1r*emF9YM&tbNZU{TI}q-HLz-u=pw*zu z{Z`Op`|`|%2w##d58iM%53iu7oDHKB+2<-&(d%VkkXeaVg4wb3m_Fpp5HPCaZ!&A< z$I@Zg=1oD4yCbRH@gX9Lnpitp11v0px})oo6;m>`Fh$gz=)TAMEX98ZNS#lolC*#` z=+AB}?YY|{fQ4MkTu>X16#QTnu}%FG07oj7Bp`w?Z+GsEJ0f62Y0U@4qf{yLIIO1e z(WtIM*>g(>fweN_XstjEuvW$%QU$&yuIF;FJ(R*(1J;njGEmkX?~zy%`KTG*O~-n~ z3$#gmQh!)Fq5x$-SeFcAshj$ud>y_Ka~=B%%Ao$2V5SAiY?o;Kx5zR|#1PBiK4EM< z@C-aUh&hFmGqJY_&<2o<7r75luQ3P0B2E~^wKXIZW~*J7;^p&Dk6d%5DDmma#3Z3E z2!?Imd_+JwXq<-%q%opKt-vb;YqD{LoU%bM=i(z!$$|r@Cqa_b2QR`VQieQe)@;~K z4v-!OAsUSzkbOwXR(SS)9MlEHYsrBjmSx5589jnLXQ+qnXn@)UD*Toazg&q5WH$YO z=TXCd66a8pl@=*-{&@lM&fAeby#{S8gs);zub#S4Z+xl{nXDLw#&}3BgWMu_P$nEP zX+p`j5D3CQ@4?t63|3OeM3-cXE5o2csVSz@+Qyz3Kdhu+Av(J{6}=|mJJMhrn2LjY zSZB!hKsG53voHix8E9F)63;-yzWqBx6bd*rg66doU*J0&@+^#VEf|L|rU!D%)UZ>4 zhu9#AJG*;gEg382al~;#-Y&_`BfLZShVTrFO03Ri%37qsGeSt#>X$uPc7GzVJzG7n z&OqK}{(hM-o3Qh03z>zJ_z(v<_XGh?Ed3lugJrkz*G8(Td^)M46^yz3MRvY z#{MB>+*ng84&aewGVQ_82ncULIjaeg!LE+?BnV?^D1$F5WyBv8bN%Je?W6~Mq^}Z0 z9svmsR$9`nd8z4gPxl~{-(H7?h@H^`#k|XOlgYSZ$27tO-6=jK>L-nl=u@=3GwSHY z49TdYdLb7@I)m)YUJHcWfjA6Bl{*k_bz=UWICbZX5m!yCr%}Qzl3cMD*uqC-o~#)V z_strO5$}t!;WP@dy-O96&<1KyF=sP0*i^D+kb5zXiwWu@J^+LKQ3JJtad?N+cZXBN zLOljD9kd^2n}wrZ+}J8XRTy`uOiY}WgEoT^p>`ow%0XnZHWWAF1R0yVkDxAl(=FXd>3R71|{{t$c}VOZU&1@BgI}R2+KoADpv_& z9MCWw@$S1)V$qoVz8q~!poTSbtAV{8*XE?@7K>SV)dQ*#@ zll*%Qh7jjSIv_W3Eq#cE{X8KDrQ#1RS! zJ1)6mN{OgmjhMVR*W;sv^f}=8{r+Cy1LPrs$A}3he~E!buJKIxcDe+dkMxpnG69Aq{4Ws6zF0YbTQ`tU&BEVfsJ=&feL&eLMY)8n&&$ijUaF(YX>3?`D$ zXRw$8CH~yvXV4Md460Ia2*X1d6no2@p|l)xfJk_3b_NH$W&ysc9m{~c*!fzE4=AI@ zTJTg@=&>e;Dp5_LEY#B}3$>hQikqTS4*lLR{Ox?vr_?4MKpJrz#W2 zh1?^`$qO!)7q+>$!^7$giz;zkywH|cx^24+WL3P3M@UM{reGOEkC4x_6`#vFq*){o z9AM~)v@c6g$I#}zsb;9b5{i=`(Bsn+2EY{WvMIR_JH^WI#9DV9o1IVEXh0ic>BfrjpHxN$#Go+e5uv6^rf2XY!GPk0vSe66)45i zdKd&r(K4R4V3i5h#M46v=@1;=A5V{Ea0vpF;UvL0xaW!_gh)tP56lyB7^)sjc7uSG z-+*@UHyGR5_$!KTaB$wR$nqb{&;u}siqp&mX(WCHyT_@asQ$*8;JXAKNvxm@*}Uv9 zP4Jx#V$|ZF;ModVYiAfObvSV)%^JjKyS8x<1rSpbeCp0pHzhnu@Y(Q8@H-xVnJOC8 z_%ng)F{UP9Nq1z4M8vX^%1L?~7WV$0Fg}HFk*O}pmy@vXF!W<1{O1(>5`m*E4tM%s z%dZYKTb*;E>#(4iCS*yOZeUTa@8A@OFnzJ>!>_J1=U2a1 zNW#G*{AviGxOpTZAqd*jv^5*7EC{mA_78!Ijj8xmicg21}_Wo3i9!mqdX!ae3pksa3VrD z!QpFyz1)_sbnAXP%z)z&{O2ae-)EUOCm@&;=HubbSsvo;^S{2k1Wo_v<=~KrKMkx7 z14=zDc!h*75ApE!4l`aB5bVRDe8R#)!p3)hloRR^9N;ycLxrr2;Dq>cmisIZ30os4 z81WB1N6*bI$R{k=XPKK9>4=-3Peeq(avy5O^jY&<-Hbwnz-c{Y33Tl#OQ3&GSpp+_$`Y8=QwnKnYJspjhJ3gal$+ ziuj)ds)|2{O}ssj^B-8``U-zckdyvgQ2dDI(2=czI2NsxrqIuU&TAEne@t65nR95$ z7js|dxiqyJ@FHLepfX?{;9y5=-3ClYy=uS%fFA)f@%$U$nb|be4`DHFlsSM+C>sMR zqaOYui|8fF^8knAxf|d`l$Qf8#&hO7ocqOikc=BrxRC?s3`o)^7vsa%0Q=zi6ToGF zZvoHX`47NOKxxE-D*!bB)A4)+;0(Ms8PFT|XOc4RFD4M>2taK-PXLqxO!>ixM7Qza z5N_N?#Uemkl(9cr)P(XIKogYN2vxiUA_wj<@_TeLc_<88s!%d z;lI*zq*uuDQGVj*qr_H8u;CfKTUsnX0-fjdKxX&`P`*c=lmUn1r=BDdmGuZcc|`8p z;#am2Y(Q@G{3G|_x={X`Fba~JfaHDzesgdhjmdx7*^K*n)mu?j!WNFVcL=jb*rglUA8qyj?d60JiDX21u zNhG(jd!Ae2K6y-jgYo0w$H&imHU47>Vp+7Vp!fx?!g#5B^cgdK(`K_<@$BoW+@lp5 zbti{(uD{JMTTk^~;l1E`uLafiW1s5xy1ivbYou|;bNkO9kAF6rw`g_M@=x>TE?S_F z(&nv^_^E1y&h+JzW2U>d46)<2OIduJ*En4&-H=mh?ieaD2PyCb}f8O(E&^E2l)4yhTwPpUJUz03zwv%AT}Gz- zs_k3KbUJI_*3Jp~NqrI`cAm1^TY1c4c*4<%g~`)~o0a#rA1dFmch$ki%Qm@2EKmwq zV3X?P`uM9xzyc+csS3Bh_IEtx$q7;@x!d}A*y%A}HO37|{-ABP>6who3iS{s@sjq= zJRgNs6D+21XKuf7%j1zoxxUj@)`Uk|=Q7W2*3aE@C?`R1*1BzMi&WU`u$E+Bsj;)x z-k)(*Eq}?|cg>4G8_$2=`s7=Cz=dZ?UP);d;apnZh_lV3&-PEgX+r|P+~h61&AOa% zVPV4ZMJGmwm8vdzv7AYnwKP3==h?TnY#7I^RJ{$`Ev8-GdZ2iKLHn?nr4s`*r0S<1 zkn>%*buRPjU3Qe0;f?JZEzX}Gdh&eNxTAgUsBaHBS$5R7@9>K2OLOa2wa%c|$*ga2CZo_cb@@c+drm2@(#{>4FiI=n{^$5{(KYM)(xL8rreocx6^x=~{zwq-_d zaytFvN_^)4$Dn`uFSGu5F>2TN5%((`(%j=Bw(qp;?63Wzx7xlcv#Z*4;*Oc-DkR6ij~(kkJxjJ$E=npOUD-H$7aC zSHk5Y(^iU_yhIb8)ZgBjKfS2hN+a4jdgfedFe- z0htGWf1JL{%)X=b2{XsTRQmWCxt~{6nf{Ah@90e#t+nIHKgACRyTo^``j~fDuBtTA z=f>wMm$$;@nOVm|^n505X?QVhpY!j^JfAh! zqt6_>tTUc|KRz+CpC$**3w$@A+E)M3xIRJEwo~QGUbltFN`3U-vg7nM=En)o)po~@ zZsIhIKPCI2w_}X@bQx8px`fJA!8O{>6Qy#}e5PEuyGTikS3C97^dRG2276>WZ(67EZ@wj zb@NC|=chU?ov~)2m5I!cJt@_J-Zz-n^_4*vCzhp}Jm)u+25;fxh{=O7S!n6yzyb^%3T2obB;2n6A%6}bGq&6bK+U0{m_|5 z9hu;%#+Ddx$M}r!s^${Xmnn4*oi1mhDb+ zxrCuoGw!YL?LC9{y3d{JNr{z~!o^pQjH-R~s_+(5wRZS3wajYFL`LVeaGF}mvQEe zqZip|Y2?4M-!!{WF2S|kcu~Zrb8Bxo?GQYj@z$bWW_*N-xpCYkPQnS@g7I6Itr}Y` z{o$IK>%B=DQ_c4+S9`H}@-zo+;hl=yj6E(gVIi+%&fRnwoVA_tii*F}Iko1qarRvG zKsl8`7Y+tE#cxw8bW40Z>d?~_i+3N4>&%~0=o{ocaOvqARP6eXGapg>jJ*BxT$(bB z?SC0u-mQG0WX^0ez1!(>Y`rYsUzcyYAGmwdMk78h^^Ui;?)MW`ho_`?Hy@^T3shQs z-+3Ng_M~;N>Z7=^20KhMne(}~xwCot$L9-vFWbBDx6|3S!EWE&p1yL)o3i-p%Ev!U z?dG{PT+Na_z5D)y&~^1YtF0_vqdQj>B5t&-n3lHUxc{)Ca|?gxEt$N{hx6IPJ7Si_ z{eDN@M2e2BnzplFW^-JH&UKUJ9j0^o%QS}dofbJSOmU#!pZ^>Q|dT5`w!XUpifq6T9B$&Hk$Jn&RU*`>8qP{`#u#QQtq1SMY zcgwTZ#oi5Ep?}#$Z~K$N$us5rV%M)MO?YJ8TO~c!t2Xa=+`ynhZ+a+a>$JQpj@x1v zRqQrM<4i5CGa8<5Ny}_mvM)6L;-QL}%rt#pt)Fb&_S73yGsDMTV|&?~ z$El)=Yt25UXay^Ojh#9>)vK-eTkQMMcbad%T6Z(B!#U5Rb4=&5=@%zPZKxSMdDA7U zFHww?+DQMi%{R@zUzdMqf0X^}nCqQY$vcM^zSn(_X_DJC(08cJs`1<_y64Xw=a@Tr z)!C~C>z^{@x^6$h3iWiCroOAY(mYwVB}=F?8rk`J>Z4iBs=dOf;(aI1tzAC*i~By0 zRip13uk6ZL(5|`Na_@Oj&@ACjjVLPUUEV8XxXsw-RJ|x*DowAUoQ0^L2#>upZ0OmKUV#xpRB%iWOJvW7yJ0E ztyeF0+MO-Vnp=J@*k8lzC)d^PT1b6tTD8ZT@WI-zEY%D;ba{&BY7P&$b=m)GWSEpe zoyX?44L@s#AhoIJw-ht_zWI-)T^)32ePDlecUB84WzNJw=k7j93jM}YR8Ha_oA9>o z_#w_MgT@&XOH&dLn)A;jW2St3-iP z6S4<<8E&Q!fBBn=QR$qdE$kC-u8wi?kdOVAx2D&u%e#j24_sz>Owz6W$Q-?v?c2L# z?-BcJT6!geW6yUg1*=>29wT%7gW0?HBL#>F zlG2zRqq8POIwX7x8RxQc^@s|o(CPY?-aAUmpBEOa4W4RWwy(3`PK)%Byym+(y`N`? z$yYXf;nuV_7dG?ey=#=$q4zj0jh)Zznx`_mx8a+w-%n_lpKS>oHFZVH*7;e^RpI8l zEi2OID`|wb#T*Kb^xpUSdEktTPV-yUf6q@^I_domwL-f2?BH6i^1-I&;OPyEpP0<5 z?Z4vI*7>#1<(>o-C%0cW9`;ICqkYM&-`cNd7Dtp{Fwpz@dR&tC4eqdQ;pJ)X-U?eP zZ!%dob%tzxANHf~u#SEUdTp!Mdr~q~Dg49-!Hjl9X0uF+c=}FvtE0#Qri9e z(bhNGK3TeH6`ojHp~`GY@VT^S{-*Tyyww7uVTtia)VMDczRQ^$ePWb1zfR?PP_D|r zgw^LRom%Lov?-{N+cIU=psStQi30tpN{!qt&GLPjhly$nbo-n5)W}L@thLs=B)e)5 zkEzO+wz&9d@0?K~MhCByULR+B%yi+@+L`G$S(oEJj$09^WiWHN;=Y~w`v!<|Wm2oB zEqM1&=40c6pNsq7;=kE!;>&#`|0QDP2r9-`Qy_278AB;viOs%{-6vp0M5to4{jO`} zHjO?mlSj;)%$)QK=<71kr`OYj5iBF~HLXWNpKnmwdw#!1Zu5q7!G1*#^yY{kozqvNfzvh)|T`uFN8pJ#Ia9`jPTXz;y#JEJ%&LW4f2 zKDpy-_VsDY_FukMb|xD}TTSaD)oE4!fajihw|`L4%B{z?8a~&l$X@#*>dGgzOXtsA z_jR*(O}p_(*t`1JKh{dGe3vXZ6((J|+H73M#54B>H7f)>lCm5qWxscb!nZGd&M&M! z%C(l=H2Ivo>8#W?EhfdDskyC^ySHd%)31d$^oPEB{;(OCI>TFwL<`=~E4R1@`j7e) z5FS0TFPC>Fa-ntfgXHMNefwISfA+4Iht+_J`g*yC?OIwkgW`g}nk6l@T+7%U4jD6I zx8jtJpONufmNG$67XMsq`24y?S9Z;+v+ffjjy_Sze$nNbvR=*X(|4~+%&toI4ZDtY z`i04_A80Gv3Iyw4b(OE$JIFub6U*}Aedp_nLAR zEnLj-g8zTdsYck$Q;JW)%67p=$$_;zypJtZYAG=VP-DmmQmO-1DD&S+(ZN zEEdOJ)_j>=@W`1LUb^~)OxV)@`MfXdoc&viuPN_3mDy{N%|Ed^%NO_>uvO1l-W#;+ z^)snp*QIA;q%S%2>2034Wa;dTswb4aRM+=?oZ<4hci#ob?9{iCO?26@^U!p`ny%N5 z(=ISRGp&=&%vOi@bv~t_=^o1hs zimF?Q)Afz>n_PwznOe?Obeua!Zy*y@+VN{r?0CnU&i`C4c=7Xc_}!A9ov*_0tbH~2 z>QcjT(!WYYnnG_V60j-Ep4{xE#vs$?T_d2n@4JnShDW0 zsO#m@y0=u>51)@zjj|R-E&!#W;-^fW%aIizD1=!25_uI6BDPrn5X?} zaWR*^ykxD8;?f;XtRPOnUjnAC?>L$&b=fI1`F1QWdl|~?6I^1}ub3vhvsPa=_RxN#Xp0(^xE7mHbEhvb*=wxC%)D5j z_n@$>|K`iKEf2ROT(xj94R_LXC1#AH`m) z{NB!;S#-wA`Z$&kSA-6X~ zeYs&iJJ3!cGX1fWal$i=ra}3WI-D*)x^lhWX7=rxhs-5M)tk4?9$z@{Lv6ya({|GW z*DlOBJ!-p1Ej+H@Y&Y2;>CcCSvoenbPMYAh@AJXrgTj@WC(F7Vn+;>4Tq|4p_jc%< z5&P+4*NkknyvUDR2E|?77}@&5nhPS==l&erd+7r4F5Lat7>wRxg)5b^1kfLf>-fdrM5GY3e~qQq%e53S-k$!l$#VLEV<;rYBSX6@0HEWhQvC9USo zQ783JZyd5`#+vL;Z={>N=KWZsb?QTeqnpK^9TELkzdv|WyKK@<>fq?gPTj`_fE>aF|lni|M%uiH$wN-s*YYP{e_yKRJNvXtF>aI zTEB=?;iufEf$C=fb0oDO)HNr=@f$ zHU+-jf88xU^HJe^%liw*%$3^{7a|kezw=iS^Wo;Ob=nr5^H)ELnCO8an)M;h) zTO~U@E&hqibgSL_6As2yo8MRbQt9R{70)Gk)B*dvS)j`!>rb4ROhh8P{L`bhvB8ga~i- zG1qLIM2C*Lr5pD5TC3`Jr}f*E6K78t%=<0XJS5vATH(jEtG}MCnSFg;+u;hm*w*xr z+t#ImUk6-gGdq$lvF-A=wa<{bBa&5nJ8Ed}Q+mD)*AiPtPB<4JO!zu>;Yew_GQWP` zEH<~@h&e&6d99cD-86CRr;Vw%9H^gVmqhp>x654X}ocSX~8^tTETB%X=cd8EJY`oy-1^|4O_8}c5Sb;^HObM`Y+ zBljXMF~3M|;K7@N?ky<4!HldNz`y%-__ny8v)<3GON?8XnQ>}Z!@P!HgRaewI`83@ z$@1uI&EPuO$!P=|lqi%)uX%6WTDr2?>1mz$3ue?088>a8KBL~SY< zc}zv}IGYfwx?lOl(f(qK9(*^(&vOQeXSzn9pT*8;h2=y=p$u29Z85%6jkIppq$2 zYG~Aqt)|-xOkbbo?YnnfOZAppKz)C;TlLSM?i;o(z-#UH?eaM%HZF?ph-t3*yeQAi zVqn#^4r8f@K~GjSUp9JS?)EXO<>D6(b9~7;IiZ8h<=mJXU-k>DeoimHGcw?#&*r&R znUlA!Ughh_G5XxsVA2PZ@@uIdh9Ds2_IY!@0;k_vXG6erPxz>{2!2`aYk+ zb4Eo&>-V`DUY1+?_``>nsq3!i`%miJ<=D%*Bl*tsysr4ob`K*g^1426y#M`8_T+vG z!h2n2SlXw~=nt;D*juCWAA{ePyt_G(A6}-HeLQ*G@bl)%Wk2hytDf~*-_hsep!APJ z&3?BBhio-)`Yl!BJ<#s((`UDf=4*wi-P^NgePBYnVawC_(AO`GQdVC|89X*qZ;Z0` z^Lfi7C&WFDR5W;+WqWw(^z6E={+S&n#(jGS#5Q~{sElGV+pSi{zbhG`eJNCFW&Y4f zG5zK^H7xqRz<9sc_ga_c8og@UJ5RU|^xrq@&TVNdTp-iZrdr`Vsm*7c?-SQOw>v*h zzi>@qNywPY!+Go1?keS-nR?%c-g`mD)FMpw*Nkl85m!B#Q=@Cj2i`vLXurqnIfs|d zN(*_}=gFbwvDgnMTC zTpj6Bb!Bp%lcu`Pve`SM@6w_LZ{J0VR4%A-)QtDOO?9sRs+06?e&}JweU19c)6$be zv$7jsI7EzBy4dt;um0Hc`@bsRK6GH?n|u3$j!WJk{vZ z9P?c7KvZqbkb}b0YEhGuOSmuP&HFPunrx1KmhKyTb1Ca`ZTaO=<=jht17z-cEv?eB zh>85P>wQSa(&HbaPbghdXwyIQwy$t^dPkyP=#2b&$F8Q4*M8i5u+Gb+-}8}AH?&t> zxZl+0{Uy=OI?ae*)klkcS^Zkyy}oPnvqqu1>uBuT{Gd=-uh|>E#S9*GH(o|{0{cLl zi17$=*}1IZyxfS7!K!ypg*Z0Gg)W`EY{aeY%#BE!Op6~Wt4F^}P)ajM>iaTh_0Zlw zrz%Ik_ENJO`fP2|t5KVc_Gy?5idtLUQYn+B`7%B_>vyV6LcU+vrK%ccc}tlLv*+Qq zt+Q6i=GPbh+*NRLmg$EZ8?tR21{qwwXu|rb|8hDLHEdq~%%cI@bLywO*J#^Zdf4Mj za`P+syt|e*FEyrgYLqXS`nq}SGxn7wzm=Nznq_Ax-7~7{d;3QCHyN321I@<-Xh*N! zWBGMzWre@qlZ;D`Pn^6X`|WY1rIM>v^d~iaXiNV`Se4qVt2dKYMw=Q)lmXw^2sp zxkG-ucYZN-L%k?_& zgB_B$^c{Fd#~J}em%rMGAEjm!T2yq#JTrLF zh%v6G+2Q)(*M4jYyI<>lwXbD#;?b>Vr}`9~|Mj-nb5+K{$8VKaKe_NJ_rB}A-@@mf z%iN2en7y!F9i6B+ z{}Y-lWz!bBt=a9Wf82&Saktaayp!Ax2PA85pO?87a~(u=JucezSZ%gi7XVGRCfDQY zlz)q)oGQu zU}o<*2rk>sCMJghZM3wA?T$95XsoOd8y$@AJ0sa(KGET}LoV^LdZ)Y1(kNnghqGP5 z2d=Zd#ZeCdn3L2w+TaTH%}n2$w;DHuU7>QLd4D^#)Z4_SCQA!#-KO-B!p{iH)EPz% zkMQfZS>0sY<91ra8kZ|Pxw59d`GJ*fF6YWdht<+J^NInjAQ-zME>09JR>pHK;Lk+8oRu_xA+FWkt!j?wc9!qmA zn166OYHUtSyW5(ZZS5ejyWK6W2Uf0BQ41R#jVp2P3hnNu#<;kjY=dM9GdPN(SXs4o zleoiJwdtp;?q$EL?=37W{3msK#jNR~d&5Y|bR4a)+ZtP_(r9{+W|Y0W$xo1YD=cGy`8cOCJn=m7A*s_?QrW@0#^D1cNuK4)SKqT>h(*?=06x5%5jQ+(al+uazo%`Sv^gZ@^9a<6JmD z?U!@m!n8lmh3lsMb}l?>+W)@K{}lqf_Gfi; zEC0>Jearuv=7H~3;NNEc&^-80sek)w@@oGBbBbv+gxF$%@$M|b~2lhQh&@Yx5eo; zoAEZ29>PEs!PZ=>Oiv?|vBkDIoH@fRGG-Zl7|~X1aa)MJ5f!@Ho3J8!w=>+^wb9Pz zwn7vrb}FoGZw6YpcRQ)jX=}8w7b!M_#cSO)@aeq(xp7itmAH7{A ztX3CJP}hpof9$NiXFqRdhWkH%hy54LL;sZOxV7Iw|9|RZCGBt^001A02mk;800065 z<$Yaq+d8t~dwvC?GZRa;BujGaBzBZ3#a0sC>#voZlblIXx)cRTOem5=QnodlY~8xQ zU?1+h?88>=Uz=aD-G2>$1o$B-ru~t8nUy&==8idxEQhC`FR;qKsM}M-hT}GBlcl%^NtPsZ+k;Pa|M{7 zj6t`HjeYGq}0zk485T{p{ zqyB$;4}bUpCWrK_chP%`WC~R3^~1Z~&FBiK8UjN`@6T_r;ctdl7wr6MM2&hs>O+OS zn;sU;3jgp5+Bd2Lnm)8h&Qztfw+)g=}Nnr?9E9L&;*BQq_C7a_N%W@5ybR)*3tfQX?ginP}Ea@nNMFi8BWB`GDGCbgUN&1^XQi;pW#dxSaTlz zm9>u!omOitD}&af*bg6rPRyV2m!N&{8# zeSFdT$X>E`tMiooi6tq=lu}EIj(!`R4}V@m*4x1;7Tt+<*mt($?y#3H*>ik!=&^l- z&l7qsC=WVkgv0j*1Nx)2XN##0dfna+S01uq9~cDhO<+9;0`?O&;Sn%?Wyfqpne4wm zVlYL;z=FABpU9V69^y=fudeUSS#=lY*>AP#t?x{0T58|~yjF!0pE_UkbldgqZ-3)C zkC6-ls54nDrbGd^*{)u|vphd?IS*=8+xMb45B&fFkeWcyN1)J!W2loVPJe+ZI*x0q zkwCr>_3>9H9^Zvd%*S8{#N3X@(JBc15KM!y7ii5U{F}-lG~m{Op%ccAjYDwkc(<18 zOs$w_Ni87ChTjON-eZIo%uz{J9Dj!*U0|#3D!jG&qcZg?0ScPK@0~b7kSFMytdxpBFzV>3!~{eBwtvH_VBH@y zS}z*yRt-lsW2vm@EOlpj5l(6jxy!AHKg@v8aw48ecV-0nj%Ub*kfK5{TRYs%j4MQz z&>LHzJC=^8GH`_Wv#}}kc@iky@vuv>|e>f4zMH5KkfxNy?YnFql>8`N|5X zTa?BQeyVlw3)#Vvm13l-u760CuHHdPF|ND<)u==G0r#xf7_VZ`rK(d0CxvG~m!rl8 zO3-p37=e}@!*pY+3^4+dOl=0x(u~OnBpr0H#4;mgf~AU{%0^j%*34=!gSk@g7tTCM zM;^+KY`35x5aAqbV1xH+3ou;xTrtseeXgkFMZ%`v}Qg zd8q&RG+T7#xsLa(KnH6usl4U$VC@~3WC^WVm=%ZXl3ZwXNXDvZOo+5BA`{f;YNG)5 z&5`PxcB6Hm4>Ficr)~)cQ>{i&(R!J7MUG=a5lmglE^T@hK$r&>y&r1&5GaGi7AzaD zhQG0@FhiwL$L@S@Cx3>82V1YH)eeA6{>)u|F6S$BJrvszZ?%qUh%^t?|wHW0~F9 z)}cO>L3MPfVHs3PSMO$g{qAh|09OeLT|W=wx_p1Jxs3>g&YM3MKpp8&uY03@AzjaO zs5j@mw}rfao_~WHUl04E{_xlSxHo+JYis;^aKl;;L5cNc8&`oF@YHlPz$j1~1wSuz zsP}`jl8$a0$jac_9Ubg#DK?`Q`(dSpHp~PxkW{L*Tdm>^#1z#YN$p_wG{Inpl!EK zYo&-j301SfAy|%fTK=*rP3A4<+p3 z7O+nx?9(k^4Te7eyMgsNScCr$z#2Uv4b8qg>whn%A-UI*f@JXVv4gv%pV~)XPV`JL zwZa&3<8{CbGnSUUfIc?z_*iq*83aNWE)&*88L+ya&5AOjTm~P{Tx%W`62up1#1&=* z3#fcUE*OG^Inl;)(S~xscW-(xjLEbQu5*15GRjK$`4QO>P3orXmjL0QJk zaesOA*P@&yUlwOrF1(61tvodIrC7aQ&8SrwVdD!?Gs)RxHT(3u{i5?FQ~tWJJTWTB zmPgO^7lWtQR=gN-D})t6nD~xeC+4B$x@)!GalEM$!n!!$CiL#PoWxaMDPeLp4Hg^d zk534~mru&^Zc^0?_&F?yBuPc22C{oIOn*=ic36%^#Lik)aY>#`PNzFUAS;97NWug3QFh#eu1SE0wSyOU~=mw^0q85qc2bD0?y)#YUB zaz8m=ShveU{QKky{l&T+t!@GI1Pq?T8f&m>n7-;%>2<#bE9Me9uc+~Q(ger>CVxX` zgw?3dcJ_B_TE!EXrzbG^w_&D^jH;;cTORkl+p2ik4b0XTa@wi0uOy5!Rt*FIqga8e z;0p_&X(!lxl_|5oQa0v%O>+dE$I+*+U-U$Y9xy=$@^+`YW9BCfL?CG2S8U^n2Jl0B zp1?BsTblX9s2uBNkGo9PW>!;DQh)r#-#=1TxAN?LAN!VIZt$to{!-8I@?Q2P0u+pB zV6|0eG++{$oBEPIAa`#Mc*E}59~sQ0du*q*BPhM6)O|?B_a915@4>`tk!%ppfT^EF z3FLxfbftyWLDlfb0dZ}gFbk}{33eV()M!jnF2xL4XMIsj!e>gFXh{=HihoavxE28A zPM&jvEa!BFA;I@R5IX0By*+G7W2a8-Ze)y!du=RGZ-9*78)J^#M*XD|7Y#IW$yPgc z1|v)AqNrvRC%Udf&?n?un@uxgsLq*+6e-TMcahWR0uwt0 z)k#es9+OX=5JCH-a9kJ^aBm6}=&DKZ78y3FGq0A_&Y+qGaGp$oAU1OVFkvDEtX4mzXGDptTNNy8*@l-*#6=VZe$Cx79&CMTmoUJUl+ zTncSyXC@VHMd;y6h(-4YVyyM>vn? za>a0iEW`%3?b5&HNtH;J0IMhT)pbgR?$1_eG$s)|N%muln17elQD+~=SO1#lv0x=K zwT!`e!zCz~@e*AY;2Z*#DpU2O%+w$z;$P(1@lM9_ps6j@U%B3)=}B?K5fhj5C9lo| zCR377XdDfbWSO)=elYGvJh5ZQh&k4b7?}5Pa^1_oXOOk@IWxoaH?S6XK&nM`NduK$ z5jzW*6fq3-w13DtCsx?B z{Uxf)HvZ}ekUI|c3ht?dE05744P!RZRcEil5Z0qi=yyL{=WrI`TX}#YVt>G;3R_q} zyvO)5h}TSnJTY3A*BNiln<+wmA8=U8Vxey3cz@z}m4B^jTljbU7WjCFv97KQc(|>? zWK9H(1Vss|3Ae3P#6{TCPDH3~IrBK50!w1Kse_^dU6u0w`*$4VIG?5C83w;Os56Qt zFQdZd`yqSX2lj_|4iFQOpwNIqTnyH4g0n=8M5hhxAj*&XU0Km>xn9jKM$4vwf(2?S zzA^!4cz^lyr{oEyFznRh{Z$n1yS{C?=__`&(t6a$E>jC)T6k1-MJ_asT46&C#_O>% z09BD1uwEags{bCE7qVsaaSS}p^rtE)OnFU5m=jCJB-s>4HNNx1Z&v89pgx?Pxo1sa zCe>_I$clxD2|PhhhuD>M0Y4au2?$z#DQI4s?|-7drVi$-OTRj3jv!TNrjypge0Zs5 ziq)!*B~8!=n;hp`85GBxUFI}6qB|#sp-|neCapAGi@UXwodDHaHtspJk0nLPDviRz zEVN8_mGesJcY_n+2TZMKIUXmhu2z;&_&FXOjGvC}_Tkv>jGxv2*!r9*u>4QOi6)=p zXn(yC=omEt*nj>i4pwm_Mtmu3C9Hty?$$QKfT995Ua6hv?e63oUeLxc`W*kURX3XX z0Qr?J&?I64#q!meeFm}A0~6Cv?>?Of;)1CgSBfH#TzDrhFG>9 zLt4%UgVDekOD$r3bOaJNWfnMZuposHNe50*S&~=z<+RW zDj&?I5pAdCaS#mVm*5cbh%yXHOuaG`h{7TZFv=1sY+3U_a1!s9z(2KO>p}cf4$Gv_ zWwcAtsg__Degp(6Y=z-(w>6luYMeiRi|rx!auJ(wIT#EM{gmkQ*dE&mm(D-lwutjhCG&GOW-!(!WhdfP${qtm@w#a3rq@Z111^4 zxdk!}vRo`hxF!v1m`?0PF7OlomdK_oE6WjJ8Qlf-6h@7f)fW9kZNi^yI)CARLRqEm z=m)ixaR`TMq?Ce#G;vfin`q_5t1}(PHHjuJ(BIJLm7o`^VYl@AEg{7jp+%To3lR~cHvodcp9aO^K<+^QY&WUwd zgT#(J!{X&L3mHJl7$^_Ahkw7DJmUERK0K67N1{%u5AiaBEipAjFh3FKfi;l^@8fiB zB+!t+lu|ksBzfhjY>9N>6D$(SF=Y<}sKZW0hLCK5pgy5Gp_Zl8sA`!)_p^H%qrkc| zr&fN?ACR#PKf=Kg1@&xz$u9qSWSJO~-QahlkkJ{t@auQ%(j@vvbbpq#;gi!xFnZK; z5)DKz=z%H=rJAli4CBma+&W>rbiBHFuSh2!macz2j%Z?ifAa@m5_n!>531eDR#USKgnz_$Z{f@36^#8 zonn~M(qc76QiyA@{(t$KBm#=@dz)O!vXEMWrd1?$U`Jq(9Yvgfr|@);d{}2?Qc7y= z1pzEUM~>@2W7yQ^5xV&;*Y)q%@WV%DE`js)Q;ZkZFV71%SQ{z>W+?y>9+ri8fC~bv z;{i?caE1E|cl$}G8BT61*B3{V^OPBc?HRm>-ZpZ-e^2+0Hh+}bGic8s*{UUbsw0_y z%flHkx0G(##)JeZ5J{ynKTmo|!7}0n_yg3ZI2F2L`YpNNrU^tt)GDAb{-nA+i)-2P zN!*dxXJcP;)72IAc>m`d5?muUnHY=)u5ijM~5sz;JEQ zYg1$IvVi>&pMNhg)RTDbS^?vhy%5_z5h=Bm<+7}c>PLwxl4^pKL55RWue|IEwhB%9 zwJs>*f9pBeYB)FhBWO0&X-f@Yu-Z8T|ZQpgJW zj`9PaOfz53kho>4&OXsa1lSoBV^7as_;@1^o?OFSP=BNd_eoLwVIH-XV9em0CpIwA z(Y=_-b$1=Yd-2rMb|q~3D66Ug#x9P5Tp-OftsbguNz@#Bga3woew%Df= z#(OK7szK6|+538Ubu+%ay6o54MelliJskYnyXnKcgKs^^`0e8A{iw(oX|(H!!&8LE zh)6Jvoqrf{Qwbc-kN_p*(xL#;LOU(3QnOQ0iGI5p5zg!!lbn3Y>t|KLULub#6)79F zsOmT>T%MZ!5xwJvAZX=+p&$8E8~>?l2F^83ySl4*yaQT0fZTBUU|X+RByZQOAN zYaR-?fZ-VPCA#cUd@+UYF2OCOPo%=?^m|VdnT|ULGz4AC71;}y!)$UNhn8p}b~2}! zbbmxkGYSR~Okl2|8eBe$Q$*rEFV5(auLZtE&XhMv3GGBlhy+TjvL{3Smz5KWD`Qeb z+`+kwO2bOrY|8|LSp@fdPj5I5Zj#+*iU<~cOA+J3=_;Bz*euqawH9g?u=o^I0$6~q zuPg5xo2+BJX$;nl(6K2Zsz+!@CXNe1dw)OyOP*AnCbUycDM}1t(L+0~t5L+owui}-epg-=caGGwFS*25^JiUQZ%K;yBsed6| z2?nwTtqq0~VwgE0UgLs#277?IJ;7iYP!)z zFi&7Y`5$7uKGD>R8F(g#bE2(q*_F{m>0Y1;mXOEXwTY!#Y(v))s_5ROF5A5L%JzqD z?CI@5t%t4n#hHPuv(eyMg;Ja)Eq?JDn?DABbr}CCf)<@VjoP^nhtm+kWS6Epu*|QIF)3blwA6{fnKA4tHfq#iqLF$mP zH5Kuzv@7%$tB!<99KiUR!;oIH>tx@y#)@{!E6|H_i?~k8uXo*N@>tNFh3s4gBCr_M zgf0>KCU`E!v8Xk9+A}D$J@Q`=n=W%S6-3dBE}~RwPfDSRC_*8uGYh(W8N^a-ph}%2 zrSFgm{q{+U0u+42qsCA$Sbz8)XA6G`(+&nCE=CI}=bKRq zf_*9Iu>wad7dQz5*?9quRh%SrG*(27lEDS&KeRxK)+v<{x`1ec1b;62;Wt4g*#uh+ zr0Qm^SbF_deifmckLilSSU)_th6w$+F!(J`1T`292$BtM(E>w({)7g2++`UXQ6oge zJSbwQN+jeLn5PmOBsZ}Baf+&xMOkM;IvLi;_QCy?{M=>LXvsrh*(s+(j6r&9g-uht z{@Lbreu{L7B~Lym6n}JR+T=18W>}=f{vc)>?74~Ix}ep<_pT{)Cnfz-z>i5ym=u%D zw$sl@ZAxrWzhq=ZZ)IXOrB>U2mC>R3O&;RnX4x*`*d~5uIrT$ZL4z^xL<_bG1W%GU zAX@i@d=ADpOoC!t=f0(a(yEpFR;7ky1}8e4*ebd2XmA~ZQ-2Y@2_!BK?+-M%1A==_ zM(+6C)#&Eq<$D#WEz4v!bMD)RTKV=NA&>`fP0H`vM>^yYL8hKNar!J5ZRg*9j_=#` zUs|8N&v9XporHP11Ea+^*f`867Ea+^*g3dN9=xif!ooytpvkfyl+sIsJ8;&1r!SN`l-#>_GGoDF^ zB5+igxn0n&2=~2j!GuN+9rbXa9@>Y=(^2iw!?CpKdD4{^;;sf-z17kK^f%$U@6M{Z ziwt%z>MVEX!!E~2yGPrdMbtw8v@Lyk=wWq#yAhE>VSmp&ZNuEDOTTn_1Bdjq<{|}7 z9u@5U7w&Q|xM(qU5KhKVu$7?K<=qT8Das3bL!sTitcK<QlnFF={p8|I!o zVcB$jM}I=rfT(d}MU{e;i2%%3An$}BT*+;BS$sC$;fIuhnIQNeIZo@x-tgk+DN~4$ zvV1kkbuL(uJS$}OZLMU#NG}WPuDcMVNNo!x)|ckum$lOMfNZzCvgF9pMdKA-;?YE* zD4`+taq;Y}sp)7=ht^WEATqb8=#WANLYgn;N`FeLRhf0E&^F}_JGJy|v@q#Zhoq6| zRACWWT2aaJv^em>LrZunio*)N7=vij1kZ?r8VR|L8#Ls@GGRp|l58j*X?>!ar>;l& zona;2ZhD7d?gT1{IUbKpuQ^o9^ZckP*bCKakasC=tU}$l_)s0GDB!VWd2q8(BsMT* zGk-&9lN1m67jG?#)4+HxPsgdR-;y)ccq>I+Tuwo^1mqNYHAR3Ix)2l$lijj$m0evn z8s^x{EzINvGA8eqJe+e_m3_5rbWWoeReHMc953y<%~$>^k`AoD;9h@vDnqtHIYara zh!a?aS+P~21LAg4+SEcXE1te}}f@J`6@??yh07S=6~#7>IEmX005 znh8jw@r2->y_S>+rxc#D%}RpW`@vn0TmKvFSU`KZ1(R?aSAVqaP#`VY-rZ7SAP0*U z=O&$B7(X=>(NabjRVpr34fDoQwZe+F3eV9tL29g#7gddfoR^2a>>33m+9FzhE`J2) zAxg52gJMFo1M_;V-2zm5dMC<}-zbRvU>RO^ix^}eQ(n1-=_@Y2 zsg}+^UbRHda)qOl!LVN4GcaRefa9JE9p{jm8I4Zn#08FOslmtS+S*W z03S+Vo`F{Ec&h_HlfZKmRxzP(0KZU}P3Vqd1Kk;$CKDT4_p{mLUp7CxTJ9%8;WPDlVN()1RdR3Y|lj&!w43i|Gp5H2p5gMiUp;is-GZlR1bn*HT<4hMJbM;=3`9I7VQF zbG$-G+|dRvx5*3lZiCDvZGVmmuZAL?s86gb3)aEO-R`t}gKqW2R=t{{g5T2z>%>kMuv_Xf!TTnyTmh;6^`Mh9TU`U+&3qn61AoDTrP3vhk6KP3 z!Ufa`Pc6qd0wh6u^2&??Oj*e6&Y0z}; zTFMSR7YVK}f`ql#0x0!u9Su??6}3TqY6my6Z{DFl4e#SV{nzouKvx}wU*JhKpqXAP zs3`e1k49ILRt7J>&XX-7lgmo!pXkXJ)$=x#Pd?I9P(I1i%74oNni-h1376_jqf^C^ zcBKjFMavcE9%Zh0(Q-w6TQ@ySstc01WJ8^XH@Z-r(CeB<0Chfy6KiTJ5N|rwDtyk| z+0N7=&zx)Z$P^7OJvuJI(gYowJie_^$=3{oIC!nWh=dH3-W$n#1_n<`YasZVfsk57 zKR2C$kjI)eAb*)+wqBkn?wSXk4O}KnQ~)EsPlKw(&G3c3NkbX%*GN}&TdW>m6i<+Dl%C^@tby5?9Qcl4h zzr(<$*k4k>D2+{IZ-nMPPu$(o)g>sqC9)_+ITD{Y_VIeX_E7_4d;uNULYBG?Zyx%0 z5u5sVB7g9g3|lr?vp_h+FpadPSed5wbCp`rz;^EGAI!iuq;7=d6MkU#YfUaRq~+d$ zxcdRXpRo2J-f<1jiBO$D-LFurJl5!D+&5Ku#WWVKeUi6acGFuim4k$qAh;Mwn~;W)Wn#DyETs~-2l`sd34b+F^gD%_2O-D%&*;83^p$W#y2_l6 zsfq<%a(P_0;5u6rkMu~R2$@B%CPu0Z5& z9T2Hb1SCE=708H70O%g%CA9TeciFih&41C1nYRz_WB(M@jve>NJQ3j$pNfg4es(KP zeXqs?ijBn9EnQGrXOn&VQ4;%$;v8_>nK>9Yy=J}3 z(SUtCXtodWYmv{NH?@OH^OU!s**+b7$@T-ew5UHommQS!33Uo^x>nRRgzF_sHp}Uz z^2#a#^?FQ~k1~voeak+fH?dvE-+!HYv)TM&TzpnhB1gBCrUhDcQLMCpz)oWLKn-B@ zu1I#!NkCddQy|j+6UhVP?PlA&e6E6#`*boWV))fSI)y^I)df}KO+$-?J{Uoe9j`o( zo43+c7I7Rz$NT%TRMYic9D&V6ymUV&al7)4=vwY7&3sRGay{ABd$PT`Cx6>oPi8$~ z97e+uN11Yl;oOO)9?t0L$uZ3hmUYC5Ic~C=iK{cSUb?ageET^Xapxy#X=!KN+@i!RJF3HCr3xDg@@k24V+f5{e zj3AnVBRo1JOoPYdg?hY&olS>{p7Wis`HVuEG02oMTuis(; z<1Y3Ye||#ys0UOhow=iL zSOoa-AG{C#^Ulsm_G2@2uxjV?=bikatDV*k-es^GAS(C`&t^N%avz>iRe*j>KDqMq zSP;)Hwjh_fSC0PYDk!Vs!AgESDtr4;a7Ag-`Ra=_ws}m!K{GP1B)9+0P8k|QC*qHc n_`DG6S*m`u<3@3r(uYth{$PozSGUJTdv^a9C6{tYxQhS)ysW)O diff --git a/examples/crashreport2.cc b/examples/crashreport2.cc index 06bb92548..d57f3bdea 100644 --- a/examples/crashreport2.cc +++ b/examples/crashreport2.cc @@ -7,6 +7,7 @@ │ • http://creativecommons.org/publicdomain/zero/1.0/ │ ╚─────────────────────────────────────────────────────────────────*/ #endif +#include "libc/calls/calls.h" #include "libc/math.h" #include "libc/runtime/runtime.h" @@ -18,6 +19,17 @@ void crash(long x0, long x1, long x2, // void (*pCrash)(long, long, long, double, double, double) = crash; int main(int argc, char *argv[]) { + + // // by default we launch an addr2line subprocess to print backtraces + // // with line numbers. you can force it to use the embedded solution + // setenv("ADDR2LINE", "", true); + + // // using a seccomp sandbox is another way to force embedded backtraces + // pledge("stdio", NULL); + + // enable the crash reporting feature ShowCrashReports(); + + // time to die pCrash(1, 2, 3, NAN, NAN, NAN); } diff --git a/libc/calls/pledge.c b/libc/calls/pledge.c index 3ce335cfd..f56af95fa 100644 --- a/libc/calls/pledge.c +++ b/libc/calls/pledge.c @@ -24,11 +24,13 @@ #include "libc/calls/syscall-sysv.internal.h" #include "libc/dce.h" #include "libc/errno.h" -#include "libc/intrin/kprintf.h" #include "libc/intrin/promises.internal.h" #include "libc/intrin/strace.internal.h" +#include "libc/intrin/weaken.h" #include "libc/nexgen32e/vendor.internal.h" #include "libc/runtime/runtime.h" +#include "libc/runtime/symbols.internal.h" +#include "libc/runtime/zipos.internal.h" #include "libc/sysv/consts/pr.h" #include "libc/sysv/errfuns.h" @@ -199,22 +201,22 @@ * `__pledge_mode` is available to improve the experience of pledge() on * Linux. It should specify one of the following penalties: * + * - `PLEDGE_PENALTY_RETURN_EPERM` causes system calls to just return an + * `EPERM` error instead of killing. This is the default on Linux. + * This is a gentler solution that allows code to display a friendly + * warning. Please note this may lead to weird behaviors if the + * software being sandboxed is lazy about checking error results. + * * - `PLEDGE_PENALTY_KILL_THREAD` causes the violating thread to be - * killed. This is the default on Linux. It's effectively the same as - * killing the process, since redbean has no threads. The termination - * signal can't be caught and will be either `SIGSYS` or `SIGABRT`. - * Consider enabling stderr logging below so you'll know why your - * program failed. Otherwise check the system log. + * killed. It's effectively the same as killing the process, since + * redbean has no threads. The termination signal can't be caught and + * will be either `SIGSYS` or `SIGABRT`. Consider enabling stderr + * logging below so you'll know why your program failed. Otherwise + * check the system log. * * - `PLEDGE_PENALTY_KILL_PROCESS` causes the process and all its * threads to be killed. This is always the case on OpenBSD. * - * - `PLEDGE_PENALTY_RETURN_EPERM` causes system calls to just return an - * `EPERM` error instead of killing. This is a gentler solution that - * allows code to display a friendly warning. Please note this may - * lead to weird behaviors if the software being sandboxed is lazy - * about checking error results. - * * `mode` may optionally bitwise or the following flags: * * - `PLEDGE_STDERR_LOGGING` enables friendly error message logging @@ -240,6 +242,8 @@ int pledge(const char *promises, const char *execpromises) { int e, rc; unsigned long ipromises, iexecpromises; + if (_weaken(GetSymbolTable)) + _weaken(GetSymbolTable)(); if (!promises) { // OpenBSD says NULL argument means it doesn't change, i.e. // pledge(0,0) on OpenBSD does nothing. The Cosmopolitan Libc diff --git a/libc/intrin/promises.c b/libc/intrin/promises.c index f549c6db3..a04f9cd8a 100644 --- a/libc/intrin/promises.c +++ b/libc/intrin/promises.c @@ -21,6 +21,6 @@ // XXX: should be inherited thread local // see also sys_pledge_linux() which is 100% pure -int __pledge_mode; +int __pledge_mode = PLEDGE_PENALTY_RETURN_EPERM; unsigned long __promises; unsigned long __execpromises; diff --git a/libc/intrin/x86.h b/libc/intrin/x86.h index 26093109e..8608454f2 100644 --- a/libc/intrin/x86.h +++ b/libc/intrin/x86.h @@ -3,8 +3,8 @@ COSMOPOLITAN_C_START_ enum VendorSignatures { - SIG_INTEL = 0x756e6547, // Genu - SIG_AMD = 0x68747541, // Auth + SIG_INTEL = 0x756e6547, /* Genu */ + SIG_AMD = 0x68747541, /* Auth */ }; enum ProcessorVendors { @@ -139,7 +139,7 @@ struct __processor_model { const char *__cpu_march; }; -struct __processor_model __cpu_model; +extern struct __processor_model __cpu_model; const char *__cpu_march(unsigned); diff --git a/libc/log/addr2linepath.c b/libc/log/addr2linepath.c index 89c09d18b..eb656175e 100644 --- a/libc/log/addr2linepath.c +++ b/libc/log/addr2linepath.c @@ -37,9 +37,14 @@ static struct { } g_addr2line; void GetAddr2linePathInit(void) { + char *res; int e = errno; - const char *path; - if (!(path = getenv("ADDR2LINE"))) { + const char *env, *cmd, *path; + if ((env = getenv("ADDR2LINE"))) { + cmd = env; + path = env; + } else { + cmd = "addr2line"; path = ADDR2LINE; } char *buf = g_addr2line.buf; @@ -48,12 +53,11 @@ void GetAddr2linePathInit(void) { strlcat(buf, "/", PATH_MAX); } strlcat(buf, path, PATH_MAX); - } - if (*buf) { - g_addr2line.res = buf; + res = buf; } else { - g_addr2line.res = commandv("addr2line", buf, PATH_MAX); + res = commandv(cmd, buf, PATH_MAX); } + g_addr2line.res = res; errno = e; } diff --git a/libc/log/backtrace2.c b/libc/log/backtrace2.c index 5c2f7c015..a68d90f05 100644 --- a/libc/log/backtrace2.c +++ b/libc/log/backtrace2.c @@ -66,7 +66,7 @@ static int PrintBacktraceUsingAddr2line(int fd, const struct StackFrame *bp) { } if (!PLEDGED(STDIO) || !PLEDGED(EXEC) || !PLEDGED(EXEC)) { - ShowHint("won't print addr2line backtrace because pledge"); + ShowHint("pledge() sandboxing makes backtraces not as good"); return -1; } diff --git a/libc/log/backtrace3.c b/libc/log/backtrace3.c index 6857d1d6f..b82e12a4a 100644 --- a/libc/log/backtrace3.c +++ b/libc/log/backtrace3.c @@ -18,6 +18,7 @@ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/assert.h" #include "libc/calls/calls.h" +#include "libc/cosmo.h" #include "libc/fmt/itoa.h" #include "libc/intrin/kprintf.h" #include "libc/intrin/weaken.h" @@ -29,6 +30,7 @@ #include "libc/runtime/runtime.h" #include "libc/runtime/symbols.internal.h" #include "libc/str/str.h" +#include "libc/thread/thread.h" #include "libc/thread/tls.h" #define LIMIT 100 @@ -47,8 +49,11 @@ dontinstrument dontasan int PrintBacktraceUsingSymbols( int fd, const struct StackFrame *bp, struct SymbolTable *st) { size_t gi; intptr_t addr; + const char *name; int i, symbol, addend; + static char cxxbuf[8192]; struct Garbages *garbage; + static pthread_spinlock_t lock; const struct StackFrame *frame; (void)gi; if (!bp) @@ -83,8 +88,15 @@ dontinstrument dontasan int PrintBacktraceUsingSymbols( symbol = 0; addend = 0; } - kprintf("%012lx %lx %s%+d\n", frame, addr, __get_symbol_name(st, symbol), - addend); + if ((name = __get_symbol_name(st, symbol)) && __is_mangled(name)) { + pthread_spin_lock(&lock); + __demangle(cxxbuf, name, sizeof(cxxbuf)); + kprintf("%012lx %lx %s%+d\n", frame, addr, cxxbuf, addend); + pthread_spin_unlock(&lock); + name = cxxbuf; + } else { + kprintf("%012lx %lx %s%+d\n", frame, addr, name, addend); + } } return 0; } diff --git a/libc/log/oncrash_arm64.c b/libc/log/oncrash_arm64.c index 47106759f..2ab6d31a1 100644 --- a/libc/log/oncrash_arm64.c +++ b/libc/log/oncrash_arm64.c @@ -31,6 +31,7 @@ #include "libc/calls/struct/utsname.h" #include "libc/calls/syscall-sysv.internal.h" #include "libc/calls/ucontext.h" +#include "libc/cosmo.h" #include "libc/cxxabi.h" #include "libc/errno.h" #include "libc/intrin/atomic.h" @@ -40,7 +41,6 @@ #include "libc/log/internal.h" #include "libc/log/log.h" #include "libc/macros.internal.h" -#include "libc/mem/mem.h" #include "libc/nexgen32e/stackframe.h" #include "libc/runtime/memtrack.internal.h" #include "libc/runtime/runtime.h" @@ -178,15 +178,15 @@ static relegated bool AppendFileLine(struct Buffer *b, const char *addr2line, } } -static relegated char *GetSymbolName(struct SymbolTable *st, int symbol, - char **mem, size_t *memsz) { - char *s, *t; - if ((s = __get_symbol_name(st, symbol)) && // - s[0] == '_' && s[1] == 'Z' && // - (t = __cxa_demangle(s, *mem, memsz, 0))) { - *mem = s = t; - } - return s; +static relegated char *GetSymbolName(struct SymbolTable *st, int symbol) { + char *str; + static char buf[8192]; + if (!(str = __get_symbol_name(st, symbol))) + return str; + if (!__is_mangled(str)) + return str; + __demangle(buf, str, sizeof(buf)); + return buf; } static relegated void __oncrash_impl(int sig, struct siginfo *si, @@ -241,8 +241,6 @@ static relegated void __oncrash_impl(int sig, struct siginfo *si, : (struct StackFrame *)__builtin_frame_address(0))); if (ctx) { long pc; - char *mem = 0; - size_t memsz = 0; int addend, symbol; const char *debugbin; const char *addr2line; @@ -305,7 +303,7 @@ static relegated void __oncrash_impl(int sig, struct siginfo *si, addend -= st->symbols[symbol].x; Append(b, " "); if (!AppendFileLine(b, addr2line, debugbin, pc)) { - Append(b, "%s", GetSymbolName(st, symbol, &mem, &memsz)); + Append(b, "%s", GetSymbolName(st, symbol)); if (addend) Append(b, "%+d", addend); } @@ -327,7 +325,7 @@ static relegated void __oncrash_impl(int sig, struct siginfo *si, addend -= st->symbols[symbol].x; Append(b, " "); if (!AppendFileLine(b, addr2line, debugbin, pc)) { - Append(b, "%s", GetSymbolName(st, symbol, &mem, &memsz)); + Append(b, "%s", GetSymbolName(st, symbol)); if (addend) Append(b, "%+d", addend); } @@ -367,13 +365,12 @@ static relegated void __oncrash_impl(int sig, struct siginfo *si, } Append(b, " %016lx fp %lx lr ", fp, pc); if (!AppendFileLine(b, addr2line, debugbin, pc) && st) { - Append(b, "%s", GetSymbolName(st, symbol, &mem, &memsz)); + Append(b, "%s", GetSymbolName(st, symbol)); if (addend) Append(b, "%+d", addend); } Append(b, "\n"); } - free(mem); } b->p[b->n - 1] = '\n'; klog(b->p, MIN(b->i, b->n)); diff --git a/libc/mem/tinymalloc.inc b/libc/mem/tinymalloc.inc index f214248aa..fffdcdc6c 100644 --- a/libc/mem/tinymalloc.inc +++ b/libc/mem/tinymalloc.inc @@ -19,10 +19,18 @@ #include "libc/stdckdint.h" #include "libc/str/str.h" +#ifndef TINYMALLOC_MAX_BYTES +#define TINYMALLOC_MAX_BYTES 1073741824 +#endif + +#ifndef TINYMALLOC_MAX_ALIGN +#define TINYMALLOC_MAX_ALIGN 4096 +#endif + #ifndef MODE_DBG /* don't interfere with asan dlmalloc hooking */ -_Alignas(65536) static struct { - char memory[1024 * 1024 * 1024]; +_Alignas(TINYMALLOC_MAX_ALIGN) static struct { + char memory[TINYMALLOC_MAX_BYTES]; unsigned used, last, free; } heap; @@ -59,7 +67,7 @@ void *memalign(size_t align, size_t need) { need = sizeof(unsigned); if (align < sizeof(unsigned)) align = sizeof(unsigned); - if (align > 65536) + if (align > TINYMALLOC_MAX_ALIGN) goto InvalidArgument; if (ckd_add(&need, need, sizeof(unsigned) - 1)) goto OutOfMemory; @@ -86,7 +94,7 @@ void *memalign(size_t align, size_t need) { base &= -align; if (ckd_add(&toto, base, need)) goto OutOfMemory; - if (toto > sizeof(heap.memory)) + if (toto > TINYMALLOC_MAX_BYTES) goto OutOfMemory; res = heap.memory + base; ((unsigned *)res)[-1] = need; @@ -139,7 +147,7 @@ void *realloc(void *ptr, size_t need) { need &= -sizeof(unsigned); if (ckd_add(&toto, base, need)) goto OutOfMemory; - if (toto > sizeof(heap.memory)) + if (toto > TINYMALLOC_MAX_BYTES) goto OutOfMemory; ((unsigned *)mem)[-1] = need; heap.used = toto; diff --git a/libc/runtime/getsymboltable.c b/libc/runtime/getsymboltable.c index b9f8ae2cb..4f87c2762 100644 --- a/libc/runtime/getsymboltable.c +++ b/libc/runtime/getsymboltable.c @@ -17,6 +17,7 @@ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/assert.h" +#include "libc/errno.h" #include "libc/intrin/promises.internal.h" #include "libc/intrin/strace.internal.h" #include "libc/intrin/weaken.h" @@ -124,6 +125,7 @@ struct SymbolTable *GetSymbolTable(void) { struct Zipos *z; if (pthread_spin_trylock(&g_lock)) return 0; + int e = errno; if (!__symtab && !__isworker) { if (_weaken(__zipos_get) && (z = _weaken(__zipos_get)())) { if ((__symtab = GetSymbolTableFromZip(z))) { @@ -137,6 +139,7 @@ struct SymbolTable *GetSymbolTable(void) { __symtab = GetSymbolTableFromElf(); } } + errno = e; pthread_spin_unlock(&g_lock); return __symtab; } diff --git a/libc/str/demangle.c b/libc/str/demangle.c index a290f5485..40d390b32 100644 --- a/libc/str/demangle.c +++ b/libc/str/demangle.c @@ -43,7 +43,7 @@ Copyright (c) 2007 Hyogeol Lee \n\ Copyright (c) 2015-2017 Kai Wang \n\ Copyright (c) 2024 Justine Tunney "); // https://github.com/freebsd/freebsd-src/blob/2176c9ab71c85efd90a6c7af4a9e04fe8e3d49ca/contrib/libcxxrt/libelftc_dem_gnu3.c -// clang -format off +// clang-format off /** * @file demangle.c @@ -321,9 +321,9 @@ static char * vector_str_get_flat(struct cpp_demangle_data *ddata, const struct vector_str *v, size_t *l) { - ssize_t elem_pos, elem_size, rtn_size; size_t i; - char *rtn; + char *rtn, *p; + ssize_t rtn_size; if (!v || !v->size) return 0; @@ -334,14 +334,9 @@ vector_str_get_flat(struct cpp_demangle_data *ddata, const struct vector_str *v, if (!(rtn = (char *)alloc(ddata, 1, rtn_size + 1))) return 0; - elem_pos = 0; - for (i = 0; i < v->size; ++i) { - elem_size = strlen(v->container[i]); - memcpy(rtn + elem_pos, v->container[i], elem_size); - elem_pos += elem_size; - } - - rtn[rtn_size] = '\0'; + p = rtn; + for (i = 0; i < v->size; ++i) + p = stpcpy(p, v->container[i]); if (l) *l = rtn_size; @@ -2878,7 +2873,7 @@ static int cpp_demangle_read_tmpl_args(struct cpp_demangle_data *ddata) { struct vector_str *v; - size_t arg_len, idx, limit, size; + size_t arg_len, idx, limit; char *arg; if (!ddata || *ddata->cur == '\0') @@ -2907,12 +2902,7 @@ cpp_demangle_read_tmpl_args(struct cpp_demangle_data *ddata) if (*ddata->cur == 'E') { ++ddata->cur; - size = v->size; - ASSERT(size > 0); - if (!strncmp(v->container[size - 1], ">", 1)) { - if (!DEM_PUSH_STR(ddata, ">")) - return 0; - } else if (!DEM_PUSH_STR(ddata, ">")) + if (!DEM_PUSH_STR(ddata, ">")) return 0; ddata->is_tmpl = true; break; @@ -4070,6 +4060,7 @@ failure(char *buf, const char *org, size_t buflen) * be a partially copied result. In both cases, -1 is returned. The size * of the output is only returned if this routine is fully succesful. To * successfully cover nearly all the test cases from libcxxabi use 65536 + * and to be able to print 99% of the symbols LLVM's libcxx.a, use 5632. * * It's important to call ismangled() before this, since non-c++ symbols * have a special meaning; for example, "g" will return "__float128". It diff --git a/libc/testlib/testmain.c b/libc/testlib/testmain.c index c87f84ac5..b343aa374 100644 --- a/libc/testlib/testmain.c +++ b/libc/testlib/testmain.c @@ -94,6 +94,12 @@ dontasan int main(int argc, char *argv[]) { struct Dll *e; struct TestAspect *a; + if (errno) { + tinyprint(2, "error: the errno variable was contaminated by constructors\n", + NULL); + return 1; + } + __ubsan_strict = true; __log_level = kLogInfo; GetOpts(argc, argv); diff --git a/test/libc/calls/unveil_test.c b/test/libc/calls/unveil_test.c index 6681eec8d..9e302e878 100644 --- a/test/libc/calls/unveil_test.c +++ b/test/libc/calls/unveil_test.c @@ -18,6 +18,7 @@ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/calls/calls.h" #include "libc/calls/landlock.h" +#include "libc/calls/pledge.h" #include "libc/calls/struct/dirent.h" #include "libc/calls/struct/stat.h" #include "libc/calls/syscall-sysv.internal.h" @@ -337,6 +338,7 @@ TEST(unveil, usedTwice_forbidden_worksWithPledge) { ASSERT_NE(-1, (gotsome = _mapshared(FRAMESIZE))); ASSERT_NE(-1, (pid = fork())); if (!pid) { + __pledge_mode = PLEDGE_PENALTY_KILL_PROCESS; // install our first seccomp filter ASSERT_SYS(0, 0, pledge("stdio rpath wpath cpath unveil", 0)); ASSERT_SYS(0, 0, mkdir("jail", 0755)); From df68a6362bedd7a81fc3b22e04ac73069a593329 Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Tue, 7 May 2024 18:18:10 -0700 Subject: [PATCH 039/123] Release Cosmopolitan v3.3.5 --- libc/integral/normalize.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libc/integral/normalize.inc b/libc/integral/normalize.inc index 653d32dcc..08c2fc2a9 100644 --- a/libc/integral/normalize.inc +++ b/libc/integral/normalize.inc @@ -4,7 +4,7 @@ #define __COSMOPOLITAN_MAJOR__ 3 #define __COSMOPOLITAN_MINOR__ 3 -#define __COSMOPOLITAN_PATCH__ 4 +#define __COSMOPOLITAN_PATCH__ 5 #define __COSMOPOLITAN__ \ (100000000 * __COSMOPOLITAN_MAJOR__ + 1000000 * __COSMOPOLITAN_MINOR__ + \ __COSMOPOLITAN_PATCH__) From 56e0fd9d1d6b94fc5150ab0edbbb55fae683a4f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C5=8Dshin?= Date: Tue, 7 May 2024 21:08:26 -0700 Subject: [PATCH 040/123] Use latest cosmocc (#1175) --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 05299709e..8bbcd2b2b 100644 --- a/Makefile +++ b/Makefile @@ -149,9 +149,9 @@ export MODE export SOURCE_DATE_EPOCH export TMPDIR -COSMOCC = .cosmocc/3.3.3 +COSMOCC = .cosmocc/3.3.5 TOOLCHAIN = $(COSMOCC)/bin/$(ARCH)-linux-cosmo- -DOWNLOAD := $(shell build/download-cosmocc.sh $(COSMOCC) 3.3.3 e4d0fa63cd79cc3bfff6c2d015f1776db081409907625aea8ad40cefc1996d08) +DOWNLOAD := $(shell build/download-cosmocc.sh $(COSMOCC) 3.3.5 db78fd8d3f8706e9dff4be72bf71d37a3f12062f212f407e1c33bc4af3780dd0) AS = $(TOOLCHAIN)as CC = $(TOOLCHAIN)gcc From 8f18b3ad6589202d4527bc7a9c3195c33d54fd90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C5=8Dshin?= Date: Tue, 7 May 2024 22:48:48 -0700 Subject: [PATCH 041/123] Reapply apeinstall.sh binfmt flags (#1171) 7d31fc3 made it safe to register ape with the binfmt P flag. Older files will still get their paths passed via argv[0] and everything should just work. This also restores the F flag that was rolled back alongside the P flag; this seems like a good idea to me now. It makes it so /usr/bin/ape is kind of part of the kernel; simply replacing the file will not change the loader used. The binfmt will have to be reregistered as well. ape/apeinstall.sh will already nag you if there's an existing binfmt for ape. It might be nice to make it actually replace the registration. This reverts commit df648fb17457a3f9f770ddd9898271fa3f4fbf1c. --- ape/apeinstall.sh | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/ape/apeinstall.sh b/ape/apeinstall.sh index c1620f3fe..2a0a28590 100755 --- a/ape/apeinstall.sh +++ b/ape/apeinstall.sh @@ -137,13 +137,20 @@ if [ x"$(uname -s)" = xLinux ]; then echo done >&2 fi + uname_r="$(uname -r)" + if printf '%s\n%s\n' 5.12 "$uname_r" | sort -CV; then + FLAGS=FP + else + FLAGS=F + fi + echo >&2 echo registering APE with binfmt_misc >&2 echo you may need to edit configs to persist across reboot >&2 - echo '$SUDO sh -c "echo '"'"':APE:M::MZqFpD::/usr/bin/ape:'"'"' >/proc/sys/fs/binfmt_misc/register"' >&2 - $SUDO sh -c "echo ':APE:M::MZqFpD::/usr/bin/ape:' >/proc/sys/fs/binfmt_misc/register" || exit - echo '$SUDO sh -c "echo '"'"':APE-jart:M::jartsr::/usr/bin/ape:'"'"' >/proc/sys/fs/binfmt_misc/register"' >&2 - $SUDO sh -c "echo ':APE-jart:M::jartsr::/usr/bin/ape:' >/proc/sys/fs/binfmt_misc/register" || exit + echo '$SUDO sh -c "echo '"'"':APE:M::MZqFpD::/usr/bin/ape:'"$FLAGS'"' >/proc/sys/fs/binfmt_misc/register"' >&2 + $SUDO sh -c "echo ':APE:M::MZqFpD::/usr/bin/ape:$FLAGS' >/proc/sys/fs/binfmt_misc/register" || exit + echo '$SUDO sh -c "echo '"'"':APE-jart:M::jartsr::/usr/bin/ape:'"$FLAGS'"' >/proc/sys/fs/binfmt_misc/register"' >&2 + $SUDO sh -c "echo ':APE-jart:M::jartsr::/usr/bin/ape:$FLAGS' >/proc/sys/fs/binfmt_misc/register" || exit echo done >&2 if [ x"$(cat /proc/sys/fs/binfmt_misc/status)" = xdisabled ]; then From 952b9009e8a2faf22b7614481d42e9801edf6804 Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Wed, 8 May 2024 01:00:58 -0700 Subject: [PATCH 042/123] Avoid crash looping on AARCH64 --- libc/intrin/feenableexcept.c | 15 ++++++--------- libc/log/oncrash_arm64.c | 2 ++ libc/runtime/enable_tls.c | 4 ++-- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/libc/intrin/feenableexcept.c b/libc/intrin/feenableexcept.c index 503dee61a..bbf79ad7c 100644 --- a/libc/intrin/feenableexcept.c +++ b/libc/intrin/feenableexcept.c @@ -78,17 +78,14 @@ int feenableexcept(int excepts) { #elif defined(__aarch64__) - unsigned fpcr; - unsigned fpcr2; - unsigned updated_fpcr; - fpcr = __builtin_aarch64_get_fpcr(); - fpcr2 = fpcr | (excepts << 8); + unsigned fpcr = __builtin_aarch64_get_fpcr(); + unsigned want = excepts << 8; + unsigned fpcr2 = fpcr | want; if (fpcr != fpcr2) { __builtin_aarch64_set_fpcr(fpcr2); - // floating point exception trapping is optional in aarch64 - updated_fpcr = __builtin_aarch64_get_fpsr(); - if (fpcr2 & ~updated_fpcr) - return -1; + fpcr2 = __builtin_aarch64_get_fpsr(); + if ((fpcr2 & want) != want) + return -1; // not supported by cpu } return (fpcr >> 8) & FE_ALL_EXCEPT; diff --git a/libc/log/oncrash_arm64.c b/libc/log/oncrash_arm64.c index 2ab6d31a1..9229d6cf0 100644 --- a/libc/log/oncrash_arm64.c +++ b/libc/log/oncrash_arm64.c @@ -394,6 +394,8 @@ relegated void __oncrash(int sig, struct siginfo *si, void *arg) { BLOCK_CANCELATION; SpinLock(&lock); __oncrash_impl(sig, si, arg); + if (sig != SIGQUIT && sig != SIGTRAP) + _exit(1); SpinUnlock(&lock); ALLOW_CANCELATION; } diff --git a/libc/runtime/enable_tls.c b/libc/runtime/enable_tls.c index 045740baf..2be328cc1 100644 --- a/libc/runtime/enable_tls.c +++ b/libc/runtime/enable_tls.c @@ -68,13 +68,13 @@ static unsigned long ParseMask(const char *str) { * * __get_tls() * │ - * %fs Linux/BSDs + * %fs OpenBSD/NetBSD * _Thread_local │ * ┌───┬──────────┬──────────┼───┐ * │pad│ .tdata │ .tbss │tib│ * └───┴──────────┴──────────┼───┘ * │ - * Windows/Mac %gs + * Linux/FreeBSD/Windows/Mac %gs * * Here's the TLS memory layout on aarch64: * From 793393a3413f7c7b781fc88750e6c2659af9b56f Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Wed, 8 May 2024 03:47:43 -0700 Subject: [PATCH 043/123] Polyfill SA_RESETHAND on MacOS ARM64 This change solves the XNU crash loop mystery. Apple's documentation claims to support this feature, but they only define the constant in their header files. The kernel acknowledges thi SA_RESETHAND bit, by clearing it from the sa_flags state, returns zero, and does nothing. --- libc/calls/sigaction.c | 6 ++++++ libc/calls/sigenter-xnu.c | 17 +++++++++++++++++ libc/log/oncrash_arm64.c | 2 -- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/libc/calls/sigaction.c b/libc/calls/sigaction.c index 1ee606403..44536bd2b 100644 --- a/libc/calls/sigaction.c +++ b/libc/calls/sigaction.c @@ -252,6 +252,12 @@ static int __sigaction(int sig, const struct sigaction *act, rc = sys_sigaction(sig, ap, oldact, arg4, arg5); } else { rc = _sysret(__syslib->__sigaction(sig, ap, oldact)); + // xnu silicon claims to support sa_resethand but it does nothing + // this can be tested, since it clears the bit from flags as well + if (!rc && oldact && + (((struct sigaction_silicon *)ap)->sa_flags & SA_RESETHAND)) { + ((struct sigaction_silicon *)oldact)->sa_flags |= SA_RESETHAND; + } } if (rc != -1) { sigaction_native2cosmo((union metasigaction *)oldact); diff --git a/libc/calls/sigenter-xnu.c b/libc/calls/sigenter-xnu.c index 2ff6f09f6..c68a9c7c5 100644 --- a/libc/calls/sigenter-xnu.c +++ b/libc/calls/sigenter-xnu.c @@ -30,6 +30,7 @@ #include "libc/log/libfatal.internal.h" #include "libc/runtime/runtime.h" #include "libc/runtime/stack.h" +#include "libc/runtime/syslib.internal.h" #include "libc/str/str.h" #include "libc/sysv/consts/sa.h" @@ -494,6 +495,8 @@ privileged void __sigenter_xnu(void *fn, int infostyle, int sig, privileged void __sigenter_xnu(int sig, struct siginfo_xnu *xnuinfo, struct __darwin_ucontext *xnuctx) { #endif + + // allocate signal frame on stack #pragma GCC push_options #pragma GCC diagnostic ignored "-Wframe-larger-than=" struct Goodies { @@ -502,10 +505,24 @@ privileged void __sigenter_xnu(int sig, struct siginfo_xnu *xnuinfo, } g; CheckLargeStackAllocation(&g, sizeof(g)); #pragma GCC pop_options + + // handle signal int rva, flags; rva = __sighandrvas[sig]; if (rva >= kSigactionMinRva) { flags = __sighandflags[sig]; + +#ifdef __aarch64__ + // xnu silicon claims to support sa_resethand but it does nothing + // this can be tested, since it clears the bit from flags as well + if (flags & SA_RESETHAND) { + struct sigaction sa = {0}; + __syslib->__sigaction(sig, &sa, 0); + __sighandflags[sig] = 0; + __sighandrvas[sig] = 0; + } +#endif + if (~flags & SA_SIGINFO) { ((sigaction_f)(__executable_start + rva))(sig, 0, 0); } else { diff --git a/libc/log/oncrash_arm64.c b/libc/log/oncrash_arm64.c index 9229d6cf0..2ab6d31a1 100644 --- a/libc/log/oncrash_arm64.c +++ b/libc/log/oncrash_arm64.c @@ -394,8 +394,6 @@ relegated void __oncrash(int sig, struct siginfo *si, void *arg) { BLOCK_CANCELATION; SpinLock(&lock); __oncrash_impl(sig, si, arg); - if (sig != SIGQUIT && sig != SIGTRAP) - _exit(1); SpinUnlock(&lock); ALLOW_CANCELATION; } From ae2a7ac844e2e501d49a3cabc286183594690ead Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Wed, 8 May 2024 04:03:51 -0700 Subject: [PATCH 044/123] Fix thread-local storage bugs on aarch64 This change fixes an issue where .tbss memory might not be initialized. --- ape/aarch64.lds | 7 ++-- ape/ape.lds | 4 +- ape/sections.internal.h | 2 + libc/calls/sigaction.c | 2 +- libc/runtime/enable_tls.c | 66 ++++++++++++++++++--------------- libc/thread/mktls.c | 77 ++++++++++++++++++++++++--------------- 6 files changed, 93 insertions(+), 65 deletions(-) diff --git a/ape/aarch64.lds b/ape/aarch64.lds index cec91ae89..57b22b4b5 100644 --- a/ape/aarch64.lds +++ b/ape/aarch64.lds @@ -293,7 +293,6 @@ _tdata_size = _tdata_end - _tdata_start; _tbss_size = _tbss_end - _tbss_start; _tbss_offset = _tbss_start - _tdata_start; _tls_content = (_tdata_end - _tdata_start) + (_tbss_end - _tbss_start); -_tls_align = MAX(ALIGNOF(.tdata), ALIGNOF(.tbss)); - -ASSERT(ALIGNOF(.tdata) <= TLS_ALIGNMENT && ALIGNOF(.tbss) <= TLS_ALIGNMENT, - "_Thread_local _Alignof can't exceed TLS_ALIGNMENT"); +_tdata_align = ALIGNOF(.tdata); +_tbss_align = ALIGNOF(.tbss); +_tls_align = MAX(TLS_ALIGNMENT, MAX(ALIGNOF(.tdata), ALIGNOF(.tbss))); diff --git a/ape/ape.lds b/ape/ape.lds index 9b1d40e5a..eaaf3ed59 100644 --- a/ape/ape.lds +++ b/ape/ape.lds @@ -553,7 +553,9 @@ _tdata_size = _tdata_end - _tdata_start; _tbss_size = _tbss_end - _tbss_start; _tbss_offset = _tbss_start - _tdata_start; _tls_content = (_tdata_end - _tdata_start) + (_tbss_end - _tbss_start); -_tls_align = 1; +_tdata_align = ALIGNOF(.tdata); +_tbss_align = ALIGNOF(.tbss); +_tls_align = MAX(TLS_ALIGNMENT, MAX(ALIGNOF(.tdata), ALIGNOF(.tbss))); ape_cod_offset = 0; ape_cod_vaddr = ADDR(.head); diff --git a/ape/sections.internal.h b/ape/sections.internal.h index 6bc8cc312..75e544c46 100644 --- a/ape/sections.internal.h +++ b/ape/sections.internal.h @@ -16,6 +16,8 @@ extern unsigned char _tdata_end[] __attribute__((__weak__)); extern unsigned char _tbss_start[] __attribute__((__weak__)); extern unsigned char _tbss_end[] __attribute__((__weak__)); extern unsigned char _tls_align[] __attribute__((__weak__)); +extern unsigned char _tdata_align[] __attribute__((__weak__)); +extern unsigned char _tbss_align[] __attribute__((__weak__)); extern unsigned char __test_start[] __attribute__((__weak__)); extern unsigned char __ro[] __attribute__((__weak__)); extern unsigned char __data_start[] __attribute__((__weak__)); diff --git a/libc/calls/sigaction.c b/libc/calls/sigaction.c index 44536bd2b..82a534970 100644 --- a/libc/calls/sigaction.c +++ b/libc/calls/sigaction.c @@ -255,7 +255,7 @@ static int __sigaction(int sig, const struct sigaction *act, // xnu silicon claims to support sa_resethand but it does nothing // this can be tested, since it clears the bit from flags as well if (!rc && oldact && - (((struct sigaction_silicon *)ap)->sa_flags & SA_RESETHAND)) { + (((struct sigaction_silicon *)oldact)->sa_flags & SA_RESETHAND)) { ((struct sigaction_silicon *)oldact)->sa_flags |= SA_RESETHAND; } } diff --git a/libc/runtime/enable_tls.c b/libc/runtime/enable_tls.c index 2be328cc1..c55f25aad 100644 --- a/libc/runtime/enable_tls.c +++ b/libc/runtime/enable_tls.c @@ -112,10 +112,6 @@ static unsigned long ParseMask(const char *str) { * and your `errno` variable also won't be thread safe anymore. */ textstartup void __enable_tls(void) { - int tid; - size_t siz; - char *mem, *tls; - struct CosmoTib *tib; // Here's the layout we're currently using: // @@ -138,7 +134,8 @@ textstartup void __enable_tls(void) { #ifdef __x86_64__ - siz = ROUNDUP(I(_tls_size) + sizeof(*tib), TLS_ALIGNMENT); + char *mem; + size_t siz = ROUNDUP(I(_tls_size) + sizeof(struct CosmoTib), TLS_ALIGNMENT); if (siz <= sizeof(__static_tls)) { // if tls requirement is small then use the static tls block // which helps avoid a system call for appes with little tls @@ -158,28 +155,44 @@ textstartup void __enable_tls(void) { kAsanProtected); } - tib = (struct CosmoTib *)(mem + siz - sizeof(*tib)); - tls = mem + siz - sizeof(*tib) - I(_tls_size); + struct CosmoTib *tib = (struct CosmoTib *)(mem + siz - sizeof(*tib)); + char *tls = mem + siz - sizeof(*tib) - I(_tls_size); + + // copy in initialized data section + if (I(_tdata_size)) { + if (IsAsan()) { + __asan_memcpy(tls, _tdata_start, I(_tdata_size)); + } else { + memcpy(tls, _tdata_start, I(_tdata_size)); + } + } #elif defined(__aarch64__) - size_t hiz = ROUNDUP(sizeof(*tib) + 2 * sizeof(void *), I(_tls_align)); - siz = hiz + I(_tls_size); - if (siz <= sizeof(__static_tls)) { + uintptr_t size = ROUNDUP(sizeof(struct CosmoTib), I(_tls_align)) + // + ROUNDUP(sizeof(uintptr_t) * 2, I(_tdata_align)) + // + ROUNDUP(I(_tdata_size), I(_tbss_align)) + // + I(_tbss_size); + + char *mem; + if (I(_tls_align) <= TLS_ALIGNMENT && size <= sizeof(__static_tls)) { mem = __static_tls; } else { - mem = _weaken(_mapanon)(siz); + mem = _weaken(_mapanon)(size); } - if (IsAsan()) { - // there's a roundup(pagesize) gap between .tdata and .tbss - // poison that empty space - __asan_poison(mem + hiz + I(_tdata_size), I(_tbss_offset) - I(_tdata_size), - kAsanProtected); - } + struct CosmoTib *tib = + (struct CosmoTib *)(mem + + ROUNDUP(sizeof(struct CosmoTib), I(_tls_align)) - + sizeof(struct CosmoTib)); - tib = (struct CosmoTib *)mem; - tls = mem + hiz; + uintptr_t *dtv = (uintptr_t *)(tib + 1); + size_t dtv_size = sizeof(uintptr_t) * 2; + + char *tdata = (char *)dtv + ROUNDUP(dtv_size, I(_tdata_align)); + if (I(_tdata_size)) { + memmove(tdata, _tdata_start, I(_tdata_size)); + } // Set the DTV. // @@ -189,8 +202,8 @@ textstartup void __enable_tls(void) { // // @see musl/src/env/__init_tls.c // @see https://chao-tic.github.io/blog/2018/12/25/tls - ((uintptr_t *)tls)[-2] = 1; - ((void **)tls)[-1] = tls; + dtv[0] = 1; + dtv[1] = (uintptr_t)tdata; #else #error "unsupported architecture" @@ -213,6 +226,8 @@ textstartup void __enable_tls(void) { } else if (IsXnuSilicon()) { tib->tib_syshand = __syslib->__pthread_self(); } + + int tid; if (IsLinux() || IsXnuSilicon()) { // gnu/systemd guarantees pid==tid for the main thread so we can // avoid issuing a superfluous system call at startup in program @@ -237,15 +252,6 @@ textstartup void __enable_tls(void) { _pthread_list = &_pthread_static.list; atomic_store_explicit(&_pthread_static.ptid, tid, memory_order_relaxed); - // copy in initialized data section - if (I(_tdata_size)) { - if (IsAsan()) { - __asan_memcpy(tls, _tdata_start, I(_tdata_size)); - } else { - memcpy(tls, _tdata_start, I(_tdata_size)); - } - } - // ask the operating system to change the x86 segment register __set_tls(tib); diff --git a/libc/thread/mktls.c b/libc/thread/mktls.c index 93919f051..d871603e5 100644 --- a/libc/thread/mktls.c +++ b/libc/thread/mktls.c @@ -25,6 +25,7 @@ #include "libc/mem/mem.h" #include "libc/runtime/internal.h" #include "libc/runtime/runtime.h" +#include "libc/stdio/sysparam.h" #include "libc/str/locale.h" #include "libc/str/str.h" #include "libc/thread/tls.h" @@ -54,6 +55,19 @@ static char *_mktls_below(struct CosmoTib **out_tib) { char *mem, *tls; struct CosmoTib *tib; + // Here's the TLS memory layout on x86_64 + // + // __get_tls() + // │ + // %fs OpenBSD/NetBSD + // _Thread_local │ + // ┌───┬──────────┬──────────┼───┐ + // │pad│ .tdata │ .tbss │tib│ + // └───┴──────────┴──────────┼───┘ + // │ + // Linux/FreeBSD/Windows/Mac %gs + // + siz = ROUNDUP(I(_tls_size) + sizeof(*tib), _Alignof(struct CosmoTib)); siz = ROUNDUP(siz, _Alignof(struct CosmoTib)); mem = memalign(_Alignof(struct CosmoTib), siz); @@ -77,53 +91,58 @@ static char *_mktls_below(struct CosmoTib **out_tib) { } // clear .tbss - bzero(tls + I(_tbss_offset), I(_tbss_size)); + if (I(_tbss_size)) + bzero(tls + I(_tbss_offset), I(_tbss_size)); // set up thread information block return _mktls_finish(out_tib, mem, tib); } static char *_mktls_above(struct CosmoTib **out_tib) { - size_t hiz, siz; - struct CosmoTib *tib; - char *mem, *dtv, *tls; - // allocate memory for tdata, tbss, and tib - hiz = ROUNDUP(sizeof(*tib) + 2 * sizeof(void *), I(_tls_align)); - siz = hiz + I(_tls_size); - mem = memalign(TLS_ALIGNMENT, siz); + // Here's the TLS memory layout on aarch64 + // + // x28 + // %tpidr_el0 + // │ + // │ _Thread_local + // ┌───┼───┬──────────┬──────────┐ + // │tib│dtv│ .tdata │ .tbss │ + // ├───┴───┴──────────┴──────────┘ + // │ + // __get_tls() + // + + size_t size = ROUNDUP(sizeof(struct CosmoTib), I(_tls_align)) + // + ROUNDUP(sizeof(uintptr_t) * 2, I(_tdata_align)) + // + ROUNDUP(I(_tdata_size), I(_tbss_align)) + // + I(_tbss_size); + + char *mem = memalign(I(_tls_align), size); if (!mem) return 0; - // poison memory between tdata and tbss - if (IsAsan()) { - __asan_poison(mem + hiz + I(_tdata_size), I(_tbss_offset) - I(_tdata_size), - kAsanProtected); - } + struct CosmoTib *tib = + (struct CosmoTib *)(mem + + ROUNDUP(sizeof(struct CosmoTib), I(_tls_align)) - + sizeof(struct CosmoTib)); - tib = (struct CosmoTib *)mem; - dtv = mem + sizeof(*tib); - tls = mem + hiz; + uintptr_t *dtv = (uintptr_t *)(tib + 1); + size_t dtv_size = sizeof(uintptr_t) * 2; - // set dtv - ((uintptr_t *)dtv)[0] = 1; - ((void **)dtv)[1] = tls; - - // initialize .tdata + char *tdata = (char *)dtv + ROUNDUP(dtv_size, I(_tdata_align)); if (I(_tdata_size)) { - if (IsAsan()) { - __asan_memcpy(tls, _tdata_start, I(_tdata_size)); - } else { - memmove(tls, _tdata_start, I(_tdata_size)); - } + memmove(tdata, _tdata_start, I(_tdata_size)); } - // clear .tbss + char *tbss = tdata + ROUNDUP(I(_tdata_size), I(_tbss_align)); if (I(_tbss_size)) { - bzero(tls + I(_tbss_offset), I(_tbss_size)); + bzero(tbss, I(_tbss_size)); } - // set up thread information block + dtv[0] = 1; + dtv[1] = (uintptr_t)tdata; + return _mktls_finish(out_tib, mem, tib); } From 66599814570dd0bd8524de58b94c3de1cd05fe37 Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Wed, 8 May 2024 04:13:37 -0700 Subject: [PATCH 045/123] Release Cosmopolitan v3.3.6 --- libc/integral/normalize.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libc/integral/normalize.inc b/libc/integral/normalize.inc index 08c2fc2a9..2e02295b7 100644 --- a/libc/integral/normalize.inc +++ b/libc/integral/normalize.inc @@ -4,7 +4,7 @@ #define __COSMOPOLITAN_MAJOR__ 3 #define __COSMOPOLITAN_MINOR__ 3 -#define __COSMOPOLITAN_PATCH__ 5 +#define __COSMOPOLITAN_PATCH__ 6 #define __COSMOPOLITAN__ \ (100000000 * __COSMOPOLITAN_MAJOR__ + 1000000 * __COSMOPOLITAN_MINOR__ + \ __COSMOPOLITAN_PATCH__) From 13b9ecd5379ee32448f9f05dbc1b7c5f7f68b72b Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Thu, 9 May 2024 14:03:51 -0700 Subject: [PATCH 046/123] Remove outdated restriction on -Werror on cosmocc This was a good idea back when we were only using it to build various open source projects. However it no longer makes sense that many more people are depending on cosmocc, to develop new software. Our tooling shouldn't be making these kinds of decisions for the user. --- tool/cosmocc/bin/cosmocc | 5 ----- tool/cosmocc/bin/cosmocross | 5 ----- 2 files changed, 10 deletions(-) diff --git a/tool/cosmocc/bin/cosmocc b/tool/cosmocc/bin/cosmocc index 4951546df..148c960a7 100755 --- a/tool/cosmocc/bin/cosmocc +++ b/tool/cosmocc/bin/cosmocc @@ -184,11 +184,6 @@ for x; do # no support for position independent executables # https://github.com/jart/cosmopolitan/issues/1126 continue - elif [ x"$x" = x"-Werror" ] || \ - [ x"$x" = x"-pedantic-errors" ]; then - # this toolchain is intended for building other people's code - # elevating warnings into errors, should only be done by devs - continue elif [ x"$x" = x"-static-libgcc" ] || \ [ x"$x" = x"-shared-libgcc" ]; then # cosmopolitan.a always has llvm compiler runtime static code diff --git a/tool/cosmocc/bin/cosmocross b/tool/cosmocc/bin/cosmocross index 78304cda8..ecdc6a703 100755 --- a/tool/cosmocc/bin/cosmocross +++ b/tool/cosmocc/bin/cosmocross @@ -165,11 +165,6 @@ for x; do # information." set -- "$@" -momit-leaf-frame-pointer -foptimize-sibling-calls continue - elif [ x"$x" != x"${x#-Werror}" ] || \ - [ x"$x" = x"-pedantic-errors" ]; then - # this toolchain is intended for building other people's code - # elevating warnings into errors, should only be done by devs - continue elif [ x"$x" = x"-dumpversion" ]; then echo $GCC_VERSION exit 0 From 2f3c6e7cc34b4bac8373b1884e7dad31ad8a67e1 Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Tue, 14 May 2024 20:45:23 -0700 Subject: [PATCH 047/123] Revert "Remove zlib namespacing (#1142)" This reverts commit 5488f0b2caf7d080682a65001ae8c5d1732ab554 which was a good experiment to try, that didn't work out due to #1176 Fixes #1176 --- test/libc/runtime/zipos_test.c | 6 +++--- third_party/musl/pwd.c | 6 +++--- third_party/zip/crc32.h | 2 +- third_party/zip/zipfile.c | 10 +++++----- third_party/zlib/zconf.h | 4 ---- 5 files changed, 12 insertions(+), 16 deletions(-) diff --git a/test/libc/runtime/zipos_test.c b/test/libc/runtime/zipos_test.c index a8bae2c23..621c3bbea 100644 --- a/test/libc/runtime/zipos_test.c +++ b/test/libc/runtime/zipos_test.c @@ -33,9 +33,9 @@ __static_yoink("zipos"); __static_yoink("libc/testlib/hyperion.txt"); -__static_yoink("inflate"); -__static_yoink("inflateInit2"); -__static_yoink("inflateEnd"); +__static_yoink("_Cz_inflate"); +__static_yoink("_Cz_inflateInit2"); +__static_yoink("_Cz_inflateEnd"); void *Worker(void *arg) { int i, fd; diff --git a/third_party/musl/pwd.c b/third_party/musl/pwd.c index b43267e26..fc54b77cf 100644 --- a/third_party/musl/pwd.c +++ b/third_party/musl/pwd.c @@ -45,9 +45,9 @@ __static_yoink("musl_libc_notice"); // something as substantive as this library, then we shall assume the // application is meaty enough to benefit from the performance of the // chromium zlib library (costs ~40kb binary) versus just having puff -__static_yoink("inflateInit2"); -__static_yoink("inflate"); -__static_yoink("inflateEnd"); +__static_yoink("_Cz_inflateInit2"); +__static_yoink("_Cz_inflate"); +__static_yoink("_Cz_inflateEnd"); #endif static char * diff --git a/third_party/zip/crc32.h b/third_party/zip/crc32.h index dbf31c19b..83af2404c 100644 --- a/third_party/zip/crc32.h +++ b/third_party/zip/crc32.h @@ -31,7 +31,7 @@ #ifndef USE_ZLIB ZCONST ulg near *get_crc_table OF((void)); #endif -#if (1 || defined(USE_ZLIB) || defined(CRC_TABLE_ONLY)) +#if (defined(USE_ZLIB) || defined(CRC_TABLE_ONLY)) # ifdef IZ_CRC_BE_OPTIMIZ # undef IZ_CRC_BE_OPTIMIZ # endif diff --git a/third_party/zip/zipfile.c b/third_party/zip/zipfile.c index 1c2987971..7b923b80e 100644 --- a/third_party/zip/zipfile.c +++ b/third_party/zip/zipfile.c @@ -72,7 +72,7 @@ #include "libc/nt/winsock.h" #endif -unsigned crc32(unsigned crc, const unsigned char *buf, unsigned len); +unsigned _Cz_crc32(unsigned crc, const unsigned char *buf, unsigned len); /* * XXX start of zipfile.h @@ -867,7 +867,7 @@ local void read_Unicode_Path_entry(pZipListEntry) } strcpy(iname, pZipListEntry->iname); - chksum = crc32(chksum, (uch *)(iname), strlen(iname)); + chksum = _Cz_crc32(chksum, (uch *)(iname), strlen(iname)); free(iname); @@ -972,7 +972,7 @@ local void read_Unicode_Path_local_entry(pZipListEntry) } strcpy(iname, pZipListEntry->iname); - chksum = crc32(chksum, (uch *)(iname), strlen(iname)); + chksum = _Cz_crc32(chksum, (uch *)(iname), strlen(iname)); free(iname); @@ -1558,7 +1558,7 @@ local int add_Unicode_Path_local_extra_field(pZEntry) # define inameLocal (pZEntry->iname) #endif - chksum = crc32(chksum, (uch *)(inameLocal), strlen(inameLocal)); + chksum = _Cz_crc32(chksum, (uch *)(inameLocal), strlen(inameLocal)); #ifdef WIN32_OEM free(inameLocal); @@ -1685,7 +1685,7 @@ local int add_Unicode_Path_cen_extra_field(pZEntry) # define inameLocal (pZEntry->iname) #endif - chksum = crc32(chksum, (uch *)(inameLocal), strlen(inameLocal)); + chksum = _Cz_crc32(chksum, (uch *)(inameLocal), strlen(inameLocal)); #ifdef WIN32_OEM free(inameLocal); diff --git a/third_party/zlib/zconf.h b/third_party/zlib/zconf.h index d8e097b2f..3351fe91a 100644 --- a/third_party/zlib/zconf.h +++ b/third_party/zlib/zconf.h @@ -13,7 +13,6 @@ #define z_const const -#if 0 #define Z_COSMO_PREFIX_SET #define Bytef _Cz_Bytef @@ -163,9 +162,6 @@ #define zlibCompileFlags _Cz_zlibCompileFlags #define zlibVersion _Cz_zlibVersion -#pragma message "zconf is included, so zlibVersion should be renamed" - -#endif typedef unsigned char Byte; typedef unsigned int uInt; /* 16 bits or more */ From 624119ea38a28a15856f4720a794b71d14bc87ba Mon Sep 17 00:00:00 2001 From: Gavin Hayes Date: Fri, 17 May 2024 05:45:30 -0400 Subject: [PATCH 048/123] Fix NT accept/connect not initializing with SO_UPDATE_*_CONTEXT (#1164) --- libc/sock/accept-nt.c | 11 ++- libc/sock/connect-nt.c | 11 ++- test/libc/sock/BUILD.mk | 3 +- test/libc/sock/getpeername_test.c | 154 ++++++++++++++++++++++++++++++ test/libc/sock/socket_test.c | 2 - 5 files changed, 173 insertions(+), 8 deletions(-) create mode 100644 test/libc/sock/getpeername_test.c diff --git a/libc/sock/accept-nt.c b/libc/sock/accept-nt.c index b5dff0705..9aa702760 100644 --- a/libc/sock/accept-nt.c +++ b/libc/sock/accept-nt.c @@ -87,10 +87,6 @@ static int sys_accept_nt_start(int64_t handle, struct NtOverlapped *overlap, if (g_acceptex.lpAcceptEx(args->listensock, handle, args->buffer, 0, sizeof(args->buffer->local), sizeof(args->buffer->remote), 0, overlap)) { - // inherit properties of listening socket - unassert(!__imp_setsockopt(args->listensock, SOL_SOCKET, - kNtSoUpdateAcceptContext, &handle, - sizeof(handle))); return 0; } else { return -1; @@ -123,6 +119,13 @@ textwindows int sys_accept_nt(struct Fd *f, struct sockaddr_storage *addr, goto Finish; } + // inherit properties of listening socket + // errors ignored as if f->handle was created before forking + // this fails with WSAENOTSOCK, see + // https://github.com/jart/cosmopolitan/issues/1174 + __imp_setsockopt(resources.handle, SOL_SOCKET, kNtSoUpdateAcceptContext, + &f->handle, sizeof(f->handle)); + // create file descriptor for new socket // don't inherit the file open mode bits int oflags = 0; diff --git a/libc/sock/connect-nt.c b/libc/sock/connect-nt.c index 3065c51c4..ce1951452 100644 --- a/libc/sock/connect-nt.c +++ b/libc/sock/connect-nt.c @@ -35,11 +35,14 @@ #include "libc/sock/syscall_fd.internal.h" #include "libc/sock/wsaid.internal.h" #include "libc/sysv/consts/o.h" +#include "libc/sysv/consts/sol.h" #include "libc/sysv/errfuns.h" #ifdef __x86_64__ #include "libc/sock/yoink.inc" +__msabi extern typeof(__sys_setsockopt_nt) *const __imp_setsockopt; + struct ConnectArgs { const void *addr; uint32_t addrsize; @@ -113,6 +116,8 @@ static textwindows int sys_connect_nt_impl(struct Fd *f, const void *addr, // return ETIMEDOUT if SO_SNDTIMEO elapsed // note that Linux will return EINPROGRESS errno = etimedout(); + } else if (!rc) { + __imp_setsockopt(f->handle, SOL_SOCKET, kNtSoUpdateConnectContext, 0, 0); } return rc; } @@ -131,7 +136,11 @@ static textwindows int sys_connect_nt_impl(struct Fd *f, const void *addr, ok = WSAGetOverlappedResult(f->handle, overlap, &dwBytes, false, &dwFlags); WSACloseEvent(overlap->hEvent); free(overlap); - return ok ? 0 : __winsockerr(); + if (!ok) { + return __winsockerr(); + } + __imp_setsockopt(f->handle, SOL_SOCKET, kNtSoUpdateConnectContext, 0, 0); + return 0; } else if (WSAGetLastError() == kNtErrorIoPending) { f->connect_op = overlap; return einprogress(); diff --git a/test/libc/sock/BUILD.mk b/test/libc/sock/BUILD.mk index b4ca093a8..bb8159b53 100644 --- a/test/libc/sock/BUILD.mk +++ b/test/libc/sock/BUILD.mk @@ -68,7 +68,8 @@ o/$(MODE)/test/libc/sock/shutdown_test.runs \ o/$(MODE)/test/libc/sock/setsockopt_test.runs \ o/$(MODE)/test/libc/sock/sendfile_test.runs \ o/$(MODE)/test/libc/sock/poll_test.runs \ -o/$(MODE)/test/libc/sock/pollfd_test.runs: \ +o/$(MODE)/test/libc/sock/pollfd_test.runs \ +o/$(MODE)/test/libc/sock/getpeername_test.runs: \ private .PLEDGE = stdio rpath wpath cpath fattr proc inet o/$(MODE)/test/libc/sock/sendrecvmsg_test.runs: \ diff --git a/test/libc/sock/getpeername_test.c b/test/libc/sock/getpeername_test.c new file mode 100644 index 000000000..e46f00612 --- /dev/null +++ b/test/libc/sock/getpeername_test.c @@ -0,0 +1,154 @@ +/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│ +│ vi: set et ft=c ts=2 sts=2 sw=2 fenc=utf-8 :vi │ +╞══════════════════════════════════════════════════════════════════════════════╡ +│ Copyright 2024 Gavin Arthur Hayes │ +│ │ +│ Permission to use, copy, modify, and/or distribute this software for │ +│ any purpose with or without fee is hereby granted, provided that the │ +│ above copyright notice and this permission notice appear in all copies. │ +│ │ +│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │ +│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │ +│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │ +│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │ +│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │ +│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │ +│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ +│ PERFORMANCE OF THIS SOFTWARE. │ +╚─────────────────────────────────────────────────────────────────────────────*/ +#include "libc/dce.h" +#include "libc/sock/sock.h" +#include "libc/sock/struct/sockaddr.h" +#include "libc/sysv/consts/af.h" +#include "libc/sysv/consts/ipproto.h" +#include "libc/sysv/consts/limits.h" +#include "libc/sysv/consts/sock.h" +#include "libc/testlib/subprocess.h" +#include "libc/testlib/testlib.h" + +TEST(getpeername, worksAfterAcceptingOnFork) { + // https://github.com/jart/cosmopolitan/issues/1174 + if (IsWindows()) { + return; + } + char buf[16] = {0}; + uint32_t addrsize = sizeof(struct sockaddr_in); + struct sockaddr_in addr = { + .sin_family = AF_INET, + .sin_addr.s_addr = htonl(0x7f000001), + }; + ASSERT_SYS(0, 3, socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)); + ASSERT_SYS(0, 0, bind(3, (struct sockaddr *)&addr, sizeof(addr))); + ASSERT_SYS(0, 0, getsockname(3, (struct sockaddr *)&addr, &addrsize)); + ASSERT_SYS(0, 0, listen(3, SOMAXCONN)); + SPAWN(fork); + ASSERT_SYS(0, 4, accept(3, (struct sockaddr *)&addr, &addrsize)); + struct sockaddr_storage out = {0}; + uint32_t out_size = sizeof(out); + ASSERT_SYS(0, 0, getpeername(4, (struct sockaddr *)&out, &out_size)); + EXPECT_GE(sizeof(struct sockaddr_in), out_size); + EXPECT_EQ(AF_INET, ((struct sockaddr_in *)&out)->sin_family); + EXPECT_EQ(htonl(0x7f000001), ((struct sockaddr_in *)&out)->sin_addr.s_addr); + ASSERT_SYS(0, 5, send(4, "hello", 5, 0)); + PARENT(); + ASSERT_SYS(0, 0, close(3)); + ASSERT_SYS(0, 3, socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)); + ASSERT_SYS(0, 0, connect(3, (struct sockaddr *)&addr, sizeof(addr))); + ASSERT_SYS(0, 5, read(3, buf, 16)); + ASSERT_STREQ("hello", buf); + ASSERT_SYS(0, 0, close(3)); + WAIT(exit, 0); +} + +TEST(getpeername, worksAfterAcceptingOnParent) { + char buf[16] = {0}; + uint32_t addrsize = sizeof(struct sockaddr_in); + struct sockaddr_in addr = { + .sin_family = AF_INET, + .sin_addr.s_addr = htonl(0x7f000001), + }; + ASSERT_SYS(0, 3, socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)); + ASSERT_SYS(0, 0, bind(3, (struct sockaddr *)&addr, sizeof(addr))); + ASSERT_SYS(0, 0, getsockname(3, (struct sockaddr *)&addr, &addrsize)); + ASSERT_SYS(0, 0, listen(3, SOMAXCONN)); + SPAWN(fork); + ASSERT_SYS(0, 0, close(3)); + ASSERT_SYS(0, 3, socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)); + ASSERT_SYS(0, 0, connect(3, (struct sockaddr *)&addr, sizeof(addr))); + ASSERT_SYS(0, 5, read(3, buf, 16)); + ASSERT_STREQ("hello", buf); + PARENT(); + ASSERT_SYS(0, 4, accept(3, (struct sockaddr *)&addr, &addrsize)); + struct sockaddr_storage out = {0}; + uint32_t out_size = sizeof(out); + ASSERT_SYS(0, 0, getpeername(4, (struct sockaddr *)&out, &out_size)); + EXPECT_GE(sizeof(struct sockaddr_in), out_size); + EXPECT_EQ(AF_INET, ((struct sockaddr_in *)&out)->sin_family); + EXPECT_EQ(htonl(0x7f000001), ((struct sockaddr_in *)&out)->sin_addr.s_addr); + ASSERT_SYS(0, 5, send(4, "hello", 5, 0)); + ASSERT_SYS(0, 0, close(4)); + ASSERT_SYS(0, 0, close(3)); + WAIT(exit, 0); +} + +TEST(getpeername, worksAfterConnectingOnFork) { + char buf[16] = {0}; + uint32_t addrsize = sizeof(struct sockaddr_in); + struct sockaddr_in addr = { + .sin_family = AF_INET, + .sin_addr.s_addr = htonl(0x7f000001), + }; + ASSERT_SYS(0, 3, socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)); + ASSERT_SYS(0, 0, bind(3, (struct sockaddr *)&addr, sizeof(addr))); + ASSERT_SYS(0, 0, getsockname(3, (struct sockaddr *)&addr, &addrsize)); + ASSERT_SYS(0, 0, listen(3, SOMAXCONN)); + ASSERT_SYS(0, 4, socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)); + SPAWN(fork); + ASSERT_SYS(0, 0, close(3)); + ASSERT_SYS(0, 0, connect(4, (struct sockaddr *)&addr, sizeof(addr))); + struct sockaddr_storage out = {0}; + uint32_t out_size = sizeof(out); + ASSERT_SYS(0, 0, getpeername(4, (struct sockaddr *)&out, &out_size)); + EXPECT_GE(sizeof(struct sockaddr_in), out_size); + EXPECT_EQ(AF_INET, ((struct sockaddr_in *)&out)->sin_family); + EXPECT_EQ(htonl(0x7f000001), ((struct sockaddr_in *)&out)->sin_addr.s_addr); + ASSERT_SYS(0, 5, send(4, "hello", 5, 0)); + PARENT(); + ASSERT_SYS(0, 0, close(4)); + ASSERT_SYS(0, 4, accept(3, (struct sockaddr *)&addr, &addrsize)); + ASSERT_SYS(0, 5, read(4, buf, 16)); + ASSERT_STREQ("hello", buf); + ASSERT_SYS(0, 0, close(4)); + ASSERT_SYS(0, 0, close(3)); + WAIT(exit, 0); +} + +TEST(getpeername, worksAfterConnectingOnParent) { + char buf[16] = {0}; + uint32_t addrsize = sizeof(struct sockaddr_in); + struct sockaddr_in addr = { + .sin_family = AF_INET, + .sin_addr.s_addr = htonl(0x7f000001), + }; + ASSERT_SYS(0, 3, socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)); + ASSERT_SYS(0, 0, bind(3, (struct sockaddr *)&addr, sizeof(addr))); + ASSERT_SYS(0, 0, getsockname(3, (struct sockaddr *)&addr, &addrsize)); + ASSERT_SYS(0, 0, listen(3, SOMAXCONN)); + SPAWN(fork); + ASSERT_SYS(0, 4, accept(3, (struct sockaddr *)&addr, &addrsize)); + ASSERT_SYS(0, 5, read(4, buf, 16)); + ASSERT_STREQ("hello", buf); + PARENT(); + ASSERT_SYS(0, 0, close(3)); + ASSERT_SYS(0, 3, socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)); + ASSERT_SYS(0, 0, connect(3, (struct sockaddr *)&addr, sizeof(addr))); + struct sockaddr_storage out = {0}; + uint32_t out_size = sizeof(out); + ASSERT_SYS(0, 0, getpeername(3, (struct sockaddr *)&out, &out_size)); + EXPECT_GE(sizeof(struct sockaddr_in), out_size); + EXPECT_EQ(AF_INET, ((struct sockaddr_in *)&out)->sin_family); + EXPECT_EQ(htonl(0x7f000001), ((struct sockaddr_in *)&out)->sin_addr.s_addr); + ASSERT_SYS(0, 5, send(3, "hello", 5, 0)); + ASSERT_SYS(0, 0, close(3)); + WAIT(exit, 0); +} diff --git a/test/libc/sock/socket_test.c b/test/libc/sock/socket_test.c index 74983072d..b3a5e1d32 100644 --- a/test/libc/sock/socket_test.c +++ b/test/libc/sock/socket_test.c @@ -152,8 +152,6 @@ __attribute__((__constructor__)) static void StdioPro(int argc, char *argv[]) { } TEST(socket, canBeUsedAsExecutedStdio) { - if (IsWindows()) - return; // TODO(jart): What broke this? char buf[16] = {0}; const char *prog; uint32_t addrsize = sizeof(struct sockaddr_in); From 42891e82bba13d7a6b5e9db454e41754dd500496 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C5=8Dshin?= Date: Sat, 18 May 2024 15:20:27 -0700 Subject: [PATCH 049/123] Fix #959 (typo in cosmocc --version) --- tool/cosmocc/bin/cosmocc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tool/cosmocc/bin/cosmocc b/tool/cosmocc/bin/cosmocc index 148c960a7..361706511 100755 --- a/tool/cosmocc/bin/cosmocc +++ b/tool/cosmocc/bin/cosmocc @@ -15,7 +15,7 @@ $PROG (GCC) $GCC_VERSION Copyright (c) 2024 Justine Alexandra Roberts Tunney Cosmopolitan Libc and LLVM libcxx/compiler-rt are subject to non-GPL notice licenses, e.g. ISC, MIT, etc. Your compiled programs must embed -our copyright notices. This toolchain is configured to do so default. +our copyright notices. This toolchain is configured to do so by default. Cosmopolitan comes with absolutely NO WARRANTY of any kind. For more information, see the Cosmopolitan LICENSE files. Copyright (C) 2022 Free Software Foundation, Inc. From 47183551d6effe67224e96cc6fb2b680abd77865 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C5=8Dshin?= Date: Mon, 20 May 2024 00:33:17 -0700 Subject: [PATCH 050/123] Fix sleb64 (#1179) Fixes #920 --- libc/fmt/sleb64.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libc/fmt/sleb64.c b/libc/fmt/sleb64.c index fffae7e92..50dbe83c9 100644 --- a/libc/fmt/sleb64.c +++ b/libc/fmt/sleb64.c @@ -45,7 +45,7 @@ char *sleb64(char *p, int64_t x) { *p++ = c; return p; } else { - *p++ = c | 64; + *p++ = c | 128; } } } From 2ec20b6c4c000b0f8b9e4d2a54de3c7de75399f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C5=8Dshin?= Date: Mon, 20 May 2024 00:33:50 -0700 Subject: [PATCH 051/123] Fix #922 (Duplicated line) (#1178) --- net/turfwar/turfwar.c | 1 - 1 file changed, 1 deletion(-) diff --git a/net/turfwar/turfwar.c b/net/turfwar/turfwar.c index 3490820b7..9c43f4e92 100644 --- a/net/turfwar/turfwar.c +++ b/net/turfwar/turfwar.c @@ -1817,7 +1817,6 @@ StartOver: CHECK_DB(sqlite3_bind_int64(stmt, 1, v[i].ip)); CHECK_DB(sqlite3_bind_text(stmt, 2, v[i].name, -1, SQLITE_TRANSIENT)); CHECK_DB(sqlite3_bind_int64(stmt, 3, v[i].created)); - CHECK_DB(sqlite3_bind_int64(stmt, 3, v[i].created)); CHECK_DB((rc = DbStep(stmt)) == SQLITE_DONE ? SQLITE_OK : rc); CHECK_DB(sqlite3_reset(stmt)); ++processed; From 4292348707d4e1ceb5531d96f66c9a9f938bad61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C5=8Dshin?= Date: Mon, 20 May 2024 00:37:30 -0700 Subject: [PATCH 052/123] Import libbsd readpassphrase (#1182) Included from: https://gitlab.freedesktop.org/libbsd/libbsd At commit 04a24db27ad1572f766bad772cdd9c146e6d9cf0. --- libc/stdio/readpassphrase.c | 212 ++++++++++++++++++++++++++++++++++++ libc/stdio/readpassphrase.h | 17 +++ 2 files changed, 229 insertions(+) create mode 100644 libc/stdio/readpassphrase.c create mode 100644 libc/stdio/readpassphrase.h diff --git a/libc/stdio/readpassphrase.c b/libc/stdio/readpassphrase.c new file mode 100644 index 000000000..bff7a96f3 --- /dev/null +++ b/libc/stdio/readpassphrase.c @@ -0,0 +1,212 @@ +/*-*- mode:c;indent-tabs-mode:t;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│ +│ vi: set noet ft=c ts=2 sts=2 sw=2 fenc=utf-8 :vi │ +╞══════════════════════════════════════════════════════════════════════════════╡ +│ $OpenBSD: readpassphrase.c,v 1.26 2016/10/18 12:47:18 millert Exp $ │ +│ │ +│ Copyright (c) 2000-2002, 2007, 2010 │ +│ Todd C. Miller │ +│ │ +│ Permission to use, copy, modify, and distribute this software for any │ +│ purpose with or without fee is hereby granted, provided that the above │ +│ copyright notice and this permission notice appear in all copies. │ +│ │ +│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES │ +│ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF │ +│ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR │ +│ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES │ +│ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN │ +│ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF │ +│ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. │ +│ │ +│ Sponsored in part by the Defense Advanced Research Projects │ +│ Agency (DARPA) and Air Force Research Laboratory, Air Force │ +│ Materiel Command, USAF, under agreement number F39502-99-1-0512. │ +╚─────────────────────────────────────────────────────────────────────────────*/ +#include "libc/stdio/readpassphrase.h" +#include "libc/calls/calls.h" +#include "libc/calls/struct/sigaction.h" +#include "libc/calls/termios.h" +#include "libc/errno.h" +#include "libc/paths.h" +#include "libc/str/str.h" +#include "libc/sysv/consts/fileno.h" +#include "libc/sysv/consts/o.h" +#include "libc/sysv/consts/sig.h" +#include "libc/sysv/consts/termios.h" +#include "libc/unistd.h" + +__notice(readpassphrase_notice, "\ +libbsd readpassphrase (ISC)\n\ +Copyright (c) 2000-2002, 2007, 2010 Todd C. Miller "); +// clang-format off + +#ifndef TCSASOFT +#define TCSASOFT 0 +#endif + +#ifndef _NSIG +#if defined(NSIG) +#define _NSIG NSIG +#else +/* The SIGRTMAX define might be set to a function such as sysconf(). */ +#define _NSIG (SIGRTMAX + 1) +#endif +#endif + +static volatile sig_atomic_t signo[_NSIG]; + +static void handler(int); + +char * +readpassphrase(const char *prompt, char *buf, size_t bufsiz, int flags) +{ + ssize_t nr; + int input, output, save_errno, i, need_restart; + char ch, *p, *end; + struct termios term, oterm; + struct sigaction sa, savealrm, saveint, savehup, savequit, saveterm; + struct sigaction savetstp, savettin, savettou, savepipe; + + /* I suppose we could alloc on demand in this case (XXX). */ + if (bufsiz == 0) { + errno = EINVAL; + return(NULL); + } + +restart: + for (i = 0; i < _NSIG; i++) + signo[i] = 0; + nr = -1; + save_errno = 0; + need_restart = 0; + /* + * Read and write to /dev/tty if available. If not, read from + * stdin and write to stderr unless a tty is required. + */ + if ((flags & RPP_STDIN) || + (input = output = open(_PATH_TTY, O_RDWR)) == -1) { + if (flags & RPP_REQUIRE_TTY) { + errno = ENOTTY; + return(NULL); + } + input = STDIN_FILENO; + output = STDERR_FILENO; + } + + /* + * Turn off echo if possible. + * If we are using a tty but are not the foreground pgrp this will + * generate SIGTTOU, so do it *before* installing the signal handlers. + */ + if (input != STDIN_FILENO && tcgetattr(input, &oterm) == 0) { + memcpy(&term, &oterm, sizeof(term)); + if (!(flags & RPP_ECHO_ON)) + term.c_lflag &= ~(ECHO | ECHONL); +#ifdef VSTATUS + if (term.c_cc[VSTATUS] != _POSIX_VDISABLE) + term.c_cc[VSTATUS] = _POSIX_VDISABLE; +#endif + (void)tcsetattr(input, TCSAFLUSH|TCSASOFT, &term); + } else { + memset(&term, 0, sizeof(term)); + term.c_lflag |= ECHO; + memset(&oterm, 0, sizeof(oterm)); + oterm.c_lflag |= ECHO; + } + + /* + * Catch signals that would otherwise cause the user to end + * up with echo turned off in the shell. Don't worry about + * things like SIGXCPU and SIGVTALRM for now. + */ + sigemptyset(&sa.sa_mask); + sa.sa_flags = 0; /* don't restart system calls */ + sa.sa_handler = handler; + (void)sigaction(SIGALRM, &sa, &savealrm); + (void)sigaction(SIGHUP, &sa, &savehup); + (void)sigaction(SIGINT, &sa, &saveint); + (void)sigaction(SIGPIPE, &sa, &savepipe); + (void)sigaction(SIGQUIT, &sa, &savequit); + (void)sigaction(SIGTERM, &sa, &saveterm); + (void)sigaction(SIGTSTP, &sa, &savetstp); + (void)sigaction(SIGTTIN, &sa, &savettin); + (void)sigaction(SIGTTOU, &sa, &savettou); + + if (!(flags & RPP_STDIN)) + (void)write(output, prompt, strlen(prompt)); + end = buf + bufsiz - 1; + p = buf; + while ((nr = read(input, &ch, 1)) == 1 && ch != '\n' && ch != '\r') { + if (p < end) { + if ((flags & RPP_SEVENBIT)) + ch &= 0x7f; + if (isalpha((unsigned char)ch)) { + if ((flags & RPP_FORCELOWER)) + ch = (char)tolower((unsigned char)ch); + if ((flags & RPP_FORCEUPPER)) + ch = (char)toupper((unsigned char)ch); + } + *p++ = ch; + } + } + *p = '\0'; + save_errno = errno; + if (!(term.c_lflag & ECHO)) + (void)write(output, "\n", 1); + + /* Restore old terminal settings and signals. */ + if (memcmp(&term, &oterm, sizeof(term)) != 0) { + const int sigttou = signo[SIGTTOU]; + + /* Ignore SIGTTOU generated when we are not the fg pgrp. */ + while (tcsetattr(input, TCSAFLUSH|TCSASOFT, &oterm) == -1 && + errno == EINTR && !signo[SIGTTOU]) + continue; + signo[SIGTTOU] = sigttou; + } + (void)sigaction(SIGALRM, &savealrm, NULL); + (void)sigaction(SIGHUP, &savehup, NULL); + (void)sigaction(SIGINT, &saveint, NULL); + (void)sigaction(SIGQUIT, &savequit, NULL); + (void)sigaction(SIGPIPE, &savepipe, NULL); + (void)sigaction(SIGTERM, &saveterm, NULL); + (void)sigaction(SIGTSTP, &savetstp, NULL); + (void)sigaction(SIGTTIN, &savettin, NULL); + (void)sigaction(SIGTTOU, &savettou, NULL); + if (input != STDIN_FILENO) + (void)close(input); + + /* + * If we were interrupted by a signal, resend it to ourselves + * now that we have restored the signal handlers. + */ + for (i = 0; i < _NSIG; i++) { + if (signo[i]) { + kill(getpid(), i); + if (i == SIGTSTP || i == SIGTTIN || i == SIGTTOU) { + need_restart = 1; + } + } + } + if (need_restart) + goto restart; + + if (save_errno) + errno = save_errno; + return(nr == -1 ? NULL : buf); +} + +#if 0 +char * +getpass(const char *prompt) +{ + static char buf[_PASSWORD_LEN + 1]; + + return(readpassphrase(prompt, buf, sizeof(buf), RPP_ECHO_OFF)); +} +#endif + +static void handler(int s) +{ + signo[s] = 1; +} diff --git a/libc/stdio/readpassphrase.h b/libc/stdio/readpassphrase.h new file mode 100644 index 000000000..4e717a908 --- /dev/null +++ b/libc/stdio/readpassphrase.h @@ -0,0 +1,17 @@ +#ifndef COSMOPOLITAN_LIBC_STDIO_READPASSPHRASE_H_ +#define COSMOPOLITAN_LIBC_STDIO_READPASSPHRASE_H_ + +#define RPP_ECHO_OFF 0x00 +#define RPP_ECHO_ON 0x01 +#define RPP_REQUIRE_TTY 0x02 +#define RPP_FORCELOWER 0x04 +#define RPP_FORCEUPPER 0x08 +#define RPP_SEVENBIT 0x10 +#define RPP_STDIN 0x20 + +COSMOPOLITAN_C_START_ + +char *readpassphrase(const char *, char *, size_t, int) libcesque; + +COSMOPOLITAN_C_END_ +#endif /* COSMOPOLITAN_LIBC_STDIO_READPASSPHRASE_H_ */ From 65c9b28e99e835e408b1b1bbcfd68bc2888b9fa3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C5=8Dshin?= Date: Mon, 20 May 2024 00:46:27 -0700 Subject: [PATCH 053/123] Fix buffer overflow in os.tmpname (#1180) At least on macOS, `strlen(getenv("TMPDIR"))` is 50. We now allow a /tmp that takes up to 120 or so bytes to spell. Instead of overflowing, we do a bounds check and the function fails successfully on even longer /tmps. Fixes #1108 (os.tmpname crashes redbean) --- third_party/lua/README.cosmo | 2 ++ third_party/lua/loslib.c | 8 ++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/third_party/lua/README.cosmo b/third_party/lua/README.cosmo index 1d418f797..6f02aec3c 100644 --- a/third_party/lua/README.cosmo +++ b/third_party/lua/README.cosmo @@ -36,3 +36,5 @@ LOCAL MODIFICATIONS Added Python-like printf modulus operator for strings. Added Python-like printf multiply operator for strings. + + Fixed a buffer overflow in os.tmpname diff --git a/third_party/lua/loslib.c b/third_party/lua/loslib.c index 2693ac51b..2c8e120e3 100644 --- a/third_party/lua/loslib.c +++ b/third_party/lua/loslib.c @@ -133,12 +133,12 @@ __static_yoink("lua_notice"); #if defined(LUA_USE_POSIX) /* { */ -#define LUA_TMPNAMBUFSIZE 32 +#define LUA_TMPNAMBUFSIZE 128 #define lua_tmpnam(b,e) { \ - strcpy(b, __get_tmpdir()); \ - strcat(b, "lua_XXXXXX"); \ - e = mkstemp(b); \ + strlcpy(b, __get_tmpdir(), LUA_TMPNAMBUFSIZE); \ + e = strlcat(b, "lua_XXXXXX", LUA_TMPNAMBUFSIZE) >= LUA_TMPNAMBUFSIZE; \ + e = e ? -1 : mkstemp(b); \ if (e != -1) close(e); \ e = (e == -1); } From a52792c59f4b4e010e930fbe75d88d7d301bafb8 Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Mon, 20 May 2024 17:23:10 -0700 Subject: [PATCH 054/123] Add some missing build dependencies --- ape/BUILD.mk | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/ape/BUILD.mk b/ape/BUILD.mk index 02c2a7e1d..7a565cbb8 100644 --- a/ape/BUILD.mk +++ b/ape/BUILD.mk @@ -254,7 +254,24 @@ o/$(MODE)/ape: $(APE_CHECKS) \ endif # these assembly files are safe to build on aarch64 -o/$(MODE)/ape/ape.o: ape/ape.S +o/$(MODE)/ape/ape.o: \ + ape/ape.S \ + ape/ape.h \ + libc/dce.h \ + libc/elf/def.h \ + ape/relocations.h \ + libc/thread/tls.h \ + ape/ape.internal.h \ + ape/macros.internal.h \ + libc/macho.internal.h \ + libc/macros.internal.h \ + libc/sysv/consts/prot.h \ + libc/nt/pedef.internal.h \ + libc/runtime/pc.internal.h \ + libc/runtime/e820.internal.h \ + libc/runtime/mman.internal.h \ + libc/nexgen32e/uart.internal.h \ + libc/calls/metalfile.internal.h @$(COMPILE) -AOBJECTIFY.S $(OBJECTIFY.S) $(OUTPUT_OPTION) -c $< o/$(MODE)/ape/ape.lds: \ From cf70a4475651d9864f6a16b88ebc6930659d0898 Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Mon, 20 May 2024 22:11:42 -0700 Subject: [PATCH 055/123] Support shebang on Windows Fixes #1010 --- libc/calls/mkntcmdline.c | 39 ++--- libc/calls/ntspawn.c | 253 +++++++++++++++++++---------- libc/proc/execve-nt.greg.c | 6 +- libc/proc/fork-nt.c | 7 +- libc/proc/ntspawn.h | 23 ++- libc/proc/posix_spawn.c | 7 +- libc/testlib/ezbenchreport.c | 3 +- test/libc/calls/mkntcmdline_test.c | 34 ++-- 8 files changed, 240 insertions(+), 132 deletions(-) diff --git a/libc/calls/mkntcmdline.c b/libc/calls/mkntcmdline.c index 1ece520f4..c1a4dfc5b 100644 --- a/libc/calls/mkntcmdline.c +++ b/libc/calls/mkntcmdline.c @@ -23,6 +23,7 @@ #include "libc/mem/mem.h" #include "libc/nt/files.h" #include "libc/proc/ntspawn.h" +#include "libc/stdio/sysparam.h" #include "libc/str/str.h" #include "libc/str/thompike.h" #include "libc/str/utf16.h" @@ -31,16 +32,14 @@ #define APPEND(c) \ do { \ - if (k == 32766) { \ - return e2big(); \ - } \ - cmdline[k++] = c; \ + if (k < size) \ + cmdline[k] = c; \ + ++k; \ } while (0) -static bool NeedsQuotes(const char *s) { - if (!*s) { +static textwindows bool NeedsQuotes(const char *s) { + if (!*s) return true; - } do { switch (*s) { case '"': @@ -60,7 +59,7 @@ static inline int IsAlpha(int c) { return ('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z'); } -static bool LooksLikeCosmoDrivePath(const char *s) { +static textwindows bool LooksLikeCosmoDrivePath(const char *s) { return s[0] == '/' && // IsAlpha(s[1]) && // s[2] == '/'; @@ -74,12 +73,13 @@ static bool LooksLikeCosmoDrivePath(const char *s) { // // @param cmdline is output buffer // @param argv is an a NULL-terminated array of UTF-8 strings -// @return 0 on success, or -1 w/ errno -// @raise E2BIG if everything is too huge +// @param size is number of characters in cmdline buffer +// @return length on success, which is >=size on truncation // @see "Everyone quotes command line arguments the wrong way" MSDN // @see libc/runtime/getdosargv.c // @asyncsignalsafe -textwindows int mkntcmdline(char16_t cmdline[32767], char *const argv[]) { +textwindows size_t mkntcmdline(char16_t *cmdline, char *const argv[], + size_t size) { char *arg; int slashes, n; bool needsquote; @@ -95,9 +95,8 @@ textwindows int mkntcmdline(char16_t cmdline[32767], char *const argv[]) { } else { arg = argv[i]; } - if ((needsquote = NeedsQuotes(arg))) { + if ((needsquote = NeedsQuotes(arg))) APPEND(u'"'); - } for (slashes = j = 0;;) { wint_t x = arg[j++] & 255; if (x >= 0300) { @@ -122,9 +121,8 @@ textwindows int mkntcmdline(char16_t cmdline[32767], char *const argv[]) { APPEND(u'"'); APPEND(u'"'); } else { - for (s = 0; s < slashes; ++s) { + for (s = 0; s < slashes; ++s) APPEND(u'\\'); - } slashes = 0; uint32_t w = EncodeUtf16(x); do @@ -132,13 +130,12 @@ textwindows int mkntcmdline(char16_t cmdline[32767], char *const argv[]) { while ((w >>= 16)); } } - for (s = 0; s < (slashes << needsquote); ++s) { + for (s = 0; s < (slashes << needsquote); ++s) APPEND(u'\\'); - } - if (needsquote) { + if (needsquote) APPEND(u'"'); - } } - cmdline[k] = 0; - return 0; + if (size) + cmdline[MIN(k, size - 1)] = 0; + return k; } diff --git a/libc/calls/ntspawn.c b/libc/calls/ntspawn.c index 305950b25..2f2367e88 100644 --- a/libc/calls/ntspawn.c +++ b/libc/calls/ntspawn.c @@ -20,9 +20,15 @@ #include "libc/calls/struct/sigset.internal.h" #include "libc/calls/syscall_support-nt.internal.h" #include "libc/intrin/strace.internal.h" +#include "libc/nt/createfile.h" +#include "libc/nt/enum/accessmask.h" +#include "libc/nt/enum/creationdisposition.h" +#include "libc/nt/enum/fileflagandattributes.h" +#include "libc/nt/enum/filesharemode.h" #include "libc/nt/enum/processaccess.h" #include "libc/nt/enum/processcreationflags.h" #include "libc/nt/errors.h" +#include "libc/nt/events.h" #include "libc/nt/files.h" #include "libc/nt/memory.h" #include "libc/nt/process.h" @@ -44,14 +50,167 @@ struct SpawnBlock { char envbuf[32767]; }; -static void *ntspawn_malloc(size_t size) { +static textwindows void *ntspawn_malloc(size_t size) { return HeapAlloc(GetProcessHeap(), 0, size); } -static void ntspawn_free(void *ptr) { +static textwindows void ntspawn_free(void *ptr) { HeapFree(GetProcessHeap(), 0, ptr); } +static textwindows ssize_t ntspawn_read(intptr_t fh, char *buf, size_t len) { + bool ok; + uint32_t got; + struct NtOverlapped overlap = {.hEvent = CreateEvent(0, 0, 0, 0)}; + ok = (ReadFile(fh, buf, len, 0, &overlap) || + GetLastError() == kNtErrorIoPending) && + GetOverlappedResult(fh, &overlap, &got, true); + CloseHandle(overlap.hEvent); + return ok ? got : -1; +} + +static textwindows int ntspawn2(struct NtSpawnArgs *a, struct SpawnBlock *sb) { + + // make executable path + if (__mkntpathath(a->dirhand, a->prog, 0, sb->path) == -1) + return -1; + + // open executable + char *p = sb->envbuf; + char *pe = p + sizeof(sb->envbuf); + intptr_t fh = CreateFile( + sb->path, kNtFileGenericRead, + kNtFileShareRead | kNtFileShareWrite | kNtFileShareDelete, 0, + kNtOpenExisting, kNtFileAttributeNormal | kNtFileFlagBackupSemantics, 0); + if (fh == -1) + return -1; + ssize_t got = ntspawn_read(fh, p, pe - p); + CloseHandle(fh); + if (got < 3) + return enoexec(); + pe = p + got; + + // handle shebang + size_t i = 0; // represents space of sb->cmdline consumed + if (p[0] == 'M' && p[1] == 'Z') { + // it's a windows executable + } else if (p[0] == '#' && p[1] == '!') { + p += 2; + // make sure we got a complete first line + pe = memchr(p, '\n', pe - p); + if (!pe) + return enoexec(); + *pe = 0; + int argc = 0; + char *argv[4]; + // it's legal to say "#! /bin/sh" + while (p < pe && (*p == ' ' || *p == '\t')) + ++p; + if (p == pe) + return enoexec(); + argv[argc++] = p; + // find the optional argument + while (p < pe && !(*p == ' ' || *p == '\t')) + ++p; + if (p < pe) { + *p++ = 0; + while (p < pe && (*p == ' ' || *p == '\t')) + ++p; + if (p < pe) { + argv[argc++] = p; + } + } + // now add the prog + argv[argc++] = (char *)a->prog; + argv[argc] = 0; + // ignore argv[0] + if (*a->argv) + ++a->argv; + // prepend arguments + if ((i += mkntcmdline(sb->cmdline + i, argv, 32767 - i)) >= 32767 - 1) + return e2big(); + sb->cmdline[i++] = ' '; + sb->cmdline[i] = 0; + // setup the true executable path + if (__mkntpathath(a->dirhand, argv[0], 0, sb->path) == -1) + return -1; + } else { + // it's something else + return enoexec(); + } + + // setup arguments and environment + if ((i += mkntcmdline(sb->cmdline + i, a->argv, 32767 - i)) >= 32767) + return e2big(); + if (mkntenvblock(sb->envblock, a->envp, a->extravars, sb->envbuf) == -1) + return -1; + + // create attribute list + // this code won't call malloc in practice + bool32 ok; + void *freeme = 0; + _Alignas(16) char memory[128]; + size_t size = sizeof(memory); + struct NtProcThreadAttributeList *alist = (void *)memory; + uint32_t items = !!a->opt_hParentProcess + !!a->opt_lpExplicitHandleList; + ok = InitializeProcThreadAttributeList(alist, items, 0, &size); + if (!ok && GetLastError() == kNtErrorInsufficientBuffer) { + ok = !!(alist = freeme = ntspawn_malloc(size)); + if (ok) { + ok = InitializeProcThreadAttributeList(alist, items, 0, &size); + } + } + if (ok && a->opt_hParentProcess) { + ok = UpdateProcThreadAttribute( + alist, 0, kNtProcThreadAttributeParentProcess, &a->opt_hParentProcess, + sizeof(a->opt_hParentProcess), 0, 0); + } + if (ok && a->opt_lpExplicitHandleList) { + ok = UpdateProcThreadAttribute( + alist, 0, kNtProcThreadAttributeHandleList, a->opt_lpExplicitHandleList, + a->dwExplicitHandleCount * sizeof(*a->opt_lpExplicitHandleList), 0, 0); + } + + // create the process + int rc; + if (ok) { + struct NtStartupInfoEx info = { + .StartupInfo = *a->lpStartupInfo, + .StartupInfo.cb = sizeof(info), + .lpAttributeList = alist, + }; + if (ok) { + if (CreateProcess(sb->path, sb->cmdline, 0, 0, true, + a->dwCreationFlags | kNtCreateUnicodeEnvironment | + kNtExtendedStartupinfoPresent | + kNtInheritParentAffinity | + GetPriorityClass(GetCurrentProcess()), + sb->envblock, a->opt_lpCurrentDirectory, + &info.StartupInfo, a->opt_out_lpProcessInformation)) { + rc = 0; + } else { + rc = -1; + STRACE("CreateProcess() failed w/ %d", GetLastError()); + if (GetLastError() == kNtErrorSharingViolation) { + etxtbsy(); + } else if (GetLastError() == kNtErrorInvalidName) { + enoent(); + } + } + rc = __fix_enotdir(rc, sb->path); + } + } else { + rc = __winerr(); + } + + // clean up resources + if (alist) + DeleteProcThreadAttributeList(alist); + if (freeme) + ntspawn_free(freeme); + return rc; +} + /** * Spawns process on Windows NT. * @@ -72,93 +231,15 @@ static void ntspawn_free(void *ptr) { * @see spawnve() which abstracts this function * @asyncsignalsafe */ -textwindows int ntspawn( - int64_t dirhand, const char *prog, char *const argv[], char *const envp[], - char *const extravars[], uint32_t dwCreationFlags, - const char16_t *opt_lpCurrentDirectory, int64_t opt_hParentProcess, - int64_t *opt_lpExplicitHandleList, uint32_t dwExplicitHandleCount, - const struct NtStartupInfo *lpStartupInfo, - struct NtProcessInformation *opt_out_lpProcessInformation) { - int rc = -1; +textwindows int ntspawn(struct NtSpawnArgs *args) { + int rc; struct SpawnBlock *sb; BLOCK_SIGNALS; - if ((sb = ntspawn_malloc(sizeof(*sb))) && - __mkntpathath(dirhand, prog, 0, sb->path) != -1) { - if (!mkntcmdline(sb->cmdline, argv) && - !mkntenvblock(sb->envblock, envp, extravars, sb->envbuf)) { - bool32 ok; - int64_t dp = GetCurrentProcess(); - - // create attribute list - // this code won't call malloc in practice - void *freeme = 0; - _Alignas(16) char memory[128]; - size_t size = sizeof(memory); - struct NtProcThreadAttributeList *alist = (void *)memory; - uint32_t items = !!opt_hParentProcess + !!opt_lpExplicitHandleList; - ok = InitializeProcThreadAttributeList(alist, items, 0, &size); - if (!ok && GetLastError() == kNtErrorInsufficientBuffer) { - ok = !!(alist = freeme = ntspawn_malloc(size)); - if (ok) { - ok = InitializeProcThreadAttributeList(alist, items, 0, &size); - } - } - if (ok && opt_hParentProcess) { - ok = UpdateProcThreadAttribute( - alist, 0, kNtProcThreadAttributeParentProcess, &opt_hParentProcess, - sizeof(opt_hParentProcess), 0, 0); - } - if (ok && opt_lpExplicitHandleList) { - ok = UpdateProcThreadAttribute( - alist, 0, kNtProcThreadAttributeHandleList, - opt_lpExplicitHandleList, - dwExplicitHandleCount * sizeof(*opt_lpExplicitHandleList), 0, 0); - } - - // create the process - if (ok) { - struct NtStartupInfoEx info; - bzero(&info, sizeof(info)); - info.StartupInfo = *lpStartupInfo; - info.StartupInfo.cb = sizeof(info); - info.lpAttributeList = alist; - if (ok) { - if (CreateProcess(sb->path, sb->cmdline, 0, 0, true, - dwCreationFlags | kNtCreateUnicodeEnvironment | - kNtExtendedStartupinfoPresent | - kNtInheritParentAffinity | - GetPriorityClass(GetCurrentProcess()), - sb->envblock, opt_lpCurrentDirectory, - &info.StartupInfo, opt_out_lpProcessInformation)) { - rc = 0; - } else { - STRACE("CreateProcess() failed w/ %d", GetLastError()); - if (GetLastError() == kNtErrorSharingViolation) { - etxtbsy(); - } else if (GetLastError() == kNtErrorInvalidName) { - enoent(); - } - } - rc = __fix_enotdir(rc, sb->path); - } - } else { - rc = __winerr(); - } - - // clean up resources - if (alist) { - DeleteProcThreadAttributeList(alist); - } - if (freeme) { - ntspawn_free(freeme); - } - if (dp && dp != GetCurrentProcess()) { - CloseHandle(dp); - } - } + if ((sb = ntspawn_malloc(sizeof(*sb)))) { + rc = ntspawn2(args, sb); + } else { + rc = -1; } - if (sb) - ntspawn_free(sb); ALLOW_SIGNALS; return rc; } diff --git a/libc/proc/execve-nt.greg.c b/libc/proc/execve-nt.greg.c index 133e4f8d0..03d8590c1 100644 --- a/libc/proc/execve-nt.greg.c +++ b/libc/proc/execve-nt.greg.c @@ -91,9 +91,9 @@ textwindows int sys_execve_nt(const char *program, char *const argv[], // launch the process struct NtProcessInformation pi; - int rc = ntspawn(AT_FDCWD, program, argv, envp, - (char *[]){fdspec, maskvar, 0}, 0, 0, hParentProcess, - lpExplicitHandles, dwExplicitHandleCount, &si, &pi); + int rc = ntspawn(&(struct NtSpawnArgs){ + AT_FDCWD, program, argv, envp, (char *[]){fdspec, maskvar, 0}, 0, 0, + hParentProcess, lpExplicitHandles, dwExplicitHandleCount, &si, &pi}); __undescribe_fds(hParentProcess, lpExplicitHandles, dwExplicitHandleCount); if (rc == -1) { free(fdspec); diff --git a/libc/proc/fork-nt.c b/libc/proc/fork-nt.c index 4ef781c2c..66fd16a50 100644 --- a/libc/proc/fork-nt.c +++ b/libc/proc/fork-nt.c @@ -344,9 +344,10 @@ textwindows int sys_fork_nt(uint32_t dwCreationFlags) { } #endif NTTRACE("STARTING SPAWN"); - int spawnrc = ntspawn(AT_FDCWD, GetProgramExecutableName(), args, environ, - (char *[]){forkvar, 0}, dwCreationFlags, 0, 0, 0, 0, - &startinfo, &procinfo); + int spawnrc = ntspawn(&(struct NtSpawnArgs){ + AT_FDCWD, GetProgramExecutableName(), args, environ, + (char *[]){forkvar, 0}, dwCreationFlags, 0, 0, 0, 0, &startinfo, + &procinfo}); if (spawnrc != -1) { CloseHandle(procinfo.hThread); ok = WriteAll(writer, jb, sizeof(jb)) && diff --git a/libc/proc/ntspawn.h b/libc/proc/ntspawn.h index 5a4de12b5..463c883ae 100644 --- a/libc/proc/ntspawn.h +++ b/libc/proc/ntspawn.h @@ -4,12 +4,25 @@ #include "libc/nt/struct/startupinfo.h" COSMOPOLITAN_C_START_ -void mungentpath(char *); -int mkntcmdline(char16_t[32767], char *const[]); +struct NtSpawnArgs { + int64_t dirhand; + const char *prog; + char *const *argv; + char *const *envp; + char *const *extravars; + uint32_t dwCreationFlags; + const char16_t *opt_lpCurrentDirectory; + int64_t opt_hParentProcess; + int64_t *opt_lpExplicitHandleList; + uint32_t dwExplicitHandleCount; + const struct NtStartupInfo *lpStartupInfo; + struct NtProcessInformation *opt_out_lpProcessInformation; +}; + int mkntenvblock(char16_t[32767], char *const[], char *const[], char[32767]); -int ntspawn(int64_t, const char *, char *const[], char *const[], char *const[], - uint32_t, const char16_t *, int64_t, int64_t *, uint32_t, - const struct NtStartupInfo *, struct NtProcessInformation *); +int ntspawn(struct NtSpawnArgs *); +size_t mkntcmdline(char16_t *, char *const[], size_t); +void mungentpath(char *); COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_NTSPAWN_H_ */ diff --git a/libc/proc/posix_spawn.c b/libc/proc/posix_spawn.c index a99ef8dc0..6cf8439af 100644 --- a/libc/proc/posix_spawn.c +++ b/libc/proc/posix_spawn.c @@ -382,9 +382,10 @@ static textwindows errno_t posix_spawn_nt_impl( envp = environ; if ((fdspec = __describe_fds(fds.p, fds.n, &startinfo, hCreatorProcess, &lpExplicitHandles, &dwExplicitHandleCount))) { - rc = ntspawn(dirhand, path, argv, envp, (char *[]){fdspec, maskvar, 0}, - dwCreationFlags, lpCurrentDirectory, 0, lpExplicitHandles, - dwExplicitHandleCount, &startinfo, &procinfo); + rc = ntspawn(&(struct NtSpawnArgs){ + dirhand, path, argv, envp, (char *[]){fdspec, maskvar, 0}, + dwCreationFlags, lpCurrentDirectory, 0, lpExplicitHandles, + dwExplicitHandleCount, &startinfo, &procinfo}); } if (rc == -1) { err = errno; diff --git a/libc/testlib/ezbenchreport.c b/libc/testlib/ezbenchreport.c index f73e04950..04ad5facd 100644 --- a/libc/testlib/ezbenchreport.c +++ b/libc/testlib/ezbenchreport.c @@ -17,6 +17,7 @@ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/intrin/kprintf.h" +#include "libc/intrin/safemacros.internal.h" #include "libc/math.h" #include "libc/runtime/runtime.h" @@ -32,7 +33,7 @@ void __testlib_ezbenchreport_n(const char *form, char z, size_t n, double c) { char msg[128]; __warn_if_powersave(); ksnprintf(msg, sizeof(msg), "%s %c=%d", form, z, n); - cn = lrint(c / 3); + cn = max(lrint(c / 3), 1); if (!n) { kprintf("\n"); kprintf(" * %-28s", msg); diff --git a/test/libc/calls/mkntcmdline_test.c b/test/libc/calls/mkntcmdline_test.c index 3a645ed3a..cb85156e9 100644 --- a/test/libc/calls/mkntcmdline_test.c +++ b/test/libc/calls/mkntcmdline_test.c @@ -27,39 +27,53 @@ char16_t cmdline[32767]; +TEST(mkntcmdline, empty) { + char16_t buf2[2]; + EXPECT_EQ(0, mkntcmdline(buf2, (char *[]){0}, 2)); + EXPECT_STREQ(u"", buf2); +} + +TEST(mkntcmdline, truncation) { + char *argv[] = {"foo", NULL}; + EXPECT_EQ(3, mkntcmdline(0, argv, 0)); + char16_t buf2[2]; + EXPECT_EQ(3, mkntcmdline(buf2, argv, 2)); + EXPECT_STREQ(u"f", buf2); +} + TEST(mkntcmdline, emptyArgvList_cantBeEmptyOnWindows) { char *argv[] = {"foo", NULL}; - EXPECT_NE(-1, mkntcmdline(cmdline, argv)); + EXPECT_NE(-1, mkntcmdline(cmdline, argv, 32767)); EXPECT_STREQ(u"foo", cmdline); } TEST(mkntcmdline, emptyArgvListWithProg_isEmpty) { char *argv[] = {NULL}; - EXPECT_NE(-1, mkntcmdline(cmdline, argv)); + EXPECT_NE(-1, mkntcmdline(cmdline, argv, 32767)); EXPECT_STREQ(u"", cmdline); } TEST(mkntcmdline, emptyArg_getsQuoted) { char *argv[] = {"", NULL}; - EXPECT_NE(-1, mkntcmdline(cmdline, argv)); + EXPECT_NE(-1, mkntcmdline(cmdline, argv, 32767)); EXPECT_STREQ(u"\"\"", cmdline); } TEST(mkntcmdline, ignoranceIsBliss) { char *argv[] = {"echo", "hello", "world", NULL}; - EXPECT_NE(-1, mkntcmdline(cmdline, argv)); + EXPECT_NE(-1, mkntcmdline(cmdline, argv, 32767)); EXPECT_STREQ(u"echo hello world", cmdline); } TEST(mkntcmdline, spaceInArgument_getQuotesWrappedAround) { char *argv[] = {"echo", "hello there", "world", NULL}; - EXPECT_NE(-1, mkntcmdline(cmdline, argv)); + EXPECT_NE(-1, mkntcmdline(cmdline, argv, 32767)); EXPECT_STREQ(u"echo \"hello there\" world", cmdline); } TEST(mkntcmdline, justSlash) { char *argv[] = {"\\", NULL}; - EXPECT_NE(-1, mkntcmdline(cmdline, argv)); + EXPECT_NE(-1, mkntcmdline(cmdline, argv, 32767)); EXPECT_STREQ(u"\\", cmdline); } @@ -69,7 +83,7 @@ TEST(mkntcmdline, testUnicode) { gc(strdup("要依法治国是赞美那些谁是公义的和惩罚恶人。 - 韩非")), NULL, }; - EXPECT_NE(-1, mkntcmdline(cmdline, argv1)); + EXPECT_NE(-1, mkntcmdline(cmdline, argv1, 32767)); EXPECT_STREQ(u"(╯°□°)╯ \"要依法治国是赞美那些谁是公义的和惩罚恶人。 - 韩非\"", cmdline); } @@ -80,13 +94,13 @@ TEST(mkntcmdline, fixit) { "--version", NULL, }; - EXPECT_NE(-1, mkntcmdline(cmdline, argv1)); + EXPECT_NE(-1, mkntcmdline(cmdline, argv1, 32767)); EXPECT_STREQ(u"\"C:\\Program Files\\doom\\doom.exe\" --version", cmdline); } TEST(mkntcmdline, testWut) { char *argv[] = {"C:\\Users\\jart\\𝑟𝑒𝑑𝑏𝑒𝑎𝑛", "--strace", NULL}; - EXPECT_NE(-1, mkntcmdline(cmdline, argv)); + EXPECT_NE(-1, mkntcmdline(cmdline, argv, 32767)); EXPECT_STREQ(u"C:\\Users\\jart\\𝑟𝑒𝑑𝑏𝑒𝑎𝑛 --strace", cmdline); } @@ -95,5 +109,5 @@ BENCH(mkntcmdline, lotsOfArgs) { for (int i = 0; i < 999; ++i) { argv[i] = "hello there hello there"; } - EZBENCH2("mkntcmdline", donothing, unassert(!mkntcmdline(cmdline, argv))); + EZBENCH2("mkntcmdline", donothing, mkntcmdline(cmdline, argv, 32767)); } From 0b59f01b435ce811511884486043fc50e9592130 Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Tue, 21 May 2024 15:35:06 -0700 Subject: [PATCH 056/123] Put confstr() in unistd.h Fixes #1184 --- libc/stdio/confstr.c | 1 - libc/stdio/stdio.h | 1 - libc/unistd.h | 2 ++ 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libc/stdio/confstr.c b/libc/stdio/confstr.c index 735b9589d..746268475 100644 --- a/libc/stdio/confstr.c +++ b/libc/stdio/confstr.c @@ -17,7 +17,6 @@ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/paths.h" -#include "libc/stdio/stdio.h" #include "libc/str/str.h" #include "libc/sysv/errfuns.h" #include "libc/unistd.h" diff --git a/libc/stdio/stdio.h b/libc/stdio/stdio.h index 4d385e0ba..d9f560b2b 100644 --- a/libc/stdio/stdio.h +++ b/libc/stdio/stdio.h @@ -79,7 +79,6 @@ int setvbuf(FILE *, char *, int, size_t) libcesque; int pclose(FILE *) libcesque; char *ctermid(char *) libcesque; void perror(const char *) libcesque relegated; -size_t confstr(int, char *, size_t) libcesque; typedef uint64_t fpos_t; char *gets(char *) libcesque paramsnonnull(); diff --git a/libc/unistd.h b/libc/unistd.h index 04bf9c95a..2eb5b346a 100644 --- a/libc/unistd.h +++ b/libc/unistd.h @@ -4,6 +4,8 @@ COSMOPOLITAN_C_START_ #define _CS_PATH 0 +size_t confstr(int, char *, size_t) libcesque; + #if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || \ defined(_COSMO_SOURCE) void encrypt(char *, int) libcesque; From 0768807935f5abee3120d4641e4480d9d131e3b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C5=8Dshin?= Date: Fri, 24 May 2024 10:56:33 -0700 Subject: [PATCH 057/123] Rename python -> python3 (closes #1144) (#1187) When we removed the com suffix from ape binaries, we broke the build for ape's python for any case-insensitive file system, i.e. Windows and XNU, because there is a third_party/python/Python that gets mirrored in the o directory with the python object files and clashes with the binary name. This patch hacks around this by renaming the binary to "python3" so that it no longer clashes with that directory. --- third_party/python/BUILD.mk | 32 +++++++++++----------- third_party/python/{python.c => python3.c} | 0 2 files changed, 16 insertions(+), 16 deletions(-) rename third_party/python/{python.c => python3.c} (100%) diff --git a/third_party/python/BUILD.mk b/third_party/python/BUILD.mk index def4be1f6..1fe2638b9 100644 --- a/third_party/python/BUILD.mk +++ b/third_party/python/BUILD.mk @@ -7,7 +7,7 @@ THIRD_PARTY_PYTHON_ARTIFACTS = \ THIRD_PARTY_PYTHON_STAGE1_A \ THIRD_PARTY_PYTHON_STAGE2_A \ THIRD_PARTY_PYTHON_PYTEST_A \ - THIRD_PARTY_PYTHON_PYTHON \ + THIRD_PARTY_PYTHON_PYTHON3 \ THIRD_PARTY_PYTHON_FREEZE THIRD_PARTY_PYTHON_BINS = \ @@ -17,7 +17,7 @@ THIRD_PARTY_PYTHON_BINS = \ THIRD_PARTY_PYTHON_COMS = \ o/$(MODE)/third_party/python/Parser/asdl_c \ o/$(MODE)/third_party/python/pystone \ - o/$(MODE)/third_party/python/python \ + o/$(MODE)/third_party/python/python3 \ o/$(MODE)/third_party/python/freeze \ o/$(MODE)/third_party/python/pycomp \ o/$(MODE)/third_party/python/pyobj \ @@ -29,7 +29,7 @@ THIRD_PARTY_PYTHON_CHECKS = \ $(THIRD_PARTY_PYTHON_STAGE2_A).pkg \ $(THIRD_PARTY_PYTHON_PYTEST_A).pkg \ $(THIRD_PARTY_PYTHON_HDRS:%=o/$(MODE)/%.ok) \ - o/$(MODE)/third_party/python/python.pkg \ + o/$(MODE)/third_party/python/python3.pkg \ o/$(MODE)/third_party/python/freeze.pkg # TODO: Deal with aarch64 under qemu not making execve() easy. @@ -3980,12 +3980,12 @@ THIRD_PARTY_PYTHON_SRCS = \ ################################################################################ # PYTHON -THIRD_PARTY_PYTHON_PYTHON_SRCS = third_party/python/python.c -THIRD_PARTY_PYTHON_PYTHON_OBJS = o/$(MODE)/third_party/python/python.o -THIRD_PARTY_PYTHON_PYTHON_COMS = o/$(MODE)/third_party/python/python -THIRD_PARTY_PYTHON_PYTHON_BINS = $(THIRD_PARTY_PYTHON_PYTHON_COMS) $(THIRD_PARTY_PYTHON_PYTHON_COMS:%=%.dbg) -THIRD_PARTY_PYTHON_PYTHON_DEPS = $(call uniq,$(foreach x,$(THIRD_PARTY_PYTHON_PYTHON_DIRECTDEPS),$($(x)))) -THIRD_PARTY_PYTHON_PYTHON_DIRECTDEPS = \ +THIRD_PARTY_PYTHON_PYTHON3_SRCS = third_party/python/python3.c +THIRD_PARTY_PYTHON_PYTHON3_OBJS = o/$(MODE)/third_party/python/python3.o +THIRD_PARTY_PYTHON_PYTHON3_COMS = o/$(MODE)/third_party/python/python3 +THIRD_PARTY_PYTHON_PYTHON3_BINS = $(THIRD_PARTY_PYTHON_PYTHON3_COMS) $(THIRD_PARTY_PYTHON_PYTHON3_COMS:%=%.dbg) +THIRD_PARTY_PYTHON_PYTHON3_DEPS = $(call uniq,$(foreach x,$(THIRD_PARTY_PYTHON_PYTHON3_DIRECTDEPS),$($(x)))) +THIRD_PARTY_PYTHON_PYTHON3_DIRECTDEPS = \ LIBC_CALLS \ LIBC_FMT \ LIBC_INTRIN \ @@ -4005,14 +4005,14 @@ THIRD_PARTY_PYTHON_PYTHON_DIRECTDEPS = \ THIRD_PARTY_XED \ TOOL_ARGS -o/$(MODE)/third_party/python/python.pkg: \ - $(THIRD_PARTY_PYTHON_PYTHON_OBJS) \ - $(foreach x,$(THIRD_PARTY_PYTHON_PYTHON_DIRECTDEPS),$($(x)_A).pkg) +o/$(MODE)/third_party/python/python3.pkg: \ + $(THIRD_PARTY_PYTHON_PYTHON3_OBJS) \ + $(foreach x,$(THIRD_PARTY_PYTHON_PYTHON3_DIRECTDEPS),$($(x)_A).pkg) -o/$(MODE)/third_party/python/python.dbg: \ - o/$(MODE)/third_party/python/python.pkg \ - $(THIRD_PARTY_PYTHON_PYTHON_DEPS) \ - $(THIRD_PARTY_PYTHON_PYTHON_OBJS) \ +o/$(MODE)/third_party/python/python3.dbg: \ + o/$(MODE)/third_party/python/python3.pkg \ + $(THIRD_PARTY_PYTHON_PYTHON3_DEPS) \ + $(THIRD_PARTY_PYTHON_PYTHON3_OBJS) \ $(CRT) \ $(APE_NO_MODIFY_SELF) @$(APELINK) diff --git a/third_party/python/python.c b/third_party/python/python3.c similarity index 100% rename from third_party/python/python.c rename to third_party/python/python3.c From 787b04f752504a0a906deef0f94189b726c78980 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C5=8Dshin?= Date: Fri, 24 May 2024 10:59:23 -0700 Subject: [PATCH 058/123] Run all BLAKE2B256 test vectors (#1185) --- libc/testlib/BUILD.mk | 5 +++ libc/testlib/blake2b256_tests.S | 33 +++++++++++++++++++ .../str => libc/testlib}/blake2b256_tests.txt | 0 test/libc/str/blake2_test.c | 26 ++++++++++++++- 4 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 libc/testlib/blake2b256_tests.S rename {test/libc/str => libc/testlib}/blake2b256_tests.txt (100%) diff --git a/libc/testlib/BUILD.mk b/libc/testlib/BUILD.mk index 6617d0fbd..236d8ab96 100644 --- a/libc/testlib/BUILD.mk +++ b/libc/testlib/BUILD.mk @@ -13,6 +13,7 @@ LIBC_TESTLIB_A = o/$(MODE)/libc/testlib/testlib.a LIBC_TESTLIB_A_CHECKS = $(LIBC_TESTLIB_A).pkg LIBC_TESTLIB_A_ASSETS = \ + libc/testlib/blake2b256_tests.txt \ libc/testlib/blocktronics.txt \ libc/testlib/viewables.txt \ libc/testlib/hyperion.txt \ @@ -32,6 +33,7 @@ LIBC_TESTLIB_A_HDRS = \ LIBC_TESTLIB_A_SRCS_S = \ libc/testlib/bench.S \ + libc/testlib/blake2b256_tests.S \ libc/testlib/blocktronics.S \ libc/testlib/fixture.S \ libc/testlib/hyperion.S \ @@ -124,6 +126,7 @@ $(LIBC_TESTLIB_A).pkg: \ $(LIBC_TESTLIB_A_OBJS) \ $(foreach x,$(LIBC_TESTLIB_A_DIRECTDEPS),$($(x)_A).pkg) +o/$(MODE)/libc/testlib/blake2b256_tests.o: libc/testlib/blake2b256_tests.txt o/$(MODE)/libc/testlib/blocktronics.o: libc/testlib/blocktronics.txt o/$(MODE)/libc/testlib/viewables.o: libc/testlib/viewables.txt o/$(MODE)/libc/testlib/hyperion.o: libc/testlib/hyperion.txt @@ -132,6 +135,8 @@ o/$(MODE)/libc/testlib/moby.o: libc/testlib/moby.txt # these assembly files are safe to build on aarch64 o/$(MODE)/libc/testlib/bench.o: libc/testlib/bench.S @$(COMPILE) -AOBJECTIFY.S $(OBJECTIFY.S) $(OUTPUT_OPTION) -c $< +o/$(MODE)/libc/testlib/blake2b256_tests.o: libc/testlib/blake2b256_tests.S + @$(COMPILE) -AOBJECTIFY.S $(OBJECTIFY.S) $(OUTPUT_OPTION) -c $< o/$(MODE)/libc/testlib/blocktronics.o: libc/testlib/blocktronics.S @$(COMPILE) -AOBJECTIFY.S $(OBJECTIFY.S) $(OUTPUT_OPTION) -c $< o/$(MODE)/libc/testlib/fixture.o: libc/testlib/fixture.S diff --git a/libc/testlib/blake2b256_tests.S b/libc/testlib/blake2b256_tests.S new file mode 100644 index 000000000..d5d600e19 --- /dev/null +++ b/libc/testlib/blake2b256_tests.S @@ -0,0 +1,33 @@ +/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8 -*-│ +│ vi: set noet ft=asm ts=8 sw=8 fenc=utf-8 :vi │ +╞══════════════════════════════════════════════════════════════════════════════╡ +│ Copyright 2024 Justine Alexandra Roberts Tunney │ +│ │ +│ Permission to use, copy, modify, and/or distribute this software for │ +│ any purpose with or without fee is hereby granted, provided that the │ +│ above copyright notice and this permission notice appear in all copies. │ +│ │ +│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │ +│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │ +│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │ +│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │ +│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │ +│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │ +│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ +│ PERFORMANCE OF THIS SOFTWARE. │ +╚─────────────────────────────────────────────────────────────────────────────*/ +#include "libc/macros.internal.h" +.rodata + +// Blake2B256 test vectors. + .underrun +kBlake2b256Tests: +0: .incbin "libc/testlib/blake2b256_tests.txt" +1: .byte 0 + .endobj kBlake2b256Tests,globl + .overrun + + .balign 8 +kBlake2b256TestsSize: + .quad 1b-0b + .endobj kBlake2b256TestsSize,globl diff --git a/test/libc/str/blake2b256_tests.txt b/libc/testlib/blake2b256_tests.txt similarity index 100% rename from test/libc/str/blake2b256_tests.txt rename to libc/testlib/blake2b256_tests.txt diff --git a/test/libc/str/blake2_test.c b/test/libc/str/blake2_test.c index 0b31b16a1..41d17aa75 100644 --- a/test/libc/str/blake2_test.c +++ b/test/libc/str/blake2_test.c @@ -16,6 +16,7 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ +#include "libc/stdio/stdio.h" #include "libc/str/blake2.h" #include "libc/assert.h" #include "libc/mem/mem.h" @@ -26,6 +27,9 @@ #include "libc/testlib/hyperion.h" #include "libc/testlib/testlib.h" +__static_yoink("libc/testlib/blake2b256_tests.txt"); +__static_yoink("zipos"); + uint8_t *EZBLAKE2B256(const char *s, size_t n) { static uint8_t digest[BLAKE2B256_DIGEST_LENGTH]; BLAKE2B256(s, n, digest); @@ -63,7 +67,27 @@ TEST(BLAKE2B256Test, ABC) { EXPECT_BINEQ( "03170a2e7597b7b7e3d84c05391d139a62b157e78786d8c082f29dcf4c111314", HEXBLAKE2B256("00")); - /* TODO(jart): do rest */ +} + +TEST(BLAKE2B256Test, vectors) { + char *line = NULL; + size_t cap = 0; + ssize_t n; + FILE *f = fopen("/zip/libc/testlib/blake2b256_tests.txt", "r"); + uint8_t *digest = 0; + while ((n = getline(&line, &cap, f)) != -1) { + if (n < 2 || line[0] == '#') + continue; + line[n - 1] = 0; + if (!strncmp(line, "IN:", 3)) { + digest = HEXBLAKE2B256(line + 4); + } + if (!strncmp(line, "HASH: ", 6)) { + EXPECT_BINEQ(line + 6, digest); + } + } + fclose(f); + free(line); } BENCH(blake2, bench) { From 9b87dd2b8747d807dfdcdcb80b4fd2b722ea8cfe Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Wed, 22 May 2024 12:09:55 -0700 Subject: [PATCH 059/123] Refactor some code --- examples/asantest.c | 16 ++++++++++++++++ libc/calls/ntspawn.c | 3 ++- libc/intrin/BUILD.mk | 11 ++++++++++- libc/intrin/strerror.c | 3 ++- libc/mem/tinymalloc.inc | 3 ++- libc/nexgen32e/kbase36.c | 3 ++- libc/nexgen32e/ktolower.c | 3 ++- libc/nexgen32e/ktoupper.c | 3 ++- libc/runtime/clone.c | 2 +- libc/runtime/enable_tls.c | 3 ++- libc/str/khextoint.c | 3 ++- 11 files changed, 43 insertions(+), 10 deletions(-) create mode 100644 examples/asantest.c diff --git a/examples/asantest.c b/examples/asantest.c new file mode 100644 index 000000000..19aaa6a90 --- /dev/null +++ b/examples/asantest.c @@ -0,0 +1,16 @@ +#include + +__static_yoink("__die"); +__static_yoink("GetSymbolByAddr"); +__static_yoink("malloc_inspect_all"); + +char *lol(int n) { + return malloc(n); +} + +char *(*pLol)(int) = lol; + +int main(int argc, char *argv[]) { + char *s = pLol(4); + s[4] = 1; +} diff --git a/libc/calls/ntspawn.c b/libc/calls/ntspawn.c index 2f2367e88..36be116dc 100644 --- a/libc/calls/ntspawn.c +++ b/libc/calls/ntspawn.c @@ -39,6 +39,7 @@ #include "libc/nt/struct/startupinfo.h" #include "libc/nt/struct/startupinfoex.h" #include "libc/proc/ntspawn.h" +#include "libc/stdalign.internal.h" #include "libc/str/str.h" #include "libc/sysv/errfuns.h" #ifdef __x86_64__ @@ -149,7 +150,7 @@ static textwindows int ntspawn2(struct NtSpawnArgs *a, struct SpawnBlock *sb) { // this code won't call malloc in practice bool32 ok; void *freeme = 0; - _Alignas(16) char memory[128]; + alignas(16) char memory[128]; size_t size = sizeof(memory); struct NtProcThreadAttributeList *alist = (void *)memory; uint32_t items = !!a->opt_hParentProcess + !!a->opt_lpExplicitHandleList; diff --git a/libc/intrin/BUILD.mk b/libc/intrin/BUILD.mk index d912f8556..958752e65 100644 --- a/libc/intrin/BUILD.mk +++ b/libc/intrin/BUILD.mk @@ -82,7 +82,16 @@ o//libc/intrin/memcmp.o \ o//libc/intrin/memset.o \ o//libc/intrin/memmove.o: private \ CFLAGS += \ - -O2 -finline -foptimize-sibling-calls + -O2 \ + -finline \ + -foptimize-sibling-calls + +# make asan stack traces shorter +o/$(MODE)/libc/intrin/asanthunk.o: private \ + CFLAGS += \ + -Os \ + $(NO_MAGIC) \ + -foptimize-sibling-calls o/$(MODE)/libc/intrin/bzero.o \ o/$(MODE)/libc/intrin/memcmp.o \ diff --git a/libc/intrin/strerror.c b/libc/intrin/strerror.c index 577551d21..a465c5c7d 100644 --- a/libc/intrin/strerror.c +++ b/libc/intrin/strerror.c @@ -18,9 +18,10 @@ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/dce.h" #include "libc/fmt/magnumstrs.internal.h" +#include "libc/stdalign.internal.h" #include "libc/str/str.h" -_Alignas(1) static char strerror_buf[128]; +alignas(1) static char strerror_buf[128]; /** * Returns string describing `err`. diff --git a/libc/mem/tinymalloc.inc b/libc/mem/tinymalloc.inc index fffdcdc6c..0fe7d33e8 100644 --- a/libc/mem/tinymalloc.inc +++ b/libc/mem/tinymalloc.inc @@ -16,6 +16,7 @@ #include "libc/assert.h" #include "libc/errno.h" #include "libc/mem/mem.h" +#include "libc/stdalign.internal.h" #include "libc/stdckdint.h" #include "libc/str/str.h" @@ -29,7 +30,7 @@ #ifndef MODE_DBG /* don't interfere with asan dlmalloc hooking */ -_Alignas(TINYMALLOC_MAX_ALIGN) static struct { +alignas(TINYMALLOC_MAX_ALIGN) static struct { char memory[TINYMALLOC_MAX_BYTES]; unsigned used, last, free; } heap; diff --git a/libc/nexgen32e/kbase36.c b/libc/nexgen32e/kbase36.c index fe4b295c7..8a105da1c 100644 --- a/libc/nexgen32e/kbase36.c +++ b/libc/nexgen32e/kbase36.c @@ -16,9 +16,10 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ +#include "libc/stdalign.internal.h" #include "libc/str/tab.internal.h" -_Alignas(uint8_t) const uint8_t kBase36[256] = { +alignas(uint8_t) const uint8_t kBase36[256] = { ['0'] = 1, // ['1'] = 2, // ['2'] = 3, // diff --git a/libc/nexgen32e/ktolower.c b/libc/nexgen32e/ktolower.c index aa3056d0f..db169897e 100644 --- a/libc/nexgen32e/ktolower.c +++ b/libc/nexgen32e/ktolower.c @@ -16,9 +16,10 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ +#include "libc/stdalign.internal.h" #include "libc/str/tab.internal.h" -_Alignas(uint8_t) const uint8_t kToLower[256] = { +alignas(uint8_t) const uint8_t kToLower[256] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, ' ', '!', '\"', '#', '$', '%', '&', '\'', '(', ')', diff --git a/libc/nexgen32e/ktoupper.c b/libc/nexgen32e/ktoupper.c index ba2d49c14..86e688a85 100644 --- a/libc/nexgen32e/ktoupper.c +++ b/libc/nexgen32e/ktoupper.c @@ -16,9 +16,10 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ +#include "libc/stdalign.internal.h" #include "libc/str/tab.internal.h" -_Alignas(uint8_t) const uint8_t kToUpper[256] = { +alignas(uint8_t) const uint8_t kToUpper[256] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, ' ', '!', '\"', '#', '$', '%', '&', '\'', '(', ')', diff --git a/libc/runtime/clone.c b/libc/runtime/clone.c index 16c07cf22..0aef0e8a0 100644 --- a/libc/runtime/clone.c +++ b/libc/runtime/clone.c @@ -78,7 +78,7 @@ #define LWP_SUSPENDED 0x00000080 struct CloneArgs { - _Alignas(16) union { + alignas(16) union { struct { int tid; int this; diff --git a/libc/runtime/enable_tls.c b/libc/runtime/enable_tls.c index c55f25aad..2f67dbcba 100644 --- a/libc/runtime/enable_tls.c +++ b/libc/runtime/enable_tls.c @@ -35,6 +35,7 @@ #include "libc/runtime/internal.h" #include "libc/runtime/runtime.h" #include "libc/runtime/syslib.internal.h" +#include "libc/stdalign.internal.h" #include "libc/str/locale.h" #include "libc/str/str.h" #include "libc/thread/posixthread.internal.h" @@ -47,7 +48,7 @@ extern unsigned char __tls_mov_nt_rax[]; extern unsigned char __tls_add_nt_rax[]; -_Alignas(TLS_ALIGNMENT) static char __static_tls[6016]; +alignas(TLS_ALIGNMENT) static char __static_tls[6016]; static unsigned long ParseMask(const char *str) { int c; diff --git a/libc/str/khextoint.c b/libc/str/khextoint.c index 4a5009255..53e2093d0 100644 --- a/libc/str/khextoint.c +++ b/libc/str/khextoint.c @@ -16,9 +16,10 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ +#include "libc/stdalign.internal.h" #include "libc/str/tab.internal.h" -_Alignas(int8_t) const int8_t kHexToInt[256] = { +alignas(int8_t) const int8_t kHexToInt[256] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 0x00 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 0x10 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 0x20 From f029375d39870668578f5c3f5b10956fdc02b339 Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Wed, 22 May 2024 12:10:03 -0700 Subject: [PATCH 060/123] Introduce MAP_HUGETLB --- libc/calls/pledge-linux.c | 3 +-- libc/intrin/describemapflags.c | 1 + libc/sysv/consts.sh | 1 + libc/sysv/consts/MAP_HUGETLB.S | 2 ++ libc/sysv/consts/map.h | 1 + third_party/dlmalloc/platform.inc | 2 +- 6 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 libc/sysv/consts/MAP_HUGETLB.S diff --git a/libc/calls/pledge-linux.c b/libc/calls/pledge-linux.c index 2bb52c038..d36684bfd 100644 --- a/libc/calls/pledge-linux.c +++ b/libc/calls/pledge-linux.c @@ -1641,7 +1641,6 @@ static privileged void AllowMmapExec(struct Filter *f) { // // - MAP_LOCKED (0x02000) // - MAP_NONBLOCK (0x10000) -// - MAP_HUGETLB (0x40000) // static privileged void AllowMmapNoexec(struct Filter *f) { static const struct sock_filter fragment[] = { @@ -1650,7 +1649,7 @@ static privileged void AllowMmapNoexec(struct Filter *f) { /*L2*/ BPF_STMT(BPF_ALU | BPF_AND | BPF_K, ~(PROT_READ | PROT_WRITE)), /*L3*/ BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 0, 0, 8 - 4), /*L4*/ BPF_STMT(BPF_LD | BPF_W | BPF_ABS, OFF(args[3])), // flags - /*L5*/ BPF_STMT(BPF_ALU | BPF_AND | BPF_K, 0x52000), + /*L5*/ BPF_STMT(BPF_ALU | BPF_AND | BPF_K, 0x12000), /*L6*/ BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 0, 0, 1), /*L7*/ BPF_STMT(BPF_RET | BPF_K, SECCOMP_RET_ALLOW), /*L8*/ BPF_STMT(BPF_LD | BPF_W | BPF_ABS, OFF(nr)), diff --git a/libc/intrin/describemapflags.c b/libc/intrin/describemapflags.c index 7c207d2e3..5ff541b37 100644 --- a/libc/intrin/describemapflags.c +++ b/libc/intrin/describemapflags.c @@ -30,6 +30,7 @@ const char *(DescribeMapFlags)(char buf[64], int x) { {MAP_SHARED, "SHARED"}, // {MAP_FIXED, "FIXED"}, // {MAP_FIXED_NOREPLACE, "FIXED_NOREPLACE"}, // + {MAP_HUGETLB, "HUGETLB"}, // {MAP_CONCEAL, "CONCEAL"}, // {MAP_LOCKED, "LOCKED"}, // {MAP_NORESERVE, "NORESERVE"}, // diff --git a/libc/sysv/consts.sh b/libc/sysv/consts.sh index 1242f1e4a..696b94040 100755 --- a/libc/sysv/consts.sh +++ b/libc/sysv/consts.sh @@ -230,6 +230,7 @@ syscon mmap MAP_NORESERVE 0x00004000 0x00004000 0x00000040 0x00000040 0 syscon mmap MAP_POPULATE 0x00008000 0x00008000 0 0 0x00040000 0 0 0 # MAP_PREFAULT_READ on FreeBSD; can avoid madvise(MADV_WILLNEED) on private file mapping syscon mmap MAP_NONBLOCK 0x00010000 0x00010000 0 0 0 0 0 0 syscon mmap MAP_SYNC 0x00080000 0x00080000 0 0 0 0 0 0 # perform synchronous page faults for mapping (Linux 4.15+) +syscon mmap MAP_HUGETLB 0x00040000 -1 -1 -1 -1 -1 -1 -1 # make it inherit across execve() syscon mmap MAP_INHERIT -1 -1 -1 -1 -1 -1 0x00000080 -1 # make it inherit across execve() syscon mmap MAP_HASSEMAPHORE 0 0 0x00000200 0x00000200 0x00000200 0 0x00000200 0 # does it matter on x86? syscon mmap MAP_NOSYNC 0 0 0 0 0x00000800 0 0 0 # flush to physical media only when necessary rather than gratuitously; be sure to use write() rather than ftruncate() with this! diff --git a/libc/sysv/consts/MAP_HUGETLB.S b/libc/sysv/consts/MAP_HUGETLB.S new file mode 100644 index 000000000..5062efe09 --- /dev/null +++ b/libc/sysv/consts/MAP_HUGETLB.S @@ -0,0 +1,2 @@ +#include "libc/sysv/consts/syscon.internal.h" +.syscon mmap,MAP_HUGETLB,0x00040000,-1,-1,-1,-1,-1,-1,-1 diff --git a/libc/sysv/consts/map.h b/libc/sysv/consts/map.h index 04008f4cd..c1e3fbc58 100644 --- a/libc/sysv/consts/map.h +++ b/libc/sysv/consts/map.h @@ -13,6 +13,7 @@ extern const int MAP_FILE; extern const int MAP_FIXED; extern const int MAP_FIXED_NOREPLACE; extern const int MAP_HASSEMAPHORE; +extern const int MAP_HUGETLB; extern const int MAP_INHERIT; extern const int MAP_JIT; extern const int MAP_LOCKED; diff --git a/third_party/dlmalloc/platform.inc b/third_party/dlmalloc/platform.inc index 25c80f416..d7733a657 100644 --- a/third_party/dlmalloc/platform.inc +++ b/third_party/dlmalloc/platform.inc @@ -111,7 +111,7 @@ #if (MORECORE_CONTIGUOUS || defined(WIN32)) #define DEFAULT_GRANULARITY (0) /* 0 means to compute in init_mparams */ #else /* MORECORE_CONTIGUOUS */ -#define DEFAULT_GRANULARITY ((size_t)64U * (size_t)1024U) +#define DEFAULT_GRANULARITY ((size_t)256U * (size_t)1024U) #endif /* MORECORE_CONTIGUOUS */ #endif /* DEFAULT_GRANULARITY */ #ifndef DEFAULT_TRIM_THRESHOLD From 3b0ea2db4def598f75a54a95848da50a797ac2fe Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Thu, 23 May 2024 05:49:02 -0700 Subject: [PATCH 061/123] Remove -fno-schedule-insns2 This was originally added when we were using the mcount hooking technique, to prevent the nop from floating above the frame pointer creation. Now we use a better codegen technique for hooking so it's no longer needed to sacrifice performance by using this flag. --- build/definitions.mk | 4 ---- 1 file changed, 4 deletions(-) diff --git a/build/definitions.mk b/build/definitions.mk index 9bc6d8c15..a11d98a4c 100644 --- a/build/definitions.mk +++ b/build/definitions.mk @@ -63,10 +63,6 @@ BACKTRACES = \ -fno-optimize-sibling-calls \ -mno-omit-leaf-frame-pointer -ifneq ($(ARCH), aarch64) -BACKTRACES += -fno-schedule-insns2 -endif - SANITIZER = \ -fsanitize=address From bf3531de81c1815becd45be7247965b0347e454b Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Thu, 23 May 2024 19:23:42 -0700 Subject: [PATCH 062/123] Make crash reports reliable in multithreaded case --- libc/log/oncrash_amd64.c | 2 ++ libc/log/oncrash_arm64.c | 2 ++ libc/log/showcrashreports.c | 12 ++++++------ 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/libc/log/oncrash_amd64.c b/libc/log/oncrash_amd64.c index 0c965faec..66fdd4b81 100644 --- a/libc/log/oncrash_amd64.c +++ b/libc/log/oncrash_amd64.c @@ -192,6 +192,8 @@ void ShowCrashReportHook(int, int, int, struct siginfo *, ucontext_t *); static relegated void ShowCrashReport(int err, int sig, struct siginfo *si, ucontext_t *ctx) { + if (sig != SIGTRAP && sig != SIGQUIT) + sigaddset(&ctx->uc_sigmask, sig); #pragma GCC push_options #pragma GCC diagnostic ignored "-Walloca-larger-than=" long size = __get_safe_size(8192, 4096); diff --git a/libc/log/oncrash_arm64.c b/libc/log/oncrash_arm64.c index 2ab6d31a1..59d02f12c 100644 --- a/libc/log/oncrash_arm64.c +++ b/libc/log/oncrash_arm64.c @@ -191,6 +191,8 @@ static relegated char *GetSymbolName(struct SymbolTable *st, int symbol) { static relegated void __oncrash_impl(int sig, struct siginfo *si, ucontext_t *ctx) { + if (sig != SIGTRAP && sig != SIGQUIT) + sigaddset(&ctx->uc_sigmask, sig); #pragma GCC push_options #pragma GCC diagnostic ignored "-Walloca-larger-than=" long size = __get_safe_size(10000, 4096); diff --git a/libc/log/showcrashreports.c b/libc/log/showcrashreports.c index 1ee46c6b4..da63e3136 100644 --- a/libc/log/showcrashreports.c +++ b/libc/log/showcrashreports.c @@ -85,13 +85,13 @@ void ShowCrashReports(void) { #ifdef __x86_64__ InstallCrashHandler(SIGTRAP, 0); #else - InstallCrashHandler(SIGTRAP, SA_RESETHAND); + InstallCrashHandler(SIGTRAP, 0); #endif - InstallCrashHandler(SIGFPE, SA_RESETHAND); - InstallCrashHandler(SIGILL, SA_RESETHAND); - InstallCrashHandler(SIGBUS, SA_RESETHAND); - InstallCrashHandler(SIGABRT, SA_RESETHAND); - InstallCrashHandler(SIGSEGV, SA_RESETHAND | SA_ONSTACK); + InstallCrashHandler(SIGFPE, 0); + InstallCrashHandler(SIGILL, 0); + InstallCrashHandler(SIGBUS, 0); + InstallCrashHandler(SIGABRT, 0); + InstallCrashHandler(SIGSEGV, SA_ONSTACK); } IGNORE_LEAKS(ShowCrashReports) From 5f61d273e4fb704d6fdc00de84c14c98776b4280 Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Fri, 24 May 2024 11:44:31 -0700 Subject: [PATCH 063/123] Add hwap constants to sys/auxv.h --- libc/isystem/sys/auxv.h | 1 + 1 file changed, 1 insertion(+) diff --git a/libc/isystem/sys/auxv.h b/libc/isystem/sys/auxv.h index 4143bf99a..945e2ab9a 100644 --- a/libc/isystem/sys/auxv.h +++ b/libc/isystem/sys/auxv.h @@ -2,4 +2,5 @@ #define COSMOPOLITAN_LIBC_ISYSTEM_SYS_AUXV_H_ #include "libc/runtime/runtime.h" #include "libc/sysv/consts/auxv.h" +#include "libc/sysv/consts/hwcap.h" #endif /* COSMOPOLITAN_LIBC_ISYSTEM_SYS_AUXV_H_ */ From ed93fc3dd79c440d56f7350dda77664e8c335172 Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Fri, 24 May 2024 19:28:23 -0700 Subject: [PATCH 064/123] Fix fread() with 2gb+ sizes --- libc/calls/struct/iovec.internal.h | 1 - libc/calls/writevuninterruptible.c | 45 ----------- libc/stdio/fread_unlocked.c | 121 +++++++++++++++++++++-------- libc/stdio/fwrite_unlocked.c | 36 ++++++++- libc/stdio/vdprintf.c | 6 +- test/libc/stdio/freopen_test.c | 88 ++++++++++++--------- test/posix/BUILD.mk | 3 + test/posix/fread3gb_test.c | 73 +++++++++++++++++ 8 files changed, 254 insertions(+), 119 deletions(-) delete mode 100644 libc/calls/writevuninterruptible.c create mode 100644 test/posix/fread3gb_test.c diff --git a/libc/calls/struct/iovec.internal.h b/libc/calls/struct/iovec.internal.h index 488b30b2e..34fd4e07d 100644 --- a/libc/calls/struct/iovec.internal.h +++ b/libc/calls/struct/iovec.internal.h @@ -5,7 +5,6 @@ #include "libc/mem/alloca.h" COSMOPOLITAN_C_START_ -ssize_t __robust_writev(int, struct iovec *, int); int64_t sys_preadv(int, struct iovec *, int, int64_t, int64_t); int64_t sys_pwritev(int, const struct iovec *, int, int64_t, int64_t); int64_t sys_readv(int32_t, const struct iovec *, int32_t); diff --git a/libc/calls/writevuninterruptible.c b/libc/calls/writevuninterruptible.c deleted file mode 100644 index afded332e..000000000 --- a/libc/calls/writevuninterruptible.c +++ /dev/null @@ -1,45 +0,0 @@ -/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│ -│ vi: set et ft=c ts=2 sts=2 sw=2 fenc=utf-8 :vi │ -╞══════════════════════════════════════════════════════════════════════════════╡ -│ Copyright 2021 Justine Alexandra Roberts Tunney │ -│ │ -│ Permission to use, copy, modify, and/or distribute this software for │ -│ any purpose with or without fee is hereby granted, provided that the │ -│ above copyright notice and this permission notice appear in all copies. │ -│ │ -│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │ -│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │ -│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │ -│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │ -│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │ -│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │ -│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ -│ PERFORMANCE OF THIS SOFTWARE. │ -╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/calls/struct/iovec.h" -#include "libc/calls/struct/iovec.internal.h" -#include "libc/errno.h" - -ssize_t __robust_writev(int fd, struct iovec *iov, int iovlen) { - ssize_t rc; - size_t wrote; - do { - if ((rc = writev(fd, iov, iovlen)) != -1) { - wrote = rc; - do { - if (wrote >= iov->iov_len) { - wrote -= iov->iov_len; - ++iov; - --iovlen; - } else { - iov->iov_base = (char *)iov->iov_base + wrote; - iov->iov_len -= wrote; - wrote = 0; - } - } while (wrote); - } else if (errno != EINTR) { - return -1; - } - } while (iovlen); - return 0; -} diff --git a/libc/stdio/fread_unlocked.c b/libc/stdio/fread_unlocked.c index eac24b6e3..ba77742ec 100644 --- a/libc/stdio/fread_unlocked.c +++ b/libc/stdio/fread_unlocked.c @@ -16,6 +16,7 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ +#include "libc/assert.h" #include "libc/calls/calls.h" #include "libc/calls/struct/iovec.h" #include "libc/errno.h" @@ -25,6 +26,41 @@ #include "libc/stdio/stdio.h" #include "libc/str/str.h" #include "libc/sysv/consts/o.h" +#include "libc/sysv/errfuns.h" + +static ssize_t readvall(int fd, struct iovec *iov, int iovlen) { + int olde; + ssize_t rc; + size_t got, toto; + toto = 0; + olde = errno; + do { + if ((rc = readv(fd, iov, iovlen)) == -1) { + if (toto && errno == EINTR) { + errno = olde; + continue; + } + return -1; + } + got = rc; + toto += got; + for (;;) { + if (!iov->iov_len) { + --iovlen; + ++iov; + } else if (got >= iov->iov_len) { + got -= iov->iov_len; + --iovlen; + ++iov; + } else { + iov->iov_base += got; + iov->iov_len -= got; + break; + } + } + } while (got && iovlen); + return toto; +} /** * Reads data from stream. @@ -36,11 +72,10 @@ size_t fread_unlocked(void *buf, size_t stride, size_t count, FILE *f) { char *p; ssize_t rc; - size_t n, m; struct iovec iov[2]; - if (!stride) { - return 0; - } + size_t n, m, got, need; + + // check state and parameters if ((f->iomode & O_ACCMODE) == O_WRONLY) { f->state = errno = EBADF; return 0; @@ -53,52 +88,74 @@ size_t fread_unlocked(void *buf, size_t stride, size_t count, FILE *f) { f->state = errno = EOVERFLOW; return 0; } + if (!n) + return 0; + + // try to fulfill request from buffer if possible p = buf; m = f->end - f->beg; - if (MIN(n, m)) { - memcpy(p, f->buf + f->beg, MIN(n, m)); - } - if (n < m) { - f->beg += n; - return count; - } - if (n == m) { - f->beg = f->end = 0; + if (n <= m) { + memcpy(p, f->buf + f->beg, n); + if ((f->beg += n) == f->end) { + f->beg = 0; + f->end = 0; + } return count; } + + // handle end-of-file condition in fileless mode if (f->fd == -1) { - f->beg = 0; - f->end = 0; - f->state = -1; + m /= stride; + m *= stride; + if (m) + memcpy(p, f->buf + f->beg, m); + if ((f->beg += m) == f->end) { + f->state = EOF; + f->beg = 0; + f->end = 0; + } return m / stride; } + + // `n` is number of bytes requested by caller + // `m` is how much of `n` came from existing buffer + // `iov[0]` reads remainder of the caller request + // `iov[1]` reads ahead extra content into buffer + if (m) + memcpy(p, f->buf + f->beg, m); iov[0].iov_base = p + m; - iov[0].iov_len = n - m; + iov[0].iov_len = need = n - m; if (f->bufmode != _IONBF && n < f->size) { iov[1].iov_base = f->buf; - if (f->size > PUSHBACK) { + if (f->size > PUSHBACK) iov[1].iov_len = f->size - PUSHBACK; - } else { + else iov[1].iov_len = f->size; - } } else { iov[1].iov_base = NULL; iov[1].iov_len = 0; } - if ((rc = readv(f->fd, iov, 2)) == -1) { + if ((rc = readvall(f->fd, iov, 2)) == -1) { f->state = errno; return 0; } - n = rc; - f->beg = 0; - f->end = 0; - if (n > iov[0].iov_len) { - f->end += n - iov[0].iov_len; - return count; - } else { - n = (m + n) / stride; - if (n < count) - f->state = -1; - return n; + got = rc; + + // handle partial fulfillment + if (got < need) { + got += m; + if (got % stride) { + f->state = eio(); + return 0; + } + f->beg = 0; + f->end = 0; + f->state = EOF; + return got / stride; } + + // handle overfulfillment + f->beg = 0; + f->end = got - need; + return count; } diff --git a/libc/stdio/fwrite_unlocked.c b/libc/stdio/fwrite_unlocked.c index 26f1e7435..ef29022fe 100644 --- a/libc/stdio/fwrite_unlocked.c +++ b/libc/stdio/fwrite_unlocked.c @@ -27,6 +27,40 @@ #include "libc/str/str.h" #include "libc/sysv/consts/o.h" +static ssize_t writevall(int fd, struct iovec *iov, int iovlen) { + int olde; + ssize_t rc; + size_t got, toto; + toto = 0; + olde = errno; + do { + if ((rc = writev(fd, iov, iovlen)) == -1) { + if (toto && errno == EINTR) { + errno = olde; + continue; + } + return -1; + } + got = rc; + toto += got; + for (;;) { + if (!iov->iov_len) { + --iovlen; + ++iov; + } else if (got >= iov->iov_len) { + got -= iov->iov_len; + --iovlen; + ++iov; + } else { + iov->iov_base += got; + iov->iov_len -= got; + break; + } + } + } while (got && iovlen); + return toto; +} + /** * Writes data to stream. * @@ -104,7 +138,7 @@ size_t fwrite_unlocked(const void *data, size_t stride, size_t count, FILE *f) { iov[1].iov_base = (void *)data; iov[1].iov_len = n; n += f->beg; - if (__robust_writev(f->fd, iov, 2) == -1) { + if ((rc = writevall(f->fd, iov, 2)) == -1) { f->state = errno; return 0; } diff --git a/libc/stdio/vdprintf.c b/libc/stdio/vdprintf.c index 8dd53830d..dc344804e 100644 --- a/libc/stdio/vdprintf.c +++ b/libc/stdio/vdprintf.c @@ -16,7 +16,7 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/calls/struct/iovec.internal.h" +#include "libc/calls/struct/iovec.h" #include "libc/dce.h" #include "libc/fmt/internal.h" #include "libc/limits.h" @@ -42,7 +42,7 @@ static int vdprintf_putc(const char *s, struct VdprintfState *t, size_t n) { iov[0].iov_len = t->n; iov[1].iov_base = (void *)s; iov[1].iov_len = n; - if (__robust_writev(t->fd, iov, 2) == -1) { + if (writev(t->fd, iov, 2) == -1) { return -1; } t->t += t->n; @@ -68,7 +68,7 @@ int vdprintf(int fd, const char *fmt, va_list va) { if (t.n) { iov[0].iov_base = t.b; iov[0].iov_len = t.n; - if (__robust_writev(t.fd, iov, 1) == -1) { + if (writev(t.fd, iov, 1) == -1) { return -1; } t.t += t.n; diff --git a/test/libc/stdio/freopen_test.c b/test/libc/stdio/freopen_test.c index 92b96dd09..b803972ed 100644 --- a/test/libc/stdio/freopen_test.c +++ b/test/libc/stdio/freopen_test.c @@ -16,53 +16,67 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/stdio/stdio.h" -#include "libc/testlib/testlib.h" +#include +#include +#include +#include +#include +#include /* * This test was contributed by @ahgamut * https://github.com/jart/cosmopolitan/issues/61#issuecomment-792214575 */ -void SetUpOnce(void) { - testlib_enable_tmp_setup_teardown(); +char path[PATH_MAX]; + +void teardown(void) { + unlink(path); } -int writefile(const char* filename) { - int stat = 0; - FILE* fp = fopen(filename, "w"); - stat = fputs("cosmopolitan libc\n", fp); - fclose(fp); - return stat; -} - -int readfile(const char* filename) { - int stat = 0; - char buf1[30]; - char buf2[30]; - FILE *fp1, *fp2; - fp1 = fopen(filename, "r"); - if (!fp1) { - printf("failed to read %s in r\n", filename); +int setup(void) { + int fd; + const char* tmpdir; + if ((tmpdir = getenv("TMPDIR"))) + strlcpy(path, tmpdir, sizeof(path)); + else + strlcpy(path, "/tmp", sizeof(path)); + strlcat(path, "/freopen_test.XXXXXX", sizeof(path)); + if ((fd = mkstemp(path)) == -1) return 1; - } - buf1[0] = fgetc(fp1); - buf1[1] = '\0'; - fp2 = freopen(filename, "rb", fp1); - if (!fp2) { - printf("failed to read %s in rb\n", filename); - return 1; - } - stat = fread(buf2, sizeof(buf2[0]), 20, fp2); - ASSERT_EQ(18, stat); - buf2[stat] = '\0'; - fclose(fp2); - ASSERT_STREQ("c", buf1); - ASSERT_STREQ("cosmopolitan libc\n", buf2); + if (write(fd, "cosmopolitan libc\n", 18) != 18) + return 2; + if (close(fd)) + return 3; return 0; } -TEST(freopen, test) { - writefile("file.txt"); - readfile("file.txt"); +int test(void) { + FILE* fp; + char buf[20]; + if (!(fp = fopen(path, "r"))) + return 4; + if (fgetc(fp) != 'c') + return 5; + if (!(fp = freopen(path, "rb", fp))) + return 6; + if (fread(buf, 1, 20, fp) != 18) + return 7; + if (memcmp(buf, "cosmopolitan libc\n", 18)) + return 8; + if (fclose(fp)) + return 9; + return 0; +} + +int main(int argc, char* argv[]) { + int rc; + if ((rc = setup())) { + perror(path); + teardown(); + return rc; + } + rc = test(); + teardown(); + return rc; } diff --git a/test/posix/BUILD.mk b/test/posix/BUILD.mk index 69fe69be9..dafa1d9c1 100644 --- a/test/posix/BUILD.mk +++ b/test/posix/BUILD.mk @@ -52,6 +52,9 @@ o/$(MODE)/test/posix/%.dbg: \ $(APE_NO_MODIFY_SELF) @$(APELINK) +o/$(MODE)/test/posix/fread3gb_test.runs: \ + private QUOTA += -F5gb -M5gb + .PHONY: o/$(MODE)/test/posix o/$(MODE)/test/posix: \ $(TEST_POSIX_BINS) \ diff --git a/test/posix/fread3gb_test.c b/test/posix/fread3gb_test.c new file mode 100644 index 000000000..4644eb929 --- /dev/null +++ b/test/posix/fread3gb_test.c @@ -0,0 +1,73 @@ +#include +#include +#include +#include +#include +#include + +#define SIZE ((size_t)2 * 1024 * 1024 * 1024 + 13) + +char path[PATH_MAX]; + +void teardown(void) { + unlink(path); +} + +int setup(void) { + int fd; + struct stat st; + const char *tmpdir; + if (!stat("/dev/shm", &st)) + strlcpy(path, "/dev/shm", sizeof(path)); + else if ((tmpdir = getenv("TMPDIR"))) + strlcpy(path, tmpdir, sizeof(path)); + else + strlcpy(path, "/tmp", sizeof(path)); + strlcat(path, "/fread3gb.XXXXXX", sizeof(path)); + if ((fd = mkstemp(path)) == -1) + return 1; + if (ftruncate(fd, SIZE)) + return 2; + if (pwrite(fd, "a", 1, 0) != 1) + return 3; + if (pwrite(fd, "z", 1, SIZE - 1) != 1) + return 4; + if (close(fd)) + return 5; + return 0; +} + +int test(void) { + FILE *f; + char *buf; + size_t rc; + if (!(f = fopen(path, "r"))) + return 6; + if (!(buf = malloc(SIZE))) + return 7; + if ((rc = fread(buf, SIZE, 1, f)) != 1) { + fprintf(stderr, "tell = %zu\n", ftello(f)); + fprintf(stderr, "rc = %zu\n", rc); + perror("fread"); + return 8; + } + if (buf[0] != 'a') + return 9; + if (buf[SIZE - 1] != 'z') + return 10; + if (fclose(f)) + return 11; + return 0; +} + +int main(int argc, char *argv[]) { + int rc; + if ((rc = setup())) { + perror(path); + teardown(); + return rc; + } + rc = test(); + teardown(); + return rc; +} From ce9aeb2aed91d607faaed8222f0503fe4e433e43 Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Fri, 24 May 2024 19:35:19 -0700 Subject: [PATCH 065/123] Release Cosmopolitan v3.3.7 --- libc/integral/normalize.inc | 2 +- test/posix/fread3gb_test.c | 6 +----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/libc/integral/normalize.inc b/libc/integral/normalize.inc index 2e02295b7..c840b9552 100644 --- a/libc/integral/normalize.inc +++ b/libc/integral/normalize.inc @@ -4,7 +4,7 @@ #define __COSMOPOLITAN_MAJOR__ 3 #define __COSMOPOLITAN_MINOR__ 3 -#define __COSMOPOLITAN_PATCH__ 6 +#define __COSMOPOLITAN_PATCH__ 7 #define __COSMOPOLITAN__ \ (100000000 * __COSMOPOLITAN_MAJOR__ + 1000000 * __COSMOPOLITAN_MINOR__ + \ __COSMOPOLITAN_PATCH__) diff --git a/test/posix/fread3gb_test.c b/test/posix/fread3gb_test.c index 4644eb929..1167ceb1d 100644 --- a/test/posix/fread3gb_test.c +++ b/test/posix/fread3gb_test.c @@ -45,12 +45,8 @@ int test(void) { return 6; if (!(buf = malloc(SIZE))) return 7; - if ((rc = fread(buf, SIZE, 1, f)) != 1) { - fprintf(stderr, "tell = %zu\n", ftello(f)); - fprintf(stderr, "rc = %zu\n", rc); - perror("fread"); + if ((rc = fread(buf, SIZE, 1, f)) != 1) return 8; - } if (buf[0] != 'a') return 9; if (buf[SIZE - 1] != 'z') From 1df4296208ec0cf1b2d440dfc687cb27fc4dfa09 Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Sat, 25 May 2024 05:58:09 -0700 Subject: [PATCH 066/123] Fix stdio for character device regression Caused by ed93fc3dd79c440d56f7350dda77664e8c335172 --- libc/stdio/fdopen.c | 7 ++++++- libc/stdio/fread_unlocked.c | 16 ++++++++++------ third_party/lua/test/files.lua | 5 +++-- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/libc/stdio/fdopen.c b/libc/stdio/fdopen.c index 6edf4ddca..eb4437a0a 100644 --- a/libc/stdio/fdopen.c +++ b/libc/stdio/fdopen.c @@ -17,9 +17,11 @@ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/calls/calls.h" +#include "libc/calls/struct/stat.h" #include "libc/stdio/internal.h" #include "libc/stdio/stdio.h" #include "libc/sysv/consts/o.h" +#include "libc/sysv/consts/s.h" #include "libc/sysv/errfuns.h" #include "libc/thread/thread.h" @@ -33,9 +35,12 @@ */ FILE *fdopen(int fd, const char *mode) { FILE *f; + struct stat st; + if (fstat(fd, &st)) + return 0; if ((f = __stdio_alloc())) { f->fd = fd; - f->bufmode = ischardev(fd) ? _IOLBF : _IOFBF; + f->bufmode = S_ISREG(st.st_mode) ? _IOFBF : _IONBF; f->iomode = fopenflags(mode); f->buf = f->mem; f->size = BUFSIZ; diff --git a/libc/stdio/fread_unlocked.c b/libc/stdio/fread_unlocked.c index ba77742ec..d76bd3216 100644 --- a/libc/stdio/fread_unlocked.c +++ b/libc/stdio/fread_unlocked.c @@ -29,16 +29,15 @@ #include "libc/sysv/errfuns.h" static ssize_t readvall(int fd, struct iovec *iov, int iovlen) { - int olde; ssize_t rc; size_t got, toto; toto = 0; - olde = errno; do { if ((rc = readv(fd, iov, iovlen)) == -1) { - if (toto && errno == EINTR) { - errno = olde; - continue; + if (toto) { + if (errno == EINTR) + continue; + return toto; } return -1; } @@ -135,7 +134,12 @@ size_t fread_unlocked(void *buf, size_t stride, size_t count, FILE *f) { iov[1].iov_base = NULL; iov[1].iov_len = 0; } - if ((rc = readvall(f->fd, iov, 2)) == -1) { + if (f->bufmode == _IONBF) { + rc = readv(f->fd, iov, 2); + } else { + rc = readvall(f->fd, iov, 2); + } + if (rc == -1) { f->state = errno; return 0; } diff --git a/third_party/lua/test/files.lua b/third_party/lua/test/files.lua index 0ce636eb0..96ac499ec 100644 --- a/third_party/lua/test/files.lua +++ b/third_party/lua/test/files.lua @@ -867,8 +867,9 @@ if not _port then -- {year=(1 << 31) + 1899, month=12, day=31, hour=23, min=59, sec=59})) -- this is too much - checkerr("represented", os.time, - {year=(1 << 31) + 1899, month=12, day=31, hour=23, min=59, sec=60}) + -- [jart] recent tz library upgrade seems to think it's ok + -- checkerr("represented", os.time, + -- {year=(1 << 31) + 1899, month=12, day=31, hour=23, min=59, sec=60}) end -- internal 'int' fields cannot hold these values From 7724664b133cbe633404102f28201f65449dd09c Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Sat, 25 May 2024 05:59:20 -0700 Subject: [PATCH 067/123] Release Cosmopolitan v3.3.8 --- libc/integral/normalize.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libc/integral/normalize.inc b/libc/integral/normalize.inc index c840b9552..44684d19c 100644 --- a/libc/integral/normalize.inc +++ b/libc/integral/normalize.inc @@ -4,7 +4,7 @@ #define __COSMOPOLITAN_MAJOR__ 3 #define __COSMOPOLITAN_MINOR__ 3 -#define __COSMOPOLITAN_PATCH__ 7 +#define __COSMOPOLITAN_PATCH__ 8 #define __COSMOPOLITAN__ \ (100000000 * __COSMOPOLITAN_MAJOR__ + 1000000 * __COSMOPOLITAN_MINOR__ + \ __COSMOPOLITAN_PATCH__) From edb03b89d8ccc71e10b9cb442339ab49673fb30b Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Sat, 25 May 2024 07:57:13 -0700 Subject: [PATCH 068/123] Make stdin unbuffered when appropriate --- libc/stdio/stdin.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libc/stdio/stdin.c b/libc/stdio/stdin.c index 2407187fe..e90b18012 100644 --- a/libc/stdio/stdin.c +++ b/libc/stdio/stdin.c @@ -17,10 +17,12 @@ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/calls/calls.h" +#include "libc/calls/struct/stat.h" #include "libc/stdio/internal.h" #include "libc/stdio/stdio.h" #include "libc/sysv/consts/fileno.h" #include "libc/sysv/consts/o.h" +#include "libc/sysv/consts/s.h" #include "libc/thread/thread.h" /** @@ -31,11 +33,14 @@ FILE *stdin; static FILE __stdin; __attribute__((__constructor__(60))) static textstartup void initin(void) { + struct stat st; stdin = &__stdin; stdin->fd = STDIN_FILENO; stdin->iomode = O_RDONLY; stdin->buf = stdin->mem; stdin->size = sizeof(stdin->mem); stdin->lock._type = PTHREAD_MUTEX_RECURSIVE; + if (fstat(STDIN_FILENO, &st) || !S_ISREG(st.st_mode)) + stdin->bufmode = _IONBF; __fflush_register(stdin); } From c2db3b703a3b1d4f92d84c4c7f4b4f90e01868b5 Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Sat, 25 May 2024 14:49:29 -0700 Subject: [PATCH 069/123] Introduce --timelog=FILE flag to GNU Make --- third_party/make/README.cosmo | 1 + third_party/make/function.c | 1 + third_party/make/job.c | 3 + third_party/make/job.h | 2 + third_party/make/main.c | 8 ++ third_party/make/timelog.c | 186 ++++++++++++++++++++++++++++++++++ third_party/make/timelog.h | 13 +++ 7 files changed, 214 insertions(+) create mode 100644 third_party/make/timelog.c create mode 100644 third_party/make/timelog.h diff --git a/third_party/make/README.cosmo b/third_party/make/README.cosmo index 17e3a479a..2f9ca417e 100644 --- a/third_party/make/README.cosmo +++ b/third_party/make/README.cosmo @@ -15,6 +15,7 @@ LICENSE LOCAL CHANGES + - Introduce -T FILE, --time-log=FILE flag - Introduce $(uniq token...) native function - Remove code that forces slow path if not using /bin/sh diff --git a/third_party/make/function.c b/third_party/make/function.c index 8608b4604..64bd61035 100644 --- a/third_party/make/function.c +++ b/third_party/make/function.c @@ -1949,6 +1949,7 @@ func_shell_base (char *o, char **argv, int trim_newlines) child.output.out = pipedes[1]; child.output.err = errfd; + child.timelog = timelog_begin (command_argv); pid = child_execute_job (&child, 1, command_argv); if (pid < 0) diff --git a/third_party/make/job.c b/third_party/make/job.c index 9b54489dc..9b0399d98 100644 --- a/third_party/make/job.c +++ b/third_party/make/job.c @@ -1104,6 +1104,8 @@ reap_children (int block, int err) void free_childbase (struct childbase *child) { + timelog_end (child->timelog); + if (child->environment != 0) { char **ep = child->environment; @@ -1463,6 +1465,7 @@ start_job_command (struct child *child) jobserver_pre_child (ANY_SET (flags, COMMANDS_RECURSE)); + child->timelog = timelog_begin (argv); child->pid = child_execute_job ((struct childbase *)child, child->good_stdin, argv); diff --git a/third_party/make/job.h b/third_party/make/job.h index 00fac9984..daf414565 100644 --- a/third_party/make/job.h +++ b/third_party/make/job.h @@ -15,6 +15,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include "output.h" +#include "timelog.h" /* Structure describing a running or dead child process. */ @@ -31,6 +32,7 @@ this program. If not, see . */ #define CHILDBASE \ char *cmd_name; /* Allocated copy of command run. */ \ char **environment; /* Environment for commands. */ \ + struct timelog *timelog; /* [jart] the lorde of all time. */ \ VMSCHILD \ struct output output /* Output for this child. */ diff --git a/third_party/make/main.c b/third_party/make/main.c index 8a367f766..0bd269481 100644 --- a/third_party/make/main.c +++ b/third_party/make/main.c @@ -27,6 +27,7 @@ this program. If not, see . */ #include "getopt.h" #include "libc/runtime/runtime.h" #include "shuffle.h" +#include "timelog.h" #include #ifdef HAVE_FCNTL_H @@ -374,6 +375,8 @@ static const char *const usage[] = N_("\ --trace Print tracing information.\n"), N_("\ + -T FILE, --time-log=FILE Log command invocation microseconds to FILE.\n"), + N_("\ -v, --version Print the version number of make and exit.\n"), N_("\ -w, --print-directory Print the current directory.\n"), @@ -471,6 +474,7 @@ static struct command_switch switches[] = { 'o', filename, &old_files, 0, 0, 0, 0, 0, 0, "old-file", 0 }, { 'O', string, &output_sync_option, 1, 1, 0, 0, "target", 0, "output-sync", 0 }, { 'W', filename, &new_files, 0, 0, 0, 0, 0, 0, "what-if", 0 }, + { 'T', string, &timelog_path, 0, 0, 0, 0, 0, 0, "timelog", 0 }, // [jart] /* These are long-style options. */ { CHAR_MAX+1, strlist, &db_flags, 1, 1, 0, 0, "basic", 0, "debug", 0 }, @@ -2258,6 +2262,10 @@ main (int argc, char **argv, char **envp) } #endif + /* [jart] Setup command latency log. */ + + timelog_init (); + /* Set up MAKEFLAGS and MFLAGS again, so they will be right. */ define_makeflags (0); diff --git a/third_party/make/timelog.c b/third_party/make/timelog.c new file mode 100644 index 000000000..b6be15c8c --- /dev/null +++ b/third_party/make/timelog.c @@ -0,0 +1,186 @@ +/* Copyright 2024 Justine Alexandra Roberts Tunney + + Permission to use, copy, modify, and/or distribute this software for + any purpose with or without fee is hereby granted, provided that the + above copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL + WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE + AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. */ + +#include "timelog.h" + +#include +#include +#include +#include +#include +#include +#include + +struct timelog + { + struct timespec started; + size_t command_length; + char command[4000]; + }; + +char *timelog_path; +int timelog_fd = -1; + +void timelog_init (void) +{ + if (!timelog_path) + return; + if ((timelog_fd = open (timelog_path, O_APPEND | O_WRONLY | O_CREAT, 0644)) == -1) + { + perror (timelog_path); + exit (1); + } +} + +static int is_shell_safe (int c) +{ + if (c > 127) + return true; + if (isalnum(c)) + return true; + switch (c) + { + case '+': + case '-': + case '.': + case '/': + case '_': + case '=': + case ':': + return true; + default: + return false; + } +} + +static int needs_quotes (const char *s) +{ + int c; + if (!*s) + return true; + while ((c = *s++ & 255)) + if (!is_shell_safe (c)) + return true; + return false; +} + +static long long get_microseconds (struct timespec beg, struct timespec end) +{ + end.tv_sec -= beg.tv_sec; + if (end.tv_nsec < beg.tv_nsec) + { + end.tv_nsec += 1000000000; + end.tv_sec--; + } + end.tv_nsec -= beg.tv_nsec; + return end.tv_sec * 1000000ll + end.tv_nsec / 1000ll; +} + +struct timelog *timelog_begin (char **argv) +{ + int i, j, q; + char *p, *pe; + + /* don't bother if disabled */ + if (timelog_fd == -1) + return NULL; + + /* allocate object */ + struct timelog *tl; + if (!(tl = malloc (sizeof (struct timelog)))) + return NULL; + + /* stringify command */ + p = tl->command; + pe = tl->command + sizeof (tl->command) - 1; + for (i = 0; argv[i]; ++i) + { + if (i && p < pe) + *p++ = ' '; + q = needs_quotes (argv[i]); + if (q && p < pe) + *p++ = '\''; + for (j = 0; argv[i][j]; ++j) + { + if (isspace(argv[i][j]) || + iscntrl(argv[i][j])) + { + if (p < pe) + *p++ = ' '; + } + else if (argv[i][j] == '\'') + { + if (p < pe) + *p++ = '\''; + if (p < pe) + *p++ = '"'; + if (p < pe) + *p++ = '\''; + if (p < pe) + *p++ = '"'; + if (p < pe) + *p++ = '\''; + } + else + { + if (p < pe) + *p++ = argv[i][j]; + } + } + if (q && p < pe) + *p++ = '\''; + } + if (p == pe) + { + p[-3] = '.'; + p[-2] = '.'; + p[-1] = '.'; + } + *p++ = '\n'; + tl->command_length = p - tl->command; + + /* record starting timestamp */ + clock_gettime (CLOCK_REALTIME, &tl->started); + + /* return object */ + return tl; +} + +void timelog_end (struct timelog *tl) +{ + long long us; + char ibuf[22]; + struct iovec iov[2]; + struct timespec ended; + + /* don't bother if disabled */ + if (tl == NULL) + return; + + /* get elapsed microseconds string */ + clock_gettime (CLOCK_REALTIME, &ended); + us = get_microseconds (tl->started, ended); + snprintf (ibuf, sizeof(ibuf), "% 20lld ", us); + + // write to log + iov[0].iov_base = ibuf; + iov[0].iov_len = 21; + iov[1].iov_base = tl->command; + iov[1].iov_len = tl->command_length; + writev (timelog_fd, iov, 2); + + // free object + free (tl); +} diff --git a/third_party/make/timelog.h b/third_party/make/timelog.h new file mode 100644 index 000000000..72d2af31b --- /dev/null +++ b/third_party/make/timelog.h @@ -0,0 +1,13 @@ +#ifndef MAKE_TIMELOG_H_ +#define MAKE_TIMELOG_H_ + +struct timelog; + +extern int timelog_fd; +extern char *timelog_path; + +void timelog_init (void); +struct timelog *timelog_begin (char **); +void timelog_end (struct timelog *); + +#endif /* MAKE_TIMELOG_H_ */ From 1d4b452839ef5af988511e8e3a32fd25060cdd1d Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Sun, 26 May 2024 06:03:50 -0700 Subject: [PATCH 070/123] Refactor some code --- libc/str/demangle.c | 2056 +++++++++++++++++++++--------------------- tool/viz/basicidea.c | 245 ++--- 2 files changed, 1143 insertions(+), 1158 deletions(-) diff --git a/libc/str/demangle.c b/libc/str/demangle.c index 40d390b32..0327eb592 100644 --- a/libc/str/demangle.c +++ b/libc/str/demangle.c @@ -42,6 +42,7 @@ Cosmopolitan FreeBSD libcxxrt C++ Demangle (BSD-2)\n\ Copyright (c) 2007 Hyogeol Lee \n\ Copyright (c) 2015-2017 Kai Wang \n\ Copyright (c) 2024 Justine Tunney "); +// https://sourceforge.net/p/elftoolchain/code/HEAD/tree/trunk/libelftc/libelftc_dem_gnu3.c // https://github.com/freebsd/freebsd-src/blob/2176c9ab71c85efd90a6c7af4a9e04fe8e3d49ca/contrib/libcxxrt/libelftc_dem_gnu3.c // clang-format off @@ -166,53 +167,18 @@ struct type_delimit { #define SIMPLE_HASH(x, y) (64 * x + y) #define DEM_PUSH_STR(d, s) cpp_demangle_push_str((d), (s), strlen(s)) #define VEC_PUSH_STR(d, s) vector_str_push(ddata, (d), (s), strlen(s)) + static int cpp_demangle_read_encoding(struct cpp_demangle_data *); static int cpp_demangle_read_expr_primary(struct cpp_demangle_data *); static int cpp_demangle_read_expression(struct cpp_demangle_data *); -static int cpp_demangle_read_expression_flat(struct cpp_demangle_data *, - char **); -static int cpp_demangle_read_expression_binary(struct cpp_demangle_data *, - const char *, size_t); -static int cpp_demangle_read_expression_unary(struct cpp_demangle_data *, - const char *, size_t); -static int cpp_demangle_read_expression_trinary(struct cpp_demangle_data *, - const char *, size_t, const char *, size_t); static int cpp_demangle_read_function(struct cpp_demangle_data *, int *, struct vector_type_qualifier *); -static int cpp_demangle_local_source_name(struct cpp_demangle_data *ddata); -static int cpp_demangle_read_local_name(struct cpp_demangle_data *); static int cpp_demangle_read_name(struct cpp_demangle_data *); static int cpp_demangle_read_name_flat(struct cpp_demangle_data *, char **); -static int cpp_demangle_read_nested_name(struct cpp_demangle_data *); -static int cpp_demangle_read_number(struct cpp_demangle_data *, long *); -static int cpp_demangle_read_number_as_string(struct cpp_demangle_data *, - char **); -static int cpp_demangle_read_nv_offset(struct cpp_demangle_data *); -static int cpp_demangle_read_offset(struct cpp_demangle_data *); -static int cpp_demangle_read_offset_number(struct cpp_demangle_data *); -static int cpp_demangle_read_pointer_to_member(struct cpp_demangle_data *, - struct vector_type_qualifier *); static int cpp_demangle_read_sname(struct cpp_demangle_data *); static int cpp_demangle_read_subst(struct cpp_demangle_data *); -static int cpp_demangle_read_subst_std(struct cpp_demangle_data *); -static int cpp_demangle_read_subst_stdtmpl(struct cpp_demangle_data *, - const char *); -static int cpp_demangle_read_tmpl_arg(struct cpp_demangle_data *); -static int cpp_demangle_read_tmpl_args(struct cpp_demangle_data *); -static int cpp_demangle_read_tmpl_param(struct cpp_demangle_data *); static int cpp_demangle_read_type(struct cpp_demangle_data *, struct type_delimit *); -static int cpp_demangle_read_type_flat(struct cpp_demangle_data *, char **); -static int cpp_demangle_read_uqname(struct cpp_demangle_data *); -static int cpp_demangle_read_v_offset(struct cpp_demangle_data *); -static struct read_cmd_item *vector_read_cmd_find(struct vector_read_cmd *, - enum read_cmd); -static int vector_read_cmd_push(struct cpp_demangle_data *, - struct vector_read_cmd *, enum read_cmd, void *); -static int vector_type_qualifier_init(struct cpp_demangle_data *, - struct vector_type_qualifier *); -static int vector_type_qualifier_push(struct cpp_demangle_data *, - struct vector_type_qualifier *, enum type_qualifier); static void * alloc(struct cpp_demangle_data *h, int a, size_t n) @@ -1431,6 +1397,646 @@ cpp_demangle_read_expr_primary(struct cpp_demangle_data *ddata) } } +/* + * Read local source name. + * + * References: + * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31775 + * http://gcc.gnu.org/viewcvs?view=rev&revision=124467 + */ +static int +cpp_demangle_local_source_name(struct cpp_demangle_data *ddata) +{ + /* L */ + if (!ddata || *ddata->cur != 'L') + return 0; + ++ddata->cur; + + /* source name */ + if (!cpp_demangle_read_sname(ddata)) + return 0; + + /* discriminator */ + if (*ddata->cur == '_') { + ++ddata->cur; + while (ELFTC_ISDIGIT(*ddata->cur)) + ++ddata->cur; + } + + return 1; +} + +/* + * read unqualified-name, unqualified name are operator-name, ctor-dtor-name, + * source-name + */ +static int +cpp_demangle_read_uqname(struct cpp_demangle_data *ddata) +{ + size_t len; + + if (!ddata || *ddata->cur == '\0') + return 0; + + /* operator name */ + switch (SIMPLE_HASH(*ddata->cur, *(ddata->cur + 1))) { + case SIMPLE_HASH('a', 'a'): + /* operator && */ + if (!DEM_PUSH_STR(ddata, "operator&&")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('a', 'd'): + /* operator & (unary) */ + if (!DEM_PUSH_STR(ddata, "operator&")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('a', 'n'): + /* operator & */ + if (!DEM_PUSH_STR(ddata, "operator&")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('a', 'N'): + /* operator &= */ + if (!DEM_PUSH_STR(ddata, "operator&=")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('a', 'S'): + /* operator = */ + if (!DEM_PUSH_STR(ddata, "operator=")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('c', 'l'): + /* operator () */ + if (!DEM_PUSH_STR(ddata, "operator()")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('c', 'm'): + /* operator , */ + if (!DEM_PUSH_STR(ddata, "operator,")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('c', 'o'): + /* operator ~ */ + if (!DEM_PUSH_STR(ddata, "operator~")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('c', 'v'): + /* operator (cast) */ + if (!DEM_PUSH_STR(ddata, "operator(cast)")) + return 0; + ddata->cur += 2; + return cpp_demangle_read_type(ddata, NULL); + + case SIMPLE_HASH('d', 'a'): + /* operator delete [] */ + if (!DEM_PUSH_STR(ddata, "operator delete []")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('d', 'e'): + /* operator * (unary) */ + if (!DEM_PUSH_STR(ddata, "operator*")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('d', 'l'): + /* operator delete */ + if (!DEM_PUSH_STR(ddata, "operator delete")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('d', 'v'): + /* operator / */ + if (!DEM_PUSH_STR(ddata, "operator/")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('d', 'V'): + /* operator /= */ + if (!DEM_PUSH_STR(ddata, "operator/=")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('e', 'o'): + /* operator ^ */ + if (!DEM_PUSH_STR(ddata, "operator^")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('e', 'O'): + /* operator ^= */ + if (!DEM_PUSH_STR(ddata, "operator^=")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('e', 'q'): + /* operator == */ + if (!DEM_PUSH_STR(ddata, "operator==")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('g', 'e'): + /* operator >= */ + if (!DEM_PUSH_STR(ddata, "operator>=")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('g', 't'): + /* operator > */ + if (!DEM_PUSH_STR(ddata, "operator>")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('i', 'x'): + /* operator [] */ + if (!DEM_PUSH_STR(ddata, "operator[]")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('l', 'e'): + /* operator <= */ + if (!DEM_PUSH_STR(ddata, "operator<=")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('l', 's'): + /* operator << */ + if (!DEM_PUSH_STR(ddata, "operator<<")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('l', 'S'): + /* operator <<= */ + if (!DEM_PUSH_STR(ddata, "operator<<=")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('l', 't'): + /* operator < */ + if (!DEM_PUSH_STR(ddata, "operator<")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('m', 'i'): + /* operator - */ + if (!DEM_PUSH_STR(ddata, "operator-")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('m', 'I'): + /* operator -= */ + if (!DEM_PUSH_STR(ddata, "operator-=")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('m', 'l'): + /* operator * */ + if (!DEM_PUSH_STR(ddata, "operator*")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('m', 'L'): + /* operator *= */ + if (!DEM_PUSH_STR(ddata, "operator*=")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('m', 'm'): + /* operator -- */ + if (!DEM_PUSH_STR(ddata, "operator--")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('n', 'a'): + /* operator new[] */ + if (!DEM_PUSH_STR(ddata, "operator new []")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('n', 'e'): + /* operator != */ + if (!DEM_PUSH_STR(ddata, "operator!=")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('n', 'g'): + /* operator - (unary) */ + if (!DEM_PUSH_STR(ddata, "operator-")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('n', 't'): + /* operator ! */ + if (!DEM_PUSH_STR(ddata, "operator!")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('n', 'w'): + /* operator new */ + if (!DEM_PUSH_STR(ddata, "operator new")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('o', 'o'): + /* operator || */ + if (!DEM_PUSH_STR(ddata, "operator||")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('o', 'r'): + /* operator | */ + if (!DEM_PUSH_STR(ddata, "operator|")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('o', 'R'): + /* operator |= */ + if (!DEM_PUSH_STR(ddata, "operator|=")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('p', 'l'): + /* operator + */ + if (!DEM_PUSH_STR(ddata, "operator+")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('p', 'L'): + /* operator += */ + if (!DEM_PUSH_STR(ddata, "operator+=")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('p', 'm'): + /* operator ->* */ + if (!DEM_PUSH_STR(ddata, "operator->*")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('p', 'p'): + /* operator ++ */ + if (!DEM_PUSH_STR(ddata, "operator++")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('p', 's'): + /* operator + (unary) */ + if (!DEM_PUSH_STR(ddata, "operator+")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('p', 't'): + /* operator -> */ + if (!DEM_PUSH_STR(ddata, "operator->")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('q', 'u'): + /* operator ? */ + if (!DEM_PUSH_STR(ddata, "operator?")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('r', 'm'): + /* operator % */ + if (!DEM_PUSH_STR(ddata, "operator%")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('r', 'M'): + /* operator %= */ + if (!DEM_PUSH_STR(ddata, "operator%=")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('r', 's'): + /* operator >> */ + if (!DEM_PUSH_STR(ddata, "operator>>")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('r', 'S'): + /* operator >>= */ + if (!DEM_PUSH_STR(ddata, "operator>>=")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('r', 'z'): + /* operator sizeof */ + if (!DEM_PUSH_STR(ddata, "operator sizeof ")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('s', 'r'): + /* scope resolution operator */ + if (!DEM_PUSH_STR(ddata, "scope resolution operator ")) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('s', 'v'): + /* operator sizeof */ + if (!DEM_PUSH_STR(ddata, "operator sizeof ")) + return 0; + ddata->cur += 2; + return 1; + } + + /* vendor extened operator */ + if (*ddata->cur == 'v' && ELFTC_ISDIGIT(*(ddata->cur + 1))) { + if (!DEM_PUSH_STR(ddata, "vendor extened operator ")) + return 0; + if (!cpp_demangle_push_str(ddata, ddata->cur + 1, 1)) + return 0; + ddata->cur += 2; + return cpp_demangle_read_sname(ddata); + } + + /* ctor-dtor-name */ + switch (SIMPLE_HASH(*ddata->cur, *(ddata->cur + 1))) { + case SIMPLE_HASH('C', '1'): + case SIMPLE_HASH('C', '2'): + case SIMPLE_HASH('C', '3'): + if (!ddata->last_sname) + return 0; + if (!(len = strlen(ddata->last_sname))) + return 0; + if (!DEM_PUSH_STR(ddata, "::")) + return 0; + if (!cpp_demangle_push_str(ddata, ddata->last_sname, len)) + return 0; + ddata->cur += 2; + return 1; + + case SIMPLE_HASH('D', '0'): + case SIMPLE_HASH('D', '1'): + case SIMPLE_HASH('D', '2'): + if (!ddata->last_sname) + return 0; + if (!(len = strlen(ddata->last_sname))) + return 0; + if (!DEM_PUSH_STR(ddata, "::~")) + return 0; + if (!cpp_demangle_push_str(ddata, ddata->last_sname, len)) + return 0; + ddata->cur += 2; + return 1; + } + + /* source name */ + if (ELFTC_ISDIGIT(*ddata->cur)) + return cpp_demangle_read_sname(ddata); + + /* local source name */ + if (*ddata->cur == 'L') + return cpp_demangle_local_source_name(ddata); + + return 1; +} + +static bool +cpp_demangle_strtol(long *res, const char *s, int base) +{ + int c; + long x = 0; + while ((c = kBase36[*s++ & 255]) && --c < base) + if (ckd_mul(&x, x, base) || ckd_add(&x, x, c)) + return false; + *res = x; + return true; +} + +/* + * Read template parameter that forms in 'T[number]_'. + * This function much like to read_subst but only for types. + */ +static int +cpp_demangle_read_tmpl_param(struct cpp_demangle_data *ddata) +{ + long nth; + + if (!ddata || *ddata->cur != 'T') + return 0; + + ++ddata->cur; + + if (*ddata->cur == '_') { + return cpp_demangle_get_tmpl_param(ddata, 0); + } else { + if (!cpp_demangle_strtol(&nth, ddata->cur, 36)) + return 0; + + /* T_ is first */ + ++nth; + + while (*ddata->cur != '_') + ++ddata->cur; + + ASSERT(nth > 0); + + return cpp_demangle_get_tmpl_param(ddata, nth); + } + + /* NOTREACHED */ + return 0; +} + +static int +vector_read_cmd_push(struct cpp_demangle_data *ddata, struct vector_read_cmd *v, + enum read_cmd cmd, void *data) +{ + struct read_cmd_item *tmp_r_ctn; + size_t tmp_cap; + size_t i; + + if (!v) + return 0; + + if (v->size == v->capacity) { + tmp_cap = BUFFER_GROW(v->capacity); + if (!(tmp_r_ctn = (struct read_cmd_item *)alloc(ddata, + alignof(*tmp_r_ctn), sizeof(*tmp_r_ctn) * tmp_cap))) + return 0; + for (i = 0; i < v->size; ++i) + tmp_r_ctn[i] = v->r_container[i]; + v->r_container = tmp_r_ctn; + v->capacity = tmp_cap; + } + + v->r_container[v->size].cmd = cmd; + v->r_container[v->size].data = data; + ++v->size; + + return 1; +} + +static int +cpp_demangle_read_tmpl_arg(struct cpp_demangle_data *ddata) +{ + if (!ddata || *ddata->cur == '\0') + return 0; + + switch (*ddata->cur) { + case 'L': + return cpp_demangle_read_expr_primary(ddata); + case 'X': + ++ddata->cur; + if (!cpp_demangle_read_expression(ddata)) + return 0; + return *ddata->cur++ == 'E'; + } + + return cpp_demangle_read_type(ddata, NULL); +} + +static int +cpp_demangle_read_tmpl_args(struct cpp_demangle_data *ddata) +{ + struct vector_str *v; + size_t arg_len, idx, limit; + char *arg; + + if (!ddata || *ddata->cur == '\0') + return 0; + + ++ddata->cur; + + if (!vector_read_cmd_push(ddata, &ddata->cmd, READ_TMPL, NULL)) + return 0; + + if (!DEM_PUSH_STR(ddata, "<")) + return 0; + + limit = 0; + v = ddata->cur_output; + for (;;) { + idx = v->size; + if (!cpp_demangle_read_tmpl_arg(ddata)) + return 0; + if (!(arg = vector_str_substr(ddata, v, idx, v->size - 1, + &arg_len))) + return 0; + if (!vector_str_find(&ddata->tmpl, arg, arg_len) && + !vector_str_push(ddata, &ddata->tmpl, arg, arg_len)) + return 0; + + if (*ddata->cur == 'E') { + ++ddata->cur; + if (!DEM_PUSH_STR(ddata, ">")) + return 0; + ddata->is_tmpl = true; + break; + } else if (*ddata->cur != 'I' && !DEM_PUSH_STR(ddata, ", ")) + return 0; + + if (limit++ > CPP_DEMANGLE_TRY_LIMIT) + return 0; + } + + return vector_read_cmd_pop(&ddata->cmd); +} + +static int +cpp_demangle_read_expression_trinary(struct cpp_demangle_data *ddata, + const char *name1, size_t len1, const char *name2, size_t len2) +{ + if (!ddata || !name1 || !len1 || !name2 || !len2) + return 0; + + if (!cpp_demangle_read_expression(ddata)) + return 0; + if (!cpp_demangle_push_str(ddata, name1, len1)) + return 0; + if (!cpp_demangle_read_expression(ddata)) + return 0; + if (!cpp_demangle_push_str(ddata, name2, len2)) + return 0; + + return cpp_demangle_read_expression(ddata); +} + +static int +cpp_demangle_read_expression_unary(struct cpp_demangle_data *ddata, + const char *name, size_t len) +{ + if (!ddata || !name || !len) + return 0; + if (!cpp_demangle_read_expression(ddata)) + return 0; + + return cpp_demangle_push_str(ddata, name, len); +} + +static int +cpp_demangle_read_expression_binary(struct cpp_demangle_data *ddata, + const char *name, size_t len) +{ + if (!ddata || !name || !len) + return 0; + if (!cpp_demangle_read_expression(ddata)) + return 0; + if (!cpp_demangle_push_str(ddata, name, len)) + return 0; + + return cpp_demangle_read_expression(ddata); +} + static int cpp_demangle_read_expression(struct cpp_demangle_data *ddata) { @@ -1743,49 +2349,43 @@ cpp_demangle_read_expression_flat(struct cpp_demangle_data *ddata, char **str) return 1; } +/* size, capacity, ext_name */ static int -cpp_demangle_read_expression_binary(struct cpp_demangle_data *ddata, - const char *name, size_t len) +vector_type_qualifier_init(struct cpp_demangle_data *ddata, + struct vector_type_qualifier *v) { - if (!ddata || !name || !len) - return 0; - if (!cpp_demangle_read_expression(ddata)) - return 0; - if (!cpp_demangle_push_str(ddata, name, len)) + if (!v) return 0; - return cpp_demangle_read_expression(ddata); + v->size = 0; + v->capacity = VECTOR_DEF_CAPACITY; + + if (!(v->q_container = (enum type_qualifier *)alloc(ddata, + alignof(enum type_qualifier), + sizeof(enum type_qualifier) * v->capacity))) + return 0; + + ASSERT(v->q_container); + + if (!vector_str_init(ddata, &v->ext_name)) + return 0; + + return 1; } -static int -cpp_demangle_read_expression_unary(struct cpp_demangle_data *ddata, - const char *name, size_t len) +static struct read_cmd_item * +vector_read_cmd_find(struct vector_read_cmd *v, enum read_cmd dst) { - if (!ddata || !name || !len) - return 0; - if (!cpp_demangle_read_expression(ddata)) + int i; + + if (!v || dst == READ_FAIL) return 0; - return cpp_demangle_push_str(ddata, name, len); -} + for (i = (int)v->size - 1; i >= 0; i--) + if (v->r_container[i].cmd == dst) + return &v->r_container[i]; -static int -cpp_demangle_read_expression_trinary(struct cpp_demangle_data *ddata, - const char *name1, size_t len1, const char *name2, size_t len2) -{ - if (!ddata || !name1 || !len1 || !name2 || !len2) - return 0; - - if (!cpp_demangle_read_expression(ddata)) - return 0; - if (!cpp_demangle_push_str(ddata, name1, len1)) - return 0; - if (!cpp_demangle_read_expression(ddata)) - return 0; - if (!cpp_demangle_push_str(ddata, name2, len2)) - return 0; - - return cpp_demangle_read_expression(ddata); + return 0; } static int @@ -1925,6 +2525,171 @@ cpp_demangle_read_function(struct cpp_demangle_data *ddata, int *ext_c, return 1; } +static int +cpp_demangle_read_offset_number(struct cpp_demangle_data *ddata) +{ + bool negative; + const char *start; + + if (!ddata || *ddata->cur == '\0') + return 0; + + /* offset could be negative */ + if (*ddata->cur == 'n') { + negative = true; + start = ddata->cur + 1; + } else { + negative = false; + start = ddata->cur; + } + + while (*ddata->cur != '_') + ++ddata->cur; + + if (negative && !DEM_PUSH_STR(ddata, "-")) + return 0; + + ASSERT(start); + + if (!cpp_demangle_push_str(ddata, start, ddata->cur - start)) + return 0; + if (!DEM_PUSH_STR(ddata, " ")) + return 0; + + ++ddata->cur; + + return 1; +} + +static int +cpp_demangle_read_nv_offset(struct cpp_demangle_data *ddata) +{ + if (!ddata) + return 0; + + if (!DEM_PUSH_STR(ddata, "offset : ")) + return 0; + + return cpp_demangle_read_offset_number(ddata); +} + +static int +cpp_demangle_read_v_offset(struct cpp_demangle_data *ddata) +{ + if (!ddata) + return 0; + + if (!DEM_PUSH_STR(ddata, "offset : ")) + return 0; + + if (!cpp_demangle_read_offset_number(ddata)) + return 0; + + if (!DEM_PUSH_STR(ddata, "virtual offset : ")) + return 0; + + return !cpp_demangle_read_offset_number(ddata); +} + +/* read offset, offset are nv-offset, v-offset */ +static int +cpp_demangle_read_offset(struct cpp_demangle_data *ddata) +{ + if (!ddata) + return 0; + + if (*ddata->cur == 'h') { + ++ddata->cur; + return cpp_demangle_read_nv_offset(ddata); + } else if (*ddata->cur == 'v') { + ++ddata->cur; + return cpp_demangle_read_v_offset(ddata); + } + + return 0; +} + +static int +cpp_demangle_read_type_flat(struct cpp_demangle_data *ddata, char **str) +{ + struct vector_str *output; + size_t i, p_idx, idx, type_len; + char *type; + + output = ddata->cur_output; + + p_idx = output->size; + + if (!cpp_demangle_read_type(ddata, NULL)) + return 0; + + if (!(type = vector_str_substr(ddata, output, p_idx, output->size - 1, + &type_len))) + return 0; + + idx = output->size; + for (i = p_idx; i < idx; ++i) + if (!vector_str_pop(output)) + return 0; + + *str = type; + + return 1; +} + +/* + * read number + * number ::= [n] + */ +static int +cpp_demangle_read_number(struct cpp_demangle_data *ddata, long *rtn) +{ + long len, negative_factor; + + if (!ddata || !rtn) + return 0; + + negative_factor = 1; + if (*ddata->cur == 'n') { + negative_factor = -1; + + ++ddata->cur; + } + if (!ELFTC_ISDIGIT(*ddata->cur)) + return 0; + + if (!cpp_demangle_strtol(&len, ddata->cur, 10)) + return 0; + + while (ELFTC_ISDIGIT(*ddata->cur)) + ++ddata->cur; + + ASSERT(len >= 0); + ASSERT(negative_factor == 1 || negative_factor == -1); + + *rtn = len * negative_factor; + + return 1; +} + +static int +cpp_demangle_read_number_as_string(struct cpp_demangle_data *ddata, char **str) +{ + long n; + char buf[21]; + + if (!cpp_demangle_read_number(ddata, &n)) { + *str = NULL; + return 0; + } + + FormatInt64(buf, n); + if (!(*str = dupstr(ddata, buf))) + return 0; + + return 1; +} + /* read encoding, encoding are function name, data name, special-name */ static int cpp_demangle_read_encoding(struct cpp_demangle_data *ddata) @@ -2209,117 +2974,6 @@ cpp_demangle_read_local_name(struct cpp_demangle_data *ddata) return 1; } -static int -cpp_demangle_read_name(struct cpp_demangle_data *ddata) -{ - struct stack_str v; - struct vector_str *output; - size_t p_idx, subst_str_len; - char *subst_str; - - if (!ddata || *ddata->cur == '\0') - return 0; - - output = ddata->cur_output; - - subst_str = NULL; - - switch (*ddata->cur) { - case 'S': - return cpp_demangle_read_subst(ddata); - case 'N': - return cpp_demangle_read_nested_name(ddata); - case 'Z': - return cpp_demangle_read_local_name(ddata); - } - - stack_str_init(&v); - - p_idx = output->size; - if (!cpp_demangle_read_uqname(ddata)) - return 0; - if (!(subst_str = vector_str_substr(ddata, output, p_idx, - output->size - 1, &subst_str_len))) - return 0; - if (subst_str_len > 8 && strstr(subst_str, "operator")) - return 1; - if (!stack_str_append(ddata, &v, subst_str, subst_str_len)) - return 0; - if (!cpp_demangle_push_subst(ddata, v.str, v.len)) - return 0; - - if (*ddata->cur == 'I') { - p_idx = output->size; - if (!cpp_demangle_read_tmpl_args(ddata)) - return 0; - if (!(subst_str = vector_str_substr(ddata, output, p_idx, - output->size - 1, &subst_str_len))) - return 0; - if (!stack_str_append(ddata, &v, subst_str, subst_str_len)) - return 0; - if (!cpp_demangle_push_subst(ddata, v.str, v.len)) - return 0; - } - - return 1; -} - -static int -cpp_demangle_read_type_flat(struct cpp_demangle_data *ddata, char **str) -{ - struct vector_str *output; - size_t i, p_idx, idx, type_len; - char *type; - - output = ddata->cur_output; - - p_idx = output->size; - - if (!cpp_demangle_read_type(ddata, NULL)) - return 0; - - if (!(type = vector_str_substr(ddata, output, p_idx, output->size - 1, - &type_len))) - return 0; - - idx = output->size; - for (i = p_idx; i < idx; ++i) - if (!vector_str_pop(output)) - return 0; - - *str = type; - - return 1; -} - -static int -cpp_demangle_read_name_flat(struct cpp_demangle_data *ddata, char **str) -{ - struct vector_str *output; - size_t i, p_idx, idx, name_len; - char *name; - - output = ddata->cur_output; - - p_idx = output->size; - - if (!cpp_demangle_read_name(ddata)) - return 0; - - if (!(name = vector_str_substr(ddata, output, p_idx, output->size - 1, - &name_len))) - return 0; - - idx = output->size; - for (i = p_idx; i < idx; ++i) - if (!vector_str_pop(output)) - return 0; - - *str = name; - - return 1; -} - static int cpp_demangle_read_nested_name(struct cpp_demangle_data *ddata) { @@ -2409,133 +3063,85 @@ next: return 1; } -static bool -cpp_demangle_strtol(long *res, const char *s, int base) -{ - int c; - long x = 0; - while ((c = kBase36[*s++ & 255]) && --c < base) - if (ckd_mul(&x, x, base) || ckd_add(&x, x, c)) - return false; - *res = x; - return true; -} - -/* - * read number - * number ::= [n] - */ static int -cpp_demangle_read_number(struct cpp_demangle_data *ddata, long *rtn) +cpp_demangle_read_name(struct cpp_demangle_data *ddata) { - long len, negative_factor; - - if (!ddata || !rtn) - return 0; - - negative_factor = 1; - if (*ddata->cur == 'n') { - negative_factor = -1; - - ++ddata->cur; - } - if (!ELFTC_ISDIGIT(*ddata->cur)) - return 0; - - if (!cpp_demangle_strtol(&len, ddata->cur, 10)) - return 0; - - while (ELFTC_ISDIGIT(*ddata->cur)) - ++ddata->cur; - - ASSERT(len >= 0); - ASSERT(negative_factor == 1 || negative_factor == -1); - - *rtn = len * negative_factor; - - return 1; -} - -static int -cpp_demangle_read_number_as_string(struct cpp_demangle_data *ddata, char **str) -{ - long n; - char buf[21]; - - if (!cpp_demangle_read_number(ddata, &n)) { - *str = NULL; - return 0; - } - - FormatInt64(buf, n); - if (!(*str = dupstr(ddata, buf))) - return 0; - - return 1; -} - -static int -cpp_demangle_read_nv_offset(struct cpp_demangle_data *ddata) -{ - if (!ddata) - return 0; - - if (!DEM_PUSH_STR(ddata, "offset : ")) - return 0; - - return cpp_demangle_read_offset_number(ddata); -} - -/* read offset, offset are nv-offset, v-offset */ -static int -cpp_demangle_read_offset(struct cpp_demangle_data *ddata) -{ - if (!ddata) - return 0; - - if (*ddata->cur == 'h') { - ++ddata->cur; - return cpp_demangle_read_nv_offset(ddata); - } else if (*ddata->cur == 'v') { - ++ddata->cur; - return cpp_demangle_read_v_offset(ddata); - } - - return 0; -} - -static int -cpp_demangle_read_offset_number(struct cpp_demangle_data *ddata) -{ - bool negative; - const char *start; + struct stack_str v; + struct vector_str *output; + size_t p_idx, subst_str_len; + char *subst_str; if (!ddata || *ddata->cur == '\0') return 0; - /* offset could be negative */ - if (*ddata->cur == 'n') { - negative = true; - start = ddata->cur + 1; - } else { - negative = false; - start = ddata->cur; + output = ddata->cur_output; + + subst_str = NULL; + + switch (*ddata->cur) { + case 'S': + return cpp_demangle_read_subst(ddata); + case 'N': + return cpp_demangle_read_nested_name(ddata); + case 'Z': + return cpp_demangle_read_local_name(ddata); } - while (*ddata->cur != '_') - ++ddata->cur; + stack_str_init(&v); - if (negative && !DEM_PUSH_STR(ddata, "-")) + p_idx = output->size; + if (!cpp_demangle_read_uqname(ddata)) + return 0; + if (!(subst_str = vector_str_substr(ddata, output, p_idx, + output->size - 1, &subst_str_len))) + return 0; + if (subst_str_len > 8 && strstr(subst_str, "operator")) + return 1; + if (!stack_str_append(ddata, &v, subst_str, subst_str_len)) + return 0; + if (!cpp_demangle_push_subst(ddata, v.str, v.len)) return 0; - ASSERT(start); + if (*ddata->cur == 'I') { + p_idx = output->size; + if (!cpp_demangle_read_tmpl_args(ddata)) + return 0; + if (!(subst_str = vector_str_substr(ddata, output, p_idx, + output->size - 1, &subst_str_len))) + return 0; + if (!stack_str_append(ddata, &v, subst_str, subst_str_len)) + return 0; + if (!cpp_demangle_push_subst(ddata, v.str, v.len)) + return 0; + } - if (!cpp_demangle_push_str(ddata, start, ddata->cur - start)) - return 0; - if (!DEM_PUSH_STR(ddata, " ")) + return 1; +} + +static int +cpp_demangle_read_name_flat(struct cpp_demangle_data *ddata, char **str) +{ + struct vector_str *output; + size_t i, p_idx, idx, name_len; + char *name; + + output = ddata->cur_output; + + p_idx = output->size; + + if (!cpp_demangle_read_name(ddata)) return 0; - ++ddata->cur; + if (!(name = vector_str_substr(ddata, output, p_idx, output->size - 1, + &name_len))) + return 0; + + idx = output->size; + for (i = p_idx; i < idx; ++i) + if (!vector_str_pop(output)) + return 0; + + *str = name; return 1; } @@ -2628,6 +3234,100 @@ cpp_demangle_read_sname(struct cpp_demangle_data *ddata) return 1; } +static int +cpp_demangle_read_subst_stdtmpl(struct cpp_demangle_data *ddata, + const char *str) +{ + struct vector_str *output; + size_t p_idx, substr_len, len; + char *subst_str, *substr; + + if (!ddata || !str) + return 0; + + if (!(len = strlen(str))) + return 0; + + output = ddata->cur_output; + + p_idx = output->size; + substr = NULL; + subst_str = NULL; + + if (!cpp_demangle_read_tmpl_args(ddata)) + return 0; + if (!(substr = vector_str_substr(ddata, output, p_idx, output->size - 1, + &substr_len))) + return 0; + + if (!(subst_str = (char *)alloc(ddata, alignof(char), + sizeof(char) * (substr_len + len + 1)))) + return 0; + + memcpy(subst_str, str, len); + memcpy(subst_str + len, substr, substr_len); + subst_str[substr_len + len] = '\0'; + + if (!cpp_demangle_push_subst(ddata, subst_str, substr_len + len)) + return 0; + + return 1; +} + +static int +cpp_demangle_read_subst_std(struct cpp_demangle_data *ddata) +{ + struct vector_str *output, v; + size_t p_idx, subst_str_len; + char *subst_str; + + if (!ddata) + return 0; + + if (!vector_str_init(ddata, &v)) + return 0; + + subst_str = NULL; + if (!DEM_PUSH_STR(ddata, "std::")) + return 0; + + if (!VEC_PUSH_STR(&v, "std::")) + return 0; + + ddata->cur += 2; + + output = ddata->cur_output; + + p_idx = output->size; + if (!cpp_demangle_read_uqname(ddata)) + return 0; + + if (!(subst_str = vector_str_substr(ddata, output, p_idx, + output->size - 1, &subst_str_len))) + return 0; + + if (!vector_str_push(ddata, &v, subst_str, subst_str_len)) + return 0; + + if (!cpp_demangle_push_subst_v(ddata, &v)) + return 0; + + if (*ddata->cur == 'I') { + p_idx = output->size; + if (!cpp_demangle_read_tmpl_args(ddata)) + return 0; + if (!(subst_str = vector_str_substr(ddata, output, p_idx, + output->size - 1, &subst_str_len))) + return 0; + if (!vector_str_push(ddata, &v, subst_str, subst_str_len)) + return 0; + if (!cpp_demangle_push_subst_v(ddata, &v)) + return 0; + } + + return 1; +} + static int cpp_demangle_read_subst(struct cpp_demangle_data *ddata) { @@ -2757,200 +3457,34 @@ cpp_demangle_read_subst(struct cpp_demangle_data *ddata) } static int -cpp_demangle_read_subst_std(struct cpp_demangle_data *ddata) +vector_type_qualifier_push(struct cpp_demangle_data *ddata, + struct vector_type_qualifier *v, enum type_qualifier t) { - struct vector_str *output, v; - size_t p_idx, subst_str_len; - char *subst_str; + enum type_qualifier *tmp_ctn; + size_t tmp_cap; + size_t i; - if (!ddata) + if (!v) return 0; - if (!vector_str_init(ddata, &v)) - return 0; - - subst_str = NULL; - if (!DEM_PUSH_STR(ddata, "std::")) - return 0; - - if (!VEC_PUSH_STR(&v, "std::")) - return 0; - - ddata->cur += 2; - - output = ddata->cur_output; - - p_idx = output->size; - if (!cpp_demangle_read_uqname(ddata)) - return 0; - - if (!(subst_str = vector_str_substr(ddata, output, p_idx, - output->size - 1, &subst_str_len))) - return 0; - - if (!vector_str_push(ddata, &v, subst_str, subst_str_len)) - return 0; - - if (!cpp_demangle_push_subst_v(ddata, &v)) - return 0; - - if (*ddata->cur == 'I') { - p_idx = output->size; - if (!cpp_demangle_read_tmpl_args(ddata)) - return 0; - if (!(subst_str = vector_str_substr(ddata, output, p_idx, - output->size - 1, &subst_str_len))) - return 0; - if (!vector_str_push(ddata, &v, subst_str, subst_str_len)) - return 0; - if (!cpp_demangle_push_subst_v(ddata, &v)) + if (v->size == v->capacity) { + tmp_cap = BUFFER_GROW(v->capacity); + if (!(tmp_ctn = (enum type_qualifier *)alloc(ddata, + alignof(enum type_qualifier), + sizeof(enum type_qualifier) * tmp_cap))) return 0; + for (i = 0; i < v->size; ++i) + tmp_ctn[i] = v->q_container[i]; + v->q_container = tmp_ctn; + v->capacity = tmp_cap; } + v->q_container[v->size] = t; + ++v->size; + return 1; } -static int -cpp_demangle_read_subst_stdtmpl(struct cpp_demangle_data *ddata, - const char *str) -{ - struct vector_str *output; - size_t p_idx, substr_len, len; - char *subst_str, *substr; - - if (!ddata || !str) - return 0; - - if (!(len = strlen(str))) - return 0; - - output = ddata->cur_output; - - p_idx = output->size; - substr = NULL; - subst_str = NULL; - - if (!cpp_demangle_read_tmpl_args(ddata)) - return 0; - if (!(substr = vector_str_substr(ddata, output, p_idx, output->size - 1, - &substr_len))) - return 0; - - if (!(subst_str = (char *)alloc(ddata, alignof(char), - sizeof(char) * (substr_len + len + 1)))) - return 0; - - memcpy(subst_str, str, len); - memcpy(subst_str + len, substr, substr_len); - subst_str[substr_len + len] = '\0'; - - if (!cpp_demangle_push_subst(ddata, subst_str, substr_len + len)) - return 0; - - return 1; -} - -static int -cpp_demangle_read_tmpl_arg(struct cpp_demangle_data *ddata) -{ - if (!ddata || *ddata->cur == '\0') - return 0; - - switch (*ddata->cur) { - case 'L': - return cpp_demangle_read_expr_primary(ddata); - case 'X': - ++ddata->cur; - if (!cpp_demangle_read_expression(ddata)) - return 0; - return *ddata->cur++ == 'E'; - } - - return cpp_demangle_read_type(ddata, NULL); -} - -static int -cpp_demangle_read_tmpl_args(struct cpp_demangle_data *ddata) -{ - struct vector_str *v; - size_t arg_len, idx, limit; - char *arg; - - if (!ddata || *ddata->cur == '\0') - return 0; - - ++ddata->cur; - - if (!vector_read_cmd_push(ddata, &ddata->cmd, READ_TMPL, NULL)) - return 0; - - if (!DEM_PUSH_STR(ddata, "<")) - return 0; - - limit = 0; - v = ddata->cur_output; - for (;;) { - idx = v->size; - if (!cpp_demangle_read_tmpl_arg(ddata)) - return 0; - if (!(arg = vector_str_substr(ddata, v, idx, v->size - 1, - &arg_len))) - return 0; - if (!vector_str_find(&ddata->tmpl, arg, arg_len) && - !vector_str_push(ddata, &ddata->tmpl, arg, arg_len)) - return 0; - - if (*ddata->cur == 'E') { - ++ddata->cur; - if (!DEM_PUSH_STR(ddata, ">")) - return 0; - ddata->is_tmpl = true; - break; - } else if (*ddata->cur != 'I' && !DEM_PUSH_STR(ddata, ", ")) - return 0; - - if (limit++ > CPP_DEMANGLE_TRY_LIMIT) - return 0; - } - - return vector_read_cmd_pop(&ddata->cmd); -} - -/* - * Read template parameter that forms in 'T[number]_'. - * This function much like to read_subst but only for types. - */ -static int -cpp_demangle_read_tmpl_param(struct cpp_demangle_data *ddata) -{ - long nth; - - if (!ddata || *ddata->cur != 'T') - return 0; - - ++ddata->cur; - - if (*ddata->cur == '_') { - return cpp_demangle_get_tmpl_param(ddata, 0); - } else { - if (!cpp_demangle_strtol(&nth, ddata->cur, 36)) - return 0; - - /* T_ is first */ - ++nth; - - while (*ddata->cur != '_') - ++ddata->cur; - - ASSERT(nth > 0); - - return cpp_demangle_get_tmpl_param(ddata, nth); - } - - /* NOTREACHED */ - return 0; -} - static int cpp_demangle_read_type(struct cpp_demangle_data *ddata, struct type_delimit *td) { @@ -3447,574 +3981,6 @@ rtn: return 1; } -/* - * read unqualified-name, unqualified name are operator-name, ctor-dtor-name, - * source-name - */ -static int -cpp_demangle_read_uqname(struct cpp_demangle_data *ddata) -{ - size_t len; - - if (!ddata || *ddata->cur == '\0') - return 0; - - /* operator name */ - switch (SIMPLE_HASH(*ddata->cur, *(ddata->cur + 1))) { - case SIMPLE_HASH('a', 'a'): - /* operator && */ - if (!DEM_PUSH_STR(ddata, "operator&&")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('a', 'd'): - /* operator & (unary) */ - if (!DEM_PUSH_STR(ddata, "operator&")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('a', 'n'): - /* operator & */ - if (!DEM_PUSH_STR(ddata, "operator&")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('a', 'N'): - /* operator &= */ - if (!DEM_PUSH_STR(ddata, "operator&=")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('a', 'S'): - /* operator = */ - if (!DEM_PUSH_STR(ddata, "operator=")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('c', 'l'): - /* operator () */ - if (!DEM_PUSH_STR(ddata, "operator()")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('c', 'm'): - /* operator , */ - if (!DEM_PUSH_STR(ddata, "operator,")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('c', 'o'): - /* operator ~ */ - if (!DEM_PUSH_STR(ddata, "operator~")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('c', 'v'): - /* operator (cast) */ - if (!DEM_PUSH_STR(ddata, "operator(cast)")) - return 0; - ddata->cur += 2; - return cpp_demangle_read_type(ddata, NULL); - - case SIMPLE_HASH('d', 'a'): - /* operator delete [] */ - if (!DEM_PUSH_STR(ddata, "operator delete []")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('d', 'e'): - /* operator * (unary) */ - if (!DEM_PUSH_STR(ddata, "operator*")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('d', 'l'): - /* operator delete */ - if (!DEM_PUSH_STR(ddata, "operator delete")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('d', 'v'): - /* operator / */ - if (!DEM_PUSH_STR(ddata, "operator/")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('d', 'V'): - /* operator /= */ - if (!DEM_PUSH_STR(ddata, "operator/=")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('e', 'o'): - /* operator ^ */ - if (!DEM_PUSH_STR(ddata, "operator^")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('e', 'O'): - /* operator ^= */ - if (!DEM_PUSH_STR(ddata, "operator^=")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('e', 'q'): - /* operator == */ - if (!DEM_PUSH_STR(ddata, "operator==")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('g', 'e'): - /* operator >= */ - if (!DEM_PUSH_STR(ddata, "operator>=")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('g', 't'): - /* operator > */ - if (!DEM_PUSH_STR(ddata, "operator>")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('i', 'x'): - /* operator [] */ - if (!DEM_PUSH_STR(ddata, "operator[]")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('l', 'e'): - /* operator <= */ - if (!DEM_PUSH_STR(ddata, "operator<=")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('l', 's'): - /* operator << */ - if (!DEM_PUSH_STR(ddata, "operator<<")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('l', 'S'): - /* operator <<= */ - if (!DEM_PUSH_STR(ddata, "operator<<=")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('l', 't'): - /* operator < */ - if (!DEM_PUSH_STR(ddata, "operator<")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('m', 'i'): - /* operator - */ - if (!DEM_PUSH_STR(ddata, "operator-")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('m', 'I'): - /* operator -= */ - if (!DEM_PUSH_STR(ddata, "operator-=")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('m', 'l'): - /* operator * */ - if (!DEM_PUSH_STR(ddata, "operator*")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('m', 'L'): - /* operator *= */ - if (!DEM_PUSH_STR(ddata, "operator*=")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('m', 'm'): - /* operator -- */ - if (!DEM_PUSH_STR(ddata, "operator--")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('n', 'a'): - /* operator new[] */ - if (!DEM_PUSH_STR(ddata, "operator new []")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('n', 'e'): - /* operator != */ - if (!DEM_PUSH_STR(ddata, "operator!=")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('n', 'g'): - /* operator - (unary) */ - if (!DEM_PUSH_STR(ddata, "operator-")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('n', 't'): - /* operator ! */ - if (!DEM_PUSH_STR(ddata, "operator!")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('n', 'w'): - /* operator new */ - if (!DEM_PUSH_STR(ddata, "operator new")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('o', 'o'): - /* operator || */ - if (!DEM_PUSH_STR(ddata, "operator||")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('o', 'r'): - /* operator | */ - if (!DEM_PUSH_STR(ddata, "operator|")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('o', 'R'): - /* operator |= */ - if (!DEM_PUSH_STR(ddata, "operator|=")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('p', 'l'): - /* operator + */ - if (!DEM_PUSH_STR(ddata, "operator+")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('p', 'L'): - /* operator += */ - if (!DEM_PUSH_STR(ddata, "operator+=")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('p', 'm'): - /* operator ->* */ - if (!DEM_PUSH_STR(ddata, "operator->*")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('p', 'p'): - /* operator ++ */ - if (!DEM_PUSH_STR(ddata, "operator++")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('p', 's'): - /* operator + (unary) */ - if (!DEM_PUSH_STR(ddata, "operator+")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('p', 't'): - /* operator -> */ - if (!DEM_PUSH_STR(ddata, "operator->")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('q', 'u'): - /* operator ? */ - if (!DEM_PUSH_STR(ddata, "operator?")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('r', 'm'): - /* operator % */ - if (!DEM_PUSH_STR(ddata, "operator%")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('r', 'M'): - /* operator %= */ - if (!DEM_PUSH_STR(ddata, "operator%=")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('r', 's'): - /* operator >> */ - if (!DEM_PUSH_STR(ddata, "operator>>")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('r', 'S'): - /* operator >>= */ - if (!DEM_PUSH_STR(ddata, "operator>>=")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('r', 'z'): - /* operator sizeof */ - if (!DEM_PUSH_STR(ddata, "operator sizeof ")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('s', 'r'): - /* scope resolution operator */ - if (!DEM_PUSH_STR(ddata, "scope resolution operator ")) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('s', 'v'): - /* operator sizeof */ - if (!DEM_PUSH_STR(ddata, "operator sizeof ")) - return 0; - ddata->cur += 2; - return 1; - } - - /* vendor extened operator */ - if (*ddata->cur == 'v' && ELFTC_ISDIGIT(*(ddata->cur + 1))) { - if (!DEM_PUSH_STR(ddata, "vendor extened operator ")) - return 0; - if (!cpp_demangle_push_str(ddata, ddata->cur + 1, 1)) - return 0; - ddata->cur += 2; - return cpp_demangle_read_sname(ddata); - } - - /* ctor-dtor-name */ - switch (SIMPLE_HASH(*ddata->cur, *(ddata->cur + 1))) { - case SIMPLE_HASH('C', '1'): - case SIMPLE_HASH('C', '2'): - case SIMPLE_HASH('C', '3'): - if (!ddata->last_sname) - return 0; - if (!(len = strlen(ddata->last_sname))) - return 0; - if (!DEM_PUSH_STR(ddata, "::")) - return 0; - if (!cpp_demangle_push_str(ddata, ddata->last_sname, len)) - return 0; - ddata->cur += 2; - return 1; - - case SIMPLE_HASH('D', '0'): - case SIMPLE_HASH('D', '1'): - case SIMPLE_HASH('D', '2'): - if (!ddata->last_sname) - return 0; - if (!(len = strlen(ddata->last_sname))) - return 0; - if (!DEM_PUSH_STR(ddata, "::~")) - return 0; - if (!cpp_demangle_push_str(ddata, ddata->last_sname, len)) - return 0; - ddata->cur += 2; - return 1; - } - - /* source name */ - if (ELFTC_ISDIGIT(*ddata->cur)) - return cpp_demangle_read_sname(ddata); - - /* local source name */ - if (*ddata->cur == 'L') - return cpp_demangle_local_source_name(ddata); - - return 1; -} - -/* - * Read local source name. - * - * References: - * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31775 - * http://gcc.gnu.org/viewcvs?view=rev&revision=124467 - */ -static int -cpp_demangle_local_source_name(struct cpp_demangle_data *ddata) -{ - /* L */ - if (!ddata || *ddata->cur != 'L') - return 0; - ++ddata->cur; - - /* source name */ - if (!cpp_demangle_read_sname(ddata)) - return 0; - - /* discriminator */ - if (*ddata->cur == '_') { - ++ddata->cur; - while (ELFTC_ISDIGIT(*ddata->cur)) - ++ddata->cur; - } - - return 1; -} - -static int -cpp_demangle_read_v_offset(struct cpp_demangle_data *ddata) -{ - if (!ddata) - return 0; - - if (!DEM_PUSH_STR(ddata, "offset : ")) - return 0; - - if (!cpp_demangle_read_offset_number(ddata)) - return 0; - - if (!DEM_PUSH_STR(ddata, "virtual offset : ")) - return 0; - - return !cpp_demangle_read_offset_number(ddata); -} - -static struct read_cmd_item * -vector_read_cmd_find(struct vector_read_cmd *v, enum read_cmd dst) -{ - int i; - - if (!v || dst == READ_FAIL) - return 0; - - for (i = (int)v->size - 1; i >= 0; i--) - if (v->r_container[i].cmd == dst) - return &v->r_container[i]; - - return 0; -} - -static int -vector_read_cmd_push(struct cpp_demangle_data *ddata, struct vector_read_cmd *v, - enum read_cmd cmd, void *data) -{ - struct read_cmd_item *tmp_r_ctn; - size_t tmp_cap; - size_t i; - - if (!v) - return 0; - - if (v->size == v->capacity) { - tmp_cap = BUFFER_GROW(v->capacity); - if (!(tmp_r_ctn = (struct read_cmd_item *)alloc(ddata, - alignof(*tmp_r_ctn), sizeof(*tmp_r_ctn) * tmp_cap))) - return 0; - for (i = 0; i < v->size; ++i) - tmp_r_ctn[i] = v->r_container[i]; - v->r_container = tmp_r_ctn; - v->capacity = tmp_cap; - } - - v->r_container[v->size].cmd = cmd; - v->r_container[v->size].data = data; - ++v->size; - - return 1; -} - -/* size, capacity, ext_name */ -static int -vector_type_qualifier_init(struct cpp_demangle_data *ddata, - struct vector_type_qualifier *v) -{ - if (!v) - return 0; - - v->size = 0; - v->capacity = VECTOR_DEF_CAPACITY; - - if (!(v->q_container = (enum type_qualifier *)alloc(ddata, - alignof(enum type_qualifier), - sizeof(enum type_qualifier) * v->capacity))) - return 0; - - ASSERT(v->q_container); - - if (!vector_str_init(ddata, &v->ext_name)) - return 0; - - return 1; -} - -static int -vector_type_qualifier_push(struct cpp_demangle_data *ddata, - struct vector_type_qualifier *v, enum type_qualifier t) -{ - enum type_qualifier *tmp_ctn; - size_t tmp_cap; - size_t i; - - if (!v) - return 0; - - if (v->size == v->capacity) { - tmp_cap = BUFFER_GROW(v->capacity); - if (!(tmp_ctn = (enum type_qualifier *)alloc(ddata, - alignof(enum type_qualifier), - sizeof(enum type_qualifier) * tmp_cap))) - return 0; - for (i = 0; i < v->size; ++i) - tmp_ctn[i] = v->q_container[i]; - v->q_container = tmp_ctn; - v->capacity = tmp_cap; - } - - v->q_container[v->size] = t; - ++v->size; - - return 1; -} - static int cpp_demangle_copy_output(char *buf, const struct vector_str *v, size_t buflen) { diff --git a/tool/viz/basicidea.c b/tool/viz/basicidea.c index 053604a9f..e5c5d4371 100644 --- a/tool/viz/basicidea.c +++ b/tool/viz/basicidea.c @@ -18,33 +18,39 @@ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "dsp/scale/scale.h" #include "libc/calls/calls.h" -#include "libc/calls/struct/stat.h" -#include "libc/calls/struct/winsize.h" #include "libc/calls/termios.h" -#include "libc/log/log.h" -#include "libc/macros.internal.h" +#include "libc/fmt/conv.h" #include "libc/mem/mem.h" #include "libc/runtime/runtime.h" -#include "libc/str/locale.h" -#include "libc/str/str.h" -#include "libc/sysv/consts/exit.h" -#include "libc/sysv/consts/fileno.h" -#include "libc/sysv/consts/map.h" -#include "libc/sysv/consts/o.h" -#include "libc/sysv/consts/prot.h" -#include "libc/sysv/consts/termios.h" +#include "libc/stdio/stdio.h" +#include "libc/stdio/sysparam.h" +#include "third_party/getopt/getopt.internal.h" #include "third_party/stb/stb_image.h" #define SQR(X) ((X) * (X)) #define UNCUBE(x) x < 48 ? 0 : x < 115 ? 1 : (x - 35) / 40 -#define ORDIE(X) \ - do { \ - if (!(X)) \ - perror(#X), exit(1); \ - } while (0) -int want24bit_; -int wantfullsize_; +#define USAGE \ + " IMAGE...\n\ +\n\ +SYNOPSIS\n\ +\n\ + Prints Image\n\ +\n\ +FLAGS\n\ +\n\ + -? help\n\ + -t true color mode\n\ + -f print image at full size\n\ + -w INT specify printed width in pixels (or cols)\n\ + -h INT specify printed height in pixels (or rows*2)\n\ +\n" + +int FLAG_width; +int FLAG_height; +bool FLAG_true; +bool FLAG_full; +const char *prog; /** * Quantizes 24-bit RGB to xterm256 code range [16,256). @@ -58,11 +64,9 @@ int rgb2xterm256(int r, int g, int b) { qg = cube[(ig = UNCUBE(g))]; qb = cube[(ib = UNCUBE(b))]; if (SQR(qr - r) + SQR(qg - g) + SQR(qb - b) <= - SQR(ql - r) + SQR(ql - g) + SQR(ql - b)) { + SQR(ql - r) + SQR(ql - g) + SQR(ql - b)) return ir * 36 + ig * 6 + ib + 020; - } else { - return il + 0350; - } + return il + 0350; } /** @@ -72,7 +76,7 @@ void PrintImage(int yn, int xn, unsigned char rgb[yn][xn][3]) { unsigned y, x; for (y = 0; y < yn; y += 2) { for (x = 0; x < xn; ++x) { - if (want24bit_) { + if (FLAG_true) { printf("\033[48;2;%hhu;%hhu;%hhu;38;2;%hhu;%hhu;%hhum▄", rgb[y + 0][x][0], rgb[y + 0][x][1], rgb[y + 0][x][2], rgb[MIN(y + 1, yn - 1)][x][0], rgb[MIN(y + 1, yn - 1)][x][1], @@ -90,102 +94,117 @@ void PrintImage(int yn, int xn, unsigned char rgb[yn][xn][3]) { } } -/** - * Determines dimensions of teletypewriter. - */ -void GetTermSize(int *out_rows, int *out_cols) { - struct winsize ws; - ws.ws_row = 20; - ws.ws_col = 80; - tcgetwinsize(STDOUT_FILENO, &ws); - tcgetwinsize(STDIN_FILENO, &ws); - *out_rows = ws.ws_row; - *out_cols = ws.ws_col; -} - -void ReadAll(int fd, char *p, size_t n) { - ssize_t rc; - size_t got; - do { - ORDIE((rc = read(fd, p, n)) != -1); - got = rc; - if (!got && n) { - fprintf(stderr, "error: expected eof\n"); - exit(EXIT_FAILURE); - } - p += got; - n -= got; - } while (n); -} - -static void Deblinterlace(long zn, long yn, long xn, - unsigned char dst[zn][yn][xn], - const unsigned char src[yn][xn][zn]) { - long y, x, z; - for (y = 0; y < yn; ++y) { - for (x = 0; x < xn; ++x) { - for (z = 0; z < zn; ++z) { +void Deblinterlace(int zn, int yn, int xn, unsigned char dst[zn][yn][xn], + const unsigned char src[yn][xn][zn]) { + int y, x, z; + for (y = 0; y < yn; ++y) + for (x = 0; x < xn; ++x) + for (z = 0; z < zn; ++z) dst[z][y][x] = src[y][x][z]; - } - } - } } -static void Reblinterlace(long zn, long yn, long xn, - unsigned char dst[yn][xn][zn], - const unsigned char src[zn][yn][xn]) { - long y, x, z; - for (y = 0; y < yn; ++y) { - for (x = 0; x < xn; ++x) { - for (z = 0; z < zn; ++z) { +void Reblinterlace(int zn, int yn, int xn, unsigned char dst[yn][xn][zn], + const unsigned char src[zn][yn][xn]) { + int y, x, z; + for (y = 0; y < yn; ++y) + for (x = 0; x < xn; ++x) + for (z = 0; z < zn; ++z) dst[y][x][z] = src[z][y][x]; - } - } - } +} + +wontreturn void PrintUsage(int rc, int fd) { + tinyprint(fd, "usage: ", prog, USAGE, NULL); + exit(rc); } int main(int argc, char *argv[]) { - struct stat st; - void *map, *data, *data2; - int i, fd, tyn, txn, yn, xn, cn; - setlocale(LC_ALL, "C.UTF-8"); - for (i = 1; i < argc; ++i) { - if (strcmp(argv[i], "-t") == 0) { - want24bit_ = 1; - } else if (strcmp(argv[i], "-f") == 0) { - wantfullsize_ = 1; - } else { - fd = open(argv[i], O_RDONLY); - if (fd == -1) { - perror(argv[i]); - exit(1); - } - fstat(fd, &st); - map = mmap(0, st.st_size, PROT_READ, MAP_SHARED, fd, 0); - data = stbi_load_from_memory(map, st.st_size, &xn, &yn, &cn, 3); - munmap(map, st.st_size); - close(fd); - if (!wantfullsize_) { - GetTermSize(&tyn, &txn); - --tyn; - tyn *= 2; - data2 = memalign(32, 3 * yn * xn); - Deblinterlace(3, yn, xn, data2, data); - free(data); - data = memalign(32, 3 * tyn * txn); - EzGyarados(3, tyn, txn, data, 3, yn, xn, data2, 0, 3, tyn, txn, yn, xn, - 0, 0, 0, 0); - free(data2); - data2 = memalign(32, 3 * yn * xn); - Reblinterlace(3, tyn, txn, data2, data); - free(data); - data = data2; - yn = tyn; - xn = txn; - } - PrintImage(yn, xn, data); - free(data); + + // get program name + prog = argv[0]; + if (!prog) + prog = "basicidea"; + + // get flags + int opt; + while ((opt = getopt(argc, argv, "?tfw:h:")) != -1) { + switch (opt) { + case 't': + FLAG_true = true; + break; + case 'f': + FLAG_full = true; + break; + case 'w': + FLAG_width = atoi(optarg); + break; + case 'h': + FLAG_height = atoi(optarg); + break; + case '?': + PrintUsage(0, 1); + default: + PrintUsage(1, 2); } } - return 0; + if (argc == optind) { + tinyprint(2, prog, ": missing image path (pass -? for help)\n", NULL); + exit(1); + } + + // process arguments + for (int i = optind; i < argc; ++i) { + const char *path = argv[i]; + + // open image + void *data; + int cn, iyn, ixn; + if (!(data = stbi_load(path, &ixn, &iyn, &cn, 3))) { + perror(path); + exit(1); + } + + // determine size + int yn, xn; + struct winsize ws; + if (FLAG_full) { + yn = iyn; + xn = ixn; + } else if (FLAG_width > 0 || FLAG_height > 0) { + if (FLAG_width <= 0) { + yn = FLAG_height; + xn = (double)ixn / iyn * FLAG_height + .5; + } else if (FLAG_height <= 0) { + yn = (double)iyn / ixn * FLAG_width + .5; + xn = FLAG_width; + } else { + yn = FLAG_height; + xn = FLAG_width; + } + } else if (!tcgetwinsize(1, &ws)) { + yn = (ws.ws_row - 1) * 2; + xn = ws.ws_col; + } else { + yn = iyn; + xn = ixn; + } + + // scale image + if (yn != iyn || xn != ixn) { + void *data2 = memalign(32, 3l * iyn * ixn); + Deblinterlace(3, iyn, ixn, data2, data); + free(data); + data = memalign(32, 3l * yn * xn); + EzGyarados(3, yn, xn, data, 3, iyn, ixn, data2, 0, 3, yn, xn, iyn, ixn, 0, + 0, 0, 0); + free(data2); + data2 = memalign(32, 3l * yn * xn); + Reblinterlace(3, yn, xn, data2, data); + free(data); + data = data2; + } + + // print image + PrintImage(yn, xn, data); + free(data); + } } From 6cf9b9e0fcf77639ec270a1d192f5ffb0e141be8 Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Sun, 26 May 2024 15:28:03 -0700 Subject: [PATCH 071/123] Release Cosmopolitan v3.3.9 --- libc/integral/normalize.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libc/integral/normalize.inc b/libc/integral/normalize.inc index 44684d19c..02ecd5d23 100644 --- a/libc/integral/normalize.inc +++ b/libc/integral/normalize.inc @@ -4,7 +4,7 @@ #define __COSMOPOLITAN_MAJOR__ 3 #define __COSMOPOLITAN_MINOR__ 3 -#define __COSMOPOLITAN_PATCH__ 8 +#define __COSMOPOLITAN_PATCH__ 9 #define __COSMOPOLITAN__ \ (100000000 * __COSMOPOLITAN_MAJOR__ + 1000000 * __COSMOPOLITAN_MINOR__ + \ __COSMOPOLITAN_PATCH__) From af3f62a71ae87134826c54628d5558deb2cc67d0 Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Sun, 26 May 2024 16:53:13 -0700 Subject: [PATCH 072/123] Ensure io requests are always capped at 0x7ffff000 This gives us the Linux behavior across platforms. Fixes #1189 --- Makefile | 2 +- libc/calls/pread.c | 7 ++- libc/calls/preadv.c | 50 +++++++++++++++++--- libc/calls/pwrite.c | 7 ++- libc/calls/pwritev.c | 54 +++++++++++++++++---- libc/calls/read.c | 7 ++- libc/calls/readv.c | 96 +++++++++++++++++++++++++++----------- libc/calls/write.c | 6 +++ libc/calls/writev.c | 94 +++++++++++++++++++++++++++---------- test/posix/fread3gb_test.c | 26 +++++++---- 10 files changed, 268 insertions(+), 81 deletions(-) diff --git a/Makefile b/Makefile index 8bbcd2b2b..c59ae71e8 100644 --- a/Makefile +++ b/Makefile @@ -133,7 +133,7 @@ endif ifneq ($(findstring aarch64,$(MODE)),) ARCH = aarch64 -HOSTS ?= pi pi5 studio freebsdarm +HOSTS ?= pi studio freebsdarm else ARCH = x86_64 HOSTS ?= freebsd rhel7 xnu openbsd netbsd win10 diff --git a/libc/calls/pread.c b/libc/calls/pread.c index c90fe6108..00de0e652 100644 --- a/libc/calls/pread.c +++ b/libc/calls/pread.c @@ -30,6 +30,7 @@ #include "libc/macros.internal.h" #include "libc/runtime/runtime.h" #include "libc/runtime/zipos.internal.h" +#include "libc/stdio/sysparam.h" #include "libc/sysv/errfuns.h" /** @@ -39,7 +40,7 @@ * * @param fd is something open()'d earlier, noting pipes might not work * @param buf is copied into, cf. copy_file_range(), sendfile(), etc. - * @param size in range [1..0x7ffff000] is reasonable + * @param size is always saturated to 0x7ffff000 automatically * @param offset is bytes from start of file at which read begins * @return [1..size] bytes on success, 0 on EOF, or -1 w/ errno; with * exception of size==0, in which case return zero means no error @@ -58,6 +59,10 @@ ssize_t pread(int fd, void *buf, size_t size, int64_t offset) { ssize_t rc; BEGIN_CANCELATION_POINT; + // XNU and BSDs will EINVAL if requested bytes exceeds INT_MAX + // this is inconsistent with Linux which ignores huge requests + size = MIN(size, 0x7ffff000); + if (offset < 0) { rc = einval(); } else if (fd < 0) { diff --git a/libc/calls/preadv.c b/libc/calls/preadv.c index b0fc220dd..cad6a4ac2 100644 --- a/libc/calls/preadv.c +++ b/libc/calls/preadv.c @@ -28,24 +28,55 @@ #include "libc/intrin/likely.h" #include "libc/intrin/strace.internal.h" #include "libc/intrin/weaken.h" +#include "libc/limits.h" +#include "libc/mem/alloca.h" +#include "libc/runtime/stack.h" #include "libc/runtime/zipos.internal.h" +#include "libc/stdckdint.h" #include "libc/sysv/errfuns.h" +static size_t SumIovecBytes(const struct iovec *iov, int iovlen) { + size_t count = 0; + for (int i = 0; i < iovlen; ++i) + if (ckd_add(&count, count, iov[i].iov_len)) + count = SIZE_MAX; + return count; +} + static ssize_t Preadv(int fd, struct iovec *iov, int iovlen, int64_t off) { int e, i; size_t got; ssize_t rc, toto; - if (fd < 0) { + if (fd < 0) return ebadf(); - } - - if (iovlen < 0) { + if (iovlen < 0) return einval(); - } - - if (IsAsan() && !__asan_is_valid_iov(iov, iovlen)) { + if (IsAsan() && !__asan_is_valid_iov(iov, iovlen)) return efault(); + + // XNU and BSDs will EINVAL if requested bytes exceeds INT_MAX + // this is inconsistent with Linux which ignores huge requests + if (!IsLinux()) { + size_t sum, remain = 0x7ffff000; + if ((sum = SumIovecBytes(iov, iovlen)) > remain) { + struct iovec *iov2; +#pragma GCC push_options +#pragma GCC diagnostic ignored "-Walloca-larger-than=" + iov2 = alloca(iovlen * sizeof(struct iovec)); + CheckLargeStackAllocation(iov2, iovlen * sizeof(struct iovec)); +#pragma GCC pop_options + for (int i = 0; i < iovlen; ++i) { + iov2[i] = iov[i]; + if (remain >= iov2[i].iov_len) { + remain -= iov2[i].iov_len; + } else { + iov2[i].iov_len = remain; + remain = 0; + } + } + iov = iov2; + } } if (fd < g_fds.n && g_fds.p[fd].kind == kFdZip) { @@ -112,6 +143,11 @@ static ssize_t Preadv(int fd, struct iovec *iov, int iovlen, int64_t off) { /** * Reads with maximum generality. * + * It's possible for file write request to be partially completed. For + * example, if the sum of `iov` lengths exceeds 0x7ffff000 then bytes + * beyond that will be ignored. This is a Linux behavior that Cosmo + * polyfills across platforms. + * * @return number of bytes actually read, or -1 w/ errno * @cancelationpoint * @asyncsignalsafe diff --git a/libc/calls/pwrite.c b/libc/calls/pwrite.c index 472472c6d..8bf05ac53 100644 --- a/libc/calls/pwrite.c +++ b/libc/calls/pwrite.c @@ -28,6 +28,7 @@ #include "libc/intrin/asan.internal.h" #include "libc/intrin/strace.internal.h" #include "libc/macros.internal.h" +#include "libc/stdio/sysparam.h" #include "libc/sysv/errfuns.h" /** @@ -37,7 +38,7 @@ * * @param fd is something open()'d earlier, noting pipes might not work * @param buf is copied from, cf. copy_file_range(), sendfile(), etc. - * @param size in range [1..0x7ffff000] is reasonable + * @param size is always saturated to 0x7ffff000 automatically * @param offset is bytes from start of file at which write begins, * which can exceed or overlap the end of file, in which case your * file will be extended @@ -53,6 +54,10 @@ ssize_t pwrite(int fd, const void *buf, size_t size, int64_t offset) { size_t wrote; BEGIN_CANCELATION_POINT; + // XNU and BSDs will EINVAL if requested bytes exceeds INT_MAX + // this is inconsistent with Linux which ignores huge requests + size = MIN(size, 0x7ffff000); + if (offset < 0) { rc = einval(); } else if (fd == -1) { diff --git a/libc/calls/pwritev.c b/libc/calls/pwritev.c index fd70331fb..b53d5de64 100644 --- a/libc/calls/pwritev.c +++ b/libc/calls/pwritev.c @@ -28,28 +28,57 @@ #include "libc/intrin/likely.h" #include "libc/intrin/strace.internal.h" #include "libc/intrin/weaken.h" +#include "libc/limits.h" +#include "libc/mem/alloca.h" +#include "libc/runtime/stack.h" +#include "libc/stdckdint.h" #include "libc/sysv/errfuns.h" +static size_t SumIovecBytes(const struct iovec *iov, int iovlen) { + size_t count = 0; + for (int i = 0; i < iovlen; ++i) + if (ckd_add(&count, count, iov[i].iov_len)) + count = SIZE_MAX; + return count; +} + static ssize_t Pwritev(int fd, const struct iovec *iov, int iovlen, int64_t off) { int i, e; size_t sent; ssize_t rc, toto; - if (fd < 0) { + if (fd < 0) return ebadf(); - } - - if (iovlen < 0) { + if (iovlen < 0) return einval(); - } - - if (IsAsan() && !__asan_is_valid_iov(iov, iovlen)) { + if (IsAsan() && !__asan_is_valid_iov(iov, iovlen)) return efault(); - } - - if (fd < g_fds.n && g_fds.p[fd].kind == kFdZip) { + if (fd < g_fds.n && g_fds.p[fd].kind == kFdZip) return ebadf(); + + // XNU and BSDs will EINVAL if requested bytes exceeds INT_MAX + // this is inconsistent with Linux which ignores huge requests + if (!IsLinux()) { + size_t sum, remain = 0x7ffff000; + if ((sum = SumIovecBytes(iov, iovlen)) > remain) { + struct iovec *iov2; +#pragma GCC push_options +#pragma GCC diagnostic ignored "-Walloca-larger-than=" + iov2 = alloca(iovlen * sizeof(struct iovec)); + CheckLargeStackAllocation(iov2, iovlen * sizeof(struct iovec)); +#pragma GCC pop_options + for (int i = 0; i < iovlen; ++i) { + iov2[i] = iov[i]; + if (remain >= iov2[i].iov_len) { + remain -= iov2[i].iov_len; + } else { + iov2[i].iov_len = remain; + remain = 0; + } + } + iov = iov2; + } } if (IsWindows()) { @@ -116,6 +145,11 @@ static ssize_t Pwritev(int fd, const struct iovec *iov, int iovlen, * been committed. It can also happen if we need to polyfill this system * call using pwrite(). * + * It's possible for file write request to be partially completed. For + * example, if the sum of `iov` lengths exceeds 0x7ffff000 then bytes + * beyond that will be ignored. This is a Linux behavior that Cosmo + * polyfills across platforms. + * * @return number of bytes actually sent, or -1 w/ errno * @cancelationpoint * @asyncsignalsafe diff --git a/libc/calls/read.c b/libc/calls/read.c index 966da4b1e..389a3eead 100644 --- a/libc/calls/read.c +++ b/libc/calls/read.c @@ -29,6 +29,7 @@ #include "libc/runtime/zipos.internal.h" #include "libc/sock/internal.h" #include "libc/sock/sock.h" +#include "libc/stdio/sysparam.h" #include "libc/sysv/errfuns.h" /** @@ -41,7 +42,7 @@ * * @param fd is something open()'d earlier * @param buf is copied into, cf. copy_file_range(), sendfile(), etc. - * @param size in range [1..0x7ffff000] is reasonable + * @param size is always saturated to 0x7ffff000 automatically * @return [1..size] bytes on success, 0 on EOF, or -1 w/ errno; with * exception of size==0, in which case return zero means no error * @raise EBADF if `fd` is negative or not an open file descriptor @@ -67,6 +68,10 @@ ssize_t read(int fd, void *buf, size_t size) { ssize_t rc; BEGIN_CANCELATION_POINT; + // XNU and BSDs will EINVAL if requested bytes exceeds INT_MAX + // this is inconsistent with Linux which ignores huge requests + size = MIN(size, 0x7ffff000); + if (fd < 0) { rc = ebadf(); } else if ((!buf && size) || (IsAsan() && !__asan_is_valid(buf, size))) { diff --git a/libc/calls/readv.c b/libc/calls/readv.c index f142673e6..994242d74 100644 --- a/libc/calls/readv.c +++ b/libc/calls/readv.c @@ -28,10 +28,74 @@ #include "libc/intrin/likely.h" #include "libc/intrin/strace.internal.h" #include "libc/intrin/weaken.h" +#include "libc/limits.h" +#include "libc/mem/alloca.h" +#include "libc/runtime/stack.h" #include "libc/runtime/zipos.internal.h" #include "libc/sock/internal.h" +#include "libc/stdckdint.h" #include "libc/sysv/errfuns.h" +static size_t SumIovecBytes(const struct iovec *iov, int iovlen) { + size_t count = 0; + for (int i = 0; i < iovlen; ++i) + if (ckd_add(&count, count, iov[i].iov_len)) + count = SIZE_MAX; + return count; +} + +static ssize_t readv_impl(int fd, const struct iovec *iov, int iovlen) { + if (fd < 0) + return ebadf(); + if (iovlen < 0) + return einval(); + if (IsAsan() && !__asan_is_valid_iov(iov, iovlen)) + return efault(); + + // XNU and BSDs will EINVAL if requested bytes exceeds INT_MAX + // this is inconsistent with Linux which ignores huge requests + if (!IsLinux()) { + size_t sum, remain = 0x7ffff000; + if ((sum = SumIovecBytes(iov, iovlen)) > remain) { + struct iovec *iov2; +#pragma GCC push_options +#pragma GCC diagnostic ignored "-Walloca-larger-than=" + iov2 = alloca(iovlen * sizeof(struct iovec)); + CheckLargeStackAllocation(iov2, iovlen * sizeof(struct iovec)); +#pragma GCC pop_options + for (int i = 0; i < iovlen; ++i) { + iov2[i] = iov[i]; + if (remain >= iov2[i].iov_len) { + remain -= iov2[i].iov_len; + } else { + iov2[i].iov_len = remain; + remain = 0; + } + } + iov = iov2; + } + } + + if (fd < g_fds.n && g_fds.p[fd].kind == kFdZip) { + return _weaken(__zipos_read)( + (struct ZiposHandle *)(intptr_t)g_fds.p[fd].handle, iov, iovlen, -1); + } else if (IsLinux() || IsXnu() || IsFreebsd() || IsOpenbsd() || IsNetbsd()) { + if (iovlen == 1) { + return sys_read(fd, iov[0].iov_base, iov[0].iov_len); + } else { + return sys_readv(fd, iov, iovlen); + } + } else if (fd >= g_fds.n) { + return ebadf(); + } else if (IsMetal()) { + return sys_readv_metal(fd, iov, iovlen); + } else if (IsWindows()) { + return sys_readv_nt(fd, iov, iovlen); + } else { + return enosys(); + } +} + /** * Reads data to multiple buffers. * @@ -42,6 +106,11 @@ * be passed to the kernel as read() instead. This yields a 100 cycle * performance boost in the case of a single small iovec. * + * It's possible for file write request to be partially completed. For + * example, if the sum of `iov` lengths exceeds 0x7ffff000 then bytes + * beyond that will be ignored. This is a Linux behavior that Cosmo + * polyfills across platforms. + * * @return number of bytes actually read, or -1 w/ errno * @cancelationpoint * @restartable @@ -49,32 +118,7 @@ ssize_t readv(int fd, const struct iovec *iov, int iovlen) { ssize_t rc; BEGIN_CANCELATION_POINT; - - if (fd < 0) { - rc = ebadf(); - } else if (iovlen < 0) { - rc = einval(); - } else if (IsAsan() && !__asan_is_valid_iov(iov, iovlen)) { - rc = efault(); - } else if (fd < g_fds.n && g_fds.p[fd].kind == kFdZip) { - rc = _weaken(__zipos_read)( - (struct ZiposHandle *)(intptr_t)g_fds.p[fd].handle, iov, iovlen, -1); - } else if (IsLinux() || IsXnu() || IsFreebsd() || IsOpenbsd() || IsNetbsd()) { - if (iovlen == 1) { - rc = sys_read(fd, iov[0].iov_base, iov[0].iov_len); - } else { - rc = sys_readv(fd, iov, iovlen); - } - } else if (fd >= g_fds.n) { - rc = ebadf(); - } else if (IsMetal()) { - rc = sys_readv_metal(fd, iov, iovlen); - } else if (IsWindows()) { - rc = sys_readv_nt(fd, iov, iovlen); - } else { - rc = enosys(); - } - + rc = readv_impl(fd, iov, iovlen); END_CANCELATION_POINT; STRACE("readv(%d, [%s], %d) → %'ld% m", fd, DescribeIovec(rc, iov, iovlen), iovlen, rc); diff --git a/libc/calls/write.c b/libc/calls/write.c index 776c97d61..9ed622ebe 100644 --- a/libc/calls/write.c +++ b/libc/calls/write.c @@ -27,6 +27,7 @@ #include "libc/intrin/weaken.h" #include "libc/runtime/zipos.internal.h" #include "libc/sock/sock.h" +#include "libc/stdio/sysparam.h" #include "libc/sysv/errfuns.h" /** @@ -39,6 +40,7 @@ * * @param fd is open file descriptor * @param buf is copied from, cf. copy_file_range(), sendfile(), etc. + * @param size is always saturated to 0x7ffff000 automatically * @return [1..size] bytes on success, or -1 w/ errno; noting zero is * impossible unless size was passed as zero to do an error check * @raise EBADF if `fd` is negative or not an open file descriptor @@ -68,6 +70,10 @@ ssize_t write(int fd, const void *buf, size_t size) { ssize_t rc; BEGIN_CANCELATION_POINT; + // XNU and BSDs will EINVAL if requested bytes exceeds INT_MAX + // this is inconsistent with Linux which ignores huge requests + size = MIN(size, 0x7ffff000); + if (fd < 0) { rc = ebadf(); } else if (IsAsan() && !__asan_is_valid(buf, size)) { diff --git a/libc/calls/writev.c b/libc/calls/writev.c index 9e624c702..b21105315 100644 --- a/libc/calls/writev.c +++ b/libc/calls/writev.c @@ -27,8 +27,71 @@ #include "libc/intrin/likely.h" #include "libc/intrin/strace.internal.h" #include "libc/intrin/weaken.h" +#include "libc/limits.h" +#include "libc/runtime/stack.h" #include "libc/sock/internal.h" +#include "libc/stdckdint.h" #include "libc/sysv/errfuns.h" +#include "libc/vga/vga.internal.h" + +static size_t SumIovecBytes(const struct iovec *iov, int iovlen) { + size_t count = 0; + for (int i = 0; i < iovlen; ++i) + if (ckd_add(&count, count, iov[i].iov_len)) + count = SIZE_MAX; + return count; +} + +static ssize_t writev_impl(int fd, const struct iovec *iov, int iovlen) { + if (fd < 0) + return ebadf(); + if (iovlen < 0) + return einval(); + if (IsAsan() && !__asan_is_valid_iov(iov, iovlen)) + return efault(); + if (fd < g_fds.n && g_fds.p[fd].kind == kFdZip) + return ebadf(); // posix specifies this when not open()'d for writing + + // XNU and BSDs will EINVAL if requested bytes exceeds INT_MAX + // this is inconsistent with Linux which ignores huge requests + if (!IsLinux()) { + size_t sum, remain = 0x7ffff000; + if ((sum = SumIovecBytes(iov, iovlen)) > remain) { + struct iovec *iov2; +#pragma GCC push_options +#pragma GCC diagnostic ignored "-Walloca-larger-than=" + iov2 = alloca(iovlen * sizeof(struct iovec)); + CheckLargeStackAllocation(iov2, iovlen * sizeof(struct iovec)); +#pragma GCC pop_options + for (int i = 0; i < iovlen; ++i) { + iov2[i] = iov[i]; + if (remain >= iov2[i].iov_len) { + remain -= iov2[i].iov_len; + } else { + iov2[i].iov_len = remain; + remain = 0; + } + } + iov = iov2; + } + } + + if (IsLinux() || IsXnu() || IsFreebsd() || IsOpenbsd() || IsNetbsd()) { + if (iovlen == 1) { + return sys_write(fd, iov[0].iov_base, iov[0].iov_len); + } else { + return sys_writev(fd, iov, iovlen); + } + } else if (fd >= g_fds.n) { + return ebadf(); + } else if (IsMetal()) { + return sys_writev_metal(g_fds.p + fd, iov, iovlen); + } else if (IsWindows()) { + return sys_writev_nt(fd, iov, iovlen); + } else { + return enosys(); + } +} /** * Writes data from multiple buffers. @@ -45,6 +108,11 @@ * been committed. It can also happen if we need to polyfill this system * call using write(). * + * It's possible for file write request to be partially completed. For + * example, if the sum of `iov` lengths exceeds 0x7ffff000 then bytes + * beyond that will be ignored. This is a Linux behavior that Cosmo + * polyfills across platforms. + * * @return number of bytes actually handed off, or -1 w/ errno * @cancelationpoint * @restartable @@ -52,31 +120,7 @@ ssize_t writev(int fd, const struct iovec *iov, int iovlen) { ssize_t rc; BEGIN_CANCELATION_POINT; - - if (fd < 0) { - rc = ebadf(); - } else if (iovlen < 0) { - rc = einval(); - } else if (IsAsan() && !__asan_is_valid_iov(iov, iovlen)) { - rc = efault(); - } else if (fd < g_fds.n && g_fds.p[fd].kind == kFdZip) { - rc = ebadf(); // posix specifies this when not open()'d for writing - } else if (IsLinux() || IsXnu() || IsFreebsd() || IsOpenbsd() || IsNetbsd()) { - if (iovlen == 1) { - rc = sys_write(fd, iov[0].iov_base, iov[0].iov_len); - } else { - rc = sys_writev(fd, iov, iovlen); - } - } else if (fd >= g_fds.n) { - rc = ebadf(); - } else if (IsMetal()) { - rc = sys_writev_metal(g_fds.p + fd, iov, iovlen); - } else if (IsWindows()) { - rc = sys_writev_nt(fd, iov, iovlen); - } else { - rc = enosys(); - } - + rc = writev_impl(fd, iov, iovlen); END_CANCELATION_POINT; STRACE("writev(%d, %s, %d) → %'ld% m", fd, DescribeIovec(rc != -1 ? rc : -2, iov, iovlen), iovlen, rc); diff --git a/test/posix/fread3gb_test.c b/test/posix/fread3gb_test.c index 1167ceb1d..000ab5498 100644 --- a/test/posix/fread3gb_test.c +++ b/test/posix/fread3gb_test.c @@ -30,10 +30,14 @@ int setup(void) { return 2; if (pwrite(fd, "a", 1, 0) != 1) return 3; - if (pwrite(fd, "z", 1, SIZE - 1) != 1) + if (pwrite(fd, "b", 1, 0x7fffefff) != 1) return 4; - if (close(fd)) + if (pwrite(fd, "c", 1, 0x7ffff000) != 1) return 5; + if (pwrite(fd, "z", 1, SIZE - 1) != 1) + return 6; + if (close(fd)) + return 7; return 0; } @@ -42,17 +46,21 @@ int test(void) { char *buf; size_t rc; if (!(f = fopen(path, "r"))) - return 6; - if (!(buf = malloc(SIZE))) - return 7; - if ((rc = fread(buf, SIZE, 1, f)) != 1) return 8; - if (buf[0] != 'a') + if (!(buf = malloc(SIZE))) return 9; - if (buf[SIZE - 1] != 'z') + if ((rc = fread(buf, SIZE, 1, f)) != 1) return 10; - if (fclose(f)) + if (buf[0] != 'a') return 11; + if (buf[0x7fffefff] != 'b') + return 12; + if (buf[0x7ffff000] != 'c') + return 13; + if (buf[SIZE - 1] != 'z') + return 14; + if (fclose(f)) + return 15; return 0; } From c68f6599e5ef1cefc65717f4f8f8ab468f2f2645 Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Sun, 26 May 2024 17:03:22 -0700 Subject: [PATCH 073/123] Fix definition of getpeername on FreeBSD We were using the COMPAT magic number, which was recently removed. --- libc/sysv/calls/__sys_getpeername.S | 2 +- libc/sysv/consts.sh | 2 +- libc/sysv/consts/__NR_getpeername.S | 2 +- libc/sysv/syscalls.sh | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/libc/sysv/calls/__sys_getpeername.S b/libc/sysv/calls/__sys_getpeername.S index 7cfb6e348..a6df52dec 100644 --- a/libc/sysv/calls/__sys_getpeername.S +++ b/libc/sysv/calls/__sys_getpeername.S @@ -1,2 +1,2 @@ #include "libc/sysv/macros.internal.h" -.scall __sys_getpeername,0x01f01f08d201f034,205,31,141,globl,hidden +.scall __sys_getpeername,0x01f01f01f201f034,205,31,31,globl,hidden diff --git a/libc/sysv/consts.sh b/libc/sysv/consts.sh index 696b94040..d07f9941b 100755 --- a/libc/sysv/consts.sh +++ b/libc/sysv/consts.sh @@ -1598,7 +1598,7 @@ syscon nr __NR_shutdown 0x0030 0x00d2 0x2000086 0x0086 0x0086 0x0086 syscon nr __NR_bind 0x0031 0x00c8 0x2000068 0x0068 0x0068 0x0068 0x068 0xfff syscon nr __NR_listen 0x0032 0x00c9 0x200006a 0x006a 0x006a 0x006a 0x06a 0xfff syscon nr __NR_getsockname 0x0033 0x00cc 0x2000020 0x0020 0x0020 0x0020 0x020 0xfff -syscon nr __NR_getpeername 0x0034 0x00cd 0x200001f 0x001f 0x008d 0x001f 0x01f 0xfff +syscon nr __NR_getpeername 0x0034 0x00cd 0x200001f 0x001f 0x001f 0x001f 0x01f 0xfff syscon nr __NR_socketpair 0x0035 0x00c7 0x2000087 0x0087 0x0087 0x0087 0x087 0xfff syscon nr __NR_setsockopt 0x0036 0x00d0 0x2000069 0x0069 0x0069 0x0069 0x069 0xfff syscon nr __NR_getsockopt 0x0037 0x00d1 0x2000076 0x0076 0x0076 0x0076 0x076 0xfff diff --git a/libc/sysv/consts/__NR_getpeername.S b/libc/sysv/consts/__NR_getpeername.S index bdce44e1d..56650af06 100644 --- a/libc/sysv/consts/__NR_getpeername.S +++ b/libc/sysv/consts/__NR_getpeername.S @@ -1,2 +1,2 @@ #include "libc/sysv/consts/syscon.internal.h" -.syscon nr,__NR_getpeername,0x0034,0x00cd,0x200001f,0x001f,0x008d,0x001f,0x01f,0xfff +.syscon nr,__NR_getpeername,0x0034,0x00cd,0x200001f,0x001f,0x001f,0x001f,0x01f,0xfff diff --git a/libc/sysv/syscalls.sh b/libc/sysv/syscalls.sh index 7f465b163..d497dbaf7 100755 --- a/libc/sysv/syscalls.sh +++ b/libc/sysv/syscalls.sh @@ -86,7 +86,7 @@ scall sys_shutdown 0x0860860862086030 0x0d2 globl hidden scall __sys_bind 0x0680680682068031 0x0c8 globl hidden scall sys_listen 0x06a06a06a206a032 0x0c9 globl hidden scall __sys_getsockname 0x0200200202020033 0x0cc globl hidden -scall __sys_getpeername 0x01f01f08d201f034 0x0cd globl hidden +scall __sys_getpeername 0x01f01f01f201f034 0x0cd globl hidden scall __sys_socketpair 0x0870870872087035 0x0c7 globl hidden scall sys_setsockopt 0x0690690692069036 0x0d0 globl hidden scall sys_getsockopt 0x0760760762076037 0x0d1 globl hidden From 0a51241f7a3d642a5d7a2e2bfd3af353528ccf8c Mon Sep 17 00:00:00 2001 From: Gavin Hayes Date: Sun, 26 May 2024 20:54:09 -0400 Subject: [PATCH 074/123] ntspawn: fix initializing NtStartupInfoEx (#1190) --- libc/calls/ntspawn.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libc/calls/ntspawn.c b/libc/calls/ntspawn.c index 36be116dc..3cd4c8ae0 100644 --- a/libc/calls/ntspawn.c +++ b/libc/calls/ntspawn.c @@ -177,9 +177,9 @@ static textwindows int ntspawn2(struct NtSpawnArgs *a, struct SpawnBlock *sb) { if (ok) { struct NtStartupInfoEx info = { .StartupInfo = *a->lpStartupInfo, - .StartupInfo.cb = sizeof(info), .lpAttributeList = alist, }; + info.StartupInfo.cb = sizeof(info); if (ok) { if (CreateProcess(sb->path, sb->cmdline, 0, 0, true, a->dwCreationFlags | kNtCreateUnicodeEnvironment | From 086d7006daddf54c04452e5c17e295bca160473d Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Sun, 26 May 2024 18:41:15 -0700 Subject: [PATCH 075/123] Improve crash handler on XNU This avoids an issue where a crash signal could cause the MacOS process to freeze and consume all CPU rather than dying as it rightfully should --- libc/integral/c.inc | 18 +++++++++++++++--- libc/log/oncrash_amd64.c | 17 +++++++++++++++-- libc/log/oncrash_arm64.c | 23 +++++++++++++++++++++-- test/libc/calls/signal_test.c | 2 +- third_party/chibicc/test/BUILD.mk | 2 +- 5 files changed, 53 insertions(+), 9 deletions(-) diff --git a/libc/integral/c.inc b/libc/integral/c.inc index d393ed6f1..dc86d16bf 100644 --- a/libc/integral/c.inc +++ b/libc/integral/c.inc @@ -66,9 +66,10 @@ #endif #if (!defined(__llvm__) && !__has_builtin(__builtin_assume)) -#define __builtin_assume(x) \ - do { \ - if (!(x)) __builtin_unreachable(); \ +#define __builtin_assume(x) \ + do { \ + if (!(x)) \ + __builtin_unreachable(); \ } while (0) #endif @@ -598,10 +599,21 @@ typedef struct { #ifdef __x86_64__ #define DebugBreak() __asm__("int3") +#elif defined(__aarch64__) +#define DebugBreak() __asm__("brk\t#0x666") #else #define DebugBreak() __builtin_trap() #endif +#ifdef __aarch64__ +/* raise sigill (not sigtrap) like x86 does */ +#define __builtin_trap() \ + do { \ + __asm__("udf\t#0x666"); \ + __builtin_unreachable(); \ + } while (0) +#endif + #endif /* _COSMO_SOURCE */ #define __veil(CONSTRAINT, EXPRESSION) \ diff --git a/libc/log/oncrash_amd64.c b/libc/log/oncrash_amd64.c index 66fdd4b81..229c351cd 100644 --- a/libc/log/oncrash_amd64.c +++ b/libc/log/oncrash_amd64.c @@ -192,8 +192,6 @@ void ShowCrashReportHook(int, int, int, struct siginfo *, ucontext_t *); static relegated void ShowCrashReport(int err, int sig, struct siginfo *si, ucontext_t *ctx) { - if (sig != SIGTRAP && sig != SIGQUIT) - sigaddset(&ctx->uc_sigmask, sig); #pragma GCC push_options #pragma GCC diagnostic ignored "-Walloca-larger-than=" long size = __get_safe_size(8192, 4096); @@ -276,6 +274,21 @@ relegated void __oncrash(int sig, struct siginfo *si, void *arg) { int err = errno; __restore_tty(); ShowCrashReport(err, sig, si, arg); + + // ensure execution doesn't resume for anything but SIGTRAP / SIGQUIT + if (arg && sig != SIGTRAP && sig != SIGQUIT) { + if (!IsXnu()) { + sigaddset(&((ucontext_t *)arg)->uc_sigmask, sig); + } else { + sigdelset(&((ucontext_t *)arg)->uc_sigmask, sig); + struct sigaction sa; + sigemptyset(&sa.sa_mask); + sa.sa_handler = SIG_DFL; + sa.sa_flags = 0; + sigaction(sig, &sa, 0); + } + } + SpinUnlock(&lock); ALLOW_CANCELATION; } diff --git a/libc/log/oncrash_arm64.c b/libc/log/oncrash_arm64.c index 59d02f12c..7628bfffa 100644 --- a/libc/log/oncrash_arm64.c +++ b/libc/log/oncrash_arm64.c @@ -191,8 +191,6 @@ static relegated char *GetSymbolName(struct SymbolTable *st, int symbol) { static relegated void __oncrash_impl(int sig, struct siginfo *si, ucontext_t *ctx) { - if (sig != SIGTRAP && sig != SIGQUIT) - sigaddset(&ctx->uc_sigmask, sig); #pragma GCC push_options #pragma GCC diagnostic ignored "-Walloca-larger-than=" long size = __get_safe_size(10000, 4096); @@ -396,6 +394,27 @@ relegated void __oncrash(int sig, struct siginfo *si, void *arg) { BLOCK_CANCELATION; SpinLock(&lock); __oncrash_impl(sig, si, arg); + + // unlike amd64, the instruction pointer on arm64 isn't advanced past + // the debugger breakpoint instruction automatically. we need this so + // execution can resume after __builtin_trap(). + if (arg && sig == SIGTRAP) + ((ucontext_t *)arg)->uc_mcontext.PC += 4; + + // ensure execution doesn't resume for anything but SIGTRAP / SIGQUIT + if (arg && sig != SIGTRAP && sig != SIGQUIT) { + if (!IsXnu()) { + sigaddset(&((ucontext_t *)arg)->uc_sigmask, sig); + } else { + sigdelset(&((ucontext_t *)arg)->uc_sigmask, sig); + struct sigaction sa; + sigemptyset(&sa.sa_mask); + sa.sa_handler = SIG_DFL; + sa.sa_flags = 0; + sigaction(sig, &sa, 0); + } + } + SpinUnlock(&lock); ALLOW_CANCELATION; } diff --git a/test/libc/calls/signal_test.c b/test/libc/calls/signal_test.c index 988a454dd..c900d4b9b 100644 --- a/test/libc/calls/signal_test.c +++ b/test/libc/calls/signal_test.c @@ -53,7 +53,7 @@ void OnSigTrap(int sig, struct siginfo *si, void *ctx) { void TrapBench(int n) { for (int i = 0; i < n; ++i) { - __builtin_trap(); + DebugBreak(); } } diff --git a/third_party/chibicc/test/BUILD.mk b/third_party/chibicc/test/BUILD.mk index 602d5a6bc..26aa6c35a 100644 --- a/third_party/chibicc/test/BUILD.mk +++ b/third_party/chibicc/test/BUILD.mk @@ -20,7 +20,7 @@ THIRD_PARTY_CHIBICC_TEST_FILES := $(wildcard third_party/chibicc/test/*) THIRD_PARTY_CHIBICC_TEST_SRCS = $(filter %.c,$(THIRD_PARTY_CHIBICC_TEST_FILES)) THIRD_PARTY_CHIBICC_TEST_SRCS_TEST = $(filter %_test.c,$(THIRD_PARTY_CHIBICC_TEST_SRCS)) THIRD_PARTY_CHIBICC_TEST_HDRS = $(filter %.h,$(THIRD_PARTY_CHIBICC_TEST_FILES)) -THIRD_PARTY_CHIBICC_TEST_TESTS = $(THIRD_PARTY_CHIBICC_TEST_COMS:%=%.ok) +# THIRD_PARTY_CHIBICC_TEST_TESTS = $(THIRD_PARTY_CHIBICC_TEST_COMS:%=%.ok) THIRD_PARTY_CHIBICC_TEST_COMS = \ $(THIRD_PARTY_CHIBICC_TEST_SRCS_TEST:%_test.c=o/$(MODE)/%_test) From 07004ebf04d9cb5e5d0d6b51cedd208b30295deb Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Sun, 26 May 2024 22:12:25 -0700 Subject: [PATCH 076/123] Upgrade to superconfigure z0.0.42 --- tool/cosmocc/README.md | 2 +- tool/cosmocc/package.sh | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tool/cosmocc/README.md b/tool/cosmocc/README.md index 2e7872580..098a19184 100644 --- a/tool/cosmocc/README.md +++ b/tool/cosmocc/README.md @@ -299,7 +299,7 @@ statements instead, so that Cosmopolitan Libc's system constants will work as expected. Our modifications to GNU GCC are published under the ISC license at . The binaries you see here were first published at - which + which is regularly updated. ## Legal diff --git a/tool/cosmocc/package.sh b/tool/cosmocc/package.sh index 5dcff6709..26cce58f4 100755 --- a/tool/cosmocc/package.sh +++ b/tool/cosmocc/package.sh @@ -90,10 +90,10 @@ fetch() { OLD=$PWD cd "$OUTDIR/" if [ ! -x bin/x86_64-linux-cosmo-gcc ]; then - fetch https://github.com/ahgamut/superconfigure/releases/download/z0.0.39/aarch64-gcc.zip + fetch https://github.com/ahgamut/superconfigure/releases/download/z0.0.42/aarch64-gcc.zip unzip aarch64-gcc.zip rm -f aarch64-gcc.zip - fetch https://github.com/ahgamut/superconfigure/releases/download/z0.0.39/x86_64-gcc.zip + fetch https://github.com/ahgamut/superconfigure/releases/download/z0.0.42/x86_64-gcc.zip unzip x86_64-gcc.zip rm -f x86_64-gcc.zip fi From 2f4ca71f269cb8a10afcff59ea71a38ebd7428d1 Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Sun, 26 May 2024 22:13:45 -0700 Subject: [PATCH 077/123] Release Cosmopolitan v3.3.10 --- libc/integral/normalize.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libc/integral/normalize.inc b/libc/integral/normalize.inc index 02ecd5d23..0426b9f0b 100644 --- a/libc/integral/normalize.inc +++ b/libc/integral/normalize.inc @@ -4,7 +4,7 @@ #define __COSMOPOLITAN_MAJOR__ 3 #define __COSMOPOLITAN_MINOR__ 3 -#define __COSMOPOLITAN_PATCH__ 9 +#define __COSMOPOLITAN_PATCH__ 10 #define __COSMOPOLITAN__ \ (100000000 * __COSMOPOLITAN_MAJOR__ + 1000000 * __COSMOPOLITAN_MINOR__ + \ __COSMOPOLITAN_PATCH__) From 8e68384e15649fb1b750c51f18ffc44e3950a9ec Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Mon, 27 May 2024 02:12:27 -0700 Subject: [PATCH 078/123] Upgrade to 2022-era LLVM LIBCXX --- Makefile | 11 - build/definitions.mk | 8 +- libc/BUILD.mk | 91 +- libc/integral/c.inc | 4 +- libc/intrin/atomic.h | 6 +- libc/isystem/__algorithm/adjacent_find.h | 1 + libc/isystem/__algorithm/all_of.h | 1 + libc/isystem/__algorithm/any_of.h | 1 + libc/isystem/__algorithm/binary_search.h | 1 + libc/isystem/__algorithm/clamp.h | 1 + libc/isystem/__algorithm/comp.h | 1 + libc/isystem/__algorithm/comp_ref_type.h | 1 + libc/isystem/__algorithm/copy.h | 1 + libc/isystem/__algorithm/copy_backward.h | 1 + libc/isystem/__algorithm/copy_if.h | 1 + libc/isystem/__algorithm/copy_move_common.h | 1 + libc/isystem/__algorithm/copy_n.h | 1 + libc/isystem/__algorithm/count.h | 1 + libc/isystem/__algorithm/count_if.h | 1 + libc/isystem/__algorithm/equal.h | 1 + libc/isystem/__algorithm/equal_range.h | 1 + libc/isystem/__algorithm/fill.h | 1 + libc/isystem/__algorithm/fill_n.h | 1 + libc/isystem/__algorithm/find.h | 1 + libc/isystem/__algorithm/find_end.h | 1 + libc/isystem/__algorithm/find_first_of.h | 1 + libc/isystem/__algorithm/find_if.h | 1 + libc/isystem/__algorithm/find_if_not.h | 1 + libc/isystem/__algorithm/for_each.h | 1 + libc/isystem/__algorithm/for_each_n.h | 1 + libc/isystem/__algorithm/for_each_segment.h | 1 + libc/isystem/__algorithm/generate.h | 1 + libc/isystem/__algorithm/generate_n.h | 1 + libc/isystem/__algorithm/half_positive.h | 1 + libc/isystem/__algorithm/in_found_result.h | 1 + libc/isystem/__algorithm/in_fun_result.h | 1 + libc/isystem/__algorithm/in_in_out_result.h | 1 + libc/isystem/__algorithm/in_in_result.h | 1 + libc/isystem/__algorithm/in_out_out_result.h | 1 + libc/isystem/__algorithm/in_out_result.h | 1 + libc/isystem/__algorithm/includes.h | 1 + libc/isystem/__algorithm/inplace_merge.h | 1 + libc/isystem/__algorithm/is_heap.h | 1 + libc/isystem/__algorithm/is_heap_until.h | 1 + libc/isystem/__algorithm/is_partitioned.h | 1 + libc/isystem/__algorithm/is_permutation.h | 1 + libc/isystem/__algorithm/is_sorted.h | 1 + libc/isystem/__algorithm/is_sorted_until.h | 1 + libc/isystem/__algorithm/iter_swap.h | 1 + .../isystem/__algorithm/iterator_operations.h | 1 + .../__algorithm/lexicographical_compare.h | 1 + .../lexicographical_compare_three_way.h | 1 + libc/isystem/__algorithm/lower_bound.h | 1 + libc/isystem/__algorithm/make_heap.h | 1 + libc/isystem/__algorithm/make_projected.h | 1 + libc/isystem/__algorithm/max.h | 1 + libc/isystem/__algorithm/max_element.h | 1 + libc/isystem/__algorithm/merge.h | 1 + libc/isystem/__algorithm/min.h | 1 + libc/isystem/__algorithm/min_element.h | 1 + libc/isystem/__algorithm/min_max_result.h | 1 + libc/isystem/__algorithm/minmax.h | 1 + libc/isystem/__algorithm/minmax_element.h | 1 + libc/isystem/__algorithm/mismatch.h | 1 + libc/isystem/__algorithm/move.h | 1 + libc/isystem/__algorithm/move_backward.h | 1 + libc/isystem/__algorithm/next_permutation.h | 1 + libc/isystem/__algorithm/none_of.h | 1 + libc/isystem/__algorithm/nth_element.h | 1 + libc/isystem/__algorithm/partial_sort.h | 1 + libc/isystem/__algorithm/partial_sort_copy.h | 1 + libc/isystem/__algorithm/partition.h | 1 + libc/isystem/__algorithm/partition_copy.h | 1 + libc/isystem/__algorithm/partition_point.h | 1 + libc/isystem/__algorithm/pop_heap.h | 1 + libc/isystem/__algorithm/prev_permutation.h | 1 + .../__algorithm/pstl_any_all_none_of.h | 1 + libc/isystem/__algorithm/pstl_backend.h | 1 + .../__algorithm/pstl_backends/cpu_backend.h | 1 + .../pstl_backends/cpu_backends/any_of.h | 1 + .../pstl_backends/cpu_backends/backend.h | 1 + .../pstl_backends/cpu_backends/fill.h | 1 + .../pstl_backends/cpu_backends/find_if.h | 1 + .../pstl_backends/cpu_backends/for_each.h | 1 + .../pstl_backends/cpu_backends/merge.h | 1 + .../pstl_backends/cpu_backends/serial.h | 1 + .../pstl_backends/cpu_backends/thread.h | 1 + .../pstl_backends/cpu_backends/transform.h | 1 + libc/isystem/__algorithm/pstl_copy.h | 1 + libc/isystem/__algorithm/pstl_fill.h | 1 + libc/isystem/__algorithm/pstl_find.h | 1 + libc/isystem/__algorithm/pstl_for_each.h | 1 + .../__algorithm/pstl_frontend_dispatch.h | 1 + libc/isystem/__algorithm/pstl_merge.h | 1 + libc/isystem/__algorithm/pstl_transform.h | 1 + libc/isystem/__algorithm/push_heap.h | 1 + .../__algorithm/ranges_adjacent_find.h | 1 + libc/isystem/__algorithm/ranges_all_of.h | 1 + libc/isystem/__algorithm/ranges_any_of.h | 1 + .../__algorithm/ranges_binary_search.h | 1 + libc/isystem/__algorithm/ranges_clamp.h | 1 + libc/isystem/__algorithm/ranges_copy.h | 1 + .../__algorithm/ranges_copy_backward.h | 1 + libc/isystem/__algorithm/ranges_copy_if.h | 1 + libc/isystem/__algorithm/ranges_copy_n.h | 1 + libc/isystem/__algorithm/ranges_count.h | 1 + libc/isystem/__algorithm/ranges_count_if.h | 1 + libc/isystem/__algorithm/ranges_equal.h | 1 + libc/isystem/__algorithm/ranges_equal_range.h | 1 + libc/isystem/__algorithm/ranges_fill.h | 1 + libc/isystem/__algorithm/ranges_fill_n.h | 1 + libc/isystem/__algorithm/ranges_find.h | 1 + libc/isystem/__algorithm/ranges_find_end.h | 1 + .../__algorithm/ranges_find_first_of.h | 1 + libc/isystem/__algorithm/ranges_find_if.h | 1 + libc/isystem/__algorithm/ranges_find_if_not.h | 1 + libc/isystem/__algorithm/ranges_for_each.h | 1 + libc/isystem/__algorithm/ranges_for_each_n.h | 1 + libc/isystem/__algorithm/ranges_generate.h | 1 + libc/isystem/__algorithm/ranges_generate_n.h | 1 + libc/isystem/__algorithm/ranges_includes.h | 1 + .../__algorithm/ranges_inplace_merge.h | 1 + libc/isystem/__algorithm/ranges_is_heap.h | 1 + .../__algorithm/ranges_is_heap_until.h | 1 + .../__algorithm/ranges_is_partitioned.h | 1 + .../__algorithm/ranges_is_permutation.h | 1 + libc/isystem/__algorithm/ranges_is_sorted.h | 1 + .../__algorithm/ranges_is_sorted_until.h | 1 + .../__algorithm/ranges_iterator_concept.h | 1 + .../ranges_lexicographical_compare.h | 1 + libc/isystem/__algorithm/ranges_lower_bound.h | 1 + libc/isystem/__algorithm/ranges_make_heap.h | 1 + libc/isystem/__algorithm/ranges_max.h | 1 + libc/isystem/__algorithm/ranges_max_element.h | 1 + libc/isystem/__algorithm/ranges_merge.h | 1 + libc/isystem/__algorithm/ranges_min.h | 1 + libc/isystem/__algorithm/ranges_min_element.h | 1 + libc/isystem/__algorithm/ranges_minmax.h | 1 + .../__algorithm/ranges_minmax_element.h | 1 + libc/isystem/__algorithm/ranges_mismatch.h | 1 + libc/isystem/__algorithm/ranges_move.h | 1 + .../__algorithm/ranges_move_backward.h | 1 + .../__algorithm/ranges_next_permutation.h | 1 + libc/isystem/__algorithm/ranges_none_of.h | 1 + libc/isystem/__algorithm/ranges_nth_element.h | 1 + .../isystem/__algorithm/ranges_partial_sort.h | 1 + .../__algorithm/ranges_partial_sort_copy.h | 1 + libc/isystem/__algorithm/ranges_partition.h | 1 + .../__algorithm/ranges_partition_copy.h | 1 + .../__algorithm/ranges_partition_point.h | 1 + libc/isystem/__algorithm/ranges_pop_heap.h | 1 + .../__algorithm/ranges_prev_permutation.h | 1 + libc/isystem/__algorithm/ranges_push_heap.h | 1 + libc/isystem/__algorithm/ranges_remove.h | 1 + libc/isystem/__algorithm/ranges_remove_copy.h | 1 + .../__algorithm/ranges_remove_copy_if.h | 1 + libc/isystem/__algorithm/ranges_remove_if.h | 1 + libc/isystem/__algorithm/ranges_replace.h | 1 + .../isystem/__algorithm/ranges_replace_copy.h | 1 + .../__algorithm/ranges_replace_copy_if.h | 1 + libc/isystem/__algorithm/ranges_replace_if.h | 1 + libc/isystem/__algorithm/ranges_reverse.h | 1 + .../isystem/__algorithm/ranges_reverse_copy.h | 1 + libc/isystem/__algorithm/ranges_rotate.h | 1 + libc/isystem/__algorithm/ranges_rotate_copy.h | 1 + libc/isystem/__algorithm/ranges_sample.h | 1 + libc/isystem/__algorithm/ranges_search.h | 1 + libc/isystem/__algorithm/ranges_search_n.h | 1 + .../__algorithm/ranges_set_difference.h | 1 + .../__algorithm/ranges_set_intersection.h | 1 + .../ranges_set_symmetric_difference.h | 1 + libc/isystem/__algorithm/ranges_set_union.h | 1 + libc/isystem/__algorithm/ranges_shuffle.h | 1 + libc/isystem/__algorithm/ranges_sort.h | 1 + libc/isystem/__algorithm/ranges_sort_heap.h | 1 + .../__algorithm/ranges_stable_partition.h | 1 + libc/isystem/__algorithm/ranges_stable_sort.h | 1 + libc/isystem/__algorithm/ranges_starts_with.h | 1 + libc/isystem/__algorithm/ranges_swap_ranges.h | 1 + libc/isystem/__algorithm/ranges_transform.h | 1 + libc/isystem/__algorithm/ranges_unique.h | 1 + libc/isystem/__algorithm/ranges_unique_copy.h | 1 + libc/isystem/__algorithm/ranges_upper_bound.h | 1 + libc/isystem/__algorithm/remove.h | 1 + libc/isystem/__algorithm/remove_copy.h | 1 + libc/isystem/__algorithm/remove_copy_if.h | 1 + libc/isystem/__algorithm/remove_if.h | 1 + libc/isystem/__algorithm/replace.h | 1 + libc/isystem/__algorithm/replace_copy.h | 1 + libc/isystem/__algorithm/replace_copy_if.h | 1 + libc/isystem/__algorithm/replace_if.h | 1 + libc/isystem/__algorithm/reverse.h | 1 + libc/isystem/__algorithm/reverse_copy.h | 1 + libc/isystem/__algorithm/rotate.h | 1 + libc/isystem/__algorithm/rotate_copy.h | 1 + libc/isystem/__algorithm/sample.h | 1 + libc/isystem/__algorithm/search.h | 1 + libc/isystem/__algorithm/search_n.h | 1 + libc/isystem/__algorithm/set_difference.h | 1 + libc/isystem/__algorithm/set_intersection.h | 1 + .../__algorithm/set_symmetric_difference.h | 1 + libc/isystem/__algorithm/set_union.h | 1 + libc/isystem/__algorithm/shift_left.h | 1 + libc/isystem/__algorithm/shift_right.h | 1 + libc/isystem/__algorithm/shuffle.h | 1 + libc/isystem/__algorithm/sift_down.h | 1 + libc/isystem/__algorithm/sort.h | 1 + libc/isystem/__algorithm/sort_heap.h | 1 + libc/isystem/__algorithm/stable_partition.h | 1 + libc/isystem/__algorithm/stable_sort.h | 1 + libc/isystem/__algorithm/swap_ranges.h | 1 + .../__algorithm/three_way_comp_ref_type.h | 1 + libc/isystem/__algorithm/transform.h | 1 + .../uniform_random_bit_generator_adaptor.h | 1 + libc/isystem/__algorithm/unique.h | 1 + libc/isystem/__algorithm/unique_copy.h | 1 + libc/isystem/__algorithm/unwrap_iter.h | 1 + libc/isystem/__algorithm/unwrap_range.h | 1 + libc/isystem/__algorithm/upper_bound.h | 1 + libc/isystem/__assert | 1 + libc/isystem/__atomic/aliases.h | 1 + libc/isystem/__atomic/atomic.h | 1 + libc/isystem/__atomic/atomic_base.h | 1 + libc/isystem/__atomic/atomic_flag.h | 1 + libc/isystem/__atomic/atomic_init.h | 1 + libc/isystem/__atomic/atomic_lock_free.h | 1 + libc/isystem/__atomic/atomic_sync.h | 1 + libc/isystem/__atomic/check_memory_order.h | 1 + libc/isystem/__atomic/contention_t.h | 1 + libc/isystem/__atomic/cxx_atomic_impl.h | 1 + libc/isystem/__atomic/fence.h | 1 + libc/isystem/__atomic/is_always_lock_free.h | 1 + libc/isystem/__atomic/kill_dependency.h | 1 + libc/isystem/__atomic/memory_order.h | 1 + libc/isystem/__availability | 1 + libc/isystem/__bit/bit_cast.h | 1 + libc/isystem/__bit/bit_ceil.h | 1 + libc/isystem/__bit/bit_floor.h | 1 + libc/isystem/__bit/bit_log2.h | 1 + libc/isystem/__bit/bit_width.h | 1 + libc/isystem/__bit/blsr.h | 1 + libc/isystem/__bit/byteswap.h | 1 + libc/isystem/__bit/countl.h | 1 + libc/isystem/__bit/countr.h | 1 + libc/isystem/__bit/endian.h | 1 + libc/isystem/__bit/has_single_bit.h | 1 + libc/isystem/__bit/popcount.h | 1 + libc/isystem/__bit/rotate.h | 1 + libc/isystem/__bit_reference | 1 + libc/isystem/__charconv/chars_format.h | 1 + libc/isystem/__charconv/from_chars_integral.h | 1 + libc/isystem/__charconv/from_chars_result.h | 1 + libc/isystem/__charconv/tables.h | 1 + libc/isystem/__charconv/to_chars.h | 1 + libc/isystem/__charconv/to_chars_base_10.h | 1 + .../__charconv/to_chars_floating_point.h | 1 + libc/isystem/__charconv/to_chars_integral.h | 1 + libc/isystem/__charconv/to_chars_result.h | 1 + libc/isystem/__charconv/traits.h | 1 + libc/isystem/__chrono/calendar.h | 1 + libc/isystem/__chrono/concepts.h | 1 + libc/isystem/__chrono/convert_to_timespec.h | 1 + libc/isystem/__chrono/convert_to_tm.h | 1 + libc/isystem/__chrono/day.h | 1 + libc/isystem/__chrono/duration.h | 1 + libc/isystem/__chrono/file_clock.h | 1 + libc/isystem/__chrono/formatter.h | 1 + libc/isystem/__chrono/hh_mm_ss.h | 1 + libc/isystem/__chrono/high_resolution_clock.h | 1 + libc/isystem/__chrono/literals.h | 1 + libc/isystem/__chrono/month.h | 1 + libc/isystem/__chrono/month_weekday.h | 1 + libc/isystem/__chrono/monthday.h | 1 + libc/isystem/__chrono/ostream.h | 1 + .../isystem/__chrono/parser_std_format_spec.h | 1 + libc/isystem/__chrono/statically_widen.h | 1 + libc/isystem/__chrono/steady_clock.h | 1 + libc/isystem/__chrono/system_clock.h | 1 + libc/isystem/__chrono/time_point.h | 1 + libc/isystem/__chrono/weekday.h | 1 + libc/isystem/__chrono/year.h | 1 + libc/isystem/__chrono/year_month.h | 1 + libc/isystem/__chrono/year_month_day.h | 1 + libc/isystem/__chrono/year_month_weekday.h | 1 + .../__compare/common_comparison_category.h | 1 + .../compare_partial_order_fallback.h | 1 + .../__compare/compare_strong_order_fallback.h | 1 + libc/isystem/__compare/compare_three_way.h | 1 + .../__compare/compare_three_way_result.h | 1 + .../__compare/compare_weak_order_fallback.h | 1 + libc/isystem/__compare/is_eq.h | 1 + libc/isystem/__compare/ordering.h | 1 + libc/isystem/__compare/partial_order.h | 1 + libc/isystem/__compare/strong_order.h | 1 + libc/isystem/__compare/synth_three_way.h | 1 + libc/isystem/__compare/three_way_comparable.h | 1 + libc/isystem/__compare/weak_order.h | 1 + libc/isystem/__concepts/arithmetic.h | 1 + libc/isystem/__concepts/assignable.h | 1 + libc/isystem/__concepts/boolean_testable.h | 1 + libc/isystem/__concepts/class_or_enum.h | 1 + .../__concepts/common_reference_with.h | 1 + libc/isystem/__concepts/common_with.h | 1 + libc/isystem/__concepts/constructible.h | 1 + libc/isystem/__concepts/convertible_to.h | 1 + libc/isystem/__concepts/copyable.h | 1 + libc/isystem/__concepts/derived_from.h | 1 + libc/isystem/__concepts/destructible.h | 1 + libc/isystem/__concepts/different_from.h | 1 + libc/isystem/__concepts/equality_comparable.h | 1 + libc/isystem/__concepts/invocable.h | 1 + libc/isystem/__concepts/movable.h | 1 + libc/isystem/__concepts/predicate.h | 1 + libc/isystem/__concepts/regular.h | 1 + libc/isystem/__concepts/relation.h | 1 + libc/isystem/__concepts/same_as.h | 1 + libc/isystem/__concepts/semiregular.h | 1 + libc/isystem/__concepts/swappable.h | 1 + libc/isystem/__concepts/totally_ordered.h | 1 + .../__condition_variable/condition_variable.h | 1 + libc/isystem/__config | 1 + libc/isystem/__config_site | 1 + libc/isystem/__coroutine/coroutine_handle.h | 1 + libc/isystem/__coroutine/coroutine_traits.h | 1 + .../__coroutine/noop_coroutine_handle.h | 1 + libc/isystem/__coroutine/trivial_awaitables.h | 1 + libc/isystem/__debug | 1 + libc/isystem/__debug_utils/randomize_range.h | 1 + libc/isystem/__exception/exception.h | 1 + libc/isystem/__exception/exception_ptr.h | 1 + libc/isystem/__exception/nested_exception.h | 1 + libc/isystem/__exception/operations.h | 1 + libc/isystem/__exception/terminate.h | 1 + libc/isystem/__expected/bad_expected_access.h | 1 + libc/isystem/__expected/expected.h | 1 + libc/isystem/__expected/unexpect.h | 1 + libc/isystem/__expected/unexpected.h | 1 + libc/isystem/__filesystem/copy_options.h | 1 + libc/isystem/__filesystem/directory_entry.h | 1 + .../isystem/__filesystem/directory_iterator.h | 1 + libc/isystem/__filesystem/directory_options.h | 1 + libc/isystem/__filesystem/file_status.h | 1 + libc/isystem/__filesystem/file_time_type.h | 1 + libc/isystem/__filesystem/file_type.h | 1 + libc/isystem/__filesystem/filesystem_error.h | 1 + libc/isystem/__filesystem/operations.h | 1 + libc/isystem/__filesystem/path.h | 1 + libc/isystem/__filesystem/path_iterator.h | 1 + libc/isystem/__filesystem/perm_options.h | 1 + libc/isystem/__filesystem/perms.h | 1 + .../recursive_directory_iterator.h | 1 + libc/isystem/__filesystem/space_info.h | 1 + libc/isystem/__filesystem/u8path.h | 1 + libc/isystem/__format/buffer.h | 1 + libc/isystem/__format/concepts.h | 1 + libc/isystem/__format/container_adaptor.h | 1 + libc/isystem/__format/enable_insertable.h | 1 + libc/isystem/__format/escaped_output_table.h | 1 + .../extended_grapheme_cluster_table.h | 1 + libc/isystem/__format/format_arg.h | 1 + libc/isystem/__format/format_arg_store.h | 1 + libc/isystem/__format/format_args.h | 1 + libc/isystem/__format/format_context.h | 1 + libc/isystem/__format/format_error.h | 1 + libc/isystem/__format/format_functions.h | 1 + libc/isystem/__format/format_fwd.h | 1 + libc/isystem/__format/format_parse_context.h | 1 + libc/isystem/__format/format_string.h | 1 + libc/isystem/__format/format_to_n_result.h | 1 + libc/isystem/__format/formatter.h | 1 + libc/isystem/__format/formatter_bool.h | 1 + libc/isystem/__format/formatter_char.h | 1 + .../__format/formatter_floating_point.h | 1 + libc/isystem/__format/formatter_integer.h | 1 + libc/isystem/__format/formatter_integral.h | 1 + libc/isystem/__format/formatter_output.h | 1 + libc/isystem/__format/formatter_pointer.h | 1 + libc/isystem/__format/formatter_string.h | 1 + libc/isystem/__format/formatter_tuple.h | 1 + .../isystem/__format/parser_std_format_spec.h | 1 + .../__format/range_default_formatter.h | 1 + libc/isystem/__format/range_formatter.h | 1 + libc/isystem/__format/unicode.h | 1 + .../isystem/__format/width_estimation_table.h | 1 + libc/isystem/__functional/binary_function.h | 1 + libc/isystem/__functional/binary_negate.h | 1 + libc/isystem/__functional/bind.h | 1 + libc/isystem/__functional/bind_back.h | 1 + libc/isystem/__functional/bind_front.h | 1 + libc/isystem/__functional/binder1st.h | 1 + libc/isystem/__functional/binder2nd.h | 1 + .../__functional/boyer_moore_searcher.h | 1 + libc/isystem/__functional/compose.h | 1 + libc/isystem/__functional/default_searcher.h | 1 + libc/isystem/__functional/function.h | 1 + libc/isystem/__functional/hash.h | 1 + libc/isystem/__functional/identity.h | 1 + libc/isystem/__functional/invoke.h | 1 + libc/isystem/__functional/is_transparent.h | 1 + libc/isystem/__functional/mem_fn.h | 1 + libc/isystem/__functional/mem_fun_ref.h | 1 + libc/isystem/__functional/not_fn.h | 1 + libc/isystem/__functional/operations.h | 1 + libc/isystem/__functional/perfect_forward.h | 1 + .../__functional/pointer_to_binary_function.h | 1 + .../__functional/pointer_to_unary_function.h | 1 + libc/isystem/__functional/ranges_operations.h | 1 + libc/isystem/__functional/reference_wrapper.h | 1 + libc/isystem/__functional/unary_function.h | 1 + libc/isystem/__functional/unary_negate.h | 1 + libc/isystem/__functional/weak_result_type.h | 1 + libc/isystem/__fwd/array.h | 1 + libc/isystem/__fwd/fstream.h | 1 + libc/isystem/__fwd/get.h | 1 + libc/isystem/__fwd/hash.h | 1 + libc/isystem/__fwd/ios.h | 1 + libc/isystem/__fwd/istream.h | 1 + libc/isystem/__fwd/memory_resource.h | 1 + libc/isystem/__fwd/ostream.h | 1 + libc/isystem/__fwd/pair.h | 1 + libc/isystem/__fwd/span.h | 1 + libc/isystem/__fwd/sstream.h | 1 + libc/isystem/__fwd/streambuf.h | 1 + libc/isystem/__fwd/string.h | 1 + libc/isystem/__fwd/string_view.h | 1 + libc/isystem/__fwd/subrange.h | 1 + libc/isystem/__fwd/tuple.h | 1 + libc/isystem/__hash_table | 1 + libc/isystem/__ios/fpos.h | 1 + libc/isystem/__iterator/access.h | 1 + libc/isystem/__iterator/advance.h | 1 + .../isystem/__iterator/back_insert_iterator.h | 1 + libc/isystem/__iterator/bounded_iter.h | 1 + libc/isystem/__iterator/common_iterator.h | 1 + libc/isystem/__iterator/concepts.h | 1 + libc/isystem/__iterator/counted_iterator.h | 1 + libc/isystem/__iterator/data.h | 1 + libc/isystem/__iterator/default_sentinel.h | 1 + libc/isystem/__iterator/distance.h | 1 + libc/isystem/__iterator/empty.h | 1 + libc/isystem/__iterator/erase_if_container.h | 1 + .../__iterator/front_insert_iterator.h | 1 + .../isystem/__iterator/incrementable_traits.h | 1 + .../__iterator/indirectly_comparable.h | 1 + libc/isystem/__iterator/insert_iterator.h | 1 + libc/isystem/__iterator/istream_iterator.h | 1 + libc/isystem/__iterator/istreambuf_iterator.h | 1 + libc/isystem/__iterator/iter_move.h | 1 + libc/isystem/__iterator/iter_swap.h | 1 + libc/isystem/__iterator/iterator.h | 1 + libc/isystem/__iterator/iterator_traits.h | 1 + libc/isystem/__iterator/iterator_with_data.h | 1 + libc/isystem/__iterator/mergeable.h | 1 + libc/isystem/__iterator/move_iterator.h | 1 + libc/isystem/__iterator/move_sentinel.h | 1 + libc/isystem/__iterator/next.h | 1 + libc/isystem/__iterator/ostream_iterator.h | 1 + libc/isystem/__iterator/ostreambuf_iterator.h | 1 + libc/isystem/__iterator/permutable.h | 1 + libc/isystem/__iterator/prev.h | 1 + libc/isystem/__iterator/projected.h | 1 + libc/isystem/__iterator/readable_traits.h | 1 + libc/isystem/__iterator/reverse_access.h | 1 + libc/isystem/__iterator/reverse_iterator.h | 1 + libc/isystem/__iterator/segmented_iterator.h | 1 + libc/isystem/__iterator/size.h | 1 + libc/isystem/__iterator/sortable.h | 1 + .../isystem/__iterator/unreachable_sentinel.h | 1 + libc/isystem/__iterator/wrap_iter.h | 1 + libc/isystem/__locale | 1 + .../locale_base_api/bsd_locale_defaults.h | 1 + .../locale_base_api/bsd_locale_fallbacks.h | 1 + .../locale_base_api/locale_guard.h | 1 + libc/isystem/__mbstate_t.h | 1 + libc/isystem/__mdspan/extents.h | 1 + libc/isystem/__memory/addressof.h | 1 + libc/isystem/__memory/align.h | 1 + libc/isystem/__memory/aligned_alloc.h | 1 + libc/isystem/__memory/allocate_at_least.h | 1 + libc/isystem/__memory/allocation_guard.h | 1 + libc/isystem/__memory/allocator.h | 1 + libc/isystem/__memory/allocator_arg_t.h | 1 + libc/isystem/__memory/allocator_destructor.h | 1 + libc/isystem/__memory/allocator_traits.h | 1 + libc/isystem/__memory/assume_aligned.h | 1 + libc/isystem/__memory/auto_ptr.h | 1 + libc/isystem/__memory/builtin_new_allocator.h | 1 + libc/isystem/__memory/compressed_pair.h | 1 + libc/isystem/__memory/concepts.h | 1 + libc/isystem/__memory/construct_at.h | 1 + libc/isystem/__memory/destruct_n.h | 1 + libc/isystem/__memory/pointer_traits.h | 1 + libc/isystem/__memory/ranges_construct_at.h | 1 + .../ranges_uninitialized_algorithms.h | 1 + libc/isystem/__memory/raw_storage_iterator.h | 1 + libc/isystem/__memory/shared_ptr.h | 1 + libc/isystem/__memory/swap_allocator.h | 1 + libc/isystem/__memory/temp_value.h | 1 + libc/isystem/__memory/temporary_buffer.h | 1 + .../__memory/uninitialized_algorithms.h | 1 + libc/isystem/__memory/unique_ptr.h | 1 + libc/isystem/__memory/uses_allocator.h | 1 + .../__memory/uses_allocator_construction.h | 1 + libc/isystem/__memory/voidify.h | 1 + .../__memory_resource/memory_resource.h | 1 + .../monotonic_buffer_resource.h | 1 + .../__memory_resource/polymorphic_allocator.h | 1 + libc/isystem/__memory_resource/pool_options.h | 1 + .../synchronized_pool_resource.h | 1 + .../unsynchronized_pool_resource.h | 1 + libc/isystem/__mutex/lock_guard.h | 1 + libc/isystem/__mutex/mutex.h | 1 + libc/isystem/__mutex/tag_types.h | 1 + libc/isystem/__mutex/unique_lock.h | 1 + libc/isystem/__node_handle | 1 + libc/isystem/__numeric/accumulate.h | 1 + libc/isystem/__numeric/adjacent_difference.h | 1 + libc/isystem/__numeric/exclusive_scan.h | 1 + libc/isystem/__numeric/gcd_lcm.h | 1 + libc/isystem/__numeric/inclusive_scan.h | 1 + libc/isystem/__numeric/inner_product.h | 1 + libc/isystem/__numeric/iota.h | 1 + libc/isystem/__numeric/midpoint.h | 1 + libc/isystem/__numeric/partial_sum.h | 1 + libc/isystem/__numeric/reduce.h | 1 + .../__numeric/transform_exclusive_scan.h | 1 + .../__numeric/transform_inclusive_scan.h | 1 + libc/isystem/__numeric/transform_reduce.h | 1 + libc/isystem/__pstl/internal/algorithm_fwd.h | 1 + libc/isystem/__pstl/internal/algorithm_impl.h | 1 + libc/isystem/__pstl/internal/execution_defs.h | 1 + libc/isystem/__pstl/internal/execution_impl.h | 1 + .../__pstl/internal/glue_algorithm_defs.h | 1 + .../__pstl/internal/glue_algorithm_impl.h | 1 + .../__pstl/internal/glue_memory_defs.h | 1 + .../__pstl/internal/glue_memory_impl.h | 1 + .../__pstl/internal/glue_numeric_defs.h | 1 + .../__pstl/internal/glue_numeric_impl.h | 1 + libc/isystem/__pstl/internal/memory_impl.h | 1 + libc/isystem/__pstl/internal/numeric_fwd.h | 1 + libc/isystem/__pstl/internal/numeric_impl.h | 1 + .../__pstl/internal/omp/parallel_for.h | 1 + .../__pstl/internal/omp/parallel_for_each.h | 1 + .../__pstl/internal/omp/parallel_invoke.h | 1 + .../__pstl/internal/omp/parallel_merge.h | 1 + .../__pstl/internal/omp/parallel_reduce.h | 1 + .../__pstl/internal/omp/parallel_scan.h | 1 + .../omp/parallel_stable_partial_sort.h | 1 + .../internal/omp/parallel_stable_sort.h | 1 + .../internal/omp/parallel_transform_reduce.h | 1 + .../internal/omp/parallel_transform_scan.h | 1 + libc/isystem/__pstl/internal/omp/util.h | 1 + .../__pstl/internal/parallel_backend.h | 1 + .../__pstl/internal/parallel_backend_omp.h | 1 + .../__pstl/internal/parallel_backend_serial.h | 1 + .../__pstl/internal/parallel_backend_tbb.h | 1 + .../__pstl/internal/parallel_backend_utils.h | 1 + .../__pstl/internal/unseq_backend_simd.h | 1 + libc/isystem/__pstl/internal/utils.h | 1 + libc/isystem/__pstl_algorithm | 1 + libc/isystem/__pstl_config_site | 1 + libc/isystem/__pstl_memory | 1 + libc/isystem/__pstl_numeric | 1 + .../isystem/__random/bernoulli_distribution.h | 1 + libc/isystem/__random/binomial_distribution.h | 1 + libc/isystem/__random/cauchy_distribution.h | 1 + .../__random/chi_squared_distribution.h | 1 + libc/isystem/__random/clamp_to_integral.h | 1 + libc/isystem/__random/default_random_engine.h | 1 + libc/isystem/__random/discard_block_engine.h | 1 + libc/isystem/__random/discrete_distribution.h | 1 + .../__random/exponential_distribution.h | 1 + .../__random/extreme_value_distribution.h | 1 + libc/isystem/__random/fisher_f_distribution.h | 1 + libc/isystem/__random/gamma_distribution.h | 1 + libc/isystem/__random/generate_canonical.h | 1 + .../isystem/__random/geometric_distribution.h | 1 + .../__random/independent_bits_engine.h | 1 + libc/isystem/__random/is_seed_sequence.h | 1 + libc/isystem/__random/is_valid.h | 1 + libc/isystem/__random/knuth_b.h | 1 + .../__random/linear_congruential_engine.h | 1 + libc/isystem/__random/log2.h | 1 + .../isystem/__random/lognormal_distribution.h | 1 + .../__random/mersenne_twister_engine.h | 1 + .../__random/negative_binomial_distribution.h | 1 + libc/isystem/__random/normal_distribution.h | 1 + .../piecewise_constant_distribution.h | 1 + .../__random/piecewise_linear_distribution.h | 1 + libc/isystem/__random/poisson_distribution.h | 1 + libc/isystem/__random/random_device.h | 1 + libc/isystem/__random/ranlux.h | 1 + libc/isystem/__random/seed_seq.h | 1 + libc/isystem/__random/shuffle_order_engine.h | 1 + .../isystem/__random/student_t_distribution.h | 1 + .../__random/subtract_with_carry_engine.h | 1 + .../__random/uniform_int_distribution.h | 1 + .../__random/uniform_random_bit_generator.h | 1 + .../__random/uniform_real_distribution.h | 1 + libc/isystem/__random/weibull_distribution.h | 1 + libc/isystem/__ranges/access.h | 1 + libc/isystem/__ranges/all.h | 1 + libc/isystem/__ranges/as_rvalue_view.h | 1 + libc/isystem/__ranges/common_view.h | 1 + libc/isystem/__ranges/concepts.h | 1 + .../__ranges/container_compatible_range.h | 1 + libc/isystem/__ranges/copyable_box.h | 1 + libc/isystem/__ranges/counted.h | 1 + libc/isystem/__ranges/dangling.h | 1 + libc/isystem/__ranges/data.h | 1 + libc/isystem/__ranges/drop_view.h | 1 + libc/isystem/__ranges/drop_while_view.h | 1 + libc/isystem/__ranges/elements_view.h | 1 + libc/isystem/__ranges/empty.h | 1 + libc/isystem/__ranges/empty_view.h | 1 + libc/isystem/__ranges/enable_borrowed_range.h | 1 + libc/isystem/__ranges/enable_view.h | 1 + libc/isystem/__ranges/filter_view.h | 1 + libc/isystem/__ranges/from_range.h | 1 + libc/isystem/__ranges/iota_view.h | 1 + libc/isystem/__ranges/istream_view.h | 1 + libc/isystem/__ranges/join_view.h | 1 + libc/isystem/__ranges/lazy_split_view.h | 1 + libc/isystem/__ranges/non_propagating_cache.h | 1 + libc/isystem/__ranges/owning_view.h | 1 + libc/isystem/__ranges/range_adaptor.h | 1 + libc/isystem/__ranges/rbegin.h | 1 + libc/isystem/__ranges/ref_view.h | 1 + libc/isystem/__ranges/rend.h | 1 + libc/isystem/__ranges/reverse_view.h | 1 + libc/isystem/__ranges/single_view.h | 1 + libc/isystem/__ranges/size.h | 1 + libc/isystem/__ranges/split_view.h | 1 + libc/isystem/__ranges/subrange.h | 1 + libc/isystem/__ranges/take_view.h | 1 + libc/isystem/__ranges/take_while_view.h | 1 + libc/isystem/__ranges/transform_view.h | 1 + libc/isystem/__ranges/view_interface.h | 1 + libc/isystem/__ranges/views.h | 1 + libc/isystem/__ranges/zip_view.h | 1 + libc/isystem/__split_buffer | 1 + libc/isystem/__std_mbstate_t.h | 1 + .../isystem/__stop_token/atomic_unique_lock.h | 1 + .../__stop_token/intrusive_list_view.h | 1 + .../__stop_token/intrusive_shared_ptr.h | 1 + libc/isystem/__string/char_traits.h | 1 + libc/isystem/__string/constexpr_c_functions.h | 1 + libc/isystem/__string/extern_template_lists.h | 1 + .../isystem/__support/android/locale_bionic.h | 1 + libc/isystem/__support/fuchsia/xlocale.h | 1 + libc/isystem/__support/ibm/gettod_zos.h | 1 + libc/isystem/__support/ibm/locale_mgmt_zos.h | 1 + libc/isystem/__support/ibm/nanosleep.h | 1 + libc/isystem/__support/ibm/xlocale.h | 1 + libc/isystem/__support/musl/xlocale.h | 1 + libc/isystem/__support/newlib/xlocale.h | 1 + libc/isystem/__support/openbsd/xlocale.h | 1 + libc/isystem/__support/win32/locale_win32.h | 1 + .../__support/xlocale/__nop_locale_mgmt.h | 1 + .../__support/xlocale/__posix_l_fallback.h | 1 + .../__support/xlocale/__strtonum_fallback.h | 1 + libc/isystem/__system_error/errc.h | 1 + libc/isystem/__system_error/error_category.h | 1 + libc/isystem/__system_error/error_code.h | 1 + libc/isystem/__system_error/error_condition.h | 1 + libc/isystem/__system_error/system_error.h | 1 + libc/isystem/__thread/poll_with_backoff.h | 1 + libc/isystem/__thread/timed_backoff_policy.h | 1 + libc/isystem/__threading_support | 1 + libc/isystem/__tree | 1 + libc/isystem/__tuple/make_tuple_types.h | 1 + libc/isystem/__tuple/pair_like.h | 1 + libc/isystem/__tuple/sfinae_helpers.h | 1 + libc/isystem/__tuple/tuple_element.h | 1 + libc/isystem/__tuple/tuple_indices.h | 1 + libc/isystem/__tuple/tuple_like.h | 1 + libc/isystem/__tuple/tuple_like_ext.h | 1 + libc/isystem/__tuple/tuple_size.h | 1 + libc/isystem/__tuple/tuple_types.h | 1 + libc/isystem/__type_traits/add_const.h | 1 + libc/isystem/__type_traits/add_cv.h | 1 + .../__type_traits/add_lvalue_reference.h | 1 + libc/isystem/__type_traits/add_pointer.h | 1 + .../__type_traits/add_rvalue_reference.h | 1 + libc/isystem/__type_traits/add_volatile.h | 1 + libc/isystem/__type_traits/aligned_storage.h | 1 + libc/isystem/__type_traits/aligned_union.h | 1 + libc/isystem/__type_traits/alignment_of.h | 1 + libc/isystem/__type_traits/apply_cv.h | 1 + libc/isystem/__type_traits/can_extract_key.h | 1 + libc/isystem/__type_traits/common_reference.h | 1 + libc/isystem/__type_traits/common_type.h | 1 + libc/isystem/__type_traits/conditional.h | 1 + libc/isystem/__type_traits/conjunction.h | 1 + libc/isystem/__type_traits/copy_cv.h | 1 + libc/isystem/__type_traits/copy_cvref.h | 1 + libc/isystem/__type_traits/decay.h | 1 + libc/isystem/__type_traits/dependent_type.h | 1 + libc/isystem/__type_traits/disjunction.h | 1 + libc/isystem/__type_traits/enable_if.h | 1 + libc/isystem/__type_traits/extent.h | 1 + .../has_unique_object_representation.h | 1 + .../__type_traits/has_virtual_destructor.h | 1 + .../isystem/__type_traits/integral_constant.h | 1 + libc/isystem/__type_traits/invoke.h | 1 + libc/isystem/__type_traits/is_abstract.h | 1 + libc/isystem/__type_traits/is_aggregate.h | 1 + libc/isystem/__type_traits/is_allocator.h | 1 + .../__type_traits/is_always_bitcastable.h | 1 + libc/isystem/__type_traits/is_arithmetic.h | 1 + libc/isystem/__type_traits/is_array.h | 1 + libc/isystem/__type_traits/is_assignable.h | 1 + libc/isystem/__type_traits/is_base_of.h | 1 + libc/isystem/__type_traits/is_bounded_array.h | 1 + libc/isystem/__type_traits/is_callable.h | 1 + .../isystem/__type_traits/is_char_like_type.h | 1 + libc/isystem/__type_traits/is_class.h | 1 + libc/isystem/__type_traits/is_compound.h | 1 + libc/isystem/__type_traits/is_const.h | 1 + .../__type_traits/is_constant_evaluated.h | 1 + libc/isystem/__type_traits/is_constructible.h | 1 + libc/isystem/__type_traits/is_convertible.h | 1 + .../__type_traits/is_copy_assignable.h | 1 + .../__type_traits/is_copy_constructible.h | 1 + .../__type_traits/is_core_convertible.h | 1 + .../__type_traits/is_default_constructible.h | 1 + libc/isystem/__type_traits/is_destructible.h | 1 + libc/isystem/__type_traits/is_empty.h | 1 + libc/isystem/__type_traits/is_enum.h | 1 + .../__type_traits/is_equality_comparable.h | 1 + .../__type_traits/is_execution_policy.h | 1 + libc/isystem/__type_traits/is_final.h | 1 + .../isystem/__type_traits/is_floating_point.h | 1 + libc/isystem/__type_traits/is_function.h | 1 + libc/isystem/__type_traits/is_fundamental.h | 1 + .../is_implicitly_default_constructible.h | 1 + libc/isystem/__type_traits/is_integral.h | 1 + libc/isystem/__type_traits/is_literal_type.h | 1 + .../is_member_function_pointer.h | 1 + .../__type_traits/is_member_object_pointer.h | 1 + .../isystem/__type_traits/is_member_pointer.h | 1 + .../__type_traits/is_move_assignable.h | 1 + .../__type_traits/is_move_constructible.h | 1 + .../__type_traits/is_nothrow_assignable.h | 1 + .../__type_traits/is_nothrow_constructible.h | 1 + .../__type_traits/is_nothrow_convertible.h | 1 + .../is_nothrow_copy_assignable.h | 1 + .../is_nothrow_copy_constructible.h | 1 + .../is_nothrow_default_constructible.h | 1 + .../__type_traits/is_nothrow_destructible.h | 1 + .../is_nothrow_move_assignable.h | 1 + .../is_nothrow_move_constructible.h | 1 + libc/isystem/__type_traits/is_null_pointer.h | 1 + libc/isystem/__type_traits/is_object.h | 1 + libc/isystem/__type_traits/is_pod.h | 1 + libc/isystem/__type_traits/is_pointer.h | 1 + libc/isystem/__type_traits/is_polymorphic.h | 1 + .../__type_traits/is_primary_template.h | 1 + libc/isystem/__type_traits/is_reference.h | 1 + .../__type_traits/is_reference_wrapper.h | 1 + libc/isystem/__type_traits/is_referenceable.h | 1 + libc/isystem/__type_traits/is_same.h | 1 + libc/isystem/__type_traits/is_scalar.h | 1 + libc/isystem/__type_traits/is_scoped_enum.h | 1 + libc/isystem/__type_traits/is_signed.h | 1 + .../isystem/__type_traits/is_signed_integer.h | 1 + .../isystem/__type_traits/is_specialization.h | 1 + .../__type_traits/is_standard_layout.h | 1 + libc/isystem/__type_traits/is_swappable.h | 1 + libc/isystem/__type_traits/is_trivial.h | 1 + .../__type_traits/is_trivially_assignable.h | 1 + .../is_trivially_constructible.h | 1 + .../is_trivially_copy_assignable.h | 1 + .../is_trivially_copy_constructible.h | 1 + .../__type_traits/is_trivially_copyable.h | 1 + .../is_trivially_default_constructible.h | 1 + .../__type_traits/is_trivially_destructible.h | 1 + ...s_trivially_lexicographically_comparable.h | 1 + .../is_trivially_move_assignable.h | 1 + .../is_trivially_move_constructible.h | 1 + .../__type_traits/is_unbounded_array.h | 1 + libc/isystem/__type_traits/is_union.h | 1 + libc/isystem/__type_traits/is_unsigned.h | 1 + .../__type_traits/is_unsigned_integer.h | 1 + .../__type_traits/is_valid_expansion.h | 1 + libc/isystem/__type_traits/is_void.h | 1 + libc/isystem/__type_traits/is_volatile.h | 1 + libc/isystem/__type_traits/lazy.h | 1 + .../__type_traits/make_32_64_or_128_bit.h | 1 + .../__type_traits/make_const_lvalue_ref.h | 1 + libc/isystem/__type_traits/make_signed.h | 1 + libc/isystem/__type_traits/make_unsigned.h | 1 + libc/isystem/__type_traits/maybe_const.h | 1 + libc/isystem/__type_traits/nat.h | 1 + libc/isystem/__type_traits/negation.h | 1 + .../noexcept_move_assign_container.h | 1 + libc/isystem/__type_traits/predicate_traits.h | 1 + libc/isystem/__type_traits/promote.h | 1 + libc/isystem/__type_traits/rank.h | 1 + .../__type_traits/remove_all_extents.h | 1 + libc/isystem/__type_traits/remove_const.h | 1 + libc/isystem/__type_traits/remove_const_ref.h | 1 + libc/isystem/__type_traits/remove_cv.h | 1 + libc/isystem/__type_traits/remove_cvref.h | 1 + libc/isystem/__type_traits/remove_extent.h | 1 + libc/isystem/__type_traits/remove_pointer.h | 1 + libc/isystem/__type_traits/remove_reference.h | 1 + libc/isystem/__type_traits/remove_volatile.h | 1 + libc/isystem/__type_traits/result_of.h | 1 + libc/isystem/__type_traits/strip_signature.h | 1 + libc/isystem/__type_traits/type_identity.h | 1 + libc/isystem/__type_traits/type_list.h | 1 + libc/isystem/__type_traits/underlying_type.h | 1 + libc/isystem/__type_traits/unwrap_ref.h | 1 + libc/isystem/__type_traits/void_t.h | 1 + libc/isystem/__undef_macros | 1 + libc/isystem/__utility/as_const.h | 1 + libc/isystem/__utility/auto_cast.h | 1 + libc/isystem/__utility/cmp.h | 1 + libc/isystem/__utility/convert_to_integral.h | 1 + libc/isystem/__utility/declval.h | 1 + libc/isystem/__utility/exception_guard.h | 1 + libc/isystem/__utility/exchange.h | 1 + libc/isystem/__utility/forward.h | 1 + libc/isystem/__utility/forward_like.h | 1 + libc/isystem/__utility/in_place.h | 1 + libc/isystem/__utility/integer_sequence.h | 1 + libc/isystem/__utility/move.h | 1 + libc/isystem/__utility/pair.h | 1 + libc/isystem/__utility/piecewise_construct.h | 1 + libc/isystem/__utility/priority_tag.h | 1 + libc/isystem/__utility/rel_ops.h | 1 + libc/isystem/__utility/swap.h | 1 + .../__utility/terminate_on_exception.h | 1 + libc/isystem/__utility/to_underlying.h | 1 + libc/isystem/__utility/unreachable.h | 1 + libc/isystem/__variant/monostate.h | 1 + libc/isystem/__verbose_abort | 1 + libc/isystem/algorithm | 4 - libc/isystem/any | 4 - libc/isystem/array | 4 - libc/isystem/atomic | 4 - libc/isystem/barrier | 1 + libc/isystem/bit | 4 - libc/isystem/bitset | 4 - libc/isystem/cassert | 4 - libc/isystem/ccomplex | 4 - libc/isystem/cctype | 4 - libc/isystem/cerrno | 4 - libc/isystem/cfenv | 4 - libc/isystem/cfloat | 4 - libc/isystem/charconv | 4 - libc/isystem/chrono | 4 - libc/isystem/cinttypes | 4 - libc/isystem/ciso646 | 4 - libc/isystem/climits | 4 - libc/isystem/clocale | 4 - libc/isystem/cmath | 4 - libc/isystem/codecvt | 4 - libc/isystem/compare | 4 - libc/isystem/complex | 4 - libc/isystem/concepts | 1 + libc/isystem/condition_variable | 4 - libc/isystem/coroutine | 1 + libc/isystem/csetjmp | 4 - libc/isystem/csignal | 4 - libc/isystem/cstdarg | 4 - libc/isystem/cstdbool | 4 - libc/isystem/cstddef | 4 - libc/isystem/cstdint | 4 - libc/isystem/cstdio | 4 - libc/isystem/cstdlib | 4 - libc/isystem/cstring | 4 - libc/isystem/ctgmath | 4 - libc/isystem/ctime | 4 - libc/isystem/cuchar | 1 + libc/isystem/cwchar | 4 - libc/isystem/cwctype | 4 - libc/isystem/deque | 4 - libc/isystem/exception | 4 - libc/isystem/execution | 4 - libc/isystem/expected | 1 + libc/isystem/experimental/__config | 1 + libc/isystem/experimental/__memory | 1 + libc/isystem/experimental/deque | 1 + libc/isystem/experimental/forward_list | 1 + libc/isystem/experimental/iterator | 1 + libc/isystem/experimental/list | 1 + libc/isystem/experimental/map | 1 + libc/isystem/experimental/memory_resource | 1 + libc/isystem/experimental/propagate_const | 1 + libc/isystem/experimental/regex | 1 + libc/isystem/experimental/set | 1 + libc/isystem/experimental/simd | 1 + libc/isystem/experimental/string | 1 + libc/isystem/experimental/type_traits | 1 + libc/isystem/experimental/unordered_map | 1 + libc/isystem/experimental/unordered_set | 1 + libc/isystem/experimental/utility | 1 + libc/isystem/experimental/vector | 1 + libc/isystem/ext/__hash | 1 + libc/isystem/ext/hash_map | 1 + libc/isystem/ext/hash_set | 1 + libc/isystem/filesystem | 4 - libc/isystem/format | 1 + libc/isystem/forward_list | 4 - libc/isystem/fstream | 4 - libc/isystem/functional | 4 - libc/isystem/future | 4 - libc/isystem/initializer_list | 4 - libc/isystem/iomanip | 4 - libc/isystem/ios | 4 - libc/isystem/iosfwd | 4 - libc/isystem/iostream | 4 - libc/isystem/istream | 4 - libc/isystem/iterator | 4 - libc/isystem/latch | 1 + libc/isystem/libcxx.imp | 1 + libc/isystem/limits | 4 - libc/isystem/list | 4 - libc/isystem/locale | 4 - libc/isystem/map | 4 - libc/isystem/mdspan | 1 + libc/isystem/memory | 4 - libc/isystem/memory_resource | 1 + libc/isystem/module.modulemap | 1 + libc/isystem/mutex | 4 - libc/isystem/new | 4 - libc/isystem/numbers | 1 + libc/isystem/numeric | 4 - libc/isystem/optional | 4 - libc/isystem/ostream | 4 - libc/isystem/queue | 4 - libc/isystem/random | 4 - libc/isystem/ranges | 1 + libc/isystem/ratio | 4 - libc/isystem/regex | 4 - libc/isystem/scoped_allocator | 4 - libc/isystem/semaphore | 1 + libc/isystem/set | 4 - libc/isystem/shared_mutex | 4 - libc/isystem/source_location | 1 + libc/isystem/span | 4 - libc/isystem/sstream | 4 - libc/isystem/stack | 4 - libc/isystem/stdexcept | 4 - libc/isystem/streambuf | 4 - libc/isystem/string | 4 - libc/isystem/string_view | 4 - libc/isystem/strstream | 4 - libc/isystem/system_error | 4 - libc/isystem/thread | 4 - libc/isystem/tuple | 4 - libc/isystem/type_traits | 4 - libc/isystem/typeindex | 4 - libc/isystem/typeinfo | 4 - libc/isystem/unordered_map | 4 - libc/isystem/unordered_set | 4 - libc/isystem/utility | 4 - libc/isystem/valarray | 4 - libc/isystem/variant | 4 - libc/isystem/vector | 4 - libc/isystem/version | 4 - libc/runtime/at_quick_exit.c | 50 + libc/runtime/clone.c | 4 +- libc/runtime/quick_exit.c | 28 + libc/stdlib.h | 3 + libc/str/locale.h | 2 +- libc/thread/pthread_create.c | 15 +- libc/thread/pthread_exit.c | 3 +- libc/thread/thread.h | 3 +- test/libc/BUILD.mk | 1 - test/libc/release/BUILD.mk | 246 - test/libc/release/emulate.sh | 24 - test/libc/release/metal.sh | 28 - test/libc/release/smoke.c | 13 - test/libc/release/smokecxx.cc | 7 - third_party/chibicc/test/BUILD.mk | 12 +- third_party/libcxx/BUILD.mk | 1224 ++- third_party/libcxx/README.cosmo | 12 +- .../libcxx/__algorithm/adjacent_find.h | 53 + third_party/libcxx/__algorithm/all_of.h | 32 + third_party/libcxx/__algorithm/any_of.h | 32 + .../libcxx/__algorithm/binary_search.h | 46 + third_party/libcxx/__algorithm/clamp.h | 46 + third_party/libcxx/__algorithm/comp.h | 71 + .../libcxx/__algorithm/comp_ref_type.h | 78 + third_party/libcxx/__algorithm/copy.h | 124 + .../libcxx/__algorithm/copy_backward.h | 143 + third_party/libcxx/__algorithm/copy_if.h | 39 + .../libcxx/__algorithm/copy_move_common.h | 163 + third_party/libcxx/__algorithm/copy_n.h | 67 + third_party/libcxx/__algorithm/count.h | 35 + third_party/libcxx/__algorithm/count_if.h | 35 + third_party/libcxx/__algorithm/equal.h | 149 + third_party/libcxx/__algorithm/equal_range.h | 87 + third_party/libcxx/__algorithm/fill.h | 51 + third_party/libcxx/__algorithm/fill_n.h | 44 + third_party/libcxx/__algorithm/find.h | 77 + third_party/libcxx/__algorithm/find_end.h | 227 + .../libcxx/__algorithm/find_first_of.h | 52 + third_party/libcxx/__algorithm/find_if.h | 32 + third_party/libcxx/__algorithm/find_if_not.h | 32 + third_party/libcxx/__algorithm/for_each.h | 47 + third_party/libcxx/__algorithm/for_each_n.h | 42 + .../libcxx/__algorithm/for_each_segment.h | 53 + third_party/libcxx/__algorithm/generate.h | 31 + third_party/libcxx/__algorithm/generate_n.h | 35 + .../libcxx/__algorithm/half_positive.h | 51 + .../libcxx/__algorithm/in_found_result.h | 49 + .../libcxx/__algorithm/in_fun_result.h | 49 + .../libcxx/__algorithm/in_in_out_result.h | 56 + third_party/libcxx/__algorithm/in_in_result.h | 53 + .../libcxx/__algorithm/in_out_out_result.h | 54 + .../libcxx/__algorithm/in_out_result.h | 53 + third_party/libcxx/__algorithm/includes.h | 75 + .../libcxx/__algorithm/inplace_merge.h | 257 + third_party/libcxx/__algorithm/is_heap.h | 44 + .../libcxx/__algorithm/is_heap_until.h | 66 + .../libcxx/__algorithm/is_partitioned.h | 38 + .../libcxx/__algorithm/is_permutation.h | 238 + third_party/libcxx/__algorithm/is_sorted.h | 44 + .../libcxx/__algorithm/is_sorted_until.h | 56 + third_party/libcxx/__algorithm/iter_swap.h | 32 + .../libcxx/__algorithm/iterator_operations.h | 175 + .../__algorithm/lexicographical_compare.h | 62 + .../lexicographical_compare_three_way.h | 125 + third_party/libcxx/__algorithm/lower_bound.h | 67 + third_party/libcxx/__algorithm/make_heap.h | 56 + .../libcxx/__algorithm/make_projected.h | 113 + third_party/libcxx/__algorithm/max.h | 71 + third_party/libcxx/__algorithm/max_element.h | 57 + third_party/libcxx/__algorithm/merge.h | 70 + third_party/libcxx/__algorithm/min.h | 71 + third_party/libcxx/__algorithm/min_element.h | 70 + .../libcxx/__algorithm/min_max_result.h | 56 + third_party/libcxx/__algorithm/minmax.h | 69 + .../libcxx/__algorithm/minmax_element.h | 102 + third_party/libcxx/__algorithm/mismatch.h | 63 + third_party/libcxx/__algorithm/move.h | 129 + .../libcxx/__algorithm/move_backward.h | 139 + .../libcxx/__algorithm/next_permutation.h | 78 + third_party/libcxx/__algorithm/none_of.h | 32 + third_party/libcxx/__algorithm/nth_element.h | 258 + third_party/libcxx/__algorithm/partial_sort.h | 97 + .../libcxx/__algorithm/partial_sort_copy.h | 88 + third_party/libcxx/__algorithm/partition.h | 97 + .../libcxx/__algorithm/partition_copy.h | 47 + .../libcxx/__algorithm/partition_point.h | 48 + third_party/libcxx/__algorithm/pop_heap.h | 74 + .../libcxx/__algorithm/prev_permutation.h | 79 + .../libcxx/__algorithm/pstl_any_all_none_of.h | 95 + third_party/libcxx/__algorithm/pstl_backend.h | 125 + .../__algorithm/pstl_backends/cpu_backend.h | 47 + .../pstl_backends/cpu_backends/any_of.h | 90 + .../pstl_backends/cpu_backends/backend.h | 32 + .../pstl_backends/cpu_backends/fill.h | 60 + .../pstl_backends/cpu_backends/find_if.h | 125 + .../pstl_backends/cpu_backends/for_each.h | 60 + .../pstl_backends/cpu_backends/merge.h | 79 + .../pstl_backends/cpu_backends/serial.h | 58 + .../pstl_backends/cpu_backends/thread.h | 59 + .../pstl_backends/cpu_backends/transform.h | 132 + third_party/libcxx/__algorithm/pstl_copy.h | 57 + third_party/libcxx/__algorithm/pstl_fill.h | 79 + third_party/libcxx/__algorithm/pstl_find.h | 89 + .../libcxx/__algorithm/pstl_for_each.h | 71 + .../__algorithm/pstl_frontend_dispatch.h | 45 + third_party/libcxx/__algorithm/pstl_merge.h | 56 + .../libcxx/__algorithm/pstl_transform.h | 66 + third_party/libcxx/__algorithm/push_heap.h | 78 + .../libcxx/__algorithm/ranges_adjacent_find.h | 78 + .../libcxx/__algorithm/ranges_all_of.h | 68 + .../libcxx/__algorithm/ranges_any_of.h | 68 + .../libcxx/__algorithm/ranges_binary_search.h | 63 + third_party/libcxx/__algorithm/ranges_clamp.h | 65 + third_party/libcxx/__algorithm/ranges_copy.h | 67 + .../libcxx/__algorithm/ranges_copy_backward.h | 65 + .../libcxx/__algorithm/ranges_copy_if.h | 81 + .../libcxx/__algorithm/ranges_copy_n.h | 77 + third_party/libcxx/__algorithm/ranges_count.h | 62 + .../libcxx/__algorithm/ranges_count_if.h | 72 + third_party/libcxx/__algorithm/ranges_equal.h | 98 + .../libcxx/__algorithm/ranges_equal_range.h | 78 + third_party/libcxx/__algorithm/ranges_fill.h | 59 + .../libcxx/__algorithm/ranges_fill_n.h | 48 + third_party/libcxx/__algorithm/ranges_find.h | 75 + .../libcxx/__algorithm/ranges_find_end.h | 98 + .../libcxx/__algorithm/ranges_find_first_of.h | 101 + .../libcxx/__algorithm/ranges_find_if.h | 71 + .../libcxx/__algorithm/ranges_find_if_not.h | 63 + .../libcxx/__algorithm/ranges_for_each.h | 78 + .../libcxx/__algorithm/ranges_for_each_n.h | 66 + .../libcxx/__algorithm/ranges_generate.h | 73 + .../libcxx/__algorithm/ranges_generate_n.h | 62 + .../libcxx/__algorithm/ranges_includes.h | 95 + .../libcxx/__algorithm/ranges_inplace_merge.h | 85 + .../libcxx/__algorithm/ranges_is_heap.h | 74 + .../libcxx/__algorithm/ranges_is_heap_until.h | 75 + .../__algorithm/ranges_is_partitioned.h | 81 + .../__algorithm/ranges_is_permutation.h | 89 + .../libcxx/__algorithm/ranges_is_sorted.h | 61 + .../__algorithm/ranges_is_sorted_until.h | 76 + .../__algorithm/ranges_iterator_concept.h | 51 + .../ranges_lexicographical_compare.h | 98 + .../libcxx/__algorithm/ranges_lower_bound.h | 66 + .../libcxx/__algorithm/ranges_make_heap.h | 80 + third_party/libcxx/__algorithm/ranges_max.h | 97 + .../libcxx/__algorithm/ranges_max_element.h | 61 + third_party/libcxx/__algorithm/ranges_merge.h | 142 + third_party/libcxx/__algorithm/ranges_min.h | 91 + .../libcxx/__algorithm/ranges_min_element.h | 74 + .../libcxx/__algorithm/ranges_minmax.h | 155 + .../__algorithm/ranges_minmax_element.h | 71 + .../libcxx/__algorithm/ranges_mismatch.h | 85 + third_party/libcxx/__algorithm/ranges_move.h | 71 + .../libcxx/__algorithm/ranges_move_backward.h | 73 + .../__algorithm/ranges_next_permutation.h | 73 + .../libcxx/__algorithm/ranges_none_of.h | 68 + .../libcxx/__algorithm/ranges_nth_element.h | 80 + .../libcxx/__algorithm/ranges_partial_sort.h | 78 + .../__algorithm/ranges_partial_sort_copy.h | 92 + .../libcxx/__algorithm/ranges_partition.h | 82 + .../__algorithm/ranges_partition_copy.h | 98 + .../__algorithm/ranges_partition_point.h | 88 + .../libcxx/__algorithm/ranges_pop_heap.h | 81 + .../__algorithm/ranges_prev_permutation.h | 77 + .../libcxx/__algorithm/ranges_push_heap.h | 80 + .../libcxx/__algorithm/ranges_remove.h | 64 + .../libcxx/__algorithm/ranges_remove_copy.h | 76 + .../__algorithm/ranges_remove_copy_if.h | 90 + .../libcxx/__algorithm/ranges_remove_if.h | 85 + .../libcxx/__algorithm/ranges_replace.h | 74 + .../libcxx/__algorithm/ranges_replace_copy.h | 91 + .../__algorithm/ranges_replace_copy_if.h | 93 + .../libcxx/__algorithm/ranges_replace_if.h | 77 + .../libcxx/__algorithm/ranges_reverse.h | 83 + .../libcxx/__algorithm/ranges_reverse_copy.h | 67 + .../libcxx/__algorithm/ranges_rotate.h | 71 + .../libcxx/__algorithm/ranges_rotate_copy.h | 68 + .../libcxx/__algorithm/ranges_sample.h | 74 + .../libcxx/__algorithm/ranges_search.h | 135 + .../libcxx/__algorithm/ranges_search_n.h | 117 + .../__algorithm/ranges_set_difference.h | 106 + .../__algorithm/ranges_set_intersection.h | 117 + .../ranges_set_symmetric_difference.h | 117 + .../libcxx/__algorithm/ranges_set_union.h | 121 + .../libcxx/__algorithm/ranges_shuffle.h | 71 + third_party/libcxx/__algorithm/ranges_sort.h | 79 + .../libcxx/__algorithm/ranges_sort_heap.h | 80 + .../__algorithm/ranges_stable_partition.h | 88 + .../libcxx/__algorithm/ranges_stable_sort.h | 79 + .../libcxx/__algorithm/ranges_starts_with.h | 90 + .../libcxx/__algorithm/ranges_swap_ranges.h | 68 + .../libcxx/__algorithm/ranges_transform.h | 170 + .../libcxx/__algorithm/ranges_unique.h | 79 + .../libcxx/__algorithm/ranges_unique_copy.h | 116 + .../libcxx/__algorithm/ranges_upper_bound.h | 75 + third_party/libcxx/__algorithm/remove.h | 45 + third_party/libcxx/__algorithm/remove_copy.h | 38 + .../libcxx/__algorithm/remove_copy_if.h | 38 + third_party/libcxx/__algorithm/remove_if.h | 44 + third_party/libcxx/__algorithm/replace.h | 32 + third_party/libcxx/__algorithm/replace_copy.h | 36 + .../libcxx/__algorithm/replace_copy_if.h | 36 + third_party/libcxx/__algorithm/replace_if.h | 32 + third_party/libcxx/__algorithm/reverse.h | 65 + third_party/libcxx/__algorithm/reverse_copy.h | 32 + third_party/libcxx/__algorithm/rotate.h | 221 + third_party/libcxx/__algorithm/rotate_copy.h | 31 + third_party/libcxx/__algorithm/sample.h | 112 + third_party/libcxx/__algorithm/search.h | 202 + third_party/libcxx/__algorithm/search_n.h | 182 + .../libcxx/__algorithm/set_difference.h | 81 + .../libcxx/__algorithm/set_intersection.h | 99 + .../__algorithm/set_symmetric_difference.h | 105 + third_party/libcxx/__algorithm/set_union.h | 101 + third_party/libcxx/__algorithm/shift_left.h | 55 + third_party/libcxx/__algorithm/shift_right.h | 101 + third_party/libcxx/__algorithm/shuffle.h | 175 + third_party/libcxx/__algorithm/sift_down.h | 114 + third_party/libcxx/__algorithm/sort.h | 940 +++ third_party/libcxx/__algorithm/sort_heap.h | 56 + .../libcxx/__algorithm/stable_partition.h | 328 + third_party/libcxx/__algorithm/stable_sort.h | 278 + third_party/libcxx/__algorithm/swap_ranges.h | 60 + .../__algorithm/three_way_comp_ref_type.h | 70 + third_party/libcxx/__algorithm/transform.h | 43 + .../uniform_random_bit_generator_adaptor.h | 62 + third_party/libcxx/__algorithm/unique.h | 59 + third_party/libcxx/__algorithm/unique_copy.h | 122 + third_party/libcxx/__algorithm/unwrap_iter.h | 82 + third_party/libcxx/__algorithm/unwrap_range.h | 97 + third_party/libcxx/__algorithm/upper_bound.h | 68 + third_party/libcxx/__assert | 49 + third_party/libcxx/__atomic/aliases.h | 116 + third_party/libcxx/__atomic/atomic.h | 664 ++ third_party/libcxx/__atomic/atomic_base.h | 232 + third_party/libcxx/__atomic/atomic_flag.h | 230 + third_party/libcxx/__atomic/atomic_init.h | 27 + .../libcxx/__atomic/atomic_lock_free.h | 48 + third_party/libcxx/__atomic/atomic_sync.h | 112 + .../libcxx/__atomic/check_memory_order.h | 34 + third_party/libcxx/__atomic/contention_t.h | 32 + third_party/libcxx/__atomic/cxx_atomic_impl.h | 831 +++ third_party/libcxx/__atomic/fence.h | 38 + .../libcxx/__atomic/is_always_lock_free.h | 28 + third_party/libcxx/__atomic/kill_dependency.h | 29 + third_party/libcxx/__atomic/memory_order.h | 72 + third_party/libcxx/__availability | 348 + third_party/libcxx/__bit/bit_cast.h | 36 + third_party/libcxx/__bit/bit_ceil.h | 46 + third_party/libcxx/__bit/bit_floor.h | 34 + third_party/libcxx/__bit/bit_log2.h | 34 + third_party/libcxx/__bit/bit_width.h | 33 + third_party/libcxx/__bit/blsr.h | 34 + third_party/libcxx/__bit/byteswap.h | 54 + third_party/libcxx/__bit/countl.h | 104 + third_party/libcxx/__bit/countr.h | 70 + third_party/libcxx/__bit/endian.h | 38 + third_party/libcxx/__bit/has_single_bit.h | 37 + third_party/libcxx/__bit/popcount.h | 61 + third_party/libcxx/__bit/rotate.h | 53 + third_party/libcxx/__bit_reference | 373 +- third_party/libcxx/__bsd_locale_fallbacks.h | 139 - third_party/libcxx/__charconv/chars_format.h | 64 + .../libcxx/__charconv/from_chars_integral.h | 239 + .../libcxx/__charconv/from_chars_result.h | 36 + third_party/libcxx/__charconv/tables.h | 163 + third_party/libcxx/__charconv/to_chars.h | 25 + .../libcxx/__charconv/to_chars_base_10.h | 187 + .../__charconv/to_chars_floating_point.h | 56 + .../libcxx/__charconv/to_chars_integral.h | 326 + .../libcxx/__charconv/to_chars_result.h | 36 + third_party/libcxx/__charconv/traits.h | 199 + third_party/libcxx/__chrono/calendar.h | 44 + third_party/libcxx/__chrono/concepts.h | 36 + .../libcxx/__chrono/convert_to_timespec.h | 56 + third_party/libcxx/__chrono/convert_to_tm.h | 174 + third_party/libcxx/__chrono/day.h | 84 + third_party/libcxx/__chrono/duration.h | 641 ++ third_party/libcxx/__chrono/file_clock.h | 85 + third_party/libcxx/__chrono/formatter.h | 831 +++ third_party/libcxx/__chrono/hh_mm_ss.h | 113 + .../libcxx/__chrono/high_resolution_clock.h | 36 + third_party/libcxx/__chrono/literals.h | 49 + third_party/libcxx/__chrono/month.h | 103 + third_party/libcxx/__chrono/month_weekday.h | 106 + third_party/libcxx/__chrono/monthday.h | 129 + third_party/libcxx/__chrono/ostream.h | 264 + .../libcxx/__chrono/parser_std_format_spec.h | 416 ++ .../libcxx/__chrono/statically_widen.h | 52 + third_party/libcxx/__chrono/steady_clock.h | 44 + third_party/libcxx/__chrono/system_clock.h | 54 + third_party/libcxx/__chrono/time_point.h | 267 + third_party/libcxx/__chrono/weekday.h | 185 + third_party/libcxx/__chrono/year.h | 102 + third_party/libcxx/__chrono/year_month.h | 101 + third_party/libcxx/__chrono/year_month_day.h | 307 + .../libcxx/__chrono/year_month_weekday.h | 255 + .../__compare/common_comparison_category.h | 95 + .../compare_partial_order_fallback.h | 74 + .../__compare/compare_strong_order_fallback.h | 71 + .../libcxx/__compare/compare_three_way.h | 41 + .../__compare/compare_three_way_result.h | 44 + .../__compare/compare_weak_order_fallback.h | 71 + third_party/libcxx/__compare/is_eq.h | 34 + third_party/libcxx/__compare/ordering.h | 326 + third_party/libcxx/__compare/partial_order.h | 74 + third_party/libcxx/__compare/strong_order.h | 139 + .../libcxx/__compare/synth_three_way.h | 57 + .../libcxx/__compare/three_way_comparable.h | 59 + third_party/libcxx/__compare/weak_order.h | 102 + third_party/libcxx/__concepts/arithmetic.h | 52 + third_party/libcxx/__concepts/assignable.h | 41 + .../libcxx/__concepts/boolean_testable.h | 38 + third_party/libcxx/__concepts/class_or_enum.h | 40 + .../libcxx/__concepts/common_reference_with.h | 37 + third_party/libcxx/__concepts/common_with.h | 50 + third_party/libcxx/__concepts/constructible.h | 56 + .../libcxx/__concepts/convertible_to.h | 37 + third_party/libcxx/__concepts/copyable.h | 39 + third_party/libcxx/__concepts/derived_from.h | 35 + third_party/libcxx/__concepts/destructible.h | 32 + .../libcxx/__concepts/different_from.h | 31 + .../libcxx/__concepts/equality_comparable.h | 54 + third_party/libcxx/__concepts/invocable.h | 40 + third_party/libcxx/__concepts/movable.h | 39 + third_party/libcxx/__concepts/predicate.h | 35 + third_party/libcxx/__concepts/regular.h | 33 + third_party/libcxx/__concepts/relation.h | 44 + third_party/libcxx/__concepts/same_as.h | 35 + third_party/libcxx/__concepts/semiregular.h | 33 + third_party/libcxx/__concepts/swappable.h | 121 + .../libcxx/__concepts/totally_ordered.h | 58 + .../__condition_variable/condition_variable.h | 244 + third_party/libcxx/__config | 2299 +++--- third_party/libcxx/__config_site | 51 + .../libcxx/__coroutine/coroutine_handle.h | 201 + .../libcxx/__coroutine/coroutine_traits.h | 53 + .../__coroutine/noop_coroutine_handle.h | 112 + .../libcxx/__coroutine/trivial_awaitables.h | 46 + third_party/libcxx/__debug | 197 +- .../libcxx/__debug_utils/randomize_range.h | 43 + third_party/libcxx/__exception/exception.h | 91 + .../libcxx/__exception/exception_ptr.h | 109 + .../libcxx/__exception/nested_exception.h | 101 + third_party/libcxx/__exception/operations.h | 42 + third_party/libcxx/__exception/terminate.h | 22 + .../libcxx/__expected/bad_expected_access.h | 63 + third_party/libcxx/__expected/expected.h | 1548 ++++ third_party/libcxx/__expected/unexpect.h | 32 + third_party/libcxx/__expected/unexpected.h | 122 + .../libcxx/__filesystem/copy_options.h | 84 + .../libcxx/__filesystem/directory_entry.h | 528 ++ .../libcxx/__filesystem/directory_iterator.h | 166 + .../libcxx/__filesystem/directory_options.h | 82 + third_party/libcxx/__filesystem/file_status.h | 72 + .../libcxx/__filesystem/file_time_type.h | 32 + third_party/libcxx/__filesystem/file_type.h | 43 + .../libcxx/__filesystem/filesystem_error.h | 106 + third_party/libcxx/__filesystem/operations.h | 201 + third_party/libcxx/__filesystem/path.h | 1107 +++ .../libcxx/__filesystem/path_iterator.h | 134 + .../libcxx/__filesystem/perm_options.h | 77 + third_party/libcxx/__filesystem/perms.h | 95 + .../recursive_directory_iterator.h | 186 + third_party/libcxx/__filesystem/space_info.h | 43 + third_party/libcxx/__filesystem/u8path.h | 107 + third_party/libcxx/__format/buffer.h | 643 ++ third_party/libcxx/__format/concepts.h | 76 + .../libcxx/__format/container_adaptor.h | 71 + .../libcxx/__format/enable_insertable.h | 35 + .../libcxx/__format/escaped_output_table.h | 1038 +++ .../extended_grapheme_cluster_table.h | 1661 +++++ third_party/libcxx/__format/format_arg.h | 305 + .../libcxx/__format/format_arg_store.h | 254 + third_party/libcxx/__format/format_args.h | 82 + third_party/libcxx/__format/format_context.h | 222 + third_party/libcxx/__format/format_error.h | 52 + .../libcxx/__format/format_functions.h | 677 ++ third_party/libcxx/__format/format_fwd.h | 39 + .../libcxx/__format/format_parse_context.h | 113 + third_party/libcxx/__format/format_string.h | 167 + .../libcxx/__format/format_to_n_result.h | 35 + third_party/libcxx/__format/formatter.h | 54 + third_party/libcxx/__format/formatter_bool.h | 79 + third_party/libcxx/__format/formatter_char.h | 95 + .../__format/formatter_floating_point.h | 761 ++ .../libcxx/__format/formatter_integer.h | 107 + .../libcxx/__format/formatter_integral.h | 368 + .../libcxx/__format/formatter_output.h | 597 ++ .../libcxx/__format/formatter_pointer.h | 72 + .../libcxx/__format/formatter_string.h | 155 + third_party/libcxx/__format/formatter_tuple.h | 155 + .../libcxx/__format/parser_std_format_spec.h | 1019 +++ .../libcxx/__format/range_default_formatter.h | 216 + third_party/libcxx/__format/range_formatter.h | 277 + third_party/libcxx/__format/unicode.h | 483 ++ .../libcxx/__format/width_estimation_table.h | 271 + .../libcxx/__functional/binary_function.h | 54 + .../libcxx/__functional/binary_negate.h | 50 + third_party/libcxx/__functional/bind.h | 386 + third_party/libcxx/__functional/bind_back.h | 64 + third_party/libcxx/__functional/bind_front.h | 62 + third_party/libcxx/__functional/binder1st.h | 53 + third_party/libcxx/__functional/binder2nd.h | 53 + .../__functional/boyer_moore_searcher.h | 316 + third_party/libcxx/__functional/compose.h | 52 + .../libcxx/__functional/default_searcher.h | 57 + third_party/libcxx/__functional/function.h | 1226 +++ third_party/libcxx/__functional/hash.h | 687 ++ third_party/libcxx/__functional/identity.h | 57 + third_party/libcxx/__functional/invoke.h | 56 + .../libcxx/__functional/is_transparent.h | 36 + third_party/libcxx/__functional/mem_fn.h | 58 + third_party/libcxx/__functional/mem_fun_ref.h | 173 + third_party/libcxx/__functional/not_fn.h | 57 + third_party/libcxx/__functional/operations.h | 590 ++ .../libcxx/__functional/perfect_forward.h | 93 + .../__functional/pointer_to_binary_function.h | 46 + .../__functional/pointer_to_unary_function.h | 46 + .../libcxx/__functional/ranges_operations.h | 105 + .../libcxx/__functional/reference_wrapper.h | 111 + .../libcxx/__functional/unary_function.h | 51 + .../libcxx/__functional/unary_negate.h | 47 + .../libcxx/__functional/weak_result_type.h | 294 + third_party/libcxx/__functional_base | 652 -- third_party/libcxx/__fwd/array.h | 26 + third_party/libcxx/__fwd/fstream.h | 53 + third_party/libcxx/__fwd/get.h | 115 + third_party/libcxx/__fwd/hash.h | 25 + third_party/libcxx/__fwd/ios.h | 41 + third_party/libcxx/__fwd/istream.h | 43 + third_party/libcxx/__fwd/memory_resource.h | 27 + third_party/libcxx/__fwd/ostream.h | 35 + third_party/libcxx/__fwd/pair.h | 25 + third_party/libcxx/__fwd/span.h | 37 + third_party/libcxx/__fwd/sstream.h | 57 + third_party/libcxx/__fwd/streambuf.h | 35 + third_party/libcxx/__fwd/string.h | 110 + third_party/libcxx/__fwd/string_view.h | 50 + third_party/libcxx/__fwd/subrange.h | 38 + third_party/libcxx/__fwd/tuple.h | 29 + third_party/libcxx/__hash_table | 779 +- third_party/libcxx/__ios/fpos.h | 79 + third_party/libcxx/__iterator/access.h | 129 + third_party/libcxx/__iterator/advance.h | 202 + .../libcxx/__iterator/back_insert_iterator.h | 73 + third_party/libcxx/__iterator/bounded_iter.h | 231 + .../libcxx/__iterator/common_iterator.h | 282 + third_party/libcxx/__iterator/concepts.h | 300 + .../libcxx/__iterator/counted_iterator.h | 310 + third_party/libcxx/__iterator/data.h | 51 + .../libcxx/__iterator/default_sentinel.h | 30 + third_party/libcxx/__iterator/distance.h | 108 + third_party/libcxx/__iterator/empty.h | 44 + .../libcxx/__iterator/erase_if_container.h | 40 + .../libcxx/__iterator/front_insert_iterator.h | 71 + .../libcxx/__iterator/incrementable_traits.h | 78 + .../libcxx/__iterator/indirectly_comparable.h | 34 + .../libcxx/__iterator/insert_iterator.h | 81 + .../libcxx/__iterator/istream_iterator.h | 105 + .../libcxx/__iterator/istreambuf_iterator.h | 119 + third_party/libcxx/__iterator/iter_move.h | 104 + third_party/libcxx/__iterator/iter_swap.h | 113 + third_party/libcxx/__iterator/iterator.h | 35 + .../libcxx/__iterator/iterator_traits.h | 539 ++ .../libcxx/__iterator/iterator_with_data.h | 100 + third_party/libcxx/__iterator/mergeable.h | 41 + third_party/libcxx/__iterator/move_iterator.h | 350 + third_party/libcxx/__iterator/move_sentinel.h | 59 + third_party/libcxx/__iterator/next.h | 84 + .../libcxx/__iterator/ostream_iterator.h | 71 + .../libcxx/__iterator/ostreambuf_iterator.h | 77 + third_party/libcxx/__iterator/permutable.h | 35 + third_party/libcxx/__iterator/prev.h | 77 + third_party/libcxx/__iterator/projected.h | 41 + .../libcxx/__iterator/readable_traits.h | 92 + .../libcxx/__iterator/reverse_access.h | 100 + .../libcxx/__iterator/reverse_iterator.h | 533 ++ .../libcxx/__iterator/segmented_iterator.h | 79 + third_party/libcxx/__iterator/size.h | 59 + third_party/libcxx/__iterator/sortable.h | 37 + .../libcxx/__iterator/unreachable_sentinel.h | 38 + third_party/libcxx/__iterator/wrap_iter.h | 286 + third_party/libcxx/__locale | 571 +- .../locale_base_api/bsd_locale_defaults.h | 36 + .../locale_base_api/bsd_locale_fallbacks.h | 148 + .../locale_base_api/locale_guard.h | 79 + third_party/libcxx/__mbstate_t.h | 54 + third_party/libcxx/__mdspan/extents.h | 460 ++ third_party/libcxx/__memory/addressof.h | 76 + third_party/libcxx/__memory/align.h | 25 + third_party/libcxx/__memory/aligned_alloc.h | 66 + .../libcxx/__memory/allocate_at_least.h | 62 + .../libcxx/__memory/allocation_guard.h | 83 + third_party/libcxx/__memory/allocator.h | 271 + third_party/libcxx/__memory/allocator_arg_t.h | 80 + .../libcxx/__memory/allocator_destructor.h | 42 + .../libcxx/__memory/allocator_traits.h | 429 ++ third_party/libcxx/__memory/assume_aligned.h | 46 + third_party/libcxx/__memory/auto_ptr.h | 84 + .../libcxx/__memory/builtin_new_allocator.h | 70 + third_party/libcxx/__memory/compressed_pair.h | 177 + third_party/libcxx/__memory/concepts.h | 69 + third_party/libcxx/__memory/construct_at.h | 130 + third_party/libcxx/__memory/destruct_n.h | 64 + third_party/libcxx/__memory/pointer_traits.h | 242 + .../libcxx/__memory/ranges_construct_at.h | 125 + .../ranges_uninitialized_algorithms.h | 319 + .../libcxx/__memory/raw_storage_iterator.h | 70 + third_party/libcxx/__memory/shared_ptr.h | 2089 ++++++ third_party/libcxx/__memory/swap_allocator.h | 54 + third_party/libcxx/__memory/temp_value.h | 56 + .../libcxx/__memory/temporary_buffer.h | 87 + .../__memory/uninitialized_algorithms.h | 657 ++ third_party/libcxx/__memory/unique_ptr.h | 746 ++ third_party/libcxx/__memory/uses_allocator.h | 59 + .../__memory/uses_allocator_construction.h | 221 + third_party/libcxx/__memory/voidify.h | 30 + .../__memory_resource/memory_resource.h | 75 + .../monotonic_buffer_resource.h | 122 + .../__memory_resource/polymorphic_allocator.h | 224 + .../libcxx/__memory_resource/pool_options.h | 38 + .../synchronized_pool_resource.h | 94 + .../unsynchronized_pool_resource.h | 106 + third_party/libcxx/__mutex/lock_guard.h | 53 + third_party/libcxx/__mutex/mutex.h | 53 + third_party/libcxx/__mutex/tag_types.h | 48 + third_party/libcxx/__mutex/unique_lock.h | 173 + third_party/libcxx/__mutex_base | 542 -- third_party/libcxx/__node_handle | 72 +- third_party/libcxx/__nullptr | 61 - third_party/libcxx/__numeric/accumulate.h | 52 + .../libcxx/__numeric/adjacent_difference.h | 72 + third_party/libcxx/__numeric/exclusive_scan.h | 53 + third_party/libcxx/__numeric/gcd_lcm.h | 100 + third_party/libcxx/__numeric/inclusive_scan.h | 60 + third_party/libcxx/__numeric/inner_product.h | 53 + third_party/libcxx/__numeric/iota.h | 32 + third_party/libcxx/__numeric/midpoint.h | 95 + third_party/libcxx/__numeric/partial_sum.h | 70 + third_party/libcxx/__numeric/reduce.h | 47 + .../__numeric/transform_exclusive_scan.h | 49 + .../__numeric/transform_inclusive_scan.h | 58 + .../libcxx/__numeric/transform_reduce.h | 54 + .../libcxx/__pstl/internal/algorithm_fwd.h | 1768 +++++ .../libcxx/__pstl/internal/algorithm_impl.h | 4174 +++++++++++ .../libcxx/__pstl/internal/execution_defs.h | 76 + .../libcxx/__pstl/internal/execution_impl.h | 97 + .../__pstl/internal/glue_algorithm_defs.h | 655 ++ .../__pstl/internal/glue_algorithm_impl.h | 1081 +++ .../libcxx/__pstl/internal/glue_memory_defs.h | 81 + .../libcxx/__pstl/internal/glue_memory_impl.h | 379 + .../__pstl/internal/glue_numeric_defs.h | 175 + .../__pstl/internal/glue_numeric_impl.h | 319 + .../libcxx/__pstl/internal/memory_impl.h | 106 + .../libcxx/__pstl/internal/numeric_fwd.h | 251 + .../libcxx/__pstl/internal/numeric_impl.h | 536 ++ .../libcxx/__pstl/internal/omp/parallel_for.h | 64 + .../__pstl/internal/omp/parallel_for_each.h | 59 + .../__pstl/internal/omp/parallel_invoke.h | 50 + .../__pstl/internal/omp/parallel_merge.h | 98 + .../__pstl/internal/omp/parallel_reduce.h | 73 + .../__pstl/internal/omp/parallel_scan.h | 136 + .../omp/parallel_stable_partial_sort.h | 33 + .../internal/omp/parallel_stable_sort.h | 160 + .../internal/omp/parallel_transform_reduce.h | 113 + .../internal/omp/parallel_transform_scan.h | 32 + third_party/libcxx/__pstl/internal/omp/util.h | 171 + .../libcxx/__pstl/internal/parallel_backend.h | 39 + .../__pstl/internal/parallel_backend_omp.h | 58 + .../__pstl/internal/parallel_backend_serial.h | 114 + .../__pstl/internal/parallel_backend_tbb.h | 1293 ++++ .../__pstl/internal/parallel_backend_utils.h | 260 + .../__pstl/internal/unseq_backend_simd.h | 762 ++ third_party/libcxx/__pstl/internal/utils.h | 144 + .../libcxx/{vector.cc => __pstl_algorithm} | 13 +- third_party/libcxx/__pstl_config_site | 17 + .../libcxx/{stdexcept.cc => __pstl_memory} | 13 +- third_party/libcxx/__pstl_numeric | 15 + .../libcxx/__random/bernoulli_distribution.h | 145 + .../libcxx/__random/binomial_distribution.h | 229 + .../libcxx/__random/cauchy_distribution.h | 164 + .../__random/chi_squared_distribution.h | 144 + .../libcxx/__random/clamp_to_integral.h | 59 + .../libcxx/__random/default_random_engine.h | 25 + .../libcxx/__random/discard_block_engine.h | 207 + .../libcxx/__random/discrete_distribution.h | 264 + .../__random/exponential_distribution.h | 158 + .../__random/extreme_value_distribution.h | 164 + .../libcxx/__random/fisher_f_distribution.h | 163 + .../libcxx/__random/gamma_distribution.h | 216 + .../libcxx/__random/generate_canonical.h | 53 + .../libcxx/__random/geometric_distribution.h | 143 + .../libcxx/__random/independent_bits_engine.h | 270 + .../libcxx/__random/is_seed_sequence.h | 33 + third_party/libcxx/__random/is_valid.h | 65 + third_party/libcxx/__random/knuth_b.h | 26 + .../__random/linear_congruential_engine.h | 400 + third_party/libcxx/__random/log2.h | 71 + .../libcxx/__random/lognormal_distribution.h | 161 + .../libcxx/__random/mersenne_twister_engine.h | 533 ++ .../__random/negative_binomial_distribution.h | 184 + .../libcxx/__random/normal_distribution.h | 211 + .../piecewise_constant_distribution.h | 359 + .../__random/piecewise_linear_distribution.h | 375 + .../libcxx/__random/poisson_distribution.h | 281 + third_party/libcxx/__random/random_device.h | 84 + third_party/libcxx/__random/ranlux.h | 31 + third_party/libcxx/__random/seed_seq.h | 179 + .../libcxx/__random/shuffle_order_engine.h | 286 + .../libcxx/__random/student_t_distribution.h | 156 + .../__random/subtract_with_carry_engine.h | 351 + .../__random/uniform_int_distribution.h | 295 + .../__random/uniform_random_bit_generator.h | 46 + .../__random/uniform_real_distribution.h | 161 + .../libcxx/__random/weibull_distribution.h | 155 + third_party/libcxx/__ranges/access.h | 230 + third_party/libcxx/__ranges/all.h | 84 + third_party/libcxx/__ranges/as_rvalue_view.h | 137 + third_party/libcxx/__ranges/common_view.h | 136 + third_party/libcxx/__ranges/concepts.h | 150 + .../__ranges/container_compatible_range.h | 33 + third_party/libcxx/__ranges/copyable_box.h | 182 + third_party/libcxx/__ranges/counted.h | 83 + third_party/libcxx/__ranges/dangling.h | 42 + third_party/libcxx/__ranges/data.h | 112 + third_party/libcxx/__ranges/drop_view.h | 313 + third_party/libcxx/__ranges/drop_while_view.h | 129 + third_party/libcxx/__ranges/elements_view.h | 413 ++ third_party/libcxx/__ranges/empty.h | 82 + third_party/libcxx/__ranges/empty_view.h | 54 + .../libcxx/__ranges/enable_borrowed_range.h | 40 + third_party/libcxx/__ranges/enable_view.h | 50 + third_party/libcxx/__ranges/filter_view.h | 265 + third_party/libcxx/__ranges/from_range.h | 33 + third_party/libcxx/__ranges/iota_view.h | 414 ++ third_party/libcxx/__ranges/istream_view.h | 141 + third_party/libcxx/__ranges/join_view.h | 443 ++ third_party/libcxx/__ranges/lazy_split_view.h | 469 ++ .../libcxx/__ranges/non_propagating_cache.h | 114 + third_party/libcxx/__ranges/owning_view.h | 83 + third_party/libcxx/__ranges/range_adaptor.h | 79 + third_party/libcxx/__ranges/rbegin.h | 134 + third_party/libcxx/__ranges/ref_view.h | 89 + third_party/libcxx/__ranges/rend.h | 138 + third_party/libcxx/__ranges/reverse_view.h | 192 + third_party/libcxx/__ranges/single_view.h | 104 + third_party/libcxx/__ranges/size.h | 148 + third_party/libcxx/__ranges/split_view.h | 227 + third_party/libcxx/__ranges/subrange.h | 291 + third_party/libcxx/__ranges/take_view.h | 347 + third_party/libcxx/__ranges/take_while_view.h | 177 + third_party/libcxx/__ranges/transform_view.h | 447 ++ third_party/libcxx/__ranges/view_interface.h | 177 + third_party/libcxx/__ranges/views.h | 35 + third_party/libcxx/__ranges/zip_view.h | 516 ++ third_party/libcxx/__split_buffer | 489 +- third_party/libcxx/__std_mbstate_t.h | 29 + .../libcxx/__stop_token/atomic_unique_lock.h | 139 + .../libcxx/__stop_token/intrusive_list_view.h | 85 + .../__stop_token/intrusive_shared_ptr.h | 128 + third_party/libcxx/__string | 985 --- third_party/libcxx/__string/char_traits.h | 857 +++ .../libcxx/__string/constexpr_c_functions.h | 126 + .../libcxx/__string/extern_template_lists.h | 131 + .../libcxx/__support/android/locale_bionic.h | 72 + .../libcxx/__support/fuchsia/xlocale.h | 22 + third_party/libcxx/__support/ibm/gettod_zos.h | 54 + .../libcxx/__support/ibm/locale_mgmt_zos.h | 53 + third_party/libcxx/__support/ibm/nanosleep.h | 55 + third_party/libcxx/__support/ibm/xlocale.h | 129 + third_party/libcxx/__support/musl/xlocale.h | 52 + third_party/libcxx/__support/newlib/xlocale.h | 23 + .../libcxx/__support/openbsd/xlocale.h | 35 + .../libcxx/__support/win32/locale_win32.h | 282 + .../__support/xlocale/__nop_locale_mgmt.h | 47 + .../__support/xlocale/__posix_l_fallback.h | 115 + .../__support/xlocale/__strtonum_fallback.h | 69 + .../libcxx/{__errc => __system_error/errc.h} | 178 +- .../libcxx/__system_error/error_category.h | 75 + .../libcxx/__system_error/error_code.h | 145 + .../libcxx/__system_error/error_condition.h | 131 + .../libcxx/__system_error/system_error.h | 48 + .../libcxx/__thread/poll_with_backoff.h | 71 + .../libcxx/__thread/timed_backoff_policy.h | 46 + third_party/libcxx/__threading_support | 402 +- third_party/libcxx/__tree | 522 +- third_party/libcxx/__tuple | 551 -- third_party/libcxx/__tuple/make_tuple_types.h | 80 + third_party/libcxx/__tuple/pair_like.h | 32 + third_party/libcxx/__tuple/sfinae_helpers.h | 183 + third_party/libcxx/__tuple/tuple_element.h | 93 + third_party/libcxx/__tuple/tuple_indices.h | 37 + third_party/libcxx/__tuple/tuple_like.h | 51 + third_party/libcxx/__tuple/tuple_like_ext.h | 44 + third_party/libcxx/__tuple/tuple_size.h | 75 + third_party/libcxx/__tuple/tuple_types.h | 24 + third_party/libcxx/__type_traits/add_const.h | 30 + third_party/libcxx/__type_traits/add_cv.h | 30 + .../__type_traits/add_lvalue_reference.h | 53 + .../libcxx/__type_traits/add_pointer.h | 55 + .../__type_traits/add_rvalue_reference.h | 54 + .../libcxx/__type_traits/add_volatile.h | 30 + .../libcxx/__type_traits/aligned_storage.h | 136 + .../libcxx/__type_traits/aligned_union.h | 56 + .../libcxx/__type_traits/alignment_of.h | 32 + third_party/libcxx/__type_traits/apply_cv.h | 78 + .../libcxx/__type_traits/can_extract_key.h | 56 + .../libcxx/__type_traits/common_reference.h | 188 + .../libcxx/__type_traits/common_type.h | 117 + .../libcxx/__type_traits/conditional.h | 58 + .../libcxx/__type_traits/conjunction.h | 58 + third_party/libcxx/__type_traits/copy_cv.h | 54 + third_party/libcxx/__type_traits/copy_cvref.h | 46 + third_party/libcxx/__type_traits/decay.h | 78 + .../libcxx/__type_traits/dependent_type.h | 25 + .../libcxx/__type_traits/disjunction.h | 58 + third_party/libcxx/__type_traits/enable_if.h | 31 + third_party/libcxx/__type_traits/extent.h | 55 + .../has_unique_object_representation.h | 36 + .../__type_traits/has_virtual_destructor.h | 31 + .../libcxx/__type_traits/integral_constant.h | 50 + third_party/libcxx/__type_traits/invoke.h | 536 ++ .../libcxx/__type_traits/is_abstract.h | 31 + .../libcxx/__type_traits/is_aggregate.h | 33 + .../libcxx/__type_traits/is_allocator.h | 36 + .../__type_traits/is_always_bitcastable.h | 82 + .../libcxx/__type_traits/is_arithmetic.h | 34 + third_party/libcxx/__type_traits/is_array.h | 52 + .../libcxx/__type_traits/is_assignable.h | 31 + third_party/libcxx/__type_traits/is_base_of.h | 32 + .../libcxx/__type_traits/is_bounded_array.h | 38 + .../libcxx/__type_traits/is_callable.h | 32 + .../libcxx/__type_traits/is_char_like_type.h | 28 + third_party/libcxx/__type_traits/is_class.h | 31 + .../libcxx/__type_traits/is_compound.h | 46 + third_party/libcxx/__type_traits/is_const.h | 45 + .../__type_traits/is_constant_evaluated.h | 32 + .../libcxx/__type_traits/is_constructible.h | 33 + .../libcxx/__type_traits/is_convertible.h | 115 + .../libcxx/__type_traits/is_copy_assignable.h | 37 + .../__type_traits/is_copy_constructible.h | 36 + .../__type_traits/is_core_convertible.h | 36 + .../__type_traits/is_default_constructible.h | 33 + .../libcxx/__type_traits/is_destructible.h | 102 + third_party/libcxx/__type_traits/is_empty.h | 32 + third_party/libcxx/__type_traits/is_enum.h | 31 + .../__type_traits/is_equality_comparable.h | 78 + .../__type_traits/is_execution_policy.h | 59 + third_party/libcxx/__type_traits/is_final.h | 36 + .../libcxx/__type_traits/is_floating_point.h | 37 + .../libcxx/__type_traits/is_function.h | 43 + .../libcxx/__type_traits/is_fundamental.h | 50 + .../is_implicitly_default_constructible.h | 48 + .../libcxx/__type_traits/is_integral.h | 72 + .../libcxx/__type_traits/is_literal_type.h | 34 + .../is_member_function_pointer.h | 64 + .../__type_traits/is_member_object_pointer.h | 48 + .../libcxx/__type_traits/is_member_pointer.h | 46 + .../libcxx/__type_traits/is_move_assignable.h | 36 + .../__type_traits/is_move_constructible.h | 34 + .../__type_traits/is_nothrow_assignable.h | 32 + .../__type_traits/is_nothrow_constructible.h | 78 + .../__type_traits/is_nothrow_convertible.h | 53 + .../is_nothrow_copy_assignable.h | 38 + .../is_nothrow_copy_constructible.h | 48 + .../is_nothrow_default_constructible.h | 32 + .../__type_traits/is_nothrow_destructible.h | 89 + .../is_nothrow_move_assignable.h | 37 + .../is_nothrow_move_constructible.h | 45 + .../libcxx/__type_traits/is_null_pointer.h | 41 + third_party/libcxx/__type_traits/is_object.h | 52 + third_party/libcxx/__type_traits/is_pod.h | 31 + third_party/libcxx/__type_traits/is_pointer.h | 57 + .../libcxx/__type_traits/is_polymorphic.h | 32 + .../__type_traits/is_primary_template.h | 34 + .../libcxx/__type_traits/is_reference.h | 70 + .../__type_traits/is_reference_wrapper.h | 31 + .../libcxx/__type_traits/is_referenceable.h | 41 + third_party/libcxx/__type_traits/is_same.h | 44 + third_party/libcxx/__type_traits/is_scalar.h | 62 + .../libcxx/__type_traits/is_scoped_enum.h | 42 + third_party/libcxx/__type_traits/is_signed.h | 57 + .../libcxx/__type_traits/is_signed_integer.h | 33 + .../libcxx/__type_traits/is_specialization.h | 45 + .../libcxx/__type_traits/is_standard_layout.h | 32 + .../libcxx/__type_traits/is_swappable.h | 165 + third_party/libcxx/__type_traits/is_trivial.h | 32 + .../__type_traits/is_trivially_assignable.h | 33 + .../is_trivially_constructible.h | 34 + .../is_trivially_copy_assignable.h | 38 + .../is_trivially_copy_constructible.h | 33 + .../__type_traits/is_trivially_copyable.h | 38 + .../is_trivially_default_constructible.h | 32 + .../__type_traits/is_trivially_destructible.h | 45 + ...s_trivially_lexicographically_comparable.h | 53 + .../is_trivially_move_assignable.h | 36 + .../is_trivially_move_constructible.h | 33 + .../libcxx/__type_traits/is_unbounded_array.h | 37 + third_party/libcxx/__type_traits/is_union.h | 31 + .../libcxx/__type_traits/is_unsigned.h | 57 + .../__type_traits/is_unsigned_integer.h | 33 + .../libcxx/__type_traits/is_valid_expansion.h | 31 + third_party/libcxx/__type_traits/is_void.h | 47 + .../libcxx/__type_traits/is_volatile.h | 45 + third_party/libcxx/__type_traits/lazy.h | 25 + .../__type_traits/make_32_64_or_128_bit.h | 48 + .../__type_traits/make_const_lvalue_ref.h | 26 + .../libcxx/__type_traits/make_signed.h | 86 + .../libcxx/__type_traits/make_unsigned.h | 99 + .../libcxx/__type_traits/maybe_const.h | 26 + third_party/libcxx/__type_traits/nat.h | 32 + third_party/libcxx/__type_traits/negation.h | 33 + .../noexcept_move_assign_container.h | 35 + .../libcxx/__type_traits/predicate_traits.h | 26 + third_party/libcxx/__type_traits/promote.h | 98 + third_party/libcxx/__type_traits/rank.h | 46 + .../libcxx/__type_traits/remove_all_extents.h | 47 + .../libcxx/__type_traits/remove_const.h | 42 + .../libcxx/__type_traits/remove_const_ref.h | 27 + third_party/libcxx/__type_traits/remove_cv.h | 44 + .../libcxx/__type_traits/remove_cvref.h | 45 + .../libcxx/__type_traits/remove_extent.h | 47 + .../libcxx/__type_traits/remove_pointer.h | 45 + .../libcxx/__type_traits/remove_reference.h | 44 + .../libcxx/__type_traits/remove_volatile.h | 42 + third_party/libcxx/__type_traits/result_of.h | 39 + .../libcxx/__type_traits/strip_signature.h | 79 + .../libcxx/__type_traits/type_identity.h | 33 + third_party/libcxx/__type_traits/type_list.h | 44 + .../libcxx/__type_traits/underlying_type.h | 41 + third_party/libcxx/__type_traits/unwrap_ref.h | 58 + third_party/libcxx/__type_traits/void_t.h | 29 + third_party/libcxx/__undef_macros | 23 +- third_party/libcxx/__utility/as_const.h | 33 + third_party/libcxx/__utility/auto_cast.h | 22 + third_party/libcxx/__utility/cmp.h | 111 + .../libcxx/__utility/convert_to_integral.h | 72 + third_party/libcxx/__utility/declval.h | 34 + .../libcxx/__utility/exception_guard.h | 139 + third_party/libcxx/__utility/exchange.h | 38 + third_party/libcxx/__utility/forward.h | 38 + third_party/libcxx/__utility/forward_like.h | 46 + third_party/libcxx/__utility/in_place.h | 59 + .../libcxx/__utility/integer_sequence.h | 153 + third_party/libcxx/__utility/move.h | 44 + third_party/libcxx/__utility/pair.h | 896 +++ .../libcxx/__utility/piecewise_construct.h | 30 + third_party/libcxx/__utility/priority_tag.h | 26 + third_party/libcxx/__utility/rel_ops.h | 59 + third_party/libcxx/__utility/swap.h | 54 + .../libcxx/__utility/terminate_on_exception.h | 47 + third_party/libcxx/__utility/to_underlying.h | 40 + third_party/libcxx/__utility/unreachable.h | 34 + third_party/libcxx/__variant/monostate.h | 64 + third_party/libcxx/__verbose_abort | 60 + third_party/libcxx/algorithm | 6526 ++++------------ third_party/libcxx/algorithm.cc | 95 - third_party/libcxx/any | 182 +- third_party/libcxx/array | 444 +- third_party/libcxx/atomic | 2476 +------ third_party/libcxx/atomic_support.hh | 150 - third_party/libcxx/barrier | 345 + third_party/libcxx/bit | 475 +- third_party/libcxx/bitset | 386 +- third_party/libcxx/cassert | 16 +- third_party/libcxx/ccomplex | 13 +- third_party/libcxx/cctype | 47 +- third_party/libcxx/cerrno | 24 +- third_party/libcxx/cfenv | 46 +- third_party/libcxx/cfloat | 22 +- third_party/libcxx/charconv | 586 +- third_party/libcxx/charconv.cc | 160 - third_party/libcxx/chrono | 2490 +------ third_party/libcxx/chrono.cc | 67 - third_party/libcxx/cinttypes | 42 +- third_party/libcxx/ciso646 | 11 +- third_party/libcxx/climits | 22 +- third_party/libcxx/clocale | 28 +- third_party/libcxx/cmath | 678 +- third_party/libcxx/codecvt | 580 +- third_party/libcxx/compare | 758 +- third_party/libcxx/complex | 814 +- third_party/libcxx/complex.h | 32 + third_party/libcxx/concepts | 166 + third_party/libcxx/condition_variable | 61 +- third_party/libcxx/coroutine | 63 + third_party/libcxx/countof.internal.hh | 20 - third_party/libcxx/csetjmp | 24 +- third_party/libcxx/csignal | 24 +- third_party/libcxx/cstdarg | 32 +- third_party/libcxx/cstdbool | 10 +- third_party/libcxx/cstddef | 90 +- third_party/libcxx/cstdint | 88 +- third_party/libcxx/cstdio | 138 +- third_party/libcxx/cstdlib | 132 +- third_party/libcxx/cstring | 79 +- third_party/libcxx/ctgmath | 15 +- third_party/libcxx/ctime | 68 +- third_party/libcxx/ctype.h | 10 +- third_party/libcxx/cuchar | 76 + third_party/libcxx/cwchar | 237 +- third_party/libcxx/cwctype | 66 +- third_party/libcxx/deque | 2684 +++---- third_party/libcxx/errno.h | 330 +- third_party/libcxx/exception | 258 +- third_party/libcxx/exception.cc | 21 - third_party/libcxx/execution | 135 +- third_party/libcxx/expected | 54 + third_party/libcxx/experimental/__config | 31 +- third_party/libcxx/experimental/__memory | 120 + third_party/libcxx/experimental/deque | 52 + third_party/libcxx/experimental/forward_list | 52 + third_party/libcxx/experimental/iterator | 126 + third_party/libcxx/experimental/list | 52 + third_party/libcxx/experimental/map | 62 + .../libcxx/experimental/memory_resource | 444 ++ .../libcxx/experimental/propagate_const | 601 ++ third_party/libcxx/experimental/regex | 69 + third_party/libcxx/experimental/set | 62 + third_party/libcxx/experimental/simd | 1585 ++++ third_party/libcxx/experimental/string | 73 + third_party/libcxx/experimental/type_traits | 155 + third_party/libcxx/experimental/unordered_map | 78 + third_party/libcxx/experimental/unordered_set | 64 + third_party/libcxx/experimental/utility | 47 + third_party/libcxx/experimental/vector | 52 + third_party/libcxx/ext/__hash | 133 + third_party/libcxx/fenv.h | 118 + third_party/libcxx/filesystem | 2688 +------ third_party/libcxx/filesystem_common.hh | 425 -- third_party/libcxx/float.h | 95 + third_party/libcxx/format | 206 + third_party/libcxx/forward_list | 447 +- third_party/libcxx/fstream | 344 +- third_party/libcxx/functional | 2824 +------ third_party/libcxx/future | 633 +- third_party/libcxx/include/config_elast.hh | 35 - third_party/libcxx/initializer_list | 29 +- third_party/libcxx/inttypes.h | 264 + third_party/libcxx/iomanip | 251 +- third_party/libcxx/ios | 200 +- third_party/libcxx/iosfwd | 156 +- third_party/libcxx/iostream | 37 +- third_party/libcxx/istream | 313 +- third_party/libcxx/iterator | 2004 +---- third_party/libcxx/latch | 121 + third_party/libcxx/libcxx.imp | 53 + third_party/libcxx/limits | 56 +- third_party/libcxx/limits.h | 31 +- third_party/libcxx/list | 905 ++- third_party/libcxx/locale | 952 +-- third_party/libcxx/locale.h | 16 +- third_party/libcxx/locale1.cc | 1659 ----- third_party/libcxx/locale2.cc | 2903 -------- third_party/libcxx/locale3.cc | 722 -- third_party/libcxx/locale4.cc | 1009 --- third_party/libcxx/map | 563 +- third_party/libcxx/math.h | 1991 +++-- third_party/libcxx/mdspan | 69 + third_party/libcxx/memory | 5254 +------------ third_party/libcxx/memory_resource | 65 + third_party/libcxx/module.modulemap | 1856 +++++ third_party/libcxx/mutex | 157 +- third_party/libcxx/new | 287 +- third_party/libcxx/new.cc | 226 - third_party/libcxx/numbers | 138 + third_party/libcxx/numeric | 526 +- third_party/libcxx/optional | 801 +- third_party/libcxx/ostream | 490 +- third_party/libcxx/queue | 388 +- third_party/libcxx/random | 5261 +------------ third_party/libcxx/random.cc | 130 - third_party/libcxx/ranges | 410 + third_party/libcxx/ratio | 80 +- third_party/libcxx/refstring.hh | 114 - third_party/libcxx/regex | 758 +- third_party/libcxx/scoped_allocator | 102 +- third_party/libcxx/semaphore | 198 + third_party/libcxx/set | 363 +- third_party/libcxx/setjmp.h | 46 + third_party/libcxx/shared_mutex | 110 +- third_party/libcxx/source_location | 87 + third_party/libcxx/span | 538 +- third_party/libcxx/src/algorithm.cpp | 47 + third_party/libcxx/{any.cc => src/any.cpp} | 12 +- third_party/libcxx/src/atomic.cpp | 220 + third_party/libcxx/src/barrier.cpp | 97 + third_party/libcxx/src/bind.cpp | 29 + third_party/libcxx/src/charconv.cpp | 86 + third_party/libcxx/src/chrono.cpp | 254 + .../libcxx/src/chrono_system_time_init.h | 2 + .../condition_variable.cpp} | 27 +- .../condition_variable_destructor.cpp} | 6 +- third_party/libcxx/src/debug.cpp | 559 ++ third_party/libcxx/src/exception.cpp | 35 + .../src/experimental/memory_resource.cpp | 149 + .../memory_resource_init_helper.h | 2 + .../filesystem/directory_iterator.cpp} | 164 +- .../libcxx/src/filesystem/filesystem_common.h | 611 ++ .../libcxx/src/filesystem/int128_builtins.cpp | 54 + .../filesystem/operations.cpp} | 861 ++- .../libcxx/src/filesystem/posix_compat.h | 522 ++ .../{functional.cc => src/functional.cpp} | 10 +- .../libcxx/{future.cc => src/future.cpp} | 38 +- third_party/libcxx/{hash.cc => src/hash.cpp} | 14 +- .../libcxx/src/include/apple_availability.h | 34 + .../include/atomic_support.h} | 8 +- .../libcxx/{ => src/include}/config_elast.h | 25 +- third_party/libcxx/src/include/refstring.h | 140 + third_party/libcxx/src/include/ryu/common.h | 109 + third_party/libcxx/src/include/ryu/d2fixed.h | 60 + .../src/include/ryu/d2fixed_full_table.h | 4451 +++++++++++ third_party/libcxx/src/include/ryu/d2s.h | 62 + .../libcxx/src/include/ryu/d2s_full_table.h | 368 + .../libcxx/src/include/ryu/d2s_intrinsics.h | 260 + .../libcxx/src/include/ryu/digit_table.h | 57 + third_party/libcxx/src/include/ryu/f2s.h | 55 + third_party/libcxx/src/include/ryu/ryu.h | 149 + .../include/sso_allocator.h} | 28 +- .../src/include/to_chars_floating_point.h | 1085 +++ third_party/libcxx/{ios.cc => src/ios.cpp} | 72 +- third_party/libcxx/src/ios.instantiations.cpp | 48 + .../libcxx/{iostream.cc => src/iostream.cpp} | 69 +- third_party/libcxx/src/iostream_init.h | 2 + .../libcxx/src/legacy_debug_handler.cpp | 54 + .../libcxx/src/legacy_pointer_safety.cpp | 23 + third_party/libcxx/src/locale.cpp | 6596 +++++++++++++++++ .../libcxx/{memory.cc => src/memory.cpp} | 129 +- third_party/libcxx/src/memory_resource.cpp | 496 ++ .../libcxx/src/memory_resource_init_helper.h | 2 + .../libcxx/{mutex.cc => src/mutex.cpp} | 65 +- third_party/libcxx/src/mutex_destructor.cpp | 50 + third_party/libcxx/src/new.cpp | 294 + .../libcxx/{optional.cc => src/optional.cpp} | 23 +- third_party/libcxx/src/random.cpp | 216 + .../libcxx/{regex.cc => src/regex.cpp} | 130 +- third_party/libcxx/src/ryu/README.txt | 11 + third_party/libcxx/src/ryu/d2fixed.cpp | 669 ++ third_party/libcxx/src/ryu/d2s.cpp | 783 ++ third_party/libcxx/src/ryu/f2s.cpp | 716 ++ .../{shared_mutex.cc => src/shared_mutex.cpp} | 26 +- .../libcxx/{__std_stream => src/std_stream.h} | 20 +- third_party/libcxx/src/stdexcept.cpp | 17 + third_party/libcxx/src/string.cpp | 392 + .../{strstream.cc => src/strstream.cpp} | 23 +- .../libcxx/src/support/ibm/mbsnrtowcs.cpp | 95 + .../libcxx/src/support/ibm/wcsnrtombs.cpp | 93 + .../libcxx/src/support/ibm/xlocale_zos.cpp | 138 + .../support/runtime/exception_fallback.ipp | 158 + .../src/support/runtime/exception_glibcxx.ipp | 32 + .../support/runtime/exception_libcxxabi.ipp} | 10 +- .../support/runtime/exception_libcxxrt.ipp | 25 + .../src/support/runtime/exception_msvc.ipp | 163 + .../runtime/exception_pointer_cxxabi.ipp} | 18 +- .../runtime/exception_pointer_glibcxx.ipp | 77 + .../runtime/exception_pointer_msvc.ipp | 86 + .../exception_pointer_unimplemented.ipp | 79 + .../support/runtime/new_handler_fallback.ipp | 26 + .../src/support/runtime/stdexcept_default.ipp | 64 + .../support/runtime/stdexcept_vcruntime.ipp | 16 + .../libcxx/src/support/win32/locale_win32.cpp | 143 + .../libcxx/src/support/win32/support.cpp | 172 + .../libcxx/src/support/win32/thread_win32.cpp | 274 + third_party/libcxx/src/system_error.cpp | 298 + .../libcxx/{thread.cc => src/thread.cpp} | 105 +- third_party/libcxx/src/typeinfo.cpp | 58 + .../libcxx/{valarray.cc => src/valarray.cpp} | 4 +- .../libcxx/{variant.cc => src/variant.cpp} | 4 +- third_party/libcxx/src/vector.cpp | 34 + third_party/libcxx/src/verbose_abort.cpp | 77 + third_party/libcxx/sstream | 635 +- third_party/libcxx/stack | 117 +- third_party/libcxx/stdatomic.h | 237 + third_party/libcxx/stdbool.h | 40 + third_party/libcxx/stddef.h | 53 + third_party/libcxx/stdexcept | 95 +- third_party/libcxx/stdexcept_default.hh | 59 - third_party/libcxx/stdint.h | 127 + third_party/libcxx/stdio.h | 14 +- third_party/libcxx/stdlib.h | 96 +- third_party/libcxx/streambuf | 58 +- third_party/libcxx/string | 4325 +++++------ third_party/libcxx/string.cc | 458 -- third_party/libcxx/string.h | 98 +- third_party/libcxx/string_view | 711 +- third_party/libcxx/strstream | 98 +- third_party/libcxx/system_error | 384 +- third_party/libcxx/system_error.cc | 236 - third_party/libcxx/tgmath.h | 34 + third_party/libcxx/thread | 251 +- third_party/libcxx/tuple | 1715 +++-- third_party/libcxx/type_traits | 3797 +--------- third_party/libcxx/typeindex | 40 +- third_party/libcxx/typeinfo | 176 +- third_party/libcxx/uchar.h | 56 + third_party/libcxx/unordered_map | 935 ++- third_party/libcxx/unordered_set | 724 +- third_party/libcxx/utility | 1536 +--- third_party/libcxx/valarray | 634 +- third_party/libcxx/variant | 725 +- third_party/libcxx/vector | 2601 ++++--- third_party/libcxx/version | 347 +- third_party/libcxx/wchar.h | 158 +- third_party/libcxx/wctype.h | 26 +- third_party/libcxxabi/cxa_default_handlers.cc | 2 +- third_party/libcxxabi/cxa_exception.cc | 2 +- third_party/libcxxabi/cxa_guard_impl.h | 2 +- third_party/libcxxabi/cxa_handlers.cc | 2 +- third_party/libcxxabi/stdlib_stdexcept.cc | 2 +- third_party/openmp/kmp_config.h | 3 + third_party/openmp/kmp_lock.cpp | 6 +- third_party/openmp/kmp_runtime.cpp | 2 + tool/cosmocc/bin/cosmocc | 1 + tool/cosmocc/bin/cosmocross | 1 + 2078 files changed, 165657 insertions(+), 65010 deletions(-) create mode 100644 libc/isystem/__algorithm/adjacent_find.h create mode 100644 libc/isystem/__algorithm/all_of.h create mode 100644 libc/isystem/__algorithm/any_of.h create mode 100644 libc/isystem/__algorithm/binary_search.h create mode 100644 libc/isystem/__algorithm/clamp.h create mode 100644 libc/isystem/__algorithm/comp.h create mode 100644 libc/isystem/__algorithm/comp_ref_type.h create mode 100644 libc/isystem/__algorithm/copy.h create mode 100644 libc/isystem/__algorithm/copy_backward.h create mode 100644 libc/isystem/__algorithm/copy_if.h create mode 100644 libc/isystem/__algorithm/copy_move_common.h create mode 100644 libc/isystem/__algorithm/copy_n.h create mode 100644 libc/isystem/__algorithm/count.h create mode 100644 libc/isystem/__algorithm/count_if.h create mode 100644 libc/isystem/__algorithm/equal.h create mode 100644 libc/isystem/__algorithm/equal_range.h create mode 100644 libc/isystem/__algorithm/fill.h create mode 100644 libc/isystem/__algorithm/fill_n.h create mode 100644 libc/isystem/__algorithm/find.h create mode 100644 libc/isystem/__algorithm/find_end.h create mode 100644 libc/isystem/__algorithm/find_first_of.h create mode 100644 libc/isystem/__algorithm/find_if.h create mode 100644 libc/isystem/__algorithm/find_if_not.h create mode 100644 libc/isystem/__algorithm/for_each.h create mode 100644 libc/isystem/__algorithm/for_each_n.h create mode 100644 libc/isystem/__algorithm/for_each_segment.h create mode 100644 libc/isystem/__algorithm/generate.h create mode 100644 libc/isystem/__algorithm/generate_n.h create mode 100644 libc/isystem/__algorithm/half_positive.h create mode 100644 libc/isystem/__algorithm/in_found_result.h create mode 100644 libc/isystem/__algorithm/in_fun_result.h create mode 100644 libc/isystem/__algorithm/in_in_out_result.h create mode 100644 libc/isystem/__algorithm/in_in_result.h create mode 100644 libc/isystem/__algorithm/in_out_out_result.h create mode 100644 libc/isystem/__algorithm/in_out_result.h create mode 100644 libc/isystem/__algorithm/includes.h create mode 100644 libc/isystem/__algorithm/inplace_merge.h create mode 100644 libc/isystem/__algorithm/is_heap.h create mode 100644 libc/isystem/__algorithm/is_heap_until.h create mode 100644 libc/isystem/__algorithm/is_partitioned.h create mode 100644 libc/isystem/__algorithm/is_permutation.h create mode 100644 libc/isystem/__algorithm/is_sorted.h create mode 100644 libc/isystem/__algorithm/is_sorted_until.h create mode 100644 libc/isystem/__algorithm/iter_swap.h create mode 100644 libc/isystem/__algorithm/iterator_operations.h create mode 100644 libc/isystem/__algorithm/lexicographical_compare.h create mode 100644 libc/isystem/__algorithm/lexicographical_compare_three_way.h create mode 100644 libc/isystem/__algorithm/lower_bound.h create mode 100644 libc/isystem/__algorithm/make_heap.h create mode 100644 libc/isystem/__algorithm/make_projected.h create mode 100644 libc/isystem/__algorithm/max.h create mode 100644 libc/isystem/__algorithm/max_element.h create mode 100644 libc/isystem/__algorithm/merge.h create mode 100644 libc/isystem/__algorithm/min.h create mode 100644 libc/isystem/__algorithm/min_element.h create mode 100644 libc/isystem/__algorithm/min_max_result.h create mode 100644 libc/isystem/__algorithm/minmax.h create mode 100644 libc/isystem/__algorithm/minmax_element.h create mode 100644 libc/isystem/__algorithm/mismatch.h create mode 100644 libc/isystem/__algorithm/move.h create mode 100644 libc/isystem/__algorithm/move_backward.h create mode 100644 libc/isystem/__algorithm/next_permutation.h create mode 100644 libc/isystem/__algorithm/none_of.h create mode 100644 libc/isystem/__algorithm/nth_element.h create mode 100644 libc/isystem/__algorithm/partial_sort.h create mode 100644 libc/isystem/__algorithm/partial_sort_copy.h create mode 100644 libc/isystem/__algorithm/partition.h create mode 100644 libc/isystem/__algorithm/partition_copy.h create mode 100644 libc/isystem/__algorithm/partition_point.h create mode 100644 libc/isystem/__algorithm/pop_heap.h create mode 100644 libc/isystem/__algorithm/prev_permutation.h create mode 100644 libc/isystem/__algorithm/pstl_any_all_none_of.h create mode 100644 libc/isystem/__algorithm/pstl_backend.h create mode 100644 libc/isystem/__algorithm/pstl_backends/cpu_backend.h create mode 100644 libc/isystem/__algorithm/pstl_backends/cpu_backends/any_of.h create mode 100644 libc/isystem/__algorithm/pstl_backends/cpu_backends/backend.h create mode 100644 libc/isystem/__algorithm/pstl_backends/cpu_backends/fill.h create mode 100644 libc/isystem/__algorithm/pstl_backends/cpu_backends/find_if.h create mode 100644 libc/isystem/__algorithm/pstl_backends/cpu_backends/for_each.h create mode 100644 libc/isystem/__algorithm/pstl_backends/cpu_backends/merge.h create mode 100644 libc/isystem/__algorithm/pstl_backends/cpu_backends/serial.h create mode 100644 libc/isystem/__algorithm/pstl_backends/cpu_backends/thread.h create mode 100644 libc/isystem/__algorithm/pstl_backends/cpu_backends/transform.h create mode 100644 libc/isystem/__algorithm/pstl_copy.h create mode 100644 libc/isystem/__algorithm/pstl_fill.h create mode 100644 libc/isystem/__algorithm/pstl_find.h create mode 100644 libc/isystem/__algorithm/pstl_for_each.h create mode 100644 libc/isystem/__algorithm/pstl_frontend_dispatch.h create mode 100644 libc/isystem/__algorithm/pstl_merge.h create mode 100644 libc/isystem/__algorithm/pstl_transform.h create mode 100644 libc/isystem/__algorithm/push_heap.h create mode 100644 libc/isystem/__algorithm/ranges_adjacent_find.h create mode 100644 libc/isystem/__algorithm/ranges_all_of.h create mode 100644 libc/isystem/__algorithm/ranges_any_of.h create mode 100644 libc/isystem/__algorithm/ranges_binary_search.h create mode 100644 libc/isystem/__algorithm/ranges_clamp.h create mode 100644 libc/isystem/__algorithm/ranges_copy.h create mode 100644 libc/isystem/__algorithm/ranges_copy_backward.h create mode 100644 libc/isystem/__algorithm/ranges_copy_if.h create mode 100644 libc/isystem/__algorithm/ranges_copy_n.h create mode 100644 libc/isystem/__algorithm/ranges_count.h create mode 100644 libc/isystem/__algorithm/ranges_count_if.h create mode 100644 libc/isystem/__algorithm/ranges_equal.h create mode 100644 libc/isystem/__algorithm/ranges_equal_range.h create mode 100644 libc/isystem/__algorithm/ranges_fill.h create mode 100644 libc/isystem/__algorithm/ranges_fill_n.h create mode 100644 libc/isystem/__algorithm/ranges_find.h create mode 100644 libc/isystem/__algorithm/ranges_find_end.h create mode 100644 libc/isystem/__algorithm/ranges_find_first_of.h create mode 100644 libc/isystem/__algorithm/ranges_find_if.h create mode 100644 libc/isystem/__algorithm/ranges_find_if_not.h create mode 100644 libc/isystem/__algorithm/ranges_for_each.h create mode 100644 libc/isystem/__algorithm/ranges_for_each_n.h create mode 100644 libc/isystem/__algorithm/ranges_generate.h create mode 100644 libc/isystem/__algorithm/ranges_generate_n.h create mode 100644 libc/isystem/__algorithm/ranges_includes.h create mode 100644 libc/isystem/__algorithm/ranges_inplace_merge.h create mode 100644 libc/isystem/__algorithm/ranges_is_heap.h create mode 100644 libc/isystem/__algorithm/ranges_is_heap_until.h create mode 100644 libc/isystem/__algorithm/ranges_is_partitioned.h create mode 100644 libc/isystem/__algorithm/ranges_is_permutation.h create mode 100644 libc/isystem/__algorithm/ranges_is_sorted.h create mode 100644 libc/isystem/__algorithm/ranges_is_sorted_until.h create mode 100644 libc/isystem/__algorithm/ranges_iterator_concept.h create mode 100644 libc/isystem/__algorithm/ranges_lexicographical_compare.h create mode 100644 libc/isystem/__algorithm/ranges_lower_bound.h create mode 100644 libc/isystem/__algorithm/ranges_make_heap.h create mode 100644 libc/isystem/__algorithm/ranges_max.h create mode 100644 libc/isystem/__algorithm/ranges_max_element.h create mode 100644 libc/isystem/__algorithm/ranges_merge.h create mode 100644 libc/isystem/__algorithm/ranges_min.h create mode 100644 libc/isystem/__algorithm/ranges_min_element.h create mode 100644 libc/isystem/__algorithm/ranges_minmax.h create mode 100644 libc/isystem/__algorithm/ranges_minmax_element.h create mode 100644 libc/isystem/__algorithm/ranges_mismatch.h create mode 100644 libc/isystem/__algorithm/ranges_move.h create mode 100644 libc/isystem/__algorithm/ranges_move_backward.h create mode 100644 libc/isystem/__algorithm/ranges_next_permutation.h create mode 100644 libc/isystem/__algorithm/ranges_none_of.h create mode 100644 libc/isystem/__algorithm/ranges_nth_element.h create mode 100644 libc/isystem/__algorithm/ranges_partial_sort.h create mode 100644 libc/isystem/__algorithm/ranges_partial_sort_copy.h create mode 100644 libc/isystem/__algorithm/ranges_partition.h create mode 100644 libc/isystem/__algorithm/ranges_partition_copy.h create mode 100644 libc/isystem/__algorithm/ranges_partition_point.h create mode 100644 libc/isystem/__algorithm/ranges_pop_heap.h create mode 100644 libc/isystem/__algorithm/ranges_prev_permutation.h create mode 100644 libc/isystem/__algorithm/ranges_push_heap.h create mode 100644 libc/isystem/__algorithm/ranges_remove.h create mode 100644 libc/isystem/__algorithm/ranges_remove_copy.h create mode 100644 libc/isystem/__algorithm/ranges_remove_copy_if.h create mode 100644 libc/isystem/__algorithm/ranges_remove_if.h create mode 100644 libc/isystem/__algorithm/ranges_replace.h create mode 100644 libc/isystem/__algorithm/ranges_replace_copy.h create mode 100644 libc/isystem/__algorithm/ranges_replace_copy_if.h create mode 100644 libc/isystem/__algorithm/ranges_replace_if.h create mode 100644 libc/isystem/__algorithm/ranges_reverse.h create mode 100644 libc/isystem/__algorithm/ranges_reverse_copy.h create mode 100644 libc/isystem/__algorithm/ranges_rotate.h create mode 100644 libc/isystem/__algorithm/ranges_rotate_copy.h create mode 100644 libc/isystem/__algorithm/ranges_sample.h create mode 100644 libc/isystem/__algorithm/ranges_search.h create mode 100644 libc/isystem/__algorithm/ranges_search_n.h create mode 100644 libc/isystem/__algorithm/ranges_set_difference.h create mode 100644 libc/isystem/__algorithm/ranges_set_intersection.h create mode 100644 libc/isystem/__algorithm/ranges_set_symmetric_difference.h create mode 100644 libc/isystem/__algorithm/ranges_set_union.h create mode 100644 libc/isystem/__algorithm/ranges_shuffle.h create mode 100644 libc/isystem/__algorithm/ranges_sort.h create mode 100644 libc/isystem/__algorithm/ranges_sort_heap.h create mode 100644 libc/isystem/__algorithm/ranges_stable_partition.h create mode 100644 libc/isystem/__algorithm/ranges_stable_sort.h create mode 100644 libc/isystem/__algorithm/ranges_starts_with.h create mode 100644 libc/isystem/__algorithm/ranges_swap_ranges.h create mode 100644 libc/isystem/__algorithm/ranges_transform.h create mode 100644 libc/isystem/__algorithm/ranges_unique.h create mode 100644 libc/isystem/__algorithm/ranges_unique_copy.h create mode 100644 libc/isystem/__algorithm/ranges_upper_bound.h create mode 100644 libc/isystem/__algorithm/remove.h create mode 100644 libc/isystem/__algorithm/remove_copy.h create mode 100644 libc/isystem/__algorithm/remove_copy_if.h create mode 100644 libc/isystem/__algorithm/remove_if.h create mode 100644 libc/isystem/__algorithm/replace.h create mode 100644 libc/isystem/__algorithm/replace_copy.h create mode 100644 libc/isystem/__algorithm/replace_copy_if.h create mode 100644 libc/isystem/__algorithm/replace_if.h create mode 100644 libc/isystem/__algorithm/reverse.h create mode 100644 libc/isystem/__algorithm/reverse_copy.h create mode 100644 libc/isystem/__algorithm/rotate.h create mode 100644 libc/isystem/__algorithm/rotate_copy.h create mode 100644 libc/isystem/__algorithm/sample.h create mode 100644 libc/isystem/__algorithm/search.h create mode 100644 libc/isystem/__algorithm/search_n.h create mode 100644 libc/isystem/__algorithm/set_difference.h create mode 100644 libc/isystem/__algorithm/set_intersection.h create mode 100644 libc/isystem/__algorithm/set_symmetric_difference.h create mode 100644 libc/isystem/__algorithm/set_union.h create mode 100644 libc/isystem/__algorithm/shift_left.h create mode 100644 libc/isystem/__algorithm/shift_right.h create mode 100644 libc/isystem/__algorithm/shuffle.h create mode 100644 libc/isystem/__algorithm/sift_down.h create mode 100644 libc/isystem/__algorithm/sort.h create mode 100644 libc/isystem/__algorithm/sort_heap.h create mode 100644 libc/isystem/__algorithm/stable_partition.h create mode 100644 libc/isystem/__algorithm/stable_sort.h create mode 100644 libc/isystem/__algorithm/swap_ranges.h create mode 100644 libc/isystem/__algorithm/three_way_comp_ref_type.h create mode 100644 libc/isystem/__algorithm/transform.h create mode 100644 libc/isystem/__algorithm/uniform_random_bit_generator_adaptor.h create mode 100644 libc/isystem/__algorithm/unique.h create mode 100644 libc/isystem/__algorithm/unique_copy.h create mode 100644 libc/isystem/__algorithm/unwrap_iter.h create mode 100644 libc/isystem/__algorithm/unwrap_range.h create mode 100644 libc/isystem/__algorithm/upper_bound.h create mode 100644 libc/isystem/__assert create mode 100644 libc/isystem/__atomic/aliases.h create mode 100644 libc/isystem/__atomic/atomic.h create mode 100644 libc/isystem/__atomic/atomic_base.h create mode 100644 libc/isystem/__atomic/atomic_flag.h create mode 100644 libc/isystem/__atomic/atomic_init.h create mode 100644 libc/isystem/__atomic/atomic_lock_free.h create mode 100644 libc/isystem/__atomic/atomic_sync.h create mode 100644 libc/isystem/__atomic/check_memory_order.h create mode 100644 libc/isystem/__atomic/contention_t.h create mode 100644 libc/isystem/__atomic/cxx_atomic_impl.h create mode 100644 libc/isystem/__atomic/fence.h create mode 100644 libc/isystem/__atomic/is_always_lock_free.h create mode 100644 libc/isystem/__atomic/kill_dependency.h create mode 100644 libc/isystem/__atomic/memory_order.h create mode 100644 libc/isystem/__availability create mode 100644 libc/isystem/__bit/bit_cast.h create mode 100644 libc/isystem/__bit/bit_ceil.h create mode 100644 libc/isystem/__bit/bit_floor.h create mode 100644 libc/isystem/__bit/bit_log2.h create mode 100644 libc/isystem/__bit/bit_width.h create mode 100644 libc/isystem/__bit/blsr.h create mode 100644 libc/isystem/__bit/byteswap.h create mode 100644 libc/isystem/__bit/countl.h create mode 100644 libc/isystem/__bit/countr.h create mode 100644 libc/isystem/__bit/endian.h create mode 100644 libc/isystem/__bit/has_single_bit.h create mode 100644 libc/isystem/__bit/popcount.h create mode 100644 libc/isystem/__bit/rotate.h create mode 100644 libc/isystem/__bit_reference create mode 100644 libc/isystem/__charconv/chars_format.h create mode 100644 libc/isystem/__charconv/from_chars_integral.h create mode 100644 libc/isystem/__charconv/from_chars_result.h create mode 100644 libc/isystem/__charconv/tables.h create mode 100644 libc/isystem/__charconv/to_chars.h create mode 100644 libc/isystem/__charconv/to_chars_base_10.h create mode 100644 libc/isystem/__charconv/to_chars_floating_point.h create mode 100644 libc/isystem/__charconv/to_chars_integral.h create mode 100644 libc/isystem/__charconv/to_chars_result.h create mode 100644 libc/isystem/__charconv/traits.h create mode 100644 libc/isystem/__chrono/calendar.h create mode 100644 libc/isystem/__chrono/concepts.h create mode 100644 libc/isystem/__chrono/convert_to_timespec.h create mode 100644 libc/isystem/__chrono/convert_to_tm.h create mode 100644 libc/isystem/__chrono/day.h create mode 100644 libc/isystem/__chrono/duration.h create mode 100644 libc/isystem/__chrono/file_clock.h create mode 100644 libc/isystem/__chrono/formatter.h create mode 100644 libc/isystem/__chrono/hh_mm_ss.h create mode 100644 libc/isystem/__chrono/high_resolution_clock.h create mode 100644 libc/isystem/__chrono/literals.h create mode 100644 libc/isystem/__chrono/month.h create mode 100644 libc/isystem/__chrono/month_weekday.h create mode 100644 libc/isystem/__chrono/monthday.h create mode 100644 libc/isystem/__chrono/ostream.h create mode 100644 libc/isystem/__chrono/parser_std_format_spec.h create mode 100644 libc/isystem/__chrono/statically_widen.h create mode 100644 libc/isystem/__chrono/steady_clock.h create mode 100644 libc/isystem/__chrono/system_clock.h create mode 100644 libc/isystem/__chrono/time_point.h create mode 100644 libc/isystem/__chrono/weekday.h create mode 100644 libc/isystem/__chrono/year.h create mode 100644 libc/isystem/__chrono/year_month.h create mode 100644 libc/isystem/__chrono/year_month_day.h create mode 100644 libc/isystem/__chrono/year_month_weekday.h create mode 100644 libc/isystem/__compare/common_comparison_category.h create mode 100644 libc/isystem/__compare/compare_partial_order_fallback.h create mode 100644 libc/isystem/__compare/compare_strong_order_fallback.h create mode 100644 libc/isystem/__compare/compare_three_way.h create mode 100644 libc/isystem/__compare/compare_three_way_result.h create mode 100644 libc/isystem/__compare/compare_weak_order_fallback.h create mode 100644 libc/isystem/__compare/is_eq.h create mode 100644 libc/isystem/__compare/ordering.h create mode 100644 libc/isystem/__compare/partial_order.h create mode 100644 libc/isystem/__compare/strong_order.h create mode 100644 libc/isystem/__compare/synth_three_way.h create mode 100644 libc/isystem/__compare/three_way_comparable.h create mode 100644 libc/isystem/__compare/weak_order.h create mode 100644 libc/isystem/__concepts/arithmetic.h create mode 100644 libc/isystem/__concepts/assignable.h create mode 100644 libc/isystem/__concepts/boolean_testable.h create mode 100644 libc/isystem/__concepts/class_or_enum.h create mode 100644 libc/isystem/__concepts/common_reference_with.h create mode 100644 libc/isystem/__concepts/common_with.h create mode 100644 libc/isystem/__concepts/constructible.h create mode 100644 libc/isystem/__concepts/convertible_to.h create mode 100644 libc/isystem/__concepts/copyable.h create mode 100644 libc/isystem/__concepts/derived_from.h create mode 100644 libc/isystem/__concepts/destructible.h create mode 100644 libc/isystem/__concepts/different_from.h create mode 100644 libc/isystem/__concepts/equality_comparable.h create mode 100644 libc/isystem/__concepts/invocable.h create mode 100644 libc/isystem/__concepts/movable.h create mode 100644 libc/isystem/__concepts/predicate.h create mode 100644 libc/isystem/__concepts/regular.h create mode 100644 libc/isystem/__concepts/relation.h create mode 100644 libc/isystem/__concepts/same_as.h create mode 100644 libc/isystem/__concepts/semiregular.h create mode 100644 libc/isystem/__concepts/swappable.h create mode 100644 libc/isystem/__concepts/totally_ordered.h create mode 100644 libc/isystem/__condition_variable/condition_variable.h create mode 100644 libc/isystem/__config create mode 100644 libc/isystem/__config_site create mode 100644 libc/isystem/__coroutine/coroutine_handle.h create mode 100644 libc/isystem/__coroutine/coroutine_traits.h create mode 100644 libc/isystem/__coroutine/noop_coroutine_handle.h create mode 100644 libc/isystem/__coroutine/trivial_awaitables.h create mode 100644 libc/isystem/__debug create mode 100644 libc/isystem/__debug_utils/randomize_range.h create mode 100644 libc/isystem/__exception/exception.h create mode 100644 libc/isystem/__exception/exception_ptr.h create mode 100644 libc/isystem/__exception/nested_exception.h create mode 100644 libc/isystem/__exception/operations.h create mode 100644 libc/isystem/__exception/terminate.h create mode 100644 libc/isystem/__expected/bad_expected_access.h create mode 100644 libc/isystem/__expected/expected.h create mode 100644 libc/isystem/__expected/unexpect.h create mode 100644 libc/isystem/__expected/unexpected.h create mode 100644 libc/isystem/__filesystem/copy_options.h create mode 100644 libc/isystem/__filesystem/directory_entry.h create mode 100644 libc/isystem/__filesystem/directory_iterator.h create mode 100644 libc/isystem/__filesystem/directory_options.h create mode 100644 libc/isystem/__filesystem/file_status.h create mode 100644 libc/isystem/__filesystem/file_time_type.h create mode 100644 libc/isystem/__filesystem/file_type.h create mode 100644 libc/isystem/__filesystem/filesystem_error.h create mode 100644 libc/isystem/__filesystem/operations.h create mode 100644 libc/isystem/__filesystem/path.h create mode 100644 libc/isystem/__filesystem/path_iterator.h create mode 100644 libc/isystem/__filesystem/perm_options.h create mode 100644 libc/isystem/__filesystem/perms.h create mode 100644 libc/isystem/__filesystem/recursive_directory_iterator.h create mode 100644 libc/isystem/__filesystem/space_info.h create mode 100644 libc/isystem/__filesystem/u8path.h create mode 100644 libc/isystem/__format/buffer.h create mode 100644 libc/isystem/__format/concepts.h create mode 100644 libc/isystem/__format/container_adaptor.h create mode 100644 libc/isystem/__format/enable_insertable.h create mode 100644 libc/isystem/__format/escaped_output_table.h create mode 100644 libc/isystem/__format/extended_grapheme_cluster_table.h create mode 100644 libc/isystem/__format/format_arg.h create mode 100644 libc/isystem/__format/format_arg_store.h create mode 100644 libc/isystem/__format/format_args.h create mode 100644 libc/isystem/__format/format_context.h create mode 100644 libc/isystem/__format/format_error.h create mode 100644 libc/isystem/__format/format_functions.h create mode 100644 libc/isystem/__format/format_fwd.h create mode 100644 libc/isystem/__format/format_parse_context.h create mode 100644 libc/isystem/__format/format_string.h create mode 100644 libc/isystem/__format/format_to_n_result.h create mode 100644 libc/isystem/__format/formatter.h create mode 100644 libc/isystem/__format/formatter_bool.h create mode 100644 libc/isystem/__format/formatter_char.h create mode 100644 libc/isystem/__format/formatter_floating_point.h create mode 100644 libc/isystem/__format/formatter_integer.h create mode 100644 libc/isystem/__format/formatter_integral.h create mode 100644 libc/isystem/__format/formatter_output.h create mode 100644 libc/isystem/__format/formatter_pointer.h create mode 100644 libc/isystem/__format/formatter_string.h create mode 100644 libc/isystem/__format/formatter_tuple.h create mode 100644 libc/isystem/__format/parser_std_format_spec.h create mode 100644 libc/isystem/__format/range_default_formatter.h create mode 100644 libc/isystem/__format/range_formatter.h create mode 100644 libc/isystem/__format/unicode.h create mode 100644 libc/isystem/__format/width_estimation_table.h create mode 100644 libc/isystem/__functional/binary_function.h create mode 100644 libc/isystem/__functional/binary_negate.h create mode 100644 libc/isystem/__functional/bind.h create mode 100644 libc/isystem/__functional/bind_back.h create mode 100644 libc/isystem/__functional/bind_front.h create mode 100644 libc/isystem/__functional/binder1st.h create mode 100644 libc/isystem/__functional/binder2nd.h create mode 100644 libc/isystem/__functional/boyer_moore_searcher.h create mode 100644 libc/isystem/__functional/compose.h create mode 100644 libc/isystem/__functional/default_searcher.h create mode 100644 libc/isystem/__functional/function.h create mode 100644 libc/isystem/__functional/hash.h create mode 100644 libc/isystem/__functional/identity.h create mode 100644 libc/isystem/__functional/invoke.h create mode 100644 libc/isystem/__functional/is_transparent.h create mode 100644 libc/isystem/__functional/mem_fn.h create mode 100644 libc/isystem/__functional/mem_fun_ref.h create mode 100644 libc/isystem/__functional/not_fn.h create mode 100644 libc/isystem/__functional/operations.h create mode 100644 libc/isystem/__functional/perfect_forward.h create mode 100644 libc/isystem/__functional/pointer_to_binary_function.h create mode 100644 libc/isystem/__functional/pointer_to_unary_function.h create mode 100644 libc/isystem/__functional/ranges_operations.h create mode 100644 libc/isystem/__functional/reference_wrapper.h create mode 100644 libc/isystem/__functional/unary_function.h create mode 100644 libc/isystem/__functional/unary_negate.h create mode 100644 libc/isystem/__functional/weak_result_type.h create mode 100644 libc/isystem/__fwd/array.h create mode 100644 libc/isystem/__fwd/fstream.h create mode 100644 libc/isystem/__fwd/get.h create mode 100644 libc/isystem/__fwd/hash.h create mode 100644 libc/isystem/__fwd/ios.h create mode 100644 libc/isystem/__fwd/istream.h create mode 100644 libc/isystem/__fwd/memory_resource.h create mode 100644 libc/isystem/__fwd/ostream.h create mode 100644 libc/isystem/__fwd/pair.h create mode 100644 libc/isystem/__fwd/span.h create mode 100644 libc/isystem/__fwd/sstream.h create mode 100644 libc/isystem/__fwd/streambuf.h create mode 100644 libc/isystem/__fwd/string.h create mode 100644 libc/isystem/__fwd/string_view.h create mode 100644 libc/isystem/__fwd/subrange.h create mode 100644 libc/isystem/__fwd/tuple.h create mode 100644 libc/isystem/__hash_table create mode 100644 libc/isystem/__ios/fpos.h create mode 100644 libc/isystem/__iterator/access.h create mode 100644 libc/isystem/__iterator/advance.h create mode 100644 libc/isystem/__iterator/back_insert_iterator.h create mode 100644 libc/isystem/__iterator/bounded_iter.h create mode 100644 libc/isystem/__iterator/common_iterator.h create mode 100644 libc/isystem/__iterator/concepts.h create mode 100644 libc/isystem/__iterator/counted_iterator.h create mode 100644 libc/isystem/__iterator/data.h create mode 100644 libc/isystem/__iterator/default_sentinel.h create mode 100644 libc/isystem/__iterator/distance.h create mode 100644 libc/isystem/__iterator/empty.h create mode 100644 libc/isystem/__iterator/erase_if_container.h create mode 100644 libc/isystem/__iterator/front_insert_iterator.h create mode 100644 libc/isystem/__iterator/incrementable_traits.h create mode 100644 libc/isystem/__iterator/indirectly_comparable.h create mode 100644 libc/isystem/__iterator/insert_iterator.h create mode 100644 libc/isystem/__iterator/istream_iterator.h create mode 100644 libc/isystem/__iterator/istreambuf_iterator.h create mode 100644 libc/isystem/__iterator/iter_move.h create mode 100644 libc/isystem/__iterator/iter_swap.h create mode 100644 libc/isystem/__iterator/iterator.h create mode 100644 libc/isystem/__iterator/iterator_traits.h create mode 100644 libc/isystem/__iterator/iterator_with_data.h create mode 100644 libc/isystem/__iterator/mergeable.h create mode 100644 libc/isystem/__iterator/move_iterator.h create mode 100644 libc/isystem/__iterator/move_sentinel.h create mode 100644 libc/isystem/__iterator/next.h create mode 100644 libc/isystem/__iterator/ostream_iterator.h create mode 100644 libc/isystem/__iterator/ostreambuf_iterator.h create mode 100644 libc/isystem/__iterator/permutable.h create mode 100644 libc/isystem/__iterator/prev.h create mode 100644 libc/isystem/__iterator/projected.h create mode 100644 libc/isystem/__iterator/readable_traits.h create mode 100644 libc/isystem/__iterator/reverse_access.h create mode 100644 libc/isystem/__iterator/reverse_iterator.h create mode 100644 libc/isystem/__iterator/segmented_iterator.h create mode 100644 libc/isystem/__iterator/size.h create mode 100644 libc/isystem/__iterator/sortable.h create mode 100644 libc/isystem/__iterator/unreachable_sentinel.h create mode 100644 libc/isystem/__iterator/wrap_iter.h create mode 100644 libc/isystem/__locale create mode 100644 libc/isystem/__locale_dir/locale_base_api/bsd_locale_defaults.h create mode 100644 libc/isystem/__locale_dir/locale_base_api/bsd_locale_fallbacks.h create mode 100644 libc/isystem/__locale_dir/locale_base_api/locale_guard.h create mode 100644 libc/isystem/__mbstate_t.h create mode 100644 libc/isystem/__mdspan/extents.h create mode 100644 libc/isystem/__memory/addressof.h create mode 100644 libc/isystem/__memory/align.h create mode 100644 libc/isystem/__memory/aligned_alloc.h create mode 100644 libc/isystem/__memory/allocate_at_least.h create mode 100644 libc/isystem/__memory/allocation_guard.h create mode 100644 libc/isystem/__memory/allocator.h create mode 100644 libc/isystem/__memory/allocator_arg_t.h create mode 100644 libc/isystem/__memory/allocator_destructor.h create mode 100644 libc/isystem/__memory/allocator_traits.h create mode 100644 libc/isystem/__memory/assume_aligned.h create mode 100644 libc/isystem/__memory/auto_ptr.h create mode 100644 libc/isystem/__memory/builtin_new_allocator.h create mode 100644 libc/isystem/__memory/compressed_pair.h create mode 100644 libc/isystem/__memory/concepts.h create mode 100644 libc/isystem/__memory/construct_at.h create mode 100644 libc/isystem/__memory/destruct_n.h create mode 100644 libc/isystem/__memory/pointer_traits.h create mode 100644 libc/isystem/__memory/ranges_construct_at.h create mode 100644 libc/isystem/__memory/ranges_uninitialized_algorithms.h create mode 100644 libc/isystem/__memory/raw_storage_iterator.h create mode 100644 libc/isystem/__memory/shared_ptr.h create mode 100644 libc/isystem/__memory/swap_allocator.h create mode 100644 libc/isystem/__memory/temp_value.h create mode 100644 libc/isystem/__memory/temporary_buffer.h create mode 100644 libc/isystem/__memory/uninitialized_algorithms.h create mode 100644 libc/isystem/__memory/unique_ptr.h create mode 100644 libc/isystem/__memory/uses_allocator.h create mode 100644 libc/isystem/__memory/uses_allocator_construction.h create mode 100644 libc/isystem/__memory/voidify.h create mode 100644 libc/isystem/__memory_resource/memory_resource.h create mode 100644 libc/isystem/__memory_resource/monotonic_buffer_resource.h create mode 100644 libc/isystem/__memory_resource/polymorphic_allocator.h create mode 100644 libc/isystem/__memory_resource/pool_options.h create mode 100644 libc/isystem/__memory_resource/synchronized_pool_resource.h create mode 100644 libc/isystem/__memory_resource/unsynchronized_pool_resource.h create mode 100644 libc/isystem/__mutex/lock_guard.h create mode 100644 libc/isystem/__mutex/mutex.h create mode 100644 libc/isystem/__mutex/tag_types.h create mode 100644 libc/isystem/__mutex/unique_lock.h create mode 100644 libc/isystem/__node_handle create mode 100644 libc/isystem/__numeric/accumulate.h create mode 100644 libc/isystem/__numeric/adjacent_difference.h create mode 100644 libc/isystem/__numeric/exclusive_scan.h create mode 100644 libc/isystem/__numeric/gcd_lcm.h create mode 100644 libc/isystem/__numeric/inclusive_scan.h create mode 100644 libc/isystem/__numeric/inner_product.h create mode 100644 libc/isystem/__numeric/iota.h create mode 100644 libc/isystem/__numeric/midpoint.h create mode 100644 libc/isystem/__numeric/partial_sum.h create mode 100644 libc/isystem/__numeric/reduce.h create mode 100644 libc/isystem/__numeric/transform_exclusive_scan.h create mode 100644 libc/isystem/__numeric/transform_inclusive_scan.h create mode 100644 libc/isystem/__numeric/transform_reduce.h create mode 100644 libc/isystem/__pstl/internal/algorithm_fwd.h create mode 100644 libc/isystem/__pstl/internal/algorithm_impl.h create mode 100644 libc/isystem/__pstl/internal/execution_defs.h create mode 100644 libc/isystem/__pstl/internal/execution_impl.h create mode 100644 libc/isystem/__pstl/internal/glue_algorithm_defs.h create mode 100644 libc/isystem/__pstl/internal/glue_algorithm_impl.h create mode 100644 libc/isystem/__pstl/internal/glue_memory_defs.h create mode 100644 libc/isystem/__pstl/internal/glue_memory_impl.h create mode 100644 libc/isystem/__pstl/internal/glue_numeric_defs.h create mode 100644 libc/isystem/__pstl/internal/glue_numeric_impl.h create mode 100644 libc/isystem/__pstl/internal/memory_impl.h create mode 100644 libc/isystem/__pstl/internal/numeric_fwd.h create mode 100644 libc/isystem/__pstl/internal/numeric_impl.h create mode 100644 libc/isystem/__pstl/internal/omp/parallel_for.h create mode 100644 libc/isystem/__pstl/internal/omp/parallel_for_each.h create mode 100644 libc/isystem/__pstl/internal/omp/parallel_invoke.h create mode 100644 libc/isystem/__pstl/internal/omp/parallel_merge.h create mode 100644 libc/isystem/__pstl/internal/omp/parallel_reduce.h create mode 100644 libc/isystem/__pstl/internal/omp/parallel_scan.h create mode 100644 libc/isystem/__pstl/internal/omp/parallel_stable_partial_sort.h create mode 100644 libc/isystem/__pstl/internal/omp/parallel_stable_sort.h create mode 100644 libc/isystem/__pstl/internal/omp/parallel_transform_reduce.h create mode 100644 libc/isystem/__pstl/internal/omp/parallel_transform_scan.h create mode 100644 libc/isystem/__pstl/internal/omp/util.h create mode 100644 libc/isystem/__pstl/internal/parallel_backend.h create mode 100644 libc/isystem/__pstl/internal/parallel_backend_omp.h create mode 100644 libc/isystem/__pstl/internal/parallel_backend_serial.h create mode 100644 libc/isystem/__pstl/internal/parallel_backend_tbb.h create mode 100644 libc/isystem/__pstl/internal/parallel_backend_utils.h create mode 100644 libc/isystem/__pstl/internal/unseq_backend_simd.h create mode 100644 libc/isystem/__pstl/internal/utils.h create mode 100644 libc/isystem/__pstl_algorithm create mode 100644 libc/isystem/__pstl_config_site create mode 100644 libc/isystem/__pstl_memory create mode 100644 libc/isystem/__pstl_numeric create mode 100644 libc/isystem/__random/bernoulli_distribution.h create mode 100644 libc/isystem/__random/binomial_distribution.h create mode 100644 libc/isystem/__random/cauchy_distribution.h create mode 100644 libc/isystem/__random/chi_squared_distribution.h create mode 100644 libc/isystem/__random/clamp_to_integral.h create mode 100644 libc/isystem/__random/default_random_engine.h create mode 100644 libc/isystem/__random/discard_block_engine.h create mode 100644 libc/isystem/__random/discrete_distribution.h create mode 100644 libc/isystem/__random/exponential_distribution.h create mode 100644 libc/isystem/__random/extreme_value_distribution.h create mode 100644 libc/isystem/__random/fisher_f_distribution.h create mode 100644 libc/isystem/__random/gamma_distribution.h create mode 100644 libc/isystem/__random/generate_canonical.h create mode 100644 libc/isystem/__random/geometric_distribution.h create mode 100644 libc/isystem/__random/independent_bits_engine.h create mode 100644 libc/isystem/__random/is_seed_sequence.h create mode 100644 libc/isystem/__random/is_valid.h create mode 100644 libc/isystem/__random/knuth_b.h create mode 100644 libc/isystem/__random/linear_congruential_engine.h create mode 100644 libc/isystem/__random/log2.h create mode 100644 libc/isystem/__random/lognormal_distribution.h create mode 100644 libc/isystem/__random/mersenne_twister_engine.h create mode 100644 libc/isystem/__random/negative_binomial_distribution.h create mode 100644 libc/isystem/__random/normal_distribution.h create mode 100644 libc/isystem/__random/piecewise_constant_distribution.h create mode 100644 libc/isystem/__random/piecewise_linear_distribution.h create mode 100644 libc/isystem/__random/poisson_distribution.h create mode 100644 libc/isystem/__random/random_device.h create mode 100644 libc/isystem/__random/ranlux.h create mode 100644 libc/isystem/__random/seed_seq.h create mode 100644 libc/isystem/__random/shuffle_order_engine.h create mode 100644 libc/isystem/__random/student_t_distribution.h create mode 100644 libc/isystem/__random/subtract_with_carry_engine.h create mode 100644 libc/isystem/__random/uniform_int_distribution.h create mode 100644 libc/isystem/__random/uniform_random_bit_generator.h create mode 100644 libc/isystem/__random/uniform_real_distribution.h create mode 100644 libc/isystem/__random/weibull_distribution.h create mode 100644 libc/isystem/__ranges/access.h create mode 100644 libc/isystem/__ranges/all.h create mode 100644 libc/isystem/__ranges/as_rvalue_view.h create mode 100644 libc/isystem/__ranges/common_view.h create mode 100644 libc/isystem/__ranges/concepts.h create mode 100644 libc/isystem/__ranges/container_compatible_range.h create mode 100644 libc/isystem/__ranges/copyable_box.h create mode 100644 libc/isystem/__ranges/counted.h create mode 100644 libc/isystem/__ranges/dangling.h create mode 100644 libc/isystem/__ranges/data.h create mode 100644 libc/isystem/__ranges/drop_view.h create mode 100644 libc/isystem/__ranges/drop_while_view.h create mode 100644 libc/isystem/__ranges/elements_view.h create mode 100644 libc/isystem/__ranges/empty.h create mode 100644 libc/isystem/__ranges/empty_view.h create mode 100644 libc/isystem/__ranges/enable_borrowed_range.h create mode 100644 libc/isystem/__ranges/enable_view.h create mode 100644 libc/isystem/__ranges/filter_view.h create mode 100644 libc/isystem/__ranges/from_range.h create mode 100644 libc/isystem/__ranges/iota_view.h create mode 100644 libc/isystem/__ranges/istream_view.h create mode 100644 libc/isystem/__ranges/join_view.h create mode 100644 libc/isystem/__ranges/lazy_split_view.h create mode 100644 libc/isystem/__ranges/non_propagating_cache.h create mode 100644 libc/isystem/__ranges/owning_view.h create mode 100644 libc/isystem/__ranges/range_adaptor.h create mode 100644 libc/isystem/__ranges/rbegin.h create mode 100644 libc/isystem/__ranges/ref_view.h create mode 100644 libc/isystem/__ranges/rend.h create mode 100644 libc/isystem/__ranges/reverse_view.h create mode 100644 libc/isystem/__ranges/single_view.h create mode 100644 libc/isystem/__ranges/size.h create mode 100644 libc/isystem/__ranges/split_view.h create mode 100644 libc/isystem/__ranges/subrange.h create mode 100644 libc/isystem/__ranges/take_view.h create mode 100644 libc/isystem/__ranges/take_while_view.h create mode 100644 libc/isystem/__ranges/transform_view.h create mode 100644 libc/isystem/__ranges/view_interface.h create mode 100644 libc/isystem/__ranges/views.h create mode 100644 libc/isystem/__ranges/zip_view.h create mode 100644 libc/isystem/__split_buffer create mode 100644 libc/isystem/__std_mbstate_t.h create mode 100644 libc/isystem/__stop_token/atomic_unique_lock.h create mode 100644 libc/isystem/__stop_token/intrusive_list_view.h create mode 100644 libc/isystem/__stop_token/intrusive_shared_ptr.h create mode 100644 libc/isystem/__string/char_traits.h create mode 100644 libc/isystem/__string/constexpr_c_functions.h create mode 100644 libc/isystem/__string/extern_template_lists.h create mode 100644 libc/isystem/__support/android/locale_bionic.h create mode 100644 libc/isystem/__support/fuchsia/xlocale.h create mode 100644 libc/isystem/__support/ibm/gettod_zos.h create mode 100644 libc/isystem/__support/ibm/locale_mgmt_zos.h create mode 100644 libc/isystem/__support/ibm/nanosleep.h create mode 100644 libc/isystem/__support/ibm/xlocale.h create mode 100644 libc/isystem/__support/musl/xlocale.h create mode 100644 libc/isystem/__support/newlib/xlocale.h create mode 100644 libc/isystem/__support/openbsd/xlocale.h create mode 100644 libc/isystem/__support/win32/locale_win32.h create mode 100644 libc/isystem/__support/xlocale/__nop_locale_mgmt.h create mode 100644 libc/isystem/__support/xlocale/__posix_l_fallback.h create mode 100644 libc/isystem/__support/xlocale/__strtonum_fallback.h create mode 100644 libc/isystem/__system_error/errc.h create mode 100644 libc/isystem/__system_error/error_category.h create mode 100644 libc/isystem/__system_error/error_code.h create mode 100644 libc/isystem/__system_error/error_condition.h create mode 100644 libc/isystem/__system_error/system_error.h create mode 100644 libc/isystem/__thread/poll_with_backoff.h create mode 100644 libc/isystem/__thread/timed_backoff_policy.h create mode 100644 libc/isystem/__threading_support create mode 100644 libc/isystem/__tree create mode 100644 libc/isystem/__tuple/make_tuple_types.h create mode 100644 libc/isystem/__tuple/pair_like.h create mode 100644 libc/isystem/__tuple/sfinae_helpers.h create mode 100644 libc/isystem/__tuple/tuple_element.h create mode 100644 libc/isystem/__tuple/tuple_indices.h create mode 100644 libc/isystem/__tuple/tuple_like.h create mode 100644 libc/isystem/__tuple/tuple_like_ext.h create mode 100644 libc/isystem/__tuple/tuple_size.h create mode 100644 libc/isystem/__tuple/tuple_types.h create mode 100644 libc/isystem/__type_traits/add_const.h create mode 100644 libc/isystem/__type_traits/add_cv.h create mode 100644 libc/isystem/__type_traits/add_lvalue_reference.h create mode 100644 libc/isystem/__type_traits/add_pointer.h create mode 100644 libc/isystem/__type_traits/add_rvalue_reference.h create mode 100644 libc/isystem/__type_traits/add_volatile.h create mode 100644 libc/isystem/__type_traits/aligned_storage.h create mode 100644 libc/isystem/__type_traits/aligned_union.h create mode 100644 libc/isystem/__type_traits/alignment_of.h create mode 100644 libc/isystem/__type_traits/apply_cv.h create mode 100644 libc/isystem/__type_traits/can_extract_key.h create mode 100644 libc/isystem/__type_traits/common_reference.h create mode 100644 libc/isystem/__type_traits/common_type.h create mode 100644 libc/isystem/__type_traits/conditional.h create mode 100644 libc/isystem/__type_traits/conjunction.h create mode 100644 libc/isystem/__type_traits/copy_cv.h create mode 100644 libc/isystem/__type_traits/copy_cvref.h create mode 100644 libc/isystem/__type_traits/decay.h create mode 100644 libc/isystem/__type_traits/dependent_type.h create mode 100644 libc/isystem/__type_traits/disjunction.h create mode 100644 libc/isystem/__type_traits/enable_if.h create mode 100644 libc/isystem/__type_traits/extent.h create mode 100644 libc/isystem/__type_traits/has_unique_object_representation.h create mode 100644 libc/isystem/__type_traits/has_virtual_destructor.h create mode 100644 libc/isystem/__type_traits/integral_constant.h create mode 100644 libc/isystem/__type_traits/invoke.h create mode 100644 libc/isystem/__type_traits/is_abstract.h create mode 100644 libc/isystem/__type_traits/is_aggregate.h create mode 100644 libc/isystem/__type_traits/is_allocator.h create mode 100644 libc/isystem/__type_traits/is_always_bitcastable.h create mode 100644 libc/isystem/__type_traits/is_arithmetic.h create mode 100644 libc/isystem/__type_traits/is_array.h create mode 100644 libc/isystem/__type_traits/is_assignable.h create mode 100644 libc/isystem/__type_traits/is_base_of.h create mode 100644 libc/isystem/__type_traits/is_bounded_array.h create mode 100644 libc/isystem/__type_traits/is_callable.h create mode 100644 libc/isystem/__type_traits/is_char_like_type.h create mode 100644 libc/isystem/__type_traits/is_class.h create mode 100644 libc/isystem/__type_traits/is_compound.h create mode 100644 libc/isystem/__type_traits/is_const.h create mode 100644 libc/isystem/__type_traits/is_constant_evaluated.h create mode 100644 libc/isystem/__type_traits/is_constructible.h create mode 100644 libc/isystem/__type_traits/is_convertible.h create mode 100644 libc/isystem/__type_traits/is_copy_assignable.h create mode 100644 libc/isystem/__type_traits/is_copy_constructible.h create mode 100644 libc/isystem/__type_traits/is_core_convertible.h create mode 100644 libc/isystem/__type_traits/is_default_constructible.h create mode 100644 libc/isystem/__type_traits/is_destructible.h create mode 100644 libc/isystem/__type_traits/is_empty.h create mode 100644 libc/isystem/__type_traits/is_enum.h create mode 100644 libc/isystem/__type_traits/is_equality_comparable.h create mode 100644 libc/isystem/__type_traits/is_execution_policy.h create mode 100644 libc/isystem/__type_traits/is_final.h create mode 100644 libc/isystem/__type_traits/is_floating_point.h create mode 100644 libc/isystem/__type_traits/is_function.h create mode 100644 libc/isystem/__type_traits/is_fundamental.h create mode 100644 libc/isystem/__type_traits/is_implicitly_default_constructible.h create mode 100644 libc/isystem/__type_traits/is_integral.h create mode 100644 libc/isystem/__type_traits/is_literal_type.h create mode 100644 libc/isystem/__type_traits/is_member_function_pointer.h create mode 100644 libc/isystem/__type_traits/is_member_object_pointer.h create mode 100644 libc/isystem/__type_traits/is_member_pointer.h create mode 100644 libc/isystem/__type_traits/is_move_assignable.h create mode 100644 libc/isystem/__type_traits/is_move_constructible.h create mode 100644 libc/isystem/__type_traits/is_nothrow_assignable.h create mode 100644 libc/isystem/__type_traits/is_nothrow_constructible.h create mode 100644 libc/isystem/__type_traits/is_nothrow_convertible.h create mode 100644 libc/isystem/__type_traits/is_nothrow_copy_assignable.h create mode 100644 libc/isystem/__type_traits/is_nothrow_copy_constructible.h create mode 100644 libc/isystem/__type_traits/is_nothrow_default_constructible.h create mode 100644 libc/isystem/__type_traits/is_nothrow_destructible.h create mode 100644 libc/isystem/__type_traits/is_nothrow_move_assignable.h create mode 100644 libc/isystem/__type_traits/is_nothrow_move_constructible.h create mode 100644 libc/isystem/__type_traits/is_null_pointer.h create mode 100644 libc/isystem/__type_traits/is_object.h create mode 100644 libc/isystem/__type_traits/is_pod.h create mode 100644 libc/isystem/__type_traits/is_pointer.h create mode 100644 libc/isystem/__type_traits/is_polymorphic.h create mode 100644 libc/isystem/__type_traits/is_primary_template.h create mode 100644 libc/isystem/__type_traits/is_reference.h create mode 100644 libc/isystem/__type_traits/is_reference_wrapper.h create mode 100644 libc/isystem/__type_traits/is_referenceable.h create mode 100644 libc/isystem/__type_traits/is_same.h create mode 100644 libc/isystem/__type_traits/is_scalar.h create mode 100644 libc/isystem/__type_traits/is_scoped_enum.h create mode 100644 libc/isystem/__type_traits/is_signed.h create mode 100644 libc/isystem/__type_traits/is_signed_integer.h create mode 100644 libc/isystem/__type_traits/is_specialization.h create mode 100644 libc/isystem/__type_traits/is_standard_layout.h create mode 100644 libc/isystem/__type_traits/is_swappable.h create mode 100644 libc/isystem/__type_traits/is_trivial.h create mode 100644 libc/isystem/__type_traits/is_trivially_assignable.h create mode 100644 libc/isystem/__type_traits/is_trivially_constructible.h create mode 100644 libc/isystem/__type_traits/is_trivially_copy_assignable.h create mode 100644 libc/isystem/__type_traits/is_trivially_copy_constructible.h create mode 100644 libc/isystem/__type_traits/is_trivially_copyable.h create mode 100644 libc/isystem/__type_traits/is_trivially_default_constructible.h create mode 100644 libc/isystem/__type_traits/is_trivially_destructible.h create mode 100644 libc/isystem/__type_traits/is_trivially_lexicographically_comparable.h create mode 100644 libc/isystem/__type_traits/is_trivially_move_assignable.h create mode 100644 libc/isystem/__type_traits/is_trivially_move_constructible.h create mode 100644 libc/isystem/__type_traits/is_unbounded_array.h create mode 100644 libc/isystem/__type_traits/is_union.h create mode 100644 libc/isystem/__type_traits/is_unsigned.h create mode 100644 libc/isystem/__type_traits/is_unsigned_integer.h create mode 100644 libc/isystem/__type_traits/is_valid_expansion.h create mode 100644 libc/isystem/__type_traits/is_void.h create mode 100644 libc/isystem/__type_traits/is_volatile.h create mode 100644 libc/isystem/__type_traits/lazy.h create mode 100644 libc/isystem/__type_traits/make_32_64_or_128_bit.h create mode 100644 libc/isystem/__type_traits/make_const_lvalue_ref.h create mode 100644 libc/isystem/__type_traits/make_signed.h create mode 100644 libc/isystem/__type_traits/make_unsigned.h create mode 100644 libc/isystem/__type_traits/maybe_const.h create mode 100644 libc/isystem/__type_traits/nat.h create mode 100644 libc/isystem/__type_traits/negation.h create mode 100644 libc/isystem/__type_traits/noexcept_move_assign_container.h create mode 100644 libc/isystem/__type_traits/predicate_traits.h create mode 100644 libc/isystem/__type_traits/promote.h create mode 100644 libc/isystem/__type_traits/rank.h create mode 100644 libc/isystem/__type_traits/remove_all_extents.h create mode 100644 libc/isystem/__type_traits/remove_const.h create mode 100644 libc/isystem/__type_traits/remove_const_ref.h create mode 100644 libc/isystem/__type_traits/remove_cv.h create mode 100644 libc/isystem/__type_traits/remove_cvref.h create mode 100644 libc/isystem/__type_traits/remove_extent.h create mode 100644 libc/isystem/__type_traits/remove_pointer.h create mode 100644 libc/isystem/__type_traits/remove_reference.h create mode 100644 libc/isystem/__type_traits/remove_volatile.h create mode 100644 libc/isystem/__type_traits/result_of.h create mode 100644 libc/isystem/__type_traits/strip_signature.h create mode 100644 libc/isystem/__type_traits/type_identity.h create mode 100644 libc/isystem/__type_traits/type_list.h create mode 100644 libc/isystem/__type_traits/underlying_type.h create mode 100644 libc/isystem/__type_traits/unwrap_ref.h create mode 100644 libc/isystem/__type_traits/void_t.h create mode 100644 libc/isystem/__undef_macros create mode 100644 libc/isystem/__utility/as_const.h create mode 100644 libc/isystem/__utility/auto_cast.h create mode 100644 libc/isystem/__utility/cmp.h create mode 100644 libc/isystem/__utility/convert_to_integral.h create mode 100644 libc/isystem/__utility/declval.h create mode 100644 libc/isystem/__utility/exception_guard.h create mode 100644 libc/isystem/__utility/exchange.h create mode 100644 libc/isystem/__utility/forward.h create mode 100644 libc/isystem/__utility/forward_like.h create mode 100644 libc/isystem/__utility/in_place.h create mode 100644 libc/isystem/__utility/integer_sequence.h create mode 100644 libc/isystem/__utility/move.h create mode 100644 libc/isystem/__utility/pair.h create mode 100644 libc/isystem/__utility/piecewise_construct.h create mode 100644 libc/isystem/__utility/priority_tag.h create mode 100644 libc/isystem/__utility/rel_ops.h create mode 100644 libc/isystem/__utility/swap.h create mode 100644 libc/isystem/__utility/terminate_on_exception.h create mode 100644 libc/isystem/__utility/to_underlying.h create mode 100644 libc/isystem/__utility/unreachable.h create mode 100644 libc/isystem/__variant/monostate.h create mode 100644 libc/isystem/__verbose_abort delete mode 100644 libc/isystem/algorithm delete mode 100644 libc/isystem/any delete mode 100644 libc/isystem/array delete mode 100644 libc/isystem/atomic create mode 100644 libc/isystem/barrier delete mode 100644 libc/isystem/bit delete mode 100644 libc/isystem/bitset delete mode 100644 libc/isystem/cassert delete mode 100644 libc/isystem/ccomplex delete mode 100644 libc/isystem/cctype delete mode 100644 libc/isystem/cerrno delete mode 100644 libc/isystem/cfenv delete mode 100644 libc/isystem/cfloat delete mode 100644 libc/isystem/charconv delete mode 100644 libc/isystem/chrono delete mode 100644 libc/isystem/cinttypes delete mode 100644 libc/isystem/ciso646 delete mode 100644 libc/isystem/climits delete mode 100644 libc/isystem/clocale delete mode 100644 libc/isystem/cmath delete mode 100644 libc/isystem/codecvt delete mode 100644 libc/isystem/compare delete mode 100644 libc/isystem/complex create mode 100644 libc/isystem/concepts delete mode 100644 libc/isystem/condition_variable create mode 100644 libc/isystem/coroutine delete mode 100644 libc/isystem/csetjmp delete mode 100644 libc/isystem/csignal delete mode 100644 libc/isystem/cstdarg delete mode 100644 libc/isystem/cstdbool delete mode 100644 libc/isystem/cstddef delete mode 100644 libc/isystem/cstdint delete mode 100644 libc/isystem/cstdio delete mode 100644 libc/isystem/cstdlib delete mode 100644 libc/isystem/cstring delete mode 100644 libc/isystem/ctgmath delete mode 100644 libc/isystem/ctime create mode 100644 libc/isystem/cuchar delete mode 100644 libc/isystem/cwchar delete mode 100644 libc/isystem/cwctype delete mode 100644 libc/isystem/deque delete mode 100644 libc/isystem/exception delete mode 100644 libc/isystem/execution create mode 100644 libc/isystem/expected create mode 100644 libc/isystem/experimental/__config create mode 100644 libc/isystem/experimental/__memory create mode 100644 libc/isystem/experimental/deque create mode 100644 libc/isystem/experimental/forward_list create mode 100644 libc/isystem/experimental/iterator create mode 100644 libc/isystem/experimental/list create mode 100644 libc/isystem/experimental/map create mode 100644 libc/isystem/experimental/memory_resource create mode 100644 libc/isystem/experimental/propagate_const create mode 100644 libc/isystem/experimental/regex create mode 100644 libc/isystem/experimental/set create mode 100644 libc/isystem/experimental/simd create mode 100644 libc/isystem/experimental/string create mode 100644 libc/isystem/experimental/type_traits create mode 100644 libc/isystem/experimental/unordered_map create mode 100644 libc/isystem/experimental/unordered_set create mode 100644 libc/isystem/experimental/utility create mode 100644 libc/isystem/experimental/vector create mode 100644 libc/isystem/ext/__hash create mode 100644 libc/isystem/ext/hash_map create mode 100644 libc/isystem/ext/hash_set delete mode 100644 libc/isystem/filesystem create mode 100644 libc/isystem/format delete mode 100644 libc/isystem/forward_list delete mode 100644 libc/isystem/fstream delete mode 100644 libc/isystem/functional delete mode 100644 libc/isystem/future delete mode 100644 libc/isystem/initializer_list delete mode 100644 libc/isystem/iomanip delete mode 100644 libc/isystem/ios delete mode 100644 libc/isystem/iosfwd delete mode 100644 libc/isystem/iostream delete mode 100644 libc/isystem/istream delete mode 100644 libc/isystem/iterator create mode 100644 libc/isystem/latch create mode 100644 libc/isystem/libcxx.imp delete mode 100644 libc/isystem/limits delete mode 100644 libc/isystem/list delete mode 100644 libc/isystem/locale delete mode 100644 libc/isystem/map create mode 100644 libc/isystem/mdspan delete mode 100644 libc/isystem/memory create mode 100644 libc/isystem/memory_resource create mode 100644 libc/isystem/module.modulemap delete mode 100644 libc/isystem/mutex delete mode 100644 libc/isystem/new create mode 100644 libc/isystem/numbers delete mode 100644 libc/isystem/numeric delete mode 100644 libc/isystem/optional delete mode 100644 libc/isystem/ostream delete mode 100644 libc/isystem/queue delete mode 100644 libc/isystem/random create mode 100644 libc/isystem/ranges delete mode 100644 libc/isystem/ratio delete mode 100644 libc/isystem/regex delete mode 100644 libc/isystem/scoped_allocator create mode 100644 libc/isystem/semaphore delete mode 100644 libc/isystem/set delete mode 100644 libc/isystem/shared_mutex create mode 100644 libc/isystem/source_location delete mode 100644 libc/isystem/span delete mode 100644 libc/isystem/sstream delete mode 100644 libc/isystem/stack delete mode 100644 libc/isystem/stdexcept delete mode 100644 libc/isystem/streambuf delete mode 100644 libc/isystem/string delete mode 100644 libc/isystem/string_view delete mode 100644 libc/isystem/strstream delete mode 100644 libc/isystem/system_error delete mode 100644 libc/isystem/thread delete mode 100644 libc/isystem/tuple delete mode 100644 libc/isystem/type_traits delete mode 100644 libc/isystem/typeindex delete mode 100644 libc/isystem/typeinfo delete mode 100644 libc/isystem/unordered_map delete mode 100644 libc/isystem/unordered_set delete mode 100644 libc/isystem/utility delete mode 100644 libc/isystem/valarray delete mode 100644 libc/isystem/variant delete mode 100644 libc/isystem/vector delete mode 100644 libc/isystem/version create mode 100644 libc/runtime/at_quick_exit.c create mode 100644 libc/runtime/quick_exit.c delete mode 100644 test/libc/release/BUILD.mk delete mode 100755 test/libc/release/emulate.sh delete mode 100755 test/libc/release/metal.sh delete mode 100644 test/libc/release/smoke.c delete mode 100644 test/libc/release/smokecxx.cc create mode 100644 third_party/libcxx/__algorithm/adjacent_find.h create mode 100644 third_party/libcxx/__algorithm/all_of.h create mode 100644 third_party/libcxx/__algorithm/any_of.h create mode 100644 third_party/libcxx/__algorithm/binary_search.h create mode 100644 third_party/libcxx/__algorithm/clamp.h create mode 100644 third_party/libcxx/__algorithm/comp.h create mode 100644 third_party/libcxx/__algorithm/comp_ref_type.h create mode 100644 third_party/libcxx/__algorithm/copy.h create mode 100644 third_party/libcxx/__algorithm/copy_backward.h create mode 100644 third_party/libcxx/__algorithm/copy_if.h create mode 100644 third_party/libcxx/__algorithm/copy_move_common.h create mode 100644 third_party/libcxx/__algorithm/copy_n.h create mode 100644 third_party/libcxx/__algorithm/count.h create mode 100644 third_party/libcxx/__algorithm/count_if.h create mode 100644 third_party/libcxx/__algorithm/equal.h create mode 100644 third_party/libcxx/__algorithm/equal_range.h create mode 100644 third_party/libcxx/__algorithm/fill.h create mode 100644 third_party/libcxx/__algorithm/fill_n.h create mode 100644 third_party/libcxx/__algorithm/find.h create mode 100644 third_party/libcxx/__algorithm/find_end.h create mode 100644 third_party/libcxx/__algorithm/find_first_of.h create mode 100644 third_party/libcxx/__algorithm/find_if.h create mode 100644 third_party/libcxx/__algorithm/find_if_not.h create mode 100644 third_party/libcxx/__algorithm/for_each.h create mode 100644 third_party/libcxx/__algorithm/for_each_n.h create mode 100644 third_party/libcxx/__algorithm/for_each_segment.h create mode 100644 third_party/libcxx/__algorithm/generate.h create mode 100644 third_party/libcxx/__algorithm/generate_n.h create mode 100644 third_party/libcxx/__algorithm/half_positive.h create mode 100644 third_party/libcxx/__algorithm/in_found_result.h create mode 100644 third_party/libcxx/__algorithm/in_fun_result.h create mode 100644 third_party/libcxx/__algorithm/in_in_out_result.h create mode 100644 third_party/libcxx/__algorithm/in_in_result.h create mode 100644 third_party/libcxx/__algorithm/in_out_out_result.h create mode 100644 third_party/libcxx/__algorithm/in_out_result.h create mode 100644 third_party/libcxx/__algorithm/includes.h create mode 100644 third_party/libcxx/__algorithm/inplace_merge.h create mode 100644 third_party/libcxx/__algorithm/is_heap.h create mode 100644 third_party/libcxx/__algorithm/is_heap_until.h create mode 100644 third_party/libcxx/__algorithm/is_partitioned.h create mode 100644 third_party/libcxx/__algorithm/is_permutation.h create mode 100644 third_party/libcxx/__algorithm/is_sorted.h create mode 100644 third_party/libcxx/__algorithm/is_sorted_until.h create mode 100644 third_party/libcxx/__algorithm/iter_swap.h create mode 100644 third_party/libcxx/__algorithm/iterator_operations.h create mode 100644 third_party/libcxx/__algorithm/lexicographical_compare.h create mode 100644 third_party/libcxx/__algorithm/lexicographical_compare_three_way.h create mode 100644 third_party/libcxx/__algorithm/lower_bound.h create mode 100644 third_party/libcxx/__algorithm/make_heap.h create mode 100644 third_party/libcxx/__algorithm/make_projected.h create mode 100644 third_party/libcxx/__algorithm/max.h create mode 100644 third_party/libcxx/__algorithm/max_element.h create mode 100644 third_party/libcxx/__algorithm/merge.h create mode 100644 third_party/libcxx/__algorithm/min.h create mode 100644 third_party/libcxx/__algorithm/min_element.h create mode 100644 third_party/libcxx/__algorithm/min_max_result.h create mode 100644 third_party/libcxx/__algorithm/minmax.h create mode 100644 third_party/libcxx/__algorithm/minmax_element.h create mode 100644 third_party/libcxx/__algorithm/mismatch.h create mode 100644 third_party/libcxx/__algorithm/move.h create mode 100644 third_party/libcxx/__algorithm/move_backward.h create mode 100644 third_party/libcxx/__algorithm/next_permutation.h create mode 100644 third_party/libcxx/__algorithm/none_of.h create mode 100644 third_party/libcxx/__algorithm/nth_element.h create mode 100644 third_party/libcxx/__algorithm/partial_sort.h create mode 100644 third_party/libcxx/__algorithm/partial_sort_copy.h create mode 100644 third_party/libcxx/__algorithm/partition.h create mode 100644 third_party/libcxx/__algorithm/partition_copy.h create mode 100644 third_party/libcxx/__algorithm/partition_point.h create mode 100644 third_party/libcxx/__algorithm/pop_heap.h create mode 100644 third_party/libcxx/__algorithm/prev_permutation.h create mode 100644 third_party/libcxx/__algorithm/pstl_any_all_none_of.h create mode 100644 third_party/libcxx/__algorithm/pstl_backend.h create mode 100644 third_party/libcxx/__algorithm/pstl_backends/cpu_backend.h create mode 100644 third_party/libcxx/__algorithm/pstl_backends/cpu_backends/any_of.h create mode 100644 third_party/libcxx/__algorithm/pstl_backends/cpu_backends/backend.h create mode 100644 third_party/libcxx/__algorithm/pstl_backends/cpu_backends/fill.h create mode 100644 third_party/libcxx/__algorithm/pstl_backends/cpu_backends/find_if.h create mode 100644 third_party/libcxx/__algorithm/pstl_backends/cpu_backends/for_each.h create mode 100644 third_party/libcxx/__algorithm/pstl_backends/cpu_backends/merge.h create mode 100644 third_party/libcxx/__algorithm/pstl_backends/cpu_backends/serial.h create mode 100644 third_party/libcxx/__algorithm/pstl_backends/cpu_backends/thread.h create mode 100644 third_party/libcxx/__algorithm/pstl_backends/cpu_backends/transform.h create mode 100644 third_party/libcxx/__algorithm/pstl_copy.h create mode 100644 third_party/libcxx/__algorithm/pstl_fill.h create mode 100644 third_party/libcxx/__algorithm/pstl_find.h create mode 100644 third_party/libcxx/__algorithm/pstl_for_each.h create mode 100644 third_party/libcxx/__algorithm/pstl_frontend_dispatch.h create mode 100644 third_party/libcxx/__algorithm/pstl_merge.h create mode 100644 third_party/libcxx/__algorithm/pstl_transform.h create mode 100644 third_party/libcxx/__algorithm/push_heap.h create mode 100644 third_party/libcxx/__algorithm/ranges_adjacent_find.h create mode 100644 third_party/libcxx/__algorithm/ranges_all_of.h create mode 100644 third_party/libcxx/__algorithm/ranges_any_of.h create mode 100644 third_party/libcxx/__algorithm/ranges_binary_search.h create mode 100644 third_party/libcxx/__algorithm/ranges_clamp.h create mode 100644 third_party/libcxx/__algorithm/ranges_copy.h create mode 100644 third_party/libcxx/__algorithm/ranges_copy_backward.h create mode 100644 third_party/libcxx/__algorithm/ranges_copy_if.h create mode 100644 third_party/libcxx/__algorithm/ranges_copy_n.h create mode 100644 third_party/libcxx/__algorithm/ranges_count.h create mode 100644 third_party/libcxx/__algorithm/ranges_count_if.h create mode 100644 third_party/libcxx/__algorithm/ranges_equal.h create mode 100644 third_party/libcxx/__algorithm/ranges_equal_range.h create mode 100644 third_party/libcxx/__algorithm/ranges_fill.h create mode 100644 third_party/libcxx/__algorithm/ranges_fill_n.h create mode 100644 third_party/libcxx/__algorithm/ranges_find.h create mode 100644 third_party/libcxx/__algorithm/ranges_find_end.h create mode 100644 third_party/libcxx/__algorithm/ranges_find_first_of.h create mode 100644 third_party/libcxx/__algorithm/ranges_find_if.h create mode 100644 third_party/libcxx/__algorithm/ranges_find_if_not.h create mode 100644 third_party/libcxx/__algorithm/ranges_for_each.h create mode 100644 third_party/libcxx/__algorithm/ranges_for_each_n.h create mode 100644 third_party/libcxx/__algorithm/ranges_generate.h create mode 100644 third_party/libcxx/__algorithm/ranges_generate_n.h create mode 100644 third_party/libcxx/__algorithm/ranges_includes.h create mode 100644 third_party/libcxx/__algorithm/ranges_inplace_merge.h create mode 100644 third_party/libcxx/__algorithm/ranges_is_heap.h create mode 100644 third_party/libcxx/__algorithm/ranges_is_heap_until.h create mode 100644 third_party/libcxx/__algorithm/ranges_is_partitioned.h create mode 100644 third_party/libcxx/__algorithm/ranges_is_permutation.h create mode 100644 third_party/libcxx/__algorithm/ranges_is_sorted.h create mode 100644 third_party/libcxx/__algorithm/ranges_is_sorted_until.h create mode 100644 third_party/libcxx/__algorithm/ranges_iterator_concept.h create mode 100644 third_party/libcxx/__algorithm/ranges_lexicographical_compare.h create mode 100644 third_party/libcxx/__algorithm/ranges_lower_bound.h create mode 100644 third_party/libcxx/__algorithm/ranges_make_heap.h create mode 100644 third_party/libcxx/__algorithm/ranges_max.h create mode 100644 third_party/libcxx/__algorithm/ranges_max_element.h create mode 100644 third_party/libcxx/__algorithm/ranges_merge.h create mode 100644 third_party/libcxx/__algorithm/ranges_min.h create mode 100644 third_party/libcxx/__algorithm/ranges_min_element.h create mode 100644 third_party/libcxx/__algorithm/ranges_minmax.h create mode 100644 third_party/libcxx/__algorithm/ranges_minmax_element.h create mode 100644 third_party/libcxx/__algorithm/ranges_mismatch.h create mode 100644 third_party/libcxx/__algorithm/ranges_move.h create mode 100644 third_party/libcxx/__algorithm/ranges_move_backward.h create mode 100644 third_party/libcxx/__algorithm/ranges_next_permutation.h create mode 100644 third_party/libcxx/__algorithm/ranges_none_of.h create mode 100644 third_party/libcxx/__algorithm/ranges_nth_element.h create mode 100644 third_party/libcxx/__algorithm/ranges_partial_sort.h create mode 100644 third_party/libcxx/__algorithm/ranges_partial_sort_copy.h create mode 100644 third_party/libcxx/__algorithm/ranges_partition.h create mode 100644 third_party/libcxx/__algorithm/ranges_partition_copy.h create mode 100644 third_party/libcxx/__algorithm/ranges_partition_point.h create mode 100644 third_party/libcxx/__algorithm/ranges_pop_heap.h create mode 100644 third_party/libcxx/__algorithm/ranges_prev_permutation.h create mode 100644 third_party/libcxx/__algorithm/ranges_push_heap.h create mode 100644 third_party/libcxx/__algorithm/ranges_remove.h create mode 100644 third_party/libcxx/__algorithm/ranges_remove_copy.h create mode 100644 third_party/libcxx/__algorithm/ranges_remove_copy_if.h create mode 100644 third_party/libcxx/__algorithm/ranges_remove_if.h create mode 100644 third_party/libcxx/__algorithm/ranges_replace.h create mode 100644 third_party/libcxx/__algorithm/ranges_replace_copy.h create mode 100644 third_party/libcxx/__algorithm/ranges_replace_copy_if.h create mode 100644 third_party/libcxx/__algorithm/ranges_replace_if.h create mode 100644 third_party/libcxx/__algorithm/ranges_reverse.h create mode 100644 third_party/libcxx/__algorithm/ranges_reverse_copy.h create mode 100644 third_party/libcxx/__algorithm/ranges_rotate.h create mode 100644 third_party/libcxx/__algorithm/ranges_rotate_copy.h create mode 100644 third_party/libcxx/__algorithm/ranges_sample.h create mode 100644 third_party/libcxx/__algorithm/ranges_search.h create mode 100644 third_party/libcxx/__algorithm/ranges_search_n.h create mode 100644 third_party/libcxx/__algorithm/ranges_set_difference.h create mode 100644 third_party/libcxx/__algorithm/ranges_set_intersection.h create mode 100644 third_party/libcxx/__algorithm/ranges_set_symmetric_difference.h create mode 100644 third_party/libcxx/__algorithm/ranges_set_union.h create mode 100644 third_party/libcxx/__algorithm/ranges_shuffle.h create mode 100644 third_party/libcxx/__algorithm/ranges_sort.h create mode 100644 third_party/libcxx/__algorithm/ranges_sort_heap.h create mode 100644 third_party/libcxx/__algorithm/ranges_stable_partition.h create mode 100644 third_party/libcxx/__algorithm/ranges_stable_sort.h create mode 100644 third_party/libcxx/__algorithm/ranges_starts_with.h create mode 100644 third_party/libcxx/__algorithm/ranges_swap_ranges.h create mode 100644 third_party/libcxx/__algorithm/ranges_transform.h create mode 100644 third_party/libcxx/__algorithm/ranges_unique.h create mode 100644 third_party/libcxx/__algorithm/ranges_unique_copy.h create mode 100644 third_party/libcxx/__algorithm/ranges_upper_bound.h create mode 100644 third_party/libcxx/__algorithm/remove.h create mode 100644 third_party/libcxx/__algorithm/remove_copy.h create mode 100644 third_party/libcxx/__algorithm/remove_copy_if.h create mode 100644 third_party/libcxx/__algorithm/remove_if.h create mode 100644 third_party/libcxx/__algorithm/replace.h create mode 100644 third_party/libcxx/__algorithm/replace_copy.h create mode 100644 third_party/libcxx/__algorithm/replace_copy_if.h create mode 100644 third_party/libcxx/__algorithm/replace_if.h create mode 100644 third_party/libcxx/__algorithm/reverse.h create mode 100644 third_party/libcxx/__algorithm/reverse_copy.h create mode 100644 third_party/libcxx/__algorithm/rotate.h create mode 100644 third_party/libcxx/__algorithm/rotate_copy.h create mode 100644 third_party/libcxx/__algorithm/sample.h create mode 100644 third_party/libcxx/__algorithm/search.h create mode 100644 third_party/libcxx/__algorithm/search_n.h create mode 100644 third_party/libcxx/__algorithm/set_difference.h create mode 100644 third_party/libcxx/__algorithm/set_intersection.h create mode 100644 third_party/libcxx/__algorithm/set_symmetric_difference.h create mode 100644 third_party/libcxx/__algorithm/set_union.h create mode 100644 third_party/libcxx/__algorithm/shift_left.h create mode 100644 third_party/libcxx/__algorithm/shift_right.h create mode 100644 third_party/libcxx/__algorithm/shuffle.h create mode 100644 third_party/libcxx/__algorithm/sift_down.h create mode 100644 third_party/libcxx/__algorithm/sort.h create mode 100644 third_party/libcxx/__algorithm/sort_heap.h create mode 100644 third_party/libcxx/__algorithm/stable_partition.h create mode 100644 third_party/libcxx/__algorithm/stable_sort.h create mode 100644 third_party/libcxx/__algorithm/swap_ranges.h create mode 100644 third_party/libcxx/__algorithm/three_way_comp_ref_type.h create mode 100644 third_party/libcxx/__algorithm/transform.h create mode 100644 third_party/libcxx/__algorithm/uniform_random_bit_generator_adaptor.h create mode 100644 third_party/libcxx/__algorithm/unique.h create mode 100644 third_party/libcxx/__algorithm/unique_copy.h create mode 100644 third_party/libcxx/__algorithm/unwrap_iter.h create mode 100644 third_party/libcxx/__algorithm/unwrap_range.h create mode 100644 third_party/libcxx/__algorithm/upper_bound.h create mode 100644 third_party/libcxx/__assert create mode 100644 third_party/libcxx/__atomic/aliases.h create mode 100644 third_party/libcxx/__atomic/atomic.h create mode 100644 third_party/libcxx/__atomic/atomic_base.h create mode 100644 third_party/libcxx/__atomic/atomic_flag.h create mode 100644 third_party/libcxx/__atomic/atomic_init.h create mode 100644 third_party/libcxx/__atomic/atomic_lock_free.h create mode 100644 third_party/libcxx/__atomic/atomic_sync.h create mode 100644 third_party/libcxx/__atomic/check_memory_order.h create mode 100644 third_party/libcxx/__atomic/contention_t.h create mode 100644 third_party/libcxx/__atomic/cxx_atomic_impl.h create mode 100644 third_party/libcxx/__atomic/fence.h create mode 100644 third_party/libcxx/__atomic/is_always_lock_free.h create mode 100644 third_party/libcxx/__atomic/kill_dependency.h create mode 100644 third_party/libcxx/__atomic/memory_order.h create mode 100644 third_party/libcxx/__availability create mode 100644 third_party/libcxx/__bit/bit_cast.h create mode 100644 third_party/libcxx/__bit/bit_ceil.h create mode 100644 third_party/libcxx/__bit/bit_floor.h create mode 100644 third_party/libcxx/__bit/bit_log2.h create mode 100644 third_party/libcxx/__bit/bit_width.h create mode 100644 third_party/libcxx/__bit/blsr.h create mode 100644 third_party/libcxx/__bit/byteswap.h create mode 100644 third_party/libcxx/__bit/countl.h create mode 100644 third_party/libcxx/__bit/countr.h create mode 100644 third_party/libcxx/__bit/endian.h create mode 100644 third_party/libcxx/__bit/has_single_bit.h create mode 100644 third_party/libcxx/__bit/popcount.h create mode 100644 third_party/libcxx/__bit/rotate.h delete mode 100644 third_party/libcxx/__bsd_locale_fallbacks.h create mode 100644 third_party/libcxx/__charconv/chars_format.h create mode 100644 third_party/libcxx/__charconv/from_chars_integral.h create mode 100644 third_party/libcxx/__charconv/from_chars_result.h create mode 100644 third_party/libcxx/__charconv/tables.h create mode 100644 third_party/libcxx/__charconv/to_chars.h create mode 100644 third_party/libcxx/__charconv/to_chars_base_10.h create mode 100644 third_party/libcxx/__charconv/to_chars_floating_point.h create mode 100644 third_party/libcxx/__charconv/to_chars_integral.h create mode 100644 third_party/libcxx/__charconv/to_chars_result.h create mode 100644 third_party/libcxx/__charconv/traits.h create mode 100644 third_party/libcxx/__chrono/calendar.h create mode 100644 third_party/libcxx/__chrono/concepts.h create mode 100644 third_party/libcxx/__chrono/convert_to_timespec.h create mode 100644 third_party/libcxx/__chrono/convert_to_tm.h create mode 100644 third_party/libcxx/__chrono/day.h create mode 100644 third_party/libcxx/__chrono/duration.h create mode 100644 third_party/libcxx/__chrono/file_clock.h create mode 100644 third_party/libcxx/__chrono/formatter.h create mode 100644 third_party/libcxx/__chrono/hh_mm_ss.h create mode 100644 third_party/libcxx/__chrono/high_resolution_clock.h create mode 100644 third_party/libcxx/__chrono/literals.h create mode 100644 third_party/libcxx/__chrono/month.h create mode 100644 third_party/libcxx/__chrono/month_weekday.h create mode 100644 third_party/libcxx/__chrono/monthday.h create mode 100644 third_party/libcxx/__chrono/ostream.h create mode 100644 third_party/libcxx/__chrono/parser_std_format_spec.h create mode 100644 third_party/libcxx/__chrono/statically_widen.h create mode 100644 third_party/libcxx/__chrono/steady_clock.h create mode 100644 third_party/libcxx/__chrono/system_clock.h create mode 100644 third_party/libcxx/__chrono/time_point.h create mode 100644 third_party/libcxx/__chrono/weekday.h create mode 100644 third_party/libcxx/__chrono/year.h create mode 100644 third_party/libcxx/__chrono/year_month.h create mode 100644 third_party/libcxx/__chrono/year_month_day.h create mode 100644 third_party/libcxx/__chrono/year_month_weekday.h create mode 100644 third_party/libcxx/__compare/common_comparison_category.h create mode 100644 third_party/libcxx/__compare/compare_partial_order_fallback.h create mode 100644 third_party/libcxx/__compare/compare_strong_order_fallback.h create mode 100644 third_party/libcxx/__compare/compare_three_way.h create mode 100644 third_party/libcxx/__compare/compare_three_way_result.h create mode 100644 third_party/libcxx/__compare/compare_weak_order_fallback.h create mode 100644 third_party/libcxx/__compare/is_eq.h create mode 100644 third_party/libcxx/__compare/ordering.h create mode 100644 third_party/libcxx/__compare/partial_order.h create mode 100644 third_party/libcxx/__compare/strong_order.h create mode 100644 third_party/libcxx/__compare/synth_three_way.h create mode 100644 third_party/libcxx/__compare/three_way_comparable.h create mode 100644 third_party/libcxx/__compare/weak_order.h create mode 100644 third_party/libcxx/__concepts/arithmetic.h create mode 100644 third_party/libcxx/__concepts/assignable.h create mode 100644 third_party/libcxx/__concepts/boolean_testable.h create mode 100644 third_party/libcxx/__concepts/class_or_enum.h create mode 100644 third_party/libcxx/__concepts/common_reference_with.h create mode 100644 third_party/libcxx/__concepts/common_with.h create mode 100644 third_party/libcxx/__concepts/constructible.h create mode 100644 third_party/libcxx/__concepts/convertible_to.h create mode 100644 third_party/libcxx/__concepts/copyable.h create mode 100644 third_party/libcxx/__concepts/derived_from.h create mode 100644 third_party/libcxx/__concepts/destructible.h create mode 100644 third_party/libcxx/__concepts/different_from.h create mode 100644 third_party/libcxx/__concepts/equality_comparable.h create mode 100644 third_party/libcxx/__concepts/invocable.h create mode 100644 third_party/libcxx/__concepts/movable.h create mode 100644 third_party/libcxx/__concepts/predicate.h create mode 100644 third_party/libcxx/__concepts/regular.h create mode 100644 third_party/libcxx/__concepts/relation.h create mode 100644 third_party/libcxx/__concepts/same_as.h create mode 100644 third_party/libcxx/__concepts/semiregular.h create mode 100644 third_party/libcxx/__concepts/swappable.h create mode 100644 third_party/libcxx/__concepts/totally_ordered.h create mode 100644 third_party/libcxx/__condition_variable/condition_variable.h create mode 100644 third_party/libcxx/__config_site create mode 100644 third_party/libcxx/__coroutine/coroutine_handle.h create mode 100644 third_party/libcxx/__coroutine/coroutine_traits.h create mode 100644 third_party/libcxx/__coroutine/noop_coroutine_handle.h create mode 100644 third_party/libcxx/__coroutine/trivial_awaitables.h create mode 100644 third_party/libcxx/__debug_utils/randomize_range.h create mode 100644 third_party/libcxx/__exception/exception.h create mode 100644 third_party/libcxx/__exception/exception_ptr.h create mode 100644 third_party/libcxx/__exception/nested_exception.h create mode 100644 third_party/libcxx/__exception/operations.h create mode 100644 third_party/libcxx/__exception/terminate.h create mode 100644 third_party/libcxx/__expected/bad_expected_access.h create mode 100644 third_party/libcxx/__expected/expected.h create mode 100644 third_party/libcxx/__expected/unexpect.h create mode 100644 third_party/libcxx/__expected/unexpected.h create mode 100644 third_party/libcxx/__filesystem/copy_options.h create mode 100644 third_party/libcxx/__filesystem/directory_entry.h create mode 100644 third_party/libcxx/__filesystem/directory_iterator.h create mode 100644 third_party/libcxx/__filesystem/directory_options.h create mode 100644 third_party/libcxx/__filesystem/file_status.h create mode 100644 third_party/libcxx/__filesystem/file_time_type.h create mode 100644 third_party/libcxx/__filesystem/file_type.h create mode 100644 third_party/libcxx/__filesystem/filesystem_error.h create mode 100644 third_party/libcxx/__filesystem/operations.h create mode 100644 third_party/libcxx/__filesystem/path.h create mode 100644 third_party/libcxx/__filesystem/path_iterator.h create mode 100644 third_party/libcxx/__filesystem/perm_options.h create mode 100644 third_party/libcxx/__filesystem/perms.h create mode 100644 third_party/libcxx/__filesystem/recursive_directory_iterator.h create mode 100644 third_party/libcxx/__filesystem/space_info.h create mode 100644 third_party/libcxx/__filesystem/u8path.h create mode 100644 third_party/libcxx/__format/buffer.h create mode 100644 third_party/libcxx/__format/concepts.h create mode 100644 third_party/libcxx/__format/container_adaptor.h create mode 100644 third_party/libcxx/__format/enable_insertable.h create mode 100644 third_party/libcxx/__format/escaped_output_table.h create mode 100644 third_party/libcxx/__format/extended_grapheme_cluster_table.h create mode 100644 third_party/libcxx/__format/format_arg.h create mode 100644 third_party/libcxx/__format/format_arg_store.h create mode 100644 third_party/libcxx/__format/format_args.h create mode 100644 third_party/libcxx/__format/format_context.h create mode 100644 third_party/libcxx/__format/format_error.h create mode 100644 third_party/libcxx/__format/format_functions.h create mode 100644 third_party/libcxx/__format/format_fwd.h create mode 100644 third_party/libcxx/__format/format_parse_context.h create mode 100644 third_party/libcxx/__format/format_string.h create mode 100644 third_party/libcxx/__format/format_to_n_result.h create mode 100644 third_party/libcxx/__format/formatter.h create mode 100644 third_party/libcxx/__format/formatter_bool.h create mode 100644 third_party/libcxx/__format/formatter_char.h create mode 100644 third_party/libcxx/__format/formatter_floating_point.h create mode 100644 third_party/libcxx/__format/formatter_integer.h create mode 100644 third_party/libcxx/__format/formatter_integral.h create mode 100644 third_party/libcxx/__format/formatter_output.h create mode 100644 third_party/libcxx/__format/formatter_pointer.h create mode 100644 third_party/libcxx/__format/formatter_string.h create mode 100644 third_party/libcxx/__format/formatter_tuple.h create mode 100644 third_party/libcxx/__format/parser_std_format_spec.h create mode 100644 third_party/libcxx/__format/range_default_formatter.h create mode 100644 third_party/libcxx/__format/range_formatter.h create mode 100644 third_party/libcxx/__format/unicode.h create mode 100644 third_party/libcxx/__format/width_estimation_table.h create mode 100644 third_party/libcxx/__functional/binary_function.h create mode 100644 third_party/libcxx/__functional/binary_negate.h create mode 100644 third_party/libcxx/__functional/bind.h create mode 100644 third_party/libcxx/__functional/bind_back.h create mode 100644 third_party/libcxx/__functional/bind_front.h create mode 100644 third_party/libcxx/__functional/binder1st.h create mode 100644 third_party/libcxx/__functional/binder2nd.h create mode 100644 third_party/libcxx/__functional/boyer_moore_searcher.h create mode 100644 third_party/libcxx/__functional/compose.h create mode 100644 third_party/libcxx/__functional/default_searcher.h create mode 100644 third_party/libcxx/__functional/function.h create mode 100644 third_party/libcxx/__functional/hash.h create mode 100644 third_party/libcxx/__functional/identity.h create mode 100644 third_party/libcxx/__functional/invoke.h create mode 100644 third_party/libcxx/__functional/is_transparent.h create mode 100644 third_party/libcxx/__functional/mem_fn.h create mode 100644 third_party/libcxx/__functional/mem_fun_ref.h create mode 100644 third_party/libcxx/__functional/not_fn.h create mode 100644 third_party/libcxx/__functional/operations.h create mode 100644 third_party/libcxx/__functional/perfect_forward.h create mode 100644 third_party/libcxx/__functional/pointer_to_binary_function.h create mode 100644 third_party/libcxx/__functional/pointer_to_unary_function.h create mode 100644 third_party/libcxx/__functional/ranges_operations.h create mode 100644 third_party/libcxx/__functional/reference_wrapper.h create mode 100644 third_party/libcxx/__functional/unary_function.h create mode 100644 third_party/libcxx/__functional/unary_negate.h create mode 100644 third_party/libcxx/__functional/weak_result_type.h delete mode 100644 third_party/libcxx/__functional_base create mode 100644 third_party/libcxx/__fwd/array.h create mode 100644 third_party/libcxx/__fwd/fstream.h create mode 100644 third_party/libcxx/__fwd/get.h create mode 100644 third_party/libcxx/__fwd/hash.h create mode 100644 third_party/libcxx/__fwd/ios.h create mode 100644 third_party/libcxx/__fwd/istream.h create mode 100644 third_party/libcxx/__fwd/memory_resource.h create mode 100644 third_party/libcxx/__fwd/ostream.h create mode 100644 third_party/libcxx/__fwd/pair.h create mode 100644 third_party/libcxx/__fwd/span.h create mode 100644 third_party/libcxx/__fwd/sstream.h create mode 100644 third_party/libcxx/__fwd/streambuf.h create mode 100644 third_party/libcxx/__fwd/string.h create mode 100644 third_party/libcxx/__fwd/string_view.h create mode 100644 third_party/libcxx/__fwd/subrange.h create mode 100644 third_party/libcxx/__fwd/tuple.h create mode 100644 third_party/libcxx/__ios/fpos.h create mode 100644 third_party/libcxx/__iterator/access.h create mode 100644 third_party/libcxx/__iterator/advance.h create mode 100644 third_party/libcxx/__iterator/back_insert_iterator.h create mode 100644 third_party/libcxx/__iterator/bounded_iter.h create mode 100644 third_party/libcxx/__iterator/common_iterator.h create mode 100644 third_party/libcxx/__iterator/concepts.h create mode 100644 third_party/libcxx/__iterator/counted_iterator.h create mode 100644 third_party/libcxx/__iterator/data.h create mode 100644 third_party/libcxx/__iterator/default_sentinel.h create mode 100644 third_party/libcxx/__iterator/distance.h create mode 100644 third_party/libcxx/__iterator/empty.h create mode 100644 third_party/libcxx/__iterator/erase_if_container.h create mode 100644 third_party/libcxx/__iterator/front_insert_iterator.h create mode 100644 third_party/libcxx/__iterator/incrementable_traits.h create mode 100644 third_party/libcxx/__iterator/indirectly_comparable.h create mode 100644 third_party/libcxx/__iterator/insert_iterator.h create mode 100644 third_party/libcxx/__iterator/istream_iterator.h create mode 100644 third_party/libcxx/__iterator/istreambuf_iterator.h create mode 100644 third_party/libcxx/__iterator/iter_move.h create mode 100644 third_party/libcxx/__iterator/iter_swap.h create mode 100644 third_party/libcxx/__iterator/iterator.h create mode 100644 third_party/libcxx/__iterator/iterator_traits.h create mode 100644 third_party/libcxx/__iterator/iterator_with_data.h create mode 100644 third_party/libcxx/__iterator/mergeable.h create mode 100644 third_party/libcxx/__iterator/move_iterator.h create mode 100644 third_party/libcxx/__iterator/move_sentinel.h create mode 100644 third_party/libcxx/__iterator/next.h create mode 100644 third_party/libcxx/__iterator/ostream_iterator.h create mode 100644 third_party/libcxx/__iterator/ostreambuf_iterator.h create mode 100644 third_party/libcxx/__iterator/permutable.h create mode 100644 third_party/libcxx/__iterator/prev.h create mode 100644 third_party/libcxx/__iterator/projected.h create mode 100644 third_party/libcxx/__iterator/readable_traits.h create mode 100644 third_party/libcxx/__iterator/reverse_access.h create mode 100644 third_party/libcxx/__iterator/reverse_iterator.h create mode 100644 third_party/libcxx/__iterator/segmented_iterator.h create mode 100644 third_party/libcxx/__iterator/size.h create mode 100644 third_party/libcxx/__iterator/sortable.h create mode 100644 third_party/libcxx/__iterator/unreachable_sentinel.h create mode 100644 third_party/libcxx/__iterator/wrap_iter.h create mode 100644 third_party/libcxx/__locale_dir/locale_base_api/bsd_locale_defaults.h create mode 100644 third_party/libcxx/__locale_dir/locale_base_api/bsd_locale_fallbacks.h create mode 100644 third_party/libcxx/__locale_dir/locale_base_api/locale_guard.h create mode 100644 third_party/libcxx/__mbstate_t.h create mode 100644 third_party/libcxx/__mdspan/extents.h create mode 100644 third_party/libcxx/__memory/addressof.h create mode 100644 third_party/libcxx/__memory/align.h create mode 100644 third_party/libcxx/__memory/aligned_alloc.h create mode 100644 third_party/libcxx/__memory/allocate_at_least.h create mode 100644 third_party/libcxx/__memory/allocation_guard.h create mode 100644 third_party/libcxx/__memory/allocator.h create mode 100644 third_party/libcxx/__memory/allocator_arg_t.h create mode 100644 third_party/libcxx/__memory/allocator_destructor.h create mode 100644 third_party/libcxx/__memory/allocator_traits.h create mode 100644 third_party/libcxx/__memory/assume_aligned.h create mode 100644 third_party/libcxx/__memory/auto_ptr.h create mode 100644 third_party/libcxx/__memory/builtin_new_allocator.h create mode 100644 third_party/libcxx/__memory/compressed_pair.h create mode 100644 third_party/libcxx/__memory/concepts.h create mode 100644 third_party/libcxx/__memory/construct_at.h create mode 100644 third_party/libcxx/__memory/destruct_n.h create mode 100644 third_party/libcxx/__memory/pointer_traits.h create mode 100644 third_party/libcxx/__memory/ranges_construct_at.h create mode 100644 third_party/libcxx/__memory/ranges_uninitialized_algorithms.h create mode 100644 third_party/libcxx/__memory/raw_storage_iterator.h create mode 100644 third_party/libcxx/__memory/shared_ptr.h create mode 100644 third_party/libcxx/__memory/swap_allocator.h create mode 100644 third_party/libcxx/__memory/temp_value.h create mode 100644 third_party/libcxx/__memory/temporary_buffer.h create mode 100644 third_party/libcxx/__memory/uninitialized_algorithms.h create mode 100644 third_party/libcxx/__memory/unique_ptr.h create mode 100644 third_party/libcxx/__memory/uses_allocator.h create mode 100644 third_party/libcxx/__memory/uses_allocator_construction.h create mode 100644 third_party/libcxx/__memory/voidify.h create mode 100644 third_party/libcxx/__memory_resource/memory_resource.h create mode 100644 third_party/libcxx/__memory_resource/monotonic_buffer_resource.h create mode 100644 third_party/libcxx/__memory_resource/polymorphic_allocator.h create mode 100644 third_party/libcxx/__memory_resource/pool_options.h create mode 100644 third_party/libcxx/__memory_resource/synchronized_pool_resource.h create mode 100644 third_party/libcxx/__memory_resource/unsynchronized_pool_resource.h create mode 100644 third_party/libcxx/__mutex/lock_guard.h create mode 100644 third_party/libcxx/__mutex/mutex.h create mode 100644 third_party/libcxx/__mutex/tag_types.h create mode 100644 third_party/libcxx/__mutex/unique_lock.h delete mode 100644 third_party/libcxx/__mutex_base delete mode 100644 third_party/libcxx/__nullptr create mode 100644 third_party/libcxx/__numeric/accumulate.h create mode 100644 third_party/libcxx/__numeric/adjacent_difference.h create mode 100644 third_party/libcxx/__numeric/exclusive_scan.h create mode 100644 third_party/libcxx/__numeric/gcd_lcm.h create mode 100644 third_party/libcxx/__numeric/inclusive_scan.h create mode 100644 third_party/libcxx/__numeric/inner_product.h create mode 100644 third_party/libcxx/__numeric/iota.h create mode 100644 third_party/libcxx/__numeric/midpoint.h create mode 100644 third_party/libcxx/__numeric/partial_sum.h create mode 100644 third_party/libcxx/__numeric/reduce.h create mode 100644 third_party/libcxx/__numeric/transform_exclusive_scan.h create mode 100644 third_party/libcxx/__numeric/transform_inclusive_scan.h create mode 100644 third_party/libcxx/__numeric/transform_reduce.h create mode 100644 third_party/libcxx/__pstl/internal/algorithm_fwd.h create mode 100644 third_party/libcxx/__pstl/internal/algorithm_impl.h create mode 100644 third_party/libcxx/__pstl/internal/execution_defs.h create mode 100644 third_party/libcxx/__pstl/internal/execution_impl.h create mode 100644 third_party/libcxx/__pstl/internal/glue_algorithm_defs.h create mode 100644 third_party/libcxx/__pstl/internal/glue_algorithm_impl.h create mode 100644 third_party/libcxx/__pstl/internal/glue_memory_defs.h create mode 100644 third_party/libcxx/__pstl/internal/glue_memory_impl.h create mode 100644 third_party/libcxx/__pstl/internal/glue_numeric_defs.h create mode 100644 third_party/libcxx/__pstl/internal/glue_numeric_impl.h create mode 100644 third_party/libcxx/__pstl/internal/memory_impl.h create mode 100644 third_party/libcxx/__pstl/internal/numeric_fwd.h create mode 100644 third_party/libcxx/__pstl/internal/numeric_impl.h create mode 100644 third_party/libcxx/__pstl/internal/omp/parallel_for.h create mode 100644 third_party/libcxx/__pstl/internal/omp/parallel_for_each.h create mode 100644 third_party/libcxx/__pstl/internal/omp/parallel_invoke.h create mode 100644 third_party/libcxx/__pstl/internal/omp/parallel_merge.h create mode 100644 third_party/libcxx/__pstl/internal/omp/parallel_reduce.h create mode 100644 third_party/libcxx/__pstl/internal/omp/parallel_scan.h create mode 100644 third_party/libcxx/__pstl/internal/omp/parallel_stable_partial_sort.h create mode 100644 third_party/libcxx/__pstl/internal/omp/parallel_stable_sort.h create mode 100644 third_party/libcxx/__pstl/internal/omp/parallel_transform_reduce.h create mode 100644 third_party/libcxx/__pstl/internal/omp/parallel_transform_scan.h create mode 100644 third_party/libcxx/__pstl/internal/omp/util.h create mode 100644 third_party/libcxx/__pstl/internal/parallel_backend.h create mode 100644 third_party/libcxx/__pstl/internal/parallel_backend_omp.h create mode 100644 third_party/libcxx/__pstl/internal/parallel_backend_serial.h create mode 100644 third_party/libcxx/__pstl/internal/parallel_backend_tbb.h create mode 100644 third_party/libcxx/__pstl/internal/parallel_backend_utils.h create mode 100644 third_party/libcxx/__pstl/internal/unseq_backend_simd.h create mode 100644 third_party/libcxx/__pstl/internal/utils.h rename third_party/libcxx/{vector.cc => __pstl_algorithm} (55%) create mode 100644 third_party/libcxx/__pstl_config_site rename third_party/libcxx/{stdexcept.cc => __pstl_memory} (53%) create mode 100644 third_party/libcxx/__pstl_numeric create mode 100644 third_party/libcxx/__random/bernoulli_distribution.h create mode 100644 third_party/libcxx/__random/binomial_distribution.h create mode 100644 third_party/libcxx/__random/cauchy_distribution.h create mode 100644 third_party/libcxx/__random/chi_squared_distribution.h create mode 100644 third_party/libcxx/__random/clamp_to_integral.h create mode 100644 third_party/libcxx/__random/default_random_engine.h create mode 100644 third_party/libcxx/__random/discard_block_engine.h create mode 100644 third_party/libcxx/__random/discrete_distribution.h create mode 100644 third_party/libcxx/__random/exponential_distribution.h create mode 100644 third_party/libcxx/__random/extreme_value_distribution.h create mode 100644 third_party/libcxx/__random/fisher_f_distribution.h create mode 100644 third_party/libcxx/__random/gamma_distribution.h create mode 100644 third_party/libcxx/__random/generate_canonical.h create mode 100644 third_party/libcxx/__random/geometric_distribution.h create mode 100644 third_party/libcxx/__random/independent_bits_engine.h create mode 100644 third_party/libcxx/__random/is_seed_sequence.h create mode 100644 third_party/libcxx/__random/is_valid.h create mode 100644 third_party/libcxx/__random/knuth_b.h create mode 100644 third_party/libcxx/__random/linear_congruential_engine.h create mode 100644 third_party/libcxx/__random/log2.h create mode 100644 third_party/libcxx/__random/lognormal_distribution.h create mode 100644 third_party/libcxx/__random/mersenne_twister_engine.h create mode 100644 third_party/libcxx/__random/negative_binomial_distribution.h create mode 100644 third_party/libcxx/__random/normal_distribution.h create mode 100644 third_party/libcxx/__random/piecewise_constant_distribution.h create mode 100644 third_party/libcxx/__random/piecewise_linear_distribution.h create mode 100644 third_party/libcxx/__random/poisson_distribution.h create mode 100644 third_party/libcxx/__random/random_device.h create mode 100644 third_party/libcxx/__random/ranlux.h create mode 100644 third_party/libcxx/__random/seed_seq.h create mode 100644 third_party/libcxx/__random/shuffle_order_engine.h create mode 100644 third_party/libcxx/__random/student_t_distribution.h create mode 100644 third_party/libcxx/__random/subtract_with_carry_engine.h create mode 100644 third_party/libcxx/__random/uniform_int_distribution.h create mode 100644 third_party/libcxx/__random/uniform_random_bit_generator.h create mode 100644 third_party/libcxx/__random/uniform_real_distribution.h create mode 100644 third_party/libcxx/__random/weibull_distribution.h create mode 100644 third_party/libcxx/__ranges/access.h create mode 100644 third_party/libcxx/__ranges/all.h create mode 100644 third_party/libcxx/__ranges/as_rvalue_view.h create mode 100644 third_party/libcxx/__ranges/common_view.h create mode 100644 third_party/libcxx/__ranges/concepts.h create mode 100644 third_party/libcxx/__ranges/container_compatible_range.h create mode 100644 third_party/libcxx/__ranges/copyable_box.h create mode 100644 third_party/libcxx/__ranges/counted.h create mode 100644 third_party/libcxx/__ranges/dangling.h create mode 100644 third_party/libcxx/__ranges/data.h create mode 100644 third_party/libcxx/__ranges/drop_view.h create mode 100644 third_party/libcxx/__ranges/drop_while_view.h create mode 100644 third_party/libcxx/__ranges/elements_view.h create mode 100644 third_party/libcxx/__ranges/empty.h create mode 100644 third_party/libcxx/__ranges/empty_view.h create mode 100644 third_party/libcxx/__ranges/enable_borrowed_range.h create mode 100644 third_party/libcxx/__ranges/enable_view.h create mode 100644 third_party/libcxx/__ranges/filter_view.h create mode 100644 third_party/libcxx/__ranges/from_range.h create mode 100644 third_party/libcxx/__ranges/iota_view.h create mode 100644 third_party/libcxx/__ranges/istream_view.h create mode 100644 third_party/libcxx/__ranges/join_view.h create mode 100644 third_party/libcxx/__ranges/lazy_split_view.h create mode 100644 third_party/libcxx/__ranges/non_propagating_cache.h create mode 100644 third_party/libcxx/__ranges/owning_view.h create mode 100644 third_party/libcxx/__ranges/range_adaptor.h create mode 100644 third_party/libcxx/__ranges/rbegin.h create mode 100644 third_party/libcxx/__ranges/ref_view.h create mode 100644 third_party/libcxx/__ranges/rend.h create mode 100644 third_party/libcxx/__ranges/reverse_view.h create mode 100644 third_party/libcxx/__ranges/single_view.h create mode 100644 third_party/libcxx/__ranges/size.h create mode 100644 third_party/libcxx/__ranges/split_view.h create mode 100644 third_party/libcxx/__ranges/subrange.h create mode 100644 third_party/libcxx/__ranges/take_view.h create mode 100644 third_party/libcxx/__ranges/take_while_view.h create mode 100644 third_party/libcxx/__ranges/transform_view.h create mode 100644 third_party/libcxx/__ranges/view_interface.h create mode 100644 third_party/libcxx/__ranges/views.h create mode 100644 third_party/libcxx/__ranges/zip_view.h create mode 100644 third_party/libcxx/__std_mbstate_t.h create mode 100644 third_party/libcxx/__stop_token/atomic_unique_lock.h create mode 100644 third_party/libcxx/__stop_token/intrusive_list_view.h create mode 100644 third_party/libcxx/__stop_token/intrusive_shared_ptr.h delete mode 100644 third_party/libcxx/__string create mode 100644 third_party/libcxx/__string/char_traits.h create mode 100644 third_party/libcxx/__string/constexpr_c_functions.h create mode 100644 third_party/libcxx/__string/extern_template_lists.h create mode 100644 third_party/libcxx/__support/android/locale_bionic.h create mode 100644 third_party/libcxx/__support/fuchsia/xlocale.h create mode 100644 third_party/libcxx/__support/ibm/gettod_zos.h create mode 100644 third_party/libcxx/__support/ibm/locale_mgmt_zos.h create mode 100644 third_party/libcxx/__support/ibm/nanosleep.h create mode 100644 third_party/libcxx/__support/ibm/xlocale.h create mode 100644 third_party/libcxx/__support/musl/xlocale.h create mode 100644 third_party/libcxx/__support/newlib/xlocale.h create mode 100644 third_party/libcxx/__support/openbsd/xlocale.h create mode 100644 third_party/libcxx/__support/win32/locale_win32.h create mode 100644 third_party/libcxx/__support/xlocale/__nop_locale_mgmt.h create mode 100644 third_party/libcxx/__support/xlocale/__posix_l_fallback.h create mode 100644 third_party/libcxx/__support/xlocale/__strtonum_fallback.h rename third_party/libcxx/{__errc => __system_error/errc.h} (50%) create mode 100644 third_party/libcxx/__system_error/error_category.h create mode 100644 third_party/libcxx/__system_error/error_code.h create mode 100644 third_party/libcxx/__system_error/error_condition.h create mode 100644 third_party/libcxx/__system_error/system_error.h create mode 100644 third_party/libcxx/__thread/poll_with_backoff.h create mode 100644 third_party/libcxx/__thread/timed_backoff_policy.h delete mode 100644 third_party/libcxx/__tuple create mode 100644 third_party/libcxx/__tuple/make_tuple_types.h create mode 100644 third_party/libcxx/__tuple/pair_like.h create mode 100644 third_party/libcxx/__tuple/sfinae_helpers.h create mode 100644 third_party/libcxx/__tuple/tuple_element.h create mode 100644 third_party/libcxx/__tuple/tuple_indices.h create mode 100644 third_party/libcxx/__tuple/tuple_like.h create mode 100644 third_party/libcxx/__tuple/tuple_like_ext.h create mode 100644 third_party/libcxx/__tuple/tuple_size.h create mode 100644 third_party/libcxx/__tuple/tuple_types.h create mode 100644 third_party/libcxx/__type_traits/add_const.h create mode 100644 third_party/libcxx/__type_traits/add_cv.h create mode 100644 third_party/libcxx/__type_traits/add_lvalue_reference.h create mode 100644 third_party/libcxx/__type_traits/add_pointer.h create mode 100644 third_party/libcxx/__type_traits/add_rvalue_reference.h create mode 100644 third_party/libcxx/__type_traits/add_volatile.h create mode 100644 third_party/libcxx/__type_traits/aligned_storage.h create mode 100644 third_party/libcxx/__type_traits/aligned_union.h create mode 100644 third_party/libcxx/__type_traits/alignment_of.h create mode 100644 third_party/libcxx/__type_traits/apply_cv.h create mode 100644 third_party/libcxx/__type_traits/can_extract_key.h create mode 100644 third_party/libcxx/__type_traits/common_reference.h create mode 100644 third_party/libcxx/__type_traits/common_type.h create mode 100644 third_party/libcxx/__type_traits/conditional.h create mode 100644 third_party/libcxx/__type_traits/conjunction.h create mode 100644 third_party/libcxx/__type_traits/copy_cv.h create mode 100644 third_party/libcxx/__type_traits/copy_cvref.h create mode 100644 third_party/libcxx/__type_traits/decay.h create mode 100644 third_party/libcxx/__type_traits/dependent_type.h create mode 100644 third_party/libcxx/__type_traits/disjunction.h create mode 100644 third_party/libcxx/__type_traits/enable_if.h create mode 100644 third_party/libcxx/__type_traits/extent.h create mode 100644 third_party/libcxx/__type_traits/has_unique_object_representation.h create mode 100644 third_party/libcxx/__type_traits/has_virtual_destructor.h create mode 100644 third_party/libcxx/__type_traits/integral_constant.h create mode 100644 third_party/libcxx/__type_traits/invoke.h create mode 100644 third_party/libcxx/__type_traits/is_abstract.h create mode 100644 third_party/libcxx/__type_traits/is_aggregate.h create mode 100644 third_party/libcxx/__type_traits/is_allocator.h create mode 100644 third_party/libcxx/__type_traits/is_always_bitcastable.h create mode 100644 third_party/libcxx/__type_traits/is_arithmetic.h create mode 100644 third_party/libcxx/__type_traits/is_array.h create mode 100644 third_party/libcxx/__type_traits/is_assignable.h create mode 100644 third_party/libcxx/__type_traits/is_base_of.h create mode 100644 third_party/libcxx/__type_traits/is_bounded_array.h create mode 100644 third_party/libcxx/__type_traits/is_callable.h create mode 100644 third_party/libcxx/__type_traits/is_char_like_type.h create mode 100644 third_party/libcxx/__type_traits/is_class.h create mode 100644 third_party/libcxx/__type_traits/is_compound.h create mode 100644 third_party/libcxx/__type_traits/is_const.h create mode 100644 third_party/libcxx/__type_traits/is_constant_evaluated.h create mode 100644 third_party/libcxx/__type_traits/is_constructible.h create mode 100644 third_party/libcxx/__type_traits/is_convertible.h create mode 100644 third_party/libcxx/__type_traits/is_copy_assignable.h create mode 100644 third_party/libcxx/__type_traits/is_copy_constructible.h create mode 100644 third_party/libcxx/__type_traits/is_core_convertible.h create mode 100644 third_party/libcxx/__type_traits/is_default_constructible.h create mode 100644 third_party/libcxx/__type_traits/is_destructible.h create mode 100644 third_party/libcxx/__type_traits/is_empty.h create mode 100644 third_party/libcxx/__type_traits/is_enum.h create mode 100644 third_party/libcxx/__type_traits/is_equality_comparable.h create mode 100644 third_party/libcxx/__type_traits/is_execution_policy.h create mode 100644 third_party/libcxx/__type_traits/is_final.h create mode 100644 third_party/libcxx/__type_traits/is_floating_point.h create mode 100644 third_party/libcxx/__type_traits/is_function.h create mode 100644 third_party/libcxx/__type_traits/is_fundamental.h create mode 100644 third_party/libcxx/__type_traits/is_implicitly_default_constructible.h create mode 100644 third_party/libcxx/__type_traits/is_integral.h create mode 100644 third_party/libcxx/__type_traits/is_literal_type.h create mode 100644 third_party/libcxx/__type_traits/is_member_function_pointer.h create mode 100644 third_party/libcxx/__type_traits/is_member_object_pointer.h create mode 100644 third_party/libcxx/__type_traits/is_member_pointer.h create mode 100644 third_party/libcxx/__type_traits/is_move_assignable.h create mode 100644 third_party/libcxx/__type_traits/is_move_constructible.h create mode 100644 third_party/libcxx/__type_traits/is_nothrow_assignable.h create mode 100644 third_party/libcxx/__type_traits/is_nothrow_constructible.h create mode 100644 third_party/libcxx/__type_traits/is_nothrow_convertible.h create mode 100644 third_party/libcxx/__type_traits/is_nothrow_copy_assignable.h create mode 100644 third_party/libcxx/__type_traits/is_nothrow_copy_constructible.h create mode 100644 third_party/libcxx/__type_traits/is_nothrow_default_constructible.h create mode 100644 third_party/libcxx/__type_traits/is_nothrow_destructible.h create mode 100644 third_party/libcxx/__type_traits/is_nothrow_move_assignable.h create mode 100644 third_party/libcxx/__type_traits/is_nothrow_move_constructible.h create mode 100644 third_party/libcxx/__type_traits/is_null_pointer.h create mode 100644 third_party/libcxx/__type_traits/is_object.h create mode 100644 third_party/libcxx/__type_traits/is_pod.h create mode 100644 third_party/libcxx/__type_traits/is_pointer.h create mode 100644 third_party/libcxx/__type_traits/is_polymorphic.h create mode 100644 third_party/libcxx/__type_traits/is_primary_template.h create mode 100644 third_party/libcxx/__type_traits/is_reference.h create mode 100644 third_party/libcxx/__type_traits/is_reference_wrapper.h create mode 100644 third_party/libcxx/__type_traits/is_referenceable.h create mode 100644 third_party/libcxx/__type_traits/is_same.h create mode 100644 third_party/libcxx/__type_traits/is_scalar.h create mode 100644 third_party/libcxx/__type_traits/is_scoped_enum.h create mode 100644 third_party/libcxx/__type_traits/is_signed.h create mode 100644 third_party/libcxx/__type_traits/is_signed_integer.h create mode 100644 third_party/libcxx/__type_traits/is_specialization.h create mode 100644 third_party/libcxx/__type_traits/is_standard_layout.h create mode 100644 third_party/libcxx/__type_traits/is_swappable.h create mode 100644 third_party/libcxx/__type_traits/is_trivial.h create mode 100644 third_party/libcxx/__type_traits/is_trivially_assignable.h create mode 100644 third_party/libcxx/__type_traits/is_trivially_constructible.h create mode 100644 third_party/libcxx/__type_traits/is_trivially_copy_assignable.h create mode 100644 third_party/libcxx/__type_traits/is_trivially_copy_constructible.h create mode 100644 third_party/libcxx/__type_traits/is_trivially_copyable.h create mode 100644 third_party/libcxx/__type_traits/is_trivially_default_constructible.h create mode 100644 third_party/libcxx/__type_traits/is_trivially_destructible.h create mode 100644 third_party/libcxx/__type_traits/is_trivially_lexicographically_comparable.h create mode 100644 third_party/libcxx/__type_traits/is_trivially_move_assignable.h create mode 100644 third_party/libcxx/__type_traits/is_trivially_move_constructible.h create mode 100644 third_party/libcxx/__type_traits/is_unbounded_array.h create mode 100644 third_party/libcxx/__type_traits/is_union.h create mode 100644 third_party/libcxx/__type_traits/is_unsigned.h create mode 100644 third_party/libcxx/__type_traits/is_unsigned_integer.h create mode 100644 third_party/libcxx/__type_traits/is_valid_expansion.h create mode 100644 third_party/libcxx/__type_traits/is_void.h create mode 100644 third_party/libcxx/__type_traits/is_volatile.h create mode 100644 third_party/libcxx/__type_traits/lazy.h create mode 100644 third_party/libcxx/__type_traits/make_32_64_or_128_bit.h create mode 100644 third_party/libcxx/__type_traits/make_const_lvalue_ref.h create mode 100644 third_party/libcxx/__type_traits/make_signed.h create mode 100644 third_party/libcxx/__type_traits/make_unsigned.h create mode 100644 third_party/libcxx/__type_traits/maybe_const.h create mode 100644 third_party/libcxx/__type_traits/nat.h create mode 100644 third_party/libcxx/__type_traits/negation.h create mode 100644 third_party/libcxx/__type_traits/noexcept_move_assign_container.h create mode 100644 third_party/libcxx/__type_traits/predicate_traits.h create mode 100644 third_party/libcxx/__type_traits/promote.h create mode 100644 third_party/libcxx/__type_traits/rank.h create mode 100644 third_party/libcxx/__type_traits/remove_all_extents.h create mode 100644 third_party/libcxx/__type_traits/remove_const.h create mode 100644 third_party/libcxx/__type_traits/remove_const_ref.h create mode 100644 third_party/libcxx/__type_traits/remove_cv.h create mode 100644 third_party/libcxx/__type_traits/remove_cvref.h create mode 100644 third_party/libcxx/__type_traits/remove_extent.h create mode 100644 third_party/libcxx/__type_traits/remove_pointer.h create mode 100644 third_party/libcxx/__type_traits/remove_reference.h create mode 100644 third_party/libcxx/__type_traits/remove_volatile.h create mode 100644 third_party/libcxx/__type_traits/result_of.h create mode 100644 third_party/libcxx/__type_traits/strip_signature.h create mode 100644 third_party/libcxx/__type_traits/type_identity.h create mode 100644 third_party/libcxx/__type_traits/type_list.h create mode 100644 third_party/libcxx/__type_traits/underlying_type.h create mode 100644 third_party/libcxx/__type_traits/unwrap_ref.h create mode 100644 third_party/libcxx/__type_traits/void_t.h create mode 100644 third_party/libcxx/__utility/as_const.h create mode 100644 third_party/libcxx/__utility/auto_cast.h create mode 100644 third_party/libcxx/__utility/cmp.h create mode 100644 third_party/libcxx/__utility/convert_to_integral.h create mode 100644 third_party/libcxx/__utility/declval.h create mode 100644 third_party/libcxx/__utility/exception_guard.h create mode 100644 third_party/libcxx/__utility/exchange.h create mode 100644 third_party/libcxx/__utility/forward.h create mode 100644 third_party/libcxx/__utility/forward_like.h create mode 100644 third_party/libcxx/__utility/in_place.h create mode 100644 third_party/libcxx/__utility/integer_sequence.h create mode 100644 third_party/libcxx/__utility/move.h create mode 100644 third_party/libcxx/__utility/pair.h create mode 100644 third_party/libcxx/__utility/piecewise_construct.h create mode 100644 third_party/libcxx/__utility/priority_tag.h create mode 100644 third_party/libcxx/__utility/rel_ops.h create mode 100644 third_party/libcxx/__utility/swap.h create mode 100644 third_party/libcxx/__utility/terminate_on_exception.h create mode 100644 third_party/libcxx/__utility/to_underlying.h create mode 100644 third_party/libcxx/__utility/unreachable.h create mode 100644 third_party/libcxx/__variant/monostate.h create mode 100644 third_party/libcxx/__verbose_abort delete mode 100644 third_party/libcxx/algorithm.cc delete mode 100644 third_party/libcxx/atomic_support.hh create mode 100644 third_party/libcxx/barrier delete mode 100644 third_party/libcxx/charconv.cc delete mode 100644 third_party/libcxx/chrono.cc create mode 100644 third_party/libcxx/complex.h create mode 100644 third_party/libcxx/concepts create mode 100644 third_party/libcxx/coroutine delete mode 100644 third_party/libcxx/countof.internal.hh create mode 100644 third_party/libcxx/cuchar delete mode 100644 third_party/libcxx/exception.cc create mode 100644 third_party/libcxx/expected create mode 100644 third_party/libcxx/experimental/__memory create mode 100644 third_party/libcxx/experimental/deque create mode 100644 third_party/libcxx/experimental/forward_list create mode 100644 third_party/libcxx/experimental/iterator create mode 100644 third_party/libcxx/experimental/list create mode 100644 third_party/libcxx/experimental/map create mode 100644 third_party/libcxx/experimental/memory_resource create mode 100644 third_party/libcxx/experimental/propagate_const create mode 100644 third_party/libcxx/experimental/regex create mode 100644 third_party/libcxx/experimental/set create mode 100644 third_party/libcxx/experimental/simd create mode 100644 third_party/libcxx/experimental/string create mode 100644 third_party/libcxx/experimental/type_traits create mode 100644 third_party/libcxx/experimental/unordered_map create mode 100644 third_party/libcxx/experimental/unordered_set create mode 100644 third_party/libcxx/experimental/utility create mode 100644 third_party/libcxx/experimental/vector create mode 100644 third_party/libcxx/ext/__hash create mode 100644 third_party/libcxx/fenv.h delete mode 100644 third_party/libcxx/filesystem_common.hh create mode 100644 third_party/libcxx/float.h create mode 100644 third_party/libcxx/format delete mode 100644 third_party/libcxx/include/config_elast.hh create mode 100644 third_party/libcxx/inttypes.h create mode 100644 third_party/libcxx/latch create mode 100644 third_party/libcxx/libcxx.imp delete mode 100644 third_party/libcxx/locale1.cc delete mode 100644 third_party/libcxx/locale2.cc delete mode 100644 third_party/libcxx/locale3.cc delete mode 100644 third_party/libcxx/locale4.cc create mode 100644 third_party/libcxx/mdspan create mode 100644 third_party/libcxx/memory_resource create mode 100644 third_party/libcxx/module.modulemap delete mode 100644 third_party/libcxx/new.cc create mode 100644 third_party/libcxx/numbers delete mode 100644 third_party/libcxx/random.cc create mode 100644 third_party/libcxx/ranges delete mode 100644 third_party/libcxx/refstring.hh create mode 100644 third_party/libcxx/semaphore create mode 100644 third_party/libcxx/setjmp.h create mode 100644 third_party/libcxx/source_location create mode 100644 third_party/libcxx/src/algorithm.cpp rename third_party/libcxx/{any.cc => src/any.cpp} (69%) create mode 100644 third_party/libcxx/src/atomic.cpp create mode 100644 third_party/libcxx/src/barrier.cpp create mode 100644 third_party/libcxx/src/bind.cpp create mode 100644 third_party/libcxx/src/charconv.cpp create mode 100644 third_party/libcxx/src/chrono.cpp create mode 100644 third_party/libcxx/src/chrono_system_time_init.h rename third_party/libcxx/{condition_variable.cc => src/condition_variable.cpp} (83%) rename third_party/libcxx/{condition_variable_destructor.cc => src/condition_variable_destructor.cpp} (87%) create mode 100644 third_party/libcxx/src/debug.cpp create mode 100644 third_party/libcxx/src/exception.cpp create mode 100644 third_party/libcxx/src/experimental/memory_resource.cpp create mode 100644 third_party/libcxx/src/experimental/memory_resource_init_helper.h rename third_party/libcxx/{directory_iterator.cc => src/filesystem/directory_iterator.cpp} (63%) create mode 100644 third_party/libcxx/src/filesystem/filesystem_common.h create mode 100644 third_party/libcxx/src/filesystem/int128_builtins.cpp rename third_party/libcxx/{operations.cc => src/filesystem/operations.cpp} (67%) create mode 100644 third_party/libcxx/src/filesystem/posix_compat.h rename third_party/libcxx/{functional.cc => src/functional.cpp} (66%) rename third_party/libcxx/{future.cc => src/future.cpp} (87%) rename third_party/libcxx/{hash.cc => src/hash.cpp} (97%) create mode 100644 third_party/libcxx/src/include/apple_availability.h rename third_party/libcxx/{include/atomic_support.hh => src/include/atomic_support.h} (95%) rename third_party/libcxx/{ => src/include}/config_elast.h (62%) create mode 100644 third_party/libcxx/src/include/refstring.h create mode 100644 third_party/libcxx/src/include/ryu/common.h create mode 100644 third_party/libcxx/src/include/ryu/d2fixed.h create mode 100644 third_party/libcxx/src/include/ryu/d2fixed_full_table.h create mode 100644 third_party/libcxx/src/include/ryu/d2s.h create mode 100644 third_party/libcxx/src/include/ryu/d2s_full_table.h create mode 100644 third_party/libcxx/src/include/ryu/d2s_intrinsics.h create mode 100644 third_party/libcxx/src/include/ryu/digit_table.h create mode 100644 third_party/libcxx/src/include/ryu/f2s.h create mode 100644 third_party/libcxx/src/include/ryu/ryu.h rename third_party/libcxx/{__sso_allocator => src/include/sso_allocator.h} (76%) create mode 100644 third_party/libcxx/src/include/to_chars_floating_point.h rename third_party/libcxx/{ios.cc => src/ios.cpp} (86%) create mode 100644 third_party/libcxx/src/ios.instantiations.cpp rename third_party/libcxx/{iostream.cc => src/iostream.cpp} (85%) create mode 100644 third_party/libcxx/src/iostream_init.h create mode 100644 third_party/libcxx/src/legacy_debug_handler.cpp create mode 100644 third_party/libcxx/src/legacy_pointer_safety.cpp create mode 100644 third_party/libcxx/src/locale.cpp rename third_party/libcxx/{memory.cc => src/memory.cpp} (63%) create mode 100644 third_party/libcxx/src/memory_resource.cpp create mode 100644 third_party/libcxx/src/memory_resource_init_helper.h rename third_party/libcxx/{mutex.cc => src/mutex.cpp} (78%) create mode 100644 third_party/libcxx/src/mutex_destructor.cpp create mode 100644 third_party/libcxx/src/new.cpp rename third_party/libcxx/{optional.cc => src/optional.cpp} (54%) create mode 100644 third_party/libcxx/src/random.cpp rename third_party/libcxx/{regex.cc => src/regex.cpp} (74%) create mode 100644 third_party/libcxx/src/ryu/README.txt create mode 100644 third_party/libcxx/src/ryu/d2fixed.cpp create mode 100644 third_party/libcxx/src/ryu/d2s.cpp create mode 100644 third_party/libcxx/src/ryu/f2s.cpp rename third_party/libcxx/{shared_mutex.cc => src/shared_mutex.cpp} (74%) rename third_party/libcxx/{__std_stream => src/std_stream.h} (96%) create mode 100644 third_party/libcxx/src/stdexcept.cpp create mode 100644 third_party/libcxx/src/string.cpp rename third_party/libcxx/{strstream.cc => src/strstream.cpp} (95%) create mode 100644 third_party/libcxx/src/support/ibm/mbsnrtowcs.cpp create mode 100644 third_party/libcxx/src/support/ibm/wcsnrtombs.cpp create mode 100644 third_party/libcxx/src/support/ibm/xlocale_zos.cpp create mode 100644 third_party/libcxx/src/support/runtime/exception_fallback.ipp create mode 100644 third_party/libcxx/src/support/runtime/exception_glibcxx.ipp rename third_party/libcxx/{exception_libcxxabi.hh => src/support/runtime/exception_libcxxabi.ipp} (71%) create mode 100644 third_party/libcxx/src/support/runtime/exception_libcxxrt.ipp create mode 100644 third_party/libcxx/src/support/runtime/exception_msvc.ipp rename third_party/libcxx/{exception_pointer_cxxabi.hh => src/support/runtime/exception_pointer_cxxabi.ipp} (79%) create mode 100644 third_party/libcxx/src/support/runtime/exception_pointer_glibcxx.ipp create mode 100644 third_party/libcxx/src/support/runtime/exception_pointer_msvc.ipp create mode 100644 third_party/libcxx/src/support/runtime/exception_pointer_unimplemented.ipp create mode 100644 third_party/libcxx/src/support/runtime/new_handler_fallback.ipp create mode 100644 third_party/libcxx/src/support/runtime/stdexcept_default.ipp create mode 100644 third_party/libcxx/src/support/runtime/stdexcept_vcruntime.ipp create mode 100644 third_party/libcxx/src/support/win32/locale_win32.cpp create mode 100644 third_party/libcxx/src/support/win32/support.cpp create mode 100644 third_party/libcxx/src/support/win32/thread_win32.cpp create mode 100644 third_party/libcxx/src/system_error.cpp rename third_party/libcxx/{thread.cc => src/thread.cpp} (62%) create mode 100644 third_party/libcxx/src/typeinfo.cpp rename third_party/libcxx/{valarray.cc => src/valarray.cpp} (94%) rename third_party/libcxx/{variant.cc => src/variant.cpp} (80%) create mode 100644 third_party/libcxx/src/vector.cpp create mode 100644 third_party/libcxx/src/verbose_abort.cpp create mode 100644 third_party/libcxx/stdatomic.h create mode 100644 third_party/libcxx/stdbool.h create mode 100644 third_party/libcxx/stddef.h delete mode 100644 third_party/libcxx/stdexcept_default.hh create mode 100644 third_party/libcxx/stdint.h delete mode 100644 third_party/libcxx/string.cc delete mode 100644 third_party/libcxx/system_error.cc create mode 100644 third_party/libcxx/tgmath.h create mode 100644 third_party/libcxx/uchar.h diff --git a/Makefile b/Makefile index c59ae71e8..c81df7bac 100644 --- a/Makefile +++ b/Makefile @@ -362,7 +362,6 @@ include test/libc/fmt/BUILD.mk include test/libc/time/BUILD.mk include test/libc/proc/BUILD.mk include test/libc/stdio/BUILD.mk -include test/libc/release/BUILD.mk include test/libc/BUILD.mk include test/net/http/BUILD.mk include test/net/https/BUILD.mk @@ -542,15 +541,6 @@ COSMOPOLITAN_H_ROOT_HDRS = \ libc/integral/normalize.inc \ $(foreach x,$(COSMOPOLITAN_H_PKGS),$($(x)_HDRS)) -o/cosmopolitan.h.txt: Makefile - $(file >$@, $(call uniq,$(COSMOPOLITAN_H_ROOT_HDRS))) - -o/cosmopolitan.h: o/cosmopolitan.h.txt \ - $(wildcard libc/integral/*) \ - $(foreach x,$(COSMOPOLITAN_H_PKGS),$($(x)_HDRS)) \ - $(foreach x,$(COSMOPOLITAN_H_PKGS),$($(x)_INCS)) - @$(COMPILE) -AROLLUP -T$@ build/bootstrap/rollup @$< >>$@ - o/cosmopolitan.html: private .UNSANDBOXED = 1 o/cosmopolitan.html: \ o/$(MODE)/third_party/chibicc/chibicc.dbg \ @@ -572,7 +562,6 @@ $(SRCS): \ ifeq ($(ARCH), x86_64) TOOLCHAIN_ARTIFACTS = \ - o/cosmopolitan.h \ o/$(MODE)/ape/ape.lds \ o/$(MODE)/libc/crt/crt.o \ o/$(MODE)/ape/ape.elf \ diff --git a/build/definitions.mk b/build/definitions.mk index a11d98a4c..0ff0a2150 100644 --- a/build/definitions.mk +++ b/build/definitions.mk @@ -144,12 +144,14 @@ DEFAULT_CFLAGS = \ -std=gnu2x DEFAULT_CXXFLAGS = \ + -std=gnu++20 \ -fno-rtti \ -fno-exceptions \ -fuse-cxa-atexit \ -Wno-int-in-bool-context \ -Wno-narrowing \ - -Wno-literal-suffix + -Wno-literal-suffix \ + -isystem third_party/libcxx DEFAULT_ASFLAGS = \ -W \ @@ -256,12 +258,12 @@ LD.libs = \ $(LIBS) COMPILE.c.flags = $(cc.flags) $(copt.flags) $(cpp.flags) $(c.flags) -COMPILE.cxx.flags = $(cc.flags) $(copt.flags) $(cpp.flags) $(cxx.flags) +COMPILE.cxx.flags = $(cc.flags) $(copt.flags) $(cxx.flags) $(cpp.flags) COMPILE.i.flags = $(cc.flags) $(copt.flags) $(c.flags) COMPILE.ii.flags = $(cc.flags) $(copt.flags) $(cxx.flags) LINK.flags = $(DEFAULT_LDFLAGS) $(CONFIG_LDFLAGS) $(LDFLAGS) OBJECTIFY.c.flags = $(cc.flags) $(o.flags) $(S.flags) $(cpp.flags) $(copt.flags) $(c.flags) -OBJECTIFY.cxx.flags = $(cc.flags) $(o.flags) $(S.flags) $(cpp.flags) $(copt.flags) $(cxx.flags) +OBJECTIFY.cxx.flags = $(cc.flags) $(o.flags) $(S.flags) $(cxx.flags) $(cpp.flags) $(copt.flags) OBJECTIFY.s.flags = $(ASONLYFLAGS) $(s.flags) OBJECTIFY.S.flags = $(cc.flags) $(o.flags) $(S.flags) $(cpp.flags) PREPROCESS.flags = -E $(copt.flags) $(cc.flags) $(cpp.flags) diff --git a/libc/BUILD.mk b/libc/BUILD.mk index 7ebd0fd4a..acc7f7739 100644 --- a/libc/BUILD.mk +++ b/libc/BUILD.mk @@ -4,10 +4,8 @@ PKGS += LIBC LIBC_ISYSTEM = \ -libc/isystem/algorithm \ libc/isystem/alloca.h \ libc/isystem/ammintrin.h \ -libc/isystem/any \ libc/isystem/ar.h \ libc/isystem/arm_acle.h \ libc/isystem/arm_bf16.h \ @@ -15,51 +13,16 @@ libc/isystem/arm_fp16.h \ libc/isystem/arm_neon.h \ libc/isystem/arpa/inet.h \ libc/isystem/arpa/nameser.h \ -libc/isystem/array \ libc/isystem/assert.h \ -libc/isystem/atomic \ -libc/isystem/bit \ -libc/isystem/bitset \ libc/isystem/byteswap.h \ -libc/isystem/cassert \ -libc/isystem/ccomplex \ -libc/isystem/cctype \ -libc/isystem/cerrno \ -libc/isystem/cfenv \ -libc/isystem/cfloat \ -libc/isystem/charconv \ -libc/isystem/chrono \ -libc/isystem/cinttypes \ -libc/isystem/ciso646 \ -libc/isystem/climits \ -libc/isystem/clocale \ libc/isystem/clzerointrin.h \ -libc/isystem/cmath \ -libc/isystem/codecvt \ -libc/isystem/compare \ -libc/isystem/complex \ libc/isystem/complex.h \ -libc/isystem/condition_variable \ libc/isystem/cosmo.h \ libc/isystem/cpio.h \ libc/isystem/cpuid.h \ libc/isystem/crypt.h \ -libc/isystem/csetjmp \ -libc/isystem/csignal \ -libc/isystem/cstdarg \ -libc/isystem/cstdbool \ -libc/isystem/cstddef \ -libc/isystem/cstdint \ -libc/isystem/cstdio \ -libc/isystem/cstdlib \ -libc/isystem/cstring \ -libc/isystem/ctgmath \ -libc/isystem/ctime \ libc/isystem/ctype.h \ -libc/isystem/cwchar \ -libc/isystem/cwctype \ libc/isystem/cxxabi.h \ -libc/isystem/deque \ libc/isystem/dirent.h \ libc/isystem/dlfcn.h \ libc/isystem/elf.h \ @@ -67,57 +30,37 @@ libc/isystem/emmintrin.h \ libc/isystem/endian.h \ libc/isystem/err.h \ libc/isystem/errno.h \ -libc/isystem/exception \ -libc/isystem/execution \ libc/isystem/fcntl.h \ libc/isystem/features.h \ libc/isystem/fenv.h \ -libc/isystem/filesystem \ libc/isystem/float.h \ libc/isystem/fnmatch.h \ -libc/isystem/forward_list \ -libc/isystem/fstream \ libc/isystem/ftw.h \ -libc/isystem/functional \ -libc/isystem/future \ libc/isystem/getopt.h \ libc/isystem/glob.h \ libc/isystem/grp.h \ libc/isystem/iconv.h \ libc/isystem/ifaddrs.h \ libc/isystem/immintrin.h \ -libc/isystem/initializer_list \ libc/isystem/inttypes.h \ -libc/isystem/iomanip \ -libc/isystem/ios \ -libc/isystem/iosfwd \ -libc/isystem/iostream \ libc/isystem/iso646.h \ -libc/isystem/istream \ -libc/isystem/iterator \ libc/isystem/langinfo.h \ libc/isystem/libgen.h \ -libc/isystem/limits \ libc/isystem/limits.h \ libc/isystem/link.h \ libc/isystem/linux/futex.h \ libc/isystem/linux/limits.h \ libc/isystem/linux/param.h \ libc/isystem/linux/types.h \ -libc/isystem/list \ -libc/isystem/locale \ libc/isystem/locale.h \ libc/isystem/malloc.h \ -libc/isystem/map \ libc/isystem/math.h \ -libc/isystem/memory \ libc/isystem/memory.h \ libc/isystem/mm3dnow.h \ libc/isystem/mm_malloc.h \ libc/isystem/mmintrin.h \ libc/isystem/mntent.h \ libc/isystem/monetary.h \ -libc/isystem/mutex \ libc/isystem/mwaitxintrin.h \ libc/isystem/net/ethernet.h \ libc/isystem/net/if.h \ @@ -127,7 +70,6 @@ libc/isystem/netinet/in.h \ libc/isystem/netinet/ip.h \ libc/isystem/netinet/tcp.h \ libc/isystem/netinet/udp.h \ -libc/isystem/new \ libc/isystem/nl_types.h \ libc/isystem/nmmintrin.h \ libc/isystem/nsync.h \ @@ -141,12 +83,9 @@ libc/isystem/nsync_note.h \ libc/isystem/nsync_once.h \ libc/isystem/nsync_time.h \ libc/isystem/nsync_waiter.h \ -libc/isystem/numeric \ libc/isystem/omp-tools.h \ libc/isystem/omp.h \ libc/isystem/ompx.h \ -libc/isystem/optional \ -libc/isystem/ostream \ libc/isystem/paths.h \ libc/isystem/pmmintrin.h \ libc/isystem/poll.h \ @@ -154,27 +93,17 @@ libc/isystem/popcntintrin.h \ libc/isystem/pthread.h \ libc/isystem/pty.h \ libc/isystem/pwd.h \ -libc/isystem/queue \ -libc/isystem/random \ -libc/isystem/ratio \ -libc/isystem/regex \ libc/isystem/regex.h \ libc/isystem/resolv.h \ libc/isystem/sched.h \ -libc/isystem/scoped_allocator \ libc/isystem/search.h \ libc/isystem/semaphore.h \ -libc/isystem/set \ libc/isystem/setjmp.h \ libc/isystem/sgxintrin.h \ libc/isystem/shadow.h \ -libc/isystem/shared_mutex \ libc/isystem/signal.h \ libc/isystem/smmintrin.h \ -libc/isystem/span \ libc/isystem/spawn.h \ -libc/isystem/sstream \ -libc/isystem/stack \ libc/isystem/stdalign.h \ libc/isystem/stdarg.h \ libc/isystem/stdatomic.h \ @@ -182,18 +111,13 @@ libc/isystem/stdbool.h \ libc/isystem/stdc-predef.h \ libc/isystem/stdckdint.h \ libc/isystem/stddef.h \ -libc/isystem/stdexcept \ libc/isystem/stdint.h \ libc/isystem/stdio.h \ libc/isystem/stdio_ext.h \ libc/isystem/stdlib.h \ libc/isystem/stdnoreturn.h \ -libc/isystem/streambuf \ -libc/isystem/string \ libc/isystem/string.h \ -libc/isystem/string_view \ libc/isystem/strings.h \ -libc/isystem/strstream \ libc/isystem/sys/auxv.h \ libc/isystem/sys/cdefs.h \ libc/isystem/sys/dir.h \ @@ -238,39 +162,26 @@ libc/isystem/sys/vfs.h \ libc/isystem/sys/wait.h \ libc/isystem/sysexits.h \ libc/isystem/syslog.h \ -libc/isystem/system_error \ libc/isystem/termios.h \ libc/isystem/tgmath.h \ -libc/isystem/thread \ libc/isystem/threads.h \ libc/isystem/time.h \ libc/isystem/tmmintrin.h \ -libc/isystem/tuple \ -libc/isystem/type_traits \ -libc/isystem/typeindex \ -libc/isystem/typeinfo \ libc/isystem/uchar.h \ libc/isystem/ucontext.h \ libc/isystem/uio.h \ libc/isystem/unistd.h \ -libc/isystem/unordered_map \ -libc/isystem/unordered_set \ libc/isystem/unwind.h \ -libc/isystem/utility \ libc/isystem/utime.h \ libc/isystem/utmp.h \ libc/isystem/utmpx.h \ -libc/isystem/valarray \ -libc/isystem/variant \ -libc/isystem/vector \ -libc/isystem/version \ libc/isystem/wait.h \ libc/isystem/wchar.h \ libc/isystem/wctype.h \ libc/isystem/winternl.h \ libc/isystem/wmmintrin.h \ libc/isystem/x86intrin.h \ -libc/isystem/xmmintrin.h +libc/isystem/xmmintrin.h \ LIBC_HDRS = $(filter %.h,$(LIBC_FILES)) $(LIBC_ISYSTEM) LIBC_HDRS_H = $(filter %.h,$(LIBC_HDRS)) diff --git a/libc/integral/c.inc b/libc/integral/c.inc index dc86d16bf..37bd92b86 100644 --- a/libc/integral/c.inc +++ b/libc/integral/c.inc @@ -74,7 +74,7 @@ #endif #if __STDC_VERSION__ + 0 < 201112 -#define _Atomic(TYPE) TYPE volatile +#define _Atomic(t) volatile t * #endif #ifdef __llvm__ @@ -107,8 +107,6 @@ typedef __CHAR32_TYPE__ char32_t; #include "libc/stdbool.h" #endif -#define _LIBCPP_STDINT_H - typedef int errno_t; typedef __SIZE_TYPE__ size_t; typedef __PTRDIFF_TYPE__ ssize_t; diff --git a/libc/intrin/atomic.h b/libc/intrin/atomic.h index dcaaf3ace..3d503d37f 100644 --- a/libc/intrin/atomic.h +++ b/libc/intrin/atomic.h @@ -12,16 +12,14 @@ * @see libc/atomic.h */ -typedef int memory_order; - -enum { +typedef enum { memory_order_relaxed, memory_order_consume, memory_order_acquire, memory_order_release, memory_order_acq_rel, memory_order_seq_cst, -}; +} memory_order; #define ATOMIC_VAR_INIT(...) __VA_ARGS__ #define atomic_is_lock_free(obj) ((void)(obj), sizeof(obj) <= sizeof(void *)) diff --git a/libc/isystem/__algorithm/adjacent_find.h b/libc/isystem/__algorithm/adjacent_find.h new file mode 100644 index 000000000..5e1d2ad07 --- /dev/null +++ b/libc/isystem/__algorithm/adjacent_find.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/adjacent_find.h" diff --git a/libc/isystem/__algorithm/all_of.h b/libc/isystem/__algorithm/all_of.h new file mode 100644 index 000000000..4652ac854 --- /dev/null +++ b/libc/isystem/__algorithm/all_of.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/all_of.h" diff --git a/libc/isystem/__algorithm/any_of.h b/libc/isystem/__algorithm/any_of.h new file mode 100644 index 000000000..6f273d1d9 --- /dev/null +++ b/libc/isystem/__algorithm/any_of.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/any_of.h" diff --git a/libc/isystem/__algorithm/binary_search.h b/libc/isystem/__algorithm/binary_search.h new file mode 100644 index 000000000..980063c6d --- /dev/null +++ b/libc/isystem/__algorithm/binary_search.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/binary_search.h" diff --git a/libc/isystem/__algorithm/clamp.h b/libc/isystem/__algorithm/clamp.h new file mode 100644 index 000000000..7b2774011 --- /dev/null +++ b/libc/isystem/__algorithm/clamp.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/clamp.h" diff --git a/libc/isystem/__algorithm/comp.h b/libc/isystem/__algorithm/comp.h new file mode 100644 index 000000000..eefb8bf55 --- /dev/null +++ b/libc/isystem/__algorithm/comp.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/comp.h" diff --git a/libc/isystem/__algorithm/comp_ref_type.h b/libc/isystem/__algorithm/comp_ref_type.h new file mode 100644 index 000000000..a99ce32cf --- /dev/null +++ b/libc/isystem/__algorithm/comp_ref_type.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/comp_ref_type.h" diff --git a/libc/isystem/__algorithm/copy.h b/libc/isystem/__algorithm/copy.h new file mode 100644 index 000000000..f0b135cda --- /dev/null +++ b/libc/isystem/__algorithm/copy.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/copy.h" diff --git a/libc/isystem/__algorithm/copy_backward.h b/libc/isystem/__algorithm/copy_backward.h new file mode 100644 index 000000000..f1f982802 --- /dev/null +++ b/libc/isystem/__algorithm/copy_backward.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/copy_backward.h" diff --git a/libc/isystem/__algorithm/copy_if.h b/libc/isystem/__algorithm/copy_if.h new file mode 100644 index 000000000..78b1e991d --- /dev/null +++ b/libc/isystem/__algorithm/copy_if.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/copy_if.h" diff --git a/libc/isystem/__algorithm/copy_move_common.h b/libc/isystem/__algorithm/copy_move_common.h new file mode 100644 index 000000000..dbd46eca0 --- /dev/null +++ b/libc/isystem/__algorithm/copy_move_common.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/copy_move_common.h" diff --git a/libc/isystem/__algorithm/copy_n.h b/libc/isystem/__algorithm/copy_n.h new file mode 100644 index 000000000..e1678d6b0 --- /dev/null +++ b/libc/isystem/__algorithm/copy_n.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/copy_n.h" diff --git a/libc/isystem/__algorithm/count.h b/libc/isystem/__algorithm/count.h new file mode 100644 index 000000000..29503d08c --- /dev/null +++ b/libc/isystem/__algorithm/count.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/count.h" diff --git a/libc/isystem/__algorithm/count_if.h b/libc/isystem/__algorithm/count_if.h new file mode 100644 index 000000000..1e92f0c16 --- /dev/null +++ b/libc/isystem/__algorithm/count_if.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/count_if.h" diff --git a/libc/isystem/__algorithm/equal.h b/libc/isystem/__algorithm/equal.h new file mode 100644 index 000000000..c59e36840 --- /dev/null +++ b/libc/isystem/__algorithm/equal.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/equal.h" diff --git a/libc/isystem/__algorithm/equal_range.h b/libc/isystem/__algorithm/equal_range.h new file mode 100644 index 000000000..69b5941b3 --- /dev/null +++ b/libc/isystem/__algorithm/equal_range.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/equal_range.h" diff --git a/libc/isystem/__algorithm/fill.h b/libc/isystem/__algorithm/fill.h new file mode 100644 index 000000000..b0e93bc45 --- /dev/null +++ b/libc/isystem/__algorithm/fill.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/fill.h" diff --git a/libc/isystem/__algorithm/fill_n.h b/libc/isystem/__algorithm/fill_n.h new file mode 100644 index 000000000..d23b90a51 --- /dev/null +++ b/libc/isystem/__algorithm/fill_n.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/fill_n.h" diff --git a/libc/isystem/__algorithm/find.h b/libc/isystem/__algorithm/find.h new file mode 100644 index 000000000..3a409b265 --- /dev/null +++ b/libc/isystem/__algorithm/find.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/find.h" diff --git a/libc/isystem/__algorithm/find_end.h b/libc/isystem/__algorithm/find_end.h new file mode 100644 index 000000000..01b432a3d --- /dev/null +++ b/libc/isystem/__algorithm/find_end.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/find_end.h" diff --git a/libc/isystem/__algorithm/find_first_of.h b/libc/isystem/__algorithm/find_first_of.h new file mode 100644 index 000000000..389dfab08 --- /dev/null +++ b/libc/isystem/__algorithm/find_first_of.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/find_first_of.h" diff --git a/libc/isystem/__algorithm/find_if.h b/libc/isystem/__algorithm/find_if.h new file mode 100644 index 000000000..617f7b0b6 --- /dev/null +++ b/libc/isystem/__algorithm/find_if.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/find_if.h" diff --git a/libc/isystem/__algorithm/find_if_not.h b/libc/isystem/__algorithm/find_if_not.h new file mode 100644 index 000000000..62423636e --- /dev/null +++ b/libc/isystem/__algorithm/find_if_not.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/find_if_not.h" diff --git a/libc/isystem/__algorithm/for_each.h b/libc/isystem/__algorithm/for_each.h new file mode 100644 index 000000000..3dbb80023 --- /dev/null +++ b/libc/isystem/__algorithm/for_each.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/for_each.h" diff --git a/libc/isystem/__algorithm/for_each_n.h b/libc/isystem/__algorithm/for_each_n.h new file mode 100644 index 000000000..f1d6bb9ca --- /dev/null +++ b/libc/isystem/__algorithm/for_each_n.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/for_each_n.h" diff --git a/libc/isystem/__algorithm/for_each_segment.h b/libc/isystem/__algorithm/for_each_segment.h new file mode 100644 index 000000000..a48155365 --- /dev/null +++ b/libc/isystem/__algorithm/for_each_segment.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/for_each_segment.h" diff --git a/libc/isystem/__algorithm/generate.h b/libc/isystem/__algorithm/generate.h new file mode 100644 index 000000000..cdeb4f740 --- /dev/null +++ b/libc/isystem/__algorithm/generate.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/generate.h" diff --git a/libc/isystem/__algorithm/generate_n.h b/libc/isystem/__algorithm/generate_n.h new file mode 100644 index 000000000..bc63ac495 --- /dev/null +++ b/libc/isystem/__algorithm/generate_n.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/generate_n.h" diff --git a/libc/isystem/__algorithm/half_positive.h b/libc/isystem/__algorithm/half_positive.h new file mode 100644 index 000000000..07dbde6d8 --- /dev/null +++ b/libc/isystem/__algorithm/half_positive.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/half_positive.h" diff --git a/libc/isystem/__algorithm/in_found_result.h b/libc/isystem/__algorithm/in_found_result.h new file mode 100644 index 000000000..b1ba3443b --- /dev/null +++ b/libc/isystem/__algorithm/in_found_result.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/in_found_result.h" diff --git a/libc/isystem/__algorithm/in_fun_result.h b/libc/isystem/__algorithm/in_fun_result.h new file mode 100644 index 000000000..8ddaa0703 --- /dev/null +++ b/libc/isystem/__algorithm/in_fun_result.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/in_fun_result.h" diff --git a/libc/isystem/__algorithm/in_in_out_result.h b/libc/isystem/__algorithm/in_in_out_result.h new file mode 100644 index 000000000..f60a94127 --- /dev/null +++ b/libc/isystem/__algorithm/in_in_out_result.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/in_in_out_result.h" diff --git a/libc/isystem/__algorithm/in_in_result.h b/libc/isystem/__algorithm/in_in_result.h new file mode 100644 index 000000000..935c3d9f2 --- /dev/null +++ b/libc/isystem/__algorithm/in_in_result.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/in_in_result.h" diff --git a/libc/isystem/__algorithm/in_out_out_result.h b/libc/isystem/__algorithm/in_out_out_result.h new file mode 100644 index 000000000..6aca65796 --- /dev/null +++ b/libc/isystem/__algorithm/in_out_out_result.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/in_out_out_result.h" diff --git a/libc/isystem/__algorithm/in_out_result.h b/libc/isystem/__algorithm/in_out_result.h new file mode 100644 index 000000000..fae41433a --- /dev/null +++ b/libc/isystem/__algorithm/in_out_result.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/in_out_result.h" diff --git a/libc/isystem/__algorithm/includes.h b/libc/isystem/__algorithm/includes.h new file mode 100644 index 000000000..fe1dbcefc --- /dev/null +++ b/libc/isystem/__algorithm/includes.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/includes.h" diff --git a/libc/isystem/__algorithm/inplace_merge.h b/libc/isystem/__algorithm/inplace_merge.h new file mode 100644 index 000000000..3a52f879d --- /dev/null +++ b/libc/isystem/__algorithm/inplace_merge.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/inplace_merge.h" diff --git a/libc/isystem/__algorithm/is_heap.h b/libc/isystem/__algorithm/is_heap.h new file mode 100644 index 000000000..c8fb92ecb --- /dev/null +++ b/libc/isystem/__algorithm/is_heap.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/is_heap.h" diff --git a/libc/isystem/__algorithm/is_heap_until.h b/libc/isystem/__algorithm/is_heap_until.h new file mode 100644 index 000000000..b10a5340a --- /dev/null +++ b/libc/isystem/__algorithm/is_heap_until.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/is_heap_until.h" diff --git a/libc/isystem/__algorithm/is_partitioned.h b/libc/isystem/__algorithm/is_partitioned.h new file mode 100644 index 000000000..c749a1ad6 --- /dev/null +++ b/libc/isystem/__algorithm/is_partitioned.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/is_partitioned.h" diff --git a/libc/isystem/__algorithm/is_permutation.h b/libc/isystem/__algorithm/is_permutation.h new file mode 100644 index 000000000..04023edcf --- /dev/null +++ b/libc/isystem/__algorithm/is_permutation.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/is_permutation.h" diff --git a/libc/isystem/__algorithm/is_sorted.h b/libc/isystem/__algorithm/is_sorted.h new file mode 100644 index 000000000..327f6f2f6 --- /dev/null +++ b/libc/isystem/__algorithm/is_sorted.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/is_sorted.h" diff --git a/libc/isystem/__algorithm/is_sorted_until.h b/libc/isystem/__algorithm/is_sorted_until.h new file mode 100644 index 000000000..3aaa25a47 --- /dev/null +++ b/libc/isystem/__algorithm/is_sorted_until.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/is_sorted_until.h" diff --git a/libc/isystem/__algorithm/iter_swap.h b/libc/isystem/__algorithm/iter_swap.h new file mode 100644 index 000000000..453fe0d58 --- /dev/null +++ b/libc/isystem/__algorithm/iter_swap.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/iter_swap.h" diff --git a/libc/isystem/__algorithm/iterator_operations.h b/libc/isystem/__algorithm/iterator_operations.h new file mode 100644 index 000000000..40fb82c6f --- /dev/null +++ b/libc/isystem/__algorithm/iterator_operations.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/iterator_operations.h" diff --git a/libc/isystem/__algorithm/lexicographical_compare.h b/libc/isystem/__algorithm/lexicographical_compare.h new file mode 100644 index 000000000..dfb6994dd --- /dev/null +++ b/libc/isystem/__algorithm/lexicographical_compare.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/lexicographical_compare.h" diff --git a/libc/isystem/__algorithm/lexicographical_compare_three_way.h b/libc/isystem/__algorithm/lexicographical_compare_three_way.h new file mode 100644 index 000000000..0ad819b94 --- /dev/null +++ b/libc/isystem/__algorithm/lexicographical_compare_three_way.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/lexicographical_compare_three_way.h" diff --git a/libc/isystem/__algorithm/lower_bound.h b/libc/isystem/__algorithm/lower_bound.h new file mode 100644 index 000000000..94b2db647 --- /dev/null +++ b/libc/isystem/__algorithm/lower_bound.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/lower_bound.h" diff --git a/libc/isystem/__algorithm/make_heap.h b/libc/isystem/__algorithm/make_heap.h new file mode 100644 index 000000000..bcf103889 --- /dev/null +++ b/libc/isystem/__algorithm/make_heap.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/make_heap.h" diff --git a/libc/isystem/__algorithm/make_projected.h b/libc/isystem/__algorithm/make_projected.h new file mode 100644 index 000000000..6d729c4b5 --- /dev/null +++ b/libc/isystem/__algorithm/make_projected.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/make_projected.h" diff --git a/libc/isystem/__algorithm/max.h b/libc/isystem/__algorithm/max.h new file mode 100644 index 000000000..484addcad --- /dev/null +++ b/libc/isystem/__algorithm/max.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/max.h" diff --git a/libc/isystem/__algorithm/max_element.h b/libc/isystem/__algorithm/max_element.h new file mode 100644 index 000000000..cfb1f66c6 --- /dev/null +++ b/libc/isystem/__algorithm/max_element.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/max_element.h" diff --git a/libc/isystem/__algorithm/merge.h b/libc/isystem/__algorithm/merge.h new file mode 100644 index 000000000..25dd21f3d --- /dev/null +++ b/libc/isystem/__algorithm/merge.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/merge.h" diff --git a/libc/isystem/__algorithm/min.h b/libc/isystem/__algorithm/min.h new file mode 100644 index 000000000..93a1be51a --- /dev/null +++ b/libc/isystem/__algorithm/min.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/min.h" diff --git a/libc/isystem/__algorithm/min_element.h b/libc/isystem/__algorithm/min_element.h new file mode 100644 index 000000000..e6745293d --- /dev/null +++ b/libc/isystem/__algorithm/min_element.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/min_element.h" diff --git a/libc/isystem/__algorithm/min_max_result.h b/libc/isystem/__algorithm/min_max_result.h new file mode 100644 index 000000000..f944c2265 --- /dev/null +++ b/libc/isystem/__algorithm/min_max_result.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/min_max_result.h" diff --git a/libc/isystem/__algorithm/minmax.h b/libc/isystem/__algorithm/minmax.h new file mode 100644 index 000000000..17ef2ddf9 --- /dev/null +++ b/libc/isystem/__algorithm/minmax.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/minmax.h" diff --git a/libc/isystem/__algorithm/minmax_element.h b/libc/isystem/__algorithm/minmax_element.h new file mode 100644 index 000000000..405b168a9 --- /dev/null +++ b/libc/isystem/__algorithm/minmax_element.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/minmax_element.h" diff --git a/libc/isystem/__algorithm/mismatch.h b/libc/isystem/__algorithm/mismatch.h new file mode 100644 index 000000000..54b9c8896 --- /dev/null +++ b/libc/isystem/__algorithm/mismatch.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/mismatch.h" diff --git a/libc/isystem/__algorithm/move.h b/libc/isystem/__algorithm/move.h new file mode 100644 index 000000000..1f7b306ba --- /dev/null +++ b/libc/isystem/__algorithm/move.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/move.h" diff --git a/libc/isystem/__algorithm/move_backward.h b/libc/isystem/__algorithm/move_backward.h new file mode 100644 index 000000000..430f91c33 --- /dev/null +++ b/libc/isystem/__algorithm/move_backward.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/move_backward.h" diff --git a/libc/isystem/__algorithm/next_permutation.h b/libc/isystem/__algorithm/next_permutation.h new file mode 100644 index 000000000..fbbee7f89 --- /dev/null +++ b/libc/isystem/__algorithm/next_permutation.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/next_permutation.h" diff --git a/libc/isystem/__algorithm/none_of.h b/libc/isystem/__algorithm/none_of.h new file mode 100644 index 000000000..c708d865e --- /dev/null +++ b/libc/isystem/__algorithm/none_of.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/none_of.h" diff --git a/libc/isystem/__algorithm/nth_element.h b/libc/isystem/__algorithm/nth_element.h new file mode 100644 index 000000000..361b51b08 --- /dev/null +++ b/libc/isystem/__algorithm/nth_element.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/nth_element.h" diff --git a/libc/isystem/__algorithm/partial_sort.h b/libc/isystem/__algorithm/partial_sort.h new file mode 100644 index 000000000..826252843 --- /dev/null +++ b/libc/isystem/__algorithm/partial_sort.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/partial_sort.h" diff --git a/libc/isystem/__algorithm/partial_sort_copy.h b/libc/isystem/__algorithm/partial_sort_copy.h new file mode 100644 index 000000000..c3304c0c0 --- /dev/null +++ b/libc/isystem/__algorithm/partial_sort_copy.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/partial_sort_copy.h" diff --git a/libc/isystem/__algorithm/partition.h b/libc/isystem/__algorithm/partition.h new file mode 100644 index 000000000..d746009c2 --- /dev/null +++ b/libc/isystem/__algorithm/partition.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/partition.h" diff --git a/libc/isystem/__algorithm/partition_copy.h b/libc/isystem/__algorithm/partition_copy.h new file mode 100644 index 000000000..c53139f01 --- /dev/null +++ b/libc/isystem/__algorithm/partition_copy.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/partition_copy.h" diff --git a/libc/isystem/__algorithm/partition_point.h b/libc/isystem/__algorithm/partition_point.h new file mode 100644 index 000000000..af904ffe3 --- /dev/null +++ b/libc/isystem/__algorithm/partition_point.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/partition_point.h" diff --git a/libc/isystem/__algorithm/pop_heap.h b/libc/isystem/__algorithm/pop_heap.h new file mode 100644 index 000000000..29efc6977 --- /dev/null +++ b/libc/isystem/__algorithm/pop_heap.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/pop_heap.h" diff --git a/libc/isystem/__algorithm/prev_permutation.h b/libc/isystem/__algorithm/prev_permutation.h new file mode 100644 index 000000000..d2b0e6729 --- /dev/null +++ b/libc/isystem/__algorithm/prev_permutation.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/prev_permutation.h" diff --git a/libc/isystem/__algorithm/pstl_any_all_none_of.h b/libc/isystem/__algorithm/pstl_any_all_none_of.h new file mode 100644 index 000000000..1383d20ea --- /dev/null +++ b/libc/isystem/__algorithm/pstl_any_all_none_of.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/pstl_any_all_none_of.h" diff --git a/libc/isystem/__algorithm/pstl_backend.h b/libc/isystem/__algorithm/pstl_backend.h new file mode 100644 index 000000000..f46ff3449 --- /dev/null +++ b/libc/isystem/__algorithm/pstl_backend.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/pstl_backend.h" diff --git a/libc/isystem/__algorithm/pstl_backends/cpu_backend.h b/libc/isystem/__algorithm/pstl_backends/cpu_backend.h new file mode 100644 index 000000000..b85042f11 --- /dev/null +++ b/libc/isystem/__algorithm/pstl_backends/cpu_backend.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/pstl_backends/cpu_backend.h" diff --git a/libc/isystem/__algorithm/pstl_backends/cpu_backends/any_of.h b/libc/isystem/__algorithm/pstl_backends/cpu_backends/any_of.h new file mode 100644 index 000000000..ee3e81079 --- /dev/null +++ b/libc/isystem/__algorithm/pstl_backends/cpu_backends/any_of.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/pstl_backends/cpu_backends/any_of.h" diff --git a/libc/isystem/__algorithm/pstl_backends/cpu_backends/backend.h b/libc/isystem/__algorithm/pstl_backends/cpu_backends/backend.h new file mode 100644 index 000000000..84df5fe9f --- /dev/null +++ b/libc/isystem/__algorithm/pstl_backends/cpu_backends/backend.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/pstl_backends/cpu_backends/backend.h" diff --git a/libc/isystem/__algorithm/pstl_backends/cpu_backends/fill.h b/libc/isystem/__algorithm/pstl_backends/cpu_backends/fill.h new file mode 100644 index 000000000..0f5b7b478 --- /dev/null +++ b/libc/isystem/__algorithm/pstl_backends/cpu_backends/fill.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/pstl_backends/cpu_backends/fill.h" diff --git a/libc/isystem/__algorithm/pstl_backends/cpu_backends/find_if.h b/libc/isystem/__algorithm/pstl_backends/cpu_backends/find_if.h new file mode 100644 index 000000000..7adf76049 --- /dev/null +++ b/libc/isystem/__algorithm/pstl_backends/cpu_backends/find_if.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/pstl_backends/cpu_backends/find_if.h" diff --git a/libc/isystem/__algorithm/pstl_backends/cpu_backends/for_each.h b/libc/isystem/__algorithm/pstl_backends/cpu_backends/for_each.h new file mode 100644 index 000000000..aaa45c6c8 --- /dev/null +++ b/libc/isystem/__algorithm/pstl_backends/cpu_backends/for_each.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/pstl_backends/cpu_backends/for_each.h" diff --git a/libc/isystem/__algorithm/pstl_backends/cpu_backends/merge.h b/libc/isystem/__algorithm/pstl_backends/cpu_backends/merge.h new file mode 100644 index 000000000..7676a5da3 --- /dev/null +++ b/libc/isystem/__algorithm/pstl_backends/cpu_backends/merge.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/pstl_backends/cpu_backends/merge.h" diff --git a/libc/isystem/__algorithm/pstl_backends/cpu_backends/serial.h b/libc/isystem/__algorithm/pstl_backends/cpu_backends/serial.h new file mode 100644 index 000000000..4b25ed3b5 --- /dev/null +++ b/libc/isystem/__algorithm/pstl_backends/cpu_backends/serial.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/pstl_backends/cpu_backends/serial.h" diff --git a/libc/isystem/__algorithm/pstl_backends/cpu_backends/thread.h b/libc/isystem/__algorithm/pstl_backends/cpu_backends/thread.h new file mode 100644 index 000000000..6487ec38c --- /dev/null +++ b/libc/isystem/__algorithm/pstl_backends/cpu_backends/thread.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/pstl_backends/cpu_backends/thread.h" diff --git a/libc/isystem/__algorithm/pstl_backends/cpu_backends/transform.h b/libc/isystem/__algorithm/pstl_backends/cpu_backends/transform.h new file mode 100644 index 000000000..1217711a0 --- /dev/null +++ b/libc/isystem/__algorithm/pstl_backends/cpu_backends/transform.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/pstl_backends/cpu_backends/transform.h" diff --git a/libc/isystem/__algorithm/pstl_copy.h b/libc/isystem/__algorithm/pstl_copy.h new file mode 100644 index 000000000..be0f6c2d3 --- /dev/null +++ b/libc/isystem/__algorithm/pstl_copy.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/pstl_copy.h" diff --git a/libc/isystem/__algorithm/pstl_fill.h b/libc/isystem/__algorithm/pstl_fill.h new file mode 100644 index 000000000..0740e0139 --- /dev/null +++ b/libc/isystem/__algorithm/pstl_fill.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/pstl_fill.h" diff --git a/libc/isystem/__algorithm/pstl_find.h b/libc/isystem/__algorithm/pstl_find.h new file mode 100644 index 000000000..cbc557e5d --- /dev/null +++ b/libc/isystem/__algorithm/pstl_find.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/pstl_find.h" diff --git a/libc/isystem/__algorithm/pstl_for_each.h b/libc/isystem/__algorithm/pstl_for_each.h new file mode 100644 index 000000000..438931f61 --- /dev/null +++ b/libc/isystem/__algorithm/pstl_for_each.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/pstl_for_each.h" diff --git a/libc/isystem/__algorithm/pstl_frontend_dispatch.h b/libc/isystem/__algorithm/pstl_frontend_dispatch.h new file mode 100644 index 000000000..a36a3e4af --- /dev/null +++ b/libc/isystem/__algorithm/pstl_frontend_dispatch.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/pstl_frontend_dispatch.h" diff --git a/libc/isystem/__algorithm/pstl_merge.h b/libc/isystem/__algorithm/pstl_merge.h new file mode 100644 index 000000000..0121cf6b7 --- /dev/null +++ b/libc/isystem/__algorithm/pstl_merge.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/pstl_merge.h" diff --git a/libc/isystem/__algorithm/pstl_transform.h b/libc/isystem/__algorithm/pstl_transform.h new file mode 100644 index 000000000..d4b998947 --- /dev/null +++ b/libc/isystem/__algorithm/pstl_transform.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/pstl_transform.h" diff --git a/libc/isystem/__algorithm/push_heap.h b/libc/isystem/__algorithm/push_heap.h new file mode 100644 index 000000000..c02a0d194 --- /dev/null +++ b/libc/isystem/__algorithm/push_heap.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/push_heap.h" diff --git a/libc/isystem/__algorithm/ranges_adjacent_find.h b/libc/isystem/__algorithm/ranges_adjacent_find.h new file mode 100644 index 000000000..1f2376204 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_adjacent_find.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_adjacent_find.h" diff --git a/libc/isystem/__algorithm/ranges_all_of.h b/libc/isystem/__algorithm/ranges_all_of.h new file mode 100644 index 000000000..2363a515f --- /dev/null +++ b/libc/isystem/__algorithm/ranges_all_of.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_all_of.h" diff --git a/libc/isystem/__algorithm/ranges_any_of.h b/libc/isystem/__algorithm/ranges_any_of.h new file mode 100644 index 000000000..b87580f0b --- /dev/null +++ b/libc/isystem/__algorithm/ranges_any_of.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_any_of.h" diff --git a/libc/isystem/__algorithm/ranges_binary_search.h b/libc/isystem/__algorithm/ranges_binary_search.h new file mode 100644 index 000000000..c6a2f3b12 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_binary_search.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_binary_search.h" diff --git a/libc/isystem/__algorithm/ranges_clamp.h b/libc/isystem/__algorithm/ranges_clamp.h new file mode 100644 index 000000000..00a415218 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_clamp.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_clamp.h" diff --git a/libc/isystem/__algorithm/ranges_copy.h b/libc/isystem/__algorithm/ranges_copy.h new file mode 100644 index 000000000..614e85eaf --- /dev/null +++ b/libc/isystem/__algorithm/ranges_copy.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_copy.h" diff --git a/libc/isystem/__algorithm/ranges_copy_backward.h b/libc/isystem/__algorithm/ranges_copy_backward.h new file mode 100644 index 000000000..3918baef3 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_copy_backward.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_copy_backward.h" diff --git a/libc/isystem/__algorithm/ranges_copy_if.h b/libc/isystem/__algorithm/ranges_copy_if.h new file mode 100644 index 000000000..d38f65586 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_copy_if.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_copy_if.h" diff --git a/libc/isystem/__algorithm/ranges_copy_n.h b/libc/isystem/__algorithm/ranges_copy_n.h new file mode 100644 index 000000000..e420c638c --- /dev/null +++ b/libc/isystem/__algorithm/ranges_copy_n.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_copy_n.h" diff --git a/libc/isystem/__algorithm/ranges_count.h b/libc/isystem/__algorithm/ranges_count.h new file mode 100644 index 000000000..2367c1f69 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_count.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_count.h" diff --git a/libc/isystem/__algorithm/ranges_count_if.h b/libc/isystem/__algorithm/ranges_count_if.h new file mode 100644 index 000000000..23f801f37 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_count_if.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_count_if.h" diff --git a/libc/isystem/__algorithm/ranges_equal.h b/libc/isystem/__algorithm/ranges_equal.h new file mode 100644 index 000000000..6d754d9dc --- /dev/null +++ b/libc/isystem/__algorithm/ranges_equal.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_equal.h" diff --git a/libc/isystem/__algorithm/ranges_equal_range.h b/libc/isystem/__algorithm/ranges_equal_range.h new file mode 100644 index 000000000..0bba88876 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_equal_range.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_equal_range.h" diff --git a/libc/isystem/__algorithm/ranges_fill.h b/libc/isystem/__algorithm/ranges_fill.h new file mode 100644 index 000000000..8a37d08a6 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_fill.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_fill.h" diff --git a/libc/isystem/__algorithm/ranges_fill_n.h b/libc/isystem/__algorithm/ranges_fill_n.h new file mode 100644 index 000000000..549344c61 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_fill_n.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_fill_n.h" diff --git a/libc/isystem/__algorithm/ranges_find.h b/libc/isystem/__algorithm/ranges_find.h new file mode 100644 index 000000000..bb84856c7 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_find.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_find.h" diff --git a/libc/isystem/__algorithm/ranges_find_end.h b/libc/isystem/__algorithm/ranges_find_end.h new file mode 100644 index 000000000..4ad4cecf6 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_find_end.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_find_end.h" diff --git a/libc/isystem/__algorithm/ranges_find_first_of.h b/libc/isystem/__algorithm/ranges_find_first_of.h new file mode 100644 index 000000000..aca73405f --- /dev/null +++ b/libc/isystem/__algorithm/ranges_find_first_of.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_find_first_of.h" diff --git a/libc/isystem/__algorithm/ranges_find_if.h b/libc/isystem/__algorithm/ranges_find_if.h new file mode 100644 index 000000000..2f36e6891 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_find_if.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_find_if.h" diff --git a/libc/isystem/__algorithm/ranges_find_if_not.h b/libc/isystem/__algorithm/ranges_find_if_not.h new file mode 100644 index 000000000..56af48b0c --- /dev/null +++ b/libc/isystem/__algorithm/ranges_find_if_not.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_find_if_not.h" diff --git a/libc/isystem/__algorithm/ranges_for_each.h b/libc/isystem/__algorithm/ranges_for_each.h new file mode 100644 index 000000000..df9984033 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_for_each.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_for_each.h" diff --git a/libc/isystem/__algorithm/ranges_for_each_n.h b/libc/isystem/__algorithm/ranges_for_each_n.h new file mode 100644 index 000000000..d14180101 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_for_each_n.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_for_each_n.h" diff --git a/libc/isystem/__algorithm/ranges_generate.h b/libc/isystem/__algorithm/ranges_generate.h new file mode 100644 index 000000000..835940bce --- /dev/null +++ b/libc/isystem/__algorithm/ranges_generate.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_generate.h" diff --git a/libc/isystem/__algorithm/ranges_generate_n.h b/libc/isystem/__algorithm/ranges_generate_n.h new file mode 100644 index 000000000..87628794d --- /dev/null +++ b/libc/isystem/__algorithm/ranges_generate_n.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_generate_n.h" diff --git a/libc/isystem/__algorithm/ranges_includes.h b/libc/isystem/__algorithm/ranges_includes.h new file mode 100644 index 000000000..ae5763c6a --- /dev/null +++ b/libc/isystem/__algorithm/ranges_includes.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_includes.h" diff --git a/libc/isystem/__algorithm/ranges_inplace_merge.h b/libc/isystem/__algorithm/ranges_inplace_merge.h new file mode 100644 index 000000000..d93fc2f6a --- /dev/null +++ b/libc/isystem/__algorithm/ranges_inplace_merge.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_inplace_merge.h" diff --git a/libc/isystem/__algorithm/ranges_is_heap.h b/libc/isystem/__algorithm/ranges_is_heap.h new file mode 100644 index 000000000..2098e2926 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_is_heap.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_is_heap.h" diff --git a/libc/isystem/__algorithm/ranges_is_heap_until.h b/libc/isystem/__algorithm/ranges_is_heap_until.h new file mode 100644 index 000000000..9211fed6a --- /dev/null +++ b/libc/isystem/__algorithm/ranges_is_heap_until.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_is_heap_until.h" diff --git a/libc/isystem/__algorithm/ranges_is_partitioned.h b/libc/isystem/__algorithm/ranges_is_partitioned.h new file mode 100644 index 000000000..d85d14103 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_is_partitioned.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_is_partitioned.h" diff --git a/libc/isystem/__algorithm/ranges_is_permutation.h b/libc/isystem/__algorithm/ranges_is_permutation.h new file mode 100644 index 000000000..16ca02f32 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_is_permutation.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_is_permutation.h" diff --git a/libc/isystem/__algorithm/ranges_is_sorted.h b/libc/isystem/__algorithm/ranges_is_sorted.h new file mode 100644 index 000000000..5c284c3c9 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_is_sorted.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_is_sorted.h" diff --git a/libc/isystem/__algorithm/ranges_is_sorted_until.h b/libc/isystem/__algorithm/ranges_is_sorted_until.h new file mode 100644 index 000000000..0518f5cdf --- /dev/null +++ b/libc/isystem/__algorithm/ranges_is_sorted_until.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_is_sorted_until.h" diff --git a/libc/isystem/__algorithm/ranges_iterator_concept.h b/libc/isystem/__algorithm/ranges_iterator_concept.h new file mode 100644 index 000000000..45e6c1170 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_iterator_concept.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_iterator_concept.h" diff --git a/libc/isystem/__algorithm/ranges_lexicographical_compare.h b/libc/isystem/__algorithm/ranges_lexicographical_compare.h new file mode 100644 index 000000000..07f8d9f3b --- /dev/null +++ b/libc/isystem/__algorithm/ranges_lexicographical_compare.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_lexicographical_compare.h" diff --git a/libc/isystem/__algorithm/ranges_lower_bound.h b/libc/isystem/__algorithm/ranges_lower_bound.h new file mode 100644 index 000000000..2267d4ae4 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_lower_bound.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_lower_bound.h" diff --git a/libc/isystem/__algorithm/ranges_make_heap.h b/libc/isystem/__algorithm/ranges_make_heap.h new file mode 100644 index 000000000..b365948f4 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_make_heap.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_make_heap.h" diff --git a/libc/isystem/__algorithm/ranges_max.h b/libc/isystem/__algorithm/ranges_max.h new file mode 100644 index 000000000..841f0c942 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_max.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_max.h" diff --git a/libc/isystem/__algorithm/ranges_max_element.h b/libc/isystem/__algorithm/ranges_max_element.h new file mode 100644 index 000000000..df3ac4b63 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_max_element.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_max_element.h" diff --git a/libc/isystem/__algorithm/ranges_merge.h b/libc/isystem/__algorithm/ranges_merge.h new file mode 100644 index 000000000..79595cd16 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_merge.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_merge.h" diff --git a/libc/isystem/__algorithm/ranges_min.h b/libc/isystem/__algorithm/ranges_min.h new file mode 100644 index 000000000..cdee59d2a --- /dev/null +++ b/libc/isystem/__algorithm/ranges_min.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_min.h" diff --git a/libc/isystem/__algorithm/ranges_min_element.h b/libc/isystem/__algorithm/ranges_min_element.h new file mode 100644 index 000000000..9d910deac --- /dev/null +++ b/libc/isystem/__algorithm/ranges_min_element.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_min_element.h" diff --git a/libc/isystem/__algorithm/ranges_minmax.h b/libc/isystem/__algorithm/ranges_minmax.h new file mode 100644 index 000000000..dde2e06a2 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_minmax.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_minmax.h" diff --git a/libc/isystem/__algorithm/ranges_minmax_element.h b/libc/isystem/__algorithm/ranges_minmax_element.h new file mode 100644 index 000000000..6e4492f16 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_minmax_element.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_minmax_element.h" diff --git a/libc/isystem/__algorithm/ranges_mismatch.h b/libc/isystem/__algorithm/ranges_mismatch.h new file mode 100644 index 000000000..792d15396 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_mismatch.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_mismatch.h" diff --git a/libc/isystem/__algorithm/ranges_move.h b/libc/isystem/__algorithm/ranges_move.h new file mode 100644 index 000000000..31679c803 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_move.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_move.h" diff --git a/libc/isystem/__algorithm/ranges_move_backward.h b/libc/isystem/__algorithm/ranges_move_backward.h new file mode 100644 index 000000000..bc818a177 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_move_backward.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_move_backward.h" diff --git a/libc/isystem/__algorithm/ranges_next_permutation.h b/libc/isystem/__algorithm/ranges_next_permutation.h new file mode 100644 index 000000000..6ad640a97 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_next_permutation.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_next_permutation.h" diff --git a/libc/isystem/__algorithm/ranges_none_of.h b/libc/isystem/__algorithm/ranges_none_of.h new file mode 100644 index 000000000..1c646d68d --- /dev/null +++ b/libc/isystem/__algorithm/ranges_none_of.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_none_of.h" diff --git a/libc/isystem/__algorithm/ranges_nth_element.h b/libc/isystem/__algorithm/ranges_nth_element.h new file mode 100644 index 000000000..e1bf4c096 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_nth_element.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_nth_element.h" diff --git a/libc/isystem/__algorithm/ranges_partial_sort.h b/libc/isystem/__algorithm/ranges_partial_sort.h new file mode 100644 index 000000000..31ef088ce --- /dev/null +++ b/libc/isystem/__algorithm/ranges_partial_sort.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_partial_sort.h" diff --git a/libc/isystem/__algorithm/ranges_partial_sort_copy.h b/libc/isystem/__algorithm/ranges_partial_sort_copy.h new file mode 100644 index 000000000..a77684b58 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_partial_sort_copy.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_partial_sort_copy.h" diff --git a/libc/isystem/__algorithm/ranges_partition.h b/libc/isystem/__algorithm/ranges_partition.h new file mode 100644 index 000000000..5066131c7 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_partition.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_partition.h" diff --git a/libc/isystem/__algorithm/ranges_partition_copy.h b/libc/isystem/__algorithm/ranges_partition_copy.h new file mode 100644 index 000000000..f11101304 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_partition_copy.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_partition_copy.h" diff --git a/libc/isystem/__algorithm/ranges_partition_point.h b/libc/isystem/__algorithm/ranges_partition_point.h new file mode 100644 index 000000000..44c05b726 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_partition_point.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_partition_point.h" diff --git a/libc/isystem/__algorithm/ranges_pop_heap.h b/libc/isystem/__algorithm/ranges_pop_heap.h new file mode 100644 index 000000000..a39869c2b --- /dev/null +++ b/libc/isystem/__algorithm/ranges_pop_heap.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_pop_heap.h" diff --git a/libc/isystem/__algorithm/ranges_prev_permutation.h b/libc/isystem/__algorithm/ranges_prev_permutation.h new file mode 100644 index 000000000..fe51f73d9 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_prev_permutation.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_prev_permutation.h" diff --git a/libc/isystem/__algorithm/ranges_push_heap.h b/libc/isystem/__algorithm/ranges_push_heap.h new file mode 100644 index 000000000..4b42e1a96 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_push_heap.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_push_heap.h" diff --git a/libc/isystem/__algorithm/ranges_remove.h b/libc/isystem/__algorithm/ranges_remove.h new file mode 100644 index 000000000..2daa6b198 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_remove.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_remove.h" diff --git a/libc/isystem/__algorithm/ranges_remove_copy.h b/libc/isystem/__algorithm/ranges_remove_copy.h new file mode 100644 index 000000000..56dfa76c8 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_remove_copy.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_remove_copy.h" diff --git a/libc/isystem/__algorithm/ranges_remove_copy_if.h b/libc/isystem/__algorithm/ranges_remove_copy_if.h new file mode 100644 index 000000000..50b979301 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_remove_copy_if.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_remove_copy_if.h" diff --git a/libc/isystem/__algorithm/ranges_remove_if.h b/libc/isystem/__algorithm/ranges_remove_if.h new file mode 100644 index 000000000..aa6d62fdb --- /dev/null +++ b/libc/isystem/__algorithm/ranges_remove_if.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_remove_if.h" diff --git a/libc/isystem/__algorithm/ranges_replace.h b/libc/isystem/__algorithm/ranges_replace.h new file mode 100644 index 000000000..c768b9880 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_replace.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_replace.h" diff --git a/libc/isystem/__algorithm/ranges_replace_copy.h b/libc/isystem/__algorithm/ranges_replace_copy.h new file mode 100644 index 000000000..d74d03164 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_replace_copy.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_replace_copy.h" diff --git a/libc/isystem/__algorithm/ranges_replace_copy_if.h b/libc/isystem/__algorithm/ranges_replace_copy_if.h new file mode 100644 index 000000000..52b6e66a5 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_replace_copy_if.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_replace_copy_if.h" diff --git a/libc/isystem/__algorithm/ranges_replace_if.h b/libc/isystem/__algorithm/ranges_replace_if.h new file mode 100644 index 000000000..7ba904e37 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_replace_if.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_replace_if.h" diff --git a/libc/isystem/__algorithm/ranges_reverse.h b/libc/isystem/__algorithm/ranges_reverse.h new file mode 100644 index 000000000..1d6511164 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_reverse.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_reverse.h" diff --git a/libc/isystem/__algorithm/ranges_reverse_copy.h b/libc/isystem/__algorithm/ranges_reverse_copy.h new file mode 100644 index 000000000..33326159a --- /dev/null +++ b/libc/isystem/__algorithm/ranges_reverse_copy.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_reverse_copy.h" diff --git a/libc/isystem/__algorithm/ranges_rotate.h b/libc/isystem/__algorithm/ranges_rotate.h new file mode 100644 index 000000000..1940bbc41 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_rotate.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_rotate.h" diff --git a/libc/isystem/__algorithm/ranges_rotate_copy.h b/libc/isystem/__algorithm/ranges_rotate_copy.h new file mode 100644 index 000000000..43d13c4a9 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_rotate_copy.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_rotate_copy.h" diff --git a/libc/isystem/__algorithm/ranges_sample.h b/libc/isystem/__algorithm/ranges_sample.h new file mode 100644 index 000000000..52f55a29d --- /dev/null +++ b/libc/isystem/__algorithm/ranges_sample.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_sample.h" diff --git a/libc/isystem/__algorithm/ranges_search.h b/libc/isystem/__algorithm/ranges_search.h new file mode 100644 index 000000000..acfc90c94 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_search.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_search.h" diff --git a/libc/isystem/__algorithm/ranges_search_n.h b/libc/isystem/__algorithm/ranges_search_n.h new file mode 100644 index 000000000..12056e956 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_search_n.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_search_n.h" diff --git a/libc/isystem/__algorithm/ranges_set_difference.h b/libc/isystem/__algorithm/ranges_set_difference.h new file mode 100644 index 000000000..b4705f503 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_set_difference.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_set_difference.h" diff --git a/libc/isystem/__algorithm/ranges_set_intersection.h b/libc/isystem/__algorithm/ranges_set_intersection.h new file mode 100644 index 000000000..592bf86a2 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_set_intersection.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_set_intersection.h" diff --git a/libc/isystem/__algorithm/ranges_set_symmetric_difference.h b/libc/isystem/__algorithm/ranges_set_symmetric_difference.h new file mode 100644 index 000000000..d0a8d3e4d --- /dev/null +++ b/libc/isystem/__algorithm/ranges_set_symmetric_difference.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_set_symmetric_difference.h" diff --git a/libc/isystem/__algorithm/ranges_set_union.h b/libc/isystem/__algorithm/ranges_set_union.h new file mode 100644 index 000000000..be428aa5c --- /dev/null +++ b/libc/isystem/__algorithm/ranges_set_union.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_set_union.h" diff --git a/libc/isystem/__algorithm/ranges_shuffle.h b/libc/isystem/__algorithm/ranges_shuffle.h new file mode 100644 index 000000000..39554ef60 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_shuffle.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_shuffle.h" diff --git a/libc/isystem/__algorithm/ranges_sort.h b/libc/isystem/__algorithm/ranges_sort.h new file mode 100644 index 000000000..049c5288f --- /dev/null +++ b/libc/isystem/__algorithm/ranges_sort.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_sort.h" diff --git a/libc/isystem/__algorithm/ranges_sort_heap.h b/libc/isystem/__algorithm/ranges_sort_heap.h new file mode 100644 index 000000000..88c46cbe5 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_sort_heap.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_sort_heap.h" diff --git a/libc/isystem/__algorithm/ranges_stable_partition.h b/libc/isystem/__algorithm/ranges_stable_partition.h new file mode 100644 index 000000000..d82565db0 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_stable_partition.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_stable_partition.h" diff --git a/libc/isystem/__algorithm/ranges_stable_sort.h b/libc/isystem/__algorithm/ranges_stable_sort.h new file mode 100644 index 000000000..53b3bfd7e --- /dev/null +++ b/libc/isystem/__algorithm/ranges_stable_sort.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_stable_sort.h" diff --git a/libc/isystem/__algorithm/ranges_starts_with.h b/libc/isystem/__algorithm/ranges_starts_with.h new file mode 100644 index 000000000..9a2a22b8f --- /dev/null +++ b/libc/isystem/__algorithm/ranges_starts_with.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_starts_with.h" diff --git a/libc/isystem/__algorithm/ranges_swap_ranges.h b/libc/isystem/__algorithm/ranges_swap_ranges.h new file mode 100644 index 000000000..7ee898342 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_swap_ranges.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_swap_ranges.h" diff --git a/libc/isystem/__algorithm/ranges_transform.h b/libc/isystem/__algorithm/ranges_transform.h new file mode 100644 index 000000000..8dc2bd3a7 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_transform.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_transform.h" diff --git a/libc/isystem/__algorithm/ranges_unique.h b/libc/isystem/__algorithm/ranges_unique.h new file mode 100644 index 000000000..741c22c41 --- /dev/null +++ b/libc/isystem/__algorithm/ranges_unique.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_unique.h" diff --git a/libc/isystem/__algorithm/ranges_unique_copy.h b/libc/isystem/__algorithm/ranges_unique_copy.h new file mode 100644 index 000000000..fa3ead46b --- /dev/null +++ b/libc/isystem/__algorithm/ranges_unique_copy.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_unique_copy.h" diff --git a/libc/isystem/__algorithm/ranges_upper_bound.h b/libc/isystem/__algorithm/ranges_upper_bound.h new file mode 100644 index 000000000..658bb096b --- /dev/null +++ b/libc/isystem/__algorithm/ranges_upper_bound.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/ranges_upper_bound.h" diff --git a/libc/isystem/__algorithm/remove.h b/libc/isystem/__algorithm/remove.h new file mode 100644 index 000000000..1c6d33eb9 --- /dev/null +++ b/libc/isystem/__algorithm/remove.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/remove.h" diff --git a/libc/isystem/__algorithm/remove_copy.h b/libc/isystem/__algorithm/remove_copy.h new file mode 100644 index 000000000..cc8f5347d --- /dev/null +++ b/libc/isystem/__algorithm/remove_copy.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/remove_copy.h" diff --git a/libc/isystem/__algorithm/remove_copy_if.h b/libc/isystem/__algorithm/remove_copy_if.h new file mode 100644 index 000000000..fdf763b14 --- /dev/null +++ b/libc/isystem/__algorithm/remove_copy_if.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/remove_copy_if.h" diff --git a/libc/isystem/__algorithm/remove_if.h b/libc/isystem/__algorithm/remove_if.h new file mode 100644 index 000000000..e9dc12444 --- /dev/null +++ b/libc/isystem/__algorithm/remove_if.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/remove_if.h" diff --git a/libc/isystem/__algorithm/replace.h b/libc/isystem/__algorithm/replace.h new file mode 100644 index 000000000..29b8205d4 --- /dev/null +++ b/libc/isystem/__algorithm/replace.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/replace.h" diff --git a/libc/isystem/__algorithm/replace_copy.h b/libc/isystem/__algorithm/replace_copy.h new file mode 100644 index 000000000..6b05b8502 --- /dev/null +++ b/libc/isystem/__algorithm/replace_copy.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/replace_copy.h" diff --git a/libc/isystem/__algorithm/replace_copy_if.h b/libc/isystem/__algorithm/replace_copy_if.h new file mode 100644 index 000000000..13ee607b1 --- /dev/null +++ b/libc/isystem/__algorithm/replace_copy_if.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/replace_copy_if.h" diff --git a/libc/isystem/__algorithm/replace_if.h b/libc/isystem/__algorithm/replace_if.h new file mode 100644 index 000000000..42ac7b810 --- /dev/null +++ b/libc/isystem/__algorithm/replace_if.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/replace_if.h" diff --git a/libc/isystem/__algorithm/reverse.h b/libc/isystem/__algorithm/reverse.h new file mode 100644 index 000000000..76a9096f7 --- /dev/null +++ b/libc/isystem/__algorithm/reverse.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/reverse.h" diff --git a/libc/isystem/__algorithm/reverse_copy.h b/libc/isystem/__algorithm/reverse_copy.h new file mode 100644 index 000000000..a0b6debef --- /dev/null +++ b/libc/isystem/__algorithm/reverse_copy.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/reverse_copy.h" diff --git a/libc/isystem/__algorithm/rotate.h b/libc/isystem/__algorithm/rotate.h new file mode 100644 index 000000000..84afe3294 --- /dev/null +++ b/libc/isystem/__algorithm/rotate.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/rotate.h" diff --git a/libc/isystem/__algorithm/rotate_copy.h b/libc/isystem/__algorithm/rotate_copy.h new file mode 100644 index 000000000..d0ad68ce0 --- /dev/null +++ b/libc/isystem/__algorithm/rotate_copy.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/rotate_copy.h" diff --git a/libc/isystem/__algorithm/sample.h b/libc/isystem/__algorithm/sample.h new file mode 100644 index 000000000..540d05e44 --- /dev/null +++ b/libc/isystem/__algorithm/sample.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/sample.h" diff --git a/libc/isystem/__algorithm/search.h b/libc/isystem/__algorithm/search.h new file mode 100644 index 000000000..ba33010f4 --- /dev/null +++ b/libc/isystem/__algorithm/search.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/search.h" diff --git a/libc/isystem/__algorithm/search_n.h b/libc/isystem/__algorithm/search_n.h new file mode 100644 index 000000000..7e4c2e984 --- /dev/null +++ b/libc/isystem/__algorithm/search_n.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/search_n.h" diff --git a/libc/isystem/__algorithm/set_difference.h b/libc/isystem/__algorithm/set_difference.h new file mode 100644 index 000000000..1c171eabb --- /dev/null +++ b/libc/isystem/__algorithm/set_difference.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/set_difference.h" diff --git a/libc/isystem/__algorithm/set_intersection.h b/libc/isystem/__algorithm/set_intersection.h new file mode 100644 index 000000000..f04fd24a8 --- /dev/null +++ b/libc/isystem/__algorithm/set_intersection.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/set_intersection.h" diff --git a/libc/isystem/__algorithm/set_symmetric_difference.h b/libc/isystem/__algorithm/set_symmetric_difference.h new file mode 100644 index 000000000..8b00ca162 --- /dev/null +++ b/libc/isystem/__algorithm/set_symmetric_difference.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/set_symmetric_difference.h" diff --git a/libc/isystem/__algorithm/set_union.h b/libc/isystem/__algorithm/set_union.h new file mode 100644 index 000000000..0d6a276bc --- /dev/null +++ b/libc/isystem/__algorithm/set_union.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/set_union.h" diff --git a/libc/isystem/__algorithm/shift_left.h b/libc/isystem/__algorithm/shift_left.h new file mode 100644 index 000000000..775fa8a60 --- /dev/null +++ b/libc/isystem/__algorithm/shift_left.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/shift_left.h" diff --git a/libc/isystem/__algorithm/shift_right.h b/libc/isystem/__algorithm/shift_right.h new file mode 100644 index 000000000..ab37a39b8 --- /dev/null +++ b/libc/isystem/__algorithm/shift_right.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/shift_right.h" diff --git a/libc/isystem/__algorithm/shuffle.h b/libc/isystem/__algorithm/shuffle.h new file mode 100644 index 000000000..68818703b --- /dev/null +++ b/libc/isystem/__algorithm/shuffle.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/shuffle.h" diff --git a/libc/isystem/__algorithm/sift_down.h b/libc/isystem/__algorithm/sift_down.h new file mode 100644 index 000000000..385e7ddf9 --- /dev/null +++ b/libc/isystem/__algorithm/sift_down.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/sift_down.h" diff --git a/libc/isystem/__algorithm/sort.h b/libc/isystem/__algorithm/sort.h new file mode 100644 index 000000000..9317e69a3 --- /dev/null +++ b/libc/isystem/__algorithm/sort.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/sort.h" diff --git a/libc/isystem/__algorithm/sort_heap.h b/libc/isystem/__algorithm/sort_heap.h new file mode 100644 index 000000000..9114e3b1d --- /dev/null +++ b/libc/isystem/__algorithm/sort_heap.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/sort_heap.h" diff --git a/libc/isystem/__algorithm/stable_partition.h b/libc/isystem/__algorithm/stable_partition.h new file mode 100644 index 000000000..68df678f4 --- /dev/null +++ b/libc/isystem/__algorithm/stable_partition.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/stable_partition.h" diff --git a/libc/isystem/__algorithm/stable_sort.h b/libc/isystem/__algorithm/stable_sort.h new file mode 100644 index 000000000..0a4f0ab4f --- /dev/null +++ b/libc/isystem/__algorithm/stable_sort.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/stable_sort.h" diff --git a/libc/isystem/__algorithm/swap_ranges.h b/libc/isystem/__algorithm/swap_ranges.h new file mode 100644 index 000000000..2d10b25fa --- /dev/null +++ b/libc/isystem/__algorithm/swap_ranges.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/swap_ranges.h" diff --git a/libc/isystem/__algorithm/three_way_comp_ref_type.h b/libc/isystem/__algorithm/three_way_comp_ref_type.h new file mode 100644 index 000000000..e504e19c6 --- /dev/null +++ b/libc/isystem/__algorithm/three_way_comp_ref_type.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/three_way_comp_ref_type.h" diff --git a/libc/isystem/__algorithm/transform.h b/libc/isystem/__algorithm/transform.h new file mode 100644 index 000000000..60614cb88 --- /dev/null +++ b/libc/isystem/__algorithm/transform.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/transform.h" diff --git a/libc/isystem/__algorithm/uniform_random_bit_generator_adaptor.h b/libc/isystem/__algorithm/uniform_random_bit_generator_adaptor.h new file mode 100644 index 000000000..f3ca28284 --- /dev/null +++ b/libc/isystem/__algorithm/uniform_random_bit_generator_adaptor.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/uniform_random_bit_generator_adaptor.h" diff --git a/libc/isystem/__algorithm/unique.h b/libc/isystem/__algorithm/unique.h new file mode 100644 index 000000000..a1ef228cf --- /dev/null +++ b/libc/isystem/__algorithm/unique.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/unique.h" diff --git a/libc/isystem/__algorithm/unique_copy.h b/libc/isystem/__algorithm/unique_copy.h new file mode 100644 index 000000000..3f8ddeb61 --- /dev/null +++ b/libc/isystem/__algorithm/unique_copy.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/unique_copy.h" diff --git a/libc/isystem/__algorithm/unwrap_iter.h b/libc/isystem/__algorithm/unwrap_iter.h new file mode 100644 index 000000000..277288f9a --- /dev/null +++ b/libc/isystem/__algorithm/unwrap_iter.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/unwrap_iter.h" diff --git a/libc/isystem/__algorithm/unwrap_range.h b/libc/isystem/__algorithm/unwrap_range.h new file mode 100644 index 000000000..9cb43bd44 --- /dev/null +++ b/libc/isystem/__algorithm/unwrap_range.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/unwrap_range.h" diff --git a/libc/isystem/__algorithm/upper_bound.h b/libc/isystem/__algorithm/upper_bound.h new file mode 100644 index 000000000..c694ac61d --- /dev/null +++ b/libc/isystem/__algorithm/upper_bound.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__algorithm/upper_bound.h" diff --git a/libc/isystem/__assert b/libc/isystem/__assert new file mode 100644 index 000000000..29532acc8 --- /dev/null +++ b/libc/isystem/__assert @@ -0,0 +1 @@ +#include "third_party/libcxx/__assert" diff --git a/libc/isystem/__atomic/aliases.h b/libc/isystem/__atomic/aliases.h new file mode 100644 index 000000000..6849bcd1b --- /dev/null +++ b/libc/isystem/__atomic/aliases.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__atomic/aliases.h" diff --git a/libc/isystem/__atomic/atomic.h b/libc/isystem/__atomic/atomic.h new file mode 100644 index 000000000..b2324671e --- /dev/null +++ b/libc/isystem/__atomic/atomic.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__atomic/atomic.h" diff --git a/libc/isystem/__atomic/atomic_base.h b/libc/isystem/__atomic/atomic_base.h new file mode 100644 index 000000000..ec1733d30 --- /dev/null +++ b/libc/isystem/__atomic/atomic_base.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__atomic/atomic_base.h" diff --git a/libc/isystem/__atomic/atomic_flag.h b/libc/isystem/__atomic/atomic_flag.h new file mode 100644 index 000000000..70e1268a5 --- /dev/null +++ b/libc/isystem/__atomic/atomic_flag.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__atomic/atomic_flag.h" diff --git a/libc/isystem/__atomic/atomic_init.h b/libc/isystem/__atomic/atomic_init.h new file mode 100644 index 000000000..c04e99f38 --- /dev/null +++ b/libc/isystem/__atomic/atomic_init.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__atomic/atomic_init.h" diff --git a/libc/isystem/__atomic/atomic_lock_free.h b/libc/isystem/__atomic/atomic_lock_free.h new file mode 100644 index 000000000..3a086be7f --- /dev/null +++ b/libc/isystem/__atomic/atomic_lock_free.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__atomic/atomic_lock_free.h" diff --git a/libc/isystem/__atomic/atomic_sync.h b/libc/isystem/__atomic/atomic_sync.h new file mode 100644 index 000000000..8fb086325 --- /dev/null +++ b/libc/isystem/__atomic/atomic_sync.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__atomic/atomic_sync.h" diff --git a/libc/isystem/__atomic/check_memory_order.h b/libc/isystem/__atomic/check_memory_order.h new file mode 100644 index 000000000..71de721f7 --- /dev/null +++ b/libc/isystem/__atomic/check_memory_order.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__atomic/check_memory_order.h" diff --git a/libc/isystem/__atomic/contention_t.h b/libc/isystem/__atomic/contention_t.h new file mode 100644 index 000000000..64c180391 --- /dev/null +++ b/libc/isystem/__atomic/contention_t.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__atomic/contention_t.h" diff --git a/libc/isystem/__atomic/cxx_atomic_impl.h b/libc/isystem/__atomic/cxx_atomic_impl.h new file mode 100644 index 000000000..78aabe632 --- /dev/null +++ b/libc/isystem/__atomic/cxx_atomic_impl.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__atomic/cxx_atomic_impl.h" diff --git a/libc/isystem/__atomic/fence.h b/libc/isystem/__atomic/fence.h new file mode 100644 index 000000000..183ace12e --- /dev/null +++ b/libc/isystem/__atomic/fence.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__atomic/fence.h" diff --git a/libc/isystem/__atomic/is_always_lock_free.h b/libc/isystem/__atomic/is_always_lock_free.h new file mode 100644 index 000000000..9b6374f35 --- /dev/null +++ b/libc/isystem/__atomic/is_always_lock_free.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__atomic/is_always_lock_free.h" diff --git a/libc/isystem/__atomic/kill_dependency.h b/libc/isystem/__atomic/kill_dependency.h new file mode 100644 index 000000000..8b89ed54e --- /dev/null +++ b/libc/isystem/__atomic/kill_dependency.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__atomic/kill_dependency.h" diff --git a/libc/isystem/__atomic/memory_order.h b/libc/isystem/__atomic/memory_order.h new file mode 100644 index 000000000..d29e57fa5 --- /dev/null +++ b/libc/isystem/__atomic/memory_order.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__atomic/memory_order.h" diff --git a/libc/isystem/__availability b/libc/isystem/__availability new file mode 100644 index 000000000..479d7b7ac --- /dev/null +++ b/libc/isystem/__availability @@ -0,0 +1 @@ +#include "third_party/libcxx/__availability" diff --git a/libc/isystem/__bit/bit_cast.h b/libc/isystem/__bit/bit_cast.h new file mode 100644 index 000000000..44318231a --- /dev/null +++ b/libc/isystem/__bit/bit_cast.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__bit/bit_cast.h" diff --git a/libc/isystem/__bit/bit_ceil.h b/libc/isystem/__bit/bit_ceil.h new file mode 100644 index 000000000..2626419a0 --- /dev/null +++ b/libc/isystem/__bit/bit_ceil.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__bit/bit_ceil.h" diff --git a/libc/isystem/__bit/bit_floor.h b/libc/isystem/__bit/bit_floor.h new file mode 100644 index 000000000..bff96affd --- /dev/null +++ b/libc/isystem/__bit/bit_floor.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__bit/bit_floor.h" diff --git a/libc/isystem/__bit/bit_log2.h b/libc/isystem/__bit/bit_log2.h new file mode 100644 index 000000000..6cd2cf734 --- /dev/null +++ b/libc/isystem/__bit/bit_log2.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__bit/bit_log2.h" diff --git a/libc/isystem/__bit/bit_width.h b/libc/isystem/__bit/bit_width.h new file mode 100644 index 000000000..ca0ffe6e7 --- /dev/null +++ b/libc/isystem/__bit/bit_width.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__bit/bit_width.h" diff --git a/libc/isystem/__bit/blsr.h b/libc/isystem/__bit/blsr.h new file mode 100644 index 000000000..785569624 --- /dev/null +++ b/libc/isystem/__bit/blsr.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__bit/blsr.h" diff --git a/libc/isystem/__bit/byteswap.h b/libc/isystem/__bit/byteswap.h new file mode 100644 index 000000000..698990aca --- /dev/null +++ b/libc/isystem/__bit/byteswap.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__bit/byteswap.h" diff --git a/libc/isystem/__bit/countl.h b/libc/isystem/__bit/countl.h new file mode 100644 index 000000000..a1bb62153 --- /dev/null +++ b/libc/isystem/__bit/countl.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__bit/countl.h" diff --git a/libc/isystem/__bit/countr.h b/libc/isystem/__bit/countr.h new file mode 100644 index 000000000..ff1b0056b --- /dev/null +++ b/libc/isystem/__bit/countr.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__bit/countr.h" diff --git a/libc/isystem/__bit/endian.h b/libc/isystem/__bit/endian.h new file mode 100644 index 000000000..ab076f21a --- /dev/null +++ b/libc/isystem/__bit/endian.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__bit/endian.h" diff --git a/libc/isystem/__bit/has_single_bit.h b/libc/isystem/__bit/has_single_bit.h new file mode 100644 index 000000000..9a3f4bc10 --- /dev/null +++ b/libc/isystem/__bit/has_single_bit.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__bit/has_single_bit.h" diff --git a/libc/isystem/__bit/popcount.h b/libc/isystem/__bit/popcount.h new file mode 100644 index 000000000..b12a77a70 --- /dev/null +++ b/libc/isystem/__bit/popcount.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__bit/popcount.h" diff --git a/libc/isystem/__bit/rotate.h b/libc/isystem/__bit/rotate.h new file mode 100644 index 000000000..20f0ec244 --- /dev/null +++ b/libc/isystem/__bit/rotate.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__bit/rotate.h" diff --git a/libc/isystem/__bit_reference b/libc/isystem/__bit_reference new file mode 100644 index 000000000..89438011c --- /dev/null +++ b/libc/isystem/__bit_reference @@ -0,0 +1 @@ +#include "third_party/libcxx/__bit_reference" diff --git a/libc/isystem/__charconv/chars_format.h b/libc/isystem/__charconv/chars_format.h new file mode 100644 index 000000000..7e15b94c4 --- /dev/null +++ b/libc/isystem/__charconv/chars_format.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__charconv/chars_format.h" diff --git a/libc/isystem/__charconv/from_chars_integral.h b/libc/isystem/__charconv/from_chars_integral.h new file mode 100644 index 000000000..13af75de0 --- /dev/null +++ b/libc/isystem/__charconv/from_chars_integral.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__charconv/from_chars_integral.h" diff --git a/libc/isystem/__charconv/from_chars_result.h b/libc/isystem/__charconv/from_chars_result.h new file mode 100644 index 000000000..c3b6d41ce --- /dev/null +++ b/libc/isystem/__charconv/from_chars_result.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__charconv/from_chars_result.h" diff --git a/libc/isystem/__charconv/tables.h b/libc/isystem/__charconv/tables.h new file mode 100644 index 000000000..4abd3d125 --- /dev/null +++ b/libc/isystem/__charconv/tables.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__charconv/tables.h" diff --git a/libc/isystem/__charconv/to_chars.h b/libc/isystem/__charconv/to_chars.h new file mode 100644 index 000000000..ee2ee1db2 --- /dev/null +++ b/libc/isystem/__charconv/to_chars.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__charconv/to_chars.h" diff --git a/libc/isystem/__charconv/to_chars_base_10.h b/libc/isystem/__charconv/to_chars_base_10.h new file mode 100644 index 000000000..850ffbf1f --- /dev/null +++ b/libc/isystem/__charconv/to_chars_base_10.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__charconv/to_chars_base_10.h" diff --git a/libc/isystem/__charconv/to_chars_floating_point.h b/libc/isystem/__charconv/to_chars_floating_point.h new file mode 100644 index 000000000..b88f5777b --- /dev/null +++ b/libc/isystem/__charconv/to_chars_floating_point.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__charconv/to_chars_floating_point.h" diff --git a/libc/isystem/__charconv/to_chars_integral.h b/libc/isystem/__charconv/to_chars_integral.h new file mode 100644 index 000000000..0180d2f2f --- /dev/null +++ b/libc/isystem/__charconv/to_chars_integral.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__charconv/to_chars_integral.h" diff --git a/libc/isystem/__charconv/to_chars_result.h b/libc/isystem/__charconv/to_chars_result.h new file mode 100644 index 000000000..c6256c3d3 --- /dev/null +++ b/libc/isystem/__charconv/to_chars_result.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__charconv/to_chars_result.h" diff --git a/libc/isystem/__charconv/traits.h b/libc/isystem/__charconv/traits.h new file mode 100644 index 000000000..e2c5ac488 --- /dev/null +++ b/libc/isystem/__charconv/traits.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__charconv/traits.h" diff --git a/libc/isystem/__chrono/calendar.h b/libc/isystem/__chrono/calendar.h new file mode 100644 index 000000000..4f83cab7b --- /dev/null +++ b/libc/isystem/__chrono/calendar.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__chrono/calendar.h" diff --git a/libc/isystem/__chrono/concepts.h b/libc/isystem/__chrono/concepts.h new file mode 100644 index 000000000..e3a11cdde --- /dev/null +++ b/libc/isystem/__chrono/concepts.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__chrono/concepts.h" diff --git a/libc/isystem/__chrono/convert_to_timespec.h b/libc/isystem/__chrono/convert_to_timespec.h new file mode 100644 index 000000000..628d0b0a8 --- /dev/null +++ b/libc/isystem/__chrono/convert_to_timespec.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__chrono/convert_to_timespec.h" diff --git a/libc/isystem/__chrono/convert_to_tm.h b/libc/isystem/__chrono/convert_to_tm.h new file mode 100644 index 000000000..f007e86fe --- /dev/null +++ b/libc/isystem/__chrono/convert_to_tm.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__chrono/convert_to_tm.h" diff --git a/libc/isystem/__chrono/day.h b/libc/isystem/__chrono/day.h new file mode 100644 index 000000000..120234303 --- /dev/null +++ b/libc/isystem/__chrono/day.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__chrono/day.h" diff --git a/libc/isystem/__chrono/duration.h b/libc/isystem/__chrono/duration.h new file mode 100644 index 000000000..c3ed6729d --- /dev/null +++ b/libc/isystem/__chrono/duration.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__chrono/duration.h" diff --git a/libc/isystem/__chrono/file_clock.h b/libc/isystem/__chrono/file_clock.h new file mode 100644 index 000000000..95c3844f7 --- /dev/null +++ b/libc/isystem/__chrono/file_clock.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__chrono/file_clock.h" diff --git a/libc/isystem/__chrono/formatter.h b/libc/isystem/__chrono/formatter.h new file mode 100644 index 000000000..fa3aadbb9 --- /dev/null +++ b/libc/isystem/__chrono/formatter.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__chrono/formatter.h" diff --git a/libc/isystem/__chrono/hh_mm_ss.h b/libc/isystem/__chrono/hh_mm_ss.h new file mode 100644 index 000000000..9ad5eb53c --- /dev/null +++ b/libc/isystem/__chrono/hh_mm_ss.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__chrono/hh_mm_ss.h" diff --git a/libc/isystem/__chrono/high_resolution_clock.h b/libc/isystem/__chrono/high_resolution_clock.h new file mode 100644 index 000000000..154105dfa --- /dev/null +++ b/libc/isystem/__chrono/high_resolution_clock.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__chrono/high_resolution_clock.h" diff --git a/libc/isystem/__chrono/literals.h b/libc/isystem/__chrono/literals.h new file mode 100644 index 000000000..a78197f4c --- /dev/null +++ b/libc/isystem/__chrono/literals.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__chrono/literals.h" diff --git a/libc/isystem/__chrono/month.h b/libc/isystem/__chrono/month.h new file mode 100644 index 000000000..1efb44743 --- /dev/null +++ b/libc/isystem/__chrono/month.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__chrono/month.h" diff --git a/libc/isystem/__chrono/month_weekday.h b/libc/isystem/__chrono/month_weekday.h new file mode 100644 index 000000000..4933df3c4 --- /dev/null +++ b/libc/isystem/__chrono/month_weekday.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__chrono/month_weekday.h" diff --git a/libc/isystem/__chrono/monthday.h b/libc/isystem/__chrono/monthday.h new file mode 100644 index 000000000..116a0667c --- /dev/null +++ b/libc/isystem/__chrono/monthday.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__chrono/monthday.h" diff --git a/libc/isystem/__chrono/ostream.h b/libc/isystem/__chrono/ostream.h new file mode 100644 index 000000000..03c1d617a --- /dev/null +++ b/libc/isystem/__chrono/ostream.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__chrono/ostream.h" diff --git a/libc/isystem/__chrono/parser_std_format_spec.h b/libc/isystem/__chrono/parser_std_format_spec.h new file mode 100644 index 000000000..a1f0a7a66 --- /dev/null +++ b/libc/isystem/__chrono/parser_std_format_spec.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__chrono/parser_std_format_spec.h" diff --git a/libc/isystem/__chrono/statically_widen.h b/libc/isystem/__chrono/statically_widen.h new file mode 100644 index 000000000..dc6792601 --- /dev/null +++ b/libc/isystem/__chrono/statically_widen.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__chrono/statically_widen.h" diff --git a/libc/isystem/__chrono/steady_clock.h b/libc/isystem/__chrono/steady_clock.h new file mode 100644 index 000000000..662b4ff44 --- /dev/null +++ b/libc/isystem/__chrono/steady_clock.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__chrono/steady_clock.h" diff --git a/libc/isystem/__chrono/system_clock.h b/libc/isystem/__chrono/system_clock.h new file mode 100644 index 000000000..074c1a445 --- /dev/null +++ b/libc/isystem/__chrono/system_clock.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__chrono/system_clock.h" diff --git a/libc/isystem/__chrono/time_point.h b/libc/isystem/__chrono/time_point.h new file mode 100644 index 000000000..12e91e5d0 --- /dev/null +++ b/libc/isystem/__chrono/time_point.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__chrono/time_point.h" diff --git a/libc/isystem/__chrono/weekday.h b/libc/isystem/__chrono/weekday.h new file mode 100644 index 000000000..a0495b5f1 --- /dev/null +++ b/libc/isystem/__chrono/weekday.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__chrono/weekday.h" diff --git a/libc/isystem/__chrono/year.h b/libc/isystem/__chrono/year.h new file mode 100644 index 000000000..0cc26795f --- /dev/null +++ b/libc/isystem/__chrono/year.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__chrono/year.h" diff --git a/libc/isystem/__chrono/year_month.h b/libc/isystem/__chrono/year_month.h new file mode 100644 index 000000000..017ce52d5 --- /dev/null +++ b/libc/isystem/__chrono/year_month.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__chrono/year_month.h" diff --git a/libc/isystem/__chrono/year_month_day.h b/libc/isystem/__chrono/year_month_day.h new file mode 100644 index 000000000..3dabb5381 --- /dev/null +++ b/libc/isystem/__chrono/year_month_day.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__chrono/year_month_day.h" diff --git a/libc/isystem/__chrono/year_month_weekday.h b/libc/isystem/__chrono/year_month_weekday.h new file mode 100644 index 000000000..fea61c011 --- /dev/null +++ b/libc/isystem/__chrono/year_month_weekday.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__chrono/year_month_weekday.h" diff --git a/libc/isystem/__compare/common_comparison_category.h b/libc/isystem/__compare/common_comparison_category.h new file mode 100644 index 000000000..de98b2a88 --- /dev/null +++ b/libc/isystem/__compare/common_comparison_category.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__compare/common_comparison_category.h" diff --git a/libc/isystem/__compare/compare_partial_order_fallback.h b/libc/isystem/__compare/compare_partial_order_fallback.h new file mode 100644 index 000000000..f3f249923 --- /dev/null +++ b/libc/isystem/__compare/compare_partial_order_fallback.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__compare/compare_partial_order_fallback.h" diff --git a/libc/isystem/__compare/compare_strong_order_fallback.h b/libc/isystem/__compare/compare_strong_order_fallback.h new file mode 100644 index 000000000..688861e61 --- /dev/null +++ b/libc/isystem/__compare/compare_strong_order_fallback.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__compare/compare_strong_order_fallback.h" diff --git a/libc/isystem/__compare/compare_three_way.h b/libc/isystem/__compare/compare_three_way.h new file mode 100644 index 000000000..87a359eaa --- /dev/null +++ b/libc/isystem/__compare/compare_three_way.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__compare/compare_three_way.h" diff --git a/libc/isystem/__compare/compare_three_way_result.h b/libc/isystem/__compare/compare_three_way_result.h new file mode 100644 index 000000000..b917b6682 --- /dev/null +++ b/libc/isystem/__compare/compare_three_way_result.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__compare/compare_three_way_result.h" diff --git a/libc/isystem/__compare/compare_weak_order_fallback.h b/libc/isystem/__compare/compare_weak_order_fallback.h new file mode 100644 index 000000000..9fad4a764 --- /dev/null +++ b/libc/isystem/__compare/compare_weak_order_fallback.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__compare/compare_weak_order_fallback.h" diff --git a/libc/isystem/__compare/is_eq.h b/libc/isystem/__compare/is_eq.h new file mode 100644 index 000000000..8cc06f947 --- /dev/null +++ b/libc/isystem/__compare/is_eq.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__compare/is_eq.h" diff --git a/libc/isystem/__compare/ordering.h b/libc/isystem/__compare/ordering.h new file mode 100644 index 000000000..f3c216b03 --- /dev/null +++ b/libc/isystem/__compare/ordering.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__compare/ordering.h" diff --git a/libc/isystem/__compare/partial_order.h b/libc/isystem/__compare/partial_order.h new file mode 100644 index 000000000..a6d273736 --- /dev/null +++ b/libc/isystem/__compare/partial_order.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__compare/partial_order.h" diff --git a/libc/isystem/__compare/strong_order.h b/libc/isystem/__compare/strong_order.h new file mode 100644 index 000000000..d95c48d0d --- /dev/null +++ b/libc/isystem/__compare/strong_order.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__compare/strong_order.h" diff --git a/libc/isystem/__compare/synth_three_way.h b/libc/isystem/__compare/synth_three_way.h new file mode 100644 index 000000000..d3ce27c29 --- /dev/null +++ b/libc/isystem/__compare/synth_three_way.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__compare/synth_three_way.h" diff --git a/libc/isystem/__compare/three_way_comparable.h b/libc/isystem/__compare/three_way_comparable.h new file mode 100644 index 000000000..2af969ffd --- /dev/null +++ b/libc/isystem/__compare/three_way_comparable.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__compare/three_way_comparable.h" diff --git a/libc/isystem/__compare/weak_order.h b/libc/isystem/__compare/weak_order.h new file mode 100644 index 000000000..4005b2733 --- /dev/null +++ b/libc/isystem/__compare/weak_order.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__compare/weak_order.h" diff --git a/libc/isystem/__concepts/arithmetic.h b/libc/isystem/__concepts/arithmetic.h new file mode 100644 index 000000000..b7b3a862b --- /dev/null +++ b/libc/isystem/__concepts/arithmetic.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__concepts/arithmetic.h" diff --git a/libc/isystem/__concepts/assignable.h b/libc/isystem/__concepts/assignable.h new file mode 100644 index 000000000..a5ba0abc6 --- /dev/null +++ b/libc/isystem/__concepts/assignable.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__concepts/assignable.h" diff --git a/libc/isystem/__concepts/boolean_testable.h b/libc/isystem/__concepts/boolean_testable.h new file mode 100644 index 000000000..d2090da3e --- /dev/null +++ b/libc/isystem/__concepts/boolean_testable.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__concepts/boolean_testable.h" diff --git a/libc/isystem/__concepts/class_or_enum.h b/libc/isystem/__concepts/class_or_enum.h new file mode 100644 index 000000000..06f8b868b --- /dev/null +++ b/libc/isystem/__concepts/class_or_enum.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__concepts/class_or_enum.h" diff --git a/libc/isystem/__concepts/common_reference_with.h b/libc/isystem/__concepts/common_reference_with.h new file mode 100644 index 000000000..3fb55b0bf --- /dev/null +++ b/libc/isystem/__concepts/common_reference_with.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__concepts/common_reference_with.h" diff --git a/libc/isystem/__concepts/common_with.h b/libc/isystem/__concepts/common_with.h new file mode 100644 index 000000000..8312c9793 --- /dev/null +++ b/libc/isystem/__concepts/common_with.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__concepts/common_with.h" diff --git a/libc/isystem/__concepts/constructible.h b/libc/isystem/__concepts/constructible.h new file mode 100644 index 000000000..bcc66912e --- /dev/null +++ b/libc/isystem/__concepts/constructible.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__concepts/constructible.h" diff --git a/libc/isystem/__concepts/convertible_to.h b/libc/isystem/__concepts/convertible_to.h new file mode 100644 index 000000000..28d89bcea --- /dev/null +++ b/libc/isystem/__concepts/convertible_to.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__concepts/convertible_to.h" diff --git a/libc/isystem/__concepts/copyable.h b/libc/isystem/__concepts/copyable.h new file mode 100644 index 000000000..ee9df4ce8 --- /dev/null +++ b/libc/isystem/__concepts/copyable.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__concepts/copyable.h" diff --git a/libc/isystem/__concepts/derived_from.h b/libc/isystem/__concepts/derived_from.h new file mode 100644 index 000000000..4598169a0 --- /dev/null +++ b/libc/isystem/__concepts/derived_from.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__concepts/derived_from.h" diff --git a/libc/isystem/__concepts/destructible.h b/libc/isystem/__concepts/destructible.h new file mode 100644 index 000000000..7b6bd65bb --- /dev/null +++ b/libc/isystem/__concepts/destructible.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__concepts/destructible.h" diff --git a/libc/isystem/__concepts/different_from.h b/libc/isystem/__concepts/different_from.h new file mode 100644 index 000000000..81c2114f3 --- /dev/null +++ b/libc/isystem/__concepts/different_from.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__concepts/different_from.h" diff --git a/libc/isystem/__concepts/equality_comparable.h b/libc/isystem/__concepts/equality_comparable.h new file mode 100644 index 000000000..6c1abeafa --- /dev/null +++ b/libc/isystem/__concepts/equality_comparable.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__concepts/equality_comparable.h" diff --git a/libc/isystem/__concepts/invocable.h b/libc/isystem/__concepts/invocable.h new file mode 100644 index 000000000..e5639ff74 --- /dev/null +++ b/libc/isystem/__concepts/invocable.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__concepts/invocable.h" diff --git a/libc/isystem/__concepts/movable.h b/libc/isystem/__concepts/movable.h new file mode 100644 index 000000000..d3939c357 --- /dev/null +++ b/libc/isystem/__concepts/movable.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__concepts/movable.h" diff --git a/libc/isystem/__concepts/predicate.h b/libc/isystem/__concepts/predicate.h new file mode 100644 index 000000000..bb5145da0 --- /dev/null +++ b/libc/isystem/__concepts/predicate.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__concepts/predicate.h" diff --git a/libc/isystem/__concepts/regular.h b/libc/isystem/__concepts/regular.h new file mode 100644 index 000000000..39772486a --- /dev/null +++ b/libc/isystem/__concepts/regular.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__concepts/regular.h" diff --git a/libc/isystem/__concepts/relation.h b/libc/isystem/__concepts/relation.h new file mode 100644 index 000000000..ca0f9603f --- /dev/null +++ b/libc/isystem/__concepts/relation.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__concepts/relation.h" diff --git a/libc/isystem/__concepts/same_as.h b/libc/isystem/__concepts/same_as.h new file mode 100644 index 000000000..5aed22981 --- /dev/null +++ b/libc/isystem/__concepts/same_as.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__concepts/same_as.h" diff --git a/libc/isystem/__concepts/semiregular.h b/libc/isystem/__concepts/semiregular.h new file mode 100644 index 000000000..419b73bed --- /dev/null +++ b/libc/isystem/__concepts/semiregular.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__concepts/semiregular.h" diff --git a/libc/isystem/__concepts/swappable.h b/libc/isystem/__concepts/swappable.h new file mode 100644 index 000000000..30f479c29 --- /dev/null +++ b/libc/isystem/__concepts/swappable.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__concepts/swappable.h" diff --git a/libc/isystem/__concepts/totally_ordered.h b/libc/isystem/__concepts/totally_ordered.h new file mode 100644 index 000000000..b7b4cd760 --- /dev/null +++ b/libc/isystem/__concepts/totally_ordered.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__concepts/totally_ordered.h" diff --git a/libc/isystem/__condition_variable/condition_variable.h b/libc/isystem/__condition_variable/condition_variable.h new file mode 100644 index 000000000..27d82ac00 --- /dev/null +++ b/libc/isystem/__condition_variable/condition_variable.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__condition_variable/condition_variable.h" diff --git a/libc/isystem/__config b/libc/isystem/__config new file mode 100644 index 000000000..e0803675d --- /dev/null +++ b/libc/isystem/__config @@ -0,0 +1 @@ +#include "third_party/libcxx/__config" diff --git a/libc/isystem/__config_site b/libc/isystem/__config_site new file mode 100644 index 000000000..281eff4b8 --- /dev/null +++ b/libc/isystem/__config_site @@ -0,0 +1 @@ +#include "third_party/libcxx/__config_site" diff --git a/libc/isystem/__coroutine/coroutine_handle.h b/libc/isystem/__coroutine/coroutine_handle.h new file mode 100644 index 000000000..edc585dcc --- /dev/null +++ b/libc/isystem/__coroutine/coroutine_handle.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__coroutine/coroutine_handle.h" diff --git a/libc/isystem/__coroutine/coroutine_traits.h b/libc/isystem/__coroutine/coroutine_traits.h new file mode 100644 index 000000000..bbff1ebdd --- /dev/null +++ b/libc/isystem/__coroutine/coroutine_traits.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__coroutine/coroutine_traits.h" diff --git a/libc/isystem/__coroutine/noop_coroutine_handle.h b/libc/isystem/__coroutine/noop_coroutine_handle.h new file mode 100644 index 000000000..2f171894e --- /dev/null +++ b/libc/isystem/__coroutine/noop_coroutine_handle.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__coroutine/noop_coroutine_handle.h" diff --git a/libc/isystem/__coroutine/trivial_awaitables.h b/libc/isystem/__coroutine/trivial_awaitables.h new file mode 100644 index 000000000..3bdd68e0e --- /dev/null +++ b/libc/isystem/__coroutine/trivial_awaitables.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__coroutine/trivial_awaitables.h" diff --git a/libc/isystem/__debug b/libc/isystem/__debug new file mode 100644 index 000000000..04395b9bc --- /dev/null +++ b/libc/isystem/__debug @@ -0,0 +1 @@ +#include "third_party/libcxx/__debug" diff --git a/libc/isystem/__debug_utils/randomize_range.h b/libc/isystem/__debug_utils/randomize_range.h new file mode 100644 index 000000000..a33bc6b98 --- /dev/null +++ b/libc/isystem/__debug_utils/randomize_range.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__debug_utils/randomize_range.h" diff --git a/libc/isystem/__exception/exception.h b/libc/isystem/__exception/exception.h new file mode 100644 index 000000000..fc7c3312e --- /dev/null +++ b/libc/isystem/__exception/exception.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__exception/exception.h" diff --git a/libc/isystem/__exception/exception_ptr.h b/libc/isystem/__exception/exception_ptr.h new file mode 100644 index 000000000..10b134614 --- /dev/null +++ b/libc/isystem/__exception/exception_ptr.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__exception/exception_ptr.h" diff --git a/libc/isystem/__exception/nested_exception.h b/libc/isystem/__exception/nested_exception.h new file mode 100644 index 000000000..e5900e7b3 --- /dev/null +++ b/libc/isystem/__exception/nested_exception.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__exception/nested_exception.h" diff --git a/libc/isystem/__exception/operations.h b/libc/isystem/__exception/operations.h new file mode 100644 index 000000000..330230368 --- /dev/null +++ b/libc/isystem/__exception/operations.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__exception/operations.h" diff --git a/libc/isystem/__exception/terminate.h b/libc/isystem/__exception/terminate.h new file mode 100644 index 000000000..bd9211ab7 --- /dev/null +++ b/libc/isystem/__exception/terminate.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__exception/terminate.h" diff --git a/libc/isystem/__expected/bad_expected_access.h b/libc/isystem/__expected/bad_expected_access.h new file mode 100644 index 000000000..42f6c73e4 --- /dev/null +++ b/libc/isystem/__expected/bad_expected_access.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__expected/bad_expected_access.h" diff --git a/libc/isystem/__expected/expected.h b/libc/isystem/__expected/expected.h new file mode 100644 index 000000000..ba78e807d --- /dev/null +++ b/libc/isystem/__expected/expected.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__expected/expected.h" diff --git a/libc/isystem/__expected/unexpect.h b/libc/isystem/__expected/unexpect.h new file mode 100644 index 000000000..16d23ea4e --- /dev/null +++ b/libc/isystem/__expected/unexpect.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__expected/unexpect.h" diff --git a/libc/isystem/__expected/unexpected.h b/libc/isystem/__expected/unexpected.h new file mode 100644 index 000000000..51a2d1b6a --- /dev/null +++ b/libc/isystem/__expected/unexpected.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__expected/unexpected.h" diff --git a/libc/isystem/__filesystem/copy_options.h b/libc/isystem/__filesystem/copy_options.h new file mode 100644 index 000000000..6bb46afbf --- /dev/null +++ b/libc/isystem/__filesystem/copy_options.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__filesystem/copy_options.h" diff --git a/libc/isystem/__filesystem/directory_entry.h b/libc/isystem/__filesystem/directory_entry.h new file mode 100644 index 000000000..888c4219c --- /dev/null +++ b/libc/isystem/__filesystem/directory_entry.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__filesystem/directory_entry.h" diff --git a/libc/isystem/__filesystem/directory_iterator.h b/libc/isystem/__filesystem/directory_iterator.h new file mode 100644 index 000000000..c8a3ab02e --- /dev/null +++ b/libc/isystem/__filesystem/directory_iterator.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__filesystem/directory_iterator.h" diff --git a/libc/isystem/__filesystem/directory_options.h b/libc/isystem/__filesystem/directory_options.h new file mode 100644 index 000000000..c6fd6d089 --- /dev/null +++ b/libc/isystem/__filesystem/directory_options.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__filesystem/directory_options.h" diff --git a/libc/isystem/__filesystem/file_status.h b/libc/isystem/__filesystem/file_status.h new file mode 100644 index 000000000..45626c212 --- /dev/null +++ b/libc/isystem/__filesystem/file_status.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__filesystem/file_status.h" diff --git a/libc/isystem/__filesystem/file_time_type.h b/libc/isystem/__filesystem/file_time_type.h new file mode 100644 index 000000000..69568dbcf --- /dev/null +++ b/libc/isystem/__filesystem/file_time_type.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__filesystem/file_time_type.h" diff --git a/libc/isystem/__filesystem/file_type.h b/libc/isystem/__filesystem/file_type.h new file mode 100644 index 000000000..335a11c9e --- /dev/null +++ b/libc/isystem/__filesystem/file_type.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__filesystem/file_type.h" diff --git a/libc/isystem/__filesystem/filesystem_error.h b/libc/isystem/__filesystem/filesystem_error.h new file mode 100644 index 000000000..b95126848 --- /dev/null +++ b/libc/isystem/__filesystem/filesystem_error.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__filesystem/filesystem_error.h" diff --git a/libc/isystem/__filesystem/operations.h b/libc/isystem/__filesystem/operations.h new file mode 100644 index 000000000..d0d79480d --- /dev/null +++ b/libc/isystem/__filesystem/operations.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__filesystem/operations.h" diff --git a/libc/isystem/__filesystem/path.h b/libc/isystem/__filesystem/path.h new file mode 100644 index 000000000..c5a25621f --- /dev/null +++ b/libc/isystem/__filesystem/path.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__filesystem/path.h" diff --git a/libc/isystem/__filesystem/path_iterator.h b/libc/isystem/__filesystem/path_iterator.h new file mode 100644 index 000000000..c730fd4b3 --- /dev/null +++ b/libc/isystem/__filesystem/path_iterator.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__filesystem/path_iterator.h" diff --git a/libc/isystem/__filesystem/perm_options.h b/libc/isystem/__filesystem/perm_options.h new file mode 100644 index 000000000..dbd32cbc7 --- /dev/null +++ b/libc/isystem/__filesystem/perm_options.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__filesystem/perm_options.h" diff --git a/libc/isystem/__filesystem/perms.h b/libc/isystem/__filesystem/perms.h new file mode 100644 index 000000000..b83178fc0 --- /dev/null +++ b/libc/isystem/__filesystem/perms.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__filesystem/perms.h" diff --git a/libc/isystem/__filesystem/recursive_directory_iterator.h b/libc/isystem/__filesystem/recursive_directory_iterator.h new file mode 100644 index 000000000..08bf7946c --- /dev/null +++ b/libc/isystem/__filesystem/recursive_directory_iterator.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__filesystem/recursive_directory_iterator.h" diff --git a/libc/isystem/__filesystem/space_info.h b/libc/isystem/__filesystem/space_info.h new file mode 100644 index 000000000..81b17e6e7 --- /dev/null +++ b/libc/isystem/__filesystem/space_info.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__filesystem/space_info.h" diff --git a/libc/isystem/__filesystem/u8path.h b/libc/isystem/__filesystem/u8path.h new file mode 100644 index 000000000..fffbb8ce0 --- /dev/null +++ b/libc/isystem/__filesystem/u8path.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__filesystem/u8path.h" diff --git a/libc/isystem/__format/buffer.h b/libc/isystem/__format/buffer.h new file mode 100644 index 000000000..818c3b38e --- /dev/null +++ b/libc/isystem/__format/buffer.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__format/buffer.h" diff --git a/libc/isystem/__format/concepts.h b/libc/isystem/__format/concepts.h new file mode 100644 index 000000000..ecb0e8480 --- /dev/null +++ b/libc/isystem/__format/concepts.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__format/concepts.h" diff --git a/libc/isystem/__format/container_adaptor.h b/libc/isystem/__format/container_adaptor.h new file mode 100644 index 000000000..4cd42bf05 --- /dev/null +++ b/libc/isystem/__format/container_adaptor.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__format/container_adaptor.h" diff --git a/libc/isystem/__format/enable_insertable.h b/libc/isystem/__format/enable_insertable.h new file mode 100644 index 000000000..b10f358d7 --- /dev/null +++ b/libc/isystem/__format/enable_insertable.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__format/enable_insertable.h" diff --git a/libc/isystem/__format/escaped_output_table.h b/libc/isystem/__format/escaped_output_table.h new file mode 100644 index 000000000..0388bfd25 --- /dev/null +++ b/libc/isystem/__format/escaped_output_table.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__format/escaped_output_table.h" diff --git a/libc/isystem/__format/extended_grapheme_cluster_table.h b/libc/isystem/__format/extended_grapheme_cluster_table.h new file mode 100644 index 000000000..9dcfd92a8 --- /dev/null +++ b/libc/isystem/__format/extended_grapheme_cluster_table.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__format/extended_grapheme_cluster_table.h" diff --git a/libc/isystem/__format/format_arg.h b/libc/isystem/__format/format_arg.h new file mode 100644 index 000000000..8e13b8af3 --- /dev/null +++ b/libc/isystem/__format/format_arg.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__format/format_arg.h" diff --git a/libc/isystem/__format/format_arg_store.h b/libc/isystem/__format/format_arg_store.h new file mode 100644 index 000000000..3f917bb4e --- /dev/null +++ b/libc/isystem/__format/format_arg_store.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__format/format_arg_store.h" diff --git a/libc/isystem/__format/format_args.h b/libc/isystem/__format/format_args.h new file mode 100644 index 000000000..55d301edf --- /dev/null +++ b/libc/isystem/__format/format_args.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__format/format_args.h" diff --git a/libc/isystem/__format/format_context.h b/libc/isystem/__format/format_context.h new file mode 100644 index 000000000..b29184b2d --- /dev/null +++ b/libc/isystem/__format/format_context.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__format/format_context.h" diff --git a/libc/isystem/__format/format_error.h b/libc/isystem/__format/format_error.h new file mode 100644 index 000000000..5f3f358b5 --- /dev/null +++ b/libc/isystem/__format/format_error.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__format/format_error.h" diff --git a/libc/isystem/__format/format_functions.h b/libc/isystem/__format/format_functions.h new file mode 100644 index 000000000..14f8df3b1 --- /dev/null +++ b/libc/isystem/__format/format_functions.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__format/format_functions.h" diff --git a/libc/isystem/__format/format_fwd.h b/libc/isystem/__format/format_fwd.h new file mode 100644 index 000000000..590990237 --- /dev/null +++ b/libc/isystem/__format/format_fwd.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__format/format_fwd.h" diff --git a/libc/isystem/__format/format_parse_context.h b/libc/isystem/__format/format_parse_context.h new file mode 100644 index 000000000..c1cf595f1 --- /dev/null +++ b/libc/isystem/__format/format_parse_context.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__format/format_parse_context.h" diff --git a/libc/isystem/__format/format_string.h b/libc/isystem/__format/format_string.h new file mode 100644 index 000000000..427a501bd --- /dev/null +++ b/libc/isystem/__format/format_string.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__format/format_string.h" diff --git a/libc/isystem/__format/format_to_n_result.h b/libc/isystem/__format/format_to_n_result.h new file mode 100644 index 000000000..099dee51a --- /dev/null +++ b/libc/isystem/__format/format_to_n_result.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__format/format_to_n_result.h" diff --git a/libc/isystem/__format/formatter.h b/libc/isystem/__format/formatter.h new file mode 100644 index 000000000..740c4cc54 --- /dev/null +++ b/libc/isystem/__format/formatter.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__format/formatter.h" diff --git a/libc/isystem/__format/formatter_bool.h b/libc/isystem/__format/formatter_bool.h new file mode 100644 index 000000000..bf532de5d --- /dev/null +++ b/libc/isystem/__format/formatter_bool.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__format/formatter_bool.h" diff --git a/libc/isystem/__format/formatter_char.h b/libc/isystem/__format/formatter_char.h new file mode 100644 index 000000000..6674430b2 --- /dev/null +++ b/libc/isystem/__format/formatter_char.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__format/formatter_char.h" diff --git a/libc/isystem/__format/formatter_floating_point.h b/libc/isystem/__format/formatter_floating_point.h new file mode 100644 index 000000000..ec3237b4d --- /dev/null +++ b/libc/isystem/__format/formatter_floating_point.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__format/formatter_floating_point.h" diff --git a/libc/isystem/__format/formatter_integer.h b/libc/isystem/__format/formatter_integer.h new file mode 100644 index 000000000..5999edecd --- /dev/null +++ b/libc/isystem/__format/formatter_integer.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__format/formatter_integer.h" diff --git a/libc/isystem/__format/formatter_integral.h b/libc/isystem/__format/formatter_integral.h new file mode 100644 index 000000000..4564f4087 --- /dev/null +++ b/libc/isystem/__format/formatter_integral.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__format/formatter_integral.h" diff --git a/libc/isystem/__format/formatter_output.h b/libc/isystem/__format/formatter_output.h new file mode 100644 index 000000000..858d25ee8 --- /dev/null +++ b/libc/isystem/__format/formatter_output.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__format/formatter_output.h" diff --git a/libc/isystem/__format/formatter_pointer.h b/libc/isystem/__format/formatter_pointer.h new file mode 100644 index 000000000..1299e68bf --- /dev/null +++ b/libc/isystem/__format/formatter_pointer.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__format/formatter_pointer.h" diff --git a/libc/isystem/__format/formatter_string.h b/libc/isystem/__format/formatter_string.h new file mode 100644 index 000000000..3223ce63b --- /dev/null +++ b/libc/isystem/__format/formatter_string.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__format/formatter_string.h" diff --git a/libc/isystem/__format/formatter_tuple.h b/libc/isystem/__format/formatter_tuple.h new file mode 100644 index 000000000..1cc3c466a --- /dev/null +++ b/libc/isystem/__format/formatter_tuple.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__format/formatter_tuple.h" diff --git a/libc/isystem/__format/parser_std_format_spec.h b/libc/isystem/__format/parser_std_format_spec.h new file mode 100644 index 000000000..e308602a4 --- /dev/null +++ b/libc/isystem/__format/parser_std_format_spec.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__format/parser_std_format_spec.h" diff --git a/libc/isystem/__format/range_default_formatter.h b/libc/isystem/__format/range_default_formatter.h new file mode 100644 index 000000000..fd460f6f3 --- /dev/null +++ b/libc/isystem/__format/range_default_formatter.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__format/range_default_formatter.h" diff --git a/libc/isystem/__format/range_formatter.h b/libc/isystem/__format/range_formatter.h new file mode 100644 index 000000000..c99e4af1b --- /dev/null +++ b/libc/isystem/__format/range_formatter.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__format/range_formatter.h" diff --git a/libc/isystem/__format/unicode.h b/libc/isystem/__format/unicode.h new file mode 100644 index 000000000..75cfb9873 --- /dev/null +++ b/libc/isystem/__format/unicode.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__format/unicode.h" diff --git a/libc/isystem/__format/width_estimation_table.h b/libc/isystem/__format/width_estimation_table.h new file mode 100644 index 000000000..61e359e53 --- /dev/null +++ b/libc/isystem/__format/width_estimation_table.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__format/width_estimation_table.h" diff --git a/libc/isystem/__functional/binary_function.h b/libc/isystem/__functional/binary_function.h new file mode 100644 index 000000000..dfa940f7c --- /dev/null +++ b/libc/isystem/__functional/binary_function.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__functional/binary_function.h" diff --git a/libc/isystem/__functional/binary_negate.h b/libc/isystem/__functional/binary_negate.h new file mode 100644 index 000000000..74b7fb637 --- /dev/null +++ b/libc/isystem/__functional/binary_negate.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__functional/binary_negate.h" diff --git a/libc/isystem/__functional/bind.h b/libc/isystem/__functional/bind.h new file mode 100644 index 000000000..495bb1111 --- /dev/null +++ b/libc/isystem/__functional/bind.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__functional/bind.h" diff --git a/libc/isystem/__functional/bind_back.h b/libc/isystem/__functional/bind_back.h new file mode 100644 index 000000000..d8b1b5704 --- /dev/null +++ b/libc/isystem/__functional/bind_back.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__functional/bind_back.h" diff --git a/libc/isystem/__functional/bind_front.h b/libc/isystem/__functional/bind_front.h new file mode 100644 index 000000000..8581fe048 --- /dev/null +++ b/libc/isystem/__functional/bind_front.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__functional/bind_front.h" diff --git a/libc/isystem/__functional/binder1st.h b/libc/isystem/__functional/binder1st.h new file mode 100644 index 000000000..548aa5cc6 --- /dev/null +++ b/libc/isystem/__functional/binder1st.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__functional/binder1st.h" diff --git a/libc/isystem/__functional/binder2nd.h b/libc/isystem/__functional/binder2nd.h new file mode 100644 index 000000000..f194a998d --- /dev/null +++ b/libc/isystem/__functional/binder2nd.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__functional/binder2nd.h" diff --git a/libc/isystem/__functional/boyer_moore_searcher.h b/libc/isystem/__functional/boyer_moore_searcher.h new file mode 100644 index 000000000..028e35e6d --- /dev/null +++ b/libc/isystem/__functional/boyer_moore_searcher.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__functional/boyer_moore_searcher.h" diff --git a/libc/isystem/__functional/compose.h b/libc/isystem/__functional/compose.h new file mode 100644 index 000000000..e190a0a2e --- /dev/null +++ b/libc/isystem/__functional/compose.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__functional/compose.h" diff --git a/libc/isystem/__functional/default_searcher.h b/libc/isystem/__functional/default_searcher.h new file mode 100644 index 000000000..64ab66f8e --- /dev/null +++ b/libc/isystem/__functional/default_searcher.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__functional/default_searcher.h" diff --git a/libc/isystem/__functional/function.h b/libc/isystem/__functional/function.h new file mode 100644 index 000000000..e70e5e883 --- /dev/null +++ b/libc/isystem/__functional/function.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__functional/function.h" diff --git a/libc/isystem/__functional/hash.h b/libc/isystem/__functional/hash.h new file mode 100644 index 000000000..269bca2e1 --- /dev/null +++ b/libc/isystem/__functional/hash.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__functional/hash.h" diff --git a/libc/isystem/__functional/identity.h b/libc/isystem/__functional/identity.h new file mode 100644 index 000000000..1174eb660 --- /dev/null +++ b/libc/isystem/__functional/identity.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__functional/identity.h" diff --git a/libc/isystem/__functional/invoke.h b/libc/isystem/__functional/invoke.h new file mode 100644 index 000000000..541cfff6e --- /dev/null +++ b/libc/isystem/__functional/invoke.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__functional/invoke.h" diff --git a/libc/isystem/__functional/is_transparent.h b/libc/isystem/__functional/is_transparent.h new file mode 100644 index 000000000..cbfdcd080 --- /dev/null +++ b/libc/isystem/__functional/is_transparent.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__functional/is_transparent.h" diff --git a/libc/isystem/__functional/mem_fn.h b/libc/isystem/__functional/mem_fn.h new file mode 100644 index 000000000..a7d6c0309 --- /dev/null +++ b/libc/isystem/__functional/mem_fn.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__functional/mem_fn.h" diff --git a/libc/isystem/__functional/mem_fun_ref.h b/libc/isystem/__functional/mem_fun_ref.h new file mode 100644 index 000000000..49430c517 --- /dev/null +++ b/libc/isystem/__functional/mem_fun_ref.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__functional/mem_fun_ref.h" diff --git a/libc/isystem/__functional/not_fn.h b/libc/isystem/__functional/not_fn.h new file mode 100644 index 000000000..f1f98ada8 --- /dev/null +++ b/libc/isystem/__functional/not_fn.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__functional/not_fn.h" diff --git a/libc/isystem/__functional/operations.h b/libc/isystem/__functional/operations.h new file mode 100644 index 000000000..bd14a162a --- /dev/null +++ b/libc/isystem/__functional/operations.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__functional/operations.h" diff --git a/libc/isystem/__functional/perfect_forward.h b/libc/isystem/__functional/perfect_forward.h new file mode 100644 index 000000000..8506b8297 --- /dev/null +++ b/libc/isystem/__functional/perfect_forward.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__functional/perfect_forward.h" diff --git a/libc/isystem/__functional/pointer_to_binary_function.h b/libc/isystem/__functional/pointer_to_binary_function.h new file mode 100644 index 000000000..648eb8c42 --- /dev/null +++ b/libc/isystem/__functional/pointer_to_binary_function.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__functional/pointer_to_binary_function.h" diff --git a/libc/isystem/__functional/pointer_to_unary_function.h b/libc/isystem/__functional/pointer_to_unary_function.h new file mode 100644 index 000000000..ef966d038 --- /dev/null +++ b/libc/isystem/__functional/pointer_to_unary_function.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__functional/pointer_to_unary_function.h" diff --git a/libc/isystem/__functional/ranges_operations.h b/libc/isystem/__functional/ranges_operations.h new file mode 100644 index 000000000..42d5ebb19 --- /dev/null +++ b/libc/isystem/__functional/ranges_operations.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__functional/ranges_operations.h" diff --git a/libc/isystem/__functional/reference_wrapper.h b/libc/isystem/__functional/reference_wrapper.h new file mode 100644 index 000000000..0dcebaf1d --- /dev/null +++ b/libc/isystem/__functional/reference_wrapper.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__functional/reference_wrapper.h" diff --git a/libc/isystem/__functional/unary_function.h b/libc/isystem/__functional/unary_function.h new file mode 100644 index 000000000..31762250a --- /dev/null +++ b/libc/isystem/__functional/unary_function.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__functional/unary_function.h" diff --git a/libc/isystem/__functional/unary_negate.h b/libc/isystem/__functional/unary_negate.h new file mode 100644 index 000000000..b411f1d1e --- /dev/null +++ b/libc/isystem/__functional/unary_negate.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__functional/unary_negate.h" diff --git a/libc/isystem/__functional/weak_result_type.h b/libc/isystem/__functional/weak_result_type.h new file mode 100644 index 000000000..931b520c8 --- /dev/null +++ b/libc/isystem/__functional/weak_result_type.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__functional/weak_result_type.h" diff --git a/libc/isystem/__fwd/array.h b/libc/isystem/__fwd/array.h new file mode 100644 index 000000000..f35d9fa29 --- /dev/null +++ b/libc/isystem/__fwd/array.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__fwd/array.h" diff --git a/libc/isystem/__fwd/fstream.h b/libc/isystem/__fwd/fstream.h new file mode 100644 index 000000000..320157622 --- /dev/null +++ b/libc/isystem/__fwd/fstream.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__fwd/fstream.h" diff --git a/libc/isystem/__fwd/get.h b/libc/isystem/__fwd/get.h new file mode 100644 index 000000000..62f51e163 --- /dev/null +++ b/libc/isystem/__fwd/get.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__fwd/get.h" diff --git a/libc/isystem/__fwd/hash.h b/libc/isystem/__fwd/hash.h new file mode 100644 index 000000000..efb447e83 --- /dev/null +++ b/libc/isystem/__fwd/hash.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__fwd/hash.h" diff --git a/libc/isystem/__fwd/ios.h b/libc/isystem/__fwd/ios.h new file mode 100644 index 000000000..a121bea35 --- /dev/null +++ b/libc/isystem/__fwd/ios.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__fwd/ios.h" diff --git a/libc/isystem/__fwd/istream.h b/libc/isystem/__fwd/istream.h new file mode 100644 index 000000000..f2f3a07ed --- /dev/null +++ b/libc/isystem/__fwd/istream.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__fwd/istream.h" diff --git a/libc/isystem/__fwd/memory_resource.h b/libc/isystem/__fwd/memory_resource.h new file mode 100644 index 000000000..9c3a22885 --- /dev/null +++ b/libc/isystem/__fwd/memory_resource.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__fwd/memory_resource.h" diff --git a/libc/isystem/__fwd/ostream.h b/libc/isystem/__fwd/ostream.h new file mode 100644 index 000000000..a3ed81564 --- /dev/null +++ b/libc/isystem/__fwd/ostream.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__fwd/ostream.h" diff --git a/libc/isystem/__fwd/pair.h b/libc/isystem/__fwd/pair.h new file mode 100644 index 000000000..8ae0ca4be --- /dev/null +++ b/libc/isystem/__fwd/pair.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__fwd/pair.h" diff --git a/libc/isystem/__fwd/span.h b/libc/isystem/__fwd/span.h new file mode 100644 index 000000000..bc2ac552e --- /dev/null +++ b/libc/isystem/__fwd/span.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__fwd/span.h" diff --git a/libc/isystem/__fwd/sstream.h b/libc/isystem/__fwd/sstream.h new file mode 100644 index 000000000..fccf7caa6 --- /dev/null +++ b/libc/isystem/__fwd/sstream.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__fwd/sstream.h" diff --git a/libc/isystem/__fwd/streambuf.h b/libc/isystem/__fwd/streambuf.h new file mode 100644 index 000000000..cd3c6bc22 --- /dev/null +++ b/libc/isystem/__fwd/streambuf.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__fwd/streambuf.h" diff --git a/libc/isystem/__fwd/string.h b/libc/isystem/__fwd/string.h new file mode 100644 index 000000000..403ba5d2e --- /dev/null +++ b/libc/isystem/__fwd/string.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__fwd/string.h" diff --git a/libc/isystem/__fwd/string_view.h b/libc/isystem/__fwd/string_view.h new file mode 100644 index 000000000..d094372be --- /dev/null +++ b/libc/isystem/__fwd/string_view.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__fwd/string_view.h" diff --git a/libc/isystem/__fwd/subrange.h b/libc/isystem/__fwd/subrange.h new file mode 100644 index 000000000..baecfb3b7 --- /dev/null +++ b/libc/isystem/__fwd/subrange.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__fwd/subrange.h" diff --git a/libc/isystem/__fwd/tuple.h b/libc/isystem/__fwd/tuple.h new file mode 100644 index 000000000..ba1a2d888 --- /dev/null +++ b/libc/isystem/__fwd/tuple.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__fwd/tuple.h" diff --git a/libc/isystem/__hash_table b/libc/isystem/__hash_table new file mode 100644 index 000000000..06dd032db --- /dev/null +++ b/libc/isystem/__hash_table @@ -0,0 +1 @@ +#include "third_party/libcxx/__hash_table" diff --git a/libc/isystem/__ios/fpos.h b/libc/isystem/__ios/fpos.h new file mode 100644 index 000000000..8752622fd --- /dev/null +++ b/libc/isystem/__ios/fpos.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ios/fpos.h" diff --git a/libc/isystem/__iterator/access.h b/libc/isystem/__iterator/access.h new file mode 100644 index 000000000..42e8993ad --- /dev/null +++ b/libc/isystem/__iterator/access.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/access.h" diff --git a/libc/isystem/__iterator/advance.h b/libc/isystem/__iterator/advance.h new file mode 100644 index 000000000..b9d6ecb59 --- /dev/null +++ b/libc/isystem/__iterator/advance.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/advance.h" diff --git a/libc/isystem/__iterator/back_insert_iterator.h b/libc/isystem/__iterator/back_insert_iterator.h new file mode 100644 index 000000000..8b6ea8655 --- /dev/null +++ b/libc/isystem/__iterator/back_insert_iterator.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/back_insert_iterator.h" diff --git a/libc/isystem/__iterator/bounded_iter.h b/libc/isystem/__iterator/bounded_iter.h new file mode 100644 index 000000000..3acf996fc --- /dev/null +++ b/libc/isystem/__iterator/bounded_iter.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/bounded_iter.h" diff --git a/libc/isystem/__iterator/common_iterator.h b/libc/isystem/__iterator/common_iterator.h new file mode 100644 index 000000000..74b1bfeda --- /dev/null +++ b/libc/isystem/__iterator/common_iterator.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/common_iterator.h" diff --git a/libc/isystem/__iterator/concepts.h b/libc/isystem/__iterator/concepts.h new file mode 100644 index 000000000..b930c317d --- /dev/null +++ b/libc/isystem/__iterator/concepts.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/concepts.h" diff --git a/libc/isystem/__iterator/counted_iterator.h b/libc/isystem/__iterator/counted_iterator.h new file mode 100644 index 000000000..e8fea8179 --- /dev/null +++ b/libc/isystem/__iterator/counted_iterator.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/counted_iterator.h" diff --git a/libc/isystem/__iterator/data.h b/libc/isystem/__iterator/data.h new file mode 100644 index 000000000..074df0122 --- /dev/null +++ b/libc/isystem/__iterator/data.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/data.h" diff --git a/libc/isystem/__iterator/default_sentinel.h b/libc/isystem/__iterator/default_sentinel.h new file mode 100644 index 000000000..35f516299 --- /dev/null +++ b/libc/isystem/__iterator/default_sentinel.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/default_sentinel.h" diff --git a/libc/isystem/__iterator/distance.h b/libc/isystem/__iterator/distance.h new file mode 100644 index 000000000..03427f348 --- /dev/null +++ b/libc/isystem/__iterator/distance.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/distance.h" diff --git a/libc/isystem/__iterator/empty.h b/libc/isystem/__iterator/empty.h new file mode 100644 index 000000000..7dff787a6 --- /dev/null +++ b/libc/isystem/__iterator/empty.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/empty.h" diff --git a/libc/isystem/__iterator/erase_if_container.h b/libc/isystem/__iterator/erase_if_container.h new file mode 100644 index 000000000..891c35d32 --- /dev/null +++ b/libc/isystem/__iterator/erase_if_container.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/erase_if_container.h" diff --git a/libc/isystem/__iterator/front_insert_iterator.h b/libc/isystem/__iterator/front_insert_iterator.h new file mode 100644 index 000000000..803fa7c19 --- /dev/null +++ b/libc/isystem/__iterator/front_insert_iterator.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/front_insert_iterator.h" diff --git a/libc/isystem/__iterator/incrementable_traits.h b/libc/isystem/__iterator/incrementable_traits.h new file mode 100644 index 000000000..016a7429d --- /dev/null +++ b/libc/isystem/__iterator/incrementable_traits.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/incrementable_traits.h" diff --git a/libc/isystem/__iterator/indirectly_comparable.h b/libc/isystem/__iterator/indirectly_comparable.h new file mode 100644 index 000000000..e8dd61611 --- /dev/null +++ b/libc/isystem/__iterator/indirectly_comparable.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/indirectly_comparable.h" diff --git a/libc/isystem/__iterator/insert_iterator.h b/libc/isystem/__iterator/insert_iterator.h new file mode 100644 index 000000000..d7d51d5a2 --- /dev/null +++ b/libc/isystem/__iterator/insert_iterator.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/insert_iterator.h" diff --git a/libc/isystem/__iterator/istream_iterator.h b/libc/isystem/__iterator/istream_iterator.h new file mode 100644 index 000000000..c4dca4cf7 --- /dev/null +++ b/libc/isystem/__iterator/istream_iterator.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/istream_iterator.h" diff --git a/libc/isystem/__iterator/istreambuf_iterator.h b/libc/isystem/__iterator/istreambuf_iterator.h new file mode 100644 index 000000000..e1c6f5c0c --- /dev/null +++ b/libc/isystem/__iterator/istreambuf_iterator.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/istreambuf_iterator.h" diff --git a/libc/isystem/__iterator/iter_move.h b/libc/isystem/__iterator/iter_move.h new file mode 100644 index 000000000..d6ec40c76 --- /dev/null +++ b/libc/isystem/__iterator/iter_move.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/iter_move.h" diff --git a/libc/isystem/__iterator/iter_swap.h b/libc/isystem/__iterator/iter_swap.h new file mode 100644 index 000000000..d417d7b99 --- /dev/null +++ b/libc/isystem/__iterator/iter_swap.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/iter_swap.h" diff --git a/libc/isystem/__iterator/iterator.h b/libc/isystem/__iterator/iterator.h new file mode 100644 index 000000000..e25632aaa --- /dev/null +++ b/libc/isystem/__iterator/iterator.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/iterator.h" diff --git a/libc/isystem/__iterator/iterator_traits.h b/libc/isystem/__iterator/iterator_traits.h new file mode 100644 index 000000000..74329d233 --- /dev/null +++ b/libc/isystem/__iterator/iterator_traits.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/iterator_traits.h" diff --git a/libc/isystem/__iterator/iterator_with_data.h b/libc/isystem/__iterator/iterator_with_data.h new file mode 100644 index 000000000..a13a042d6 --- /dev/null +++ b/libc/isystem/__iterator/iterator_with_data.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/iterator_with_data.h" diff --git a/libc/isystem/__iterator/mergeable.h b/libc/isystem/__iterator/mergeable.h new file mode 100644 index 000000000..9c05a7ec7 --- /dev/null +++ b/libc/isystem/__iterator/mergeable.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/mergeable.h" diff --git a/libc/isystem/__iterator/move_iterator.h b/libc/isystem/__iterator/move_iterator.h new file mode 100644 index 000000000..93556c2c4 --- /dev/null +++ b/libc/isystem/__iterator/move_iterator.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/move_iterator.h" diff --git a/libc/isystem/__iterator/move_sentinel.h b/libc/isystem/__iterator/move_sentinel.h new file mode 100644 index 000000000..d92a398a2 --- /dev/null +++ b/libc/isystem/__iterator/move_sentinel.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/move_sentinel.h" diff --git a/libc/isystem/__iterator/next.h b/libc/isystem/__iterator/next.h new file mode 100644 index 000000000..b7083bb64 --- /dev/null +++ b/libc/isystem/__iterator/next.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/next.h" diff --git a/libc/isystem/__iterator/ostream_iterator.h b/libc/isystem/__iterator/ostream_iterator.h new file mode 100644 index 000000000..11cf36d9a --- /dev/null +++ b/libc/isystem/__iterator/ostream_iterator.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/ostream_iterator.h" diff --git a/libc/isystem/__iterator/ostreambuf_iterator.h b/libc/isystem/__iterator/ostreambuf_iterator.h new file mode 100644 index 000000000..d8e15b6b8 --- /dev/null +++ b/libc/isystem/__iterator/ostreambuf_iterator.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/ostreambuf_iterator.h" diff --git a/libc/isystem/__iterator/permutable.h b/libc/isystem/__iterator/permutable.h new file mode 100644 index 000000000..e09e8078b --- /dev/null +++ b/libc/isystem/__iterator/permutable.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/permutable.h" diff --git a/libc/isystem/__iterator/prev.h b/libc/isystem/__iterator/prev.h new file mode 100644 index 000000000..5b540a33a --- /dev/null +++ b/libc/isystem/__iterator/prev.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/prev.h" diff --git a/libc/isystem/__iterator/projected.h b/libc/isystem/__iterator/projected.h new file mode 100644 index 000000000..8014a4a53 --- /dev/null +++ b/libc/isystem/__iterator/projected.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/projected.h" diff --git a/libc/isystem/__iterator/readable_traits.h b/libc/isystem/__iterator/readable_traits.h new file mode 100644 index 000000000..01e249bd7 --- /dev/null +++ b/libc/isystem/__iterator/readable_traits.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/readable_traits.h" diff --git a/libc/isystem/__iterator/reverse_access.h b/libc/isystem/__iterator/reverse_access.h new file mode 100644 index 000000000..6b46073f1 --- /dev/null +++ b/libc/isystem/__iterator/reverse_access.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/reverse_access.h" diff --git a/libc/isystem/__iterator/reverse_iterator.h b/libc/isystem/__iterator/reverse_iterator.h new file mode 100644 index 000000000..261ca8fe4 --- /dev/null +++ b/libc/isystem/__iterator/reverse_iterator.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/reverse_iterator.h" diff --git a/libc/isystem/__iterator/segmented_iterator.h b/libc/isystem/__iterator/segmented_iterator.h new file mode 100644 index 000000000..083dc0e6c --- /dev/null +++ b/libc/isystem/__iterator/segmented_iterator.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/segmented_iterator.h" diff --git a/libc/isystem/__iterator/size.h b/libc/isystem/__iterator/size.h new file mode 100644 index 000000000..fd8f8ea22 --- /dev/null +++ b/libc/isystem/__iterator/size.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/size.h" diff --git a/libc/isystem/__iterator/sortable.h b/libc/isystem/__iterator/sortable.h new file mode 100644 index 000000000..aa714d95a --- /dev/null +++ b/libc/isystem/__iterator/sortable.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/sortable.h" diff --git a/libc/isystem/__iterator/unreachable_sentinel.h b/libc/isystem/__iterator/unreachable_sentinel.h new file mode 100644 index 000000000..100669d16 --- /dev/null +++ b/libc/isystem/__iterator/unreachable_sentinel.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/unreachable_sentinel.h" diff --git a/libc/isystem/__iterator/wrap_iter.h b/libc/isystem/__iterator/wrap_iter.h new file mode 100644 index 000000000..f9f9e17a8 --- /dev/null +++ b/libc/isystem/__iterator/wrap_iter.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__iterator/wrap_iter.h" diff --git a/libc/isystem/__locale b/libc/isystem/__locale new file mode 100644 index 000000000..430f7d277 --- /dev/null +++ b/libc/isystem/__locale @@ -0,0 +1 @@ +#include "third_party/libcxx/__locale" diff --git a/libc/isystem/__locale_dir/locale_base_api/bsd_locale_defaults.h b/libc/isystem/__locale_dir/locale_base_api/bsd_locale_defaults.h new file mode 100644 index 000000000..9616b1307 --- /dev/null +++ b/libc/isystem/__locale_dir/locale_base_api/bsd_locale_defaults.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__locale_dir/locale_base_api/bsd_locale_defaults.h" diff --git a/libc/isystem/__locale_dir/locale_base_api/bsd_locale_fallbacks.h b/libc/isystem/__locale_dir/locale_base_api/bsd_locale_fallbacks.h new file mode 100644 index 000000000..aefdb8f3c --- /dev/null +++ b/libc/isystem/__locale_dir/locale_base_api/bsd_locale_fallbacks.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__locale_dir/locale_base_api/bsd_locale_fallbacks.h" diff --git a/libc/isystem/__locale_dir/locale_base_api/locale_guard.h b/libc/isystem/__locale_dir/locale_base_api/locale_guard.h new file mode 100644 index 000000000..9c1a10090 --- /dev/null +++ b/libc/isystem/__locale_dir/locale_base_api/locale_guard.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__locale_dir/locale_base_api/locale_guard.h" diff --git a/libc/isystem/__mbstate_t.h b/libc/isystem/__mbstate_t.h new file mode 100644 index 000000000..ce032b9ae --- /dev/null +++ b/libc/isystem/__mbstate_t.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__mbstate_t.h" diff --git a/libc/isystem/__mdspan/extents.h b/libc/isystem/__mdspan/extents.h new file mode 100644 index 000000000..d4060eeb0 --- /dev/null +++ b/libc/isystem/__mdspan/extents.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__mdspan/extents.h" diff --git a/libc/isystem/__memory/addressof.h b/libc/isystem/__memory/addressof.h new file mode 100644 index 000000000..74479acbc --- /dev/null +++ b/libc/isystem/__memory/addressof.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__memory/addressof.h" diff --git a/libc/isystem/__memory/align.h b/libc/isystem/__memory/align.h new file mode 100644 index 000000000..dac036328 --- /dev/null +++ b/libc/isystem/__memory/align.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__memory/align.h" diff --git a/libc/isystem/__memory/aligned_alloc.h b/libc/isystem/__memory/aligned_alloc.h new file mode 100644 index 000000000..8f5c4a6ca --- /dev/null +++ b/libc/isystem/__memory/aligned_alloc.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__memory/aligned_alloc.h" diff --git a/libc/isystem/__memory/allocate_at_least.h b/libc/isystem/__memory/allocate_at_least.h new file mode 100644 index 000000000..b8806999b --- /dev/null +++ b/libc/isystem/__memory/allocate_at_least.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__memory/allocate_at_least.h" diff --git a/libc/isystem/__memory/allocation_guard.h b/libc/isystem/__memory/allocation_guard.h new file mode 100644 index 000000000..a7f3f3020 --- /dev/null +++ b/libc/isystem/__memory/allocation_guard.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__memory/allocation_guard.h" diff --git a/libc/isystem/__memory/allocator.h b/libc/isystem/__memory/allocator.h new file mode 100644 index 000000000..4460c2cfe --- /dev/null +++ b/libc/isystem/__memory/allocator.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__memory/allocator.h" diff --git a/libc/isystem/__memory/allocator_arg_t.h b/libc/isystem/__memory/allocator_arg_t.h new file mode 100644 index 000000000..8606655c2 --- /dev/null +++ b/libc/isystem/__memory/allocator_arg_t.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__memory/allocator_arg_t.h" diff --git a/libc/isystem/__memory/allocator_destructor.h b/libc/isystem/__memory/allocator_destructor.h new file mode 100644 index 000000000..9922a6ad2 --- /dev/null +++ b/libc/isystem/__memory/allocator_destructor.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__memory/allocator_destructor.h" diff --git a/libc/isystem/__memory/allocator_traits.h b/libc/isystem/__memory/allocator_traits.h new file mode 100644 index 000000000..7c0ef7fe0 --- /dev/null +++ b/libc/isystem/__memory/allocator_traits.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__memory/allocator_traits.h" diff --git a/libc/isystem/__memory/assume_aligned.h b/libc/isystem/__memory/assume_aligned.h new file mode 100644 index 000000000..816f2a513 --- /dev/null +++ b/libc/isystem/__memory/assume_aligned.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__memory/assume_aligned.h" diff --git a/libc/isystem/__memory/auto_ptr.h b/libc/isystem/__memory/auto_ptr.h new file mode 100644 index 000000000..31694389a --- /dev/null +++ b/libc/isystem/__memory/auto_ptr.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__memory/auto_ptr.h" diff --git a/libc/isystem/__memory/builtin_new_allocator.h b/libc/isystem/__memory/builtin_new_allocator.h new file mode 100644 index 000000000..f23c8a06e --- /dev/null +++ b/libc/isystem/__memory/builtin_new_allocator.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__memory/builtin_new_allocator.h" diff --git a/libc/isystem/__memory/compressed_pair.h b/libc/isystem/__memory/compressed_pair.h new file mode 100644 index 000000000..2ce22d3af --- /dev/null +++ b/libc/isystem/__memory/compressed_pair.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__memory/compressed_pair.h" diff --git a/libc/isystem/__memory/concepts.h b/libc/isystem/__memory/concepts.h new file mode 100644 index 000000000..3e8e04d19 --- /dev/null +++ b/libc/isystem/__memory/concepts.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__memory/concepts.h" diff --git a/libc/isystem/__memory/construct_at.h b/libc/isystem/__memory/construct_at.h new file mode 100644 index 000000000..612ad40b0 --- /dev/null +++ b/libc/isystem/__memory/construct_at.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__memory/construct_at.h" diff --git a/libc/isystem/__memory/destruct_n.h b/libc/isystem/__memory/destruct_n.h new file mode 100644 index 000000000..ce33b80cf --- /dev/null +++ b/libc/isystem/__memory/destruct_n.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__memory/destruct_n.h" diff --git a/libc/isystem/__memory/pointer_traits.h b/libc/isystem/__memory/pointer_traits.h new file mode 100644 index 000000000..9f3e55118 --- /dev/null +++ b/libc/isystem/__memory/pointer_traits.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__memory/pointer_traits.h" diff --git a/libc/isystem/__memory/ranges_construct_at.h b/libc/isystem/__memory/ranges_construct_at.h new file mode 100644 index 000000000..5facc37fe --- /dev/null +++ b/libc/isystem/__memory/ranges_construct_at.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__memory/ranges_construct_at.h" diff --git a/libc/isystem/__memory/ranges_uninitialized_algorithms.h b/libc/isystem/__memory/ranges_uninitialized_algorithms.h new file mode 100644 index 000000000..0cebbbb26 --- /dev/null +++ b/libc/isystem/__memory/ranges_uninitialized_algorithms.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__memory/ranges_uninitialized_algorithms.h" diff --git a/libc/isystem/__memory/raw_storage_iterator.h b/libc/isystem/__memory/raw_storage_iterator.h new file mode 100644 index 000000000..c08589f0a --- /dev/null +++ b/libc/isystem/__memory/raw_storage_iterator.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__memory/raw_storage_iterator.h" diff --git a/libc/isystem/__memory/shared_ptr.h b/libc/isystem/__memory/shared_ptr.h new file mode 100644 index 000000000..0ef2be9a7 --- /dev/null +++ b/libc/isystem/__memory/shared_ptr.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__memory/shared_ptr.h" diff --git a/libc/isystem/__memory/swap_allocator.h b/libc/isystem/__memory/swap_allocator.h new file mode 100644 index 000000000..926309208 --- /dev/null +++ b/libc/isystem/__memory/swap_allocator.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__memory/swap_allocator.h" diff --git a/libc/isystem/__memory/temp_value.h b/libc/isystem/__memory/temp_value.h new file mode 100644 index 000000000..3443ff2ce --- /dev/null +++ b/libc/isystem/__memory/temp_value.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__memory/temp_value.h" diff --git a/libc/isystem/__memory/temporary_buffer.h b/libc/isystem/__memory/temporary_buffer.h new file mode 100644 index 000000000..8e3d01430 --- /dev/null +++ b/libc/isystem/__memory/temporary_buffer.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__memory/temporary_buffer.h" diff --git a/libc/isystem/__memory/uninitialized_algorithms.h b/libc/isystem/__memory/uninitialized_algorithms.h new file mode 100644 index 000000000..ace3ba3b4 --- /dev/null +++ b/libc/isystem/__memory/uninitialized_algorithms.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__memory/uninitialized_algorithms.h" diff --git a/libc/isystem/__memory/unique_ptr.h b/libc/isystem/__memory/unique_ptr.h new file mode 100644 index 000000000..a2c62bf6e --- /dev/null +++ b/libc/isystem/__memory/unique_ptr.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__memory/unique_ptr.h" diff --git a/libc/isystem/__memory/uses_allocator.h b/libc/isystem/__memory/uses_allocator.h new file mode 100644 index 000000000..fe24b8572 --- /dev/null +++ b/libc/isystem/__memory/uses_allocator.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__memory/uses_allocator.h" diff --git a/libc/isystem/__memory/uses_allocator_construction.h b/libc/isystem/__memory/uses_allocator_construction.h new file mode 100644 index 000000000..52e3a3be8 --- /dev/null +++ b/libc/isystem/__memory/uses_allocator_construction.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__memory/uses_allocator_construction.h" diff --git a/libc/isystem/__memory/voidify.h b/libc/isystem/__memory/voidify.h new file mode 100644 index 000000000..5c7ebde6a --- /dev/null +++ b/libc/isystem/__memory/voidify.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__memory/voidify.h" diff --git a/libc/isystem/__memory_resource/memory_resource.h b/libc/isystem/__memory_resource/memory_resource.h new file mode 100644 index 000000000..b99854ba2 --- /dev/null +++ b/libc/isystem/__memory_resource/memory_resource.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__memory_resource/memory_resource.h" diff --git a/libc/isystem/__memory_resource/monotonic_buffer_resource.h b/libc/isystem/__memory_resource/monotonic_buffer_resource.h new file mode 100644 index 000000000..86a7afce1 --- /dev/null +++ b/libc/isystem/__memory_resource/monotonic_buffer_resource.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__memory_resource/monotonic_buffer_resource.h" diff --git a/libc/isystem/__memory_resource/polymorphic_allocator.h b/libc/isystem/__memory_resource/polymorphic_allocator.h new file mode 100644 index 000000000..75cb9ffc0 --- /dev/null +++ b/libc/isystem/__memory_resource/polymorphic_allocator.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__memory_resource/polymorphic_allocator.h" diff --git a/libc/isystem/__memory_resource/pool_options.h b/libc/isystem/__memory_resource/pool_options.h new file mode 100644 index 000000000..932881687 --- /dev/null +++ b/libc/isystem/__memory_resource/pool_options.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__memory_resource/pool_options.h" diff --git a/libc/isystem/__memory_resource/synchronized_pool_resource.h b/libc/isystem/__memory_resource/synchronized_pool_resource.h new file mode 100644 index 000000000..d65c0ee3d --- /dev/null +++ b/libc/isystem/__memory_resource/synchronized_pool_resource.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__memory_resource/synchronized_pool_resource.h" diff --git a/libc/isystem/__memory_resource/unsynchronized_pool_resource.h b/libc/isystem/__memory_resource/unsynchronized_pool_resource.h new file mode 100644 index 000000000..70a08c647 --- /dev/null +++ b/libc/isystem/__memory_resource/unsynchronized_pool_resource.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__memory_resource/unsynchronized_pool_resource.h" diff --git a/libc/isystem/__mutex/lock_guard.h b/libc/isystem/__mutex/lock_guard.h new file mode 100644 index 000000000..2f16fdf99 --- /dev/null +++ b/libc/isystem/__mutex/lock_guard.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__mutex/lock_guard.h" diff --git a/libc/isystem/__mutex/mutex.h b/libc/isystem/__mutex/mutex.h new file mode 100644 index 000000000..2cfbd07d0 --- /dev/null +++ b/libc/isystem/__mutex/mutex.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__mutex/mutex.h" diff --git a/libc/isystem/__mutex/tag_types.h b/libc/isystem/__mutex/tag_types.h new file mode 100644 index 000000000..ab92992ab --- /dev/null +++ b/libc/isystem/__mutex/tag_types.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__mutex/tag_types.h" diff --git a/libc/isystem/__mutex/unique_lock.h b/libc/isystem/__mutex/unique_lock.h new file mode 100644 index 000000000..beddbbc34 --- /dev/null +++ b/libc/isystem/__mutex/unique_lock.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__mutex/unique_lock.h" diff --git a/libc/isystem/__node_handle b/libc/isystem/__node_handle new file mode 100644 index 000000000..46fb2a977 --- /dev/null +++ b/libc/isystem/__node_handle @@ -0,0 +1 @@ +#include "third_party/libcxx/__node_handle" diff --git a/libc/isystem/__numeric/accumulate.h b/libc/isystem/__numeric/accumulate.h new file mode 100644 index 000000000..c6b2b5d7b --- /dev/null +++ b/libc/isystem/__numeric/accumulate.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__numeric/accumulate.h" diff --git a/libc/isystem/__numeric/adjacent_difference.h b/libc/isystem/__numeric/adjacent_difference.h new file mode 100644 index 000000000..15f6adefa --- /dev/null +++ b/libc/isystem/__numeric/adjacent_difference.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__numeric/adjacent_difference.h" diff --git a/libc/isystem/__numeric/exclusive_scan.h b/libc/isystem/__numeric/exclusive_scan.h new file mode 100644 index 000000000..3c9ac4039 --- /dev/null +++ b/libc/isystem/__numeric/exclusive_scan.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__numeric/exclusive_scan.h" diff --git a/libc/isystem/__numeric/gcd_lcm.h b/libc/isystem/__numeric/gcd_lcm.h new file mode 100644 index 000000000..da21251ac --- /dev/null +++ b/libc/isystem/__numeric/gcd_lcm.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__numeric/gcd_lcm.h" diff --git a/libc/isystem/__numeric/inclusive_scan.h b/libc/isystem/__numeric/inclusive_scan.h new file mode 100644 index 000000000..760af62db --- /dev/null +++ b/libc/isystem/__numeric/inclusive_scan.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__numeric/inclusive_scan.h" diff --git a/libc/isystem/__numeric/inner_product.h b/libc/isystem/__numeric/inner_product.h new file mode 100644 index 000000000..50ff22838 --- /dev/null +++ b/libc/isystem/__numeric/inner_product.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__numeric/inner_product.h" diff --git a/libc/isystem/__numeric/iota.h b/libc/isystem/__numeric/iota.h new file mode 100644 index 000000000..7e790b8c3 --- /dev/null +++ b/libc/isystem/__numeric/iota.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__numeric/iota.h" diff --git a/libc/isystem/__numeric/midpoint.h b/libc/isystem/__numeric/midpoint.h new file mode 100644 index 000000000..82b5eba42 --- /dev/null +++ b/libc/isystem/__numeric/midpoint.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__numeric/midpoint.h" diff --git a/libc/isystem/__numeric/partial_sum.h b/libc/isystem/__numeric/partial_sum.h new file mode 100644 index 000000000..cab9525da --- /dev/null +++ b/libc/isystem/__numeric/partial_sum.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__numeric/partial_sum.h" diff --git a/libc/isystem/__numeric/reduce.h b/libc/isystem/__numeric/reduce.h new file mode 100644 index 000000000..15f0d16d8 --- /dev/null +++ b/libc/isystem/__numeric/reduce.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__numeric/reduce.h" diff --git a/libc/isystem/__numeric/transform_exclusive_scan.h b/libc/isystem/__numeric/transform_exclusive_scan.h new file mode 100644 index 000000000..e21a234b5 --- /dev/null +++ b/libc/isystem/__numeric/transform_exclusive_scan.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__numeric/transform_exclusive_scan.h" diff --git a/libc/isystem/__numeric/transform_inclusive_scan.h b/libc/isystem/__numeric/transform_inclusive_scan.h new file mode 100644 index 000000000..df792c263 --- /dev/null +++ b/libc/isystem/__numeric/transform_inclusive_scan.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__numeric/transform_inclusive_scan.h" diff --git a/libc/isystem/__numeric/transform_reduce.h b/libc/isystem/__numeric/transform_reduce.h new file mode 100644 index 000000000..60857126d --- /dev/null +++ b/libc/isystem/__numeric/transform_reduce.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__numeric/transform_reduce.h" diff --git a/libc/isystem/__pstl/internal/algorithm_fwd.h b/libc/isystem/__pstl/internal/algorithm_fwd.h new file mode 100644 index 000000000..0ec6c87f2 --- /dev/null +++ b/libc/isystem/__pstl/internal/algorithm_fwd.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__pstl/internal/algorithm_fwd.h" diff --git a/libc/isystem/__pstl/internal/algorithm_impl.h b/libc/isystem/__pstl/internal/algorithm_impl.h new file mode 100644 index 000000000..8b95f0d63 --- /dev/null +++ b/libc/isystem/__pstl/internal/algorithm_impl.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__pstl/internal/algorithm_impl.h" diff --git a/libc/isystem/__pstl/internal/execution_defs.h b/libc/isystem/__pstl/internal/execution_defs.h new file mode 100644 index 000000000..25e27ab00 --- /dev/null +++ b/libc/isystem/__pstl/internal/execution_defs.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__pstl/internal/execution_defs.h" diff --git a/libc/isystem/__pstl/internal/execution_impl.h b/libc/isystem/__pstl/internal/execution_impl.h new file mode 100644 index 000000000..3517735c2 --- /dev/null +++ b/libc/isystem/__pstl/internal/execution_impl.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__pstl/internal/execution_impl.h" diff --git a/libc/isystem/__pstl/internal/glue_algorithm_defs.h b/libc/isystem/__pstl/internal/glue_algorithm_defs.h new file mode 100644 index 000000000..404b11ea9 --- /dev/null +++ b/libc/isystem/__pstl/internal/glue_algorithm_defs.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__pstl/internal/glue_algorithm_defs.h" diff --git a/libc/isystem/__pstl/internal/glue_algorithm_impl.h b/libc/isystem/__pstl/internal/glue_algorithm_impl.h new file mode 100644 index 000000000..6ba6ab16d --- /dev/null +++ b/libc/isystem/__pstl/internal/glue_algorithm_impl.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__pstl/internal/glue_algorithm_impl.h" diff --git a/libc/isystem/__pstl/internal/glue_memory_defs.h b/libc/isystem/__pstl/internal/glue_memory_defs.h new file mode 100644 index 000000000..3dd439cf8 --- /dev/null +++ b/libc/isystem/__pstl/internal/glue_memory_defs.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__pstl/internal/glue_memory_defs.h" diff --git a/libc/isystem/__pstl/internal/glue_memory_impl.h b/libc/isystem/__pstl/internal/glue_memory_impl.h new file mode 100644 index 000000000..6542bd695 --- /dev/null +++ b/libc/isystem/__pstl/internal/glue_memory_impl.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__pstl/internal/glue_memory_impl.h" diff --git a/libc/isystem/__pstl/internal/glue_numeric_defs.h b/libc/isystem/__pstl/internal/glue_numeric_defs.h new file mode 100644 index 000000000..f7b8b77e6 --- /dev/null +++ b/libc/isystem/__pstl/internal/glue_numeric_defs.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__pstl/internal/glue_numeric_defs.h" diff --git a/libc/isystem/__pstl/internal/glue_numeric_impl.h b/libc/isystem/__pstl/internal/glue_numeric_impl.h new file mode 100644 index 000000000..f04d6c080 --- /dev/null +++ b/libc/isystem/__pstl/internal/glue_numeric_impl.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__pstl/internal/glue_numeric_impl.h" diff --git a/libc/isystem/__pstl/internal/memory_impl.h b/libc/isystem/__pstl/internal/memory_impl.h new file mode 100644 index 000000000..d98f079b2 --- /dev/null +++ b/libc/isystem/__pstl/internal/memory_impl.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__pstl/internal/memory_impl.h" diff --git a/libc/isystem/__pstl/internal/numeric_fwd.h b/libc/isystem/__pstl/internal/numeric_fwd.h new file mode 100644 index 000000000..2a973e3a6 --- /dev/null +++ b/libc/isystem/__pstl/internal/numeric_fwd.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__pstl/internal/numeric_fwd.h" diff --git a/libc/isystem/__pstl/internal/numeric_impl.h b/libc/isystem/__pstl/internal/numeric_impl.h new file mode 100644 index 000000000..a88a76d2e --- /dev/null +++ b/libc/isystem/__pstl/internal/numeric_impl.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__pstl/internal/numeric_impl.h" diff --git a/libc/isystem/__pstl/internal/omp/parallel_for.h b/libc/isystem/__pstl/internal/omp/parallel_for.h new file mode 100644 index 000000000..bbce2cda6 --- /dev/null +++ b/libc/isystem/__pstl/internal/omp/parallel_for.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__pstl/internal/omp/parallel_for.h" diff --git a/libc/isystem/__pstl/internal/omp/parallel_for_each.h b/libc/isystem/__pstl/internal/omp/parallel_for_each.h new file mode 100644 index 000000000..4d09b34a7 --- /dev/null +++ b/libc/isystem/__pstl/internal/omp/parallel_for_each.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__pstl/internal/omp/parallel_for_each.h" diff --git a/libc/isystem/__pstl/internal/omp/parallel_invoke.h b/libc/isystem/__pstl/internal/omp/parallel_invoke.h new file mode 100644 index 000000000..11448e477 --- /dev/null +++ b/libc/isystem/__pstl/internal/omp/parallel_invoke.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__pstl/internal/omp/parallel_invoke.h" diff --git a/libc/isystem/__pstl/internal/omp/parallel_merge.h b/libc/isystem/__pstl/internal/omp/parallel_merge.h new file mode 100644 index 000000000..1d33dc8b7 --- /dev/null +++ b/libc/isystem/__pstl/internal/omp/parallel_merge.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__pstl/internal/omp/parallel_merge.h" diff --git a/libc/isystem/__pstl/internal/omp/parallel_reduce.h b/libc/isystem/__pstl/internal/omp/parallel_reduce.h new file mode 100644 index 000000000..06a5ca107 --- /dev/null +++ b/libc/isystem/__pstl/internal/omp/parallel_reduce.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__pstl/internal/omp/parallel_reduce.h" diff --git a/libc/isystem/__pstl/internal/omp/parallel_scan.h b/libc/isystem/__pstl/internal/omp/parallel_scan.h new file mode 100644 index 000000000..e7a1ee8d0 --- /dev/null +++ b/libc/isystem/__pstl/internal/omp/parallel_scan.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__pstl/internal/omp/parallel_scan.h" diff --git a/libc/isystem/__pstl/internal/omp/parallel_stable_partial_sort.h b/libc/isystem/__pstl/internal/omp/parallel_stable_partial_sort.h new file mode 100644 index 000000000..57386b22e --- /dev/null +++ b/libc/isystem/__pstl/internal/omp/parallel_stable_partial_sort.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__pstl/internal/omp/parallel_stable_partial_sort.h" diff --git a/libc/isystem/__pstl/internal/omp/parallel_stable_sort.h b/libc/isystem/__pstl/internal/omp/parallel_stable_sort.h new file mode 100644 index 000000000..c8d84edbe --- /dev/null +++ b/libc/isystem/__pstl/internal/omp/parallel_stable_sort.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__pstl/internal/omp/parallel_stable_sort.h" diff --git a/libc/isystem/__pstl/internal/omp/parallel_transform_reduce.h b/libc/isystem/__pstl/internal/omp/parallel_transform_reduce.h new file mode 100644 index 000000000..089e909b5 --- /dev/null +++ b/libc/isystem/__pstl/internal/omp/parallel_transform_reduce.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__pstl/internal/omp/parallel_transform_reduce.h" diff --git a/libc/isystem/__pstl/internal/omp/parallel_transform_scan.h b/libc/isystem/__pstl/internal/omp/parallel_transform_scan.h new file mode 100644 index 000000000..627c15f1a --- /dev/null +++ b/libc/isystem/__pstl/internal/omp/parallel_transform_scan.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__pstl/internal/omp/parallel_transform_scan.h" diff --git a/libc/isystem/__pstl/internal/omp/util.h b/libc/isystem/__pstl/internal/omp/util.h new file mode 100644 index 000000000..bd8355cf4 --- /dev/null +++ b/libc/isystem/__pstl/internal/omp/util.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__pstl/internal/omp/util.h" diff --git a/libc/isystem/__pstl/internal/parallel_backend.h b/libc/isystem/__pstl/internal/parallel_backend.h new file mode 100644 index 000000000..3231344c5 --- /dev/null +++ b/libc/isystem/__pstl/internal/parallel_backend.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__pstl/internal/parallel_backend.h" diff --git a/libc/isystem/__pstl/internal/parallel_backend_omp.h b/libc/isystem/__pstl/internal/parallel_backend_omp.h new file mode 100644 index 000000000..b5abe31ae --- /dev/null +++ b/libc/isystem/__pstl/internal/parallel_backend_omp.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__pstl/internal/parallel_backend_omp.h" diff --git a/libc/isystem/__pstl/internal/parallel_backend_serial.h b/libc/isystem/__pstl/internal/parallel_backend_serial.h new file mode 100644 index 000000000..044d2de57 --- /dev/null +++ b/libc/isystem/__pstl/internal/parallel_backend_serial.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__pstl/internal/parallel_backend_serial.h" diff --git a/libc/isystem/__pstl/internal/parallel_backend_tbb.h b/libc/isystem/__pstl/internal/parallel_backend_tbb.h new file mode 100644 index 000000000..c9310efc5 --- /dev/null +++ b/libc/isystem/__pstl/internal/parallel_backend_tbb.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__pstl/internal/parallel_backend_tbb.h" diff --git a/libc/isystem/__pstl/internal/parallel_backend_utils.h b/libc/isystem/__pstl/internal/parallel_backend_utils.h new file mode 100644 index 000000000..89f833757 --- /dev/null +++ b/libc/isystem/__pstl/internal/parallel_backend_utils.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__pstl/internal/parallel_backend_utils.h" diff --git a/libc/isystem/__pstl/internal/unseq_backend_simd.h b/libc/isystem/__pstl/internal/unseq_backend_simd.h new file mode 100644 index 000000000..ae6d5645c --- /dev/null +++ b/libc/isystem/__pstl/internal/unseq_backend_simd.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__pstl/internal/unseq_backend_simd.h" diff --git a/libc/isystem/__pstl/internal/utils.h b/libc/isystem/__pstl/internal/utils.h new file mode 100644 index 000000000..36bf3054d --- /dev/null +++ b/libc/isystem/__pstl/internal/utils.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__pstl/internal/utils.h" diff --git a/libc/isystem/__pstl_algorithm b/libc/isystem/__pstl_algorithm new file mode 100644 index 000000000..8a0d459be --- /dev/null +++ b/libc/isystem/__pstl_algorithm @@ -0,0 +1 @@ +#include "third_party/libcxx/__pstl_algorithm" diff --git a/libc/isystem/__pstl_config_site b/libc/isystem/__pstl_config_site new file mode 100644 index 000000000..492945c9d --- /dev/null +++ b/libc/isystem/__pstl_config_site @@ -0,0 +1 @@ +#include "third_party/libcxx/__pstl_config_site" diff --git a/libc/isystem/__pstl_memory b/libc/isystem/__pstl_memory new file mode 100644 index 000000000..8412f9cf5 --- /dev/null +++ b/libc/isystem/__pstl_memory @@ -0,0 +1 @@ +#include "third_party/libcxx/__pstl_memory" diff --git a/libc/isystem/__pstl_numeric b/libc/isystem/__pstl_numeric new file mode 100644 index 000000000..bf03f0a0a --- /dev/null +++ b/libc/isystem/__pstl_numeric @@ -0,0 +1 @@ +#include "third_party/libcxx/__pstl_numeric" diff --git a/libc/isystem/__random/bernoulli_distribution.h b/libc/isystem/__random/bernoulli_distribution.h new file mode 100644 index 000000000..e240f5277 --- /dev/null +++ b/libc/isystem/__random/bernoulli_distribution.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__random/bernoulli_distribution.h" diff --git a/libc/isystem/__random/binomial_distribution.h b/libc/isystem/__random/binomial_distribution.h new file mode 100644 index 000000000..ddacda8dc --- /dev/null +++ b/libc/isystem/__random/binomial_distribution.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__random/binomial_distribution.h" diff --git a/libc/isystem/__random/cauchy_distribution.h b/libc/isystem/__random/cauchy_distribution.h new file mode 100644 index 000000000..178ff7480 --- /dev/null +++ b/libc/isystem/__random/cauchy_distribution.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__random/cauchy_distribution.h" diff --git a/libc/isystem/__random/chi_squared_distribution.h b/libc/isystem/__random/chi_squared_distribution.h new file mode 100644 index 000000000..f87e342bf --- /dev/null +++ b/libc/isystem/__random/chi_squared_distribution.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__random/chi_squared_distribution.h" diff --git a/libc/isystem/__random/clamp_to_integral.h b/libc/isystem/__random/clamp_to_integral.h new file mode 100644 index 000000000..cfe92b74b --- /dev/null +++ b/libc/isystem/__random/clamp_to_integral.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__random/clamp_to_integral.h" diff --git a/libc/isystem/__random/default_random_engine.h b/libc/isystem/__random/default_random_engine.h new file mode 100644 index 000000000..2134e8dbf --- /dev/null +++ b/libc/isystem/__random/default_random_engine.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__random/default_random_engine.h" diff --git a/libc/isystem/__random/discard_block_engine.h b/libc/isystem/__random/discard_block_engine.h new file mode 100644 index 000000000..9cf79e60b --- /dev/null +++ b/libc/isystem/__random/discard_block_engine.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__random/discard_block_engine.h" diff --git a/libc/isystem/__random/discrete_distribution.h b/libc/isystem/__random/discrete_distribution.h new file mode 100644 index 000000000..5478b7da2 --- /dev/null +++ b/libc/isystem/__random/discrete_distribution.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__random/discrete_distribution.h" diff --git a/libc/isystem/__random/exponential_distribution.h b/libc/isystem/__random/exponential_distribution.h new file mode 100644 index 000000000..547b9198f --- /dev/null +++ b/libc/isystem/__random/exponential_distribution.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__random/exponential_distribution.h" diff --git a/libc/isystem/__random/extreme_value_distribution.h b/libc/isystem/__random/extreme_value_distribution.h new file mode 100644 index 000000000..df7e193de --- /dev/null +++ b/libc/isystem/__random/extreme_value_distribution.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__random/extreme_value_distribution.h" diff --git a/libc/isystem/__random/fisher_f_distribution.h b/libc/isystem/__random/fisher_f_distribution.h new file mode 100644 index 000000000..b1ac457f8 --- /dev/null +++ b/libc/isystem/__random/fisher_f_distribution.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__random/fisher_f_distribution.h" diff --git a/libc/isystem/__random/gamma_distribution.h b/libc/isystem/__random/gamma_distribution.h new file mode 100644 index 000000000..0cdde5138 --- /dev/null +++ b/libc/isystem/__random/gamma_distribution.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__random/gamma_distribution.h" diff --git a/libc/isystem/__random/generate_canonical.h b/libc/isystem/__random/generate_canonical.h new file mode 100644 index 000000000..e4737fb26 --- /dev/null +++ b/libc/isystem/__random/generate_canonical.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__random/generate_canonical.h" diff --git a/libc/isystem/__random/geometric_distribution.h b/libc/isystem/__random/geometric_distribution.h new file mode 100644 index 000000000..86cce45e4 --- /dev/null +++ b/libc/isystem/__random/geometric_distribution.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__random/geometric_distribution.h" diff --git a/libc/isystem/__random/independent_bits_engine.h b/libc/isystem/__random/independent_bits_engine.h new file mode 100644 index 000000000..76eb66d97 --- /dev/null +++ b/libc/isystem/__random/independent_bits_engine.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__random/independent_bits_engine.h" diff --git a/libc/isystem/__random/is_seed_sequence.h b/libc/isystem/__random/is_seed_sequence.h new file mode 100644 index 000000000..037f36a94 --- /dev/null +++ b/libc/isystem/__random/is_seed_sequence.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__random/is_seed_sequence.h" diff --git a/libc/isystem/__random/is_valid.h b/libc/isystem/__random/is_valid.h new file mode 100644 index 000000000..c1f871a6f --- /dev/null +++ b/libc/isystem/__random/is_valid.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__random/is_valid.h" diff --git a/libc/isystem/__random/knuth_b.h b/libc/isystem/__random/knuth_b.h new file mode 100644 index 000000000..425206b18 --- /dev/null +++ b/libc/isystem/__random/knuth_b.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__random/knuth_b.h" diff --git a/libc/isystem/__random/linear_congruential_engine.h b/libc/isystem/__random/linear_congruential_engine.h new file mode 100644 index 000000000..37826ff22 --- /dev/null +++ b/libc/isystem/__random/linear_congruential_engine.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__random/linear_congruential_engine.h" diff --git a/libc/isystem/__random/log2.h b/libc/isystem/__random/log2.h new file mode 100644 index 000000000..a6f96d734 --- /dev/null +++ b/libc/isystem/__random/log2.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__random/log2.h" diff --git a/libc/isystem/__random/lognormal_distribution.h b/libc/isystem/__random/lognormal_distribution.h new file mode 100644 index 000000000..1bc2e2f11 --- /dev/null +++ b/libc/isystem/__random/lognormal_distribution.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__random/lognormal_distribution.h" diff --git a/libc/isystem/__random/mersenne_twister_engine.h b/libc/isystem/__random/mersenne_twister_engine.h new file mode 100644 index 000000000..c1d04a247 --- /dev/null +++ b/libc/isystem/__random/mersenne_twister_engine.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__random/mersenne_twister_engine.h" diff --git a/libc/isystem/__random/negative_binomial_distribution.h b/libc/isystem/__random/negative_binomial_distribution.h new file mode 100644 index 000000000..d0ee1d480 --- /dev/null +++ b/libc/isystem/__random/negative_binomial_distribution.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__random/negative_binomial_distribution.h" diff --git a/libc/isystem/__random/normal_distribution.h b/libc/isystem/__random/normal_distribution.h new file mode 100644 index 000000000..6514d7e80 --- /dev/null +++ b/libc/isystem/__random/normal_distribution.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__random/normal_distribution.h" diff --git a/libc/isystem/__random/piecewise_constant_distribution.h b/libc/isystem/__random/piecewise_constant_distribution.h new file mode 100644 index 000000000..100ba45a0 --- /dev/null +++ b/libc/isystem/__random/piecewise_constant_distribution.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__random/piecewise_constant_distribution.h" diff --git a/libc/isystem/__random/piecewise_linear_distribution.h b/libc/isystem/__random/piecewise_linear_distribution.h new file mode 100644 index 000000000..666bee165 --- /dev/null +++ b/libc/isystem/__random/piecewise_linear_distribution.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__random/piecewise_linear_distribution.h" diff --git a/libc/isystem/__random/poisson_distribution.h b/libc/isystem/__random/poisson_distribution.h new file mode 100644 index 000000000..0b8562668 --- /dev/null +++ b/libc/isystem/__random/poisson_distribution.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__random/poisson_distribution.h" diff --git a/libc/isystem/__random/random_device.h b/libc/isystem/__random/random_device.h new file mode 100644 index 000000000..7c636db53 --- /dev/null +++ b/libc/isystem/__random/random_device.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__random/random_device.h" diff --git a/libc/isystem/__random/ranlux.h b/libc/isystem/__random/ranlux.h new file mode 100644 index 000000000..09c20cfcb --- /dev/null +++ b/libc/isystem/__random/ranlux.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__random/ranlux.h" diff --git a/libc/isystem/__random/seed_seq.h b/libc/isystem/__random/seed_seq.h new file mode 100644 index 000000000..0aa3307f6 --- /dev/null +++ b/libc/isystem/__random/seed_seq.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__random/seed_seq.h" diff --git a/libc/isystem/__random/shuffle_order_engine.h b/libc/isystem/__random/shuffle_order_engine.h new file mode 100644 index 000000000..61961bba3 --- /dev/null +++ b/libc/isystem/__random/shuffle_order_engine.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__random/shuffle_order_engine.h" diff --git a/libc/isystem/__random/student_t_distribution.h b/libc/isystem/__random/student_t_distribution.h new file mode 100644 index 000000000..faa747d85 --- /dev/null +++ b/libc/isystem/__random/student_t_distribution.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__random/student_t_distribution.h" diff --git a/libc/isystem/__random/subtract_with_carry_engine.h b/libc/isystem/__random/subtract_with_carry_engine.h new file mode 100644 index 000000000..df0e52cc8 --- /dev/null +++ b/libc/isystem/__random/subtract_with_carry_engine.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__random/subtract_with_carry_engine.h" diff --git a/libc/isystem/__random/uniform_int_distribution.h b/libc/isystem/__random/uniform_int_distribution.h new file mode 100644 index 000000000..3d14ec164 --- /dev/null +++ b/libc/isystem/__random/uniform_int_distribution.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__random/uniform_int_distribution.h" diff --git a/libc/isystem/__random/uniform_random_bit_generator.h b/libc/isystem/__random/uniform_random_bit_generator.h new file mode 100644 index 000000000..af2fd5f5c --- /dev/null +++ b/libc/isystem/__random/uniform_random_bit_generator.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__random/uniform_random_bit_generator.h" diff --git a/libc/isystem/__random/uniform_real_distribution.h b/libc/isystem/__random/uniform_real_distribution.h new file mode 100644 index 000000000..d0ee5da8b --- /dev/null +++ b/libc/isystem/__random/uniform_real_distribution.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__random/uniform_real_distribution.h" diff --git a/libc/isystem/__random/weibull_distribution.h b/libc/isystem/__random/weibull_distribution.h new file mode 100644 index 000000000..81334a3b7 --- /dev/null +++ b/libc/isystem/__random/weibull_distribution.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__random/weibull_distribution.h" diff --git a/libc/isystem/__ranges/access.h b/libc/isystem/__ranges/access.h new file mode 100644 index 000000000..6f811bdb6 --- /dev/null +++ b/libc/isystem/__ranges/access.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/access.h" diff --git a/libc/isystem/__ranges/all.h b/libc/isystem/__ranges/all.h new file mode 100644 index 000000000..bbd3f32b0 --- /dev/null +++ b/libc/isystem/__ranges/all.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/all.h" diff --git a/libc/isystem/__ranges/as_rvalue_view.h b/libc/isystem/__ranges/as_rvalue_view.h new file mode 100644 index 000000000..efda2bc13 --- /dev/null +++ b/libc/isystem/__ranges/as_rvalue_view.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/as_rvalue_view.h" diff --git a/libc/isystem/__ranges/common_view.h b/libc/isystem/__ranges/common_view.h new file mode 100644 index 000000000..ecec8365e --- /dev/null +++ b/libc/isystem/__ranges/common_view.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/common_view.h" diff --git a/libc/isystem/__ranges/concepts.h b/libc/isystem/__ranges/concepts.h new file mode 100644 index 000000000..5e3917d5b --- /dev/null +++ b/libc/isystem/__ranges/concepts.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/concepts.h" diff --git a/libc/isystem/__ranges/container_compatible_range.h b/libc/isystem/__ranges/container_compatible_range.h new file mode 100644 index 000000000..0139d6769 --- /dev/null +++ b/libc/isystem/__ranges/container_compatible_range.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/container_compatible_range.h" diff --git a/libc/isystem/__ranges/copyable_box.h b/libc/isystem/__ranges/copyable_box.h new file mode 100644 index 000000000..85dc87732 --- /dev/null +++ b/libc/isystem/__ranges/copyable_box.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/copyable_box.h" diff --git a/libc/isystem/__ranges/counted.h b/libc/isystem/__ranges/counted.h new file mode 100644 index 000000000..b455c84df --- /dev/null +++ b/libc/isystem/__ranges/counted.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/counted.h" diff --git a/libc/isystem/__ranges/dangling.h b/libc/isystem/__ranges/dangling.h new file mode 100644 index 000000000..0d4a25638 --- /dev/null +++ b/libc/isystem/__ranges/dangling.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/dangling.h" diff --git a/libc/isystem/__ranges/data.h b/libc/isystem/__ranges/data.h new file mode 100644 index 000000000..067c84437 --- /dev/null +++ b/libc/isystem/__ranges/data.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/data.h" diff --git a/libc/isystem/__ranges/drop_view.h b/libc/isystem/__ranges/drop_view.h new file mode 100644 index 000000000..22ba897fb --- /dev/null +++ b/libc/isystem/__ranges/drop_view.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/drop_view.h" diff --git a/libc/isystem/__ranges/drop_while_view.h b/libc/isystem/__ranges/drop_while_view.h new file mode 100644 index 000000000..900e498e5 --- /dev/null +++ b/libc/isystem/__ranges/drop_while_view.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/drop_while_view.h" diff --git a/libc/isystem/__ranges/elements_view.h b/libc/isystem/__ranges/elements_view.h new file mode 100644 index 000000000..1cba59aa8 --- /dev/null +++ b/libc/isystem/__ranges/elements_view.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/elements_view.h" diff --git a/libc/isystem/__ranges/empty.h b/libc/isystem/__ranges/empty.h new file mode 100644 index 000000000..4e3547c5b --- /dev/null +++ b/libc/isystem/__ranges/empty.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/empty.h" diff --git a/libc/isystem/__ranges/empty_view.h b/libc/isystem/__ranges/empty_view.h new file mode 100644 index 000000000..77c23486e --- /dev/null +++ b/libc/isystem/__ranges/empty_view.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/empty_view.h" diff --git a/libc/isystem/__ranges/enable_borrowed_range.h b/libc/isystem/__ranges/enable_borrowed_range.h new file mode 100644 index 000000000..3e451211d --- /dev/null +++ b/libc/isystem/__ranges/enable_borrowed_range.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/enable_borrowed_range.h" diff --git a/libc/isystem/__ranges/enable_view.h b/libc/isystem/__ranges/enable_view.h new file mode 100644 index 000000000..1298361b5 --- /dev/null +++ b/libc/isystem/__ranges/enable_view.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/enable_view.h" diff --git a/libc/isystem/__ranges/filter_view.h b/libc/isystem/__ranges/filter_view.h new file mode 100644 index 000000000..af4411d34 --- /dev/null +++ b/libc/isystem/__ranges/filter_view.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/filter_view.h" diff --git a/libc/isystem/__ranges/from_range.h b/libc/isystem/__ranges/from_range.h new file mode 100644 index 000000000..68fd72b7e --- /dev/null +++ b/libc/isystem/__ranges/from_range.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/from_range.h" diff --git a/libc/isystem/__ranges/iota_view.h b/libc/isystem/__ranges/iota_view.h new file mode 100644 index 000000000..f5376c75c --- /dev/null +++ b/libc/isystem/__ranges/iota_view.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/iota_view.h" diff --git a/libc/isystem/__ranges/istream_view.h b/libc/isystem/__ranges/istream_view.h new file mode 100644 index 000000000..eda421941 --- /dev/null +++ b/libc/isystem/__ranges/istream_view.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/istream_view.h" diff --git a/libc/isystem/__ranges/join_view.h b/libc/isystem/__ranges/join_view.h new file mode 100644 index 000000000..54897c651 --- /dev/null +++ b/libc/isystem/__ranges/join_view.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/join_view.h" diff --git a/libc/isystem/__ranges/lazy_split_view.h b/libc/isystem/__ranges/lazy_split_view.h new file mode 100644 index 000000000..f06c4210a --- /dev/null +++ b/libc/isystem/__ranges/lazy_split_view.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/lazy_split_view.h" diff --git a/libc/isystem/__ranges/non_propagating_cache.h b/libc/isystem/__ranges/non_propagating_cache.h new file mode 100644 index 000000000..5ea20eb1b --- /dev/null +++ b/libc/isystem/__ranges/non_propagating_cache.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/non_propagating_cache.h" diff --git a/libc/isystem/__ranges/owning_view.h b/libc/isystem/__ranges/owning_view.h new file mode 100644 index 000000000..575ea2ce8 --- /dev/null +++ b/libc/isystem/__ranges/owning_view.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/owning_view.h" diff --git a/libc/isystem/__ranges/range_adaptor.h b/libc/isystem/__ranges/range_adaptor.h new file mode 100644 index 000000000..6947a9511 --- /dev/null +++ b/libc/isystem/__ranges/range_adaptor.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/range_adaptor.h" diff --git a/libc/isystem/__ranges/rbegin.h b/libc/isystem/__ranges/rbegin.h new file mode 100644 index 000000000..f20972e47 --- /dev/null +++ b/libc/isystem/__ranges/rbegin.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/rbegin.h" diff --git a/libc/isystem/__ranges/ref_view.h b/libc/isystem/__ranges/ref_view.h new file mode 100644 index 000000000..d536ffe84 --- /dev/null +++ b/libc/isystem/__ranges/ref_view.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/ref_view.h" diff --git a/libc/isystem/__ranges/rend.h b/libc/isystem/__ranges/rend.h new file mode 100644 index 000000000..5d075f6ae --- /dev/null +++ b/libc/isystem/__ranges/rend.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/rend.h" diff --git a/libc/isystem/__ranges/reverse_view.h b/libc/isystem/__ranges/reverse_view.h new file mode 100644 index 000000000..b12903231 --- /dev/null +++ b/libc/isystem/__ranges/reverse_view.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/reverse_view.h" diff --git a/libc/isystem/__ranges/single_view.h b/libc/isystem/__ranges/single_view.h new file mode 100644 index 000000000..557ea13ff --- /dev/null +++ b/libc/isystem/__ranges/single_view.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/single_view.h" diff --git a/libc/isystem/__ranges/size.h b/libc/isystem/__ranges/size.h new file mode 100644 index 000000000..48956a294 --- /dev/null +++ b/libc/isystem/__ranges/size.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/size.h" diff --git a/libc/isystem/__ranges/split_view.h b/libc/isystem/__ranges/split_view.h new file mode 100644 index 000000000..e0a7e3b98 --- /dev/null +++ b/libc/isystem/__ranges/split_view.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/split_view.h" diff --git a/libc/isystem/__ranges/subrange.h b/libc/isystem/__ranges/subrange.h new file mode 100644 index 000000000..3f9f6267e --- /dev/null +++ b/libc/isystem/__ranges/subrange.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/subrange.h" diff --git a/libc/isystem/__ranges/take_view.h b/libc/isystem/__ranges/take_view.h new file mode 100644 index 000000000..321b84983 --- /dev/null +++ b/libc/isystem/__ranges/take_view.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/take_view.h" diff --git a/libc/isystem/__ranges/take_while_view.h b/libc/isystem/__ranges/take_while_view.h new file mode 100644 index 000000000..50a752997 --- /dev/null +++ b/libc/isystem/__ranges/take_while_view.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/take_while_view.h" diff --git a/libc/isystem/__ranges/transform_view.h b/libc/isystem/__ranges/transform_view.h new file mode 100644 index 000000000..fd58130fa --- /dev/null +++ b/libc/isystem/__ranges/transform_view.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/transform_view.h" diff --git a/libc/isystem/__ranges/view_interface.h b/libc/isystem/__ranges/view_interface.h new file mode 100644 index 000000000..d4d88d92e --- /dev/null +++ b/libc/isystem/__ranges/view_interface.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/view_interface.h" diff --git a/libc/isystem/__ranges/views.h b/libc/isystem/__ranges/views.h new file mode 100644 index 000000000..cabb6af44 --- /dev/null +++ b/libc/isystem/__ranges/views.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/views.h" diff --git a/libc/isystem/__ranges/zip_view.h b/libc/isystem/__ranges/zip_view.h new file mode 100644 index 000000000..8be240c44 --- /dev/null +++ b/libc/isystem/__ranges/zip_view.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__ranges/zip_view.h" diff --git a/libc/isystem/__split_buffer b/libc/isystem/__split_buffer new file mode 100644 index 000000000..902141724 --- /dev/null +++ b/libc/isystem/__split_buffer @@ -0,0 +1 @@ +#include "third_party/libcxx/__split_buffer" diff --git a/libc/isystem/__std_mbstate_t.h b/libc/isystem/__std_mbstate_t.h new file mode 100644 index 000000000..16e4afab1 --- /dev/null +++ b/libc/isystem/__std_mbstate_t.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__std_mbstate_t.h" diff --git a/libc/isystem/__stop_token/atomic_unique_lock.h b/libc/isystem/__stop_token/atomic_unique_lock.h new file mode 100644 index 000000000..cf7fe650d --- /dev/null +++ b/libc/isystem/__stop_token/atomic_unique_lock.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__stop_token/atomic_unique_lock.h" diff --git a/libc/isystem/__stop_token/intrusive_list_view.h b/libc/isystem/__stop_token/intrusive_list_view.h new file mode 100644 index 000000000..8cf31de7b --- /dev/null +++ b/libc/isystem/__stop_token/intrusive_list_view.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__stop_token/intrusive_list_view.h" diff --git a/libc/isystem/__stop_token/intrusive_shared_ptr.h b/libc/isystem/__stop_token/intrusive_shared_ptr.h new file mode 100644 index 000000000..4d8690f30 --- /dev/null +++ b/libc/isystem/__stop_token/intrusive_shared_ptr.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__stop_token/intrusive_shared_ptr.h" diff --git a/libc/isystem/__string/char_traits.h b/libc/isystem/__string/char_traits.h new file mode 100644 index 000000000..595ecc11d --- /dev/null +++ b/libc/isystem/__string/char_traits.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__string/char_traits.h" diff --git a/libc/isystem/__string/constexpr_c_functions.h b/libc/isystem/__string/constexpr_c_functions.h new file mode 100644 index 000000000..43b738d8c --- /dev/null +++ b/libc/isystem/__string/constexpr_c_functions.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__string/constexpr_c_functions.h" diff --git a/libc/isystem/__string/extern_template_lists.h b/libc/isystem/__string/extern_template_lists.h new file mode 100644 index 000000000..21ed1bd1e --- /dev/null +++ b/libc/isystem/__string/extern_template_lists.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__string/extern_template_lists.h" diff --git a/libc/isystem/__support/android/locale_bionic.h b/libc/isystem/__support/android/locale_bionic.h new file mode 100644 index 000000000..fda130e29 --- /dev/null +++ b/libc/isystem/__support/android/locale_bionic.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__support/android/locale_bionic.h" diff --git a/libc/isystem/__support/fuchsia/xlocale.h b/libc/isystem/__support/fuchsia/xlocale.h new file mode 100644 index 000000000..d1009593c --- /dev/null +++ b/libc/isystem/__support/fuchsia/xlocale.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__support/fuchsia/xlocale.h" diff --git a/libc/isystem/__support/ibm/gettod_zos.h b/libc/isystem/__support/ibm/gettod_zos.h new file mode 100644 index 000000000..c16419704 --- /dev/null +++ b/libc/isystem/__support/ibm/gettod_zos.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__support/ibm/gettod_zos.h" diff --git a/libc/isystem/__support/ibm/locale_mgmt_zos.h b/libc/isystem/__support/ibm/locale_mgmt_zos.h new file mode 100644 index 000000000..fb69a30cf --- /dev/null +++ b/libc/isystem/__support/ibm/locale_mgmt_zos.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__support/ibm/locale_mgmt_zos.h" diff --git a/libc/isystem/__support/ibm/nanosleep.h b/libc/isystem/__support/ibm/nanosleep.h new file mode 100644 index 000000000..9a371298a --- /dev/null +++ b/libc/isystem/__support/ibm/nanosleep.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__support/ibm/nanosleep.h" diff --git a/libc/isystem/__support/ibm/xlocale.h b/libc/isystem/__support/ibm/xlocale.h new file mode 100644 index 000000000..91f0cfaae --- /dev/null +++ b/libc/isystem/__support/ibm/xlocale.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__support/ibm/xlocale.h" diff --git a/libc/isystem/__support/musl/xlocale.h b/libc/isystem/__support/musl/xlocale.h new file mode 100644 index 000000000..6adc3cfa5 --- /dev/null +++ b/libc/isystem/__support/musl/xlocale.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__support/musl/xlocale.h" diff --git a/libc/isystem/__support/newlib/xlocale.h b/libc/isystem/__support/newlib/xlocale.h new file mode 100644 index 000000000..0e48c4211 --- /dev/null +++ b/libc/isystem/__support/newlib/xlocale.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__support/newlib/xlocale.h" diff --git a/libc/isystem/__support/openbsd/xlocale.h b/libc/isystem/__support/openbsd/xlocale.h new file mode 100644 index 000000000..42661d821 --- /dev/null +++ b/libc/isystem/__support/openbsd/xlocale.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__support/openbsd/xlocale.h" diff --git a/libc/isystem/__support/win32/locale_win32.h b/libc/isystem/__support/win32/locale_win32.h new file mode 100644 index 000000000..3a35381fa --- /dev/null +++ b/libc/isystem/__support/win32/locale_win32.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__support/win32/locale_win32.h" diff --git a/libc/isystem/__support/xlocale/__nop_locale_mgmt.h b/libc/isystem/__support/xlocale/__nop_locale_mgmt.h new file mode 100644 index 000000000..2fb6f4d0d --- /dev/null +++ b/libc/isystem/__support/xlocale/__nop_locale_mgmt.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__support/xlocale/__nop_locale_mgmt.h" diff --git a/libc/isystem/__support/xlocale/__posix_l_fallback.h b/libc/isystem/__support/xlocale/__posix_l_fallback.h new file mode 100644 index 000000000..3d36f53b6 --- /dev/null +++ b/libc/isystem/__support/xlocale/__posix_l_fallback.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__support/xlocale/__posix_l_fallback.h" diff --git a/libc/isystem/__support/xlocale/__strtonum_fallback.h b/libc/isystem/__support/xlocale/__strtonum_fallback.h new file mode 100644 index 000000000..56345c0e3 --- /dev/null +++ b/libc/isystem/__support/xlocale/__strtonum_fallback.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__support/xlocale/__strtonum_fallback.h" diff --git a/libc/isystem/__system_error/errc.h b/libc/isystem/__system_error/errc.h new file mode 100644 index 000000000..316ed06a1 --- /dev/null +++ b/libc/isystem/__system_error/errc.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__system_error/errc.h" diff --git a/libc/isystem/__system_error/error_category.h b/libc/isystem/__system_error/error_category.h new file mode 100644 index 000000000..614dd4e08 --- /dev/null +++ b/libc/isystem/__system_error/error_category.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__system_error/error_category.h" diff --git a/libc/isystem/__system_error/error_code.h b/libc/isystem/__system_error/error_code.h new file mode 100644 index 000000000..ac222e5de --- /dev/null +++ b/libc/isystem/__system_error/error_code.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__system_error/error_code.h" diff --git a/libc/isystem/__system_error/error_condition.h b/libc/isystem/__system_error/error_condition.h new file mode 100644 index 000000000..b401abeb4 --- /dev/null +++ b/libc/isystem/__system_error/error_condition.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__system_error/error_condition.h" diff --git a/libc/isystem/__system_error/system_error.h b/libc/isystem/__system_error/system_error.h new file mode 100644 index 000000000..058736285 --- /dev/null +++ b/libc/isystem/__system_error/system_error.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__system_error/system_error.h" diff --git a/libc/isystem/__thread/poll_with_backoff.h b/libc/isystem/__thread/poll_with_backoff.h new file mode 100644 index 000000000..d30bc37e3 --- /dev/null +++ b/libc/isystem/__thread/poll_with_backoff.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__thread/poll_with_backoff.h" diff --git a/libc/isystem/__thread/timed_backoff_policy.h b/libc/isystem/__thread/timed_backoff_policy.h new file mode 100644 index 000000000..daaa7d605 --- /dev/null +++ b/libc/isystem/__thread/timed_backoff_policy.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__thread/timed_backoff_policy.h" diff --git a/libc/isystem/__threading_support b/libc/isystem/__threading_support new file mode 100644 index 000000000..118b4ff82 --- /dev/null +++ b/libc/isystem/__threading_support @@ -0,0 +1 @@ +#include "third_party/libcxx/__threading_support" diff --git a/libc/isystem/__tree b/libc/isystem/__tree new file mode 100644 index 000000000..58ced574a --- /dev/null +++ b/libc/isystem/__tree @@ -0,0 +1 @@ +#include "third_party/libcxx/__tree" diff --git a/libc/isystem/__tuple/make_tuple_types.h b/libc/isystem/__tuple/make_tuple_types.h new file mode 100644 index 000000000..b8cb61f50 --- /dev/null +++ b/libc/isystem/__tuple/make_tuple_types.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__tuple/make_tuple_types.h" diff --git a/libc/isystem/__tuple/pair_like.h b/libc/isystem/__tuple/pair_like.h new file mode 100644 index 000000000..f0af1bb9f --- /dev/null +++ b/libc/isystem/__tuple/pair_like.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__tuple/pair_like.h" diff --git a/libc/isystem/__tuple/sfinae_helpers.h b/libc/isystem/__tuple/sfinae_helpers.h new file mode 100644 index 000000000..b303e7b90 --- /dev/null +++ b/libc/isystem/__tuple/sfinae_helpers.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__tuple/sfinae_helpers.h" diff --git a/libc/isystem/__tuple/tuple_element.h b/libc/isystem/__tuple/tuple_element.h new file mode 100644 index 000000000..bad24fc7b --- /dev/null +++ b/libc/isystem/__tuple/tuple_element.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__tuple/tuple_element.h" diff --git a/libc/isystem/__tuple/tuple_indices.h b/libc/isystem/__tuple/tuple_indices.h new file mode 100644 index 000000000..8e95917fe --- /dev/null +++ b/libc/isystem/__tuple/tuple_indices.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__tuple/tuple_indices.h" diff --git a/libc/isystem/__tuple/tuple_like.h b/libc/isystem/__tuple/tuple_like.h new file mode 100644 index 000000000..12f6324f4 --- /dev/null +++ b/libc/isystem/__tuple/tuple_like.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__tuple/tuple_like.h" diff --git a/libc/isystem/__tuple/tuple_like_ext.h b/libc/isystem/__tuple/tuple_like_ext.h new file mode 100644 index 000000000..48bda7deb --- /dev/null +++ b/libc/isystem/__tuple/tuple_like_ext.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__tuple/tuple_like_ext.h" diff --git a/libc/isystem/__tuple/tuple_size.h b/libc/isystem/__tuple/tuple_size.h new file mode 100644 index 000000000..7efcc527e --- /dev/null +++ b/libc/isystem/__tuple/tuple_size.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__tuple/tuple_size.h" diff --git a/libc/isystem/__tuple/tuple_types.h b/libc/isystem/__tuple/tuple_types.h new file mode 100644 index 000000000..9f27a4acc --- /dev/null +++ b/libc/isystem/__tuple/tuple_types.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__tuple/tuple_types.h" diff --git a/libc/isystem/__type_traits/add_const.h b/libc/isystem/__type_traits/add_const.h new file mode 100644 index 000000000..f9f9622df --- /dev/null +++ b/libc/isystem/__type_traits/add_const.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/add_const.h" diff --git a/libc/isystem/__type_traits/add_cv.h b/libc/isystem/__type_traits/add_cv.h new file mode 100644 index 000000000..9a012ffbb --- /dev/null +++ b/libc/isystem/__type_traits/add_cv.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/add_cv.h" diff --git a/libc/isystem/__type_traits/add_lvalue_reference.h b/libc/isystem/__type_traits/add_lvalue_reference.h new file mode 100644 index 000000000..af6e976da --- /dev/null +++ b/libc/isystem/__type_traits/add_lvalue_reference.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/add_lvalue_reference.h" diff --git a/libc/isystem/__type_traits/add_pointer.h b/libc/isystem/__type_traits/add_pointer.h new file mode 100644 index 000000000..fd3665007 --- /dev/null +++ b/libc/isystem/__type_traits/add_pointer.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/add_pointer.h" diff --git a/libc/isystem/__type_traits/add_rvalue_reference.h b/libc/isystem/__type_traits/add_rvalue_reference.h new file mode 100644 index 000000000..4cdf48028 --- /dev/null +++ b/libc/isystem/__type_traits/add_rvalue_reference.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/add_rvalue_reference.h" diff --git a/libc/isystem/__type_traits/add_volatile.h b/libc/isystem/__type_traits/add_volatile.h new file mode 100644 index 000000000..73082c9e6 --- /dev/null +++ b/libc/isystem/__type_traits/add_volatile.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/add_volatile.h" diff --git a/libc/isystem/__type_traits/aligned_storage.h b/libc/isystem/__type_traits/aligned_storage.h new file mode 100644 index 000000000..3ee11fc58 --- /dev/null +++ b/libc/isystem/__type_traits/aligned_storage.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/aligned_storage.h" diff --git a/libc/isystem/__type_traits/aligned_union.h b/libc/isystem/__type_traits/aligned_union.h new file mode 100644 index 000000000..c83dff35c --- /dev/null +++ b/libc/isystem/__type_traits/aligned_union.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/aligned_union.h" diff --git a/libc/isystem/__type_traits/alignment_of.h b/libc/isystem/__type_traits/alignment_of.h new file mode 100644 index 000000000..8cca54a65 --- /dev/null +++ b/libc/isystem/__type_traits/alignment_of.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/alignment_of.h" diff --git a/libc/isystem/__type_traits/apply_cv.h b/libc/isystem/__type_traits/apply_cv.h new file mode 100644 index 000000000..c7465dd1a --- /dev/null +++ b/libc/isystem/__type_traits/apply_cv.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/apply_cv.h" diff --git a/libc/isystem/__type_traits/can_extract_key.h b/libc/isystem/__type_traits/can_extract_key.h new file mode 100644 index 000000000..bf477ffa5 --- /dev/null +++ b/libc/isystem/__type_traits/can_extract_key.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/can_extract_key.h" diff --git a/libc/isystem/__type_traits/common_reference.h b/libc/isystem/__type_traits/common_reference.h new file mode 100644 index 000000000..abd2af421 --- /dev/null +++ b/libc/isystem/__type_traits/common_reference.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/common_reference.h" diff --git a/libc/isystem/__type_traits/common_type.h b/libc/isystem/__type_traits/common_type.h new file mode 100644 index 000000000..61fc9f099 --- /dev/null +++ b/libc/isystem/__type_traits/common_type.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/common_type.h" diff --git a/libc/isystem/__type_traits/conditional.h b/libc/isystem/__type_traits/conditional.h new file mode 100644 index 000000000..d14de120c --- /dev/null +++ b/libc/isystem/__type_traits/conditional.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/conditional.h" diff --git a/libc/isystem/__type_traits/conjunction.h b/libc/isystem/__type_traits/conjunction.h new file mode 100644 index 000000000..cd73d37bb --- /dev/null +++ b/libc/isystem/__type_traits/conjunction.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/conjunction.h" diff --git a/libc/isystem/__type_traits/copy_cv.h b/libc/isystem/__type_traits/copy_cv.h new file mode 100644 index 000000000..aa6d3fd76 --- /dev/null +++ b/libc/isystem/__type_traits/copy_cv.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/copy_cv.h" diff --git a/libc/isystem/__type_traits/copy_cvref.h b/libc/isystem/__type_traits/copy_cvref.h new file mode 100644 index 000000000..b3f60045d --- /dev/null +++ b/libc/isystem/__type_traits/copy_cvref.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/copy_cvref.h" diff --git a/libc/isystem/__type_traits/decay.h b/libc/isystem/__type_traits/decay.h new file mode 100644 index 000000000..5f073bd3d --- /dev/null +++ b/libc/isystem/__type_traits/decay.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/decay.h" diff --git a/libc/isystem/__type_traits/dependent_type.h b/libc/isystem/__type_traits/dependent_type.h new file mode 100644 index 000000000..fb4558646 --- /dev/null +++ b/libc/isystem/__type_traits/dependent_type.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/dependent_type.h" diff --git a/libc/isystem/__type_traits/disjunction.h b/libc/isystem/__type_traits/disjunction.h new file mode 100644 index 000000000..9089736d6 --- /dev/null +++ b/libc/isystem/__type_traits/disjunction.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/disjunction.h" diff --git a/libc/isystem/__type_traits/enable_if.h b/libc/isystem/__type_traits/enable_if.h new file mode 100644 index 000000000..834849bec --- /dev/null +++ b/libc/isystem/__type_traits/enable_if.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/enable_if.h" diff --git a/libc/isystem/__type_traits/extent.h b/libc/isystem/__type_traits/extent.h new file mode 100644 index 000000000..b796acdc0 --- /dev/null +++ b/libc/isystem/__type_traits/extent.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/extent.h" diff --git a/libc/isystem/__type_traits/has_unique_object_representation.h b/libc/isystem/__type_traits/has_unique_object_representation.h new file mode 100644 index 000000000..81b1b6835 --- /dev/null +++ b/libc/isystem/__type_traits/has_unique_object_representation.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/has_unique_object_representation.h" diff --git a/libc/isystem/__type_traits/has_virtual_destructor.h b/libc/isystem/__type_traits/has_virtual_destructor.h new file mode 100644 index 000000000..2c55e7dd7 --- /dev/null +++ b/libc/isystem/__type_traits/has_virtual_destructor.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/has_virtual_destructor.h" diff --git a/libc/isystem/__type_traits/integral_constant.h b/libc/isystem/__type_traits/integral_constant.h new file mode 100644 index 000000000..e2998650e --- /dev/null +++ b/libc/isystem/__type_traits/integral_constant.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/integral_constant.h" diff --git a/libc/isystem/__type_traits/invoke.h b/libc/isystem/__type_traits/invoke.h new file mode 100644 index 000000000..8bcb03c23 --- /dev/null +++ b/libc/isystem/__type_traits/invoke.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/invoke.h" diff --git a/libc/isystem/__type_traits/is_abstract.h b/libc/isystem/__type_traits/is_abstract.h new file mode 100644 index 000000000..7af736c48 --- /dev/null +++ b/libc/isystem/__type_traits/is_abstract.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_abstract.h" diff --git a/libc/isystem/__type_traits/is_aggregate.h b/libc/isystem/__type_traits/is_aggregate.h new file mode 100644 index 000000000..751dddd65 --- /dev/null +++ b/libc/isystem/__type_traits/is_aggregate.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_aggregate.h" diff --git a/libc/isystem/__type_traits/is_allocator.h b/libc/isystem/__type_traits/is_allocator.h new file mode 100644 index 000000000..1149f184c --- /dev/null +++ b/libc/isystem/__type_traits/is_allocator.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_allocator.h" diff --git a/libc/isystem/__type_traits/is_always_bitcastable.h b/libc/isystem/__type_traits/is_always_bitcastable.h new file mode 100644 index 000000000..167d6adff --- /dev/null +++ b/libc/isystem/__type_traits/is_always_bitcastable.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_always_bitcastable.h" diff --git a/libc/isystem/__type_traits/is_arithmetic.h b/libc/isystem/__type_traits/is_arithmetic.h new file mode 100644 index 000000000..1daf36b39 --- /dev/null +++ b/libc/isystem/__type_traits/is_arithmetic.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_arithmetic.h" diff --git a/libc/isystem/__type_traits/is_array.h b/libc/isystem/__type_traits/is_array.h new file mode 100644 index 000000000..510e0533b --- /dev/null +++ b/libc/isystem/__type_traits/is_array.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_array.h" diff --git a/libc/isystem/__type_traits/is_assignable.h b/libc/isystem/__type_traits/is_assignable.h new file mode 100644 index 000000000..feb481cfa --- /dev/null +++ b/libc/isystem/__type_traits/is_assignable.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_assignable.h" diff --git a/libc/isystem/__type_traits/is_base_of.h b/libc/isystem/__type_traits/is_base_of.h new file mode 100644 index 000000000..44c6370a7 --- /dev/null +++ b/libc/isystem/__type_traits/is_base_of.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_base_of.h" diff --git a/libc/isystem/__type_traits/is_bounded_array.h b/libc/isystem/__type_traits/is_bounded_array.h new file mode 100644 index 000000000..779a4c3d2 --- /dev/null +++ b/libc/isystem/__type_traits/is_bounded_array.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_bounded_array.h" diff --git a/libc/isystem/__type_traits/is_callable.h b/libc/isystem/__type_traits/is_callable.h new file mode 100644 index 000000000..55bb174ca --- /dev/null +++ b/libc/isystem/__type_traits/is_callable.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_callable.h" diff --git a/libc/isystem/__type_traits/is_char_like_type.h b/libc/isystem/__type_traits/is_char_like_type.h new file mode 100644 index 000000000..fe739ebb0 --- /dev/null +++ b/libc/isystem/__type_traits/is_char_like_type.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_char_like_type.h" diff --git a/libc/isystem/__type_traits/is_class.h b/libc/isystem/__type_traits/is_class.h new file mode 100644 index 000000000..765c0e65c --- /dev/null +++ b/libc/isystem/__type_traits/is_class.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_class.h" diff --git a/libc/isystem/__type_traits/is_compound.h b/libc/isystem/__type_traits/is_compound.h new file mode 100644 index 000000000..190ae4953 --- /dev/null +++ b/libc/isystem/__type_traits/is_compound.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_compound.h" diff --git a/libc/isystem/__type_traits/is_const.h b/libc/isystem/__type_traits/is_const.h new file mode 100644 index 000000000..13a04ef03 --- /dev/null +++ b/libc/isystem/__type_traits/is_const.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_const.h" diff --git a/libc/isystem/__type_traits/is_constant_evaluated.h b/libc/isystem/__type_traits/is_constant_evaluated.h new file mode 100644 index 000000000..f83dd12a7 --- /dev/null +++ b/libc/isystem/__type_traits/is_constant_evaluated.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_constant_evaluated.h" diff --git a/libc/isystem/__type_traits/is_constructible.h b/libc/isystem/__type_traits/is_constructible.h new file mode 100644 index 000000000..ff75c90f2 --- /dev/null +++ b/libc/isystem/__type_traits/is_constructible.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_constructible.h" diff --git a/libc/isystem/__type_traits/is_convertible.h b/libc/isystem/__type_traits/is_convertible.h new file mode 100644 index 000000000..47941c5eb --- /dev/null +++ b/libc/isystem/__type_traits/is_convertible.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_convertible.h" diff --git a/libc/isystem/__type_traits/is_copy_assignable.h b/libc/isystem/__type_traits/is_copy_assignable.h new file mode 100644 index 000000000..55f36e99d --- /dev/null +++ b/libc/isystem/__type_traits/is_copy_assignable.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_copy_assignable.h" diff --git a/libc/isystem/__type_traits/is_copy_constructible.h b/libc/isystem/__type_traits/is_copy_constructible.h new file mode 100644 index 000000000..279a7fcee --- /dev/null +++ b/libc/isystem/__type_traits/is_copy_constructible.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_copy_constructible.h" diff --git a/libc/isystem/__type_traits/is_core_convertible.h b/libc/isystem/__type_traits/is_core_convertible.h new file mode 100644 index 000000000..4f62f122e --- /dev/null +++ b/libc/isystem/__type_traits/is_core_convertible.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_core_convertible.h" diff --git a/libc/isystem/__type_traits/is_default_constructible.h b/libc/isystem/__type_traits/is_default_constructible.h new file mode 100644 index 000000000..550bd34e6 --- /dev/null +++ b/libc/isystem/__type_traits/is_default_constructible.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_default_constructible.h" diff --git a/libc/isystem/__type_traits/is_destructible.h b/libc/isystem/__type_traits/is_destructible.h new file mode 100644 index 000000000..20e16dd9b --- /dev/null +++ b/libc/isystem/__type_traits/is_destructible.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_destructible.h" diff --git a/libc/isystem/__type_traits/is_empty.h b/libc/isystem/__type_traits/is_empty.h new file mode 100644 index 000000000..0b67f378d --- /dev/null +++ b/libc/isystem/__type_traits/is_empty.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_empty.h" diff --git a/libc/isystem/__type_traits/is_enum.h b/libc/isystem/__type_traits/is_enum.h new file mode 100644 index 000000000..db7f368e3 --- /dev/null +++ b/libc/isystem/__type_traits/is_enum.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_enum.h" diff --git a/libc/isystem/__type_traits/is_equality_comparable.h b/libc/isystem/__type_traits/is_equality_comparable.h new file mode 100644 index 000000000..008522fa8 --- /dev/null +++ b/libc/isystem/__type_traits/is_equality_comparable.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_equality_comparable.h" diff --git a/libc/isystem/__type_traits/is_execution_policy.h b/libc/isystem/__type_traits/is_execution_policy.h new file mode 100644 index 000000000..dc634945f --- /dev/null +++ b/libc/isystem/__type_traits/is_execution_policy.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_execution_policy.h" diff --git a/libc/isystem/__type_traits/is_final.h b/libc/isystem/__type_traits/is_final.h new file mode 100644 index 000000000..6876cbfeb --- /dev/null +++ b/libc/isystem/__type_traits/is_final.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_final.h" diff --git a/libc/isystem/__type_traits/is_floating_point.h b/libc/isystem/__type_traits/is_floating_point.h new file mode 100644 index 000000000..a9d8bd5b8 --- /dev/null +++ b/libc/isystem/__type_traits/is_floating_point.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_floating_point.h" diff --git a/libc/isystem/__type_traits/is_function.h b/libc/isystem/__type_traits/is_function.h new file mode 100644 index 000000000..20126bba3 --- /dev/null +++ b/libc/isystem/__type_traits/is_function.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_function.h" diff --git a/libc/isystem/__type_traits/is_fundamental.h b/libc/isystem/__type_traits/is_fundamental.h new file mode 100644 index 000000000..29d4b6e2d --- /dev/null +++ b/libc/isystem/__type_traits/is_fundamental.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_fundamental.h" diff --git a/libc/isystem/__type_traits/is_implicitly_default_constructible.h b/libc/isystem/__type_traits/is_implicitly_default_constructible.h new file mode 100644 index 000000000..6f51771da --- /dev/null +++ b/libc/isystem/__type_traits/is_implicitly_default_constructible.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_implicitly_default_constructible.h" diff --git a/libc/isystem/__type_traits/is_integral.h b/libc/isystem/__type_traits/is_integral.h new file mode 100644 index 000000000..9c206e3d6 --- /dev/null +++ b/libc/isystem/__type_traits/is_integral.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_integral.h" diff --git a/libc/isystem/__type_traits/is_literal_type.h b/libc/isystem/__type_traits/is_literal_type.h new file mode 100644 index 000000000..45ca76824 --- /dev/null +++ b/libc/isystem/__type_traits/is_literal_type.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_literal_type.h" diff --git a/libc/isystem/__type_traits/is_member_function_pointer.h b/libc/isystem/__type_traits/is_member_function_pointer.h new file mode 100644 index 000000000..35dd4ff62 --- /dev/null +++ b/libc/isystem/__type_traits/is_member_function_pointer.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_member_function_pointer.h" diff --git a/libc/isystem/__type_traits/is_member_object_pointer.h b/libc/isystem/__type_traits/is_member_object_pointer.h new file mode 100644 index 000000000..b3416ddbc --- /dev/null +++ b/libc/isystem/__type_traits/is_member_object_pointer.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_member_object_pointer.h" diff --git a/libc/isystem/__type_traits/is_member_pointer.h b/libc/isystem/__type_traits/is_member_pointer.h new file mode 100644 index 000000000..bf0f9074a --- /dev/null +++ b/libc/isystem/__type_traits/is_member_pointer.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_member_pointer.h" diff --git a/libc/isystem/__type_traits/is_move_assignable.h b/libc/isystem/__type_traits/is_move_assignable.h new file mode 100644 index 000000000..ff502b025 --- /dev/null +++ b/libc/isystem/__type_traits/is_move_assignable.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_move_assignable.h" diff --git a/libc/isystem/__type_traits/is_move_constructible.h b/libc/isystem/__type_traits/is_move_constructible.h new file mode 100644 index 000000000..86dc68397 --- /dev/null +++ b/libc/isystem/__type_traits/is_move_constructible.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_move_constructible.h" diff --git a/libc/isystem/__type_traits/is_nothrow_assignable.h b/libc/isystem/__type_traits/is_nothrow_assignable.h new file mode 100644 index 000000000..0ecb04386 --- /dev/null +++ b/libc/isystem/__type_traits/is_nothrow_assignable.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_nothrow_assignable.h" diff --git a/libc/isystem/__type_traits/is_nothrow_constructible.h b/libc/isystem/__type_traits/is_nothrow_constructible.h new file mode 100644 index 000000000..78062675e --- /dev/null +++ b/libc/isystem/__type_traits/is_nothrow_constructible.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_nothrow_constructible.h" diff --git a/libc/isystem/__type_traits/is_nothrow_convertible.h b/libc/isystem/__type_traits/is_nothrow_convertible.h new file mode 100644 index 000000000..a9e7da15a --- /dev/null +++ b/libc/isystem/__type_traits/is_nothrow_convertible.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_nothrow_convertible.h" diff --git a/libc/isystem/__type_traits/is_nothrow_copy_assignable.h b/libc/isystem/__type_traits/is_nothrow_copy_assignable.h new file mode 100644 index 000000000..88d02b91d --- /dev/null +++ b/libc/isystem/__type_traits/is_nothrow_copy_assignable.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_nothrow_copy_assignable.h" diff --git a/libc/isystem/__type_traits/is_nothrow_copy_constructible.h b/libc/isystem/__type_traits/is_nothrow_copy_constructible.h new file mode 100644 index 000000000..ca1961fb1 --- /dev/null +++ b/libc/isystem/__type_traits/is_nothrow_copy_constructible.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_nothrow_copy_constructible.h" diff --git a/libc/isystem/__type_traits/is_nothrow_default_constructible.h b/libc/isystem/__type_traits/is_nothrow_default_constructible.h new file mode 100644 index 000000000..ed62c54cb --- /dev/null +++ b/libc/isystem/__type_traits/is_nothrow_default_constructible.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_nothrow_default_constructible.h" diff --git a/libc/isystem/__type_traits/is_nothrow_destructible.h b/libc/isystem/__type_traits/is_nothrow_destructible.h new file mode 100644 index 000000000..07530bbc1 --- /dev/null +++ b/libc/isystem/__type_traits/is_nothrow_destructible.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_nothrow_destructible.h" diff --git a/libc/isystem/__type_traits/is_nothrow_move_assignable.h b/libc/isystem/__type_traits/is_nothrow_move_assignable.h new file mode 100644 index 000000000..34b36de9a --- /dev/null +++ b/libc/isystem/__type_traits/is_nothrow_move_assignable.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_nothrow_move_assignable.h" diff --git a/libc/isystem/__type_traits/is_nothrow_move_constructible.h b/libc/isystem/__type_traits/is_nothrow_move_constructible.h new file mode 100644 index 000000000..551fd299b --- /dev/null +++ b/libc/isystem/__type_traits/is_nothrow_move_constructible.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_nothrow_move_constructible.h" diff --git a/libc/isystem/__type_traits/is_null_pointer.h b/libc/isystem/__type_traits/is_null_pointer.h new file mode 100644 index 000000000..34126db4f --- /dev/null +++ b/libc/isystem/__type_traits/is_null_pointer.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_null_pointer.h" diff --git a/libc/isystem/__type_traits/is_object.h b/libc/isystem/__type_traits/is_object.h new file mode 100644 index 000000000..12726de25 --- /dev/null +++ b/libc/isystem/__type_traits/is_object.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_object.h" diff --git a/libc/isystem/__type_traits/is_pod.h b/libc/isystem/__type_traits/is_pod.h new file mode 100644 index 000000000..564d5b017 --- /dev/null +++ b/libc/isystem/__type_traits/is_pod.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_pod.h" diff --git a/libc/isystem/__type_traits/is_pointer.h b/libc/isystem/__type_traits/is_pointer.h new file mode 100644 index 000000000..5a790de23 --- /dev/null +++ b/libc/isystem/__type_traits/is_pointer.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_pointer.h" diff --git a/libc/isystem/__type_traits/is_polymorphic.h b/libc/isystem/__type_traits/is_polymorphic.h new file mode 100644 index 000000000..31f16c24a --- /dev/null +++ b/libc/isystem/__type_traits/is_polymorphic.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_polymorphic.h" diff --git a/libc/isystem/__type_traits/is_primary_template.h b/libc/isystem/__type_traits/is_primary_template.h new file mode 100644 index 000000000..4efbc8287 --- /dev/null +++ b/libc/isystem/__type_traits/is_primary_template.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_primary_template.h" diff --git a/libc/isystem/__type_traits/is_reference.h b/libc/isystem/__type_traits/is_reference.h new file mode 100644 index 000000000..5d612d1bc --- /dev/null +++ b/libc/isystem/__type_traits/is_reference.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_reference.h" diff --git a/libc/isystem/__type_traits/is_reference_wrapper.h b/libc/isystem/__type_traits/is_reference_wrapper.h new file mode 100644 index 000000000..e5cde5867 --- /dev/null +++ b/libc/isystem/__type_traits/is_reference_wrapper.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_reference_wrapper.h" diff --git a/libc/isystem/__type_traits/is_referenceable.h b/libc/isystem/__type_traits/is_referenceable.h new file mode 100644 index 000000000..355e8ba81 --- /dev/null +++ b/libc/isystem/__type_traits/is_referenceable.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_referenceable.h" diff --git a/libc/isystem/__type_traits/is_same.h b/libc/isystem/__type_traits/is_same.h new file mode 100644 index 000000000..3eb4654e9 --- /dev/null +++ b/libc/isystem/__type_traits/is_same.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_same.h" diff --git a/libc/isystem/__type_traits/is_scalar.h b/libc/isystem/__type_traits/is_scalar.h new file mode 100644 index 000000000..e7b943bd1 --- /dev/null +++ b/libc/isystem/__type_traits/is_scalar.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_scalar.h" diff --git a/libc/isystem/__type_traits/is_scoped_enum.h b/libc/isystem/__type_traits/is_scoped_enum.h new file mode 100644 index 000000000..6d10abec5 --- /dev/null +++ b/libc/isystem/__type_traits/is_scoped_enum.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_scoped_enum.h" diff --git a/libc/isystem/__type_traits/is_signed.h b/libc/isystem/__type_traits/is_signed.h new file mode 100644 index 000000000..cb478ab69 --- /dev/null +++ b/libc/isystem/__type_traits/is_signed.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_signed.h" diff --git a/libc/isystem/__type_traits/is_signed_integer.h b/libc/isystem/__type_traits/is_signed_integer.h new file mode 100644 index 000000000..bcbb428ba --- /dev/null +++ b/libc/isystem/__type_traits/is_signed_integer.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_signed_integer.h" diff --git a/libc/isystem/__type_traits/is_specialization.h b/libc/isystem/__type_traits/is_specialization.h new file mode 100644 index 000000000..eb5d1b280 --- /dev/null +++ b/libc/isystem/__type_traits/is_specialization.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_specialization.h" diff --git a/libc/isystem/__type_traits/is_standard_layout.h b/libc/isystem/__type_traits/is_standard_layout.h new file mode 100644 index 000000000..c930c71dc --- /dev/null +++ b/libc/isystem/__type_traits/is_standard_layout.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_standard_layout.h" diff --git a/libc/isystem/__type_traits/is_swappable.h b/libc/isystem/__type_traits/is_swappable.h new file mode 100644 index 000000000..749ac4eb4 --- /dev/null +++ b/libc/isystem/__type_traits/is_swappable.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_swappable.h" diff --git a/libc/isystem/__type_traits/is_trivial.h b/libc/isystem/__type_traits/is_trivial.h new file mode 100644 index 000000000..46a57f6f9 --- /dev/null +++ b/libc/isystem/__type_traits/is_trivial.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_trivial.h" diff --git a/libc/isystem/__type_traits/is_trivially_assignable.h b/libc/isystem/__type_traits/is_trivially_assignable.h new file mode 100644 index 000000000..92ebe07f1 --- /dev/null +++ b/libc/isystem/__type_traits/is_trivially_assignable.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_trivially_assignable.h" diff --git a/libc/isystem/__type_traits/is_trivially_constructible.h b/libc/isystem/__type_traits/is_trivially_constructible.h new file mode 100644 index 000000000..5987cb011 --- /dev/null +++ b/libc/isystem/__type_traits/is_trivially_constructible.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_trivially_constructible.h" diff --git a/libc/isystem/__type_traits/is_trivially_copy_assignable.h b/libc/isystem/__type_traits/is_trivially_copy_assignable.h new file mode 100644 index 000000000..78e9db695 --- /dev/null +++ b/libc/isystem/__type_traits/is_trivially_copy_assignable.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_trivially_copy_assignable.h" diff --git a/libc/isystem/__type_traits/is_trivially_copy_constructible.h b/libc/isystem/__type_traits/is_trivially_copy_constructible.h new file mode 100644 index 000000000..6333c20fc --- /dev/null +++ b/libc/isystem/__type_traits/is_trivially_copy_constructible.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_trivially_copy_constructible.h" diff --git a/libc/isystem/__type_traits/is_trivially_copyable.h b/libc/isystem/__type_traits/is_trivially_copyable.h new file mode 100644 index 000000000..818579907 --- /dev/null +++ b/libc/isystem/__type_traits/is_trivially_copyable.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_trivially_copyable.h" diff --git a/libc/isystem/__type_traits/is_trivially_default_constructible.h b/libc/isystem/__type_traits/is_trivially_default_constructible.h new file mode 100644 index 000000000..1c81c485d --- /dev/null +++ b/libc/isystem/__type_traits/is_trivially_default_constructible.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_trivially_default_constructible.h" diff --git a/libc/isystem/__type_traits/is_trivially_destructible.h b/libc/isystem/__type_traits/is_trivially_destructible.h new file mode 100644 index 000000000..f36f1c412 --- /dev/null +++ b/libc/isystem/__type_traits/is_trivially_destructible.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_trivially_destructible.h" diff --git a/libc/isystem/__type_traits/is_trivially_lexicographically_comparable.h b/libc/isystem/__type_traits/is_trivially_lexicographically_comparable.h new file mode 100644 index 000000000..0be37bf25 --- /dev/null +++ b/libc/isystem/__type_traits/is_trivially_lexicographically_comparable.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_trivially_lexicographically_comparable.h" diff --git a/libc/isystem/__type_traits/is_trivially_move_assignable.h b/libc/isystem/__type_traits/is_trivially_move_assignable.h new file mode 100644 index 000000000..0fd012dbe --- /dev/null +++ b/libc/isystem/__type_traits/is_trivially_move_assignable.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_trivially_move_assignable.h" diff --git a/libc/isystem/__type_traits/is_trivially_move_constructible.h b/libc/isystem/__type_traits/is_trivially_move_constructible.h new file mode 100644 index 000000000..12610f283 --- /dev/null +++ b/libc/isystem/__type_traits/is_trivially_move_constructible.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_trivially_move_constructible.h" diff --git a/libc/isystem/__type_traits/is_unbounded_array.h b/libc/isystem/__type_traits/is_unbounded_array.h new file mode 100644 index 000000000..a40efc493 --- /dev/null +++ b/libc/isystem/__type_traits/is_unbounded_array.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_unbounded_array.h" diff --git a/libc/isystem/__type_traits/is_union.h b/libc/isystem/__type_traits/is_union.h new file mode 100644 index 000000000..c70568c14 --- /dev/null +++ b/libc/isystem/__type_traits/is_union.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_union.h" diff --git a/libc/isystem/__type_traits/is_unsigned.h b/libc/isystem/__type_traits/is_unsigned.h new file mode 100644 index 000000000..06cbecdb7 --- /dev/null +++ b/libc/isystem/__type_traits/is_unsigned.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_unsigned.h" diff --git a/libc/isystem/__type_traits/is_unsigned_integer.h b/libc/isystem/__type_traits/is_unsigned_integer.h new file mode 100644 index 000000000..28a87ddbb --- /dev/null +++ b/libc/isystem/__type_traits/is_unsigned_integer.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_unsigned_integer.h" diff --git a/libc/isystem/__type_traits/is_valid_expansion.h b/libc/isystem/__type_traits/is_valid_expansion.h new file mode 100644 index 000000000..54b3b40dd --- /dev/null +++ b/libc/isystem/__type_traits/is_valid_expansion.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_valid_expansion.h" diff --git a/libc/isystem/__type_traits/is_void.h b/libc/isystem/__type_traits/is_void.h new file mode 100644 index 000000000..ff6e5ab16 --- /dev/null +++ b/libc/isystem/__type_traits/is_void.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_void.h" diff --git a/libc/isystem/__type_traits/is_volatile.h b/libc/isystem/__type_traits/is_volatile.h new file mode 100644 index 000000000..41e60d4fe --- /dev/null +++ b/libc/isystem/__type_traits/is_volatile.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/is_volatile.h" diff --git a/libc/isystem/__type_traits/lazy.h b/libc/isystem/__type_traits/lazy.h new file mode 100644 index 000000000..fafac0f65 --- /dev/null +++ b/libc/isystem/__type_traits/lazy.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/lazy.h" diff --git a/libc/isystem/__type_traits/make_32_64_or_128_bit.h b/libc/isystem/__type_traits/make_32_64_or_128_bit.h new file mode 100644 index 000000000..ad6a8b84f --- /dev/null +++ b/libc/isystem/__type_traits/make_32_64_or_128_bit.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/make_32_64_or_128_bit.h" diff --git a/libc/isystem/__type_traits/make_const_lvalue_ref.h b/libc/isystem/__type_traits/make_const_lvalue_ref.h new file mode 100644 index 000000000..e68557857 --- /dev/null +++ b/libc/isystem/__type_traits/make_const_lvalue_ref.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/make_const_lvalue_ref.h" diff --git a/libc/isystem/__type_traits/make_signed.h b/libc/isystem/__type_traits/make_signed.h new file mode 100644 index 000000000..872328dfc --- /dev/null +++ b/libc/isystem/__type_traits/make_signed.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/make_signed.h" diff --git a/libc/isystem/__type_traits/make_unsigned.h b/libc/isystem/__type_traits/make_unsigned.h new file mode 100644 index 000000000..a66b4f91d --- /dev/null +++ b/libc/isystem/__type_traits/make_unsigned.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/make_unsigned.h" diff --git a/libc/isystem/__type_traits/maybe_const.h b/libc/isystem/__type_traits/maybe_const.h new file mode 100644 index 000000000..96b7db155 --- /dev/null +++ b/libc/isystem/__type_traits/maybe_const.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/maybe_const.h" diff --git a/libc/isystem/__type_traits/nat.h b/libc/isystem/__type_traits/nat.h new file mode 100644 index 000000000..e3e8f8e17 --- /dev/null +++ b/libc/isystem/__type_traits/nat.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/nat.h" diff --git a/libc/isystem/__type_traits/negation.h b/libc/isystem/__type_traits/negation.h new file mode 100644 index 000000000..4a7526d64 --- /dev/null +++ b/libc/isystem/__type_traits/negation.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/negation.h" diff --git a/libc/isystem/__type_traits/noexcept_move_assign_container.h b/libc/isystem/__type_traits/noexcept_move_assign_container.h new file mode 100644 index 000000000..daed1653c --- /dev/null +++ b/libc/isystem/__type_traits/noexcept_move_assign_container.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/noexcept_move_assign_container.h" diff --git a/libc/isystem/__type_traits/predicate_traits.h b/libc/isystem/__type_traits/predicate_traits.h new file mode 100644 index 000000000..35cd151b5 --- /dev/null +++ b/libc/isystem/__type_traits/predicate_traits.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/predicate_traits.h" diff --git a/libc/isystem/__type_traits/promote.h b/libc/isystem/__type_traits/promote.h new file mode 100644 index 000000000..8922694bd --- /dev/null +++ b/libc/isystem/__type_traits/promote.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/promote.h" diff --git a/libc/isystem/__type_traits/rank.h b/libc/isystem/__type_traits/rank.h new file mode 100644 index 000000000..82d80b323 --- /dev/null +++ b/libc/isystem/__type_traits/rank.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/rank.h" diff --git a/libc/isystem/__type_traits/remove_all_extents.h b/libc/isystem/__type_traits/remove_all_extents.h new file mode 100644 index 000000000..92f1effee --- /dev/null +++ b/libc/isystem/__type_traits/remove_all_extents.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/remove_all_extents.h" diff --git a/libc/isystem/__type_traits/remove_const.h b/libc/isystem/__type_traits/remove_const.h new file mode 100644 index 000000000..cecaff288 --- /dev/null +++ b/libc/isystem/__type_traits/remove_const.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/remove_const.h" diff --git a/libc/isystem/__type_traits/remove_const_ref.h b/libc/isystem/__type_traits/remove_const_ref.h new file mode 100644 index 000000000..c9ffba8ca --- /dev/null +++ b/libc/isystem/__type_traits/remove_const_ref.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/remove_const_ref.h" diff --git a/libc/isystem/__type_traits/remove_cv.h b/libc/isystem/__type_traits/remove_cv.h new file mode 100644 index 000000000..aa0c33a6d --- /dev/null +++ b/libc/isystem/__type_traits/remove_cv.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/remove_cv.h" diff --git a/libc/isystem/__type_traits/remove_cvref.h b/libc/isystem/__type_traits/remove_cvref.h new file mode 100644 index 000000000..9783b669a --- /dev/null +++ b/libc/isystem/__type_traits/remove_cvref.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/remove_cvref.h" diff --git a/libc/isystem/__type_traits/remove_extent.h b/libc/isystem/__type_traits/remove_extent.h new file mode 100644 index 000000000..591435551 --- /dev/null +++ b/libc/isystem/__type_traits/remove_extent.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/remove_extent.h" diff --git a/libc/isystem/__type_traits/remove_pointer.h b/libc/isystem/__type_traits/remove_pointer.h new file mode 100644 index 000000000..4debc55fc --- /dev/null +++ b/libc/isystem/__type_traits/remove_pointer.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/remove_pointer.h" diff --git a/libc/isystem/__type_traits/remove_reference.h b/libc/isystem/__type_traits/remove_reference.h new file mode 100644 index 000000000..94093ed97 --- /dev/null +++ b/libc/isystem/__type_traits/remove_reference.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/remove_reference.h" diff --git a/libc/isystem/__type_traits/remove_volatile.h b/libc/isystem/__type_traits/remove_volatile.h new file mode 100644 index 000000000..1cc860aea --- /dev/null +++ b/libc/isystem/__type_traits/remove_volatile.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/remove_volatile.h" diff --git a/libc/isystem/__type_traits/result_of.h b/libc/isystem/__type_traits/result_of.h new file mode 100644 index 000000000..140c19a93 --- /dev/null +++ b/libc/isystem/__type_traits/result_of.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/result_of.h" diff --git a/libc/isystem/__type_traits/strip_signature.h b/libc/isystem/__type_traits/strip_signature.h new file mode 100644 index 000000000..bcd68770e --- /dev/null +++ b/libc/isystem/__type_traits/strip_signature.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/strip_signature.h" diff --git a/libc/isystem/__type_traits/type_identity.h b/libc/isystem/__type_traits/type_identity.h new file mode 100644 index 000000000..e848c9ae8 --- /dev/null +++ b/libc/isystem/__type_traits/type_identity.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/type_identity.h" diff --git a/libc/isystem/__type_traits/type_list.h b/libc/isystem/__type_traits/type_list.h new file mode 100644 index 000000000..0b09b0b71 --- /dev/null +++ b/libc/isystem/__type_traits/type_list.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/type_list.h" diff --git a/libc/isystem/__type_traits/underlying_type.h b/libc/isystem/__type_traits/underlying_type.h new file mode 100644 index 000000000..b2ac822cb --- /dev/null +++ b/libc/isystem/__type_traits/underlying_type.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/underlying_type.h" diff --git a/libc/isystem/__type_traits/unwrap_ref.h b/libc/isystem/__type_traits/unwrap_ref.h new file mode 100644 index 000000000..c374c1159 --- /dev/null +++ b/libc/isystem/__type_traits/unwrap_ref.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/unwrap_ref.h" diff --git a/libc/isystem/__type_traits/void_t.h b/libc/isystem/__type_traits/void_t.h new file mode 100644 index 000000000..7d0770fb2 --- /dev/null +++ b/libc/isystem/__type_traits/void_t.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__type_traits/void_t.h" diff --git a/libc/isystem/__undef_macros b/libc/isystem/__undef_macros new file mode 100644 index 000000000..e7cf229e8 --- /dev/null +++ b/libc/isystem/__undef_macros @@ -0,0 +1 @@ +#include "third_party/libcxx/__undef_macros" diff --git a/libc/isystem/__utility/as_const.h b/libc/isystem/__utility/as_const.h new file mode 100644 index 000000000..27b4f0441 --- /dev/null +++ b/libc/isystem/__utility/as_const.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__utility/as_const.h" diff --git a/libc/isystem/__utility/auto_cast.h b/libc/isystem/__utility/auto_cast.h new file mode 100644 index 000000000..e1d2b1b21 --- /dev/null +++ b/libc/isystem/__utility/auto_cast.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__utility/auto_cast.h" diff --git a/libc/isystem/__utility/cmp.h b/libc/isystem/__utility/cmp.h new file mode 100644 index 000000000..e934c6834 --- /dev/null +++ b/libc/isystem/__utility/cmp.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__utility/cmp.h" diff --git a/libc/isystem/__utility/convert_to_integral.h b/libc/isystem/__utility/convert_to_integral.h new file mode 100644 index 000000000..8e425f3a1 --- /dev/null +++ b/libc/isystem/__utility/convert_to_integral.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__utility/convert_to_integral.h" diff --git a/libc/isystem/__utility/declval.h b/libc/isystem/__utility/declval.h new file mode 100644 index 000000000..29abde632 --- /dev/null +++ b/libc/isystem/__utility/declval.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__utility/declval.h" diff --git a/libc/isystem/__utility/exception_guard.h b/libc/isystem/__utility/exception_guard.h new file mode 100644 index 000000000..3d82c94ab --- /dev/null +++ b/libc/isystem/__utility/exception_guard.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__utility/exception_guard.h" diff --git a/libc/isystem/__utility/exchange.h b/libc/isystem/__utility/exchange.h new file mode 100644 index 000000000..1829ac4c4 --- /dev/null +++ b/libc/isystem/__utility/exchange.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__utility/exchange.h" diff --git a/libc/isystem/__utility/forward.h b/libc/isystem/__utility/forward.h new file mode 100644 index 000000000..78304269e --- /dev/null +++ b/libc/isystem/__utility/forward.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__utility/forward.h" diff --git a/libc/isystem/__utility/forward_like.h b/libc/isystem/__utility/forward_like.h new file mode 100644 index 000000000..c7704f6c4 --- /dev/null +++ b/libc/isystem/__utility/forward_like.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__utility/forward_like.h" diff --git a/libc/isystem/__utility/in_place.h b/libc/isystem/__utility/in_place.h new file mode 100644 index 000000000..b00e62b97 --- /dev/null +++ b/libc/isystem/__utility/in_place.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__utility/in_place.h" diff --git a/libc/isystem/__utility/integer_sequence.h b/libc/isystem/__utility/integer_sequence.h new file mode 100644 index 000000000..ff7f69662 --- /dev/null +++ b/libc/isystem/__utility/integer_sequence.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__utility/integer_sequence.h" diff --git a/libc/isystem/__utility/move.h b/libc/isystem/__utility/move.h new file mode 100644 index 000000000..73351f46e --- /dev/null +++ b/libc/isystem/__utility/move.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__utility/move.h" diff --git a/libc/isystem/__utility/pair.h b/libc/isystem/__utility/pair.h new file mode 100644 index 000000000..cb75842e7 --- /dev/null +++ b/libc/isystem/__utility/pair.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__utility/pair.h" diff --git a/libc/isystem/__utility/piecewise_construct.h b/libc/isystem/__utility/piecewise_construct.h new file mode 100644 index 000000000..838a91798 --- /dev/null +++ b/libc/isystem/__utility/piecewise_construct.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__utility/piecewise_construct.h" diff --git a/libc/isystem/__utility/priority_tag.h b/libc/isystem/__utility/priority_tag.h new file mode 100644 index 000000000..03113256f --- /dev/null +++ b/libc/isystem/__utility/priority_tag.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__utility/priority_tag.h" diff --git a/libc/isystem/__utility/rel_ops.h b/libc/isystem/__utility/rel_ops.h new file mode 100644 index 000000000..fb9995be0 --- /dev/null +++ b/libc/isystem/__utility/rel_ops.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__utility/rel_ops.h" diff --git a/libc/isystem/__utility/swap.h b/libc/isystem/__utility/swap.h new file mode 100644 index 000000000..6a8b815a9 --- /dev/null +++ b/libc/isystem/__utility/swap.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__utility/swap.h" diff --git a/libc/isystem/__utility/terminate_on_exception.h b/libc/isystem/__utility/terminate_on_exception.h new file mode 100644 index 000000000..7d5ce26b3 --- /dev/null +++ b/libc/isystem/__utility/terminate_on_exception.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__utility/terminate_on_exception.h" diff --git a/libc/isystem/__utility/to_underlying.h b/libc/isystem/__utility/to_underlying.h new file mode 100644 index 000000000..2d99d1f1d --- /dev/null +++ b/libc/isystem/__utility/to_underlying.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__utility/to_underlying.h" diff --git a/libc/isystem/__utility/unreachable.h b/libc/isystem/__utility/unreachable.h new file mode 100644 index 000000000..a0876cd42 --- /dev/null +++ b/libc/isystem/__utility/unreachable.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__utility/unreachable.h" diff --git a/libc/isystem/__variant/monostate.h b/libc/isystem/__variant/monostate.h new file mode 100644 index 000000000..b6a59228d --- /dev/null +++ b/libc/isystem/__variant/monostate.h @@ -0,0 +1 @@ +#include "third_party/libcxx/__variant/monostate.h" diff --git a/libc/isystem/__verbose_abort b/libc/isystem/__verbose_abort new file mode 100644 index 000000000..7ce36bffb --- /dev/null +++ b/libc/isystem/__verbose_abort @@ -0,0 +1 @@ +#include "third_party/libcxx/__verbose_abort" diff --git a/libc/isystem/algorithm b/libc/isystem/algorithm deleted file mode 100644 index aee595c89..000000000 --- a/libc/isystem/algorithm +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_ALGORITHM_ -#define COSMOPOLITAN_LIBC_ISYSTEM_ALGORITHM_ -#include "third_party/libcxx/algorithm" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_ALGORITHM_ */ diff --git a/libc/isystem/any b/libc/isystem/any deleted file mode 100644 index 338966d53..000000000 --- a/libc/isystem/any +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_ANY_ -#define COSMOPOLITAN_LIBC_ISYSTEM_ANY_ -#include "third_party/libcxx/any" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_ANY_ */ diff --git a/libc/isystem/array b/libc/isystem/array deleted file mode 100644 index 875dc271e..000000000 --- a/libc/isystem/array +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_ARRAY_ -#define COSMOPOLITAN_LIBC_ISYSTEM_ARRAY_ -#include "third_party/libcxx/array" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_ARRAY_ */ diff --git a/libc/isystem/atomic b/libc/isystem/atomic deleted file mode 100644 index e2ebebde8..000000000 --- a/libc/isystem/atomic +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_ATOMIC_ -#define COSMOPOLITAN_LIBC_ISYSTEM_ATOMIC_ -#include "third_party/libcxx/atomic" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_ATOMIC_ */ diff --git a/libc/isystem/barrier b/libc/isystem/barrier new file mode 100644 index 000000000..9f7236ad3 --- /dev/null +++ b/libc/isystem/barrier @@ -0,0 +1 @@ +#include "third_party/libcxx/barrier" diff --git a/libc/isystem/bit b/libc/isystem/bit deleted file mode 100644 index 0ad9a28c5..000000000 --- a/libc/isystem/bit +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_BIT_ -#define COSMOPOLITAN_LIBC_ISYSTEM_BIT_ -#include "third_party/libcxx/bit" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_BIT_ */ diff --git a/libc/isystem/bitset b/libc/isystem/bitset deleted file mode 100644 index 4b5aa6dfa..000000000 --- a/libc/isystem/bitset +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_BITSET_ -#define COSMOPOLITAN_LIBC_ISYSTEM_BITSET_ -#include "third_party/libcxx/bitset" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_BITSET_ */ diff --git a/libc/isystem/cassert b/libc/isystem/cassert deleted file mode 100644 index 85e5ca920..000000000 --- a/libc/isystem/cassert +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_CASSERT_ -#define COSMOPOLITAN_LIBC_ISYSTEM_CASSERT_ -#include "third_party/libcxx/cassert" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_CASSERT_ */ diff --git a/libc/isystem/ccomplex b/libc/isystem/ccomplex deleted file mode 100644 index b7b24916e..000000000 --- a/libc/isystem/ccomplex +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_CCOMPLEX_ -#define COSMOPOLITAN_LIBC_ISYSTEM_CCOMPLEX_ -#include "third_party/libcxx/ccomplex" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_CCOMPLEX_ */ diff --git a/libc/isystem/cctype b/libc/isystem/cctype deleted file mode 100644 index 2c7aa4ca6..000000000 --- a/libc/isystem/cctype +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_CCTYPE_ -#define COSMOPOLITAN_LIBC_ISYSTEM_CCTYPE_ -#include "third_party/libcxx/cctype" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_CCTYPE_ */ diff --git a/libc/isystem/cerrno b/libc/isystem/cerrno deleted file mode 100644 index d370b3e6e..000000000 --- a/libc/isystem/cerrno +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_CERRNO_ -#define COSMOPOLITAN_LIBC_ISYSTEM_CERRNO_ -#include "third_party/libcxx/cerrno" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_CERRNO_ */ diff --git a/libc/isystem/cfenv b/libc/isystem/cfenv deleted file mode 100644 index 18e07fa28..000000000 --- a/libc/isystem/cfenv +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_CFENV_ -#define COSMOPOLITAN_LIBC_ISYSTEM_CFENV_ -#include "third_party/libcxx/cfenv" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_CFENV_ */ diff --git a/libc/isystem/cfloat b/libc/isystem/cfloat deleted file mode 100644 index 86ffc45e7..000000000 --- a/libc/isystem/cfloat +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_CFLOAT_ -#define COSMOPOLITAN_LIBC_ISYSTEM_CFLOAT_ -#include "third_party/libcxx/cfloat" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_CFLOAT_ */ diff --git a/libc/isystem/charconv b/libc/isystem/charconv deleted file mode 100644 index 171e84f0a..000000000 --- a/libc/isystem/charconv +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_CHARCONV_ -#define COSMOPOLITAN_LIBC_ISYSTEM_CHARCONV_ -#include "third_party/libcxx/charconv" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_CHARCONV_ */ diff --git a/libc/isystem/chrono b/libc/isystem/chrono deleted file mode 100644 index e3a37f160..000000000 --- a/libc/isystem/chrono +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_CHRONO_ -#define COSMOPOLITAN_LIBC_ISYSTEM_CHRONO_ -#include "third_party/libcxx/chrono" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_CHRONO_ */ diff --git a/libc/isystem/cinttypes b/libc/isystem/cinttypes deleted file mode 100644 index 6545c7246..000000000 --- a/libc/isystem/cinttypes +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_CINTTYPES_ -#define COSMOPOLITAN_LIBC_ISYSTEM_CINTTYPES_ -#include "third_party/libcxx/cinttypes" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_CINTTYPES_ */ diff --git a/libc/isystem/ciso646 b/libc/isystem/ciso646 deleted file mode 100644 index a36495a41..000000000 --- a/libc/isystem/ciso646 +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_CISO646_ -#define COSMOPOLITAN_LIBC_ISYSTEM_CISO646_ -#include "third_party/libcxx/ciso646" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_CISO646_ */ diff --git a/libc/isystem/climits b/libc/isystem/climits deleted file mode 100644 index ae833708c..000000000 --- a/libc/isystem/climits +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_CLIMITS_ -#define COSMOPOLITAN_LIBC_ISYSTEM_CLIMITS_ -#include "third_party/libcxx/climits" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_CLIMITS_ */ diff --git a/libc/isystem/clocale b/libc/isystem/clocale deleted file mode 100644 index 90cf94010..000000000 --- a/libc/isystem/clocale +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_CLOCALE_ -#define COSMOPOLITAN_LIBC_ISYSTEM_CLOCALE_ -#include "third_party/libcxx/clocale" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_CLOCALE_ */ diff --git a/libc/isystem/cmath b/libc/isystem/cmath deleted file mode 100644 index 5eabfe934..000000000 --- a/libc/isystem/cmath +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_CMATH_ -#define COSMOPOLITAN_LIBC_ISYSTEM_CMATH_ -#include "third_party/libcxx/cmath" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_CMATH_ */ diff --git a/libc/isystem/codecvt b/libc/isystem/codecvt deleted file mode 100644 index 809a5e905..000000000 --- a/libc/isystem/codecvt +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_CODECVT_ -#define COSMOPOLITAN_LIBC_ISYSTEM_CODECVT_ -#include "third_party/libcxx/codecvt" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_CODECVT_ */ diff --git a/libc/isystem/compare b/libc/isystem/compare deleted file mode 100644 index ef2d37d31..000000000 --- a/libc/isystem/compare +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_COMPARE_ -#define COSMOPOLITAN_LIBC_ISYSTEM_COMPARE_ -#include "third_party/libcxx/compare" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_COMPARE_ */ diff --git a/libc/isystem/complex b/libc/isystem/complex deleted file mode 100644 index 7f4c838fc..000000000 --- a/libc/isystem/complex +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_COMPLEX_ -#define COSMOPOLITAN_LIBC_ISYSTEM_COMPLEX_ -#include "third_party/libcxx/complex" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_COMPLEX_ */ diff --git a/libc/isystem/concepts b/libc/isystem/concepts new file mode 100644 index 000000000..f7d134987 --- /dev/null +++ b/libc/isystem/concepts @@ -0,0 +1 @@ +#include "third_party/libcxx/concepts" diff --git a/libc/isystem/condition_variable b/libc/isystem/condition_variable deleted file mode 100644 index fdb82070a..000000000 --- a/libc/isystem/condition_variable +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_CONDITION_VARIABLE_ -#define COSMOPOLITAN_LIBC_ISYSTEM_CONDITION_VARIABLE_ -#include "third_party/libcxx/condition_variable" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_CONDITION_VARIABLE_ */ diff --git a/libc/isystem/coroutine b/libc/isystem/coroutine new file mode 100644 index 000000000..e024e6a48 --- /dev/null +++ b/libc/isystem/coroutine @@ -0,0 +1 @@ +#include "third_party/libcxx/coroutine" diff --git a/libc/isystem/csetjmp b/libc/isystem/csetjmp deleted file mode 100644 index d4fb16d7c..000000000 --- a/libc/isystem/csetjmp +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_CSETJMP_ -#define COSMOPOLITAN_LIBC_ISYSTEM_CSETJMP_ -#include "third_party/libcxx/csetjmp" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_CSETJMP_ */ diff --git a/libc/isystem/csignal b/libc/isystem/csignal deleted file mode 100644 index abaa7ea33..000000000 --- a/libc/isystem/csignal +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_CSIGNAL_ -#define COSMOPOLITAN_LIBC_ISYSTEM_CSIGNAL_ -#include "third_party/libcxx/csignal" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_CSIGNAL_ */ diff --git a/libc/isystem/cstdarg b/libc/isystem/cstdarg deleted file mode 100644 index 3f8e5089e..000000000 --- a/libc/isystem/cstdarg +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_CSTDARG_ -#define COSMOPOLITAN_LIBC_ISYSTEM_CSTDARG_ -#include "third_party/libcxx/cstdarg" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_CSTDARG_ */ diff --git a/libc/isystem/cstdbool b/libc/isystem/cstdbool deleted file mode 100644 index 0206be437..000000000 --- a/libc/isystem/cstdbool +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_CSTDBOOL_ -#define COSMOPOLITAN_LIBC_ISYSTEM_CSTDBOOL_ -#include "third_party/libcxx/cstdbool" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_CSTDBOOL_ */ diff --git a/libc/isystem/cstddef b/libc/isystem/cstddef deleted file mode 100644 index a76c45ed1..000000000 --- a/libc/isystem/cstddef +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_CSTDDEF_ -#define COSMOPOLITAN_LIBC_ISYSTEM_CSTDDEF_ -#include "third_party/libcxx/cstddef" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_CSTDDEF_ */ diff --git a/libc/isystem/cstdint b/libc/isystem/cstdint deleted file mode 100644 index 1dfa6e245..000000000 --- a/libc/isystem/cstdint +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_CSTDINT_ -#define COSMOPOLITAN_LIBC_ISYSTEM_CSTDINT_ -#include "third_party/libcxx/cstdint" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_CSTDINT_ */ diff --git a/libc/isystem/cstdio b/libc/isystem/cstdio deleted file mode 100644 index ace9c50f6..000000000 --- a/libc/isystem/cstdio +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_CSTDIO_ -#define COSMOPOLITAN_LIBC_ISYSTEM_CSTDIO_ -#include "third_party/libcxx/cstdio" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_CSTDIO_ */ diff --git a/libc/isystem/cstdlib b/libc/isystem/cstdlib deleted file mode 100644 index 121e924a9..000000000 --- a/libc/isystem/cstdlib +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_CSTDLIB_ -#define COSMOPOLITAN_LIBC_ISYSTEM_CSTDLIB_ -#include "third_party/libcxx/cstdlib" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_CSTDLIB_ */ diff --git a/libc/isystem/cstring b/libc/isystem/cstring deleted file mode 100644 index c5b409a77..000000000 --- a/libc/isystem/cstring +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_CSTRING_ -#define COSMOPOLITAN_LIBC_ISYSTEM_CSTRING_ -#include "third_party/libcxx/cstring" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_CSTRING_ */ diff --git a/libc/isystem/ctgmath b/libc/isystem/ctgmath deleted file mode 100644 index 6ab9d9f57..000000000 --- a/libc/isystem/ctgmath +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_CTGMATH_ -#define COSMOPOLITAN_LIBC_ISYSTEM_CTGMATH_ -#include "third_party/libcxx/ctgmath" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_CTGMATH_ */ diff --git a/libc/isystem/ctime b/libc/isystem/ctime deleted file mode 100644 index ddbca6fdb..000000000 --- a/libc/isystem/ctime +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_CTIME_ -#define COSMOPOLITAN_LIBC_ISYSTEM_CTIME_ -#include "third_party/libcxx/ctime" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_CTIME_ */ diff --git a/libc/isystem/cuchar b/libc/isystem/cuchar new file mode 100644 index 000000000..90ac28fd7 --- /dev/null +++ b/libc/isystem/cuchar @@ -0,0 +1 @@ +#include "third_party/libcxx/cuchar" diff --git a/libc/isystem/cwchar b/libc/isystem/cwchar deleted file mode 100644 index 4bb6523de..000000000 --- a/libc/isystem/cwchar +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_CWCHAR_ -#define COSMOPOLITAN_LIBC_ISYSTEM_CWCHAR_ -#include "third_party/libcxx/cwchar" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_CWCHAR_ */ diff --git a/libc/isystem/cwctype b/libc/isystem/cwctype deleted file mode 100644 index cfd683b44..000000000 --- a/libc/isystem/cwctype +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_CWCTYPE_ -#define COSMOPOLITAN_LIBC_ISYSTEM_CWCTYPE_ -#include "third_party/libcxx/cwctype" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_CWCTYPE_ */ diff --git a/libc/isystem/deque b/libc/isystem/deque deleted file mode 100644 index 2a15681c4..000000000 --- a/libc/isystem/deque +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_DEQUE_ -#define COSMOPOLITAN_LIBC_ISYSTEM_DEQUE_ -#include "third_party/libcxx/deque" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_DEQUE_ */ diff --git a/libc/isystem/exception b/libc/isystem/exception deleted file mode 100644 index ebb8f4651..000000000 --- a/libc/isystem/exception +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_EXCEPTION_ -#define COSMOPOLITAN_LIBC_ISYSTEM_EXCEPTION_ -#include "third_party/libcxx/exception" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_EXCEPTION_ */ diff --git a/libc/isystem/execution b/libc/isystem/execution deleted file mode 100644 index 2d55597e0..000000000 --- a/libc/isystem/execution +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_EXECUTION_ -#define COSMOPOLITAN_LIBC_ISYSTEM_EXECUTION_ -#include "third_party/libcxx/execution" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_EXECUTION_ */ diff --git a/libc/isystem/expected b/libc/isystem/expected new file mode 100644 index 000000000..02ac281f6 --- /dev/null +++ b/libc/isystem/expected @@ -0,0 +1 @@ +#include "third_party/libcxx/expected" diff --git a/libc/isystem/experimental/__config b/libc/isystem/experimental/__config new file mode 100644 index 000000000..2fcd5d990 --- /dev/null +++ b/libc/isystem/experimental/__config @@ -0,0 +1 @@ +#include "third_party/libcxx/experimental/__config" diff --git a/libc/isystem/experimental/__memory b/libc/isystem/experimental/__memory new file mode 100644 index 000000000..9f8cad382 --- /dev/null +++ b/libc/isystem/experimental/__memory @@ -0,0 +1 @@ +#include "third_party/libcxx/experimental/__memory" diff --git a/libc/isystem/experimental/deque b/libc/isystem/experimental/deque new file mode 100644 index 000000000..91fad8c04 --- /dev/null +++ b/libc/isystem/experimental/deque @@ -0,0 +1 @@ +#include "third_party/libcxx/experimental/deque" diff --git a/libc/isystem/experimental/forward_list b/libc/isystem/experimental/forward_list new file mode 100644 index 000000000..a880f562f --- /dev/null +++ b/libc/isystem/experimental/forward_list @@ -0,0 +1 @@ +#include "third_party/libcxx/experimental/forward_list" diff --git a/libc/isystem/experimental/iterator b/libc/isystem/experimental/iterator new file mode 100644 index 000000000..462084712 --- /dev/null +++ b/libc/isystem/experimental/iterator @@ -0,0 +1 @@ +#include "third_party/libcxx/experimental/iterator" diff --git a/libc/isystem/experimental/list b/libc/isystem/experimental/list new file mode 100644 index 000000000..d1accd26b --- /dev/null +++ b/libc/isystem/experimental/list @@ -0,0 +1 @@ +#include "third_party/libcxx/experimental/list" diff --git a/libc/isystem/experimental/map b/libc/isystem/experimental/map new file mode 100644 index 000000000..9b3ef5777 --- /dev/null +++ b/libc/isystem/experimental/map @@ -0,0 +1 @@ +#include "third_party/libcxx/experimental/map" diff --git a/libc/isystem/experimental/memory_resource b/libc/isystem/experimental/memory_resource new file mode 100644 index 000000000..e1923f59d --- /dev/null +++ b/libc/isystem/experimental/memory_resource @@ -0,0 +1 @@ +#include "third_party/libcxx/experimental/memory_resource" diff --git a/libc/isystem/experimental/propagate_const b/libc/isystem/experimental/propagate_const new file mode 100644 index 000000000..e40b5c2d4 --- /dev/null +++ b/libc/isystem/experimental/propagate_const @@ -0,0 +1 @@ +#include "third_party/libcxx/experimental/propagate_const" diff --git a/libc/isystem/experimental/regex b/libc/isystem/experimental/regex new file mode 100644 index 000000000..1bf40dcd5 --- /dev/null +++ b/libc/isystem/experimental/regex @@ -0,0 +1 @@ +#include "third_party/libcxx/experimental/regex" diff --git a/libc/isystem/experimental/set b/libc/isystem/experimental/set new file mode 100644 index 000000000..de02f9972 --- /dev/null +++ b/libc/isystem/experimental/set @@ -0,0 +1 @@ +#include "third_party/libcxx/experimental/set" diff --git a/libc/isystem/experimental/simd b/libc/isystem/experimental/simd new file mode 100644 index 000000000..389404cac --- /dev/null +++ b/libc/isystem/experimental/simd @@ -0,0 +1 @@ +#include "third_party/libcxx/experimental/simd" diff --git a/libc/isystem/experimental/string b/libc/isystem/experimental/string new file mode 100644 index 000000000..917fab83d --- /dev/null +++ b/libc/isystem/experimental/string @@ -0,0 +1 @@ +#include "third_party/libcxx/experimental/string" diff --git a/libc/isystem/experimental/type_traits b/libc/isystem/experimental/type_traits new file mode 100644 index 000000000..90074f6b5 --- /dev/null +++ b/libc/isystem/experimental/type_traits @@ -0,0 +1 @@ +#include "third_party/libcxx/experimental/type_traits" diff --git a/libc/isystem/experimental/unordered_map b/libc/isystem/experimental/unordered_map new file mode 100644 index 000000000..0df52cda6 --- /dev/null +++ b/libc/isystem/experimental/unordered_map @@ -0,0 +1 @@ +#include "third_party/libcxx/experimental/unordered_map" diff --git a/libc/isystem/experimental/unordered_set b/libc/isystem/experimental/unordered_set new file mode 100644 index 000000000..5e360fe61 --- /dev/null +++ b/libc/isystem/experimental/unordered_set @@ -0,0 +1 @@ +#include "third_party/libcxx/experimental/unordered_set" diff --git a/libc/isystem/experimental/utility b/libc/isystem/experimental/utility new file mode 100644 index 000000000..2475b6278 --- /dev/null +++ b/libc/isystem/experimental/utility @@ -0,0 +1 @@ +#include "third_party/libcxx/experimental/utility" diff --git a/libc/isystem/experimental/vector b/libc/isystem/experimental/vector new file mode 100644 index 000000000..e28de4ca5 --- /dev/null +++ b/libc/isystem/experimental/vector @@ -0,0 +1 @@ +#include "third_party/libcxx/experimental/vector" diff --git a/libc/isystem/ext/__hash b/libc/isystem/ext/__hash new file mode 100644 index 000000000..31ef24706 --- /dev/null +++ b/libc/isystem/ext/__hash @@ -0,0 +1 @@ +#include "third_party/libcxx/ext/__hash" diff --git a/libc/isystem/ext/hash_map b/libc/isystem/ext/hash_map new file mode 100644 index 000000000..c4b118a5e --- /dev/null +++ b/libc/isystem/ext/hash_map @@ -0,0 +1 @@ +#include "third_party/libcxx/ext/hash_map" diff --git a/libc/isystem/ext/hash_set b/libc/isystem/ext/hash_set new file mode 100644 index 000000000..0e6725d9e --- /dev/null +++ b/libc/isystem/ext/hash_set @@ -0,0 +1 @@ +#include "third_party/libcxx/ext/hash_set" diff --git a/libc/isystem/filesystem b/libc/isystem/filesystem deleted file mode 100644 index 0264d2352..000000000 --- a/libc/isystem/filesystem +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_FILESYSTEM_ -#define COSMOPOLITAN_LIBC_ISYSTEM_FILESYSTEM_ -#include "third_party/libcxx/filesystem" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_FILESYSTEM_ */ diff --git a/libc/isystem/format b/libc/isystem/format new file mode 100644 index 000000000..5e20f807c --- /dev/null +++ b/libc/isystem/format @@ -0,0 +1 @@ +#include "third_party/libcxx/format" diff --git a/libc/isystem/forward_list b/libc/isystem/forward_list deleted file mode 100644 index 48c438456..000000000 --- a/libc/isystem/forward_list +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_FORWARD_LIST_ -#define COSMOPOLITAN_LIBC_ISYSTEM_FORWARD_LIST_ -#include "third_party/libcxx/forward_list" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_FORWARD_LIST_ */ diff --git a/libc/isystem/fstream b/libc/isystem/fstream deleted file mode 100644 index bb2a55129..000000000 --- a/libc/isystem/fstream +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_FSTREAM_ -#define COSMOPOLITAN_LIBC_ISYSTEM_FSTREAM_ -#include "third_party/libcxx/fstream" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_FSTREAM_ */ diff --git a/libc/isystem/functional b/libc/isystem/functional deleted file mode 100644 index c1a6afed8..000000000 --- a/libc/isystem/functional +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_FUNCTIONAL_ -#define COSMOPOLITAN_LIBC_ISYSTEM_FUNCTIONAL_ -#include "third_party/libcxx/functional" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_FUNCTIONAL_ */ diff --git a/libc/isystem/future b/libc/isystem/future deleted file mode 100644 index 7f8f9afa0..000000000 --- a/libc/isystem/future +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_FUTURE_ -#define COSMOPOLITAN_LIBC_ISYSTEM_FUTURE_ -#include "third_party/libcxx/future" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_FUTURE_ */ diff --git a/libc/isystem/initializer_list b/libc/isystem/initializer_list deleted file mode 100644 index 7436d259b..000000000 --- a/libc/isystem/initializer_list +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_INITIALIZER_LIST_ -#define COSMOPOLITAN_LIBC_ISYSTEM_INITIALIZER_LIST_ -#include "third_party/libcxx/initializer_list" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_INITIALIZER_LIST_ */ diff --git a/libc/isystem/iomanip b/libc/isystem/iomanip deleted file mode 100644 index 54197c449..000000000 --- a/libc/isystem/iomanip +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_IOMANIP_ -#define COSMOPOLITAN_LIBC_ISYSTEM_IOMANIP_ -#include "third_party/libcxx/iomanip" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_IOMANIP_ */ diff --git a/libc/isystem/ios b/libc/isystem/ios deleted file mode 100644 index 529e5f2f6..000000000 --- a/libc/isystem/ios +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_IOS_ -#define COSMOPOLITAN_LIBC_ISYSTEM_IOS_ -#include "third_party/libcxx/ios" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_IOS_ */ diff --git a/libc/isystem/iosfwd b/libc/isystem/iosfwd deleted file mode 100644 index 49d6534e7..000000000 --- a/libc/isystem/iosfwd +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_IOSFWD_ -#define COSMOPOLITAN_LIBC_ISYSTEM_IOSFWD_ -#include "third_party/libcxx/iosfwd" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_IOSFWD_ */ diff --git a/libc/isystem/iostream b/libc/isystem/iostream deleted file mode 100644 index c0bf15db0..000000000 --- a/libc/isystem/iostream +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_IOSTREAM_ -#define COSMOPOLITAN_LIBC_ISYSTEM_IOSTREAM_ -#include "third_party/libcxx/iostream" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_IOSTREAM_ */ diff --git a/libc/isystem/istream b/libc/isystem/istream deleted file mode 100644 index d1409789d..000000000 --- a/libc/isystem/istream +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_ISTREAM_ -#define COSMOPOLITAN_LIBC_ISYSTEM_ISTREAM_ -#include "third_party/libcxx/istream" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_ISTREAM_ */ diff --git a/libc/isystem/iterator b/libc/isystem/iterator deleted file mode 100644 index c7106a8b5..000000000 --- a/libc/isystem/iterator +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_ITERATOR_ -#define COSMOPOLITAN_LIBC_ISYSTEM_ITERATOR_ -#include "third_party/libcxx/iterator" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_ITERATOR_ */ diff --git a/libc/isystem/latch b/libc/isystem/latch new file mode 100644 index 000000000..07ec09a4c --- /dev/null +++ b/libc/isystem/latch @@ -0,0 +1 @@ +#include "third_party/libcxx/latch" diff --git a/libc/isystem/libcxx.imp b/libc/isystem/libcxx.imp new file mode 100644 index 000000000..80ebbed8e --- /dev/null +++ b/libc/isystem/libcxx.imp @@ -0,0 +1 @@ +#include "third_party/libcxx/libcxx.imp" diff --git a/libc/isystem/limits b/libc/isystem/limits deleted file mode 100644 index d9645d611..000000000 --- a/libc/isystem/limits +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_LIMITS_ -#define COSMOPOLITAN_LIBC_ISYSTEM_LIMITS_ -#include "third_party/libcxx/limits" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_LIMITS_ */ diff --git a/libc/isystem/list b/libc/isystem/list deleted file mode 100644 index ed4e7dc77..000000000 --- a/libc/isystem/list +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_LIST_ -#define COSMOPOLITAN_LIBC_ISYSTEM_LIST_ -#include "third_party/libcxx/list" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_LIST_ */ diff --git a/libc/isystem/locale b/libc/isystem/locale deleted file mode 100644 index 320336586..000000000 --- a/libc/isystem/locale +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_LOCALE_ -#define COSMOPOLITAN_LIBC_ISYSTEM_LOCALE_ -#include "third_party/libcxx/locale" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_LOCALE_ */ diff --git a/libc/isystem/map b/libc/isystem/map deleted file mode 100644 index 9f16a156f..000000000 --- a/libc/isystem/map +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_MAP_ -#define COSMOPOLITAN_LIBC_ISYSTEM_MAP_ -#include "third_party/libcxx/map" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_MAP_ */ diff --git a/libc/isystem/mdspan b/libc/isystem/mdspan new file mode 100644 index 000000000..abfed35d9 --- /dev/null +++ b/libc/isystem/mdspan @@ -0,0 +1 @@ +#include "third_party/libcxx/mdspan" diff --git a/libc/isystem/memory b/libc/isystem/memory deleted file mode 100644 index 46682efe5..000000000 --- a/libc/isystem/memory +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_MEMORY_ -#define COSMOPOLITAN_LIBC_ISYSTEM_MEMORY_ -#include "third_party/libcxx/memory" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_MEMORY_ */ diff --git a/libc/isystem/memory_resource b/libc/isystem/memory_resource new file mode 100644 index 000000000..d875d7b72 --- /dev/null +++ b/libc/isystem/memory_resource @@ -0,0 +1 @@ +#include "third_party/libcxx/memory_resource" diff --git a/libc/isystem/module.modulemap b/libc/isystem/module.modulemap new file mode 100644 index 000000000..cc9182b8c --- /dev/null +++ b/libc/isystem/module.modulemap @@ -0,0 +1 @@ +#include "third_party/libcxx/module.modulemap" diff --git a/libc/isystem/mutex b/libc/isystem/mutex deleted file mode 100644 index 4cb91bfe6..000000000 --- a/libc/isystem/mutex +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_MUTEX_ -#define COSMOPOLITAN_LIBC_ISYSTEM_MUTEX_ -#include "third_party/libcxx/mutex" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_MUTEX_ */ diff --git a/libc/isystem/new b/libc/isystem/new deleted file mode 100644 index 545eb6ed2..000000000 --- a/libc/isystem/new +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_NEW_ -#define COSMOPOLITAN_LIBC_ISYSTEM_NEW_ -#include "third_party/libcxx/new" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_NEW_ */ diff --git a/libc/isystem/numbers b/libc/isystem/numbers new file mode 100644 index 000000000..2e2b78a74 --- /dev/null +++ b/libc/isystem/numbers @@ -0,0 +1 @@ +#include "third_party/libcxx/numbers" diff --git a/libc/isystem/numeric b/libc/isystem/numeric deleted file mode 100644 index b6c3663c5..000000000 --- a/libc/isystem/numeric +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_NUMERIC_ -#define COSMOPOLITAN_LIBC_ISYSTEM_NUMERIC_ -#include "third_party/libcxx/numeric" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_NUMERIC_ */ diff --git a/libc/isystem/optional b/libc/isystem/optional deleted file mode 100644 index 1c14e7eea..000000000 --- a/libc/isystem/optional +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_OPTIONAL_ -#define COSMOPOLITAN_LIBC_ISYSTEM_OPTIONAL_ -#include "third_party/libcxx/optional" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_OPTIONAL_ */ diff --git a/libc/isystem/ostream b/libc/isystem/ostream deleted file mode 100644 index 72ca69dea..000000000 --- a/libc/isystem/ostream +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_OSTREAM_ -#define COSMOPOLITAN_LIBC_ISYSTEM_OSTREAM_ -#include "third_party/libcxx/ostream" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_OSTREAM_ */ diff --git a/libc/isystem/queue b/libc/isystem/queue deleted file mode 100644 index 4c6db1873..000000000 --- a/libc/isystem/queue +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_QUEUE_ -#define COSMOPOLITAN_LIBC_ISYSTEM_QUEUE_ -#include "third_party/libcxx/queue" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_QUEUE_ */ diff --git a/libc/isystem/random b/libc/isystem/random deleted file mode 100644 index c558b62ba..000000000 --- a/libc/isystem/random +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_RANDOM_ -#define COSMOPOLITAN_LIBC_ISYSTEM_RANDOM_ -#include "third_party/libcxx/random" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_RANDOM_ */ diff --git a/libc/isystem/ranges b/libc/isystem/ranges new file mode 100644 index 000000000..d2d911734 --- /dev/null +++ b/libc/isystem/ranges @@ -0,0 +1 @@ +#include "third_party/libcxx/ranges" diff --git a/libc/isystem/ratio b/libc/isystem/ratio deleted file mode 100644 index 0a01c6e1c..000000000 --- a/libc/isystem/ratio +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_RATIO_ -#define COSMOPOLITAN_LIBC_ISYSTEM_RATIO_ -#include "third_party/libcxx/ratio" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_RATIO_ */ diff --git a/libc/isystem/regex b/libc/isystem/regex deleted file mode 100644 index 06ef75e4d..000000000 --- a/libc/isystem/regex +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_REGEX_ -#define COSMOPOLITAN_LIBC_ISYSTEM_REGEX_ -#include "third_party/libcxx/regex" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_REGEX_ */ diff --git a/libc/isystem/scoped_allocator b/libc/isystem/scoped_allocator deleted file mode 100644 index b197a90ec..000000000 --- a/libc/isystem/scoped_allocator +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_SCOPED_ALLOCATOR_ -#define COSMOPOLITAN_LIBC_ISYSTEM_SCOPED_ALLOCATOR_ -#include "third_party/libcxx/scoped_allocator" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_SCOPED_ALLOCATOR_ */ diff --git a/libc/isystem/semaphore b/libc/isystem/semaphore new file mode 100644 index 000000000..757c40616 --- /dev/null +++ b/libc/isystem/semaphore @@ -0,0 +1 @@ +#include "third_party/libcxx/semaphore" diff --git a/libc/isystem/set b/libc/isystem/set deleted file mode 100644 index 7e22b881f..000000000 --- a/libc/isystem/set +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_SET_ -#define COSMOPOLITAN_LIBC_ISYSTEM_SET_ -#include "third_party/libcxx/set" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_SET_ */ diff --git a/libc/isystem/shared_mutex b/libc/isystem/shared_mutex deleted file mode 100644 index 774f05c1d..000000000 --- a/libc/isystem/shared_mutex +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_SHARED_MUTEX_ -#define COSMOPOLITAN_LIBC_ISYSTEM_SHARED_MUTEX_ -#include "third_party/libcxx/shared_mutex" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_SHARED_MUTEX_ */ diff --git a/libc/isystem/source_location b/libc/isystem/source_location new file mode 100644 index 000000000..19b35c368 --- /dev/null +++ b/libc/isystem/source_location @@ -0,0 +1 @@ +#include "third_party/libcxx/source_location" diff --git a/libc/isystem/span b/libc/isystem/span deleted file mode 100644 index 5cb819c6e..000000000 --- a/libc/isystem/span +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_SPAN_ -#define COSMOPOLITAN_LIBC_ISYSTEM_SPAN_ -#include "third_party/libcxx/span" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_SPAN_ */ diff --git a/libc/isystem/sstream b/libc/isystem/sstream deleted file mode 100644 index 4979e11a1..000000000 --- a/libc/isystem/sstream +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_SSTREAM_ -#define COSMOPOLITAN_LIBC_ISYSTEM_SSTREAM_ -#include "third_party/libcxx/sstream" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_SSTREAM_ */ diff --git a/libc/isystem/stack b/libc/isystem/stack deleted file mode 100644 index a5fecfc9a..000000000 --- a/libc/isystem/stack +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_STACK_ -#define COSMOPOLITAN_LIBC_ISYSTEM_STACK_ -#include "third_party/libcxx/stack" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_STACK_ */ diff --git a/libc/isystem/stdexcept b/libc/isystem/stdexcept deleted file mode 100644 index 2607109c9..000000000 --- a/libc/isystem/stdexcept +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_STDEXCEPT_ -#define COSMOPOLITAN_LIBC_ISYSTEM_STDEXCEPT_ -#include "third_party/libcxx/stdexcept" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_STDEXCEPT_ */ diff --git a/libc/isystem/streambuf b/libc/isystem/streambuf deleted file mode 100644 index d533b0e8e..000000000 --- a/libc/isystem/streambuf +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_STREAMBUF_ -#define COSMOPOLITAN_LIBC_ISYSTEM_STREAMBUF_ -#include "third_party/libcxx/streambuf" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_STREAMBUF_ */ diff --git a/libc/isystem/string b/libc/isystem/string deleted file mode 100644 index 7d933bb65..000000000 --- a/libc/isystem/string +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_STRING_ -#define COSMOPOLITAN_LIBC_ISYSTEM_STRING_ -#include "third_party/libcxx/string" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_STRING_ */ diff --git a/libc/isystem/string_view b/libc/isystem/string_view deleted file mode 100644 index 13ff5c2d0..000000000 --- a/libc/isystem/string_view +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_STRING_VIEW_ -#define COSMOPOLITAN_LIBC_ISYSTEM_STRING_VIEW_ -#include "third_party/libcxx/string_view" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_STRING_VIEW_ */ diff --git a/libc/isystem/strstream b/libc/isystem/strstream deleted file mode 100644 index 550f5fe84..000000000 --- a/libc/isystem/strstream +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_STRSTREAM_ -#define COSMOPOLITAN_LIBC_ISYSTEM_STRSTREAM_ -#include "third_party/libcxx/strstream" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_STRSTREAM_ */ diff --git a/libc/isystem/system_error b/libc/isystem/system_error deleted file mode 100644 index f46605cbc..000000000 --- a/libc/isystem/system_error +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_SYSTEM_ERROR_ -#define COSMOPOLITAN_LIBC_ISYSTEM_SYSTEM_ERROR_ -#include "third_party/libcxx/system_error" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_SYSTEM_ERROR_ */ diff --git a/libc/isystem/thread b/libc/isystem/thread deleted file mode 100644 index 42d83e0ee..000000000 --- a/libc/isystem/thread +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_THREAD_ -#define COSMOPOLITAN_LIBC_ISYSTEM_THREAD_ -#include "third_party/libcxx/thread" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_THREAD_ */ diff --git a/libc/isystem/tuple b/libc/isystem/tuple deleted file mode 100644 index 53fbdee29..000000000 --- a/libc/isystem/tuple +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_TUPLE_ -#define COSMOPOLITAN_LIBC_ISYSTEM_TUPLE_ -#include "third_party/libcxx/tuple" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_TUPLE_ */ diff --git a/libc/isystem/type_traits b/libc/isystem/type_traits deleted file mode 100644 index 3a8b56df6..000000000 --- a/libc/isystem/type_traits +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_TYPE_TRAITS_ -#define COSMOPOLITAN_LIBC_ISYSTEM_TYPE_TRAITS_ -#include "third_party/libcxx/type_traits" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_TYPE_TRAITS_ */ diff --git a/libc/isystem/typeindex b/libc/isystem/typeindex deleted file mode 100644 index 7e808f30f..000000000 --- a/libc/isystem/typeindex +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_TYPEINDEX_ -#define COSMOPOLITAN_LIBC_ISYSTEM_TYPEINDEX_ -#include "third_party/libcxx/typeindex" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_TYPEINDEX_ */ diff --git a/libc/isystem/typeinfo b/libc/isystem/typeinfo deleted file mode 100644 index 3b67be340..000000000 --- a/libc/isystem/typeinfo +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_TYPEINFO_ -#define COSMOPOLITAN_LIBC_ISYSTEM_TYPEINFO_ -#include "third_party/libcxx/typeinfo" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_TYPEINFO_ */ diff --git a/libc/isystem/unordered_map b/libc/isystem/unordered_map deleted file mode 100644 index e1d11c7f7..000000000 --- a/libc/isystem/unordered_map +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_UNORDERED_MAP_ -#define COSMOPOLITAN_LIBC_ISYSTEM_UNORDERED_MAP_ -#include "third_party/libcxx/unordered_map" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_UNORDERED_MAP_ */ diff --git a/libc/isystem/unordered_set b/libc/isystem/unordered_set deleted file mode 100644 index e98f209f9..000000000 --- a/libc/isystem/unordered_set +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_UNORDERED_SET_ -#define COSMOPOLITAN_LIBC_ISYSTEM_UNORDERED_SET_ -#include "third_party/libcxx/unordered_set" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_UNORDERED_SET_ */ diff --git a/libc/isystem/utility b/libc/isystem/utility deleted file mode 100644 index cef92388f..000000000 --- a/libc/isystem/utility +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_UTILITY_ -#define COSMOPOLITAN_LIBC_ISYSTEM_UTILITY_ -#include "third_party/libcxx/utility" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_UTILITY_ */ diff --git a/libc/isystem/valarray b/libc/isystem/valarray deleted file mode 100644 index 4103c13bf..000000000 --- a/libc/isystem/valarray +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_VALARRAY_ -#define COSMOPOLITAN_LIBC_ISYSTEM_VALARRAY_ -#include "third_party/libcxx/valarray" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_VALARRAY_ */ diff --git a/libc/isystem/variant b/libc/isystem/variant deleted file mode 100644 index 1958970e1..000000000 --- a/libc/isystem/variant +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_VARIANT_ -#define COSMOPOLITAN_LIBC_ISYSTEM_VARIANT_ -#include "third_party/libcxx/variant" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_VARIANT_ */ diff --git a/libc/isystem/vector b/libc/isystem/vector deleted file mode 100644 index ea6720f04..000000000 --- a/libc/isystem/vector +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_VECTOR_ -#define COSMOPOLITAN_LIBC_ISYSTEM_VECTOR_ -#include "third_party/libcxx/vector" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_VECTOR_ */ diff --git a/libc/isystem/version b/libc/isystem/version deleted file mode 100644 index f87861ee9..000000000 --- a/libc/isystem/version +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef COSMOPOLITAN_LIBC_ISYSTEM_VERSION_ -#define COSMOPOLITAN_LIBC_ISYSTEM_VERSION_ -#include "third_party/libcxx/version" -#endif /* COSMOPOLITAN_LIBC_ISYSTEM_VERSION_ */ diff --git a/libc/runtime/at_quick_exit.c b/libc/runtime/at_quick_exit.c new file mode 100644 index 000000000..4786d801b --- /dev/null +++ b/libc/runtime/at_quick_exit.c @@ -0,0 +1,50 @@ +/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│ +│ vi: set et ft=c ts=2 sts=2 sw=2 fenc=utf-8 :vi │ +╞══════════════════════════════════════════════════════════════════════════════╡ +│ Copyright 2024 Justine Alexandra Roberts Tunney │ +│ │ +│ Permission to use, copy, modify, and/or distribute this software for │ +│ any purpose with or without fee is hereby granted, provided that the │ +│ above copyright notice and this permission notice appear in all copies. │ +│ │ +│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │ +│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │ +│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │ +│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │ +│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │ +│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │ +│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ +│ PERFORMANCE OF THIS SOFTWARE. │ +╚─────────────────────────────────────────────────────────────────────────────*/ +#include "libc/atomic.h" +#include "libc/macros.internal.h" +#include "libc/runtime/runtime.h" +#include "libc/thread/thread.h" + +static void (*funcs[32])(void); +static int count; +static pthread_spinlock_t lock; +pthread_spinlock_t *const __at_quick_exit_lockptr = &lock; + +void __funcs_on_quick_exit(void) { + void (*func)(void); + pthread_spin_lock(&lock); + while (count) { + func = funcs[--count]; + pthread_spin_unlock(&lock); + func(); + pthread_spin_lock(&lock); + } +} + +int at_quick_exit(void func(void)) { + int res = 0; + pthread_spin_lock(&lock); + if (count == ARRAYLEN(funcs)) { + res = -1; + } else { + funcs[count++] = func; + } + pthread_spin_unlock(&lock); + return res; +} diff --git a/libc/runtime/clone.c b/libc/runtime/clone.c index 0aef0e8a0..dbd5e2301 100644 --- a/libc/runtime/clone.c +++ b/libc/runtime/clone.c @@ -147,7 +147,7 @@ static textwindows errno_t CloneWindows(int (*func)(void *, int), char *stk, kNtStackSizeParamIsAReservation, &wt->utid))) { if (flags & CLONE_SETTLS) { struct CosmoTib *tib = tls; - tib->tib_syshand = h; + atomic_store_explicit(&tib->tib_syshand, h, memory_order_release); } if (flags & CLONE_PARENT_SETTID) { *ptid = wt->tid; @@ -529,7 +529,7 @@ static errno_t CloneSilicon(int (*fn)(void *, int), char *stk, size_t stksz, *ptid = tid; if (flags & CLONE_SETTLS) { struct CosmoTib *tib = tls; - tib[-1].tib_syshand = th; + atomic_store_explicit(&tib[-1].tib_syshand, th, memory_order_release); } } unassert(!__syslib->__pthread_attr_destroy(attr)); diff --git a/libc/runtime/quick_exit.c b/libc/runtime/quick_exit.c new file mode 100644 index 000000000..85a14e46d --- /dev/null +++ b/libc/runtime/quick_exit.c @@ -0,0 +1,28 @@ +/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│ +│ vi: set et ft=c ts=2 sts=2 sw=2 fenc=utf-8 :vi │ +╞══════════════════════════════════════════════════════════════════════════════╡ +│ Copyright 2024 Justine Alexandra Roberts Tunney │ +│ │ +│ Permission to use, copy, modify, and/or distribute this software for │ +│ any purpose with or without fee is hereby granted, provided that the │ +│ above copyright notice and this permission notice appear in all copies. │ +│ │ +│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │ +│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │ +│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │ +│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │ +│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │ +│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │ +│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ +│ PERFORMANCE OF THIS SOFTWARE. │ +╚─────────────────────────────────────────────────────────────────────────────*/ +#include "libc/intrin/weaken.h" +#include "libc/runtime/runtime.h" + +void __funcs_on_quick_exit(void); + +wontreturn void quick_exit(int code) { + if (_weaken(__funcs_on_quick_exit)) + _weaken(__funcs_on_quick_exit)(); + _Exit(code); +} diff --git a/libc/stdlib.h b/libc/stdlib.h index e7ef213f0..5d1a81ad7 100644 --- a/libc/stdlib.h +++ b/libc/stdlib.h @@ -11,5 +11,8 @@ char *gcvt(double, int, char *) libcesque; void setkey(const char *) libcesque; #endif +void quick_exit(int) wontreturn; +int at_quick_exit(void (*)(void)); + COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_LIBC_STDLIB_H_ */ diff --git a/libc/str/locale.h b/libc/str/locale.h index 37da90911..ec66e45dd 100644 --- a/libc/str/locale.h +++ b/libc/str/locale.h @@ -75,7 +75,7 @@ size_t strftime_l(char *, size_t, char const *, struct tm const *, locale_t); size_t strxfrm_l(char *, const char *, size_t, locale_t) libcesque; size_t wcsxfrm_l(wchar_t *, const wchar_t *, size_t, locale_t) libcesque; unsigned long long strtoull_l(const char *, char **, int, locale_t) libcesque; -unsigned long long wcstoull_l(const wchar_t *, wchar_t **, int, locale_t); +long long wcstoull_l(const wchar_t *, wchar_t **, int, locale_t); void freelocale(locale_t) libcesque; wint_t towlower_l(wint_t, locale_t) libcesque; wint_t towupper_l(wint_t, locale_t) libcesque; diff --git a/libc/thread/pthread_create.c b/libc/thread/pthread_create.c index 9a41a9a1f..f0a44e40a 100644 --- a/libc/thread/pthread_create.c +++ b/libc/thread/pthread_create.c @@ -75,14 +75,13 @@ void _pthread_free(struct PosixThread *pt, bool isfork) { unassert(!munmap(pt->pt_attr.__stackaddr, pt->pt_attr.__stacksize)); } if (!isfork) { - if (IsWindows()) { - if (pt->tib->tib_syshand) { - unassert(CloseHandle(pt->tib->tib_syshand)); - } - } else if (IsXnuSilicon()) { - if (pt->tib->tib_syshand) { - __syslib->__pthread_join(pt->tib->tib_syshand, 0); - } + uint64_t syshand = + atomic_load_explicit(&pt->tib->tib_syshand, memory_order_acquire); + if (syshand) { + if (IsWindows()) + unassert(CloseHandle(syshand)); + else if (IsXnuSilicon()) + __syslib->__pthread_join(syshand, 0); } } free(pt->pt_tls); diff --git a/libc/thread/pthread_exit.c b/libc/thread/pthread_exit.c index 75bef400b..6f6c9ad1a 100644 --- a/libc/thread/pthread_exit.c +++ b/libc/thread/pthread_exit.c @@ -164,7 +164,8 @@ wontreturn void pthread_exit(void *rc) { // note that the main thread is joinable by child threads if (pt->pt_flags & PT_STATIC) { atomic_store_explicit(&tib->tib_tid, 0, memory_order_release); - nsync_futex_wake_(&tib->tib_tid, INT_MAX, !IsWindows() && !IsXnu()); + nsync_futex_wake_((atomic_int *)&tib->tib_tid, INT_MAX, + !IsWindows() && !IsXnu()); _Exit1(0); } diff --git a/libc/thread/thread.h b/libc/thread/thread.h index b496ce664..dfc9ca1e1 100644 --- a/libc/thread/thread.h +++ b/libc/thread/thread.h @@ -44,8 +44,7 @@ COSMOPOLITAN_C_START_ #define PTHREAD_COND_INITIALIZER _PTHREAD_INIT #define PTHREAD_RWLOCK_INITIALIZER _PTHREAD_INIT #define PTHREAD_MUTEX_INITIALIZER _PTHREAD_INIT -#define _PTHREAD_INIT \ - { 0 } +#define _PTHREAD_INIT {0} typedef uintptr_t pthread_t; typedef int pthread_id_np_t; diff --git a/test/libc/BUILD.mk b/test/libc/BUILD.mk index 768794a47..9da7cbeab 100644 --- a/test/libc/BUILD.mk +++ b/test/libc/BUILD.mk @@ -10,7 +10,6 @@ o/$(MODE)/test/libc: \ o/$(MODE)/test/libc/mem \ o/$(MODE)/test/libc/nexgen32e \ o/$(MODE)/test/libc/proc \ - o/$(MODE)/test/libc/release \ o/$(MODE)/test/libc/runtime \ o/$(MODE)/test/libc/sock \ o/$(MODE)/test/libc/stdio \ diff --git a/test/libc/release/BUILD.mk b/test/libc/release/BUILD.mk deleted file mode 100644 index 86fa3c064..000000000 --- a/test/libc/release/BUILD.mk +++ /dev/null @@ -1,246 +0,0 @@ -#-*-mode:makefile-gmake;indent-tabs-mode:t;tab-width:8;coding:utf-8-*-┐ -#── vi: set noet ft=make ts=8 sw=8 fenc=utf-8 :vi ────────────────────┘ - -ifneq ($(MODE), dbg) -ifneq ($(MODE), asan) -ifeq ($(ARCH), x86_64) - -o/$(MODE)/test/libc/release/cosmopolitan.zip: private .UNSANDBOXED = 1 -o/$(MODE)/test/libc/release/cosmopolitan.zip: \ - o/cosmopolitan.h \ - o/$(MODE)/ape/ape.lds \ - o/$(MODE)/libc/crt/crt.o \ - o/$(MODE)/ape/ape.o \ - o/$(MODE)/ape/ape-copy-self.o \ - o/$(MODE)/ape/ape-no-modify-self.o \ - o/$(MODE)/cosmopolitan.a \ - o/$(MODE)/third_party/zip/zip - @$(COMPILE) -AZIP -T$@ \ - o/$(MODE)/third_party/zip/zip \ - -b$(TMPDIR) -qj $@ \ - o/cosmopolitan.h \ - o/$(MODE)/ape/ape.lds \ - o/$(MODE)/libc/crt/crt.o \ - o/$(MODE)/ape/ape.o \ - o/$(MODE)/ape/ape-copy-self.o \ - o/$(MODE)/ape/ape-no-modify-self.o \ - o/$(MODE)/cosmopolitan.a - -o/$(MODE)/test/libc/release/smoke.o: \ - test/libc/release/smoke.c \ - o/cosmopolitan.h - @$(COMPILE) -ACC $(CC) \ - -o $@ \ - -c \ - -Os \ - -Werror \ - -fno-pie \ - -nostdinc \ - -D_COSMO_SOURCE \ - -Wl,--gc-sections \ - -z noexecstack \ - -fno-omit-frame-pointer \ - -include o/cosmopolitan.h \ - -Wl,-z,max-page-size=0x1000 \ - -Wl,-z,common-page-size=0x1000 \ - -Wl,-z,noexecstack \ - $< - -o/$(MODE)/test/libc/release/smoke.dbg: \ - o/$(MODE)/test/libc/release/smoke.o \ - o/$(MODE)/ape/ape.lds \ - o/$(MODE)/libc/crt/crt.o \ - o/$(MODE)/ape/ape.o \ - o/$(MODE)/cosmopolitan.a - @$(COMPILE) -ALD $(LD) \ - -static \ - -no-pie \ - -nostdlib \ - --gc-sections \ - -z noexecstack \ - -z max-page-size=0x1000 \ - -z common-page-size=0x1000 \ - -T o/$(MODE)/ape/ape.lds \ - o/$(MODE)/test/libc/release/smoke.o \ - o/$(MODE)/libc/crt/crt.o \ - o/$(MODE)/ape/ape.o \ - o/$(MODE)/cosmopolitan.a \ - -o $@ - -o/$(MODE)/test/libc/release/smoke-nms.dbg: \ - o/$(MODE)/test/libc/release/smoke.o \ - o/$(MODE)/ape/ape.lds \ - o/$(MODE)/libc/crt/crt.o \ - o/$(MODE)/ape/ape-no-modify-self.o \ - o/$(MODE)/cosmopolitan.a - @$(COMPILE) -ALD $(LD) \ - -static \ - -no-pie \ - -nostdlib \ - --gc-sections \ - -z noexecstack \ - -z max-page-size=0x1000 \ - -z common-page-size=0x1000 \ - -T o/$(MODE)/ape/ape.lds \ - o/$(MODE)/test/libc/release/smoke.o \ - o/$(MODE)/libc/crt/crt.o \ - o/$(MODE)/ape/ape-no-modify-self.o \ - o/$(MODE)/cosmopolitan.a \ - -o $@ - -o/$(MODE)/test/libc/release/smoke-chibicc.dbg: \ - o/$(MODE)/test/libc/release/smoke-chibicc.o \ - o/$(MODE)/ape/ape.lds \ - o/$(MODE)/libc/crt/crt.o \ - o/$(MODE)/ape/ape-no-modify-self.o \ - o/$(MODE)/cosmopolitan.a \ - o/$(MODE)/third_party/chibicc/chibicc - @$(COMPILE) -ALD $(LD) \ - -static \ - -no-pie \ - -nostdlib \ - --gc-sections \ - -z noexecstack \ - -z max-page-size=0x1000 \ - -z common-page-size=0x1000 \ - -T o/$(MODE)/ape/ape.lds \ - o/$(MODE)/test/libc/release/smoke-chibicc.o \ - o/$(MODE)/libc/crt/crt.o \ - o/$(MODE)/ape/ape-no-modify-self.o \ - o/$(MODE)/cosmopolitan.a \ - -o $@ - -o/$(MODE)/test/libc/release/smoke-chibicc.o: \ - test/libc/release/smoke.c \ - o/cosmopolitan.h \ - o/$(MODE)/third_party/chibicc/chibicc - @$(COMPILE) -wACHIBICC \ - o/$(MODE)/third_party/chibicc/chibicc \ - $(CHIBICC_FLAGS) \ - -o $@ \ - -c \ - -Os \ - -static \ - -Werror \ - -fno-pie \ - -nostdlib \ - -nostdinc \ - -mno-red-zone \ - -D_COSMO_SOURCE \ - -fno-omit-frame-pointer \ - -include o/cosmopolitan.h \ - $< - -o/$(MODE)/test/libc/release/smokecxx.dbg: \ - o/$(MODE)/test/libc/release/smokecxx.o \ - o/$(MODE)/ape/ape.lds \ - o/$(MODE)/libc/crt/crt.o \ - o/$(MODE)/ape/ape.o \ - o/$(MODE)/cosmopolitan.a \ - o/$(MODE)/third_party/libcxx/libcxx.a - @$(COMPILE) -ALD $(LD) \ - -static \ - -no-pie \ - -nostdlib \ - --gc-sections \ - -z noexecstack \ - -z max-page-size=0x1000 \ - -z common-page-size=0x1000 \ - -T o/$(MODE)/ape/ape.lds \ - o/$(MODE)/test/libc/release/smokecxx.o \ - o/$(MODE)/libc/crt/crt.o \ - o/$(MODE)/ape/ape.o \ - o/$(MODE)/third_party/libcxx/libcxx.a \ - o/$(MODE)/cosmopolitan.a \ - -o $@ - -o/$(MODE)/test/libc/release/smokecxx.o: \ - test/libc/release/smokecxx.cc \ - o/cosmopolitan.h - @$(COMPILE) -ACXX $(CXX) \ - -o $@ \ - -c \ - -Os \ - -fno-pie \ - -nostdinc \ - -Wl,--gc-sections \ - -Wl,-z,noexecstack \ - -fno-omit-frame-pointer \ - -z max-page-size=0x1000 \ - -z common-page-size=0x1000 \ - -include o/cosmopolitan.h \ - test/libc/release/smokecxx.cc - -o/$(MODE)/test/libc/release/smokeansi.dbg: \ - o/$(MODE)/test/libc/release/smokeansi.o \ - o/$(MODE)/ape/ape.lds \ - o/$(MODE)/libc/crt/crt.o \ - o/$(MODE)/ape/ape.o \ - o/$(MODE)/cosmopolitan.a - @$(COMPILE) -ALD $(LD) \ - -static \ - -no-pie \ - -nostdlib \ - --gc-sections \ - -z noexecstack \ - -z max-page-size=0x1000 \ - -z common-page-size=0x1000 \ - -T o/$(MODE)/ape/ape.lds \ - o/$(MODE)/test/libc/release/smokeansi.o \ - o/$(MODE)/libc/crt/crt.o \ - o/$(MODE)/ape/ape.o \ - o/$(MODE)/cosmopolitan.a \ - -o $@ - -o/$(MODE)/test/libc/release/smokeansi.o: \ - test/libc/release/smoke.c \ - o/cosmopolitan.h - @$(COMPILE) -AANSI $(CC) \ - -o $@ \ - -c \ - -Os \ - -ansi \ - -Werror \ - -static \ - -fno-pie \ - -nostdinc \ - -D_COSMO_SOURCE \ - -Wl,--gc-sections \ - -Wl,-z,noexecstack \ - -fno-omit-frame-pointer \ - -include o/cosmopolitan.h \ - -Wl,-z,max-page-size=0x1000 \ - -Wl,-z,common-page-size=0x1000 \ - test/libc/release/smoke.c - -# TODO(jart): Rewrite these shell scripts as C code. -# o/$(MODE)/test/libc/release/metal.ok: \ -# test/libc/release/metal.sh \ -# o/$(MODE)/examples/hello \ -# o/$(MODE)/tool/build/blinkenlights.dbg -# @$(COMPILE) -ASHTEST -tT$@ $< -# o/$(MODE)/test/libc/release/emulate.ok: \ -# test/libc/release/emulate.sh \ -# o/$(MODE)/examples/hello \ -# o/$(MODE)/tool/build/blinkenlights.dbg -# @$(COMPILE) -ASHTEST -tT$@ $< - -.PHONY: o/$(MODE)/test/libc/release -o/$(MODE)/test/libc/release: \ - o/$(MODE)/test/libc/release/smoke \ - o/$(MODE)/test/libc/release/smoke.runs \ - o/$(MODE)/test/libc/release/smoke-nms \ - o/$(MODE)/test/libc/release/smoke-nms.runs \ - o/$(MODE)/test/libc/release/smoke-chibicc \ - o/$(MODE)/test/libc/release/smoke-chibicc.runs \ - o/$(MODE)/test/libc/release/smokecxx \ - o/$(MODE)/test/libc/release/smokecxx.runs \ - o/$(MODE)/test/libc/release/smokeansi \ - o/$(MODE)/test/libc/release/smokeansi.runs - -endif -endif -endif - -.PHONY: o/$(MODE)/test/libc/release -o/$(MODE)/test/libc/release: diff --git a/test/libc/release/emulate.sh b/test/libc/release/emulate.sh deleted file mode 100755 index bfccb8a22..000000000 --- a/test/libc/release/emulate.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh - -if [ "$MODE" = dbg ]; then - exit # TODO -fi - -if [ "$MODE" = opt ] || [ "$MODE" = optlinux ]; then - exit -fi - -# smoke test userspace binary emulation -CMD="o/$MODE/tool/build/blinkenlights.dbg o/$MODE/examples/hello" -if OUTPUT="$($CMD)"; then - if [ x"$OUTPUT" = x"hello world" ]; then - exit 0 - else - printf '%s\n' "error: $CMD printed wrong output: $OUTPUT" >&2 - exit 1 - fi -else - RC=$? - printf '%s\n' "error: $CMD failed: $RC" >&2 - exit $RC -fi diff --git a/test/libc/release/metal.sh b/test/libc/release/metal.sh deleted file mode 100755 index ea4920e0c..000000000 --- a/test/libc/release/metal.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh - -# TODO(jart): Stack size increase probably broke this. -exit - -if [ "$MODE" = dbg ]; then - exit # TODO -fi -if [ "$MODE" = opt ] || [ "$MODE" = optlinux ]; then - exit -fi - -$MKDIR o/$MODE/test/libc/release/ - -# smoke test booting on bare metal and printing data to serial uart -CMD="o/$MODE/tool/build/blinkenlights.dbg -r o/$MODE/examples/hello" -if OUTPUT="$($CMD)"; then - if [ x"$OUTPUT" = x"hello world" ]; then - exit 0 - else - printf '%s\n' "error: $CMD printed wrong output: $OUTPUT" >&2 - exit 1 - fi -else - RC=$? - printf '%s\n' "error: $CMD failed: $RC" >&2 - exit $RC -fi diff --git a/test/libc/release/smoke.c b/test/libc/release/smoke.c deleted file mode 100644 index 854bcf1b8..000000000 --- a/test/libc/release/smoke.c +++ /dev/null @@ -1,13 +0,0 @@ -int main(int argc, char *argv[]) { - int rc; - char *s; - FILE *f; - ShowCrashReports(); - s = strdup(argv[0]); - s[0] = 'Z'; - f = fopen("/dev/null", "w"); - fputs(gc(xasprintf("hello world %d %s\n", argc, s)), f); - fclose(f); - free(s); - return 0; -} diff --git a/test/libc/release/smokecxx.cc b/test/libc/release/smokecxx.cc deleted file mode 100644 index 4ff237bec..000000000 --- a/test/libc/release/smokecxx.cc +++ /dev/null @@ -1,7 +0,0 @@ -int main() { - int *x = new int[32]; - x[0] = 2; - x[1] = 2; - x[2] = x[0] + x[1]; - return x[2] - 4; -} diff --git a/third_party/chibicc/test/BUILD.mk b/third_party/chibicc/test/BUILD.mk index 26aa6c35a..08b572834 100644 --- a/third_party/chibicc/test/BUILD.mk +++ b/third_party/chibicc/test/BUILD.mk @@ -26,7 +26,7 @@ THIRD_PARTY_CHIBICC_TEST_COMS = \ $(THIRD_PARTY_CHIBICC_TEST_SRCS_TEST:%_test.c=o/$(MODE)/%_test) THIRD_PARTY_CHIBICC_TEST_OBJS = \ - $(THIRD_PARTY_CHIBICC_TEST_SRCS:%.c=o/$(MODE)/%.o) + $(THIRD_PARTY_CHIBICC_TEST_SRCS:%.c=o/$(MODE)/%.chibicc.o) THIRD_PARTY_CHIBICC_TEST_BINS = \ $(THIRD_PARTY_CHIBICC_TEST_COMS) \ @@ -55,22 +55,24 @@ THIRD_PARTY_CHIBICC_TEST_DEPS := \ $(THIRD_PARTY_CHIBICC_TEST_A): \ $(THIRD_PARTY_CHIBICC_TEST_A).pkg \ - o/$(MODE)/third_party/chibicc/test/common.o + o/$(MODE)/third_party/chibicc/test/common.chibicc.o $(THIRD_PARTY_CHIBICC_TEST_A).pkg: \ - o/$(MODE)/third_party/chibicc/test/common.o \ + o/$(MODE)/third_party/chibicc/test/common.chibicc.o \ $(foreach x,$(THIRD_PARTY_CHIBICC_TEST_DIRECTDEPS),$($(x)_A).pkg) o/$(MODE)/third_party/chibicc/test/%.dbg: \ $(THIRD_PARTY_CHIBICC_TEST_DEPS) \ $(THIRD_PARTY_CHIBICC_TEST_A) \ - o/$(MODE)/third_party/chibicc/test/%.o \ + o/$(MODE)/third_party/chibicc/test/%.chibicc.o \ $(THIRD_PARTY_CHIBICC_TEST_A).pkg \ $(CRT) \ $(APE_NO_MODIFY_SELF) @$(APELINK) -o/$(MODE)/third_party/chibicc/test/%.o: \ +.PRECIOUS: $(THIRD_PARTY_CHIBICC_TEST_OBJS) + +o/$(MODE)/third_party/chibicc/test/%.chibicc.o: \ third_party/chibicc/test/%.c \ $(CHIBICC) @$(COMPILE) -wAOBJECTIFY.c $(CHIBICC) $(CHIBICC_FLAGS) $(OUTPUT_OPTION) -c $< diff --git a/third_party/libcxx/BUILD.mk b/third_party/libcxx/BUILD.mk index a7feb2ed5..e45f701f1 100644 --- a/third_party/libcxx/BUILD.mk +++ b/third_party/libcxx/BUILD.mk @@ -7,180 +7,1060 @@ THIRD_PARTY_LIBCXX_ARTIFACTS += THIRD_PARTY_LIBCXX_A THIRD_PARTY_LIBCXX = $(THIRD_PARTY_LIBCXX_A_DEPS) $(THIRD_PARTY_LIBCXX_A) THIRD_PARTY_LIBCXX_A = o/$(MODE)/third_party/libcxx/libcxx.a -THIRD_PARTY_LIBCXX_A_HDRS = \ - third_party/libcxx/__bit_reference \ - third_party/libcxx/__bsd_locale_fallbacks.h \ - third_party/libcxx/__config \ - third_party/libcxx/__debug \ - third_party/libcxx/__errc \ - third_party/libcxx/__functional_base \ - third_party/libcxx/__hash_table \ - third_party/libcxx/__locale \ - third_party/libcxx/__mutex_base \ - third_party/libcxx/__node_handle \ - third_party/libcxx/__nullptr \ - third_party/libcxx/__split_buffer \ - third_party/libcxx/__sso_allocator \ - third_party/libcxx/__std_stream \ - third_party/libcxx/__string \ - third_party/libcxx/__threading_support \ - third_party/libcxx/__tree \ - third_party/libcxx/__tuple \ - third_party/libcxx/__undef_macros \ - third_party/libcxx/algorithm \ - third_party/libcxx/any \ - third_party/libcxx/array \ - third_party/libcxx/atomic \ - third_party/libcxx/atomic_support.hh \ - third_party/libcxx/bit \ - third_party/libcxx/bitset \ - third_party/libcxx/cassert \ - third_party/libcxx/ccomplex \ - third_party/libcxx/cctype \ - third_party/libcxx/cerrno \ - third_party/libcxx/cfenv \ - third_party/libcxx/cfloat \ - third_party/libcxx/charconv \ - third_party/libcxx/chrono \ - third_party/libcxx/cinttypes \ - third_party/libcxx/ciso646 \ - third_party/libcxx/climits \ - third_party/libcxx/clocale \ - third_party/libcxx/cmath \ - third_party/libcxx/codecvt \ - third_party/libcxx/compare \ - third_party/libcxx/complex \ - third_party/libcxx/condition_variable \ - third_party/libcxx/config_elast.h \ - third_party/libcxx/countof.internal.hh \ - third_party/libcxx/csetjmp \ - third_party/libcxx/csignal \ - third_party/libcxx/cstdarg \ - third_party/libcxx/cstdbool \ - third_party/libcxx/cstddef \ - third_party/libcxx/cstdint \ - third_party/libcxx/cstdio \ - third_party/libcxx/cstdlib \ - third_party/libcxx/cstring \ - third_party/libcxx/ctgmath \ - third_party/libcxx/ctime \ - third_party/libcxx/ctype.h \ - third_party/libcxx/cwchar \ - third_party/libcxx/cwctype \ - third_party/libcxx/deque \ - third_party/libcxx/errno.h \ - third_party/libcxx/exception \ - third_party/libcxx/exception_libcxxabi.hh \ - third_party/libcxx/exception_pointer_cxxabi.hh \ - third_party/libcxx/execution \ - third_party/libcxx/experimental/__config \ - third_party/libcxx/filesystem \ - third_party/libcxx/filesystem_common.hh \ - third_party/libcxx/forward_list \ - third_party/libcxx/fstream \ - third_party/libcxx/functional \ - third_party/libcxx/future \ - third_party/libcxx/include/atomic_support.hh \ - third_party/libcxx/include/config_elast.hh \ - third_party/libcxx/initializer_list \ - third_party/libcxx/iomanip \ - third_party/libcxx/ios \ - third_party/libcxx/iosfwd \ - third_party/libcxx/iostream \ - third_party/libcxx/istream \ - third_party/libcxx/iterator \ - third_party/libcxx/limits \ - third_party/libcxx/limits.h \ - third_party/libcxx/list \ - third_party/libcxx/locale \ - third_party/libcxx/locale.h \ - third_party/libcxx/map \ - third_party/libcxx/math.h \ - third_party/libcxx/memory \ - third_party/libcxx/mutex \ - third_party/libcxx/new \ - third_party/libcxx/numeric \ - third_party/libcxx/optional \ - third_party/libcxx/ostream \ - third_party/libcxx/queue \ - third_party/libcxx/queue \ - third_party/libcxx/random \ - third_party/libcxx/ratio \ - third_party/libcxx/refstring.hh \ - third_party/libcxx/regex \ - third_party/libcxx/scoped_allocator \ - third_party/libcxx/set \ - third_party/libcxx/shared_mutex \ - third_party/libcxx/span \ - third_party/libcxx/sstream \ - third_party/libcxx/stack \ - third_party/libcxx/stdexcept \ - third_party/libcxx/stdexcept_default.hh \ - third_party/libcxx/stdio.h \ - third_party/libcxx/stdlib.h \ - third_party/libcxx/streambuf \ - third_party/libcxx/string \ - third_party/libcxx/string.h \ - third_party/libcxx/string_view \ - third_party/libcxx/strstream \ - third_party/libcxx/system_error \ - third_party/libcxx/thread \ - third_party/libcxx/tuple \ - third_party/libcxx/type_traits \ - third_party/libcxx/typeindex \ - third_party/libcxx/typeinfo \ - third_party/libcxx/unordered_map \ - third_party/libcxx/unordered_set \ - third_party/libcxx/utility \ - third_party/libcxx/valarray \ - third_party/libcxx/variant \ - third_party/libcxx/vector \ - third_party/libcxx/version \ - third_party/libcxx/wchar.h \ - third_party/libcxx/wctype.h +THIRD_PARTY_LIBCXX_A_HDRS = \ +third_party/libcxx/__algorithm/adjacent_find.h \ +third_party/libcxx/__algorithm/all_of.h \ +third_party/libcxx/__algorithm/any_of.h \ +third_party/libcxx/__algorithm/binary_search.h \ +third_party/libcxx/__algorithm/clamp.h \ +third_party/libcxx/__algorithm/comp.h \ +third_party/libcxx/__algorithm/comp_ref_type.h \ +third_party/libcxx/__algorithm/copy.h \ +third_party/libcxx/__algorithm/copy_backward.h \ +third_party/libcxx/__algorithm/copy_if.h \ +third_party/libcxx/__algorithm/copy_move_common.h \ +third_party/libcxx/__algorithm/copy_n.h \ +third_party/libcxx/__algorithm/count.h \ +third_party/libcxx/__algorithm/count_if.h \ +third_party/libcxx/__algorithm/equal.h \ +third_party/libcxx/__algorithm/equal_range.h \ +third_party/libcxx/__algorithm/fill.h \ +third_party/libcxx/__algorithm/fill_n.h \ +third_party/libcxx/__algorithm/find.h \ +third_party/libcxx/__algorithm/find_end.h \ +third_party/libcxx/__algorithm/find_first_of.h \ +third_party/libcxx/__algorithm/find_if.h \ +third_party/libcxx/__algorithm/find_if_not.h \ +third_party/libcxx/__algorithm/for_each.h \ +third_party/libcxx/__algorithm/for_each_n.h \ +third_party/libcxx/__algorithm/for_each_segment.h \ +third_party/libcxx/__algorithm/generate.h \ +third_party/libcxx/__algorithm/generate_n.h \ +third_party/libcxx/__algorithm/half_positive.h \ +third_party/libcxx/__algorithm/in_found_result.h \ +third_party/libcxx/__algorithm/in_fun_result.h \ +third_party/libcxx/__algorithm/in_in_out_result.h \ +third_party/libcxx/__algorithm/in_in_result.h \ +third_party/libcxx/__algorithm/in_out_out_result.h \ +third_party/libcxx/__algorithm/in_out_result.h \ +third_party/libcxx/__algorithm/includes.h \ +third_party/libcxx/__algorithm/inplace_merge.h \ +third_party/libcxx/__algorithm/is_heap.h \ +third_party/libcxx/__algorithm/is_heap_until.h \ +third_party/libcxx/__algorithm/is_partitioned.h \ +third_party/libcxx/__algorithm/is_permutation.h \ +third_party/libcxx/__algorithm/is_sorted.h \ +third_party/libcxx/__algorithm/is_sorted_until.h \ +third_party/libcxx/__algorithm/iter_swap.h \ +third_party/libcxx/__algorithm/iterator_operations.h \ +third_party/libcxx/__algorithm/lexicographical_compare.h \ +third_party/libcxx/__algorithm/lexicographical_compare_three_way.h \ +third_party/libcxx/__algorithm/lower_bound.h \ +third_party/libcxx/__algorithm/make_heap.h \ +third_party/libcxx/__algorithm/make_projected.h \ +third_party/libcxx/__algorithm/max.h \ +third_party/libcxx/__algorithm/max_element.h \ +third_party/libcxx/__algorithm/merge.h \ +third_party/libcxx/__algorithm/min.h \ +third_party/libcxx/__algorithm/min_element.h \ +third_party/libcxx/__algorithm/min_max_result.h \ +third_party/libcxx/__algorithm/minmax.h \ +third_party/libcxx/__algorithm/minmax_element.h \ +third_party/libcxx/__algorithm/mismatch.h \ +third_party/libcxx/__algorithm/move.h \ +third_party/libcxx/__algorithm/move_backward.h \ +third_party/libcxx/__algorithm/next_permutation.h \ +third_party/libcxx/__algorithm/none_of.h \ +third_party/libcxx/__algorithm/nth_element.h \ +third_party/libcxx/__algorithm/partial_sort.h \ +third_party/libcxx/__algorithm/partial_sort_copy.h \ +third_party/libcxx/__algorithm/partition.h \ +third_party/libcxx/__algorithm/partition_copy.h \ +third_party/libcxx/__algorithm/partition_point.h \ +third_party/libcxx/__algorithm/pop_heap.h \ +third_party/libcxx/__algorithm/prev_permutation.h \ +third_party/libcxx/__algorithm/push_heap.h \ +third_party/libcxx/__algorithm/ranges_adjacent_find.h \ +third_party/libcxx/__algorithm/ranges_all_of.h \ +third_party/libcxx/__algorithm/ranges_any_of.h \ +third_party/libcxx/__algorithm/ranges_binary_search.h \ +third_party/libcxx/__algorithm/ranges_clamp.h \ +third_party/libcxx/__algorithm/ranges_copy.h \ +third_party/libcxx/__algorithm/ranges_copy_backward.h \ +third_party/libcxx/__algorithm/ranges_copy_if.h \ +third_party/libcxx/__algorithm/ranges_copy_n.h \ +third_party/libcxx/__algorithm/ranges_count.h \ +third_party/libcxx/__algorithm/ranges_count_if.h \ +third_party/libcxx/__algorithm/ranges_equal.h \ +third_party/libcxx/__algorithm/ranges_equal_range.h \ +third_party/libcxx/__algorithm/ranges_fill.h \ +third_party/libcxx/__algorithm/ranges_fill_n.h \ +third_party/libcxx/__algorithm/ranges_find.h \ +third_party/libcxx/__algorithm/ranges_find_end.h \ +third_party/libcxx/__algorithm/ranges_find_first_of.h \ +third_party/libcxx/__algorithm/ranges_find_if.h \ +third_party/libcxx/__algorithm/ranges_find_if_not.h \ +third_party/libcxx/__algorithm/ranges_for_each.h \ +third_party/libcxx/__algorithm/ranges_for_each_n.h \ +third_party/libcxx/__algorithm/ranges_generate.h \ +third_party/libcxx/__algorithm/ranges_generate_n.h \ +third_party/libcxx/__algorithm/ranges_includes.h \ +third_party/libcxx/__algorithm/ranges_inplace_merge.h \ +third_party/libcxx/__algorithm/ranges_is_heap.h \ +third_party/libcxx/__algorithm/ranges_is_heap_until.h \ +third_party/libcxx/__algorithm/ranges_is_partitioned.h \ +third_party/libcxx/__algorithm/ranges_is_permutation.h \ +third_party/libcxx/__algorithm/ranges_is_sorted.h \ +third_party/libcxx/__algorithm/ranges_is_sorted_until.h \ +third_party/libcxx/__algorithm/ranges_iterator_concept.h \ +third_party/libcxx/__algorithm/ranges_lexicographical_compare.h \ +third_party/libcxx/__algorithm/ranges_lower_bound.h \ +third_party/libcxx/__algorithm/ranges_make_heap.h \ +third_party/libcxx/__algorithm/ranges_max.h \ +third_party/libcxx/__algorithm/ranges_max_element.h \ +third_party/libcxx/__algorithm/ranges_merge.h \ +third_party/libcxx/__algorithm/ranges_min.h \ +third_party/libcxx/__algorithm/ranges_min_element.h \ +third_party/libcxx/__algorithm/ranges_minmax.h \ +third_party/libcxx/__algorithm/ranges_minmax_element.h \ +third_party/libcxx/__algorithm/ranges_mismatch.h \ +third_party/libcxx/__algorithm/ranges_move.h \ +third_party/libcxx/__algorithm/ranges_move_backward.h \ +third_party/libcxx/__algorithm/ranges_next_permutation.h \ +third_party/libcxx/__algorithm/ranges_none_of.h \ +third_party/libcxx/__algorithm/ranges_nth_element.h \ +third_party/libcxx/__algorithm/ranges_partial_sort.h \ +third_party/libcxx/__algorithm/ranges_partial_sort_copy.h \ +third_party/libcxx/__algorithm/ranges_partition.h \ +third_party/libcxx/__algorithm/ranges_partition_copy.h \ +third_party/libcxx/__algorithm/ranges_partition_point.h \ +third_party/libcxx/__algorithm/ranges_pop_heap.h \ +third_party/libcxx/__algorithm/ranges_prev_permutation.h \ +third_party/libcxx/__algorithm/ranges_push_heap.h \ +third_party/libcxx/__algorithm/ranges_remove.h \ +third_party/libcxx/__algorithm/ranges_remove_copy.h \ +third_party/libcxx/__algorithm/ranges_remove_copy_if.h \ +third_party/libcxx/__algorithm/ranges_remove_if.h \ +third_party/libcxx/__algorithm/ranges_replace.h \ +third_party/libcxx/__algorithm/ranges_replace_copy.h \ +third_party/libcxx/__algorithm/ranges_replace_copy_if.h \ +third_party/libcxx/__algorithm/ranges_replace_if.h \ +third_party/libcxx/__algorithm/ranges_reverse.h \ +third_party/libcxx/__algorithm/ranges_reverse_copy.h \ +third_party/libcxx/__algorithm/ranges_rotate.h \ +third_party/libcxx/__algorithm/ranges_rotate_copy.h \ +third_party/libcxx/__algorithm/ranges_sample.h \ +third_party/libcxx/__algorithm/ranges_search.h \ +third_party/libcxx/__algorithm/ranges_search_n.h \ +third_party/libcxx/__algorithm/ranges_set_difference.h \ +third_party/libcxx/__algorithm/ranges_set_intersection.h \ +third_party/libcxx/__algorithm/ranges_set_symmetric_difference.h \ +third_party/libcxx/__algorithm/ranges_set_union.h \ +third_party/libcxx/__algorithm/ranges_shuffle.h \ +third_party/libcxx/__algorithm/ranges_sort.h \ +third_party/libcxx/__algorithm/ranges_sort_heap.h \ +third_party/libcxx/__algorithm/ranges_stable_partition.h \ +third_party/libcxx/__algorithm/ranges_stable_sort.h \ +third_party/libcxx/__algorithm/ranges_starts_with.h \ +third_party/libcxx/__algorithm/ranges_swap_ranges.h \ +third_party/libcxx/__algorithm/ranges_transform.h \ +third_party/libcxx/__algorithm/ranges_unique.h \ +third_party/libcxx/__algorithm/ranges_unique_copy.h \ +third_party/libcxx/__algorithm/ranges_upper_bound.h \ +third_party/libcxx/__algorithm/remove.h \ +third_party/libcxx/__algorithm/remove_copy.h \ +third_party/libcxx/__algorithm/remove_copy_if.h \ +third_party/libcxx/__algorithm/remove_if.h \ +third_party/libcxx/__algorithm/replace.h \ +third_party/libcxx/__algorithm/replace_copy.h \ +third_party/libcxx/__algorithm/replace_copy_if.h \ +third_party/libcxx/__algorithm/replace_if.h \ +third_party/libcxx/__algorithm/reverse.h \ +third_party/libcxx/__algorithm/reverse_copy.h \ +third_party/libcxx/__algorithm/rotate.h \ +third_party/libcxx/__algorithm/rotate_copy.h \ +third_party/libcxx/__algorithm/sample.h \ +third_party/libcxx/__algorithm/search.h \ +third_party/libcxx/__algorithm/search_n.h \ +third_party/libcxx/__algorithm/set_difference.h \ +third_party/libcxx/__algorithm/set_intersection.h \ +third_party/libcxx/__algorithm/set_symmetric_difference.h \ +third_party/libcxx/__algorithm/set_union.h \ +third_party/libcxx/__algorithm/shift_left.h \ +third_party/libcxx/__algorithm/shift_right.h \ +third_party/libcxx/__algorithm/shuffle.h \ +third_party/libcxx/__algorithm/sift_down.h \ +third_party/libcxx/__algorithm/sort.h \ +third_party/libcxx/__algorithm/sort_heap.h \ +third_party/libcxx/__algorithm/stable_partition.h \ +third_party/libcxx/__algorithm/stable_sort.h \ +third_party/libcxx/__algorithm/swap_ranges.h \ +third_party/libcxx/__algorithm/three_way_comp_ref_type.h \ +third_party/libcxx/__algorithm/transform.h \ +third_party/libcxx/__algorithm/uniform_random_bit_generator_adaptor.h \ +third_party/libcxx/__algorithm/unique.h \ +third_party/libcxx/__algorithm/unique_copy.h \ +third_party/libcxx/__algorithm/unwrap_iter.h \ +third_party/libcxx/__algorithm/unwrap_range.h \ +third_party/libcxx/__algorithm/upper_bound.h \ +third_party/libcxx/__assert \ +third_party/libcxx/__atomic/aliases.h \ +third_party/libcxx/__atomic/atomic.h \ +third_party/libcxx/__atomic/atomic_base.h \ +third_party/libcxx/__atomic/atomic_flag.h \ +third_party/libcxx/__atomic/atomic_init.h \ +third_party/libcxx/__atomic/atomic_lock_free.h \ +third_party/libcxx/__atomic/atomic_sync.h \ +third_party/libcxx/__atomic/check_memory_order.h \ +third_party/libcxx/__atomic/contention_t.h \ +third_party/libcxx/__atomic/cxx_atomic_impl.h \ +third_party/libcxx/__atomic/fence.h \ +third_party/libcxx/__atomic/is_always_lock_free.h \ +third_party/libcxx/__atomic/kill_dependency.h \ +third_party/libcxx/__atomic/memory_order.h \ +third_party/libcxx/__availability \ +third_party/libcxx/__bit/bit_cast.h \ +third_party/libcxx/__bit/bit_ceil.h \ +third_party/libcxx/__bit/bit_floor.h \ +third_party/libcxx/__bit/bit_log2.h \ +third_party/libcxx/__bit/bit_width.h \ +third_party/libcxx/__bit/blsr.h \ +third_party/libcxx/__bit/byteswap.h \ +third_party/libcxx/__bit/countl.h \ +third_party/libcxx/__bit/countr.h \ +third_party/libcxx/__bit/endian.h \ +third_party/libcxx/__bit/has_single_bit.h \ +third_party/libcxx/__bit/popcount.h \ +third_party/libcxx/__bit/rotate.h \ +third_party/libcxx/__bit_reference \ +third_party/libcxx/__charconv/chars_format.h \ +third_party/libcxx/__charconv/from_chars_integral.h \ +third_party/libcxx/__charconv/from_chars_result.h \ +third_party/libcxx/__charconv/tables.h \ +third_party/libcxx/__charconv/to_chars.h \ +third_party/libcxx/__charconv/to_chars_base_10.h \ +third_party/libcxx/__charconv/to_chars_floating_point.h \ +third_party/libcxx/__charconv/to_chars_integral.h \ +third_party/libcxx/__charconv/to_chars_result.h \ +third_party/libcxx/__charconv/traits.h \ +third_party/libcxx/__chrono/calendar.h \ +third_party/libcxx/__chrono/concepts.h \ +third_party/libcxx/__chrono/convert_to_timespec.h \ +third_party/libcxx/__chrono/convert_to_tm.h \ +third_party/libcxx/__chrono/day.h \ +third_party/libcxx/__chrono/duration.h \ +third_party/libcxx/__chrono/file_clock.h \ +third_party/libcxx/__chrono/formatter.h \ +third_party/libcxx/__chrono/hh_mm_ss.h \ +third_party/libcxx/__chrono/high_resolution_clock.h \ +third_party/libcxx/__chrono/literals.h \ +third_party/libcxx/__chrono/month.h \ +third_party/libcxx/__chrono/month_weekday.h \ +third_party/libcxx/__chrono/monthday.h \ +third_party/libcxx/__chrono/ostream.h \ +third_party/libcxx/__chrono/parser_std_format_spec.h \ +third_party/libcxx/__chrono/statically_widen.h \ +third_party/libcxx/__chrono/steady_clock.h \ +third_party/libcxx/__chrono/system_clock.h \ +third_party/libcxx/__chrono/time_point.h \ +third_party/libcxx/__chrono/weekday.h \ +third_party/libcxx/__chrono/year.h \ +third_party/libcxx/__chrono/year_month.h \ +third_party/libcxx/__chrono/year_month_day.h \ +third_party/libcxx/__chrono/year_month_weekday.h \ +third_party/libcxx/__compare/common_comparison_category.h \ +third_party/libcxx/__compare/compare_partial_order_fallback.h \ +third_party/libcxx/__compare/compare_strong_order_fallback.h \ +third_party/libcxx/__compare/compare_three_way.h \ +third_party/libcxx/__compare/compare_three_way_result.h \ +third_party/libcxx/__compare/compare_weak_order_fallback.h \ +third_party/libcxx/__compare/is_eq.h \ +third_party/libcxx/__compare/ordering.h \ +third_party/libcxx/__compare/partial_order.h \ +third_party/libcxx/__compare/strong_order.h \ +third_party/libcxx/__compare/synth_three_way.h \ +third_party/libcxx/__compare/three_way_comparable.h \ +third_party/libcxx/__compare/weak_order.h \ +third_party/libcxx/__concepts/arithmetic.h \ +third_party/libcxx/__concepts/assignable.h \ +third_party/libcxx/__concepts/boolean_testable.h \ +third_party/libcxx/__concepts/class_or_enum.h \ +third_party/libcxx/__concepts/common_reference_with.h \ +third_party/libcxx/__concepts/common_with.h \ +third_party/libcxx/__concepts/constructible.h \ +third_party/libcxx/__concepts/convertible_to.h \ +third_party/libcxx/__concepts/copyable.h \ +third_party/libcxx/__concepts/derived_from.h \ +third_party/libcxx/__concepts/destructible.h \ +third_party/libcxx/__concepts/different_from.h \ +third_party/libcxx/__concepts/equality_comparable.h \ +third_party/libcxx/__concepts/invocable.h \ +third_party/libcxx/__concepts/movable.h \ +third_party/libcxx/__concepts/predicate.h \ +third_party/libcxx/__concepts/regular.h \ +third_party/libcxx/__concepts/relation.h \ +third_party/libcxx/__concepts/same_as.h \ +third_party/libcxx/__concepts/semiregular.h \ +third_party/libcxx/__concepts/swappable.h \ +third_party/libcxx/__concepts/totally_ordered.h \ +third_party/libcxx/__condition_variable/condition_variable.h \ +third_party/libcxx/__config \ +third_party/libcxx/__config_site \ +third_party/libcxx/__coroutine/coroutine_handle.h \ +third_party/libcxx/__coroutine/coroutine_traits.h \ +third_party/libcxx/__coroutine/noop_coroutine_handle.h \ +third_party/libcxx/__coroutine/trivial_awaitables.h \ +third_party/libcxx/__debug \ +third_party/libcxx/__debug_utils/randomize_range.h \ +third_party/libcxx/__exception/exception.h \ +third_party/libcxx/__exception/exception_ptr.h \ +third_party/libcxx/__exception/nested_exception.h \ +third_party/libcxx/__exception/operations.h \ +third_party/libcxx/__exception/terminate.h \ +third_party/libcxx/__expected/bad_expected_access.h \ +third_party/libcxx/__expected/expected.h \ +third_party/libcxx/__expected/unexpect.h \ +third_party/libcxx/__expected/unexpected.h \ +third_party/libcxx/__filesystem/copy_options.h \ +third_party/libcxx/__filesystem/directory_entry.h \ +third_party/libcxx/__filesystem/directory_iterator.h \ +third_party/libcxx/__filesystem/directory_options.h \ +third_party/libcxx/__filesystem/file_status.h \ +third_party/libcxx/__filesystem/file_time_type.h \ +third_party/libcxx/__filesystem/file_type.h \ +third_party/libcxx/__filesystem/filesystem_error.h \ +third_party/libcxx/__filesystem/operations.h \ +third_party/libcxx/__filesystem/path.h \ +third_party/libcxx/__filesystem/path_iterator.h \ +third_party/libcxx/__filesystem/perm_options.h \ +third_party/libcxx/__filesystem/perms.h \ +third_party/libcxx/__filesystem/recursive_directory_iterator.h \ +third_party/libcxx/__filesystem/space_info.h \ +third_party/libcxx/__filesystem/u8path.h \ +third_party/libcxx/__format/buffer.h \ +third_party/libcxx/__format/concepts.h \ +third_party/libcxx/__format/container_adaptor.h \ +third_party/libcxx/__format/enable_insertable.h \ +third_party/libcxx/__format/escaped_output_table.h \ +third_party/libcxx/__format/extended_grapheme_cluster_table.h \ +third_party/libcxx/__format/format_arg.h \ +third_party/libcxx/__format/format_arg_store.h \ +third_party/libcxx/__format/format_args.h \ +third_party/libcxx/__format/format_context.h \ +third_party/libcxx/__format/format_error.h \ +third_party/libcxx/__format/format_functions.h \ +third_party/libcxx/__format/format_fwd.h \ +third_party/libcxx/__format/format_parse_context.h \ +third_party/libcxx/__format/format_string.h \ +third_party/libcxx/__format/format_to_n_result.h \ +third_party/libcxx/__format/formatter.h \ +third_party/libcxx/__format/formatter_bool.h \ +third_party/libcxx/__format/formatter_char.h \ +third_party/libcxx/__format/formatter_floating_point.h \ +third_party/libcxx/__format/formatter_integer.h \ +third_party/libcxx/__format/formatter_integral.h \ +third_party/libcxx/__format/formatter_output.h \ +third_party/libcxx/__format/formatter_pointer.h \ +third_party/libcxx/__format/formatter_string.h \ +third_party/libcxx/__format/formatter_tuple.h \ +third_party/libcxx/__format/parser_std_format_spec.h \ +third_party/libcxx/__format/range_default_formatter.h \ +third_party/libcxx/__format/range_formatter.h \ +third_party/libcxx/__format/unicode.h \ +third_party/libcxx/__format/width_estimation_table.h \ +third_party/libcxx/__functional/binary_function.h \ +third_party/libcxx/__functional/binary_negate.h \ +third_party/libcxx/__functional/bind.h \ +third_party/libcxx/__functional/bind_back.h \ +third_party/libcxx/__functional/bind_front.h \ +third_party/libcxx/__functional/binder1st.h \ +third_party/libcxx/__functional/binder2nd.h \ +third_party/libcxx/__functional/boyer_moore_searcher.h \ +third_party/libcxx/__functional/compose.h \ +third_party/libcxx/__functional/default_searcher.h \ +third_party/libcxx/__functional/function.h \ +third_party/libcxx/__functional/hash.h \ +third_party/libcxx/__functional/identity.h \ +third_party/libcxx/__functional/invoke.h \ +third_party/libcxx/__functional/is_transparent.h \ +third_party/libcxx/__functional/mem_fn.h \ +third_party/libcxx/__functional/mem_fun_ref.h \ +third_party/libcxx/__functional/not_fn.h \ +third_party/libcxx/__functional/operations.h \ +third_party/libcxx/__functional/perfect_forward.h \ +third_party/libcxx/__functional/pointer_to_binary_function.h \ +third_party/libcxx/__functional/pointer_to_unary_function.h \ +third_party/libcxx/__functional/ranges_operations.h \ +third_party/libcxx/__functional/reference_wrapper.h \ +third_party/libcxx/__functional/unary_function.h \ +third_party/libcxx/__functional/unary_negate.h \ +third_party/libcxx/__functional/weak_result_type.h \ +third_party/libcxx/__fwd/array.h \ +third_party/libcxx/__fwd/fstream.h \ +third_party/libcxx/__fwd/get.h \ +third_party/libcxx/__fwd/hash.h \ +third_party/libcxx/__fwd/ios.h \ +third_party/libcxx/__fwd/istream.h \ +third_party/libcxx/__fwd/memory_resource.h \ +third_party/libcxx/__fwd/ostream.h \ +third_party/libcxx/__fwd/pair.h \ +third_party/libcxx/__fwd/span.h \ +third_party/libcxx/__fwd/sstream.h \ +third_party/libcxx/__fwd/streambuf.h \ +third_party/libcxx/__fwd/string.h \ +third_party/libcxx/__fwd/string_view.h \ +third_party/libcxx/__fwd/subrange.h \ +third_party/libcxx/__fwd/tuple.h \ +third_party/libcxx/__hash_table \ +third_party/libcxx/__ios/fpos.h \ +third_party/libcxx/__iterator/access.h \ +third_party/libcxx/__iterator/advance.h \ +third_party/libcxx/__iterator/back_insert_iterator.h \ +third_party/libcxx/__iterator/bounded_iter.h \ +third_party/libcxx/__iterator/common_iterator.h \ +third_party/libcxx/__iterator/concepts.h \ +third_party/libcxx/__iterator/counted_iterator.h \ +third_party/libcxx/__iterator/data.h \ +third_party/libcxx/__iterator/default_sentinel.h \ +third_party/libcxx/__iterator/distance.h \ +third_party/libcxx/__iterator/empty.h \ +third_party/libcxx/__iterator/erase_if_container.h \ +third_party/libcxx/__iterator/front_insert_iterator.h \ +third_party/libcxx/__iterator/incrementable_traits.h \ +third_party/libcxx/__iterator/indirectly_comparable.h \ +third_party/libcxx/__iterator/insert_iterator.h \ +third_party/libcxx/__iterator/istream_iterator.h \ +third_party/libcxx/__iterator/istreambuf_iterator.h \ +third_party/libcxx/__iterator/iter_move.h \ +third_party/libcxx/__iterator/iter_swap.h \ +third_party/libcxx/__iterator/iterator.h \ +third_party/libcxx/__iterator/iterator_traits.h \ +third_party/libcxx/__iterator/iterator_with_data.h \ +third_party/libcxx/__iterator/mergeable.h \ +third_party/libcxx/__iterator/move_iterator.h \ +third_party/libcxx/__iterator/move_sentinel.h \ +third_party/libcxx/__iterator/next.h \ +third_party/libcxx/__iterator/ostream_iterator.h \ +third_party/libcxx/__iterator/ostreambuf_iterator.h \ +third_party/libcxx/__iterator/permutable.h \ +third_party/libcxx/__iterator/prev.h \ +third_party/libcxx/__iterator/projected.h \ +third_party/libcxx/__iterator/readable_traits.h \ +third_party/libcxx/__iterator/reverse_access.h \ +third_party/libcxx/__iterator/reverse_iterator.h \ +third_party/libcxx/__iterator/segmented_iterator.h \ +third_party/libcxx/__iterator/size.h \ +third_party/libcxx/__iterator/sortable.h \ +third_party/libcxx/__iterator/unreachable_sentinel.h \ +third_party/libcxx/__iterator/wrap_iter.h \ +third_party/libcxx/__locale \ +third_party/libcxx/__mdspan/extents.h \ +third_party/libcxx/__memory/addressof.h \ +third_party/libcxx/__memory/align.h \ +third_party/libcxx/__memory/aligned_alloc.h \ +third_party/libcxx/__memory/allocate_at_least.h \ +third_party/libcxx/__memory/allocation_guard.h \ +third_party/libcxx/__memory/allocator.h \ +third_party/libcxx/__memory/allocator_arg_t.h \ +third_party/libcxx/__memory/allocator_destructor.h \ +third_party/libcxx/__memory/allocator_traits.h \ +third_party/libcxx/__memory/assume_aligned.h \ +third_party/libcxx/__memory/auto_ptr.h \ +third_party/libcxx/__memory/builtin_new_allocator.h \ +third_party/libcxx/__memory/compressed_pair.h \ +third_party/libcxx/__memory/concepts.h \ +third_party/libcxx/__memory/construct_at.h \ +third_party/libcxx/__memory/destruct_n.h \ +third_party/libcxx/__memory/pointer_traits.h \ +third_party/libcxx/__memory/ranges_construct_at.h \ +third_party/libcxx/__memory/ranges_uninitialized_algorithms.h \ +third_party/libcxx/__memory/raw_storage_iterator.h \ +third_party/libcxx/__memory/shared_ptr.h \ +third_party/libcxx/__memory/swap_allocator.h \ +third_party/libcxx/__memory/temp_value.h \ +third_party/libcxx/__memory/temporary_buffer.h \ +third_party/libcxx/__memory/uninitialized_algorithms.h \ +third_party/libcxx/__memory/unique_ptr.h \ +third_party/libcxx/__memory/uses_allocator.h \ +third_party/libcxx/__memory/uses_allocator_construction.h \ +third_party/libcxx/__memory/voidify.h \ +third_party/libcxx/__memory_resource/memory_resource.h \ +third_party/libcxx/__memory_resource/monotonic_buffer_resource.h \ +third_party/libcxx/__memory_resource/polymorphic_allocator.h \ +third_party/libcxx/__memory_resource/pool_options.h \ +third_party/libcxx/__memory_resource/synchronized_pool_resource.h \ +third_party/libcxx/__memory_resource/unsynchronized_pool_resource.h \ +third_party/libcxx/__mutex/lock_guard.h \ +third_party/libcxx/__mutex/mutex.h \ +third_party/libcxx/__mutex/tag_types.h \ +third_party/libcxx/__mutex/unique_lock.h \ +third_party/libcxx/__node_handle \ +third_party/libcxx/__numeric/accumulate.h \ +third_party/libcxx/__numeric/adjacent_difference.h \ +third_party/libcxx/__numeric/exclusive_scan.h \ +third_party/libcxx/__numeric/gcd_lcm.h \ +third_party/libcxx/__numeric/inclusive_scan.h \ +third_party/libcxx/__numeric/inner_product.h \ +third_party/libcxx/__numeric/iota.h \ +third_party/libcxx/__numeric/midpoint.h \ +third_party/libcxx/__numeric/partial_sum.h \ +third_party/libcxx/__numeric/reduce.h \ +third_party/libcxx/__numeric/transform_exclusive_scan.h \ +third_party/libcxx/__numeric/transform_inclusive_scan.h \ +third_party/libcxx/__numeric/transform_reduce.h \ +third_party/libcxx/__random/bernoulli_distribution.h \ +third_party/libcxx/__random/binomial_distribution.h \ +third_party/libcxx/__random/cauchy_distribution.h \ +third_party/libcxx/__random/chi_squared_distribution.h \ +third_party/libcxx/__random/clamp_to_integral.h \ +third_party/libcxx/__random/default_random_engine.h \ +third_party/libcxx/__random/discard_block_engine.h \ +third_party/libcxx/__random/discrete_distribution.h \ +third_party/libcxx/__random/exponential_distribution.h \ +third_party/libcxx/__random/extreme_value_distribution.h \ +third_party/libcxx/__random/fisher_f_distribution.h \ +third_party/libcxx/__random/gamma_distribution.h \ +third_party/libcxx/__random/generate_canonical.h \ +third_party/libcxx/__random/geometric_distribution.h \ +third_party/libcxx/__random/independent_bits_engine.h \ +third_party/libcxx/__random/is_seed_sequence.h \ +third_party/libcxx/__random/is_valid.h \ +third_party/libcxx/__random/knuth_b.h \ +third_party/libcxx/__random/linear_congruential_engine.h \ +third_party/libcxx/__random/log2.h \ +third_party/libcxx/__random/lognormal_distribution.h \ +third_party/libcxx/__random/mersenne_twister_engine.h \ +third_party/libcxx/__random/negative_binomial_distribution.h \ +third_party/libcxx/__random/normal_distribution.h \ +third_party/libcxx/__random/piecewise_constant_distribution.h \ +third_party/libcxx/__random/piecewise_linear_distribution.h \ +third_party/libcxx/__random/poisson_distribution.h \ +third_party/libcxx/__random/random_device.h \ +third_party/libcxx/__random/ranlux.h \ +third_party/libcxx/__random/seed_seq.h \ +third_party/libcxx/__random/shuffle_order_engine.h \ +third_party/libcxx/__random/student_t_distribution.h \ +third_party/libcxx/__random/subtract_with_carry_engine.h \ +third_party/libcxx/__random/uniform_int_distribution.h \ +third_party/libcxx/__random/uniform_random_bit_generator.h \ +third_party/libcxx/__random/uniform_real_distribution.h \ +third_party/libcxx/__random/weibull_distribution.h \ +third_party/libcxx/__ranges/access.h \ +third_party/libcxx/__ranges/all.h \ +third_party/libcxx/__ranges/as_rvalue_view.h \ +third_party/libcxx/__ranges/common_view.h \ +third_party/libcxx/__ranges/concepts.h \ +third_party/libcxx/__ranges/container_compatible_range.h \ +third_party/libcxx/__ranges/copyable_box.h \ +third_party/libcxx/__ranges/counted.h \ +third_party/libcxx/__ranges/dangling.h \ +third_party/libcxx/__ranges/data.h \ +third_party/libcxx/__ranges/drop_view.h \ +third_party/libcxx/__ranges/drop_while_view.h \ +third_party/libcxx/__ranges/elements_view.h \ +third_party/libcxx/__ranges/empty.h \ +third_party/libcxx/__ranges/empty_view.h \ +third_party/libcxx/__ranges/enable_borrowed_range.h \ +third_party/libcxx/__ranges/enable_view.h \ +third_party/libcxx/__ranges/filter_view.h \ +third_party/libcxx/__ranges/from_range.h \ +third_party/libcxx/__ranges/iota_view.h \ +third_party/libcxx/__ranges/istream_view.h \ +third_party/libcxx/__ranges/join_view.h \ +third_party/libcxx/__ranges/lazy_split_view.h \ +third_party/libcxx/__ranges/non_propagating_cache.h \ +third_party/libcxx/__ranges/owning_view.h \ +third_party/libcxx/__ranges/range_adaptor.h \ +third_party/libcxx/__ranges/rbegin.h \ +third_party/libcxx/__ranges/ref_view.h \ +third_party/libcxx/__ranges/rend.h \ +third_party/libcxx/__ranges/reverse_view.h \ +third_party/libcxx/__ranges/single_view.h \ +third_party/libcxx/__ranges/size.h \ +third_party/libcxx/__ranges/split_view.h \ +third_party/libcxx/__ranges/subrange.h \ +third_party/libcxx/__ranges/take_view.h \ +third_party/libcxx/__ranges/take_while_view.h \ +third_party/libcxx/__ranges/transform_view.h \ +third_party/libcxx/__ranges/view_interface.h \ +third_party/libcxx/__ranges/views.h \ +third_party/libcxx/__ranges/zip_view.h \ +third_party/libcxx/__split_buffer \ +third_party/libcxx/__std_mbstate_t.h \ +third_party/libcxx/__stop_token/atomic_unique_lock.h \ +third_party/libcxx/__stop_token/intrusive_list_view.h \ +third_party/libcxx/__stop_token/intrusive_shared_ptr.h \ +third_party/libcxx/__string/char_traits.h \ +third_party/libcxx/__string/constexpr_c_functions.h \ +third_party/libcxx/__string/extern_template_lists.h \ +third_party/libcxx/__system_error/errc.h \ +third_party/libcxx/__system_error/error_category.h \ +third_party/libcxx/__system_error/error_code.h \ +third_party/libcxx/__system_error/error_condition.h \ +third_party/libcxx/__system_error/system_error.h \ +third_party/libcxx/__thread/poll_with_backoff.h \ +third_party/libcxx/__thread/timed_backoff_policy.h \ +third_party/libcxx/__threading_support \ +third_party/libcxx/__tree \ +third_party/libcxx/__tuple/make_tuple_types.h \ +third_party/libcxx/__tuple/pair_like.h \ +third_party/libcxx/__tuple/sfinae_helpers.h \ +third_party/libcxx/__tuple/tuple_element.h \ +third_party/libcxx/__tuple/tuple_indices.h \ +third_party/libcxx/__tuple/tuple_like.h \ +third_party/libcxx/__tuple/tuple_like_ext.h \ +third_party/libcxx/__tuple/tuple_size.h \ +third_party/libcxx/__tuple/tuple_types.h \ +third_party/libcxx/__type_traits/add_const.h \ +third_party/libcxx/__type_traits/add_cv.h \ +third_party/libcxx/__type_traits/add_lvalue_reference.h \ +third_party/libcxx/__type_traits/add_pointer.h \ +third_party/libcxx/__type_traits/add_rvalue_reference.h \ +third_party/libcxx/__type_traits/add_volatile.h \ +third_party/libcxx/__type_traits/aligned_storage.h \ +third_party/libcxx/__type_traits/aligned_union.h \ +third_party/libcxx/__type_traits/alignment_of.h \ +third_party/libcxx/__type_traits/apply_cv.h \ +third_party/libcxx/__type_traits/can_extract_key.h \ +third_party/libcxx/__type_traits/common_reference.h \ +third_party/libcxx/__type_traits/common_type.h \ +third_party/libcxx/__type_traits/conditional.h \ +third_party/libcxx/__type_traits/conjunction.h \ +third_party/libcxx/__type_traits/copy_cv.h \ +third_party/libcxx/__type_traits/copy_cvref.h \ +third_party/libcxx/__type_traits/decay.h \ +third_party/libcxx/__type_traits/dependent_type.h \ +third_party/libcxx/__type_traits/disjunction.h \ +third_party/libcxx/__type_traits/enable_if.h \ +third_party/libcxx/__type_traits/extent.h \ +third_party/libcxx/__type_traits/has_unique_object_representation.h \ +third_party/libcxx/__type_traits/has_virtual_destructor.h \ +third_party/libcxx/__type_traits/integral_constant.h \ +third_party/libcxx/__type_traits/invoke.h \ +third_party/libcxx/__type_traits/is_abstract.h \ +third_party/libcxx/__type_traits/is_aggregate.h \ +third_party/libcxx/__type_traits/is_allocator.h \ +third_party/libcxx/__type_traits/is_always_bitcastable.h \ +third_party/libcxx/__type_traits/is_arithmetic.h \ +third_party/libcxx/__type_traits/is_array.h \ +third_party/libcxx/__type_traits/is_assignable.h \ +third_party/libcxx/__type_traits/is_base_of.h \ +third_party/libcxx/__type_traits/is_bounded_array.h \ +third_party/libcxx/__type_traits/is_callable.h \ +third_party/libcxx/__type_traits/is_char_like_type.h \ +third_party/libcxx/__type_traits/is_class.h \ +third_party/libcxx/__type_traits/is_compound.h \ +third_party/libcxx/__type_traits/is_const.h \ +third_party/libcxx/__type_traits/is_constant_evaluated.h \ +third_party/libcxx/__type_traits/is_constructible.h \ +third_party/libcxx/__type_traits/is_convertible.h \ +third_party/libcxx/__type_traits/is_copy_assignable.h \ +third_party/libcxx/__type_traits/is_copy_constructible.h \ +third_party/libcxx/__type_traits/is_core_convertible.h \ +third_party/libcxx/__type_traits/is_default_constructible.h \ +third_party/libcxx/__type_traits/is_destructible.h \ +third_party/libcxx/__type_traits/is_empty.h \ +third_party/libcxx/__type_traits/is_enum.h \ +third_party/libcxx/__type_traits/is_equality_comparable.h \ +third_party/libcxx/__type_traits/is_execution_policy.h \ +third_party/libcxx/__type_traits/is_final.h \ +third_party/libcxx/__type_traits/is_floating_point.h \ +third_party/libcxx/__type_traits/is_function.h \ +third_party/libcxx/__type_traits/is_fundamental.h \ +third_party/libcxx/__type_traits/is_implicitly_default_constructible.h \ +third_party/libcxx/__type_traits/is_integral.h \ +third_party/libcxx/__type_traits/is_literal_type.h \ +third_party/libcxx/__type_traits/is_member_function_pointer.h \ +third_party/libcxx/__type_traits/is_member_object_pointer.h \ +third_party/libcxx/__type_traits/is_member_pointer.h \ +third_party/libcxx/__type_traits/is_move_assignable.h \ +third_party/libcxx/__type_traits/is_move_constructible.h \ +third_party/libcxx/__type_traits/is_nothrow_assignable.h \ +third_party/libcxx/__type_traits/is_nothrow_constructible.h \ +third_party/libcxx/__type_traits/is_nothrow_convertible.h \ +third_party/libcxx/__type_traits/is_nothrow_copy_assignable.h \ +third_party/libcxx/__type_traits/is_nothrow_copy_constructible.h \ +third_party/libcxx/__type_traits/is_nothrow_default_constructible.h \ +third_party/libcxx/__type_traits/is_nothrow_destructible.h \ +third_party/libcxx/__type_traits/is_nothrow_move_assignable.h \ +third_party/libcxx/__type_traits/is_nothrow_move_constructible.h \ +third_party/libcxx/__type_traits/is_null_pointer.h \ +third_party/libcxx/__type_traits/is_object.h \ +third_party/libcxx/__type_traits/is_pod.h \ +third_party/libcxx/__type_traits/is_pointer.h \ +third_party/libcxx/__type_traits/is_polymorphic.h \ +third_party/libcxx/__type_traits/is_primary_template.h \ +third_party/libcxx/__type_traits/is_reference.h \ +third_party/libcxx/__type_traits/is_reference_wrapper.h \ +third_party/libcxx/__type_traits/is_referenceable.h \ +third_party/libcxx/__type_traits/is_same.h \ +third_party/libcxx/__type_traits/is_scalar.h \ +third_party/libcxx/__type_traits/is_scoped_enum.h \ +third_party/libcxx/__type_traits/is_signed.h \ +third_party/libcxx/__type_traits/is_signed_integer.h \ +third_party/libcxx/__type_traits/is_specialization.h \ +third_party/libcxx/__type_traits/is_standard_layout.h \ +third_party/libcxx/__type_traits/is_swappable.h \ +third_party/libcxx/__type_traits/is_trivial.h \ +third_party/libcxx/__type_traits/is_trivially_assignable.h \ +third_party/libcxx/__type_traits/is_trivially_constructible.h \ +third_party/libcxx/__type_traits/is_trivially_copy_assignable.h \ +third_party/libcxx/__type_traits/is_trivially_copy_constructible.h \ +third_party/libcxx/__type_traits/is_trivially_copyable.h \ +third_party/libcxx/__type_traits/is_trivially_default_constructible.h \ +third_party/libcxx/__type_traits/is_trivially_destructible.h \ +third_party/libcxx/__type_traits/is_trivially_lexicographically_comparable.h \ +third_party/libcxx/__type_traits/is_trivially_move_assignable.h \ +third_party/libcxx/__type_traits/is_trivially_move_constructible.h \ +third_party/libcxx/__type_traits/is_unbounded_array.h \ +third_party/libcxx/__type_traits/is_union.h \ +third_party/libcxx/__type_traits/is_unsigned.h \ +third_party/libcxx/__type_traits/is_unsigned_integer.h \ +third_party/libcxx/__type_traits/is_valid_expansion.h \ +third_party/libcxx/__type_traits/is_void.h \ +third_party/libcxx/__type_traits/is_volatile.h \ +third_party/libcxx/__type_traits/lazy.h \ +third_party/libcxx/__type_traits/make_32_64_or_128_bit.h \ +third_party/libcxx/__type_traits/make_const_lvalue_ref.h \ +third_party/libcxx/__type_traits/make_signed.h \ +third_party/libcxx/__type_traits/make_unsigned.h \ +third_party/libcxx/__type_traits/maybe_const.h \ +third_party/libcxx/__type_traits/nat.h \ +third_party/libcxx/__type_traits/negation.h \ +third_party/libcxx/__type_traits/noexcept_move_assign_container.h \ +third_party/libcxx/__type_traits/predicate_traits.h \ +third_party/libcxx/__type_traits/promote.h \ +third_party/libcxx/__type_traits/rank.h \ +third_party/libcxx/__type_traits/remove_all_extents.h \ +third_party/libcxx/__type_traits/remove_const.h \ +third_party/libcxx/__type_traits/remove_const_ref.h \ +third_party/libcxx/__type_traits/remove_cv.h \ +third_party/libcxx/__type_traits/remove_cvref.h \ +third_party/libcxx/__type_traits/remove_extent.h \ +third_party/libcxx/__type_traits/remove_pointer.h \ +third_party/libcxx/__type_traits/remove_reference.h \ +third_party/libcxx/__type_traits/remove_volatile.h \ +third_party/libcxx/__type_traits/result_of.h \ +third_party/libcxx/__type_traits/strip_signature.h \ +third_party/libcxx/__type_traits/type_identity.h \ +third_party/libcxx/__type_traits/type_list.h \ +third_party/libcxx/__type_traits/underlying_type.h \ +third_party/libcxx/__type_traits/unwrap_ref.h \ +third_party/libcxx/__type_traits/void_t.h \ +third_party/libcxx/__undef_macros \ +third_party/libcxx/__utility/as_const.h \ +third_party/libcxx/__utility/auto_cast.h \ +third_party/libcxx/__utility/cmp.h \ +third_party/libcxx/__utility/convert_to_integral.h \ +third_party/libcxx/__utility/declval.h \ +third_party/libcxx/__utility/exception_guard.h \ +third_party/libcxx/__utility/exchange.h \ +third_party/libcxx/__utility/forward.h \ +third_party/libcxx/__utility/forward_like.h \ +third_party/libcxx/__utility/in_place.h \ +third_party/libcxx/__utility/integer_sequence.h \ +third_party/libcxx/__utility/move.h \ +third_party/libcxx/__utility/pair.h \ +third_party/libcxx/__utility/piecewise_construct.h \ +third_party/libcxx/__utility/priority_tag.h \ +third_party/libcxx/__utility/rel_ops.h \ +third_party/libcxx/__utility/swap.h \ +third_party/libcxx/__utility/terminate_on_exception.h \ +third_party/libcxx/__utility/to_underlying.h \ +third_party/libcxx/__utility/unreachable.h \ +third_party/libcxx/__variant/monostate.h \ +third_party/libcxx/__verbose_abort \ +third_party/libcxx/algorithm \ +third_party/libcxx/any \ +third_party/libcxx/array \ +third_party/libcxx/atomic \ +third_party/libcxx/barrier \ +third_party/libcxx/bit \ +third_party/libcxx/bitset \ +third_party/libcxx/cassert \ +third_party/libcxx/ccomplex \ +third_party/libcxx/cctype \ +third_party/libcxx/cerrno \ +third_party/libcxx/cfenv \ +third_party/libcxx/cfloat \ +third_party/libcxx/charconv \ +third_party/libcxx/chrono \ +third_party/libcxx/cinttypes \ +third_party/libcxx/ciso646 \ +third_party/libcxx/climits \ +third_party/libcxx/clocale \ +third_party/libcxx/cmath \ +third_party/libcxx/codecvt \ +third_party/libcxx/compare \ +third_party/libcxx/complex \ +third_party/libcxx/concepts \ +third_party/libcxx/condition_variable \ +third_party/libcxx/coroutine \ +third_party/libcxx/csetjmp \ +third_party/libcxx/csignal \ +third_party/libcxx/cstdarg \ +third_party/libcxx/cstdbool \ +third_party/libcxx/cstddef \ +third_party/libcxx/cstdint \ +third_party/libcxx/cstdio \ +third_party/libcxx/cstdlib \ +third_party/libcxx/cstring \ +third_party/libcxx/ctgmath \ +third_party/libcxx/ctime \ +third_party/libcxx/cuchar \ +third_party/libcxx/cwchar \ +third_party/libcxx/cwctype \ +third_party/libcxx/deque \ +third_party/libcxx/exception \ +third_party/libcxx/execution \ +third_party/libcxx/expected \ +third_party/libcxx/experimental/__config \ +third_party/libcxx/experimental/__memory \ +third_party/libcxx/experimental/deque \ +third_party/libcxx/experimental/forward_list \ +third_party/libcxx/experimental/iterator \ +third_party/libcxx/experimental/list \ +third_party/libcxx/experimental/map \ +third_party/libcxx/experimental/memory_resource \ +third_party/libcxx/experimental/propagate_const \ +third_party/libcxx/experimental/regex \ +third_party/libcxx/experimental/set \ +third_party/libcxx/experimental/simd \ +third_party/libcxx/experimental/string \ +third_party/libcxx/experimental/type_traits \ +third_party/libcxx/experimental/unordered_map \ +third_party/libcxx/experimental/unordered_set \ +third_party/libcxx/experimental/utility \ +third_party/libcxx/experimental/vector \ +third_party/libcxx/ext/__hash \ +third_party/libcxx/filesystem \ +third_party/libcxx/format \ +third_party/libcxx/forward_list \ +third_party/libcxx/fstream \ +third_party/libcxx/functional \ +third_party/libcxx/future \ +third_party/libcxx/initializer_list \ +third_party/libcxx/iomanip \ +third_party/libcxx/ios \ +third_party/libcxx/iosfwd \ +third_party/libcxx/iostream \ +third_party/libcxx/istream \ +third_party/libcxx/iterator \ +third_party/libcxx/latch \ +third_party/libcxx/limits \ +third_party/libcxx/list \ +third_party/libcxx/locale \ +third_party/libcxx/map \ +third_party/libcxx/mdspan \ +third_party/libcxx/memory \ +third_party/libcxx/memory_resource \ +third_party/libcxx/mutex \ +third_party/libcxx/new \ +third_party/libcxx/numbers \ +third_party/libcxx/numeric \ +third_party/libcxx/optional \ +third_party/libcxx/ostream \ +third_party/libcxx/queue \ +third_party/libcxx/random \ +third_party/libcxx/ranges \ +third_party/libcxx/ratio \ +third_party/libcxx/regex \ +third_party/libcxx/scoped_allocator \ +third_party/libcxx/semaphore \ +third_party/libcxx/set \ +third_party/libcxx/shared_mutex \ +third_party/libcxx/source_location \ +third_party/libcxx/span \ +third_party/libcxx/sstream \ +third_party/libcxx/stack \ +third_party/libcxx/stdexcept \ +third_party/libcxx/streambuf \ +third_party/libcxx/string \ +third_party/libcxx/string_view \ +third_party/libcxx/strstream \ +third_party/libcxx/system_error \ +third_party/libcxx/thread \ +third_party/libcxx/tuple \ +third_party/libcxx/type_traits \ +third_party/libcxx/typeindex \ +third_party/libcxx/typeinfo \ +third_party/libcxx/unordered_map \ +third_party/libcxx/unordered_set \ +third_party/libcxx/utility \ +third_party/libcxx/valarray \ +third_party/libcxx/variant \ +third_party/libcxx/vector \ +third_party/libcxx/version \ -THIRD_PARTY_LIBCXX_A_SRCS_CC = \ - third_party/libcxx/algorithm.cc \ - third_party/libcxx/any.cc \ - third_party/libcxx/charconv.cc \ - third_party/libcxx/chrono.cc \ - third_party/libcxx/condition_variable.cc \ - third_party/libcxx/condition_variable_destructor.cc \ - third_party/libcxx/directory_iterator.cc \ - third_party/libcxx/exception.cc \ - third_party/libcxx/functional.cc \ - third_party/libcxx/future.cc \ - third_party/libcxx/hash.cc \ - third_party/libcxx/ios.cc \ - third_party/libcxx/iostream.cc \ - third_party/libcxx/locale1.cc \ - third_party/libcxx/locale2.cc \ - third_party/libcxx/locale3.cc \ - third_party/libcxx/locale4.cc \ - third_party/libcxx/memory.cc \ - third_party/libcxx/mutex.cc \ - third_party/libcxx/new.cc \ - third_party/libcxx/operations.cc \ - third_party/libcxx/optional.cc \ - third_party/libcxx/random.cc \ - third_party/libcxx/regex.cc \ - third_party/libcxx/shared_mutex.cc \ - third_party/libcxx/stdexcept.cc \ - third_party/libcxx/string.cc \ - third_party/libcxx/strstream.cc \ - third_party/libcxx/system_error.cc \ - third_party/libcxx/thread.cc \ - third_party/libcxx/valarray.cc \ - third_party/libcxx/variant.cc \ - third_party/libcxx/vector.cc +THIRD_PARTY_LIBCXX_A_INCS = \ +third_party/libcxx/__algorithm/pstl_any_all_none_of.h \ +third_party/libcxx/__algorithm/pstl_backend.h \ +third_party/libcxx/__algorithm/pstl_backends/cpu_backend.h \ +third_party/libcxx/__algorithm/pstl_backends/cpu_backends/any_of.h \ +third_party/libcxx/__algorithm/pstl_backends/cpu_backends/backend.h \ +third_party/libcxx/__algorithm/pstl_backends/cpu_backends/fill.h \ +third_party/libcxx/__algorithm/pstl_backends/cpu_backends/find_if.h \ +third_party/libcxx/__algorithm/pstl_backends/cpu_backends/for_each.h \ +third_party/libcxx/__algorithm/pstl_backends/cpu_backends/merge.h \ +third_party/libcxx/__algorithm/pstl_backends/cpu_backends/serial.h \ +third_party/libcxx/__algorithm/pstl_backends/cpu_backends/thread.h \ +third_party/libcxx/__algorithm/pstl_backends/cpu_backends/transform.h \ +third_party/libcxx/__algorithm/pstl_copy.h \ +third_party/libcxx/__algorithm/pstl_fill.h \ +third_party/libcxx/__algorithm/pstl_find.h \ +third_party/libcxx/__algorithm/pstl_for_each.h \ +third_party/libcxx/__algorithm/pstl_frontend_dispatch.h \ +third_party/libcxx/__algorithm/pstl_merge.h \ +third_party/libcxx/__algorithm/pstl_transform.h \ +third_party/libcxx/__locale_dir/locale_base_api/bsd_locale_defaults.h \ +third_party/libcxx/__locale_dir/locale_base_api/bsd_locale_fallbacks.h \ +third_party/libcxx/__locale_dir/locale_base_api/locale_guard.h \ +third_party/libcxx/__mbstate_t.h \ +third_party/libcxx/__pstl/internal/algorithm_fwd.h \ +third_party/libcxx/__pstl/internal/algorithm_impl.h \ +third_party/libcxx/__pstl/internal/execution_defs.h \ +third_party/libcxx/__pstl/internal/execution_impl.h \ +third_party/libcxx/__pstl/internal/glue_algorithm_defs.h \ +third_party/libcxx/__pstl/internal/glue_algorithm_impl.h \ +third_party/libcxx/__pstl/internal/glue_memory_defs.h \ +third_party/libcxx/__pstl/internal/glue_memory_impl.h \ +third_party/libcxx/__pstl/internal/glue_numeric_defs.h \ +third_party/libcxx/__pstl/internal/glue_numeric_impl.h \ +third_party/libcxx/__pstl/internal/memory_impl.h \ +third_party/libcxx/__pstl/internal/numeric_fwd.h \ +third_party/libcxx/__pstl/internal/numeric_impl.h \ +third_party/libcxx/__pstl/internal/omp/parallel_for.h \ +third_party/libcxx/__pstl/internal/omp/parallel_for_each.h \ +third_party/libcxx/__pstl/internal/omp/parallel_invoke.h \ +third_party/libcxx/__pstl/internal/omp/parallel_merge.h \ +third_party/libcxx/__pstl/internal/omp/parallel_reduce.h \ +third_party/libcxx/__pstl/internal/omp/parallel_scan.h \ +third_party/libcxx/__pstl/internal/omp/parallel_stable_partial_sort.h \ +third_party/libcxx/__pstl/internal/omp/parallel_stable_sort.h \ +third_party/libcxx/__pstl/internal/omp/parallel_transform_reduce.h \ +third_party/libcxx/__pstl/internal/omp/parallel_transform_scan.h \ +third_party/libcxx/__pstl/internal/omp/util.h \ +third_party/libcxx/__pstl/internal/parallel_backend.h \ +third_party/libcxx/__pstl/internal/parallel_backend_omp.h \ +third_party/libcxx/__pstl/internal/parallel_backend_serial.h \ +third_party/libcxx/__pstl/internal/parallel_backend_tbb.h \ +third_party/libcxx/__pstl/internal/parallel_backend_utils.h \ +third_party/libcxx/__pstl/internal/unseq_backend_simd.h \ +third_party/libcxx/__pstl/internal/utils.h \ +third_party/libcxx/__pstl_algorithm \ +third_party/libcxx/__pstl_config_site \ +third_party/libcxx/__pstl_memory \ +third_party/libcxx/__pstl_numeric \ +third_party/libcxx/__support/android/locale_bionic.h \ +third_party/libcxx/__support/musl/xlocale.h \ +third_party/libcxx/complex.h \ +third_party/libcxx/ctype.h \ +third_party/libcxx/errno.h \ +third_party/libcxx/fenv.h \ +third_party/libcxx/float.h \ +third_party/libcxx/inttypes.h \ +third_party/libcxx/limits.h \ +third_party/libcxx/locale.h \ +third_party/libcxx/math.h \ +third_party/libcxx/setjmp.h \ +third_party/libcxx/src/chrono_system_time_init.h \ +third_party/libcxx/src/experimental/memory_resource_init_helper.h \ +third_party/libcxx/src/filesystem/filesystem_common.h \ +third_party/libcxx/src/filesystem/posix_compat.h \ +third_party/libcxx/src/include/apple_availability.h \ +third_party/libcxx/src/include/atomic_support.h \ +third_party/libcxx/src/include/config_elast.h \ +third_party/libcxx/src/include/refstring.h \ +third_party/libcxx/src/include/ryu/common.h \ +third_party/libcxx/src/include/ryu/d2fixed.h \ +third_party/libcxx/src/include/ryu/d2fixed_full_table.h \ +third_party/libcxx/src/include/ryu/d2s.h \ +third_party/libcxx/src/include/ryu/d2s_full_table.h \ +third_party/libcxx/src/include/ryu/d2s_intrinsics.h \ +third_party/libcxx/src/include/ryu/digit_table.h \ +third_party/libcxx/src/include/ryu/f2s.h \ +third_party/libcxx/src/include/ryu/ryu.h \ +third_party/libcxx/src/include/sso_allocator.h \ +third_party/libcxx/src/include/to_chars_floating_point.h \ +third_party/libcxx/src/iostream_init.h \ +third_party/libcxx/src/memory_resource_init_helper.h \ +third_party/libcxx/src/std_stream.h \ +third_party/libcxx/src/support/runtime/exception_fallback.ipp \ +third_party/libcxx/src/support/runtime/exception_glibcxx.ipp \ +third_party/libcxx/src/support/runtime/exception_libcxxabi.ipp \ +third_party/libcxx/src/support/runtime/exception_libcxxrt.ipp \ +third_party/libcxx/src/support/runtime/exception_msvc.ipp \ +third_party/libcxx/src/support/runtime/exception_pointer_cxxabi.ipp \ +third_party/libcxx/src/support/runtime/exception_pointer_glibcxx.ipp \ +third_party/libcxx/src/support/runtime/exception_pointer_msvc.ipp \ +third_party/libcxx/src/support/runtime/exception_pointer_unimplemented.ipp \ +third_party/libcxx/src/support/runtime/new_handler_fallback.ipp \ +third_party/libcxx/src/support/runtime/stdexcept_default.ipp \ +third_party/libcxx/src/support/runtime/stdexcept_vcruntime.ipp \ +third_party/libcxx/stdatomic.h \ +third_party/libcxx/stdbool.h \ +third_party/libcxx/stddef.h \ +third_party/libcxx/stdint.h \ +third_party/libcxx/stdio.h \ +third_party/libcxx/stdlib.h \ +third_party/libcxx/string.h \ +third_party/libcxx/tgmath.h \ +third_party/libcxx/uchar.h \ +third_party/libcxx/wchar.h \ +third_party/libcxx/wctype.h \ +third_party/libcxx/libcxx.imp \ +third_party/libcxx/module.modulemap \ -THIRD_PARTY_LIBCXX_A_SRCS = \ - $(THIRD_PARTY_LIBCXX_A_SRCS_S) \ - $(THIRD_PARTY_LIBCXX_A_SRCS_CC) +THIRD_PARTY_LIBCXX_A_SRCS = \ +third_party/libcxx/src/algorithm.cpp \ +third_party/libcxx/src/any.cpp \ +third_party/libcxx/src/atomic.cpp \ +third_party/libcxx/src/barrier.cpp \ +third_party/libcxx/src/bind.cpp \ +third_party/libcxx/src/charconv.cpp \ +third_party/libcxx/src/chrono.cpp \ +third_party/libcxx/src/condition_variable.cpp \ +third_party/libcxx/src/condition_variable_destructor.cpp \ +third_party/libcxx/src/debug.cpp \ +third_party/libcxx/src/exception.cpp \ +third_party/libcxx/src/experimental/memory_resource.cpp \ +third_party/libcxx/src/filesystem/directory_iterator.cpp \ +third_party/libcxx/src/filesystem/int128_builtins.cpp \ +third_party/libcxx/src/filesystem/operations.cpp \ +third_party/libcxx/src/functional.cpp \ +third_party/libcxx/src/future.cpp \ +third_party/libcxx/src/hash.cpp \ +third_party/libcxx/src/ios.cpp \ +third_party/libcxx/src/ios.instantiations.cpp \ +third_party/libcxx/src/iostream.cpp \ +third_party/libcxx/src/legacy_debug_handler.cpp \ +third_party/libcxx/src/legacy_pointer_safety.cpp \ +third_party/libcxx/src/locale.cpp \ +third_party/libcxx/src/memory.cpp \ +third_party/libcxx/src/memory_resource.cpp \ +third_party/libcxx/src/mutex.cpp \ +third_party/libcxx/src/mutex_destructor.cpp \ +third_party/libcxx/src/new.cpp \ +third_party/libcxx/src/optional.cpp \ +third_party/libcxx/src/random.cpp \ +third_party/libcxx/src/regex.cpp \ +third_party/libcxx/src/ryu/d2fixed.cpp \ +third_party/libcxx/src/ryu/d2s.cpp \ +third_party/libcxx/src/ryu/f2s.cpp \ +third_party/libcxx/src/shared_mutex.cpp \ +third_party/libcxx/src/stdexcept.cpp \ +third_party/libcxx/src/string.cpp \ +third_party/libcxx/src/strstream.cpp \ +third_party/libcxx/src/system_error.cpp \ +third_party/libcxx/src/thread.cpp \ +third_party/libcxx/src/typeinfo.cpp \ +third_party/libcxx/src/valarray.cpp \ +third_party/libcxx/src/variant.cpp \ +third_party/libcxx/src/vector.cpp \ +third_party/libcxx/src/verbose_abort.cpp THIRD_PARTY_LIBCXX_A_OBJS = \ - $(THIRD_PARTY_LIBCXX_A_SRCS_S:%.S=o/$(MODE)/%.o) \ - $(THIRD_PARTY_LIBCXX_A_SRCS_CC:%.cc=o/$(MODE)/%.o) + $(THIRD_PARTY_LIBCXX_A_SRCS:%.cpp=o/$(MODE)/%.o) THIRD_PARTY_LIBCXX_A_CHECKS = \ $(THIRD_PARTY_LIBCXX_A).pkg \ @@ -203,6 +1083,7 @@ THIRD_PARTY_LIBCXX_A_DIRECTDEPS = \ THIRD_PARTY_GDTOA \ THIRD_PARTY_LIBCXXABI \ THIRD_PARTY_LIBUNWIND \ + THIRD_PARTY_MUSL \ THIRD_PARTY_TZ THIRD_PARTY_LIBCXX_A_DEPS := \ @@ -224,7 +1105,8 @@ $(THIRD_PARTY_LIBCXX_A_OBJS): private \ -fexceptions \ -frtti \ -Wno-alloc-size-larger-than \ - -DLIBCXX_BUILDING_LIBCXXABI + -DLIBCXX_BUILDING_LIBCXXABI \ + -D_LIBCPP_BUILDING_LIBRARY THIRD_PARTY_LIBCXX_LIBS = $(foreach x,$(THIRD_PARTY_LIBCXX_ARTIFACTS),$($(x))) THIRD_PARTY_LIBCXX_SRCS = $(foreach x,$(THIRD_PARTY_LIBCXX_ARTIFACTS),$($(x)_SRCS)) diff --git a/third_party/libcxx/README.cosmo b/third_party/libcxx/README.cosmo index 4de2da7e7..506113754 100644 --- a/third_party/libcxx/README.cosmo +++ b/third_party/libcxx/README.cosmo @@ -4,11 +4,15 @@ DESCRIPTION ORIGIN - git@github.com:llvm-mirror/libcxx.git - commit 78d6a7767ed57b50122a161b91f59f19c9bd0d19 - Author: Zoe Carver - Date: Tue Oct 22 15:16:49 2019 +0000 + git@github.com:llvm/llvm-project.git + commit ad0543f4ea82ec41c5e854af65758fa8d92d5553 + Author: Haojian Wu + Date: Thu Jun 1 15:31:43 2023 +0200 LOCAL CHANGES + - Wrote __config_site + - Add __COSMOPOLITAN__ when appropriate + - Kludged (and probably broke) awful `cerr` feature - Break apart locale.cpp due to its outrageous build times + - Suppress -Wattribute sometimes due to __always_inline__ hack diff --git a/third_party/libcxx/__algorithm/adjacent_find.h b/third_party/libcxx/__algorithm/adjacent_find.h new file mode 100644 index 000000000..30df4a976 --- /dev/null +++ b/third_party/libcxx/__algorithm/adjacent_find.h @@ -0,0 +1,53 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_ADJACENT_FIND_H +#define _LIBCPP___ALGORITHM_ADJACENT_FIND_H + +#include <__algorithm/comp.h> +#include <__algorithm/iterator_operations.h> +#include <__config> +#include <__iterator/iterator_traits.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _Iter +__adjacent_find(_Iter __first, _Sent __last, _BinaryPredicate&& __pred) { + if (__first == __last) + return __first; + _Iter __i = __first; + while (++__i != __last) { + if (__pred(*__first, *__i)) + return __first; + __first = __i; + } + return __i; +} + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator +adjacent_find(_ForwardIterator __first, _ForwardIterator __last, _BinaryPredicate __pred) { + return std::__adjacent_find(std::move(__first), std::move(__last), __pred); +} + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator +adjacent_find(_ForwardIterator __first, _ForwardIterator __last) { + return std::adjacent_find(std::move(__first), std::move(__last), __equal_to()); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_ADJACENT_FIND_H diff --git a/third_party/libcxx/__algorithm/all_of.h b/third_party/libcxx/__algorithm/all_of.h new file mode 100644 index 000000000..237f8495c --- /dev/null +++ b/third_party/libcxx/__algorithm/all_of.h @@ -0,0 +1,32 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_ALL_OF_H +#define _LIBCPP___ALGORITHM_ALL_OF_H + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +all_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) { + for (; __first != __last; ++__first) + if (!__pred(*__first)) + return false; + return true; +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_ALL_OF_H diff --git a/third_party/libcxx/__algorithm/any_of.h b/third_party/libcxx/__algorithm/any_of.h new file mode 100644 index 000000000..fe0882816 --- /dev/null +++ b/third_party/libcxx/__algorithm/any_of.h @@ -0,0 +1,32 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_ANY_OF_H +#define _LIBCPP___ALGORITHM_ANY_OF_H + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +any_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) { + for (; __first != __last; ++__first) + if (__pred(*__first)) + return true; + return false; +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_ANY_OF_H diff --git a/third_party/libcxx/__algorithm/binary_search.h b/third_party/libcxx/__algorithm/binary_search.h new file mode 100644 index 000000000..8f958c2c1 --- /dev/null +++ b/third_party/libcxx/__algorithm/binary_search.h @@ -0,0 +1,46 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_BINARY_SEARCH_H +#define _LIBCPP___ALGORITHM_BINARY_SEARCH_H + +#include <__algorithm/comp.h> +#include <__algorithm/comp_ref_type.h> +#include <__algorithm/lower_bound.h> +#include <__config> +#include <__iterator/iterator_traits.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_NODISCARD_EXT inline +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +bool +binary_search(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value, _Compare __comp) +{ + __first = std::lower_bound<_ForwardIterator, _Tp, __comp_ref_type<_Compare> >(__first, __last, __value, __comp); + return __first != __last && !__comp(__value, *__first); +} + +template +_LIBCPP_NODISCARD_EXT inline +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +bool +binary_search(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) +{ + return std::binary_search(__first, __last, __value, + __less::value_type, _Tp>()); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_BINARY_SEARCH_H diff --git a/third_party/libcxx/__algorithm/clamp.h b/third_party/libcxx/__algorithm/clamp.h new file mode 100644 index 000000000..336b93fd8 --- /dev/null +++ b/third_party/libcxx/__algorithm/clamp.h @@ -0,0 +1,46 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_CLAMP_H +#define _LIBCPP___ALGORITHM_CLAMP_H + +#include <__algorithm/comp.h> +#include <__assert> +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 17 +template +_LIBCPP_NODISCARD_EXT inline +_LIBCPP_INLINE_VISIBILITY constexpr +const _Tp& +clamp(const _Tp& __v, const _Tp& __lo, const _Tp& __hi, _Compare __comp) +{ + _LIBCPP_ASSERT(!__comp(__hi, __lo), "Bad bounds passed to std::clamp"); + return __comp(__v, __lo) ? __lo : __comp(__hi, __v) ? __hi : __v; + +} + +template +_LIBCPP_NODISCARD_EXT inline +_LIBCPP_INLINE_VISIBILITY constexpr +const _Tp& +clamp(const _Tp& __v, const _Tp& __lo, const _Tp& __hi) +{ + return _VSTD::clamp(__v, __lo, __hi, __less<_Tp>()); +} +#endif + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_CLAMP_H diff --git a/third_party/libcxx/__algorithm/comp.h b/third_party/libcxx/__algorithm/comp.h new file mode 100644 index 000000000..1001e42a3 --- /dev/null +++ b/third_party/libcxx/__algorithm/comp.h @@ -0,0 +1,71 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_COMP_H +#define _LIBCPP___ALGORITHM_COMP_H + +#include <__config> +#include <__type_traits/integral_constant.h> +#include <__type_traits/predicate_traits.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +struct __equal_to { + template + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 bool operator()(const _T1& __x, const _T2& __y) const { + return __x == __y; + } +}; + +template +struct __is_trivial_equality_predicate<__equal_to, _Lhs, _Rhs> : true_type {}; + +template +struct __less +{ + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 + bool operator()(const _T1& __x, const _T1& __y) const {return __x < __y;} + + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 + bool operator()(const _T1& __x, const _T2& __y) const {return __x < __y;} + + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 + bool operator()(const _T2& __x, const _T1& __y) const {return __x < __y;} + + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 + bool operator()(const _T2& __x, const _T2& __y) const {return __x < __y;} +}; + +template +struct __less<_T1, _T1> +{ + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 + bool operator()(const _T1& __x, const _T1& __y) const {return __x < __y;} +}; + +template +struct __less +{ + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 + bool operator()(const _T1& __x, const _T1& __y) const {return __x < __y;} +}; + +template +struct __less<_T1, const _T1> +{ + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 + bool operator()(const _T1& __x, const _T1& __y) const {return __x < __y;} +}; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_COMP_H diff --git a/third_party/libcxx/__algorithm/comp_ref_type.h b/third_party/libcxx/__algorithm/comp_ref_type.h new file mode 100644 index 000000000..55c5ce84a --- /dev/null +++ b/third_party/libcxx/__algorithm/comp_ref_type.h @@ -0,0 +1,78 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_COMP_REF_TYPE_H +#define _LIBCPP___ALGORITHM_COMP_REF_TYPE_H + +#include <__config> +#include <__debug> +#include <__utility/declval.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +struct __debug_less +{ + _Compare &__comp_; + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI __debug_less(_Compare& __c) : __comp_(__c) {} + + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI + bool operator()(const _Tp& __x, const _Up& __y) + { + bool __r = __comp_(__x, __y); + if (__r) + __do_compare_assert(0, __y, __x); + return __r; + } + + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_HIDE_FROM_ABI + bool operator()(_Tp& __x, _Up& __y) + { + bool __r = __comp_(__x, __y); + if (__r) + __do_compare_assert(0, __y, __x); + return __r; + } + + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 + inline _LIBCPP_INLINE_VISIBILITY + decltype((void)std::declval<_Compare&>()( + std::declval<_LHS &>(), std::declval<_RHS &>())) + __do_compare_assert(int, _LHS & __l, _RHS & __r) { + _LIBCPP_DEBUG_ASSERT(!__comp_(__l, __r), + "Comparator does not induce a strict weak ordering"); + (void)__l; + (void)__r; + } + + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 + inline _LIBCPP_INLINE_VISIBILITY + void __do_compare_assert(long, _LHS &, _RHS &) {} +}; + +// Pass the comparator by lvalue reference. Or in debug mode, using a +// debugging wrapper that stores a reference. +#ifdef _LIBCPP_ENABLE_DEBUG_MODE +template +using __comp_ref_type = __debug_less<_Comp>; +#else +template +using __comp_ref_type = _Comp&; +#endif + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_COMP_REF_TYPE_H diff --git a/third_party/libcxx/__algorithm/copy.h b/third_party/libcxx/__algorithm/copy.h new file mode 100644 index 000000000..c29ff8fa7 --- /dev/null +++ b/third_party/libcxx/__algorithm/copy.h @@ -0,0 +1,124 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_COPY_H +#define _LIBCPP___ALGORITHM_COPY_H + +#include <__algorithm/copy_move_common.h> +#include <__algorithm/for_each_segment.h> +#include <__algorithm/iterator_operations.h> +#include <__algorithm/min.h> +#include <__config> +#include <__iterator/segmented_iterator.h> +#include <__type_traits/common_type.h> +#include <__utility/move.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_InIter, _OutIter> __copy(_InIter, _Sent, _OutIter); + +template +struct __copy_loop { + template + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_InIter, _OutIter> + operator()(_InIter __first, _Sent __last, _OutIter __result) const { + while (__first != __last) { + *__result = *__first; + ++__first; + ++__result; + } + + return std::make_pair(std::move(__first), std::move(__result)); + } + + template + struct _CopySegment { + using _Traits = __segmented_iterator_traits<_InIter>; + + _OutIter& __result_; + + _LIBCPP_HIDE_FROM_ABI _CopySegment(_OutIter& __result) : __result_(__result) {} + + _LIBCPP_HIDE_FROM_ABI void + operator()(typename _Traits::__local_iterator __lfirst, typename _Traits::__local_iterator __llast) { + __result_ = std::__copy<_AlgPolicy>(__lfirst, __llast, std::move(__result_)).second; + } + }; + + template ::value, int> = 0> + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_InIter, _OutIter> + operator()(_InIter __first, _InIter __last, _OutIter __result) const { + std::__for_each_segment(__first, __last, _CopySegment<_InIter, _OutIter>(__result)); + return std::make_pair(__last, std::move(__result)); + } + + template ::value && + !__is_segmented_iterator<_InIter>::value && __is_segmented_iterator<_OutIter>::value, + int> = 0> + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_InIter, _OutIter> + operator()(_InIter __first, _InIter __last, _OutIter __result) { + using _Traits = __segmented_iterator_traits<_OutIter>; + using _DiffT = typename common_type<__iter_diff_t<_InIter>, __iter_diff_t<_OutIter> >::type; + + if (__first == __last) + return std::make_pair(std::move(__first), std::move(__result)); + + auto __local_first = _Traits::__local(__result); + auto __segment_iterator = _Traits::__segment(__result); + while (true) { + auto __local_last = _Traits::__end(__segment_iterator); + auto __size = std::min<_DiffT>(__local_last - __local_first, __last - __first); + auto __iters = std::__copy<_AlgPolicy>(__first, __first + __size, __local_first); + __first = std::move(__iters.first); + + if (__first == __last) + return std::make_pair(std::move(__first), _Traits::__compose(__segment_iterator, std::move(__iters.second))); + + __local_first = _Traits::__begin(++__segment_iterator); + } + } +}; + +struct __copy_trivial { + // At this point, the iterators have been unwrapped so any `contiguous_iterator` has been unwrapped to a pointer. + template ::value, int> = 0> + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_In*, _Out*> + operator()(_In* __first, _In* __last, _Out* __result) const { + return std::__copy_trivial_impl(__first, __last, __result); + } +}; + +template +pair<_InIter, _OutIter> inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 +__copy(_InIter __first, _Sent __last, _OutIter __result) { + return std::__dispatch_copy_or_move<_AlgPolicy, __copy_loop<_AlgPolicy>, __copy_trivial>( + std::move(__first), std::move(__last), std::move(__result)); +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator +copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result) { + return std::__copy<_ClassicAlgPolicy>(__first, __last, __result).second; +} + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP___ALGORITHM_COPY_H diff --git a/third_party/libcxx/__algorithm/copy_backward.h b/third_party/libcxx/__algorithm/copy_backward.h new file mode 100644 index 000000000..5bc93c625 --- /dev/null +++ b/third_party/libcxx/__algorithm/copy_backward.h @@ -0,0 +1,143 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_COPY_BACKWARD_H +#define _LIBCPP___ALGORITHM_COPY_BACKWARD_H + +#include <__algorithm/copy_move_common.h> +#include <__algorithm/iterator_operations.h> +#include <__algorithm/min.h> +#include <__config> +#include <__iterator/segmented_iterator.h> +#include <__type_traits/common_type.h> +#include <__type_traits/is_copy_constructible.h> +#include <__utility/move.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_InIter, _OutIter> +__copy_backward(_InIter __first, _Sent __last, _OutIter __result); + +template +struct __copy_backward_loop { + template + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_InIter, _OutIter> + operator()(_InIter __first, _Sent __last, _OutIter __result) const { + auto __last_iter = _IterOps<_AlgPolicy>::next(__first, __last); + auto __original_last_iter = __last_iter; + + while (__first != __last_iter) { + *--__result = *--__last_iter; + } + + return std::make_pair(std::move(__original_last_iter), std::move(__result)); + } + + template ::value, int> = 0> + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_InIter, _OutIter> + operator()(_InIter __first, _InIter __last, _OutIter __result) const { + using _Traits = __segmented_iterator_traits<_InIter>; + auto __sfirst = _Traits::__segment(__first); + auto __slast = _Traits::__segment(__last); + if (__sfirst == __slast) { + auto __iters = + std::__copy_backward<_AlgPolicy>(_Traits::__local(__first), _Traits::__local(__last), std::move(__result)); + return std::make_pair(__last, __iters.second); + } + + __result = + std::__copy_backward<_AlgPolicy>(_Traits::__begin(__slast), _Traits::__local(__last), std::move(__result)) + .second; + --__slast; + while (__sfirst != __slast) { + __result = + std::__copy_backward<_AlgPolicy>(_Traits::__begin(__slast), _Traits::__end(__slast), std::move(__result)) + .second; + --__slast; + } + __result = std::__copy_backward<_AlgPolicy>(_Traits::__local(__first), _Traits::__end(__slast), std::move(__result)) + .second; + return std::make_pair(__last, std::move(__result)); + } + + template ::value && + !__is_segmented_iterator<_InIter>::value && __is_segmented_iterator<_OutIter>::value, + int> = 0> + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_InIter, _OutIter> + operator()(_InIter __first, _InIter __last, _OutIter __result) { + using _Traits = __segmented_iterator_traits<_OutIter>; + auto __orig_last = __last; + auto __segment_iterator = _Traits::__segment(__result); + + // When the range contains no elements, __result might not be a valid iterator + if (__first == __last) + return std::make_pair(__first, __result); + + auto __local_last = _Traits::__local(__result); + while (true) { + using _DiffT = typename common_type<__iter_diff_t<_InIter>, __iter_diff_t<_OutIter> >::type; + + auto __local_first = _Traits::__begin(__segment_iterator); + auto __size = std::min<_DiffT>(__local_last - __local_first, __last - __first); + auto __iter = std::__copy_backward<_AlgPolicy>(__last - __size, __last, __local_last).second; + __last -= __size; + + if (__first == __last) + return std::make_pair(std::move(__orig_last), _Traits::__compose(__segment_iterator, std::move(__iter))); + --__segment_iterator; + __local_last = _Traits::__end(__segment_iterator); + } + } +}; + +struct __copy_backward_trivial { + // At this point, the iterators have been unwrapped so any `contiguous_iterator` has been unwrapped to a pointer. + template ::value, int> = 0> + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_In*, _Out*> + operator()(_In* __first, _In* __last, _Out* __result) const { + return std::__copy_backward_trivial_impl(__first, __last, __result); + } +}; + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_BidirectionalIterator1, _BidirectionalIterator2> +__copy_backward(_BidirectionalIterator1 __first, _Sentinel __last, _BidirectionalIterator2 __result) { + return std::__dispatch_copy_or_move<_AlgPolicy, __copy_backward_loop<_AlgPolicy>, __copy_backward_trivial>( + std::move(__first), std::move(__last), std::move(__result)); +} + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 +_BidirectionalIterator2 +copy_backward(_BidirectionalIterator1 __first, _BidirectionalIterator1 __last, + _BidirectionalIterator2 __result) +{ + static_assert(std::is_copy_constructible<_BidirectionalIterator1>::value && + std::is_copy_constructible<_BidirectionalIterator1>::value, "Iterators must be copy constructible."); + + return std::__copy_backward<_ClassicAlgPolicy>( + std::move(__first), std::move(__last), std::move(__result)).second; +} + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP___ALGORITHM_COPY_BACKWARD_H diff --git a/third_party/libcxx/__algorithm/copy_if.h b/third_party/libcxx/__algorithm/copy_if.h new file mode 100644 index 000000000..a5938b871 --- /dev/null +++ b/third_party/libcxx/__algorithm/copy_if.h @@ -0,0 +1,39 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_COPY_IF_H +#define _LIBCPP___ALGORITHM_COPY_IF_H + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +_OutputIterator +copy_if(_InputIterator __first, _InputIterator __last, + _OutputIterator __result, _Predicate __pred) +{ + for (; __first != __last; ++__first) + { + if (__pred(*__first)) + { + *__result = *__first; + ++__result; + } + } + return __result; +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_COPY_IF_H diff --git a/third_party/libcxx/__algorithm/copy_move_common.h b/third_party/libcxx/__algorithm/copy_move_common.h new file mode 100644 index 000000000..b88c14911 --- /dev/null +++ b/third_party/libcxx/__algorithm/copy_move_common.h @@ -0,0 +1,163 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_COPY_MOVE_COMMON_H +#define _LIBCPP___ALGORITHM_COPY_MOVE_COMMON_H + +#include <__algorithm/iterator_operations.h> +#include <__algorithm/unwrap_iter.h> +#include <__algorithm/unwrap_range.h> +#include <__config> +#include <__iterator/iterator_traits.h> +#include <__memory/pointer_traits.h> +#include <__type_traits/enable_if.h> +#include <__type_traits/is_always_bitcastable.h> +#include <__type_traits/is_constant_evaluated.h> +#include <__type_traits/is_copy_constructible.h> +#include <__type_traits/is_trivially_assignable.h> +#include <__type_traits/is_trivially_copyable.h> +#include <__type_traits/is_volatile.h> +#include <__utility/move.h> +#include <__utility/pair.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +// Type traits. + +template +struct __can_lower_copy_assignment_to_memmove { + static const bool value = + // If the types are always bitcastable, it's valid to do a bitwise copy between them. + __is_always_bitcastable<_From, _To>::value && + // Reject conversions that wouldn't be performed by the regular built-in assignment (e.g. between arrays). + is_trivially_assignable<_To&, const _From&>::value && + // `memmove` doesn't accept `volatile` pointers, make sure the optimization SFINAEs away in that case. + !is_volatile<_From>::value && + !is_volatile<_To>::value; +}; + +template +struct __can_lower_move_assignment_to_memmove { + static const bool value = + __is_always_bitcastable<_From, _To>::value && + is_trivially_assignable<_To&, _From&&>::value && + !is_volatile<_From>::value && + !is_volatile<_To>::value; +}; + +// `memmove` algorithms implementation. + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_In*, _Out*> +__copy_trivial_impl(_In* __first, _In* __last, _Out* __result) { + const size_t __n = static_cast(__last - __first); + ::__builtin_memmove(__result, __first, __n * sizeof(_Out)); + + return std::make_pair(__last, __result + __n); +} + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_In*, _Out*> +__copy_backward_trivial_impl(_In* __first, _In* __last, _Out* __result) { + const size_t __n = static_cast(__last - __first); + __result -= __n; + + ::__builtin_memmove(__result, __first, __n * sizeof(_Out)); + + return std::make_pair(__last, __result); +} + +// Iterator unwrapping and dispatching to the correct overload. + +template +struct __overload : _F1, _F2 { + using _F1::operator(); + using _F2::operator(); +}; + +template +struct __can_rewrap : false_type {}; + +template +struct __can_rewrap<_InIter, + _Sent, + _OutIter, + // Note that sentinels are always copy-constructible. + __enable_if_t< is_copy_constructible<_InIter>::value && + is_copy_constructible<_OutIter>::value > > : true_type {}; + +template ::value, int> = 0> +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 pair<_InIter, _OutIter> +__unwrap_and_dispatch(_InIter __first, _Sent __last, _OutIter __out_first) { + auto __range = std::__unwrap_range(__first, std::move(__last)); + auto __result = _Algorithm()(std::move(__range.first), std::move(__range.second), std::__unwrap_iter(__out_first)); + return std::make_pair(std::__rewrap_range<_Sent>(std::move(__first), std::move(__result.first)), + std::__rewrap_iter(std::move(__out_first), std::move(__result.second))); +} + +template ::value, int> = 0> +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 pair<_InIter, _OutIter> +__unwrap_and_dispatch(_InIter __first, _Sent __last, _OutIter __out_first) { + return _Algorithm()(std::move(__first), std::move(__last), std::move(__out_first)); +} + +template +struct __can_copy_without_conversion : false_type {}; + +template +struct __can_copy_without_conversion< + _IterOps, + _InValue, + _OutIter, + __enable_if_t >::value> > : true_type {}; + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 pair<_InIter, _OutIter> +__dispatch_copy_or_move(_InIter __first, _Sent __last, _OutIter __out_first) { +#ifdef _LIBCPP_COMPILER_GCC + // GCC doesn't support `__builtin_memmove` during constant evaluation. + if (__libcpp_is_constant_evaluated()) { + return std::__unwrap_and_dispatch<_NaiveAlgorithm>(std::move(__first), std::move(__last), std::move(__out_first)); + } +#else + // In Clang, `__builtin_memmove` only supports fully trivially copyable types (just having trivial copy assignment is + // insufficient). Also, conversions are not supported. + if (__libcpp_is_constant_evaluated()) { + using _InValue = typename _IterOps<_AlgPolicy>::template __value_type<_InIter>; + if (!is_trivially_copyable<_InValue>::value || + !__can_copy_without_conversion<_IterOps<_AlgPolicy>, _InValue, _OutIter>::value) { + return std::__unwrap_and_dispatch<_NaiveAlgorithm>(std::move(__first), std::move(__last), std::move(__out_first)); + } + } +#endif // _LIBCPP_COMPILER_GCC + + using _Algorithm = __overload<_NaiveAlgorithm, _OptimizedAlgorithm>; + return std::__unwrap_and_dispatch<_Algorithm>(std::move(__first), std::move(__last), std::move(__out_first)); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_COPY_MOVE_COMMON_H diff --git a/third_party/libcxx/__algorithm/copy_n.h b/third_party/libcxx/__algorithm/copy_n.h new file mode 100644 index 000000000..f3701662a --- /dev/null +++ b/third_party/libcxx/__algorithm/copy_n.h @@ -0,0 +1,67 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_COPY_N_H +#define _LIBCPP___ALGORITHM_COPY_N_H + +#include <__algorithm/copy.h> +#include <__config> +#include <__iterator/iterator_traits.h> +#include <__type_traits/enable_if.h> +#include <__utility/convert_to_integral.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +typename enable_if +< + __has_input_iterator_category<_InputIterator>::value && + !__has_random_access_iterator_category<_InputIterator>::value, + _OutputIterator +>::type +copy_n(_InputIterator __first, _Size __orig_n, _OutputIterator __result) +{ + typedef decltype(_VSTD::__convert_to_integral(__orig_n)) _IntegralSize; + _IntegralSize __n = __orig_n; + if (__n > 0) + { + *__result = *__first; + ++__result; + for (--__n; __n > 0; --__n) + { + ++__first; + *__result = *__first; + ++__result; + } + } + return __result; +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +typename enable_if +< + __has_random_access_iterator_category<_InputIterator>::value, + _OutputIterator +>::type +copy_n(_InputIterator __first, _Size __orig_n, _OutputIterator __result) +{ + typedef typename iterator_traits<_InputIterator>::difference_type difference_type; + typedef decltype(_VSTD::__convert_to_integral(__orig_n)) _IntegralSize; + _IntegralSize __n = __orig_n; + return _VSTD::copy(__first, __first + difference_type(__n), __result); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_COPY_N_H diff --git a/third_party/libcxx/__algorithm/count.h b/third_party/libcxx/__algorithm/count.h new file mode 100644 index 000000000..6c8c7fda3 --- /dev/null +++ b/third_party/libcxx/__algorithm/count.h @@ -0,0 +1,35 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_COUNT_H +#define _LIBCPP___ALGORITHM_COUNT_H + +#include <__config> +#include <__iterator/iterator_traits.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 + typename iterator_traits<_InputIterator>::difference_type + count(_InputIterator __first, _InputIterator __last, const _Tp& __value) { + typename iterator_traits<_InputIterator>::difference_type __r(0); + for (; __first != __last; ++__first) + if (*__first == __value) + ++__r; + return __r; +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_COUNT_H diff --git a/third_party/libcxx/__algorithm/count_if.h b/third_party/libcxx/__algorithm/count_if.h new file mode 100644 index 000000000..b96521fe0 --- /dev/null +++ b/third_party/libcxx/__algorithm/count_if.h @@ -0,0 +1,35 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_COUNT_IF_H +#define _LIBCPP___ALGORITHM_COUNT_IF_H + +#include <__config> +#include <__iterator/iterator_traits.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 + typename iterator_traits<_InputIterator>::difference_type + count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) { + typename iterator_traits<_InputIterator>::difference_type __r(0); + for (; __first != __last; ++__first) + if (__pred(*__first)) + ++__r; + return __r; +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_COUNT_IF_H diff --git a/third_party/libcxx/__algorithm/equal.h b/third_party/libcxx/__algorithm/equal.h new file mode 100644 index 000000000..c07d4e208 --- /dev/null +++ b/third_party/libcxx/__algorithm/equal.h @@ -0,0 +1,149 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_EQUAL_H +#define _LIBCPP___ALGORITHM_EQUAL_H + +#include <__algorithm/comp.h> +#include <__algorithm/unwrap_iter.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__iterator/distance.h> +#include <__iterator/iterator_traits.h> +#include <__string/constexpr_c_functions.h> +#include <__type_traits/enable_if.h> +#include <__type_traits/integral_constant.h> +#include <__type_traits/is_constant_evaluated.h> +#include <__type_traits/is_equality_comparable.h> +#include <__type_traits/is_volatile.h> +#include <__type_traits/predicate_traits.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool __equal_iter_impl( + _InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _BinaryPredicate& __pred) { + for (; __first1 != __last1; ++__first1, (void)++__first2) + if (!__pred(*__first1, *__first2)) + return false; + return true; +} + +template < + class _Tp, + class _Up, + class _BinaryPredicate, + __enable_if_t<__is_trivial_equality_predicate<_BinaryPredicate, _Tp, _Up>::value && !is_volatile<_Tp>::value && + !is_volatile<_Up>::value && __libcpp_is_trivially_equality_comparable<_Tp, _Up>::value, + int> = 0> +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +__equal_iter_impl(_Tp* __first1, _Tp* __last1, _Up* __first2, _BinaryPredicate&) { + return std::__constexpr_memcmp_equal(__first1, __first2, (__last1 - __first1) * sizeof(_Tp)); +} + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +equal(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _BinaryPredicate __pred) { + return std::__equal_iter_impl( + std::__unwrap_iter(__first1), std::__unwrap_iter(__last1), std::__unwrap_iter(__first2), __pred); +} + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +equal(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2) { + return std::equal(__first1, __last1, __first2, __equal_to()); +} + +#if _LIBCPP_STD_VER >= 14 +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +__equal(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, + _BinaryPredicate __pred, input_iterator_tag, input_iterator_tag) { + for (; __first1 != __last1 && __first2 != __last2; ++__first1, (void)++__first2) + if (!__pred(*__first1, *__first2)) + return false; + return __first1 == __last1 && __first2 == __last2; +} + +template +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool __equal_impl( + _Iter1 __first1, _Sent1 __last1, _Iter2 __first2, _Sent2 __last2, _Pred& __comp, _Proj1& __proj1, _Proj2& __proj2) { + while (__first1 != __last1 && __first2 != __last2) { + if (!std::__invoke(__comp, std::__invoke(__proj1, *__first1), std::__invoke(__proj2, *__first2))) + return false; + ++__first1; + ++__first2; + } + return __first1 == __last1 && __first2 == __last2; +} + +template ::value && __is_identity<_Proj1>::value && + __is_identity<_Proj2>::value && !is_volatile<_Tp>::value && !is_volatile<_Up>::value && + __libcpp_is_trivially_equality_comparable<_Tp, _Up>::value, + int> = 0> +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool __equal_impl( + _Tp* __first1, _Tp* __last1, _Up* __first2, _Up*, _Pred&, _Proj1&, _Proj2&) { + return std::__constexpr_memcmp_equal(__first1, __first2, (__last1 - __first1) * sizeof(_Tp)); +} + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +__equal(_RandomAccessIterator1 __first1, _RandomAccessIterator1 __last1, _RandomAccessIterator2 __first2, + _RandomAccessIterator2 __last2, _BinaryPredicate __pred, random_access_iterator_tag, + random_access_iterator_tag) { + if (_VSTD::distance(__first1, __last1) != _VSTD::distance(__first2, __last2)) + return false; + __identity __proj; + return std::__equal_impl( + std::__unwrap_iter(__first1), + std::__unwrap_iter(__last1), + std::__unwrap_iter(__first2), + std::__unwrap_iter(__last2), + __pred, + __proj, + __proj); +} + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +equal(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, + _BinaryPredicate __pred) { + return _VSTD::__equal<_BinaryPredicate&>( + __first1, __last1, __first2, __last2, __pred, typename iterator_traits<_InputIterator1>::iterator_category(), + typename iterator_traits<_InputIterator2>::iterator_category()); +} + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +equal(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2) { + return std::__equal( + __first1, + __last1, + __first2, + __last2, + __equal_to(), + typename iterator_traits<_InputIterator1>::iterator_category(), + typename iterator_traits<_InputIterator2>::iterator_category()); +} +#endif + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_EQUAL_H diff --git a/third_party/libcxx/__algorithm/equal_range.h b/third_party/libcxx/__algorithm/equal_range.h new file mode 100644 index 000000000..2075b0341 --- /dev/null +++ b/third_party/libcxx/__algorithm/equal_range.h @@ -0,0 +1,87 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_EQUAL_RANGE_H +#define _LIBCPP___ALGORITHM_EQUAL_RANGE_H + +#include <__algorithm/comp.h> +#include <__algorithm/comp_ref_type.h> +#include <__algorithm/half_positive.h> +#include <__algorithm/iterator_operations.h> +#include <__algorithm/lower_bound.h> +#include <__algorithm/upper_bound.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__iterator/advance.h> +#include <__iterator/distance.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/next.h> +#include <__type_traits/is_callable.h> +#include <__type_traits/is_copy_constructible.h> +#include <__utility/move.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_Iter, _Iter> +__equal_range(_Iter __first, _Sent __last, const _Tp& __value, _Compare&& __comp, _Proj&& __proj) { + auto __len = _IterOps<_AlgPolicy>::distance(__first, __last); + _Iter __end = _IterOps<_AlgPolicy>::next(__first, __last); + while (__len != 0) { + auto __half_len = std::__half_positive(__len); + _Iter __mid = _IterOps<_AlgPolicy>::next(__first, __half_len); + if (std::__invoke(__comp, std::__invoke(__proj, *__mid), __value)) { + __first = ++__mid; + __len -= __half_len + 1; + } else if (std::__invoke(__comp, __value, std::__invoke(__proj, *__mid))) { + __end = __mid; + __len = __half_len; + } else { + _Iter __mp1 = __mid; + return pair<_Iter, _Iter>( + std::__lower_bound_impl<_AlgPolicy>(__first, __mid, __value, __comp, __proj), + std::__upper_bound<_AlgPolicy>(++__mp1, __end, __value, __comp, __proj)); + } + } + return pair<_Iter, _Iter>(__first, __first); +} + +template +_LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_ForwardIterator, _ForwardIterator> +equal_range(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value, _Compare __comp) { + static_assert(__is_callable<_Compare, decltype(*__first), const _Tp&>::value, + "The comparator has to be callable"); + static_assert(is_copy_constructible<_ForwardIterator>::value, + "Iterator has to be copy constructible"); + return std::__equal_range<_ClassicAlgPolicy>( + std::move(__first), + std::move(__last), + __value, + static_cast<__comp_ref_type<_Compare> >(__comp), + std::__identity()); +} + +template +_LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_ForwardIterator, _ForwardIterator> +equal_range(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) { + return std::equal_range( + std::move(__first), + std::move(__last), + __value, + __less::value_type, _Tp>()); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_EQUAL_RANGE_H diff --git a/third_party/libcxx/__algorithm/fill.h b/third_party/libcxx/__algorithm/fill.h new file mode 100644 index 000000000..0753c427a --- /dev/null +++ b/third_party/libcxx/__algorithm/fill.h @@ -0,0 +1,51 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_FILL_H +#define _LIBCPP___ALGORITHM_FILL_H + +#include <__algorithm/fill_n.h> +#include <__config> +#include <__iterator/iterator_traits.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +// fill isn't specialized for std::memset, because the compiler already optimizes the loop to a call to std::memset. + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +void +__fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value, forward_iterator_tag) +{ + for (; __first != __last; ++__first) + *__first = __value; +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +void +__fill(_RandomAccessIterator __first, _RandomAccessIterator __last, const _Tp& __value, random_access_iterator_tag) +{ + _VSTD::fill_n(__first, __last - __first, __value); +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +void +fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) +{ + _VSTD::__fill(__first, __last, __value, typename iterator_traits<_ForwardIterator>::iterator_category()); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_FILL_H diff --git a/third_party/libcxx/__algorithm/fill_n.h b/third_party/libcxx/__algorithm/fill_n.h new file mode 100644 index 000000000..e7863ac7e --- /dev/null +++ b/third_party/libcxx/__algorithm/fill_n.h @@ -0,0 +1,44 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_FILL_N_H +#define _LIBCPP___ALGORITHM_FILL_N_H + +#include <__config> +#include <__iterator/iterator_traits.h> +#include <__utility/convert_to_integral.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +// fill_n isn't specialized for std::memset, because the compiler already optimizes the loop to a call to std::memset. + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +_OutputIterator +__fill_n(_OutputIterator __first, _Size __n, const _Tp& __value) +{ + for (; __n > 0; ++__first, (void) --__n) + *__first = __value; + return __first; +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +_OutputIterator +fill_n(_OutputIterator __first, _Size __n, const _Tp& __value) +{ + return _VSTD::__fill_n(__first, _VSTD::__convert_to_integral(__n), __value); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_FILL_N_H diff --git a/third_party/libcxx/__algorithm/find.h b/third_party/libcxx/__algorithm/find.h new file mode 100644 index 000000000..e0de50328 --- /dev/null +++ b/third_party/libcxx/__algorithm/find.h @@ -0,0 +1,77 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_FIND_H +#define _LIBCPP___ALGORITHM_FIND_H + +#include <__algorithm/unwrap_iter.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__string/constexpr_c_functions.h> +#include <__type_traits/is_same.h> + +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +# include +#endif + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _Iter +__find_impl(_Iter __first, _Sent __last, const _Tp& __value, _Proj& __proj) { + for (; __first != __last; ++__first) + if (std::__invoke(__proj, *__first) == __value) + break; + return __first; +} + +template ::value && __libcpp_is_trivially_equality_comparable<_Tp, _Up>::value && + sizeof(_Tp) == 1, + int> = 0> +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _Tp* +__find_impl(_Tp* __first, _Tp* __last, const _Up& __value, _Proj&) { + if (auto __ret = std::__constexpr_memchr(__first, __value, __last - __first)) + return __ret; + return __last; +} + +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +template ::value && __libcpp_is_trivially_equality_comparable<_Tp, _Up>::value && + sizeof(_Tp) == sizeof(wchar_t) && _LIBCPP_ALIGNOF(_Tp) >= _LIBCPP_ALIGNOF(wchar_t), + int> = 0> +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _Tp* +__find_impl(_Tp* __first, _Tp* __last, const _Up& __value, _Proj&) { + if (auto __ret = std::__constexpr_wmemchr(__first, __value, __last - __first)) + return __ret; + return __last; +} +#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 _InputIterator +find(_InputIterator __first, _InputIterator __last, const _Tp& __value) { + __identity __proj; + return std::__rewrap_iter( + __first, std::__find_impl(std::__unwrap_iter(__first), std::__unwrap_iter(__last), __value, __proj)); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_FIND_H diff --git a/third_party/libcxx/__algorithm/find_end.h b/third_party/libcxx/__algorithm/find_end.h new file mode 100644 index 000000000..edb9891c6 --- /dev/null +++ b/third_party/libcxx/__algorithm/find_end.h @@ -0,0 +1,227 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_FIND_END_OF_H +#define _LIBCPP___ALGORITHM_FIND_END_OF_H + +#include <__algorithm/comp.h> +#include <__algorithm/iterator_operations.h> +#include <__algorithm/search.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__iterator/advance.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/next.h> +#include <__iterator/reverse_iterator.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template < + class _AlgPolicy, + class _Iter1, + class _Sent1, + class _Iter2, + class _Sent2, + class _Pred, + class _Proj1, + class _Proj2> +_LIBCPP_HIDE_FROM_ABI inline _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_Iter1, _Iter1> __find_end_impl( + _Iter1 __first1, + _Sent1 __last1, + _Iter2 __first2, + _Sent2 __last2, + _Pred& __pred, + _Proj1& __proj1, + _Proj2& __proj2, + forward_iterator_tag, + forward_iterator_tag) { + // modeled after search algorithm + _Iter1 __match_first = _IterOps<_AlgPolicy>::next(__first1, __last1); // __last1 is the "default" answer + _Iter1 __match_last = __match_first; + if (__first2 == __last2) + return pair<_Iter1, _Iter1>(__match_last, __match_last); + while (true) { + while (true) { + if (__first1 == __last1) // if source exhausted return last correct answer (or __last1 if never found) + return pair<_Iter1, _Iter1>(__match_first, __match_last); + if (std::__invoke(__pred, std::__invoke(__proj1, *__first1), std::__invoke(__proj2, *__first2))) + break; + ++__first1; + } + // *__first1 matches *__first2, now match elements after here + _Iter1 __m1 = __first1; + _Iter2 __m2 = __first2; + while (true) { + if (++__m2 == __last2) { // Pattern exhaused, record answer and search for another one + __match_first = __first1; + __match_last = ++__m1; + ++__first1; + break; + } + if (++__m1 == __last1) // Source exhausted, return last answer + return pair<_Iter1, _Iter1>(__match_first, __match_last); + // mismatch, restart with a new __first + if (!std::__invoke(__pred, std::__invoke(__proj1, *__m1), std::__invoke(__proj2, *__m2))) + { + ++__first1; + break; + } // else there is a match, check next elements + } + } +} + +template < + class _IterOps, + class _Pred, + class _Iter1, + class _Sent1, + class _Iter2, + class _Sent2, + class _Proj1, + class _Proj2> +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _Iter1 __find_end( + _Iter1 __first1, + _Sent1 __sent1, + _Iter2 __first2, + _Sent2 __sent2, + _Pred& __pred, + _Proj1& __proj1, + _Proj2& __proj2, + bidirectional_iterator_tag, + bidirectional_iterator_tag) { + auto __last1 = _IterOps::next(__first1, __sent1); + auto __last2 = _IterOps::next(__first2, __sent2); + // modeled after search algorithm (in reverse) + if (__first2 == __last2) + return __last1; // Everything matches an empty sequence + _Iter1 __l1 = __last1; + _Iter2 __l2 = __last2; + --__l2; + while (true) { + // Find last element in sequence 1 that matchs *(__last2-1), with a mininum of loop checks + while (true) { + if (__first1 == __l1) // return __last1 if no element matches *__first2 + return __last1; + if (std::__invoke(__pred, std::__invoke(__proj1, *--__l1), std::__invoke(__proj2, *__l2))) + break; + } + // *__l1 matches *__l2, now match elements before here + _Iter1 __m1 = __l1; + _Iter2 __m2 = __l2; + while (true) { + if (__m2 == __first2) // If pattern exhausted, __m1 is the answer (works for 1 element pattern) + return __m1; + if (__m1 == __first1) // Otherwise if source exhaused, pattern not found + return __last1; + + // if there is a mismatch, restart with a new __l1 + if (!std::__invoke(__pred, std::__invoke(__proj1, *--__m1), std::__invoke(__proj2, *--__m2))) + { + break; + } // else there is a match, check next elements + } + } +} + +template < + class _AlgPolicy, + class _Pred, + class _Iter1, + class _Sent1, + class _Iter2, + class _Sent2, + class _Proj1, + class _Proj2> +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _Iter1 __find_end( + _Iter1 __first1, + _Sent1 __sent1, + _Iter2 __first2, + _Sent2 __sent2, + _Pred& __pred, + _Proj1& __proj1, + _Proj2& __proj2, + random_access_iterator_tag, + random_access_iterator_tag) { + typedef typename iterator_traits<_Iter1>::difference_type _D1; + auto __last1 = _IterOps<_AlgPolicy>::next(__first1, __sent1); + auto __last2 = _IterOps<_AlgPolicy>::next(__first2, __sent2); + // Take advantage of knowing source and pattern lengths. Stop short when source is smaller than pattern + auto __len2 = __last2 - __first2; + if (__len2 == 0) + return __last1; + auto __len1 = __last1 - __first1; + if (__len1 < __len2) + return __last1; + const _Iter1 __s = __first1 + _D1(__len2 - 1); // End of pattern match can't go before here + _Iter1 __l1 = __last1; + _Iter2 __l2 = __last2; + --__l2; + while (true) { + while (true) { + if (__s == __l1) + return __last1; + if (std::__invoke(__pred, std::__invoke(__proj1, *--__l1), std::__invoke(__proj2, *__l2))) + break; + } + _Iter1 __m1 = __l1; + _Iter2 __m2 = __l2; + while (true) { + if (__m2 == __first2) + return __m1; + // no need to check range on __m1 because __s guarantees we have enough source + if (!std::__invoke(__pred, std::__invoke(__proj1, *--__m1), std::__invoke(*--__m2))) { + break; + } + } + } +} + +template +_LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 +_ForwardIterator1 __find_end_classic(_ForwardIterator1 __first1, _ForwardIterator1 __last1, + _ForwardIterator2 __first2, _ForwardIterator2 __last2, + _BinaryPredicate& __pred) { + auto __proj = __identity(); + return std::__find_end_impl<_ClassicAlgPolicy>( + __first1, + __last1, + __first2, + __last2, + __pred, + __proj, + __proj, + typename iterator_traits<_ForwardIterator1>::iterator_category(), + typename iterator_traits<_ForwardIterator2>::iterator_category()) + .first; +} + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 +_ForwardIterator1 find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, + _ForwardIterator2 __first2, _ForwardIterator2 __last2, + _BinaryPredicate __pred) { + return std::__find_end_classic(__first1, __last1, __first2, __last2, __pred); +} + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 +_ForwardIterator1 find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, + _ForwardIterator2 __first2, _ForwardIterator2 __last2) { + return std::find_end(__first1, __last1, __first2, __last2, __equal_to()); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_FIND_END_OF_H diff --git a/third_party/libcxx/__algorithm/find_first_of.h b/third_party/libcxx/__algorithm/find_first_of.h new file mode 100644 index 000000000..12f0109a6 --- /dev/null +++ b/third_party/libcxx/__algorithm/find_first_of.h @@ -0,0 +1,52 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_FIND_FIRST_OF_H +#define _LIBCPP___ALGORITHM_FIND_FIRST_OF_H + +#include <__algorithm/comp.h> +#include <__config> +#include <__iterator/iterator_traits.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI +_LIBCPP_CONSTEXPR_SINCE_CXX14 _ForwardIterator1 __find_first_of_ce(_ForwardIterator1 __first1, + _ForwardIterator1 __last1, + _ForwardIterator2 __first2, + _ForwardIterator2 __last2, + _BinaryPredicate&& __pred) { + for (; __first1 != __last1; ++__first1) + for (_ForwardIterator2 __j = __first2; __j != __last2; ++__j) + if (__pred(*__first1, *__j)) + return __first1; + return __last1; +} + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator1 +find_first_of(_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, + _ForwardIterator2 __last2, _BinaryPredicate __pred) { + return _VSTD::__find_first_of_ce(__first1, __last1, __first2, __last2, __pred); +} + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator1 find_first_of( + _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, _ForwardIterator2 __last2) { + return std::__find_first_of_ce(__first1, __last1, __first2, __last2, __equal_to()); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_FIND_FIRST_OF_H diff --git a/third_party/libcxx/__algorithm/find_if.h b/third_party/libcxx/__algorithm/find_if.h new file mode 100644 index 000000000..f4ef3ac31 --- /dev/null +++ b/third_party/libcxx/__algorithm/find_if.h @@ -0,0 +1,32 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_FIND_IF_H +#define _LIBCPP___ALGORITHM_FIND_IF_H + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 _InputIterator +find_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) { + for (; __first != __last; ++__first) + if (__pred(*__first)) + break; + return __first; +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_FIND_IF_H diff --git a/third_party/libcxx/__algorithm/find_if_not.h b/third_party/libcxx/__algorithm/find_if_not.h new file mode 100644 index 000000000..96c159cf5 --- /dev/null +++ b/third_party/libcxx/__algorithm/find_if_not.h @@ -0,0 +1,32 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_FIND_IF_NOT_H +#define _LIBCPP___ALGORITHM_FIND_IF_NOT_H + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 _InputIterator +find_if_not(_InputIterator __first, _InputIterator __last, _Predicate __pred) { + for (; __first != __last; ++__first) + if (!__pred(*__first)) + break; + return __first; +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_FIND_IF_NOT_H diff --git a/third_party/libcxx/__algorithm/for_each.h b/third_party/libcxx/__algorithm/for_each.h new file mode 100644 index 000000000..5e273cf1b --- /dev/null +++ b/third_party/libcxx/__algorithm/for_each.h @@ -0,0 +1,47 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_FOR_EACH_H +#define _LIBCPP___ALGORITHM_FOR_EACH_H + +#include <__algorithm/for_each_segment.h> +#include <__config> +#include <__iterator/segmented_iterator.h> +#include <__type_traits/enable_if.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _Function +for_each(_InputIterator __first, _InputIterator __last, _Function __f) { + for (; __first != __last; ++__first) + __f(*__first); + return __f; +} + +#if _LIBCPP_STD_VER >= 20 +template + requires __is_segmented_iterator<_SegmentedIterator>::value +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _Function +for_each(_SegmentedIterator __first, _SegmentedIterator __last, _Function __func) { + std::__for_each_segment(__first, __last, [&](auto __lfirst, auto __llast) { + __func = std::for_each(__lfirst, __llast, std::move(__func)); + }); + return __func; +} +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_FOR_EACH_H diff --git a/third_party/libcxx/__algorithm/for_each_n.h b/third_party/libcxx/__algorithm/for_each_n.h new file mode 100644 index 000000000..5bd731822 --- /dev/null +++ b/third_party/libcxx/__algorithm/for_each_n.h @@ -0,0 +1,42 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_FOR_EACH_N_H +#define _LIBCPP___ALGORITHM_FOR_EACH_N_H + +#include <__config> +#include <__utility/convert_to_integral.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 17 + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 _InputIterator for_each_n(_InputIterator __first, + _Size __orig_n, + _Function __f) { + typedef decltype(_VSTD::__convert_to_integral(__orig_n)) _IntegralSize; + _IntegralSize __n = __orig_n; + while (__n > 0) { + __f(*__first); + ++__first; + --__n; + } + return __first; +} + +#endif + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_FOR_EACH_N_H diff --git a/third_party/libcxx/__algorithm/for_each_segment.h b/third_party/libcxx/__algorithm/for_each_segment.h new file mode 100644 index 000000000..93aa8259b --- /dev/null +++ b/third_party/libcxx/__algorithm/for_each_segment.h @@ -0,0 +1,53 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_FOR_EACH_SEGMENT_H +#define _LIBCPP___ALGORITHM_FOR_EACH_SEGMENT_H + +#include <__config> +#include <__iterator/segmented_iterator.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +// __for_each_segment is a utility function for optimizing iterating over segmented iterators linearly. +// __first and __last are expected to be a segmented range. __func is expected to take a range of local iterators. +// Anything that is returned from __func is ignored. + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 void +__for_each_segment(_SegmentedIterator __first, _SegmentedIterator __last, _Functor __func) { + using _Traits = __segmented_iterator_traits<_SegmentedIterator>; + + auto __sfirst = _Traits::__segment(__first); + auto __slast = _Traits::__segment(__last); + + // We are in a single segment, so we might not be at the beginning or end + if (__sfirst == __slast) { + __func(_Traits::__local(__first), _Traits::__local(__last)); + return; + } + + // We have more than one segment. Iterate over the first segment, since we might not start at the beginning + __func(_Traits::__local(__first), _Traits::__end(__sfirst)); + ++__sfirst; + // iterate over the segments which are guaranteed to be completely in the range + while (__sfirst != __slast) { + __func(_Traits::__begin(__sfirst), _Traits::__end(__sfirst)); + ++__sfirst; + } + // iterate over the last segment + __func(_Traits::__begin(__sfirst), _Traits::__local(__last)); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_FOR_EACH_SEGMENT_H diff --git a/third_party/libcxx/__algorithm/generate.h b/third_party/libcxx/__algorithm/generate.h new file mode 100644 index 000000000..48e21b51e --- /dev/null +++ b/third_party/libcxx/__algorithm/generate.h @@ -0,0 +1,31 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_GENERATE_H +#define _LIBCPP___ALGORITHM_GENERATE_H + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +void +generate(_ForwardIterator __first, _ForwardIterator __last, _Generator __gen) +{ + for (; __first != __last; ++__first) + *__first = __gen(); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_GENERATE_H diff --git a/third_party/libcxx/__algorithm/generate_n.h b/third_party/libcxx/__algorithm/generate_n.h new file mode 100644 index 000000000..ff5c82d3e --- /dev/null +++ b/third_party/libcxx/__algorithm/generate_n.h @@ -0,0 +1,35 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_GENERATE_N_H +#define _LIBCPP___ALGORITHM_GENERATE_N_H + +#include <__config> +#include <__utility/convert_to_integral.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +_OutputIterator +generate_n(_OutputIterator __first, _Size __orig_n, _Generator __gen) +{ + typedef decltype(_VSTD::__convert_to_integral(__orig_n)) _IntegralSize; + _IntegralSize __n = __orig_n; + for (; __n > 0; ++__first, (void) --__n) + *__first = __gen(); + return __first; +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_GENERATE_N_H diff --git a/third_party/libcxx/__algorithm/half_positive.h b/third_party/libcxx/__algorithm/half_positive.h new file mode 100644 index 000000000..5a0f4baf6 --- /dev/null +++ b/third_party/libcxx/__algorithm/half_positive.h @@ -0,0 +1,51 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_HALF_POSITIVE_H +#define _LIBCPP___ALGORITHM_HALF_POSITIVE_H + +#include <__config> +#include <__type_traits/enable_if.h> +#include <__type_traits/is_integral.h> +#include <__type_traits/make_unsigned.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +// Perform division by two quickly for positive integers (llvm.org/PR39129) + +template +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR +typename enable_if +< + is_integral<_Integral>::value, + _Integral +>::type +__half_positive(_Integral __value) +{ + return static_cast<_Integral>(static_cast<__make_unsigned_t<_Integral> >(__value) / 2); +} + +template +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR +typename enable_if +< + !is_integral<_Tp>::value, + _Tp +>::type +__half_positive(_Tp __value) +{ + return __value / 2; +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_HALF_POSITIVE_H diff --git a/third_party/libcxx/__algorithm/in_found_result.h b/third_party/libcxx/__algorithm/in_found_result.h new file mode 100644 index 000000000..d9ca287f0 --- /dev/null +++ b/third_party/libcxx/__algorithm/in_found_result.h @@ -0,0 +1,49 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_IN_FOUND_RESULT_H +#define _LIBCPP___ALGORITHM_IN_FOUND_RESULT_H + +#include <__concepts/convertible_to.h> +#include <__config> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +template +struct in_found_result { + _LIBCPP_NO_UNIQUE_ADDRESS _InIter1 in; + bool found; + + template + requires convertible_to + _LIBCPP_HIDE_FROM_ABI constexpr operator in_found_result<_InIter2>() const & { + return {in, found}; + } + + template + requires convertible_to<_InIter1, _InIter2> + _LIBCPP_HIDE_FROM_ABI constexpr operator in_found_result<_InIter2>() && { + return {std::move(in), found}; + } +}; +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_IN_FOUND_RESULT_H diff --git a/third_party/libcxx/__algorithm/in_fun_result.h b/third_party/libcxx/__algorithm/in_fun_result.h new file mode 100644 index 000000000..33374eddc --- /dev/null +++ b/third_party/libcxx/__algorithm/in_fun_result.h @@ -0,0 +1,49 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_IN_FUN_RESULT_H +#define _LIBCPP___ALGORITHM_IN_FUN_RESULT_H + +#include <__concepts/convertible_to.h> +#include <__config> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +namespace ranges { +template +struct in_fun_result { + _LIBCPP_NO_UNIQUE_ADDRESS _InIter1 in; + _LIBCPP_NO_UNIQUE_ADDRESS _Func1 fun; + + template + requires convertible_to && convertible_to + _LIBCPP_HIDE_FROM_ABI constexpr operator in_fun_result<_InIter2, _Func2>() const & { + return {in, fun}; + } + + template + requires convertible_to<_InIter1, _InIter2> && convertible_to<_Func1, _Func2> + _LIBCPP_HIDE_FROM_ABI constexpr operator in_fun_result<_InIter2, _Func2>() && { + return {std::move(in), std::move(fun)}; + } +}; +} // namespace ranges + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_IN_FUN_RESULT_H diff --git a/third_party/libcxx/__algorithm/in_in_out_result.h b/third_party/libcxx/__algorithm/in_in_out_result.h new file mode 100644 index 000000000..6b50e0e24 --- /dev/null +++ b/third_party/libcxx/__algorithm/in_in_out_result.h @@ -0,0 +1,56 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_IN_IN_OUT_RESULT_H +#define _LIBCPP___ALGORITHM_IN_IN_OUT_RESULT_H + +#include <__concepts/convertible_to.h> +#include <__config> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +namespace ranges { + +template +struct in_in_out_result { + _LIBCPP_NO_UNIQUE_ADDRESS _InIter1 in1; + _LIBCPP_NO_UNIQUE_ADDRESS _InIter2 in2; + _LIBCPP_NO_UNIQUE_ADDRESS _OutIter1 out; + + template + requires convertible_to + && convertible_to && convertible_to + _LIBCPP_HIDE_FROM_ABI constexpr + operator in_in_out_result<_InIter3, _InIter4, _OutIter2>() const& { + return {in1, in2, out}; + } + + template + requires convertible_to<_InIter1, _InIter3> + && convertible_to<_InIter2, _InIter4> && convertible_to<_OutIter1, _OutIter2> + _LIBCPP_HIDE_FROM_ABI constexpr + operator in_in_out_result<_InIter3, _InIter4, _OutIter2>() && { + return {std::move(in1), std::move(in2), std::move(out)}; + } +}; + +} // namespace ranges + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_IN_IN_OUT_RESULT_H diff --git a/third_party/libcxx/__algorithm/in_in_result.h b/third_party/libcxx/__algorithm/in_in_result.h new file mode 100644 index 000000000..1eceb9de0 --- /dev/null +++ b/third_party/libcxx/__algorithm/in_in_result.h @@ -0,0 +1,53 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_IN_IN_RESULT_H +#define _LIBCPP___ALGORITHM_IN_IN_RESULT_H + +#include <__concepts/convertible_to.h> +#include <__config> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +namespace ranges { + +template +struct in_in_result { + _LIBCPP_NO_UNIQUE_ADDRESS _InIter1 in1; + _LIBCPP_NO_UNIQUE_ADDRESS _InIter2 in2; + + template + requires convertible_to && convertible_to + _LIBCPP_HIDE_FROM_ABI constexpr + operator in_in_result<_InIter3, _InIter4>() const & { + return {in1, in2}; + } + + template + requires convertible_to<_InIter1, _InIter3> && convertible_to<_InIter2, _InIter4> + _LIBCPP_HIDE_FROM_ABI constexpr + operator in_in_result<_InIter3, _InIter4>() && { + return {std::move(in1), std::move(in2)}; + } +}; + +} // namespace ranges + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_IN_IN_RESULT_H diff --git a/third_party/libcxx/__algorithm/in_out_out_result.h b/third_party/libcxx/__algorithm/in_out_out_result.h new file mode 100644 index 000000000..2f7a09b5c --- /dev/null +++ b/third_party/libcxx/__algorithm/in_out_out_result.h @@ -0,0 +1,54 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_IN_OUT_OUT_RESULT_H +#define _LIBCPP___ALGORITHM_IN_OUT_OUT_RESULT_H + +#include <__concepts/convertible_to.h> +#include <__config> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +namespace ranges { +template +struct in_out_out_result { + _LIBCPP_NO_UNIQUE_ADDRESS _InIter1 in; + _LIBCPP_NO_UNIQUE_ADDRESS _OutIter1 out1; + _LIBCPP_NO_UNIQUE_ADDRESS _OutIter2 out2; + + template + requires convertible_to + && convertible_to && convertible_to + _LIBCPP_HIDE_FROM_ABI constexpr + operator in_out_out_result<_InIter2, _OutIter3, _OutIter4>() const& { + return {in, out1, out2}; + } + + template + requires convertible_to<_InIter1, _InIter2> + && convertible_to<_OutIter1, _OutIter3> && convertible_to<_OutIter2, _OutIter4> + _LIBCPP_HIDE_FROM_ABI constexpr + operator in_out_out_result<_InIter2, _OutIter3, _OutIter4>() && { + return {std::move(in), std::move(out1), std::move(out2)}; + } +}; +} // namespace ranges + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_IN_OUT_OUT_RESULT_H diff --git a/third_party/libcxx/__algorithm/in_out_result.h b/third_party/libcxx/__algorithm/in_out_result.h new file mode 100644 index 000000000..158b35532 --- /dev/null +++ b/third_party/libcxx/__algorithm/in_out_result.h @@ -0,0 +1,53 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_IN_OUT_RESULT_H +#define _LIBCPP___ALGORITHM_IN_OUT_RESULT_H + +#include <__concepts/convertible_to.h> +#include <__config> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +namespace ranges { + +template +struct in_out_result { + _LIBCPP_NO_UNIQUE_ADDRESS _InIter1 in; + _LIBCPP_NO_UNIQUE_ADDRESS _OutIter1 out; + + template + requires convertible_to && convertible_to + _LIBCPP_HIDE_FROM_ABI + constexpr operator in_out_result<_InIter2, _OutIter2>() const & { + return {in, out}; + } + + template + requires convertible_to<_InIter1, _InIter2> && convertible_to<_OutIter1, _OutIter2> + _LIBCPP_HIDE_FROM_ABI + constexpr operator in_out_result<_InIter2, _OutIter2>() && { + return {std::move(in), std::move(out)}; + } +}; + +} // namespace ranges + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_IN_OUT_RESULT_H diff --git a/third_party/libcxx/__algorithm/includes.h b/third_party/libcxx/__algorithm/includes.h new file mode 100644 index 000000000..cc39f275b --- /dev/null +++ b/third_party/libcxx/__algorithm/includes.h @@ -0,0 +1,75 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_INCLUDES_H +#define _LIBCPP___ALGORITHM_INCLUDES_H + +#include <__algorithm/comp.h> +#include <__algorithm/comp_ref_type.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__iterator/iterator_traits.h> +#include <__type_traits/is_callable.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +__includes(_Iter1 __first1, _Sent1 __last1, _Iter2 __first2, _Sent2 __last2, + _Comp&& __comp, _Proj1&& __proj1, _Proj2&& __proj2) { + for (; __first2 != __last2; ++__first1) { + if (__first1 == __last1 || std::__invoke( + __comp, std::__invoke(__proj2, *__first2), std::__invoke(__proj1, *__first1))) + return false; + if (!std::__invoke(__comp, std::__invoke(__proj1, *__first1), std::__invoke(__proj2, *__first2))) + ++__first2; + } + return true; +} + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool includes( + _InputIterator1 __first1, + _InputIterator1 __last1, + _InputIterator2 __first2, + _InputIterator2 __last2, + _Compare __comp) { + static_assert(__is_callable<_Compare, decltype(*__first1), decltype(*__first2)>::value, + "Comparator has to be callable"); + + return std::__includes( + std::move(__first1), + std::move(__last1), + std::move(__first2), + std::move(__last2), + static_cast<__comp_ref_type<_Compare> >(__comp), + __identity(), + __identity()); +} + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +includes(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2) { + return std::includes( + std::move(__first1), + std::move(__last1), + std::move(__first2), + std::move(__last2), + __less::value_type, + typename iterator_traits<_InputIterator2>::value_type>()); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_INCLUDES_H diff --git a/third_party/libcxx/__algorithm/inplace_merge.h b/third_party/libcxx/__algorithm/inplace_merge.h new file mode 100644 index 000000000..5bbefc94b --- /dev/null +++ b/third_party/libcxx/__algorithm/inplace_merge.h @@ -0,0 +1,257 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_INPLACE_MERGE_H +#define _LIBCPP___ALGORITHM_INPLACE_MERGE_H + +#include <__algorithm/comp.h> +#include <__algorithm/comp_ref_type.h> +#include <__algorithm/iterator_operations.h> +#include <__algorithm/lower_bound.h> +#include <__algorithm/min.h> +#include <__algorithm/move.h> +#include <__algorithm/rotate.h> +#include <__algorithm/upper_bound.h> +#include <__config> +#include <__functional/identity.h> +#include <__iterator/advance.h> +#include <__iterator/distance.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/reverse_iterator.h> +#include <__memory/destruct_n.h> +#include <__memory/temporary_buffer.h> +#include <__memory/unique_ptr.h> +#include <__utility/pair.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +class __invert // invert the sense of a comparison +{ +private: + _Predicate __p_; +public: + _LIBCPP_INLINE_VISIBILITY __invert() {} + + _LIBCPP_INLINE_VISIBILITY + explicit __invert(_Predicate __p) : __p_(__p) {} + + template + _LIBCPP_INLINE_VISIBILITY + bool operator()(const _T1& __x) {return !__p_(__x);} + + template + _LIBCPP_INLINE_VISIBILITY + bool operator()(const _T1& __x, const _T2& __y) {return __p_(__y, __x);} +}; + +template +_LIBCPP_HIDE_FROM_ABI +void __half_inplace_merge(_InputIterator1 __first1, _Sent1 __last1, + _InputIterator2 __first2, _Sent2 __last2, + _OutputIterator __result, _Compare&& __comp) +{ + for (; __first1 != __last1; ++__result) + { + if (__first2 == __last2) + { + std::__move<_AlgPolicy>(__first1, __last1, __result); + return; + } + + if (__comp(*__first2, *__first1)) + { + *__result = _IterOps<_AlgPolicy>::__iter_move(__first2); + ++__first2; + } + else + { + *__result = _IterOps<_AlgPolicy>::__iter_move(__first1); + ++__first1; + } + } + // __first2 through __last2 are already in the right spot. +} + +template +_LIBCPP_HIDE_FROM_ABI +void __buffered_inplace_merge( + _BidirectionalIterator __first, + _BidirectionalIterator __middle, + _BidirectionalIterator __last, + _Compare&& __comp, + typename iterator_traits<_BidirectionalIterator>::difference_type __len1, + typename iterator_traits<_BidirectionalIterator>::difference_type __len2, + typename iterator_traits<_BidirectionalIterator>::value_type* __buff) { + typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type; + __destruct_n __d(0); + unique_ptr __h2(__buff, __d); + if (__len1 <= __len2) + { + value_type* __p = __buff; + for (_BidirectionalIterator __i = __first; __i != __middle; __d.template __incr(), (void) ++__i, (void) ++__p) + ::new ((void*)__p) value_type(_IterOps<_AlgPolicy>::__iter_move(__i)); + std::__half_inplace_merge<_AlgPolicy>(__buff, __p, __middle, __last, __first, __comp); + } + else + { + value_type* __p = __buff; + for (_BidirectionalIterator __i = __middle; __i != __last; __d.template __incr(), (void) ++__i, (void) ++__p) + ::new ((void*)__p) value_type(_IterOps<_AlgPolicy>::__iter_move(__i)); + typedef __unconstrained_reverse_iterator<_BidirectionalIterator> _RBi; + typedef __unconstrained_reverse_iterator _Rv; + typedef __invert<_Compare> _Inverted; + std::__half_inplace_merge<_AlgPolicy>(_Rv(__p), _Rv(__buff), + _RBi(__middle), _RBi(__first), + _RBi(__last), _Inverted(__comp)); + } +} + +template +void __inplace_merge( + _BidirectionalIterator __first, + _BidirectionalIterator __middle, + _BidirectionalIterator __last, + _Compare&& __comp, + typename iterator_traits<_BidirectionalIterator>::difference_type __len1, + typename iterator_traits<_BidirectionalIterator>::difference_type __len2, + typename iterator_traits<_BidirectionalIterator>::value_type* __buff, + ptrdiff_t __buff_size) { + using _Ops = _IterOps<_AlgPolicy>; + + typedef typename iterator_traits<_BidirectionalIterator>::difference_type difference_type; + while (true) + { + // if __middle == __last, we're done + if (__len2 == 0) + return; + if (__len1 <= __buff_size || __len2 <= __buff_size) + return std::__buffered_inplace_merge<_AlgPolicy> + (__first, __middle, __last, __comp, __len1, __len2, __buff); + // shrink [__first, __middle) as much as possible (with no moves), returning if it shrinks to 0 + for (; true; ++__first, (void) --__len1) + { + if (__len1 == 0) + return; + if (__comp(*__middle, *__first)) + break; + } + // __first < __middle < __last + // *__first > *__middle + // partition [__first, __m1) [__m1, __middle) [__middle, __m2) [__m2, __last) such that + // all elements in: + // [__first, __m1) <= [__middle, __m2) + // [__middle, __m2) < [__m1, __middle) + // [__m1, __middle) <= [__m2, __last) + // and __m1 or __m2 is in the middle of its range + _BidirectionalIterator __m1; // "median" of [__first, __middle) + _BidirectionalIterator __m2; // "median" of [__middle, __last) + difference_type __len11; // distance(__first, __m1) + difference_type __len21; // distance(__middle, __m2) + // binary search smaller range + if (__len1 < __len2) + { // __len >= 1, __len2 >= 2 + __len21 = __len2 / 2; + __m2 = __middle; + _Ops::advance(__m2, __len21); + __m1 = std::__upper_bound<_AlgPolicy>(__first, __middle, *__m2, __comp, std::__identity()); + __len11 = _Ops::distance(__first, __m1); + } + else + { + if (__len1 == 1) + { // __len1 >= __len2 && __len2 > 0, therefore __len2 == 1 + // It is known *__first > *__middle + _Ops::iter_swap(__first, __middle); + return; + } + // __len1 >= 2, __len2 >= 1 + __len11 = __len1 / 2; + __m1 = __first; + _Ops::advance(__m1, __len11); + __m2 = std::lower_bound(__middle, __last, *__m1, __comp); + __len21 = _Ops::distance(__middle, __m2); + } + difference_type __len12 = __len1 - __len11; // distance(__m1, __middle) + difference_type __len22 = __len2 - __len21; // distance(__m2, __last) + // [__first, __m1) [__m1, __middle) [__middle, __m2) [__m2, __last) + // swap middle two partitions + __middle = std::__rotate<_AlgPolicy>(__m1, __middle, __m2).first; + // __len12 and __len21 now have swapped meanings + // merge smaller range with recursive call and larger with tail recursion elimination + if (__len11 + __len21 < __len12 + __len22) + { + std::__inplace_merge<_AlgPolicy>( + __first, __m1, __middle, __comp, __len11, __len21, __buff, __buff_size); + __first = __middle; + __middle = __m2; + __len1 = __len12; + __len2 = __len22; + } + else + { + std::__inplace_merge<_AlgPolicy>( + __middle, __m2, __last, __comp, __len12, __len22, __buff, __buff_size); + __last = __middle; + __middle = __m1; + __len1 = __len11; + __len2 = __len21; + } + } +} + +template +_LIBCPP_HIDE_FROM_ABI +void +__inplace_merge(_BidirectionalIterator __first, _BidirectionalIterator __middle, _BidirectionalIterator __last, + _Compare&& __comp) +{ + typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type; + typedef typename iterator_traits<_BidirectionalIterator>::difference_type difference_type; + difference_type __len1 = _IterOps<_AlgPolicy>::distance(__first, __middle); + difference_type __len2 = _IterOps<_AlgPolicy>::distance(__middle, __last); + difference_type __buf_size = _VSTD::min(__len1, __len2); +// TODO: Remove the use of std::get_temporary_buffer +_LIBCPP_SUPPRESS_DEPRECATED_PUSH + pair __buf = _VSTD::get_temporary_buffer(__buf_size); +_LIBCPP_SUPPRESS_DEPRECATED_POP + unique_ptr __h(__buf.first); + return std::__inplace_merge<_AlgPolicy>( + std::move(__first), std::move(__middle), std::move(__last), __comp, __len1, __len2, __buf.first, __buf.second); +} + +template +inline _LIBCPP_HIDE_FROM_ABI void inplace_merge( + _BidirectionalIterator __first, _BidirectionalIterator __middle, _BidirectionalIterator __last, _Compare __comp) { + std::__inplace_merge<_ClassicAlgPolicy>( + std::move(__first), std::move(__middle), std::move(__last), static_cast<__comp_ref_type<_Compare> >(__comp)); +} + +template +inline _LIBCPP_HIDE_FROM_ABI +void +inplace_merge(_BidirectionalIterator __first, _BidirectionalIterator __middle, _BidirectionalIterator __last) +{ + std::inplace_merge(std::move(__first), std::move(__middle), std::move(__last), + __less::value_type>()); +} + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP___ALGORITHM_INPLACE_MERGE_H diff --git a/third_party/libcxx/__algorithm/is_heap.h b/third_party/libcxx/__algorithm/is_heap.h new file mode 100644 index 000000000..2dcb4a28e --- /dev/null +++ b/third_party/libcxx/__algorithm/is_heap.h @@ -0,0 +1,44 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_IS_HEAP_H +#define _LIBCPP___ALGORITHM_IS_HEAP_H + +#include <__algorithm/comp.h> +#include <__algorithm/comp_ref_type.h> +#include <__algorithm/is_heap_until.h> +#include <__config> +#include <__iterator/iterator_traits.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_NODISCARD_EXT inline +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +bool +is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) +{ + return std::__is_heap_until(__first, __last, static_cast<__comp_ref_type<_Compare> >(__comp)) == __last; +} + +template +_LIBCPP_NODISCARD_EXT inline +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +bool +is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) +{ + return _VSTD::is_heap(__first, __last, __less::value_type>()); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_IS_HEAP_H diff --git a/third_party/libcxx/__algorithm/is_heap_until.h b/third_party/libcxx/__algorithm/is_heap_until.h new file mode 100644 index 000000000..6ed4cb29c --- /dev/null +++ b/third_party/libcxx/__algorithm/is_heap_until.h @@ -0,0 +1,66 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_IS_HEAP_UNTIL_H +#define _LIBCPP___ALGORITHM_IS_HEAP_UNTIL_H + +#include <__algorithm/comp.h> +#include <__algorithm/comp_ref_type.h> +#include <__config> +#include <__iterator/iterator_traits.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _RandomAccessIterator +__is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare&& __comp) +{ + typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; + difference_type __len = __last - __first; + difference_type __p = 0; + difference_type __c = 1; + _RandomAccessIterator __pp = __first; + while (__c < __len) + { + _RandomAccessIterator __cp = __first + __c; + if (__comp(*__pp, *__cp)) + return __cp; + ++__c; + ++__cp; + if (__c == __len) + return __last; + if (__comp(*__pp, *__cp)) + return __cp; + ++__p; + ++__pp; + __c = 2 * __p + 1; + } + return __last; +} + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _RandomAccessIterator +is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) +{ + return std::__is_heap_until(__first, __last, static_cast<__comp_ref_type<_Compare> >(__comp)); +} + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _RandomAccessIterator +is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last) +{ + return _VSTD::__is_heap_until(__first, __last, __less::value_type>()); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_IS_HEAP_UNTIL_H diff --git a/third_party/libcxx/__algorithm/is_partitioned.h b/third_party/libcxx/__algorithm/is_partitioned.h new file mode 100644 index 000000000..ab59d3cce --- /dev/null +++ b/third_party/libcxx/__algorithm/is_partitioned.h @@ -0,0 +1,38 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_IS_PARTITIONED_H +#define _LIBCPP___ALGORITHM_IS_PARTITIONED_H + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +is_partitioned(_InputIterator __first, _InputIterator __last, _Predicate __pred) +{ + for (; __first != __last; ++__first) + if (!__pred(*__first)) + break; + if ( __first == __last ) + return true; + ++__first; + for (; __first != __last; ++__first) + if (__pred(*__first)) + return false; + return true; +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_IS_PARTITIONED_H diff --git a/third_party/libcxx/__algorithm/is_permutation.h b/third_party/libcxx/__algorithm/is_permutation.h new file mode 100644 index 000000000..2a7c606b8 --- /dev/null +++ b/third_party/libcxx/__algorithm/is_permutation.h @@ -0,0 +1,238 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_IS_PERMUTATION_H +#define _LIBCPP___ALGORITHM_IS_PERMUTATION_H + +#include <__algorithm/comp.h> +#include <__algorithm/iterator_operations.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__iterator/concepts.h> +#include <__iterator/distance.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/next.h> +#include <__type_traits/is_callable.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +struct _ConstTimeDistance : false_type {}; + +#if _LIBCPP_STD_VER >= 20 + +template +struct _ConstTimeDistance<_Iter1, _Sent1, _Iter2, _Sent2, __enable_if_t< + sized_sentinel_for<_Sent1, _Iter1> && + sized_sentinel_for<_Sent2, _Iter2> +>> : true_type {}; + +#else + +template +struct _ConstTimeDistance<_Iter1, _Iter1, _Iter2, _Iter2, __enable_if_t< + is_same::iterator_category, random_access_iterator_tag>::value && + is_same::iterator_category, random_access_iterator_tag>::value +> > : true_type {}; + +#endif // _LIBCPP_STD_VER >= 20 + +// Internal functions + +// For each element in [f1, l1) see if there are the same number of equal elements in [f2, l2) +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +__is_permutation_impl(_Iter1 __first1, _Sent1 __last1, _Iter2 __first2, _Sent2 __last2, + _Pred&& __pred, _Proj1&& __proj1, _Proj2&& __proj2) { + using _D1 = __iter_diff_t<_Iter1>; + + for (auto __i = __first1; __i != __last1; ++__i) { + // Have we already counted the number of *__i in [f1, l1)? + auto __match = __first1; + for (; __match != __i; ++__match) { + if (std::__invoke(__pred, std::__invoke(__proj1, *__match), std::__invoke(__proj1, *__i))) + break; + } + + if (__match == __i) { + // Count number of *__i in [f2, l2) + _D1 __c2 = 0; + for (auto __j = __first2; __j != __last2; ++__j) { + if (std::__invoke(__pred, std::__invoke(__proj1, *__i), std::__invoke(__proj2, *__j))) + ++__c2; + } + if (__c2 == 0) + return false; + + // Count number of *__i in [__i, l1) (we can start with 1) + _D1 __c1 = 1; + for (auto __j = _IterOps<_AlgPolicy>::next(__i); __j != __last1; ++__j) { + if (std::__invoke(__pred, std::__invoke(__proj1, *__i), std::__invoke(__proj1, *__j))) + ++__c1; + } + if (__c1 != __c2) + return false; + } + } + + return true; +} + +// 2+1 iterators, predicate. Not used by range algorithms. +template +_LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +__is_permutation(_ForwardIterator1 __first1, _Sentinel1 __last1, _ForwardIterator2 __first2, + _BinaryPredicate&& __pred) { + // Shorten sequences as much as possible by lopping of any equal prefix. + for (; __first1 != __last1; ++__first1, (void)++__first2) { + if (!__pred(*__first1, *__first2)) + break; + } + + if (__first1 == __last1) + return true; + + // __first1 != __last1 && *__first1 != *__first2 + using _D1 = __iter_diff_t<_ForwardIterator1>; + _D1 __l1 = _IterOps<_AlgPolicy>::distance(__first1, __last1); + if (__l1 == _D1(1)) + return false; + auto __last2 = _IterOps<_AlgPolicy>::next(__first2, __l1); + + return std::__is_permutation_impl<_AlgPolicy>( + std::move(__first1), std::move(__last1), std::move(__first2), std::move(__last2), + __pred, __identity(), __identity()); +} + +// 2+2 iterators, predicate, non-constant time `distance`. +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +__is_permutation(_Iter1 __first1, _Sent1 __last1, _Iter2 __first2, _Sent2 __last2, + _Pred&& __pred, _Proj1&& __proj1, _Proj2&& __proj2, + /*_ConstTimeDistance=*/false_type) { + // Shorten sequences as much as possible by lopping of any equal prefix. + while (__first1 != __last1 && __first2 != __last2) { + if (!std::__invoke(__pred, std::__invoke(__proj1, *__first1), std::__invoke(__proj2, *__first2))) + break; + ++__first1; + ++__first2; + } + + if (__first1 == __last1) + return __first2 == __last2; + if (__first2 == __last2) // Second range is shorter + return false; + + using _D1 = __iter_diff_t<_Iter1>; + _D1 __l1 = _IterOps<_AlgPolicy>::distance(__first1, __last1); + + using _D2 = __iter_diff_t<_Iter2>; + _D2 __l2 = _IterOps<_AlgPolicy>::distance(__first2, __last2); + if (__l1 != __l2) + return false; + + return std::__is_permutation_impl<_AlgPolicy>( + std::move(__first1), std::move(__last1), std::move(__first2), std::move(__last2), + __pred, __proj1, __proj2); +} + +// 2+2 iterators, predicate, specialization for constant-time `distance` call. +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +__is_permutation(_Iter1 __first1, _Sent1 __last1, _Iter2 __first2, _Sent2 __last2, + _Pred&& __pred, _Proj1&& __proj1, _Proj2&& __proj2, + /*_ConstTimeDistance=*/true_type) { + if (std::distance(__first1, __last1) != std::distance(__first2, __last2)) + return false; + return std::__is_permutation<_AlgPolicy>( + std::move(__first1), std::move(__last1), std::move(__first2), std::move(__last2), + __pred, __proj1, __proj2, + /*_ConstTimeDistance=*/false_type()); +} + +// 2+2 iterators, predicate +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +__is_permutation(_Iter1 __first1, _Sent1 __last1, _Iter2 __first2, _Sent2 __last2, + _Pred&& __pred, _Proj1&& __proj1, _Proj2&& __proj2) { + return std::__is_permutation<_AlgPolicy>( + std::move(__first1), std::move(__last1), std::move(__first2), std::move(__last2), + __pred, __proj1, __proj2, + _ConstTimeDistance<_Iter1, _Sent1, _Iter2, _Sent2>()); +} + +// Public interface + +// 2+1 iterators, predicate +template +_LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, + _BinaryPredicate __pred) { + static_assert(__is_callable<_BinaryPredicate, decltype(*__first1), decltype(*__first2)>::value, + "The predicate has to be callable"); + + return std::__is_permutation<_ClassicAlgPolicy>( + std::move(__first1), std::move(__last1), std::move(__first2), __pred); +} + +// 2+1 iterators +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2) { + return std::is_permutation(__first1, __last1, __first2, __equal_to()); +} + +#if _LIBCPP_STD_VER >= 14 + +// 2+2 iterators +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool is_permutation( + _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, _ForwardIterator2 __last2) { + return std::__is_permutation<_ClassicAlgPolicy>( + std::move(__first1), + std::move(__last1), + std::move(__first2), + std::move(__last2), + __equal_to(), + __identity(), + __identity()); +} + +// 2+2 iterators, predicate +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, + _ForwardIterator2 __last2, _BinaryPredicate __pred) { + static_assert(__is_callable<_BinaryPredicate, decltype(*__first1), decltype(*__first2)>::value, + "The predicate has to be callable"); + + return std::__is_permutation<_ClassicAlgPolicy>( + std::move(__first1), std::move(__last1), std::move(__first2), std::move(__last2), + __pred, __identity(), __identity()); +} + +#endif // _LIBCPP_STD_VER >= 14 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_IS_PERMUTATION_H diff --git a/third_party/libcxx/__algorithm/is_sorted.h b/third_party/libcxx/__algorithm/is_sorted.h new file mode 100644 index 000000000..bf44f4576 --- /dev/null +++ b/third_party/libcxx/__algorithm/is_sorted.h @@ -0,0 +1,44 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_IS_SORTED_H +#define _LIBCPP___ALGORITHM_IS_SORTED_H + +#include <__algorithm/comp.h> +#include <__algorithm/comp_ref_type.h> +#include <__algorithm/is_sorted_until.h> +#include <__config> +#include <__iterator/iterator_traits.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_NODISCARD_EXT inline +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +bool +is_sorted(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp) +{ + return _VSTD::__is_sorted_until<__comp_ref_type<_Compare> >(__first, __last, __comp) == __last; +} + +template +_LIBCPP_NODISCARD_EXT inline +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +bool +is_sorted(_ForwardIterator __first, _ForwardIterator __last) +{ + return _VSTD::is_sorted(__first, __last, __less::value_type>()); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_IS_SORTED_H diff --git a/third_party/libcxx/__algorithm/is_sorted_until.h b/third_party/libcxx/__algorithm/is_sorted_until.h new file mode 100644 index 000000000..b6683000a --- /dev/null +++ b/third_party/libcxx/__algorithm/is_sorted_until.h @@ -0,0 +1,56 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_IS_SORTED_UNTIL_H +#define _LIBCPP___ALGORITHM_IS_SORTED_UNTIL_H + +#include <__algorithm/comp.h> +#include <__algorithm/comp_ref_type.h> +#include <__config> +#include <__iterator/iterator_traits.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator +__is_sorted_until(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp) +{ + if (__first != __last) + { + _ForwardIterator __i = __first; + while (++__i != __last) + { + if (__comp(*__i, *__first)) + return __i; + __first = __i; + } + } + return __last; +} + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator +is_sorted_until(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp) +{ + return _VSTD::__is_sorted_until<__comp_ref_type<_Compare> >(__first, __last, __comp); +} + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator +is_sorted_until(_ForwardIterator __first, _ForwardIterator __last) +{ + return _VSTD::is_sorted_until(__first, __last, __less::value_type>()); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_IS_SORTED_UNTIL_H diff --git a/third_party/libcxx/__algorithm/iter_swap.h b/third_party/libcxx/__algorithm/iter_swap.h new file mode 100644 index 000000000..44422b5de --- /dev/null +++ b/third_party/libcxx/__algorithm/iter_swap.h @@ -0,0 +1,32 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_ITER_SWAP_H +#define _LIBCPP___ALGORITHM_ITER_SWAP_H + +#include <__config> +#include <__utility/declval.h> +#include <__utility/swap.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 void iter_swap(_ForwardIterator1 __a, + _ForwardIterator2 __b) + // _NOEXCEPT_(_NOEXCEPT_(swap(*__a, *__b))) + _NOEXCEPT_(_NOEXCEPT_(swap(*std::declval<_ForwardIterator1>(), *std::declval<_ForwardIterator2>()))) { + swap(*__a, *__b); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_ITER_SWAP_H diff --git a/third_party/libcxx/__algorithm/iterator_operations.h b/third_party/libcxx/__algorithm/iterator_operations.h new file mode 100644 index 000000000..2bdc0ac2f --- /dev/null +++ b/third_party/libcxx/__algorithm/iterator_operations.h @@ -0,0 +1,175 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_ITERATOR_OPERATIONS_H +#define _LIBCPP___ALGORITHM_ITERATOR_OPERATIONS_H + +#include <__algorithm/iter_swap.h> +#include <__algorithm/ranges_iterator_concept.h> +#include <__config> +#include <__iterator/advance.h> +#include <__iterator/distance.h> +#include <__iterator/incrementable_traits.h> +#include <__iterator/iter_move.h> +#include <__iterator/iter_swap.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/next.h> +#include <__iterator/prev.h> +#include <__iterator/readable_traits.h> +#include <__type_traits/enable_if.h> +#include <__type_traits/is_reference.h> +#include <__type_traits/is_same.h> +#include <__type_traits/remove_cvref.h> +#include <__utility/declval.h> +#include <__utility/forward.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template struct _IterOps; + +#if _LIBCPP_STD_VER >= 20 +struct _RangeAlgPolicy {}; + +template <> +struct _IterOps<_RangeAlgPolicy> { + + template + using __value_type = iter_value_t<_Iter>; + + template + using __iterator_category = ranges::__iterator_concept<_Iter>; + + template + using __difference_type = iter_difference_t<_Iter>; + + static constexpr auto advance = ranges::advance; + static constexpr auto distance = ranges::distance; + static constexpr auto __iter_move = ranges::iter_move; + static constexpr auto iter_swap = ranges::iter_swap; + static constexpr auto next = ranges::next; + static constexpr auto prev = ranges::prev; + static constexpr auto __advance_to = ranges::advance; +}; + +#endif + +struct _ClassicAlgPolicy {}; + +template <> +struct _IterOps<_ClassicAlgPolicy> { + + template + using __value_type = typename iterator_traits<_Iter>::value_type; + + template + using __iterator_category = typename iterator_traits<_Iter>::iterator_category; + + template + using __difference_type = typename iterator_traits<_Iter>::difference_type; + + // advance + template + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 + static void advance(_Iter& __iter, _Distance __count) { + std::advance(__iter, __count); + } + + // distance + template + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 + static typename iterator_traits<_Iter>::difference_type distance(_Iter __first, _Iter __last) { + return std::distance(__first, __last); + } + + template + using __deref_t = decltype(*std::declval<_Iter&>()); + + template + using __move_t = decltype(std::move(*std::declval<_Iter&>())); + + template + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 + static void __validate_iter_reference() { + static_assert(is_same<__deref_t<_Iter>, typename iterator_traits<__remove_cvref_t<_Iter> >::reference>::value, + "It looks like your iterator's `iterator_traits::reference` does not match the return type of " + "dereferencing the iterator, i.e., calling `*it`. This is undefined behavior according to [input.iterators] " + "and can lead to dangling reference issues at runtime, so we are flagging this."); + } + + // iter_move + template + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 static + // If the result of dereferencing `_Iter` is a reference type, deduce the result of calling `std::move` on it. Note + // that the C++03 mode doesn't support `decltype(auto)` as the return type. + __enable_if_t< + is_reference<__deref_t<_Iter> >::value, + __move_t<_Iter> > + __iter_move(_Iter&& __i) { + __validate_iter_reference<_Iter>(); + + return std::move(*std::forward<_Iter>(__i)); + } + + template + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 static + // If the result of dereferencing `_Iter` is a value type, deduce the return value of this function to also be a + // value -- otherwise, after `operator*` returns a temporary, this function would return a dangling reference to that + // temporary. Note that the C++03 mode doesn't support `auto` as the return type. + __enable_if_t< + !is_reference<__deref_t<_Iter> >::value, + __deref_t<_Iter> > + __iter_move(_Iter&& __i) { + __validate_iter_reference<_Iter>(); + + return *std::forward<_Iter>(__i); + } + + // iter_swap + template + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 + static void iter_swap(_Iter1&& __a, _Iter2&& __b) { + std::iter_swap(std::forward<_Iter1>(__a), std::forward<_Iter2>(__b)); + } + + // next + template + _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR_SINCE_CXX14 + _Iterator next(_Iterator, _Iterator __last) { + return __last; + } + + template + _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR_SINCE_CXX14 + __remove_cvref_t<_Iter> next(_Iter&& __it, + typename iterator_traits<__remove_cvref_t<_Iter> >::difference_type __n = 1) { + return std::next(std::forward<_Iter>(__it), __n); + } + + // prev + template + _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR_SINCE_CXX14 + __remove_cvref_t<_Iter> prev(_Iter&& __iter, + typename iterator_traits<__remove_cvref_t<_Iter> >::difference_type __n = 1) { + return std::prev(std::forward<_Iter>(__iter), __n); + } + + template + _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR_SINCE_CXX14 + void __advance_to(_Iter& __first, _Iter __last) { + __first = __last; + } +}; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_ITERATOR_OPERATIONS_H diff --git a/third_party/libcxx/__algorithm/lexicographical_compare.h b/third_party/libcxx/__algorithm/lexicographical_compare.h new file mode 100644 index 000000000..0a13c5dd3 --- /dev/null +++ b/third_party/libcxx/__algorithm/lexicographical_compare.h @@ -0,0 +1,62 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_LEXICOGRAPHICAL_COMPARE_H +#define _LIBCPP___ALGORITHM_LEXICOGRAPHICAL_COMPARE_H + +#include <__algorithm/comp.h> +#include <__algorithm/comp_ref_type.h> +#include <__config> +#include <__iterator/iterator_traits.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +__lexicographical_compare(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _InputIterator2 __last2, _Compare __comp) +{ + for (; __first2 != __last2; ++__first1, (void) ++__first2) + { + if (__first1 == __last1 || __comp(*__first1, *__first2)) + return true; + if (__comp(*__first2, *__first1)) + return false; + } + return false; +} + +template +_LIBCPP_NODISCARD_EXT inline +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +bool +lexicographical_compare(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _InputIterator2 __last2, _Compare __comp) +{ + return _VSTD::__lexicographical_compare<__comp_ref_type<_Compare> >(__first1, __last1, __first2, __last2, __comp); +} + +template +_LIBCPP_NODISCARD_EXT inline +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +bool +lexicographical_compare(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _InputIterator2 __last2) +{ + return _VSTD::lexicographical_compare(__first1, __last1, __first2, __last2, + __less::value_type, + typename iterator_traits<_InputIterator2>::value_type>()); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_LEXICOGRAPHICAL_COMPARE_H diff --git a/third_party/libcxx/__algorithm/lexicographical_compare_three_way.h b/third_party/libcxx/__algorithm/lexicographical_compare_three_way.h new file mode 100644 index 000000000..32de97d07 --- /dev/null +++ b/third_party/libcxx/__algorithm/lexicographical_compare_three_way.h @@ -0,0 +1,125 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_LEXICOGRAPHICAL_COMPARE_THREE_WAY_H +#define _LIBCPP___ALGORITHM_LEXICOGRAPHICAL_COMPARE_THREE_WAY_H + +#include <__algorithm/min.h> +#include <__algorithm/three_way_comp_ref_type.h> +#include <__compare/compare_three_way.h> +#include <__compare/ordering.h> +#include <__concepts/arithmetic.h> +#include <__config> +#include <__iterator/iterator_traits.h> +#include <__type_traits/common_type.h> +#include <__type_traits/is_copy_constructible.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +// Fast path for random access iterators which computes the number of loop iterations up-front and +// then skips the iterator comparisons inside the loop. +template +_LIBCPP_HIDE_FROM_ABI constexpr auto __lexicographical_compare_three_way_fast_path( + _InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, _Cmp& __comp) + -> decltype(__comp(*__first1, *__first2)) { + static_assert( + signed_integral<__iter_diff_t<_InputIterator1>>, "Using a non-integral difference_type is undefined behavior."); + static_assert( + signed_integral<__iter_diff_t<_InputIterator2>>, "Using a non-integral difference_type is undefined behavior."); + + using _Len1 = __iter_diff_t<_InputIterator1>; + using _Len2 = __iter_diff_t<_InputIterator2>; + using _Common = common_type_t<_Len1, _Len2>; + + _Len1 __len1 = __last1 - __first1; + _Len2 __len2 = __last2 - __first2; + _Common __min_len = std::min<_Common>(__len1, __len2); + + for (_Common __i = 0; __i < __min_len; ++__i) { + auto __c = __comp(*__first1, *__first2); + if (__c != 0) { + return __c; + } + ++__first1; + ++__first2; + } + + return __len1 <=> __len2; +} + +// Unoptimized implementation which compares the iterators against the end in every loop iteration +template +_LIBCPP_HIDE_FROM_ABI constexpr auto __lexicographical_compare_three_way_slow_path( + _InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, _Cmp& __comp) + -> decltype(__comp(*__first1, *__first2)) { + while (true) { + bool __exhausted1 = __first1 == __last1; + bool __exhausted2 = __first2 == __last2; + + if (__exhausted1 || __exhausted2) { + if (!__exhausted1) + return strong_ordering::greater; + if (!__exhausted2) + return strong_ordering::less; + return strong_ordering::equal; + } + + auto __c = __comp(*__first1, *__first2); + if (__c != 0) { + return __c; + } + + ++__first1; + ++__first2; + } +} + +template +_LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr auto lexicographical_compare_three_way( + _InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, _Cmp __comp) + -> decltype(__comp(*__first1, *__first2)) { + static_assert(__comparison_category, + "The comparator passed to lexicographical_compare_three_way must return a comparison category type."); + static_assert(std::is_copy_constructible_v<_InputIterator1>, "Iterators must be copy constructible."); + static_assert(std::is_copy_constructible_v<_InputIterator2>, "Iterators must be copy constructible."); + __three_way_comp_ref_type<_Cmp> __wrapped_comp_ref(__comp); + if constexpr (__has_random_access_iterator_category<_InputIterator1>::value && + __has_random_access_iterator_category<_InputIterator2>::value) { + return std::__lexicographical_compare_three_way_fast_path( + std::move(__first1), std::move(__last1), std::move(__first2), std::move(__last2), __wrapped_comp_ref); + } else { + // Unoptimized implementation which compares the iterators against the end in every loop iteration + return std::__lexicographical_compare_three_way_slow_path( + std::move(__first1), std::move(__last1), std::move(__first2), std::move(__last2), __wrapped_comp_ref); + } +} + +template +_LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr auto lexicographical_compare_three_way( + _InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2) { + return std::lexicographical_compare_three_way( + std::move(__first1), std::move(__last1), std::move(__first2), std::move(__last2), std::compare_three_way()); +} + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP___ALGORITHM_LEXICOGRAPHICAL_COMPARE_THREE_WAY_H diff --git a/third_party/libcxx/__algorithm/lower_bound.h b/third_party/libcxx/__algorithm/lower_bound.h new file mode 100644 index 000000000..810939375 --- /dev/null +++ b/third_party/libcxx/__algorithm/lower_bound.h @@ -0,0 +1,67 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_LOWER_BOUND_H +#define _LIBCPP___ALGORITHM_LOWER_BOUND_H + +#include <__algorithm/comp.h> +#include <__algorithm/half_positive.h> +#include <__algorithm/iterator_operations.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__iterator/advance.h> +#include <__iterator/distance.h> +#include <__iterator/iterator_traits.h> +#include <__type_traits/is_callable.h> +#include <__type_traits/remove_reference.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 +_Iter __lower_bound_impl(_Iter __first, _Sent __last, const _Type& __value, _Comp& __comp, _Proj& __proj) { + auto __len = _IterOps<_AlgPolicy>::distance(__first, __last); + + while (__len != 0) { + auto __l2 = std::__half_positive(__len); + _Iter __m = __first; + _IterOps<_AlgPolicy>::advance(__m, __l2); + if (std::__invoke(__comp, std::__invoke(__proj, *__m), __value)) { + __first = ++__m; + __len -= __l2 + 1; + } else { + __len = __l2; + } + } + return __first; +} + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 +_ForwardIterator lower_bound(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value, _Compare __comp) { + static_assert(__is_callable<_Compare, decltype(*__first), const _Tp&>::value, + "The comparator has to be callable"); + auto __proj = std::__identity(); + return std::__lower_bound_impl<_ClassicAlgPolicy>(__first, __last, __value, __comp, __proj); +} + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 +_ForwardIterator lower_bound(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) { + return std::lower_bound(__first, __last, __value, + __less::value_type, _Tp>()); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_LOWER_BOUND_H diff --git a/third_party/libcxx/__algorithm/make_heap.h b/third_party/libcxx/__algorithm/make_heap.h new file mode 100644 index 000000000..d66cfe2e5 --- /dev/null +++ b/third_party/libcxx/__algorithm/make_heap.h @@ -0,0 +1,56 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_MAKE_HEAP_H +#define _LIBCPP___ALGORITHM_MAKE_HEAP_H + +#include <__algorithm/comp.h> +#include <__algorithm/comp_ref_type.h> +#include <__algorithm/iterator_operations.h> +#include <__algorithm/sift_down.h> +#include <__config> +#include <__iterator/iterator_traits.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 +void __make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare&& __comp) { + __comp_ref_type<_Compare> __comp_ref = __comp; + + using difference_type = typename iterator_traits<_RandomAccessIterator>::difference_type; + difference_type __n = __last - __first; + if (__n > 1) { + // start from the first parent, there is no need to consider children + for (difference_type __start = (__n - 2) / 2; __start >= 0; --__start) { + std::__sift_down<_AlgPolicy>(__first, __comp_ref, __n, __first + __start); + } + } +} + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 +void make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) { + std::__make_heap<_ClassicAlgPolicy>(std::move(__first), std::move(__last), __comp); +} + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 +void make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) { + std::make_heap(std::move(__first), std::move(__last), + __less::value_type>()); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_MAKE_HEAP_H diff --git a/third_party/libcxx/__algorithm/make_projected.h b/third_party/libcxx/__algorithm/make_projected.h new file mode 100644 index 000000000..ec854763a --- /dev/null +++ b/third_party/libcxx/__algorithm/make_projected.h @@ -0,0 +1,113 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_MAKE_PROJECTED_H +#define _LIBCPP___ALGORITHM_MAKE_PROJECTED_H + +#include <__concepts/same_as.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__type_traits/decay.h> +#include <__type_traits/enable_if.h> +#include <__type_traits/integral_constant.h> +#include <__type_traits/is_member_pointer.h> +#include <__type_traits/is_same.h> +#include <__utility/declval.h> +#include <__utility/forward.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +struct _ProjectedPred { + _Pred& __pred; // Can be a unary or a binary predicate. + _Proj& __proj; + + _LIBCPP_CONSTEXPR _LIBCPP_HIDE_FROM_ABI _ProjectedPred(_Pred& __pred_arg, _Proj& __proj_arg) + : __pred(__pred_arg), __proj(__proj_arg) {} + + template + typename __invoke_of<_Pred&, + decltype(std::__invoke(std::declval<_Proj&>(), std::declval<_Tp>())) + >::type + _LIBCPP_CONSTEXPR _LIBCPP_HIDE_FROM_ABI operator()(_Tp&& __v) const { + return std::__invoke(__pred, std::__invoke(__proj, std::forward<_Tp>(__v))); + } + + template + typename __invoke_of<_Pred&, + decltype(std::__invoke(std::declval<_Proj&>(), std::declval<_T1>())), + decltype(std::__invoke(std::declval<_Proj&>(), std::declval<_T2>())) + >::type + _LIBCPP_CONSTEXPR _LIBCPP_HIDE_FROM_ABI operator()(_T1&& __lhs, _T2&& __rhs) const { + return std::__invoke(__pred, + std::__invoke(__proj, std::forward<_T1>(__lhs)), + std::__invoke(__proj, std::forward<_T2>(__rhs))); + } + +}; + +template >::value && + __is_identity<__decay_t<_Proj> >::value), + int> = 0> +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _ProjectedPred<_Pred, _Proj> +__make_projected(_Pred& __pred, _Proj& __proj) { + return _ProjectedPred<_Pred, _Proj>(__pred, __proj); +} + +// Avoid creating the functor and just use the pristine comparator -- for certain algorithms, this would enable +// optimizations that rely on the type of the comparator. Additionally, this results in less layers of indirection in +// the call stack when the comparator is invoked, even in an unoptimized build. +template >::value && + __is_identity<__decay_t<_Proj> >::value, + int> = 0> +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _Pred& __make_projected(_Pred& __pred, _Proj&) { + return __pred; +} + +_LIBCPP_END_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { + +template +_LIBCPP_HIDE_FROM_ABI constexpr +decltype(auto) __make_projected_comp(_Comp& __comp, _Proj1& __proj1, _Proj2& __proj2) { + if constexpr (__is_identity>::value && __is_identity>::value && + !is_member_pointer_v>) { + // Avoid creating the lambda and just use the pristine comparator -- for certain algorithms, this would enable + // optimizations that rely on the type of the comparator. + return __comp; + + } else { + return [&](auto&& __lhs, auto&& __rhs) { + return std::invoke(__comp, + std::invoke(__proj1, std::forward(__lhs)), + std::invoke(__proj2, std::forward(__rhs))); + }; + } +} + +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_MAKE_PROJECTED_H diff --git a/third_party/libcxx/__algorithm/max.h b/third_party/libcxx/__algorithm/max.h new file mode 100644 index 000000000..97f61f2aa --- /dev/null +++ b/third_party/libcxx/__algorithm/max.h @@ -0,0 +1,71 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_MAX_H +#define _LIBCPP___ALGORITHM_MAX_H + +#include <__algorithm/comp.h> +#include <__algorithm/comp_ref_type.h> +#include <__algorithm/max_element.h> +#include <__config> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_NODISCARD_EXT inline +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +const _Tp& +max(_LIBCPP_LIFETIMEBOUND const _Tp& __a, _LIBCPP_LIFETIMEBOUND const _Tp& __b, _Compare __comp) +{ + return __comp(__a, __b) ? __b : __a; +} + +template +_LIBCPP_NODISCARD_EXT inline +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +const _Tp& +max(_LIBCPP_LIFETIMEBOUND const _Tp& __a, _LIBCPP_LIFETIMEBOUND const _Tp& __b) +{ + return _VSTD::max(__a, __b, __less<_Tp>()); +} + +#ifndef _LIBCPP_CXX03_LANG + +template +_LIBCPP_NODISCARD_EXT inline +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +_Tp +max(initializer_list<_Tp> __t, _Compare __comp) +{ + return *_VSTD::__max_element<__comp_ref_type<_Compare> >(__t.begin(), __t.end(), __comp); +} + +template +_LIBCPP_NODISCARD_EXT inline +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +_Tp +max(initializer_list<_Tp> __t) +{ + return *_VSTD::max_element(__t.begin(), __t.end(), __less<_Tp>()); +} + +#endif // _LIBCPP_CXX03_LANG + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP___ALGORITHM_MAX_H diff --git a/third_party/libcxx/__algorithm/max_element.h b/third_party/libcxx/__algorithm/max_element.h new file mode 100644 index 000000000..f816a17fa --- /dev/null +++ b/third_party/libcxx/__algorithm/max_element.h @@ -0,0 +1,57 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_MAX_ELEMENT_H +#define _LIBCPP___ALGORITHM_MAX_ELEMENT_H + +#include <__algorithm/comp.h> +#include <__algorithm/comp_ref_type.h> +#include <__config> +#include <__iterator/iterator_traits.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _ForwardIterator +__max_element(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp) +{ + static_assert(__has_forward_iterator_category<_ForwardIterator>::value, + "std::max_element requires a ForwardIterator"); + if (__first != __last) + { + _ForwardIterator __i = __first; + while (++__i != __last) + if (__comp(*__first, *__i)) + __first = __i; + } + return __first; +} + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _ForwardIterator +max_element(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp) +{ + return _VSTD::__max_element<__comp_ref_type<_Compare> >(__first, __last, __comp); +} + + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _ForwardIterator +max_element(_ForwardIterator __first, _ForwardIterator __last) +{ + return _VSTD::max_element(__first, __last, + __less::value_type>()); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_MAX_ELEMENT_H diff --git a/third_party/libcxx/__algorithm/merge.h b/third_party/libcxx/__algorithm/merge.h new file mode 100644 index 000000000..e54e430bc --- /dev/null +++ b/third_party/libcxx/__algorithm/merge.h @@ -0,0 +1,70 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_MERGE_H +#define _LIBCPP___ALGORITHM_MERGE_H + +#include <__algorithm/comp.h> +#include <__algorithm/comp_ref_type.h> +#include <__algorithm/copy.h> +#include <__config> +#include <__iterator/iterator_traits.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 +_OutputIterator +__merge(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp) +{ + for (; __first1 != __last1; ++__result) + { + if (__first2 == __last2) + return _VSTD::copy(__first1, __last1, __result); + if (__comp(*__first2, *__first1)) + { + *__result = *__first2; + ++__first2; + } + else + { + *__result = *__first1; + ++__first1; + } + } + return _VSTD::copy(__first2, __last2, __result); +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +_OutputIterator +merge(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp) +{ + return _VSTD::__merge<__comp_ref_type<_Compare> >(__first1, __last1, __first2, __last2, __result, __comp); +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +_OutputIterator +merge(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result) +{ + typedef typename iterator_traits<_InputIterator1>::value_type __v1; + typedef typename iterator_traits<_InputIterator2>::value_type __v2; + return _VSTD::merge(__first1, __last1, __first2, __last2, __result, __less<__v1, __v2>()); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_MERGE_H diff --git a/third_party/libcxx/__algorithm/min.h b/third_party/libcxx/__algorithm/min.h new file mode 100644 index 000000000..d073a1653 --- /dev/null +++ b/third_party/libcxx/__algorithm/min.h @@ -0,0 +1,71 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_MIN_H +#define _LIBCPP___ALGORITHM_MIN_H + +#include <__algorithm/comp.h> +#include <__algorithm/comp_ref_type.h> +#include <__algorithm/min_element.h> +#include <__config> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_NODISCARD_EXT inline +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +const _Tp& +min(_LIBCPP_LIFETIMEBOUND const _Tp& __a, _LIBCPP_LIFETIMEBOUND const _Tp& __b, _Compare __comp) +{ + return __comp(__b, __a) ? __b : __a; +} + +template +_LIBCPP_NODISCARD_EXT inline +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +const _Tp& +min(_LIBCPP_LIFETIMEBOUND const _Tp& __a, _LIBCPP_LIFETIMEBOUND const _Tp& __b) +{ + return _VSTD::min(__a, __b, __less<_Tp>()); +} + +#ifndef _LIBCPP_CXX03_LANG + +template +_LIBCPP_NODISCARD_EXT inline +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +_Tp +min(initializer_list<_Tp> __t, _Compare __comp) +{ + return *_VSTD::__min_element<__comp_ref_type<_Compare> >(__t.begin(), __t.end(), __comp); +} + +template +_LIBCPP_NODISCARD_EXT inline +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +_Tp +min(initializer_list<_Tp> __t) +{ + return *_VSTD::min_element(__t.begin(), __t.end(), __less<_Tp>()); +} + +#endif // _LIBCPP_CXX03_LANG + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP___ALGORITHM_MIN_H diff --git a/third_party/libcxx/__algorithm/min_element.h b/third_party/libcxx/__algorithm/min_element.h new file mode 100644 index 000000000..aeabd30a7 --- /dev/null +++ b/third_party/libcxx/__algorithm/min_element.h @@ -0,0 +1,70 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_MIN_ELEMENT_H +#define _LIBCPP___ALGORITHM_MIN_ELEMENT_H + +#include <__algorithm/comp.h> +#include <__algorithm/comp_ref_type.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__iterator/iterator_traits.h> +#include <__type_traits/is_callable.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 +_Iter __min_element(_Iter __first, _Sent __last, _Comp __comp, _Proj& __proj) { + if (__first == __last) + return __first; + + _Iter __i = __first; + while (++__i != __last) + if (std::__invoke(__comp, std::__invoke(__proj, *__i), std::__invoke(__proj, *__first))) + __first = __i; + + return __first; +} + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 +_Iter __min_element(_Iter __first, _Sent __last, _Comp __comp) { + auto __proj = __identity(); + return std::__min_element<_Comp>(std::move(__first), std::move(__last), __comp, __proj); +} + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _ForwardIterator +min_element(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp) +{ + static_assert(__has_forward_iterator_category<_ForwardIterator>::value, + "std::min_element requires a ForwardIterator"); + static_assert(__is_callable<_Compare, decltype(*__first), decltype(*__first)>::value, + "The comparator has to be callable"); + + return std::__min_element<__comp_ref_type<_Compare> >(std::move(__first), std::move(__last), __comp); +} + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _ForwardIterator +min_element(_ForwardIterator __first, _ForwardIterator __last) +{ + return _VSTD::min_element(__first, __last, + __less::value_type>()); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_MIN_ELEMENT_H diff --git a/third_party/libcxx/__algorithm/min_max_result.h b/third_party/libcxx/__algorithm/min_max_result.h new file mode 100644 index 000000000..ef2d99038 --- /dev/null +++ b/third_party/libcxx/__algorithm/min_max_result.h @@ -0,0 +1,56 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_MIN_MAX_RESULT_H +#define _LIBCPP___ALGORITHM_MIN_MAX_RESULT_H + +#include <__concepts/convertible_to.h> +#include <__config> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +namespace ranges { + +template +struct min_max_result { + _LIBCPP_NO_UNIQUE_ADDRESS _T1 min; + _LIBCPP_NO_UNIQUE_ADDRESS _T1 max; + + template + requires convertible_to + _LIBCPP_HIDE_FROM_ABI constexpr operator min_max_result<_T2>() const & { + return {min, max}; + } + + template + requires convertible_to<_T1, _T2> + _LIBCPP_HIDE_FROM_ABI constexpr operator min_max_result<_T2>() && { + return {std::move(min), std::move(max)}; + } +}; + +} // namespace ranges + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP___ALGORITHM_MIN_MAX_RESULT_H diff --git a/third_party/libcxx/__algorithm/minmax.h b/third_party/libcxx/__algorithm/minmax.h new file mode 100644 index 000000000..f486de2ef --- /dev/null +++ b/third_party/libcxx/__algorithm/minmax.h @@ -0,0 +1,69 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_MINMAX_H +#define _LIBCPP___ALGORITHM_MINMAX_H + +#include <__algorithm/comp.h> +#include <__algorithm/minmax_element.h> +#include <__config> +#include <__functional/identity.h> +#include <__type_traits/is_callable.h> +#include <__utility/pair.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_NODISCARD_EXT inline +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +pair +minmax(_LIBCPP_LIFETIMEBOUND const _Tp& __a, _LIBCPP_LIFETIMEBOUND const _Tp& __b, _Compare __comp) +{ + return __comp(__b, __a) ? pair(__b, __a) : + pair(__a, __b); +} + +template +_LIBCPP_NODISCARD_EXT inline +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +pair +minmax(_LIBCPP_LIFETIMEBOUND const _Tp& __a, _LIBCPP_LIFETIMEBOUND const _Tp& __b) +{ + return std::minmax(__a, __b, __less<_Tp>()); +} + +#ifndef _LIBCPP_CXX03_LANG + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 +pair<_Tp, _Tp> minmax(initializer_list<_Tp> __t, _Compare __comp) { + static_assert(__is_callable<_Compare, _Tp, _Tp>::value, "The comparator has to be callable"); + __identity __proj; + auto __ret = std::__minmax_element_impl(__t.begin(), __t.end(), __comp, __proj); + return pair<_Tp, _Tp>(*__ret.first, *__ret.second); +} + +template +_LIBCPP_NODISCARD_EXT inline +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +pair<_Tp, _Tp> +minmax(initializer_list<_Tp> __t) +{ + return std::minmax(__t, __less<_Tp>()); +} + +#endif // _LIBCPP_CXX03_LANG + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_MINMAX_H diff --git a/third_party/libcxx/__algorithm/minmax_element.h b/third_party/libcxx/__algorithm/minmax_element.h new file mode 100644 index 000000000..eca460de3 --- /dev/null +++ b/third_party/libcxx/__algorithm/minmax_element.h @@ -0,0 +1,102 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_MINMAX_ELEMENT_H +#define _LIBCPP___ALGORITHM_MINMAX_ELEMENT_H + +#include <__algorithm/comp.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__iterator/iterator_traits.h> +#include <__type_traits/is_callable.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +class _MinmaxElementLessFunc { + _Comp& __comp_; + _Proj& __proj_; + +public: + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR + _MinmaxElementLessFunc(_Comp& __comp, _Proj& __proj) : __comp_(__comp), __proj_(__proj) {} + + template + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 + bool operator()(_Iter& __it1, _Iter& __it2) { + return std::__invoke(__comp_, std::__invoke(__proj_, *__it1), std::__invoke(__proj_, *__it2)); + } +}; + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 +pair<_Iter, _Iter> __minmax_element_impl(_Iter __first, _Sent __last, _Comp& __comp, _Proj& __proj) { + auto __less = _MinmaxElementLessFunc<_Comp, _Proj>(__comp, __proj); + + pair<_Iter, _Iter> __result(__first, __first); + if (__first == __last || ++__first == __last) + return __result; + + if (__less(__first, __result.first)) + __result.first = __first; + else + __result.second = __first; + + while (++__first != __last) { + _Iter __i = __first; + if (++__first == __last) { + if (__less(__i, __result.first)) + __result.first = __i; + else if (!__less(__i, __result.second)) + __result.second = __i; + return __result; + } + + if (__less(__first, __i)) { + if (__less(__first, __result.first)) + __result.first = __first; + if (!__less(__i, __result.second)) + __result.second = __i; + } else { + if (__less(__i, __result.first)) + __result.first = __i; + if (!__less(__first, __result.second)) + __result.second = __first; + } + } + + return __result; +} + +template +_LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 +pair<_ForwardIterator, _ForwardIterator> +minmax_element(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp) { + static_assert(__has_forward_iterator_category<_ForwardIterator>::value, + "std::minmax_element requires a ForwardIterator"); + static_assert(__is_callable<_Compare, decltype(*__first), decltype(*__first)>::value, + "The comparator has to be callable"); + auto __proj = __identity(); + return std::__minmax_element_impl(__first, __last, __comp, __proj); +} + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 +pair<_ForwardIterator, _ForwardIterator> minmax_element(_ForwardIterator __first, _ForwardIterator __last) { + return std::minmax_element(__first, __last, __less::value_type>()); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_MINMAX_ELEMENT_H diff --git a/third_party/libcxx/__algorithm/mismatch.h b/third_party/libcxx/__algorithm/mismatch.h new file mode 100644 index 000000000..e5b014f45 --- /dev/null +++ b/third_party/libcxx/__algorithm/mismatch.h @@ -0,0 +1,63 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_MISMATCH_H +#define _LIBCPP___ALGORITHM_MISMATCH_H + +#include <__algorithm/comp.h> +#include <__config> +#include <__iterator/iterator_traits.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY + _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_InputIterator1, _InputIterator2> + mismatch(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _BinaryPredicate __pred) { + for (; __first1 != __last1; ++__first1, (void)++__first2) + if (!__pred(*__first1, *__first2)) + break; + return pair<_InputIterator1, _InputIterator2>(__first1, __first2); +} + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY + _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_InputIterator1, _InputIterator2> + mismatch(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2) { + return std::mismatch(__first1, __last1, __first2, __equal_to()); +} + +#if _LIBCPP_STD_VER >= 14 +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY + _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_InputIterator1, _InputIterator2> + mismatch(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, + _BinaryPredicate __pred) { + for (; __first1 != __last1 && __first2 != __last2; ++__first1, (void)++__first2) + if (!__pred(*__first1, *__first2)) + break; + return pair<_InputIterator1, _InputIterator2>(__first1, __first2); +} + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY + _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_InputIterator1, _InputIterator2> + mismatch(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2) { + return std::mismatch(__first1, __last1, __first2, __last2, __equal_to()); +} +#endif + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_MISMATCH_H diff --git a/third_party/libcxx/__algorithm/move.h b/third_party/libcxx/__algorithm/move.h new file mode 100644 index 000000000..b1b702a06 --- /dev/null +++ b/third_party/libcxx/__algorithm/move.h @@ -0,0 +1,129 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_MOVE_H +#define _LIBCPP___ALGORITHM_MOVE_H + +#include <__algorithm/copy_move_common.h> +#include <__algorithm/for_each_segment.h> +#include <__algorithm/iterator_operations.h> +#include <__algorithm/min.h> +#include <__config> +#include <__iterator/segmented_iterator.h> +#include <__type_traits/common_type.h> +#include <__type_traits/is_copy_constructible.h> +#include <__utility/move.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_InIter, _OutIter> +__move(_InIter __first, _Sent __last, _OutIter __result); + +template +struct __move_loop { + template + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_InIter, _OutIter> + operator()(_InIter __first, _Sent __last, _OutIter __result) const { + while (__first != __last) { + *__result = _IterOps<_AlgPolicy>::__iter_move(__first); + ++__first; + ++__result; + } + return std::make_pair(std::move(__first), std::move(__result)); + } + + template + struct _MoveSegment { + using _Traits = __segmented_iterator_traits<_InIter>; + + _OutIter& __result_; + + _LIBCPP_HIDE_FROM_ABI _MoveSegment(_OutIter& __result) : __result_(__result) {} + + _LIBCPP_HIDE_FROM_ABI void + operator()(typename _Traits::__local_iterator __lfirst, typename _Traits::__local_iterator __llast) { + __result_ = std::__move<_AlgPolicy>(__lfirst, __llast, std::move(__result_)).second; + } + }; + + template ::value, int> = 0> + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_InIter, _OutIter> + operator()(_InIter __first, _InIter __last, _OutIter __result) const { + std::__for_each_segment(__first, __last, _MoveSegment<_InIter, _OutIter>(__result)); + return std::make_pair(__last, std::move(__result)); + } + + template ::value && + !__is_segmented_iterator<_InIter>::value && __is_segmented_iterator<_OutIter>::value, + int> = 0> + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_InIter, _OutIter> + operator()(_InIter __first, _InIter __last, _OutIter __result) { + using _Traits = __segmented_iterator_traits<_OutIter>; + using _DiffT = typename common_type<__iter_diff_t<_InIter>, __iter_diff_t<_OutIter> >::type; + + if (__first == __last) + return std::make_pair(std::move(__first), std::move(__result)); + + auto __local_first = _Traits::__local(__result); + auto __segment_iterator = _Traits::__segment(__result); + while (true) { + auto __local_last = _Traits::__end(__segment_iterator); + auto __size = std::min<_DiffT>(__local_last - __local_first, __last - __first); + auto __iters = std::__move<_AlgPolicy>(__first, __first + __size, __local_first); + __first = std::move(__iters.first); + + if (__first == __last) + return std::make_pair(std::move(__first), _Traits::__compose(__segment_iterator, std::move(__iters.second))); + + __local_first = _Traits::__begin(++__segment_iterator); + } + } +}; + +struct __move_trivial { + // At this point, the iterators have been unwrapped so any `contiguous_iterator` has been unwrapped to a pointer. + template ::value, int> = 0> + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_In*, _Out*> + operator()(_In* __first, _In* __last, _Out* __result) const { + return std::__copy_trivial_impl(__first, __last, __result); + } +}; + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_InIter, _OutIter> +__move(_InIter __first, _Sent __last, _OutIter __result) { + return std::__dispatch_copy_or_move<_AlgPolicy, __move_loop<_AlgPolicy>, __move_trivial>( + std::move(__first), std::move(__last), std::move(__result)); +} + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator +move(_InputIterator __first, _InputIterator __last, _OutputIterator __result) { + static_assert(is_copy_constructible<_InputIterator>::value, "Iterators has to be copy constructible."); + static_assert(is_copy_constructible<_OutputIterator>::value, "The output iterator has to be copy constructible."); + + return std::__move<_ClassicAlgPolicy>(std::move(__first), std::move(__last), std::move(__result)).second; +} + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP___ALGORITHM_MOVE_H diff --git a/third_party/libcxx/__algorithm/move_backward.h b/third_party/libcxx/__algorithm/move_backward.h new file mode 100644 index 000000000..db4c4db1c --- /dev/null +++ b/third_party/libcxx/__algorithm/move_backward.h @@ -0,0 +1,139 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_MOVE_BACKWARD_H +#define _LIBCPP___ALGORITHM_MOVE_BACKWARD_H + +#include <__algorithm/copy_move_common.h> +#include <__algorithm/iterator_operations.h> +#include <__algorithm/min.h> +#include <__config> +#include <__iterator/segmented_iterator.h> +#include <__type_traits/common_type.h> +#include <__type_traits/is_copy_constructible.h> +#include <__utility/move.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_BidirectionalIterator1, _BidirectionalIterator2> +__move_backward(_BidirectionalIterator1 __first, _Sentinel __last, _BidirectionalIterator2 __result); + +template +struct __move_backward_loop { + template + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_InIter, _OutIter> + operator()(_InIter __first, _Sent __last, _OutIter __result) const { + auto __last_iter = _IterOps<_AlgPolicy>::next(__first, __last); + auto __original_last_iter = __last_iter; + + while (__first != __last_iter) { + *--__result = _IterOps<_AlgPolicy>::__iter_move(--__last_iter); + } + + return std::make_pair(std::move(__original_last_iter), std::move(__result)); + } + + template ::value, int> = 0> + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_InIter, _OutIter> + operator()(_InIter __first, _InIter __last, _OutIter __result) const { + using _Traits = __segmented_iterator_traits<_InIter>; + auto __sfirst = _Traits::__segment(__first); + auto __slast = _Traits::__segment(__last); + if (__sfirst == __slast) { + auto __iters = + std::__move_backward<_AlgPolicy>(_Traits::__local(__first), _Traits::__local(__last), std::move(__result)); + return std::make_pair(__last, __iters.second); + } + + __result = + std::__move_backward<_AlgPolicy>(_Traits::__begin(__slast), _Traits::__local(__last), std::move(__result)) + .second; + --__slast; + while (__sfirst != __slast) { + __result = + std::__move_backward<_AlgPolicy>(_Traits::__begin(__slast), _Traits::__end(__slast), std::move(__result)) + .second; + --__slast; + } + __result = std::__move_backward<_AlgPolicy>(_Traits::__local(__first), _Traits::__end(__slast), std::move(__result)) + .second; + return std::make_pair(__last, std::move(__result)); + } + + template ::value && + !__is_segmented_iterator<_InIter>::value && __is_segmented_iterator<_OutIter>::value, + int> = 0> + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_InIter, _OutIter> + operator()(_InIter __first, _InIter __last, _OutIter __result) { + using _Traits = __segmented_iterator_traits<_OutIter>; + using _DiffT = typename common_type<__iter_diff_t<_InIter>, __iter_diff_t<_OutIter> >::type; + + // When the range contains no elements, __result might not be a valid iterator + if (__first == __last) + return std::make_pair(__first, __result); + + auto __orig_last = __last; + + auto __local_last = _Traits::__local(__result); + auto __segment_iterator = _Traits::__segment(__result); + while (true) { + auto __local_first = _Traits::__begin(__segment_iterator); + auto __size = std::min<_DiffT>(__local_last - __local_first, __last - __first); + auto __iter = std::__move_backward<_AlgPolicy>(__last - __size, __last, __local_last).second; + __last -= __size; + + if (__first == __last) + return std::make_pair(std::move(__orig_last), _Traits::__compose(__segment_iterator, std::move(__iter))); + + __local_last = _Traits::__end(--__segment_iterator); + } + } +}; + +struct __move_backward_trivial { + // At this point, the iterators have been unwrapped so any `contiguous_iterator` has been unwrapped to a pointer. + template ::value, int> = 0> + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_In*, _Out*> + operator()(_In* __first, _In* __last, _Out* __result) const { + return std::__copy_backward_trivial_impl(__first, __last, __result); + } +}; + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_BidirectionalIterator1, _BidirectionalIterator2> +__move_backward(_BidirectionalIterator1 __first, _Sentinel __last, _BidirectionalIterator2 __result) { + static_assert(std::is_copy_constructible<_BidirectionalIterator1>::value && + std::is_copy_constructible<_BidirectionalIterator1>::value, "Iterators must be copy constructible."); + + return std::__dispatch_copy_or_move<_AlgPolicy, __move_backward_loop<_AlgPolicy>, __move_backward_trivial>( + std::move(__first), std::move(__last), std::move(__result)); +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 _BidirectionalIterator2 +move_backward(_BidirectionalIterator1 __first, _BidirectionalIterator1 __last, _BidirectionalIterator2 __result) { + return std::__move_backward<_ClassicAlgPolicy>(std::move(__first), std::move(__last), std::move(__result)).second; +} + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP___ALGORITHM_MOVE_BACKWARD_H diff --git a/third_party/libcxx/__algorithm/next_permutation.h b/third_party/libcxx/__algorithm/next_permutation.h new file mode 100644 index 000000000..73e8b99ab --- /dev/null +++ b/third_party/libcxx/__algorithm/next_permutation.h @@ -0,0 +1,78 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_NEXT_PERMUTATION_H +#define _LIBCPP___ALGORITHM_NEXT_PERMUTATION_H + +#include <__algorithm/comp.h> +#include <__algorithm/comp_ref_type.h> +#include <__algorithm/iterator_operations.h> +#include <__algorithm/reverse.h> +#include <__config> +#include <__iterator/iterator_traits.h> +#include <__utility/move.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_BidirectionalIterator, bool> +__next_permutation(_BidirectionalIterator __first, _Sentinel __last, _Compare&& __comp) +{ + using _Result = pair<_BidirectionalIterator, bool>; + + _BidirectionalIterator __last_iter = _IterOps<_AlgPolicy>::next(__first, __last); + _BidirectionalIterator __i = __last_iter; + if (__first == __last || __first == --__i) + return _Result(std::move(__last_iter), false); + + while (true) + { + _BidirectionalIterator __ip1 = __i; + if (__comp(*--__i, *__ip1)) + { + _BidirectionalIterator __j = __last_iter; + while (!__comp(*__i, *--__j)) + ; + _IterOps<_AlgPolicy>::iter_swap(__i, __j); + std::__reverse<_AlgPolicy>(__ip1, __last_iter); + return _Result(std::move(__last_iter), true); + } + if (__i == __first) + { + std::__reverse<_AlgPolicy>(__first, __last_iter); + return _Result(std::move(__last_iter), false); + } + } +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +bool +next_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last, _Compare __comp) +{ + return std::__next_permutation<_ClassicAlgPolicy>( + std::move(__first), std::move(__last), static_cast<__comp_ref_type<_Compare> >(__comp)).second; +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +bool +next_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last) +{ + return _VSTD::next_permutation(__first, __last, + __less::value_type>()); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_NEXT_PERMUTATION_H diff --git a/third_party/libcxx/__algorithm/none_of.h b/third_party/libcxx/__algorithm/none_of.h new file mode 100644 index 000000000..19357eb23 --- /dev/null +++ b/third_party/libcxx/__algorithm/none_of.h @@ -0,0 +1,32 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_NONE_OF_H +#define _LIBCPP___ALGORITHM_NONE_OF_H + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 bool +none_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) { + for (; __first != __last; ++__first) + if (__pred(*__first)) + return false; + return true; +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_NONE_OF_H diff --git a/third_party/libcxx/__algorithm/nth_element.h b/third_party/libcxx/__algorithm/nth_element.h new file mode 100644 index 000000000..9fdfb2cae --- /dev/null +++ b/third_party/libcxx/__algorithm/nth_element.h @@ -0,0 +1,258 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_NTH_ELEMENT_H +#define _LIBCPP___ALGORITHM_NTH_ELEMENT_H + +#include <__algorithm/comp.h> +#include <__algorithm/comp_ref_type.h> +#include <__algorithm/iterator_operations.h> +#include <__algorithm/sort.h> +#include <__config> +#include <__debug> +#include <__debug_utils/randomize_range.h> +#include <__iterator/iterator_traits.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 bool +__nth_element_find_guard(_RandomAccessIterator& __i, _RandomAccessIterator& __j, + _RandomAccessIterator __m, _Compare __comp) +{ + // manually guard downward moving __j against __i + while (true) { + if (__i == --__j) { + return false; + } + if (__comp(*__j, *__m)) { + return true; // found guard for downward moving __j, now use unguarded partition + } + } +} + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 void +__nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, _RandomAccessIterator __last, _Compare __comp) +{ + using _Ops = _IterOps<_AlgPolicy>; + + // _Compare is known to be a reference type + typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; + const difference_type __limit = 7; + while (true) + { + if (__nth == __last) + return; + difference_type __len = __last - __first; + switch (__len) + { + case 0: + case 1: + return; + case 2: + if (__comp(*--__last, *__first)) + _Ops::iter_swap(__first, __last); + return; + case 3: + { + _RandomAccessIterator __m = __first; + std::__sort3<_AlgPolicy, _Compare>(__first, ++__m, --__last, __comp); + return; + } + } + if (__len <= __limit) + { + std::__selection_sort<_AlgPolicy, _Compare>(__first, __last, __comp); + return; + } + // __len > __limit >= 3 + _RandomAccessIterator __m = __first + __len/2; + _RandomAccessIterator __lm1 = __last; + unsigned __n_swaps = std::__sort3<_AlgPolicy, _Compare>(__first, __m, --__lm1, __comp); + // *__m is median + // partition [__first, __m) < *__m and *__m <= [__m, __last) + // (this inhibits tossing elements equivalent to __m around unnecessarily) + _RandomAccessIterator __i = __first; + _RandomAccessIterator __j = __lm1; + // j points beyond range to be tested, *__lm1 is known to be <= *__m + // The search going up is known to be guarded but the search coming down isn't. + // Prime the downward search with a guard. + if (!__comp(*__i, *__m)) // if *__first == *__m + { + // *__first == *__m, *__first doesn't go in first part + if (_VSTD::__nth_element_find_guard<_Compare>(__i, __j, __m, __comp)) { + _Ops::iter_swap(__i, __j); + ++__n_swaps; + } else { + // *__first == *__m, *__m <= all other elements + // Partition instead into [__first, __i) == *__first and *__first < [__i, __last) + ++__i; // __first + 1 + __j = __last; + if (!__comp(*__first, *--__j)) { // we need a guard if *__first == *(__last-1) + while (true) { + if (__i == __j) { + return; // [__first, __last) all equivalent elements + } else if (__comp(*__first, *__i)) { + _Ops::iter_swap(__i, __j); + ++__n_swaps; + ++__i; + break; + } + ++__i; + } + } + // [__first, __i) == *__first and *__first < [__j, __last) and __j == __last - 1 + if (__i == __j) { + return; + } + while (true) { + while (!__comp(*__first, *__i)) + ++__i; + while (__comp(*__first, *--__j)) + ; + if (__i >= __j) + break; + _Ops::iter_swap(__i, __j); + ++__n_swaps; + ++__i; + } + // [__first, __i) == *__first and *__first < [__i, __last) + // The first part is sorted, + if (__nth < __i) { + return; + } + // __nth_element the second part + // _VSTD::__nth_element<_Compare>(__i, __nth, __last, __comp); + __first = __i; + continue; + } + } + ++__i; + // j points beyond range to be tested, *__lm1 is known to be <= *__m + // if not yet partitioned... + if (__i < __j) + { + // known that *(__i - 1) < *__m + while (true) + { + // __m still guards upward moving __i + while (__comp(*__i, *__m)) + ++__i; + // It is now known that a guard exists for downward moving __j + while (!__comp(*--__j, *__m)) + ; + if (__i >= __j) + break; + _Ops::iter_swap(__i, __j); + ++__n_swaps; + // It is known that __m != __j + // If __m just moved, follow it + if (__m == __i) + __m = __j; + ++__i; + } + } + // [__first, __i) < *__m and *__m <= [__i, __last) + if (__i != __m && __comp(*__m, *__i)) + { + _Ops::iter_swap(__i, __m); + ++__n_swaps; + } + // [__first, __i) < *__i and *__i <= [__i+1, __last) + if (__nth == __i) + return; + if (__n_swaps == 0) + { + // We were given a perfectly partitioned sequence. Coincidence? + if (__nth < __i) + { + // Check for [__first, __i) already sorted + __j = __m = __first; + while (true) { + if (++__j == __i) { + // [__first, __i) sorted + return; + } + if (__comp(*__j, *__m)) { + // not yet sorted, so sort + break; + } + __m = __j; + } + } + else + { + // Check for [__i, __last) already sorted + __j = __m = __i; + while (true) { + if (++__j == __last) { + // [__i, __last) sorted + return; + } + if (__comp(*__j, *__m)) { + // not yet sorted, so sort + break; + } + __m = __j; + } + } + } + // __nth_element on range containing __nth + if (__nth < __i) + { + // _VSTD::__nth_element<_Compare>(__first, __nth, __i, __comp); + __last = __i; + } + else + { + // _VSTD::__nth_element<_Compare>(__i+1, __nth, __last, __comp); + __first = ++__i; + } + } +} + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 +void __nth_element_impl(_RandomAccessIterator __first, _RandomAccessIterator __nth, _RandomAccessIterator __last, + _Compare& __comp) { + if (__nth == __last) + return; + + std::__debug_randomize_range<_AlgPolicy>(__first, __last); + + std::__nth_element<_AlgPolicy, __comp_ref_type<_Compare> >(__first, __nth, __last, __comp); + + std::__debug_randomize_range<_AlgPolicy>(__first, __nth); + if (__nth != __last) { + std::__debug_randomize_range<_AlgPolicy>(++__nth, __last); + } +} + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 +void nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, _RandomAccessIterator __last, + _Compare __comp) { + std::__nth_element_impl<_ClassicAlgPolicy>(std::move(__first), std::move(__nth), std::move(__last), __comp); +} + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 +void nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, _RandomAccessIterator __last) { + std::nth_element(std::move(__first), std::move(__nth), std::move(__last), __less::value_type>()); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_NTH_ELEMENT_H diff --git a/third_party/libcxx/__algorithm/partial_sort.h b/third_party/libcxx/__algorithm/partial_sort.h new file mode 100644 index 000000000..4b8e0e76b --- /dev/null +++ b/third_party/libcxx/__algorithm/partial_sort.h @@ -0,0 +1,97 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_PARTIAL_SORT_H +#define _LIBCPP___ALGORITHM_PARTIAL_SORT_H + +#include <__algorithm/comp.h> +#include <__algorithm/comp_ref_type.h> +#include <__algorithm/iterator_operations.h> +#include <__algorithm/make_heap.h> +#include <__algorithm/sift_down.h> +#include <__algorithm/sort_heap.h> +#include <__config> +#include <__debug> +#include <__debug_utils/randomize_range.h> +#include <__iterator/iterator_traits.h> +#include <__type_traits/is_copy_assignable.h> +#include <__type_traits/is_copy_constructible.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 +_RandomAccessIterator __partial_sort_impl( + _RandomAccessIterator __first, _RandomAccessIterator __middle, _Sentinel __last, _Compare&& __comp) { + if (__first == __middle) { + return _IterOps<_AlgPolicy>::next(__middle, __last); + } + + std::__make_heap<_AlgPolicy>(__first, __middle, __comp); + + typename iterator_traits<_RandomAccessIterator>::difference_type __len = __middle - __first; + _RandomAccessIterator __i = __middle; + for (; __i != __last; ++__i) + { + if (__comp(*__i, *__first)) + { + _IterOps<_AlgPolicy>::iter_swap(__i, __first); + std::__sift_down<_AlgPolicy>(__first, __comp, __len, __first); + } + } + std::__sort_heap<_AlgPolicy>(std::move(__first), std::move(__middle), __comp); + + return __i; +} + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 +_RandomAccessIterator __partial_sort(_RandomAccessIterator __first, _RandomAccessIterator __middle, _Sentinel __last, + _Compare& __comp) { + if (__first == __middle) + return _IterOps<_AlgPolicy>::next(__middle, __last); + + std::__debug_randomize_range<_AlgPolicy>(__first, __last); + + auto __last_iter = + std::__partial_sort_impl<_AlgPolicy>(__first, __middle, __last, static_cast<__comp_ref_type<_Compare> >(__comp)); + + std::__debug_randomize_range<_AlgPolicy>(__middle, __last); + + return __last_iter; +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +void +partial_sort(_RandomAccessIterator __first, _RandomAccessIterator __middle, _RandomAccessIterator __last, + _Compare __comp) +{ + static_assert(std::is_copy_constructible<_RandomAccessIterator>::value, "Iterators must be copy constructible."); + static_assert(std::is_copy_assignable<_RandomAccessIterator>::value, "Iterators must be copy assignable."); + + (void)std::__partial_sort<_ClassicAlgPolicy>(std::move(__first), std::move(__middle), std::move(__last), __comp); +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +void +partial_sort(_RandomAccessIterator __first, _RandomAccessIterator __middle, _RandomAccessIterator __last) +{ + _VSTD::partial_sort(__first, __middle, __last, + __less::value_type>()); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_PARTIAL_SORT_H diff --git a/third_party/libcxx/__algorithm/partial_sort_copy.h b/third_party/libcxx/__algorithm/partial_sort_copy.h new file mode 100644 index 000000000..1aba07105 --- /dev/null +++ b/third_party/libcxx/__algorithm/partial_sort_copy.h @@ -0,0 +1,88 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_PARTIAL_SORT_COPY_H +#define _LIBCPP___ALGORITHM_PARTIAL_SORT_COPY_H + +#include <__algorithm/comp.h> +#include <__algorithm/comp_ref_type.h> +#include <__algorithm/iterator_operations.h> +#include <__algorithm/make_heap.h> +#include <__algorithm/make_projected.h> +#include <__algorithm/sift_down.h> +#include <__algorithm/sort_heap.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__iterator/iterator_traits.h> +#include <__type_traits/is_callable.h> +#include <__utility/move.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_InputIterator, _RandomAccessIterator> +__partial_sort_copy(_InputIterator __first, _Sentinel1 __last, + _RandomAccessIterator __result_first, _Sentinel2 __result_last, + _Compare&& __comp, _Proj1&& __proj1, _Proj2&& __proj2) +{ + _RandomAccessIterator __r = __result_first; + auto&& __projected_comp = std::__make_projected(__comp, __proj2); + + if (__r != __result_last) + { + for (; __first != __last && __r != __result_last; ++__first, (void) ++__r) + *__r = *__first; + std::__make_heap<_AlgPolicy>(__result_first, __r, __projected_comp); + typename iterator_traits<_RandomAccessIterator>::difference_type __len = __r - __result_first; + for (; __first != __last; ++__first) + if (std::__invoke(__comp, std::__invoke(__proj1, *__first), std::__invoke(__proj2, *__result_first))) { + *__result_first = *__first; + std::__sift_down<_AlgPolicy>(__result_first, __projected_comp, __len, __result_first); + } + std::__sort_heap<_AlgPolicy>(__result_first, __r, __projected_comp); + } + + return pair<_InputIterator, _RandomAccessIterator>( + _IterOps<_AlgPolicy>::next(std::move(__first), std::move(__last)), std::move(__r)); +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +_RandomAccessIterator +partial_sort_copy(_InputIterator __first, _InputIterator __last, + _RandomAccessIterator __result_first, _RandomAccessIterator __result_last, _Compare __comp) +{ + static_assert(__is_callable<_Compare, decltype(*__first), decltype(*__result_first)>::value, + "Comparator has to be callable"); + + auto __result = std::__partial_sort_copy<_ClassicAlgPolicy>(__first, __last, __result_first, __result_last, + static_cast<__comp_ref_type<_Compare> >(__comp), __identity(), __identity()); + return __result.second; +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +_RandomAccessIterator +partial_sort_copy(_InputIterator __first, _InputIterator __last, + _RandomAccessIterator __result_first, _RandomAccessIterator __result_last) +{ + return _VSTD::partial_sort_copy(__first, __last, __result_first, __result_last, + __less::value_type>()); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_PARTIAL_SORT_COPY_H diff --git a/third_party/libcxx/__algorithm/partition.h b/third_party/libcxx/__algorithm/partition.h new file mode 100644 index 000000000..a58dd6464 --- /dev/null +++ b/third_party/libcxx/__algorithm/partition.h @@ -0,0 +1,97 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_PARTITION_H +#define _LIBCPP___ALGORITHM_PARTITION_H + +#include <__algorithm/iterator_operations.h> +#include <__config> +#include <__iterator/iterator_traits.h> +#include <__utility/move.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_ForwardIterator, _ForwardIterator> +__partition_impl(_ForwardIterator __first, _Sentinel __last, _Predicate __pred, forward_iterator_tag) +{ + while (true) + { + if (__first == __last) + return std::make_pair(std::move(__first), std::move(__first)); + if (!__pred(*__first)) + break; + ++__first; + } + + _ForwardIterator __p = __first; + while (++__p != __last) + { + if (__pred(*__p)) + { + _IterOps<_AlgPolicy>::iter_swap(__first, __p); + ++__first; + } + } + return std::make_pair(std::move(__first), std::move(__p)); +} + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_BidirectionalIterator, _BidirectionalIterator> +__partition_impl(_BidirectionalIterator __first, _Sentinel __sentinel, _Predicate __pred, + bidirectional_iterator_tag) +{ + _BidirectionalIterator __original_last = _IterOps<_AlgPolicy>::next(__first, __sentinel); + _BidirectionalIterator __last = __original_last; + + while (true) + { + while (true) + { + if (__first == __last) + return std::make_pair(std::move(__first), std::move(__original_last)); + if (!__pred(*__first)) + break; + ++__first; + } + do + { + if (__first == --__last) + return std::make_pair(std::move(__first), std::move(__original_last)); + } while (!__pred(*__last)); + _IterOps<_AlgPolicy>::iter_swap(__first, __last); + ++__first; + } +} + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 +pair<_ForwardIterator, _ForwardIterator> __partition( + _ForwardIterator __first, _Sentinel __last, _Predicate&& __pred, _IterCategory __iter_category) { + return std::__partition_impl<__remove_cvref_t<_Predicate>&, _AlgPolicy>( + std::move(__first), std::move(__last), __pred, __iter_category); +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +_ForwardIterator +partition(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred) +{ + using _IterCategory = typename iterator_traits<_ForwardIterator>::iterator_category; + auto __result = std::__partition<_ClassicAlgPolicy>(std::move(__first), std::move(__last), __pred, _IterCategory()); + return __result.first; +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_PARTITION_H diff --git a/third_party/libcxx/__algorithm/partition_copy.h b/third_party/libcxx/__algorithm/partition_copy.h new file mode 100644 index 000000000..ff8826a93 --- /dev/null +++ b/third_party/libcxx/__algorithm/partition_copy.h @@ -0,0 +1,47 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_PARTITION_COPY_H +#define _LIBCPP___ALGORITHM_PARTITION_COPY_H + +#include <__config> +#include <__iterator/iterator_traits.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_OutputIterator1, _OutputIterator2> +partition_copy(_InputIterator __first, _InputIterator __last, + _OutputIterator1 __out_true, _OutputIterator2 __out_false, + _Predicate __pred) +{ + for (; __first != __last; ++__first) + { + if (__pred(*__first)) + { + *__out_true = *__first; + ++__out_true; + } + else + { + *__out_false = *__first; + ++__out_false; + } + } + return pair<_OutputIterator1, _OutputIterator2>(__out_true, __out_false); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_PARTITION_COPY_H diff --git a/third_party/libcxx/__algorithm/partition_point.h b/third_party/libcxx/__algorithm/partition_point.h new file mode 100644 index 000000000..6ede71a26 --- /dev/null +++ b/third_party/libcxx/__algorithm/partition_point.h @@ -0,0 +1,48 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_PARTITION_POINT_H +#define _LIBCPP___ALGORITHM_PARTITION_POINT_H + +#include <__algorithm/half_positive.h> +#include <__config> +#include <__iterator/advance.h> +#include <__iterator/distance.h> +#include <__iterator/iterator_traits.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator +partition_point(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred) +{ + typedef typename iterator_traits<_ForwardIterator>::difference_type difference_type; + difference_type __len = _VSTD::distance(__first, __last); + while (__len != 0) + { + difference_type __l2 = _VSTD::__half_positive(__len); + _ForwardIterator __m = __first; + _VSTD::advance(__m, __l2); + if (__pred(*__m)) + { + __first = ++__m; + __len -= __l2 + 1; + } + else + __len = __l2; + } + return __first; +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_PARTITION_POINT_H diff --git a/third_party/libcxx/__algorithm/pop_heap.h b/third_party/libcxx/__algorithm/pop_heap.h new file mode 100644 index 000000000..4187523ef --- /dev/null +++ b/third_party/libcxx/__algorithm/pop_heap.h @@ -0,0 +1,74 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_POP_HEAP_H +#define _LIBCPP___ALGORITHM_POP_HEAP_H + +#include <__algorithm/comp.h> +#include <__algorithm/comp_ref_type.h> +#include <__algorithm/iterator_operations.h> +#include <__algorithm/push_heap.h> +#include <__algorithm/sift_down.h> +#include <__assert> +#include <__config> +#include <__iterator/iterator_traits.h> +#include <__type_traits/is_copy_assignable.h> +#include <__type_traits/is_copy_constructible.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 +void __pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare& __comp, + typename iterator_traits<_RandomAccessIterator>::difference_type __len) { + _LIBCPP_ASSERT(__len > 0, "The heap given to pop_heap must be non-empty"); + + __comp_ref_type<_Compare> __comp_ref = __comp; + + using value_type = typename iterator_traits<_RandomAccessIterator>::value_type; + if (__len > 1) { + value_type __top = _IterOps<_AlgPolicy>::__iter_move(__first); // create a hole at __first + _RandomAccessIterator __hole = std::__floyd_sift_down<_AlgPolicy>(__first, __comp_ref, __len); + --__last; + + if (__hole == __last) { + *__hole = std::move(__top); + } else { + *__hole = _IterOps<_AlgPolicy>::__iter_move(__last); + ++__hole; + *__last = std::move(__top); + std::__sift_up<_AlgPolicy>(__first, __hole, __comp_ref, __hole - __first); + } + } +} + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 +void pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) { + static_assert(std::is_copy_constructible<_RandomAccessIterator>::value, "Iterators must be copy constructible."); + static_assert(std::is_copy_assignable<_RandomAccessIterator>::value, "Iterators must be copy assignable."); + + typename iterator_traits<_RandomAccessIterator>::difference_type __len = __last - __first; + std::__pop_heap<_ClassicAlgPolicy>(std::move(__first), std::move(__last), __comp, __len); +} + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 +void pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) { + std::pop_heap(std::move(__first), std::move(__last), + __less::value_type>()); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_POP_HEAP_H diff --git a/third_party/libcxx/__algorithm/prev_permutation.h b/third_party/libcxx/__algorithm/prev_permutation.h new file mode 100644 index 000000000..0b86ab74e --- /dev/null +++ b/third_party/libcxx/__algorithm/prev_permutation.h @@ -0,0 +1,79 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_PREV_PERMUTATION_H +#define _LIBCPP___ALGORITHM_PREV_PERMUTATION_H + +#include <__algorithm/comp.h> +#include <__algorithm/comp_ref_type.h> +#include <__algorithm/iterator_operations.h> +#include <__algorithm/reverse.h> +#include <__config> +#include <__iterator/iterator_traits.h> +#include <__utility/move.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 +pair<_BidirectionalIterator, bool> +__prev_permutation(_BidirectionalIterator __first, _Sentinel __last, _Compare&& __comp) +{ + using _Result = pair<_BidirectionalIterator, bool>; + + _BidirectionalIterator __last_iter = _IterOps<_AlgPolicy>::next(__first, __last); + _BidirectionalIterator __i = __last_iter; + if (__first == __last || __first == --__i) + return _Result(std::move(__last_iter), false); + + while (true) + { + _BidirectionalIterator __ip1 = __i; + if (__comp(*__ip1, *--__i)) + { + _BidirectionalIterator __j = __last_iter; + while (!__comp(*--__j, *__i)) + ; + _IterOps<_AlgPolicy>::iter_swap(__i, __j); + std::__reverse<_AlgPolicy>(__ip1, __last_iter); + return _Result(std::move(__last_iter), true); + } + if (__i == __first) + { + std::__reverse<_AlgPolicy>(__first, __last_iter); + return _Result(std::move(__last_iter), false); + } + } +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +bool +prev_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last, _Compare __comp) +{ + return std::__prev_permutation<_ClassicAlgPolicy>( + std::move(__first), std::move(__last), static_cast<__comp_ref_type<_Compare> >(__comp)).second; +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +bool +prev_permutation(_BidirectionalIterator __first, _BidirectionalIterator __last) +{ + return _VSTD::prev_permutation(__first, __last, + __less::value_type>()); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_PREV_PERMUTATION_H diff --git a/third_party/libcxx/__algorithm/pstl_any_all_none_of.h b/third_party/libcxx/__algorithm/pstl_any_all_none_of.h new file mode 100644 index 000000000..374d9af17 --- /dev/null +++ b/third_party/libcxx/__algorithm/pstl_any_all_none_of.h @@ -0,0 +1,95 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_PSTL_ANY_ALL_NONE_OF_H +#define _LIBCPP___ALGORITHM_PSTL_ANY_ALL_NONE_OF_H + +#include <__algorithm/pstl_find.h> +#include <__algorithm/pstl_frontend_dispatch.h> +#include <__config> +#include <__iterator/iterator_traits.h> +#include <__type_traits/enable_if.h> +#include <__type_traits/is_execution_policy.h> +#include <__type_traits/remove_cvref.h> +#include <__utility/terminate_on_exception.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17 + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +void __pstl_any_of(); // declaration needed for the frontend dispatch below + +template , + enable_if_t, int> = 0> +_LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI bool +any_of(_ExecutionPolicy&& __policy, _ForwardIterator __first, _ForwardIterator __last, _Predicate __pred) { + return std::__pstl_frontend_dispatch( + _LIBCPP_PSTL_CUSTOMIZATION_POINT(__pstl_any_of), + [&](_ForwardIterator __g_first, _ForwardIterator __g_last, _Predicate __g_pred) { + return std::find_if(__policy, __g_first, __g_last, __g_pred) != __g_last; + }, + std::move(__first), + std::move(__last), + std::move(__pred)); +} + +template +void __pstl_all_of(); // declaration needed for the frontend dispatch below + +template , + enable_if_t, int> = 0> +_LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI bool +all_of(_ExecutionPolicy&& __policy, _ForwardIterator __first, _ForwardIterator __last, _Pred __pred) { + return std::__pstl_frontend_dispatch( + _LIBCPP_PSTL_CUSTOMIZATION_POINT(__pstl_all_of), + [&](_ForwardIterator __g_first, _ForwardIterator __g_last, _Pred __g_pred) { + return !std::any_of(__policy, __g_first, __g_last, [&](__iter_reference<_ForwardIterator> __value) { + return !__g_pred(__value); + }); + }, + std::move(__first), + std::move(__last), + std::move(__pred)); +} + +template +void __pstl_none_of(); // declaration needed for the frontend dispatch below + +template , + enable_if_t, int> = 0> +_LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI bool +none_of(_ExecutionPolicy&& __policy, _ForwardIterator __first, _ForwardIterator __last, _Pred __pred) { + return std::__pstl_frontend_dispatch( + _LIBCPP_PSTL_CUSTOMIZATION_POINT(__pstl_none_of), + [&](_ForwardIterator __g_first, _ForwardIterator __g_last, _Pred __g_pred) { + return !std::any_of(__policy, __g_first, __g_last, __g_pred); + }, + std::move(__first), + std::move(__last), + std::move(__pred)); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17 + +#endif // _LIBCPP___ALGORITHM_PSTL_ANY_ALL_NONE_OF_H diff --git a/third_party/libcxx/__algorithm/pstl_backend.h b/third_party/libcxx/__algorithm/pstl_backend.h new file mode 100644 index 000000000..ae37e56a7 --- /dev/null +++ b/third_party/libcxx/__algorithm/pstl_backend.h @@ -0,0 +1,125 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_PSTL_BACKEND_H +#define _LIBCPP___ALGORITHM_PSTL_BACKEND_H + +#include <__algorithm/pstl_backends/cpu_backend.h> +#include <__config> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17 + +_LIBCPP_BEGIN_NAMESPACE_STD + +/* +TODO: Documentation of how backends work + +A PSTL parallel backend is a tag type to which the following functions are associated, at minimum: + + template + void __pstl_for_each(_Backend, _ExecutionPolicy&&, _Iterator __first, _Iterator __last, _Func __f); + + template + _Iterator __pstl_find_if(_Backend, _Iterator __first, _Iterator __last, _Predicate __pred); + + template + _OutIterator __pstl_transform(_InIterator __first, _InIterator __last, _OutIterator __result, _UnaryOperation __op); + + template + _OutIterator __pstl_transform(_InIterator1 __first1, + _InIterator1 __last1, + _InIterator2 __first2, + _OutIterator __result, + _BinaryOperation __op); + +// TODO: Complete this list + +The following functions are optional but can be provided. If provided, they are used by the corresponding +algorithms, otherwise they are implemented in terms of other algorithms. If none of the optional algorithms are +implemented, all the algorithms will eventually forward to the basis algorithms listed above: + + template + void __pstl_for_each_n(_Backend, _Iterator __first, _Size __n, _Func __f); + + template + bool __pstl_any_of(_Backend, _Iterator __first, _iterator __last, _Predicate __pred); + + template + bool __pstl_all_of(_Backend, _Iterator __first, _iterator __last, _Predicate __pred); + + template + bool __pstl_none_of(_Backend, _Iterator __first, _iterator __last, _Predicate __pred); + + template + _Iterator __pstl_find(_Backend, _Iterator __first, _Iterator __last, const _Tp& __value); + + template + _Iterator __pstl_find_if_not(_Backend, _Iterator __first, _Iterator __last, _Predicate __pred); + + template + void __pstl_fill(_Backend, _Iterator __first, _Iterator __last, const _Tp& __value); + + template + void __pstl_fill_n(_Backend, _Iterator __first, _SizeT __n, const _Tp& __value); + + template + _OutIterator __pstl_merge(_Backend, + _Iterator1 __first1, + _Iterator1 __last1, + _Iterator2 __first2, + _Iterator2 __last2, + _OutIterator __result, + _Comp __comp); + +// TODO: Complete this list + +*/ + +template +struct __select_backend; + +template <> +struct __select_backend { + using type = __cpu_backend_tag; +}; + +# if _LIBCPP_STD_VER >= 20 +template <> +struct __select_backend { + using type = __cpu_backend_tag; +}; +# endif + +# if defined(_LIBCPP_PSTL_CPU_BACKEND_SERIAL) || defined(_LIBCPP_PSTL_CPU_BACKEND_THREAD) +template <> +struct __select_backend { + using type = __cpu_backend_tag; +}; + +template <> +struct __select_backend { + using type = __cpu_backend_tag; +}; + +# else + +// ...New vendors can add parallel backends here... + +# error "Invalid choice of a PSTL parallel backend" +# endif + +_LIBCPP_END_NAMESPACE_STD + +#endif // !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17 + +#endif // _LIBCPP___ALGORITHM_PSTL_BACKEND_H diff --git a/third_party/libcxx/__algorithm/pstl_backends/cpu_backend.h b/third_party/libcxx/__algorithm/pstl_backends/cpu_backend.h new file mode 100644 index 000000000..3939b8211 --- /dev/null +++ b/third_party/libcxx/__algorithm/pstl_backends/cpu_backend.h @@ -0,0 +1,47 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKEND_H +#define _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKEND_H + +#include <__config> + +/* + + // _Functor takes a subrange for [__first, __last) that should be executed in serial + template + void __parallel_for(_RandomAccessIterator __first, _RandomAccessIterator __last, _Functor __func); + + // Cancel the execution of other jobs - they aren't needed anymore + void __cancel_execution(); + + template + void __parallel_merge( + _RandomAccessIterator1 __first1, + _RandomAccessIterator1 __last1, + _RandomAccessIterator2 __first2, + _RandomAccessIterator2 __last2, + _RandomAccessIterator3 __outit, + _Compare __comp, + _LeafMerge __leaf_merge); + + TODO: Document the parallel backend +*/ + +#include <__algorithm/pstl_backends/cpu_backends/any_of.h> +#include <__algorithm/pstl_backends/cpu_backends/fill.h> +#include <__algorithm/pstl_backends/cpu_backends/find_if.h> +#include <__algorithm/pstl_backends/cpu_backends/for_each.h> +#include <__algorithm/pstl_backends/cpu_backends/merge.h> +#include <__algorithm/pstl_backends/cpu_backends/transform.h> + +#endif // _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKEND_H diff --git a/third_party/libcxx/__algorithm/pstl_backends/cpu_backends/any_of.h b/third_party/libcxx/__algorithm/pstl_backends/cpu_backends/any_of.h new file mode 100644 index 000000000..8fe26797b --- /dev/null +++ b/third_party/libcxx/__algorithm/pstl_backends/cpu_backends/any_of.h @@ -0,0 +1,90 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKEND_ANY_OF_H +#define _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKEND_ANY_OF_H + +#include <__algorithm/any_of.h> +#include <__algorithm/find_if.h> +#include <__algorithm/pstl_backends/cpu_backends/backend.h> +#include <__atomic/atomic.h> +#include <__atomic/memory_order.h> +#include <__config> +#include <__functional/operations.h> +#include <__iterator/iterator_traits.h> +#include <__type_traits/is_execution_policy.h> +#include <__utility/pair.h> +#include <__utility/terminate_on_exception.h> +#include + +#if !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17 + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI bool __parallel_or(_Index __first, _Index __last, _Brick __f) { + std::atomic __found(false); + __par_backend::__parallel_for(__first, __last, [__f, &__found](_Index __i, _Index __j) { + if (!__found.load(std::memory_order_relaxed) && __f(__i, __j)) { + __found.store(true, std::memory_order_relaxed); + __par_backend::__cancel_execution(); + } + }); + return __found; +} + +// TODO: check whether __simd_first() can be used here +template +_LIBCPP_HIDE_FROM_ABI bool __simd_or(_Index __first, _DifferenceType __n, _Pred __pred) noexcept { + _DifferenceType __block_size = 4 < __n ? 4 : __n; + const _Index __last = __first + __n; + while (__last != __first) { + int32_t __flag = 1; + _PSTL_PRAGMA_SIMD_REDUCTION(& : __flag) + for (_DifferenceType __i = 0; __i < __block_size; ++__i) + if (__pred(*(__first + __i))) + __flag = 0; + if (!__flag) + return true; + + __first += __block_size; + if (__last - __first >= __block_size << 1) { + // Double the block _Size. Any unnecessary iterations can be amortized against work done so far. + __block_size <<= 1; + } else { + __block_size = __last - __first; + } + } + return false; +} + +template +_LIBCPP_HIDE_FROM_ABI bool +__pstl_any_of(__cpu_backend_tag, _ForwardIterator __first, _ForwardIterator __last, _Predicate __pred) { + if constexpr (__is_parallel_execution_policy_v<_ExecutionPolicy> && + __has_random_access_iterator_category<_ForwardIterator>::value) { + return std::__terminate_on_exception([&] { + return std::__parallel_or( + __first, __last, [&__pred](_ForwardIterator __brick_first, _ForwardIterator __brick_last) { + return std::__pstl_any_of<__remove_parallel_policy_t<_ExecutionPolicy>>( + __cpu_backend_tag{}, __brick_first, __brick_last, __pred); + }); + }); + } else if constexpr (__is_unsequenced_execution_policy_v<_ExecutionPolicy> && + __has_random_access_iterator_category<_ForwardIterator>::value) { + return std::__simd_or(__first, __last - __first, __pred); + } else { + return std::any_of(__first, __last, __pred); + } +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17 + +#endif // _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKEND_ANY_OF_H diff --git a/third_party/libcxx/__algorithm/pstl_backends/cpu_backends/backend.h b/third_party/libcxx/__algorithm/pstl_backends/cpu_backends/backend.h new file mode 100644 index 000000000..e40d16857 --- /dev/null +++ b/third_party/libcxx/__algorithm/pstl_backends/cpu_backends/backend.h @@ -0,0 +1,32 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKEND_BACKEND_H +#define _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKEND_BACKEND_H + +#include <__config> + +#if defined(_LIBCPP_PSTL_CPU_BACKEND_SERIAL) +# include <__algorithm/pstl_backends/cpu_backends/serial.h> +#elif defined(_LIBCPP_PSTL_CPU_BACKEND_THREAD) +# include <__algorithm/pstl_backends/cpu_backends/thread.h> +#else +# error "Invalid CPU backend choice" +#endif + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +struct __cpu_backend_tag {}; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKEND_BACKEND_H diff --git a/third_party/libcxx/__algorithm/pstl_backends/cpu_backends/fill.h b/third_party/libcxx/__algorithm/pstl_backends/cpu_backends/fill.h new file mode 100644 index 000000000..5e5e0a23b --- /dev/null +++ b/third_party/libcxx/__algorithm/pstl_backends/cpu_backends/fill.h @@ -0,0 +1,60 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKENDS_FILL_H +#define _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKENDS_FILL_H + +#include <__algorithm/fill.h> +#include <__algorithm/pstl_backends/cpu_backends/backend.h> +#include <__config> +#include <__iterator/iterator_traits.h> +#include <__type_traits/is_execution_policy.h> +#include <__utility/terminate_on_exception.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17 + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI _Index __simd_fill_n(_Index __first, _DifferenceType __n, const _Tp& __value) noexcept { + _PSTL_USE_NONTEMPORAL_STORES_IF_ALLOWED + _PSTL_PRAGMA_SIMD + for (_DifferenceType __i = 0; __i < __n; ++__i) + __first[__i] = __value; + return __first + __n; +} + +template +_LIBCPP_HIDE_FROM_ABI void +__pstl_fill(__cpu_backend_tag, _ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) { + if constexpr (__is_parallel_execution_policy_v<_ExecutionPolicy> && + __has_random_access_iterator_category<_ForwardIterator>::value) { + std::__terminate_on_exception([&] { + __par_backend::__parallel_for( + __first, __last, [&__value](_ForwardIterator __brick_first, _ForwardIterator __brick_last) { + std::__pstl_fill<__remove_parallel_policy_t<_ExecutionPolicy>>( + __cpu_backend_tag{}, __brick_first, __brick_last, __value); + }); + }); + } else if constexpr (__is_unsequenced_execution_policy_v<_ExecutionPolicy> && + __has_random_access_iterator_category<_ForwardIterator>::value) { + std::__simd_fill_n(__first, __last - __first, __value); + } else { + std::fill(__first, __last, __value); + } +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17 + +#endif // _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKENDS_FILL_H diff --git a/third_party/libcxx/__algorithm/pstl_backends/cpu_backends/find_if.h b/third_party/libcxx/__algorithm/pstl_backends/cpu_backends/find_if.h new file mode 100644 index 000000000..72059a48b --- /dev/null +++ b/third_party/libcxx/__algorithm/pstl_backends/cpu_backends/find_if.h @@ -0,0 +1,125 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKENDS_FIND_IF_H +#define _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKENDS_FIND_IF_H + +#include <__algorithm/find_if.h> +#include <__algorithm/pstl_backends/cpu_backends/backend.h> +#include <__atomic/atomic.h> +#include <__config> +#include <__functional/operations.h> +#include <__iterator/iterator_traits.h> +#include <__type_traits/is_execution_policy.h> +#include <__utility/pair.h> +#include <__utility/terminate_on_exception.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17 + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI _Index +__parallel_find(_Index __first, _Index __last, _Brick __f, _Compare __comp, bool __b_first) { + typedef typename std::iterator_traits<_Index>::difference_type _DifferenceType; + const _DifferenceType __n = __last - __first; + _DifferenceType __initial_dist = __b_first ? __n : -1; + std::atomic<_DifferenceType> __extremum(__initial_dist); + // TODO: find out what is better here: parallel_for or parallel_reduce + __par_backend::__parallel_for(__first, __last, [__comp, __f, __first, &__extremum](_Index __i, _Index __j) { + // See "Reducing Contention Through Priority Updates", PPoPP '13, for discussion of + // why using a shared variable scales fairly well in this situation. + if (__comp(__i - __first, __extremum)) { + _Index __res = __f(__i, __j); + // If not '__last' returned then we found what we want so put this to extremum + if (__res != __j) { + const _DifferenceType __k = __res - __first; + for (_DifferenceType __old = __extremum; __comp(__k, __old); __old = __extremum) { + __extremum.compare_exchange_weak(__old, __k); + } + } + } + }); + return __extremum != __initial_dist ? __first + __extremum : __last; +} + +const std::size_t __lane_size = 64; + +template +_LIBCPP_HIDE_FROM_ABI _Index +__simd_first(_Index __first, _DifferenceType __begin, _DifferenceType __end, _Compare __comp) noexcept { + // Experiments show good block sizes like this + const _DifferenceType __block_size = 8; + alignas(__lane_size) _DifferenceType __lane[__block_size] = {0}; + while (__end - __begin >= __block_size) { + _DifferenceType __found = 0; + _PSTL_PRAGMA_SIMD_REDUCTION(| : __found) for (_DifferenceType __i = __begin; __i < __begin + __block_size; ++__i) { + const _DifferenceType __t = __comp(__first, __i); + __lane[__i - __begin] = __t; + __found |= __t; + } + if (__found) { + _DifferenceType __i; + // This will vectorize + for (__i = 0; __i < __block_size; ++__i) { + if (__lane[__i]) { + break; + } + } + return __first + __begin + __i; + } + __begin += __block_size; + } + + // Keep remainder scalar + while (__begin != __end) { + if (__comp(__first, __begin)) { + return __first + __begin; + } + ++__begin; + } + return __first + __end; +} + +template +_LIBCPP_HIDE_FROM_ABI _ForwardIterator +__pstl_find_if(__cpu_backend_tag, _ForwardIterator __first, _ForwardIterator __last, _Predicate __pred) { + if constexpr (__is_parallel_execution_policy_v<_ExecutionPolicy> && + __has_random_access_iterator_category<_ForwardIterator>::value) { + return std::__terminate_on_exception([&] { + return std::__parallel_find( + __first, + __last, + [&__pred](_ForwardIterator __brick_first, _ForwardIterator __brick_last) { + return std::__pstl_find_if<__remove_parallel_policy_t<_ExecutionPolicy>>( + __cpu_backend_tag{}, __brick_first, __brick_last, __pred); + }, + less<>{}, + true); + }); + } else if constexpr (__is_unsequenced_execution_policy_v<_ExecutionPolicy> && + __has_random_access_iterator_category<_ForwardIterator>::value) { + using __diff_t = __iter_diff_t<_ForwardIterator>; + return std::__simd_first(__first, __diff_t(0), __last - __first, [&__pred](_ForwardIterator __iter, __diff_t __i) { + return __pred(__iter[__i]); + }); + } else { + return std::find_if(__first, __last, __pred); + } +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17 + +#endif // _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKENDS_FIND_IF_H diff --git a/third_party/libcxx/__algorithm/pstl_backends/cpu_backends/for_each.h b/third_party/libcxx/__algorithm/pstl_backends/cpu_backends/for_each.h new file mode 100644 index 000000000..36d0ac238 --- /dev/null +++ b/third_party/libcxx/__algorithm/pstl_backends/cpu_backends/for_each.h @@ -0,0 +1,60 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKNEDS_FOR_EACH_H +#define _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKNEDS_FOR_EACH_H + +#include <__algorithm/for_each.h> +#include <__algorithm/pstl_backends/cpu_backends/backend.h> +#include <__config> +#include <__iterator/iterator_traits.h> +#include <__type_traits/is_execution_policy.h> +#include <__utility/terminate_on_exception.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17 + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI _Iterator __simd_walk_1(_Iterator __first, _DifferenceType __n, _Function __f) noexcept { + _PSTL_PRAGMA_SIMD + for (_DifferenceType __i = 0; __i < __n; ++__i) + __f(__first[__i]); + + return __first + __n; +} + +template +_LIBCPP_HIDE_FROM_ABI void +__pstl_for_each(__cpu_backend_tag, _ForwardIterator __first, _ForwardIterator __last, _Functor __func) { + if constexpr (__is_parallel_execution_policy_v<_ExecutionPolicy> && + __has_random_access_iterator_category<_ForwardIterator>::value) { + std::__terminate_on_exception([&] { + std::__par_backend::__parallel_for( + __first, __last, [__func](_ForwardIterator __brick_first, _ForwardIterator __brick_last) { + std::__pstl_for_each<__remove_parallel_policy_t<_ExecutionPolicy>>( + __cpu_backend_tag{}, __brick_first, __brick_last, __func); + }); + }); + } else if constexpr (__is_unsequenced_execution_policy_v<_ExecutionPolicy> && + __has_random_access_iterator_category<_ForwardIterator>::value) { + std::__simd_walk_1(__first, __last - __first, __func); + } else { + std::for_each(__first, __last, __func); + } +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17 + +#endif // _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKNEDS_FOR_EACH_H diff --git a/third_party/libcxx/__algorithm/pstl_backends/cpu_backends/merge.h b/third_party/libcxx/__algorithm/pstl_backends/cpu_backends/merge.h new file mode 100644 index 000000000..d5be1e302 --- /dev/null +++ b/third_party/libcxx/__algorithm/pstl_backends/cpu_backends/merge.h @@ -0,0 +1,79 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKENDS_MERGE_H +#define _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKENDS_MERGE_H + +#include <__algorithm/merge.h> +#include <__algorithm/pstl_backends/cpu_backends/backend.h> +#include <__config> +#include <__iterator/iterator_traits.h> +#include <__type_traits/is_execution_policy.h> +#include <__utility/move.h> +#include <__utility/terminate_on_exception.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17 + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI _ForwardOutIterator __pstl_merge( + __cpu_backend_tag, + _ForwardIterator1 __first1, + _ForwardIterator1 __last1, + _ForwardIterator2 __first2, + _ForwardIterator2 __last2, + _ForwardOutIterator __result, + _Comp __comp) { + if constexpr (__is_parallel_execution_policy_v<_ExecutionPolicy> && + __has_random_access_iterator_category<_ForwardIterator1>::value && + __has_random_access_iterator_category<_ForwardIterator2>::value && + __has_random_access_iterator_category<_ForwardOutIterator>::value) { + return std::__terminate_on_exception([&] { + __par_backend::__parallel_merge( + __first1, + __last1, + __first2, + __last2, + __result, + __comp, + [](_ForwardIterator1 __g_first1, + _ForwardIterator1 __g_last1, + _ForwardIterator2 __g_first2, + _ForwardIterator2 __g_last2, + _ForwardOutIterator __g_result, + _Comp __g_comp) { + return std::__pstl_merge<__remove_parallel_policy_t<_ExecutionPolicy>>( + __cpu_backend_tag{}, + std::move(__g_first1), + std::move(__g_last1), + std::move(__g_first2), + std::move(__g_last2), + std::move(__g_result), + std::move(__g_comp)); + }); + return __result + (__last1 - __first1) + (__last2 - __first2); + }); + } else { + return std::merge(__first1, __last1, __first2, __last2, __result, __comp); + } +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17 + +#endif // _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKENDS_MERGE_H diff --git a/third_party/libcxx/__algorithm/pstl_backends/cpu_backends/serial.h b/third_party/libcxx/__algorithm/pstl_backends/cpu_backends/serial.h new file mode 100644 index 000000000..0c3aafae6 --- /dev/null +++ b/third_party/libcxx/__algorithm/pstl_backends/cpu_backends/serial.h @@ -0,0 +1,58 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKENDS_SERIAL_H +#define _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKENDS_SERIAL_H + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace __par_backend { +inline namespace __serial_cpu_backend { + +template +_LIBCPP_HIDE_FROM_ABI void __parallel_for(_RandomAccessIterator __first, _RandomAccessIterator __last, _Fp __f) { + __f(__first, __last); +} + +_LIBCPP_HIDE_FROM_ABI inline void __cancel_execution() {} + +template +_LIBCPP_HIDE_FROM_ABI void __parallel_merge( + _RandomAccessIterator1 __first1, + _RandomAccessIterator1 __last1, + _RandomAccessIterator2 __first2, + _RandomAccessIterator2 __last2, + _RandomAccessIterator3 __outit, + _Compare __comp, + _LeafMerge __leaf_merge) { + __leaf_merge(__first1, __last1, __first2, __last2, __outit, __comp); +} + +// TODO: Complete this list + +} // namespace __serial_cpu_backend +} // namespace __par_backend + +_LIBCPP_END_NAMESPACE_STD + +#endif // !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && && _LIBCPP_STD_VER >= 17 + +#endif // _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKENDS_SERIAL_H diff --git a/third_party/libcxx/__algorithm/pstl_backends/cpu_backends/thread.h b/third_party/libcxx/__algorithm/pstl_backends/cpu_backends/thread.h new file mode 100644 index 000000000..93745d306 --- /dev/null +++ b/third_party/libcxx/__algorithm/pstl_backends/cpu_backends/thread.h @@ -0,0 +1,59 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKENDS_THREAD_H +#define _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKENDS_THREAD_H + +#include <__assert> +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17 + +// This backend implementation is for testing purposes only and not meant for production use. This will be replaced +// by a proper implementation once the PSTL implementation is somewhat stable. + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace __par_backend { +inline namespace __thread_cpu_backend { + +template +_LIBCPP_HIDE_FROM_ABI void __parallel_for(_RandomAccessIterator __first, _RandomAccessIterator __last, _Fp __f) { + __f(__first, __last); +} + +_LIBCPP_HIDE_FROM_ABI inline void __cancel_execution() {} + +template +_LIBCPP_HIDE_FROM_ABI void __parallel_merge( + _RandomAccessIterator1 __first1, + _RandomAccessIterator1 __last1, + _RandomAccessIterator2 __first2, + _RandomAccessIterator2 __last2, + _RandomAccessIterator3 __outit, + _Compare __comp, + _LeafMerge __leaf_merge) { + __leaf_merge(__first1, __last1, __first2, __last2, __outit, __comp); +} + +} // namespace __thread_cpu_backend +} // namespace __par_backend + +_LIBCPP_END_NAMESPACE_STD + +#endif // !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && && _LIBCPP_STD_VER >= 17 + +#endif // _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKENDS_THREAD_H diff --git a/third_party/libcxx/__algorithm/pstl_backends/cpu_backends/transform.h b/third_party/libcxx/__algorithm/pstl_backends/cpu_backends/transform.h new file mode 100644 index 000000000..ef25ff023 --- /dev/null +++ b/third_party/libcxx/__algorithm/pstl_backends/cpu_backends/transform.h @@ -0,0 +1,132 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKENDS_TRANSFORM_H +#define _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKENDS_TRANSFORM_H + +#include <__algorithm/pstl_backends/cpu_backends/backend.h> +#include <__algorithm/transform.h> +#include <__config> +#include <__iterator/iterator_traits.h> +#include <__type_traits/enable_if.h> +#include <__type_traits/is_execution_policy.h> +#include <__type_traits/remove_cvref.h> +#include <__utility/terminate_on_exception.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17 + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI _Iterator2 +__simd_walk_2(_Iterator1 __first1, _DifferenceType __n, _Iterator2 __first2, _Function __f) noexcept { + _PSTL_PRAGMA_SIMD + for (_DifferenceType __i = 0; __i < __n; ++__i) + __f(__first1[__i], __first2[__i]); + return __first2 + __n; +} + +template +_LIBCPP_HIDE_FROM_ABI _ForwardOutIterator __pstl_transform( + __cpu_backend_tag, + _ForwardIterator __first, + _ForwardIterator __last, + _ForwardOutIterator __result, + _UnaryOperation __op) { + if constexpr (__is_parallel_execution_policy_v<_ExecutionPolicy> && + __has_random_access_iterator_category<_ForwardIterator>::value && + __has_random_access_iterator_category<_ForwardOutIterator>::value) { + std::__terminate_on_exception([&] { + std::__par_backend::__parallel_for( + __first, __last, [__op, __first, __result](_ForwardIterator __brick_first, _ForwardIterator __brick_last) { + return std::__pstl_transform<__remove_parallel_policy_t<_ExecutionPolicy>>( + __cpu_backend_tag{}, __brick_first, __brick_last, __result + (__brick_first - __first), __op); + }); + }); + return __result + (__last - __first); + } else if constexpr (__is_unsequenced_execution_policy_v<_ExecutionPolicy> && + __has_random_access_iterator_category<_ForwardIterator>::value && + __has_random_access_iterator_category<_ForwardOutIterator>::value) { + return std::__simd_walk_2( + __first, + __last - __first, + __result, + [&](__iter_reference<_ForwardIterator> __in_value, __iter_reference<_ForwardOutIterator> __out_value) { + __out_value = __op(__in_value); + }); + } else { + return std::transform(__first, __last, __result, __op); + } +} + +template +_LIBCPP_HIDE_FROM_ABI _Iterator3 __simd_walk_3( + _Iterator1 __first1, _DifferenceType __n, _Iterator2 __first2, _Iterator3 __first3, _Function __f) noexcept { + _PSTL_PRAGMA_SIMD + for (_DifferenceType __i = 0; __i < __n; ++__i) + __f(__first1[__i], __first2[__i], __first3[__i]); + return __first3 + __n; +} +template >, int> = 0> +_LIBCPP_HIDE_FROM_ABI _ForwardOutIterator __pstl_transform( + __cpu_backend_tag, + _ForwardIterator1 __first1, + _ForwardIterator1 __last1, + _ForwardIterator2 __first2, + _ForwardOutIterator __result, + _BinaryOperation __op) { + if constexpr (__is_parallel_execution_policy_v<_ExecutionPolicy> && + __has_random_access_iterator_category<_ForwardIterator1>::value && + __has_random_access_iterator_category<_ForwardIterator2>::value && + __has_random_access_iterator_category<_ForwardOutIterator>::value) { + std::__terminate_on_exception([&] { + std::__par_backend::__parallel_for( + __first1, + __last1, + [__op, __first1, __first2, __result](_ForwardIterator1 __brick_first, _ForwardIterator1 __brick_last) { + return std::__pstl_transform<__remove_parallel_policy_t<_ExecutionPolicy>>( + __cpu_backend_tag{}, + __brick_first, + __brick_last, + __first2 + (__brick_first - __first1), + __result + (__brick_first - __first1), + __op); + }); + }); + return __result + (__last1 - __first1); + } else if constexpr (__is_unsequenced_execution_policy_v<_ExecutionPolicy> && + __has_random_access_iterator_category<_ForwardIterator1>::value && + __has_random_access_iterator_category<_ForwardIterator2>::value && + __has_random_access_iterator_category<_ForwardOutIterator>::value) { + return std::__simd_walk_3( + __first1, + __last1 - __first1, + __first2, + __result, + [&](__iter_reference<_ForwardIterator1> __in1, + __iter_reference<_ForwardIterator2> __in2, + __iter_reference<_ForwardOutIterator> __out_value) { __out_value = __op(__in1, __in2); }); + } else { + return std::transform(__first1, __last1, __first2, __result, __op); + } +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17 + +#endif // _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKENDS_TRANSFORM_H diff --git a/third_party/libcxx/__algorithm/pstl_copy.h b/third_party/libcxx/__algorithm/pstl_copy.h new file mode 100644 index 000000000..5b7d921d7 --- /dev/null +++ b/third_party/libcxx/__algorithm/pstl_copy.h @@ -0,0 +1,57 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_PSTL_COPY_H +#define _LIBCPP___ALGORITHM_PSTL_COPY_H + +#include <__algorithm/copy_n.h> +#include <__algorithm/pstl_transform.h> +#include <__config> +#include <__functional/identity.h> +#include <__iterator/iterator_traits.h> +#include <__type_traits/is_constant_evaluated.h> +#include <__type_traits/is_execution_policy.h> +#include <__type_traits/is_trivially_copyable.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17 + +_LIBCPP_BEGIN_NAMESPACE_STD + +// TODO: Use the std::copy/move shenanigans to forward to std::memmove + +template >, int> = 0> +_LIBCPP_HIDE_FROM_ABI _ForwardOutIterator +copy(_ExecutionPolicy&& __policy, _ForwardIterator __first, _ForwardIterator __last, _ForwardOutIterator __result) { + return std::transform(__policy, __first, __last, __result, __identity()); +} + +template >, int> = 0> +_LIBCPP_HIDE_FROM_ABI _ForwardOutIterator +copy_n(_ExecutionPolicy&& __policy, _ForwardIterator __first, _Size __n, _ForwardOutIterator __result) { + if constexpr (__has_random_access_iterator_category<_ForwardIterator>::value) + return std::copy(__policy, __first, __first + __n, __result); + else + return std::copy_n(__first, __n, __result); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17 + +#endif // _LIBCPP___ALGORITHM_PSTL_COPY_H diff --git a/third_party/libcxx/__algorithm/pstl_fill.h b/third_party/libcxx/__algorithm/pstl_fill.h new file mode 100644 index 000000000..03217b36d --- /dev/null +++ b/third_party/libcxx/__algorithm/pstl_fill.h @@ -0,0 +1,79 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_PSTL_FILL_H +#define _LIBCPP___ALGORITHM_PSTL_FILL_H + +#include <__algorithm/fill_n.h> +#include <__algorithm/pstl_for_each.h> +#include <__algorithm/pstl_frontend_dispatch.h> +#include <__config> +#include <__iterator/iterator_traits.h> +#include <__type_traits/is_execution_policy.h> +#include <__type_traits/remove_cvref.h> +#include <__utility/terminate_on_exception.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17 + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +void __pstl_fill(); // declaration needed for the frontend dispatch below + +template , + enable_if_t, int> = 0> +_LIBCPP_HIDE_FROM_ABI void +fill(_ExecutionPolicy&& __policy, _ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) { + std::__pstl_frontend_dispatch( + _LIBCPP_PSTL_CUSTOMIZATION_POINT(__pstl_fill), + [&](_ForwardIterator __g_first, _ForwardIterator __g_last, const _Tp& __g_value) { + std::for_each(__policy, __g_first, __g_last, [&](__iter_reference<_ForwardIterator> __element) { + __element = __g_value; + }); + }, + std::move(__first), + std::move(__last), + __value); +} + +template +void __pstl_fill_n(); // declaration needed for the frontend dispatch below + +template , + enable_if_t, int> = 0> +_LIBCPP_HIDE_FROM_ABI void +fill_n(_ExecutionPolicy&& __policy, _ForwardIterator __first, _SizeT __n, const _Tp& __value) { + std::__pstl_frontend_dispatch( + _LIBCPP_PSTL_CUSTOMIZATION_POINT(__pstl_fill_n), + [&](_ForwardIterator __g_first, _SizeT __g_n, const _Tp& __g_value) { + if constexpr (__has_random_access_iterator_category<_ForwardIterator>::value) + std::fill(__policy, __g_first, __g_first + __g_n, __g_value); + else + std::fill_n(__g_first, __g_n, __g_value); + }, + std::move(__first), + __n, + __value); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17 + +#endif // _LIBCPP___ALGORITHM_PSTL_FILL_H diff --git a/third_party/libcxx/__algorithm/pstl_find.h b/third_party/libcxx/__algorithm/pstl_find.h new file mode 100644 index 000000000..6d69560dc --- /dev/null +++ b/third_party/libcxx/__algorithm/pstl_find.h @@ -0,0 +1,89 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_PSTL_FIND_H +#define _LIBCPP___ALGORITHM_PSTL_FIND_H + +#include <__algorithm/comp.h> +#include <__algorithm/find.h> +#include <__algorithm/pstl_backend.h> +#include <__algorithm/pstl_frontend_dispatch.h> +#include <__config> +#include <__iterator/iterator_traits.h> +#include <__type_traits/is_execution_policy.h> +#include <__type_traits/remove_cvref.h> +#include <__utility/terminate_on_exception.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17 + +_LIBCPP_BEGIN_NAMESPACE_STD + +template , + enable_if_t, int> = 0> +_LIBCPP_HIDE_FROM_ABI _ForwardIterator +find_if(_ExecutionPolicy&&, _ForwardIterator __first, _ForwardIterator __last, _Predicate __pred) { + using _Backend = typename __select_backend<_RawPolicy>::type; + return std::__pstl_find_if<_RawPolicy>(_Backend{}, std::move(__first), std::move(__last), std::move(__pred)); +} + +template +void __pstl_find_if_not(); + +template , + enable_if_t, int> = 0> +_LIBCPP_HIDE_FROM_ABI _ForwardIterator +find_if_not(_ExecutionPolicy&& __policy, _ForwardIterator __first, _ForwardIterator __last, _Predicate __pred) { + return std::__pstl_frontend_dispatch( + _LIBCPP_PSTL_CUSTOMIZATION_POINT(__pstl_find_if_not), + [&](_ForwardIterator __g_first, _ForwardIterator __g_last, _Predicate __g_pred) { + return std::find_if(__policy, __g_first, __g_last, [&](__iter_reference<_ForwardIterator> __value) { + return !__g_pred(__value); + }); + }, + std::move(__first), + std::move(__last), + std::move(__pred)); +} + +template +void __pstl_find(); + +template , + enable_if_t, int> = 0> +_LIBCPP_HIDE_FROM_ABI _ForwardIterator +find(_ExecutionPolicy&& __policy, _ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) { + return std::__pstl_frontend_dispatch( + _LIBCPP_PSTL_CUSTOMIZATION_POINT(__pstl_find), + [&](_ForwardIterator __g_first, _ForwardIterator __g_last, const _Tp& __g_value) { + return std::find_if(__policy, __g_first, __g_last, [&](__iter_reference<_ForwardIterator> __element) { + return __element == __g_value; + }); + }, + std::move(__first), + std::move(__last), + __value); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17 + +#endif // _LIBCPP___ALGORITHM_PSTL_FIND_H diff --git a/third_party/libcxx/__algorithm/pstl_for_each.h b/third_party/libcxx/__algorithm/pstl_for_each.h new file mode 100644 index 000000000..1c435385d --- /dev/null +++ b/third_party/libcxx/__algorithm/pstl_for_each.h @@ -0,0 +1,71 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_PSTL_FOR_EACH_H +#define _LIBCPP___ALGORITHM_PSTL_FOR_EACH_H + +#include <__algorithm/for_each.h> +#include <__algorithm/for_each_n.h> +#include <__algorithm/pstl_backend.h> +#include <__algorithm/pstl_frontend_dispatch.h> +#include <__config> +#include <__iterator/iterator_traits.h> +#include <__type_traits/is_execution_policy.h> +#include <__type_traits/remove_cvref.h> +#include <__type_traits/void_t.h> +#include <__utility/terminate_on_exception.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17 + +_LIBCPP_BEGIN_NAMESPACE_STD + +template , + enable_if_t, int> = 0> +_LIBCPP_HIDE_FROM_ABI void +for_each(_ExecutionPolicy&&, _ForwardIterator __first, _ForwardIterator __last, _Function __func) { + using _Backend = typename __select_backend<_RawPolicy>::type; + std::__pstl_for_each<_RawPolicy>(_Backend{}, std::move(__first), std::move(__last), std::move(__func)); +} + +template +void __pstl_for_each_n(); // declaration needed for the frontend dispatch below + +template , + enable_if_t, int> = 0> +_LIBCPP_HIDE_FROM_ABI void +for_each_n(_ExecutionPolicy&& __policy, _ForwardIterator __first, _Size __size, _Function __func) { + return std::__pstl_frontend_dispatch( + _LIBCPP_PSTL_CUSTOMIZATION_POINT(__pstl_for_each_n), + [&](_ForwardIterator __g_first, _Size __g_size, _Function __g_func) { + if constexpr (__has_random_access_iterator_category<_ForwardIterator>::value) { + std::for_each(__policy, std::move(__g_first), __g_first + __g_size, std::move(__g_func)); + } else { + std::for_each_n(std::move(__g_first), __g_size, std::move(__g_func)); + } + }, + __first, + __size, + std::move(__func)); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17 + +#endif // _LIBCPP___ALGORITHM_PSTL_FOR_EACH_H diff --git a/third_party/libcxx/__algorithm/pstl_frontend_dispatch.h b/third_party/libcxx/__algorithm/pstl_frontend_dispatch.h new file mode 100644 index 000000000..dc49f3e51 --- /dev/null +++ b/third_party/libcxx/__algorithm/pstl_frontend_dispatch.h @@ -0,0 +1,45 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_PSTL_FRONTEND_DISPATCH +#define _LIBCPP___ALGORITHM_PSTL_FRONTEND_DISPATCH + +#include <__config> +#include <__type_traits/is_callable.h> +#include <__utility/forward.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 17 + +_LIBCPP_BEGIN_NAMESPACE_STD + +# define _LIBCPP_PSTL_CUSTOMIZATION_POINT(name) \ + [](auto&&... __args) -> decltype(std::name<_RawPolicy>(typename __select_backend<_RawPolicy>::type{}, \ + std::forward(__args)...)) { \ + return std::name<_RawPolicy>( \ + typename __select_backend<_RawPolicy>::type{}, std::forward(__args)...); \ + } + +template +_LIBCPP_HIDE_FROM_ABI decltype(auto) +__pstl_frontend_dispatch(_SpecializedImpl __specialized_impl, _GenericImpl __generic_impl, _Args&&... __args) { + if constexpr (__is_callable<_SpecializedImpl, _Args...>::value) { + return __specialized_impl(std::forward<_Args>(__args)...); + } else { + return __generic_impl(std::forward<_Args>(__args)...); + } +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 17 + +#endif // _LIBCPP___ALGORITHM_PSTL_FRONTEND_DISPATCH diff --git a/third_party/libcxx/__algorithm/pstl_merge.h b/third_party/libcxx/__algorithm/pstl_merge.h new file mode 100644 index 000000000..b5585eeec --- /dev/null +++ b/third_party/libcxx/__algorithm/pstl_merge.h @@ -0,0 +1,56 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_PSTL_MERGE_H +#define _LIBCPP___ALGORITHM_PSTL_MERGE_H + +#include <__algorithm/pstl_backend.h> +#include <__config> +#include <__functional/operations.h> +#include <__type_traits/is_execution_policy.h> +#include <__type_traits/remove_cvref.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17 + +_LIBCPP_BEGIN_NAMESPACE_STD + +template , + class _RawPolicy = __remove_cvref_t<_ExecutionPolicy>, + enable_if_t, int> = 0> +_LIBCPP_HIDE_FROM_ABI _ForwardOutIterator +merge(_ExecutionPolicy&&, + _ForwardIterator1 __first1, + _ForwardIterator1 __last1, + _ForwardIterator2 __first2, + _ForwardIterator2 __last2, + _ForwardOutIterator __result, + _Comp __comp = {}) { + using _Backend = typename __select_backend<_RawPolicy>::type; + return std::__pstl_merge<_RawPolicy>( + _Backend{}, + std::move(__first1), + std::move(__last1), + std::move(__first2), + std::move(__last2), + std::move(__result), + std::move(__comp)); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17 + +#endif // _LIBCPP___ALGORITHM_PSTL_MERGE_H diff --git a/third_party/libcxx/__algorithm/pstl_transform.h b/third_party/libcxx/__algorithm/pstl_transform.h new file mode 100644 index 000000000..9d2d731ee --- /dev/null +++ b/third_party/libcxx/__algorithm/pstl_transform.h @@ -0,0 +1,66 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_PSTL_TRANSFORM_H +#define _LIBCPP___ALGORITHM_PSTL_TRANSFORM_H + +#include <__algorithm/pstl_backend.h> +#include <__config> +#include <__iterator/iterator_traits.h> +#include <__type_traits/is_execution_policy.h> +#include <__utility/terminate_on_exception.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17 + +_LIBCPP_BEGIN_NAMESPACE_STD + +template , + enable_if_t, int> = 0> +_LIBCPP_HIDE_FROM_ABI _ForwardOutIterator transform( + _ExecutionPolicy&&, + _ForwardIterator __first, + _ForwardIterator __last, + _ForwardOutIterator __result, + _UnaryOperation __op) { + using _Backend = typename __select_backend<_RawPolicy>::type; + return std::__pstl_transform<_RawPolicy>( + _Backend{}, std::move(__first), std::move(__last), std::move(__result), std::move(__op)); +} + +template , + enable_if_t, int> = 0> +_LIBCPP_HIDE_FROM_ABI _ForwardOutIterator transform( + _ExecutionPolicy&&, + _ForwardIterator1 __first1, + _ForwardIterator1 __last1, + _ForwardIterator2 __first2, + _ForwardOutIterator __result, + _BinaryOperation __op) { + using _Backend = typename __select_backend<_RawPolicy>::type; + return std::__pstl_transform<_RawPolicy>( + _Backend{}, std::move(__first1), std::move(__last1), std::move(__first2), std::move(__result), std::move(__op)); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17 + +#endif // _LIBCPP___ALGORITHM_PSTL_TRANSFORM_H diff --git a/third_party/libcxx/__algorithm/push_heap.h b/third_party/libcxx/__algorithm/push_heap.h new file mode 100644 index 000000000..e831162a8 --- /dev/null +++ b/third_party/libcxx/__algorithm/push_heap.h @@ -0,0 +1,78 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_PUSH_HEAP_H +#define _LIBCPP___ALGORITHM_PUSH_HEAP_H + +#include <__algorithm/comp.h> +#include <__algorithm/comp_ref_type.h> +#include <__algorithm/iterator_operations.h> +#include <__config> +#include <__iterator/iterator_traits.h> +#include <__type_traits/is_copy_assignable.h> +#include <__type_traits/is_copy_constructible.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 +void __sift_up(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare&& __comp, + typename iterator_traits<_RandomAccessIterator>::difference_type __len) { + using value_type = typename iterator_traits<_RandomAccessIterator>::value_type; + + if (__len > 1) { + __len = (__len - 2) / 2; + _RandomAccessIterator __ptr = __first + __len; + + if (__comp(*__ptr, *--__last)) { + value_type __t(_IterOps<_AlgPolicy>::__iter_move(__last)); + do { + *__last = _IterOps<_AlgPolicy>::__iter_move(__ptr); + __last = __ptr; + if (__len == 0) + break; + __len = (__len - 1) / 2; + __ptr = __first + __len; + } while (__comp(*__ptr, __t)); + + *__last = std::move(__t); + } + } +} + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 +void __push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare& __comp) { + typename iterator_traits<_RandomAccessIterator>::difference_type __len = __last - __first; + std::__sift_up<_AlgPolicy, __comp_ref_type<_Compare> >(std::move(__first), std::move(__last), __comp, __len); +} + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 +void push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) { + static_assert(std::is_copy_constructible<_RandomAccessIterator>::value, "Iterators must be copy constructible."); + static_assert(std::is_copy_assignable<_RandomAccessIterator>::value, "Iterators must be copy assignable."); + + std::__push_heap<_ClassicAlgPolicy>(std::move(__first), std::move(__last), __comp); +} + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 +void push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) { + std::push_heap(std::move(__first), std::move(__last), + __less::value_type>()); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_PUSH_HEAP_H diff --git a/third_party/libcxx/__algorithm/ranges_adjacent_find.h b/third_party/libcxx/__algorithm/ranges_adjacent_find.h new file mode 100644 index 000000000..e3de36bbc --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_adjacent_find.h @@ -0,0 +1,78 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_ADJACENT_FIND_H +#define _LIBCPP___ALGORITHM_RANGES_ADJACENT_FIND_H + +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __adjacent_find { +struct __fn { + + template + _LIBCPP_HIDE_FROM_ABI constexpr static + _Iter __adjacent_find_impl(_Iter __first, _Sent __last, _Pred& __pred, _Proj& __proj) { + if (__first == __last) + return __first; + + auto __i = __first; + while (++__i != __last) { + if (std::invoke(__pred, std::invoke(__proj, *__first), std::invoke(__proj, *__i))) + return __first; + __first = __i; + } + return __i; + } + + template _Sent, + class _Proj = identity, + indirect_binary_predicate, projected<_Iter, _Proj>> _Pred = ranges::equal_to> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + _Iter operator()(_Iter __first, _Sent __last, _Pred __pred = {}, _Proj __proj = {}) const { + return __adjacent_find_impl(std::move(__first), std::move(__last), __pred, __proj); + } + + template , _Proj>, + projected, _Proj>> _Pred = ranges::equal_to> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + borrowed_iterator_t<_Range> operator()(_Range&& __range, _Pred __pred = {}, _Proj __proj = {}) const { + return __adjacent_find_impl(ranges::begin(__range), ranges::end(__range), __pred, __proj); + } +}; +} // namespace __adjacent_find + +inline namespace __cpo { + inline constexpr auto adjacent_find = __adjacent_find::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_ADJACENT_FIND_H diff --git a/third_party/libcxx/__algorithm/ranges_all_of.h b/third_party/libcxx/__algorithm/ranges_all_of.h new file mode 100644 index 000000000..494a77d74 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_all_of.h @@ -0,0 +1,68 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_ALL_OF_H +#define _LIBCPP___ALGORITHM_RANGES_ALL_OF_H + +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__iterator/concepts.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __all_of { +struct __fn { + + template + _LIBCPP_HIDE_FROM_ABI constexpr static + bool __all_of_impl(_Iter __first, _Sent __last, _Pred& __pred, _Proj& __proj) { + for (; __first != __last; ++__first) { + if (!std::invoke(__pred, std::invoke(__proj, *__first))) + return false; + } + return true; + } + + template _Sent, class _Proj = identity, + indirect_unary_predicate> _Pred> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + bool operator()(_Iter __first, _Sent __last, _Pred __pred, _Proj __proj = {}) const { + return __all_of_impl(std::move(__first), std::move(__last), __pred, __proj); + } + + template , _Proj>> _Pred> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + bool operator()(_Range&& __range, _Pred __pred, _Proj __proj = {}) const { + return __all_of_impl(ranges::begin(__range), ranges::end(__range), __pred, __proj); + } +}; +} // namespace __all_of + +inline namespace __cpo { + inline constexpr auto all_of = __all_of::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_ALL_OF_H diff --git a/third_party/libcxx/__algorithm/ranges_any_of.h b/third_party/libcxx/__algorithm/ranges_any_of.h new file mode 100644 index 000000000..eb102bd85 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_any_of.h @@ -0,0 +1,68 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_ANY_OF_H +#define _LIBCPP___ALGORITHM_RANGES_ANY_OF_H + +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__iterator/concepts.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __any_of { +struct __fn { + + template + _LIBCPP_HIDE_FROM_ABI constexpr static + bool __any_of_impl(_Iter __first, _Sent __last, _Pred& __pred, _Proj& __proj) { + for (; __first != __last; ++__first) { + if (std::invoke(__pred, std::invoke(__proj, *__first))) + return true; + } + return false; + } + + template _Sent, class _Proj = identity, + indirect_unary_predicate> _Pred> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + bool operator()(_Iter __first, _Sent __last, _Pred __pred = {}, _Proj __proj = {}) const { + return __any_of_impl(std::move(__first), std::move(__last), __pred, __proj); + } + + template , _Proj>> _Pred> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + bool operator()(_Range&& __range, _Pred __pred, _Proj __proj = {}) const { + return __any_of_impl(ranges::begin(__range), ranges::end(__range), __pred, __proj); + } +}; +} // namespace __any_of + +inline namespace __cpo { + inline constexpr auto any_of = __any_of::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_ANY_OF_H diff --git a/third_party/libcxx/__algorithm/ranges_binary_search.h b/third_party/libcxx/__algorithm/ranges_binary_search.h new file mode 100644 index 000000000..d89597e1b --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_binary_search.h @@ -0,0 +1,63 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_BINARY_SEARCH_H +#define _LIBCPP___ALGORITHM_RANGES_BINARY_SEARCH_H + +#include <__algorithm/iterator_operations.h> +#include <__algorithm/lower_bound.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __binary_search { +struct __fn { + template _Sent, class _Type, class _Proj = identity, + indirect_strict_weak_order> _Comp = ranges::less> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + bool operator()(_Iter __first, _Sent __last, const _Type& __value, _Comp __comp = {}, _Proj __proj = {}) const { + auto __ret = std::__lower_bound_impl<_RangeAlgPolicy>(__first, __last, __value, __comp, __proj); + return __ret != __last && !std::invoke(__comp, __value, std::invoke(__proj, *__ret)); + } + + template , _Proj>> _Comp = ranges::less> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + bool operator()(_Range&& __r, const _Type& __value, _Comp __comp = {}, _Proj __proj = {}) const { + auto __first = ranges::begin(__r); + auto __last = ranges::end(__r); + auto __ret = std::__lower_bound_impl<_RangeAlgPolicy>(__first, __last, __value, __comp, __proj); + return __ret != __last && !std::invoke(__comp, __value, std::invoke(__proj, *__ret)); + } +}; +} // namespace __binary_search + +inline namespace __cpo { + inline constexpr auto binary_search = __binary_search::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_BINARY_SEARCH_H diff --git a/third_party/libcxx/__algorithm/ranges_clamp.h b/third_party/libcxx/__algorithm/ranges_clamp.h new file mode 100644 index 000000000..45a8464c9 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_clamp.h @@ -0,0 +1,65 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_CLAMP_H +#define _LIBCPP___ALGORITHM_RANGES_CLAMP_H + +#include <__assert> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/projected.h> +#include <__utility/forward.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __clamp { +struct __fn { + + template > _Comp = ranges::less> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + const _Type& operator()(const _Type& __value, + const _Type& __low, + const _Type& __high, + _Comp __comp = {}, + _Proj __proj = {}) const { + _LIBCPP_ASSERT(!bool(std::invoke(__comp, std::invoke(__proj, __high), std::invoke(__proj, __low))), + "Bad bounds passed to std::ranges::clamp"); + + if (std::invoke(__comp, std::invoke(__proj, __value), std::invoke(__proj, __low))) + return __low; + else if (std::invoke(__comp, std::invoke(__proj, __high), std::invoke(__proj, __value))) + return __high; + else + return __value; + } + +}; +} // namespace __clamp + +inline namespace __cpo { + inline constexpr auto clamp = __clamp::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_CLAMP_H diff --git a/third_party/libcxx/__algorithm/ranges_copy.h b/third_party/libcxx/__algorithm/ranges_copy.h new file mode 100644 index 000000000..f5700c3d3 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_copy.h @@ -0,0 +1,67 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_COPY_H +#define _LIBCPP___ALGORITHM_RANGES_COPY_H + +#include <__algorithm/copy.h> +#include <__algorithm/in_out_result.h> +#include <__algorithm/iterator_operations.h> +#include <__config> +#include <__functional/identity.h> +#include <__iterator/concepts.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/move.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { + +template +using copy_result = in_out_result<_InIter, _OutIter>; + +namespace __copy { +struct __fn { + + template _Sent, weakly_incrementable _OutIter> + requires indirectly_copyable<_InIter, _OutIter> + _LIBCPP_HIDE_FROM_ABI constexpr + copy_result<_InIter, _OutIter> operator()(_InIter __first, _Sent __last, _OutIter __result) const { + auto __ret = std::__copy<_RangeAlgPolicy>(std::move(__first), std::move(__last), std::move(__result)); + return {std::move(__ret.first), std::move(__ret.second)}; + } + + template + requires indirectly_copyable, _OutIter> + _LIBCPP_HIDE_FROM_ABI constexpr + copy_result, _OutIter> operator()(_Range&& __r, _OutIter __result) const { + auto __ret = std::__copy<_RangeAlgPolicy>(ranges::begin(__r), ranges::end(__r), std::move(__result)); + return {std::move(__ret.first), std::move(__ret.second)}; + } +}; +} // namespace __copy + +inline namespace __cpo { + inline constexpr auto copy = __copy::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_COPY_H diff --git a/third_party/libcxx/__algorithm/ranges_copy_backward.h b/third_party/libcxx/__algorithm/ranges_copy_backward.h new file mode 100644 index 000000000..b7b5b8879 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_copy_backward.h @@ -0,0 +1,65 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_COPY_BACKWARD_H +#define _LIBCPP___ALGORITHM_RANGES_COPY_BACKWARD_H + +#include <__algorithm/copy_backward.h> +#include <__algorithm/in_out_result.h> +#include <__algorithm/iterator_operations.h> +#include <__config> +#include <__iterator/concepts.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { + +template +using copy_backward_result = in_out_result<_Ip, _Op>; + +namespace __copy_backward { +struct __fn { + + template _Sent1, bidirectional_iterator _InIter2> + requires indirectly_copyable<_InIter1, _InIter2> + _LIBCPP_HIDE_FROM_ABI constexpr + copy_backward_result<_InIter1, _InIter2> operator()(_InIter1 __first, _Sent1 __last, _InIter2 __result) const { + auto __ret = std::__copy_backward<_RangeAlgPolicy>(std::move(__first), std::move(__last), std::move(__result)); + return {std::move(__ret.first), std::move(__ret.second)}; + } + + template + requires indirectly_copyable, _Iter> + _LIBCPP_HIDE_FROM_ABI constexpr + copy_backward_result, _Iter> operator()(_Range&& __r, _Iter __result) const { + auto __ret = std::__copy_backward<_RangeAlgPolicy>(ranges::begin(__r), ranges::end(__r), std::move(__result)); + return {std::move(__ret.first), std::move(__ret.second)}; + } +}; +} // namespace __copy_backward + +inline namespace __cpo { + inline constexpr auto copy_backward = __copy_backward::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_COPY_BACKWARD_H diff --git a/third_party/libcxx/__algorithm/ranges_copy_if.h b/third_party/libcxx/__algorithm/ranges_copy_if.h new file mode 100644 index 000000000..b714e4cd1 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_copy_if.h @@ -0,0 +1,81 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_COPY_IF_H +#define _LIBCPP___ALGORITHM_RANGES_COPY_IF_H + +#include <__algorithm/in_out_result.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__iterator/concepts.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { + +template +using copy_if_result = in_out_result<_Ip, _Op>; + +namespace __copy_if { +struct __fn { + + template + _LIBCPP_HIDE_FROM_ABI static constexpr + copy_if_result <_InIter, _OutIter> + __copy_if_impl(_InIter __first, _Sent __last, _OutIter __result, _Pred& __pred, _Proj& __proj) { + for (; __first != __last; ++__first) { + if (std::invoke(__pred, std::invoke(__proj, *__first))) { + *__result = *__first; + ++__result; + } + } + return {std::move(__first), std::move(__result)}; + } + + template _Sent, weakly_incrementable _OutIter, class _Proj = identity, + indirect_unary_predicate> _Pred> + requires indirectly_copyable<_Iter, _OutIter> + _LIBCPP_HIDE_FROM_ABI constexpr + copy_if_result<_Iter, _OutIter> + operator()(_Iter __first, _Sent __last, _OutIter __result, _Pred __pred, _Proj __proj = {}) const { + return __copy_if_impl(std::move(__first), std::move(__last), std::move(__result), __pred, __proj); + } + + template , _Proj>> _Pred> + requires indirectly_copyable, _OutIter> + _LIBCPP_HIDE_FROM_ABI constexpr + copy_if_result, _OutIter> + operator()(_Range&& __r, _OutIter __result, _Pred __pred, _Proj __proj = {}) const { + return __copy_if_impl(ranges::begin(__r), ranges::end(__r), std::move(__result), __pred, __proj); + } +}; +} // namespace __copy_if + +inline namespace __cpo { + inline constexpr auto copy_if = __copy_if::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_COPY_IF_H diff --git a/third_party/libcxx/__algorithm/ranges_copy_n.h b/third_party/libcxx/__algorithm/ranges_copy_n.h new file mode 100644 index 000000000..30ee019ac --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_copy_n.h @@ -0,0 +1,77 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_COPY_N_H +#define _LIBCPP___ALGORITHM_RANGES_COPY_N_H + +#include <__algorithm/copy.h> +#include <__algorithm/in_out_result.h> +#include <__algorithm/iterator_operations.h> +#include <__algorithm/ranges_copy.h> +#include <__config> +#include <__functional/identity.h> +#include <__iterator/concepts.h> +#include <__iterator/incrementable_traits.h> +#include <__iterator/unreachable_sentinel.h> +#include <__iterator/wrap_iter.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +namespace ranges { + +template +using copy_n_result = in_out_result<_Ip, _Op>; + +namespace __copy_n { +struct __fn { + + template + _LIBCPP_HIDE_FROM_ABI constexpr static + copy_n_result<_InIter, _OutIter> __go(_InIter __first, _DiffType __n, _OutIter __result) { + while (__n != 0) { + *__result = *__first; + ++__first; + ++__result; + --__n; + } + return {std::move(__first), std::move(__result)}; + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr static + copy_n_result<_InIter, _OutIter> __go(_InIter __first, _DiffType __n, _OutIter __result) { + auto __ret = std::__copy<_RangeAlgPolicy>(__first, __first + __n, __result); + return {__ret.first, __ret.second}; + } + + template + requires indirectly_copyable<_Ip, _Op> + _LIBCPP_HIDE_FROM_ABI constexpr + copy_n_result<_Ip, _Op> operator()(_Ip __first, iter_difference_t<_Ip> __n, _Op __result) const { + return __go(std::move(__first), __n, std::move(__result)); + } +}; +} // namespace __copy_n + +inline namespace __cpo { + inline constexpr auto copy_n = __copy_n::__fn{}; +} // namespace __cpo +} // namespace ranges + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_RANGES_COPY_N_H diff --git a/third_party/libcxx/__algorithm/ranges_count.h b/third_party/libcxx/__algorithm/ranges_count.h new file mode 100644 index 000000000..677ee3818 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_count.h @@ -0,0 +1,62 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_COUNT_H +#define _LIBCPP___ALGORITHM_RANGES_COUNT_H + +#include <__algorithm/ranges_count_if.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/incrementable_traits.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __count { +struct __fn { + template _Sent, class _Type, class _Proj = identity> + requires indirect_binary_predicate, const _Type*> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + iter_difference_t<_Iter> operator()(_Iter __first, _Sent __last, const _Type& __value, _Proj __proj = {}) const { + auto __pred = [&](auto&& __e) { return __e == __value; }; + return ranges::__count_if_impl(std::move(__first), std::move(__last), __pred, __proj); + } + + template + requires indirect_binary_predicate, _Proj>, const _Type*> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + range_difference_t<_Range> operator()(_Range&& __r, const _Type& __value, _Proj __proj = {}) const { + auto __pred = [&](auto&& __e) { return __e == __value; }; + return ranges::__count_if_impl(ranges::begin(__r), ranges::end(__r), __pred, __proj); + } +}; +} // namespace __count + +inline namespace __cpo { + inline constexpr auto count = __count::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_COUNT_H diff --git a/third_party/libcxx/__algorithm/ranges_count_if.h b/third_party/libcxx/__algorithm/ranges_count_if.h new file mode 100644 index 000000000..48c4370eb --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_count_if.h @@ -0,0 +1,72 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_COUNT_IF_H +#define _LIBCPP___ALGORITHM_RANGES_COUNT_IF_H + +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/incrementable_traits.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +template +_LIBCPP_HIDE_FROM_ABI constexpr +iter_difference_t<_Iter> __count_if_impl(_Iter __first, _Sent __last, + _Pred& __pred, _Proj& __proj) { + iter_difference_t<_Iter> __counter(0); + for (; __first != __last; ++__first) { + if (std::invoke(__pred, std::invoke(__proj, *__first))) + ++__counter; + } + return __counter; +} + +namespace __count_if { +struct __fn { + template _Sent, class _Proj = identity, + indirect_unary_predicate> _Predicate> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + iter_difference_t<_Iter> operator()(_Iter __first, _Sent __last, _Predicate __pred, _Proj __proj = {}) const { + return ranges::__count_if_impl(std::move(__first), std::move(__last), __pred, __proj); + } + + template , _Proj>> _Predicate> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + range_difference_t<_Range> operator()(_Range&& __r, _Predicate __pred, _Proj __proj = {}) const { + return ranges::__count_if_impl(ranges::begin(__r), ranges::end(__r), __pred, __proj); + } +}; +} // namespace __count_if + +inline namespace __cpo { + inline constexpr auto count_if = __count_if::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_COUNT_IF_H diff --git a/third_party/libcxx/__algorithm/ranges_equal.h b/third_party/libcxx/__algorithm/ranges_equal.h new file mode 100644 index 000000000..87544531c --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_equal.h @@ -0,0 +1,98 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_EQUAL_H +#define _LIBCPP___ALGORITHM_RANGES_EQUAL_H + +#include <__algorithm/equal.h> +#include <__algorithm/unwrap_range.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/distance.h> +#include <__iterator/indirectly_comparable.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __equal { +struct __fn { + template _Sent1, + input_iterator _Iter2, sentinel_for<_Iter2> _Sent2, + class _Pred = ranges::equal_to, + class _Proj1 = identity, + class _Proj2 = identity> + requires indirectly_comparable<_Iter1, _Iter2, _Pred, _Proj1, _Proj2> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + bool operator()(_Iter1 __first1, _Sent1 __last1, + _Iter2 __first2, _Sent2 __last2, + _Pred __pred = {}, + _Proj1 __proj1 = {}, + _Proj2 __proj2 = {}) const { + if constexpr (sized_sentinel_for<_Sent1, _Iter1> && sized_sentinel_for<_Sent2, _Iter2>) { + if (__last1 - __first1 != __last2 - __first2) + return false; + } + auto __unwrapped1 = std::__unwrap_range(std::move(__first1), std::move(__last1)); + auto __unwrapped2 = std::__unwrap_range(std::move(__first2), std::move(__last2)); + return std::__equal_impl(std::move(__unwrapped1.first), std::move(__unwrapped1.second), + std::move(__unwrapped2.first), std::move(__unwrapped2.second), + __pred, + __proj1, + __proj2); + } + + template + requires indirectly_comparable, iterator_t<_Range2>, _Pred, _Proj1, _Proj2> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + bool operator()(_Range1&& __range1, + _Range2&& __range2, + _Pred __pred = {}, + _Proj1 __proj1 = {}, + _Proj2 __proj2 = {}) const { + if constexpr (sized_range<_Range1> && sized_range<_Range2>) { + if (ranges::distance(__range1) != ranges::distance(__range2)) + return false; + } + auto __unwrapped1 = std::__unwrap_range(ranges::begin(__range1), ranges::end(__range1)); + auto __unwrapped2 = std::__unwrap_range(ranges::begin(__range2), ranges::end(__range2)); + return std::__equal_impl(std::move(__unwrapped1.first), std::move(__unwrapped1.second), + std::move(__unwrapped2.first), std::move(__unwrapped2.second), + __pred, + __proj1, + __proj2); + return false; + } +}; +} // namespace __equal + +inline namespace __cpo { + inline constexpr auto equal = __equal::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_EQUAL_H diff --git a/third_party/libcxx/__algorithm/ranges_equal_range.h b/third_party/libcxx/__algorithm/ranges_equal_range.h new file mode 100644 index 000000000..075634ae9 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_equal_range.h @@ -0,0 +1,78 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM __project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_EQUAL_RANGE_H +#define _LIBCPP___ALGORITHM_RANGES_EQUAL_RANGE_H + +#include <__algorithm/equal_range.h> +#include <__algorithm/iterator_operations.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__ranges/subrange.h> +#include <__utility/forward.h> +#include <__utility/move.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __equal_range { + +struct __fn { + template < + forward_iterator _Iter, + sentinel_for<_Iter> _Sent, + class _Tp, + class _Proj = identity, + indirect_strict_weak_order> _Comp = ranges::less> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr subrange<_Iter> + operator()(_Iter __first, _Sent __last, const _Tp& __value, _Comp __comp = {}, _Proj __proj = {}) const { + auto __ret = std::__equal_range<_RangeAlgPolicy>( + std::move(__first), std::move(__last), __value, __comp, __proj); + return {std::move(__ret.first), std::move(__ret.second)}; + } + + template < + forward_range _Range, + class _Tp, + class _Proj = identity, + indirect_strict_weak_order, _Proj>> _Comp = ranges::less> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr borrowed_subrange_t<_Range> + operator()(_Range&& __range, const _Tp& __value, _Comp __comp = {}, _Proj __proj = {}) const { + auto __ret = std::__equal_range<_RangeAlgPolicy>( + ranges::begin(__range), ranges::end(__range), __value, __comp, __proj); + return {std::move(__ret.first), std::move(__ret.second)}; + } +}; + +} // namespace __equal_range + +inline namespace __cpo { + inline constexpr auto equal_range = __equal_range::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_EQUAL_RANGE_H diff --git a/third_party/libcxx/__algorithm/ranges_fill.h b/third_party/libcxx/__algorithm/ranges_fill.h new file mode 100644 index 000000000..4e0594c6d --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_fill.h @@ -0,0 +1,59 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_FILL_H +#define _LIBCPP___ALGORITHM_RANGES_FILL_H + +#include <__algorithm/ranges_fill_n.h> +#include <__config> +#include <__iterator/concepts.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __fill { +struct __fn { + template _Iter, sentinel_for<_Iter> _Sent> + _LIBCPP_HIDE_FROM_ABI constexpr + _Iter operator()(_Iter __first, _Sent __last, const _Type& __value) const { + if constexpr(random_access_iterator<_Iter> && sized_sentinel_for<_Sent, _Iter>) { + return ranges::fill_n(__first, __last - __first, __value); + } else { + for (; __first != __last; ++__first) + *__first = __value; + return __first; + } + } + + template _Range> + _LIBCPP_HIDE_FROM_ABI constexpr + borrowed_iterator_t<_Range> operator()(_Range&& __range, const _Type& __value) const { + return (*this)(ranges::begin(__range), ranges::end(__range), __value); + } +}; +} // namespace __fill + +inline namespace __cpo { + inline constexpr auto fill = __fill::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_FILL_H diff --git a/third_party/libcxx/__algorithm/ranges_fill_n.h b/third_party/libcxx/__algorithm/ranges_fill_n.h new file mode 100644 index 000000000..c5f7e6ead --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_fill_n.h @@ -0,0 +1,48 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_FILL_N_H +#define _LIBCPP___ALGORITHM_RANGES_FILL_N_H + +#include <__config> +#include <__iterator/concepts.h> +#include <__iterator/incrementable_traits.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __fill_n { +struct __fn { + template _Iter> + _LIBCPP_HIDE_FROM_ABI constexpr + _Iter operator()(_Iter __first, iter_difference_t<_Iter> __n, const _Type& __value) const { + for (; __n != 0; --__n) { + *__first = __value; + ++__first; + } + return __first; + } +}; +} // namespace __fill_n + +inline namespace __cpo { + inline constexpr auto fill_n = __fill_n::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_FILL_N_H diff --git a/third_party/libcxx/__algorithm/ranges_find.h b/third_party/libcxx/__algorithm/ranges_find.h new file mode 100644 index 000000000..084cdfff0 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_find.h @@ -0,0 +1,75 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_FIND_H +#define _LIBCPP___ALGORITHM_RANGES_FIND_H + +#include <__algorithm/find.h> +#include <__algorithm/ranges_find_if.h> +#include <__algorithm/unwrap_range.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/forward.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __find { +struct __fn { + template + _LIBCPP_HIDE_FROM_ABI static constexpr _Iter + __find_unwrap(_Iter __first, _Sent __last, const _Tp& __value, _Proj& __proj) { + if constexpr (forward_iterator<_Iter>) { + auto [__first_un, __last_un] = std::__unwrap_range(__first, std::move(__last)); + return std::__rewrap_range<_Sent>( + std::move(__first), std::__find_impl(std::move(__first_un), std::move(__last_un), __value, __proj)); + } else { + return std::__find_impl(std::move(__first), std::move(__last), __value, __proj); + } + } + + template _Sp, class _Tp, class _Proj = identity> + requires indirect_binary_predicate, const _Tp*> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + _Ip operator()(_Ip __first, _Sp __last, const _Tp& __value, _Proj __proj = {}) const { + return __find_unwrap(std::move(__first), std::move(__last), __value, __proj); + } + + template + requires indirect_binary_predicate, _Proj>, const _Tp*> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + borrowed_iterator_t<_Rp> operator()(_Rp&& __r, const _Tp& __value, _Proj __proj = {}) const { + return __find_unwrap(ranges::begin(__r), ranges::end(__r), __value, __proj); + } +}; +} // namespace __find + +inline namespace __cpo { + inline constexpr auto find = __find::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_FIND_H diff --git a/third_party/libcxx/__algorithm/ranges_find_end.h b/third_party/libcxx/__algorithm/ranges_find_end.h new file mode 100644 index 000000000..2d46e8c38 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_find_end.h @@ -0,0 +1,98 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_FIND_END_H +#define _LIBCPP___ALGORITHM_RANGES_FIND_END_H + +#include <__algorithm/find_end.h> +#include <__algorithm/iterator_operations.h> +#include <__algorithm/ranges_iterator_concept.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/indirectly_comparable.h> +#include <__iterator/iterator_traits.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/subrange.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __find_end { +struct __fn { + template _Sent1, + forward_iterator _Iter2, sentinel_for<_Iter2> _Sent2, + class _Pred = ranges::equal_to, + class _Proj1 = identity, + class _Proj2 = identity> + requires indirectly_comparable<_Iter1, _Iter2, _Pred, _Proj1, _Proj2> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + subrange<_Iter1> operator()(_Iter1 __first1, _Sent1 __last1, + _Iter2 __first2, _Sent2 __last2, + _Pred __pred = {}, + _Proj1 __proj1 = {}, + _Proj2 __proj2 = {}) const { + auto __ret = std::__find_end_impl<_RangeAlgPolicy>( + __first1, + __last1, + __first2, + __last2, + __pred, + __proj1, + __proj2, + __iterator_concept<_Iter1>(), + __iterator_concept<_Iter2>()); + return {__ret.first, __ret.second}; + } + + template + requires indirectly_comparable, iterator_t<_Range2>, _Pred, _Proj1, _Proj2> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + borrowed_subrange_t<_Range1> operator()(_Range1&& __range1, + _Range2&& __range2, + _Pred __pred = {}, + _Proj1 __proj1 = {}, + _Proj2 __proj2 = {}) const { + auto __ret = std::__find_end_impl<_RangeAlgPolicy>( + ranges::begin(__range1), + ranges::end(__range1), + ranges::begin(__range2), + ranges::end(__range2), + __pred, + __proj1, + __proj2, + __iterator_concept>(), + __iterator_concept>()); + return {__ret.first, __ret.second}; + } +}; +} // namespace __find_end + +inline namespace __cpo { + inline constexpr auto find_end = __find_end::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_FIND_END_H diff --git a/third_party/libcxx/__algorithm/ranges_find_first_of.h b/third_party/libcxx/__algorithm/ranges_find_first_of.h new file mode 100644 index 000000000..5699583ba --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_find_first_of.h @@ -0,0 +1,101 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_FIND_FIRST_OF_H +#define _LIBCPP___ALGORITHM_RANGES_FIND_FIRST_OF_H + +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/indirectly_comparable.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __find_first_of { +struct __fn { + + template + _LIBCPP_HIDE_FROM_ABI constexpr static + _Iter1 __find_first_of_impl(_Iter1 __first1, _Sent1 __last1, + _Iter2 __first2, _Sent2 __last2, + _Pred& __pred, + _Proj1& __proj1, + _Proj2& __proj2) { + for (; __first1 != __last1; ++__first1) { + for (auto __j = __first2; __j != __last2; ++__j) { + if (std::invoke(__pred, std::invoke(__proj1, *__first1), std::invoke(__proj2, *__j))) + return __first1; + } + } + return __first1; + } + + template _Sent1, + forward_iterator _Iter2, sentinel_for<_Iter2> _Sent2, + class _Pred = ranges::equal_to, + class _Proj1 = identity, + class _Proj2 = identity> + requires indirectly_comparable<_Iter1, _Iter2, _Pred, _Proj1, _Proj2> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + _Iter1 operator()(_Iter1 __first1, _Sent1 __last1, + _Iter2 __first2, _Sent2 __last2, + _Pred __pred = {}, + _Proj1 __proj1 = {}, + _Proj2 __proj2 = {}) const { + return __find_first_of_impl(std::move(__first1), std::move(__last1), + std::move(__first2), std::move(__last2), + __pred, + __proj1, + __proj2); + } + + template + requires indirectly_comparable, iterator_t<_Range2>, _Pred, _Proj1, _Proj2> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + borrowed_iterator_t<_Range1> operator()(_Range1&& __range1, + _Range2&& __range2, + _Pred __pred = {}, + _Proj1 __proj1 = {}, + _Proj2 __proj2 = {}) const { + return __find_first_of_impl(ranges::begin(__range1), ranges::end(__range1), + ranges::begin(__range2), ranges::end(__range2), + __pred, + __proj1, + __proj2); + } + +}; +} // namespace __find_first_of + +inline namespace __cpo { + inline constexpr auto find_first_of = __find_first_of::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_FIND_FIRST_OF_H diff --git a/third_party/libcxx/__algorithm/ranges_find_if.h b/third_party/libcxx/__algorithm/ranges_find_if.h new file mode 100644 index 000000000..6e2bd4c3d --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_find_if.h @@ -0,0 +1,71 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_FIND_IF_H +#define _LIBCPP___ALGORITHM_RANGES_FIND_IF_H + +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { + +template +_LIBCPP_HIDE_FROM_ABI constexpr +_Ip __find_if_impl(_Ip __first, _Sp __last, _Pred& __pred, _Proj& __proj) { + for (; __first != __last; ++__first) { + if (std::invoke(__pred, std::invoke(__proj, *__first))) + break; + } + return __first; +} + +namespace __find_if { +struct __fn { + + template _Sp, class _Proj = identity, + indirect_unary_predicate> _Pred> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + _Ip operator()(_Ip __first, _Sp __last, _Pred __pred, _Proj __proj = {}) const { + return ranges::__find_if_impl(std::move(__first), std::move(__last), __pred, __proj); + } + + template , _Proj>> _Pred> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + borrowed_iterator_t<_Rp> operator()(_Rp&& __r, _Pred __pred, _Proj __proj = {}) const { + return ranges::__find_if_impl(ranges::begin(__r), ranges::end(__r), __pred, __proj); + } +}; +} // namespace __find_if + +inline namespace __cpo { + inline constexpr auto find_if = __find_if::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_FIND_IF_H diff --git a/third_party/libcxx/__algorithm/ranges_find_if_not.h b/third_party/libcxx/__algorithm/ranges_find_if_not.h new file mode 100644 index 000000000..e60ee2b49 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_find_if_not.h @@ -0,0 +1,63 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_FIND_IF_NOT_H +#define _LIBCPP___ALGORITHM_RANGES_FIND_IF_NOT_H + +#include <__algorithm/ranges_find_if.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/forward.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __find_if_not { +struct __fn { + template _Sp, class _Proj = identity, + indirect_unary_predicate> _Pred> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + _Ip operator()(_Ip __first, _Sp __last, _Pred __pred, _Proj __proj = {}) const { + auto __pred2 = [&](auto&& __e) { return !std::invoke(__pred, std::forward(__e)); }; + return ranges::__find_if_impl(std::move(__first), std::move(__last), __pred2, __proj); + } + + template , _Proj>> _Pred> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + borrowed_iterator_t<_Rp> operator()(_Rp&& __r, _Pred __pred, _Proj __proj = {}) const { + auto __pred2 = [&](auto&& __e) { return !std::invoke(__pred, std::forward(__e)); }; + return ranges::__find_if_impl(ranges::begin(__r), ranges::end(__r), __pred2, __proj); + } +}; +} // namespace __find_if_not + +inline namespace __cpo { + inline constexpr auto find_if_not = __find_if_not::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_FIND_IF_NOT_H diff --git a/third_party/libcxx/__algorithm/ranges_for_each.h b/third_party/libcxx/__algorithm/ranges_for_each.h new file mode 100644 index 000000000..a72f77963 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_for_each.h @@ -0,0 +1,78 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_FOR_EACH_H +#define _LIBCPP___ALGORITHM_RANGES_FOR_EACH_H + +#include <__algorithm/in_fun_result.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__iterator/concepts.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { + +template +using for_each_result = in_fun_result<_Iter, _Func>; + +namespace __for_each { +struct __fn { +private: + template + _LIBCPP_HIDE_FROM_ABI constexpr static + for_each_result<_Iter, _Func> __for_each_impl(_Iter __first, _Sent __last, _Func& __func, _Proj& __proj) { + for (; __first != __last; ++__first) + std::invoke(__func, std::invoke(__proj, *__first)); + return {std::move(__first), std::move(__func)}; + } + +public: + template _Sent, + class _Proj = identity, + indirectly_unary_invocable> _Func> + _LIBCPP_HIDE_FROM_ABI constexpr + for_each_result<_Iter, _Func> operator()(_Iter __first, _Sent __last, _Func __func, _Proj __proj = {}) const { + return __for_each_impl(std::move(__first), std::move(__last), __func, __proj); + } + + template , _Proj>> _Func> + _LIBCPP_HIDE_FROM_ABI constexpr + for_each_result, _Func> operator()(_Range&& __range, + _Func __func, + _Proj __proj = {}) const { + return __for_each_impl(ranges::begin(__range), ranges::end(__range), __func, __proj); + } + +}; +} // namespace __for_each + +inline namespace __cpo { + inline constexpr auto for_each = __for_each::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_FOR_EACH_H diff --git a/third_party/libcxx/__algorithm/ranges_for_each_n.h b/third_party/libcxx/__algorithm/ranges_for_each_n.h new file mode 100644 index 000000000..daf0a5d82 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_for_each_n.h @@ -0,0 +1,66 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_FOR_EACH_N_H +#define _LIBCPP___ALGORITHM_RANGES_FOR_EACH_N_H + +#include <__algorithm/in_fun_result.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__iterator/concepts.h> +#include <__iterator/incrementable_traits.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/projected.h> +#include <__ranges/concepts.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { + +template +using for_each_n_result = in_fun_result<_Iter, _Func>; + +namespace __for_each_n { +struct __fn { + + template > _Func> + _LIBCPP_HIDE_FROM_ABI constexpr + for_each_n_result<_Iter, _Func> operator()(_Iter __first, + iter_difference_t<_Iter> __count, + _Func __func, + _Proj __proj = {}) const { + while (__count-- > 0) { + std::invoke(__func, std::invoke(__proj, *__first)); + ++__first; + } + return {std::move(__first), std::move(__func)}; + } + +}; +} // namespace __for_each_n + +inline namespace __cpo { + inline constexpr auto for_each_n = __for_each_n::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_FOR_EACH_N_H diff --git a/third_party/libcxx/__algorithm/ranges_generate.h b/third_party/libcxx/__algorithm/ranges_generate.h new file mode 100644 index 000000000..de0db1665 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_generate.h @@ -0,0 +1,73 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_GENERATE_H +#define _LIBCPP___ALGORITHM_RANGES_GENERATE_H + +#include <__concepts/constructible.h> +#include <__concepts/invocable.h> +#include <__config> +#include <__functional/invoke.h> +#include <__iterator/concepts.h> +#include <__iterator/iterator_traits.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __generate { + +struct __fn { + + template + _LIBCPP_HIDE_FROM_ABI constexpr + static _OutIter __generate_fn_impl(_OutIter __first, _Sent __last, _Func& __gen) { + for (; __first != __last; ++__first) { + *__first = __gen(); + } + + return __first; + } + + template _Sent, copy_constructible _Func> + requires invocable<_Func&> && indirectly_writable<_OutIter, invoke_result_t<_Func&>> + _LIBCPP_HIDE_FROM_ABI constexpr + _OutIter operator()(_OutIter __first, _Sent __last, _Func __gen) const { + return __generate_fn_impl(std::move(__first), std::move(__last), __gen); + } + + template + requires invocable<_Func&> && output_range<_Range, invoke_result_t<_Func&>> + _LIBCPP_HIDE_FROM_ABI constexpr + borrowed_iterator_t<_Range> operator()(_Range&& __range, _Func __gen) const { + return __generate_fn_impl(ranges::begin(__range), ranges::end(__range), __gen); + } + +}; + +} // namespace __generate + +inline namespace __cpo { + inline constexpr auto generate = __generate::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_GENERATE_H diff --git a/third_party/libcxx/__algorithm/ranges_generate_n.h b/third_party/libcxx/__algorithm/ranges_generate_n.h new file mode 100644 index 000000000..122cd8db7 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_generate_n.h @@ -0,0 +1,62 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_GENERATE_N_H +#define _LIBCPP___ALGORITHM_RANGES_GENERATE_N_H + +#include <__concepts/constructible.h> +#include <__concepts/invocable.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__iterator/concepts.h> +#include <__iterator/incrementable_traits.h> +#include <__iterator/iterator_traits.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __generate_n { + +struct __fn { + + template + requires invocable<_Func&> && indirectly_writable<_OutIter, invoke_result_t<_Func&>> + _LIBCPP_HIDE_FROM_ABI constexpr + _OutIter operator()(_OutIter __first, iter_difference_t<_OutIter> __n, _Func __gen) const { + for (; __n > 0; --__n) { + *__first = __gen(); + ++__first; + } + + return __first; + } + +}; + +} // namespace __generate_n + +inline namespace __cpo { + inline constexpr auto generate_n = __generate_n::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_GENERATE_N_H diff --git a/third_party/libcxx/__algorithm/ranges_includes.h b/third_party/libcxx/__algorithm/ranges_includes.h new file mode 100644 index 000000000..314a92377 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_includes.h @@ -0,0 +1,95 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_INCLUDES_H +#define _LIBCPP___ALGORITHM_RANGES_INCLUDES_H + +#include <__algorithm/includes.h> +#include <__algorithm/make_projected.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__utility/forward.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __includes { + +struct __fn { + template < + input_iterator _Iter1, + sentinel_for<_Iter1> _Sent1, + input_iterator _Iter2, + sentinel_for<_Iter2> _Sent2, + class _Proj1 = identity, + class _Proj2 = identity, + indirect_strict_weak_order, projected<_Iter2, _Proj2>> _Comp = ranges::less> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr bool operator()( + _Iter1 __first1, + _Sent1 __last1, + _Iter2 __first2, + _Sent2 __last2, + _Comp __comp = {}, + _Proj1 __proj1 = {}, + _Proj2 __proj2 = {}) const { + return std::__includes( + std::move(__first1), + std::move(__last1), + std::move(__first2), + std::move(__last2), + std::move(__comp), + std::move(__proj1), + std::move(__proj2)); + } + + template < + input_range _Range1, + input_range _Range2, + class _Proj1 = identity, + class _Proj2 = identity, + indirect_strict_weak_order, _Proj1>, projected, _Proj2>> + _Comp = ranges::less> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr bool operator()( + _Range1&& __range1, _Range2&& __range2, _Comp __comp = {}, _Proj1 __proj1 = {}, _Proj2 __proj2 = {}) const { + return std::__includes( + ranges::begin(__range1), + ranges::end(__range1), + ranges::begin(__range2), + ranges::end(__range2), + std::move(__comp), + std::move(__proj1), + std::move(__proj2)); + } +}; + +} // namespace __includes + +inline namespace __cpo { + inline constexpr auto includes = __includes::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_INCLUDES_H diff --git a/third_party/libcxx/__algorithm/ranges_inplace_merge.h b/third_party/libcxx/__algorithm/ranges_inplace_merge.h new file mode 100644 index 000000000..8f78975d7 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_inplace_merge.h @@ -0,0 +1,85 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_INPLACE_MERGE_H +#define _LIBCPP___ALGORITHM_RANGES_INPLACE_MERGE_H + +#include <__algorithm/inplace_merge.h> +#include <__algorithm/iterator_operations.h> +#include <__algorithm/make_projected.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/next.h> +#include <__iterator/projected.h> +#include <__iterator/sortable.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/forward.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __inplace_merge { + + struct __fn { + template + _LIBCPP_HIDE_FROM_ABI static constexpr auto + __inplace_merge_impl(_Iter __first, _Iter __middle, _Sent __last, _Comp&& __comp, _Proj&& __proj) { + auto __last_iter = ranges::next(__middle, __last); + std::__inplace_merge<_RangeAlgPolicy>( + std::move(__first), std::move(__middle), __last_iter, std::__make_projected(__comp, __proj)); + return __last_iter; + } + + template < + bidirectional_iterator _Iter, + sentinel_for<_Iter> _Sent, + class _Comp = ranges::less, + class _Proj = identity> + requires sortable<_Iter, _Comp, _Proj> + _LIBCPP_HIDE_FROM_ABI _Iter + operator()(_Iter __first, _Iter __middle, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { + return __inplace_merge_impl( + std::move(__first), std::move(__middle), std::move(__last), std::move(__comp), std::move(__proj)); + } + + template + requires sortable< + iterator_t<_Range>, + _Comp, + _Proj> _LIBCPP_HIDE_FROM_ABI borrowed_iterator_t<_Range> + operator()(_Range&& __range, iterator_t<_Range> __middle, _Comp __comp = {}, _Proj __proj = {}) const { + return __inplace_merge_impl( + ranges::begin(__range), std::move(__middle), ranges::end(__range), std::move(__comp), std::move(__proj)); + } + }; + +} // namespace __inplace_merge + +inline namespace __cpo { + inline constexpr auto inplace_merge = __inplace_merge::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_INPLACE_MERGE_H diff --git a/third_party/libcxx/__algorithm/ranges_is_heap.h b/third_party/libcxx/__algorithm/ranges_is_heap.h new file mode 100644 index 000000000..9c77e0c3f --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_is_heap.h @@ -0,0 +1,74 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_IS_HEAP_H +#define _LIBCPP___ALGORITHM_RANGES_IS_HEAP_H + +#include <__algorithm/is_heap_until.h> +#include <__algorithm/make_projected.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/next.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __is_heap { + +struct __fn { + + template + _LIBCPP_HIDE_FROM_ABI constexpr + static bool __is_heap_fn_impl(_Iter __first, _Sent __last, _Comp& __comp, _Proj& __proj) { + auto __last_iter = ranges::next(__first, __last); + auto&& __projected_comp = std::__make_projected(__comp, __proj); + + auto __result = std::__is_heap_until(std::move(__first), std::move(__last_iter), __projected_comp); + return __result == __last; + } + + template _Sent, class _Proj = identity, + indirect_strict_weak_order> _Comp = ranges::less> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + bool operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { + return __is_heap_fn_impl(std::move(__first), std::move(__last), __comp, __proj); + } + + template , _Proj>> _Comp = ranges::less> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + bool operator()(_Range&& __range, _Comp __comp = {}, _Proj __proj = {}) const { + return __is_heap_fn_impl(ranges::begin(__range), ranges::end(__range), __comp, __proj); + } +}; + +} // namespace __is_heap + +inline namespace __cpo { + inline constexpr auto is_heap = __is_heap::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_IS_HEAP_H diff --git a/third_party/libcxx/__algorithm/ranges_is_heap_until.h b/third_party/libcxx/__algorithm/ranges_is_heap_until.h new file mode 100644 index 000000000..3b1fec758 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_is_heap_until.h @@ -0,0 +1,75 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_IS_HEAP_UNTIL_H +#define _LIBCPP___ALGORITHM_RANGES_IS_HEAP_UNTIL_H + +#include <__algorithm/is_heap_until.h> +#include <__algorithm/make_projected.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/next.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __is_heap_until { + +struct __fn { + + template + _LIBCPP_HIDE_FROM_ABI constexpr + static _Iter __is_heap_until_fn_impl(_Iter __first, _Sent __last, _Comp& __comp, _Proj& __proj) { + auto __last_iter = ranges::next(__first, __last); + auto&& __projected_comp = std::__make_projected(__comp, __proj); + + return std::__is_heap_until(std::move(__first), std::move(__last_iter), __projected_comp); + } + + template _Sent, class _Proj = identity, + indirect_strict_weak_order> _Comp = ranges::less> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + _Iter operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { + return __is_heap_until_fn_impl(std::move(__first), std::move(__last), __comp, __proj); + } + + template , _Proj>> _Comp = ranges::less> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + borrowed_iterator_t<_Range> operator()(_Range&& __range, _Comp __comp = {}, _Proj __proj = {}) const { + return __is_heap_until_fn_impl(ranges::begin(__range), ranges::end(__range), __comp, __proj); + } + +}; + +} // namespace __is_heap_until + +inline namespace __cpo { + inline constexpr auto is_heap_until = __is_heap_until::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_IS_HEAP_UNTIL_H diff --git a/third_party/libcxx/__algorithm/ranges_is_partitioned.h b/third_party/libcxx/__algorithm/ranges_is_partitioned.h new file mode 100644 index 000000000..6782717cc --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_is_partitioned.h @@ -0,0 +1,81 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_IS_PARTITIONED_H +#define _LIBCPP___ALGORITHM_RANGES_IS_PARTITIONED_H + +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__iterator/concepts.h> +#include <__iterator/indirectly_comparable.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __is_partitioned { +struct __fn { + + template + _LIBCPP_HIDE_FROM_ABI constexpr static + bool __is_parititioned_impl(_Iter __first, _Sent __last, _Pred& __pred, _Proj& __proj) { + for (; __first != __last; ++__first) { + if (!std::invoke(__pred, std::invoke(__proj, *__first))) + break; + } + + if (__first == __last) + return true; + ++__first; + + for (; __first != __last; ++__first) { + if (std::invoke(__pred, std::invoke(__proj, *__first))) + return false; + } + + return true; + } + + template _Sent, + class _Proj = identity, + indirect_unary_predicate> _Pred> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + bool operator()(_Iter __first, _Sent __last, _Pred __pred, _Proj __proj = {}) const { + return __is_parititioned_impl(std::move(__first), std::move(__last), __pred, __proj); + } + + template , _Proj>> _Pred> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + bool operator()(_Range&& __range, _Pred __pred, _Proj __proj = {}) const { + return __is_parititioned_impl(ranges::begin(__range), ranges::end(__range), __pred, __proj); + } +}; +} // namespace __is_partitioned + +inline namespace __cpo { + inline constexpr auto is_partitioned = __is_partitioned::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_IS_PARTITIONED_H diff --git a/third_party/libcxx/__algorithm/ranges_is_permutation.h b/third_party/libcxx/__algorithm/ranges_is_permutation.h new file mode 100644 index 000000000..95a0a8251 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_is_permutation.h @@ -0,0 +1,89 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_IS_PERMUTATION_H +#define _LIBCPP___ALGORITHM_RANGES_IS_PERMUTATION_H + +#include <__algorithm/is_permutation.h> +#include <__algorithm/iterator_operations.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/distance.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __is_permutation { +struct __fn { + + template + _LIBCPP_HIDE_FROM_ABI constexpr static + bool __is_permutation_func_impl(_Iter1 __first1, _Sent1 __last1, _Iter2 __first2, _Sent2 __last2, + _Pred& __pred, _Proj1& __proj1, _Proj2& __proj2) { + return std::__is_permutation<_RangeAlgPolicy>( + std::move(__first1), std::move(__last1), std::move(__first2), std::move(__last2), + __pred, __proj1, __proj2); + } + + template _Sent1, + forward_iterator _Iter2, sentinel_for<_Iter2> _Sent2, + class _Proj1 = identity, + class _Proj2 = identity, + indirect_equivalence_relation, + projected<_Iter2, _Proj2>> _Pred = ranges::equal_to> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + bool operator()(_Iter1 __first1, _Sent1 __last1, _Iter2 __first2, _Sent2 __last2, + _Pred __pred = {}, _Proj1 __proj1 = {}, _Proj2 __proj2 = {}) const { + return __is_permutation_func_impl( + std::move(__first1), std::move(__last1), std::move(__first2), std::move(__last2), + __pred, __proj1, __proj2); + } + + template , _Proj1>, projected, _Proj2>> _Pred = ranges::equal_to> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + bool operator()(_Range1&& __range1, _Range2&& __range2, + _Pred __pred = {}, _Proj1 __proj1 = {}, _Proj2 __proj2 = {}) const { + if constexpr (sized_range<_Range1> && sized_range<_Range2>) { + if (ranges::distance(__range1) != ranges::distance(__range2)) + return false; + } + + return __is_permutation_func_impl( + ranges::begin(__range1), ranges::end(__range1), ranges::begin(__range2), ranges::end(__range2), + __pred, __proj1, __proj2); + } +}; +} // namespace __is_permutation + +inline namespace __cpo { + inline constexpr auto is_permutation = __is_permutation::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_IS_PERMUTATION_H diff --git a/third_party/libcxx/__algorithm/ranges_is_sorted.h b/third_party/libcxx/__algorithm/ranges_is_sorted.h new file mode 100644 index 000000000..50c97baa8 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_is_sorted.h @@ -0,0 +1,61 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP__ALGORITHM_RANGES_IS_SORTED_H +#define _LIBCPP__ALGORITHM_RANGES_IS_SORTED_H + +#include <__algorithm/ranges_is_sorted_until.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __is_sorted { +struct __fn { + template _Sent, + class _Proj = identity, + indirect_strict_weak_order> _Comp = ranges::less> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + bool operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { + return ranges::__is_sorted_until_impl(std::move(__first), __last, __comp, __proj) == __last; + } + + template , _Proj>> _Comp = ranges::less> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + bool operator()(_Range&& __range, _Comp __comp = {}, _Proj __proj = {}) const { + auto __last = ranges::end(__range); + return ranges::__is_sorted_until_impl(ranges::begin(__range), __last, __comp, __proj) == __last; + } +}; +} // namespace __is_sorted + +inline namespace __cpo { + inline constexpr auto is_sorted = __is_sorted::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP__ALGORITHM_RANGES_IS_SORTED_H diff --git a/third_party/libcxx/__algorithm/ranges_is_sorted_until.h b/third_party/libcxx/__algorithm/ranges_is_sorted_until.h new file mode 100644 index 000000000..f139d0391 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_is_sorted_until.h @@ -0,0 +1,76 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP__ALGORITHM_RANGES_IS_SORTED_UNTIL_H +#define _LIBCPP__ALGORITHM_RANGES_IS_SORTED_UNTIL_H + +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { + +template +_LIBCPP_HIDE_FROM_ABI constexpr +_Iter __is_sorted_until_impl(_Iter __first, _Sent __last, _Comp& __comp, _Proj& __proj) { + if (__first == __last) + return __first; + auto __i = __first; + while (++__i != __last) { + if (std::invoke(__comp, std::invoke(__proj, *__i), std::invoke(__proj, *__first))) + return __i; + __first = __i; + } + return __i; +} + +namespace __is_sorted_until { +struct __fn { + template _Sent, + class _Proj = identity, + indirect_strict_weak_order> _Comp = ranges::less> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + _Iter operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { + return ranges::__is_sorted_until_impl(std::move(__first), std::move(__last), __comp, __proj); + } + + template , _Proj>> _Comp = ranges::less> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + borrowed_iterator_t<_Range> operator()(_Range&& __range, _Comp __comp = {}, _Proj __proj = {}) const { + return ranges::__is_sorted_until_impl(ranges::begin(__range), ranges::end(__range), __comp, __proj); + } +}; +} // namespace __is_sorted_until + +inline namespace __cpo { + inline constexpr auto is_sorted_until = __is_sorted_until::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP__ALGORITHM_RANGES_IS_SORTED_UNTIL_H diff --git a/third_party/libcxx/__algorithm/ranges_iterator_concept.h b/third_party/libcxx/__algorithm/ranges_iterator_concept.h new file mode 100644 index 000000000..9a9203040 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_iterator_concept.h @@ -0,0 +1,51 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_ITERATOR_CONCEPT_H +#define _LIBCPP___ALGORITHM_RANGES_ITERATOR_CONCEPT_H + +#include <__config> +#include <__iterator/concepts.h> +#include <__iterator/iterator_traits.h> +#include <__type_traits/remove_cvref.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { + +template +consteval auto __get_iterator_concept() { + using _Iter = __remove_cvref_t<_IterMaybeQualified>; + + if constexpr (contiguous_iterator<_Iter>) + return contiguous_iterator_tag(); + else if constexpr (random_access_iterator<_Iter>) + return random_access_iterator_tag(); + else if constexpr (bidirectional_iterator<_Iter>) + return bidirectional_iterator_tag(); + else if constexpr (forward_iterator<_Iter>) + return forward_iterator_tag(); + else if constexpr (input_iterator<_Iter>) + return input_iterator_tag(); +} + +template +using __iterator_concept = decltype(__get_iterator_concept<_Iter>()); + +} // namespace ranges +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_ITERATOR_CONCEPT_H diff --git a/third_party/libcxx/__algorithm/ranges_lexicographical_compare.h b/third_party/libcxx/__algorithm/ranges_lexicographical_compare.h new file mode 100644 index 000000000..c51f4d7e5 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_lexicographical_compare.h @@ -0,0 +1,98 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_LEXICOGRAPHICAL_COMPARE_H +#define _LIBCPP___ALGORITHM_RANGES_LEXICOGRAPHICAL_COMPARE_H + +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __lexicographical_compare { +struct __fn { + + template + _LIBCPP_HIDE_FROM_ABI constexpr static + bool __lexicographical_compare_impl(_Iter1 __first1, _Sent1 __last1, + _Iter2 __first2, _Sent2 __last2, + _Comp& __comp, + _Proj1& __proj1, + _Proj2& __proj2) { + while (__first2 != __last2) { + if (__first1 == __last1 + || std::invoke(__comp, std::invoke(__proj1, *__first1), std::invoke(__proj2, *__first2))) + return true; + if (std::invoke(__comp, std::invoke(__proj2, *__first2), std::invoke(__proj1, *__first1))) + return false; + ++__first1; + ++__first2; + } + return false; + } + + template _Sent1, + input_iterator _Iter2, sentinel_for<_Iter2> _Sent2, + class _Proj1 = identity, + class _Proj2 = identity, + indirect_strict_weak_order, projected<_Iter2, _Proj2>> _Comp = ranges::less> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + bool operator()(_Iter1 __first1, _Sent1 __last1, + _Iter2 __first2, _Sent2 __last2, + _Comp __comp = {}, + _Proj1 __proj1 = {}, + _Proj2 __proj2 = {}) const { + return __lexicographical_compare_impl(std::move(__first1), std::move(__last1), + std::move(__first2), std::move(__last2), + __comp, + __proj1, + __proj2); + } + + template , _Proj1>, + projected, _Proj2>> _Comp = ranges::less> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + bool operator()(_Range1&& __range1, _Range2&& __range2, _Comp __comp = {}, _Proj1 __proj1 = {}, _Proj2 __proj2 = {}) const { + return __lexicographical_compare_impl(ranges::begin(__range1), ranges::end(__range1), + ranges::begin(__range2), ranges::end(__range2), + __comp, + __proj1, + __proj2); + } + +}; +} // namespace __lexicographical_compare + +inline namespace __cpo { + inline constexpr auto lexicographical_compare = __lexicographical_compare::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_LEXICOGRAPHICAL_COMPARE_H diff --git a/third_party/libcxx/__algorithm/ranges_lower_bound.h b/third_party/libcxx/__algorithm/ranges_lower_bound.h new file mode 100644 index 000000000..743563940 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_lower_bound.h @@ -0,0 +1,66 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_LOWER_BOUND_H +#define _LIBCPP___ALGORITHM_RANGES_LOWER_BOUND_H + +#include <__algorithm/iterator_operations.h> +#include <__algorithm/lower_bound.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/advance.h> +#include <__iterator/concepts.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { + +namespace __lower_bound { +struct __fn { + template _Sent, class _Type, class _Proj = identity, + indirect_strict_weak_order> _Comp = ranges::less> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + _Iter operator()(_Iter __first, _Sent __last, const _Type& __value, _Comp __comp = {}, _Proj __proj = {}) const { + return std::__lower_bound_impl<_RangeAlgPolicy>(__first, __last, __value, __comp, __proj); + } + + template , _Proj>> _Comp = ranges::less> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + borrowed_iterator_t<_Range> operator()(_Range&& __r, + const _Type& __value, + _Comp __comp = {}, + _Proj __proj = {}) const { + return std::__lower_bound_impl<_RangeAlgPolicy>(ranges::begin(__r), ranges::end(__r), __value, __comp, __proj); + } +}; +} // namespace __lower_bound + +inline namespace __cpo { + inline constexpr auto lower_bound = __lower_bound::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_LOWER_BOUND_H diff --git a/third_party/libcxx/__algorithm/ranges_make_heap.h b/third_party/libcxx/__algorithm/ranges_make_heap.h new file mode 100644 index 000000000..7f92fa310 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_make_heap.h @@ -0,0 +1,80 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_MAKE_HEAP_H +#define _LIBCPP___ALGORITHM_RANGES_MAKE_HEAP_H + +#include <__algorithm/iterator_operations.h> +#include <__algorithm/make_heap.h> +#include <__algorithm/make_projected.h> +#include <__concepts/same_as.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/next.h> +#include <__iterator/projected.h> +#include <__iterator/sortable.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/forward.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __make_heap { + +struct __fn { + template + _LIBCPP_HIDE_FROM_ABI constexpr static + _Iter __make_heap_fn_impl(_Iter __first, _Sent __last, _Comp& __comp, _Proj& __proj) { + auto __last_iter = ranges::next(__first, __last); + + auto&& __projected_comp = std::__make_projected(__comp, __proj); + std::__make_heap<_RangeAlgPolicy>(std::move(__first), __last_iter, __projected_comp); + + return __last_iter; + } + + template _Sent, class _Comp = ranges::less, class _Proj = identity> + requires sortable<_Iter, _Comp, _Proj> + _LIBCPP_HIDE_FROM_ABI constexpr + _Iter operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { + return __make_heap_fn_impl(std::move(__first), std::move(__last), __comp, __proj); + } + + template + requires sortable, _Comp, _Proj> + _LIBCPP_HIDE_FROM_ABI constexpr + borrowed_iterator_t<_Range> operator()(_Range&& __r, _Comp __comp = {}, _Proj __proj = {}) const { + return __make_heap_fn_impl(ranges::begin(__r), ranges::end(__r), __comp, __proj); + } +}; + +} // namespace __make_heap + +inline namespace __cpo { + inline constexpr auto make_heap = __make_heap::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_MAKE_HEAP_H diff --git a/third_party/libcxx/__algorithm/ranges_max.h b/third_party/libcxx/__algorithm/ranges_max.h new file mode 100644 index 000000000..2fd2970bb --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_max.h @@ -0,0 +1,97 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_MAX_H +#define _LIBCPP___ALGORITHM_RANGES_MAX_H + +#include <__algorithm/ranges_min_element.h> +#include <__assert> +#include <__concepts/copyable.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__type_traits/is_trivially_copyable.h> +#include <__utility/move.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __max { +struct __fn { + template > _Comp = ranges::less> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + const _Tp& operator()(_LIBCPP_LIFETIMEBOUND const _Tp& __a, + _LIBCPP_LIFETIMEBOUND const _Tp& __b, + _Comp __comp = {}, + _Proj __proj = {}) const { + return std::invoke(__comp, std::invoke(__proj, __a), std::invoke(__proj, __b)) ? __b : __a; + } + + template > _Comp = ranges::less> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + _Tp operator()(initializer_list<_Tp> __il, _Comp __comp = {}, _Proj __proj = {}) const { + _LIBCPP_ASSERT(__il.begin() != __il.end(), "initializer_list must contain at least one element"); + + auto __comp_lhs_rhs_swapped = [&](auto&& __lhs, auto&& __rhs) { return std::invoke(__comp, __rhs, __lhs); }; + return *ranges::__min_element_impl(__il.begin(), __il.end(), __comp_lhs_rhs_swapped, __proj); + } + + template , _Proj>> _Comp = ranges::less> + requires indirectly_copyable_storable, range_value_t<_Rp>*> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + range_value_t<_Rp> operator()(_Rp&& __r, _Comp __comp = {}, _Proj __proj = {}) const { + auto __first = ranges::begin(__r); + auto __last = ranges::end(__r); + + _LIBCPP_ASSERT(__first != __last, "range must contain at least one element"); + + if constexpr (forward_range<_Rp> && !__is_cheap_to_copy>) { + auto __comp_lhs_rhs_swapped = [&](auto&& __lhs, auto&& __rhs) { return std::invoke(__comp, __rhs, __lhs); }; + return *ranges::__min_element_impl(std::move(__first), std::move(__last), __comp_lhs_rhs_swapped, __proj); + } else { + range_value_t<_Rp> __result = *__first; + while (++__first != __last) { + if (std::invoke(__comp, std::invoke(__proj, __result), std::invoke(__proj, *__first))) + __result = *__first; + } + return __result; + } + } +}; +} // namespace __max + +inline namespace __cpo { + inline constexpr auto max = __max::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP_STD_VER >= 20 && + +#endif // _LIBCPP___ALGORITHM_RANGES_MAX_H diff --git a/third_party/libcxx/__algorithm/ranges_max_element.h b/third_party/libcxx/__algorithm/ranges_max_element.h new file mode 100644 index 000000000..39e86d3b9 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_max_element.h @@ -0,0 +1,61 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_MAX_ELEMENT_H +#define _LIBCPP___ALGORITHM_RANGES_MAX_ELEMENT_H + +#include <__algorithm/ranges_min_element.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __max_element { +struct __fn { + template _Sp, class _Proj = identity, + indirect_strict_weak_order> _Comp = ranges::less> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + _Ip operator()(_Ip __first, _Sp __last, _Comp __comp = {}, _Proj __proj = {}) const { + auto __comp_lhs_rhs_swapped = [&](auto&& __lhs, auto&& __rhs) { return std::invoke(__comp, __rhs, __lhs); }; + return ranges::__min_element_impl(__first, __last, __comp_lhs_rhs_swapped, __proj); + } + + template , _Proj>> _Comp = ranges::less> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + borrowed_iterator_t<_Rp> operator()(_Rp&& __r, _Comp __comp = {}, _Proj __proj = {}) const { + auto __comp_lhs_rhs_swapped = [&](auto&& __lhs, auto&& __rhs) { return std::invoke(__comp, __rhs, __lhs); }; + return ranges::__min_element_impl(ranges::begin(__r), ranges::end(__r), __comp_lhs_rhs_swapped, __proj); + } +}; +} // namespace __max_element + +inline namespace __cpo { + inline constexpr auto max_element = __max_element::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_MAX_ELEMENT_H diff --git a/third_party/libcxx/__algorithm/ranges_merge.h b/third_party/libcxx/__algorithm/ranges_merge.h new file mode 100644 index 000000000..c5797b0e7 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_merge.h @@ -0,0 +1,142 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_MERGE_H +#define _LIBCPP___ALGORITHM_RANGES_MERGE_H + +#include <__algorithm/in_in_out_result.h> +#include <__algorithm/ranges_copy.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/mergeable.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__type_traits/remove_cvref.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { + +template +using merge_result = in_in_out_result<_InIter1, _InIter2, _OutIter>; + +namespace __merge { + +template < + class _InIter1, + class _Sent1, + class _InIter2, + class _Sent2, + class _OutIter, + class _Comp, + class _Proj1, + class _Proj2> +_LIBCPP_HIDE_FROM_ABI constexpr merge_result<__remove_cvref_t<_InIter1>, __remove_cvref_t<_InIter2>, __remove_cvref_t<_OutIter>> +__merge_impl( + _InIter1&& __first1, + _Sent1&& __last1, + _InIter2&& __first2, + _Sent2&& __last2, + _OutIter&& __result, + _Comp&& __comp, + _Proj1&& __proj1, + _Proj2&& __proj2) { + for (; __first1 != __last1 && __first2 != __last2; ++__result) { + if (std::invoke(__comp, std::invoke(__proj2, *__first2), std::invoke(__proj1, *__first1))) { + *__result = *__first2; + ++__first2; + } else { + *__result = *__first1; + ++__first1; + } + } + auto __ret1 = ranges::copy(std::move(__first1), std::move(__last1), std::move(__result)); + auto __ret2 = ranges::copy(std::move(__first2), std::move(__last2), std::move(__ret1.out)); + return {std::move(__ret1.in), std::move(__ret2.in), std::move(__ret2.out)}; +} + +struct __fn { + template < + input_iterator _InIter1, + sentinel_for<_InIter1> _Sent1, + input_iterator _InIter2, + sentinel_for<_InIter2> _Sent2, + weakly_incrementable _OutIter, + class _Comp = less, + class _Proj1 = identity, + class _Proj2 = identity> + requires mergeable<_InIter1, _InIter2, _OutIter, _Comp, _Proj1, _Proj2> + _LIBCPP_HIDE_FROM_ABI constexpr merge_result<_InIter1, _InIter2, _OutIter> operator()( + _InIter1 __first1, + _Sent1 __last1, + _InIter2 __first2, + _Sent2 __last2, + _OutIter __result, + _Comp __comp = {}, + _Proj1 __proj1 = {}, + _Proj2 __proj2 = {}) const { + return __merge::__merge_impl(__first1, __last1, __first2, __last2, __result, __comp, __proj1, __proj2); + } + + template < + input_range _Range1, + input_range _Range2, + weakly_incrementable _OutIter, + class _Comp = less, + class _Proj1 = identity, + class _Proj2 = identity> + requires mergeable< + iterator_t<_Range1>, + iterator_t<_Range2>, + _OutIter, + _Comp, + _Proj1, + _Proj2> + _LIBCPP_HIDE_FROM_ABI constexpr merge_result, borrowed_iterator_t<_Range2>, _OutIter> + operator()( + _Range1&& __range1, + _Range2&& __range2, + _OutIter __result, + _Comp __comp = {}, + _Proj1 __proj1 = {}, + _Proj2 __proj2 = {}) const { + return __merge::__merge_impl( + ranges::begin(__range1), + ranges::end(__range1), + ranges::begin(__range2), + ranges::end(__range2), + __result, + __comp, + __proj1, + __proj2); + } +}; + +} // namespace __merge + +inline namespace __cpo { + inline constexpr auto merge = __merge::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_MERGE_H diff --git a/third_party/libcxx/__algorithm/ranges_min.h b/third_party/libcxx/__algorithm/ranges_min.h new file mode 100644 index 000000000..5e941a1db --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_min.h @@ -0,0 +1,91 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_MIN_H +#define _LIBCPP___ALGORITHM_RANGES_MIN_H + +#include <__algorithm/ranges_min_element.h> +#include <__assert> +#include <__concepts/copyable.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__type_traits/is_trivially_copyable.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __min { +struct __fn { + template > _Comp = ranges::less> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + const _Tp& operator()(_LIBCPP_LIFETIMEBOUND const _Tp& __a, + _LIBCPP_LIFETIMEBOUND const _Tp& __b, + _Comp __comp = {}, + _Proj __proj = {}) const { + return std::invoke(__comp, std::invoke(__proj, __b), std::invoke(__proj, __a)) ? __b : __a; + } + + template > _Comp = ranges::less> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + _Tp operator()(initializer_list<_Tp> __il, _Comp __comp = {}, _Proj __proj = {}) const { + _LIBCPP_ASSERT(__il.begin() != __il.end(), "initializer_list must contain at least one element"); + return *ranges::__min_element_impl(__il.begin(), __il.end(), __comp, __proj); + } + + template , _Proj>> _Comp = ranges::less> + requires indirectly_copyable_storable, range_value_t<_Rp>*> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + range_value_t<_Rp> operator()(_Rp&& __r, _Comp __comp = {}, _Proj __proj = {}) const { + auto __first = ranges::begin(__r); + auto __last = ranges::end(__r); + _LIBCPP_ASSERT(__first != __last, "range must contain at least one element"); + if constexpr (forward_range<_Rp> && !__is_cheap_to_copy>) { + return *ranges::__min_element_impl(__first, __last, __comp, __proj); + } else { + range_value_t<_Rp> __result = *__first; + while (++__first != __last) { + if (std::invoke(__comp, std::invoke(__proj, *__first), std::invoke(__proj, __result))) + __result = *__first; + } + return __result; + } + } +}; +} // namespace __min + +inline namespace __cpo { + inline constexpr auto min = __min::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP_STD_VER >= 20 && + +#endif // _LIBCPP___ALGORITHM_RANGES_MIN_H diff --git a/third_party/libcxx/__algorithm/ranges_min_element.h b/third_party/libcxx/__algorithm/ranges_min_element.h new file mode 100644 index 000000000..4c58adb31 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_min_element.h @@ -0,0 +1,74 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_MIN_ELEMENT_H +#define _LIBCPP___ALGORITHM_RANGES_MIN_ELEMENT_H + +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/forward.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { + +// TODO(ranges): `ranges::min_element` can now simply delegate to `std::__min_element`. +template +_LIBCPP_HIDE_FROM_ABI constexpr +_Ip __min_element_impl(_Ip __first, _Sp __last, _Comp& __comp, _Proj& __proj) { + if (__first == __last) + return __first; + + _Ip __i = __first; + while (++__i != __last) + if (std::invoke(__comp, std::invoke(__proj, *__i), std::invoke(__proj, *__first))) + __first = __i; + return __first; +} + +namespace __min_element { +struct __fn { + template _Sp, class _Proj = identity, + indirect_strict_weak_order> _Comp = ranges::less> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + _Ip operator()(_Ip __first, _Sp __last, _Comp __comp = {}, _Proj __proj = {}) const { + return ranges::__min_element_impl(__first, __last, __comp, __proj); + } + + template , _Proj>> _Comp = ranges::less> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + borrowed_iterator_t<_Rp> operator()(_Rp&& __r, _Comp __comp = {}, _Proj __proj = {}) const { + return ranges::__min_element_impl(ranges::begin(__r), ranges::end(__r), __comp, __proj); + } +}; +} // namespace __min_element + +inline namespace __cpo { + inline constexpr auto min_element = __min_element::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_MIN_ELEMENT_H diff --git a/third_party/libcxx/__algorithm/ranges_minmax.h b/third_party/libcxx/__algorithm/ranges_minmax.h new file mode 100644 index 000000000..2a966bbee --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_minmax.h @@ -0,0 +1,155 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_MINMAX_H +#define _LIBCPP___ALGORITHM_RANGES_MINMAX_H + +#include <__algorithm/min_max_result.h> +#include <__algorithm/minmax_element.h> +#include <__assert> +#include <__concepts/copyable.h> +#include <__concepts/same_as.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/next.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__type_traits/is_reference.h> +#include <__type_traits/remove_cvref.h> +#include <__utility/forward.h> +#include <__utility/move.h> +#include <__utility/pair.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +template +using minmax_result = min_max_result<_T1>; + +namespace __minmax { +struct __fn { + template > _Comp = ranges::less> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr ranges::minmax_result + operator()(_LIBCPP_LIFETIMEBOUND const _Type& __a, + _LIBCPP_LIFETIMEBOUND const _Type& __b, + _Comp __comp = {}, + _Proj __proj = {}) const { + if (std::invoke(__comp, std::invoke(__proj, __b), std::invoke(__proj, __a))) + return {__b, __a}; + return {__a, __b}; + } + + template > _Comp = ranges::less> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + ranges::minmax_result<_Type> operator()(initializer_list<_Type> __il, _Comp __comp = {}, _Proj __proj = {}) const { + _LIBCPP_ASSERT(__il.begin() != __il.end(), "initializer_list has to contain at least one element"); + auto __iters = std::__minmax_element_impl(__il.begin(), __il.end(), __comp, __proj); + return ranges::minmax_result<_Type> { *__iters.first, *__iters.second }; + } + + template , _Proj>> _Comp = ranges::less> + requires indirectly_copyable_storable, range_value_t<_Range>*> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + ranges::minmax_result> operator()(_Range&& __r, _Comp __comp = {}, _Proj __proj = {}) const { + auto __first = ranges::begin(__r); + auto __last = ranges::end(__r); + using _ValueT = range_value_t<_Range>; + + _LIBCPP_ASSERT(__first != __last, "range has to contain at least one element"); + + if constexpr (forward_range<_Range>) { + // Special-case the one element case. Avoid repeatedly initializing objects from the result of an iterator + // dereference when doing so might not be idempotent. The `if constexpr` avoids the extra branch in cases where + // it's not needed. + if constexpr (!same_as>, _ValueT> || + is_rvalue_reference_v>) { + if (ranges::next(__first) == __last) { + // During initialization, members are allowed to refer to already initialized members + // (see http://eel.is/c++draft/dcl.init.aggr#6) + minmax_result<_ValueT> __result = {*__first, __result.min}; + return __result; + } + } + auto __result = std::__minmax_element_impl(__first, __last, __comp, __proj); + return {*__result.first, *__result.second}; + } else { + // input_iterators can't be copied, so the implementation for input_iterators has to store + // the values instead of a pointer to the correct values + auto __less = [&](auto&& __a, auto&& __b) -> bool { + return std::invoke(__comp, std::invoke(__proj, std::forward(__a)), + std::invoke(__proj, std::forward(__b))); + }; + + // During initialization, members are allowed to refer to already initialized members + // (see http://eel.is/c++draft/dcl.init.aggr#6) + ranges::minmax_result<_ValueT> __result = {*__first, __result.min}; + if (__first == __last || ++__first == __last) + return __result; + + if (__less(*__first, __result.min)) + __result.min = *__first; + else + __result.max = *__first; + + while (++__first != __last) { + _ValueT __i = *__first; + if (++__first == __last) { + if (__less(__i, __result.min)) + __result.min = __i; + else if (!__less(__i, __result.max)) + __result.max = __i; + return __result; + } + + if (__less(*__first, __i)) { + if (__less(*__first, __result.min)) + __result.min = *__first; + if (!__less(__i, __result.max)) + __result.max = std::move(__i); + } else { + if (__less(__i, __result.min)) + __result.min = std::move(__i); + if (!__less(*__first, __result.max)) + __result.max = *__first; + } + } + return __result; + } + } +}; +} // namespace __minmax + +inline namespace __cpo { + inline constexpr auto minmax = __minmax::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_MINMAX_H diff --git a/third_party/libcxx/__algorithm/ranges_minmax_element.h b/third_party/libcxx/__algorithm/ranges_minmax_element.h new file mode 100644 index 000000000..cbf350557 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_minmax_element.h @@ -0,0 +1,71 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_MINMAX_ELEMENT_H +#define _LIBCPP___ALGORITHM_RANGES_MINMAX_ELEMENT_H + +#include <__algorithm/min_max_result.h> +#include <__algorithm/minmax_element.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/forward.h> +#include <__utility/move.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { + +template +using minmax_element_result = min_max_result<_T1>; + +namespace __minmax_element { +struct __fn { + template _Sp, class _Proj = identity, + indirect_strict_weak_order> _Comp = ranges::less> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + ranges::minmax_element_result<_Ip> operator()(_Ip __first, _Sp __last, _Comp __comp = {}, _Proj __proj = {}) const { + auto __ret = std::__minmax_element_impl(std::move(__first), std::move(__last), __comp, __proj); + return {__ret.first, __ret.second}; + } + + template , _Proj>> _Comp = ranges::less> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + ranges::minmax_element_result> + operator()(_Rp&& __r, _Comp __comp = {}, _Proj __proj = {}) const { + auto __ret = std::__minmax_element_impl(ranges::begin(__r), ranges::end(__r), __comp, __proj); + return {__ret.first, __ret.second}; + } +}; +} // namespace __minmax_element + +inline namespace __cpo { + inline constexpr auto minmax_element = __minmax_element::__fn{}; +} // namespace __cpo + +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_MINMAX_H diff --git a/third_party/libcxx/__algorithm/ranges_mismatch.h b/third_party/libcxx/__algorithm/ranges_mismatch.h new file mode 100644 index 000000000..098c4151c --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_mismatch.h @@ -0,0 +1,85 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_MISMATCH_H +#define _LIBCPP___ALGORITHM_RANGES_MISMATCH_H + +#include <__algorithm/in_in_result.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/indirectly_comparable.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +namespace ranges { + +template +using mismatch_result = in_in_result<_I1, _I2>; + +namespace __mismatch { +struct __fn { + template + static _LIBCPP_HIDE_FROM_ABI constexpr + mismatch_result<_I1, _I2> + __go(_I1 __first1, _S1 __last1, _I2 __first2, _S2 __last2, + _Pred& __pred, _Proj1& __proj1, _Proj2& __proj2) { + while (__first1 != __last1 && __first2 != __last2) { + if (!std::invoke(__pred, std::invoke(__proj1, *__first1), std::invoke(__proj2, *__first2))) + break; + ++__first1; + ++__first2; + } + return {std::move(__first1), std::move(__first2)}; + } + + template _S1, + input_iterator _I2, sentinel_for<_I2> _S2, + class _Pred = ranges::equal_to, class _Proj1 = identity, class _Proj2 = identity> + requires indirectly_comparable<_I1, _I2, _Pred, _Proj1, _Proj2> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + mismatch_result<_I1, _I2> operator()(_I1 __first1, _S1 __last1, _I2 __first2, _S2 __last2, + _Pred __pred = {}, _Proj1 __proj1 = {}, _Proj2 __proj2 = {}) const { + return __go(std::move(__first1), __last1, std::move(__first2), __last2, __pred, __proj1, __proj2); + } + + template + requires indirectly_comparable, iterator_t<_R2>, _Pred, _Proj1, _Proj2> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + mismatch_result, borrowed_iterator_t<_R2>> + operator()(_R1&& __r1, _R2&& __r2, _Pred __pred = {}, _Proj1 __proj1 = {}, _Proj2 __proj2 = {}) const { + return __go(ranges::begin(__r1), ranges::end(__r1), ranges::begin(__r2), ranges::end(__r2), + __pred, __proj1, __proj2); + } +}; +} // namespace __mismatch + +inline namespace __cpo { + constexpr inline auto mismatch = __mismatch::__fn{}; +} // namespace __cpo +} // namespace ranges + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_RANGES_MISMATCH_H diff --git a/third_party/libcxx/__algorithm/ranges_move.h b/third_party/libcxx/__algorithm/ranges_move.h new file mode 100644 index 000000000..5e06e903f --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_move.h @@ -0,0 +1,71 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_MOVE_H +#define _LIBCPP___ALGORITHM_RANGES_MOVE_H + +#include <__algorithm/in_out_result.h> +#include <__algorithm/iterator_operations.h> +#include <__algorithm/move.h> +#include <__config> +#include <__iterator/concepts.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { + +template +using move_result = in_out_result<_InIter, _OutIter>; + +namespace __move { +struct __fn { + + template + _LIBCPP_HIDE_FROM_ABI constexpr static + move_result<_InIter, _OutIter> __move_impl(_InIter __first, _Sent __last, _OutIter __result) { + auto __ret = std::__move<_RangeAlgPolicy>(std::move(__first), std::move(__last), std::move(__result)); + return {std::move(__ret.first), std::move(__ret.second)}; + } + + template _Sent, weakly_incrementable _OutIter> + requires indirectly_movable<_InIter, _OutIter> + _LIBCPP_HIDE_FROM_ABI constexpr + move_result<_InIter, _OutIter> operator()(_InIter __first, _Sent __last, _OutIter __result) const { + return __move_impl(std::move(__first), std::move(__last), std::move(__result)); + } + + template + requires indirectly_movable, _OutIter> + _LIBCPP_HIDE_FROM_ABI constexpr + move_result, _OutIter> operator()(_Range&& __range, _OutIter __result) const { + return __move_impl(ranges::begin(__range), ranges::end(__range), std::move(__result)); + } + +}; +} // namespace __move + +inline namespace __cpo { + inline constexpr auto move = __move::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_MOVE_H diff --git a/third_party/libcxx/__algorithm/ranges_move_backward.h b/third_party/libcxx/__algorithm/ranges_move_backward.h new file mode 100644 index 000000000..95c2c6612 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_move_backward.h @@ -0,0 +1,73 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_MOVE_BACKWARD_H +#define _LIBCPP___ALGORITHM_RANGES_MOVE_BACKWARD_H + +#include <__algorithm/in_out_result.h> +#include <__algorithm/iterator_operations.h> +#include <__algorithm/move_backward.h> +#include <__config> +#include <__iterator/concepts.h> +#include <__iterator/iter_move.h> +#include <__iterator/next.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { + +template +using move_backward_result = in_out_result<_InIter, _OutIter>; + +namespace __move_backward { +struct __fn { + + template + _LIBCPP_HIDE_FROM_ABI constexpr static + move_backward_result<_InIter, _OutIter> __move_backward_impl(_InIter __first, _Sent __last, _OutIter __result) { + auto __ret = std::__move_backward<_RangeAlgPolicy>(std::move(__first), std::move(__last), std::move(__result)); + return {std::move(__ret.first), std::move(__ret.second)}; + } + + template _Sent, bidirectional_iterator _OutIter> + requires indirectly_movable<_InIter, _OutIter> + _LIBCPP_HIDE_FROM_ABI constexpr + move_backward_result<_InIter, _OutIter> operator()(_InIter __first, _Sent __last, _OutIter __result) const { + return __move_backward_impl(std::move(__first), std::move(__last), std::move(__result)); + } + + template + requires indirectly_movable, _Iter> + _LIBCPP_HIDE_FROM_ABI constexpr + move_backward_result, _Iter> operator()(_Range&& __range, _Iter __result) const { + return __move_backward_impl(ranges::begin(__range), ranges::end(__range), std::move(__result)); + } + +}; +} // namespace __move_backward + +inline namespace __cpo { + inline constexpr auto move_backward = __move_backward::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_MOVE_BACKWARD_H diff --git a/third_party/libcxx/__algorithm/ranges_next_permutation.h b/third_party/libcxx/__algorithm/ranges_next_permutation.h new file mode 100644 index 000000000..9ebab3ea7 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_next_permutation.h @@ -0,0 +1,73 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_NEXT_PERMUTATION_H +#define _LIBCPP___ALGORITHM_RANGES_NEXT_PERMUTATION_H + +#include <__algorithm/in_found_result.h> +#include <__algorithm/iterator_operations.h> +#include <__algorithm/make_projected.h> +#include <__algorithm/next_permutation.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/sortable.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/move.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { + +template +using next_permutation_result = in_found_result<_InIter>; + +namespace __next_permutation { + +struct __fn { + template _Sent, class _Comp = ranges::less, class _Proj = identity> + requires sortable<_Iter, _Comp, _Proj> + _LIBCPP_HIDE_FROM_ABI constexpr next_permutation_result<_Iter> + operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { + auto __result = std::__next_permutation<_RangeAlgPolicy>( + std::move(__first), std::move(__last), std::__make_projected(__comp, __proj)); + return {std::move(__result.first), std::move(__result.second)}; + } + + template + requires sortable, _Comp, _Proj> + _LIBCPP_HIDE_FROM_ABI constexpr next_permutation_result> + operator()(_Range&& __range, _Comp __comp = {}, _Proj __proj = {}) const { + auto __result = std::__next_permutation<_RangeAlgPolicy>( + ranges::begin(__range), ranges::end(__range), std::__make_projected(__comp, __proj)); + return {std::move(__result.first), std::move(__result.second)}; + } +}; + +} // namespace __next_permutation + +inline namespace __cpo { +constexpr inline auto next_permutation = __next_permutation::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_NEXT_PERMUTATION_H diff --git a/third_party/libcxx/__algorithm/ranges_none_of.h b/third_party/libcxx/__algorithm/ranges_none_of.h new file mode 100644 index 000000000..39940adbb --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_none_of.h @@ -0,0 +1,68 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_NONE_OF_H +#define _LIBCPP___ALGORITHM_RANGES_NONE_OF_H + +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__iterator/concepts.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __none_of { +struct __fn { + + template + _LIBCPP_HIDE_FROM_ABI constexpr static + bool __none_of_impl(_Iter __first, _Sent __last, _Pred& __pred, _Proj& __proj) { + for (; __first != __last; ++__first) { + if (std::invoke(__pred, std::invoke(__proj, *__first))) + return false; + } + return true; + } + + template _Sent, class _Proj = identity, + indirect_unary_predicate> _Pred> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + bool operator()(_Iter __first, _Sent __last, _Pred __pred = {}, _Proj __proj = {}) const { + return __none_of_impl(std::move(__first), std::move(__last), __pred, __proj); + } + + template , _Proj>> _Pred> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + bool operator()(_Range&& __range, _Pred __pred, _Proj __proj = {}) const { + return __none_of_impl(ranges::begin(__range), ranges::end(__range), __pred, __proj); + } +}; +} // namespace __none_of + +inline namespace __cpo { + inline constexpr auto none_of = __none_of::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_NONE_OF_H diff --git a/third_party/libcxx/__algorithm/ranges_nth_element.h b/third_party/libcxx/__algorithm/ranges_nth_element.h new file mode 100644 index 000000000..96bf33b07 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_nth_element.h @@ -0,0 +1,80 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_NTH_ELEMENT_H +#define _LIBCPP___ALGORITHM_RANGES_NTH_ELEMENT_H + +#include <__algorithm/iterator_operations.h> +#include <__algorithm/make_projected.h> +#include <__algorithm/nth_element.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/next.h> +#include <__iterator/projected.h> +#include <__iterator/sortable.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/forward.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __nth_element { + +struct __fn { + template + _LIBCPP_HIDE_FROM_ABI constexpr static + _Iter __nth_element_fn_impl(_Iter __first, _Iter __nth, _Sent __last, _Comp& __comp, _Proj& __proj) { + auto __last_iter = ranges::next(__first, __last); + + auto&& __projected_comp = std::__make_projected(__comp, __proj); + std::__nth_element_impl<_RangeAlgPolicy>(std::move(__first), std::move(__nth), __last_iter, __projected_comp); + + return __last_iter; + } + + template _Sent, class _Comp = ranges::less, class _Proj = identity> + requires sortable<_Iter, _Comp, _Proj> + _LIBCPP_HIDE_FROM_ABI constexpr + _Iter operator()(_Iter __first, _Iter __nth, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { + return __nth_element_fn_impl(std::move(__first), std::move(__nth), std::move(__last), __comp, __proj); + } + + template + requires sortable, _Comp, _Proj> + _LIBCPP_HIDE_FROM_ABI constexpr + borrowed_iterator_t<_Range> operator()(_Range&& __r, iterator_t<_Range> __nth, _Comp __comp = {}, + _Proj __proj = {}) const { + return __nth_element_fn_impl(ranges::begin(__r), std::move(__nth), ranges::end(__r), __comp, __proj); + } +}; + +} // namespace __nth_element + +inline namespace __cpo { + inline constexpr auto nth_element = __nth_element::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_NTH_ELEMENT_H diff --git a/third_party/libcxx/__algorithm/ranges_partial_sort.h b/third_party/libcxx/__algorithm/ranges_partial_sort.h new file mode 100644 index 000000000..4562c3544 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_partial_sort.h @@ -0,0 +1,78 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_PARTIAL_SORT_H +#define _LIBCPP___ALGORITHM_RANGES_PARTIAL_SORT_H + +#include <__algorithm/iterator_operations.h> +#include <__algorithm/make_projected.h> +#include <__algorithm/partial_sort.h> +#include <__concepts/same_as.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/next.h> +#include <__iterator/projected.h> +#include <__iterator/sortable.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/forward.h> +#include <__utility/move.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __partial_sort { + +struct __fn { + template + _LIBCPP_HIDE_FROM_ABI constexpr static + _Iter __partial_sort_fn_impl(_Iter __first, _Iter __middle, _Sent __last, _Comp& __comp, _Proj& __proj) { + auto&& __projected_comp = std::__make_projected(__comp, __proj); + return std::__partial_sort<_RangeAlgPolicy>(std::move(__first), std::move(__middle), __last, __projected_comp); + } + + template _Sent, class _Comp = ranges::less, class _Proj = identity> + requires sortable<_Iter, _Comp, _Proj> + _LIBCPP_HIDE_FROM_ABI constexpr + _Iter operator()(_Iter __first, _Iter __middle, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { + return __partial_sort_fn_impl(std::move(__first), std::move(__middle), std::move(__last), __comp, __proj); + } + + template + requires sortable, _Comp, _Proj> + _LIBCPP_HIDE_FROM_ABI constexpr + borrowed_iterator_t<_Range> operator()(_Range&& __r, iterator_t<_Range> __middle, _Comp __comp = {}, + _Proj __proj = {}) const { + return __partial_sort_fn_impl(ranges::begin(__r), std::move(__middle), ranges::end(__r), __comp, __proj); + } +}; + +} // namespace __partial_sort + +inline namespace __cpo { + inline constexpr auto partial_sort = __partial_sort::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_PARTIAL_SORT_H diff --git a/third_party/libcxx/__algorithm/ranges_partial_sort_copy.h b/third_party/libcxx/__algorithm/ranges_partial_sort_copy.h new file mode 100644 index 000000000..5401a374e --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_partial_sort_copy.h @@ -0,0 +1,92 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_PARTIAL_SORT_COPY_H +#define _LIBCPP___ALGORITHM_RANGES_PARTIAL_SORT_COPY_H + +#include <__algorithm/in_out_result.h> +#include <__algorithm/iterator_operations.h> +#include <__algorithm/make_projected.h> +#include <__algorithm/partial_sort_copy.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/projected.h> +#include <__iterator/sortable.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/move.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { + +template +using partial_sort_copy_result = in_out_result<_InIter, _OutIter>; + +namespace __partial_sort_copy { + +struct __fn { + + template _Sent1, + random_access_iterator _Iter2, sentinel_for<_Iter2> _Sent2, + class _Comp = ranges::less, class _Proj1 = identity, class _Proj2 = identity> + requires indirectly_copyable<_Iter1, _Iter2> && sortable<_Iter2, _Comp, _Proj2> && + indirect_strict_weak_order<_Comp, projected<_Iter1, _Proj1>, projected<_Iter2, _Proj2>> + _LIBCPP_HIDE_FROM_ABI constexpr + partial_sort_copy_result<_Iter1, _Iter2> + operator()(_Iter1 __first, _Sent1 __last, _Iter2 __result_first, _Sent2 __result_last, + _Comp __comp = {}, _Proj1 __proj1 = {}, _Proj2 __proj2 = {}) const { + auto __result = std::__partial_sort_copy<_RangeAlgPolicy>( + std::move(__first), std::move(__last), std::move(__result_first), std::move(__result_last), + __comp, __proj1, __proj2 + ); + return {std::move(__result.first), std::move(__result.second)}; + } + + template + requires indirectly_copyable, iterator_t<_Range2>> && + sortable, _Comp, _Proj2> && + indirect_strict_weak_order<_Comp, projected, _Proj1>, + projected, _Proj2>> + _LIBCPP_HIDE_FROM_ABI constexpr + partial_sort_copy_result, borrowed_iterator_t<_Range2>> + operator()(_Range1&& __range, _Range2&& __result_range, _Comp __comp = {}, + _Proj1 __proj1 = {}, _Proj2 __proj2 = {}) const { + auto __result = std::__partial_sort_copy<_RangeAlgPolicy>( + ranges::begin(__range), ranges::end(__range), ranges::begin(__result_range), ranges::end(__result_range), + __comp, __proj1, __proj2 + ); + return {std::move(__result.first), std::move(__result.second)}; + } + +}; + +} // namespace __partial_sort_copy + +inline namespace __cpo { + inline constexpr auto partial_sort_copy = __partial_sort_copy::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_PARTIAL_SORT_COPY_H diff --git a/third_party/libcxx/__algorithm/ranges_partition.h b/third_party/libcxx/__algorithm/ranges_partition.h new file mode 100644 index 000000000..de839de12 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_partition.h @@ -0,0 +1,82 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_PARTITION_H +#define _LIBCPP___ALGORITHM_RANGES_PARTITION_H + +#include <__algorithm/iterator_operations.h> +#include <__algorithm/make_projected.h> +#include <__algorithm/partition.h> +#include <__algorithm/ranges_iterator_concept.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/permutable.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/subrange.h> +#include <__utility/forward.h> +#include <__utility/move.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __partition { + +struct __fn { + + template + _LIBCPP_HIDE_FROM_ABI static constexpr + subrange<__remove_cvref_t<_Iter>> __partition_fn_impl(_Iter&& __first, _Sent&& __last, _Pred&& __pred, _Proj&& __proj) { + auto&& __projected_pred = std::__make_projected(__pred, __proj); + auto __result = std::__partition<_RangeAlgPolicy>( + std::move(__first), std::move(__last), __projected_pred, __iterator_concept<_Iter>()); + + return {std::move(__result.first), std::move(__result.second)}; + } + + template _Sent, class _Proj = identity, + indirect_unary_predicate> _Pred> + _LIBCPP_HIDE_FROM_ABI constexpr + subrange<_Iter> operator()(_Iter __first, _Sent __last, _Pred __pred, _Proj __proj = {}) const { + return __partition_fn_impl(__first, __last, __pred, __proj); + } + + template , _Proj>> _Pred> + requires permutable> + _LIBCPP_HIDE_FROM_ABI constexpr + borrowed_subrange_t<_Range> operator()(_Range&& __range, _Pred __pred, _Proj __proj = {}) const { + return __partition_fn_impl(ranges::begin(__range), ranges::end(__range), __pred, __proj); + } + +}; + +} // namespace __partition + +inline namespace __cpo { + inline constexpr auto partition = __partition::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_PARTITION_H diff --git a/third_party/libcxx/__algorithm/ranges_partition_copy.h b/third_party/libcxx/__algorithm/ranges_partition_copy.h new file mode 100644 index 000000000..e398387bf --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_partition_copy.h @@ -0,0 +1,98 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_PARTITION_COPY_H +#define _LIBCPP___ALGORITHM_RANGES_PARTITION_COPY_H + +#include <__algorithm/in_out_out_result.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__iterator/concepts.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__type_traits/remove_cvref.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { + +template +using partition_copy_result = in_out_out_result<_InIter, _OutIter1, _OutIter2>; + +namespace __partition_copy { + +struct __fn { + + // TODO(ranges): delegate to the classic algorithm. + template + _LIBCPP_HIDE_FROM_ABI constexpr + static partition_copy_result< + __remove_cvref_t<_InIter>, __remove_cvref_t<_OutIter1>, __remove_cvref_t<_OutIter2> + > __partition_copy_fn_impl( _InIter&& __first, _Sent&& __last, _OutIter1&& __out_true, _OutIter2&& __out_false, + _Pred& __pred, _Proj& __proj) { + for (; __first != __last; ++__first) { + if (std::invoke(__pred, std::invoke(__proj, *__first))) { + *__out_true = *__first; + ++__out_true; + + } else { + *__out_false = *__first; + ++__out_false; + } + } + + return {std::move(__first), std::move(__out_true), std::move(__out_false)}; + } + + template _Sent, + weakly_incrementable _OutIter1, weakly_incrementable _OutIter2, + class _Proj = identity, indirect_unary_predicate> _Pred> + requires indirectly_copyable<_InIter, _OutIter1> && indirectly_copyable<_InIter, _OutIter2> + _LIBCPP_HIDE_FROM_ABI constexpr + partition_copy_result<_InIter, _OutIter1, _OutIter2> + operator()(_InIter __first, _Sent __last, _OutIter1 __out_true, _OutIter2 __out_false, + _Pred __pred, _Proj __proj = {}) const { + return __partition_copy_fn_impl( + std::move(__first), std::move(__last), std::move(__out_true), std::move(__out_false), __pred, __proj); + } + + template , _Proj>> _Pred> + requires indirectly_copyable, _OutIter1> && indirectly_copyable, _OutIter2> + _LIBCPP_HIDE_FROM_ABI constexpr + partition_copy_result, _OutIter1, _OutIter2> + operator()(_Range&& __range, _OutIter1 __out_true, _OutIter2 __out_false, _Pred __pred, _Proj __proj = {}) const { + return __partition_copy_fn_impl( + ranges::begin(__range), ranges::end(__range), std::move(__out_true), std::move(__out_false), __pred, __proj); + } + +}; + +} // namespace __partition_copy + +inline namespace __cpo { + inline constexpr auto partition_copy = __partition_copy::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_PARTITION_COPY_H diff --git a/third_party/libcxx/__algorithm/ranges_partition_point.h b/third_party/libcxx/__algorithm/ranges_partition_point.h new file mode 100644 index 000000000..129ebb6c6 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_partition_point.h @@ -0,0 +1,88 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_PARTITION_POINT_H +#define _LIBCPP___ALGORITHM_RANGES_PARTITION_POINT_H + +#include <__algorithm/half_positive.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__iterator/concepts.h> +#include <__iterator/distance.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/next.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __partition_point { + +struct __fn { + + // TODO(ranges): delegate to the classic algorithm. + template + _LIBCPP_HIDE_FROM_ABI constexpr + static _Iter __partition_point_fn_impl(_Iter&& __first, _Sent&& __last, _Pred& __pred, _Proj& __proj) { + auto __len = ranges::distance(__first, __last); + + while (__len != 0) { + auto __half_len = std::__half_positive(__len); + auto __mid = ranges::next(__first, __half_len); + + if (std::invoke(__pred, std::invoke(__proj, *__mid))) { + __first = ++__mid; + __len -= __half_len + 1; + + } else { + __len = __half_len; + } + } + + return __first; + } + + template _Sent, class _Proj = identity, + indirect_unary_predicate> _Pred> + _LIBCPP_HIDE_FROM_ABI constexpr + _Iter operator()(_Iter __first, _Sent __last, _Pred __pred, _Proj __proj = {}) const { + return __partition_point_fn_impl(std::move(__first), std::move(__last), __pred, __proj); + } + + template , _Proj>> _Pred> + _LIBCPP_HIDE_FROM_ABI constexpr + borrowed_iterator_t<_Range> operator()(_Range&& __range, _Pred __pred, _Proj __proj = {}) const { + return __partition_point_fn_impl(ranges::begin(__range), ranges::end(__range), __pred, __proj); + } + +}; + +} // namespace __partition_point + +inline namespace __cpo { + inline constexpr auto partition_point = __partition_point::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_PARTITION_POINT_H diff --git a/third_party/libcxx/__algorithm/ranges_pop_heap.h b/third_party/libcxx/__algorithm/ranges_pop_heap.h new file mode 100644 index 000000000..54ea97db7 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_pop_heap.h @@ -0,0 +1,81 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_POP_HEAP_H +#define _LIBCPP___ALGORITHM_RANGES_POP_HEAP_H + +#include <__algorithm/iterator_operations.h> +#include <__algorithm/make_projected.h> +#include <__algorithm/pop_heap.h> +#include <__concepts/same_as.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/next.h> +#include <__iterator/projected.h> +#include <__iterator/sortable.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/forward.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __pop_heap { + +struct __fn { + template + _LIBCPP_HIDE_FROM_ABI constexpr static + _Iter __pop_heap_fn_impl(_Iter __first, _Sent __last, _Comp& __comp, _Proj& __proj) { + auto __last_iter = ranges::next(__first, __last); + auto __len = __last_iter - __first; + + auto&& __projected_comp = std::__make_projected(__comp, __proj); + std::__pop_heap<_RangeAlgPolicy>(std::move(__first), __last_iter, __projected_comp, __len); + + return __last_iter; + } + + template _Sent, class _Comp = ranges::less, class _Proj = identity> + requires sortable<_Iter, _Comp, _Proj> + _LIBCPP_HIDE_FROM_ABI constexpr + _Iter operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { + return __pop_heap_fn_impl(std::move(__first), std::move(__last), __comp, __proj); + } + + template + requires sortable, _Comp, _Proj> + _LIBCPP_HIDE_FROM_ABI constexpr + borrowed_iterator_t<_Range> operator()(_Range&& __r, _Comp __comp = {}, _Proj __proj = {}) const { + return __pop_heap_fn_impl(ranges::begin(__r), ranges::end(__r), __comp, __proj); + } +}; + +} // namespace __pop_heap + +inline namespace __cpo { + inline constexpr auto pop_heap = __pop_heap::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_POP_HEAP_H diff --git a/third_party/libcxx/__algorithm/ranges_prev_permutation.h b/third_party/libcxx/__algorithm/ranges_prev_permutation.h new file mode 100644 index 000000000..bf062874a --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_prev_permutation.h @@ -0,0 +1,77 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_PREV_PERMUTATION_H +#define _LIBCPP___ALGORITHM_RANGES_PREV_PERMUTATION_H + +#include <__algorithm/in_found_result.h> +#include <__algorithm/iterator_operations.h> +#include <__algorithm/make_projected.h> +#include <__algorithm/prev_permutation.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/sortable.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/move.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { + +template +using prev_permutation_result = in_found_result<_InIter>; + +namespace __prev_permutation { + +struct __fn { + + template _Sent, + class _Comp = ranges::less, class _Proj = identity> + requires sortable<_Iter, _Comp, _Proj> + _LIBCPP_HIDE_FROM_ABI constexpr prev_permutation_result<_Iter> + operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { + auto __result = std::__prev_permutation<_RangeAlgPolicy>( + std::move(__first), std::move(__last), std::__make_projected(__comp, __proj)); + return {std::move(__result.first), std::move(__result.second)}; + } + + template + requires sortable, _Comp, _Proj> + _LIBCPP_HIDE_FROM_ABI constexpr prev_permutation_result> + operator()(_Range&& __range, _Comp __comp = {}, _Proj __proj = {}) const { + auto __result = std::__prev_permutation<_RangeAlgPolicy>( + ranges::begin(__range), ranges::end(__range), std::__make_projected(__comp, __proj)); + return {std::move(__result.first), std::move(__result.second)}; + } + +}; + +} // namespace __prev_permutation + +inline namespace __cpo { +constexpr inline auto prev_permutation = __prev_permutation::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_PREV_PERMUTATION_H diff --git a/third_party/libcxx/__algorithm/ranges_push_heap.h b/third_party/libcxx/__algorithm/ranges_push_heap.h new file mode 100644 index 000000000..6e65d11d0 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_push_heap.h @@ -0,0 +1,80 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_PUSH_HEAP_H +#define _LIBCPP___ALGORITHM_RANGES_PUSH_HEAP_H + +#include <__algorithm/iterator_operations.h> +#include <__algorithm/make_projected.h> +#include <__algorithm/push_heap.h> +#include <__concepts/same_as.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/next.h> +#include <__iterator/projected.h> +#include <__iterator/sortable.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/forward.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __push_heap { + +struct __fn { + template + _LIBCPP_HIDE_FROM_ABI constexpr static + _Iter __push_heap_fn_impl(_Iter __first, _Sent __last, _Comp& __comp, _Proj& __proj) { + auto __last_iter = ranges::next(__first, __last); + + auto&& __projected_comp = std::__make_projected(__comp, __proj); + std::__push_heap<_RangeAlgPolicy>(std::move(__first), __last_iter, __projected_comp); + + return __last_iter; + } + + template _Sent, class _Comp = ranges::less, class _Proj = identity> + requires sortable<_Iter, _Comp, _Proj> + _LIBCPP_HIDE_FROM_ABI constexpr + _Iter operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { + return __push_heap_fn_impl(std::move(__first), std::move(__last), __comp, __proj); + } + + template + requires sortable, _Comp, _Proj> + _LIBCPP_HIDE_FROM_ABI constexpr + borrowed_iterator_t<_Range> operator()(_Range&& __r, _Comp __comp = {}, _Proj __proj = {}) const { + return __push_heap_fn_impl(ranges::begin(__r), ranges::end(__r), __comp, __proj); + } +}; + +} // namespace __push_heap + +inline namespace __cpo { + inline constexpr auto push_heap = __push_heap::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_PUSH_HEAP_H diff --git a/third_party/libcxx/__algorithm/ranges_remove.h b/third_party/libcxx/__algorithm/ranges_remove.h new file mode 100644 index 000000000..6dd48e087 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_remove.h @@ -0,0 +1,64 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_REMOVE_H +#define _LIBCPP___ALGORITHM_RANGES_REMOVE_H +#include <__config> + +#include <__algorithm/ranges_remove_if.h> +#include <__functional/identity.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/permutable.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/subrange.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __remove { +struct __fn { + + template _Sent, class _Type, class _Proj = identity> + requires indirect_binary_predicate, const _Type*> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + subrange<_Iter> operator()(_Iter __first, _Sent __last, const _Type& __value, _Proj __proj = {}) const { + auto __pred = [&](auto&& __other) { return __value == __other; }; + return ranges::__remove_if_impl(std::move(__first), std::move(__last), __pred, __proj); + } + + template + requires permutable> + && indirect_binary_predicate, _Proj>, const _Type*> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + borrowed_subrange_t<_Range> operator()(_Range&& __range, const _Type& __value, _Proj __proj = {}) const { + auto __pred = [&](auto&& __other) { return __value == __other; }; + return ranges::__remove_if_impl(ranges::begin(__range), ranges::end(__range), __pred, __proj); + } +}; +} // namespace __remove + +inline namespace __cpo { + inline constexpr auto remove = __remove::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_REMOVE_H diff --git a/third_party/libcxx/__algorithm/ranges_remove_copy.h b/third_party/libcxx/__algorithm/ranges_remove_copy.h new file mode 100644 index 000000000..a9a19c17f --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_remove_copy.h @@ -0,0 +1,76 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_REMOVE_COPY_H +#define _LIBCPP___ALGORITHM_RANGES_REMOVE_COPY_H + +#include <__algorithm/in_out_result.h> +#include <__algorithm/ranges_remove_copy_if.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { + +template +using remove_copy_result = in_out_result<_InIter, _OutIter>; + +namespace __remove_copy { + + struct __fn { + template _Sent, + weakly_incrementable _OutIter, + class _Type, + class _Proj = identity> + requires indirectly_copyable<_InIter, _OutIter> && + indirect_binary_predicate, const _Type*> + _LIBCPP_HIDE_FROM_ABI constexpr remove_copy_result<_InIter, _OutIter> + operator()(_InIter __first, _Sent __last, _OutIter __result, const _Type& __value, _Proj __proj = {}) const { + auto __pred = [&](auto&& __val) { return __value == __val; }; + return ranges::__remove_copy_if_impl(std::move(__first), std::move(__last), std::move(__result), __pred, __proj); + } + + template + requires indirectly_copyable, _OutIter> && + indirect_binary_predicate, _Proj>, const _Type*> + _LIBCPP_HIDE_FROM_ABI constexpr remove_copy_result, _OutIter> + operator()(_Range&& __range, _OutIter __result, const _Type& __value, _Proj __proj = {}) const { + auto __pred = [&](auto&& __val) { return __value == __val; }; + return ranges::__remove_copy_if_impl( + ranges::begin(__range), ranges::end(__range), std::move(__result), __pred, __proj); + } + }; + +} // namespace __remove_copy + +inline namespace __cpo { + inline constexpr auto remove_copy = __remove_copy::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_REMOVE_COPY_H diff --git a/third_party/libcxx/__algorithm/ranges_remove_copy_if.h b/third_party/libcxx/__algorithm/ranges_remove_copy_if.h new file mode 100644 index 000000000..e6d043e36 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_remove_copy_if.h @@ -0,0 +1,90 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_REMOVE_COPY_IF_H +#define _LIBCPP___ALGORITHM_RANGES_REMOVE_COPY_IF_H + +#include <__algorithm/in_out_result.h> +#include <__algorithm/make_projected.h> +#include <__algorithm/remove_copy_if.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/forward.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { + +template +using remove_copy_if_result = in_out_result<_InIter, _OutIter>; + +template +_LIBCPP_HIDE_FROM_ABI constexpr in_out_result<_InIter, _OutIter> +__remove_copy_if_impl(_InIter __first, _Sent __last, _OutIter __result, _Pred& __pred, _Proj& __proj) { + for (; __first != __last; ++__first) { + if (!std::invoke(__pred, std::invoke(__proj, *__first))) { + *__result = *__first; + ++__result; + } + } + return {std::move(__first), std::move(__result)}; +} + +namespace __remove_copy_if { + + struct __fn { + template _Sent, + weakly_incrementable _OutIter, + class _Proj = identity, + indirect_unary_predicate> _Pred> + requires indirectly_copyable<_InIter, _OutIter> + _LIBCPP_HIDE_FROM_ABI constexpr remove_copy_if_result<_InIter, _OutIter> + operator()(_InIter __first, _Sent __last, _OutIter __result, _Pred __pred, _Proj __proj = {}) const { + return ranges::__remove_copy_if_impl(std::move(__first), std::move(__last), std::move(__result), __pred, __proj); + } + + template , _Proj>> _Pred> + requires indirectly_copyable, _OutIter> + _LIBCPP_HIDE_FROM_ABI constexpr remove_copy_if_result, _OutIter> + operator()(_Range&& __range, _OutIter __result, _Pred __pred, _Proj __proj = {}) const { + return ranges::__remove_copy_if_impl( + ranges::begin(__range), ranges::end(__range), std::move(__result), __pred, __proj); + } + }; + +} // namespace __remove_copy_if + +inline namespace __cpo { + inline constexpr auto remove_copy_if = __remove_copy_if::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_REMOVE_COPY_IF_H diff --git a/third_party/libcxx/__algorithm/ranges_remove_if.h b/third_party/libcxx/__algorithm/ranges_remove_if.h new file mode 100644 index 000000000..7507c21b8 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_remove_if.h @@ -0,0 +1,85 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_REMOVE_IF_H +#define _LIBCPP___ALGORITHM_RANGES_REMOVE_IF_H +#include <__config> + +#include <__algorithm/ranges_find_if.h> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/iter_move.h> +#include <__iterator/permutable.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/subrange.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { + +template +_LIBCPP_HIDE_FROM_ABI constexpr +subrange<_Iter> __remove_if_impl(_Iter __first, _Sent __last, _Pred& __pred, _Proj& __proj) { + auto __new_end = ranges::__find_if_impl(__first, __last, __pred, __proj); + if (__new_end == __last) + return {__new_end, __new_end}; + + _Iter __i = __new_end; + while (++__i != __last) { + if (!std::invoke(__pred, std::invoke(__proj, *__i))) { + *__new_end = ranges::iter_move(__i); + ++__new_end; + } + } + return {__new_end, __i}; +} + +namespace __remove_if { +struct __fn { + + template _Sent, + class _Proj = identity, + indirect_unary_predicate> _Pred> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + subrange<_Iter> operator()(_Iter __first, _Sent __last, _Pred __pred, _Proj __proj = {}) const { + return ranges::__remove_if_impl(std::move(__first), std::move(__last), __pred, __proj); + } + + template , _Proj>> _Pred> + requires permutable> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + borrowed_subrange_t<_Range> operator()(_Range&& __range, _Pred __pred, _Proj __proj = {}) const { + return ranges::__remove_if_impl(ranges::begin(__range), ranges::end(__range), __pred, __proj); + } + +}; +} // namespace __remove_if + +inline namespace __cpo { + inline constexpr auto remove_if = __remove_if::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_REMOVE_IF_H diff --git a/third_party/libcxx/__algorithm/ranges_replace.h b/third_party/libcxx/__algorithm/ranges_replace.h new file mode 100644 index 000000000..258e25d05 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_replace.h @@ -0,0 +1,74 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_REPLACE_H +#define _LIBCPP___ALGORITHM_RANGES_REPLACE_H + +#include <__algorithm/ranges_replace_if.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __replace { +struct __fn { + + template _Sent, + class _Type1, + class _Type2, + class _Proj = identity> + requires indirectly_writable<_Iter, const _Type2&> + && indirect_binary_predicate, const _Type1*> + _LIBCPP_HIDE_FROM_ABI constexpr + _Iter operator()(_Iter __first, _Sent __last, + const _Type1& __old_value, + const _Type2& __new_value, + _Proj __proj = {}) const { + auto __pred = [&](const auto& __val) { return __val == __old_value; }; + return ranges::__replace_if_impl(std::move(__first), std::move(__last), __pred, __new_value, __proj); + } + + template + requires indirectly_writable, const _Type2&> + && indirect_binary_predicate, _Proj>, const _Type1*> + _LIBCPP_HIDE_FROM_ABI constexpr borrowed_iterator_t<_Range> + operator()(_Range&& __range, const _Type1& __old_value, const _Type2& __new_value, _Proj __proj = {}) const { + auto __pred = [&](auto&& __val) { return __val == __old_value; }; + return ranges::__replace_if_impl(ranges::begin(__range), ranges::end(__range), __pred, __new_value, __proj); + } + +}; +} // namespace __replace + +inline namespace __cpo { + inline constexpr auto replace = __replace::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_REPLACE_H diff --git a/third_party/libcxx/__algorithm/ranges_replace_copy.h b/third_party/libcxx/__algorithm/ranges_replace_copy.h new file mode 100644 index 000000000..79eaebb41 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_replace_copy.h @@ -0,0 +1,91 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_REPLACE_COPY_H +#define _LIBCPP___ALGORITHM_RANGES_REPLACE_COPY_H + +#include <__algorithm/in_out_result.h> +#include <__algorithm/ranges_replace_copy_if.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { + +template +using replace_copy_result = in_out_result<_InIter, _OutIter>; + +namespace __replace_copy { + + struct __fn { + template _Sent, + class _OldType, + class _NewType, + output_iterator _OutIter, + class _Proj = identity> + requires indirectly_copyable<_InIter, _OutIter> && + indirect_binary_predicate, const _OldType*> + _LIBCPP_HIDE_FROM_ABI constexpr replace_copy_result<_InIter, _OutIter> + operator()(_InIter __first, + _Sent __last, + _OutIter __result, + const _OldType& __old_value, + const _NewType& __new_value, + _Proj __proj = {}) const { + auto __pred = [&](const auto& __value) { return __value == __old_value; }; + return ranges::__replace_copy_if_impl( + std::move(__first), std::move(__last), std::move(__result), __pred, __new_value, __proj); + } + + template _OutIter, + class _Proj = identity> + requires indirectly_copyable, _OutIter> && + indirect_binary_predicate, _Proj>, const _OldType*> + _LIBCPP_HIDE_FROM_ABI constexpr replace_copy_result, _OutIter> + operator()(_Range&& __range, + _OutIter __result, + const _OldType& __old_value, + const _NewType& __new_value, + _Proj __proj = {}) const { + auto __pred = [&](const auto& __value) { return __value == __old_value; }; + return ranges::__replace_copy_if_impl( + ranges::begin(__range), ranges::end(__range), std::move(__result), __pred, __new_value, __proj); + } + }; + +} // namespace __replace_copy + +inline namespace __cpo { + inline constexpr auto replace_copy = __replace_copy::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_REPLACE_COPY_H diff --git a/third_party/libcxx/__algorithm/ranges_replace_copy_if.h b/third_party/libcxx/__algorithm/ranges_replace_copy_if.h new file mode 100644 index 000000000..8ff2eba8f --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_replace_copy_if.h @@ -0,0 +1,93 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_REPLACE_COPY_IF_H +#define _LIBCPP___ALGORITHM_RANGES_REPLACE_COPY_IF_H + +#include <__algorithm/in_out_result.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__iterator/concepts.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { + +template +using replace_copy_if_result = in_out_result<_InIter, _OutIter>; + +template +_LIBCPP_HIDE_FROM_ABI constexpr replace_copy_if_result<_InIter, _OutIter> __replace_copy_if_impl( + _InIter __first, _Sent __last, _OutIter __result, _Pred& __pred, const _Type& __new_value, _Proj& __proj) { + while (__first != __last) { + if (std::invoke(__pred, std::invoke(__proj, *__first))) + *__result = __new_value; + else + *__result = *__first; + + ++__first; + ++__result; + } + + return {std::move(__first), std::move(__result)}; +} + +namespace __replace_copy_if { + + struct __fn { + template _Sent, + class _Type, + output_iterator _OutIter, + class _Proj = identity, + indirect_unary_predicate> _Pred> + requires indirectly_copyable<_InIter, _OutIter> + _LIBCPP_HIDE_FROM_ABI constexpr replace_copy_if_result<_InIter, _OutIter> operator()( + _InIter __first, _Sent __last, _OutIter __result, _Pred __pred, const _Type& __new_value, _Proj __proj = {}) + const { + return ranges::__replace_copy_if_impl( + std::move(__first), std::move(__last), std::move(__result), __pred, __new_value, __proj); + } + + template _OutIter, + class _Proj = identity, + indirect_unary_predicate, _Proj>> _Pred> + requires indirectly_copyable, _OutIter> + _LIBCPP_HIDE_FROM_ABI constexpr replace_copy_if_result, _OutIter> + operator()(_Range&& __range, _OutIter __result, _Pred __pred, const _Type& __new_value, _Proj __proj = {}) const { + return ranges::__replace_copy_if_impl( + ranges::begin(__range), ranges::end(__range), std::move(__result), __pred, __new_value, __proj); + } + }; + +} // namespace __replace_copy_if + +inline namespace __cpo { + inline constexpr auto replace_copy_if = __replace_copy_if::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_REPLACE_COPY_IF_H diff --git a/third_party/libcxx/__algorithm/ranges_replace_if.h b/third_party/libcxx/__algorithm/ranges_replace_if.h new file mode 100644 index 000000000..2b7dda9e6 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_replace_if.h @@ -0,0 +1,77 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_REPLACE_IF_H +#define _LIBCPP___ALGORITHM_RANGES_REPLACE_IF_H + +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__iterator/concepts.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { + +template +_LIBCPP_HIDE_FROM_ABI constexpr +_Iter __replace_if_impl(_Iter __first, _Sent __last, _Pred& __pred, const _Type& __new_value, _Proj& __proj) { + for (; __first != __last; ++__first) { + if (std::invoke(__pred, std::invoke(__proj, *__first))) + *__first = __new_value; + } + return __first; +} + +namespace __replace_if { +struct __fn { + + template _Sent, + class _Type, + class _Proj = identity, + indirect_unary_predicate> _Pred> + requires indirectly_writable<_Iter, const _Type&> + _LIBCPP_HIDE_FROM_ABI constexpr + _Iter operator()(_Iter __first, _Sent __last, _Pred __pred, const _Type& __new_value, _Proj __proj = {}) const { + return ranges::__replace_if_impl(std::move(__first), std::move(__last), __pred, __new_value, __proj); + } + + template , _Proj>> _Pred> + requires indirectly_writable, const _Type&> + _LIBCPP_HIDE_FROM_ABI constexpr borrowed_iterator_t<_Range> + operator()(_Range&& __range, _Pred __pred, const _Type& __new_value, _Proj __proj = {}) const { + return ranges::__replace_if_impl(ranges::begin(__range), ranges::end(__range), __pred, __new_value, __proj); + } + +}; +} // namespace __replace_if + +inline namespace __cpo { + inline constexpr auto replace_if = __replace_if::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_REPLACE_IF_H diff --git a/third_party/libcxx/__algorithm/ranges_reverse.h b/third_party/libcxx/__algorithm/ranges_reverse.h new file mode 100644 index 000000000..801fccb85 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_reverse.h @@ -0,0 +1,83 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_REVERSE_H +#define _LIBCPP___ALGORITHM_RANGES_REVERSE_H + +#include <__config> +#include <__iterator/concepts.h> +#include <__iterator/iter_swap.h> +#include <__iterator/next.h> +#include <__iterator/permutable.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __reverse { +struct __fn { + + template _Sent> + requires permutable<_Iter> + _LIBCPP_HIDE_FROM_ABI constexpr + _Iter operator()(_Iter __first, _Sent __last) const { + if constexpr (random_access_iterator<_Iter>) { + if (__first == __last) + return __first; + + auto __end = ranges::next(__first, __last); + auto __ret = __end; + + while (__first < --__end) { + ranges::iter_swap(__first, __end); + ++__first; + } + return __ret; + } else { + auto __end = ranges::next(__first, __last); + auto __ret = __end; + + while (__first != __end) { + if (__first == --__end) + break; + + ranges::iter_swap(__first, __end); + ++__first; + } + return __ret; + } + } + + template + requires permutable> + _LIBCPP_HIDE_FROM_ABI constexpr + borrowed_iterator_t<_Range> operator()(_Range&& __range) const { + return (*this)(ranges::begin(__range), ranges::end(__range)); + } + +}; +} // namespace __reverse + +inline namespace __cpo { + inline constexpr auto reverse = __reverse::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_REVERSE_H diff --git a/third_party/libcxx/__algorithm/ranges_reverse_copy.h b/third_party/libcxx/__algorithm/ranges_reverse_copy.h new file mode 100644 index 000000000..c23039976 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_reverse_copy.h @@ -0,0 +1,67 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_REVERSE_COPY_H +#define _LIBCPP___ALGORITHM_RANGES_REVERSE_COPY_H + +#include <__algorithm/in_out_result.h> +#include <__algorithm/ranges_copy.h> +#include <__config> +#include <__iterator/concepts.h> +#include <__iterator/next.h> +#include <__iterator/reverse_iterator.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__ranges/subrange.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { + +template +using reverse_copy_result = in_out_result<_InIter, _OutIter>; + +namespace __reverse_copy { +struct __fn { + + template _Sent, weakly_incrementable _OutIter> + requires indirectly_copyable<_InIter, _OutIter> + _LIBCPP_HIDE_FROM_ABI constexpr + reverse_copy_result<_InIter, _OutIter> operator()(_InIter __first, _Sent __last, _OutIter __result) const { + return (*this)(subrange(std::move(__first), std::move(__last)), std::move(__result)); + } + + template + requires indirectly_copyable, _OutIter> + _LIBCPP_HIDE_FROM_ABI constexpr + reverse_copy_result, _OutIter> operator()(_Range&& __range, _OutIter __result) const { + auto __ret = ranges::copy(std::__reverse_range(__range), std::move(__result)); + return {ranges::next(ranges::begin(__range), ranges::end(__range)), std::move(__ret.out)}; + } + +}; +} // namespace __reverse_copy + +inline namespace __cpo { + inline constexpr auto reverse_copy = __reverse_copy::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_REVERSE_COPY_H diff --git a/third_party/libcxx/__algorithm/ranges_rotate.h b/third_party/libcxx/__algorithm/ranges_rotate.h new file mode 100644 index 000000000..99e6ca67e --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_rotate.h @@ -0,0 +1,71 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_ROTATE_H +#define _LIBCPP___ALGORITHM_RANGES_ROTATE_H + +#include <__algorithm/iterator_operations.h> +#include <__algorithm/ranges_iterator_concept.h> +#include <__algorithm/rotate.h> +#include <__config> +#include <__iterator/concepts.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/permutable.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/subrange.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __rotate { + +struct __fn { + + template + _LIBCPP_HIDE_FROM_ABI constexpr + static subrange<_Iter> __rotate_fn_impl(_Iter __first, _Iter __middle, _Sent __last) { + auto __ret = std::__rotate<_RangeAlgPolicy>( + std::move(__first), std::move(__middle), std::move(__last)); + return {std::move(__ret.first), std::move(__ret.second)}; + } + + template _Sent> + _LIBCPP_HIDE_FROM_ABI constexpr + subrange<_Iter> operator()(_Iter __first, _Iter __middle, _Sent __last) const { + return __rotate_fn_impl(std::move(__first), std::move(__middle), std::move(__last)); + } + + template + requires permutable> + _LIBCPP_HIDE_FROM_ABI constexpr + borrowed_subrange_t<_Range> operator()(_Range&& __range, iterator_t<_Range> __middle) const { + return __rotate_fn_impl(ranges::begin(__range), std::move(__middle), ranges::end(__range)); + } + +}; + +} // namespace __rotate + +inline namespace __cpo { + inline constexpr auto rotate = __rotate::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_ROTATE_H diff --git a/third_party/libcxx/__algorithm/ranges_rotate_copy.h b/third_party/libcxx/__algorithm/ranges_rotate_copy.h new file mode 100644 index 000000000..5b9321f90 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_rotate_copy.h @@ -0,0 +1,68 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_ROTATE_COPY_H +#define _LIBCPP___ALGORITHM_RANGES_ROTATE_COPY_H + +#include <__algorithm/in_out_result.h> +#include <__algorithm/ranges_copy.h> +#include <__config> +#include <__iterator/concepts.h> +#include <__iterator/reverse_iterator.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { + +template +using rotate_copy_result = in_out_result<_InIter, _OutIter>; + +namespace __rotate_copy { +struct __fn { + + template _Sent, weakly_incrementable _OutIter> + requires indirectly_copyable<_InIter, _OutIter> + _LIBCPP_HIDE_FROM_ABI constexpr + rotate_copy_result<_InIter, _OutIter> + operator()(_InIter __first, _InIter __middle, _Sent __last, _OutIter __result) const { + auto __res1 = ranges::copy(__middle, __last, std::move(__result)); + auto __res2 = ranges::copy(__first, __middle, std::move(__res1.out)); + return {std::move(__res1.in), std::move(__res2.out)}; + } + + template + requires indirectly_copyable, _OutIter> + _LIBCPP_HIDE_FROM_ABI constexpr + rotate_copy_result, _OutIter> + operator()(_Range&& __range, iterator_t<_Range> __middle, _OutIter __result) const { + return (*this)(ranges::begin(__range), std::move(__middle), ranges::end(__range), std::move(__result)); + } + +}; +} // namespace __rotate_copy + +inline namespace __cpo { + inline constexpr auto rotate_copy = __rotate_copy::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_ROTATE_COPY_H diff --git a/third_party/libcxx/__algorithm/ranges_sample.h b/third_party/libcxx/__algorithm/ranges_sample.h new file mode 100644 index 000000000..a5ff2d0c8 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_sample.h @@ -0,0 +1,74 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_SAMPLE_H +#define _LIBCPP___ALGORITHM_RANGES_SAMPLE_H + +#include <__algorithm/iterator_operations.h> +#include <__algorithm/sample.h> +#include <__algorithm/uniform_random_bit_generator_adaptor.h> +#include <__config> +#include <__iterator/concepts.h> +#include <__iterator/incrementable_traits.h> +#include <__iterator/iterator_traits.h> +#include <__random/uniform_random_bit_generator.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__type_traits/remove_reference.h> +#include <__utility/forward.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __sample { + +struct __fn { + + template _Sent, weakly_incrementable _OutIter, class _Gen> + requires (forward_iterator<_Iter> || random_access_iterator<_OutIter>) && + indirectly_copyable<_Iter, _OutIter> && + uniform_random_bit_generator> + _LIBCPP_HIDE_FROM_ABI + _OutIter operator()(_Iter __first, _Sent __last, + _OutIter __out_first, iter_difference_t<_Iter> __n, _Gen&& __gen) const { + _ClassicGenAdaptor<_Gen> __adapted_gen(__gen); + return std::__sample<_RangeAlgPolicy>( + std::move(__first), std::move(__last), std::move(__out_first), __n, __adapted_gen); + } + + template + requires (forward_range<_Range> || random_access_iterator<_OutIter>) && + indirectly_copyable, _OutIter> && + uniform_random_bit_generator> + _LIBCPP_HIDE_FROM_ABI + _OutIter operator()(_Range&& __range, _OutIter __out_first, range_difference_t<_Range> __n, _Gen&& __gen) const { + return (*this)(ranges::begin(__range), ranges::end(__range), + std::move(__out_first), __n, std::forward<_Gen>(__gen)); + } + +}; + +} // namespace __sample + +inline namespace __cpo { + inline constexpr auto sample = __sample::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_SAMPLE_H diff --git a/third_party/libcxx/__algorithm/ranges_search.h b/third_party/libcxx/__algorithm/ranges_search.h new file mode 100644 index 000000000..6d3e31868 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_search.h @@ -0,0 +1,135 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_SEARCH_H +#define _LIBCPP___ALGORITHM_RANGES_SEARCH_H + +#include <__algorithm/iterator_operations.h> +#include <__algorithm/search.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/ranges_operations.h> +#include <__iterator/advance.h> +#include <__iterator/concepts.h> +#include <__iterator/distance.h> +#include <__iterator/indirectly_comparable.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/size.h> +#include <__ranges/subrange.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __search { +struct __fn { + template + _LIBCPP_HIDE_FROM_ABI static constexpr subrange<_Iter1> __ranges_search_impl( + _Iter1 __first1, + _Sent1 __last1, + _Iter2 __first2, + _Sent2 __last2, + _Pred& __pred, + _Proj1& __proj1, + _Proj2& __proj2) { + if constexpr (sized_sentinel_for<_Sent2, _Iter2>) { + auto __size2 = ranges::distance(__first2, __last2); + if (__size2 == 0) + return {__first1, __first1}; + + if constexpr (sized_sentinel_for<_Sent1, _Iter1>) { + auto __size1 = ranges::distance(__first1, __last1); + if (__size1 < __size2) { + ranges::advance(__first1, __last1); + return {__first1, __first1}; + } + + if constexpr (random_access_iterator<_Iter1> && random_access_iterator<_Iter2>) { + auto __ret = std::__search_random_access_impl<_RangeAlgPolicy>( + __first1, __last1, __first2, __last2, __pred, __proj1, __proj2, __size1, __size2); + return {__ret.first, __ret.second}; + } + } + } + + auto __ret = + std::__search_forward_impl<_RangeAlgPolicy>(__first1, __last1, __first2, __last2, __pred, __proj1, __proj2); + return {__ret.first, __ret.second}; + } + + template _Sent1, + forward_iterator _Iter2, sentinel_for<_Iter2> _Sent2, + class _Pred = ranges::equal_to, + class _Proj1 = identity, + class _Proj2 = identity> + requires indirectly_comparable<_Iter1, _Iter2, _Pred, _Proj1, _Proj2> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + subrange<_Iter1> operator()(_Iter1 __first1, _Sent1 __last1, + _Iter2 __first2, _Sent2 __last2, + _Pred __pred = {}, + _Proj1 __proj1 = {}, + _Proj2 __proj2 = {}) const { + return __ranges_search_impl(__first1, __last1, __first2, __last2, __pred, __proj1, __proj2); + } + + template + requires indirectly_comparable, iterator_t<_Range2>, _Pred, _Proj1, _Proj2> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + borrowed_subrange_t<_Range1> operator()(_Range1&& __range1, + _Range2&& __range2, + _Pred __pred = {}, + _Proj1 __proj1 = {}, + _Proj2 __proj2 = {}) const { + auto __first1 = ranges::begin(__range1); + if constexpr (sized_range<_Range2>) { + auto __size2 = ranges::size(__range2); + if (__size2 == 0) + return {__first1, __first1}; + if constexpr (sized_range<_Range1>) { + auto __size1 = ranges::size(__range1); + if (__size1 < __size2) { + ranges::advance(__first1, ranges::end(__range1)); + return {__first1, __first1}; + } + } + } + + return __ranges_search_impl( + ranges::begin(__range1), + ranges::end(__range1), + ranges::begin(__range2), + ranges::end(__range2), + __pred, + __proj1, + __proj2); + } + +}; +} // namespace __search + +inline namespace __cpo { + inline constexpr auto search = __search::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_SEARCH_H diff --git a/third_party/libcxx/__algorithm/ranges_search_n.h b/third_party/libcxx/__algorithm/ranges_search_n.h new file mode 100644 index 000000000..ed5ec34f0 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_search_n.h @@ -0,0 +1,117 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_SEARCH_N_H +#define _LIBCPP___ALGORITHM_RANGES_SEARCH_N_H + +#include <__algorithm/iterator_operations.h> +#include <__algorithm/search_n.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/ranges_operations.h> +#include <__iterator/advance.h> +#include <__iterator/concepts.h> +#include <__iterator/distance.h> +#include <__iterator/incrementable_traits.h> +#include <__iterator/indirectly_comparable.h> +#include <__iterator/iterator_traits.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/size.h> +#include <__ranges/subrange.h> +#include <__utility/move.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __search_n { +struct __fn { + + template + _LIBCPP_HIDE_FROM_ABI static constexpr subrange<_Iter1> __ranges_search_n_impl( + _Iter1 __first, _Sent1 __last, _SizeT __count, const _Type& __value, _Pred& __pred, _Proj& __proj) { + if (__count == 0) + return {__first, __first}; + + if constexpr (sized_sentinel_for<_Sent1, _Iter1>) { + auto __size = ranges::distance(__first, __last); + if (__size < __count) { + ranges::advance(__first, __last); + return {__first, __first}; + } + + if constexpr (random_access_iterator<_Iter1>) { + auto __ret = std::__search_n_random_access_impl<_RangeAlgPolicy>( + __first, __last, __count, __value, __pred, __proj, __size); + return {std::move(__ret.first), std::move(__ret.second)}; + } + } + + auto __ret = std::__search_n_forward_impl<_RangeAlgPolicy>(__first, __last, + __count, + __value, + __pred, + __proj); + return {std::move(__ret.first), std::move(__ret.second)}; + } + + template _Sent, + class _Type, + class _Pred = ranges::equal_to, + class _Proj = identity> + requires indirectly_comparable<_Iter, const _Type*, _Pred, _Proj> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + subrange<_Iter> operator()(_Iter __first, _Sent __last, + iter_difference_t<_Iter> __count, + const _Type& __value, + _Pred __pred = {}, + _Proj __proj = _Proj{}) const { + return __ranges_search_n_impl(__first, __last, __count, __value, __pred, __proj); + } + + template + requires indirectly_comparable, const _Type*, _Pred, _Proj> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + borrowed_subrange_t<_Range> operator()(_Range&& __range, + range_difference_t<_Range> __count, + const _Type& __value, + _Pred __pred = {}, + _Proj __proj = {}) const { + auto __first = ranges::begin(__range); + if (__count <= 0) + return {__first, __first}; + if constexpr (sized_range<_Range>) { + auto __size1 = ranges::size(__range); + if (__size1 < static_cast>(__count)) { + ranges::advance(__first, ranges::end(__range)); + return {__first, __first}; + } + } + + return __ranges_search_n_impl(ranges::begin(__range), ranges::end(__range), __count, __value, __pred, __proj); + } +}; +} // namespace __search_n + +inline namespace __cpo { + inline constexpr auto search_n = __search_n::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_SEARCH_N_H diff --git a/third_party/libcxx/__algorithm/ranges_set_difference.h b/third_party/libcxx/__algorithm/ranges_set_difference.h new file mode 100644 index 000000000..6b9af876b --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_set_difference.h @@ -0,0 +1,106 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_SET_DIFFERENCE_H +#define _LIBCPP___ALGORITHM_RANGES_SET_DIFFERENCE_H + +#include <__algorithm/in_out_result.h> +#include <__algorithm/iterator_operations.h> +#include <__algorithm/make_projected.h> +#include <__algorithm/set_difference.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/mergeable.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__type_traits/decay.h> +#include <__utility/move.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { + +template +using set_difference_result = in_out_result<_InIter, _OutIter>; + +namespace __set_difference { + +struct __fn { + template < + input_iterator _InIter1, + sentinel_for<_InIter1> _Sent1, + input_iterator _InIter2, + sentinel_for<_InIter2> _Sent2, + weakly_incrementable _OutIter, + class _Comp = less, + class _Proj1 = identity, + class _Proj2 = identity> + requires mergeable<_InIter1, _InIter2, _OutIter, _Comp, _Proj1, _Proj2> + _LIBCPP_HIDE_FROM_ABI constexpr set_difference_result<_InIter1, _OutIter> operator()( + _InIter1 __first1, + _Sent1 __last1, + _InIter2 __first2, + _Sent2 __last2, + _OutIter __result, + _Comp __comp = {}, + _Proj1 __proj1 = {}, + _Proj2 __proj2 = {}) const { + auto __ret = std::__set_difference<_RangeAlgPolicy>( + __first1, __last1, __first2, __last2, __result, ranges::__make_projected_comp(__comp, __proj1, __proj2)); + return {std::move(__ret.first), std::move(__ret.second)}; + } + + template < + input_range _Range1, + input_range _Range2, + weakly_incrementable _OutIter, + class _Comp = less, + class _Proj1 = identity, + class _Proj2 = identity> + requires mergeable, iterator_t<_Range2>, _OutIter, _Comp, _Proj1, _Proj2> + _LIBCPP_HIDE_FROM_ABI constexpr set_difference_result, _OutIter> + operator()( + _Range1&& __range1, + _Range2&& __range2, + _OutIter __result, + _Comp __comp = {}, + _Proj1 __proj1 = {}, + _Proj2 __proj2 = {}) const { + auto __ret = std::__set_difference<_RangeAlgPolicy>( + ranges::begin(__range1), + ranges::end(__range1), + ranges::begin(__range2), + ranges::end(__range2), + __result, + ranges::__make_projected_comp(__comp, __proj1, __proj2)); + return {std::move(__ret.first), std::move(__ret.second)}; + } +}; + +} // namespace __set_difference + +inline namespace __cpo { + inline constexpr auto set_difference = __set_difference::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 +#endif // _LIBCPP___ALGORITHM_RANGES_SET_DIFFERENCE_H diff --git a/third_party/libcxx/__algorithm/ranges_set_intersection.h b/third_party/libcxx/__algorithm/ranges_set_intersection.h new file mode 100644 index 000000000..5848656ce --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_set_intersection.h @@ -0,0 +1,117 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_SET_INTERSECTION_H +#define _LIBCPP___ALGORITHM_RANGES_SET_INTERSECTION_H + +#include <__algorithm/in_in_out_result.h> +#include <__algorithm/iterator_operations.h> +#include <__algorithm/make_projected.h> +#include <__algorithm/set_intersection.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/mergeable.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { + +template +using set_intersection_result = in_in_out_result<_InIter1, _InIter2, _OutIter>; + +namespace __set_intersection { + +struct __fn { + template < + input_iterator _InIter1, + sentinel_for<_InIter1> _Sent1, + input_iterator _InIter2, + sentinel_for<_InIter2> _Sent2, + weakly_incrementable _OutIter, + class _Comp = less, + class _Proj1 = identity, + class _Proj2 = identity> + requires mergeable<_InIter1, _InIter2, _OutIter, _Comp, _Proj1, _Proj2> + _LIBCPP_HIDE_FROM_ABI constexpr set_intersection_result<_InIter1, _InIter2, _OutIter> operator()( + _InIter1 __first1, + _Sent1 __last1, + _InIter2 __first2, + _Sent2 __last2, + _OutIter __result, + _Comp __comp = {}, + _Proj1 __proj1 = {}, + _Proj2 __proj2 = {}) const { + auto __ret = std::__set_intersection<_RangeAlgPolicy>( + std::move(__first1), + std::move(__last1), + std::move(__first2), + std::move(__last2), + std::move(__result), + ranges::__make_projected_comp(__comp, __proj1, __proj2)); + return {std::move(__ret.__in1_), std::move(__ret.__in2_), std::move(__ret.__out_)}; + } + + template < + input_range _Range1, + input_range _Range2, + weakly_incrementable _OutIter, + class _Comp = less, + class _Proj1 = identity, + class _Proj2 = identity> + requires mergeable< + iterator_t<_Range1>, + iterator_t<_Range2>, + _OutIter, + _Comp, + _Proj1, + _Proj2> + _LIBCPP_HIDE_FROM_ABI constexpr set_intersection_result, + borrowed_iterator_t<_Range2>, + _OutIter> + operator()( + _Range1&& __range1, + _Range2&& __range2, + _OutIter __result, + _Comp __comp = {}, + _Proj1 __proj1 = {}, + _Proj2 __proj2 = {}) const { + auto __ret = std::__set_intersection<_RangeAlgPolicy>( + ranges::begin(__range1), + ranges::end(__range1), + ranges::begin(__range2), + ranges::end(__range2), + std::move(__result), + ranges::__make_projected_comp(__comp, __proj1, __proj2)); + return {std::move(__ret.__in1_), std::move(__ret.__in2_), std::move(__ret.__out_)}; + } +}; + +} // namespace __set_intersection + +inline namespace __cpo { + inline constexpr auto set_intersection = __set_intersection::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 +#endif // _LIBCPP___ALGORITHM_RANGES_SET_INTERSECTION_H diff --git a/third_party/libcxx/__algorithm/ranges_set_symmetric_difference.h b/third_party/libcxx/__algorithm/ranges_set_symmetric_difference.h new file mode 100644 index 000000000..f8bcf3795 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_set_symmetric_difference.h @@ -0,0 +1,117 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_SET_SYMMETRIC_DIFFERENCE_H +#define _LIBCPP___ALGORITHM_RANGES_SET_SYMMETRIC_DIFFERENCE_H + +#include <__algorithm/in_in_out_result.h> +#include <__algorithm/iterator_operations.h> +#include <__algorithm/make_projected.h> +#include <__algorithm/set_symmetric_difference.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/mergeable.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { + +template +using set_symmetric_difference_result = in_in_out_result<_InIter1, _InIter2, _OutIter>; + +namespace __set_symmetric_difference { + +struct __fn { + template < + input_iterator _InIter1, + sentinel_for<_InIter1> _Sent1, + input_iterator _InIter2, + sentinel_for<_InIter2> _Sent2, + weakly_incrementable _OutIter, + class _Comp = ranges::less, + class _Proj1 = identity, + class _Proj2 = identity> + requires mergeable<_InIter1, _InIter2, _OutIter, _Comp, _Proj1, _Proj2> + _LIBCPP_HIDE_FROM_ABI constexpr set_symmetric_difference_result<_InIter1, _InIter2, _OutIter> operator()( + _InIter1 __first1, + _Sent1 __last1, + _InIter2 __first2, + _Sent2 __last2, + _OutIter __result, + _Comp __comp = {}, + _Proj1 __proj1 = {}, + _Proj2 __proj2 = {}) const { + auto __ret = std::__set_symmetric_difference<_RangeAlgPolicy>( + std::move(__first1), + std::move(__last1), + std::move(__first2), + std::move(__last2), + std::move(__result), + ranges::__make_projected_comp(__comp, __proj1, __proj2)); + return {std::move(__ret.__in1_), std::move(__ret.__in2_), std::move(__ret.__out_)}; + } + + template < + input_range _Range1, + input_range _Range2, + weakly_incrementable _OutIter, + class _Comp = ranges::less, + class _Proj1 = identity, + class _Proj2 = identity> + requires mergeable< + iterator_t<_Range1>, + iterator_t<_Range2>, + _OutIter, + _Comp, + _Proj1, + _Proj2> + _LIBCPP_HIDE_FROM_ABI constexpr set_symmetric_difference_result, + borrowed_iterator_t<_Range2>, + _OutIter> + operator()( + _Range1&& __range1, + _Range2&& __range2, + _OutIter __result, + _Comp __comp = {}, + _Proj1 __proj1 = {}, + _Proj2 __proj2 = {}) const { + auto __ret = std::__set_symmetric_difference<_RangeAlgPolicy>( + ranges::begin(__range1), + ranges::end(__range1), + ranges::begin(__range2), + ranges::end(__range2), + std::move(__result), + ranges::__make_projected_comp(__comp, __proj1, __proj2)); + return {std::move(__ret.__in1_), std::move(__ret.__in2_), std::move(__ret.__out_)}; + } +}; + +} // namespace __set_symmetric_difference + +inline namespace __cpo { + inline constexpr auto set_symmetric_difference = __set_symmetric_difference::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 +#endif // _LIBCPP___ALGORITHM_RANGES_SET_SYMMETRIC_DIFFERENCE_H diff --git a/third_party/libcxx/__algorithm/ranges_set_union.h b/third_party/libcxx/__algorithm/ranges_set_union.h new file mode 100644 index 000000000..bc669cc83 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_set_union.h @@ -0,0 +1,121 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_SET_UNION_H +#define _LIBCPP___ALGORITHM_RANGES_SET_UNION_H + +#include <__algorithm/in_in_out_result.h> +#include <__algorithm/iterator_operations.h> +#include <__algorithm/make_projected.h> +#include <__algorithm/set_union.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/mergeable.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/forward.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { + +template +using set_union_result = in_in_out_result<_InIter1, _InIter2, _OutIter>; + +namespace __set_union { + +struct __fn { + template < + input_iterator _InIter1, + sentinel_for<_InIter1> _Sent1, + input_iterator _InIter2, + sentinel_for<_InIter2> _Sent2, + weakly_incrementable _OutIter, + class _Comp = ranges::less, + class _Proj1 = identity, + class _Proj2 = identity> + requires mergeable<_InIter1, _InIter2, _OutIter, _Comp, _Proj1, _Proj2> + _LIBCPP_HIDE_FROM_ABI constexpr set_union_result<_InIter1, _InIter2, _OutIter> operator()( + _InIter1 __first1, + _Sent1 __last1, + _InIter2 __first2, + _Sent2 __last2, + _OutIter __result, + _Comp __comp = {}, + _Proj1 __proj1 = {}, + _Proj2 __proj2 = {}) const { + auto __ret = std::__set_union<_RangeAlgPolicy>( + std::move(__first1), + std::move(__last1), + std::move(__first2), + std::move(__last2), + std::move(__result), + ranges::__make_projected_comp(__comp, __proj1, __proj2)); + return {std::move(__ret.__in1_), std::move(__ret.__in2_), std::move(__ret.__out_)}; + } + + template < + input_range _Range1, + input_range _Range2, + weakly_incrementable _OutIter, + class _Comp = ranges::less, + class _Proj1 = identity, + class _Proj2 = identity> + requires mergeable< + iterator_t<_Range1>, + iterator_t<_Range2>, + _OutIter, + _Comp, + _Proj1, + _Proj2> + _LIBCPP_HIDE_FROM_ABI constexpr set_union_result, + borrowed_iterator_t<_Range2>, + _OutIter> + operator()( + _Range1&& __range1, + _Range2&& __range2, + _OutIter __result, + _Comp __comp = {}, + _Proj1 __proj1 = {}, + _Proj2 __proj2 = {}) const { + auto __ret = std::__set_union<_RangeAlgPolicy>( + ranges::begin(__range1), + ranges::end(__range1), + ranges::begin(__range2), + ranges::end(__range2), + std::move(__result), + ranges::__make_projected_comp(__comp, __proj1, __proj2)); + return {std::move(__ret.__in1_), std::move(__ret.__in2_), std::move(__ret.__out_)}; + } +}; + +} // namespace __set_union + +inline namespace __cpo { + inline constexpr auto set_union = __set_union::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_SET_UNION_H diff --git a/third_party/libcxx/__algorithm/ranges_shuffle.h b/third_party/libcxx/__algorithm/ranges_shuffle.h new file mode 100644 index 000000000..2f45fb00f --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_shuffle.h @@ -0,0 +1,71 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_SHUFFLE_H +#define _LIBCPP___ALGORITHM_RANGES_SHUFFLE_H + +#include <__algorithm/iterator_operations.h> +#include <__algorithm/shuffle.h> +#include <__algorithm/uniform_random_bit_generator_adaptor.h> +#include <__config> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/next.h> +#include <__iterator/permutable.h> +#include <__random/uniform_random_bit_generator.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__type_traits/remove_reference.h> +#include <__utility/forward.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __shuffle { + +struct __fn { + + template _Sent, class _Gen> + requires permutable<_Iter> && uniform_random_bit_generator> + _LIBCPP_HIDE_FROM_ABI + _Iter operator()(_Iter __first, _Sent __last, _Gen&& __gen) const { + _ClassicGenAdaptor<_Gen> __adapted_gen(__gen); + return std::__shuffle<_RangeAlgPolicy>(std::move(__first), std::move(__last), __adapted_gen); + } + + template + requires permutable> && uniform_random_bit_generator> + _LIBCPP_HIDE_FROM_ABI + borrowed_iterator_t<_Range> operator()(_Range&& __range, _Gen&& __gen) const { + return (*this)(ranges::begin(__range), ranges::end(__range), std::forward<_Gen>(__gen)); + } + +}; + +} // namespace __shuffle + +inline namespace __cpo { + inline constexpr auto shuffle = __shuffle::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_SHUFFLE_H diff --git a/third_party/libcxx/__algorithm/ranges_sort.h b/third_party/libcxx/__algorithm/ranges_sort.h new file mode 100644 index 000000000..60305b10a --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_sort.h @@ -0,0 +1,79 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_SORT_H +#define _LIBCPP___ALGORITHM_RANGES_SORT_H + +#include <__algorithm/iterator_operations.h> +#include <__algorithm/make_projected.h> +#include <__algorithm/sort.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/next.h> +#include <__iterator/projected.h> +#include <__iterator/sortable.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/forward.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __sort { + +struct __fn { + template + _LIBCPP_HIDE_FROM_ABI constexpr static + _Iter __sort_fn_impl(_Iter __first, _Sent __last, _Comp& __comp, _Proj& __proj) { + auto __last_iter = ranges::next(__first, __last); + + auto&& __projected_comp = std::__make_projected(__comp, __proj); + std::__sort_impl<_RangeAlgPolicy>(std::move(__first), __last_iter, __projected_comp); + + return __last_iter; + } + + template _Sent, class _Comp = ranges::less, class _Proj = identity> + requires sortable<_Iter, _Comp, _Proj> + _LIBCPP_HIDE_FROM_ABI constexpr + _Iter operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { + return __sort_fn_impl(std::move(__first), std::move(__last), __comp, __proj); + } + + template + requires sortable, _Comp, _Proj> + _LIBCPP_HIDE_FROM_ABI constexpr + borrowed_iterator_t<_Range> operator()(_Range&& __r, _Comp __comp = {}, _Proj __proj = {}) const { + return __sort_fn_impl(ranges::begin(__r), ranges::end(__r), __comp, __proj); + } +}; + +} // namespace __sort + +inline namespace __cpo { + inline constexpr auto sort = __sort::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_SORT_H diff --git a/third_party/libcxx/__algorithm/ranges_sort_heap.h b/third_party/libcxx/__algorithm/ranges_sort_heap.h new file mode 100644 index 000000000..b40eef976 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_sort_heap.h @@ -0,0 +1,80 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_SORT_HEAP_H +#define _LIBCPP___ALGORITHM_RANGES_SORT_HEAP_H + +#include <__algorithm/iterator_operations.h> +#include <__algorithm/make_projected.h> +#include <__algorithm/sort_heap.h> +#include <__concepts/same_as.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/next.h> +#include <__iterator/projected.h> +#include <__iterator/sortable.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/forward.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __sort_heap { + +struct __fn { + template + _LIBCPP_HIDE_FROM_ABI constexpr static + _Iter __sort_heap_fn_impl(_Iter __first, _Sent __last, _Comp& __comp, _Proj& __proj) { + auto __last_iter = ranges::next(__first, __last); + + auto&& __projected_comp = std::__make_projected(__comp, __proj); + std::__sort_heap<_RangeAlgPolicy>(std::move(__first), __last_iter, __projected_comp); + + return __last_iter; + } + + template _Sent, class _Comp = ranges::less, class _Proj = identity> + requires sortable<_Iter, _Comp, _Proj> + _LIBCPP_HIDE_FROM_ABI constexpr + _Iter operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { + return __sort_heap_fn_impl(std::move(__first), std::move(__last), __comp, __proj); + } + + template + requires sortable, _Comp, _Proj> + _LIBCPP_HIDE_FROM_ABI constexpr + borrowed_iterator_t<_Range> operator()(_Range&& __r, _Comp __comp = {}, _Proj __proj = {}) const { + return __sort_heap_fn_impl(ranges::begin(__r), ranges::end(__r), __comp, __proj); + } +}; + +} // namespace __sort_heap + +inline namespace __cpo { + inline constexpr auto sort_heap = __sort_heap::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_SORT_HEAP_H diff --git a/third_party/libcxx/__algorithm/ranges_stable_partition.h b/third_party/libcxx/__algorithm/ranges_stable_partition.h new file mode 100644 index 000000000..77bef850a --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_stable_partition.h @@ -0,0 +1,88 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_STABLE_PARTITION_H +#define _LIBCPP___ALGORITHM_RANGES_STABLE_PARTITION_H + +#include <__algorithm/iterator_operations.h> +#include <__algorithm/make_projected.h> +#include <__algorithm/ranges_iterator_concept.h> +#include <__algorithm/stable_partition.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/next.h> +#include <__iterator/permutable.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__ranges/subrange.h> +#include <__type_traits/remove_cvref.h> +#include <__utility/forward.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __stable_partition { + +struct __fn { + + template + _LIBCPP_HIDE_FROM_ABI static + subrange<__remove_cvref_t<_Iter>> __stable_partition_fn_impl( + _Iter&& __first, _Sent&& __last, _Pred&& __pred, _Proj&& __proj) { + auto __last_iter = ranges::next(__first, __last); + + auto&& __projected_pred = std::__make_projected(__pred, __proj); + auto __result = std::__stable_partition<_RangeAlgPolicy>( + std::move(__first), __last_iter, __projected_pred, __iterator_concept<_Iter>()); + + return {std::move(__result), std::move(__last_iter)}; + } + + template _Sent, class _Proj = identity, + indirect_unary_predicate> _Pred> + requires permutable<_Iter> + _LIBCPP_HIDE_FROM_ABI + subrange<_Iter> operator()(_Iter __first, _Sent __last, _Pred __pred, _Proj __proj = {}) const { + return __stable_partition_fn_impl(__first, __last, __pred, __proj); + } + + template , _Proj>> _Pred> + requires permutable> + _LIBCPP_HIDE_FROM_ABI + borrowed_subrange_t<_Range> operator()(_Range&& __range, _Pred __pred, _Proj __proj = {}) const { + return __stable_partition_fn_impl(ranges::begin(__range), ranges::end(__range), __pred, __proj); + } + +}; + +} // namespace __stable_partition + +inline namespace __cpo { + inline constexpr auto stable_partition = __stable_partition::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_STABLE_PARTITION_H diff --git a/third_party/libcxx/__algorithm/ranges_stable_sort.h b/third_party/libcxx/__algorithm/ranges_stable_sort.h new file mode 100644 index 000000000..b823e3bcb --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_stable_sort.h @@ -0,0 +1,79 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_STABLE_SORT_H +#define _LIBCPP___ALGORITHM_RANGES_STABLE_SORT_H + +#include <__algorithm/iterator_operations.h> +#include <__algorithm/make_projected.h> +#include <__algorithm/stable_sort.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/next.h> +#include <__iterator/projected.h> +#include <__iterator/sortable.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/forward.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __stable_sort { + +struct __fn { + template + _LIBCPP_HIDE_FROM_ABI + static _Iter __stable_sort_fn_impl(_Iter __first, _Sent __last, _Comp& __comp, _Proj& __proj) { + auto __last_iter = ranges::next(__first, __last); + + auto&& __projected_comp = std::__make_projected(__comp, __proj); + std::__stable_sort_impl<_RangeAlgPolicy>(std::move(__first), __last_iter, __projected_comp); + + return __last_iter; + } + + template _Sent, class _Comp = ranges::less, class _Proj = identity> + requires sortable<_Iter, _Comp, _Proj> + _LIBCPP_HIDE_FROM_ABI + _Iter operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { + return __stable_sort_fn_impl(std::move(__first), std::move(__last), __comp, __proj); + } + + template + requires sortable, _Comp, _Proj> + _LIBCPP_HIDE_FROM_ABI + borrowed_iterator_t<_Range> operator()(_Range&& __r, _Comp __comp = {}, _Proj __proj = {}) const { + return __stable_sort_fn_impl(ranges::begin(__r), ranges::end(__r), __comp, __proj); + } +}; + +} // namespace __stable_sort + +inline namespace __cpo { + inline constexpr auto stable_sort = __stable_sort::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_STABLE_SORT_H diff --git a/third_party/libcxx/__algorithm/ranges_starts_with.h b/third_party/libcxx/__algorithm/ranges_starts_with.h new file mode 100644 index 000000000..7da78001d --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_starts_with.h @@ -0,0 +1,90 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_STARTS_WITH_H +#define _LIBCPP___ALGORITHM_RANGES_STARTS_WITH_H + +#include <__algorithm/in_in_result.h> +#include <__algorithm/ranges_mismatch.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/indirectly_comparable.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 23 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __starts_with { +struct __fn { + template _Sent1, + input_iterator _Iter2, + sentinel_for<_Iter2> _Sent2, + class _Pred = ranges::equal_to, + class _Proj1 = identity, + class _Proj2 = identity> + requires indirectly_comparable<_Iter1, _Iter2, _Pred, _Proj1, _Proj2> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr bool operator()( + _Iter1 __first1, + _Sent1 __last1, + _Iter2 __first2, + _Sent2 __last2, + _Pred __pred = {}, + _Proj1 __proj1 = {}, + _Proj2 __proj2 = {}) const { + return __mismatch::__fn::__go( + std::move(__first1), + std::move(__last1), + std::move(__first2), + std::move(__last2), + __pred, + __proj1, + __proj2) + .in2 == __last2; + } + + template + requires indirectly_comparable, iterator_t<_Range2>, _Pred, _Proj1, _Proj2> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr bool operator()( + _Range1&& __range1, _Range2&& __range2, _Pred __pred = {}, _Proj1 __proj1 = {}, _Proj2 __proj2 = {}) const { + return __mismatch::__fn::__go( + ranges::begin(__range1), + ranges::end(__range1), + ranges::begin(__range2), + ranges::end(__range2), + __pred, + __proj1, + __proj2) + .in2 == ranges::end(__range2); + } +}; +} // namespace __starts_with +inline namespace __cpo { +inline constexpr auto starts_with = __starts_with::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 23 + +#endif // _LIBCPP___ALGORITHM_RANGES_STARTS_WITH_H diff --git a/third_party/libcxx/__algorithm/ranges_swap_ranges.h b/third_party/libcxx/__algorithm/ranges_swap_ranges.h new file mode 100644 index 000000000..34124dbd8 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_swap_ranges.h @@ -0,0 +1,68 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_SWAP_RANGES_H +#define _LIBCPP___ALGORITHM_RANGES_SWAP_RANGES_H + +#include <__algorithm/in_in_result.h> +#include <__algorithm/iterator_operations.h> +#include <__algorithm/swap_ranges.h> +#include <__config> +#include <__iterator/concepts.h> +#include <__iterator/iter_swap.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { + +template +using swap_ranges_result = in_in_result<_I1, _I2>; + +namespace __swap_ranges { +struct __fn { + template _S1, + input_iterator _I2, sentinel_for<_I2> _S2> + requires indirectly_swappable<_I1, _I2> + _LIBCPP_HIDE_FROM_ABI constexpr swap_ranges_result<_I1, _I2> + operator()(_I1 __first1, _S1 __last1, _I2 __first2, _S2 __last2) const { + auto __ret = std::__swap_ranges<_RangeAlgPolicy>( + std::move(__first1), std::move(__last1), std::move(__first2), std::move(__last2)); + return {std::move(__ret.first), std::move(__ret.second)}; + } + + template + requires indirectly_swappable, iterator_t<_R2>> + _LIBCPP_HIDE_FROM_ABI constexpr + swap_ranges_result, borrowed_iterator_t<_R2>> + operator()(_R1&& __r1, _R2&& __r2) const { + return operator()(ranges::begin(__r1), ranges::end(__r1), + ranges::begin(__r2), ranges::end(__r2)); + } +}; +} // namespace __swap_ranges + +inline namespace __cpo { + inline constexpr auto swap_ranges = __swap_ranges::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_SWAP_RANGES_H diff --git a/third_party/libcxx/__algorithm/ranges_transform.h b/third_party/libcxx/__algorithm/ranges_transform.h new file mode 100644 index 000000000..1bba756fe --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_transform.h @@ -0,0 +1,170 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_TRANSFORM_H +#define _LIBCPP___ALGORITHM_RANGES_TRANSFORM_H + +#include <__algorithm/in_in_out_result.h> +#include <__algorithm/in_out_result.h> +#include <__concepts/constructible.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__iterator/concepts.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { + +template +using unary_transform_result = in_out_result<_Ip, _Op>; + +template +using binary_transform_result = in_in_out_result<_I1, _I2, _O1>; + +namespace __transform { +struct __fn { +private: + template + _LIBCPP_HIDE_FROM_ABI static constexpr + unary_transform_result<_InIter, _OutIter> __unary(_InIter __first, _Sent __last, + _OutIter __result, + _Func& __operation, + _Proj& __projection) { + while (__first != __last) { + *__result = std::invoke(__operation, std::invoke(__projection, *__first)); + ++__first; + ++__result; + } + + return {std::move(__first), std::move(__result)}; + } + + template + _LIBCPP_HIDE_FROM_ABI static constexpr binary_transform_result<_InIter1, _InIter2, _OutIter> + __binary(_InIter1 __first1, _Sent1 __last1, + _InIter2 __first2, _Sent2 __last2, + _OutIter __result, + _Func& __binary_operation, + _Proj1& __projection1, + _Proj2& __projection2) { + while (__first1 != __last1 && __first2 != __last2) { + *__result = std::invoke(__binary_operation, std::invoke(__projection1, *__first1), + std::invoke(__projection2, *__first2)); + ++__first1; + ++__first2; + ++__result; + } + return {std::move(__first1), std::move(__first2), std::move(__result)}; + } +public: + template _Sent, + weakly_incrementable _OutIter, + copy_constructible _Func, + class _Proj = identity> + requires indirectly_writable<_OutIter, indirect_result_t<_Func&, projected<_InIter, _Proj>>> + _LIBCPP_HIDE_FROM_ABI constexpr + unary_transform_result<_InIter, _OutIter> operator()(_InIter __first, _Sent __last, + _OutIter __result, + _Func __operation, + _Proj __proj = {}) const { + return __unary(std::move(__first), std::move(__last), std::move(__result), __operation, __proj); + } + + template + requires indirectly_writable<_OutIter, indirect_result_t<_Func, projected, _Proj>>> + _LIBCPP_HIDE_FROM_ABI constexpr + unary_transform_result, _OutIter> operator()(_Range&& __range, + _OutIter __result, + _Func __operation, + _Proj __projection = {}) const { + return __unary(ranges::begin(__range), ranges::end(__range), std::move(__result), __operation, __projection); + } + + template _Sent1, + input_iterator _InIter2, sentinel_for<_InIter2> _Sent2, + weakly_incrementable _OutIter, + copy_constructible _Func, + class _Proj1 = identity, + class _Proj2 = identity> + requires indirectly_writable<_OutIter, indirect_result_t<_Func&, projected<_InIter1, _Proj1>, + projected<_InIter2, _Proj2>>> + _LIBCPP_HIDE_FROM_ABI constexpr + binary_transform_result<_InIter1, _InIter2, _OutIter> operator()(_InIter1 __first1, _Sent1 __last1, + _InIter2 __first2, _Sent2 __last2, + _OutIter __result, + _Func __binary_operation, + _Proj1 __projection1 = {}, + _Proj2 __projection2 = {}) const { + return __binary(std::move(__first1), std::move(__last1), + std::move(__first2), std::move(__last2), + std::move(__result), + __binary_operation, + __projection1, + __projection2); + } + + template + requires indirectly_writable<_OutIter, indirect_result_t<_Func&, projected, _Proj1>, + projected, _Proj2>>> + _LIBCPP_HIDE_FROM_ABI constexpr + binary_transform_result, borrowed_iterator_t<_Range2>, _OutIter> + operator()(_Range1&& __range1, + _Range2&& __range2, + _OutIter __result, + _Func __binary_operation, + _Proj1 __projection1 = {}, + _Proj2 __projection2 = {}) const { + return __binary(ranges::begin(__range1), ranges::end(__range1), + ranges::begin(__range2), ranges::end(__range2), + std::move(__result), + __binary_operation, + __projection1, + __projection2); + } + +}; +} // namespace __transform + +inline namespace __cpo { + inline constexpr auto transform = __transform::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_TRANSFORM_H diff --git a/third_party/libcxx/__algorithm/ranges_unique.h b/third_party/libcxx/__algorithm/ranges_unique.h new file mode 100644 index 000000000..9e05c09fe --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_unique.h @@ -0,0 +1,79 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_UNIQUE_H +#define _LIBCPP___ALGORITHM_RANGES_UNIQUE_H + +#include <__algorithm/iterator_operations.h> +#include <__algorithm/make_projected.h> +#include <__algorithm/unique.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/permutable.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__ranges/subrange.h> +#include <__utility/forward.h> +#include <__utility/move.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __unique { + + struct __fn { + template < + permutable _Iter, + sentinel_for<_Iter> _Sent, + class _Proj = identity, + indirect_equivalence_relation> _Comp = ranges::equal_to> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr subrange<_Iter> + operator()(_Iter __first, _Sent __last, _Comp __comp = {}, _Proj __proj = {}) const { + auto __ret = std::__unique<_RangeAlgPolicy>( + std::move(__first), std::move(__last), std::__make_projected(__comp, __proj)); + return {std::move(__ret.first), std::move(__ret.second)}; + } + + template < + forward_range _Range, + class _Proj = identity, + indirect_equivalence_relation, _Proj>> _Comp = ranges::equal_to> + requires permutable> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr borrowed_subrange_t<_Range> + operator()(_Range&& __range, _Comp __comp = {}, _Proj __proj = {}) const { + auto __ret = std::__unique<_RangeAlgPolicy>( + ranges::begin(__range), ranges::end(__range), std::__make_projected(__comp, __proj)); + return {std::move(__ret.first), std::move(__ret.second)}; + } + }; + +} // namespace __unique + +inline namespace __cpo { + inline constexpr auto unique = __unique::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_UNIQUE_H diff --git a/third_party/libcxx/__algorithm/ranges_unique_copy.h b/third_party/libcxx/__algorithm/ranges_unique_copy.h new file mode 100644 index 000000000..2aaa879ea --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_unique_copy.h @@ -0,0 +1,116 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_UNIQUE_COPY_H +#define _LIBCPP___ALGORITHM_RANGES_UNIQUE_COPY_H + +#include <__algorithm/in_out_result.h> +#include <__algorithm/iterator_operations.h> +#include <__algorithm/make_projected.h> +#include <__algorithm/unique_copy.h> +#include <__concepts/same_as.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/projected.h> +#include <__iterator/readable_traits.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> +#include <__utility/forward.h> +#include <__utility/move.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { + +template +using unique_copy_result = in_out_result<_InIter, _OutIter>; + +namespace __unique_copy { + +template +concept __can_reread_from_output = (input_iterator<_OutIter> && same_as, iter_value_t<_OutIter>>); + +struct __fn { + template + static consteval auto __get_algo_tag() { + if constexpr (forward_iterator<_InIter>) { + return __unique_copy_tags::__reread_from_input_tag{}; + } else if constexpr (__can_reread_from_output<_InIter, _OutIter>) { + return __unique_copy_tags::__reread_from_output_tag{}; + } else if constexpr (indirectly_copyable_storable<_InIter, _OutIter>) { + return __unique_copy_tags::__read_from_tmp_value_tag{}; + } + } + + template + using __algo_tag_t = decltype(__get_algo_tag<_InIter, _OutIter>()); + + template _Sent, + weakly_incrementable _OutIter, + class _Proj = identity, + indirect_equivalence_relation> _Comp = ranges::equal_to> + requires indirectly_copyable<_InIter, _OutIter> && + (forward_iterator<_InIter> || + (input_iterator<_OutIter> && same_as, iter_value_t<_OutIter>>) || + indirectly_copyable_storable<_InIter, _OutIter>) + _LIBCPP_HIDE_FROM_ABI constexpr unique_copy_result<_InIter, _OutIter> + operator()(_InIter __first, _Sent __last, _OutIter __result, _Comp __comp = {}, _Proj __proj = {}) const { + auto __ret = std::__unique_copy<_RangeAlgPolicy>( + std::move(__first), + std::move(__last), + std::move(__result), + std::__make_projected(__comp, __proj), + __algo_tag_t<_InIter, _OutIter>()); + return {std::move(__ret.first), std::move(__ret.second)}; + } + + template , _Proj>> _Comp = ranges::equal_to> + requires indirectly_copyable, _OutIter> && + (forward_iterator> || + (input_iterator<_OutIter> && same_as, iter_value_t<_OutIter>>) || + indirectly_copyable_storable, _OutIter>) + _LIBCPP_HIDE_FROM_ABI constexpr unique_copy_result, _OutIter> + operator()(_Range&& __range, _OutIter __result, _Comp __comp = {}, _Proj __proj = {}) const { + auto __ret = std::__unique_copy<_RangeAlgPolicy>( + ranges::begin(__range), + ranges::end(__range), + std::move(__result), + std::__make_projected(__comp, __proj), + __algo_tag_t, _OutIter>()); + return {std::move(__ret.first), std::move(__ret.second)}; + } +}; + +} // namespace __unique_copy + +inline namespace __cpo { +inline constexpr auto unique_copy = __unique_copy::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_UNIQUE_COPY_H diff --git a/third_party/libcxx/__algorithm/ranges_upper_bound.h b/third_party/libcxx/__algorithm/ranges_upper_bound.h new file mode 100644 index 000000000..43ce89b89 --- /dev/null +++ b/third_party/libcxx/__algorithm/ranges_upper_bound.h @@ -0,0 +1,75 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_UPPER_BOUND_H +#define _LIBCPP___ALGORITHM_RANGES_UPPER_BOUND_H + +#include <__algorithm/iterator_operations.h> +#include <__algorithm/lower_bound.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/projected.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/dangling.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { +namespace __upper_bound { +struct __fn { + template _Sent, class _Type, class _Proj = identity, + indirect_strict_weak_order> _Comp = ranges::less> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + _Iter operator()(_Iter __first, _Sent __last, const _Type& __value, _Comp __comp = {}, _Proj __proj = {}) const { + auto __comp_lhs_rhs_swapped = [&](const auto& __lhs, const auto& __rhs) { + return !std::invoke(__comp, __rhs, __lhs); + }; + + return std::__lower_bound_impl<_RangeAlgPolicy>(__first, __last, __value, __comp_lhs_rhs_swapped, __proj); + } + + template , _Proj>> _Comp = ranges::less> + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr + borrowed_iterator_t<_Range> operator()(_Range&& __r, + const _Type& __value, + _Comp __comp = {}, + _Proj __proj = {}) const { + auto __comp_lhs_rhs_swapped = [&](const auto& __lhs, const auto& __rhs) { + return !std::invoke(__comp, __rhs, __lhs); + }; + + return std::__lower_bound_impl<_RangeAlgPolicy>(ranges::begin(__r), + ranges::end(__r), + __value, + __comp_lhs_rhs_swapped, + __proj); + } +}; +} // namespace __upper_bound + +inline namespace __cpo { + inline constexpr auto upper_bound = __upper_bound::__fn{}; +} // namespace __cpo +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_UPPER_BOUND_H diff --git a/third_party/libcxx/__algorithm/remove.h b/third_party/libcxx/__algorithm/remove.h new file mode 100644 index 000000000..533e41b54 --- /dev/null +++ b/third_party/libcxx/__algorithm/remove.h @@ -0,0 +1,45 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_REMOVE_H +#define _LIBCPP___ALGORITHM_REMOVE_H + +#include <__algorithm/find.h> +#include <__algorithm/find_if.h> +#include <__config> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator +remove(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) +{ + __first = _VSTD::find(__first, __last, __value); + if (__first != __last) + { + _ForwardIterator __i = __first; + while (++__i != __last) + { + if (!(*__i == __value)) + { + *__first = _VSTD::move(*__i); + ++__first; + } + } + } + return __first; +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_REMOVE_H diff --git a/third_party/libcxx/__algorithm/remove_copy.h b/third_party/libcxx/__algorithm/remove_copy.h new file mode 100644 index 000000000..ecba08a05 --- /dev/null +++ b/third_party/libcxx/__algorithm/remove_copy.h @@ -0,0 +1,38 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_REMOVE_COPY_H +#define _LIBCPP___ALGORITHM_REMOVE_COPY_H + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +_OutputIterator +remove_copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result, const _Tp& __value) +{ + for (; __first != __last; ++__first) + { + if (!(*__first == __value)) + { + *__result = *__first; + ++__result; + } + } + return __result; +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_REMOVE_COPY_H diff --git a/third_party/libcxx/__algorithm/remove_copy_if.h b/third_party/libcxx/__algorithm/remove_copy_if.h new file mode 100644 index 000000000..2f235fd32 --- /dev/null +++ b/third_party/libcxx/__algorithm/remove_copy_if.h @@ -0,0 +1,38 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_REMOVE_COPY_IF_H +#define _LIBCPP___ALGORITHM_REMOVE_COPY_IF_H + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +_OutputIterator +remove_copy_if(_InputIterator __first, _InputIterator __last, _OutputIterator __result, _Predicate __pred) +{ + for (; __first != __last; ++__first) + { + if (!__pred(*__first)) + { + *__result = *__first; + ++__result; + } + } + return __result; +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_REMOVE_COPY_IF_H diff --git a/third_party/libcxx/__algorithm/remove_if.h b/third_party/libcxx/__algorithm/remove_if.h new file mode 100644 index 000000000..27350728d --- /dev/null +++ b/third_party/libcxx/__algorithm/remove_if.h @@ -0,0 +1,44 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_REMOVE_IF_H +#define _LIBCPP___ALGORITHM_REMOVE_IF_H + +#include <__algorithm/find_if.h> +#include <__config> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator +remove_if(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred) +{ + __first = _VSTD::find_if<_ForwardIterator, _Predicate&>(__first, __last, __pred); + if (__first != __last) + { + _ForwardIterator __i = __first; + while (++__i != __last) + { + if (!__pred(*__i)) + { + *__first = _VSTD::move(*__i); + ++__first; + } + } + } + return __first; +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_REMOVE_IF_H diff --git a/third_party/libcxx/__algorithm/replace.h b/third_party/libcxx/__algorithm/replace.h new file mode 100644 index 000000000..ce6215066 --- /dev/null +++ b/third_party/libcxx/__algorithm/replace.h @@ -0,0 +1,32 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_REPLACE_H +#define _LIBCPP___ALGORITHM_REPLACE_H + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +void +replace(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __old_value, const _Tp& __new_value) +{ + for (; __first != __last; ++__first) + if (*__first == __old_value) + *__first = __new_value; +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_REPLACE_H diff --git a/third_party/libcxx/__algorithm/replace_copy.h b/third_party/libcxx/__algorithm/replace_copy.h new file mode 100644 index 000000000..bebb14cbe --- /dev/null +++ b/third_party/libcxx/__algorithm/replace_copy.h @@ -0,0 +1,36 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_REPLACE_COPY_H +#define _LIBCPP___ALGORITHM_REPLACE_COPY_H + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +_OutputIterator +replace_copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result, + const _Tp& __old_value, const _Tp& __new_value) +{ + for (; __first != __last; ++__first, (void) ++__result) + if (*__first == __old_value) + *__result = __new_value; + else + *__result = *__first; + return __result; +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_REPLACE_COPY_H diff --git a/third_party/libcxx/__algorithm/replace_copy_if.h b/third_party/libcxx/__algorithm/replace_copy_if.h new file mode 100644 index 000000000..e1ddb527b --- /dev/null +++ b/third_party/libcxx/__algorithm/replace_copy_if.h @@ -0,0 +1,36 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_REPLACE_COPY_IF_H +#define _LIBCPP___ALGORITHM_REPLACE_COPY_IF_H + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +_OutputIterator +replace_copy_if(_InputIterator __first, _InputIterator __last, _OutputIterator __result, + _Predicate __pred, const _Tp& __new_value) +{ + for (; __first != __last; ++__first, (void) ++__result) + if (__pred(*__first)) + *__result = __new_value; + else + *__result = *__first; + return __result; +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_REPLACE_COPY_IF_H diff --git a/third_party/libcxx/__algorithm/replace_if.h b/third_party/libcxx/__algorithm/replace_if.h new file mode 100644 index 000000000..b3a3367d2 --- /dev/null +++ b/third_party/libcxx/__algorithm/replace_if.h @@ -0,0 +1,32 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_REPLACE_IF_H +#define _LIBCPP___ALGORITHM_REPLACE_IF_H + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +void +replace_if(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred, const _Tp& __new_value) +{ + for (; __first != __last; ++__first) + if (__pred(*__first)) + *__first = __new_value; +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_REPLACE_IF_H diff --git a/third_party/libcxx/__algorithm/reverse.h b/third_party/libcxx/__algorithm/reverse.h new file mode 100644 index 000000000..aa7695170 --- /dev/null +++ b/third_party/libcxx/__algorithm/reverse.h @@ -0,0 +1,65 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_REVERSE_H +#define _LIBCPP___ALGORITHM_REVERSE_H + +#include <__algorithm/iter_swap.h> +#include <__algorithm/iterator_operations.h> +#include <__config> +#include <__iterator/iterator_traits.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +void +__reverse_impl(_BidirectionalIterator __first, _BidirectionalIterator __last, bidirectional_iterator_tag) +{ + while (__first != __last) + { + if (__first == --__last) + break; + _IterOps<_AlgPolicy>::iter_swap(__first, __last); + ++__first; + } +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +void +__reverse_impl(_RandomAccessIterator __first, _RandomAccessIterator __last, random_access_iterator_tag) +{ + if (__first != __last) + for (; __first < --__last; ++__first) + _IterOps<_AlgPolicy>::iter_swap(__first, __last); +} + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 +void __reverse(_BidirectionalIterator __first, _Sentinel __last) { + using _IterCategory = typename _IterOps<_AlgPolicy>::template __iterator_category<_BidirectionalIterator>; + std::__reverse_impl<_AlgPolicy>(std::move(__first), std::move(__last), _IterCategory()); +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +void +reverse(_BidirectionalIterator __first, _BidirectionalIterator __last) +{ + std::__reverse<_ClassicAlgPolicy>(std::move(__first), std::move(__last)); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_REVERSE_H diff --git a/third_party/libcxx/__algorithm/reverse_copy.h b/third_party/libcxx/__algorithm/reverse_copy.h new file mode 100644 index 000000000..f4a0e9713 --- /dev/null +++ b/third_party/libcxx/__algorithm/reverse_copy.h @@ -0,0 +1,32 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_REVERSE_COPY_H +#define _LIBCPP___ALGORITHM_REVERSE_COPY_H + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +_OutputIterator +reverse_copy(_BidirectionalIterator __first, _BidirectionalIterator __last, _OutputIterator __result) +{ + for (; __first != __last; ++__result) + *__result = *--__last; + return __result; +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_REVERSE_COPY_H diff --git a/third_party/libcxx/__algorithm/rotate.h b/third_party/libcxx/__algorithm/rotate.h new file mode 100644 index 000000000..7ed6f1862 --- /dev/null +++ b/third_party/libcxx/__algorithm/rotate.h @@ -0,0 +1,221 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_ROTATE_H +#define _LIBCPP___ALGORITHM_ROTATE_H + +#include <__algorithm/iterator_operations.h> +#include <__algorithm/move.h> +#include <__algorithm/move_backward.h> +#include <__algorithm/swap_ranges.h> +#include <__config> +#include <__iterator/iterator_traits.h> +#include <__type_traits/is_trivially_move_assignable.h> +#include <__utility/move.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _ForwardIterator +__rotate_left(_ForwardIterator __first, _ForwardIterator __last) +{ + typedef typename iterator_traits<_ForwardIterator>::value_type value_type; + using _Ops = _IterOps<_AlgPolicy>; + + value_type __tmp = _Ops::__iter_move(__first); + _ForwardIterator __lm1 = std::__move<_AlgPolicy>( + _Ops::next(__first), __last, __first).second; + *__lm1 = _VSTD::move(__tmp); + return __lm1; +} + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _BidirectionalIterator +__rotate_right(_BidirectionalIterator __first, _BidirectionalIterator __last) +{ + typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type; + using _Ops = _IterOps<_AlgPolicy>; + + _BidirectionalIterator __lm1 = _Ops::prev(__last); + value_type __tmp = _Ops::__iter_move(__lm1); + _BidirectionalIterator __fp1 = std::__move_backward<_AlgPolicy>(__first, __lm1, std::move(__last)).second; + *__first = _VSTD::move(__tmp); + return __fp1; +} + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 _ForwardIterator +__rotate_forward(_ForwardIterator __first, _ForwardIterator __middle, _ForwardIterator __last) +{ + _ForwardIterator __i = __middle; + while (true) + { + _IterOps<_AlgPolicy>::iter_swap(__first, __i); + ++__first; + if (++__i == __last) + break; + if (__first == __middle) + __middle = __i; + } + _ForwardIterator __r = __first; + if (__first != __middle) + { + __i = __middle; + while (true) + { + _IterOps<_AlgPolicy>::iter_swap(__first, __i); + ++__first; + if (++__i == __last) + { + if (__first == __middle) + break; + __i = __middle; + } + else if (__first == __middle) + __middle = __i; + } + } + return __r; +} + +template +inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR_SINCE_CXX17 _Integral +__algo_gcd(_Integral __x, _Integral __y) +{ + do + { + _Integral __t = __x % __y; + __x = __y; + __y = __t; + } while (__y); + return __x; +} + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 _RandomAccessIterator +__rotate_gcd(_RandomAccessIterator __first, _RandomAccessIterator __middle, _RandomAccessIterator __last) +{ + typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; + typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; + using _Ops = _IterOps<_AlgPolicy>; + + const difference_type __m1 = __middle - __first; + const difference_type __m2 = _Ops::distance(__middle, __last); + if (__m1 == __m2) + { + std::__swap_ranges<_AlgPolicy>(__first, __middle, __middle, __last); + return __middle; + } + const difference_type __g = _VSTD::__algo_gcd(__m1, __m2); + for (_RandomAccessIterator __p = __first + __g; __p != __first;) + { + value_type __t(_Ops::__iter_move(--__p)); + _RandomAccessIterator __p1 = __p; + _RandomAccessIterator __p2 = __p1 + __m1; + do + { + *__p1 = _Ops::__iter_move(__p2); + __p1 = __p2; + const difference_type __d = _Ops::distance(__p2, __last); + if (__m1 < __d) + __p2 += __m1; + else + __p2 = __first + (__m1 - __d); + } while (__p2 != __p); + *__p1 = _VSTD::move(__t); + } + return __first + __m2; +} + +template +inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR_SINCE_CXX14 _ForwardIterator +__rotate_impl(_ForwardIterator __first, _ForwardIterator __middle, _ForwardIterator __last, + _VSTD::forward_iterator_tag) +{ + typedef typename iterator_traits<_ForwardIterator>::value_type value_type; + if (is_trivially_move_assignable::value) + { + if (_IterOps<_AlgPolicy>::next(__first) == __middle) + return std::__rotate_left<_AlgPolicy>(__first, __last); + } + return std::__rotate_forward<_AlgPolicy>(__first, __middle, __last); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR_SINCE_CXX14 _BidirectionalIterator +__rotate_impl(_BidirectionalIterator __first, _BidirectionalIterator __middle, _BidirectionalIterator __last, + bidirectional_iterator_tag) +{ + typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type; + if (is_trivially_move_assignable::value) + { + if (_IterOps<_AlgPolicy>::next(__first) == __middle) + return std::__rotate_left<_AlgPolicy>(__first, __last); + if (_IterOps<_AlgPolicy>::next(__middle) == __last) + return std::__rotate_right<_AlgPolicy>(__first, __last); + } + return std::__rotate_forward<_AlgPolicy>(__first, __middle, __last); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR_SINCE_CXX14 _RandomAccessIterator +__rotate_impl(_RandomAccessIterator __first, _RandomAccessIterator __middle, _RandomAccessIterator __last, + random_access_iterator_tag) +{ + typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; + if (is_trivially_move_assignable::value) + { + if (_IterOps<_AlgPolicy>::next(__first) == __middle) + return std::__rotate_left<_AlgPolicy>(__first, __last); + if (_IterOps<_AlgPolicy>::next(__middle) == __last) + return std::__rotate_right<_AlgPolicy>(__first, __last); + return std::__rotate_gcd<_AlgPolicy>(__first, __middle, __last); + } + return std::__rotate_forward<_AlgPolicy>(__first, __middle, __last); +} + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 +pair<_Iterator, _Iterator> +__rotate(_Iterator __first, _Iterator __middle, _Sentinel __last) { + using _Ret = pair<_Iterator, _Iterator>; + _Iterator __last_iter = _IterOps<_AlgPolicy>::next(__middle, __last); + + if (__first == __middle) + return _Ret(__last_iter, __last_iter); + if (__middle == __last) + return _Ret(std::move(__first), std::move(__last_iter)); + + using _IterCategory = typename _IterOps<_AlgPolicy>::template __iterator_category<_Iterator>; + auto __result = std::__rotate_impl<_AlgPolicy>( + std::move(__first), std::move(__middle), __last_iter, _IterCategory()); + + return _Ret(std::move(__result), std::move(__last_iter)); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator +rotate(_ForwardIterator __first, _ForwardIterator __middle, _ForwardIterator __last) +{ + return std::__rotate<_ClassicAlgPolicy>( + std::move(__first), std::move(__middle), std::move(__last)).first; +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_ROTATE_H diff --git a/third_party/libcxx/__algorithm/rotate_copy.h b/third_party/libcxx/__algorithm/rotate_copy.h new file mode 100644 index 000000000..c154649ab --- /dev/null +++ b/third_party/libcxx/__algorithm/rotate_copy.h @@ -0,0 +1,31 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_ROTATE_COPY_H +#define _LIBCPP___ALGORITHM_ROTATE_COPY_H + +#include <__algorithm/copy.h> +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +_OutputIterator +rotate_copy(_ForwardIterator __first, _ForwardIterator __middle, _ForwardIterator __last, _OutputIterator __result) +{ + return _VSTD::copy(__first, __middle, _VSTD::copy(__middle, __last, __result)); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_ROTATE_COPY_H diff --git a/third_party/libcxx/__algorithm/sample.h b/third_party/libcxx/__algorithm/sample.h new file mode 100644 index 000000000..8769d494e --- /dev/null +++ b/third_party/libcxx/__algorithm/sample.h @@ -0,0 +1,112 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_SAMPLE_H +#define _LIBCPP___ALGORITHM_SAMPLE_H + +#include <__algorithm/iterator_operations.h> +#include <__algorithm/min.h> +#include <__assert> +#include <__config> +#include <__iterator/distance.h> +#include <__iterator/iterator_traits.h> +#include <__random/uniform_int_distribution.h> +#include <__type_traits/common_type.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_INLINE_VISIBILITY +_SampleIterator __sample(_PopulationIterator __first, + _PopulationSentinel __last, _SampleIterator __output_iter, + _Distance __n, + _UniformRandomNumberGenerator& __g, + input_iterator_tag) { + + _Distance __k = 0; + for (; __first != __last && __k < __n; ++__first, (void) ++__k) + __output_iter[__k] = *__first; + _Distance __sz = __k; + for (; __first != __last; ++__first, (void) ++__k) { + _Distance __r = uniform_int_distribution<_Distance>(0, __k)(__g); + if (__r < __sz) + __output_iter[__r] = *__first; + } + return __output_iter + _VSTD::min(__n, __k); +} + +template +_LIBCPP_INLINE_VISIBILITY +_SampleIterator __sample(_PopulationIterator __first, + _PopulationSentinel __last, _SampleIterator __output_iter, + _Distance __n, + _UniformRandomNumberGenerator& __g, + forward_iterator_tag) { + _Distance __unsampled_sz = _IterOps<_AlgPolicy>::distance(__first, __last); + for (__n = _VSTD::min(__n, __unsampled_sz); __n != 0; ++__first) { + _Distance __r = uniform_int_distribution<_Distance>(0, --__unsampled_sz)(__g); + if (__r < __n) { + *__output_iter++ = *__first; + --__n; + } + } + return __output_iter; +} + +template +_LIBCPP_INLINE_VISIBILITY +_SampleIterator __sample(_PopulationIterator __first, + _PopulationSentinel __last, _SampleIterator __output_iter, + _Distance __n, _UniformRandomNumberGenerator& __g) { + _LIBCPP_ASSERT(__n >= 0, "N must be a positive number."); + + using _PopIterCategory = typename _IterOps<_AlgPolicy>::template __iterator_category<_PopulationIterator>; + using _Difference = typename _IterOps<_AlgPolicy>::template __difference_type<_PopulationIterator>; + using _CommonType = typename common_type<_Distance, _Difference>::type; + + return std::__sample<_AlgPolicy>( + std::move(__first), std::move(__last), std::move(__output_iter), _CommonType(__n), + __g, _PopIterCategory()); +} + +#if _LIBCPP_STD_VER >= 17 +template +inline _LIBCPP_INLINE_VISIBILITY +_SampleIterator sample(_PopulationIterator __first, + _PopulationIterator __last, _SampleIterator __output_iter, + _Distance __n, _UniformRandomNumberGenerator&& __g) { + static_assert(__has_forward_iterator_category<_PopulationIterator>::value || + __has_random_access_iterator_category<_SampleIterator>::value, + "SampleIterator must meet the requirements of RandomAccessIterator"); + + return std::__sample<_ClassicAlgPolicy>( + std::move(__first), std::move(__last), std::move(__output_iter), __n, __g); +} + +#endif // _LIBCPP_STD_VER >= 17 + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP___ALGORITHM_SAMPLE_H diff --git a/third_party/libcxx/__algorithm/search.h b/third_party/libcxx/__algorithm/search.h new file mode 100644 index 000000000..5882a0480 --- /dev/null +++ b/third_party/libcxx/__algorithm/search.h @@ -0,0 +1,202 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_SEARCH_H +#define _LIBCPP___ALGORITHM_SEARCH_H + +#include <__algorithm/comp.h> +#include <__algorithm/iterator_operations.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__iterator/advance.h> +#include <__iterator/concepts.h> +#include <__iterator/iterator_traits.h> +#include <__type_traits/enable_if.h> +#include <__type_traits/is_callable.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 +pair<_Iter1, _Iter1> __search_forward_impl(_Iter1 __first1, _Sent1 __last1, + _Iter2 __first2, _Sent2 __last2, + _Pred& __pred, + _Proj1& __proj1, + _Proj2& __proj2) { + if (__first2 == __last2) + return std::make_pair(__first1, __first1); // Everything matches an empty sequence + while (true) { + // Find first element in sequence 1 that matchs *__first2, with a mininum of loop checks + while (true) { + if (__first1 == __last1) { // return __last1 if no element matches *__first2 + _IterOps<_AlgPolicy>::__advance_to(__first1, __last1); + return std::make_pair(__first1, __first1); + } + if (std::__invoke(__pred, std::__invoke(__proj1, *__first1), std::__invoke(__proj2, *__first2))) + break; + ++__first1; + } + // *__first1 matches *__first2, now match elements after here + _Iter1 __m1 = __first1; + _Iter2 __m2 = __first2; + while (true) { + if (++__m2 == __last2) // If pattern exhausted, __first1 is the answer (works for 1 element pattern) + return std::make_pair(__first1, ++__m1); + if (++__m1 == __last1) { // Otherwise if source exhaused, pattern not found + return std::make_pair(__m1, __m1); + } + + // if there is a mismatch, restart with a new __first1 + if (!std::__invoke(__pred, std::__invoke(__proj1, *__m1), std::__invoke(__proj2, *__m2))) + { + ++__first1; + break; + } // else there is a match, check next elements + } + } +} + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 +pair<_Iter1, _Iter1> __search_random_access_impl(_Iter1 __first1, _Sent1 __last1, + _Iter2 __first2, _Sent2 __last2, + _Pred& __pred, + _Proj1& __proj1, + _Proj2& __proj2, + _DiffT1 __size1, + _DiffT2 __size2) { + const _Iter1 __s = __first1 + __size1 - _DiffT1(__size2 - 1); // Start of pattern match can't go beyond here + + while (true) { + while (true) { + if (__first1 == __s) { + _IterOps<_AlgPolicy>::__advance_to(__first1, __last1); + return std::make_pair(__first1, __first1); + } + if (std::__invoke(__pred, std::__invoke(__proj1, *__first1), std::__invoke(__proj2, *__first2))) + break; + ++__first1; + } + + _Iter1 __m1 = __first1; + _Iter2 __m2 = __first2; + while (true) { + if (++__m2 == __last2) + return std::make_pair(__first1, __first1 + _DiffT1(__size2)); + ++__m1; // no need to check range on __m1 because __s guarantees we have enough source + if (!std::__invoke(__pred, std::__invoke(__proj1, *__m1), std::__invoke(__proj2, *__m2))) { + ++__first1; + break; + } + } + } +} + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 +pair<_Iter1, _Iter1> __search_impl(_Iter1 __first1, _Sent1 __last1, + _Iter2 __first2, _Sent2 __last2, + _Pred& __pred, + _Proj1& __proj1, + _Proj2& __proj2, + __enable_if_t<__has_random_access_iterator_category<_Iter1>::value + && __has_random_access_iterator_category<_Iter2>::value>* = nullptr) { + + auto __size2 = __last2 - __first2; + if (__size2 == 0) + return std::make_pair(__first1, __first1); + + auto __size1 = __last1 - __first1; + if (__size1 < __size2) { + return std::make_pair(__last1, __last1); + } + + return std::__search_random_access_impl<_ClassicAlgPolicy>(__first1, __last1, + __first2, __last2, + __pred, + __proj1, + __proj2, + __size1, + __size2); +} + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 +pair<_Iter1, _Iter1> __search_impl(_Iter1 __first1, _Sent1 __last1, + _Iter2 __first2, _Sent2 __last2, + _Pred& __pred, + _Proj1& __proj1, + _Proj2& __proj2, + __enable_if_t<__has_forward_iterator_category<_Iter1>::value + && __has_forward_iterator_category<_Iter2>::value + && !(__has_random_access_iterator_category<_Iter1>::value + && __has_random_access_iterator_category<_Iter2>::value)>* = nullptr) { + return std::__search_forward_impl<_ClassicAlgPolicy>(__first1, __last1, + __first2, __last2, + __pred, + __proj1, + __proj2); +} + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +_ForwardIterator1 search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, + _ForwardIterator2 __first2, _ForwardIterator2 __last2, + _BinaryPredicate __pred) { + static_assert(__is_callable<_BinaryPredicate, decltype(*__first1), decltype(*__first2)>::value, + "BinaryPredicate has to be callable"); + auto __proj = __identity(); + return std::__search_impl(__first1, __last1, __first2, __last2, __pred, __proj, __proj).first; +} + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +_ForwardIterator1 search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, + _ForwardIterator2 __first2, _ForwardIterator2 __last2) { + return std::search(__first1, __last1, __first2, __last2, __equal_to()); +} + +#if _LIBCPP_STD_VER >= 17 +template +_LIBCPP_NODISCARD_EXT _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator +search(_ForwardIterator __f, _ForwardIterator __l, const _Searcher& __s) { + return __s(__f, __l).first; +} + +#endif + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_SEARCH_H diff --git a/third_party/libcxx/__algorithm/search_n.h b/third_party/libcxx/__algorithm/search_n.h new file mode 100644 index 000000000..7e3ddf48a --- /dev/null +++ b/third_party/libcxx/__algorithm/search_n.h @@ -0,0 +1,182 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_SEARCH_N_H +#define _LIBCPP___ALGORITHM_SEARCH_N_H + +#include <__algorithm/comp.h> +#include <__algorithm/iterator_operations.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__iterator/advance.h> +#include <__iterator/concepts.h> +#include <__iterator/distance.h> +#include <__iterator/iterator_traits.h> +#include <__ranges/concepts.h> +#include <__type_traits/is_callable.h> +#include <__utility/convert_to_integral.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 +pair<_Iter, _Iter> __search_n_forward_impl(_Iter __first, _Sent __last, + _SizeT __count, + const _Type& __value, + _Pred& __pred, + _Proj& __proj) { + if (__count <= 0) + return std::make_pair(__first, __first); + while (true) { + // Find first element in sequence that matchs __value, with a mininum of loop checks + while (true) { + if (__first == __last) { // return __last if no element matches __value + _IterOps<_AlgPolicy>::__advance_to(__first, __last); + return std::make_pair(__first, __first); + } + if (std::__invoke(__pred, std::__invoke(__proj, *__first), __value)) + break; + ++__first; + } + // *__first matches __value, now match elements after here + _Iter __m = __first; + _SizeT __c(0); + while (true) { + if (++__c == __count) // If pattern exhausted, __first is the answer (works for 1 element pattern) + return std::make_pair(__first, ++__m); + if (++__m == __last) { // Otherwise if source exhaused, pattern not found + _IterOps<_AlgPolicy>::__advance_to(__first, __last); + return std::make_pair(__first, __first); + } + + // if there is a mismatch, restart with a new __first + if (!std::__invoke(__pred, std::__invoke(__proj, *__m), __value)) + { + __first = __m; + ++__first; + break; + } // else there is a match, check next elements + } + } +} + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 +std::pair<_Iter, _Iter> __search_n_random_access_impl(_Iter __first, _Sent __last, + _SizeT __count, + const _Type& __value, + _Pred& __pred, + _Proj& __proj, + _DiffT __size1) { + using difference_type = typename iterator_traits<_Iter>::difference_type; + if (__count == 0) + return std::make_pair(__first, __first); + if (__size1 < static_cast<_DiffT>(__count)) { + _IterOps<_AlgPolicy>::__advance_to(__first, __last); + return std::make_pair(__first, __first); + } + + const auto __s = __first + __size1 - difference_type(__count - 1); // Start of pattern match can't go beyond here + while (true) { + // Find first element in sequence that matchs __value, with a mininum of loop checks + while (true) { + if (__first >= __s) { // return __last if no element matches __value + _IterOps<_AlgPolicy>::__advance_to(__first, __last); + return std::make_pair(__first, __first); + } + if (std::__invoke(__pred, std::__invoke(__proj, *__first), __value)) + break; + ++__first; + } + // *__first matches __value_, now match elements after here + auto __m = __first; + _SizeT __c(0); + while (true) { + if (++__c == __count) // If pattern exhausted, __first is the answer (works for 1 element pattern) + return std::make_pair(__first, __first + _DiffT(__count)); + ++__m; // no need to check range on __m because __s guarantees we have enough source + + // if there is a mismatch, restart with a new __first + if (!std::__invoke(__pred, std::__invoke(__proj, *__m), __value)) + { + __first = __m; + ++__first; + break; + } // else there is a match, check next elements + } + } +} + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 +pair<_Iter, _Iter> __search_n_impl(_Iter __first, _Sent __last, + _DiffT __count, + const _Type& __value, + _Pred& __pred, + _Proj& __proj, + __enable_if_t<__has_random_access_iterator_category<_Iter>::value>* = nullptr) { + return std::__search_n_random_access_impl<_ClassicAlgPolicy>(__first, __last, + __count, + __value, + __pred, + __proj, + __last - __first); +} + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 +pair<_Iter1, _Iter1> __search_n_impl(_Iter1 __first, _Sent1 __last, + _DiffT __count, + const _Type& __value, + _Pred& __pred, + _Proj& __proj, + __enable_if_t<__has_forward_iterator_category<_Iter1>::value + && !__has_random_access_iterator_category<_Iter1>::value>* = nullptr) { + return std::__search_n_forward_impl<_ClassicAlgPolicy>(__first, __last, + __count, + __value, + __pred, + __proj); +} + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 +_ForwardIterator search_n(_ForwardIterator __first, _ForwardIterator __last, + _Size __count, + const _Tp& __value, + _BinaryPredicate __pred) { + static_assert(__is_callable<_BinaryPredicate, decltype(*__first), const _Tp&>::value, + "BinaryPredicate has to be callable"); + auto __proj = __identity(); + return std::__search_n_impl(__first, __last, std::__convert_to_integral(__count), __value, __pred, __proj).first; +} + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 +_ForwardIterator search_n(_ForwardIterator __first, _ForwardIterator __last, _Size __count, const _Tp& __value) { + return std::search_n(__first, __last, std::__convert_to_integral(__count), __value, __equal_to()); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_SEARCH_N_H diff --git a/third_party/libcxx/__algorithm/set_difference.h b/third_party/libcxx/__algorithm/set_difference.h new file mode 100644 index 000000000..5a7d3bc18 --- /dev/null +++ b/third_party/libcxx/__algorithm/set_difference.h @@ -0,0 +1,81 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_SET_DIFFERENCE_H +#define _LIBCPP___ALGORITHM_SET_DIFFERENCE_H + +#include <__algorithm/comp.h> +#include <__algorithm/comp_ref_type.h> +#include <__algorithm/copy.h> +#include <__algorithm/iterator_operations.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__iterator/iterator_traits.h> +#include <__type_traits/remove_cvref.h> +#include <__utility/move.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<__remove_cvref_t<_InIter1>, __remove_cvref_t<_OutIter> > +__set_difference( + _InIter1&& __first1, _Sent1&& __last1, _InIter2&& __first2, _Sent2&& __last2, _OutIter&& __result, _Comp&& __comp) { + while (__first1 != __last1 && __first2 != __last2) { + if (__comp(*__first1, *__first2)) { + *__result = *__first1; + ++__first1; + ++__result; + } else if (__comp(*__first2, *__first1)) { + ++__first2; + } else { + ++__first1; + ++__first2; + } + } + return std::__copy<_AlgPolicy>(std::move(__first1), std::move(__last1), std::move(__result)); +} + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator set_difference( + _InputIterator1 __first1, + _InputIterator1 __last1, + _InputIterator2 __first2, + _InputIterator2 __last2, + _OutputIterator __result, + _Compare __comp) { + return std::__set_difference<_ClassicAlgPolicy, __comp_ref_type<_Compare> >( + __first1, __last1, __first2, __last2, __result, __comp) + .second; +} + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator set_difference( + _InputIterator1 __first1, + _InputIterator1 __last1, + _InputIterator2 __first2, + _InputIterator2 __last2, + _OutputIterator __result) { + return std::__set_difference<_ClassicAlgPolicy>( + __first1, + __last1, + __first2, + __last2, + __result, + __less::value_type, + typename iterator_traits<_InputIterator2>::value_type>()).second; +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_SET_DIFFERENCE_H diff --git a/third_party/libcxx/__algorithm/set_intersection.h b/third_party/libcxx/__algorithm/set_intersection.h new file mode 100644 index 000000000..9fa7799ae --- /dev/null +++ b/third_party/libcxx/__algorithm/set_intersection.h @@ -0,0 +1,99 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_SET_INTERSECTION_H +#define _LIBCPP___ALGORITHM_SET_INTERSECTION_H + +#include <__algorithm/comp.h> +#include <__algorithm/comp_ref_type.h> +#include <__algorithm/iterator_operations.h> +#include <__config> +#include <__iterator/iterator_traits.h> +#include <__iterator/next.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +struct __set_intersection_result { + _InIter1 __in1_; + _InIter2 __in2_; + _OutIter __out_; + + // need a constructor as C++03 aggregate init is hard + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 + __set_intersection_result(_InIter1&& __in_iter1, _InIter2&& __in_iter2, _OutIter&& __out_iter) + : __in1_(std::move(__in_iter1)), __in2_(std::move(__in_iter2)), __out_(std::move(__out_iter)) {} +}; + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 __set_intersection_result<_InIter1, _InIter2, _OutIter> +__set_intersection( + _InIter1 __first1, _Sent1 __last1, _InIter2 __first2, _Sent2 __last2, _OutIter __result, _Compare&& __comp) { + while (__first1 != __last1 && __first2 != __last2) { + if (__comp(*__first1, *__first2)) + ++__first1; + else { + if (!__comp(*__first2, *__first1)) { + *__result = *__first1; + ++__result; + ++__first1; + } + ++__first2; + } + } + + return __set_intersection_result<_InIter1, _InIter2, _OutIter>( + _IterOps<_AlgPolicy>::next(std::move(__first1), std::move(__last1)), + _IterOps<_AlgPolicy>::next(std::move(__first2), std::move(__last2)), + std::move(__result)); +} + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator set_intersection( + _InputIterator1 __first1, + _InputIterator1 __last1, + _InputIterator2 __first2, + _InputIterator2 __last2, + _OutputIterator __result, + _Compare __comp) { + return std::__set_intersection<_ClassicAlgPolicy, __comp_ref_type<_Compare> >( + std::move(__first1), + std::move(__last1), + std::move(__first2), + std::move(__last2), + std::move(__result), + __comp) + .__out_; +} + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator set_intersection( + _InputIterator1 __first1, + _InputIterator1 __last1, + _InputIterator2 __first2, + _InputIterator2 __last2, + _OutputIterator __result) { + return std::__set_intersection<_ClassicAlgPolicy>( + std::move(__first1), + std::move(__last1), + std::move(__first2), + std::move(__last2), + std::move(__result), + __less::value_type, + typename iterator_traits<_InputIterator2>::value_type>()) + .__out_; +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_SET_INTERSECTION_H diff --git a/third_party/libcxx/__algorithm/set_symmetric_difference.h b/third_party/libcxx/__algorithm/set_symmetric_difference.h new file mode 100644 index 000000000..bcb095870 --- /dev/null +++ b/third_party/libcxx/__algorithm/set_symmetric_difference.h @@ -0,0 +1,105 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_SET_SYMMETRIC_DIFFERENCE_H +#define _LIBCPP___ALGORITHM_SET_SYMMETRIC_DIFFERENCE_H + +#include <__algorithm/comp.h> +#include <__algorithm/comp_ref_type.h> +#include <__algorithm/copy.h> +#include <__algorithm/iterator_operations.h> +#include <__config> +#include <__iterator/iterator_traits.h> +#include <__utility/move.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +struct __set_symmetric_difference_result { + _InIter1 __in1_; + _InIter2 __in2_; + _OutIter __out_; + + // need a constructor as C++03 aggregate init is hard + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 + __set_symmetric_difference_result(_InIter1&& __in_iter1, _InIter2&& __in_iter2, _OutIter&& __out_iter) + : __in1_(std::move(__in_iter1)), __in2_(std::move(__in_iter2)), __out_(std::move(__out_iter)) {} +}; + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 __set_symmetric_difference_result<_InIter1, _InIter2, _OutIter> +__set_symmetric_difference( + _InIter1 __first1, _Sent1 __last1, _InIter2 __first2, _Sent2 __last2, _OutIter __result, _Compare&& __comp) { + while (__first1 != __last1) { + if (__first2 == __last2) { + auto __ret1 = std::__copy<_AlgPolicy>(std::move(__first1), std::move(__last1), std::move(__result)); + return __set_symmetric_difference_result<_InIter1, _InIter2, _OutIter>( + std::move(__ret1.first), std::move(__first2), std::move((__ret1.second))); + } + if (__comp(*__first1, *__first2)) { + *__result = *__first1; + ++__result; + ++__first1; + } else { + if (__comp(*__first2, *__first1)) { + *__result = *__first2; + ++__result; + } else { + ++__first1; + } + ++__first2; + } + } + auto __ret2 = std::__copy<_AlgPolicy>(std::move(__first2), std::move(__last2), std::move(__result)); + return __set_symmetric_difference_result<_InIter1, _InIter2, _OutIter>( + std::move(__first1), std::move(__ret2.first), std::move((__ret2.second))); +} + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator set_symmetric_difference( + _InputIterator1 __first1, + _InputIterator1 __last1, + _InputIterator2 __first2, + _InputIterator2 __last2, + _OutputIterator __result, + _Compare __comp) { + return std::__set_symmetric_difference<_ClassicAlgPolicy, __comp_ref_type<_Compare> >( + std::move(__first1), + std::move(__last1), + std::move(__first2), + std::move(__last2), + std::move(__result), + __comp) + .__out_; +} + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator set_symmetric_difference( + _InputIterator1 __first1, + _InputIterator1 __last1, + _InputIterator2 __first2, + _InputIterator2 __last2, + _OutputIterator __result) { + return std::set_symmetric_difference( + std::move(__first1), + std::move(__last1), + std::move(__first2), + std::move(__last2), + std::move(__result), + __less::value_type, + typename iterator_traits<_InputIterator2>::value_type>()); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_SET_SYMMETRIC_DIFFERENCE_H diff --git a/third_party/libcxx/__algorithm/set_union.h b/third_party/libcxx/__algorithm/set_union.h new file mode 100644 index 000000000..4d154b81e --- /dev/null +++ b/third_party/libcxx/__algorithm/set_union.h @@ -0,0 +1,101 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_SET_UNION_H +#define _LIBCPP___ALGORITHM_SET_UNION_H + +#include <__algorithm/comp.h> +#include <__algorithm/comp_ref_type.h> +#include <__algorithm/copy.h> +#include <__algorithm/iterator_operations.h> +#include <__config> +#include <__iterator/iterator_traits.h> +#include <__utility/move.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +struct __set_union_result { + _InIter1 __in1_; + _InIter2 __in2_; + _OutIter __out_; + + // need a constructor as C++03 aggregate init is hard + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 + __set_union_result(_InIter1&& __in_iter1, _InIter2&& __in_iter2, _OutIter&& __out_iter) + : __in1_(std::move(__in_iter1)), __in2_(std::move(__in_iter2)), __out_(std::move(__out_iter)) {} +}; + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 __set_union_result<_InIter1, _InIter2, _OutIter> __set_union( + _InIter1 __first1, _Sent1 __last1, _InIter2 __first2, _Sent2 __last2, _OutIter __result, _Compare&& __comp) { + for (; __first1 != __last1; ++__result) { + if (__first2 == __last2) { + auto __ret1 = std::__copy<_AlgPolicy>(std::move(__first1), std::move(__last1), std::move(__result)); + return __set_union_result<_InIter1, _InIter2, _OutIter>( + std::move(__ret1.first), std::move(__first2), std::move((__ret1.second))); + } + if (__comp(*__first2, *__first1)) { + *__result = *__first2; + ++__first2; + } else { + if (!__comp(*__first1, *__first2)) { + ++__first2; + } + *__result = *__first1; + ++__first1; + } + } + auto __ret2 = std::__copy<_AlgPolicy>(std::move(__first2), std::move(__last2), std::move(__result)); + return __set_union_result<_InIter1, _InIter2, _OutIter>( + std::move(__first1), std::move(__ret2.first), std::move((__ret2.second))); +} + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator set_union( + _InputIterator1 __first1, + _InputIterator1 __last1, + _InputIterator2 __first2, + _InputIterator2 __last2, + _OutputIterator __result, + _Compare __comp) { + return std::__set_union<_ClassicAlgPolicy, __comp_ref_type<_Compare> >( + std::move(__first1), + std::move(__last1), + std::move(__first2), + std::move(__last2), + std::move(__result), + __comp) + .__out_; +} + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator set_union( + _InputIterator1 __first1, + _InputIterator1 __last1, + _InputIterator2 __first2, + _InputIterator2 __last2, + _OutputIterator __result) { + return std::set_union( + std::move(__first1), + std::move(__last1), + std::move(__first2), + std::move(__last2), + std::move(__result), + __less::value_type, + typename iterator_traits<_InputIterator2>::value_type>()); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_SET_UNION_H diff --git a/third_party/libcxx/__algorithm/shift_left.h b/third_party/libcxx/__algorithm/shift_left.h new file mode 100644 index 000000000..023b56dcf --- /dev/null +++ b/third_party/libcxx/__algorithm/shift_left.h @@ -0,0 +1,55 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_SHIFT_LEFT_H +#define _LIBCPP___ALGORITHM_SHIFT_LEFT_H + +#include <__algorithm/move.h> +#include <__config> +#include <__iterator/iterator_traits.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +template +inline _LIBCPP_INLINE_VISIBILITY constexpr +_ForwardIterator +shift_left(_ForwardIterator __first, _ForwardIterator __last, + typename iterator_traits<_ForwardIterator>::difference_type __n) +{ + if (__n == 0) { + return __last; + } + + _ForwardIterator __m = __first; + if constexpr (__has_random_access_iterator_category<_ForwardIterator>::value) { + if (__n >= __last - __first) { + return __first; + } + __m += __n; + } else { + for (; __n > 0; --__n) { + if (__m == __last) { + return __first; + } + ++__m; + } + } + return _VSTD::move(__m, __last, __first); +} + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_SHIFT_LEFT_H diff --git a/third_party/libcxx/__algorithm/shift_right.h b/third_party/libcxx/__algorithm/shift_right.h new file mode 100644 index 000000000..70aff45fe --- /dev/null +++ b/third_party/libcxx/__algorithm/shift_right.h @@ -0,0 +1,101 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_SHIFT_RIGHT_H +#define _LIBCPP___ALGORITHM_SHIFT_RIGHT_H + +#include <__algorithm/move.h> +#include <__algorithm/move_backward.h> +#include <__algorithm/swap_ranges.h> +#include <__config> +#include <__iterator/iterator_traits.h> +#include <__utility/swap.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +template +inline _LIBCPP_INLINE_VISIBILITY constexpr +_ForwardIterator +shift_right(_ForwardIterator __first, _ForwardIterator __last, + typename iterator_traits<_ForwardIterator>::difference_type __n) +{ + if (__n == 0) { + return __first; + } + + if constexpr (__has_random_access_iterator_category<_ForwardIterator>::value) { + decltype(__n) __d = __last - __first; + if (__n >= __d) { + return __last; + } + _ForwardIterator __m = __first + (__d - __n); + return _VSTD::move_backward(__first, __m, __last); + } else if constexpr (__has_bidirectional_iterator_category<_ForwardIterator>::value) { + _ForwardIterator __m = __last; + for (; __n > 0; --__n) { + if (__m == __first) { + return __last; + } + --__m; + } + return _VSTD::move_backward(__first, __m, __last); + } else { + _ForwardIterator __ret = __first; + for (; __n > 0; --__n) { + if (__ret == __last) { + return __last; + } + ++__ret; + } + + // We have an __n-element scratch space from __first to __ret. + // Slide an __n-element window [__trail, __lead) from left to right. + // We're essentially doing swap_ranges(__first, __ret, __trail, __lead) + // over and over; but once __lead reaches __last we needn't bother + // to save the values of elements [__trail, __last). + + auto __trail = __first; + auto __lead = __ret; + while (__trail != __ret) { + if (__lead == __last) { + _VSTD::move(__first, __trail, __ret); + return __ret; + } + ++__trail; + ++__lead; + } + + _ForwardIterator __mid = __first; + while (true) { + if (__lead == __last) { + __trail = _VSTD::move(__mid, __ret, __trail); + _VSTD::move(__first, __mid, __trail); + return __ret; + } + swap(*__mid, *__trail); + ++__mid; + ++__trail; + ++__lead; + if (__mid == __ret) { + __mid = __first; + } + } + } +} + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_SHIFT_RIGHT_H diff --git a/third_party/libcxx/__algorithm/shuffle.h b/third_party/libcxx/__algorithm/shuffle.h new file mode 100644 index 000000000..d6cc3401a --- /dev/null +++ b/third_party/libcxx/__algorithm/shuffle.h @@ -0,0 +1,175 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_SHUFFLE_H +#define _LIBCPP___ALGORITHM_SHUFFLE_H + +#include <__algorithm/iterator_operations.h> +#include <__config> +#include <__debug> +#include <__iterator/iterator_traits.h> +#include <__random/uniform_int_distribution.h> +#include <__utility/forward.h> +#include <__utility/move.h> +#include <__utility/swap.h> +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +class _LIBCPP_TYPE_VIS __libcpp_debug_randomizer { +public: + _LIBCPP_HIDE_FROM_ABI __libcpp_debug_randomizer() { + __state_ = __seed(); + __inc_ = __state_ + 0xda3e39cb94b95bdbULL; + __inc_ = (__inc_ << 1) | 1; + } + typedef uint_fast32_t result_type; + + static const result_type _Min = 0; + static const result_type _Max = 0xFFFFFFFF; + + _LIBCPP_HIDE_FROM_ABI result_type operator()() { + uint_fast64_t __oldstate = __state_; + __state_ = __oldstate * 6364136223846793005ULL + __inc_; + return __oldstate >> 32; + } + + static _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR result_type min() { return _Min; } + static _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR result_type max() { return _Max; } + +private: + uint_fast64_t __state_; + uint_fast64_t __inc_; + _LIBCPP_HIDE_FROM_ABI static uint_fast64_t __seed() { +#ifdef _LIBCPP_DEBUG_RANDOMIZE_UNSPECIFIED_STABILITY_SEED + return _LIBCPP_DEBUG_RANDOMIZE_UNSPECIFIED_STABILITY_SEED; +#else + static char __x; + return reinterpret_cast(&__x); +#endif + } +}; + +#if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_RANDOM_SHUFFLE) \ + || defined(_LIBCPP_BUILDING_LIBRARY) +class _LIBCPP_TYPE_VIS __rs_default; + +_LIBCPP_FUNC_VIS __rs_default __rs_get(); + +class _LIBCPP_TYPE_VIS __rs_default +{ + static unsigned __c_; + + __rs_default(); +public: + typedef uint_fast32_t result_type; + + static const result_type _Min = 0; + static const result_type _Max = 0xFFFFFFFF; + + __rs_default(const __rs_default&); + ~__rs_default(); + + result_type operator()(); + + static _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR result_type min() {return _Min;} + static _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR result_type max() {return _Max;} + + friend _LIBCPP_FUNC_VIS __rs_default __rs_get(); +}; + +_LIBCPP_FUNC_VIS __rs_default __rs_get(); + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_DEPRECATED_IN_CXX14 void +random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last) +{ + typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; + typedef uniform_int_distribution _Dp; + typedef typename _Dp::param_type _Pp; + difference_type __d = __last - __first; + if (__d > 1) + { + _Dp __uid; + __rs_default __g = __rs_get(); + for (--__last, (void) --__d; __first < __last; ++__first, (void) --__d) + { + difference_type __i = __uid(__g, _Pp(0, __d)); + if (__i != difference_type(0)) + swap(*__first, *(__first + __i)); + } + } +} + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_DEPRECATED_IN_CXX14 void +random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, +#ifndef _LIBCPP_CXX03_LANG + _RandomNumberGenerator&& __rand) +#else + _RandomNumberGenerator& __rand) +#endif +{ + typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; + difference_type __d = __last - __first; + if (__d > 1) + { + for (--__last; __first < __last; ++__first, (void) --__d) + { + difference_type __i = __rand(__d); + if (__i != difference_type(0)) + swap(*__first, *(__first + __i)); + } + } +} +#endif + +template +_LIBCPP_HIDE_FROM_ABI _RandomAccessIterator __shuffle( + _RandomAccessIterator __first, _Sentinel __last_sentinel, _UniformRandomNumberGenerator&& __g) { + typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; + typedef uniform_int_distribution _Dp; + typedef typename _Dp::param_type _Pp; + + auto __original_last = _IterOps<_AlgPolicy>::next(__first, __last_sentinel); + auto __last = __original_last; + difference_type __d = __last - __first; + if (__d > 1) + { + _Dp __uid; + for (--__last, (void) --__d; __first < __last; ++__first, (void) --__d) + { + difference_type __i = __uid(__g, _Pp(0, __d)); + if (__i != difference_type(0)) + _IterOps<_AlgPolicy>::iter_swap(__first, __first + __i); + } + } + + return __original_last; +} + +template +_LIBCPP_HIDE_FROM_ABI void +shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, _UniformRandomNumberGenerator&& __g) { + (void)std::__shuffle<_ClassicAlgPolicy>( + std::move(__first), std::move(__last), std::forward<_UniformRandomNumberGenerator>(__g)); +} + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP___ALGORITHM_SHUFFLE_H diff --git a/third_party/libcxx/__algorithm/sift_down.h b/third_party/libcxx/__algorithm/sift_down.h new file mode 100644 index 000000000..e3972fb6f --- /dev/null +++ b/third_party/libcxx/__algorithm/sift_down.h @@ -0,0 +1,114 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_SIFT_DOWN_H +#define _LIBCPP___ALGORITHM_SIFT_DOWN_H + +#include <__algorithm/iterator_operations.h> +#include <__assert> +#include <__config> +#include <__iterator/iterator_traits.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 void +__sift_down(_RandomAccessIterator __first, _Compare&& __comp, + typename iterator_traits<_RandomAccessIterator>::difference_type __len, + _RandomAccessIterator __start) +{ + using _Ops = _IterOps<_AlgPolicy>; + + typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; + typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; + // left-child of __start is at 2 * __start + 1 + // right-child of __start is at 2 * __start + 2 + difference_type __child = __start - __first; + + if (__len < 2 || (__len - 2) / 2 < __child) + return; + + __child = 2 * __child + 1; + _RandomAccessIterator __child_i = __first + __child; + + if ((__child + 1) < __len && __comp(*__child_i, *(__child_i + difference_type(1)))) { + // right-child exists and is greater than left-child + ++__child_i; + ++__child; + } + + // check if we are in heap-order + if (__comp(*__child_i, *__start)) + // we are, __start is larger than its largest child + return; + + value_type __top(_Ops::__iter_move(__start)); + do + { + // we are not in heap-order, swap the parent with its largest child + *__start = _Ops::__iter_move(__child_i); + __start = __child_i; + + if ((__len - 2) / 2 < __child) + break; + + // recompute the child based off of the updated parent + __child = 2 * __child + 1; + __child_i = __first + __child; + + if ((__child + 1) < __len && __comp(*__child_i, *(__child_i + difference_type(1)))) { + // right-child exists and is greater than left-child + ++__child_i; + ++__child; + } + + // check if we are in heap-order + } while (!__comp(*__child_i, __top)); + *__start = _VSTD::move(__top); +} + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _RandomAccessIterator +__floyd_sift_down(_RandomAccessIterator __first, _Compare&& __comp, + typename iterator_traits<_RandomAccessIterator>::difference_type __len) +{ + using difference_type = typename iterator_traits<_RandomAccessIterator>::difference_type; + _LIBCPP_ASSERT(__len >= 2, "shouldn't be called unless __len >= 2"); + + _RandomAccessIterator __hole = __first; + _RandomAccessIterator __child_i = __first; + difference_type __child = 0; + + while (true) { + __child_i += difference_type(__child + 1); + __child = 2 * __child + 1; + + if ((__child + 1) < __len && __comp(*__child_i, *(__child_i + difference_type(1)))) { + // right-child exists and is greater than left-child + ++__child_i; + ++__child; + } + + // swap __hole with its largest child + *__hole = _IterOps<_AlgPolicy>::__iter_move(__child_i); + __hole = __child_i; + + // if __hole is now a leaf, we're done + if (__child > (__len - 2) / 2) + return __hole; + } +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_SIFT_DOWN_H diff --git a/third_party/libcxx/__algorithm/sort.h b/third_party/libcxx/__algorithm/sort.h new file mode 100644 index 000000000..77e0b2e92 --- /dev/null +++ b/third_party/libcxx/__algorithm/sort.h @@ -0,0 +1,940 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_SORT_H +#define _LIBCPP___ALGORITHM_SORT_H + +#include <__algorithm/comp.h> +#include <__algorithm/comp_ref_type.h> +#include <__algorithm/iter_swap.h> +#include <__algorithm/iterator_operations.h> +#include <__algorithm/min_element.h> +#include <__algorithm/partial_sort.h> +#include <__algorithm/unwrap_iter.h> +#include <__assert> +#include <__bit/blsr.h> +#include <__bit/countl.h> +#include <__bit/countr.h> +#include <__config> +#include <__debug> +#include <__debug_utils/randomize_range.h> +#include <__functional/operations.h> +#include <__functional/ranges_operations.h> +#include <__iterator/iterator_traits.h> +#include <__type_traits/conditional.h> +#include <__type_traits/disjunction.h> +#include <__type_traits/is_arithmetic.h> +#include <__utility/move.h> +#include <__utility/pair.h> +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +// stable, 2-3 compares, 0-2 swaps + +template +_LIBCPP_HIDE_FROM_ABI +_LIBCPP_CONSTEXPR_SINCE_CXX14 unsigned __sort3(_ForwardIterator __x, _ForwardIterator __y, _ForwardIterator __z, + _Compare __c) { + using _Ops = _IterOps<_AlgPolicy>; + + unsigned __r = 0; + if (!__c(*__y, *__x)) // if x <= y + { + if (!__c(*__z, *__y)) // if y <= z + return __r; // x <= y && y <= z + // x <= y && y > z + _Ops::iter_swap(__y, __z); // x <= z && y < z + __r = 1; + if (__c(*__y, *__x)) // if x > y + { + _Ops::iter_swap(__x, __y); // x < y && y <= z + __r = 2; + } + return __r; // x <= y && y < z + } + if (__c(*__z, *__y)) // x > y, if y > z + { + _Ops::iter_swap(__x, __z); // x < y && y < z + __r = 1; + return __r; + } + _Ops::iter_swap(__x, __y); // x > y && y <= z + __r = 1; // x < y && x <= z + if (__c(*__z, *__y)) // if y > z + { + _Ops::iter_swap(__y, __z); // x <= y && y < z + __r = 2; + } + return __r; +} // x <= y && y <= z + +// stable, 3-6 compares, 0-5 swaps + +template +_LIBCPP_HIDE_FROM_ABI +void __sort4(_ForwardIterator __x1, _ForwardIterator __x2, _ForwardIterator __x3, _ForwardIterator __x4, + _Compare __c) { + using _Ops = _IterOps<_AlgPolicy>; + std::__sort3<_AlgPolicy, _Compare>(__x1, __x2, __x3, __c); + if (__c(*__x4, *__x3)) { + _Ops::iter_swap(__x3, __x4); + if (__c(*__x3, *__x2)) { + _Ops::iter_swap(__x2, __x3); + if (__c(*__x2, *__x1)) { + _Ops::iter_swap(__x1, __x2); + } + } + } +} + +// stable, 4-10 compares, 0-9 swaps + +template +_LIBCPP_HIDE_FROM_ABI void __sort5(_ForwardIterator __x1, _ForwardIterator __x2, _ForwardIterator __x3, + _ForwardIterator __x4, _ForwardIterator __x5, _Comp __comp) { + using _Ops = _IterOps<_AlgPolicy>; + + std::__sort4<_AlgPolicy, _Comp>(__x1, __x2, __x3, __x4, __comp); + if (__comp(*__x5, *__x4)) { + _Ops::iter_swap(__x4, __x5); + if (__comp(*__x4, *__x3)) { + _Ops::iter_swap(__x3, __x4); + if (__comp(*__x3, *__x2)) { + _Ops::iter_swap(__x2, __x3); + if (__comp(*__x2, *__x1)) { + _Ops::iter_swap(__x1, __x2); + } + } + } + } +} + +// The comparator being simple is a prerequisite for using the branchless optimization. +template +struct __is_simple_comparator : false_type {}; +template +struct __is_simple_comparator<__less<_Tp>&> : true_type {}; +template +struct __is_simple_comparator&> : true_type {}; +template +struct __is_simple_comparator&> : true_type {}; +#if _LIBCPP_STD_VER >= 20 +template <> +struct __is_simple_comparator : true_type {}; +template <> +struct __is_simple_comparator : true_type {}; +#endif + +template ::value_type> +using __use_branchless_sort = + integral_constant::value && sizeof(_Tp) <= sizeof(void*) && + is_arithmetic<_Tp>::value && __is_simple_comparator<_Compare>::value>; + +namespace __detail { + +// Size in bits for the bitset in use. +enum { __block_size = sizeof(uint64_t) * 8 }; + +} // namespace __detail + +// Ensures that __c(*__x, *__y) is true by swapping *__x and *__y if necessary. +template +inline _LIBCPP_HIDE_FROM_ABI void __cond_swap(_RandomAccessIterator __x, _RandomAccessIterator __y, _Compare __c) { + // Note: this function behaves correctly even with proxy iterators (because it relies on `value_type`). + using value_type = typename iterator_traits<_RandomAccessIterator>::value_type; + bool __r = __c(*__x, *__y); + value_type __tmp = __r ? *__x : *__y; + *__y = __r ? *__y : *__x; + *__x = __tmp; +} + +// Ensures that *__x, *__y and *__z are ordered according to the comparator __c, +// under the assumption that *__y and *__z are already ordered. +template +inline _LIBCPP_HIDE_FROM_ABI void __partially_sorted_swap(_RandomAccessIterator __x, _RandomAccessIterator __y, + _RandomAccessIterator __z, _Compare __c) { + // Note: this function behaves correctly even with proxy iterators (because it relies on `value_type`). + using value_type = typename iterator_traits<_RandomAccessIterator>::value_type; + bool __r = __c(*__z, *__x); + value_type __tmp = __r ? *__z : *__x; + *__z = __r ? *__x : *__z; + __r = __c(__tmp, *__y); + *__x = __r ? *__x : *__y; + *__y = __r ? *__y : __tmp; +} + +template +inline _LIBCPP_HIDE_FROM_ABI __enable_if_t<__use_branchless_sort<_Compare, _RandomAccessIterator>::value, void> +__sort3_maybe_branchless(_RandomAccessIterator __x1, _RandomAccessIterator __x2, _RandomAccessIterator __x3, + _Compare __c) { + std::__cond_swap<_Compare>(__x2, __x3, __c); + std::__partially_sorted_swap<_Compare>(__x1, __x2, __x3, __c); +} + +template +inline _LIBCPP_HIDE_FROM_ABI __enable_if_t::value, void> +__sort3_maybe_branchless(_RandomAccessIterator __x1, _RandomAccessIterator __x2, _RandomAccessIterator __x3, + _Compare __c) { + std::__sort3<_AlgPolicy, _Compare>(__x1, __x2, __x3, __c); +} + +template +inline _LIBCPP_HIDE_FROM_ABI __enable_if_t<__use_branchless_sort<_Compare, _RandomAccessIterator>::value, void> +__sort4_maybe_branchless(_RandomAccessIterator __x1, _RandomAccessIterator __x2, _RandomAccessIterator __x3, + _RandomAccessIterator __x4, _Compare __c) { + std::__cond_swap<_Compare>(__x1, __x3, __c); + std::__cond_swap<_Compare>(__x2, __x4, __c); + std::__cond_swap<_Compare>(__x1, __x2, __c); + std::__cond_swap<_Compare>(__x3, __x4, __c); + std::__cond_swap<_Compare>(__x2, __x3, __c); +} + +template +inline _LIBCPP_HIDE_FROM_ABI __enable_if_t::value, void> +__sort4_maybe_branchless(_RandomAccessIterator __x1, _RandomAccessIterator __x2, _RandomAccessIterator __x3, + _RandomAccessIterator __x4, _Compare __c) { + std::__sort4<_AlgPolicy, _Compare>(__x1, __x2, __x3, __x4, __c); +} + +template +inline _LIBCPP_HIDE_FROM_ABI __enable_if_t<__use_branchless_sort<_Compare, _RandomAccessIterator>::value, void> +__sort5_maybe_branchless( + _RandomAccessIterator __x1, + _RandomAccessIterator __x2, + _RandomAccessIterator __x3, + _RandomAccessIterator __x4, + _RandomAccessIterator __x5, + _Compare __c) { + std::__cond_swap<_Compare>(__x1, __x2, __c); + std::__cond_swap<_Compare>(__x4, __x5, __c); + std::__partially_sorted_swap<_Compare>(__x3, __x4, __x5, __c); + std::__cond_swap<_Compare>(__x2, __x5, __c); + std::__partially_sorted_swap<_Compare>(__x1, __x3, __x4, __c); + std::__partially_sorted_swap<_Compare>(__x2, __x3, __x4, __c); +} + +template +inline _LIBCPP_HIDE_FROM_ABI __enable_if_t::value, void> +__sort5_maybe_branchless(_RandomAccessIterator __x1, _RandomAccessIterator __x2, _RandomAccessIterator __x3, + _RandomAccessIterator __x4, _RandomAccessIterator __x5, _Compare __c) { + std::__sort5<_AlgPolicy, _Compare, _RandomAccessIterator>( + std::move(__x1), std::move(__x2), std::move(__x3), std::move(__x4), std::move(__x5), __c); +} + +// Assumes size > 0 +template +_LIBCPP_HIDE_FROM_ABI +_LIBCPP_CONSTEXPR_SINCE_CXX14 void __selection_sort(_BidirectionalIterator __first, _BidirectionalIterator __last, + _Compare __comp) { + _BidirectionalIterator __lm1 = __last; + for (--__lm1; __first != __lm1; ++__first) { + _BidirectionalIterator __i = std::__min_element<_Compare>(__first, __last, __comp); + if (__i != __first) + _IterOps<_AlgPolicy>::iter_swap(__first, __i); + } +} + +// Sort the iterator range [__first, __last) using the comparator __comp using +// the insertion sort algorithm. +template +_LIBCPP_HIDE_FROM_ABI +void __insertion_sort(_BidirectionalIterator __first, _BidirectionalIterator __last, _Compare __comp) { + using _Ops = _IterOps<_AlgPolicy>; + + typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type; + if (__first == __last) + return; + _BidirectionalIterator __i = __first; + for (++__i; __i != __last; ++__i) { + _BidirectionalIterator __j = __i; + --__j; + if (__comp(*__i, *__j)) { + value_type __t(_Ops::__iter_move(__i)); + _BidirectionalIterator __k = __j; + __j = __i; + do { + *__j = _Ops::__iter_move(__k); + __j = __k; + } while (__j != __first && __comp(__t, *--__k)); + *__j = std::move(__t); + } + } +} + +// Sort the iterator range [__first, __last) using the comparator __comp using +// the insertion sort algorithm. Insertion sort has two loops, outer and inner. +// The implementation below has no bounds check (unguarded) for the inner loop. +// Assumes that there is an element in the position (__first - 1) and that each +// element in the input range is greater or equal to the element at __first - 1. +template +_LIBCPP_HIDE_FROM_ABI void +__insertion_sort_unguarded(_RandomAccessIterator const __first, _RandomAccessIterator __last, _Compare __comp) { + using _Ops = _IterOps<_AlgPolicy>; + typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; + typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; + if (__first == __last) + return; + const _RandomAccessIterator __leftmost = __first - difference_type(1); (void)__leftmost; // can be unused when assertions are disabled + for (_RandomAccessIterator __i = __first + difference_type(1); __i != __last; ++__i) { + _RandomAccessIterator __j = __i - difference_type(1); + if (__comp(*__i, *__j)) { + value_type __t(_Ops::__iter_move(__i)); + _RandomAccessIterator __k = __j; + __j = __i; + do { + *__j = _Ops::__iter_move(__k); + __j = __k; + _LIBCPP_ASSERT(__k != __leftmost, "Would read out of bounds, does your comparator satisfy the strict-weak ordering requirement?"); + } while (__comp(__t, *--__k)); // No need for bounds check due to the assumption stated above. + *__j = std::move(__t); + } + } +} + +template +_LIBCPP_HIDE_FROM_ABI bool __insertion_sort_incomplete( + _RandomAccessIterator __first, _RandomAccessIterator __last, _Comp __comp) { + using _Ops = _IterOps<_AlgPolicy>; + + typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; + switch (__last - __first) { + case 0: + case 1: + return true; + case 2: + if (__comp(*--__last, *__first)) + _Ops::iter_swap(__first, __last); + return true; + case 3: + std::__sort3_maybe_branchless<_AlgPolicy, _Comp>(__first, __first + difference_type(1), --__last, __comp); + return true; + case 4: + std::__sort4_maybe_branchless<_AlgPolicy, _Comp>( + __first, __first + difference_type(1), __first + difference_type(2), --__last, __comp); + return true; + case 5: + std::__sort5_maybe_branchless<_AlgPolicy, _Comp>( + __first, __first + difference_type(1), __first + difference_type(2), __first + difference_type(3), + --__last, __comp); + return true; + } + typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; + _RandomAccessIterator __j = __first + difference_type(2); + std::__sort3_maybe_branchless<_AlgPolicy, _Comp>(__first, __first + difference_type(1), __j, __comp); + const unsigned __limit = 8; + unsigned __count = 0; + for (_RandomAccessIterator __i = __j + difference_type(1); __i != __last; ++__i) { + if (__comp(*__i, *__j)) { + value_type __t(_Ops::__iter_move(__i)); + _RandomAccessIterator __k = __j; + __j = __i; + do { + *__j = _Ops::__iter_move(__k); + __j = __k; + } while (__j != __first && __comp(__t, *--__k)); + *__j = std::move(__t); + if (++__count == __limit) + return ++__i == __last; + } + __j = __i; + } + return true; +} + +template +inline _LIBCPP_HIDE_FROM_ABI void __swap_bitmap_pos( + _RandomAccessIterator __first, _RandomAccessIterator __last, uint64_t& __left_bitset, uint64_t& __right_bitset) { + using _Ops = _IterOps<_AlgPolicy>; + typedef typename std::iterator_traits<_RandomAccessIterator>::difference_type difference_type; + // Swap one pair on each iteration as long as both bitsets have at least one + // element for swapping. + while (__left_bitset != 0 && __right_bitset != 0) { + difference_type __tz_left = __libcpp_ctz(__left_bitset); + __left_bitset = __libcpp_blsr(__left_bitset); + difference_type __tz_right = __libcpp_ctz(__right_bitset); + __right_bitset = __libcpp_blsr(__right_bitset); + _Ops::iter_swap(__first + __tz_left, __last - __tz_right); + } +} + +template ::value_type> +inline _LIBCPP_HIDE_FROM_ABI void +__populate_left_bitset(_RandomAccessIterator __first, _Compare __comp, _ValueType& __pivot, uint64_t& __left_bitset) { + // Possible vectorization. With a proper "-march" flag, the following loop + // will be compiled into a set of SIMD instructions. + _RandomAccessIterator __iter = __first; + for (int __j = 0; __j < __detail::__block_size;) { + bool __comp_result = !__comp(*__iter, __pivot); + __left_bitset |= (static_cast(__comp_result) << __j); + __j++; + ++__iter; + } +} + +template ::value_type> +inline _LIBCPP_HIDE_FROM_ABI void +__populate_right_bitset(_RandomAccessIterator __lm1, _Compare __comp, _ValueType& __pivot, uint64_t& __right_bitset) { + // Possible vectorization. With a proper "-march" flag, the following loop + // will be compiled into a set of SIMD instructions. + _RandomAccessIterator __iter = __lm1; + for (int __j = 0; __j < __detail::__block_size;) { + bool __comp_result = __comp(*__iter, __pivot); + __right_bitset |= (static_cast(__comp_result) << __j); + __j++; + --__iter; + } +} + +template ::value_type> +inline _LIBCPP_HIDE_FROM_ABI void __bitset_partition_partial_blocks( + _RandomAccessIterator& __first, + _RandomAccessIterator& __lm1, + _Compare __comp, + _ValueType& __pivot, + uint64_t& __left_bitset, + uint64_t& __right_bitset) { + typedef typename std::iterator_traits<_RandomAccessIterator>::difference_type difference_type; + difference_type __remaining_len = __lm1 - __first + 1; + difference_type __l_size; + difference_type __r_size; + if (__left_bitset == 0 && __right_bitset == 0) { + __l_size = __remaining_len / 2; + __r_size = __remaining_len - __l_size; + } else if (__left_bitset == 0) { + // We know at least one side is a full block. + __l_size = __remaining_len - __detail::__block_size; + __r_size = __detail::__block_size; + } else { // if (__right_bitset == 0) + __l_size = __detail::__block_size; + __r_size = __remaining_len - __detail::__block_size; + } + // Record the comparison outcomes for the elements currently on the left side. + if (__left_bitset == 0) { + _RandomAccessIterator __iter = __first; + for (int __j = 0; __j < __l_size; __j++) { + bool __comp_result = !__comp(*__iter, __pivot); + __left_bitset |= (static_cast(__comp_result) << __j); + ++__iter; + } + } + // Record the comparison outcomes for the elements currently on the right + // side. + if (__right_bitset == 0) { + _RandomAccessIterator __iter = __lm1; + for (int __j = 0; __j < __r_size; __j++) { + bool __comp_result = __comp(*__iter, __pivot); + __right_bitset |= (static_cast(__comp_result) << __j); + --__iter; + } + } + std::__swap_bitmap_pos<_AlgPolicy, _RandomAccessIterator>(__first, __lm1, __left_bitset, __right_bitset); + __first += (__left_bitset == 0) ? __l_size : 0; + __lm1 -= (__right_bitset == 0) ? __r_size : 0; +} + +template +inline _LIBCPP_HIDE_FROM_ABI void __swap_bitmap_pos_within( + _RandomAccessIterator& __first, _RandomAccessIterator& __lm1, uint64_t& __left_bitset, uint64_t& __right_bitset) { + using _Ops = _IterOps<_AlgPolicy>; + typedef typename std::iterator_traits<_RandomAccessIterator>::difference_type difference_type; + if (__left_bitset) { + // Swap within the left side. Need to find set positions in the reverse + // order. + while (__left_bitset != 0) { + difference_type __tz_left = __detail::__block_size - 1 - __libcpp_clz(__left_bitset); + __left_bitset &= (static_cast(1) << __tz_left) - 1; + _RandomAccessIterator __it = __first + __tz_left; + if (__it != __lm1) { + _Ops::iter_swap(__it, __lm1); + } + --__lm1; + } + __first = __lm1 + difference_type(1); + } else if (__right_bitset) { + // Swap within the right side. Need to find set positions in the reverse + // order. + while (__right_bitset != 0) { + difference_type __tz_right = __detail::__block_size - 1 - __libcpp_clz(__right_bitset); + __right_bitset &= (static_cast(1) << __tz_right) - 1; + _RandomAccessIterator __it = __lm1 - __tz_right; + if (__it != __first) { + _Ops::iter_swap(__it, __first); + } + ++__first; + } + } +} + +// Partition [__first, __last) using the comparator __comp. *__first has the +// chosen pivot. Elements that are equivalent are kept to the left of the +// pivot. Returns the iterator for the pivot and a bool value which is true if +// the provided range is already sorted, false otherwise. We assume that the +// length of the range is at least three elements. +// +// __bitset_partition uses bitsets for storing outcomes of the comparisons +// between the pivot and other elements. +template +_LIBCPP_HIDE_FROM_ABI std::pair<_RandomAccessIterator, bool> +__bitset_partition(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) { + using _Ops = _IterOps<_AlgPolicy>; + typedef typename std::iterator_traits<_RandomAccessIterator>::value_type value_type; + typedef typename std::iterator_traits<_RandomAccessIterator>::difference_type difference_type; + _LIBCPP_ASSERT(__last - __first >= difference_type(3), ""); + const _RandomAccessIterator __begin = __first; // used for bounds checking, those are not moved around + const _RandomAccessIterator __end = __last; (void)__end; // + + value_type __pivot(_Ops::__iter_move(__first)); + // Find the first element greater than the pivot. + if (__comp(__pivot, *(__last - difference_type(1)))) { + // Not guarded since we know the last element is greater than the pivot. + do { + ++__first; + _LIBCPP_ASSERT(__first != __end, "Would read out of bounds, does your comparator satisfy the strict-weak ordering requirement?"); + } while (!__comp(__pivot, *__first)); + } else { + while (++__first < __last && !__comp(__pivot, *__first)) { + } + } + // Find the last element less than or equal to the pivot. + if (__first < __last) { + // It will be always guarded because __introsort will do the median-of-three + // before calling this. + do { + _LIBCPP_ASSERT(__last != __begin, "Would read out of bounds, does your comparator satisfy the strict-weak ordering requirement?"); + --__last; + } while (__comp(__pivot, *__last)); + } + // If the first element greater than the pivot is at or after the + // last element less than or equal to the pivot, then we have covered the + // entire range without swapping elements. This implies the range is already + // partitioned. + bool __already_partitioned = __first >= __last; + if (!__already_partitioned) { + _Ops::iter_swap(__first, __last); + ++__first; + } + + // In [__first, __last) __last is not inclusive. From now on, it uses last + // minus one to be inclusive on both sides. + _RandomAccessIterator __lm1 = __last - difference_type(1); + uint64_t __left_bitset = 0; + uint64_t __right_bitset = 0; + + // Reminder: length = __lm1 - __first + 1. + while (__lm1 - __first >= 2 * __detail::__block_size - 1) { + // Record the comparison outcomes for the elements currently on the left + // side. + if (__left_bitset == 0) + std::__populate_left_bitset<_Compare>(__first, __comp, __pivot, __left_bitset); + // Record the comparison outcomes for the elements currently on the right + // side. + if (__right_bitset == 0) + std::__populate_right_bitset<_Compare>(__lm1, __comp, __pivot, __right_bitset); + // Swap the elements recorded to be the candidates for swapping in the + // bitsets. + std::__swap_bitmap_pos<_AlgPolicy, _RandomAccessIterator>(__first, __lm1, __left_bitset, __right_bitset); + // Only advance the iterator if all the elements that need to be moved to + // other side were moved. + __first += (__left_bitset == 0) ? difference_type(__detail::__block_size) : difference_type(0); + __lm1 -= (__right_bitset == 0) ? difference_type(__detail::__block_size) : difference_type(0); + } + // Now, we have a less-than a block worth of elements on at least one of the + // sides. + std::__bitset_partition_partial_blocks<_AlgPolicy, _Compare>( + __first, __lm1, __comp, __pivot, __left_bitset, __right_bitset); + // At least one the bitsets would be empty. For the non-empty one, we need to + // properly partition the elements that appear within that bitset. + std::__swap_bitmap_pos_within<_AlgPolicy>(__first, __lm1, __left_bitset, __right_bitset); + + // Move the pivot to its correct position. + _RandomAccessIterator __pivot_pos = __first - difference_type(1); + if (__begin != __pivot_pos) { + *__begin = _Ops::__iter_move(__pivot_pos); + } + *__pivot_pos = std::move(__pivot); + return std::make_pair(__pivot_pos, __already_partitioned); +} + +// Partition [__first, __last) using the comparator __comp. *__first has the +// chosen pivot. Elements that are equivalent are kept to the right of the +// pivot. Returns the iterator for the pivot and a bool value which is true if +// the provided range is already sorted, false otherwise. We assume that the +// length of the range is at least three elements. +template +_LIBCPP_HIDE_FROM_ABI std::pair<_RandomAccessIterator, bool> +__partition_with_equals_on_right(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) { + using _Ops = _IterOps<_AlgPolicy>; + typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; + typedef typename std::iterator_traits<_RandomAccessIterator>::value_type value_type; + _LIBCPP_ASSERT(__last - __first >= difference_type(3), ""); + const _RandomAccessIterator __begin = __first; // used for bounds checking, those are not moved around + const _RandomAccessIterator __end = __last; (void)__end; // + value_type __pivot(_Ops::__iter_move(__first)); + // Find the first element greater or equal to the pivot. It will be always + // guarded because __introsort will do the median-of-three before calling + // this. + do { + ++__first; + _LIBCPP_ASSERT(__first != __end, "Would read out of bounds, does your comparator satisfy the strict-weak ordering requirement?"); + } while (__comp(*__first, __pivot)); + + // Find the last element less than the pivot. + if (__begin == __first - difference_type(1)) { + while (__first < __last && !__comp(*--__last, __pivot)) + ; + } else { + // Guarded. + do { + _LIBCPP_ASSERT(__last != __begin, "Would read out of bounds, does your comparator satisfy the strict-weak ordering requirement?"); + --__last; + } while (!__comp(*__last, __pivot)); + } + + // If the first element greater than or equal to the pivot is at or after the + // last element less than the pivot, then we have covered the entire range + // without swapping elements. This implies the range is already partitioned. + bool __already_partitioned = __first >= __last; + // Go through the remaining elements. Swap pairs of elements (one to the + // right of the pivot and the other to left of the pivot) that are not on the + // correct side of the pivot. + while (__first < __last) { + _Ops::iter_swap(__first, __last); + do { + ++__first; + _LIBCPP_ASSERT(__first != __end, "Would read out of bounds, does your comparator satisfy the strict-weak ordering requirement?"); + } while (__comp(*__first, __pivot)); + do { + _LIBCPP_ASSERT(__last != __begin, "Would read out of bounds, does your comparator satisfy the strict-weak ordering requirement?"); + --__last; + } while (!__comp(*__last, __pivot)); + } + // Move the pivot to its correct position. + _RandomAccessIterator __pivot_pos = __first - difference_type(1); + if (__begin != __pivot_pos) { + *__begin = _Ops::__iter_move(__pivot_pos); + } + *__pivot_pos = std::move(__pivot); + return std::make_pair(__pivot_pos, __already_partitioned); +} + +// Similar to the above function. Elements equivalent to the pivot are put to +// the left of the pivot. Returns the iterator to the pivot element. +template +_LIBCPP_HIDE_FROM_ABI _RandomAccessIterator +__partition_with_equals_on_left(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) { + using _Ops = _IterOps<_AlgPolicy>; + typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; + typedef typename std::iterator_traits<_RandomAccessIterator>::value_type value_type; + // TODO(LLVM18): Make __begin const, see https://reviews.llvm.org/D147089#4349748 + _RandomAccessIterator __begin = __first; // used for bounds checking, those are not moved around + const _RandomAccessIterator __end = __last; (void)__end; // + value_type __pivot(_Ops::__iter_move(__first)); + if (__comp(__pivot, *(__last - difference_type(1)))) { + // Guarded. + do { + ++__first; + _LIBCPP_ASSERT(__first != __end, "Would read out of bounds, does your comparator satisfy the strict-weak ordering requirement?"); + } while (!__comp(__pivot, *__first)); + } else { + while (++__first < __last && !__comp(__pivot, *__first)) { + } + } + + if (__first < __last) { + // It will be always guarded because __introsort will do the + // median-of-three before calling this. + do { + _LIBCPP_ASSERT(__last != __begin, "Would read out of bounds, does your comparator satisfy the strict-weak ordering requirement?"); + --__last; + } while (__comp(__pivot, *__last)); + } + while (__first < __last) { + _Ops::iter_swap(__first, __last); + do { + ++__first; + _LIBCPP_ASSERT(__first != __end, "Would read out of bounds, does your comparator satisfy the strict-weak ordering requirement?"); + } while (!__comp(__pivot, *__first)); + do { + _LIBCPP_ASSERT(__last != __begin, "Would read out of bounds, does your comparator satisfy the strict-weak ordering requirement?"); + --__last; + } while (__comp(__pivot, *__last)); + } + _RandomAccessIterator __pivot_pos = __first - difference_type(1); + if (__begin != __pivot_pos) { + *__begin = _Ops::__iter_move(__pivot_pos); + } + *__pivot_pos = std::move(__pivot); + return __first; +} + +// The main sorting function. Implements introsort combined with other ideas: +// - option of using block quick sort for partitioning, +// - guarded and unguarded insertion sort for small lengths, +// - Tuckey's ninther technique for computing the pivot, +// - check on whether partition was not required. +// The implementation is partly based on Orson Peters' pattern-defeating +// quicksort, published at: . +template +void __introsort(_RandomAccessIterator __first, + _RandomAccessIterator __last, + _Compare __comp, + typename iterator_traits<_RandomAccessIterator>::difference_type __depth, + bool __leftmost = true) { + using _Ops = _IterOps<_AlgPolicy>; + typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; + using _Comp_ref = __comp_ref_type<_Compare>; + // Upper bound for using insertion sort for sorting. + _LIBCPP_CONSTEXPR difference_type __limit = 24; + // Lower bound for using Tuckey's ninther technique for median computation. + _LIBCPP_CONSTEXPR difference_type __ninther_threshold = 128; + while (true) { + difference_type __len = __last - __first; + switch (__len) { + case 0: + case 1: + return; + case 2: + if (__comp(*--__last, *__first)) + _Ops::iter_swap(__first, __last); + return; + case 3: + std::__sort3_maybe_branchless<_AlgPolicy, _Compare>(__first, __first + difference_type(1), --__last, __comp); + return; + case 4: + std::__sort4_maybe_branchless<_AlgPolicy, _Compare>( + __first, __first + difference_type(1), __first + difference_type(2), --__last, __comp); + return; + case 5: + std::__sort5_maybe_branchless<_AlgPolicy, _Compare>( + __first, __first + difference_type(1), __first + difference_type(2), __first + difference_type(3), + --__last, __comp); + return; + } + // Use insertion sort if the length of the range is below the specified limit. + if (__len < __limit) { + if (__leftmost) { + std::__insertion_sort<_AlgPolicy, _Compare>(__first, __last, __comp); + } else { + std::__insertion_sort_unguarded<_AlgPolicy, _Compare>(__first, __last, __comp); + } + return; + } + if (__depth == 0) { + // Fallback to heap sort as Introsort suggests. + std::__partial_sort<_AlgPolicy, _Compare>(__first, __last, __last, __comp); + return; + } + --__depth; + { + difference_type __half_len = __len / 2; + // Use Tuckey's ninther technique or median of 3 for pivot selection + // depending on the length of the range being sorted. + if (__len > __ninther_threshold) { + std::__sort3<_AlgPolicy, _Compare>(__first, __first + __half_len, __last - difference_type(1), __comp); + std::__sort3<_AlgPolicy, _Compare>( + __first + difference_type(1), __first + (__half_len - 1), __last - difference_type(2), __comp); + std::__sort3<_AlgPolicy, _Compare>( + __first + difference_type(2), __first + (__half_len + 1), __last - difference_type(3), __comp); + std::__sort3<_AlgPolicy, _Compare>( + __first + (__half_len - 1), __first + __half_len, __first + (__half_len + 1), __comp); + _Ops::iter_swap(__first, __first + __half_len); + } else { + std::__sort3<_AlgPolicy, _Compare>(__first + __half_len, __first, __last - difference_type(1), __comp); + } + } + // The elements to the left of the current iterator range are already + // sorted. If the current iterator range to be sorted is not the + // leftmost part of the entire iterator range and the pivot is same as + // the highest element in the range to the left, then we know that all + // the elements in the range [first, pivot] would be equal to the pivot, + // assuming the equal elements are put on the left side when + // partitioned. This also means that we do not need to sort the left + // side of the partition. + if (!__leftmost && !__comp(*(__first - difference_type(1)), *__first)) { + __first = std::__partition_with_equals_on_left<_AlgPolicy, _RandomAccessIterator, _Comp_ref>( + __first, __last, _Comp_ref(__comp)); + continue; + } + // Use bitset partition only if asked for. + auto __ret = + _UseBitSetPartition + ? std::__bitset_partition<_AlgPolicy, _RandomAccessIterator, _Compare>(__first, __last, __comp) + : std::__partition_with_equals_on_right<_AlgPolicy, _RandomAccessIterator, _Compare>(__first, __last, __comp); + _RandomAccessIterator __i = __ret.first; + // [__first, __i) < *__i and *__i <= [__i+1, __last) + // If we were given a perfect partition, see if insertion sort is quick... + if (__ret.second) { + bool __fs = std::__insertion_sort_incomplete<_AlgPolicy, _Compare>(__first, __i, __comp); + if (std::__insertion_sort_incomplete<_AlgPolicy, _Compare>(__i + difference_type(1), __last, __comp)) { + if (__fs) + return; + __last = __i; + continue; + } else { + if (__fs) { + __first = ++__i; + continue; + } + } + } + // Sort the left partiton recursively and the right partition with tail recursion elimination. + std::__introsort<_AlgPolicy, _Compare, _RandomAccessIterator, _UseBitSetPartition>( + __first, __i, __comp, __depth, __leftmost); + __leftmost = false; + __first = ++__i; + } +} + +template +inline _LIBCPP_HIDE_FROM_ABI _Number __log2i(_Number __n) { + if (__n == 0) + return 0; + if (sizeof(__n) <= sizeof(unsigned)) + return sizeof(unsigned) * CHAR_BIT - 1 - __libcpp_clz(static_cast(__n)); + if (sizeof(__n) <= sizeof(unsigned long)) + return sizeof(unsigned long) * CHAR_BIT - 1 - __libcpp_clz(static_cast(__n)); + if (sizeof(__n) <= sizeof(unsigned long long)) + return sizeof(unsigned long long) * CHAR_BIT - 1 - __libcpp_clz(static_cast(__n)); + + _Number __log2 = 0; + while (__n > 1) { + __log2++; + __n >>= 1; + } + return __log2; +} + +template +void __sort(_RandomAccessIterator, _RandomAccessIterator, _Comp); + +extern template _LIBCPP_FUNC_VIS void __sort<__less&, char*>(char*, char*, __less&); +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +extern template _LIBCPP_FUNC_VIS void __sort<__less&, wchar_t*>(wchar_t*, wchar_t*, __less&); +#endif +extern template _LIBCPP_FUNC_VIS void __sort<__less&, signed char*>(signed char*, signed char*, __less&); +extern template _LIBCPP_FUNC_VIS void __sort<__less&, unsigned char*>(unsigned char*, unsigned char*, __less&); +extern template _LIBCPP_FUNC_VIS void __sort<__less&, short*>(short*, short*, __less&); +extern template _LIBCPP_FUNC_VIS void __sort<__less&, unsigned short*>(unsigned short*, unsigned short*, __less&); +extern template _LIBCPP_FUNC_VIS void __sort<__less&, int*>(int*, int*, __less&); +extern template _LIBCPP_FUNC_VIS void __sort<__less&, unsigned*>(unsigned*, unsigned*, __less&); +extern template _LIBCPP_FUNC_VIS void __sort<__less&, long*>(long*, long*, __less&); +extern template _LIBCPP_FUNC_VIS void __sort<__less&, unsigned long*>(unsigned long*, unsigned long*, __less&); +extern template _LIBCPP_FUNC_VIS void __sort<__less&, long long*>(long long*, long long*, __less&); +extern template _LIBCPP_FUNC_VIS void __sort<__less&, unsigned long long*>(unsigned long long*, unsigned long long*, __less&); +extern template _LIBCPP_FUNC_VIS void __sort<__less&, float*>(float*, float*, __less&); +extern template _LIBCPP_FUNC_VIS void __sort<__less&, double*>(double*, double*, __less&); +extern template _LIBCPP_FUNC_VIS void __sort<__less&, long double*>(long double*, long double*, __less&); + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void +__sort_dispatch(_RandomAccessIterator __first, _RandomAccessIterator __last, _Comp& __comp) { + typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; + difference_type __depth_limit = 2 * std::__log2i(__last - __first); + + // Only use bitset partitioning for arithmetic types. We should also check + // that the default comparator is in use so that we are sure that there are no + // branches in the comparator. + std::__introsort<_AlgPolicy, + _Comp&, + _RandomAccessIterator, + __use_branchless_sort<_Comp, _RandomAccessIterator>::value>( + __first, __last, __comp, __depth_limit); +} + +template +using __is_any_of = _Or...>; + +template +using __sort_is_specialized_in_library = __is_any_of< + _Type, + char, +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS + wchar_t, +#endif + signed char, + unsigned char, + short, + unsigned short, + int, + unsigned int, + long, + unsigned long, + long long, + unsigned long long, + float, + double, + long double>; + +template ::value, int> = 0> +_LIBCPP_HIDE_FROM_ABI void __sort_dispatch(_Type* __first, _Type* __last, __less<_Type>& __comp) { + std::__sort<__less<_Type>&, _Type*>(__first, __last, __comp); +} + +template ::value, int> = 0> +_LIBCPP_HIDE_FROM_ABI void __sort_dispatch(_Type* __first, _Type* __last, less<_Type>&) { + __less<_Type> __comp; + std::__sort<__less<_Type>&, _Type*>(__first, __last, __comp); +} + +#if _LIBCPP_STD_VER >= 14 +template ::value, int> = 0> +_LIBCPP_HIDE_FROM_ABI void __sort_dispatch(_Type* __first, _Type* __last, less<>&) { + __less<_Type> __comp; + std::__sort<__less<_Type>&, _Type*>(__first, __last, __comp); +} +#endif + +#if _LIBCPP_STD_VER >= 20 +template ::value, int> = 0> +_LIBCPP_HIDE_FROM_ABI void __sort_dispatch(_Type* __first, _Type* __last, ranges::less&) { + __less<_Type> __comp; + std::__sort<__less<_Type>&, _Type*>(__first, __last, __comp); +} +#endif + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 +void __sort_impl(_RandomAccessIterator __first, _RandomAccessIterator __last, _Comp& __comp) { + std::__debug_randomize_range<_AlgPolicy>(__first, __last); + + if (__libcpp_is_constant_evaluated()) { + std::__partial_sort<_AlgPolicy>( + std::__unwrap_iter(__first), std::__unwrap_iter(__last), std::__unwrap_iter(__last), __comp); + } else { + std::__sort_dispatch<_AlgPolicy>(std::__unwrap_iter(__first), std::__unwrap_iter(__last), __comp); + } +} + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 +void sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Comp __comp) { + std::__sort_impl<_ClassicAlgPolicy>(std::move(__first), std::move(__last), __comp); +} + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 +void sort(_RandomAccessIterator __first, _RandomAccessIterator __last) { + std::sort(__first, __last, __less::value_type>()); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_SORT_H diff --git a/third_party/libcxx/__algorithm/sort_heap.h b/third_party/libcxx/__algorithm/sort_heap.h new file mode 100644 index 000000000..0dc9acced --- /dev/null +++ b/third_party/libcxx/__algorithm/sort_heap.h @@ -0,0 +1,56 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_SORT_HEAP_H +#define _LIBCPP___ALGORITHM_SORT_HEAP_H + +#include <__algorithm/comp.h> +#include <__algorithm/comp_ref_type.h> +#include <__algorithm/iterator_operations.h> +#include <__algorithm/pop_heap.h> +#include <__config> +#include <__iterator/iterator_traits.h> +#include <__type_traits/is_copy_assignable.h> +#include <__type_traits/is_copy_constructible.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 +void __sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare&& __comp) { + __comp_ref_type<_Compare> __comp_ref = __comp; + + using difference_type = typename iterator_traits<_RandomAccessIterator>::difference_type; + for (difference_type __n = __last - __first; __n > 1; --__last, (void) --__n) + std::__pop_heap<_AlgPolicy>(__first, __last, __comp_ref, __n); +} + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 +void sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) { + static_assert(std::is_copy_constructible<_RandomAccessIterator>::value, "Iterators must be copy constructible."); + static_assert(std::is_copy_assignable<_RandomAccessIterator>::value, "Iterators must be copy assignable."); + + std::__sort_heap<_ClassicAlgPolicy>(std::move(__first), std::move(__last), __comp); +} + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 +void sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) { + std::sort_heap(std::move(__first), std::move(__last), + __less::value_type>()); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_SORT_HEAP_H diff --git a/third_party/libcxx/__algorithm/stable_partition.h b/third_party/libcxx/__algorithm/stable_partition.h new file mode 100644 index 000000000..3b68bd306 --- /dev/null +++ b/third_party/libcxx/__algorithm/stable_partition.h @@ -0,0 +1,328 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_STABLE_PARTITION_H +#define _LIBCPP___ALGORITHM_STABLE_PARTITION_H + +#include <__algorithm/iterator_operations.h> +#include <__algorithm/rotate.h> +#include <__config> +#include <__iterator/advance.h> +#include <__iterator/distance.h> +#include <__iterator/iterator_traits.h> +#include <__memory/destruct_n.h> +#include <__memory/temporary_buffer.h> +#include <__memory/unique_ptr.h> +#include <__utility/move.h> +#include <__utility/pair.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI _ForwardIterator +__stable_partition_impl(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred, + _Distance __len, _Pair __p, forward_iterator_tag __fit) +{ + using _Ops = _IterOps<_AlgPolicy>; + + // *__first is known to be false + // __len >= 1 + if (__len == 1) + return __first; + if (__len == 2) + { + _ForwardIterator __m = __first; + if (__pred(*++__m)) + { + _Ops::iter_swap(__first, __m); + return __m; + } + return __first; + } + if (__len <= __p.second) + { // The buffer is big enough to use + typedef typename iterator_traits<_ForwardIterator>::value_type value_type; + __destruct_n __d(0); + unique_ptr __h(__p.first, __d); + // Move the falses into the temporary buffer, and the trues to the front of the line + // Update __first to always point to the end of the trues + value_type* __t = __p.first; + ::new ((void*)__t) value_type(_Ops::__iter_move(__first)); + __d.template __incr(); + ++__t; + _ForwardIterator __i = __first; + while (++__i != __last) + { + if (__pred(*__i)) + { + *__first = _Ops::__iter_move(__i); + ++__first; + } + else + { + ::new ((void*)__t) value_type(_Ops::__iter_move(__i)); + __d.template __incr(); + ++__t; + } + } + // All trues now at start of range, all falses in buffer + // Move falses back into range, but don't mess up __first which points to first false + __i = __first; + for (value_type* __t2 = __p.first; __t2 < __t; ++__t2, (void) ++__i) + *__i = _Ops::__iter_move(__t2); + // __h destructs moved-from values out of the temp buffer, but doesn't deallocate buffer + return __first; + } + // Else not enough buffer, do in place + // __len >= 3 + _ForwardIterator __m = __first; + _Distance __len2 = __len / 2; // __len2 >= 2 + _Ops::advance(__m, __len2); + // recurse on [__first, __m), *__first know to be false + // F????????????????? + // f m l + _ForwardIterator __first_false = std::__stable_partition_impl<_AlgPolicy, _Predicate&>( + __first, __m, __pred, __len2, __p, __fit); + // TTTFFFFF?????????? + // f ff m l + // recurse on [__m, __last], except increase __m until *(__m) is false, *__last know to be true + _ForwardIterator __m1 = __m; + _ForwardIterator __second_false = __last; + _Distance __len_half = __len - __len2; + while (__pred(*__m1)) + { + if (++__m1 == __last) + goto __second_half_done; + --__len_half; + } + // TTTFFFFFTTTF?????? + // f ff m m1 l + __second_false = std::__stable_partition_impl<_AlgPolicy, _Predicate&>( + __m1, __last, __pred, __len_half, __p, __fit); +__second_half_done: + // TTTFFFFFTTTTTFFFFF + // f ff m sf l + return std::__rotate<_AlgPolicy>(__first_false, __m, __second_false).first; + // TTTTTTTTFFFFFFFFFF + // | +} + +template +_LIBCPP_HIDE_FROM_ABI _ForwardIterator +__stable_partition_impl(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred, + forward_iterator_tag) +{ + const unsigned __alloc_limit = 3; // might want to make this a function of trivial assignment + // Either prove all true and return __first or point to first false + while (true) + { + if (__first == __last) + return __first; + if (!__pred(*__first)) + break; + ++__first; + } + // We now have a reduced range [__first, __last) + // *__first is known to be false + typedef typename iterator_traits<_ForwardIterator>::difference_type difference_type; + typedef typename iterator_traits<_ForwardIterator>::value_type value_type; + difference_type __len = _IterOps<_AlgPolicy>::distance(__first, __last); + pair __p(0, 0); + unique_ptr __h; + if (__len >= __alloc_limit) + { +// TODO: Remove the use of std::get_temporary_buffer +_LIBCPP_SUPPRESS_DEPRECATED_PUSH + __p = _VSTD::get_temporary_buffer(__len); +_LIBCPP_SUPPRESS_DEPRECATED_POP + __h.reset(__p.first); + } + return std::__stable_partition_impl<_AlgPolicy, _Predicate&>( + std::move(__first), std::move(__last), __pred, __len, __p, forward_iterator_tag()); +} + +template +_BidirectionalIterator +__stable_partition_impl(_BidirectionalIterator __first, _BidirectionalIterator __last, _Predicate __pred, + _Distance __len, _Pair __p, bidirectional_iterator_tag __bit) +{ + using _Ops = _IterOps<_AlgPolicy>; + + // *__first is known to be false + // *__last is known to be true + // __len >= 2 + if (__len == 2) + { + _Ops::iter_swap(__first, __last); + return __last; + } + if (__len == 3) + { + _BidirectionalIterator __m = __first; + if (__pred(*++__m)) + { + _Ops::iter_swap(__first, __m); + _Ops::iter_swap(__m, __last); + return __last; + } + _Ops::iter_swap(__m, __last); + _Ops::iter_swap(__first, __m); + return __m; + } + if (__len <= __p.second) + { // The buffer is big enough to use + typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type; + __destruct_n __d(0); + unique_ptr __h(__p.first, __d); + // Move the falses into the temporary buffer, and the trues to the front of the line + // Update __first to always point to the end of the trues + value_type* __t = __p.first; + ::new ((void*)__t) value_type(_Ops::__iter_move(__first)); + __d.template __incr(); + ++__t; + _BidirectionalIterator __i = __first; + while (++__i != __last) + { + if (__pred(*__i)) + { + *__first = _Ops::__iter_move(__i); + ++__first; + } + else + { + ::new ((void*)__t) value_type(_Ops::__iter_move(__i)); + __d.template __incr(); + ++__t; + } + } + // move *__last, known to be true + *__first = _Ops::__iter_move(__i); + __i = ++__first; + // All trues now at start of range, all falses in buffer + // Move falses back into range, but don't mess up __first which points to first false + for (value_type* __t2 = __p.first; __t2 < __t; ++__t2, (void) ++__i) + *__i = _Ops::__iter_move(__t2); + // __h destructs moved-from values out of the temp buffer, but doesn't deallocate buffer + return __first; + } + // Else not enough buffer, do in place + // __len >= 4 + _BidirectionalIterator __m = __first; + _Distance __len2 = __len / 2; // __len2 >= 2 + _Ops::advance(__m, __len2); + // recurse on [__first, __m-1], except reduce __m-1 until *(__m-1) is true, *__first know to be false + // F????????????????T + // f m l + _BidirectionalIterator __m1 = __m; + _BidirectionalIterator __first_false = __first; + _Distance __len_half = __len2; + while (!__pred(*--__m1)) + { + if (__m1 == __first) + goto __first_half_done; + --__len_half; + } + // F???TFFF?????????T + // f m1 m l + __first_false = std::__stable_partition_impl<_AlgPolicy, _Predicate&>( + __first, __m1, __pred, __len_half, __p, __bit); +__first_half_done: + // TTTFFFFF?????????T + // f ff m l + // recurse on [__m, __last], except increase __m until *(__m) is false, *__last know to be true + __m1 = __m; + _BidirectionalIterator __second_false = __last; + ++__second_false; + __len_half = __len - __len2; + while (__pred(*__m1)) + { + if (++__m1 == __last) + goto __second_half_done; + --__len_half; + } + // TTTFFFFFTTTF?????T + // f ff m m1 l + __second_false = std::__stable_partition_impl<_AlgPolicy, _Predicate&>( + __m1, __last, __pred, __len_half, __p, __bit); +__second_half_done: + // TTTFFFFFTTTTTFFFFF + // f ff m sf l + return std::__rotate<_AlgPolicy>(__first_false, __m, __second_false).first; + // TTTTTTTTFFFFFFFFFF + // | +} + +template +_LIBCPP_HIDE_FROM_ABI _BidirectionalIterator +__stable_partition_impl(_BidirectionalIterator __first, _BidirectionalIterator __last, _Predicate __pred, + bidirectional_iterator_tag) +{ + typedef typename iterator_traits<_BidirectionalIterator>::difference_type difference_type; + typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type; + const difference_type __alloc_limit = 4; // might want to make this a function of trivial assignment + // Either prove all true and return __first or point to first false + while (true) + { + if (__first == __last) + return __first; + if (!__pred(*__first)) + break; + ++__first; + } + // __first points to first false, everything prior to __first is already set. + // Either prove [__first, __last) is all false and return __first, or point __last to last true + do + { + if (__first == --__last) + return __first; + } while (!__pred(*__last)); + // We now have a reduced range [__first, __last] + // *__first is known to be false + // *__last is known to be true + // __len >= 2 + difference_type __len = _IterOps<_AlgPolicy>::distance(__first, __last) + 1; + pair __p(0, 0); + unique_ptr __h; + if (__len >= __alloc_limit) + { +// TODO: Remove the use of std::get_temporary_buffer +_LIBCPP_SUPPRESS_DEPRECATED_PUSH + __p = _VSTD::get_temporary_buffer(__len); +_LIBCPP_SUPPRESS_DEPRECATED_POP + __h.reset(__p.first); + } + return std::__stable_partition_impl<_AlgPolicy, _Predicate&>( + std::move(__first), std::move(__last), __pred, __len, __p, bidirectional_iterator_tag()); +} + +template +_LIBCPP_HIDE_FROM_ABI +_ForwardIterator __stable_partition( + _ForwardIterator __first, _ForwardIterator __last, _Predicate&& __pred, _IterCategory __iter_category) { + return std::__stable_partition_impl<_AlgPolicy, __remove_cvref_t<_Predicate>&>( + std::move(__first), std::move(__last), __pred, __iter_category); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +_ForwardIterator +stable_partition(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred) +{ + using _IterCategory = typename iterator_traits<_ForwardIterator>::iterator_category; + return std::__stable_partition<_ClassicAlgPolicy, _Predicate&>( + std::move(__first), std::move(__last), __pred, _IterCategory()); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_STABLE_PARTITION_H diff --git a/third_party/libcxx/__algorithm/stable_sort.h b/third_party/libcxx/__algorithm/stable_sort.h new file mode 100644 index 000000000..0c9daa2ad --- /dev/null +++ b/third_party/libcxx/__algorithm/stable_sort.h @@ -0,0 +1,278 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_STABLE_SORT_H +#define _LIBCPP___ALGORITHM_STABLE_SORT_H + +#include <__algorithm/comp.h> +#include <__algorithm/comp_ref_type.h> +#include <__algorithm/inplace_merge.h> +#include <__algorithm/iterator_operations.h> +#include <__algorithm/sort.h> +#include <__config> +#include <__iterator/iterator_traits.h> +#include <__memory/destruct_n.h> +#include <__memory/temporary_buffer.h> +#include <__memory/unique_ptr.h> +#include <__type_traits/is_trivially_copy_assignable.h> +#include <__utility/move.h> +#include <__utility/pair.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI +void __insertion_sort_move(_BidirectionalIterator __first1, _BidirectionalIterator __last1, + typename iterator_traits<_BidirectionalIterator>::value_type* __first2, _Compare __comp) { + using _Ops = _IterOps<_AlgPolicy>; + + typedef typename iterator_traits<_BidirectionalIterator>::value_type value_type; + if (__first1 != __last1) { + __destruct_n __d(0); + unique_ptr __h(__first2, __d); + value_type* __last2 = __first2; + ::new ((void*)__last2) value_type(_Ops::__iter_move(__first1)); + __d.template __incr(); + for (++__last2; ++__first1 != __last1; ++__last2) { + value_type* __j2 = __last2; + value_type* __i2 = __j2; + if (__comp(*__first1, *--__i2)) { + ::new ((void*)__j2) value_type(std::move(*__i2)); + __d.template __incr(); + for (--__j2; __i2 != __first2 && __comp(*__first1, *--__i2); --__j2) + *__j2 = std::move(*__i2); + *__j2 = _Ops::__iter_move(__first1); + } else { + ::new ((void*)__j2) value_type(_Ops::__iter_move(__first1)); + __d.template __incr(); + } + } + __h.release(); + } +} + +template +_LIBCPP_HIDE_FROM_ABI void +__merge_move_construct(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _InputIterator2 __last2, + typename iterator_traits<_InputIterator1>::value_type* __result, _Compare __comp) +{ + using _Ops = _IterOps<_AlgPolicy>; + + typedef typename iterator_traits<_InputIterator1>::value_type value_type; + __destruct_n __d(0); + unique_ptr __h(__result, __d); + for (; true; ++__result) + { + if (__first1 == __last1) + { + for (; __first2 != __last2; ++__first2, (void) ++__result, __d.template __incr()) + ::new ((void*)__result) value_type(_Ops::__iter_move(__first2)); + __h.release(); + return; + } + if (__first2 == __last2) + { + for (; __first1 != __last1; ++__first1, (void) ++__result, __d.template __incr()) + ::new ((void*)__result) value_type(_Ops::__iter_move(__first1)); + __h.release(); + return; + } + if (__comp(*__first2, *__first1)) + { + ::new ((void*)__result) value_type(_Ops::__iter_move(__first2)); + __d.template __incr(); + ++__first2; + } + else + { + ::new ((void*)__result) value_type(_Ops::__iter_move(__first1)); + __d.template __incr(); + ++__first1; + } + } +} + +template +_LIBCPP_HIDE_FROM_ABI void +__merge_move_assign(_InputIterator1 __first1, _InputIterator1 __last1, + _InputIterator2 __first2, _InputIterator2 __last2, + _OutputIterator __result, _Compare __comp) +{ + using _Ops = _IterOps<_AlgPolicy>; + + for (; __first1 != __last1; ++__result) + { + if (__first2 == __last2) + { + for (; __first1 != __last1; ++__first1, (void) ++__result) + *__result = _Ops::__iter_move(__first1); + return; + } + if (__comp(*__first2, *__first1)) + { + *__result = _Ops::__iter_move(__first2); + ++__first2; + } + else + { + *__result = _Ops::__iter_move(__first1); + ++__first1; + } + } + for (; __first2 != __last2; ++__first2, (void) ++__result) + *__result = _Ops::__iter_move(__first2); +} + +template +void +__stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp, + typename iterator_traits<_RandomAccessIterator>::difference_type __len, + typename iterator_traits<_RandomAccessIterator>::value_type* __buff, ptrdiff_t __buff_size); + +template +void +__stable_sort_move(_RandomAccessIterator __first1, _RandomAccessIterator __last1, _Compare __comp, + typename iterator_traits<_RandomAccessIterator>::difference_type __len, + typename iterator_traits<_RandomAccessIterator>::value_type* __first2) +{ + using _Ops = _IterOps<_AlgPolicy>; + + typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; + switch (__len) + { + case 0: + return; + case 1: + ::new ((void*)__first2) value_type(_Ops::__iter_move(__first1)); + return; + case 2: + __destruct_n __d(0); + unique_ptr __h2(__first2, __d); + if (__comp(*--__last1, *__first1)) + { + ::new ((void*)__first2) value_type(_Ops::__iter_move(__last1)); + __d.template __incr(); + ++__first2; + ::new ((void*)__first2) value_type(_Ops::__iter_move(__first1)); + } + else + { + ::new ((void*)__first2) value_type(_Ops::__iter_move(__first1)); + __d.template __incr(); + ++__first2; + ::new ((void*)__first2) value_type(_Ops::__iter_move(__last1)); + } + __h2.release(); + return; + } + if (__len <= 8) + { + std::__insertion_sort_move<_AlgPolicy, _Compare>(__first1, __last1, __first2, __comp); + return; + } + typename iterator_traits<_RandomAccessIterator>::difference_type __l2 = __len / 2; + _RandomAccessIterator __m = __first1 + __l2; + std::__stable_sort<_AlgPolicy, _Compare>(__first1, __m, __comp, __l2, __first2, __l2); + std::__stable_sort<_AlgPolicy, _Compare>(__m, __last1, __comp, __len - __l2, __first2 + __l2, __len - __l2); + std::__merge_move_construct<_AlgPolicy, _Compare>(__first1, __m, __m, __last1, __first2, __comp); +} + +template +struct __stable_sort_switch +{ + static const unsigned value = 128*is_trivially_copy_assignable<_Tp>::value; +}; + +template +void +__stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp, + typename iterator_traits<_RandomAccessIterator>::difference_type __len, + typename iterator_traits<_RandomAccessIterator>::value_type* __buff, ptrdiff_t __buff_size) +{ + typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type; + typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type; + switch (__len) + { + case 0: + case 1: + return; + case 2: + if (__comp(*--__last, *__first)) + _IterOps<_AlgPolicy>::iter_swap(__first, __last); + return; + } + if (__len <= static_cast(__stable_sort_switch::value)) + { + std::__insertion_sort<_AlgPolicy, _Compare>(__first, __last, __comp); + return; + } + typename iterator_traits<_RandomAccessIterator>::difference_type __l2 = __len / 2; + _RandomAccessIterator __m = __first + __l2; + if (__len <= __buff_size) + { + __destruct_n __d(0); + unique_ptr __h2(__buff, __d); + std::__stable_sort_move<_AlgPolicy, _Compare>(__first, __m, __comp, __l2, __buff); + __d.__set(__l2, (value_type*)nullptr); + std::__stable_sort_move<_AlgPolicy, _Compare>(__m, __last, __comp, __len - __l2, __buff + __l2); + __d.__set(__len, (value_type*)nullptr); + std::__merge_move_assign<_AlgPolicy, _Compare>( + __buff, __buff + __l2, __buff + __l2, __buff + __len, __first, __comp); +// _VSTD::__merge<_Compare>(move_iterator(__buff), +// move_iterator(__buff + __l2), +// move_iterator<_RandomAccessIterator>(__buff + __l2), +// move_iterator<_RandomAccessIterator>(__buff + __len), +// __first, __comp); + return; + } + std::__stable_sort<_AlgPolicy, _Compare>(__first, __m, __comp, __l2, __buff, __buff_size); + std::__stable_sort<_AlgPolicy, _Compare>(__m, __last, __comp, __len - __l2, __buff, __buff_size); + std::__inplace_merge<_AlgPolicy>(__first, __m, __last, __comp, __l2, __len - __l2, __buff, __buff_size); +} + +template +inline _LIBCPP_HIDE_FROM_ABI +void __stable_sort_impl(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare& __comp) { + using value_type = typename iterator_traits<_RandomAccessIterator>::value_type; + using difference_type = typename iterator_traits<_RandomAccessIterator>::difference_type; + + difference_type __len = __last - __first; + pair __buf(0, 0); + unique_ptr __h; + if (__len > static_cast(__stable_sort_switch::value)) { +// TODO: Remove the use of std::get_temporary_buffer +_LIBCPP_SUPPRESS_DEPRECATED_PUSH + __buf = std::get_temporary_buffer(__len); +_LIBCPP_SUPPRESS_DEPRECATED_POP + __h.reset(__buf.first); + } + + std::__stable_sort<_AlgPolicy, __comp_ref_type<_Compare> >(__first, __last, __comp, __len, __buf.first, __buf.second); +} + +template +inline _LIBCPP_HIDE_FROM_ABI +void stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp) { + std::__stable_sort_impl<_ClassicAlgPolicy>(std::move(__first), std::move(__last), __comp); +} + +template +inline _LIBCPP_HIDE_FROM_ABI +void stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last) { + std::stable_sort(__first, __last, __less::value_type>()); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_STABLE_SORT_H diff --git a/third_party/libcxx/__algorithm/swap_ranges.h b/third_party/libcxx/__algorithm/swap_ranges.h new file mode 100644 index 000000000..5ce5ed8c8 --- /dev/null +++ b/third_party/libcxx/__algorithm/swap_ranges.h @@ -0,0 +1,60 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_SWAP_RANGES_H +#define _LIBCPP___ALGORITHM_SWAP_RANGES_H + +#include <__algorithm/iterator_operations.h> +#include <__config> +#include <__utility/move.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +// 2+2 iterators: the shorter size will be used. +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 +pair<_ForwardIterator1, _ForwardIterator2> +__swap_ranges(_ForwardIterator1 __first1, _Sentinel1 __last1, _ForwardIterator2 __first2, _Sentinel2 __last2) { + while (__first1 != __last1 && __first2 != __last2) { + _IterOps<_AlgPolicy>::iter_swap(__first1, __first2); + ++__first1; + ++__first2; + } + + return pair<_ForwardIterator1, _ForwardIterator2>(std::move(__first1), std::move(__first2)); +} + +// 2+1 iterators: size2 >= size1. +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 +pair<_ForwardIterator1, _ForwardIterator2> +__swap_ranges(_ForwardIterator1 __first1, _Sentinel1 __last1, _ForwardIterator2 __first2) { + while (__first1 != __last1) { + _IterOps<_AlgPolicy>::iter_swap(__first1, __first2); + ++__first1; + ++__first2; + } + + return pair<_ForwardIterator1, _ForwardIterator2>(std::move(__first1), std::move(__first2)); +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator2 +swap_ranges(_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2) { + return std::__swap_ranges<_ClassicAlgPolicy>( + std::move(__first1), std::move(__last1), std::move(__first2)).second; +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_SWAP_RANGES_H diff --git a/third_party/libcxx/__algorithm/three_way_comp_ref_type.h b/third_party/libcxx/__algorithm/three_way_comp_ref_type.h new file mode 100644 index 000000000..10396e068 --- /dev/null +++ b/third_party/libcxx/__algorithm/three_way_comp_ref_type.h @@ -0,0 +1,70 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_THREE_WAY_COMP_REF_TYPE_H +#define _LIBCPP___ALGORITHM_THREE_WAY_COMP_REF_TYPE_H + +#include <__compare/ordering.h> +#include <__config> +#include <__debug> +#include <__utility/declval.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +template +struct __debug_three_way_comp { + _Comp& __comp_; + _LIBCPP_HIDE_FROM_ABI constexpr __debug_three_way_comp(_Comp& __c) : __comp_(__c) {} + + template + _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Tp& __x, _Up& __y) { + auto __r = __comp_(__x, __y); + __do_compare_assert(0, __y, __x, __r); + return __r; + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr inline void __do_compare_assert(int, _LHS& __l, _RHS& __r, _Order __o) + requires __comparison_category()(std::declval<_LHS&>(), std::declval<_RHS&>()))> + { + _Order __expected = __o; + if (__o == _Order::less) + __expected = _Order::greater; + if (__o == _Order::greater) + __expected = _Order::less; + _LIBCPP_DEBUG_ASSERT(__comp_(__l, __r) == __expected, "Comparator does not induce a strict weak ordering"); + (void)__l; + (void)__r; + (void)__expected; + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr inline void __do_compare_assert(long, _LHS&, _RHS&, _Order) {} +}; + +// Pass the comparator by lvalue reference. Or in debug mode, using a +// debugging wrapper that stores a reference. +# ifndef _LIBCPP_ENABLE_DEBUG_MODE +template +using __three_way_comp_ref_type = __debug_three_way_comp<_Comp>; +# else +template +using __three_way_comp_ref_type = _Comp&; +# endif + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_THREE_WAY_COMP_REF_TYPE_H diff --git a/third_party/libcxx/__algorithm/transform.h b/third_party/libcxx/__algorithm/transform.h new file mode 100644 index 000000000..4722c154c --- /dev/null +++ b/third_party/libcxx/__algorithm/transform.h @@ -0,0 +1,43 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_TRANSFORM_H +#define _LIBCPP___ALGORITHM_TRANSFORM_H + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +_OutputIterator +transform(_InputIterator __first, _InputIterator __last, _OutputIterator __result, _UnaryOperation __op) +{ + for (; __first != __last; ++__first, (void) ++__result) + *__result = __op(*__first); + return __result; +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +_OutputIterator +transform(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, + _OutputIterator __result, _BinaryOperation __binary_op) +{ + for (; __first1 != __last1; ++__first1, (void) ++__first2, ++__result) + *__result = __binary_op(*__first1, *__first2); + return __result; +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_TRANSFORM_H diff --git a/third_party/libcxx/__algorithm/uniform_random_bit_generator_adaptor.h b/third_party/libcxx/__algorithm/uniform_random_bit_generator_adaptor.h new file mode 100644 index 000000000..1f2039949 --- /dev/null +++ b/third_party/libcxx/__algorithm/uniform_random_bit_generator_adaptor.h @@ -0,0 +1,62 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_RANGES_UNIFORM_RANDOM_BIT_GENERATOR_ADAPTOR_H +#define _LIBCPP___ALGORITHM_RANGES_UNIFORM_RANDOM_BIT_GENERATOR_ADAPTOR_H + +#include <__config> +#include <__functional/invoke.h> +#include <__type_traits/remove_cvref.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +// Range versions of random algorithms (e.g. `std::shuffle`) are less constrained than their classic counterparts. +// Range algorithms only require the given generator to satisfy the `std::uniform_random_bit_generator` concept. +// Classic algorithms require the given generator to meet the uniform random bit generator requirements; these +// requirements include satisfying `std::uniform_random_bit_generator` and add a requirement for the generator to +// provide a nested `result_type` typedef (see `[rand.req.urng]`). +// +// To be able to reuse classic implementations, make the given generator meet the classic requirements by wrapping +// it into an adaptor type that forwards all of its interface and adds the required typedef. +template +class _ClassicGenAdaptor { +private: + // The generator is not required to be copyable or movable, so it has to be stored as a reference. + _Gen& __gen_; + +public: + using result_type = invoke_result_t<_Gen&>; + + _LIBCPP_HIDE_FROM_ABI + static constexpr auto min() { return __remove_cvref_t<_Gen>::min(); } + _LIBCPP_HIDE_FROM_ABI + static constexpr auto max() { return __remove_cvref_t<_Gen>::max(); } + + _LIBCPP_HIDE_FROM_ABI + constexpr explicit _ClassicGenAdaptor(_Gen& __g) : __gen_(__g) {} + + _LIBCPP_HIDE_FROM_ABI + constexpr auto operator()() const { return __gen_(); } +}; + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ALGORITHM_RANGES_UNIFORM_RANDOM_BIT_GENERATOR_ADAPTOR_H diff --git a/third_party/libcxx/__algorithm/unique.h b/third_party/libcxx/__algorithm/unique.h new file mode 100644 index 000000000..1717a00c8 --- /dev/null +++ b/third_party/libcxx/__algorithm/unique.h @@ -0,0 +1,59 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_UNIQUE_H +#define _LIBCPP___ALGORITHM_UNIQUE_H + +#include <__algorithm/adjacent_find.h> +#include <__algorithm/comp.h> +#include <__algorithm/iterator_operations.h> +#include <__config> +#include <__iterator/iterator_traits.h> +#include <__utility/move.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +// unique + +template +_LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 std::pair<_Iter, _Iter> +__unique(_Iter __first, _Sent __last, _BinaryPredicate&& __pred) { + __first = std::__adjacent_find(__first, __last, __pred); + if (__first != __last) { + // ... a a ? ... + // f i + _Iter __i = __first; + for (++__i; ++__i != __last;) + if (!__pred(*__first, *__i)) + *++__first = _IterOps<_AlgPolicy>::__iter_move(__i); + ++__first; + return std::pair<_Iter, _Iter>(std::move(__first), std::move(__i)); + } + return std::pair<_Iter, _Iter>(__first, __first); +} + +template +_LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator +unique(_ForwardIterator __first, _ForwardIterator __last, _BinaryPredicate __pred) { + return std::__unique<_ClassicAlgPolicy>(std::move(__first), std::move(__last), __pred).first; +} + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator +unique(_ForwardIterator __first, _ForwardIterator __last) { + return std::unique(__first, __last, __equal_to()); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_UNIQUE_H diff --git a/third_party/libcxx/__algorithm/unique_copy.h b/third_party/libcxx/__algorithm/unique_copy.h new file mode 100644 index 000000000..81fcd50f0 --- /dev/null +++ b/third_party/libcxx/__algorithm/unique_copy.h @@ -0,0 +1,122 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_UNIQUE_COPY_H +#define _LIBCPP___ALGORITHM_UNIQUE_COPY_H + +#include <__algorithm/comp.h> +#include <__algorithm/iterator_operations.h> +#include <__config> +#include <__iterator/iterator_traits.h> +#include <__type_traits/conditional.h> +#include <__type_traits/is_base_of.h> +#include <__type_traits/is_same.h> +#include <__utility/move.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace __unique_copy_tags { + +struct __reread_from_input_tag {}; +struct __reread_from_output_tag {}; +struct __read_from_tmp_value_tag {}; + +} // namespace __unique_copy_tags + +template +_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI pair<_InputIterator, _OutputIterator> +__unique_copy(_InputIterator __first, + _Sent __last, + _OutputIterator __result, + _BinaryPredicate&& __pred, + __unique_copy_tags::__read_from_tmp_value_tag) { + if (__first != __last) { + typename _IterOps<_AlgPolicy>::template __value_type<_InputIterator> __t(*__first); + *__result = __t; + ++__result; + while (++__first != __last) { + if (!__pred(__t, *__first)) { + __t = *__first; + *__result = __t; + ++__result; + } + } + } + return pair<_InputIterator, _OutputIterator>(std::move(__first), std::move(__result)); +} + +template +_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI pair<_ForwardIterator, _OutputIterator> +__unique_copy(_ForwardIterator __first, + _Sent __last, + _OutputIterator __result, + _BinaryPredicate&& __pred, + __unique_copy_tags::__reread_from_input_tag) { + if (__first != __last) { + _ForwardIterator __i = __first; + *__result = *__i; + ++__result; + while (++__first != __last) { + if (!__pred(*__i, *__first)) { + *__result = *__first; + ++__result; + __i = __first; + } + } + } + return pair<_ForwardIterator, _OutputIterator>(std::move(__first), std::move(__result)); +} + +template +_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI pair<_InputIterator, _InputAndOutputIterator> +__unique_copy(_InputIterator __first, + _Sent __last, + _InputAndOutputIterator __result, + _BinaryPredicate&& __pred, + __unique_copy_tags::__reread_from_output_tag) { + if (__first != __last) { + *__result = *__first; + while (++__first != __last) + if (!__pred(*__result, *__first)) + *++__result = *__first; + ++__result; + } + return pair<_InputIterator, _InputAndOutputIterator>(std::move(__first), std::move(__result)); +} + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator +unique_copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result, _BinaryPredicate __pred) { + using __algo_tag = __conditional_t< + is_base_of::iterator_category>::value, + __unique_copy_tags::__reread_from_input_tag, + __conditional_t< + is_base_of::iterator_category>::value && + is_same< typename iterator_traits<_InputIterator>::value_type, + typename iterator_traits<_OutputIterator>::value_type>::value, + __unique_copy_tags::__reread_from_output_tag, + __unique_copy_tags::__read_from_tmp_value_tag> >; + return std::__unique_copy<_ClassicAlgPolicy>( + std::move(__first), std::move(__last), std::move(__result), __pred, __algo_tag()) + .second; +} + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _OutputIterator +unique_copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result) { + return std::unique_copy(std::move(__first), std::move(__last), std::move(__result), __equal_to()); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_UNIQUE_COPY_H diff --git a/third_party/libcxx/__algorithm/unwrap_iter.h b/third_party/libcxx/__algorithm/unwrap_iter.h new file mode 100644 index 000000000..c93b3443c --- /dev/null +++ b/third_party/libcxx/__algorithm/unwrap_iter.h @@ -0,0 +1,82 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_UNWRAP_ITER_H +#define _LIBCPP___ALGORITHM_UNWRAP_ITER_H + +#include <__config> +#include <__iterator/iterator_traits.h> +#include <__memory/pointer_traits.h> +#include <__type_traits/enable_if.h> +#include <__type_traits/is_copy_constructible.h> +#include <__utility/declval.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +// TODO: Change the name of __unwrap_iter_impl to something more appropriate +// The job of __unwrap_iter is to remove iterator wrappers (like reverse_iterator or __wrap_iter), +// to reduce the number of template instantiations and to enable pointer-based optimizations e.g. in std::copy. +// In debug mode, we don't do this. +// +// Some algorithms (e.g. std::copy, but not std::sort) need to convert an +// "unwrapped" result back into the original iterator type. Doing that is the job of __rewrap_iter. + +// Default case - we can't unwrap anything +template ::value> +struct __unwrap_iter_impl { + static _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _Iter __rewrap(_Iter, _Iter __iter) { return __iter; } + static _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _Iter __unwrap(_Iter __i) _NOEXCEPT { return __i; } +}; + +#ifndef _LIBCPP_ENABLE_DEBUG_MODE + +// It's a contiguous iterator, so we can use a raw pointer instead +template +struct __unwrap_iter_impl<_Iter, true> { + using _ToAddressT = decltype(std::__to_address(std::declval<_Iter>())); + + static _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _Iter __rewrap(_Iter __orig_iter, _ToAddressT __unwrapped_iter) { + return __orig_iter + (__unwrapped_iter - std::__to_address(__orig_iter)); + } + + static _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _ToAddressT __unwrap(_Iter __i) _NOEXCEPT { + return std::__to_address(__i); + } +}; + +#endif // !_LIBCPP_ENABLE_DEBUG_MODE + +template, + __enable_if_t::value, int> = 0> +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 +decltype(_Impl::__unwrap(std::declval<_Iter>())) __unwrap_iter(_Iter __i) _NOEXCEPT { + return _Impl::__unwrap(__i); +} + +// Allow input_iterators to be passed to __unwrap_iter (but not __rewrap_iter) +#if _LIBCPP_STD_VER >= 20 +template ::value, int> = 0> +inline _LIBCPP_HIDE_FROM_ABI constexpr _Iter __unwrap_iter(_Iter __i) noexcept { + return __i; +} +#endif + +template > +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _OrigIter __rewrap_iter(_OrigIter __orig_iter, _Iter __iter) _NOEXCEPT { + return _Impl::__rewrap(std::move(__orig_iter), std::move(__iter)); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_UNWRAP_ITER_H diff --git a/third_party/libcxx/__algorithm/unwrap_range.h b/third_party/libcxx/__algorithm/unwrap_range.h new file mode 100644 index 000000000..2c75c8f49 --- /dev/null +++ b/third_party/libcxx/__algorithm/unwrap_range.h @@ -0,0 +1,97 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_UNWRAP_RANGE_H +#define _LIBCPP___ALGORITHM_UNWRAP_RANGE_H + +#include <__algorithm/unwrap_iter.h> +#include <__concepts/constructible.h> +#include <__config> +#include <__iterator/concepts.h> +#include <__iterator/next.h> +#include <__utility/declval.h> +#include <__utility/move.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +// __unwrap_range and __rewrap_range are used to unwrap ranges which may have different iterator and sentinel types. +// __unwrap_iter and __rewrap_iter don't work for this, because they assume that the iterator and sentinel have +// the same type. __unwrap_range tries to get two iterators and then forward to __unwrap_iter. + +#if _LIBCPP_STD_VER >= 20 +template +struct __unwrap_range_impl { + _LIBCPP_HIDE_FROM_ABI static constexpr auto __unwrap(_Iter __first, _Sent __sent) + requires random_access_iterator<_Iter> && sized_sentinel_for<_Sent, _Iter> + { + auto __last = ranges::next(__first, __sent); + return pair{std::__unwrap_iter(std::move(__first)), std::__unwrap_iter(std::move(__last))}; + } + + _LIBCPP_HIDE_FROM_ABI static constexpr auto __unwrap(_Iter __first, _Sent __last) { + return pair{std::move(__first), std::move(__last)}; + } + + _LIBCPP_HIDE_FROM_ABI static constexpr auto + __rewrap(_Iter __orig_iter, decltype(std::__unwrap_iter(std::move(__orig_iter))) __iter) + requires random_access_iterator<_Iter> && sized_sentinel_for<_Sent, _Iter> + { + return std::__rewrap_iter(std::move(__orig_iter), std::move(__iter)); + } + + _LIBCPP_HIDE_FROM_ABI static constexpr auto __rewrap(const _Iter&, _Iter __iter) + requires (!(random_access_iterator<_Iter> && sized_sentinel_for<_Sent, _Iter>)) + { + return __iter; + } +}; + +template +struct __unwrap_range_impl<_Iter, _Iter> { + _LIBCPP_HIDE_FROM_ABI static constexpr auto __unwrap(_Iter __first, _Iter __last) { + return pair{std::__unwrap_iter(std::move(__first)), std::__unwrap_iter(std::move(__last))}; + } + + _LIBCPP_HIDE_FROM_ABI static constexpr auto + __rewrap(_Iter __orig_iter, decltype(std::__unwrap_iter(__orig_iter)) __iter) { + return std::__rewrap_iter(std::move(__orig_iter), std::move(__iter)); + } +}; + +template +_LIBCPP_HIDE_FROM_ABI constexpr auto __unwrap_range(_Iter __first, _Sent __last) { + return __unwrap_range_impl<_Iter, _Sent>::__unwrap(std::move(__first), std::move(__last)); +} + +template < + class _Sent, + class _Iter, + class _Unwrapped = decltype(std::__unwrap_range(std::declval<_Iter>(), std::declval<_Sent>()))> +_LIBCPP_HIDE_FROM_ABI constexpr _Iter __rewrap_range(_Iter __orig_iter, _Unwrapped __iter) { + return __unwrap_range_impl<_Iter, _Sent>::__rewrap(std::move(__orig_iter), std::move(__iter)); +} +#else // _LIBCPP_STD_VER >= 20 +template ()))> +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR pair<_Unwrapped, _Unwrapped> __unwrap_range(_Iter __first, _Iter __last) { + return std::make_pair(std::__unwrap_iter(std::move(__first)), std::__unwrap_iter(std::move(__last))); +} + +template ()))> +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _Iter __rewrap_range(_Iter __orig_iter, _Unwrapped __iter) { + return std::__rewrap_iter(std::move(__orig_iter), std::move(__iter)); +} +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_UNWRAP_RANGE_H diff --git a/third_party/libcxx/__algorithm/upper_bound.h b/third_party/libcxx/__algorithm/upper_bound.h new file mode 100644 index 000000000..96552ce1f --- /dev/null +++ b/third_party/libcxx/__algorithm/upper_bound.h @@ -0,0 +1,68 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ALGORITHM_UPPER_BOUND_H +#define _LIBCPP___ALGORITHM_UPPER_BOUND_H + +#include <__algorithm/comp.h> +#include <__algorithm/half_positive.h> +#include <__algorithm/iterator_operations.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/invoke.h> +#include <__iterator/advance.h> +#include <__iterator/distance.h> +#include <__iterator/iterator_traits.h> +#include <__type_traits/is_copy_constructible.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _Iter +__upper_bound(_Iter __first, _Sent __last, const _Tp& __value, _Compare&& __comp, _Proj&& __proj) { + auto __len = _IterOps<_AlgPolicy>::distance(__first, __last); + while (__len != 0) { + auto __half_len = std::__half_positive(__len); + auto __mid = _IterOps<_AlgPolicy>::next(__first, __half_len); + if (std::__invoke(__comp, __value, std::__invoke(__proj, *__mid))) + __len = __half_len; + else { + __first = ++__mid; + __len -= __half_len + 1; + } + } + return __first; +} + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator +upper_bound(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value, _Compare __comp) { + static_assert(is_copy_constructible<_ForwardIterator>::value, + "Iterator has to be copy constructible"); + return std::__upper_bound<_ClassicAlgPolicy>( + std::move(__first), std::move(__last), __value, std::move(__comp), std::__identity()); +} + +template +_LIBCPP_NODISCARD_EXT inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _ForwardIterator +upper_bound(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) { + return std::upper_bound( + std::move(__first), + std::move(__last), + __value, + __less<_Tp, typename iterator_traits<_ForwardIterator>::value_type>()); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ALGORITHM_UPPER_BOUND_H diff --git a/third_party/libcxx/__assert b/third_party/libcxx/__assert new file mode 100644 index 000000000..e20ee50b1 --- /dev/null +++ b/third_party/libcxx/__assert @@ -0,0 +1,49 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ASSERT +#define _LIBCPP___ASSERT + +#include <__config> +#include <__verbose_abort> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +// Automatically enable assertions when the debug mode is enabled. +#if defined(_LIBCPP_ENABLE_DEBUG_MODE) +# ifndef _LIBCPP_ENABLE_ASSERTIONS +# define _LIBCPP_ENABLE_ASSERTIONS 1 +# endif +#endif + +#ifndef _LIBCPP_ENABLE_ASSERTIONS +# define _LIBCPP_ENABLE_ASSERTIONS _LIBCPP_ENABLE_ASSERTIONS_DEFAULT +#endif + +#if _LIBCPP_ENABLE_ASSERTIONS != 0 && _LIBCPP_ENABLE_ASSERTIONS != 1 +# error "_LIBCPP_ENABLE_ASSERTIONS must be set to 0 or 1" +#endif + +#if _LIBCPP_ENABLE_ASSERTIONS +# define _LIBCPP_ASSERT(expression, message) \ + (__builtin_expect(static_cast(expression), 1) \ + ? (void)0 \ + : _LIBCPP_VERBOSE_ABORT( \ + "%s:%d: assertion %s failed: %s", __builtin_FILE(), __builtin_LINE(), #expression, message)) +#elif !defined(_LIBCPP_ASSERTIONS_DISABLE_ASSUME) && __has_builtin(__builtin_assume) +# define _LIBCPP_ASSERT(expression, message) \ + (_LIBCPP_DIAGNOSTIC_PUSH _LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wassume") \ + __builtin_assume(static_cast(expression)) _LIBCPP_DIAGNOSTIC_POP) +#else +# define _LIBCPP_ASSERT(expression, message) ((void)0) +#endif + +#endif // _LIBCPP___ASSERT diff --git a/third_party/libcxx/__atomic/aliases.h b/third_party/libcxx/__atomic/aliases.h new file mode 100644 index 000000000..e2f9fae40 --- /dev/null +++ b/third_party/libcxx/__atomic/aliases.h @@ -0,0 +1,116 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ATOMIC_ALIASES_H +#define _LIBCPP___ATOMIC_ALIASES_H + +#include <__atomic/atomic.h> +#include <__atomic/atomic_lock_free.h> +#include <__atomic/contention_t.h> +#include <__atomic/is_always_lock_free.h> +#include <__config> +#include <__type_traits/conditional.h> +#include +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +using atomic_bool = atomic; +using atomic_char = atomic; +using atomic_schar = atomic; +using atomic_uchar = atomic; +using atomic_short = atomic; +using atomic_ushort = atomic; +using atomic_int = atomic; +using atomic_uint = atomic; +using atomic_long = atomic; +using atomic_ulong = atomic; +using atomic_llong = atomic; +using atomic_ullong = atomic; +#ifndef _LIBCPP_HAS_NO_CHAR8_T +using atomic_char8_t = atomic; +#endif +using atomic_char16_t = atomic; +using atomic_char32_t = atomic; +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +using atomic_wchar_t = atomic; +#endif + +using atomic_int_least8_t = atomic; +using atomic_uint_least8_t = atomic; +using atomic_int_least16_t = atomic; +using atomic_uint_least16_t = atomic; +using atomic_int_least32_t = atomic; +using atomic_uint_least32_t = atomic; +using atomic_int_least64_t = atomic; +using atomic_uint_least64_t = atomic; + +using atomic_int_fast8_t = atomic; +using atomic_uint_fast8_t = atomic; +using atomic_int_fast16_t = atomic; +using atomic_uint_fast16_t = atomic; +using atomic_int_fast32_t = atomic; +using atomic_uint_fast32_t = atomic; +using atomic_int_fast64_t = atomic; +using atomic_uint_fast64_t = atomic; + +using atomic_int8_t = atomic< int8_t>; +using atomic_uint8_t = atomic; +using atomic_int16_t = atomic< int16_t>; +using atomic_uint16_t = atomic; +using atomic_int32_t = atomic< int32_t>; +using atomic_uint32_t = atomic; +using atomic_int64_t = atomic< int64_t>; +using atomic_uint64_t = atomic; + +using atomic_intptr_t = atomic; +using atomic_uintptr_t = atomic; +using atomic_size_t = atomic; +using atomic_ptrdiff_t = atomic; +using atomic_intmax_t = atomic; +using atomic_uintmax_t = atomic; + +// atomic_*_lock_free : prefer the contention type most highly, then the largest lock-free type + +#if _LIBCPP_STD_VER >= 17 +# define _LIBCPP_CONTENTION_LOCK_FREE ::std::__libcpp_is_always_lock_free<__cxx_contention_t>::__value +#else +# define _LIBCPP_CONTENTION_LOCK_FREE false +#endif + +#if ATOMIC_LLONG_LOCK_FREE == 2 +using __libcpp_signed_lock_free = __conditional_t<_LIBCPP_CONTENTION_LOCK_FREE, __cxx_contention_t, long long>; +using __libcpp_unsigned_lock_free = + __conditional_t<_LIBCPP_CONTENTION_LOCK_FREE, __cxx_contention_t, unsigned long long>; +#elif ATOMIC_INT_LOCK_FREE == 2 +using __libcpp_signed_lock_free = __conditional_t<_LIBCPP_CONTENTION_LOCK_FREE, __cxx_contention_t, int>; +using __libcpp_unsigned_lock_free = __conditional_t<_LIBCPP_CONTENTION_LOCK_FREE, __cxx_contention_t, unsigned int>; +#elif ATOMIC_SHORT_LOCK_FREE == 2 +using __libcpp_signed_lock_free = __conditional_t<_LIBCPP_CONTENTION_LOCK_FREE, __cxx_contention_t, short>; +using __libcpp_unsigned_lock_free = __conditional_t<_LIBCPP_CONTENTION_LOCK_FREE, __cxx_contention_t, unsigned short>; +#elif ATOMIC_CHAR_LOCK_FREE == 2 +using __libcpp_signed_lock_free = __conditional_t<_LIBCPP_CONTENTION_LOCK_FREE, __cxx_contention_t, char>; +using __libcpp_unsigned_lock_free = __conditional_t<_LIBCPP_CONTENTION_LOCK_FREE, __cxx_contention_t, unsigned char>; +#else +// No signed/unsigned lock-free types +# define _LIBCPP_NO_LOCK_FREE_TYPES +#endif + +#if !defined(_LIBCPP_NO_LOCK_FREE_TYPES) +using atomic_signed_lock_free = atomic<__libcpp_signed_lock_free>; +using atomic_unsigned_lock_free = atomic<__libcpp_unsigned_lock_free>; +#endif + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ATOMIC_ALIASES_H diff --git a/third_party/libcxx/__atomic/atomic.h b/third_party/libcxx/__atomic/atomic.h new file mode 100644 index 000000000..68df7f12c --- /dev/null +++ b/third_party/libcxx/__atomic/atomic.h @@ -0,0 +1,664 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ATOMIC_ATOMIC_H +#define _LIBCPP___ATOMIC_ATOMIC_H + +#include <__atomic/atomic_base.h> +#include <__atomic/check_memory_order.h> +#include <__atomic/cxx_atomic_impl.h> +#include <__atomic/memory_order.h> +#include <__config> +#include <__memory/addressof.h> +#include <__type_traits/is_function.h> +#include <__type_traits/is_same.h> +#include <__type_traits/remove_pointer.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +struct atomic + : public __atomic_base<_Tp> +{ + using __base = __atomic_base<_Tp>; + using value_type = _Tp; + using difference_type = value_type; + +#if _LIBCPP_STD_VER >= 20 + _LIBCPP_HIDE_FROM_ABI + atomic() = default; +#else + _LIBCPP_HIDE_FROM_ABI + atomic() _NOEXCEPT = default; +#endif + + _LIBCPP_HIDE_FROM_ABI + _LIBCPP_CONSTEXPR atomic(_Tp __d) _NOEXCEPT : __base(__d) {} + + _LIBCPP_HIDE_FROM_ABI + _Tp operator=(_Tp __d) volatile _NOEXCEPT + {__base::store(__d); return __d;} + _LIBCPP_HIDE_FROM_ABI + _Tp operator=(_Tp __d) _NOEXCEPT + {__base::store(__d); return __d;} + + atomic& operator=(const atomic&) = delete; + atomic& operator=(const atomic&) volatile = delete; +}; + +// atomic + +template +struct atomic<_Tp*> + : public __atomic_base<_Tp*> +{ + using __base = __atomic_base<_Tp*>; + using value_type = _Tp*; + using difference_type = ptrdiff_t; + + _LIBCPP_HIDE_FROM_ABI + atomic() _NOEXCEPT = default; + + _LIBCPP_HIDE_FROM_ABI + _LIBCPP_CONSTEXPR atomic(_Tp* __d) _NOEXCEPT : __base(__d) {} + + _LIBCPP_HIDE_FROM_ABI + _Tp* operator=(_Tp* __d) volatile _NOEXCEPT + {__base::store(__d); return __d;} + _LIBCPP_HIDE_FROM_ABI + _Tp* operator=(_Tp* __d) _NOEXCEPT + {__base::store(__d); return __d;} + + _LIBCPP_HIDE_FROM_ABI + _Tp* fetch_add(ptrdiff_t __op, memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT { + // __atomic_fetch_add accepts function pointers, guard against them. + static_assert(!is_function<__remove_pointer_t<_Tp> >::value, "Pointer to function isn't allowed"); + return std::__cxx_atomic_fetch_add(std::addressof(this->__a_), __op, __m); + } + + _LIBCPP_HIDE_FROM_ABI + _Tp* fetch_add(ptrdiff_t __op, memory_order __m = memory_order_seq_cst) _NOEXCEPT { + // __atomic_fetch_add accepts function pointers, guard against them. + static_assert(!is_function<__remove_pointer_t<_Tp> >::value, "Pointer to function isn't allowed"); + return std::__cxx_atomic_fetch_add(std::addressof(this->__a_), __op, __m); + } + + _LIBCPP_HIDE_FROM_ABI + _Tp* fetch_sub(ptrdiff_t __op, memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT { + // __atomic_fetch_add accepts function pointers, guard against them. + static_assert(!is_function<__remove_pointer_t<_Tp> >::value, "Pointer to function isn't allowed"); + return std::__cxx_atomic_fetch_sub(std::addressof(this->__a_), __op, __m); + } + + _LIBCPP_HIDE_FROM_ABI + _Tp* fetch_sub(ptrdiff_t __op, memory_order __m = memory_order_seq_cst) _NOEXCEPT { + // __atomic_fetch_add accepts function pointers, guard against them. + static_assert(!is_function<__remove_pointer_t<_Tp> >::value, "Pointer to function isn't allowed"); + return std::__cxx_atomic_fetch_sub(std::addressof(this->__a_), __op, __m); + } + + _LIBCPP_HIDE_FROM_ABI + _Tp* operator++(int) volatile _NOEXCEPT {return fetch_add(1);} + _LIBCPP_HIDE_FROM_ABI + _Tp* operator++(int) _NOEXCEPT {return fetch_add(1);} + _LIBCPP_HIDE_FROM_ABI + _Tp* operator--(int) volatile _NOEXCEPT {return fetch_sub(1);} + _LIBCPP_HIDE_FROM_ABI + _Tp* operator--(int) _NOEXCEPT {return fetch_sub(1);} + _LIBCPP_HIDE_FROM_ABI + _Tp* operator++() volatile _NOEXCEPT {return fetch_add(1) + 1;} + _LIBCPP_HIDE_FROM_ABI + _Tp* operator++() _NOEXCEPT {return fetch_add(1) + 1;} + _LIBCPP_HIDE_FROM_ABI + _Tp* operator--() volatile _NOEXCEPT {return fetch_sub(1) - 1;} + _LIBCPP_HIDE_FROM_ABI + _Tp* operator--() _NOEXCEPT {return fetch_sub(1) - 1;} + _LIBCPP_HIDE_FROM_ABI + _Tp* operator+=(ptrdiff_t __op) volatile _NOEXCEPT {return fetch_add(__op) + __op;} + _LIBCPP_HIDE_FROM_ABI + _Tp* operator+=(ptrdiff_t __op) _NOEXCEPT {return fetch_add(__op) + __op;} + _LIBCPP_HIDE_FROM_ABI + _Tp* operator-=(ptrdiff_t __op) volatile _NOEXCEPT {return fetch_sub(__op) - __op;} + _LIBCPP_HIDE_FROM_ABI + _Tp* operator-=(ptrdiff_t __op) _NOEXCEPT {return fetch_sub(__op) - __op;} + + atomic& operator=(const atomic&) = delete; + atomic& operator=(const atomic&) volatile = delete; +}; + +// atomic_is_lock_free + +template +_LIBCPP_HIDE_FROM_ABI +bool +atomic_is_lock_free(const volatile atomic<_Tp>* __o) _NOEXCEPT +{ + return __o->is_lock_free(); +} + +template +_LIBCPP_HIDE_FROM_ABI +bool +atomic_is_lock_free(const atomic<_Tp>* __o) _NOEXCEPT +{ + return __o->is_lock_free(); +} + +// atomic_init + +template +_LIBCPP_DEPRECATED_IN_CXX20 _LIBCPP_HIDE_FROM_ABI +void +atomic_init(volatile atomic<_Tp>* __o, typename atomic<_Tp>::value_type __d) _NOEXCEPT +{ + std::__cxx_atomic_init(std::addressof(__o->__a_), __d); +} + +template +_LIBCPP_DEPRECATED_IN_CXX20 _LIBCPP_HIDE_FROM_ABI +void +atomic_init(atomic<_Tp>* __o, typename atomic<_Tp>::value_type __d) _NOEXCEPT +{ + std::__cxx_atomic_init(std::addressof(__o->__a_), __d); +} + +// atomic_store + +template +_LIBCPP_HIDE_FROM_ABI +void +atomic_store(volatile atomic<_Tp>* __o, typename atomic<_Tp>::value_type __d) _NOEXCEPT +{ + __o->store(__d); +} + +template +_LIBCPP_HIDE_FROM_ABI +void +atomic_store(atomic<_Tp>* __o, typename atomic<_Tp>::value_type __d) _NOEXCEPT +{ + __o->store(__d); +} + +// atomic_store_explicit + +template +_LIBCPP_HIDE_FROM_ABI +void +atomic_store_explicit(volatile atomic<_Tp>* __o, typename atomic<_Tp>::value_type __d, memory_order __m) _NOEXCEPT + _LIBCPP_CHECK_STORE_MEMORY_ORDER(__m) +{ + __o->store(__d, __m); +} + +template +_LIBCPP_HIDE_FROM_ABI +void +atomic_store_explicit(atomic<_Tp>* __o, typename atomic<_Tp>::value_type __d, memory_order __m) _NOEXCEPT + _LIBCPP_CHECK_STORE_MEMORY_ORDER(__m) +{ + __o->store(__d, __m); +} + +// atomic_load + +template +_LIBCPP_HIDE_FROM_ABI +_Tp +atomic_load(const volatile atomic<_Tp>* __o) _NOEXCEPT +{ + return __o->load(); +} + +template +_LIBCPP_HIDE_FROM_ABI +_Tp +atomic_load(const atomic<_Tp>* __o) _NOEXCEPT +{ + return __o->load(); +} + +// atomic_load_explicit + +template +_LIBCPP_HIDE_FROM_ABI +_Tp +atomic_load_explicit(const volatile atomic<_Tp>* __o, memory_order __m) _NOEXCEPT + _LIBCPP_CHECK_LOAD_MEMORY_ORDER(__m) +{ + return __o->load(__m); +} + +template +_LIBCPP_HIDE_FROM_ABI +_Tp +atomic_load_explicit(const atomic<_Tp>* __o, memory_order __m) _NOEXCEPT + _LIBCPP_CHECK_LOAD_MEMORY_ORDER(__m) +{ + return __o->load(__m); +} + +// atomic_exchange + +template +_LIBCPP_HIDE_FROM_ABI +_Tp +atomic_exchange(volatile atomic<_Tp>* __o, typename atomic<_Tp>::value_type __d) _NOEXCEPT +{ + return __o->exchange(__d); +} + +template +_LIBCPP_HIDE_FROM_ABI +_Tp +atomic_exchange(atomic<_Tp>* __o, typename atomic<_Tp>::value_type __d) _NOEXCEPT +{ + return __o->exchange(__d); +} + +// atomic_exchange_explicit + +template +_LIBCPP_HIDE_FROM_ABI +_Tp +atomic_exchange_explicit(volatile atomic<_Tp>* __o, typename atomic<_Tp>::value_type __d, memory_order __m) _NOEXCEPT +{ + return __o->exchange(__d, __m); +} + +template +_LIBCPP_HIDE_FROM_ABI +_Tp +atomic_exchange_explicit(atomic<_Tp>* __o, typename atomic<_Tp>::value_type __d, memory_order __m) _NOEXCEPT +{ + return __o->exchange(__d, __m); +} + +// atomic_compare_exchange_weak + +template +_LIBCPP_HIDE_FROM_ABI +bool +atomic_compare_exchange_weak(volatile atomic<_Tp>* __o, typename atomic<_Tp>::value_type* __e, typename atomic<_Tp>::value_type __d) _NOEXCEPT +{ + return __o->compare_exchange_weak(*__e, __d); +} + +template +_LIBCPP_HIDE_FROM_ABI +bool +atomic_compare_exchange_weak(atomic<_Tp>* __o, typename atomic<_Tp>::value_type* __e, typename atomic<_Tp>::value_type __d) _NOEXCEPT +{ + return __o->compare_exchange_weak(*__e, __d); +} + +// atomic_compare_exchange_strong + +template +_LIBCPP_HIDE_FROM_ABI +bool +atomic_compare_exchange_strong(volatile atomic<_Tp>* __o, typename atomic<_Tp>::value_type* __e, typename atomic<_Tp>::value_type __d) _NOEXCEPT +{ + return __o->compare_exchange_strong(*__e, __d); +} + +template +_LIBCPP_HIDE_FROM_ABI +bool +atomic_compare_exchange_strong(atomic<_Tp>* __o, typename atomic<_Tp>::value_type* __e, typename atomic<_Tp>::value_type __d) _NOEXCEPT +{ + return __o->compare_exchange_strong(*__e, __d); +} + +// atomic_compare_exchange_weak_explicit + +template +_LIBCPP_HIDE_FROM_ABI +bool +atomic_compare_exchange_weak_explicit(volatile atomic<_Tp>* __o, typename atomic<_Tp>::value_type* __e, + typename atomic<_Tp>::value_type __d, + memory_order __s, memory_order __f) _NOEXCEPT + _LIBCPP_CHECK_EXCHANGE_MEMORY_ORDER(__s, __f) +{ + return __o->compare_exchange_weak(*__e, __d, __s, __f); +} + +template +_LIBCPP_HIDE_FROM_ABI +bool +atomic_compare_exchange_weak_explicit(atomic<_Tp>* __o, typename atomic<_Tp>::value_type* __e, typename atomic<_Tp>::value_type __d, + memory_order __s, memory_order __f) _NOEXCEPT + _LIBCPP_CHECK_EXCHANGE_MEMORY_ORDER(__s, __f) +{ + return __o->compare_exchange_weak(*__e, __d, __s, __f); +} + +// atomic_compare_exchange_strong_explicit + +template +_LIBCPP_HIDE_FROM_ABI +bool +atomic_compare_exchange_strong_explicit(volatile atomic<_Tp>* __o, + typename atomic<_Tp>::value_type* __e, typename atomic<_Tp>::value_type __d, + memory_order __s, memory_order __f) _NOEXCEPT + _LIBCPP_CHECK_EXCHANGE_MEMORY_ORDER(__s, __f) +{ + return __o->compare_exchange_strong(*__e, __d, __s, __f); +} + +template +_LIBCPP_HIDE_FROM_ABI +bool +atomic_compare_exchange_strong_explicit(atomic<_Tp>* __o, typename atomic<_Tp>::value_type* __e, + typename atomic<_Tp>::value_type __d, + memory_order __s, memory_order __f) _NOEXCEPT + _LIBCPP_CHECK_EXCHANGE_MEMORY_ORDER(__s, __f) +{ + return __o->compare_exchange_strong(*__e, __d, __s, __f); +} + +// atomic_wait + +template +_LIBCPP_AVAILABILITY_SYNC _LIBCPP_HIDE_FROM_ABI +void atomic_wait(const volatile atomic<_Tp>* __o, + typename atomic<_Tp>::value_type __v) _NOEXCEPT +{ + return __o->wait(__v); +} + +template +_LIBCPP_AVAILABILITY_SYNC _LIBCPP_HIDE_FROM_ABI +void atomic_wait(const atomic<_Tp>* __o, + typename atomic<_Tp>::value_type __v) _NOEXCEPT +{ + return __o->wait(__v); +} + +// atomic_wait_explicit + +template +_LIBCPP_AVAILABILITY_SYNC _LIBCPP_HIDE_FROM_ABI +void atomic_wait_explicit(const volatile atomic<_Tp>* __o, + typename atomic<_Tp>::value_type __v, + memory_order __m) _NOEXCEPT + _LIBCPP_CHECK_LOAD_MEMORY_ORDER(__m) +{ + return __o->wait(__v, __m); +} + +template +_LIBCPP_AVAILABILITY_SYNC _LIBCPP_HIDE_FROM_ABI +void atomic_wait_explicit(const atomic<_Tp>* __o, + typename atomic<_Tp>::value_type __v, + memory_order __m) _NOEXCEPT + _LIBCPP_CHECK_LOAD_MEMORY_ORDER(__m) +{ + return __o->wait(__v, __m); +} + +// atomic_notify_one + +template +_LIBCPP_AVAILABILITY_SYNC _LIBCPP_HIDE_FROM_ABI +void atomic_notify_one(volatile atomic<_Tp>* __o) _NOEXCEPT +{ + __o->notify_one(); +} +template +_LIBCPP_AVAILABILITY_SYNC _LIBCPP_HIDE_FROM_ABI +void atomic_notify_one(atomic<_Tp>* __o) _NOEXCEPT +{ + __o->notify_one(); +} + +// atomic_notify_all + +template +_LIBCPP_AVAILABILITY_SYNC _LIBCPP_HIDE_FROM_ABI +void atomic_notify_all(volatile atomic<_Tp>* __o) _NOEXCEPT +{ + __o->notify_all(); +} +template +_LIBCPP_AVAILABILITY_SYNC _LIBCPP_HIDE_FROM_ABI +void atomic_notify_all(atomic<_Tp>* __o) _NOEXCEPT +{ + __o->notify_all(); +} + +// atomic_fetch_add + +template +_LIBCPP_HIDE_FROM_ABI +_Tp +atomic_fetch_add(volatile atomic<_Tp>* __o, typename atomic<_Tp>::difference_type __op) _NOEXCEPT +{ + return __o->fetch_add(__op); +} + +template +_LIBCPP_HIDE_FROM_ABI +_Tp +atomic_fetch_add(atomic<_Tp>* __o, typename atomic<_Tp>::difference_type __op) _NOEXCEPT +{ + return __o->fetch_add(__op); +} + +// atomic_fetch_add_explicit + +template +_LIBCPP_HIDE_FROM_ABI +_Tp atomic_fetch_add_explicit(volatile atomic<_Tp>* __o, typename atomic<_Tp>::difference_type __op, memory_order __m) _NOEXCEPT +{ + return __o->fetch_add(__op, __m); +} + +template +_LIBCPP_HIDE_FROM_ABI +_Tp atomic_fetch_add_explicit(atomic<_Tp>* __o, typename atomic<_Tp>::difference_type __op, memory_order __m) _NOEXCEPT +{ + return __o->fetch_add(__op, __m); +} + +// atomic_fetch_sub + +template +_LIBCPP_HIDE_FROM_ABI +_Tp atomic_fetch_sub(volatile atomic<_Tp>* __o, typename atomic<_Tp>::difference_type __op) _NOEXCEPT +{ + return __o->fetch_sub(__op); +} + +template +_LIBCPP_HIDE_FROM_ABI +_Tp atomic_fetch_sub(atomic<_Tp>* __o, typename atomic<_Tp>::difference_type __op) _NOEXCEPT +{ + return __o->fetch_sub(__op); +} + +// atomic_fetch_sub_explicit + +template +_LIBCPP_HIDE_FROM_ABI +_Tp atomic_fetch_sub_explicit(volatile atomic<_Tp>* __o, typename atomic<_Tp>::difference_type __op, memory_order __m) _NOEXCEPT +{ + return __o->fetch_sub(__op, __m); +} + +template +_LIBCPP_HIDE_FROM_ABI +_Tp atomic_fetch_sub_explicit(atomic<_Tp>* __o, typename atomic<_Tp>::difference_type __op, memory_order __m) _NOEXCEPT +{ + return __o->fetch_sub(__op, __m); +} + +// atomic_fetch_and + +template +_LIBCPP_HIDE_FROM_ABI +typename enable_if +< + is_integral<_Tp>::value && !is_same<_Tp, bool>::value, + _Tp +>::type +atomic_fetch_and(volatile atomic<_Tp>* __o, typename atomic<_Tp>::value_type __op) _NOEXCEPT +{ + return __o->fetch_and(__op); +} + +template +_LIBCPP_HIDE_FROM_ABI +typename enable_if +< + is_integral<_Tp>::value && !is_same<_Tp, bool>::value, + _Tp +>::type +atomic_fetch_and(atomic<_Tp>* __o, typename atomic<_Tp>::value_type __op) _NOEXCEPT +{ + return __o->fetch_and(__op); +} + +// atomic_fetch_and_explicit + +template +_LIBCPP_HIDE_FROM_ABI +typename enable_if +< + is_integral<_Tp>::value && !is_same<_Tp, bool>::value, + _Tp +>::type +atomic_fetch_and_explicit(volatile atomic<_Tp>* __o, typename atomic<_Tp>::value_type __op, memory_order __m) _NOEXCEPT +{ + return __o->fetch_and(__op, __m); +} + +template +_LIBCPP_HIDE_FROM_ABI +typename enable_if +< + is_integral<_Tp>::value && !is_same<_Tp, bool>::value, + _Tp +>::type +atomic_fetch_and_explicit(atomic<_Tp>* __o, typename atomic<_Tp>::value_type __op, memory_order __m) _NOEXCEPT +{ + return __o->fetch_and(__op, __m); +} + +// atomic_fetch_or + +template +_LIBCPP_HIDE_FROM_ABI +typename enable_if +< + is_integral<_Tp>::value && !is_same<_Tp, bool>::value, + _Tp +>::type +atomic_fetch_or(volatile atomic<_Tp>* __o, typename atomic<_Tp>::value_type __op) _NOEXCEPT +{ + return __o->fetch_or(__op); +} + +template +_LIBCPP_HIDE_FROM_ABI +typename enable_if +< + is_integral<_Tp>::value && !is_same<_Tp, bool>::value, + _Tp +>::type +atomic_fetch_or(atomic<_Tp>* __o, typename atomic<_Tp>::value_type __op) _NOEXCEPT +{ + return __o->fetch_or(__op); +} + +// atomic_fetch_or_explicit + +template +_LIBCPP_HIDE_FROM_ABI +typename enable_if +< + is_integral<_Tp>::value && !is_same<_Tp, bool>::value, + _Tp +>::type +atomic_fetch_or_explicit(volatile atomic<_Tp>* __o, typename atomic<_Tp>::value_type __op, memory_order __m) _NOEXCEPT +{ + return __o->fetch_or(__op, __m); +} + +template +_LIBCPP_HIDE_FROM_ABI +typename enable_if +< + is_integral<_Tp>::value && !is_same<_Tp, bool>::value, + _Tp +>::type +atomic_fetch_or_explicit(atomic<_Tp>* __o, typename atomic<_Tp>::value_type __op, memory_order __m) _NOEXCEPT +{ + return __o->fetch_or(__op, __m); +} + +// atomic_fetch_xor + +template +_LIBCPP_HIDE_FROM_ABI +typename enable_if +< + is_integral<_Tp>::value && !is_same<_Tp, bool>::value, + _Tp +>::type +atomic_fetch_xor(volatile atomic<_Tp>* __o, typename atomic<_Tp>::value_type __op) _NOEXCEPT +{ + return __o->fetch_xor(__op); +} + +template +_LIBCPP_HIDE_FROM_ABI +typename enable_if +< + is_integral<_Tp>::value && !is_same<_Tp, bool>::value, + _Tp +>::type +atomic_fetch_xor(atomic<_Tp>* __o, typename atomic<_Tp>::value_type __op) _NOEXCEPT +{ + return __o->fetch_xor(__op); +} + +// atomic_fetch_xor_explicit + +template +_LIBCPP_HIDE_FROM_ABI +typename enable_if +< + is_integral<_Tp>::value && !is_same<_Tp, bool>::value, + _Tp +>::type +atomic_fetch_xor_explicit(volatile atomic<_Tp>* __o, typename atomic<_Tp>::value_type __op, memory_order __m) _NOEXCEPT +{ + return __o->fetch_xor(__op, __m); +} + +template +_LIBCPP_HIDE_FROM_ABI +typename enable_if +< + is_integral<_Tp>::value && !is_same<_Tp, bool>::value, + _Tp +>::type +atomic_fetch_xor_explicit(atomic<_Tp>* __o, typename atomic<_Tp>::value_type __op, memory_order __m) _NOEXCEPT +{ + return __o->fetch_xor(__op, __m); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ATOMIC_ATOMIC_H diff --git a/third_party/libcxx/__atomic/atomic_base.h b/third_party/libcxx/__atomic/atomic_base.h new file mode 100644 index 000000000..87100ba5d --- /dev/null +++ b/third_party/libcxx/__atomic/atomic_base.h @@ -0,0 +1,232 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ATOMIC_ATOMIC_BASE_H +#define _LIBCPP___ATOMIC_ATOMIC_BASE_H + +#include <__atomic/atomic_sync.h> +#include <__atomic/check_memory_order.h> +#include <__atomic/cxx_atomic_impl.h> +#include <__atomic/is_always_lock_free.h> +#include <__atomic/memory_order.h> +#include <__availability> +#include <__config> +#include <__memory/addressof.h> +#include <__type_traits/is_integral.h> +#include <__type_traits/is_nothrow_default_constructible.h> +#include <__type_traits/is_same.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template ::value && !is_same<_Tp, bool>::value> +struct __atomic_base // false +{ + mutable __cxx_atomic_impl<_Tp> __a_; + +#if _LIBCPP_STD_VER >= 17 + static _LIBCPP_CONSTEXPR bool is_always_lock_free = __libcpp_is_always_lock_free<__cxx_atomic_impl<_Tp> >::__value; +#endif + + _LIBCPP_HIDE_FROM_ABI + bool is_lock_free() const volatile _NOEXCEPT + {return __cxx_atomic_is_lock_free(sizeof(_Tp));} + _LIBCPP_HIDE_FROM_ABI + bool is_lock_free() const _NOEXCEPT + {return static_cast<__atomic_base const volatile*>(this)->is_lock_free();} + _LIBCPP_HIDE_FROM_ABI void store(_Tp __d, memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT + _LIBCPP_CHECK_STORE_MEMORY_ORDER(__m) { + std::__cxx_atomic_store(std::addressof(__a_), __d, __m); + } + _LIBCPP_HIDE_FROM_ABI void store(_Tp __d, memory_order __m = memory_order_seq_cst) _NOEXCEPT + _LIBCPP_CHECK_STORE_MEMORY_ORDER(__m) { + std::__cxx_atomic_store(std::addressof(__a_), __d, __m); + } + _LIBCPP_HIDE_FROM_ABI _Tp load(memory_order __m = memory_order_seq_cst) const volatile _NOEXCEPT + _LIBCPP_CHECK_LOAD_MEMORY_ORDER(__m) { + return std::__cxx_atomic_load(std::addressof(__a_), __m); + } + _LIBCPP_HIDE_FROM_ABI _Tp load(memory_order __m = memory_order_seq_cst) const _NOEXCEPT + _LIBCPP_CHECK_LOAD_MEMORY_ORDER(__m) { + return std::__cxx_atomic_load(std::addressof(__a_), __m); + } + _LIBCPP_HIDE_FROM_ABI + operator _Tp() const volatile _NOEXCEPT {return load();} + _LIBCPP_HIDE_FROM_ABI + operator _Tp() const _NOEXCEPT {return load();} + _LIBCPP_HIDE_FROM_ABI _Tp exchange(_Tp __d, memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT { + return std::__cxx_atomic_exchange(std::addressof(__a_), __d, __m); + } + _LIBCPP_HIDE_FROM_ABI _Tp exchange(_Tp __d, memory_order __m = memory_order_seq_cst) _NOEXCEPT { + return std::__cxx_atomic_exchange(std::addressof(__a_), __d, __m); + } + _LIBCPP_HIDE_FROM_ABI bool + compare_exchange_weak(_Tp& __e, _Tp __d, memory_order __s, memory_order __f) volatile _NOEXCEPT + _LIBCPP_CHECK_EXCHANGE_MEMORY_ORDER(__s, __f) { + return std::__cxx_atomic_compare_exchange_weak(std::addressof(__a_), std::addressof(__e), __d, __s, __f); + } + _LIBCPP_HIDE_FROM_ABI bool compare_exchange_weak(_Tp& __e, _Tp __d, memory_order __s, memory_order __f) _NOEXCEPT + _LIBCPP_CHECK_EXCHANGE_MEMORY_ORDER(__s, __f) { + return std::__cxx_atomic_compare_exchange_weak(std::addressof(__a_), std::addressof(__e), __d, __s, __f); + } + _LIBCPP_HIDE_FROM_ABI bool + compare_exchange_strong(_Tp& __e, _Tp __d, memory_order __s, memory_order __f) volatile _NOEXCEPT + _LIBCPP_CHECK_EXCHANGE_MEMORY_ORDER(__s, __f) { + return std::__cxx_atomic_compare_exchange_strong(std::addressof(__a_), std::addressof(__e), __d, __s, __f); + } + _LIBCPP_HIDE_FROM_ABI bool compare_exchange_strong(_Tp& __e, _Tp __d, memory_order __s, memory_order __f) _NOEXCEPT + _LIBCPP_CHECK_EXCHANGE_MEMORY_ORDER(__s, __f) { + return std::__cxx_atomic_compare_exchange_strong(std::addressof(__a_), std::addressof(__e), __d, __s, __f); + } + _LIBCPP_HIDE_FROM_ABI bool + compare_exchange_weak(_Tp& __e, _Tp __d, memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT { + return std::__cxx_atomic_compare_exchange_weak(std::addressof(__a_), std::addressof(__e), __d, __m, __m); + } + _LIBCPP_HIDE_FROM_ABI bool + compare_exchange_weak(_Tp& __e, _Tp __d, memory_order __m = memory_order_seq_cst) _NOEXCEPT { + return std::__cxx_atomic_compare_exchange_weak(std::addressof(__a_), std::addressof(__e), __d, __m, __m); + } + _LIBCPP_HIDE_FROM_ABI bool + compare_exchange_strong(_Tp& __e, _Tp __d, memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT { + return std::__cxx_atomic_compare_exchange_strong(std::addressof(__a_), std::addressof(__e), __d, __m, __m); + } + _LIBCPP_HIDE_FROM_ABI bool + compare_exchange_strong(_Tp& __e, _Tp __d, memory_order __m = memory_order_seq_cst) _NOEXCEPT { + return std::__cxx_atomic_compare_exchange_strong(std::addressof(__a_), std::addressof(__e), __d, __m, __m); + } + + _LIBCPP_AVAILABILITY_SYNC _LIBCPP_HIDE_FROM_ABI void wait(_Tp __v, memory_order __m = memory_order_seq_cst) const + volatile _NOEXCEPT { + std::__cxx_atomic_wait(std::addressof(__a_), __v, __m); + } + _LIBCPP_AVAILABILITY_SYNC _LIBCPP_HIDE_FROM_ABI void + wait(_Tp __v, memory_order __m = memory_order_seq_cst) const _NOEXCEPT { + std::__cxx_atomic_wait(std::addressof(__a_), __v, __m); + } + _LIBCPP_AVAILABILITY_SYNC _LIBCPP_HIDE_FROM_ABI void notify_one() volatile _NOEXCEPT { + std::__cxx_atomic_notify_one(std::addressof(__a_)); + } + _LIBCPP_AVAILABILITY_SYNC _LIBCPP_HIDE_FROM_ABI void notify_one() _NOEXCEPT { + std::__cxx_atomic_notify_one(std::addressof(__a_)); + } + _LIBCPP_AVAILABILITY_SYNC _LIBCPP_HIDE_FROM_ABI void notify_all() volatile _NOEXCEPT { + std::__cxx_atomic_notify_all(std::addressof(__a_)); + } + _LIBCPP_AVAILABILITY_SYNC _LIBCPP_HIDE_FROM_ABI void notify_all() _NOEXCEPT { + std::__cxx_atomic_notify_all(std::addressof(__a_)); + } + +#if _LIBCPP_STD_VER >= 20 + _LIBCPP_HIDE_FROM_ABI constexpr + __atomic_base() noexcept(is_nothrow_default_constructible_v<_Tp>) : __a_(_Tp()) {} +#else + _LIBCPP_HIDE_FROM_ABI + __atomic_base() _NOEXCEPT = default; +#endif + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR + __atomic_base(_Tp __d) _NOEXCEPT : __a_(__d) {} + + __atomic_base(const __atomic_base&) = delete; +}; + +#if _LIBCPP_STD_VER >= 17 +template +_LIBCPP_CONSTEXPR bool __atomic_base<_Tp, __b>::is_always_lock_free; +#endif + +// atomic + +template +struct __atomic_base<_Tp, true> + : public __atomic_base<_Tp, false> +{ + using __base = __atomic_base<_Tp, false>; + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 + __atomic_base() _NOEXCEPT = default; + + _LIBCPP_HIDE_FROM_ABI + _LIBCPP_CONSTEXPR __atomic_base(_Tp __d) _NOEXCEPT : __base(__d) {} + + _LIBCPP_HIDE_FROM_ABI _Tp fetch_add(_Tp __op, memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT { + return std::__cxx_atomic_fetch_add(std::addressof(this->__a_), __op, __m); + } + _LIBCPP_HIDE_FROM_ABI _Tp fetch_add(_Tp __op, memory_order __m = memory_order_seq_cst) _NOEXCEPT { + return std::__cxx_atomic_fetch_add(std::addressof(this->__a_), __op, __m); + } + _LIBCPP_HIDE_FROM_ABI _Tp fetch_sub(_Tp __op, memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT { + return std::__cxx_atomic_fetch_sub(std::addressof(this->__a_), __op, __m); + } + _LIBCPP_HIDE_FROM_ABI _Tp fetch_sub(_Tp __op, memory_order __m = memory_order_seq_cst) _NOEXCEPT { + return std::__cxx_atomic_fetch_sub(std::addressof(this->__a_), __op, __m); + } + _LIBCPP_HIDE_FROM_ABI _Tp fetch_and(_Tp __op, memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT { + return std::__cxx_atomic_fetch_and(std::addressof(this->__a_), __op, __m); + } + _LIBCPP_HIDE_FROM_ABI _Tp fetch_and(_Tp __op, memory_order __m = memory_order_seq_cst) _NOEXCEPT { + return std::__cxx_atomic_fetch_and(std::addressof(this->__a_), __op, __m); + } + _LIBCPP_HIDE_FROM_ABI _Tp fetch_or(_Tp __op, memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT { + return std::__cxx_atomic_fetch_or(std::addressof(this->__a_), __op, __m); + } + _LIBCPP_HIDE_FROM_ABI _Tp fetch_or(_Tp __op, memory_order __m = memory_order_seq_cst) _NOEXCEPT { + return std::__cxx_atomic_fetch_or(std::addressof(this->__a_), __op, __m); + } + _LIBCPP_HIDE_FROM_ABI _Tp fetch_xor(_Tp __op, memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT { + return std::__cxx_atomic_fetch_xor(std::addressof(this->__a_), __op, __m); + } + _LIBCPP_HIDE_FROM_ABI _Tp fetch_xor(_Tp __op, memory_order __m = memory_order_seq_cst) _NOEXCEPT { + return std::__cxx_atomic_fetch_xor(std::addressof(this->__a_), __op, __m); + } + + _LIBCPP_HIDE_FROM_ABI + _Tp operator++(int) volatile _NOEXCEPT {return fetch_add(_Tp(1));} + _LIBCPP_HIDE_FROM_ABI + _Tp operator++(int) _NOEXCEPT {return fetch_add(_Tp(1));} + _LIBCPP_HIDE_FROM_ABI + _Tp operator--(int) volatile _NOEXCEPT {return fetch_sub(_Tp(1));} + _LIBCPP_HIDE_FROM_ABI + _Tp operator--(int) _NOEXCEPT {return fetch_sub(_Tp(1));} + _LIBCPP_HIDE_FROM_ABI + _Tp operator++() volatile _NOEXCEPT {return fetch_add(_Tp(1)) + _Tp(1);} + _LIBCPP_HIDE_FROM_ABI + _Tp operator++() _NOEXCEPT {return fetch_add(_Tp(1)) + _Tp(1);} + _LIBCPP_HIDE_FROM_ABI + _Tp operator--() volatile _NOEXCEPT {return fetch_sub(_Tp(1)) - _Tp(1);} + _LIBCPP_HIDE_FROM_ABI + _Tp operator--() _NOEXCEPT {return fetch_sub(_Tp(1)) - _Tp(1);} + _LIBCPP_HIDE_FROM_ABI + _Tp operator+=(_Tp __op) volatile _NOEXCEPT {return fetch_add(__op) + __op;} + _LIBCPP_HIDE_FROM_ABI + _Tp operator+=(_Tp __op) _NOEXCEPT {return fetch_add(__op) + __op;} + _LIBCPP_HIDE_FROM_ABI + _Tp operator-=(_Tp __op) volatile _NOEXCEPT {return fetch_sub(__op) - __op;} + _LIBCPP_HIDE_FROM_ABI + _Tp operator-=(_Tp __op) _NOEXCEPT {return fetch_sub(__op) - __op;} + _LIBCPP_HIDE_FROM_ABI + _Tp operator&=(_Tp __op) volatile _NOEXCEPT {return fetch_and(__op) & __op;} + _LIBCPP_HIDE_FROM_ABI + _Tp operator&=(_Tp __op) _NOEXCEPT {return fetch_and(__op) & __op;} + _LIBCPP_HIDE_FROM_ABI + _Tp operator|=(_Tp __op) volatile _NOEXCEPT {return fetch_or(__op) | __op;} + _LIBCPP_HIDE_FROM_ABI + _Tp operator|=(_Tp __op) _NOEXCEPT {return fetch_or(__op) | __op;} + _LIBCPP_HIDE_FROM_ABI + _Tp operator^=(_Tp __op) volatile _NOEXCEPT {return fetch_xor(__op) ^ __op;} + _LIBCPP_HIDE_FROM_ABI + _Tp operator^=(_Tp __op) _NOEXCEPT {return fetch_xor(__op) ^ __op;} +}; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ATOMIC_ATOMIC_BASE_H diff --git a/third_party/libcxx/__atomic/atomic_flag.h b/third_party/libcxx/__atomic/atomic_flag.h new file mode 100644 index 000000000..edfa978f9 --- /dev/null +++ b/third_party/libcxx/__atomic/atomic_flag.h @@ -0,0 +1,230 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ATOMIC_ATOMIC_FLAG_H +#define _LIBCPP___ATOMIC_ATOMIC_FLAG_H + +#include <__atomic/atomic_sync.h> +#include <__atomic/contention_t.h> +#include <__atomic/cxx_atomic_impl.h> +#include <__atomic/memory_order.h> +#include <__chrono/duration.h> +#include <__config> +#include <__threading_support> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +struct atomic_flag +{ + __cxx_atomic_impl<_LIBCPP_ATOMIC_FLAG_TYPE> __a_; + + _LIBCPP_HIDE_FROM_ABI + bool test(memory_order __m = memory_order_seq_cst) const volatile _NOEXCEPT + {return _LIBCPP_ATOMIC_FLAG_TYPE(true) == __cxx_atomic_load(&__a_, __m);} + _LIBCPP_HIDE_FROM_ABI + bool test(memory_order __m = memory_order_seq_cst) const _NOEXCEPT + {return _LIBCPP_ATOMIC_FLAG_TYPE(true) == __cxx_atomic_load(&__a_, __m);} + + _LIBCPP_HIDE_FROM_ABI + bool test_and_set(memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT + {return __cxx_atomic_exchange(&__a_, _LIBCPP_ATOMIC_FLAG_TYPE(true), __m);} + _LIBCPP_HIDE_FROM_ABI + bool test_and_set(memory_order __m = memory_order_seq_cst) _NOEXCEPT + {return __cxx_atomic_exchange(&__a_, _LIBCPP_ATOMIC_FLAG_TYPE(true), __m);} + _LIBCPP_HIDE_FROM_ABI + void clear(memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT + {__cxx_atomic_store(&__a_, _LIBCPP_ATOMIC_FLAG_TYPE(false), __m);} + _LIBCPP_HIDE_FROM_ABI + void clear(memory_order __m = memory_order_seq_cst) _NOEXCEPT + {__cxx_atomic_store(&__a_, _LIBCPP_ATOMIC_FLAG_TYPE(false), __m);} + + _LIBCPP_AVAILABILITY_SYNC _LIBCPP_HIDE_FROM_ABI + void wait(bool __v, memory_order __m = memory_order_seq_cst) const volatile _NOEXCEPT + {__cxx_atomic_wait(&__a_, _LIBCPP_ATOMIC_FLAG_TYPE(__v), __m);} + _LIBCPP_AVAILABILITY_SYNC _LIBCPP_HIDE_FROM_ABI + void wait(bool __v, memory_order __m = memory_order_seq_cst) const _NOEXCEPT + {__cxx_atomic_wait(&__a_, _LIBCPP_ATOMIC_FLAG_TYPE(__v), __m);} + _LIBCPP_AVAILABILITY_SYNC _LIBCPP_HIDE_FROM_ABI + void notify_one() volatile _NOEXCEPT + {__cxx_atomic_notify_one(&__a_);} + _LIBCPP_AVAILABILITY_SYNC _LIBCPP_HIDE_FROM_ABI + void notify_one() _NOEXCEPT + {__cxx_atomic_notify_one(&__a_);} + _LIBCPP_AVAILABILITY_SYNC _LIBCPP_HIDE_FROM_ABI + void notify_all() volatile _NOEXCEPT + {__cxx_atomic_notify_all(&__a_);} + _LIBCPP_AVAILABILITY_SYNC _LIBCPP_HIDE_FROM_ABI + void notify_all() _NOEXCEPT + {__cxx_atomic_notify_all(&__a_);} + +#if _LIBCPP_STD_VER >= 20 + _LIBCPP_HIDE_FROM_ABI constexpr + atomic_flag() _NOEXCEPT : __a_(false) {} +#else + atomic_flag() _NOEXCEPT = default; +#endif + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR + atomic_flag(bool __b) _NOEXCEPT : __a_(__b) {} // EXTENSION + + atomic_flag(const atomic_flag&) = delete; + atomic_flag& operator=(const atomic_flag&) = delete; + atomic_flag& operator=(const atomic_flag&) volatile = delete; + +}; + +inline _LIBCPP_HIDE_FROM_ABI +bool +atomic_flag_test(const volatile atomic_flag* __o) _NOEXCEPT +{ + return __o->test(); +} + +inline _LIBCPP_HIDE_FROM_ABI +bool +atomic_flag_test(const atomic_flag* __o) _NOEXCEPT +{ + return __o->test(); +} + +inline _LIBCPP_HIDE_FROM_ABI +bool +atomic_flag_test_explicit(const volatile atomic_flag* __o, memory_order __m) _NOEXCEPT +{ + return __o->test(__m); +} + +inline _LIBCPP_HIDE_FROM_ABI +bool +atomic_flag_test_explicit(const atomic_flag* __o, memory_order __m) _NOEXCEPT +{ + return __o->test(__m); +} + +inline _LIBCPP_HIDE_FROM_ABI +bool +atomic_flag_test_and_set(volatile atomic_flag* __o) _NOEXCEPT +{ + return __o->test_and_set(); +} + +inline _LIBCPP_HIDE_FROM_ABI +bool +atomic_flag_test_and_set(atomic_flag* __o) _NOEXCEPT +{ + return __o->test_and_set(); +} + +inline _LIBCPP_HIDE_FROM_ABI +bool +atomic_flag_test_and_set_explicit(volatile atomic_flag* __o, memory_order __m) _NOEXCEPT +{ + return __o->test_and_set(__m); +} + +inline _LIBCPP_HIDE_FROM_ABI +bool +atomic_flag_test_and_set_explicit(atomic_flag* __o, memory_order __m) _NOEXCEPT +{ + return __o->test_and_set(__m); +} + +inline _LIBCPP_HIDE_FROM_ABI +void +atomic_flag_clear(volatile atomic_flag* __o) _NOEXCEPT +{ + __o->clear(); +} + +inline _LIBCPP_HIDE_FROM_ABI +void +atomic_flag_clear(atomic_flag* __o) _NOEXCEPT +{ + __o->clear(); +} + +inline _LIBCPP_HIDE_FROM_ABI +void +atomic_flag_clear_explicit(volatile atomic_flag* __o, memory_order __m) _NOEXCEPT +{ + __o->clear(__m); +} + +inline _LIBCPP_HIDE_FROM_ABI +void +atomic_flag_clear_explicit(atomic_flag* __o, memory_order __m) _NOEXCEPT +{ + __o->clear(__m); +} + +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_SYNC +void +atomic_flag_wait(const volatile atomic_flag* __o, bool __v) _NOEXCEPT +{ + __o->wait(__v); +} + +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_SYNC +void +atomic_flag_wait(const atomic_flag* __o, bool __v) _NOEXCEPT +{ + __o->wait(__v); +} + +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_SYNC +void +atomic_flag_wait_explicit(const volatile atomic_flag* __o, + bool __v, memory_order __m) _NOEXCEPT +{ + __o->wait(__v, __m); +} + +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_SYNC +void +atomic_flag_wait_explicit(const atomic_flag* __o, + bool __v, memory_order __m) _NOEXCEPT +{ + __o->wait(__v, __m); +} + +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_SYNC +void +atomic_flag_notify_one(volatile atomic_flag* __o) _NOEXCEPT +{ + __o->notify_one(); +} + +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_SYNC +void +atomic_flag_notify_one(atomic_flag* __o) _NOEXCEPT +{ + __o->notify_one(); +} + +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_SYNC +void +atomic_flag_notify_all(volatile atomic_flag* __o) _NOEXCEPT +{ + __o->notify_all(); +} + +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_AVAILABILITY_SYNC +void +atomic_flag_notify_all(atomic_flag* __o) _NOEXCEPT +{ + __o->notify_all(); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ATOMIC_ATOMIC_FLAG_H diff --git a/third_party/libcxx/__atomic/atomic_init.h b/third_party/libcxx/__atomic/atomic_init.h new file mode 100644 index 000000000..14310aee1 --- /dev/null +++ b/third_party/libcxx/__atomic/atomic_init.h @@ -0,0 +1,27 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ATOMIC_ATOMIC_INIT_H +#define _LIBCPP___ATOMIC_ATOMIC_INIT_H + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#define ATOMIC_FLAG_INIT {false} +#define ATOMIC_VAR_INIT(__v) {__v} + +#if _LIBCPP_STD_VER >= 20 && !defined(_LIBCPP_DISABLE_DEPRECATION_WARNINGS) +# if defined(_LIBCPP_CLANG_VER) && _LIBCPP_CLANG_VER >= 1400 +# pragma clang deprecated(ATOMIC_VAR_INIT) +# endif +#endif // _LIBCPP_STD_VER >= 20 && !defined(_LIBCPP_DISABLE_DEPRECATION_WARNINGS) + +#endif // _LIBCPP___ATOMIC_ATOMIC_INIT_H diff --git a/third_party/libcxx/__atomic/atomic_lock_free.h b/third_party/libcxx/__atomic/atomic_lock_free.h new file mode 100644 index 000000000..d607569ed --- /dev/null +++ b/third_party/libcxx/__atomic/atomic_lock_free.h @@ -0,0 +1,48 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ATOMIC_ATOMIC_LOCK_FREE_H +#define _LIBCPP___ATOMIC_ATOMIC_LOCK_FREE_H + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if defined(__CLANG_ATOMIC_BOOL_LOCK_FREE) +# define ATOMIC_BOOL_LOCK_FREE __CLANG_ATOMIC_BOOL_LOCK_FREE +# define ATOMIC_CHAR_LOCK_FREE __CLANG_ATOMIC_CHAR_LOCK_FREE +#ifndef _LIBCPP_HAS_NO_CHAR8_T +# define ATOMIC_CHAR8_T_LOCK_FREE __CLANG_ATOMIC_CHAR8_T_LOCK_FREE +#endif +# define ATOMIC_CHAR16_T_LOCK_FREE __CLANG_ATOMIC_CHAR16_T_LOCK_FREE +# define ATOMIC_CHAR32_T_LOCK_FREE __CLANG_ATOMIC_CHAR32_T_LOCK_FREE +# define ATOMIC_WCHAR_T_LOCK_FREE __CLANG_ATOMIC_WCHAR_T_LOCK_FREE +# define ATOMIC_SHORT_LOCK_FREE __CLANG_ATOMIC_SHORT_LOCK_FREE +# define ATOMIC_INT_LOCK_FREE __CLANG_ATOMIC_INT_LOCK_FREE +# define ATOMIC_LONG_LOCK_FREE __CLANG_ATOMIC_LONG_LOCK_FREE +# define ATOMIC_LLONG_LOCK_FREE __CLANG_ATOMIC_LLONG_LOCK_FREE +# define ATOMIC_POINTER_LOCK_FREE __CLANG_ATOMIC_POINTER_LOCK_FREE +#elif defined(__GCC_ATOMIC_BOOL_LOCK_FREE) +# define ATOMIC_BOOL_LOCK_FREE __GCC_ATOMIC_BOOL_LOCK_FREE +# define ATOMIC_CHAR_LOCK_FREE __GCC_ATOMIC_CHAR_LOCK_FREE +#ifndef _LIBCPP_HAS_NO_CHAR8_T +# define ATOMIC_CHAR8_T_LOCK_FREE __GCC_ATOMIC_CHAR8_T_LOCK_FREE +#endif +# define ATOMIC_CHAR16_T_LOCK_FREE __GCC_ATOMIC_CHAR16_T_LOCK_FREE +# define ATOMIC_CHAR32_T_LOCK_FREE __GCC_ATOMIC_CHAR32_T_LOCK_FREE +# define ATOMIC_WCHAR_T_LOCK_FREE __GCC_ATOMIC_WCHAR_T_LOCK_FREE +# define ATOMIC_SHORT_LOCK_FREE __GCC_ATOMIC_SHORT_LOCK_FREE +# define ATOMIC_INT_LOCK_FREE __GCC_ATOMIC_INT_LOCK_FREE +# define ATOMIC_LONG_LOCK_FREE __GCC_ATOMIC_LONG_LOCK_FREE +# define ATOMIC_LLONG_LOCK_FREE __GCC_ATOMIC_LLONG_LOCK_FREE +# define ATOMIC_POINTER_LOCK_FREE __GCC_ATOMIC_POINTER_LOCK_FREE +#endif + +#endif // _LIBCPP___ATOMIC_ATOMIC_LOCK_FREE_H diff --git a/third_party/libcxx/__atomic/atomic_sync.h b/third_party/libcxx/__atomic/atomic_sync.h new file mode 100644 index 000000000..d55450bb5 --- /dev/null +++ b/third_party/libcxx/__atomic/atomic_sync.h @@ -0,0 +1,112 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ATOMIC_ATOMIC_SYNC_H +#define _LIBCPP___ATOMIC_ATOMIC_SYNC_H + +#include <__atomic/contention_t.h> +#include <__atomic/cxx_atomic_impl.h> +#include <__atomic/memory_order.h> +#include <__availability> +#include <__chrono/duration.h> +#include <__config> +#include <__memory/addressof.h> +#include <__thread/poll_with_backoff.h> +#include <__threading_support> +#include <__type_traits/decay.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#ifndef _LIBCPP_HAS_NO_THREADS + +_LIBCPP_AVAILABILITY_SYNC _LIBCPP_EXPORTED_FROM_ABI void __cxx_atomic_notify_one(void const volatile*); +_LIBCPP_AVAILABILITY_SYNC _LIBCPP_EXPORTED_FROM_ABI void __cxx_atomic_notify_all(void const volatile*); +_LIBCPP_AVAILABILITY_SYNC _LIBCPP_EXPORTED_FROM_ABI __cxx_contention_t __libcpp_atomic_monitor(void const volatile*); +_LIBCPP_AVAILABILITY_SYNC _LIBCPP_EXPORTED_FROM_ABI void __libcpp_atomic_wait(void const volatile*, __cxx_contention_t); + +_LIBCPP_AVAILABILITY_SYNC _LIBCPP_EXPORTED_FROM_ABI void __cxx_atomic_notify_one(__cxx_atomic_contention_t const volatile*); +_LIBCPP_AVAILABILITY_SYNC _LIBCPP_EXPORTED_FROM_ABI void __cxx_atomic_notify_all(__cxx_atomic_contention_t const volatile*); +_LIBCPP_AVAILABILITY_SYNC _LIBCPP_EXPORTED_FROM_ABI __cxx_contention_t __libcpp_atomic_monitor(__cxx_atomic_contention_t const volatile*); +_LIBCPP_AVAILABILITY_SYNC _LIBCPP_EXPORTED_FROM_ABI void __libcpp_atomic_wait(__cxx_atomic_contention_t const volatile*, __cxx_contention_t); + +template +struct __libcpp_atomic_wait_backoff_impl { + _Atp* __a; + _Fn __test_fn; + _LIBCPP_AVAILABILITY_SYNC + _LIBCPP_HIDE_FROM_ABI bool operator()(chrono::nanoseconds __elapsed) const + { + if(__elapsed > chrono::microseconds(64)) + { + auto const __monitor = std::__libcpp_atomic_monitor(__a); + if(__test_fn()) + return true; + std::__libcpp_atomic_wait(__a, __monitor); + } + else if(__elapsed > chrono::microseconds(4)) + __libcpp_thread_yield(); + else + {} // poll + return false; + } +}; + +template +_LIBCPP_AVAILABILITY_SYNC +_LIBCPP_HIDE_FROM_ABI bool __cxx_atomic_wait(_Atp* __a, _Fn && __test_fn) +{ + __libcpp_atomic_wait_backoff_impl<_Atp, __decay_t<_Fn> > __backoff_fn = {__a, __test_fn}; + return std::__libcpp_thread_poll_with_backoff(__test_fn, __backoff_fn); +} + +#else // _LIBCPP_HAS_NO_THREADS + +template +_LIBCPP_HIDE_FROM_ABI void __cxx_atomic_notify_all(__cxx_atomic_impl<_Tp> const volatile*) { } +template +_LIBCPP_HIDE_FROM_ABI void __cxx_atomic_notify_one(__cxx_atomic_impl<_Tp> const volatile*) { } +template +_LIBCPP_HIDE_FROM_ABI bool __cxx_atomic_wait(_Atp*, _Fn && __test_fn) +{ + return std::__libcpp_thread_poll_with_backoff(__test_fn, __spinning_backoff_policy()); +} + +#endif // _LIBCPP_HAS_NO_THREADS + +template _LIBCPP_HIDE_FROM_ABI +bool __cxx_nonatomic_compare_equal(_Tp const& __lhs, _Tp const& __rhs) { + return std::memcmp(std::addressof(__lhs), std::addressof(__rhs), sizeof(_Tp)) == 0; +} + +template +struct __cxx_atomic_wait_test_fn_impl { + _Atp* __a; + _Tp __val; + memory_order __order; + _LIBCPP_HIDE_FROM_ABI bool operator()() const + { + return !std::__cxx_nonatomic_compare_equal(std::__cxx_atomic_load(__a, __order), __val); + } +}; + +template +_LIBCPP_AVAILABILITY_SYNC +_LIBCPP_HIDE_FROM_ABI bool __cxx_atomic_wait(_Atp* __a, _Tp const __val, memory_order __order) +{ + __cxx_atomic_wait_test_fn_impl<_Atp, _Tp> __test_fn = {__a, __val, __order}; + return std::__cxx_atomic_wait(__a, __test_fn); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ATOMIC_ATOMIC_SYNC_H diff --git a/third_party/libcxx/__atomic/check_memory_order.h b/third_party/libcxx/__atomic/check_memory_order.h new file mode 100644 index 000000000..d74431212 --- /dev/null +++ b/third_party/libcxx/__atomic/check_memory_order.h @@ -0,0 +1,34 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ATOMIC_CHECK_MEMORY_ORDER_H +#define _LIBCPP___ATOMIC_CHECK_MEMORY_ORDER_H + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#define _LIBCPP_CHECK_STORE_MEMORY_ORDER(__m) \ + _LIBCPP_DIAGNOSE_WARNING(__m == memory_order_consume || \ + __m == memory_order_acquire || \ + __m == memory_order_acq_rel, \ + "memory order argument to atomic operation is invalid") + +#define _LIBCPP_CHECK_LOAD_MEMORY_ORDER(__m) \ + _LIBCPP_DIAGNOSE_WARNING(__m == memory_order_release || \ + __m == memory_order_acq_rel, \ + "memory order argument to atomic operation is invalid") + +#define _LIBCPP_CHECK_EXCHANGE_MEMORY_ORDER(__m, __f) \ + _LIBCPP_DIAGNOSE_WARNING(__f == memory_order_release || \ + __f == memory_order_acq_rel, \ + "memory order argument to atomic operation is invalid") + +#endif // _LIBCPP___ATOMIC_CHECK_MEMORY_ORDER_H diff --git a/third_party/libcxx/__atomic/contention_t.h b/third_party/libcxx/__atomic/contention_t.h new file mode 100644 index 000000000..1d8d02430 --- /dev/null +++ b/third_party/libcxx/__atomic/contention_t.h @@ -0,0 +1,32 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ATOMIC_CONTENTION_T_H +#define _LIBCPP___ATOMIC_CONTENTION_T_H + +#include <__atomic/cxx_atomic_impl.h> +#include <__config> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if defined(__linux__) || (defined(_AIX) && !defined(__64BIT__)) + using __cxx_contention_t = int32_t; +#else + using __cxx_contention_t = int64_t; +#endif // __linux__ || (_AIX && !__64BIT__) + +using __cxx_atomic_contention_t = __cxx_atomic_impl<__cxx_contention_t>; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ATOMIC_CONTENTION_T_H diff --git a/third_party/libcxx/__atomic/cxx_atomic_impl.h b/third_party/libcxx/__atomic/cxx_atomic_impl.h new file mode 100644 index 000000000..167cee7f0 --- /dev/null +++ b/third_party/libcxx/__atomic/cxx_atomic_impl.h @@ -0,0 +1,831 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ATOMIC_CXX_ATOMIC_IMPL_H +#define _LIBCPP___ATOMIC_CXX_ATOMIC_IMPL_H + +#include <__atomic/is_always_lock_free.h> +#include <__atomic/memory_order.h> +#include <__config> +#include <__memory/addressof.h> +#include <__type_traits/conditional.h> +#include <__type_traits/is_assignable.h> +#include <__type_traits/is_trivially_copyable.h> +#include <__type_traits/remove_const.h> +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if defined(_LIBCPP_HAS_GCC_ATOMIC_IMP) || \ + defined(_LIBCPP_ATOMIC_ONLY_USE_BUILTINS) + +// [atomics.types.generic]p1 guarantees _Tp is trivially copyable. Because +// the default operator= in an object is not volatile, a byte-by-byte copy +// is required. +template _LIBCPP_HIDE_FROM_ABI +typename enable_if::value>::type +__cxx_atomic_assign_volatile(_Tp& __a_value, _Tv const& __val) { + __a_value = __val; +} +template _LIBCPP_HIDE_FROM_ABI +typename enable_if::value>::type +__cxx_atomic_assign_volatile(_Tp volatile& __a_value, _Tv volatile const& __val) { + volatile char* __to = reinterpret_cast(std::addressof(__a_value)); + volatile char* __end = __to + sizeof(_Tp); + volatile const char* __from = reinterpret_cast(std::addressof(__val)); + while (__to != __end) + *__to++ = *__from++; +} + +#endif + +#if defined(_LIBCPP_HAS_GCC_ATOMIC_IMP) + +template +struct __cxx_atomic_base_impl { + + _LIBCPP_HIDE_FROM_ABI +#ifndef _LIBCPP_CXX03_LANG + __cxx_atomic_base_impl() _NOEXCEPT = default; +#else + __cxx_atomic_base_impl() _NOEXCEPT : __a_value() {} +#endif // _LIBCPP_CXX03_LANG + _LIBCPP_CONSTEXPR explicit __cxx_atomic_base_impl(_Tp value) _NOEXCEPT + : __a_value(value) {} + _Tp __a_value; +}; + +_LIBCPP_HIDE_FROM_ABI inline _LIBCPP_CONSTEXPR int __to_gcc_order(memory_order __order) { + // Avoid switch statement to make this a constexpr. + return __order == memory_order_relaxed ? __ATOMIC_RELAXED: + (__order == memory_order_acquire ? __ATOMIC_ACQUIRE: + (__order == memory_order_release ? __ATOMIC_RELEASE: + (__order == memory_order_seq_cst ? __ATOMIC_SEQ_CST: + (__order == memory_order_acq_rel ? __ATOMIC_ACQ_REL: + __ATOMIC_CONSUME)))); +} + +_LIBCPP_HIDE_FROM_ABI inline _LIBCPP_CONSTEXPR int __to_gcc_failure_order(memory_order __order) { + // Avoid switch statement to make this a constexpr. + return __order == memory_order_relaxed ? __ATOMIC_RELAXED: + (__order == memory_order_acquire ? __ATOMIC_ACQUIRE: + (__order == memory_order_release ? __ATOMIC_RELAXED: + (__order == memory_order_seq_cst ? __ATOMIC_SEQ_CST: + (__order == memory_order_acq_rel ? __ATOMIC_ACQUIRE: + __ATOMIC_CONSUME)))); +} + +template +_LIBCPP_HIDE_FROM_ABI +void __cxx_atomic_init(volatile __cxx_atomic_base_impl<_Tp>* __a, _Tp __val) { + __cxx_atomic_assign_volatile(__a->__a_value, __val); +} + +template +_LIBCPP_HIDE_FROM_ABI +void __cxx_atomic_init(__cxx_atomic_base_impl<_Tp>* __a, _Tp __val) { + __a->__a_value = __val; +} + +_LIBCPP_HIDE_FROM_ABI inline +void __cxx_atomic_thread_fence(memory_order __order) { + __atomic_thread_fence(__to_gcc_order(__order)); +} + +_LIBCPP_HIDE_FROM_ABI inline +void __cxx_atomic_signal_fence(memory_order __order) { + __atomic_signal_fence(__to_gcc_order(__order)); +} + +template +_LIBCPP_HIDE_FROM_ABI +void __cxx_atomic_store(volatile __cxx_atomic_base_impl<_Tp>* __a, _Tp __val, + memory_order __order) { + __atomic_store(std::addressof(__a->__a_value), std::addressof(__val), __to_gcc_order(__order)); +} + +template +_LIBCPP_HIDE_FROM_ABI +void __cxx_atomic_store(__cxx_atomic_base_impl<_Tp>* __a, _Tp __val, + memory_order __order) { + __atomic_store(std::addressof(__a->__a_value), std::addressof(__val), __to_gcc_order(__order)); +} + +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_load(const volatile __cxx_atomic_base_impl<_Tp>* __a, + memory_order __order) { + _Tp __ret; + __atomic_load(std::addressof(__a->__a_value), std::addressof(__ret), __to_gcc_order(__order)); + return __ret; +} + +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_load(const __cxx_atomic_base_impl<_Tp>* __a, memory_order __order) { + _Tp __ret; + __atomic_load(std::addressof(__a->__a_value), std::addressof(__ret), __to_gcc_order(__order)); + return __ret; +} + +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_exchange(volatile __cxx_atomic_base_impl<_Tp>* __a, + _Tp __value, memory_order __order) { + _Tp __ret; + __atomic_exchange( + std::addressof(__a->__a_value), std::addressof(__value), std::addressof(__ret), __to_gcc_order(__order)); + return __ret; +} + +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_exchange(__cxx_atomic_base_impl<_Tp>* __a, _Tp __value, + memory_order __order) { + _Tp __ret; + __atomic_exchange( + std::addressof(__a->__a_value), std::addressof(__value), std::addressof(__ret), __to_gcc_order(__order)); + return __ret; +} + +template +_LIBCPP_HIDE_FROM_ABI +bool __cxx_atomic_compare_exchange_strong( + volatile __cxx_atomic_base_impl<_Tp>* __a, _Tp* __expected, _Tp __value, + memory_order __success, memory_order __failure) { + return __atomic_compare_exchange( + std::addressof(__a->__a_value), + __expected, + std::addressof(__value), + false, + __to_gcc_order(__success), + __to_gcc_failure_order(__failure)); +} + +template +_LIBCPP_HIDE_FROM_ABI +bool __cxx_atomic_compare_exchange_strong( + __cxx_atomic_base_impl<_Tp>* __a, _Tp* __expected, _Tp __value, memory_order __success, + memory_order __failure) { + return __atomic_compare_exchange( + std::addressof(__a->__a_value), + __expected, + std::addressof(__value), + false, + __to_gcc_order(__success), + __to_gcc_failure_order(__failure)); +} + +template +_LIBCPP_HIDE_FROM_ABI +bool __cxx_atomic_compare_exchange_weak( + volatile __cxx_atomic_base_impl<_Tp>* __a, _Tp* __expected, _Tp __value, + memory_order __success, memory_order __failure) { + return __atomic_compare_exchange( + std::addressof(__a->__a_value), + __expected, + std::addressof(__value), + true, + __to_gcc_order(__success), + __to_gcc_failure_order(__failure)); +} + +template +_LIBCPP_HIDE_FROM_ABI +bool __cxx_atomic_compare_exchange_weak( + __cxx_atomic_base_impl<_Tp>* __a, _Tp* __expected, _Tp __value, memory_order __success, + memory_order __failure) { + return __atomic_compare_exchange( + std::addressof(__a->__a_value), + __expected, + std::addressof(__value), + true, + __to_gcc_order(__success), + __to_gcc_failure_order(__failure)); +} + +template +struct __skip_amt { enum {value = 1}; }; + +template +struct __skip_amt<_Tp*> { enum {value = sizeof(_Tp)}; }; + +// FIXME: Haven't figured out what the spec says about using arrays with +// atomic_fetch_add. Force a failure rather than creating bad behavior. +template +struct __skip_amt<_Tp[]> { }; +template +struct __skip_amt<_Tp[n]> { }; + +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_fetch_add(volatile __cxx_atomic_base_impl<_Tp>* __a, + _Td __delta, memory_order __order) { + return __atomic_fetch_add(std::addressof(__a->__a_value), __delta * __skip_amt<_Tp>::value, __to_gcc_order(__order)); +} + +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_fetch_add(__cxx_atomic_base_impl<_Tp>* __a, _Td __delta, + memory_order __order) { + return __atomic_fetch_add(std::addressof(__a->__a_value), __delta * __skip_amt<_Tp>::value, __to_gcc_order(__order)); +} + +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_fetch_sub(volatile __cxx_atomic_base_impl<_Tp>* __a, + _Td __delta, memory_order __order) { + return __atomic_fetch_sub(std::addressof(__a->__a_value), __delta * __skip_amt<_Tp>::value, __to_gcc_order(__order)); +} + +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_fetch_sub(__cxx_atomic_base_impl<_Tp>* __a, _Td __delta, + memory_order __order) { + return __atomic_fetch_sub(std::addressof(__a->__a_value), __delta * __skip_amt<_Tp>::value, __to_gcc_order(__order)); +} + +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_fetch_and(volatile __cxx_atomic_base_impl<_Tp>* __a, + _Tp __pattern, memory_order __order) { + return __atomic_fetch_and(std::addressof(__a->__a_value), __pattern, __to_gcc_order(__order)); +} + +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_fetch_and(__cxx_atomic_base_impl<_Tp>* __a, + _Tp __pattern, memory_order __order) { + return __atomic_fetch_and(std::addressof(__a->__a_value), __pattern, __to_gcc_order(__order)); +} + +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_fetch_or(volatile __cxx_atomic_base_impl<_Tp>* __a, + _Tp __pattern, memory_order __order) { + return __atomic_fetch_or(std::addressof(__a->__a_value), __pattern, __to_gcc_order(__order)); +} + +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_fetch_or(__cxx_atomic_base_impl<_Tp>* __a, _Tp __pattern, + memory_order __order) { + return __atomic_fetch_or(std::addressof(__a->__a_value), __pattern, __to_gcc_order(__order)); +} + +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_fetch_xor(volatile __cxx_atomic_base_impl<_Tp>* __a, + _Tp __pattern, memory_order __order) { + return __atomic_fetch_xor(std::addressof(__a->__a_value), __pattern, __to_gcc_order(__order)); +} + +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_fetch_xor(__cxx_atomic_base_impl<_Tp>* __a, _Tp __pattern, + memory_order __order) { + return __atomic_fetch_xor(std::addressof(__a->__a_value), __pattern, __to_gcc_order(__order)); +} + +#define __cxx_atomic_is_lock_free(__s) __atomic_is_lock_free(__s, 0) + +#elif defined(_LIBCPP_HAS_C_ATOMIC_IMP) + +template +struct __cxx_atomic_base_impl { + + _LIBCPP_HIDE_FROM_ABI +#ifndef _LIBCPP_CXX03_LANG + __cxx_atomic_base_impl() _NOEXCEPT = default; +#else + __cxx_atomic_base_impl() _NOEXCEPT : __a_value() {} +#endif // _LIBCPP_CXX03_LANG + _LIBCPP_CONSTEXPR explicit __cxx_atomic_base_impl(_Tp __value) _NOEXCEPT + : __a_value(__value) {} + _LIBCPP_DISABLE_EXTENSION_WARNING _Atomic(_Tp) __a_value; +}; + +#define __cxx_atomic_is_lock_free(__s) __c11_atomic_is_lock_free(__s) + +_LIBCPP_HIDE_FROM_ABI inline +void __cxx_atomic_thread_fence(memory_order __order) _NOEXCEPT { + __c11_atomic_thread_fence(static_cast<__memory_order_underlying_t>(__order)); +} + +_LIBCPP_HIDE_FROM_ABI inline +void __cxx_atomic_signal_fence(memory_order __order) _NOEXCEPT { + __c11_atomic_signal_fence(static_cast<__memory_order_underlying_t>(__order)); +} + +template +_LIBCPP_HIDE_FROM_ABI +void __cxx_atomic_init(__cxx_atomic_base_impl<_Tp> volatile* __a, _Tp __val) _NOEXCEPT { + __c11_atomic_init(std::addressof(__a->__a_value), __val); +} +template +_LIBCPP_HIDE_FROM_ABI +void __cxx_atomic_init(__cxx_atomic_base_impl<_Tp> * __a, _Tp __val) _NOEXCEPT { + __c11_atomic_init(std::addressof(__a->__a_value), __val); +} + +template +_LIBCPP_HIDE_FROM_ABI +void __cxx_atomic_store(__cxx_atomic_base_impl<_Tp> volatile* __a, _Tp __val, memory_order __order) _NOEXCEPT { + __c11_atomic_store(std::addressof(__a->__a_value), __val, static_cast<__memory_order_underlying_t>(__order)); +} +template +_LIBCPP_HIDE_FROM_ABI +void __cxx_atomic_store(__cxx_atomic_base_impl<_Tp> * __a, _Tp __val, memory_order __order) _NOEXCEPT { + __c11_atomic_store(std::addressof(__a->__a_value), __val, static_cast<__memory_order_underlying_t>(__order)); +} + +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_load(__cxx_atomic_base_impl<_Tp> const volatile* __a, memory_order __order) _NOEXCEPT { + using __ptr_type = __remove_const_t__a_value)>*; + return __c11_atomic_load( + const_cast<__ptr_type>(std::addressof(__a->__a_value)), static_cast<__memory_order_underlying_t>(__order)); +} +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_load(__cxx_atomic_base_impl<_Tp> const* __a, memory_order __order) _NOEXCEPT { + using __ptr_type = __remove_const_t__a_value)>*; + return __c11_atomic_load( + const_cast<__ptr_type>(std::addressof(__a->__a_value)), static_cast<__memory_order_underlying_t>(__order)); +} + +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_exchange(__cxx_atomic_base_impl<_Tp> volatile* __a, _Tp __value, memory_order __order) _NOEXCEPT { + return __c11_atomic_exchange( + std::addressof(__a->__a_value), __value, static_cast<__memory_order_underlying_t>(__order)); +} +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_exchange(__cxx_atomic_base_impl<_Tp> * __a, _Tp __value, memory_order __order) _NOEXCEPT { + return __c11_atomic_exchange( + std::addressof(__a->__a_value), __value, static_cast<__memory_order_underlying_t>(__order)); +} + +_LIBCPP_HIDE_FROM_ABI inline _LIBCPP_CONSTEXPR memory_order __to_failure_order(memory_order __order) { + // Avoid switch statement to make this a constexpr. + return __order == memory_order_release ? memory_order_relaxed: + (__order == memory_order_acq_rel ? memory_order_acquire: + __order); +} + +template +_LIBCPP_HIDE_FROM_ABI +bool __cxx_atomic_compare_exchange_strong(__cxx_atomic_base_impl<_Tp> volatile* __a, _Tp* __expected, _Tp __value, memory_order __success, memory_order __failure) _NOEXCEPT { + return __c11_atomic_compare_exchange_strong( + std::addressof(__a->__a_value), + __expected, + __value, + static_cast<__memory_order_underlying_t>(__success), + static_cast<__memory_order_underlying_t>(__to_failure_order(__failure))); +} +template +_LIBCPP_HIDE_FROM_ABI +bool __cxx_atomic_compare_exchange_strong(__cxx_atomic_base_impl<_Tp> * __a, _Tp* __expected, _Tp __value, memory_order __success, memory_order __failure) _NOEXCEPT { + return __c11_atomic_compare_exchange_strong( + std::addressof(__a->__a_value), + __expected, + __value, + static_cast<__memory_order_underlying_t>(__success), + static_cast<__memory_order_underlying_t>(__to_failure_order(__failure))); +} + +template +_LIBCPP_HIDE_FROM_ABI +bool __cxx_atomic_compare_exchange_weak(__cxx_atomic_base_impl<_Tp> volatile* __a, _Tp* __expected, _Tp __value, memory_order __success, memory_order __failure) _NOEXCEPT { + return __c11_atomic_compare_exchange_weak( + std::addressof(__a->__a_value), + __expected, + __value, + static_cast<__memory_order_underlying_t>(__success), + static_cast<__memory_order_underlying_t>(__to_failure_order(__failure))); +} +template +_LIBCPP_HIDE_FROM_ABI +bool __cxx_atomic_compare_exchange_weak(__cxx_atomic_base_impl<_Tp> * __a, _Tp* __expected, _Tp __value, memory_order __success, memory_order __failure) _NOEXCEPT { + return __c11_atomic_compare_exchange_weak( + std::addressof(__a->__a_value), + __expected, + __value, + static_cast<__memory_order_underlying_t>(__success), + static_cast<__memory_order_underlying_t>(__to_failure_order(__failure))); +} + +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_fetch_add(__cxx_atomic_base_impl<_Tp> volatile* __a, _Tp __delta, memory_order __order) _NOEXCEPT { + return __c11_atomic_fetch_add( + std::addressof(__a->__a_value), __delta, static_cast<__memory_order_underlying_t>(__order)); +} +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_fetch_add(__cxx_atomic_base_impl<_Tp> * __a, _Tp __delta, memory_order __order) _NOEXCEPT { + return __c11_atomic_fetch_add( + std::addressof(__a->__a_value), __delta, static_cast<__memory_order_underlying_t>(__order)); +} + +template +_LIBCPP_HIDE_FROM_ABI +_Tp* __cxx_atomic_fetch_add(__cxx_atomic_base_impl<_Tp*> volatile* __a, ptrdiff_t __delta, memory_order __order) _NOEXCEPT { + return __c11_atomic_fetch_add( + std::addressof(__a->__a_value), __delta, static_cast<__memory_order_underlying_t>(__order)); +} +template +_LIBCPP_HIDE_FROM_ABI +_Tp* __cxx_atomic_fetch_add(__cxx_atomic_base_impl<_Tp*> * __a, ptrdiff_t __delta, memory_order __order) _NOEXCEPT { + return __c11_atomic_fetch_add( + std::addressof(__a->__a_value), __delta, static_cast<__memory_order_underlying_t>(__order)); +} + +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_fetch_sub(__cxx_atomic_base_impl<_Tp> volatile* __a, _Tp __delta, memory_order __order) _NOEXCEPT { + return __c11_atomic_fetch_sub( + std::addressof(__a->__a_value), __delta, static_cast<__memory_order_underlying_t>(__order)); +} +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_fetch_sub(__cxx_atomic_base_impl<_Tp> * __a, _Tp __delta, memory_order __order) _NOEXCEPT { + return __c11_atomic_fetch_sub( + std::addressof(__a->__a_value), __delta, static_cast<__memory_order_underlying_t>(__order)); +} +template +_LIBCPP_HIDE_FROM_ABI +_Tp* __cxx_atomic_fetch_sub(__cxx_atomic_base_impl<_Tp*> volatile* __a, ptrdiff_t __delta, memory_order __order) _NOEXCEPT { + return __c11_atomic_fetch_sub( + std::addressof(__a->__a_value), __delta, static_cast<__memory_order_underlying_t>(__order)); +} +template +_LIBCPP_HIDE_FROM_ABI +_Tp* __cxx_atomic_fetch_sub(__cxx_atomic_base_impl<_Tp*> * __a, ptrdiff_t __delta, memory_order __order) _NOEXCEPT { + return __c11_atomic_fetch_sub( + std::addressof(__a->__a_value), __delta, static_cast<__memory_order_underlying_t>(__order)); +} + +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_fetch_and(__cxx_atomic_base_impl<_Tp> volatile* __a, _Tp __pattern, memory_order __order) _NOEXCEPT { + return __c11_atomic_fetch_and( + std::addressof(__a->__a_value), __pattern, static_cast<__memory_order_underlying_t>(__order)); +} +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_fetch_and(__cxx_atomic_base_impl<_Tp> * __a, _Tp __pattern, memory_order __order) _NOEXCEPT { + return __c11_atomic_fetch_and( + std::addressof(__a->__a_value), __pattern, static_cast<__memory_order_underlying_t>(__order)); +} + +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_fetch_or(__cxx_atomic_base_impl<_Tp> volatile* __a, _Tp __pattern, memory_order __order) _NOEXCEPT { + return __c11_atomic_fetch_or( + std::addressof(__a->__a_value), __pattern, static_cast<__memory_order_underlying_t>(__order)); +} +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_fetch_or(__cxx_atomic_base_impl<_Tp> * __a, _Tp __pattern, memory_order __order) _NOEXCEPT { + return __c11_atomic_fetch_or( + std::addressof(__a->__a_value), __pattern, static_cast<__memory_order_underlying_t>(__order)); +} + +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_fetch_xor(__cxx_atomic_base_impl<_Tp> volatile* __a, _Tp __pattern, memory_order __order) _NOEXCEPT { + return __c11_atomic_fetch_xor( + std::addressof(__a->__a_value), __pattern, static_cast<__memory_order_underlying_t>(__order)); +} +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_fetch_xor(__cxx_atomic_base_impl<_Tp> * __a, _Tp __pattern, memory_order __order) _NOEXCEPT { + return __c11_atomic_fetch_xor( + std::addressof(__a->__a_value), __pattern, static_cast<__memory_order_underlying_t>(__order)); +} + +#endif // _LIBCPP_HAS_GCC_ATOMIC_IMP, _LIBCPP_HAS_C_ATOMIC_IMP + +#ifdef _LIBCPP_ATOMIC_ONLY_USE_BUILTINS + +template +struct __cxx_atomic_lock_impl { + + _LIBCPP_HIDE_FROM_ABI + __cxx_atomic_lock_impl() _NOEXCEPT + : __a_value(), __a_lock(0) {} + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR explicit + __cxx_atomic_lock_impl(_Tp value) _NOEXCEPT + : __a_value(value), __a_lock(0) {} + + _Tp __a_value; + mutable __cxx_atomic_base_impl<_LIBCPP_ATOMIC_FLAG_TYPE> __a_lock; + + _LIBCPP_HIDE_FROM_ABI void __lock() const volatile { + while(1 == __cxx_atomic_exchange(&__a_lock, _LIBCPP_ATOMIC_FLAG_TYPE(true), memory_order_acquire)) + /*spin*/; + } + _LIBCPP_HIDE_FROM_ABI void __lock() const { + while(1 == __cxx_atomic_exchange(&__a_lock, _LIBCPP_ATOMIC_FLAG_TYPE(true), memory_order_acquire)) + /*spin*/; + } + _LIBCPP_HIDE_FROM_ABI void __unlock() const volatile { + __cxx_atomic_store(&__a_lock, _LIBCPP_ATOMIC_FLAG_TYPE(false), memory_order_release); + } + _LIBCPP_HIDE_FROM_ABI void __unlock() const { + __cxx_atomic_store(&__a_lock, _LIBCPP_ATOMIC_FLAG_TYPE(false), memory_order_release); + } + _LIBCPP_HIDE_FROM_ABI _Tp __read() const volatile { + __lock(); + _Tp __old; + __cxx_atomic_assign_volatile(__old, __a_value); + __unlock(); + return __old; + } + _LIBCPP_HIDE_FROM_ABI _Tp __read() const { + __lock(); + _Tp __old = __a_value; + __unlock(); + return __old; + } +}; + +template +_LIBCPP_HIDE_FROM_ABI +void __cxx_atomic_init(volatile __cxx_atomic_lock_impl<_Tp>* __a, _Tp __val) { + __cxx_atomic_assign_volatile(__a->__a_value, __val); +} +template +_LIBCPP_HIDE_FROM_ABI +void __cxx_atomic_init(__cxx_atomic_lock_impl<_Tp>* __a, _Tp __val) { + __a->__a_value = __val; +} + +template +_LIBCPP_HIDE_FROM_ABI +void __cxx_atomic_store(volatile __cxx_atomic_lock_impl<_Tp>* __a, _Tp __val, memory_order) { + __a->__lock(); + __cxx_atomic_assign_volatile(__a->__a_value, __val); + __a->__unlock(); +} +template +_LIBCPP_HIDE_FROM_ABI +void __cxx_atomic_store(__cxx_atomic_lock_impl<_Tp>* __a, _Tp __val, memory_order) { + __a->__lock(); + __a->__a_value = __val; + __a->__unlock(); +} + +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_load(const volatile __cxx_atomic_lock_impl<_Tp>* __a, memory_order) { + return __a->__read(); +} +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_load(const __cxx_atomic_lock_impl<_Tp>* __a, memory_order) { + return __a->__read(); +} + +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_exchange(volatile __cxx_atomic_lock_impl<_Tp>* __a, _Tp __value, memory_order) { + __a->__lock(); + _Tp __old; + __cxx_atomic_assign_volatile(__old, __a->__a_value); + __cxx_atomic_assign_volatile(__a->__a_value, __value); + __a->__unlock(); + return __old; +} +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_exchange(__cxx_atomic_lock_impl<_Tp>* __a, _Tp __value, memory_order) { + __a->__lock(); + _Tp __old = __a->__a_value; + __a->__a_value = __value; + __a->__unlock(); + return __old; +} + +template +_LIBCPP_HIDE_FROM_ABI +bool __cxx_atomic_compare_exchange_strong(volatile __cxx_atomic_lock_impl<_Tp>* __a, + _Tp* __expected, _Tp __value, memory_order, memory_order) { + _Tp __temp; + __a->__lock(); + __cxx_atomic_assign_volatile(__temp, __a->__a_value); + bool __ret = (std::memcmp(&__temp, __expected, sizeof(_Tp)) == 0); + if(__ret) + __cxx_atomic_assign_volatile(__a->__a_value, __value); + else + __cxx_atomic_assign_volatile(*__expected, __a->__a_value); + __a->__unlock(); + return __ret; +} +template +_LIBCPP_HIDE_FROM_ABI +bool __cxx_atomic_compare_exchange_strong(__cxx_atomic_lock_impl<_Tp>* __a, + _Tp* __expected, _Tp __value, memory_order, memory_order) { + __a->__lock(); + bool __ret = (std::memcmp(&__a->__a_value, __expected, sizeof(_Tp)) == 0); + if(__ret) + std::memcpy(&__a->__a_value, &__value, sizeof(_Tp)); + else + std::memcpy(__expected, &__a->__a_value, sizeof(_Tp)); + __a->__unlock(); + return __ret; +} + +template +_LIBCPP_HIDE_FROM_ABI +bool __cxx_atomic_compare_exchange_weak(volatile __cxx_atomic_lock_impl<_Tp>* __a, + _Tp* __expected, _Tp __value, memory_order, memory_order) { + _Tp __temp; + __a->__lock(); + __cxx_atomic_assign_volatile(__temp, __a->__a_value); + bool __ret = (std::memcmp(&__temp, __expected, sizeof(_Tp)) == 0); + if(__ret) + __cxx_atomic_assign_volatile(__a->__a_value, __value); + else + __cxx_atomic_assign_volatile(*__expected, __a->__a_value); + __a->__unlock(); + return __ret; +} +template +_LIBCPP_HIDE_FROM_ABI +bool __cxx_atomic_compare_exchange_weak(__cxx_atomic_lock_impl<_Tp>* __a, + _Tp* __expected, _Tp __value, memory_order, memory_order) { + __a->__lock(); + bool __ret = (std::memcmp(&__a->__a_value, __expected, sizeof(_Tp)) == 0); + if(__ret) + std::memcpy(&__a->__a_value, &__value, sizeof(_Tp)); + else + std::memcpy(__expected, &__a->__a_value, sizeof(_Tp)); + __a->__unlock(); + return __ret; +} + +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_fetch_add(volatile __cxx_atomic_lock_impl<_Tp>* __a, + _Td __delta, memory_order) { + __a->__lock(); + _Tp __old; + __cxx_atomic_assign_volatile(__old, __a->__a_value); + __cxx_atomic_assign_volatile(__a->__a_value, _Tp(__old + __delta)); + __a->__unlock(); + return __old; +} +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_fetch_add(__cxx_atomic_lock_impl<_Tp>* __a, + _Td __delta, memory_order) { + __a->__lock(); + _Tp __old = __a->__a_value; + __a->__a_value += __delta; + __a->__unlock(); + return __old; +} + +template +_LIBCPP_HIDE_FROM_ABI +_Tp* __cxx_atomic_fetch_add(volatile __cxx_atomic_lock_impl<_Tp*>* __a, + ptrdiff_t __delta, memory_order) { + __a->__lock(); + _Tp* __old; + __cxx_atomic_assign_volatile(__old, __a->__a_value); + __cxx_atomic_assign_volatile(__a->__a_value, __old + __delta); + __a->__unlock(); + return __old; +} +template +_LIBCPP_HIDE_FROM_ABI +_Tp* __cxx_atomic_fetch_add(__cxx_atomic_lock_impl<_Tp*>* __a, + ptrdiff_t __delta, memory_order) { + __a->__lock(); + _Tp* __old = __a->__a_value; + __a->__a_value += __delta; + __a->__unlock(); + return __old; +} + +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_fetch_sub(volatile __cxx_atomic_lock_impl<_Tp>* __a, + _Td __delta, memory_order) { + __a->__lock(); + _Tp __old; + __cxx_atomic_assign_volatile(__old, __a->__a_value); + __cxx_atomic_assign_volatile(__a->__a_value, _Tp(__old - __delta)); + __a->__unlock(); + return __old; +} +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_fetch_sub(__cxx_atomic_lock_impl<_Tp>* __a, + _Td __delta, memory_order) { + __a->__lock(); + _Tp __old = __a->__a_value; + __a->__a_value -= __delta; + __a->__unlock(); + return __old; +} + +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_fetch_and(volatile __cxx_atomic_lock_impl<_Tp>* __a, + _Tp __pattern, memory_order) { + __a->__lock(); + _Tp __old; + __cxx_atomic_assign_volatile(__old, __a->__a_value); + __cxx_atomic_assign_volatile(__a->__a_value, _Tp(__old & __pattern)); + __a->__unlock(); + return __old; +} +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_fetch_and(__cxx_atomic_lock_impl<_Tp>* __a, + _Tp __pattern, memory_order) { + __a->__lock(); + _Tp __old = __a->__a_value; + __a->__a_value &= __pattern; + __a->__unlock(); + return __old; +} + +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_fetch_or(volatile __cxx_atomic_lock_impl<_Tp>* __a, + _Tp __pattern, memory_order) { + __a->__lock(); + _Tp __old; + __cxx_atomic_assign_volatile(__old, __a->__a_value); + __cxx_atomic_assign_volatile(__a->__a_value, _Tp(__old | __pattern)); + __a->__unlock(); + return __old; +} +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_fetch_or(__cxx_atomic_lock_impl<_Tp>* __a, + _Tp __pattern, memory_order) { + __a->__lock(); + _Tp __old = __a->__a_value; + __a->__a_value |= __pattern; + __a->__unlock(); + return __old; +} + +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_fetch_xor(volatile __cxx_atomic_lock_impl<_Tp>* __a, + _Tp __pattern, memory_order) { + __a->__lock(); + _Tp __old; + __cxx_atomic_assign_volatile(__old, __a->__a_value); + __cxx_atomic_assign_volatile(__a->__a_value, _Tp(__old ^ __pattern)); + __a->__unlock(); + return __old; +} +template +_LIBCPP_HIDE_FROM_ABI +_Tp __cxx_atomic_fetch_xor(__cxx_atomic_lock_impl<_Tp>* __a, + _Tp __pattern, memory_order) { + __a->__lock(); + _Tp __old = __a->__a_value; + __a->__a_value ^= __pattern; + __a->__unlock(); + return __old; +} + +template ::__value, + __cxx_atomic_base_impl<_Tp>, + __cxx_atomic_lock_impl<_Tp> >::type> +#else +template > +#endif //_LIBCPP_ATOMIC_ONLY_USE_BUILTINS +struct __cxx_atomic_impl : public _Base { + static_assert(is_trivially_copyable<_Tp>::value, + "std::atomic requires that 'T' be a trivially copyable type"); + + _LIBCPP_HIDE_FROM_ABI __cxx_atomic_impl() _NOEXCEPT = default; + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR explicit __cxx_atomic_impl(_Tp __value) _NOEXCEPT + : _Base(__value) {} +}; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ATOMIC_CXX_ATOMIC_IMPL_H diff --git a/third_party/libcxx/__atomic/fence.h b/third_party/libcxx/__atomic/fence.h new file mode 100644 index 000000000..c62f38f21 --- /dev/null +++ b/third_party/libcxx/__atomic/fence.h @@ -0,0 +1,38 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ATOMIC_FENCE_H +#define _LIBCPP___ATOMIC_FENCE_H + +#include <__atomic/cxx_atomic_impl.h> +#include <__atomic/memory_order.h> +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +inline _LIBCPP_HIDE_FROM_ABI +void +atomic_thread_fence(memory_order __m) _NOEXCEPT +{ + __cxx_atomic_thread_fence(__m); +} + +inline _LIBCPP_HIDE_FROM_ABI +void +atomic_signal_fence(memory_order __m) _NOEXCEPT +{ + __cxx_atomic_signal_fence(__m); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ATOMIC_FENCE_H diff --git a/third_party/libcxx/__atomic/is_always_lock_free.h b/third_party/libcxx/__atomic/is_always_lock_free.h new file mode 100644 index 000000000..fbbd43707 --- /dev/null +++ b/third_party/libcxx/__atomic/is_always_lock_free.h @@ -0,0 +1,28 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ATOMIC_IS_ALWAYS_LOCK_FREE_H +#define _LIBCPP___ATOMIC_IS_ALWAYS_LOCK_FREE_H + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +struct __libcpp_is_always_lock_free { + // __atomic_always_lock_free is available in all Standard modes + static const bool __value = __atomic_always_lock_free(sizeof(_Tp), 0); +}; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ATOMIC_IS_ALWAYS_LOCK_FREE_H diff --git a/third_party/libcxx/__atomic/kill_dependency.h b/third_party/libcxx/__atomic/kill_dependency.h new file mode 100644 index 000000000..1bd5c8ca7 --- /dev/null +++ b/third_party/libcxx/__atomic/kill_dependency.h @@ -0,0 +1,29 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ATOMIC_KILL_DEPENDENCY_H +#define _LIBCPP___ATOMIC_KILL_DEPENDENCY_H + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI +_Tp kill_dependency(_Tp __y) _NOEXCEPT +{ + return __y; +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ATOMIC_KILL_DEPENDENCY_H diff --git a/third_party/libcxx/__atomic/memory_order.h b/third_party/libcxx/__atomic/memory_order.h new file mode 100644 index 000000000..3671dc3cf --- /dev/null +++ b/third_party/libcxx/__atomic/memory_order.h @@ -0,0 +1,72 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ATOMIC_MEMORY_ORDER_H +#define _LIBCPP___ATOMIC_MEMORY_ORDER_H + +#include <__config> +#include <__type_traits/is_same.h> +#include <__type_traits/underlying_type.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +// Figure out what the underlying type for `memory_order` would be if it were +// declared as an unscoped enum (accounting for -fshort-enums). Use this result +// to pin the underlying type in C++20. +enum __legacy_memory_order { + __mo_relaxed, + __mo_consume, + __mo_acquire, + __mo_release, + __mo_acq_rel, + __mo_seq_cst +}; + +using __memory_order_underlying_t = underlying_type<__legacy_memory_order>::type; + +#if _LIBCPP_STD_VER >= 20 + +enum class memory_order : __memory_order_underlying_t { + relaxed = __mo_relaxed, + consume = __mo_consume, + acquire = __mo_acquire, + release = __mo_release, + acq_rel = __mo_acq_rel, + seq_cst = __mo_seq_cst +}; + +static_assert((is_same::type, __memory_order_underlying_t>::value), + "unexpected underlying type for std::memory_order"); + +inline constexpr auto memory_order_relaxed = memory_order::relaxed; +inline constexpr auto memory_order_consume = memory_order::consume; +inline constexpr auto memory_order_acquire = memory_order::acquire; +inline constexpr auto memory_order_release = memory_order::release; +inline constexpr auto memory_order_acq_rel = memory_order::acq_rel; +inline constexpr auto memory_order_seq_cst = memory_order::seq_cst; + +#else + +enum memory_order { + memory_order_relaxed = __mo_relaxed, + memory_order_consume = __mo_consume, + memory_order_acquire = __mo_acquire, + memory_order_release = __mo_release, + memory_order_acq_rel = __mo_acq_rel, + memory_order_seq_cst = __mo_seq_cst, +}; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ATOMIC_MEMORY_ORDER_H diff --git a/third_party/libcxx/__availability b/third_party/libcxx/__availability new file mode 100644 index 000000000..3c4c5cc7b --- /dev/null +++ b/third_party/libcxx/__availability @@ -0,0 +1,348 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___AVAILABILITY +#define _LIBCPP___AVAILABILITY + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +// Libc++ is shipped by various vendors. In particular, it is used as a system +// library on macOS, iOS and other Apple platforms. In order for users to be +// able to compile a binary that is intended to be deployed to an older version +// of a platform, Clang provides availability attributes [1]. These attributes +// can be placed on declarations and are used to describe the life cycle of a +// symbol in the library. +// +// The main goal is to ensure a compile-time error if a symbol that hasn't been +// introduced in a previously released library is used in a program that targets +// that previously released library. Normally, this would be a load-time error +// when one tries to launch the program against the older library. +// +// For example, the filesystem library was introduced in the dylib in macOS 10.15. +// If a user compiles on a macOS 10.15 host but targets macOS 10.13 with their +// program, the compiler would normally not complain (because the required +// declarations are in the headers), but the dynamic loader would fail to find +// the symbols when actually trying to launch the program on macOS 10.13. To +// turn this into a compile-time issue instead, declarations are annotated with +// when they were introduced, and the compiler can produce a diagnostic if the +// program references something that isn't available on the deployment target. +// +// This mechanism is general in nature, and any vendor can add their markup to +// the library (see below). Whenever a new feature is added that requires support +// in the shared library, two macros are added below to allow marking the feature +// as unavailable: +// 1. A macro named `_LIBCPP_AVAILABILITY_HAS_NO_` which must be defined +// exactly when compiling for a target that doesn't support the feature. +// 2. A macro named `_LIBCPP_AVAILABILITY_`, which must always be defined +// and must expand to the proper availability attribute for the platform. +// +// When vendors decide to ship the feature as part of their shared library, they +// can update these macros appropriately for their platform, and the library will +// use those to provide an optimal user experience. +// +// Furthermore, many features in the standard library have corresponding +// feature-test macros. The `_LIBCPP_AVAILABILITY_HAS_NO_` macros +// are checked by the corresponding feature-test macros generated by +// generate_feature_test_macro_components.py to ensure that the library +// doesn't announce a feature as being implemented if it is unavailable on +// the deployment target. +// +// Note that this mechanism is disabled by default in the "upstream" libc++. +// Availability annotations are only meaningful when shipping libc++ inside +// a platform (i.e. as a system library), and so vendors that want them should +// turn those annotations on at CMake configuration time. +// +// [1]: https://clang.llvm.org/docs/AttributeReference.html#availability + + +// For backwards compatibility, allow users to define _LIBCPP_DISABLE_AVAILABILITY +// for a while. +#if defined(_LIBCPP_DISABLE_AVAILABILITY) +# if !defined(_LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS) +# define _LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS +# endif +#endif + +// Availability markup is disabled when building the library, or when the compiler +// doesn't support the proper attributes. +#if defined(_LIBCPP_BUILDING_LIBRARY) || \ + defined(_LIBCXXABI_BUILDING_LIBRARY) || \ + !__has_feature(attribute_availability_with_strict) || \ + !__has_feature(attribute_availability_in_templates) || \ + !__has_extension(pragma_clang_attribute_external_declaration) +# if !defined(_LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS) +# define _LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS +# endif +#endif + +#if defined(_LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS) + + // This controls the availability of std::shared_mutex and std::shared_timed_mutex, + // which were added to the dylib later. +// # define _LIBCPP_AVAILABILITY_HAS_NO_SHARED_MUTEX +# define _LIBCPP_AVAILABILITY_SHARED_MUTEX + + // These macros control the availability of std::bad_optional_access and + // other exception types. These were put in the shared library to prevent + // code bloat from every user program defining the vtable for these exception + // types. + // + // Note that when exceptions are disabled, the methods that normally throw + // these exceptions can be used even on older deployment targets, but those + // methods will abort instead of throwing. +// # define _LIBCPP_AVAILABILITY_HAS_NO_BAD_OPTIONAL_ACCESS +# define _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS + +// # define _LIBCPP_AVAILABILITY_HAS_NO_BAD_VARIANT_ACCESS +# define _LIBCPP_AVAILABILITY_BAD_VARIANT_ACCESS + +// # define _LIBCPP_AVAILABILITY_HAS_NO_BAD_ANY_CAST +# define _LIBCPP_AVAILABILITY_BAD_ANY_CAST + + // This controls the availability of std::uncaught_exceptions(). +// # define _LIBCPP_AVAILABILITY_HAS_NO_UNCAUGHT_EXCEPTIONS +# define _LIBCPP_AVAILABILITY_UNCAUGHT_EXCEPTIONS + + // This controls the availability of the sized version of ::operator delete, + // ::operator delete[], and their align_val_t variants, which were all added + // in C++17, and hence not present in early dylibs. +// # define _LIBCPP_AVAILABILITY_HAS_NO_SIZED_NEW_DELETE +# define _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE + + // This controls the availability of the std::future_error exception. + // + // Note that when exceptions are disabled, the methods that normally throw + // std::future_error can be used even on older deployment targets, but those + // methods will abort instead of throwing. +// # define _LIBCPP_AVAILABILITY_HAS_NO_FUTURE_ERROR +# define _LIBCPP_AVAILABILITY_FUTURE_ERROR + + // This controls the availability of std::type_info's vtable. + // I can't imagine how using std::type_info can work at all if + // this isn't supported. +// # define _LIBCPP_AVAILABILITY_HAS_NO_TYPEINFO_VTABLE +# define _LIBCPP_AVAILABILITY_TYPEINFO_VTABLE + + // This controls the availability of std::locale::category members + // (e.g. std::locale::collate), which are defined in the dylib. +// # define _LIBCPP_AVAILABILITY_HAS_NO_LOCALE_CATEGORY +# define _LIBCPP_AVAILABILITY_LOCALE_CATEGORY + + // This controls the availability of atomic operations on std::shared_ptr + // (e.g. `std::atomic_store(std::shared_ptr)`), which require a shared + // lock table located in the dylib. +// # define _LIBCPP_AVAILABILITY_HAS_NO_ATOMIC_SHARED_PTR +# define _LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR + + // These macros control the availability of all parts of that + // depend on something in the dylib. +// # define _LIBCPP_AVAILABILITY_HAS_NO_FILESYSTEM +# define _LIBCPP_AVAILABILITY_FILESYSTEM +# define _LIBCPP_AVAILABILITY_FILESYSTEM_PUSH +# define _LIBCPP_AVAILABILITY_FILESYSTEM_POP + + // This controls the availability of floating-point std::to_chars functions. + // These overloads were added later than the integer overloads. +// # define _LIBCPP_AVAILABILITY_HAS_NO_TO_CHARS_FLOATING_POINT +# define _LIBCPP_AVAILABILITY_TO_CHARS_FLOATING_POINT + + // This controls the availability of the C++20 synchronization library, + // which requires shared library support for various operations + // (see libcxx/src/atomic.cpp). This includes , , + // , and notification functions on std::atomic. +// # define _LIBCPP_AVAILABILITY_HAS_NO_SYNC +# define _LIBCPP_AVAILABILITY_SYNC + + // This controls whether the library claims to provide a default verbose + // termination function, and consequently whether the headers will try + // to use it when the mechanism isn't overriden at compile-time. +// # define _LIBCPP_AVAILABILITY_HAS_NO_VERBOSE_ABORT +# define _LIBCPP_AVAILABILITY_VERBOSE_ABORT + +#elif defined(__APPLE__) + + // shared_mutex and shared_timed_mutex +# if (defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 101200) || \ + (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ < 100000) || \ + (defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ < 100000) || \ + (defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ < 30000) +# define _LIBCPP_AVAILABILITY_HAS_NO_SHARED_MUTEX +# endif +# define _LIBCPP_AVAILABILITY_SHARED_MUTEX \ + __attribute__((availability(macos,strict,introduced=10.12))) \ + __attribute__((availability(ios,strict,introduced=10.0))) \ + __attribute__((availability(tvos,strict,introduced=10.0))) \ + __attribute__((availability(watchos,strict,introduced=3.0))) + + // bad_optional_access, bad_variant_access and bad_any_cast + // Note: bad_optional_access & friends were not introduced in the matching + // macOS and iOS versions, so the version mismatch between macOS and others + // is intended. +# if (defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 101300) || \ + (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ < 120000) || \ + (defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ < 120000) || \ + (defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ < 50000) +# define _LIBCPP_AVAILABILITY_HAS_NO_BAD_OPTIONAL_ACCESS +# define _LIBCPP_AVAILABILITY_HAS_NO_BAD_VARIANT_ACCESS +# define _LIBCPP_AVAILABILITY_HAS_NO_BAD_ANY_CAST +# endif +# define _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS \ + __attribute__((availability(macos,strict,introduced=10.13))) \ + __attribute__((availability(ios,strict,introduced=12.0))) \ + __attribute__((availability(tvos,strict,introduced=12.0))) \ + __attribute__((availability(watchos,strict,introduced=5.0))) +# define _LIBCPP_AVAILABILITY_BAD_VARIANT_ACCESS \ + _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS +# define _LIBCPP_AVAILABILITY_BAD_ANY_CAST \ + _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS + + // uncaught_exceptions +# if (defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 101200) || \ + (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ < 100000) || \ + (defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ < 100000) || \ + (defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ < 30000) +# define _LIBCPP_AVAILABILITY_HAS_NO_UNCAUGHT_EXCEPTIONS +# endif +# define _LIBCPP_AVAILABILITY_UNCAUGHT_EXCEPTIONS \ + __attribute__((availability(macos,strict,introduced=10.12))) \ + __attribute__((availability(ios,strict,introduced=10.0))) \ + __attribute__((availability(tvos,strict,introduced=10.0))) \ + __attribute__((availability(watchos,strict,introduced=3.0))) + + // sized operator new and sized operator delete +# if (defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 101200) || \ + (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ < 100000) || \ + (defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ < 100000) || \ + (defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ < 30000) +# define _LIBCPP_AVAILABILITY_HAS_NO_SIZED_NEW_DELETE +# endif +# define _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE \ + __attribute__((availability(macos,strict,introduced=10.12))) \ + __attribute__((availability(ios,strict,introduced=10.0))) \ + __attribute__((availability(tvos,strict,introduced=10.0))) \ + __attribute__((availability(watchos,strict,introduced=3.0))) + + // future_error +# if (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ < 60000) +# define _LIBCPP_AVAILABILITY_HAS_NO_FUTURE_ERROR +# endif +# define _LIBCPP_AVAILABILITY_FUTURE_ERROR \ + __attribute__((availability(ios,strict,introduced=6.0))) + + // type_info's vtable +# if (defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 100900) || \ + (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ < 70000) +# define _LIBCPP_AVAILABILITY_HAS_NO_TYPEINFO_VTABLE +# endif +# define _LIBCPP_AVAILABILITY_TYPEINFO_VTABLE \ + __attribute__((availability(macos,strict,introduced=10.9))) \ + __attribute__((availability(ios,strict,introduced=7.0))) + + // locale::category +# if (defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 100900) || \ + (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ < 70000) +# define _LIBCPP_AVAILABILITY_HAS_NO_LOCALE_CATEGORY +# endif +# define _LIBCPP_AVAILABILITY_LOCALE_CATEGORY \ + __attribute__((availability(macos,strict,introduced=10.9))) \ + __attribute__((availability(ios,strict,introduced=7.0))) + + // atomic operations on shared_ptr +# if (defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 100900) || \ + (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ < 70000) +# define _LIBCPP_AVAILABILITY_HAS_NO_ATOMIC_SHARED_PTR +# endif +# define _LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR \ + __attribute__((availability(macos,strict,introduced=10.9))) \ + __attribute__((availability(ios,strict,introduced=7.0))) + + // +# if (defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 101500) || \ + (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ < 130000) || \ + (defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ < 130000) || \ + (defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ < 60000) +# define _LIBCPP_AVAILABILITY_HAS_NO_FILESYSTEM +# endif +# define _LIBCPP_AVAILABILITY_FILESYSTEM \ + __attribute__((availability(macos,strict,introduced=10.15))) \ + __attribute__((availability(ios,strict,introduced=13.0))) \ + __attribute__((availability(tvos,strict,introduced=13.0))) \ + __attribute__((availability(watchos,strict,introduced=6.0))) +# define _LIBCPP_AVAILABILITY_FILESYSTEM_PUSH \ + _Pragma("clang attribute push(__attribute__((availability(macos,strict,introduced=10.15))), apply_to=any(function,record))") \ + _Pragma("clang attribute push(__attribute__((availability(ios,strict,introduced=13.0))), apply_to=any(function,record))") \ + _Pragma("clang attribute push(__attribute__((availability(tvos,strict,introduced=13.0))), apply_to=any(function,record))") \ + _Pragma("clang attribute push(__attribute__((availability(watchos,strict,introduced=6.0))), apply_to=any(function,record))") +# define _LIBCPP_AVAILABILITY_FILESYSTEM_POP \ + _Pragma("clang attribute pop") \ + _Pragma("clang attribute pop") \ + _Pragma("clang attribute pop") \ + _Pragma("clang attribute pop") + + // std::to_chars(floating-point) +# if (defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 130300) || \ + (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ < 160300) || \ + (defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ < 160300) || \ + (defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ < 90300) +# define _LIBCPP_AVAILABILITY_HAS_NO_TO_CHARS_FLOATING_POINT +# endif +# define _LIBCPP_AVAILABILITY_TO_CHARS_FLOATING_POINT \ + __attribute__((availability(macos,strict,introduced=13.3))) \ + __attribute__((availability(ios,strict,introduced=16.3))) \ + __attribute__((availability(tvos,strict,introduced=16.3))) \ + __attribute__((availability(watchos,strict,introduced=9.3))) + + // c++20 synchronization library +# if (defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 110000) || \ + (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ < 140000) || \ + (defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ < 140000) || \ + (defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ < 70000) +# define _LIBCPP_AVAILABILITY_HAS_NO_SYNC +# endif +# define _LIBCPP_AVAILABILITY_SYNC \ + __attribute__((availability(macos,strict,introduced=11.0))) \ + __attribute__((availability(ios,strict,introduced=14.0))) \ + __attribute__((availability(tvos,strict,introduced=14.0))) \ + __attribute__((availability(watchos,strict,introduced=7.0))) + + // __libcpp_verbose_abort +# if 1 // TODO: Update once this is released +# define _LIBCPP_AVAILABILITY_HAS_NO_VERBOSE_ABORT +# endif +# define _LIBCPP_AVAILABILITY_VERBOSE_ABORT \ + __attribute__((unavailable)) + +#else + +// ...New vendors can add availability markup here... + +# error "It looks like you're trying to enable vendor availability markup, but you haven't defined the corresponding macros yet!" + +#endif + +// Define availability attributes that depend on _LIBCPP_HAS_NO_EXCEPTIONS. +// Those are defined in terms of the availability attributes above, and +// should not be vendor-specific. +#if defined(_LIBCPP_HAS_NO_EXCEPTIONS) +# define _LIBCPP_AVAILABILITY_FUTURE +# define _LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST +# define _LIBCPP_AVAILABILITY_THROW_BAD_OPTIONAL_ACCESS +# define _LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS +#else +# define _LIBCPP_AVAILABILITY_FUTURE _LIBCPP_AVAILABILITY_FUTURE_ERROR +# define _LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST _LIBCPP_AVAILABILITY_BAD_ANY_CAST +# define _LIBCPP_AVAILABILITY_THROW_BAD_OPTIONAL_ACCESS _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS +# define _LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS _LIBCPP_AVAILABILITY_BAD_VARIANT_ACCESS +#endif + +#endif // _LIBCPP___AVAILABILITY diff --git a/third_party/libcxx/__bit/bit_cast.h b/third_party/libcxx/__bit/bit_cast.h new file mode 100644 index 000000000..39842465e --- /dev/null +++ b/third_party/libcxx/__bit/bit_cast.h @@ -0,0 +1,36 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___BIT_BIT_CAST_H +#define _LIBCPP___BIT_BIT_CAST_H + +#include <__config> +#include <__type_traits/is_trivially_copyable.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +template + requires(sizeof(_ToType) == sizeof(_FromType) && + is_trivially_copyable_v<_ToType> && + is_trivially_copyable_v<_FromType>) +_LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr _ToType bit_cast(const _FromType& __from) noexcept { + return __builtin_bit_cast(_ToType, __from); +} + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___BIT_BIT_CAST_H diff --git a/third_party/libcxx/__bit/bit_ceil.h b/third_party/libcxx/__bit/bit_ceil.h new file mode 100644 index 000000000..1332900ae --- /dev/null +++ b/third_party/libcxx/__bit/bit_ceil.h @@ -0,0 +1,46 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___BIT_BIT_CEIL_H +#define _LIBCPP___BIT_BIT_CEIL_H + +#include <__assert> +#include <__bit/countl.h> +#include <__concepts/arithmetic.h> +#include <__config> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +template <__libcpp_unsigned_integer _Tp> +_LIBCPP_HIDE_FROM_ABI constexpr _Tp bit_ceil(_Tp __t) noexcept { + if (__t < 2) + return 1; + const unsigned __n = numeric_limits<_Tp>::digits - std::countl_zero((_Tp)(__t - 1u)); + _LIBCPP_ASSERT(__n != numeric_limits<_Tp>::digits, "Bad input to bit_ceil"); + + if constexpr (sizeof(_Tp) >= sizeof(unsigned)) + return _Tp{1} << __n; + else { + const unsigned __extra = numeric_limits::digits - numeric_limits<_Tp>::digits; + const unsigned __ret_val = 1u << (__n + __extra); + return (_Tp)(__ret_val >> __extra); + } +} + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___BIT_BIT_CEIL_H diff --git a/third_party/libcxx/__bit/bit_floor.h b/third_party/libcxx/__bit/bit_floor.h new file mode 100644 index 000000000..b2e38092f --- /dev/null +++ b/third_party/libcxx/__bit/bit_floor.h @@ -0,0 +1,34 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___BIT_BIT_FLOOR_H +#define _LIBCPP___BIT_BIT_FLOOR_H + +#include <__bit/bit_log2.h> +#include <__concepts/arithmetic.h> +#include <__config> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +template <__libcpp_unsigned_integer _Tp> +_LIBCPP_HIDE_FROM_ABI constexpr _Tp bit_floor(_Tp __t) noexcept { + return __t == 0 ? 0 : _Tp{1} << std::__bit_log2(__t); +} + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___BIT_BIT_FLOOR_H diff --git a/third_party/libcxx/__bit/bit_log2.h b/third_party/libcxx/__bit/bit_log2.h new file mode 100644 index 000000000..62936f678 --- /dev/null +++ b/third_party/libcxx/__bit/bit_log2.h @@ -0,0 +1,34 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___BIT_BIT_LOG2_H +#define _LIBCPP___BIT_BIT_LOG2_H + +#include <__bit/countl.h> +#include <__concepts/arithmetic.h> +#include <__config> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +template <__libcpp_unsigned_integer _Tp> +_LIBCPP_HIDE_FROM_ABI constexpr _Tp __bit_log2(_Tp __t) noexcept { + return numeric_limits<_Tp>::digits - 1 - std::countl_zero(__t); +} + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___BIT_BIT_LOG2_H diff --git a/third_party/libcxx/__bit/bit_width.h b/third_party/libcxx/__bit/bit_width.h new file mode 100644 index 000000000..4381f227f --- /dev/null +++ b/third_party/libcxx/__bit/bit_width.h @@ -0,0 +1,33 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___BIT_BIT_WIDTH_H +#define _LIBCPP___BIT_BIT_WIDTH_H + +#include <__bit/bit_log2.h> +#include <__concepts/arithmetic.h> +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +template <__libcpp_unsigned_integer _Tp> +_LIBCPP_HIDE_FROM_ABI constexpr int bit_width(_Tp __t) noexcept { + return __t == 0 ? 0 : std::__bit_log2(__t) + 1; +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___BIT_BIT_WIDTH_H diff --git a/third_party/libcxx/__bit/blsr.h b/third_party/libcxx/__bit/blsr.h new file mode 100644 index 000000000..de991e9ad --- /dev/null +++ b/third_party/libcxx/__bit/blsr.h @@ -0,0 +1,34 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___BIT_BLSR_H +#define _LIBCPP___BIT_BLSR_H + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR unsigned __libcpp_blsr(unsigned __x) _NOEXCEPT { + return __x ^ (__x & -__x); +} + +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR unsigned long __libcpp_blsr(unsigned long __x) _NOEXCEPT { + return __x ^ (__x & -__x); +} + +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR unsigned long long __libcpp_blsr(unsigned long long __x) _NOEXCEPT { + return __x ^ (__x & -__x); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___BIT_BLSR_H diff --git a/third_party/libcxx/__bit/byteswap.h b/third_party/libcxx/__bit/byteswap.h new file mode 100644 index 000000000..b290e80a5 --- /dev/null +++ b/third_party/libcxx/__bit/byteswap.h @@ -0,0 +1,54 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___BIT_BYTESWAP_H +#define _LIBCPP___BIT_BYTESWAP_H + +#include <__concepts/arithmetic.h> +#include <__config> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 23 + +template +_LIBCPP_HIDE_FROM_ABI constexpr _Tp byteswap(_Tp __val) noexcept { + + if constexpr (sizeof(_Tp) == 1) { + return __val; + } else if constexpr (sizeof(_Tp) == 2) { + return __builtin_bswap16(__val); + } else if constexpr (sizeof(_Tp) == 4) { + return __builtin_bswap32(__val); + } else if constexpr (sizeof(_Tp) == 8) { + return __builtin_bswap64(__val); +#ifndef _LIBCPP_HAS_NO_INT128 + } else if constexpr (sizeof(_Tp) == 16) { +#if __has_builtin(__builtin_bswap128) + return __builtin_bswap128(__val); +#else + return static_cast<_Tp>(byteswap(static_cast(__val))) << 64 | + static_cast<_Tp>(byteswap(static_cast(__val >> 64))); +#endif // __has_builtin(__builtin_bswap128) +#endif // _LIBCPP_HAS_NO_INT128 + } else { + static_assert(sizeof(_Tp) == 0, "byteswap is unimplemented for integral types of this size"); + } +} + +#endif // _LIBCPP_STD_VER >= 23 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___BIT_BYTESWAP_H diff --git a/third_party/libcxx/__bit/countl.h b/third_party/libcxx/__bit/countl.h new file mode 100644 index 000000000..86eaee0c1 --- /dev/null +++ b/third_party/libcxx/__bit/countl.h @@ -0,0 +1,104 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___BIT_COUNTL_H +#define _LIBCPP___BIT_COUNTL_H + +#include <__bit/rotate.h> +#include <__concepts/arithmetic.h> +#include <__config> +#include <__type_traits/is_unsigned_integer.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR +int __libcpp_clz(unsigned __x) _NOEXCEPT { return __builtin_clz(__x); } + +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR +int __libcpp_clz(unsigned long __x) _NOEXCEPT { return __builtin_clzl(__x); } + +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR +int __libcpp_clz(unsigned long long __x) _NOEXCEPT { return __builtin_clzll(__x); } + +# ifndef _LIBCPP_HAS_NO_INT128 +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR +int __libcpp_clz(__uint128_t __x) _NOEXCEPT { + // The function is written in this form due to C++ constexpr limitations. + // The algorithm: + // - Test whether any bit in the high 64-bits is set + // - No bits set: + // - The high 64-bits contain 64 leading zeros, + // - Add the result of the low 64-bits. + // - Any bits set: + // - The number of leading zeros of the input is the number of leading + // zeros in the high 64-bits. + return ((__x >> 64) == 0) + ? (64 + __builtin_clzll(static_cast(__x))) + : __builtin_clzll(static_cast(__x >> 64)); +} +# endif // _LIBCPP_HAS_NO_INT128 + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 +int __countl_zero(_Tp __t) _NOEXCEPT +{ + static_assert(__libcpp_is_unsigned_integer<_Tp>::value, "__countl_zero requires an unsigned integer type"); + if (__t == 0) + return numeric_limits<_Tp>::digits; + + if (sizeof(_Tp) <= sizeof(unsigned int)) + return std::__libcpp_clz(static_cast(__t)) + - (numeric_limits::digits - numeric_limits<_Tp>::digits); + else if (sizeof(_Tp) <= sizeof(unsigned long)) + return std::__libcpp_clz(static_cast(__t)) + - (numeric_limits::digits - numeric_limits<_Tp>::digits); + else if (sizeof(_Tp) <= sizeof(unsigned long long)) + return std::__libcpp_clz(static_cast(__t)) + - (numeric_limits::digits - numeric_limits<_Tp>::digits); + else + { + int __ret = 0; + int __iter = 0; + const unsigned int __ulldigits = numeric_limits::digits; + while (true) { + __t = std::__rotr(__t, __ulldigits); + if ((__iter = std::__countl_zero(static_cast(__t))) != __ulldigits) + break; + __ret += __iter; + } + return __ret + __iter; + } +} + +#if _LIBCPP_STD_VER >= 20 + +template <__libcpp_unsigned_integer _Tp> +_LIBCPP_HIDE_FROM_ABI constexpr int countl_zero(_Tp __t) noexcept { + return std::__countl_zero(__t); +} + +template <__libcpp_unsigned_integer _Tp> +_LIBCPP_HIDE_FROM_ABI constexpr int countl_one(_Tp __t) noexcept { + return __t != numeric_limits<_Tp>::max() ? std::countl_zero(static_cast<_Tp>(~__t)) : numeric_limits<_Tp>::digits; +} + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP___BIT_COUNTL_H diff --git a/third_party/libcxx/__bit/countr.h b/third_party/libcxx/__bit/countr.h new file mode 100644 index 000000000..d3ca5b6c9 --- /dev/null +++ b/third_party/libcxx/__bit/countr.h @@ -0,0 +1,70 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___BIT_COUNTR_H +#define _LIBCPP___BIT_COUNTR_H + +#include <__bit/rotate.h> +#include <__concepts/arithmetic.h> +#include <__config> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR +int __libcpp_ctz(unsigned __x) _NOEXCEPT { return __builtin_ctz(__x); } + +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR +int __libcpp_ctz(unsigned long __x) _NOEXCEPT { return __builtin_ctzl(__x); } + +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR +int __libcpp_ctz(unsigned long long __x) _NOEXCEPT { return __builtin_ctzll(__x); } + +#if _LIBCPP_STD_VER >= 20 + +template <__libcpp_unsigned_integer _Tp> +_LIBCPP_HIDE_FROM_ABI constexpr int countr_zero(_Tp __t) noexcept { + if (__t == 0) + return numeric_limits<_Tp>::digits; + + if (sizeof(_Tp) <= sizeof(unsigned int)) + return std::__libcpp_ctz(static_cast(__t)); + else if (sizeof(_Tp) <= sizeof(unsigned long)) + return std::__libcpp_ctz(static_cast(__t)); + else if (sizeof(_Tp) <= sizeof(unsigned long long)) + return std::__libcpp_ctz(static_cast(__t)); + else { + int __ret = 0; + const unsigned int __ulldigits = numeric_limits::digits; + while (static_cast(__t) == 0uLL) { + __ret += __ulldigits; + __t >>= __ulldigits; + } + return __ret + std::__libcpp_ctz(static_cast(__t)); + } +} + +template <__libcpp_unsigned_integer _Tp> +_LIBCPP_HIDE_FROM_ABI constexpr int countr_one(_Tp __t) noexcept { + return __t != numeric_limits<_Tp>::max() ? std::countr_zero(static_cast<_Tp>(~__t)) : numeric_limits<_Tp>::digits; +} + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP___BIT_COUNTR_H diff --git a/third_party/libcxx/__bit/endian.h b/third_party/libcxx/__bit/endian.h new file mode 100644 index 000000000..52635f2d2 --- /dev/null +++ b/third_party/libcxx/__bit/endian.h @@ -0,0 +1,38 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___BIT_ENDIAN_H +#define _LIBCPP___BIT_ENDIAN_H + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +enum class endian { + little = 0xDEAD, + big = 0xFACE, +# if defined(_LIBCPP_LITTLE_ENDIAN) + native = little +# elif defined(_LIBCPP_BIG_ENDIAN) + native = big +# else + native = 0xCAFE +# endif +}; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___BIT_ENDIAN_H diff --git a/third_party/libcxx/__bit/has_single_bit.h b/third_party/libcxx/__bit/has_single_bit.h new file mode 100644 index 000000000..b89f5995b --- /dev/null +++ b/third_party/libcxx/__bit/has_single_bit.h @@ -0,0 +1,37 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___BIT_HAS_SINGLE_BIT_H +#define _LIBCPP___BIT_HAS_SINGLE_BIT_H + +#include <__concepts/arithmetic.h> +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +template <__libcpp_unsigned_integer _Tp> +_LIBCPP_HIDE_FROM_ABI constexpr bool has_single_bit(_Tp __t) noexcept { + return __t != 0 && (((__t & (__t - 1)) == 0)); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP___BIT_HAS_SINGLE_BIT_H diff --git a/third_party/libcxx/__bit/popcount.h b/third_party/libcxx/__bit/popcount.h new file mode 100644 index 000000000..33b94cff7 --- /dev/null +++ b/third_party/libcxx/__bit/popcount.h @@ -0,0 +1,61 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___BIT_POPCOUNT_H +#define _LIBCPP___BIT_POPCOUNT_H + +#include <__bit/rotate.h> +#include <__concepts/arithmetic.h> +#include <__config> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR +int __libcpp_popcount(unsigned __x) _NOEXCEPT { return __builtin_popcount(__x); } + +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR +int __libcpp_popcount(unsigned long __x) _NOEXCEPT { return __builtin_popcountl(__x); } + +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR +int __libcpp_popcount(unsigned long long __x) _NOEXCEPT { return __builtin_popcountll(__x); } + +#if _LIBCPP_STD_VER >= 20 + +template <__libcpp_unsigned_integer _Tp> +_LIBCPP_HIDE_FROM_ABI constexpr int popcount(_Tp __t) noexcept { + if (sizeof(_Tp) <= sizeof(unsigned int)) + return std::__libcpp_popcount(static_cast(__t)); + else if (sizeof(_Tp) <= sizeof(unsigned long)) + return std::__libcpp_popcount(static_cast(__t)); + else if (sizeof(_Tp) <= sizeof(unsigned long long)) + return std::__libcpp_popcount(static_cast(__t)); + else { + int __ret = 0; + while (__t != 0) { + __ret += std::__libcpp_popcount(static_cast(__t)); + __t >>= numeric_limits::digits; + } + return __ret; + } +} + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP___BIT_POPCOUNT_H diff --git a/third_party/libcxx/__bit/rotate.h b/third_party/libcxx/__bit/rotate.h new file mode 100644 index 000000000..5aa7518b3 --- /dev/null +++ b/third_party/libcxx/__bit/rotate.h @@ -0,0 +1,53 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___BIT_ROTATE_H +#define _LIBCPP___BIT_ROTATE_H + +#include <__concepts/arithmetic.h> +#include <__config> +#include <__type_traits/is_unsigned_integer.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 +_Tp __rotr(_Tp __t, unsigned int __cnt) _NOEXCEPT +{ + static_assert(__libcpp_is_unsigned_integer<_Tp>::value, "__rotr requires an unsigned integer type"); + const unsigned int __dig = numeric_limits<_Tp>::digits; + if ((__cnt % __dig) == 0) + return __t; + return (__t >> (__cnt % __dig)) | (__t << (__dig - (__cnt % __dig))); +} + +#if _LIBCPP_STD_VER >= 20 + +template <__libcpp_unsigned_integer _Tp> +_LIBCPP_HIDE_FROM_ABI constexpr _Tp rotl(_Tp __t, unsigned int __cnt) noexcept { + const unsigned int __dig = numeric_limits<_Tp>::digits; + if ((__cnt % __dig) == 0) + return __t; + return (__t << (__cnt % __dig)) | (__t >> (__dig - (__cnt % __dig))); +} + +template <__libcpp_unsigned_integer _Tp> +_LIBCPP_HIDE_FROM_ABI constexpr _Tp rotr(_Tp __t, unsigned int __cnt) noexcept { + return std::__rotr(__t, __cnt); +} + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___BIT_ROTATE_H diff --git a/third_party/libcxx/__bit_reference b/third_party/libcxx/__bit_reference index 5533a2208..95188ff68 100644 --- a/third_party/libcxx/__bit_reference +++ b/third_party/libcxx/__bit_reference @@ -10,16 +10,25 @@ #ifndef _LIBCPP___BIT_REFERENCE #define _LIBCPP___BIT_REFERENCE -#include "third_party/libcxx/__config" -#include "third_party/libcxx/bit" -#include "third_party/libcxx/algorithm" +#include <__algorithm/copy_n.h> +#include <__algorithm/fill_n.h> +#include <__algorithm/min.h> +#include <__bit/countr.h> +#include <__bit/popcount.h> +#include <__config> +#include <__iterator/iterator_traits.h> +#include <__memory/construct_at.h> +#include <__memory/pointer_traits.h> +#include <__type_traits/conditional.h> +#include <__utility/swap.h> +#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header +# pragma GCC system_header #endif _LIBCPP_PUSH_MACROS -#include "third_party/libcxx/__undef_macros" +#include <__undef_macros> _LIBCPP_BEGIN_NAMESPACE_STD @@ -47,12 +56,17 @@ class __bit_reference friend class __bit_const_reference<_Cp>; friend class __bit_iterator<_Cp, false>; public: - _LIBCPP_INLINE_VISIBILITY operator bool() const _NOEXCEPT + using __container = typename _Cp::__self; + + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 + __bit_reference(const __bit_reference&) = default; + + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 operator bool() const _NOEXCEPT {return static_cast(*__seg_ & __mask_);} - _LIBCPP_INLINE_VISIBILITY bool operator ~() const _NOEXCEPT + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 bool operator ~() const _NOEXCEPT {return !static_cast(*this);} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_reference& operator=(bool __x) _NOEXCEPT { if (__x) @@ -62,16 +76,26 @@ public: return *this; } - _LIBCPP_INLINE_VISIBILITY +#if _LIBCPP_STD_VER >= 23 + _LIBCPP_HIDE_FROM_ABI constexpr const __bit_reference& operator=(bool __x) const noexcept { + if (__x) + *__seg_ |= __mask_; + else + *__seg_ &= ~__mask_; + return *this; + } +#endif + + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_reference& operator=(const __bit_reference& __x) _NOEXCEPT {return operator=(static_cast(__x));} - _LIBCPP_INLINE_VISIBILITY void flip() _NOEXCEPT {*__seg_ ^= __mask_;} - _LIBCPP_INLINE_VISIBILITY __bit_iterator<_Cp, false> operator&() const _NOEXCEPT - {return __bit_iterator<_Cp, false>(__seg_, static_cast(__libcpp_ctz(__mask_)));} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 void flip() _NOEXCEPT {*__seg_ ^= __mask_;} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator<_Cp, false> operator&() const _NOEXCEPT + {return __bit_iterator<_Cp, false>(__seg_, static_cast(std::__libcpp_ctz(__mask_)));} private: - _LIBCPP_INLINE_VISIBILITY - __bit_reference(__storage_pointer __s, __storage_type __m) _NOEXCEPT + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 + explicit __bit_reference(__storage_pointer __s, __storage_type __m) _NOEXCEPT : __seg_(__s), __mask_(__m) {} }; @@ -81,7 +105,7 @@ class __bit_reference<_Cp, false> }; template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 void swap(__bit_reference<_Cp> __x, __bit_reference<_Cp> __y) _NOEXCEPT { @@ -91,7 +115,7 @@ swap(__bit_reference<_Cp> __x, __bit_reference<_Cp> __y) _NOEXCEPT } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 void swap(__bit_reference<_Cp> __x, __bit_reference<_Dp> __y) _NOEXCEPT { @@ -101,7 +125,7 @@ swap(__bit_reference<_Cp> __x, __bit_reference<_Dp> __y) _NOEXCEPT } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 void swap(__bit_reference<_Cp> __x, bool& __y) _NOEXCEPT { @@ -111,7 +135,7 @@ swap(__bit_reference<_Cp> __x, bool& __y) _NOEXCEPT } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 void swap(bool& __x, __bit_reference<_Cp> __y) _NOEXCEPT { @@ -132,33 +156,38 @@ class __bit_const_reference friend typename _Cp::__self; friend class __bit_iterator<_Cp, true>; public: + using __container = typename _Cp::__self; + _LIBCPP_INLINE_VISIBILITY + __bit_const_reference(const __bit_const_reference&) = default; + + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_const_reference(const __bit_reference<_Cp>& __x) _NOEXCEPT : __seg_(__x.__seg_), __mask_(__x.__mask_) {} _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR operator bool() const _NOEXCEPT {return static_cast(*__seg_ & __mask_);} - _LIBCPP_INLINE_VISIBILITY __bit_iterator<_Cp, true> operator&() const _NOEXCEPT - {return __bit_iterator<_Cp, true>(__seg_, static_cast(__libcpp_ctz(__mask_)));} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator<_Cp, true> operator&() const _NOEXCEPT + {return __bit_iterator<_Cp, true>(__seg_, static_cast(std::__libcpp_ctz(__mask_)));} private: _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR - __bit_const_reference(__storage_pointer __s, __storage_type __m) _NOEXCEPT + explicit __bit_const_reference(__storage_pointer __s, __storage_type __m) _NOEXCEPT : __seg_(__s), __mask_(__m) {} - __bit_const_reference& operator=(const __bit_const_reference& __x); + __bit_const_reference& operator=(const __bit_const_reference&) = delete; }; // find template -__bit_iterator<_Cp, _IsConst> +_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI __bit_iterator<_Cp, _IsConst> __find_bool_true(__bit_iterator<_Cp, _IsConst> __first, typename _Cp::size_type __n) { typedef __bit_iterator<_Cp, _IsConst> _It; typedef typename _It::__storage_type __storage_type; - static const int __bits_per_word = _It::__bits_per_word; + const int __bits_per_word = _It::__bits_per_word; // do first partial word if (__first.__ctz_ != 0) { @@ -189,7 +218,7 @@ __find_bool_true(__bit_iterator<_Cp, _IsConst> __first, typename _Cp::size_type } template -__bit_iterator<_Cp, _IsConst> +_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI __bit_iterator<_Cp, _IsConst> __find_bool_false(__bit_iterator<_Cp, _IsConst> __first, typename _Cp::size_type __n) { typedef __bit_iterator<_Cp, _IsConst> _It; @@ -228,19 +257,19 @@ __find_bool_false(__bit_iterator<_Cp, _IsConst> __first, typename _Cp::size_type } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator<_Cp, _IsConst> -find(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, const _Tp& __value_) +find(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, const _Tp& __value) { - if (static_cast(__value_)) - return __find_bool_true(__first, static_cast(__last - __first)); - return __find_bool_false(__first, static_cast(__last - __first)); + if (static_cast(__value)) + return _VSTD::__find_bool_true(__first, static_cast(__last - __first)); + return _VSTD::__find_bool_false(__first, static_cast(__last - __first)); } // count template -typename __bit_iterator<_Cp, _IsConst>::difference_type +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX23 typename __bit_iterator<_Cp, _IsConst>::difference_type __count_bool_true(__bit_iterator<_Cp, _IsConst> __first, typename _Cp::size_type __n) { typedef __bit_iterator<_Cp, _IsConst> _It; @@ -271,7 +300,7 @@ __count_bool_true(__bit_iterator<_Cp, _IsConst> __first, typename _Cp::size_type } template -typename __bit_iterator<_Cp, _IsConst>::difference_type +_LIBCPP_HIDE_FROM_ABI typename __bit_iterator<_Cp, _IsConst>::difference_type __count_bool_false(__bit_iterator<_Cp, _IsConst> __first, typename _Cp::size_type __n) { typedef __bit_iterator<_Cp, _IsConst> _It; @@ -304,17 +333,17 @@ __count_bool_false(__bit_iterator<_Cp, _IsConst> __first, typename _Cp::size_typ template inline _LIBCPP_INLINE_VISIBILITY typename __bit_iterator<_Cp, _IsConst>::difference_type -count(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, const _Tp& __value_) +count(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, const _Tp& __value) { - if (static_cast(__value_)) - return __count_bool_true(__first, static_cast(__last - __first)); - return __count_bool_false(__first, static_cast(__last - __first)); + if (static_cast(__value)) + return _VSTD::__count_bool_true(__first, static_cast(__last - __first)); + return _VSTD::__count_bool_false(__first, static_cast(__last - __first)); } // fill_n template -void +_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void __fill_n_false(__bit_iterator<_Cp, false> __first, typename _Cp::size_type __n) { typedef __bit_iterator<_Cp, false> _It; @@ -332,7 +361,7 @@ __fill_n_false(__bit_iterator<_Cp, false> __first, typename _Cp::size_type __n) } // do middle whole words __storage_type __nw = __n / __bits_per_word; - _VSTD::memset(_VSTD::__to_raw_pointer(__first.__seg_), 0, __nw * sizeof(__storage_type)); + std::fill_n(std::__to_address(__first.__seg_), __nw, 0); __n -= __nw * __bits_per_word; // do last partial word if (__n > 0) @@ -344,7 +373,7 @@ __fill_n_false(__bit_iterator<_Cp, false> __first, typename _Cp::size_type __n) } template -void +_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void __fill_n_true(__bit_iterator<_Cp, false> __first, typename _Cp::size_type __n) { typedef __bit_iterator<_Cp, false> _It; @@ -362,7 +391,8 @@ __fill_n_true(__bit_iterator<_Cp, false> __first, typename _Cp::size_type __n) } // do middle whole words __storage_type __nw = __n / __bits_per_word; - _VSTD::memset(_VSTD::__to_raw_pointer(__first.__seg_), -1, __nw * sizeof(__storage_type)); + // __storage_type is always an unsigned type, so -1 sets all bits + std::fill_n(std::__to_address(__first.__seg_), __nw, static_cast<__storage_type>(-1)); __n -= __nw * __bits_per_word; // do last partial word if (__n > 0) @@ -374,33 +404,33 @@ __fill_n_true(__bit_iterator<_Cp, false> __first, typename _Cp::size_type __n) } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 void -fill_n(__bit_iterator<_Cp, false> __first, typename _Cp::size_type __n, bool __value_) +fill_n(__bit_iterator<_Cp, false> __first, typename _Cp::size_type __n, bool __value) { if (__n > 0) { - if (__value_) - __fill_n_true(__first, __n); + if (__value) + _VSTD::__fill_n_true(__first, __n); else - __fill_n_false(__first, __n); + _VSTD::__fill_n_false(__first, __n); } } // fill template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 void -fill(__bit_iterator<_Cp, false> __first, __bit_iterator<_Cp, false> __last, bool __value_) +fill(__bit_iterator<_Cp, false> __first, __bit_iterator<_Cp, false> __last, bool __value) { - _VSTD::fill_n(__first, static_cast(__last - __first), __value_); + _VSTD::fill_n(__first, static_cast(__last - __first), __value); } // copy template -__bit_iterator<_Cp, false> +_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI __bit_iterator<_Cp, false> __copy_aligned(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, __bit_iterator<_Cp, false> __result) { @@ -429,9 +459,7 @@ __copy_aligned(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsCon // __first.__ctz_ == 0; // do middle words __storage_type __nw = __n / __bits_per_word; - _VSTD::memmove(_VSTD::__to_raw_pointer(__result.__seg_), - _VSTD::__to_raw_pointer(__first.__seg_), - __nw * sizeof(__storage_type)); + std::copy_n(std::__to_address(__first.__seg_), __nw, std::__to_address(__result.__seg_)); __n -= __nw * __bits_per_word; __result.__seg_ += __nw; // do last word @@ -449,14 +477,14 @@ __copy_aligned(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsCon } template -__bit_iterator<_Cp, false> +_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI __bit_iterator<_Cp, false> __copy_unaligned(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, __bit_iterator<_Cp, false> __result) { typedef __bit_iterator<_Cp, _IsConst> _In; typedef typename _In::difference_type difference_type; typedef typename _In::__storage_type __storage_type; - static const int __bits_per_word = _In::__bits_per_word; + const int __bits_per_word = _In::__bits_per_word; difference_type __n = __last - __first; if (__n > 0) { @@ -527,19 +555,19 @@ __copy_unaligned(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsC } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator<_Cp, false> copy(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, __bit_iterator<_Cp, false> __result) { if (__first.__ctz_ == __result.__ctz_) - return __copy_aligned(__first, __last, __result); - return __copy_unaligned(__first, __last, __result); + return _VSTD::__copy_aligned(__first, __last, __result); + return _VSTD::__copy_unaligned(__first, __last, __result); } // copy_backward template -__bit_iterator<_Cp, false> +_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI __bit_iterator<_Cp, false> __copy_backward_aligned(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, __bit_iterator<_Cp, false> __result) { @@ -570,9 +598,7 @@ __copy_backward_aligned(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_C __storage_type __nw = __n / __bits_per_word; __result.__seg_ -= __nw; __last.__seg_ -= __nw; - _VSTD::memmove(_VSTD::__to_raw_pointer(__result.__seg_), - _VSTD::__to_raw_pointer(__last.__seg_), - __nw * sizeof(__storage_type)); + std::copy_n(std::__to_address(__last.__seg_), __nw, std::__to_address(__result.__seg_)); __n -= __nw * __bits_per_word; // do last word if (__n > 0) @@ -588,7 +614,7 @@ __copy_backward_aligned(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_C } template -__bit_iterator<_Cp, false> +_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI __bit_iterator<_Cp, false> __copy_backward_unaligned(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, __bit_iterator<_Cp, false> __result) { @@ -674,13 +700,13 @@ __copy_backward_unaligned(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator< } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator<_Cp, false> copy_backward(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, __bit_iterator<_Cp, false> __result) { if (__last.__ctz_ == __result.__ctz_) - return __copy_backward_aligned(__first, __last, __result); - return __copy_backward_unaligned(__first, __last, __result); + return _VSTD::__copy_backward_aligned(__first, __last, __result); + return _VSTD::__copy_backward_unaligned(__first, __last, __result); } // move @@ -706,7 +732,7 @@ move_backward(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsCons // swap_ranges template -__bit_iterator<__C2, false> +_LIBCPP_HIDE_FROM_ABI __bit_iterator<__C2, false> __swap_ranges_aligned(__bit_iterator<__C1, false> __first, __bit_iterator<__C1, false> __last, __bit_iterator<__C2, false> __result) { @@ -756,7 +782,7 @@ __swap_ranges_aligned(__bit_iterator<__C1, false> __first, __bit_iterator<__C1, } template -__bit_iterator<__C2, false> +_LIBCPP_HIDE_FROM_ABI __bit_iterator<__C2, false> __swap_ranges_unaligned(__bit_iterator<__C1, false> __first, __bit_iterator<__C1, false> __last, __bit_iterator<__C2, false> __result) { @@ -862,8 +888,8 @@ swap_ranges(__bit_iterator<__C1, false> __first1, __bit_iterator<__C1, false> __ __bit_iterator<__C2, false> __first2) { if (__first1.__ctz_ == __first2.__ctz_) - return __swap_ranges_aligned(__first1, __last1, __first2); - return __swap_ranges_unaligned(__first1, __last1, __first2); + return _VSTD::__swap_ranges_aligned(__first1, __last1, __first2); + return _VSTD::__swap_ranges_unaligned(__first1, __last1, __first2); } // rotate @@ -881,14 +907,19 @@ struct __bit_array difference_type __size_; __storage_type __word_[_Np]; - _LIBCPP_INLINE_VISIBILITY static difference_type capacity() + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 static difference_type capacity() {return static_cast(_Np * __bits_per_word);} - _LIBCPP_INLINE_VISIBILITY explicit __bit_array(difference_type __s) : __size_(__s) {} - _LIBCPP_INLINE_VISIBILITY iterator begin() + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 explicit __bit_array(difference_type __s) : __size_(__s) { + if (__libcpp_is_constant_evaluated()) { + for (size_t __i = 0; __i != __bit_array<_Cp>::_Np; ++__i) + std::__construct_at(__word_ + __i, 0); + } + } + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 iterator begin() { return iterator(pointer_traits<__storage_pointer>::pointer_to(__word_[0]), 0); } - _LIBCPP_INLINE_VISIBILITY iterator end() + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 iterator end() { return iterator(pointer_traits<__storage_pointer>::pointer_to(__word_[0]) + __size_ / __bits_per_word, static_cast(__size_ % __bits_per_word)); @@ -896,7 +927,7 @@ struct __bit_array }; template -__bit_iterator<_Cp, false> +_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI __bit_iterator<_Cp, false> rotate(__bit_iterator<_Cp, false> __first, __bit_iterator<_Cp, false> __middle, __bit_iterator<_Cp, false> __last) { typedef __bit_iterator<_Cp, false> _I1; @@ -947,14 +978,14 @@ rotate(__bit_iterator<_Cp, false> __first, __bit_iterator<_Cp, false> __middle, // equal template -bool +_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI bool __equal_unaligned(__bit_iterator<_Cp, _IC1> __first1, __bit_iterator<_Cp, _IC1> __last1, __bit_iterator<_Cp, _IC2> __first2) { typedef __bit_iterator<_Cp, _IC1> _It; typedef typename _It::difference_type difference_type; typedef typename _It::__storage_type __storage_type; - static const int __bits_per_word = _It::__bits_per_word; + const int __bits_per_word = _It::__bits_per_word; difference_type __n = __last1 - __first1; if (__n > 0) { @@ -1029,14 +1060,14 @@ __equal_unaligned(__bit_iterator<_Cp, _IC1> __first1, __bit_iterator<_Cp, _IC1> } template -bool +_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI bool __equal_aligned(__bit_iterator<_Cp, _IC1> __first1, __bit_iterator<_Cp, _IC1> __last1, __bit_iterator<_Cp, _IC2> __first2) { typedef __bit_iterator<_Cp, _IC1> _It; typedef typename _It::difference_type difference_type; typedef typename _It::__storage_type __storage_type; - static const int __bits_per_word = _It::__bits_per_word; + const int __bits_per_word = _It::__bits_per_word; difference_type __n = __last1 - __first1; if (__n > 0) { @@ -1072,13 +1103,13 @@ __equal_aligned(__bit_iterator<_Cp, _IC1> __first1, __bit_iterator<_Cp, _IC1> __ } template -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 bool equal(__bit_iterator<_Cp, _IC1> __first1, __bit_iterator<_Cp, _IC1> __last1, __bit_iterator<_Cp, _IC2> __first2) { if (__first1.__ctz_ == __first2.__ctz_) - return __equal_aligned(__first1, __last1, __first2); - return __equal_unaligned(__first1, __last1, __first2); + return _VSTD::__equal_aligned(__first1, __last1, __first2); + return _VSTD::__equal_unaligned(__first1, __last1, __first2); } template , __bit_reference<_Cp> >::type reference; +#ifndef _LIBCPP_ABI_BITSET_VECTOR_BOOL_CONST_SUBSCRIPT_RETURN_BOOL + typedef __conditional_t<_IsConst, __bit_const_reference<_Cp>, __bit_reference<_Cp> > reference; +#else + using reference = __conditional_t<_IsConst, bool, __bit_reference<_Cp> >; +#endif typedef random_access_iterator_tag iterator_category; private: typedef typename _Cp::__storage_type __storage_type; - typedef typename conditional<_IsConst, typename _Cp::__const_storage_pointer, - typename _Cp::__storage_pointer>::type __storage_pointer; + typedef __conditional_t<_IsConst, typename _Cp::__const_storage_pointer, typename _Cp::__storage_pointer> + __storage_pointer; static const unsigned __bits_per_word = _Cp::__bits_per_word; __storage_pointer __seg_; unsigned __ctz_; public: - _LIBCPP_INLINE_VISIBILITY __bit_iterator() _NOEXCEPT -#if _LIBCPP_STD_VER > 11 + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator() _NOEXCEPT +#if _LIBCPP_STD_VER >= 14 : __seg_(nullptr), __ctz_(0) #endif {} - _LIBCPP_INLINE_VISIBILITY + // When _IsConst=false, this is the copy constructor. + // It is non-trivial. Making it trivial would break ABI. + // When _IsConst=true, this is a converting constructor; + // the copy and move constructors are implicitly generated + // and trivial. + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator(const __bit_iterator<_Cp, false>& __it) _NOEXCEPT : __seg_(__it.__seg_), __ctz_(__it.__ctz_) {} - _LIBCPP_INLINE_VISIBILITY reference operator*() const _NOEXCEPT - {return reference(__seg_, __storage_type(1) << __ctz_);} + // When _IsConst=false, we have a user-provided copy constructor, + // so we must also provide a copy assignment operator because + // the implicit generation of a defaulted one is deprecated. + // When _IsConst=true, the assignment operators are + // implicitly generated and trivial. + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 + __bit_iterator& operator=(const _If<_IsConst, struct __private_nat, __bit_iterator>& __it) { + __seg_ = __it.__seg_; + __ctz_ = __it.__ctz_; + return *this; + } - _LIBCPP_INLINE_VISIBILITY __bit_iterator& operator++() + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 reference operator*() const _NOEXCEPT { + return __conditional_t<_IsConst, __bit_const_reference<_Cp>, __bit_reference<_Cp> >( + __seg_, __storage_type(1) << __ctz_); + } + + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator& operator++() { if (__ctz_ != __bits_per_word-1) ++__ctz_; @@ -1127,14 +1181,14 @@ public: return *this; } - _LIBCPP_INLINE_VISIBILITY __bit_iterator operator++(int) + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator operator++(int) { __bit_iterator __tmp = *this; ++(*this); return __tmp; } - _LIBCPP_INLINE_VISIBILITY __bit_iterator& operator--() + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator& operator--() { if (__ctz_ != 0) --__ctz_; @@ -1146,14 +1200,14 @@ public: return *this; } - _LIBCPP_INLINE_VISIBILITY __bit_iterator operator--(int) + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator operator--(int) { __bit_iterator __tmp = *this; --(*this); return __tmp; } - _LIBCPP_INLINE_VISIBILITY __bit_iterator& operator+=(difference_type __n) + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator& operator+=(difference_type __n) { if (__n >= 0) __seg_ += (__n + __ctz_) / __bits_per_word; @@ -1165,55 +1219,55 @@ public: return *this; } - _LIBCPP_INLINE_VISIBILITY __bit_iterator& operator-=(difference_type __n) + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator& operator-=(difference_type __n) { return *this += -__n; } - _LIBCPP_INLINE_VISIBILITY __bit_iterator operator+(difference_type __n) const + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator operator+(difference_type __n) const { __bit_iterator __t(*this); __t += __n; return __t; } - _LIBCPP_INLINE_VISIBILITY __bit_iterator operator-(difference_type __n) const + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 __bit_iterator operator-(difference_type __n) const { __bit_iterator __t(*this); __t -= __n; return __t; } - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 friend __bit_iterator operator+(difference_type __n, const __bit_iterator& __it) {return __it + __n;} - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 friend difference_type operator-(const __bit_iterator& __x, const __bit_iterator& __y) {return (__x.__seg_ - __y.__seg_) * __bits_per_word + __x.__ctz_ - __y.__ctz_;} - _LIBCPP_INLINE_VISIBILITY reference operator[](difference_type __n) const {return *(*this + __n);} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 reference operator[](difference_type __n) const {return *(*this + __n);} - _LIBCPP_INLINE_VISIBILITY friend bool operator==(const __bit_iterator& __x, const __bit_iterator& __y) + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 friend bool operator==(const __bit_iterator& __x, const __bit_iterator& __y) {return __x.__seg_ == __y.__seg_ && __x.__ctz_ == __y.__ctz_;} - _LIBCPP_INLINE_VISIBILITY friend bool operator!=(const __bit_iterator& __x, const __bit_iterator& __y) + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 friend bool operator!=(const __bit_iterator& __x, const __bit_iterator& __y) {return !(__x == __y);} - _LIBCPP_INLINE_VISIBILITY friend bool operator<(const __bit_iterator& __x, const __bit_iterator& __y) + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 friend bool operator<(const __bit_iterator& __x, const __bit_iterator& __y) {return __x.__seg_ < __y.__seg_ || (__x.__seg_ == __y.__seg_ && __x.__ctz_ < __y.__ctz_);} - _LIBCPP_INLINE_VISIBILITY friend bool operator>(const __bit_iterator& __x, const __bit_iterator& __y) + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 friend bool operator>(const __bit_iterator& __x, const __bit_iterator& __y) {return __y < __x;} - _LIBCPP_INLINE_VISIBILITY friend bool operator<=(const __bit_iterator& __x, const __bit_iterator& __y) + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 friend bool operator<=(const __bit_iterator& __x, const __bit_iterator& __y) {return !(__y < __x);} - _LIBCPP_INLINE_VISIBILITY friend bool operator>=(const __bit_iterator& __x, const __bit_iterator& __y) + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 friend bool operator>=(const __bit_iterator& __x, const __bit_iterator& __y) {return !(__x < __y);} private: - _LIBCPP_INLINE_VISIBILITY - __bit_iterator(__storage_pointer __s, unsigned __ctz) _NOEXCEPT + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 + explicit __bit_iterator(__storage_pointer __s, unsigned __ctz) _NOEXCEPT : __seg_(__s), __ctz_(__ctz) {} friend typename _Cp::__self; @@ -1222,26 +1276,44 @@ private: friend class __bit_const_reference<_Cp>; friend class __bit_iterator<_Cp, true>; template friend struct __bit_array; - template friend void __fill_n_false(__bit_iterator<_Dp, false> __first, typename _Dp::size_type __n); - template friend void __fill_n_true(__bit_iterator<_Dp, false> __first, typename _Dp::size_type __n); - template friend __bit_iterator<_Dp, false> __copy_aligned(__bit_iterator<_Dp, _IC> __first, - __bit_iterator<_Dp, _IC> __last, - __bit_iterator<_Dp, false> __result); - template friend __bit_iterator<_Dp, false> __copy_unaligned(__bit_iterator<_Dp, _IC> __first, - __bit_iterator<_Dp, _IC> __last, - __bit_iterator<_Dp, false> __result); - template friend __bit_iterator<_Dp, false> copy(__bit_iterator<_Dp, _IC> __first, - __bit_iterator<_Dp, _IC> __last, - __bit_iterator<_Dp, false> __result); - template friend __bit_iterator<_Dp, false> __copy_backward_aligned(__bit_iterator<_Dp, _IC> __first, - __bit_iterator<_Dp, _IC> __last, - __bit_iterator<_Dp, false> __result); - template friend __bit_iterator<_Dp, false> __copy_backward_unaligned(__bit_iterator<_Dp, _IC> __first, - __bit_iterator<_Dp, _IC> __last, - __bit_iterator<_Dp, false> __result); - template friend __bit_iterator<_Dp, false> copy_backward(__bit_iterator<_Dp, _IC> __first, - __bit_iterator<_Dp, _IC> __last, - __bit_iterator<_Dp, false> __result); + template + _LIBCPP_CONSTEXPR_SINCE_CXX20 + friend void __fill_n_false(__bit_iterator<_Dp, false> __first, typename _Dp::size_type __n); + + template + _LIBCPP_CONSTEXPR_SINCE_CXX20 + friend void __fill_n_true(__bit_iterator<_Dp, false> __first, typename _Dp::size_type __n); + + template + _LIBCPP_CONSTEXPR_SINCE_CXX20 + friend __bit_iterator<_Dp, false> __copy_aligned(__bit_iterator<_Dp, _IC> __first, + __bit_iterator<_Dp, _IC> __last, + __bit_iterator<_Dp, false> __result); + template + _LIBCPP_CONSTEXPR_SINCE_CXX20 + friend __bit_iterator<_Dp, false> __copy_unaligned(__bit_iterator<_Dp, _IC> __first, + __bit_iterator<_Dp, _IC> __last, + __bit_iterator<_Dp, false> __result); + template + _LIBCPP_CONSTEXPR_SINCE_CXX20 + friend __bit_iterator<_Dp, false> copy(__bit_iterator<_Dp, _IC> __first, + __bit_iterator<_Dp, _IC> __last, + __bit_iterator<_Dp, false> __result); + template + _LIBCPP_CONSTEXPR_SINCE_CXX20 + friend __bit_iterator<_Dp, false> __copy_backward_aligned(__bit_iterator<_Dp, _IC> __first, + __bit_iterator<_Dp, _IC> __last, + __bit_iterator<_Dp, false> __result); + template + _LIBCPP_CONSTEXPR_SINCE_CXX20 + friend __bit_iterator<_Dp, false> __copy_backward_unaligned(__bit_iterator<_Dp, _IC> __first, + __bit_iterator<_Dp, _IC> __last, + __bit_iterator<_Dp, false> __result); + template + _LIBCPP_CONSTEXPR_SINCE_CXX20 + friend __bit_iterator<_Dp, false> copy_backward(__bit_iterator<_Dp, _IC> __first, + __bit_iterator<_Dp, _IC> __last, + __bit_iterator<_Dp, false> __result); template friend __bit_iterator<__C2, false> __swap_ranges_aligned(__bit_iterator<__C1, false>, __bit_iterator<__C1, false>, __bit_iterator<__C2, false>); @@ -1251,23 +1323,34 @@ private: template friend __bit_iterator<__C2, false> swap_ranges(__bit_iterator<__C1, false>, __bit_iterator<__C1, false>, __bit_iterator<__C2, false>); - template friend __bit_iterator<_Dp, false> rotate(__bit_iterator<_Dp, false>, - __bit_iterator<_Dp, false>, - __bit_iterator<_Dp, false>); - template friend bool __equal_aligned(__bit_iterator<_Dp, _IC1>, - __bit_iterator<_Dp, _IC1>, - __bit_iterator<_Dp, _IC2>); - template friend bool __equal_unaligned(__bit_iterator<_Dp, _IC1>, - __bit_iterator<_Dp, _IC1>, - __bit_iterator<_Dp, _IC2>); - template friend bool equal(__bit_iterator<_Dp, _IC1>, - __bit_iterator<_Dp, _IC1>, - __bit_iterator<_Dp, _IC2>); - template friend __bit_iterator<_Dp, _IC> __find_bool_true(__bit_iterator<_Dp, _IC>, - typename _Dp::size_type); - template friend __bit_iterator<_Dp, _IC> __find_bool_false(__bit_iterator<_Dp, _IC>, - typename _Dp::size_type); + template + _LIBCPP_CONSTEXPR_SINCE_CXX20 + friend __bit_iterator<_Dp, false> rotate(__bit_iterator<_Dp, false>, + __bit_iterator<_Dp, false>, + __bit_iterator<_Dp, false>); + template + _LIBCPP_CONSTEXPR_SINCE_CXX20 + friend bool __equal_aligned(__bit_iterator<_Dp, _IC1>, + __bit_iterator<_Dp, _IC1>, + __bit_iterator<_Dp, _IC2>); + template + _LIBCPP_CONSTEXPR_SINCE_CXX20 + friend bool __equal_unaligned(__bit_iterator<_Dp, _IC1>, + __bit_iterator<_Dp, _IC1>, + __bit_iterator<_Dp, _IC2>); + template + _LIBCPP_CONSTEXPR_SINCE_CXX20 + friend bool equal(__bit_iterator<_Dp, _IC1>, + __bit_iterator<_Dp, _IC1>, + __bit_iterator<_Dp, _IC2>); + template + _LIBCPP_CONSTEXPR_SINCE_CXX20 + friend __bit_iterator<_Dp, _IC> __find_bool_true(__bit_iterator<_Dp, _IC>, typename _Dp::size_type); + template + _LIBCPP_CONSTEXPR_SINCE_CXX20 + friend __bit_iterator<_Dp, _IC> __find_bool_false(__bit_iterator<_Dp, _IC>, typename _Dp::size_type); template friend typename __bit_iterator<_Dp, _IC>::difference_type + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX23 __count_bool_true(__bit_iterator<_Dp, _IC>, typename _Dp::size_type); template friend typename __bit_iterator<_Dp, _IC>::difference_type __count_bool_false(__bit_iterator<_Dp, _IC>, typename _Dp::size_type); @@ -1277,4 +1360,4 @@ _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS -#endif // _LIBCPP___BIT_REFERENCE +#endif // _LIBCPP___BIT_REFERENCE diff --git a/third_party/libcxx/__bsd_locale_fallbacks.h b/third_party/libcxx/__bsd_locale_fallbacks.h deleted file mode 100644 index 69217accf..000000000 --- a/third_party/libcxx/__bsd_locale_fallbacks.h +++ /dev/null @@ -1,139 +0,0 @@ -// -*- C++ -*- -//===---------------------- __bsd_locale_fallbacks.h ----------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -// The BSDs have lots of *_l functions. This file provides reimplementations -// of those functions for non-BSD platforms. -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_BSD_LOCALE_FALLBACKS_DEFAULTS_H -#define _LIBCPP_BSD_LOCALE_FALLBACKS_DEFAULTS_H - -#include "third_party/libcxx/stdlib.h" -#include "libc/str/unicode.h" -#include "libc/str/locale.h" -#include "third_party/libcxx/memory" -#include "third_party/libcxx/__locale" - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -inline _LIBCPP_INLINE_VISIBILITY decltype(MB_CUR_MAX) - __libcpp_mb_cur_max_l(locale_t __l) { - __libcpp_locale_guard __current(__l); - return MB_CUR_MAX; -} - -inline _LIBCPP_INLINE_VISIBILITY wint_t __libcpp_btowc_l(int __c, - locale_t __l) { - __libcpp_locale_guard __current(__l); - return btowc(__c); -} - -inline _LIBCPP_INLINE_VISIBILITY int __libcpp_wctob_l(wint_t __c, - locale_t __l) { - __libcpp_locale_guard __current(__l); - return wctob(__c); -} - -inline _LIBCPP_INLINE_VISIBILITY size_t -__libcpp_wcsnrtombs_l(char* __dest, const wchar_t** __src, size_t __nwc, - size_t __len, mbstate_t* __ps, locale_t __l) { - __libcpp_locale_guard __current(__l); - return wcsnrtombs(__dest, __src, __nwc, __len, __ps); -} - -inline _LIBCPP_INLINE_VISIBILITY size_t __libcpp_wcrtomb_l(char* __s, - wchar_t __wc, - mbstate_t* __ps, - locale_t __l) { - __libcpp_locale_guard __current(__l); - return wcrtomb(__s, __wc, __ps); -} - -inline _LIBCPP_INLINE_VISIBILITY size_t -__libcpp_mbsnrtowcs_l(wchar_t* __dest, const char** __src, size_t __nms, - size_t __len, mbstate_t* __ps, locale_t __l) { - __libcpp_locale_guard __current(__l); - return mbsnrtowcs(__dest, __src, __nms, __len, __ps); -} - -inline _LIBCPP_INLINE_VISIBILITY size_t __libcpp_mbrtowc_l(wchar_t* __pwc, - const char* __s, - size_t __n, - mbstate_t* __ps, - locale_t __l) { - __libcpp_locale_guard __current(__l); - return mbrtowc(__pwc, __s, __n, __ps); -} - -inline _LIBCPP_INLINE_VISIBILITY int __libcpp_mbtowc_l(wchar_t* __pwc, - const char* __pmb, - size_t __max, - locale_t __l) { - __libcpp_locale_guard __current(__l); - return mbtowc(__pwc, __pmb, __max); -} - -inline _LIBCPP_INLINE_VISIBILITY size_t __libcpp_mbrlen_l(const char* __s, - size_t __n, - mbstate_t* __ps, - locale_t __l) { - __libcpp_locale_guard __current(__l); - return mbrlen(__s, __n, __ps); -} - -inline _LIBCPP_INLINE_VISIBILITY lconv* __libcpp_localeconv_l(locale_t __l) { - __libcpp_locale_guard __current(__l); - return localeconv(); -} - -inline _LIBCPP_INLINE_VISIBILITY size_t __libcpp_mbsrtowcs_l(wchar_t* __dest, - const char** __src, - size_t __len, - mbstate_t* __ps, - locale_t __l) { - __libcpp_locale_guard __current(__l); - return mbsrtowcs(__dest, __src, __len, __ps); -} - -inline int __libcpp_snprintf_l(char* __s, size_t __n, locale_t __l, - const char* __format, ...) { - va_list __va; - va_start(__va, __format); - __libcpp_locale_guard __current(__l); - int __res = vsnprintf(__s, __n, __format, __va); - va_end(__va); - return __res; -} - -inline int __libcpp_asprintf_l(char** __s, locale_t __l, const char* __format, - ...) { - va_list __va; - va_start(__va, __format); - __libcpp_locale_guard __current(__l); - int __res = vasprintf(__s, __format, __va); - va_end(__va); - return __res; -} - -inline int __libcpp_sscanf_l(const char* __s, locale_t __l, - const char* __format, ...) { - va_list __va; - va_start(__va, __format); - __libcpp_locale_guard __current(__l); - int __res = vsscanf(__s, __format, __va); - va_end(__va); - return __res; -} - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_BSD_LOCALE_FALLBACKS_DEFAULTS_H diff --git a/third_party/libcxx/__charconv/chars_format.h b/third_party/libcxx/__charconv/chars_format.h new file mode 100644 index 000000000..0e781c047 --- /dev/null +++ b/third_party/libcxx/__charconv/chars_format.h @@ -0,0 +1,64 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CHARCONV_CHARS_FORMAT_H +#define _LIBCPP___CHARCONV_CHARS_FORMAT_H + +#include <__config> +#include <__utility/to_underlying.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 17 + +enum class _LIBCPP_ENUM_VIS chars_format { scientific = 0x1, fixed = 0x2, hex = 0x4, general = fixed | scientific }; + +inline _LIBCPP_HIDE_FROM_ABI constexpr chars_format operator~(chars_format __x) { + return chars_format(~std::__to_underlying(__x)); +} + +inline _LIBCPP_HIDE_FROM_ABI constexpr chars_format operator&(chars_format __x, chars_format __y) { + return chars_format(std::__to_underlying(__x) & std::__to_underlying(__y)); +} + +inline _LIBCPP_HIDE_FROM_ABI constexpr chars_format operator|(chars_format __x, chars_format __y) { + return chars_format(std::__to_underlying(__x) | std::__to_underlying(__y)); +} + +inline _LIBCPP_HIDE_FROM_ABI constexpr chars_format operator^(chars_format __x, chars_format __y) { + return chars_format(std::__to_underlying(__x) ^ std::__to_underlying(__y)); +} + +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 chars_format& +operator&=(chars_format& __x, chars_format __y) { + __x = __x & __y; + return __x; +} + +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 chars_format& +operator|=(chars_format& __x, chars_format __y) { + __x = __x | __y; + return __x; +} + +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 chars_format& +operator^=(chars_format& __x, chars_format __y) { + __x = __x ^ __y; + return __x; +} + +#endif // _LIBCPP_STD_VER >= 17 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___CHARCONV_CHARS_FORMAT_H diff --git a/third_party/libcxx/__charconv/from_chars_integral.h b/third_party/libcxx/__charconv/from_chars_integral.h new file mode 100644 index 000000000..990aa2174 --- /dev/null +++ b/third_party/libcxx/__charconv/from_chars_integral.h @@ -0,0 +1,239 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CHARCONV_FROM_CHARS_INTEGRAL_H +#define _LIBCPP___CHARCONV_FROM_CHARS_INTEGRAL_H + +#include <__algorithm/copy_n.h> +#include <__charconv/from_chars_result.h> +#include <__charconv/traits.h> +#include <__config> +#include <__memory/addressof.h> +#include <__system_error/errc.h> +#include <__type_traits/enable_if.h> +#include <__type_traits/integral_constant.h> +#include <__type_traits/is_integral.h> +#include <__type_traits/is_unsigned.h> +#include <__type_traits/make_unsigned.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 17 + +from_chars_result from_chars(const char*, const char*, bool, int = 10) = delete; + +template +inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI from_chars_result +__sign_combinator(_It __first, _It __last, _Tp& __value, _Fn __f, _Ts... __args) { + using __tl = numeric_limits<_Tp>; + decltype(std::__to_unsigned_like(__value)) __x; + + bool __neg = (__first != __last && *__first == '-'); + auto __r = __f(__neg ? __first + 1 : __first, __last, __x, __args...); + switch (__r.ec) { + case errc::invalid_argument: + return {__first, __r.ec}; + case errc::result_out_of_range: + return __r; + default: + break; + } + + if (__neg) { + if (__x <= std::__complement(std::__to_unsigned_like(__tl::min()))) { + __x = std::__complement(__x); + std::copy_n(std::addressof(__x), 1, std::addressof(__value)); + return __r; + } + } else { + if (__x <= std::__to_unsigned_like(__tl::max())) { + __value = __x; + return __r; + } + } + + return {__r.ptr, errc::result_out_of_range}; +} + +template +inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI bool __in_pattern(_Tp __c) { + return '0' <= __c && __c <= '9'; +} + +struct _LIBCPP_HIDDEN __in_pattern_result { + bool __ok; + int __val; + + explicit _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI operator bool() const { return __ok; } +}; + +template +inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI __in_pattern_result __in_pattern(_Tp __c, int __base) { + if (__base <= 10) + return {'0' <= __c && __c < '0' + __base, __c - '0'}; + else if (std::__in_pattern(__c)) + return {true, __c - '0'}; + else if ('a' <= __c && __c < 'a' + __base - 10) + return {true, __c - 'a' + 10}; + else + return {'A' <= __c && __c < 'A' + __base - 10, __c - 'A' + 10}; +} + +template +inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI from_chars_result +__subject_seq_combinator(_It __first, _It __last, _Tp& __value, _Fn __f, _Ts... __args) { + auto __find_non_zero = [](_It __firstit, _It __lastit) { + for (; __firstit != __lastit; ++__firstit) + if (*__firstit != '0') + break; + return __firstit; + }; + + auto __p = __find_non_zero(__first, __last); + if (__p == __last || !std::__in_pattern(*__p, __args...)) { + if (__p == __first) + return {__first, errc::invalid_argument}; + else { + __value = 0; + return {__p, {}}; + } + } + + auto __r = __f(__p, __last, __value, __args...); + if (__r.ec == errc::result_out_of_range) { + for (; __r.ptr != __last; ++__r.ptr) { + if (!std::__in_pattern(*__r.ptr, __args...)) + break; + } + } + + return __r; +} + +template ::value, int>::type = 0> +inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI from_chars_result +__from_chars_atoi(const char* __first, const char* __last, _Tp& __value) { + using __tx = __itoa::__traits<_Tp>; + using __output_type = typename __tx::type; + + return std::__subject_seq_combinator( + __first, __last, __value, [](const char* __f, const char* __l, _Tp& __val) -> from_chars_result { + __output_type __a, __b; + auto __p = __tx::__read(__f, __l, __a, __b); + if (__p == __l || !std::__in_pattern(*__p)) { + __output_type __m = numeric_limits<_Tp>::max(); + if (__m >= __a && __m - __a >= __b) { + __val = __a + __b; + return {__p, {}}; + } + } + return {__p, errc::result_out_of_range}; + }); +} + +template ::value, int>::type = 0> +inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI from_chars_result +__from_chars_atoi(const char* __first, const char* __last, _Tp& __value) { + using __t = decltype(std::__to_unsigned_like(__value)); + return std::__sign_combinator(__first, __last, __value, __from_chars_atoi<__t>); +} + +/* +// Code used to generate __from_chars_log2f_lut. +#include +#include +#include + +int main() { + for (int i = 2; i <= 36; ++i) + std::cout << std::format("{},\n", log2f(i)); +} +*/ +/// log2f table for bases [2, 36]. +inline constexpr float __from_chars_log2f_lut[35] = { + 1, 1.5849625, 2, 2.321928, 2.5849626, 2.807355, 3, 3.169925, 3.321928, + 3.4594316, 3.5849626, 3.7004397, 3.807355, 3.9068906, 4, 4.087463, 4.169925, 4.2479277, + 4.321928, 4.3923173, 4.4594316, 4.523562, 4.5849624, 4.643856, 4.70044, 4.7548876, 4.807355, + 4.857981, 4.9068904, 4.9541965, 5, 5.044394, 5.087463, 5.129283, 5.169925}; + +template ::value, int>::type = 0> +inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI from_chars_result +__from_chars_integral(const char* __first, const char* __last, _Tp& __value, int __base) { + if (__base == 10) + return std::__from_chars_atoi(__first, __last, __value); + + return std::__subject_seq_combinator( + __first, + __last, + __value, + [](const char* __p, const char* __lastp, _Tp& __val, int __b) -> from_chars_result { + using __tl = numeric_limits<_Tp>; + // __base is always between 2 and 36 inclusive. + auto __digits = __tl::digits / __from_chars_log2f_lut[__b - 2]; + _Tp __x = __in_pattern(*__p++, __b).__val, __y = 0; + + for (int __i = 1; __p != __lastp; ++__i, ++__p) { + if (auto __c = __in_pattern(*__p, __b)) { + if (__i < __digits - 1) + __x = __x * __b + __c.__val; + else { + if (!__itoa::__mul_overflowed(__x, __b, __x)) + ++__p; + __y = __c.__val; + break; + } + } else + break; + } + + if (__p == __lastp || !__in_pattern(*__p, __b)) { + if (__tl::max() - __x >= __y) { + __val = __x + __y; + return {__p, {}}; + } + } + return {__p, errc::result_out_of_range}; + }, + __base); +} + +template ::value, int>::type = 0> +inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI from_chars_result +__from_chars_integral(const char* __first, const char* __last, _Tp& __value, int __base) { + using __t = decltype(std::__to_unsigned_like(__value)); + return std::__sign_combinator(__first, __last, __value, __from_chars_integral<__t>, __base); +} + +template ::value, int>::type = 0> +inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI from_chars_result +from_chars(const char* __first, const char* __last, _Tp& __value) { + return std::__from_chars_atoi(__first, __last, __value); +} + +template ::value, int>::type = 0> +inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI from_chars_result +from_chars(const char* __first, const char* __last, _Tp& __value, int __base) { + _LIBCPP_ASSERT(2 <= __base && __base <= 36, "base not in [2, 36]"); + return std::__from_chars_integral(__first, __last, __value, __base); +} +#endif // _LIBCPP_STD_VER >= 17 + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP___CHARCONV_FROM_CHARS_INTEGRAL_H diff --git a/third_party/libcxx/__charconv/from_chars_result.h b/third_party/libcxx/__charconv/from_chars_result.h new file mode 100644 index 000000000..7eeb9ec81 --- /dev/null +++ b/third_party/libcxx/__charconv/from_chars_result.h @@ -0,0 +1,36 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CHARCONV_FROM_CHARS_RESULT_H +#define _LIBCPP___CHARCONV_FROM_CHARS_RESULT_H + +#include <__config> +#include <__system_error/errc.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 17 + +struct _LIBCPP_TYPE_VIS from_chars_result { + const char* ptr; + errc ec; +# if _LIBCPP_STD_VER >= 20 + _LIBCPP_HIDE_FROM_ABI friend bool operator==(const from_chars_result&, const from_chars_result&) = default; +# endif +}; + +#endif // _LIBCPP_STD_VER >= 17 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___CHARCONV_FROM_CHARS_RESULT_H diff --git a/third_party/libcxx/__charconv/tables.h b/third_party/libcxx/__charconv/tables.h new file mode 100644 index 000000000..6b93536b8 --- /dev/null +++ b/third_party/libcxx/__charconv/tables.h @@ -0,0 +1,163 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CHARCONV_TABLES +#define _LIBCPP___CHARCONV_TABLES + +#include <__config> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 17 + +namespace __itoa { + +inline constexpr char __base_2_lut[64] = { + '0', '0', '0', '0', '0', '0', '0', '1', '0', '0', '1', '0', '0', '0', '1', '1', '0', '1', '0', '0', '0', '1', + '0', '1', '0', '1', '1', '0', '0', '1', '1', '1', '1', '0', '0', '0', '1', '0', '0', '1', '1', '0', '1', '0', + '1', '0', '1', '1', '1', '1', '0', '0', '1', '1', '0', '1', '1', '1', '1', '0', '1', '1', '1', '1'}; + +inline constexpr char __base_8_lut[128] = { + '0', '0', '0', '1', '0', '2', '0', '3', '0', '4', '0', '5', '0', '6', '0', '7', '1', '0', '1', '1', '1', '2', + '1', '3', '1', '4', '1', '5', '1', '6', '1', '7', '2', '0', '2', '1', '2', '2', '2', '3', '2', '4', '2', '5', + '2', '6', '2', '7', '3', '0', '3', '1', '3', '2', '3', '3', '3', '4', '3', '5', '3', '6', '3', '7', '4', '0', + '4', '1', '4', '2', '4', '3', '4', '4', '4', '5', '4', '6', '4', '7', '5', '0', '5', '1', '5', '2', '5', '3', + '5', '4', '5', '5', '5', '6', '5', '7', '6', '0', '6', '1', '6', '2', '6', '3', '6', '4', '6', '5', '6', '6', + '6', '7', '7', '0', '7', '1', '7', '2', '7', '3', '7', '4', '7', '5', '7', '6', '7', '7'}; + +inline constexpr char __base_16_lut[512] = { + '0', '0', '0', '1', '0', '2', '0', '3', '0', '4', '0', '5', '0', '6', '0', '7', '0', '8', '0', '9', '0', 'a', '0', + 'b', '0', 'c', '0', 'd', '0', 'e', '0', 'f', '1', '0', '1', '1', '1', '2', '1', '3', '1', '4', '1', '5', '1', '6', + '1', '7', '1', '8', '1', '9', '1', 'a', '1', 'b', '1', 'c', '1', 'd', '1', 'e', '1', 'f', '2', '0', '2', '1', '2', + '2', '2', '3', '2', '4', '2', '5', '2', '6', '2', '7', '2', '8', '2', '9', '2', 'a', '2', 'b', '2', 'c', '2', 'd', + '2', 'e', '2', 'f', '3', '0', '3', '1', '3', '2', '3', '3', '3', '4', '3', '5', '3', '6', '3', '7', '3', '8', '3', + '9', '3', 'a', '3', 'b', '3', 'c', '3', 'd', '3', 'e', '3', 'f', '4', '0', '4', '1', '4', '2', '4', '3', '4', '4', + '4', '5', '4', '6', '4', '7', '4', '8', '4', '9', '4', 'a', '4', 'b', '4', 'c', '4', 'd', '4', 'e', '4', 'f', '5', + '0', '5', '1', '5', '2', '5', '3', '5', '4', '5', '5', '5', '6', '5', '7', '5', '8', '5', '9', '5', 'a', '5', 'b', + '5', 'c', '5', 'd', '5', 'e', '5', 'f', '6', '0', '6', '1', '6', '2', '6', '3', '6', '4', '6', '5', '6', '6', '6', + '7', '6', '8', '6', '9', '6', 'a', '6', 'b', '6', 'c', '6', 'd', '6', 'e', '6', 'f', '7', '0', '7', '1', '7', '2', + '7', '3', '7', '4', '7', '5', '7', '6', '7', '7', '7', '8', '7', '9', '7', 'a', '7', 'b', '7', 'c', '7', 'd', '7', + 'e', '7', 'f', '8', '0', '8', '1', '8', '2', '8', '3', '8', '4', '8', '5', '8', '6', '8', '7', '8', '8', '8', '9', + '8', 'a', '8', 'b', '8', 'c', '8', 'd', '8', 'e', '8', 'f', '9', '0', '9', '1', '9', '2', '9', '3', '9', '4', '9', + '5', '9', '6', '9', '7', '9', '8', '9', '9', '9', 'a', '9', 'b', '9', 'c', '9', 'd', '9', 'e', '9', 'f', 'a', '0', + 'a', '1', 'a', '2', 'a', '3', 'a', '4', 'a', '5', 'a', '6', 'a', '7', 'a', '8', 'a', '9', 'a', 'a', 'a', 'b', 'a', + 'c', 'a', 'd', 'a', 'e', 'a', 'f', 'b', '0', 'b', '1', 'b', '2', 'b', '3', 'b', '4', 'b', '5', 'b', '6', 'b', '7', + 'b', '8', 'b', '9', 'b', 'a', 'b', 'b', 'b', 'c', 'b', 'd', 'b', 'e', 'b', 'f', 'c', '0', 'c', '1', 'c', '2', 'c', + '3', 'c', '4', 'c', '5', 'c', '6', 'c', '7', 'c', '8', 'c', '9', 'c', 'a', 'c', 'b', 'c', 'c', 'c', 'd', 'c', 'e', + 'c', 'f', 'd', '0', 'd', '1', 'd', '2', 'd', '3', 'd', '4', 'd', '5', 'd', '6', 'd', '7', 'd', '8', 'd', '9', 'd', + 'a', 'd', 'b', 'd', 'c', 'd', 'd', 'd', 'e', 'd', 'f', 'e', '0', 'e', '1', 'e', '2', 'e', '3', 'e', '4', 'e', '5', + 'e', '6', 'e', '7', 'e', '8', 'e', '9', 'e', 'a', 'e', 'b', 'e', 'c', 'e', 'd', 'e', 'e', 'e', 'f', 'f', '0', 'f', + '1', 'f', '2', 'f', '3', 'f', '4', 'f', '5', 'f', '6', 'f', '7', 'f', '8', 'f', '9', 'f', 'a', 'f', 'b', 'f', 'c', + 'f', 'd', 'f', 'e', 'f', 'f'}; + +inline constexpr uint32_t __pow10_32[10] = { + UINT32_C(0), + UINT32_C(10), + UINT32_C(100), + UINT32_C(1000), + UINT32_C(10000), + UINT32_C(100000), + UINT32_C(1000000), + UINT32_C(10000000), + UINT32_C(100000000), + UINT32_C(1000000000)}; + +inline constexpr uint64_t __pow10_64[20] = { + UINT64_C(0), + UINT64_C(10), + UINT64_C(100), + UINT64_C(1000), + UINT64_C(10000), + UINT64_C(100000), + UINT64_C(1000000), + UINT64_C(10000000), + UINT64_C(100000000), + UINT64_C(1000000000), + UINT64_C(10000000000), + UINT64_C(100000000000), + UINT64_C(1000000000000), + UINT64_C(10000000000000), + UINT64_C(100000000000000), + UINT64_C(1000000000000000), + UINT64_C(10000000000000000), + UINT64_C(100000000000000000), + UINT64_C(1000000000000000000), + UINT64_C(10000000000000000000)}; + +# ifndef _LIBCPP_HAS_NO_INT128 +inline constexpr int __pow10_128_offset = 0; +inline constexpr __uint128_t __pow10_128[40] = { + UINT64_C(0), + UINT64_C(10), + UINT64_C(100), + UINT64_C(1000), + UINT64_C(10000), + UINT64_C(100000), + UINT64_C(1000000), + UINT64_C(10000000), + UINT64_C(100000000), + UINT64_C(1000000000), + UINT64_C(10000000000), + UINT64_C(100000000000), + UINT64_C(1000000000000), + UINT64_C(10000000000000), + UINT64_C(100000000000000), + UINT64_C(1000000000000000), + UINT64_C(10000000000000000), + UINT64_C(100000000000000000), + UINT64_C(1000000000000000000), + UINT64_C(10000000000000000000), + __uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(10), + __uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(100), + __uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(1000), + __uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(10000), + __uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(100000), + __uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(1000000), + __uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(10000000), + __uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(100000000), + __uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(1000000000), + __uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(10000000000), + __uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(100000000000), + __uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(1000000000000), + __uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(10000000000000), + __uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(100000000000000), + __uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(1000000000000000), + __uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(10000000000000000), + __uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(100000000000000000), + __uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(1000000000000000000), + __uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(10000000000000000000), + (__uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(10000000000000000000)) * 10}; +# endif + +inline constexpr char __digits_base_10[200] = { + // clang-format off + '0', '0', '0', '1', '0', '2', '0', '3', '0', '4', '0', '5', '0', '6', '0', '7', '0', '8', '0', '9', + '1', '0', '1', '1', '1', '2', '1', '3', '1', '4', '1', '5', '1', '6', '1', '7', '1', '8', '1', '9', + '2', '0', '2', '1', '2', '2', '2', '3', '2', '4', '2', '5', '2', '6', '2', '7', '2', '8', '2', '9', + '3', '0', '3', '1', '3', '2', '3', '3', '3', '4', '3', '5', '3', '6', '3', '7', '3', '8', '3', '9', + '4', '0', '4', '1', '4', '2', '4', '3', '4', '4', '4', '5', '4', '6', '4', '7', '4', '8', '4', '9', + '5', '0', '5', '1', '5', '2', '5', '3', '5', '4', '5', '5', '5', '6', '5', '7', '5', '8', '5', '9', + '6', '0', '6', '1', '6', '2', '6', '3', '6', '4', '6', '5', '6', '6', '6', '7', '6', '8', '6', '9', + '7', '0', '7', '1', '7', '2', '7', '3', '7', '4', '7', '5', '7', '6', '7', '7', '7', '8', '7', '9', + '8', '0', '8', '1', '8', '2', '8', '3', '8', '4', '8', '5', '8', '6', '8', '7', '8', '8', '8', '9', + '9', '0', '9', '1', '9', '2', '9', '3', '9', '4', '9', '5', '9', '6', '9', '7', '9', '8', '9', '9'}; +// clang-format on + +} // namespace __itoa + +#endif // _LIBCPP_STD_VER >= 17 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___CHARCONV_TABLES diff --git a/third_party/libcxx/__charconv/to_chars.h b/third_party/libcxx/__charconv/to_chars.h new file mode 100644 index 000000000..8ef09af73 --- /dev/null +++ b/third_party/libcxx/__charconv/to_chars.h @@ -0,0 +1,25 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CHARCONV_TO_CHARS +#define _LIBCPP___CHARCONV_TO_CHARS + +#include <__charconv/to_chars_floating_point.h> +#include <__charconv/to_chars_integral.h> +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___CHARCONV_TO_CHARS diff --git a/third_party/libcxx/__charconv/to_chars_base_10.h b/third_party/libcxx/__charconv/to_chars_base_10.h new file mode 100644 index 000000000..028ff3352 --- /dev/null +++ b/third_party/libcxx/__charconv/to_chars_base_10.h @@ -0,0 +1,187 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CHARCONV_TO_CHARS_BASE_10_H +#define _LIBCPP___CHARCONV_TO_CHARS_BASE_10_H + +#include <__algorithm/copy_n.h> +#include <__charconv/tables.h> +#include <__config> +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 17 + +namespace __itoa { + +_LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI inline char* __append1(char* __first, uint32_t __value) noexcept { + *__first = '0' + static_cast(__value); + return __first + 1; +} + +_LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI inline char* __append2(char* __first, uint32_t __value) noexcept { + return std::copy_n(&__digits_base_10[__value * 2], 2, __first); +} + +_LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI inline char* __append3(char* __first, uint32_t __value) noexcept { + return __itoa::__append2(__itoa::__append1(__first, __value / 100), __value % 100); +} + +_LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI inline char* __append4(char* __first, uint32_t __value) noexcept { + return __itoa::__append2(__itoa::__append2(__first, __value / 100), __value % 100); +} + +_LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI inline char* __append5(char* __first, uint32_t __value) noexcept { + return __itoa::__append4(__itoa::__append1(__first, __value / 10000), __value % 10000); +} + +_LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI inline char* __append6(char* __first, uint32_t __value) noexcept { + return __itoa::__append4(__itoa::__append2(__first, __value / 10000), __value % 10000); +} + +_LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI inline char* __append7(char* __first, uint32_t __value) noexcept { + return __itoa::__append6(__itoa::__append1(__first, __value / 1000000), __value % 1000000); +} + +_LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI inline char* __append8(char* __first, uint32_t __value) noexcept { + return __itoa::__append6(__itoa::__append2(__first, __value / 1000000), __value % 1000000); +} + +_LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI inline char* __append9(char* __first, uint32_t __value) noexcept { + return __itoa::__append8(__itoa::__append1(__first, __value / 100000000), __value % 100000000); +} + +template +_LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI char* __append10(char* __first, _Tp __value) noexcept { + return __itoa::__append8(__itoa::__append2(__first, static_cast(__value / 100000000)), + static_cast(__value % 100000000)); +} + +_LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI inline char* +__base_10_u32(char* __first, uint32_t __value) noexcept { + if (__value < 1000000) { + if (__value < 10000) { + if (__value < 100) { + // 0 <= __value < 100 + if (__value < 10) + return __itoa::__append1(__first, __value); + return __itoa::__append2(__first, __value); + } + // 100 <= __value < 10'000 + if (__value < 1000) + return __itoa::__append3(__first, __value); + return __itoa::__append4(__first, __value); + } + + // 10'000 <= __value < 1'000'000 + if (__value < 100000) + return __itoa::__append5(__first, __value); + return __itoa::__append6(__first, __value); + } + + // __value => 1'000'000 + if (__value < 100000000) { + // 1'000'000 <= __value < 100'000'000 + if (__value < 10000000) + return __itoa::__append7(__first, __value); + return __itoa::__append8(__first, __value); + } + + // 100'000'000 <= __value < max + if (__value < 1000000000) + return __itoa::__append9(__first, __value); + return __itoa::__append10(__first, __value); +} + +_LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI inline char* +__base_10_u64(char* __buffer, uint64_t __value) noexcept { + if (__value <= UINT32_MAX) + return __itoa::__base_10_u32(__buffer, static_cast(__value)); + + // Numbers in the range UINT32_MAX <= val < 10'000'000'000 always contain 10 + // digits and are outputted after this if statement. + if (__value >= 10000000000) { + // This function properly deterimines the first non-zero leading digit. + __buffer = __itoa::__base_10_u32(__buffer, static_cast(__value / 10000000000)); + __value %= 10000000000; + } + return __itoa::__append10(__buffer, __value); +} + +# ifndef _LIBCPP_HAS_NO_INT128 +/// \returns 10^\a exp +/// +/// \pre \a exp [19, 39] +/// +/// \note The lookup table contains a partial set of exponents limiting the +/// range that can be used. However the range is sufficient for +/// \ref __base_10_u128. +_LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI inline __uint128_t __pow_10(int __exp) noexcept { + _LIBCPP_ASSERT(__exp >= __pow10_128_offset, "Index out of bounds"); + return __pow10_128[__exp - __pow10_128_offset]; +} + +_LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI inline char* +__base_10_u128(char* __buffer, __uint128_t __value) noexcept { + _LIBCPP_ASSERT( + __value > numeric_limits::max(), "The optimizations for this algorithm fail when this isn't true."); + + // Unlike the 64 to 32 bit case the 128 bit case the "upper half" can't be + // stored in the "lower half". Instead we first need to handle the top most + // digits separately. + // + // Maximum unsigned values + // 64 bit 18'446'744'073'709'551'615 (20 digits) + // 128 bit 340'282'366'920'938'463'463'374'607'431'768'211'455 (39 digits) + // step 1 ^ ([0-1] digits) + // step 2 ^^^^^^^^^^^^^^^^^^^^^^^^^ ([0-19] digits) + // step 3 ^^^^^^^^^^^^^^^^^^^^^^^^^ (19 digits) + if (__value >= __itoa::__pow_10(38)) { + // step 1 + __buffer = __itoa::__append1(__buffer, static_cast(__value / __itoa::__pow_10(38))); + __value %= __itoa::__pow_10(38); + + // step 2 always 19 digits. + // They are handled here since leading zeros need to be appended to the buffer, + __buffer = __itoa::__append9(__buffer, static_cast(__value / __itoa::__pow_10(29))); + __value %= __itoa::__pow_10(29); + __buffer = __itoa::__append10(__buffer, static_cast(__value / __itoa::__pow_10(19))); + __value %= __itoa::__pow_10(19); + } else { + // step 2 + // This version needs to determine the position of the leading non-zero digit. + __buffer = __base_10_u64(__buffer, static_cast(__value / __itoa::__pow_10(19))); + __value %= __itoa::__pow_10(19); + } + + // Step 3 + __buffer = __itoa::__append9(__buffer, static_cast(__value / 10000000000)); + __buffer = __itoa::__append10(__buffer, static_cast(__value % 10000000000)); + + return __buffer; +} +# endif +} // namespace __itoa + +#endif // _LIBCPP_STD_VER >= 17 + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP___CHARCONV_TO_CHARS_BASE_10_H diff --git a/third_party/libcxx/__charconv/to_chars_floating_point.h b/third_party/libcxx/__charconv/to_chars_floating_point.h new file mode 100644 index 000000000..6ede36e88 --- /dev/null +++ b/third_party/libcxx/__charconv/to_chars_floating_point.h @@ -0,0 +1,56 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CHARCONV_TO_CHARS_FLOATING_POINT_H +#define _LIBCPP___CHARCONV_TO_CHARS_FLOATING_POINT_H + +#include <__availability> +#include <__charconv/chars_format.h> +#include <__charconv/to_chars_result.h> +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 17 + +_LIBCPP_AVAILABILITY_TO_CHARS_FLOATING_POINT _LIBCPP_FUNC_VIS to_chars_result +to_chars(char* __first, char* __last, float __value); + +_LIBCPP_AVAILABILITY_TO_CHARS_FLOATING_POINT _LIBCPP_FUNC_VIS to_chars_result +to_chars(char* __first, char* __last, double __value); + +_LIBCPP_AVAILABILITY_TO_CHARS_FLOATING_POINT _LIBCPP_FUNC_VIS to_chars_result +to_chars(char* __first, char* __last, long double __value); + +_LIBCPP_AVAILABILITY_TO_CHARS_FLOATING_POINT _LIBCPP_FUNC_VIS to_chars_result +to_chars(char* __first, char* __last, float __value, chars_format __fmt); + +_LIBCPP_AVAILABILITY_TO_CHARS_FLOATING_POINT _LIBCPP_FUNC_VIS to_chars_result +to_chars(char* __first, char* __last, double __value, chars_format __fmt); + +_LIBCPP_AVAILABILITY_TO_CHARS_FLOATING_POINT _LIBCPP_FUNC_VIS to_chars_result +to_chars(char* __first, char* __last, long double __value, chars_format __fmt); + +_LIBCPP_AVAILABILITY_TO_CHARS_FLOATING_POINT _LIBCPP_FUNC_VIS to_chars_result +to_chars(char* __first, char* __last, float __value, chars_format __fmt, int __precision); + +_LIBCPP_AVAILABILITY_TO_CHARS_FLOATING_POINT _LIBCPP_FUNC_VIS to_chars_result +to_chars(char* __first, char* __last, double __value, chars_format __fmt, int __precision); + +_LIBCPP_AVAILABILITY_TO_CHARS_FLOATING_POINT _LIBCPP_FUNC_VIS to_chars_result +to_chars(char* __first, char* __last, long double __value, chars_format __fmt, int __precision); +#endif // _LIBCPP_STD_VER >= 17 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___CHARCONV_TO_CHARS_FLOATING_POINT_H diff --git a/third_party/libcxx/__charconv/to_chars_integral.h b/third_party/libcxx/__charconv/to_chars_integral.h new file mode 100644 index 000000000..6c726c088 --- /dev/null +++ b/third_party/libcxx/__charconv/to_chars_integral.h @@ -0,0 +1,326 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CHARCONV_TO_CHARS_INTEGRAL_H +#define _LIBCPP___CHARCONV_TO_CHARS_INTEGRAL_H + +#include <__algorithm/copy_n.h> +#include <__bit/countl.h> +#include <__charconv/tables.h> +#include <__charconv/to_chars_base_10.h> +#include <__charconv/to_chars_result.h> +#include <__charconv/traits.h> +#include <__config> +#include <__system_error/errc.h> +#include <__type_traits/enable_if.h> +#include <__type_traits/integral_constant.h> +#include <__type_traits/is_same.h> +#include <__type_traits/make_32_64_or_128_bit.h> +#include <__type_traits/make_unsigned.h> +#include <__utility/unreachable.h> +#include +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 17 + +to_chars_result to_chars(char*, char*, bool, int = 10) = delete; + +template +inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI to_chars_result +__to_chars_itoa(char* __first, char* __last, _Tp __value, false_type); + +template +inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI to_chars_result +__to_chars_itoa(char* __first, char* __last, _Tp __value, true_type) { + auto __x = std::__to_unsigned_like(__value); + if (__value < 0 && __first != __last) { + *__first++ = '-'; + __x = std::__complement(__x); + } + + return std::__to_chars_itoa(__first, __last, __x, false_type()); +} + +template +inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI to_chars_result +__to_chars_itoa(char* __first, char* __last, _Tp __value, false_type) { + using __tx = __itoa::__traits<_Tp>; + auto __diff = __last - __first; + + if (__tx::digits <= __diff || __tx::__width(__value) <= __diff) + return {__tx::__convert(__first, __value), errc(0)}; + else + return {__last, errc::value_too_large}; +} + +# ifndef _LIBCPP_HAS_NO_INT128 +template <> +inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI to_chars_result +__to_chars_itoa(char* __first, char* __last, __uint128_t __value, false_type) { + // When the value fits in 64-bits use the 64-bit code path. This reduces + // the number of expensive calculations on 128-bit values. + // + // NOTE the 128-bit code path requires this optimization. + if (__value <= numeric_limits::max()) + return __to_chars_itoa(__first, __last, static_cast(__value), false_type()); + + using __tx = __itoa::__traits<__uint128_t>; + auto __diff = __last - __first; + + if (__tx::digits <= __diff || __tx::__width(__value) <= __diff) + return {__tx::__convert(__first, __value), errc(0)}; + else + return {__last, errc::value_too_large}; +} +# endif + +template +inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI to_chars_result +__to_chars_integral(char* __first, char* __last, _Tp __value, int __base, false_type); + +template +inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI to_chars_result +__to_chars_integral(char* __first, char* __last, _Tp __value, int __base, true_type) { + auto __x = std::__to_unsigned_like(__value); + if (__value < 0 && __first != __last) { + *__first++ = '-'; + __x = std::__complement(__x); + } + + return std::__to_chars_integral(__first, __last, __x, __base, false_type()); +} + +namespace __itoa { + +template +struct _LIBCPP_HIDDEN __integral; + +template <> +struct _LIBCPP_HIDDEN __integral<2> { + template + _LIBCPP_HIDE_FROM_ABI static constexpr int __width(_Tp __value) noexcept { + // If value == 0 still need one digit. If the value != this has no + // effect since the code scans for the most significant bit set. (Note + // that __libcpp_clz doesn't work for 0.) + return numeric_limits<_Tp>::digits - std::__libcpp_clz(__value | 1); + } + + template + _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI static to_chars_result + __to_chars(char* __first, char* __last, _Tp __value) { + ptrdiff_t __cap = __last - __first; + int __n = __width(__value); + if (__n > __cap) + return {__last, errc::value_too_large}; + + __last = __first + __n; + char* __p = __last; + const unsigned __divisor = 16; + while (__value > __divisor) { + unsigned __c = __value % __divisor; + __value /= __divisor; + __p -= 4; + std::copy_n(&__base_2_lut[4 * __c], 4, __p); + } + do { + unsigned __c = __value % 2; + __value /= 2; + *--__p = "01"[__c]; + } while (__value != 0); + return {__last, errc(0)}; + } +}; + +template <> +struct _LIBCPP_HIDDEN __integral<8> { + template + _LIBCPP_HIDE_FROM_ABI static constexpr int __width(_Tp __value) noexcept { + // If value == 0 still need one digit. If the value != this has no + // effect since the code scans for the most significat bit set. (Note + // that __libcpp_clz doesn't work for 0.) + return ((numeric_limits<_Tp>::digits - std::__libcpp_clz(__value | 1)) + 2) / 3; + } + + template + _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI static to_chars_result + __to_chars(char* __first, char* __last, _Tp __value) { + ptrdiff_t __cap = __last - __first; + int __n = __width(__value); + if (__n > __cap) + return {__last, errc::value_too_large}; + + __last = __first + __n; + char* __p = __last; + unsigned __divisor = 64; + while (__value > __divisor) { + unsigned __c = __value % __divisor; + __value /= __divisor; + __p -= 2; + std::copy_n(&__base_8_lut[2 * __c], 2, __p); + } + do { + unsigned __c = __value % 8; + __value /= 8; + *--__p = "01234567"[__c]; + } while (__value != 0); + return {__last, errc(0)}; + } +}; + +template <> +struct _LIBCPP_HIDDEN __integral<16> { + template + _LIBCPP_HIDE_FROM_ABI static constexpr int __width(_Tp __value) noexcept { + // If value == 0 still need one digit. If the value != this has no + // effect since the code scans for the most significat bit set. (Note + // that __libcpp_clz doesn't work for 0.) + return (numeric_limits<_Tp>::digits - std::__libcpp_clz(__value | 1) + 3) / 4; + } + + template + _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI static to_chars_result + __to_chars(char* __first, char* __last, _Tp __value) { + ptrdiff_t __cap = __last - __first; + int __n = __width(__value); + if (__n > __cap) + return {__last, errc::value_too_large}; + + __last = __first + __n; + char* __p = __last; + unsigned __divisor = 256; + while (__value > __divisor) { + unsigned __c = __value % __divisor; + __value /= __divisor; + __p -= 2; + std::copy_n(&__base_16_lut[2 * __c], 2, __p); + } + if (__first != __last) + do { + unsigned __c = __value % 16; + __value /= 16; + *--__p = "0123456789abcdef"[__c]; + } while (__value != 0); + return {__last, errc(0)}; + } +}; + +} // namespace __itoa + +template = sizeof(unsigned)), int>::type = 0> +_LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI int __to_chars_integral_width(_Tp __value) { + return __itoa::__integral<_Base>::__width(__value); +} + +template ::type = 0> +_LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI int __to_chars_integral_width(_Tp __value) { + return std::__to_chars_integral_width<_Base>(static_cast(__value)); +} + +template = sizeof(unsigned)), int>::type = 0> +_LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI to_chars_result +__to_chars_integral(char* __first, char* __last, _Tp __value) { + return __itoa::__integral<_Base>::__to_chars(__first, __last, __value); +} + +template ::type = 0> +_LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI to_chars_result +__to_chars_integral(char* __first, char* __last, _Tp __value) { + return std::__to_chars_integral<_Base>(__first, __last, static_cast(__value)); +} + +template +_LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI int __to_chars_integral_width(_Tp __value, unsigned __base) { + _LIBCPP_ASSERT(__value >= 0, "The function requires a non-negative value."); + + unsigned __base_2 = __base * __base; + unsigned __base_3 = __base_2 * __base; + unsigned __base_4 = __base_2 * __base_2; + + int __r = 0; + while (true) { + if (__value < __base) + return __r + 1; + if (__value < __base_2) + return __r + 2; + if (__value < __base_3) + return __r + 3; + if (__value < __base_4) + return __r + 4; + + __value /= __base_4; + __r += 4; + } + + __libcpp_unreachable(); +} + +template +inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI to_chars_result +__to_chars_integral(char* __first, char* __last, _Tp __value, int __base, false_type) { + if (__base == 10) [[likely]] + return std::__to_chars_itoa(__first, __last, __value, false_type()); + + switch (__base) { + case 2: + return std::__to_chars_integral<2>(__first, __last, __value); + case 8: + return std::__to_chars_integral<8>(__first, __last, __value); + case 16: + return std::__to_chars_integral<16>(__first, __last, __value); + } + + ptrdiff_t __cap = __last - __first; + int __n = std::__to_chars_integral_width(__value, __base); + if (__n > __cap) + return {__last, errc::value_too_large}; + + __last = __first + __n; + char* __p = __last; + do { + unsigned __c = __value % __base; + __value /= __base; + *--__p = "0123456789abcdefghijklmnopqrstuvwxyz"[__c]; + } while (__value != 0); + return {__last, errc(0)}; +} + +template ::value, int>::type = 0> +inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI to_chars_result +to_chars(char* __first, char* __last, _Tp __value) { + using _Type = __make_32_64_or_128_bit_t<_Tp>; + static_assert(!is_same<_Type, void>::value, "unsupported integral type used in to_chars"); + return std::__to_chars_itoa(__first, __last, static_cast<_Type>(__value), is_signed<_Tp>()); +} + +template ::value, int>::type = 0> +inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI to_chars_result +to_chars(char* __first, char* __last, _Tp __value, int __base) { + _LIBCPP_ASSERT(2 <= __base && __base <= 36, "base not in [2, 36]"); + + using _Type = __make_32_64_or_128_bit_t<_Tp>; + return std::__to_chars_integral(__first, __last, static_cast<_Type>(__value), __base, is_signed<_Tp>()); +} + +#endif // _LIBCPP_STD_VER >= 17 + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP___CHARCONV_TO_CHARS_INTEGRAL_H diff --git a/third_party/libcxx/__charconv/to_chars_result.h b/third_party/libcxx/__charconv/to_chars_result.h new file mode 100644 index 000000000..67221b398 --- /dev/null +++ b/third_party/libcxx/__charconv/to_chars_result.h @@ -0,0 +1,36 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CHARCONV_TO_CHARS_RESULT_H +#define _LIBCPP___CHARCONV_TO_CHARS_RESULT_H + +#include <__config> +#include <__system_error/errc.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 17 + +struct _LIBCPP_TYPE_VIS to_chars_result { + char* ptr; + errc ec; +# if _LIBCPP_STD_VER >= 20 + _LIBCPP_HIDE_FROM_ABI friend bool operator==(const to_chars_result&, const to_chars_result&) = default; +# endif +}; + +#endif // _LIBCPP_STD_VER >= 17 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___CHARCONV_TO_CHARS_RESULT_H diff --git a/third_party/libcxx/__charconv/traits.h b/third_party/libcxx/__charconv/traits.h new file mode 100644 index 000000000..505a0b1ac --- /dev/null +++ b/third_party/libcxx/__charconv/traits.h @@ -0,0 +1,199 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CHARCONV_TRAITS +#define _LIBCPP___CHARCONV_TRAITS + +#include <__bit/countl.h> +#include <__charconv/tables.h> +#include <__charconv/to_chars_base_10.h> +#include <__config> +#include <__type_traits/enable_if.h> +#include <__type_traits/is_unsigned.h> +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 17 + +namespace __itoa { + +template +struct _LIBCPP_HIDDEN __traits_base; + +template +struct _LIBCPP_HIDDEN __traits_base<_Tp, __enable_if_t> { + using type = uint32_t; + + /// The width estimation using a log10 algorithm. + /// + /// The algorithm is based on + /// http://graphics.stanford.edu/~seander/bithacks.html#IntegerLog10 + /// Instead of using IntegerLogBase2 it uses __libcpp_clz. Since that + /// function requires its input to have at least one bit set the value of + /// zero is set to one. This means the first element of the lookup table is + /// zero. + static _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI int __width(_Tp __v) { + auto __t = (32 - std::__libcpp_clz(static_cast(__v | 1))) * 1233 >> 12; + return __t - (__v < __itoa::__pow10_32[__t]) + 1; + } + + static _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI char* __convert(char* __p, _Tp __v) { + return __itoa::__base_10_u32(__p, __v); + } + + static _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI decltype(__pow10_32)& __pow() { + return __itoa::__pow10_32; + } +}; + +template +struct _LIBCPP_HIDDEN __traits_base<_Tp, __enable_if_t> { + using type = uint64_t; + + /// The width estimation using a log10 algorithm. + /// + /// The algorithm is based on + /// http://graphics.stanford.edu/~seander/bithacks.html#IntegerLog10 + /// Instead of using IntegerLogBase2 it uses __libcpp_clz. Since that + /// function requires its input to have at least one bit set the value of + /// zero is set to one. This means the first element of the lookup table is + /// zero. + static _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI int __width(_Tp __v) { + auto __t = (64 - std::__libcpp_clz(static_cast(__v | 1))) * 1233 >> 12; + return __t - (__v < __itoa::__pow10_64[__t]) + 1; + } + + static _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI char* __convert(char* __p, _Tp __v) { + return __itoa::__base_10_u64(__p, __v); + } + + static _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI decltype(__pow10_64)& __pow() { + return __itoa::__pow10_64; + } +}; + +# ifndef _LIBCPP_HAS_NO_INT128 +template +struct _LIBCPP_HIDDEN __traits_base<_Tp, __enable_if_t > { + using type = __uint128_t; + + /// The width estimation using a log10 algorithm. + /// + /// The algorithm is based on + /// http://graphics.stanford.edu/~seander/bithacks.html#IntegerLog10 + /// Instead of using IntegerLogBase2 it uses __libcpp_clz. Since that + /// function requires its input to have at least one bit set the value of + /// zero is set to one. This means the first element of the lookup table is + /// zero. + static _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI int __width(_Tp __v) { + _LIBCPP_ASSERT( + __v > numeric_limits::max(), "The optimizations for this algorithm fail when this isn't true."); + // There's always a bit set in the upper 64-bits. + auto __t = (128 - std::__libcpp_clz(static_cast(__v >> 64))) * 1233 >> 12; + _LIBCPP_ASSERT(__t >= __itoa::__pow10_128_offset, "Index out of bounds"); + // __t is adjusted since the lookup table misses the lower entries. + return __t - (__v < __itoa::__pow10_128[__t - __itoa::__pow10_128_offset]) + 1; + } + + static _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI char* __convert(char* __p, _Tp __v) { + return __itoa::__base_10_u128(__p, __v); + } + + // TODO FMT This pow function should get an index. + // By moving this to its own header it can be reused by the pow function in to_chars_base_10. + static _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI decltype(__pow10_128)& __pow() { + return __itoa::__pow10_128; + } +}; +# endif + +template +inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI bool +__mul_overflowed(unsigned char __a, _Tp __b, unsigned char& __r) { + auto __c = __a * __b; + __r = __c; + return __c > numeric_limits::max(); +} + +template +inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI bool +__mul_overflowed(unsigned short __a, _Tp __b, unsigned short& __r) { + auto __c = __a * __b; + __r = __c; + return __c > numeric_limits::max(); +} + +template +inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI bool __mul_overflowed(_Tp __a, _Tp __b, _Tp& __r) { + static_assert(is_unsigned<_Tp>::value, ""); + return __builtin_mul_overflow(__a, __b, &__r); +} + +template +inline _LIBCPP_HIDE_FROM_ABI bool _LIBCPP_CONSTEXPR_SINCE_CXX23 __mul_overflowed(_Tp __a, _Up __b, _Tp& __r) { + return __itoa::__mul_overflowed(__a, static_cast<_Tp>(__b), __r); +} + +template +struct _LIBCPP_HIDDEN __traits : __traits_base<_Tp> { + static constexpr int digits = numeric_limits<_Tp>::digits10 + 1; + using __traits_base<_Tp>::__pow; + using typename __traits_base<_Tp>::type; + + // precondition: at least one non-zero character available + static _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI char const* + __read(char const* __p, char const* __ep, type& __a, type& __b) { + type __cprod[digits]; + int __j = digits - 1; + int __i = digits; + do { + if (*__p < '0' || *__p > '9') + break; + __cprod[--__i] = *__p++ - '0'; + } while (__p != __ep && __i != 0); + + __a = __inner_product(__cprod + __i + 1, __cprod + __j, __pow() + 1, __cprod[__i]); + if (__itoa::__mul_overflowed(__cprod[__j], __pow()[__j - __i], __b)) + --__p; + return __p; + } + + template + static _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI _Up + __inner_product(_It1 __first1, _It1 __last1, _It2 __first2, _Up __init) { + for (; __first1 < __last1; ++__first1, ++__first2) + __init = __init + *__first1 * *__first2; + return __init; + } +}; + +} // namespace __itoa + +template +inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI _Tp __complement(_Tp __x) { + static_assert(is_unsigned<_Tp>::value, "cast to unsigned first"); + return _Tp(~__x + 1); +} + +#endif // _LIBCPP_STD_VER >= 17 + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP___CHARCONV_TRAITS diff --git a/third_party/libcxx/__chrono/calendar.h b/third_party/libcxx/__chrono/calendar.h new file mode 100644 index 000000000..94b5e315c --- /dev/null +++ b/third_party/libcxx/__chrono/calendar.h @@ -0,0 +1,44 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CHRONO_CALENDAR_H +#define _LIBCPP___CHRONO_CALENDAR_H + +#include <__chrono/duration.h> +#include <__chrono/time_point.h> +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace chrono +{ + +struct local_t {}; +template +using local_time = time_point; +using local_seconds = local_time; +using local_days = local_time; + +struct last_spec { explicit last_spec() = default; }; +inline constexpr last_spec last{}; + + +} // namespace chrono + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___CHRONO_CALENDAR_H diff --git a/third_party/libcxx/__chrono/concepts.h b/third_party/libcxx/__chrono/concepts.h new file mode 100644 index 000000000..61ec256b2 --- /dev/null +++ b/third_party/libcxx/__chrono/concepts.h @@ -0,0 +1,36 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CHRONO_CONCEPTS_H +#define _LIBCPP___CHRONO_CONCEPTS_H + +#include <__chrono/hh_mm_ss.h> +#include <__chrono/time_point.h> +#include <__config> +#include <__type_traits/is_specialization.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +template +concept __is_hh_mm_ss = __is_specialization_v<_Tp, chrono::hh_mm_ss>; + +template +concept __is_time_point = __is_specialization_v<_Tp, chrono::time_point>; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___CHRONO_CONCEPTS_H diff --git a/third_party/libcxx/__chrono/convert_to_timespec.h b/third_party/libcxx/__chrono/convert_to_timespec.h new file mode 100644 index 000000000..fab07f256 --- /dev/null +++ b/third_party/libcxx/__chrono/convert_to_timespec.h @@ -0,0 +1,56 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CHRONO_CONVERT_TO_TIMESPEC_H +#define _LIBCPP___CHRONO_CONVERT_TO_TIMESPEC_H + +#include <__chrono/duration.h> +#include <__config> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +// Convert a nanoseconds duration to the given TimeSpec type, which must have +// the same properties as std::timespec. +template +_LIBCPP_HIDE_FROM_ABI inline +_TimeSpec __convert_to_timespec(const chrono::nanoseconds& __ns) +{ + using namespace chrono; + seconds __s = duration_cast(__ns); + _TimeSpec __ts; + typedef decltype(__ts.tv_sec) __ts_sec; + const __ts_sec __ts_sec_max = numeric_limits<__ts_sec>::max(); + + if (__s.count() < __ts_sec_max) + { + __ts.tv_sec = static_cast<__ts_sec>(__s.count()); + __ts.tv_nsec = static_cast((__ns - __s).count()); + } + else + { + __ts.tv_sec = __ts_sec_max; + __ts.tv_nsec = 999999999; // (10^9 - 1) + } + + return __ts; +} + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP___CHRONO_CONVERT_TO_TIMESPEC_H diff --git a/third_party/libcxx/__chrono/convert_to_tm.h b/third_party/libcxx/__chrono/convert_to_tm.h new file mode 100644 index 000000000..f4dcddece --- /dev/null +++ b/third_party/libcxx/__chrono/convert_to_tm.h @@ -0,0 +1,174 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CHRONO_CONVERT_TO_TM_H +#define _LIBCPP___CHRONO_CONVERT_TO_TM_H + +#include <__chrono/calendar.h> +#include <__chrono/concepts.h> +#include <__chrono/day.h> +#include <__chrono/duration.h> +#include <__chrono/file_clock.h> +#include <__chrono/hh_mm_ss.h> +#include <__chrono/month.h> +#include <__chrono/month_weekday.h> +#include <__chrono/monthday.h> +#include <__chrono/statically_widen.h> +#include <__chrono/system_clock.h> +#include <__chrono/time_point.h> +#include <__chrono/weekday.h> +#include <__chrono/year.h> +#include <__chrono/year_month.h> +#include <__chrono/year_month_day.h> +#include <__chrono/year_month_weekday.h> +#include <__concepts/same_as.h> +#include <__config> +#include <__format/format_error.h> +#include <__memory/addressof.h> +#include +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +// Conerts a chrono date and weekday to a given _Tm type. +// +// This is an implementation detail for the function +// template +// _Tm __convert_to_tm(const _ChronoT& __value) +// +// This manually converts the two values to the proper type. It is possible to +// convert from sys_days to time_t and then to _Tm. But this leads to the Y2K +// bug when time_t is a 32-bit signed integer. Chrono considers years beyond +// the year 2038 valid, so instead do the transformation manually. +template + requires(same_as<_Date, chrono::year_month_day> || same_as<_Date, chrono::year_month_day_last>) +_LIBCPP_HIDE_FROM_ABI _Tm __convert_to_tm(const _Date& __date, chrono::weekday __weekday) { + _Tm __result = {}; +# ifdef __GLIBC__ + __result.tm_zone = "UTC"; +# endif + __result.tm_year = static_cast(__date.year()) - 1900; + __result.tm_mon = static_cast(__date.month()) - 1; + __result.tm_mday = static_cast(__date.day()); + __result.tm_wday = static_cast(__weekday.c_encoding()); + __result.tm_yday = + (static_cast(__date) - + static_cast(chrono::year_month_day{__date.year(), chrono::January, chrono::day{1}})) + .count(); + + return __result; +} + +template +_LIBCPP_HIDE_FROM_ABI _Tm __convert_to_tm(const chrono::sys_time<_Duration> __tp) { + chrono::sys_days __days = chrono::time_point_cast(__tp); + chrono::year_month_day __ymd{__days}; + + _Tm __result = std::__convert_to_tm<_Tm>(chrono::year_month_day{__ymd}, chrono::weekday{__days}); + + uint64_t __sec = + chrono::duration_cast(__tp - chrono::time_point_cast(__days)).count(); + __sec %= 24 * 3600; + __result.tm_hour = __sec / 3600; + __sec %= 3600; + __result.tm_min = __sec / 60; + __result.tm_sec = __sec % 60; + + return __result; +} + +// Convert a chrono (calendar) time point, or dururation to the given _Tm type, +// which must have the same properties as std::tm. +template +_LIBCPP_HIDE_FROM_ABI _Tm __convert_to_tm(const _ChronoT& __value) { + _Tm __result = {}; +# ifdef __GLIBC__ + __result.tm_zone = "UTC"; +# endif + + if constexpr (__is_time_point<_ChronoT>) { + if constexpr (same_as) + return std::__convert_to_tm<_Tm>(__value); + else if constexpr (same_as) + return std::__convert_to_tm<_Tm>(_ChronoT::clock::to_sys(__value)); + else if constexpr (same_as) + return std::__convert_to_tm<_Tm>(chrono::sys_time{__value.time_since_epoch()}); + else + static_assert(sizeof(_ChronoT) == 0, "TODO: Add the missing clock specialization"); + } else if constexpr (chrono::__is_duration<_ChronoT>::value) { + // [time.format]/6 + // ... However, if a flag refers to a "time of day" (e.g. %H, %I, %p, + // etc.), then a specialization of duration is interpreted as the time of + // day elapsed since midnight. + uint64_t __sec = chrono::duration_cast(__value).count(); + __sec %= 24 * 3600; + __result.tm_hour = __sec / 3600; + __sec %= 3600; + __result.tm_min = __sec / 60; + __result.tm_sec = __sec % 60; + } else if constexpr (same_as<_ChronoT, chrono::day>) + __result.tm_mday = static_cast(__value); + else if constexpr (same_as<_ChronoT, chrono::month>) + __result.tm_mon = static_cast(__value) - 1; + else if constexpr (same_as<_ChronoT, chrono::year>) + __result.tm_year = static_cast(__value) - 1900; + else if constexpr (same_as<_ChronoT, chrono::weekday>) + __result.tm_wday = __value.c_encoding(); + else if constexpr (same_as<_ChronoT, chrono::weekday_indexed> || same_as<_ChronoT, chrono::weekday_last>) + __result.tm_wday = __value.weekday().c_encoding(); + else if constexpr (same_as<_ChronoT, chrono::month_day>) { + __result.tm_mday = static_cast(__value.day()); + __result.tm_mon = static_cast(__value.month()) - 1; + } else if constexpr (same_as<_ChronoT, chrono::month_day_last>) { + __result.tm_mon = static_cast(__value.month()) - 1; + } else if constexpr (same_as<_ChronoT, chrono::month_weekday> || same_as<_ChronoT, chrono::month_weekday_last>) { + __result.tm_wday = __value.weekday_indexed().weekday().c_encoding(); + __result.tm_mon = static_cast(__value.month()) - 1; + } else if constexpr (same_as<_ChronoT, chrono::year_month>) { + __result.tm_year = static_cast(__value.year()) - 1900; + __result.tm_mon = static_cast(__value.month()) - 1; + } else if constexpr (same_as<_ChronoT, chrono::year_month_day> || same_as<_ChronoT, chrono::year_month_day_last>) { + return std::__convert_to_tm<_Tm>( + chrono::year_month_day{__value}, chrono::weekday{static_cast(__value)}); + } else if constexpr (same_as<_ChronoT, chrono::year_month_weekday> || + same_as<_ChronoT, chrono::year_month_weekday_last>) { + return std::__convert_to_tm<_Tm>(chrono::year_month_day{static_cast(__value)}, __value.weekday()); + } else if constexpr (__is_hh_mm_ss<_ChronoT>) { + __result.tm_sec = __value.seconds().count(); + __result.tm_min = __value.minutes().count(); + // In libc++ hours is stored as a long. The type in std::tm is an int. So + // the overflow can only occur when hour uses more bits than an int + // provides. + if constexpr (sizeof(std::chrono::hours::rep) > sizeof(__result.tm_hour)) + if (__value.hours().count() > std::numeric_limits::max()) + std::__throw_format_error("Formatting hh_mm_ss, encountered an hour overflow"); + __result.tm_hour = __value.hours().count(); + } else + static_assert(sizeof(_ChronoT) == 0, "Add the missing type specialization"); + + return __result; +} + +#endif // if _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP___CHRONO_CONVERT_TO_TM_H diff --git a/third_party/libcxx/__chrono/day.h b/third_party/libcxx/__chrono/day.h new file mode 100644 index 000000000..c907c036c --- /dev/null +++ b/third_party/libcxx/__chrono/day.h @@ -0,0 +1,84 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CHRONO_DAY_H +#define _LIBCPP___CHRONO_DAY_H + +#include <__chrono/duration.h> +#include <__config> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace chrono +{ + +class day { +private: + unsigned char __d_; +public: + day() = default; + _LIBCPP_HIDE_FROM_ABI explicit inline constexpr day(unsigned __val) noexcept : __d_(static_cast(__val)) {} + _LIBCPP_HIDE_FROM_ABI inline constexpr day& operator++() noexcept { ++__d_; return *this; } + _LIBCPP_HIDE_FROM_ABI inline constexpr day operator++(int) noexcept { day __tmp = *this; ++(*this); return __tmp; } + _LIBCPP_HIDE_FROM_ABI inline constexpr day& operator--() noexcept { --__d_; return *this; } + _LIBCPP_HIDE_FROM_ABI inline constexpr day operator--(int) noexcept { day __tmp = *this; --(*this); return __tmp; } + _LIBCPP_HIDE_FROM_ABI constexpr day& operator+=(const days& __dd) noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr day& operator-=(const days& __dd) noexcept; + _LIBCPP_HIDE_FROM_ABI explicit inline constexpr operator unsigned() const noexcept { return __d_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr bool ok() const noexcept { return __d_ >= 1 && __d_ <= 31; } + }; + + +_LIBCPP_HIDE_FROM_ABI inline constexpr +bool operator==(const day& __lhs, const day& __rhs) noexcept +{ return static_cast(__lhs) == static_cast(__rhs); } + +_LIBCPP_HIDE_FROM_ABI constexpr strong_ordering operator<=>(const day& __lhs, const day& __rhs) noexcept { + return static_cast(__lhs) <=> static_cast(__rhs); +} + +_LIBCPP_HIDE_FROM_ABI inline constexpr +day operator+ (const day& __lhs, const days& __rhs) noexcept +{ return day(static_cast(__lhs) + __rhs.count()); } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +day operator+ (const days& __lhs, const day& __rhs) noexcept +{ return __rhs + __lhs; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +day operator- (const day& __lhs, const days& __rhs) noexcept +{ return __lhs + -__rhs; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +days operator-(const day& __lhs, const day& __rhs) noexcept +{ return days(static_cast(static_cast(__lhs)) - + static_cast(static_cast(__rhs))); } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +day& day::operator+=(const days& __dd) noexcept +{ *this = *this + __dd; return *this; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +day& day::operator-=(const days& __dd) noexcept +{ *this = *this - __dd; return *this; } + +} // namespace chrono + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___CHRONO_DAY_H diff --git a/third_party/libcxx/__chrono/duration.h b/third_party/libcxx/__chrono/duration.h new file mode 100644 index 000000000..96e9671eb --- /dev/null +++ b/third_party/libcxx/__chrono/duration.h @@ -0,0 +1,641 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CHRONO_DURATION_H +#define _LIBCPP___CHRONO_DURATION_H + +#include <__compare/ordering.h> +#include <__compare/three_way_comparable.h> +#include <__config> +#include <__type_traits/common_type.h> +#include <__type_traits/enable_if.h> +#include <__type_traits/is_convertible.h> +#include <__type_traits/is_floating_point.h> +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace chrono +{ + +template > class _LIBCPP_TEMPLATE_VIS duration; + +template +struct __is_duration : false_type {}; + +template +struct __is_duration > : true_type {}; + +template +struct __is_duration > : true_type {}; + +template +struct __is_duration > : true_type {}; + +template +struct __is_duration > : true_type {}; + +} // namespace chrono + +template +struct _LIBCPP_TEMPLATE_VIS common_type, + chrono::duration<_Rep2, _Period2> > +{ + typedef chrono::duration::type, + typename __ratio_gcd<_Period1, _Period2>::type> type; +}; + +namespace chrono { + +// duration_cast + +template ::type, + bool = _Period::num == 1, + bool = _Period::den == 1> +struct __duration_cast; + +template +struct __duration_cast<_FromDuration, _ToDuration, _Period, true, true> +{ + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR + _ToDuration operator()(const _FromDuration& __fd) const + { + return _ToDuration(static_cast(__fd.count())); + } +}; + +template +struct __duration_cast<_FromDuration, _ToDuration, _Period, true, false> +{ + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR + _ToDuration operator()(const _FromDuration& __fd) const + { + typedef typename common_type::type _Ct; + return _ToDuration(static_cast( + static_cast<_Ct>(__fd.count()) / static_cast<_Ct>(_Period::den))); + } +}; + +template +struct __duration_cast<_FromDuration, _ToDuration, _Period, false, true> +{ + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR + _ToDuration operator()(const _FromDuration& __fd) const + { + typedef typename common_type::type _Ct; + return _ToDuration(static_cast( + static_cast<_Ct>(__fd.count()) * static_cast<_Ct>(_Period::num))); + } +}; + +template +struct __duration_cast<_FromDuration, _ToDuration, _Period, false, false> +{ + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR + _ToDuration operator()(const _FromDuration& __fd) const + { + typedef typename common_type::type _Ct; + return _ToDuration(static_cast( + static_cast<_Ct>(__fd.count()) * static_cast<_Ct>(_Period::num) + / static_cast<_Ct>(_Period::den))); + } +}; + +template +inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR +typename enable_if +< + __is_duration<_ToDuration>::value, + _ToDuration +>::type +duration_cast(const duration<_Rep, _Period>& __fd) +{ + return __duration_cast, _ToDuration>()(__fd); +} + +template +struct _LIBCPP_TEMPLATE_VIS treat_as_floating_point : is_floating_point<_Rep> {}; + +#if _LIBCPP_STD_VER >= 17 +template +inline constexpr bool treat_as_floating_point_v = treat_as_floating_point<_Rep>::value; +#endif + +template +struct _LIBCPP_TEMPLATE_VIS duration_values +{ +public: + _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR _Rep zero() _NOEXCEPT {return _Rep(0);} + _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR _Rep max() _NOEXCEPT {return numeric_limits<_Rep>::max();} + _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR _Rep min() _NOEXCEPT {return numeric_limits<_Rep>::lowest();} +}; + +#if _LIBCPP_STD_VER >= 17 +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR +typename enable_if +< + __is_duration<_ToDuration>::value, + _ToDuration +>::type +floor(const duration<_Rep, _Period>& __d) +{ + _ToDuration __t = chrono::duration_cast<_ToDuration>(__d); + if (__t > __d) + __t = __t - _ToDuration{1}; + return __t; +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR +typename enable_if +< + __is_duration<_ToDuration>::value, + _ToDuration +>::type +ceil(const duration<_Rep, _Period>& __d) +{ + _ToDuration __t = chrono::duration_cast<_ToDuration>(__d); + if (__t < __d) + __t = __t + _ToDuration{1}; + return __t; +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR +typename enable_if +< + __is_duration<_ToDuration>::value, + _ToDuration +>::type +round(const duration<_Rep, _Period>& __d) +{ + _ToDuration __lower = chrono::floor<_ToDuration>(__d); + _ToDuration __upper = __lower + _ToDuration{1}; + auto __lower_diff = __d - __lower; + auto __upper_diff = __upper - __d; + if (__lower_diff < __upper_diff) + return __lower; + if (__lower_diff > __upper_diff) + return __upper; + return __lower.count() & 1 ? __upper : __lower; +} +#endif + +// duration + +template +class _LIBCPP_TEMPLATE_VIS duration +{ + static_assert(!__is_duration<_Rep>::value, "A duration representation can not be a duration"); + static_assert(__is_ratio<_Period>::value, "Second template parameter of duration must be a std::ratio"); + static_assert(_Period::num > 0, "duration period must be positive"); + + template + struct __no_overflow + { + private: + static const intmax_t __gcd_n1_n2 = __static_gcd<_R1::num, _R2::num>::value; + static const intmax_t __gcd_d1_d2 = __static_gcd<_R1::den, _R2::den>::value; + static const intmax_t __n1 = _R1::num / __gcd_n1_n2; + static const intmax_t __d1 = _R1::den / __gcd_d1_d2; + static const intmax_t __n2 = _R2::num / __gcd_n1_n2; + static const intmax_t __d2 = _R2::den / __gcd_d1_d2; + static const intmax_t max = -((intmax_t(1) << (sizeof(intmax_t) * CHAR_BIT - 1)) + 1); + + template + struct __mul // __overflow == false + { + static const intmax_t value = _Xp * _Yp; + }; + + template + struct __mul<_Xp, _Yp, true> + { + static const intmax_t value = 1; + }; + + public: + static const bool value = (__n1 <= max / __d2) && (__n2 <= max / __d1); + typedef ratio<__mul<__n1, __d2, !value>::value, + __mul<__n2, __d1, !value>::value> type; + }; + +public: + typedef _Rep rep; + typedef typename _Period::type period; +private: + rep __rep_; +public: + +#ifndef _LIBCPP_CXX03_LANG + constexpr duration() = default; +#else + _LIBCPP_HIDE_FROM_ABI duration() {} +#endif + + template + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR + explicit duration(const _Rep2& __r, + typename enable_if + < + is_convertible::value && + (treat_as_floating_point::value || + !treat_as_floating_point<_Rep2>::value) + >::type* = nullptr) + : __rep_(__r) {} + + // conversions + template + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR + duration(const duration<_Rep2, _Period2>& __d, + typename enable_if + < + __no_overflow<_Period2, period>::value && ( + treat_as_floating_point::value || + (__no_overflow<_Period2, period>::type::den == 1 && + !treat_as_floating_point<_Rep2>::value)) + >::type* = nullptr) + : __rep_(chrono::duration_cast(__d).count()) {} + + // observer + + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR rep count() const {return __rep_;} + + // arithmetic + + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR typename common_type::type operator+() const {return typename common_type::type(*this);} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR typename common_type::type operator-() const {return typename common_type::type(-__rep_);} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 duration& operator++() {++__rep_; return *this;} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 duration operator++(int) {return duration(__rep_++);} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 duration& operator--() {--__rep_; return *this;} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 duration operator--(int) {return duration(__rep_--);} + + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 duration& operator+=(const duration& __d) {__rep_ += __d.count(); return *this;} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 duration& operator-=(const duration& __d) {__rep_ -= __d.count(); return *this;} + + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 duration& operator*=(const rep& __rhs) {__rep_ *= __rhs; return *this;} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 duration& operator/=(const rep& __rhs) {__rep_ /= __rhs; return *this;} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 duration& operator%=(const rep& __rhs) {__rep_ %= __rhs; return *this;} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 duration& operator%=(const duration& __rhs) {__rep_ %= __rhs.count(); return *this;} + + // special values + + _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR duration zero() _NOEXCEPT {return duration(duration_values::zero());} + _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR duration min() _NOEXCEPT {return duration(duration_values::min());} + _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR duration max() _NOEXCEPT {return duration(duration_values::max());} +}; + +typedef duration nanoseconds; +typedef duration microseconds; +typedef duration milliseconds; +typedef duration seconds; +typedef duration< long, ratio< 60> > minutes; +typedef duration< long, ratio<3600> > hours; +#if _LIBCPP_STD_VER >= 20 +typedef duration< int, ratio_multiply, hours::period>> days; +typedef duration< int, ratio_multiply, days::period>> weeks; +typedef duration< int, ratio_multiply, days::period>> years; +typedef duration< int, ratio_divide>> months; +#endif +// Duration == + +template +struct __duration_eq +{ + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR + bool operator()(const _LhsDuration& __lhs, const _RhsDuration& __rhs) const + { + typedef typename common_type<_LhsDuration, _RhsDuration>::type _Ct; + return _Ct(__lhs).count() == _Ct(__rhs).count(); + } +}; + +template +struct __duration_eq<_LhsDuration, _LhsDuration> +{ + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR + bool operator()(const _LhsDuration& __lhs, const _LhsDuration& __rhs) const + {return __lhs.count() == __rhs.count();} +}; + +template +inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR +bool +operator==(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) +{ + return __duration_eq, duration<_Rep2, _Period2> >()(__lhs, __rhs); +} + +#if _LIBCPP_STD_VER <= 17 + +// Duration != + +template +inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR +bool +operator!=(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) +{ + return !(__lhs == __rhs); +} + +#endif // _LIBCPP_STD_VER <= 17 + +// Duration < + +template +struct __duration_lt +{ + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR + bool operator()(const _LhsDuration& __lhs, const _RhsDuration& __rhs) const + { + typedef typename common_type<_LhsDuration, _RhsDuration>::type _Ct; + return _Ct(__lhs).count() < _Ct(__rhs).count(); + } +}; + +template +struct __duration_lt<_LhsDuration, _LhsDuration> +{ + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR + bool operator()(const _LhsDuration& __lhs, const _LhsDuration& __rhs) const + {return __lhs.count() < __rhs.count();} +}; + +template +inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR +bool +operator< (const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) +{ + return __duration_lt, duration<_Rep2, _Period2> >()(__lhs, __rhs); +} + +// Duration > + +template +inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR +bool +operator> (const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) +{ + return __rhs < __lhs; +} + +// Duration <= + +template +inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR +bool +operator<=(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) +{ + return !(__rhs < __lhs); +} + +// Duration >= + +template +inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR +bool +operator>=(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) +{ + return !(__lhs < __rhs); +} + +#if _LIBCPP_STD_VER >= 20 + +template + requires three_way_comparable> +_LIBCPP_HIDE_FROM_ABI +constexpr auto operator<=>(const duration<_Rep1, _Period1>& __lhs, + const duration<_Rep2, _Period2>& __rhs) +{ + using _Ct = common_type_t, duration<_Rep2, _Period2>>; + return _Ct(__lhs).count() <=> _Ct(__rhs).count(); +} + +#endif // _LIBCPP_STD_VER >= 20 + +// Duration + + +template +inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR +typename common_type, duration<_Rep2, _Period2> >::type +operator+(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) +{ + typedef typename common_type, duration<_Rep2, _Period2> >::type _Cd; + return _Cd(_Cd(__lhs).count() + _Cd(__rhs).count()); +} + +// Duration - + +template +inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR +typename common_type, duration<_Rep2, _Period2> >::type +operator-(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) +{ + typedef typename common_type, duration<_Rep2, _Period2> >::type _Cd; + return _Cd(_Cd(__lhs).count() - _Cd(__rhs).count()); +} + +// Duration * + +template +inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR +typename enable_if +< + is_convertible<_Rep2, typename common_type<_Rep1, _Rep2>::type>::value, + duration::type, _Period> +>::type +operator*(const duration<_Rep1, _Period>& __d, const _Rep2& __s) +{ + typedef typename common_type<_Rep1, _Rep2>::type _Cr; + typedef duration<_Cr, _Period> _Cd; + return _Cd(_Cd(__d).count() * static_cast<_Cr>(__s)); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR +typename enable_if +< + is_convertible<_Rep1, typename common_type<_Rep1, _Rep2>::type>::value, + duration::type, _Period> +>::type +operator*(const _Rep1& __s, const duration<_Rep2, _Period>& __d) +{ + return __d * __s; +} + +// Duration / + +template +inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR +typename enable_if +< + !__is_duration<_Rep2>::value && + is_convertible<_Rep2, typename common_type<_Rep1, _Rep2>::type>::value, + duration::type, _Period> +>::type +operator/(const duration<_Rep1, _Period>& __d, const _Rep2& __s) +{ + typedef typename common_type<_Rep1, _Rep2>::type _Cr; + typedef duration<_Cr, _Period> _Cd; + return _Cd(_Cd(__d).count() / static_cast<_Cr>(__s)); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR +typename common_type<_Rep1, _Rep2>::type +operator/(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) +{ + typedef typename common_type, duration<_Rep2, _Period2> >::type _Ct; + return _Ct(__lhs).count() / _Ct(__rhs).count(); +} + +// Duration % + +template +inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR +typename enable_if +< + !__is_duration<_Rep2>::value && + is_convertible<_Rep2, typename common_type<_Rep1, _Rep2>::type>::value, + duration::type, _Period> +>::type +operator%(const duration<_Rep1, _Period>& __d, const _Rep2& __s) +{ + typedef typename common_type<_Rep1, _Rep2>::type _Cr; + typedef duration<_Cr, _Period> _Cd; + return _Cd(_Cd(__d).count() % static_cast<_Cr>(__s)); +} + +template +inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_CONSTEXPR +typename common_type, duration<_Rep2, _Period2> >::type +operator%(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2>& __rhs) +{ + typedef typename common_type<_Rep1, _Rep2>::type _Cr; + typedef typename common_type, duration<_Rep2, _Period2> >::type _Cd; + return _Cd(static_cast<_Cr>(_Cd(__lhs).count()) % static_cast<_Cr>(_Cd(__rhs).count())); +} + +} // namespace chrono + +#if _LIBCPP_STD_VER >= 14 +// Suffixes for duration literals [time.duration.literals] +inline namespace literals +{ + inline namespace chrono_literals + { + + _LIBCPP_HIDE_FROM_ABI constexpr chrono::hours operator""h(unsigned long long __h) + { + return chrono::hours(static_cast(__h)); + } + + _LIBCPP_HIDE_FROM_ABI constexpr chrono::duration> operator""h(long double __h) + { + return chrono::duration>(__h); + } + + + _LIBCPP_HIDE_FROM_ABI constexpr chrono::minutes operator""min(unsigned long long __m) + { + return chrono::minutes(static_cast(__m)); + } + + _LIBCPP_HIDE_FROM_ABI constexpr chrono::duration> operator""min(long double __m) + { + return chrono::duration> (__m); + } + + + _LIBCPP_HIDE_FROM_ABI constexpr chrono::seconds operator""s(unsigned long long __s) + { + return chrono::seconds(static_cast(__s)); + } + + _LIBCPP_HIDE_FROM_ABI constexpr chrono::duration operator""s(long double __s) + { + return chrono::duration (__s); + } + + + _LIBCPP_HIDE_FROM_ABI constexpr chrono::milliseconds operator""ms(unsigned long long __ms) + { + return chrono::milliseconds(static_cast(__ms)); + } + + _LIBCPP_HIDE_FROM_ABI constexpr chrono::duration operator""ms(long double __ms) + { + return chrono::duration(__ms); + } + + + _LIBCPP_HIDE_FROM_ABI constexpr chrono::microseconds operator""us(unsigned long long __us) + { + return chrono::microseconds(static_cast(__us)); + } + + _LIBCPP_HIDE_FROM_ABI constexpr chrono::duration operator""us(long double __us) + { + return chrono::duration (__us); + } + + + _LIBCPP_HIDE_FROM_ABI constexpr chrono::nanoseconds operator""ns(unsigned long long __ns) + { + return chrono::nanoseconds(static_cast(__ns)); + } + + _LIBCPP_HIDE_FROM_ABI constexpr chrono::duration operator""ns(long double __ns) + { + return chrono::duration (__ns); + } + +} // namespace chrono_literals +} // namespace literals + +namespace chrono { // hoist the literals into namespace std::chrono + using namespace literals::chrono_literals; +} // namespace chrono + +#endif // _LIBCPP_STD_VER >= 14 + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 +# include +#endif + +#endif // _LIBCPP___CHRONO_DURATION_H diff --git a/third_party/libcxx/__chrono/file_clock.h b/third_party/libcxx/__chrono/file_clock.h new file mode 100644 index 000000000..7a4dce9d5 --- /dev/null +++ b/third_party/libcxx/__chrono/file_clock.h @@ -0,0 +1,85 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CHRONO_FILE_CLOCK_H +#define _LIBCPP___CHRONO_FILE_CLOCK_H + +#include <__availability> +#include <__chrono/duration.h> +#include <__chrono/system_clock.h> +#include <__chrono/time_point.h> +#include <__config> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#ifndef _LIBCPP_CXX03_LANG +_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM +struct _FilesystemClock; +_LIBCPP_END_NAMESPACE_FILESYSTEM +#endif // !_LIBCPP_CXX03_LANG + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace chrono +{ + +// [time.clock.file], type file_clock +using file_clock = _VSTD_FS::_FilesystemClock; + +template +using file_time = time_point; + +} // namespace chrono + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#ifndef _LIBCPP_CXX03_LANG +_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM +struct _FilesystemClock { +#if !defined(_LIBCPP_HAS_NO_INT128) + typedef __int128_t rep; + typedef nano period; +#else + typedef long long rep; + typedef nano period; +#endif + + typedef chrono::duration duration; + typedef chrono::time_point<_FilesystemClock> time_point; + + _LIBCPP_EXPORTED_FROM_ABI + static _LIBCPP_CONSTEXPR_SINCE_CXX14 const bool is_steady = false; + + _LIBCPP_AVAILABILITY_FILESYSTEM _LIBCPP_FUNC_VIS static time_point now() noexcept; + +#if _LIBCPP_STD_VER >= 20 + template + _LIBCPP_HIDE_FROM_ABI + static chrono::sys_time<_Duration> to_sys(const chrono::file_time<_Duration>& __t) { + return chrono::sys_time<_Duration>(__t.time_since_epoch()); + } + + template + _LIBCPP_HIDE_FROM_ABI + static chrono::file_time<_Duration> from_sys(const chrono::sys_time<_Duration>& __t) { + return chrono::file_time<_Duration>(__t.time_since_epoch()); + } +#endif // _LIBCPP_STD_VER >= 20 +}; +_LIBCPP_END_NAMESPACE_FILESYSTEM +#endif // !_LIBCPP_CXX03_LANG + +#endif // _LIBCPP___CHRONO_FILE_CLOCK_H diff --git a/third_party/libcxx/__chrono/formatter.h b/third_party/libcxx/__chrono/formatter.h new file mode 100644 index 000000000..679edf39c --- /dev/null +++ b/third_party/libcxx/__chrono/formatter.h @@ -0,0 +1,831 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CHRONO_FORMATTER_H +#define _LIBCPP___CHRONO_FORMATTER_H + +#include <__chrono/calendar.h> +#include <__chrono/concepts.h> +#include <__chrono/convert_to_tm.h> +#include <__chrono/day.h> +#include <__chrono/duration.h> +#include <__chrono/file_clock.h> +#include <__chrono/hh_mm_ss.h> +#include <__chrono/month.h> +#include <__chrono/month_weekday.h> +#include <__chrono/monthday.h> +#include <__chrono/ostream.h> +#include <__chrono/parser_std_format_spec.h> +#include <__chrono/statically_widen.h> +#include <__chrono/system_clock.h> +#include <__chrono/time_point.h> +#include <__chrono/weekday.h> +#include <__chrono/year.h> +#include <__chrono/year_month.h> +#include <__chrono/year_month_day.h> +#include <__chrono/year_month_weekday.h> +#include <__concepts/arithmetic.h> +#include <__concepts/same_as.h> +#include <__config> +#include <__format/concepts.h> +#include <__format/format_error.h> +#include <__format/format_functions.h> +#include <__format/format_parse_context.h> +#include <__format/formatter.h> +#include <__format/formatter_output.h> +#include <__format/parser_std_format_spec.h> +#include <__memory/addressof.h> +#include +#include +#include +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +namespace __formatter { + +/// Formats a time based on a tm struct. +/// +/// This formatter passes the formatting to time_put which uses strftime. When +/// the value is outside the valid range it's unspecified what strftime will +/// output. For example weekday 8 can print 1 when the day is processed modulo +/// 7 since that handles the Sunday for 0-based weekday. It can also print 8 if +/// 7 is handled as a special case. +/// +/// The Standard doesn't specify what to do in this case so the result depends +/// on the result of the underlying code. +/// +/// \pre When the (abbreviated) weekday or month name are used, the caller +/// validates whether the value is valid. So the caller handles that +/// requirement of Table 97: Meaning of conversion specifiers +/// [tab:time.format.spec]. +/// +/// When no chrono-specs are provided it uses the stream formatter. + +// For tiny ratios it's not possible to convert a duration to a hh_mm_ss. This +// fails compile-time due to the limited precision of the ratio (64-bit is too +// small). Therefore a duration uses its own conversion. +template +_LIBCPP_HIDE_FROM_ABI void +__format_sub_seconds(const chrono::duration<_Rep, _Period>& __value, basic_stringstream<_CharT>& __sstr) { + __sstr << std::use_facet>(__sstr.getloc()).decimal_point(); + + using __duration = chrono::duration<_Rep, _Period>; + + auto __fraction = __value - chrono::duration_cast(__value); + if constexpr (chrono::treat_as_floating_point_v<_Rep>) + // When the floating-point value has digits itself they are ignored based + // on the wording in [tab:time.format.spec] + // If the precision of the input cannot be exactly represented with + // seconds, then the format is a decimal floating-point number with a + // fixed format and a precision matching that of the precision of the + // input (or to a microseconds precision if the conversion to + // floating-point decimal seconds cannot be made within 18 fractional + // digits). + // + // This matches the behaviour of MSVC STL, fmtlib interprets this + // differently and uses 3 decimals. + // https://godbolt.org/z/6dsbnW8ba + std::format_to(std::ostreambuf_iterator<_CharT>{__sstr}, + _LIBCPP_STATICALLY_WIDEN(_CharT, "{:0{}.0f}"), + __fraction.count(), + chrono::hh_mm_ss<__duration>::fractional_width); + else + std::format_to(std::ostreambuf_iterator<_CharT>{__sstr}, + _LIBCPP_STATICALLY_WIDEN(_CharT, "{:0{}}"), + __fraction.count(), + chrono::hh_mm_ss<__duration>::fractional_width); +} + +template +_LIBCPP_HIDE_FROM_ABI void __format_sub_seconds(const _Tp& __value, basic_stringstream<_CharT>& __sstr) { + __formatter::__format_sub_seconds(__value.time_since_epoch(), __sstr); +} + +template +_LIBCPP_HIDE_FROM_ABI void +__format_sub_seconds(const chrono::hh_mm_ss<_Duration>& __value, basic_stringstream<_CharT>& __sstr) { + __sstr << std::use_facet>(__sstr.getloc()).decimal_point(); + if constexpr (chrono::treat_as_floating_point_v) + std::format_to(std::ostreambuf_iterator<_CharT>{__sstr}, + _LIBCPP_STATICALLY_WIDEN(_CharT, "{:0{}.0f}"), + __value.subseconds().count(), + __value.fractional_width); + else + std::format_to(std::ostreambuf_iterator<_CharT>{__sstr}, + _LIBCPP_STATICALLY_WIDEN(_CharT, "{:0{}}"), + __value.subseconds().count(), + __value.fractional_width); +} + +template +consteval bool __use_fraction() { + if constexpr (__is_time_point<_Tp>) + return chrono::hh_mm_ss::fractional_width; + else if constexpr (chrono::__is_duration<_Tp>::value) + return chrono::hh_mm_ss<_Tp>::fractional_width; + else if constexpr (__is_hh_mm_ss<_Tp>) + return _Tp::fractional_width; + else + return false; +} + +template +_LIBCPP_HIDE_FROM_ABI void __format_year(int __year, basic_stringstream<_CharT>& __sstr) { + if (__year < 0) { + __sstr << _CharT('-'); + __year = -__year; + } + + // TODO FMT Write an issue + // If the result has less than four digits it is zero-padded with 0 to two digits. + // is less -> has less + // left-padded -> zero-padded, otherwise the proper value would be 000-0. + + // Note according to the wording it should be left padded, which is odd. + __sstr << std::format(_LIBCPP_STATICALLY_WIDEN(_CharT, "{:04}"), __year); +} + +template +_LIBCPP_HIDE_FROM_ABI void __format_century(int __year, basic_stringstream<_CharT>& __sstr) { + // TODO FMT Write an issue + // [tab:time.format.spec] + // %C The year divided by 100 using floored division. If the result is a + // single decimal digit, it is prefixed with 0. + + bool __negative = __year < 0; + int __century = (__year - (99 * __negative)) / 100; // floored division + __sstr << std::format(_LIBCPP_STATICALLY_WIDEN(_CharT, "{:02}"), __century); +} + +template +_LIBCPP_HIDE_FROM_ABI void __format_chrono_using_chrono_specs( + const _Tp& __value, basic_stringstream<_CharT>& __sstr, basic_string_view<_CharT> __chrono_specs) { + tm __t = std::__convert_to_tm(__value); + const auto& __facet = std::use_facet>(__sstr.getloc()); + for (auto __it = __chrono_specs.begin(); __it != __chrono_specs.end(); ++__it) { + if (*__it == _CharT('%')) { + auto __s = __it; + ++__it; + // We only handle the types that can't be directly handled by time_put. + // (as an optimization n, t, and % are also handled directly.) + switch (*__it) { + case _CharT('n'): + __sstr << _CharT('\n'); + break; + case _CharT('t'): + __sstr << _CharT('\t'); + break; + case _CharT('%'): + __sstr << *__it; + break; + + case _CharT('C'): { + // strftime's output is only defined in the range [00, 99]. + int __year = __t.tm_year + 1900; + if (__year < 1000 || __year > 9999) + __formatter::__format_century(__year, __sstr); + else + __facet.put({__sstr}, __sstr, _CharT(' '), std::addressof(__t), std::to_address(__s), std::to_address(__it + 1)); + } break; + + case _CharT('j'): + if constexpr (chrono::__is_duration<_Tp>::value) + // Converting a duration where the period has a small ratio to days + // may fail to compile. This due to loss of precision in the + // conversion. In order to avoid that issue convert to seconds as + // an intemediate step. + __sstr << chrono::duration_cast(chrono::duration_cast(__value)).count(); + else + __facet.put({__sstr}, __sstr, _CharT(' '), std::addressof(__t), std::to_address(__s), std::to_address(__it + 1)); + break; + + case _CharT('q'): + if constexpr (chrono::__is_duration<_Tp>::value) { + __sstr << chrono::__units_suffix<_CharT, typename _Tp::period>(); + break; + } + __builtin_unreachable(); + + case _CharT('Q'): + // TODO FMT Determine the proper ideas + // - Should it honour the precision? + // - Shoult it honour the locale setting for the separators? + // The wording for Q doesn't use the word locale and the effect of + // precision is unspecified. + // + // MSVC STL ignores precision but uses separator + // FMT honours precision and has a bug for separator + // https://godbolt.org/z/78b7sMxns + if constexpr (chrono::__is_duration<_Tp>::value) { + __sstr << std::format(_LIBCPP_STATICALLY_WIDEN(_CharT, "{}"), __value.count()); + break; + } + __builtin_unreachable(); + + case _CharT('S'): + case _CharT('T'): + __facet.put({__sstr}, __sstr, _CharT(' '), std::addressof(__t), std::to_address(__s), std::to_address(__it + 1)); + if constexpr (__use_fraction<_Tp>()) + __formatter::__format_sub_seconds(__value, __sstr); + break; + + // Unlike time_put and strftime the formatting library requires %Y + // + // [tab:time.format.spec] + // The year as a decimal number. If the result is less than four digits + // it is left-padded with 0 to four digits. + // + // This means years in the range (-1000, 1000) need manual formatting. + // It's unclear whether %EY needs the same treatment. For example the + // Japanese EY contains the era name and year. This is zero-padded to 2 + // digits in time_put (note that older glibc versions didn't do + // padding.) However most eras won't reach 100 years, let alone 1000. + // So padding to 4 digits seems unwanted for Japanese. + // + // The same applies to %Ex since that too depends on the era. + // + // %x the locale's date representation is currently doesn't handle the + // zero-padding too. + // + // The 4 digits can be implemented better at a later time. On POSIX + // systems the required information can be extracted by nl_langinfo + // https://man7.org/linux/man-pages/man3/nl_langinfo.3.html + // + // Note since year < -1000 is expected to be rare it uses the more + // expensive year routine. + // + // TODO FMT evaluate the comment above. + +# if defined(__GLIBC__) || defined(_AIX) || defined(_WIN32) + case _CharT('y'): + // Glibc fails for negative values, AIX for positive values too. + __sstr << std::format(_LIBCPP_STATICALLY_WIDEN(_CharT, "{:02}"), (std::abs(__t.tm_year + 1900)) % 100); + break; +# endif // defined(__GLIBC__) || defined(_AIX) || defined(_WIN32) + + case _CharT('Y'): + // Depending on the platform's libc the range of supported years is + // limited. Intead of of testing all conditions use the internal + // implementation unconditionally. + __formatter::__format_year(__t.tm_year + 1900, __sstr); + break; + + case _CharT('F'): { + int __year = __t.tm_year + 1900; + if (__year < 1000) { + __formatter::__format_year(__year, __sstr); + __sstr << std::format(_LIBCPP_STATICALLY_WIDEN(_CharT, "-{:02}-{:02}"), __t.tm_mon + 1, __t.tm_mday); + } else + __facet.put({__sstr}, __sstr, _CharT(' '), std::addressof(__t), std::to_address(__s), std::to_address(__it + 1)); + } break; + + case _CharT('Z'): + // TODO FMT Add proper timezone support. + __sstr << _LIBCPP_STATICALLY_WIDEN(_CharT, "UTC"); + break; + + case _CharT('O'): + if constexpr (__use_fraction<_Tp>()) { + // Handle OS using the normal representation for the non-fractional + // part. There seems to be no locale information regarding how the + // fractional part should be formatted. + if (*(__it + 1) == 'S') { + ++__it; + __facet.put({__sstr}, __sstr, _CharT(' '), std::addressof(__t), std::to_address(__s), std::to_address(__it + 1)); + __formatter::__format_sub_seconds(__value, __sstr); + break; + } + } + [[fallthrough]]; + case _CharT('E'): + ++__it; + [[fallthrough]]; + default: + __facet.put({__sstr}, __sstr, _CharT(' '), std::addressof(__t), std::to_address(__s), std::to_address(__it + 1)); + break; + } + } else { + __sstr << *__it; + } + } +} + +template +_LIBCPP_HIDE_FROM_ABI constexpr bool __weekday_ok(const _Tp& __value) { + if constexpr (__is_time_point<_Tp>) + return true; + else if constexpr (same_as<_Tp, chrono::day>) + return true; + else if constexpr (same_as<_Tp, chrono::month>) + return __value.ok(); + else if constexpr (same_as<_Tp, chrono::year>) + return true; + else if constexpr (same_as<_Tp, chrono::weekday>) + return true; + else if constexpr (same_as<_Tp, chrono::weekday_indexed>) + return true; + else if constexpr (same_as<_Tp, chrono::weekday_last>) + return true; + else if constexpr (same_as<_Tp, chrono::month_day>) + return true; + else if constexpr (same_as<_Tp, chrono::month_day_last>) + return true; + else if constexpr (same_as<_Tp, chrono::month_weekday>) + return true; + else if constexpr (same_as<_Tp, chrono::month_weekday_last>) + return true; + else if constexpr (same_as<_Tp, chrono::year_month>) + return true; + else if constexpr (same_as<_Tp, chrono::year_month_day>) + return __value.ok(); + else if constexpr (same_as<_Tp, chrono::year_month_day_last>) + return __value.ok(); + else if constexpr (same_as<_Tp, chrono::year_month_weekday>) + return __value.weekday().ok(); + else if constexpr (same_as<_Tp, chrono::year_month_weekday_last>) + return __value.weekday().ok(); + else if constexpr (__is_hh_mm_ss<_Tp>) + return true; + else + static_assert(sizeof(_Tp) == 0, "Add the missing type specialization"); +} + +template +_LIBCPP_HIDE_FROM_ABI constexpr bool __weekday_name_ok(const _Tp& __value) { + if constexpr (__is_time_point<_Tp>) + return true; + else if constexpr (same_as<_Tp, chrono::day>) + return true; + else if constexpr (same_as<_Tp, chrono::month>) + return __value.ok(); + else if constexpr (same_as<_Tp, chrono::year>) + return true; + else if constexpr (same_as<_Tp, chrono::weekday>) + return __value.ok(); + else if constexpr (same_as<_Tp, chrono::weekday_indexed>) + return __value.weekday().ok(); + else if constexpr (same_as<_Tp, chrono::weekday_last>) + return __value.weekday().ok(); + else if constexpr (same_as<_Tp, chrono::month_day>) + return true; + else if constexpr (same_as<_Tp, chrono::month_day_last>) + return true; + else if constexpr (same_as<_Tp, chrono::month_weekday>) + return __value.weekday_indexed().ok(); + else if constexpr (same_as<_Tp, chrono::month_weekday_last>) + return __value.weekday_indexed().ok(); + else if constexpr (same_as<_Tp, chrono::year_month>) + return true; + else if constexpr (same_as<_Tp, chrono::year_month_day>) + return __value.ok(); + else if constexpr (same_as<_Tp, chrono::year_month_day_last>) + return __value.ok(); + else if constexpr (same_as<_Tp, chrono::year_month_weekday>) + return __value.weekday().ok(); + else if constexpr (same_as<_Tp, chrono::year_month_weekday_last>) + return __value.weekday().ok(); + else if constexpr (__is_hh_mm_ss<_Tp>) + return true; + else + static_assert(sizeof(_Tp) == 0, "Add the missing type specialization"); +} + +template +_LIBCPP_HIDE_FROM_ABI constexpr bool __date_ok(const _Tp& __value) { + if constexpr (__is_time_point<_Tp>) + return true; + else if constexpr (same_as<_Tp, chrono::day>) + return true; + else if constexpr (same_as<_Tp, chrono::month>) + return __value.ok(); + else if constexpr (same_as<_Tp, chrono::year>) + return true; + else if constexpr (same_as<_Tp, chrono::weekday>) + return true; + else if constexpr (same_as<_Tp, chrono::weekday_indexed>) + return true; + else if constexpr (same_as<_Tp, chrono::weekday_last>) + return true; + else if constexpr (same_as<_Tp, chrono::month_day>) + return true; + else if constexpr (same_as<_Tp, chrono::month_day_last>) + return true; + else if constexpr (same_as<_Tp, chrono::month_weekday>) + return true; + else if constexpr (same_as<_Tp, chrono::month_weekday_last>) + return true; + else if constexpr (same_as<_Tp, chrono::year_month>) + return true; + else if constexpr (same_as<_Tp, chrono::year_month_day>) + return __value.ok(); + else if constexpr (same_as<_Tp, chrono::year_month_day_last>) + return __value.ok(); + else if constexpr (same_as<_Tp, chrono::year_month_weekday>) + return __value.ok(); + else if constexpr (same_as<_Tp, chrono::year_month_weekday_last>) + return __value.ok(); + else if constexpr (__is_hh_mm_ss<_Tp>) + return true; + else + static_assert(sizeof(_Tp) == 0, "Add the missing type specialization"); +} + +template +_LIBCPP_HIDE_FROM_ABI constexpr bool __month_name_ok(const _Tp& __value) { + if constexpr (__is_time_point<_Tp>) + return true; + else if constexpr (same_as<_Tp, chrono::day>) + return true; + else if constexpr (same_as<_Tp, chrono::month>) + return __value.ok(); + else if constexpr (same_as<_Tp, chrono::year>) + return true; + else if constexpr (same_as<_Tp, chrono::weekday>) + return true; + else if constexpr (same_as<_Tp, chrono::weekday_indexed>) + return true; + else if constexpr (same_as<_Tp, chrono::weekday_last>) + return true; + else if constexpr (same_as<_Tp, chrono::month_day>) + return __value.month().ok(); + else if constexpr (same_as<_Tp, chrono::month_day_last>) + return __value.month().ok(); + else if constexpr (same_as<_Tp, chrono::month_weekday>) + return __value.month().ok(); + else if constexpr (same_as<_Tp, chrono::month_weekday_last>) + return __value.month().ok(); + else if constexpr (same_as<_Tp, chrono::year_month>) + return __value.month().ok(); + else if constexpr (same_as<_Tp, chrono::year_month_day>) + return __value.month().ok(); + else if constexpr (same_as<_Tp, chrono::year_month_day_last>) + return __value.month().ok(); + else if constexpr (same_as<_Tp, chrono::year_month_weekday>) + return __value.month().ok(); + else if constexpr (same_as<_Tp, chrono::year_month_weekday_last>) + return __value.month().ok(); + else if constexpr (__is_hh_mm_ss<_Tp>) + return true; + else + static_assert(sizeof(_Tp) == 0, "Add the missing type specialization"); +} + +template +_LIBCPP_HIDE_FROM_ABI auto +__format_chrono(const _Tp& __value, + _FormatContext& __ctx, + __format_spec::__parsed_specifications<_CharT> __specs, + basic_string_view<_CharT> __chrono_specs) { + basic_stringstream<_CharT> __sstr; + // [time.format]/2 + // 2.1 - the "C" locale if the L option is not present in chrono-format-spec, otherwise + // 2.2 - the locale passed to the formatting function if any, otherwise + // 2.3 - the global locale. + // Note that the __ctx's locale() call does 2.2 and 2.3. + if (__specs.__chrono_.__locale_specific_form_) + __sstr.imbue(__ctx.locale()); + else + __sstr.imbue(locale::classic()); + + if (__chrono_specs.empty()) + __sstr << __value; + else { + if constexpr (chrono::__is_duration<_Tp>::value) { + if (__value < __value.zero()) + __sstr << _CharT('-'); + __formatter::__format_chrono_using_chrono_specs(chrono::abs(__value), __sstr, __chrono_specs); + // TODO FMT When keeping the precision it will truncate the string. + // Note that the behaviour what the precision does isn't specified. + __specs.__precision_ = -1; + } else { + // Test __weekday_name_ before __weekday_ to give a better error. + if (__specs.__chrono_.__weekday_name_ && !__formatter::__weekday_name_ok(__value)) + std::__throw_format_error("formatting a weekday name needs a valid weekday"); + + if (__specs.__chrono_.__weekday_ && !__formatter::__weekday_ok(__value)) + std::__throw_format_error("formatting a weekday needs a valid weekday"); + + if (__specs.__chrono_.__day_of_year_ && !__formatter::__date_ok(__value)) + std::__throw_format_error("formatting a day of year needs a valid date"); + + if (__specs.__chrono_.__week_of_year_ && !__formatter::__date_ok(__value)) + std::__throw_format_error("formatting a week of year needs a valid date"); + + if (__specs.__chrono_.__month_name_ && !__formatter::__month_name_ok(__value)) + std::__throw_format_error("formatting a month name from an invalid month number"); + + if constexpr (__is_hh_mm_ss<_Tp>) { + // Note this is a pedantic intepretation of the Standard. A hh_mm_ss + // is no longer a time_of_day and can store an arbitrary number of + // hours. A number of hours in a 12 or 24 hour clock can't represent + // 24 hours or more. The functions std::chrono::make12 and + // std::chrono::make24 reaffirm this view point. + // + // Interestingly this will be the only output stream function that + // throws. + // + // TODO FMT The wording probably needs to be adapted to + // - The displayed hours is hh_mm_ss.hours() % 24 + // - It should probably allow %j in the same fashion as duration. + // - The stream formatter should change its output when hours >= 24 + // - Write it as not valid, + // - or write the number of days. + if (__specs.__chrono_.__hour_ && __value.hours().count() > 23) + std::__throw_format_error("formatting a hour needs a valid value"); + + if (__value.is_negative()) + __sstr << _CharT('-'); + } + + __formatter::__format_chrono_using_chrono_specs(__value, __sstr, __chrono_specs); + } + } + + return __formatter::__write_string(__sstr.view(), __ctx.out(), __specs); +} + +} // namespace __formatter + +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS __formatter_chrono { +public: + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator + __parse(_ParseContext& __ctx, __format_spec::__fields __fields, __format_spec::__flags __flags) { + return __parser_.__parse(__ctx, __fields, __flags); + } + + template + _LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator format(const _Tp& __value, _FormatContext& __ctx) const { + return __formatter::__format_chrono( + __value, __ctx, __parser_.__parser_.__get_parsed_chrono_specifications(__ctx), __parser_.__chrono_specs_); + } + + __format_spec::__parser_chrono<_CharT> __parser_; +}; + +template +struct _LIBCPP_TEMPLATE_VIS formatter, _CharT> : public __formatter_chrono<_CharT> { +public: + using _Base = __formatter_chrono<_CharT>; + + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__clock); + } +}; + +template +struct _LIBCPP_TEMPLATE_VIS formatter, _CharT> : public __formatter_chrono<_CharT> { +public: + using _Base = __formatter_chrono<_CharT>; + + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__clock); + } +}; + +template +struct _LIBCPP_TEMPLATE_VIS formatter, _CharT> : public __formatter_chrono<_CharT> { +public: + using _Base = __formatter_chrono<_CharT>; + + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + // The flags are not __clock since there is no associated time-zone. + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__date_time); + } +}; + +template +struct formatter, _CharT> : public __formatter_chrono<_CharT> { +public: + using _Base = __formatter_chrono<_CharT>; + + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + // [time.format]/1 + // Giving a precision specification in the chrono-format-spec is valid only + // for std::chrono::duration types where the representation type Rep is a + // floating-point type. For all other Rep types, an exception of type + // format_error is thrown if the chrono-format-spec contains a precision + // specification. + // + // Note this doesn't refer to chrono::treat_as_floating_point_v<_Rep>. + if constexpr (std::floating_point<_Rep>) + return _Base::__parse(__ctx, __format_spec::__fields_chrono_fractional, __format_spec::__flags::__duration); + else + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__duration); + } +}; + +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter + : public __formatter_chrono<_CharT> { +public: + using _Base = __formatter_chrono<_CharT>; + + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__day); + } +}; + +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter + : public __formatter_chrono<_CharT> { +public: + using _Base = __formatter_chrono<_CharT>; + + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__month); + } +}; + +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter + : public __formatter_chrono<_CharT> { +public: + using _Base = __formatter_chrono<_CharT>; + + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__year); + } +}; + +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter + : public __formatter_chrono<_CharT> { +public: + using _Base = __formatter_chrono<_CharT>; + + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__weekday); + } +}; + +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter + : public __formatter_chrono<_CharT> { +public: + using _Base = __formatter_chrono<_CharT>; + + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__weekday); + } +}; + +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter + : public __formatter_chrono<_CharT> { +public: + using _Base = __formatter_chrono<_CharT>; + + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__weekday); + } +}; + +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter + : public __formatter_chrono<_CharT> { +public: + using _Base = __formatter_chrono<_CharT>; + + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__month_day); + } +}; + +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter + : public __formatter_chrono<_CharT> { +public: + using _Base = __formatter_chrono<_CharT>; + + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__month); + } +}; + +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter + : public __formatter_chrono<_CharT> { +public: + using _Base = __formatter_chrono<_CharT>; + + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__month_weekday); + } +}; + +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter + : public __formatter_chrono<_CharT> { +public: + using _Base = __formatter_chrono<_CharT>; + + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__month_weekday); + } +}; + +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter + : public __formatter_chrono<_CharT> { +public: + using _Base = __formatter_chrono<_CharT>; + + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__year_month); + } +}; + +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter + : public __formatter_chrono<_CharT> { +public: + using _Base = __formatter_chrono<_CharT>; + + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__date); + } +}; + +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter + : public __formatter_chrono<_CharT> { +public: + using _Base = __formatter_chrono<_CharT>; + + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__date); + } +}; + +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter + : public __formatter_chrono<_CharT> { +public: + using _Base = __formatter_chrono<_CharT>; + + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__date); + } +}; + +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter + : public __formatter_chrono<_CharT> { +public: + using _Base = __formatter_chrono<_CharT>; + + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__date); + } +}; + +template +struct formatter, _CharT> : public __formatter_chrono<_CharT> { +public: + using _Base = __formatter_chrono<_CharT>; + + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return _Base::__parse(__ctx, __format_spec::__fields_chrono, __format_spec::__flags::__time); + } +}; +#endif // if _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___CHRONO_FORMATTER_H diff --git a/third_party/libcxx/__chrono/hh_mm_ss.h b/third_party/libcxx/__chrono/hh_mm_ss.h new file mode 100644 index 000000000..5bd452e57 --- /dev/null +++ b/third_party/libcxx/__chrono/hh_mm_ss.h @@ -0,0 +1,113 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CHRONO_HH_MM_SS_H +#define _LIBCPP___CHRONO_HH_MM_SS_H + +#include <__chrono/duration.h> +#include <__chrono/time_point.h> +#include <__config> +#include <__type_traits/common_type.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace chrono +{ + +template +class hh_mm_ss +{ +private: + static_assert(__is_duration<_Duration>::value, "template parameter of hh_mm_ss must be a std::chrono::duration"); + using __CommonType = common_type_t<_Duration, chrono::seconds>; + + _LIBCPP_HIDE_FROM_ABI static constexpr uint64_t __pow10(unsigned __exp) + { + uint64_t __ret = 1; + for (unsigned __i = 0; __i < __exp; ++__i) + __ret *= 10U; + return __ret; + } + + _LIBCPP_HIDE_FROM_ABI static constexpr unsigned __width(uint64_t __n, uint64_t __d = 10, unsigned __w = 0) + { + if (__n >= 2 && __d != 0 && __w < 19) + return 1 + __width(__n, __d % __n * 10, __w+1); + return 0; + } + +public: + _LIBCPP_HIDE_FROM_ABI static unsigned constexpr fractional_width = __width(__CommonType::period::den) < 19 ? + __width(__CommonType::period::den) : 6u; + using precision = duration>; + + _LIBCPP_HIDE_FROM_ABI constexpr hh_mm_ss() noexcept : hh_mm_ss{_Duration::zero()} {} + + _LIBCPP_HIDE_FROM_ABI constexpr explicit hh_mm_ss(_Duration __d) noexcept : + __is_neg_(__d < _Duration(0)), + __h_(chrono::duration_cast (chrono::abs(__d))), + __m_(chrono::duration_cast(chrono::abs(__d) - hours())), + __s_(chrono::duration_cast(chrono::abs(__d) - hours() - minutes())), + __f_(chrono::duration_cast (chrono::abs(__d) - hours() - minutes() - seconds())) + {} + + _LIBCPP_HIDE_FROM_ABI constexpr bool is_negative() const noexcept { return __is_neg_; } + _LIBCPP_HIDE_FROM_ABI constexpr chrono::hours hours() const noexcept { return __h_; } + _LIBCPP_HIDE_FROM_ABI constexpr chrono::minutes minutes() const noexcept { return __m_; } + _LIBCPP_HIDE_FROM_ABI constexpr chrono::seconds seconds() const noexcept { return __s_; } + _LIBCPP_HIDE_FROM_ABI constexpr precision subseconds() const noexcept { return __f_; } + + _LIBCPP_HIDE_FROM_ABI constexpr precision to_duration() const noexcept + { + auto __dur = __h_ + __m_ + __s_ + __f_; + return __is_neg_ ? -__dur : __dur; + } + + _LIBCPP_HIDE_FROM_ABI constexpr explicit operator precision() const noexcept { return to_duration(); } + +private: + bool __is_neg_; + chrono::hours __h_; + chrono::minutes __m_; + chrono::seconds __s_; + precision __f_; +}; +_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(hh_mm_ss); + +_LIBCPP_HIDE_FROM_ABI constexpr bool is_am(const hours& __h) noexcept { return __h >= hours( 0) && __h < hours(12); } +_LIBCPP_HIDE_FROM_ABI constexpr bool is_pm(const hours& __h) noexcept { return __h >= hours(12) && __h < hours(24); } + +_LIBCPP_HIDE_FROM_ABI constexpr hours make12(const hours& __h) noexcept +{ + if (__h == hours( 0)) return hours(12); + else if (__h <= hours(12)) return __h; + else return __h - hours(12); +} + +_LIBCPP_HIDE_FROM_ABI constexpr hours make24(const hours& __h, bool __is_pm) noexcept +{ + if (__is_pm) + return __h == hours(12) ? __h : __h + hours(12); + else + return __h == hours(12) ? hours(0) : __h; +} +} // namespace chrono + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___CHRONO_HH_MM_SS_H diff --git a/third_party/libcxx/__chrono/high_resolution_clock.h b/third_party/libcxx/__chrono/high_resolution_clock.h new file mode 100644 index 000000000..778ff44f3 --- /dev/null +++ b/third_party/libcxx/__chrono/high_resolution_clock.h @@ -0,0 +1,36 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CHRONO_HIGH_RESOLUTION_CLOCK_H +#define _LIBCPP___CHRONO_HIGH_RESOLUTION_CLOCK_H + +#include <__chrono/steady_clock.h> +#include <__chrono/system_clock.h> +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace chrono +{ + +#ifndef _LIBCPP_HAS_NO_MONOTONIC_CLOCK +typedef steady_clock high_resolution_clock; +#else +typedef system_clock high_resolution_clock; +#endif + +} // namespace chrono + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___CHRONO_HIGH_RESOLUTION_CLOCK_H diff --git a/third_party/libcxx/__chrono/literals.h b/third_party/libcxx/__chrono/literals.h new file mode 100644 index 000000000..28ddc43a2 --- /dev/null +++ b/third_party/libcxx/__chrono/literals.h @@ -0,0 +1,49 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CHRONO_LITERALS_H +#define _LIBCPP___CHRONO_LITERALS_H + +#include <__chrono/day.h> +#include <__chrono/year.h> +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +inline namespace literals +{ + inline namespace chrono_literals + { + _LIBCPP_HIDE_FROM_ABI constexpr chrono::day operator ""d(unsigned long long __d) noexcept + { + return chrono::day(static_cast(__d)); + } + + _LIBCPP_HIDE_FROM_ABI constexpr chrono::year operator ""y(unsigned long long __y) noexcept + { + return chrono::year(static_cast(__y)); + } +} // namespace chrono_literals +} // namespace literals + +namespace chrono { // hoist the literals into namespace std::chrono + using namespace literals::chrono_literals; +} // namespace chrono + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___CHRONO_LITERALS_H diff --git a/third_party/libcxx/__chrono/month.h b/third_party/libcxx/__chrono/month.h new file mode 100644 index 000000000..5dff7ce33 --- /dev/null +++ b/third_party/libcxx/__chrono/month.h @@ -0,0 +1,103 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CHRONO_MONTH_H +#define _LIBCPP___CHRONO_MONTH_H + +#include <__chrono/duration.h> +#include <__config> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace chrono +{ + +class month { +private: + unsigned char __m_; +public: + month() = default; + _LIBCPP_HIDE_FROM_ABI explicit inline constexpr month(unsigned __val) noexcept : __m_(static_cast(__val)) {} + _LIBCPP_HIDE_FROM_ABI inline constexpr month& operator++() noexcept { ++__m_; return *this; } + _LIBCPP_HIDE_FROM_ABI inline constexpr month operator++(int) noexcept { month __tmp = *this; ++(*this); return __tmp; } + _LIBCPP_HIDE_FROM_ABI inline constexpr month& operator--() noexcept { --__m_; return *this; } + _LIBCPP_HIDE_FROM_ABI inline constexpr month operator--(int) noexcept { month __tmp = *this; --(*this); return __tmp; } + _LIBCPP_HIDE_FROM_ABI constexpr month& operator+=(const months& __m1) noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr month& operator-=(const months& __m1) noexcept; + _LIBCPP_HIDE_FROM_ABI explicit inline constexpr operator unsigned() const noexcept { return __m_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr bool ok() const noexcept { return __m_ >= 1 && __m_ <= 12; } +}; + + +_LIBCPP_HIDE_FROM_ABI inline constexpr +bool operator==(const month& __lhs, const month& __rhs) noexcept +{ return static_cast(__lhs) == static_cast(__rhs); } + +_LIBCPP_HIDE_FROM_ABI constexpr strong_ordering operator<=>(const month& __lhs, const month& __rhs) noexcept { + return static_cast(__lhs) <=> static_cast(__rhs); +} + +_LIBCPP_HIDE_FROM_ABI inline constexpr +month operator+ (const month& __lhs, const months& __rhs) noexcept +{ + auto const __mu = static_cast(static_cast(__lhs)) + (__rhs.count() - 1); + auto const __yr = (__mu >= 0 ? __mu : __mu - 11) / 12; + return month{static_cast(__mu - __yr * 12 + 1)}; +} + +_LIBCPP_HIDE_FROM_ABI inline constexpr +month operator+ (const months& __lhs, const month& __rhs) noexcept +{ return __rhs + __lhs; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +month operator- (const month& __lhs, const months& __rhs) noexcept +{ return __lhs + -__rhs; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +months operator-(const month& __lhs, const month& __rhs) noexcept +{ + auto const __dm = static_cast(__lhs) - static_cast(__rhs); + return months(__dm <= 11 ? __dm : __dm + 12); +} + +_LIBCPP_HIDE_FROM_ABI inline constexpr +month& month::operator+=(const months& __dm) noexcept +{ *this = *this + __dm; return *this; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +month& month::operator-=(const months& __dm) noexcept +{ *this = *this - __dm; return *this; } + +inline constexpr month January{1}; +inline constexpr month February{2}; +inline constexpr month March{3}; +inline constexpr month April{4}; +inline constexpr month May{5}; +inline constexpr month June{6}; +inline constexpr month July{7}; +inline constexpr month August{8}; +inline constexpr month September{9}; +inline constexpr month October{10}; +inline constexpr month November{11}; +inline constexpr month December{12}; + +} // namespace chrono + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___CHRONO_MONTH_H diff --git a/third_party/libcxx/__chrono/month_weekday.h b/third_party/libcxx/__chrono/month_weekday.h new file mode 100644 index 000000000..802cbd74f --- /dev/null +++ b/third_party/libcxx/__chrono/month_weekday.h @@ -0,0 +1,106 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CHRONO_MONTH_WEEKDAY_H +#define _LIBCPP___CHRONO_MONTH_WEEKDAY_H + +#include <__chrono/month.h> +#include <__chrono/weekday.h> +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace chrono +{ + +class month_weekday { +private: + chrono::month __m_; + chrono::weekday_indexed __wdi_; +public: + _LIBCPP_HIDE_FROM_ABI constexpr month_weekday(const chrono::month& __mval, const chrono::weekday_indexed& __wdival) noexcept + : __m_{__mval}, __wdi_{__wdival} {} + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::month month() const noexcept { return __m_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::weekday_indexed weekday_indexed() const noexcept { return __wdi_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr bool ok() const noexcept { return __m_.ok() && __wdi_.ok(); } +}; + +_LIBCPP_HIDE_FROM_ABI inline constexpr +bool operator==(const month_weekday& __lhs, const month_weekday& __rhs) noexcept +{ return __lhs.month() == __rhs.month() && __lhs.weekday_indexed() == __rhs.weekday_indexed(); } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +bool operator!=(const month_weekday& __lhs, const month_weekday& __rhs) noexcept +{ return !(__lhs == __rhs); } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +month_weekday operator/(const month& __lhs, const weekday_indexed& __rhs) noexcept +{ return month_weekday{__lhs, __rhs}; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +month_weekday operator/(int __lhs, const weekday_indexed& __rhs) noexcept +{ return month_weekday{month(__lhs), __rhs}; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +month_weekday operator/(const weekday_indexed& __lhs, const month& __rhs) noexcept +{ return month_weekday{__rhs, __lhs}; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +month_weekday operator/(const weekday_indexed& __lhs, int __rhs) noexcept +{ return month_weekday{month(__rhs), __lhs}; } + + +class month_weekday_last { + chrono::month __m_; + chrono::weekday_last __wdl_; + public: + _LIBCPP_HIDE_FROM_ABI constexpr month_weekday_last(const chrono::month& __mval, const chrono::weekday_last& __wdlval) noexcept + : __m_{__mval}, __wdl_{__wdlval} {} + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::month month() const noexcept { return __m_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::weekday_last weekday_last() const noexcept { return __wdl_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr bool ok() const noexcept { return __m_.ok() && __wdl_.ok(); } +}; + +_LIBCPP_HIDE_FROM_ABI inline constexpr +bool operator==(const month_weekday_last& __lhs, const month_weekday_last& __rhs) noexcept +{ return __lhs.month() == __rhs.month() && __lhs.weekday_last() == __rhs.weekday_last(); } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +bool operator!=(const month_weekday_last& __lhs, const month_weekday_last& __rhs) noexcept +{ return !(__lhs == __rhs); } + + +_LIBCPP_HIDE_FROM_ABI inline constexpr +month_weekday_last operator/(const month& __lhs, const weekday_last& __rhs) noexcept +{ return month_weekday_last{__lhs, __rhs}; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +month_weekday_last operator/(int __lhs, const weekday_last& __rhs) noexcept +{ return month_weekday_last{month(__lhs), __rhs}; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +month_weekday_last operator/(const weekday_last& __lhs, const month& __rhs) noexcept +{ return month_weekday_last{__rhs, __lhs}; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +month_weekday_last operator/(const weekday_last& __lhs, int __rhs) noexcept +{ return month_weekday_last{month(__rhs), __lhs}; } +} // namespace chrono + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___CHRONO_MONTH_WEEKDAY_H diff --git a/third_party/libcxx/__chrono/monthday.h b/third_party/libcxx/__chrono/monthday.h new file mode 100644 index 000000000..03fd7503a --- /dev/null +++ b/third_party/libcxx/__chrono/monthday.h @@ -0,0 +1,129 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CHRONO_MONTHDAY_H +#define _LIBCPP___CHRONO_MONTHDAY_H + +#include <__chrono/calendar.h> +#include <__chrono/day.h> +#include <__chrono/month.h> +#include <__config> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace chrono +{ + +class month_day { +private: + chrono::month __m_; + chrono::day __d_; +public: + month_day() = default; + _LIBCPP_HIDE_FROM_ABI constexpr month_day(const chrono::month& __mval, const chrono::day& __dval) noexcept + : __m_{__mval}, __d_{__dval} {} + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::month month() const noexcept { return __m_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::day day() const noexcept { return __d_; } + _LIBCPP_HIDE_FROM_ABI constexpr bool ok() const noexcept; +}; + +_LIBCPP_HIDE_FROM_ABI inline constexpr +bool month_day::ok() const noexcept +{ + if (!__m_.ok()) return false; + const unsigned __dval = static_cast(__d_); + if (__dval < 1 || __dval > 31) return false; + if (__dval <= 29) return true; +// Now we've got either 30 or 31 + const unsigned __mval = static_cast(__m_); + if (__mval == 2) return false; + if (__mval == 4 || __mval == 6 || __mval == 9 || __mval == 11) + return __dval == 30; + return true; +} + +_LIBCPP_HIDE_FROM_ABI inline constexpr +bool operator==(const month_day& __lhs, const month_day& __rhs) noexcept +{ return __lhs.month() == __rhs.month() && __lhs.day() == __rhs.day(); } + +_LIBCPP_HIDE_FROM_ABI constexpr strong_ordering operator<=>(const month_day& __lhs, const month_day& __rhs) noexcept { + if (auto __c = __lhs.month() <=> __rhs.month(); __c != 0) + return __c; + return __lhs.day() <=> __rhs.day(); +} + +_LIBCPP_HIDE_FROM_ABI inline constexpr +month_day operator/(const month& __lhs, const day& __rhs) noexcept +{ return month_day{__lhs, __rhs}; } + +_LIBCPP_HIDE_FROM_ABI constexpr +month_day operator/(const day& __lhs, const month& __rhs) noexcept +{ return __rhs / __lhs; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +month_day operator/(const month& __lhs, int __rhs) noexcept +{ return __lhs / day(__rhs); } + +_LIBCPP_HIDE_FROM_ABI constexpr +month_day operator/(int __lhs, const day& __rhs) noexcept +{ return month(__lhs) / __rhs; } + +_LIBCPP_HIDE_FROM_ABI constexpr +month_day operator/(const day& __lhs, int __rhs) noexcept +{ return month(__rhs) / __lhs; } + +class month_day_last { +private: + chrono::month __m_; +public: + _LIBCPP_HIDE_FROM_ABI explicit constexpr month_day_last(const chrono::month& __val) noexcept + : __m_{__val} {} + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::month month() const noexcept { return __m_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr bool ok() const noexcept { return __m_.ok(); } +}; + +_LIBCPP_HIDE_FROM_ABI inline constexpr +bool operator==(const month_day_last& __lhs, const month_day_last& __rhs) noexcept +{ return __lhs.month() == __rhs.month(); } + +_LIBCPP_HIDE_FROM_ABI constexpr strong_ordering +operator<=>(const month_day_last& __lhs, const month_day_last& __rhs) noexcept { + return __lhs.month() <=> __rhs.month(); +} + +_LIBCPP_HIDE_FROM_ABI inline constexpr +month_day_last operator/(const month& __lhs, last_spec) noexcept +{ return month_day_last{__lhs}; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +month_day_last operator/(last_spec, const month& __rhs) noexcept +{ return month_day_last{__rhs}; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +month_day_last operator/(int __lhs, last_spec) noexcept +{ return month_day_last{month(__lhs)}; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +month_day_last operator/(last_spec, int __rhs) noexcept +{ return month_day_last{month(__rhs)}; } + +} // namespace chrono + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___CHRONO_MONTHDAY_H diff --git a/third_party/libcxx/__chrono/ostream.h b/third_party/libcxx/__chrono/ostream.h new file mode 100644 index 000000000..f171944b5 --- /dev/null +++ b/third_party/libcxx/__chrono/ostream.h @@ -0,0 +1,264 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CHRONO_OSTREAM_H +#define _LIBCPP___CHRONO_OSTREAM_H + +#include <__chrono/calendar.h> +#include <__chrono/day.h> +#include <__chrono/duration.h> +#include <__chrono/file_clock.h> +#include <__chrono/hh_mm_ss.h> +#include <__chrono/month.h> +#include <__chrono/month_weekday.h> +#include <__chrono/monthday.h> +#include <__chrono/statically_widen.h> +#include <__chrono/system_clock.h> +#include <__chrono/weekday.h> +#include <__chrono/year.h> +#include <__chrono/year_month.h> +#include <__chrono/year_month_day.h> +#include <__chrono/year_month_weekday.h> +#include <__concepts/same_as.h> +#include <__config> +#include <__format/format_functions.h> +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +namespace chrono { + +template +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& +operator<<(basic_ostream<_CharT, _Traits>& __os, const sys_time<_Duration> __tp) { + return __os << std::format(__os.getloc(), _LIBCPP_STATICALLY_WIDEN(_CharT, "{:L%F %T}"), __tp); +} + +template +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& +operator<<(basic_ostream<_CharT, _Traits>& __os, const file_time<_Duration> __tp) { + return __os << std::format(__os.getloc(), _LIBCPP_STATICALLY_WIDEN(_CharT, "{:L%F %T}"), __tp); +} + +template +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& +operator<<(basic_ostream<_CharT, _Traits>& __os, const local_time<_Duration> __tp) { + return __os << sys_time<_Duration>{__tp.time_since_epoch()}; +} + +// Depending on the type the return is a const _CharT* or a basic_string<_CharT> +template +_LIBCPP_HIDE_FROM_ABI auto __units_suffix() { + // TODO FMT LWG issue the suffixes are always char and not STATICALLY-WIDEN'ed. + if constexpr (same_as) + return _LIBCPP_STATICALLY_WIDEN(_CharT, "as"); + else if constexpr (same_as) + return _LIBCPP_STATICALLY_WIDEN(_CharT, "fs"); + else if constexpr (same_as) + return _LIBCPP_STATICALLY_WIDEN(_CharT, "ps"); + else if constexpr (same_as) + return _LIBCPP_STATICALLY_WIDEN(_CharT, "ns"); + else if constexpr (same_as) +# ifndef _LIBCPP_HAS_NO_UNICODE + return _LIBCPP_STATICALLY_WIDEN(_CharT, "\u00b5s"); +# else + return _LIBCPP_STATICALLY_WIDEN(_CharT, "us"); +# endif + else if constexpr (same_as) + return _LIBCPP_STATICALLY_WIDEN(_CharT, "ms"); + else if constexpr (same_as) + return _LIBCPP_STATICALLY_WIDEN(_CharT, "cs"); + else if constexpr (same_as) + return _LIBCPP_STATICALLY_WIDEN(_CharT, "ds"); + else if constexpr (same_as>) + return _LIBCPP_STATICALLY_WIDEN(_CharT, "s"); + else if constexpr (same_as) + return _LIBCPP_STATICALLY_WIDEN(_CharT, "das"); + else if constexpr (same_as) + return _LIBCPP_STATICALLY_WIDEN(_CharT, "hs"); + else if constexpr (same_as) + return _LIBCPP_STATICALLY_WIDEN(_CharT, "ks"); + else if constexpr (same_as) + return _LIBCPP_STATICALLY_WIDEN(_CharT, "Ms"); + else if constexpr (same_as) + return _LIBCPP_STATICALLY_WIDEN(_CharT, "Gs"); + else if constexpr (same_as) + return _LIBCPP_STATICALLY_WIDEN(_CharT, "Ts"); + else if constexpr (same_as) + return _LIBCPP_STATICALLY_WIDEN(_CharT, "Ps"); + else if constexpr (same_as) + return _LIBCPP_STATICALLY_WIDEN(_CharT, "Es"); + else if constexpr (same_as>) + return _LIBCPP_STATICALLY_WIDEN(_CharT, "min"); + else if constexpr (same_as>) + return _LIBCPP_STATICALLY_WIDEN(_CharT, "h"); + else if constexpr (same_as>) + return _LIBCPP_STATICALLY_WIDEN(_CharT, "d"); + else if constexpr (_Period::den == 1) + return std::format(_LIBCPP_STATICALLY_WIDEN(_CharT, "[{}]s"), _Period::num); + else + return std::format(_LIBCPP_STATICALLY_WIDEN(_CharT, "[{}/{}]s"), _Period::num, _Period::den); +} + +template +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& +operator<<(basic_ostream<_CharT, _Traits>& __os, const duration<_Rep, _Period>& __d) { + basic_ostringstream<_CharT, _Traits> __s; + __s.flags(__os.flags()); + __s.imbue(__os.getloc()); + __s.precision(__os.precision()); + __s << __d.count() << chrono::__units_suffix<_CharT, _Period>(); + return __os << __s.str(); +} + +template +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __os, const day& __d) { + return __os << (__d.ok() ? std::format(_LIBCPP_STATICALLY_WIDEN(_CharT, "{:%d}"), __d) + // Note this error differs from the wording of the Standard. The + // Standard wording doesn't work well on AIX or Windows. There + // the formatted day seems to be either modulo 100 or completely + // omitted. Judging by the wording this is valid. + // TODO FMT Write a paper of file an LWG issue. + : std::format(_LIBCPP_STATICALLY_WIDEN(_CharT, "{:02} is not a valid day"), + static_cast(__d))); +} + +template +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& +operator<<(basic_ostream<_CharT, _Traits>& __os, const month& __m) { + return __os << (__m.ok() ? std::format(__os.getloc(), _LIBCPP_STATICALLY_WIDEN(_CharT, "{:L%b}"), __m) + : std::format(__os.getloc(), + _LIBCPP_STATICALLY_WIDEN(_CharT, "{} is not a valid month"), + static_cast(__m))); // TODO FMT Standard mandated locale isn't used. +} + +template +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& +operator<<(basic_ostream<_CharT, _Traits>& __os, const year& __y) { + return __os << (__y.ok() ? std::format(_LIBCPP_STATICALLY_WIDEN(_CharT, "{:%Y}"), __y) + : std::format(_LIBCPP_STATICALLY_WIDEN(_CharT, "{:%Y} is not a valid year"), __y)); +} + +template +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& +operator<<(basic_ostream<_CharT, _Traits>& __os, const weekday& __wd) { + return __os << (__wd.ok() ? std::format(__os.getloc(), _LIBCPP_STATICALLY_WIDEN(_CharT, "{:L%a}"), __wd) + : std::format(__os.getloc(), // TODO FMT Standard mandated locale isn't used. + _LIBCPP_STATICALLY_WIDEN(_CharT, "{} is not a valid weekday"), + static_cast(__wd.c_encoding()))); +} + +template +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& +operator<<(basic_ostream<_CharT, _Traits>& __os, const weekday_indexed& __wdi) { + auto __i = __wdi.index(); + return __os << (__i >= 1 && __i <= 5 + ? std::format(__os.getloc(), _LIBCPP_STATICALLY_WIDEN(_CharT, "{:L}[{}]"), __wdi.weekday(), __i) + : std::format(__os.getloc(), + _LIBCPP_STATICALLY_WIDEN(_CharT, "{:L}[{} is not a valid index]"), + __wdi.weekday(), + __i)); +} + +template +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& +operator<<(basic_ostream<_CharT, _Traits>& __os, const weekday_last& __wdl) { + return __os << std::format(__os.getloc(), _LIBCPP_STATICALLY_WIDEN(_CharT, "{:L}[last]"), __wdl.weekday()); +} + +template +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& +operator<<(basic_ostream<_CharT, _Traits>& __os, const month_day& __md) { + // TODO FMT The Standard allows 30th of February to be printed. + // It would be nice to show an error message instead. + return __os << std::format(__os.getloc(), _LIBCPP_STATICALLY_WIDEN(_CharT, "{:L}/{}"), __md.month(), __md.day()); +} + +template +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& +operator<<(basic_ostream<_CharT, _Traits>& __os, const month_day_last& __mdl) { + return __os << std::format(__os.getloc(), _LIBCPP_STATICALLY_WIDEN(_CharT, "{:L}/last"), __mdl.month()); +} + +template +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& +operator<<(basic_ostream<_CharT, _Traits>& __os, const month_weekday& __mwd) { + return __os << std::format( + __os.getloc(), _LIBCPP_STATICALLY_WIDEN(_CharT, "{:L}/{:L}"), __mwd.month(), __mwd.weekday_indexed()); +} + +template +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& +operator<<(basic_ostream<_CharT, _Traits>& __os, const month_weekday_last& __mwdl) { + return __os << std::format( + __os.getloc(), _LIBCPP_STATICALLY_WIDEN(_CharT, "{:L}/{:L}"), __mwdl.month(), __mwdl.weekday_last()); +} + +template +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& +operator<<(basic_ostream<_CharT, _Traits>& __os, const year_month& __ym) { + return __os << std::format(__os.getloc(), _LIBCPP_STATICALLY_WIDEN(_CharT, "{}/{:L}"), __ym.year(), __ym.month()); +} + +template +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& +operator<<(basic_ostream<_CharT, _Traits>& __os, const year_month_day& __ymd) { + return __os << (__ymd.ok() ? std::format(_LIBCPP_STATICALLY_WIDEN(_CharT, "{:%F}"), __ymd) + : std::format(_LIBCPP_STATICALLY_WIDEN(_CharT, "{:%F} is not a valid date"), __ymd)); +} + +template +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& +operator<<(basic_ostream<_CharT, _Traits>& __os, const year_month_day_last& __ymdl) { + return __os << std::format( + __os.getloc(), _LIBCPP_STATICALLY_WIDEN(_CharT, "{}/{:L}"), __ymdl.year(), __ymdl.month_day_last()); +} + +template +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& +operator<<(basic_ostream<_CharT, _Traits>& __os, const year_month_weekday& __ymwd) { + return __os << std::format( + __os.getloc(), + _LIBCPP_STATICALLY_WIDEN(_CharT, "{}/{:L}/{:L}"), + __ymwd.year(), + __ymwd.month(), + __ymwd.weekday_indexed()); +} + +template +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& +operator<<(basic_ostream<_CharT, _Traits>& __os, const year_month_weekday_last& __ymwdl) { + return __os << std::format( + __os.getloc(), + _LIBCPP_STATICALLY_WIDEN(_CharT, "{}/{:L}/{:L}"), + __ymwdl.year(), + __ymwdl.month(), + __ymwdl.weekday_last()); +} + +template +_LIBCPP_HIDE_FROM_ABI basic_ostream<_CharT, _Traits>& +operator<<(basic_ostream<_CharT, _Traits>& __os, const hh_mm_ss<_Duration> __hms) { + return __os << std::format(__os.getloc(), _LIBCPP_STATICALLY_WIDEN(_CharT, "{:L%T}"), __hms); +} + +} // namespace chrono + +#endif // if _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___CHRONO_OSTREAM_H diff --git a/third_party/libcxx/__chrono/parser_std_format_spec.h b/third_party/libcxx/__chrono/parser_std_format_spec.h new file mode 100644 index 000000000..fb6528a47 --- /dev/null +++ b/third_party/libcxx/__chrono/parser_std_format_spec.h @@ -0,0 +1,416 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CHRONO_PARSER_STD_FORMAT_SPEC_H +#define _LIBCPP___CHRONO_PARSER_STD_FORMAT_SPEC_H + +#include <__config> +#include <__format/concepts.h> +#include <__format/format_error.h> +#include <__format/format_parse_context.h> +#include <__format/formatter_string.h> +#include <__format/parser_std_format_spec.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +namespace __format_spec { + +// By not placing this constant in the formatter class it's not duplicated for char and wchar_t +inline constexpr __fields __fields_chrono_fractional{ + .__precision_ = true, .__locale_specific_form_ = true, .__type_ = false}; +inline constexpr __fields __fields_chrono{.__locale_specific_form_ = true, .__type_ = false}; + +/// Flags available or required in a chrono type. +/// +/// The caller of the chrono formatter lists the types it has available and the +/// validation tests whether the requested type spec (e.g. %M) is available in +/// the formatter. +/// When the type in the chrono-format-spec isn't present in the data a +/// \ref format_error is thrown. +enum class __flags { + __second = 0x1, + __minute = 0x2, + __hour = 0x4, + __time = __hour | __minute | __second, + + __day = 0x8, + __month = 0x10, + __year = 0x20, + + __weekday = 0x40, + + __month_day = __day | __month, + __month_weekday = __weekday | __month, + __year_month = __month | __year, + __date = __day | __month | __year | __weekday, + + __date_time = __date | __time, + + __duration = 0x80 | __time, + + __time_zone = 0x100, + + __clock = __date_time | __time_zone +}; + +_LIBCPP_HIDE_FROM_ABI constexpr __flags operator&(__flags __lhs, __flags __rhs) { + return static_cast<__flags>(static_cast(__lhs) & static_cast(__rhs)); +} + +_LIBCPP_HIDE_FROM_ABI constexpr void __validate_second(__flags __flags) { + if ((__flags & __flags::__second) != __flags::__second) + std::__throw_format_error("The supplied date time doesn't contain a second"); +} + +_LIBCPP_HIDE_FROM_ABI constexpr void __validate_minute(__flags __flags) { + if ((__flags & __flags::__minute) != __flags::__minute) + std::__throw_format_error("The supplied date time doesn't contain a minute"); +} + +_LIBCPP_HIDE_FROM_ABI constexpr void __validate_hour(__flags __flags) { + if ((__flags & __flags::__hour) != __flags::__hour) + std::__throw_format_error("The supplied date time doesn't contain an hour"); +} + +_LIBCPP_HIDE_FROM_ABI constexpr void __validate_time(__flags __flags) { + if ((__flags & __flags::__time) != __flags::__time) + std::__throw_format_error("The supplied date time doesn't contain a time"); +} + +_LIBCPP_HIDE_FROM_ABI constexpr void __validate_day(__flags __flags) { + if ((__flags & __flags::__day) != __flags::__day) + std::__throw_format_error("The supplied date time doesn't contain a day"); +} + +_LIBCPP_HIDE_FROM_ABI constexpr void __validate_month(__flags __flags) { + if ((__flags & __flags::__month) != __flags::__month) + std::__throw_format_error("The supplied date time doesn't contain a month"); +} + +_LIBCPP_HIDE_FROM_ABI constexpr void __validate_year(__flags __flags) { + if ((__flags & __flags::__year) != __flags::__year) + std::__throw_format_error("The supplied date time doesn't contain a year"); +} + +_LIBCPP_HIDE_FROM_ABI constexpr void __validate_date(__flags __flags) { + if ((__flags & __flags::__date) != __flags::__date) + std::__throw_format_error("The supplied date time doesn't contain a date"); +} + +_LIBCPP_HIDE_FROM_ABI constexpr void __validate_date_or_duration(__flags __flags) { + if (((__flags & __flags::__date) != __flags::__date) && ((__flags & __flags::__duration) != __flags::__duration)) + std::__throw_format_error("The supplied date time doesn't contain a date or duration"); +} + +_LIBCPP_HIDE_FROM_ABI constexpr void __validate_date_time(__flags __flags) { + if ((__flags & __flags::__date_time) != __flags::__date_time) + std::__throw_format_error("The supplied date time doesn't contain a date and time"); +} + +_LIBCPP_HIDE_FROM_ABI constexpr void __validate_weekday(__flags __flags) { + if ((__flags & __flags::__weekday) != __flags::__weekday) + std::__throw_format_error("The supplied date time doesn't contain a weekday"); +} + +_LIBCPP_HIDE_FROM_ABI constexpr void __validate_duration(__flags __flags) { + if ((__flags & __flags::__duration) != __flags::__duration) + std::__throw_format_error("The supplied date time doesn't contain a duration"); +} + +_LIBCPP_HIDE_FROM_ABI constexpr void __validate_time_zone(__flags __flags) { + if ((__flags & __flags::__time_zone) != __flags::__time_zone) + std::__throw_format_error("The supplied date time doesn't contain a time zone"); +} + +template +class _LIBCPP_TEMPLATE_VIS __parser_chrono { + using _ConstIterator = typename basic_format_parse_context<_CharT>::const_iterator; + +public: + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator + __parse(_ParseContext& __ctx, __fields __fields, __flags __flags) { + _ConstIterator __begin = __parser_.__parse(__ctx, __fields); + _ConstIterator __end = __ctx.end(); + if (__begin == __end) + return __begin; + + _ConstIterator __last = __parse_chrono_specs(__begin, __end, __flags); + __chrono_specs_ = basic_string_view<_CharT>{__begin, __last}; + + return __last; + } + + __parser<_CharT> __parser_; + basic_string_view<_CharT> __chrono_specs_; + +private: + _LIBCPP_HIDE_FROM_ABI constexpr _ConstIterator + __parse_chrono_specs(_ConstIterator __begin, _ConstIterator __end, __flags __flags) { + _LIBCPP_ASSERT(__begin != __end, + "When called with an empty input the function will cause " + "undefined behavior by evaluating data not in the input"); + + if (*__begin != _CharT('%') && *__begin != _CharT('}')) + std::__throw_format_error("Expected '%' or '}' in the chrono format-string"); + + do { + switch (*__begin) { + case _CharT('{'): + std::__throw_format_error("The chrono-specs contains a '{'"); + + case _CharT('}'): + return __begin; + + case _CharT('%'): + __parse_conversion_spec(__begin, __end, __flags); + [[fallthrough]]; + + default: + // All other literals + ++__begin; + } + + } while (__begin != __end && *__begin != _CharT('}')); + + return __begin; + } + + /// \pre *__begin == '%' + /// \post __begin points at the end parsed conversion-spec + _LIBCPP_HIDE_FROM_ABI constexpr void + __parse_conversion_spec(_ConstIterator& __begin, _ConstIterator __end, __flags __flags) { + ++__begin; + if (__begin == __end) + std::__throw_format_error("End of input while parsing the modifier chrono conversion-spec"); + + switch (*__begin) { + case _CharT('n'): + case _CharT('t'): + case _CharT('%'): + break; + + case _CharT('S'): + __format_spec::__validate_second(__flags); + break; + + case _CharT('M'): + __format_spec::__validate_minute(__flags); + break; + + case _CharT('p'): // TODO FMT does the formater require an hour or a time? + case _CharT('H'): + case _CharT('I'): + __parser_.__hour_ = true; + __validate_hour(__flags); + break; + + case _CharT('r'): + case _CharT('R'): + case _CharT('T'): + case _CharT('X'): + __parser_.__hour_ = true; + __format_spec::__validate_time(__flags); + break; + + case _CharT('d'): + case _CharT('e'): + __format_spec::__validate_day(__flags); + break; + + case _CharT('b'): + case _CharT('h'): + case _CharT('B'): + __parser_.__month_name_ = true; + [[fallthrough]]; + case _CharT('m'): + __format_spec::__validate_month(__flags); + break; + + case _CharT('y'): + case _CharT('C'): + case _CharT('Y'): + __format_spec::__validate_year(__flags); + break; + + case _CharT('j'): + __parser_.__day_of_year_ = true; + __format_spec::__validate_date_or_duration(__flags); + break; + + case _CharT('g'): + case _CharT('G'): + case _CharT('U'): + case _CharT('V'): + case _CharT('W'): + __parser_.__week_of_year_ = true; + [[fallthrough]]; + case _CharT('x'): + case _CharT('D'): + case _CharT('F'): + __format_spec::__validate_date(__flags); + break; + + case _CharT('c'): + __format_spec::__validate_date_time(__flags); + break; + + case _CharT('a'): + case _CharT('A'): + __parser_.__weekday_name_ = true; + [[fallthrough]]; + case _CharT('u'): + case _CharT('w'): + __parser_.__weekday_ = true; + __validate_weekday(__flags); + __format_spec::__validate_weekday(__flags); + break; + + case _CharT('q'): + case _CharT('Q'): + __format_spec::__validate_duration(__flags); + break; + + case _CharT('E'): + __parse_modifier_E(__begin, __end, __flags); + break; + + case _CharT('O'): + __parse_modifier_O(__begin, __end, __flags); + break; + + case _CharT('z'): + case _CharT('Z'): + // Currently there's no time zone information. However some clocks have a + // hard-coded "time zone", for these clocks the information can be used. + // TODO FMT implement time zones. + __format_spec::__validate_time_zone(__flags); + break; + + default: // unknown type; + std::__throw_format_error("The date time type specifier is invalid"); + } + } + + /// \pre *__begin == 'E' + /// \post __begin is incremented by one. + _LIBCPP_HIDE_FROM_ABI constexpr void + __parse_modifier_E(_ConstIterator& __begin, _ConstIterator __end, __flags __flags) { + ++__begin; + if (__begin == __end) + std::__throw_format_error("End of input while parsing the modifier E"); + + switch (*__begin) { + case _CharT('X'): + __parser_.__hour_ = true; + __format_spec::__validate_time(__flags); + break; + + case _CharT('y'): + case _CharT('C'): + case _CharT('Y'): + __format_spec::__validate_year(__flags); + break; + + case _CharT('x'): + __format_spec::__validate_date(__flags); + break; + + case _CharT('c'): + __format_spec::__validate_date_time(__flags); + break; + + case _CharT('z'): + // Currently there's no time zone information. However some clocks have a + // hard-coded "time zone", for these clocks the information can be used. + // TODO FMT implement time zones. + __format_spec::__validate_time_zone(__flags); + break; + + default: + std::__throw_format_error("The date time type specifier for modifier E is invalid"); + } + } + + /// \pre *__begin == 'O' + /// \post __begin is incremented by one. + _LIBCPP_HIDE_FROM_ABI constexpr void + __parse_modifier_O(_ConstIterator& __begin, _ConstIterator __end, __flags __flags) { + ++__begin; + if (__begin == __end) + std::__throw_format_error("End of input while parsing the modifier O"); + + switch (*__begin) { + case _CharT('S'): + __format_spec::__validate_second(__flags); + break; + + case _CharT('M'): + __format_spec::__validate_minute(__flags); + break; + + case _CharT('I'): + case _CharT('H'): + __parser_.__hour_ = true; + __format_spec::__validate_hour(__flags); + break; + + case _CharT('d'): + case _CharT('e'): + __format_spec::__validate_day(__flags); + break; + + case _CharT('m'): + __format_spec::__validate_month(__flags); + break; + + case _CharT('y'): + __format_spec::__validate_year(__flags); + break; + + case _CharT('U'): + case _CharT('V'): + case _CharT('W'): + __parser_.__week_of_year_ = true; + __format_spec::__validate_date(__flags); + break; + + case _CharT('u'): + case _CharT('w'): + __parser_.__weekday_ = true; + __format_spec::__validate_weekday(__flags); + break; + + case _CharT('z'): + // Currently there's no time zone information. However some clocks have a + // hard-coded "time zone", for these clocks the information can be used. + // TODO FMT implement time zones. + __format_spec::__validate_time_zone(__flags); + break; + + default: + std::__throw_format_error("The date time type specifier for modifier O is invalid"); + } + } +}; + +} // namespace __format_spec + +#endif //_LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___CHRONO_PARSER_STD_FORMAT_SPEC_H diff --git a/third_party/libcxx/__chrono/statically_widen.h b/third_party/libcxx/__chrono/statically_widen.h new file mode 100644 index 000000000..a18c46f05 --- /dev/null +++ b/third_party/libcxx/__chrono/statically_widen.h @@ -0,0 +1,52 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CHRONO_STATICALLY_WIDEN_H +#define _LIBCPP___CHRONO_STATICALLY_WIDEN_H + +// Implements the STATICALLY-WIDEN exposition-only function. ([time.general]/2) + +#include <__concepts/same_as.h> +#include <__config> +#include <__format/concepts.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +template <__fmt_char_type _CharT> +_LIBCPP_HIDE_FROM_ABI constexpr const _CharT* __statically_widen(const char* __str, const wchar_t* __wstr) { + if constexpr (same_as<_CharT, char>) + return __str; + else + return __wstr; +} +# define _LIBCPP_STATICALLY_WIDEN(_CharT, __str) ::std::__statically_widen<_CharT>(__str, L##__str) +# else // _LIBCPP_HAS_NO_WIDE_CHARACTERS + +// Without this indirection the unit test test/libcxx/modules_include.sh.cpp +// fails for the CI build "No wide characters". This seems like a bug. +// TODO FMT investigate why this is needed. +template <__fmt_char_type _CharT> +_LIBCPP_HIDE_FROM_ABI constexpr const _CharT* __statically_widen(const char* __str) { + return __str; +} +# define _LIBCPP_STATICALLY_WIDEN(_CharT, __str) ::std::__statically_widen<_CharT>(__str) +# endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS + +#endif //_LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___CHRONO_STATICALLY_WIDEN_H diff --git a/third_party/libcxx/__chrono/steady_clock.h b/third_party/libcxx/__chrono/steady_clock.h new file mode 100644 index 000000000..ba8335173 --- /dev/null +++ b/third_party/libcxx/__chrono/steady_clock.h @@ -0,0 +1,44 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CHRONO_STEADY_CLOCK_H +#define _LIBCPP___CHRONO_STEADY_CLOCK_H + +#include <__chrono/duration.h> +#include <__chrono/time_point.h> +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace chrono +{ + +#ifndef _LIBCPP_HAS_NO_MONOTONIC_CLOCK +class _LIBCPP_TYPE_VIS steady_clock +{ +public: + typedef nanoseconds duration; + typedef duration::rep rep; + typedef duration::period period; + typedef chrono::time_point time_point; + static _LIBCPP_CONSTEXPR_SINCE_CXX14 const bool is_steady = true; + + static time_point now() _NOEXCEPT; +}; +#endif + +} // namespace chrono + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___CHRONO_STEADY_CLOCK_H diff --git a/third_party/libcxx/__chrono/system_clock.h b/third_party/libcxx/__chrono/system_clock.h new file mode 100644 index 000000000..e8a41ceab --- /dev/null +++ b/third_party/libcxx/__chrono/system_clock.h @@ -0,0 +1,54 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CHRONO_SYSTEM_CLOCK_H +#define _LIBCPP___CHRONO_SYSTEM_CLOCK_H + +#include <__chrono/duration.h> +#include <__chrono/time_point.h> +#include <__config> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace chrono +{ + +class _LIBCPP_TYPE_VIS system_clock +{ +public: + typedef microseconds duration; + typedef duration::rep rep; + typedef duration::period period; + typedef chrono::time_point time_point; + static _LIBCPP_CONSTEXPR_SINCE_CXX14 const bool is_steady = false; + + static time_point now() _NOEXCEPT; + static time_t to_time_t (const time_point& __t) _NOEXCEPT; + static time_point from_time_t(time_t __t) _NOEXCEPT; +}; + +#if _LIBCPP_STD_VER >= 20 + +template +using sys_time = time_point; +using sys_seconds = sys_time; +using sys_days = sys_time; + +#endif + +} // namespace chrono + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___CHRONO_SYSTEM_CLOCK_H diff --git a/third_party/libcxx/__chrono/time_point.h b/third_party/libcxx/__chrono/time_point.h new file mode 100644 index 000000000..c14835401 --- /dev/null +++ b/third_party/libcxx/__chrono/time_point.h @@ -0,0 +1,267 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CHRONO_TIME_POINT_H +#define _LIBCPP___CHRONO_TIME_POINT_H + +#include <__chrono/duration.h> +#include <__compare/ordering.h> +#include <__compare/three_way_comparable.h> +#include <__config> +#include <__type_traits/common_type.h> +#include <__type_traits/enable_if.h> +#include <__type_traits/is_convertible.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace chrono +{ + +template +class _LIBCPP_TEMPLATE_VIS time_point +{ + static_assert(__is_duration<_Duration>::value, + "Second template parameter of time_point must be a std::chrono::duration"); +public: + typedef _Clock clock; + typedef _Duration duration; + typedef typename duration::rep rep; + typedef typename duration::period period; +private: + duration __d_; + +public: + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 time_point() : __d_(duration::zero()) {} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 explicit time_point(const duration& __d) : __d_(__d) {} + + // conversions + template + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 + time_point(const time_point& __t, + typename enable_if + < + is_convertible<_Duration2, duration>::value + >::type* = nullptr) + : __d_(__t.time_since_epoch()) {} + + // observer + + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 duration time_since_epoch() const {return __d_;} + + // arithmetic + + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 time_point& operator+=(const duration& __d) {__d_ += __d; return *this;} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 time_point& operator-=(const duration& __d) {__d_ -= __d; return *this;} + + // special values + + _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR time_point min() _NOEXCEPT {return time_point(duration::min());} + _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR time_point max() _NOEXCEPT {return time_point(duration::max());} +}; + +} // namespace chrono + +template +struct _LIBCPP_TEMPLATE_VIS common_type, + chrono::time_point<_Clock, _Duration2> > +{ + typedef chrono::time_point<_Clock, typename common_type<_Duration1, _Duration2>::type> type; +}; + +namespace chrono { + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +time_point<_Clock, _ToDuration> +time_point_cast(const time_point<_Clock, _Duration>& __t) +{ + return time_point<_Clock, _ToDuration>(chrono::duration_cast<_ToDuration>(__t.time_since_epoch())); +} + +#if _LIBCPP_STD_VER >= 17 +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR +typename enable_if +< + __is_duration<_ToDuration>::value, + time_point<_Clock, _ToDuration> +>::type +floor(const time_point<_Clock, _Duration>& __t) +{ + return time_point<_Clock, _ToDuration>{chrono::floor<_ToDuration>(__t.time_since_epoch())}; +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR +typename enable_if +< + __is_duration<_ToDuration>::value, + time_point<_Clock, _ToDuration> +>::type +ceil(const time_point<_Clock, _Duration>& __t) +{ + return time_point<_Clock, _ToDuration>{chrono::ceil<_ToDuration>(__t.time_since_epoch())}; +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR +typename enable_if +< + __is_duration<_ToDuration>::value, + time_point<_Clock, _ToDuration> +>::type +round(const time_point<_Clock, _Duration>& __t) +{ + return time_point<_Clock, _ToDuration>{chrono::round<_ToDuration>(__t.time_since_epoch())}; +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR +typename enable_if +< + numeric_limits<_Rep>::is_signed, + duration<_Rep, _Period> +>::type +abs(duration<_Rep, _Period> __d) +{ + return __d >= __d.zero() ? +__d : -__d; +} +#endif // _LIBCPP_STD_VER >= 17 + +// time_point == + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +bool +operator==(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs) +{ + return __lhs.time_since_epoch() == __rhs.time_since_epoch(); +} + +#if _LIBCPP_STD_VER <= 17 + +// time_point != + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +bool +operator!=(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs) +{ + return !(__lhs == __rhs); +} + +#endif // _LIBCPP_STD_VER <= 17 + +// time_point < + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +bool +operator<(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs) +{ + return __lhs.time_since_epoch() < __rhs.time_since_epoch(); +} + +// time_point > + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +bool +operator>(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs) +{ + return __rhs < __lhs; +} + +// time_point <= + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +bool +operator<=(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs) +{ + return !(__rhs < __lhs); +} + +// time_point >= + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +bool +operator>=(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs) +{ + return !(__lhs < __rhs); +} + +#if _LIBCPP_STD_VER >= 20 + +template _Duration2> +_LIBCPP_HIDE_FROM_ABI constexpr auto +operator<=>(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs) { + return __lhs.time_since_epoch() <=> __rhs.time_since_epoch(); +} + +#endif // _LIBCPP_STD_VER >= 20 + +// time_point operator+(time_point x, duration y); + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +time_point<_Clock, typename common_type<_Duration1, duration<_Rep2, _Period2> >::type> +operator+(const time_point<_Clock, _Duration1>& __lhs, const duration<_Rep2, _Period2>& __rhs) +{ + typedef time_point<_Clock, typename common_type<_Duration1, duration<_Rep2, _Period2> >::type> _Tr; + return _Tr (__lhs.time_since_epoch() + __rhs); +} + +// time_point operator+(duration x, time_point y); + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +time_point<_Clock, typename common_type, _Duration2>::type> +operator+(const duration<_Rep1, _Period1>& __lhs, const time_point<_Clock, _Duration2>& __rhs) +{ + return __rhs + __lhs; +} + +// time_point operator-(time_point x, duration y); + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +time_point<_Clock, typename common_type<_Duration1, duration<_Rep2, _Period2> >::type> +operator-(const time_point<_Clock, _Duration1>& __lhs, const duration<_Rep2, _Period2>& __rhs) +{ + typedef time_point<_Clock, typename common_type<_Duration1, duration<_Rep2, _Period2> >::type> _Ret; + return _Ret(__lhs.time_since_epoch() -__rhs); +} + +// duration operator-(time_point x, time_point y); + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +typename common_type<_Duration1, _Duration2>::type +operator-(const time_point<_Clock, _Duration1>& __lhs, const time_point<_Clock, _Duration2>& __rhs) +{ + return __lhs.time_since_epoch() - __rhs.time_since_epoch(); +} + +} // namespace chrono + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP___CHRONO_TIME_POINT_H diff --git a/third_party/libcxx/__chrono/weekday.h b/third_party/libcxx/__chrono/weekday.h new file mode 100644 index 000000000..84b4a3802 --- /dev/null +++ b/third_party/libcxx/__chrono/weekday.h @@ -0,0 +1,185 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CHRONO_WEEKDAY_H +#define _LIBCPP___CHRONO_WEEKDAY_H + +#include <__chrono/calendar.h> +#include <__chrono/duration.h> +#include <__chrono/system_clock.h> +#include <__chrono/time_point.h> +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace chrono +{ + +class weekday_indexed; +class weekday_last; + +class weekday { +private: + unsigned char __wd_; + _LIBCPP_HIDE_FROM_ABI static constexpr unsigned char __weekday_from_days(int __days) noexcept; +public: + weekday() = default; + _LIBCPP_HIDE_FROM_ABI inline explicit constexpr weekday(unsigned __val) noexcept : __wd_(static_cast(__val == 7 ? 0 : __val)) {} + _LIBCPP_HIDE_FROM_ABI inline constexpr weekday(const sys_days& __sysd) noexcept + : __wd_(__weekday_from_days(__sysd.time_since_epoch().count())) {} + _LIBCPP_HIDE_FROM_ABI inline explicit constexpr weekday(const local_days& __locd) noexcept + : __wd_(__weekday_from_days(__locd.time_since_epoch().count())) {} + + _LIBCPP_HIDE_FROM_ABI inline constexpr weekday& operator++() noexcept { __wd_ = (__wd_ == 6 ? 0 : __wd_ + 1); return *this; } + _LIBCPP_HIDE_FROM_ABI inline constexpr weekday operator++(int) noexcept { weekday __tmp = *this; ++(*this); return __tmp; } + _LIBCPP_HIDE_FROM_ABI inline constexpr weekday& operator--() noexcept { __wd_ = (__wd_ == 0 ? 6 : __wd_ - 1); return *this; } + _LIBCPP_HIDE_FROM_ABI inline constexpr weekday operator--(int) noexcept { weekday __tmp = *this; --(*this); return __tmp; } + _LIBCPP_HIDE_FROM_ABI constexpr weekday& operator+=(const days& __dd) noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr weekday& operator-=(const days& __dd) noexcept; + _LIBCPP_HIDE_FROM_ABI inline constexpr unsigned c_encoding() const noexcept { return __wd_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr unsigned iso_encoding() const noexcept { return __wd_ == 0u ? 7 : __wd_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr bool ok() const noexcept { return __wd_ <= 6; } + _LIBCPP_HIDE_FROM_ABI constexpr weekday_indexed operator[](unsigned __index) const noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr weekday_last operator[](last_spec) const noexcept; +}; + + +// https://howardhinnant.github.io/date_algorithms.html#weekday_from_days +_LIBCPP_HIDE_FROM_ABI inline constexpr +unsigned char weekday::__weekday_from_days(int __days) noexcept +{ + return static_cast( + static_cast(__days >= -4 ? (__days+4) % 7 : (__days+5) % 7 + 6) + ); +} + +_LIBCPP_HIDE_FROM_ABI inline constexpr +bool operator==(const weekday& __lhs, const weekday& __rhs) noexcept +{ return __lhs.c_encoding() == __rhs.c_encoding(); } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +bool operator!=(const weekday& __lhs, const weekday& __rhs) noexcept +{ return !(__lhs == __rhs); } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +bool operator< (const weekday& __lhs, const weekday& __rhs) noexcept +{ return __lhs.c_encoding() < __rhs.c_encoding(); } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +bool operator> (const weekday& __lhs, const weekday& __rhs) noexcept +{ return __rhs < __lhs; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +bool operator<=(const weekday& __lhs, const weekday& __rhs) noexcept +{ return !(__rhs < __lhs);} + +_LIBCPP_HIDE_FROM_ABI inline constexpr +bool operator>=(const weekday& __lhs, const weekday& __rhs) noexcept +{ return !(__lhs < __rhs); } + +_LIBCPP_HIDE_FROM_ABI constexpr +weekday operator+(const weekday& __lhs, const days& __rhs) noexcept +{ + auto const __mu = static_cast(__lhs.c_encoding()) + __rhs.count(); + auto const __yr = (__mu >= 0 ? __mu : __mu - 6) / 7; + return weekday{static_cast(__mu - __yr * 7)}; +} + +_LIBCPP_HIDE_FROM_ABI constexpr +weekday operator+(const days& __lhs, const weekday& __rhs) noexcept +{ return __rhs + __lhs; } + +_LIBCPP_HIDE_FROM_ABI constexpr +weekday operator-(const weekday& __lhs, const days& __rhs) noexcept +{ return __lhs + -__rhs; } + +_LIBCPP_HIDE_FROM_ABI constexpr +days operator-(const weekday& __lhs, const weekday& __rhs) noexcept +{ + const int __wdu = __lhs.c_encoding() - __rhs.c_encoding(); + const int __wk = (__wdu >= 0 ? __wdu : __wdu-6) / 7; + return days{__wdu - __wk * 7}; +} + +_LIBCPP_HIDE_FROM_ABI inline constexpr +weekday& weekday::operator+=(const days& __dd) noexcept +{ *this = *this + __dd; return *this; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +weekday& weekday::operator-=(const days& __dd) noexcept +{ *this = *this - __dd; return *this; } + +class weekday_indexed { +private: + chrono::weekday __wd_; + unsigned char __idx_; +public: + weekday_indexed() = default; + _LIBCPP_HIDE_FROM_ABI inline constexpr weekday_indexed(const chrono::weekday& __wdval, unsigned __idxval) noexcept + : __wd_{__wdval}, __idx_(__idxval) {} + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::weekday weekday() const noexcept { return __wd_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr unsigned index() const noexcept { return __idx_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr bool ok() const noexcept { return __wd_.ok() && __idx_ >= 1 && __idx_ <= 5; } +}; + +_LIBCPP_HIDE_FROM_ABI inline constexpr +bool operator==(const weekday_indexed& __lhs, const weekday_indexed& __rhs) noexcept +{ return __lhs.weekday() == __rhs.weekday() && __lhs.index() == __rhs.index(); } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +bool operator!=(const weekday_indexed& __lhs, const weekday_indexed& __rhs) noexcept +{ return !(__lhs == __rhs); } + + +class weekday_last { +private: + chrono::weekday __wd_; +public: + _LIBCPP_HIDE_FROM_ABI explicit constexpr weekday_last(const chrono::weekday& __val) noexcept + : __wd_{__val} {} + _LIBCPP_HIDE_FROM_ABI constexpr chrono::weekday weekday() const noexcept { return __wd_; } + _LIBCPP_HIDE_FROM_ABI constexpr bool ok() const noexcept { return __wd_.ok(); } +}; + +_LIBCPP_HIDE_FROM_ABI inline constexpr +bool operator==(const weekday_last& __lhs, const weekday_last& __rhs) noexcept +{ return __lhs.weekday() == __rhs.weekday(); } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +bool operator!=(const weekday_last& __lhs, const weekday_last& __rhs) noexcept +{ return !(__lhs == __rhs); } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +weekday_indexed weekday::operator[](unsigned __index) const noexcept { return weekday_indexed{*this, __index}; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +weekday_last weekday::operator[](last_spec) const noexcept { return weekday_last{*this}; } + + +inline constexpr weekday Sunday{0}; +inline constexpr weekday Monday{1}; +inline constexpr weekday Tuesday{2}; +inline constexpr weekday Wednesday{3}; +inline constexpr weekday Thursday{4}; +inline constexpr weekday Friday{5}; +inline constexpr weekday Saturday{6}; + +} // namespace chrono + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___CHRONO_WEEKDAY_H diff --git a/third_party/libcxx/__chrono/year.h b/third_party/libcxx/__chrono/year.h new file mode 100644 index 000000000..14bcbdafd --- /dev/null +++ b/third_party/libcxx/__chrono/year.h @@ -0,0 +1,102 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CHRONO_YEAR_H +#define _LIBCPP___CHRONO_YEAR_H + +#include <__chrono/duration.h> +#include <__config> +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace chrono +{ + +class year { +private: + short __y_; +public: + year() = default; + _LIBCPP_HIDE_FROM_ABI explicit inline constexpr year(int __val) noexcept : __y_(static_cast(__val)) {} + + _LIBCPP_HIDE_FROM_ABI inline constexpr year& operator++() noexcept { ++__y_; return *this; } + _LIBCPP_HIDE_FROM_ABI inline constexpr year operator++(int) noexcept { year __tmp = *this; ++(*this); return __tmp; } + _LIBCPP_HIDE_FROM_ABI inline constexpr year& operator--() noexcept { --__y_; return *this; } + _LIBCPP_HIDE_FROM_ABI inline constexpr year operator--(int) noexcept { year __tmp = *this; --(*this); return __tmp; } + _LIBCPP_HIDE_FROM_ABI constexpr year& operator+=(const years& __dy) noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr year& operator-=(const years& __dy) noexcept; + _LIBCPP_HIDE_FROM_ABI inline constexpr year operator+() const noexcept { return *this; } + _LIBCPP_HIDE_FROM_ABI inline constexpr year operator-() const noexcept { return year{-__y_}; } + + _LIBCPP_HIDE_FROM_ABI inline constexpr bool is_leap() const noexcept { return __y_ % 4 == 0 && (__y_ % 100 != 0 || __y_ % 400 == 0); } + _LIBCPP_HIDE_FROM_ABI explicit inline constexpr operator int() const noexcept { return __y_; } + _LIBCPP_HIDE_FROM_ABI constexpr bool ok() const noexcept; + _LIBCPP_HIDE_FROM_ABI static inline constexpr year min() noexcept { return year{-32767}; } + _LIBCPP_HIDE_FROM_ABI static inline constexpr year max() noexcept { return year{ 32767}; } +}; + + +_LIBCPP_HIDE_FROM_ABI inline constexpr +bool operator==(const year& __lhs, const year& __rhs) noexcept +{ return static_cast(__lhs) == static_cast(__rhs); } + +_LIBCPP_HIDE_FROM_ABI constexpr strong_ordering operator<=>(const year& __lhs, const year& __rhs) noexcept { + return static_cast(__lhs) <=> static_cast(__rhs); +} + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year operator+ (const year& __lhs, const years& __rhs) noexcept +{ return year(static_cast(__lhs) + __rhs.count()); } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year operator+ (const years& __lhs, const year& __rhs) noexcept +{ return __rhs + __lhs; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year operator- (const year& __lhs, const years& __rhs) noexcept +{ return __lhs + -__rhs; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +years operator-(const year& __lhs, const year& __rhs) noexcept +{ return years{static_cast(__lhs) - static_cast(__rhs)}; } + + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year& year::operator+=(const years& __dy) noexcept +{ *this = *this + __dy; return *this; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year& year::operator-=(const years& __dy) noexcept +{ *this = *this - __dy; return *this; } + +_LIBCPP_HIDE_FROM_ABI constexpr bool year::ok() const noexcept { + static_assert(static_cast(std::numeric_limits::max()) == static_cast(max())); + return static_cast(min()) <= __y_; +} + +} // namespace chrono + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP___CHRONO_YEAR_H diff --git a/third_party/libcxx/__chrono/year_month.h b/third_party/libcxx/__chrono/year_month.h new file mode 100644 index 000000000..f4eea8427 --- /dev/null +++ b/third_party/libcxx/__chrono/year_month.h @@ -0,0 +1,101 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CHRONO_YEAR_MONTH_H +#define _LIBCPP___CHRONO_YEAR_MONTH_H + +#include <__chrono/duration.h> +#include <__chrono/month.h> +#include <__chrono/year.h> +#include <__config> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace chrono +{ + +class year_month { + chrono::year __y_; + chrono::month __m_; +public: + year_month() = default; + _LIBCPP_HIDE_FROM_ABI constexpr year_month(const chrono::year& __yval, const chrono::month& __mval) noexcept + : __y_{__yval}, __m_{__mval} {} + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::year year() const noexcept { return __y_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::month month() const noexcept { return __m_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr year_month& operator+=(const months& __dm) noexcept { this->__m_ += __dm; return *this; } + _LIBCPP_HIDE_FROM_ABI inline constexpr year_month& operator-=(const months& __dm) noexcept { this->__m_ -= __dm; return *this; } + _LIBCPP_HIDE_FROM_ABI inline constexpr year_month& operator+=(const years& __dy) noexcept { this->__y_ += __dy; return *this; } + _LIBCPP_HIDE_FROM_ABI inline constexpr year_month& operator-=(const years& __dy) noexcept { this->__y_ -= __dy; return *this; } + _LIBCPP_HIDE_FROM_ABI inline constexpr bool ok() const noexcept { return __y_.ok() && __m_.ok(); } +}; + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month operator/(const year& __y, const month& __m) noexcept { return year_month{__y, __m}; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month operator/(const year& __y, int __m) noexcept { return year_month{__y, month(__m)}; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +bool operator==(const year_month& __lhs, const year_month& __rhs) noexcept +{ return __lhs.year() == __rhs.year() && __lhs.month() == __rhs.month(); } + +_LIBCPP_HIDE_FROM_ABI constexpr strong_ordering operator<=>(const year_month& __lhs, const year_month& __rhs) noexcept { + if (auto __c = __lhs.year() <=> __rhs.year(); __c != 0) + return __c; + return __lhs.month() <=> __rhs.month(); +} + +_LIBCPP_HIDE_FROM_ABI constexpr +year_month operator+(const year_month& __lhs, const months& __rhs) noexcept +{ + int __dmi = static_cast(static_cast(__lhs.month())) - 1 + __rhs.count(); + const int __dy = (__dmi >= 0 ? __dmi : __dmi-11) / 12; + __dmi = __dmi - __dy * 12 + 1; + return (__lhs.year() + years(__dy)) / month(static_cast(__dmi)); +} + +_LIBCPP_HIDE_FROM_ABI constexpr +year_month operator+(const months& __lhs, const year_month& __rhs) noexcept +{ return __rhs + __lhs; } + +_LIBCPP_HIDE_FROM_ABI constexpr +year_month operator+(const year_month& __lhs, const years& __rhs) noexcept +{ return (__lhs.year() + __rhs) / __lhs.month(); } + +_LIBCPP_HIDE_FROM_ABI constexpr +year_month operator+(const years& __lhs, const year_month& __rhs) noexcept +{ return __rhs + __lhs; } + +_LIBCPP_HIDE_FROM_ABI constexpr +months operator-(const year_month& __lhs, const year_month& __rhs) noexcept +{ return (__lhs.year() - __rhs.year()) + months(static_cast(__lhs.month()) - static_cast(__rhs.month())); } + +_LIBCPP_HIDE_FROM_ABI constexpr +year_month operator-(const year_month& __lhs, const months& __rhs) noexcept +{ return __lhs + -__rhs; } + +_LIBCPP_HIDE_FROM_ABI constexpr +year_month operator-(const year_month& __lhs, const years& __rhs) noexcept +{ return __lhs + -__rhs; } + +} // namespace chrono + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___CHRONO_YEAR_MONTH_H diff --git a/third_party/libcxx/__chrono/year_month_day.h b/third_party/libcxx/__chrono/year_month_day.h new file mode 100644 index 000000000..ed5903f7d --- /dev/null +++ b/third_party/libcxx/__chrono/year_month_day.h @@ -0,0 +1,307 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CHRONO_YEAR_MONTH_DAY_H +#define _LIBCPP___CHRONO_YEAR_MONTH_DAY_H + +#include <__chrono/calendar.h> +#include <__chrono/day.h> +#include <__chrono/duration.h> +#include <__chrono/month.h> +#include <__chrono/monthday.h> +#include <__chrono/system_clock.h> +#include <__chrono/time_point.h> +#include <__chrono/year.h> +#include <__chrono/year_month.h> +#include <__config> +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace chrono +{ + +class year_month_day_last; + +class year_month_day { +private: + chrono::year __y_; + chrono::month __m_; + chrono::day __d_; +public: + year_month_day() = default; + _LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day( + const chrono::year& __yval, const chrono::month& __mval, const chrono::day& __dval) noexcept + : __y_{__yval}, __m_{__mval}, __d_{__dval} {} + _LIBCPP_HIDE_FROM_ABI constexpr year_month_day(const year_month_day_last& __ymdl) noexcept; + _LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day(const sys_days& __sysd) noexcept + : year_month_day(__from_days(__sysd.time_since_epoch())) {} + _LIBCPP_HIDE_FROM_ABI inline explicit constexpr year_month_day(const local_days& __locd) noexcept + : year_month_day(__from_days(__locd.time_since_epoch())) {} + + _LIBCPP_HIDE_FROM_ABI constexpr year_month_day& operator+=(const months& __dm) noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr year_month_day& operator-=(const months& __dm) noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr year_month_day& operator+=(const years& __dy) noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr year_month_day& operator-=(const years& __dy) noexcept; + + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::year year() const noexcept { return __y_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::month month() const noexcept { return __m_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::day day() const noexcept { return __d_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr operator sys_days() const noexcept { return sys_days{__to_days()}; } + _LIBCPP_HIDE_FROM_ABI inline explicit constexpr operator local_days() const noexcept { return local_days{__to_days()}; } + + _LIBCPP_HIDE_FROM_ABI constexpr bool ok() const noexcept; + + _LIBCPP_HIDE_FROM_ABI static constexpr year_month_day __from_days(days __d) noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr days __to_days() const noexcept; +}; + + +// https://howardhinnant.github.io/date_algorithms.html#civil_from_days +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_day year_month_day::__from_days(days __d) noexcept +{ + static_assert(numeric_limits::digits >= 18, ""); + static_assert(numeric_limits::digits >= 20 , ""); + const int __z = __d.count() + 719468; + const int __era = (__z >= 0 ? __z : __z - 146096) / 146097; + const unsigned __doe = static_cast(__z - __era * 146097); // [0, 146096] + const unsigned __yoe = (__doe - __doe/1460 + __doe/36524 - __doe/146096) / 365; // [0, 399] + const int __yr = static_cast(__yoe) + __era * 400; + const unsigned __doy = __doe - (365 * __yoe + __yoe/4 - __yoe/100); // [0, 365] + const unsigned __mp = (5 * __doy + 2)/153; // [0, 11] + const unsigned __dy = __doy - (153 * __mp + 2)/5 + 1; // [1, 31] + const unsigned __mth = __mp + (__mp < 10 ? 3 : -9); // [1, 12] + return year_month_day{chrono::year{__yr + (__mth <= 2)}, chrono::month{__mth}, chrono::day{__dy}}; +} + +// https://howardhinnant.github.io/date_algorithms.html#days_from_civil +_LIBCPP_HIDE_FROM_ABI inline constexpr +days year_month_day::__to_days() const noexcept +{ + static_assert(numeric_limits::digits >= 18, ""); + static_assert(numeric_limits::digits >= 20 , ""); + + const int __yr = static_cast(__y_) - (__m_ <= February); + const unsigned __mth = static_cast(__m_); + const unsigned __dy = static_cast(__d_); + + const int __era = (__yr >= 0 ? __yr : __yr - 399) / 400; + const unsigned __yoe = static_cast(__yr - __era * 400); // [0, 399] + const unsigned __doy = (153 * (__mth + (__mth > 2 ? -3 : 9)) + 2) / 5 + __dy-1; // [0, 365] + const unsigned __doe = __yoe * 365 + __yoe/4 - __yoe/100 + __doy; // [0, 146096] + return days{__era * 146097 + static_cast(__doe) - 719468}; +} + +_LIBCPP_HIDE_FROM_ABI inline constexpr +bool operator==(const year_month_day& __lhs, const year_month_day& __rhs) noexcept +{ return __lhs.year() == __rhs.year() && __lhs.month() == __rhs.month() && __lhs.day() == __rhs.day(); } + +_LIBCPP_HIDE_FROM_ABI constexpr strong_ordering +operator<=>(const year_month_day& __lhs, const year_month_day& __rhs) noexcept { + if (auto __c = __lhs.year() <=> __rhs.year(); __c != 0) + return __c; + if (auto __c = __lhs.month() <=> __rhs.month(); __c != 0) + return __c; + return __lhs.day() <=> __rhs.day(); +} + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_day operator/(const year_month& __lhs, const day& __rhs) noexcept +{ return year_month_day{__lhs.year(), __lhs.month(), __rhs}; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_day operator/(const year_month& __lhs, int __rhs) noexcept +{ return __lhs / day(__rhs); } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_day operator/(const year& __lhs, const month_day& __rhs) noexcept +{ return __lhs / __rhs.month() / __rhs.day(); } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_day operator/(int __lhs, const month_day& __rhs) noexcept +{ return year(__lhs) / __rhs; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_day operator/(const month_day& __lhs, const year& __rhs) noexcept +{ return __rhs / __lhs; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_day operator/(const month_day& __lhs, int __rhs) noexcept +{ return year(__rhs) / __lhs; } + + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_day operator+(const year_month_day& __lhs, const months& __rhs) noexcept +{ return (__lhs.year()/__lhs.month() + __rhs)/__lhs.day(); } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_day operator+(const months& __lhs, const year_month_day& __rhs) noexcept +{ return __rhs + __lhs; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_day operator-(const year_month_day& __lhs, const months& __rhs) noexcept +{ return __lhs + -__rhs; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_day operator+(const year_month_day& __lhs, const years& __rhs) noexcept +{ return (__lhs.year() + __rhs) / __lhs.month() / __lhs.day(); } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_day operator+(const years& __lhs, const year_month_day& __rhs) noexcept +{ return __rhs + __lhs; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_day operator-(const year_month_day& __lhs, const years& __rhs) noexcept +{ return __lhs + -__rhs; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day& year_month_day::operator+=(const months& __dm) noexcept { *this = *this + __dm; return *this; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day& year_month_day::operator-=(const months& __dm) noexcept { *this = *this - __dm; return *this; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day& year_month_day::operator+=(const years& __dy) noexcept { *this = *this + __dy; return *this; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day& year_month_day::operator-=(const years& __dy) noexcept { *this = *this - __dy; return *this; } + +class year_month_day_last { +private: + chrono::year __y_; + chrono::month_day_last __mdl_; +public: + _LIBCPP_HIDE_FROM_ABI constexpr year_month_day_last(const year& __yval, const month_day_last& __mdlval) noexcept + : __y_{__yval}, __mdl_{__mdlval} {} + + _LIBCPP_HIDE_FROM_ABI constexpr year_month_day_last& operator+=(const months& __m) noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr year_month_day_last& operator-=(const months& __m) noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr year_month_day_last& operator+=(const years& __y) noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr year_month_day_last& operator-=(const years& __y) noexcept; + + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::year year() const noexcept { return __y_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::month month() const noexcept { return __mdl_.month(); } + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::month_day_last month_day_last() const noexcept { return __mdl_; } + _LIBCPP_HIDE_FROM_ABI constexpr chrono::day day() const noexcept; + _LIBCPP_HIDE_FROM_ABI inline constexpr operator sys_days() const noexcept { return sys_days{year()/month()/day()}; } + _LIBCPP_HIDE_FROM_ABI inline explicit constexpr operator local_days() const noexcept { return local_days{year()/month()/day()}; } + _LIBCPP_HIDE_FROM_ABI inline constexpr bool ok() const noexcept { return __y_.ok() && __mdl_.ok(); } +}; + +_LIBCPP_HIDE_FROM_ABI inline constexpr +chrono::day year_month_day_last::day() const noexcept +{ + constexpr chrono::day __d[] = + { + chrono::day(31), chrono::day(28), chrono::day(31), + chrono::day(30), chrono::day(31), chrono::day(30), + chrono::day(31), chrono::day(31), chrono::day(30), + chrono::day(31), chrono::day(30), chrono::day(31) + }; + return (month() != February || !__y_.is_leap()) && month().ok() ? + __d[static_cast(month()) - 1] : chrono::day{29}; +} + +_LIBCPP_HIDE_FROM_ABI inline constexpr +bool operator==(const year_month_day_last& __lhs, const year_month_day_last& __rhs) noexcept +{ return __lhs.year() == __rhs.year() && __lhs.month_day_last() == __rhs.month_day_last(); } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +bool operator!=(const year_month_day_last& __lhs, const year_month_day_last& __rhs) noexcept +{ return !(__lhs == __rhs); } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +bool operator< (const year_month_day_last& __lhs, const year_month_day_last& __rhs) noexcept +{ + if (__lhs.year() < __rhs.year()) return true; + if (__lhs.year() > __rhs.year()) return false; + return __lhs.month_day_last() < __rhs.month_day_last(); +} + +_LIBCPP_HIDE_FROM_ABI inline constexpr +bool operator> (const year_month_day_last& __lhs, const year_month_day_last& __rhs) noexcept +{ return __rhs < __lhs; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +bool operator<=(const year_month_day_last& __lhs, const year_month_day_last& __rhs) noexcept +{ return !(__rhs < __lhs);} + +_LIBCPP_HIDE_FROM_ABI inline constexpr +bool operator>=(const year_month_day_last& __lhs, const year_month_day_last& __rhs) noexcept +{ return !(__lhs < __rhs); } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_day_last operator/(const year_month& __lhs, last_spec) noexcept +{ return year_month_day_last{__lhs.year(), month_day_last{__lhs.month()}}; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_day_last operator/(const year& __lhs, const month_day_last& __rhs) noexcept +{ return year_month_day_last{__lhs, __rhs}; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_day_last operator/(int __lhs, const month_day_last& __rhs) noexcept +{ return year_month_day_last{year{__lhs}, __rhs}; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day_last +operator/(const month_day_last& __lhs, const year& __rhs) noexcept +{ return __rhs / __lhs; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_day_last operator/(const month_day_last& __lhs, int __rhs) noexcept +{ return year{__rhs} / __lhs; } + + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_day_last operator+(const year_month_day_last& __lhs, const months& __rhs) noexcept +{ return (__lhs.year() / __lhs.month() + __rhs) / last; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_day_last operator+(const months& __lhs, const year_month_day_last& __rhs) noexcept +{ return __rhs + __lhs; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_day_last operator-(const year_month_day_last& __lhs, const months& __rhs) noexcept +{ return __lhs + (-__rhs); } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_day_last operator+(const year_month_day_last& __lhs, const years& __rhs) noexcept +{ return year_month_day_last{__lhs.year() + __rhs, __lhs.month_day_last()}; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_day_last operator+(const years& __lhs, const year_month_day_last& __rhs) noexcept +{ return __rhs + __lhs; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_day_last operator-(const year_month_day_last& __lhs, const years& __rhs) noexcept +{ return __lhs + (-__rhs); } + +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day_last& year_month_day_last::operator+=(const months& __dm) noexcept { *this = *this + __dm; return *this; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day_last& year_month_day_last::operator-=(const months& __dm) noexcept { *this = *this - __dm; return *this; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day_last& year_month_day_last::operator+=(const years& __dy) noexcept { *this = *this + __dy; return *this; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_day_last& year_month_day_last::operator-=(const years& __dy) noexcept { *this = *this - __dy; return *this; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_day::year_month_day(const year_month_day_last& __ymdl) noexcept + : __y_{__ymdl.year()}, __m_{__ymdl.month()}, __d_{__ymdl.day()} {} + +_LIBCPP_HIDE_FROM_ABI inline constexpr +bool year_month_day::ok() const noexcept +{ + if (!__y_.ok() || !__m_.ok()) return false; + return chrono::day{1} <= __d_ && __d_ <= (__y_ / __m_ / last).day(); +} + +} // namespace chrono + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___CHRONO_YEAR_MONTH_DAY_H diff --git a/third_party/libcxx/__chrono/year_month_weekday.h b/third_party/libcxx/__chrono/year_month_weekday.h new file mode 100644 index 000000000..28de10c94 --- /dev/null +++ b/third_party/libcxx/__chrono/year_month_weekday.h @@ -0,0 +1,255 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CHRONO_YEAR_MONTH_WEEKDAY_H +#define _LIBCPP___CHRONO_YEAR_MONTH_WEEKDAY_H + +#include <__chrono/calendar.h> +#include <__chrono/day.h> +#include <__chrono/duration.h> +#include <__chrono/month.h> +#include <__chrono/month_weekday.h> +#include <__chrono/system_clock.h> +#include <__chrono/time_point.h> +#include <__chrono/weekday.h> +#include <__chrono/year.h> +#include <__chrono/year_month.h> +#include <__chrono/year_month_day.h> +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace chrono +{ + +class year_month_weekday { + chrono::year __y_; + chrono::month __m_; + chrono::weekday_indexed __wdi_; +public: + year_month_weekday() = default; + _LIBCPP_HIDE_FROM_ABI constexpr year_month_weekday(const chrono::year& __yval, const chrono::month& __mval, + const chrono::weekday_indexed& __wdival) noexcept + : __y_{__yval}, __m_{__mval}, __wdi_{__wdival} {} + _LIBCPP_HIDE_FROM_ABI constexpr year_month_weekday(const sys_days& __sysd) noexcept + : year_month_weekday(__from_days(__sysd.time_since_epoch())) {} + _LIBCPP_HIDE_FROM_ABI inline explicit constexpr year_month_weekday(const local_days& __locd) noexcept + : year_month_weekday(__from_days(__locd.time_since_epoch())) {} + _LIBCPP_HIDE_FROM_ABI constexpr year_month_weekday& operator+=(const months&) noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr year_month_weekday& operator-=(const months&) noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr year_month_weekday& operator+=(const years&) noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr year_month_weekday& operator-=(const years&) noexcept; + + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::year year() const noexcept { return __y_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::month month() const noexcept { return __m_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::weekday weekday() const noexcept { return __wdi_.weekday(); } + _LIBCPP_HIDE_FROM_ABI inline constexpr unsigned index() const noexcept { return __wdi_.index(); } + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::weekday_indexed weekday_indexed() const noexcept { return __wdi_; } + + _LIBCPP_HIDE_FROM_ABI inline constexpr operator sys_days() const noexcept { return sys_days{__to_days()}; } + _LIBCPP_HIDE_FROM_ABI inline explicit constexpr operator local_days() const noexcept { return local_days{__to_days()}; } + _LIBCPP_HIDE_FROM_ABI inline constexpr bool ok() const noexcept + { + if (!__y_.ok() || !__m_.ok() || !__wdi_.ok()) return false; + if (__wdi_.index() <= 4) return true; + auto __nth_weekday_day = + __wdi_.weekday() - + chrono::weekday{static_cast(__y_ / __m_ / 1)} + + days{(__wdi_.index() - 1) * 7 + 1}; + return static_cast(__nth_weekday_day.count()) <= + static_cast((__y_ / __m_ / last).day()); + } + + _LIBCPP_HIDE_FROM_ABI static constexpr year_month_weekday __from_days(days __d) noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr days __to_days() const noexcept; +}; + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_weekday year_month_weekday::__from_days(days __d) noexcept +{ + const sys_days __sysd{__d}; + const chrono::weekday __wd = chrono::weekday(__sysd); + const year_month_day __ymd = year_month_day(__sysd); + return year_month_weekday{__ymd.year(), __ymd.month(), + __wd[(static_cast(__ymd.day())-1)/7+1]}; +} + +_LIBCPP_HIDE_FROM_ABI inline constexpr +days year_month_weekday::__to_days() const noexcept +{ + const sys_days __sysd = sys_days(__y_/__m_/1); + return (__sysd + (__wdi_.weekday() - chrono::weekday(__sysd) + days{(__wdi_.index()-1)*7})) + .time_since_epoch(); +} + +_LIBCPP_HIDE_FROM_ABI inline constexpr +bool operator==(const year_month_weekday& __lhs, const year_month_weekday& __rhs) noexcept +{ return __lhs.year() == __rhs.year() && __lhs.month() == __rhs.month() && __lhs.weekday_indexed() == __rhs.weekday_indexed(); } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +bool operator!=(const year_month_weekday& __lhs, const year_month_weekday& __rhs) noexcept +{ return !(__lhs == __rhs); } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_weekday operator/(const year_month& __lhs, const weekday_indexed& __rhs) noexcept +{ return year_month_weekday{__lhs.year(), __lhs.month(), __rhs}; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_weekday operator/(const year& __lhs, const month_weekday& __rhs) noexcept +{ return year_month_weekday{__lhs, __rhs.month(), __rhs.weekday_indexed()}; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_weekday operator/(int __lhs, const month_weekday& __rhs) noexcept +{ return year(__lhs) / __rhs; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_weekday operator/(const month_weekday& __lhs, const year& __rhs) noexcept +{ return __rhs / __lhs; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_weekday operator/(const month_weekday& __lhs, int __rhs) noexcept +{ return year(__rhs) / __lhs; } + + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_weekday operator+(const year_month_weekday& __lhs, const months& __rhs) noexcept +{ return (__lhs.year() / __lhs.month() + __rhs) / __lhs.weekday_indexed(); } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_weekday operator+(const months& __lhs, const year_month_weekday& __rhs) noexcept +{ return __rhs + __lhs; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_weekday operator-(const year_month_weekday& __lhs, const months& __rhs) noexcept +{ return __lhs + (-__rhs); } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_weekday operator+(const year_month_weekday& __lhs, const years& __rhs) noexcept +{ return year_month_weekday{__lhs.year() + __rhs, __lhs.month(), __lhs.weekday_indexed()}; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_weekday operator+(const years& __lhs, const year_month_weekday& __rhs) noexcept +{ return __rhs + __lhs; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_weekday operator-(const year_month_weekday& __lhs, const years& __rhs) noexcept +{ return __lhs + (-__rhs); } + + +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday& year_month_weekday::operator+=(const months& __dm) noexcept { *this = *this + __dm; return *this; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday& year_month_weekday::operator-=(const months& __dm) noexcept { *this = *this - __dm; return *this; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday& year_month_weekday::operator+=(const years& __dy) noexcept { *this = *this + __dy; return *this; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday& year_month_weekday::operator-=(const years& __dy) noexcept { *this = *this - __dy; return *this; } + +class year_month_weekday_last { +private: + chrono::year __y_; + chrono::month __m_; + chrono::weekday_last __wdl_; +public: + _LIBCPP_HIDE_FROM_ABI constexpr year_month_weekday_last(const chrono::year& __yval, const chrono::month& __mval, + const chrono::weekday_last& __wdlval) noexcept + : __y_{__yval}, __m_{__mval}, __wdl_{__wdlval} {} + _LIBCPP_HIDE_FROM_ABI constexpr year_month_weekday_last& operator+=(const months& __dm) noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr year_month_weekday_last& operator-=(const months& __dm) noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr year_month_weekday_last& operator+=(const years& __dy) noexcept; + _LIBCPP_HIDE_FROM_ABI constexpr year_month_weekday_last& operator-=(const years& __dy) noexcept; + + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::year year() const noexcept { return __y_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::month month() const noexcept { return __m_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::weekday weekday() const noexcept { return __wdl_.weekday(); } + _LIBCPP_HIDE_FROM_ABI inline constexpr chrono::weekday_last weekday_last() const noexcept { return __wdl_; } + _LIBCPP_HIDE_FROM_ABI inline constexpr operator sys_days() const noexcept { return sys_days{__to_days()}; } + _LIBCPP_HIDE_FROM_ABI inline explicit constexpr operator local_days() const noexcept { return local_days{__to_days()}; } + _LIBCPP_HIDE_FROM_ABI inline constexpr bool ok() const noexcept { return __y_.ok() && __m_.ok() && __wdl_.ok(); } + + _LIBCPP_HIDE_FROM_ABI constexpr days __to_days() const noexcept; + +}; + +_LIBCPP_HIDE_FROM_ABI inline constexpr +days year_month_weekday_last::__to_days() const noexcept +{ + const sys_days __last = sys_days{__y_/__m_/last}; + return (__last - (chrono::weekday{__last} - __wdl_.weekday())).time_since_epoch(); + +} + +_LIBCPP_HIDE_FROM_ABI inline constexpr +bool operator==(const year_month_weekday_last& __lhs, const year_month_weekday_last& __rhs) noexcept +{ return __lhs.year() == __rhs.year() && __lhs.month() == __rhs.month() && __lhs.weekday_last() == __rhs.weekday_last(); } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +bool operator!=(const year_month_weekday_last& __lhs, const year_month_weekday_last& __rhs) noexcept +{ return !(__lhs == __rhs); } + + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_weekday_last operator/(const year_month& __lhs, const weekday_last& __rhs) noexcept +{ return year_month_weekday_last{__lhs.year(), __lhs.month(), __rhs}; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_weekday_last operator/(const year& __lhs, const month_weekday_last& __rhs) noexcept +{ return year_month_weekday_last{__lhs, __rhs.month(), __rhs.weekday_last()}; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_weekday_last operator/(int __lhs, const month_weekday_last& __rhs) noexcept +{ return year(__lhs) / __rhs; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_weekday_last operator/(const month_weekday_last& __lhs, const year& __rhs) noexcept +{ return __rhs / __lhs; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_weekday_last operator/(const month_weekday_last& __lhs, int __rhs) noexcept +{ return year(__rhs) / __lhs; } + + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_weekday_last operator+(const year_month_weekday_last& __lhs, const months& __rhs) noexcept +{ return (__lhs.year() / __lhs.month() + __rhs) / __lhs.weekday_last(); } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_weekday_last operator+(const months& __lhs, const year_month_weekday_last& __rhs) noexcept +{ return __rhs + __lhs; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_weekday_last operator-(const year_month_weekday_last& __lhs, const months& __rhs) noexcept +{ return __lhs + (-__rhs); } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_weekday_last operator+(const year_month_weekday_last& __lhs, const years& __rhs) noexcept +{ return year_month_weekday_last{__lhs.year() + __rhs, __lhs.month(), __lhs.weekday_last()}; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_weekday_last operator+(const years& __lhs, const year_month_weekday_last& __rhs) noexcept +{ return __rhs + __lhs; } + +_LIBCPP_HIDE_FROM_ABI inline constexpr +year_month_weekday_last operator-(const year_month_weekday_last& __lhs, const years& __rhs) noexcept +{ return __lhs + (-__rhs); } + +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday_last& year_month_weekday_last::operator+=(const months& __dm) noexcept { *this = *this + __dm; return *this; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday_last& year_month_weekday_last::operator-=(const months& __dm) noexcept { *this = *this - __dm; return *this; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday_last& year_month_weekday_last::operator+=(const years& __dy) noexcept { *this = *this + __dy; return *this; } +_LIBCPP_HIDE_FROM_ABI inline constexpr year_month_weekday_last& year_month_weekday_last::operator-=(const years& __dy) noexcept { *this = *this - __dy; return *this; } + +} // namespace chrono + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___CHRONO_YEAR_MONTH_WEEKDAY_H diff --git a/third_party/libcxx/__compare/common_comparison_category.h b/third_party/libcxx/__compare/common_comparison_category.h new file mode 100644 index 000000000..5fad99bf5 --- /dev/null +++ b/third_party/libcxx/__compare/common_comparison_category.h @@ -0,0 +1,95 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___COMPARE_COMMON_COMPARISON_CATEGORY_H +#define _LIBCPP___COMPARE_COMMON_COMPARISON_CATEGORY_H + +#include <__compare/ordering.h> +#include <__config> +#include <__type_traits/is_same.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +namespace __comp_detail { + +enum _ClassifyCompCategory : unsigned { + _None, + _PartialOrd, + _WeakOrd, + _StrongOrd, + _CCC_Size +}; + +template +_LIBCPP_HIDE_FROM_ABI +constexpr _ClassifyCompCategory __type_to_enum() noexcept { + if (is_same_v<_Tp, partial_ordering>) + return _PartialOrd; + if (is_same_v<_Tp, weak_ordering>) + return _WeakOrd; + if (is_same_v<_Tp, strong_ordering>) + return _StrongOrd; + return _None; +} + +template +_LIBCPP_HIDE_FROM_ABI +constexpr _ClassifyCompCategory +__compute_comp_type(const _ClassifyCompCategory (&__types)[_Size]) { + int __seen[_CCC_Size] = {}; + for (auto __type : __types) + ++__seen[__type]; + if (__seen[_None]) + return _None; + if (__seen[_PartialOrd]) + return _PartialOrd; + if (__seen[_WeakOrd]) + return _WeakOrd; + return _StrongOrd; +} + +template +_LIBCPP_HIDE_FROM_ABI +constexpr auto __get_comp_type() { + using _CCC = _ClassifyCompCategory; + constexpr _CCC __type_kinds[] = {_StrongOrd, __type_to_enum<_Ts>()...}; + constexpr _CCC __cat = __comp_detail::__compute_comp_type(__type_kinds); + if constexpr (__cat == _None) + return void(); + else if constexpr (__cat == _PartialOrd) + return partial_ordering::equivalent; + else if constexpr (__cat == _WeakOrd) + return weak_ordering::equivalent; + else if constexpr (__cat == _StrongOrd) + return strong_ordering::equivalent; + else + static_assert(_False, "unhandled case"); +} +} // namespace __comp_detail + +// [cmp.common], common comparison category type +template +struct _LIBCPP_TEMPLATE_VIS common_comparison_category { + using type = decltype(__comp_detail::__get_comp_type<_Ts...>()); +}; + +template +using common_comparison_category_t = typename common_comparison_category<_Ts...>::type; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___COMPARE_COMMON_COMPARISON_CATEGORY_H diff --git a/third_party/libcxx/__compare/compare_partial_order_fallback.h b/third_party/libcxx/__compare/compare_partial_order_fallback.h new file mode 100644 index 000000000..fb2921ed5 --- /dev/null +++ b/third_party/libcxx/__compare/compare_partial_order_fallback.h @@ -0,0 +1,74 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___COMPARE_COMPARE_PARTIAL_ORDER_FALLBACK +#define _LIBCPP___COMPARE_COMPARE_PARTIAL_ORDER_FALLBACK + +#include <__compare/ordering.h> +#include <__compare/partial_order.h> +#include <__config> +#include <__type_traits/decay.h> +#include <__type_traits/is_same.h> +#include <__utility/forward.h> +#include <__utility/priority_tag.h> + +#ifndef _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +// [cmp.alg] +namespace __compare_partial_order_fallback { + struct __fn { + template + requires is_same_v, decay_t<_Up>> + _LIBCPP_HIDE_FROM_ABI static constexpr auto + __go(_Tp&& __t, _Up&& __u, __priority_tag<1>) + noexcept(noexcept(_VSTD::partial_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u)))) + -> decltype( _VSTD::partial_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))) + { return _VSTD::partial_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u)); } + + template + requires is_same_v, decay_t<_Up>> + _LIBCPP_HIDE_FROM_ABI static constexpr auto + __go(_Tp&& __t, _Up&& __u, __priority_tag<0>) + noexcept(noexcept(_VSTD::forward<_Tp>(__t) == _VSTD::forward<_Up>(__u) ? partial_ordering::equivalent : + _VSTD::forward<_Tp>(__t) < _VSTD::forward<_Up>(__u) ? partial_ordering::less : + _VSTD::forward<_Up>(__u) < _VSTD::forward<_Tp>(__t) ? partial_ordering::greater : + partial_ordering::unordered)) + -> decltype( _VSTD::forward<_Tp>(__t) == _VSTD::forward<_Up>(__u) ? partial_ordering::equivalent : + _VSTD::forward<_Tp>(__t) < _VSTD::forward<_Up>(__u) ? partial_ordering::less : + _VSTD::forward<_Up>(__u) < _VSTD::forward<_Tp>(__t) ? partial_ordering::greater : + partial_ordering::unordered) + { + return _VSTD::forward<_Tp>(__t) == _VSTD::forward<_Up>(__u) ? partial_ordering::equivalent : + _VSTD::forward<_Tp>(__t) < _VSTD::forward<_Up>(__u) ? partial_ordering::less : + _VSTD::forward<_Up>(__u) < _VSTD::forward<_Tp>(__t) ? partial_ordering::greater : + partial_ordering::unordered; + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Tp&& __t, _Up&& __u) const + noexcept(noexcept(__go(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u), __priority_tag<1>()))) + -> decltype( __go(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u), __priority_tag<1>())) + { return __go(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u), __priority_tag<1>()); } + }; +} // namespace __compare_partial_order_fallback + +inline namespace __cpo { + inline constexpr auto compare_partial_order_fallback = __compare_partial_order_fallback::__fn{}; +} // namespace __cpo + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___COMPARE_COMPARE_PARTIAL_ORDER_FALLBACK diff --git a/third_party/libcxx/__compare/compare_strong_order_fallback.h b/third_party/libcxx/__compare/compare_strong_order_fallback.h new file mode 100644 index 000000000..d84d065e4 --- /dev/null +++ b/third_party/libcxx/__compare/compare_strong_order_fallback.h @@ -0,0 +1,71 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___COMPARE_COMPARE_STRONG_ORDER_FALLBACK +#define _LIBCPP___COMPARE_COMPARE_STRONG_ORDER_FALLBACK + +#include <__compare/ordering.h> +#include <__compare/strong_order.h> +#include <__config> +#include <__type_traits/decay.h> +#include <__type_traits/is_same.h> +#include <__utility/forward.h> +#include <__utility/priority_tag.h> + +#ifndef _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +// [cmp.alg] +namespace __compare_strong_order_fallback { + struct __fn { + template + requires is_same_v, decay_t<_Up>> + _LIBCPP_HIDE_FROM_ABI static constexpr auto + __go(_Tp&& __t, _Up&& __u, __priority_tag<1>) + noexcept(noexcept(_VSTD::strong_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u)))) + -> decltype( _VSTD::strong_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))) + { return _VSTD::strong_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u)); } + + template + requires is_same_v, decay_t<_Up>> + _LIBCPP_HIDE_FROM_ABI static constexpr auto + __go(_Tp&& __t, _Up&& __u, __priority_tag<0>) + noexcept(noexcept(_VSTD::forward<_Tp>(__t) == _VSTD::forward<_Up>(__u) ? strong_ordering::equal : + _VSTD::forward<_Tp>(__t) < _VSTD::forward<_Up>(__u) ? strong_ordering::less : + strong_ordering::greater)) + -> decltype( _VSTD::forward<_Tp>(__t) == _VSTD::forward<_Up>(__u) ? strong_ordering::equal : + _VSTD::forward<_Tp>(__t) < _VSTD::forward<_Up>(__u) ? strong_ordering::less : + strong_ordering::greater) + { + return _VSTD::forward<_Tp>(__t) == _VSTD::forward<_Up>(__u) ? strong_ordering::equal : + _VSTD::forward<_Tp>(__t) < _VSTD::forward<_Up>(__u) ? strong_ordering::less : + strong_ordering::greater; + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Tp&& __t, _Up&& __u) const + noexcept(noexcept(__go(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u), __priority_tag<1>()))) + -> decltype( __go(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u), __priority_tag<1>())) + { return __go(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u), __priority_tag<1>()); } + }; +} // namespace __compare_strong_order_fallback + +inline namespace __cpo { + inline constexpr auto compare_strong_order_fallback = __compare_strong_order_fallback::__fn{}; +} // namespace __cpo + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___COMPARE_COMPARE_STRONG_ORDER_FALLBACK diff --git a/third_party/libcxx/__compare/compare_three_way.h b/third_party/libcxx/__compare/compare_three_way.h new file mode 100644 index 000000000..2bc63a00e --- /dev/null +++ b/third_party/libcxx/__compare/compare_three_way.h @@ -0,0 +1,41 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___COMPARE_COMPARE_THREE_WAY_H +#define _LIBCPP___COMPARE_COMPARE_THREE_WAY_H + +#include <__compare/three_way_comparable.h> +#include <__config> +#include <__utility/forward.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +struct _LIBCPP_TEMPLATE_VIS compare_three_way +{ + template + requires three_way_comparable_with<_T1, _T2> + constexpr _LIBCPP_HIDE_FROM_ABI + auto operator()(_T1&& __t, _T2&& __u) const + noexcept(noexcept(_VSTD::forward<_T1>(__t) <=> _VSTD::forward<_T2>(__u))) + { return _VSTD::forward<_T1>(__t) <=> _VSTD::forward<_T2>(__u); } + + using is_transparent = void; +}; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___COMPARE_COMPARE_THREE_WAY_H diff --git a/third_party/libcxx/__compare/compare_three_way_result.h b/third_party/libcxx/__compare/compare_three_way_result.h new file mode 100644 index 000000000..632ebdce1 --- /dev/null +++ b/third_party/libcxx/__compare/compare_three_way_result.h @@ -0,0 +1,44 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___COMPARE_COMPARE_THREE_WAY_RESULT_H +#define _LIBCPP___COMPARE_COMPARE_THREE_WAY_RESULT_H + +#include <__config> +#include <__type_traits/make_const_lvalue_ref.h> +#include <__utility/declval.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +template +struct _LIBCPP_HIDE_FROM_ABI __compare_three_way_result { }; + +template +struct _LIBCPP_HIDE_FROM_ABI __compare_three_way_result<_Tp, _Up, decltype( + std::declval<__make_const_lvalue_ref<_Tp>>() <=> std::declval<__make_const_lvalue_ref<_Up>>(), void() +)> { + using type = decltype(std::declval<__make_const_lvalue_ref<_Tp>>() <=> std::declval<__make_const_lvalue_ref<_Up>>()); +}; + +template +struct _LIBCPP_TEMPLATE_VIS compare_three_way_result : __compare_three_way_result<_Tp, _Up, void> { }; + +template +using compare_three_way_result_t = typename compare_three_way_result<_Tp, _Up>::type; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___COMPARE_COMPARE_THREE_WAY_RESULT_H diff --git a/third_party/libcxx/__compare/compare_weak_order_fallback.h b/third_party/libcxx/__compare/compare_weak_order_fallback.h new file mode 100644 index 000000000..d3ba04a86 --- /dev/null +++ b/third_party/libcxx/__compare/compare_weak_order_fallback.h @@ -0,0 +1,71 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___COMPARE_COMPARE_WEAK_ORDER_FALLBACK +#define _LIBCPP___COMPARE_COMPARE_WEAK_ORDER_FALLBACK + +#include <__compare/ordering.h> +#include <__compare/weak_order.h> +#include <__config> +#include <__type_traits/decay.h> +#include <__type_traits/is_same.h> +#include <__utility/forward.h> +#include <__utility/priority_tag.h> + +#ifndef _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +// [cmp.alg] +namespace __compare_weak_order_fallback { + struct __fn { + template + requires is_same_v, decay_t<_Up>> + _LIBCPP_HIDE_FROM_ABI static constexpr auto + __go(_Tp&& __t, _Up&& __u, __priority_tag<1>) + noexcept(noexcept(_VSTD::weak_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u)))) + -> decltype( _VSTD::weak_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))) + { return _VSTD::weak_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u)); } + + template + requires is_same_v, decay_t<_Up>> + _LIBCPP_HIDE_FROM_ABI static constexpr auto + __go(_Tp&& __t, _Up&& __u, __priority_tag<0>) + noexcept(noexcept(_VSTD::forward<_Tp>(__t) == _VSTD::forward<_Up>(__u) ? weak_ordering::equivalent : + _VSTD::forward<_Tp>(__t) < _VSTD::forward<_Up>(__u) ? weak_ordering::less : + weak_ordering::greater)) + -> decltype( _VSTD::forward<_Tp>(__t) == _VSTD::forward<_Up>(__u) ? weak_ordering::equivalent : + _VSTD::forward<_Tp>(__t) < _VSTD::forward<_Up>(__u) ? weak_ordering::less : + weak_ordering::greater) + { + return _VSTD::forward<_Tp>(__t) == _VSTD::forward<_Up>(__u) ? weak_ordering::equivalent : + _VSTD::forward<_Tp>(__t) < _VSTD::forward<_Up>(__u) ? weak_ordering::less : + weak_ordering::greater; + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Tp&& __t, _Up&& __u) const + noexcept(noexcept(__go(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u), __priority_tag<1>()))) + -> decltype( __go(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u), __priority_tag<1>())) + { return __go(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u), __priority_tag<1>()); } + }; +} // namespace __compare_weak_order_fallback + +inline namespace __cpo { + inline constexpr auto compare_weak_order_fallback = __compare_weak_order_fallback::__fn{}; +} // namespace __cpo + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___COMPARE_COMPARE_WEAK_ORDER_FALLBACK diff --git a/third_party/libcxx/__compare/is_eq.h b/third_party/libcxx/__compare/is_eq.h new file mode 100644 index 000000000..9a82df1eb --- /dev/null +++ b/third_party/libcxx/__compare/is_eq.h @@ -0,0 +1,34 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___COMPARE_IS_EQ_H +#define _LIBCPP___COMPARE_IS_EQ_H + +#include <__compare/ordering.h> +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_HIDE_FROM_ABI inline constexpr bool is_eq(partial_ordering __c) noexcept { return __c == 0; } +_LIBCPP_HIDE_FROM_ABI inline constexpr bool is_neq(partial_ordering __c) noexcept { return __c != 0; } +_LIBCPP_HIDE_FROM_ABI inline constexpr bool is_lt(partial_ordering __c) noexcept { return __c < 0; } +_LIBCPP_HIDE_FROM_ABI inline constexpr bool is_lteq(partial_ordering __c) noexcept { return __c <= 0; } +_LIBCPP_HIDE_FROM_ABI inline constexpr bool is_gt(partial_ordering __c) noexcept { return __c > 0; } +_LIBCPP_HIDE_FROM_ABI inline constexpr bool is_gteq(partial_ordering __c) noexcept { return __c >= 0; } + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___COMPARE_IS_EQ_H diff --git a/third_party/libcxx/__compare/ordering.h b/third_party/libcxx/__compare/ordering.h new file mode 100644 index 000000000..c348f0433 --- /dev/null +++ b/third_party/libcxx/__compare/ordering.h @@ -0,0 +1,326 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___COMPARE_ORDERING_H +#define _LIBCPP___COMPARE_ORDERING_H + +#include <__config> +#include <__type_traits/enable_if.h> +#include <__type_traits/is_same.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +// exposition only +enum class _LIBCPP_ENUM_VIS _OrdResult : signed char { + __less = -1, + __equiv = 0, + __greater = 1 +}; + +enum class _LIBCPP_ENUM_VIS _NCmpResult : signed char { + __unordered = -127 +}; + +class partial_ordering; +class weak_ordering; +class strong_ordering; + +template +inline constexpr bool __one_of_v = (is_same_v<_Tp, _Args> || ...); + +struct _CmpUnspecifiedParam { + _LIBCPP_HIDE_FROM_ABI constexpr + _CmpUnspecifiedParam(int _CmpUnspecifiedParam::*) noexcept {} + + template>> + _CmpUnspecifiedParam(_Tp) = delete; +}; + +class partial_ordering { + using _ValueT = signed char; + + _LIBCPP_HIDE_FROM_ABI + explicit constexpr partial_ordering(_OrdResult __v) noexcept + : __value_(_ValueT(__v)) {} + + _LIBCPP_HIDE_FROM_ABI + explicit constexpr partial_ordering(_NCmpResult __v) noexcept + : __value_(_ValueT(__v)) {} + + _LIBCPP_HIDE_FROM_ABI + constexpr bool __is_ordered() const noexcept { + return __value_ != _ValueT(_NCmpResult::__unordered); + } +public: + // valid values + static const partial_ordering less; + static const partial_ordering equivalent; + static const partial_ordering greater; + static const partial_ordering unordered; + + // comparisons + _LIBCPP_HIDE_FROM_ABI + friend constexpr bool operator==(partial_ordering, partial_ordering) noexcept = default; + + _LIBCPP_HIDE_FROM_ABI + friend constexpr bool operator==(partial_ordering __v, _CmpUnspecifiedParam) noexcept { + return __v.__is_ordered() && __v.__value_ == 0; + } + + _LIBCPP_HIDE_FROM_ABI + friend constexpr bool operator< (partial_ordering __v, _CmpUnspecifiedParam) noexcept { + return __v.__is_ordered() && __v.__value_ < 0; + } + + _LIBCPP_HIDE_FROM_ABI + friend constexpr bool operator<=(partial_ordering __v, _CmpUnspecifiedParam) noexcept { + return __v.__is_ordered() && __v.__value_ <= 0; + } + + _LIBCPP_HIDE_FROM_ABI + friend constexpr bool operator> (partial_ordering __v, _CmpUnspecifiedParam) noexcept { + return __v.__is_ordered() && __v.__value_ > 0; + } + + _LIBCPP_HIDE_FROM_ABI + friend constexpr bool operator>=(partial_ordering __v, _CmpUnspecifiedParam) noexcept { + return __v.__is_ordered() && __v.__value_ >= 0; + } + + _LIBCPP_HIDE_FROM_ABI + friend constexpr bool operator< (_CmpUnspecifiedParam, partial_ordering __v) noexcept { + return __v.__is_ordered() && 0 < __v.__value_; + } + + _LIBCPP_HIDE_FROM_ABI + friend constexpr bool operator<=(_CmpUnspecifiedParam, partial_ordering __v) noexcept { + return __v.__is_ordered() && 0 <= __v.__value_; + } + + _LIBCPP_HIDE_FROM_ABI + friend constexpr bool operator> (_CmpUnspecifiedParam, partial_ordering __v) noexcept { + return __v.__is_ordered() && 0 > __v.__value_; + } + + _LIBCPP_HIDE_FROM_ABI + friend constexpr bool operator>=(_CmpUnspecifiedParam, partial_ordering __v) noexcept { + return __v.__is_ordered() && 0 >= __v.__value_; + } + + _LIBCPP_HIDE_FROM_ABI + friend constexpr partial_ordering operator<=>(partial_ordering __v, _CmpUnspecifiedParam) noexcept { + return __v; + } + + _LIBCPP_HIDE_FROM_ABI + friend constexpr partial_ordering operator<=>(_CmpUnspecifiedParam, partial_ordering __v) noexcept { + return __v < 0 ? partial_ordering::greater : (__v > 0 ? partial_ordering::less : __v); + } +private: + _ValueT __value_; +}; + +inline constexpr partial_ordering partial_ordering::less(_OrdResult::__less); +inline constexpr partial_ordering partial_ordering::equivalent(_OrdResult::__equiv); +inline constexpr partial_ordering partial_ordering::greater(_OrdResult::__greater); +inline constexpr partial_ordering partial_ordering::unordered(_NCmpResult ::__unordered); + +class weak_ordering { + using _ValueT = signed char; + + _LIBCPP_HIDE_FROM_ABI + explicit constexpr weak_ordering(_OrdResult __v) noexcept : __value_(_ValueT(__v)) {} + +public: + static const weak_ordering less; + static const weak_ordering equivalent; + static const weak_ordering greater; + + _LIBCPP_HIDE_FROM_ABI + constexpr operator partial_ordering() const noexcept { + return __value_ == 0 ? partial_ordering::equivalent + : (__value_ < 0 ? partial_ordering::less : partial_ordering::greater); + } + + // comparisons + _LIBCPP_HIDE_FROM_ABI + friend constexpr bool operator==(weak_ordering, weak_ordering) noexcept = default; + + _LIBCPP_HIDE_FROM_ABI + friend constexpr bool operator==(weak_ordering __v, _CmpUnspecifiedParam) noexcept { + return __v.__value_ == 0; + } + + _LIBCPP_HIDE_FROM_ABI + friend constexpr bool operator< (weak_ordering __v, _CmpUnspecifiedParam) noexcept { + return __v.__value_ < 0; + } + + _LIBCPP_HIDE_FROM_ABI + friend constexpr bool operator<=(weak_ordering __v, _CmpUnspecifiedParam) noexcept { + return __v.__value_ <= 0; + } + + _LIBCPP_HIDE_FROM_ABI + friend constexpr bool operator> (weak_ordering __v, _CmpUnspecifiedParam) noexcept { + return __v.__value_ > 0; + } + + _LIBCPP_HIDE_FROM_ABI + friend constexpr bool operator>=(weak_ordering __v, _CmpUnspecifiedParam) noexcept { + return __v.__value_ >= 0; + } + + _LIBCPP_HIDE_FROM_ABI + friend constexpr bool operator< (_CmpUnspecifiedParam, weak_ordering __v) noexcept { + return 0 < __v.__value_; + } + + _LIBCPP_HIDE_FROM_ABI + friend constexpr bool operator<=(_CmpUnspecifiedParam, weak_ordering __v) noexcept { + return 0 <= __v.__value_; + } + + _LIBCPP_HIDE_FROM_ABI + friend constexpr bool operator> (_CmpUnspecifiedParam, weak_ordering __v) noexcept { + return 0 > __v.__value_; + } + + _LIBCPP_HIDE_FROM_ABI + friend constexpr bool operator>=(_CmpUnspecifiedParam, weak_ordering __v) noexcept { + return 0 >= __v.__value_; + } + + _LIBCPP_HIDE_FROM_ABI + friend constexpr weak_ordering operator<=>(weak_ordering __v, _CmpUnspecifiedParam) noexcept { + return __v; + } + + _LIBCPP_HIDE_FROM_ABI + friend constexpr weak_ordering operator<=>(_CmpUnspecifiedParam, weak_ordering __v) noexcept { + return __v < 0 ? weak_ordering::greater : (__v > 0 ? weak_ordering::less : __v); + } + +private: + _ValueT __value_; +}; + +inline constexpr weak_ordering weak_ordering::less(_OrdResult::__less); +inline constexpr weak_ordering weak_ordering::equivalent(_OrdResult::__equiv); +inline constexpr weak_ordering weak_ordering::greater(_OrdResult::__greater); + +class strong_ordering { + using _ValueT = signed char; + + _LIBCPP_HIDE_FROM_ABI + explicit constexpr strong_ordering(_OrdResult __v) noexcept : __value_(_ValueT(__v)) {} + +public: + static const strong_ordering less; + static const strong_ordering equal; + static const strong_ordering equivalent; + static const strong_ordering greater; + + // conversions + _LIBCPP_HIDE_FROM_ABI + constexpr operator partial_ordering() const noexcept { + return __value_ == 0 ? partial_ordering::equivalent + : (__value_ < 0 ? partial_ordering::less : partial_ordering::greater); + } + + _LIBCPP_HIDE_FROM_ABI + constexpr operator weak_ordering() const noexcept { + return __value_ == 0 ? weak_ordering::equivalent + : (__value_ < 0 ? weak_ordering::less : weak_ordering::greater); + } + + // comparisons + _LIBCPP_HIDE_FROM_ABI + friend constexpr bool operator==(strong_ordering, strong_ordering) noexcept = default; + + _LIBCPP_HIDE_FROM_ABI + friend constexpr bool operator==(strong_ordering __v, _CmpUnspecifiedParam) noexcept { + return __v.__value_ == 0; + } + + _LIBCPP_HIDE_FROM_ABI + friend constexpr bool operator< (strong_ordering __v, _CmpUnspecifiedParam) noexcept { + return __v.__value_ < 0; + } + + _LIBCPP_HIDE_FROM_ABI + friend constexpr bool operator<=(strong_ordering __v, _CmpUnspecifiedParam) noexcept { + return __v.__value_ <= 0; + } + + _LIBCPP_HIDE_FROM_ABI + friend constexpr bool operator> (strong_ordering __v, _CmpUnspecifiedParam) noexcept { + return __v.__value_ > 0; + } + + _LIBCPP_HIDE_FROM_ABI + friend constexpr bool operator>=(strong_ordering __v, _CmpUnspecifiedParam) noexcept { + return __v.__value_ >= 0; + } + + _LIBCPP_HIDE_FROM_ABI + friend constexpr bool operator< (_CmpUnspecifiedParam, strong_ordering __v) noexcept { + return 0 < __v.__value_; + } + + _LIBCPP_HIDE_FROM_ABI + friend constexpr bool operator<=(_CmpUnspecifiedParam, strong_ordering __v) noexcept { + return 0 <= __v.__value_; + } + + _LIBCPP_HIDE_FROM_ABI + friend constexpr bool operator> (_CmpUnspecifiedParam, strong_ordering __v) noexcept { + return 0 > __v.__value_; + } + + _LIBCPP_HIDE_FROM_ABI + friend constexpr bool operator>=(_CmpUnspecifiedParam, strong_ordering __v) noexcept { + return 0 >= __v.__value_; + } + + _LIBCPP_HIDE_FROM_ABI + friend constexpr strong_ordering operator<=>(strong_ordering __v, _CmpUnspecifiedParam) noexcept { + return __v; + } + + _LIBCPP_HIDE_FROM_ABI + friend constexpr strong_ordering operator<=>(_CmpUnspecifiedParam, strong_ordering __v) noexcept { + return __v < 0 ? strong_ordering::greater : (__v > 0 ? strong_ordering::less : __v); + } + +private: + _ValueT __value_; +}; + +inline constexpr strong_ordering strong_ordering::less(_OrdResult::__less); +inline constexpr strong_ordering strong_ordering::equal(_OrdResult::__equiv); +inline constexpr strong_ordering strong_ordering::equivalent(_OrdResult::__equiv); +inline constexpr strong_ordering strong_ordering::greater(_OrdResult::__greater); + +/// [cmp.categories.pre]/1 +/// The types partial_ordering, weak_ordering, and strong_ordering are +/// collectively termed the comparison category types. +template +concept __comparison_category = __one_of_v<_Tp, partial_ordering, weak_ordering, strong_ordering>; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___COMPARE_ORDERING_H diff --git a/third_party/libcxx/__compare/partial_order.h b/third_party/libcxx/__compare/partial_order.h new file mode 100644 index 000000000..9cb76cc5b --- /dev/null +++ b/third_party/libcxx/__compare/partial_order.h @@ -0,0 +1,74 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___COMPARE_PARTIAL_ORDER +#define _LIBCPP___COMPARE_PARTIAL_ORDER + +#include <__compare/compare_three_way.h> +#include <__compare/ordering.h> +#include <__compare/weak_order.h> +#include <__config> +#include <__type_traits/decay.h> +#include <__type_traits/is_same.h> +#include <__utility/forward.h> +#include <__utility/priority_tag.h> + +#ifndef _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +// [cmp.alg] +namespace __partial_order { + struct __fn { + // NOLINTBEGIN(libcpp-robust-against-adl) partial_order should use ADL, but only here + template + requires is_same_v, decay_t<_Up>> + _LIBCPP_HIDE_FROM_ABI static constexpr auto + __go(_Tp&& __t, _Up&& __u, __priority_tag<2>) + noexcept(noexcept(partial_ordering(partial_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))))) + -> decltype( partial_ordering(partial_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u)))) + { return partial_ordering(partial_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))); } + // NOLINTEND(libcpp-robust-against-adl) + + template + requires is_same_v, decay_t<_Up>> + _LIBCPP_HIDE_FROM_ABI static constexpr auto + __go(_Tp&& __t, _Up&& __u, __priority_tag<1>) + noexcept(noexcept(partial_ordering(compare_three_way()(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))))) + -> decltype( partial_ordering(compare_three_way()(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u)))) + { return partial_ordering(compare_three_way()(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))); } + + template + requires is_same_v, decay_t<_Up>> + _LIBCPP_HIDE_FROM_ABI static constexpr auto + __go(_Tp&& __t, _Up&& __u, __priority_tag<0>) + noexcept(noexcept(partial_ordering(_VSTD::weak_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))))) + -> decltype( partial_ordering(_VSTD::weak_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u)))) + { return partial_ordering(_VSTD::weak_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))); } + + template + _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Tp&& __t, _Up&& __u) const + noexcept(noexcept(__go(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u), __priority_tag<2>()))) + -> decltype( __go(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u), __priority_tag<2>())) + { return __go(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u), __priority_tag<2>()); } + }; +} // namespace __partial_order + +inline namespace __cpo { + inline constexpr auto partial_order = __partial_order::__fn{}; +} // namespace __cpo + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___COMPARE_PARTIAL_ORDER diff --git a/third_party/libcxx/__compare/strong_order.h b/third_party/libcxx/__compare/strong_order.h new file mode 100644 index 000000000..b6e0cfaaa --- /dev/null +++ b/third_party/libcxx/__compare/strong_order.h @@ -0,0 +1,139 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___COMPARE_STRONG_ORDER +#define _LIBCPP___COMPARE_STRONG_ORDER + +#include <__bit/bit_cast.h> +#include <__compare/compare_three_way.h> +#include <__compare/ordering.h> +#include <__config> +#include <__type_traits/conditional.h> +#include <__type_traits/decay.h> +#include <__utility/forward.h> +#include <__utility/priority_tag.h> +#include +#include +#include + +#ifndef _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER +# pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +// [cmp.alg] +namespace __strong_order { + struct __fn { + // NOLINTBEGIN(libcpp-robust-against-adl) strong_order should use ADL, but only here + template + requires is_same_v, decay_t<_Up>> + _LIBCPP_HIDE_FROM_ABI static constexpr auto + __go(_Tp&& __t, _Up&& __u, __priority_tag<2>) + noexcept(noexcept(strong_ordering(strong_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))))) + -> decltype( strong_ordering(strong_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u)))) + { return strong_ordering(strong_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))); } + // NOLINTEND(libcpp-robust-against-adl) + + template> + requires is_same_v<_Dp, decay_t<_Up>> && is_floating_point_v<_Dp> + _LIBCPP_HIDE_FROM_ABI static constexpr strong_ordering + __go(_Tp&& __t, _Up&& __u, __priority_tag<1>) noexcept + { + if constexpr (numeric_limits<_Dp>::is_iec559 && sizeof(_Dp) == sizeof(int32_t)) { + int32_t __rx = _VSTD::bit_cast(__t); + int32_t __ry = _VSTD::bit_cast(__u); + __rx = (__rx < 0) ? (numeric_limits::min() - __rx - 1) : __rx; + __ry = (__ry < 0) ? (numeric_limits::min() - __ry - 1) : __ry; + return (__rx <=> __ry); + } else if constexpr (numeric_limits<_Dp>::is_iec559 && sizeof(_Dp) == sizeof(int64_t)) { + int64_t __rx = _VSTD::bit_cast(__t); + int64_t __ry = _VSTD::bit_cast(__u); + __rx = (__rx < 0) ? (numeric_limits::min() - __rx - 1) : __rx; + __ry = (__ry < 0) ? (numeric_limits::min() - __ry - 1) : __ry; + return (__rx <=> __ry); + } else if (__t < __u) { + return strong_ordering::less; + } else if (__t > __u) { + return strong_ordering::greater; + } else if (__t == __u) { + if constexpr (numeric_limits<_Dp>::radix == 2) { + return _VSTD::signbit(__u) <=> _VSTD::signbit(__t); + } else { + // This is bullet 3 of the IEEE754 algorithm, relevant + // only for decimal floating-point; + // see https://stackoverflow.com/questions/69068075/ + if (__t == 0 || _VSTD::isinf(__t)) { + return _VSTD::signbit(__u) <=> _VSTD::signbit(__t); + } else { + int __texp, __uexp; + (void)_VSTD::frexp(__t, &__texp); + (void)_VSTD::frexp(__u, &__uexp); + return (__t < 0) ? (__texp <=> __uexp) : (__uexp <=> __texp); + } + } + } else { + // They're unordered, so one of them must be a NAN. + // The order is -QNAN, -SNAN, numbers, +SNAN, +QNAN. + bool __t_is_nan = _VSTD::isnan(__t); + bool __u_is_nan = _VSTD::isnan(__u); + bool __t_is_negative = _VSTD::signbit(__t); + bool __u_is_negative = _VSTD::signbit(__u); + using _IntType = conditional_t< + sizeof(__t) == sizeof(int32_t), int32_t, conditional_t< + sizeof(__t) == sizeof(int64_t), int64_t, void> + >; + if constexpr (is_same_v<_IntType, void>) { + static_assert(sizeof(_Dp) == 0, "std::strong_order is unimplemented for this floating-point type"); + } else if (__t_is_nan && __u_is_nan) { + // Order by sign bit, then by "payload bits" (we'll just use bit_cast). + if (__t_is_negative != __u_is_negative) { + return (__u_is_negative <=> __t_is_negative); + } else { + return _VSTD::bit_cast<_IntType>(__t) <=> _VSTD::bit_cast<_IntType>(__u); + } + } else if (__t_is_nan) { + return __t_is_negative ? strong_ordering::less : strong_ordering::greater; + } else { + return __u_is_negative ? strong_ordering::greater : strong_ordering::less; + } + } + } + + template + requires is_same_v, decay_t<_Up>> + _LIBCPP_HIDE_FROM_ABI static constexpr auto + __go(_Tp&& __t, _Up&& __u, __priority_tag<0>) + noexcept(noexcept(strong_ordering(compare_three_way()(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))))) + -> decltype( strong_ordering(compare_three_way()(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u)))) + { return strong_ordering(compare_three_way()(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))); } + + template + _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Tp&& __t, _Up&& __u) const + noexcept(noexcept(__go(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u), __priority_tag<2>()))) + -> decltype( __go(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u), __priority_tag<2>())) + { return __go(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u), __priority_tag<2>()); } + }; +} // namespace __strong_order + +inline namespace __cpo { + inline constexpr auto strong_order = __strong_order::__fn{}; +} // namespace __cpo + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP___COMPARE_STRONG_ORDER diff --git a/third_party/libcxx/__compare/synth_three_way.h b/third_party/libcxx/__compare/synth_three_way.h new file mode 100644 index 000000000..6420d1362 --- /dev/null +++ b/third_party/libcxx/__compare/synth_three_way.h @@ -0,0 +1,57 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___COMPARE_SYNTH_THREE_WAY_H +#define _LIBCPP___COMPARE_SYNTH_THREE_WAY_H + +#include <__compare/ordering.h> +#include <__compare/three_way_comparable.h> +#include <__concepts/boolean_testable.h> +#include <__config> +#include <__utility/declval.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +// [expos.only.func] + +// TODO MODULES restore the lamba to match the Standard. +// See https://github.com/llvm/llvm-project/issues/57222 +//_LIBCPP_HIDE_FROM_ABI inline constexpr auto __synth_three_way = +// [](const _Tp& __t, const _Up& __u) +template +_LIBCPP_HIDE_FROM_ABI constexpr auto __synth_three_way(const _Tp& __t, const _Up& __u) + requires requires { + { __t < __u } -> __boolean_testable; + { __u < __t } -> __boolean_testable; + } +{ + if constexpr (three_way_comparable_with<_Tp, _Up>) { + return __t <=> __u; + } else { + if (__t < __u) + return weak_ordering::less; + if (__u < __t) + return weak_ordering::greater; + return weak_ordering::equivalent; + } +} + +template +using __synth_three_way_result = decltype(std::__synth_three_way(std::declval<_Tp&>(), std::declval<_Up&>())); + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___COMPARE_SYNTH_THREE_WAY_H diff --git a/third_party/libcxx/__compare/three_way_comparable.h b/third_party/libcxx/__compare/three_way_comparable.h new file mode 100644 index 000000000..2b77bc3f5 --- /dev/null +++ b/third_party/libcxx/__compare/three_way_comparable.h @@ -0,0 +1,59 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___COMPARE_THREE_WAY_COMPARABLE_H +#define _LIBCPP___COMPARE_THREE_WAY_COMPARABLE_H + +#include <__compare/common_comparison_category.h> +#include <__compare/ordering.h> +#include <__concepts/common_reference_with.h> +#include <__concepts/equality_comparable.h> +#include <__concepts/same_as.h> +#include <__concepts/totally_ordered.h> +#include <__config> +#include <__type_traits/common_reference.h> +#include <__type_traits/make_const_lvalue_ref.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +template +concept __compares_as = + same_as, _Cat>; + +template +concept three_way_comparable = + __weakly_equality_comparable_with<_Tp, _Tp> && + __partially_ordered_with<_Tp, _Tp> && + requires(__make_const_lvalue_ref<_Tp> __a, __make_const_lvalue_ref<_Tp> __b) { + { __a <=> __b } -> __compares_as<_Cat>; + }; + +template +concept three_way_comparable_with = + three_way_comparable<_Tp, _Cat> && + three_way_comparable<_Up, _Cat> && + common_reference_with<__make_const_lvalue_ref<_Tp>, __make_const_lvalue_ref<_Up>> && + three_way_comparable, __make_const_lvalue_ref<_Up>>, _Cat> && + __weakly_equality_comparable_with<_Tp, _Up> && + __partially_ordered_with<_Tp, _Up> && + requires(__make_const_lvalue_ref<_Tp> __t, __make_const_lvalue_ref<_Up> __u) { + { __t <=> __u } -> __compares_as<_Cat>; + { __u <=> __t } -> __compares_as<_Cat>; + }; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___COMPARE_THREE_WAY_COMPARABLE_H diff --git a/third_party/libcxx/__compare/weak_order.h b/third_party/libcxx/__compare/weak_order.h new file mode 100644 index 000000000..9cbc1d24a --- /dev/null +++ b/third_party/libcxx/__compare/weak_order.h @@ -0,0 +1,102 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___COMPARE_WEAK_ORDER +#define _LIBCPP___COMPARE_WEAK_ORDER + +#include <__compare/compare_three_way.h> +#include <__compare/ordering.h> +#include <__compare/strong_order.h> +#include <__config> +#include <__type_traits/decay.h> +#include <__utility/forward.h> +#include <__utility/priority_tag.h> +#include + +#ifndef _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +// [cmp.alg] +namespace __weak_order { + struct __fn { + // NOLINTBEGIN(libcpp-robust-against-adl) weak_order should use ADL, but only here + template + requires is_same_v, decay_t<_Up>> + _LIBCPP_HIDE_FROM_ABI static constexpr auto + __go(_Tp&& __t, _Up&& __u, __priority_tag<3>) + noexcept(noexcept(weak_ordering(weak_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))))) + -> decltype( weak_ordering(weak_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u)))) + { return weak_ordering(weak_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))); } + // NOLINTEND(libcpp-robust-against-adl) + + template> + requires is_same_v<_Dp, decay_t<_Up>> && is_floating_point_v<_Dp> + _LIBCPP_HIDE_FROM_ABI static constexpr weak_ordering + __go(_Tp&& __t, _Up&& __u, __priority_tag<2>) noexcept + { + partial_ordering __po = (__t <=> __u); + if (__po == partial_ordering::less) { + return weak_ordering::less; + } else if (__po == partial_ordering::equivalent) { + return weak_ordering::equivalent; + } else if (__po == partial_ordering::greater) { + return weak_ordering::greater; + } else { + // Otherwise, at least one of them is a NaN. + bool __t_is_nan = _VSTD::isnan(__t); + bool __u_is_nan = _VSTD::isnan(__u); + bool __t_is_negative = _VSTD::signbit(__t); + bool __u_is_negative = _VSTD::signbit(__u); + if (__t_is_nan && __u_is_nan) { + return (__u_is_negative <=> __t_is_negative); + } else if (__t_is_nan) { + return __t_is_negative ? weak_ordering::less : weak_ordering::greater; + } else { + return __u_is_negative ? weak_ordering::greater : weak_ordering::less; + } + } + } + + template + requires is_same_v, decay_t<_Up>> + _LIBCPP_HIDE_FROM_ABI static constexpr auto + __go(_Tp&& __t, _Up&& __u, __priority_tag<1>) + noexcept(noexcept(weak_ordering(compare_three_way()(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))))) + -> decltype( weak_ordering(compare_three_way()(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u)))) + { return weak_ordering(compare_three_way()(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))); } + + template + requires is_same_v, decay_t<_Up>> + _LIBCPP_HIDE_FROM_ABI static constexpr auto + __go(_Tp&& __t, _Up&& __u, __priority_tag<0>) + noexcept(noexcept(weak_ordering(_VSTD::strong_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))))) + -> decltype( weak_ordering(_VSTD::strong_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u)))) + { return weak_ordering(_VSTD::strong_order(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u))); } + + template + _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Tp&& __t, _Up&& __u) const + noexcept(noexcept(__go(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u), __priority_tag<3>()))) + -> decltype( __go(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u), __priority_tag<3>())) + { return __go(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u), __priority_tag<3>()); } + }; +} // namespace __weak_order + +inline namespace __cpo { + inline constexpr auto weak_order = __weak_order::__fn{}; +} // namespace __cpo + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___COMPARE_WEAK_ORDER diff --git a/third_party/libcxx/__concepts/arithmetic.h b/third_party/libcxx/__concepts/arithmetic.h new file mode 100644 index 000000000..91a0b184b --- /dev/null +++ b/third_party/libcxx/__concepts/arithmetic.h @@ -0,0 +1,52 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CONCEPTS_ARITHMETIC_H +#define _LIBCPP___CONCEPTS_ARITHMETIC_H + +#include <__config> +#include <__type_traits/is_floating_point.h> +#include <__type_traits/is_integral.h> +#include <__type_traits/is_signed.h> +#include <__type_traits/is_signed_integer.h> +#include <__type_traits/is_unsigned_integer.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +// [concepts.arithmetic], arithmetic concepts + +template +concept integral = is_integral_v<_Tp>; + +template +concept signed_integral = integral<_Tp> && is_signed_v<_Tp>; + +template +concept unsigned_integral = integral<_Tp> && !signed_integral<_Tp>; + +template +concept floating_point = is_floating_point_v<_Tp>; + +// Concept helpers for the internal type traits for the fundamental types. + +template +concept __libcpp_unsigned_integer = __libcpp_is_unsigned_integer<_Tp>::value; +template +concept __libcpp_signed_integer = __libcpp_is_signed_integer<_Tp>::value; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___CONCEPTS_ARITHMETIC_H diff --git a/third_party/libcxx/__concepts/assignable.h b/third_party/libcxx/__concepts/assignable.h new file mode 100644 index 000000000..2dabae576 --- /dev/null +++ b/third_party/libcxx/__concepts/assignable.h @@ -0,0 +1,41 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CONCEPTS_ASSIGNABLE_H +#define _LIBCPP___CONCEPTS_ASSIGNABLE_H + +#include <__concepts/common_reference_with.h> +#include <__concepts/same_as.h> +#include <__config> +#include <__type_traits/is_reference.h> +#include <__type_traits/make_const_lvalue_ref.h> +#include <__utility/forward.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +// [concept.assignable] + +template +concept assignable_from = + is_lvalue_reference_v<_Lhs> && + common_reference_with<__make_const_lvalue_ref<_Lhs>, __make_const_lvalue_ref<_Rhs>> && + requires (_Lhs __lhs, _Rhs&& __rhs) { + { __lhs = _VSTD::forward<_Rhs>(__rhs) } -> same_as<_Lhs>; + }; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___CONCEPTS_ASSIGNABLE_H diff --git a/third_party/libcxx/__concepts/boolean_testable.h b/third_party/libcxx/__concepts/boolean_testable.h new file mode 100644 index 000000000..8efb6e5ff --- /dev/null +++ b/third_party/libcxx/__concepts/boolean_testable.h @@ -0,0 +1,38 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CONCEPTS_BOOLEAN_TESTABLE_H +#define _LIBCPP___CONCEPTS_BOOLEAN_TESTABLE_H + +#include <__concepts/convertible_to.h> +#include <__config> +#include <__utility/forward.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +// [concepts.booleantestable] + +template +concept __boolean_testable_impl = convertible_to<_Tp, bool>; + +template +concept __boolean_testable = __boolean_testable_impl<_Tp> && requires(_Tp&& __t) { + { !_VSTD::forward<_Tp>(__t) } -> __boolean_testable_impl; +}; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___CONCEPTS_BOOLEAN_TESTABLE_H diff --git a/third_party/libcxx/__concepts/class_or_enum.h b/third_party/libcxx/__concepts/class_or_enum.h new file mode 100644 index 000000000..04c24bd98 --- /dev/null +++ b/third_party/libcxx/__concepts/class_or_enum.h @@ -0,0 +1,40 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CONCEPTS_CLASS_OR_ENUM_H +#define _LIBCPP___CONCEPTS_CLASS_OR_ENUM_H + +#include <__config> +#include <__type_traits/is_class.h> +#include <__type_traits/is_enum.h> +#include <__type_traits/is_union.h> +#include <__type_traits/remove_cvref.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +// Whether a type is a class type or enumeration type according to the Core wording. + +template +concept __class_or_enum = is_class_v<_Tp> || is_union_v<_Tp> || is_enum_v<_Tp>; + +// Work around Clang bug https://llvm.org/PR52970 +// TODO: remove this workaround once libc++ no longer has to support Clang 13 (it was fixed in Clang 14). +template +concept __workaround_52970 = is_class_v<__remove_cvref_t<_Tp>> || is_union_v<__remove_cvref_t<_Tp>>; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___CONCEPTS_CLASS_OR_ENUM_H diff --git a/third_party/libcxx/__concepts/common_reference_with.h b/third_party/libcxx/__concepts/common_reference_with.h new file mode 100644 index 000000000..6ad0db224 --- /dev/null +++ b/third_party/libcxx/__concepts/common_reference_with.h @@ -0,0 +1,37 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CONCEPTS_COMMON_REFERENCE_WITH_H +#define _LIBCPP___CONCEPTS_COMMON_REFERENCE_WITH_H + +#include <__concepts/convertible_to.h> +#include <__concepts/same_as.h> +#include <__config> +#include <__type_traits/common_reference.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +// [concept.commonref] + +template +concept common_reference_with = + same_as, common_reference_t<_Up, _Tp>> && + convertible_to<_Tp, common_reference_t<_Tp, _Up>> && + convertible_to<_Up, common_reference_t<_Tp, _Up>>; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___CONCEPTS_COMMON_REFERENCE_WITH_H diff --git a/third_party/libcxx/__concepts/common_with.h b/third_party/libcxx/__concepts/common_with.h new file mode 100644 index 000000000..e159bcce9 --- /dev/null +++ b/third_party/libcxx/__concepts/common_with.h @@ -0,0 +1,50 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CONCEPTS_COMMON_WITH_H +#define _LIBCPP___CONCEPTS_COMMON_WITH_H + +#include <__concepts/common_reference_with.h> +#include <__concepts/same_as.h> +#include <__config> +#include <__type_traits/add_lvalue_reference.h> +#include <__type_traits/common_reference.h> +#include <__type_traits/common_type.h> +#include <__utility/declval.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +// [concept.common] + +template +concept common_with = + same_as, common_type_t<_Up, _Tp>> && + requires { + static_cast>(std::declval<_Tp>()); + static_cast>(std::declval<_Up>()); + } && + common_reference_with< + add_lvalue_reference_t, + add_lvalue_reference_t> && + common_reference_with< + add_lvalue_reference_t>, + common_reference_t< + add_lvalue_reference_t, + add_lvalue_reference_t>>; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___CONCEPTS_COMMON_WITH_H diff --git a/third_party/libcxx/__concepts/constructible.h b/third_party/libcxx/__concepts/constructible.h new file mode 100644 index 000000000..6e3862c51 --- /dev/null +++ b/third_party/libcxx/__concepts/constructible.h @@ -0,0 +1,56 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CONCEPTS_CONSTRUCTIBLE_H +#define _LIBCPP___CONCEPTS_CONSTRUCTIBLE_H + +#include <__concepts/convertible_to.h> +#include <__concepts/destructible.h> +#include <__config> +#include <__type_traits/is_constructible.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +// [concept.constructible] +template +concept constructible_from = + destructible<_Tp> && is_constructible_v<_Tp, _Args...>; + +// [concept.default.init] + +template +concept __default_initializable = requires { ::new _Tp; }; + +template +concept default_initializable = constructible_from<_Tp> && + requires { _Tp{}; } && __default_initializable<_Tp>; + +// [concept.moveconstructible] +template +concept move_constructible = + constructible_from<_Tp, _Tp> && convertible_to<_Tp, _Tp>; + +// [concept.copyconstructible] +template +concept copy_constructible = + move_constructible<_Tp> && + constructible_from<_Tp, _Tp&> && convertible_to<_Tp&, _Tp> && + constructible_from<_Tp, const _Tp&> && convertible_to && + constructible_from<_Tp, const _Tp> && convertible_to; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___CONCEPTS_CONSTRUCTIBLE_H diff --git a/third_party/libcxx/__concepts/convertible_to.h b/third_party/libcxx/__concepts/convertible_to.h new file mode 100644 index 000000000..20ee31bc0 --- /dev/null +++ b/third_party/libcxx/__concepts/convertible_to.h @@ -0,0 +1,37 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CONCEPTS_CONVERTIBLE_TO_H +#define _LIBCPP___CONCEPTS_CONVERTIBLE_TO_H + +#include <__config> +#include <__type_traits/is_convertible.h> +#include <__utility/declval.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +// [concept.convertible] + +template +concept convertible_to = + is_convertible_v<_From, _To> && + requires { + static_cast<_To>(std::declval<_From>()); + }; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___CONCEPTS_CONVERTIBLE_TO_H diff --git a/third_party/libcxx/__concepts/copyable.h b/third_party/libcxx/__concepts/copyable.h new file mode 100644 index 000000000..0d6dd50cf --- /dev/null +++ b/third_party/libcxx/__concepts/copyable.h @@ -0,0 +1,39 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CONCEPTS_COPYABLE_H +#define _LIBCPP___CONCEPTS_COPYABLE_H + +#include <__concepts/assignable.h> +#include <__concepts/constructible.h> +#include <__concepts/movable.h> +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +// [concepts.object] + +template +concept copyable = + copy_constructible<_Tp> && + movable<_Tp> && + assignable_from<_Tp&, _Tp&> && + assignable_from<_Tp&, const _Tp&> && + assignable_from<_Tp&, const _Tp>; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___CONCEPTS_COPYABLE_H diff --git a/third_party/libcxx/__concepts/derived_from.h b/third_party/libcxx/__concepts/derived_from.h new file mode 100644 index 000000000..1cbe458e2 --- /dev/null +++ b/third_party/libcxx/__concepts/derived_from.h @@ -0,0 +1,35 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CONCEPTS_DERIVED_FROM_H +#define _LIBCPP___CONCEPTS_DERIVED_FROM_H + +#include <__config> +#include <__type_traits/is_base_of.h> +#include <__type_traits/is_convertible.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +// [concept.derived] + +template +concept derived_from = + is_base_of_v<_Bp, _Dp> && + is_convertible_v; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___CONCEPTS_DERIVED_FROM_H diff --git a/third_party/libcxx/__concepts/destructible.h b/third_party/libcxx/__concepts/destructible.h new file mode 100644 index 000000000..8da9c378b --- /dev/null +++ b/third_party/libcxx/__concepts/destructible.h @@ -0,0 +1,32 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CONCEPTS_DESTRUCTIBLE_H +#define _LIBCPP___CONCEPTS_DESTRUCTIBLE_H + +#include <__config> +#include <__type_traits/is_nothrow_destructible.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +// [concept.destructible] + +template +concept destructible = is_nothrow_destructible_v<_Tp>; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___CONCEPTS_DESTRUCTIBLE_H diff --git a/third_party/libcxx/__concepts/different_from.h b/third_party/libcxx/__concepts/different_from.h new file mode 100644 index 000000000..5ef1467ac --- /dev/null +++ b/third_party/libcxx/__concepts/different_from.h @@ -0,0 +1,31 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CONCEPTS_DIFFERENT_FROM_H +#define _LIBCPP___CONCEPTS_DIFFERENT_FROM_H + +#include <__concepts/same_as.h> +#include <__config> +#include <__type_traits/remove_cvref.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +template +concept __different_from = !same_as, remove_cvref_t<_Up>>; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___CONCEPTS_DIFFERENT_FROM_H diff --git a/third_party/libcxx/__concepts/equality_comparable.h b/third_party/libcxx/__concepts/equality_comparable.h new file mode 100644 index 000000000..f1062884e --- /dev/null +++ b/third_party/libcxx/__concepts/equality_comparable.h @@ -0,0 +1,54 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CONCEPTS_EQUALITY_COMPARABLE_H +#define _LIBCPP___CONCEPTS_EQUALITY_COMPARABLE_H + +#include <__concepts/boolean_testable.h> +#include <__concepts/common_reference_with.h> +#include <__config> +#include <__type_traits/common_reference.h> +#include <__type_traits/make_const_lvalue_ref.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +// [concept.equalitycomparable] + +template +concept __weakly_equality_comparable_with = + requires(__make_const_lvalue_ref<_Tp> __t, __make_const_lvalue_ref<_Up> __u) { + { __t == __u } -> __boolean_testable; + { __t != __u } -> __boolean_testable; + { __u == __t } -> __boolean_testable; + { __u != __t } -> __boolean_testable; + }; + +template +concept equality_comparable = __weakly_equality_comparable_with<_Tp, _Tp>; + +template +concept equality_comparable_with = + equality_comparable<_Tp> && equality_comparable<_Up> && + common_reference_with<__make_const_lvalue_ref<_Tp>, __make_const_lvalue_ref<_Up>> && + equality_comparable< + common_reference_t< + __make_const_lvalue_ref<_Tp>, + __make_const_lvalue_ref<_Up>>> && + __weakly_equality_comparable_with<_Tp, _Up>; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___CONCEPTS_EQUALITY_COMPARABLE_H diff --git a/third_party/libcxx/__concepts/invocable.h b/third_party/libcxx/__concepts/invocable.h new file mode 100644 index 000000000..59eab01f8 --- /dev/null +++ b/third_party/libcxx/__concepts/invocable.h @@ -0,0 +1,40 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CONCEPTS_INVOCABLE_H +#define _LIBCPP___CONCEPTS_INVOCABLE_H + +#include <__config> +#include <__functional/invoke.h> +#include <__utility/forward.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +// [concept.invocable] + +template +concept invocable = requires(_Fn&& __fn, _Args&&... __args) { + _VSTD::invoke(_VSTD::forward<_Fn>(__fn), _VSTD::forward<_Args>(__args)...); // not required to be equality preserving +}; + +// [concept.regular.invocable] + +template +concept regular_invocable = invocable<_Fn, _Args...>; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___CONCEPTS_INVOCABLE_H diff --git a/third_party/libcxx/__concepts/movable.h b/third_party/libcxx/__concepts/movable.h new file mode 100644 index 000000000..f37d49f04 --- /dev/null +++ b/third_party/libcxx/__concepts/movable.h @@ -0,0 +1,39 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CONCEPTS_MOVABLE_H +#define _LIBCPP___CONCEPTS_MOVABLE_H + +#include <__concepts/assignable.h> +#include <__concepts/constructible.h> +#include <__concepts/swappable.h> +#include <__config> +#include <__type_traits/is_object.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +// [concepts.object] + +template +concept movable = + is_object_v<_Tp> && + move_constructible<_Tp> && + assignable_from<_Tp&, _Tp> && + swappable<_Tp>; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___CONCEPTS_MOVABLE_H diff --git a/third_party/libcxx/__concepts/predicate.h b/third_party/libcxx/__concepts/predicate.h new file mode 100644 index 000000000..b09183c5c --- /dev/null +++ b/third_party/libcxx/__concepts/predicate.h @@ -0,0 +1,35 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CONCEPTS_PREDICATE_H +#define _LIBCPP___CONCEPTS_PREDICATE_H + +#include <__concepts/boolean_testable.h> +#include <__concepts/invocable.h> +#include <__config> +#include <__functional/invoke.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +// [concept.predicate] + +template +concept predicate = + regular_invocable<_Fn, _Args...> && __boolean_testable>; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___CONCEPTS_PREDICATE_H diff --git a/third_party/libcxx/__concepts/regular.h b/third_party/libcxx/__concepts/regular.h new file mode 100644 index 000000000..93fb7016c --- /dev/null +++ b/third_party/libcxx/__concepts/regular.h @@ -0,0 +1,33 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CONCEPTS_REGULAR_H +#define _LIBCPP___CONCEPTS_REGULAR_H + +#include <__concepts/equality_comparable.h> +#include <__concepts/semiregular.h> +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +// [concept.object] + +template +concept regular = semiregular<_Tp> && equality_comparable<_Tp>; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___CONCEPTS_REGULAR_H diff --git a/third_party/libcxx/__concepts/relation.h b/third_party/libcxx/__concepts/relation.h new file mode 100644 index 000000000..218afef21 --- /dev/null +++ b/third_party/libcxx/__concepts/relation.h @@ -0,0 +1,44 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CONCEPTS_RELATION_H +#define _LIBCPP___CONCEPTS_RELATION_H + +#include <__concepts/predicate.h> +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +// [concept.relation] + +template +concept relation = + predicate<_Rp, _Tp, _Tp> && predicate<_Rp, _Up, _Up> && + predicate<_Rp, _Tp, _Up> && predicate<_Rp, _Up, _Tp>; + +// [concept.equiv] + +template +concept equivalence_relation = relation<_Rp, _Tp, _Up>; + +// [concept.strictweakorder] + +template +concept strict_weak_order = relation<_Rp, _Tp, _Up>; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___CONCEPTS_RELATION_H diff --git a/third_party/libcxx/__concepts/same_as.h b/third_party/libcxx/__concepts/same_as.h new file mode 100644 index 000000000..b86cadaa1 --- /dev/null +++ b/third_party/libcxx/__concepts/same_as.h @@ -0,0 +1,35 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CONCEPTS_SAME_AS_H +#define _LIBCPP___CONCEPTS_SAME_AS_H + +#include <__config> +#include <__type_traits/is_same.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +// [concept.same] + +template +concept __same_as_impl = _IsSame<_Tp, _Up>::value; + +template +concept same_as = __same_as_impl<_Tp, _Up> && __same_as_impl<_Up, _Tp>; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___CONCEPTS_SAME_AS_H diff --git a/third_party/libcxx/__concepts/semiregular.h b/third_party/libcxx/__concepts/semiregular.h new file mode 100644 index 000000000..ae2f3c669 --- /dev/null +++ b/third_party/libcxx/__concepts/semiregular.h @@ -0,0 +1,33 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CONCEPTS_SEMIREGULAR_H +#define _LIBCPP___CONCEPTS_SEMIREGULAR_H + +#include <__concepts/constructible.h> +#include <__concepts/copyable.h> +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +// [concept.object] + +template +concept semiregular = copyable<_Tp> && default_initializable<_Tp>; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___CONCEPTS_SEMIREGULAR_H diff --git a/third_party/libcxx/__concepts/swappable.h b/third_party/libcxx/__concepts/swappable.h new file mode 100644 index 000000000..859255dec --- /dev/null +++ b/third_party/libcxx/__concepts/swappable.h @@ -0,0 +1,121 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CONCEPTS_SWAPPABLE_H +#define _LIBCPP___CONCEPTS_SWAPPABLE_H + +#include <__concepts/assignable.h> +#include <__concepts/class_or_enum.h> +#include <__concepts/common_reference_with.h> +#include <__concepts/constructible.h> +#include <__config> +#include <__type_traits/extent.h> +#include <__type_traits/is_nothrow_move_assignable.h> +#include <__type_traits/is_nothrow_move_constructible.h> +#include <__type_traits/remove_cvref.h> +#include <__utility/exchange.h> +#include <__utility/forward.h> +#include <__utility/move.h> +#include <__utility/swap.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +// [concept.swappable] + +namespace ranges { +namespace __swap { + + template + void swap(_Tp&, _Tp&) = delete; + + template + concept __unqualified_swappable_with = + (__class_or_enum> || __class_or_enum>) && + requires(_Tp&& __t, _Up&& __u) { + swap(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u)); + }; + + struct __fn; + + template + concept __swappable_arrays = + !__unqualified_swappable_with<_Tp(&)[_Size], _Up(&)[_Size]> && + extent_v<_Tp> == extent_v<_Up> && + requires(_Tp(& __t)[_Size], _Up(& __u)[_Size], const __fn& __swap) { + __swap(__t[0], __u[0]); + }; + + template + concept __exchangeable = + !__unqualified_swappable_with<_Tp&, _Tp&> && + move_constructible<_Tp> && + assignable_from<_Tp&, _Tp>; + + struct __fn { + // 2.1 `S` is `(void)swap(E1, E2)`* if `E1` or `E2` has class or enumeration type and... + // *The name `swap` is used here unqualified. + template + requires __unqualified_swappable_with<_Tp, _Up> + _LIBCPP_HIDE_FROM_ABI constexpr void operator()(_Tp&& __t, _Up&& __u) const + noexcept(noexcept(swap(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u)))) + { + swap(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u)); + } + + // 2.2 Otherwise, if `E1` and `E2` are lvalues of array types with equal extent and... + template + requires __swappable_arrays<_Tp, _Up, _Size> + _LIBCPP_HIDE_FROM_ABI constexpr void operator()(_Tp(& __t)[_Size], _Up(& __u)[_Size]) const + noexcept(noexcept((*this)(*__t, *__u))) + { + // TODO(cjdb): replace with `ranges::swap_ranges`. + for (size_t __i = 0; __i < _Size; ++__i) { + (*this)(__t[__i], __u[__i]); + } + } + + // 2.3 Otherwise, if `E1` and `E2` are lvalues of the same type `T` that models... + template<__exchangeable _Tp> + _LIBCPP_HIDE_FROM_ABI constexpr void operator()(_Tp& __x, _Tp& __y) const + noexcept(is_nothrow_move_constructible_v<_Tp> && is_nothrow_move_assignable_v<_Tp>) + { + __y = _VSTD::exchange(__x, _VSTD::move(__y)); + } + }; +} // namespace __swap + +inline namespace __cpo { + inline constexpr auto swap = __swap::__fn{}; +} // namespace __cpo +} // namespace ranges + +template +concept swappable = requires(_Tp& __a, _Tp& __b) { ranges::swap(__a, __b); }; + +template +concept swappable_with = + common_reference_with<_Tp, _Up> && + requires(_Tp&& __t, _Up&& __u) { + ranges::swap(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Tp>(__t)); + ranges::swap(_VSTD::forward<_Up>(__u), _VSTD::forward<_Up>(__u)); + ranges::swap(_VSTD::forward<_Tp>(__t), _VSTD::forward<_Up>(__u)); + ranges::swap(_VSTD::forward<_Up>(__u), _VSTD::forward<_Tp>(__t)); + }; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___CONCEPTS_SWAPPABLE_H diff --git a/third_party/libcxx/__concepts/totally_ordered.h b/third_party/libcxx/__concepts/totally_ordered.h new file mode 100644 index 000000000..350eff338 --- /dev/null +++ b/third_party/libcxx/__concepts/totally_ordered.h @@ -0,0 +1,58 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CONCEPTS_TOTALLY_ORDERED_H +#define _LIBCPP___CONCEPTS_TOTALLY_ORDERED_H + +#include <__concepts/boolean_testable.h> +#include <__concepts/equality_comparable.h> +#include <__config> +#include <__type_traits/common_reference.h> +#include <__type_traits/make_const_lvalue_ref.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +// [concept.totallyordered] + +template +concept __partially_ordered_with = + requires(__make_const_lvalue_ref<_Tp> __t, __make_const_lvalue_ref<_Up> __u) { + { __t < __u } -> __boolean_testable; + { __t > __u } -> __boolean_testable; + { __t <= __u } -> __boolean_testable; + { __t >= __u } -> __boolean_testable; + { __u < __t } -> __boolean_testable; + { __u > __t } -> __boolean_testable; + { __u <= __t } -> __boolean_testable; + { __u >= __t } -> __boolean_testable; + }; + +template +concept totally_ordered = equality_comparable<_Tp> && __partially_ordered_with<_Tp, _Tp>; + +template +concept totally_ordered_with = + totally_ordered<_Tp> && totally_ordered<_Up> && + equality_comparable_with<_Tp, _Up> && + totally_ordered< + common_reference_t< + __make_const_lvalue_ref<_Tp>, + __make_const_lvalue_ref<_Up>>> && + __partially_ordered_with<_Tp, _Up>; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___CONCEPTS_TOTALLY_ORDERED_H diff --git a/third_party/libcxx/__condition_variable/condition_variable.h b/third_party/libcxx/__condition_variable/condition_variable.h new file mode 100644 index 000000000..8fc80b633 --- /dev/null +++ b/third_party/libcxx/__condition_variable/condition_variable.h @@ -0,0 +1,244 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CONDITION_VARIABLE_CONDITION_VARIABLE_H +#define _LIBCPP___CONDITION_VARIABLE_CONDITION_VARIABLE_H + +#include <__chrono/steady_clock.h> +#include <__chrono/system_clock.h> +#include <__chrono/time_point.h> +#include <__config> +#include <__mutex/mutex.h> +#include <__mutex/unique_lock.h> +#include <__system_error/system_error.h> +#include <__threading_support> +#include <__type_traits/enable_if.h> +#include <__type_traits/is_floating_point.h> +#include <__utility/move.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +#ifndef _LIBCPP_HAS_NO_THREADS + +// enum class cv_status +_LIBCPP_DECLARE_STRONG_ENUM(cv_status){no_timeout, timeout}; +_LIBCPP_DECLARE_STRONG_ENUM_EPILOG(cv_status) + +class _LIBCPP_TYPE_VIS condition_variable { + __libcpp_condvar_t __cv_ = _LIBCPP_CONDVAR_INITIALIZER; + +public: + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR condition_variable() _NOEXCEPT = default; + +# ifdef _LIBCPP_HAS_TRIVIAL_CONDVAR_DESTRUCTION + ~condition_variable() = default; +# else + ~condition_variable(); +# endif + + condition_variable(const condition_variable&) = delete; + condition_variable& operator=(const condition_variable&) = delete; + + void notify_one() _NOEXCEPT; + void notify_all() _NOEXCEPT; + + void wait(unique_lock& __lk) _NOEXCEPT; + template + _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS void wait(unique_lock& __lk, _Predicate __pred); + + template + _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS cv_status + wait_until(unique_lock& __lk, const chrono::time_point<_Clock, _Duration>& __t); + + template + _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS bool + wait_until(unique_lock& __lk, const chrono::time_point<_Clock, _Duration>& __t, _Predicate __pred); + + template + _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS cv_status + wait_for(unique_lock& __lk, const chrono::duration<_Rep, _Period>& __d); + + template + bool _LIBCPP_HIDE_FROM_ABI + wait_for(unique_lock& __lk, const chrono::duration<_Rep, _Period>& __d, _Predicate __pred); + + typedef __libcpp_condvar_t* native_handle_type; + _LIBCPP_HIDE_FROM_ABI native_handle_type native_handle() { return &__cv_; } + +private: + void + __do_timed_wait(unique_lock& __lk, chrono::time_point) _NOEXCEPT; +# if defined(_LIBCPP_HAS_COND_CLOCKWAIT) + _LIBCPP_HIDE_FROM_ABI void + __do_timed_wait(unique_lock& __lk, chrono::time_point) _NOEXCEPT; +# endif + template + _LIBCPP_HIDE_FROM_ABI void + __do_timed_wait(unique_lock& __lk, chrono::time_point<_Clock, chrono::nanoseconds>) _NOEXCEPT; +}; +#endif // !_LIBCPP_HAS_NO_THREADS + +template +inline _LIBCPP_HIDE_FROM_ABI __enable_if_t::value, chrono::nanoseconds> +__safe_nanosecond_cast(chrono::duration<_Rep, _Period> __d) { + using namespace chrono; + using __ratio = ratio_divide<_Period, nano>; + using __ns_rep = nanoseconds::rep; + _Rep __result_float = __d.count() * __ratio::num / __ratio::den; + + _Rep __result_max = numeric_limits<__ns_rep>::max(); + if (__result_float >= __result_max) { + return nanoseconds::max(); + } + + _Rep __result_min = numeric_limits<__ns_rep>::min(); + if (__result_float <= __result_min) { + return nanoseconds::min(); + } + + return nanoseconds(static_cast<__ns_rep>(__result_float)); +} + +template +inline _LIBCPP_HIDE_FROM_ABI __enable_if_t::value, chrono::nanoseconds> +__safe_nanosecond_cast(chrono::duration<_Rep, _Period> __d) { + using namespace chrono; + if (__d.count() == 0) { + return nanoseconds(0); + } + + using __ratio = ratio_divide<_Period, nano>; + using __ns_rep = nanoseconds::rep; + __ns_rep __result_max = numeric_limits<__ns_rep>::max(); + if (__d.count() > 0 && __d.count() > __result_max / __ratio::num) { + return nanoseconds::max(); + } + + __ns_rep __result_min = numeric_limits<__ns_rep>::min(); + if (__d.count() < 0 && __d.count() < __result_min / __ratio::num) { + return nanoseconds::min(); + } + + __ns_rep __result = __d.count() * __ratio::num / __ratio::den; + if (__result == 0) { + return nanoseconds(1); + } + + return nanoseconds(__result); +} + +#ifndef _LIBCPP_HAS_NO_THREADS +template +void condition_variable::wait(unique_lock& __lk, _Predicate __pred) { + while (!__pred()) + wait(__lk); +} + +template +cv_status condition_variable::wait_until(unique_lock& __lk, const chrono::time_point<_Clock, _Duration>& __t) { + using namespace chrono; + using __clock_tp_ns = time_point<_Clock, nanoseconds>; + + typename _Clock::time_point __now = _Clock::now(); + if (__t <= __now) + return cv_status::timeout; + + __clock_tp_ns __t_ns = __clock_tp_ns(std::__safe_nanosecond_cast(__t.time_since_epoch())); + + __do_timed_wait(__lk, __t_ns); + return _Clock::now() < __t ? cv_status::no_timeout : cv_status::timeout; +} + +template +bool condition_variable::wait_until( + unique_lock& __lk, const chrono::time_point<_Clock, _Duration>& __t, _Predicate __pred) { + while (!__pred()) { + if (wait_until(__lk, __t) == cv_status::timeout) + return __pred(); + } + return true; +} + +template +cv_status condition_variable::wait_for(unique_lock& __lk, const chrono::duration<_Rep, _Period>& __d) { + using namespace chrono; + if (__d <= __d.zero()) + return cv_status::timeout; + using __ns_rep = nanoseconds::rep; + steady_clock::time_point __c_now = steady_clock::now(); + +# if defined(_LIBCPP_HAS_COND_CLOCKWAIT) + using __clock_tp_ns = time_point; + __ns_rep __now_count_ns = std::__safe_nanosecond_cast(__c_now.time_since_epoch()).count(); +# else + using __clock_tp_ns = time_point; + __ns_rep __now_count_ns = std::__safe_nanosecond_cast(system_clock::now().time_since_epoch()).count(); +# endif + + __ns_rep __d_ns_count = std::__safe_nanosecond_cast(__d).count(); + + if (__now_count_ns > numeric_limits<__ns_rep>::max() - __d_ns_count) { + __do_timed_wait(__lk, __clock_tp_ns::max()); + } else { + __do_timed_wait(__lk, __clock_tp_ns(nanoseconds(__now_count_ns + __d_ns_count))); + } + + return steady_clock::now() - __c_now < __d ? cv_status::no_timeout : cv_status::timeout; +} + +template +inline bool +condition_variable::wait_for(unique_lock& __lk, const chrono::duration<_Rep, _Period>& __d, _Predicate __pred) { + return wait_until(__lk, chrono::steady_clock::now() + __d, std::move(__pred)); +} + +# if defined(_LIBCPP_HAS_COND_CLOCKWAIT) +inline void condition_variable::__do_timed_wait( + unique_lock& __lk, chrono::time_point __tp) _NOEXCEPT { + using namespace chrono; + if (!__lk.owns_lock()) + __throw_system_error(EPERM, "condition_variable::timed wait: mutex not locked"); + nanoseconds __d = __tp.time_since_epoch(); + timespec __ts; + seconds __s = duration_cast(__d); + using __ts_sec = decltype(__ts.tv_sec); + const __ts_sec __ts_sec_max = numeric_limits<__ts_sec>::max(); + if (__s.count() < __ts_sec_max) { + __ts.tv_sec = static_cast<__ts_sec>(__s.count()); + __ts.tv_nsec = (__d - __s).count(); + } else { + __ts.tv_sec = __ts_sec_max; + __ts.tv_nsec = giga::num - 1; + } + int __ec = pthread_cond_clockwait(&__cv_, __lk.mutex()->native_handle(), CLOCK_MONOTONIC, &__ts); + if (__ec != 0 && __ec != ETIMEDOUT) + __throw_system_error(__ec, "condition_variable timed_wait failed"); +} +# endif // _LIBCPP_HAS_COND_CLOCKWAIT + +template +inline void condition_variable::__do_timed_wait(unique_lock& __lk, + chrono::time_point<_Clock, chrono::nanoseconds> __tp) _NOEXCEPT { + wait_for(__lk, __tp - _Clock::now()); +} + +#endif // _LIBCPP_HAS_NO_THREADS + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP___CONDITION_VARIABLE_CONDITION_VARIABLE_H diff --git a/third_party/libcxx/__config b/third_party/libcxx/__config index d0d2c4b0e..f474f9880 100644 --- a/third_party/libcxx/__config +++ b/third_party/libcxx/__config @@ -1,5 +1,5 @@ // -*- C++ -*- -//===--------------------------- __config ---------------------------------===// +//===----------------------------------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. @@ -7,17 +7,10 @@ // //===----------------------------------------------------------------------===// -#ifndef _LIBCPP_CONFIG -#define _LIBCPP_CONFIG -#include "libc/isystem/features.h" +#ifndef _LIBCPP___CONFIG +#define _LIBCPP___CONFIG -#define _LIBCPP_ABI_UNSTABLE -#define _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER -#define _LIBCPP_DISABLE_DEPRECATION_WARNINGS -#define _LIBCPP_HAS_TRIVIAL_MUTEX_DESTRUCTION -#define _LIBCPP_HAS_TRIVIAL_CONDVAR_DESTRUCTION -#define _LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -#define _LIBCPP_ENABLE_CXX17_REMOVED_RANDOM_SHUFFLE +#include <__config_site> #if defined(_MSC_VER) && !defined(__clang__) # if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) @@ -26,1068 +19,959 @@ #endif #ifndef _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER -#pragma GCC system_header +# pragma GCC system_header +#endif + +#if defined(__apple_build_version__) +// Given AppleClang XX.Y.Z, _LIBCPP_APPLE_CLANG_VER is XXYZ (e.g. AppleClang 14.0.3 => 1403) +# define _LIBCPP_COMPILER_CLANG_BASED +# define _LIBCPP_APPLE_CLANG_VER (__apple_build_version__ / 10000) +#elif defined(__clang__) +# define _LIBCPP_COMPILER_CLANG_BASED +# define _LIBCPP_CLANG_VER (__clang_major__ * 100 + __clang_minor__) +#elif defined(__GNUC__) +# define _LIBCPP_COMPILER_GCC #endif #ifdef __cplusplus -#ifdef __GNUC__ -# define _GNUC_VER (__GNUC__ * 100 + __GNUC_MINOR__) -// The _GNUC_VER_NEW macro better represents the new GCC versioning scheme -// introduced in GCC 5.0. -# define _GNUC_VER_NEW (_GNUC_VER * 10 + __GNUC_PATCHLEVEL__) -#else -# define _GNUC_VER 0 -# define _GNUC_VER_NEW 0 -#endif +// _LIBCPP_VERSION represents the version of libc++, which matches the version of LLVM. +// Given a LLVM release LLVM XX.YY.ZZ (e.g. LLVM 17.0.1 == 17.00.01), _LIBCPP_VERSION is +// defined to XXYYZZ. +# define _LIBCPP_VERSION 170000 -#define _LIBCPP_VERSION 10000 +# define _LIBCPP_CONCAT_IMPL(_X, _Y) _X##_Y +# define _LIBCPP_CONCAT(_X, _Y) _LIBCPP_CONCAT_IMPL(_X, _Y) -#ifndef _LIBCPP_ABI_VERSION -# define _LIBCPP_ABI_VERSION 1 -#endif +// Valid C++ identifier that revs with every libc++ version. This can be used to +// generate identifiers that must be unique for every released libc++ version. +# define _LIBCPP_VERSIONED_IDENTIFIER _LIBCPP_CONCAT(v, _LIBCPP_VERSION) -#ifndef __STDC_HOSTED__ -# define _LIBCPP_FREESTANDING -#endif - -#ifndef _LIBCPP_STD_VER -# if __cplusplus <= 201103L -# define _LIBCPP_STD_VER 11 -# elif __cplusplus <= 201402L -# define _LIBCPP_STD_VER 14 -# elif __cplusplus <= 201703L -# define _LIBCPP_STD_VER 17 -# else -# define _LIBCPP_STD_VER 18 // current year, or date of c++2a ratification +# if __STDC_HOSTED__ == 0 +# define _LIBCPP_FREESTANDING # endif -#endif // _LIBCPP_STD_VER -#if defined(__ELF__) -# define _LIBCPP_OBJECT_FORMAT_ELF 1 -#elif defined(__MACH__) -# define _LIBCPP_OBJECT_FORMAT_MACHO 1 -#elif defined(_WIN32) -# define _LIBCPP_OBJECT_FORMAT_COFF 1 -#elif defined(__wasm__) -# define _LIBCPP_OBJECT_FORMAT_WASM 1 -#else -# error Unknown object file format -#endif +// NOLINTBEGIN(libcpp-cpp-version-check) +# ifndef _LIBCPP_STD_VER +# if __cplusplus <= 201103L +# define _LIBCPP_STD_VER 11 +# elif __cplusplus <= 201402L +# define _LIBCPP_STD_VER 14 +# elif __cplusplus <= 201703L +# define _LIBCPP_STD_VER 17 +# elif __cplusplus <= 202002L +# define _LIBCPP_STD_VER 20 +# elif __cplusplus <= 202302L +# define _LIBCPP_STD_VER 23 +# else +// Expected release year of the next C++ standard +# define _LIBCPP_STD_VER 26 +# endif +# endif // _LIBCPP_STD_VER +// NOLINTEND(libcpp-cpp-version-check) -#if defined(_LIBCPP_ABI_UNSTABLE) || _LIBCPP_ABI_VERSION >= 2 +# if defined(__ELF__) +# define _LIBCPP_OBJECT_FORMAT_ELF 1 +# elif defined(__MACH__) +# define _LIBCPP_OBJECT_FORMAT_MACHO 1 +# elif defined(_WIN32) +# define _LIBCPP_OBJECT_FORMAT_COFF 1 +# elif defined(__wasm__) +# define _LIBCPP_OBJECT_FORMAT_WASM 1 +# elif defined(_AIX) +# define _LIBCPP_OBJECT_FORMAT_XCOFF 1 +# else +// ... add new file formats here ... +# endif + +# if _LIBCPP_ABI_VERSION >= 2 // Change short string representation so that string data starts at offset 0, // improving its alignment in some cases. -// # define _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT +# define _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT // Fix deque iterator type in order to support incomplete types. -# define _LIBCPP_ABI_INCOMPLETE_TYPES_IN_DEQUE +# define _LIBCPP_ABI_INCOMPLETE_TYPES_IN_DEQUE // Fix undefined behavior in how std::list stores its linked nodes. -# define _LIBCPP_ABI_LIST_REMOVE_NODE_POINTER_UB +# define _LIBCPP_ABI_LIST_REMOVE_NODE_POINTER_UB // Fix undefined behavior in how __tree stores its end and parent nodes. -# define _LIBCPP_ABI_TREE_REMOVE_NODE_POINTER_UB +# define _LIBCPP_ABI_TREE_REMOVE_NODE_POINTER_UB // Fix undefined behavior in how __hash_table stores its pointer types. -# define _LIBCPP_ABI_FIX_UNORDERED_NODE_POINTER_UB -# define _LIBCPP_ABI_FORWARD_LIST_REMOVE_NODE_POINTER_UB -# define _LIBCPP_ABI_FIX_UNORDERED_CONTAINER_SIZE_TYPE -// Don't use a nullptr_t simulation type in C++03 instead using C++11 nullptr -// provided under the alternate keyword __nullptr, which changes the mangling -// of nullptr_t. This option is ABI incompatible with GCC in C++03 mode. -# define _LIBCPP_ABI_ALWAYS_USE_CXX11_NULLPTR -// Define the `pointer_safety` enum as a C++11 strongly typed enumeration -// instead of as a class simulating an enum. If this option is enabled -// `pointer_safety` and `get_pointer_safety()` will no longer be available -// in C++03. -# define _LIBCPP_ABI_POINTER_SAFETY_ENUM_TYPE +# define _LIBCPP_ABI_FIX_UNORDERED_NODE_POINTER_UB +# define _LIBCPP_ABI_FORWARD_LIST_REMOVE_NODE_POINTER_UB +# define _LIBCPP_ABI_FIX_UNORDERED_CONTAINER_SIZE_TYPE // Define a key function for `bad_function_call` in the library, to centralize // its vtable and typeinfo to libc++ rather than having all other libraries // using that class define their own copies. -# define _LIBCPP_ABI_BAD_FUNCTION_CALL_KEY_FUNCTION +# define _LIBCPP_ABI_BAD_FUNCTION_CALL_KEY_FUNCTION +// Override the default return value of exception::what() for +// bad_function_call::what() with a string that is specific to +// bad_function_call (see http://wg21.link/LWG2233). This is an ABI break +// because it changes the vtable layout of bad_function_call. +# define _LIBCPP_ABI_BAD_FUNCTION_CALL_GOOD_WHAT_MESSAGE // Enable optimized version of __do_get_(un)signed which avoids redundant copies. -# define _LIBCPP_ABI_OPTIMIZED_LOCALE_NUM_GET +# define _LIBCPP_ABI_OPTIMIZED_LOCALE_NUM_GET +// Give reverse_iterator one data member of type T, not two. +// Also, in C++17 and later, don't derive iterator types from std::iterator. +# define _LIBCPP_ABI_NO_ITERATOR_BASES // Use the smallest possible integer type to represent the index of the variant. // Previously libc++ used "unsigned int" exclusively. -# define _LIBCPP_ABI_VARIANT_INDEX_TYPE_OPTIMIZATION +# define _LIBCPP_ABI_VARIANT_INDEX_TYPE_OPTIMIZATION // Unstable attempt to provide a more optimized std::function -# define _LIBCPP_ABI_OPTIMIZED_FUNCTION +# define _LIBCPP_ABI_OPTIMIZED_FUNCTION // All the regex constants must be distinct and nonzero. -# define _LIBCPP_ABI_REGEX_CONSTANTS_NONZERO -#elif _LIBCPP_ABI_VERSION == 1 -# if !defined(_LIBCPP_OBJECT_FORMAT_COFF) +# define _LIBCPP_ABI_REGEX_CONSTANTS_NONZERO +// Re-worked external template instantiations for std::string with a focus on +// performance and fast-path inlining. +# define _LIBCPP_ABI_STRING_OPTIMIZED_EXTERNAL_INSTANTIATION +// Enable clang::trivial_abi on std::unique_ptr. +# define _LIBCPP_ABI_ENABLE_UNIQUE_PTR_TRIVIAL_ABI +// Enable clang::trivial_abi on std::shared_ptr and std::weak_ptr +# define _LIBCPP_ABI_ENABLE_SHARED_PTR_TRIVIAL_ABI +// std::random_device holds some state when it uses an implementation that gets +// entropy from a file (see _LIBCPP_USING_DEV_RANDOM). When switching from this +// implementation to another one on a platform that has already shipped +// std::random_device, one needs to retain the same object layout to remain ABI +// compatible. This switch removes these workarounds for platforms that don't care +// about ABI compatibility. +# define _LIBCPP_ABI_NO_RANDOM_DEVICE_COMPATIBILITY_LAYOUT +// Don't export the legacy __basic_string_common class and its methods from the built library. +# define _LIBCPP_ABI_DO_NOT_EXPORT_BASIC_STRING_COMMON +// Don't export the legacy __vector_base_common class and its methods from the built library. +# define _LIBCPP_ABI_DO_NOT_EXPORT_VECTOR_BASE_COMMON +// According to the Standard, `bitset::operator[] const` returns bool +# define _LIBCPP_ABI_BITSET_VECTOR_BOOL_CONST_SUBSCRIPT_RETURN_BOOL +// Fix the implementation of CityHash used for std::hash. +// This is an ABI break because `std::hash` will return a different result, +// which means that hashing the same object in translation units built against +// different versions of libc++ can return inconsistent results. This is especially +// tricky since std::hash is used in the implementation of unordered containers. +// +// The incorrect implementation of CityHash has the problem that it drops some +// bits on the floor. +# define _LIBCPP_ABI_FIX_CITYHASH_IMPLEMENTATION +// Remove the base 10 implementation of std::to_chars from the dylib. +// The implementation moved to the header, but we still export the symbols from +// the dylib for backwards compatibility. +# define _LIBCPP_ABI_DO_NOT_EXPORT_TO_CHARS_BASE_10 +# elif _LIBCPP_ABI_VERSION == 1 +# if !(defined(_LIBCPP_OBJECT_FORMAT_COFF) || defined(_LIBCPP_OBJECT_FORMAT_XCOFF)) // Enable compiling copies of now inline methods into the dylib to support // applications compiled against older libraries. This is unnecessary with // COFF dllexport semantics, since dllexport forces a non-inline definition // of inline functions to be emitted anyway. Our own non-inline copy would -// conflict with the dllexport-emitted copy, so we disable it. -// [jart] no thanks -//# define _LIBCPP_DEPRECATED_ABI_LEGACY_LIBRARY_DEFINITIONS_FOR_INLINE_FUNCTIONS -# endif +// conflict with the dllexport-emitted copy, so we disable it. For XCOFF, +// the linker will take issue with the symbols in the shared object if the +// weak inline methods get visibility (such as from -fvisibility-inlines-hidden), +// so disable it. +# define _LIBCPP_DEPRECATED_ABI_LEGACY_LIBRARY_DEFINITIONS_FOR_INLINE_FUNCTIONS +# endif // Feature macros for disabling pre ABI v1 features. All of these options // are deprecated. -# if defined(__FreeBSD__) -# define _LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR +# if defined(__FreeBSD__) +# define _LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR +# endif +// For XCOFF linkers, we have problems if we see a weak hidden version of a symbol +// in user code (like you get with -fvisibility-inlines-hidden) and then a strong def +// in the library, so we need to always rely on the library version. +# if defined(_AIX) +# define _LIBCPP_ABI_BAD_FUNCTION_CALL_KEY_FUNCTION +# endif # endif -#endif -#ifdef _LIBCPP_TRIVIAL_PAIR_COPY_CTOR -#error "_LIBCPP_TRIVIAL_PAIR_COPY_CTOR" is no longer supported. \ - use _LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR instead -#endif +# if defined(_LIBCPP_BUILDING_LIBRARY) || _LIBCPP_ABI_VERSION >= 2 +// Enable additional explicit instantiations of iostreams components. This +// reduces the number of weak definitions generated in programs that use +// iostreams by providing a single strong definition in the shared library. +# define _LIBCPP_ABI_ENABLE_ADDITIONAL_IOSTREAM_EXPLICIT_INSTANTIATIONS_1 -#define _LIBCPP_CONCAT1(_LIBCPP_X,_LIBCPP_Y) _LIBCPP_X##_LIBCPP_Y -#define _LIBCPP_CONCAT(_LIBCPP_X,_LIBCPP_Y) _LIBCPP_CONCAT1(_LIBCPP_X,_LIBCPP_Y) +// Define a key function for `bad_function_call` in the library, to centralize +// its vtable and typeinfo to libc++ rather than having all other libraries +// using that class define their own copies. +# define _LIBCPP_ABI_BAD_FUNCTION_CALL_KEY_FUNCTION +# endif -#ifndef _LIBCPP_ABI_NAMESPACE -# define _LIBCPP_ABI_NAMESPACE _LIBCPP_CONCAT(__,_LIBCPP_ABI_VERSION) -#endif +# define _LIBCPP_TOSTRING2(x) #x +# define _LIBCPP_TOSTRING(x) _LIBCPP_TOSTRING2(x) -#if __cplusplus < 201103L -#define _LIBCPP_CXX03_LANG -#endif +// NOLINTNEXTLINE(libcpp-cpp-version-check) +# if __cplusplus < 201103L +# define _LIBCPP_CXX03_LANG +# endif -#ifndef __has_attribute -#define __has_attribute(__x) 0 -#endif +# ifndef __has_attribute +# define __has_attribute(__x) 0 +# endif -#ifndef __has_builtin -#define __has_builtin(__x) 0 -#endif +# ifndef __has_builtin +# define __has_builtin(__x) 0 +# endif -#ifndef __has_extension -#define __has_extension(__x) 0 -#endif +# ifndef __has_extension +# define __has_extension(__x) 0 +# endif -#ifndef __has_feature -#define __has_feature(__x) 0 -#endif +# ifndef __has_feature +# define __has_feature(__x) 0 +# endif -#ifndef __has_cpp_attribute -#define __has_cpp_attribute(__x) 0 -#endif +# ifndef __has_cpp_attribute +# define __has_cpp_attribute(__x) 0 +# endif + +# ifndef __has_constexpr_builtin +# define __has_constexpr_builtin(x) 0 +# endif // '__is_identifier' returns '0' if '__x' is a reserved identifier provided by // the compiler and '1' otherwise. -#ifndef __is_identifier -#define __is_identifier(__x) 1 -#endif - -#ifndef __has_declspec_attribute -#define __has_declspec_attribute(__x) 0 -#endif - -#define __has_keyword(__x) !(__is_identifier(__x)) - -#ifndef __has_include -#define __has_include(...) 0 -#endif - -#if defined(__clang__) -# define _LIBCPP_COMPILER_CLANG -# ifndef __apple_build_version__ -# define _LIBCPP_CLANG_VER (__clang_major__ * 100 + __clang_minor__) +# ifndef __is_identifier +# define __is_identifier(__x) 1 # endif -#elif defined(__GNUC__) -# define _LIBCPP_COMPILER_GCC -#elif defined(_MSC_VER) -# define _LIBCPP_COMPILER_MSVC -#elif defined(__IBMCPP__) -# define _LIBCPP_COMPILER_IBM -#endif -#if defined(_LIBCPP_COMPILER_GCC) && __cplusplus < 201103L -#error "libc++ does not support using GCC with C++03. Please enable C++11" -#endif +# ifndef __has_declspec_attribute +# define __has_declspec_attribute(__x) 0 +# endif + +# define __has_keyword(__x) !(__is_identifier(__x)) + +# ifndef __has_include +# define __has_include(...) 0 +# endif + +# if !defined(_LIBCPP_COMPILER_CLANG_BASED) && __cplusplus < 201103L +# error "libc++ only supports C++03 with Clang-based compilers. Please enable C++11" +# endif // FIXME: ABI detection should be done via compiler builtin macros. This // is just a placeholder until Clang implements such macros. For now assume // that Windows compilers pretending to be MSVC++ target the Microsoft ABI, // and allow the user to explicitly specify the ABI to handle cases where this // heuristic falls short. -#if defined(_LIBCPP_ABI_FORCE_ITANIUM) && defined(_LIBCPP_ABI_FORCE_MICROSOFT) -# error "Only one of _LIBCPP_ABI_FORCE_ITANIUM and _LIBCPP_ABI_FORCE_MICROSOFT can be defined" -#elif defined(_LIBCPP_ABI_FORCE_ITANIUM) -# define _LIBCPP_ABI_ITANIUM -#elif defined(_LIBCPP_ABI_FORCE_MICROSOFT) -# define _LIBCPP_ABI_MICROSOFT -#else -# if defined(_WIN32) && defined(_MSC_VER) +# if defined(_LIBCPP_ABI_FORCE_ITANIUM) && defined(_LIBCPP_ABI_FORCE_MICROSOFT) +# error "Only one of _LIBCPP_ABI_FORCE_ITANIUM and _LIBCPP_ABI_FORCE_MICROSOFT can be defined" +# elif defined(_LIBCPP_ABI_FORCE_ITANIUM) +# define _LIBCPP_ABI_ITANIUM +# elif defined(_LIBCPP_ABI_FORCE_MICROSOFT) # define _LIBCPP_ABI_MICROSOFT # else -# define _LIBCPP_ABI_ITANIUM +# if defined(_WIN32) && defined(_MSC_VER) +# define _LIBCPP_ABI_MICROSOFT +# else +# define _LIBCPP_ABI_ITANIUM +# endif # endif -#endif -#if defined(_LIBCPP_ABI_MICROSOFT) && !defined(_LIBCPP_NO_VCRUNTIME) -# define _LIBCPP_ABI_VCRUNTIME -#endif +# if defined(_LIBCPP_ABI_MICROSOFT) && !defined(_LIBCPP_NO_VCRUNTIME) +# define _LIBCPP_ABI_VCRUNTIME +# endif + +# if __has_feature(experimental_library) +# ifndef _LIBCPP_ENABLE_EXPERIMENTAL +# define _LIBCPP_ENABLE_EXPERIMENTAL +# endif +# endif + +// Incomplete features get their own specific disabling flags. This makes it +// easier to grep for target specific flags once the feature is complete. +# if !defined(_LIBCPP_ENABLE_EXPERIMENTAL) && !defined(_LIBCPP_BUILDING_LIBRARY) +# define _LIBCPP_HAS_NO_INCOMPLETE_PSTL +# endif // Need to detect which libc we're using if we're on Linux. -#if defined(__linux__) -# if defined(__GLIBC_PREREQ) -# define _LIBCPP_GLIBC_PREREQ(a, b) __GLIBC_PREREQ(a, b) -# else -# define _LIBCPP_GLIBC_PREREQ(a, b) 0 -# endif // defined(__GLIBC_PREREQ) -#endif // defined(__linux__) +# if defined(__linux__) +# include +# if defined(__GLIBC_PREREQ) +# define _LIBCPP_GLIBC_PREREQ(a, b) __GLIBC_PREREQ(a, b) +# else +# define _LIBCPP_GLIBC_PREREQ(a, b) 0 +# endif // defined(__GLIBC_PREREQ) +# endif // defined(__linux__) -#ifdef __LITTLE_ENDIAN__ -# if __LITTLE_ENDIAN__ -# define _LIBCPP_LITTLE_ENDIAN -# endif // __LITTLE_ENDIAN__ -#endif // __LITTLE_ENDIAN__ - -#ifdef __BIG_ENDIAN__ -# if __BIG_ENDIAN__ -# define _LIBCPP_BIG_ENDIAN -# endif // __BIG_ENDIAN__ -#endif // __BIG_ENDIAN__ - -#ifdef __BYTE_ORDER__ -# if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ -# define _LIBCPP_LITTLE_ENDIAN -# elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ -# define _LIBCPP_BIG_ENDIAN -# endif // __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ -#endif // __BYTE_ORDER__ - -#if defined(__CloudABI__) - // Certain architectures provide arc4random(). Prefer using - // arc4random() over /dev/{u,}random to make it possible to obtain - // random data even when using sandboxing mechanisms such as chroots, - // Capsicum, etc. -# define _LIBCPP_USING_ARC4_RANDOM -#elif defined(__Fuchsia__) || defined(__wasi__) || defined(__COSMOPOLITAN__) -# define _LIBCPP_USING_GETENTROPY -#elif defined(__native_client__) - // NaCl's sandbox (which PNaCl also runs in) doesn't allow filesystem access, - // including accesses to the special files under /dev. C++11's - // std::random_device is instead exposed through a NaCl syscall. -# define _LIBCPP_USING_NACL_RANDOM -#elif defined(_LIBCPP_WIN32API) -# define _LIBCPP_USING_WIN32_RANDOM -#else -# define _LIBCPP_USING_DEV_RANDOM -#endif - -#if !defined(_LIBCPP_LITTLE_ENDIAN) && !defined(_LIBCPP_BIG_ENDIAN) -#include "libc/sysv/consts/endian.h" -# if __BYTE_ORDER == __LITTLE_ENDIAN -# define _LIBCPP_LITTLE_ENDIAN -# elif __BYTE_ORDER == __BIG_ENDIAN -# define _LIBCPP_BIG_ENDIAN -# else // __BYTE_ORDER == __BIG_ENDIAN -# error unable to determine endian +# if defined(__MVS__) +# include // for __NATIVE_ASCII_F # endif -#endif // !defined(_LIBCPP_LITTLE_ENDIAN) && !defined(_LIBCPP_BIG_ENDIAN) -#if __has_attribute(__no_sanitize__) && !defined(_LIBCPP_COMPILER_GCC) -# define _LIBCPP_NO_CFI __attribute__((__no_sanitize__("cfi"))) -#else -# define _LIBCPP_NO_CFI -#endif +# ifdef __LITTLE_ENDIAN__ +# if __LITTLE_ENDIAN__ +# define _LIBCPP_LITTLE_ENDIAN +# endif // __LITTLE_ENDIAN__ +# endif // __LITTLE_ENDIAN__ -#if __ISO_C_VISIBLE >= 2011 || __cplusplus >= 201103L -# if defined(__FreeBSD__) -# define _LIBCPP_HAS_QUICK_EXIT -# define _LIBCPP_HAS_C11_FEATURES -# elif defined(__Fuchsia__) || defined(__wasi__) -# define _LIBCPP_HAS_QUICK_EXIT -# define _LIBCPP_HAS_TIMESPEC_GET -# define _LIBCPP_HAS_C11_FEATURES -# elif defined(__COSMOPOLITAN__) -# define _LIBCPP_HAS_TIMESPEC_GET -# define _LIBCPP_HAS_C11_FEATURES -# elif defined(__linux__) -# if !defined(_LIBCPP_HAS_MUSL_LIBC) -# if _LIBCPP_GLIBC_PREREQ(2, 15) || defined(__BIONIC__) -# define _LIBCPP_HAS_QUICK_EXIT -# endif -# if _LIBCPP_GLIBC_PREREQ(2, 17) -# define _LIBCPP_HAS_C11_FEATURES -# define _LIBCPP_HAS_TIMESPEC_GET -# endif -# else // defined(_LIBCPP_HAS_MUSL_LIBC) -# define _LIBCPP_HAS_QUICK_EXIT -# define _LIBCPP_HAS_TIMESPEC_GET -# define _LIBCPP_HAS_C11_FEATURES +# ifdef __BIG_ENDIAN__ +# if __BIG_ENDIAN__ +# define _LIBCPP_BIG_ENDIAN +# endif // __BIG_ENDIAN__ +# endif // __BIG_ENDIAN__ + +# ifdef __BYTE_ORDER__ +# if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ +# define _LIBCPP_LITTLE_ENDIAN +# elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ +# define _LIBCPP_BIG_ENDIAN +# endif // __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ +# endif // __BYTE_ORDER__ + +# ifdef __FreeBSD__ +# include +# include +# if _BYTE_ORDER == _LITTLE_ENDIAN +# define _LIBCPP_LITTLE_ENDIAN +# else // _BYTE_ORDER == _LITTLE_ENDIAN +# define _LIBCPP_BIG_ENDIAN +# endif // _BYTE_ORDER == _LITTLE_ENDIAN +# endif // __FreeBSD__ + +# if defined(__NetBSD__) || defined(__OpenBSD__) +# include +# if _BYTE_ORDER == _LITTLE_ENDIAN +# define _LIBCPP_LITTLE_ENDIAN +# else // _BYTE_ORDER == _LITTLE_ENDIAN +# define _LIBCPP_BIG_ENDIAN +# endif // _BYTE_ORDER == _LITTLE_ENDIAN +# endif // defined(__NetBSD__) || defined(__OpenBSD__) + +# if defined(_WIN32) +# define _LIBCPP_WIN32API +# define _LIBCPP_LITTLE_ENDIAN +# define _LIBCPP_SHORT_WCHAR 1 +// Both MinGW and native MSVC provide a "MSVC"-like environment +# define _LIBCPP_MSVCRT_LIKE +// If mingw not explicitly detected, assume using MS C runtime only if +// a MS compatibility version is specified. +# if defined(_MSC_VER) && !defined(__MINGW32__) +# define _LIBCPP_MSVCRT // Using Microsoft's C Runtime library # endif -# endif // __linux__ -#endif +# if (defined(_M_AMD64) || defined(__x86_64__)) || (defined(_M_ARM) || defined(__arm__)) +# define _LIBCPP_HAS_BITSCAN64 +# endif +# define _LIBCPP_HAS_OPEN_WITH_WCHAR +# endif // defined(_WIN32) -#ifndef _LIBCPP_CXX03_LANG -# define _LIBCPP_ALIGNOF(_Tp) alignof(_Tp) -#elif defined(_LIBCPP_COMPILER_CLANG) -# define _LIBCPP_ALIGNOF(_Tp) _Alignof(_Tp) -#else -// This definition is potentially buggy, but it's only taken with GCC in C++03, -// which we barely support anyway. See llvm.org/PR39713 -# define _LIBCPP_ALIGNOF(_Tp) __alignof(_Tp) -#endif +# if defined(_AIX) && !defined(__64BIT__) +// The size of wchar is 2 byte on 32-bit mode on AIX. +# define _LIBCPP_SHORT_WCHAR 1 +# endif -#define _LIBCPP_PREFERRED_ALIGNOF(_Tp) __alignof(_Tp) +// Libc++ supports various implementations of std::random_device. +// +// _LIBCPP_USING_DEV_RANDOM +// Read entropy from the given file, by default `/dev/urandom`. +// If a token is provided, it is assumed to be the path to a file +// to read entropy from. This is the default behavior if nothing +// else is specified. This implementation requires storing state +// inside `std::random_device`. +// +// _LIBCPP_USING_ARC4_RANDOM +// Use arc4random(). This allows obtaining random data even when +// using sandboxing mechanisms. On some platforms like Apple, this +// is the recommended source of entropy for user-space programs. +// When this option is used, the token passed to `std::random_device`'s +// constructor *must* be "/dev/urandom" -- anything else is an error. +// +// _LIBCPP_USING_GETENTROPY +// Use getentropy(). +// When this option is used, the token passed to `std::random_device`'s +// constructor *must* be "/dev/urandom" -- anything else is an error. +// +// _LIBCPP_USING_FUCHSIA_CPRNG +// Use Fuchsia's zx_cprng_draw() system call, which is specified to +// deliver high-quality entropy and cannot fail. +// When this option is used, the token passed to `std::random_device`'s +// constructor *must* be "/dev/urandom" -- anything else is an error. +// +// _LIBCPP_USING_NACL_RANDOM +// NaCl's sandbox (which PNaCl also runs in) doesn't allow filesystem access, +// including accesses to the special files under `/dev`. This implementation +// uses the NaCL syscall `nacl_secure_random_init()` to get entropy. +// When this option is used, the token passed to `std::random_device`'s +// constructor *must* be "/dev/urandom" -- anything else is an error. +// +// _LIBCPP_USING_WIN32_RANDOM +// Use rand_s(), for use on Windows. +// When this option is used, the token passed to `std::random_device`'s +// constructor *must* be "/dev/urandom" -- anything else is an error. +# if defined(__APPLE__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || \ + defined(__DragonFly__) +# define _LIBCPP_USING_ARC4_RANDOM +# elif defined(__wasi__) || defined(__EMSCRIPTEN__) +# define _LIBCPP_USING_GETENTROPY +# elif defined(__Fuchsia__) +# define _LIBCPP_USING_FUCHSIA_CPRNG +# elif defined(__native_client__) +# define _LIBCPP_USING_NACL_RANDOM +# elif defined(_LIBCPP_WIN32API) +# define _LIBCPP_USING_WIN32_RANDOM +# else +# define _LIBCPP_USING_DEV_RANDOM +# endif -#if defined(_LIBCPP_COMPILER_CLANG) +# if !defined(_LIBCPP_LITTLE_ENDIAN) && !defined(_LIBCPP_BIG_ENDIAN) +# include +# if __BYTE_ORDER == __LITTLE_ENDIAN +# define _LIBCPP_LITTLE_ENDIAN +# elif __BYTE_ORDER == __BIG_ENDIAN +# define _LIBCPP_BIG_ENDIAN +# else // __BYTE_ORDER == __BIG_ENDIAN +# error unable to determine endian +# endif +# endif // !defined(_LIBCPP_LITTLE_ENDIAN) && !defined(_LIBCPP_BIG_ENDIAN) -// _LIBCPP_ALTERNATE_STRING_LAYOUT is an old name for -// _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT left here for backward compatibility. -#if (defined(__APPLE__) && !defined(__i386__) && !defined(__x86_64__) && \ - (!defined(__arm__) || __ARM_ARCH_7K__ >= 2)) || \ - defined(_LIBCPP_ALTERNATE_STRING_LAYOUT) -// #define _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT -#endif +# if __has_attribute(__no_sanitize__) && !defined(_LIBCPP_COMPILER_GCC) +# define _LIBCPP_NO_CFI __attribute__((__no_sanitize__("cfi"))) +# else +# define _LIBCPP_NO_CFI +# endif -#if __has_feature(cxx_alignas) -# define _ALIGNAS_TYPE(x) alignas(x) -# define _ALIGNAS(x) alignas(x) -#else -# define _ALIGNAS_TYPE(x) __attribute__((__aligned__(_LIBCPP_ALIGNOF(x)))) -# define _ALIGNAS(x) __attribute__((__aligned__(x))) -#endif +# ifndef _LIBCPP_CXX03_LANG + +# define _LIBCPP_ALIGNOF(_Tp) alignof(_Tp) +# define _ALIGNAS_TYPE(x) alignas(x) +# define _ALIGNAS(x) alignas(x) +# define _LIBCPP_NORETURN [[noreturn]] +# define _NOEXCEPT noexcept +# define _NOEXCEPT_(x) noexcept(x) +# define _LIBCPP_CONSTEXPR constexpr + +# else + +# define _LIBCPP_ALIGNOF(_Tp) _Alignof(_Tp) +# define _ALIGNAS_TYPE(x) __attribute__((__aligned__(_LIBCPP_ALIGNOF(x)))) +# define _ALIGNAS(x) __attribute__((__aligned__(x))) +# define _LIBCPP_NORETURN __attribute__((__noreturn__)) +# define _LIBCPP_HAS_NO_NOEXCEPT +# define nullptr __nullptr +# define _NOEXCEPT throw() +# define _NOEXCEPT_(x) +# define static_assert(...) _Static_assert(__VA_ARGS__) +# define decltype(...) __decltype(__VA_ARGS__) +# define _LIBCPP_CONSTEXPR -#if __cplusplus < 201103L typedef __char16_t char16_t; typedef __char32_t char32_t; -#endif -#if !(__has_feature(cxx_exceptions)) && !defined(_LIBCPP_NO_EXCEPTIONS) -#define _LIBCPP_NO_EXCEPTIONS -#endif - -#if !(__has_feature(cxx_rtti)) && !defined(_LIBCPP_NO_RTTI) -#define _LIBCPP_NO_RTTI -#endif - -#if !(__has_feature(cxx_strong_enums)) -#define _LIBCPP_HAS_NO_STRONG_ENUMS -#endif - -#if __has_feature(cxx_attributes) -# define _LIBCPP_NORETURN [[noreturn]] -#else -# define _LIBCPP_NORETURN __attribute__ ((__noreturn__)) -#endif - -#if !(__has_feature(cxx_lambdas)) -#define _LIBCPP_HAS_NO_LAMBDAS -#endif - -#if !(__has_feature(cxx_nullptr)) -# if (__has_extension(cxx_nullptr) || __has_keyword(__nullptr)) && defined(_LIBCPP_ABI_ALWAYS_USE_CXX11_NULLPTR) -# define nullptr __nullptr -# else -# define _LIBCPP_HAS_NO_NULLPTR # endif -#endif -#if !(__has_feature(cxx_rvalue_references)) -#define _LIBCPP_HAS_NO_RVALUE_REFERENCES -#endif +# if !defined(__cpp_exceptions) || __cpp_exceptions < 199711L +# define _LIBCPP_HAS_NO_EXCEPTIONS +# endif -#if !(__has_feature(cxx_auto_type)) -#define _LIBCPP_HAS_NO_AUTO_TYPE -#endif +# define _LIBCPP_PREFERRED_ALIGNOF(_Tp) __alignof(_Tp) -#if !(__has_feature(cxx_variadic_templates)) -#define _LIBCPP_HAS_NO_VARIADICS -#endif +# if defined(_LIBCPP_COMPILER_CLANG_BASED) + +# if defined(__APPLE__) && !defined(__i386__) && !defined(__x86_64__) && (!defined(__arm__) || __ARM_ARCH_7K__ >= 2) +# define _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT +# endif // Objective-C++ features (opt-in) -#if __has_feature(objc_arc) -#define _LIBCPP_HAS_OBJC_ARC -#endif +# if __has_feature(objc_arc) +# define _LIBCPP_HAS_OBJC_ARC +# endif -#if __has_feature(objc_arc_weak) -#define _LIBCPP_HAS_OBJC_ARC_WEAK -#endif +# if __has_feature(objc_arc_weak) +# define _LIBCPP_HAS_OBJC_ARC_WEAK +# endif -#if !(__has_feature(cxx_relaxed_constexpr)) -#define _LIBCPP_HAS_NO_CXX14_CONSTEXPR -#endif +# if __has_extension(blocks) +# define _LIBCPP_HAS_EXTENSION_BLOCKS +# endif -#if !(__has_feature(cxx_variable_templates)) -#define _LIBCPP_HAS_NO_VARIABLE_TEMPLATES -#endif +# if defined(_LIBCPP_HAS_EXTENSION_BLOCKS) && defined(__APPLE__) +# define _LIBCPP_HAS_BLOCKS_RUNTIME +# endif -#if !(__has_feature(cxx_noexcept)) -#define _LIBCPP_HAS_NO_NOEXCEPT -#endif - -#if !defined(_LIBCPP_HAS_NO_ASAN) && !__has_feature(address_sanitizer) -#define _LIBCPP_HAS_NO_ASAN -#endif +# if !__has_feature(address_sanitizer) +# define _LIBCPP_HAS_NO_ASAN +# endif // Allow for build-time disabling of unsigned integer sanitization -#if !defined(_LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK) && __has_attribute(no_sanitize) -#define _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK __attribute__((__no_sanitize__("unsigned-integer-overflow"))) -#endif - -#if __has_builtin(__builtin_launder) -#define _LIBCPP_COMPILER_HAS_BUILTIN_LAUNDER -#endif - -#if !__is_identifier(__has_unique_object_representations) -#define _LIBCPP_HAS_UNIQUE_OBJECT_REPRESENTATIONS -#endif - -#define _LIBCPP_ALWAYS_INLINE __attribute__ ((__always_inline__)) - -// Literal operators ""d and ""y are supported starting with LLVM Clang 8 and AppleClang 10.0.1 -#if (defined(_LIBCPP_CLANG_VER) && _LIBCPP_CLANG_VER < 800) || \ - (defined(__apple_build_version__) && __apple_build_version__ < 10010000) -#define _LIBCPP_HAS_NO_CXX20_CHRONO_LITERALS -#endif - -#define _LIBCPP_DISABLE_EXTENSION_WARNING __extension__ - -#elif defined(_LIBCPP_COMPILER_GCC) - -#define _ALIGNAS(x) __attribute__((__aligned__(x))) -#define _ALIGNAS_TYPE(x) __attribute__((__aligned__(_LIBCPP_ALIGNOF(x)))) - -#define _LIBCPP_NORETURN __attribute__((noreturn)) - -#if !__EXCEPTIONS && !defined(_LIBCPP_NO_EXCEPTIONS) -#define _LIBCPP_NO_EXCEPTIONS -#endif - -// Determine if GCC supports relaxed constexpr -#if !defined(__cpp_constexpr) || __cpp_constexpr < 201304L -#define _LIBCPP_HAS_NO_CXX14_CONSTEXPR -#endif - -// GCC 5 supports variable templates -#if !defined(__cpp_variable_templates) || __cpp_variable_templates < 201304L -#define _LIBCPP_HAS_NO_VARIABLE_TEMPLATES -#endif - -#if !defined(_LIBCPP_HAS_NO_ASAN) && !defined(__SANITIZE_ADDRESS__) -#define _LIBCPP_HAS_NO_ASAN -#endif - -#if _GNUC_VER >= 700 -#define _LIBCPP_COMPILER_HAS_BUILTIN_LAUNDER -#endif - -#if _GNUC_VER >= 700 -#define _LIBCPP_HAS_UNIQUE_OBJECT_REPRESENTATIONS -#endif - -#define _LIBCPP_ALWAYS_INLINE __attribute__ ((__always_inline__)) - -#define _LIBCPP_DISABLE_EXTENSION_WARNING __extension__ - -#elif defined(_LIBCPP_COMPILER_MSVC) - -#define _LIBCPP_TOSTRING2(x) #x -#define _LIBCPP_TOSTRING(x) _LIBCPP_TOSTRING2(x) -#define _LIBCPP_WARNING(x) __pragma(message(__FILE__ "(" _LIBCPP_TOSTRING(__LINE__) ") : warning note: " x)) - -#if _MSC_VER < 1900 -#error "MSVC versions prior to Visual Studio 2015 are not supported" -#endif - -#define _LIBCPP_HAS_NO_CXX14_CONSTEXPR -#define _LIBCPP_HAS_NO_VARIABLE_TEMPLATES -#define __alignof__ __alignof -#define _LIBCPP_NORETURN __declspec(noreturn) -#define _ALIGNAS(x) __declspec(align(x)) -#define _ALIGNAS_TYPE(x) alignas(x) - -#define _LIBCPP_WEAK - -#define _LIBCPP_HAS_NO_ASAN - -#define _LIBCPP_ALWAYS_INLINE __forceinline - -#define _LIBCPP_HAS_NO_VECTOR_EXTENSION - -#define _LIBCPP_DISABLE_EXTENSION_WARNING - -#elif defined(_LIBCPP_COMPILER_IBM) - -#define _ALIGNAS(x) __attribute__((__aligned__(x))) -#define _ALIGNAS_TYPE(x) __attribute__((__aligned__(_LIBCPP_ALIGNOF(x)))) -#define _ATTRIBUTE(x) __attribute__((x)) -#define _LIBCPP_NORETURN __attribute__((noreturn)) - -#define _LIBCPP_HAS_NO_UNICODE_CHARS -#define _LIBCPP_HAS_NO_VARIABLE_TEMPLATES - -#if defined(_AIX) -#define __MULTILOCALE_API -#endif - -#define _LIBCPP_HAS_NO_ASAN - -#define _LIBCPP_ALWAYS_INLINE __attribute__ ((__always_inline__)) - -#define _LIBCPP_HAS_NO_VECTOR_EXTENSION - -#define _LIBCPP_DISABLE_EXTENSION_WARNING - -#endif // _LIBCPP_COMPILER_[CLANG|GCC|MSVC|IBM] - -#if defined(_LIBCPP_OBJECT_FORMAT_COFF) - -#ifdef _DLL -# define _LIBCPP_CRT_FUNC __declspec(dllimport) -#else -# define _LIBCPP_CRT_FUNC -#endif - -#if defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) -# define _LIBCPP_DLL_VIS -# define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS -# define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS -# define _LIBCPP_OVERRIDABLE_FUNC_VIS -# define _LIBCPP_EXPORTED_FROM_ABI -#elif defined(_LIBCPP_BUILDING_LIBRARY) -# define _LIBCPP_DLL_VIS __declspec(dllexport) -# if defined(__MINGW32__) -# define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS _LIBCPP_DLL_VIS -# define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS -# else -# define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS -# define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS _LIBCPP_DLL_VIS -# endif -# define _LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_DLL_VIS -# define _LIBCPP_EXPORTED_FROM_ABI __declspec(dllexport) -#else -# define _LIBCPP_DLL_VIS __declspec(dllimport) -# define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS _LIBCPP_DLL_VIS -# define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS -# define _LIBCPP_OVERRIDABLE_FUNC_VIS -# define _LIBCPP_EXPORTED_FROM_ABI __declspec(dllimport) -#endif - -#define _LIBCPP_TYPE_VIS _LIBCPP_DLL_VIS -#define _LIBCPP_FUNC_VIS _LIBCPP_DLL_VIS -#define _LIBCPP_EXCEPTION_ABI _LIBCPP_DLL_VIS -#define _LIBCPP_HIDDEN -#define _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS -#define _LIBCPP_TEMPLATE_VIS -#define _LIBCPP_ENUM_VIS - -#endif // defined(_LIBCPP_OBJECT_FORMAT_COFF) - -#ifndef _LIBCPP_HIDDEN -# if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) -# define _LIBCPP_HIDDEN __attribute__ ((__visibility__("hidden"))) -# else -# define _LIBCPP_HIDDEN -# endif -#endif - -#ifndef _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS -# if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) -// The inline should be removed once PR32114 is resolved -# define _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS inline _LIBCPP_HIDDEN -# else -# define _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS -# endif -#endif - -#ifndef _LIBCPP_FUNC_VIS -# if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) -# define _LIBCPP_FUNC_VIS __attribute__ ((__visibility__("default"))) -# else -# define _LIBCPP_FUNC_VIS -# endif -#endif - -#ifndef _LIBCPP_TYPE_VIS -# if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) -# define _LIBCPP_TYPE_VIS __attribute__ ((__visibility__("default"))) -# else -# define _LIBCPP_TYPE_VIS -# endif -#endif - -#ifndef _LIBCPP_TEMPLATE_VIS -# if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) -# if __has_attribute(__type_visibility__) -# define _LIBCPP_TEMPLATE_VIS __attribute__ ((__type_visibility__("default"))) -# else -# define _LIBCPP_TEMPLATE_VIS __attribute__ ((__visibility__("default"))) +# if __has_attribute(no_sanitize) +# define _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK __attribute__((__no_sanitize__("unsigned-integer-overflow"))) # endif -# else + +# define _LIBCPP_ALWAYS_INLINE __attribute__((__always_inline__)) + +# define _LIBCPP_DISABLE_EXTENSION_WARNING __extension__ + +# elif defined(_LIBCPP_COMPILER_GCC) + +# if !defined(__SANITIZE_ADDRESS__) +# define _LIBCPP_HAS_NO_ASAN +# endif + +# define _LIBCPP_ALWAYS_INLINE __attribute__((__always_inline__)) + +# define _LIBCPP_DISABLE_EXTENSION_WARNING __extension__ + +# endif // _LIBCPP_COMPILER_[CLANG|GCC] + +# if defined(_LIBCPP_OBJECT_FORMAT_COFF) + +# ifdef _DLL +# define _LIBCPP_CRT_FUNC __declspec(dllimport) +# else +# define _LIBCPP_CRT_FUNC +# endif + +# if defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) || (defined(__MINGW32__) && !defined(_LIBCPP_BUILDING_LIBRARY)) +# define _LIBCPP_DLL_VIS +# define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS +# define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS +# define _LIBCPP_OVERRIDABLE_FUNC_VIS +# define _LIBCPP_EXPORTED_FROM_ABI +# elif defined(_LIBCPP_BUILDING_LIBRARY) +# define _LIBCPP_DLL_VIS __declspec(dllexport) +# if defined(__MINGW32__) +# define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS _LIBCPP_DLL_VIS +# define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS +# else +# define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS +# define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS _LIBCPP_DLL_VIS +# endif +# define _LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_DLL_VIS +# define _LIBCPP_EXPORTED_FROM_ABI __declspec(dllexport) +# else +# define _LIBCPP_DLL_VIS __declspec(dllimport) +# define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS _LIBCPP_DLL_VIS +# define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS +# define _LIBCPP_OVERRIDABLE_FUNC_VIS +# define _LIBCPP_EXPORTED_FROM_ABI __declspec(dllimport) +# endif + +# define _LIBCPP_TYPE_VIS _LIBCPP_DLL_VIS +# define _LIBCPP_FUNC_VIS _LIBCPP_DLL_VIS +# define _LIBCPP_EXCEPTION_ABI _LIBCPP_DLL_VIS +# define _LIBCPP_HIDDEN +# define _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS # define _LIBCPP_TEMPLATE_VIS -# endif -#endif - -#ifndef _LIBCPP_EXPORTED_FROM_ABI -# if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) -# define _LIBCPP_EXPORTED_FROM_ABI __attribute__((__visibility__("default"))) -# else -# define _LIBCPP_EXPORTED_FROM_ABI -# endif -#endif - -#ifndef _LIBCPP_OVERRIDABLE_FUNC_VIS -#define _LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_FUNC_VIS -#endif - -#ifndef _LIBCPP_EXCEPTION_ABI -# if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) -# define _LIBCPP_EXCEPTION_ABI __attribute__ ((__visibility__("default"))) -# else -# define _LIBCPP_EXCEPTION_ABI -# endif -#endif - -#ifndef _LIBCPP_ENUM_VIS -# if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) && __has_attribute(__type_visibility__) -# define _LIBCPP_ENUM_VIS __attribute__ ((__type_visibility__("default"))) -# else +# define _LIBCPP_TEMPLATE_DATA_VIS # define _LIBCPP_ENUM_VIS -# endif -#endif -#ifndef _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS -# if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) && __has_attribute(__type_visibility__) -# define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS __attribute__ ((__visibility__("default"))) # else -# define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS -# endif -#endif -#ifndef _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS -#define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS -#endif +# if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) +# define _LIBCPP_VISIBILITY(vis) __attribute__((__visibility__(vis))) +# else +# define _LIBCPP_VISIBILITY(vis) +# endif -#if __has_attribute(internal_linkage) -# define _LIBCPP_INTERNAL_LINKAGE __attribute__ ((internal_linkage)) -#else -# define _LIBCPP_INTERNAL_LINKAGE _LIBCPP_ALWAYS_INLINE -#endif +# define _LIBCPP_HIDDEN _LIBCPP_VISIBILITY("hidden") +# define _LIBCPP_FUNC_VIS _LIBCPP_VISIBILITY("default") +# define _LIBCPP_TYPE_VIS _LIBCPP_VISIBILITY("default") +# define _LIBCPP_TEMPLATE_DATA_VIS _LIBCPP_VISIBILITY("default") +# define _LIBCPP_EXPORTED_FROM_ABI _LIBCPP_VISIBILITY("default") +# define _LIBCPP_EXCEPTION_ABI _LIBCPP_VISIBILITY("default") +# define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS _LIBCPP_VISIBILITY("default") +# define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS -#if __has_attribute(exclude_from_explicit_instantiation) -# define _LIBCPP_EXCLUDE_FROM_EXPLICIT_INSTANTIATION __attribute__ ((__exclude_from_explicit_instantiation__)) -#else - // TODO(jart): Why is this so horrible broken with GCC? - // Many definitions end up with always_inline but not inline. - // - // Try to approximate the effect of exclude_from_explicit_instantiation - // (which is that entities are not assumed to be provided by explicit - // template instantiations in the dylib) by always inlining those entities. -# define _LIBCPP_EXCLUDE_FROM_EXPLICIT_INSTANTIATION // _LIBCPP_ALWAYS_INLINE -#endif +// TODO: Make this a proper customization point or remove the option to override it. +# ifndef _LIBCPP_OVERRIDABLE_FUNC_VIS +# define _LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_VISIBILITY("default") +# endif -#ifndef _LIBCPP_HIDE_FROM_ABI_PER_TU -# ifndef _LIBCPP_HIDE_FROM_ABI_PER_TU_BY_DEFAULT -# define _LIBCPP_HIDE_FROM_ABI_PER_TU 0 +# if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) +// The inline should be removed once PR32114 is resolved +# define _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS inline _LIBCPP_HIDDEN +# else +# define _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS +# endif + +# if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) +# if __has_attribute(__type_visibility__) +# define _LIBCPP_TEMPLATE_VIS __attribute__((__type_visibility__("default"))) +# else +# define _LIBCPP_TEMPLATE_VIS __attribute__((__visibility__("default"))) +# endif +# else +# define _LIBCPP_TEMPLATE_VIS +# endif + +# if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) && __has_attribute(__type_visibility__) +# define _LIBCPP_ENUM_VIS __attribute__((__type_visibility__("default"))) +# else +# define _LIBCPP_ENUM_VIS +# endif + +# endif // defined(_LIBCPP_OBJECT_FORMAT_COFF) + +# if __has_attribute(exclude_from_explicit_instantiation) +# define _LIBCPP_EXCLUDE_FROM_EXPLICIT_INSTANTIATION __attribute__((__exclude_from_explicit_instantiation__)) # else -# define _LIBCPP_HIDE_FROM_ABI_PER_TU 1 +// Try to approximate the effect of exclude_from_explicit_instantiation +// (which is that entities are not assumed to be provided by explicit +// template instantiations in the dylib) by always inlining those entities. +# define _LIBCPP_EXCLUDE_FROM_EXPLICIT_INSTANTIATION _LIBCPP_ALWAYS_INLINE # endif -#endif -#ifndef _LIBCPP_HAS_MERGED_TYPEINFO_NAMES_DEFAULT -# ifdef _LIBCPP_OBJECT_FORMAT_COFF // Windows binaries can't merge typeinfos. -# define _LIBCPP_HAS_MERGED_TYPEINFO_NAMES_DEFAULT 0 -#else -// TODO: This isn't strictly correct on ELF platforms due to llvm.org/PR37398 -// And we should consider defaulting to OFF. -# define _LIBCPP_HAS_MERGED_TYPEINFO_NAMES_DEFAULT 1 -#endif -#endif - -#ifndef _LIBCPP_HIDE_FROM_ABI -# if _LIBCPP_HIDE_FROM_ABI_PER_TU -# define _LIBCPP_HIDE_FROM_ABI _LIBCPP_HIDDEN _LIBCPP_INTERNAL_LINKAGE +// This macro marks a symbol as being hidden from libc++'s ABI. This is achieved +// on two levels: +// 1. The symbol is given hidden visibility, which ensures that users won't start exporting +// symbols from their dynamic library by means of using the libc++ headers. This ensures +// that those symbols stay private to the dynamic library in which it is defined. +// +// 2. The symbol is given an ABI tag that changes with each version of libc++. This ensures +// that no ODR violation can arise from mixing two TUs compiled with different versions +// of libc++ where we would have changed the definition of a symbol. If the symbols shared +// the same name, the ODR would require that their definitions be token-by-token equivalent, +// which basically prevents us from being able to make any change to any function in our +// headers. Using this ABI tag ensures that the symbol name is "bumped" artificially at +// each release, which lets us change the definition of these symbols at our leisure. +// Note that historically, this has been achieved in various ways, including force-inlining +// all functions or giving internal linkage to all functions. Both these (previous) solutions +// suffer from drawbacks that lead notably to code bloat. +// +// Note that we use _LIBCPP_EXCLUDE_FROM_EXPLICIT_INSTANTIATION to ensure that we don't depend +// on _LIBCPP_HIDE_FROM_ABI methods of classes explicitly instantiated in the dynamic library. +// +// Also note that the _LIBCPP_HIDE_FROM_ABI_VIRTUAL macro should be used on virtual functions +// instead of _LIBCPP_HIDE_FROM_ABI. That macro does not use an ABI tag. Indeed, the mangled +// name of a virtual function is part of its ABI, since some architectures like arm64e can sign +// the virtual function pointer in the vtable based on the mangled name of the function. Since +// we use an ABI tag that changes with each released version, the mangled name of the virtual +// function would change, which is incorrect. Note that it doesn't make much sense to change +// the implementation of a virtual function in an ABI-incompatible way in the first place, +// since that would be an ABI break anyway. Hence, the lack of ABI tag should not be noticeable. +// +// TODO: We provide a escape hatch with _LIBCPP_NO_ABI_TAG for folks who want to avoid increasing +// the length of symbols with an ABI tag. In practice, we should remove the escape hatch and +// use compression mangling instead, see https://github.com/itanium-cxx-abi/cxx-abi/issues/70. +# ifndef _LIBCPP_NO_ABI_TAG +# define _LIBCPP_HIDE_FROM_ABI \ + _LIBCPP_HIDDEN _LIBCPP_EXCLUDE_FROM_EXPLICIT_INSTANTIATION \ + __attribute__((__abi_tag__(_LIBCPP_TOSTRING(_LIBCPP_VERSIONED_IDENTIFIER)))) # else # define _LIBCPP_HIDE_FROM_ABI _LIBCPP_HIDDEN _LIBCPP_EXCLUDE_FROM_EXPLICIT_INSTANTIATION # endif -#endif +# define _LIBCPP_HIDE_FROM_ABI_VIRTUAL _LIBCPP_HIDDEN _LIBCPP_EXCLUDE_FROM_EXPLICIT_INSTANTIATION -#ifdef _LIBCPP_BUILDING_LIBRARY -# if _LIBCPP_ABI_VERSION > 1 -# define _LIBCPP_HIDE_FROM_ABI_AFTER_V1 _LIBCPP_HIDE_FROM_ABI +// This macro provides a HIDE_FROM_ABI equivalent that can be applied to extern +// "C" function, as those lack mangling. +# define _LIBCPP_HIDE_FROM_ABI_C _LIBCPP_HIDDEN _LIBCPP_EXCLUDE_FROM_EXPLICIT_INSTANTIATION + +# ifdef _LIBCPP_BUILDING_LIBRARY +# if _LIBCPP_ABI_VERSION > 1 +# define _LIBCPP_HIDE_FROM_ABI_AFTER_V1 _LIBCPP_HIDE_FROM_ABI +# else +# define _LIBCPP_HIDE_FROM_ABI_AFTER_V1 +# endif # else -# define _LIBCPP_HIDE_FROM_ABI_AFTER_V1 +# define _LIBCPP_HIDE_FROM_ABI_AFTER_V1 _LIBCPP_HIDE_FROM_ABI # endif -#else -# define _LIBCPP_HIDE_FROM_ABI_AFTER_V1 _LIBCPP_HIDE_FROM_ABI -#endif // Just so we can migrate to the new macros gradually. -#define _LIBCPP_INLINE_VISIBILITY _LIBCPP_HIDE_FROM_ABI +# define _LIBCPP_INLINE_VISIBILITY _LIBCPP_HIDE_FROM_ABI // Inline namespaces are available in Clang/GCC/MSVC regardless of C++ dialect. -#define _LIBCPP_BEGIN_NAMESPACE_STD namespace std { inline namespace _LIBCPP_ABI_NAMESPACE { -#define _LIBCPP_END_NAMESPACE_STD } } -#define _VSTD std::_LIBCPP_ABI_NAMESPACE +// clang-format off +# define _LIBCPP_BEGIN_NAMESPACE_STD namespace std { inline namespace _LIBCPP_ABI_NAMESPACE { +# define _LIBCPP_END_NAMESPACE_STD }} +# define _VSTD std + _LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_END_NAMESPACE_STD -#if _LIBCPP_STD_VER >= 17 -#define _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM \ - _LIBCPP_BEGIN_NAMESPACE_STD inline namespace __fs { namespace filesystem { -#else -#define _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM \ - _LIBCPP_BEGIN_NAMESPACE_STD namespace __fs { namespace filesystem { -#endif - -#define _LIBCPP_END_NAMESPACE_FILESYSTEM \ - _LIBCPP_END_NAMESPACE_STD } } - -#define _VSTD_FS _VSTD::__fs::filesystem - -#ifndef _LIBCPP_PREFERRED_OVERLOAD -# if __has_attribute(__enable_if__) -# define _LIBCPP_PREFERRED_OVERLOAD __attribute__ ((__enable_if__(true, ""))) -# endif -#endif - -#ifndef _LIBCPP_HAS_NO_NOEXCEPT -# define _NOEXCEPT noexcept -# define _NOEXCEPT_(x) noexcept(x) -#else -# define _NOEXCEPT throw() -# define _NOEXCEPT_(x) -#endif - -#ifdef _LIBCPP_HAS_NO_UNICODE_CHARS -typedef unsigned short char16_t; -typedef unsigned int char32_t; -#endif // _LIBCPP_HAS_NO_UNICODE_CHARS - -#ifndef __SIZEOF_INT128__ -#define _LIBCPP_HAS_NO_INT128 -#endif - -#ifdef _LIBCPP_CXX03_LANG -# define static_assert(...) _Static_assert(__VA_ARGS__) -# define decltype(...) __decltype(__VA_ARGS__) -#endif // _LIBCPP_CXX03_LANG - -#ifdef _LIBCPP_CXX03_LANG -# define _LIBCPP_CONSTEXPR -#else -# define _LIBCPP_CONSTEXPR constexpr -#endif - -#ifdef _LIBCPP_CXX03_LANG -# define _LIBCPP_DEFAULT {} -#else -# define _LIBCPP_DEFAULT = default; -#endif - -#ifdef _LIBCPP_CXX03_LANG -# define _LIBCPP_EQUAL_DELETE -#else -# define _LIBCPP_EQUAL_DELETE = delete -#endif - -#ifdef __GNUC__ -# define _LIBCPP_NOALIAS __attribute__((__malloc__)) -#else -# define _LIBCPP_NOALIAS -#endif - -#if __has_feature(cxx_explicit_conversions) || defined(__IBMCPP__) || \ - (!defined(_LIBCPP_CXX03_LANG) && defined(__GNUC__)) // All supported GCC versions -# define _LIBCPP_EXPLICIT explicit -#else -# define _LIBCPP_EXPLICIT -#endif - -#if !__has_builtin(__builtin_operator_new) || !__has_builtin(__builtin_operator_delete) -#define _LIBCPP_HAS_NO_BUILTIN_OPERATOR_NEW_DELETE -#endif - -#ifdef _LIBCPP_HAS_NO_STRONG_ENUMS -# define _LIBCPP_DECLARE_STRONG_ENUM(x) struct _LIBCPP_TYPE_VIS x { enum __lx -# define _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(x) \ - __lx __v_; \ - _LIBCPP_INLINE_VISIBILITY x(__lx __v) : __v_(__v) {} \ - _LIBCPP_INLINE_VISIBILITY explicit x(int __v) : __v_(static_cast<__lx>(__v)) {} \ - _LIBCPP_INLINE_VISIBILITY operator int() const {return __v_;} \ - }; -#else // _LIBCPP_HAS_NO_STRONG_ENUMS -# define _LIBCPP_DECLARE_STRONG_ENUM(x) enum class _LIBCPP_ENUM_VIS x -# define _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(x) -#endif // _LIBCPP_HAS_NO_STRONG_ENUMS - -#ifdef _LIBCPP_DEBUG -# if _LIBCPP_DEBUG == 0 -# define _LIBCPP_DEBUG_LEVEL 1 -# elif _LIBCPP_DEBUG == 1 -# define _LIBCPP_DEBUG_LEVEL 2 +# if _LIBCPP_STD_VER >= 17 +# define _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM \ + _LIBCPP_BEGIN_NAMESPACE_STD inline namespace __fs { namespace filesystem { # else -# error Supported values for _LIBCPP_DEBUG are 0 and 1 +# define _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM \ + _LIBCPP_BEGIN_NAMESPACE_STD namespace __fs { namespace filesystem { # endif -# if !defined(_LIBCPP_BUILDING_LIBRARY) -# define _LIBCPP_EXTERN_TEMPLATE(...) + +# define _LIBCPP_END_NAMESPACE_FILESYSTEM _LIBCPP_END_NAMESPACE_STD }} +// clang-format on + +# define _VSTD_FS std::__fs::filesystem + +# if __has_attribute(__enable_if__) +# define _LIBCPP_PREFERRED_OVERLOAD __attribute__((__enable_if__(true, ""))) # endif -#endif -#ifdef _LIBCPP_DISABLE_EXTERN_TEMPLATE -#define _LIBCPP_EXTERN_TEMPLATE(...) -#define _LIBCPP_EXTERN_TEMPLATE2(...) -#endif - -#ifndef _LIBCPP_EXTERN_TEMPLATE -#define _LIBCPP_EXTERN_TEMPLATE(...) extern template __VA_ARGS__; -#endif - -#ifndef _LIBCPP_EXTERN_TEMPLATE2 -#define _LIBCPP_EXTERN_TEMPLATE2(...) extern template __VA_ARGS__; -#endif - -#if defined(__APPLE__) || defined(__FreeBSD__) || defined(_LIBCPP_MSVCRT_LIKE) || \ - defined(__sun__) || defined(__NetBSD__) || defined(__CloudABI__) -#define _LIBCPP_LOCALE__L_EXTENSIONS 1 -#endif - -#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) -// Most unix variants have catopen. These are the specific ones that don't. -# if !defined(__BIONIC__) && !defined(_NEWLIB_VERSION) && !defined(__COSMOPOLITAN__) -# define _LIBCPP_HAS_CATOPEN 1 +# ifndef __SIZEOF_INT128__ +# define _LIBCPP_HAS_NO_INT128 # endif -#endif -#ifdef __FreeBSD__ -#define _DECLARE_C99_LDBL_MATH 1 -#endif +# if __has_attribute(__malloc__) +# define _LIBCPP_NOALIAS __attribute__((__malloc__)) +# else +# define _LIBCPP_NOALIAS +# endif + +# if __has_attribute(__using_if_exists__) +# define _LIBCPP_USING_IF_EXISTS __attribute__((__using_if_exists__)) +# else +# define _LIBCPP_USING_IF_EXISTS +# endif + +# ifdef _LIBCPP_CXX03_LANG +# define _LIBCPP_DECLARE_STRONG_ENUM(x) \ + struct _LIBCPP_TYPE_VIS x { \ + enum __lx +// clang-format off +# define _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(x) \ + __lx __v_; \ + _LIBCPP_INLINE_VISIBILITY x(__lx __v) : __v_(__v) {} \ + _LIBCPP_INLINE_VISIBILITY explicit x(int __v) : __v_(static_cast<__lx>(__v)) {} \ + _LIBCPP_INLINE_VISIBILITY operator int() const { return __v_; } \ + }; +// clang-format on + +# else // _LIBCPP_CXX03_LANG +# define _LIBCPP_DECLARE_STRONG_ENUM(x) enum class _LIBCPP_ENUM_VIS x +# define _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(x) +# endif // _LIBCPP_CXX03_LANG + +# if defined(__APPLE__) || defined(__FreeBSD__) || defined(_LIBCPP_MSVCRT_LIKE) || defined(__NetBSD__) +# define _LIBCPP_LOCALE__L_EXTENSIONS 1 +# endif + +# ifdef __FreeBSD__ +# define _DECLARE_C99_LDBL_MATH 1 +# endif // If we are getting operator new from the MSVC CRT, then allocation overloads // for align_val_t were added in 19.12, aka VS 2017 version 15.3. -#if defined(_LIBCPP_MSVCRT) && defined(_MSC_VER) && _MSC_VER < 1912 -# define _LIBCPP_HAS_NO_LIBRARY_ALIGNED_ALLOCATION -#elif defined(_LIBCPP_ABI_VCRUNTIME) && !defined(__cpp_aligned_new) - // We're deferring to Microsoft's STL to provide aligned new et al. We don't - // have it unless the language feature test macro is defined. -# define _LIBCPP_HAS_NO_LIBRARY_ALIGNED_ALLOCATION -#endif - -#if defined(__APPLE__) -# if !defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && \ - defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) -# define __MAC_OS_X_VERSION_MIN_REQUIRED __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ +# if defined(_LIBCPP_MSVCRT) && defined(_MSC_VER) && _MSC_VER < 1912 +# define _LIBCPP_HAS_NO_LIBRARY_ALIGNED_ALLOCATION +# elif defined(_LIBCPP_ABI_VCRUNTIME) && !defined(__cpp_aligned_new) +// We're deferring to Microsoft's STL to provide aligned new et al. We don't +// have it unless the language feature test macro is defined. +# define _LIBCPP_HAS_NO_LIBRARY_ALIGNED_ALLOCATION +# elif defined(__MVS__) +# define _LIBCPP_HAS_NO_LIBRARY_ALIGNED_ALLOCATION # endif -#endif // defined(__APPLE__) -#if !defined(_LIBCPP_HAS_NO_ALIGNED_ALLOCATION) && \ - (defined(_LIBCPP_HAS_NO_LIBRARY_ALIGNED_ALLOCATION) || \ - (!defined(__cpp_aligned_new) || __cpp_aligned_new < 201606)) -# define _LIBCPP_HAS_NO_ALIGNED_ALLOCATION -#endif +# if defined(_LIBCPP_HAS_NO_LIBRARY_ALIGNED_ALLOCATION) || (!defined(__cpp_aligned_new) || __cpp_aligned_new < 201606) +# define _LIBCPP_HAS_NO_ALIGNED_ALLOCATION +# endif -#if defined(__APPLE__) || defined(__FreeBSD__) -#define _LIBCPP_HAS_DEFAULTRUNELOCALE -#endif +// It is not yet possible to use aligned_alloc() on all Apple platforms since +// 10.15 was the first version to ship an implementation of aligned_alloc(). +# if defined(__APPLE__) +# if (defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && \ + __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 101500) +# define _LIBCPP_HAS_NO_C11_ALIGNED_ALLOC +# endif +# elif defined(__ANDROID__) && __ANDROID_API__ < 28 +// Android only provides aligned_alloc when targeting API 28 or higher. +# define _LIBCPP_HAS_NO_C11_ALIGNED_ALLOC +# endif -#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__sun__) -#define _LIBCPP_WCTYPE_IS_MASK -#endif +# if defined(__APPLE__) || defined(__FreeBSD__) +# define _LIBCPP_HAS_DEFAULTRUNELOCALE +# endif -#if _LIBCPP_STD_VER <= 17 || !defined(__cpp_char8_t) -#define _LIBCPP_NO_HAS_CHAR8_T -#endif +# if defined(__APPLE__) || defined(__FreeBSD__) +# define _LIBCPP_WCTYPE_IS_MASK +# endif + +# if _LIBCPP_STD_VER <= 17 || !defined(__cpp_char8_t) +# define _LIBCPP_HAS_NO_CHAR8_T +# endif // Deprecation macros. // // Deprecations warnings are always enabled, except when users explicitly opt-out // by defining _LIBCPP_DISABLE_DEPRECATION_WARNINGS. -#if !defined(_LIBCPP_DISABLE_DEPRECATION_WARNINGS) -# if __has_attribute(deprecated) -# define _LIBCPP_DEPRECATED __attribute__ ((__deprecated__)) -# elif _LIBCPP_STD_VER > 11 -# define _LIBCPP_DEPRECATED [[deprecated]] +# if !defined(_LIBCPP_DISABLE_DEPRECATION_WARNINGS) +# if __has_attribute(__deprecated__) +# define _LIBCPP_DEPRECATED __attribute__((__deprecated__)) +# define _LIBCPP_DEPRECATED_(m) __attribute__((__deprecated__(m))) +# elif _LIBCPP_STD_VER >= 14 +# define _LIBCPP_DEPRECATED [[deprecated]] +# define _LIBCPP_DEPRECATED_(m) [[deprecated(m)]] +# else +# define _LIBCPP_DEPRECATED +# define _LIBCPP_DEPRECATED_(m) +# endif # else # define _LIBCPP_DEPRECATED +# define _LIBCPP_DEPRECATED_(m) # endif + +# if !defined(_LIBCPP_CXX03_LANG) +# define _LIBCPP_DEPRECATED_IN_CXX11 _LIBCPP_DEPRECATED +# else +# define _LIBCPP_DEPRECATED_IN_CXX11 +# endif + +# if _LIBCPP_STD_VER >= 14 +# define _LIBCPP_DEPRECATED_IN_CXX14 _LIBCPP_DEPRECATED +# else +# define _LIBCPP_DEPRECATED_IN_CXX14 +# endif + +# if _LIBCPP_STD_VER >= 17 +# define _LIBCPP_DEPRECATED_IN_CXX17 _LIBCPP_DEPRECATED +# else +# define _LIBCPP_DEPRECATED_IN_CXX17 +# endif + +# if _LIBCPP_STD_VER >= 20 +# define _LIBCPP_DEPRECATED_IN_CXX20 _LIBCPP_DEPRECATED +# else +# define _LIBCPP_DEPRECATED_IN_CXX20 +# endif + +#if _LIBCPP_STD_VER >= 23 +# define _LIBCPP_DEPRECATED_IN_CXX23 _LIBCPP_DEPRECATED #else -# define _LIBCPP_DEPRECATED +# define _LIBCPP_DEPRECATED_IN_CXX23 #endif -#if !defined(_LIBCPP_CXX03_LANG) -# define _LIBCPP_DEPRECATED_IN_CXX11 _LIBCPP_DEPRECATED -#else -# define _LIBCPP_DEPRECATED_IN_CXX11 -#endif - -#if _LIBCPP_STD_VER >= 14 -# define _LIBCPP_DEPRECATED_IN_CXX14 _LIBCPP_DEPRECATED -#else -# define _LIBCPP_DEPRECATED_IN_CXX14 -#endif - -#if _LIBCPP_STD_VER >= 17 -# define _LIBCPP_DEPRECATED_IN_CXX17 _LIBCPP_DEPRECATED -#else -# define _LIBCPP_DEPRECATED_IN_CXX17 -#endif +# if !defined(_LIBCPP_HAS_NO_CHAR8_T) +# define _LIBCPP_DEPRECATED_WITH_CHAR8_T _LIBCPP_DEPRECATED +# else +# define _LIBCPP_DEPRECATED_WITH_CHAR8_T +# endif // Macros to enter and leave a state where deprecation warnings are suppressed. -#if !defined(_LIBCPP_SUPPRESS_DEPRECATED_PUSH) && \ - (defined(_LIBCPP_COMPILER_CLANG) || defined(_LIBCPP_COMPILER_GCC)) -# define _LIBCPP_SUPPRESS_DEPRECATED_PUSH \ - _Pragma("GCC diagnostic push") \ - _Pragma("GCC diagnostic ignored \"-Wdeprecated\"") -# define _LIBCPP_SUPPRESS_DEPRECATED_POP \ - _Pragma("GCC diagnostic pop") -#endif -#if !defined(_LIBCPP_SUPPRESS_DEPRECATED_PUSH) -# define _LIBCPP_SUPPRESS_DEPRECATED_PUSH -# define _LIBCPP_SUPPRESS_DEPRECATED_POP -#endif +# if defined(_LIBCPP_COMPILER_CLANG_BASED) || defined(_LIBCPP_COMPILER_GCC) +# define _LIBCPP_SUPPRESS_DEPRECATED_PUSH \ + _Pragma("GCC diagnostic push") _Pragma("GCC diagnostic ignored \"-Wdeprecated\"") \ + _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") +# define _LIBCPP_SUPPRESS_DEPRECATED_POP _Pragma("GCC diagnostic pop") +# else +# define _LIBCPP_SUPPRESS_DEPRECATED_PUSH +# define _LIBCPP_SUPPRESS_DEPRECATED_POP +# endif -#if _LIBCPP_STD_VER <= 11 -# define _LIBCPP_EXPLICIT_AFTER_CXX11 -#else -# define _LIBCPP_EXPLICIT_AFTER_CXX11 explicit -#endif +# if _LIBCPP_STD_VER <= 11 +# define _LIBCPP_EXPLICIT_SINCE_CXX14 +# else +# define _LIBCPP_EXPLICIT_SINCE_CXX14 explicit +# endif -#if _LIBCPP_STD_VER > 11 && !defined(_LIBCPP_HAS_NO_CXX14_CONSTEXPR) -# define _LIBCPP_CONSTEXPR_AFTER_CXX11 constexpr -#else -# define _LIBCPP_CONSTEXPR_AFTER_CXX11 -#endif +# if _LIBCPP_STD_VER >= 23 +# define _LIBCPP_EXPLICIT_SINCE_CXX23 explicit +# else +# define _LIBCPP_EXPLICIT_SINCE_CXX23 +# endif -#if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_CXX14_CONSTEXPR) -# define _LIBCPP_CONSTEXPR_AFTER_CXX14 constexpr -#else -# define _LIBCPP_CONSTEXPR_AFTER_CXX14 -#endif +# if _LIBCPP_STD_VER >= 14 +# define _LIBCPP_CONSTEXPR_SINCE_CXX14 constexpr +# else +# define _LIBCPP_CONSTEXPR_SINCE_CXX14 +# endif -#if _LIBCPP_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_CXX14_CONSTEXPR) -# define _LIBCPP_CONSTEXPR_AFTER_CXX17 constexpr -#else -# define _LIBCPP_CONSTEXPR_AFTER_CXX17 -#endif +# if _LIBCPP_STD_VER >= 17 +# define _LIBCPP_CONSTEXPR_SINCE_CXX17 constexpr +# else +# define _LIBCPP_CONSTEXPR_SINCE_CXX17 +# endif -// The _LIBCPP_NODISCARD_ATTRIBUTE should only be used to define other -// NODISCARD macros to the correct attribute. -#if __has_cpp_attribute(nodiscard) || defined(_LIBCPP_COMPILER_MSVC) -# define _LIBCPP_NODISCARD_ATTRIBUTE [[nodiscard]] -#elif defined(_LIBCPP_COMPILER_CLANG) && !defined(_LIBCPP_CXX03_LANG) -# define _LIBCPP_NODISCARD_ATTRIBUTE [[clang::warn_unused_result]] -#else +# if _LIBCPP_STD_VER >= 20 +# define _LIBCPP_CONSTEXPR_SINCE_CXX20 constexpr +# else +# define _LIBCPP_CONSTEXPR_SINCE_CXX20 +# endif + +# if _LIBCPP_STD_VER >= 23 +# define _LIBCPP_CONSTEXPR_SINCE_CXX23 constexpr +# else +# define _LIBCPP_CONSTEXPR_SINCE_CXX23 +# endif + +# if __has_cpp_attribute(nodiscard) +# define _LIBCPP_NODISCARD [[__nodiscard__]] +# else // We can't use GCC's [[gnu::warn_unused_result]] and // __attribute__((warn_unused_result)), because GCC does not silence them via // (void) cast. -# define _LIBCPP_NODISCARD_ATTRIBUTE -#endif +# define _LIBCPP_NODISCARD +# endif // _LIBCPP_NODISCARD_EXT may be used to apply [[nodiscard]] to entities not // specified as such as an extension. -#if defined(_LIBCPP_ENABLE_NODISCARD) && !defined(_LIBCPP_DISABLE_NODISCARD_EXT) -# define _LIBCPP_NODISCARD_EXT _LIBCPP_NODISCARD_ATTRIBUTE -#else -# define _LIBCPP_NODISCARD_EXT -#endif +# if !defined(_LIBCPP_DISABLE_NODISCARD_EXT) +# define _LIBCPP_NODISCARD_EXT _LIBCPP_NODISCARD +# else +# define _LIBCPP_NODISCARD_EXT +# endif -#if !defined(_LIBCPP_DISABLE_NODISCARD_AFTER_CXX17) && \ - (_LIBCPP_STD_VER > 17 || defined(_LIBCPP_ENABLE_NODISCARD)) -# define _LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_NODISCARD_ATTRIBUTE -#else -# define _LIBCPP_NODISCARD_AFTER_CXX17 -#endif +# if _LIBCPP_STD_VER >= 20 || !defined(_LIBCPP_DISABLE_NODISCARD_EXT) +# define _LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_NODISCARD +# else +# define _LIBCPP_NODISCARD_AFTER_CXX17 +# endif -#if _LIBCPP_STD_VER > 14 && defined(__cpp_inline_variables) && (__cpp_inline_variables >= 201606L) -# define _LIBCPP_INLINE_VAR inline -#else -# define _LIBCPP_INLINE_VAR -#endif +# if __has_attribute(__no_destroy__) +# define _LIBCPP_NO_DESTROY __attribute__((__no_destroy__)) +# else +# define _LIBCPP_NO_DESTROY +# endif -#ifdef _LIBCPP_HAS_NO_RVALUE_REFERENCES -# define _LIBCPP_EXPLICIT_MOVE(x) _VSTD::move(x) -#else -# define _LIBCPP_EXPLICIT_MOVE(x) (x) -#endif - -#ifndef _LIBCPP_CONSTEXPR_IF_NODEBUG -#if defined(_LIBCPP_DEBUG) || defined(_LIBCPP_HAS_NO_CXX14_CONSTEXPR) -#define _LIBCPP_CONSTEXPR_IF_NODEBUG -#else -#define _LIBCPP_CONSTEXPR_IF_NODEBUG constexpr -#endif -#endif - -#if __has_attribute(no_destroy) -# define _LIBCPP_NO_DESTROY __attribute__((__no_destroy__)) -#else -# define _LIBCPP_NO_DESTROY -#endif - -#ifndef _LIBCPP_HAS_NO_ASAN -extern "C" _LIBCPP_FUNC_VIS void __sanitizer_annotate_contiguous_container( - const void *, const void *, const void *, const void *); -#endif +# ifndef _LIBCPP_HAS_NO_ASAN + extern "C" _LIBCPP_FUNC_VIS void + __sanitizer_annotate_contiguous_container(const void*, const void*, const void*, const void*); +# endif // Try to find out if RTTI is disabled. -// g++ and cl.exe have RTTI on by default and define a macro when it is. -// g++ only defines the macro in 4.3.2 and onwards. -#if !defined(_LIBCPP_NO_RTTI) -# if defined(__GNUC__) && \ - ((__GNUC__ >= 5) || \ - (__GNUC__ == 4 && (__GNUC_MINOR__ >= 3 || __GNUC_PATCHLEVEL__ >= 2))) && \ - !defined(__GXX_RTTI) -# define _LIBCPP_NO_RTTI -# elif defined(_LIBCPP_COMPILER_MSVC) && !defined(_CPPRTTI) -# define _LIBCPP_NO_RTTI +# if !defined(__cpp_rtti) || __cpp_rtti < 199711L +# define _LIBCPP_HAS_NO_RTTI # endif -#endif -#ifndef _LIBCPP_WEAK -#define _LIBCPP_WEAK __attribute__((__weak__)) -#endif +# ifndef _LIBCPP_WEAK +# define _LIBCPP_WEAK __attribute__((__weak__)) +# endif // Thread API -#if !defined(_LIBCPP_HAS_NO_THREADS) && \ - !defined(_LIBCPP_HAS_THREAD_API_PTHREAD) && \ - !defined(_LIBCPP_HAS_THREAD_API_WIN32) && \ - !defined(_LIBCPP_HAS_THREAD_API_EXTERNAL) -# if defined(__FreeBSD__) || \ - defined(__Fuchsia__) || \ - defined(__wasi__) || \ - defined(__NetBSD__) || \ - defined(__linux__) || \ - defined(__GNU__) || \ - defined(__APPLE__) || \ - defined(__CloudABI__) || \ - defined(__sun__) || \ - defined(__COSMOPOLITAN__) || \ - (defined(__MINGW32__) && __has_include()) -# define _LIBCPP_HAS_THREAD_API_PTHREAD -# elif defined(_LIBCPP_WIN32API) -# define _LIBCPP_HAS_THREAD_API_WIN32 -# else -# error "No thread API" -# endif // _LIBCPP_HAS_THREAD_API -#endif // _LIBCPP_HAS_NO_THREADS +// clang-format off +# if !defined(_LIBCPP_HAS_NO_THREADS) && \ + !defined(_LIBCPP_HAS_THREAD_API_PTHREAD) && \ + !defined(_LIBCPP_HAS_THREAD_API_WIN32) && \ + !defined(_LIBCPP_HAS_THREAD_API_EXTERNAL) -#if defined(_LIBCPP_HAS_THREAD_API_PTHREAD) -#if defined(__ANDROID__) && __ANDROID_API__ >= 30 -#define _LIBCPP_HAS_COND_CLOCKWAIT -#elif defined(_LIBCPP_GLIBC_PREREQ) -#if _LIBCPP_GLIBC_PREREQ(2, 30) -#define _LIBCPP_HAS_COND_CLOCKWAIT -#endif -#endif -#endif +# if defined(__FreeBSD__) || \ + defined(__wasi__) || \ + defined(__NetBSD__) || \ + defined(__OpenBSD__) || \ + defined(__NuttX__) || \ + defined(__linux__) || \ + defined(__GNU__) || \ + defined(__APPLE__) || \ + defined(__MVS__) || \ + defined(_AIX) || \ + defined(__EMSCRIPTEN__) || \ + defined(__COSMOPOLITAN__) +// clang-format on +# define _LIBCPP_HAS_THREAD_API_PTHREAD +# elif defined(__Fuchsia__) +// TODO(44575): Switch to C11 thread API when possible. +# define _LIBCPP_HAS_THREAD_API_PTHREAD +# elif defined(_LIBCPP_WIN32API) +# define _LIBCPP_HAS_THREAD_API_WIN32 +# else +# error "No thread API" +# endif // _LIBCPP_HAS_THREAD_API +# endif // _LIBCPP_HAS_NO_THREADS -#if defined(_LIBCPP_HAS_NO_THREADS) && defined(_LIBCPP_HAS_THREAD_API_PTHREAD) -#error _LIBCPP_HAS_THREAD_API_PTHREAD may only be defined when \ +# if defined(_LIBCPP_HAS_THREAD_API_PTHREAD) +# if defined(__ANDROID__) && __ANDROID_API__ >= 30 +# define _LIBCPP_HAS_COND_CLOCKWAIT +# elif defined(_LIBCPP_GLIBC_PREREQ) +# if _LIBCPP_GLIBC_PREREQ(2, 30) +# define _LIBCPP_HAS_COND_CLOCKWAIT +# endif +# endif +# endif + +# if defined(_LIBCPP_HAS_NO_THREADS) && defined(_LIBCPP_HAS_THREAD_API_PTHREAD) +# error _LIBCPP_HAS_THREAD_API_PTHREAD may only be defined when \ _LIBCPP_HAS_NO_THREADS is not defined. -#endif +# endif -#if defined(_LIBCPP_HAS_NO_THREADS) && defined(_LIBCPP_HAS_THREAD_API_EXTERNAL) -#error _LIBCPP_HAS_THREAD_API_EXTERNAL may not be defined when \ +# if defined(_LIBCPP_HAS_NO_THREADS) && defined(_LIBCPP_HAS_THREAD_API_EXTERNAL) +# error _LIBCPP_HAS_THREAD_API_EXTERNAL may not be defined when \ _LIBCPP_HAS_NO_THREADS is defined. -#endif +# endif -#if defined(_LIBCPP_HAS_NO_MONOTONIC_CLOCK) && !defined(_LIBCPP_HAS_NO_THREADS) -#error _LIBCPP_HAS_NO_MONOTONIC_CLOCK may only be defined when \ +# if defined(_LIBCPP_HAS_NO_MONOTONIC_CLOCK) && !defined(_LIBCPP_HAS_NO_THREADS) +# error _LIBCPP_HAS_NO_MONOTONIC_CLOCK may only be defined when \ _LIBCPP_HAS_NO_THREADS is defined. -#endif +# endif -#if defined(__STDCPP_THREADS__) && defined(_LIBCPP_HAS_NO_THREADS) -#error _LIBCPP_HAS_NO_THREADS cannot be set when __STDCPP_THREADS__ is set. -#endif - -#if !defined(_LIBCPP_HAS_NO_THREADS) && !defined(__STDCPP_THREADS__) -#define __STDCPP_THREADS__ 1 -#endif +# if !defined(_LIBCPP_HAS_NO_THREADS) && !defined(__STDCPP_THREADS__) +# define __STDCPP_THREADS__ 1 +# endif // The glibc and Bionic implementation of pthreads implements // pthread_mutex_destroy as nop for regular mutexes. Additionally, Win32 @@ -1099,10 +983,13 @@ extern "C" _LIBCPP_FUNC_VIS void __sanitizer_annotate_contiguous_container( // // TODO(EricWF): Enable this optimization on Bionic after speaking to their // respective stakeholders. -#if (defined(_LIBCPP_HAS_THREAD_API_PTHREAD) && defined(__GLIBC__)) \ - || defined(_LIBCPP_HAS_THREAD_API_WIN32) -# define _LIBCPP_HAS_TRIVIAL_MUTEX_DESTRUCTION -#endif +// clang-format off +# if (defined(_LIBCPP_HAS_THREAD_API_PTHREAD) && defined(__GLIBC__)) || \ + (defined(_LIBCPP_HAS_THREAD_API_C11) && defined(__Fuchsia__)) || \ + defined(_LIBCPP_HAS_THREAD_API_WIN32) || defined(__COSMOPOLITAN__) +// clang-format on +# define _LIBCPP_HAS_TRIVIAL_MUTEX_DESTRUCTION +# endif // Destroying a condvar is a nop on Windows. // @@ -1112,328 +999,324 @@ extern "C" _LIBCPP_FUNC_VIS void __sanitizer_annotate_contiguous_container( // // TODO(EricWF): This is potentially true for some pthread implementations // as well. -#if defined(_LIBCPP_HAS_THREAD_API_WIN32) -# define _LIBCPP_HAS_TRIVIAL_CONDVAR_DESTRUCTION -#endif - -// Systems that use capability-based security (FreeBSD with Capsicum, -// Nuxi CloudABI) may only provide local filesystem access (using *at()). -// Functions like open(), rename(), unlink() and stat() should not be -// used, as they attempt to access the global filesystem namespace. -#ifdef __CloudABI__ -#define _LIBCPP_HAS_NO_GLOBAL_FILESYSTEM_NAMESPACE -#endif - -// CloudABI is intended for running networked services. Processes do not -// have standard input and output channels. -#ifdef __CloudABI__ -#define _LIBCPP_HAS_NO_STDIN -#define _LIBCPP_HAS_NO_STDOUT -#endif +# if (defined(_LIBCPP_HAS_THREAD_API_C11) && defined(__Fuchsia__)) || defined(_LIBCPP_HAS_THREAD_API_WIN32) +# define _LIBCPP_HAS_TRIVIAL_CONDVAR_DESTRUCTION +# endif // Some systems do not provide gets() in their C library, for security reasons. -#ifndef _LIBCPP_C_HAS_NO_GETS -# if defined(_LIBCPP_MSVCRT) || \ - (defined(__FreeBSD_version) && __FreeBSD_version >= 1300043) +# if defined(_LIBCPP_MSVCRT) || (defined(__FreeBSD_version) && __FreeBSD_version >= 1300043) || defined(__OpenBSD__) # define _LIBCPP_C_HAS_NO_GETS # endif -#endif -#if defined(__BIONIC__) || defined(__CloudABI__) || \ - defined(__Fuchsia__) || defined(__wasi__) || \ - defined(_LIBCPP_HAS_MUSL_LIBC) || defined(__COSMOPOLITAN__) -#define _LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE -#endif - -// Thread-unsafe functions such as strtok() and localtime() -// are not available. -#ifdef __CloudABI__ -#define _LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS -#endif - -#if __has_feature(cxx_atomic) || __has_extension(c_atomic) || __has_keyword(_Atomic) -# define _LIBCPP_HAS_C_ATOMIC_IMP -#elif defined(_LIBCPP_COMPILER_GCC) -# define _LIBCPP_HAS_GCC_ATOMIC_IMP -#endif - -#if (!defined(_LIBCPP_HAS_C_ATOMIC_IMP) && \ - !defined(_LIBCPP_HAS_GCC_ATOMIC_IMP) && \ - !defined(_LIBCPP_HAS_EXTERNAL_ATOMIC_IMP)) \ - || defined(_LIBCPP_HAS_NO_THREADS) -# define _LIBCPP_HAS_NO_ATOMIC_HEADER -# define _LIBCPP_ATOMIC_FLAG_TYPE bool -#else -# ifndef _LIBCPP_ATOMIC_FLAG_TYPE -# define _LIBCPP_ATOMIC_FLAG_TYPE bool +# if defined(__BIONIC__) || defined(__NuttX__) || defined(__Fuchsia__) || defined(__wasi__) || \ + defined(_LIBCPP_HAS_MUSL_LIBC) || defined(__OpenBSD__) || defined(__COSMOPOLITAN__) +# define _LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE # endif -# ifdef _LIBCPP_FREESTANDING -# define _LIBCPP_ATOMIC_ONLY_USE_BUILTINS + +# if __has_feature(cxx_atomic) || __has_extension(c_atomic) || __has_keyword(_Atomic) +# define _LIBCPP_HAS_C_ATOMIC_IMP +# elif defined(_LIBCPP_COMPILER_GCC) +# define _LIBCPP_HAS_GCC_ATOMIC_IMP # endif -#endif -#ifndef _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK -#define _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK -#endif +# if !defined(_LIBCPP_HAS_C_ATOMIC_IMP) && !defined(_LIBCPP_HAS_GCC_ATOMIC_IMP) && \ + !defined(_LIBCPP_HAS_EXTERNAL_ATOMIC_IMP) +# define _LIBCPP_HAS_NO_ATOMIC_HEADER +# else +# ifndef _LIBCPP_ATOMIC_FLAG_TYPE +# define _LIBCPP_ATOMIC_FLAG_TYPE bool +# endif +# ifdef _LIBCPP_FREESTANDING +# define _LIBCPP_ATOMIC_ONLY_USE_BUILTINS +# endif +# endif -#if defined(_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS) -# if defined(__clang__) && __has_attribute(acquire_capability) +# ifndef _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK +# define _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK +# endif + +# if defined(_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS) +# if defined(__clang__) && __has_attribute(acquire_capability) // Work around the attribute handling in clang. When both __declspec and // __attribute__ are present, the processing goes awry preventing the definition -// of the types. -# if !defined(_LIBCPP_OBJECT_FORMAT_COFF) -# define _LIBCPP_HAS_THREAD_SAFETY_ANNOTATIONS +// of the types. In MinGW mode, __declspec evaluates to __attribute__, and thus +// combining the two does work. +# if !defined(_MSC_VER) +# define _LIBCPP_HAS_THREAD_SAFETY_ANNOTATIONS +# endif # endif # endif -#endif -#if __has_attribute(require_constant_initialization) -# define _LIBCPP_SAFE_STATIC __attribute__((__require_constant_initialization__)) -#else -# define _LIBCPP_SAFE_STATIC -#endif - -#if !__has_builtin(__builtin_addressof) && _GNUC_VER < 700 -#define _LIBCPP_HAS_NO_BUILTIN_ADDRESSOF -#endif - -#if !__has_builtin(__builtin_is_constant_evaluated) && _GNUC_VER < 900 -#define _LIBCPP_HAS_NO_BUILTIN_IS_CONSTANT_EVALUATED -#endif - -#if !defined(_LIBCPP_HAS_NO_OFF_T_FUNCTIONS) -# if defined(_LIBCPP_MSVCRT) || defined(_NEWLIB_VERSION) -# define _LIBCPP_HAS_NO_OFF_T_FUNCTIONS +# ifdef _LIBCPP_HAS_THREAD_SAFETY_ANNOTATIONS +# define _LIBCPP_THREAD_SAFETY_ANNOTATION(x) __attribute__((x)) +# else +# define _LIBCPP_THREAD_SAFETY_ANNOTATION(x) # endif + +#ifdef _LIBCPP_CONSTINIT +#undef _LIBCPP_CONSTINIT // TODO(jart): wut #endif -#if __has_attribute(diagnose_if) && !defined(_LIBCPP_DISABLE_ADDITIONAL_DIAGNOSTICS) -# define _LIBCPP_DIAGNOSE_WARNING(...) \ - __attribute__((diagnose_if(__VA_ARGS__, "warning"))) -# define _LIBCPP_DIAGNOSE_ERROR(...) \ - __attribute__((diagnose_if(__VA_ARGS__, "error"))) -#else -# define _LIBCPP_DIAGNOSE_WARNING(...) -# define _LIBCPP_DIAGNOSE_ERROR(...) -#endif +# if _LIBCPP_STD_VER >= 20 +# define _LIBCPP_CONSTINIT constinit +# elif __has_attribute(__require_constant_initialization__) +# define _LIBCPP_CONSTINIT __attribute__((__require_constant_initialization__)) +# else +# define _LIBCPP_CONSTINIT +# endif + +# if __has_attribute(__diagnose_if__) && !defined(_LIBCPP_DISABLE_ADDITIONAL_DIAGNOSTICS) +# define _LIBCPP_DIAGNOSE_WARNING(...) __attribute__((__diagnose_if__(__VA_ARGS__, "warning"))) +# else +# define _LIBCPP_DIAGNOSE_WARNING(...) +# endif // Use a function like macro to imply that it must be followed by a semicolon -#if __cplusplus > 201402L && __has_cpp_attribute(fallthrough) -# define _LIBCPP_FALLTHROUGH() [[fallthrough]] -#elif __has_cpp_attribute(clang::fallthrough) -# define _LIBCPP_FALLTHROUGH() [[clang::fallthrough]] -#elif __has_attribute(fallthough) || _GNUC_VER >= 700 -# define _LIBCPP_FALLTHROUGH() __attribute__((__fallthrough__)) -#else -# define _LIBCPP_FALLTHROUGH() ((void)0) -#endif - -#if __has_attribute(__nodebug__) -#define _LIBCPP_NODEBUG __attribute__((__nodebug__)) -#else -#define _LIBCPP_NODEBUG -#endif - -#ifndef _LIBCPP_NODEBUG_TYPE -#if __has_attribute(__nodebug__) && \ - (defined(_LIBCPP_CLANG_VER) && _LIBCPP_CLANG_VER >= 900) -#define _LIBCPP_NODEBUG_TYPE __attribute__((nodebug)) -#else -#define _LIBCPP_NODEBUG_TYPE -#endif -#endif // !defined(_LIBCPP_NODEBUG_TYPE) - -#if defined(_LIBCPP_ABI_MICROSOFT) && \ - (defined(_LIBCPP_COMPILER_MSVC) || __has_declspec_attribute(empty_bases)) -# define _LIBCPP_DECLSPEC_EMPTY_BASES __declspec(empty_bases) -#else -# define _LIBCPP_DECLSPEC_EMPTY_BASES -#endif - -#if defined(_LIBCPP_ENABLE_CXX17_REMOVED_FEATURES) -#define _LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR -#define _LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS -#define _LIBCPP_ENABLE_CXX17_REMOVED_RANDOM_SHUFFLE -#define _LIBCPP_ENABLE_CXX17_REMOVED_BINDERS -#endif // _LIBCPP_ENABLE_CXX17_REMOVED_FEATURES - -#if !defined(__cpp_deduction_guides) || __cpp_deduction_guides < 201611 -#define _LIBCPP_HAS_NO_DEDUCTION_GUIDES -#endif - -#if !__has_keyword(__is_aggregate) && (_GNUC_VER_NEW < 7001) -#define _LIBCPP_HAS_NO_IS_AGGREGATE -#endif - -#if !defined(__cpp_coroutines) || __cpp_coroutines < 201703L -#define _LIBCPP_HAS_NO_COROUTINES -#endif - -// FIXME: Correct this macro when either (A) a feature test macro for the -// spaceship operator is provided, or (B) a compiler provides a complete -// implementation. -#define _LIBCPP_HAS_NO_SPACESHIP_OPERATOR - -// Decide whether to use availability macros. -#if !defined(_LIBCPP_BUILDING_LIBRARY) && \ - !defined(_LIBCPP_DISABLE_AVAILABILITY) && \ - __has_feature(attribute_availability_with_strict) && \ - __has_feature(attribute_availability_in_templates) && \ - __has_extension(pragma_clang_attribute_external_declaration) -# ifdef __APPLE__ -# define _LIBCPP_USE_AVAILABILITY_APPLE -# endif -#endif - -// Define availability macros. -#if defined(_LIBCPP_USE_AVAILABILITY_APPLE) -# define _LIBCPP_AVAILABILITY_SHARED_MUTEX \ - __attribute__((availability(macosx,strict,introduced=10.12))) \ - __attribute__((availability(ios,strict,introduced=10.0))) \ - __attribute__((availability(tvos,strict,introduced=10.0))) \ - __attribute__((availability(watchos,strict,introduced=3.0))) -# define _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS \ - __attribute__((availability(macosx,strict,introduced=10.14))) \ - __attribute__((availability(ios,strict,introduced=12.0))) \ - __attribute__((availability(tvos,strict,introduced=12.0))) \ - __attribute__((availability(watchos,strict,introduced=5.0))) -# define _LIBCPP_AVAILABILITY_BAD_VARIANT_ACCESS \ - _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS -# define _LIBCPP_AVAILABILITY_BAD_ANY_CAST \ - _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS -# define _LIBCPP_AVAILABILITY_UNCAUGHT_EXCEPTIONS \ - __attribute__((availability(macosx,strict,introduced=10.12))) \ - __attribute__((availability(ios,strict,introduced=10.0))) \ - __attribute__((availability(tvos,strict,introduced=10.0))) \ - __attribute__((availability(watchos,strict,introduced=3.0))) -# define _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE \ - __attribute__((availability(macosx,strict,introduced=10.12))) \ - __attribute__((availability(ios,strict,introduced=10.0))) \ - __attribute__((availability(tvos,strict,introduced=10.0))) \ - __attribute__((availability(watchos,strict,introduced=3.0))) -# define _LIBCPP_AVAILABILITY_FUTURE_ERROR \ - __attribute__((availability(ios,strict,introduced=6.0))) -# define _LIBCPP_AVAILABILITY_TYPEINFO_VTABLE \ - __attribute__((availability(macosx,strict,introduced=10.9))) \ - __attribute__((availability(ios,strict,introduced=7.0))) -# define _LIBCPP_AVAILABILITY_LOCALE_CATEGORY \ - __attribute__((availability(macosx,strict,introduced=10.9))) \ - __attribute__((availability(ios,strict,introduced=7.0))) -# define _LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR \ - __attribute__((availability(macosx,strict,introduced=10.9))) \ - __attribute__((availability(ios,strict,introduced=7.0))) -# define _LIBCPP_AVAILABILITY_FILESYSTEM \ - __attribute__((availability(macosx,strict,introduced=10.15))) \ - __attribute__((availability(ios,strict,introduced=13.0))) \ - __attribute__((availability(tvos,strict,introduced=13.0))) \ - __attribute__((availability(watchos,strict,introduced=6.0))) -# define _LIBCPP_AVAILABILITY_FILESYSTEM_PUSH \ - _Pragma("clang attribute push(__attribute__((availability(macosx,strict,introduced=10.15))), apply_to=any(function,record))") \ - _Pragma("clang attribute push(__attribute__((availability(ios,strict,introduced=13.0))), apply_to=any(function,record))") \ - _Pragma("clang attribute push(__attribute__((availability(tvos,strict,introduced=13.0))), apply_to=any(function,record))") \ - _Pragma("clang attribute push(__attribute__((availability(watchos,strict,introduced=6.0))), apply_to=any(function,record))") -# define _LIBCPP_AVAILABILITY_FILESYSTEM_POP \ - _Pragma("clang attribute pop") \ - _Pragma("clang attribute pop") \ - _Pragma("clang attribute pop") \ - _Pragma("clang attribute pop") -#else -# define _LIBCPP_AVAILABILITY_SHARED_MUTEX -# define _LIBCPP_AVAILABILITY_BAD_VARIANT_ACCESS -# define _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS -# define _LIBCPP_AVAILABILITY_BAD_ANY_CAST -# define _LIBCPP_AVAILABILITY_UNCAUGHT_EXCEPTIONS -# define _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE -# define _LIBCPP_AVAILABILITY_FUTURE_ERROR -# define _LIBCPP_AVAILABILITY_TYPEINFO_VTABLE -# define _LIBCPP_AVAILABILITY_LOCALE_CATEGORY -# define _LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR -# define _LIBCPP_AVAILABILITY_FILESYSTEM -# define _LIBCPP_AVAILABILITY_FILESYSTEM_PUSH -# define _LIBCPP_AVAILABILITY_FILESYSTEM_POP -#endif - -// Define availability that depends on _LIBCPP_NO_EXCEPTIONS. -#ifdef _LIBCPP_NO_EXCEPTIONS -# define _LIBCPP_AVAILABILITY_FUTURE -# define _LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST -# define _LIBCPP_AVAILABILITY_THROW_BAD_OPTIONAL_ACCESS -# define _LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS -#else -# define _LIBCPP_AVAILABILITY_FUTURE _LIBCPP_AVAILABILITY_FUTURE_ERROR -# define _LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST _LIBCPP_AVAILABILITY_BAD_ANY_CAST -# define _LIBCPP_AVAILABILITY_THROW_BAD_OPTIONAL_ACCESS _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS -# define _LIBCPP_AVAILABILITY_THROW_BAD_VARIANT_ACCESS _LIBCPP_AVAILABILITY_BAD_VARIANT_ACCESS -#endif - -// The stream API was dropped and re-added in the dylib shipped on macOS -// and iOS. We can only assume the dylib to provide these definitions for -// macosx >= 10.9 and ios >= 7.0. Otherwise, the definitions are available -// from the headers, but not from the dylib. Explicit instantiation -// declarations for streams exist conditionally to this; if we provide -// an explicit instantiation declaration and we try to deploy to a dylib -// that does not provide those symbols, we'll get a load-time error. -#if !defined(_LIBCPP_BUILDING_LIBRARY) && \ - ((defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && \ - __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1090) || \ - (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && \ - __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ < 70000)) -# define _LIBCPP_DO_NOT_ASSUME_STREAMS_EXPLICIT_INSTANTIATION_IN_DYLIB -#endif - -#if defined(_LIBCPP_COMPILER_IBM) -#define _LIBCPP_HAS_NO_PRAGMA_PUSH_POP_MACRO -#endif - -#if defined(_LIBCPP_HAS_NO_PRAGMA_PUSH_POP_MACRO) -# define _LIBCPP_PUSH_MACROS -# define _LIBCPP_POP_MACROS -#else - // Don't warn about macro conflicts when we can restore them at the - // end of the header. -# ifndef _LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS -# define _LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS -# endif -# if defined(_LIBCPP_COMPILER_MSVC) -# define _LIBCPP_PUSH_MACROS \ - __pragma(push_macro("min")) \ - __pragma(push_macro("max")) -# define _LIBCPP_POP_MACROS \ - __pragma(pop_macro("min")) \ - __pragma(pop_macro("max")) +# if __has_cpp_attribute(fallthrough) +# define _LIBCPP_FALLTHROUGH() [[fallthrough]] +# elif __has_attribute(__fallthrough__) +# define _LIBCPP_FALLTHROUGH() __attribute__((__fallthrough__)) # else -# define _LIBCPP_PUSH_MACROS \ - _Pragma("push_macro(\"min\")") \ - _Pragma("push_macro(\"max\")") -# define _LIBCPP_POP_MACROS \ - _Pragma("pop_macro(\"min\")") \ - _Pragma("pop_macro(\"max\")") +# define _LIBCPP_FALLTHROUGH() ((void)0) # endif -#endif // defined(_LIBCPP_HAS_NO_PRAGMA_PUSH_POP_MACRO) -#ifndef _LIBCPP_NO_AUTO_LINK -# if defined(_LIBCPP_ABI_MICROSOFT) && !defined(_LIBCPP_BUILDING_LIBRARY) -# if defined(_DLL) -# pragma comment(lib, "c++.lib") -# else -# pragma comment(lib, "libc++.lib") -# endif -# endif // defined(_LIBCPP_ABI_MICROSOFT) && !defined(_LIBCPP_BUILDING_LIBRARY) -#endif // _LIBCPP_NO_AUTO_LINK +# if __has_cpp_attribute(_Clang::__lifetimebound__) +# define _LIBCPP_LIFETIMEBOUND [[_Clang::__lifetimebound__]] +# else +# define _LIBCPP_LIFETIMEBOUND +# endif -#define _LIBCPP_UNUSED_VAR(x) ((void)(x)) +# if __has_attribute(__nodebug__) +# define _LIBCPP_NODEBUG __attribute__((__nodebug__)) +# else +# define _LIBCPP_NODEBUG +# endif + +# if __has_attribute(__standalone_debug__) +# define _LIBCPP_STANDALONE_DEBUG __attribute__((__standalone_debug__)) +# else +# define _LIBCPP_STANDALONE_DEBUG +# endif + +# if __has_attribute(__preferred_name__) +# define _LIBCPP_PREFERRED_NAME(x) __attribute__((__preferred_name__(x))) +# else +# define _LIBCPP_PREFERRED_NAME(x) +# endif + +// We often repeat things just for handling wide characters in the library. +// When wide characters are disabled, it can be useful to have a quick way of +// disabling it without having to resort to #if-#endif, which has a larger +// impact on readability. +# if defined(_LIBCPP_HAS_NO_WIDE_CHARACTERS) +# define _LIBCPP_IF_WIDE_CHARACTERS(...) +# else +# define _LIBCPP_IF_WIDE_CHARACTERS(...) __VA_ARGS__ +# endif + +# if defined(_LIBCPP_ABI_MICROSOFT) && __has_declspec_attribute(empty_bases) +# define _LIBCPP_DECLSPEC_EMPTY_BASES __declspec(empty_bases) +# else +# define _LIBCPP_DECLSPEC_EMPTY_BASES +# endif + +# if defined(_LIBCPP_ENABLE_CXX17_REMOVED_FEATURES) +# define _LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR +# define _LIBCPP_ENABLE_CXX17_REMOVED_BINDERS +# define _LIBCPP_ENABLE_CXX17_REMOVED_RANDOM_SHUFFLE +# define _LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS +# define _LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION +# endif // _LIBCPP_ENABLE_CXX17_REMOVED_FEATURES + +# if defined(_LIBCPP_ENABLE_CXX20_REMOVED_FEATURES) +# define _LIBCPP_ENABLE_CXX20_REMOVED_ALLOCATOR_MEMBERS +# define _LIBCPP_ENABLE_CXX20_REMOVED_ALLOCATOR_VOID_SPECIALIZATION +# define _LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS +# define _LIBCPP_ENABLE_CXX20_REMOVED_NEGATORS +# define _LIBCPP_ENABLE_CXX20_REMOVED_RAW_STORAGE_ITERATOR +# define _LIBCPP_ENABLE_CXX20_REMOVED_TYPE_TRAITS +# endif // _LIBCPP_ENABLE_CXX20_REMOVED_FEATURES + +# define _LIBCPP_PUSH_MACROS _Pragma("push_macro(\"min\")") _Pragma("push_macro(\"max\")") +# define _LIBCPP_POP_MACROS _Pragma("pop_macro(\"min\")") _Pragma("pop_macro(\"max\")") + +# ifndef _LIBCPP_NO_AUTO_LINK +# if defined(_LIBCPP_ABI_MICROSOFT) && !defined(_LIBCPP_BUILDING_LIBRARY) +# if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) +# pragma comment(lib, "c++.lib") +# else +# pragma comment(lib, "libc++.lib") +# endif +# endif // defined(_LIBCPP_ABI_MICROSOFT) && !defined(_LIBCPP_BUILDING_LIBRARY) +# endif // _LIBCPP_NO_AUTO_LINK // Configures the fopen close-on-exec mode character, if any. This string will // be appended to any mode string used by fstream for fopen/fdopen. // // Not all platforms support this, but it helps avoid fd-leaks on platforms that // do. -#if defined(__BIONIC__) || defined(__COSMOPOLITAN__) -# define _LIBCPP_FOPEN_CLOEXEC_MODE "e" -#else -# define _LIBCPP_FOPEN_CLOEXEC_MODE -#endif +# if defined(__BIONIC__) || defined(__COSMOPOLITAN__) +# define _LIBCPP_FOPEN_CLOEXEC_MODE "e" +# else +# define _LIBCPP_FOPEN_CLOEXEC_MODE +# endif + +// Support for _FILE_OFFSET_BITS=64 landed gradually in Android, so the full set +// of functions used in cstdio may not be available for low API levels when +// using 64-bit file offsets on LP32. +# if defined(__BIONIC__) && defined(__USE_FILE_OFFSET64) && __ANDROID_API__ < 24 +# define _LIBCPP_HAS_NO_FGETPOS_FSETPOS +# endif + +# if __has_attribute(__init_priority__) +# define _LIBCPP_INIT_PRIORITY_MAX __attribute__((__init_priority__(100))) +# else +# define _LIBCPP_INIT_PRIORITY_MAX +# endif + +# if __has_attribute(__format__) +// The attribute uses 1-based indices for ordinary and static member functions. +// The attribute uses 2-based indices for non-static member functions. +# define _LIBCPP_ATTRIBUTE_FORMAT(archetype, format_string_index, first_format_arg_index) \ + __attribute__((__format__(archetype, format_string_index, first_format_arg_index))) +# else +# define _LIBCPP_ATTRIBUTE_FORMAT(archetype, format_string_index, first_format_arg_index) /* nothing */ +# endif + +# if __has_cpp_attribute(msvc::no_unique_address) +// MSVC implements [[no_unique_address]] as a silent no-op currently. +// (If/when MSVC breaks its C++ ABI, it will be changed to work as intended.) +// However, MSVC implements [[msvc::no_unique_address]] which does what +// [[no_unique_address]] is supposed to do, in general. + +// Clang-cl does not yet (14.0) implement either [[no_unique_address]] or +// [[msvc::no_unique_address]] though. If/when it does implement +// [[msvc::no_unique_address]], this should be preferred though. +# define _LIBCPP_NO_UNIQUE_ADDRESS [[msvc::no_unique_address]] +# elif __has_cpp_attribute(no_unique_address) +# define _LIBCPP_NO_UNIQUE_ADDRESS [[__no_unique_address__]] +# else +# define _LIBCPP_NO_UNIQUE_ADDRESS /* nothing */ +// Note that this can be replaced by #error as soon as clang-cl +// implements msvc::no_unique_address, since there should be no C++20 +// compiler that doesn't support one of the two attributes at that point. +// We generally don't want to use this macro outside of C++20-only code, +// because using it conditionally in one language version only would make +// the ABI inconsistent. +# endif + +# ifdef _LIBCPP_COMPILER_CLANG_BASED +# define _LIBCPP_DIAGNOSTIC_PUSH _Pragma("clang diagnostic push") +# define _LIBCPP_DIAGNOSTIC_POP _Pragma("clang diagnostic pop") +# define _LIBCPP_CLANG_DIAGNOSTIC_IGNORED(str) _Pragma(_LIBCPP_TOSTRING(clang diagnostic ignored str)) +# define _LIBCPP_GCC_DIAGNOSTIC_IGNORED(str) +# elif defined(_LIBCPP_COMPILER_GCC) +# define _LIBCPP_DIAGNOSTIC_PUSH _Pragma("GCC diagnostic push") +# define _LIBCPP_DIAGNOSTIC_POP _Pragma("GCC diagnostic pop") +# define _LIBCPP_CLANG_DIAGNOSTIC_IGNORED(str) +# define _LIBCPP_GCC_DIAGNOSTIC_IGNORED(str) _Pragma(_LIBCPP_TOSTRING(GCC diagnostic ignored str)) +# else +# define _LIBCPP_DIAGNOSTIC_PUSH +# define _LIBCPP_DIAGNOSTIC_POP +# define _LIBCPP_CLANG_DIAGNOSTIC_IGNORED(str) +# define _LIBCPP_GCC_DIAGNOSTIC_IGNORED(str) +# endif + +# if defined(_AIX) && !defined(_LIBCPP_COMPILER_GCC) +# define _LIBCPP_PACKED_BYTE_FOR_AIX _Pragma("pack(1)") +# define _LIBCPP_PACKED_BYTE_FOR_AIX_END _Pragma("pack(pop)") +# else +# define _LIBCPP_PACKED_BYTE_FOR_AIX /* empty */ +# define _LIBCPP_PACKED_BYTE_FOR_AIX_END /* empty */ +# endif + +# if __has_attribute(__packed__) +# define _LIBCPP_PACKED __attribute__((__packed__)) +# else +# define _LIBCPP_PACKED +# endif + +// c8rtomb() and mbrtoc8() were added in C++20 and C23. Support for these +// functions is gradually being added to existing C libraries. The conditions +// below check for known C library versions and conditions under which these +// functions are declared by the C library. +# define _LIBCPP_HAS_NO_C8RTOMB_MBRTOC8 +// GNU libc 2.36 and newer declare c8rtomb() and mbrtoc8() in C++ modes if +// __cpp_char8_t is defined or if C2X extensions are enabled. Determining +// the latter depends on internal GNU libc details that are not appropriate +// to depend on here, so any declarations present when __cpp_char8_t is not +// defined are ignored. +# if defined(_LIBCPP_GLIBC_PREREQ) +# if _LIBCPP_GLIBC_PREREQ(2, 36) && defined(__cpp_char8_t) +# undef _LIBCPP_HAS_NO_C8RTOMB_MBRTOC8 +# endif +# endif + +// There are a handful of public standard library types that are intended to +// support CTAD but don't need any explicit deduction guides to do so. This +// macro is used to mark them as such, which suppresses the +// '-Wctad-maybe-unsupported' compiler warning when CTAD is used in user code +// with these classes. +# if _LIBCPP_STD_VER >= 17 +# ifdef _LIBCPP_COMPILER_CLANG_BASED +# define _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(_ClassName) \ + template \ + [[maybe_unused]] _ClassName(typename _Tag::__allow_ctad...)->_ClassName<_Tag...> +# else +# define _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(ClassName) \ + template \ + ClassName(typename _Tag::__allow_ctad...)->ClassName<_Tag...> +# endif +# else +# define _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(_ClassName) static_assert(true, "") +# endif + +// TODO(varconst): currently, there are bugs in Clang's intrinsics when handling Objective-C++ `id`, so don't use +// compiler intrinsics in the Objective-C++ mode. +# ifdef __OBJC__ +# define _LIBCPP_WORKAROUND_OBJCXX_COMPILER_INTRINSICS +# endif + +// TODO: Make this a proper configuration option +#define _PSTL_PAR_BACKEND_SERIAL + +#define _PSTL_PRAGMA(x) _Pragma(# x) + +// Enable SIMD for compilers that support OpenMP 4.0 +#if (defined(_OPENMP) && _OPENMP >= 201307) + +# define _PSTL_UDR_PRESENT +# define _PSTL_PRAGMA_SIMD _PSTL_PRAGMA(omp simd) +# define _PSTL_PRAGMA_DECLARE_SIMD _PSTL_PRAGMA(omp declare simd) +# define _PSTL_PRAGMA_SIMD_REDUCTION(PRM) _PSTL_PRAGMA(omp simd reduction(PRM)) +# define _PSTL_PRAGMA_SIMD_SCAN(PRM) _PSTL_PRAGMA(omp simd reduction(inscan, PRM)) +# define _PSTL_PRAGMA_SIMD_INCLUSIVE_SCAN(PRM) _PSTL_PRAGMA(omp scan inclusive(PRM)) +# define _PSTL_PRAGMA_SIMD_EXCLUSIVE_SCAN(PRM) _PSTL_PRAGMA(omp scan exclusive(PRM)) + +// Declaration of reduction functor, where +// NAME - the name of the functor +// OP - type of the callable object with the reduction operation +// omp_in - refers to the local partial result +// omp_out - refers to the final value of the combiner operator +// omp_priv - refers to the private copy of the initial value +// omp_orig - refers to the original variable to be reduced +# define _PSTL_PRAGMA_DECLARE_REDUCTION(NAME, OP) \ + _PSTL_PRAGMA(omp declare reduction(NAME:OP : omp_out(omp_in)) initializer(omp_priv = omp_orig)) + +#else // (defined(_OPENMP) && _OPENMP >= 201307) + +# define _PSTL_PRAGMA_SIMD +# define _PSTL_PRAGMA_DECLARE_SIMD +# define _PSTL_PRAGMA_SIMD_REDUCTION(PRM) +# define _PSTL_PRAGMA_SIMD_SCAN(PRM) +# define _PSTL_PRAGMA_SIMD_INCLUSIVE_SCAN(PRM) +# define _PSTL_PRAGMA_SIMD_EXCLUSIVE_SCAN(PRM) +# define _PSTL_PRAGMA_DECLARE_REDUCTION(NAME, OP) + +#endif // (defined(_OPENMP) && _OPENMP >= 201307) + +#define _PSTL_USE_NONTEMPORAL_STORES_IF_ALLOWED #endif // __cplusplus -#endif // _LIBCPP_CONFIG +#endif // _LIBCPP___CONFIG diff --git a/third_party/libcxx/__config_site b/third_party/libcxx/__config_site new file mode 100644 index 000000000..c2d92b0e4 --- /dev/null +++ b/third_party/libcxx/__config_site @@ -0,0 +1,51 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___CONFIG_SITE +#define _LIBCPP___CONFIG_SITE + +// We get a million `error: ‘always_inline’ function might not be +// inlinable` because we're using LLVM LIBCXX with GCC, which has +// no exclude_from_explicit_instantiation attribute, which libcxx +// really wants to have, and uses an always_inline hack for this. +#pragma GCC diagnostic ignored "-Wattributes" + +#define _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER +#define _LIBCPP_DISABLE_DEPRECATION_WARNINGS + +#define _LIBCPP_NO_ABI_TAG +#define _LIBCPP_ABI_VERSION 2 +#define _LIBCPP_ABI_NAMESPACE __2 +#define _LIBCPP_DISABLE_AVAILABILITY +#define _LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS +#define _LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS +#define _LIBCPP_NO_VCRUNTIME +#define _LIBCPP_TYPEINFO_COMPARISON_IMPLEMENTATION 1 + +#ifdef MODE_DBG +#define _LIBCPP_ENABLE_DEBUG_MODE +#define _LIBCPP_ENABLE_ASSERTIONS_DEFAULT 1 +#else +#define _LIBCPP_ENABLE_ASSERTIONS_DEFAULT 0 +#endif + +// PSTL backends +#define _LIBCPP_PSTL_CPU_BACKEND_SERIAL +#define _LIBCPP_PSTL_CPU_BACKEND_THREAD + +// __USE_MINGW_ANSI_STDIO gets redefined on MinGW +#ifdef __clang__ +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wmacro-redefined" +#endif + +#ifdef __clang__ +# pragma clang diagnostic pop +#endif + +#endif // _LIBCPP___CONFIG_SITE diff --git a/third_party/libcxx/__coroutine/coroutine_handle.h b/third_party/libcxx/__coroutine/coroutine_handle.h new file mode 100644 index 000000000..2135111e4 --- /dev/null +++ b/third_party/libcxx/__coroutine/coroutine_handle.h @@ -0,0 +1,201 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___COROUTINE_COROUTINE_HANDLE_H +#define _LIBCPP___COROUTINE_COROUTINE_HANDLE_H + +#include <__assert> +#include <__config> +#include <__functional/hash.h> +#include <__memory/addressof.h> +#include <__type_traits/remove_cv.h> +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +// [coroutine.handle] +template +struct _LIBCPP_TEMPLATE_VIS coroutine_handle; + +template <> +struct _LIBCPP_TEMPLATE_VIS coroutine_handle { +public: + // [coroutine.handle.con], construct/reset + constexpr coroutine_handle() noexcept = default; + + _LIBCPP_HIDE_FROM_ABI + constexpr coroutine_handle(nullptr_t) noexcept {} + + _LIBCPP_HIDE_FROM_ABI + coroutine_handle& operator=(nullptr_t) noexcept { + __handle_ = nullptr; + return *this; + } + + // [coroutine.handle.export.import], export/import + _LIBCPP_HIDE_FROM_ABI + constexpr void* address() const noexcept { return __handle_; } + + _LIBCPP_HIDE_FROM_ABI + static constexpr coroutine_handle from_address(void* __addr) noexcept { + coroutine_handle __tmp; + __tmp.__handle_ = __addr; + return __tmp; + } + + // [coroutine.handle.observers], observers + _LIBCPP_HIDE_FROM_ABI + constexpr explicit operator bool() const noexcept { + return __handle_ != nullptr; + } + + _LIBCPP_HIDE_FROM_ABI + bool done() const { + _LIBCPP_ASSERT(__is_suspended(), "done() can be called only on suspended coroutines"); + return __builtin_coro_done(__handle_); + } + + // [coroutine.handle.resumption], resumption + _LIBCPP_HIDE_FROM_ABI + void operator()() const { resume(); } + + _LIBCPP_HIDE_FROM_ABI + void resume() const { + _LIBCPP_ASSERT(__is_suspended(), "resume() can be called only on suspended coroutines"); + _LIBCPP_ASSERT(!done(), "resume() has undefined behavior when the coroutine is done"); + __builtin_coro_resume(__handle_); + } + + _LIBCPP_HIDE_FROM_ABI + void destroy() const { + _LIBCPP_ASSERT(__is_suspended(), "destroy() can be called only on suspended coroutines"); + __builtin_coro_destroy(__handle_); + } + +private: + _LIBCPP_HIDE_FROM_ABI bool __is_suspended() const { + // FIXME actually implement a check for if the coro is suspended. + return __handle_ != nullptr; + } + + void* __handle_ = nullptr; +}; + +// [coroutine.handle.compare] +inline _LIBCPP_HIDE_FROM_ABI +constexpr bool operator==(coroutine_handle<> __x, coroutine_handle<> __y) noexcept { + return __x.address() == __y.address(); +} +inline _LIBCPP_HIDE_FROM_ABI +constexpr strong_ordering operator<=>(coroutine_handle<> __x, coroutine_handle<> __y) noexcept { + return compare_three_way()(__x.address(), __y.address()); +} + +template +struct _LIBCPP_TEMPLATE_VIS coroutine_handle { +public: + // [coroutine.handle.con], construct/reset + constexpr coroutine_handle() noexcept = default; + + _LIBCPP_HIDE_FROM_ABI + constexpr coroutine_handle(nullptr_t) noexcept {} + + _LIBCPP_HIDE_FROM_ABI + static coroutine_handle from_promise(_Promise& __promise) { + using _RawPromise = __remove_cv_t<_Promise>; + coroutine_handle __tmp; + __tmp.__handle_ = + __builtin_coro_promise(_VSTD::addressof(const_cast<_RawPromise&>(__promise)), alignof(_Promise), true); + return __tmp; + } + + _LIBCPP_HIDE_FROM_ABI + coroutine_handle& operator=(nullptr_t) noexcept { + __handle_ = nullptr; + return *this; + } + + // [coroutine.handle.export.import], export/import + _LIBCPP_HIDE_FROM_ABI + constexpr void* address() const noexcept { return __handle_; } + + _LIBCPP_HIDE_FROM_ABI + static constexpr coroutine_handle from_address(void* __addr) noexcept { + coroutine_handle __tmp; + __tmp.__handle_ = __addr; + return __tmp; + } + + // [coroutine.handle.conv], conversion + _LIBCPP_HIDE_FROM_ABI + constexpr operator coroutine_handle<>() const noexcept { + return coroutine_handle<>::from_address(address()); + } + + // [coroutine.handle.observers], observers + _LIBCPP_HIDE_FROM_ABI + constexpr explicit operator bool() const noexcept { + return __handle_ != nullptr; + } + + _LIBCPP_HIDE_FROM_ABI + bool done() const { + _LIBCPP_ASSERT(__is_suspended(), "done() can be called only on suspended coroutines"); + return __builtin_coro_done(__handle_); + } + + // [coroutine.handle.resumption], resumption + _LIBCPP_HIDE_FROM_ABI + void operator()() const { resume(); } + + _LIBCPP_HIDE_FROM_ABI + void resume() const { + _LIBCPP_ASSERT(__is_suspended(), "resume() can be called only on suspended coroutines"); + _LIBCPP_ASSERT(!done(), "resume() has undefined behavior when the coroutine is done"); + __builtin_coro_resume(__handle_); + } + + _LIBCPP_HIDE_FROM_ABI + void destroy() const { + _LIBCPP_ASSERT(__is_suspended(), "destroy() can be called only on suspended coroutines"); + __builtin_coro_destroy(__handle_); + } + + // [coroutine.handle.promise], promise access + _LIBCPP_HIDE_FROM_ABI + _Promise& promise() const { + return *static_cast<_Promise*>(__builtin_coro_promise(this->__handle_, alignof(_Promise), false)); + } + +private: + _LIBCPP_HIDE_FROM_ABI bool __is_suspended() const { + // FIXME actually implement a check for if the coro is suspended. + return __handle_ != nullptr; + } + void* __handle_ = nullptr; +}; + +// [coroutine.handle.hash] +template +struct hash> { + _LIBCPP_HIDE_FROM_ABI + size_t operator()(const coroutine_handle<_Tp>& __v) const noexcept { return hash()(__v.address()); } +}; + +_LIBCPP_END_NAMESPACE_STD + +#endif // __LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___COROUTINE_COROUTINE_HANDLE_H diff --git a/third_party/libcxx/__coroutine/coroutine_traits.h b/third_party/libcxx/__coroutine/coroutine_traits.h new file mode 100644 index 000000000..7122cc8ea --- /dev/null +++ b/third_party/libcxx/__coroutine/coroutine_traits.h @@ -0,0 +1,53 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___COROUTINE_COROUTINE_TRAITS_H +#define _LIBCPP___COROUTINE_COROUTINE_TRAITS_H + +#include <__config> +#include <__type_traits/void_t.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +// [coroutine.traits] +// [coroutine.traits.primary] +// The header defined the primary template coroutine_traits such that +// if ArgTypes is a parameter pack of types and if the qualified-id R::promise_type +// is valid and denotes a type ([temp.deduct]), then coroutine_traits +// has the following publicly accessible memebr: +// +// using promise_type = typename R::promise_type; +// +// Otherwise, coroutine_traits has no members. +template +struct __coroutine_traits_sfinae {}; + +template +struct __coroutine_traits_sfinae< + _Tp, __void_t > +{ + using promise_type = typename _Tp::promise_type; +}; + +template +struct coroutine_traits + : public __coroutine_traits_sfinae<_Ret> +{ +}; + +_LIBCPP_END_NAMESPACE_STD + +#endif // __LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___COROUTINE_COROUTINE_TRAITS_H diff --git a/third_party/libcxx/__coroutine/noop_coroutine_handle.h b/third_party/libcxx/__coroutine/noop_coroutine_handle.h new file mode 100644 index 000000000..9b7802d1e --- /dev/null +++ b/third_party/libcxx/__coroutine/noop_coroutine_handle.h @@ -0,0 +1,112 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___COROUTINE_NOOP_COROUTINE_HANDLE_H +#define _LIBCPP___COROUTINE_NOOP_COROUTINE_HANDLE_H + +#include <__config> +#include <__coroutine/coroutine_handle.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if __has_builtin(__builtin_coro_noop) || defined(_LIBCPP_COMPILER_GCC) + +// [coroutine.noop] +// [coroutine.promise.noop] +struct noop_coroutine_promise {}; + +// [coroutine.handle.noop] +template <> +struct _LIBCPP_TEMPLATE_VIS coroutine_handle { +public: + // [coroutine.handle.noop.conv], conversion + _LIBCPP_HIDE_FROM_ABI + constexpr operator coroutine_handle<>() const noexcept { + return coroutine_handle<>::from_address(address()); + } + + // [coroutine.handle.noop.observers], observers + _LIBCPP_HIDE_FROM_ABI + constexpr explicit operator bool() const noexcept { return true; } + _LIBCPP_HIDE_FROM_ABI + constexpr bool done() const noexcept { return false; } + + // [coroutine.handle.noop.resumption], resumption + _LIBCPP_HIDE_FROM_ABI + constexpr void operator()() const noexcept {} + _LIBCPP_HIDE_FROM_ABI + constexpr void resume() const noexcept {} + _LIBCPP_HIDE_FROM_ABI + constexpr void destroy() const noexcept {} + + // [coroutine.handle.noop.promise], promise access + _LIBCPP_HIDE_FROM_ABI + noop_coroutine_promise& promise() const noexcept { + return *static_cast( + __builtin_coro_promise(this->__handle_, alignof(noop_coroutine_promise), false)); + } + + // [coroutine.handle.noop.address], address + _LIBCPP_HIDE_FROM_ABI + constexpr void* address() const noexcept { return __handle_; } + +private: + _LIBCPP_HIDE_FROM_ABI + friend coroutine_handle noop_coroutine() noexcept; + +#if __has_builtin(__builtin_coro_noop) + _LIBCPP_HIDE_FROM_ABI coroutine_handle() noexcept { + this->__handle_ = __builtin_coro_noop(); + } + + void* __handle_ = nullptr; + +#elif defined(_LIBCPP_COMPILER_GCC) + // GCC doesn't implement __builtin_coro_noop(). + // Construct the coroutine frame manually instead. + struct __noop_coroutine_frame_ty_ { + static void __dummy_resume_destroy_func() { } + + void (*__resume_)() = __dummy_resume_destroy_func; + void (*__destroy_)() = __dummy_resume_destroy_func; + struct noop_coroutine_promise __promise_; + }; + + static __noop_coroutine_frame_ty_ __noop_coroutine_frame_; + + void* __handle_ = &__noop_coroutine_frame_; + + _LIBCPP_HIDE_FROM_ABI coroutine_handle() noexcept = default; + +#endif // __has_builtin(__builtin_coro_noop) +}; + +using noop_coroutine_handle = coroutine_handle; + +#if defined(_LIBCPP_COMPILER_GCC) +inline noop_coroutine_handle::__noop_coroutine_frame_ty_ + noop_coroutine_handle::__noop_coroutine_frame_{}; +#endif + +// [coroutine.noop.coroutine] +inline _LIBCPP_HIDE_FROM_ABI +noop_coroutine_handle noop_coroutine() noexcept { return noop_coroutine_handle(); } + +#endif // __has_builtin(__builtin_coro_noop) || defined(_LIBCPP_COMPILER_GCC) + +_LIBCPP_END_NAMESPACE_STD + +#endif // __LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___COROUTINE_NOOP_COROUTINE_HANDLE_H diff --git a/third_party/libcxx/__coroutine/trivial_awaitables.h b/third_party/libcxx/__coroutine/trivial_awaitables.h new file mode 100644 index 000000000..0e4b08e37 --- /dev/null +++ b/third_party/libcxx/__coroutine/trivial_awaitables.h @@ -0,0 +1,46 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef __LIBCPP___COROUTINE_TRIVIAL_AWAITABLES_H +#define __LIBCPP___COROUTINE_TRIVIAL_AWAITABLES_H + +#include <__config> +#include <__coroutine/coroutine_handle.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +// [coroutine.trivial.awaitables] +struct suspend_never { + _LIBCPP_HIDE_FROM_ABI + constexpr bool await_ready() const noexcept { return true; } + _LIBCPP_HIDE_FROM_ABI + constexpr void await_suspend(coroutine_handle<>) const noexcept {} + _LIBCPP_HIDE_FROM_ABI + constexpr void await_resume() const noexcept {} +}; + +struct suspend_always { + _LIBCPP_HIDE_FROM_ABI + constexpr bool await_ready() const noexcept { return false; } + _LIBCPP_HIDE_FROM_ABI + constexpr void await_suspend(coroutine_handle<>) const noexcept {} + _LIBCPP_HIDE_FROM_ABI + constexpr void await_resume() const noexcept {} +}; + +_LIBCPP_END_NAMESPACE_STD + +#endif // __LIBCPP_STD_VER >= 20 + +#endif // __LIBCPP___COROUTINE_TRIVIAL_AWAITABLES_H diff --git a/third_party/libcxx/__debug b/third_party/libcxx/__debug index 72bd9c8f5..ccbfae723 100644 --- a/third_party/libcxx/__debug +++ b/third_party/libcxx/__debug @@ -1,5 +1,5 @@ // -*- C++ -*- -//===--------------------------- __debug ----------------------------------===// +//===----------------------------------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. @@ -7,84 +7,36 @@ // //===----------------------------------------------------------------------===// -#ifndef _LIBCPP_DEBUG_H -#define _LIBCPP_DEBUG_H +#ifndef _LIBCPP___DEBUG +#define _LIBCPP___DEBUG -#include "third_party/libcxx/__config" -#include "third_party/libcxx/iosfwd" +#include <__assert> +#include <__config> +#include <__type_traits/is_constant_evaluated.h> +#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header +# pragma GCC system_header #endif -#if defined(_LIBCPP_HAS_NO_NULLPTR) -#include "third_party/libcxx/cstddef" +#if defined(_LIBCPP_ENABLE_DEBUG_MODE) && !defined(_LIBCPP_CXX03_LANG) && !defined(_LIBCPP_DEBUG_RANDOMIZE_UNSPECIFIED_STABILITY) +# define _LIBCPP_DEBUG_RANDOMIZE_UNSPECIFIED_STABILITY #endif -#if _LIBCPP_DEBUG_LEVEL >= 1 || defined(_LIBCPP_BUILDING_LIBRARY) -#include "third_party/libcxx/cstdlib" -#include "third_party/libcxx/cstdio" -#include "third_party/libcxx/cstddef" +#if defined(_LIBCPP_ENABLE_DEBUG_MODE) && !defined(_LIBCPP_DEBUG_ITERATOR_BOUNDS_CHECKING) +# define _LIBCPP_DEBUG_ITERATOR_BOUNDS_CHECKING #endif -#if _LIBCPP_DEBUG_LEVEL >= 1 && !defined(_LIBCPP_ASSERT) -# define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : \ - _VSTD::__libcpp_debug_function(_VSTD::__libcpp_debug_info(__FILE__, __LINE__, #x, m))) -#endif - -#if _LIBCPP_DEBUG_LEVEL >= 2 -#ifndef _LIBCPP_DEBUG_ASSERT -#define _LIBCPP_DEBUG_ASSERT(x, m) _LIBCPP_ASSERT(x, m) -#endif -#define _LIBCPP_DEBUG_MODE(...) __VA_ARGS__ -#endif - -#ifndef _LIBCPP_ASSERT -# define _LIBCPP_ASSERT(x, m) ((void)0) -#endif -#ifndef _LIBCPP_DEBUG_ASSERT +#ifdef _LIBCPP_ENABLE_DEBUG_MODE +# define _LIBCPP_DEBUG_ASSERT(x, m) _LIBCPP_ASSERT(::std::__libcpp_is_constant_evaluated() || (x), m) +#else # define _LIBCPP_DEBUG_ASSERT(x, m) ((void)0) #endif -#ifndef _LIBCPP_DEBUG_MODE -#define _LIBCPP_DEBUG_MODE(...) ((void)0) -#endif + +#if defined(_LIBCPP_ENABLE_DEBUG_MODE) || defined(_LIBCPP_BUILDING_LIBRARY) _LIBCPP_BEGIN_NAMESPACE_STD -struct _LIBCPP_TEMPLATE_VIS __libcpp_debug_info { - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR - __libcpp_debug_info() - : __file_(nullptr), __line_(-1), __pred_(nullptr), __msg_(nullptr) {} - _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR - __libcpp_debug_info(const char* __f, int __l, const char* __p, const char* __m) - : __file_(__f), __line_(__l), __pred_(__p), __msg_(__m) {} - - _LIBCPP_FUNC_VIS std::string what() const; - - const char* __file_; - int __line_; - const char* __pred_; - const char* __msg_; -}; - -/// __libcpp_debug_function_type - The type of the assertion failure handler. -typedef void(*__libcpp_debug_function_type)(__libcpp_debug_info const&); - -/// __libcpp_debug_function - The handler function called when a _LIBCPP_ASSERT -/// fails. -extern _LIBCPP_EXPORTED_FROM_ABI __libcpp_debug_function_type __libcpp_debug_function; - -/// __libcpp_abort_debug_function - A debug handler that aborts when called. -_LIBCPP_NORETURN _LIBCPP_FUNC_VIS -void __libcpp_abort_debug_function(__libcpp_debug_info const&); - -/// __libcpp_set_debug_function - Set the debug handler to the specified -/// function. -_LIBCPP_FUNC_VIS -bool __libcpp_set_debug_function(__libcpp_debug_function_type __func); - -#if _LIBCPP_DEBUG_LEVEL >= 2 || defined(_LIBCPP_BUILDING_LIBRARY) - struct _LIBCPP_TYPE_VIS __c_node; struct _LIBCPP_TYPE_VIS __i_node @@ -93,15 +45,9 @@ struct _LIBCPP_TYPE_VIS __i_node __i_node* __next_; __c_node* __c_; -#ifndef _LIBCPP_CXX03_LANG __i_node(const __i_node&) = delete; __i_node& operator=(const __i_node&) = delete; -#else -private: - __i_node(const __i_node&); - __i_node& operator=(const __i_node&); -public: -#endif + _LIBCPP_INLINE_VISIBILITY __i_node(void* __i, __i_node* __next, __c_node* __c) : __i_(__i), __next_(__next), __c_(__c) {} @@ -116,17 +62,11 @@ struct _LIBCPP_TYPE_VIS __c_node __i_node** end_; __i_node** cap_; -#ifndef _LIBCPP_CXX03_LANG __c_node(const __c_node&) = delete; __c_node& operator=(const __c_node&) = delete; -#else -private: - __c_node(const __c_node&); - __c_node& operator=(const __c_node&); -public: -#endif + _LIBCPP_INLINE_VISIBILITY - __c_node(void* __c, __c_node* __next) + explicit __c_node(void* __c, __c_node* __next) : __c_(__c), __next_(__next), beg_(nullptr), end_(nullptr), cap_(nullptr) {} virtual ~__c_node(); @@ -143,13 +83,13 @@ template struct _C_node : public __c_node { - _C_node(void* __c, __c_node* __n) + explicit _C_node(void* __c, __c_node* __n) : __c_node(__c, __n) {} - virtual bool __dereferenceable(const void*) const; - virtual bool __decrementable(const void*) const; - virtual bool __addable(const void*, ptrdiff_t) const; - virtual bool __subscriptable(const void*, ptrdiff_t) const; + bool __dereferenceable(const void*) const override; + bool __decrementable(const void*) const override; + bool __addable(const void*, ptrdiff_t) const override; + bool __subscriptable(const void*, ptrdiff_t) const override; }; template @@ -158,8 +98,8 @@ _C_node<_Cont>::__dereferenceable(const void* __i) const { typedef typename _Cont::const_iterator iterator; const iterator* __j = static_cast(__i); - _Cont* _Cp = static_cast<_Cont*>(__c_); - return _Cp->__dereferenceable(__j); + _Cont* __cp = static_cast<_Cont*>(__c_); + return __cp->__dereferenceable(__j); } template @@ -168,8 +108,8 @@ _C_node<_Cont>::__decrementable(const void* __i) const { typedef typename _Cont::const_iterator iterator; const iterator* __j = static_cast(__i); - _Cont* _Cp = static_cast<_Cont*>(__c_); - return _Cp->__decrementable(__j); + _Cont* __cp = static_cast<_Cont*>(__c_); + return __cp->__decrementable(__j); } template @@ -178,8 +118,8 @@ _C_node<_Cont>::__addable(const void* __i, ptrdiff_t __n) const { typedef typename _Cont::const_iterator iterator; const iterator* __j = static_cast(__i); - _Cont* _Cp = static_cast<_Cont*>(__c_); - return _Cp->__addable(__j, __n); + _Cont* __cp = static_cast<_Cont*>(__c_); + return __cp->__addable(__j, __n); } template @@ -188,8 +128,8 @@ _C_node<_Cont>::__subscriptable(const void* __i, ptrdiff_t __n) const { typedef typename _Cont::const_iterator iterator; const iterator* __j = static_cast(__i); - _Cont* _Cp = static_cast<_Cont*>(__c_); - return _Cp->__subscriptable(__j, __n); + _Cont* __cp = static_cast<_Cont*>(__c_); + return __cp->__subscriptable(__j, __n); } class _LIBCPP_TYPE_VIS __libcpp_db @@ -201,17 +141,11 @@ class _LIBCPP_TYPE_VIS __libcpp_db __i_node** __iend_; size_t __isz_; - __libcpp_db(); + explicit __libcpp_db(); public: -#ifndef _LIBCPP_CXX03_LANG __libcpp_db(const __libcpp_db&) = delete; __libcpp_db& operator=(const __libcpp_db&) = delete; -#else -private: - __libcpp_db(const __libcpp_db&); - __libcpp_db& operator=(const __libcpp_db&); -public: -#endif + ~__libcpp_db(); class __db_c_iterator; @@ -226,7 +160,7 @@ public: template _LIBCPP_INLINE_VISIBILITY static __c_node* __create_C_node(void *__mem, void *__c, __c_node *__next) { - return ::new(__mem) _C_node<_Cont>(__c, __next); + return ::new (__mem) _C_node<_Cont>(__c, __next); } template @@ -270,10 +204,63 @@ private: _LIBCPP_FUNC_VIS __libcpp_db* __get_db(); _LIBCPP_FUNC_VIS const __libcpp_db* __get_const_db(); +_LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_DEBUG_LEVEL >= 2 || defined(_LIBCPP_BUILDING_LIBRARY) +#endif // defined(_LIBCPP_ENABLE_DEBUG_MODE) || defined(_LIBCPP_BUILDING_LIBRARY) + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 inline void __debug_db_insert_c(_Tp* __c) { +#ifdef _LIBCPP_ENABLE_DEBUG_MODE + if (!__libcpp_is_constant_evaluated()) + __get_db()->__insert_c(__c); +#else + (void)(__c); +#endif +} + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 inline void __debug_db_insert_i(_Tp* __i) { +#ifdef _LIBCPP_ENABLE_DEBUG_MODE + if (!__libcpp_is_constant_evaluated()) + __get_db()->__insert_i(__i); +#else + (void)(__i); +#endif +} + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 inline void __debug_db_erase_c(_Tp* __c) { +#ifdef _LIBCPP_ENABLE_DEBUG_MODE + if (!__libcpp_is_constant_evaluated()) + __get_db()->__erase_c(__c); +#else + (void)(__c); +#endif +} + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 inline void __debug_db_swap(_Tp* __lhs, _Tp* __rhs) { +#ifdef _LIBCPP_ENABLE_DEBUG_MODE + if (!__libcpp_is_constant_evaluated()) + __get_db()->swap(__lhs, __rhs); +#else + (void)(__lhs); + (void)(__rhs); +#endif +} + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 inline void __debug_db_invalidate_all(_Tp* __c) { +#ifdef _LIBCPP_ENABLE_DEBUG_MODE + if (!__libcpp_is_constant_evaluated()) + __get_db()->__invalidate_all(__c); +#else + (void)(__c); +#endif +} _LIBCPP_END_NAMESPACE_STD -#endif // _LIBCPP_DEBUG_H - +#endif // _LIBCPP___DEBUG diff --git a/third_party/libcxx/__debug_utils/randomize_range.h b/third_party/libcxx/__debug_utils/randomize_range.h new file mode 100644 index 000000000..dce61923b --- /dev/null +++ b/third_party/libcxx/__debug_utils/randomize_range.h @@ -0,0 +1,43 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___LIBCXX_DEBUG_RANDOMIZE_RANGE_H +#define _LIBCPP___LIBCXX_DEBUG_RANDOMIZE_RANGE_H + +#include <__config> + +#ifdef _LIBCPP_DEBUG_RANDOMIZE_UNSPECIFIED_STABILITY +# include <__algorithm/shuffle.h> +# include <__type_traits/is_constant_evaluated.h> +#endif + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 +void __debug_randomize_range(_Iterator __first, _Sentinel __last) { +#ifdef _LIBCPP_DEBUG_RANDOMIZE_UNSPECIFIED_STABILITY +# ifdef _LIBCPP_CXX03_LANG +# error Support for unspecified stability is only for C++11 and higher +# endif + + if (!__libcpp_is_constant_evaluated()) + std::__shuffle<_AlgPolicy>(__first, __last, __libcpp_debug_randomizer()); +#else + (void)__first; + (void)__last; +#endif +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___LIBCXX_DEBUG_RANDOMIZE_RANGE_H diff --git a/third_party/libcxx/__exception/exception.h b/third_party/libcxx/__exception/exception.h new file mode 100644 index 000000000..49a58dd16 --- /dev/null +++ b/third_party/libcxx/__exception/exception.h @@ -0,0 +1,91 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___EXCEPTION_EXCEPTION_H +#define _LIBCPP___EXCEPTION_EXCEPTION_H + +#include <__config> + +// defines its own std::exception and std::bad_exception types, +// which we use in order to be ABI-compatible with other STLs on Windows. +#if defined(_LIBCPP_ABI_VCRUNTIME) +# include +#endif + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +namespace std { // purposefully not using versioning namespace + +#if defined(_LIBCPP_ABI_VCRUNTIME) && (!defined(_HAS_EXCEPTIONS) || _HAS_EXCEPTIONS != 0) +// The std::exception class was already included above, but we're explicit about this condition here for clarity. + +#elif defined(_LIBCPP_ABI_VCRUNTIME) && _HAS_EXCEPTIONS == 0 +// However, does not define std::exception and std::bad_exception +// when _HAS_EXCEPTIONS == 0. +// +// Since libc++ still wants to provide the std::exception hierarchy even when _HAS_EXCEPTIONS == 0 +// (after all those are simply types like any other), we define an ABI-compatible version +// of the VCRuntime std::exception and std::bad_exception types in that mode. + +struct __std_exception_data { + char const* _What; + bool _DoFree; +}; + +class exception { // base of all library exceptions +public: + exception() _NOEXCEPT : __data_() {} + + explicit exception(char const* __message) _NOEXCEPT : __data_() { + __data_._What = __message; + __data_._DoFree = true; + } + + exception(exception const&) _NOEXCEPT {} + + exception& operator=(exception const&) _NOEXCEPT { return *this; } + + virtual ~exception() _NOEXCEPT {} + + virtual char const* what() const _NOEXCEPT { return __data_._What ? __data_._What : "Unknown exception"; } + +private: + __std_exception_data __data_; +}; + +class bad_exception : public exception { +public: + bad_exception() _NOEXCEPT : exception("bad exception") {} +}; + +#else // !defined(_LIBCPP_ABI_VCRUNTIME) +// On all other platforms, we define our own std::exception and std::bad_exception types +// regardless of whether exceptions are turned on as a language feature. + +class _LIBCPP_EXCEPTION_ABI exception { +public: + _LIBCPP_HIDE_FROM_ABI exception() _NOEXCEPT {} + _LIBCPP_HIDE_FROM_ABI exception(const exception&) _NOEXCEPT = default; + + virtual ~exception() _NOEXCEPT; + virtual const char* what() const _NOEXCEPT; +}; + +class _LIBCPP_EXCEPTION_ABI bad_exception : public exception { +public: + _LIBCPP_HIDE_FROM_ABI bad_exception() _NOEXCEPT {} + ~bad_exception() _NOEXCEPT override; + const char* what() const _NOEXCEPT override; +}; +#endif // !_LIBCPP_ABI_VCRUNTIME + +} // namespace std + +#endif // _LIBCPP___EXCEPTION_EXCEPTION_H diff --git a/third_party/libcxx/__exception/exception_ptr.h b/third_party/libcxx/__exception/exception_ptr.h new file mode 100644 index 000000000..1307481f0 --- /dev/null +++ b/third_party/libcxx/__exception/exception_ptr.h @@ -0,0 +1,109 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___EXCEPTION_EXCEPTION_PTR_H +#define _LIBCPP___EXCEPTION_EXCEPTION_PTR_H + +#include <__config> +#include <__exception/operations.h> +#include <__memory/addressof.h> +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +namespace std { // purposefully not using versioning namespace + +#ifndef _LIBCPP_ABI_MICROSOFT + +class _LIBCPP_TYPE_VIS exception_ptr { + void* __ptr_; + +public: + _LIBCPP_HIDE_FROM_ABI exception_ptr() _NOEXCEPT : __ptr_() {} + _LIBCPP_HIDE_FROM_ABI exception_ptr(nullptr_t) _NOEXCEPT : __ptr_() {} + + exception_ptr(const exception_ptr&) _NOEXCEPT; + exception_ptr& operator=(const exception_ptr&) _NOEXCEPT; + ~exception_ptr() _NOEXCEPT; + + _LIBCPP_HIDE_FROM_ABI explicit operator bool() const _NOEXCEPT { return __ptr_ != nullptr; } + + friend _LIBCPP_HIDE_FROM_ABI bool operator==(const exception_ptr& __x, const exception_ptr& __y) _NOEXCEPT { + return __x.__ptr_ == __y.__ptr_; + } + + friend _LIBCPP_HIDE_FROM_ABI bool operator!=(const exception_ptr& __x, const exception_ptr& __y) _NOEXCEPT { + return !(__x == __y); + } + + friend _LIBCPP_FUNC_VIS exception_ptr current_exception() _NOEXCEPT; + friend _LIBCPP_FUNC_VIS void rethrow_exception(exception_ptr); +}; + +template +_LIBCPP_HIDE_FROM_ABI exception_ptr make_exception_ptr(_Ep __e) _NOEXCEPT { +# ifndef _LIBCPP_HAS_NO_EXCEPTIONS + try { + throw __e; + } catch (...) { + return current_exception(); + } +# else + ((void)__e); + std::abort(); +# endif +} + +#else // _LIBCPP_ABI_MICROSOFT + +class _LIBCPP_TYPE_VIS exception_ptr { + _LIBCPP_DIAGNOSTIC_PUSH + _LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wunused-private-field") + void* __ptr1_; + void* __ptr2_; + _LIBCPP_DIAGNOSTIC_POP + +public: + exception_ptr() _NOEXCEPT; + exception_ptr(nullptr_t) _NOEXCEPT; + exception_ptr(const exception_ptr& __other) _NOEXCEPT; + exception_ptr& operator=(const exception_ptr& __other) _NOEXCEPT; + exception_ptr& operator=(nullptr_t) _NOEXCEPT; + ~exception_ptr() _NOEXCEPT; + explicit operator bool() const _NOEXCEPT; +}; + +_LIBCPP_FUNC_VIS bool operator==(const exception_ptr& __x, const exception_ptr& __y) _NOEXCEPT; + +inline _LIBCPP_HIDE_FROM_ABI bool operator!=(const exception_ptr& __x, const exception_ptr& __y) _NOEXCEPT { + return !(__x == __y); +} + +_LIBCPP_FUNC_VIS void swap(exception_ptr&, exception_ptr&) _NOEXCEPT; + +_LIBCPP_FUNC_VIS exception_ptr __copy_exception_ptr(void* __except, const void* __ptr); +_LIBCPP_FUNC_VIS exception_ptr current_exception() _NOEXCEPT; +_LIBCPP_NORETURN _LIBCPP_FUNC_VIS void rethrow_exception(exception_ptr); + +// This is a built-in template function which automagically extracts the required +// information. +template +void* __GetExceptionInfo(_E); + +template +_LIBCPP_HIDE_FROM_ABI exception_ptr make_exception_ptr(_Ep __e) _NOEXCEPT { + return __copy_exception_ptr(std::addressof(__e), __GetExceptionInfo(__e)); +} + +#endif // _LIBCPP_ABI_MICROSOFT +} // namespace std + +#endif // _LIBCPP___EXCEPTION_EXCEPTION_PTR_H diff --git a/third_party/libcxx/__exception/nested_exception.h b/third_party/libcxx/__exception/nested_exception.h new file mode 100644 index 000000000..182c7ddda --- /dev/null +++ b/third_party/libcxx/__exception/nested_exception.h @@ -0,0 +1,101 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___EXCEPTION_NESTED_EXCEPTION_H +#define _LIBCPP___EXCEPTION_NESTED_EXCEPTION_H + +#include <__config> +#include <__exception/exception_ptr.h> +#include <__memory/addressof.h> +#include <__type_traits/decay.h> +#include <__type_traits/is_base_of.h> +#include <__type_traits/is_class.h> +#include <__type_traits/is_convertible.h> +#include <__type_traits/is_copy_constructible.h> +#include <__type_traits/is_final.h> +#include <__type_traits/is_polymorphic.h> +#include <__utility/forward.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +namespace std { // purposefully not using versioning namespace + +class _LIBCPP_EXCEPTION_ABI nested_exception { + exception_ptr __ptr_; + +public: + nested_exception() _NOEXCEPT; + // nested_exception(const nested_exception&) noexcept = default; + // nested_exception& operator=(const nested_exception&) noexcept = default; + virtual ~nested_exception() _NOEXCEPT; + + // access functions + _LIBCPP_NORETURN void rethrow_nested() const; + _LIBCPP_HIDE_FROM_ABI exception_ptr nested_ptr() const _NOEXCEPT { return __ptr_; } +}; + +template +struct __nested : public _Tp, public nested_exception { + _LIBCPP_HIDE_FROM_ABI explicit __nested(const _Tp& __t) : _Tp(__t) {} +}; + +#ifndef _LIBCPP_HAS_NO_EXCEPTIONS +template +struct __throw_with_nested; + +template +struct __throw_with_nested<_Tp, _Up, true> { + _LIBCPP_NORETURN static inline _LIBCPP_INLINE_VISIBILITY void __do_throw(_Tp&& __t) { + throw __nested<_Up>(std::forward<_Tp>(__t)); + } +}; + +template +struct __throw_with_nested<_Tp, _Up, false> { + _LIBCPP_NORETURN static inline _LIBCPP_INLINE_VISIBILITY void __do_throw(_Tp&& __t) { throw std::forward<_Tp>(__t); } +}; +#endif + +template +_LIBCPP_NORETURN _LIBCPP_HIDE_FROM_ABI void throw_with_nested(_Tp&& __t) { +#ifndef _LIBCPP_HAS_NO_EXCEPTIONS + using _Up = __decay_t<_Tp>; + static_assert(is_copy_constructible<_Up>::value, "type thrown must be CopyConstructible"); + __throw_with_nested<_Tp, + _Up, + is_class<_Up>::value && !is_base_of::value && + !__libcpp_is_final<_Up>::value>::__do_throw(std::forward<_Tp>(__t)); +#else + ((void)__t); + // FIXME: Make this abort +#endif +} + +template +struct __can_dynamic_cast + : _BoolConstant< is_polymorphic<_From>::value && + (!is_base_of<_To, _From>::value || is_convertible::value)> {}; + +template +inline _LIBCPP_HIDE_FROM_ABI void +rethrow_if_nested(const _Ep& __e, __enable_if_t< __can_dynamic_cast<_Ep, nested_exception>::value>* = 0) { + const nested_exception* __nep = dynamic_cast(std::addressof(__e)); + if (__nep) + __nep->rethrow_nested(); +} + +template +inline _LIBCPP_HIDE_FROM_ABI void +rethrow_if_nested(const _Ep&, __enable_if_t::value>* = 0) {} + +} // namespace std + +#endif // _LIBCPP___EXCEPTION_NESTED_EXCEPTION_H diff --git a/third_party/libcxx/__exception/operations.h b/third_party/libcxx/__exception/operations.h new file mode 100644 index 000000000..e8c5ba61e --- /dev/null +++ b/third_party/libcxx/__exception/operations.h @@ -0,0 +1,42 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___EXCEPTION_OPERATIONS_H +#define _LIBCPP___EXCEPTION_OPERATIONS_H + +#include <__availability> +#include <__config> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +namespace std { // purposefully not using versioning namespace +#if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS) || \ + defined(_LIBCPP_BUILDING_LIBRARY) +using unexpected_handler = void (*)(); +_LIBCPP_FUNC_VIS unexpected_handler set_unexpected(unexpected_handler) _NOEXCEPT; +_LIBCPP_FUNC_VIS unexpected_handler get_unexpected() _NOEXCEPT; +_LIBCPP_NORETURN _LIBCPP_FUNC_VIS void unexpected(); +#endif + +using terminate_handler = void (*)(); +_LIBCPP_FUNC_VIS terminate_handler set_terminate(terminate_handler) _NOEXCEPT; +_LIBCPP_FUNC_VIS terminate_handler get_terminate() _NOEXCEPT; + +_LIBCPP_FUNC_VIS bool uncaught_exception() _NOEXCEPT; +_LIBCPP_FUNC_VIS _LIBCPP_AVAILABILITY_UNCAUGHT_EXCEPTIONS int uncaught_exceptions() _NOEXCEPT; + +class _LIBCPP_TYPE_VIS exception_ptr; + +_LIBCPP_FUNC_VIS exception_ptr current_exception() _NOEXCEPT; +_LIBCPP_NORETURN _LIBCPP_FUNC_VIS void rethrow_exception(exception_ptr); +} // namespace std + +#endif // _LIBCPP___EXCEPTION_OPERATIONS_H diff --git a/third_party/libcxx/__exception/terminate.h b/third_party/libcxx/__exception/terminate.h new file mode 100644 index 000000000..d8dd9642b --- /dev/null +++ b/third_party/libcxx/__exception/terminate.h @@ -0,0 +1,22 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___EXCEPTION_TERMINATE_H +#define _LIBCPP___EXCEPTION_TERMINATE_H + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +namespace std { // purposefully not using versioning namespace +_LIBCPP_NORETURN _LIBCPP_FUNC_VIS void terminate() _NOEXCEPT; +} // namespace std + +#endif // _LIBCPP___EXCEPTION_TERMINATE_H diff --git a/third_party/libcxx/__expected/bad_expected_access.h b/third_party/libcxx/__expected/bad_expected_access.h new file mode 100644 index 000000000..1b88ab2be --- /dev/null +++ b/third_party/libcxx/__expected/bad_expected_access.h @@ -0,0 +1,63 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +#ifndef _LIBCPP___EXPECTED_BAD_EXPECTED_ACCESS_H +#define _LIBCPP___EXPECTED_BAD_EXPECTED_ACCESS_H + +#include <__config> +#include <__exception/exception.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 23 + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +class bad_expected_access; + +template <> +class bad_expected_access : public exception { +protected: + _LIBCPP_HIDE_FROM_ABI bad_expected_access() noexcept = default; + _LIBCPP_HIDE_FROM_ABI bad_expected_access(const bad_expected_access&) = default; + _LIBCPP_HIDE_FROM_ABI bad_expected_access(bad_expected_access&&) = default; + _LIBCPP_HIDE_FROM_ABI bad_expected_access& operator=(const bad_expected_access&) = default; + _LIBCPP_HIDE_FROM_ABI bad_expected_access& operator=(bad_expected_access&&) = default; + _LIBCPP_HIDE_FROM_ABI_VIRTUAL ~bad_expected_access() override = default; + +public: + // The way this has been designed (by using a class template below) means that we'll already + // have a profusion of these vtables in TUs, and the dynamic linker will already have a bunch + // of work to do. So it is not worth hiding the specialization in the dylib, given that + // it adds deployment target restrictions. + _LIBCPP_HIDE_FROM_ABI_VIRTUAL const char* what() const noexcept override { return "bad access to std::expected"; } +}; + +template +class bad_expected_access : public bad_expected_access { +public: + _LIBCPP_HIDE_FROM_ABI explicit bad_expected_access(_Err __e) : __unex_(std::move(__e)) {} + + _LIBCPP_HIDE_FROM_ABI _Err& error() & noexcept { return __unex_; } + _LIBCPP_HIDE_FROM_ABI const _Err& error() const& noexcept { return __unex_; } + _LIBCPP_HIDE_FROM_ABI _Err&& error() && noexcept { return std::move(__unex_); } + _LIBCPP_HIDE_FROM_ABI const _Err&& error() const&& noexcept { return std::move(__unex_); } + +private: + _Err __unex_; +}; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 23 + +#endif // _LIBCPP___EXPECTED_BAD_EXPECTED_ACCESS_H diff --git a/third_party/libcxx/__expected/expected.h b/third_party/libcxx/__expected/expected.h new file mode 100644 index 000000000..668e23f21 --- /dev/null +++ b/third_party/libcxx/__expected/expected.h @@ -0,0 +1,1548 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +#ifndef _LIBCPP___EXPECTED_EXPECTED_H +#define _LIBCPP___EXPECTED_EXPECTED_H + +#include <__assert> +#include <__config> +#include <__expected/bad_expected_access.h> +#include <__expected/unexpect.h> +#include <__expected/unexpected.h> +#include <__functional/invoke.h> +#include <__memory/addressof.h> +#include <__memory/construct_at.h> +#include <__type_traits/conjunction.h> +#include <__type_traits/disjunction.h> +#include <__type_traits/integral_constant.h> +#include <__type_traits/is_assignable.h> +#include <__type_traits/is_constructible.h> +#include <__type_traits/is_convertible.h> +#include <__type_traits/is_copy_assignable.h> +#include <__type_traits/is_copy_constructible.h> +#include <__type_traits/is_default_constructible.h> +#include <__type_traits/is_function.h> +#include <__type_traits/is_move_assignable.h> +#include <__type_traits/is_move_constructible.h> +#include <__type_traits/is_nothrow_constructible.h> +#include <__type_traits/is_nothrow_copy_assignable.h> +#include <__type_traits/is_nothrow_copy_constructible.h> +#include <__type_traits/is_nothrow_default_constructible.h> +#include <__type_traits/is_nothrow_move_assignable.h> +#include <__type_traits/is_nothrow_move_constructible.h> +#include <__type_traits/is_reference.h> +#include <__type_traits/is_same.h> +#include <__type_traits/is_swappable.h> +#include <__type_traits/is_trivially_copy_constructible.h> +#include <__type_traits/is_trivially_destructible.h> +#include <__type_traits/is_trivially_move_constructible.h> +#include <__type_traits/is_void.h> +#include <__type_traits/lazy.h> +#include <__type_traits/negation.h> +#include <__type_traits/remove_cv.h> +#include <__type_traits/remove_cvref.h> +#include <__utility/exception_guard.h> +#include <__utility/forward.h> +#include <__utility/in_place.h> +#include <__utility/move.h> +#include <__utility/swap.h> +#include <__verbose_abort> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 23 + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +class expected; + +template +struct __is_std_expected : false_type {}; + +template +struct __is_std_expected> : true_type {}; + +struct __expected_construct_in_place_from_invoke_tag {}; +struct __expected_construct_unexpected_from_invoke_tag {}; + +template +_LIBCPP_HIDE_FROM_ABI void __throw_bad_expected_access(_Arg&& __arg) { +# ifndef _LIBCPP_HAS_NO_EXCEPTIONS + throw bad_expected_access<_Err>(std::forward<_Arg>(__arg)); +# else + (void)__arg; + _LIBCPP_VERBOSE_ABORT("bad_expected_access was thrown in -fno-exceptions mode"); +# endif +} + +template +class expected { + static_assert( + !is_reference_v<_Tp> && + !is_function_v<_Tp> && + !is_same_v, in_place_t> && + !is_same_v, unexpect_t> && + !__is_std_unexpected>::value && + __valid_std_unexpected<_Err>::value + , + "[expected.object.general] A program that instantiates the definition of template expected for a " + "reference type, a function type, or for possibly cv-qualified types in_place_t, unexpect_t, or a " + "specialization of unexpected for the T parameter is ill-formed. A program that instantiates the " + "definition of the template expected with a type for the E parameter that is not a valid " + "template argument for unexpected is ill-formed."); + + template + friend class expected; + +public: + using value_type = _Tp; + using error_type = _Err; + using unexpected_type = unexpected<_Err>; + + template + using rebind = expected<_Up, error_type>; + + // [expected.object.ctor], constructors + _LIBCPP_HIDE_FROM_ABI constexpr expected() + noexcept(is_nothrow_default_constructible_v<_Tp>) // strengthened + requires is_default_constructible_v<_Tp> + : __has_val_(true) { + std::construct_at(std::addressof(__union_.__val_)); + } + + _LIBCPP_HIDE_FROM_ABI constexpr expected(const expected&) = delete; + + _LIBCPP_HIDE_FROM_ABI constexpr expected(const expected&) + requires(is_copy_constructible_v<_Tp> && + is_copy_constructible_v<_Err> && + is_trivially_copy_constructible_v<_Tp> && + is_trivially_copy_constructible_v<_Err>) + = default; + + _LIBCPP_HIDE_FROM_ABI constexpr expected(const expected& __other) + noexcept(is_nothrow_copy_constructible_v<_Tp> && is_nothrow_copy_constructible_v<_Err>) // strengthened + requires(is_copy_constructible_v<_Tp> && is_copy_constructible_v<_Err> && + !(is_trivially_copy_constructible_v<_Tp> && is_trivially_copy_constructible_v<_Err>)) + : __has_val_(__other.__has_val_) { + if (__has_val_) { + std::construct_at(std::addressof(__union_.__val_), __other.__union_.__val_); + } else { + std::construct_at(std::addressof(__union_.__unex_), __other.__union_.__unex_); + } + } + + + _LIBCPP_HIDE_FROM_ABI constexpr expected(expected&&) + requires(is_move_constructible_v<_Tp> && is_move_constructible_v<_Err> + && is_trivially_move_constructible_v<_Tp> && is_trivially_move_constructible_v<_Err>) + = default; + + _LIBCPP_HIDE_FROM_ABI constexpr expected(expected&& __other) + noexcept(is_nothrow_move_constructible_v<_Tp> && is_nothrow_move_constructible_v<_Err>) + requires(is_move_constructible_v<_Tp> && is_move_constructible_v<_Err> && + !(is_trivially_move_constructible_v<_Tp> && is_trivially_move_constructible_v<_Err>)) + : __has_val_(__other.__has_val_) { + if (__has_val_) { + std::construct_at(std::addressof(__union_.__val_), std::move(__other.__union_.__val_)); + } else { + std::construct_at(std::addressof(__union_.__unex_), std::move(__other.__union_.__unex_)); + } + } + +private: + template + using __can_convert = + _And< is_constructible<_Tp, _UfQual>, + is_constructible<_Err, _OtherErrQual>, + _Not&>>, + _Not>>, + _Not&>>, + _Not>>, + _Not&, _Tp>>, + _Not&&, _Tp>>, + _Not&, _Tp>>, + _Not&&, _Tp>>, + _Not, expected<_Up, _OtherErr>&>>, + _Not, expected<_Up, _OtherErr>>>, + _Not, const expected<_Up, _OtherErr>&>>, + _Not, const expected<_Up, _OtherErr>>> >; + + template + _LIBCPP_HIDE_FROM_ABI constexpr explicit expected( + std::__expected_construct_in_place_from_invoke_tag __tag, _Func&& __f, _Args&&... __args) + : __union_(__tag, std::forward<_Func>(__f), std::forward<_Args>(__args)...), __has_val_(true) {} + + template + _LIBCPP_HIDE_FROM_ABI constexpr explicit expected( + std::__expected_construct_unexpected_from_invoke_tag __tag, _Func&& __f, _Args&&... __args) + : __union_(__tag, std::forward<_Func>(__f), std::forward<_Args>(__args)...), __has_val_(false) {} + +public: + template + requires __can_convert<_Up, _OtherErr, const _Up&, const _OtherErr&>::value + _LIBCPP_HIDE_FROM_ABI constexpr explicit(!is_convertible_v || + !is_convertible_v) + expected(const expected<_Up, _OtherErr>& __other) + noexcept(is_nothrow_constructible_v<_Tp, const _Up&> && + is_nothrow_constructible_v<_Err, const _OtherErr&>) // strengthened + : __has_val_(__other.__has_val_) { + if (__has_val_) { + std::construct_at(std::addressof(__union_.__val_), __other.__union_.__val_); + } else { + std::construct_at(std::addressof(__union_.__unex_), __other.__union_.__unex_); + } + } + + template + requires __can_convert<_Up, _OtherErr, _Up, _OtherErr>::value + _LIBCPP_HIDE_FROM_ABI constexpr explicit(!is_convertible_v<_Up, _Tp> || !is_convertible_v<_OtherErr, _Err>) + expected(expected<_Up, _OtherErr>&& __other) + noexcept(is_nothrow_constructible_v<_Tp, _Up> && is_nothrow_constructible_v<_Err, _OtherErr>) // strengthened + : __has_val_(__other.__has_val_) { + if (__has_val_) { + std::construct_at(std::addressof(__union_.__val_), std::move(__other.__union_.__val_)); + } else { + std::construct_at(std::addressof(__union_.__unex_), std::move(__other.__union_.__unex_)); + } + } + + template + requires(!is_same_v, in_place_t> && !is_same_v> && + !__is_std_unexpected>::value && is_constructible_v<_Tp, _Up>) + _LIBCPP_HIDE_FROM_ABI constexpr explicit(!is_convertible_v<_Up, _Tp>) + expected(_Up&& __u) + noexcept(is_nothrow_constructible_v<_Tp, _Up>) // strengthened + : __has_val_(true) { + std::construct_at(std::addressof(__union_.__val_), std::forward<_Up>(__u)); + } + + + template + requires is_constructible_v<_Err, const _OtherErr&> + _LIBCPP_HIDE_FROM_ABI constexpr explicit(!is_convertible_v) + expected(const unexpected<_OtherErr>& __unex) + noexcept(is_nothrow_constructible_v<_Err, const _OtherErr&>) // strengthened + : __has_val_(false) { + std::construct_at(std::addressof(__union_.__unex_), __unex.error()); + } + + template + requires is_constructible_v<_Err, _OtherErr> + _LIBCPP_HIDE_FROM_ABI constexpr explicit(!is_convertible_v<_OtherErr, _Err>) + expected(unexpected<_OtherErr>&& __unex) + noexcept(is_nothrow_constructible_v<_Err, _OtherErr>) // strengthened + : __has_val_(false) { + std::construct_at(std::addressof(__union_.__unex_), std::move(__unex.error())); + } + + template + requires is_constructible_v<_Tp, _Args...> + _LIBCPP_HIDE_FROM_ABI constexpr explicit expected(in_place_t, _Args&&... __args) + noexcept(is_nothrow_constructible_v<_Tp, _Args...>) // strengthened + : __has_val_(true) { + std::construct_at(std::addressof(__union_.__val_), std::forward<_Args>(__args)...); + } + + template + requires is_constructible_v< _Tp, initializer_list<_Up>&, _Args... > + _LIBCPP_HIDE_FROM_ABI constexpr explicit + expected(in_place_t, initializer_list<_Up> __il, _Args&&... __args) + noexcept(is_nothrow_constructible_v<_Tp, initializer_list<_Up>&, _Args...>) // strengthened + : __has_val_(true) { + std::construct_at(std::addressof(__union_.__val_), __il, std::forward<_Args>(__args)...); + } + + template + requires is_constructible_v<_Err, _Args...> + _LIBCPP_HIDE_FROM_ABI constexpr explicit expected(unexpect_t, _Args&&... __args) + noexcept(is_nothrow_constructible_v<_Err, _Args...>) // strengthened + : __has_val_(false) { + std::construct_at(std::addressof(__union_.__unex_), std::forward<_Args>(__args)...); + } + + template + requires is_constructible_v< _Err, initializer_list<_Up>&, _Args... > + _LIBCPP_HIDE_FROM_ABI constexpr explicit + expected(unexpect_t, initializer_list<_Up> __il, _Args&&... __args) + noexcept(is_nothrow_constructible_v<_Err, initializer_list<_Up>&, _Args...>) // strengthened + : __has_val_(false) { + std::construct_at(std::addressof(__union_.__unex_), __il, std::forward<_Args>(__args)...); + } + + // [expected.object.dtor], destructor + + _LIBCPP_HIDE_FROM_ABI constexpr ~expected() + requires(is_trivially_destructible_v<_Tp> && is_trivially_destructible_v<_Err>) + = default; + + _LIBCPP_HIDE_FROM_ABI constexpr ~expected() + requires(!is_trivially_destructible_v<_Tp> || !is_trivially_destructible_v<_Err>) + { + if (__has_val_) { + std::destroy_at(std::addressof(__union_.__val_)); + } else { + std::destroy_at(std::addressof(__union_.__unex_)); + } + } + +private: + template + _LIBCPP_HIDE_FROM_ABI static constexpr void __reinit_expected(_T1& __newval, _T2& __oldval, _Args&&... __args) { + if constexpr (is_nothrow_constructible_v<_T1, _Args...>) { + std::destroy_at(std::addressof(__oldval)); + std::construct_at(std::addressof(__newval), std::forward<_Args>(__args)...); + } else if constexpr (is_nothrow_move_constructible_v<_T1>) { + _T1 __tmp(std::forward<_Args>(__args)...); + std::destroy_at(std::addressof(__oldval)); + std::construct_at(std::addressof(__newval), std::move(__tmp)); + } else { + static_assert( + is_nothrow_move_constructible_v<_T2>, + "To provide strong exception guarantee, T2 has to satisfy `is_nothrow_move_constructible_v` so that it can " + "be reverted to the previous state in case an exception is thrown during the assignment."); + _T2 __tmp(std::move(__oldval)); + std::destroy_at(std::addressof(__oldval)); + auto __trans = + std::__make_exception_guard([&] { std::construct_at(std::addressof(__oldval), std::move(__tmp)); }); + std::construct_at(std::addressof(__newval), std::forward<_Args>(__args)...); + __trans.__complete(); + } + } + +public: + // [expected.object.assign], assignment + _LIBCPP_HIDE_FROM_ABI constexpr expected& operator=(const expected&) = delete; + + _LIBCPP_HIDE_FROM_ABI constexpr expected& operator=(const expected& __rhs) + noexcept(is_nothrow_copy_assignable_v<_Tp> && + is_nothrow_copy_constructible_v<_Tp> && + is_nothrow_copy_assignable_v<_Err> && + is_nothrow_copy_constructible_v<_Err>) // strengthened + requires(is_copy_assignable_v<_Tp> && + is_copy_constructible_v<_Tp> && + is_copy_assignable_v<_Err> && + is_copy_constructible_v<_Err> && + (is_nothrow_move_constructible_v<_Tp> || + is_nothrow_move_constructible_v<_Err>)) + { + if (__has_val_ && __rhs.__has_val_) { + __union_.__val_ = __rhs.__union_.__val_; + } else if (__has_val_) { + __reinit_expected(__union_.__unex_, __union_.__val_, __rhs.__union_.__unex_); + } else if (__rhs.__has_val_) { + __reinit_expected(__union_.__val_, __union_.__unex_, __rhs.__union_.__val_); + } else { + __union_.__unex_ = __rhs.__union_.__unex_; + } + // note: only reached if no exception+rollback was done inside __reinit_expected + __has_val_ = __rhs.__has_val_; + return *this; + } + + _LIBCPP_HIDE_FROM_ABI constexpr expected& operator=(expected&& __rhs) + noexcept(is_nothrow_move_assignable_v<_Tp> && + is_nothrow_move_constructible_v<_Tp> && + is_nothrow_move_assignable_v<_Err> && + is_nothrow_move_constructible_v<_Err>) + requires(is_move_constructible_v<_Tp> && + is_move_assignable_v<_Tp> && + is_move_constructible_v<_Err> && + is_move_assignable_v<_Err> && + (is_nothrow_move_constructible_v<_Tp> || + is_nothrow_move_constructible_v<_Err>)) + { + if (__has_val_ && __rhs.__has_val_) { + __union_.__val_ = std::move(__rhs.__union_.__val_); + } else if (__has_val_) { + __reinit_expected(__union_.__unex_, __union_.__val_, std::move(__rhs.__union_.__unex_)); + } else if (__rhs.__has_val_) { + __reinit_expected(__union_.__val_, __union_.__unex_, std::move(__rhs.__union_.__val_)); + } else { + __union_.__unex_ = std::move(__rhs.__union_.__unex_); + } + // note: only reached if no exception+rollback was done inside __reinit_expected + __has_val_ = __rhs.__has_val_; + return *this; + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr expected& operator=(_Up&& __v) + requires(!is_same_v> && + !__is_std_unexpected>::value && + is_constructible_v<_Tp, _Up> && + is_assignable_v<_Tp&, _Up> && + (is_nothrow_constructible_v<_Tp, _Up> || + is_nothrow_move_constructible_v<_Tp> || + is_nothrow_move_constructible_v<_Err>)) + { + if (__has_val_) { + __union_.__val_ = std::forward<_Up>(__v); + } else { + __reinit_expected(__union_.__val_, __union_.__unex_, std::forward<_Up>(__v)); + __has_val_ = true; + } + return *this; + } + +private: + template + static constexpr bool __can_assign_from_unexpected = + _And< is_constructible<_Err, _OtherErrQual>, + is_assignable<_Err&, _OtherErrQual>, + _Lazy<_Or, + is_nothrow_constructible<_Err, _OtherErrQual>, + is_nothrow_move_constructible<_Tp>, + is_nothrow_move_constructible<_Err>> >::value; + +public: + template + requires(__can_assign_from_unexpected) + _LIBCPP_HIDE_FROM_ABI constexpr expected& operator=(const unexpected<_OtherErr>& __un) { + if (__has_val_) { + __reinit_expected(__union_.__unex_, __union_.__val_, __un.error()); + __has_val_ = false; + } else { + __union_.__unex_ = __un.error(); + } + return *this; + } + + template + requires(__can_assign_from_unexpected<_OtherErr>) + _LIBCPP_HIDE_FROM_ABI constexpr expected& operator=(unexpected<_OtherErr>&& __un) { + if (__has_val_) { + __reinit_expected(__union_.__unex_, __union_.__val_, std::move(__un.error())); + __has_val_ = false; + } else { + __union_.__unex_ = std::move(__un.error()); + } + return *this; + } + + template + requires is_nothrow_constructible_v<_Tp, _Args...> + _LIBCPP_HIDE_FROM_ABI constexpr _Tp& emplace(_Args&&... __args) noexcept { + if (__has_val_) { + std::destroy_at(std::addressof(__union_.__val_)); + } else { + std::destroy_at(std::addressof(__union_.__unex_)); + __has_val_ = true; + } + return *std::construct_at(std::addressof(__union_.__val_), std::forward<_Args>(__args)...); + } + + template + requires is_nothrow_constructible_v< _Tp, initializer_list<_Up>&, _Args... > + _LIBCPP_HIDE_FROM_ABI constexpr _Tp& emplace(initializer_list<_Up> __il, _Args&&... __args) noexcept { + if (__has_val_) { + std::destroy_at(std::addressof(__union_.__val_)); + } else { + std::destroy_at(std::addressof(__union_.__unex_)); + __has_val_ = true; + } + return *std::construct_at(std::addressof(__union_.__val_), __il, std::forward<_Args>(__args)...); + } + + +public: + // [expected.object.swap], swap + _LIBCPP_HIDE_FROM_ABI constexpr void swap(expected& __rhs) + noexcept(is_nothrow_move_constructible_v<_Tp> && + is_nothrow_swappable_v<_Tp> && + is_nothrow_move_constructible_v<_Err> && + is_nothrow_swappable_v<_Err>) + requires(is_swappable_v<_Tp> && + is_swappable_v<_Err> && + is_move_constructible_v<_Tp> && + is_move_constructible_v<_Err> && + (is_nothrow_move_constructible_v<_Tp> || + is_nothrow_move_constructible_v<_Err>)) + { + auto __swap_val_unex_impl = [&](expected& __with_val, expected& __with_err) { + if constexpr (is_nothrow_move_constructible_v<_Err>) { + _Err __tmp(std::move(__with_err.__union_.__unex_)); + std::destroy_at(std::addressof(__with_err.__union_.__unex_)); + auto __trans = std::__make_exception_guard([&] { + std::construct_at(std::addressof(__with_err.__union_.__unex_), std::move(__tmp)); + }); + std::construct_at(std::addressof(__with_err.__union_.__val_), std::move(__with_val.__union_.__val_)); + __trans.__complete(); + std::destroy_at(std::addressof(__with_val.__union_.__val_)); + std::construct_at(std::addressof(__with_val.__union_.__unex_), std::move(__tmp)); + } else { + static_assert(is_nothrow_move_constructible_v<_Tp>, + "To provide strong exception guarantee, Tp has to satisfy `is_nothrow_move_constructible_v` so " + "that it can be reverted to the previous state in case an exception is thrown during swap."); + _Tp __tmp(std::move(__with_val.__union_.__val_)); + std::destroy_at(std::addressof(__with_val.__union_.__val_)); + auto __trans = std::__make_exception_guard([&] { + std::construct_at(std::addressof(__with_val.__union_.__val_), std::move(__tmp)); + }); + std::construct_at(std::addressof(__with_val.__union_.__unex_), std::move(__with_err.__union_.__unex_)); + __trans.__complete(); + std::destroy_at(std::addressof(__with_err.__union_.__unex_)); + std::construct_at(std::addressof(__with_err.__union_.__val_), std::move(__tmp)); + } + __with_val.__has_val_ = false; + __with_err.__has_val_ = true; + }; + + if (__has_val_) { + if (__rhs.__has_val_) { + using std::swap; + swap(__union_.__val_, __rhs.__union_.__val_); + } else { + __swap_val_unex_impl(*this, __rhs); + } + } else { + if (__rhs.__has_val_) { + __swap_val_unex_impl(__rhs, *this); + } else { + using std::swap; + swap(__union_.__unex_, __rhs.__union_.__unex_); + } + } + } + + _LIBCPP_HIDE_FROM_ABI friend constexpr void swap(expected& __x, expected& __y) + noexcept(noexcept(__x.swap(__y))) + requires requires { __x.swap(__y); } + { + __x.swap(__y); + } + + // [expected.object.obs], observers + _LIBCPP_HIDE_FROM_ABI constexpr const _Tp* operator->() const noexcept { + _LIBCPP_ASSERT(__has_val_, "expected::operator-> requires the expected to contain a value"); + return std::addressof(__union_.__val_); + } + + _LIBCPP_HIDE_FROM_ABI constexpr _Tp* operator->() noexcept { + _LIBCPP_ASSERT(__has_val_, "expected::operator-> requires the expected to contain a value"); + return std::addressof(__union_.__val_); + } + + _LIBCPP_HIDE_FROM_ABI constexpr const _Tp& operator*() const& noexcept { + _LIBCPP_ASSERT(__has_val_, "expected::operator* requires the expected to contain a value"); + return __union_.__val_; + } + + _LIBCPP_HIDE_FROM_ABI constexpr _Tp& operator*() & noexcept { + _LIBCPP_ASSERT(__has_val_, "expected::operator* requires the expected to contain a value"); + return __union_.__val_; + } + + _LIBCPP_HIDE_FROM_ABI constexpr const _Tp&& operator*() const&& noexcept { + _LIBCPP_ASSERT(__has_val_, "expected::operator* requires the expected to contain a value"); + return std::move(__union_.__val_); + } + + _LIBCPP_HIDE_FROM_ABI constexpr _Tp&& operator*() && noexcept { + _LIBCPP_ASSERT(__has_val_, "expected::operator* requires the expected to contain a value"); + return std::move(__union_.__val_); + } + + _LIBCPP_HIDE_FROM_ABI constexpr explicit operator bool() const noexcept { return __has_val_; } + + _LIBCPP_HIDE_FROM_ABI constexpr bool has_value() const noexcept { return __has_val_; } + + _LIBCPP_HIDE_FROM_ABI constexpr const _Tp& value() const& { + if (!__has_val_) { + std::__throw_bad_expected_access<_Err>(__union_.__unex_); + } + return __union_.__val_; + } + + _LIBCPP_HIDE_FROM_ABI constexpr _Tp& value() & { + if (!__has_val_) { + std::__throw_bad_expected_access<_Err>(__union_.__unex_); + } + return __union_.__val_; + } + + _LIBCPP_HIDE_FROM_ABI constexpr const _Tp&& value() const&& { + if (!__has_val_) { + std::__throw_bad_expected_access<_Err>(std::move(__union_.__unex_)); + } + return std::move(__union_.__val_); + } + + _LIBCPP_HIDE_FROM_ABI constexpr _Tp&& value() && { + if (!__has_val_) { + std::__throw_bad_expected_access<_Err>(std::move(__union_.__unex_)); + } + return std::move(__union_.__val_); + } + + _LIBCPP_HIDE_FROM_ABI constexpr const _Err& error() const& noexcept { + _LIBCPP_ASSERT(!__has_val_, "expected::error requires the expected to contain an error"); + return __union_.__unex_; + } + + _LIBCPP_HIDE_FROM_ABI constexpr _Err& error() & noexcept { + _LIBCPP_ASSERT(!__has_val_, "expected::error requires the expected to contain an error"); + return __union_.__unex_; + } + + _LIBCPP_HIDE_FROM_ABI constexpr const _Err&& error() const&& noexcept { + _LIBCPP_ASSERT(!__has_val_, "expected::error requires the expected to contain an error"); + return std::move(__union_.__unex_); + } + + _LIBCPP_HIDE_FROM_ABI constexpr _Err&& error() && noexcept { + _LIBCPP_ASSERT(!__has_val_, "expected::error requires the expected to contain an error"); + return std::move(__union_.__unex_); + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr _Tp value_or(_Up&& __v) const& { + static_assert(is_copy_constructible_v<_Tp>, "value_type has to be copy constructible"); + static_assert(is_convertible_v<_Up, _Tp>, "argument has to be convertible to value_type"); + return __has_val_ ? __union_.__val_ : static_cast<_Tp>(std::forward<_Up>(__v)); + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr _Tp value_or(_Up&& __v) && { + static_assert(is_move_constructible_v<_Tp>, "value_type has to be move constructible"); + static_assert(is_convertible_v<_Up, _Tp>, "argument has to be convertible to value_type"); + return __has_val_ ? std::move(__union_.__val_) : static_cast<_Tp>(std::forward<_Up>(__v)); + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr _Err error_or(_Up&& __error) const& { + static_assert(is_copy_constructible_v<_Err>, "error_type has to be copy constructible"); + static_assert(is_convertible_v<_Up, _Err>, "argument has to be convertible to error_type"); + if (has_value()) + return std::forward<_Up>(__error); + return error(); + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr _Err error_or(_Up&& __error) && { + static_assert(is_move_constructible_v<_Err>, "error_type has to be move constructible"); + static_assert(is_convertible_v<_Up, _Err>, "argument has to be convertible to error_type"); + if (has_value()) + return std::forward<_Up>(__error); + return std::move(error()); + } + + // [expected.void.monadic], monadic + template + requires is_constructible_v<_Err, _Err&> + _LIBCPP_HIDE_FROM_ABI constexpr auto and_then(_Func&& __f) & { + using _Up = remove_cvref_t>; + static_assert(__is_std_expected<_Up>::value, "The result of f(value()) must be a specialization of std::expected"); + static_assert(is_same_v, + "The result of f(value()) must have the same error_type as this expected"); + if (has_value()) { + return std::invoke(std::forward<_Func>(__f), value()); + } + return _Up(unexpect, error()); + } + + template + requires is_constructible_v<_Err, const _Err&> + _LIBCPP_HIDE_FROM_ABI constexpr auto and_then(_Func&& __f) const& { + using _Up = remove_cvref_t>; + static_assert(__is_std_expected<_Up>::value, "The result of f(value()) must be a specialization of std::expected"); + static_assert(is_same_v, + "The result of f(value()) must have the same error_type as this expected"); + if (has_value()) { + return std::invoke(std::forward<_Func>(__f), value()); + } + return _Up(unexpect, error()); + } + + template + requires is_constructible_v<_Err, _Err&&> + _LIBCPP_HIDE_FROM_ABI constexpr auto and_then(_Func&& __f) && { + using _Up = remove_cvref_t>; + static_assert( + __is_std_expected<_Up>::value, "The result of f(std::move(value())) must be a specialization of std::expected"); + static_assert(is_same_v, + "The result of f(std::move(value())) must have the same error_type as this expected"); + if (has_value()) { + return std::invoke(std::forward<_Func>(__f), std::move(value())); + } + return _Up(unexpect, std::move(error())); + } + + template + requires is_constructible_v<_Err, const _Err&&> + _LIBCPP_HIDE_FROM_ABI constexpr auto and_then(_Func&& __f) const&& { + using _Up = remove_cvref_t>; + static_assert( + __is_std_expected<_Up>::value, "The result of f(std::move(value())) must be a specialization of std::expected"); + static_assert(is_same_v, + "The result of f(std::move(value())) must have the same error_type as this expected"); + if (has_value()) { + return std::invoke(std::forward<_Func>(__f), std::move(value())); + } + return _Up(unexpect, std::move(error())); + } + + template + requires is_constructible_v<_Tp, _Tp&> + _LIBCPP_HIDE_FROM_ABI constexpr auto or_else(_Func&& __f) & { + using _Gp = remove_cvref_t>; + static_assert(__is_std_expected<_Gp>::value, "The result of f(error()) must be a specialization of std::expected"); + static_assert(is_same_v, + "The result of f(error()) must have the same value_type as this expected"); + if (has_value()) { + return _Gp(in_place, value()); + } + return std::invoke(std::forward<_Func>(__f), error()); + } + + template + requires is_constructible_v<_Tp, const _Tp&> + _LIBCPP_HIDE_FROM_ABI constexpr auto or_else(_Func&& __f) const& { + using _Gp = remove_cvref_t>; + static_assert(__is_std_expected<_Gp>::value, "The result of f(error()) must be a specialization of std::expected"); + static_assert(is_same_v, + "The result of f(error()) must have the same value_type as this expected"); + if (has_value()) { + return _Gp(in_place, value()); + } + return std::invoke(std::forward<_Func>(__f), error()); + } + + template + requires is_constructible_v<_Tp, _Tp&&> + _LIBCPP_HIDE_FROM_ABI constexpr auto or_else(_Func&& __f) && { + using _Gp = remove_cvref_t>; + static_assert( + __is_std_expected<_Gp>::value, "The result of f(std::move(error())) must be a specialization of std::expected"); + static_assert(is_same_v, + "The result of f(std::move(error())) must have the same value_type as this expected"); + if (has_value()) { + return _Gp(in_place, std::move(value())); + } + return std::invoke(std::forward<_Func>(__f), std::move(error())); + } + + template + requires is_constructible_v<_Tp, const _Tp&&> + _LIBCPP_HIDE_FROM_ABI constexpr auto or_else(_Func&& __f) const&& { + using _Gp = remove_cvref_t>; + static_assert( + __is_std_expected<_Gp>::value, "The result of f(std::move(error())) must be a specialization of std::expected"); + static_assert(is_same_v, + "The result of f(std::move(error())) must have the same value_type as this expected"); + if (has_value()) { + return _Gp(in_place, std::move(value())); + } + return std::invoke(std::forward<_Func>(__f), std::move(error())); + } + + template + requires is_constructible_v<_Err, _Err&> + _LIBCPP_HIDE_FROM_ABI constexpr auto transform(_Func&& __f) & { + using _Up = remove_cv_t>; + if (!has_value()) { + return expected<_Up, _Err>(unexpect, error()); + } + if constexpr (!is_void_v<_Up>) { + return expected<_Up, _Err>(__expected_construct_in_place_from_invoke_tag{}, std::forward<_Func>(__f), value()); + } else { + std::invoke(std::forward<_Func>(__f), value()); + return expected<_Up, _Err>(); + } + } + + template + requires is_constructible_v<_Err, const _Err&> + _LIBCPP_HIDE_FROM_ABI constexpr auto transform(_Func&& __f) const& { + using _Up = remove_cv_t>; + if (!has_value()) { + return expected<_Up, _Err>(unexpect, error()); + } + if constexpr (!is_void_v<_Up>) { + return expected<_Up, _Err>(__expected_construct_in_place_from_invoke_tag{}, std::forward<_Func>(__f), value()); + } else { + std::invoke(std::forward<_Func>(__f), value()); + return expected<_Up, _Err>(); + } + } + + template + requires is_constructible_v<_Err, _Err&&> + _LIBCPP_HIDE_FROM_ABI constexpr auto transform(_Func&& __f) && { + using _Up = remove_cv_t>; + if (!has_value()) { + return expected<_Up, _Err>(unexpect, std::move(error())); + } + if constexpr (!is_void_v<_Up>) { + return expected<_Up, _Err>( + __expected_construct_in_place_from_invoke_tag{}, std::forward<_Func>(__f), std::move(value())); + } else { + std::invoke(std::forward<_Func>(__f), std::move(value())); + return expected<_Up, _Err>(); + } + } + + template + requires is_constructible_v<_Err, const _Err&&> + _LIBCPP_HIDE_FROM_ABI constexpr auto transform(_Func&& __f) const&& { + using _Up = remove_cv_t>; + if (!has_value()) { + return expected<_Up, _Err>(unexpect, std::move(error())); + } + if constexpr (!is_void_v<_Up>) { + return expected<_Up, _Err>( + __expected_construct_in_place_from_invoke_tag{}, std::forward<_Func>(__f), std::move(value())); + } else { + std::invoke(std::forward<_Func>(__f), std::move(value())); + return expected<_Up, _Err>(); + } + } + + template + requires is_constructible_v<_Tp, _Tp&> + _LIBCPP_HIDE_FROM_ABI constexpr auto transform_error(_Func&& __f) & { + using _Gp = remove_cv_t>; + static_assert(__valid_std_unexpected<_Gp>::value, + "The result of f(error()) must be a valid template argument for unexpected"); + if (has_value()) { + return expected<_Tp, _Gp>(in_place, value()); + } + return expected<_Tp, _Gp>(__expected_construct_unexpected_from_invoke_tag{}, std::forward<_Func>(__f), error()); + } + + template + requires is_constructible_v<_Tp, const _Tp&> + _LIBCPP_HIDE_FROM_ABI constexpr auto transform_error(_Func&& __f) const& { + using _Gp = remove_cv_t>; + static_assert(__valid_std_unexpected<_Gp>::value, + "The result of f(error()) must be a valid template argument for unexpected"); + if (has_value()) { + return expected<_Tp, _Gp>(in_place, value()); + } + return expected<_Tp, _Gp>(__expected_construct_unexpected_from_invoke_tag{}, std::forward<_Func>(__f), error()); + } + + template + requires is_constructible_v<_Tp, _Tp&&> + _LIBCPP_HIDE_FROM_ABI constexpr auto transform_error(_Func&& __f) && { + using _Gp = remove_cv_t>; + static_assert(__valid_std_unexpected<_Gp>::value, + "The result of f(std::move(error())) must be a valid template argument for unexpected"); + if (has_value()) { + return expected<_Tp, _Gp>(in_place, std::move(value())); + } + return expected<_Tp, _Gp>( + __expected_construct_unexpected_from_invoke_tag{}, std::forward<_Func>(__f), std::move(error())); + } + + template + requires is_constructible_v<_Tp, const _Tp&&> + _LIBCPP_HIDE_FROM_ABI constexpr auto transform_error(_Func&& __f) const&& { + using _Gp = remove_cv_t>; + static_assert(__valid_std_unexpected<_Gp>::value, + "The result of f(std::move(error())) must be a valid template argument for unexpected"); + if (has_value()) { + return expected<_Tp, _Gp>(in_place, std::move(value())); + } + return expected<_Tp, _Gp>( + __expected_construct_unexpected_from_invoke_tag{}, std::forward<_Func>(__f), std::move(error())); + } + + // [expected.object.eq], equality operators + template + requires(!is_void_v<_T2>) + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator==(const expected& __x, const expected<_T2, _E2>& __y) { + if (__x.__has_val_ != __y.__has_val_) { + return false; + } else { + if (__x.__has_val_) { + return __x.__union_.__val_ == __y.__union_.__val_; + } else { + return __x.__union_.__unex_ == __y.__union_.__unex_; + } + } + } + + template + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator==(const expected& __x, const _T2& __v) { + return __x.__has_val_ && static_cast(__x.__union_.__val_ == __v); + } + + template + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator==(const expected& __x, const unexpected<_E2>& __e) { + return !__x.__has_val_ && static_cast(__x.__union_.__unex_ == __e.error()); + } + +private: + struct __empty_t {}; + + template + union __union_t { + _LIBCPP_HIDE_FROM_ABI constexpr __union_t() {} + + template + _LIBCPP_HIDE_FROM_ABI constexpr explicit __union_t( + std::__expected_construct_in_place_from_invoke_tag, _Func&& __f, _Args&&... __args) + : __val_(std::invoke(std::forward<_Func>(__f), std::forward<_Args>(__args)...)) {} + + template + _LIBCPP_HIDE_FROM_ABI constexpr explicit __union_t( + std::__expected_construct_unexpected_from_invoke_tag, _Func&& __f, _Args&&... __args) + : __unex_(std::invoke(std::forward<_Func>(__f), std::forward<_Args>(__args)...)) {} + + _LIBCPP_HIDE_FROM_ABI constexpr ~__union_t() + requires(is_trivially_destructible_v<_ValueType> && is_trivially_destructible_v<_ErrorType>) + = default; + + // the expected's destructor handles this + _LIBCPP_HIDE_FROM_ABI constexpr ~__union_t() {} + + _ValueType __val_; + _ErrorType __unex_; + }; + + // use named union because [[no_unique_address]] cannot be applied to an unnamed union, + // also guaranteed elision into a potentially-overlapping subobject is unsettled (and + // it's not clear that it's implementable, given that the function is allowed to clobber + // the tail padding) - see https://github.com/itanium-cxx-abi/cxx-abi/issues/107. + template + requires(is_trivially_move_constructible_v<_ValueType> && is_trivially_move_constructible_v<_ErrorType>) + union __union_t<_ValueType, _ErrorType> { + _LIBCPP_HIDE_FROM_ABI constexpr __union_t() : __empty_() {} + + template + _LIBCPP_HIDE_FROM_ABI constexpr explicit __union_t( + std::__expected_construct_in_place_from_invoke_tag, _Func&& __f, _Args&&... __args) + : __val_(std::invoke(std::forward<_Func>(__f), std::forward<_Args>(__args)...)) {} + + template + _LIBCPP_HIDE_FROM_ABI constexpr explicit __union_t( + std::__expected_construct_unexpected_from_invoke_tag, _Func&& __f, _Args&&... __args) + : __unex_(std::invoke(std::forward<_Func>(__f), std::forward<_Args>(__args)...)) {} + + _LIBCPP_HIDE_FROM_ABI constexpr ~__union_t() + requires(is_trivially_destructible_v<_ValueType> && is_trivially_destructible_v<_ErrorType>) + = default; + + // the expected's destructor handles this + _LIBCPP_HIDE_FROM_ABI constexpr ~__union_t() + requires(!is_trivially_destructible_v<_ValueType> || !is_trivially_destructible_v<_ErrorType>) + {} + + _LIBCPP_NO_UNIQUE_ADDRESS __empty_t __empty_; + _LIBCPP_NO_UNIQUE_ADDRESS _ValueType __val_; + _LIBCPP_NO_UNIQUE_ADDRESS _ErrorType __unex_; + }; + + _LIBCPP_NO_UNIQUE_ADDRESS __union_t<_Tp, _Err> __union_; + bool __has_val_; +}; + +template + requires is_void_v<_Tp> +class expected<_Tp, _Err> { + static_assert(__valid_std_unexpected<_Err>::value, + "[expected.void.general] A program that instantiates expected with a E that is not a " + "valid argument for unexpected is ill-formed"); + + template + friend class expected; + + template + using __can_convert = + _And< is_void<_Up>, + is_constructible<_Err, _OtherErrQual>, + _Not, expected<_Up, _OtherErr>&>>, + _Not, expected<_Up, _OtherErr>>>, + _Not, const expected<_Up, _OtherErr>&>>, + _Not, const expected<_Up, _OtherErr>>>>; + +public: + using value_type = _Tp; + using error_type = _Err; + using unexpected_type = unexpected<_Err>; + + template + using rebind = expected<_Up, error_type>; + + // [expected.void.ctor], constructors + _LIBCPP_HIDE_FROM_ABI constexpr expected() noexcept : __has_val_(true) {} + + _LIBCPP_HIDE_FROM_ABI constexpr expected(const expected&) = delete; + + _LIBCPP_HIDE_FROM_ABI constexpr expected(const expected&) + requires(is_copy_constructible_v<_Err> && is_trivially_copy_constructible_v<_Err>) + = default; + + _LIBCPP_HIDE_FROM_ABI constexpr expected(const expected& __rhs) + noexcept(is_nothrow_copy_constructible_v<_Err>) // strengthened + requires(is_copy_constructible_v<_Err> && !is_trivially_copy_constructible_v<_Err>) + : __has_val_(__rhs.__has_val_) { + if (!__rhs.__has_val_) { + std::construct_at(std::addressof(__union_.__unex_), __rhs.__union_.__unex_); + } + } + + _LIBCPP_HIDE_FROM_ABI constexpr expected(expected&&) + requires(is_move_constructible_v<_Err> && is_trivially_move_constructible_v<_Err>) + = default; + + _LIBCPP_HIDE_FROM_ABI constexpr expected(expected&& __rhs) + noexcept(is_nothrow_move_constructible_v<_Err>) + requires(is_move_constructible_v<_Err> && !is_trivially_move_constructible_v<_Err>) + : __has_val_(__rhs.__has_val_) { + if (!__rhs.__has_val_) { + std::construct_at(std::addressof(__union_.__unex_), std::move(__rhs.__union_.__unex_)); + } + } + + template + requires __can_convert<_Up, _OtherErr, const _OtherErr&>::value + _LIBCPP_HIDE_FROM_ABI constexpr explicit(!is_convertible_v) + expected(const expected<_Up, _OtherErr>& __rhs) + noexcept(is_nothrow_constructible_v<_Err, const _OtherErr&>) // strengthened + : __has_val_(__rhs.__has_val_) { + if (!__rhs.__has_val_) { + std::construct_at(std::addressof(__union_.__unex_), __rhs.__union_.__unex_); + } + } + + template + requires __can_convert<_Up, _OtherErr, _OtherErr>::value + _LIBCPP_HIDE_FROM_ABI constexpr explicit(!is_convertible_v<_OtherErr, _Err>) + expected(expected<_Up, _OtherErr>&& __rhs) + noexcept(is_nothrow_constructible_v<_Err, _OtherErr>) // strengthened + : __has_val_(__rhs.__has_val_) { + if (!__rhs.__has_val_) { + std::construct_at(std::addressof(__union_.__unex_), std::move(__rhs.__union_.__unex_)); + } + } + + template + requires is_constructible_v<_Err, const _OtherErr&> + _LIBCPP_HIDE_FROM_ABI constexpr explicit(!is_convertible_v) + expected(const unexpected<_OtherErr>& __unex) + noexcept(is_nothrow_constructible_v<_Err, const _OtherErr&>) // strengthened + : __has_val_(false) { + std::construct_at(std::addressof(__union_.__unex_), __unex.error()); + } + + template + requires is_constructible_v<_Err, _OtherErr> + _LIBCPP_HIDE_FROM_ABI constexpr explicit(!is_convertible_v<_OtherErr, _Err>) + expected(unexpected<_OtherErr>&& __unex) + noexcept(is_nothrow_constructible_v<_Err, _OtherErr>) // strengthened + : __has_val_(false) { + std::construct_at(std::addressof(__union_.__unex_), std::move(__unex.error())); + } + + _LIBCPP_HIDE_FROM_ABI constexpr explicit expected(in_place_t) noexcept : __has_val_(true) {} + + template + requires is_constructible_v<_Err, _Args...> + _LIBCPP_HIDE_FROM_ABI constexpr explicit expected(unexpect_t, _Args&&... __args) + noexcept(is_nothrow_constructible_v<_Err, _Args...>) // strengthened + : __has_val_(false) { + std::construct_at(std::addressof(__union_.__unex_), std::forward<_Args>(__args)...); + } + + template + requires is_constructible_v< _Err, initializer_list<_Up>&, _Args... > + _LIBCPP_HIDE_FROM_ABI constexpr explicit expected(unexpect_t, initializer_list<_Up> __il, _Args&&... __args) + noexcept(is_nothrow_constructible_v<_Err, initializer_list<_Up>&, _Args...>) // strengthened + : __has_val_(false) { + std::construct_at(std::addressof(__union_.__unex_), __il, std::forward<_Args>(__args)...); + } + +private: + template + _LIBCPP_HIDE_FROM_ABI constexpr explicit expected(__expected_construct_in_place_from_invoke_tag, _Func&& __f) + : __has_val_(true) { + std::invoke(std::forward<_Func>(__f)); + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr explicit expected( + __expected_construct_unexpected_from_invoke_tag __tag, _Func&& __f, _Args&&... __args) + : __union_(__tag, std::forward<_Func>(__f), std::forward<_Args>(__args)...), __has_val_(false) {} + +public: + // [expected.void.dtor], destructor + + _LIBCPP_HIDE_FROM_ABI constexpr ~expected() + requires is_trivially_destructible_v<_Err> + = default; + + _LIBCPP_HIDE_FROM_ABI constexpr ~expected() + requires(!is_trivially_destructible_v<_Err>) + { + if (!__has_val_) { + std::destroy_at(std::addressof(__union_.__unex_)); + } + } + + // [expected.void.assign], assignment + + _LIBCPP_HIDE_FROM_ABI constexpr expected& operator=(const expected&) = delete; + + _LIBCPP_HIDE_FROM_ABI constexpr expected& operator=(const expected& __rhs) + noexcept(is_nothrow_copy_assignable_v<_Err> && is_nothrow_copy_constructible_v<_Err>) // strengthened + requires(is_copy_assignable_v<_Err> && is_copy_constructible_v<_Err>) + { + if (__has_val_) { + if (!__rhs.__has_val_) { + std::construct_at(std::addressof(__union_.__unex_), __rhs.__union_.__unex_); + __has_val_ = false; + } + } else { + if (__rhs.__has_val_) { + std::destroy_at(std::addressof(__union_.__unex_)); + __has_val_ = true; + } else { + __union_.__unex_ = __rhs.__union_.__unex_; + } + } + return *this; + } + + _LIBCPP_HIDE_FROM_ABI constexpr expected& operator=(expected&&) = delete; + + _LIBCPP_HIDE_FROM_ABI constexpr expected& operator=(expected&& __rhs) + noexcept(is_nothrow_move_assignable_v<_Err> && + is_nothrow_move_constructible_v<_Err>) + requires(is_move_assignable_v<_Err> && + is_move_constructible_v<_Err>) + { + if (__has_val_) { + if (!__rhs.__has_val_) { + std::construct_at(std::addressof(__union_.__unex_), std::move(__rhs.__union_.__unex_)); + __has_val_ = false; + } + } else { + if (__rhs.__has_val_) { + std::destroy_at(std::addressof(__union_.__unex_)); + __has_val_ = true; + } else { + __union_.__unex_ = std::move(__rhs.__union_.__unex_); + } + } + return *this; + } + + template + requires(is_constructible_v<_Err, const _OtherErr&> && is_assignable_v<_Err&, const _OtherErr&>) + _LIBCPP_HIDE_FROM_ABI constexpr expected& operator=(const unexpected<_OtherErr>& __un) { + if (__has_val_) { + std::construct_at(std::addressof(__union_.__unex_), __un.error()); + __has_val_ = false; + } else { + __union_.__unex_ = __un.error(); + } + return *this; + } + + template + requires(is_constructible_v<_Err, _OtherErr> && is_assignable_v<_Err&, _OtherErr>) + _LIBCPP_HIDE_FROM_ABI constexpr expected& operator=(unexpected<_OtherErr>&& __un) { + if (__has_val_) { + std::construct_at(std::addressof(__union_.__unex_), std::move(__un.error())); + __has_val_ = false; + } else { + __union_.__unex_ = std::move(__un.error()); + } + return *this; + } + + _LIBCPP_HIDE_FROM_ABI constexpr void emplace() noexcept { + if (!__has_val_) { + std::destroy_at(std::addressof(__union_.__unex_)); + __has_val_ = true; + } + } + + // [expected.void.swap], swap + _LIBCPP_HIDE_FROM_ABI constexpr void swap(expected& __rhs) + noexcept(is_nothrow_move_constructible_v<_Err> && is_nothrow_swappable_v<_Err>) + requires(is_swappable_v<_Err> && is_move_constructible_v<_Err>) + { + auto __swap_val_unex_impl = [&](expected& __with_val, expected& __with_err) { + std::construct_at(std::addressof(__with_val.__union_.__unex_), std::move(__with_err.__union_.__unex_)); + std::destroy_at(std::addressof(__with_err.__union_.__unex_)); + __with_val.__has_val_ = false; + __with_err.__has_val_ = true; + }; + + if (__has_val_) { + if (!__rhs.__has_val_) { + __swap_val_unex_impl(*this, __rhs); + } + } else { + if (__rhs.__has_val_) { + __swap_val_unex_impl(__rhs, *this); + } else { + using std::swap; + swap(__union_.__unex_, __rhs.__union_.__unex_); + } + } + } + + _LIBCPP_HIDE_FROM_ABI friend constexpr void swap(expected& __x, expected& __y) + noexcept(noexcept(__x.swap(__y))) + requires requires { __x.swap(__y); } + { + __x.swap(__y); + } + + // [expected.void.obs], observers + _LIBCPP_HIDE_FROM_ABI constexpr explicit operator bool() const noexcept { return __has_val_; } + + _LIBCPP_HIDE_FROM_ABI constexpr bool has_value() const noexcept { return __has_val_; } + + _LIBCPP_HIDE_FROM_ABI constexpr void operator*() const noexcept { + _LIBCPP_ASSERT(__has_val_, "expected::operator* requires the expected to contain a value"); + } + + _LIBCPP_HIDE_FROM_ABI constexpr void value() const& { + if (!__has_val_) { + std::__throw_bad_expected_access<_Err>(__union_.__unex_); + } + } + + _LIBCPP_HIDE_FROM_ABI constexpr void value() && { + if (!__has_val_) { + std::__throw_bad_expected_access<_Err>(std::move(__union_.__unex_)); + } + } + + _LIBCPP_HIDE_FROM_ABI constexpr const _Err& error() const& noexcept { + _LIBCPP_ASSERT(!__has_val_, "expected::error requires the expected to contain an error"); + return __union_.__unex_; + } + + _LIBCPP_HIDE_FROM_ABI constexpr _Err& error() & noexcept { + _LIBCPP_ASSERT(!__has_val_, "expected::error requires the expected to contain an error"); + return __union_.__unex_; + } + + _LIBCPP_HIDE_FROM_ABI constexpr const _Err&& error() const&& noexcept { + _LIBCPP_ASSERT(!__has_val_, "expected::error requires the expected to contain an error"); + return std::move(__union_.__unex_); + } + + _LIBCPP_HIDE_FROM_ABI constexpr _Err&& error() && noexcept { + _LIBCPP_ASSERT(!__has_val_, "expected::error requires the expected to contain an error"); + return std::move(__union_.__unex_); + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr _Err error_or(_Up&& __error) const& { + static_assert(is_copy_constructible_v<_Err>, "error_type has to be copy constructible"); + static_assert(is_convertible_v<_Up, _Err>, "argument has to be convertible to error_type"); + if (has_value()) { + return std::forward<_Up>(__error); + } + return error(); + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr _Err error_or(_Up&& __error) && { + static_assert(is_move_constructible_v<_Err>, "error_type has to be move constructible"); + static_assert(is_convertible_v<_Up, _Err>, "argument has to be convertible to error_type"); + if (has_value()) { + return std::forward<_Up>(__error); + } + return std::move(error()); + } + + // [expected.void.monadic], monadic + template + requires is_constructible_v<_Err, _Err&> + _LIBCPP_HIDE_FROM_ABI constexpr auto and_then(_Func&& __f) & { + using _Up = remove_cvref_t>; + static_assert(__is_std_expected<_Up>::value, "The result of f() must be a specialization of std::expected"); + static_assert( + is_same_v, "The result of f() must have the same error_type as this expected"); + if (has_value()) { + return std::invoke(std::forward<_Func>(__f)); + } + return _Up(unexpect, error()); + } + + template + requires is_constructible_v<_Err, const _Err&> + _LIBCPP_HIDE_FROM_ABI constexpr auto and_then(_Func&& __f) const& { + using _Up = remove_cvref_t>; + static_assert(__is_std_expected<_Up>::value, "The result of f() must be a specialization of std::expected"); + static_assert( + is_same_v, "The result of f() must have the same error_type as this expected"); + if (has_value()) { + return std::invoke(std::forward<_Func>(__f)); + } + return _Up(unexpect, error()); + } + + template + requires is_constructible_v<_Err, _Err&&> + _LIBCPP_HIDE_FROM_ABI constexpr auto and_then(_Func&& __f) && { + using _Up = remove_cvref_t>; + static_assert(__is_std_expected<_Up>::value, "The result of f() must be a specialization of std::expected"); + static_assert( + is_same_v, "The result of f() must have the same error_type as this expected"); + if (has_value()) { + return std::invoke(std::forward<_Func>(__f)); + } + return _Up(unexpect, std::move(error())); + } + + template + requires is_constructible_v<_Err, const _Err&&> + _LIBCPP_HIDE_FROM_ABI constexpr auto and_then(_Func&& __f) const&& { + using _Up = remove_cvref_t>; + static_assert(__is_std_expected<_Up>::value, "The result of f() must be a specialization of std::expected"); + static_assert( + is_same_v, "The result of f() must have the same error_type as this expected"); + if (has_value()) { + return std::invoke(std::forward<_Func>(__f)); + } + return _Up(unexpect, std::move(error())); + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr auto or_else(_Func&& __f) & { + using _Gp = remove_cvref_t>; + static_assert(__is_std_expected<_Gp>::value, "The result of f(error()) must be a specialization of std::expected"); + static_assert(is_same_v, + "The result of f(error()) must have the same value_type as this expected"); + if (has_value()) { + return _Gp(); + } + return std::invoke(std::forward<_Func>(__f), error()); + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr auto or_else(_Func&& __f) const& { + using _Gp = remove_cvref_t>; + static_assert(__is_std_expected<_Gp>::value, "The result of f(error()) must be a specialization of std::expected"); + static_assert(is_same_v, + "The result of f(error()) must have the same value_type as this expected"); + if (has_value()) { + return _Gp(); + } + return std::invoke(std::forward<_Func>(__f), error()); + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr auto or_else(_Func&& __f) && { + using _Gp = remove_cvref_t>; + static_assert(__is_std_expected<_Gp>::value, + "The result of f(std::move(error())) must be a specialization of std::expected"); + static_assert(is_same_v, + "The result of f(std::move(error())) must have the same value_type as this expected"); + if (has_value()) { + return _Gp(); + } + return std::invoke(std::forward<_Func>(__f), std::move(error())); + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr auto or_else(_Func&& __f) const&& { + using _Gp = remove_cvref_t>; + static_assert(__is_std_expected<_Gp>::value, + "The result of f(std::move(error())) must be a specialization of std::expected"); + static_assert(is_same_v, + "The result of f(std::move(error())) must have the same value_type as this expected"); + if (has_value()) { + return _Gp(); + } + return std::invoke(std::forward<_Func>(__f), std::move(error())); + } + + template + requires is_constructible_v<_Err, _Err&> + _LIBCPP_HIDE_FROM_ABI constexpr auto transform(_Func&& __f) & { + using _Up = remove_cv_t>; + if (!has_value()) { + return expected<_Up, _Err>(unexpect, error()); + } + if constexpr (!is_void_v<_Up>) { + return expected<_Up, _Err>(__expected_construct_in_place_from_invoke_tag{}, std::forward<_Func>(__f)); + } else { + std::invoke(std::forward<_Func>(__f)); + return expected<_Up, _Err>(); + } + } + + template + requires is_constructible_v<_Err, const _Err&> + _LIBCPP_HIDE_FROM_ABI constexpr auto transform(_Func&& __f) const& { + using _Up = remove_cv_t>; + if (!has_value()) { + return expected<_Up, _Err>(unexpect, error()); + } + if constexpr (!is_void_v<_Up>) { + return expected<_Up, _Err>(__expected_construct_in_place_from_invoke_tag{}, std::forward<_Func>(__f)); + } else { + std::invoke(std::forward<_Func>(__f)); + return expected<_Up, _Err>(); + } + } + + template + requires is_constructible_v<_Err, _Err&&> + _LIBCPP_HIDE_FROM_ABI constexpr auto transform(_Func&& __f) && { + using _Up = remove_cv_t>; + if (!has_value()) { + return expected<_Up, _Err>(unexpect, std::move(error())); + } + if constexpr (!is_void_v<_Up>) { + return expected<_Up, _Err>(__expected_construct_in_place_from_invoke_tag{}, std::forward<_Func>(__f)); + } else { + std::invoke(std::forward<_Func>(__f)); + return expected<_Up, _Err>(); + } + } + + template + requires is_constructible_v<_Err, const _Err&&> + _LIBCPP_HIDE_FROM_ABI constexpr auto transform(_Func&& __f) const&& { + using _Up = remove_cv_t>; + if (!has_value()) { + return expected<_Up, _Err>(unexpect, std::move(error())); + } + if constexpr (!is_void_v<_Up>) { + return expected<_Up, _Err>(__expected_construct_in_place_from_invoke_tag{}, std::forward<_Func>(__f)); + } else { + std::invoke(std::forward<_Func>(__f)); + return expected<_Up, _Err>(); + } + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr auto transform_error(_Func&& __f) & { + using _Gp = remove_cv_t>; + static_assert(__valid_std_unexpected<_Gp>::value, + "The result of f(error()) must be a valid template argument for unexpected"); + if (has_value()) { + return expected<_Tp, _Gp>(); + } + return expected<_Tp, _Gp>(__expected_construct_unexpected_from_invoke_tag{}, std::forward<_Func>(__f), error()); + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr auto transform_error(_Func&& __f) const& { + using _Gp = remove_cv_t>; + static_assert(__valid_std_unexpected<_Gp>::value, + "The result of f(error()) must be a valid template argument for unexpected"); + if (has_value()) { + return expected<_Tp, _Gp>(); + } + return expected<_Tp, _Gp>(__expected_construct_unexpected_from_invoke_tag{}, std::forward<_Func>(__f), error()); + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr auto transform_error(_Func&& __f) && { + using _Gp = remove_cv_t>; + static_assert(__valid_std_unexpected<_Gp>::value, + "The result of f(std::move(error())) must be a valid template argument for unexpected"); + if (has_value()) { + return expected<_Tp, _Gp>(); + } + return expected<_Tp, _Gp>( + __expected_construct_unexpected_from_invoke_tag{}, std::forward<_Func>(__f), std::move(error())); + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr auto transform_error(_Func&& __f) const&& { + using _Gp = remove_cv_t>; + static_assert(__valid_std_unexpected<_Gp>::value, + "The result of f(std::move(error())) must be a valid template argument for unexpected"); + if (has_value()) { + return expected<_Tp, _Gp>(); + } + return expected<_Tp, _Gp>( + __expected_construct_unexpected_from_invoke_tag{}, std::forward<_Func>(__f), std::move(error())); + } + + // [expected.void.eq], equality operators + template + requires is_void_v<_T2> + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator==(const expected& __x, const expected<_T2, _E2>& __y) { + if (__x.__has_val_ != __y.__has_val_) { + return false; + } else { + return __x.__has_val_ || static_cast(__x.__union_.__unex_ == __y.__union_.__unex_); + } + } + + template + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator==(const expected& __x, const unexpected<_E2>& __y) { + return !__x.__has_val_ && static_cast(__x.__union_.__unex_ == __y.error()); + } + +private: + struct __empty_t {}; + + template + union __union_t { + _LIBCPP_HIDE_FROM_ABI constexpr __union_t() : __empty_() {} + + template + _LIBCPP_HIDE_FROM_ABI constexpr explicit __union_t( + __expected_construct_unexpected_from_invoke_tag, _Func&& __f, _Args&&... __args) + : __unex_(std::invoke(std::forward<_Func>(__f), std::forward<_Args>(__args)...)) {} + + _LIBCPP_HIDE_FROM_ABI constexpr ~__union_t() + requires(is_trivially_destructible_v<_ErrorType>) + = default; + + // the expected's destructor handles this + _LIBCPP_HIDE_FROM_ABI constexpr ~__union_t() {} + + __empty_t __empty_; + _ErrorType __unex_; + }; + + // use named union because [[no_unique_address]] cannot be applied to an unnamed union, + // also guaranteed elision into a potentially-overlapping subobject is unsettled (and + // it's not clear that it's implementable, given that the function is allowed to clobber + // the tail padding) - see https://github.com/itanium-cxx-abi/cxx-abi/issues/107. + template + requires is_trivially_move_constructible_v<_ErrorType> + union __union_t<_ErrorType> { + _LIBCPP_HIDE_FROM_ABI constexpr __union_t() : __empty_() {} + + template + _LIBCPP_HIDE_FROM_ABI constexpr explicit __union_t( + __expected_construct_unexpected_from_invoke_tag, _Func&& __f, _Args&&... __args) + : __unex_(std::invoke(std::forward<_Func>(__f), std::forward<_Args>(__args)...)) {} + + _LIBCPP_HIDE_FROM_ABI constexpr ~__union_t() + requires(is_trivially_destructible_v<_ErrorType>) + = default; + + // the expected's destructor handles this + _LIBCPP_HIDE_FROM_ABI constexpr ~__union_t() + requires(!is_trivially_destructible_v<_ErrorType>) + {} + + _LIBCPP_NO_UNIQUE_ADDRESS __empty_t __empty_; + _LIBCPP_NO_UNIQUE_ADDRESS _ErrorType __unex_; + }; + + _LIBCPP_NO_UNIQUE_ADDRESS __union_t<_Err> __union_; + bool __has_val_; +}; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 23 + +#endif // _LIBCPP___EXPECTED_EXPECTED_H diff --git a/third_party/libcxx/__expected/unexpect.h b/third_party/libcxx/__expected/unexpect.h new file mode 100644 index 000000000..df52787d3 --- /dev/null +++ b/third_party/libcxx/__expected/unexpect.h @@ -0,0 +1,32 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +#ifndef _LIBCPP___EXPECTED_UNEXPECT_H +#define _LIBCPP___EXPECTED_UNEXPECT_H + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 23 + +_LIBCPP_BEGIN_NAMESPACE_STD + +struct unexpect_t { + explicit unexpect_t() = default; +}; + +inline constexpr unexpect_t unexpect{}; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 23 + +#endif // _LIBCPP___EXPECTED_UNEXPECT_H diff --git a/third_party/libcxx/__expected/unexpected.h b/third_party/libcxx/__expected/unexpected.h new file mode 100644 index 000000000..075963a84 --- /dev/null +++ b/third_party/libcxx/__expected/unexpected.h @@ -0,0 +1,122 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +#ifndef _LIBCPP___EXPECTED_UNEXPECTED_H +#define _LIBCPP___EXPECTED_UNEXPECTED_H + +#include <__config> +#include <__type_traits/conjunction.h> +#include <__type_traits/is_array.h> +#include <__type_traits/is_const.h> +#include <__type_traits/is_constructible.h> +#include <__type_traits/is_nothrow_constructible.h> +#include <__type_traits/is_object.h> +#include <__type_traits/is_same.h> +#include <__type_traits/is_swappable.h> +#include <__type_traits/is_volatile.h> +#include <__type_traits/negation.h> +#include <__type_traits/remove_cvref.h> +#include <__utility/forward.h> +#include <__utility/in_place.h> +#include <__utility/move.h> +#include <__utility/swap.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 23 + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +class unexpected; + +template +struct __is_std_unexpected : false_type {}; + +template +struct __is_std_unexpected> : true_type {}; + +template +using __valid_std_unexpected = _BoolConstant< // + is_object_v<_Tp> && // + !is_array_v<_Tp> && // + !__is_std_unexpected<_Tp>::value && // + !is_const_v<_Tp> && // + !is_volatile_v<_Tp> // + >; + +template +class unexpected { + static_assert(__valid_std_unexpected<_Err>::value, + "[expected.un.general] states a program that instantiates std::unexpected for a non-object type, an " + "array type, a specialization of unexpected, or a cv-qualified type is ill-formed."); + +public: + _LIBCPP_HIDE_FROM_ABI constexpr unexpected(const unexpected&) = default; + _LIBCPP_HIDE_FROM_ABI constexpr unexpected(unexpected&&) = default; + + template + requires(!is_same_v, unexpected> && // + !is_same_v, in_place_t> && // + is_constructible_v<_Err, _Error>) + _LIBCPP_HIDE_FROM_ABI constexpr explicit unexpected(_Error&& __error) // + noexcept(is_nothrow_constructible_v<_Err, _Error>) // strengthened + : __unex_(std::forward<_Error>(__error)) {} + + template + requires is_constructible_v<_Err, _Args...> + _LIBCPP_HIDE_FROM_ABI constexpr explicit unexpected(in_place_t, _Args&&... __args) // + noexcept(is_nothrow_constructible_v<_Err, _Args...>) // strengthened + : __unex_(std::forward<_Args>(__args)...) {} + + template + requires is_constructible_v<_Err, initializer_list<_Up>&, _Args...> + _LIBCPP_HIDE_FROM_ABI constexpr explicit unexpected(in_place_t, initializer_list<_Up> __il, _Args&&... __args) // + noexcept(is_nothrow_constructible_v<_Err, initializer_list<_Up>&, _Args...>) // strengthened + : __unex_(__il, std::forward<_Args>(__args)...) {} + + _LIBCPP_HIDE_FROM_ABI constexpr unexpected& operator=(const unexpected&) = default; + _LIBCPP_HIDE_FROM_ABI constexpr unexpected& operator=(unexpected&&) = default; + + _LIBCPP_HIDE_FROM_ABI constexpr const _Err& error() const& noexcept { return __unex_; } + _LIBCPP_HIDE_FROM_ABI constexpr _Err& error() & noexcept { return __unex_; } + _LIBCPP_HIDE_FROM_ABI constexpr const _Err&& error() const&& noexcept { return std::move(__unex_); } + _LIBCPP_HIDE_FROM_ABI constexpr _Err&& error() && noexcept { return std::move(__unex_); } + + _LIBCPP_HIDE_FROM_ABI constexpr void swap(unexpected& __other) noexcept(is_nothrow_swappable_v<_Err>) { + static_assert(is_swappable_v<_Err>, "unexpected::swap requires is_swappable_v to be true"); + using std::swap; + swap(__unex_, __other.__unex_); + } + + _LIBCPP_HIDE_FROM_ABI friend constexpr void swap(unexpected& __x, unexpected& __y) noexcept(noexcept(__x.swap(__y))) + requires is_swappable_v<_Err> + { + __x.swap(__y); + } + + template + _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator==(const unexpected& __x, const unexpected<_Err2>& __y) { + return __x.__unex_ == __y.__unex_; + } + +private: + _Err __unex_; +}; + +template +unexpected(_Err) -> unexpected<_Err>; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 23 + +#endif // _LIBCPP___EXPECTED_UNEXPECTED_H diff --git a/third_party/libcxx/__filesystem/copy_options.h b/third_party/libcxx/__filesystem/copy_options.h new file mode 100644 index 000000000..96c753581 --- /dev/null +++ b/third_party/libcxx/__filesystem/copy_options.h @@ -0,0 +1,84 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FILESYSTEM_COPY_OPTIONS_H +#define _LIBCPP___FILESYSTEM_COPY_OPTIONS_H + +#include <__availability> +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#ifndef _LIBCPP_CXX03_LANG + +_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM + +_LIBCPP_AVAILABILITY_FILESYSTEM_PUSH + +enum class _LIBCPP_ENUM_VIS copy_options : unsigned short { + none = 0, + skip_existing = 1, + overwrite_existing = 2, + update_existing = 4, + recursive = 8, + copy_symlinks = 16, + skip_symlinks = 32, + directories_only = 64, + create_symlinks = 128, + create_hard_links = 256, + __in_recursive_copy = 512, +}; + +_LIBCPP_INLINE_VISIBILITY +inline constexpr copy_options operator&(copy_options __lhs, copy_options __rhs) { + return static_cast(static_cast(__lhs) & + static_cast(__rhs)); +} + +_LIBCPP_INLINE_VISIBILITY +inline constexpr copy_options operator|(copy_options __lhs, copy_options __rhs) { + return static_cast(static_cast(__lhs) | + static_cast(__rhs)); +} + +_LIBCPP_INLINE_VISIBILITY +inline constexpr copy_options operator^(copy_options __lhs, copy_options __rhs) { + return static_cast(static_cast(__lhs) ^ + static_cast(__rhs)); +} + +_LIBCPP_INLINE_VISIBILITY +inline constexpr copy_options operator~(copy_options __lhs) { + return static_cast(~static_cast(__lhs)); +} + +_LIBCPP_INLINE_VISIBILITY +inline copy_options& operator&=(copy_options& __lhs, copy_options __rhs) { + return __lhs = __lhs & __rhs; +} + +_LIBCPP_INLINE_VISIBILITY +inline copy_options& operator|=(copy_options& __lhs, copy_options __rhs) { + return __lhs = __lhs | __rhs; +} + +_LIBCPP_INLINE_VISIBILITY +inline copy_options& operator^=(copy_options& __lhs, copy_options __rhs) { + return __lhs = __lhs ^ __rhs; +} + +_LIBCPP_AVAILABILITY_FILESYSTEM_POP + +_LIBCPP_END_NAMESPACE_FILESYSTEM + +#endif // _LIBCPP_CXX03_LANG + +#endif // _LIBCPP___FILESYSTEM_COPY_OPTIONS_H diff --git a/third_party/libcxx/__filesystem/directory_entry.h b/third_party/libcxx/__filesystem/directory_entry.h new file mode 100644 index 000000000..bd9dbdc76 --- /dev/null +++ b/third_party/libcxx/__filesystem/directory_entry.h @@ -0,0 +1,528 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FILESYSTEM_DIRECTORY_ENTRY_H +#define _LIBCPP___FILESYSTEM_DIRECTORY_ENTRY_H + +#include <__availability> +#include <__chrono/time_point.h> +#include <__compare/ordering.h> +#include <__config> +#include <__filesystem/file_status.h> +#include <__filesystem/file_time_type.h> +#include <__filesystem/file_type.h> +#include <__filesystem/filesystem_error.h> +#include <__filesystem/operations.h> +#include <__filesystem/path.h> +#include <__filesystem/perms.h> +#include <__system_error/errc.h> +#include <__system_error/error_code.h> +#include <__utility/move.h> +#include <__utility/unreachable.h> +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +#ifndef _LIBCPP_CXX03_LANG + +_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM + +_LIBCPP_AVAILABILITY_FILESYSTEM_PUSH + + +class directory_entry { + typedef _VSTD_FS::path _Path; + +public: + // constructors and destructors + _LIBCPP_HIDE_FROM_ABI directory_entry() noexcept = default; + _LIBCPP_HIDE_FROM_ABI directory_entry(directory_entry const&) = default; + _LIBCPP_HIDE_FROM_ABI directory_entry(directory_entry&&) noexcept = default; + + _LIBCPP_INLINE_VISIBILITY + explicit directory_entry(_Path const& __p) : __p_(__p) { + error_code __ec; + __refresh(&__ec); + } + + _LIBCPP_INLINE_VISIBILITY + directory_entry(_Path const& __p, error_code& __ec) : __p_(__p) { + __refresh(&__ec); + } + + _LIBCPP_HIDE_FROM_ABI ~directory_entry() {} + + _LIBCPP_HIDE_FROM_ABI directory_entry& operator=(directory_entry const&) = default; + _LIBCPP_HIDE_FROM_ABI directory_entry& operator=(directory_entry&&) noexcept = default; + + _LIBCPP_INLINE_VISIBILITY + void assign(_Path const& __p) { + __p_ = __p; + error_code __ec; + __refresh(&__ec); + } + + _LIBCPP_INLINE_VISIBILITY + void assign(_Path const& __p, error_code& __ec) { + __p_ = __p; + __refresh(&__ec); + } + + _LIBCPP_INLINE_VISIBILITY + void replace_filename(_Path const& __p) { + __p_.replace_filename(__p); + error_code __ec; + __refresh(&__ec); + } + + _LIBCPP_INLINE_VISIBILITY + void replace_filename(_Path const& __p, error_code& __ec) { + __p_ = __p_.parent_path() / __p; + __refresh(&__ec); + } + + _LIBCPP_INLINE_VISIBILITY + void refresh() { __refresh(); } + + _LIBCPP_INLINE_VISIBILITY + void refresh(error_code& __ec) noexcept { __refresh(&__ec); } + + _LIBCPP_INLINE_VISIBILITY + _Path const& path() const noexcept { return __p_; } + + _LIBCPP_INLINE_VISIBILITY + operator const _Path&() const noexcept { return __p_; } + + _LIBCPP_INLINE_VISIBILITY + bool exists() const { return _VSTD_FS::exists(file_status{__get_ft()}); } + + _LIBCPP_INLINE_VISIBILITY + bool exists(error_code& __ec) const noexcept { + return _VSTD_FS::exists(file_status{__get_ft(&__ec)}); + } + + _LIBCPP_INLINE_VISIBILITY + bool is_block_file() const { return __get_ft() == file_type::block; } + + _LIBCPP_INLINE_VISIBILITY + bool is_block_file(error_code& __ec) const noexcept { + return __get_ft(&__ec) == file_type::block; + } + + _LIBCPP_INLINE_VISIBILITY + bool is_character_file() const { return __get_ft() == file_type::character; } + + _LIBCPP_INLINE_VISIBILITY + bool is_character_file(error_code& __ec) const noexcept { + return __get_ft(&__ec) == file_type::character; + } + + _LIBCPP_INLINE_VISIBILITY + bool is_directory() const { return __get_ft() == file_type::directory; } + + _LIBCPP_INLINE_VISIBILITY + bool is_directory(error_code& __ec) const noexcept { + return __get_ft(&__ec) == file_type::directory; + } + + _LIBCPP_INLINE_VISIBILITY + bool is_fifo() const { return __get_ft() == file_type::fifo; } + + _LIBCPP_INLINE_VISIBILITY + bool is_fifo(error_code& __ec) const noexcept { + return __get_ft(&__ec) == file_type::fifo; + } + + _LIBCPP_INLINE_VISIBILITY + bool is_other() const { return _VSTD_FS::is_other(file_status{__get_ft()}); } + + _LIBCPP_INLINE_VISIBILITY + bool is_other(error_code& __ec) const noexcept { + return _VSTD_FS::is_other(file_status{__get_ft(&__ec)}); + } + + _LIBCPP_INLINE_VISIBILITY + bool is_regular_file() const { return __get_ft() == file_type::regular; } + + _LIBCPP_INLINE_VISIBILITY + bool is_regular_file(error_code& __ec) const noexcept { + return __get_ft(&__ec) == file_type::regular; + } + + _LIBCPP_INLINE_VISIBILITY + bool is_socket() const { return __get_ft() == file_type::socket; } + + _LIBCPP_INLINE_VISIBILITY + bool is_socket(error_code& __ec) const noexcept { + return __get_ft(&__ec) == file_type::socket; + } + + _LIBCPP_INLINE_VISIBILITY + bool is_symlink() const { return __get_sym_ft() == file_type::symlink; } + + _LIBCPP_INLINE_VISIBILITY + bool is_symlink(error_code& __ec) const noexcept { + return __get_sym_ft(&__ec) == file_type::symlink; + } + _LIBCPP_INLINE_VISIBILITY + uintmax_t file_size() const { return __get_size(); } + + _LIBCPP_INLINE_VISIBILITY + uintmax_t file_size(error_code& __ec) const noexcept { + return __get_size(&__ec); + } + + _LIBCPP_INLINE_VISIBILITY + uintmax_t hard_link_count() const { return __get_nlink(); } + + _LIBCPP_INLINE_VISIBILITY + uintmax_t hard_link_count(error_code& __ec) const noexcept { + return __get_nlink(&__ec); + } + + _LIBCPP_INLINE_VISIBILITY + file_time_type last_write_time() const { return __get_write_time(); } + + _LIBCPP_INLINE_VISIBILITY + file_time_type last_write_time(error_code& __ec) const noexcept { + return __get_write_time(&__ec); + } + + _LIBCPP_INLINE_VISIBILITY + file_status status() const { return __get_status(); } + + _LIBCPP_INLINE_VISIBILITY + file_status status(error_code& __ec) const noexcept { + return __get_status(&__ec); + } + + _LIBCPP_INLINE_VISIBILITY + file_status symlink_status() const { return __get_symlink_status(); } + + _LIBCPP_INLINE_VISIBILITY + file_status symlink_status(error_code& __ec) const noexcept { + return __get_symlink_status(&__ec); + } + + + _LIBCPP_INLINE_VISIBILITY + bool operator==(directory_entry const& __rhs) const noexcept { + return __p_ == __rhs.__p_; + } + +#if _LIBCPP_STD_VER <= 17 + _LIBCPP_INLINE_VISIBILITY + bool operator!=(directory_entry const& __rhs) const noexcept { + return __p_ != __rhs.__p_; + } + + _LIBCPP_INLINE_VISIBILITY + bool operator<(directory_entry const& __rhs) const noexcept { + return __p_ < __rhs.__p_; + } + + _LIBCPP_INLINE_VISIBILITY + bool operator<=(directory_entry const& __rhs) const noexcept { + return __p_ <= __rhs.__p_; + } + + _LIBCPP_INLINE_VISIBILITY + bool operator>(directory_entry const& __rhs) const noexcept { + return __p_ > __rhs.__p_; + } + + _LIBCPP_INLINE_VISIBILITY + bool operator>=(directory_entry const& __rhs) const noexcept { + return __p_ >= __rhs.__p_; + } + +#else // _LIBCPP_STD_VER <= 17 + + _LIBCPP_HIDE_FROM_ABI + strong_ordering operator<=>(const directory_entry& __rhs) const noexcept { + return __p_ <=> __rhs.__p_; + } + +#endif // _LIBCPP_STD_VER <= 17 + + template + _LIBCPP_INLINE_VISIBILITY + friend basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __os, const directory_entry& __d) { + return __os << __d.path(); + } + +private: + friend class directory_iterator; + friend class recursive_directory_iterator; + friend class _LIBCPP_HIDDEN __dir_stream; + + enum _CacheType : unsigned char { + _Empty, + _IterSymlink, + _IterNonSymlink, + _RefreshSymlink, + _RefreshSymlinkUnresolved, + _RefreshNonSymlink + }; + + struct __cached_data { + uintmax_t __size_; + uintmax_t __nlink_; + file_time_type __write_time_; + perms __sym_perms_; + perms __non_sym_perms_; + file_type __type_; + _CacheType __cache_type_; + + _LIBCPP_INLINE_VISIBILITY + __cached_data() noexcept { __reset(); } + + _LIBCPP_INLINE_VISIBILITY + void __reset() { + __cache_type_ = _Empty; + __type_ = file_type::none; + __sym_perms_ = __non_sym_perms_ = perms::unknown; + __size_ = __nlink_ = uintmax_t(-1); + __write_time_ = file_time_type::min(); + } + }; + + _LIBCPP_INLINE_VISIBILITY + static __cached_data __create_iter_result(file_type __ft) { + __cached_data __data; + __data.__type_ = __ft; + __data.__cache_type_ = [&]() { + switch (__ft) { + case file_type::none: + return _Empty; + case file_type::symlink: + return _IterSymlink; + default: + return _IterNonSymlink; + } + }(); + return __data; + } + + _LIBCPP_INLINE_VISIBILITY + void __assign_iter_entry(_Path&& __p, __cached_data __dt) { + __p_ = _VSTD::move(__p); + __data_ = __dt; + } + + _LIBCPP_FUNC_VIS + error_code __do_refresh() noexcept; + + _LIBCPP_INLINE_VISIBILITY + static bool __is_dne_error(error_code const& __ec) { + if (!__ec) + return true; + switch (static_cast(__ec.value())) { + case errc::no_such_file_or_directory: + case errc::not_a_directory: + return true; + default: + return false; + } + } + + _LIBCPP_INLINE_VISIBILITY + void __handle_error(const char* __msg, error_code* __dest_ec, + error_code const& __ec, bool __allow_dne = false) const { + if (__dest_ec) { + *__dest_ec = __ec; + return; + } + if (__ec && (!__allow_dne || !__is_dne_error(__ec))) + __throw_filesystem_error(__msg, __p_, __ec); + } + + _LIBCPP_INLINE_VISIBILITY + void __refresh(error_code* __ec = nullptr) { + __handle_error("in directory_entry::refresh", __ec, __do_refresh(), + /*allow_dne*/ true); + } + + _LIBCPP_INLINE_VISIBILITY + file_type __get_sym_ft(error_code* __ec = nullptr) const { + switch (__data_.__cache_type_) { + case _Empty: + return __symlink_status(__p_, __ec).type(); + case _IterSymlink: + case _RefreshSymlink: + case _RefreshSymlinkUnresolved: + if (__ec) + __ec->clear(); + return file_type::symlink; + case _IterNonSymlink: + case _RefreshNonSymlink: + file_status __st(__data_.__type_); + if (__ec && !_VSTD_FS::exists(__st)) + *__ec = make_error_code(errc::no_such_file_or_directory); + else if (__ec) + __ec->clear(); + return __data_.__type_; + } + __libcpp_unreachable(); + } + + _LIBCPP_INLINE_VISIBILITY + file_type __get_ft(error_code* __ec = nullptr) const { + switch (__data_.__cache_type_) { + case _Empty: + case _IterSymlink: + case _RefreshSymlinkUnresolved: + return __status(__p_, __ec).type(); + case _IterNonSymlink: + case _RefreshNonSymlink: + case _RefreshSymlink: { + file_status __st(__data_.__type_); + if (__ec && !_VSTD_FS::exists(__st)) + *__ec = make_error_code(errc::no_such_file_or_directory); + else if (__ec) + __ec->clear(); + return __data_.__type_; + } + } + __libcpp_unreachable(); + } + + _LIBCPP_INLINE_VISIBILITY + file_status __get_status(error_code* __ec = nullptr) const { + switch (__data_.__cache_type_) { + case _Empty: + case _IterNonSymlink: + case _IterSymlink: + case _RefreshSymlinkUnresolved: + return __status(__p_, __ec); + case _RefreshNonSymlink: + case _RefreshSymlink: + return file_status(__get_ft(__ec), __data_.__non_sym_perms_); + } + __libcpp_unreachable(); + } + + _LIBCPP_INLINE_VISIBILITY + file_status __get_symlink_status(error_code* __ec = nullptr) const { + switch (__data_.__cache_type_) { + case _Empty: + case _IterNonSymlink: + case _IterSymlink: + return __symlink_status(__p_, __ec); + case _RefreshNonSymlink: + return file_status(__get_sym_ft(__ec), __data_.__non_sym_perms_); + case _RefreshSymlink: + case _RefreshSymlinkUnresolved: + return file_status(__get_sym_ft(__ec), __data_.__sym_perms_); + } + __libcpp_unreachable(); + } + + _LIBCPP_INLINE_VISIBILITY + uintmax_t __get_size(error_code* __ec = nullptr) const { + switch (__data_.__cache_type_) { + case _Empty: + case _IterNonSymlink: + case _IterSymlink: + case _RefreshSymlinkUnresolved: + return _VSTD_FS::__file_size(__p_, __ec); + case _RefreshSymlink: + case _RefreshNonSymlink: { + error_code __m_ec; + file_status __st(__get_ft(&__m_ec)); + __handle_error("in directory_entry::file_size", __ec, __m_ec); + if (_VSTD_FS::exists(__st) && !_VSTD_FS::is_regular_file(__st)) { + errc __err_kind = _VSTD_FS::is_directory(__st) ? errc::is_a_directory + : errc::not_supported; + __handle_error("in directory_entry::file_size", __ec, + make_error_code(__err_kind)); + } + return __data_.__size_; + } + } + __libcpp_unreachable(); + } + + _LIBCPP_INLINE_VISIBILITY + uintmax_t __get_nlink(error_code* __ec = nullptr) const { + switch (__data_.__cache_type_) { + case _Empty: + case _IterNonSymlink: + case _IterSymlink: + case _RefreshSymlinkUnresolved: + return _VSTD_FS::__hard_link_count(__p_, __ec); + case _RefreshSymlink: + case _RefreshNonSymlink: { + error_code __m_ec; + (void)__get_ft(&__m_ec); + __handle_error("in directory_entry::hard_link_count", __ec, __m_ec); + return __data_.__nlink_; + } + } + __libcpp_unreachable(); + } + + _LIBCPP_INLINE_VISIBILITY + file_time_type __get_write_time(error_code* __ec = nullptr) const { + switch (__data_.__cache_type_) { + case _Empty: + case _IterNonSymlink: + case _IterSymlink: + case _RefreshSymlinkUnresolved: + return _VSTD_FS::__last_write_time(__p_, __ec); + case _RefreshSymlink: + case _RefreshNonSymlink: { + error_code __m_ec; + file_status __st(__get_ft(&__m_ec)); + __handle_error("in directory_entry::last_write_time", __ec, __m_ec); + if (_VSTD_FS::exists(__st) && + __data_.__write_time_ == file_time_type::min()) + __handle_error("in directory_entry::last_write_time", __ec, + make_error_code(errc::value_too_large)); + return __data_.__write_time_; + } + } + __libcpp_unreachable(); + } + +private: + _Path __p_; + __cached_data __data_; +}; + +class __dir_element_proxy { +public: + inline _LIBCPP_INLINE_VISIBILITY directory_entry operator*() { + return _VSTD::move(__elem_); + } + +private: + friend class directory_iterator; + friend class recursive_directory_iterator; + _LIBCPP_HIDE_FROM_ABI explicit __dir_element_proxy(directory_entry const& __e) : __elem_(__e) {} + _LIBCPP_HIDE_FROM_ABI __dir_element_proxy(__dir_element_proxy&& __o) + : __elem_(_VSTD::move(__o.__elem_)) {} + directory_entry __elem_; +}; + +_LIBCPP_AVAILABILITY_FILESYSTEM_POP + +_LIBCPP_END_NAMESPACE_FILESYSTEM + +#endif // _LIBCPP_CXX03_LANG + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP___FILESYSTEM_DIRECTORY_ENTRY_H diff --git a/third_party/libcxx/__filesystem/directory_iterator.h b/third_party/libcxx/__filesystem/directory_iterator.h new file mode 100644 index 000000000..d74c8be10 --- /dev/null +++ b/third_party/libcxx/__filesystem/directory_iterator.h @@ -0,0 +1,166 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FILESYSTEM_DIRECTORY_ITERATOR_H +#define _LIBCPP___FILESYSTEM_DIRECTORY_ITERATOR_H + +#include <__assert> +#include <__availability> +#include <__config> +#include <__filesystem/directory_entry.h> +#include <__filesystem/directory_options.h> +#include <__filesystem/path.h> +#include <__iterator/iterator_traits.h> +#include <__memory/shared_ptr.h> +#include <__ranges/enable_borrowed_range.h> +#include <__ranges/enable_view.h> +#include <__system_error/error_code.h> +#include <__utility/move.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#ifndef _LIBCPP_CXX03_LANG + +_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM + +_LIBCPP_AVAILABILITY_FILESYSTEM_PUSH + +class _LIBCPP_HIDDEN __dir_stream; +class directory_iterator { +public: + typedef directory_entry value_type; + typedef ptrdiff_t difference_type; + typedef value_type const* pointer; + typedef value_type const& reference; + typedef input_iterator_tag iterator_category; + +public: + //ctor & dtor + _LIBCPP_HIDE_FROM_ABI + directory_iterator() noexcept {} + + _LIBCPP_HIDE_FROM_ABI + explicit directory_iterator(const path& __p) + : directory_iterator(__p, nullptr) {} + + _LIBCPP_HIDE_FROM_ABI + directory_iterator(const path& __p, directory_options __opts) + : directory_iterator(__p, nullptr, __opts) {} + + _LIBCPP_HIDE_FROM_ABI + directory_iterator(const path& __p, error_code& __ec) + : directory_iterator(__p, &__ec) {} + + _LIBCPP_HIDE_FROM_ABI + directory_iterator(const path& __p, directory_options __opts, + error_code& __ec) + : directory_iterator(__p, &__ec, __opts) {} + + _LIBCPP_HIDE_FROM_ABI directory_iterator(const directory_iterator&) = default; + _LIBCPP_HIDE_FROM_ABI directory_iterator(directory_iterator&&) = default; + _LIBCPP_HIDE_FROM_ABI directory_iterator& operator=(const directory_iterator&) = default; + + _LIBCPP_HIDE_FROM_ABI + directory_iterator& operator=(directory_iterator&& __o) noexcept { + // non-default implementation provided to support self-move assign. + if (this != &__o) { + __imp_ = _VSTD::move(__o.__imp_); + } + return *this; + } + + _LIBCPP_HIDE_FROM_ABI ~directory_iterator() = default; + + _LIBCPP_HIDE_FROM_ABI + const directory_entry& operator*() const { + _LIBCPP_ASSERT(__imp_, "The end iterator cannot be dereferenced"); + return __dereference(); + } + + _LIBCPP_HIDE_FROM_ABI + const directory_entry* operator->() const { return &**this; } + + _LIBCPP_HIDE_FROM_ABI + directory_iterator& operator++() { return __increment(); } + + _LIBCPP_HIDE_FROM_ABI + __dir_element_proxy operator++(int) { + __dir_element_proxy __p(**this); + __increment(); + return __p; + } + + _LIBCPP_HIDE_FROM_ABI + directory_iterator& increment(error_code& __ec) { return __increment(&__ec); } + +private: + inline _LIBCPP_HIDE_FROM_ABI friend bool + operator==(const directory_iterator& __lhs, + const directory_iterator& __rhs) noexcept; + + // construct the dir_stream + _LIBCPP_FUNC_VIS + directory_iterator(const path&, error_code*, + directory_options = directory_options::none); + + _LIBCPP_FUNC_VIS + directory_iterator& __increment(error_code* __ec = nullptr); + + _LIBCPP_FUNC_VIS + const directory_entry& __dereference() const; + +private: + shared_ptr<__dir_stream> __imp_; +}; + +inline _LIBCPP_HIDE_FROM_ABI bool +operator==(const directory_iterator& __lhs, + const directory_iterator& __rhs) noexcept { + return __lhs.__imp_ == __rhs.__imp_; +} + +inline _LIBCPP_HIDE_FROM_ABI bool +operator!=(const directory_iterator& __lhs, + const directory_iterator& __rhs) noexcept { + return !(__lhs == __rhs); +} + +// enable directory_iterator range-based for statements +inline _LIBCPP_HIDE_FROM_ABI directory_iterator +begin(directory_iterator __iter) noexcept { + return __iter; +} + +inline _LIBCPP_HIDE_FROM_ABI directory_iterator +end(directory_iterator) noexcept { + return directory_iterator(); +} + +_LIBCPP_AVAILABILITY_FILESYSTEM_POP + +_LIBCPP_END_NAMESPACE_FILESYSTEM + +#if _LIBCPP_STD_VER >= 20 + +template <> +_LIBCPP_AVAILABILITY_FILESYSTEM +inline constexpr bool _VSTD::ranges::enable_borrowed_range<_VSTD_FS::directory_iterator> = true; + +template <> +_LIBCPP_AVAILABILITY_FILESYSTEM +inline constexpr bool _VSTD::ranges::enable_view<_VSTD_FS::directory_iterator> = true; + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP_CXX03_LANG + +#endif // _LIBCPP___FILESYSTEM_DIRECTORY_ITERATOR_H diff --git a/third_party/libcxx/__filesystem/directory_options.h b/third_party/libcxx/__filesystem/directory_options.h new file mode 100644 index 000000000..c5c031a56 --- /dev/null +++ b/third_party/libcxx/__filesystem/directory_options.h @@ -0,0 +1,82 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FILESYSTEM_DIRECTORY_OPTIONS_H +#define _LIBCPP___FILESYSTEM_DIRECTORY_OPTIONS_H + +#include <__availability> +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#ifndef _LIBCPP_CXX03_LANG + +_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM + +_LIBCPP_AVAILABILITY_FILESYSTEM_PUSH + +enum class _LIBCPP_ENUM_VIS directory_options : unsigned char { + none = 0, + follow_directory_symlink = 1, + skip_permission_denied = 2 +}; + +_LIBCPP_INLINE_VISIBILITY +inline constexpr directory_options operator&(directory_options __lhs, + directory_options __rhs) { + return static_cast(static_cast(__lhs) & + static_cast(__rhs)); +} + +_LIBCPP_INLINE_VISIBILITY +inline constexpr directory_options operator|(directory_options __lhs, + directory_options __rhs) { + return static_cast(static_cast(__lhs) | + static_cast(__rhs)); +} + +_LIBCPP_INLINE_VISIBILITY +inline constexpr directory_options operator^(directory_options __lhs, + directory_options __rhs) { + return static_cast(static_cast(__lhs) ^ + static_cast(__rhs)); +} + +_LIBCPP_INLINE_VISIBILITY +inline constexpr directory_options operator~(directory_options __lhs) { + return static_cast(~static_cast(__lhs)); +} + +_LIBCPP_INLINE_VISIBILITY +inline directory_options& operator&=(directory_options& __lhs, + directory_options __rhs) { + return __lhs = __lhs & __rhs; +} + +_LIBCPP_INLINE_VISIBILITY +inline directory_options& operator|=(directory_options& __lhs, + directory_options __rhs) { + return __lhs = __lhs | __rhs; +} + +_LIBCPP_INLINE_VISIBILITY +inline directory_options& operator^=(directory_options& __lhs, + directory_options __rhs) { + return __lhs = __lhs ^ __rhs; +} + +_LIBCPP_AVAILABILITY_FILESYSTEM_POP + +_LIBCPP_END_NAMESPACE_FILESYSTEM + +#endif // _LIBCPP_CXX03_LANG + +#endif // _LIBCPP___FILESYSTEM_DIRECTORY_OPTIONS_H diff --git a/third_party/libcxx/__filesystem/file_status.h b/third_party/libcxx/__filesystem/file_status.h new file mode 100644 index 000000000..350b0fcc8 --- /dev/null +++ b/third_party/libcxx/__filesystem/file_status.h @@ -0,0 +1,72 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FILESYSTEM_FILE_STATUS_H +#define _LIBCPP___FILESYSTEM_FILE_STATUS_H + +#include <__availability> +#include <__config> +#include <__filesystem/file_type.h> +#include <__filesystem/perms.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#ifndef _LIBCPP_CXX03_LANG + +_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM + +_LIBCPP_AVAILABILITY_FILESYSTEM_PUSH + +class _LIBCPP_TYPE_VIS file_status { +public: + // constructors + _LIBCPP_INLINE_VISIBILITY + file_status() noexcept : file_status(file_type::none) {} + _LIBCPP_INLINE_VISIBILITY + explicit file_status(file_type __ft, perms __prms = perms::unknown) noexcept + : __ft_(__ft), + __prms_(__prms) {} + + _LIBCPP_HIDE_FROM_ABI file_status(const file_status&) noexcept = default; + _LIBCPP_HIDE_FROM_ABI file_status(file_status&&) noexcept = default; + + _LIBCPP_INLINE_VISIBILITY + ~file_status() {} + + _LIBCPP_HIDE_FROM_ABI file_status& operator=(const file_status&) noexcept = default; + _LIBCPP_HIDE_FROM_ABI file_status& operator=(file_status&&) noexcept = default; + + // observers + _LIBCPP_INLINE_VISIBILITY + file_type type() const noexcept { return __ft_; } + + _LIBCPP_INLINE_VISIBILITY + perms permissions() const noexcept { return __prms_; } + + // modifiers + _LIBCPP_INLINE_VISIBILITY + void type(file_type __ft) noexcept { __ft_ = __ft; } + + _LIBCPP_INLINE_VISIBILITY + void permissions(perms __p) noexcept { __prms_ = __p; } + +private: + file_type __ft_; + perms __prms_; +}; + +_LIBCPP_AVAILABILITY_FILESYSTEM_POP + +_LIBCPP_END_NAMESPACE_FILESYSTEM + +#endif // _LIBCPP_CXX03_LANG + +#endif // _LIBCPP___FILESYSTEM_FILE_STATUS_H diff --git a/third_party/libcxx/__filesystem/file_time_type.h b/third_party/libcxx/__filesystem/file_time_type.h new file mode 100644 index 000000000..7c4932e60 --- /dev/null +++ b/third_party/libcxx/__filesystem/file_time_type.h @@ -0,0 +1,32 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FILESYSTEM_FILE_TIME_TYPE_H +#define _LIBCPP___FILESYSTEM_FILE_TIME_TYPE_H + +#include <__availability> +#include <__chrono/file_clock.h> +#include <__chrono/time_point.h> +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#ifndef _LIBCPP_CXX03_LANG + +_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM + +typedef chrono::time_point<_FilesystemClock> file_time_type; + +_LIBCPP_END_NAMESPACE_FILESYSTEM + +#endif // _LIBCPP_CXX03_LANG + +#endif // _LIBCPP___FILESYSTEM_FILE_TIME_TYPE_H diff --git a/third_party/libcxx/__filesystem/file_type.h b/third_party/libcxx/__filesystem/file_type.h new file mode 100644 index 000000000..c756a05c8 --- /dev/null +++ b/third_party/libcxx/__filesystem/file_type.h @@ -0,0 +1,43 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FILESYSTEM_FILE_TYPE_H +#define _LIBCPP___FILESYSTEM_FILE_TYPE_H + +#include <__availability> +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#ifndef _LIBCPP_CXX03_LANG + +_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM + +// On Windows, the library never identifies files as block, character, fifo +// or socket. +enum class _LIBCPP_ENUM_VIS file_type : signed char { + none = 0, + not_found = -1, + regular = 1, + directory = 2, + symlink = 3, + block = 4, + character = 5, + fifo = 6, + socket = 7, + unknown = 8 +}; + +_LIBCPP_END_NAMESPACE_FILESYSTEM + +#endif // _LIBCPP_CXX03_LANG + +#endif // _LIBCPP___FILESYSTEM_FILE_TYPE_H diff --git a/third_party/libcxx/__filesystem/filesystem_error.h b/third_party/libcxx/__filesystem/filesystem_error.h new file mode 100644 index 000000000..d345dab76 --- /dev/null +++ b/third_party/libcxx/__filesystem/filesystem_error.h @@ -0,0 +1,106 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FILESYSTEM_FILESYSTEM_ERROR_H +#define _LIBCPP___FILESYSTEM_FILESYSTEM_ERROR_H + +#include <__availability> +#include <__config> +#include <__filesystem/path.h> +#include <__memory/shared_ptr.h> +#include <__system_error/error_code.h> +#include <__system_error/system_error.h> +#include <__utility/forward.h> +#include <__verbose_abort> +#include +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#ifndef _LIBCPP_CXX03_LANG + +_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM + +class _LIBCPP_AVAILABILITY_FILESYSTEM _LIBCPP_EXCEPTION_ABI filesystem_error : public system_error { +public: + _LIBCPP_INLINE_VISIBILITY + filesystem_error(const string& __what, error_code __ec) + : system_error(__ec, __what), + __storage_(make_shared<_Storage>(path(), path())) { + __create_what(0); + } + + _LIBCPP_INLINE_VISIBILITY + filesystem_error(const string& __what, const path& __p1, error_code __ec) + : system_error(__ec, __what), + __storage_(make_shared<_Storage>(__p1, path())) { + __create_what(1); + } + + _LIBCPP_INLINE_VISIBILITY + filesystem_error(const string& __what, const path& __p1, const path& __p2, + error_code __ec) + : system_error(__ec, __what), + __storage_(make_shared<_Storage>(__p1, __p2)) { + __create_what(2); + } + + _LIBCPP_INLINE_VISIBILITY + const path& path1() const noexcept { return __storage_->__p1_; } + + _LIBCPP_INLINE_VISIBILITY + const path& path2() const noexcept { return __storage_->__p2_; } + + _LIBCPP_HIDE_FROM_ABI filesystem_error(const filesystem_error&) = default; + ~filesystem_error() override; // key function + + _LIBCPP_HIDE_FROM_ABI_VIRTUAL + const char* what() const noexcept override { + return __storage_->__what_.c_str(); + } + + void __create_what(int __num_paths); + +private: + struct _LIBCPP_HIDDEN _Storage { + _LIBCPP_INLINE_VISIBILITY + _Storage(const path& __p1, const path& __p2) : __p1_(__p1), __p2_(__p2) {} + + path __p1_; + path __p2_; + string __what_; + }; + shared_ptr<_Storage> __storage_; +}; + +// TODO(ldionne): We need to pop the pragma and push it again after +// filesystem_error to work around PR41078. +_LIBCPP_AVAILABILITY_FILESYSTEM_PUSH + +template +_LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY +#ifndef _LIBCPP_HAS_NO_EXCEPTIONS +void __throw_filesystem_error(_Args&&... __args) { + throw filesystem_error(_VSTD::forward<_Args>(__args)...); +} +#else +void __throw_filesystem_error(_Args&&...) { + _LIBCPP_VERBOSE_ABORT("filesystem_error was thrown in -fno-exceptions mode"); +} +#endif +_LIBCPP_AVAILABILITY_FILESYSTEM_POP + +_LIBCPP_END_NAMESPACE_FILESYSTEM + +#endif // _LIBCPP_CXX03_LANG + +#endif // _LIBCPP___FILESYSTEM_FILESYSTEM_ERROR_H diff --git a/third_party/libcxx/__filesystem/operations.h b/third_party/libcxx/__filesystem/operations.h new file mode 100644 index 000000000..6bf58d8a7 --- /dev/null +++ b/third_party/libcxx/__filesystem/operations.h @@ -0,0 +1,201 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FILESYSTEM_OPERATIONS_H +#define _LIBCPP___FILESYSTEM_OPERATIONS_H + +#include <__availability> +#include <__chrono/time_point.h> +#include <__config> +#include <__filesystem/copy_options.h> +#include <__filesystem/file_status.h> +#include <__filesystem/file_time_type.h> +#include <__filesystem/file_type.h> +#include <__filesystem/path.h> +#include <__filesystem/perm_options.h> +#include <__filesystem/perms.h> +#include <__filesystem/space_info.h> +#include <__system_error/error_code.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#ifndef _LIBCPP_CXX03_LANG + +_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM + +_LIBCPP_AVAILABILITY_FILESYSTEM_PUSH + +_LIBCPP_FUNC_VIS path __absolute(const path&, error_code* __ec = nullptr); +_LIBCPP_FUNC_VIS path __canonical(const path&, error_code* __ec = nullptr); +_LIBCPP_FUNC_VIS bool __copy_file(const path& __from, const path& __to, copy_options __opt, error_code* __ec = nullptr); +_LIBCPP_FUNC_VIS void __copy_symlink(const path& __existing_symlink, const path& __new_symlink, error_code* __ec = nullptr); +_LIBCPP_FUNC_VIS void __copy(const path& __from, const path& __to, copy_options __opt, error_code* __ec = nullptr); +_LIBCPP_FUNC_VIS bool __create_directories(const path&, error_code* = nullptr); +_LIBCPP_FUNC_VIS void __create_directory_symlink(const path& __to, const path& __new_symlink, error_code* __ec = nullptr); +_LIBCPP_FUNC_VIS bool __create_directory(const path&, error_code* = nullptr); +_LIBCPP_FUNC_VIS bool __create_directory(const path&, const path& __attributes, error_code* = nullptr); +_LIBCPP_FUNC_VIS void __create_hard_link(const path& __to, const path& __new_hard_link, error_code* __ec = nullptr); +_LIBCPP_FUNC_VIS void __create_symlink(const path& __to, const path& __new_symlink, error_code* __ec = nullptr); +_LIBCPP_FUNC_VIS path __current_path(error_code* __ec = nullptr); +_LIBCPP_FUNC_VIS void __current_path(const path&, error_code* __ec = nullptr); +_LIBCPP_FUNC_VIS bool __equivalent(const path&, const path&, error_code* __ec = nullptr); +_LIBCPP_FUNC_VIS file_status __status(const path&, error_code* __ec = nullptr); +_LIBCPP_FUNC_VIS uintmax_t __file_size(const path&, error_code* __ec = nullptr); +_LIBCPP_FUNC_VIS uintmax_t __hard_link_count(const path&, error_code* __ec = nullptr); +_LIBCPP_FUNC_VIS file_status __symlink_status(const path&, error_code* __ec = nullptr); +_LIBCPP_FUNC_VIS file_time_type __last_write_time(const path&, error_code* __ec = nullptr); +_LIBCPP_FUNC_VIS void __last_write_time(const path&, file_time_type __new_time, error_code* __ec = nullptr); +_LIBCPP_FUNC_VIS path __weakly_canonical(path const& __p, error_code* __ec = nullptr); +_LIBCPP_FUNC_VIS path __read_symlink(const path&, error_code* __ec = nullptr); +_LIBCPP_FUNC_VIS uintmax_t __remove_all(const path&, error_code* __ec = nullptr); +_LIBCPP_FUNC_VIS bool __remove(const path&, error_code* __ec = nullptr); +_LIBCPP_FUNC_VIS void __rename(const path& __from, const path& __to, error_code* __ec = nullptr); +_LIBCPP_FUNC_VIS void __resize_file(const path&, uintmax_t __size, error_code* = nullptr); +_LIBCPP_FUNC_VIS path __temp_directory_path(error_code* __ec = nullptr); + +inline _LIBCPP_HIDE_FROM_ABI path absolute(const path& __p) { return __absolute(__p); } +inline _LIBCPP_HIDE_FROM_ABI path absolute(const path& __p, error_code& __ec) { return __absolute(__p, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI path canonical(const path& __p) { return __canonical(__p); } +inline _LIBCPP_HIDE_FROM_ABI path canonical(const path& __p, error_code& __ec) { return __canonical(__p, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI bool copy_file(const path& __from, const path& __to) { return __copy_file(__from, __to, copy_options::none); } +inline _LIBCPP_HIDE_FROM_ABI bool copy_file(const path& __from, const path& __to, error_code& __ec) { return __copy_file(__from, __to, copy_options::none, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI bool copy_file(const path& __from, const path& __to, copy_options __opt) { return __copy_file(__from, __to, __opt); } +inline _LIBCPP_HIDE_FROM_ABI bool copy_file(const path& __from, const path& __to, copy_options __opt, error_code& __ec) { return __copy_file(__from, __to, __opt, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI void copy_symlink(const path& __from, const path& __to) { __copy_symlink(__from, __to); } +inline _LIBCPP_HIDE_FROM_ABI void copy_symlink(const path& __from, const path& __to, error_code& __ec) noexcept { __copy_symlink(__from, __to, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI void copy(const path& __from, const path& __to) { __copy(__from, __to, copy_options::none); } +inline _LIBCPP_HIDE_FROM_ABI void copy(const path& __from, const path& __to, error_code& __ec) { __copy(__from, __to, copy_options::none, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI void copy(const path& __from, const path& __to, copy_options __opt) { __copy(__from, __to, __opt); } +inline _LIBCPP_HIDE_FROM_ABI void copy(const path& __from, const path& __to, copy_options __opt, error_code& __ec) { __copy(__from, __to, __opt, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI bool create_directories(const path& __p) { return __create_directories(__p); } +inline _LIBCPP_HIDE_FROM_ABI bool create_directories(const path& __p, error_code& __ec) { return __create_directories(__p, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI void create_directory_symlink(const path& __target, const path& __link) { __create_directory_symlink(__target, __link); } +inline _LIBCPP_HIDE_FROM_ABI void create_directory_symlink(const path& __target, const path& __link, error_code& __ec) noexcept { __create_directory_symlink(__target, __link, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI bool create_directory(const path& __p) { return __create_directory(__p); } +inline _LIBCPP_HIDE_FROM_ABI bool create_directory(const path& __p, error_code& __ec) noexcept { return __create_directory(__p, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI bool create_directory(const path& __p, const path& __attrs) { return __create_directory(__p, __attrs); } +inline _LIBCPP_HIDE_FROM_ABI bool create_directory(const path& __p, const path& __attrs, error_code& __ec) noexcept { return __create_directory(__p, __attrs, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI void create_hard_link(const path& __target, const path& __link) { __create_hard_link(__target, __link); } +inline _LIBCPP_HIDE_FROM_ABI void create_hard_link(const path& __target, const path& __link, error_code& __ec) noexcept { __create_hard_link(__target, __link, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI void create_symlink(const path& __target, const path& __link) { __create_symlink(__target, __link); } +inline _LIBCPP_HIDE_FROM_ABI void create_symlink(const path& __target, const path& __link, error_code& __ec) noexcept { return __create_symlink(__target, __link, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI path current_path() { return __current_path(); } +inline _LIBCPP_HIDE_FROM_ABI path current_path(error_code& __ec) { return __current_path(&__ec); } +inline _LIBCPP_HIDE_FROM_ABI void current_path(const path& __p) { __current_path(__p); } +inline _LIBCPP_HIDE_FROM_ABI void current_path(const path& __p, error_code& __ec) noexcept { __current_path(__p, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI bool equivalent(const path& __p1, const path& __p2) { return __equivalent(__p1, __p2); } +inline _LIBCPP_HIDE_FROM_ABI bool equivalent(const path& __p1, const path& __p2, error_code& __ec) noexcept { return __equivalent(__p1, __p2, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI bool status_known(file_status __s) noexcept { return __s.type() != file_type::none; } +inline _LIBCPP_HIDE_FROM_ABI bool exists(file_status __s) noexcept { return status_known(__s) && __s.type() != file_type::not_found; } +inline _LIBCPP_HIDE_FROM_ABI bool exists(const path& __p) { return exists(__status(__p)); } + +inline _LIBCPP_INLINE_VISIBILITY bool exists(const path& __p, error_code& __ec) noexcept { + auto __s = __status(__p, &__ec); + if (status_known(__s)) + __ec.clear(); + return exists(__s); +} + +inline _LIBCPP_HIDE_FROM_ABI uintmax_t file_size(const path& __p) { return __file_size(__p); } +inline _LIBCPP_HIDE_FROM_ABI uintmax_t file_size(const path& __p, error_code& __ec) noexcept { return __file_size(__p, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI uintmax_t hard_link_count(const path& __p) { return __hard_link_count(__p); } +inline _LIBCPP_HIDE_FROM_ABI uintmax_t hard_link_count(const path& __p, error_code& __ec) noexcept { return __hard_link_count(__p, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI bool is_block_file(file_status __s) noexcept { return __s.type() == file_type::block; } +inline _LIBCPP_HIDE_FROM_ABI bool is_block_file(const path& __p) { return is_block_file(__status(__p)); } +inline _LIBCPP_HIDE_FROM_ABI bool is_block_file(const path& __p, error_code& __ec) noexcept { return is_block_file(__status(__p, &__ec)); } +inline _LIBCPP_HIDE_FROM_ABI bool is_character_file(file_status __s) noexcept { return __s.type() == file_type::character; } +inline _LIBCPP_HIDE_FROM_ABI bool is_character_file(const path& __p) { return is_character_file(__status(__p)); } +inline _LIBCPP_HIDE_FROM_ABI bool is_character_file(const path& __p, error_code& __ec) noexcept { return is_character_file(__status(__p, &__ec)); } +inline _LIBCPP_HIDE_FROM_ABI bool is_directory(file_status __s) noexcept { return __s.type() == file_type::directory; } +inline _LIBCPP_HIDE_FROM_ABI bool is_directory(const path& __p) { return is_directory(__status(__p)); } +inline _LIBCPP_HIDE_FROM_ABI bool is_directory(const path& __p, error_code& __ec) noexcept { return is_directory(__status(__p, &__ec)); } +_LIBCPP_FUNC_VIS bool __fs_is_empty(const path& __p, error_code* __ec = nullptr); +inline _LIBCPP_HIDE_FROM_ABI bool is_empty(const path& __p) { return __fs_is_empty(__p); } +inline _LIBCPP_HIDE_FROM_ABI bool is_empty(const path& __p, error_code& __ec) { return __fs_is_empty(__p, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI bool is_fifo(file_status __s) noexcept { return __s.type() == file_type::fifo; } +inline _LIBCPP_HIDE_FROM_ABI bool is_fifo(const path& __p) { return is_fifo(__status(__p)); } +inline _LIBCPP_HIDE_FROM_ABI bool is_fifo(const path& __p, error_code& __ec) noexcept { return is_fifo(__status(__p, &__ec)); } +inline _LIBCPP_HIDE_FROM_ABI bool is_regular_file(file_status __s) noexcept { return __s.type() == file_type::regular; } +inline _LIBCPP_HIDE_FROM_ABI bool is_regular_file(const path& __p) { return is_regular_file(__status(__p)); } +inline _LIBCPP_HIDE_FROM_ABI bool is_regular_file(const path& __p, error_code& __ec) noexcept { return is_regular_file(__status(__p, &__ec)); } +inline _LIBCPP_HIDE_FROM_ABI bool is_symlink(file_status __s) noexcept { return __s.type() == file_type::symlink; } +inline _LIBCPP_HIDE_FROM_ABI bool is_symlink(const path& __p) { return is_symlink(__symlink_status(__p)); } +inline _LIBCPP_HIDE_FROM_ABI bool is_symlink(const path& __p, error_code& __ec) noexcept { return is_symlink(__symlink_status(__p, &__ec)); } +inline _LIBCPP_HIDE_FROM_ABI bool is_other(file_status __s) noexcept { return exists(__s) && !is_regular_file(__s) && !is_directory(__s) && !is_symlink(__s); } +inline _LIBCPP_HIDE_FROM_ABI bool is_other(const path& __p) { return is_other(__status(__p)); } +inline _LIBCPP_HIDE_FROM_ABI bool is_other(const path& __p, error_code& __ec) noexcept { return is_other(__status(__p, &__ec)); } +inline _LIBCPP_HIDE_FROM_ABI bool is_socket(file_status __s) noexcept { return __s.type() == file_type::socket; } +inline _LIBCPP_HIDE_FROM_ABI bool is_socket(const path& __p) { return is_socket(__status(__p)); } +inline _LIBCPP_HIDE_FROM_ABI bool is_socket(const path& __p, error_code& __ec) noexcept { return is_socket(__status(__p, &__ec)); } +inline _LIBCPP_HIDE_FROM_ABI file_time_type last_write_time(const path& __p) { return __last_write_time(__p); } +inline _LIBCPP_HIDE_FROM_ABI file_time_type last_write_time(const path& __p, error_code& __ec) noexcept { return __last_write_time(__p, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI void last_write_time(const path& __p, file_time_type __t) { __last_write_time(__p, __t); } +inline _LIBCPP_HIDE_FROM_ABI void last_write_time(const path& __p, file_time_type __t, error_code& __ec) noexcept { __last_write_time(__p, __t, &__ec); } +_LIBCPP_FUNC_VIS void __permissions(const path&, perms, perm_options, error_code* = nullptr); +inline _LIBCPP_HIDE_FROM_ABI void permissions(const path& __p, perms __prms, perm_options __opts = perm_options::replace) { __permissions(__p, __prms, __opts); } +inline _LIBCPP_HIDE_FROM_ABI void permissions(const path& __p, perms __prms, error_code& __ec) noexcept { __permissions(__p, __prms, perm_options::replace, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI void permissions(const path& __p, perms __prms, perm_options __opts, error_code& __ec) { __permissions(__p, __prms, __opts, &__ec); } + +inline _LIBCPP_INLINE_VISIBILITY path proximate(const path& __p, const path& __base, error_code& __ec) { + path __tmp = __weakly_canonical(__p, &__ec); + if (__ec) + return {}; + path __tmp_base = __weakly_canonical(__base, &__ec); + if (__ec) + return {}; + return __tmp.lexically_proximate(__tmp_base); +} + +inline _LIBCPP_HIDE_FROM_ABI path proximate(const path& __p, error_code& __ec) { return proximate(__p, current_path(), __ec); } +inline _LIBCPP_HIDE_FROM_ABI path proximate(const path& __p, const path& __base = current_path()) { return __weakly_canonical(__p).lexically_proximate(__weakly_canonical(__base)); } +inline _LIBCPP_HIDE_FROM_ABI path read_symlink(const path& __p) { return __read_symlink(__p); } +inline _LIBCPP_HIDE_FROM_ABI path read_symlink(const path& __p, error_code& __ec) { return __read_symlink(__p, &__ec); } + +inline _LIBCPP_INLINE_VISIBILITY path relative(const path& __p, const path& __base, error_code& __ec) { + path __tmp = __weakly_canonical(__p, &__ec); + if (__ec) + return path(); + path __tmpbase = __weakly_canonical(__base, &__ec); + if (__ec) + return path(); + return __tmp.lexically_relative(__tmpbase); +} + +inline _LIBCPP_HIDE_FROM_ABI path relative(const path& __p, error_code& __ec) { return relative(__p, current_path(), __ec); } +inline _LIBCPP_HIDE_FROM_ABI path relative(const path& __p, const path& __base = current_path()) { return __weakly_canonical(__p).lexically_relative(__weakly_canonical(__base)); } +inline _LIBCPP_HIDE_FROM_ABI uintmax_t remove_all(const path& __p) { return __remove_all(__p); } +inline _LIBCPP_HIDE_FROM_ABI uintmax_t remove_all(const path& __p, error_code& __ec) { return __remove_all(__p, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI bool remove(const path& __p) { return __remove(__p); } +inline _LIBCPP_HIDE_FROM_ABI bool remove(const path& __p, error_code& __ec) noexcept { return __remove(__p, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI void rename(const path& __from, const path& __to) { return __rename(__from, __to); } +inline _LIBCPP_HIDE_FROM_ABI void rename(const path& __from, const path& __to, error_code& __ec) noexcept { return __rename(__from, __to, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI void resize_file(const path& __p, uintmax_t __ns) { return __resize_file(__p, __ns); } +inline _LIBCPP_HIDE_FROM_ABI void resize_file(const path& __p, uintmax_t __ns, error_code& __ec) noexcept { return __resize_file(__p, __ns, &__ec); } +_LIBCPP_FUNC_VIS space_info __space(const path&, error_code* __ec = nullptr); +inline _LIBCPP_HIDE_FROM_ABI space_info space(const path& __p) { return __space(__p); } +inline _LIBCPP_HIDE_FROM_ABI space_info space(const path& __p, error_code& __ec) noexcept { return __space(__p, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI file_status status(const path& __p) { return __status(__p); } +inline _LIBCPP_HIDE_FROM_ABI file_status status(const path& __p, error_code& __ec) noexcept { return __status(__p, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI file_status symlink_status(const path& __p) { return __symlink_status(__p); } +inline _LIBCPP_HIDE_FROM_ABI file_status symlink_status(const path& __p, error_code& __ec) noexcept { return __symlink_status(__p, &__ec); } +inline _LIBCPP_HIDE_FROM_ABI path temp_directory_path() { return __temp_directory_path(); } +inline _LIBCPP_HIDE_FROM_ABI path temp_directory_path(error_code& __ec) { return __temp_directory_path(&__ec); } +inline _LIBCPP_HIDE_FROM_ABI path weakly_canonical(path const& __p) { return __weakly_canonical(__p); } +inline _LIBCPP_HIDE_FROM_ABI path weakly_canonical(path const& __p, error_code& __ec) { return __weakly_canonical(__p, &__ec); } + +_LIBCPP_AVAILABILITY_FILESYSTEM_POP + +_LIBCPP_END_NAMESPACE_FILESYSTEM + +#endif // _LIBCPP_CXX03_LANG + +#endif // _LIBCPP___FILESYSTEM_OPERATIONS_H diff --git a/third_party/libcxx/__filesystem/path.h b/third_party/libcxx/__filesystem/path.h new file mode 100644 index 000000000..bf36ad9b5 --- /dev/null +++ b/third_party/libcxx/__filesystem/path.h @@ -0,0 +1,1107 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FILESYSTEM_PATH_H +#define _LIBCPP___FILESYSTEM_PATH_H + +#include <__algorithm/replace.h> +#include <__algorithm/replace_copy.h> +#include <__availability> +#include <__config> +#include <__functional/unary_function.h> +#include <__fwd/hash.h> +#include <__iterator/back_insert_iterator.h> +#include <__iterator/iterator_traits.h> +#include <__type_traits/decay.h> +#include <__type_traits/is_pointer.h> +#include <__type_traits/remove_const.h> +#include <__type_traits/remove_pointer.h> +#include +#include +#include + +#if !defined(_LIBCPP_HAS_NO_LOCALIZATION) +# include // for quoted +# include +#endif + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#ifndef _LIBCPP_CXX03_LANG + +_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM + +_LIBCPP_AVAILABILITY_FILESYSTEM_PUSH + +template +struct __can_convert_char { + static const bool value = false; +}; +template +struct __can_convert_char : public __can_convert_char<_Tp> {}; +template <> +struct __can_convert_char { + static const bool value = true; + using __char_type = char; +}; +template <> +struct __can_convert_char { + static const bool value = true; + using __char_type = wchar_t; +}; +#ifndef _LIBCPP_HAS_NO_CHAR8_T +template <> +struct __can_convert_char { + static const bool value = true; + using __char_type = char8_t; +}; +#endif +template <> +struct __can_convert_char { + static const bool value = true; + using __char_type = char16_t; +}; +template <> +struct __can_convert_char { + static const bool value = true; + using __char_type = char32_t; +}; + +template +_LIBCPP_HIDE_FROM_ABI +typename enable_if<__can_convert_char<_ECharT>::value, bool>::type +__is_separator(_ECharT __e) { +#if defined(_LIBCPP_WIN32API) + return __e == _ECharT('/') || __e == _ECharT('\\'); +#else + return __e == _ECharT('/'); +#endif +} + +#ifndef _LIBCPP_HAS_NO_CHAR8_T +typedef u8string __u8_string; +#else +typedef string __u8_string; +#endif + +struct _NullSentinel {}; + +template +using _Void = void; + +template +struct __is_pathable_string : public false_type {}; + +template +struct __is_pathable_string< + basic_string<_ECharT, _Traits, _Alloc>, + _Void::__char_type> > + : public __can_convert_char<_ECharT> { + using _Str = basic_string<_ECharT, _Traits, _Alloc>; + using _Base = __can_convert_char<_ECharT>; + + _LIBCPP_HIDE_FROM_ABI + static _ECharT const* __range_begin(_Str const& __s) { return __s.data(); } + + _LIBCPP_HIDE_FROM_ABI + static _ECharT const* __range_end(_Str const& __s) { + return __s.data() + __s.length(); + } + + _LIBCPP_HIDE_FROM_ABI + static _ECharT __first_or_null(_Str const& __s) { + return __s.empty() ? _ECharT{} : __s[0]; + } +}; + +template +struct __is_pathable_string< + basic_string_view<_ECharT, _Traits>, + _Void::__char_type> > + : public __can_convert_char<_ECharT> { + using _Str = basic_string_view<_ECharT, _Traits>; + using _Base = __can_convert_char<_ECharT>; + + _LIBCPP_HIDE_FROM_ABI + static _ECharT const* __range_begin(_Str const& __s) { return __s.data(); } + + _LIBCPP_HIDE_FROM_ABI + static _ECharT const* __range_end(_Str const& __s) { + return __s.data() + __s.length(); + } + + _LIBCPP_HIDE_FROM_ABI + static _ECharT __first_or_null(_Str const& __s) { + return __s.empty() ? _ECharT{} : __s[0]; + } +}; + +template , + class _UnqualPtrType = + __remove_const_t<__remove_pointer_t<_DS> >, + bool _IsCharPtr = is_pointer<_DS>::value&& + __can_convert_char<_UnqualPtrType>::value> +struct __is_pathable_char_array : false_type {}; + +template +struct __is_pathable_char_array<_Source, _ECharT*, _UPtr, true> + : __can_convert_char<__remove_const_t<_ECharT> > { + using _Base = __can_convert_char<__remove_const_t<_ECharT> >; + + _LIBCPP_HIDE_FROM_ABI + static _ECharT const* __range_begin(const _ECharT* __b) { return __b; } + + _LIBCPP_HIDE_FROM_ABI + static _ECharT const* __range_end(const _ECharT* __b) { + using _Iter = const _ECharT*; + const _ECharT __sentinel = _ECharT{}; + _Iter __e = __b; + for (; *__e != __sentinel; ++__e) + ; + return __e; + } + + _LIBCPP_HIDE_FROM_ABI + static _ECharT __first_or_null(const _ECharT* __b) { return *__b; } +}; + +template ::value, + class = void> +struct __is_pathable_iter : false_type {}; + +template +struct __is_pathable_iter< + _Iter, true, + _Void::value_type>::__char_type> > + : __can_convert_char::value_type> { + using _ECharT = typename iterator_traits<_Iter>::value_type; + using _Base = __can_convert_char<_ECharT>; + + _LIBCPP_HIDE_FROM_ABI + static _Iter __range_begin(_Iter __b) { return __b; } + + _LIBCPP_HIDE_FROM_ABI + static _NullSentinel __range_end(_Iter) { return _NullSentinel{}; } + + _LIBCPP_HIDE_FROM_ABI + static _ECharT __first_or_null(_Iter __b) { return *__b; } +}; + +template ::value, + bool _IsCharIterT = __is_pathable_char_array<_Tp>::value, + bool _IsIterT = !_IsCharIterT && __is_pathable_iter<_Tp>::value> +struct __is_pathable : false_type { + static_assert(!_IsStringT && !_IsCharIterT && !_IsIterT, "Must all be false"); +}; + +template +struct __is_pathable<_Tp, true, false, false> : __is_pathable_string<_Tp> {}; + +template +struct __is_pathable<_Tp, false, true, false> : __is_pathable_char_array<_Tp> { +}; + +template +struct __is_pathable<_Tp, false, false, true> : __is_pathable_iter<_Tp> {}; + +#if defined(_LIBCPP_WIN32API) +typedef wstring __path_string; +typedef wchar_t __path_value; +#else +typedef string __path_string; +typedef char __path_value; +#endif + +#if defined(_LIBCPP_WIN32API) +_LIBCPP_FUNC_VIS +size_t __wide_to_char(const wstring&, char*, size_t); +_LIBCPP_FUNC_VIS +size_t __char_to_wide(const string&, wchar_t*, size_t); +#endif + +template +struct _PathCVT; + +#if !defined(_LIBCPP_HAS_NO_LOCALIZATION) +template +struct _PathCVT { + static_assert(__can_convert_char<_ECharT>::value, + "Char type not convertible"); + + typedef __narrow_to_utf8 _Narrower; +#if defined(_LIBCPP_WIN32API) + typedef __widen_from_utf8 _Widener; +#endif + + _LIBCPP_HIDE_FROM_ABI + static void __append_range(__path_string& __dest, _ECharT const* __b, + _ECharT const* __e) { +#if defined(_LIBCPP_WIN32API) + string __utf8; + _Narrower()(back_inserter(__utf8), __b, __e); + _Widener()(back_inserter(__dest), __utf8.data(), __utf8.data() + __utf8.size()); +#else + _Narrower()(back_inserter(__dest), __b, __e); +#endif + } + + template + _LIBCPP_HIDE_FROM_ABI + static void __append_range(__path_string& __dest, _Iter __b, _Iter __e) { + static_assert(!is_same<_Iter, _ECharT*>::value, "Call const overload"); + if (__b == __e) + return; + basic_string<_ECharT> __tmp(__b, __e); +#if defined(_LIBCPP_WIN32API) + string __utf8; + _Narrower()(back_inserter(__utf8), __tmp.data(), + __tmp.data() + __tmp.length()); + _Widener()(back_inserter(__dest), __utf8.data(), __utf8.data() + __utf8.size()); +#else + _Narrower()(back_inserter(__dest), __tmp.data(), + __tmp.data() + __tmp.length()); +#endif + } + + template + _LIBCPP_HIDE_FROM_ABI + static void __append_range(__path_string& __dest, _Iter __b, _NullSentinel) { + static_assert(!is_same<_Iter, _ECharT*>::value, "Call const overload"); + const _ECharT __sentinel = _ECharT{}; + if (*__b == __sentinel) + return; + basic_string<_ECharT> __tmp; + for (; *__b != __sentinel; ++__b) + __tmp.push_back(*__b); +#if defined(_LIBCPP_WIN32API) + string __utf8; + _Narrower()(back_inserter(__utf8), __tmp.data(), + __tmp.data() + __tmp.length()); + _Widener()(back_inserter(__dest), __utf8.data(), __utf8.data() + __utf8.size()); +#else + _Narrower()(back_inserter(__dest), __tmp.data(), + __tmp.data() + __tmp.length()); +#endif + } + + template + _LIBCPP_HIDE_FROM_ABI + static void __append_source(__path_string& __dest, _Source const& __s) { + using _Traits = __is_pathable<_Source>; + __append_range(__dest, _Traits::__range_begin(__s), + _Traits::__range_end(__s)); + } +}; +#endif // !_LIBCPP_HAS_NO_LOCALIZATION + +template <> +struct _PathCVT<__path_value> { + + template + _LIBCPP_HIDE_FROM_ABI + static typename enable_if<__has_exactly_input_iterator_category<_Iter>::value>::type + __append_range(__path_string& __dest, _Iter __b, _Iter __e) { + for (; __b != __e; ++__b) + __dest.push_back(*__b); + } + + template + _LIBCPP_HIDE_FROM_ABI + static typename enable_if<__has_forward_iterator_category<_Iter>::value>::type + __append_range(__path_string& __dest, _Iter __b, _Iter __e) { + __dest.append(__b, __e); + } + + template + _LIBCPP_HIDE_FROM_ABI + static void __append_range(__path_string& __dest, _Iter __b, _NullSentinel) { + const char __sentinel = char{}; + for (; *__b != __sentinel; ++__b) + __dest.push_back(*__b); + } + + template + _LIBCPP_HIDE_FROM_ABI + static void __append_source(__path_string& __dest, _Source const& __s) { + using _Traits = __is_pathable<_Source>; + __append_range(__dest, _Traits::__range_begin(__s), + _Traits::__range_end(__s)); + } +}; + +#if defined(_LIBCPP_WIN32API) +template <> +struct _PathCVT { + + _LIBCPP_HIDE_FROM_ABI + static void + __append_string(__path_string& __dest, const basic_string &__str) { + size_t __size = __char_to_wide(__str, nullptr, 0); + size_t __pos = __dest.size(); + __dest.resize(__pos + __size); + __char_to_wide(__str, const_cast<__path_value*>(__dest.data()) + __pos, __size); + } + + template + _LIBCPP_HIDE_FROM_ABI + static typename enable_if<__has_exactly_input_iterator_category<_Iter>::value>::type + __append_range(__path_string& __dest, _Iter __b, _Iter __e) { + basic_string __tmp(__b, __e); + __append_string(__dest, __tmp); + } + + template + _LIBCPP_HIDE_FROM_ABI + static typename enable_if<__has_forward_iterator_category<_Iter>::value>::type + __append_range(__path_string& __dest, _Iter __b, _Iter __e) { + basic_string __tmp(__b, __e); + __append_string(__dest, __tmp); + } + + template + _LIBCPP_HIDE_FROM_ABI + static void __append_range(__path_string& __dest, _Iter __b, _NullSentinel) { + const char __sentinel = char{}; + basic_string __tmp; + for (; *__b != __sentinel; ++__b) + __tmp.push_back(*__b); + __append_string(__dest, __tmp); + } + + template + _LIBCPP_HIDE_FROM_ABI + static void __append_source(__path_string& __dest, _Source const& __s) { + using _Traits = __is_pathable<_Source>; + __append_range(__dest, _Traits::__range_begin(__s), + _Traits::__range_end(__s)); + } +}; + +template +struct _PathExport { + typedef __narrow_to_utf8 _Narrower; + typedef __widen_from_utf8 _Widener; + + template + _LIBCPP_HIDE_FROM_ABI + static void __append(_Str& __dest, const __path_string& __src) { + string __utf8; + _Narrower()(back_inserter(__utf8), __src.data(), __src.data() + __src.size()); + _Widener()(back_inserter(__dest), __utf8.data(), __utf8.data() + __utf8.size()); + } +}; + +template <> +struct _PathExport { + template + _LIBCPP_HIDE_FROM_ABI + static void __append(_Str& __dest, const __path_string& __src) { + size_t __size = __wide_to_char(__src, nullptr, 0); + size_t __pos = __dest.size(); + __dest.resize(__size); + __wide_to_char(__src, const_cast(__dest.data()) + __pos, __size); + } +}; + +template <> +struct _PathExport { + template + _LIBCPP_HIDE_FROM_ABI + static void __append(_Str& __dest, const __path_string& __src) { + __dest.append(__src.begin(), __src.end()); + } +}; + +template <> +struct _PathExport { + template + _LIBCPP_HIDE_FROM_ABI + static void __append(_Str& __dest, const __path_string& __src) { + __dest.append(__src.begin(), __src.end()); + } +}; + +#ifndef _LIBCPP_HAS_NO_CHAR8_T +template <> +struct _PathExport { + typedef __narrow_to_utf8 _Narrower; + + template + _LIBCPP_HIDE_FROM_ABI + static void __append(_Str& __dest, const __path_string& __src) { + _Narrower()(back_inserter(__dest), __src.data(), __src.data() + __src.size()); + } +}; +#endif /* !_LIBCPP_HAS_NO_CHAR8_T */ +#endif /* _LIBCPP_WIN32API */ + +class _LIBCPP_TYPE_VIS path { + template + using _EnableIfPathable = + typename enable_if<__is_pathable<_SourceOrIter>::value, _Tp>::type; + + template + using _SourceChar = typename __is_pathable<_Tp>::__char_type; + + template + using _SourceCVT = _PathCVT<_SourceChar<_Tp> >; + +public: +#if defined(_LIBCPP_WIN32API) + typedef wchar_t value_type; + static constexpr value_type preferred_separator = L'\\'; +#else + typedef char value_type; + static constexpr value_type preferred_separator = '/'; +#endif + typedef basic_string string_type; + typedef basic_string_view __string_view; + + enum _LIBCPP_ENUM_VIS format : unsigned char { + auto_format, + native_format, + generic_format + }; + + // constructors and destructor + _LIBCPP_HIDE_FROM_ABI path() noexcept {} + _LIBCPP_HIDE_FROM_ABI path(const path& __p) : __pn_(__p.__pn_) {} + _LIBCPP_HIDE_FROM_ABI path(path&& __p) noexcept + : __pn_(_VSTD::move(__p.__pn_)) {} + + _LIBCPP_HIDE_FROM_ABI + path(string_type&& __s, format = format::auto_format) noexcept + : __pn_(_VSTD::move(__s)) {} + + template > + _LIBCPP_HIDE_FROM_ABI + path(const _Source& __src, format = format::auto_format) { + _SourceCVT<_Source>::__append_source(__pn_, __src); + } + + template + _LIBCPP_HIDE_FROM_ABI + path(_InputIt __first, _InputIt __last, format = format::auto_format) { + typedef typename iterator_traits<_InputIt>::value_type _ItVal; + _PathCVT<_ItVal>::__append_range(__pn_, __first, __last); + } + +/* +#if !defined(_LIBCPP_HAS_NO_LOCALIZATION) + // TODO Implement locale conversions. + template > + path(const _Source& __src, const locale& __loc, format = format::auto_format); + template + path(_InputIt __first, _InputIt _last, const locale& __loc, + format = format::auto_format); +#endif +*/ + + _LIBCPP_HIDE_FROM_ABI + ~path() = default; + + // assignments + _LIBCPP_HIDE_FROM_ABI + path& operator=(const path& __p) { + __pn_ = __p.__pn_; + return *this; + } + + _LIBCPP_HIDE_FROM_ABI + path& operator=(path&& __p) noexcept { + __pn_ = _VSTD::move(__p.__pn_); + return *this; + } + + _LIBCPP_HIDE_FROM_ABI + path& operator=(string_type&& __s) noexcept { + __pn_ = _VSTD::move(__s); + return *this; + } + + _LIBCPP_HIDE_FROM_ABI + path& assign(string_type&& __s) noexcept { + __pn_ = _VSTD::move(__s); + return *this; + } + + template + _LIBCPP_HIDE_FROM_ABI _EnableIfPathable<_Source> + operator=(const _Source& __src) { + return this->assign(__src); + } + + template + _LIBCPP_HIDE_FROM_ABI + _EnableIfPathable<_Source> assign(const _Source& __src) { + __pn_.clear(); + _SourceCVT<_Source>::__append_source(__pn_, __src); + return *this; + } + + template + _LIBCPP_HIDE_FROM_ABI + path& assign(_InputIt __first, _InputIt __last) { + typedef typename iterator_traits<_InputIt>::value_type _ItVal; + __pn_.clear(); + _PathCVT<_ItVal>::__append_range(__pn_, __first, __last); + return *this; + } + +public: + // appends +#if defined(_LIBCPP_WIN32API) + _LIBCPP_HIDE_FROM_ABI + path& operator/=(const path& __p) { + auto __p_root_name = __p.__root_name(); + auto __p_root_name_size = __p_root_name.size(); + if (__p.is_absolute() || + (!__p_root_name.empty() && __p_root_name != __string_view(root_name().__pn_))) { + __pn_ = __p.__pn_; + return *this; + } + if (__p.has_root_directory()) { + path __root_name_str = root_name(); + __pn_ = __root_name_str.native(); + __pn_ += __string_view(__p.__pn_).substr(__p_root_name_size); + return *this; + } + if (has_filename() || (!has_root_directory() && is_absolute())) + __pn_ += preferred_separator; + __pn_ += __string_view(__p.__pn_).substr(__p_root_name_size); + return *this; + } + template + _LIBCPP_INLINE_VISIBILITY _EnableIfPathable<_Source> + operator/=(const _Source& __src) { + return operator/=(path(__src)); + } + + template + _LIBCPP_HIDE_FROM_ABI + _EnableIfPathable<_Source> append(const _Source& __src) { + return operator/=(path(__src)); + } + + template + _LIBCPP_HIDE_FROM_ABI + path& append(_InputIt __first, _InputIt __last) { + return operator/=(path(__first, __last)); + } +#else + _LIBCPP_HIDE_FROM_ABI + path& operator/=(const path& __p) { + if (__p.is_absolute()) { + __pn_ = __p.__pn_; + return *this; + } + if (has_filename()) + __pn_ += preferred_separator; + __pn_ += __p.native(); + return *this; + } + + // FIXME: Use _LIBCPP_DIAGNOSE_WARNING to produce a diagnostic when __src + // is known at compile time to be "/' since the user almost certainly intended + // to append a separator instead of overwriting the path with "/" + template + _LIBCPP_HIDE_FROM_ABI _EnableIfPathable<_Source> + operator/=(const _Source& __src) { + return this->append(__src); + } + + template + _LIBCPP_HIDE_FROM_ABI + _EnableIfPathable<_Source> append(const _Source& __src) { + using _Traits = __is_pathable<_Source>; + using _CVT = _PathCVT<_SourceChar<_Source> >; + bool __source_is_absolute = _VSTD_FS::__is_separator(_Traits::__first_or_null(__src)); + if (__source_is_absolute) + __pn_.clear(); + else if (has_filename()) + __pn_ += preferred_separator; + _CVT::__append_source(__pn_, __src); + return *this; + } + + template + _LIBCPP_HIDE_FROM_ABI + path& append(_InputIt __first, _InputIt __last) { + typedef typename iterator_traits<_InputIt>::value_type _ItVal; + static_assert(__can_convert_char<_ItVal>::value, "Must convertible"); + using _CVT = _PathCVT<_ItVal>; + if (__first != __last && _VSTD_FS::__is_separator(*__first)) + __pn_.clear(); + else if (has_filename()) + __pn_ += preferred_separator; + _CVT::__append_range(__pn_, __first, __last); + return *this; + } +#endif + + // concatenation + _LIBCPP_HIDE_FROM_ABI + path& operator+=(const path& __x) { + __pn_ += __x.__pn_; + return *this; + } + + _LIBCPP_HIDE_FROM_ABI + path& operator+=(const string_type& __x) { + __pn_ += __x; + return *this; + } + + _LIBCPP_HIDE_FROM_ABI + path& operator+=(__string_view __x) { + __pn_ += __x; + return *this; + } + + _LIBCPP_HIDE_FROM_ABI + path& operator+=(const value_type* __x) { + __pn_ += __x; + return *this; + } + + _LIBCPP_HIDE_FROM_ABI + path& operator+=(value_type __x) { + __pn_ += __x; + return *this; + } + + template + _LIBCPP_HIDE_FROM_ABI + typename enable_if<__can_convert_char<_ECharT>::value, path&>::type + operator+=(_ECharT __x) { + _PathCVT<_ECharT>::__append_source(__pn_, + basic_string_view<_ECharT>(&__x, 1)); + return *this; + } + + template + _LIBCPP_HIDE_FROM_ABI + _EnableIfPathable<_Source> operator+=(const _Source& __x) { + return this->concat(__x); + } + + template + _LIBCPP_HIDE_FROM_ABI + _EnableIfPathable<_Source> concat(const _Source& __x) { + _SourceCVT<_Source>::__append_source(__pn_, __x); + return *this; + } + + template + _LIBCPP_HIDE_FROM_ABI + path& concat(_InputIt __first, _InputIt __last) { + typedef typename iterator_traits<_InputIt>::value_type _ItVal; + _PathCVT<_ItVal>::__append_range(__pn_, __first, __last); + return *this; + } + + // modifiers + _LIBCPP_HIDE_FROM_ABI + void clear() noexcept { __pn_.clear(); } + + _LIBCPP_HIDE_FROM_ABI + path& make_preferred() { +#if defined(_LIBCPP_WIN32API) + _VSTD::replace(__pn_.begin(), __pn_.end(), L'/', L'\\'); +#endif + return *this; + } + + _LIBCPP_HIDE_FROM_ABI + path& remove_filename() { + auto __fname = __filename(); + if (!__fname.empty()) + __pn_.erase(__fname.data() - __pn_.data()); + return *this; + } + + _LIBCPP_HIDE_FROM_ABI + path& replace_filename(const path& __replacement) { + remove_filename(); + return (*this /= __replacement); + } + + path& replace_extension(const path& __replacement = path()); + + friend _LIBCPP_HIDE_FROM_ABI bool operator==(const path& __lhs, const path& __rhs) noexcept { + return __lhs.__compare(__rhs.__pn_) == 0; + } +# if _LIBCPP_STD_VER <= 17 + friend _LIBCPP_HIDE_FROM_ABI bool operator!=(const path& __lhs, const path& __rhs) noexcept { + return __lhs.__compare(__rhs.__pn_) != 0; + } + friend _LIBCPP_HIDE_FROM_ABI bool operator<(const path& __lhs, const path& __rhs) noexcept { + return __lhs.__compare(__rhs.__pn_) < 0; + } + friend _LIBCPP_HIDE_FROM_ABI bool operator<=(const path& __lhs, const path& __rhs) noexcept { + return __lhs.__compare(__rhs.__pn_) <= 0; + } + friend _LIBCPP_HIDE_FROM_ABI bool operator>(const path& __lhs, const path& __rhs) noexcept { + return __lhs.__compare(__rhs.__pn_) > 0; + } + friend _LIBCPP_HIDE_FROM_ABI bool operator>=(const path& __lhs, const path& __rhs) noexcept { + return __lhs.__compare(__rhs.__pn_) >= 0; + } +# else // _LIBCPP_STD_VER <= 17 + friend _LIBCPP_HIDE_FROM_ABI strong_ordering operator<=>(const path& __lhs, const path& __rhs) noexcept { + return __lhs.__compare(__rhs.__pn_) <=> 0; + } +# endif // _LIBCPP_STD_VER <= 17 + + friend _LIBCPP_HIDE_FROM_ABI path operator/(const path& __lhs, const path& __rhs) { + path __result(__lhs); + __result /= __rhs; + return __result; + } + + _LIBCPP_HIDE_FROM_ABI + void swap(path& __rhs) noexcept { __pn_.swap(__rhs.__pn_); } + + // private helper to allow reserving memory in the path + _LIBCPP_HIDE_FROM_ABI + void __reserve(size_t __s) { __pn_.reserve(__s); } + + // native format observers + _LIBCPP_HIDE_FROM_ABI + const string_type& native() const noexcept { return __pn_; } + + _LIBCPP_HIDE_FROM_ABI + const value_type* c_str() const noexcept { return __pn_.c_str(); } + + _LIBCPP_HIDE_FROM_ABI operator string_type() const { return __pn_; } + +#if defined(_LIBCPP_WIN32API) + _LIBCPP_HIDE_FROM_ABI _VSTD::wstring wstring() const { return __pn_; } + + _LIBCPP_HIDE_FROM_ABI + _VSTD::wstring generic_wstring() const { + _VSTD::wstring __s; + __s.resize(__pn_.size()); + _VSTD::replace_copy(__pn_.begin(), __pn_.end(), __s.begin(), '\\', '/'); + return __s; + } + +#if !defined(_LIBCPP_HAS_NO_LOCALIZATION) + template , + class _Allocator = allocator<_ECharT> > + _LIBCPP_HIDE_FROM_ABI + basic_string<_ECharT, _Traits, _Allocator> + string(const _Allocator& __a = _Allocator()) const { + using _Str = basic_string<_ECharT, _Traits, _Allocator>; + _Str __s(__a); + __s.reserve(__pn_.size()); + _PathExport<_ECharT>::__append(__s, __pn_); + return __s; + } + + _LIBCPP_HIDE_FROM_ABI _VSTD::string string() const { + return string(); + } + _LIBCPP_HIDE_FROM_ABI __u8_string u8string() const { + using _CVT = __narrow_to_utf8; + __u8_string __s; + __s.reserve(__pn_.size()); + _CVT()(back_inserter(__s), __pn_.data(), __pn_.data() + __pn_.size()); + return __s; + } + + _LIBCPP_HIDE_FROM_ABI _VSTD::u16string u16string() const { + return string(); + } + _LIBCPP_HIDE_FROM_ABI _VSTD::u32string u32string() const { + return string(); + } + + // generic format observers + template , + class _Allocator = allocator<_ECharT> > + _LIBCPP_HIDE_FROM_ABI + basic_string<_ECharT, _Traits, _Allocator> + generic_string(const _Allocator& __a = _Allocator()) const { + using _Str = basic_string<_ECharT, _Traits, _Allocator>; + _Str __s = string<_ECharT, _Traits, _Allocator>(__a); + // Note: This (and generic_u8string below) is slightly suboptimal as + // it iterates twice over the string; once to convert it to the right + // character type, and once to replace path delimiters. + _VSTD::replace(__s.begin(), __s.end(), + static_cast<_ECharT>('\\'), static_cast<_ECharT>('/')); + return __s; + } + + _LIBCPP_HIDE_FROM_ABI _VSTD::string generic_string() const { return generic_string(); } + _LIBCPP_HIDE_FROM_ABI _VSTD::u16string generic_u16string() const { return generic_string(); } + _LIBCPP_HIDE_FROM_ABI _VSTD::u32string generic_u32string() const { return generic_string(); } + _LIBCPP_HIDE_FROM_ABI + __u8_string generic_u8string() const { + __u8_string __s = u8string(); + _VSTD::replace(__s.begin(), __s.end(), '\\', '/'); + return __s; + } +#endif /* !_LIBCPP_HAS_NO_LOCALIZATION */ +#else /* _LIBCPP_WIN32API */ + + _LIBCPP_HIDE_FROM_ABI _VSTD::string string() const { return __pn_; } +#ifndef _LIBCPP_HAS_NO_CHAR8_T + _LIBCPP_HIDE_FROM_ABI _VSTD::u8string u8string() const { return _VSTD::u8string(__pn_.begin(), __pn_.end()); } +#else + _LIBCPP_HIDE_FROM_ABI _VSTD::string u8string() const { return __pn_; } +#endif + +#if !defined(_LIBCPP_HAS_NO_LOCALIZATION) + template , + class _Allocator = allocator<_ECharT> > + _LIBCPP_HIDE_FROM_ABI + basic_string<_ECharT, _Traits, _Allocator> + string(const _Allocator& __a = _Allocator()) const { + using _CVT = __widen_from_utf8; + using _Str = basic_string<_ECharT, _Traits, _Allocator>; + _Str __s(__a); + __s.reserve(__pn_.size()); + _CVT()(std::back_inserter(__s), __pn_.data(), __pn_.data() + __pn_.size()); + return __s; + } + +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS + _LIBCPP_HIDE_FROM_ABI _VSTD::wstring wstring() const { + return string(); + } +#endif + _LIBCPP_HIDE_FROM_ABI _VSTD::u16string u16string() const { + return string(); + } + _LIBCPP_HIDE_FROM_ABI _VSTD::u32string u32string() const { + return string(); + } +#endif /* !_LIBCPP_HAS_NO_LOCALIZATION */ + + // generic format observers + _LIBCPP_HIDE_FROM_ABI _VSTD::string generic_string() const { return __pn_; } +#ifndef _LIBCPP_HAS_NO_CHAR8_T + _LIBCPP_HIDE_FROM_ABI _VSTD::u8string generic_u8string() const { return _VSTD::u8string(__pn_.begin(), __pn_.end()); } +#else + _LIBCPP_HIDE_FROM_ABI _VSTD::string generic_u8string() const { return __pn_; } +#endif + +#if !defined(_LIBCPP_HAS_NO_LOCALIZATION) + template , + class _Allocator = allocator<_ECharT> > + _LIBCPP_HIDE_FROM_ABI + basic_string<_ECharT, _Traits, _Allocator> + generic_string(const _Allocator& __a = _Allocator()) const { + return string<_ECharT, _Traits, _Allocator>(__a); + } + +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS + _LIBCPP_HIDE_FROM_ABI _VSTD::wstring generic_wstring() const { return string(); } +#endif + _LIBCPP_HIDE_FROM_ABI _VSTD::u16string generic_u16string() const { return string(); } + _LIBCPP_HIDE_FROM_ABI _VSTD::u32string generic_u32string() const { return string(); } +#endif /* !_LIBCPP_HAS_NO_LOCALIZATION */ +#endif /* !_LIBCPP_WIN32API */ + +private: + int __compare(__string_view) const; + __string_view __root_name() const; + __string_view __root_directory() const; + __string_view __root_path_raw() const; + __string_view __relative_path() const; + __string_view __parent_path() const; + __string_view __filename() const; + __string_view __stem() const; + __string_view __extension() const; + +public: + // compare + _LIBCPP_HIDE_FROM_ABI int compare(const path& __p) const noexcept { + return __compare(__p.__pn_); + } + _LIBCPP_HIDE_FROM_ABI int compare(const string_type& __s) const { + return __compare(__s); + } + _LIBCPP_HIDE_FROM_ABI int compare(__string_view __s) const { + return __compare(__s); + } + _LIBCPP_HIDE_FROM_ABI int compare(const value_type* __s) const { + return __compare(__s); + } + + // decomposition + _LIBCPP_HIDE_FROM_ABI path root_name() const { + return string_type(__root_name()); + } + _LIBCPP_HIDE_FROM_ABI path root_directory() const { + return string_type(__root_directory()); + } + _LIBCPP_HIDE_FROM_ABI path root_path() const { +#if defined(_LIBCPP_WIN32API) + return string_type(__root_path_raw()); +#else + return root_name().append(string_type(__root_directory())); +#endif + } + _LIBCPP_HIDE_FROM_ABI path relative_path() const { + return string_type(__relative_path()); + } + _LIBCPP_HIDE_FROM_ABI path parent_path() const { + return string_type(__parent_path()); + } + _LIBCPP_HIDE_FROM_ABI path filename() const { + return string_type(__filename()); + } + _LIBCPP_HIDE_FROM_ABI path stem() const { return string_type(__stem()); } + _LIBCPP_HIDE_FROM_ABI path extension() const { + return string_type(__extension()); + } + + // query + _LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_HIDE_FROM_ABI bool + empty() const noexcept { + return __pn_.empty(); + } + + _LIBCPP_HIDE_FROM_ABI bool has_root_name() const { + return !__root_name().empty(); + } + _LIBCPP_HIDE_FROM_ABI bool has_root_directory() const { + return !__root_directory().empty(); + } + _LIBCPP_HIDE_FROM_ABI bool has_root_path() const { + return !__root_path_raw().empty(); + } + _LIBCPP_HIDE_FROM_ABI bool has_relative_path() const { + return !__relative_path().empty(); + } + _LIBCPP_HIDE_FROM_ABI bool has_parent_path() const { + return !__parent_path().empty(); + } + _LIBCPP_HIDE_FROM_ABI bool has_filename() const { + return !__filename().empty(); + } + _LIBCPP_HIDE_FROM_ABI bool has_stem() const { return !__stem().empty(); } + _LIBCPP_HIDE_FROM_ABI bool has_extension() const { + return !__extension().empty(); + } + + _LIBCPP_HIDE_FROM_ABI bool is_absolute() const { +#if defined(_LIBCPP_WIN32API) + __string_view __root_name_str = __root_name(); + __string_view __root_dir = __root_directory(); + if (__root_name_str.size() == 2 && __root_name_str[1] == ':') { + // A drive letter with no root directory is relative, e.g. x:example. + return !__root_dir.empty(); + } + // If no root name, it's relative, e.g. \example is relative to the current drive + if (__root_name_str.empty()) + return false; + if (__root_name_str.size() < 3) + return false; + // A server root name, like \\server, is always absolute + if (__root_name_str[0] != '/' && __root_name_str[0] != '\\') + return false; + if (__root_name_str[1] != '/' && __root_name_str[1] != '\\') + return false; + // Seems to be a server root name + return true; +#else + return has_root_directory(); +#endif + } + _LIBCPP_HIDE_FROM_ABI bool is_relative() const { return !is_absolute(); } + + // relative paths + path lexically_normal() const; + path lexically_relative(const path& __base) const; + + _LIBCPP_HIDE_FROM_ABI path lexically_proximate(const path& __base) const { + path __result = this->lexically_relative(__base); + if (__result.native().empty()) + return *this; + return __result; + } + + // iterators + class _LIBCPP_TYPE_VIS iterator; + typedef iterator const_iterator; + + iterator begin() const; + iterator end() const; + +#if !defined(_LIBCPP_HAS_NO_LOCALIZATION) + template + _LIBCPP_HIDE_FROM_ABI friend + typename enable_if::value && + is_same<_Traits, char_traits >::value, + basic_ostream<_CharT, _Traits>&>::type + operator<<(basic_ostream<_CharT, _Traits>& __os, const path& __p) { + __os << _VSTD::__quoted(__p.native()); + return __os; + } + + template + _LIBCPP_HIDE_FROM_ABI friend + typename enable_if::value || + !is_same<_Traits, char_traits >::value, + basic_ostream<_CharT, _Traits>&>::type + operator<<(basic_ostream<_CharT, _Traits>& __os, const path& __p) { + __os << _VSTD::__quoted(__p.string<_CharT, _Traits>()); + return __os; + } + + template + _LIBCPP_HIDE_FROM_ABI friend basic_istream<_CharT, _Traits>& + operator>>(basic_istream<_CharT, _Traits>& __is, path& __p) { + basic_string<_CharT, _Traits> __tmp; + __is >> _VSTD::__quoted(__tmp); + __p = __tmp; + return __is; + } +#endif // !_LIBCPP_HAS_NO_LOCALIZATION + +private: + inline _LIBCPP_HIDE_FROM_ABI path& + __assign_view(__string_view const& __s) noexcept { + __pn_ = string_type(__s); + return *this; + } + string_type __pn_; +}; + +inline _LIBCPP_HIDE_FROM_ABI void swap(path& __lhs, path& __rhs) noexcept { + __lhs.swap(__rhs); +} + +_LIBCPP_FUNC_VIS +size_t hash_value(const path& __p) noexcept; + +_LIBCPP_AVAILABILITY_FILESYSTEM_POP + +_LIBCPP_END_NAMESPACE_FILESYSTEM + +_LIBCPP_BEGIN_NAMESPACE_STD + +template <> +struct _LIBCPP_AVAILABILITY_FILESYSTEM hash<_VSTD_FS::path> : __unary_function<_VSTD_FS::path, size_t> { + _LIBCPP_HIDE_FROM_ABI size_t operator()(_VSTD_FS::path const& __p) const noexcept { + return _VSTD_FS::hash_value(__p); + } +}; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_CXX03_LANG + +#endif // _LIBCPP___FILESYSTEM_PATH_H diff --git a/third_party/libcxx/__filesystem/path_iterator.h b/third_party/libcxx/__filesystem/path_iterator.h new file mode 100644 index 000000000..d754fdce2 --- /dev/null +++ b/third_party/libcxx/__filesystem/path_iterator.h @@ -0,0 +1,134 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FILESYSTEM_PATH_ITERATOR_H +#define _LIBCPP___FILESYSTEM_PATH_ITERATOR_H + +#include <__assert> +#include <__availability> +#include <__config> +#include <__filesystem/path.h> +#include <__iterator/iterator_traits.h> +#include +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#ifndef _LIBCPP_CXX03_LANG + +_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM + +_LIBCPP_AVAILABILITY_FILESYSTEM_PUSH + +class _LIBCPP_TYPE_VIS path::iterator { +public: + enum _ParserState : unsigned char { + _Singular, + _BeforeBegin, + _InRootName, + _InRootDir, + _InFilenames, + _InTrailingSep, + _AtEnd + }; + +public: + typedef input_iterator_tag iterator_category; + typedef bidirectional_iterator_tag iterator_concept; + + typedef path value_type; + typedef ptrdiff_t difference_type; + typedef const path* pointer; + typedef path reference; + +public: + _LIBCPP_INLINE_VISIBILITY + iterator() + : __stashed_elem_(), __path_ptr_(nullptr), __entry_(), + __state_(_Singular) {} + + _LIBCPP_HIDE_FROM_ABI iterator(const iterator&) = default; + _LIBCPP_HIDE_FROM_ABI ~iterator() = default; + + _LIBCPP_HIDE_FROM_ABI iterator& operator=(const iterator&) = default; + + _LIBCPP_INLINE_VISIBILITY + reference operator*() const { return __stashed_elem_; } + + _LIBCPP_INLINE_VISIBILITY + pointer operator->() const { return &__stashed_elem_; } + + _LIBCPP_INLINE_VISIBILITY + iterator& operator++() { + _LIBCPP_ASSERT(__state_ != _Singular, + "attempting to increment a singular iterator"); + _LIBCPP_ASSERT(__state_ != _AtEnd, + "attempting to increment the end iterator"); + return __increment(); + } + + _LIBCPP_INLINE_VISIBILITY + iterator operator++(int) { + iterator __it(*this); + this->operator++(); + return __it; + } + + _LIBCPP_INLINE_VISIBILITY + iterator& operator--() { + _LIBCPP_ASSERT(__state_ != _Singular, + "attempting to decrement a singular iterator"); + _LIBCPP_ASSERT(__entry_.data() != __path_ptr_->native().data(), + "attempting to decrement the begin iterator"); + return __decrement(); + } + + _LIBCPP_INLINE_VISIBILITY + iterator operator--(int) { + iterator __it(*this); + this->operator--(); + return __it; + } + +private: + friend class path; + + inline _LIBCPP_INLINE_VISIBILITY friend bool operator==(const iterator&, + const iterator&); + + iterator& __increment(); + iterator& __decrement(); + + path __stashed_elem_; + const path* __path_ptr_; + path::__string_view __entry_; + _ParserState __state_; +}; + +inline _LIBCPP_INLINE_VISIBILITY bool operator==(const path::iterator& __lhs, + const path::iterator& __rhs) { + return __lhs.__path_ptr_ == __rhs.__path_ptr_ && + __lhs.__entry_.data() == __rhs.__entry_.data(); +} + +inline _LIBCPP_INLINE_VISIBILITY bool operator!=(const path::iterator& __lhs, + const path::iterator& __rhs) { + return !(__lhs == __rhs); +} + +_LIBCPP_AVAILABILITY_FILESYSTEM_POP + +_LIBCPP_END_NAMESPACE_FILESYSTEM + +#endif // _LIBCPP_CXX03_LANG + +#endif // _LIBCPP___FILESYSTEM_PATH_ITERATOR_H diff --git a/third_party/libcxx/__filesystem/perm_options.h b/third_party/libcxx/__filesystem/perm_options.h new file mode 100644 index 000000000..4aba302ed --- /dev/null +++ b/third_party/libcxx/__filesystem/perm_options.h @@ -0,0 +1,77 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FILESYSTEM_PERM_OPTIONS_H +#define _LIBCPP___FILESYSTEM_PERM_OPTIONS_H + +#include <__availability> +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#ifndef _LIBCPP_CXX03_LANG + +_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM + +_LIBCPP_AVAILABILITY_FILESYSTEM_PUSH + +enum class _LIBCPP_ENUM_VIS perm_options : unsigned char { + replace = 1, + add = 2, + remove = 4, + nofollow = 8 +}; + +_LIBCPP_INLINE_VISIBILITY +inline constexpr perm_options operator&(perm_options __lhs, perm_options __rhs) { + return static_cast(static_cast(__lhs) & + static_cast(__rhs)); +} + +_LIBCPP_INLINE_VISIBILITY +inline constexpr perm_options operator|(perm_options __lhs, perm_options __rhs) { + return static_cast(static_cast(__lhs) | + static_cast(__rhs)); +} + +_LIBCPP_INLINE_VISIBILITY +inline constexpr perm_options operator^(perm_options __lhs, perm_options __rhs) { + return static_cast(static_cast(__lhs) ^ + static_cast(__rhs)); +} + +_LIBCPP_INLINE_VISIBILITY +inline constexpr perm_options operator~(perm_options __lhs) { + return static_cast(~static_cast(__lhs)); +} + +_LIBCPP_INLINE_VISIBILITY +inline perm_options& operator&=(perm_options& __lhs, perm_options __rhs) { + return __lhs = __lhs & __rhs; +} + +_LIBCPP_INLINE_VISIBILITY +inline perm_options& operator|=(perm_options& __lhs, perm_options __rhs) { + return __lhs = __lhs | __rhs; +} + +_LIBCPP_INLINE_VISIBILITY +inline perm_options& operator^=(perm_options& __lhs, perm_options __rhs) { + return __lhs = __lhs ^ __rhs; +} + +_LIBCPP_AVAILABILITY_FILESYSTEM_POP + +_LIBCPP_END_NAMESPACE_FILESYSTEM + +#endif // _LIBCPP_CXX03_LANG + +#endif // _LIBCPP___FILESYSTEM_PERM_OPTIONS_H diff --git a/third_party/libcxx/__filesystem/perms.h b/third_party/libcxx/__filesystem/perms.h new file mode 100644 index 000000000..df4590057 --- /dev/null +++ b/third_party/libcxx/__filesystem/perms.h @@ -0,0 +1,95 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FILESYSTEM_PERMS_H +#define _LIBCPP___FILESYSTEM_PERMS_H + +#include <__availability> +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#ifndef _LIBCPP_CXX03_LANG + +_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM + +_LIBCPP_AVAILABILITY_FILESYSTEM_PUSH + +// On Windows, these permission bits map to one single readonly flag per +// file, and the executable bit is always returned as set. When setting +// permissions, as long as the write bit is set for either owner, group or +// others, the readonly flag is cleared. +enum class _LIBCPP_ENUM_VIS perms : unsigned { + none = 0, + + owner_read = 0400, + owner_write = 0200, + owner_exec = 0100, + owner_all = 0700, + + group_read = 040, + group_write = 020, + group_exec = 010, + group_all = 070, + + others_read = 04, + others_write = 02, + others_exec = 01, + others_all = 07, + + all = 0777, + + set_uid = 04000, + set_gid = 02000, + sticky_bit = 01000, + mask = 07777, + unknown = 0xFFFF, +}; + +_LIBCPP_INLINE_VISIBILITY +inline constexpr perms operator&(perms __lhs, perms __rhs) { + return static_cast(static_cast(__lhs) & + static_cast(__rhs)); +} + +_LIBCPP_INLINE_VISIBILITY +inline constexpr perms operator|(perms __lhs, perms __rhs) { + return static_cast(static_cast(__lhs) | + static_cast(__rhs)); +} + +_LIBCPP_INLINE_VISIBILITY +inline constexpr perms operator^(perms __lhs, perms __rhs) { + return static_cast(static_cast(__lhs) ^ + static_cast(__rhs)); +} + +_LIBCPP_INLINE_VISIBILITY +inline constexpr perms operator~(perms __lhs) { + return static_cast(~static_cast(__lhs)); +} + +_LIBCPP_INLINE_VISIBILITY +inline perms& operator&=(perms& __lhs, perms __rhs) { return __lhs = __lhs & __rhs; } + +_LIBCPP_INLINE_VISIBILITY +inline perms& operator|=(perms& __lhs, perms __rhs) { return __lhs = __lhs | __rhs; } + +_LIBCPP_INLINE_VISIBILITY +inline perms& operator^=(perms& __lhs, perms __rhs) { return __lhs = __lhs ^ __rhs; } + +_LIBCPP_AVAILABILITY_FILESYSTEM_POP + +_LIBCPP_END_NAMESPACE_FILESYSTEM + +#endif // _LIBCPP_CXX03_LANG + +#endif // _LIBCPP___FILESYSTEM_PERMS_H diff --git a/third_party/libcxx/__filesystem/recursive_directory_iterator.h b/third_party/libcxx/__filesystem/recursive_directory_iterator.h new file mode 100644 index 000000000..3d5c02540 --- /dev/null +++ b/third_party/libcxx/__filesystem/recursive_directory_iterator.h @@ -0,0 +1,186 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FILESYSTEM_RECURSIVE_DIRECTORY_ITERATOR_H +#define _LIBCPP___FILESYSTEM_RECURSIVE_DIRECTORY_ITERATOR_H + +#include <__availability> +#include <__config> +#include <__filesystem/directory_entry.h> +#include <__filesystem/directory_options.h> +#include <__filesystem/path.h> +#include <__iterator/iterator_traits.h> +#include <__memory/shared_ptr.h> +#include <__ranges/enable_borrowed_range.h> +#include <__ranges/enable_view.h> +#include <__system_error/error_code.h> +#include <__utility/move.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#ifndef _LIBCPP_CXX03_LANG + +_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM + +_LIBCPP_AVAILABILITY_FILESYSTEM_PUSH + +class recursive_directory_iterator { +public: + using value_type = directory_entry; + using difference_type = ptrdiff_t; + using pointer = directory_entry const*; + using reference = directory_entry const&; + using iterator_category = input_iterator_tag; + +public: + // constructors and destructor + _LIBCPP_INLINE_VISIBILITY + recursive_directory_iterator() noexcept : __rec_(false) {} + + _LIBCPP_INLINE_VISIBILITY + explicit recursive_directory_iterator( + const path& __p, directory_options __xoptions = directory_options::none) + : recursive_directory_iterator(__p, __xoptions, nullptr) {} + + _LIBCPP_INLINE_VISIBILITY + recursive_directory_iterator(const path& __p, directory_options __xoptions, + error_code& __ec) + : recursive_directory_iterator(__p, __xoptions, &__ec) {} + + _LIBCPP_INLINE_VISIBILITY + recursive_directory_iterator(const path& __p, error_code& __ec) + : recursive_directory_iterator(__p, directory_options::none, &__ec) {} + + _LIBCPP_HIDE_FROM_ABI recursive_directory_iterator(const recursive_directory_iterator&) = default; + _LIBCPP_HIDE_FROM_ABI recursive_directory_iterator(recursive_directory_iterator&&) = default; + + _LIBCPP_HIDE_FROM_ABI recursive_directory_iterator& + operator=(const recursive_directory_iterator&) = default; + + _LIBCPP_INLINE_VISIBILITY + recursive_directory_iterator& + operator=(recursive_directory_iterator&& __o) noexcept { + // non-default implementation provided to support self-move assign. + if (this != &__o) { + __imp_ = _VSTD::move(__o.__imp_); + __rec_ = __o.__rec_; + } + return *this; + } + + _LIBCPP_HIDE_FROM_ABI ~recursive_directory_iterator() = default; + + _LIBCPP_INLINE_VISIBILITY + const directory_entry& operator*() const { return __dereference(); } + + _LIBCPP_INLINE_VISIBILITY + const directory_entry* operator->() const { return &__dereference(); } + + _LIBCPP_HIDE_FROM_ABI recursive_directory_iterator& operator++() { return __increment(); } + + _LIBCPP_INLINE_VISIBILITY + __dir_element_proxy operator++(int) { + __dir_element_proxy __p(**this); + __increment(); + return __p; + } + + _LIBCPP_INLINE_VISIBILITY + recursive_directory_iterator& increment(error_code& __ec) { + return __increment(&__ec); + } + + _LIBCPP_FUNC_VIS directory_options options() const; + _LIBCPP_FUNC_VIS int depth() const; + + _LIBCPP_INLINE_VISIBILITY + void pop() { __pop(); } + + _LIBCPP_INLINE_VISIBILITY + void pop(error_code& __ec) { __pop(&__ec); } + + _LIBCPP_INLINE_VISIBILITY + bool recursion_pending() const { return __rec_; } + + _LIBCPP_INLINE_VISIBILITY + void disable_recursion_pending() { __rec_ = false; } + +private: + _LIBCPP_FUNC_VIS + recursive_directory_iterator(const path& __p, directory_options __opt, + error_code* __ec); + + _LIBCPP_FUNC_VIS + const directory_entry& __dereference() const; + + _LIBCPP_FUNC_VIS + bool __try_recursion(error_code* __ec); + + _LIBCPP_FUNC_VIS + void __advance(error_code* __ec = nullptr); + + _LIBCPP_FUNC_VIS + recursive_directory_iterator& __increment(error_code* __ec = nullptr); + + _LIBCPP_FUNC_VIS + void __pop(error_code* __ec = nullptr); + + inline _LIBCPP_INLINE_VISIBILITY friend bool + operator==(const recursive_directory_iterator&, + const recursive_directory_iterator&) noexcept; + + struct _LIBCPP_HIDDEN __shared_imp; + shared_ptr<__shared_imp> __imp_; + bool __rec_; +}; // class recursive_directory_iterator + +inline _LIBCPP_INLINE_VISIBILITY bool +operator==(const recursive_directory_iterator& __lhs, + const recursive_directory_iterator& __rhs) noexcept { + return __lhs.__imp_ == __rhs.__imp_; +} + +_LIBCPP_INLINE_VISIBILITY +inline bool operator!=(const recursive_directory_iterator& __lhs, + const recursive_directory_iterator& __rhs) noexcept { + return !(__lhs == __rhs); +} +// enable recursive_directory_iterator range-based for statements +inline _LIBCPP_INLINE_VISIBILITY recursive_directory_iterator +begin(recursive_directory_iterator __iter) noexcept { + return __iter; +} + +inline _LIBCPP_INLINE_VISIBILITY recursive_directory_iterator +end(recursive_directory_iterator) noexcept { + return recursive_directory_iterator(); +} + +_LIBCPP_AVAILABILITY_FILESYSTEM_POP + +_LIBCPP_END_NAMESPACE_FILESYSTEM + +#if _LIBCPP_STD_VER >= 20 + +template <> +_LIBCPP_AVAILABILITY_FILESYSTEM +inline constexpr bool _VSTD::ranges::enable_borrowed_range<_VSTD_FS::recursive_directory_iterator> = true; + +template <> +_LIBCPP_AVAILABILITY_FILESYSTEM +inline constexpr bool _VSTD::ranges::enable_view<_VSTD_FS::recursive_directory_iterator> = true; + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP_CXX03_LANG + +#endif // _LIBCPP___FILESYSTEM_RECURSIVE_DIRECTORY_ITERATOR_H diff --git a/third_party/libcxx/__filesystem/space_info.h b/third_party/libcxx/__filesystem/space_info.h new file mode 100644 index 000000000..25fcb9a77 --- /dev/null +++ b/third_party/libcxx/__filesystem/space_info.h @@ -0,0 +1,43 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FILESYSTEM_SPACE_INFO_H +#define _LIBCPP___FILESYSTEM_SPACE_INFO_H + +#include <__availability> +#include <__config> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#ifndef _LIBCPP_CXX03_LANG + +_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM + +_LIBCPP_AVAILABILITY_FILESYSTEM_PUSH + +struct _LIBCPP_TYPE_VIS space_info { + uintmax_t capacity; + uintmax_t free; + uintmax_t available; + +# if _LIBCPP_STD_VER >= 20 + friend _LIBCPP_HIDE_FROM_ABI bool operator==(const space_info&, const space_info&) = default; +# endif +}; + +_LIBCPP_AVAILABILITY_FILESYSTEM_POP + +_LIBCPP_END_NAMESPACE_FILESYSTEM + +#endif // _LIBCPP_CXX03_LANG + +#endif // _LIBCPP___FILESYSTEM_SPACE_INFO_H diff --git a/third_party/libcxx/__filesystem/u8path.h b/third_party/libcxx/__filesystem/u8path.h new file mode 100644 index 000000000..ebc1159ee --- /dev/null +++ b/third_party/libcxx/__filesystem/u8path.h @@ -0,0 +1,107 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FILESYSTEM_U8PATH_H +#define _LIBCPP___FILESYSTEM_U8PATH_H + +#include <__algorithm/unwrap_iter.h> +#include <__availability> +#include <__config> +#include <__filesystem/path.h> +#include + +// Only required on Windows for __widen_from_utf8, and included conservatively +// because it requires support for localization. +#if defined(_LIBCPP_WIN32API) +# include +#endif + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#ifndef _LIBCPP_CXX03_LANG + +_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM + +_LIBCPP_AVAILABILITY_FILESYSTEM_PUSH + +template +_LIBCPP_INLINE_VISIBILITY _LIBCPP_DEPRECATED_WITH_CHAR8_T + typename enable_if<__is_pathable<_InputIt>::value, path>::type + u8path(_InputIt __f, _InputIt __l) { + static_assert( +#ifndef _LIBCPP_HAS_NO_CHAR8_T + is_same::__char_type, char8_t>::value || +#endif + is_same::__char_type, char>::value, + "u8path(Iter, Iter) requires Iter have a value_type of type 'char'" + " or 'char8_t'"); +#if defined(_LIBCPP_WIN32API) + string __tmp(__f, __l); + using _CVT = __widen_from_utf8; + _VSTD::wstring __w; + __w.reserve(__tmp.size()); + _CVT()(back_inserter(__w), __tmp.data(), __tmp.data() + __tmp.size()); + return path(__w); +#else + return path(__f, __l); +#endif /* !_LIBCPP_WIN32API */ +} + +#if defined(_LIBCPP_WIN32API) +template +_LIBCPP_INLINE_VISIBILITY _LIBCPP_DEPRECATED_WITH_CHAR8_T + typename enable_if<__is_pathable<_InputIt>::value, path>::type + u8path(_InputIt __f, _NullSentinel) { + static_assert( +#ifndef _LIBCPP_HAS_NO_CHAR8_T + is_same::__char_type, char8_t>::value || +#endif + is_same::__char_type, char>::value, + "u8path(Iter, Iter) requires Iter have a value_type of type 'char'" + " or 'char8_t'"); + string __tmp; + const char __sentinel = char{}; + for (; *__f != __sentinel; ++__f) + __tmp.push_back(*__f); + using _CVT = __widen_from_utf8; + _VSTD::wstring __w; + __w.reserve(__tmp.size()); + _CVT()(back_inserter(__w), __tmp.data(), __tmp.data() + __tmp.size()); + return path(__w); +} +#endif /* _LIBCPP_WIN32API */ + +template +_LIBCPP_INLINE_VISIBILITY _LIBCPP_DEPRECATED_WITH_CHAR8_T + typename enable_if<__is_pathable<_Source>::value, path>::type + u8path(const _Source& __s) { + static_assert( +#ifndef _LIBCPP_HAS_NO_CHAR8_T + is_same::__char_type, char8_t>::value || +#endif + is_same::__char_type, char>::value, + "u8path(Source const&) requires Source have a character type of type " + "'char' or 'char8_t'"); +#if defined(_LIBCPP_WIN32API) + using _Traits = __is_pathable<_Source>; + return u8path(_VSTD::__unwrap_iter(_Traits::__range_begin(__s)), _VSTD::__unwrap_iter(_Traits::__range_end(__s))); +#else + return path(__s); +#endif +} + +_LIBCPP_AVAILABILITY_FILESYSTEM_POP + +_LIBCPP_END_NAMESPACE_FILESYSTEM + +#endif // _LIBCPP_CXX03_LANG + +#endif // _LIBCPP___FILESYSTEM_U8PATH_H diff --git a/third_party/libcxx/__format/buffer.h b/third_party/libcxx/__format/buffer.h new file mode 100644 index 000000000..e74ca8f57 --- /dev/null +++ b/third_party/libcxx/__format/buffer.h @@ -0,0 +1,643 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FORMAT_BUFFER_H +#define _LIBCPP___FORMAT_BUFFER_H + +#include <__algorithm/copy_n.h> +#include <__algorithm/fill_n.h> +#include <__algorithm/max.h> +#include <__algorithm/min.h> +#include <__algorithm/ranges_copy_n.h> +#include <__algorithm/transform.h> +#include <__algorithm/unwrap_iter.h> +#include <__concepts/same_as.h> +#include <__config> +#include <__format/concepts.h> +#include <__format/enable_insertable.h> +#include <__format/format_to_n_result.h> +#include <__iterator/back_insert_iterator.h> +#include <__iterator/concepts.h> +#include <__iterator/incrementable_traits.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/wrap_iter.h> +#include <__memory/addressof.h> +#include <__memory/allocate_at_least.h> +#include <__memory/allocator_traits.h> +#include <__memory/construct_at.h> +#include <__memory/ranges_construct_at.h> +#include <__memory/uninitialized_algorithms.h> +#include <__type_traits/add_pointer.h> +#include <__type_traits/conditional.h> +#include <__utility/exception_guard.h> +#include <__utility/move.h> +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +namespace __format { + +/// A "buffer" that handles writing to the proper iterator. +/// +/// This helper is used together with the @ref back_insert_iterator to offer +/// type-erasure for the formatting functions. This reduces the number to +/// template instantiations. +template <__fmt_char_type _CharT> +class _LIBCPP_TEMPLATE_VIS __output_buffer { +public: + using value_type = _CharT; + + template + _LIBCPP_HIDE_FROM_ABI explicit __output_buffer(_CharT* __ptr, size_t __capacity, _Tp* __obj) + : __ptr_(__ptr), + __capacity_(__capacity), + __flush_([](_CharT* __p, size_t __n, void* __o) { static_cast<_Tp*>(__o)->__flush(__p, __n); }), + __obj_(__obj) {} + + _LIBCPP_HIDE_FROM_ABI void __reset(_CharT* __ptr, size_t __capacity) { + __ptr_ = __ptr; + __capacity_ = __capacity; + } + + _LIBCPP_HIDE_FROM_ABI auto __make_output_iterator() { return std::back_insert_iterator{*this}; } + + // Used in std::back_insert_iterator. + _LIBCPP_HIDE_FROM_ABI void push_back(_CharT __c) { + __ptr_[__size_++] = __c; + + // Profiling showed flushing after adding is more efficient than flushing + // when entering the function. + if (__size_ == __capacity_) + __flush(); + } + + /// Copies the input __str to the buffer. + /// + /// Since some of the input is generated by std::to_chars, there needs to be a + /// conversion when _CharT is wchar_t. + template <__fmt_char_type _InCharT> + _LIBCPP_HIDE_FROM_ABI void __copy(basic_string_view<_InCharT> __str) { + // When the underlying iterator is a simple iterator the __capacity_ is + // infinite. For a string or container back_inserter it isn't. This means + // adding a large string the the buffer can cause some overhead. In that + // case a better approach could be: + // - flush the buffer + // - container.append(__str.begin(), __str.end()); + // The same holds true for the fill. + // For transform it might be slightly harder, however the use case for + // transform is slightly less common; it converts hexadecimal values to + // upper case. For integral these strings are short. + // TODO FMT Look at the improvements above. + size_t __n = __str.size(); + + __flush_on_overflow(__n); + if (__n <= __capacity_) { + _VSTD::copy_n(__str.data(), __n, _VSTD::addressof(__ptr_[__size_])); + __size_ += __n; + return; + } + + // The output doesn't fit in the internal buffer. + // Copy the data in "__capacity_" sized chunks. + _LIBCPP_ASSERT(__size_ == 0, "the buffer should be flushed by __flush_on_overflow"); + const _InCharT* __first = __str.data(); + do { + size_t __chunk = _VSTD::min(__n, __capacity_); + _VSTD::copy_n(__first, __chunk, _VSTD::addressof(__ptr_[__size_])); + __size_ = __chunk; + __first += __chunk; + __n -= __chunk; + __flush(); + } while (__n); + } + + /// A std::transform wrapper. + /// + /// Like @ref __copy it may need to do type conversion. + template <__fmt_char_type _InCharT, class _UnaryOperation> + _LIBCPP_HIDE_FROM_ABI void __transform(const _InCharT* __first, const _InCharT* __last, _UnaryOperation __operation) { + _LIBCPP_ASSERT(__first <= __last, "not a valid range"); + + size_t __n = static_cast(__last - __first); + __flush_on_overflow(__n); + if (__n <= __capacity_) { + _VSTD::transform(__first, __last, _VSTD::addressof(__ptr_[__size_]), _VSTD::move(__operation)); + __size_ += __n; + return; + } + + // The output doesn't fit in the internal buffer. + // Transform the data in "__capacity_" sized chunks. + _LIBCPP_ASSERT(__size_ == 0, "the buffer should be flushed by __flush_on_overflow"); + do { + size_t __chunk = _VSTD::min(__n, __capacity_); + _VSTD::transform(__first, __first + __chunk, _VSTD::addressof(__ptr_[__size_]), __operation); + __size_ = __chunk; + __first += __chunk; + __n -= __chunk; + __flush(); + } while (__n); + } + + /// A \c fill_n wrapper. + _LIBCPP_HIDE_FROM_ABI void __fill(size_t __n, _CharT __value) { + __flush_on_overflow(__n); + if (__n <= __capacity_) { + _VSTD::fill_n(_VSTD::addressof(__ptr_[__size_]), __n, __value); + __size_ += __n; + return; + } + + // The output doesn't fit in the internal buffer. + // Fill the buffer in "__capacity_" sized chunks. + _LIBCPP_ASSERT(__size_ == 0, "the buffer should be flushed by __flush_on_overflow"); + do { + size_t __chunk = _VSTD::min(__n, __capacity_); + _VSTD::fill_n(_VSTD::addressof(__ptr_[__size_]), __chunk, __value); + __size_ = __chunk; + __n -= __chunk; + __flush(); + } while (__n); + } + + _LIBCPP_HIDE_FROM_ABI void __flush() { + __flush_(__ptr_, __size_, __obj_); + __size_ = 0; + } + +private: + _CharT* __ptr_; + size_t __capacity_; + size_t __size_{0}; + void (*__flush_)(_CharT*, size_t, void*); + void* __obj_; + + /// Flushes the buffer when the output operation would overflow the buffer. + /// + /// A simple approach for the overflow detection would be something along the + /// lines: + /// \code + /// // The internal buffer is large enough. + /// if (__n <= __capacity_) { + /// // Flush when we really would overflow. + /// if (__size_ + __n >= __capacity_) + /// __flush(); + /// ... + /// } + /// \endcode + /// + /// This approach works for all cases but one: + /// A __format_to_n_buffer_base where \ref __enable_direct_output is true. + /// In that case the \ref __capacity_ of the buffer changes during the first + /// \ref __flush. During that operation the output buffer switches from its + /// __writer_ to its __storage_. The \ref __capacity_ of the former depends + /// on the value of n, of the latter is a fixed size. For example: + /// - a format_to_n call with a 10'000 char buffer, + /// - the buffer is filled with 9'500 chars, + /// - adding 1'000 elements would overflow the buffer so the buffer gets + /// changed and the \ref __capacity_ decreases from 10'000 to + /// __buffer_size (256 at the time of writing). + /// + /// This means that the \ref __flush for this class may need to copy a part of + /// the internal buffer to the proper output. In this example there will be + /// 500 characters that need this copy operation. + /// + /// Note it would be more efficient to write 500 chars directly and then swap + /// the buffers. This would make the code more complex and \ref format_to_n is + /// not the most common use case. Therefore the optimization isn't done. + _LIBCPP_HIDE_FROM_ABI void __flush_on_overflow(size_t __n) { + if (__size_ + __n >= __capacity_) + __flush(); + } +}; + +/// A storage using an internal buffer. +/// +/// This storage is used when writing a single element to the output iterator +/// is expensive. +template <__fmt_char_type _CharT> +class _LIBCPP_TEMPLATE_VIS __internal_storage { +public: + _LIBCPP_HIDE_FROM_ABI _CharT* __begin() { return __buffer_; } + + static constexpr size_t __buffer_size = 256 / sizeof(_CharT); + +private: + _CharT __buffer_[__buffer_size]; +}; + +/// A storage writing directly to the storage. +/// +/// This requires the storage to be a contiguous buffer of \a _CharT. +/// Since the output is directly written to the underlying storage this class +/// is just an empty class. +template <__fmt_char_type _CharT> +class _LIBCPP_TEMPLATE_VIS __direct_storage {}; + +template +concept __enable_direct_output = __fmt_char_type<_CharT> && + (same_as<_OutIt, _CharT*> +#ifndef _LIBCPP_ENABLE_DEBUG_MODE + || same_as<_OutIt, __wrap_iter<_CharT*>> +#endif + ); + +/// Write policy for directly writing to the underlying output. +template +class _LIBCPP_TEMPLATE_VIS __writer_direct { +public: + _LIBCPP_HIDE_FROM_ABI explicit __writer_direct(_OutIt __out_it) + : __out_it_(__out_it) {} + + _LIBCPP_HIDE_FROM_ABI _OutIt __out_it() { return __out_it_; } + + _LIBCPP_HIDE_FROM_ABI void __flush(_CharT*, size_t __n) { + // _OutIt can be a __wrap_iter. Therefore the original iterator + // is adjusted. + __out_it_ += __n; + } + +private: + _OutIt __out_it_; +}; + +/// Write policy for copying the buffer to the output. +template +class _LIBCPP_TEMPLATE_VIS __writer_iterator { +public: + _LIBCPP_HIDE_FROM_ABI explicit __writer_iterator(_OutIt __out_it) + : __out_it_{_VSTD::move(__out_it)} {} + + _LIBCPP_HIDE_FROM_ABI _OutIt __out_it() && { return std::move(__out_it_); } + + _LIBCPP_HIDE_FROM_ABI void __flush(_CharT* __ptr, size_t __n) { + __out_it_ = std::ranges::copy_n(__ptr, __n, std::move(__out_it_)).out; + } + +private: + _OutIt __out_it_; +}; + +/// Concept to see whether a \a _Container is insertable. +/// +/// The concept is used to validate whether multiple calls to a +/// \ref back_insert_iterator can be replace by a call to \c _Container::insert. +/// +/// \note a \a _Container needs to opt-in to the concept by specializing +/// \ref __enable_insertable. +template +concept __insertable = + __enable_insertable<_Container> && __fmt_char_type && + requires(_Container& __t, add_pointer_t __first, + add_pointer_t __last) { __t.insert(__t.end(), __first, __last); }; + +/// Extract the container type of a \ref back_insert_iterator. +template +struct _LIBCPP_TEMPLATE_VIS __back_insert_iterator_container { + using type = void; +}; + +template <__insertable _Container> +struct _LIBCPP_TEMPLATE_VIS __back_insert_iterator_container> { + using type = _Container; +}; + +/// Write policy for inserting the buffer in a container. +template +class _LIBCPP_TEMPLATE_VIS __writer_container { +public: + using _CharT = typename _Container::value_type; + + _LIBCPP_HIDE_FROM_ABI explicit __writer_container(back_insert_iterator<_Container> __out_it) + : __container_{__out_it.__get_container()} {} + + _LIBCPP_HIDE_FROM_ABI auto __out_it() { return std::back_inserter(*__container_); } + + _LIBCPP_HIDE_FROM_ABI void __flush(_CharT* __ptr, size_t __n) { + __container_->insert(__container_->end(), __ptr, __ptr + __n); + } + +private: + _Container* __container_; +}; + +/// Selects the type of the writer used for the output iterator. +template +class _LIBCPP_TEMPLATE_VIS __writer_selector { + using _Container = typename __back_insert_iterator_container<_OutIt>::type; + +public: + using type = conditional_t, __writer_container<_Container>, + conditional_t<__enable_direct_output<_OutIt, _CharT>, __writer_direct<_OutIt, _CharT>, + __writer_iterator<_OutIt, _CharT>>>; +}; + +/// The generic formatting buffer. +template +requires(output_iterator<_OutIt, const _CharT&>) class _LIBCPP_TEMPLATE_VIS + __format_buffer { + using _Storage = + conditional_t<__enable_direct_output<_OutIt, _CharT>, + __direct_storage<_CharT>, __internal_storage<_CharT>>; + +public: + _LIBCPP_HIDE_FROM_ABI explicit __format_buffer(_OutIt __out_it) + requires(same_as<_Storage, __internal_storage<_CharT>>) + : __output_(__storage_.__begin(), __storage_.__buffer_size, this), __writer_(_VSTD::move(__out_it)) {} + + _LIBCPP_HIDE_FROM_ABI explicit __format_buffer(_OutIt __out_it) requires( + same_as<_Storage, __direct_storage<_CharT>>) + : __output_(_VSTD::__unwrap_iter(__out_it), size_t(-1), this), + __writer_(_VSTD::move(__out_it)) {} + + _LIBCPP_HIDE_FROM_ABI auto __make_output_iterator() { return __output_.__make_output_iterator(); } + + _LIBCPP_HIDE_FROM_ABI void __flush(_CharT* __ptr, size_t __n) { __writer_.__flush(__ptr, __n); } + + _LIBCPP_HIDE_FROM_ABI _OutIt __out_it() && { + __output_.__flush(); + return _VSTD::move(__writer_).__out_it(); + } + +private: + _LIBCPP_NO_UNIQUE_ADDRESS _Storage __storage_; + __output_buffer<_CharT> __output_; + typename __writer_selector<_OutIt, _CharT>::type __writer_; +}; + +/// A buffer that counts the number of insertions. +/// +/// Since \ref formatted_size only needs to know the size, the output itself is +/// discarded. +template <__fmt_char_type _CharT> +class _LIBCPP_TEMPLATE_VIS __formatted_size_buffer { +public: + _LIBCPP_HIDE_FROM_ABI auto __make_output_iterator() { return __output_.__make_output_iterator(); } + + _LIBCPP_HIDE_FROM_ABI void __flush(const _CharT*, size_t __n) { __size_ += __n; } + + _LIBCPP_HIDE_FROM_ABI size_t __result() && { + __output_.__flush(); + return __size_; + } + +private: + __internal_storage<_CharT> __storage_; + __output_buffer<_CharT> __output_{__storage_.__begin(), __storage_.__buffer_size, this}; + size_t __size_{0}; +}; + +/// The base of a buffer that counts and limits the number of insertions. +template + requires(output_iterator<_OutIt, const _CharT&>) +struct _LIBCPP_TEMPLATE_VIS __format_to_n_buffer_base { + using _Size = iter_difference_t<_OutIt>; + +public: + _LIBCPP_HIDE_FROM_ABI explicit __format_to_n_buffer_base(_OutIt __out_it, _Size __max_size) + : __writer_(_VSTD::move(__out_it)), __max_size_(_VSTD::max(_Size(0), __max_size)) {} + + _LIBCPP_HIDE_FROM_ABI void __flush(_CharT* __ptr, size_t __n) { + if (_Size(__size_) <= __max_size_) + __writer_.__flush(__ptr, _VSTD::min(_Size(__n), __max_size_ - __size_)); + __size_ += __n; + } + +protected: + __internal_storage<_CharT> __storage_; + __output_buffer<_CharT> __output_{__storage_.__begin(), __storage_.__buffer_size, this}; + typename __writer_selector<_OutIt, _CharT>::type __writer_; + + _Size __max_size_; + _Size __size_{0}; +}; + +/// The base of a buffer that counts and limits the number of insertions. +/// +/// This version is used when \c __enable_direct_output<_OutIt, _CharT> == true. +/// +/// This class limits the size available to the direct writer so it will not +/// exceed the maximum number of code units. +template + requires(output_iterator<_OutIt, const _CharT&>) +class _LIBCPP_TEMPLATE_VIS __format_to_n_buffer_base<_OutIt, _CharT, true> { + using _Size = iter_difference_t<_OutIt>; + +public: + _LIBCPP_HIDE_FROM_ABI explicit __format_to_n_buffer_base(_OutIt __out_it, _Size __max_size) + : __output_(_VSTD::__unwrap_iter(__out_it), __max_size, this), + __writer_(_VSTD::move(__out_it)), + __max_size_(__max_size) { + if (__max_size <= 0) [[unlikely]] + __output_.__reset(__storage_.__begin(), __storage_.__buffer_size); + } + + _LIBCPP_HIDE_FROM_ABI void __flush(_CharT* __ptr, size_t __n) { + // A __flush to the direct writer happens in the following occasions: + // - The format function has written the maximum number of allowed code + // units. At this point it's no longer valid to write to this writer. So + // switch to the internal storage. This internal storage doesn't need to + // be written anywhere so the __flush for that storage writes no output. + // - Like above, but the next "mass write" operation would overflow the + // buffer. In that case the buffer is pre-emptively switched. The still + // valid code units will be written separately. + // - The format_to_n function is finished. In this case there's no need to + // switch the buffer, but for simplicity the buffers are still switched. + // When the __max_size <= 0 the constructor already switched the buffers. + if (__size_ == 0 && __ptr != __storage_.__begin()) { + __writer_.__flush(__ptr, __n); + __output_.__reset(__storage_.__begin(), __storage_.__buffer_size); + } else if (__size_ < __max_size_) { + // Copies a part of the internal buffer to the output up to n characters. + // See __output_buffer<_CharT>::__flush_on_overflow for more information. + _Size __s = _VSTD::min(_Size(__n), __max_size_ - __size_); + std::copy_n(__ptr, __s, __writer_.__out_it()); + __writer_.__flush(__ptr, __s); + } + + __size_ += __n; + } + +protected: + __internal_storage<_CharT> __storage_; + __output_buffer<_CharT> __output_; + __writer_direct<_OutIt, _CharT> __writer_; + + _Size __max_size_; + _Size __size_{0}; +}; + +/// The buffer that counts and limits the number of insertions. +template + requires(output_iterator<_OutIt, const _CharT&>) +struct _LIBCPP_TEMPLATE_VIS __format_to_n_buffer final + : public __format_to_n_buffer_base< _OutIt, _CharT, __enable_direct_output<_OutIt, _CharT>> { + using _Base = __format_to_n_buffer_base<_OutIt, _CharT, __enable_direct_output<_OutIt, _CharT>>; + using _Size = iter_difference_t<_OutIt>; + +public: + _LIBCPP_HIDE_FROM_ABI explicit __format_to_n_buffer(_OutIt __out_it, _Size __max_size) + : _Base(_VSTD::move(__out_it), __max_size) {} + _LIBCPP_HIDE_FROM_ABI auto __make_output_iterator() { return this->__output_.__make_output_iterator(); } + + _LIBCPP_HIDE_FROM_ABI format_to_n_result<_OutIt> __result() && { + this->__output_.__flush(); + return {_VSTD::move(this->__writer_).__out_it(), this->__size_}; + } +}; + +// A dynamically growing buffer intended to be used for retargeting a context. +// +// P2286 Formatting ranges adds range formatting support. It allows the user to +// specify the minimum width for the entire formatted range. The width of the +// range is not known until the range is formatted. Formatting is done to an +// output_iterator so there's no guarantee it would be possible to add the fill +// to the front of the output. Instead the range is formatted to a temporary +// buffer and that buffer is formatted as a string. +// +// There is an issue with that approach, the format context used in +// std::formatter::format contains the output iterator used as part of its +// type. So using this output iterator means there needs to be a new format +// context and the format arguments need to be retargeted to the new context. +// This retargeting is done by a basic_format_context specialized for the +// __iterator of this container. +// +// This class uses its own buffer management, since using vector +// would lead to a circular include with formatter for vector. +template <__fmt_char_type _CharT> +class _LIBCPP_TEMPLATE_VIS __retarget_buffer { + using _Alloc = allocator<_CharT>; + +public: + using value_type = _CharT; + + struct __iterator { + using difference_type = ptrdiff_t; + + _LIBCPP_HIDE_FROM_ABI constexpr explicit __iterator(__retarget_buffer& __buffer) + : __buffer_(std::addressof(__buffer)) {} + _LIBCPP_HIDE_FROM_ABI constexpr __iterator& operator=(const _CharT& __c) { + __buffer_->push_back(__c); + return *this; + } + _LIBCPP_HIDE_FROM_ABI constexpr __iterator& operator=(_CharT&& __c) { + __buffer_->push_back(__c); + return *this; + } + + _LIBCPP_HIDE_FROM_ABI constexpr __iterator& operator*() { return *this; } + _LIBCPP_HIDE_FROM_ABI constexpr __iterator& operator++() { return *this; } + _LIBCPP_HIDE_FROM_ABI constexpr __iterator operator++(int) { return *this; } + __retarget_buffer* __buffer_; + }; + + __retarget_buffer(const __retarget_buffer&) = delete; + __retarget_buffer& operator=(const __retarget_buffer&) = delete; + + _LIBCPP_HIDE_FROM_ABI explicit __retarget_buffer(size_t __size_hint) { + auto __result = std::__allocate_at_least(__alloc_, __size_hint ? __size_hint : 256 / sizeof(_CharT)); + __ptr_ = __result.ptr; + __capacity_ = __result.count; + } + + _LIBCPP_HIDE_FROM_ABI ~__retarget_buffer() { + ranges::destroy_n(__ptr_, __size_); + allocator_traits<_Alloc>::deallocate(__alloc_, __ptr_, __capacity_); + } + + _LIBCPP_HIDE_FROM_ABI __iterator __make_output_iterator() { return __iterator{*this}; } + + _LIBCPP_HIDE_FROM_ABI void push_back(_CharT __c) { + std::construct_at(__ptr_ + __size_, __c); + ++__size_; + + if (__size_ == __capacity_) + __grow_buffer(); + } + + template <__fmt_char_type _InCharT> + _LIBCPP_HIDE_FROM_ABI void __copy(basic_string_view<_InCharT> __str) { + size_t __n = __str.size(); + if (__size_ + __n >= __capacity_) + // Push_back requires the buffer to have room for at least one character. + __grow_buffer(__size_ + __n + 1); + + std::uninitialized_copy_n(__str.data(), __n, __ptr_ + __size_); + __size_ += __n; + } + + template <__fmt_char_type _InCharT, class _UnaryOperation> + _LIBCPP_HIDE_FROM_ABI void __transform(const _InCharT* __first, const _InCharT* __last, _UnaryOperation __operation) { + _LIBCPP_ASSERT(__first <= __last, "not a valid range"); + + size_t __n = static_cast(__last - __first); + if (__size_ + __n >= __capacity_) + // Push_back requires the buffer to have room for at least one character. + __grow_buffer(__size_ + __n + 1); + + std::uninitialized_default_construct_n(__ptr_ + __size_, __n); + std::transform(__first, __last, __ptr_ + __size_, std::move(__operation)); + __size_ += __n; + } + + _LIBCPP_HIDE_FROM_ABI void __fill(size_t __n, _CharT __value) { + if (__size_ + __n >= __capacity_) + // Push_back requires the buffer to have room for at least one character. + __grow_buffer(__size_ + __n + 1); + + std::uninitialized_fill_n(__ptr_ + __size_, __n, __value); + __size_ += __n; + } + + _LIBCPP_HIDE_FROM_ABI basic_string_view<_CharT> __view() { return {__ptr_, __size_}; } + +private: + _LIBCPP_HIDE_FROM_ABI void __grow_buffer() { __grow_buffer(__capacity_ * 1.6); } + + _LIBCPP_HIDE_FROM_ABI void __grow_buffer(size_t __capacity) { + _LIBCPP_ASSERT(__capacity > __capacity_, "the buffer must grow"); + auto __result = std::__allocate_at_least(__alloc_, __capacity); + auto __guard = std::__make_exception_guard([&] { + allocator_traits<_Alloc>::deallocate(__alloc_, __result.ptr, __result.count); + }); + // This shouldn't throw, but just to be safe. Not that at -O1 this + // guard is optimized away so there is no runtime overhead. + std::uninitialized_move_n(__ptr_, __size_, __result.ptr); + __guard.__complete(); + ranges::destroy_n(__ptr_, __size_); + allocator_traits<_Alloc>::deallocate(__alloc_, __ptr_, __capacity_); + + __ptr_ = __result.ptr; + __capacity_ = __result.count; + } + _LIBCPP_NO_UNIQUE_ADDRESS _Alloc __alloc_; + _CharT* __ptr_; + size_t __capacity_; + size_t __size_{0}; +}; + +} // namespace __format + +#endif //_LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP___FORMAT_BUFFER_H diff --git a/third_party/libcxx/__format/concepts.h b/third_party/libcxx/__format/concepts.h new file mode 100644 index 000000000..62552f827 --- /dev/null +++ b/third_party/libcxx/__format/concepts.h @@ -0,0 +1,76 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FORMAT_CONCEPTS_H +#define _LIBCPP___FORMAT_CONCEPTS_H + +#include <__concepts/same_as.h> +#include <__concepts/semiregular.h> +#include <__config> +#include <__format/format_fwd.h> +#include <__format/format_parse_context.h> +#include <__type_traits/is_specialization.h> +#include <__utility/pair.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +/// The character type specializations of \ref formatter. +template +concept __fmt_char_type = + same_as<_CharT, char> +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS + || same_as<_CharT, wchar_t> +# endif + ; + +// The output iterator isn't specified. A formatter should accept any +// output_iterator. This iterator is a minimal iterator to test the concept. +// (Note testing for (w)format_context would be a valid choice, but requires +// selecting the proper one depending on the type of _CharT.) +template +using __fmt_iter_for = _CharT*; + +template +concept __formattable = + (semiregular, _CharT>>) && + requires(formatter, _CharT> __f, + const formatter, _CharT> __cf, + _Tp __t, + basic_format_context<__fmt_iter_for<_CharT>, _CharT> __fc, + basic_format_parse_context<_CharT> __pc) { + { __f.parse(__pc) } -> same_as::iterator>; + { __cf.format(__t, __fc) } -> same_as<__fmt_iter_for<_CharT>>; + }; + +# if _LIBCPP_STD_VER >= 23 +template +concept formattable = __formattable<_Tp, _CharT>; + +// [tuple.like] defines a tuple-like exposition only concept. This concept is +// not related to that. Therefore it uses a different name for the concept. +// +// TODO FMT Add a test to validate we fail when using that concept after P2165 +// has been implemented. +template +concept __fmt_pair_like = + __is_specialization_v<_Tp, pair> || (__is_specialization_v<_Tp, tuple> && tuple_size_v<_Tp> == 2); + +# endif //_LIBCPP_STD_VER >= 23 +#endif //_LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FORMAT_CONCEPTS_H diff --git a/third_party/libcxx/__format/container_adaptor.h b/third_party/libcxx/__format/container_adaptor.h new file mode 100644 index 000000000..9b66f4b83 --- /dev/null +++ b/third_party/libcxx/__format/container_adaptor.h @@ -0,0 +1,71 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FORMAT_CONTAINER_ADAPTOR_H +#define _LIBCPP___FORMAT_CONTAINER_ADAPTOR_H + +#include <__availability> +#include <__config> +#include <__format/concepts.h> +#include <__format/formatter.h> +#include <__format/range_default_formatter.h> +#include <__ranges/all.h> +#include <__ranges/ref_view.h> +#include <__type_traits/is_const.h> +#include <__type_traits/maybe_const.h> +#include +#include + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 23 + +// [container.adaptors.format] only specifies the library should provide the +// formatter specializations, not which header should provide them. +// Since includes a lot of headers, add these headers here instead of +// adding more dependencies like, locale, optinal, string, tuple, etc. to the +// adaptor headers. To use the format functions users already include . + +template +struct _LIBCPP_TEMPLATE_VIS __formatter_container_adaptor { +private: + using __maybe_const_container = __fmt_maybe_const; + using __maybe_const_adaptor = __maybe_const, _Adaptor>; + formatter, _CharT> __underlying_; + +public: + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return __underlying_.parse(__ctx); + } + + template + _LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator + format(__maybe_const_adaptor& __adaptor, _FormatContext& __ctx) const { + return __underlying_.format(__adaptor.__get_container(), __ctx); + } +}; + +template _Container> +struct _LIBCPP_TEMPLATE_VIS formatter, _CharT> + : public __formatter_container_adaptor, _CharT> {}; + +template +struct _LIBCPP_TEMPLATE_VIS formatter, _CharT> + : public __formatter_container_adaptor, _CharT> {}; + +template _Container> +struct _LIBCPP_TEMPLATE_VIS formatter, _CharT> + : public __formatter_container_adaptor, _CharT> {}; + +#endif //_LIBCPP_STD_VER >= 23 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FORMAT_CONTAINER_ADAPTOR_H diff --git a/third_party/libcxx/__format/enable_insertable.h b/third_party/libcxx/__format/enable_insertable.h new file mode 100644 index 000000000..86ef94a32 --- /dev/null +++ b/third_party/libcxx/__format/enable_insertable.h @@ -0,0 +1,35 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FORMAT_ENABLE_INSERTABLE_H +#define _LIBCPP___FORMAT_ENABLE_INSERTABLE_H + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +namespace __format { + +/// Opt-in to enable \ref __insertable for a \a _Container. +template +inline constexpr bool __enable_insertable = false; + +} // namespace __format + +#endif //_LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FORMAT_ENABLE_INSERTABLE_H diff --git a/third_party/libcxx/__format/escaped_output_table.h b/third_party/libcxx/__format/escaped_output_table.h new file mode 100644 index 000000000..222847e6a --- /dev/null +++ b/third_party/libcxx/__format/escaped_output_table.h @@ -0,0 +1,1038 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// WARNING, this entire header is generated by +// utils/generate_escaped_output_table.py +// DO NOT MODIFY! + +// UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE +// +// See Terms of Use +// for definitions of Unicode Inc.'s Data Files and Software. +// +// NOTICE TO USER: Carefully read the following legal agreement. +// BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S +// DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), +// YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE +// TERMS AND CONDITIONS OF THIS AGREEMENT. +// IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE +// THE DATA FILES OR SOFTWARE. +// +// COPYRIGHT AND PERMISSION NOTICE +// +// Copyright (c) 1991-2022 Unicode, Inc. All rights reserved. +// Distributed under the Terms of Use in https://www.unicode.org/copyright.html. +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of the Unicode data files and any associated documentation +// (the "Data Files") or Unicode software and any associated documentation +// (the "Software") to deal in the Data Files or Software +// without restriction, including without limitation the rights to use, +// copy, modify, merge, publish, distribute, and/or sell copies of +// the Data Files or Software, and to permit persons to whom the Data Files +// or Software are furnished to do so, provided that either +// (a) this copyright and permission notice appear with all copies +// of the Data Files or Software, or +// (b) this copyright and permission notice appear in associated +// Documentation. +// +// THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF +// ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +// WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT OF THIRD PARTY RIGHTS. +// IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS +// NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL +// DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +// DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +// TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +// PERFORMANCE OF THE DATA FILES OR SOFTWARE. +// +// Except as contained in this notice, the name of a copyright holder +// shall not be used in advertising or otherwise to promote the sale, +// use or other dealings in these Data Files or Software without prior +// written authorization of the copyright holder. + +#ifndef _LIBCPP___FORMAT_ESCAPED_OUTPUT_TABLE_H +#define _LIBCPP___FORMAT_ESCAPED_OUTPUT_TABLE_H + +#include <__algorithm/ranges_upper_bound.h> +#include <__config> +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 23 + +namespace __escaped_output_table { + +/// The entries of the characters to escape in format's debug string. +/// +/// Contains the entries for [format.string.escaped]/2.2.1.2.1 +/// CE is a Unicode encoding and C corresponds to either a UCS scalar value +/// whose Unicode property General_Category has a value in the groups +/// Separator (Z) or Other (C) or to a UCS scalar value which has the Unicode +/// property Grapheme_Extend=Yes, as described by table 12 of UAX #44 +/// +/// Separator (Z) consists of General_Category +/// - Space_Separator, +/// - Line_Separator, +/// - Paragraph_Separator. +/// +/// Other (C) consists of General_Category +/// - Control, +/// - Format, +/// - Surrogate, +/// - Private_Use, +/// - Unassigned. +/// +/// The data is generated from +/// - https://www.unicode.org/Public/UCD/latest/ucd/DerivedCoreProperties.txt +/// - https://www.unicode.org/Public/UCD/latest/ucd/extracted/DerivedGeneralCategory.txt +/// +/// The table is similar to the table +/// __extended_grapheme_custer_property_boundary::__entries +/// which explains the details of these classes. The only difference is this +/// table lacks a property, thus having more bits available for the size. +/// +/// The data has 2 values: +/// - bits [0, 10] The size of the range, allowing 2048 elements. +/// - bits [11, 31] The lower bound code point of the range. The upper bound of +/// the range is lower bound + size. +inline constexpr uint32_t __entries[893] = { + 0x00000020, + 0x0003f821, + 0x00056800, + 0x0018006f, + 0x001bc001, + 0x001c0003, + 0x001c5800, + 0x001c6800, + 0x001d1000, + 0x00241806, + 0x00298000, + 0x002ab801, + 0x002c5801, + 0x002c802d, + 0x002df800, + 0x002e0801, + 0x002e2001, + 0x002e3808, + 0x002f5803, + 0x002fa810, + 0x0030800a, + 0x0030e000, + 0x00325814, + 0x00338000, + 0x0036b007, + 0x0036f805, + 0x00373801, + 0x00375003, + 0x00387001, + 0x00388800, + 0x0039801c, + 0x003d300a, + 0x003d900d, + 0x003f5808, + 0x003fd802, + 0x0040b003, + 0x0040d808, + 0x00412802, + 0x00414806, + 0x0041f800, + 0x0042c804, + 0x0042f800, + 0x00435804, + 0x00447810, + 0x00465038, + 0x0049d000, + 0x0049e000, + 0x004a0807, + 0x004a6800, + 0x004a8806, + 0x004b1001, + 0x004c0800, + 0x004c2000, + 0x004c6801, + 0x004c8801, + 0x004d4800, + 0x004d8800, + 0x004d9802, + 0x004dd002, + 0x004df000, + 0x004e0805, + 0x004e4801, + 0x004e6800, + 0x004e780c, + 0x004ef000, + 0x004f1003, + 0x004ff004, + 0x00502000, + 0x00505803, + 0x00508801, + 0x00514800, + 0x00518800, + 0x0051a000, + 0x0051b800, + 0x0051d003, + 0x00520817, + 0x0052e800, + 0x0052f806, + 0x00538001, + 0x0053a800, + 0x0053b80b, + 0x00542000, + 0x00547000, + 0x00549000, + 0x00554800, + 0x00558800, + 0x0055a000, + 0x0055d002, + 0x00560807, + 0x00565000, + 0x00566802, + 0x0056880e, + 0x00571003, + 0x00579006, + 0x0057d007, + 0x00582000, + 0x00586801, + 0x00588801, + 0x00594800, + 0x00598800, + 0x0059a000, + 0x0059d002, + 0x0059f001, + 0x005a0805, + 0x005a4801, + 0x005a680e, + 0x005af000, + 0x005b1003, + 0x005bc00a, + 0x005c2000, + 0x005c5802, + 0x005c8800, + 0x005cb002, + 0x005cd800, + 0x005ce800, + 0x005d0002, + 0x005d2802, + 0x005d5802, + 0x005dd004, + 0x005e0000, + 0x005e1802, + 0x005e4800, + 0x005e6802, + 0x005e8814, + 0x005fd805, + 0x00602000, + 0x00606800, + 0x00608800, + 0x00614800, + 0x0061d002, + 0x0061f002, + 0x00622812, + 0x0062d801, + 0x0062f001, + 0x00631003, + 0x00638006, + 0x00640800, + 0x00646800, + 0x00648800, + 0x00654800, + 0x0065a000, + 0x0065d002, + 0x0065f800, + 0x00661000, + 0x00662801, + 0x00664800, + 0x00666010, + 0x0066f800, + 0x00671003, + 0x00678000, + 0x0067a00d, + 0x00686800, + 0x00688800, + 0x0069d801, + 0x0069f000, + 0x006a0804, + 0x006a4800, + 0x006a6800, + 0x006a8003, + 0x006ab800, + 0x006b1003, + 0x006c0001, + 0x006c2000, + 0x006cb802, + 0x006d9000, + 0x006de000, + 0x006df001, + 0x006e3808, + 0x006e9005, + 0x006ef806, + 0x006f8001, + 0x006fa80b, + 0x00718800, + 0x0071a00a, + 0x00723807, + 0x0072e024, + 0x00741800, + 0x00742800, + 0x00745800, + 0x00752000, + 0x00753000, + 0x00758800, + 0x0075a008, + 0x0075f001, + 0x00762800, + 0x00763808, + 0x0076d001, + 0x0077001f, + 0x0078c001, + 0x0079a800, + 0x0079b800, + 0x0079c800, + 0x007a4000, + 0x007b6811, + 0x007c0004, + 0x007c3001, + 0x007c6830, + 0x007e3000, + 0x007e6800, + 0x007ed824, + 0x00816803, + 0x00819005, + 0x0081c801, + 0x0081e801, + 0x0082c001, + 0x0082f002, + 0x00838803, + 0x00841000, + 0x00842801, + 0x00846800, + 0x0084e800, + 0x00863000, + 0x00864004, + 0x00867001, + 0x00924800, + 0x00927001, + 0x0092b800, + 0x0092c800, + 0x0092f001, + 0x00944800, + 0x00947001, + 0x00958800, + 0x0095b001, + 0x0095f800, + 0x00960800, + 0x00963001, + 0x0096b800, + 0x00988800, + 0x0098b001, + 0x009ad804, + 0x009be802, + 0x009cd005, + 0x009fb001, + 0x009ff001, + 0x00b40000, + 0x00b4e802, + 0x00b7c806, + 0x00b89002, + 0x00b8b008, + 0x00b99001, + 0x00b9b808, + 0x00ba900d, + 0x00bb6800, + 0x00bb880e, + 0x00bda001, + 0x00bdb806, + 0x00be3000, + 0x00be480a, + 0x00bee802, + 0x00bf5005, + 0x00bfd005, + 0x00c05804, + 0x00c0d005, + 0x00c3c806, + 0x00c42801, + 0x00c54800, + 0x00c55804, + 0x00c7b009, + 0x00c8f803, + 0x00c93801, + 0x00c96003, + 0x00c99000, + 0x00c9c806, + 0x00ca0802, + 0x00cb7001, + 0x00cba80a, + 0x00cd6003, + 0x00ce5005, + 0x00ced802, + 0x00d0b801, + 0x00d0d802, + 0x00d2b000, + 0x00d2c008, + 0x00d31000, + 0x00d32807, + 0x00d3980c, + 0x00d45005, + 0x00d4d005, + 0x00d57055, + 0x00d9a006, + 0x00d9e000, + 0x00da1000, + 0x00da6802, + 0x00db5808, + 0x00dbf802, + 0x00dd1003, + 0x00dd4001, + 0x00dd5802, + 0x00df3000, + 0x00df4001, + 0x00df6800, + 0x00df7802, + 0x00dfa007, + 0x00e16007, + 0x00e1b004, + 0x00e25002, + 0x00e44806, + 0x00e5d801, + 0x00e6400a, + 0x00e6a00c, + 0x00e71006, + 0x00e76800, + 0x00e7a000, + 0x00e7c001, + 0x00e7d804, + 0x00ee003f, + 0x00f8b001, + 0x00f8f001, + 0x00fa3001, + 0x00fa7001, + 0x00fac000, + 0x00fad000, + 0x00fae000, + 0x00faf000, + 0x00fbf001, + 0x00fda800, + 0x00fe2800, + 0x00fea001, + 0x00fee000, + 0x00ff8001, + 0x00ffa800, + 0x00fff810, + 0x01014007, + 0x0102f810, + 0x01039001, + 0x01047800, + 0x0104e802, + 0x0106083e, + 0x010c6003, + 0x01213818, + 0x01225814, + 0x015ba001, + 0x015cb000, + 0x01677802, + 0x0167a004, + 0x01693000, + 0x01694004, + 0x01697001, + 0x016b4006, + 0x016b880e, + 0x016cb808, + 0x016d3800, + 0x016d7800, + 0x016db800, + 0x016df800, + 0x016e3800, + 0x016e7800, + 0x016eb800, + 0x016ef820, + 0x0172f021, + 0x0174d000, + 0x0177a00b, + 0x017eb019, + 0x017fe004, + 0x01815005, + 0x01820000, + 0x0184b803, + 0x01880004, + 0x01898000, + 0x018c7800, + 0x018f200b, + 0x0190f800, + 0x05246802, + 0x05263808, + 0x05316013, + 0x05337803, + 0x0533a009, + 0x0534f001, + 0x05378001, + 0x0537c007, + 0x053e5804, + 0x053e9000, + 0x053ea000, + 0x053ed017, + 0x05401000, + 0x05403000, + 0x05405800, + 0x05412801, + 0x05416003, + 0x0541d005, + 0x0543c007, + 0x05462009, + 0x0546d017, + 0x0547f800, + 0x05493007, + 0x054a380a, + 0x054aa00a, + 0x054be805, + 0x054d9800, + 0x054db003, + 0x054de001, + 0x054e7000, + 0x054ed003, + 0x054f2800, + 0x054ff800, + 0x05514805, + 0x05518801, + 0x0551a80a, + 0x05521800, + 0x05526000, + 0x05527001, + 0x0552d001, + 0x0553e000, + 0x05558000, + 0x05559002, + 0x0555b801, + 0x0555f001, + 0x05560800, + 0x05561817, + 0x05576001, + 0x0557b00a, + 0x05583801, + 0x05587801, + 0x0558b808, + 0x05593800, + 0x05597800, + 0x055b6003, + 0x055f2800, + 0x055f4000, + 0x055f6802, + 0x055fd005, + 0x06bd200b, + 0x06be3803, + 0x06bfe7ff, + 0x06ffe7ff, + 0x073fe7ff, + 0x077fe7ff, + 0x07bfe103, + 0x07d37001, + 0x07d6d025, + 0x07d8380b, + 0x07d8c004, + 0x07d8f000, + 0x07d9b800, + 0x07d9e800, + 0x07d9f800, + 0x07da1000, + 0x07da2800, + 0x07de180f, + 0x07ec8001, + 0x07ee4006, + 0x07ee801f, + 0x07f0000f, + 0x07f0d015, + 0x07f29800, + 0x07f33800, + 0x07f36003, + 0x07f3a800, + 0x07f7e803, + 0x07fcf001, + 0x07fdf802, + 0x07fe4001, + 0x07fe8001, + 0x07fec001, + 0x07fee802, + 0x07ff3800, + 0x07ff780c, + 0x07fff001, + 0x08006000, + 0x08013800, + 0x0801d800, + 0x0801f000, + 0x08027001, + 0x0802f021, + 0x0807d804, + 0x08081803, + 0x0809a002, + 0x080c7800, + 0x080ce802, + 0x080d082e, + 0x080fe882, + 0x0814e802, + 0x0816880f, + 0x0817e003, + 0x08192008, + 0x081a5804, + 0x081bb009, + 0x081cf000, + 0x081e2003, + 0x081eb029, + 0x0824f001, + 0x08255005, + 0x0826a003, + 0x0827e003, + 0x08294007, + 0x082b200a, + 0x082bd800, + 0x082c5800, + 0x082c9800, + 0x082cb000, + 0x082d1000, + 0x082d9000, + 0x082dd000, + 0x082de842, + 0x0839b808, + 0x083ab009, + 0x083b4017, + 0x083c3000, + 0x083d8800, + 0x083dd844, + 0x08403001, + 0x08404800, + 0x0841b000, + 0x0841c802, + 0x0841e801, + 0x0842b000, + 0x0844f807, + 0x0845802f, + 0x08479800, + 0x0847b004, + 0x0848e002, + 0x0849d004, + 0x084a003f, + 0x084dc003, + 0x084e8001, + 0x0850080e, + 0x0850a000, + 0x0850c000, + 0x0851b009, + 0x08524806, + 0x0852c806, + 0x0855001f, + 0x08572805, + 0x0857b808, + 0x0859b002, + 0x085ab001, + 0x085b9804, + 0x085c9006, + 0x085ce80b, + 0x085d804f, + 0x08624836, + 0x0865980c, + 0x08679806, + 0x0869200b, + 0x0869d125, + 0x0873f800, + 0x08755002, + 0x08757001, + 0x0875904d, + 0x08794007, + 0x087a300a, + 0x087ad015, + 0x087c1003, + 0x087c5025, + 0x087e6013, + 0x087fb808, + 0x08800800, + 0x0881c00e, + 0x08827003, + 0x08838000, + 0x08839801, + 0x0883b00b, + 0x08859803, + 0x0885c801, + 0x0885e800, + 0x0886100d, + 0x08874806, + 0x0887d008, + 0x08893804, + 0x08896808, + 0x088a4007, + 0x088b9800, + 0x088bb80a, + 0x088db008, + 0x088e4803, + 0x088e7800, + 0x088f0000, + 0x088fa80a, + 0x08909000, + 0x08917802, + 0x0891a000, + 0x0891b001, + 0x0891f000, + 0x0892083e, + 0x08943800, + 0x08944800, + 0x08947000, + 0x0894f000, + 0x08955005, + 0x0896f800, + 0x0897180c, + 0x0897d007, + 0x08982000, + 0x08986801, + 0x08988801, + 0x08994800, + 0x08998800, + 0x0899a000, + 0x0899d002, + 0x0899f000, + 0x089a0000, + 0x089a2801, + 0x089a4801, + 0x089a7001, + 0x089a880b, + 0x089b209b, + 0x08a1c007, + 0x08a21002, + 0x08a23000, + 0x08a2e000, + 0x08a2f000, + 0x08a3101d, + 0x08a58000, + 0x08a59805, + 0x08a5d000, + 0x08a5e800, + 0x08a5f801, + 0x08a61001, + 0x08a64007, + 0x08a6d0a5, + 0x08ad7800, + 0x08ad9005, + 0x08ade001, + 0x08adf801, + 0x08aee023, + 0x08b19807, + 0x08b1e800, + 0x08b1f801, + 0x08b2280a, + 0x08b2d005, + 0x08b36812, + 0x08b55800, + 0x08b56800, + 0x08b58005, + 0x08b5b800, + 0x08b5d005, + 0x08b65035, + 0x08b8d804, + 0x08b91003, + 0x08b93808, + 0x08ba38b8, + 0x08c17808, + 0x08c1c801, + 0x08c1e063, + 0x08c7980b, + 0x08c83801, + 0x08c85001, + 0x08c8a000, + 0x08c8b800, + 0x08c98000, + 0x08c9b000, + 0x08c9c803, + 0x08c9f000, + 0x08ca1800, + 0x08ca3808, + 0x08cad045, + 0x08cd4001, + 0x08cea007, + 0x08cf0000, + 0x08cf281a, + 0x08d00809, + 0x08d19805, + 0x08d1d803, + 0x08d23808, + 0x08d28805, + 0x08d2c802, + 0x08d4500c, + 0x08d4c001, + 0x08d5180c, + 0x08d7c806, + 0x08d850f5, + 0x08e04800, + 0x08e1800d, + 0x08e1f800, + 0x08e23009, + 0x08e36802, + 0x08e48018, + 0x08e55006, + 0x08e59001, + 0x08e5a84a, + 0x08e83800, + 0x08e85000, + 0x08e98814, + 0x08ea3808, + 0x08ead005, + 0x08eb3000, + 0x08eb4800, + 0x08ec7803, + 0x08eca800, + 0x08ecb800, + 0x08ecc806, + 0x08ed5135, + 0x08f79801, + 0x08f7c808, + 0x08f88800, + 0x08f9b007, + 0x08fa0000, + 0x08fa1000, + 0x08fad055, + 0x08fd880e, + 0x08ff900c, + 0x091cd065, + 0x09237800, + 0x0923a80a, + 0x092a27ff, + 0x096a224b, + 0x097f980c, + 0x09a18010, + 0x09a23fff, + 0x09e23fb8, + 0x0a323fff, + 0x0a723fff, + 0x0ab23fff, + 0x0af23fff, + 0x0b3239b8, + 0x0b51c806, + 0x0b52f800, + 0x0b535003, + 0x0b55f800, + 0x0b565005, + 0x0b577006, + 0x0b57b009, + 0x0b598006, + 0x0b5a3009, + 0x0b5ad000, + 0x0b5b1000, + 0x0b5bc004, + 0x0b5c82af, + 0x0b74d864, + 0x0b7a5804, + 0x0b7c400a, + 0x0b7d003f, + 0x0b7f200b, + 0x0b7f900d, + 0x0c3fc007, + 0x0c66b029, + 0x0c684fff, + 0x0ca84fff, + 0x0ce84fff, + 0x0d284fff, + 0x0d684ae6, + 0x0d7fa000, + 0x0d7fe000, + 0x0d7ff800, + 0x0d89180e, + 0x0d89981c, + 0x0d8a9801, + 0x0d8ab00d, + 0x0d8b4007, + 0x0d97e7ff, + 0x0dd7e103, + 0x0de35804, + 0x0de3e802, + 0x0de44806, + 0x0de4d001, + 0x0de4e801, + 0x0de507ff, + 0x0e2507ff, + 0x0e6502af, + 0x0e7e203b, + 0x0e87b009, + 0x0e893801, + 0x0e8b2800, + 0x0e8b3802, + 0x0e8b7014, + 0x0e8c2806, + 0x0e8d5003, + 0x0e8f5814, + 0x0e921002, + 0x0e923079, + 0x0e96a00b, + 0x0e97a00b, + 0x0e9ab808, + 0x0e9bc886, + 0x0ea2a800, + 0x0ea4e800, + 0x0ea50001, + 0x0ea51801, + 0x0ea53801, + 0x0ea56800, + 0x0ea5d000, + 0x0ea5e000, + 0x0ea62000, + 0x0ea83000, + 0x0ea85801, + 0x0ea8a800, + 0x0ea8e800, + 0x0ea9d000, + 0x0ea9f800, + 0x0eaa2800, + 0x0eaa3802, + 0x0eaa8800, + 0x0eb53001, + 0x0ebe6001, + 0x0ed00036, + 0x0ed1d831, + 0x0ed3a800, + 0x0ed42000, + 0x0ed46473, + 0x0ef8f805, + 0x0ef95904, + 0x0f037091, + 0x0f096809, + 0x0f09f001, + 0x0f0a5003, + 0x0f0a813f, + 0x0f157011, + 0x0f176003, + 0x0f17d004, + 0x0f1801cf, + 0x0f276003, + 0x0f27d2e5, + 0x0f3f3800, + 0x0f3f6000, + 0x0f3f7800, + 0x0f3ff800, + 0x0f462801, + 0x0f46802f, + 0x0f4a2006, + 0x0f4a6003, + 0x0f4ad003, + 0x0f4b0310, + 0x0f65a84b, + 0x0f69f0c1, + 0x0f702000, + 0x0f710000, + 0x0f711800, + 0x0f712801, + 0x0f714000, + 0x0f719800, + 0x0f71c000, + 0x0f71d000, + 0x0f71e005, + 0x0f721803, + 0x0f724000, + 0x0f725000, + 0x0f726000, + 0x0f728000, + 0x0f729800, + 0x0f72a801, + 0x0f72c000, + 0x0f72d000, + 0x0f72e000, + 0x0f72f000, + 0x0f730000, + 0x0f731800, + 0x0f732801, + 0x0f735800, + 0x0f739800, + 0x0f73c000, + 0x0f73e800, + 0x0f73f800, + 0x0f745000, + 0x0f74e004, + 0x0f752000, + 0x0f755000, + 0x0f75e033, + 0x0f77910d, + 0x0f816003, + 0x0f84a00b, + 0x0f857801, + 0x0f860000, + 0x0f868000, + 0x0f87b009, + 0x0f8d7037, + 0x0f90180c, + 0x0f91e003, + 0x0f924806, + 0x0f92900d, + 0x0f933099, + 0x0fb6c003, + 0x0fb76802, + 0x0fb7e802, + 0x0fbbb803, + 0x0fbed005, + 0x0fbf6003, + 0x0fbf880e, + 0x0fc06003, + 0x0fc24007, + 0x0fc2d005, + 0x0fc44007, + 0x0fc57001, + 0x0fc5904d, + 0x0fd2a00b, + 0x0fd37001, + 0x0fd3e802, + 0x0fd44806, + 0x0fd5f000, + 0x0fd63007, + 0x0fd6e003, + 0x0fd74806, + 0x0fd7c806, + 0x0fdc9800, + 0x0fde5824, + 0x0fdfd405, + 0x1537001f, + 0x15b9d005, + 0x15c0f001, + 0x1675100d, + 0x175f0fff, + 0x179f0c1e, + 0x17d0f5e1, + 0x189a5804}; + +/// At the end of the valid Unicode code points space a lot of code points are +/// either reserved or a noncharacter. Adding all these entries to the +/// lookup table would add 446 entries to the table (in Unicode 14). +/// Instead the only the start of the region is stored, every code point in +/// this region needs to be escaped. +inline constexpr uint32_t __unallocated_region_lower_bound = 0x000323b0; + +/// Returns whether the code unit needs to be escaped. +/// +/// \pre The code point is a valid Unicode code point. +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool __needs_escape(const char32_t __code_point) noexcept { + // Since __unallocated_region_lower_bound contains the unshifted range do the + // comparison without shifting. + if (__code_point >= __unallocated_region_lower_bound) + return true; + + ptrdiff_t __i = std::ranges::upper_bound(__entries, (__code_point << 11) | 0x7ffu) - __entries; + if (__i == 0) + return false; + + --__i; + uint32_t __upper_bound = (__entries[__i] >> 11) + (__entries[__i] & 0x7ffu); + return __code_point <= __upper_bound; +} + +} // namespace __escaped_output_table + +#endif //_LIBCPP_STD_VER >= 23 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FORMAT_ESCAPED_OUTPUT_TABLE_H diff --git a/third_party/libcxx/__format/extended_grapheme_cluster_table.h b/third_party/libcxx/__format/extended_grapheme_cluster_table.h new file mode 100644 index 000000000..bd6d39fdc --- /dev/null +++ b/third_party/libcxx/__format/extended_grapheme_cluster_table.h @@ -0,0 +1,1661 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// WARNING, this entire header is generated by +// utils/generate_extended_grapheme_cluster_table.py +// DO NOT MODIFY! + +// UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE +// +// See Terms of Use +// for definitions of Unicode Inc.'s Data Files and Software. +// +// NOTICE TO USER: Carefully read the following legal agreement. +// BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S +// DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), +// YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE +// TERMS AND CONDITIONS OF THIS AGREEMENT. +// IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE +// THE DATA FILES OR SOFTWARE. +// +// COPYRIGHT AND PERMISSION NOTICE +// +// Copyright (c) 1991-2022 Unicode, Inc. All rights reserved. +// Distributed under the Terms of Use in https://www.unicode.org/copyright.html. +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of the Unicode data files and any associated documentation +// (the "Data Files") or Unicode software and any associated documentation +// (the "Software") to deal in the Data Files or Software +// without restriction, including without limitation the rights to use, +// copy, modify, merge, publish, distribute, and/or sell copies of +// the Data Files or Software, and to permit persons to whom the Data Files +// or Software are furnished to do so, provided that either +// (a) this copyright and permission notice appear with all copies +// of the Data Files or Software, or +// (b) this copyright and permission notice appear in associated +// Documentation. +// +// THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF +// ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +// WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT OF THIRD PARTY RIGHTS. +// IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS +// NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL +// DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +// DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +// TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +// PERFORMANCE OF THE DATA FILES OR SOFTWARE. +// +// Except as contained in this notice, the name of a copyright holder +// shall not be used in advertising or otherwise to promote the sale, +// use or other dealings in these Data Files or Software without prior +// written authorization of the copyright holder. + +#ifndef _LIBCPP___FORMAT_EXTENDED_GRAPHEME_CLUSTER_TABLE_H +#define _LIBCPP___FORMAT_EXTENDED_GRAPHEME_CLUSTER_TABLE_H + +#include <__algorithm/ranges_upper_bound.h> +#include <__config> +#include <__iterator/access.h> +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +namespace __extended_grapheme_custer_property_boundary { + +enum class __property : uint8_t { + // Values generated from the data files. + __CR, + __Control, + __Extend, + __Extended_Pictographic, + __L, + __LF, + __LV, + __LVT, + __Prepend, + __Regional_Indicator, + __SpacingMark, + __T, + __V, + __ZWJ, + + // The properies below aren't stored in the "database". + + // Text position properties. + __sot, + __eot, + + // The code unit has none of above properties. + __none +}; + +/// The entries of the extended grapheme cluster bondary property table. +/// +/// The data is generated from +/// - https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakProperty.txt +/// - https://www.unicode.org/Public/UCD/latest/ucd/emoji/emoji-data.txt +/// +/// The data has 3 values +/// - bits [0, 3] The property. One of the values generated from the datafiles +/// of \ref __property +/// - bits [4, 10] The size of the range. +/// - bits [11, 31] The lower bound code point of the range. The upper bound of +/// the range is lower bound + size. +/// +/// The 7 bits for the size allow a maximum range of 128 elements. Some ranges +/// in the Unicode tables are larger. They are stored in multiple consecutive +/// ranges in the data table. An alternative would be to store the sizes in a +/// separate 16-bit value. The original MSVC STL code had such an approach, but +/// this approach uses less space for the data and is about 4% faster in the +/// following benchmark. +/// libcxx/benchmarks/std_format_spec_string_unicode.bench.cpp +inline constexpr uint32_t __entries[1496] = { + 0x00000091, + 0x00005005, + 0x00005811, + 0x00006800, + 0x00007111, + 0x0003fa01, + 0x00054803, + 0x00056801, + 0x00057003, + 0x001806f2, + 0x00241862, + 0x002c8ac2, + 0x002df802, + 0x002e0812, + 0x002e2012, + 0x002e3802, + 0x00300058, + 0x003080a2, + 0x0030e001, + 0x00325942, + 0x00338002, + 0x0036b062, + 0x0036e808, + 0x0036f852, + 0x00373812, + 0x00375032, + 0x00387808, + 0x00388802, + 0x003981a2, + 0x003d30a2, + 0x003f5882, + 0x003fe802, + 0x0040b032, + 0x0040d882, + 0x00412822, + 0x00414842, + 0x0042c822, + 0x00448018, + 0x0044c072, + 0x00465172, + 0x00471008, + 0x004719f2, + 0x0048180a, + 0x0049d002, + 0x0049d80a, + 0x0049e002, + 0x0049f02a, + 0x004a0872, + 0x004a483a, + 0x004a6802, + 0x004a701a, + 0x004a8862, + 0x004b1012, + 0x004c0802, + 0x004c101a, + 0x004de002, + 0x004df002, + 0x004df81a, + 0x004e0832, + 0x004e381a, + 0x004e581a, + 0x004e6802, + 0x004eb802, + 0x004f1012, + 0x004ff002, + 0x00500812, + 0x0050180a, + 0x0051e002, + 0x0051f02a, + 0x00520812, + 0x00523812, + 0x00525822, + 0x00528802, + 0x00538012, + 0x0053a802, + 0x00540812, + 0x0054180a, + 0x0055e002, + 0x0055f02a, + 0x00560842, + 0x00563812, + 0x0056480a, + 0x0056581a, + 0x00566802, + 0x00571012, + 0x0057d052, + 0x00580802, + 0x0058101a, + 0x0059e002, + 0x0059f012, + 0x005a000a, + 0x005a0832, + 0x005a381a, + 0x005a581a, + 0x005a6802, + 0x005aa822, + 0x005b1012, + 0x005c1002, + 0x005df002, + 0x005df80a, + 0x005e0002, + 0x005e081a, + 0x005e302a, + 0x005e502a, + 0x005e6802, + 0x005eb802, + 0x00600002, + 0x0060082a, + 0x00602002, + 0x0061e002, + 0x0061f022, + 0x0062083a, + 0x00623022, + 0x00625032, + 0x0062a812, + 0x00631012, + 0x00640802, + 0x0064101a, + 0x0065e002, + 0x0065f00a, + 0x0065f802, + 0x0066001a, + 0x00661002, + 0x0066181a, + 0x00663002, + 0x0066381a, + 0x0066501a, + 0x00666012, + 0x0066a812, + 0x00671012, + 0x0067980a, + 0x00680012, + 0x0068101a, + 0x0069d812, + 0x0069f002, + 0x0069f81a, + 0x006a0832, + 0x006a302a, + 0x006a502a, + 0x006a6802, + 0x006a7008, + 0x006ab802, + 0x006b1012, + 0x006c0802, + 0x006c101a, + 0x006e5002, + 0x006e7802, + 0x006e801a, + 0x006e9022, + 0x006eb002, + 0x006ec06a, + 0x006ef802, + 0x006f901a, + 0x00718802, + 0x0071980a, + 0x0071a062, + 0x00723872, + 0x00758802, + 0x0075980a, + 0x0075a082, + 0x00764062, + 0x0078c012, + 0x0079a802, + 0x0079b802, + 0x0079c802, + 0x0079f01a, + 0x007b88d2, + 0x007bf80a, + 0x007c0042, + 0x007c3012, + 0x007c68a2, + 0x007cca32, + 0x007e3002, + 0x00816832, + 0x0081880a, + 0x00819052, + 0x0081c812, + 0x0081d81a, + 0x0081e812, + 0x0082b01a, + 0x0082c012, + 0x0082f022, + 0x00838832, + 0x00841002, + 0x0084200a, + 0x00842812, + 0x00846802, + 0x0084e802, + 0x008805f4, + 0x008b047c, + 0x008d457b, + 0x009ae822, + 0x00b89022, + 0x00b8a80a, + 0x00b99012, + 0x00b9a00a, + 0x00ba9012, + 0x00bb9012, + 0x00bda012, + 0x00bdb00a, + 0x00bdb862, + 0x00bdf07a, + 0x00be3002, + 0x00be381a, + 0x00be48a2, + 0x00bee802, + 0x00c05822, + 0x00c07001, + 0x00c07802, + 0x00c42812, + 0x00c54802, + 0x00c90022, + 0x00c9183a, + 0x00c93812, + 0x00c9482a, + 0x00c9801a, + 0x00c99002, + 0x00c9985a, + 0x00c9c822, + 0x00d0b812, + 0x00d0c81a, + 0x00d0d802, + 0x00d2a80a, + 0x00d2b002, + 0x00d2b80a, + 0x00d2c062, + 0x00d30002, + 0x00d31002, + 0x00d32872, + 0x00d3685a, + 0x00d39892, + 0x00d3f802, + 0x00d581e2, + 0x00d80032, + 0x00d8200a, + 0x00d9a062, + 0x00d9d80a, + 0x00d9e002, + 0x00d9e84a, + 0x00da1002, + 0x00da181a, + 0x00db5882, + 0x00dc0012, + 0x00dc100a, + 0x00dd080a, + 0x00dd1032, + 0x00dd301a, + 0x00dd4012, + 0x00dd500a, + 0x00dd5822, + 0x00df3002, + 0x00df380a, + 0x00df4012, + 0x00df502a, + 0x00df6802, + 0x00df700a, + 0x00df7822, + 0x00df901a, + 0x00e1207a, + 0x00e16072, + 0x00e1a01a, + 0x00e1b012, + 0x00e68022, + 0x00e6a0c2, + 0x00e7080a, + 0x00e71062, + 0x00e76802, + 0x00e7a002, + 0x00e7b80a, + 0x00e7c012, + 0x00ee03f2, + 0x01005801, + 0x01006002, + 0x0100680d, + 0x01007011, + 0x01014061, + 0x0101e003, + 0x01024803, + 0x010300f1, + 0x01068202, + 0x01091003, + 0x0109c803, + 0x010ca053, + 0x010d4813, + 0x0118d013, + 0x01194003, + 0x011c4003, + 0x011e7803, + 0x011f48a3, + 0x011fc023, + 0x01261003, + 0x012d5013, + 0x012db003, + 0x012e0003, + 0x012fd833, + 0x01300053, + 0x013038b3, + 0x0130a713, + 0x01348753, + 0x013840a3, + 0x0138a003, + 0x0138b003, + 0x0138e803, + 0x01390803, + 0x01394003, + 0x01399813, + 0x013a2003, + 0x013a3803, + 0x013a6003, + 0x013a7003, + 0x013a9823, + 0x013ab803, + 0x013b1843, + 0x013ca823, + 0x013d0803, + 0x013d8003, + 0x013df803, + 0x0149a013, + 0x01582823, + 0x0158d813, + 0x015a8003, + 0x015aa803, + 0x01677822, + 0x016bf802, + 0x016f01f2, + 0x01815052, + 0x01818003, + 0x0181e803, + 0x0184c812, + 0x0194b803, + 0x0194c803, + 0x05337832, + 0x0533a092, + 0x0534f012, + 0x05378012, + 0x05401002, + 0x05403002, + 0x05405802, + 0x0541181a, + 0x05412812, + 0x0541380a, + 0x05416002, + 0x0544001a, + 0x0545a0fa, + 0x05462012, + 0x05470112, + 0x0547f802, + 0x05493072, + 0x054a38a2, + 0x054a901a, + 0x054b01c4, + 0x054c0022, + 0x054c180a, + 0x054d9802, + 0x054da01a, + 0x054db032, + 0x054dd01a, + 0x054de012, + 0x054df02a, + 0x054f2802, + 0x05514852, + 0x0551781a, + 0x05518812, + 0x0551981a, + 0x0551a812, + 0x05521802, + 0x05526002, + 0x0552680a, + 0x0553e002, + 0x05558002, + 0x05559022, + 0x0555b812, + 0x0555f012, + 0x05560802, + 0x0557580a, + 0x05576012, + 0x0557701a, + 0x0557a80a, + 0x0557b002, + 0x055f181a, + 0x055f2802, + 0x055f301a, + 0x055f4002, + 0x055f481a, + 0x055f600a, + 0x055f6802, + 0x05600006, + 0x056009a7, + 0x0560e006, + 0x0560e9a7, + 0x0561c006, + 0x0561c9a7, + 0x0562a006, + 0x0562a9a7, + 0x05638006, + 0x056389a7, + 0x05646006, + 0x056469a7, + 0x05654006, + 0x056549a7, + 0x05662006, + 0x056629a7, + 0x05670006, + 0x056709a7, + 0x0567e006, + 0x0567e9a7, + 0x0568c006, + 0x0568c9a7, + 0x0569a006, + 0x0569a9a7, + 0x056a8006, + 0x056a89a7, + 0x056b6006, + 0x056b69a7, + 0x056c4006, + 0x056c49a7, + 0x056d2006, + 0x056d29a7, + 0x056e0006, + 0x056e09a7, + 0x056ee006, + 0x056ee9a7, + 0x056fc006, + 0x056fc9a7, + 0x0570a006, + 0x0570a9a7, + 0x05718006, + 0x057189a7, + 0x05726006, + 0x057269a7, + 0x05734006, + 0x057349a7, + 0x05742006, + 0x057429a7, + 0x05750006, + 0x057509a7, + 0x0575e006, + 0x0575e9a7, + 0x0576c006, + 0x0576c9a7, + 0x0577a006, + 0x0577a9a7, + 0x05788006, + 0x057889a7, + 0x05796006, + 0x057969a7, + 0x057a4006, + 0x057a49a7, + 0x057b2006, + 0x057b29a7, + 0x057c0006, + 0x057c09a7, + 0x057ce006, + 0x057ce9a7, + 0x057dc006, + 0x057dc9a7, + 0x057ea006, + 0x057ea9a7, + 0x057f8006, + 0x057f89a7, + 0x05806006, + 0x058069a7, + 0x05814006, + 0x058149a7, + 0x05822006, + 0x058229a7, + 0x05830006, + 0x058309a7, + 0x0583e006, + 0x0583e9a7, + 0x0584c006, + 0x0584c9a7, + 0x0585a006, + 0x0585a9a7, + 0x05868006, + 0x058689a7, + 0x05876006, + 0x058769a7, + 0x05884006, + 0x058849a7, + 0x05892006, + 0x058929a7, + 0x058a0006, + 0x058a09a7, + 0x058ae006, + 0x058ae9a7, + 0x058bc006, + 0x058bc9a7, + 0x058ca006, + 0x058ca9a7, + 0x058d8006, + 0x058d89a7, + 0x058e6006, + 0x058e69a7, + 0x058f4006, + 0x058f49a7, + 0x05902006, + 0x059029a7, + 0x05910006, + 0x059109a7, + 0x0591e006, + 0x0591e9a7, + 0x0592c006, + 0x0592c9a7, + 0x0593a006, + 0x0593a9a7, + 0x05948006, + 0x059489a7, + 0x05956006, + 0x059569a7, + 0x05964006, + 0x059649a7, + 0x05972006, + 0x059729a7, + 0x05980006, + 0x059809a7, + 0x0598e006, + 0x0598e9a7, + 0x0599c006, + 0x0599c9a7, + 0x059aa006, + 0x059aa9a7, + 0x059b8006, + 0x059b89a7, + 0x059c6006, + 0x059c69a7, + 0x059d4006, + 0x059d49a7, + 0x059e2006, + 0x059e29a7, + 0x059f0006, + 0x059f09a7, + 0x059fe006, + 0x059fe9a7, + 0x05a0c006, + 0x05a0c9a7, + 0x05a1a006, + 0x05a1a9a7, + 0x05a28006, + 0x05a289a7, + 0x05a36006, + 0x05a369a7, + 0x05a44006, + 0x05a449a7, + 0x05a52006, + 0x05a529a7, + 0x05a60006, + 0x05a609a7, + 0x05a6e006, + 0x05a6e9a7, + 0x05a7c006, + 0x05a7c9a7, + 0x05a8a006, + 0x05a8a9a7, + 0x05a98006, + 0x05a989a7, + 0x05aa6006, + 0x05aa69a7, + 0x05ab4006, + 0x05ab49a7, + 0x05ac2006, + 0x05ac29a7, + 0x05ad0006, + 0x05ad09a7, + 0x05ade006, + 0x05ade9a7, + 0x05aec006, + 0x05aec9a7, + 0x05afa006, + 0x05afa9a7, + 0x05b08006, + 0x05b089a7, + 0x05b16006, + 0x05b169a7, + 0x05b24006, + 0x05b249a7, + 0x05b32006, + 0x05b329a7, + 0x05b40006, + 0x05b409a7, + 0x05b4e006, + 0x05b4e9a7, + 0x05b5c006, + 0x05b5c9a7, + 0x05b6a006, + 0x05b6a9a7, + 0x05b78006, + 0x05b789a7, + 0x05b86006, + 0x05b869a7, + 0x05b94006, + 0x05b949a7, + 0x05ba2006, + 0x05ba29a7, + 0x05bb0006, + 0x05bb09a7, + 0x05bbe006, + 0x05bbe9a7, + 0x05bcc006, + 0x05bcc9a7, + 0x05bda006, + 0x05bda9a7, + 0x05be8006, + 0x05be89a7, + 0x05bf6006, + 0x05bf69a7, + 0x05c04006, + 0x05c049a7, + 0x05c12006, + 0x05c129a7, + 0x05c20006, + 0x05c209a7, + 0x05c2e006, + 0x05c2e9a7, + 0x05c3c006, + 0x05c3c9a7, + 0x05c4a006, + 0x05c4a9a7, + 0x05c58006, + 0x05c589a7, + 0x05c66006, + 0x05c669a7, + 0x05c74006, + 0x05c749a7, + 0x05c82006, + 0x05c829a7, + 0x05c90006, + 0x05c909a7, + 0x05c9e006, + 0x05c9e9a7, + 0x05cac006, + 0x05cac9a7, + 0x05cba006, + 0x05cba9a7, + 0x05cc8006, + 0x05cc89a7, + 0x05cd6006, + 0x05cd69a7, + 0x05ce4006, + 0x05ce49a7, + 0x05cf2006, + 0x05cf29a7, + 0x05d00006, + 0x05d009a7, + 0x05d0e006, + 0x05d0e9a7, + 0x05d1c006, + 0x05d1c9a7, + 0x05d2a006, + 0x05d2a9a7, + 0x05d38006, + 0x05d389a7, + 0x05d46006, + 0x05d469a7, + 0x05d54006, + 0x05d549a7, + 0x05d62006, + 0x05d629a7, + 0x05d70006, + 0x05d709a7, + 0x05d7e006, + 0x05d7e9a7, + 0x05d8c006, + 0x05d8c9a7, + 0x05d9a006, + 0x05d9a9a7, + 0x05da8006, + 0x05da89a7, + 0x05db6006, + 0x05db69a7, + 0x05dc4006, + 0x05dc49a7, + 0x05dd2006, + 0x05dd29a7, + 0x05de0006, + 0x05de09a7, + 0x05dee006, + 0x05dee9a7, + 0x05dfc006, + 0x05dfc9a7, + 0x05e0a006, + 0x05e0a9a7, + 0x05e18006, + 0x05e189a7, + 0x05e26006, + 0x05e269a7, + 0x05e34006, + 0x05e349a7, + 0x05e42006, + 0x05e429a7, + 0x05e50006, + 0x05e509a7, + 0x05e5e006, + 0x05e5e9a7, + 0x05e6c006, + 0x05e6c9a7, + 0x05e7a006, + 0x05e7a9a7, + 0x05e88006, + 0x05e889a7, + 0x05e96006, + 0x05e969a7, + 0x05ea4006, + 0x05ea49a7, + 0x05eb2006, + 0x05eb29a7, + 0x05ec0006, + 0x05ec09a7, + 0x05ece006, + 0x05ece9a7, + 0x05edc006, + 0x05edc9a7, + 0x05eea006, + 0x05eea9a7, + 0x05ef8006, + 0x05ef89a7, + 0x05f06006, + 0x05f069a7, + 0x05f14006, + 0x05f149a7, + 0x05f22006, + 0x05f229a7, + 0x05f30006, + 0x05f309a7, + 0x05f3e006, + 0x05f3e9a7, + 0x05f4c006, + 0x05f4c9a7, + 0x05f5a006, + 0x05f5a9a7, + 0x05f68006, + 0x05f689a7, + 0x05f76006, + 0x05f769a7, + 0x05f84006, + 0x05f849a7, + 0x05f92006, + 0x05f929a7, + 0x05fa0006, + 0x05fa09a7, + 0x05fae006, + 0x05fae9a7, + 0x05fbc006, + 0x05fbc9a7, + 0x05fca006, + 0x05fca9a7, + 0x05fd8006, + 0x05fd89a7, + 0x05fe6006, + 0x05fe69a7, + 0x05ff4006, + 0x05ff49a7, + 0x06002006, + 0x060029a7, + 0x06010006, + 0x060109a7, + 0x0601e006, + 0x0601e9a7, + 0x0602c006, + 0x0602c9a7, + 0x0603a006, + 0x0603a9a7, + 0x06048006, + 0x060489a7, + 0x06056006, + 0x060569a7, + 0x06064006, + 0x060649a7, + 0x06072006, + 0x060729a7, + 0x06080006, + 0x060809a7, + 0x0608e006, + 0x0608e9a7, + 0x0609c006, + 0x0609c9a7, + 0x060aa006, + 0x060aa9a7, + 0x060b8006, + 0x060b89a7, + 0x060c6006, + 0x060c69a7, + 0x060d4006, + 0x060d49a7, + 0x060e2006, + 0x060e29a7, + 0x060f0006, + 0x060f09a7, + 0x060fe006, + 0x060fe9a7, + 0x0610c006, + 0x0610c9a7, + 0x0611a006, + 0x0611a9a7, + 0x06128006, + 0x061289a7, + 0x06136006, + 0x061369a7, + 0x06144006, + 0x061449a7, + 0x06152006, + 0x061529a7, + 0x06160006, + 0x061609a7, + 0x0616e006, + 0x0616e9a7, + 0x0617c006, + 0x0617c9a7, + 0x0618a006, + 0x0618a9a7, + 0x06198006, + 0x061989a7, + 0x061a6006, + 0x061a69a7, + 0x061b4006, + 0x061b49a7, + 0x061c2006, + 0x061c29a7, + 0x061d0006, + 0x061d09a7, + 0x061de006, + 0x061de9a7, + 0x061ec006, + 0x061ec9a7, + 0x061fa006, + 0x061fa9a7, + 0x06208006, + 0x062089a7, + 0x06216006, + 0x062169a7, + 0x06224006, + 0x062249a7, + 0x06232006, + 0x062329a7, + 0x06240006, + 0x062409a7, + 0x0624e006, + 0x0624e9a7, + 0x0625c006, + 0x0625c9a7, + 0x0626a006, + 0x0626a9a7, + 0x06278006, + 0x062789a7, + 0x06286006, + 0x062869a7, + 0x06294006, + 0x062949a7, + 0x062a2006, + 0x062a29a7, + 0x062b0006, + 0x062b09a7, + 0x062be006, + 0x062be9a7, + 0x062cc006, + 0x062cc9a7, + 0x062da006, + 0x062da9a7, + 0x062e8006, + 0x062e89a7, + 0x062f6006, + 0x062f69a7, + 0x06304006, + 0x063049a7, + 0x06312006, + 0x063129a7, + 0x06320006, + 0x063209a7, + 0x0632e006, + 0x0632e9a7, + 0x0633c006, + 0x0633c9a7, + 0x0634a006, + 0x0634a9a7, + 0x06358006, + 0x063589a7, + 0x06366006, + 0x063669a7, + 0x06374006, + 0x063749a7, + 0x06382006, + 0x063829a7, + 0x06390006, + 0x063909a7, + 0x0639e006, + 0x0639e9a7, + 0x063ac006, + 0x063ac9a7, + 0x063ba006, + 0x063ba9a7, + 0x063c8006, + 0x063c89a7, + 0x063d6006, + 0x063d69a7, + 0x063e4006, + 0x063e49a7, + 0x063f2006, + 0x063f29a7, + 0x06400006, + 0x064009a7, + 0x0640e006, + 0x0640e9a7, + 0x0641c006, + 0x0641c9a7, + 0x0642a006, + 0x0642a9a7, + 0x06438006, + 0x064389a7, + 0x06446006, + 0x064469a7, + 0x06454006, + 0x064549a7, + 0x06462006, + 0x064629a7, + 0x06470006, + 0x064709a7, + 0x0647e006, + 0x0647e9a7, + 0x0648c006, + 0x0648c9a7, + 0x0649a006, + 0x0649a9a7, + 0x064a8006, + 0x064a89a7, + 0x064b6006, + 0x064b69a7, + 0x064c4006, + 0x064c49a7, + 0x064d2006, + 0x064d29a7, + 0x064e0006, + 0x064e09a7, + 0x064ee006, + 0x064ee9a7, + 0x064fc006, + 0x064fc9a7, + 0x0650a006, + 0x0650a9a7, + 0x06518006, + 0x065189a7, + 0x06526006, + 0x065269a7, + 0x06534006, + 0x065349a7, + 0x06542006, + 0x065429a7, + 0x06550006, + 0x065509a7, + 0x0655e006, + 0x0655e9a7, + 0x0656c006, + 0x0656c9a7, + 0x0657a006, + 0x0657a9a7, + 0x06588006, + 0x065889a7, + 0x06596006, + 0x065969a7, + 0x065a4006, + 0x065a49a7, + 0x065b2006, + 0x065b29a7, + 0x065c0006, + 0x065c09a7, + 0x065ce006, + 0x065ce9a7, + 0x065dc006, + 0x065dc9a7, + 0x065ea006, + 0x065ea9a7, + 0x065f8006, + 0x065f89a7, + 0x06606006, + 0x066069a7, + 0x06614006, + 0x066149a7, + 0x06622006, + 0x066229a7, + 0x06630006, + 0x066309a7, + 0x0663e006, + 0x0663e9a7, + 0x0664c006, + 0x0664c9a7, + 0x0665a006, + 0x0665a9a7, + 0x06668006, + 0x066689a7, + 0x06676006, + 0x066769a7, + 0x06684006, + 0x066849a7, + 0x06692006, + 0x066929a7, + 0x066a0006, + 0x066a09a7, + 0x066ae006, + 0x066ae9a7, + 0x066bc006, + 0x066bc9a7, + 0x066ca006, + 0x066ca9a7, + 0x066d8006, + 0x066d89a7, + 0x066e6006, + 0x066e69a7, + 0x066f4006, + 0x066f49a7, + 0x06702006, + 0x067029a7, + 0x06710006, + 0x067109a7, + 0x0671e006, + 0x0671e9a7, + 0x0672c006, + 0x0672c9a7, + 0x0673a006, + 0x0673a9a7, + 0x06748006, + 0x067489a7, + 0x06756006, + 0x067569a7, + 0x06764006, + 0x067649a7, + 0x06772006, + 0x067729a7, + 0x06780006, + 0x067809a7, + 0x0678e006, + 0x0678e9a7, + 0x0679c006, + 0x0679c9a7, + 0x067aa006, + 0x067aa9a7, + 0x067b8006, + 0x067b89a7, + 0x067c6006, + 0x067c69a7, + 0x067d4006, + 0x067d49a7, + 0x067e2006, + 0x067e29a7, + 0x067f0006, + 0x067f09a7, + 0x067fe006, + 0x067fe9a7, + 0x0680c006, + 0x0680c9a7, + 0x0681a006, + 0x0681a9a7, + 0x06828006, + 0x068289a7, + 0x06836006, + 0x068369a7, + 0x06844006, + 0x068449a7, + 0x06852006, + 0x068529a7, + 0x06860006, + 0x068609a7, + 0x0686e006, + 0x0686e9a7, + 0x0687c006, + 0x0687c9a7, + 0x0688a006, + 0x0688a9a7, + 0x06898006, + 0x068989a7, + 0x068a6006, + 0x068a69a7, + 0x068b4006, + 0x068b49a7, + 0x068c2006, + 0x068c29a7, + 0x068d0006, + 0x068d09a7, + 0x068de006, + 0x068de9a7, + 0x068ec006, + 0x068ec9a7, + 0x068fa006, + 0x068fa9a7, + 0x06908006, + 0x069089a7, + 0x06916006, + 0x069169a7, + 0x06924006, + 0x069249a7, + 0x06932006, + 0x069329a7, + 0x06940006, + 0x069409a7, + 0x0694e006, + 0x0694e9a7, + 0x0695c006, + 0x0695c9a7, + 0x0696a006, + 0x0696a9a7, + 0x06978006, + 0x069789a7, + 0x06986006, + 0x069869a7, + 0x06994006, + 0x069949a7, + 0x069a2006, + 0x069a29a7, + 0x069b0006, + 0x069b09a7, + 0x069be006, + 0x069be9a7, + 0x069cc006, + 0x069cc9a7, + 0x069da006, + 0x069da9a7, + 0x069e8006, + 0x069e89a7, + 0x069f6006, + 0x069f69a7, + 0x06a04006, + 0x06a049a7, + 0x06a12006, + 0x06a129a7, + 0x06a20006, + 0x06a209a7, + 0x06a2e006, + 0x06a2e9a7, + 0x06a3c006, + 0x06a3c9a7, + 0x06a4a006, + 0x06a4a9a7, + 0x06a58006, + 0x06a589a7, + 0x06a66006, + 0x06a669a7, + 0x06a74006, + 0x06a749a7, + 0x06a82006, + 0x06a829a7, + 0x06a90006, + 0x06a909a7, + 0x06a9e006, + 0x06a9e9a7, + 0x06aac006, + 0x06aac9a7, + 0x06aba006, + 0x06aba9a7, + 0x06ac8006, + 0x06ac89a7, + 0x06ad6006, + 0x06ad69a7, + 0x06ae4006, + 0x06ae49a7, + 0x06af2006, + 0x06af29a7, + 0x06b00006, + 0x06b009a7, + 0x06b0e006, + 0x06b0e9a7, + 0x06b1c006, + 0x06b1c9a7, + 0x06b2a006, + 0x06b2a9a7, + 0x06b38006, + 0x06b389a7, + 0x06b46006, + 0x06b469a7, + 0x06b54006, + 0x06b549a7, + 0x06b62006, + 0x06b629a7, + 0x06b70006, + 0x06b709a7, + 0x06b7e006, + 0x06b7e9a7, + 0x06b8c006, + 0x06b8c9a7, + 0x06b9a006, + 0x06b9a9a7, + 0x06ba8006, + 0x06ba89a7, + 0x06bb6006, + 0x06bb69a7, + 0x06bc4006, + 0x06bc49a7, + 0x06bd816c, + 0x06be5b0b, + 0x07d8f002, + 0x07f000f2, + 0x07f100f2, + 0x07f7f801, + 0x07fcf012, + 0x07ff80b1, + 0x080fe802, + 0x08170002, + 0x081bb042, + 0x08500822, + 0x08502812, + 0x08506032, + 0x0851c022, + 0x0851f802, + 0x08572812, + 0x08692032, + 0x08755812, + 0x0877e822, + 0x087a30a2, + 0x087c1032, + 0x0880000a, + 0x08800802, + 0x0880100a, + 0x0881c0e2, + 0x08838002, + 0x08839812, + 0x0883f822, + 0x0884100a, + 0x0885802a, + 0x08859832, + 0x0885b81a, + 0x0885c812, + 0x0885e808, + 0x08861002, + 0x08866808, + 0x08880022, + 0x08893842, + 0x0889600a, + 0x08896872, + 0x088a281a, + 0x088b9802, + 0x088c0012, + 0x088c100a, + 0x088d982a, + 0x088db082, + 0x088df81a, + 0x088e1018, + 0x088e4832, + 0x088e700a, + 0x088e7802, + 0x0891602a, + 0x08917822, + 0x0891901a, + 0x0891a002, + 0x0891a80a, + 0x0891b012, + 0x0891f002, + 0x08920802, + 0x0896f802, + 0x0897002a, + 0x08971872, + 0x08980012, + 0x0898101a, + 0x0899d812, + 0x0899f002, + 0x0899f80a, + 0x089a0002, + 0x089a083a, + 0x089a381a, + 0x089a582a, + 0x089ab802, + 0x089b101a, + 0x089b3062, + 0x089b8042, + 0x08a1a82a, + 0x08a1c072, + 0x08a2001a, + 0x08a21022, + 0x08a2280a, + 0x08a23002, + 0x08a2f002, + 0x08a58002, + 0x08a5881a, + 0x08a59852, + 0x08a5c80a, + 0x08a5d002, + 0x08a5d81a, + 0x08a5e802, + 0x08a5f00a, + 0x08a5f812, + 0x08a6080a, + 0x08a61012, + 0x08ad7802, + 0x08ad801a, + 0x08ad9032, + 0x08adc03a, + 0x08ade012, + 0x08adf00a, + 0x08adf812, + 0x08aee012, + 0x08b1802a, + 0x08b19872, + 0x08b1d81a, + 0x08b1e802, + 0x08b1f00a, + 0x08b1f812, + 0x08b55802, + 0x08b5600a, + 0x08b56802, + 0x08b5701a, + 0x08b58052, + 0x08b5b00a, + 0x08b5b802, + 0x08b8e822, + 0x08b91032, + 0x08b9300a, + 0x08b93842, + 0x08c1602a, + 0x08c17882, + 0x08c1c00a, + 0x08c1c812, + 0x08c98002, + 0x08c9884a, + 0x08c9b81a, + 0x08c9d812, + 0x08c9e80a, + 0x08c9f002, + 0x08c9f808, + 0x08ca000a, + 0x08ca0808, + 0x08ca100a, + 0x08ca1802, + 0x08ce882a, + 0x08cea032, + 0x08ced012, + 0x08cee03a, + 0x08cf0002, + 0x08cf200a, + 0x08d00892, + 0x08d19852, + 0x08d1c80a, + 0x08d1d008, + 0x08d1d832, + 0x08d23802, + 0x08d28852, + 0x08d2b81a, + 0x08d2c822, + 0x08d42058, + 0x08d450c2, + 0x08d4b80a, + 0x08d4c012, + 0x08e1780a, + 0x08e18062, + 0x08e1c052, + 0x08e1f00a, + 0x08e1f802, + 0x08e49152, + 0x08e5480a, + 0x08e55062, + 0x08e5880a, + 0x08e59012, + 0x08e5a00a, + 0x08e5a812, + 0x08e98852, + 0x08e9d002, + 0x08e9e012, + 0x08e9f862, + 0x08ea3008, + 0x08ea3802, + 0x08ec504a, + 0x08ec8012, + 0x08ec981a, + 0x08eca802, + 0x08ecb00a, + 0x08ecb802, + 0x08f79812, + 0x08f7a81a, + 0x08f80012, + 0x08f81008, + 0x08f8180a, + 0x08f9a01a, + 0x08f9b042, + 0x08f9f01a, + 0x08fa0002, + 0x08fa080a, + 0x08fa1002, + 0x09a180f1, + 0x09a20002, + 0x09a238e2, + 0x0b578042, + 0x0b598062, + 0x0b7a7802, + 0x0b7a8b6a, + 0x0b7c7832, + 0x0b7f2002, + 0x0b7f801a, + 0x0de4e812, + 0x0de50031, + 0x0e7802d2, + 0x0e798162, + 0x0e8b2802, + 0x0e8b300a, + 0x0e8b3822, + 0x0e8b680a, + 0x0e8b7042, + 0x0e8b9871, + 0x0e8bd872, + 0x0e8c2862, + 0x0e8d5032, + 0x0e921022, + 0x0ed00362, + 0x0ed1db12, + 0x0ed3a802, + 0x0ed42002, + 0x0ed4d842, + 0x0ed508e2, + 0x0f000062, + 0x0f004102, + 0x0f00d862, + 0x0f011812, + 0x0f013042, + 0x0f047802, + 0x0f098062, + 0x0f157002, + 0x0f176032, + 0x0f276032, + 0x0f468062, + 0x0f4a2062, + 0x0f8007f3, + 0x0f8407f3, + 0x0f886823, + 0x0f897803, + 0x0f8b6053, + 0x0f8bf013, + 0x0f8c7003, + 0x0f8c8893, + 0x0f8d6b83, + 0x0f8f3199, + 0x0f9008e3, + 0x0f90d003, + 0x0f917803, + 0x0f919083, + 0x0f91e033, + 0x0f924ff3, + 0x0f964ff3, + 0x0f9a4ff3, + 0x0f9e4b13, + 0x0f9fd842, + 0x0fa007f3, + 0x0fa407f3, + 0x0fa803d3, + 0x0faa37f3, + 0x0fae37f3, + 0x0fb23093, + 0x0fb407f3, + 0x0fbba0b3, + 0x0fbeaaa3, + 0x0fc06033, + 0x0fc24073, + 0x0fc2d053, + 0x0fc44073, + 0x0fc57513, + 0x0fc862e3, + 0x0fc9e093, + 0x0fca3ff3, + 0x0fce3ff3, + 0x0fd23ff3, + 0x0fd63b83, + 0x0fe007f3, + 0x0fe407f3, + 0x0fe807f3, + 0x0fec07f3, + 0x0ff007f3, + 0x0ff407f3, + 0x0ff807f3, + 0x0ffc07d3, + 0x700001f1, + 0x700105f2, + 0x700407f1, + 0x700807f2, + 0x700c06f2, + 0x700f87f1, + 0x701387f1, + 0x701787f1, + 0x701b87f1, + 0x701f87f1, + 0x702387f1, + 0x702787f1, + 0x702b87f1, + 0x702f87f1, + 0x703387f1, + 0x703787f1, + 0x703b87f1, + 0x703f87f1, + 0x704387f1, + 0x704787f1, + 0x704b87f1, + 0x704f87f1, + 0x705387f1, + 0x705787f1, + 0x705b87f1, + 0x705f87f1, + 0x706387f1, + 0x706787f1, + 0x706b87f1, + 0x706f87f1, + 0x707387f1, + 0x707787f1, + 0x707b87f1, + 0x707f80f1}; + +/// Returns the extended grapheme cluster bondary property of a code point. +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr __property __get_property(const char32_t __code_point) noexcept { + // The algorithm searches for the upper bound of the range and, when found, + // steps back one entry. This algorithm is used since the code point can be + // anywhere in the range. After a lower bound is found the next step is to + // compare whether the code unit is indeed in the range. + // + // Since the entry contains a code unit, size, and property the code point + // being sought needs to be adjusted. Just shifting the code point to the + // proper position doesn't work; suppose an entry has property 0, size 1, + // and lower bound 3. This results in the entry 0x1810. + // When searching for code point 3 it will search for 0x1800, find 0x1810 + // and moves to the previous entry. Thus the lower bound value will never + // be found. + // The simple solution is to set the bits belonging to the property and + // size. Then the upper bound for code point 3 will return the entry after + // 0x1810. After moving to the previous entry the algorithm arrives at the + // correct entry. + ptrdiff_t __i = std::ranges::upper_bound(__entries, (__code_point << 11) | 0x7ffu) - __entries; + if (__i == 0) + return __property::__none; + + --__i; + uint32_t __upper_bound = (__entries[__i] >> 11) + ((__entries[__i] >> 4) & 0x7f); + if (__code_point <= __upper_bound) + return static_cast<__property>(__entries[__i] & 0xf); + + return __property::__none; +} + +} // namespace __extended_grapheme_custer_property_boundary + +#endif //_LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FORMAT_EXTENDED_GRAPHEME_CLUSTER_TABLE_H diff --git a/third_party/libcxx/__format/format_arg.h b/third_party/libcxx/__format/format_arg.h new file mode 100644 index 000000000..a27da8d74 --- /dev/null +++ b/third_party/libcxx/__format/format_arg.h @@ -0,0 +1,305 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FORMAT_FORMAT_ARG_H +#define _LIBCPP___FORMAT_FORMAT_ARG_H + +#include <__assert> +#include <__concepts/arithmetic.h> +#include <__config> +#include <__format/format_error.h> +#include <__format/format_fwd.h> +#include <__format/format_parse_context.h> +#include <__functional/invoke.h> +#include <__memory/addressof.h> +#include <__type_traits/conditional.h> +#include <__type_traits/is_const.h> +#include <__utility/declval.h> +#include <__utility/forward.h> +#include <__utility/unreachable.h> +#include <__variant/monostate.h> +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +namespace __format { +/// The type stored in @ref basic_format_arg. +/// +/// @note The 128-bit types are unconditionally in the list to avoid the values +/// of the enums to depend on the availability of 128-bit integers. +/// +/// @note The value is stored as a 5-bit value in the __packed_arg_t_bits. This +/// limits the maximum number of elements to 32. +/// When modifying update the test +/// test/libcxx/utilities/format/format.arguments/format.arg/arg_t.compile.pass.cpp +/// It could be packed in 4-bits but that means a new type directly becomes an +/// ABI break. The packed type is 64-bit so this reduces the maximum number of +/// packed elements from 16 to 12. +/// +/// @note Some members of this enum are an extension. These extensions need +/// special behaviour in visit_format_arg. There they need to be wrapped in a +/// handle to satisfy the user observable behaviour. The internal function +/// __visit_format_arg doesn't do this wrapping. So in the format functions +/// this function is used to avoid unneeded overhead. +enum class _LIBCPP_ENUM_VIS __arg_t : uint8_t { + __none, + __boolean, + __char_type, + __int, + __long_long, + __i128, // extension + __unsigned, + __unsigned_long_long, + __u128, // extension + __float, + __double, + __long_double, + __const_char_type_ptr, + __string_view, + __ptr, + __handle +}; + +inline constexpr unsigned __packed_arg_t_bits = 5; +inline constexpr uint8_t __packed_arg_t_mask = 0x1f; + +inline constexpr unsigned __packed_types_storage_bits = 64; +inline constexpr unsigned __packed_types_max = __packed_types_storage_bits / __packed_arg_t_bits; + +_LIBCPP_HIDE_FROM_ABI +constexpr bool __use_packed_format_arg_store(size_t __size) { return __size <= __packed_types_max; } + +_LIBCPP_HIDE_FROM_ABI +constexpr __arg_t __get_packed_type(uint64_t __types, size_t __id) { + _LIBCPP_ASSERT(__id <= __packed_types_max, ""); + + if (__id > 0) + __types >>= __id * __packed_arg_t_bits; + + return static_cast<__format::__arg_t>(__types & __packed_arg_t_mask); +} + +} // namespace __format + +// This function is not user obervable, so it can directly use the non-standard +// types of the "variant". See __arg_t for more details. +template +_LIBCPP_HIDE_FROM_ABI decltype(auto) +__visit_format_arg(_Visitor&& __vis, basic_format_arg<_Context> __arg) { + switch (__arg.__type_) { + case __format::__arg_t::__none: + return _VSTD::invoke(_VSTD::forward<_Visitor>(__vis), __arg.__value_.__monostate_); + case __format::__arg_t::__boolean: + return _VSTD::invoke(_VSTD::forward<_Visitor>(__vis), __arg.__value_.__boolean_); + case __format::__arg_t::__char_type: + return _VSTD::invoke(_VSTD::forward<_Visitor>(__vis), __arg.__value_.__char_type_); + case __format::__arg_t::__int: + return _VSTD::invoke(_VSTD::forward<_Visitor>(__vis), __arg.__value_.__int_); + case __format::__arg_t::__long_long: + return _VSTD::invoke(_VSTD::forward<_Visitor>(__vis), __arg.__value_.__long_long_); + case __format::__arg_t::__i128: +# ifndef _LIBCPP_HAS_NO_INT128 + return _VSTD::invoke(_VSTD::forward<_Visitor>(__vis), __arg.__value_.__i128_); +# else + __libcpp_unreachable(); +# endif + case __format::__arg_t::__unsigned: + return _VSTD::invoke(_VSTD::forward<_Visitor>(__vis), __arg.__value_.__unsigned_); + case __format::__arg_t::__unsigned_long_long: + return _VSTD::invoke(_VSTD::forward<_Visitor>(__vis), __arg.__value_.__unsigned_long_long_); + case __format::__arg_t::__u128: +# ifndef _LIBCPP_HAS_NO_INT128 + return _VSTD::invoke(_VSTD::forward<_Visitor>(__vis), __arg.__value_.__u128_); +# else + __libcpp_unreachable(); +# endif + case __format::__arg_t::__float: + return _VSTD::invoke(_VSTD::forward<_Visitor>(__vis), __arg.__value_.__float_); + case __format::__arg_t::__double: + return _VSTD::invoke(_VSTD::forward<_Visitor>(__vis), __arg.__value_.__double_); + case __format::__arg_t::__long_double: + return _VSTD::invoke(_VSTD::forward<_Visitor>(__vis), __arg.__value_.__long_double_); + case __format::__arg_t::__const_char_type_ptr: + return _VSTD::invoke(_VSTD::forward<_Visitor>(__vis), __arg.__value_.__const_char_type_ptr_); + case __format::__arg_t::__string_view: + return _VSTD::invoke(_VSTD::forward<_Visitor>(__vis), __arg.__value_.__string_view_); + case __format::__arg_t::__ptr: + return _VSTD::invoke(_VSTD::forward<_Visitor>(__vis), __arg.__value_.__ptr_); + case __format::__arg_t::__handle: + return _VSTD::invoke(_VSTD::forward<_Visitor>(__vis), + typename basic_format_arg<_Context>::handle{__arg.__value_.__handle_}); + } + + __libcpp_unreachable(); +} + +/// Contains the values used in basic_format_arg. +/// +/// This is a separate type so it's possible to store the values and types in +/// separate arrays. +template +class __basic_format_arg_value { + using _CharT = typename _Context::char_type; + +public: + /// Contains the implementation for basic_format_arg::handle. + struct __handle { + template + _LIBCPP_HIDE_FROM_ABI explicit __handle(_Tp&& __v) noexcept + : __ptr_(_VSTD::addressof(__v)), + __format_([](basic_format_parse_context<_CharT>& __parse_ctx, _Context& __ctx, const void* __ptr) { + using _Dp = remove_cvref_t<_Tp>; + using _Formatter = typename _Context::template formatter_type<_Dp>; + constexpr bool __const_formattable = + requires { _Formatter().format(std::declval(), std::declval<_Context&>()); }; + using _Qp = conditional_t<__const_formattable, const _Dp, _Dp>; + + static_assert(__const_formattable || !is_const_v>, "Mandated by [format.arg]/18"); + + _Formatter __f; + __parse_ctx.advance_to(__f.parse(__parse_ctx)); + __ctx.advance_to(__f.format(*const_cast<_Qp*>(static_cast(__ptr)), __ctx)); + }) {} + + const void* __ptr_; + void (*__format_)(basic_format_parse_context<_CharT>&, _Context&, const void*); + }; + + union { + monostate __monostate_; + bool __boolean_; + _CharT __char_type_; + int __int_; + unsigned __unsigned_; + long long __long_long_; + unsigned long long __unsigned_long_long_; +# ifndef _LIBCPP_HAS_NO_INT128 + __int128_t __i128_; + __uint128_t __u128_; +# endif + float __float_; + double __double_; + long double __long_double_; + const _CharT* __const_char_type_ptr_; + basic_string_view<_CharT> __string_view_; + const void* __ptr_; + __handle __handle_; + }; + + // These constructors contain the exact storage type used. If adjustments are + // required, these will be done in __create_format_arg. + + _LIBCPP_HIDE_FROM_ABI __basic_format_arg_value() noexcept : __monostate_() {} + _LIBCPP_HIDE_FROM_ABI __basic_format_arg_value(bool __value) noexcept : __boolean_(__value) {} + _LIBCPP_HIDE_FROM_ABI __basic_format_arg_value(_CharT __value) noexcept : __char_type_(__value) {} + _LIBCPP_HIDE_FROM_ABI __basic_format_arg_value(int __value) noexcept : __int_(__value) {} + _LIBCPP_HIDE_FROM_ABI __basic_format_arg_value(unsigned __value) noexcept : __unsigned_(__value) {} + _LIBCPP_HIDE_FROM_ABI __basic_format_arg_value(long long __value) noexcept : __long_long_(__value) {} + _LIBCPP_HIDE_FROM_ABI __basic_format_arg_value(unsigned long long __value) noexcept + : __unsigned_long_long_(__value) {} +# ifndef _LIBCPP_HAS_NO_INT128 + _LIBCPP_HIDE_FROM_ABI __basic_format_arg_value(__int128_t __value) noexcept : __i128_(__value) {} + _LIBCPP_HIDE_FROM_ABI __basic_format_arg_value(__uint128_t __value) noexcept : __u128_(__value) {} +# endif + _LIBCPP_HIDE_FROM_ABI __basic_format_arg_value(float __value) noexcept : __float_(__value) {} + _LIBCPP_HIDE_FROM_ABI __basic_format_arg_value(double __value) noexcept : __double_(__value) {} + _LIBCPP_HIDE_FROM_ABI __basic_format_arg_value(long double __value) noexcept : __long_double_(__value) {} + _LIBCPP_HIDE_FROM_ABI __basic_format_arg_value(const _CharT* __value) noexcept : __const_char_type_ptr_(__value) {} + _LIBCPP_HIDE_FROM_ABI __basic_format_arg_value(basic_string_view<_CharT> __value) noexcept + : __string_view_(__value) {} + _LIBCPP_HIDE_FROM_ABI __basic_format_arg_value(const void* __value) noexcept : __ptr_(__value) {} + _LIBCPP_HIDE_FROM_ABI __basic_format_arg_value(__handle __value) noexcept + // TODO FMT Investigate why it doesn't work without the forward. + : __handle_(std::forward<__handle>(__value)) {} +}; + +template +class _LIBCPP_TEMPLATE_VIS basic_format_arg { +public: + class _LIBCPP_TEMPLATE_VIS handle; + + _LIBCPP_HIDE_FROM_ABI basic_format_arg() noexcept + : __type_{__format::__arg_t::__none} {} + + _LIBCPP_HIDE_FROM_ABI explicit operator bool() const noexcept { + return __type_ != __format::__arg_t::__none; + } + +private: + using char_type = typename _Context::char_type; + + // TODO FMT Implement constrain [format.arg]/4 + // Constraints: The template specialization + // typename Context::template formatter_type + // meets the Formatter requirements ([formatter.requirements]). The extent + // to which an implementation determines that the specialization meets the + // Formatter requirements is unspecified, except that as a minimum the + // expression + // typename Context::template formatter_type() + // .format(declval(), declval()) + // shall be well-formed when treated as an unevaluated operand. + +public: + __basic_format_arg_value<_Context> __value_; + __format::__arg_t __type_; + + _LIBCPP_HIDE_FROM_ABI explicit basic_format_arg(__format::__arg_t __type, + __basic_format_arg_value<_Context> __value) noexcept + : __value_(__value), __type_(__type) {} +}; + +template +class _LIBCPP_TEMPLATE_VIS basic_format_arg<_Context>::handle { +public: + _LIBCPP_HIDE_FROM_ABI + void format(basic_format_parse_context& __parse_ctx, _Context& __ctx) const { + __handle_.__format_(__parse_ctx, __ctx, __handle_.__ptr_); + } + + _LIBCPP_HIDE_FROM_ABI explicit handle(typename __basic_format_arg_value<_Context>::__handle& __handle) noexcept + : __handle_(__handle) {} + +private: + typename __basic_format_arg_value<_Context>::__handle& __handle_; +}; + +// This function is user facing, so it must wrap the non-standard types of +// the "variant" in a handle to stay conforming. See __arg_t for more details. +template +_LIBCPP_HIDE_FROM_ABI decltype(auto) +visit_format_arg(_Visitor&& __vis, basic_format_arg<_Context> __arg) { + switch (__arg.__type_) { +# ifndef _LIBCPP_HAS_NO_INT128 + case __format::__arg_t::__i128: { + typename __basic_format_arg_value<_Context>::__handle __h{__arg.__value_.__i128_}; + return _VSTD::invoke(_VSTD::forward<_Visitor>(__vis), typename basic_format_arg<_Context>::handle{__h}); + } + + case __format::__arg_t::__u128: { + typename __basic_format_arg_value<_Context>::__handle __h{__arg.__value_.__u128_}; + return _VSTD::invoke(_VSTD::forward<_Visitor>(__vis), typename basic_format_arg<_Context>::handle{__h}); + } +# endif + default: + return _VSTD::__visit_format_arg(_VSTD::forward<_Visitor>(__vis), __arg); + } +} + +#endif //_LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FORMAT_FORMAT_ARG_H diff --git a/third_party/libcxx/__format/format_arg_store.h b/third_party/libcxx/__format/format_arg_store.h new file mode 100644 index 000000000..1dbbcf31b --- /dev/null +++ b/third_party/libcxx/__format/format_arg_store.h @@ -0,0 +1,254 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FORMAT_FORMAT_ARG_STORE_H +#define _LIBCPP___FORMAT_FORMAT_ARG_STORE_H + +#include <__concepts/arithmetic.h> +#include <__concepts/same_as.h> +#include <__config> +#include <__format/concepts.h> +#include <__format/format_arg.h> +#include <__type_traits/conditional.h> +#include <__type_traits/extent.h> +#include <__type_traits/is_same.h> +#include <__utility/forward.h> +#include +#include + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +namespace __format { + +/// \returns The @c __arg_t based on the type of the formatting argument. +/// +/// \pre \c __formattable<_Tp, typename _Context::char_type> +template +consteval __arg_t __determine_arg_t(); + +// Boolean +template _Tp> +consteval __arg_t __determine_arg_t() { + return __arg_t::__boolean; +} + +// Char +template _Tp> +consteval __arg_t __determine_arg_t() { + return __arg_t::__char_type; +} +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +template + requires(same_as && same_as<_CharT, char>) +consteval __arg_t __determine_arg_t() { + return __arg_t::__char_type; +} +# endif + +// Signed integers +template +consteval __arg_t __determine_arg_t() { + if constexpr (sizeof(_Tp) <= sizeof(int)) + return __arg_t::__int; + else if constexpr (sizeof(_Tp) <= sizeof(long long)) + return __arg_t::__long_long; +# ifndef _LIBCPP_HAS_NO_INT128 + else if constexpr (sizeof(_Tp) == sizeof(__int128_t)) + return __arg_t::__i128; +# endif + else + static_assert(sizeof(_Tp) == 0, "an unsupported signed integer was used"); +} + +// Unsigned integers +template +consteval __arg_t __determine_arg_t() { + if constexpr (sizeof(_Tp) <= sizeof(unsigned)) + return __arg_t::__unsigned; + else if constexpr (sizeof(_Tp) <= sizeof(unsigned long long)) + return __arg_t::__unsigned_long_long; +# ifndef _LIBCPP_HAS_NO_INT128 + else if constexpr (sizeof(_Tp) == sizeof(__uint128_t)) + return __arg_t::__u128; +# endif + else + static_assert(sizeof(_Tp) == 0, "an unsupported unsigned integer was used"); +} + +// Floating-point +template _Tp> +consteval __arg_t __determine_arg_t() { + return __arg_t::__float; +} +template _Tp> +consteval __arg_t __determine_arg_t() { + return __arg_t::__double; +} +template _Tp> +consteval __arg_t __determine_arg_t() { + return __arg_t::__long_double; +} + +// Char pointer +template + requires(same_as || same_as) +consteval __arg_t __determine_arg_t() { + return __arg_t::__const_char_type_ptr; +} + +// Char array +template + requires(is_array_v<_Tp> && same_as<_Tp, typename _Context::char_type[extent_v<_Tp>]>) +consteval __arg_t __determine_arg_t() { + return __arg_t::__string_view; +} + +// String view +template + requires(same_as && + same_as<_Tp, basic_string_view>) +consteval __arg_t __determine_arg_t() { + return __arg_t::__string_view; +} + +// String +template + requires( + same_as && + same_as<_Tp, basic_string>) +consteval __arg_t __determine_arg_t() { + return __arg_t::__string_view; +} + +// Pointers +template + requires(same_as<_Ptr, void*> || same_as<_Ptr, const void*> || same_as<_Ptr, nullptr_t>) +consteval __arg_t __determine_arg_t() { + return __arg_t::__ptr; +} + +// Handle +// +// Note this version can't be constrained avoiding ambiguous overloads. +// That means it can be instantiated by disabled formatters. To solve this, a +// constrained version for not formattable formatters is added. +template +consteval __arg_t __determine_arg_t() { + return __arg_t::__handle; +} + +// The overload for not formattable types allows triggering the static +// assertion below. +template + requires(!__formattable<_Tp, typename _Context::char_type>) +consteval __arg_t __determine_arg_t() { + return __arg_t::__none; +} + +template +_LIBCPP_HIDE_FROM_ABI basic_format_arg<_Context> __create_format_arg(_Tp&& __value) noexcept { + constexpr __arg_t __arg = __determine_arg_t<_Context, remove_cvref_t<_Tp>>(); + static_assert(__arg != __arg_t::__none, "the supplied type is not formattable"); + + // Not all types can be used to directly initialize the + // __basic_format_arg_value. First handle all types needing adjustment, the + // final else requires no adjustment. + if constexpr (__arg == __arg_t::__char_type) + // On some platforms initializing a wchar_t from a char is a narrowing + // conversion. + return basic_format_arg<_Context>{__arg, static_cast(__value)}; + else if constexpr (__arg == __arg_t::__int) + return basic_format_arg<_Context>{__arg, static_cast(__value)}; + else if constexpr (__arg == __arg_t::__long_long) + return basic_format_arg<_Context>{__arg, static_cast(__value)}; + else if constexpr (__arg == __arg_t::__unsigned) + return basic_format_arg<_Context>{__arg, static_cast(__value)}; + else if constexpr (__arg == __arg_t::__unsigned_long_long) + return basic_format_arg<_Context>{__arg, static_cast(__value)}; + else if constexpr (__arg == __arg_t::__string_view) + // Using std::size on a character array will add the NUL-terminator to the size. + if constexpr (is_array_v>) + return basic_format_arg<_Context>{ + __arg, basic_string_view{__value, extent_v> - 1}}; + else + // When the _Traits or _Allocator are different an implicit conversion will + // fail. + return basic_format_arg<_Context>{ + __arg, basic_string_view{__value.data(), __value.size()}}; + else if constexpr (__arg == __arg_t::__ptr) + return basic_format_arg<_Context>{__arg, static_cast(__value)}; + else if constexpr (__arg == __arg_t::__handle) + return basic_format_arg<_Context>{ + __arg, typename __basic_format_arg_value<_Context>::__handle{_VSTD::forward<_Tp>(__value)}}; + else + return basic_format_arg<_Context>{__arg, __value}; +} + +template +_LIBCPP_HIDE_FROM_ABI void __create_packed_storage(uint64_t& __types, __basic_format_arg_value<_Context>* __values, + _Args&&... __args) noexcept { + int __shift = 0; + ( + [&] { + basic_format_arg<_Context> __arg = __format::__create_format_arg<_Context>(__args); + if (__shift != 0) + __types |= static_cast(__arg.__type_) << __shift; + else + // Assigns the initial value. + __types = static_cast(__arg.__type_); + __shift += __packed_arg_t_bits; + *__values++ = __arg.__value_; + }(), + ...); +} + +template +_LIBCPP_HIDE_FROM_ABI void __store_basic_format_arg(basic_format_arg<_Context>* __data, _Args&&... __args) noexcept { + ([&] { *__data++ = __format::__create_format_arg<_Context>(__args); }(), ...); +} + +template +struct __packed_format_arg_store { + __basic_format_arg_value<_Context> __values_[N]; + uint64_t __types_; +}; + +template +struct __unpacked_format_arg_store { + basic_format_arg<_Context> __args_[N]; +}; + +} // namespace __format + +template +struct _LIBCPP_TEMPLATE_VIS __format_arg_store { + _LIBCPP_HIDE_FROM_ABI + __format_arg_store(_Args&... __args) noexcept { + if constexpr (sizeof...(_Args) != 0) { + if constexpr (__format::__use_packed_format_arg_store(sizeof...(_Args))) + __format::__create_packed_storage(__storage.__types_, __storage.__values_, __args...); + else + __format::__store_basic_format_arg<_Context>(__storage.__args_, __args...); + } + } + + using _Storage = conditional_t<__format::__use_packed_format_arg_store(sizeof...(_Args)), + __format::__packed_format_arg_store<_Context, sizeof...(_Args)>, + __format::__unpacked_format_arg_store<_Context, sizeof...(_Args)>>; + + _Storage __storage; +}; + +#endif //_LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FORMAT_FORMAT_ARG_STORE_H diff --git a/third_party/libcxx/__format/format_args.h b/third_party/libcxx/__format/format_args.h new file mode 100644 index 000000000..defb42a4a --- /dev/null +++ b/third_party/libcxx/__format/format_args.h @@ -0,0 +1,82 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FORMAT_FORMAT_ARGS_H +#define _LIBCPP___FORMAT_FORMAT_ARGS_H + +#include <__availability> +#include <__config> +#include <__format/format_arg.h> +#include <__format/format_arg_store.h> +#include <__format/format_fwd.h> +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +template +class _LIBCPP_TEMPLATE_VIS basic_format_args { +public: + basic_format_args() noexcept = default; + + template + _LIBCPP_HIDE_FROM_ABI basic_format_args(const __format_arg_store<_Context, _Args...>& __store) noexcept + : __size_(sizeof...(_Args)) { + if constexpr (sizeof...(_Args) != 0) { + if constexpr (__format::__use_packed_format_arg_store(sizeof...(_Args))) { + __values_ = __store.__storage.__values_; + __types_ = __store.__storage.__types_; + } else + __args_ = __store.__storage.__args_; + } + } + + _LIBCPP_HIDE_FROM_ABI + basic_format_arg<_Context> get(size_t __id) const noexcept { + if (__id >= __size_) + return basic_format_arg<_Context>{}; + + if (__format::__use_packed_format_arg_store(__size_)) + return basic_format_arg<_Context>{__format::__get_packed_type(__types_, __id), __values_[__id]}; + + return __args_[__id]; + } + + _LIBCPP_HIDE_FROM_ABI size_t __size() const noexcept { return __size_; } + +private: + size_t __size_{0}; + // [format.args]/5 + // [Note 1: Implementations are encouraged to optimize the representation of + // basic_format_args for small number of formatting arguments by storing + // indices of type alternatives separately from values and packing the + // former. - end note] + union { + struct { + const __basic_format_arg_value<_Context>* __values_; + uint64_t __types_; + }; + const basic_format_arg<_Context>* __args_; + }; +}; + +template +basic_format_args(__format_arg_store<_Context, _Args...>) -> basic_format_args<_Context>; + +#endif //_LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FORMAT_FORMAT_ARGS_H diff --git a/third_party/libcxx/__format/format_context.h b/third_party/libcxx/__format/format_context.h new file mode 100644 index 000000000..521131db8 --- /dev/null +++ b/third_party/libcxx/__format/format_context.h @@ -0,0 +1,222 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FORMAT_FORMAT_CONTEXT_H +#define _LIBCPP___FORMAT_FORMAT_CONTEXT_H + +#include <__availability> +#include <__concepts/same_as.h> +#include <__config> +#include <__format/buffer.h> +#include <__format/format_arg.h> +#include <__format/format_arg_store.h> +#include <__format/format_args.h> +#include <__format/format_error.h> +#include <__format/format_fwd.h> +#include <__iterator/back_insert_iterator.h> +#include <__iterator/concepts.h> +#include <__memory/addressof.h> +#include <__utility/move.h> +#include <__variant/monostate.h> +#include + +#ifndef _LIBCPP_HAS_NO_LOCALIZATION +#include +#include +#endif + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +template +requires output_iterator<_OutIt, const _CharT&> +class _LIBCPP_TEMPLATE_VIS basic_format_context; + +#ifndef _LIBCPP_HAS_NO_LOCALIZATION +/** + * Helper to create a basic_format_context. + * + * This is needed since the constructor is private. + */ +template +_LIBCPP_HIDE_FROM_ABI basic_format_context<_OutIt, _CharT> +__format_context_create( + _OutIt __out_it, + basic_format_args> __args, + optional<_VSTD::locale>&& __loc = nullopt) { + return _VSTD::basic_format_context(_VSTD::move(__out_it), __args, _VSTD::move(__loc)); +} +#else +template +_LIBCPP_HIDE_FROM_ABI basic_format_context<_OutIt, _CharT> +__format_context_create( + _OutIt __out_it, + basic_format_args> __args) { + return _VSTD::basic_format_context(_VSTD::move(__out_it), __args); +} +#endif + +using format_context = + basic_format_context>, + char>; +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +using wformat_context = basic_format_context< + back_insert_iterator<__format::__output_buffer>, wchar_t>; +#endif + +template +requires output_iterator<_OutIt, const _CharT&> +class + // clang-format off + _LIBCPP_TEMPLATE_VIS + _LIBCPP_PREFERRED_NAME(format_context) + _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wformat_context)) + // clang-format on + basic_format_context { +public: + using iterator = _OutIt; + using char_type = _CharT; + template + using formatter_type = formatter<_Tp, _CharT>; + + _LIBCPP_HIDE_FROM_ABI basic_format_arg + arg(size_t __id) const noexcept { + return __args_.get(__id); + } +#ifndef _LIBCPP_HAS_NO_LOCALIZATION + _LIBCPP_HIDE_FROM_ABI _VSTD::locale locale() { + if (!__loc_) + __loc_ = _VSTD::locale{}; + return *__loc_; + } +#endif + _LIBCPP_HIDE_FROM_ABI iterator out() { return std::move(__out_it_); } + _LIBCPP_HIDE_FROM_ABI void advance_to(iterator __it) { __out_it_ = std::move(__it); } + +private: + iterator __out_it_; + basic_format_args __args_; +#ifndef _LIBCPP_HAS_NO_LOCALIZATION + + // The Standard doesn't specify how the locale is stored. + // [format.context]/6 + // std::locale locale(); + // Returns: The locale passed to the formatting function if the latter + // takes one, and std::locale() otherwise. + // This is done by storing the locale of the constructor in this optional. If + // locale() is called and the optional has no value the value will be created. + // This allows the implementation to lazily create the locale. + // TODO FMT Validate whether lazy creation is the best solution. + optional<_VSTD::locale> __loc_; + + template + friend _LIBCPP_HIDE_FROM_ABI basic_format_context<__OutIt, __CharT> + __format_context_create(__OutIt, basic_format_args>, + optional<_VSTD::locale>&&); + + // Note: the Standard doesn't specify the required constructors. + _LIBCPP_HIDE_FROM_ABI + explicit basic_format_context(_OutIt __out_it, + basic_format_args __args, + optional<_VSTD::locale>&& __loc) + : __out_it_(_VSTD::move(__out_it)), __args_(__args), + __loc_(_VSTD::move(__loc)) {} +#else + template + friend _LIBCPP_HIDE_FROM_ABI basic_format_context<__OutIt, __CharT> + __format_context_create(__OutIt, basic_format_args>); + + _LIBCPP_HIDE_FROM_ABI + explicit basic_format_context(_OutIt __out_it, + basic_format_args __args) + : __out_it_(_VSTD::move(__out_it)), __args_(__args) {} +#endif +}; + +// A specialization for __retarget_buffer +// +// See __retarget_buffer for the motivation for this specialization. +// +// This context holds a reference to the instance of the basic_format_context +// that is retargeted. It converts a formatting argument when it is requested +// during formatting. It is expected that the usage of the arguments is rare so +// the lookups are not expected to be used often. An alternative would be to +// convert all elements during construction. +// +// The elements of the retargets context are only used when an underlying +// formatter uses a locale specific formatting or an formatting argument is +// part for the format spec. For example +// format("{:256:{}}", input, 8); +// Here the width of an element in input is determined dynamically. +// Note when the top-level element has no width the retargeting is not needed. +template +class _LIBCPP_TEMPLATE_VIS + basic_format_context::__iterator, _CharT> { +public: + using iterator = typename __format::__retarget_buffer<_CharT>::__iterator; + using char_type = _CharT; + template + using formatter_type = formatter<_Tp, _CharT>; + + template + _LIBCPP_HIDE_FROM_ABI explicit basic_format_context(iterator __out_it, _Context& __ctx) + : __out_it_(std::move(__out_it)), +# ifndef _LIBCPP_HAS_NO_LOCALIZATION + __loc_([](void* __c) { return static_cast<_Context*>(__c)->locale(); }), +# endif + __ctx_(std::addressof(__ctx)), + __arg_([](void* __c, size_t __id) { + return std::visit_format_arg( + [&](auto __arg) -> basic_format_arg { + if constexpr (same_as) + return {}; + else if constexpr (same_as::handle>) + // At the moment it's not possible for formatting to use a re-targeted handle. + // TODO FMT add this when support is needed. + std::__throw_format_error("Re-targeting handle not supported"); + else + return basic_format_arg{ + __format::__determine_arg_t(), + __basic_format_arg_value(__arg)}; + }, + static_cast<_Context*>(__c)->arg(__id)); + }) { + } + + _LIBCPP_HIDE_FROM_ABI basic_format_arg arg(size_t __id) const noexcept { + return __arg_(__ctx_, __id); + } +# ifndef _LIBCPP_HAS_NO_LOCALIZATION + _LIBCPP_HIDE_FROM_ABI _VSTD::locale locale() { return __loc_(__ctx_); } +# endif + _LIBCPP_HIDE_FROM_ABI iterator out() { return std::move(__out_it_); } + _LIBCPP_HIDE_FROM_ABI void advance_to(iterator __it) { __out_it_ = std::move(__it); } + +private: + iterator __out_it_; + +# ifndef _LIBCPP_HAS_NO_LOCALIZATION + std::locale (*__loc_)(void* __ctx); +# endif + + void* __ctx_; + basic_format_arg (*__arg_)(void* __ctx, size_t __id); +}; + +_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(basic_format_context); +#endif //_LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FORMAT_FORMAT_CONTEXT_H diff --git a/third_party/libcxx/__format/format_error.h b/third_party/libcxx/__format/format_error.h new file mode 100644 index 000000000..7fb4dd0d7 --- /dev/null +++ b/third_party/libcxx/__format/format_error.h @@ -0,0 +1,52 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FORMAT_FORMAT_ERROR_H +#define _LIBCPP___FORMAT_FORMAT_ERROR_H + +#include <__config> +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_DIAGNOSTIC_PUSH +_LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wweak-vtables") +class _LIBCPP_EXCEPTION_ABI format_error : public runtime_error { +public: + _LIBCPP_HIDE_FROM_ABI explicit format_error(const string& __s) + : runtime_error(__s) {} + _LIBCPP_HIDE_FROM_ABI explicit format_error(const char* __s) + : runtime_error(__s) {} + _LIBCPP_HIDE_FROM_ABI_VIRTUAL + ~format_error() noexcept override = default; +}; +_LIBCPP_DIAGNOSTIC_POP + +_LIBCPP_NORETURN inline _LIBCPP_HIDE_FROM_ABI void +__throw_format_error(const char* __s) { +#ifndef _LIBCPP_HAS_NO_EXCEPTIONS + throw format_error(__s); +#else + (void)__s; + _VSTD::abort(); +#endif +} + +#endif //_LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FORMAT_FORMAT_ERROR_H diff --git a/third_party/libcxx/__format/format_functions.h b/third_party/libcxx/__format/format_functions.h new file mode 100644 index 000000000..72a9f377d --- /dev/null +++ b/third_party/libcxx/__format/format_functions.h @@ -0,0 +1,677 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FORMAT_FORMAT_FUNCTIONS +#define _LIBCPP___FORMAT_FORMAT_FUNCTIONS + +#include <__algorithm/clamp.h> +#include <__availability> +#include <__concepts/convertible_to.h> +#include <__concepts/same_as.h> +#include <__config> +#include <__debug> +#include <__format/buffer.h> +#include <__format/format_arg.h> +#include <__format/format_arg_store.h> +#include <__format/format_args.h> +#include <__format/format_context.h> +#include <__format/format_error.h> +#include <__format/format_parse_context.h> +#include <__format/format_string.h> +#include <__format/format_to_n_result.h> +#include <__format/formatter.h> +#include <__format/formatter_bool.h> +#include <__format/formatter_char.h> +#include <__format/formatter_floating_point.h> +#include <__format/formatter_integer.h> +#include <__format/formatter_pointer.h> +#include <__format/formatter_string.h> +#include <__format/parser_std_format_spec.h> +#include <__iterator/back_insert_iterator.h> +#include <__iterator/concepts.h> +#include <__iterator/incrementable_traits.h> +#include <__iterator/readable_traits.h> // iter_value_t +#include <__variant/monostate.h> +#include +#include +#include + +#ifndef _LIBCPP_HAS_NO_LOCALIZATION +#include +#endif + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +// TODO FMT Evaluate which templates should be external templates. This +// improves the efficiency of the header. However since the header is still +// under heavy development and not all classes are stable it makes no sense +// to do this optimization now. + +using format_args = basic_format_args; +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +using wformat_args = basic_format_args; +#endif + +template +_LIBCPP_HIDE_FROM_ABI __format_arg_store<_Context, _Args...> make_format_args(_Args&&... __args) { + return _VSTD::__format_arg_store<_Context, _Args...>(__args...); +} + +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +template +_LIBCPP_HIDE_FROM_ABI __format_arg_store make_wformat_args(_Args&&... __args) { + return _VSTD::__format_arg_store(__args...); +} +#endif + +namespace __format { + +/// Helper class parse and handle argument. +/// +/// When parsing a handle which is not enabled the code is ill-formed. +/// This helper uses the parser of the appropriate formatter for the stored type. +template +class _LIBCPP_TEMPLATE_VIS __compile_time_handle { +public: + template + _LIBCPP_HIDE_FROM_ABI constexpr void __parse(_ParseContext& __ctx) const { + __parse_(__ctx); + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr void __enable() { + __parse_ = [](basic_format_parse_context<_CharT>& __ctx) { + formatter<_Tp, _CharT> __f; + __ctx.advance_to(__f.parse(__ctx)); + }; + } + + // Before calling __parse the proper handler needs to be set with __enable. + // The default handler isn't a core constant expression. + _LIBCPP_HIDE_FROM_ABI constexpr __compile_time_handle() + : __parse_([](basic_format_parse_context<_CharT>&) { std::__throw_format_error("Not a handle"); }) {} + +private: + void (*__parse_)(basic_format_parse_context<_CharT>&); +}; + +// Dummy format_context only providing the parts used during constant +// validation of the basic_format_string. +template +struct _LIBCPP_TEMPLATE_VIS __compile_time_basic_format_context { +public: + using char_type = _CharT; + + _LIBCPP_HIDE_FROM_ABI constexpr explicit __compile_time_basic_format_context( + const __arg_t* __args, const __compile_time_handle<_CharT>* __handles, size_t __size) + : __args_(__args), __handles_(__handles), __size_(__size) {} + + // During the compile-time validation nothing needs to be written. + // Therefore all operations of this iterator are a NOP. + struct iterator { + _LIBCPP_HIDE_FROM_ABI constexpr iterator& operator=(_CharT) { return *this; } + _LIBCPP_HIDE_FROM_ABI constexpr iterator& operator*() { return *this; } + _LIBCPP_HIDE_FROM_ABI constexpr iterator operator++(int) { return *this; } + }; + + _LIBCPP_HIDE_FROM_ABI constexpr __arg_t arg(size_t __id) const { + if (__id >= __size_) + std::__throw_format_error("Argument index out of bounds"); + return __args_[__id]; + } + + _LIBCPP_HIDE_FROM_ABI constexpr const __compile_time_handle<_CharT>& __handle(size_t __id) const { + if (__id >= __size_) + std::__throw_format_error("Argument index out of bounds"); + return __handles_[__id]; + } + + _LIBCPP_HIDE_FROM_ABI constexpr iterator out() { return {}; } + _LIBCPP_HIDE_FROM_ABI constexpr void advance_to(iterator) {} + +private: + const __arg_t* __args_; + const __compile_time_handle<_CharT>* __handles_; + size_t __size_; +}; + +// [format.string.std]/8 +// If { arg-idopt } is used in a width or precision, the value of the +// corresponding formatting argument is used in its place. If the +// corresponding formatting argument is not of standard signed or unsigned +// integer type, or its value is negative for precision or non-positive for +// width, an exception of type format_error is thrown. +// +// _HasPrecision does the formatter have a precision? +template +_LIBCPP_HIDE_FROM_ABI constexpr void __compile_time_validate_argument( + basic_format_parse_context<_CharT>& __parse_ctx, __compile_time_basic_format_context<_CharT>& __ctx) { + auto __validate_type = [](__arg_t __type) { + // LWG3720 originally allowed "signed or unsigned integer types", however + // the final version explicitly changed it to "*standard* signed or unsigned + // integer types". It's trivial to use 128-bit integrals in libc++'s + // implementation, but other implementations may not implement it. + // (Using a width or precision, that does not fit in 64-bits, sounds very + // unlikely in real world code.) + switch (__type) { + case __arg_t::__int: + case __arg_t::__long_long: + case __arg_t::__unsigned: + case __arg_t::__unsigned_long_long: + return; + + default: + std::__throw_format_error("Replacement argument isn't a standard signed or unsigned integer type"); + } + }; + + formatter<_Tp, _CharT> __formatter; + __parse_ctx.advance_to(__formatter.parse(__parse_ctx)); + if (__formatter.__parser_.__width_as_arg_) + __validate_type(__ctx.arg(__formatter.__parser_.__width_)); + + if constexpr (_HasPrecision) + if (__formatter.__parser_.__precision_as_arg_) + __validate_type(__ctx.arg(__formatter.__parser_.__precision_)); +} + +// This function is not user facing, so it can directly use the non-standard types of the "variant". +template +_LIBCPP_HIDE_FROM_ABI constexpr void __compile_time_visit_format_arg(basic_format_parse_context<_CharT>& __parse_ctx, + __compile_time_basic_format_context<_CharT>& __ctx, + __arg_t __type) { + switch (__type) { + case __arg_t::__none: + std::__throw_format_error("Invalid argument"); + case __arg_t::__boolean: + return __format::__compile_time_validate_argument<_CharT, bool>(__parse_ctx, __ctx); + case __arg_t::__char_type: + return __format::__compile_time_validate_argument<_CharT, _CharT>(__parse_ctx, __ctx); + case __arg_t::__int: + return __format::__compile_time_validate_argument<_CharT, int>(__parse_ctx, __ctx); + case __arg_t::__long_long: + return __format::__compile_time_validate_argument<_CharT, long long>(__parse_ctx, __ctx); + case __arg_t::__i128: +# ifndef _LIBCPP_HAS_NO_INT128 + return __format::__compile_time_validate_argument<_CharT, __int128_t>(__parse_ctx, __ctx); +# else + std::__throw_format_error("Invalid argument"); +# endif + return; + case __arg_t::__unsigned: + return __format::__compile_time_validate_argument<_CharT, unsigned>(__parse_ctx, __ctx); + case __arg_t::__unsigned_long_long: + return __format::__compile_time_validate_argument<_CharT, unsigned long long>(__parse_ctx, __ctx); + case __arg_t::__u128: +# ifndef _LIBCPP_HAS_NO_INT128 + return __format::__compile_time_validate_argument<_CharT, __uint128_t>(__parse_ctx, __ctx); +# else + std::__throw_format_error("Invalid argument"); +# endif + return; + case __arg_t::__float: + return __format::__compile_time_validate_argument<_CharT, float, true>(__parse_ctx, __ctx); + case __arg_t::__double: + return __format::__compile_time_validate_argument<_CharT, double, true>(__parse_ctx, __ctx); + case __arg_t::__long_double: + return __format::__compile_time_validate_argument<_CharT, long double, true>(__parse_ctx, __ctx); + case __arg_t::__const_char_type_ptr: + return __format::__compile_time_validate_argument<_CharT, const _CharT*, true>(__parse_ctx, __ctx); + case __arg_t::__string_view: + return __format::__compile_time_validate_argument<_CharT, basic_string_view<_CharT>, true>(__parse_ctx, __ctx); + case __arg_t::__ptr: + return __format::__compile_time_validate_argument<_CharT, const void*>(__parse_ctx, __ctx); + case __arg_t::__handle: + std::__throw_format_error("Handle should use __compile_time_validate_handle_argument"); + } + std::__throw_format_error("Invalid argument"); +} + +template +_LIBCPP_HIDE_FROM_ABI constexpr _Iterator +__handle_replacement_field(_Iterator __begin, _Iterator __end, + _ParseCtx& __parse_ctx, _Ctx& __ctx) { + using _CharT = iter_value_t<_Iterator>; + __format::__parse_number_result __r = __format::__parse_arg_id(__begin, __end, __parse_ctx); + + bool __parse = *__r.__last == _CharT(':'); + switch (*__r.__last) { + case _CharT(':'): + // The arg-id has a format-specifier, advance the input to the format-spec. + __parse_ctx.advance_to(__r.__last + 1); + break; + case _CharT('}'): + // The arg-id has no format-specifier. + __parse_ctx.advance_to(__r.__last); + break; + default: + std::__throw_format_error("The replacement field arg-id should terminate at a ':' or '}'"); + } + + if constexpr (same_as<_Ctx, __compile_time_basic_format_context<_CharT>>) { + __arg_t __type = __ctx.arg(__r.__value); + if (__type == __arg_t::__none) + std::__throw_format_error("Argument index out of bounds"); + else if (__type == __arg_t::__handle) + __ctx.__handle(__r.__value).__parse(__parse_ctx); + else if (__parse) + __format::__compile_time_visit_format_arg(__parse_ctx, __ctx, __type); + } else + _VSTD::__visit_format_arg( + [&](auto __arg) { + if constexpr (same_as) + std::__throw_format_error("Argument index out of bounds"); + else if constexpr (same_as::handle>) + __arg.format(__parse_ctx, __ctx); + else { + formatter __formatter; + if (__parse) + __parse_ctx.advance_to(__formatter.parse(__parse_ctx)); + __ctx.advance_to(__formatter.format(__arg, __ctx)); + } + }, + __ctx.arg(__r.__value)); + + __begin = __parse_ctx.begin(); + if (__begin == __end || *__begin != _CharT('}')) + std::__throw_format_error("The replacement field misses a terminating '}'"); + + return ++__begin; +} + +template +_LIBCPP_HIDE_FROM_ABI constexpr typename _Ctx::iterator +__vformat_to(_ParseCtx&& __parse_ctx, _Ctx&& __ctx) { + using _CharT = typename _ParseCtx::char_type; + static_assert(same_as); + + auto __begin = __parse_ctx.begin(); + auto __end = __parse_ctx.end(); + typename _Ctx::iterator __out_it = __ctx.out(); + while (__begin != __end) { + switch (*__begin) { + case _CharT('{'): + ++__begin; + if (__begin == __end) + std::__throw_format_error("The format string terminates at a '{'"); + + if (*__begin != _CharT('{')) [[likely]] { + __ctx.advance_to(_VSTD::move(__out_it)); + __begin = + __format::__handle_replacement_field(__begin, __end, __parse_ctx, __ctx); + __out_it = __ctx.out(); + + // The output is written and __begin points to the next character. So + // start the next iteration. + continue; + } + // The string is an escape character. + break; + + case _CharT('}'): + ++__begin; + if (__begin == __end || *__begin != _CharT('}')) + std::__throw_format_error("The format string contains an invalid escape sequence"); + + break; + } + + // Copy the character to the output verbatim. + *__out_it++ = *__begin++; + } + return __out_it; +} + +} // namespace __format + +template +struct _LIBCPP_TEMPLATE_VIS basic_format_string { + template + requires convertible_to> + consteval basic_format_string(const _Tp& __str) : __str_{__str} { + __format::__vformat_to(basic_format_parse_context<_CharT>{__str_, sizeof...(_Args)}, + _Context{__types_.data(), __handles_.data(), sizeof...(_Args)}); + } + + _LIBCPP_HIDE_FROM_ABI constexpr basic_string_view<_CharT> get() const noexcept { + return __str_; + } + +private: + basic_string_view<_CharT> __str_; + + using _Context = __format::__compile_time_basic_format_context<_CharT>; + + static constexpr array<__format::__arg_t, sizeof...(_Args)> __types_{ + __format::__determine_arg_t<_Context, remove_cvref_t<_Args>>()...}; + + // TODO FMT remove this work-around when the AIX ICE has been resolved. +# if defined(_AIX) && defined(_LIBCPP_CLANG_VER) && _LIBCPP_CLANG_VER < 1400 + template + static constexpr __format::__compile_time_handle<_CharT> __get_handle() { + __format::__compile_time_handle<_CharT> __handle; + if (__format::__determine_arg_t<_Context, _Tp>() == __format::__arg_t::__handle) + __handle.template __enable<_Tp>(); + + return __handle; + } + + static constexpr array<__format::__compile_time_handle<_CharT>, sizeof...(_Args)> __handles_{ + __get_handle<_Args>()...}; +# else + static constexpr array<__format::__compile_time_handle<_CharT>, sizeof...(_Args)> __handles_{[] { + using _Tp = remove_cvref_t<_Args>; + __format::__compile_time_handle<_CharT> __handle; + if (__format::__determine_arg_t<_Context, _Tp>() == __format::__arg_t::__handle) + __handle.template __enable<_Tp>(); + + return __handle; + }()...}; +# endif +}; + +template +using format_string = basic_format_string...>; + +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +template +using wformat_string = basic_format_string...>; +#endif + +template +requires(output_iterator<_OutIt, const _CharT&>) _LIBCPP_HIDE_FROM_ABI _OutIt + __vformat_to( + _OutIt __out_it, basic_string_view<_CharT> __fmt, + basic_format_args> __args) { + if constexpr (same_as<_OutIt, _FormatOutIt>) + return _VSTD::__format::__vformat_to(basic_format_parse_context{__fmt, __args.__size()}, + _VSTD::__format_context_create(_VSTD::move(__out_it), __args)); + else { + __format::__format_buffer<_OutIt, _CharT> __buffer{_VSTD::move(__out_it)}; + _VSTD::__format::__vformat_to(basic_format_parse_context{__fmt, __args.__size()}, + _VSTD::__format_context_create(__buffer.__make_output_iterator(), __args)); + return _VSTD::move(__buffer).__out_it(); + } +} + +// The function is _LIBCPP_ALWAYS_INLINE since the compiler is bad at inlining +// https://reviews.llvm.org/D110499#inline-1180704 +// TODO FMT Evaluate whether we want to file a Clang bug report regarding this. +template _OutIt> +_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI _OutIt +vformat_to(_OutIt __out_it, string_view __fmt, format_args __args) { + return _VSTD::__vformat_to(_VSTD::move(__out_it), __fmt, __args); +} + +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +template _OutIt> +_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI _OutIt +vformat_to(_OutIt __out_it, wstring_view __fmt, wformat_args __args) { + return _VSTD::__vformat_to(_VSTD::move(__out_it), __fmt, __args); +} +#endif + +template _OutIt, class... _Args> +_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI _OutIt +format_to(_OutIt __out_it, format_string<_Args...> __fmt, _Args&&... __args) { + return _VSTD::vformat_to(_VSTD::move(__out_it), __fmt.get(), + _VSTD::make_format_args(__args...)); +} + +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +template _OutIt, class... _Args> +_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI _OutIt +format_to(_OutIt __out_it, wformat_string<_Args...> __fmt, _Args&&... __args) { + return _VSTD::vformat_to(_VSTD::move(__out_it), __fmt.get(), + _VSTD::make_wformat_args(__args...)); +} +#endif + +// TODO FMT This needs to be a template or std::to_chars(floating-point) availability markup +// fires too eagerly, see http://llvm.org/PR61563. +template +_LIBCPP_ALWAYS_INLINE inline _LIBCPP_HIDE_FROM_ABI string +vformat(string_view __fmt, format_args __args) { + string __res; + _VSTD::vformat_to(_VSTD::back_inserter(__res), __fmt, __args); + return __res; +} + +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +// TODO FMT This needs to be a template or std::to_chars(floating-point) availability markup +// fires too eagerly, see http://llvm.org/PR61563. +template +_LIBCPP_ALWAYS_INLINE inline _LIBCPP_HIDE_FROM_ABI wstring +vformat(wstring_view __fmt, wformat_args __args) { + wstring __res; + _VSTD::vformat_to(_VSTD::back_inserter(__res), __fmt, __args); + return __res; +} +#endif + +template +_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI string format(format_string<_Args...> __fmt, + _Args&&... __args) { + return _VSTD::vformat(__fmt.get(), _VSTD::make_format_args(__args...)); +} + +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +template +_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI wstring +format(wformat_string<_Args...> __fmt, _Args&&... __args) { + return _VSTD::vformat(__fmt.get(), _VSTD::make_wformat_args(__args...)); +} +#endif + +template +_LIBCPP_HIDE_FROM_ABI format_to_n_result<_OutIt> __vformat_to_n(_OutIt __out_it, iter_difference_t<_OutIt> __n, + basic_string_view<_CharT> __fmt, + basic_format_args<_Context> __args) { + __format::__format_to_n_buffer<_OutIt, _CharT> __buffer{_VSTD::move(__out_it), __n}; + _VSTD::__format::__vformat_to(basic_format_parse_context{__fmt, __args.__size()}, + _VSTD::__format_context_create(__buffer.__make_output_iterator(), __args)); + return _VSTD::move(__buffer).__result(); +} + +template _OutIt, class... _Args> +_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI format_to_n_result<_OutIt> +format_to_n(_OutIt __out_it, iter_difference_t<_OutIt> __n, format_string<_Args...> __fmt, _Args&&... __args) { + return _VSTD::__vformat_to_n(_VSTD::move(__out_it), __n, __fmt.get(), _VSTD::make_format_args(__args...)); +} + +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +template _OutIt, class... _Args> +_LIBCPP_HIDE_FROM_ABI format_to_n_result<_OutIt> +format_to_n(_OutIt __out_it, iter_difference_t<_OutIt> __n, wformat_string<_Args...> __fmt, + _Args&&... __args) { + return _VSTD::__vformat_to_n(_VSTD::move(__out_it), __n, __fmt.get(), _VSTD::make_wformat_args(__args...)); +} +#endif + +template +_LIBCPP_HIDE_FROM_ABI size_t __vformatted_size(basic_string_view<_CharT> __fmt, auto __args) { + __format::__formatted_size_buffer<_CharT> __buffer; + _VSTD::__format::__vformat_to(basic_format_parse_context{__fmt, __args.__size()}, + _VSTD::__format_context_create(__buffer.__make_output_iterator(), __args)); + return _VSTD::move(__buffer).__result(); +} + +template +_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI size_t +formatted_size(format_string<_Args...> __fmt, _Args&&... __args) { + return _VSTD::__vformatted_size(__fmt.get(), basic_format_args{_VSTD::make_format_args(__args...)}); +} + +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +template +_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI size_t +formatted_size(wformat_string<_Args...> __fmt, _Args&&... __args) { + return _VSTD::__vformatted_size(__fmt.get(), basic_format_args{_VSTD::make_wformat_args(__args...)}); +} +#endif + +#ifndef _LIBCPP_HAS_NO_LOCALIZATION + +template +requires(output_iterator<_OutIt, const _CharT&>) _LIBCPP_HIDE_FROM_ABI _OutIt + __vformat_to( + _OutIt __out_it, locale __loc, basic_string_view<_CharT> __fmt, + basic_format_args> __args) { + if constexpr (same_as<_OutIt, _FormatOutIt>) + return _VSTD::__format::__vformat_to( + basic_format_parse_context{__fmt, __args.__size()}, + _VSTD::__format_context_create(_VSTD::move(__out_it), __args, _VSTD::move(__loc))); + else { + __format::__format_buffer<_OutIt, _CharT> __buffer{_VSTD::move(__out_it)}; + _VSTD::__format::__vformat_to( + basic_format_parse_context{__fmt, __args.__size()}, + _VSTD::__format_context_create(__buffer.__make_output_iterator(), __args, _VSTD::move(__loc))); + return _VSTD::move(__buffer).__out_it(); + } +} + +template _OutIt> +_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI _OutIt vformat_to( + _OutIt __out_it, locale __loc, string_view __fmt, format_args __args) { + return _VSTD::__vformat_to(_VSTD::move(__out_it), _VSTD::move(__loc), __fmt, + __args); +} + +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +template _OutIt> +_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI _OutIt vformat_to( + _OutIt __out_it, locale __loc, wstring_view __fmt, wformat_args __args) { + return _VSTD::__vformat_to(_VSTD::move(__out_it), _VSTD::move(__loc), __fmt, + __args); +} +#endif + +template _OutIt, class... _Args> +_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI _OutIt +format_to(_OutIt __out_it, locale __loc, format_string<_Args...> __fmt, _Args&&... __args) { + return _VSTD::vformat_to(_VSTD::move(__out_it), _VSTD::move(__loc), __fmt.get(), + _VSTD::make_format_args(__args...)); +} + +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +template _OutIt, class... _Args> +_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI _OutIt +format_to(_OutIt __out_it, locale __loc, wformat_string<_Args...> __fmt, _Args&&... __args) { + return _VSTD::vformat_to(_VSTD::move(__out_it), _VSTD::move(__loc), __fmt.get(), + _VSTD::make_wformat_args(__args...)); +} +#endif + +// TODO FMT This needs to be a template or std::to_chars(floating-point) availability markup +// fires too eagerly, see http://llvm.org/PR61563. +template +_LIBCPP_ALWAYS_INLINE inline _LIBCPP_HIDE_FROM_ABI string +vformat(locale __loc, string_view __fmt, format_args __args) { + string __res; + _VSTD::vformat_to(_VSTD::back_inserter(__res), _VSTD::move(__loc), __fmt, + __args); + return __res; +} + +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +// TODO FMT This needs to be a template or std::to_chars(floating-point) availability markup +// fires too eagerly, see http://llvm.org/PR61563. +template +_LIBCPP_ALWAYS_INLINE inline _LIBCPP_HIDE_FROM_ABI wstring +vformat(locale __loc, wstring_view __fmt, wformat_args __args) { + wstring __res; + _VSTD::vformat_to(_VSTD::back_inserter(__res), _VSTD::move(__loc), __fmt, + __args); + return __res; +} +#endif + +template +_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI string format(locale __loc, + format_string<_Args...> __fmt, + _Args&&... __args) { + return _VSTD::vformat(_VSTD::move(__loc), __fmt.get(), + _VSTD::make_format_args(__args...)); +} + +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +template +_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI wstring +format(locale __loc, wformat_string<_Args...> __fmt, _Args&&... __args) { + return _VSTD::vformat(_VSTD::move(__loc), __fmt.get(), + _VSTD::make_wformat_args(__args...)); +} +#endif + +template +_LIBCPP_HIDE_FROM_ABI format_to_n_result<_OutIt> __vformat_to_n(_OutIt __out_it, iter_difference_t<_OutIt> __n, + locale __loc, basic_string_view<_CharT> __fmt, + basic_format_args<_Context> __args) { + __format::__format_to_n_buffer<_OutIt, _CharT> __buffer{_VSTD::move(__out_it), __n}; + _VSTD::__format::__vformat_to( + basic_format_parse_context{__fmt, __args.__size()}, + _VSTD::__format_context_create(__buffer.__make_output_iterator(), __args, _VSTD::move(__loc))); + return _VSTD::move(__buffer).__result(); +} + +template _OutIt, class... _Args> +_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI format_to_n_result<_OutIt> +format_to_n(_OutIt __out_it, iter_difference_t<_OutIt> __n, locale __loc, format_string<_Args...> __fmt, + _Args&&... __args) { + return _VSTD::__vformat_to_n(_VSTD::move(__out_it), __n, _VSTD::move(__loc), __fmt.get(), + _VSTD::make_format_args(__args...)); +} + +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +template _OutIt, class... _Args> +_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI format_to_n_result<_OutIt> +format_to_n(_OutIt __out_it, iter_difference_t<_OutIt> __n, locale __loc, wformat_string<_Args...> __fmt, + _Args&&... __args) { + return _VSTD::__vformat_to_n(_VSTD::move(__out_it), __n, _VSTD::move(__loc), __fmt.get(), + _VSTD::make_wformat_args(__args...)); +} +#endif + +template +_LIBCPP_HIDE_FROM_ABI size_t __vformatted_size(locale __loc, basic_string_view<_CharT> __fmt, auto __args) { + __format::__formatted_size_buffer<_CharT> __buffer; + _VSTD::__format::__vformat_to( + basic_format_parse_context{__fmt, __args.__size()}, + _VSTD::__format_context_create(__buffer.__make_output_iterator(), __args, _VSTD::move(__loc))); + return _VSTD::move(__buffer).__result(); +} + +template +_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI size_t +formatted_size(locale __loc, format_string<_Args...> __fmt, _Args&&... __args) { + return _VSTD::__vformatted_size(_VSTD::move(__loc), __fmt.get(), basic_format_args{_VSTD::make_format_args(__args...)}); +} + +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +template +_LIBCPP_ALWAYS_INLINE _LIBCPP_HIDE_FROM_ABI size_t +formatted_size(locale __loc, wformat_string<_Args...> __fmt, _Args&&... __args) { + return _VSTD::__vformatted_size(_VSTD::move(__loc), __fmt.get(), basic_format_args{_VSTD::make_wformat_args(__args...)}); +} +#endif + +#endif // _LIBCPP_HAS_NO_LOCALIZATION + + +#endif //_LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FORMAT_FORMAT_FUNCTIONS diff --git a/third_party/libcxx/__format/format_fwd.h b/third_party/libcxx/__format/format_fwd.h new file mode 100644 index 000000000..120b2fc8d --- /dev/null +++ b/third_party/libcxx/__format/format_fwd.h @@ -0,0 +1,39 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FORMAT_FORMAT_FWD_H +#define _LIBCPP___FORMAT_FORMAT_FWD_H + +#include <__availability> +#include <__config> +#include <__iterator/concepts.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +template +class _LIBCPP_TEMPLATE_VIS basic_format_arg; + +template + requires output_iterator<_OutIt, const _CharT&> +class _LIBCPP_TEMPLATE_VIS basic_format_context; + +template +struct _LIBCPP_TEMPLATE_VIS formatter; + +#endif //_LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FORMAT_FORMAT_FWD_H diff --git a/third_party/libcxx/__format/format_parse_context.h b/third_party/libcxx/__format/format_parse_context.h new file mode 100644 index 000000000..79f53f77d --- /dev/null +++ b/third_party/libcxx/__format/format_parse_context.h @@ -0,0 +1,113 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FORMAT_FORMAT_PARSE_CONTEXT_H +#define _LIBCPP___FORMAT_FORMAT_PARSE_CONTEXT_H + +#include <__config> +#include <__format/format_error.h> +#include <__type_traits/is_constant_evaluated.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +template +class _LIBCPP_TEMPLATE_VIS basic_format_parse_context { +public: + using char_type = _CharT; + using const_iterator = typename basic_string_view<_CharT>::const_iterator; + using iterator = const_iterator; + + _LIBCPP_HIDE_FROM_ABI + constexpr explicit basic_format_parse_context(basic_string_view<_CharT> __fmt, + size_t __num_args = 0) noexcept + : __begin_(__fmt.begin()), + __end_(__fmt.end()), + __indexing_(__unknown), + __next_arg_id_(0), + __num_args_(__num_args) {} + + basic_format_parse_context(const basic_format_parse_context&) = delete; + basic_format_parse_context& + operator=(const basic_format_parse_context&) = delete; + + _LIBCPP_HIDE_FROM_ABI constexpr const_iterator begin() const noexcept { + return __begin_; + } + _LIBCPP_HIDE_FROM_ABI constexpr const_iterator end() const noexcept { + return __end_; + } + _LIBCPP_HIDE_FROM_ABI constexpr void advance_to(const_iterator __it) { + __begin_ = __it; + } + + _LIBCPP_HIDE_FROM_ABI constexpr size_t next_arg_id() { + if (__indexing_ == __manual) + std::__throw_format_error("Using automatic argument numbering in manual argument numbering mode"); + + if (__indexing_ == __unknown) + __indexing_ = __automatic; + + // Throws an exception to make the expression a non core constant + // expression as required by: + // [format.parse.ctx]/8 + // Remarks: Let cur-arg-id be the value of next_arg_id_ prior to this + // call. Call expressions where cur-arg-id >= num_args_ is true are not + // core constant expressions (7.7 [expr.const]). + // Note: the Throws clause [format.parse.ctx]/9 doesn't specify the + // behavior when id >= num_args_. + if (is_constant_evaluated() && __next_arg_id_ >= __num_args_) + std::__throw_format_error("Argument index outside the valid range"); + + return __next_arg_id_++; + } + _LIBCPP_HIDE_FROM_ABI constexpr void check_arg_id(size_t __id) { + if (__indexing_ == __automatic) + std::__throw_format_error("Using manual argument numbering in automatic argument numbering mode"); + + if (__indexing_ == __unknown) + __indexing_ = __manual; + + // Throws an exception to make the expression a non core constant + // expression as required by: + // [format.parse.ctx]/11 + // Remarks: Call expressions where id >= num_args_ are not core constant + // expressions ([expr.const]). + // Note: the Throws clause [format.parse.ctx]/10 doesn't specify the + // behavior when id >= num_args_. + if (is_constant_evaluated() && __id >= __num_args_) + std::__throw_format_error("Argument index outside the valid range"); + } + +private: + iterator __begin_; + iterator __end_; + enum _Indexing { __unknown, __manual, __automatic }; + _Indexing __indexing_; + size_t __next_arg_id_; + size_t __num_args_; +}; +_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(basic_format_parse_context); + +using format_parse_context = basic_format_parse_context; +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +using wformat_parse_context = basic_format_parse_context; +#endif + +#endif //_LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FORMAT_FORMAT_PARSE_CONTEXT_H diff --git a/third_party/libcxx/__format/format_string.h b/third_party/libcxx/__format/format_string.h new file mode 100644 index 000000000..bec3fe167 --- /dev/null +++ b/third_party/libcxx/__format/format_string.h @@ -0,0 +1,167 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FORMAT_FORMAT_STRING_H +#define _LIBCPP___FORMAT_FORMAT_STRING_H + +#include <__assert> +#include <__config> +#include <__format/format_error.h> +#include <__iterator/concepts.h> +#include <__iterator/readable_traits.h> // iter_value_t +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +namespace __format { + +template +struct _LIBCPP_TEMPLATE_VIS __parse_number_result { + _Iterator __last; + uint32_t __value; +}; + +template +__parse_number_result(_Iterator, uint32_t) -> __parse_number_result<_Iterator>; + +template +_LIBCPP_HIDE_FROM_ABI constexpr __parse_number_result<_Iterator> +__parse_number(_Iterator __begin, _Iterator __end); + +/** + * The maximum value of a numeric argument. + * + * This is used for: + * * arg-id + * * width as value or arg-id. + * * precision as value or arg-id. + * + * The value is compatible with the maximum formatting width and precision + * using the `%*` syntax on a 32-bit system. + */ +inline constexpr uint32_t __number_max = INT32_MAX; + +namespace __detail { +template +_LIBCPP_HIDE_FROM_ABI constexpr __parse_number_result<_Iterator> +__parse_zero(_Iterator __begin, _Iterator, auto& __parse_ctx) { + __parse_ctx.check_arg_id(0); + return {++__begin, 0}; // can never be larger than the maximum. +} + +template +_LIBCPP_HIDE_FROM_ABI constexpr __parse_number_result<_Iterator> +__parse_automatic(_Iterator __begin, _Iterator, auto& __parse_ctx) { + size_t __value = __parse_ctx.next_arg_id(); + _LIBCPP_ASSERT(__value <= __number_max, + "Compilers don't support this number of arguments"); + + return {__begin, uint32_t(__value)}; +} + +template +_LIBCPP_HIDE_FROM_ABI constexpr __parse_number_result<_Iterator> +__parse_manual(_Iterator __begin, _Iterator __end, auto& __parse_ctx) { + __parse_number_result<_Iterator> __r = __format::__parse_number(__begin, __end); + __parse_ctx.check_arg_id(__r.__value); + return __r; +} + +} // namespace __detail + +/** + * Parses a number. + * + * The number is used for the 31-bit values @em width and @em precision. This + * allows a maximum value of 2147483647. + */ +template +_LIBCPP_HIDE_FROM_ABI constexpr __parse_number_result<_Iterator> +__parse_number(_Iterator __begin, _Iterator __end_input) { + using _CharT = iter_value_t<_Iterator>; + static_assert(__format::__number_max == INT32_MAX, + "The algorithm is implemented based on this value."); + /* + * Limit the input to 9 digits, otherwise we need two checks during every + * iteration: + * - Are we at the end of the input? + * - Does the value exceed width of an uint32_t? (Switching to uint64_t would + * have the same issue, but with a higher maximum.) + */ + _Iterator __end = __end_input - __begin > 9 ? __begin + 9 : __end_input; + uint32_t __value = *__begin - _CharT('0'); + while (++__begin != __end) { + if (*__begin < _CharT('0') || *__begin > _CharT('9')) + return {__begin, __value}; + + __value = __value * 10 + *__begin - _CharT('0'); + } + + if (__begin != __end_input && *__begin >= _CharT('0') && + *__begin <= _CharT('9')) { + + /* + * There are more than 9 digits, do additional validations: + * - Does the 10th digit exceed the maximum allowed value? + * - Are there more than 10 digits? + * (More than 10 digits always overflows the maximum.) + */ + uint64_t __v = uint64_t(__value) * 10 + *__begin++ - _CharT('0'); + if (__v > __number_max || + (__begin != __end_input && *__begin >= _CharT('0') && + *__begin <= _CharT('9'))) + std::__throw_format_error("The numeric value of the format-spec is too large"); + + __value = __v; + } + + return {__begin, __value}; +} + +/** + * Multiplexer for all parse functions. + * + * The parser will return a pointer beyond the last consumed character. This + * should be the closing '}' of the arg-id. + */ +template +_LIBCPP_HIDE_FROM_ABI constexpr __parse_number_result<_Iterator> +__parse_arg_id(_Iterator __begin, _Iterator __end, auto& __parse_ctx) { + using _CharT = iter_value_t<_Iterator>; + switch (*__begin) { + case _CharT('0'): + return __detail::__parse_zero(__begin, __end, __parse_ctx); + + case _CharT(':'): + // This case is conditionally valid. It's allowed in an arg-id in the + // replacement-field, but not in the std-format-spec. The caller can + // provide a better diagnostic, so accept it here unconditionally. + case _CharT('}'): + return __detail::__parse_automatic(__begin, __end, __parse_ctx); + } + if (*__begin < _CharT('0') || *__begin > _CharT('9')) + std::__throw_format_error("The arg-id of the format-spec starts with an invalid character"); + + return __detail::__parse_manual(__begin, __end, __parse_ctx); +} + +} // namespace __format + +#endif //_LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FORMAT_FORMAT_STRING_H diff --git a/third_party/libcxx/__format/format_to_n_result.h b/third_party/libcxx/__format/format_to_n_result.h new file mode 100644 index 000000000..6f30546de --- /dev/null +++ b/third_party/libcxx/__format/format_to_n_result.h @@ -0,0 +1,35 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FORMAT_FORMAT_TO_N_RESULT_H +#define _LIBCPP___FORMAT_FORMAT_TO_N_RESULT_H + +#include <__config> +#include <__iterator/incrementable_traits.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +template +struct _LIBCPP_TEMPLATE_VIS format_to_n_result { + _OutIt out; + iter_difference_t<_OutIt> size; +}; +_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(format_to_n_result); + +#endif //_LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FORMAT_FORMAT_TO_N_RESULT_H diff --git a/third_party/libcxx/__format/formatter.h b/third_party/libcxx/__format/formatter.h new file mode 100644 index 000000000..172b2d5f7 --- /dev/null +++ b/third_party/libcxx/__format/formatter.h @@ -0,0 +1,54 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FORMAT_FORMATTER_H +#define _LIBCPP___FORMAT_FORMATTER_H + +#include <__availability> +#include <__config> +#include <__format/format_fwd.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +/// The default formatter template. +/// +/// [format.formatter.spec]/5 +/// If F is a disabled specialization of formatter, these values are false: +/// - is_default_constructible_v, +/// - is_copy_constructible_v, +/// - is_move_constructible_v, +/// - is_copy_assignable, and +/// - is_move_assignable. +template +struct _LIBCPP_TEMPLATE_VIS formatter { + formatter() = delete; + formatter(const formatter&) = delete; + formatter& operator=(const formatter&) = delete; +}; + +# if _LIBCPP_STD_VER >= 23 + +template +_LIBCPP_HIDE_FROM_ABI constexpr void __set_debug_format(_Tp& __formatter) { + if constexpr (requires { __formatter.set_debug_format(); }) + __formatter.set_debug_format(); +} + +# endif // _LIBCPP_STD_VER >= 23 +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FORMAT_FORMATTER_H diff --git a/third_party/libcxx/__format/formatter_bool.h b/third_party/libcxx/__format/formatter_bool.h new file mode 100644 index 000000000..e95a216bb --- /dev/null +++ b/third_party/libcxx/__format/formatter_bool.h @@ -0,0 +1,79 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FORMAT_FORMATTER_BOOL_H +#define _LIBCPP___FORMAT_FORMATTER_BOOL_H + +#include <__algorithm/copy.h> +#include <__availability> +#include <__config> +#include <__debug> +#include <__format/concepts.h> +#include <__format/format_error.h> +#include <__format/format_parse_context.h> +#include <__format/formatter.h> +#include <__format/formatter_integral.h> +#include <__format/parser_std_format_spec.h> +#include <__utility/unreachable.h> +#include + +#ifndef _LIBCPP_HAS_NO_LOCALIZATION +# include +#endif + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter { +public: + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + typename _ParseContext::iterator __result = __parser_.__parse(__ctx, __format_spec::__fields_integral); + __format_spec::__process_parsed_bool(__parser_); + return __result; + } + + template + _LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator format(bool __value, _FormatContext& __ctx) const { + switch (__parser_.__type_) { + case __format_spec::__type::__default: + case __format_spec::__type::__string: + return __formatter::__format_bool(__value, __ctx, __parser_.__get_parsed_std_specifications(__ctx)); + + case __format_spec::__type::__binary_lower_case: + case __format_spec::__type::__binary_upper_case: + case __format_spec::__type::__octal: + case __format_spec::__type::__decimal: + case __format_spec::__type::__hexadecimal_lower_case: + case __format_spec::__type::__hexadecimal_upper_case: + // Promotes bool to an integral type. This reduces the number of + // instantiations of __format_integer reducing code size. + return __formatter::__format_integer( + static_cast(__value), __ctx, __parser_.__get_parsed_std_specifications(__ctx)); + + default: + _LIBCPP_ASSERT(false, "The parse function should have validated the type"); + __libcpp_unreachable(); + } + } + + __format_spec::__parser<_CharT> __parser_; +}; + +#endif //_LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FORMAT_FORMATTER_BOOL_H diff --git a/third_party/libcxx/__format/formatter_char.h b/third_party/libcxx/__format/formatter_char.h new file mode 100644 index 000000000..15a649807 --- /dev/null +++ b/third_party/libcxx/__format/formatter_char.h @@ -0,0 +1,95 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FORMAT_FORMATTER_CHAR_H +#define _LIBCPP___FORMAT_FORMATTER_CHAR_H + +#include <__availability> +#include <__concepts/same_as.h> +#include <__config> +#include <__format/concepts.h> +#include <__format/format_parse_context.h> +#include <__format/formatter.h> +#include <__format/formatter_integral.h> +#include <__format/formatter_output.h> +#include <__format/parser_std_format_spec.h> +#include <__type_traits/conditional.h> +#include <__type_traits/is_signed.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS __formatter_char { +public: + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + typename _ParseContext::iterator __result = __parser_.__parse(__ctx, __format_spec::__fields_integral); + __format_spec::__process_parsed_char(__parser_); + return __result; + } + + template + _LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator format(_CharT __value, _FormatContext& __ctx) const { + if (__parser_.__type_ == __format_spec::__type::__default || __parser_.__type_ == __format_spec::__type::__char) + return __formatter::__format_char(__value, __ctx.out(), __parser_.__get_parsed_std_specifications(__ctx)); + +# if _LIBCPP_STD_VER >= 23 + if (__parser_.__type_ == __format_spec::__type::__debug) + return __formatter::__format_escaped_char(__value, __ctx.out(), __parser_.__get_parsed_std_specifications(__ctx)); +# endif + + if constexpr (sizeof(_CharT) <= sizeof(int)) + // Promotes _CharT to an integral type. This reduces the number of + // instantiations of __format_integer reducing code size. + return __formatter::__format_integer( + static_cast, int, unsigned>>(__value), + __ctx, + __parser_.__get_parsed_std_specifications(__ctx)); + else + return __formatter::__format_integer(__value, __ctx, __parser_.__get_parsed_std_specifications(__ctx)); + } + + template + _LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator format(char __value, _FormatContext& __ctx) const + requires(same_as<_CharT, wchar_t>) + { + return format(static_cast(__value), __ctx); + } + +# if _LIBCPP_STD_VER >= 23 + _LIBCPP_HIDE_FROM_ABI constexpr void set_debug_format() { __parser_.__type_ = __format_spec::__type::__debug; } +# endif + + __format_spec::__parser<_CharT> __parser_; +}; + +template <> +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_char {}; + +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +template <> +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_char {}; + +template <> +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_char { +}; + +# endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS + +#endif //_LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FORMAT_FORMATTER_CHAR_H diff --git a/third_party/libcxx/__format/formatter_floating_point.h b/third_party/libcxx/__format/formatter_floating_point.h new file mode 100644 index 000000000..a699f403e --- /dev/null +++ b/third_party/libcxx/__format/formatter_floating_point.h @@ -0,0 +1,761 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FORMAT_FORMATTER_FLOATING_POINT_H +#define _LIBCPP___FORMAT_FORMATTER_FLOATING_POINT_H + +#include <__algorithm/copy_n.h> +#include <__algorithm/find.h> +#include <__algorithm/max.h> +#include <__algorithm/min.h> +#include <__algorithm/rotate.h> +#include <__algorithm/transform.h> +#include <__charconv/chars_format.h> +#include <__charconv/to_chars_floating_point.h> +#include <__charconv/to_chars_result.h> +#include <__concepts/arithmetic.h> +#include <__concepts/same_as.h> +#include <__config> +#include <__format/concepts.h> +#include <__format/format_parse_context.h> +#include <__format/formatter.h> +#include <__format/formatter_integral.h> +#include <__format/formatter_output.h> +#include <__format/parser_std_format_spec.h> +#include <__memory/allocator.h> +#include <__system_error/errc.h> +#include <__type_traits/conditional.h> +#include <__utility/move.h> +#include <__utility/unreachable.h> +#include +#include + +#ifndef _LIBCPP_HAS_NO_LOCALIZATION +# include +#endif + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +namespace __formatter { + +template +_LIBCPP_HIDE_FROM_ABI char* __to_buffer(char* __first, char* __last, _Tp __value) { + to_chars_result __r = _VSTD::to_chars(__first, __last, __value); + _LIBCPP_ASSERT(__r.ec == errc(0), "Internal buffer too small"); + return __r.ptr; +} + +template +_LIBCPP_HIDE_FROM_ABI char* __to_buffer(char* __first, char* __last, _Tp __value, chars_format __fmt) { + to_chars_result __r = _VSTD::to_chars(__first, __last, __value, __fmt); + _LIBCPP_ASSERT(__r.ec == errc(0), "Internal buffer too small"); + return __r.ptr; +} + +template +_LIBCPP_HIDE_FROM_ABI char* __to_buffer(char* __first, char* __last, _Tp __value, chars_format __fmt, int __precision) { + to_chars_result __r = _VSTD::to_chars(__first, __last, __value, __fmt, __precision); + _LIBCPP_ASSERT(__r.ec == errc(0), "Internal buffer too small"); + return __r.ptr; +} + +// https://en.cppreference.com/w/cpp/language/types#cite_note-1 +// float min subnormal: +/-0x1p-149 max: +/- 3.402,823,4 10^38 +// double min subnormal: +/-0x1p-1074 max +/- 1.797,693,134,862,315,7 10^308 +// long double (x86) min subnormal: +/-0x1p-16446 max: +/- 1.189,731,495,357,231,765,021 10^4932 +// +// The maximum number of digits required for the integral part is based on the +// maximum's value power of 10. Every power of 10 requires one additional +// decimal digit. +// The maximum number of digits required for the fractional part is based on +// the minimal subnormal hexadecimal output's power of 10. Every division of a +// fraction's binary 1 by 2, requires one additional decimal digit. +// +// The maximum size of a formatted value depends on the selected output format. +// Ignoring the fact the format string can request a precision larger than the +// values maximum required, these values are: +// +// sign 1 code unit +// __max_integral +// radix point 1 code unit +// __max_fractional +// exponent character 1 code unit +// sign 1 code unit +// __max_fractional_value +// ----------------------------------- +// total 4 code units extra required. +// +// TODO FMT Optimize the storage to avoid storing digits that are known to be zero. +// https://www.exploringbinary.com/maximum-number-of-decimal-digits-in-binary-floating-point-numbers/ + +// TODO FMT Add long double specialization when to_chars has proper long double support. +template +struct __traits; + +template +_LIBCPP_HIDE_FROM_ABI constexpr size_t __float_buffer_size(int __precision) { + using _Traits = __traits<_Fp>; + return 4 + _Traits::__max_integral + __precision + _Traits::__max_fractional_value; +} + +template <> +struct __traits { + static constexpr int __max_integral = 38; + static constexpr int __max_fractional = 149; + static constexpr int __max_fractional_value = 3; + static constexpr size_t __stack_buffer_size = 256; + + static constexpr int __hex_precision_digits = 3; +}; + +template <> +struct __traits { + static constexpr int __max_integral = 308; + static constexpr int __max_fractional = 1074; + static constexpr int __max_fractional_value = 4; + static constexpr size_t __stack_buffer_size = 1024; + + static constexpr int __hex_precision_digits = 4; +}; + +/// Helper class to store the conversion buffer. +/// +/// Depending on the maxium size required for a value, the buffer is allocated +/// on the stack or the heap. +template +class _LIBCPP_TEMPLATE_VIS __float_buffer { + using _Traits = __traits<_Fp>; + +public: + // TODO FMT Improve this constructor to do a better estimate. + // When using a scientific formatting with a precision of 6 a stack buffer + // will always suffice. At the moment that isn't important since floats and + // doubles use a stack buffer, unless the precision used in the format string + // is large. + // When supporting long doubles the __max_integral part becomes 4932 which + // may be too much for some platforms. For these cases a better estimate is + // required. + explicit _LIBCPP_HIDE_FROM_ABI __float_buffer(int __precision) + : __precision_(__precision != -1 ? __precision : _Traits::__max_fractional) { + + // When the precision is larger than _Traits::__max_fractional the digits in + // the range (_Traits::__max_fractional, precision] will contain the value + // zero. There's no need to request to_chars to write these zeros: + // - When the value is large a temporary heap buffer needs to be allocated. + // - When to_chars writes the values they need to be "copied" to the output: + // - char: std::fill on the output iterator is faster than std::copy. + // - wchar_t: same argument as char, but additional std::copy won't work. + // The input is always a char buffer, so every char in the buffer needs + // to be converted from a char to a wchar_t. + if (__precision_ > _Traits::__max_fractional) { + __num_trailing_zeros_ = __precision_ - _Traits::__max_fractional; + __precision_ = _Traits::__max_fractional; + } + + __size_ = __formatter::__float_buffer_size<_Fp>(__precision_); + if (__size_ > _Traits::__stack_buffer_size) + // The allocated buffer's contents don't need initialization. + __begin_ = allocator{}.allocate(__size_); + else + __begin_ = __buffer_; + } + + _LIBCPP_HIDE_FROM_ABI ~__float_buffer() { + if (__size_ > _Traits::__stack_buffer_size) + allocator{}.deallocate(__begin_, __size_); + } + _LIBCPP_HIDE_FROM_ABI __float_buffer(const __float_buffer&) = delete; + _LIBCPP_HIDE_FROM_ABI __float_buffer& operator=(const __float_buffer&) = delete; + + _LIBCPP_HIDE_FROM_ABI char* begin() const { return __begin_; } + _LIBCPP_HIDE_FROM_ABI char* end() const { return __begin_ + __size_; } + + _LIBCPP_HIDE_FROM_ABI int __precision() const { return __precision_; } + _LIBCPP_HIDE_FROM_ABI int __num_trailing_zeros() const { return __num_trailing_zeros_; } + _LIBCPP_HIDE_FROM_ABI void __remove_trailing_zeros() { __num_trailing_zeros_ = 0; } + _LIBCPP_HIDE_FROM_ABI void __add_trailing_zeros(int __zeros) { __num_trailing_zeros_ += __zeros; } + +private: + int __precision_; + int __num_trailing_zeros_{0}; + size_t __size_; + char* __begin_; + char __buffer_[_Traits::__stack_buffer_size]; +}; + +struct __float_result { + /// Points at the beginning of the integral part in the buffer. + /// + /// When there's no sign character this points at the start of the buffer. + char* __integral; + + /// Points at the radix point, when not present it's the same as \ref __last. + char* __radix_point; + + /// Points at the exponent character, when not present it's the same as \ref __last. + char* __exponent; + + /// Points beyond the last written element in the buffer. + char* __last; +}; + +/// Finds the position of the exponent character 'e' at the end of the buffer. +/// +/// Assuming there is an exponent the input will terminate with +/// eSdd and eSdddd (S = sign, d = digit) +/// +/// \returns a pointer to the exponent or __last when not found. +constexpr inline _LIBCPP_HIDE_FROM_ABI char* __find_exponent(char* __first, char* __last) { + ptrdiff_t __size = __last - __first; + if (__size >= 4) { + __first = __last - _VSTD::min(__size, ptrdiff_t(6)); + for (; __first != __last - 3; ++__first) { + if (*__first == 'e') + return __first; + } + } + return __last; +} + +template +_LIBCPP_HIDE_FROM_ABI __float_result __format_buffer_default(const __float_buffer<_Fp>& __buffer, _Tp __value, + char* __integral) { + __float_result __result; + __result.__integral = __integral; + __result.__last = __formatter::__to_buffer(__integral, __buffer.end(), __value); + + __result.__exponent = __formatter::__find_exponent(__result.__integral, __result.__last); + + // Constrains: + // - There's at least one decimal digit before the radix point. + // - The radix point, when present, is placed before the exponent. + __result.__radix_point = _VSTD::find(__result.__integral + 1, __result.__exponent, '.'); + + // When the radix point isn't found its position is the exponent instead of + // __result.__last. + if (__result.__radix_point == __result.__exponent) + __result.__radix_point = __result.__last; + + // clang-format off + _LIBCPP_ASSERT((__result.__integral != __result.__last) && + (__result.__radix_point == __result.__last || *__result.__radix_point == '.') && + (__result.__exponent == __result.__last || *__result.__exponent == 'e'), + "Post-condition failure."); + // clang-format on + + return __result; +} + +template +_LIBCPP_HIDE_FROM_ABI __float_result __format_buffer_hexadecimal_lower_case(const __float_buffer<_Fp>& __buffer, + _Tp __value, int __precision, + char* __integral) { + __float_result __result; + __result.__integral = __integral; + if (__precision == -1) + __result.__last = __formatter::__to_buffer(__integral, __buffer.end(), __value, chars_format::hex); + else + __result.__last = __formatter::__to_buffer(__integral, __buffer.end(), __value, chars_format::hex, __precision); + + // H = one or more hex-digits + // S = sign + // D = one or more decimal-digits + // When the fractional part is zero and no precision the output is 0p+0 + // else the output is 0.HpSD + // So testing the second position can differentiate between these two cases. + char* __first = __integral + 1; + if (*__first == '.') { + __result.__radix_point = __first; + // One digit is the minimum + // 0.hpSd + // ^-- last + // ^---- integral = end of search + // ^-------- start of search + // 0123456 + // + // Four digits is the maximum + // 0.hpSdddd + // ^-- last + // ^---- integral = end of search + // ^-------- start of search + // 0123456789 + static_assert(__traits<_Fp>::__hex_precision_digits <= 4, "Guard against possible underflow."); + + char* __last = __result.__last - 2; + __first = __last - __traits<_Fp>::__hex_precision_digits; + __result.__exponent = _VSTD::find(__first, __last, 'p'); + } else { + __result.__radix_point = __result.__last; + __result.__exponent = __first; + } + + // clang-format off + _LIBCPP_ASSERT((__result.__integral != __result.__last) && + (__result.__radix_point == __result.__last || *__result.__radix_point == '.') && + (__result.__exponent != __result.__last && *__result.__exponent == 'p'), + "Post-condition failure."); + // clang-format on + + return __result; +} + +template +_LIBCPP_HIDE_FROM_ABI __float_result __format_buffer_hexadecimal_upper_case(const __float_buffer<_Fp>& __buffer, + _Tp __value, int __precision, + char* __integral) { + __float_result __result = + __formatter::__format_buffer_hexadecimal_lower_case(__buffer, __value, __precision, __integral); + _VSTD::transform(__result.__integral, __result.__exponent, __result.__integral, __hex_to_upper); + *__result.__exponent = 'P'; + return __result; +} + +template +_LIBCPP_HIDE_FROM_ABI __float_result __format_buffer_scientific_lower_case(const __float_buffer<_Fp>& __buffer, + _Tp __value, int __precision, + char* __integral) { + __float_result __result; + __result.__integral = __integral; + __result.__last = + __formatter::__to_buffer(__integral, __buffer.end(), __value, chars_format::scientific, __precision); + + char* __first = __integral + 1; + _LIBCPP_ASSERT(__first != __result.__last, "No exponent present"); + if (*__first == '.') { + __result.__radix_point = __first; + __result.__exponent = __formatter::__find_exponent(__first + 1, __result.__last); + } else { + __result.__radix_point = __result.__last; + __result.__exponent = __first; + } + + // clang-format off + _LIBCPP_ASSERT((__result.__integral != __result.__last) && + (__result.__radix_point == __result.__last || *__result.__radix_point == '.') && + (__result.__exponent != __result.__last && *__result.__exponent == 'e'), + "Post-condition failure."); + // clang-format on + return __result; +} + +template +_LIBCPP_HIDE_FROM_ABI __float_result __format_buffer_scientific_upper_case(const __float_buffer<_Fp>& __buffer, + _Tp __value, int __precision, + char* __integral) { + __float_result __result = + __formatter::__format_buffer_scientific_lower_case(__buffer, __value, __precision, __integral); + *__result.__exponent = 'E'; + return __result; +} + +template +_LIBCPP_HIDE_FROM_ABI __float_result __format_buffer_fixed(const __float_buffer<_Fp>& __buffer, _Tp __value, + int __precision, char* __integral) { + __float_result __result; + __result.__integral = __integral; + __result.__last = __formatter::__to_buffer(__integral, __buffer.end(), __value, chars_format::fixed, __precision); + + // When there's no precision there's no radix point. + // Else the radix point is placed at __precision + 1 from the end. + // By converting __precision to a bool the subtraction can be done + // unconditionally. + __result.__radix_point = __result.__last - (__precision + bool(__precision)); + __result.__exponent = __result.__last; + + // clang-format off + _LIBCPP_ASSERT((__result.__integral != __result.__last) && + (__result.__radix_point == __result.__last || *__result.__radix_point == '.') && + (__result.__exponent == __result.__last), + "Post-condition failure."); + // clang-format on + return __result; +} + +template +_LIBCPP_HIDE_FROM_ABI __float_result __format_buffer_general_lower_case(__float_buffer<_Fp>& __buffer, _Tp __value, + int __precision, char* __integral) { + + __buffer.__remove_trailing_zeros(); + + __float_result __result; + __result.__integral = __integral; + __result.__last = __formatter::__to_buffer(__integral, __buffer.end(), __value, chars_format::general, __precision); + + char* __first = __integral + 1; + if (__first == __result.__last) { + __result.__radix_point = __result.__last; + __result.__exponent = __result.__last; + } else { + __result.__exponent = __formatter::__find_exponent(__first, __result.__last); + if (__result.__exponent != __result.__last) + // In scientific mode if there's a radix point it will always be after + // the first digit. (This is the position __first points at). + __result.__radix_point = *__first == '.' ? __first : __result.__last; + else { + // In fixed mode the algorithm truncates trailing spaces and possibly the + // radix point. There's no good guess for the position of the radix point + // therefore scan the output after the first digit. + __result.__radix_point = _VSTD::find(__first, __result.__last, '.'); + } + } + + // clang-format off + _LIBCPP_ASSERT((__result.__integral != __result.__last) && + (__result.__radix_point == __result.__last || *__result.__radix_point == '.') && + (__result.__exponent == __result.__last || *__result.__exponent == 'e'), + "Post-condition failure."); + // clang-format on + + return __result; +} + +template +_LIBCPP_HIDE_FROM_ABI __float_result __format_buffer_general_upper_case(__float_buffer<_Fp>& __buffer, _Tp __value, + int __precision, char* __integral) { + __float_result __result = __formatter::__format_buffer_general_lower_case(__buffer, __value, __precision, __integral); + if (__result.__exponent != __result.__last) + *__result.__exponent = 'E'; + return __result; +} + +/// Fills the buffer with the data based on the requested formatting. +/// +/// This function, when needed, turns the characters to upper case and +/// determines the "interesting" locations which are returned to the caller. +/// +/// This means the caller never has to convert the contents of the buffer to +/// upper case or search for radix points and the location of the exponent. +/// This gives a bit of overhead. The original code didn't do that, but due +/// to the number of possible additional work needed to turn this number to +/// the proper output the code was littered with tests for upper cases and +/// searches for radix points and exponents. +/// - When a precision larger than the type's precision is selected +/// additional zero characters need to be written before the exponent. +/// - alternate form needs to add a radix point when not present. +/// - localization needs to do grouping in the integral part. +template +// TODO FMT _Fp should just be _Tp when to_chars has proper long double support. +_LIBCPP_HIDE_FROM_ABI __float_result __format_buffer( + __float_buffer<_Fp>& __buffer, + _Tp __value, + bool __negative, + bool __has_precision, + __format_spec::__sign __sign, + __format_spec::__type __type) { + char* __first = __formatter::__insert_sign(__buffer.begin(), __negative, __sign); + switch (__type) { + case __format_spec::__type::__default: + if (__has_precision) + return __formatter::__format_buffer_general_lower_case(__buffer, __value, __buffer.__precision(), __first); + else + return __formatter::__format_buffer_default(__buffer, __value, __first); + + case __format_spec::__type::__hexfloat_lower_case: + return __formatter::__format_buffer_hexadecimal_lower_case( + __buffer, __value, __has_precision ? __buffer.__precision() : -1, __first); + + case __format_spec::__type::__hexfloat_upper_case: + return __formatter::__format_buffer_hexadecimal_upper_case( + __buffer, __value, __has_precision ? __buffer.__precision() : -1, __first); + + case __format_spec::__type::__scientific_lower_case: + return __formatter::__format_buffer_scientific_lower_case(__buffer, __value, __buffer.__precision(), __first); + + case __format_spec::__type::__scientific_upper_case: + return __formatter::__format_buffer_scientific_upper_case(__buffer, __value, __buffer.__precision(), __first); + + case __format_spec::__type::__fixed_lower_case: + case __format_spec::__type::__fixed_upper_case: + return __formatter::__format_buffer_fixed(__buffer, __value, __buffer.__precision(), __first); + + case __format_spec::__type::__general_lower_case: + return __formatter::__format_buffer_general_lower_case(__buffer, __value, __buffer.__precision(), __first); + + case __format_spec::__type::__general_upper_case: + return __formatter::__format_buffer_general_upper_case(__buffer, __value, __buffer.__precision(), __first); + + default: + _LIBCPP_ASSERT(false, "The parser should have validated the type"); + __libcpp_unreachable(); + } +} + +# ifndef _LIBCPP_HAS_NO_LOCALIZATION +template +_LIBCPP_HIDE_FROM_ABI _OutIt __format_locale_specific_form( + _OutIt __out_it, + const __float_buffer<_Fp>& __buffer, + const __float_result& __result, + _VSTD::locale __loc, + __format_spec::__parsed_specifications<_CharT> __specs) { + const auto& __np = std::use_facet>(__loc); + string __grouping = __np.grouping(); + char* __first = __result.__integral; + // When no radix point or exponent are present __last will be __result.__last. + char* __last = _VSTD::min(__result.__radix_point, __result.__exponent); + + ptrdiff_t __digits = __last - __first; + if (!__grouping.empty()) { + if (__digits <= __grouping[0]) + __grouping.clear(); + else + __grouping = __formatter::__determine_grouping(__digits, __grouping); + } + + ptrdiff_t __size = + __result.__last - __buffer.begin() + // Formatted string + __buffer.__num_trailing_zeros() + // Not yet rendered zeros + __grouping.size() - // Grouping contains one + !__grouping.empty(); // additional character + + __formatter::__padding_size_result __padding = {0, 0}; + bool __zero_padding = __specs.__alignment_ == __format_spec::__alignment::__zero_padding; + if (__size < __specs.__width_) { + if (__zero_padding) { + __specs.__alignment_ = __format_spec::__alignment::__right; + __specs.__fill_.__data[0] = _CharT('0'); + } + + __padding = __formatter::__padding_size(__size, __specs.__width_, __specs.__alignment_); + } + + // sign and (zero padding or alignment) + if (__zero_padding && __first != __buffer.begin()) + *__out_it++ = *__buffer.begin(); + __out_it = __formatter::__fill(_VSTD::move(__out_it), __padding.__before_, __specs.__fill_); + if (!__zero_padding && __first != __buffer.begin()) + *__out_it++ = *__buffer.begin(); + + // integral part + if (__grouping.empty()) { + __out_it = __formatter::__copy(__first, __digits, _VSTD::move(__out_it)); + } else { + auto __r = __grouping.rbegin(); + auto __e = __grouping.rend() - 1; + _CharT __sep = __np.thousands_sep(); + // The output is divided in small groups of numbers to write: + // - A group before the first separator. + // - A separator and a group, repeated for the number of separators. + // - A group after the last separator. + // This loop achieves that process by testing the termination condition + // midway in the loop. + while (true) { + __out_it = __formatter::__copy(__first, *__r, _VSTD::move(__out_it)); + __first += *__r; + + if (__r == __e) + break; + + ++__r; + *__out_it++ = __sep; + } + } + + // fractional part + if (__result.__radix_point != __result.__last) { + *__out_it++ = __np.decimal_point(); + __out_it = __formatter::__copy(__result.__radix_point + 1, __result.__exponent, _VSTD::move(__out_it)); + __out_it = __formatter::__fill(_VSTD::move(__out_it), __buffer.__num_trailing_zeros(), _CharT('0')); + } + + // exponent + if (__result.__exponent != __result.__last) + __out_it = __formatter::__copy(__result.__exponent, __result.__last, _VSTD::move(__out_it)); + + // alignment + return __formatter::__fill(_VSTD::move(__out_it), __padding.__after_, __specs.__fill_); +} +# endif // _LIBCPP_HAS_NO_LOCALIZATION + +template +_LIBCPP_HIDE_FROM_ABI _OutIt __format_floating_point_non_finite( + _OutIt __out_it, __format_spec::__parsed_specifications<_CharT> __specs, bool __negative, bool __isnan) { + char __buffer[4]; + char* __last = __formatter::__insert_sign(__buffer, __negative, __specs.__std_.__sign_); + + // to_chars can return inf, infinity, nan, and nan(n-char-sequence). + // The format library requires inf and nan. + // All in one expression to avoid dangling references. + bool __upper_case = + __specs.__std_.__type_ == __format_spec::__type::__hexfloat_upper_case || + __specs.__std_.__type_ == __format_spec::__type::__scientific_upper_case || + __specs.__std_.__type_ == __format_spec::__type::__fixed_upper_case || + __specs.__std_.__type_ == __format_spec::__type::__general_upper_case; + __last = _VSTD::copy_n(&("infnanINFNAN"[6 * __upper_case + 3 * __isnan]), 3, __last); + + // [format.string.std]/13 + // A zero (0) character preceding the width field pads the field with + // leading zeros (following any indication of sign or base) to the field + // width, except when applied to an infinity or NaN. + if (__specs.__alignment_ == __format_spec::__alignment::__zero_padding) + __specs.__alignment_ = __format_spec::__alignment::__right; + + return __formatter::__write(__buffer, __last, _VSTD::move(__out_it), __specs); +} + +template +_LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator +__format_floating_point(_Tp __value, _FormatContext& __ctx, __format_spec::__parsed_specifications<_CharT> __specs) { + bool __negative = _VSTD::signbit(__value); + + if (!_VSTD::isfinite(__value)) [[unlikely]] + return __formatter::__format_floating_point_non_finite(__ctx.out(), __specs, __negative, _VSTD::isnan(__value)); + + // Depending on the std-format-spec string the sign and the value + // might not be outputted together: + // - zero-padding may insert additional '0' characters. + // Therefore the value is processed as a non negative value. + // The function @ref __insert_sign will insert a '-' when the value was + // negative. + + if (__negative) + __value = -__value; + + // TODO FMT _Fp should just be _Tp when to_chars has proper long double support. + using _Fp = conditional_t, double, _Tp>; + // Force the type of the precision to avoid -1 to become an unsigned value. + __float_buffer<_Fp> __buffer(__specs.__precision_); + __float_result __result = __formatter::__format_buffer( + __buffer, __value, __negative, (__specs.__has_precision()), __specs.__std_.__sign_, __specs.__std_.__type_); + + if (__specs.__std_.__alternate_form_) { + if (__result.__radix_point == __result.__last) { + *__result.__last++ = '.'; + + // When there is an exponent the point needs to be moved before the + // exponent. When there's no exponent the rotate does nothing. Since + // rotate tests whether the operation is a nop, call it unconditionally. + _VSTD::rotate(__result.__exponent, __result.__last - 1, __result.__last); + __result.__radix_point = __result.__exponent; + + // The radix point is always placed before the exponent. + // - No exponent needs to point to the new last. + // - An exponent needs to move one position to the right. + // So it's safe to increment the value unconditionally. + ++__result.__exponent; + } + + // [format.string.std]/6 + // In addition, for g and G conversions, trailing zeros are not removed + // from the result. + // + // If the type option for a floating-point type is none it may use the + // general formatting, but it's not a g or G conversion. So in that case + // the formatting should not append trailing zeros. + bool __is_general = __specs.__std_.__type_ == __format_spec::__type::__general_lower_case || + __specs.__std_.__type_ == __format_spec::__type::__general_upper_case; + + if (__is_general) { + // https://en.cppreference.com/w/c/io/fprintf + // Let P equal the precision if nonzero, 6 if the precision is not + // specified, or 1 if the precision is 0. Then, if a conversion with + // style E would have an exponent of X: + int __p = _VSTD::max(1, (__specs.__has_precision() ? __specs.__precision_ : 6)); + if (__result.__exponent == __result.__last) + // if P > X >= -4, the conversion is with style f or F and precision P - 1 - X. + // By including the radix point it calculates P - (1 + X) + __p -= __result.__radix_point - __result.__integral; + else + // otherwise, the conversion is with style e or E and precision P - 1. + --__p; + + ptrdiff_t __precision = (__result.__exponent - __result.__radix_point) - 1; + if (__precision < __p) + __buffer.__add_trailing_zeros(__p - __precision); + } + } + +# ifndef _LIBCPP_HAS_NO_LOCALIZATION + if (__specs.__std_.__locale_specific_form_) + return __formatter::__format_locale_specific_form(__ctx.out(), __buffer, __result, __ctx.locale(), __specs); +# endif + + ptrdiff_t __size = __result.__last - __buffer.begin(); + int __num_trailing_zeros = __buffer.__num_trailing_zeros(); + if (__size + __num_trailing_zeros >= __specs.__width_) { + if (__num_trailing_zeros && __result.__exponent != __result.__last) + // Insert trailing zeros before exponent character. + return __formatter::__copy( + __result.__exponent, + __result.__last, + __formatter::__fill(__formatter::__copy(__buffer.begin(), __result.__exponent, __ctx.out()), + __num_trailing_zeros, + _CharT('0'))); + + return __formatter::__fill( + __formatter::__copy(__buffer.begin(), __result.__last, __ctx.out()), __num_trailing_zeros, _CharT('0')); + } + + auto __out_it = __ctx.out(); + char* __first = __buffer.begin(); + if (__specs.__alignment_ == __format_spec::__alignment ::__zero_padding) { + // When there is a sign output it before the padding. Note the __size + // doesn't need any adjustment, regardless whether the sign is written + // here or in __formatter::__write. + if (__first != __result.__integral) + *__out_it++ = *__first++; + // After the sign is written, zero padding is the same a right alignment + // with '0'. + __specs.__alignment_ = __format_spec::__alignment::__right; + __specs.__fill_.__data[0] = _CharT('0'); + } + + if (__num_trailing_zeros) + return __formatter::__write_using_trailing_zeros( + __first, __result.__last, _VSTD::move(__out_it), __specs, __size, __result.__exponent, __num_trailing_zeros); + + return __formatter::__write(__first, __result.__last, _VSTD::move(__out_it), __specs, __size); +} + +} // namespace __formatter + +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS __formatter_floating_point { +public: + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + typename _ParseContext::iterator __result = __parser_.__parse(__ctx, __format_spec::__fields_floating_point); + __format_spec::__process_parsed_floating_point(__parser_); + return __result; + } + + template + _LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator format(_Tp __value, _FormatContext& __ctx) const { + return __formatter::__format_floating_point(__value, __ctx, __parser_.__get_parsed_std_specifications(__ctx)); + } + + __format_spec::__parser<_CharT> __parser_; +}; + +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter + : public __formatter_floating_point<_CharT> {}; +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter + : public __formatter_floating_point<_CharT> {}; +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter + : public __formatter_floating_point<_CharT> {}; + +#endif //_LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP___FORMAT_FORMATTER_FLOATING_POINT_H diff --git a/third_party/libcxx/__format/formatter_integer.h b/third_party/libcxx/__format/formatter_integer.h new file mode 100644 index 000000000..f7dac2885 --- /dev/null +++ b/third_party/libcxx/__format/formatter_integer.h @@ -0,0 +1,107 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FORMAT_FORMATTER_INTEGER_H +#define _LIBCPP___FORMAT_FORMATTER_INTEGER_H + +#include <__availability> +#include <__concepts/arithmetic.h> +#include <__config> +#include <__format/concepts.h> +#include <__format/format_parse_context.h> +#include <__format/formatter.h> +#include <__format/formatter_integral.h> +#include <__format/formatter_output.h> +#include <__format/parser_std_format_spec.h> +#include <__type_traits/is_same.h> +#include <__type_traits/make_32_64_or_128_bit.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + + _LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + + template <__fmt_char_type _CharT> + struct _LIBCPP_TEMPLATE_VIS __formatter_integer { + +public: + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + typename _ParseContext::iterator __result = __parser_.__parse(__ctx, __format_spec::__fields_integral); + __format_spec::__process_parsed_integer(__parser_); + return __result; + } + + template + _LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator format(_Tp __value, _FormatContext& __ctx) const { + __format_spec::__parsed_specifications<_CharT> __specs = __parser_.__get_parsed_std_specifications(__ctx); + + if (__specs.__std_.__type_ == __format_spec::__type::__char) + return __formatter::__format_char(__value, __ctx.out(), __specs); + + using _Type = __make_32_64_or_128_bit_t<_Tp>; + static_assert(!is_same<_Type, void>::value, "unsupported integral type used in __formatter_integer::__format"); + + // Reduce the number of instantiation of the integer formatter + return __formatter::__format_integer(static_cast<_Type>(__value), __ctx, __specs); + } + + __format_spec::__parser<_CharT> __parser_; +}; + +// Signed integral types. +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter + : public __formatter_integer<_CharT> {}; +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_integer<_CharT> { +}; +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_integer<_CharT> {}; +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_integer<_CharT> {}; +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter + : public __formatter_integer<_CharT> {}; +# ifndef _LIBCPP_HAS_NO_INT128 +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter<__int128_t, _CharT> + : public __formatter_integer<_CharT> {}; +# endif + +// Unsigned integral types. +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter + : public __formatter_integer<_CharT> {}; +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter + : public __formatter_integer<_CharT> {}; +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter + : public __formatter_integer<_CharT> {}; +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter + : public __formatter_integer<_CharT> {}; +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter + : public __formatter_integer<_CharT> {}; +# ifndef _LIBCPP_HAS_NO_INT128 +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter<__uint128_t, _CharT> + : public __formatter_integer<_CharT> {}; +# endif + +#endif //_LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FORMAT_FORMATTER_INTEGER_H diff --git a/third_party/libcxx/__format/formatter_integral.h b/third_party/libcxx/__format/formatter_integral.h new file mode 100644 index 000000000..657c9bd15 --- /dev/null +++ b/third_party/libcxx/__format/formatter_integral.h @@ -0,0 +1,368 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FORMAT_FORMATTER_INTEGRAL_H +#define _LIBCPP___FORMAT_FORMATTER_INTEGRAL_H + +#include <__charconv/to_chars_integral.h> +#include <__charconv/to_chars_result.h> +#include <__charconv/traits.h> +#include <__concepts/arithmetic.h> +#include <__concepts/same_as.h> +#include <__config> +#include <__format/concepts.h> +#include <__format/format_error.h> +#include <__format/formatter_output.h> +#include <__format/parser_std_format_spec.h> +#include <__system_error/errc.h> +#include <__type_traits/make_unsigned.h> +#include <__utility/unreachable.h> +#include +#include +#include +#include + +#ifndef _LIBCPP_HAS_NO_LOCALIZATION +# include +#endif + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +namespace __formatter { + +// +// Generic +// + +_LIBCPP_HIDE_FROM_ABI inline char* __insert_sign(char* __buf, bool __negative, __format_spec::__sign __sign) { + if (__negative) + *__buf++ = '-'; + else + switch (__sign) { + case __format_spec::__sign::__default: + case __format_spec::__sign::__minus: + // No sign added. + break; + case __format_spec::__sign::__plus: + *__buf++ = '+'; + break; + case __format_spec::__sign::__space: + *__buf++ = ' '; + break; + } + + return __buf; +} + +/** + * Determines the required grouping based on the size of the input. + * + * The grouping's last element will be repeated. For simplicity this repeating + * is unwrapped based on the length of the input. (When the input is short some + * groups are not processed.) + * + * @returns The size of the groups to write. This means the number of + * separator characters written is size() - 1. + * + * @note Since zero-sized groups cause issues they are silently ignored. + * + * @note The grouping field of the locale is always a @c std::string, + * regardless whether the @c std::numpunct's type is @c char or @c wchar_t. + */ +_LIBCPP_HIDE_FROM_ABI inline string __determine_grouping(ptrdiff_t __size, const string& __grouping) { + _LIBCPP_ASSERT(!__grouping.empty() && __size > __grouping[0], + "The slow grouping formatting is used while there will be no " + "separators written"); + string __r; + auto __end = __grouping.end() - 1; + auto __ptr = __grouping.begin(); + + while (true) { + __size -= *__ptr; + if (__size > 0) + __r.push_back(*__ptr); + else { + // __size <= 0 so the value pushed will be <= *__ptr. + __r.push_back(*__ptr + __size); + return __r; + } + + // Proceed to the next group. + if (__ptr != __end) { + do { + ++__ptr; + // Skip grouping with a width of 0. + } while (*__ptr == 0 && __ptr != __end); + } + } + + __libcpp_unreachable(); +} + +// +// Char +// + +template <__fmt_char_type _CharT> +_LIBCPP_HIDE_FROM_ABI auto __format_char( + integral auto __value, + output_iterator auto __out_it, + __format_spec::__parsed_specifications<_CharT> __specs) -> decltype(__out_it) { + using _Tp = decltype(__value); + if constexpr (!same_as<_CharT, _Tp>) { + // cmp_less and cmp_greater can't be used for character types. + if constexpr (signed_integral<_CharT> == signed_integral<_Tp>) { + if (__value < numeric_limits<_CharT>::min() || __value > numeric_limits<_CharT>::max()) + std::__throw_format_error("Integral value outside the range of the char type"); + } else if constexpr (signed_integral<_CharT>) { + // _CharT is signed _Tp is unsigned + if (__value > static_cast>(numeric_limits<_CharT>::max())) + std::__throw_format_error("Integral value outside the range of the char type"); + } else { + // _CharT is unsigned _Tp is signed + if (__value < 0 || static_cast>(__value) > numeric_limits<_CharT>::max()) + std::__throw_format_error("Integral value outside the range of the char type"); + } + } + + const auto __c = static_cast<_CharT>(__value); + return __formatter::__write(_VSTD::addressof(__c), _VSTD::addressof(__c) + 1, _VSTD::move(__out_it), __specs); +} + +// +// Integer +// + +/** Wrapper around @ref to_chars, returning the output pointer. */ +template +_LIBCPP_HIDE_FROM_ABI char* __to_buffer(char* __first, char* __last, _Tp __value, int __base) { + // TODO FMT Evaluate code overhead due to not calling the internal function + // directly. (Should be zero overhead.) + to_chars_result __r = _VSTD::to_chars(__first, __last, __value, __base); + _LIBCPP_ASSERT(__r.ec == errc(0), "Internal buffer too small"); + return __r.ptr; +} + +/** + * Helper to determine the buffer size to output a integer in Base @em x. + * + * There are several overloads for the supported bases. The function uses the + * base as template argument so it can be used in a constant expression. + */ +template +consteval size_t __buffer_size() noexcept + requires(_Base == 2) +{ + return numeric_limits<_Tp>::digits // The number of binary digits. + + 2 // Reserve space for the '0[Bb]' prefix. + + 1; // Reserve space for the sign. +} + +template +consteval size_t __buffer_size() noexcept + requires(_Base == 8) +{ + return numeric_limits<_Tp>::digits // The number of binary digits. + / 3 // Adjust to octal. + + 1 // Turn floor to ceil. + + 1 // Reserve space for the '0' prefix. + + 1; // Reserve space for the sign. +} + +template +consteval size_t __buffer_size() noexcept + requires(_Base == 10) +{ + return numeric_limits<_Tp>::digits10 // The floored value. + + 1 // Turn floor to ceil. + + 1; // Reserve space for the sign. +} + +template +consteval size_t __buffer_size() noexcept + requires(_Base == 16) +{ + return numeric_limits<_Tp>::digits // The number of binary digits. + / 4 // Adjust to hexadecimal. + + 2 // Reserve space for the '0[Xx]' prefix. + + 1; // Reserve space for the sign. +} + +template +_LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator __format_integer( + _Tp __value, + _FormatContext& __ctx, + __format_spec::__parsed_specifications<_CharT> __specs, + bool __negative, + char* __begin, + char* __end, + const char* __prefix, + int __base) { + char* __first = __formatter::__insert_sign(__begin, __negative, __specs.__std_.__sign_); + if (__specs.__std_.__alternate_form_ && __prefix) + while (*__prefix) + *__first++ = *__prefix++; + + char* __last = __formatter::__to_buffer(__first, __end, __value, __base); + +# ifndef _LIBCPP_HAS_NO_LOCALIZATION + if (__specs.__std_.__locale_specific_form_) { + const auto& __np = std::use_facet>(__ctx.locale()); + string __grouping = __np.grouping(); + ptrdiff_t __size = __last - __first; + // Writing the grouped form has more overhead than the normal output + // routines. If there will be no separators written the locale-specific + // form is identical to the normal routine. Test whether to grouped form + // is required. + if (!__grouping.empty() && __size > __grouping[0]) + return __formatter::__write_using_decimal_separators( + __ctx.out(), + __begin, + __first, + __last, + __formatter::__determine_grouping(__size, __grouping), + __np.thousands_sep(), + __specs); + } +# endif + auto __out_it = __ctx.out(); + if (__specs.__alignment_ != __format_spec::__alignment::__zero_padding) + __first = __begin; + else { + // __buf contains [sign][prefix]data + // ^ location of __first + // The zero padding is done like: + // - Write [sign][prefix] + // - Write data right aligned with '0' as fill character. + __out_it = __formatter::__copy(__begin, __first, _VSTD::move(__out_it)); + __specs.__alignment_ = __format_spec::__alignment::__right; + __specs.__fill_.__data[0] = _CharT('0'); + int32_t __size = __first - __begin; + + __specs.__width_ -= _VSTD::min(__size, __specs.__width_); + } + + if (__specs.__std_.__type_ != __format_spec::__type::__hexadecimal_upper_case) [[likely]] + return __formatter::__write(__first, __last, __ctx.out(), __specs); + + return __formatter::__write_transformed(__first, __last, __ctx.out(), __specs, __formatter::__hex_to_upper); +} + +template +_LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator +__format_integer(_Tp __value, + _FormatContext& __ctx, + __format_spec::__parsed_specifications<_CharT> __specs, + bool __negative = false) { + switch (__specs.__std_.__type_) { + case __format_spec::__type::__binary_lower_case: { + array()> __array; + return __formatter::__format_integer(__value, __ctx, __specs, __negative, __array.begin(), __array.end(), "0b", 2); + } + case __format_spec::__type::__binary_upper_case: { + array()> __array; + return __formatter::__format_integer(__value, __ctx, __specs, __negative, __array.begin(), __array.end(), "0B", 2); + } + case __format_spec::__type::__octal: { + // Octal is special; if __value == 0 there's no prefix. + array()> __array; + return __formatter::__format_integer( + __value, __ctx, __specs, __negative, __array.begin(), __array.end(), __value != 0 ? "0" : nullptr, 8); + } + case __format_spec::__type::__default: + case __format_spec::__type::__decimal: { + array()> __array; + return __formatter::__format_integer( + __value, __ctx, __specs, __negative, __array.begin(), __array.end(), nullptr, 10); + } + case __format_spec::__type::__hexadecimal_lower_case: { + array()> __array; + return __formatter::__format_integer(__value, __ctx, __specs, __negative, __array.begin(), __array.end(), "0x", 16); + } + case __format_spec::__type::__hexadecimal_upper_case: { + array()> __array; + return __formatter::__format_integer(__value, __ctx, __specs, __negative, __array.begin(), __array.end(), "0X", 16); + } + default: + _LIBCPP_ASSERT(false, "The parse function should have validated the type"); + __libcpp_unreachable(); + } +} + +template +_LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator +__format_integer(_Tp __value, _FormatContext& __ctx, __format_spec::__parsed_specifications<_CharT> __specs) { + // Depending on the std-format-spec string the sign and the value + // might not be outputted together: + // - alternate form may insert a prefix string. + // - zero-padding may insert additional '0' characters. + // Therefore the value is processed as a positive unsigned value. + // The function @ref __insert_sign will a '-' when the value was negative. + auto __r = std::__to_unsigned_like(__value); + bool __negative = __value < 0; + if (__negative) + __r = std::__complement(__r); + + return __formatter::__format_integer(__r, __ctx, __specs, __negative); +} + +// +// Formatter arithmetic (bool) +// + +template +struct _LIBCPP_TEMPLATE_VIS __bool_strings; + +template <> +struct _LIBCPP_TEMPLATE_VIS __bool_strings { + static constexpr string_view __true{"true"}; + static constexpr string_view __false{"false"}; +}; + +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +template <> +struct _LIBCPP_TEMPLATE_VIS __bool_strings { + static constexpr wstring_view __true{L"true"}; + static constexpr wstring_view __false{L"false"}; +}; +# endif + +template +_LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator +__format_bool(bool __value, _FormatContext& __ctx, __format_spec::__parsed_specifications<_CharT> __specs) { +# ifndef _LIBCPP_HAS_NO_LOCALIZATION + if (__specs.__std_.__locale_specific_form_) { + const auto& __np = std::use_facet>(__ctx.locale()); + basic_string<_CharT> __str = __value ? __np.truename() : __np.falsename(); + return __formatter::__write_string_no_precision(basic_string_view<_CharT>{__str}, __ctx.out(), __specs); + } +# endif + basic_string_view<_CharT> __str = + __value ? __formatter::__bool_strings<_CharT>::__true : __formatter::__bool_strings<_CharT>::__false; + return __formatter::__write(__str.begin(), __str.end(), __ctx.out(), __specs); +} + +} // namespace __formatter + +#endif //_LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP___FORMAT_FORMATTER_INTEGRAL_H diff --git a/third_party/libcxx/__format/formatter_output.h b/third_party/libcxx/__format/formatter_output.h new file mode 100644 index 000000000..6263dba09 --- /dev/null +++ b/third_party/libcxx/__format/formatter_output.h @@ -0,0 +1,597 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FORMAT_FORMATTER_OUTPUT_H +#define _LIBCPP___FORMAT_FORMATTER_OUTPUT_H + +#include <__algorithm/ranges_copy.h> +#include <__algorithm/ranges_fill_n.h> +#include <__algorithm/ranges_for_each.h> +#include <__algorithm/ranges_transform.h> +#include <__bit/countl.h> +#include <__charconv/to_chars_integral.h> +#include <__charconv/to_chars_result.h> +#include <__chrono/statically_widen.h> +#include <__concepts/same_as.h> +#include <__config> +#include <__format/buffer.h> +#include <__format/concepts.h> +#include <__format/escaped_output_table.h> +#include <__format/formatter.h> +#include <__format/parser_std_format_spec.h> +#include <__format/unicode.h> +#include <__iterator/back_insert_iterator.h> +#include <__iterator/concepts.h> +#include <__iterator/readable_traits.h> // iter_value_t +#include <__system_error/errc.h> +#include <__type_traits/make_unsigned.h> +#include <__utility/move.h> +#include <__utility/unreachable.h> +#include +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +namespace __formatter { + +_LIBCPP_HIDE_FROM_ABI constexpr char __hex_to_upper(char __c) { + switch (__c) { + case 'a': + return 'A'; + case 'b': + return 'B'; + case 'c': + return 'C'; + case 'd': + return 'D'; + case 'e': + return 'E'; + case 'f': + return 'F'; + } + return __c; +} + +struct _LIBCPP_TYPE_VIS __padding_size_result { + size_t __before_; + size_t __after_; +}; + +_LIBCPP_HIDE_FROM_ABI constexpr __padding_size_result +__padding_size(size_t __size, size_t __width, __format_spec::__alignment __align) { + _LIBCPP_ASSERT(__width > __size, "don't call this function when no padding is required"); + _LIBCPP_ASSERT( + __align != __format_spec::__alignment::__zero_padding, "the caller should have handled the zero-padding"); + + size_t __fill = __width - __size; + switch (__align) { + case __format_spec::__alignment::__zero_padding: + __libcpp_unreachable(); + + case __format_spec::__alignment::__left: + return {0, __fill}; + + case __format_spec::__alignment::__center: { + // The extra padding is divided per [format.string.std]/3 + // __before = floor(__fill, 2); + // __after = ceil(__fill, 2); + size_t __before = __fill / 2; + size_t __after = __fill - __before; + return {__before, __after}; + } + case __format_spec::__alignment::__default: + case __format_spec::__alignment::__right: + return {__fill, 0}; + } + __libcpp_unreachable(); +} + +/// Copy wrapper. +/// +/// This uses a "mass output function" of __format::__output_buffer when possible. +template <__fmt_char_type _CharT, __fmt_char_type _OutCharT = _CharT> +_LIBCPP_HIDE_FROM_ABI auto __copy(basic_string_view<_CharT> __str, output_iterator auto __out_it) + -> decltype(__out_it) { + if constexpr (_VSTD::same_as>>) { + __out_it.__get_container()->__copy(__str); + return __out_it; + } else if constexpr (_VSTD::same_as::__iterator>) { + __out_it.__buffer_->__copy(__str); + return __out_it; + } else { + return std::ranges::copy(__str, _VSTD::move(__out_it)).out; + } +} + +template <__fmt_char_type _CharT, __fmt_char_type _OutCharT = _CharT> +_LIBCPP_HIDE_FROM_ABI auto +__copy(const _CharT* __first, const _CharT* __last, output_iterator auto __out_it) + -> decltype(__out_it) { + return __formatter::__copy(basic_string_view{__first, __last}, _VSTD::move(__out_it)); +} + +template <__fmt_char_type _CharT, __fmt_char_type _OutCharT = _CharT> +_LIBCPP_HIDE_FROM_ABI auto __copy(const _CharT* __first, size_t __n, output_iterator auto __out_it) + -> decltype(__out_it) { + return __formatter::__copy(basic_string_view{__first, __n}, _VSTD::move(__out_it)); +} + +/// Transform wrapper. +/// +/// This uses a "mass output function" of __format::__output_buffer when possible. +template <__fmt_char_type _CharT, __fmt_char_type _OutCharT = _CharT, class _UnaryOperation> +_LIBCPP_HIDE_FROM_ABI auto +__transform(const _CharT* __first, + const _CharT* __last, + output_iterator auto __out_it, + _UnaryOperation __operation) -> decltype(__out_it) { + if constexpr (_VSTD::same_as>>) { + __out_it.__get_container()->__transform(__first, __last, _VSTD::move(__operation)); + return __out_it; + } else if constexpr (_VSTD::same_as::__iterator>) { + __out_it.__buffer_->__transform(__first, __last, _VSTD::move(__operation)); + return __out_it; + } else { + return std::ranges::transform(__first, __last, _VSTD::move(__out_it), __operation).out; + } +} + +/// Fill wrapper. +/// +/// This uses a "mass output function" of __format::__output_buffer when possible. +template <__fmt_char_type _CharT, output_iterator _OutIt> +_LIBCPP_HIDE_FROM_ABI _OutIt __fill(_OutIt __out_it, size_t __n, _CharT __value) { + if constexpr (_VSTD::same_as>>) { + __out_it.__get_container()->__fill(__n, __value); + return __out_it; + } else if constexpr (_VSTD::same_as::__iterator>) { + __out_it.__buffer_->__fill(__n, __value); + return __out_it; + } else { + return std::ranges::fill_n(_VSTD::move(__out_it), __n, __value); + } +} + +# ifndef _LIBCPP_HAS_NO_UNICODE +template <__fmt_char_type _CharT, output_iterator _OutIt> + requires(same_as<_CharT, char>) +_LIBCPP_HIDE_FROM_ABI _OutIt __fill(_OutIt __out_it, size_t __n, __format_spec::__code_point<_CharT> __value) { + std::size_t __bytes = std::countl_one(static_cast(__value.__data[0])); + if (__bytes == 0) + return __formatter::__fill(std::move(__out_it), __n, __value.__data[0]); + + for (size_t __i = 0; __i < __n; ++__i) + __out_it = __formatter::__copy( + std::addressof(__value.__data[0]), std::addressof(__value.__data[0]) + __bytes, std::move(__out_it)); + return __out_it; +} + +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +template <__fmt_char_type _CharT, output_iterator _OutIt> + requires(same_as<_CharT, wchar_t> && sizeof(wchar_t) == 2) +_LIBCPP_HIDE_FROM_ABI _OutIt __fill(_OutIt __out_it, size_t __n, __format_spec::__code_point<_CharT> __value) { + if (!__unicode::__is_high_surrogate(__value.__data[0])) + return __formatter::__fill(std::move(__out_it), __n, __value.__data[0]); + + for (size_t __i = 0; __i < __n; ++__i) + __out_it = __formatter::__copy( + std::addressof(__value.__data[0]), std::addressof(__value.__data[0]) + 2, std::move(__out_it)); + return __out_it; +} + +template <__fmt_char_type _CharT, output_iterator _OutIt> + requires(same_as<_CharT, wchar_t> && sizeof(wchar_t) == 4) +_LIBCPP_HIDE_FROM_ABI _OutIt __fill(_OutIt __out_it, size_t __n, __format_spec::__code_point<_CharT> __value) { + return __formatter::__fill(std::move(__out_it), __n, __value.__data[0]); +} +# endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS +# else // _LIBCPP_HAS_NO_UNICODE +template <__fmt_char_type _CharT, output_iterator _OutIt> +_LIBCPP_HIDE_FROM_ABI _OutIt __fill(_OutIt __out_it, size_t __n, __format_spec::__code_point<_CharT> __value) { + return __formatter::__fill(std::move(__out_it), __n, __value.__data[0]); +} +# endif // _LIBCPP_HAS_NO_UNICODE + +template +_LIBCPP_HIDE_FROM_ABI _OutIt __write_using_decimal_separators(_OutIt __out_it, const char* __begin, const char* __first, + const char* __last, string&& __grouping, _CharT __sep, + __format_spec::__parsed_specifications<_CharT> __specs) { + int __size = (__first - __begin) + // [sign][prefix] + (__last - __first) + // data + (__grouping.size() - 1); // number of separator characters + + __padding_size_result __padding = {0, 0}; + if (__specs.__alignment_ == __format_spec::__alignment::__zero_padding) { + // Write [sign][prefix]. + __out_it = __formatter::__copy(__begin, __first, _VSTD::move(__out_it)); + + if (__specs.__width_ > __size) { + // Write zero padding. + __padding.__before_ = __specs.__width_ - __size; + __out_it = __formatter::__fill(_VSTD::move(__out_it), __specs.__width_ - __size, _CharT('0')); + } + } else { + if (__specs.__width_ > __size) { + // Determine padding and write padding. + __padding = __formatter::__padding_size(__size, __specs.__width_, __specs.__alignment_); + + __out_it = __formatter::__fill(_VSTD::move(__out_it), __padding.__before_, __specs.__fill_); + } + // Write [sign][prefix]. + __out_it = __formatter::__copy(__begin, __first, _VSTD::move(__out_it)); + } + + auto __r = __grouping.rbegin(); + auto __e = __grouping.rend() - 1; + _LIBCPP_ASSERT(__r != __e, "The slow grouping formatting is used while " + "there will be no separators written."); + // The output is divided in small groups of numbers to write: + // - A group before the first separator. + // - A separator and a group, repeated for the number of separators. + // - A group after the last separator. + // This loop achieves that process by testing the termination condition + // midway in the loop. + // + // TODO FMT This loop evaluates the loop invariant `__parser.__type != + // _Flags::_Type::__hexadecimal_upper_case` for every iteration. (This test + // happens in the __write call.) Benchmark whether making two loops and + // hoisting the invariant is worth the effort. + while (true) { + if (__specs.__std_.__type_ == __format_spec::__type::__hexadecimal_upper_case) { + __last = __first + *__r; + __out_it = __formatter::__transform(__first, __last, _VSTD::move(__out_it), __hex_to_upper); + __first = __last; + } else { + __out_it = __formatter::__copy(__first, *__r, _VSTD::move(__out_it)); + __first += *__r; + } + + if (__r == __e) + break; + + ++__r; + *__out_it++ = __sep; + } + + return __formatter::__fill(_VSTD::move(__out_it), __padding.__after_, __specs.__fill_); +} + +/// Writes the input to the output with the required padding. +/// +/// Since the output column width is specified the function can be used for +/// ASCII and Unicode output. +/// +/// \pre \a __size <= \a __width. Using this function when this pre-condition +/// doesn't hold incurs an unwanted overhead. +/// +/// \param __str The string to write. +/// \param __out_it The output iterator to write to. +/// \param __specs The parsed formatting specifications. +/// \param __size The (estimated) output column width. When the elements +/// to be written are ASCII the following condition holds +/// \a __size == \a __last - \a __first. +/// +/// \returns An iterator pointing beyond the last element written. +/// +/// \note The type of the elements in range [\a __first, \a __last) can differ +/// from the type of \a __specs. Integer output uses \c std::to_chars for its +/// conversion, which means the [\a __first, \a __last) always contains elements +/// of the type \c char. +template +_LIBCPP_HIDE_FROM_ABI auto +__write(basic_string_view<_CharT> __str, + output_iterator auto __out_it, + __format_spec::__parsed_specifications<_ParserCharT> __specs, + ptrdiff_t __size) -> decltype(__out_it) { + if (__size >= __specs.__width_) + return __formatter::__copy(__str, _VSTD::move(__out_it)); + + __padding_size_result __padding = __formatter::__padding_size(__size, __specs.__width_, __specs.__std_.__alignment_); + __out_it = __formatter::__fill(_VSTD::move(__out_it), __padding.__before_, __specs.__fill_); + __out_it = __formatter::__copy(__str, _VSTD::move(__out_it)); + return __formatter::__fill(_VSTD::move(__out_it), __padding.__after_, __specs.__fill_); +} + +template +_LIBCPP_HIDE_FROM_ABI auto +__write(_Iterator __first, + _Iterator __last, + output_iterator&> auto __out_it, + __format_spec::__parsed_specifications<_ParserCharT> __specs, + ptrdiff_t __size) -> decltype(__out_it) { + _LIBCPP_ASSERT(__first <= __last, "Not a valid range"); + return __formatter::__write(basic_string_view{__first, __last}, _VSTD::move(__out_it), __specs, __size); +} + +/// \overload +/// +/// Calls the function above where \a __size = \a __last - \a __first. +template +_LIBCPP_HIDE_FROM_ABI auto +__write(_Iterator __first, + _Iterator __last, + output_iterator&> auto __out_it, + __format_spec::__parsed_specifications<_ParserCharT> __specs) -> decltype(__out_it) { + _LIBCPP_ASSERT(__first <= __last, "Not a valid range"); + return __formatter::__write(__first, __last, _VSTD::move(__out_it), __specs, __last - __first); +} + +template +_LIBCPP_HIDE_FROM_ABI auto __write_transformed(const _CharT* __first, const _CharT* __last, + output_iterator auto __out_it, + __format_spec::__parsed_specifications<_ParserCharT> __specs, + _UnaryOperation __op) -> decltype(__out_it) { + _LIBCPP_ASSERT(__first <= __last, "Not a valid range"); + + ptrdiff_t __size = __last - __first; + if (__size >= __specs.__width_) + return __formatter::__transform(__first, __last, _VSTD::move(__out_it), __op); + + __padding_size_result __padding = __formatter::__padding_size(__size, __specs.__width_, __specs.__alignment_); + __out_it = __formatter::__fill(_VSTD::move(__out_it), __padding.__before_, __specs.__fill_); + __out_it = __formatter::__transform(__first, __last, _VSTD::move(__out_it), __op); + return __formatter::__fill(_VSTD::move(__out_it), __padding.__after_, __specs.__fill_); +} + +/// Writes additional zero's for the precision before the exponent. +/// This is used when the precision requested in the format string is larger +/// than the maximum precision of the floating-point type. These precision +/// digits are always 0. +/// +/// \param __exponent The location of the exponent character. +/// \param __num_trailing_zeros The number of 0's to write before the exponent +/// character. +template +_LIBCPP_HIDE_FROM_ABI auto __write_using_trailing_zeros( + const _CharT* __first, + const _CharT* __last, + output_iterator auto __out_it, + __format_spec::__parsed_specifications<_ParserCharT> __specs, + size_t __size, + const _CharT* __exponent, + size_t __num_trailing_zeros) -> decltype(__out_it) { + _LIBCPP_ASSERT(__first <= __last, "Not a valid range"); + _LIBCPP_ASSERT(__num_trailing_zeros > 0, "The overload not writing trailing zeros should have been used"); + + __padding_size_result __padding = + __formatter::__padding_size(__size + __num_trailing_zeros, __specs.__width_, __specs.__alignment_); + __out_it = __formatter::__fill(_VSTD::move(__out_it), __padding.__before_, __specs.__fill_); + __out_it = __formatter::__copy(__first, __exponent, _VSTD::move(__out_it)); + __out_it = __formatter::__fill(_VSTD::move(__out_it), __num_trailing_zeros, _CharT('0')); + __out_it = __formatter::__copy(__exponent, __last, _VSTD::move(__out_it)); + return __formatter::__fill(_VSTD::move(__out_it), __padding.__after_, __specs.__fill_); +} + +/// Writes a string using format's width estimation algorithm. +/// +/// \pre !__specs.__has_precision() +/// +/// \note When \c _LIBCPP_HAS_NO_UNICODE is defined the function assumes the +/// input is ASCII. +template +_LIBCPP_HIDE_FROM_ABI auto __write_string_no_precision( + basic_string_view<_CharT> __str, + output_iterator auto __out_it, + __format_spec::__parsed_specifications<_CharT> __specs) -> decltype(__out_it) { + _LIBCPP_ASSERT(!__specs.__has_precision(), "use __write_string"); + + // No padding -> copy the string + if (!__specs.__has_width()) + return __formatter::__copy(__str, _VSTD::move(__out_it)); + + // Note when the estimated width is larger than size there's no padding. So + // there's no reason to get the real size when the estimate is larger than or + // equal to the minimum field width. + size_t __size = + __format_spec::__estimate_column_width(__str, __specs.__width_, __format_spec::__column_width_rounding::__up) + .__width_; + return __formatter::__write(__str, _VSTD::move(__out_it), __specs, __size); +} + +template +_LIBCPP_HIDE_FROM_ABI int __truncate(basic_string_view<_CharT>& __str, int __precision) { + __format_spec::__column_width_result __result = + __format_spec::__estimate_column_width(__str, __precision, __format_spec::__column_width_rounding::__down); + __str = basic_string_view<_CharT>{__str.begin(), __result.__last_}; + return __result.__width_; +} + +/// Writes a string using format's width estimation algorithm. +/// +/// \note When \c _LIBCPP_HAS_NO_UNICODE is defined the function assumes the +/// input is ASCII. +template +_LIBCPP_HIDE_FROM_ABI auto __write_string( + basic_string_view<_CharT> __str, + output_iterator auto __out_it, + __format_spec::__parsed_specifications<_CharT> __specs) -> decltype(__out_it) { + if (!__specs.__has_precision()) + return __formatter::__write_string_no_precision(__str, _VSTD::move(__out_it), __specs); + + int __size = __formatter::__truncate(__str, __specs.__precision_); + + return __formatter::__write(__str.begin(), __str.end(), _VSTD::move(__out_it), __specs, __size); +} + +# if _LIBCPP_STD_VER >= 23 + +struct __nul_terminator {}; + +template +_LIBCPP_HIDE_FROM_ABI bool operator==(const _CharT* __cstr, __nul_terminator) { + return *__cstr == _CharT('\0'); +} + +template +_LIBCPP_HIDE_FROM_ABI void +__write_escaped_code_unit(basic_string<_CharT>& __str, char32_t __value, const _CharT* __prefix) { + back_insert_iterator __out_it{__str}; + std::ranges::copy(__prefix, __nul_terminator{}, __out_it); + + char __buffer[8]; + to_chars_result __r = std::to_chars(std::begin(__buffer), std::end(__buffer), __value, 16); + _LIBCPP_ASSERT(__r.ec == errc(0), "Internal buffer too small"); + std::ranges::copy(std::begin(__buffer), __r.ptr, __out_it); + + __str += _CharT('}'); +} + +// [format.string.escaped]/2.2.1.2 +// ... +// then the sequence \u{hex-digit-sequence} is appended to E, where +// hex-digit-sequence is the shortest hexadecimal representation of C using +// lower-case hexadecimal digits. +template +_LIBCPP_HIDE_FROM_ABI void __write_well_formed_escaped_code_unit(basic_string<_CharT>& __str, char32_t __value) { + __formatter::__write_escaped_code_unit(__str, __value, _LIBCPP_STATICALLY_WIDEN(_CharT, "\\u{")); +} + +// [format.string.escaped]/2.2.3 +// Otherwise (X is a sequence of ill-formed code units), each code unit U is +// appended to E in order as the sequence \x{hex-digit-sequence}, where +// hex-digit-sequence is the shortest hexadecimal representation of U using +// lower-case hexadecimal digits. +template +_LIBCPP_HIDE_FROM_ABI void __write_escape_ill_formed_code_unit(basic_string<_CharT>& __str, char32_t __value) { + __formatter::__write_escaped_code_unit(__str, __value, _LIBCPP_STATICALLY_WIDEN(_CharT, "\\x{")); +} + +template +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool __is_escaped_sequence_written(basic_string<_CharT>& __str, char32_t __value) { +# ifdef _LIBCPP_HAS_NO_UNICODE + // For ASCII assume everything above 127 is printable. + if (__value > 127) + return false; +# endif + + if (!__escaped_output_table::__needs_escape(__value)) + return false; + + __formatter::__write_well_formed_escaped_code_unit(__str, __value); + return true; +} + +template +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr char32_t __to_char32(_CharT __value) { + return static_cast>(__value); +} + +enum class _LIBCPP_ENUM_VIS __escape_quotation_mark { __apostrophe, __double_quote }; + +// [format.string.escaped]/2 +template +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool +__is_escaped_sequence_written(basic_string<_CharT>& __str, char32_t __value, __escape_quotation_mark __mark) { + // 2.2.1.1 - Mapped character in [tab:format.escape.sequences] + switch (__value) { + case _CharT('\t'): + __str += _LIBCPP_STATICALLY_WIDEN(_CharT, "\\t"); + return true; + case _CharT('\n'): + __str += _LIBCPP_STATICALLY_WIDEN(_CharT, "\\n"); + return true; + case _CharT('\r'): + __str += _LIBCPP_STATICALLY_WIDEN(_CharT, "\\r"); + return true; + case _CharT('\''): + if (__mark == __escape_quotation_mark::__apostrophe) + __str += _LIBCPP_STATICALLY_WIDEN(_CharT, R"(\')"); + else + __str += __value; + return true; + case _CharT('"'): + if (__mark == __escape_quotation_mark::__double_quote) + __str += _LIBCPP_STATICALLY_WIDEN(_CharT, R"(\")"); + else + __str += __value; + return true; + case _CharT('\\'): + __str += _LIBCPP_STATICALLY_WIDEN(_CharT, R"(\\)"); + return true; + + // 2.2.1.2 - Space + case _CharT(' '): + __str += __value; + return true; + } + + // 2.2.2 + // Otherwise, if X is a shift sequence, the effect on E and further + // decoding of S is unspecified. + // For now shift sequences are ignored and treated as Unicode. Other parts + // of the format library do the same. It's unknown how ostream treats them. + // TODO FMT determine what to do with shift sequences. + + // 2.2.1.2.1 and 2.2.1.2.2 - Escape + return __formatter::__is_escaped_sequence_written(__str, __formatter::__to_char32(__value)); +} + +template +_LIBCPP_HIDE_FROM_ABI void +__escape(basic_string<_CharT>& __str, basic_string_view<_CharT> __values, __escape_quotation_mark __mark) { + __unicode::__code_point_view<_CharT> __view{__values.begin(), __values.end()}; + + while (!__view.__at_end()) { + auto __first = __view.__position(); + typename __unicode::__consume_result __result = __view.__consume(); + if (__result.__status == __unicode::__consume_result::__ok) { + if (!__formatter::__is_escaped_sequence_written(__str, __result.__code_point, __mark)) + // 2.2.1.3 - Add the character + ranges::copy(__first, __view.__position(), std::back_insert_iterator(__str)); + } else { + // 2.2.3 sequence of ill-formed code units + ranges::for_each(__first, __view.__position(), [&](_CharT __value) { + __formatter::__write_escape_ill_formed_code_unit(__str, __formatter::__to_char32(__value)); + }); + } + } +} + +template +_LIBCPP_HIDE_FROM_ABI auto +__format_escaped_char(_CharT __value, + output_iterator auto __out_it, + __format_spec::__parsed_specifications<_CharT> __specs) -> decltype(__out_it) { + basic_string<_CharT> __str; + __str += _CharT('\''); + __formatter::__escape(__str, basic_string_view{std::addressof(__value), 1}, __escape_quotation_mark::__apostrophe); + __str += _CharT('\''); + return __formatter::__write(__str.data(), __str.data() + __str.size(), _VSTD::move(__out_it), __specs, __str.size()); +} + +template +_LIBCPP_HIDE_FROM_ABI auto +__format_escaped_string(basic_string_view<_CharT> __values, + output_iterator auto __out_it, + __format_spec::__parsed_specifications<_CharT> __specs) -> decltype(__out_it) { + basic_string<_CharT> __str; + __str += _CharT('"'); + __formatter::__escape(__str, __values, __escape_quotation_mark::__double_quote); + __str += _CharT('"'); + return __formatter::__write_string(basic_string_view{__str}, _VSTD::move(__out_it), __specs); +} + +# endif // _LIBCPP_STD_VER >= 23 + +} // namespace __formatter + +#endif //_LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FORMAT_FORMATTER_OUTPUT_H diff --git a/third_party/libcxx/__format/formatter_pointer.h b/third_party/libcxx/__format/formatter_pointer.h new file mode 100644 index 000000000..ab699ba65 --- /dev/null +++ b/third_party/libcxx/__format/formatter_pointer.h @@ -0,0 +1,72 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FORMAT_FORMATTER_POINTER_H +#define _LIBCPP___FORMAT_FORMATTER_POINTER_H + +#include <__availability> +#include <__config> +#include <__format/concepts.h> +#include <__format/format_parse_context.h> +#include <__format/formatter.h> +#include <__format/formatter_integral.h> +#include <__format/formatter_output.h> +#include <__format/parser_std_format_spec.h> +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS __formatter_pointer { +public: + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + typename _ParseContext::iterator __result = __parser_.__parse(__ctx, __format_spec::__fields_pointer); + __format_spec::__process_display_type_pointer(__parser_.__type_); + return __result; + } + + template + _LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator format(const void* __ptr, _FormatContext& __ctx) const { + __format_spec::__parsed_specifications<_CharT> __specs = __parser_.__get_parsed_std_specifications(__ctx); + __specs.__std_.__alternate_form_ = true; + __specs.__std_.__type_ = __format_spec::__type::__hexadecimal_lower_case; + return __formatter::__format_integer(reinterpret_cast(__ptr), __ctx, __specs); + } + + __format_spec::__parser<_CharT> __parser_{.__alignment_ = __format_spec::__alignment::__right}; +}; + +// [format.formatter.spec]/2.4 +// For each charT, the pointer type specializations template<> +// - struct formatter; +// - template<> struct formatter; +// - template<> struct formatter; +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter + : public __formatter_pointer<_CharT> {}; +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter : public __formatter_pointer<_CharT> { +}; +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter + : public __formatter_pointer<_CharT> {}; + +#endif //_LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FORMAT_FORMATTER_POINTER_H diff --git a/third_party/libcxx/__format/formatter_string.h b/third_party/libcxx/__format/formatter_string.h new file mode 100644 index 000000000..25a9e8ee4 --- /dev/null +++ b/third_party/libcxx/__format/formatter_string.h @@ -0,0 +1,155 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FORMAT_FORMATTER_STRING_H +#define _LIBCPP___FORMAT_FORMATTER_STRING_H + +#include <__availability> +#include <__config> +#include <__format/concepts.h> +#include <__format/format_parse_context.h> +#include <__format/formatter.h> +#include <__format/formatter_output.h> +#include <__format/parser_std_format_spec.h> +#include <__utility/move.h> +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS __formatter_string { +public: + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + typename _ParseContext::iterator __result = __parser_.__parse(__ctx, __format_spec::__fields_string); + __format_spec::__process_display_type_string(__parser_.__type_); + return __result; + } + + template + _LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator + format(basic_string_view<_CharT> __str, _FormatContext& __ctx) const { +# if _LIBCPP_STD_VER >= 23 + if (__parser_.__type_ == __format_spec::__type::__debug) + return __formatter::__format_escaped_string(__str, __ctx.out(), __parser_.__get_parsed_std_specifications(__ctx)); +# endif + + return __formatter::__write_string(__str, __ctx.out(), __parser_.__get_parsed_std_specifications(__ctx)); + } + +# if _LIBCPP_STD_VER >= 23 + _LIBCPP_HIDE_FROM_ABI constexpr void set_debug_format() { __parser_.__type_ = __format_spec::__type::__debug; } +# endif + + __format_spec::__parser<_CharT> __parser_{.__alignment_ = __format_spec::__alignment::__left}; +}; + +// Formatter const char*. +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter + : public __formatter_string<_CharT> { + using _Base = __formatter_string<_CharT>; + + template + _LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator format(const _CharT* __str, _FormatContext& __ctx) const { + _LIBCPP_ASSERT(__str, "The basic_format_arg constructor should have " + "prevented an invalid pointer."); + + __format_spec::__parsed_specifications<_CharT> __specs = _Base::__parser_.__get_parsed_std_specifications(__ctx); +# if _LIBCPP_STD_VER >= 23 + if (_Base::__parser_.__type_ == __format_spec::__type::__debug) + return __formatter::__format_escaped_string(basic_string_view<_CharT>{__str}, __ctx.out(), __specs); +# endif + + // When using a center or right alignment and the width option the length + // of __str must be known to add the padding upfront. This case is handled + // by the base class by converting the argument to a basic_string_view. + // + // When using left alignment and the width option the padding is added + // after outputting __str so the length can be determined while outputting + // __str. The same holds true for the precision, during outputting __str it + // can be validated whether the precision threshold has been reached. For + // now these optimizations aren't implemented. Instead the base class + // handles these options. + // TODO FMT Implement these improvements. + if (__specs.__has_width() || __specs.__has_precision()) + return __formatter::__write_string(basic_string_view<_CharT>{__str}, __ctx.out(), __specs); + + // No formatting required, copy the string to the output. + auto __out_it = __ctx.out(); + while (*__str) + *__out_it++ = *__str++; + return __out_it; + } +}; + +// Formatter char*. +template <__fmt_char_type _CharT> +struct _LIBCPP_TEMPLATE_VIS formatter<_CharT*, _CharT> + : public formatter { + using _Base = formatter; + + template + _LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator format(_CharT* __str, _FormatContext& __ctx) const { + return _Base::format(__str, __ctx); + } +}; + +// Formatter char[]. +template <__fmt_char_type _CharT, size_t _Size> +struct _LIBCPP_TEMPLATE_VIS formatter<_CharT[_Size], _CharT> + : public __formatter_string<_CharT> { + using _Base = __formatter_string<_CharT>; + + template + _LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator format(_CharT __str[_Size], _FormatContext& __ctx) const { + return _Base::format(basic_string_view<_CharT>(__str, _Size), __ctx); + } +}; + +// Formatter std::string. +template <__fmt_char_type _CharT, class _Traits, class _Allocator> +struct _LIBCPP_TEMPLATE_VIS formatter, _CharT> + : public __formatter_string<_CharT> { + using _Base = __formatter_string<_CharT>; + + template + _LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator + format(const basic_string<_CharT, _Traits, _Allocator>& __str, _FormatContext& __ctx) const { + // Drop _Traits and _Allocator to have one std::basic_string formatter. + return _Base::format(basic_string_view<_CharT>(__str.data(), __str.size()), __ctx); + } +}; + +// Formatter std::string_view. +template <__fmt_char_type _CharT, class _Traits> +struct _LIBCPP_TEMPLATE_VIS formatter, _CharT> + : public __formatter_string<_CharT> { + using _Base = __formatter_string<_CharT>; + + template + _LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator + format(basic_string_view<_CharT, _Traits> __str, _FormatContext& __ctx) const { + // Drop _Traits to have one std::basic_string_view formatter. + return _Base::format(basic_string_view<_CharT>(__str.data(), __str.size()), __ctx); + } +}; + +#endif //_LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FORMAT_FORMATTER_STRING_H diff --git a/third_party/libcxx/__format/formatter_tuple.h b/third_party/libcxx/__format/formatter_tuple.h new file mode 100644 index 000000000..92380f858 --- /dev/null +++ b/third_party/libcxx/__format/formatter_tuple.h @@ -0,0 +1,155 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FORMAT_FORMATTER_TUPLE_H +#define _LIBCPP___FORMAT_FORMATTER_TUPLE_H + +#include <__algorithm/ranges_copy.h> +#include <__availability> +#include <__chrono/statically_widen.h> +#include <__config> +#include <__format/buffer.h> +#include <__format/concepts.h> +#include <__format/format_args.h> +#include <__format/format_context.h> +#include <__format/format_error.h> +#include <__format/format_parse_context.h> +#include <__format/formatter.h> +#include <__format/formatter_output.h> +#include <__format/parser_std_format_spec.h> +#include <__iterator/back_insert_iterator.h> +#include <__type_traits/remove_cvref.h> +#include <__utility/integer_sequence.h> +#include <__utility/pair.h> +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 23 + +template <__fmt_char_type _CharT, class _Tuple, formattable<_CharT>... _Args> +struct _LIBCPP_TEMPLATE_VIS __formatter_tuple { + _LIBCPP_HIDE_FROM_ABI constexpr void set_separator(basic_string_view<_CharT> __separator) noexcept { + __separator_ = __separator; + } + _LIBCPP_HIDE_FROM_ABI constexpr void + set_brackets(basic_string_view<_CharT> __opening_bracket, basic_string_view<_CharT> __closing_bracket) noexcept { + __opening_bracket_ = __opening_bracket; + __closing_bracket_ = __closing_bracket; + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + auto __begin = __parser_.__parse(__ctx, __format_spec::__fields_tuple); + + auto __end = __ctx.end(); + if (__begin != __end) { + if (*__begin == _CharT('m')) { + if constexpr (sizeof...(_Args) == 2) { + set_separator(_LIBCPP_STATICALLY_WIDEN(_CharT, ": ")); + set_brackets({}, {}); + ++__begin; + } else + std::__throw_format_error("The format specifier m requires a pair or a two-element tuple"); + } else if (*__begin == _CharT('n')) { + set_brackets({}, {}); + ++__begin; + } + } + + if (__begin != __end && *__begin != _CharT('}')) + std::__throw_format_error("The format-spec should consume the input or end with a '}'"); + + __ctx.advance_to(__begin); + + // [format.tuple]/7 + // ... For each element e in underlying_, if e.set_debug_format() + // is a valid expression, calls e.set_debug_format(). + std::__for_each_index_sequence(make_index_sequence(), [&] { + auto& __formatter = std::get<_Index>(__underlying_); + __formatter.parse(__ctx); + // Unlike the range_formatter we don't guard against evil parsers. Since + // this format-spec never has a format-spec for the underlying type + // adding the test would give additional overhead. + std::__set_debug_format(__formatter); + }); + + return __begin; + } + + template + typename _FormatContext::iterator _LIBCPP_HIDE_FROM_ABI + format(conditional_t<(formattable && ...), const _Tuple&, _Tuple&> __tuple, + _FormatContext& __ctx) const { + __format_spec::__parsed_specifications<_CharT> __specs = __parser_.__get_parsed_std_specifications(__ctx); + + if (!__specs.__has_width()) + return __format_tuple(__tuple, __ctx); + + // The size of the buffer needed is: + // - open bracket characters + // - close bracket character + // - n elements where every element may have a different size + // - (n -1) separators + // The size of the element is hard to predict, knowing the type helps but + // it depends on the format-spec. As an initial estimate we guess 6 + // characters. + // Typically both brackets are 1 character and the separator is 2 + // characters. Which means there will be + // (n - 1) * 2 + 1 + 1 = n * 2 character + // So estimate 8 times the range size as buffer. + __format::__retarget_buffer<_CharT> __buffer{8 * tuple_size_v<_Tuple>}; + basic_format_context::__iterator, _CharT> __c{ + __buffer.__make_output_iterator(), __ctx}; + + __format_tuple(__tuple, __c); + + return __formatter::__write_string_no_precision(basic_string_view{__buffer.__view()}, __ctx.out(), __specs); + } + + template + _LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator __format_tuple(auto&& __tuple, _FormatContext& __ctx) const { + __ctx.advance_to(std::ranges::copy(__opening_bracket_, __ctx.out()).out); + + std::__for_each_index_sequence(make_index_sequence(), [&] { + if constexpr (_Index) + __ctx.advance_to(std::ranges::copy(__separator_, __ctx.out()).out); + __ctx.advance_to(std::get<_Index>(__underlying_).format(std::get<_Index>(__tuple), __ctx)); + }); + + return std::ranges::copy(__closing_bracket_, __ctx.out()).out; + } + + __format_spec::__parser<_CharT> __parser_{.__alignment_ = __format_spec::__alignment::__left}; + +private: + tuple, _CharT>...> __underlying_; + basic_string_view<_CharT> __separator_ = _LIBCPP_STATICALLY_WIDEN(_CharT, ", "); + basic_string_view<_CharT> __opening_bracket_ = _LIBCPP_STATICALLY_WIDEN(_CharT, "("); + basic_string_view<_CharT> __closing_bracket_ = _LIBCPP_STATICALLY_WIDEN(_CharT, ")"); +}; + +template <__fmt_char_type _CharT, formattable<_CharT>... _Args> +struct _LIBCPP_TEMPLATE_VIS formatter, _CharT> + : public __formatter_tuple<_CharT, pair<_Args...>, _Args...> {}; + +template <__fmt_char_type _CharT, formattable<_CharT>... _Args> +struct _LIBCPP_TEMPLATE_VIS formatter, _CharT> + : public __formatter_tuple<_CharT, tuple<_Args...>, _Args...> {}; + +#endif //_LIBCPP_STD_VER >= 23 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FORMAT_FORMATTER_TUPLE_H diff --git a/third_party/libcxx/__format/parser_std_format_spec.h b/third_party/libcxx/__format/parser_std_format_spec.h new file mode 100644 index 000000000..f3f7bce81 --- /dev/null +++ b/third_party/libcxx/__format/parser_std_format_spec.h @@ -0,0 +1,1019 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FORMAT_PARSER_STD_FORMAT_SPEC_H +#define _LIBCPP___FORMAT_PARSER_STD_FORMAT_SPEC_H + +/// \file Contains the std-format-spec parser. +/// +/// Most of the code can be reused in the chrono-format-spec. +/// This header has some support for the chrono-format-spec since it doesn't +/// affect the std-format-spec. + +#include <__algorithm/copy_n.h> +#include <__algorithm/find_if.h> +#include <__algorithm/min.h> +#include <__assert> +#include <__concepts/arithmetic.h> +#include <__concepts/same_as.h> +#include <__config> +#include <__debug> +#include <__format/format_arg.h> +#include <__format/format_error.h> +#include <__format/format_parse_context.h> +#include <__format/format_string.h> +#include <__format/unicode.h> +#include <__format/width_estimation_table.h> +#include <__iterator/concepts.h> +#include <__iterator/readable_traits.h> // iter_value_t +#include <__memory/addressof.h> +#include <__type_traits/common_type.h> +#include <__type_traits/is_trivially_copyable.h> +#include <__variant/monostate.h> +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +namespace __format_spec { + +template +_LIBCPP_HIDE_FROM_ABI constexpr __format::__parse_number_result<_Iterator> +__parse_arg_id(_Iterator __begin, _Iterator __end, _ParseContext& __ctx) { + using _CharT = iter_value_t<_Iterator>; + // This function is a wrapper to call the real parser. But it does the + // validation for the pre-conditions and post-conditions. + if (__begin == __end) + std::__throw_format_error("End of input while parsing format-spec arg-id"); + + __format::__parse_number_result __r = __format::__parse_arg_id(__begin, __end, __ctx); + + if (__r.__last == __end || *__r.__last != _CharT('}')) + std::__throw_format_error("Invalid arg-id"); + + ++__r.__last; + return __r; +} + +template +_LIBCPP_HIDE_FROM_ABI constexpr uint32_t +__substitute_arg_id(basic_format_arg<_Context> __format_arg) { + // [format.string.std]/8 + // If the corresponding formatting argument is not of integral type... + // This wording allows char and bool too. LWG-3720 changes the wording to + // If the corresponding formatting argument is not of standard signed or + // unsigned integer type, + // This means the 128-bit will not be valid anymore. + // TODO FMT Verify this resolution is accepted and add a test to verify + // 128-bit integrals fail and switch to visit_format_arg. + return _VSTD::__visit_format_arg( + [](auto __arg) -> uint32_t { + using _Type = decltype(__arg); + if constexpr (same_as<_Type, monostate>) + std::__throw_format_error("Argument index out of bounds"); + + // [format.string.std]/8 + // If { arg-idopt } is used in a width or precision, the value of the + // corresponding formatting argument is used in its place. If the + // corresponding formatting argument is not of standard signed or unsigned + // integer type, or its value is negative for precision or non-positive for + // width, an exception of type format_error is thrown. + // + // When an integral is used in a format function, it is stored as one of + // the types checked below. Other integral types are promoted. For example, + // a signed char is stored as an int. + if constexpr (same_as<_Type, int> || same_as<_Type, unsigned int> || // + same_as<_Type, long long> || same_as<_Type, unsigned long long>) { + if constexpr (signed_integral<_Type>) { + if (__arg < 0) + std::__throw_format_error("A format-spec arg-id replacement shouldn't have a negative value"); + } + + using _CT = common_type_t<_Type, decltype(__format::__number_max)>; + if (static_cast<_CT>(__arg) > static_cast<_CT>(__format::__number_max)) + std::__throw_format_error("A format-spec arg-id replacement exceeds the maximum supported value"); + + return __arg; + } else + std::__throw_format_error("Replacement argument isn't a standard signed or unsigned integer type"); + }, + __format_arg); +} + +/// These fields are a filter for which elements to parse. +/// +/// They default to false so when a new field is added it needs to be opted in +/// explicitly. +// TODO FMT Use an ABI tag for this struct. +struct __fields { + uint8_t __sign_ : 1 {false}; + uint8_t __alternate_form_ : 1 {false}; + uint8_t __zero_padding_ : 1 {false}; + uint8_t __precision_ : 1 {false}; + uint8_t __locale_specific_form_ : 1 {false}; + uint8_t __type_ : 1 {false}; + // Determines the valid values for fill. + // + // Originally the fill could be any character except { and }. Range-based + // formatters use the colon to mark the beginning of the + // underlying-format-spec. To avoid parsing ambiguities these formatter + // specializations prohibit the use of the colon as a fill character. + uint8_t __use_range_fill_ : 1 {false}; +}; + +// By not placing this constant in the formatter class it's not duplicated for +// char and wchar_t. +inline constexpr __fields __fields_integral{ + .__sign_ = true, + .__alternate_form_ = true, + .__zero_padding_ = true, + .__locale_specific_form_ = true, + .__type_ = true}; +inline constexpr __fields __fields_floating_point{ + .__sign_ = true, + .__alternate_form_ = true, + .__zero_padding_ = true, + .__precision_ = true, + .__locale_specific_form_ = true, + .__type_ = true}; +inline constexpr __fields __fields_string{.__precision_ = true, .__type_ = true}; +inline constexpr __fields __fields_pointer{.__type_ = true}; + +# if _LIBCPP_STD_VER >= 23 +inline constexpr __fields __fields_tuple{.__use_range_fill_ = true}; +inline constexpr __fields __fields_range{.__use_range_fill_ = true}; +inline constexpr __fields __fields_fill_align_width{}; +# endif + +enum class _LIBCPP_ENUM_VIS __alignment : uint8_t { + /// No alignment is set in the format string. + __default, + __left, + __center, + __right, + __zero_padding +}; + +enum class _LIBCPP_ENUM_VIS __sign : uint8_t { + /// No sign is set in the format string. + /// + /// The sign isn't allowed for certain format-types. By using this value + /// it's possible to detect whether or not the user explicitly set the sign + /// flag. For formatting purposes it behaves the same as \ref __minus. + __default, + __minus, + __plus, + __space +}; + +enum class _LIBCPP_ENUM_VIS __type : uint8_t { + __default, + __string, + __binary_lower_case, + __binary_upper_case, + __octal, + __decimal, + __hexadecimal_lower_case, + __hexadecimal_upper_case, + __pointer, + __char, + __hexfloat_lower_case, + __hexfloat_upper_case, + __scientific_lower_case, + __scientific_upper_case, + __fixed_lower_case, + __fixed_upper_case, + __general_lower_case, + __general_upper_case, + __debug +}; + +struct __std { + __alignment __alignment_ : 3; + __sign __sign_ : 2; + bool __alternate_form_ : 1; + bool __locale_specific_form_ : 1; + __type __type_; +}; + +struct __chrono { + __alignment __alignment_ : 3; + bool __locale_specific_form_ : 1; + bool __hour_ : 1; + bool __weekday_name_ : 1; + bool __weekday_ : 1; + bool __day_of_year_ : 1; + bool __week_of_year_ : 1; + bool __month_name_ : 1; +}; + +// The fill UCS scalar value. +// +// This is always an array, with 1, 2, or 4 elements. +// The size of the data structure is always 32-bits. +template +struct __code_point; + +template <> +struct __code_point { + char __data[4] = {' '}; +}; + +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +template <> +struct __code_point { + wchar_t __data[4 / sizeof(wchar_t)] = {L' '}; +}; +# endif + +/// Contains the parsed formatting specifications. +/// +/// This contains information for both the std-format-spec and the +/// chrono-format-spec. This results in some unused members for both +/// specifications. However these unused members don't increase the size +/// of the structure. +/// +/// This struct doesn't cross ABI boundaries so its layout doesn't need to be +/// kept stable. +template +struct __parsed_specifications { + union { + // The field __alignment_ is the first element in __std_ and __chrono_. + // This allows the code to always inspect this value regards which member + // of the union is the active member [class.union.general]/2. + // + // This is needed since the generic output routines handle the alignment of + // the output. + __alignment __alignment_ : 3; + __std __std_; + __chrono __chrono_; + }; + + /// The requested width. + /// + /// When the format-spec used an arg-id for this field it has already been + /// replaced with the value of that arg-id. + int32_t __width_; + + /// The requested precision. + /// + /// When the format-spec used an arg-id for this field it has already been + /// replaced with the value of that arg-id. + int32_t __precision_; + + __code_point<_CharT> __fill_; + + _LIBCPP_HIDE_FROM_ABI constexpr bool __has_width() const { return __width_ > 0; } + + _LIBCPP_HIDE_FROM_ABI constexpr bool __has_precision() const { return __precision_ >= 0; } +}; + +// Validate the struct is small and cheap to copy since the struct is passed by +// value in formatting functions. +static_assert(sizeof(__parsed_specifications) == 16); +static_assert(is_trivially_copyable_v<__parsed_specifications>); +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +static_assert(sizeof(__parsed_specifications) == 16); +static_assert(is_trivially_copyable_v<__parsed_specifications>); +# endif + +/// The parser for the std-format-spec. +/// +/// Note this class is a member of std::formatter specializations. It's +/// expected developers will create their own formatter specializations that +/// inherit from the std::formatter specializations. This means this class +/// must be ABI stable. To aid the stability the unused bits in the class are +/// set to zero. That way they can be repurposed if a future revision of the +/// Standards adds new fields to std-format-spec. +template +class _LIBCPP_TEMPLATE_VIS __parser { +public: + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator __parse(_ParseContext& __ctx, __fields __fields) { + auto __begin = __ctx.begin(); + auto __end = __ctx.end(); + if (__begin == __end) + return __begin; + + if (__parse_fill_align(__begin, __end, __fields.__use_range_fill_) && __begin == __end) + return __begin; + + if (__fields.__sign_ && __parse_sign(__begin) && __begin == __end) + return __begin; + + if (__fields.__alternate_form_ && __parse_alternate_form(__begin) && __begin == __end) + return __begin; + + if (__fields.__zero_padding_ && __parse_zero_padding(__begin) && __begin == __end) + return __begin; + + if (__parse_width(__begin, __end, __ctx) && __begin == __end) + return __begin; + + if (__fields.__precision_ && __parse_precision(__begin, __end, __ctx) && __begin == __end) + return __begin; + + if (__fields.__locale_specific_form_ && __parse_locale_specific_form(__begin) && __begin == __end) + return __begin; + + if (__fields.__type_) { + __parse_type(__begin); + + // When __type_ is false the calling parser is expected to do additional + // parsing. In that case that parser should do the end of format string + // validation. + if (__begin != __end && *__begin != _CharT('}')) + std::__throw_format_error("The format-spec should consume the input or end with a '}'"); + } + + return __begin; + } + + /// \returns the `__parsed_specifications` with the resolved dynamic sizes.. + _LIBCPP_HIDE_FROM_ABI + __parsed_specifications<_CharT> __get_parsed_std_specifications(auto& __ctx) const { + return __parsed_specifications<_CharT>{ + .__std_ = __std{.__alignment_ = __alignment_, + .__sign_ = __sign_, + .__alternate_form_ = __alternate_form_, + .__locale_specific_form_ = __locale_specific_form_, + .__type_ = __type_}, + .__width_{__get_width(__ctx)}, + .__precision_{__get_precision(__ctx)}, + .__fill_{__fill_}}; + } + + _LIBCPP_HIDE_FROM_ABI __parsed_specifications<_CharT> __get_parsed_chrono_specifications(auto& __ctx) const { + return __parsed_specifications<_CharT>{ + .__chrono_ = + __chrono{.__alignment_ = __alignment_, + .__locale_specific_form_ = __locale_specific_form_, + .__hour_ = __hour_, + .__weekday_name_ = __weekday_name_, + .__weekday_ = __weekday_, + .__day_of_year_ = __day_of_year_, + .__week_of_year_ = __week_of_year_, + .__month_name_ = __month_name_}, + .__width_{__get_width(__ctx)}, + .__precision_{__get_precision(__ctx)}, + .__fill_{__fill_}}; + } + + __alignment __alignment_ : 3 {__alignment::__default}; + __sign __sign_ : 2 {__sign::__default}; + bool __alternate_form_ : 1 {false}; + bool __locale_specific_form_ : 1 {false}; + bool __reserved_0_ : 1 {false}; + __type __type_{__type::__default}; + + // These flags are only used for formatting chrono. Since the struct has + // padding space left it's added to this structure. + bool __hour_ : 1 {false}; + + bool __weekday_name_ : 1 {false}; + bool __weekday_ : 1 {false}; + + bool __day_of_year_ : 1 {false}; + bool __week_of_year_ : 1 {false}; + + bool __month_name_ : 1 {false}; + + uint8_t __reserved_1_ : 2 {0}; + uint8_t __reserved_2_ : 6 {0}; + // These two flags are only used internally and not part of the + // __parsed_specifications. Therefore put them at the end. + bool __width_as_arg_ : 1 {false}; + bool __precision_as_arg_ : 1 {false}; + + /// The requested width, either the value or the arg-id. + int32_t __width_{0}; + + /// The requested precision, either the value or the arg-id. + int32_t __precision_{-1}; + + __code_point<_CharT> __fill_{}; + +private: + _LIBCPP_HIDE_FROM_ABI constexpr bool __parse_alignment(_CharT __c) { + switch (__c) { + case _CharT('<'): + __alignment_ = __alignment::__left; + return true; + + case _CharT('^'): + __alignment_ = __alignment::__center; + return true; + + case _CharT('>'): + __alignment_ = __alignment::__right; + return true; + } + return false; + } + + _LIBCPP_HIDE_FROM_ABI constexpr void __validate_fill_character(_CharT __fill, bool __use_range_fill) { + // The forbidden fill characters all code points formed from a single code unit, thus the + // check can be omitted when more code units are used. + if (__use_range_fill && (__fill == _CharT('{') || __fill == _CharT('}') || __fill == _CharT(':'))) + std::__throw_format_error("The format-spec range-fill field contains an invalid character"); + else if (__fill == _CharT('{') || __fill == _CharT('}')) + std::__throw_format_error("The format-spec fill field contains an invalid character"); + } + +# ifndef _LIBCPP_HAS_NO_UNICODE + // range-fill and tuple-fill are identical + template + requires same_as<_CharT, char> +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS + || (same_as<_CharT, wchar_t> && sizeof(wchar_t) == 2) +# endif + _LIBCPP_HIDE_FROM_ABI constexpr bool __parse_fill_align(_Iterator& __begin, _Iterator __end, bool __use_range_fill) { + _LIBCPP_ASSERT(__begin != __end, + "when called with an empty input the function will cause " + "undefined behavior by evaluating data not in the input"); + __unicode::__code_point_view<_CharT> __view{__begin, __end}; + __unicode::__consume_result __consumed = __view.__consume(); + if (__consumed.__status != __unicode::__consume_result::__ok) + std::__throw_format_error("The format-spec contains malformed Unicode characters"); + + if (__view.__position() < __end && __parse_alignment(*__view.__position())) { + ptrdiff_t __code_units = __view.__position() - __begin; + if (__code_units == 1) + // The forbidden fill characters all are code points encoded + // in one code unit, thus the check can be omitted when more + // code units are used. + __validate_fill_character(*__begin, __use_range_fill); + + std::copy_n(__begin, __code_units, std::addressof(__fill_.__data[0])); + __begin += __code_units + 1; + return true; + } + + if (!__parse_alignment(*__begin)) + return false; + + ++__begin; + return true; + } + +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS + template + requires(same_as<_CharT, wchar_t> && sizeof(wchar_t) == 4) + _LIBCPP_HIDE_FROM_ABI constexpr bool __parse_fill_align(_Iterator& __begin, _Iterator __end, bool __use_range_fill) { + _LIBCPP_ASSERT(__begin != __end, + "when called with an empty input the function will cause " + "undefined behavior by evaluating data not in the input"); + if (__begin + 1 != __end && __parse_alignment(*(__begin + 1))) { + if (!__unicode::__is_scalar_value(*__begin)) + std::__throw_format_error("The fill character contains an invalid value"); + + __validate_fill_character(*__begin, __use_range_fill); + + __fill_.__data[0] = *__begin; + __begin += 2; + return true; + } + + if (!__parse_alignment(*__begin)) + return false; + + ++__begin; + return true; + } + +# endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS + +# else // _LIBCPP_HAS_NO_UNICODE + // range-fill and tuple-fill are identical + template + _LIBCPP_HIDE_FROM_ABI constexpr bool __parse_fill_align(_Iterator& __begin, _Iterator __end, bool __use_range_fill) { + _LIBCPP_ASSERT(__begin != __end, + "when called with an empty input the function will cause " + "undefined behavior by evaluating data not in the input"); + if (__begin + 1 != __end) { + if (__parse_alignment(*(__begin + 1))) { + __validate_fill_character(*__begin, __use_range_fill); + + __fill_.__data[0] = *__begin; + __begin += 2; + return true; + } + } + + if (!__parse_alignment(*__begin)) + return false; + + ++__begin; + return true; + } + +# endif // _LIBCPP_HAS_NO_UNICODE + + template + _LIBCPP_HIDE_FROM_ABI constexpr bool __parse_sign(_Iterator& __begin) { + switch (*__begin) { + case _CharT('-'): + __sign_ = __sign::__minus; + break; + case _CharT('+'): + __sign_ = __sign::__plus; + break; + case _CharT(' '): + __sign_ = __sign::__space; + break; + default: + return false; + } + ++__begin; + return true; + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr bool __parse_alternate_form(_Iterator& __begin) { + if (*__begin != _CharT('#')) + return false; + + __alternate_form_ = true; + ++__begin; + return true; + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr bool __parse_zero_padding(_Iterator& __begin) { + if (*__begin != _CharT('0')) + return false; + + if (__alignment_ == __alignment::__default) + __alignment_ = __alignment::__zero_padding; + ++__begin; + return true; + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr bool __parse_width(_Iterator& __begin, _Iterator __end, auto& __ctx) { + if (*__begin == _CharT('0')) + std::__throw_format_error("A format-spec width field shouldn't have a leading zero"); + + if (*__begin == _CharT('{')) { + __format::__parse_number_result __r = __format_spec::__parse_arg_id(++__begin, __end, __ctx); + __width_as_arg_ = true; + __width_ = __r.__value; + __begin = __r.__last; + return true; + } + + if (*__begin < _CharT('0') || *__begin > _CharT('9')) + return false; + + __format::__parse_number_result __r = __format::__parse_number(__begin, __end); + __width_ = __r.__value; + _LIBCPP_ASSERT(__width_ != 0, "A zero value isn't allowed and should be impossible, " + "due to validations in this function"); + __begin = __r.__last; + return true; + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr bool __parse_precision(_Iterator& __begin, _Iterator __end, auto& __ctx) { + if (*__begin != _CharT('.')) + return false; + + ++__begin; + if (__begin == __end) + std::__throw_format_error("End of input while parsing format-spec precision"); + + if (*__begin == _CharT('{')) { + __format::__parse_number_result __arg_id = __format_spec::__parse_arg_id(++__begin, __end, __ctx); + __precision_as_arg_ = true; + __precision_ = __arg_id.__value; + __begin = __arg_id.__last; + return true; + } + + if (*__begin < _CharT('0') || *__begin > _CharT('9')) + std::__throw_format_error("The format-spec precision field doesn't contain a value or arg-id"); + + __format::__parse_number_result __r = __format::__parse_number(__begin, __end); + __precision_ = __r.__value; + __precision_as_arg_ = false; + __begin = __r.__last; + return true; + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr bool __parse_locale_specific_form(_Iterator& __begin) { + if (*__begin != _CharT('L')) + return false; + + __locale_specific_form_ = true; + ++__begin; + return true; + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr void __parse_type(_Iterator& __begin) { + // Determines the type. It does not validate whether the selected type is + // valid. Most formatters have optional fields that are only allowed for + // certain types. These parsers need to do validation after the type has + // been parsed. So its easier to implement the validation for all types in + // the specific parse function. + switch (*__begin) { + case 'A': + __type_ = __type::__hexfloat_upper_case; + break; + case 'B': + __type_ = __type::__binary_upper_case; + break; + case 'E': + __type_ = __type::__scientific_upper_case; + break; + case 'F': + __type_ = __type::__fixed_upper_case; + break; + case 'G': + __type_ = __type::__general_upper_case; + break; + case 'X': + __type_ = __type::__hexadecimal_upper_case; + break; + case 'a': + __type_ = __type::__hexfloat_lower_case; + break; + case 'b': + __type_ = __type::__binary_lower_case; + break; + case 'c': + __type_ = __type::__char; + break; + case 'd': + __type_ = __type::__decimal; + break; + case 'e': + __type_ = __type::__scientific_lower_case; + break; + case 'f': + __type_ = __type::__fixed_lower_case; + break; + case 'g': + __type_ = __type::__general_lower_case; + break; + case 'o': + __type_ = __type::__octal; + break; + case 'p': + __type_ = __type::__pointer; + break; + case 's': + __type_ = __type::__string; + break; + case 'x': + __type_ = __type::__hexadecimal_lower_case; + break; +# if _LIBCPP_STD_VER >= 23 + case '?': + __type_ = __type::__debug; + break; +# endif + default: + return; + } + ++__begin; + } + + _LIBCPP_HIDE_FROM_ABI + int32_t __get_width(auto& __ctx) const { + if (!__width_as_arg_) + return __width_; + + return __format_spec::__substitute_arg_id(__ctx.arg(__width_)); + } + + _LIBCPP_HIDE_FROM_ABI + int32_t __get_precision(auto& __ctx) const { + if (!__precision_as_arg_) + return __precision_; + + return __format_spec::__substitute_arg_id(__ctx.arg(__precision_)); + } +}; + +// Validates whether the reserved bitfields don't change the size. +static_assert(sizeof(__parser) == 16); +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +static_assert(sizeof(__parser) == 16); +# endif + +_LIBCPP_HIDE_FROM_ABI constexpr void __process_display_type_string(__format_spec::__type __type) { + switch (__type) { + case __format_spec::__type::__default: + case __format_spec::__type::__string: + case __format_spec::__type::__debug: + break; + + default: + std::__throw_format_error("The format-spec type has a type not supported for a string argument"); + } +} + +template +_LIBCPP_HIDE_FROM_ABI constexpr void __process_display_type_bool_string(__parser<_CharT>& __parser) { + if (__parser.__sign_ != __sign::__default) + std::__throw_format_error("A sign field isn't allowed in this format-spec"); + + if (__parser.__alternate_form_) + std::__throw_format_error("An alternate form field isn't allowed in this format-spec"); + + if (__parser.__alignment_ == __alignment::__zero_padding) + std::__throw_format_error("A zero-padding field isn't allowed in this format-spec"); + + if (__parser.__alignment_ == __alignment::__default) + __parser.__alignment_ = __alignment::__left; +} + +template +_LIBCPP_HIDE_FROM_ABI constexpr void __process_display_type_char(__parser<_CharT>& __parser) { + __format_spec::__process_display_type_bool_string(__parser); +} + +template +_LIBCPP_HIDE_FROM_ABI constexpr void __process_parsed_bool(__parser<_CharT>& __parser) { + switch (__parser.__type_) { + case __format_spec::__type::__default: + case __format_spec::__type::__string: + __format_spec::__process_display_type_bool_string(__parser); + break; + + case __format_spec::__type::__binary_lower_case: + case __format_spec::__type::__binary_upper_case: + case __format_spec::__type::__octal: + case __format_spec::__type::__decimal: + case __format_spec::__type::__hexadecimal_lower_case: + case __format_spec::__type::__hexadecimal_upper_case: + break; + + default: + std::__throw_format_error("The format-spec type has a type not supported for a bool argument"); + } +} + +template +_LIBCPP_HIDE_FROM_ABI constexpr void __process_parsed_char(__parser<_CharT>& __parser) { + switch (__parser.__type_) { + case __format_spec::__type::__default: + case __format_spec::__type::__char: + case __format_spec::__type::__debug: + __format_spec::__process_display_type_char(__parser); + break; + + case __format_spec::__type::__binary_lower_case: + case __format_spec::__type::__binary_upper_case: + case __format_spec::__type::__octal: + case __format_spec::__type::__decimal: + case __format_spec::__type::__hexadecimal_lower_case: + case __format_spec::__type::__hexadecimal_upper_case: + break; + + default: + std::__throw_format_error("The format-spec type has a type not supported for a char argument"); + } +} + +template +_LIBCPP_HIDE_FROM_ABI constexpr void __process_parsed_integer(__parser<_CharT>& __parser) { + switch (__parser.__type_) { + case __format_spec::__type::__default: + case __format_spec::__type::__binary_lower_case: + case __format_spec::__type::__binary_upper_case: + case __format_spec::__type::__octal: + case __format_spec::__type::__decimal: + case __format_spec::__type::__hexadecimal_lower_case: + case __format_spec::__type::__hexadecimal_upper_case: + break; + + case __format_spec::__type::__char: + __format_spec::__process_display_type_char(__parser); + break; + + default: + std::__throw_format_error("The format-spec type has a type not supported for an integer argument"); + } +} + +template +_LIBCPP_HIDE_FROM_ABI constexpr void __process_parsed_floating_point(__parser<_CharT>& __parser) { + switch (__parser.__type_) { + case __format_spec::__type::__default: + case __format_spec::__type::__hexfloat_lower_case: + case __format_spec::__type::__hexfloat_upper_case: + // Precision specific behavior will be handled later. + break; + case __format_spec::__type::__scientific_lower_case: + case __format_spec::__type::__scientific_upper_case: + case __format_spec::__type::__fixed_lower_case: + case __format_spec::__type::__fixed_upper_case: + case __format_spec::__type::__general_lower_case: + case __format_spec::__type::__general_upper_case: + if (!__parser.__precision_as_arg_ && __parser.__precision_ == -1) + // Set the default precision for the call to to_chars. + __parser.__precision_ = 6; + break; + + default: + std::__throw_format_error("The format-spec type has a type not supported for a floating-point argument"); + } +} + +_LIBCPP_HIDE_FROM_ABI constexpr void __process_display_type_pointer(__format_spec::__type __type) { + switch (__type) { + case __format_spec::__type::__default: + case __format_spec::__type::__pointer: + break; + + default: + std::__throw_format_error("The format-spec type has a type not supported for a pointer argument"); + } +} + +template +struct __column_width_result { + /// The number of output columns. + size_t __width_; + /// One beyond the last code unit used in the estimation. + /// + /// This limits the original output to fit in the wanted number of columns. + _Iterator __last_; +}; + +template +__column_width_result(size_t, _Iterator) -> __column_width_result<_Iterator>; + +/// Since a column width can be two it's possible that the requested column +/// width can't be achieved. Depending on the intended usage the policy can be +/// selected. +/// - When used as precision the maximum width may not be exceeded and the +/// result should be "rounded down" to the previous boundary. +/// - When used as a width we're done once the minimum is reached, but +/// exceeding is not an issue. Rounding down is an issue since that will +/// result in writing fill characters. Therefore the result needs to be +/// "rounded up". +enum class __column_width_rounding { __down, __up }; + +# ifndef _LIBCPP_HAS_NO_UNICODE + +namespace __detail { +template +_LIBCPP_HIDE_FROM_ABI constexpr __column_width_result<_Iterator> __estimate_column_width_grapheme_clustering( + _Iterator __first, _Iterator __last, size_t __maximum, __column_width_rounding __rounding) noexcept { + using _CharT = iter_value_t<_Iterator>; + __unicode::__extended_grapheme_cluster_view<_CharT> __view{__first, __last}; + + __column_width_result<_Iterator> __result{0, __first}; + while (__result.__last_ != __last && __result.__width_ <= __maximum) { + typename __unicode::__extended_grapheme_cluster_view<_CharT>::__cluster __cluster = __view.__consume(); + int __width = __width_estimation_table::__estimated_width(__cluster.__code_point_); + + // When the next entry would exceed the maximum width the previous width + // might be returned. For example when a width of 100 is requested the + // returned width might be 99, since the next code point has an estimated + // column width of 2. This depends on the rounding flag. + // When the maximum is exceeded the loop will abort the next iteration. + if (__rounding == __column_width_rounding::__down && __result.__width_ + __width > __maximum) + return __result; + + __result.__width_ += __width; + __result.__last_ = __cluster.__last_; + } + + return __result; +} + +} // namespace __detail + +// Unicode can be stored in several formats: UTF-8, UTF-16, and UTF-32. +// Depending on format the relation between the number of code units stored and +// the number of output columns differs. The first relation is the number of +// code units forming a code point. (The text assumes the code units are +// unsigned.) +// - UTF-8 The number of code units is between one and four. The first 127 +// Unicode code points match the ASCII character set. When the highest bit is +// set it means the code point has more than one code unit. +// - UTF-16: The number of code units is between 1 and 2. When the first +// code unit is in the range [0xd800,0xdfff) it means the code point uses two +// code units. +// - UTF-32: The number of code units is always one. +// +// The code point to the number of columns is specified in +// [format.string.std]/11. This list might change in the future. +// +// Another thing to be taken into account is Grapheme clustering. This means +// that in some cases multiple code points are combined one element in the +// output. For example: +// - an ASCII character with a combined diacritical mark +// - an emoji with a skin tone modifier +// - a group of combined people emoji to create a family +// - a combination of flag emoji +// +// See also: +// - [format.string.general]/11 +// - https://en.wikipedia.org/wiki/UTF-8#Encoding +// - https://en.wikipedia.org/wiki/UTF-16#U+D800_to_U+DFFF + +_LIBCPP_HIDE_FROM_ABI constexpr bool __is_ascii(char32_t __c) { return __c < 0x80; } + +/// Determines the number of output columns needed to render the input. +/// +/// \note When the scanner encounters malformed Unicode it acts as-if every +/// code unit is a one column code point. Typically a terminal uses the same +/// strategy and replaces every malformed code unit with a one column +/// replacement character. +/// +/// \param __first Points to the first element of the input range. +/// \param __last Points beyond the last element of the input range. +/// \param __maximum The maximum number of output columns. The returned number +/// of estimated output columns will not exceed this value. +/// \param __rounding Selects the rounding method. +/// \c __down result.__width_ <= __maximum +/// \c __up result.__width_ <= __maximum + 1 +template ::const_iterator> +_LIBCPP_HIDE_FROM_ABI constexpr __column_width_result<_Iterator> __estimate_column_width( + basic_string_view<_CharT> __str, size_t __maximum, __column_width_rounding __rounding) noexcept { + // The width estimation is done in two steps: + // - Quickly process for the ASCII part. ASCII has the following properties + // - One code unit is one code point + // - Every code point has an estimated width of one + // - When needed it will a Unicode Grapheme clustering algorithm to find + // the proper place for truncation. + + if (__str.empty() || __maximum == 0) + return {0, __str.begin()}; + + // ASCII has one caveat; when an ASCII character is followed by a non-ASCII + // character they might be part of an extended grapheme cluster. For example: + // an ASCII letter and a COMBINING ACUTE ACCENT + // The truncate should happen after the COMBINING ACUTE ACCENT. Therefore we + // need to scan one code unit beyond the requested precision. When this code + // unit is non-ASCII we omit the current code unit and let the Grapheme + // clustering algorithm do its work. + auto __it = __str.begin(); + if (__format_spec::__is_ascii(*__it)) { + do { + --__maximum; + ++__it; + if (__it == __str.end()) + return {__str.size(), __str.end()}; + + if (__maximum == 0) { + if (__format_spec::__is_ascii(*__it)) + return {static_cast(__it - __str.begin()), __it}; + + break; + } + } while (__format_spec::__is_ascii(*__it)); + --__it; + ++__maximum; + } + + ptrdiff_t __ascii_size = __it - __str.begin(); + __column_width_result __result = + __detail::__estimate_column_width_grapheme_clustering(__it, __str.end(), __maximum, __rounding); + + __result.__width_ += __ascii_size; + return __result; +} +# else // !defined(_LIBCPP_HAS_NO_UNICODE) +template +_LIBCPP_HIDE_FROM_ABI constexpr __column_width_result::const_iterator> +__estimate_column_width(basic_string_view<_CharT> __str, size_t __maximum, __column_width_rounding) noexcept { + // When Unicode isn't supported assume ASCII and every code unit is one code + // point. In ASCII the estimated column width is always one. Thus there's no + // need for rounding. + size_t __width_ = _VSTD::min(__str.size(), __maximum); + return {__width_, __str.begin() + __width_}; +} + +# endif // !defined(_LIBCPP_HAS_NO_UNICODE) + +} // namespace __format_spec + +#endif //_LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP___FORMAT_PARSER_STD_FORMAT_SPEC_H diff --git a/third_party/libcxx/__format/range_default_formatter.h b/third_party/libcxx/__format/range_default_formatter.h new file mode 100644 index 000000000..7808d0b12 --- /dev/null +++ b/third_party/libcxx/__format/range_default_formatter.h @@ -0,0 +1,216 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FORMAT_RANGE_DEFAULT_FORMATTER_H +#define _LIBCPP___FORMAT_RANGE_DEFAULT_FORMATTER_H + +#include <__algorithm/ranges_copy.h> +#include <__availability> +#include <__chrono/statically_widen.h> +#include <__concepts/same_as.h> +#include <__config> +#include <__format/concepts.h> +#include <__format/formatter.h> +#include <__format/range_formatter.h> +#include <__iterator/back_insert_iterator.h> +#include <__ranges/concepts.h> +#include <__ranges/data.h> +#include <__ranges/size.h> +#include <__type_traits/remove_cvref.h> +#include <__utility/pair.h> +#include +#include + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 23 + +template +concept __const_formattable_range = + ranges::input_range && formattable, _CharT>; + +template +using __fmt_maybe_const = conditional_t<__const_formattable_range<_Rp, _CharT>, const _Rp, _Rp>; + +_LIBCPP_DIAGNOSTIC_PUSH +_LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wshadow") +_LIBCPP_GCC_DIAGNOSTIC_IGNORED("-Wshadow") +// This shadows map, set, and string. +enum class range_format { disabled, map, set, sequence, string, debug_string }; +_LIBCPP_DIAGNOSTIC_POP + +// There is no definition of this struct, it's purely intended to be used to +// generate diagnostics. +template +struct _LIBCPP_TEMPLATE_VIS __instantiated_the_primary_template_of_format_kind; + +template +constexpr range_format format_kind = [] { + // [format.range.fmtkind]/1 + // A program that instantiates the primary template of format_kind is ill-formed. + static_assert(sizeof(_Rp) != sizeof(_Rp), "create a template specialization of format_kind for your type"); + return range_format::disabled; +}(); + +template + requires same_as<_Rp, remove_cvref_t<_Rp>> +inline constexpr range_format format_kind<_Rp> = [] { + // [format.range.fmtkind]/2 + + // 2.1 If same_as>, R> is true, + // Otherwise format_kind is range_format::disabled. + if constexpr (same_as>, _Rp>) + return range_format::disabled; + // 2.2 Otherwise, if the qualified-id R::key_type is valid and denotes a type: + else if constexpr (requires { typename _Rp::key_type; }) { + // 2.2.1 If the qualified-id R::mapped_type is valid and denotes a type ... + if constexpr (requires { typename _Rp::mapped_type; } && + // 2.2.1 ... If either U is a specialization of pair or U is a specialization + // of tuple and tuple_size_v == 2 + __fmt_pair_like>>) + return range_format::map; + else + // 2.2.2 Otherwise format_kind is range_format::set. + return range_format::set; + } else + // 2.3 Otherwise, format_kind is range_format::sequence. + return range_format::sequence; +}(); + +template +struct _LIBCPP_TEMPLATE_VIS __range_default_formatter; + +// Required specializations + +template +struct _LIBCPP_TEMPLATE_VIS __range_default_formatter { +private: + using __maybe_const_r = __fmt_maybe_const<_Rp, _CharT>; + range_formatter>, _CharT> __underlying_; + +public: + _LIBCPP_HIDE_FROM_ABI constexpr void set_separator(basic_string_view<_CharT> __separator) noexcept { + __underlying_.set_separator(__separator); + } + _LIBCPP_HIDE_FROM_ABI constexpr void + set_brackets(basic_string_view<_CharT> __opening_bracket, basic_string_view<_CharT> __closing_bracket) noexcept { + __underlying_.set_brackets(__opening_bracket, __closing_bracket); + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return __underlying_.parse(__ctx); + } + + template + _LIBCPP_HIDE_FROM_ABI typename FormatContext::iterator format(__maybe_const_r& __range, FormatContext& __ctx) const { + return __underlying_.format(__range, __ctx); + } +}; + +template +struct _LIBCPP_TEMPLATE_VIS __range_default_formatter { +private: + using __maybe_const_map = __fmt_maybe_const<_Rp, _CharT>; + using __element_type = remove_cvref_t>; + range_formatter<__element_type, _CharT> __underlying_; + +public: + _LIBCPP_HIDE_FROM_ABI constexpr __range_default_formatter() + requires(__fmt_pair_like<__element_type>) + { + __underlying_.set_brackets(_LIBCPP_STATICALLY_WIDEN(_CharT, "{"), _LIBCPP_STATICALLY_WIDEN(_CharT, "}")); + __underlying_.underlying().set_brackets({}, {}); + __underlying_.underlying().set_separator(_LIBCPP_STATICALLY_WIDEN(_CharT, ": ")); + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return __underlying_.parse(__ctx); + } + + template + _LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator + format(__maybe_const_map& __range, _FormatContext& __ctx) const { + return __underlying_.format(__range, __ctx); + } +}; + +template +struct _LIBCPP_TEMPLATE_VIS __range_default_formatter { +private: + using __maybe_const_set = __fmt_maybe_const<_Rp, _CharT>; + using __element_type = remove_cvref_t>; + range_formatter<__element_type, _CharT> __underlying_; + +public: + _LIBCPP_HIDE_FROM_ABI constexpr __range_default_formatter() { + __underlying_.set_brackets(_LIBCPP_STATICALLY_WIDEN(_CharT, "{"), _LIBCPP_STATICALLY_WIDEN(_CharT, "}")); + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + return __underlying_.parse(__ctx); + } + + template + _LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator + format(__maybe_const_set& __range, _FormatContext& __ctx) const { + return __underlying_.format(__range, __ctx); + } +}; + +template + requires(_Kp == range_format::string || _Kp == range_format::debug_string) +struct _LIBCPP_TEMPLATE_VIS __range_default_formatter<_Kp, _Rp, _CharT> { +private: + // This deviates from the Standard, there the exposition only type is + // formatter, charT> underlying_; + // Using a string_view allows the format function to avoid a copy of the + // input range when it is a contigious range. + formatter, _CharT> __underlying_; + +public: + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + typename _ParseContext::iterator __i = __underlying_.parse(__ctx); + if constexpr (_Kp == range_format::debug_string) + __underlying_.set_debug_format(); + return __i; + } + + template + _LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator + format(conditional_t, const _Rp&, _Rp&> __range, _FormatContext& __ctx) const { + // When the range is contiguous use a basic_string_view instead to avoid a + // copy of the underlying data. The basic_string_view formatter + // specialization is the "basic" string formatter in libc++. + if constexpr (ranges::contiguous_range<_Rp> && std::ranges::sized_range<_Rp>) + return __underlying_.format(basic_string_view<_CharT>{ranges::data(__range), ranges::size(__range)}, __ctx); + else { + // P2106's from_range has not been implemented yet. Instead use a simple + // copy operation. + // TODO FMT use basic_string's "from_range" constructor. + // return __underlying_.format(basic_string<_CharT>{from_range, __range}, __ctx); + basic_string<_CharT> __str; + std::ranges::copy(__range, back_insert_iterator{__str}); + return __underlying_.format(static_cast>(__str), __ctx); + } + } +}; + +template + requires(format_kind<_Rp> != range_format::disabled && formattable, _CharT>) +struct _LIBCPP_TEMPLATE_VIS formatter<_Rp, _CharT> : __range_default_formatter, _Rp, _CharT> {}; + +#endif //_LIBCPP_STD_VER >= 23 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FORMAT_RANGE_DEFAULT_FORMATTER_H diff --git a/third_party/libcxx/__format/range_formatter.h b/third_party/libcxx/__format/range_formatter.h new file mode 100644 index 000000000..c0d238a55 --- /dev/null +++ b/third_party/libcxx/__format/range_formatter.h @@ -0,0 +1,277 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FORMAT_RANGE_FORMATTER_H +#define _LIBCPP___FORMAT_RANGE_FORMATTER_H + +#include <__algorithm/ranges_copy.h> +#include <__availability> +#include <__chrono/statically_widen.h> +#include <__concepts/same_as.h> +#include <__config> +#include <__format/buffer.h> +#include <__format/concepts.h> +#include <__format/format_args.h> +#include <__format/format_context.h> +#include <__format/format_error.h> +#include <__format/formatter.h> +#include <__format/formatter_output.h> +#include <__format/parser_std_format_spec.h> +#include <__iterator/back_insert_iterator.h> +#include <__ranges/concepts.h> +#include <__ranges/data.h> +#include <__ranges/size.h> +#include <__type_traits/remove_cvref.h> +#include + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 23 + +template + requires same_as, _Tp> && formattable<_Tp, _CharT> +struct _LIBCPP_TEMPLATE_VIS range_formatter { + _LIBCPP_HIDE_FROM_ABI constexpr void set_separator(basic_string_view<_CharT> __separator) noexcept { + __separator_ = __separator; + } + _LIBCPP_HIDE_FROM_ABI constexpr void + set_brackets(basic_string_view<_CharT> __opening_bracket, basic_string_view<_CharT> __closing_bracket) noexcept { + __opening_bracket_ = __opening_bracket; + __closing_bracket_ = __closing_bracket; + } + + _LIBCPP_HIDE_FROM_ABI constexpr formatter<_Tp, _CharT>& underlying() noexcept { return __underlying_; } + _LIBCPP_HIDE_FROM_ABI constexpr const formatter<_Tp, _CharT>& underlying() const noexcept { return __underlying_; } + + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator parse(_ParseContext& __ctx) { + auto __begin = __parser_.__parse(__ctx, __format_spec::__fields_range); + auto __end = __ctx.end(); + // Note the cases where __begin == __end in this code only happens when the + // replacement-field has no terminating }, or when the parse is manually + // called with a format-spec. The former is an error and the latter means + // using a formatter without the format functions or print. + if (__begin == __end) [[unlikely]] + return __parse_empty_range_underlying_spec(__ctx, __begin); + + // The n field overrides a possible m type, therefore delay applying the + // effect of n until the type has been procesed. + bool __clear_brackets = (*__begin == _CharT('n')); + if (__clear_brackets) { + ++__begin; + if (__begin == __end) [[unlikely]] { + // Since there is no more data, clear the brackets before returning. + set_brackets({}, {}); + return __parse_empty_range_underlying_spec(__ctx, __begin); + } + } + + __parse_type(__begin, __end); + if (__clear_brackets) + set_brackets({}, {}); + if (__begin == __end) [[unlikely]] + return __parse_empty_range_underlying_spec(__ctx, __begin); + + bool __has_range_underlying_spec = *__begin == _CharT(':'); + if (__has_range_underlying_spec) { + // range-underlying-spec: + // : format-spec + ++__begin; + } else if (__begin != __end && *__begin != _CharT('}')) + // When there is no underlaying range the current parse should have + // consumed the format-spec. If not, the not consumed input will be + // processed by the underlying. For example {:-} for a range in invalid, + // the sign field is not present. Without this check the underlying_ will + // get -} as input which my be valid. + std::__throw_format_error("The format-spec should consume the input or end with a '}'"); + + __ctx.advance_to(__begin); + __begin = __underlying_.parse(__ctx); + + // This test should not be required if __has_range_underlying_spec is false. + // However this test makes sure the underlying formatter left the parser in + // a valid state. (Note this is not a full protection against evil parsers. + // For example + // } this is test for the next argument {} + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ + // could consume more than it should. + if (__begin != __end && *__begin != _CharT('}')) + std::__throw_format_error("The format-spec should consume the input or end with a '}'"); + + if (__parser_.__type_ != __format_spec::__type::__default) { + // [format.range.formatter]/6 + // If the range-type is s or ?s, then there shall be no n option and no + // range-underlying-spec. + if (__clear_brackets) { + if (__parser_.__type_ == __format_spec::__type::__string) + std::__throw_format_error("The n option and type s can't be used together"); + std::__throw_format_error("The n option and type ?s can't be used together"); + } + if (__has_range_underlying_spec) { + if (__parser_.__type_ == __format_spec::__type::__string) + std::__throw_format_error("Type s and an underlying format specification can't be used together"); + std::__throw_format_error("Type ?s and an underlying format specification can't be used together"); + } + } else if (!__has_range_underlying_spec) + std::__set_debug_format(__underlying_); + + return __begin; + } + + template + requires formattable, _CharT> && + same_as>, _Tp> + _LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator format(_Rp&& __range, _FormatContext& __ctx) const { + __format_spec::__parsed_specifications<_CharT> __specs = __parser_.__get_parsed_std_specifications(__ctx); + + if (!__specs.__has_width()) + return __format_range(__range, __ctx, __specs); + + // The size of the buffer needed is: + // - open bracket characters + // - close bracket character + // - n elements where every element may have a different size + // - (n -1) separators + // The size of the element is hard to predict, knowing the type helps but + // it depends on the format-spec. As an initial estimate we guess 6 + // characters. + // Typically both brackets are 1 character and the separator is 2 + // characters. Which means there will be + // (n - 1) * 2 + 1 + 1 = n * 2 character + // So estimate 8 times the range size as buffer. + std::size_t __capacity_hint = 0; + if constexpr (std::ranges::sized_range<_Rp>) + __capacity_hint = 8 * ranges::size(__range); + __format::__retarget_buffer<_CharT> __buffer{__capacity_hint}; + basic_format_context::__iterator, _CharT> __c{ + __buffer.__make_output_iterator(), __ctx}; + + __format_range(__range, __c, __specs); + + return __formatter::__write_string_no_precision(__buffer.__view(), __ctx.out(), __specs); + } + + template + typename _FormatContext::iterator _LIBCPP_HIDE_FROM_ABI + __format_range(_Rp&& __range, _FormatContext& __ctx, __format_spec::__parsed_specifications<_CharT> __specs) const { + if constexpr (same_as<_Tp, _CharT>) { + switch (__specs.__std_.__type_) { + case __format_spec::__type::__string: + case __format_spec::__type::__debug: + return __format_as_string(__range, __ctx, __specs.__std_.__type_ == __format_spec::__type::__debug); + default: + return __format_as_sequence(__range, __ctx); + } + } else + return __format_as_sequence(__range, __ctx); + } + + template + _LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator + __format_as_string(_Rp&& __range, _FormatContext& __ctx, bool __debug_format) const { + // When the range is contiguous use a basic_string_view instead to avoid a + // copy of the underlying data. The basic_string_view formatter + // specialization is the "basic" string formatter in libc++. + if constexpr (ranges::contiguous_range<_Rp> && std::ranges::sized_range<_Rp>) { + std::formatter, _CharT> __formatter; + if (__debug_format) + __formatter.set_debug_format(); + return __formatter.format( + basic_string_view<_CharT>{ + ranges::data(__range), + ranges::size(__range), + }, + __ctx); + } else { + std::formatter, _CharT> __formatter; + if (__debug_format) + __formatter.set_debug_format(); + // P2106's from_range has not been implemented yet. Instead use a simple + // copy operation. + // TODO FMT use basic_string's "from_range" constructor. + // return std::formatter, _CharT>{}.format(basic_string<_CharT>{from_range, __range}, __ctx); + basic_string<_CharT> __str; + ranges::copy(__range, back_insert_iterator{__str}); + return __formatter.format(__str, __ctx); + } + } + + template + _LIBCPP_HIDE_FROM_ABI typename _FormatContext::iterator + __format_as_sequence(_Rp&& __range, _FormatContext& __ctx) const { + __ctx.advance_to(ranges::copy(__opening_bracket_, __ctx.out()).out); + bool __use_separator = false; + for (auto&& __e : __range) { + if (__use_separator) + __ctx.advance_to(ranges::copy(__separator_, __ctx.out()).out); + else + __use_separator = true; + + __ctx.advance_to(__underlying_.format(__e, __ctx)); + } + + return ranges::copy(__closing_bracket_, __ctx.out()).out; + } + + __format_spec::__parser<_CharT> __parser_{.__alignment_ = __format_spec::__alignment::__left}; + +private: + template + _LIBCPP_HIDE_FROM_ABI constexpr void __parse_type(_Iterator& __begin, _Iterator __end) { + switch (*__begin) { + case _CharT('m'): + if constexpr (__fmt_pair_like<_Tp>) { + set_brackets(_LIBCPP_STATICALLY_WIDEN(_CharT, "{"), _LIBCPP_STATICALLY_WIDEN(_CharT, "}")); + set_separator(_LIBCPP_STATICALLY_WIDEN(_CharT, ", ")); + ++__begin; + } else + std::__throw_format_error("The range-format-spec type m requires two elements for a pair or tuple"); + break; + + case _CharT('s'): + if constexpr (same_as<_Tp, _CharT>) { + __parser_.__type_ = __format_spec::__type::__string; + ++__begin; + } else + std::__throw_format_error("The range-format-spec type s requires formatting a character type"); + break; + + case _CharT('?'): + ++__begin; + if (__begin == __end || *__begin != _CharT('s')) + std::__throw_format_error("The format-spec should consume the input or end with a '}'"); + if constexpr (same_as<_Tp, _CharT>) { + __parser_.__type_ = __format_spec::__type::__debug; + ++__begin; + } else + std::__throw_format_error("The range-format-spec type ?s requires formatting a character type"); + } + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator + __parse_empty_range_underlying_spec(_ParseContext& __ctx, typename _ParseContext::iterator __begin) { + __ctx.advance_to(__begin); + [[maybe_unused]] typename _ParseContext::iterator __result = __underlying_.parse(__ctx); + _LIBCPP_ASSERT(__result == __begin, + "the underlying's parse function should not advance the input beyond the end of the input"); + return __begin; + } + + formatter<_Tp, _CharT> __underlying_; + basic_string_view<_CharT> __separator_ = _LIBCPP_STATICALLY_WIDEN(_CharT, ", "); + basic_string_view<_CharT> __opening_bracket_ = _LIBCPP_STATICALLY_WIDEN(_CharT, "["); + basic_string_view<_CharT> __closing_bracket_ = _LIBCPP_STATICALLY_WIDEN(_CharT, "]"); +}; + +#endif //_LIBCPP_STD_VER >= 23 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FORMAT_RANGE_FORMATTER_H diff --git a/third_party/libcxx/__format/unicode.h b/third_party/libcxx/__format/unicode.h new file mode 100644 index 000000000..12aed5079 --- /dev/null +++ b/third_party/libcxx/__format/unicode.h @@ -0,0 +1,483 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FORMAT_UNICODE_H +#define _LIBCPP___FORMAT_UNICODE_H + +#include <__assert> +#include <__bit/countl.h> +#include <__concepts/same_as.h> +#include <__config> +#include <__format/extended_grapheme_cluster_table.h> +#include <__iterator/concepts.h> +#include <__iterator/readable_traits.h> // iter_value_t +#include <__type_traits/make_unsigned.h> +#include <__utility/unreachable.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +namespace __unicode { + +// Helper struct for the result of a consume operation. +// +// The status value for a correct code point is 0. This allows a valid value to +// be used without masking. +// When the decoding fails it know the number of code units affected. For the +// current use-cases that value is not needed, therefore it is not stored. +// The escape routine needs the number of code units for both a valid and +// invalid character and keeps track of it itself. Doing it in this result +// unconditionally would give some overhead when the value is unneeded. +struct __consume_result { + // When __status == __ok it contains the decoded code point. + // Else it contains the replacement character U+FFFD + char32_t __code_point : 31; + + enum : char32_t { + // Consumed a well-formed code point. + __ok = 0, + // Encountered invalid UTF-8 + __error = 1 + } __status : 1 {__ok}; +}; +static_assert(sizeof(__consume_result) == sizeof(char32_t)); + +# ifndef _LIBCPP_HAS_NO_UNICODE + +/// Implements the grapheme cluster boundary rules +/// +/// These rules are used to implement format's width estimation as stated in +/// [format.string.std]/11 +/// +/// The Standard refers to UAX \#29 for Unicode 12.0.0 +/// https://www.unicode.org/reports/tr29/#Grapheme_Cluster_Boundary_Rules +/// +/// The data tables used are +/// https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakProperty.txt +/// https://www.unicode.org/Public/UCD/latest/ucd/emoji/emoji-data.txt +/// https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakTest.txt (for testing only) + +inline constexpr char32_t __replacement_character = U'\ufffd'; + +// The error of a consume operation. +// +// This sets the code point to the replacement character. This code point does +// not participate in the grapheme clustering, so grapheme clustering code can +// ignore the error status and always use the code point. +inline constexpr __consume_result __consume_result_error{__replacement_character, __consume_result::__error}; + +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool __is_high_surrogate(char32_t __value) { + return __value >= 0xd800 && __value <= 0xdbff; +} + +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool __is_low_surrogate(char32_t __value) { + return __value >= 0xdc00 && __value <= 0xdfff; +} + +// https://www.unicode.org/glossary/#surrogate_code_point +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI inline constexpr bool __is_surrogate(char32_t __value) { + return __value >= 0xd800 && __value <= 0xdfff; +} + +// https://www.unicode.org/glossary/#code_point +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI inline constexpr bool __is_code_point(char32_t __value) { + return __value <= 0x10ffff; +} + +// https://www.unicode.org/glossary/#unicode_scalar_value +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI inline constexpr bool __is_scalar_value(char32_t __value) { + return __unicode::__is_code_point(__value) && !__unicode::__is_surrogate(__value); +} + +template + requires same_as, char> +_LIBCPP_HIDE_FROM_ABI constexpr bool __is_continuation(_Iterator __char, int __count) { + do { + if ((*__char & 0b1000'0000) != 0b1000'0000) + return false; + --__count; + ++__char; + } while (__count); + return true; +} + +/// Helper class to extract a code unit from a Unicode character range. +/// +/// The stored range is a view. There are multiple specialization for different +/// character types. +template +class __code_point_view; + +/// UTF-8 specialization. +template <> +class __code_point_view { + using _Iterator = basic_string_view::const_iterator; + +public: + _LIBCPP_HIDE_FROM_ABI constexpr explicit __code_point_view(_Iterator __first, _Iterator __last) + : __first_(__first), __last_(__last) {} + + _LIBCPP_HIDE_FROM_ABI constexpr bool __at_end() const noexcept { return __first_ == __last_; } + _LIBCPP_HIDE_FROM_ABI constexpr _Iterator __position() const noexcept { return __first_; } + + // https://www.unicode.org/versions/latest/ch03.pdf#G7404 + // Based on Table 3-7, Well-Formed UTF-8 Byte Sequences + // + // Code Points First Byte Second Byte Third Byte Fourth Byte Remarks + // U+0000..U+007F 00..7F U+0000..U+007F 1 code unit range + // C0..C1 80..BF invalid overlong encoding + // U+0080..U+07FF C2..DF 80..BF U+0080..U+07FF 2 code unit range + // E0 80..9F 80..BF invalid overlong encoding + // U+0800..U+0FFF E0 A0..BF 80..BF U+0800..U+FFFF 3 code unit range + // U+1000..U+CFFF E1..EC 80..BF 80..BF + // U+D000..U+D7FF ED 80..9F 80..BF + // U+D800..U+DFFF ED A0..BF 80..BF invalid encoding of surrogate code point + // U+E000..U+FFFF EE..EF 80..BF 80..BF + // F0 80..8F 80..BF 80..BF invalid overlong encoding + // U+10000..U+3FFFF F0 90..BF 80..BF 80..BF U+10000..U+10FFFF 4 code unit range + // U+40000..U+FFFFF F1..F3 80..BF 80..BF 80..BF + // U+100000..U+10FFFF F4 80..8F 80..BF 80..BF + // F4 90..BF 80..BF 80..BF U+110000.. invalid code point range + // + // Unlike other parsers, these invalid entries are tested after decoding. + // - The parser always needs to consume these code units + // - The code is optimized for well-formed UTF-8 + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr __consume_result __consume() noexcept { + _LIBCPP_ASSERT(__first_ != __last_, "can't move beyond the end of input"); + + // Based on the number of leading 1 bits the number of code units in the + // code point can be determined. See + // https://en.wikipedia.org/wiki/UTF-8#Encoding + switch (std::countl_one(static_cast(*__first_))) { + case 0: + return {static_cast(*__first_++)}; + + case 2: { + if (__last_ - __first_ < 2 || !__unicode::__is_continuation(__first_ + 1, 1)) [[unlikely]] + break; + + char32_t __value = static_cast(*__first_++) & 0x1f; + __value <<= 6; + __value |= static_cast(*__first_++) & 0x3f; + + // These values should be encoded in 1 UTF-8 code unit. + if (__value < 0x0080) [[unlikely]] + return __consume_result_error; + + return {__value}; + } + + case 3: { + if (__last_ - __first_ < 3 || !__unicode::__is_continuation(__first_ + 1, 2)) [[unlikely]] + break; + + char32_t __value = static_cast(*__first_++) & 0x0f; + __value <<= 6; + __value |= static_cast(*__first_++) & 0x3f; + __value <<= 6; + __value |= static_cast(*__first_++) & 0x3f; + + // These values should be encoded in 1 or 2 UTF-8 code units. + if (__value < 0x0800) [[unlikely]] + return __consume_result_error; + + // A surrogate value is always encoded in 3 UTF-8 code units. + if (__unicode::__is_surrogate(__value)) [[unlikely]] + return __consume_result_error; + + return {__value}; + } + + case 4: { + if (__last_ - __first_ < 4 || !__unicode::__is_continuation(__first_ + 1, 3)) [[unlikely]] + break; + + char32_t __value = static_cast(*__first_++) & 0x07; + __value <<= 6; + __value |= static_cast(*__first_++) & 0x3f; + __value <<= 6; + __value |= static_cast(*__first_++) & 0x3f; + __value <<= 6; + __value |= static_cast(*__first_++) & 0x3f; + + // These values should be encoded in 1, 2, or 3 UTF-8 code units. + if (__value < 0x10000) [[unlikely]] + return __consume_result_error; + + // A value too large is always encoded in 4 UTF-8 code units. + if (!__unicode::__is_code_point(__value)) [[unlikely]] + return __consume_result_error; + + return {__value}; + } + } + // An invalid number of leading ones can be garbage or a code unit in the + // middle of a code point. By consuming one code unit the parser may get + // "in sync" after a few code units. + ++__first_; + return __consume_result_error; + } + +private: + _Iterator __first_; + _Iterator __last_; +}; + +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +_LIBCPP_HIDE_FROM_ABI constexpr bool __is_surrogate_pair_high(wchar_t __value) { + return __value >= 0xd800 && __value <= 0xdbff; +} + +_LIBCPP_HIDE_FROM_ABI constexpr bool __is_surrogate_pair_low(wchar_t __value) { + return __value >= 0xdc00 && __value <= 0xdfff; +} + +/// This specialization depends on the size of wchar_t +/// - 2 UTF-16 (for example Windows and AIX) +/// - 4 UTF-32 (for example Linux) +template <> +class __code_point_view { + using _Iterator = typename basic_string_view::const_iterator; + +public: + static_assert(sizeof(wchar_t) == 2 || sizeof(wchar_t) == 4, "sizeof(wchar_t) has a not implemented value"); + + _LIBCPP_HIDE_FROM_ABI constexpr explicit __code_point_view(_Iterator __first, _Iterator __last) + : __first_(__first), __last_(__last) {} + + _LIBCPP_HIDE_FROM_ABI constexpr _Iterator __position() const noexcept { return __first_; } + _LIBCPP_HIDE_FROM_ABI constexpr bool __at_end() const noexcept { return __first_ == __last_; } + + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr __consume_result __consume() noexcept { + _LIBCPP_ASSERT(__first_ != __last_, "can't move beyond the end of input"); + + char32_t __value = static_cast(*__first_++); + if constexpr (sizeof(wchar_t) == 2) { + if (__unicode::__is_low_surrogate(__value)) [[unlikely]] + return __consume_result_error; + + if (__unicode::__is_high_surrogate(__value)) { + if (__first_ == __last_ || !__unicode::__is_low_surrogate(static_cast(*__first_))) [[unlikely]] + return __consume_result_error; + + __value -= 0xd800; + __value <<= 10; + __value += static_cast(*__first_++) - 0xdc00; + __value += 0x10000; + + if (!__unicode::__is_code_point(__value)) [[unlikely]] + return __consume_result_error; + } + } else { + if (!__unicode::__is_scalar_value(__value)) [[unlikely]] + return __consume_result_error; + } + + return {__value}; + } + +private: + _Iterator __first_; + _Iterator __last_; +}; +# endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS + +_LIBCPP_HIDE_FROM_ABI constexpr bool __at_extended_grapheme_cluster_break( + bool& __ri_break_allowed, + bool __has_extened_pictographic, + __extended_grapheme_custer_property_boundary::__property __prev, + __extended_grapheme_custer_property_boundary::__property __next) { + using __extended_grapheme_custer_property_boundary::__property; + + __has_extened_pictographic |= __prev == __property::__Extended_Pictographic; + + // https://www.unicode.org/reports/tr29/tr29-39.html#Grapheme_Cluster_Boundary_Rules + + // *** Break at the start and end of text, unless the text is empty. *** + + _LIBCPP_ASSERT(__prev != __property::__sot, "should be handled in the constructor"); // GB1 + _LIBCPP_ASSERT(__prev != __property::__eot, "should be handled by our caller"); // GB2 + + // *** Do not break between a CR and LF. Otherwise, break before and after controls. *** + if (__prev == __property::__CR && __next == __property::__LF) // GB3 + return false; + + if (__prev == __property::__Control || __prev == __property::__CR || __prev == __property::__LF) // GB4 + return true; + + if (__next == __property::__Control || __next == __property::__CR || __next == __property::__LF) // GB5 + return true; + + // *** Do not break Hangul syllable sequences. *** + if (__prev == __property::__L && + (__next == __property::__L || __next == __property::__V || __next == __property::__LV || + __next == __property::__LVT)) // GB6 + return false; + + if ((__prev == __property::__LV || __prev == __property::__V) && + (__next == __property::__V || __next == __property::__T)) // GB7 + return false; + + if ((__prev == __property::__LVT || __prev == __property::__T) && __next == __property::__T) // GB8 + return false; + + // *** Do not break before extending characters or ZWJ. *** + if (__next == __property::__Extend || __next == __property::__ZWJ) + return false; // GB9 + + // *** Do not break before SpacingMarks, or after Prepend characters. *** + if (__next == __property::__SpacingMark) // GB9a + return false; + + if (__prev == __property::__Prepend) // GB9b + return false; + + // *** Do not break within emoji modifier sequences or emoji zwj sequences. *** + + // GB11 \p{Extended_Pictographic} Extend* ZWJ x \p{Extended_Pictographic} + // + // Note that several parts of this rule are matched by GB9: Any x (Extend | ZWJ) + // - \p{Extended_Pictographic} x Extend + // - Extend x Extend + // - \p{Extended_Pictographic} x ZWJ + // - Extend x ZWJ + // + // So the only case left to test is + // - \p{Extended_Pictographic}' x ZWJ x \p{Extended_Pictographic} + // where \p{Extended_Pictographic}' is stored in __has_extened_pictographic + if (__has_extened_pictographic && __prev == __property::__ZWJ && __next == __property::__Extended_Pictographic) + return false; + + // *** Do not break within emoji flag sequences *** + + // That is, do not break between regional indicator (RI) symbols if there + // is an odd number of RI characters before the break point. + + if (__prev == __property::__Regional_Indicator && __next == __property::__Regional_Indicator) { // GB12 + GB13 + __ri_break_allowed = !__ri_break_allowed; + return __ri_break_allowed; + } + + // *** Otherwise, break everywhere. *** + return true; // GB999 +} + +/// Helper class to extract an extended grapheme cluster from a Unicode character range. +/// +/// This function is used to determine the column width of an extended grapheme +/// cluster. In order to do that only the first code point is evaluated. +/// Therefore only this code point is extracted. +template +class __extended_grapheme_cluster_view { + using _Iterator = typename basic_string_view<_CharT>::const_iterator; + +public: + _LIBCPP_HIDE_FROM_ABI constexpr explicit __extended_grapheme_cluster_view(_Iterator __first, _Iterator __last) + : __code_point_view_(__first, __last), + __next_code_point_(__code_point_view_.__consume().__code_point), + __next_prop_(__extended_grapheme_custer_property_boundary::__get_property(__next_code_point_)) {} + + struct __cluster { + /// The first code point of the extended grapheme cluster. + /// + /// The first code point is used to estimate the width of the extended + /// grapheme cluster. + char32_t __code_point_; + + /// Points one beyond the last code unit in the extended grapheme cluster. + /// + /// It's expected the caller has the start position and thus can determine + /// the code unit range of the extended grapheme cluster. + _Iterator __last_; + }; + + _LIBCPP_HIDE_FROM_ABI constexpr __cluster __consume() { + _LIBCPP_ASSERT( + __next_prop_ != __extended_grapheme_custer_property_boundary::__property::__eot, + "can't move beyond the end of input"); + + char32_t __code_point = __next_code_point_; + if (!__code_point_view_.__at_end()) + return {__code_point, __get_break()}; + + __next_prop_ = __extended_grapheme_custer_property_boundary::__property::__eot; + return {__code_point, __code_point_view_.__position()}; + } + +private: + __code_point_view<_CharT> __code_point_view_; + + char32_t __next_code_point_; + __extended_grapheme_custer_property_boundary::__property __next_prop_; + + _LIBCPP_HIDE_FROM_ABI constexpr _Iterator __get_break() { + bool __ri_break_allowed = true; + bool __has_extened_pictographic = false; + while (true) { + _Iterator __result = __code_point_view_.__position(); + __extended_grapheme_custer_property_boundary::__property __prev = __next_prop_; + if (__code_point_view_.__at_end()) { + __next_prop_ = __extended_grapheme_custer_property_boundary::__property::__eot; + return __result; + } + __next_code_point_ = __code_point_view_.__consume().__code_point; + __next_prop_ = __extended_grapheme_custer_property_boundary::__get_property(__next_code_point_); + + __has_extened_pictographic |= + __prev == __extended_grapheme_custer_property_boundary::__property::__Extended_Pictographic; + + if (__at_extended_grapheme_cluster_break(__ri_break_allowed, __has_extened_pictographic, __prev, __next_prop_)) + return __result; + } + } +}; + +template +__extended_grapheme_cluster_view(_Iterator, _Iterator) -> __extended_grapheme_cluster_view>; + +# else // _LIBCPP_HAS_NO_UNICODE + +// For ASCII every character is a "code point". +// This makes it easier to write code agnostic of the _LIBCPP_HAS_NO_UNICODE define. +template +class __code_point_view { + using _Iterator = typename basic_string_view<_CharT>::const_iterator; + +public: + _LIBCPP_HIDE_FROM_ABI constexpr explicit __code_point_view(_Iterator __first, _Iterator __last) + : __first_(__first), __last_(__last) {} + + _LIBCPP_HIDE_FROM_ABI constexpr bool __at_end() const noexcept { return __first_ == __last_; } + _LIBCPP_HIDE_FROM_ABI constexpr _Iterator __position() const noexcept { return __first_; } + + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr __consume_result __consume() noexcept { + _LIBCPP_ASSERT(__first_ != __last_, "can't move beyond the end of input"); + return {static_cast(*__first_++)}; + } + +private: + _Iterator __first_; + _Iterator __last_; +}; + +# endif // _LIBCPP_HAS_NO_UNICODE + +} // namespace __unicode + +#endif //_LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FORMAT_UNICODE_H diff --git a/third_party/libcxx/__format/width_estimation_table.h b/third_party/libcxx/__format/width_estimation_table.h new file mode 100644 index 000000000..cfb488975 --- /dev/null +++ b/third_party/libcxx/__format/width_estimation_table.h @@ -0,0 +1,271 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// WARNING, this entire header is generated by +// utils/generate_width_estimation_table.py +// DO NOT MODIFY! + +// UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE +// +// See Terms of Use +// for definitions of Unicode Inc.'s Data Files and Software. +// +// NOTICE TO USER: Carefully read the following legal agreement. +// BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S +// DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), +// YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE +// TERMS AND CONDITIONS OF THIS AGREEMENT. +// IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE +// THE DATA FILES OR SOFTWARE. +// +// COPYRIGHT AND PERMISSION NOTICE +// +// Copyright (c) 1991-2022 Unicode, Inc. All rights reserved. +// Distributed under the Terms of Use in https://www.unicode.org/copyright.html. +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of the Unicode data files and any associated documentation +// (the "Data Files") or Unicode software and any associated documentation +// (the "Software") to deal in the Data Files or Software +// without restriction, including without limitation the rights to use, +// copy, modify, merge, publish, distribute, and/or sell copies of +// the Data Files or Software, and to permit persons to whom the Data Files +// or Software are furnished to do so, provided that either +// (a) this copyright and permission notice appear with all copies +// of the Data Files or Software, or +// (b) this copyright and permission notice appear in associated +// Documentation. +// +// THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF +// ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +// WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT OF THIRD PARTY RIGHTS. +// IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS +// NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL +// DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +// DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +// TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +// PERFORMANCE OF THE DATA FILES OR SOFTWARE. +// +// Except as contained in this notice, the name of a copyright holder +// shall not be used in advertising or otherwise to promote the sale, +// use or other dealings in these Data Files or Software without prior +// written authorization of the copyright holder. + +#ifndef _LIBCPP___FORMAT_WIDTH_ESTIMATION_TABLE_H +#define _LIBCPP___FORMAT_WIDTH_ESTIMATION_TABLE_H + +#include <__algorithm/ranges_upper_bound.h> +#include <__config> +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +namespace __width_estimation_table { + +/// The entries of the characters with an estimated width of 2. +/// +/// Contains the entries for [format.string.std]/12 +/// - Any code point with the East_Asian_Width="W" or East_Asian_Width="F" +/// Derived Extracted Property as described by UAX #44 +/// - U+4DC0 - U+4DFF (Yijing Hexagram Symbols) +/// - U+1F300 - U+1F5FF (Miscellaneous Symbols and Pictographs) +/// - U+1F900 - U+1F9FF (Supplemental Symbols and Pictographs) +/// +/// The data is generated from +/// - https://www.unicode.org/Public/UCD/latest/ucd/EastAsianWidth.txt +/// - The "overrides" in [format.string.std]/12 +/// +/// The format of EastAsianWidth.txt is two fields separated by a semicolon. +/// Field 0: Unicode code point value or range of code point values +/// Field 1: East_Asian_Width property, consisting of one of the following values: +/// "A", "F", "H", "N", "Na", "W" +/// - All code points, assigned or unassigned, that are not listed +/// explicitly are given the value "N". +/// - The unassigned code points in the following blocks default to "W": +/// CJK Unified Ideographs Extension A: U+3400..U+4DBF +/// CJK Unified Ideographs: U+4E00..U+9FFF +/// CJK Compatibility Ideographs: U+F900..U+FAFF +/// - All undesignated code points in Planes 2 and 3, whether inside or +/// outside of allocated blocks, default to "W": +/// Plane 2: U+20000..U+2FFFD +/// Plane 3: U+30000..U+3FFFD +/// +/// The table is similar to the table +/// __extended_grapheme_custer_property_boundary::__entries +/// which explains the details of these classes. The only difference is this +/// table lacks a property, thus having more bits available for the size. +/// +/// The maximum code point that has an estimated width of 2 is U+3FFFD. This +/// value can be encoded in 18 bits. Thus the upper 3 bits of the code point +/// are always 0. These 3 bits are used to enlarge the offset range. This +/// optimization reduces the table in Unicode 15 from 184 to 104 entries, +/// saving 320 bytes. +/// +/// The data has 2 values: +/// - bits [0, 13] The size of the range, allowing 16384 elements. +/// - bits [14, 31] The lower bound code point of the range. The upper bound of +/// the range is lower bound + size. +inline constexpr uint32_t __entries[108] = { + 0x0440005f /* 00001100 - 0000115f [ 96] */, // + 0x08c68001 /* 0000231a - 0000231b [ 2] */, // + 0x08ca4001 /* 00002329 - 0000232a [ 2] */, // + 0x08fa4003 /* 000023e9 - 000023ec [ 4] */, // + 0x08fc0000 /* 000023f0 - 000023f0 [ 1] */, // + 0x08fcc000 /* 000023f3 - 000023f3 [ 1] */, // + 0x097f4001 /* 000025fd - 000025fe [ 2] */, // + 0x09850001 /* 00002614 - 00002615 [ 2] */, // + 0x0992000b /* 00002648 - 00002653 [ 12] */, // + 0x099fc000 /* 0000267f - 0000267f [ 1] */, // + 0x09a4c000 /* 00002693 - 00002693 [ 1] */, // + 0x09a84000 /* 000026a1 - 000026a1 [ 1] */, // + 0x09aa8001 /* 000026aa - 000026ab [ 2] */, // + 0x09af4001 /* 000026bd - 000026be [ 2] */, // + 0x09b10001 /* 000026c4 - 000026c5 [ 2] */, // + 0x09b38000 /* 000026ce - 000026ce [ 1] */, // + 0x09b50000 /* 000026d4 - 000026d4 [ 1] */, // + 0x09ba8000 /* 000026ea - 000026ea [ 1] */, // + 0x09bc8001 /* 000026f2 - 000026f3 [ 2] */, // + 0x09bd4000 /* 000026f5 - 000026f5 [ 1] */, // + 0x09be8000 /* 000026fa - 000026fa [ 1] */, // + 0x09bf4000 /* 000026fd - 000026fd [ 1] */, // + 0x09c14000 /* 00002705 - 00002705 [ 1] */, // + 0x09c28001 /* 0000270a - 0000270b [ 2] */, // + 0x09ca0000 /* 00002728 - 00002728 [ 1] */, // + 0x09d30000 /* 0000274c - 0000274c [ 1] */, // + 0x09d38000 /* 0000274e - 0000274e [ 1] */, // + 0x09d4c002 /* 00002753 - 00002755 [ 3] */, // + 0x09d5c000 /* 00002757 - 00002757 [ 1] */, // + 0x09e54002 /* 00002795 - 00002797 [ 3] */, // + 0x09ec0000 /* 000027b0 - 000027b0 [ 1] */, // + 0x09efc000 /* 000027bf - 000027bf [ 1] */, // + 0x0ac6c001 /* 00002b1b - 00002b1c [ 2] */, // + 0x0ad40000 /* 00002b50 - 00002b50 [ 1] */, // + 0x0ad54000 /* 00002b55 - 00002b55 [ 1] */, // + 0x0ba00019 /* 00002e80 - 00002e99 [ 26] */, // + 0x0ba6c058 /* 00002e9b - 00002ef3 [ 89] */, // + 0x0bc000d5 /* 00002f00 - 00002fd5 [ 214] */, // + 0x0bfc000b /* 00002ff0 - 00002ffb [ 12] */, // + 0x0c00003e /* 00003000 - 0000303e [ 63] */, // + 0x0c104055 /* 00003041 - 00003096 [ 86] */, // + 0x0c264066 /* 00003099 - 000030ff [ 103] */, // + 0x0c41402a /* 00003105 - 0000312f [ 43] */, // + 0x0c4c405d /* 00003131 - 0000318e [ 94] */, // + 0x0c640053 /* 00003190 - 000031e3 [ 84] */, // + 0x0c7c002e /* 000031f0 - 0000321e [ 47] */, // + 0x0c880027 /* 00003220 - 00003247 [ 40] */, // + 0x0c943fff /* 00003250 - 0000724f [16384] */, // + 0x1c94323c /* 00007250 - 0000a48c [12861] */, // + 0x29240036 /* 0000a490 - 0000a4c6 [ 55] */, // + 0x2a58001c /* 0000a960 - 0000a97c [ 29] */, // + 0x2b002ba3 /* 0000ac00 - 0000d7a3 [11172] */, // + 0x3e4001ff /* 0000f900 - 0000faff [ 512] */, // + 0x3f840009 /* 0000fe10 - 0000fe19 [ 10] */, // + 0x3f8c0022 /* 0000fe30 - 0000fe52 [ 35] */, // + 0x3f950012 /* 0000fe54 - 0000fe66 [ 19] */, // + 0x3f9a0003 /* 0000fe68 - 0000fe6b [ 4] */, // + 0x3fc0405f /* 0000ff01 - 0000ff60 [ 96] */, // + 0x3ff80006 /* 0000ffe0 - 0000ffe6 [ 7] */, // + 0x5bf80004 /* 00016fe0 - 00016fe4 [ 5] */, // + 0x5bfc0001 /* 00016ff0 - 00016ff1 [ 2] */, // + 0x5c0017f7 /* 00017000 - 000187f7 [ 6136] */, // + 0x620004d5 /* 00018800 - 00018cd5 [ 1238] */, // + 0x63400008 /* 00018d00 - 00018d08 [ 9] */, // + 0x6bfc0003 /* 0001aff0 - 0001aff3 [ 4] */, // + 0x6bfd4006 /* 0001aff5 - 0001affb [ 7] */, // + 0x6bff4001 /* 0001affd - 0001affe [ 2] */, // + 0x6c000122 /* 0001b000 - 0001b122 [ 291] */, // + 0x6c4c8000 /* 0001b132 - 0001b132 [ 1] */, // + 0x6c540002 /* 0001b150 - 0001b152 [ 3] */, // + 0x6c554000 /* 0001b155 - 0001b155 [ 1] */, // + 0x6c590003 /* 0001b164 - 0001b167 [ 4] */, // + 0x6c5c018b /* 0001b170 - 0001b2fb [ 396] */, // + 0x7c010000 /* 0001f004 - 0001f004 [ 1] */, // + 0x7c33c000 /* 0001f0cf - 0001f0cf [ 1] */, // + 0x7c638000 /* 0001f18e - 0001f18e [ 1] */, // + 0x7c644009 /* 0001f191 - 0001f19a [ 10] */, // + 0x7c800002 /* 0001f200 - 0001f202 [ 3] */, // + 0x7c84002b /* 0001f210 - 0001f23b [ 44] */, // + 0x7c900008 /* 0001f240 - 0001f248 [ 9] */, // + 0x7c940001 /* 0001f250 - 0001f251 [ 2] */, // + 0x7c980005 /* 0001f260 - 0001f265 [ 6] */, // + 0x7cc0034f /* 0001f300 - 0001f64f [ 848] */, // + 0x7da00045 /* 0001f680 - 0001f6c5 [ 70] */, // + 0x7db30000 /* 0001f6cc - 0001f6cc [ 1] */, // + 0x7db40002 /* 0001f6d0 - 0001f6d2 [ 3] */, // + 0x7db54002 /* 0001f6d5 - 0001f6d7 [ 3] */, // + 0x7db70003 /* 0001f6dc - 0001f6df [ 4] */, // + 0x7dbac001 /* 0001f6eb - 0001f6ec [ 2] */, // + 0x7dbd0008 /* 0001f6f4 - 0001f6fc [ 9] */, // + 0x7df8000b /* 0001f7e0 - 0001f7eb [ 12] */, // + 0x7dfc0000 /* 0001f7f0 - 0001f7f0 [ 1] */, // + 0x7e4000ff /* 0001f900 - 0001f9ff [ 256] */, // + 0x7e9c000c /* 0001fa70 - 0001fa7c [ 13] */, // + 0x7ea00008 /* 0001fa80 - 0001fa88 [ 9] */, // + 0x7ea4002d /* 0001fa90 - 0001fabd [ 46] */, // + 0x7eafc006 /* 0001fabf - 0001fac5 [ 7] */, // + 0x7eb3800d /* 0001face - 0001fadb [ 14] */, // + 0x7eb80008 /* 0001fae0 - 0001fae8 [ 9] */, // + 0x7ebc0008 /* 0001faf0 - 0001faf8 [ 9] */, // + 0x80003fff /* 00020000 - 00023fff [16384] */, // + 0x90003fff /* 00024000 - 00027fff [16384] */, // + 0xa0003fff /* 00028000 - 0002bfff [16384] */, // + 0xb0003ffd /* 0002c000 - 0002fffd [16382] */, // + 0xc0003fff /* 00030000 - 00033fff [16384] */, // + 0xd0003fff /* 00034000 - 00037fff [16384] */, // + 0xe0003fff /* 00038000 - 0003bfff [16384] */, // + 0xf0003ffd /* 0003c000 - 0003fffd [16382] */}; + +/// The upper bound entry of EastAsianWidth.txt. +/// +/// Values greater than this value may have more than 18 significant bits. +/// They always have a width of 1. This property makes it possible to store +/// the table in its compact form. +inline constexpr uint32_t __table_upper_bound = 0x0003fffd; + +/// Returns the estimated width of a Unicode code point. +/// +/// \pre The code point is a valid Unicode code point. +[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr int __estimated_width(const char32_t __code_point) noexcept { + // Since __table_upper_bound contains the unshifted range do the + // comparison without shifting. + if (__code_point > __table_upper_bound) [[unlikely]] + return 1; + + // When the code-point is less than the first element in the table + // the lookup is quite expensive. Since quite some scripts are in + // that range, it makes sense to validate that first. + // The std_format_spec_string_unicode benchmark gives a measurable + // improvement. + if (__code_point < (__entries[0] >> 14)) + return 1; + + ptrdiff_t __i = std::ranges::upper_bound(__entries, (__code_point << 14) | 0x3fffu) - __entries; + if (__i == 0) + return 1; + + --__i; + uint32_t __upper_bound = (__entries[__i] >> 14) + (__entries[__i] & 0x3fffu); + return 1 + (__code_point <= __upper_bound); +} + +} // namespace __width_estimation_table + +#endif //_LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FORMAT_WIDTH_ESTIMATION_TABLE_H diff --git a/third_party/libcxx/__functional/binary_function.h b/third_party/libcxx/__functional/binary_function.h new file mode 100644 index 000000000..fdedb8b17 --- /dev/null +++ b/third_party/libcxx/__functional/binary_function.h @@ -0,0 +1,54 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FUNCTIONAL_BINARY_FUNCTION_H +#define _LIBCPP___FUNCTIONAL_BINARY_FUNCTION_H + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION) + +template +struct _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 binary_function +{ + typedef _Arg1 first_argument_type; + typedef _Arg2 second_argument_type; + typedef _Result result_type; +}; + +#endif // _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION) + +template struct __binary_function_keep_layout_base { +#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS) + using first_argument_type _LIBCPP_DEPRECATED_IN_CXX17 = _Arg1; + using second_argument_type _LIBCPP_DEPRECATED_IN_CXX17 = _Arg2; + using result_type _LIBCPP_DEPRECATED_IN_CXX17 = _Result; +#endif +}; + +#if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION) +_LIBCPP_DIAGNOSTIC_PUSH +_LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wdeprecated-declarations") +template +using __binary_function = binary_function<_Arg1, _Arg2, _Result>; +_LIBCPP_DIAGNOSTIC_POP +#else +template +using __binary_function = __binary_function_keep_layout_base<_Arg1, _Arg2, _Result>; +#endif + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FUNCTIONAL_BINARY_FUNCTION_H diff --git a/third_party/libcxx/__functional/binary_negate.h b/third_party/libcxx/__functional/binary_negate.h new file mode 100644 index 000000000..73ecea997 --- /dev/null +++ b/third_party/libcxx/__functional/binary_negate.h @@ -0,0 +1,50 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FUNCTIONAL_BINARY_NEGATE_H +#define _LIBCPP___FUNCTIONAL_BINARY_NEGATE_H + +#include <__config> +#include <__functional/binary_function.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_NEGATORS) + +template +class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX17 binary_negate + : public __binary_function +{ + _Predicate __pred_; +public: + _LIBCPP_INLINE_VISIBILITY explicit _LIBCPP_CONSTEXPR_SINCE_CXX14 + binary_negate(const _Predicate& __pred) : __pred_(__pred) {} + + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + bool operator()(const typename _Predicate::first_argument_type& __x, + const typename _Predicate::second_argument_type& __y) const + {return !__pred_(__x, __y);} +}; + +template +_LIBCPP_DEPRECATED_IN_CXX17 inline _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY +binary_negate<_Predicate> +not2(const _Predicate& __pred) {return binary_negate<_Predicate>(__pred);} + +#endif // _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_NEGATORS) + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FUNCTIONAL_BINARY_NEGATE_H diff --git a/third_party/libcxx/__functional/bind.h b/third_party/libcxx/__functional/bind.h new file mode 100644 index 000000000..b0c9bfe78 --- /dev/null +++ b/third_party/libcxx/__functional/bind.h @@ -0,0 +1,386 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FUNCTIONAL_BIND_H +#define _LIBCPP___FUNCTIONAL_BIND_H + +#include <__config> +#include <__functional/invoke.h> +#include <__functional/weak_result_type.h> +#include <__type_traits/decay.h> +#include <__type_traits/is_reference_wrapper.h> +#include <__type_traits/is_void.h> +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +struct is_bind_expression : _If< + _IsSame<_Tp, __remove_cvref_t<_Tp> >::value, + false_type, + is_bind_expression<__remove_cvref_t<_Tp> > +> {}; + +#if _LIBCPP_STD_VER >= 17 +template +inline constexpr bool is_bind_expression_v = is_bind_expression<_Tp>::value; +#endif + +template +struct is_placeholder : _If< + _IsSame<_Tp, __remove_cvref_t<_Tp> >::value, + integral_constant, + is_placeholder<__remove_cvref_t<_Tp> > +> {}; + +#if _LIBCPP_STD_VER >= 17 +template +inline constexpr int is_placeholder_v = is_placeholder<_Tp>::value; +#endif + +namespace placeholders +{ + +template struct __ph {}; + +// C++17 recommends that we implement placeholders as `inline constexpr`, but allows +// implementing them as `extern `. Libc++ implements them as +// `extern const` in all standard modes to avoid an ABI break in C++03: making them +// `inline constexpr` requires removing their definition in the shared library to +// avoid ODR violations, which is an ABI break. +// +// In practice, since placeholders are empty, `extern const` is almost impossible +// to distinguish from `inline constexpr` from a usage stand point. +_LIBCPP_FUNC_VIS extern const __ph<1> _1; +_LIBCPP_FUNC_VIS extern const __ph<2> _2; +_LIBCPP_FUNC_VIS extern const __ph<3> _3; +_LIBCPP_FUNC_VIS extern const __ph<4> _4; +_LIBCPP_FUNC_VIS extern const __ph<5> _5; +_LIBCPP_FUNC_VIS extern const __ph<6> _6; +_LIBCPP_FUNC_VIS extern const __ph<7> _7; +_LIBCPP_FUNC_VIS extern const __ph<8> _8; +_LIBCPP_FUNC_VIS extern const __ph<9> _9; +_LIBCPP_FUNC_VIS extern const __ph<10> _10; + +} // namespace placeholders + +template +struct is_placeholder > + : public integral_constant {}; + + +#ifndef _LIBCPP_CXX03_LANG + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +_Tp& +__mu(reference_wrapper<_Tp> __t, _Uj&) +{ + return __t.get(); +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +typename __invoke_of<_Ti&, _Uj...>::type +__mu_expand(_Ti& __ti, tuple<_Uj...>& __uj, __tuple_indices<_Indx...>) +{ + return __ti(_VSTD::forward<_Uj>(_VSTD::get<_Indx>(__uj))...); +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +typename __enable_if_t +< + is_bind_expression<_Ti>::value, + __invoke_of<_Ti&, _Uj...> +>::type +__mu(_Ti& __ti, tuple<_Uj...>& __uj) +{ + typedef typename __make_tuple_indices::type __indices; + return _VSTD::__mu_expand(__ti, __uj, __indices()); +} + +template +struct __mu_return2 {}; + +template +struct __mu_return2 +{ + typedef typename tuple_element::value - 1, _Uj>::type type; +}; + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +typename enable_if +< + 0 < is_placeholder<_Ti>::value, + typename __mu_return2<0 < is_placeholder<_Ti>::value, _Ti, _Uj>::type +>::type +__mu(_Ti&, _Uj& __uj) +{ + const size_t __indx = is_placeholder<_Ti>::value - 1; + return _VSTD::forward::type>(_VSTD::get<__indx>(__uj)); +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +typename enable_if +< + !is_bind_expression<_Ti>::value && + is_placeholder<_Ti>::value == 0 && + !__is_reference_wrapper<_Ti>::value, + _Ti& +>::type +__mu(_Ti& __ti, _Uj&) +{ + return __ti; +} + +template +struct __mu_return_impl; + +template +struct __mu_return_invokable // false +{ + typedef __nat type; +}; + +template +struct __mu_return_invokable +{ + typedef typename __invoke_of<_Ti&, _Uj...>::type type; +}; + +template +struct __mu_return_impl<_Ti, false, true, false, tuple<_Uj...> > + : public __mu_return_invokable<__invokable<_Ti&, _Uj...>::value, _Ti, _Uj...> +{ +}; + +template +struct __mu_return_impl<_Ti, false, false, true, _TupleUj> +{ + typedef typename tuple_element::value - 1, + _TupleUj>::type&& type; +}; + +template +struct __mu_return_impl<_Ti, true, false, false, _TupleUj> +{ + typedef typename _Ti::type& type; +}; + +template +struct __mu_return_impl<_Ti, false, false, false, _TupleUj> +{ + typedef _Ti& type; +}; + +template +struct __mu_return + : public __mu_return_impl<_Ti, + __is_reference_wrapper<_Ti>::value, + is_bind_expression<_Ti>::value, + 0 < is_placeholder<_Ti>::value && + is_placeholder<_Ti>::value <= tuple_size<_TupleUj>::value, + _TupleUj> +{ +}; + +template +struct __is_valid_bind_return +{ + static const bool value = false; +}; + +template +struct __is_valid_bind_return<_Fp, tuple<_BoundArgs...>, _TupleUj> +{ + static const bool value = __invokable<_Fp, + typename __mu_return<_BoundArgs, _TupleUj>::type...>::value; +}; + +template +struct __is_valid_bind_return<_Fp, const tuple<_BoundArgs...>, _TupleUj> +{ + static const bool value = __invokable<_Fp, + typename __mu_return::type...>::value; +}; + +template ::value> +struct __bind_return; + +template +struct __bind_return<_Fp, tuple<_BoundArgs...>, _TupleUj, true> +{ + typedef typename __invoke_of + < + _Fp&, + typename __mu_return + < + _BoundArgs, + _TupleUj + >::type... + >::type type; +}; + +template +struct __bind_return<_Fp, const tuple<_BoundArgs...>, _TupleUj, true> +{ + typedef typename __invoke_of + < + _Fp&, + typename __mu_return + < + const _BoundArgs, + _TupleUj + >::type... + >::type type; +}; + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +typename __bind_return<_Fp, _BoundArgs, _Args>::type +__apply_functor(_Fp& __f, _BoundArgs& __bound_args, __tuple_indices<_Indx...>, + _Args&& __args) +{ + return _VSTD::__invoke(__f, _VSTD::__mu(_VSTD::get<_Indx>(__bound_args), __args)...); +} + +template +class __bind : public __weak_result_type<__decay_t<_Fp> > +{ +protected: + using _Fd = __decay_t<_Fp>; + typedef tuple<__decay_t<_BoundArgs>...> _Td; +private: + _Fd __f_; + _Td __bound_args_; + + typedef typename __make_tuple_indices::type __indices; +public: + template ::value && + !is_same<__libcpp_remove_reference_t<_Gp>, + __bind>::value + >::type> + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 + explicit __bind(_Gp&& __f, _BA&& ...__bound_args) + : __f_(_VSTD::forward<_Gp>(__f)), + __bound_args_(_VSTD::forward<_BA>(__bound_args)...) {} + + template + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 + typename __bind_return<_Fd, _Td, tuple<_Args&&...> >::type + operator()(_Args&& ...__args) + { + return _VSTD::__apply_functor(__f_, __bound_args_, __indices(), + tuple<_Args&&...>(_VSTD::forward<_Args>(__args)...)); + } + + template + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 + typename __bind_return >::type + operator()(_Args&& ...__args) const + { + return _VSTD::__apply_functor(__f_, __bound_args_, __indices(), + tuple<_Args&&...>(_VSTD::forward<_Args>(__args)...)); + } +}; + +template +struct is_bind_expression<__bind<_Fp, _BoundArgs...> > : public true_type {}; + +template +class __bind_r + : public __bind<_Fp, _BoundArgs...> +{ + typedef __bind<_Fp, _BoundArgs...> base; + typedef typename base::_Fd _Fd; + typedef typename base::_Td _Td; +public: + typedef _Rp result_type; + + + template ::value && + !is_same<__libcpp_remove_reference_t<_Gp>, + __bind_r>::value + >::type> + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 + explicit __bind_r(_Gp&& __f, _BA&& ...__bound_args) + : base(_VSTD::forward<_Gp>(__f), + _VSTD::forward<_BA>(__bound_args)...) {} + + template + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 + typename enable_if + < + is_convertible >::type, + result_type>::value || is_void<_Rp>::value, + result_type + >::type + operator()(_Args&& ...__args) + { + typedef __invoke_void_return_wrapper<_Rp> _Invoker; + return _Invoker::__call(static_cast(*this), _VSTD::forward<_Args>(__args)...); + } + + template + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 + typename enable_if + < + is_convertible >::type, + result_type>::value || is_void<_Rp>::value, + result_type + >::type + operator()(_Args&& ...__args) const + { + typedef __invoke_void_return_wrapper<_Rp> _Invoker; + return _Invoker::__call(static_cast(*this), _VSTD::forward<_Args>(__args)...); + } +}; + +template +struct is_bind_expression<__bind_r<_Rp, _Fp, _BoundArgs...> > : public true_type {}; + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +__bind<_Fp, _BoundArgs...> +bind(_Fp&& __f, _BoundArgs&&... __bound_args) +{ + typedef __bind<_Fp, _BoundArgs...> type; + return type(_VSTD::forward<_Fp>(__f), _VSTD::forward<_BoundArgs>(__bound_args)...); +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +__bind_r<_Rp, _Fp, _BoundArgs...> +bind(_Fp&& __f, _BoundArgs&&... __bound_args) +{ + typedef __bind_r<_Rp, _Fp, _BoundArgs...> type; + return type(_VSTD::forward<_Fp>(__f), _VSTD::forward<_BoundArgs>(__bound_args)...); +} + +#endif // _LIBCPP_CXX03_LANG + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FUNCTIONAL_BIND_H diff --git a/third_party/libcxx/__functional/bind_back.h b/third_party/libcxx/__functional/bind_back.h new file mode 100644 index 000000000..71dc63c86 --- /dev/null +++ b/third_party/libcxx/__functional/bind_back.h @@ -0,0 +1,64 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FUNCTIONAL_BIND_BACK_H +#define _LIBCPP___FUNCTIONAL_BIND_BACK_H + +#include <__config> +#include <__functional/invoke.h> +#include <__functional/perfect_forward.h> +#include <__type_traits/decay.h> +#include <__utility/forward.h> +#include <__utility/integer_sequence.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +template > +struct __bind_back_op; + +template +struct __bind_back_op<_NBound, index_sequence<_Ip...>> { + template + _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Fn&& __f, _BoundArgs&& __bound_args, _Args&&... __args) const + noexcept(noexcept(_VSTD::invoke(_VSTD::forward<_Fn>(__f), _VSTD::forward<_Args>(__args)..., _VSTD::get<_Ip>(_VSTD::forward<_BoundArgs>(__bound_args))...))) + -> decltype( _VSTD::invoke(_VSTD::forward<_Fn>(__f), _VSTD::forward<_Args>(__args)..., _VSTD::get<_Ip>(_VSTD::forward<_BoundArgs>(__bound_args))...)) + { return _VSTD::invoke(_VSTD::forward<_Fn>(__f), _VSTD::forward<_Args>(__args)..., _VSTD::get<_Ip>(_VSTD::forward<_BoundArgs>(__bound_args))...); } +}; + +template +struct __bind_back_t : __perfect_forward<__bind_back_op>, _Fn, _BoundArgs> { + using __perfect_forward<__bind_back_op>, _Fn, _BoundArgs>::__perfect_forward; +}; + +template , _Fn>, + is_move_constructible>, + is_constructible, _Args>..., + is_move_constructible>... + >::value +>> +_LIBCPP_HIDE_FROM_ABI +constexpr auto __bind_back(_Fn&& __f, _Args&&... __args) + noexcept(noexcept(__bind_back_t, tuple...>>(_VSTD::forward<_Fn>(__f), _VSTD::forward_as_tuple(_VSTD::forward<_Args>(__args)...)))) + -> decltype( __bind_back_t, tuple...>>(_VSTD::forward<_Fn>(__f), _VSTD::forward_as_tuple(_VSTD::forward<_Args>(__args)...))) + { return __bind_back_t, tuple...>>(_VSTD::forward<_Fn>(__f), _VSTD::forward_as_tuple(_VSTD::forward<_Args>(__args)...)); } + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FUNCTIONAL_BIND_BACK_H diff --git a/third_party/libcxx/__functional/bind_front.h b/third_party/libcxx/__functional/bind_front.h new file mode 100644 index 000000000..72bb66480 --- /dev/null +++ b/third_party/libcxx/__functional/bind_front.h @@ -0,0 +1,62 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FUNCTIONAL_BIND_FRONT_H +#define _LIBCPP___FUNCTIONAL_BIND_FRONT_H + +#include <__config> +#include <__functional/invoke.h> +#include <__functional/perfect_forward.h> +#include <__type_traits/conjunction.h> +#include <__type_traits/decay.h> +#include <__type_traits/enable_if.h> +#include <__type_traits/is_constructible.h> +#include <__type_traits/is_move_constructible.h> +#include <__utility/forward.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +struct __bind_front_op { + template + _LIBCPP_HIDE_FROM_ABI + constexpr auto operator()(_Args&& ...__args) const + noexcept(noexcept(_VSTD::invoke(_VSTD::forward<_Args>(__args)...))) + -> decltype( _VSTD::invoke(_VSTD::forward<_Args>(__args)...)) + { return _VSTD::invoke(_VSTD::forward<_Args>(__args)...); } +}; + +template +struct __bind_front_t : __perfect_forward<__bind_front_op, _Fn, _BoundArgs...> { + using __perfect_forward<__bind_front_op, _Fn, _BoundArgs...>::__perfect_forward; +}; + +template , _Fn>, + is_move_constructible>, + is_constructible, _Args>..., + is_move_constructible>... + >::value +>> +_LIBCPP_HIDE_FROM_ABI +constexpr auto bind_front(_Fn&& __f, _Args&&... __args) { + return __bind_front_t, decay_t<_Args>...>(_VSTD::forward<_Fn>(__f), _VSTD::forward<_Args>(__args)...); +} + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FUNCTIONAL_BIND_FRONT_H diff --git a/third_party/libcxx/__functional/binder1st.h b/third_party/libcxx/__functional/binder1st.h new file mode 100644 index 000000000..dea22c70e --- /dev/null +++ b/third_party/libcxx/__functional/binder1st.h @@ -0,0 +1,53 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FUNCTIONAL_BINDER1ST_H +#define _LIBCPP___FUNCTIONAL_BINDER1ST_H + +#include <__config> +#include <__functional/unary_function.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS) + +template +class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 binder1st + : public __unary_function +{ +protected: + __Operation op; + typename __Operation::first_argument_type value; +public: + _LIBCPP_INLINE_VISIBILITY binder1st(const __Operation& __x, + const typename __Operation::first_argument_type __y) + : op(__x), value(__y) {} + _LIBCPP_INLINE_VISIBILITY typename __Operation::result_type operator() + (typename __Operation::second_argument_type& __x) const + {return op(value, __x);} + _LIBCPP_INLINE_VISIBILITY typename __Operation::result_type operator() + (const typename __Operation::second_argument_type& __x) const + {return op(value, __x);} +}; + +template +_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY +binder1st<__Operation> +bind1st(const __Operation& __op, const _Tp& __x) + {return binder1st<__Operation>(__op, __x);} + +#endif // _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS) + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FUNCTIONAL_BINDER1ST_H diff --git a/third_party/libcxx/__functional/binder2nd.h b/third_party/libcxx/__functional/binder2nd.h new file mode 100644 index 000000000..c98a146b6 --- /dev/null +++ b/third_party/libcxx/__functional/binder2nd.h @@ -0,0 +1,53 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FUNCTIONAL_BINDER2ND_H +#define _LIBCPP___FUNCTIONAL_BINDER2ND_H + +#include <__config> +#include <__functional/unary_function.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS) + +template +class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 binder2nd + : public __unary_function +{ +protected: + __Operation op; + typename __Operation::second_argument_type value; +public: + _LIBCPP_INLINE_VISIBILITY + binder2nd(const __Operation& __x, const typename __Operation::second_argument_type __y) + : op(__x), value(__y) {} + _LIBCPP_INLINE_VISIBILITY typename __Operation::result_type operator() + ( typename __Operation::first_argument_type& __x) const + {return op(__x, value);} + _LIBCPP_INLINE_VISIBILITY typename __Operation::result_type operator() + (const typename __Operation::first_argument_type& __x) const + {return op(__x, value);} +}; + +template +_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY +binder2nd<__Operation> +bind2nd(const __Operation& __op, const _Tp& __x) + {return binder2nd<__Operation>(__op, __x);} + +#endif // _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS) + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FUNCTIONAL_BINDER2ND_H diff --git a/third_party/libcxx/__functional/boyer_moore_searcher.h b/third_party/libcxx/__functional/boyer_moore_searcher.h new file mode 100644 index 000000000..d9d662714 --- /dev/null +++ b/third_party/libcxx/__functional/boyer_moore_searcher.h @@ -0,0 +1,316 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FUNCTIONAL_BOYER_MOORE_SEARCHER_H +#define _LIBCPP___FUNCTIONAL_BOYER_MOORE_SEARCHER_H + +#include <__algorithm/fill_n.h> +#include <__config> +#include <__functional/hash.h> +#include <__functional/operations.h> +#include <__iterator/distance.h> +#include <__iterator/iterator_traits.h> +#include <__memory/shared_ptr.h> +#include <__type_traits/make_unsigned.h> +#include <__utility/pair.h> +#include +#include +#include + +#if _LIBCPP_STD_VER >= 17 + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +class _BMSkipTable; + +// General case for BM data searching; use a map +template +class _BMSkipTable<_Key, _Value, _Hash, _BinaryPredicate, false> { +private: + using value_type = _Value; + using key_type = _Key; + + const value_type __default_value_; + unordered_map<_Key, _Value, _Hash, _BinaryPredicate> __table_; + +public: + _LIBCPP_HIDE_FROM_ABI + explicit _BMSkipTable(size_t __sz, value_type __default_value, _Hash __hash, _BinaryPredicate __pred) + : __default_value_(__default_value), + __table_(__sz, __hash, __pred) {} + + _LIBCPP_HIDE_FROM_ABI void insert(const key_type& __key, value_type __val) { + __table_[__key] = __val; + } + + _LIBCPP_HIDE_FROM_ABI value_type operator[](const key_type& __key) const { + auto __it = __table_.find(__key); + return __it == __table_.end() ? __default_value_ : __it->second; + } +}; + +// Special case small numeric values; use an array +template +class _BMSkipTable<_Key, _Value, _Hash, _BinaryPredicate, true> { +private: + using value_type = _Value; + using key_type = _Key; + + using unsigned_key_type = make_unsigned_t; + std::array __table_; + static_assert(numeric_limits::max() < 256); + +public: + _LIBCPP_HIDE_FROM_ABI explicit _BMSkipTable(size_t, value_type __default_value, _Hash, _BinaryPredicate) { + std::fill_n(__table_.data(), __table_.size(), __default_value); + } + + _LIBCPP_HIDE_FROM_ABI void insert(key_type __key, value_type __val) { + __table_[static_cast(__key)] = __val; + } + + _LIBCPP_HIDE_FROM_ABI value_type operator[](key_type __key) const { + return __table_[static_cast(__key)]; + } +}; + +template ::value_type>, + class _BinaryPredicate = equal_to<>> +class _LIBCPP_TEMPLATE_VIS boyer_moore_searcher { +private: + using difference_type = typename std::iterator_traits<_RandomAccessIterator1>::difference_type; + using value_type = typename std::iterator_traits<_RandomAccessIterator1>::value_type; + using __skip_table_type = _BMSkipTable + && sizeof(value_type) == 1 + && is_same_v<_Hash, hash> + && is_same_v<_BinaryPredicate, equal_to<>>>; + +public: + _LIBCPP_HIDE_FROM_ABI + boyer_moore_searcher(_RandomAccessIterator1 __first, + _RandomAccessIterator1 __last, + _Hash __hash = _Hash(), + _BinaryPredicate __pred = _BinaryPredicate()) + : __first_(__first), + __last_(__last), + __pred_(__pred), + __pattern_length_(__last - __first), + __skip_table_(std::make_shared<__skip_table_type>(__pattern_length_, -1, __hash, __pred_)), + __suffix_(std::__allocate_shared_unbounded_array( + allocator(), __pattern_length_ + 1)) { + difference_type __i = 0; + while (__first != __last) { + __skip_table_->insert(*__first, __i); + ++__first; + ++__i; + } + __build_suffix_table(__first_, __last_, __pred_); + } + + template + _LIBCPP_HIDE_FROM_ABI pair<_RandomAccessIterator2, _RandomAccessIterator2> + operator()(_RandomAccessIterator2 __first, _RandomAccessIterator2 __last) const { + static_assert(__is_same_uncvref::value_type, + typename iterator_traits<_RandomAccessIterator2>::value_type>::value, + "Corpus and Pattern iterators must point to the same type"); + if (__first == __last) + return std::make_pair(__last, __last); + if (__first_ == __last_) + return std::make_pair(__first, __first); + + if (__pattern_length_ > (__last - __first)) + return std::make_pair(__last, __last); + return __search(__first, __last); + } + +private: + _RandomAccessIterator1 __first_; + _RandomAccessIterator1 __last_; + _BinaryPredicate __pred_; + difference_type __pattern_length_; + shared_ptr<__skip_table_type> __skip_table_; + shared_ptr __suffix_; + + template + _LIBCPP_HIDE_FROM_ABI pair<_RandomAccessIterator2, _RandomAccessIterator2> + __search(_RandomAccessIterator2 __f, _RandomAccessIterator2 __l) const { + _RandomAccessIterator2 __current = __f; + const _RandomAccessIterator2 __last = __l - __pattern_length_; + const __skip_table_type& __skip_table = *__skip_table_; + + while (__current <= __last) { + difference_type __j = __pattern_length_; + while (__pred_(__first_[__j - 1], __current[__j - 1])) { + --__j; + if (__j == 0) + return std::make_pair(__current, __current + __pattern_length_); + } + + difference_type __k = __skip_table[__current[__j - 1]]; + difference_type __m = __j - __k - 1; + if (__k < __j && __m > __suffix_[__j]) + __current += __m; + else + __current += __suffix_[__j]; + } + return std::make_pair(__l, __l); + } + + template + _LIBCPP_HIDE_FROM_ABI void + __compute_bm_prefix(_Iterator __first, _Iterator __last, _BinaryPredicate __pred, _Container& __prefix) { + const size_t __count = __last - __first; + + __prefix[0] = 0; + size_t __k = 0; + + for (size_t __i = 1; __i != __count; ++__i) { + while (__k > 0 && !__pred(__first[__k], __first[__i])) + __k = __prefix[__k - 1]; + + if (__pred(__first[__k], __first[__i])) + ++__k; + __prefix[__i] = __k; + } + } + + _LIBCPP_HIDE_FROM_ABI void + __build_suffix_table(_RandomAccessIterator1 __first, _RandomAccessIterator1 __last, _BinaryPredicate __pred) { + const size_t __count = __last - __first; + + if (__count == 0) + return; + + vector __scratch(__count); + + __compute_bm_prefix(__first, __last, __pred, __scratch); + for (size_t __i = 0; __i <= __count; ++__i) + __suffix_[__i] = __count - __scratch[__count - 1]; + + using _ReverseIter = reverse_iterator<_RandomAccessIterator1>; + __compute_bm_prefix(_ReverseIter(__last), _ReverseIter(__first), __pred, __scratch); + + for (size_t __i = 0; __i != __count; ++__i) { + const size_t __j = __count - __scratch[__i]; + const difference_type __k = __i - __scratch[__i] + 1; + + if (__suffix_[__j] > __k) + __suffix_[__j] = __k; + } + } +}; +_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(boyer_moore_searcher); + +template ::value_type>, + class _BinaryPredicate = equal_to<>> +class _LIBCPP_TEMPLATE_VIS boyer_moore_horspool_searcher { +private: + using difference_type = typename iterator_traits<_RandomAccessIterator1>::difference_type; + using value_type = typename iterator_traits<_RandomAccessIterator1>::value_type; + using __skip_table_type = _BMSkipTable + && sizeof(value_type) == 1 + && is_same_v<_Hash, hash> + && is_same_v<_BinaryPredicate, equal_to<>>>; +public: + _LIBCPP_HIDE_FROM_ABI + boyer_moore_horspool_searcher(_RandomAccessIterator1 __first, + _RandomAccessIterator1 __last, + _Hash __hash = _Hash(), + _BinaryPredicate __pred = _BinaryPredicate()) + : __first_(__first), + __last_(__last), + __pred_(__pred), + __pattern_length_(__last - __first), + __skip_table_(std::make_shared<__skip_table_type>(__pattern_length_, __pattern_length_, __hash, __pred_)) { + if (__first == __last) + return; + --__last; + difference_type __i = 0; + while (__first != __last) { + __skip_table_->insert(*__first, __pattern_length_ - 1 - __i); + ++__first; + ++__i; + } + } + + template + _LIBCPP_HIDE_FROM_ABI pair<_RandomAccessIterator2, _RandomAccessIterator2> + operator()(_RandomAccessIterator2 __first, _RandomAccessIterator2 __last) const { + static_assert(__is_same_uncvref::value_type, + typename std::iterator_traits<_RandomAccessIterator2>::value_type>::value, + "Corpus and Pattern iterators must point to the same type"); + if (__first == __last) + return std::make_pair(__last, __last); + if (__first_ == __last_) + return std::make_pair(__first, __first); + + if (__pattern_length_ > __last - __first) + return std::make_pair(__last, __last); + + return __search(__first, __last); + } + +private: + _RandomAccessIterator1 __first_; + _RandomAccessIterator1 __last_; + _BinaryPredicate __pred_; + difference_type __pattern_length_; + shared_ptr<__skip_table_type> __skip_table_; + + template + _LIBCPP_HIDE_FROM_ABI pair<_RandomAccessIterator2, _RandomAccessIterator2> + __search(_RandomAccessIterator2 __f, _RandomAccessIterator2 __l) const { + _RandomAccessIterator2 __current = __f; + const _RandomAccessIterator2 __last = __l - __pattern_length_; + const __skip_table_type& __skip_table = *__skip_table_; + + while (__current <= __last) { + difference_type __j = __pattern_length_; + while (__pred_(__first_[__j - 1], __current[__j - 1])) { + --__j; + if (__j == 0) + return std::make_pair(__current, __current + __pattern_length_); + } + __current += __skip_table[__current[__pattern_length_ - 1]]; + } + return std::make_pair(__l, __l); + } +}; +_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(boyer_moore_horspool_searcher); + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP_STD_VER >= 17 + +#endif // _LIBCPP___FUNCTIONAL_BOYER_MOORE_SEARCHER_H diff --git a/third_party/libcxx/__functional/compose.h b/third_party/libcxx/__functional/compose.h new file mode 100644 index 000000000..80fcd7076 --- /dev/null +++ b/third_party/libcxx/__functional/compose.h @@ -0,0 +1,52 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FUNCTIONAL_COMPOSE_H +#define _LIBCPP___FUNCTIONAL_COMPOSE_H + +#include <__config> +#include <__functional/invoke.h> +#include <__functional/perfect_forward.h> +#include <__type_traits/decay.h> +#include <__utility/forward.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +struct __compose_op { + template + _LIBCPP_HIDE_FROM_ABI + constexpr auto operator()(_Fn1&& __f1, _Fn2&& __f2, _Args&&... __args) const + noexcept(noexcept(_VSTD::invoke(_VSTD::forward<_Fn1>(__f1), _VSTD::invoke(_VSTD::forward<_Fn2>(__f2), _VSTD::forward<_Args>(__args)...)))) + -> decltype( _VSTD::invoke(_VSTD::forward<_Fn1>(__f1), _VSTD::invoke(_VSTD::forward<_Fn2>(__f2), _VSTD::forward<_Args>(__args)...))) + { return _VSTD::invoke(_VSTD::forward<_Fn1>(__f1), _VSTD::invoke(_VSTD::forward<_Fn2>(__f2), _VSTD::forward<_Args>(__args)...)); } +}; + +template +struct __compose_t : __perfect_forward<__compose_op, _Fn1, _Fn2> { + using __perfect_forward<__compose_op, _Fn1, _Fn2>::__perfect_forward; +}; + +template +_LIBCPP_HIDE_FROM_ABI +constexpr auto __compose(_Fn1&& __f1, _Fn2&& __f2) + noexcept(noexcept(__compose_t, decay_t<_Fn2>>(_VSTD::forward<_Fn1>(__f1), _VSTD::forward<_Fn2>(__f2)))) + -> decltype( __compose_t, decay_t<_Fn2>>(_VSTD::forward<_Fn1>(__f1), _VSTD::forward<_Fn2>(__f2))) + { return __compose_t, decay_t<_Fn2>>(_VSTD::forward<_Fn1>(__f1), _VSTD::forward<_Fn2>(__f2)); } + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FUNCTIONAL_COMPOSE_H diff --git a/third_party/libcxx/__functional/default_searcher.h b/third_party/libcxx/__functional/default_searcher.h new file mode 100644 index 000000000..222b4c66e --- /dev/null +++ b/third_party/libcxx/__functional/default_searcher.h @@ -0,0 +1,57 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FUNCTIONAL_DEFAULT_SEARCHER_H +#define _LIBCPP___FUNCTIONAL_DEFAULT_SEARCHER_H + +#include <__algorithm/search.h> +#include <__config> +#include <__functional/identity.h> +#include <__functional/operations.h> +#include <__iterator/iterator_traits.h> +#include <__utility/pair.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 17 + +// default searcher +template> +class _LIBCPP_TEMPLATE_VIS default_searcher { +public: + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 + default_searcher(_ForwardIterator __f, _ForwardIterator __l, + _BinaryPredicate __p = _BinaryPredicate()) + : __first_(__f), __last_(__l), __pred_(__p) {} + + template + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 + pair<_ForwardIterator2, _ForwardIterator2> + operator () (_ForwardIterator2 __f, _ForwardIterator2 __l) const + { + auto __proj = __identity(); + return std::__search_impl(__f, __l, __first_, __last_, __pred_, __proj, __proj); + } + +private: + _ForwardIterator __first_; + _ForwardIterator __last_; + _BinaryPredicate __pred_; +}; +_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(default_searcher); + +#endif // _LIBCPP_STD_VER >= 17 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FUNCTIONAL_DEFAULT_SEARCHER_H diff --git a/third_party/libcxx/__functional/function.h b/third_party/libcxx/__functional/function.h new file mode 100644 index 000000000..f3abba453 --- /dev/null +++ b/third_party/libcxx/__functional/function.h @@ -0,0 +1,1226 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FUNCTIONAL_FUNCTION_H +#define _LIBCPP___FUNCTIONAL_FUNCTION_H + +#include <__assert> +#include <__config> +#include <__exception/exception.h> +#include <__functional/binary_function.h> +#include <__functional/invoke.h> +#include <__functional/unary_function.h> +#include <__iterator/iterator_traits.h> +#include <__memory/addressof.h> +#include <__memory/allocator.h> +#include <__memory/allocator_destructor.h> +#include <__memory/allocator_traits.h> +#include <__memory/builtin_new_allocator.h> +#include <__memory/compressed_pair.h> +#include <__memory/unique_ptr.h> +#include <__type_traits/aligned_storage.h> +#include <__type_traits/decay.h> +#include <__type_traits/is_core_convertible.h> +#include <__type_traits/is_scalar.h> +#include <__type_traits/is_trivially_copy_constructible.h> +#include <__type_traits/is_trivially_destructible.h> +#include <__type_traits/is_void.h> +#include <__type_traits/strip_signature.h> +#include <__utility/forward.h> +#include <__utility/move.h> +#include <__utility/piecewise_construct.h> +#include <__utility/swap.h> +#include <__verbose_abort> +#include +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#ifndef _LIBCPP_CXX03_LANG + +_LIBCPP_BEGIN_NAMESPACE_STD + +// bad_function_call + +_LIBCPP_DIAGNOSTIC_PUSH +_LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wweak-vtables") +class _LIBCPP_EXCEPTION_ABI bad_function_call + : public exception +{ +public: +// Note that when a key function is not used, every translation unit that uses +// bad_function_call will end up containing a weak definition of the vtable and +// typeinfo. +#ifdef _LIBCPP_ABI_BAD_FUNCTION_CALL_KEY_FUNCTION + ~bad_function_call() _NOEXCEPT override; +#else + _LIBCPP_HIDE_FROM_ABI_VIRTUAL ~bad_function_call() _NOEXCEPT override {} +#endif + +#ifdef _LIBCPP_ABI_BAD_FUNCTION_CALL_GOOD_WHAT_MESSAGE + const char* what() const _NOEXCEPT override; +#endif +}; +_LIBCPP_DIAGNOSTIC_POP + +_LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY +void __throw_bad_function_call() +{ +#ifndef _LIBCPP_HAS_NO_EXCEPTIONS + throw bad_function_call(); +#else + _LIBCPP_VERBOSE_ABORT("bad_function_call was thrown in -fno-exceptions mode"); +#endif +} + +template class _LIBCPP_TEMPLATE_VIS function; // undefined + +namespace __function +{ + +template +struct __maybe_derive_from_unary_function +{ +}; + +template +struct __maybe_derive_from_unary_function<_Rp(_A1)> + : public __unary_function<_A1, _Rp> +{ +}; + +template +struct __maybe_derive_from_binary_function +{ +}; + +template +struct __maybe_derive_from_binary_function<_Rp(_A1, _A2)> + : public __binary_function<_A1, _A2, _Rp> +{ +}; + +template +_LIBCPP_INLINE_VISIBILITY +bool __not_null(_Fp const&) { return true; } + +template +_LIBCPP_INLINE_VISIBILITY +bool __not_null(_Fp* __ptr) { return __ptr; } + +template +_LIBCPP_INLINE_VISIBILITY +bool __not_null(_Ret _Class::*__ptr) { return __ptr; } + +template +_LIBCPP_INLINE_VISIBILITY +bool __not_null(function<_Fp> const& __f) { return !!__f; } + +#ifdef _LIBCPP_HAS_EXTENSION_BLOCKS +template +_LIBCPP_INLINE_VISIBILITY +bool __not_null(_Rp (^__p)(_Args...)) { return __p; } +#endif + +} // namespace __function + +namespace __function { + +// __alloc_func holds a functor and an allocator. + +template class __alloc_func; +template +class __default_alloc_func; + +template +class __alloc_func<_Fp, _Ap, _Rp(_ArgTypes...)> +{ + __compressed_pair<_Fp, _Ap> __f_; + + public: + typedef _LIBCPP_NODEBUG _Fp _Target; + typedef _LIBCPP_NODEBUG _Ap _Alloc; + + _LIBCPP_INLINE_VISIBILITY + const _Target& __target() const { return __f_.first(); } + + // WIN32 APIs may define __allocator, so use __get_allocator instead. + _LIBCPP_INLINE_VISIBILITY + const _Alloc& __get_allocator() const { return __f_.second(); } + + _LIBCPP_INLINE_VISIBILITY + explicit __alloc_func(_Target&& __f) + : __f_(piecewise_construct, _VSTD::forward_as_tuple(_VSTD::move(__f)), + _VSTD::forward_as_tuple()) + { + } + + _LIBCPP_INLINE_VISIBILITY + explicit __alloc_func(const _Target& __f, const _Alloc& __a) + : __f_(piecewise_construct, _VSTD::forward_as_tuple(__f), + _VSTD::forward_as_tuple(__a)) + { + } + + _LIBCPP_INLINE_VISIBILITY + explicit __alloc_func(const _Target& __f, _Alloc&& __a) + : __f_(piecewise_construct, _VSTD::forward_as_tuple(__f), + _VSTD::forward_as_tuple(_VSTD::move(__a))) + { + } + + _LIBCPP_INLINE_VISIBILITY + explicit __alloc_func(_Target&& __f, _Alloc&& __a) + : __f_(piecewise_construct, _VSTD::forward_as_tuple(_VSTD::move(__f)), + _VSTD::forward_as_tuple(_VSTD::move(__a))) + { + } + + _LIBCPP_INLINE_VISIBILITY + _Rp operator()(_ArgTypes&&... __arg) + { + typedef __invoke_void_return_wrapper<_Rp> _Invoker; + return _Invoker::__call(__f_.first(), + _VSTD::forward<_ArgTypes>(__arg)...); + } + + _LIBCPP_INLINE_VISIBILITY + __alloc_func* __clone() const + { + typedef allocator_traits<_Alloc> __alloc_traits; + typedef __rebind_alloc<__alloc_traits, __alloc_func> _AA; + _AA __a(__f_.second()); + typedef __allocator_destructor<_AA> _Dp; + unique_ptr<__alloc_func, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); + ::new ((void*)__hold.get()) __alloc_func(__f_.first(), _Alloc(__a)); + return __hold.release(); + } + + _LIBCPP_INLINE_VISIBILITY + void destroy() _NOEXCEPT { __f_.~__compressed_pair<_Target, _Alloc>(); } + + _LIBCPP_HIDE_FROM_ABI static void __destroy_and_delete(__alloc_func* __f) { + typedef allocator_traits<_Alloc> __alloc_traits; + typedef __rebind_alloc<__alloc_traits, __alloc_func> _FunAlloc; + _FunAlloc __a(__f->__get_allocator()); + __f->destroy(); + __a.deallocate(__f, 1); + } +}; + +template +class __default_alloc_func<_Fp, _Rp(_ArgTypes...)> { + _Fp __f_; + +public: + typedef _LIBCPP_NODEBUG _Fp _Target; + + _LIBCPP_INLINE_VISIBILITY + const _Target& __target() const { return __f_; } + + _LIBCPP_INLINE_VISIBILITY + explicit __default_alloc_func(_Target&& __f) : __f_(_VSTD::move(__f)) {} + + _LIBCPP_INLINE_VISIBILITY + explicit __default_alloc_func(const _Target& __f) : __f_(__f) {} + + _LIBCPP_INLINE_VISIBILITY + _Rp operator()(_ArgTypes&&... __arg) { + typedef __invoke_void_return_wrapper<_Rp> _Invoker; + return _Invoker::__call(__f_, _VSTD::forward<_ArgTypes>(__arg)...); + } + + _LIBCPP_INLINE_VISIBILITY + __default_alloc_func* __clone() const { + __builtin_new_allocator::__holder_t __hold = + __builtin_new_allocator::__allocate_type<__default_alloc_func>(1); + __default_alloc_func* __res = + ::new ((void*)__hold.get()) __default_alloc_func(__f_); + (void)__hold.release(); + return __res; + } + + _LIBCPP_INLINE_VISIBILITY + void destroy() _NOEXCEPT { __f_.~_Target(); } + + _LIBCPP_HIDE_FROM_ABI static void __destroy_and_delete(__default_alloc_func* __f) { + __f->destroy(); + __builtin_new_allocator::__deallocate_type<__default_alloc_func>(__f, 1); + } +}; + +// __base provides an abstract interface for copyable functors. + +template class _LIBCPP_TEMPLATE_VIS __base; + +template +class __base<_Rp(_ArgTypes...)> +{ + __base(const __base&); + __base& operator=(const __base&); +public: + _LIBCPP_INLINE_VISIBILITY __base() {} + _LIBCPP_HIDE_FROM_ABI_VIRTUAL virtual ~__base() {} + virtual __base* __clone() const = 0; + virtual void __clone(__base*) const = 0; + virtual void destroy() _NOEXCEPT = 0; + virtual void destroy_deallocate() _NOEXCEPT = 0; + virtual _Rp operator()(_ArgTypes&& ...) = 0; +#ifndef _LIBCPP_HAS_NO_RTTI + virtual const void* target(const type_info&) const _NOEXCEPT = 0; + virtual const std::type_info& target_type() const _NOEXCEPT = 0; +#endif // _LIBCPP_HAS_NO_RTTI +}; + +// __func implements __base for a given functor type. + +template class __func; + +template +class __func<_Fp, _Alloc, _Rp(_ArgTypes...)> + : public __base<_Rp(_ArgTypes...)> +{ + __alloc_func<_Fp, _Alloc, _Rp(_ArgTypes...)> __f_; +public: + _LIBCPP_INLINE_VISIBILITY + explicit __func(_Fp&& __f) + : __f_(_VSTD::move(__f)) {} + + _LIBCPP_INLINE_VISIBILITY + explicit __func(const _Fp& __f, const _Alloc& __a) + : __f_(__f, __a) {} + + _LIBCPP_INLINE_VISIBILITY + explicit __func(const _Fp& __f, _Alloc&& __a) + : __f_(__f, _VSTD::move(__a)) {} + + _LIBCPP_INLINE_VISIBILITY + explicit __func(_Fp&& __f, _Alloc&& __a) + : __f_(_VSTD::move(__f), _VSTD::move(__a)) {} + + _LIBCPP_HIDE_FROM_ABI_VIRTUAL virtual __base<_Rp(_ArgTypes...)>* __clone() const; + _LIBCPP_HIDE_FROM_ABI_VIRTUAL virtual void __clone(__base<_Rp(_ArgTypes...)>*) const; + _LIBCPP_HIDE_FROM_ABI_VIRTUAL virtual void destroy() _NOEXCEPT; + _LIBCPP_HIDE_FROM_ABI_VIRTUAL virtual void destroy_deallocate() _NOEXCEPT; + _LIBCPP_HIDE_FROM_ABI_VIRTUAL virtual _Rp operator()(_ArgTypes&&... __arg); +#ifndef _LIBCPP_HAS_NO_RTTI + _LIBCPP_HIDE_FROM_ABI_VIRTUAL virtual const void* target(const type_info&) const _NOEXCEPT; + _LIBCPP_HIDE_FROM_ABI_VIRTUAL virtual const std::type_info& target_type() const _NOEXCEPT; +#endif // _LIBCPP_HAS_NO_RTTI +}; + +template +__base<_Rp(_ArgTypes...)>* +__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::__clone() const +{ + typedef allocator_traits<_Alloc> __alloc_traits; + typedef __rebind_alloc<__alloc_traits, __func> _Ap; + _Ap __a(__f_.__get_allocator()); + typedef __allocator_destructor<_Ap> _Dp; + unique_ptr<__func, _Dp> __hold(__a.allocate(1), _Dp(__a, 1)); + ::new ((void*)__hold.get()) __func(__f_.__target(), _Alloc(__a)); + return __hold.release(); +} + +template +void +__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::__clone(__base<_Rp(_ArgTypes...)>* __p) const +{ + ::new ((void*)__p) __func(__f_.__target(), __f_.__get_allocator()); +} + +template +void +__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::destroy() _NOEXCEPT +{ + __f_.destroy(); +} + +template +void +__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::destroy_deallocate() _NOEXCEPT +{ + typedef allocator_traits<_Alloc> __alloc_traits; + typedef __rebind_alloc<__alloc_traits, __func> _Ap; + _Ap __a(__f_.__get_allocator()); + __f_.destroy(); + __a.deallocate(this, 1); +} + +template +_Rp +__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::operator()(_ArgTypes&& ... __arg) +{ + return __f_(_VSTD::forward<_ArgTypes>(__arg)...); +} + +#ifndef _LIBCPP_HAS_NO_RTTI + +template +const void* +__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::target(const type_info& __ti) const _NOEXCEPT +{ + if (__ti == typeid(_Fp)) + return _VSTD::addressof(__f_.__target()); + return nullptr; +} + +template +const std::type_info& +__func<_Fp, _Alloc, _Rp(_ArgTypes...)>::target_type() const _NOEXCEPT +{ + return typeid(_Fp); +} + +#endif // _LIBCPP_HAS_NO_RTTI + +// __value_func creates a value-type from a __func. + +template class __value_func; + +template class __value_func<_Rp(_ArgTypes...)> +{ + _LIBCPP_SUPPRESS_DEPRECATED_PUSH + typename aligned_storage<3 * sizeof(void*)>::type __buf_; + _LIBCPP_SUPPRESS_DEPRECATED_POP + + typedef __base<_Rp(_ArgTypes...)> __func; + __func* __f_; + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_NO_CFI static __func* __as_base(void* __p) + { + return reinterpret_cast<__func*>(__p); + } + + public: + _LIBCPP_INLINE_VISIBILITY + __value_func() _NOEXCEPT : __f_(nullptr) {} + + template + _LIBCPP_INLINE_VISIBILITY __value_func(_Fp&& __f, const _Alloc& __a) + : __f_(nullptr) + { + typedef allocator_traits<_Alloc> __alloc_traits; + typedef __function::__func<_Fp, _Alloc, _Rp(_ArgTypes...)> _Fun; + typedef __rebind_alloc<__alloc_traits, _Fun> _FunAlloc; + + if (__function::__not_null(__f)) + { + _FunAlloc __af(__a); + if (sizeof(_Fun) <= sizeof(__buf_) && + is_nothrow_copy_constructible<_Fp>::value && + is_nothrow_copy_constructible<_FunAlloc>::value) + { + __f_ = + ::new ((void*)&__buf_) _Fun(_VSTD::move(__f), _Alloc(__af)); + } + else + { + typedef __allocator_destructor<_FunAlloc> _Dp; + unique_ptr<__func, _Dp> __hold(__af.allocate(1), _Dp(__af, 1)); + ::new ((void*)__hold.get()) _Fun(_VSTD::move(__f), _Alloc(__a)); + __f_ = __hold.release(); + } + } + } + + template , __value_func>::value>::type> + _LIBCPP_INLINE_VISIBILITY explicit __value_func(_Fp&& __f) + : __value_func(_VSTD::forward<_Fp>(__f), allocator<_Fp>()) {} + + _LIBCPP_INLINE_VISIBILITY + __value_func(const __value_func& __f) + { + if (__f.__f_ == nullptr) + __f_ = nullptr; + else if ((void*)__f.__f_ == &__f.__buf_) + { + __f_ = __as_base(&__buf_); + __f.__f_->__clone(__f_); + } + else + __f_ = __f.__f_->__clone(); + } + + _LIBCPP_INLINE_VISIBILITY + __value_func(__value_func&& __f) _NOEXCEPT + { + if (__f.__f_ == nullptr) + __f_ = nullptr; + else if ((void*)__f.__f_ == &__f.__buf_) + { + __f_ = __as_base(&__buf_); + __f.__f_->__clone(__f_); + } + else + { + __f_ = __f.__f_; + __f.__f_ = nullptr; + } + } + + _LIBCPP_INLINE_VISIBILITY + ~__value_func() + { + if ((void*)__f_ == &__buf_) + __f_->destroy(); + else if (__f_) + __f_->destroy_deallocate(); + } + + _LIBCPP_INLINE_VISIBILITY + __value_func& operator=(__value_func&& __f) + { + *this = nullptr; + if (__f.__f_ == nullptr) + __f_ = nullptr; + else if ((void*)__f.__f_ == &__f.__buf_) + { + __f_ = __as_base(&__buf_); + __f.__f_->__clone(__f_); + } + else + { + __f_ = __f.__f_; + __f.__f_ = nullptr; + } + return *this; + } + + _LIBCPP_INLINE_VISIBILITY + __value_func& operator=(nullptr_t) + { + __func* __f = __f_; + __f_ = nullptr; + if ((void*)__f == &__buf_) + __f->destroy(); + else if (__f) + __f->destroy_deallocate(); + return *this; + } + + _LIBCPP_INLINE_VISIBILITY + _Rp operator()(_ArgTypes&&... __args) const + { + if (__f_ == nullptr) + __throw_bad_function_call(); + return (*__f_)(_VSTD::forward<_ArgTypes>(__args)...); + } + + _LIBCPP_INLINE_VISIBILITY + void swap(__value_func& __f) _NOEXCEPT + { + if (&__f == this) + return; + if ((void*)__f_ == &__buf_ && (void*)__f.__f_ == &__f.__buf_) + { + _LIBCPP_SUPPRESS_DEPRECATED_PUSH + typename aligned_storage::type __tempbuf; + _LIBCPP_SUPPRESS_DEPRECATED_POP + __func* __t = __as_base(&__tempbuf); + __f_->__clone(__t); + __f_->destroy(); + __f_ = nullptr; + __f.__f_->__clone(__as_base(&__buf_)); + __f.__f_->destroy(); + __f.__f_ = nullptr; + __f_ = __as_base(&__buf_); + __t->__clone(__as_base(&__f.__buf_)); + __t->destroy(); + __f.__f_ = __as_base(&__f.__buf_); + } + else if ((void*)__f_ == &__buf_) + { + __f_->__clone(__as_base(&__f.__buf_)); + __f_->destroy(); + __f_ = __f.__f_; + __f.__f_ = __as_base(&__f.__buf_); + } + else if ((void*)__f.__f_ == &__f.__buf_) + { + __f.__f_->__clone(__as_base(&__buf_)); + __f.__f_->destroy(); + __f.__f_ = __f_; + __f_ = __as_base(&__buf_); + } + else + _VSTD::swap(__f_, __f.__f_); + } + + _LIBCPP_INLINE_VISIBILITY + explicit operator bool() const _NOEXCEPT { return __f_ != nullptr; } + +#ifndef _LIBCPP_HAS_NO_RTTI + _LIBCPP_INLINE_VISIBILITY + const std::type_info& target_type() const _NOEXCEPT + { + if (__f_ == nullptr) + return typeid(void); + return __f_->target_type(); + } + + template + _LIBCPP_INLINE_VISIBILITY const _Tp* target() const _NOEXCEPT + { + if (__f_ == nullptr) + return nullptr; + return (const _Tp*)__f_->target(typeid(_Tp)); + } +#endif // _LIBCPP_HAS_NO_RTTI +}; + +// Storage for a functor object, to be used with __policy to manage copy and +// destruction. +union __policy_storage +{ + mutable char __small[sizeof(void*) * 2]; + void* __large; +}; + +// True if _Fun can safely be held in __policy_storage.__small. +template +struct __use_small_storage + : public integral_constant< + bool, sizeof(_Fun) <= sizeof(__policy_storage) && + _LIBCPP_ALIGNOF(_Fun) <= _LIBCPP_ALIGNOF(__policy_storage) && + is_trivially_copy_constructible<_Fun>::value && + is_trivially_destructible<_Fun>::value> {}; + +// Policy contains information about how to copy, destroy, and move the +// underlying functor. You can think of it as a vtable of sorts. +struct __policy +{ + // Used to copy or destroy __large values. null for trivial objects. + void* (*const __clone)(const void*); + void (*const __destroy)(void*); + + // True if this is the null policy (no value). + const bool __is_null; + + // The target type. May be null if RTTI is disabled. + const std::type_info* const __type_info; + + // Returns a pointer to a static policy object suitable for the functor + // type. + template + _LIBCPP_INLINE_VISIBILITY static const __policy* __create() + { + return __choose_policy<_Fun>(__use_small_storage<_Fun>()); + } + + _LIBCPP_INLINE_VISIBILITY + static const __policy* __create_empty() + { + static const _LIBCPP_CONSTEXPR __policy __policy = {nullptr, nullptr, + true, +#ifndef _LIBCPP_HAS_NO_RTTI + &typeid(void) +#else + nullptr +#endif + }; + return &__policy; + } + + private: + template + _LIBCPP_HIDE_FROM_ABI static void* __large_clone(const void* __s) + { + const _Fun* __f = static_cast(__s); + return __f->__clone(); + } + + template + _LIBCPP_HIDE_FROM_ABI static void __large_destroy(void* __s) { + _Fun::__destroy_and_delete(static_cast<_Fun*>(__s)); + } + + template + _LIBCPP_INLINE_VISIBILITY static const __policy* + __choose_policy(/* is_small = */ false_type) { + static const _LIBCPP_CONSTEXPR __policy __policy = { + &__large_clone<_Fun>, &__large_destroy<_Fun>, false, +#ifndef _LIBCPP_HAS_NO_RTTI + &typeid(typename _Fun::_Target) +#else + nullptr +#endif + }; + return &__policy; + } + + template + _LIBCPP_INLINE_VISIBILITY static const __policy* + __choose_policy(/* is_small = */ true_type) + { + static const _LIBCPP_CONSTEXPR __policy __policy = { + nullptr, nullptr, false, +#ifndef _LIBCPP_HAS_NO_RTTI + &typeid(typename _Fun::_Target) +#else + nullptr +#endif + }; + return &__policy; + } +}; + +// Used to choose between perfect forwarding or pass-by-value. Pass-by-value is +// faster for types that can be passed in registers. +template +using __fast_forward = __conditional_t::value, _Tp, _Tp&&>; + +// __policy_invoker calls an instance of __alloc_func held in __policy_storage. + +template struct __policy_invoker; + +template +struct __policy_invoker<_Rp(_ArgTypes...)> +{ + typedef _Rp (*__Call)(const __policy_storage*, + __fast_forward<_ArgTypes>...); + + __Call __call_; + + // Creates an invoker that throws bad_function_call. + _LIBCPP_INLINE_VISIBILITY + __policy_invoker() : __call_(&__call_empty) {} + + // Creates an invoker that calls the given instance of __func. + template + _LIBCPP_INLINE_VISIBILITY static __policy_invoker __create() + { + return __policy_invoker(&__call_impl<_Fun>); + } + + private: + _LIBCPP_INLINE_VISIBILITY + explicit __policy_invoker(__Call __c) : __call_(__c) {} + + _LIBCPP_HIDE_FROM_ABI static _Rp __call_empty(const __policy_storage*, + __fast_forward<_ArgTypes>...) + { + __throw_bad_function_call(); + } + + template + _LIBCPP_HIDE_FROM_ABI static _Rp __call_impl(const __policy_storage* __buf, + __fast_forward<_ArgTypes>... __args) + { + _Fun* __f = reinterpret_cast<_Fun*>(__use_small_storage<_Fun>::value + ? &__buf->__small + : __buf->__large); + return (*__f)(_VSTD::forward<_ArgTypes>(__args)...); + } +}; + +// __policy_func uses a __policy and __policy_invoker to create a type-erased, +// copyable functor. + +template class __policy_func; + +template class __policy_func<_Rp(_ArgTypes...)> +{ + // Inline storage for small objects. + __policy_storage __buf_; + + // Calls the value stored in __buf_. This could technically be part of + // policy, but storing it here eliminates a level of indirection inside + // operator(). + typedef __function::__policy_invoker<_Rp(_ArgTypes...)> __invoker; + __invoker __invoker_; + + // The policy that describes how to move / copy / destroy __buf_. Never + // null, even if the function is empty. + const __policy* __policy_; + + public: + _LIBCPP_INLINE_VISIBILITY + __policy_func() : __policy_(__policy::__create_empty()) {} + + template + _LIBCPP_INLINE_VISIBILITY __policy_func(_Fp&& __f, const _Alloc& __a) + : __policy_(__policy::__create_empty()) + { + typedef __alloc_func<_Fp, _Alloc, _Rp(_ArgTypes...)> _Fun; + typedef allocator_traits<_Alloc> __alloc_traits; + typedef __rebind_alloc<__alloc_traits, _Fun> _FunAlloc; + + if (__function::__not_null(__f)) + { + __invoker_ = __invoker::template __create<_Fun>(); + __policy_ = __policy::__create<_Fun>(); + + _FunAlloc __af(__a); + if (__use_small_storage<_Fun>()) + { + ::new ((void*)&__buf_.__small) + _Fun(_VSTD::move(__f), _Alloc(__af)); + } + else + { + typedef __allocator_destructor<_FunAlloc> _Dp; + unique_ptr<_Fun, _Dp> __hold(__af.allocate(1), _Dp(__af, 1)); + ::new ((void*)__hold.get()) + _Fun(_VSTD::move(__f), _Alloc(__af)); + __buf_.__large = __hold.release(); + } + } + } + + template , __policy_func>::value>::type> + _LIBCPP_INLINE_VISIBILITY explicit __policy_func(_Fp&& __f) + : __policy_(__policy::__create_empty()) { + typedef __default_alloc_func<_Fp, _Rp(_ArgTypes...)> _Fun; + + if (__function::__not_null(__f)) { + __invoker_ = __invoker::template __create<_Fun>(); + __policy_ = __policy::__create<_Fun>(); + if (__use_small_storage<_Fun>()) { + ::new ((void*)&__buf_.__small) _Fun(_VSTD::move(__f)); + } else { + __builtin_new_allocator::__holder_t __hold = + __builtin_new_allocator::__allocate_type<_Fun>(1); + __buf_.__large = ::new ((void*)__hold.get()) _Fun(_VSTD::move(__f)); + (void)__hold.release(); + } + } + } + + _LIBCPP_INLINE_VISIBILITY + __policy_func(const __policy_func& __f) + : __buf_(__f.__buf_), __invoker_(__f.__invoker_), + __policy_(__f.__policy_) + { + if (__policy_->__clone) + __buf_.__large = __policy_->__clone(__f.__buf_.__large); + } + + _LIBCPP_INLINE_VISIBILITY + __policy_func(__policy_func&& __f) + : __buf_(__f.__buf_), __invoker_(__f.__invoker_), + __policy_(__f.__policy_) + { + if (__policy_->__destroy) + { + __f.__policy_ = __policy::__create_empty(); + __f.__invoker_ = __invoker(); + } + } + + _LIBCPP_INLINE_VISIBILITY + ~__policy_func() + { + if (__policy_->__destroy) + __policy_->__destroy(__buf_.__large); + } + + _LIBCPP_INLINE_VISIBILITY + __policy_func& operator=(__policy_func&& __f) + { + *this = nullptr; + __buf_ = __f.__buf_; + __invoker_ = __f.__invoker_; + __policy_ = __f.__policy_; + __f.__policy_ = __policy::__create_empty(); + __f.__invoker_ = __invoker(); + return *this; + } + + _LIBCPP_INLINE_VISIBILITY + __policy_func& operator=(nullptr_t) + { + const __policy* __p = __policy_; + __policy_ = __policy::__create_empty(); + __invoker_ = __invoker(); + if (__p->__destroy) + __p->__destroy(__buf_.__large); + return *this; + } + + _LIBCPP_INLINE_VISIBILITY + _Rp operator()(_ArgTypes&&... __args) const + { + return __invoker_.__call_(_VSTD::addressof(__buf_), + _VSTD::forward<_ArgTypes>(__args)...); + } + + _LIBCPP_INLINE_VISIBILITY + void swap(__policy_func& __f) + { + _VSTD::swap(__invoker_, __f.__invoker_); + _VSTD::swap(__policy_, __f.__policy_); + _VSTD::swap(__buf_, __f.__buf_); + } + + _LIBCPP_INLINE_VISIBILITY + explicit operator bool() const _NOEXCEPT + { + return !__policy_->__is_null; + } + +#ifndef _LIBCPP_HAS_NO_RTTI + _LIBCPP_INLINE_VISIBILITY + const std::type_info& target_type() const _NOEXCEPT + { + return *__policy_->__type_info; + } + + template + _LIBCPP_INLINE_VISIBILITY const _Tp* target() const _NOEXCEPT + { + if (__policy_->__is_null || typeid(_Tp) != *__policy_->__type_info) + return nullptr; + if (__policy_->__clone) // Out of line storage. + return reinterpret_cast(__buf_.__large); + else + return reinterpret_cast(&__buf_.__small); + } +#endif // _LIBCPP_HAS_NO_RTTI +}; + +#if defined(_LIBCPP_HAS_BLOCKS_RUNTIME) + +extern "C" void *_Block_copy(const void *); +extern "C" void _Block_release(const void *); + +template +class __func<_Rp1(^)(_ArgTypes1...), _Alloc, _Rp(_ArgTypes...)> + : public __base<_Rp(_ArgTypes...)> +{ + typedef _Rp1(^__block_type)(_ArgTypes1...); + __block_type __f_; + +public: + _LIBCPP_INLINE_VISIBILITY + explicit __func(__block_type const& __f) +#ifdef _LIBCPP_HAS_OBJC_ARC + : __f_(__f) +#else + : __f_(reinterpret_cast<__block_type>(__f ? _Block_copy(__f) : nullptr)) +#endif + { } + + // [TODO] add && to save on a retain + + _LIBCPP_INLINE_VISIBILITY + explicit __func(__block_type __f, const _Alloc& /* unused */) +#ifdef _LIBCPP_HAS_OBJC_ARC + : __f_(__f) +#else + : __f_(reinterpret_cast<__block_type>(__f ? _Block_copy(__f) : nullptr)) +#endif + { } + + virtual __base<_Rp(_ArgTypes...)>* __clone() const { + _LIBCPP_ASSERT(false, + "Block pointers are just pointers, so they should always fit into " + "std::function's small buffer optimization. This function should " + "never be invoked."); + return nullptr; + } + + virtual void __clone(__base<_Rp(_ArgTypes...)>* __p) const { + ::new ((void*)__p) __func(__f_); + } + + virtual void destroy() _NOEXCEPT { +#ifndef _LIBCPP_HAS_OBJC_ARC + if (__f_) + _Block_release(__f_); +#endif + __f_ = 0; + } + + virtual void destroy_deallocate() _NOEXCEPT { + _LIBCPP_ASSERT(false, + "Block pointers are just pointers, so they should always fit into " + "std::function's small buffer optimization. This function should " + "never be invoked."); + } + + virtual _Rp operator()(_ArgTypes&& ... __arg) { + return _VSTD::__invoke(__f_, _VSTD::forward<_ArgTypes>(__arg)...); + } + +#ifndef _LIBCPP_HAS_NO_RTTI + virtual const void* target(type_info const& __ti) const _NOEXCEPT { + if (__ti == typeid(__func::__block_type)) + return &__f_; + return (const void*)nullptr; + } + + virtual const std::type_info& target_type() const _NOEXCEPT { + return typeid(__func::__block_type); + } +#endif // _LIBCPP_HAS_NO_RTTI +}; + +#endif // _LIBCPP_HAS_EXTENSION_BLOCKS + +} // namespace __function + +template +class _LIBCPP_TEMPLATE_VIS function<_Rp(_ArgTypes...)> + : public __function::__maybe_derive_from_unary_function<_Rp(_ArgTypes...)>, + public __function::__maybe_derive_from_binary_function<_Rp(_ArgTypes...)> +{ +#ifndef _LIBCPP_ABI_OPTIMIZED_FUNCTION + typedef __function::__value_func<_Rp(_ArgTypes...)> __func; +#else + typedef __function::__policy_func<_Rp(_ArgTypes...)> __func; +#endif + + __func __f_; + + template , function>, + __invokable<_Fp, _ArgTypes...> + >::value> + struct __callable; + template + struct __callable<_Fp, true> + { + static const bool value = is_void<_Rp>::value || + __is_core_convertible::type, + _Rp>::value; + }; + template + struct __callable<_Fp, false> + { + static const bool value = false; + }; + + template + using _EnableIfLValueCallable = typename enable_if<__callable<_Fp&>::value>::type; +public: + typedef _Rp result_type; + + // construct/copy/destroy: + _LIBCPP_INLINE_VISIBILITY + function() _NOEXCEPT { } + _LIBCPP_INLINE_VISIBILITY + _LIBCPP_HIDE_FROM_ABI function(nullptr_t) _NOEXCEPT {} + _LIBCPP_HIDE_FROM_ABI function(const function&); + _LIBCPP_HIDE_FROM_ABI function(function&&) _NOEXCEPT; + template> + _LIBCPP_HIDE_FROM_ABI function(_Fp); + +#if _LIBCPP_STD_VER <= 14 + template + _LIBCPP_INLINE_VISIBILITY + function(allocator_arg_t, const _Alloc&) _NOEXCEPT {} + template + _LIBCPP_INLINE_VISIBILITY + function(allocator_arg_t, const _Alloc&, nullptr_t) _NOEXCEPT {} + template + _LIBCPP_HIDE_FROM_ABI function(allocator_arg_t, const _Alloc&, const function&); + template + _LIBCPP_HIDE_FROM_ABI function(allocator_arg_t, const _Alloc&, function&&); + template> + _LIBCPP_HIDE_FROM_ABI function(allocator_arg_t, const _Alloc& __a, _Fp __f); +#endif + + _LIBCPP_HIDE_FROM_ABI function& operator=(const function&); + _LIBCPP_HIDE_FROM_ABI function& operator=(function&&) _NOEXCEPT; + _LIBCPP_HIDE_FROM_ABI function& operator=(nullptr_t) _NOEXCEPT; + template>> + _LIBCPP_HIDE_FROM_ABI function& operator=(_Fp&&); + + _LIBCPP_HIDE_FROM_ABI ~function(); + + // function modifiers: + _LIBCPP_HIDE_FROM_ABI void swap(function&) _NOEXCEPT; + +#if _LIBCPP_STD_VER <= 14 + template + _LIBCPP_INLINE_VISIBILITY + void assign(_Fp&& __f, const _Alloc& __a) + {function(allocator_arg, __a, _VSTD::forward<_Fp>(__f)).swap(*this);} +#endif + + // function capacity: + _LIBCPP_INLINE_VISIBILITY + explicit operator bool() const _NOEXCEPT { + return static_cast(__f_); + } + + // deleted overloads close possible hole in the type system + template + bool operator==(const function<_R2(_ArgTypes2...)>&) const = delete; + template + bool operator!=(const function<_R2(_ArgTypes2...)>&) const = delete; +public: + // function invocation: + _LIBCPP_HIDE_FROM_ABI _Rp operator()(_ArgTypes...) const; + +#ifndef _LIBCPP_HAS_NO_RTTI + // function target access: + _LIBCPP_HIDE_FROM_ABI const std::type_info& target_type() const _NOEXCEPT; + template + _LIBCPP_HIDE_FROM_ABI _Tp* target() _NOEXCEPT; + template + _LIBCPP_HIDE_FROM_ABI const _Tp* target() const _NOEXCEPT; +#endif // _LIBCPP_HAS_NO_RTTI +}; + +#if _LIBCPP_STD_VER >= 17 +template +function(_Rp(*)(_Ap...)) -> function<_Rp(_Ap...)>; + +template::type> +function(_Fp) -> function<_Stripped>; +#endif // _LIBCPP_STD_VER >= 17 + +template +function<_Rp(_ArgTypes...)>::function(const function& __f) : __f_(__f.__f_) {} + +#if _LIBCPP_STD_VER <= 14 +template +template +function<_Rp(_ArgTypes...)>::function(allocator_arg_t, const _Alloc&, + const function& __f) : __f_(__f.__f_) {} +#endif + +template +function<_Rp(_ArgTypes...)>::function(function&& __f) _NOEXCEPT + : __f_(_VSTD::move(__f.__f_)) {} + +#if _LIBCPP_STD_VER <= 14 +template +template +function<_Rp(_ArgTypes...)>::function(allocator_arg_t, const _Alloc&, + function&& __f) + : __f_(_VSTD::move(__f.__f_)) {} +#endif + +template +template +function<_Rp(_ArgTypes...)>::function(_Fp __f) : __f_(_VSTD::move(__f)) {} + +#if _LIBCPP_STD_VER <= 14 +template +template +function<_Rp(_ArgTypes...)>::function(allocator_arg_t, const _Alloc& __a, + _Fp __f) + : __f_(_VSTD::move(__f), __a) {} +#endif + +template +function<_Rp(_ArgTypes...)>& +function<_Rp(_ArgTypes...)>::operator=(const function& __f) +{ + function(__f).swap(*this); + return *this; +} + +template +function<_Rp(_ArgTypes...)>& +function<_Rp(_ArgTypes...)>::operator=(function&& __f) _NOEXCEPT +{ + __f_ = _VSTD::move(__f.__f_); + return *this; +} + +template +function<_Rp(_ArgTypes...)>& +function<_Rp(_ArgTypes...)>::operator=(nullptr_t) _NOEXCEPT +{ + __f_ = nullptr; + return *this; +} + +template +template +function<_Rp(_ArgTypes...)>& +function<_Rp(_ArgTypes...)>::operator=(_Fp&& __f) +{ + function(_VSTD::forward<_Fp>(__f)).swap(*this); + return *this; +} + +template +function<_Rp(_ArgTypes...)>::~function() {} + +template +void +function<_Rp(_ArgTypes...)>::swap(function& __f) _NOEXCEPT +{ + __f_.swap(__f.__f_); +} + +template +_Rp +function<_Rp(_ArgTypes...)>::operator()(_ArgTypes... __arg) const +{ + return __f_(_VSTD::forward<_ArgTypes>(__arg)...); +} + +#ifndef _LIBCPP_HAS_NO_RTTI + +template +const std::type_info& +function<_Rp(_ArgTypes...)>::target_type() const _NOEXCEPT +{ + return __f_.target_type(); +} + +template +template +_Tp* +function<_Rp(_ArgTypes...)>::target() _NOEXCEPT +{ + return (_Tp*)(__f_.template target<_Tp>()); +} + +template +template +const _Tp* +function<_Rp(_ArgTypes...)>::target() const _NOEXCEPT +{ + return __f_.template target<_Tp>(); +} + +#endif // _LIBCPP_HAS_NO_RTTI + +template +inline _LIBCPP_INLINE_VISIBILITY +bool +operator==(const function<_Rp(_ArgTypes...)>& __f, nullptr_t) _NOEXCEPT {return !__f;} + +template +inline _LIBCPP_INLINE_VISIBILITY +bool +operator==(nullptr_t, const function<_Rp(_ArgTypes...)>& __f) _NOEXCEPT {return !__f;} + +template +inline _LIBCPP_INLINE_VISIBILITY +bool +operator!=(const function<_Rp(_ArgTypes...)>& __f, nullptr_t) _NOEXCEPT {return (bool)__f;} + +template +inline _LIBCPP_INLINE_VISIBILITY +bool +operator!=(nullptr_t, const function<_Rp(_ArgTypes...)>& __f) _NOEXCEPT {return (bool)__f;} + +template +inline _LIBCPP_INLINE_VISIBILITY +void +swap(function<_Rp(_ArgTypes...)>& __x, function<_Rp(_ArgTypes...)>& __y) _NOEXCEPT +{return __x.swap(__y);} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_CXX03_LANG + +#endif // _LIBCPP___FUNCTIONAL_FUNCTION_H diff --git a/third_party/libcxx/__functional/hash.h b/third_party/libcxx/__functional/hash.h new file mode 100644 index 000000000..fa09748b1 --- /dev/null +++ b/third_party/libcxx/__functional/hash.h @@ -0,0 +1,687 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FUNCTIONAL_HASH_H +#define _LIBCPP___FUNCTIONAL_HASH_H + +#include <__config> +#include <__functional/invoke.h> +#include <__functional/unary_function.h> +#include <__fwd/hash.h> +#include <__tuple/sfinae_helpers.h> +#include <__type_traits/is_copy_constructible.h> +#include <__type_traits/is_default_constructible.h> +#include <__type_traits/is_enum.h> +#include <__type_traits/is_move_constructible.h> +#include <__type_traits/underlying_type.h> +#include <__utility/forward.h> +#include <__utility/move.h> +#include <__utility/pair.h> +#include <__utility/swap.h> +#include +#include +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +inline _LIBCPP_HIDE_FROM_ABI +_Size +__loadword(const void* __p) +{ + _Size __r; + _VSTD::memcpy(&__r, __p, sizeof(__r)); + return __r; +} + +// We use murmur2 when size_t is 32 bits, and cityhash64 when size_t +// is 64 bits. This is because cityhash64 uses 64bit x 64bit +// multiplication, which can be very slow on 32-bit systems. +template +struct __murmur2_or_cityhash; + +template +struct __murmur2_or_cityhash<_Size, 32> +{ + _LIBCPP_HIDE_FROM_ABI _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK + _Size operator()(const void* __key, _Size __len) const { + // murmur2 + const _Size __m = 0x5bd1e995; + const _Size __r = 24; + _Size __h = __len; + const unsigned char* __data = static_cast(__key); + for (; __len >= 4; __data += 4, __len -= 4) + { + _Size __k = std::__loadword<_Size>(__data); + __k *= __m; + __k ^= __k >> __r; + __k *= __m; + __h *= __m; + __h ^= __k; + } + switch (__len) + { + case 3: + __h ^= static_cast<_Size>(__data[2] << 16); + _LIBCPP_FALLTHROUGH(); + case 2: + __h ^= static_cast<_Size>(__data[1] << 8); + _LIBCPP_FALLTHROUGH(); + case 1: + __h ^= __data[0]; + __h *= __m; + } + __h ^= __h >> 13; + __h *= __m; + __h ^= __h >> 15; + return __h; + } +}; + +template +struct __murmur2_or_cityhash<_Size, 64> +{ + // cityhash64 + _LIBCPP_HIDE_FROM_ABI _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK + _Size operator()(const void* __key, _Size __len) const { + const char* __s = static_cast(__key); + if (__len <= 32) { + if (__len <= 16) { + return __hash_len_0_to_16(__s, __len); + } else { + return __hash_len_17_to_32(__s, __len); + } + } else if (__len <= 64) { + return __hash_len_33_to_64(__s, __len); + } + + // For strings over 64 bytes we hash the end first, and then as we + // loop we keep 56 bytes of state: v, w, x, y, and z. + _Size __x = std::__loadword<_Size>(__s + __len - 40); + _Size __y = std::__loadword<_Size>(__s + __len - 16) + + std::__loadword<_Size>(__s + __len - 56); + _Size __z = __hash_len_16(std::__loadword<_Size>(__s + __len - 48) + __len, + std::__loadword<_Size>(__s + __len - 24)); + pair<_Size, _Size> __v = __weak_hash_len_32_with_seeds(__s + __len - 64, __len, __z); + pair<_Size, _Size> __w = __weak_hash_len_32_with_seeds(__s + __len - 32, __y + __k1, __x); + __x = __x * __k1 + std::__loadword<_Size>(__s); + + // Decrease len to the nearest multiple of 64, and operate on 64-byte chunks. + __len = (__len - 1) & ~static_cast<_Size>(63); + do { + __x = __rotate(__x + __y + __v.first + std::__loadword<_Size>(__s + 8), 37) * __k1; + __y = __rotate(__y + __v.second + std::__loadword<_Size>(__s + 48), 42) * __k1; + __x ^= __w.second; + __y += __v.first + std::__loadword<_Size>(__s + 40); + __z = __rotate(__z + __w.first, 33) * __k1; + __v = __weak_hash_len_32_with_seeds(__s, __v.second * __k1, __x + __w.first); + __w = __weak_hash_len_32_with_seeds(__s + 32, __z + __w.second, + __y + std::__loadword<_Size>(__s + 16)); + _VSTD::swap(__z, __x); + __s += 64; + __len -= 64; + } while (__len != 0); + return __hash_len_16( + __hash_len_16(__v.first, __w.first) + __shift_mix(__y) * __k1 + __z, + __hash_len_16(__v.second, __w.second) + __x); + } + + private: + // Some primes between 2^63 and 2^64. + static const _Size __k0 = 0xc3a5c85c97cb3127ULL; + static const _Size __k1 = 0xb492b66fbe98f273ULL; + static const _Size __k2 = 0x9ae16a3b2f90404fULL; + static const _Size __k3 = 0xc949d7c7509e6557ULL; + + _LIBCPP_HIDE_FROM_ABI + static _Size __rotate(_Size __val, int __shift) { + return __shift == 0 ? __val : ((__val >> __shift) | (__val << (64 - __shift))); + } + + _LIBCPP_HIDE_FROM_ABI + static _Size __rotate_by_at_least_1(_Size __val, int __shift) { + return (__val >> __shift) | (__val << (64 - __shift)); + } + + _LIBCPP_HIDE_FROM_ABI + static _Size __shift_mix(_Size __val) { + return __val ^ (__val >> 47); + } + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK + static _Size __hash_len_16(_Size __u, _Size __v) { + const _Size __mul = 0x9ddfea08eb382d69ULL; + _Size __a = (__u ^ __v) * __mul; + __a ^= (__a >> 47); + _Size __b = (__v ^ __a) * __mul; + __b ^= (__b >> 47); + __b *= __mul; + return __b; + } + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK + static _Size __hash_len_0_to_16(const char* __s, _Size __len) { + if (__len > 8) { + const _Size __a = std::__loadword<_Size>(__s); + const _Size __b = std::__loadword<_Size>(__s + __len - 8); + return __hash_len_16(__a, __rotate_by_at_least_1(__b + __len, __len)) ^ __b; + } + if (__len >= 4) { + const uint32_t __a = std::__loadword(__s); + const uint32_t __b = std::__loadword(__s + __len - 4); +#ifdef _LIBCPP_ABI_FIX_CITYHASH_IMPLEMENTATION + return __hash_len_16(__len + (static_cast<_Size>(__a) << 3), __b); +#else + return __hash_len_16(__len + (__a << 3), __b); +#endif + } + if (__len > 0) { + const unsigned char __a = static_cast(__s[0]); + const unsigned char __b = static_cast(__s[__len >> 1]); + const unsigned char __c = static_cast(__s[__len - 1]); + const uint32_t __y = static_cast(__a) + + (static_cast(__b) << 8); + const uint32_t __z = __len + (static_cast(__c) << 2); + return __shift_mix(__y * __k2 ^ __z * __k3) * __k2; + } + return __k2; + } + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK + static _Size __hash_len_17_to_32(const char *__s, _Size __len) { + const _Size __a = std::__loadword<_Size>(__s) * __k1; + const _Size __b = std::__loadword<_Size>(__s + 8); + const _Size __c = std::__loadword<_Size>(__s + __len - 8) * __k2; + const _Size __d = std::__loadword<_Size>(__s + __len - 16) * __k0; + return __hash_len_16(__rotate(__a - __b, 43) + __rotate(__c, 30) + __d, + __a + __rotate(__b ^ __k3, 20) - __c + __len); + } + + // Return a 16-byte hash for 48 bytes. Quick and dirty. + // Callers do best to use "random-looking" values for a and b. + _LIBCPP_HIDE_FROM_ABI _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK + static pair<_Size, _Size> __weak_hash_len_32_with_seeds( + _Size __w, _Size __x, _Size __y, _Size __z, _Size __a, _Size __b) + { + __a += __w; + __b = __rotate(__b + __a + __z, 21); + const _Size __c = __a; + __a += __x; + __a += __y; + __b += __rotate(__a, 44); + return pair<_Size, _Size>(__a + __z, __b + __c); + } + + // Return a 16-byte hash for s[0] ... s[31], a, and b. Quick and dirty. + _LIBCPP_HIDE_FROM_ABI _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK + static pair<_Size, _Size> __weak_hash_len_32_with_seeds( + const char* __s, _Size __a, _Size __b) + { + return __weak_hash_len_32_with_seeds(std::__loadword<_Size>(__s), + std::__loadword<_Size>(__s + 8), + std::__loadword<_Size>(__s + 16), + std::__loadword<_Size>(__s + 24), + __a, + __b); + } + + // Return an 8-byte hash for 33 to 64 bytes. + _LIBCPP_HIDE_FROM_ABI _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK + static _Size __hash_len_33_to_64(const char *__s, size_t __len) { + _Size __z = std::__loadword<_Size>(__s + 24); + _Size __a = std::__loadword<_Size>(__s) + + (__len + std::__loadword<_Size>(__s + __len - 16)) * __k0; + _Size __b = __rotate(__a + __z, 52); + _Size __c = __rotate(__a, 37); + __a += std::__loadword<_Size>(__s + 8); + __c += __rotate(__a, 7); + __a += std::__loadword<_Size>(__s + 16); + _Size __vf = __a + __z; + _Size __vs = __b + __rotate(__a, 31) + __c; + __a = std::__loadword<_Size>(__s + 16) + std::__loadword<_Size>(__s + __len - 32); + __z += std::__loadword<_Size>(__s + __len - 8); + __b = __rotate(__a + __z, 52); + __c = __rotate(__a, 37); + __a += std::__loadword<_Size>(__s + __len - 24); + __c += __rotate(__a, 7); + __a += std::__loadword<_Size>(__s + __len - 16); + _Size __wf = __a + __z; + _Size __ws = __b + __rotate(__a, 31) + __c; + _Size __r = __shift_mix((__vf + __ws) * __k2 + (__wf + __vs) * __k0); + return __shift_mix(__r * __k0 + __vs) * __k2; + } +}; + +template +struct __scalar_hash; + +template +struct __scalar_hash<_Tp, 0> + : public __unary_function<_Tp, size_t> +{ + _LIBCPP_HIDE_FROM_ABI + size_t operator()(_Tp __v) const _NOEXCEPT + { + union + { + _Tp __t; + size_t __a; + } __u; + __u.__a = 0; + __u.__t = __v; + return __u.__a; + } +}; + +template +struct __scalar_hash<_Tp, 1> + : public __unary_function<_Tp, size_t> +{ + _LIBCPP_HIDE_FROM_ABI + size_t operator()(_Tp __v) const _NOEXCEPT + { + union + { + _Tp __t; + size_t __a; + } __u; + __u.__t = __v; + return __u.__a; + } +}; + +template +struct __scalar_hash<_Tp, 2> + : public __unary_function<_Tp, size_t> +{ + _LIBCPP_HIDE_FROM_ABI + size_t operator()(_Tp __v) const _NOEXCEPT + { + union + { + _Tp __t; + struct + { + size_t __a; + size_t __b; + } __s; + } __u; + __u.__t = __v; + return __murmur2_or_cityhash()(&__u, sizeof(__u)); + } +}; + +template +struct __scalar_hash<_Tp, 3> + : public __unary_function<_Tp, size_t> +{ + _LIBCPP_HIDE_FROM_ABI + size_t operator()(_Tp __v) const _NOEXCEPT + { + union + { + _Tp __t; + struct + { + size_t __a; + size_t __b; + size_t __c; + } __s; + } __u; + __u.__t = __v; + return __murmur2_or_cityhash()(&__u, sizeof(__u)); + } +}; + +template +struct __scalar_hash<_Tp, 4> + : public __unary_function<_Tp, size_t> +{ + _LIBCPP_HIDE_FROM_ABI + size_t operator()(_Tp __v) const _NOEXCEPT + { + union + { + _Tp __t; + struct + { + size_t __a; + size_t __b; + size_t __c; + size_t __d; + } __s; + } __u; + __u.__t = __v; + return __murmur2_or_cityhash()(&__u, sizeof(__u)); + } +}; + +struct _PairT { + size_t first; + size_t second; +}; + +_LIBCPP_HIDE_FROM_ABI +inline size_t __hash_combine(size_t __lhs, size_t __rhs) _NOEXCEPT { + typedef __scalar_hash<_PairT> _HashT; + const _PairT __p = {__lhs, __rhs}; + return _HashT()(__p); +} + +template +struct _LIBCPP_TEMPLATE_VIS hash<_Tp*> + : public __unary_function<_Tp*, size_t> +{ + _LIBCPP_HIDE_FROM_ABI + size_t operator()(_Tp* __v) const _NOEXCEPT + { + union + { + _Tp* __t; + size_t __a; + } __u; + __u.__t = __v; + return __murmur2_or_cityhash()(&__u, sizeof(__u)); + } +}; + +template <> +struct _LIBCPP_TEMPLATE_VIS hash + : public __unary_function +{ + _LIBCPP_HIDE_FROM_ABI + size_t operator()(bool __v) const _NOEXCEPT {return static_cast(__v);} +}; + +template <> +struct _LIBCPP_TEMPLATE_VIS hash + : public __unary_function +{ + _LIBCPP_HIDE_FROM_ABI + size_t operator()(char __v) const _NOEXCEPT {return static_cast(__v);} +}; + +template <> +struct _LIBCPP_TEMPLATE_VIS hash + : public __unary_function +{ + _LIBCPP_HIDE_FROM_ABI + size_t operator()(signed char __v) const _NOEXCEPT {return static_cast(__v);} +}; + +template <> +struct _LIBCPP_TEMPLATE_VIS hash + : public __unary_function +{ + _LIBCPP_HIDE_FROM_ABI + size_t operator()(unsigned char __v) const _NOEXCEPT {return static_cast(__v);} +}; + +#ifndef _LIBCPP_HAS_NO_CHAR8_T +template <> +struct _LIBCPP_TEMPLATE_VIS hash + : public __unary_function +{ + _LIBCPP_HIDE_FROM_ABI + size_t operator()(char8_t __v) const _NOEXCEPT {return static_cast(__v);} +}; +#endif // !_LIBCPP_HAS_NO_CHAR8_T + +template <> +struct _LIBCPP_TEMPLATE_VIS hash + : public __unary_function +{ + _LIBCPP_HIDE_FROM_ABI + size_t operator()(char16_t __v) const _NOEXCEPT {return static_cast(__v);} +}; + +template <> +struct _LIBCPP_TEMPLATE_VIS hash + : public __unary_function +{ + _LIBCPP_HIDE_FROM_ABI + size_t operator()(char32_t __v) const _NOEXCEPT {return static_cast(__v);} +}; + +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +template <> +struct _LIBCPP_TEMPLATE_VIS hash + : public __unary_function +{ + _LIBCPP_HIDE_FROM_ABI + size_t operator()(wchar_t __v) const _NOEXCEPT {return static_cast(__v);} +}; +#endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS + +template <> +struct _LIBCPP_TEMPLATE_VIS hash + : public __unary_function +{ + _LIBCPP_HIDE_FROM_ABI + size_t operator()(short __v) const _NOEXCEPT {return static_cast(__v);} +}; + +template <> +struct _LIBCPP_TEMPLATE_VIS hash + : public __unary_function +{ + _LIBCPP_HIDE_FROM_ABI + size_t operator()(unsigned short __v) const _NOEXCEPT {return static_cast(__v);} +}; + +template <> +struct _LIBCPP_TEMPLATE_VIS hash + : public __unary_function +{ + _LIBCPP_HIDE_FROM_ABI + size_t operator()(int __v) const _NOEXCEPT {return static_cast(__v);} +}; + +template <> +struct _LIBCPP_TEMPLATE_VIS hash + : public __unary_function +{ + _LIBCPP_HIDE_FROM_ABI + size_t operator()(unsigned int __v) const _NOEXCEPT {return static_cast(__v);} +}; + +template <> +struct _LIBCPP_TEMPLATE_VIS hash + : public __unary_function +{ + _LIBCPP_HIDE_FROM_ABI + size_t operator()(long __v) const _NOEXCEPT {return static_cast(__v);} +}; + +template <> +struct _LIBCPP_TEMPLATE_VIS hash + : public __unary_function +{ + _LIBCPP_HIDE_FROM_ABI + size_t operator()(unsigned long __v) const _NOEXCEPT {return static_cast(__v);} +}; + +template <> +struct _LIBCPP_TEMPLATE_VIS hash + : public __scalar_hash +{ +}; + +template <> +struct _LIBCPP_TEMPLATE_VIS hash + : public __scalar_hash +{ +}; + +#ifndef _LIBCPP_HAS_NO_INT128 + +template <> +struct _LIBCPP_TEMPLATE_VIS hash<__int128_t> + : public __scalar_hash<__int128_t> +{ +}; + +template <> +struct _LIBCPP_TEMPLATE_VIS hash<__uint128_t> + : public __scalar_hash<__uint128_t> +{ +}; + +#endif + +template <> +struct _LIBCPP_TEMPLATE_VIS hash + : public __scalar_hash +{ + _LIBCPP_HIDE_FROM_ABI + size_t operator()(float __v) const _NOEXCEPT + { + // -0.0 and 0.0 should return same hash + if (__v == 0.0f) + return 0; + return __scalar_hash::operator()(__v); + } +}; + +template <> +struct _LIBCPP_TEMPLATE_VIS hash + : public __scalar_hash +{ + _LIBCPP_HIDE_FROM_ABI + size_t operator()(double __v) const _NOEXCEPT + { + // -0.0 and 0.0 should return same hash + if (__v == 0.0) + return 0; + return __scalar_hash::operator()(__v); + } +}; + +template <> +struct _LIBCPP_TEMPLATE_VIS hash + : public __scalar_hash +{ + _LIBCPP_HIDE_FROM_ABI + size_t operator()(long double __v) const _NOEXCEPT + { + // -0.0 and 0.0 should return same hash + if (__v == 0.0L) + return 0; +#if defined(__i386__) || (defined(__x86_64__) && defined(__ILP32__)) + // Zero out padding bits + union + { + long double __t; + struct + { + size_t __a; + size_t __b; + size_t __c; + size_t __d; + } __s; + } __u; + __u.__s.__a = 0; + __u.__s.__b = 0; + __u.__s.__c = 0; + __u.__s.__d = 0; + __u.__t = __v; + return __u.__s.__a ^ __u.__s.__b ^ __u.__s.__c ^ __u.__s.__d; +#elif defined(__x86_64__) + // Zero out padding bits + union + { + long double __t; + struct + { + size_t __a; + size_t __b; + } __s; + } __u; + __u.__s.__a = 0; + __u.__s.__b = 0; + __u.__t = __v; + return __u.__s.__a ^ __u.__s.__b; +#else + return __scalar_hash::operator()(__v); +#endif + } +}; + +template ::value> +struct _LIBCPP_TEMPLATE_VIS __enum_hash + : public __unary_function<_Tp, size_t> +{ + _LIBCPP_HIDE_FROM_ABI + size_t operator()(_Tp __v) const _NOEXCEPT + { + typedef typename underlying_type<_Tp>::type type; + return hash()(static_cast(__v)); + } +}; +template +struct _LIBCPP_TEMPLATE_VIS __enum_hash<_Tp, false> { + __enum_hash() = delete; + __enum_hash(__enum_hash const&) = delete; + __enum_hash& operator=(__enum_hash const&) = delete; +}; + +template +struct _LIBCPP_TEMPLATE_VIS hash : public __enum_hash<_Tp> +{ +}; + +#if _LIBCPP_STD_VER >= 17 + +template <> +struct _LIBCPP_TEMPLATE_VIS hash + : public __unary_function +{ + _LIBCPP_HIDE_FROM_ABI + size_t operator()(nullptr_t) const _NOEXCEPT { + return 662607004ull; + } +}; +#endif + +#ifndef _LIBCPP_CXX03_LANG +template +using __check_hash_requirements _LIBCPP_NODEBUG = integral_constant::value && + is_move_constructible<_Hash>::value && + __invokable_r::value +>; + +template > +using __has_enabled_hash _LIBCPP_NODEBUG = integral_constant::value && + is_default_constructible<_Hash>::value +>; + +#if _LIBCPP_STD_VER >= 17 +template +using __enable_hash_helper_imp _LIBCPP_NODEBUG = _Type; + +template +using __enable_hash_helper _LIBCPP_NODEBUG = __enable_hash_helper_imp<_Type, + typename enable_if<__all<__has_enabled_hash<_Keys>::value...>::value>::type +>; +#else +template +using __enable_hash_helper _LIBCPP_NODEBUG = _Type; +#endif + +#endif // !_LIBCPP_CXX03_LANG + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FUNCTIONAL_HASH_H diff --git a/third_party/libcxx/__functional/identity.h b/third_party/libcxx/__functional/identity.h new file mode 100644 index 000000000..5dffedf67 --- /dev/null +++ b/third_party/libcxx/__functional/identity.h @@ -0,0 +1,57 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FUNCTIONAL_IDENTITY_H +#define _LIBCPP___FUNCTIONAL_IDENTITY_H + +#include <__config> +#include <__type_traits/integral_constant.h> +#include <__utility/forward.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +struct __is_identity : false_type {}; + +struct __identity { + template + _LIBCPP_NODISCARD _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _Tp&& operator()(_Tp&& __t) const _NOEXCEPT { + return std::forward<_Tp>(__t); + } + + using is_transparent = void; +}; + +template <> +struct __is_identity<__identity> : true_type {}; + +#if _LIBCPP_STD_VER >= 20 + +struct identity { + template + _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI constexpr _Tp&& operator()(_Tp&& __t) const noexcept + { + return _VSTD::forward<_Tp>(__t); + } + + using is_transparent = void; +}; + +template <> +struct __is_identity : true_type {}; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FUNCTIONAL_IDENTITY_H diff --git a/third_party/libcxx/__functional/invoke.h b/third_party/libcxx/__functional/invoke.h new file mode 100644 index 000000000..a7dd31107 --- /dev/null +++ b/third_party/libcxx/__functional/invoke.h @@ -0,0 +1,56 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FUNCTIONAL_INVOKE_H +#define _LIBCPP___FUNCTIONAL_INVOKE_H + +#include <__config> +#include <__type_traits/invoke.h> +#include <__utility/forward.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 17 + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 invoke_result_t<_Fn, _Args...> +invoke(_Fn&& __f, _Args&&... __args) + noexcept(is_nothrow_invocable_v<_Fn, _Args...>) +{ + return _VSTD::__invoke(_VSTD::forward<_Fn>(__f), _VSTD::forward<_Args>(__args)...); +} + +#endif // _LIBCPP_STD_VER >= 17 + +#if _LIBCPP_STD_VER >= 23 +template + requires is_invocable_r_v<_Result, _Fn, _Args...> +_LIBCPP_HIDE_FROM_ABI constexpr _Result +invoke_r(_Fn&& __f, _Args&&... __args) noexcept(is_nothrow_invocable_r_v<_Result, _Fn, _Args...>) { + if constexpr (is_void_v<_Result>) { + static_cast(std::invoke(std::forward<_Fn>(__f), std::forward<_Args>(__args)...)); + } else { + // TODO: Use reference_converts_from_temporary_v once implemented + // using _ImplicitInvokeResult = invoke_result_t<_Fn, _Args...>; + // static_assert(!reference_converts_from_temporary_v<_Result, _ImplicitInvokeResult>, + static_assert(true, + "Returning from invoke_r would bind a temporary object to the reference return type, " + "which would result in a dangling reference."); + return std::invoke(std::forward<_Fn>(__f), std::forward<_Args>(__args)...); + } +} +#endif + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FUNCTIONAL_INVOKE_H diff --git a/third_party/libcxx/__functional/is_transparent.h b/third_party/libcxx/__functional/is_transparent.h new file mode 100644 index 000000000..c539a07d6 --- /dev/null +++ b/third_party/libcxx/__functional/is_transparent.h @@ -0,0 +1,36 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FUNCTIONAL_IS_TRANSPARENT +#define _LIBCPP___FUNCTIONAL_IS_TRANSPARENT + +#include <__config> +#include <__type_traits/integral_constant.h> +#include <__type_traits/void_t.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 14 + +template +struct __is_transparent : false_type {}; + +template +struct __is_transparent<_Tp, _Up, __void_t > + : true_type {}; + +#endif + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FUNCTIONAL_IS_TRANSPARENT diff --git a/third_party/libcxx/__functional/mem_fn.h b/third_party/libcxx/__functional/mem_fn.h new file mode 100644 index 000000000..fe221dd12 --- /dev/null +++ b/third_party/libcxx/__functional/mem_fn.h @@ -0,0 +1,58 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FUNCTIONAL_MEM_FN_H +#define _LIBCPP___FUNCTIONAL_MEM_FN_H + +#include <__config> +#include <__functional/binary_function.h> +#include <__functional/invoke.h> +#include <__functional/weak_result_type.h> +#include <__utility/forward.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +class __mem_fn : public __weak_result_type<_Tp> +{ +public: + // types + typedef _Tp type; +private: + type __f_; + +public: + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 + __mem_fn(type __f) _NOEXCEPT : __f_(__f) {} + + // invoke + template + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 + + typename __invoke_return::type + operator() (_ArgTypes&&... __args) const { + return std::__invoke(__f_, std::forward<_ArgTypes>(__args)...); + } +}; + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +__mem_fn<_Rp _Tp::*> +mem_fn(_Rp _Tp::* __pm) _NOEXCEPT +{ + return __mem_fn<_Rp _Tp::*>(__pm); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FUNCTIONAL_MEM_FN_H diff --git a/third_party/libcxx/__functional/mem_fun_ref.h b/third_party/libcxx/__functional/mem_fun_ref.h new file mode 100644 index 000000000..65aab0696 --- /dev/null +++ b/third_party/libcxx/__functional/mem_fun_ref.h @@ -0,0 +1,173 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FUNCTIONAL_MEM_FUN_REF_H +#define _LIBCPP___FUNCTIONAL_MEM_FUN_REF_H + +#include <__config> +#include <__functional/binary_function.h> +#include <__functional/unary_function.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS) + +template +class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 mem_fun_t + : public __unary_function<_Tp*, _Sp> +{ + _Sp (_Tp::*__p_)(); +public: + _LIBCPP_INLINE_VISIBILITY explicit mem_fun_t(_Sp (_Tp::*__p)()) + : __p_(__p) {} + _LIBCPP_INLINE_VISIBILITY _Sp operator()(_Tp* __p) const + {return (__p->*__p_)();} +}; + +template +class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 mem_fun1_t + : public __binary_function<_Tp*, _Ap, _Sp> +{ + _Sp (_Tp::*__p_)(_Ap); +public: + _LIBCPP_INLINE_VISIBILITY explicit mem_fun1_t(_Sp (_Tp::*__p)(_Ap)) + : __p_(__p) {} + _LIBCPP_INLINE_VISIBILITY _Sp operator()(_Tp* __p, _Ap __x) const + {return (__p->*__p_)(__x);} +}; + +template +_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY +mem_fun_t<_Sp,_Tp> +mem_fun(_Sp (_Tp::*__f)()) + {return mem_fun_t<_Sp,_Tp>(__f);} + +template +_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY +mem_fun1_t<_Sp,_Tp,_Ap> +mem_fun(_Sp (_Tp::*__f)(_Ap)) + {return mem_fun1_t<_Sp,_Tp,_Ap>(__f);} + +template +class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 mem_fun_ref_t + : public __unary_function<_Tp, _Sp> +{ + _Sp (_Tp::*__p_)(); +public: + _LIBCPP_INLINE_VISIBILITY explicit mem_fun_ref_t(_Sp (_Tp::*__p)()) + : __p_(__p) {} + _LIBCPP_INLINE_VISIBILITY _Sp operator()(_Tp& __p) const + {return (__p.*__p_)();} +}; + +template +class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 mem_fun1_ref_t + : public __binary_function<_Tp, _Ap, _Sp> +{ + _Sp (_Tp::*__p_)(_Ap); +public: + _LIBCPP_INLINE_VISIBILITY explicit mem_fun1_ref_t(_Sp (_Tp::*__p)(_Ap)) + : __p_(__p) {} + _LIBCPP_INLINE_VISIBILITY _Sp operator()(_Tp& __p, _Ap __x) const + {return (__p.*__p_)(__x);} +}; + +template +_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY +mem_fun_ref_t<_Sp,_Tp> +mem_fun_ref(_Sp (_Tp::*__f)()) + {return mem_fun_ref_t<_Sp,_Tp>(__f);} + +template +_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY +mem_fun1_ref_t<_Sp,_Tp,_Ap> +mem_fun_ref(_Sp (_Tp::*__f)(_Ap)) + {return mem_fun1_ref_t<_Sp,_Tp,_Ap>(__f);} + +template +class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 const_mem_fun_t + : public __unary_function +{ + _Sp (_Tp::*__p_)() const; +public: + _LIBCPP_INLINE_VISIBILITY explicit const_mem_fun_t(_Sp (_Tp::*__p)() const) + : __p_(__p) {} + _LIBCPP_INLINE_VISIBILITY _Sp operator()(const _Tp* __p) const + {return (__p->*__p_)();} +}; + +template +class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 const_mem_fun1_t + : public __binary_function +{ + _Sp (_Tp::*__p_)(_Ap) const; +public: + _LIBCPP_INLINE_VISIBILITY explicit const_mem_fun1_t(_Sp (_Tp::*__p)(_Ap) const) + : __p_(__p) {} + _LIBCPP_INLINE_VISIBILITY _Sp operator()(const _Tp* __p, _Ap __x) const + {return (__p->*__p_)(__x);} +}; + +template +_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY +const_mem_fun_t<_Sp,_Tp> +mem_fun(_Sp (_Tp::*__f)() const) + {return const_mem_fun_t<_Sp,_Tp>(__f);} + +template +_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY +const_mem_fun1_t<_Sp,_Tp,_Ap> +mem_fun(_Sp (_Tp::*__f)(_Ap) const) + {return const_mem_fun1_t<_Sp,_Tp,_Ap>(__f);} + +template +class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 const_mem_fun_ref_t + : public __unary_function<_Tp, _Sp> +{ + _Sp (_Tp::*__p_)() const; +public: + _LIBCPP_INLINE_VISIBILITY explicit const_mem_fun_ref_t(_Sp (_Tp::*__p)() const) + : __p_(__p) {} + _LIBCPP_INLINE_VISIBILITY _Sp operator()(const _Tp& __p) const + {return (__p.*__p_)();} +}; + +template +class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 const_mem_fun1_ref_t + : public __binary_function<_Tp, _Ap, _Sp> +{ + _Sp (_Tp::*__p_)(_Ap) const; +public: + _LIBCPP_INLINE_VISIBILITY explicit const_mem_fun1_ref_t(_Sp (_Tp::*__p)(_Ap) const) + : __p_(__p) {} + _LIBCPP_INLINE_VISIBILITY _Sp operator()(const _Tp& __p, _Ap __x) const + {return (__p.*__p_)(__x);} +}; + +template +_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY +const_mem_fun_ref_t<_Sp,_Tp> +mem_fun_ref(_Sp (_Tp::*__f)() const) + {return const_mem_fun_ref_t<_Sp,_Tp>(__f);} + +template +_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY +const_mem_fun1_ref_t<_Sp,_Tp,_Ap> +mem_fun_ref(_Sp (_Tp::*__f)(_Ap) const) + {return const_mem_fun1_ref_t<_Sp,_Tp,_Ap>(__f);} + +#endif // _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS) + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FUNCTIONAL_MEM_FUN_REF_H diff --git a/third_party/libcxx/__functional/not_fn.h b/third_party/libcxx/__functional/not_fn.h new file mode 100644 index 000000000..0cdb1b7e2 --- /dev/null +++ b/third_party/libcxx/__functional/not_fn.h @@ -0,0 +1,57 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FUNCTIONAL_NOT_FN_H +#define _LIBCPP___FUNCTIONAL_NOT_FN_H + +#include <__config> +#include <__functional/invoke.h> +#include <__functional/perfect_forward.h> +#include <__type_traits/decay.h> +#include <__type_traits/enable_if.h> +#include <__type_traits/is_constructible.h> +#include <__type_traits/is_move_constructible.h> +#include <__utility/forward.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 17 + +struct __not_fn_op { + template + _LIBCPP_HIDE_FROM_ABI + _LIBCPP_CONSTEXPR_SINCE_CXX20 auto operator()(_Args&&... __args) const + noexcept(noexcept(!_VSTD::invoke(_VSTD::forward<_Args>(__args)...))) + -> decltype( !_VSTD::invoke(_VSTD::forward<_Args>(__args)...)) + { return !_VSTD::invoke(_VSTD::forward<_Args>(__args)...); } +}; + +template +struct __not_fn_t : __perfect_forward<__not_fn_op, _Fn> { + using __perfect_forward<__not_fn_op, _Fn>::__perfect_forward; +}; + +template , _Fn> && + is_move_constructible_v> +>> +_LIBCPP_HIDE_FROM_ABI +_LIBCPP_CONSTEXPR_SINCE_CXX20 auto not_fn(_Fn&& __f) { + return __not_fn_t>(_VSTD::forward<_Fn>(__f)); +} + +#endif // _LIBCPP_STD_VER >= 17 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FUNCTIONAL_NOT_FN_H diff --git a/third_party/libcxx/__functional/operations.h b/third_party/libcxx/__functional/operations.h new file mode 100644 index 000000000..3d0c3641b --- /dev/null +++ b/third_party/libcxx/__functional/operations.h @@ -0,0 +1,590 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FUNCTIONAL_OPERATIONS_H +#define _LIBCPP___FUNCTIONAL_OPERATIONS_H + +#include <__config> +#include <__functional/binary_function.h> +#include <__functional/unary_function.h> +#include <__type_traits/integral_constant.h> +#include <__type_traits/predicate_traits.h> +#include <__utility/forward.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +// Arithmetic operations + +#if _LIBCPP_STD_VER >= 14 +template +#else +template +#endif +struct _LIBCPP_TEMPLATE_VIS plus + : __binary_function<_Tp, _Tp, _Tp> +{ + typedef _Tp __result_type; // used by valarray + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + _Tp operator()(const _Tp& __x, const _Tp& __y) const + {return __x + __y;} +}; +_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(plus); + +#if _LIBCPP_STD_VER >= 14 +template <> +struct _LIBCPP_TEMPLATE_VIS plus +{ + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + auto operator()(_T1&& __t, _T2&& __u) const + noexcept(noexcept(_VSTD::forward<_T1>(__t) + _VSTD::forward<_T2>(__u))) + -> decltype( _VSTD::forward<_T1>(__t) + _VSTD::forward<_T2>(__u)) + { return _VSTD::forward<_T1>(__t) + _VSTD::forward<_T2>(__u); } + typedef void is_transparent; +}; +#endif + +#if _LIBCPP_STD_VER >= 14 +template +#else +template +#endif +struct _LIBCPP_TEMPLATE_VIS minus + : __binary_function<_Tp, _Tp, _Tp> +{ + typedef _Tp __result_type; // used by valarray + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + _Tp operator()(const _Tp& __x, const _Tp& __y) const + {return __x - __y;} +}; +_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(minus); + +#if _LIBCPP_STD_VER >= 14 +template <> +struct _LIBCPP_TEMPLATE_VIS minus +{ + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + auto operator()(_T1&& __t, _T2&& __u) const + noexcept(noexcept(_VSTD::forward<_T1>(__t) - _VSTD::forward<_T2>(__u))) + -> decltype( _VSTD::forward<_T1>(__t) - _VSTD::forward<_T2>(__u)) + { return _VSTD::forward<_T1>(__t) - _VSTD::forward<_T2>(__u); } + typedef void is_transparent; +}; +#endif + +#if _LIBCPP_STD_VER >= 14 +template +#else +template +#endif +struct _LIBCPP_TEMPLATE_VIS multiplies + : __binary_function<_Tp, _Tp, _Tp> +{ + typedef _Tp __result_type; // used by valarray + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + _Tp operator()(const _Tp& __x, const _Tp& __y) const + {return __x * __y;} +}; +_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(multiplies); + +#if _LIBCPP_STD_VER >= 14 +template <> +struct _LIBCPP_TEMPLATE_VIS multiplies +{ + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + auto operator()(_T1&& __t, _T2&& __u) const + noexcept(noexcept(_VSTD::forward<_T1>(__t) * _VSTD::forward<_T2>(__u))) + -> decltype( _VSTD::forward<_T1>(__t) * _VSTD::forward<_T2>(__u)) + { return _VSTD::forward<_T1>(__t) * _VSTD::forward<_T2>(__u); } + typedef void is_transparent; +}; +#endif + +#if _LIBCPP_STD_VER >= 14 +template +#else +template +#endif +struct _LIBCPP_TEMPLATE_VIS divides + : __binary_function<_Tp, _Tp, _Tp> +{ + typedef _Tp __result_type; // used by valarray + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + _Tp operator()(const _Tp& __x, const _Tp& __y) const + {return __x / __y;} +}; +_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(divides); + +#if _LIBCPP_STD_VER >= 14 +template <> +struct _LIBCPP_TEMPLATE_VIS divides +{ + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + auto operator()(_T1&& __t, _T2&& __u) const + noexcept(noexcept(_VSTD::forward<_T1>(__t) / _VSTD::forward<_T2>(__u))) + -> decltype( _VSTD::forward<_T1>(__t) / _VSTD::forward<_T2>(__u)) + { return _VSTD::forward<_T1>(__t) / _VSTD::forward<_T2>(__u); } + typedef void is_transparent; +}; +#endif + +#if _LIBCPP_STD_VER >= 14 +template +#else +template +#endif +struct _LIBCPP_TEMPLATE_VIS modulus + : __binary_function<_Tp, _Tp, _Tp> +{ + typedef _Tp __result_type; // used by valarray + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + _Tp operator()(const _Tp& __x, const _Tp& __y) const + {return __x % __y;} +}; +_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(modulus); + +#if _LIBCPP_STD_VER >= 14 +template <> +struct _LIBCPP_TEMPLATE_VIS modulus +{ + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + auto operator()(_T1&& __t, _T2&& __u) const + noexcept(noexcept(_VSTD::forward<_T1>(__t) % _VSTD::forward<_T2>(__u))) + -> decltype( _VSTD::forward<_T1>(__t) % _VSTD::forward<_T2>(__u)) + { return _VSTD::forward<_T1>(__t) % _VSTD::forward<_T2>(__u); } + typedef void is_transparent; +}; +#endif + +#if _LIBCPP_STD_VER >= 14 +template +#else +template +#endif +struct _LIBCPP_TEMPLATE_VIS negate + : __unary_function<_Tp, _Tp> +{ + typedef _Tp __result_type; // used by valarray + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + _Tp operator()(const _Tp& __x) const + {return -__x;} +}; +_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(negate); + +#if _LIBCPP_STD_VER >= 14 +template <> +struct _LIBCPP_TEMPLATE_VIS negate +{ + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + auto operator()(_Tp&& __x) const + noexcept(noexcept(- _VSTD::forward<_Tp>(__x))) + -> decltype( - _VSTD::forward<_Tp>(__x)) + { return - _VSTD::forward<_Tp>(__x); } + typedef void is_transparent; +}; +#endif + +// Bitwise operations + +#if _LIBCPP_STD_VER >= 14 +template +#else +template +#endif +struct _LIBCPP_TEMPLATE_VIS bit_and + : __binary_function<_Tp, _Tp, _Tp> +{ + typedef _Tp __result_type; // used by valarray + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + _Tp operator()(const _Tp& __x, const _Tp& __y) const + {return __x & __y;} +}; +_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(bit_and); + +#if _LIBCPP_STD_VER >= 14 +template <> +struct _LIBCPP_TEMPLATE_VIS bit_and +{ + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + auto operator()(_T1&& __t, _T2&& __u) const + noexcept(noexcept(_VSTD::forward<_T1>(__t) & _VSTD::forward<_T2>(__u))) + -> decltype( _VSTD::forward<_T1>(__t) & _VSTD::forward<_T2>(__u)) + { return _VSTD::forward<_T1>(__t) & _VSTD::forward<_T2>(__u); } + typedef void is_transparent; +}; +#endif + +#if _LIBCPP_STD_VER >= 14 +template +struct _LIBCPP_TEMPLATE_VIS bit_not + : __unary_function<_Tp, _Tp> +{ + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + _Tp operator()(const _Tp& __x) const + {return ~__x;} +}; +_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(bit_not); + +template <> +struct _LIBCPP_TEMPLATE_VIS bit_not +{ + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + auto operator()(_Tp&& __x) const + noexcept(noexcept(~_VSTD::forward<_Tp>(__x))) + -> decltype( ~_VSTD::forward<_Tp>(__x)) + { return ~_VSTD::forward<_Tp>(__x); } + typedef void is_transparent; +}; +#endif + +#if _LIBCPP_STD_VER >= 14 +template +#else +template +#endif +struct _LIBCPP_TEMPLATE_VIS bit_or + : __binary_function<_Tp, _Tp, _Tp> +{ + typedef _Tp __result_type; // used by valarray + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + _Tp operator()(const _Tp& __x, const _Tp& __y) const + {return __x | __y;} +}; +_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(bit_or); + +#if _LIBCPP_STD_VER >= 14 +template <> +struct _LIBCPP_TEMPLATE_VIS bit_or +{ + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + auto operator()(_T1&& __t, _T2&& __u) const + noexcept(noexcept(_VSTD::forward<_T1>(__t) | _VSTD::forward<_T2>(__u))) + -> decltype( _VSTD::forward<_T1>(__t) | _VSTD::forward<_T2>(__u)) + { return _VSTD::forward<_T1>(__t) | _VSTD::forward<_T2>(__u); } + typedef void is_transparent; +}; +#endif + +#if _LIBCPP_STD_VER >= 14 +template +#else +template +#endif +struct _LIBCPP_TEMPLATE_VIS bit_xor + : __binary_function<_Tp, _Tp, _Tp> +{ + typedef _Tp __result_type; // used by valarray + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + _Tp operator()(const _Tp& __x, const _Tp& __y) const + {return __x ^ __y;} +}; +_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(bit_xor); + +#if _LIBCPP_STD_VER >= 14 +template <> +struct _LIBCPP_TEMPLATE_VIS bit_xor +{ + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + auto operator()(_T1&& __t, _T2&& __u) const + noexcept(noexcept(_VSTD::forward<_T1>(__t) ^ _VSTD::forward<_T2>(__u))) + -> decltype( _VSTD::forward<_T1>(__t) ^ _VSTD::forward<_T2>(__u)) + { return _VSTD::forward<_T1>(__t) ^ _VSTD::forward<_T2>(__u); } + typedef void is_transparent; +}; +#endif + +// Comparison operations + +#if _LIBCPP_STD_VER >= 14 +template +#else +template +#endif +struct _LIBCPP_TEMPLATE_VIS equal_to + : __binary_function<_Tp, _Tp, bool> +{ + typedef bool __result_type; // used by valarray + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + bool operator()(const _Tp& __x, const _Tp& __y) const + {return __x == __y;} +}; +_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(equal_to); + +#if _LIBCPP_STD_VER >= 14 +template <> +struct _LIBCPP_TEMPLATE_VIS equal_to +{ + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + auto operator()(_T1&& __t, _T2&& __u) const + noexcept(noexcept(_VSTD::forward<_T1>(__t) == _VSTD::forward<_T2>(__u))) + -> decltype( _VSTD::forward<_T1>(__t) == _VSTD::forward<_T2>(__u)) + { return _VSTD::forward<_T1>(__t) == _VSTD::forward<_T2>(__u); } + typedef void is_transparent; +}; +#endif + +template +struct __is_trivial_equality_predicate, _Tp, _Tp> : true_type {}; + +#if _LIBCPP_STD_VER >= 14 +template +struct __is_trivial_equality_predicate, _Tp, _Tp> : true_type {}; +#endif + +#if _LIBCPP_STD_VER >= 14 +template +#else +template +#endif +struct _LIBCPP_TEMPLATE_VIS not_equal_to + : __binary_function<_Tp, _Tp, bool> +{ + typedef bool __result_type; // used by valarray + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + bool operator()(const _Tp& __x, const _Tp& __y) const + {return __x != __y;} +}; +_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(not_equal_to); + +#if _LIBCPP_STD_VER >= 14 +template <> +struct _LIBCPP_TEMPLATE_VIS not_equal_to +{ + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + auto operator()(_T1&& __t, _T2&& __u) const + noexcept(noexcept(_VSTD::forward<_T1>(__t) != _VSTD::forward<_T2>(__u))) + -> decltype( _VSTD::forward<_T1>(__t) != _VSTD::forward<_T2>(__u)) + { return _VSTD::forward<_T1>(__t) != _VSTD::forward<_T2>(__u); } + typedef void is_transparent; +}; +#endif + +#if _LIBCPP_STD_VER >= 14 +template +#else +template +#endif +struct _LIBCPP_TEMPLATE_VIS less + : __binary_function<_Tp, _Tp, bool> +{ + typedef bool __result_type; // used by valarray + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + bool operator()(const _Tp& __x, const _Tp& __y) const + {return __x < __y;} +}; +_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(less); + +#if _LIBCPP_STD_VER >= 14 +template <> +struct _LIBCPP_TEMPLATE_VIS less +{ + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + auto operator()(_T1&& __t, _T2&& __u) const + noexcept(noexcept(_VSTD::forward<_T1>(__t) < _VSTD::forward<_T2>(__u))) + -> decltype( _VSTD::forward<_T1>(__t) < _VSTD::forward<_T2>(__u)) + { return _VSTD::forward<_T1>(__t) < _VSTD::forward<_T2>(__u); } + typedef void is_transparent; +}; +#endif + +#if _LIBCPP_STD_VER >= 14 +template +#else +template +#endif +struct _LIBCPP_TEMPLATE_VIS less_equal + : __binary_function<_Tp, _Tp, bool> +{ + typedef bool __result_type; // used by valarray + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + bool operator()(const _Tp& __x, const _Tp& __y) const + {return __x <= __y;} +}; +_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(less_equal); + +#if _LIBCPP_STD_VER >= 14 +template <> +struct _LIBCPP_TEMPLATE_VIS less_equal +{ + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + auto operator()(_T1&& __t, _T2&& __u) const + noexcept(noexcept(_VSTD::forward<_T1>(__t) <= _VSTD::forward<_T2>(__u))) + -> decltype( _VSTD::forward<_T1>(__t) <= _VSTD::forward<_T2>(__u)) + { return _VSTD::forward<_T1>(__t) <= _VSTD::forward<_T2>(__u); } + typedef void is_transparent; +}; +#endif + +#if _LIBCPP_STD_VER >= 14 +template +#else +template +#endif +struct _LIBCPP_TEMPLATE_VIS greater_equal + : __binary_function<_Tp, _Tp, bool> +{ + typedef bool __result_type; // used by valarray + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + bool operator()(const _Tp& __x, const _Tp& __y) const + {return __x >= __y;} +}; +_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(greater_equal); + +#if _LIBCPP_STD_VER >= 14 +template <> +struct _LIBCPP_TEMPLATE_VIS greater_equal +{ + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + auto operator()(_T1&& __t, _T2&& __u) const + noexcept(noexcept(_VSTD::forward<_T1>(__t) >= _VSTD::forward<_T2>(__u))) + -> decltype( _VSTD::forward<_T1>(__t) >= _VSTD::forward<_T2>(__u)) + { return _VSTD::forward<_T1>(__t) >= _VSTD::forward<_T2>(__u); } + typedef void is_transparent; +}; +#endif + +#if _LIBCPP_STD_VER >= 14 +template +#else +template +#endif +struct _LIBCPP_TEMPLATE_VIS greater + : __binary_function<_Tp, _Tp, bool> +{ + typedef bool __result_type; // used by valarray + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + bool operator()(const _Tp& __x, const _Tp& __y) const + {return __x > __y;} +}; +_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(greater); + +#if _LIBCPP_STD_VER >= 14 +template <> +struct _LIBCPP_TEMPLATE_VIS greater +{ + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + auto operator()(_T1&& __t, _T2&& __u) const + noexcept(noexcept(_VSTD::forward<_T1>(__t) > _VSTD::forward<_T2>(__u))) + -> decltype( _VSTD::forward<_T1>(__t) > _VSTD::forward<_T2>(__u)) + { return _VSTD::forward<_T1>(__t) > _VSTD::forward<_T2>(__u); } + typedef void is_transparent; +}; +#endif + +// Logical operations + +#if _LIBCPP_STD_VER >= 14 +template +#else +template +#endif +struct _LIBCPP_TEMPLATE_VIS logical_and + : __binary_function<_Tp, _Tp, bool> +{ + typedef bool __result_type; // used by valarray + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + bool operator()(const _Tp& __x, const _Tp& __y) const + {return __x && __y;} +}; +_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(logical_and); + +#if _LIBCPP_STD_VER >= 14 +template <> +struct _LIBCPP_TEMPLATE_VIS logical_and +{ + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + auto operator()(_T1&& __t, _T2&& __u) const + noexcept(noexcept(_VSTD::forward<_T1>(__t) && _VSTD::forward<_T2>(__u))) + -> decltype( _VSTD::forward<_T1>(__t) && _VSTD::forward<_T2>(__u)) + { return _VSTD::forward<_T1>(__t) && _VSTD::forward<_T2>(__u); } + typedef void is_transparent; +}; +#endif + +#if _LIBCPP_STD_VER >= 14 +template +#else +template +#endif +struct _LIBCPP_TEMPLATE_VIS logical_not + : __unary_function<_Tp, bool> +{ + typedef bool __result_type; // used by valarray + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + bool operator()(const _Tp& __x) const + {return !__x;} +}; +_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(logical_not); + +#if _LIBCPP_STD_VER >= 14 +template <> +struct _LIBCPP_TEMPLATE_VIS logical_not +{ + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + auto operator()(_Tp&& __x) const + noexcept(noexcept(!_VSTD::forward<_Tp>(__x))) + -> decltype( !_VSTD::forward<_Tp>(__x)) + { return !_VSTD::forward<_Tp>(__x); } + typedef void is_transparent; +}; +#endif + +#if _LIBCPP_STD_VER >= 14 +template +#else +template +#endif +struct _LIBCPP_TEMPLATE_VIS logical_or + : __binary_function<_Tp, _Tp, bool> +{ + typedef bool __result_type; // used by valarray + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + bool operator()(const _Tp& __x, const _Tp& __y) const + {return __x || __y;} +}; +_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(logical_or); + +#if _LIBCPP_STD_VER >= 14 +template <> +struct _LIBCPP_TEMPLATE_VIS logical_or +{ + template + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + auto operator()(_T1&& __t, _T2&& __u) const + noexcept(noexcept(_VSTD::forward<_T1>(__t) || _VSTD::forward<_T2>(__u))) + -> decltype( _VSTD::forward<_T1>(__t) || _VSTD::forward<_T2>(__u)) + { return _VSTD::forward<_T1>(__t) || _VSTD::forward<_T2>(__u); } + typedef void is_transparent; +}; +#endif + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FUNCTIONAL_OPERATIONS_H diff --git a/third_party/libcxx/__functional/perfect_forward.h b/third_party/libcxx/__functional/perfect_forward.h new file mode 100644 index 000000000..e12654c48 --- /dev/null +++ b/third_party/libcxx/__functional/perfect_forward.h @@ -0,0 +1,93 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FUNCTIONAL_PERFECT_FORWARD_H +#define _LIBCPP___FUNCTIONAL_PERFECT_FORWARD_H + +#include <__config> +#include <__utility/declval.h> +#include <__utility/forward.h> +#include <__utility/move.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 17 + +template +struct __perfect_forward_impl; + +template +struct __perfect_forward_impl<_Op, index_sequence<_Idx...>, _BoundArgs...> { +private: + tuple<_BoundArgs...> __bound_args_; + +public: + template , _Args&&...> + >> + _LIBCPP_HIDE_FROM_ABI explicit constexpr __perfect_forward_impl(_Args&&... __bound_args) + : __bound_args_(_VSTD::forward<_Args>(__bound_args)...) {} + + _LIBCPP_HIDE_FROM_ABI __perfect_forward_impl(__perfect_forward_impl const&) = default; + _LIBCPP_HIDE_FROM_ABI __perfect_forward_impl(__perfect_forward_impl&&) = default; + + _LIBCPP_HIDE_FROM_ABI __perfect_forward_impl& operator=(__perfect_forward_impl const&) = default; + _LIBCPP_HIDE_FROM_ABI __perfect_forward_impl& operator=(__perfect_forward_impl&&) = default; + + template >> + _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Args&&... __args) & + noexcept(noexcept(_Op()(_VSTD::get<_Idx>(__bound_args_)..., _VSTD::forward<_Args>(__args)...))) + -> decltype( _Op()(_VSTD::get<_Idx>(__bound_args_)..., _VSTD::forward<_Args>(__args)...)) + { return _Op()(_VSTD::get<_Idx>(__bound_args_)..., _VSTD::forward<_Args>(__args)...); } + + template >> + auto operator()(_Args&&...) & = delete; + + template >> + _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Args&&... __args) const& + noexcept(noexcept(_Op()(_VSTD::get<_Idx>(__bound_args_)..., _VSTD::forward<_Args>(__args)...))) + -> decltype( _Op()(_VSTD::get<_Idx>(__bound_args_)..., _VSTD::forward<_Args>(__args)...)) + { return _Op()(_VSTD::get<_Idx>(__bound_args_)..., _VSTD::forward<_Args>(__args)...); } + + template >> + auto operator()(_Args&&...) const& = delete; + + template >> + _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Args&&... __args) && + noexcept(noexcept(_Op()(_VSTD::get<_Idx>(_VSTD::move(__bound_args_))..., _VSTD::forward<_Args>(__args)...))) + -> decltype( _Op()(_VSTD::get<_Idx>(_VSTD::move(__bound_args_))..., _VSTD::forward<_Args>(__args)...)) + { return _Op()(_VSTD::get<_Idx>(_VSTD::move(__bound_args_))..., _VSTD::forward<_Args>(__args)...); } + + template >> + auto operator()(_Args&&...) && = delete; + + template >> + _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Args&&... __args) const&& + noexcept(noexcept(_Op()(_VSTD::get<_Idx>(_VSTD::move(__bound_args_))..., _VSTD::forward<_Args>(__args)...))) + -> decltype( _Op()(_VSTD::get<_Idx>(_VSTD::move(__bound_args_))..., _VSTD::forward<_Args>(__args)...)) + { return _Op()(_VSTD::get<_Idx>(_VSTD::move(__bound_args_))..., _VSTD::forward<_Args>(__args)...); } + + template >> + auto operator()(_Args&&...) const&& = delete; +}; + +// __perfect_forward implements a perfect-forwarding call wrapper as explained in [func.require]. +template +using __perfect_forward = __perfect_forward_impl<_Op, index_sequence_for<_Args...>, _Args...>; + +#endif // _LIBCPP_STD_VER >= 17 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FUNCTIONAL_PERFECT_FORWARD_H diff --git a/third_party/libcxx/__functional/pointer_to_binary_function.h b/third_party/libcxx/__functional/pointer_to_binary_function.h new file mode 100644 index 000000000..b2676c58f --- /dev/null +++ b/third_party/libcxx/__functional/pointer_to_binary_function.h @@ -0,0 +1,46 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FUNCTIONAL_POINTER_TO_BINARY_FUNCTION_H +#define _LIBCPP___FUNCTIONAL_POINTER_TO_BINARY_FUNCTION_H + +#include <__config> +#include <__functional/binary_function.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS) + +template +class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 pointer_to_binary_function + : public __binary_function<_Arg1, _Arg2, _Result> +{ + _Result (*__f_)(_Arg1, _Arg2); +public: + _LIBCPP_INLINE_VISIBILITY explicit pointer_to_binary_function(_Result (*__f)(_Arg1, _Arg2)) + : __f_(__f) {} + _LIBCPP_INLINE_VISIBILITY _Result operator()(_Arg1 __x, _Arg2 __y) const + {return __f_(__x, __y);} +}; + +template +_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY +pointer_to_binary_function<_Arg1,_Arg2,_Result> +ptr_fun(_Result (*__f)(_Arg1,_Arg2)) + {return pointer_to_binary_function<_Arg1,_Arg2,_Result>(__f);} + +#endif + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FUNCTIONAL_POINTER_TO_BINARY_FUNCTION_H diff --git a/third_party/libcxx/__functional/pointer_to_unary_function.h b/third_party/libcxx/__functional/pointer_to_unary_function.h new file mode 100644 index 000000000..77d07adf2 --- /dev/null +++ b/third_party/libcxx/__functional/pointer_to_unary_function.h @@ -0,0 +1,46 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FUNCTIONAL_POINTER_TO_UNARY_FUNCTION_H +#define _LIBCPP___FUNCTIONAL_POINTER_TO_UNARY_FUNCTION_H + +#include <__config> +#include <__functional/unary_function.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS) + +template +class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 pointer_to_unary_function + : public __unary_function<_Arg, _Result> +{ + _Result (*__f_)(_Arg); +public: + _LIBCPP_INLINE_VISIBILITY explicit pointer_to_unary_function(_Result (*__f)(_Arg)) + : __f_(__f) {} + _LIBCPP_INLINE_VISIBILITY _Result operator()(_Arg __x) const + {return __f_(__x);} +}; + +template +_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY +pointer_to_unary_function<_Arg,_Result> +ptr_fun(_Result (*__f)(_Arg)) + {return pointer_to_unary_function<_Arg,_Result>(__f);} + +#endif // _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS) + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FUNCTIONAL_POINTER_TO_UNARY_FUNCTION_H diff --git a/third_party/libcxx/__functional/ranges_operations.h b/third_party/libcxx/__functional/ranges_operations.h new file mode 100644 index 000000000..c344fc38f --- /dev/null +++ b/third_party/libcxx/__functional/ranges_operations.h @@ -0,0 +1,105 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FUNCTIONAL_RANGES_OPERATIONS_H +#define _LIBCPP___FUNCTIONAL_RANGES_OPERATIONS_H + +#include <__concepts/equality_comparable.h> +#include <__concepts/totally_ordered.h> +#include <__config> +#include <__type_traits/integral_constant.h> +#include <__type_traits/predicate_traits.h> +#include <__utility/forward.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +namespace ranges { + +struct equal_to { + template + requires equality_comparable_with<_Tp, _Up> + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool operator()(_Tp &&__t, _Up &&__u) const + noexcept(noexcept(bool(_VSTD::forward<_Tp>(__t) == _VSTD::forward<_Up>(__u)))) { + return _VSTD::forward<_Tp>(__t) == _VSTD::forward<_Up>(__u); + } + + using is_transparent = void; +}; + +struct not_equal_to { + template + requires equality_comparable_with<_Tp, _Up> + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool operator()(_Tp &&__t, _Up &&__u) const + noexcept(noexcept(bool(!(_VSTD::forward<_Tp>(__t) == _VSTD::forward<_Up>(__u))))) { + return !(_VSTD::forward<_Tp>(__t) == _VSTD::forward<_Up>(__u)); + } + + using is_transparent = void; +}; + +struct less { + template + requires totally_ordered_with<_Tp, _Up> + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool operator()(_Tp &&__t, _Up &&__u) const + noexcept(noexcept(bool(_VSTD::forward<_Tp>(__t) < _VSTD::forward<_Up>(__u)))) { + return _VSTD::forward<_Tp>(__t) < _VSTD::forward<_Up>(__u); + } + + using is_transparent = void; +}; + +struct less_equal { + template + requires totally_ordered_with<_Tp, _Up> + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool operator()(_Tp &&__t, _Up &&__u) const + noexcept(noexcept(bool(!(_VSTD::forward<_Up>(__u) < _VSTD::forward<_Tp>(__t))))) { + return !(_VSTD::forward<_Up>(__u) < _VSTD::forward<_Tp>(__t)); + } + + using is_transparent = void; +}; + +struct greater { + template + requires totally_ordered_with<_Tp, _Up> + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool operator()(_Tp &&__t, _Up &&__u) const + noexcept(noexcept(bool(_VSTD::forward<_Up>(__u) < _VSTD::forward<_Tp>(__t)))) { + return _VSTD::forward<_Up>(__u) < _VSTD::forward<_Tp>(__t); + } + + using is_transparent = void; +}; + +struct greater_equal { + template + requires totally_ordered_with<_Tp, _Up> + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr bool operator()(_Tp &&__t, _Up &&__u) const + noexcept(noexcept(bool(!(_VSTD::forward<_Tp>(__t) < _VSTD::forward<_Up>(__u))))) { + return !(_VSTD::forward<_Tp>(__t) < _VSTD::forward<_Up>(__u)); + } + + using is_transparent = void; +}; + +} // namespace ranges + +template +struct __is_trivial_equality_predicate : true_type {}; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FUNCTIONAL_RANGES_OPERATIONS_H diff --git a/third_party/libcxx/__functional/reference_wrapper.h b/third_party/libcxx/__functional/reference_wrapper.h new file mode 100644 index 000000000..2d382a34f --- /dev/null +++ b/third_party/libcxx/__functional/reference_wrapper.h @@ -0,0 +1,111 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FUNCTIONAL_REFERENCE_WRAPPER_H +#define _LIBCPP___FUNCTIONAL_REFERENCE_WRAPPER_H + +#include <__config> +#include <__functional/invoke.h> +#include <__functional/weak_result_type.h> +#include <__memory/addressof.h> +#include <__type_traits/enable_if.h> +#include <__type_traits/remove_cvref.h> +#include <__utility/declval.h> +#include <__utility/forward.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +class _LIBCPP_TEMPLATE_VIS reference_wrapper : public __weak_result_type<_Tp> +{ +public: + // types + typedef _Tp type; +private: + type* __f_; + + static void __fun(_Tp&) _NOEXCEPT; + static void __fun(_Tp&&) = delete; + +public: + template ::value, decltype(__fun(std::declval<_Up>())) > > + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 + reference_wrapper(_Up&& __u) _NOEXCEPT_(noexcept(__fun(std::declval<_Up>()))) { + type& __f = static_cast<_Up&&>(__u); + __f_ = _VSTD::addressof(__f); + } + + // access + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 + operator type&() const _NOEXCEPT {return *__f_;} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 + type& get() const _NOEXCEPT {return *__f_;} + + // invoke + template + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 + typename __invoke_of::type + operator() (_ArgTypes&&... __args) const +#if _LIBCPP_STD_VER >= 17 + // Since is_nothrow_invocable requires C++17 LWG3764 is not backported + // to earlier versions. + noexcept(is_nothrow_invocable_v<_Tp&, _ArgTypes...>) +#endif + { + return std::__invoke(get(), std::forward<_ArgTypes>(__args)...); + } +}; + +#if _LIBCPP_STD_VER >= 17 +template +reference_wrapper(_Tp&) -> reference_wrapper<_Tp>; +#endif + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +reference_wrapper<_Tp> +ref(_Tp& __t) _NOEXCEPT +{ + return reference_wrapper<_Tp>(__t); +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +reference_wrapper<_Tp> +ref(reference_wrapper<_Tp> __t) _NOEXCEPT +{ + return __t; +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +reference_wrapper +cref(const _Tp& __t) _NOEXCEPT +{ + return reference_wrapper(__t); +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +reference_wrapper +cref(reference_wrapper<_Tp> __t) _NOEXCEPT +{ + return __t; +} + +template void ref(const _Tp&&) = delete; +template void cref(const _Tp&&) = delete; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FUNCTIONAL_REFERENCE_WRAPPER_H diff --git a/third_party/libcxx/__functional/unary_function.h b/third_party/libcxx/__functional/unary_function.h new file mode 100644 index 000000000..f07cac175 --- /dev/null +++ b/third_party/libcxx/__functional/unary_function.h @@ -0,0 +1,51 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FUNCTIONAL_UNARY_FUNCTION_H +#define _LIBCPP___FUNCTIONAL_UNARY_FUNCTION_H + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION) + +template +struct _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 unary_function +{ + typedef _Arg argument_type; + typedef _Result result_type; +}; + +#endif // _LIBCPP_STD_VER <= 14 + +template struct __unary_function_keep_layout_base { +#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS) + using argument_type _LIBCPP_DEPRECATED_IN_CXX17 = _Arg; + using result_type _LIBCPP_DEPRECATED_IN_CXX17 = _Result; +#endif +}; + +#if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION) +_LIBCPP_DIAGNOSTIC_PUSH +_LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wdeprecated-declarations") +template +using __unary_function = unary_function<_Arg, _Result>; +_LIBCPP_DIAGNOSTIC_POP +#else +template +using __unary_function = __unary_function_keep_layout_base<_Arg, _Result>; +#endif + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FUNCTIONAL_UNARY_FUNCTION_H diff --git a/third_party/libcxx/__functional/unary_negate.h b/third_party/libcxx/__functional/unary_negate.h new file mode 100644 index 000000000..ab87e86d1 --- /dev/null +++ b/third_party/libcxx/__functional/unary_negate.h @@ -0,0 +1,47 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FUNCTIONAL_UNARY_NEGATE_H +#define _LIBCPP___FUNCTIONAL_UNARY_NEGATE_H + +#include <__config> +#include <__functional/unary_function.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_NEGATORS) + +template +class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX17 unary_negate + : public __unary_function +{ + _Predicate __pred_; +public: + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + explicit unary_negate(const _Predicate& __pred) + : __pred_(__pred) {} + _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY + bool operator()(const typename _Predicate::argument_type& __x) const + {return !__pred_(__x);} +}; + +template +_LIBCPP_DEPRECATED_IN_CXX17 inline _LIBCPP_CONSTEXPR_SINCE_CXX14 _LIBCPP_INLINE_VISIBILITY +unary_negate<_Predicate> +not1(const _Predicate& __pred) {return unary_negate<_Predicate>(__pred);} + +#endif // _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_NEGATORS) + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FUNCTIONAL_UNARY_NEGATE_H diff --git a/third_party/libcxx/__functional/weak_result_type.h b/third_party/libcxx/__functional/weak_result_type.h new file mode 100644 index 000000000..18d1bf718 --- /dev/null +++ b/third_party/libcxx/__functional/weak_result_type.h @@ -0,0 +1,294 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FUNCTIONAL_WEAK_RESULT_TYPE_H +#define _LIBCPP___FUNCTIONAL_WEAK_RESULT_TYPE_H + +#include <__config> +#include <__functional/binary_function.h> +#include <__functional/invoke.h> +#include <__functional/unary_function.h> +#include <__type_traits/integral_constant.h> +#include <__type_traits/is_same.h> +#include <__utility/declval.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +struct __has_result_type +{ +private: + template static false_type __test(...); + template static true_type __test(typename _Up::result_type* = 0); +public: + static const bool value = decltype(__test<_Tp>(0))::value; +}; + +// __weak_result_type + +template +struct __derives_from_unary_function +{ +private: + struct __two {char __lx; char __lxx;}; + static __two __test(...); + template + static __unary_function<_Ap, _Rp> + __test(const volatile __unary_function<_Ap, _Rp>*); + +public: + static const bool value = !is_same::value; + typedef decltype(__test((_Tp*)0)) type; +}; + +template +struct __derives_from_binary_function +{ +private: + struct __two {char __lx; char __lxx;}; + static __two __test(...); + template + static __binary_function<_A1, _A2, _Rp> + __test(const volatile __binary_function<_A1, _A2, _Rp>*); + +public: + static const bool value = !is_same::value; + typedef decltype(__test((_Tp*)0)) type; +}; + +template ::value> +struct __maybe_derive_from_unary_function // bool is true + : public __derives_from_unary_function<_Tp>::type +{ +}; + +template +struct __maybe_derive_from_unary_function<_Tp, false> +{ +}; + +template ::value> +struct __maybe_derive_from_binary_function // bool is true + : public __derives_from_binary_function<_Tp>::type +{ +}; + +template +struct __maybe_derive_from_binary_function<_Tp, false> +{ +}; + +template ::value> +struct __weak_result_type_imp // bool is true + : public __maybe_derive_from_unary_function<_Tp>, + public __maybe_derive_from_binary_function<_Tp> +{ +#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS) + using result_type _LIBCPP_NODEBUG _LIBCPP_DEPRECATED_IN_CXX17 = typename _Tp::result_type; +#endif +}; + +template +struct __weak_result_type_imp<_Tp, false> + : public __maybe_derive_from_unary_function<_Tp>, + public __maybe_derive_from_binary_function<_Tp> +{ +}; + +template +struct __weak_result_type + : public __weak_result_type_imp<_Tp> +{ +}; + +// 0 argument case + +template +struct __weak_result_type<_Rp ()> +{ +#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS) + using result_type _LIBCPP_NODEBUG _LIBCPP_DEPRECATED_IN_CXX17 = _Rp; +#endif +}; + +template +struct __weak_result_type<_Rp (&)()> +{ +#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS) + using result_type _LIBCPP_NODEBUG _LIBCPP_DEPRECATED_IN_CXX17 = _Rp; +#endif +}; + +template +struct __weak_result_type<_Rp (*)()> +{ +#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS) + using result_type _LIBCPP_NODEBUG _LIBCPP_DEPRECATED_IN_CXX17 = _Rp; +#endif +}; + +// 1 argument case + +template +struct __weak_result_type<_Rp (_A1)> + : public __unary_function<_A1, _Rp> +{ +}; + +template +struct __weak_result_type<_Rp (&)(_A1)> + : public __unary_function<_A1, _Rp> +{ +}; + +template +struct __weak_result_type<_Rp (*)(_A1)> + : public __unary_function<_A1, _Rp> +{ +}; + +template +struct __weak_result_type<_Rp (_Cp::*)()> + : public __unary_function<_Cp*, _Rp> +{ +}; + +template +struct __weak_result_type<_Rp (_Cp::*)() const> + : public __unary_function +{ +}; + +template +struct __weak_result_type<_Rp (_Cp::*)() volatile> + : public __unary_function +{ +}; + +template +struct __weak_result_type<_Rp (_Cp::*)() const volatile> + : public __unary_function +{ +}; + +// 2 argument case + +template +struct __weak_result_type<_Rp (_A1, _A2)> + : public __binary_function<_A1, _A2, _Rp> +{ +}; + +template +struct __weak_result_type<_Rp (*)(_A1, _A2)> + : public __binary_function<_A1, _A2, _Rp> +{ +}; + +template +struct __weak_result_type<_Rp (&)(_A1, _A2)> + : public __binary_function<_A1, _A2, _Rp> +{ +}; + +template +struct __weak_result_type<_Rp (_Cp::*)(_A1)> + : public __binary_function<_Cp*, _A1, _Rp> +{ +}; + +template +struct __weak_result_type<_Rp (_Cp::*)(_A1) const> + : public __binary_function +{ +}; + +template +struct __weak_result_type<_Rp (_Cp::*)(_A1) volatile> + : public __binary_function +{ +}; + +template +struct __weak_result_type<_Rp (_Cp::*)(_A1) const volatile> + : public __binary_function +{ +}; + +// 3 or more arguments + +template +struct __weak_result_type<_Rp (_A1, _A2, _A3, _A4...)> +{ +#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS) + using result_type _LIBCPP_NODEBUG _LIBCPP_DEPRECATED_IN_CXX17 = _Rp; +#endif +}; + +template +struct __weak_result_type<_Rp (&)(_A1, _A2, _A3, _A4...)> +{ +#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS) + using result_type _LIBCPP_NODEBUG _LIBCPP_DEPRECATED_IN_CXX17 = _Rp; +#endif +}; + +template +struct __weak_result_type<_Rp (*)(_A1, _A2, _A3, _A4...)> +{ +#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS) + using result_type _LIBCPP_NODEBUG _LIBCPP_DEPRECATED_IN_CXX17 = _Rp; +#endif +}; + +template +struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2, _A3...)> +{ +#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS) + using result_type _LIBCPP_NODEBUG _LIBCPP_DEPRECATED_IN_CXX17 = _Rp; +#endif +}; + +template +struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2, _A3...) const> +{ +#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS) + using result_type _LIBCPP_NODEBUG _LIBCPP_DEPRECATED_IN_CXX17 = _Rp; +#endif +}; + +template +struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2, _A3...) volatile> +{ +#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS) + using result_type _LIBCPP_NODEBUG _LIBCPP_DEPRECATED_IN_CXX17 = _Rp; +#endif +}; + +template +struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2, _A3...) const volatile> +{ +#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS) + using result_type _LIBCPP_NODEBUG _LIBCPP_DEPRECATED_IN_CXX17 = _Rp; +#endif +}; + +template +struct __invoke_return +{ + typedef decltype(_VSTD::__invoke(std::declval<_Tp>(), std::declval<_Args>()...)) type; +}; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FUNCTIONAL_WEAK_RESULT_TYPE_H diff --git a/third_party/libcxx/__functional_base b/third_party/libcxx/__functional_base deleted file mode 100644 index a6b69b084..000000000 --- a/third_party/libcxx/__functional_base +++ /dev/null @@ -1,652 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_FUNCTIONAL_BASE -#define _LIBCPP_FUNCTIONAL_BASE - -#include "third_party/libcxx/__config" -#include "third_party/libcxx/type_traits" -#include "third_party/libcxx/typeinfo" -#include "third_party/libcxx/exception" -#include "third_party/libcxx/new" -#include "third_party/libcxx/utility" - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_BEGIN_NAMESPACE_STD - -template -struct _LIBCPP_TEMPLATE_VIS binary_function -{ - typedef _Arg1 first_argument_type; - typedef _Arg2 second_argument_type; - typedef _Result result_type; -}; - -template -struct __has_result_type -{ -private: - struct __two {char __lx; char __lxx;}; - template static __two __test(...); - template static char __test(typename _Up::result_type* = 0); -public: - static const bool value = sizeof(__test<_Tp>(0)) == 1; -}; - -#if _LIBCPP_STD_VER > 11 -template -#else -template -#endif -struct _LIBCPP_TEMPLATE_VIS less : binary_function<_Tp, _Tp, bool> -{ - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - bool operator()(const _Tp& __x, const _Tp& __y) const - {return __x < __y;} -}; - -#if _LIBCPP_STD_VER > 11 -template <> -struct _LIBCPP_TEMPLATE_VIS less -{ - template - _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY - auto operator()(_T1&& __t, _T2&& __u) const - _NOEXCEPT_(noexcept(_VSTD::forward<_T1>(__t) < _VSTD::forward<_T2>(__u))) - -> decltype (_VSTD::forward<_T1>(__t) < _VSTD::forward<_T2>(__u)) - { return _VSTD::forward<_T1>(__t) < _VSTD::forward<_T2>(__u); } - typedef void is_transparent; -}; -#endif - -// __weak_result_type - -template -struct __derives_from_unary_function -{ -private: - struct __two {char __lx; char __lxx;}; - static __two __test(...); - template - static unary_function<_Ap, _Rp> - __test(const volatile unary_function<_Ap, _Rp>*); -public: - static const bool value = !is_same::value; - typedef decltype(__test((_Tp*)0)) type; -}; - -template -struct __derives_from_binary_function -{ -private: - struct __two {char __lx; char __lxx;}; - static __two __test(...); - template - static binary_function<_A1, _A2, _Rp> - __test(const volatile binary_function<_A1, _A2, _Rp>*); -public: - static const bool value = !is_same::value; - typedef decltype(__test((_Tp*)0)) type; -}; - -template ::value> -struct __maybe_derive_from_unary_function // bool is true - : public __derives_from_unary_function<_Tp>::type -{ -}; - -template -struct __maybe_derive_from_unary_function<_Tp, false> -{ -}; - -template ::value> -struct __maybe_derive_from_binary_function // bool is true - : public __derives_from_binary_function<_Tp>::type -{ -}; - -template -struct __maybe_derive_from_binary_function<_Tp, false> -{ -}; - -template ::value> -struct __weak_result_type_imp // bool is true - : public __maybe_derive_from_unary_function<_Tp>, - public __maybe_derive_from_binary_function<_Tp> -{ - typedef _LIBCPP_NODEBUG_TYPE typename _Tp::result_type result_type; -}; - -template -struct __weak_result_type_imp<_Tp, false> - : public __maybe_derive_from_unary_function<_Tp>, - public __maybe_derive_from_binary_function<_Tp> -{ -}; - -template -struct __weak_result_type - : public __weak_result_type_imp<_Tp> -{ -}; - -// 0 argument case - -template -struct __weak_result_type<_Rp ()> -{ - typedef _LIBCPP_NODEBUG_TYPE _Rp result_type; -}; - -template -struct __weak_result_type<_Rp (&)()> -{ - typedef _LIBCPP_NODEBUG_TYPE _Rp result_type; -}; - -template -struct __weak_result_type<_Rp (*)()> -{ - typedef _LIBCPP_NODEBUG_TYPE _Rp result_type; -}; - -// 1 argument case - -template -struct __weak_result_type<_Rp (_A1)> - : public unary_function<_A1, _Rp> -{ -}; - -template -struct __weak_result_type<_Rp (&)(_A1)> - : public unary_function<_A1, _Rp> -{ -}; - -template -struct __weak_result_type<_Rp (*)(_A1)> - : public unary_function<_A1, _Rp> -{ -}; - -template -struct __weak_result_type<_Rp (_Cp::*)()> - : public unary_function<_Cp*, _Rp> -{ -}; - -template -struct __weak_result_type<_Rp (_Cp::*)() const> - : public unary_function -{ -}; - -template -struct __weak_result_type<_Rp (_Cp::*)() volatile> - : public unary_function -{ -}; - -template -struct __weak_result_type<_Rp (_Cp::*)() const volatile> - : public unary_function -{ -}; - -// 2 argument case - -template -struct __weak_result_type<_Rp (_A1, _A2)> - : public binary_function<_A1, _A2, _Rp> -{ -}; - -template -struct __weak_result_type<_Rp (*)(_A1, _A2)> - : public binary_function<_A1, _A2, _Rp> -{ -}; - -template -struct __weak_result_type<_Rp (&)(_A1, _A2)> - : public binary_function<_A1, _A2, _Rp> -{ -}; - -template -struct __weak_result_type<_Rp (_Cp::*)(_A1)> - : public binary_function<_Cp*, _A1, _Rp> -{ -}; - -template -struct __weak_result_type<_Rp (_Cp::*)(_A1) const> - : public binary_function -{ -}; - -template -struct __weak_result_type<_Rp (_Cp::*)(_A1) volatile> - : public binary_function -{ -}; - -template -struct __weak_result_type<_Rp (_Cp::*)(_A1) const volatile> - : public binary_function -{ -}; - - -#ifndef _LIBCPP_CXX03_LANG -// 3 or more arguments - -template -struct __weak_result_type<_Rp (_A1, _A2, _A3, _A4...)> -{ - typedef _Rp result_type; -}; - -template -struct __weak_result_type<_Rp (&)(_A1, _A2, _A3, _A4...)> -{ - typedef _Rp result_type; -}; - -template -struct __weak_result_type<_Rp (*)(_A1, _A2, _A3, _A4...)> -{ - typedef _Rp result_type; -}; - -template -struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2, _A3...)> -{ - typedef _Rp result_type; -}; - -template -struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2, _A3...) const> -{ - typedef _Rp result_type; -}; - -template -struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2, _A3...) volatile> -{ - typedef _Rp result_type; -}; - -template -struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2, _A3...) const volatile> -{ - typedef _Rp result_type; -}; - -template -struct __invoke_return -{ - typedef decltype(__invoke(_VSTD::declval<_Tp>(), _VSTD::declval<_Args>()...)) type; -}; - -#else // defined(_LIBCPP_CXX03_LANG) - -//#include "third_party/libcxx/__functional_base_03" - -#endif // !defined(_LIBCPP_CXX03_LANG) - - -template -struct __invoke_void_return_wrapper -{ -#ifndef _LIBCPP_CXX03_LANG - template - static _Ret __call(_Args&&... __args) { - return __invoke(_VSTD::forward<_Args>(__args)...); - } -#else - template - static _Ret __call(_Fn __f) { - return __invoke(__f); - } - - template - static _Ret __call(_Fn __f, _A0& __a0) { - return __invoke(__f, __a0); - } - - template - static _Ret __call(_Fn __f, _A0& __a0, _A1& __a1) { - return __invoke(__f, __a0, __a1); - } - - template - static _Ret __call(_Fn __f, _A0& __a0, _A1& __a1, _A2& __a2){ - return __invoke(__f, __a0, __a1, __a2); - } -#endif -}; - -template <> -struct __invoke_void_return_wrapper -{ -#ifndef _LIBCPP_CXX03_LANG - template - static void __call(_Args&&... __args) { - __invoke(_VSTD::forward<_Args>(__args)...); - } -#else - template - static void __call(_Fn __f) { - __invoke(__f); - } - - template - static void __call(_Fn __f, _A0& __a0) { - __invoke(__f, __a0); - } - - template - static void __call(_Fn __f, _A0& __a0, _A1& __a1) { - __invoke(__f, __a0, __a1); - } - - template - static void __call(_Fn __f, _A0& __a0, _A1& __a1, _A2& __a2) { - __invoke(__f, __a0, __a1, __a2); - } -#endif -}; - -template -class _LIBCPP_TEMPLATE_VIS reference_wrapper - : public __weak_result_type<_Tp> -{ -public: - // types - typedef _Tp type; -private: - type* __f_; - -public: - // construct/copy/destroy - _LIBCPP_INLINE_VISIBILITY reference_wrapper(type& __f) _NOEXCEPT - : __f_(_VSTD::addressof(__f)) {} -#ifndef _LIBCPP_CXX03_LANG - private: reference_wrapper(type&&); public: // = delete; // do not bind to temps -#endif - - // access - _LIBCPP_INLINE_VISIBILITY operator type& () const _NOEXCEPT {return *__f_;} - _LIBCPP_INLINE_VISIBILITY type& get() const _NOEXCEPT {return *__f_;} - -#ifndef _LIBCPP_CXX03_LANG - // invoke - template - _LIBCPP_INLINE_VISIBILITY - typename __invoke_of::type - operator() (_ArgTypes&&... __args) const { - return __invoke(get(), _VSTD::forward<_ArgTypes>(__args)...); - } -#else - - _LIBCPP_INLINE_VISIBILITY - typename __invoke_return::type - operator() () const { - return __invoke(get()); - } - - template - _LIBCPP_INLINE_VISIBILITY - typename __invoke_return0::type - operator() (_A0& __a0) const { - return __invoke(get(), __a0); - } - - template - _LIBCPP_INLINE_VISIBILITY - typename __invoke_return0::type - operator() (_A0 const& __a0) const { - return __invoke(get(), __a0); - } - - template - _LIBCPP_INLINE_VISIBILITY - typename __invoke_return1::type - operator() (_A0& __a0, _A1& __a1) const { - return __invoke(get(), __a0, __a1); - } - - template - _LIBCPP_INLINE_VISIBILITY - typename __invoke_return1::type - operator() (_A0 const& __a0, _A1& __a1) const { - return __invoke(get(), __a0, __a1); - } - - template - _LIBCPP_INLINE_VISIBILITY - typename __invoke_return1::type - operator() (_A0& __a0, _A1 const& __a1) const { - return __invoke(get(), __a0, __a1); - } - - template - _LIBCPP_INLINE_VISIBILITY - typename __invoke_return1::type - operator() (_A0 const& __a0, _A1 const& __a1) const { - return __invoke(get(), __a0, __a1); - } - - template - _LIBCPP_INLINE_VISIBILITY - typename __invoke_return2::type - operator() (_A0& __a0, _A1& __a1, _A2& __a2) const { - return __invoke(get(), __a0, __a1, __a2); - } - - template - _LIBCPP_INLINE_VISIBILITY - typename __invoke_return2::type - operator() (_A0 const& __a0, _A1& __a1, _A2& __a2) const { - return __invoke(get(), __a0, __a1, __a2); - } - - template - _LIBCPP_INLINE_VISIBILITY - typename __invoke_return2::type - operator() (_A0& __a0, _A1 const& __a1, _A2& __a2) const { - return __invoke(get(), __a0, __a1, __a2); - } - - template - _LIBCPP_INLINE_VISIBILITY - typename __invoke_return2::type - operator() (_A0& __a0, _A1& __a1, _A2 const& __a2) const { - return __invoke(get(), __a0, __a1, __a2); - } - - template - _LIBCPP_INLINE_VISIBILITY - typename __invoke_return2::type - operator() (_A0 const& __a0, _A1 const& __a1, _A2& __a2) const { - return __invoke(get(), __a0, __a1, __a2); - } - - template - _LIBCPP_INLINE_VISIBILITY - typename __invoke_return2::type - operator() (_A0 const& __a0, _A1& __a1, _A2 const& __a2) const { - return __invoke(get(), __a0, __a1, __a2); - } - - template - _LIBCPP_INLINE_VISIBILITY - typename __invoke_return2::type - operator() (_A0& __a0, _A1 const& __a1, _A2 const& __a2) const { - return __invoke(get(), __a0, __a1, __a2); - } - - template - _LIBCPP_INLINE_VISIBILITY - typename __invoke_return2::type - operator() (_A0 const& __a0, _A1 const& __a1, _A2 const& __a2) const { - return __invoke(get(), __a0, __a1, __a2); - } -#endif // _LIBCPP_CXX03_LANG -}; - - -template -inline _LIBCPP_INLINE_VISIBILITY -reference_wrapper<_Tp> -ref(_Tp& __t) _NOEXCEPT -{ - return reference_wrapper<_Tp>(__t); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -reference_wrapper<_Tp> -ref(reference_wrapper<_Tp> __t) _NOEXCEPT -{ - return ref(__t.get()); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -reference_wrapper -cref(const _Tp& __t) _NOEXCEPT -{ - return reference_wrapper(__t); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -reference_wrapper -cref(reference_wrapper<_Tp> __t) _NOEXCEPT -{ - return cref(__t.get()); -} - -#ifndef _LIBCPP_CXX03_LANG -template void ref(const _Tp&&) = delete; -template void cref(const _Tp&&) = delete; -#endif - -#if _LIBCPP_STD_VER > 11 -template -struct __is_transparent : false_type {}; - -template -struct __is_transparent<_Tp, _Up, - typename __void_t::type> - : true_type {}; -#endif - -// allocator_arg_t - -struct _LIBCPP_TEMPLATE_VIS allocator_arg_t { explicit allocator_arg_t() = default; }; - -#if defined(_LIBCPP_CXX03_LANG) || defined(_LIBCPP_BUILDING_LIBRARY) -extern _LIBCPP_EXPORTED_FROM_ABI const allocator_arg_t allocator_arg; -#else -/* _LIBCPP_INLINE_VAR */ constexpr allocator_arg_t allocator_arg = allocator_arg_t(); -#endif - -// uses_allocator - -template -struct __has_allocator_type -{ -private: - struct __two {char __lx; char __lxx;}; - template static __two __test(...); - template static char __test(typename _Up::allocator_type* = 0); -public: - static const bool value = sizeof(__test<_Tp>(0)) == 1; -}; - -template ::value> -struct __uses_allocator - : public integral_constant::value> -{ -}; - -template -struct __uses_allocator<_Tp, _Alloc, false> - : public false_type -{ -}; - -template -struct _LIBCPP_TEMPLATE_VIS uses_allocator - : public __uses_allocator<_Tp, _Alloc> -{ -}; - -#if _LIBCPP_STD_VER > 14 -template -_LIBCPP_INLINE_VAR constexpr size_t uses_allocator_v = uses_allocator<_Tp, _Alloc>::value; -#endif - -#ifndef _LIBCPP_CXX03_LANG - -// allocator construction - -template -struct __uses_alloc_ctor_imp -{ - typedef _LIBCPP_NODEBUG_TYPE typename __uncvref<_Alloc>::type _RawAlloc; - static const bool __ua = uses_allocator<_Tp, _RawAlloc>::value; - static const bool __ic = - is_constructible<_Tp, allocator_arg_t, _Alloc, _Args...>::value; - static const int value = __ua ? 2 - __ic : 0; -}; - -template -struct __uses_alloc_ctor - : integral_constant::value> - {}; - -template -inline _LIBCPP_INLINE_VISIBILITY -void __user_alloc_construct_impl (integral_constant, _Tp *__storage, const _Allocator &, _Args &&... __args ) -{ - new (__storage) _Tp (_VSTD::forward<_Args>(__args)...); -} - -// FIXME: This should have a version which takes a non-const alloc. -template -inline _LIBCPP_INLINE_VISIBILITY -void __user_alloc_construct_impl (integral_constant, _Tp *__storage, const _Allocator &__a, _Args &&... __args ) -{ - new (__storage) _Tp (allocator_arg, __a, _VSTD::forward<_Args>(__args)...); -} - -// FIXME: This should have a version which takes a non-const alloc. -template -inline _LIBCPP_INLINE_VISIBILITY -void __user_alloc_construct_impl (integral_constant, _Tp *__storage, const _Allocator &__a, _Args &&... __args ) -{ - new (__storage) _Tp (_VSTD::forward<_Args>(__args)..., __a); -} - -#endif // _LIBCPP_CXX03_LANG - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_FUNCTIONAL_BASE diff --git a/third_party/libcxx/__fwd/array.h b/third_party/libcxx/__fwd/array.h new file mode 100644 index 000000000..9a79effb6 --- /dev/null +++ b/third_party/libcxx/__fwd/array.h @@ -0,0 +1,26 @@ +//===---------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===---------------------------------------------------------------------===// + +#ifndef _LIBCPP___FWD_ARRAY_H +#define _LIBCPP___FWD_ARRAY_H + +#include <__config> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +struct _LIBCPP_TEMPLATE_VIS array; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FWD_ARRAY_H diff --git a/third_party/libcxx/__fwd/fstream.h b/third_party/libcxx/__fwd/fstream.h new file mode 100644 index 000000000..b4a112bfd --- /dev/null +++ b/third_party/libcxx/__fwd/fstream.h @@ -0,0 +1,53 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FWD_FSTREAM_H +#define _LIBCPP___FWD_FSTREAM_H + +#include <__config> +#include <__fwd/string.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template > +class _LIBCPP_TEMPLATE_VIS basic_filebuf; +template > +class _LIBCPP_TEMPLATE_VIS basic_ifstream; +template > +class _LIBCPP_TEMPLATE_VIS basic_ofstream; +template > +class _LIBCPP_TEMPLATE_VIS basic_fstream; + +using filebuf = basic_filebuf; +using ifstream = basic_ifstream; +using ofstream = basic_ofstream; +using fstream = basic_fstream; + +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +using wfilebuf = basic_filebuf; +using wifstream = basic_ifstream; +using wofstream = basic_ofstream; +using wfstream = basic_fstream; +#endif + +template +class _LIBCPP_PREFERRED_NAME(filebuf) _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wfilebuf)) basic_filebuf; +template +class _LIBCPP_PREFERRED_NAME(ifstream) _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wifstream)) basic_ifstream; +template +class _LIBCPP_PREFERRED_NAME(ofstream) _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wofstream)) basic_ofstream; +template +class _LIBCPP_PREFERRED_NAME(fstream) _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wfstream)) basic_fstream; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FWD_FSTREAM_H diff --git a/third_party/libcxx/__fwd/get.h b/third_party/libcxx/__fwd/get.h new file mode 100644 index 000000000..d04341496 --- /dev/null +++ b/third_party/libcxx/__fwd/get.h @@ -0,0 +1,115 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FWD_GET_H +#define _LIBCPP___FWD_GET_H + +#include <__concepts/copyable.h> +#include <__config> +#include <__fwd/array.h> +#include <__fwd/pair.h> +#include <__fwd/subrange.h> +#include <__fwd/tuple.h> +#include <__tuple/tuple_element.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#ifndef _LIBCPP_CXX03_LANG + +template +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +typename tuple_element<_Ip, tuple<_Tp...> >::type& +get(tuple<_Tp...>&) _NOEXCEPT; + +template +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +const typename tuple_element<_Ip, tuple<_Tp...> >::type& +get(const tuple<_Tp...>&) _NOEXCEPT; + +template +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +typename tuple_element<_Ip, tuple<_Tp...> >::type&& +get(tuple<_Tp...>&&) _NOEXCEPT; + +template +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +const typename tuple_element<_Ip, tuple<_Tp...> >::type&& +get(const tuple<_Tp...>&&) _NOEXCEPT; + +#endif //_LIBCPP_CXX03_LANG + +template +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +typename tuple_element<_Ip, pair<_T1, _T2> >::type& +get(pair<_T1, _T2>&) _NOEXCEPT; + +template +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +const typename tuple_element<_Ip, pair<_T1, _T2> >::type& +get(const pair<_T1, _T2>&) _NOEXCEPT; + +#ifndef _LIBCPP_CXX03_LANG +template +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +typename tuple_element<_Ip, pair<_T1, _T2> >::type&& +get(pair<_T1, _T2>&&) _NOEXCEPT; + +template +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +const typename tuple_element<_Ip, pair<_T1, _T2> >::type&& +get(const pair<_T1, _T2>&&) _NOEXCEPT; +#endif + +template +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +_Tp& +get(array<_Tp, _Size>&) _NOEXCEPT; + +template +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +const _Tp& +get(const array<_Tp, _Size>&) _NOEXCEPT; + +#ifndef _LIBCPP_CXX03_LANG +template +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +_Tp&& +get(array<_Tp, _Size>&&) _NOEXCEPT; + +template +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +const _Tp&& +get(const array<_Tp, _Size>&&) _NOEXCEPT; +#endif + +#if _LIBCPP_STD_VER >= 20 + +namespace ranges { + +template + requires((_Index == 0 && copyable<_Iter>) || _Index == 1) +_LIBCPP_HIDE_FROM_ABI constexpr auto get(const subrange<_Iter, _Sent, _Kind>& __subrange); + +template + requires(_Index < 2) +_LIBCPP_HIDE_FROM_ABI constexpr auto get(subrange<_Iter, _Sent, _Kind>&& __subrange); + +} // namespace ranges + +using ranges::get; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FWD_GET_H diff --git a/third_party/libcxx/__fwd/hash.h b/third_party/libcxx/__fwd/hash.h new file mode 100644 index 000000000..af9eca876 --- /dev/null +++ b/third_party/libcxx/__fwd/hash.h @@ -0,0 +1,25 @@ +//===---------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===---------------------------------------------------------------------===// + +#ifndef _LIBCPP___FWD_HASH_H +#define _LIBCPP___FWD_HASH_H + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +struct _LIBCPP_TEMPLATE_VIS hash; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FWD_HASH_H diff --git a/third_party/libcxx/__fwd/ios.h b/third_party/libcxx/__fwd/ios.h new file mode 100644 index 000000000..82c865d58 --- /dev/null +++ b/third_party/libcxx/__fwd/ios.h @@ -0,0 +1,41 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FWD_IOS_H +#define _LIBCPP___FWD_IOS_H + +#include <__config> +#include <__fwd/string.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template > +class _LIBCPP_TEMPLATE_VIS basic_ios; + +using ios = basic_ios; +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +using wios = basic_ios; +#endif + +template +class _LIBCPP_PREFERRED_NAME(ios) _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wios)) basic_ios; + +#if defined(_NEWLIB_VERSION) +// On newlib, off_t is 'long int' +using streamoff = long int; // for char_traits in +#else +using streamoff = long long; // for char_traits in +#endif + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FWD_IOS_H diff --git a/third_party/libcxx/__fwd/istream.h b/third_party/libcxx/__fwd/istream.h new file mode 100644 index 000000000..a06907a6c --- /dev/null +++ b/third_party/libcxx/__fwd/istream.h @@ -0,0 +1,43 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FWD_ISTREAM_H +#define _LIBCPP___FWD_ISTREAM_H + +#include <__config> +#include <__fwd/string.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template > +class _LIBCPP_TEMPLATE_VIS basic_istream; + +template > +class _LIBCPP_TEMPLATE_VIS basic_iostream; + +using istream = basic_istream; +using iostream = basic_iostream; + +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +using wistream = basic_istream; +using wiostream = basic_iostream; +#endif + +template +class _LIBCPP_PREFERRED_NAME(istream) _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wistream)) basic_istream; + +template +class _LIBCPP_PREFERRED_NAME(iostream) _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wiostream)) basic_iostream; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FWD_ISTREAM_H diff --git a/third_party/libcxx/__fwd/memory_resource.h b/third_party/libcxx/__fwd/memory_resource.h new file mode 100644 index 000000000..718a9078d --- /dev/null +++ b/third_party/libcxx/__fwd/memory_resource.h @@ -0,0 +1,27 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FWD_MEMORY_RESOURCE_H +#define _LIBCPP___FWD_MEMORY_RESOURCE_H + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace pmr { +template +class _LIBCPP_TEMPLATE_VIS polymorphic_allocator; +} // namespace pmr + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FWD_MEMORY_RESOURCE_H diff --git a/third_party/libcxx/__fwd/ostream.h b/third_party/libcxx/__fwd/ostream.h new file mode 100644 index 000000000..3347e0f71 --- /dev/null +++ b/third_party/libcxx/__fwd/ostream.h @@ -0,0 +1,35 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FWD_OSTREAM_H +#define _LIBCPP___FWD_OSTREAM_H + +#include <__config> +#include <__fwd/string.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template > +class _LIBCPP_TEMPLATE_VIS basic_ostream; + +using ostream = basic_ostream; + +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +using wostream = basic_ostream; +#endif + +template +class _LIBCPP_PREFERRED_NAME(ostream) _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wostream)) basic_ostream; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FWD_OSTREAM_H diff --git a/third_party/libcxx/__fwd/pair.h b/third_party/libcxx/__fwd/pair.h new file mode 100644 index 000000000..3844014de --- /dev/null +++ b/third_party/libcxx/__fwd/pair.h @@ -0,0 +1,25 @@ +//===---------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===---------------------------------------------------------------------===// + +#ifndef _LIBCPP___FWD_PAIR_H +#define _LIBCPP___FWD_PAIR_H + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +struct _LIBCPP_TEMPLATE_VIS pair; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FWD_PAIR_H diff --git a/third_party/libcxx/__fwd/span.h b/third_party/libcxx/__fwd/span.h new file mode 100644 index 000000000..e9fa70382 --- /dev/null +++ b/third_party/libcxx/__fwd/span.h @@ -0,0 +1,37 @@ +// -*- C++ -*- +//===---------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===---------------------------------------------------------------------===// + +#ifndef _LIBCPP___FWD_SPAN_H +#define _LIBCPP___FWD_SPAN_H + +#include <__config> +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +inline constexpr size_t dynamic_extent = numeric_limits::max(); +template class span; + +#endif + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif // _LIBCPP___FWD_SPAN_H diff --git a/third_party/libcxx/__fwd/sstream.h b/third_party/libcxx/__fwd/sstream.h new file mode 100644 index 000000000..e2d46fbe1 --- /dev/null +++ b/third_party/libcxx/__fwd/sstream.h @@ -0,0 +1,57 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FWD_SSTREAM_H +#define _LIBCPP___FWD_SSTREAM_H + +#include <__config> +#include <__fwd/string.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template , class _Allocator = allocator<_CharT> > +class _LIBCPP_TEMPLATE_VIS basic_stringbuf; + +template , class _Allocator = allocator<_CharT> > +class _LIBCPP_TEMPLATE_VIS basic_istringstream; +template , class _Allocator = allocator<_CharT> > +class _LIBCPP_TEMPLATE_VIS basic_ostringstream; +template , class _Allocator = allocator<_CharT> > +class _LIBCPP_TEMPLATE_VIS basic_stringstream; + +using stringbuf = basic_stringbuf; +using istringstream = basic_istringstream; +using ostringstream = basic_ostringstream; +using stringstream = basic_stringstream; + +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +using wstringbuf = basic_stringbuf; +using wistringstream = basic_istringstream; +using wostringstream = basic_ostringstream; +using wstringstream = basic_stringstream; +#endif + +template +class _LIBCPP_PREFERRED_NAME(stringbuf) _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wstringbuf)) basic_stringbuf; +template +class _LIBCPP_PREFERRED_NAME(istringstream) + _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wistringstream)) basic_istringstream; +template +class _LIBCPP_PREFERRED_NAME(ostringstream) + _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wostringstream)) basic_ostringstream; +template +class _LIBCPP_PREFERRED_NAME(stringstream) + _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wstringstream)) basic_stringstream; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FWD_SSTREAM_H diff --git a/third_party/libcxx/__fwd/streambuf.h b/third_party/libcxx/__fwd/streambuf.h new file mode 100644 index 000000000..b35afa6af --- /dev/null +++ b/third_party/libcxx/__fwd/streambuf.h @@ -0,0 +1,35 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FWD_STREAMBUF_H +#define _LIBCPP___FWD_STREAMBUF_H + +#include <__config> +#include <__fwd/string.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template > +class _LIBCPP_TEMPLATE_VIS basic_streambuf; + +using streambuf = basic_streambuf; + +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +using wstreambuf = basic_streambuf; +#endif + +template +class _LIBCPP_PREFERRED_NAME(streambuf) _LIBCPP_IF_WIDE_CHARACTERS(_LIBCPP_PREFERRED_NAME(wstreambuf)) basic_streambuf; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FWD_STREAMBUF_H diff --git a/third_party/libcxx/__fwd/string.h b/third_party/libcxx/__fwd/string.h new file mode 100644 index 000000000..7ab5561b7 --- /dev/null +++ b/third_party/libcxx/__fwd/string.h @@ -0,0 +1,110 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___FWD_STRING_H +#define _LIBCPP___FWD_STRING_H + +#include <__config> +#include <__fwd/memory_resource.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +struct _LIBCPP_TEMPLATE_VIS char_traits; +template <> +struct char_traits; + +#ifndef _LIBCPP_HAS_NO_CHAR8_T +template <> +struct char_traits; +#endif + +template <> +struct char_traits; +template <> +struct char_traits; + +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +template <> +struct char_traits; +#endif + +template +class _LIBCPP_TEMPLATE_VIS allocator; + +template , class _Allocator = allocator<_CharT> > +class _LIBCPP_TEMPLATE_VIS basic_string; + +using string = basic_string; + +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +using wstring = basic_string; +#endif + +#ifndef _LIBCPP_HAS_NO_CHAR8_T +using u8string = basic_string; +#endif + +using u16string = basic_string; +using u32string = basic_string; + +#if _LIBCPP_STD_VER >= 17 + +namespace pmr { +template > +using basic_string = std::basic_string<_CharT, _Traits, polymorphic_allocator<_CharT>>; + +using string = basic_string; + +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +using wstring = basic_string; +# endif + +# ifndef _LIBCPP_HAS_NO_CHAR8_T +using u8string = basic_string; +# endif + +using u16string = basic_string; +using u32string = basic_string; + +} // namespace pmr + +#endif // _LIBCPP_STD_VER >= 17 + +// clang-format off +template +class _LIBCPP_PREFERRED_NAME(string) +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS + _LIBCPP_PREFERRED_NAME(wstring) +#endif +#ifndef _LIBCPP_HAS_NO_CHAR8_T + _LIBCPP_PREFERRED_NAME(u8string) +#endif + _LIBCPP_PREFERRED_NAME(u16string) + _LIBCPP_PREFERRED_NAME(u32string) +#if _LIBCPP_STD_VER >= 17 + _LIBCPP_PREFERRED_NAME(pmr::string) +# ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS + _LIBCPP_PREFERRED_NAME(pmr::wstring) +# endif +# ifndef _LIBCPP_HAS_NO_CHAR8_T + _LIBCPP_PREFERRED_NAME(pmr::u8string) +# endif + _LIBCPP_PREFERRED_NAME(pmr::u16string) + _LIBCPP_PREFERRED_NAME(pmr::u32string) +#endif + basic_string; +// clang-format on + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FWD_STRING_H diff --git a/third_party/libcxx/__fwd/string_view.h b/third_party/libcxx/__fwd/string_view.h new file mode 100644 index 000000000..481899024 --- /dev/null +++ b/third_party/libcxx/__fwd/string_view.h @@ -0,0 +1,50 @@ +// -*- C++ -*- +//===---------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===---------------------------------------------------------------------===// + +#ifndef _LIBCPP___FWD_STRING_VIEW_H +#define _LIBCPP___FWD_STRING_VIEW_H + +#include <__config> +#include // char_traits + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template > +class _LIBCPP_TEMPLATE_VIS basic_string_view; + +typedef basic_string_view string_view; +#ifndef _LIBCPP_HAS_NO_CHAR8_T +typedef basic_string_view u8string_view; +#endif +typedef basic_string_view u16string_view; +typedef basic_string_view u32string_view; +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS +typedef basic_string_view wstring_view; +#endif + +// clang-format off +template +class _LIBCPP_PREFERRED_NAME(string_view) +#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS + _LIBCPP_PREFERRED_NAME(wstring_view) +#endif +#ifndef _LIBCPP_HAS_NO_CHAR8_T + _LIBCPP_PREFERRED_NAME(u8string_view) +#endif + _LIBCPP_PREFERRED_NAME(u16string_view) + _LIBCPP_PREFERRED_NAME(u32string_view) + basic_string_view; +// clang-format on +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FWD_STRING_VIEW_H diff --git a/third_party/libcxx/__fwd/subrange.h b/third_party/libcxx/__fwd/subrange.h new file mode 100644 index 000000000..8f7239247 --- /dev/null +++ b/third_party/libcxx/__fwd/subrange.h @@ -0,0 +1,38 @@ +//===---------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===---------------------------------------------------------------------===// + +#ifndef _LIBCPP___FWD_SUBRANGE_H +#define _LIBCPP___FWD_SUBRANGE_H + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +#include <__iterator/concepts.h> + +_LIBCPP_BEGIN_NAMESPACE_STD + +namespace ranges { + +enum class _LIBCPP_ENUM_VIS subrange_kind : bool { unsized, sized }; + +template _Sent, subrange_kind _Kind> + requires(_Kind == subrange_kind::sized || !sized_sentinel_for<_Sent, _Iter>) +class _LIBCPP_TEMPLATE_VIS subrange; + +} // namespace ranges + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___FWD_SUBRANGE_H diff --git a/third_party/libcxx/__fwd/tuple.h b/third_party/libcxx/__fwd/tuple.h new file mode 100644 index 000000000..16b3fabbb --- /dev/null +++ b/third_party/libcxx/__fwd/tuple.h @@ -0,0 +1,29 @@ +//===---------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===---------------------------------------------------------------------===// + +#ifndef _LIBCPP___FWD_TUPLE_H +#define _LIBCPP___FWD_TUPLE_H + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#ifndef _LIBCPP_CXX03_LANG + +template +class _LIBCPP_TEMPLATE_VIS tuple; + +#endif // _LIBCPP_CXX03_LANG + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___FWD_TUPLE_H diff --git a/third_party/libcxx/__hash_table b/third_party/libcxx/__hash_table index ea4cdc037..570e8209c 100644 --- a/third_party/libcxx/__hash_table +++ b/third_party/libcxx/__hash_table @@ -7,26 +7,52 @@ // //===----------------------------------------------------------------------===// -#ifndef _LIBCPP__HASH_TABLE -#define _LIBCPP__HASH_TABLE +#ifndef _LIBCPP___HASH_TABLE +#define _LIBCPP___HASH_TABLE -#include "third_party/libcxx/__config" -#include "third_party/libcxx/initializer_list" -#include "third_party/libcxx/memory" -#include "third_party/libcxx/iterator" -#include "third_party/libcxx/algorithm" -#include "third_party/libcxx/cmath" -#include "third_party/libcxx/utility" -#include "third_party/libcxx/type_traits" - -#include "third_party/libcxx/__debug" +#include <__algorithm/max.h> +#include <__algorithm/min.h> +#include <__assert> +#include <__bit/countl.h> +#include <__config> +#include <__debug> +#include <__functional/hash.h> +#include <__functional/invoke.h> +#include <__iterator/iterator_traits.h> +#include <__memory/addressof.h> +#include <__memory/allocator_traits.h> +#include <__memory/compressed_pair.h> +#include <__memory/pointer_traits.h> +#include <__memory/swap_allocator.h> +#include <__memory/unique_ptr.h> +#include <__type_traits/can_extract_key.h> +#include <__type_traits/conditional.h> +#include <__type_traits/is_const.h> +#include <__type_traits/is_copy_constructible.h> +#include <__type_traits/is_nothrow_constructible.h> +#include <__type_traits/is_nothrow_copy_constructible.h> +#include <__type_traits/is_nothrow_default_constructible.h> +#include <__type_traits/is_nothrow_move_assignable.h> +#include <__type_traits/is_nothrow_move_constructible.h> +#include <__type_traits/is_pointer.h> +#include <__type_traits/is_reference.h> +#include <__type_traits/is_swappable.h> +#include <__type_traits/remove_const.h> +#include <__type_traits/remove_cvref.h> +#include <__utility/forward.h> +#include <__utility/move.h> +#include <__utility/pair.h> +#include <__utility/swap.h> +#include +#include +#include #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header +# pragma GCC system_header #endif _LIBCPP_PUSH_MACROS -#include "third_party/libcxx/__undef_macros" +#include <__undef_macros> _LIBCPP_BEGIN_NAMESPACE_STD @@ -34,19 +60,17 @@ _LIBCPP_BEGIN_NAMESPACE_STD template struct __hash_value_type; -#ifndef _LIBCPP_CXX03_LANG template struct __is_hash_value_type_imp : false_type {}; template -struct __is_hash_value_type_imp<__hash_value_type<_Key, _Value>> : true_type {}; +struct __is_hash_value_type_imp<__hash_value_type<_Key, _Value> > : true_type {}; template struct __is_hash_value_type : false_type {}; template -struct __is_hash_value_type<_One> : __is_hash_value_type_imp::type> {}; -#endif +struct __is_hash_value_type<_One> : __is_hash_value_type_imp<__remove_cvref_t<_One> > {}; _LIBCPP_FUNC_VIS size_t __next_prime(size_t __n); @@ -56,16 +80,13 @@ struct __hash_node_base { typedef typename pointer_traits<_NodePtr>::element_type __node_type; typedef __hash_node_base __first_node; - typedef typename __rebind_pointer<_NodePtr, __first_node>::type __node_base_pointer; + typedef __rebind_pointer_t<_NodePtr, __first_node> __node_base_pointer; typedef _NodePtr __node_pointer; #if defined(_LIBCPP_ABI_FIX_UNORDERED_NODE_POINTER_UB) typedef __node_base_pointer __next_pointer; #else - typedef typename conditional< - is_pointer<__node_pointer>::value, - __node_base_pointer, - __node_pointer>::type __next_pointer; + typedef __conditional_t::value, __node_base_pointer, __node_pointer> __next_pointer; #endif __next_pointer __next_; @@ -91,10 +112,10 @@ struct __hash_node_base }; template -struct __hash_node +struct _LIBCPP_STANDALONE_DEBUG __hash_node : public __hash_node_base < - typename __rebind_pointer<_VoidPtr, __hash_node<_Tp, _VoidPtr> >::type + __rebind_pointer_t<_VoidPtr, __hash_node<_Tp, _VoidPtr> > > { typedef _Tp __node_value_type; @@ -122,7 +143,7 @@ inline _LIBCPP_INLINE_VISIBILITY size_t __next_hash_pow2(size_t __n) { - return __n < 2 ? __n : (size_t(1) << (std::numeric_limits::digits - __libcpp_clz(__n-1))); + return __n < 2 ? __n : (size_t(1) << (numeric_limits::digits - __libcpp_clz(__n-1))); } @@ -155,12 +176,10 @@ struct __hash_key_value_types { static __container_value_type* __get_ptr(__node_value_type& __n) { return _VSTD::addressof(__n); } -#ifndef _LIBCPP_CXX03_LANG _LIBCPP_INLINE_VISIBILITY static __container_value_type&& __move(__node_value_type& __v) { return _VSTD::move(__v); } -#endif }; template @@ -179,16 +198,14 @@ struct __hash_key_value_types<__hash_value_type<_Key, _Tp> > { template _LIBCPP_INLINE_VISIBILITY - static typename enable_if<__is_same_uncvref<_Up, __node_value_type>::value, - __container_value_type const&>::type + static __enable_if_t<__is_same_uncvref<_Up, __node_value_type>::value, __container_value_type const&> __get_value(_Up& __t) { return __t.__get_value(); } template _LIBCPP_INLINE_VISIBILITY - static typename enable_if<__is_same_uncvref<_Up, __container_value_type>::value, - __container_value_type const&>::type + static __enable_if_t<__is_same_uncvref<_Up, __container_value_type>::value, __container_value_type const&> __get_value(_Up& __t) { return __t; } @@ -197,13 +214,10 @@ struct __hash_key_value_types<__hash_value_type<_Key, _Tp> > { static __container_value_type* __get_ptr(__node_value_type& __n) { return _VSTD::addressof(__n.__get_value()); } -#ifndef _LIBCPP_CXX03_LANG _LIBCPP_INLINE_VISIBILITY static pair __move(__node_value_type& __v) { return __v.__move(); } -#endif - }; template , @@ -213,9 +227,9 @@ struct __hash_map_pointer_types {}; template struct __hash_map_pointer_types<_Tp, _AllocPtr, _KVTypes, true> { typedef typename _KVTypes::__map_value_type _Mv; - typedef typename __rebind_pointer<_AllocPtr, _Mv>::type + typedef __rebind_pointer_t<_AllocPtr, _Mv> __map_value_type_pointer; - typedef typename __rebind_pointer<_AllocPtr, const _Mv>::type + typedef __rebind_pointer_t<_AllocPtr, const _Mv> __const_map_value_type_pointer; }; @@ -233,21 +247,21 @@ public: typedef ptrdiff_t difference_type; typedef size_t size_type; - typedef typename __rebind_pointer<_NodePtr, void>::type __void_pointer; + typedef __rebind_pointer_t<_NodePtr, void> __void_pointer; typedef typename pointer_traits<_NodePtr>::element_type __node_type; typedef _NodePtr __node_pointer; typedef __hash_node_base<__node_pointer> __node_base_type; - typedef typename __rebind_pointer<_NodePtr, __node_base_type>::type + typedef __rebind_pointer_t<_NodePtr, __node_base_type> __node_base_pointer; typedef typename __node_base_type::__next_pointer __next_pointer; typedef _Tp __node_value_type; - typedef typename __rebind_pointer<_VoidPtr, __node_value_type>::type + typedef __rebind_pointer_t<_VoidPtr, __node_value_type> __node_value_type_pointer; - typedef typename __rebind_pointer<_VoidPtr, const __node_value_type>::type + typedef __rebind_pointer_t<_VoidPtr, const __node_value_type> __const_node_value_type_pointer; private: @@ -255,7 +269,7 @@ private: "_NodePtr should never be a pointer to const"); static_assert((is_same::element_type, void>::value), "_VoidPtr does not point to unqualified void type"); - static_assert((is_same::type, + static_assert((is_same<__rebind_pointer_t<_VoidPtr, __node_type>, _NodePtr>::value), "_VoidPtr does not rebind to _NodePtr."); }; @@ -274,7 +288,7 @@ struct __hash_node_types_from_iterator<__hash_const_local_iterator<_NodePtr> > : template struct __make_hash_node_types { typedef __hash_node<_NodeValueTp, _VoidPtr> _NodeTp; - typedef typename __rebind_pointer<_VoidPtr, _NodeTp>::type _NodePtr; + typedef __rebind_pointer_t<_VoidPtr, _NodeTp> _NodePtr; typedef __hash_node_types<_NodePtr> type; }; @@ -295,15 +309,15 @@ public: typedef typename _NodeTypes::__node_value_type_pointer pointer; _LIBCPP_INLINE_VISIBILITY __hash_iterator() _NOEXCEPT : __node_(nullptr) { - _LIBCPP_DEBUG_MODE(__get_db()->__insert_i(this)); + _VSTD::__debug_db_insert_i(this); } -#if _LIBCPP_DEBUG_LEVEL >= 2 +#ifdef _LIBCPP_ENABLE_DEBUG_MODE _LIBCPP_INLINE_VISIBILITY __hash_iterator(const __hash_iterator& __i) : __node_(__i.__node_) { - __get_db()->__iterator_copy(this, &__i); + __get_db()->__iterator_copy(this, _VSTD::addressof(__i)); } _LIBCPP_INLINE_VISIBILITY @@ -315,14 +329,14 @@ public: _LIBCPP_INLINE_VISIBILITY __hash_iterator& operator=(const __hash_iterator& __i) { - if (this != &__i) + if (this != _VSTD::addressof(__i)) { - __get_db()->__iterator_copy(this, &__i); + __get_db()->__iterator_copy(this, _VSTD::addressof(__i)); __node_ = __i.__node_; } return *this; } -#endif // _LIBCPP_DEBUG_LEVEL >= 2 +#endif // _LIBCPP_ENABLE_DEBUG_MODE _LIBCPP_INLINE_VISIBILITY reference operator*() const { @@ -341,7 +355,7 @@ public: _LIBCPP_INLINE_VISIBILITY __hash_iterator& operator++() { _LIBCPP_DEBUG_ASSERT(__get_const_db()->__dereferenceable(this), - "Attempted to increment non-incrementable unordered container iterator"); + "Attempted to increment a non-incrementable unordered container iterator"); __node_ = __node_->__next_; return *this; } @@ -364,19 +378,15 @@ public: {return !(__x == __y);} private: -#if _LIBCPP_DEBUG_LEVEL >= 2 _LIBCPP_INLINE_VISIBILITY - __hash_iterator(__next_pointer __node, const void* __c) _NOEXCEPT + explicit __hash_iterator(__next_pointer __node, const void* __c) _NOEXCEPT : __node_(__node) { + (void)__c; +#ifdef _LIBCPP_ENABLE_DEBUG_MODE __get_db()->__insert_ic(this, __c); - } -#else - _LIBCPP_INLINE_VISIBILITY - __hash_iterator(__next_pointer __node) _NOEXCEPT - : __node_(__node) - {} #endif + } template friend class __hash_table; template friend class _LIBCPP_TEMPLATE_VIS __hash_const_iterator; template friend class _LIBCPP_TEMPLATE_VIS __hash_map_iterator; @@ -405,22 +415,24 @@ public: _LIBCPP_INLINE_VISIBILITY __hash_const_iterator() _NOEXCEPT : __node_(nullptr) { - _LIBCPP_DEBUG_MODE(__get_db()->__insert_i(this)); + _VSTD::__debug_db_insert_i(this); } _LIBCPP_INLINE_VISIBILITY __hash_const_iterator(const __non_const_iterator& __x) _NOEXCEPT : __node_(__x.__node_) { - _LIBCPP_DEBUG_MODE(__get_db()->__iterator_copy(this, &__x)); +#ifdef _LIBCPP_ENABLE_DEBUG_MODE + __get_db()->__iterator_copy(this, _VSTD::addressof(__x)); +#endif } -#if _LIBCPP_DEBUG_LEVEL >= 2 +#ifdef _LIBCPP_ENABLE_DEBUG_MODE _LIBCPP_INLINE_VISIBILITY __hash_const_iterator(const __hash_const_iterator& __i) : __node_(__i.__node_) { - __get_db()->__iterator_copy(this, &__i); + __get_db()->__iterator_copy(this, _VSTD::addressof(__i)); } _LIBCPP_INLINE_VISIBILITY @@ -432,14 +444,14 @@ public: _LIBCPP_INLINE_VISIBILITY __hash_const_iterator& operator=(const __hash_const_iterator& __i) { - if (this != &__i) + if (this != _VSTD::addressof(__i)) { - __get_db()->__iterator_copy(this, &__i); + __get_db()->__iterator_copy(this, _VSTD::addressof(__i)); __node_ = __i.__node_; } return *this; } -#endif // _LIBCPP_DEBUG_LEVEL >= 2 +#endif // _LIBCPP_ENABLE_DEBUG_MODE _LIBCPP_INLINE_VISIBILITY reference operator*() const { @@ -457,7 +469,7 @@ public: _LIBCPP_INLINE_VISIBILITY __hash_const_iterator& operator++() { _LIBCPP_DEBUG_ASSERT(__get_const_db()->__dereferenceable(this), - "Attempted to increment non-incrementable unordered container const_iterator"); + "Attempted to increment a non-incrementable unordered container const_iterator"); __node_ = __node_->__next_; return *this; } @@ -480,19 +492,15 @@ public: {return !(__x == __y);} private: -#if _LIBCPP_DEBUG_LEVEL >= 2 _LIBCPP_INLINE_VISIBILITY - __hash_const_iterator(__next_pointer __node, const void* __c) _NOEXCEPT + explicit __hash_const_iterator(__next_pointer __node, const void* __c) _NOEXCEPT : __node_(__node) { + (void)__c; +#ifdef _LIBCPP_ENABLE_DEBUG_MODE __get_db()->__insert_ic(this, __c); - } -#else - _LIBCPP_INLINE_VISIBILITY - __hash_const_iterator(__next_pointer __node) _NOEXCEPT - : __node_(__node) - {} #endif + } template friend class __hash_table; template friend class _LIBCPP_TEMPLATE_VIS __hash_map_const_iterator; template friend class _LIBCPP_TEMPLATE_VIS unordered_map; @@ -518,17 +526,17 @@ public: typedef typename _NodeTypes::__node_value_type_pointer pointer; _LIBCPP_INLINE_VISIBILITY __hash_local_iterator() _NOEXCEPT : __node_(nullptr) { - _LIBCPP_DEBUG_MODE(__get_db()->__insert_i(this)); + _VSTD::__debug_db_insert_i(this); } -#if _LIBCPP_DEBUG_LEVEL >= 2 +#ifdef _LIBCPP_ENABLE_DEBUG_MODE _LIBCPP_INLINE_VISIBILITY __hash_local_iterator(const __hash_local_iterator& __i) : __node_(__i.__node_), __bucket_(__i.__bucket_), __bucket_count_(__i.__bucket_count_) { - __get_db()->__iterator_copy(this, &__i); + __get_db()->__iterator_copy(this, _VSTD::addressof(__i)); } _LIBCPP_INLINE_VISIBILITY @@ -540,16 +548,16 @@ public: _LIBCPP_INLINE_VISIBILITY __hash_local_iterator& operator=(const __hash_local_iterator& __i) { - if (this != &__i) + if (this != _VSTD::addressof(__i)) { - __get_db()->__iterator_copy(this, &__i); + __get_db()->__iterator_copy(this, _VSTD::addressof(__i)); __node_ = __i.__node_; __bucket_ = __i.__bucket_; __bucket_count_ = __i.__bucket_count_; } return *this; } -#endif // _LIBCPP_DEBUG_LEVEL >= 2 +#endif // _LIBCPP_ENABLE_DEBUG_MODE _LIBCPP_INLINE_VISIBILITY reference operator*() const { @@ -568,9 +576,9 @@ public: _LIBCPP_INLINE_VISIBILITY __hash_local_iterator& operator++() { _LIBCPP_DEBUG_ASSERT(__get_const_db()->__dereferenceable(this), - "Attempted to increment non-incrementable unordered container local_iterator"); + "Attempted to increment a non-incrementable unordered container local_iterator"); __node_ = __node_->__next_; - if (__node_ != nullptr && __constrain_hash(__node_->__hash(), __bucket_count_) != __bucket_) + if (__node_ != nullptr && std::__constrain_hash(__node_->__hash(), __bucket_count_) != __bucket_) __node_ = nullptr; return *this; } @@ -593,30 +601,20 @@ public: {return !(__x == __y);} private: -#if _LIBCPP_DEBUG_LEVEL >= 2 _LIBCPP_INLINE_VISIBILITY - __hash_local_iterator(__next_pointer __node, size_t __bucket, - size_t __bucket_count, const void* __c) _NOEXCEPT + explicit __hash_local_iterator(__next_pointer __node, size_t __bucket, + size_t __bucket_count, const void* __c) _NOEXCEPT : __node_(__node), __bucket_(__bucket), __bucket_count_(__bucket_count) { + (void)__c; +#ifdef _LIBCPP_ENABLE_DEBUG_MODE __get_db()->__insert_ic(this, __c); - if (__node_ != nullptr) - __node_ = __node_->__next_; - } -#else - _LIBCPP_INLINE_VISIBILITY - __hash_local_iterator(__next_pointer __node, size_t __bucket, - size_t __bucket_count) _NOEXCEPT - : __node_(__node), - __bucket_(__bucket), - __bucket_count_(__bucket_count) - { - if (__node_ != nullptr) - __node_ = __node_->__next_; - } #endif + if (__node_ != nullptr) + __node_ = __node_->__next_; + } template friend class __hash_table; template friend class _LIBCPP_TEMPLATE_VIS __hash_const_local_iterator; template friend class _LIBCPP_TEMPLATE_VIS __hash_map_iterator; @@ -635,8 +633,8 @@ class _LIBCPP_TEMPLATE_VIS __hash_const_local_iterator typedef pointer_traits<__node_pointer> __pointer_traits; typedef typename __pointer_traits::element_type __node; - typedef typename remove_const<__node>::type __non_const_node; - typedef typename __rebind_pointer<__node_pointer, __non_const_node>::type + typedef __remove_const_t<__node> __non_const_node; + typedef __rebind_pointer_t<__node_pointer, __non_const_node> __non_const_node_pointer; public: typedef __hash_local_iterator<__non_const_node_pointer> @@ -650,7 +648,7 @@ public: _LIBCPP_INLINE_VISIBILITY __hash_const_local_iterator() _NOEXCEPT : __node_(nullptr) { - _LIBCPP_DEBUG_MODE(__get_db()->__insert_i(this)); + _VSTD::__debug_db_insert_i(this); } _LIBCPP_INLINE_VISIBILITY @@ -659,17 +657,19 @@ public: __bucket_(__x.__bucket_), __bucket_count_(__x.__bucket_count_) { - _LIBCPP_DEBUG_MODE(__get_db()->__iterator_copy(this, &__x)); +#ifdef _LIBCPP_ENABLE_DEBUG_MODE + __get_db()->__iterator_copy(this, _VSTD::addressof(__x)); +#endif } -#if _LIBCPP_DEBUG_LEVEL >= 2 +#ifdef _LIBCPP_ENABLE_DEBUG_MODE _LIBCPP_INLINE_VISIBILITY __hash_const_local_iterator(const __hash_const_local_iterator& __i) : __node_(__i.__node_), __bucket_(__i.__bucket_), __bucket_count_(__i.__bucket_count_) { - __get_db()->__iterator_copy(this, &__i); + __get_db()->__iterator_copy(this, _VSTD::addressof(__i)); } _LIBCPP_INLINE_VISIBILITY @@ -681,16 +681,16 @@ public: _LIBCPP_INLINE_VISIBILITY __hash_const_local_iterator& operator=(const __hash_const_local_iterator& __i) { - if (this != &__i) + if (this != _VSTD::addressof(__i)) { - __get_db()->__iterator_copy(this, &__i); + __get_db()->__iterator_copy(this, _VSTD::addressof(__i)); __node_ = __i.__node_; __bucket_ = __i.__bucket_; __bucket_count_ = __i.__bucket_count_; } return *this; } -#endif // _LIBCPP_DEBUG_LEVEL >= 2 +#endif // _LIBCPP_ENABLE_DEBUG_MODE _LIBCPP_INLINE_VISIBILITY reference operator*() const { @@ -709,9 +709,9 @@ public: _LIBCPP_INLINE_VISIBILITY __hash_const_local_iterator& operator++() { _LIBCPP_DEBUG_ASSERT(__get_const_db()->__dereferenceable(this), - "Attempted to increment non-incrementable unordered container const_local_iterator"); + "Attempted to increment a non-incrementable unordered container const_local_iterator"); __node_ = __node_->__next_; - if (__node_ != nullptr && __constrain_hash(__node_->__hash(), __bucket_count_) != __bucket_) + if (__node_ != nullptr && std::__constrain_hash(__node_->__hash(), __bucket_count_) != __bucket_) __node_ = nullptr; return *this; } @@ -734,30 +734,20 @@ public: {return !(__x == __y);} private: -#if _LIBCPP_DEBUG_LEVEL >= 2 _LIBCPP_INLINE_VISIBILITY - __hash_const_local_iterator(__next_pointer __node, size_t __bucket, - size_t __bucket_count, const void* __c) _NOEXCEPT - : __node_(__node), + explicit __hash_const_local_iterator(__next_pointer __node_ptr, size_t __bucket, + size_t __bucket_count, const void* __c) _NOEXCEPT + : __node_(__node_ptr), __bucket_(__bucket), __bucket_count_(__bucket_count) { + (void)__c; +#ifdef _LIBCPP_ENABLE_DEBUG_MODE __get_db()->__insert_ic(this, __c); - if (__node_ != nullptr) - __node_ = __node_->__next_; - } -#else - _LIBCPP_INLINE_VISIBILITY - __hash_const_local_iterator(__next_pointer __node, size_t __bucket, - size_t __bucket_count) _NOEXCEPT - : __node_(__node), - __bucket_(__bucket), - __bucket_count_(__bucket_count) - { - if (__node_ != nullptr) - __node_ = __node_->__next_; - } #endif + if (__node_ != nullptr) + __node_ = __node_->__next_; + } template friend class __hash_table; template friend class _LIBCPP_TEMPLATE_VIS __hash_map_const_iterator; }; @@ -776,14 +766,13 @@ public: _LIBCPP_INLINE_VISIBILITY __bucket_list_deallocator() _NOEXCEPT_(is_nothrow_default_constructible::value) - : __data_(0) {} + : __data_(0, __default_init_tag()) {} _LIBCPP_INLINE_VISIBILITY __bucket_list_deallocator(const allocator_type& __a, size_type __size) _NOEXCEPT_(is_nothrow_copy_constructible::value) : __data_(__size, __a) {} -#ifndef _LIBCPP_CXX03_LANG _LIBCPP_INLINE_VISIBILITY __bucket_list_deallocator(__bucket_list_deallocator&& __x) _NOEXCEPT_(is_nothrow_move_constructible::value) @@ -791,7 +780,6 @@ public: { __x.size() = 0; } -#endif _LIBCPP_INLINE_VISIBILITY size_type& size() _NOEXCEPT {return __data_.first();} @@ -825,11 +813,13 @@ private: allocator_type& __na_; - __hash_node_destructor& operator=(const __hash_node_destructor&); - public: bool __value_constructed; + _LIBCPP_HIDE_FROM_ABI __hash_node_destructor(__hash_node_destructor const&) = default; + _LIBCPP_HIDE_FROM_ABI __hash_node_destructor& operator=(const __hash_node_destructor&) = delete; + + _LIBCPP_INLINE_VISIBILITY explicit __hash_node_destructor(allocator_type& __na, bool __constructed = false) _NOEXCEPT @@ -849,7 +839,7 @@ public: template friend class __hash_map_node_destructor; }; -#if _LIBCPP_STD_VER > 14 +#if _LIBCPP_STD_VER >= 17 template struct __generic_container_node_destructor; @@ -921,7 +911,7 @@ public: // Create __node typedef typename _NodeTypes::__node_type __node; - typedef typename __rebind_alloc_helper<__alloc_traits, __node>::type __node_allocator; + typedef __rebind_alloc<__alloc_traits, __node> __node_allocator; typedef allocator_traits<__node_allocator> __node_traits; typedef typename _NodeTypes::__void_pointer __void_pointer; typedef typename _NodeTypes::__node_pointer __node_pointer; @@ -936,15 +926,14 @@ private: // the pointer using 'pointer_traits'. static_assert((is_same<__node_pointer, typename __node_traits::pointer>::value), "Allocator does not rebind pointers in a sane manner."); - typedef typename __rebind_alloc_helper<__node_traits, __first_node>::type - __node_base_allocator; + typedef __rebind_alloc<__node_traits, __first_node> __node_base_allocator; typedef allocator_traits<__node_base_allocator> __node_base_traits; static_assert((is_same<__node_base_pointer, typename __node_base_traits::pointer>::value), "Allocator does not rebind pointers in a sane manner."); private: - typedef typename __rebind_alloc_helper<__node_traits, __next_pointer>::type __pointer_allocator; + typedef __rebind_alloc<__node_traits, __next_pointer> __pointer_allocator; typedef __bucket_list_deallocator<__pointer_allocator> __bucket_list_deleter; typedef unique_ptr<__next_pointer[], __bucket_list_deleter> __bucket_list; typedef allocator_traits<__pointer_allocator> __pointer_alloc_traits; @@ -1000,25 +989,22 @@ public: is_nothrow_default_constructible::value); _LIBCPP_INLINE_VISIBILITY __hash_table(const hasher& __hf, const key_equal& __eql); - __hash_table(const hasher& __hf, const key_equal& __eql, + _LIBCPP_HIDE_FROM_ABI __hash_table(const hasher& __hf, const key_equal& __eql, const allocator_type& __a); - explicit __hash_table(const allocator_type& __a); - __hash_table(const __hash_table& __u); - __hash_table(const __hash_table& __u, const allocator_type& __a); -#ifndef _LIBCPP_CXX03_LANG - __hash_table(__hash_table&& __u) + _LIBCPP_HIDE_FROM_ABI explicit __hash_table(const allocator_type& __a); + _LIBCPP_HIDE_FROM_ABI __hash_table(const __hash_table& __u); + _LIBCPP_HIDE_FROM_ABI __hash_table(const __hash_table& __u, const allocator_type& __a); + _LIBCPP_HIDE_FROM_ABI __hash_table(__hash_table&& __u) _NOEXCEPT_( is_nothrow_move_constructible<__bucket_list>::value && is_nothrow_move_constructible<__first_node>::value && is_nothrow_move_constructible<__node_allocator>::value && is_nothrow_move_constructible::value && is_nothrow_move_constructible::value); - __hash_table(__hash_table&& __u, const allocator_type& __a); -#endif // _LIBCPP_CXX03_LANG - ~__hash_table(); + _LIBCPP_HIDE_FROM_ABI __hash_table(__hash_table&& __u, const allocator_type& __a); + _LIBCPP_HIDE_FROM_ABI ~__hash_table(); - __hash_table& operator=(const __hash_table& __u); -#ifndef _LIBCPP_CXX03_LANG + _LIBCPP_HIDE_FROM_ABI __hash_table& operator=(const __hash_table& __u); _LIBCPP_INLINE_VISIBILITY __hash_table& operator=(__hash_table&& __u) _NOEXCEPT_( @@ -1026,16 +1012,15 @@ public: is_nothrow_move_assignable<__node_allocator>::value && is_nothrow_move_assignable::value && is_nothrow_move_assignable::value); -#endif template - void __assign_unique(_InputIterator __first, _InputIterator __last); + _LIBCPP_HIDE_FROM_ABI void __assign_unique(_InputIterator __first, _InputIterator __last); template - void __assign_multi(_InputIterator __first, _InputIterator __last); + _LIBCPP_HIDE_FROM_ABI void __assign_multi(_InputIterator __first, _InputIterator __last); _LIBCPP_INLINE_VISIBILITY size_type max_size() const _NOEXCEPT { - return std::min( + return _VSTD::min( __node_traits::max_size(__node_alloc()), numeric_limits::max() ); @@ -1064,9 +1049,8 @@ public: iterator __node_insert_multi(const_iterator __p, __node_pointer __nd); -#ifndef _LIBCPP_CXX03_LANG template - inline _LIBCPP_INLINE_VISIBILITY + _LIBCPP_INLINE_VISIBILITY pair __emplace_unique_key_args(_Key const& __k, _Args&&... __args); template @@ -1082,10 +1066,8 @@ public: template _LIBCPP_INLINE_VISIBILITY - typename enable_if< - __can_extract_map_key<_First, key_type, __container_value_type>::value, - pair - >::type __emplace_unique(_First&& __f, _Second&& __s) { + __enable_if_t<__can_extract_map_key<_First, key_type, __container_value_type>::value, pair > + __emplace_unique(_First&& __f, _Second&& __s) { return __emplace_unique_key_args(__f, _VSTD::forward<_First>(__f), _VSTD::forward<_Second>(__s)); } @@ -1129,9 +1111,7 @@ public: return __emplace_unique_key_args(_NodeTypes::__get_key(__x), _VSTD::move(__x)); } - template ::value - >::type> + template ::value> > _LIBCPP_INLINE_VISIBILITY pair __insert_unique(_Pp&& __x) { return __emplace_unique(_VSTD::forward<_Pp>(__x)); @@ -1149,21 +1129,12 @@ public: return __emplace_hint_multi(__p, _VSTD::forward<_Pp>(__x)); } -#else // !defined(_LIBCPP_CXX03_LANG) - template - _LIBCPP_INLINE_VISIBILITY - pair __emplace_unique_key_args(_Key const&, _Args& __args); - - iterator __insert_multi(const __container_value_type& __x); - iterator __insert_multi(const_iterator __p, const __container_value_type& __x); -#endif - _LIBCPP_INLINE_VISIBILITY pair __insert_unique(const __container_value_type& __x) { return __emplace_unique_key_args(_NodeTypes::__get_key(__x), __x); } -#if _LIBCPP_STD_VER > 14 +#if _LIBCPP_STD_VER >= 17 template _LIBCPP_INLINE_VISIBILITY _InsertReturnType __node_handle_insert_unique(_NodeHandle&& __nh); @@ -1193,10 +1164,17 @@ public: _NodeHandle __node_handle_extract(const_iterator __it); #endif - void clear() _NOEXCEPT; - void rehash(size_type __n); - _LIBCPP_INLINE_VISIBILITY void reserve(size_type __n) - {rehash(static_cast(ceil(__n / max_load_factor())));} + _LIBCPP_HIDE_FROM_ABI void clear() _NOEXCEPT; + _LIBCPP_INLINE_VISIBILITY void __rehash_unique(size_type __n) { __rehash(__n); } + _LIBCPP_INLINE_VISIBILITY void __rehash_multi(size_type __n) { __rehash(__n); } + _LIBCPP_INLINE_VISIBILITY void __reserve_unique(size_type __n) + { + __rehash_unique(static_cast(std::ceil(__n / max_load_factor()))); + } + _LIBCPP_INLINE_VISIBILITY void __reserve_multi(size_type __n) + { + __rehash_multi(static_cast(std::ceil(__n / max_load_factor()))); + } _LIBCPP_INLINE_VISIBILITY size_type bucket_count() const _NOEXCEPT @@ -1219,46 +1197,46 @@ public: { _LIBCPP_ASSERT(bucket_count() > 0, "unordered container::bucket(key) called when bucket_count() == 0"); - return __constrain_hash(hash_function()(__k), bucket_count()); + return std::__constrain_hash(hash_function()(__k), bucket_count()); } template - iterator find(const _Key& __x); + _LIBCPP_HIDE_FROM_ABI iterator find(const _Key& __x); template - const_iterator find(const _Key& __x) const; + _LIBCPP_HIDE_FROM_ABI const_iterator find(const _Key& __x) const; typedef __hash_node_destructor<__node_allocator> _Dp; typedef unique_ptr<__node, _Dp> __node_holder; - iterator erase(const_iterator __p); - iterator erase(const_iterator __first, const_iterator __last); + _LIBCPP_HIDE_FROM_ABI iterator erase(const_iterator __p); + _LIBCPP_HIDE_FROM_ABI iterator erase(const_iterator __first, const_iterator __last); template - size_type __erase_unique(const _Key& __k); + _LIBCPP_HIDE_FROM_ABI size_type __erase_unique(const _Key& __k); template - size_type __erase_multi(const _Key& __k); - __node_holder remove(const_iterator __p) _NOEXCEPT; + _LIBCPP_HIDE_FROM_ABI size_type __erase_multi(const _Key& __k); + _LIBCPP_HIDE_FROM_ABI __node_holder remove(const_iterator __p) _NOEXCEPT; template _LIBCPP_INLINE_VISIBILITY size_type __count_unique(const _Key& __k) const; template - size_type __count_multi(const _Key& __k) const; + _LIBCPP_HIDE_FROM_ABI size_type __count_multi(const _Key& __k) const; template - pair + _LIBCPP_HIDE_FROM_ABI pair __equal_range_unique(const _Key& __k); template - pair + _LIBCPP_HIDE_FROM_ABI pair __equal_range_unique(const _Key& __k) const; template - pair + _LIBCPP_HIDE_FROM_ABI pair __equal_range_multi(const _Key& __k); template - pair + _LIBCPP_HIDE_FROM_ABI pair __equal_range_multi(const _Key& __k) const; - void swap(__hash_table& __u) + _LIBCPP_HIDE_FROM_ABI void swap(__hash_table& __u) #if _LIBCPP_STD_VER <= 11 _NOEXCEPT_( __is_nothrow_swappable::value && __is_nothrow_swappable::value @@ -1274,7 +1252,7 @@ public: _LIBCPP_INLINE_VISIBILITY size_type max_bucket_count() const _NOEXCEPT {return max_size(); } - size_type bucket_size(size_type __n) const; + _LIBCPP_HIDE_FROM_ABI size_type bucket_size(size_type __n) const; _LIBCPP_INLINE_VISIBILITY float load_factor() const _NOEXCEPT { size_type __bc = bucket_count(); @@ -1293,11 +1271,7 @@ public: { _LIBCPP_ASSERT(__n < bucket_count(), "unordered container::begin(n) called with n >= bucket_count()"); -#if _LIBCPP_DEBUG_LEVEL >= 2 return local_iterator(__bucket_list_[__n], __n, bucket_count(), this); -#else - return local_iterator(__bucket_list_[__n], __n, bucket_count()); -#endif } _LIBCPP_INLINE_VISIBILITY @@ -1306,11 +1280,7 @@ public: { _LIBCPP_ASSERT(__n < bucket_count(), "unordered container::end(n) called with n >= bucket_count()"); -#if _LIBCPP_DEBUG_LEVEL >= 2 return local_iterator(nullptr, __n, bucket_count(), this); -#else - return local_iterator(nullptr, __n, bucket_count()); -#endif } _LIBCPP_INLINE_VISIBILITY @@ -1319,11 +1289,7 @@ public: { _LIBCPP_ASSERT(__n < bucket_count(), "unordered container::cbegin(n) called with n >= bucket_count()"); -#if _LIBCPP_DEBUG_LEVEL >= 2 return const_local_iterator(__bucket_list_[__n], __n, bucket_count(), this); -#else - return const_local_iterator(__bucket_list_[__n], __n, bucket_count()); -#endif } _LIBCPP_INLINE_VISIBILITY @@ -1332,48 +1298,41 @@ public: { _LIBCPP_ASSERT(__n < bucket_count(), "unordered container::cend(n) called with n >= bucket_count()"); -#if _LIBCPP_DEBUG_LEVEL >= 2 return const_local_iterator(nullptr, __n, bucket_count(), this); -#else - return const_local_iterator(nullptr, __n, bucket_count()); -#endif } -#if _LIBCPP_DEBUG_LEVEL >= 2 +#ifdef _LIBCPP_ENABLE_DEBUG_MODE - bool __dereferenceable(const const_iterator* __i) const; - bool __decrementable(const const_iterator* __i) const; - bool __addable(const const_iterator* __i, ptrdiff_t __n) const; - bool __subscriptable(const const_iterator* __i, ptrdiff_t __n) const; + _LIBCPP_HIDE_FROM_ABI bool __dereferenceable(const const_iterator* __i) const; + _LIBCPP_HIDE_FROM_ABI bool __decrementable(const const_iterator* __i) const; + _LIBCPP_HIDE_FROM_ABI bool __addable(const const_iterator* __i, ptrdiff_t __n) const; + _LIBCPP_HIDE_FROM_ABI bool __subscriptable(const const_iterator* __i, ptrdiff_t __n) const; -#endif // _LIBCPP_DEBUG_LEVEL >= 2 +#endif // _LIBCPP_ENABLE_DEBUG_MODE private: - void __rehash(size_type __n); + template + _LIBCPP_HIDE_FROM_ABI void __rehash(size_type __n); + template + _LIBCPP_HIDE_FROM_ABI void __do_rehash(size_type __n); -#ifndef _LIBCPP_CXX03_LANG template - __node_holder __construct_node(_Args&& ...__args); + _LIBCPP_HIDE_FROM_ABI __node_holder __construct_node(_Args&& ...__args); template - __node_holder __construct_node_hash(size_t __hash, _First&& __f, _Rest&&... __rest); -#else // _LIBCPP_CXX03_LANG - __node_holder __construct_node(const __container_value_type& __v); - __node_holder __construct_node_hash(size_t __hash, const __container_value_type& __v); -#endif + _LIBCPP_HIDE_FROM_ABI __node_holder __construct_node_hash(size_t __hash, _First&& __f, _Rest&&... __rest); _LIBCPP_INLINE_VISIBILITY void __copy_assign_alloc(const __hash_table& __u) {__copy_assign_alloc(__u, integral_constant());} - void __copy_assign_alloc(const __hash_table& __u, true_type); + _LIBCPP_HIDE_FROM_ABI void __copy_assign_alloc(const __hash_table& __u, true_type); _LIBCPP_INLINE_VISIBILITY void __copy_assign_alloc(const __hash_table&, false_type) {} -#ifndef _LIBCPP_CXX03_LANG - void __move_assign(__hash_table& __u, false_type); - void __move_assign(__hash_table& __u, true_type) + _LIBCPP_HIDE_FROM_ABI void __move_assign(__hash_table& __u, false_type); + _LIBCPP_HIDE_FROM_ABI void __move_assign(__hash_table& __u, true_type) _NOEXCEPT_( is_nothrow_move_assignable<__node_allocator>::value && is_nothrow_move_assignable::value && @@ -1398,10 +1357,9 @@ private: } _LIBCPP_INLINE_VISIBILITY void __move_assign_alloc(__hash_table&, false_type) _NOEXCEPT {} -#endif // _LIBCPP_CXX03_LANG - void __deallocate_node(__next_pointer __np) _NOEXCEPT; - __next_pointer __detach() _NOEXCEPT; + _LIBCPP_HIDE_FROM_ABI void __deallocate_node(__next_pointer __np) _NOEXCEPT; + _LIBCPP_HIDE_FROM_ABI __next_pointer __detach() _NOEXCEPT; template friend class _LIBCPP_TEMPLATE_VIS unordered_map; template friend class _LIBCPP_TEMPLATE_VIS unordered_multimap; @@ -1416,8 +1374,8 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table() is_nothrow_default_constructible<__node_allocator>::value && is_nothrow_default_constructible::value && is_nothrow_default_constructible::value) - : __p2_(0), - __p3_(1.0f) + : __p2_(0, __default_init_tag()), + __p3_(1.0f, __default_init_tag()) { } @@ -1437,7 +1395,7 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(const hasher& __hf, const key_equal& __eql, const allocator_type& __a) : __bucket_list_(nullptr, __bucket_list_deleter(__pointer_allocator(__a), 0)), - __p1_(__second_tag(), __node_allocator(__a)), + __p1_(__default_init_tag(), __node_allocator(__a)), __p2_(0, __hf), __p3_(1.0f, __eql) { @@ -1446,9 +1404,9 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(const hasher& __hf, template __hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(const allocator_type& __a) : __bucket_list_(nullptr, __bucket_list_deleter(__pointer_allocator(__a), 0)), - __p1_(__second_tag(), __node_allocator(__a)), - __p2_(0), - __p3_(1.0f) + __p1_(__default_init_tag(), __node_allocator(__a)), + __p2_(0, __default_init_tag()), + __p3_(1.0f, __default_init_tag()) { } @@ -1458,7 +1416,7 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(const __hash_table& __u) __bucket_list_deleter(allocator_traits<__pointer_allocator>:: select_on_container_copy_construction( __u.__bucket_list_.get_deleter().__alloc()), 0)), - __p1_(__second_tag(), allocator_traits<__node_allocator>:: + __p1_(__default_init_tag(), allocator_traits<__node_allocator>:: select_on_container_copy_construction(__u.__node_alloc())), __p2_(0, __u.hash_function()), __p3_(__u.__p3_) @@ -1469,14 +1427,12 @@ template __hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(const __hash_table& __u, const allocator_type& __a) : __bucket_list_(nullptr, __bucket_list_deleter(__pointer_allocator(__a), 0)), - __p1_(__second_tag(), __node_allocator(__a)), + __p1_(__default_init_tag(), __node_allocator(__a)), __p2_(0, __u.hash_function()), __p3_(__u.__p3_) { } -#ifndef _LIBCPP_CXX03_LANG - template __hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(__hash_table&& __u) _NOEXCEPT_( @@ -1492,7 +1448,7 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(__hash_table&& __u) { if (size() > 0) { - __bucket_list_[__constrain_hash(__p1_.first().__next_->__hash(), bucket_count())] = + __bucket_list_[std::__constrain_hash(__p1_.first().__next_->__hash(), bucket_count())] = __p1_.first().__ptr(); __u.__p1_.first().__next_ = nullptr; __u.size() = 0; @@ -1503,7 +1459,7 @@ template __hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(__hash_table&& __u, const allocator_type& __a) : __bucket_list_(nullptr, __bucket_list_deleter(__pointer_allocator(__a), 0)), - __p1_(__second_tag(), __node_allocator(__a)), + __p1_(__default_init_tag(), __node_allocator(__a)), __p2_(0, _VSTD::move(__u.hash_function())), __p3_(_VSTD::move(__u.__p3_)) { @@ -1516,7 +1472,7 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(__hash_table&& __u, { __p1_.first().__next_ = __u.__p1_.first().__next_; __u.__p1_.first().__next_ = nullptr; - __bucket_list_[__constrain_hash(__p1_.first().__next_->__hash(), bucket_count())] = + __bucket_list_[std::__constrain_hash(__p1_.first().__next_->__hash(), bucket_count())] = __p1_.first().__ptr(); size() = __u.size(); __u.size() = 0; @@ -1524,8 +1480,6 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(__hash_table&& __u, } } -#endif // _LIBCPP_CXX03_LANG - template __hash_table<_Tp, _Hash, _Equal, _Alloc>::~__hash_table() { @@ -1537,9 +1491,7 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::~__hash_table() #endif __deallocate_node(__p1_.first().__next_); -#if _LIBCPP_DEBUG_LEVEL >= 2 - __get_db()->__erase_c(this); -#endif + std::__debug_db_erase_c(this); } template @@ -1561,7 +1513,7 @@ template __hash_table<_Tp, _Hash, _Equal, _Alloc>& __hash_table<_Tp, _Hash, _Equal, _Alloc>::operator=(const __hash_table& __u) { - if (this != &__u) + if (this != _VSTD::addressof(__u)) { __copy_assign_alloc(__u); hash_function() = __u.hash_function(); @@ -1581,7 +1533,7 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__deallocate_node(__next_pointer __np) while (__np != nullptr) { __next_pointer __next = __np->__next_; -#if _LIBCPP_DEBUG_LEVEL >= 2 +#ifdef _LIBCPP_ENABLE_DEBUG_MODE __c_node* __c = __get_db()->__find_c_and_lock(this); for (__i_node** __p = __c->end_; __p != __c->beg_; ) { @@ -1591,7 +1543,7 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__deallocate_node(__next_pointer __np) { (*__p)->__c_ = nullptr; if (--__c->end_ != __p) - memmove(__p, __p+1, (__c->end_ - __p)*sizeof(__i_node*)); + _VSTD::memmove(__p, __p+1, (__c->end_ - __p)*sizeof(__i_node*)); } } __get_db()->unlock(); @@ -1616,8 +1568,6 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__detach() _NOEXCEPT return __cache; } -#ifndef _LIBCPP_CXX03_LANG - template void __hash_table<_Tp, _Hash, _Equal, _Alloc>::__move_assign( @@ -1639,14 +1589,12 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__move_assign( __p1_.first().__next_ = __u.__p1_.first().__next_; if (size() > 0) { - __bucket_list_[__constrain_hash(__p1_.first().__next_->__hash(), bucket_count())] = + __bucket_list_[std::__constrain_hash(__p1_.first().__next_->__hash(), bucket_count())] = __p1_.first().__ptr(); __u.__p1_.first().__next_ = nullptr; __u.size() = 0; } -#if _LIBCPP_DEBUG_LEVEL >= 2 - __get_db()->swap(this, &__u); -#endif + std::__debug_db_swap(this, std::addressof(__u)); } template @@ -1664,10 +1612,10 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__move_assign( if (bucket_count() != 0) { __next_pointer __cache = __detach(); -#ifndef _LIBCPP_NO_EXCEPTIONS +#ifndef _LIBCPP_HAS_NO_EXCEPTIONS try { -#endif // _LIBCPP_NO_EXCEPTIONS +#endif // _LIBCPP_HAS_NO_EXCEPTIONS const_iterator __i = __u.begin(); while (__cache != nullptr && __u.size() != 0) { @@ -1677,14 +1625,14 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__move_assign( __node_insert_multi(__cache->__upcast()); __cache = __next; } -#ifndef _LIBCPP_NO_EXCEPTIONS +#ifndef _LIBCPP_HAS_NO_EXCEPTIONS } catch (...) { __deallocate_node(__cache); throw; } -#endif // _LIBCPP_NO_EXCEPTIONS +#endif // _LIBCPP_HAS_NO_EXCEPTIONS __deallocate_node(__cache); } const_iterator __i = __u.begin(); @@ -1712,8 +1660,6 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::operator=(__hash_table&& __u) return *this; } -#endif // _LIBCPP_CXX03_LANG - template template void @@ -1728,10 +1674,10 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__assign_unique(_InputIterator __first if (bucket_count() != 0) { __next_pointer __cache = __detach(); -#ifndef _LIBCPP_NO_EXCEPTIONS +#ifndef _LIBCPP_HAS_NO_EXCEPTIONS try { -#endif // _LIBCPP_NO_EXCEPTIONS +#endif // _LIBCPP_HAS_NO_EXCEPTIONS for (; __cache != nullptr && __first != __last; ++__first) { __cache->__upcast()->__value_ = *__first; @@ -1739,14 +1685,14 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__assign_unique(_InputIterator __first __node_insert_unique(__cache->__upcast()); __cache = __next; } -#ifndef _LIBCPP_NO_EXCEPTIONS +#ifndef _LIBCPP_HAS_NO_EXCEPTIONS } catch (...) { __deallocate_node(__cache); throw; } -#endif // _LIBCPP_NO_EXCEPTIONS +#endif // _LIBCPP_HAS_NO_EXCEPTIONS __deallocate_node(__cache); } for (; __first != __last; ++__first) @@ -1768,10 +1714,10 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__assign_multi(_InputIterator __first, if (bucket_count() != 0) { __next_pointer __cache = __detach(); -#ifndef _LIBCPP_NO_EXCEPTIONS +#ifndef _LIBCPP_HAS_NO_EXCEPTIONS try { -#endif // _LIBCPP_NO_EXCEPTIONS +#endif // _LIBCPP_HAS_NO_EXCEPTIONS for (; __cache != nullptr && __first != __last; ++__first) { __cache->__upcast()->__value_ = *__first; @@ -1779,14 +1725,14 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__assign_multi(_InputIterator __first, __node_insert_multi(__cache->__upcast()); __cache = __next; } -#ifndef _LIBCPP_NO_EXCEPTIONS +#ifndef _LIBCPP_HAS_NO_EXCEPTIONS } catch (...) { __deallocate_node(__cache); throw; } -#endif // _LIBCPP_NO_EXCEPTIONS +#endif // _LIBCPP_HAS_NO_EXCEPTIONS __deallocate_node(__cache); } for (; __first != __last; ++__first) @@ -1798,11 +1744,7 @@ inline typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator __hash_table<_Tp, _Hash, _Equal, _Alloc>::begin() _NOEXCEPT { -#if _LIBCPP_DEBUG_LEVEL >= 2 return iterator(__p1_.first().__next_, this); -#else - return iterator(__p1_.first().__next_); -#endif } template @@ -1810,11 +1752,7 @@ inline typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator __hash_table<_Tp, _Hash, _Equal, _Alloc>::end() _NOEXCEPT { -#if _LIBCPP_DEBUG_LEVEL >= 2 return iterator(nullptr, this); -#else - return iterator(nullptr); -#endif } template @@ -1822,11 +1760,7 @@ inline typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::const_iterator __hash_table<_Tp, _Hash, _Equal, _Alloc>::begin() const _NOEXCEPT { -#if _LIBCPP_DEBUG_LEVEL >= 2 return const_iterator(__p1_.first().__next_, this); -#else - return const_iterator(__p1_.first().__next_); -#endif } template @@ -1834,11 +1768,7 @@ inline typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::const_iterator __hash_table<_Tp, _Hash, _Equal, _Alloc>::end() const _NOEXCEPT { -#if _LIBCPP_DEBUG_LEVEL >= 2 return const_iterator(nullptr, this); -#else - return const_iterator(nullptr); -#endif } template @@ -1874,12 +1804,12 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_unique_prepare( if (__bc != 0) { - size_t __chash = __constrain_hash(__hash, __bc); + size_t __chash = std::__constrain_hash(__hash, __bc); __next_pointer __ndptr = __bucket_list_[__chash]; if (__ndptr != nullptr) { for (__ndptr = __ndptr->__next_; __ndptr != nullptr && - __constrain_hash(__ndptr->__hash(), __bc) == __chash; + std::__constrain_hash(__ndptr->__hash(), __bc) == __chash; __ndptr = __ndptr->__next_) { if (key_eq()(__ndptr->__upcast()->__value_, __value)) @@ -1889,8 +1819,8 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_unique_prepare( } if (size()+1 > __bc * max_load_factor() || __bc == 0) { - rehash(_VSTD::max(2 * __bc + !__is_hash_power2(__bc), - size_type(ceil(float(size() + 1) / max_load_factor())))); + __rehash_unique(_VSTD::max(2 * __bc + !std::__is_hash_power2(__bc), + size_type(std::ceil(float(size() + 1) / max_load_factor())))); } return nullptr; } @@ -1906,7 +1836,7 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_unique_perform( __node_pointer __nd) _NOEXCEPT { size_type __bc = bucket_count(); - size_t __chash = __constrain_hash(__nd->__hash(), __bc); + size_t __chash = std::__constrain_hash(__nd->__hash(), __bc); // insert_after __bucket_list_[__chash], or __first_node if bucket is null __next_pointer __pn = __bucket_list_[__chash]; if (__pn == nullptr) @@ -1917,7 +1847,7 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_unique_perform( // fix up __bucket_list_ __bucket_list_[__chash] = __pn; if (__nd->__next_ != nullptr) - __bucket_list_[__constrain_hash(__nd->__next_->__hash(), __bc)] = __nd->__ptr(); + __bucket_list_[std::__constrain_hash(__nd->__next_->__hash(), __bc)] = __nd->__ptr(); } else { @@ -1943,17 +1873,13 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_unique(__node_pointer __ __existing_node = __nd->__ptr(); __inserted = true; } -#if _LIBCPP_DEBUG_LEVEL >= 2 return pair(iterator(__existing_node, this), __inserted); -#else - return pair(iterator(__existing_node), __inserted); -#endif } // Prepare the container for an insertion of the value __cp_val with the hash // __cp_hash. This does a lookup into the container to see if __cp_value is // already present, and performs a rehash if necessary. Returns a pointer to the -// last occurance of __cp_val in the map. +// last occurrence of __cp_val in the map. // // Note that this function does forward exceptions if key_eq() throws, and never // mutates __value or actually inserts into the map. @@ -1965,16 +1891,16 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_multi_prepare( size_type __bc = bucket_count(); if (size()+1 > __bc * max_load_factor() || __bc == 0) { - rehash(_VSTD::max(2 * __bc + !__is_hash_power2(__bc), - size_type(ceil(float(size() + 1) / max_load_factor())))); + __rehash_multi(_VSTD::max(2 * __bc + !std::__is_hash_power2(__bc), + size_type(std::ceil(float(size() + 1) / max_load_factor())))); __bc = bucket_count(); } - size_t __chash = __constrain_hash(__cp_hash, __bc); + size_t __chash = std::__constrain_hash(__cp_hash, __bc); __next_pointer __pn = __bucket_list_[__chash]; if (__pn != nullptr) { for (bool __found = false; __pn->__next_ != nullptr && - __constrain_hash(__pn->__next_->__hash(), __bc) == __chash; + std::__constrain_hash(__pn->__next_->__hash(), __bc) == __chash; __pn = __pn->__next_) { // __found key_eq() action @@ -2006,7 +1932,7 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_multi_perform( __node_pointer __cp, __next_pointer __pn) _NOEXCEPT { size_type __bc = bucket_count(); - size_t __chash = __constrain_hash(__cp->__hash_, __bc); + size_t __chash = std::__constrain_hash(__cp->__hash_, __bc); if (__pn == nullptr) { __pn =__p1_.first().__ptr(); @@ -2015,7 +1941,7 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_multi_perform( // fix up __bucket_list_ __bucket_list_[__chash] = __pn; if (__cp->__next_ != nullptr) - __bucket_list_[__constrain_hash(__cp->__next_->__hash(), __bc)] + __bucket_list_[std::__constrain_hash(__cp->__next_->__hash(), __bc)] = __cp->__ptr(); } else @@ -2024,7 +1950,7 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_multi_perform( __pn->__next_ = __cp->__ptr(); if (__cp->__next_ != nullptr) { - size_t __nhash = __constrain_hash(__cp->__next_->__hash(), __bc); + size_t __nhash = std::__constrain_hash(__cp->__next_->__hash(), __bc); if (__nhash != __chash) __bucket_list_[__nhash] = __cp->__ptr(); } @@ -2041,11 +1967,7 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_multi(__node_pointer __c __next_pointer __pn = __node_insert_multi_prepare(__cp->__hash(), __cp->__value_); __node_insert_multi_perform(__cp, __pn); -#if _LIBCPP_DEBUG_LEVEL >= 2 return iterator(__cp->__ptr(), this); -#else - return iterator(__cp->__ptr()); -#endif } template @@ -2053,11 +1975,9 @@ typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator __hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_multi( const_iterator __p, __node_pointer __cp) { -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__p) == this, - "unordered container::emplace_hint(const_iterator, args...) called with an iterator not" - " referring to this unordered container"); -#endif + _LIBCPP_DEBUG_ASSERT(__get_const_db()->__find_c_from_i(_VSTD::addressof(__p)) == this, + "unordered container::emplace_hint(const_iterator, args...) called with an iterator not" + " referring to this unordered container"); if (__p != end() && key_eq()(*__p, __cp->__value_)) { __next_pointer __np = __p.__node_; @@ -2065,54 +1985,43 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_insert_multi( size_type __bc = bucket_count(); if (size()+1 > __bc * max_load_factor() || __bc == 0) { - rehash(_VSTD::max(2 * __bc + !__is_hash_power2(__bc), - size_type(ceil(float(size() + 1) / max_load_factor())))); + __rehash_multi(_VSTD::max(2 * __bc + !std::__is_hash_power2(__bc), + size_type(std::ceil(float(size() + 1) / max_load_factor())))); __bc = bucket_count(); } - size_t __chash = __constrain_hash(__cp->__hash_, __bc); + size_t __chash = std::__constrain_hash(__cp->__hash_, __bc); __next_pointer __pp = __bucket_list_[__chash]; while (__pp->__next_ != __np) __pp = __pp->__next_; __cp->__next_ = __np; __pp->__next_ = static_cast<__next_pointer>(__cp); ++size(); -#if _LIBCPP_DEBUG_LEVEL >= 2 return iterator(static_cast<__next_pointer>(__cp), this); -#else - return iterator(static_cast<__next_pointer>(__cp)); -#endif } return __node_insert_multi(__cp); } -#ifndef _LIBCPP_CXX03_LANG template template pair::iterator, bool> __hash_table<_Tp, _Hash, _Equal, _Alloc>::__emplace_unique_key_args(_Key const& __k, _Args&&... __args) -#else -template -template -pair::iterator, bool> -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__emplace_unique_key_args(_Key const& __k, _Args& __args) -#endif { size_t __hash = hash_function()(__k); size_type __bc = bucket_count(); bool __inserted = false; __next_pointer __nd; - size_t __chash = 0; + size_t __chash; if (__bc != 0) { - __chash = __constrain_hash(__hash, __bc); + __chash = std::__constrain_hash(__hash, __bc); __nd = __bucket_list_[__chash]; if (__nd != nullptr) { for (__nd = __nd->__next_; __nd != nullptr && - (__nd->__hash() == __hash || __constrain_hash(__nd->__hash(), __bc) == __chash); + (__nd->__hash() == __hash || std::__constrain_hash(__nd->__hash(), __bc) == __chash); __nd = __nd->__next_) { if (key_eq()(__nd->__upcast()->__value_, __k)) @@ -2121,17 +2030,13 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__emplace_unique_key_args(_Key const& } } { -#ifndef _LIBCPP_CXX03_LANG __node_holder __h = __construct_node_hash(__hash, _VSTD::forward<_Args>(__args)...); -#else - __node_holder __h = __construct_node_hash(__hash, __args); -#endif if (size()+1 > __bc * max_load_factor() || __bc == 0) { - rehash(_VSTD::max(2 * __bc + !__is_hash_power2(__bc), - size_type(ceil(float(size() + 1) / max_load_factor())))); + __rehash_unique(_VSTD::max(2 * __bc + !std::__is_hash_power2(__bc), + size_type(std::ceil(float(size() + 1) / max_load_factor())))); __bc = bucket_count(); - __chash = __constrain_hash(__hash, __bc); + __chash = std::__constrain_hash(__hash, __bc); } // insert_after __bucket_list_[__chash], or __first_node if bucket is null __next_pointer __pn = __bucket_list_[__chash]; @@ -2143,7 +2048,7 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__emplace_unique_key_args(_Key const& // fix up __bucket_list_ __bucket_list_[__chash] = __pn; if (__h->__next_ != nullptr) - __bucket_list_[__constrain_hash(__h->__next_->__hash(), __bc)] + __bucket_list_[std::__constrain_hash(__h->__next_->__hash(), __bc)] = __h.get()->__ptr(); } else @@ -2157,15 +2062,9 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__emplace_unique_key_args(_Key const& __inserted = true; } __done: -#if _LIBCPP_DEBUG_LEVEL >= 2 return pair(iterator(__nd, this), __inserted); -#else - return pair(iterator(__nd), __inserted); -#endif } -#ifndef _LIBCPP_CXX03_LANG - template template pair::iterator, bool> @@ -2195,48 +2094,16 @@ typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator __hash_table<_Tp, _Hash, _Equal, _Alloc>::__emplace_hint_multi( const_iterator __p, _Args&&... __args) { -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__p) == this, - "unordered container::emplace_hint(const_iterator, args...) called with an iterator not" - " referring to this unordered container"); -#endif + _LIBCPP_DEBUG_ASSERT(__get_const_db()->__find_c_from_i(_VSTD::addressof(__p)) == this, + "unordered container::emplace_hint(const_iterator, args...) called with an iterator not" + " referring to this unordered container"); __node_holder __h = __construct_node(_VSTD::forward<_Args>(__args)...); iterator __r = __node_insert_multi(__p, __h.get()); __h.release(); return __r; } -#else // _LIBCPP_CXX03_LANG - -template -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__insert_multi(const __container_value_type& __x) -{ - __node_holder __h = __construct_node(__x); - iterator __r = __node_insert_multi(__h.get()); - __h.release(); - return __r; -} - -template -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__insert_multi(const_iterator __p, - const __container_value_type& __x) -{ -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__p) == this, - "unordered container::insert(const_iterator, lvalue) called with an iterator not" - " referring to this unordered container"); -#endif - __node_holder __h = __construct_node(__x); - iterator __r = __node_insert_multi(__p, __h.get()); - __h.release(); - return __r; -} - -#endif // _LIBCPP_CXX03_LANG - -#if _LIBCPP_STD_VER > 14 +#if _LIBCPP_STD_VER >= 17 template template _LIBCPP_INLINE_VISIBILITY @@ -2366,40 +2233,40 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_handle_merge_multi( __node_insert_multi_perform(__src_ptr, __pn); } } -#endif // _LIBCPP_STD_VER > 14 +#endif // _LIBCPP_STD_VER >= 17 template +template void -__hash_table<_Tp, _Hash, _Equal, _Alloc>::rehash(size_type __n) +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__rehash(size_type __n) _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK { if (__n == 1) __n = 2; else if (__n & (__n - 1)) - __n = __next_prime(__n); + __n = std::__next_prime(__n); size_type __bc = bucket_count(); if (__n > __bc) - __rehash(__n); + __do_rehash<_UniqueKeys>(__n); else if (__n < __bc) { __n = _VSTD::max ( __n, - __is_hash_power2(__bc) ? __next_hash_pow2(size_t(ceil(float(size()) / max_load_factor()))) : - __next_prime(size_t(ceil(float(size()) / max_load_factor()))) + std::__is_hash_power2(__bc) ? std::__next_hash_pow2(size_t(std::ceil(float(size()) / max_load_factor()))) : + std::__next_prime(size_t(std::ceil(float(size()) / max_load_factor()))) ); if (__n < __bc) - __rehash(__n); + __do_rehash<_UniqueKeys>(__n); } } template +template void -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__rehash(size_type __nbc) +__hash_table<_Tp, _Hash, _Equal, _Alloc>::__do_rehash(size_type __nbc) { -#if _LIBCPP_DEBUG_LEVEL >= 2 - __get_db()->__invalidate_all(this); -#endif // _LIBCPP_DEBUG_LEVEL >= 2 + std::__debug_db_invalidate_all(this); __pointer_allocator& __npa = __bucket_list_.get_deleter().__alloc(); __bucket_list_.reset(__nbc > 0 ? __pointer_alloc_traits::allocate(__npa, __nbc) : nullptr); @@ -2412,13 +2279,13 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__rehash(size_type __nbc) __next_pointer __cp = __pp->__next_; if (__cp != nullptr) { - size_type __chash = __constrain_hash(__cp->__hash(), __nbc); + size_type __chash = std::__constrain_hash(__cp->__hash(), __nbc); __bucket_list_[__chash] = __pp; size_type __phash = __chash; - for (__pp = __cp, __cp = __cp->__next_; __cp != nullptr; + for (__pp = __cp, void(), __cp = __cp->__next_; __cp != nullptr; __cp = __pp->__next_) { - __chash = __constrain_hash(__cp->__hash(), __nbc); + __chash = std::__constrain_hash(__cp->__hash(), __nbc); if (__chash == __phash) __pp = __cp; else @@ -2432,11 +2299,14 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__rehash(size_type __nbc) else { __next_pointer __np = __cp; - for (; __np->__next_ != nullptr && - key_eq()(__cp->__upcast()->__value_, - __np->__next_->__upcast()->__value_); - __np = __np->__next_) - ; + if _LIBCPP_CONSTEXPR_SINCE_CXX17 (!_UniqueKeys) + { + for (; __np->__next_ != nullptr && + key_eq()(__cp->__upcast()->__value_, + __np->__next_->__upcast()->__value_); + __np = __np->__next_) + ; + } __pp->__next_ = __np->__next_; __np->__next_ = __bucket_list_[__chash]->__next_; __bucket_list_[__chash]->__next_ = __cp; @@ -2457,22 +2327,18 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::find(const _Key& __k) size_type __bc = bucket_count(); if (__bc != 0) { - size_t __chash = __constrain_hash(__hash, __bc); + size_t __chash = std::__constrain_hash(__hash, __bc); __next_pointer __nd = __bucket_list_[__chash]; if (__nd != nullptr) { for (__nd = __nd->__next_; __nd != nullptr && (__nd->__hash() == __hash - || __constrain_hash(__nd->__hash(), __bc) == __chash); + || std::__constrain_hash(__nd->__hash(), __bc) == __chash); __nd = __nd->__next_) { if ((__nd->__hash() == __hash) && key_eq()(__nd->__upcast()->__value_, __k)) -#if _LIBCPP_DEBUG_LEVEL >= 2 return iterator(__nd, this); -#else - return iterator(__nd); -#endif } } } @@ -2488,22 +2354,18 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::find(const _Key& __k) const size_type __bc = bucket_count(); if (__bc != 0) { - size_t __chash = __constrain_hash(__hash, __bc); + size_t __chash = std::__constrain_hash(__hash, __bc); __next_pointer __nd = __bucket_list_[__chash]; if (__nd != nullptr) { for (__nd = __nd->__next_; __nd != nullptr && (__hash == __nd->__hash() - || __constrain_hash(__nd->__hash(), __bc) == __chash); + || std::__constrain_hash(__nd->__hash(), __bc) == __chash); __nd = __nd->__next_) { if ((__nd->__hash() == __hash) && key_eq()(__nd->__upcast()->__value_, __k)) -#if _LIBCPP_DEBUG_LEVEL >= 2 return const_iterator(__nd, this); -#else - return const_iterator(__nd); -#endif } } @@ -2511,8 +2373,6 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::find(const _Key& __k) const return end(); } -#ifndef _LIBCPP_CXX03_LANG - template template typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_holder @@ -2548,52 +2408,17 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__construct_node_hash( return __h; } -#else // _LIBCPP_CXX03_LANG - -template -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_holder -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__construct_node(const __container_value_type& __v) -{ - __node_allocator& __na = __node_alloc(); - __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na)); - __node_traits::construct(__na, _NodeTypes::__get_ptr(__h->__value_), __v); - __h.get_deleter().__value_constructed = true; - __h->__hash_ = hash_function()(__h->__value_); - __h->__next_ = nullptr; - return _LIBCPP_EXPLICIT_MOVE(__h); // explicitly moved for C++03 -} - -template -typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::__node_holder -__hash_table<_Tp, _Hash, _Equal, _Alloc>::__construct_node_hash(size_t __hash, - const __container_value_type& __v) -{ - __node_allocator& __na = __node_alloc(); - __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na)); - __node_traits::construct(__na, _NodeTypes::__get_ptr(__h->__value_), __v); - __h.get_deleter().__value_constructed = true; - __h->__hash_ = __hash; - __h->__next_ = nullptr; - return _LIBCPP_EXPLICIT_MOVE(__h); // explicitly moved for C++03 -} - -#endif // _LIBCPP_CXX03_LANG - template typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator __hash_table<_Tp, _Hash, _Equal, _Alloc>::erase(const_iterator __p) { __next_pointer __np = __p.__node_; -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__p) == this, - "unordered container erase(iterator) called with an iterator not" - " referring to this container"); + _LIBCPP_DEBUG_ASSERT(__get_const_db()->__find_c_from_i(_VSTD::addressof(__p)) == this, + "unordered container erase(iterator) called with an iterator not" + " referring to this container"); _LIBCPP_ASSERT(__p != end(), - "unordered container erase(iterator) called with a non-dereferenceable iterator"); + "unordered container erase(iterator) called with a non-dereferenceable iterator"); iterator __r(__np, this); -#else - iterator __r(__np); -#endif ++__r; remove(__p); return __r; @@ -2604,25 +2429,19 @@ typename __hash_table<_Tp, _Hash, _Equal, _Alloc>::iterator __hash_table<_Tp, _Hash, _Equal, _Alloc>::erase(const_iterator __first, const_iterator __last) { -#if _LIBCPP_DEBUG_LEVEL >= 2 - _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__first) == this, - "unodered container::erase(iterator, iterator) called with an iterator not" - " referring to this unodered container"); - _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__last) == this, - "unodered container::erase(iterator, iterator) called with an iterator not" - " referring to this unodered container"); -#endif + _LIBCPP_DEBUG_ASSERT(__get_const_db()->__find_c_from_i(_VSTD::addressof(__first)) == this, + "unordered container::erase(iterator, iterator) called with an iterator not" + " referring to this container"); + _LIBCPP_DEBUG_ASSERT(__get_const_db()->__find_c_from_i(_VSTD::addressof(__last)) == this, + "unordered container::erase(iterator, iterator) called with an iterator not" + " referring to this container"); for (const_iterator __p = __first; __first != __last; __p = __first) { ++__first; erase(__p); } __next_pointer __np = __last.__node_; -#if _LIBCPP_DEBUG_LEVEL >= 2 return iterator (__np, this); -#else - return iterator (__np); -#endif } template @@ -2663,7 +2482,7 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::remove(const_iterator __p) _NOEXCEPT // current node __next_pointer __cn = __p.__node_; size_type __bc = bucket_count(); - size_t __chash = __constrain_hash(__cn->__hash(), __bc); + size_t __chash = std::__constrain_hash(__cn->__hash(), __bc); // find previous node __next_pointer __pn = __bucket_list_[__chash]; for (; __pn->__next_ != __cn; __pn = __pn->__next_) @@ -2672,16 +2491,16 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::remove(const_iterator __p) _NOEXCEPT // if __pn is not in same bucket (before begin is not in same bucket) && // if __cn->__next_ is not in same bucket (nullptr is not in same bucket) if (__pn == __p1_.first().__ptr() - || __constrain_hash(__pn->__hash(), __bc) != __chash) + || std::__constrain_hash(__pn->__hash(), __bc) != __chash) { if (__cn->__next_ == nullptr - || __constrain_hash(__cn->__next_->__hash(), __bc) != __chash) + || std::__constrain_hash(__cn->__next_->__hash(), __bc) != __chash) __bucket_list_[__chash] = nullptr; } // if __cn->__next_ is not in same bucket (nullptr is in same bucket) if (__cn->__next_ != nullptr) { - size_t __nhash = __constrain_hash(__cn->__next_->__hash(), __bc); + size_t __nhash = std::__constrain_hash(__cn->__next_->__hash(), __bc); if (__nhash != __chash) __bucket_list_[__nhash] = __pn; } @@ -2689,7 +2508,7 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::remove(const_iterator __p) _NOEXCEPT __pn->__next_ = __cn->__next_; __cn->__next_ = nullptr; --size(); -#if _LIBCPP_DEBUG_LEVEL >= 2 +#ifdef _LIBCPP_ENABLE_DEBUG_MODE __c_node* __c = __get_db()->__find_c_and_lock(this); for (__i_node** __dp = __c->end_; __dp != __c->beg_; ) { @@ -2699,7 +2518,7 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::remove(const_iterator __p) _NOEXCEPT { (*__dp)->__c_ = nullptr; if (--__c->end_ != __dp) - memmove(__dp, __dp+1, (__c->end_ - __dp)*sizeof(__i_node*)); + _VSTD::memmove(__dp, __dp+1, (__c->end_ - __dp)*sizeof(__i_node*)); } } __get_db()->unlock(); @@ -2828,21 +2647,19 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::swap(__hash_table& __u) __u.__bucket_list_.reset(__npp); } _VSTD::swap(__bucket_list_.get_deleter().size(), __u.__bucket_list_.get_deleter().size()); - __swap_allocator(__bucket_list_.get_deleter().__alloc(), + _VSTD::__swap_allocator(__bucket_list_.get_deleter().__alloc(), __u.__bucket_list_.get_deleter().__alloc()); - __swap_allocator(__node_alloc(), __u.__node_alloc()); + _VSTD::__swap_allocator(__node_alloc(), __u.__node_alloc()); _VSTD::swap(__p1_.first().__next_, __u.__p1_.first().__next_); __p2_.swap(__u.__p2_); __p3_.swap(__u.__p3_); if (size() > 0) - __bucket_list_[__constrain_hash(__p1_.first().__next_->__hash(), bucket_count())] = + __bucket_list_[std::__constrain_hash(__p1_.first().__next_->__hash(), bucket_count())] = __p1_.first().__ptr(); if (__u.size() > 0) - __u.__bucket_list_[__constrain_hash(__u.__p1_.first().__next_->__hash(), __u.bucket_count())] = + __u.__bucket_list_[std::__constrain_hash(__u.__p1_.first().__next_->__hash(), __u.bucket_count())] = __u.__p1_.first().__ptr(); -#if _LIBCPP_DEBUG_LEVEL >= 2 - __get_db()->swap(this, &__u); -#endif + std::__debug_db_swap(this, std::addressof(__u)); } template @@ -2857,8 +2674,8 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::bucket_size(size_type __n) const if (__np != nullptr) { for (__np = __np->__next_; __np != nullptr && - __constrain_hash(__np->__hash(), __bc) == __n; - __np = __np->__next_, ++__r) + std::__constrain_hash(__np->__hash(), __bc) == __n; + __np = __np->__next_, (void) ++__r) ; } return __r; @@ -2874,7 +2691,7 @@ swap(__hash_table<_Tp, _Hash, _Equal, _Alloc>& __x, __x.swap(__y); } -#if _LIBCPP_DEBUG_LEVEL >= 2 +#ifdef _LIBCPP_ENABLE_DEBUG_MODE template bool @@ -2904,10 +2721,10 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>::__subscriptable(const const_iterator*, return false; } -#endif // _LIBCPP_DEBUG_LEVEL >= 2 +#endif // _LIBCPP_ENABLE_DEBUG_MODE _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS -#endif // _LIBCPP__HASH_TABLE +#endif // _LIBCPP___HASH_TABLE diff --git a/third_party/libcxx/__ios/fpos.h b/third_party/libcxx/__ios/fpos.h new file mode 100644 index 000000000..87f0135fc --- /dev/null +++ b/third_party/libcxx/__ios/fpos.h @@ -0,0 +1,79 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___IOS_FPOS_H +#define _LIBCPP___IOS_FPOS_H + +#include <__config> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +class _LIBCPP_TEMPLATE_VIS fpos { +private: + _StateT __st_; + streamoff __off_; + +public: + _LIBCPP_HIDE_FROM_ABI fpos(streamoff __off = streamoff()) : __st_(), __off_(__off) {} + + _LIBCPP_HIDE_FROM_ABI operator streamoff() const { return __off_; } + + _LIBCPP_HIDE_FROM_ABI _StateT state() const { return __st_; } + _LIBCPP_HIDE_FROM_ABI void state(_StateT __st) { __st_ = __st; } + + _LIBCPP_HIDE_FROM_ABI fpos& operator+=(streamoff __off) { + __off_ += __off; + return *this; + } + + _LIBCPP_HIDE_FROM_ABI fpos operator+(streamoff __off) const { + fpos __t(*this); + __t += __off; + return __t; + } + + _LIBCPP_HIDE_FROM_ABI fpos& operator-=(streamoff __off) { + __off_ -= __off; + return *this; + } + + _LIBCPP_HIDE_FROM_ABI fpos operator-(streamoff __off) const { + fpos __t(*this); + __t -= __off; + return __t; + } +}; + +template +inline _LIBCPP_HIDE_FROM_ABI +streamoff operator-(const fpos<_StateT>& __x, const fpos<_StateT>& __y) { + return streamoff(__x) - streamoff(__y); +} + +template +inline _LIBCPP_HIDE_FROM_ABI +bool operator==(const fpos<_StateT>& __x, const fpos<_StateT>& __y) { + return streamoff(__x) == streamoff(__y); +} + +template +inline _LIBCPP_HIDE_FROM_ABI +bool operator!=(const fpos<_StateT>& __x, const fpos<_StateT>& __y) { + return streamoff(__x) != streamoff(__y); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___IOS_FPOS_H diff --git a/third_party/libcxx/__iterator/access.h b/third_party/libcxx/__iterator/access.h new file mode 100644 index 000000000..d7bcb3378 --- /dev/null +++ b/third_party/libcxx/__iterator/access.h @@ -0,0 +1,129 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ITERATOR_ACCESS_H +#define _LIBCPP___ITERATOR_ACCESS_H + +#include <__config> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +_Tp* +begin(_Tp (&__array)[_Np]) +{ + return __array; +} + +template +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +_Tp* +end(_Tp (&__array)[_Np]) +{ + return __array + _Np; +} + +#if !defined(_LIBCPP_CXX03_LANG) + +template +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 +auto +begin(_Cp& __c) -> decltype(__c.begin()) +{ + return __c.begin(); +} + +template +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 +auto +begin(const _Cp& __c) -> decltype(__c.begin()) +{ + return __c.begin(); +} + +template +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 +auto +end(_Cp& __c) -> decltype(__c.end()) +{ + return __c.end(); +} + +template +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 +auto +end(const _Cp& __c) -> decltype(__c.end()) +{ + return __c.end(); +} + +#if _LIBCPP_STD_VER >= 14 + +template +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +auto cbegin(const _Cp& __c) -> decltype(_VSTD::begin(__c)) +{ + return _VSTD::begin(__c); +} + +template +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 +auto cend(const _Cp& __c) -> decltype(_VSTD::end(__c)) +{ + return _VSTD::end(__c); +} + +#endif + + +#else // defined(_LIBCPP_CXX03_LANG) + +template +_LIBCPP_INLINE_VISIBILITY +typename _Cp::iterator +begin(_Cp& __c) +{ + return __c.begin(); +} + +template +_LIBCPP_INLINE_VISIBILITY +typename _Cp::const_iterator +begin(const _Cp& __c) +{ + return __c.begin(); +} + +template +_LIBCPP_INLINE_VISIBILITY +typename _Cp::iterator +end(_Cp& __c) +{ + return __c.end(); +} + +template +_LIBCPP_INLINE_VISIBILITY +typename _Cp::const_iterator +end(const _Cp& __c) +{ + return __c.end(); +} + +#endif // !defined(_LIBCPP_CXX03_LANG) + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ITERATOR_ACCESS_H diff --git a/third_party/libcxx/__iterator/advance.h b/third_party/libcxx/__iterator/advance.h new file mode 100644 index 000000000..c5f3c500d --- /dev/null +++ b/third_party/libcxx/__iterator/advance.h @@ -0,0 +1,202 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ITERATOR_ADVANCE_H +#define _LIBCPP___ITERATOR_ADVANCE_H + +#include <__assert> +#include <__concepts/assignable.h> +#include <__concepts/same_as.h> +#include <__config> +#include <__iterator/concepts.h> +#include <__iterator/incrementable_traits.h> +#include <__iterator/iterator_traits.h> +#include <__type_traits/enable_if.h> +#include <__type_traits/is_integral.h> +#include <__utility/convert_to_integral.h> +#include <__utility/declval.h> +#include <__utility/move.h> +#include <__utility/unreachable.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 +void __advance(_InputIter& __i, typename iterator_traits<_InputIter>::difference_type __n, input_iterator_tag) { + for (; __n > 0; --__n) + ++__i; +} + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 +void __advance(_BiDirIter& __i, typename iterator_traits<_BiDirIter>::difference_type __n, bidirectional_iterator_tag) { + if (__n >= 0) + for (; __n > 0; --__n) + ++__i; + else + for (; __n < 0; ++__n) + --__i; +} + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 +void __advance(_RandIter& __i, typename iterator_traits<_RandIter>::difference_type __n, random_access_iterator_tag) { + __i += __n; +} + +template < + class _InputIter, class _Distance, + class _IntegralDistance = decltype(_VSTD::__convert_to_integral(std::declval<_Distance>())), + class = __enable_if_t::value> > +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 +void advance(_InputIter& __i, _Distance __orig_n) { + typedef typename iterator_traits<_InputIter>::difference_type _Difference; + _Difference __n = static_cast<_Difference>(_VSTD::__convert_to_integral(__orig_n)); + _LIBCPP_ASSERT(__n >= 0 || __has_bidirectional_iterator_category<_InputIter>::value, + "Attempt to advance(it, n) with negative n on a non-bidirectional iterator"); + _VSTD::__advance(__i, __n, typename iterator_traits<_InputIter>::iterator_category()); +} + +#if _LIBCPP_STD_VER >= 20 + +// [range.iter.op.advance] + +namespace ranges { +namespace __advance { + +struct __fn { +private: + template + _LIBCPP_HIDE_FROM_ABI + static constexpr void __advance_forward(_Ip& __i, iter_difference_t<_Ip> __n) { + while (__n > 0) { + --__n; + ++__i; + } + } + + template + _LIBCPP_HIDE_FROM_ABI + static constexpr void __advance_backward(_Ip& __i, iter_difference_t<_Ip> __n) { + while (__n < 0) { + ++__n; + --__i; + } + } + +public: + // Preconditions: If `I` does not model `bidirectional_iterator`, `n` is not negative. + template + _LIBCPP_HIDE_FROM_ABI + constexpr void operator()(_Ip& __i, iter_difference_t<_Ip> __n) const { + _LIBCPP_ASSERT(__n >= 0 || bidirectional_iterator<_Ip>, + "If `n < 0`, then `bidirectional_iterator` must be true."); + + // If `I` models `random_access_iterator`, equivalent to `i += n`. + if constexpr (random_access_iterator<_Ip>) { + __i += __n; + return; + } else if constexpr (bidirectional_iterator<_Ip>) { + // Otherwise, if `n` is non-negative, increments `i` by `n`. + __advance_forward(__i, __n); + // Otherwise, decrements `i` by `-n`. + __advance_backward(__i, __n); + return; + } else { + // Otherwise, if `n` is non-negative, increments `i` by `n`. + __advance_forward(__i, __n); + return; + } + } + + // Preconditions: Either `assignable_from || sized_sentinel_for` is modeled, or [i, bound_sentinel) denotes a range. + template _Sp> + _LIBCPP_HIDE_FROM_ABI constexpr void operator()(_Ip& __i, _Sp __bound_sentinel) const { + // If `I` and `S` model `assignable_from`, equivalent to `i = std::move(bound_sentinel)`. + if constexpr (assignable_from<_Ip&, _Sp>) { + __i = _VSTD::move(__bound_sentinel); + } + // Otherwise, if `S` and `I` model `sized_sentinel_for`, equivalent to `ranges::advance(i, bound_sentinel - i)`. + else if constexpr (sized_sentinel_for<_Sp, _Ip>) { + (*this)(__i, __bound_sentinel - __i); + } + // Otherwise, while `bool(i != bound_sentinel)` is true, increments `i`. + else { + while (__i != __bound_sentinel) { + ++__i; + } + } + } + + // Preconditions: + // * If `n > 0`, [i, bound_sentinel) denotes a range. + // * If `n == 0`, [i, bound_sentinel) or [bound_sentinel, i) denotes a range. + // * If `n < 0`, [bound_sentinel, i) denotes a range, `I` models `bidirectional_iterator`, and `I` and `S` model `same_as`. + // Returns: `n - M`, where `M` is the difference between the ending and starting position. + template _Sp> + _LIBCPP_HIDE_FROM_ABI constexpr iter_difference_t<_Ip> operator()(_Ip& __i, iter_difference_t<_Ip> __n, + _Sp __bound_sentinel) const { + _LIBCPP_ASSERT((__n >= 0) || (bidirectional_iterator<_Ip> && same_as<_Ip, _Sp>), + "If `n < 0`, then `bidirectional_iterator && same_as` must be true."); + // If `S` and `I` model `sized_sentinel_for`: + if constexpr (sized_sentinel_for<_Sp, _Ip>) { + // If |n| >= |bound_sentinel - i|, equivalent to `ranges::advance(i, bound_sentinel)`. + // __magnitude_geq(a, b) returns |a| >= |b|, assuming they have the same sign. + auto __magnitude_geq = [](auto __a, auto __b) { + return __a == 0 ? __b == 0 : + __a > 0 ? __a >= __b : + __a <= __b; + }; + if (const auto __m = __bound_sentinel - __i; __magnitude_geq(__n, __m)) { + (*this)(__i, __bound_sentinel); + return __n - __m; + } + + // Otherwise, equivalent to `ranges::advance(i, n)`. + (*this)(__i, __n); + return 0; + } else { + // Otherwise, if `n` is non-negative, while `bool(i != bound_sentinel)` is true, increments `i` but at + // most `n` times. + while (__i != __bound_sentinel && __n > 0) { + ++__i; + --__n; + } + + // Otherwise, while `bool(i != bound_sentinel)` is true, decrements `i` but at most `-n` times. + if constexpr (bidirectional_iterator<_Ip> && same_as<_Ip, _Sp>) { + while (__i != __bound_sentinel && __n < 0) { + --__i; + ++__n; + } + } + return __n; + } + + __libcpp_unreachable(); + } +}; + +} // namespace __advance + +inline namespace __cpo { + inline constexpr auto advance = __advance::__fn{}; +} // namespace __cpo +} // namespace ranges + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ITERATOR_ADVANCE_H diff --git a/third_party/libcxx/__iterator/back_insert_iterator.h b/third_party/libcxx/__iterator/back_insert_iterator.h new file mode 100644 index 000000000..dc656e381 --- /dev/null +++ b/third_party/libcxx/__iterator/back_insert_iterator.h @@ -0,0 +1,73 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ITERATOR_BACK_INSERT_ITERATOR_H +#define _LIBCPP___ITERATOR_BACK_INSERT_ITERATOR_H + +#include <__config> +#include <__iterator/iterator.h> +#include <__iterator/iterator_traits.h> +#include <__memory/addressof.h> +#include <__utility/move.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +_LIBCPP_SUPPRESS_DEPRECATED_PUSH +template +class _LIBCPP_TEMPLATE_VIS back_insert_iterator +#if _LIBCPP_STD_VER <= 14 || !defined(_LIBCPP_ABI_NO_ITERATOR_BASES) + : public iterator +#endif +{ +_LIBCPP_SUPPRESS_DEPRECATED_POP +protected: + _Container* container; +public: + typedef output_iterator_tag iterator_category; + typedef void value_type; +#if _LIBCPP_STD_VER >= 20 + typedef ptrdiff_t difference_type; +#else + typedef void difference_type; +#endif + typedef void pointer; + typedef void reference; + typedef _Container container_type; + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 explicit back_insert_iterator(_Container& __x) : container(_VSTD::addressof(__x)) {} + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 back_insert_iterator& operator=(const typename _Container::value_type& __value) + {container->push_back(__value); return *this;} +#ifndef _LIBCPP_CXX03_LANG + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 back_insert_iterator& operator=(typename _Container::value_type&& __value) + {container->push_back(_VSTD::move(__value)); return *this;} +#endif // _LIBCPP_CXX03_LANG + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 back_insert_iterator& operator*() {return *this;} + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 back_insert_iterator& operator++() {return *this;} + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 back_insert_iterator operator++(int) {return *this;} + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _Container* __get_container() const { return container; } +}; +_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(back_insert_iterator); + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 +back_insert_iterator<_Container> +back_inserter(_Container& __x) +{ + return back_insert_iterator<_Container>(__x); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ITERATOR_BACK_INSERT_ITERATOR_H diff --git a/third_party/libcxx/__iterator/bounded_iter.h b/third_party/libcxx/__iterator/bounded_iter.h new file mode 100644 index 000000000..329fd924d --- /dev/null +++ b/third_party/libcxx/__iterator/bounded_iter.h @@ -0,0 +1,231 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ITERATOR_BOUNDED_ITER_H +#define _LIBCPP___ITERATOR_BOUNDED_ITER_H + +#include <__assert> +#include <__config> +#include <__iterator/iterator_traits.h> +#include <__memory/pointer_traits.h> +#include <__type_traits/enable_if.h> +#include <__type_traits/integral_constant.h> +#include <__type_traits/is_convertible.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +// Iterator wrapper that carries the valid range it is allowed to access. +// +// This is a simple iterator wrapper for contiguous iterators that points +// within a [begin, end) range and carries these bounds with it. The iterator +// ensures that it is pointing within that [begin, end) range when it is +// dereferenced. +// +// Arithmetic operations are allowed and the bounds of the resulting iterator +// are not checked. Hence, it is possible to create an iterator pointing outside +// its range, but it is not possible to dereference it. +template ::value > > +struct __bounded_iter { + using value_type = typename iterator_traits<_Iterator>::value_type; + using difference_type = typename iterator_traits<_Iterator>::difference_type; + using pointer = typename iterator_traits<_Iterator>::pointer; + using reference = typename iterator_traits<_Iterator>::reference; + using iterator_category = typename iterator_traits<_Iterator>::iterator_category; +#if _LIBCPP_STD_VER >= 20 + using iterator_concept = contiguous_iterator_tag; +#endif + + // Create a singular iterator. + // + // Such an iterator does not point to any object and is conceptually out of bounds, so it is + // not dereferenceable. Observing operations like comparison and assignment are valid. + _LIBCPP_HIDE_FROM_ABI __bounded_iter() = default; + + _LIBCPP_HIDE_FROM_ABI __bounded_iter(__bounded_iter const&) = default; + _LIBCPP_HIDE_FROM_ABI __bounded_iter(__bounded_iter&&) = default; + + template ::value > > + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR __bounded_iter(__bounded_iter<_OtherIterator> const& __other) _NOEXCEPT + : __current_(__other.__current_), + __begin_(__other.__begin_), + __end_(__other.__end_) {} + + // Assign a bounded iterator to another one, rebinding the bounds of the iterator as well. + _LIBCPP_HIDE_FROM_ABI __bounded_iter& operator=(__bounded_iter const&) = default; + _LIBCPP_HIDE_FROM_ABI __bounded_iter& operator=(__bounded_iter&&) = default; + +private: + // Create an iterator wrapping the given iterator, and whose bounds are described + // by the provided [begin, end) range. + // + // This constructor does not check whether the resulting iterator is within its bounds. + // However, it does check that the provided [begin, end) range is a valid range (that + // is, begin <= end). + // + // Since it is non-standard for iterators to have this constructor, __bounded_iter must + // be created via `std::__make_bounded_iter`. + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 explicit __bounded_iter( + _Iterator __current, _Iterator __begin, _Iterator __end) + : __current_(__current), __begin_(__begin), __end_(__end) { + _LIBCPP_ASSERT(__begin <= __end, "__bounded_iter(current, begin, end): [begin, end) is not a valid range"); + } + + template + friend _LIBCPP_CONSTEXPR __bounded_iter<_It> __make_bounded_iter(_It, _It, _It); + +public: + // Dereference and indexing operations. + // + // These operations check that the iterator is dereferenceable, that is within [begin, end). + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 reference operator*() const _NOEXCEPT { + _LIBCPP_ASSERT( + __in_bounds(__current_), "__bounded_iter::operator*: Attempt to dereference an out-of-range iterator"); + return *__current_; + } + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pointer operator->() const _NOEXCEPT { + _LIBCPP_ASSERT( + __in_bounds(__current_), "__bounded_iter::operator->: Attempt to dereference an out-of-range iterator"); + return std::__to_address(__current_); + } + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 reference operator[](difference_type __n) const _NOEXCEPT { + _LIBCPP_ASSERT( + __in_bounds(__current_ + __n), "__bounded_iter::operator[]: Attempt to index an iterator out-of-range"); + return __current_[__n]; + } + + // Arithmetic operations. + // + // These operations do not check that the resulting iterator is within the bounds, since that + // would make it impossible to create a past-the-end iterator. + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 __bounded_iter& operator++() _NOEXCEPT { + ++__current_; + return *this; + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 __bounded_iter operator++(int) _NOEXCEPT { + __bounded_iter __tmp(*this); + ++*this; + return __tmp; + } + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 __bounded_iter& operator--() _NOEXCEPT { + --__current_; + return *this; + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 __bounded_iter operator--(int) _NOEXCEPT { + __bounded_iter __tmp(*this); + --*this; + return __tmp; + } + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 __bounded_iter& operator+=(difference_type __n) _NOEXCEPT { + __current_ += __n; + return *this; + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 friend __bounded_iter + operator+(__bounded_iter const& __self, difference_type __n) _NOEXCEPT { + __bounded_iter __tmp(__self); + __tmp += __n; + return __tmp; + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 friend __bounded_iter + operator+(difference_type __n, __bounded_iter const& __self) _NOEXCEPT { + __bounded_iter __tmp(__self); + __tmp += __n; + return __tmp; + } + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 __bounded_iter& operator-=(difference_type __n) _NOEXCEPT { + __current_ -= __n; + return *this; + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 friend __bounded_iter + operator-(__bounded_iter const& __self, difference_type __n) _NOEXCEPT { + __bounded_iter __tmp(__self); + __tmp -= __n; + return __tmp; + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 friend difference_type + operator-(__bounded_iter const& __x, __bounded_iter const& __y) _NOEXCEPT { + return __x.__current_ - __y.__current_; + } + + // Comparison operations. + // + // These operations do not check whether the iterators are within their bounds. + // The valid range for each iterator is also not considered as part of the comparison, + // i.e. two iterators pointing to the same location will be considered equal even + // if they have different validity ranges. + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR friend bool + operator==(__bounded_iter const& __x, __bounded_iter const& __y) _NOEXCEPT { + return __x.__current_ == __y.__current_; + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR friend bool + operator!=(__bounded_iter const& __x, __bounded_iter const& __y) _NOEXCEPT { + return __x.__current_ != __y.__current_; + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR friend bool + operator<(__bounded_iter const& __x, __bounded_iter const& __y) _NOEXCEPT { + return __x.__current_ < __y.__current_; + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR friend bool + operator>(__bounded_iter const& __x, __bounded_iter const& __y) _NOEXCEPT { + return __x.__current_ > __y.__current_; + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR friend bool + operator<=(__bounded_iter const& __x, __bounded_iter const& __y) _NOEXCEPT { + return __x.__current_ <= __y.__current_; + } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR friend bool + operator>=(__bounded_iter const& __x, __bounded_iter const& __y) _NOEXCEPT { + return __x.__current_ >= __y.__current_; + } + +private: + // Return whether the given iterator is in the bounds of this __bounded_iter. + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR bool __in_bounds(_Iterator const& __iter) const { + return __iter >= __begin_ && __iter < __end_; + } + + template + friend struct pointer_traits; + _Iterator __current_; // current iterator + _Iterator __begin_, __end_; // valid range represented as [begin, end) +}; + +template +_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR __bounded_iter<_It> __make_bounded_iter(_It __it, _It __begin, _It __end) { + return __bounded_iter<_It>(std::move(__it), std::move(__begin), std::move(__end)); +} + +#if _LIBCPP_STD_VER <= 17 +template +struct __libcpp_is_contiguous_iterator<__bounded_iter<_Iterator> > : true_type {}; +#endif + +template +struct pointer_traits<__bounded_iter<_Iterator> > { + using pointer = __bounded_iter<_Iterator>; + using element_type = typename pointer_traits<_Iterator>::element_type; + using difference_type = typename pointer_traits<_Iterator>::difference_type; + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR static element_type* to_address(pointer __it) _NOEXCEPT { + return std::__to_address(__it.__current_); + } +}; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ITERATOR_BOUNDED_ITER_H diff --git a/third_party/libcxx/__iterator/common_iterator.h b/third_party/libcxx/__iterator/common_iterator.h new file mode 100644 index 000000000..e1d114ab9 --- /dev/null +++ b/third_party/libcxx/__iterator/common_iterator.h @@ -0,0 +1,282 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ITERATOR_COMMON_ITERATOR_H +#define _LIBCPP___ITERATOR_COMMON_ITERATOR_H + +#include <__assert> +#include <__concepts/assignable.h> +#include <__concepts/constructible.h> +#include <__concepts/convertible_to.h> +#include <__concepts/copyable.h> +#include <__concepts/derived_from.h> +#include <__concepts/equality_comparable.h> +#include <__concepts/same_as.h> +#include <__config> +#include <__iterator/concepts.h> +#include <__iterator/incrementable_traits.h> +#include <__iterator/iter_move.h> +#include <__iterator/iter_swap.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/readable_traits.h> +#include <__memory/addressof.h> +#include <__type_traits/is_pointer.h> +#include <__utility/declval.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +template +concept __can_use_postfix_proxy = + constructible_from, iter_reference_t<_Iter>> && + move_constructible>; + +template _Sent> + requires (!same_as<_Iter, _Sent> && copyable<_Iter>) +class common_iterator { + struct __proxy { + _LIBCPP_HIDE_FROM_ABI constexpr const iter_value_t<_Iter>* operator->() const noexcept { + return _VSTD::addressof(__value_); + } + iter_value_t<_Iter> __value_; + }; + + struct __postfix_proxy { + _LIBCPP_HIDE_FROM_ABI constexpr const iter_value_t<_Iter>& operator*() const noexcept { + return __value_; + } + iter_value_t<_Iter> __value_; + }; + +public: + variant<_Iter, _Sent> __hold_; + + _LIBCPP_HIDE_FROM_ABI common_iterator() requires default_initializable<_Iter> = default; + + _LIBCPP_HIDE_FROM_ABI constexpr common_iterator(_Iter __i) : __hold_(in_place_type<_Iter>, _VSTD::move(__i)) {} + _LIBCPP_HIDE_FROM_ABI constexpr common_iterator(_Sent __s) : __hold_(in_place_type<_Sent>, _VSTD::move(__s)) {} + + template + requires convertible_to && convertible_to + _LIBCPP_HIDE_FROM_ABI constexpr common_iterator(const common_iterator<_I2, _S2>& __other) + : __hold_([&]() -> variant<_Iter, _Sent> { + _LIBCPP_ASSERT(!__other.__hold_.valueless_by_exception(), "Attempted to construct from a valueless common_iterator"); + if (__other.__hold_.index() == 0) + return variant<_Iter, _Sent>{in_place_index<0>, _VSTD::__unchecked_get<0>(__other.__hold_)}; + return variant<_Iter, _Sent>{in_place_index<1>, _VSTD::__unchecked_get<1>(__other.__hold_)}; + }()) {} + + template + requires convertible_to && convertible_to && + assignable_from<_Iter&, const _I2&> && assignable_from<_Sent&, const _S2&> + _LIBCPP_HIDE_FROM_ABI common_iterator& operator=(const common_iterator<_I2, _S2>& __other) { + _LIBCPP_ASSERT(!__other.__hold_.valueless_by_exception(), "Attempted to assign from a valueless common_iterator"); + + auto __idx = __hold_.index(); + auto __other_idx = __other.__hold_.index(); + + // If they're the same index, just assign. + if (__idx == 0 && __other_idx == 0) + _VSTD::__unchecked_get<0>(__hold_) = _VSTD::__unchecked_get<0>(__other.__hold_); + else if (__idx == 1 && __other_idx == 1) + _VSTD::__unchecked_get<1>(__hold_) = _VSTD::__unchecked_get<1>(__other.__hold_); + + // Otherwise replace with the oposite element. + else if (__other_idx == 1) + __hold_.template emplace<1>(_VSTD::__unchecked_get<1>(__other.__hold_)); + else if (__other_idx == 0) + __hold_.template emplace<0>(_VSTD::__unchecked_get<0>(__other.__hold_)); + + return *this; + } + + _LIBCPP_HIDE_FROM_ABI constexpr decltype(auto) operator*() + { + _LIBCPP_ASSERT(std::holds_alternative<_Iter>(__hold_), "Attempted to dereference a non-dereferenceable common_iterator"); + return *_VSTD::__unchecked_get<_Iter>(__hold_); + } + + _LIBCPP_HIDE_FROM_ABI constexpr decltype(auto) operator*() const + requires __dereferenceable + { + _LIBCPP_ASSERT(std::holds_alternative<_Iter>(__hold_), "Attempted to dereference a non-dereferenceable common_iterator"); + return *_VSTD::__unchecked_get<_Iter>(__hold_); + } + + template + _LIBCPP_HIDE_FROM_ABI decltype(auto) operator->() const + requires indirectly_readable && + (requires(const _I2& __i) { __i.operator->(); } || + is_reference_v> || + constructible_from, iter_reference_t<_I2>>) + { + _LIBCPP_ASSERT(std::holds_alternative<_Iter>(__hold_), "Attempted to dereference a non-dereferenceable common_iterator"); + if constexpr (is_pointer_v<_Iter> || requires(const _Iter& __i) { __i.operator->(); }) { + return _VSTD::__unchecked_get<_Iter>(__hold_); + } else if constexpr (is_reference_v>) { + auto&& __tmp = *_VSTD::__unchecked_get<_Iter>(__hold_); + return _VSTD::addressof(__tmp); + } else { + return __proxy{*_VSTD::__unchecked_get<_Iter>(__hold_)}; + } + } + + _LIBCPP_HIDE_FROM_ABI common_iterator& operator++() { + _LIBCPP_ASSERT(std::holds_alternative<_Iter>(__hold_), "Attempted to increment a non-dereferenceable common_iterator"); + ++_VSTD::__unchecked_get<_Iter>(__hold_); return *this; + } + + _LIBCPP_HIDE_FROM_ABI decltype(auto) operator++(int) { + _LIBCPP_ASSERT(std::holds_alternative<_Iter>(__hold_), "Attempted to increment a non-dereferenceable common_iterator"); + if constexpr (forward_iterator<_Iter>) { + auto __tmp = *this; + ++*this; + return __tmp; + } else if constexpr (requires (_Iter& __i) { { *__i++ } -> __can_reference; } || + !__can_use_postfix_proxy<_Iter>) { + return _VSTD::__unchecked_get<_Iter>(__hold_)++; + } else { + auto __p = __postfix_proxy{**this}; + ++*this; + return __p; + } + } + + template _S2> + requires sentinel_for<_Sent, _I2> + _LIBCPP_HIDE_FROM_ABI + friend constexpr bool operator==(const common_iterator& __x, const common_iterator<_I2, _S2>& __y) { + _LIBCPP_ASSERT(!__x.__hold_.valueless_by_exception(), "Attempted to compare a valueless common_iterator"); + _LIBCPP_ASSERT(!__y.__hold_.valueless_by_exception(), "Attempted to compare a valueless common_iterator"); + + auto __x_index = __x.__hold_.index(); + auto __y_index = __y.__hold_.index(); + + if (__x_index == __y_index) + return true; + + if (__x_index == 0) + return _VSTD::__unchecked_get<_Iter>(__x.__hold_) == _VSTD::__unchecked_get<_S2>(__y.__hold_); + + return _VSTD::__unchecked_get<_Sent>(__x.__hold_) == _VSTD::__unchecked_get<_I2>(__y.__hold_); + } + + template _S2> + requires sentinel_for<_Sent, _I2> && equality_comparable_with<_Iter, _I2> + _LIBCPP_HIDE_FROM_ABI + friend constexpr bool operator==(const common_iterator& __x, const common_iterator<_I2, _S2>& __y) { + _LIBCPP_ASSERT(!__x.__hold_.valueless_by_exception(), "Attempted to compare a valueless common_iterator"); + _LIBCPP_ASSERT(!__y.__hold_.valueless_by_exception(), "Attempted to compare a valueless common_iterator"); + + auto __x_index = __x.__hold_.index(); + auto __y_index = __y.__hold_.index(); + + if (__x_index == 1 && __y_index == 1) + return true; + + if (__x_index == 0 && __y_index == 0) + return _VSTD::__unchecked_get<_Iter>(__x.__hold_) == _VSTD::__unchecked_get<_I2>(__y.__hold_); + + if (__x_index == 0) + return _VSTD::__unchecked_get<_Iter>(__x.__hold_) == _VSTD::__unchecked_get<_S2>(__y.__hold_); + + return _VSTD::__unchecked_get<_Sent>(__x.__hold_) == _VSTD::__unchecked_get<_I2>(__y.__hold_); + } + + template _I2, sized_sentinel_for<_Iter> _S2> + requires sized_sentinel_for<_Sent, _I2> + _LIBCPP_HIDE_FROM_ABI + friend constexpr iter_difference_t<_I2> operator-(const common_iterator& __x, const common_iterator<_I2, _S2>& __y) { + _LIBCPP_ASSERT(!__x.__hold_.valueless_by_exception(), "Attempted to subtract from a valueless common_iterator"); + _LIBCPP_ASSERT(!__y.__hold_.valueless_by_exception(), "Attempted to subtract a valueless common_iterator"); + + auto __x_index = __x.__hold_.index(); + auto __y_index = __y.__hold_.index(); + + if (__x_index == 1 && __y_index == 1) + return 0; + + if (__x_index == 0 && __y_index == 0) + return _VSTD::__unchecked_get<_Iter>(__x.__hold_) - _VSTD::__unchecked_get<_I2>(__y.__hold_); + + if (__x_index == 0) + return _VSTD::__unchecked_get<_Iter>(__x.__hold_) - _VSTD::__unchecked_get<_S2>(__y.__hold_); + + return _VSTD::__unchecked_get<_Sent>(__x.__hold_) - _VSTD::__unchecked_get<_I2>(__y.__hold_); + } + + _LIBCPP_HIDE_FROM_ABI friend constexpr iter_rvalue_reference_t<_Iter> iter_move(const common_iterator& __i) + noexcept(noexcept(ranges::iter_move(std::declval()))) + requires input_iterator<_Iter> + { + _LIBCPP_ASSERT(std::holds_alternative<_Iter>(__i.__hold_), "Attempted to iter_move a non-dereferenceable common_iterator"); + return ranges::iter_move( _VSTD::__unchecked_get<_Iter>(__i.__hold_)); + } + + template _I2, class _S2> + _LIBCPP_HIDE_FROM_ABI friend constexpr void iter_swap(const common_iterator& __x, const common_iterator<_I2, _S2>& __y) + noexcept(noexcept(ranges::iter_swap(std::declval(), std::declval()))) + { + _LIBCPP_ASSERT(std::holds_alternative<_Iter>(__x.__hold_), "Attempted to iter_swap a non-dereferenceable common_iterator"); + _LIBCPP_ASSERT(std::holds_alternative<_I2>(__y.__hold_), "Attempted to iter_swap a non-dereferenceable common_iterator"); + return ranges::iter_swap(_VSTD::__unchecked_get<_Iter>(__x.__hold_), _VSTD::__unchecked_get<_I2>(__y.__hold_)); + } +}; + +template +struct incrementable_traits> { + using difference_type = iter_difference_t<_Iter>; +}; + +template +concept __denotes_forward_iter = + requires { typename iterator_traits<_Iter>::iterator_category; } && + derived_from::iterator_category, forward_iterator_tag>; + +template +concept __common_iter_has_ptr_op = requires(const common_iterator<_Iter, _Sent>& __a) { + __a.operator->(); +}; + +template +struct __arrow_type_or_void { + using type = void; +}; + +template + requires __common_iter_has_ptr_op<_Iter, _Sent> +struct __arrow_type_or_void<_Iter, _Sent> { + using type = decltype(std::declval&>().operator->()); +}; + +template +struct iterator_traits> { + using iterator_concept = _If, + forward_iterator_tag, + input_iterator_tag>; + using iterator_category = _If<__denotes_forward_iter<_Iter>, + forward_iterator_tag, + input_iterator_tag>; + using pointer = typename __arrow_type_or_void<_Iter, _Sent>::type; + using value_type = iter_value_t<_Iter>; + using difference_type = iter_difference_t<_Iter>; + using reference = iter_reference_t<_Iter>; +}; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ITERATOR_COMMON_ITERATOR_H diff --git a/third_party/libcxx/__iterator/concepts.h b/third_party/libcxx/__iterator/concepts.h new file mode 100644 index 000000000..dd9e8d6ac --- /dev/null +++ b/third_party/libcxx/__iterator/concepts.h @@ -0,0 +1,300 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ITERATOR_CONCEPTS_H +#define _LIBCPP___ITERATOR_CONCEPTS_H + +#include <__concepts/arithmetic.h> +#include <__concepts/assignable.h> +#include <__concepts/common_reference_with.h> +#include <__concepts/constructible.h> +#include <__concepts/copyable.h> +#include <__concepts/derived_from.h> +#include <__concepts/equality_comparable.h> +#include <__concepts/invocable.h> +#include <__concepts/movable.h> +#include <__concepts/predicate.h> +#include <__concepts/regular.h> +#include <__concepts/relation.h> +#include <__concepts/same_as.h> +#include <__concepts/semiregular.h> +#include <__concepts/totally_ordered.h> +#include <__config> +#include <__functional/invoke.h> +#include <__iterator/incrementable_traits.h> +#include <__iterator/iter_move.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/readable_traits.h> +#include <__memory/pointer_traits.h> +#include <__type_traits/add_pointer.h> +#include <__type_traits/common_reference.h> +#include <__type_traits/is_pointer.h> +#include <__type_traits/is_reference.h> +#include <__type_traits/remove_cv.h> +#include <__type_traits/remove_cvref.h> +#include <__utility/forward.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +// [iterator.concept.readable] +template +concept __indirectly_readable_impl = + requires(const _In __i) { + typename iter_value_t<_In>; + typename iter_reference_t<_In>; + typename iter_rvalue_reference_t<_In>; + { *__i } -> same_as>; + { ranges::iter_move(__i) } -> same_as>; + } && + common_reference_with&&, iter_value_t<_In>&> && + common_reference_with&&, iter_rvalue_reference_t<_In>&&> && + common_reference_with&&, const iter_value_t<_In>&>; + +template +concept indirectly_readable = __indirectly_readable_impl>; + +template +using iter_common_reference_t = common_reference_t, iter_value_t<_Tp>&>; + +// [iterator.concept.writable] +template +concept indirectly_writable = + requires(_Out&& __o, _Tp&& __t) { + *__o = _VSTD::forward<_Tp>(__t); // not required to be equality-preserving + *_VSTD::forward<_Out>(__o) = _VSTD::forward<_Tp>(__t); // not required to be equality-preserving + const_cast&&>(*__o) = _VSTD::forward<_Tp>(__t); // not required to be equality-preserving + const_cast&&>(*_VSTD::forward<_Out>(__o)) = _VSTD::forward<_Tp>(__t); // not required to be equality-preserving + }; + +// [iterator.concept.winc] +template +concept __integer_like = integral<_Tp> && !same_as<_Tp, bool>; + +template +concept __signed_integer_like = signed_integral<_Tp>; + +template +concept weakly_incrementable = + // TODO: remove this once the clang bug is fixed (bugs.llvm.org/PR48173). + !same_as<_Ip, bool> && // Currently, clang does not handle bool correctly. + movable<_Ip> && + requires(_Ip __i) { + typename iter_difference_t<_Ip>; + requires __signed_integer_like>; + { ++__i } -> same_as<_Ip&>; // not required to be equality-preserving + __i++; // not required to be equality-preserving + }; + +// [iterator.concept.inc] +template +concept incrementable = + regular<_Ip> && + weakly_incrementable<_Ip> && + requires(_Ip __i) { + { __i++ } -> same_as<_Ip>; + }; + +// [iterator.concept.iterator] +template +concept input_or_output_iterator = + requires(_Ip __i) { + { *__i } -> __can_reference; + } && + weakly_incrementable<_Ip>; + +// [iterator.concept.sentinel] +template +concept sentinel_for = + semiregular<_Sp> && + input_or_output_iterator<_Ip> && + __weakly_equality_comparable_with<_Sp, _Ip>; + +template +inline constexpr bool disable_sized_sentinel_for = false; + +template +concept sized_sentinel_for = + sentinel_for<_Sp, _Ip> && + !disable_sized_sentinel_for, remove_cv_t<_Ip>> && + requires(const _Ip& __i, const _Sp& __s) { + { __s - __i } -> same_as>; + { __i - __s } -> same_as>; + }; + +// [iterator.concept.input] +template +concept input_iterator = + input_or_output_iterator<_Ip> && + indirectly_readable<_Ip> && + requires { typename _ITER_CONCEPT<_Ip>; } && + derived_from<_ITER_CONCEPT<_Ip>, input_iterator_tag>; + +// [iterator.concept.output] +template +concept output_iterator = + input_or_output_iterator<_Ip> && + indirectly_writable<_Ip, _Tp> && + requires (_Ip __it, _Tp&& __t) { + *__it++ = _VSTD::forward<_Tp>(__t); // not required to be equality-preserving + }; + +// [iterator.concept.forward] +template +concept forward_iterator = + input_iterator<_Ip> && + derived_from<_ITER_CONCEPT<_Ip>, forward_iterator_tag> && + incrementable<_Ip> && + sentinel_for<_Ip, _Ip>; + +// [iterator.concept.bidir] +template +concept bidirectional_iterator = + forward_iterator<_Ip> && + derived_from<_ITER_CONCEPT<_Ip>, bidirectional_iterator_tag> && + requires(_Ip __i) { + { --__i } -> same_as<_Ip&>; + { __i-- } -> same_as<_Ip>; + }; + +template +concept random_access_iterator = + bidirectional_iterator<_Ip> && + derived_from<_ITER_CONCEPT<_Ip>, random_access_iterator_tag> && + totally_ordered<_Ip> && + sized_sentinel_for<_Ip, _Ip> && + requires(_Ip __i, const _Ip __j, const iter_difference_t<_Ip> __n) { + { __i += __n } -> same_as<_Ip&>; + { __j + __n } -> same_as<_Ip>; + { __n + __j } -> same_as<_Ip>; + { __i -= __n } -> same_as<_Ip&>; + { __j - __n } -> same_as<_Ip>; + { __j[__n] } -> same_as>; + }; + +template +concept contiguous_iterator = + random_access_iterator<_Ip> && + derived_from<_ITER_CONCEPT<_Ip>, contiguous_iterator_tag> && + is_lvalue_reference_v> && + same_as, remove_cvref_t>> && + requires(const _Ip& __i) { + { _VSTD::to_address(__i) } -> same_as>>; + }; + +template +concept __has_arrow = input_iterator<_Ip> && (is_pointer_v<_Ip> || requires(_Ip __i) { __i.operator->(); }); + +// [indirectcallable.indirectinvocable] +template +concept indirectly_unary_invocable = + indirectly_readable<_It> && + copy_constructible<_Fp> && + invocable<_Fp&, iter_value_t<_It>&> && + invocable<_Fp&, iter_reference_t<_It>> && + invocable<_Fp&, iter_common_reference_t<_It>> && + common_reference_with< + invoke_result_t<_Fp&, iter_value_t<_It>&>, + invoke_result_t<_Fp&, iter_reference_t<_It>>>; + +template +concept indirectly_regular_unary_invocable = + indirectly_readable<_It> && + copy_constructible<_Fp> && + regular_invocable<_Fp&, iter_value_t<_It>&> && + regular_invocable<_Fp&, iter_reference_t<_It>> && + regular_invocable<_Fp&, iter_common_reference_t<_It>> && + common_reference_with< + invoke_result_t<_Fp&, iter_value_t<_It>&>, + invoke_result_t<_Fp&, iter_reference_t<_It>>>; + +template +concept indirect_unary_predicate = + indirectly_readable<_It> && + copy_constructible<_Fp> && + predicate<_Fp&, iter_value_t<_It>&> && + predicate<_Fp&, iter_reference_t<_It>> && + predicate<_Fp&, iter_common_reference_t<_It>>; + +template +concept indirect_binary_predicate = + indirectly_readable<_It1> && indirectly_readable<_It2> && + copy_constructible<_Fp> && + predicate<_Fp&, iter_value_t<_It1>&, iter_value_t<_It2>&> && + predicate<_Fp&, iter_value_t<_It1>&, iter_reference_t<_It2>> && + predicate<_Fp&, iter_reference_t<_It1>, iter_value_t<_It2>&> && + predicate<_Fp&, iter_reference_t<_It1>, iter_reference_t<_It2>> && + predicate<_Fp&, iter_common_reference_t<_It1>, iter_common_reference_t<_It2>>; + +template +concept indirect_equivalence_relation = + indirectly_readable<_It1> && indirectly_readable<_It2> && + copy_constructible<_Fp> && + equivalence_relation<_Fp&, iter_value_t<_It1>&, iter_value_t<_It2>&> && + equivalence_relation<_Fp&, iter_value_t<_It1>&, iter_reference_t<_It2>> && + equivalence_relation<_Fp&, iter_reference_t<_It1>, iter_value_t<_It2>&> && + equivalence_relation<_Fp&, iter_reference_t<_It1>, iter_reference_t<_It2>> && + equivalence_relation<_Fp&, iter_common_reference_t<_It1>, iter_common_reference_t<_It2>>; + +template +concept indirect_strict_weak_order = + indirectly_readable<_It1> && indirectly_readable<_It2> && + copy_constructible<_Fp> && + strict_weak_order<_Fp&, iter_value_t<_It1>&, iter_value_t<_It2>&> && + strict_weak_order<_Fp&, iter_value_t<_It1>&, iter_reference_t<_It2>> && + strict_weak_order<_Fp&, iter_reference_t<_It1>, iter_value_t<_It2>&> && + strict_weak_order<_Fp&, iter_reference_t<_It1>, iter_reference_t<_It2>> && + strict_weak_order<_Fp&, iter_common_reference_t<_It1>, iter_common_reference_t<_It2>>; + +template + requires (indirectly_readable<_Its> && ...) && invocable<_Fp, iter_reference_t<_Its>...> +using indirect_result_t = invoke_result_t<_Fp, iter_reference_t<_Its>...>; + +template +concept indirectly_movable = + indirectly_readable<_In> && + indirectly_writable<_Out, iter_rvalue_reference_t<_In>>; + +template +concept indirectly_movable_storable = + indirectly_movable<_In, _Out> && + indirectly_writable<_Out, iter_value_t<_In>> && + movable> && + constructible_from, iter_rvalue_reference_t<_In>> && + assignable_from&, iter_rvalue_reference_t<_In>>; + +template +concept indirectly_copyable = + indirectly_readable<_In> && + indirectly_writable<_Out, iter_reference_t<_In>>; + +template +concept indirectly_copyable_storable = + indirectly_copyable<_In, _Out> && + indirectly_writable<_Out, iter_value_t<_In>&> && + indirectly_writable<_Out, const iter_value_t<_In>&> && + indirectly_writable<_Out, iter_value_t<_In>&&> && + indirectly_writable<_Out, const iter_value_t<_In>&&> && + copyable> && + constructible_from, iter_reference_t<_In>> && + assignable_from&, iter_reference_t<_In>>; + +// Note: indirectly_swappable is located in iter_swap.h to prevent a dependency cycle +// (both iter_swap and indirectly_swappable require indirectly_readable). + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ITERATOR_CONCEPTS_H diff --git a/third_party/libcxx/__iterator/counted_iterator.h b/third_party/libcxx/__iterator/counted_iterator.h new file mode 100644 index 000000000..ad69a5c90 --- /dev/null +++ b/third_party/libcxx/__iterator/counted_iterator.h @@ -0,0 +1,310 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ITERATOR_COUNTED_ITERATOR_H +#define _LIBCPP___ITERATOR_COUNTED_ITERATOR_H + +#include <__assert> +#include <__concepts/assignable.h> +#include <__concepts/common_with.h> +#include <__concepts/constructible.h> +#include <__concepts/convertible_to.h> +#include <__concepts/same_as.h> +#include <__config> +#include <__iterator/concepts.h> +#include <__iterator/default_sentinel.h> +#include <__iterator/incrementable_traits.h> +#include <__iterator/iter_move.h> +#include <__iterator/iter_swap.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/readable_traits.h> +#include <__memory/pointer_traits.h> +#include <__type_traits/add_pointer.h> +#include <__type_traits/conditional.h> +#include <__utility/move.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +template +struct __counted_iterator_concept {}; + +template + requires requires { typename _Iter::iterator_concept; } +struct __counted_iterator_concept<_Iter> { + using iterator_concept = typename _Iter::iterator_concept; +}; + +template +struct __counted_iterator_category {}; + +template + requires requires { typename _Iter::iterator_category; } +struct __counted_iterator_category<_Iter> { + using iterator_category = typename _Iter::iterator_category; +}; + +template +struct __counted_iterator_value_type {}; + +template +struct __counted_iterator_value_type<_Iter> { + using value_type = iter_value_t<_Iter>; +}; + +template +class counted_iterator + : public __counted_iterator_concept<_Iter> + , public __counted_iterator_category<_Iter> + , public __counted_iterator_value_type<_Iter> +{ +public: + _LIBCPP_NO_UNIQUE_ADDRESS _Iter __current_ = _Iter(); + iter_difference_t<_Iter> __count_ = 0; + + using iterator_type = _Iter; + using difference_type = iter_difference_t<_Iter>; + + _LIBCPP_HIDE_FROM_ABI + constexpr counted_iterator() requires default_initializable<_Iter> = default; + + _LIBCPP_HIDE_FROM_ABI + constexpr counted_iterator(_Iter __iter, iter_difference_t<_Iter> __n) + : __current_(_VSTD::move(__iter)), __count_(__n) { + _LIBCPP_ASSERT(__n >= 0, "__n must not be negative."); + } + + template + requires convertible_to + _LIBCPP_HIDE_FROM_ABI + constexpr counted_iterator(const counted_iterator<_I2>& __other) + : __current_(__other.__current_), __count_(__other.__count_) {} + + template + requires assignable_from<_Iter&, const _I2&> + _LIBCPP_HIDE_FROM_ABI + constexpr counted_iterator& operator=(const counted_iterator<_I2>& __other) { + __current_ = __other.__current_; + __count_ = __other.__count_; + return *this; + } + + _LIBCPP_HIDE_FROM_ABI + constexpr const _Iter& base() const& noexcept { return __current_; } + + _LIBCPP_HIDE_FROM_ABI + constexpr _Iter base() && { return _VSTD::move(__current_); } + + _LIBCPP_HIDE_FROM_ABI + constexpr iter_difference_t<_Iter> count() const noexcept { return __count_; } + + _LIBCPP_HIDE_FROM_ABI + constexpr decltype(auto) operator*() { + _LIBCPP_ASSERT(__count_ > 0, "Iterator is equal to or past end."); + return *__current_; + } + + _LIBCPP_HIDE_FROM_ABI + constexpr decltype(auto) operator*() const + requires __dereferenceable + { + _LIBCPP_ASSERT(__count_ > 0, "Iterator is equal to or past end."); + return *__current_; + } + + _LIBCPP_HIDE_FROM_ABI + constexpr auto operator->() const noexcept + requires contiguous_iterator<_Iter> + { + return _VSTD::to_address(__current_); + } + + _LIBCPP_HIDE_FROM_ABI + constexpr counted_iterator& operator++() { + _LIBCPP_ASSERT(__count_ > 0, "Iterator already at or past end."); + ++__current_; + --__count_; + return *this; + } + + _LIBCPP_HIDE_FROM_ABI + decltype(auto) operator++(int) { + _LIBCPP_ASSERT(__count_ > 0, "Iterator already at or past end."); + --__count_; +#ifndef _LIBCPP_HAS_NO_EXCEPTIONS + try { return __current_++; } + catch(...) { ++__count_; throw; } +#else + return __current_++; +#endif // _LIBCPP_HAS_NO_EXCEPTIONS + } + + _LIBCPP_HIDE_FROM_ABI + constexpr counted_iterator operator++(int) + requires forward_iterator<_Iter> + { + _LIBCPP_ASSERT(__count_ > 0, "Iterator already at or past end."); + counted_iterator __tmp = *this; + ++*this; + return __tmp; + } + + _LIBCPP_HIDE_FROM_ABI + constexpr counted_iterator& operator--() + requires bidirectional_iterator<_Iter> + { + --__current_; + ++__count_; + return *this; + } + + _LIBCPP_HIDE_FROM_ABI + constexpr counted_iterator operator--(int) + requires bidirectional_iterator<_Iter> + { + counted_iterator __tmp = *this; + --*this; + return __tmp; + } + + _LIBCPP_HIDE_FROM_ABI + constexpr counted_iterator operator+(iter_difference_t<_Iter> __n) const + requires random_access_iterator<_Iter> + { + return counted_iterator(__current_ + __n, __count_ - __n); + } + + _LIBCPP_HIDE_FROM_ABI + friend constexpr counted_iterator operator+( + iter_difference_t<_Iter> __n, const counted_iterator& __x) + requires random_access_iterator<_Iter> + { + return __x + __n; + } + + _LIBCPP_HIDE_FROM_ABI + constexpr counted_iterator& operator+=(iter_difference_t<_Iter> __n) + requires random_access_iterator<_Iter> + { + _LIBCPP_ASSERT(__n <= __count_, "Cannot advance iterator past end."); + __current_ += __n; + __count_ -= __n; + return *this; + } + + _LIBCPP_HIDE_FROM_ABI + constexpr counted_iterator operator-(iter_difference_t<_Iter> __n) const + requires random_access_iterator<_Iter> + { + return counted_iterator(__current_ - __n, __count_ + __n); + } + + template _I2> + _LIBCPP_HIDE_FROM_ABI + friend constexpr iter_difference_t<_I2> operator-( + const counted_iterator& __lhs, const counted_iterator<_I2>& __rhs) + { + return __rhs.__count_ - __lhs.__count_; + } + + _LIBCPP_HIDE_FROM_ABI + friend constexpr iter_difference_t<_Iter> operator-( + const counted_iterator& __lhs, default_sentinel_t) + { + return -__lhs.__count_; + } + + _LIBCPP_HIDE_FROM_ABI + friend constexpr iter_difference_t<_Iter> operator-( + default_sentinel_t, const counted_iterator& __rhs) + { + return __rhs.__count_; + } + + _LIBCPP_HIDE_FROM_ABI + constexpr counted_iterator& operator-=(iter_difference_t<_Iter> __n) + requires random_access_iterator<_Iter> + { + _LIBCPP_ASSERT(-__n <= __count_, "Attempt to subtract too large of a size: " + "counted_iterator would be decremented before the " + "first element of its range."); + __current_ -= __n; + __count_ += __n; + return *this; + } + + _LIBCPP_HIDE_FROM_ABI + constexpr decltype(auto) operator[](iter_difference_t<_Iter> __n) const + requires random_access_iterator<_Iter> + { + _LIBCPP_ASSERT(__n < __count_, "Subscript argument must be less than size."); + return __current_[__n]; + } + + template _I2> + _LIBCPP_HIDE_FROM_ABI + friend constexpr bool operator==( + const counted_iterator& __lhs, const counted_iterator<_I2>& __rhs) + { + return __lhs.__count_ == __rhs.__count_; + } + + _LIBCPP_HIDE_FROM_ABI + friend constexpr bool operator==( + const counted_iterator& __lhs, default_sentinel_t) + { + return __lhs.__count_ == 0; + } + + template _I2> + _LIBCPP_HIDE_FROM_ABI friend constexpr strong_ordering operator<=>( + const counted_iterator& __lhs, const counted_iterator<_I2>& __rhs) + { + return __rhs.__count_ <=> __lhs.__count_; + } + + _LIBCPP_HIDE_FROM_ABI + friend constexpr iter_rvalue_reference_t<_Iter> iter_move(const counted_iterator& __i) + noexcept(noexcept(ranges::iter_move(__i.__current_))) + requires input_iterator<_Iter> + { + _LIBCPP_ASSERT(__i.__count_ > 0, "Iterator must not be past end of range."); + return ranges::iter_move(__i.__current_); + } + + template _I2> + _LIBCPP_HIDE_FROM_ABI + friend constexpr void iter_swap(const counted_iterator& __x, const counted_iterator<_I2>& __y) + noexcept(noexcept(ranges::iter_swap(__x.__current_, __y.__current_))) + { + _LIBCPP_ASSERT(__x.__count_ > 0 && __y.__count_ > 0, + "Iterators must not be past end of range."); + return ranges::iter_swap(__x.__current_, __y.__current_); + } +}; +_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(counted_iterator); + +template + requires same_as<_ITER_TRAITS<_Iter>, iterator_traits<_Iter>> +struct iterator_traits> : iterator_traits<_Iter> { + using pointer = conditional_t, + add_pointer_t>, void>; +}; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ITERATOR_COUNTED_ITERATOR_H diff --git a/third_party/libcxx/__iterator/data.h b/third_party/libcxx/__iterator/data.h new file mode 100644 index 000000000..f10680744 --- /dev/null +++ b/third_party/libcxx/__iterator/data.h @@ -0,0 +1,51 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ITERATOR_DATA_H +#define _LIBCPP___ITERATOR_DATA_H + +#include <__config> +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 17 + +template constexpr +_LIBCPP_INLINE_VISIBILITY +auto data(_Cont& __c) +_NOEXCEPT_(noexcept(__c.data())) +-> decltype (__c.data()) +{ return __c.data(); } + +template constexpr +_LIBCPP_INLINE_VISIBILITY +auto data(const _Cont& __c) +_NOEXCEPT_(noexcept(__c.data())) +-> decltype (__c.data()) +{ return __c.data(); } + +template +_LIBCPP_INLINE_VISIBILITY +constexpr _Tp* data(_Tp (&__array)[_Sz]) noexcept { return __array; } + +template +_LIBCPP_INLINE_VISIBILITY +constexpr const _Ep* data(initializer_list<_Ep> __il) noexcept { return __il.begin(); } + +#endif + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ITERATOR_DATA_H diff --git a/third_party/libcxx/__iterator/default_sentinel.h b/third_party/libcxx/__iterator/default_sentinel.h new file mode 100644 index 000000000..d5fb2b699 --- /dev/null +++ b/third_party/libcxx/__iterator/default_sentinel.h @@ -0,0 +1,30 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ITERATOR_DEFAULT_SENTINEL_H +#define _LIBCPP___ITERATOR_DEFAULT_SENTINEL_H + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +struct default_sentinel_t { }; +inline constexpr default_sentinel_t default_sentinel{}; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ITERATOR_DEFAULT_SENTINEL_H diff --git a/third_party/libcxx/__iterator/distance.h b/third_party/libcxx/__iterator/distance.h new file mode 100644 index 000000000..ebe547337 --- /dev/null +++ b/third_party/libcxx/__iterator/distance.h @@ -0,0 +1,108 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ITERATOR_DISTANCE_H +#define _LIBCPP___ITERATOR_DISTANCE_H + +#include <__config> +#include <__iterator/concepts.h> +#include <__iterator/incrementable_traits.h> +#include <__iterator/iterator_traits.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/size.h> +#include <__type_traits/decay.h> +#include <__type_traits/remove_cvref.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 +typename iterator_traits<_InputIter>::difference_type +__distance(_InputIter __first, _InputIter __last, input_iterator_tag) +{ + typename iterator_traits<_InputIter>::difference_type __r(0); + for (; __first != __last; ++__first) + ++__r; + return __r; +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 +typename iterator_traits<_RandIter>::difference_type +__distance(_RandIter __first, _RandIter __last, random_access_iterator_tag) +{ + return __last - __first; +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 +typename iterator_traits<_InputIter>::difference_type +distance(_InputIter __first, _InputIter __last) +{ + return _VSTD::__distance(__first, __last, typename iterator_traits<_InputIter>::iterator_category()); +} + +#if _LIBCPP_STD_VER >= 20 + +// [range.iter.op.distance] + +namespace ranges { +namespace __distance { + +struct __fn { + template _Sp> + requires (!sized_sentinel_for<_Sp, _Ip>) + _LIBCPP_HIDE_FROM_ABI + constexpr iter_difference_t<_Ip> operator()(_Ip __first, _Sp __last) const { + iter_difference_t<_Ip> __n = 0; + while (__first != __last) { + ++__first; + ++__n; + } + return __n; + } + + template> _Sp> + _LIBCPP_HIDE_FROM_ABI + constexpr iter_difference_t<_Ip> operator()(_Ip&& __first, _Sp __last) const { + if constexpr (sized_sentinel_for<_Sp, __remove_cvref_t<_Ip>>) { + return __last - __first; + } else { + return __last - decay_t<_Ip>(__first); + } + } + + template + _LIBCPP_HIDE_FROM_ABI + constexpr range_difference_t<_Rp> operator()(_Rp&& __r) const { + if constexpr (sized_range<_Rp>) { + return static_cast>(ranges::size(__r)); + } else { + return operator()(ranges::begin(__r), ranges::end(__r)); + } + } +}; + +} // namespace __distance + +inline namespace __cpo { + inline constexpr auto distance = __distance::__fn{}; +} // namespace __cpo +} // namespace ranges + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ITERATOR_DISTANCE_H diff --git a/third_party/libcxx/__iterator/empty.h b/third_party/libcxx/__iterator/empty.h new file mode 100644 index 000000000..2cd4c7abf --- /dev/null +++ b/third_party/libcxx/__iterator/empty.h @@ -0,0 +1,44 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ITERATOR_EMPTY_H +#define _LIBCPP___ITERATOR_EMPTY_H + +#include <__config> +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 17 + +template +_LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_INLINE_VISIBILITY +constexpr auto empty(const _Cont& __c) +_NOEXCEPT_(noexcept(__c.empty())) +-> decltype (__c.empty()) +{ return __c.empty(); } + +template +_LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_INLINE_VISIBILITY +constexpr bool empty(const _Tp (&)[_Sz]) noexcept { return false; } + +template +_LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_INLINE_VISIBILITY +constexpr bool empty(initializer_list<_Ep> __il) noexcept { return __il.size() == 0; } + +#endif // _LIBCPP_STD_VER >= 17 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ITERATOR_EMPTY_H diff --git a/third_party/libcxx/__iterator/erase_if_container.h b/third_party/libcxx/__iterator/erase_if_container.h new file mode 100644 index 000000000..d7c71a947 --- /dev/null +++ b/third_party/libcxx/__iterator/erase_if_container.h @@ -0,0 +1,40 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ITERATOR_ERASE_IF_CONTAINER_H +#define _LIBCPP___ITERATOR_ERASE_IF_CONTAINER_H + +#include <__config> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +_LIBCPP_HIDE_FROM_ABI +typename _Container::size_type +__libcpp_erase_if_container(_Container& __c, _Predicate& __pred) { + typename _Container::size_type __old_size = __c.size(); + + const typename _Container::iterator __last = __c.end(); + for (typename _Container::iterator __iter = __c.begin(); __iter != __last;) { + if (__pred(*__iter)) + __iter = __c.erase(__iter); + else + ++__iter; + } + + return __old_size - __c.size(); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ITERATOR_ERASE_IF_CONTAINER_H diff --git a/third_party/libcxx/__iterator/front_insert_iterator.h b/third_party/libcxx/__iterator/front_insert_iterator.h new file mode 100644 index 000000000..1ad5348b2 --- /dev/null +++ b/third_party/libcxx/__iterator/front_insert_iterator.h @@ -0,0 +1,71 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ITERATOR_FRONT_INSERT_ITERATOR_H +#define _LIBCPP___ITERATOR_FRONT_INSERT_ITERATOR_H + +#include <__config> +#include <__iterator/iterator.h> +#include <__iterator/iterator_traits.h> +#include <__memory/addressof.h> +#include <__utility/move.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +_LIBCPP_SUPPRESS_DEPRECATED_PUSH +template +class _LIBCPP_TEMPLATE_VIS front_insert_iterator +#if _LIBCPP_STD_VER <= 14 || !defined(_LIBCPP_ABI_NO_ITERATOR_BASES) + : public iterator +#endif +{ +_LIBCPP_SUPPRESS_DEPRECATED_POP +protected: + _Container* container; +public: + typedef output_iterator_tag iterator_category; + typedef void value_type; +#if _LIBCPP_STD_VER >= 20 + typedef ptrdiff_t difference_type; +#else + typedef void difference_type; +#endif + typedef void pointer; + typedef void reference; + typedef _Container container_type; + + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 explicit front_insert_iterator(_Container& __x) : container(_VSTD::addressof(__x)) {} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 front_insert_iterator& operator=(const typename _Container::value_type& __value) + {container->push_front(__value); return *this;} +#ifndef _LIBCPP_CXX03_LANG + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 front_insert_iterator& operator=(typename _Container::value_type&& __value) + {container->push_front(_VSTD::move(__value)); return *this;} +#endif // _LIBCPP_CXX03_LANG + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 front_insert_iterator& operator*() {return *this;} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 front_insert_iterator& operator++() {return *this;} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 front_insert_iterator operator++(int) {return *this;} +}; +_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(front_insert_iterator); + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +front_insert_iterator<_Container> +front_inserter(_Container& __x) +{ + return front_insert_iterator<_Container>(__x); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ITERATOR_FRONT_INSERT_ITERATOR_H diff --git a/third_party/libcxx/__iterator/incrementable_traits.h b/third_party/libcxx/__iterator/incrementable_traits.h new file mode 100644 index 000000000..604e9580e --- /dev/null +++ b/third_party/libcxx/__iterator/incrementable_traits.h @@ -0,0 +1,78 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ITERATOR_INCREMENTABLE_TRAITS_H +#define _LIBCPP___ITERATOR_INCREMENTABLE_TRAITS_H + +#include <__concepts/arithmetic.h> +#include <__config> +#include <__type_traits/conditional.h> +#include <__type_traits/is_object.h> +#include <__type_traits/is_primary_template.h> +#include <__type_traits/make_signed.h> +#include <__type_traits/remove_cvref.h> +#include <__utility/declval.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +// [incrementable.traits] +template struct incrementable_traits {}; + +template +requires is_object_v<_Tp> +struct incrementable_traits<_Tp*> { + using difference_type = ptrdiff_t; +}; + +template +struct incrementable_traits : incrementable_traits<_Ip> {}; + +template +concept __has_member_difference_type = requires { typename _Tp::difference_type; }; + +template<__has_member_difference_type _Tp> +struct incrementable_traits<_Tp> { + using difference_type = typename _Tp::difference_type; +}; + +template +concept __has_integral_minus = + requires(const _Tp& __x, const _Tp& __y) { + { __x - __y } -> integral; + }; + +template<__has_integral_minus _Tp> +requires (!__has_member_difference_type<_Tp>) +struct incrementable_traits<_Tp> { + using difference_type = make_signed_t() - std::declval<_Tp>())>; +}; + +template +struct iterator_traits; + +// Let `RI` be `remove_cvref_t`. The type `iter_difference_t` denotes +// `incrementable_traits::difference_type` if `iterator_traits` names a specialization +// generated from the primary template, and `iterator_traits::difference_type` otherwise. +template +using iter_difference_t = typename conditional_t<__is_primary_template > >::value, + incrementable_traits >, + iterator_traits > >::difference_type; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ITERATOR_INCREMENTABLE_TRAITS_H diff --git a/third_party/libcxx/__iterator/indirectly_comparable.h b/third_party/libcxx/__iterator/indirectly_comparable.h new file mode 100644 index 000000000..e60ba25ca --- /dev/null +++ b/third_party/libcxx/__iterator/indirectly_comparable.h @@ -0,0 +1,34 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ITERATOR_INDIRECTLY_COMPARABLE_H +#define _LIBCPP___ITERATOR_INDIRECTLY_COMPARABLE_H + +#include <__config> +#include <__functional/identity.h> +#include <__iterator/concepts.h> +#include <__iterator/projected.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +template +concept indirectly_comparable = + indirect_binary_predicate<_Rp, projected<_I1, _P1>, projected<_I2, _P2>>; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ITERATOR_INDIRECTLY_COMPARABLE_H diff --git a/third_party/libcxx/__iterator/insert_iterator.h b/third_party/libcxx/__iterator/insert_iterator.h new file mode 100644 index 000000000..55348545e --- /dev/null +++ b/third_party/libcxx/__iterator/insert_iterator.h @@ -0,0 +1,81 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ITERATOR_INSERT_ITERATOR_H +#define _LIBCPP___ITERATOR_INSERT_ITERATOR_H + +#include <__config> +#include <__iterator/iterator.h> +#include <__iterator/iterator_traits.h> +#include <__memory/addressof.h> +#include <__ranges/access.h> +#include <__utility/move.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 +template +using __insert_iterator_iter_t = ranges::iterator_t<_Container>; +#else +template +using __insert_iterator_iter_t = typename _Container::iterator; +#endif + +_LIBCPP_SUPPRESS_DEPRECATED_PUSH +template +class _LIBCPP_TEMPLATE_VIS insert_iterator +#if _LIBCPP_STD_VER <= 14 || !defined(_LIBCPP_ABI_NO_ITERATOR_BASES) + : public iterator +#endif +{ +_LIBCPP_SUPPRESS_DEPRECATED_POP +protected: + _Container* container; + __insert_iterator_iter_t<_Container> iter; +public: + typedef output_iterator_tag iterator_category; + typedef void value_type; +#if _LIBCPP_STD_VER >= 20 + typedef ptrdiff_t difference_type; +#else + typedef void difference_type; +#endif + typedef void pointer; + typedef void reference; + typedef _Container container_type; + + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 insert_iterator(_Container& __x, __insert_iterator_iter_t<_Container> __i) + : container(_VSTD::addressof(__x)), iter(__i) {} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 insert_iterator& operator=(const typename _Container::value_type& __value) + {iter = container->insert(iter, __value); ++iter; return *this;} +#ifndef _LIBCPP_CXX03_LANG + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 insert_iterator& operator=(typename _Container::value_type&& __value) + {iter = container->insert(iter, _VSTD::move(__value)); ++iter; return *this;} +#endif // _LIBCPP_CXX03_LANG + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 insert_iterator& operator*() {return *this;} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 insert_iterator& operator++() {return *this;} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 insert_iterator& operator++(int) {return *this;} +}; + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX20 +insert_iterator<_Container> +inserter(_Container& __x, __insert_iterator_iter_t<_Container> __i) +{ + return insert_iterator<_Container>(__x, __i); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ITERATOR_INSERT_ITERATOR_H diff --git a/third_party/libcxx/__iterator/istream_iterator.h b/third_party/libcxx/__iterator/istream_iterator.h new file mode 100644 index 000000000..989902f21 --- /dev/null +++ b/third_party/libcxx/__iterator/istream_iterator.h @@ -0,0 +1,105 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ITERATOR_ISTREAM_ITERATOR_H +#define _LIBCPP___ITERATOR_ISTREAM_ITERATOR_H + +#include <__config> +#include <__iterator/default_sentinel.h> +#include <__iterator/iterator.h> +#include <__iterator/iterator_traits.h> +#include <__memory/addressof.h> +#include +#include // for forward declarations of char_traits and basic_istream + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +_LIBCPP_SUPPRESS_DEPRECATED_PUSH +template , class _Distance = ptrdiff_t> +class _LIBCPP_TEMPLATE_VIS istream_iterator +#if _LIBCPP_STD_VER <= 14 || !defined(_LIBCPP_ABI_NO_ITERATOR_BASES) + : public iterator +#endif +{ +_LIBCPP_SUPPRESS_DEPRECATED_POP +public: + typedef input_iterator_tag iterator_category; + typedef _Tp value_type; + typedef _Distance difference_type; + typedef const _Tp* pointer; + typedef const _Tp& reference; + typedef _CharT char_type; + typedef _Traits traits_type; + typedef basic_istream<_CharT,_Traits> istream_type; +private: + istream_type* __in_stream_; + _Tp __value_; +public: + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR istream_iterator() : __in_stream_(nullptr), __value_() {} +#if _LIBCPP_STD_VER >= 20 + _LIBCPP_HIDE_FROM_ABI constexpr istream_iterator(default_sentinel_t) : istream_iterator() {} +#endif // _LIBCPP_STD_VER >= 20 + _LIBCPP_INLINE_VISIBILITY istream_iterator(istream_type& __s) : __in_stream_(_VSTD::addressof(__s)) + { + if (!(*__in_stream_ >> __value_)) + __in_stream_ = nullptr; + } + + _LIBCPP_INLINE_VISIBILITY const _Tp& operator*() const {return __value_;} + _LIBCPP_INLINE_VISIBILITY const _Tp* operator->() const {return _VSTD::addressof((operator*()));} + _LIBCPP_INLINE_VISIBILITY istream_iterator& operator++() + { + if (!(*__in_stream_ >> __value_)) + __in_stream_ = nullptr; + return *this; + } + _LIBCPP_INLINE_VISIBILITY istream_iterator operator++(int) + {istream_iterator __t(*this); ++(*this); return __t;} + + template + friend _LIBCPP_INLINE_VISIBILITY + bool + operator==(const istream_iterator<_Up, _CharU, _TraitsU, _DistanceU>& __x, + const istream_iterator<_Up, _CharU, _TraitsU, _DistanceU>& __y); + +#if _LIBCPP_STD_VER >= 20 + friend _LIBCPP_HIDE_FROM_ABI bool operator==(const istream_iterator& __i, default_sentinel_t) { + return __i.__in_stream_ == nullptr; + } +#endif // _LIBCPP_STD_VER >= 20 +}; + +template +inline _LIBCPP_INLINE_VISIBILITY +bool +operator==(const istream_iterator<_Tp, _CharT, _Traits, _Distance>& __x, + const istream_iterator<_Tp, _CharT, _Traits, _Distance>& __y) +{ + return __x.__in_stream_ == __y.__in_stream_; +} + +#if _LIBCPP_STD_VER <= 17 +template +inline _LIBCPP_INLINE_VISIBILITY +bool +operator!=(const istream_iterator<_Tp, _CharT, _Traits, _Distance>& __x, + const istream_iterator<_Tp, _CharT, _Traits, _Distance>& __y) +{ + return !(__x == __y); +} +#endif // _LIBCPP_STD_VER <= 17 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ITERATOR_ISTREAM_ITERATOR_H diff --git a/third_party/libcxx/__iterator/istreambuf_iterator.h b/third_party/libcxx/__iterator/istreambuf_iterator.h new file mode 100644 index 000000000..e39fec6d7 --- /dev/null +++ b/third_party/libcxx/__iterator/istreambuf_iterator.h @@ -0,0 +1,119 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ITERATOR_ISTREAMBUF_ITERATOR_H +#define _LIBCPP___ITERATOR_ISTREAMBUF_ITERATOR_H + +#include <__config> +#include <__iterator/default_sentinel.h> +#include <__iterator/iterator.h> +#include <__iterator/iterator_traits.h> +#include // for forward declaration of basic_streambuf + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +_LIBCPP_SUPPRESS_DEPRECATED_PUSH +template +class _LIBCPP_TEMPLATE_VIS istreambuf_iterator +#if _LIBCPP_STD_VER <= 14 || !defined(_LIBCPP_ABI_NO_ITERATOR_BASES) + : public iterator +#endif +{ +_LIBCPP_SUPPRESS_DEPRECATED_POP +public: + typedef input_iterator_tag iterator_category; + typedef _CharT value_type; + typedef typename _Traits::off_type difference_type; + typedef _CharT* pointer; + typedef _CharT reference; + typedef _CharT char_type; + typedef _Traits traits_type; + typedef typename _Traits::int_type int_type; + typedef basic_streambuf<_CharT,_Traits> streambuf_type; + typedef basic_istream<_CharT,_Traits> istream_type; +private: + mutable streambuf_type* __sbuf_; + + class __proxy + { + char_type __keep_; + streambuf_type* __sbuf_; + _LIBCPP_INLINE_VISIBILITY + explicit __proxy(char_type __c, streambuf_type* __s) + : __keep_(__c), __sbuf_(__s) {} + friend class istreambuf_iterator; + public: + _LIBCPP_INLINE_VISIBILITY char_type operator*() const {return __keep_;} + }; + + _LIBCPP_INLINE_VISIBILITY + bool __test_for_eof() const + { + if (__sbuf_ && traits_type::eq_int_type(__sbuf_->sgetc(), traits_type::eof())) + __sbuf_ = nullptr; + return __sbuf_ == nullptr; + } +public: + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR istreambuf_iterator() _NOEXCEPT : __sbuf_(nullptr) {} +#if _LIBCPP_STD_VER >= 20 + _LIBCPP_INLINE_VISIBILITY constexpr istreambuf_iterator(default_sentinel_t) noexcept + : istreambuf_iterator() {} +#endif // _LIBCPP_STD_VER >= 20 + _LIBCPP_INLINE_VISIBILITY istreambuf_iterator(istream_type& __s) _NOEXCEPT + : __sbuf_(__s.rdbuf()) {} + _LIBCPP_INLINE_VISIBILITY istreambuf_iterator(streambuf_type* __s) _NOEXCEPT + : __sbuf_(__s) {} + _LIBCPP_INLINE_VISIBILITY istreambuf_iterator(const __proxy& __p) _NOEXCEPT + : __sbuf_(__p.__sbuf_) {} + + _LIBCPP_INLINE_VISIBILITY char_type operator*() const + {return static_cast(__sbuf_->sgetc());} + _LIBCPP_INLINE_VISIBILITY istreambuf_iterator& operator++() + { + __sbuf_->sbumpc(); + return *this; + } + _LIBCPP_INLINE_VISIBILITY __proxy operator++(int) + { + return __proxy(__sbuf_->sbumpc(), __sbuf_); + } + + _LIBCPP_INLINE_VISIBILITY bool equal(const istreambuf_iterator& __b) const + {return __test_for_eof() == __b.__test_for_eof();} + +#if _LIBCPP_STD_VER >= 20 + friend _LIBCPP_HIDE_FROM_ABI bool operator==(const istreambuf_iterator& __i, default_sentinel_t) { + return __i.__test_for_eof(); + } +#endif // _LIBCPP_STD_VER >= 20 +}; + +template +inline _LIBCPP_INLINE_VISIBILITY +bool operator==(const istreambuf_iterator<_CharT,_Traits>& __a, + const istreambuf_iterator<_CharT,_Traits>& __b) + {return __a.equal(__b);} + +#if _LIBCPP_STD_VER <= 17 +template +inline _LIBCPP_INLINE_VISIBILITY +bool operator!=(const istreambuf_iterator<_CharT,_Traits>& __a, + const istreambuf_iterator<_CharT,_Traits>& __b) + {return !__a.equal(__b);} +#endif // _LIBCPP_STD_VER <= 17 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ITERATOR_ISTREAMBUF_ITERATOR_H diff --git a/third_party/libcxx/__iterator/iter_move.h b/third_party/libcxx/__iterator/iter_move.h new file mode 100644 index 000000000..78b1448d0 --- /dev/null +++ b/third_party/libcxx/__iterator/iter_move.h @@ -0,0 +1,104 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ITERATOR_ITER_MOVE_H +#define _LIBCPP___ITERATOR_ITER_MOVE_H + +#include <__concepts/class_or_enum.h> +#include <__config> +#include <__iterator/iterator_traits.h> +#include <__type_traits/is_reference.h> +#include <__type_traits/remove_cvref.h> +#include <__utility/declval.h> +#include <__utility/forward.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +// [iterator.cust.move] + +namespace ranges { +namespace __iter_move { + +void iter_move(); + +template +concept __unqualified_iter_move = + __class_or_enum> && + requires (_Tp&& __t) { + // NOLINTNEXTLINE(libcpp-robust-against-adl) iter_swap ADL calls should only be made through ranges::iter_swap + iter_move(std::forward<_Tp>(__t)); + }; + +template +concept __move_deref = + !__unqualified_iter_move<_Tp> && + requires (_Tp&& __t) { + *__t; + requires is_lvalue_reference_v; + }; + +template +concept __just_deref = + !__unqualified_iter_move<_Tp> && + !__move_deref<_Tp> && + requires (_Tp&& __t) { + *__t; + requires (!is_lvalue_reference_v); + }; + +// [iterator.cust.move] + +struct __fn { + // NOLINTBEGIN(libcpp-robust-against-adl) iter_move ADL calls should only be made through ranges::iter_move + template + requires __unqualified_iter_move<_Ip> + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr decltype(auto) operator()(_Ip&& __i) const + noexcept(noexcept(iter_move(std::forward<_Ip>(__i)))) + { + return iter_move(std::forward<_Ip>(__i)); + } + // NOLINTEND(libcpp-robust-against-adl) + + template + requires __move_deref<_Ip> + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Ip&& __i) const + noexcept(noexcept(std::move(*std::forward<_Ip>(__i)))) + -> decltype( std::move(*std::forward<_Ip>(__i))) + { return std::move(*std::forward<_Ip>(__i)); } + + template + requires __just_deref<_Ip> + [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Ip&& __i) const + noexcept(noexcept(*std::forward<_Ip>(__i))) + -> decltype( *std::forward<_Ip>(__i)) + { return *std::forward<_Ip>(__i); } +}; +} // namespace __iter_move + +inline namespace __cpo { + inline constexpr auto iter_move = __iter_move::__fn{}; +} // namespace __cpo +} // namespace ranges + +template<__dereferenceable _Tp> + requires requires(_Tp& __t) { { ranges::iter_move(__t) } -> __can_reference; } +using iter_rvalue_reference_t = decltype(ranges::iter_move(std::declval<_Tp&>())); + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ITERATOR_ITER_MOVE_H diff --git a/third_party/libcxx/__iterator/iter_swap.h b/third_party/libcxx/__iterator/iter_swap.h new file mode 100644 index 000000000..c78efafb9 --- /dev/null +++ b/third_party/libcxx/__iterator/iter_swap.h @@ -0,0 +1,113 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ITERATOR_ITER_SWAP_H +#define _LIBCPP___ITERATOR_ITER_SWAP_H + +#include <__concepts/class_or_enum.h> +#include <__concepts/swappable.h> +#include <__config> +#include <__iterator/concepts.h> +#include <__iterator/iter_move.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/readable_traits.h> +#include <__type_traits/remove_cvref.h> +#include <__utility/declval.h> +#include <__utility/forward.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +// [iter.cust.swap] + +namespace ranges { +namespace __iter_swap { + template + void iter_swap(_I1, _I2) = delete; + + template + concept __unqualified_iter_swap = + (__class_or_enum> || __class_or_enum>) && + requires (_T1&& __x, _T2&& __y) { + // NOLINTNEXTLINE(libcpp-robust-against-adl) iter_swap ADL calls should only be made through ranges::iter_swap + iter_swap(_VSTD::forward<_T1>(__x), _VSTD::forward<_T2>(__y)); + }; + + template + concept __readable_swappable = + indirectly_readable<_T1> && indirectly_readable<_T2> && + swappable_with, iter_reference_t<_T2>>; + + + struct __fn { + // NOLINTBEGIN(libcpp-robust-against-adl) iter_swap ADL calls should only be made through ranges::iter_swap + template + requires __unqualified_iter_swap<_T1, _T2> + _LIBCPP_HIDE_FROM_ABI + constexpr void operator()(_T1&& __x, _T2&& __y) const + noexcept(noexcept(iter_swap(_VSTD::forward<_T1>(__x), _VSTD::forward<_T2>(__y)))) + { + (void)iter_swap(_VSTD::forward<_T1>(__x), _VSTD::forward<_T2>(__y)); + } + // NOLINTEND(libcpp-robust-against-adl) + + template + requires (!__unqualified_iter_swap<_T1, _T2>) && + __readable_swappable<_T1, _T2> + _LIBCPP_HIDE_FROM_ABI + constexpr void operator()(_T1&& __x, _T2&& __y) const + noexcept(noexcept(ranges::swap(*_VSTD::forward<_T1>(__x), *_VSTD::forward<_T2>(__y)))) + { + ranges::swap(*_VSTD::forward<_T1>(__x), *_VSTD::forward<_T2>(__y)); + } + + template + requires (!__unqualified_iter_swap<_T1, _T2> && + !__readable_swappable<_T1, _T2>) && + indirectly_movable_storable<_T1, _T2> && + indirectly_movable_storable<_T2, _T1> + _LIBCPP_HIDE_FROM_ABI + constexpr void operator()(_T1&& __x, _T2&& __y) const + noexcept(noexcept(iter_value_t<_T2>(ranges::iter_move(__y))) && + noexcept(*__y = ranges::iter_move(__x)) && + noexcept(*_VSTD::forward<_T1>(__x) = std::declval>())) + { + iter_value_t<_T2> __old(ranges::iter_move(__y)); + *__y = ranges::iter_move(__x); + *_VSTD::forward<_T1>(__x) = _VSTD::move(__old); + } + }; +} // namespace __iter_swap + +inline namespace __cpo { + inline constexpr auto iter_swap = __iter_swap::__fn{}; +} // namespace __cpo +} // namespace ranges + +template +concept indirectly_swappable = + indirectly_readable<_I1> && indirectly_readable<_I2> && + requires(const _I1 __i1, const _I2 __i2) { + ranges::iter_swap(__i1, __i1); + ranges::iter_swap(__i2, __i2); + ranges::iter_swap(__i1, __i2); + ranges::iter_swap(__i2, __i1); + }; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ITERATOR_ITER_SWAP_H diff --git a/third_party/libcxx/__iterator/iterator.h b/third_party/libcxx/__iterator/iterator.h new file mode 100644 index 000000000..b417eeab7 --- /dev/null +++ b/third_party/libcxx/__iterator/iterator.h @@ -0,0 +1,35 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ITERATOR_ITERATOR_H +#define _LIBCPP___ITERATOR_ITERATOR_H + +#include <__config> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +struct _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX17 iterator +{ + typedef _Tp value_type; + typedef _Distance difference_type; + typedef _Pointer pointer; + typedef _Reference reference; + typedef _Category iterator_category; +}; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ITERATOR_ITERATOR_H diff --git a/third_party/libcxx/__iterator/iterator_traits.h b/third_party/libcxx/__iterator/iterator_traits.h new file mode 100644 index 000000000..a81f0b577 --- /dev/null +++ b/third_party/libcxx/__iterator/iterator_traits.h @@ -0,0 +1,539 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ITERATOR_ITERATOR_TRAITS_H +#define _LIBCPP___ITERATOR_ITERATOR_TRAITS_H + +#include <__concepts/arithmetic.h> +#include <__concepts/constructible.h> +#include <__concepts/convertible_to.h> +#include <__concepts/copyable.h> +#include <__concepts/equality_comparable.h> +#include <__concepts/same_as.h> +#include <__concepts/totally_ordered.h> +#include <__config> +#include <__fwd/pair.h> +#include <__iterator/incrementable_traits.h> +#include <__iterator/readable_traits.h> +#include <__type_traits/add_const.h> +#include <__type_traits/common_reference.h> +#include <__type_traits/conditional.h> +#include <__type_traits/disjunction.h> +#include <__type_traits/is_convertible.h> +#include <__type_traits/is_object.h> +#include <__type_traits/is_primary_template.h> +#include <__type_traits/is_reference.h> +#include <__type_traits/is_valid_expansion.h> +#include <__type_traits/remove_const.h> +#include <__type_traits/remove_cv.h> +#include <__type_traits/remove_cvref.h> +#include <__type_traits/void_t.h> +#include <__utility/declval.h> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +template +using __with_reference = _Tp&; + +template +concept __can_reference = requires { + typename __with_reference<_Tp>; +}; + +template +concept __dereferenceable = requires(_Tp& __t) { + { *__t } -> __can_reference; // not required to be equality-preserving +}; + +// [iterator.traits] +template<__dereferenceable _Tp> +using iter_reference_t = decltype(*std::declval<_Tp&>()); + +#endif // _LIBCPP_STD_VER >= 20 + +template +struct _LIBCPP_TEMPLATE_VIS iterator_traits; + +struct _LIBCPP_TEMPLATE_VIS input_iterator_tag {}; +struct _LIBCPP_TEMPLATE_VIS output_iterator_tag {}; +struct _LIBCPP_TEMPLATE_VIS forward_iterator_tag : public input_iterator_tag {}; +struct _LIBCPP_TEMPLATE_VIS bidirectional_iterator_tag : public forward_iterator_tag {}; +struct _LIBCPP_TEMPLATE_VIS random_access_iterator_tag : public bidirectional_iterator_tag {}; +#if _LIBCPP_STD_VER >= 20 +struct _LIBCPP_TEMPLATE_VIS contiguous_iterator_tag : public random_access_iterator_tag {}; +#endif + +template +struct __iter_traits_cache { + using type = _If< + __is_primary_template >::value, + _Iter, + iterator_traits<_Iter> + >; +}; +template +using _ITER_TRAITS = typename __iter_traits_cache<_Iter>::type; + +struct __iter_concept_concept_test { + template + using _Apply = typename _ITER_TRAITS<_Iter>::iterator_concept; +}; +struct __iter_concept_category_test { + template + using _Apply = typename _ITER_TRAITS<_Iter>::iterator_category; +}; +struct __iter_concept_random_fallback { + template + using _Apply = __enable_if_t< + __is_primary_template >::value, + random_access_iterator_tag + >; +}; + +template struct __test_iter_concept + : _IsValidExpansion<_Tester::template _Apply, _Iter>, + _Tester +{ +}; + +template +struct __iter_concept_cache { + using type = _Or< + __test_iter_concept<_Iter, __iter_concept_concept_test>, + __test_iter_concept<_Iter, __iter_concept_category_test>, + __test_iter_concept<_Iter, __iter_concept_random_fallback> + >; +}; + +template +using _ITER_CONCEPT = typename __iter_concept_cache<_Iter>::type::template _Apply<_Iter>; + + +template +struct __has_iterator_typedefs +{ +private: + template static false_type __test(...); + template static true_type __test(__void_t* = nullptr, + __void_t* = nullptr, + __void_t* = nullptr, + __void_t* = nullptr, + __void_t* = nullptr); +public: + static const bool value = decltype(__test<_Tp>(0,0,0,0,0))::value; +}; + + +template +struct __has_iterator_category +{ +private: + template static false_type __test(...); + template static true_type __test(typename _Up::iterator_category* = nullptr); +public: + static const bool value = decltype(__test<_Tp>(nullptr))::value; +}; + +template +struct __has_iterator_concept +{ +private: + template static false_type __test(...); + template static true_type __test(typename _Up::iterator_concept* = nullptr); +public: + static const bool value = decltype(__test<_Tp>(nullptr))::value; +}; + +#if _LIBCPP_STD_VER >= 20 + +// The `cpp17-*-iterator` exposition-only concepts have very similar names to the `Cpp17*Iterator` named requirements +// from `[iterator.cpp17]`. To avoid confusion between the two, the exposition-only concepts have been banished to +// a "detail" namespace indicating they have a niche use-case. +namespace __iterator_traits_detail { +template +concept __cpp17_iterator = + requires(_Ip __i) { + { *__i } -> __can_reference; + { ++__i } -> same_as<_Ip&>; + { *__i++ } -> __can_reference; + } && + copyable<_Ip>; + +template +concept __cpp17_input_iterator = + __cpp17_iterator<_Ip> && + equality_comparable<_Ip> && + requires(_Ip __i) { + typename incrementable_traits<_Ip>::difference_type; + typename indirectly_readable_traits<_Ip>::value_type; + typename common_reference_t&&, + typename indirectly_readable_traits<_Ip>::value_type&>; + typename common_reference_t::value_type&>; + requires signed_integral::difference_type>; + }; + +template +concept __cpp17_forward_iterator = + __cpp17_input_iterator<_Ip> && + constructible_from<_Ip> && + is_reference_v> && + same_as>, + typename indirectly_readable_traits<_Ip>::value_type> && + requires(_Ip __i) { + { __i++ } -> convertible_to<_Ip const&>; + { *__i++ } -> same_as>; + }; + +template +concept __cpp17_bidirectional_iterator = + __cpp17_forward_iterator<_Ip> && + requires(_Ip __i) { + { --__i } -> same_as<_Ip&>; + { __i-- } -> convertible_to<_Ip const&>; + { *__i-- } -> same_as>; + }; + +template +concept __cpp17_random_access_iterator = + __cpp17_bidirectional_iterator<_Ip> && + totally_ordered<_Ip> && + requires(_Ip __i, typename incrementable_traits<_Ip>::difference_type __n) { + { __i += __n } -> same_as<_Ip&>; + { __i -= __n } -> same_as<_Ip&>; + { __i + __n } -> same_as<_Ip>; + { __n + __i } -> same_as<_Ip>; + { __i - __n } -> same_as<_Ip>; + { __i - __i } -> same_as; // NOLINT(misc-redundant-expression) ; This is llvm.org/PR54114 + { __i[__n] } -> convertible_to>; + }; +} // namespace __iterator_traits_detail + +template +concept __has_member_reference = requires { typename _Ip::reference; }; + +template +concept __has_member_pointer = requires { typename _Ip::pointer; }; + +template +concept __has_member_iterator_category = requires { typename _Ip::iterator_category; }; + +template +concept __specifies_members = requires { + typename _Ip::value_type; + typename _Ip::difference_type; + requires __has_member_reference<_Ip>; + requires __has_member_iterator_category<_Ip>; + }; + +template +struct __iterator_traits_member_pointer_or_void { + using type = void; +}; + +template<__has_member_pointer _Tp> +struct __iterator_traits_member_pointer_or_void<_Tp> { + using type = typename _Tp::pointer; +}; + +template +concept __cpp17_iterator_missing_members = + !__specifies_members<_Tp> && + __iterator_traits_detail::__cpp17_iterator<_Tp>; + +template +concept __cpp17_input_iterator_missing_members = + __cpp17_iterator_missing_members<_Tp> && + __iterator_traits_detail::__cpp17_input_iterator<_Tp>; + +// Otherwise, `pointer` names `void`. +template +struct __iterator_traits_member_pointer_or_arrow_or_void { using type = void; }; + +// [iterator.traits]/3.2.1 +// If the qualified-id `I::pointer` is valid and denotes a type, `pointer` names that type. +template<__has_member_pointer _Ip> +struct __iterator_traits_member_pointer_or_arrow_or_void<_Ip> { using type = typename _Ip::pointer; }; + +// Otherwise, if `decltype(declval().operator->())` is well-formed, then `pointer` names that +// type. +template + requires requires(_Ip& __i) { __i.operator->(); } && (!__has_member_pointer<_Ip>) +struct __iterator_traits_member_pointer_or_arrow_or_void<_Ip> { + using type = decltype(std::declval<_Ip&>().operator->()); +}; + +// Otherwise, `reference` names `iter-reference-t`. +template +struct __iterator_traits_member_reference { using type = iter_reference_t<_Ip>; }; + +// [iterator.traits]/3.2.2 +// If the qualified-id `I::reference` is valid and denotes a type, `reference` names that type. +template<__has_member_reference _Ip> +struct __iterator_traits_member_reference<_Ip> { using type = typename _Ip::reference; }; + +// [iterator.traits]/3.2.3.4 +// input_iterator_tag +template +struct __deduce_iterator_category { + using type = input_iterator_tag; +}; + +// [iterator.traits]/3.2.3.1 +// `random_access_iterator_tag` if `I` satisfies `cpp17-random-access-iterator`, or otherwise +template<__iterator_traits_detail::__cpp17_random_access_iterator _Ip> +struct __deduce_iterator_category<_Ip> { + using type = random_access_iterator_tag; +}; + +// [iterator.traits]/3.2.3.2 +// `bidirectional_iterator_tag` if `I` satisfies `cpp17-bidirectional-iterator`, or otherwise +template<__iterator_traits_detail::__cpp17_bidirectional_iterator _Ip> +struct __deduce_iterator_category<_Ip> { + using type = bidirectional_iterator_tag; +}; + +// [iterator.traits]/3.2.3.3 +// `forward_iterator_tag` if `I` satisfies `cpp17-forward-iterator`, or otherwise +template<__iterator_traits_detail::__cpp17_forward_iterator _Ip> +struct __deduce_iterator_category<_Ip> { + using type = forward_iterator_tag; +}; + +template +struct __iterator_traits_iterator_category : __deduce_iterator_category<_Ip> {}; + +// [iterator.traits]/3.2.3 +// If the qualified-id `I::iterator-category` is valid and denotes a type, `iterator-category` names +// that type. +template<__has_member_iterator_category _Ip> +struct __iterator_traits_iterator_category<_Ip> { + using type = typename _Ip::iterator_category; +}; + +// otherwise, it names void. +template +struct __iterator_traits_difference_type { using type = void; }; + +// If the qualified-id `incrementable_traits::difference_type` is valid and denotes a type, then +// `difference_type` names that type; +template +requires requires { typename incrementable_traits<_Ip>::difference_type; } +struct __iterator_traits_difference_type<_Ip> { + using type = typename incrementable_traits<_Ip>::difference_type; +}; + +// [iterator.traits]/3.4 +// Otherwise, `iterator_traits` has no members by any of the above names. +template +struct __iterator_traits {}; + +// [iterator.traits]/3.1 +// If `I` has valid ([temp.deduct]) member types `difference-type`, `value-type`, `reference`, and +// `iterator-category`, then `iterator-traits` has the following publicly accessible members: +template<__specifies_members _Ip> +struct __iterator_traits<_Ip> { + using iterator_category = typename _Ip::iterator_category; + using value_type = typename _Ip::value_type; + using difference_type = typename _Ip::difference_type; + using pointer = typename __iterator_traits_member_pointer_or_void<_Ip>::type; + using reference = typename _Ip::reference; +}; + +// [iterator.traits]/3.2 +// Otherwise, if `I` satisfies the exposition-only concept `cpp17-input-iterator`, +// `iterator-traits` has the following publicly accessible members: +template<__cpp17_input_iterator_missing_members _Ip> +struct __iterator_traits<_Ip> { + using iterator_category = typename __iterator_traits_iterator_category<_Ip>::type; + using value_type = typename indirectly_readable_traits<_Ip>::value_type; + using difference_type = typename incrementable_traits<_Ip>::difference_type; + using pointer = typename __iterator_traits_member_pointer_or_arrow_or_void<_Ip>::type; + using reference = typename __iterator_traits_member_reference<_Ip>::type; +}; + +// Otherwise, if `I` satisfies the exposition-only concept `cpp17-iterator`, then +// `iterator_traits` has the following publicly accessible members: +template<__cpp17_iterator_missing_members _Ip> +struct __iterator_traits<_Ip> { + using iterator_category = output_iterator_tag; + using value_type = void; + using difference_type = typename __iterator_traits_difference_type<_Ip>::type; + using pointer = void; + using reference = void; +}; + +template +struct iterator_traits : __iterator_traits<_Ip> { + using __primary_template = iterator_traits; +}; + +#else // _LIBCPP_STD_VER >= 20 + +template struct __iterator_traits {}; + +template struct __iterator_traits_impl {}; + +template +struct __iterator_traits_impl<_Iter, true> +{ + typedef typename _Iter::difference_type difference_type; + typedef typename _Iter::value_type value_type; + typedef typename _Iter::pointer pointer; + typedef typename _Iter::reference reference; + typedef typename _Iter::iterator_category iterator_category; +}; + +template +struct __iterator_traits<_Iter, true> + : __iterator_traits_impl + < + _Iter, + is_convertible::value || + is_convertible::value + > +{}; + +// iterator_traits will only have the nested types if Iterator::iterator_category +// exists. Else iterator_traits will be an empty class. This is a +// conforming extension which allows some programs to compile and behave as +// the client expects instead of failing at compile time. + +template +struct _LIBCPP_TEMPLATE_VIS iterator_traits + : __iterator_traits<_Iter, __has_iterator_typedefs<_Iter>::value> { + + using __primary_template = iterator_traits; +}; +#endif // _LIBCPP_STD_VER >= 20 + +template +#if _LIBCPP_STD_VER >= 20 +requires is_object_v<_Tp> +#endif +struct _LIBCPP_TEMPLATE_VIS iterator_traits<_Tp*> +{ + typedef ptrdiff_t difference_type; + typedef __remove_cv_t<_Tp> value_type; + typedef _Tp* pointer; + typedef _Tp& reference; + typedef random_access_iterator_tag iterator_category; +#if _LIBCPP_STD_VER >= 20 + typedef contiguous_iterator_tag iterator_concept; +#endif +}; + +template >::value> +struct __has_iterator_category_convertible_to + : is_convertible::iterator_category, _Up> +{}; + +template +struct __has_iterator_category_convertible_to<_Tp, _Up, false> : false_type {}; + +template ::value> +struct __has_iterator_concept_convertible_to + : is_convertible +{}; + +template +struct __has_iterator_concept_convertible_to<_Tp, _Up, false> : false_type {}; + +template +using __has_input_iterator_category = __has_iterator_category_convertible_to<_Tp, input_iterator_tag>; + +template +using __has_forward_iterator_category = __has_iterator_category_convertible_to<_Tp, forward_iterator_tag>; + +template +using __has_bidirectional_iterator_category = __has_iterator_category_convertible_to<_Tp, bidirectional_iterator_tag>; + +template +using __has_random_access_iterator_category = __has_iterator_category_convertible_to<_Tp, random_access_iterator_tag>; + +// __libcpp_is_contiguous_iterator determines if an iterator is known by +// libc++ to be contiguous, either because it advertises itself as such +// (in C++20) or because it is a pointer type or a known trivial wrapper +// around a (possibly fancy) pointer type, such as __wrap_iter. +// Such iterators receive special "contiguous" optimizations in +// std::copy and std::sort. +// +#if _LIBCPP_STD_VER >= 20 +template +struct __libcpp_is_contiguous_iterator : _Or< + __has_iterator_category_convertible_to<_Tp, contiguous_iterator_tag>, + __has_iterator_concept_convertible_to<_Tp, contiguous_iterator_tag> +> {}; +#else +template +struct __libcpp_is_contiguous_iterator : false_type {}; +#endif + +// Any native pointer which is an iterator is also a contiguous iterator. +template +struct __libcpp_is_contiguous_iterator<_Up*> : true_type {}; + + +template +class __wrap_iter; + +template +using __has_exactly_input_iterator_category + = integral_constant::value && + !__has_iterator_category_convertible_to<_Tp, forward_iterator_tag>::value>; + +template +using __has_exactly_forward_iterator_category + = integral_constant::value && + !__has_iterator_category_convertible_to<_Tp, bidirectional_iterator_tag>::value>; + +template +using __has_exactly_bidirectional_iterator_category + = integral_constant::value && + !__has_iterator_category_convertible_to<_Tp, random_access_iterator_tag>::value>; + +template +using __iter_value_type = typename iterator_traits<_InputIterator>::value_type; + +template +using __iter_key_type = __remove_const_t::value_type::first_type>; + +template +using __iter_mapped_type = typename iterator_traits<_InputIterator>::value_type::second_type; + +template +using __iter_to_alloc_type = pair< + typename add_const::value_type::first_type>::type, + typename iterator_traits<_InputIterator>::value_type::second_type>; + +template +using __iterator_category_type = typename iterator_traits<_Iter>::iterator_category; + +template +using __iterator_pointer_type = typename iterator_traits<_Iter>::pointer; + +template +using __iter_diff_t = typename iterator_traits<_Iter>::difference_type; + +template +using __iter_reference = typename iterator_traits<_Iter>::reference; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ITERATOR_ITERATOR_TRAITS_H diff --git a/third_party/libcxx/__iterator/iterator_with_data.h b/third_party/libcxx/__iterator/iterator_with_data.h new file mode 100644 index 000000000..06c2fa699 --- /dev/null +++ b/third_party/libcxx/__iterator/iterator_with_data.h @@ -0,0 +1,100 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ITERATOR_ITERATOR_WITH_DATA_H +#define _LIBCPP___ITERATOR_ITERATOR_WITH_DATA_H + +#include <__compare/compare_three_way_result.h> +#include <__compare/three_way_comparable.h> +#include <__config> +#include <__iterator/concepts.h> +#include <__iterator/incrementable_traits.h> +#include <__iterator/iter_move.h> +#include <__iterator/iter_swap.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/readable_traits.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#if _LIBCPP_STD_VER >= 20 + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +class __iterator_with_data { + _Iterator __iter_{}; + _Data __data_{}; + +public: + using value_type = iter_value_t<_Iterator>; + using difference_type = iter_difference_t<_Iterator>; + + _LIBCPP_HIDE_FROM_ABI __iterator_with_data() = default; + + constexpr _LIBCPP_HIDE_FROM_ABI __iterator_with_data(_Iterator __iter, _Data __data) + : __iter_(std::move(__iter)), __data_(std::move(__data)) {} + + constexpr _LIBCPP_HIDE_FROM_ABI _Iterator __get_iter() const { return __iter_; } + + constexpr _LIBCPP_HIDE_FROM_ABI _Data __get_data() && { return std::move(__data_); } + + friend constexpr _LIBCPP_HIDE_FROM_ABI bool + operator==(const __iterator_with_data& __lhs, const __iterator_with_data& __rhs) { + return __lhs.__iter_ == __rhs.__iter_; + } + + constexpr _LIBCPP_HIDE_FROM_ABI __iterator_with_data& operator++() { + ++__iter_; + return *this; + } + + constexpr _LIBCPP_HIDE_FROM_ABI __iterator_with_data operator++(int) { + auto __tmp = *this; + __iter_++; + return __tmp; + } + + constexpr _LIBCPP_HIDE_FROM_ABI __iterator_with_data& operator--() + requires bidirectional_iterator<_Iterator> + { + --__iter_; + return *this; + } + + constexpr _LIBCPP_HIDE_FROM_ABI __iterator_with_data operator--(int) + requires bidirectional_iterator<_Iterator> + { + auto __tmp = *this; + --__iter_; + return __tmp; + } + + constexpr _LIBCPP_HIDE_FROM_ABI iter_reference_t<_Iterator> operator*() const { return *__iter_; } + + _LIBCPP_HIDE_FROM_ABI friend constexpr iter_rvalue_reference_t<_Iterator> + iter_move(const __iterator_with_data& __iter) noexcept(noexcept(ranges::iter_move(__iter.__iter_))) { + return ranges::iter_move(__iter.__iter_); + } + + _LIBCPP_HIDE_FROM_ABI friend constexpr void + iter_swap(const __iterator_with_data& __lhs, + const __iterator_with_data& __rhs) noexcept(noexcept(ranges::iter_swap(__lhs.__iter_, __rhs.__iter_))) + requires indirectly_swappable<_Iterator> + { + return ranges::iter_swap(__lhs.__data_, __rhs.__iter_); + } +}; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP_STD_VER >= 20 + +#endif // _LIBCPP___ITERATOR_ITERATOR_WITH_DATA_H diff --git a/third_party/libcxx/__iterator/mergeable.h b/third_party/libcxx/__iterator/mergeable.h new file mode 100644 index 000000000..494fda956 --- /dev/null +++ b/third_party/libcxx/__iterator/mergeable.h @@ -0,0 +1,41 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ITERATOR_MERGEABLE_H +#define _LIBCPP___ITERATOR_MERGEABLE_H + +#include <__config> +#include <__functional/identity.h> +#include <__functional/ranges_operations.h> +#include <__iterator/concepts.h> +#include <__iterator/projected.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +template +concept mergeable = + input_iterator<_Input1> && + input_iterator<_Input2> && + weakly_incrementable<_Output> && + indirectly_copyable<_Input1, _Output> && + indirectly_copyable<_Input2, _Output> && + indirect_strict_weak_order<_Comp, projected<_Input1, _Proj1>, projected<_Input2, _Proj2>>; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ITERATOR_MERGEABLE_H diff --git a/third_party/libcxx/__iterator/move_iterator.h b/third_party/libcxx/__iterator/move_iterator.h new file mode 100644 index 000000000..6028a0e84 --- /dev/null +++ b/third_party/libcxx/__iterator/move_iterator.h @@ -0,0 +1,350 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ITERATOR_MOVE_ITERATOR_H +#define _LIBCPP___ITERATOR_MOVE_ITERATOR_H + +#include <__compare/compare_three_way_result.h> +#include <__compare/three_way_comparable.h> +#include <__concepts/assignable.h> +#include <__concepts/convertible_to.h> +#include <__concepts/derived_from.h> +#include <__concepts/same_as.h> +#include <__config> +#include <__iterator/concepts.h> +#include <__iterator/incrementable_traits.h> +#include <__iterator/iter_move.h> +#include <__iterator/iter_swap.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/move_sentinel.h> +#include <__iterator/readable_traits.h> +#include <__type_traits/conditional.h> +#include <__type_traits/enable_if.h> +#include <__type_traits/is_assignable.h> +#include <__type_traits/is_constructible.h> +#include <__type_traits/is_convertible.h> +#include <__type_traits/is_reference.h> +#include <__type_traits/is_same.h> +#include <__type_traits/remove_reference.h> +#include <__utility/declval.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 +template +struct __move_iter_category_base {}; + +template + requires requires { typename iterator_traits<_Iter>::iterator_category; } +struct __move_iter_category_base<_Iter> { + using iterator_category = _If< + derived_from::iterator_category, random_access_iterator_tag>, + random_access_iterator_tag, + typename iterator_traits<_Iter>::iterator_category + >; +}; + +template +concept __move_iter_comparable = requires { + { std::declval() == std::declval<_Sent>() } -> convertible_to; +}; +#endif // _LIBCPP_STD_VER >= 20 + +template +class _LIBCPP_TEMPLATE_VIS move_iterator +#if _LIBCPP_STD_VER >= 20 + : public __move_iter_category_base<_Iter> +#endif +{ + #if _LIBCPP_STD_VER >= 20 +private: + _LIBCPP_HIDE_FROM_ABI + static constexpr auto __get_iter_concept() { + if constexpr (random_access_iterator<_Iter>) { + return random_access_iterator_tag{}; + } else if constexpr (bidirectional_iterator<_Iter>) { + return bidirectional_iterator_tag{}; + } else if constexpr (forward_iterator<_Iter>) { + return forward_iterator_tag{}; + } else { + return input_iterator_tag{}; + } + } +#endif // _LIBCPP_STD_VER >= 20 +public: +#if _LIBCPP_STD_VER >= 20 + using iterator_type = _Iter; + using iterator_concept = decltype(__get_iter_concept()); + // iterator_category is inherited and not always present + using value_type = iter_value_t<_Iter>; + using difference_type = iter_difference_t<_Iter>; + using pointer = _Iter; + using reference = iter_rvalue_reference_t<_Iter>; +#else + typedef _Iter iterator_type; + typedef _If< + __has_random_access_iterator_category<_Iter>::value, + random_access_iterator_tag, + typename iterator_traits<_Iter>::iterator_category + > iterator_category; + typedef typename iterator_traits::value_type value_type; + typedef typename iterator_traits::difference_type difference_type; + typedef iterator_type pointer; + + typedef typename iterator_traits::reference __reference; + typedef typename conditional< + is_reference<__reference>::value, + __libcpp_remove_reference_t<__reference>&&, + __reference + >::type reference; +#endif // _LIBCPP_STD_VER >= 20 + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 + explicit move_iterator(_Iter __i) : __current_(std::move(__i)) {} + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 + move_iterator& operator++() { ++__current_; return *this; } + + _LIBCPP_DEPRECATED_IN_CXX20 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 + pointer operator->() const { return __current_; } + +#if _LIBCPP_STD_VER >= 20 + _LIBCPP_HIDE_FROM_ABI constexpr + move_iterator() requires is_constructible_v<_Iter> : __current_() {} + + template + requires (!_IsSame<_Up, _Iter>::value) && convertible_to + _LIBCPP_HIDE_FROM_ABI constexpr + move_iterator(const move_iterator<_Up>& __u) : __current_(__u.base()) {} + + template + requires (!_IsSame<_Up, _Iter>::value) && + convertible_to && + assignable_from<_Iter&, const _Up&> + _LIBCPP_HIDE_FROM_ABI constexpr + move_iterator& operator=(const move_iterator<_Up>& __u) { + __current_ = __u.base(); + return *this; + } + + _LIBCPP_HIDE_FROM_ABI constexpr const _Iter& base() const & noexcept { return __current_; } + _LIBCPP_HIDE_FROM_ABI constexpr _Iter base() && { return std::move(__current_); } + + _LIBCPP_HIDE_FROM_ABI constexpr + reference operator*() const { return ranges::iter_move(__current_); } + _LIBCPP_HIDE_FROM_ABI constexpr + reference operator[](difference_type __n) const { return ranges::iter_move(__current_ + __n); } + + _LIBCPP_HIDE_FROM_ABI constexpr + auto operator++(int) + requires forward_iterator<_Iter> + { + move_iterator __tmp(*this); ++__current_; return __tmp; + } + + _LIBCPP_HIDE_FROM_ABI constexpr + void operator++(int) { ++__current_; } +#else + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 + move_iterator() : __current_() {} + + template ::value && is_convertible::value + > > + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 + move_iterator(const move_iterator<_Up>& __u) : __current_(__u.base()) {} + + template ::value && + is_convertible::value && + is_assignable<_Iter&, const _Up&>::value + > > + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 + move_iterator& operator=(const move_iterator<_Up>& __u) { + __current_ = __u.base(); + return *this; + } + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 + _Iter base() const { return __current_; } + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 + reference operator*() const { return static_cast(*__current_); } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 + reference operator[](difference_type __n) const { return static_cast(__current_[__n]); } + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 + move_iterator operator++(int) { move_iterator __tmp(*this); ++__current_; return __tmp; } +#endif // _LIBCPP_STD_VER >= 20 + + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 + move_iterator& operator--() { --__current_; return *this; } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 + move_iterator operator--(int) { move_iterator __tmp(*this); --__current_; return __tmp; } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 + move_iterator operator+(difference_type __n) const { return move_iterator(__current_ + __n); } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 + move_iterator& operator+=(difference_type __n) { __current_ += __n; return *this; } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 + move_iterator operator-(difference_type __n) const { return move_iterator(__current_ - __n); } + _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 + move_iterator& operator-=(difference_type __n) { __current_ -= __n; return *this; } + +#if _LIBCPP_STD_VER >= 20 + template _Sent> + friend _LIBCPP_HIDE_FROM_ABI constexpr + bool operator==(const move_iterator& __x, const move_sentinel<_Sent>& __y) + requires __move_iter_comparable<_Iter, _Sent> + { + return __x.base() == __y.base(); + } + + template _Sent> + friend _LIBCPP_HIDE_FROM_ABI constexpr + iter_difference_t<_Iter> operator-(const move_sentinel<_Sent>& __x, const move_iterator& __y) + { + return __x.base() - __y.base(); + } + + template _Sent> + friend _LIBCPP_HIDE_FROM_ABI constexpr + iter_difference_t<_Iter> operator-(const move_iterator& __x, const move_sentinel<_Sent>& __y) + { + return __x.base() - __y.base(); + } + + friend _LIBCPP_HIDE_FROM_ABI constexpr + iter_rvalue_reference_t<_Iter> iter_move(const move_iterator& __i) + noexcept(noexcept(ranges::iter_move(__i.__current_))) + { + return ranges::iter_move(__i.__current_); + } + + template _It2> + friend _LIBCPP_HIDE_FROM_ABI constexpr + void iter_swap(const move_iterator& __x, const move_iterator<_It2>& __y) + noexcept(noexcept(ranges::iter_swap(__x.__current_, __y.__current_))) + { + return ranges::iter_swap(__x.__current_, __y.__current_); + } +#endif // _LIBCPP_STD_VER >= 20 + +private: + template friend class move_iterator; + + _Iter __current_; +}; +_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(move_iterator); + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 +bool operator==(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) +{ + return __x.base() == __y.base(); +} + +#if _LIBCPP_STD_VER <= 17 +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 +bool operator!=(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) +{ + return __x.base() != __y.base(); +} +#endif // _LIBCPP_STD_VER <= 17 + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 +bool operator<(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) +{ + return __x.base() < __y.base(); +} + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 +bool operator>(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) +{ + return __x.base() > __y.base(); +} + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 +bool operator<=(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) +{ + return __x.base() <= __y.base(); +} + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 +bool operator>=(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) +{ + return __x.base() >= __y.base(); +} + +#if _LIBCPP_STD_VER >= 20 +template _Iter2> +inline _LIBCPP_HIDE_FROM_ABI constexpr +auto operator<=>(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) + -> compare_three_way_result_t<_Iter1, _Iter2> +{ + return __x.base() <=> __y.base(); +} +#endif // _LIBCPP_STD_VER >= 20 + +#ifndef _LIBCPP_CXX03_LANG +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 +auto operator-(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) + -> decltype(__x.base() - __y.base()) +{ + return __x.base() - __y.base(); +} +#else +template +inline _LIBCPP_HIDE_FROM_ABI +typename move_iterator<_Iter1>::difference_type +operator-(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) +{ + return __x.base() - __y.base(); +} +#endif // !_LIBCPP_CXX03_LANG + +#if _LIBCPP_STD_VER >= 20 +template +inline _LIBCPP_HIDE_FROM_ABI constexpr +move_iterator<_Iter> operator+(iter_difference_t<_Iter> __n, const move_iterator<_Iter>& __x) + requires requires { { __x.base() + __n } -> same_as<_Iter>; } +{ + return __x + __n; +} +#else +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 +move_iterator<_Iter> +operator+(typename move_iterator<_Iter>::difference_type __n, const move_iterator<_Iter>& __x) +{ + return move_iterator<_Iter>(__x.base() + __n); +} +#endif // _LIBCPP_STD_VER >= 20 + +template +inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 +move_iterator<_Iter> +make_move_iterator(_Iter __i) +{ + return move_iterator<_Iter>(std::move(__i)); +} + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ITERATOR_MOVE_ITERATOR_H diff --git a/third_party/libcxx/__iterator/move_sentinel.h b/third_party/libcxx/__iterator/move_sentinel.h new file mode 100644 index 000000000..2fd0af889 --- /dev/null +++ b/third_party/libcxx/__iterator/move_sentinel.h @@ -0,0 +1,59 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ITERATOR_MOVE_SENTINEL_H +#define _LIBCPP___ITERATOR_MOVE_SENTINEL_H + +#include <__concepts/assignable.h> +#include <__concepts/convertible_to.h> +#include <__concepts/semiregular.h> +#include <__config> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +template +class _LIBCPP_TEMPLATE_VIS move_sentinel +{ +public: + _LIBCPP_HIDE_FROM_ABI + move_sentinel() = default; + + _LIBCPP_HIDE_FROM_ABI constexpr + explicit move_sentinel(_Sent __s) : __last_(std::move(__s)) {} + + template + requires convertible_to + _LIBCPP_HIDE_FROM_ABI constexpr + move_sentinel(const move_sentinel<_S2>& __s) : __last_(__s.base()) {} + + template + requires assignable_from<_Sent&, const _S2&> + _LIBCPP_HIDE_FROM_ABI constexpr + move_sentinel& operator=(const move_sentinel<_S2>& __s) + { __last_ = __s.base(); return *this; } + + _LIBCPP_HIDE_FROM_ABI constexpr _Sent base() const { return __last_; } + +private: + _Sent __last_ = _Sent(); +}; + +_LIBCPP_CTAD_SUPPORTED_FOR_TYPE(move_sentinel); + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ITERATOR_MOVE_SENTINEL_H diff --git a/third_party/libcxx/__iterator/next.h b/third_party/libcxx/__iterator/next.h new file mode 100644 index 000000000..6cb63ecc8 --- /dev/null +++ b/third_party/libcxx/__iterator/next.h @@ -0,0 +1,84 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ITERATOR_NEXT_H +#define _LIBCPP___ITERATOR_NEXT_H + +#include <__assert> +#include <__config> +#include <__iterator/advance.h> +#include <__iterator/concepts.h> +#include <__iterator/incrementable_traits.h> +#include <__iterator/iterator_traits.h> +#include <__type_traits/enable_if.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 + typename enable_if<__has_input_iterator_category<_InputIter>::value, _InputIter>::type + next(_InputIter __x, typename iterator_traits<_InputIter>::difference_type __n = 1) { + _LIBCPP_ASSERT(__n >= 0 || __has_bidirectional_iterator_category<_InputIter>::value, + "Attempt to next(it, n) with negative n on a non-bidirectional iterator"); + + _VSTD::advance(__x, __n); + return __x; +} + +#if _LIBCPP_STD_VER >= 20 + +// [range.iter.op.next] + +namespace ranges { +namespace __next { + +struct __fn { + template + _LIBCPP_HIDE_FROM_ABI + constexpr _Ip operator()(_Ip __x) const { + ++__x; + return __x; + } + + template + _LIBCPP_HIDE_FROM_ABI + constexpr _Ip operator()(_Ip __x, iter_difference_t<_Ip> __n) const { + ranges::advance(__x, __n); + return __x; + } + + template _Sp> + _LIBCPP_HIDE_FROM_ABI constexpr _Ip operator()(_Ip __x, _Sp __bound_sentinel) const { + ranges::advance(__x, __bound_sentinel); + return __x; + } + + template _Sp> + _LIBCPP_HIDE_FROM_ABI constexpr _Ip operator()(_Ip __x, iter_difference_t<_Ip> __n, _Sp __bound_sentinel) const { + ranges::advance(__x, __n, __bound_sentinel); + return __x; + } +}; + +} // namespace __next + +inline namespace __cpo { + inline constexpr auto next = __next::__fn{}; +} // namespace __cpo +} // namespace ranges + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ITERATOR_NEXT_H diff --git a/third_party/libcxx/__iterator/ostream_iterator.h b/third_party/libcxx/__iterator/ostream_iterator.h new file mode 100644 index 000000000..025712bb1 --- /dev/null +++ b/third_party/libcxx/__iterator/ostream_iterator.h @@ -0,0 +1,71 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ITERATOR_OSTREAM_ITERATOR_H +#define _LIBCPP___ITERATOR_OSTREAM_ITERATOR_H + +#include <__config> +#include <__iterator/iterator.h> +#include <__iterator/iterator_traits.h> +#include <__memory/addressof.h> +#include +#include // for forward declarations of char_traits and basic_ostream + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +_LIBCPP_SUPPRESS_DEPRECATED_PUSH +template > +class _LIBCPP_TEMPLATE_VIS ostream_iterator +#if _LIBCPP_STD_VER <= 14 || !defined(_LIBCPP_ABI_NO_ITERATOR_BASES) + : public iterator +#endif +{ +_LIBCPP_SUPPRESS_DEPRECATED_POP +public: + typedef output_iterator_tag iterator_category; + typedef void value_type; +#if _LIBCPP_STD_VER >= 20 + typedef ptrdiff_t difference_type; +#else + typedef void difference_type; +#endif + typedef void pointer; + typedef void reference; + typedef _CharT char_type; + typedef _Traits traits_type; + typedef basic_ostream<_CharT, _Traits> ostream_type; + +private: + ostream_type* __out_stream_; + const char_type* __delim_; +public: + _LIBCPP_INLINE_VISIBILITY ostream_iterator(ostream_type& __s) _NOEXCEPT + : __out_stream_(_VSTD::addressof(__s)), __delim_(nullptr) {} + _LIBCPP_INLINE_VISIBILITY ostream_iterator(ostream_type& __s, const _CharT* __delimiter) _NOEXCEPT + : __out_stream_(_VSTD::addressof(__s)), __delim_(__delimiter) {} + _LIBCPP_INLINE_VISIBILITY ostream_iterator& operator=(const _Tp& __value) + { + *__out_stream_ << __value; + if (__delim_) + *__out_stream_ << __delim_; + return *this; + } + + _LIBCPP_INLINE_VISIBILITY ostream_iterator& operator*() {return *this;} + _LIBCPP_INLINE_VISIBILITY ostream_iterator& operator++() {return *this;} + _LIBCPP_INLINE_VISIBILITY ostream_iterator& operator++(int) {return *this;} +}; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ITERATOR_OSTREAM_ITERATOR_H diff --git a/third_party/libcxx/__iterator/ostreambuf_iterator.h b/third_party/libcxx/__iterator/ostreambuf_iterator.h new file mode 100644 index 000000000..898ef90e7 --- /dev/null +++ b/third_party/libcxx/__iterator/ostreambuf_iterator.h @@ -0,0 +1,77 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ITERATOR_OSTREAMBUF_ITERATOR_H +#define _LIBCPP___ITERATOR_OSTREAMBUF_ITERATOR_H + +#include <__config> +#include <__iterator/iterator.h> +#include <__iterator/iterator_traits.h> +#include +#include // for forward declaration of basic_streambuf + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +_LIBCPP_SUPPRESS_DEPRECATED_PUSH +template +class _LIBCPP_TEMPLATE_VIS ostreambuf_iterator +#if _LIBCPP_STD_VER <= 14 || !defined(_LIBCPP_ABI_NO_ITERATOR_BASES) + : public iterator +#endif +{ +_LIBCPP_SUPPRESS_DEPRECATED_POP +public: + typedef output_iterator_tag iterator_category; + typedef void value_type; +#if _LIBCPP_STD_VER >= 20 + typedef ptrdiff_t difference_type; +#else + typedef void difference_type; +#endif + typedef void pointer; + typedef void reference; + typedef _CharT char_type; + typedef _Traits traits_type; + typedef basic_streambuf<_CharT, _Traits> streambuf_type; + typedef basic_ostream<_CharT, _Traits> ostream_type; + +private: + streambuf_type* __sbuf_; +public: + _LIBCPP_INLINE_VISIBILITY ostreambuf_iterator(ostream_type& __s) _NOEXCEPT + : __sbuf_(__s.rdbuf()) {} + _LIBCPP_INLINE_VISIBILITY ostreambuf_iterator(streambuf_type* __s) _NOEXCEPT + : __sbuf_(__s) {} + _LIBCPP_INLINE_VISIBILITY ostreambuf_iterator& operator=(_CharT __c) + { + if (__sbuf_ && traits_type::eq_int_type(__sbuf_->sputc(__c), traits_type::eof())) + __sbuf_ = nullptr; + return *this; + } + _LIBCPP_INLINE_VISIBILITY ostreambuf_iterator& operator*() {return *this;} + _LIBCPP_INLINE_VISIBILITY ostreambuf_iterator& operator++() {return *this;} + _LIBCPP_INLINE_VISIBILITY ostreambuf_iterator& operator++(int) {return *this;} + _LIBCPP_INLINE_VISIBILITY bool failed() const _NOEXCEPT {return __sbuf_ == nullptr;} + + template + friend + _LIBCPP_HIDE_FROM_ABI + ostreambuf_iterator<_Ch, _Tr> + __pad_and_output(ostreambuf_iterator<_Ch, _Tr> __s, + const _Ch* __ob, const _Ch* __op, const _Ch* __oe, + ios_base& __iob, _Ch __fl); +}; + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ITERATOR_OSTREAMBUF_ITERATOR_H diff --git a/third_party/libcxx/__iterator/permutable.h b/third_party/libcxx/__iterator/permutable.h new file mode 100644 index 000000000..adf88f506 --- /dev/null +++ b/third_party/libcxx/__iterator/permutable.h @@ -0,0 +1,35 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ITERATOR_PERMUTABLE_H +#define _LIBCPP___ITERATOR_PERMUTABLE_H + +#include <__config> +#include <__iterator/concepts.h> +#include <__iterator/iter_swap.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +template +concept permutable = + forward_iterator<_Iterator> && + indirectly_movable_storable<_Iterator, _Iterator> && + indirectly_swappable<_Iterator, _Iterator>; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ITERATOR_PERMUTABLE_H diff --git a/third_party/libcxx/__iterator/prev.h b/third_party/libcxx/__iterator/prev.h new file mode 100644 index 000000000..d3f1071d5 --- /dev/null +++ b/third_party/libcxx/__iterator/prev.h @@ -0,0 +1,77 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ITERATOR_PREV_H +#define _LIBCPP___ITERATOR_PREV_H + +#include <__assert> +#include <__config> +#include <__iterator/advance.h> +#include <__iterator/concepts.h> +#include <__iterator/incrementable_traits.h> +#include <__iterator/iterator_traits.h> +#include <__type_traits/enable_if.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 + typename enable_if<__has_input_iterator_category<_InputIter>::value, _InputIter>::type + prev(_InputIter __x, typename iterator_traits<_InputIter>::difference_type __n = 1) { + _LIBCPP_ASSERT(__n <= 0 || __has_bidirectional_iterator_category<_InputIter>::value, + "Attempt to prev(it, n) with a positive n on a non-bidirectional iterator"); + _VSTD::advance(__x, -__n); + return __x; +} + +#if _LIBCPP_STD_VER >= 20 + +// [range.iter.op.prev] + +namespace ranges { +namespace __prev { + +struct __fn { + template + _LIBCPP_HIDE_FROM_ABI + constexpr _Ip operator()(_Ip __x) const { + --__x; + return __x; + } + + template + _LIBCPP_HIDE_FROM_ABI + constexpr _Ip operator()(_Ip __x, iter_difference_t<_Ip> __n) const { + ranges::advance(__x, -__n); + return __x; + } + + template + _LIBCPP_HIDE_FROM_ABI constexpr _Ip operator()(_Ip __x, iter_difference_t<_Ip> __n, _Ip __bound_iter) const { + ranges::advance(__x, -__n, __bound_iter); + return __x; + } +}; + +} // namespace __prev + +inline namespace __cpo { + inline constexpr auto prev = __prev::__fn{}; +} // namespace __cpo +} // namespace ranges + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ITERATOR_PREV_H diff --git a/third_party/libcxx/__iterator/projected.h b/third_party/libcxx/__iterator/projected.h new file mode 100644 index 000000000..e74e56d6f --- /dev/null +++ b/third_party/libcxx/__iterator/projected.h @@ -0,0 +1,41 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ITERATOR_PROJECTED_H +#define _LIBCPP___ITERATOR_PROJECTED_H + +#include <__config> +#include <__iterator/concepts.h> +#include <__iterator/incrementable_traits.h> +#include <__type_traits/remove_cvref.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +template _Proj> +struct projected { + using value_type = remove_cvref_t>; + indirect_result_t<_Proj&, _It> operator*() const; // not defined +}; + +template +struct incrementable_traits> { + using difference_type = iter_difference_t<_It>; +}; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ITERATOR_PROJECTED_H diff --git a/third_party/libcxx/__iterator/readable_traits.h b/third_party/libcxx/__iterator/readable_traits.h new file mode 100644 index 000000000..fe4f0cd13 --- /dev/null +++ b/third_party/libcxx/__iterator/readable_traits.h @@ -0,0 +1,92 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ITERATOR_READABLE_TRAITS_H +#define _LIBCPP___ITERATOR_READABLE_TRAITS_H + +#include <__concepts/same_as.h> +#include <__config> +#include <__type_traits/conditional.h> +#include <__type_traits/is_array.h> +#include <__type_traits/is_object.h> +#include <__type_traits/is_primary_template.h> +#include <__type_traits/remove_cv.h> +#include <__type_traits/remove_cvref.h> +#include <__type_traits/remove_extent.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 20 + +// [readable.traits] +template struct __cond_value_type {}; + +template +requires is_object_v<_Tp> +struct __cond_value_type<_Tp> { using value_type = remove_cv_t<_Tp>; }; + +template +concept __has_member_value_type = requires { typename _Tp::value_type; }; + +template +concept __has_member_element_type = requires { typename _Tp::element_type; }; + +template struct indirectly_readable_traits {}; + +template +requires is_array_v<_Ip> +struct indirectly_readable_traits<_Ip> { + using value_type = remove_cv_t>; +}; + +template +struct indirectly_readable_traits : indirectly_readable_traits<_Ip> {}; + +template +struct indirectly_readable_traits<_Tp*> : __cond_value_type<_Tp> {}; + +template<__has_member_value_type _Tp> +struct indirectly_readable_traits<_Tp> + : __cond_value_type {}; + +template<__has_member_element_type _Tp> +struct indirectly_readable_traits<_Tp> + : __cond_value_type {}; + +template<__has_member_value_type _Tp> + requires __has_member_element_type<_Tp> +struct indirectly_readable_traits<_Tp> {}; + +template<__has_member_value_type _Tp> + requires __has_member_element_type<_Tp> && + same_as, + remove_cv_t> +struct indirectly_readable_traits<_Tp> + : __cond_value_type {}; + +template +struct iterator_traits; + +// Let `RI` be `remove_cvref_t`. The type `iter_value_t` denotes +// `indirectly_readable_traits::value_type` if `iterator_traits` names a specialization +// generated from the primary template, and `iterator_traits::value_type` otherwise. +template +using iter_value_t = typename conditional_t<__is_primary_template > >::value, + indirectly_readable_traits >, + iterator_traits > >::value_type; + +#endif // _LIBCPP_STD_VER >= 20 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ITERATOR_READABLE_TRAITS_H diff --git a/third_party/libcxx/__iterator/reverse_access.h b/third_party/libcxx/__iterator/reverse_access.h new file mode 100644 index 000000000..b8c5a071c --- /dev/null +++ b/third_party/libcxx/__iterator/reverse_access.h @@ -0,0 +1,100 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ITERATOR_REVERSE_ACCESS_H +#define _LIBCPP___ITERATOR_REVERSE_ACCESS_H + +#include <__config> +#include <__iterator/reverse_iterator.h> +#include +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER >= 14 + +template +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 +reverse_iterator<_Tp*> rbegin(_Tp (&__array)[_Np]) +{ + return reverse_iterator<_Tp*>(__array + _Np); +} + +template +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 +reverse_iterator<_Tp*> rend(_Tp (&__array)[_Np]) +{ + return reverse_iterator<_Tp*>(__array); +} + +template +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 +reverse_iterator rbegin(initializer_list<_Ep> __il) +{ + return reverse_iterator(__il.end()); +} + +template +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 +reverse_iterator rend(initializer_list<_Ep> __il) +{ + return reverse_iterator(__il.begin()); +} + +template +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 +auto rbegin(_Cp& __c) -> decltype(__c.rbegin()) +{ + return __c.rbegin(); +} + +template +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 +auto rbegin(const _Cp& __c) -> decltype(__c.rbegin()) +{ + return __c.rbegin(); +} + +template +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 +auto rend(_Cp& __c) -> decltype(__c.rend()) +{ + return __c.rend(); +} + +template +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 +auto rend(const _Cp& __c) -> decltype(__c.rend()) +{ + return __c.rend(); +} + +template +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 +auto crbegin(const _Cp& __c) -> decltype(_VSTD::rbegin(__c)) +{ + return _VSTD::rbegin(__c); +} + +template +_LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 +auto crend(const _Cp& __c) -> decltype(_VSTD::rend(__c)) +{ + return _VSTD::rend(__c); +} + +#endif // _LIBCPP_STD_VER >= 14 + +_LIBCPP_END_NAMESPACE_STD + +#endif // _LIBCPP___ITERATOR_REVERSE_ACCESS_H diff --git a/third_party/libcxx/__iterator/reverse_iterator.h b/third_party/libcxx/__iterator/reverse_iterator.h new file mode 100644 index 000000000..beb10f7f4 --- /dev/null +++ b/third_party/libcxx/__iterator/reverse_iterator.h @@ -0,0 +1,533 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___ITERATOR_REVERSE_ITERATOR_H +#define _LIBCPP___ITERATOR_REVERSE_ITERATOR_H + +#include <__algorithm/unwrap_iter.h> +#include <__compare/compare_three_way_result.h> +#include <__compare/three_way_comparable.h> +#include <__concepts/convertible_to.h> +#include <__config> +#include <__iterator/advance.h> +#include <__iterator/concepts.h> +#include <__iterator/incrementable_traits.h> +#include <__iterator/iter_move.h> +#include <__iterator/iter_swap.h> +#include <__iterator/iterator.h> +#include <__iterator/iterator_traits.h> +#include <__iterator/next.h> +#include <__iterator/prev.h> +#include <__iterator/readable_traits.h> +#include <__iterator/segmented_iterator.h> +#include <__memory/addressof.h> +#include <__ranges/access.h> +#include <__ranges/concepts.h> +#include <__ranges/subrange.h> +#include <__type_traits/conditional.h> +#include <__type_traits/enable_if.h> +#include <__type_traits/is_assignable.h> +#include <__type_traits/is_convertible.h> +#include <__type_traits/is_nothrow_copy_constructible.h> +#include <__type_traits/is_pointer.h> +#include <__type_traits/is_same.h> +#include <__utility/declval.h> +#include <__utility/move.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_BEGIN_NAMESPACE_STD + +_LIBCPP_SUPPRESS_DEPRECATED_PUSH +template +class _LIBCPP_TEMPLATE_VIS reverse_iterator +#if _LIBCPP_STD_VER <= 14 || !defined(_LIBCPP_ABI_NO_ITERATOR_BASES) + : public iterator::iterator_category, + typename iterator_traits<_Iter>::value_type, + typename iterator_traits<_Iter>::difference_type, + typename iterator_traits<_Iter>::pointer, + typename iterator_traits<_Iter>::reference> +#endif +{ +_LIBCPP_SUPPRESS_DEPRECATED_POP +private: +#ifndef _LIBCPP_ABI_NO_ITERATOR_BASES + _Iter __t_; // no longer used as of LWG #2360, not removed due to ABI break +#endif + +#if _LIBCPP_STD_VER >= 20 + static_assert(__has_bidirectional_iterator_category<_Iter>::value || bidirectional_iterator<_Iter>, + "reverse_iterator requires It to be a bidirectional iterator."); +#endif // _LIBCPP_STD_VER >= 20 + +protected: + _Iter current; +public: + using iterator_type = _Iter; + + using iterator_category = _If<__has_random_access_iterator_category<_Iter>::value, + random_access_iterator_tag, + typename iterator_traits<_Iter>::iterator_category>; + using pointer = typename iterator_traits<_Iter>::pointer; +#if _LIBCPP_STD_VER >= 20 + using iterator_concept = _If, random_access_iterator_tag, bidirectional_iterator_tag>; + using value_type = iter_value_t<_Iter>; + using difference_type = iter_difference_t<_Iter>; + using reference = iter_reference_t<_Iter>; +#else + using value_type = typename iterator_traits<_Iter>::value_type; + using difference_type = typename iterator_traits<_Iter>::difference_type; + using reference = typename iterator_traits<_Iter>::reference; +#endif + +#ifndef _LIBCPP_ABI_NO_ITERATOR_BASES + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 + reverse_iterator() : __t_(), current() {} + + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 + explicit reverse_iterator(_Iter __x) : __t_(__x), current(__x) {} + + template ::value && is_convertible<_Up const&, _Iter>::value + > > + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 + reverse_iterator(const reverse_iterator<_Up>& __u) + : __t_(__u.base()), current(__u.base()) + { } + + template ::value && + is_convertible<_Up const&, _Iter>::value && + is_assignable<_Iter&, _Up const&>::value + > > + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 + reverse_iterator& operator=(const reverse_iterator<_Up>& __u) { + __t_ = current = __u.base(); + return *this; + } +#else + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 + reverse_iterator() : current() {} + + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 + explicit reverse_iterator(_Iter __x) : current(__x) {} + + template ::value && is_convertible<_Up const&, _Iter>::value + > > + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 + reverse_iterator(const reverse_iterator<_Up>& __u) + : current(__u.base()) + { } + + template ::value && + is_convertible<_Up const&, _Iter>::value && + is_assignable<_Iter&, _Up const&>::value + > > + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 + reverse_iterator& operator=(const reverse_iterator<_Up>& __u) { + current = __u.base(); + return *this; + } +#endif + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 + _Iter base() const {return current;} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 + reference operator*() const {_Iter __tmp = current; return *--__tmp;} + +#if _LIBCPP_STD_VER >= 20 + _LIBCPP_INLINE_VISIBILITY + constexpr pointer operator->() const + requires is_pointer_v<_Iter> || requires(const _Iter __i) { __i.operator->(); } + { + if constexpr (is_pointer_v<_Iter>) { + return std::prev(current); + } else { + return std::prev(current).operator->(); + } + } +#else + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 + pointer operator->() const { + return std::addressof(operator*()); + } +#endif // _LIBCPP_STD_VER >= 20 + + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 + reverse_iterator& operator++() {--current; return *this;} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 + reverse_iterator operator++(int) {reverse_iterator __tmp(*this); --current; return __tmp;} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 + reverse_iterator& operator--() {++current; return *this;} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 + reverse_iterator operator--(int) {reverse_iterator __tmp(*this); ++current; return __tmp;} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 + reverse_iterator operator+(difference_type __n) const {return reverse_iterator(current - __n);} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 + reverse_iterator& operator+=(difference_type __n) {current -= __n; return *this;} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 + reverse_iterator operator-(difference_type __n) const {return reverse_iterator(current + __n);} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 + reverse_iterator& operator-=(difference_type __n) {current += __n; return *this;} + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 + reference operator[](difference_type __n) const {return *(*this + __n);} + +#if _LIBCPP_STD_VER >= 20 + _LIBCPP_HIDE_FROM_ABI friend constexpr + iter_rvalue_reference_t<_Iter> iter_move(const reverse_iterator& __i) + noexcept(is_nothrow_copy_constructible_v<_Iter> && + noexcept(ranges::iter_move(--std::declval<_Iter&>()))) { + auto __tmp = __i.base(); + return ranges::iter_move(--__tmp); + } + + template _Iter2> + _LIBCPP_HIDE_FROM_ABI friend constexpr + void iter_swap(const reverse_iterator& __x, const reverse_iterator<_Iter2>& __y) + noexcept(is_nothrow_copy_constructible_v<_Iter> && + is_nothrow_copy_constructible_v<_Iter2> && + noexcept(ranges::iter_swap(--std::declval<_Iter&>(), --std::declval<_Iter2&>()))) { + auto __xtmp = __x.base(); + auto __ytmp = __y.base(); + ranges::iter_swap(--__xtmp, --__ytmp); + } +#endif // _LIBCPP_STD_VER >= 20 +}; + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 +bool +operator==(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y) +#if _LIBCPP_STD_VER >= 20 + requires requires { + { __x.base() == __y.base() } -> convertible_to; + } +#endif // _LIBCPP_STD_VER >= 20 +{ + return __x.base() == __y.base(); +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 +bool +operator<(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y) +#if _LIBCPP_STD_VER >= 20 + requires requires { + { __x.base() > __y.base() } -> convertible_to; + } +#endif // _LIBCPP_STD_VER >= 20 +{ + return __x.base() > __y.base(); +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 +bool +operator!=(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y) +#if _LIBCPP_STD_VER >= 20 + requires requires { + { __x.base() != __y.base() } -> convertible_to; + } +#endif // _LIBCPP_STD_VER >= 20 +{ + return __x.base() != __y.base(); +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 +bool +operator>(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y) +#if _LIBCPP_STD_VER >= 20 + requires requires { + { __x.base() < __y.base() } -> convertible_to; + } +#endif // _LIBCPP_STD_VER >= 20 +{ + return __x.base() < __y.base(); +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 +bool +operator>=(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y) +#if _LIBCPP_STD_VER >= 20 + requires requires { + { __x.base() <= __y.base() } -> convertible_to; + } +#endif // _LIBCPP_STD_VER >= 20 +{ + return __x.base() <= __y.base(); +} + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 +bool +operator<=(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y) +#if _LIBCPP_STD_VER >= 20 + requires requires { + { __x.base() >= __y.base() } -> convertible_to; + } +#endif // _LIBCPP_STD_VER >= 20 +{ + return __x.base() >= __y.base(); +} + +#if _LIBCPP_STD_VER >= 20 +template _Iter2> +_LIBCPP_HIDE_FROM_ABI constexpr +compare_three_way_result_t<_Iter1, _Iter2> +operator<=>(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y) +{ + return __y.base() <=> __x.base(); +} +#endif // _LIBCPP_STD_VER >= 20 + +#ifndef _LIBCPP_CXX03_LANG +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 +auto +operator-(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y) +-> decltype(__y.base() - __x.base()) +{ + return __y.base() - __x.base(); +} +#else +template +inline _LIBCPP_INLINE_VISIBILITY +typename reverse_iterator<_Iter1>::difference_type +operator-(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y) +{ + return __y.base() - __x.base(); +} +#endif + +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 +reverse_iterator<_Iter> +operator+(typename reverse_iterator<_Iter>::difference_type __n, const reverse_iterator<_Iter>& __x) +{ + return reverse_iterator<_Iter>(__x.base() - __n); +} + +#if _LIBCPP_STD_VER >= 20 +template + requires (!sized_sentinel_for<_Iter1, _Iter2>) +inline constexpr bool disable_sized_sentinel_for, reverse_iterator<_Iter2>> = true; +#endif // _LIBCPP_STD_VER >= 20 + +#if _LIBCPP_STD_VER >= 14 +template +inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX17 +reverse_iterator<_Iter> make_reverse_iterator(_Iter __i) +{ + return reverse_iterator<_Iter>(__i); +} +#endif + +#if _LIBCPP_STD_VER <= 17 +template +using __unconstrained_reverse_iterator = reverse_iterator<_Iter>; +#else + +// __unconstrained_reverse_iterator allows us to use reverse iterators in the implementation of algorithms by working +// around a language issue in C++20. +// In C++20, when a reverse iterator wraps certain C++20-hostile iterators, calling comparison operators on it will +// result in a compilation error. However, calling comparison operators on the pristine hostile iterator is not +// an error. Thus, we cannot use reverse_iterators in the implementation of an algorithm that accepts a +// C++20-hostile iterator. This class is an internal workaround -- it is a copy of reverse_iterator with +// tweaks to make it support hostile iterators. +// +// A C++20-hostile iterator is one that defines a comparison operator where one of the arguments is an exact match +// and the other requires an implicit conversion, for example: +// friend bool operator==(const BaseIter&, const DerivedIter&); +// +// C++20 rules for rewriting equality operators create another overload of this function with parameters reversed: +// friend bool operator==(const DerivedIter&, const BaseIter&); +// +// This creates an ambiguity in overload resolution. +// +// Clang treats this ambiguity differently in different contexts. When operator== is actually called in the function +// body, the code is accepted with a warning. When a concept requires operator== to be a valid expression, however, +// it evaluates to false. Thus, the implementation of reverse_iterator::operator== can actually call operator== on its +// base iterators, but the constraints on reverse_iterator::operator== prevent it from being considered during overload +// resolution. This class simply removes the problematic constraints from comparison functions. +template +class __unconstrained_reverse_iterator { + _Iter __iter_; + +public: + static_assert(__has_bidirectional_iterator_category<_Iter>::value || bidirectional_iterator<_Iter>); + + using iterator_type = _Iter; + using iterator_category = + _If<__has_random_access_iterator_category<_Iter>::value, random_access_iterator_tag, __iterator_category_type<_Iter>>; + using pointer = __iterator_pointer_type<_Iter>; + using value_type = iter_value_t<_Iter>; + using difference_type = iter_difference_t<_Iter>; + using reference = iter_reference_t<_Iter>; + + _LIBCPP_HIDE_FROM_ABI constexpr __unconstrained_reverse_iterator() = default; + _LIBCPP_HIDE_FROM_ABI constexpr __unconstrained_reverse_iterator(const __unconstrained_reverse_iterator&) = default; + _LIBCPP_HIDE_FROM_ABI constexpr explicit __unconstrained_reverse_iterator(_Iter __iter) : __iter_(__iter) {} + + _LIBCPP_HIDE_FROM_ABI constexpr _Iter base() const { return __iter_; } + _LIBCPP_HIDE_FROM_ABI constexpr reference operator*() const { + auto __tmp = __iter_; + return *--__tmp; + } + + _LIBCPP_HIDE_FROM_ABI constexpr pointer operator->() const { + if constexpr (is_pointer_v<_Iter>) { + return std::prev(__iter_); + } else { + return std::prev(__iter_).operator->(); + } + } + + _LIBCPP_HIDE_FROM_ABI friend constexpr + iter_rvalue_reference_t<_Iter> iter_move(const __unconstrained_reverse_iterator& __i) + noexcept(is_nothrow_copy_constructible_v<_Iter> && + noexcept(ranges::iter_move(--std::declval<_Iter&>()))) { + auto __tmp = __i.base(); + return ranges::iter_move(--__tmp); + } + + _LIBCPP_HIDE_FROM_ABI constexpr __unconstrained_reverse_iterator& operator++() { + --__iter_; + return *this; + } + + _LIBCPP_HIDE_FROM_ABI constexpr __unconstrained_reverse_iterator operator++(int) { + auto __tmp = *this; + --__iter_; + return __tmp; + } + + _LIBCPP_HIDE_FROM_ABI constexpr __unconstrained_reverse_iterator& operator--() { + ++__iter_; + return *this; + } + + _LIBCPP_HIDE_FROM_ABI constexpr __unconstrained_reverse_iterator operator--(int) { + auto __tmp = *this; + ++__iter_; + return __tmp; + } + + _LIBCPP_HIDE_FROM_ABI constexpr __unconstrained_reverse_iterator& operator+=(difference_type __n) { + __iter_ -= __n; + return *this; + } + + _LIBCPP_HIDE_FROM_ABI constexpr __unconstrained_reverse_iterator& operator-=(difference_type __n) { + __iter_ += __n; + return *this; + } + + _LIBCPP_HIDE_FROM_ABI constexpr __unconstrained_reverse_iterator operator+(difference_type __n) const { + return __unconstrained_reverse_iterator(__iter_ - __n); + } + + _LIBCPP_HIDE_FROM_ABI constexpr __unconstrained_reverse_iterator operator-(difference_type __n) const { + return __unconstrained_reverse_iterator(__iter_ + __n); + } + + _LIBCPP_HIDE_FROM_ABI constexpr difference_type operator-(const __unconstrained_reverse_iterator& __other) const { + return __other.__iter_ - __iter_; + } + + _LIBCPP_HIDE_FROM_ABI constexpr auto operator[](difference_type __n) const { return *(*this + __n); } + + // Deliberately unconstrained unlike the comparison functions in `reverse_iterator` -- see the class comment for the + // rationale. + _LIBCPP_HIDE_FROM_ABI friend constexpr bool + operator==(const __unconstrained_reverse_iterator& __lhs, const __unconstrained_reverse_iterator& __rhs) { + return __lhs.base() == __rhs.base(); + } + + _LIBCPP_HIDE_FROM_ABI friend constexpr bool + operator!=(const __unconstrained_reverse_iterator& __lhs, const __unconstrained_reverse_iterator& __rhs) { + return __lhs.base() != __rhs.base(); + } + + _LIBCPP_HIDE_FROM_ABI friend constexpr bool + operator<(const __unconstrained_reverse_iterator& __lhs, const __unconstrained_reverse_iterator& __rhs) { + return __lhs.base() > __rhs.base(); + } + + _LIBCPP_HIDE_FROM_ABI friend constexpr bool + operator>(const __unconstrained_reverse_iterator& __lhs, const __unconstrained_reverse_iterator& __rhs) { + return __lhs.base() < __rhs.base(); + } + + _LIBCPP_HIDE_FROM_ABI friend constexpr bool + operator<=(const __unconstrained_reverse_iterator& __lhs, const __unconstrained_reverse_iterator& __rhs) { + return __lhs.base() >= __rhs.base(); + } + + _LIBCPP_HIDE_FROM_ABI friend constexpr bool + operator>=(const __unconstrained_reverse_iterator& __lhs, const __unconstrained_reverse_iterator& __rhs) { + return __lhs.base() <= __rhs.base(); + } +}; + +#endif // _LIBCPP_STD_VER <= 17 + +template